Ошибка опроса Карат-307 через контроллер шины M-bus

Cтолкнулись с ошибкой при опросе 307-го, имеющего интерфейс M-Bus.
Схема подключения:
Карат-307 с интерфейсом M-Bus >[двухпроводка M-bus]> Контроллер шины M-bus >[кабель RS-232]> Конвертер Карат-910 (это конвертер из RS-232 в Ethernet)
Данный вопрос был положительно разрешен ранее (http://forum.lers.ru/viewtopic.php?f=22&t=2676) путем добавления дополнительной обработки эха запроса.
C тех пор какие либо изменения в протокол обмена не вносились.
Сейчас при опросе прибора в логе опроса получаем следующие сообщения:

Карат-307: Ошибка выполнения команды устройства. Не сходится контрольная сумма пакета
Неверная длина ответа: получено 7 байт, ожидалось не менее 8 байт
Карат-307: Ошибка выполнения команды устройства. Ошибка чтения эха

и далее повтор строк “Неверная длина ответа” и “Ошибка чтения эха”.
Дамп обмена выслал на ящик support@lers.ru.

Вы не приложили сам журнал опроса. Без него разобраться не получится.

Упустил этот момент, прошу прощения. Выслал на support@lers.ru вдогонку.

Вот пример запроса к вашему прибору и его ответ.

Запрос:

01 03 07 08 00 01 04 BC
Ответ:
<< 01 03 02 33 01 6D 74

Видно что эхо запроса не возвращается. Вместо него, похоже, приходит сразу ответ от прибора. У вас используется какая-то другая модель адаптера MBus, которая не возвращает эхо? Если это так, уберите контроллер шины MBus из адаптера устройства.

Попробовали предложенное вами решение. Получили ошибку “Неверная длина ответа: получено 3 байт, ожидалось не менее 66 байт”, и далее “Карат-307: Ошибка выполнения команды устройства. Не сходится контрольная сумма пакета”. Высылаем вам на почту support@lers.ru журнал и дамп опроса без контроллера шины M-Bus, а так же, для сравнения, журнал и дамп опроса с контроллером.

Теперь ЛЭРС УЧЁТ считывает полный пакет, мы можем посмотреть что возвращает прибор.

Запрос от ЛЭРС УЧЁТ на чтение модели вычислителя.

02.03.2016 11:32:41.748 >> 01 03 07 08 00 01 04 BC

// Ответ прибора
02.03.2016 11:32:41.764 << 01 03 07 08 00 01 04 BC 01 03 02 33

01 - сетевой адрес
03 - код команды
07 - длина пакета
08 00 01 04 BC 01 03 - данные пакета

02 33 - контрольная сумма.

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

На тестовом стенде к контроллеру был подключен только один прибор.

В любом случае протокол обмена прибора сейчас нарушен. Вместо ответа прибора приходит “мусор”. Возможно дело в неверной распайке кабеля.

Проверьте, удаётся ли опросить его заводской программой?

Заводской программой прибор опросился корректно. Кабель проверили и использовали несколько разных - заводской программой одинаково корректно опрашивает на всех. В ЛЭРСе так же одинаковая ошибка на всех.

Опросили Карат-307 еще одной программой, предназначенной для проверки интерфейсов. Опросили по COM-порту и через интерфейс M-Bus. При запросе 01 03 07 08 00 01 04 BC мы получили ответы:
COM
TX: 01 03 07 08 00 01 04 BC 00 00 …>
01 03 02 33 01 6D 74

M-Bus
TX: 01 03 07 08 00 01 04 BC 00 00 …>
01 03 07 08 00 01 04 BC 00 00 01 03 02 33 01 6D 74

Из полученных ответов видно, что по M-Bus мы получаем эхо, а затем ответ, такой же, какой получаем по COM-порту. Следовательно, можно сделать вывод, что прибор опрашивается корректно по интерфейсу M-Bus, и проблема скорее всего в ЛЭРСе.

Давйате попробуем ещё раз.

  1. Укажите в параметрах устройства контроллер MBUS.
  2. Увеличьте таймаут на приём ответа от прибора на 3-5 секунд.
  3. Попробуйте опросить прибор и сообщите результат.

Попробовали еще раз, внеся предложенные вами изменения. Ничего принципиально не изменилось. Прикладываю дамп и журнал опроса.
dump.Интернет_6(0).2016-03-14.log (160 KB)
Журнал опроса.xls (16.5 KB)

Принципиально изменилось то, что теперь мы всегда считываем правильное эхо запроса. Дальше мы дочитываем ответ от прибора, в котором видим сбойные пакеты.

Покажу более подробно.

Во-первых нужно отметить что КАРАТ-307 использует тот же программный модуль Modbus, который используют другие приборы, работающие по этому протоколу. Если бы у ЛЭРС УЧЁТ была проблема с расчётом контрольной суммы, перестали бы опрашиваться все вычислители Взлёт ТСРВ, ВКТ-7 и множество других моделей.

Теперь к обмену с прибором.

Вот запрос от ЛЭРС УЧЁТ к вычислителю.

14.03.2016 12:11:36.910 >> 01 03 01 01 00 01 D4 36

От контроллера MBUS считывается правильное эхо, которое в точности равняется запросу.
14.03.2016 12:11:36.956 << 01 03 01 01 00 01 D4 36

Последние два байта запроса (выделено жирным) - контрольная сумма CRC-16. С помощью этого сайта проверим какая должна быть контрольная сумма у запроса.


Контрольня сумма:
crc1.png
Перед передачей байты нужно поменять местами, поэтому передавать нужно байты D4 36. Именно это мы и видим в запросе.


Дальше считывается ответ прибора
14.03.2016 12:11:37.003 << 01 03 36 01 30 30 30 35 30 32 31 36 B8 AD 09 45 6E B6 BF 45 66 66 54 42 66 66 00 28 96 16 95 94 96 16 95 94 96 16 95 94 96 16 95 54 10 9F 91 08 68 14 04 44 44 04 D4 06 44 55 FF

Жирным выделена принятая от вычислителя контрольная сумма. С помощью того же сайта проверим какую контрольную сумму мы должны принять
crc2.png
Как видно, мы должны были получить от прибора значения A4 5A, а считано было совсем другое 55 FF. Исходя из этого можно предположить, что где то по пути от вычислителя к контроллеру MBUS произошло искажение пакета. Возможно, неверная распайка сигнала Tx со стороны вычислителя.

Проверили еще раз настройку коммутирующего оборудования. Обнаружили ошибку в настройке моксы - была выставлена четность. Убрали и опрос прошел. Спасибо за помощь.