Python &引用;客户。阅读“持有登记簿”;问题RTU-pymodbus

Python &引用;客户。阅读“持有登记簿”;问题RTU-pymodbus,python,pymodbus,Python,Pymodbus,我正在尝试使用pymodbus从PLC读取温度值,但它不工作 这是我的代码: 我试图使用地址40001和40001,但尼瑟成功了。我一直收到这样的信息: True ModbusSerialClient(rtu baud[9600]) DEBUG:pymodbus.transaction:Current transaction state - IDLE DEBUG:pymodbus.transaction:Running transaction 1 DEBUG:pymodbus.transacti

我正在尝试使用pymodbus从PLC读取温度值,但它不工作

这是我的代码: 我试图使用地址40001和40001,但尼瑟成功了。我一直收到这样的信息:

True
ModbusSerialClient(rtu baud[9600])
DEBUG:pymodbus.transaction:Current transaction state - IDLE
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:SEND: 0x3 0x3 0x9c 0x41 0x0 0x1 0xfb 0xac
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
DEBUG:pymodbus.transaction:Transaction failed. (Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received)) 
DEBUG:pymodbus.framer.rtu_framer:Frame - [b''] not ready
DEBUG:pymodbus.transaction:Getting transaction 3
DEBUG:pymodbus.transaction:Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
Modbus Error: [Input/Output] Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received)

您没有收到任何数据,这看起来像是硬件问题。您使用什么硬件连接到PLC(USB-to-RS485或其他)?也可能是您没有针对正确的装置ID,您确定您的PLC是从机ID号1吗?还有一件事:使用pymodbus,您不必使用4000x命名约定。调用
read\u holding\u registers
时,如果要读取地址40001处的holding register,则address参数应为0。如果要读取寄存器40021,则需要减去偏移量(40001)得到40021-40001=20,因此必须使用20(十六进制中的0x14)作为地址参数。您无法返回任何数据,这看起来像是硬件问题。您使用什么硬件连接到PLC(USB-to-RS485或其他)?也可能是您没有针对正确的装置ID,您确定您的PLC是从机ID号1吗?还有一件事:使用pymodbus,您不必使用4000x命名约定。调用
read\u holding\u registers
时,如果要读取地址40001处的holding register,则address参数应为0。如果要读取寄存器40021,需要减去偏移量(40001)得到40021-40001=20,因此必须使用20(十六进制中的0x14)作为地址参数。
True
ModbusSerialClient(rtu baud[9600])
DEBUG:pymodbus.transaction:Current transaction state - IDLE
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:SEND: 0x3 0x3 0x9c 0x41 0x0 0x1 0xfb 0xac
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
DEBUG:pymodbus.transaction:Transaction failed. (Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received)) 
DEBUG:pymodbus.framer.rtu_framer:Frame - [b''] not ready
DEBUG:pymodbus.transaction:Getting transaction 3
DEBUG:pymodbus.transaction:Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'
Modbus Error: [Input/Output] Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received)