在学习modbus_tk 模块过程中,读取寄存器前十位的时候数据老是不对,但是一旦超过11位数据就又正常了
import serial
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
#设定串口为从站
master = modbus_rtu.RtuMaster(serial.Serial(port="COM1",
baudrate=9600, bytesize=8, parity='N', stopbits=1))
master.set_timeout(5.0)
#读线圈 01H 1站号 地址2 长度5
out1 = master.execute(1, cst.READ_HOLDING_REGISTERS,0, 11) #长度指读取的寄存器数,寄存器从指定地址起连续读取
print(out1) #输出读取的结果
out2 = master.execute(1, cst.READ_HOLDING_REGISTERS,0, 5)
print(out2)
运行结束后理论上out1和out2的前面5项数据不是应该一样么,但是实际我得到的数据是这样的:
out1→(0, 1, 1, 2, 15, 1, 60, 4997, 9998, 50, 11)
out2→(0, 0, 0, 0, 0)
这是modbus-slave的数据:
逐位读取数据以后发现数据地址超过10 或者数据区间地址超过10就正常了
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,已经为您补发到账户,我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。