I’m sorry to be the bearer of disappointing news, but yes, life is full of it.
At this time, there is no easy way to switch all inter-IOC traffic from CA to PVA.
is, in my opinion, a bad idea, because you then need to patch all your INP and OUT links that refer to remote records to use {pv:{pva:….}}, plus you lose the automatic switch between local and network links, which I consider a key feature of EPICS.
Good morning Kay,
This is disappointing, as we are attempting to build a pva-only control system
(we have the luxury of being effectively a green field site). In fact we use:
export EPICS_IOC_IGNORE_SERVERS=rsrv
Do I need to turn it back on for Varuna's IOC to work?
Cheers,
Pierrick
On 3/25/26 14:25, Kasemir, Kay via Tech-talk wrote:
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
-- Pierrick Hanlet Fermi National Accelerator Accelerator Front End Controls +1-630-840-5555 -- lab +1-312-687-4980 -- mobile "Whether you think you can or think you can't, you're right" -- Henry Ford