Modbus adapter
The Modbus adapter reads holding registers over Modbus TCP and publishes each configured tag onto the Unified Namespace.
Read-only by construction
Section titled “Read-only by construction”Modbus write function codes (5, 6, 15, 16, 22, 23) are rejected in the adapter’s code before a write is ever attempted — this adapter only ever issues read requests, regardless of what a caller asks it to do. See Security model for how this fits the broader isolation design.
Configuring a device
Section titled “Configuring a device”A device entry names a connection (host, port, unit id) and a list of tags, each mapping a register address and decode format to a signal path:
devices: - id: cnc-1-modbus protocol: modbus poll_ms: 200 conn: {kind: tcp, host: <plc-host>, port: 502, unit: 1} tags: - {address: "hr1:f32:be", signal_path: "press-shop/line-1/cnc-cell-1/cnc-1/cnc-1-spindle-load"}The address format names the register type (hr = holding register), the decode type
(f32 = 32-bit float spanning two registers), and byte order (be/le) — match this to
your PLC’s register map and documented word order. signal_path must match a signal id
already present in the site’s registry (see Sensors & recipes).
Trying it against the simulator
Section titled “Trying it against the simulator”The demo plant’s rw-sim runs a Modbus server with a documented register map, and
deploy/demo/edge.yaml is a complete, working example device entry for it — see
Quick start to bring the whole chain up and watch samples land in the
historian.