Чем режим Modbus RTU отличается от ASCII в PMP20?
Оба режима передают одни и те же запросы, но по-разному упаковывают их в линию. Режим задаётся в настройках порта: значение 0 — RTU, значение 128 — ASCII. У всех устройств линии он должен совпадать.
RTU — двоичный режим. Данные идут байтами как есть, границы кадра определяются паузой: перед началом и после окончания посылки линия должна молчать не менее 10 мс. Контроль целостности — двухбайтовая циклическая сумма в конце кадра. Режим компактнее и быстрее, поэтому применяется по умолчанию.
ASCII — символьный режим. Каждый байт передаётся двумя символами, поэтому посылка вдвое длиннее. Начало кадра обозначено символом двоеточия (код 3AH), конец — парой символов возврата каретки и перевода строки (коды 0DH и 0AH). Контроль целостности — продольная сумма LRC. Пауза внутри кадра допустима, что удобно на медленных и зашумлённых линиях и при работе через модемы и радиоканал.
Как распознать несовпадение режимов: обмен не проходит, но ошибкой становится не тайм-аут, а именно ошибка контрольной суммы — код 180 для RTU и 181 для ASCII в регистре результата порта. Это надёжный признак того, что физика линии в порядке и разбираться нужно в настройках.
Что выбрать. По умолчанию — RTU: он экономит время цикла опроса, а при 19200 бит/с разница в длине кадра уже заметна на десятке приборов. ASCII имеет смысл, когда его требует подключаемый прибор или когда посылки надо смотреть в терминале глазами при наладке.
Пауза 10 мс в режиме RTU — не рекомендация, а требование: слишком плотный опрос без пауз даёт ошибки, хотя линия исправна.
Прикреплённая документация
Георгий Жуков
Ведущий инженер