Чтение регистров с помощью pymodbus

Я очень новичок в 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)

2 ответа

Решение

Пробовать:

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

где значение единицы - идентификатор устройства ведомого.

Чтобы распечатать все:

print response.registers

Также можно напрямую получить одно значение (например, третий регистр):

print response.getRegister(2)

или же

print response.registers[2]  

Вы можете разобрать ответ самостоятельно, вот мой фрагмент кода:

    result = client.read_input_registers(0x01,1, unit=0x01)
    #print result
    t = result.registers[0]
    print "current temperature:", t, "  ", float(t/100.0)
Другие вопросы по тегам