StarLet Squad

Главная / mbus-gw-t2r

экосистема Промышленность

mbus-gw-t2r

Шлюз MODBUS TCP - RTU для линий RS-485 и RS-232: несколько приборов на линии, несколько TCP-портов на линию, прозрачный режим RAW.

ВерсияV.01-01 (тег V01.01.0, пакеты 1.1.0)
СтатусВыпущен, развивается
ПлатформыLinux: amd64, arm64, mipsel, mips64el (.deb); OpenWrt 24.10 и 25.12 (.ipk, .apk); платы NaPi (RK3568J, RK3308)
ЛицензияApache License 2.0
Для когоИнженерам АСУ ТП, наладчикам приборов MODBUS и тем, кто учится промышленному программированию: код можно прочитать целиком за вечер.

Что это

Шлюз принимает запросы MODBUS TCP и передаёт их приборам на последовательной линии (MODBUS RTU). Конец кадра определяется честной паузой t3.5 по спецификации, ответ проверяется по CRC16, длине и соответствию запросу. Мусор на линии отбрасывается: клиент получает исключение MODBUS, линия очищается, следующий запрос обслуживается как обычно.

Один процесс, всё ожидание - через poll(), без фоновых таймеров: простаивающий шлюз почти не тратит процессор. Несколько TCP-портов на одну линию, несколько линий на процесс, управление направлением RS-485 средствами ядра, псевдоприбор Time Stamp, режим RAW для прозрачной передачи байтов линии по TCP. Образ около 100 КБ и ничего, кроме libc. Каждая ошибка - сообщение с кодом (%T2R-E-CRC16ERR, %T2R-E-NOANSWER) и причиной.

С V.01-01 в комплекте утилита mbus-ctl: SHOW CONNECTIONS (клиенты и счётчики запросов, ответов, ошибок и байтов, /CONTINUOUS - обновление на экране), SHOW LINES, SHOW GATEWAY, RESET CONNECTIONS (разорвать сессию клиента), RESTART GATEWAY (проверить файл настроек и перезапустить шлюз с тем же PID). Работает через локальный Unix-сокет по двоичному протоколу TLV (StarLet AVProto), в сеть ничего не открывает; команды можно сокращать, как в DCL: sho conn /cont, restart gw.

Зачем

Альтернатива mbusd там, где важны эффективность на маленьком устройстве и понятная диагностика. Проект предлагается и как учебный: дисциплина последовательной линии, циклы на poll(), кольцевые буферы, проверка конфигурации и сообщения в стиле DEC - всё в настоящем рабочем инструменте. Разрабатывается и проверяется командой NaPi Lab на промышленных одноплатных компьютерах NaPi.

Quick start Установка готового пакета

sudo apt install ./mbusgw-t2r_1.1.0-1_arm64.deb                   # Debian, Ubuntu
sudo nano /opt/mbusgw-t2r/etc/modbus-t2r_settings.conf            # линии и TCP-порты
sudo systemctl enable --now mbusgw-t2r
sudo mbus-ctl sho conn /cont                                      # кто подключён, счётчики

opkg install ./mbusgw-t2r_1.1.0-r1_mipsel_24kc.ipk                  # OpenWrt 24.10
apk add --allow-untrusted ./mbusgw-t2r_1.1.0-r1_mipsel_24kc.apk     # OpenWrt 25.12

Источник: mbus-gw-t2r/README.md; руководство пользователя - docs/UserGuide_RU.md и PDF в Releases

Скачать

Пакеты .deb (amd64, arm64, mipsel, mips64el), OpenWrt .ipk и .apk (mips, mipsel, ARM, x86_64), исходники и руководства в PDF - в Releases на GitHub.

Исходники и ссылки