我是Modbus和PyModBus的新手,但是我花了很多时间尝试阅读和试验它。如果有人能指出我正确的方向,我将不胜感激... ...
我在寄存器40001,40003,40005和40007(分别)上有一个带有距离,速度,加速度和减速度的驱动器。我最初能够使用client.write_register(0000,n)写入距离寄存器。在尝试写入速度之后,驱动器开始变得干扰和断裂,并且以它应该的速度旋转10倍。但是,真正的优先事项是读取寄存器。我试图从这些寄存器中读取数据并且没有运气。我尝试过使用
request = client.read_holding_registers(0000,4)
response = client.execute(request)
print response
但是,我得到的只是" ReadRegisterResponse(0)"。
所以,我的首要任务是尝试从这些寄存器读取值...任何建议? (顺便说一下,这是通过TCP)
答案 0 :(得分:10)
尝试:
response = client.read_holding_registers(0x00,4,unit=1)
其中单位值是从属设备ID。
打印全部:
print response.registers
也可以直接获取一个值(例如第三个寄存器):
print response.getRegister(2)
或
print response.registers[2]
答案 1 :(得分:5)
你可以自己解析回复,以下是我的代码片段:
result = client.read_input_registers(0x01,1, unit=0x01)
#print result
t = result.registers[0]
print "current temperature:", t, " ", float(t/100.0)