OPC UA · IEC 62541 · Информационная модель · Безопасность · Сеансы · 10 мин чтения

Архитектура OPC UA: информационная модель, безопасность, сеансы и транспорт

OPC UA (IEC 62541) — это 13-частный стандарт, определяющий платформонезависимую сервис-ориентированную архитектуру для промышленной и строительной автоматизации связи. В отличие от своего предшественника OPC Classic (который был только для Windows COM/DCOM), OPC UA работает на любой ОС, включает полную модель безопасности и предоставляет унифицированную информационную модель, делающую каждый сервер самодокументируемым — устраняя необходимость во внешних словарях данных при интеграции BMS, SCADA и IoT-платформ.

Структура стандарта IEC 62541

IEC 62541 состоит из 13 пронумерованных частей. Части 1–7 определяют базовую архитектуру; части 8–14 охватывают отображения, безопасность и профили. Для интеграторов автоматизации зданий наиболее важными являются части 1 (Концепции), 3 (Модель адресного пространства), 4 (Сервисы), 6 (Отображения — кодирование и транспорт), 7 (Профили) и сопутствующая спецификация IEC 62541-100 (OPC UA для зданий).

ЧастьНазваниеАктуальность
IEC 62541-1Концепции и обзорБазовая архитектура, модель сервисов, концепция информационной модели
IEC 62541-3Модель адресного пространстваТипы NodeClass, ссылки, атрибуты — основа модели данных
IEC 62541-4СервисыНаборы сервисов Read, Write, Browse, Subscribe, Call — все API сервера
IEC 62541-6СопоставленияДвоичное кодирование (UA Binary), XML-кодирование, транспорт opc.tcp, HTTPS, WebSockets
IEC 62541-7ПрофилиПрофили сервера, клиента, транспорта для проверки соответствия
IEC 62541-12Обнаружение и глобальные службыЛокальный сервер обнаружения (LDS), Глобальный сервер обнаружения (GDS) для управления сертификатами
IEC 62541-100OPC UA для зданийИнформационная модель на основе IFC для пространств, зон, ОВиК, учета энергии

Информационная модель: типы NodeClass и ссылки

Каждый фрагмент данных на сервере OPC UA представлен как Узел в адресном пространстве. Узлы имеют атрибут NodeClass, определяющий их роль. Узлы связаны друг с другом типизированными Ссылками — например, HasComponent, HasProperty, Organizes, HasSubtype. Это создает направленный граф, который клиенты могут просматривать для обнаружения содержимого сервера без предварительного знания структуры данных.

NodeClassНазначениеПример в BMS
ОбъектКонтейнер, группирующий связанные узлы; не имеет собственного значенияAHU_01 — объект, группирующий все переменные AHU
ПеременнаяСодержит типизированное значение; доступна для чтения и, опционально, для записиSupplyAirTemp (Float, °C), FanSpeed (UInt16, об/мин)
МетодВызываемая функция; входные и выходные аргументыResetAlarm(), SetOperatingMode(режим: Int32)
ПредставлениеИменованное подмножество адресного пространства для фильтрованного просмотраEnergyMeteringView, показывающая только узлы с кВт·ч
Тип данныхОпределяет скалярный или структурированный тип, используемый переменнымиEnumHvacMode {Auto=0, Heating=1, Cooling=2}
Тип объектаШаблон для узлов Object (как определение класса)HVACUnitType со стандартными компонентами
Тип переменнойШаблон для узлов Variable с атрибутами по умолчаниюAnalogItemType со свойством EngineeringUnits
Тип ссылкиОпределяет семантику ссылки между узламиHasComponent, HasProperty, Organizes

Адресное пространство: пространства имен и обозреваемое дерево

Адресное пространство структурировано как обозреваемое дерево. Каждый узел идентифицируется NodeId, состоящим из индекса пространства имен и идентификатора (числовой, строковый или GUID). Пространство имен 0 (ns=0) всегда является стандартным пространством имен OPC UA, содержащим встроенные типы и стандартные узлы. Пространства имен 1+ назначаются сервером для содержимого, специфичного для поставщика или приложения. Клиенты обнаруживают таблицу пространств имен через вызов сервиса GetNamespaceArray.

Адресное пространство OPC UA — пример BMS

