|
Hi Varuna,
Here is an example how to create and modify waveform PV sourced from remote PV using python p4p:
import time
import numpy as np
from p4p.server.thread import SharedPV
from p4p.server import Server
from p4p.nt import NTScalar
from p4p.client.thread import Context
ctxt = Context('pva')
# create output PVs, if needed
pv = SharedPV(nt=NTScalar('ah'), initial=[0])# int16 array
# callback function to double the input array
def callback(V):
ar = np.array(V)
pv.post(np.array(V)*2)
callback = ctxt.monitor('epicsDev0:c01Waveform', callback)
with Server(providers=[{'my:array': pv}]):
while True:
# do something else or sleep.
time.sleep(1)
/Andrey
From: Tech-talk <tech-talk-bounces at aps.anl.gov> on behalf of Varuna Crishan Meddage via Tech-talk <tech-talk at aps.anl.gov>
Sent: Wednesday, March 25, 2026 3:13 PM
To: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: How to configure waveform record to read remote PV via PVAccess in EPICS
I am trying to create a waveform record in my IOC that takes its values from a remote PV hosted on another serverusing EPICS PVAccess (PVA). Here’s what I want to achieve: Define a waveform record locally (e. g. , LOCAL: WF) Subscribe to a remote
ZjQcmQRYFpfptBannerStart
This Message Is From an External Sender
This message came from outside your organization.
ZjQcmQRYFpfptBannerEnd
I am trying to create a waveform record in my IOC that takes its values from a remote PV hosted on another serverusing EPICS PVAccess (PVA).
Here’s what I want to achieve:
-
Define a waveform record locally (e.g.,
LOCAL:WF) -
Subscribe to a remote PV (e.g.,
REMOTE:ARRAY:PV) on a server with a known IP address and port -
Automatically update the waveform at a set scan rate
I am unsure about the exact configuration. Specifically, I would like guidance on:
-
Waveform record DB definition – how should the
DTYP and INP fields be set to read from the remote PV? -
Specifying the server IP and port in the
INP field. -
Specific DBD files and libraries that need to be included to achieve this goal.
-
Any pitfalls, such as array size (
NELM) matching or data type requirements.
For example, would a record like this work?
=================================================
record(waveform, "LOCAL:WF") {
field(DTYP, "pvaClientWaveform")
field(SCAN, "1 second")
field(NELM, "4096")
}
===============================================
I would greatly appreciate any example .db record, IOC DBD configuration, or startup instructions for properly using a remote PV with waveform records via PVA.
My base EPICS version is : epics-base-R7.0.9-328
Thanks
Varuna Meddage
|