A collection of tools to facilitate EPICS commissioning of PLC based systems
Project description
dls_plc_tools
Tools for interrogating Omron NX PLCs over EtherNet/IP, to support EPICS commissioning of PLC-based vacuum systems at Diamond Light Source.
They let you browse the tags a PLC publishes, inspect the layout of its
structures, and watch values update live — without a Sysmac Studio licence or
physical access to the controller. Everything is read-only explicit
messaging: the same mechanism the EPICS ether_ip driver uses, serviced in
the controller's spare time, so it is safe to run against production PLCs.
There are two front-ends over the aphyt
library: a command-line tool (dls-read-plc) and a PySide6 desktop GUI
(dls-read-plc-gui).
| What | Where |
|---|---|
| Source | https://github.com/DiamondLightSource/dls-plc-tools |
| PyPI | pip install dls-plc-tools |
| Docker | docker run ghcr.io/diamondlightsource/dls-plc-tools:latest |
| Releases | https://github.com/DiamondLightSource/dls-plc-tools/releases |
Command-line tool
With just an IP address, dls-read-plc discovers every published
structure tag on the PLC and summarises each one — its member layout and how
many instances are actually in use:
dls-read-plc 172.23.x.x
Other modes:
dls-read-plc 172.23.x.x -l # list every published tag and its type
dls-read-plc 172.23.x.x -s Seq # show one structure's members and array bounds
dls-read-plc 172.23.x.x -d Seq # live-updating table of a structure's values
dls-read-plc 172.23.x.x -d Seq -m Desc,State,Status # choose which members to watch
--detail/-d redraws a table every 2 seconds (floor 0.5 s, set with
--interval), highlighting cells that have changed. Press Ctrl-C to stop. See
dls-read-plc --help for the full option list.
GUI
dls-read-plc-gui 172.23.x.x
dls-read-plc-gui gives you a browsable list of the PLC's published tags, a live
table of a selected structure's values (changed cells flash amber), and an
export of the discovered structure layouts to an Excel spreadsheet. The IP
address argument is optional — you can also enter it in the window.
Installation
pip install dls-plc-tools
Or, for development, using uv:
git clone https://github.com/DiamondLightSource/dls-plc-tools.git
cd dls-plc-tools
uv sync
uv run dls-read-plc <ip>
Notes
- These tools only ever read. They never write to the controller, never start a keep-alive poll, and keep at most one request in flight. Poll rates default to ~2 s and are floored at 0.5 s.
- Tags are visible over EtherNet/IP only if they are globals with Network
Publish set in Sysmac Studio, plus the controller's
_-prefixed system variables. Enumeration uses Omron's Tag Name Server object (CIP class 0x6A). - DLS structures are structure-of-arrays:
Seq.Interfc[1]is instance 1, with index 0 reserved as padding. A non-emptyDescentry marks an instance that is actually in use.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dls_plc_tools-1.0.0b1.tar.gz.
File metadata
- Download URL: dls_plc_tools-1.0.0b1.tar.gz
- Upload date:
- Size: 84.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1e113c4e20d11c2694b84309e3d0601cd24985e068618938fb85eb119a08e8c
|
|
| MD5 |
aa218eebd126c6c5a93f180dd2a0161f
|
|
| BLAKE2b-256 |
365c8442a9635437233f169c0f90e7192654104ff3543f0ad44e1324d03ce714
|
File details
Details for the file dls_plc_tools-1.0.0b1-py3-none-any.whl.
File metadata
- Download URL: dls_plc_tools-1.0.0b1-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
41c9569e4750d9200702b27df6ff38b8dce4d93c12ca65d9fd74a04110e9670b
|
|
| MD5 |
5bd216e6d2af3334e45c7e9070befd2c
|
|
| BLAKE2b-256 |
312ae6c790b14ba6eac18e630ac7634fe9bdc591404aea407922c92052c3b514
|