Инженерные кейсы

Платформа сбора промышленных PLC-данных

Технологический стек

  • Python
  • Mitsubishi MC/SLMP
  • PLC
  • TCP/UDP
  • SQLite
  • ClickHouse
  • Grafana
  • FastAPI
  • systemd
  • Docker

Задача

Промышленное оборудование отдавало тысячи низкоуровневых PLC-адресов, но надёжной истории для аналитики и ML не было. Сбор должен был оставаться строго read-only и выдерживать нестабильность промышленной сети.

Что я сделал

  • Реализовал edge-коллекторы для нескольких станков с Mitsubishi PLC и batch-чтением MC/SLMP по TCP и UDP.
  • Разделил PLC poller и пакетную запись в ClickHouse, добавил watchdog/systemd для восстановления долгоживущих процессов.
  • Собрал Grafana-дашборды и read-only слой мониторинга на FastAPI.

Архитектура

PLC → edge collector → buffered batches → ClickHouse → Grafana / monitoring API / ML datasets

Для каждого станка использовался собственный YAML-каталог сигналов, а polling, валидация и хранение оставались общими. Там, где это требовалось, локальный буфер отделял сбор от временных сбоев вышестоящих компонентов.

Масштаб

Отдельные коллекторы охватывали 738 и 1 186 сигналов, а более крупный каталог — тысячи PLC-адресов на нескольких производственных станках.

Результат

  • Создан переиспользуемый OT-to-data пайплайн без управляющих команд оборудованию.
  • История работы станков стала доступна для мониторинга, исследований и ML-экспериментов.