1. intro
2. diagslave (server)
curl -n# https://www.modbusdriver.com/downloads/diagslave.tgz | tar xz -C /tmp/
uname -m | grep -q x86_64 && mv -f /tmp/diagslave/x86_64-linux-gnu/diagslave /bin/
uname -m | grep -q aarch64 && mv -f /tmp/diagslave/aarch64-linux-gnu/diagslave /bin/
uname -m | grep -q armv7l && mv -f /tmp/diagslave/arm-linux-gnueabihf/diagslave /bin/
rm -fr /tmp/diagslave/
vi /usr/lib/systemd/system/ss-diagslave.service
#
# ss-diagslave service
#
[Unit]
Description=ss-diagslave
After=network.service
[Service]
Type=simple
ExecStart=/bin/diagslave -m tcp
ExecStop=kill diagslave
RemainAfterExit=no
[Install]
WantedBy=multi-user.target
systemctl enable --now ss-diagslave.service
3. modpoll (client)
curl -n# https://www.modbusdriver.com/downloads/modpoll.tgz | tar xz -C /tmp/
uname -m | grep -q x86_64 && mv -f /tmp/modpoll/x86_64-linux-gnu/modpoll /bin/
uname -m | grep -q aarch64 && mv -f /tmp/modpoll/aarch64-linux-gnu/modpoll /bin/
uname -m | grep -q armv7l && mv -f /tmp/modpoll/arm-linux-gnueabihf/modpoll /bin/
rm -fr /tmp/modpoll/
4. sample read
modpoll -a 1 -r 1001 -c 16 -1 127.0.0.1
modpoll 3.11 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2024 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.
Protocol configuration: MODBUS/TCP, FC3
Slave configuration...: address = 1, start reference = 1001, count = 16
Communication.........: 127.0.0.1, port 502, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table
-- Polling slave...
[1001]: 0
[1002]: 0
[1003]: 0
[1004]: 0
[1005]: 0
[1006]: 0
[1007]: 0
[1008]: 0
[1009]: 0
[1010]: 0
[1011]: 0
[1012]: 0
[1013]: 0
[1014]: 0
[1015]: 0
[1016]: 0
![]() |
u need 2 use ipaddress, not fqdn, it will cause a Segmentation fault |
5. sample write
we r gonna write a value of 10 into register 1004
modpoll -a 1 -r 1004 127.0.0.1 10
modpoll 3.11 - FieldTalk(tm) Modbus(R) Master Simulator
Copyright (c) 2002-2024 proconX Pty Ltd
Visit https://www.modbusdriver.com for Modbus libraries and tools.
Protocol configuration: MODBUS/TCP, FC16
Slave configuration...: address = 1, start reference = 1004, count = 1
Communication.........: 127.0.0.1, port 502, t/o 1.00 s, poll rate 1000 ms
Data type.............: 16-bit register, output (holding) register table
Written 1 reference.
check now …
modpoll -a 1 -r 1004 127.0.0.1 10
///
[1001]: 0
[1002]: 0
[1003]: 0
[1004]: 10 <<<
[1005]: 0
[1006]: 0
[1007]: 0
[1008]: 0
[1009]: 0
[1010]: 0
[1011]: 0
[1012]: 0
[1013]: 0
[1014]: 0
[1015]: 0
[1016]: 0