RUBICON engineering center

MQTT-клиент на ПЛК

Синонимы: MQTT, MQTT клиент, MQTT publisher, ПЛК MQTT
MQTT-клиент в прошивке ПЛК позволяет контроллеру публиковать данные напрямую в облачные платформы (AWS IoT, Azure IoT, Яндекс IoT, самохостинг Mosquitto) без промежуточных шлюзов. Основа IIoT и дистанционного мониторинга инженерных систем.

MQTT (Message Queuing Telemetry Transport) — лёгкий Publish/Subscribe протокол поверх TCP, созданный для IoT. С середины 2010-х встраивается в ПЛК как клиент — контроллер может самостоятельно отправлять данные в облако или на центральный MQTT-брокер.

Как работает MQTT

  1. Брокер (сервер, broker) — централизованный сервис, принимает публикации и рассылает подписчикам
  2. Клиент-издатель (publisher) — публикует сообщения на определённые топики (темы)
  3. Клиент-подписчик (subscriber) — подписан на топики, получает все новые сообщения
  4. Темы (topics) — иерархические строки типа rubicon/itp/moscow-01/temperature/supply
  5. QoS (Quality of Service) — 0 (at most once), 1 (at least once), 2 (exactly once)
  6. Retained — последнее опубликованное сообщение сохраняется у брокера, новый подписчик получает его сразу
  7. LWT (Last Will and Testament) — сообщение которое брокер опубликует если клиент внезапно отключится

