2014-07-21 14 views
6

Jestem bardzo nowy w Modbus i PyModBus, jednak spędziłem sporo czasu próbując je odczytać i eksperymentować. Jeśli ktoś może wskazać mi w dobrym kierunku, będę wdzięczny ...


Czytanie rejestrów za pomocą pymodbus

Mam dysk z odległości, prędkości, przyspieszenia i hamowania do rejestru 40001, 40003, 40005 i 40007 (odpowiednio). Początkowo byłem w stanie napisać do rejestru odległości za pomocą client.write_register (0000, n). Po próbie zapisu do prędkości, napęd zaczął się przewracać i robić błędy, i obracać 10 razy szybciej niż powinien. Jednak prawdziwym priorytetem jest czytanie rejestrów. Próbuję odczytać dane z tych rejestrów i mieć zero szczęścia. Próbowałem za pomocą

request = client.read_holding_registers(0000,4) 
response = client.execute(request) 
print response 


Jednak wszystkie wrócę to "ReadRegisterResponse (0)".

Tak więc moim głównym priorytetem jest próba odczytania wartości z tych rejestrów ... jakiejkolwiek porady? (Jest TCP drodze)

Odpowiedz

8

Spróbuj:

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

gdzie wartość jednostki to identyfikator urządzenia podrzędnego.

Aby wydrukować wszystkie:

print response.registers 

jest również możliwe bezpośrednio dostać jedną wartość (na przykład trzecim rejestrze):

print response.getRegister(2) 

lub

print response.registers[2] 
5

można analizować odpowiedź samodzielnie, poniższy fragment to mój fragment kodu:

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