Если вы собираетесь снимать данные со станков и линий, названия OPC UA, Modbus и MQTT встретятся в первом же разговоре с любым подрядчиком. Их часто сравнивают как конкурентов, но это неверно: они работают на разных уровнях и в одной системе обычно уживаются вместе.

Коротко о каждом

Modbus

Старейший из трёх — появился в конце 1970-х. Работает по схеме «запрос — ответ»: ведущее устройство опрашивает ведомое. Данные лежат в регистрах — пронумерованных ячейках; что именно хранится в регистре 40012, известно только из документации производителя. Бывает последовательным (Modbus RTU, чаще по RS-485) и сетевым (Modbus TCP, порт 502). Встроенной защиты нет: ни шифрования, ни проверки того, кто спрашивает.

OPC UA

Платформонезависимый стандарт промышленного обмена. Главное отличие — у данных есть структура и смысл: узлы с именами, типами и единицами измерения, а не «регистры по номерам». Клиент подписывается на изменения и получает их, а не опрашивает по таймеру. Безопасность встроена: сертификаты, подпись и шифрование сообщений, проверка пользователей. Порт по умолчанию — 4840.

MQTT

Лёгкий протокол «публикация — подписка» через посредника — брокер. Источник публикует сообщения в тему, потребители подписываются на нужные темы. Есть три уровня гарантии доставки (QoS 0, 1, 2), хранение последнего значения и сообщение «последней воли» при обрыве связи. Порты 1883 и 8883 (с шифрованием). О смысле данных MQTT ничего не знает: договорённость о структуре сообщений — отдельная задача (для промышленности есть надстройка Sparkplug B).

Сравнение

ПризнакModbusOPC UAMQTT
Модель обменаОпрос: запрос — ответКлиент — сервер и подпискаПубликация — подписка через брокер
Смысл данныхНет, только номера регистровЕсть: имена, типы, единицыНет, структуру договаривают отдельно
БезопасностьНет встроеннойСертификаты, шифрование, пользователиНастраивается: TLS и учётные записи
Порт по умолчанию502 (TCP)48401883 / 8883
Где встречаетсяСтарые контроллеры, счётчики, частотные преобразователиСовременные контроллеры и системы диспетчеризацииДатчики на слабых каналах, передача с площадки наверх
Слабое местоОпрос по таймеру пропускает короткие события; нет защитыСложнее настраивать: сертификаты, модели данныхБез договорённости о структуре превращается в свалку тем

Что выбирать

Выбор почти никогда не «или-или»: протокол определяется тем, что умеет отдавать само оборудование.

  • Оборудование уже говорит на OPC UA — берите OPC UA: структура и защита готовы.
  • Старый контроллер или прибор отдаёт только Modbus — подключайтесь по Modbus через шлюз или драйвер, но закройте этот сегмент сети от остальных.
  • Много площадок, слабые каналы связи, датчики на батарейках — MQTT как транспорт наверх.
  • Станок не отдаёт данных вообще — сухой контакт или счётчик на выходе, либо терминал оператора. Это тоже съём, просто другого уровня.

Типичная схема в реальном проекте: на уровне цеха — Modbus и OPC UA, на границе цеха — шлюз, который приводит всё к одному формату, дальше — MQTT или очередь сообщений и хранилище временных рядов.

Подводные камни

  1. Modbus без защиты. Любой, кто попал в сегмент сети, может читать и писать регистры. Нужны сегментация сети и запрет записи там, где требуется только чтение.
  2. Порядок байт. 32-битное число в Modbus занимает два регистра, и у разных устройств они идут в разном порядке. Классический источник «странных» значений.
  3. Сертификаты OPC UA. Сервер отказывает клиенту, которому не доверяет, а сертификат имеет срок действия: после его истечения обмен тихо останавливается. Срок стоит внести в календарь.
  4. Опрос против подписки. Опрос раз в секунду пропустит событие короче секунды и нагрузит контроллер. Подписка отдаёт изменения, но требует поддержки устройства.
  5. Метки времени. Если время ставит сборщик, а не источник, события после потери связи «слипаются». Важно, у кого часы и синхронизированы ли они.
  6. Потеря связи. Без буфера на стороне сбора всё, что случилось во время обрыва, теряется навсегда.

Что обычно снимают с одного станка

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

Для учёта простоев и выработки хватает первых четырёх пунктов. Остальное нужно для диагностики и прогнозирования отказов и добавляется позже, когда базовый учёт уже работает.

Как это складывается в систему

Оборудование → сборщик (шлюз с буфером и метками времени) → брокер или очередь → хранилище временных рядов → расчёт и отображение. Каждое звено можно заменить, не трогая остальные, поэтому протокол станка не определяет, какой будет вся система. Что получится посчитать из снятых данных — например, простои и общую эффективность, — разобрано в материале про OEE.

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

Что быстрее: OPC UA, Modbus или MQTT?

Скорость определяется сетью, частотой опроса и нагрузкой на устройство, а не названием протокола. Для мониторинга — простои, выработка, параметры раз в секунду — скорости хватает у всех трёх.

Можно ли подключить Modbus-устройство к системе на OPC UA?

Да: через шлюз или OPC UA-сервер с драйвером Modbus. Для остальной системы устройство выглядит как обычный узел OPC UA, а особенности Modbus остаются внутри шлюза.

Нужен ли брокер MQTT внутри цеха?

Если источников и потребителей много и их нужно развязать — да. Для одного станка и одной системы он избыточен: проще напрямую.

MQTT небезопасен?

По умолчанию он работает без шифрования и проверки пользователей — их включают настройкой: TLS, учётные записи, права на темы. Безопасность здесь вопрос настройки, а не самого протокола.