Objects (ns=0;i=85)  ← OPC UA standard root
├── Server (ns=0;i=2253)  ← always present, server diagnostics
└── Building_01 (ns=1;s=Building_01)  ← application namespace
    ├── Floor_02 (ns=1;s=Building_01/Floor_02)
    │   ├── AHU_01 (ns=1;s=AHU_01)  [Object]
    │   │   ├── SupplyAirTemperature (ns=1;s=AHU_01.SAT)  [Variable, Float]
    │   │   │   ├── EngineeringUnits  [Property: "°C"]
    │   │   │   ├── EURange  [Property: Low=0, High=60]
    │   │   │   └── StatusCode  [Property: Good/Bad/Uncertain]
    │   │   ├── FanSpeed (ns=1;s=AHU_01.FanRPM)  [Variable, UInt16]
    │   │   ├── DamperPosition (ns=1;s=AHU_01.Damper)  [Variable, Byte, 0–100%]
    │   │   └── ResetAlarm (ns=1;s=AHU_01.ResetAlarm)  [Method]
    │   └── VAV_Zone_2A (ns=1;s=VAV_2A)  [Object]
    │       ├── RoomTemperature (ns=1;s=VAV_2A.RoomTemp)  [Variable, Float]
    │       └── Setpoint (ns=1;s=VAV_2A.SP)  [Variable, Float, writable]
    └── Meters (ns=1;s=Meters)
        └── Main_kWh (ns=1;s=Meter.kWh)  [Variable, Double]

Клиенты перемещаются от корня Objects с помощью сервиса Browse, следуя по HierarchicalReferences (HasComponent, Organizes, HasProperty) для обнаружения узлов. Сервис TranslateBrowsePathsToNodeIds позволяет клиентам перейти непосредственно к известному пути, не обходя все дерево — полезно для производительного опроса известных переменных.

Варианты транспорта

OPC UA определяет три транспортных привязки. Выбор влияет на задержку, прохождение через межсетевые экраны и накладные расходы протокола. OPC UA Binary по TCP является стандартом для интеграции BMS на уровне завода; HTTPS и WebSockets используются для облачных или доступных через браузер интерфейсов.

ТранспортПрефикс URIПорт по умолчаниюНакладные расходыПримечания
OPC UA TCPopc.tcp://4840Наименьшие — двоичная кадровая структураЛучший для заводского уровня; постоянное TCP-соединение; не дружественен к межсетевым экранам
OPC UA HTTPSopc.https://443Средние — HTTP/1.1 + TLSДружественен к межсетевым экранам; может проходить через прокси; более высокая задержка на запрос
OPC UA WebSocketsopc.wss://443Низкие — кадровая структура WebSocketСовместим с браузером; постоянное соединение; используется для веб-SCADA и облачных шлюзов

Рекомендация для производственного уровня: Всегда используйте opc.tcp:// в локальной сети здания или OT VLAN. Постоянное TCP-соединение устраняет накладные расходы на TLS-рукопожатие для каждого запроса и обеспечивает минимальную задержку подписки на уведомления. HTTPS оставляйте для межсайтовых или облачных интеграций, где порт брандмауэра 4840 не может быть открыт.

Режимы безопасности и политики безопасности

Безопасность OPC UA согласовывается на уровне Secure Channel до обмена любыми прикладными сообщениями. Сервер публикует поддерживаемые EndpointDescriptions (комбинации MessageSecurityMode и SecurityPolicyUri). Клиент выбирает одну из них при открытии соединения. Никогда не используйте None в производственной среде — все данные передаются в открытом виде без защиты целостности.

MessageSecurityModeЗащитаВариант использования
NoneБез подписи, без шифрованияТолько лаборатория / разработка — никогда в производстве
SignЦелостность HMAC сообщений; без шифрования полезной нагрузкиКритичная к производительности SCADA в доверенной закрытой LAN
SignAndEncryptHMAC + AES шифрование всех полезных нагрузок сообщенийСтандарт для всех BMS и облачных интеграций

SecurityPolicyUri выбирает криптографические алгоритмы. Текущие рекомендуемые политики (по состоянию на IEC 62541-7:2022):

SecurityPolicyUriАсимметричный (обмен ключами)Симметричный (данные)Статус
Basic128Rsa15RSA-PKCS1-v1.5 / 1024-битAES-128-CBCУстарело — не использовать
Basic256RSA-OAEP / 1024-битAES-256-CBCУстарело — не использовать
Basic256Sha256RSA-OAEP / 2048-бит + SHA-256AES-256-CBC + SHA-256 HMACАктуально — широко поддерживается
Aes128Sha256RsaOaepRSA-OAEP / 2048-бит + SHA-256AES-128-CBC + SHA-256 HMACАктуально — меньшая нагрузка на ЦП
Aes256Sha256RsaPssRSA-PSS / 2048-бит + SHA-256AES-256-CBC + SHA-256 HMACРекомендуется — самый надежный, используйте где поддерживается

Уведомление об устаревании: Basic128Rsa15 и Basic256 используют 1024-битные ключи RSA и SHA-1, которые считаются криптографически слабыми. IEC 62541-7:2022 помечает их как устаревшие. Kepware KEPServerEX 6.x и Siemens DESIGO CC поддерживают Basic256Sha256 и Aes256Sha256RsaPss. Отключите устаревшие политики в конфигурации рабочего сервера для предотвращения атак понижения уровня безопасности.

