Чтение регистров с помощью 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)