2014-07-21 166 views
6

我對Modbus和PyModBus非常陌生,但是我花了很多時間試圖讀取和試驗它。如果任何人都可以在正確的方向指向我,我將不勝感激...


用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的方式)

回答

8

嘗試:

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

其中單位值是從站的設備ID。

要打印所有:

print response.registers 

還可以直接獲得一個值(例如第三個寄存器):

print response.getRegister(2) 

print response.registers[2] 
5

你可以解析響應由你自己,以下是我的代碼片段:

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