EPICS PVAccess server for Keysight (Agilent) DSO-X oscilloscopes (may support other series). Server supports both USB and Ethernet connections.
This module connects to a scope via VISA/SCPI, publishes waveform and settings PVs, and exposes writable control PVs for acquisition and trigger configuration.
- VISA connection to Keysight/Agilent DSO-X scopes
- PVAccess server using
epicsdev - Per-channel PVs for:
OnOff,Coupling,VoltsPerDiv,VoltOffsetWaveform,Mean,Peak2Peak,RMS
- Common scope PVs:
timePerDiv,tAxis,samplingRate,trigSource,trigSlope,trigMode,trigLevelacqCount,lostTrigs,scopeIDN,instrCmdS/instrCmdR
- Triggered waveform acquisition with published time axis (
tAxis)
USB0::2391::6052::MY51330356::0::INSTR
For Ethernet:
TCPIP::192.168.27.31::INSTR
or
TCPIP::192.168.27.31::SOCKET
- Python 3.10+
numpypyvisa- a VISA backend (typically
pyvisa-py) epicsdevand its EPICS/PVA dependency stack (p4p)
pip install epicsdev_osc_keysight_dsox
python -m epicsdev_osc_keysight_dsox
Typical usage:
python -m epicsdev_osc_keysight_dsox -r "USB0::2391::6052::MY51330356::0::INSTR" -d keysight -i 0 -C 4 -v
This creates PVs with prefix <device><index>: (default: keysight0:).
-r, --resourceVISA resource string-d, --devicedevice prefix base name-i, --indexdevice index appended to prefix-C, --channelsnumber of channels to expose-l, --listdirectory where generated PV list is saved-a, --autosaveautosave control (optional argument)-c, --recalldisable restoring PV values from autosave cache-p, --putlogPVPV name for put logging-v, --verboseincrease verbosity (-vvfor more)
With default prefix keysight0::
keysight0:scopeIDNkeysight0:trigStatekeysight0:tAxiskeysight0:c01Waveformkeysight0:c01VoltsPerDivkeysight0:c01VoltOffsetkeysight0:c01OnOff
A simple screen generator is included:
- Source:
opi/generate_simplescope.py - Output:
opi/simplescope.bob
Generate with:
python opi/generate_simplescope.py --prefix 'keysight0:'
- On startup, the server reads selected scope settings and adopts them into PVs.
- Waveforms are acquired on trigger detection and published with channel statistics.
- If all channels are set
Off, channel 1 is used as a fallback acquisition source.
