1

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

这是我的代码:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
import logging

logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)

client = ModbusClient(method='rtu', port='COM4',  baudrate=9600, timeout = 3, parity = 'N', stopbits=1,  bytesize=8)
connection = client.connect()
print(connection)

#request = client.read_holding_registers(1,1,unit=1)
request = client.read_holding_registers(40001, 1, unit=1)
print(request)

我尝试使用地址 40001 和 1,但都有效。我不断收到这条消息:

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)
4

0 回答 0