Протокол HDLC + DLMC\COSEM. Основы

Пишу, чтобы не забыть.

Протокол 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 определяет тип кадра, наличие сегментации кадров, длину кадра.

Поле Format в HDLC кадре

Бит S, установленный в «1», говорит о необходимости принять этот и последующие фреймы, как единый блок. В последнем фрейме блока бит S должен быть сброшен в «0».
Длина фрейма включает в себя все поля, кроме флагов.

Продолжение следует…

P.S. Я начал писать этот текст год назад, когда начал разбираться в HDLC, читая Green Book. Дописать не успел. Сейчас я всё забыл напрочь 🙂 
Разбирайтесь сами.

P.P.S. Кто-то нафигачил хорошую статью по DLMS COSEM протоколу https://habr.com/ru/post/650579/