Search
Write a publication
Pull to refresh

Comments 4

Для начала, я бы начал с описания протокола HDLC, который используется, как "обертка". Это уместно, так как обмен данными с ПУ просходит, во многих случаях, по последовательному каналу связи. HDLC может не использоваться только при соединении TCP/IP.

У меня была такая мысль: начинать описание с нижних уровней и идти к верхним, а не как сейчас, сверху вниз. Но я рассматривал свои статьи как продолжение имеющихся на хабре и частично опираюсь на них в тексте. Поэтому выбрал такой, не совсем оптимальный путь. Следующая часть посвящена сервису получения данных GET, а уже потом будет описано, как эти кадры оборачиваются протоколом HDLC.

Подскажите, а то всю голову сломал. Есть, например, запрос к счетчику на получение даты изготвления. Выглядит так

7e a0 1a 02 21 41 dc 6b ac e6 e6 00 c0 01 c1 00 01 00 00 60 01 04 ff 02 00 65 d2 7e

Далее приходит ответ

7e a0 1f 41 02 21 fc 4d 11 e6 e7 00 c4 01 c1 00 09 0c 07 e5 0a 15 04 16 05 10 00 80 00 00 d5 5f 7e

Вроде все понятнно. c401c100 - за ним идет 09 - octet string и размер 0c - 12 байт. 075e - 2021, 0a - 10 15 - 21ю И так, счетчик выпустили 21 октября 2021 года. Там еще время есть, но это не важно.

А теперь я хочу получить данные по тарифам и сети. Счетчик воспринимает только одну команду (возможно я не разобрался, но отдельные он присылает отлуп) - 1.0.94.7.0.255 - получить списком.

Запрос.

7e a0 1a 02 21 61 1c 54 49 e6 e6 00 c0 01 c1 00 07 01 00 5e 07 00 ff 02 00 c3 40 7e

Ответ (не буду полностью, он почти 300 байт, стрелочек естественно в ответе нет)

7e a1 0e 61 02 21 f0 5d ef e6 e7 00 c4 01 c1 00 ->01 01 02 30<- 09 0c 07 e7 0a 1e 01 11 27 0e 00 80 00 00 06 00 00 18 ce 06 00 00 18 c1

Считаем. c401c100. Далее вот этот кусок мне и не понятен - 01010230, потому что, после него опять становится понятно - 090с - octet string длнной 12 байт - дата-время замера, 06000018сe - 06 - unsigned32 и само число и там дальше идут типы или 06, или 05, им длина не нужна.

Вопрос - что это за кусок и как его интерпретировать - ->01 01 02 30<-

Начну немного с куска до
С4 - get-response
01 - get-response-normal
С1 - invoke-id-and-priority
00 - data
01 - массив
01 - размер массива
02 - структура
30 - количество полей в структуре
09 - тип первого поля в структуре (строка) и т.д.

Советую изучать с помощью https://gurux.fi/GuruxDLMSTranslator

Sign up to leave a comment.

Articles