QSRV
QSRV is a network server using the PVAccess protocol which runs inside an EPICS IOC process and allows clients to make requests to access the Process Variables (PVs) within.
Documentation of QSRV Configuration including Group PV definitions , Access Security and PVAccess Links configuration.
Building
To build the latest from version control
git clone --recursive --branch core/master https:
cd epics-base
make
Quick Start
The pva2pva module builds an executable 'softIocPVA' which function like the 'softIoc' executable built by EPICS Base, with QSRV included as well.
cd modules/pva2pva
cat <<EOF > p2pexample.db
record(calc, "p2p:example:counter") {
field(INPA, "p2p:example:counter")
field(CALC, "A+1")
field(SCAN, "1 second")
}
EOF
./bin/linux-x86_64/softIocPVA -d p2pexample.db
Then in another shell run:
cd modules/pvAccess
./bin/linux-x86_64/pvget p2p:example:counter
Adding QSRV to your IOC
QSRV is added to an IOC just like any other EPICS support module. In the Makefile which produces an IOC executable (eg. "myiocname") add:
PROD_HOST += myiocname
# include QSRV
myiocname_DBD += base.dbd
myiocname_DBD += PVAServerRegister.dbd
myiocname_DBD += qsrv.dbd
myiocname_LIBS += qsrv
myiocname_LIBS += $(EPICS_BASE_PVA_CORE_LIBS)
myiocname_LIBS += $(EPICS_BASE_IOC_LIBS)
Now run your IOC and QSRV starts automatically.
Status monitoring
In a running IOC w/ QSRV, run the "pvasr" in the IOC shell and verify that "QSRV" is among the "PROVIDER_NAMES".
epics> pvasr
VERSION : pvAccess Server v6.0.0-SNAPSHOT
PROVIDER_NAMES : QSRV,
BEACON_ADDR_LIST :
AUTO_BEACON_ADDR_LIST : 1
BEACON_PERIOD : 15
BROADCAST_PORT : 5076
SERVER_PORT : 5075
RCV_BUFFER_SIZE : 16384
IGNORE_ADDR_LIST:
INTF_ADDR_LIST : 0.0.0.0