Fundamentally, it should work like this:
record(waveform, “Source”)
{
field(FTVL, “DOUBLE")
field(NELM, "4096”)
}
record(waveform, “Destination”)
{
field(FTVL, “DOUBLE")
field(NELM, "4096”)
field(INP, “Source”)
field(SCAN, “1 second”)
}
Assume that the “Source” waveform somehow gets populated with data.
The “Destination” waveform will read the current value from the “Source” every second.
If you place both records in the same IOC, the data flows within the IOC.
If you place both records in separate IOCs, the data flows over the network without you having to do anything special as long as the two IOCs are on the same network.
… but that network traffic will use Channel Access, even if you have added PVAccess to the IOC.
Mind you, it should be just fine for the IOCs to communicate amongst each other via Channel Access, after all that’s been perfect for the last 30 years of EPICS.
But say you really want to force the IOC-to-IOC network traffic to use PVAccess.
Ideally, there would be a global IOC flag like
setIocNetworkMode(“PVA”)
At this time, that doesn’t exist.
So you’d change
field(INP, “Source”)
into something like
field(INP, {pva:{pv:”Source"}})
and now that one INP link will use PVA.
That might be necessary if you need for that one link to really use PVA.
It’s not practical for all INP and OUT links to use that syntax, and you also lose the nice feature that local links automatically change into network links as you move records between IOCs.
----
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