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Модель адресного пространстваТипы узлов, ссылки, атрибуты — основа модели данных
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, объединяющий все переменные приточной установки
ПеременнаяСодержит типизированное значение; доступно для чтения и, опционально, для записиSupplyAirTemp (Float, °C), FanSpeed (UInt16, об/мин)
МетодВызываемая функция с входными и выходными аргументамиResetAlarm(), SetOperatingMode(режим: Int32)
ПредставлениеИменованная часть адресного пространства для фильтрованного просмотраПредставление EnergyMeteringView, показывающее только узлы с кВт·ч
Тип данныхОпределяет скалярный или структурированный тип, используемый переменнымиEnumHvacMode {Auto=0, Heating=1, Cooling=2}
Тип объектаШаблон для узлов-объектов (аналог определения класса)HVACUnitType со стандартными компонентами
Тип переменнойШаблон для узлов-переменных с атрибутами по умолчанию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, следуя по иерархическим ссылкам (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 до обмена любыми прикладными сообщениями. Сервер публикует поддерживаемые EndpointDescription (комбинации MessageSecurityMode и SecurityPolicyUri). Клиент выбирает один из них при открытии соединения. Никогда не используйте None в рабочей среде — все данные передаются открытым текстом без защиты целостности.

MessageSecurityModeЗащитаСценарий использования
NoneНет подписи, нет шифрованияТолько лаборатория / разработка — не для эксплуатации
SignHMAC-целостность сообщений; шифрование данных отсутствует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% от показаний kWh. Фильтрация выполняется на стороне сервера, снижая нагрузку на процессор и сетевой трафик.

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

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

СпецификацияОбласть примененияКлючевые типы объектов
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Цифровой двойник: метаданные актива, подмодели, свойстваAssetAdministrationShellType, SubmodelType
OPC UA для устройств (DI)Базовая информация об аппаратных устройствахDeviceType, ComponentType, SoftwareType

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

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

Запросить предложение →
Загрузка ...
Наверх