← ALB News · curated headline

mbSCADA — Modbus Poll на Rust: живые таблицы, аварии, вычисляемые тэги и один бинарник на ~6 МБ

Habr · RU · Programming · 11/10/2026, 6:24:29 AM

Если вы хоть раз отлаживали датчик давления на насосной станции или читали регистры частотника через преобразователь USB-RS485, то почти наверняка держали в руках Modbus Poll. Удобная вещь: быстрый опрос регистров, наглядные таблицы. Но это Windows-only, это платно, и это всё-таки только опросчик - без наглядных схем для удобства пусконаладки и тестирования. Мне захотелось то же самое, но кроссплатформенное, локальное и с возможностью собрать себе маленький операторский экран: цветные аварийные строки, гейджи, окно закреплённых параметров, вычисляемые тэги. Так появился mbSCADA - open-source проект на чистом Rust с UI на Tauri 2 (в дальнейшем переедем на egui, чтобы выглядело более нативно). Проект пишется с помощью ИИ, поскольку я не прогер (каюсь), так что моих познаний в С и Python а так же в языках PLC будет недостаточно дабы кодить это собственными силами, однако я точно знаю что требуется мне от инструмента. Это clean-room реализация: мы не читали исходники Modbus Poll, но формат его конфигурационных файлов .mbp/.mbw поддерживаем byte-exact, чтобы ваши наработанные проекты импортировались без боли. Ниже — короткий тур по тому, что получилось, как это устроено внутри и где взять готовые сборки. Зачем ещё один опросчик В 80% бытовых задач интеграции нужен не монстр вроде полноценной SCADA, а «Modbus Poll с плюшками» - опросить десяток устройств, покрасить аварии, построить экран для оператора и выгрузить архив в CSV, который потом откроют в чём угодно. При этом требования к инструменту жёстче, чем кажется: он должен запускаться без установки (портабельные версии удобны и неприхотливы к устройству пользователя), не лезть в сеть (никакой телеметрии и облаков — просто нет) а еще собственно полноценно поддерживать Modbus как TCP так и RTU иначе вся затея не имеет смысла. Отсюда и формат проекта: один бинарник ~6 МБ, всё локально, проект — файл рядом. И да,проект принципиально открытый чтобы любой желающий мог пользоваться и при желании вносить свой вклад, лицензия - MIT. Собирается одним cargo build либо устанавливается через установщик / открывается AppImage. Совместимость с Modbus Poll: byte-exact импорт Поскольку на моем месте работы накопился большой багаж файлов Modbus Poll, то во избежании переписывания всего этого добра - работа с «родными» файлами Modbus Poll стала обязательным требованием. В репозитории живёт отдельный крейт mb-format, который парсит .mbp и .mbw и умеет обратную операцию: write(parse(bytes)) == bytes. Это свойство покрыто тестами и проверено на реальных файлах от Modbus Poll 10.5 — раундтрип байт в байт совпадает с оригиналом. Сохранённые mbSCADA-проекты остаются совместимыми с оригиналом — можно готовить конфигурацию на ноутбуке с Linux, а отдавать коллегам, которые продолжают жить в Modbus Poll. Опросы читаются все штатные: 01/02/03/04 (coil/discrete/input/holding), записи 05/06/0F/10. Поддержаны разрядности и порядки слов - включая u16_swapped (перестановка слов в 32-битных значениях) Читать далее

Continue to Habr →

You are being forwarded in 6s — stay on this page