Не хочет опрашиваться datakom D300

Недавно сдох DKG309, который рулил генератором и общался с WB через китайскую коробочку RS232(modbudRTU) → Modbus TCP. Заменил на более свежий D300 с ethernet и получил “тыкву”…
Лог:
Aug 20 07:47:01 wirenboard-AC3SO46W CRON[15219]: pam_unix(cron:session): session opened for user root by (uid=0)
Aug 20 07:47:01 wirenboard-AC3SO46W CRON[15223]: (root) CMD (/usr/share/wb-daemon-watchdogs/check_confed.sh 2>&1 | logger -t wb-daemon-watchdogs)
Aug 20 07:47:01 wirenboard-AC3SO46W wb-mqtt-serial[6343]: WARNING: [modbus] failed to read 37 holding(s) @ 10340 of device modbus-tcp:1: Serial protocol error: malformed response: Wrong MBAP length value: 0
Aug 20 07:47:02 wirenboard-AC3SO46W wb-mqtt-serial[6343]: WARNING: [modbus] failed to read 100 holding(s) @ 10240 of device modbus-tcp:1: Serial protocol error: malformed response: Wrong MBAP length value: 0
Aug 20 07:47:02 wirenboard-AC3SO46W wb-mqtt-serial[6343]: WARNING: [modbus] failed to read 23 holding(s) @ 10604 of device modbus-tcp:1: Serial protocol error: malformed response: Can’t read full MBAP
Aug 20 07:47:02 wirenboard-AC3SO46W wb-mqtt-serial[6343]: WARNING: [modbus] Transaction id mismatch
Aug 20 07:47:02 wirenboard-AC3SO46W wb-mqtt-serial[6343]: WARNING: [modbus] failed to read 100 holding(s) @ 10240 of device modbus-tcp:1: Serial protocol error: malformed response: Can’t read full MBAP
Aug 20 07:47:02 wirenboard-AC3SO46W wb-mqtt-serial[6343]: WARNING: [modbus] Transaction id mismatch

Обратите внимание на адресацию регистров. У меня на WB много разного, но чтоб адрес регистра левым десятком залезал на код запроса…
Что интересно, оно время от времени умудряется считать регистры. Не все естественно, не за один раз :slight_smile:
Что я не так делаю?
З.Ы. Пытался объявить Modbus ОВЕР TCP. Шаманство не сработало.

Здравствуйте!

Modbus over TCP и Modbus TCP - разные протоколы.

Порт RS-232 на новом контроллере D300 корректно настроен (адрес контроллера, протокол, скорость, четность, стопбиты)? Утилитой modbus_client получается считать регистры?

Добрый день.
Контроллер с D300 в одном сегменте сети?
вообще - надо включить debug для serial и посмотреть на пакеты. Ну и какой-то запрос - возвращается удачно, хелательно кусок с ним. Некоторые китайцы не любят частого опроса, можно поставить интервал побольше.

Не, “это другое”. over - это тот же RTU, просто упакованный в upd фрейм.

В разных подсетях. Но раньше проблем не было с предшественником. Это не китаец, а турок. Важное различие, т.к. турки переводят смешнее китайцев на Русский.
Попробую добраться до дебага сегодня или вообще предложу доступ.
Попытки запретить читать подряд, притормозить или вставить паузы меняют только ритм цветомузыки в страничке с MQTT.

На D300 прям ethernet втыкается их, проприетарный. Есть у меня на него подозрения. RS232 был на старом контроллере, поэтому при нем жил ещё HF5111, который исполнял RTU → TCP без проблем.
Я использую для “пощекотать регистры” CASModbusScanner, у которого получается читать через раз оттуда. Через раз сообщает, что не может открыть порт…

Хм. Если еще и другой софт так же себя ведет - тут надо действительно смотреть отладку - что туда отправляем и что получаем.
Сама сеть-то (на всякий случай) живая, пингуетс, без потерь?

Простите, закопался. Чуть позже выложу сниф, или “что было”.

Чтоб закрыть тему: Датаком к сожалению, прекратил стараться. Инженеры - турки ответили что-то типа “ну ты прям размечтался, чтоб у тебя в контроллере i7 стоял?”
В общем, бороться не за что. Перешел на китайца и пока доволен.

1 лайк

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.