Методы аутентификации

Аутентификация выполняется на уровне сеанса (выше защищенного канала). OPC UA определяет три типа токенов идентификации ActivateSession. Аутентификация на основе сертификатов является наиболее безопасной и требуется для промышленных стандартов безопасности, таких как IEC 62443-3-3 Уровень безопасности 2.

Тип токенаОписаниеРекомендация
AnonymousIdentityTokenНет учетных данных — любой клиент может создать сессиюОтключить в продакшене; допустимо только для публичных панелей мониторинга только для чтения
UserNameIdentityTokenИмя пользователя и пароль; пароль шифруется с использованием открытого ключа сервераДопустимо для доступа оператора; использовать с транспортом Sign+Encrypt
X509IdentityTokenКлиент предъявляет действительный сертификат X.509; сервер проверяет по списку доверенныхТребуется для интеграции «машина-машина» и соответствия IEC 62443 SL-2

Сессии и подписки

Сессия устанавливается поверх защищенного канала после аутентификации. Сессии имеют RequestedSessionTimeout (обычно 60–3600 секунд); если клиент не отправляет keep-alive до истечения тайм-аута, сервер удаляет сессию и все ее подписки. Клиенты должны обрабатывать переподключение с восстановлением сессии или передачей.

Подписки — основной механизм эффективного мониторинга данных. Вместо многократного опроса переменных (что генерирует излишний трафик) клиенты создают подписку с PublishingInterval и добавляют в нее MonitoredItems. Сервер опрашивает каждый MonitoredItem с интервалом SamplingInterval и помещает изменения значений в очередь; при срабатывании PublishingInterval все накопленные уведомления отправляются в одном сообщении PublishResponse.

Параметры подписки — ключевые поля

CreateSubscription request:
  RequestedPublishingInterval: 1000  // ms — how often server sends Publish
  RequestedMaxKeepAliveCount: 10     // Publish cycles before keep-alive sent
  RequestedLifetimeCount: 30         // LifetimeCount × PublishingInterval = session timeout
  MaxNotificationsPerPublish: 1000   // cap notifications per PublishResponse
  PublishingEnabled: true

MonitoredItem parameters:
  SamplingInterval: 500              // ms — server samples item at this rate
                                     // must be ≥ server MinSupportedSampleRate
  QueueSize: 10                      // buffer for overrun; 1 = last value only
  DiscardOldest: true                // discard oldest on queue overflow
  DeadbandType: None / Absolute / Percent
  DeadbandValue: 0.5                 // Absolute: only report if change > 0.5 units
                                     // Percent: only report if change > 0.5% of EURange

Фильтрация по зоне нечувствительности для датчиков HVAC: Установка абсолютной зоны нечувствительности 0,2–0,5°C для переменных температуры предотвращает перегрузку подписки тривиальными обновлениями, вызванными шумом. Для счетчиков энергии типична процентная зона нечувствительности 1% на счетчиках кВт·ч. Фильтрация по зоне нечувствительности выполняется на стороне сервера, снижая загрузку ЦП и сетевой трафик.

Спецификации-компаньоны OPC UA

Спецификации-компаньоны расширяют базовый стандарт OPC UA доменно-специфичными информационными моделями. Они определяют стандартные ObjectTypes, VariableTypes и URI пространств имен, чтобы устройства разных производителей предоставляли данные в согласованной, интероперабельной структуре. Инженеры по автоматизации зданий должны знать следующие спецификации-компаньоны:

СпецификацияОбласть примененияКлючевые ObjectTypes
IEC 62541-100 (OPC UA для зданий)Автоматизация зданий: пространства, зоны, оборудование, учет энергииBuildingType, SpaceType, HVACSystemType, EnergyMeterType
OPC UA для FDI (Интеграция полевых устройств)Полевые устройства: датчики, исполнительные механизмы, приборыDeviceType, FunctionBlockType, ParameterType
OPC UA для PLCopenЭлементы программ ПЛК: функциональные блоки, аварийные сигналы, задачиFunctionBlockType, AlarmType, TaskType
OPC UA для I4.0 Asset Administration ShellЦифровой двойник: метаданные актива, подмодели, свойстваAssetAdministrationShellType, SubmodelType
OPC UA для устройств (DI)Базовая информация об аппаратном устройствеDeviceType, ComponentType, SoftwareType

Нужна настройка сервера OPC UA для вашего проекта BMS?

Мы настраиваем и защищаем серверы OPC UA на Siemens DESIGO CC, Beckhoff TwinCAT и Kepware KEPServerEX — включая управление сертификатами, усиление политики безопасности и настройку подписки для плотных развертываний датчиков.

Запросить расчёт →
Загрузка ...
Наверх