|
Hi,
I created the following PV
===========================================
record(waveform, "PIP2:CTRL_MPS:acq2106_current")
{
field(INP, {pva:{pv:"acq2106_347:1:AI:WF:17", "proc":"CPP"}})
field(FTVL, "DOUBLE")
field(NELM, "4096")
field(SCAN, "1 second")
}
===========================================
But it complains that input PV is disconnected.
=============================================
iocdev1$ pvxget PIP2:CTRL_MPS:acq2106_current
PIP2:CTRL_MPS:acq2106_current
value double[] = {0}[]
alarm.severity int32_t = 3
alarm.status int32_t = 3
alarm.message string = "INP Disconn"
timeStamp.secondsPastEpoch int64_t = 1774471904
timeStamp.nanoseconds int32_t = 98899494
timeStamp.userTag int32_t = 0
display.limitLow double = 0
display.limitHigh double = 0
display.description string = ""
display.units string = ""
display.precision int32_t = 0
display.form.index int32_t = 0
display.form.choices string[] = {7}["Default", "String", "Binary", "Decimal", "Hex", "Exponential", "Engineering"]
control.limitLow double = 0
control.limitHigh double = 0
====================================================
But input PV is working fine
==========================================================
iocdev1$ pvxget acq2106_347:1:AI:WF:17
acq2106_347:1:AI:WF:17
value int16_t[] = {4090}[-27, -22, -18, -12, -8, -2, 5, 8, 13, 19, 25, 30, 35, 40, 45, 50, 55, 60, 63, 68, 73, 76, 79, 82, 85, 91, 97, 101, 104, 107, 108, 110, 115, 118, 118, 120, 124, 126, 129, 132, 133, 132, 133, 137, 137, 140, 139, 138, 139, 141, 138,
139, 139, 139, 136, 137, 138, 137, 136, 133, 132, 128, 127, 124, 120, 120, 118, 115, 113, 111, 107, 103, 101, 97, 92, 89, 86, 82, 78, 73, 69, 63, 59, 57, 52, 47, 43, 36, 33, 29, 24, 17, 14, 8, 1, -3, -6, -13, -18, -24, -29, -35, -40, -45, -53, -56, -61, -67,
-72, -77, -82, -87, -91, -95, -101, -105, -110, -116, -120, -124, -128, -132, -137, -140, -144, -148, -151, -156, -157, -159, -164, -167, -169, -172, -173, -177, -179, -184, -186, -186, -187, -190, -192, -193, -195, -195, -197, -199, -196, -196, -197, -197,
-196, -196, -195, -193, -192, -193, -190, -188, -189, -186, -185, -182, -179, -177, -175, -174, -169, -167, -163, -161, -155, -151, -150, -146, -145, -141, -135, -131, -128, -122, -117, -113, -108, -103, -99, -94, -90, -85, -80, -74, -69, -64, -58, -52, -48,
-43, -36, -32, -29, -23, -15, -10, -6, 0, 4, 9, 13, 19, 24, 31, 34, 39, 44, 48, 53, 59, 65, 69, 72, 76, 82, 84, 88, 92, 95, 98, 101, 107, 109, 112, 114, 115, 118, 122, 124, 126, 128, 130, 132, 135, 136, 136, 136, 137, 136, 137, 140, 141, 141, 142, 141, 139,
139, 137, 135, 135, 134, 133, 132, 131, 128, 123, 123, 122, 119, 117, 113, 110, 106, 104, 102, 98, 94, 91, 86, 83, 78, 73, 69, 65, 60, 57, 51, 48, 42, 38, 33, 26, 24, 19, 13, 7, 2, -2, -8, -13, -18, -24, -30, -35, -39, -44, -49, -54, -62, -65, -69, -76, -81,
-86, -92, -96, -99, -104, -110, -114, -119, -125, -128, -132, -135, -142, -144, -148, -152, -154, -159, -164, -164, -166, -171, -173, -176, -178, -180, -181, -182, -187, -188, -190, -193, -193, -194, -194, -195, -196, -197, -196, -196, -197, -196, -194, -193,
-195, -194, -192, -191, -191, -188, -186, -185, -181, -178, -176, -176, -173, -170, -168, -164, -160, -159, -152, -149, -145, -141, -136, -133, -131, -128, -122, -120, -114, -107, -104, -100, -94, -90, -84, -80, -73, -69, -64, -58, -54, -49, -41, -37, -31,
-26, -22, -18, -12, -7, -1, 4, 9, 14, 19, 26, 30, 34, 39, 42, 48, 55, 59, 65, 68, 72, 76, 78, 85, 89, 91, 95, 99, 101, 105, 110, 113, 116, 120, 121, 122, ..............
================================================================
From: Michael Davidsaver <mdavidsaver at gmail.com>
Sent: Wednesday, March 25, 2026 2:28 PM
To: Varuna Crishan Meddage <vmeddage at fnal.gov>
Cc: tech-talk at aps.anl.gov <tech-talk at aps.anl.gov>
Subject: Re: How to configure waveform record to read remote PV via PVAccess in EPICS
[EXTERNAL] – This message is from an external sender
On 3/25/26 12:13 PM, Varuna Crishan Meddage via Tech-talk wrote:
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
Take a look at PVA links:
https ://epics-base.github.io/pvxs/pvalink.html
https ://github.com/epics-base/pvxs/blob/6f7942e4af38a0b84630deb837f2b7bccf53a62a/test/testpvalink.db#L64-L68
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?
For input type records "INP". You will also want the "CP" or "CPP" modifier to process on subscription update.
-
Specifying the server IP and port in the
INP field.
The PV name lookup process is configured the same as for any PVA client. eg. using the $EPICS_PVA_ADDR_LIST
-
Specific DBD files and libraries that need to be included to achieve this goal.
pvxsIoc.dbd
-
-
Any pitfalls, such as array size (
NELM) matching or data type requirements.
As usual, NELM (capacity) needs to be large enough.
For example, would a record like this work?
=================================================
record(waveform, "LOCAL:WF") {
field(DTYP, "pvaClientWaveform")
field(SCAN, "1 second")
field(NELM, "4096")
}
Something like:
record(aai, "testToFromString:str2") {
field(FTVL, "DOUBLE")
field(NELM, "4096")
field(INP , {pva:{pv:"PVA:REMOTE:ARRAY:PV", "proc":"CPP"}})
}
===============================================
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
|