Communication
For an introduction to the DSL vocabulary, see Core Concepts.
Modbus send / receive
send writes local values to a remote device. receive reads remote values into local tags.
Target
Define the remote device as a ModbusTcpTarget or ModbusRtuTarget:
peer = ModbusTcpTarget(name="peer", ip="192.168.1.10", port=502)
rtu_device = ModbusRtuTarget(name="sensor", serial_port="/dev/ttyUSB0", device_id=2)
For codegen-only programs (no live simulation), pass a plain string name instead.
Send
with Rung(Enable):
send(
target=peer,
remote_start="DS1",
source=DS.select(1, 10),
sending=Sending,
success=SendOK,
error=SendErr,
exception_response=ExCode,
)
Receive
with Rung(Enable):
receive(
target=peer,
remote_start="DS1",
dest=DS.select(11, 20),
receiving=Receiving,
success=RecvOK,
error=RecvErr,
exception_response=ExCode,
)
Status tags
Both instructions require four status tags:
- sending / receiving (
BOOL) — True while the transaction is in progress - success (
BOOL) — True for one scan after a successful transaction - error (
BOOL) — True for one scan after a failed transaction - exception_response (
INT) — Modbus exception code on error
Remote addressing
remote_start can be a Click address string (e.g. "DS1") for Click-to-Click communication, or a ModbusAddress for raw Modbus devices.
For more on the soft-PLC Modbus setup, see Click PLC — ClickDataProvider.