Пишу, чтобы не забыть.
Протокол HDLC — канального уровня. Внутри информационного поля, содержит сообщения протокола DLMS\COSEM.
Литература:
HDLC (High-Level Data Link Control) — бит-ориентированный протокол
высокоуровневого управления каналом передачи данных, описанный в ISO/IEC 13239. Протокол имеет 2 подуровня:
- LLC (Logical Link Control) — управление логической связью, т.е. управление
передачей данных и контроль правильности передачи данных;
- MAC (Media Access Control) — управление доступом к среде передачи.
Наш пациент — MAC (Media Access Control)
Формат фрейма (кадра) HDLC MAC типа 3
Flag — байт 0x7E открывает и закрывает каждый кадр. Источники утверждают, что если в поле Information встречается байт 0x7E, то он должен быть заменён на что-то другое. Я это не проверял.
Format определяет тип кадра, наличие сегментации кадров, длину кадра.
Бит S, установленный в «1», говорит о необходимости принять этот и последующие фреймы, как единый блок. В последнем фрейме блока бит S должен быть сброшен в «0».
Длина фрейма включает в себя все поля, кроме флагов.
Продолжение следует…
P.S. Я начал писать этот текст год назад, когда начал разбираться в HDLC, читая Green Book. Дописать не успел. Сейчас я всё забыл напрочь 🙂
Разбирайтесь сами.
P.P.S. Кто-то нафигачил хорошую статью по DLMS COSEM протоколу https://habr.com/ru/post/650579/