Дело о длинном тире
Невероятные приключения здравого смысла среди борцов с ИИ
Сатирическая история о творчестве, бдительности и людях, которые точно знают, как сделать лучше.
Осторожно: может пострадать ваш здравый смысл.

mbSCADA: переписал Modbus Poll на Rust, потому что надоело

Коротко: это десктоп-приложение для опроса Modbus-устройств. TCP, RTU, ASCII, RTU-over-TCP. Умеет импортировать .mbp/.mbw от настоящего Modbus Poll — причём байт-в-байт: открыл файл, поменял алиас, сохранил, остальное не тронуто. Это, пожалуй, самая нудная и самая полезная часть. Формат .mbp нигде не описан, так что раскладку пришлось восстанавливать по байтам самих файлов: сгенерировал их в Modbus Poll 10.5, сравнил, понял, где заголовок, где записи строк, где хвост. Код Modbus Poll при этом не открывался ни разу — только его выходные файлы, то есть данные, а не реализация. Clean-room в том смысле, что спецификация восстановлена по наблюдаемому поведению, а не по исходникам. Про сам протокол и говорить нечего — Modbus публичный.
Дальше уже вкусовое. На каждую строку можно навесить дерево правил на 32 ветки (у оригинала две), с динамическим текстом вроде 0 → Закрыт, 1 → Открыт. Есть спарклайны прямо в таблице, алармы с панелью и подтверждением, мимик-схемы, окно «смотрибельных» параметров, вычисляемые теги ({T2} - {T1} и pow/min), CSV-архив. Внутри ещё симулятор слейва — можно поднять TCP/RTU-устройство и опрашивать его же, или повесить на реальный USB-RS485. Удобно, когда железо под рукой только в пятницу.
Стек: Rust + Tauri 2, UI на ванильном JS. Один бинарник ~6 МБ, без телеметрии, всё локально. 68 тестов на движок/протокол/формат, движок тестируется без GUI.
Что честно стоит знать:
ASCII-транспорты есть и покрыты юнит-тестами, но на живых приборах я их гонял меньше, чем TCP/RTU.
.mbp writer (сохранить как Modbus Poll) пока не в UI — round-trip слой в движке готов, кнопки нет.
Полного покрытия «все приборы всех производителей» не обещаю, это не то приложение.
Лицензия MIT, релизы под Win/Linux/macOS собираются в CI с тега. Если у вас лежит папка со старыми .mbp и хочется их открыть без установки Modbus Poll — это, наверное, самый простой сценарий попробовать.
Репозиторий: https://github.com/kostyk348/mbscada-rs
Буду рад баг-репортам, особенно по ASCII и по странным .mbp — корпус у меня небольшой, чем больше реальных файлов, тем крепче парсер.

Невероятные приключения здравого смысла среди борцов с ИИ
Сатирическая история о творчестве, бдительности и людях, которые точно знают, как сделать лучше.
Осторожно: может пострадать ваш здравый смысл.
