用pymodbus读取寄存器

5T4*_*TiC 6 python modbus

我是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
Run Code Online (Sandbox Code Playgroud)


但是,我得到的只是"ReadRegisterResponse(0)".

所以,我的首要任务是尝试从这些寄存器中读取值...任何建议?(顺便说一句,这是通过TCP)

小智 10

尝试:

 response = client.read_holding_registers(0x00,4,unit=1)
Run Code Online (Sandbox Code Playgroud)

其中单位值是从站的设备ID.

打印全部:

print response.registers
Run Code Online (Sandbox Code Playgroud)

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

print response.getRegister(2)
Run Code Online (Sandbox Code Playgroud)

要么

print response.registers[2]  
Run Code Online (Sandbox Code Playgroud)


小智 5

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

    result = client.read_input_registers(0x01,1, unit=0x01)
    #print result
    t = result.registers[0]
    print "current temperature?", t, "  ", float(t/100.0)
Run Code Online (Sandbox Code Playgroud)