用pymodbus读取寄存器

2024-06-03 03:23:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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协议)


Tags: clientregister距离responserequest时间方向寄存器
2条回答

您可以自己分析响应,下面是我的代码片段:

    result = client.read_input_registers(0x01,1, unit=0x01)
    #print result
    t = result.registers[0]
    print "current temperature:", t, "  ", float(t/100.0)

尝试:

 response = client.read_holding_registers(0x00,4,unit=1)

其中,单位值是从机的设备id。

要全部打印:

print response.registers

也可以直接得到一个值(例如第三个寄存器):

print response.getRegister(2)

或者

print response.registers[2]  

相关问题 更多 >