EPICS V7 Access
EPICS-facing protocol integration using softIocPVA (pythonSoftIOC) to serve PyRogue Variables as real EPICS records. The V7 integration supports both CA and PVA client access.
Use these pages for conceptual behavior and integration patterns. Generated API pages are available in the Python API reference:
How The EPICS V7 Integration Is Structured
The EPICS V7 integration has two primary components:
EpicsPvServerscans the running PyRogue tree, selects Variables to expose, and creates the EPICS record namespace using softIocPVA.EpicsPvHolderrepresents one served record and handles value updates, type mapping, and EPICS put behavior for its bound Variable or Command.
In practice, EpicsPvServer owns many EpicsPvHolder instances.
Key Differences from EPICS V4
The V7 integration uses softioc (pythonSoftIOC) instead of p4p. This provides:
Real EPICS records — softIocPVA creates longIn/longOut, ai/ao, and other record types rather than SharedPV objects.
Commands via caput — PyRogue Commands are exposed as longOut records. Clients invoke them with a plain put (value is forwarded as the command argument), not with an RPC call.
Note
Neither softioc nor p4p exposes a Python callback that fires when a CA or
PVA client issues a caget / ctxt.get(). Both EPICS V4 and V7
integrations serve the most recently pushed value from the EPICS record
buffer. To ensure clients receive up-to-date hardware values, the Rogue
server process must execute hardware reads itself — either via PyRogue
auto-polling (pollInterval on variables or pollEn=True on the
Root) or by calling device-level read commands explicitly.
Installation
Install the softioc dependency with:
pip install softioc
or add softioc to your conda environment.
Typical Workflow
Start a PyRogue
Rootand ensure Variables are tagged with the intended include and exclude groups.Create
EpicsPvServer(base=..., root=..., incGroups=..., excGroups=..., pvMap=...).Register it with the
Rootprotocol lifecycle and inspect the resulting mapping withlist()ordump().Validate end-to-end behavior with any EPICS client (CA or PVA).
Group Filtering
Variable exposure is controlled by normal PyRogue group filtering.
incGroups includes only matching Variables when it is set, and
excGroups excludes matching Variables. The default exclusion list includes
NoServe.
For group semantics and filtering behavior in the tree model, see Groups.
Subtopics
Server setup and PV mapping details: Epics PV Server (V7 Protocol)
Per-variable publication behavior: Epics PV Holder (V7 Protocol)