Комментарии 3
Для начала, я бы начал с описания протокола HDLC, который используется, как "обертка". Это уместно, так как обмен данными с ПУ просходит, во многих случаях, по последовательному каналу связи. HDLC может не использоваться только при соединении TCP/IP.
Подскажите, а то всю голову сломал. Есть, например, запрос к счетчику на получение даты изготвления. Выглядит так
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<-
Работа с кадрами протокола DLMS/COSEM для опроса приборов учета. Часть 1. Установление и завершение соединения