Применение в автоматике инженерных систем

  • Удалённый мониторинг объектов — ПЛК публикует состояние ИТП/ПВУ в облако, оператор видит в приложении
  • Централизация данных сети объектов — 20 ИТП в сети → один MQTT-брокер → одна SCADA/BI-дашборд
  • Интеграция с умным домом / BMS верхнего уровня — ПЛК публикует в iQ3, Google Home, Яндекс Умный Дом
  • Push-уведомления об авариях — ПЛК публикует в тему alarms/*, Telegram-бот подписан и шлёт сообщения
  • Долговременный архив — брокер → Node-RED → PostgreSQL/InfluxDB

Поддержка в ПЛК

Siemens S7-1500

  • MQTT Client через TIA Portal V18 (2023) — встроенные блоки MQTT_PUBLISH, MQTT_SUBSCRIBE
  • Поддержка TLS, QoS 0/1/2, Retained, LWT
  • Для V17 и ниже — через библиотеки TIA Add-Ons

Beckhoff TwinCAT

  • Tc3_IotBase — библиотека MQTT, HTTP, OPC UA Cloud Connector
  • Поддержка AWS IoT, Azure IoT, Mosquitto, HiveMQ
  • Публикация/подписка прямо из PLC-кода

CODESYS

  • CODESYS MQTT Client SL — лицензируемая библиотека (от 3S-Smart)
  • Поддержка в ОВЕН ПЛК210 (отдельно по лицензии)
  • Для Wago PFC200 и Phoenix ILC — встроенная

Rockwell CompactLogix

  • MQTT через AOI (Add-On Instructions) от сообщества или Factory Talk Smart Object

Segnetics Pixel 2500

  • Встроенный MQTT Client в прошивке с 2023 года
  • Публикация в облачную платформу Segnetics-online

ОВЕН ПЛК210

  • CODESYS 3.5 + CODESYS MQTT Client (лицензия ~15 000 руб)

Пример структуры топиков для ИТП

**` rubicon/ itp-moscow-01/ status/ online # 1 / 0, retained + LWT firmware # версия прошивки sensors/ t-supply # температура подачи t-return # температура обратки p-supply # давление подачи flow # расход теплоносителя pumps/ p1/status # on/off p1/current # ток двигателя p2/status p2/current valves/ three-way/position # 0-100% alarms/ overheat # событие low-pressure commands/ # для управления с облака p1/start p1/stop three-way/setpoint **`

Безопасность

  • TLS 1.2+ обязательно для публичных брокеров
  • Аутентификация — username/password или client certificate
  • ACL на брокере — ограничение топиков по клиентам
  • Firewall — исходящее подключение только на порт брокера (8883 для TLS)
  • Не публиковать чувствительные данные без шифрования — пароли, токены, персональные данные

Отличия от OPC UA

| Параметр | MQTT | OPC UA | |----------|------|--------| | Модель | Publish/Subscribe (через брокера) | Client/Server (прямое) + PubSub | | Начальная настройка | Простая | Сложнее | | Browse namespace | Нет | Есть | | Типизация данных | Нет (JSON/binary payload) | Строгая | | Безопасность | TLS + ACL | TLS + сертификаты + аудит | | Задержка | 10–100 мс | 1–50 мс | | Через firewall | Легко (одно исходящее) | Сложнее (входящее на ПЛК) | | IoT и облако | Отлично | Хуже | | Промышленная автоматика | Хуже | Отлично |

Правило: MQTT для облака и дистанционного мониторинга, OPC UA для производственной SCADA.

Пример применения в проекте РУБИКОНа

Диспетчеризация сети ИТП в разных городах:

  1. На каждом объекте — ОВЕН ПЛК210 с CODESYS + MQTT Client
  2. Центральный MQTT-брокер — EMQ X на VPS в Москве
  3. Все ПЛК публикуют в облако 20 ключевых переменных каждые 5 секунд + при изменении
  4. Node-RED обрабатывает поток и пишет в InfluxDB (TSDB для метрик)
  5. Grafana — дашборды со всеми объектами
  6. Telegram-бот подписан на rubicon/+/alarms/# и шлёт уведомления дежурному
  7. При аварии — оператор видит в Grafana за 1–5 секунд

Такая архитектура дешевле классической SCADA и легче масштабируется (добавить новый ИТП = настроить ещё один ПЛК + ветка топиков).

Готовые брокеры

  • Mosquitto — open-source, самохостинг, простой
  • EMQ X — open-source + enterprise, высокая нагрузка (миллионы клиентов)
  • HiveMQ — коммерческий, корпоративный
  • AWS IoT Core — облачный от Amazon
  • Azure IoT Hub — облачный от Microsoft
  • Яндекс IoT Core — облачный российский

Для РФ в 2026 году актуальны самохостинг Mosquitto / EMQ X на российских VPS или Яндекс IoT Core.

Частые вопросы

  • MQTT или OPC UA — что выбрать для мониторинга сети ИТП?
    MQTT — лучше для распределённой сети объектов: лёгкий, работает через firewall (ПЛК делает исходящее подключение, не нужны публичные IP объектов), через брокер легко подключать новые объекты и клиентов. OPC UA — для централизованных АСУ ТП одного объекта или группы на одной площадке. Для сети 20+ ИТП в разных городах — однозначно MQTT. Внутри одного крупного объекта (бизнес-центра, завода) с десятками ПЛК — OPC UA. Можно комбинировать: внутри объекта OPC UA, в облако из главного ПЛК — MQTT.
  • Какой QoS выбрать для публикации данных мониторинга?
    Для простых метрик (температура, давление каждые 5 с) — QoS 0 (at most once): если одно сообщение потерялось — следующее придёт через 5 с, не критично, зато минимум нагрузки. Для событий и аварий — QoS 1 (at least once): гарантируется что сообщение дойдёт хотя бы раз, возможны дубли (приложение должно их фильтровать по event ID). QoS 2 (exactly once) — редко оправдан в автоматике, задержки выше, а защита от дублей обычно и так есть на приложенческом уровне. Retained-флаг — для статусных топиков (online/offline, firmware version) чтобы новый подписчик сразу получал текущее состояние.

Источники

  1. OASIS MQTT 5.0 Specification — OASIS
  2. ISO/IEC 20922:2016 — MQTT v3.1.1 — ISO
Автор: Sergey
Опубликовано: 28.10.2026
Обновлено: 27.10.2026
MQTT-клиент на ПЛК — IoT и облачный мониторинг | РУБИКОН