← Блог

«Русло»: как строится IIoT-платформа для закрытой сети предприятия

Заказчики промышленных систем задают один и тот же вопрос: «А вы можете без облака?». В цехе интернета нет, а иногда его нельзя подключать по требованиям безопасности. Из этого вопроса выросла «Русло» — IIoT-платформа, которая собирает телеметрию с оборудования, хранит её и показывает инженерам. Расскажу, какие решения лежат в основе и почему они такие.

Какую задачу решает платформа

На производстве десятки станков и датчиков, и каждый говорит на своём протоколе. Нужно собрать данные, не потерять их, показать в понятном виде и вовремя предупредить, что показатель вышел за порог. Всё это должно работать внутри закрытой сети предприятия, без облачных зависимостей и сторонних лицензий.

Четыре канала приёма данных

«Русло» принимает телеметрию по четырём независимым каналам:

ПротоколГде встречается
MQTTдатчики и шлюзы, публикующие данные сами
HTTPинтеграции и скрипты
Modbus TCPконтроллеры и приборы
OPC UAсовременные системы автоматизации

Здесь важна деталь: платформа использует метку времени источника, а не время опроса. Если шлюз накопил данные из-за сбоя связи и отправил их пачкой, они лягут на график в тот момент, когда реально были измерены. Для анализа технологического процесса это принципиально: иначе кривые поплывут, а выводы окажутся неверными.

Предприятие как дерево

Данные организованы деревом «завод → цех → участок → станок → показатель». Это не просто удобная навигация. Доступ ограничивается по ветке: мастер участка видит свой участок, начальник цеха — цех, директор — всё. Права строятся на структуре предприятия, а не на списке разрешённых экранов.

Хранение временных рядов в ClickHouse

Телеметрия — это огромный поток однотипных записей. Обычная реляционная база на таком потоке задыхается, поэтому для временных рядов я выбрал ClickHouse. Платформа:

  • автоматически считает минутные и часовые агрегаты, чтобы графики за месяц строились мгновенно;
  • использует многоуровневое хранение: свежие данные хранятся подробно, старые — в агрегированном виде;
  • не заставляет инженера думать о том, откуда берётся тот или иной график.

Для остальных данных платформы (пользователи, права, настройки) в стеке стоит Postgres. Каждое хранилище отвечает за то, в чём оно сильно.

Мнемосхемы, уведомления и расширения

Интерфейс на Vue 3 дополняют:

  • 2.5D-мнемосхемы цеха — наглядная схема, где видно, какой агрегат в каком состоянии;
  • уведомления по порогам с журналом доставки: можно проверить, что сообщение ушло и кому;
  • модули расширений от сторонних разработчиков. Они устанавливаются как пакеты и появляются в интерфейсе без пересборки платформы.

Работа без интернета

Закрытая сеть — не ограничение, а проектное требование. Поэтому в «Русле»:

  1. нет обращений к облачным сервисам во время работы;
  2. нет сторонних лицензий и доступа в интернет;
  3. весь стек разворачивается на серверах предприятия.

Платформа написана на Rust. Для такой системы мне важны три свойства языка: безопасность работы с памятью, отсутствие сборщика мусора с неожиданными паузами и возможность собрать самодостаточный артефакт. Подробнее, почему безопасность закладывается на этапе проектирования, — в статье Безопасная разработка ПО: как защита закладывается с первого дня.

Как проверять такую платформу

Платформа, которая собирает телеметрию, должна быть проверена на потерях и задержках. Для этого я использую отдельный стенд — «Исток». Он генерирует поток данных, проверяет целостность по SHA-256 и измеряет задержку. Так нагрузочное тестирование становится частью разработки, а не формальностью перед сдачей. Как вообще строится проверка перед релизом, я описал в статье Тестирование и приёмка ПО: как убедиться, что система работает до релиза.

Нужна похожая система?

Если вам нужна платформа сбора и анализа данных для производства, а также любой продукт с жёсткими требованиями к надёжности и изоляции сети, давайте обсудим: Telegram @w1shmaster. Начнём с Архитектура ПО: проектирование и планирование до первой строки кода, потому что именно оно определяет, сколько система проживёт.

← Все посты