Добавление поддержки счётчика импульсов МУР 1001.5 ADN (протокол ASCII) [16594]

У вас имеется более подробное описание структуры запроса и ответа устройства по протоколу ASCII?

В описание, которое вы приложили, есть только информация о том, что сетевой адрес имеет длину 1 и для чтения накопленных значений нужно использовать команду 0x80. Я посмотрел, какой запрос отсылает программа DeviceConfig и в запросе присутствует больше двух байт. Судя по запросу программы DeviceConfig, в запросе имеется контрольная сумма и какие-то спецсимволы.

Протокол ASCII.pdf (415,4 КБ)

В протоколе сказано, что для опроса можно использовать широковещательный адрес либо адрес устройства. Широковещательный адрес 0xFF, а какой адрес устройства, доступ к которому предоставлен?

Добрый день.

254

Ваше устройство отвечает только при использовании широковещательного адреса, при использовании адреса 254 ответа нет.

Точно ли у вашего устройства адрес 254?

Еще вопрос касательно ответов прибора, в протоколе сказано, что структура запроса совпадает с структурой ответа, однако видно, что в ответе сначала приходит байт 0x00, пример чтения Версия ПО:
Запрос: 2F4646303030412130390D0A
Ответ: 002F3030464630303445333836443635333033312142380D0A
Так и должно быть? Что это за байт?

Добрый день.

У ADN сделали адрес 1 (коллективный 255).

0x00 в начале ответа это побочное явление. Сейчас исправить уже не можем. Предлагаем принять как есть.

Подскажите, могли бы вы задать какие-нибудь значения для импульсных входов и замкнуть некоторые дискретные входы? Это помогло бы при тестировании драйвера опроса.

Еще у меня возник вопрос касательно структуры пакета при чтении накопленных значений
Запрос: 2F3031303038302138310D0A
Ответ: 002F3030303130303338303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030312133410D0A
Если в ответе оставить только блок DATA, то вид будет следующий:
333830303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303031, здесь первая пара образующая байт 3338, это явно не часть значения, все значения нулевые сейчас в заводском ПО, судя по всему это интерпретируется как 8 счетчиков импульсов? В протоколе об этом не говорится. Предположим, что первая пара, это количество счетчиков импульсов, далее должно быть 8 каналов по 4 байта, байт line и байт power:
3030303030303030 - канал 1
3030303030303030 - канал 2
3030303030303030 - канал 3
3030303030303030 - канал 4
3030303030303030 - канал 5
3030303030303030 - канал 6
3030303030303030 - канал 7
3030303030303030 - канал 8
3030 - Line
3030 - Power
3031 - ? Что это за байт? Описания нет.
В протоколе не описан тип данных для импульсных входов, вероятно uint? Порядок байт младшим байтом вперёд?

Добрый день.

Давайте будем рассматривать пакеты не в HEX а в ASCII, т.е.:

2F3031303038302138310D0A → /010080!81

Ответ в этом случае выглядит вот так:

/000100 3800 04000000 03000000 00000000 00000000 00000000 00000000 00000000 00000000 01 01 !42

Здесь:

/000100 - начало пакета - кому, от кого, код ответа;

3800 - код устройства - 8-ми канальный счетчик (у нас были другие устройства с аналогичными ответами);

04000000 - счетчик 1 - насчитал 4 импульса (uint32);

03000000 - счетчик 2 - насчитал 3 импульса;

00000000 - счетчик 3 - насчитал 0 импульсов;

***************

00000000 - счетчик 8 - насчитал 0 импульсов;

01 - замкнута линия 1 - на 1-м счетчике замкнут геркон (испорчен или поднесен магнит);

01 - неисправна батарейка - в данном устройстве не запаяна схема проверки батарейки;

!42 - конец пакета и контрольная сумма.

Работа по добавлению поддержки счётчика импульсов МУР 1001.5 ADN завершена. Поддержка войдет в обновление ЛЭРС УЧЁТ 3.65.