我正在尝试通过Modbus TCP通信读取saia sbc PCD2 M4_x plc的寄存器和标志。我知道 plc 的 IP 地址和通信端口,但是每次我读取标志或寄存器时,我总是得到与这些集合不同的值。我敢肯定,这不是通常在modbus通信中发生的寄存器偏移问题。我编写的代码是列出的代码,也是结果。
from easymodbus.modbusClient import ModbusClient
modbusclient = ModbusClient(IP_address, Port)
modbusclient.connect()
read = modbusclient.read_coils(0, 10)
print(read)
modbusclient.close()
read=[False, False, True, False, True, True, False, False, False, False]
但是,标志 0 到 10 没有该状态,即使我在启动编写的代码时更改它,结果也保持不变。即使我更改地址。
你必须通过Modbus进行通信吗? 我不熟悉,但我使用另一种方法。 Saia PCD确实接受CGI呼叫,这很容易进行。 在他们的网站上有一个很好的网络服务器和CGI文档。 如果您考虑使用这种通信,我可以帮助您使用我编写的库来读/写寄存器和从任何PCD读取错误。