一次不能读取超过13个寄存器

时间:2019-09-23 05:52:38

标签: python-3.x modbus serial-communication pymodbus

这是我的代码:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method='rtu', port='COM7', timeout=1,parity='N', 
baudrate=9600, unit=1)
status = client.connect()
print(status)
rr = client.read_holding_registers(2, 20, unit=1)
print(i, rr.registers)

然后出现以下错误:

print(i, rr.registers)
AttributeError: 'ModbusIOException' object has no attribute 'registers'

但是如果读取的寄存器最多为13,则不会出现任何错误。我通过使用以下代码发现了这一点:

from pymodbus.client.sync import ModbusSerialClient as ModbusClient
client = ModbusClient(method='rtu', port='COM7', timeout=1,parity='N', 
baudrate=9600, unit=1)
status = client.connect()
print(status)
for i in range(1,20):
    rr = client.read_holding_registers(2, i, unit=1)
    print(i, rr.registers)

输出:

True
1 [0]
2 [0, 1]
3 [0, 1, 0]
4 [0, 1, 0, 2]
5 [0, 1, 0, 2, 0]
6 [0, 1, 0, 2, 0, 3]
7 [0, 1, 0, 2, 0, 3, 0]
8 [0, 1, 0, 2, 0, 3, 0, 0]
9 [0, 1, 0, 2, 0, 3, 0, 0, 0]
10 [0, 1, 0, 2, 0, 3, 0, 0, 0, 0]
11 [0, 1, 0, 2, 0, 3, 0, 0, 0, 0, 0]
12 [0, 1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0]
13 [0, 1, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0]
Traceback (most recent call last):
print(i, rr.registers)
AttributeError: 'ModbusIOException' object has no attribute 'registers'

0 个答案:

没有答案