Я пытаюсь связаться по протоколу Modbus с контроллером uC2 SE для воздушно-водяного чиллера. Последовательный порт RS485-USB COM подключен к контроллеру, и я смог прочитать регистры, но невозможно изменить их значения с помощью функции write_register. Я тоже пробовал тестером. exe и Modscan64, и результат был тот же, они могут только читать, но не писать. Я представил здесь фрагмент кода, который выполняется, и ответы отладки могут быть проверены. Спасибо за вашу помощь заранее!
Изменить уставку температуры
ОХЛАЖДЕНИЕ_SETPOINT_REG = 41
попробуйте: print(instrument.read_register(COOLING_SETPOINT_REG,1)) кроме IOError: print('Не удалось прочитать из прибора')
НОВАЯ_ТЕМПЕРАТУРА = 20,1
return_flag = Instrument.write_register(COOLING_SETPOINT_REG, NEW_TEMPERATURE,1,functioncode = 6, signed = True) # Номер регистра, значение, количество десятичных знаков для хранения output_flag = 'SUCCESS' if return_flag else 'FAILURE' print('запись состояния одного регистра' + output_flag + '\n' )
попробуйте: print(instrument.read_register(COOLING_SETPOINT_REG,1)) кроме IOError: print('Не удалось прочитать из прибора')
Отладка ответа:
Минимальный режим отладки Modbus. Запишет в прибор (ожидая 7 байт назад): '\x01\x03\x00)\x00\x01UÂ' (01 03 00 29 00 01 55 C2) Режим отладки MinimalModbus. Открытие порта COM8 Режим отладки MinimalModbus. Очистка последовательных буферов для порта COM8 в режиме отладки MinimalModbus. Не требуется сон перед записью. Время с момента предыдущего чтения: 334030,00 мс, минимальный период молчания: 4,01 мс. Минимальный режим отладки Modbus. Закрытие порта COM8 в режиме отладки MinimalModbus. Ответ от прибора: '\x01\x03\x02\x00ȹÒ' (01 03 02 00 C8 B9 D2) (7 байт), время приема-передачи: 62,0 мс. Тайм-аут чтения: 1000,0 мс.
20.0 Минимальный режим отладки Modbus. Запишет в прибор (ожидая 8 байт назад): '\x01\x06\x00)\x00É\x98T' (01 06 00 29 00 C9 98 54) Режим отладки MinimalModbus. Открытие порта COM8 Режим отладки MinimalModbus. Очистка последовательных буферов для порта COM8 в режиме отладки MinimalModbus. Не требуется сон перед записью. Время с момента предыдущего чтения: 47,00 мс, минимальный период молчания: 4,01 мс. Минимальный режим отладки Modbus. Закрытие порта COM8 в режиме отладки MinimalModbus. Ответ от прибора: '\x01\x06\x00)\x00É\x98T' (01 06 00 29 00 C9 98 54) (8 байт), время приема-передачи: 47,0 мс. Тайм-аут чтения: 1000,0 мс.
запись состояния единого регистра FAILURE
Минимальный режим отладки Modbus. Запишет в прибор (ожидая 7 байт назад): '\x01\x03\x00)\x00\x01UÂ' (01 03 00 29 00 01 55 C2) Режим отладки MinimalModbus. Открытие порта COM8 Режим отладки MinimalModbus. Очистка последовательных буферов для порта COM8 в режиме отладки MinimalModbus. Не требуется сон перед записью. Время с момента предыдущего чтения: 46,00 мс, минимальный период молчания: 4,01 мс. Минимальный режим отладки Modbus. Закрытие порта COM8 в режиме отладки MinimalModbus. Ответ от прибора: '\x01\x03\x02\x00ȹÒ' (01 03 02 00 C8 B9 D2) (7 байт), время приема-передачи: 47,0 мс. Тайм-аут чтения: 1000,0 мс.