我正在尝试使用 pyModbus 库中的诊断子功能,但在解码响应时出现错误。这是由 pyModbus 库而不是我的代码处理的,因此很难弄清楚我的问题发生在哪里。
我参考了文档并尝试了此处给出的示例: https ://pymodbus.readthedocs.io/en/latest/source/example/synchronous_client_ext.html
下面的示例使用该函数来获取 NAK 计数,但我已经尝试使用 diag_messages 库中的多个函数,包括 DiagnosticStatusSimpleRequest 和 ReturnQueryDataResponse。
from pymodbus.client.sync import ModbusTcpClient, ModbusSerialClient
from pymodbus import diag_message
ip = '10.130.14.176'
with ModbusTcpClient(host=ip) as client:
testRequest = client.read_holding_registers(3000, 1, unit=1) # test request to make sure the connection is working and the device is communicating.
print(testRequest.registers) # returns expected value
rq = diag_message.ReturnSlaveNAKCountRequest(unit=1)
rr = client.execute(rq)
print(rr.isError) # get "Unable to decode request" error