我有一个运行在树莓pi 3b上的pymodbus。我有一个用于nemo 96hd数字万用表的if96015以太网接口。当我试图通过modbustcp和pymodbus控制台连接到它时,我可以询问它是否已连接,它显示“true”,但我无法从中读取任何数据。
根据手册,第一次使用的地址是301当我试图阅读.Coil()时,我得到:

"original_function_code": "1 (0x1)",
"error": "[Input/Output] No Response received from the remote unit/Unable to decode response"

打开控制台:
pymodbus.console tcp --host 192.168.178.200 --port 502

检查连接:
client.connect

尝试读取线圈:
client.read_coils address 301 count 1

输出:
"original_function_code": "1 (0x1)",
"error": "[Input/Output] Modbus Error: [Invalid Message] Incomplete message received, expected at least 8 bytes (0 received)"

[注]:
IF96015手册:
Manual_1
Manual_2

最佳答案

我找到了解决办法。问题出在机组ID的默认值中。可在vendor's website中找到的手册显示了一个机组ID值设置为“1”的Modbus TCP包格式示例。
但是单位id的工厂设置是“255”。您可以在菜单中更改默认地址,密码3002。现在,我可以使用以下python代码读取值:

message = tcp.read_holding_registers(slave_id=255, starting_address=0x1000, quantity=6)
response = tcp.send_message(message, sock)

10-06 12:01