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.
Видно что эхо запроса не возвращается. Вместо него, похоже, приходит сразу ответ от прибора. У вас используется какая-то другая модель адаптера MBus, которая не возвращает эхо? Если это так, уберите контроллер шины MBus из адаптера устройства.
Попробовали предложенное вами решение. Получили ошибку “Неверная длина ответа: получено 3 байт, ожидалось не менее 66 байт”, и далее “Карат-307: Ошибка выполнения команды устройства. Не сходится контрольная сумма пакета”. Высылаем вам на почту support@lers.ru журнал и дамп опроса без контроллера шины M-Bus, а так же, для сравнения, журнал и дамп опроса с контроллером.
// Ответ прибора
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 мы получаем эхо, а затем ответ, такой же, какой получаем по COM-порту. Следовательно, можно сделать вывод, что прибор опрашивается корректно по интерфейсу M-Bus, и проблема скорее всего в ЛЭРСе.
Принципиально изменилось то, что теперь мы всегда считываем правильное эхо запроса. Дальше мы дочитываем ответ от прибора, в котором видим сбойные пакеты.
Покажу более подробно.
Во-первых нужно отметить что КАРАТ-307 использует тот же программный модуль Modbus, который используют другие приборы, работающие по этому протоколу. Если бы у ЛЭРС УЧЁТ была проблема с расчётом контрольной суммы, перестали бы опрашиваться все вычислители Взлёт ТСРВ, ВКТ-7 и множество других моделей.
От контроллера MBUS считывается правильное эхо, которое в точности равняется запросу.
14.03.2016 12:11:36.956 << 01 03 01 01 00 01 D4 36
Последние два байта запроса (выделено жирным) - контрольная сумма CRC-16. С помощью этого сайта проверим какая должна быть контрольная сумма у запроса.
Контрольня сумма:
Перед передачей байты нужно поменять местами, поэтому передавать нужно байты D4 36. Именно это мы и видим в запросе.
Жирным выделена принятая от вычислителя контрольная сумма. С помощью того же сайта проверим какую контрольную сумму мы должны принять
Как видно, мы должны были получить от прибора значения A4 5A, а считано было совсем другое 55 FF. Исходя из этого можно предположить, что где то по пути от вычислителя к контроллеру MBUS произошло искажение пакета. Возможно, неверная распайка сигнала Tx со стороны вычислителя.
Проверили еще раз настройку коммутирующего оборудования. Обнаружили ошибку в настройке моксы - была выставлена четность. Убрали и опрос прошел. Спасибо за помощь.