EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026 Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
<== Date ==> <== Thread ==>

Subject: Re: How to configure waveform record to read remote PV via PVAccess in EPICS
From: Varuna Crishan Meddage via Tech-talk <tech-talk at aps.anl.gov>
To: Michael Davidsaver <mdavidsaver at gmail.com>, "kasemirk at ornl.gov" <kasemirk at ornl.gov>
Cc: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Wed, 25 Mar 2026 20:54:08 +0000
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:
  1. 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.


  1. 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


pvxsIoc.dbd



  1. 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



Replies:
Re: How to configure waveform record to read remote PV via PVAccess in EPICS Michael Davidsaver via Tech-talk
References:
How to configure waveform record to read remote PV via PVAccess in EPICS Varuna Crishan Meddage via Tech-talk
Re: How to configure waveform record to read remote PV via PVAccess in EPICS Michael Davidsaver via Tech-talk

Navigate by Date:
Prev: Re: How to configure waveform record to read remote PV via PVAccess in EPICS Varuna Crishan Meddage via Tech-talk
Next: Re: How to configure waveform record to read remote PV via PVAccess in EPICS Sukhanov, Andrei via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
Navigate by Thread:
Prev: Re: How to configure waveform record to read remote PV via PVAccess in EPICS Varuna Crishan Meddage via Tech-talk
Next: Re: How to configure waveform record to read remote PV via PVAccess in EPICS Michael Davidsaver via Tech-talk
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  2025  <2026
ANJ, 25 Mar 2026 · Home · News · About · Talk · Base · Modules · Extensions ·
· Distributions · Download · Documents · Links · Licensing ·