Как записать катушку и группу регистров по Modbus из PMP20?
Для записи есть четыре команды, каждая соответствует своему коду функции Modbus: COLW — запись одной катушки (код 05H), REGW — запись одного регистра (06H), MCLW — запись нескольких катушек (0FH), MRGW — запись нескольких регистров (10H).
Что важно знать про формат:
- Запись одной катушки. Включённому состоянию соответствует значение 00FFH, выключенному — 0000H, причём младший байт передаётся первым. Это ловушка при разборе кадра в анализаторе: в линии байты идут не в том порядке, в каком записаны в руководстве.
- Запись нескольких регистров. В кадре есть поле числа байт, и оно равно числу регистров, умноженному на два. Ошибка в этом поле — самая частая причина ответа с ошибкой данных.
Пример разбора. Команда REGW K1 H0002 K5000 K2 пишет значение 5000 в регистр с адресом 2 станции 1 через порт 2. В линию уходит кадр 01 06 00 02 13 88 25 5C: номер станции, код функции, два байта адреса, два байта значения и два байта контрольной суммы. Значение 5000 в шестнадцатеричном виде — это 13 88, и по этой паре байт запрос легко опознаётся в анализаторе.
Общие правила для всех команд записи: условие — только нарастающий фронт, номер порта указывается последним операндом, результат обмена проверяется по регистру результата порта. Внутри блоков последовательности команды обмена не работают — записи в приборы выносят в основную программу.
Прикреплённая документация
Георгий Жуков
Ведущий инженер