Как в PMP20 закодировать формат кадра в настройках порта?
Длина данных, чётность и стоповый бит задаются одним регистром: это не три отдельные настройки, а три битовых поля внутри одного слова. При настройке порта из программы формат кадра записывается в четвёртый регистр блока.
Разбор полей:
- Биты 7 и 6 — стоповый бит. 00 — один стоповый бит, 01 — полтора, 10 — два.
- Биты 5, 4 и 3 — контроль чётности. 000 — контроля нет, 001 — контроль по нечётности, 010 — по чётности, 100 — режим маски. Комбинация 011 не задействована.
- Биты 2, 1 и 0 — длина данных. 000 — 5 бит, 001 — 6, 010 — 7, 011 — 8, 100 — 9.
Собирать значение удобнее в двоичном виде и записывать двоичной константой: привычный формат «8 бит данных, контроль по чётности, один стоповый бит» — это 000 для стопового поля, 010 для чётности и 011 для длины.
Заводская настройка порта именно такая: 8 бит данных, контроль чётности включён, один стоповый бит, скорость 19200 бит/с, номер станции 1. С ней же по умолчанию соединяется среда программирования.
Практический смысл битовых полей — совместимость с чужими приборами. Расходомеры и весовые терминалы часто требуют формата без контроля чётности и с двумя стоповыми битами; в паспорте такого прибора он записан как «8N2», и в регистр формата это переводится напрямую: поле стопа 10, поле чётности 000, поле длины 011.
Ошибка в поле чётности проявляется не тайм-аутом, а ошибками контрольной суммы: кадр доходит, но контроллер считает его повреждённым.
Прикреплённая документация
Георгий Жуков
Ведущий инженер