OPC UA · IEC 62541 · Model informacyjny · Bezpieczeństwo · Sesje · 10 min czytania

Architektura OPC UA: Model informacyjny, bezpieczeństwo, sesje i transport

OPC UA (IEC 62541) to 13-częściowy standard definiujący niezależną od platformy, zorientowaną na usługi architekturę komunikacji automatyki przemysłowej i budynkowej. W przeciwieństwie do swojego poprzednika OPC Classic (który działał tylko na Windows COM/DCOM), OPC UA działa na każdym systemie operacyjnym, zawiera pełny model bezpieczeństwa i zapewnia ujednolicony model informacyjny, który sprawia, że każdy serwer jest samoopisujący – eliminując potrzebę zewnętrznych słowników danych podczas integracji BMS, SCADA i platform IoT.

Struktura standardu IEC 62541

IEC 62541 składa się z 13 ponumerowanych części. Części 1–7 definiują podstawową architekturę; części 8–14 obejmują mapowania, bezpieczeństwo i profile. Dla integratorów automatyki budynkowej najważniejsze są części 1 (Koncepcje), 3 (Model przestrzeni adresowej), 4 (Usługi), 6 (Mapowania – kodowanie i transport), 7 (Profile) oraz specyfikacja towarzysząca IEC 62541-100 (OPC UA dla budynków).

CzęśćTytułZnaczenie
IEC 62541-1Koncepcje i przeglądPodstawowa architektura, model usług, koncepcja modelu informacji
IEC 62541-3Model przestrzeni adresowejTypy NodeClass, referencje, atrybuty – kręgosłup modelu danych
IEC 62541-4UsługiZestawy usług Read, Write, Browse, Subscribe, Call – wszystkie API serwera
IEC 62541-6MapowaniaKodowanie binarne (UA Binary), kodowanie XML, transport opc.tcp, HTTPS, WebSockets
IEC 62541-7ProfileProfile serwera, klienta i transportu do testowania zgodności
IEC 62541-12Odkrywanie i usługi globalneLokalny serwer odkrywania (LDS), Globalny serwer odkrywania (GDS) do zarządzania certyfikatami
IEC 62541-100OPC UA dla budynkówModel informacji odwzorowany w IFC dla pomieszczeń, stref, HVAC, pomiarów energii

Model informacji: typy NodeClass i referencje

Każda informacja w serwerze OPC UA jest reprezentowana jako węzeł w przestrzeni adresowej. Węzły mają atrybut NodeClass określający ich rolę. Węzły są połączone ze sobą za pomocą typowanych referencji – na przykład HasComponent, HasProperty, Organizes, HasSubtype. Tworzy to skierowany graf, który klienci mogą przeglądać, aby odkryć zawartość serwera bez wcześniejszej znajomości struktury danych.

NodeClassPrzeznaczeniePrzykład w BMS
ObiektKontener grupujący powiązane węzły; sam nie ma wartościObiekt AHU_01 grupujący wszystkie zmienne AHU
ZmiennaPrzechowuje typowaną wartość; do odczytu i opcjonalnie do zapisuSupplyAirTemp (Float, °C), FanSpeed (UInt16, RPM)
MetodaFunkcja wywoływalna; argumenty wejściowe i wyjścioweResetAlarm(), SetOperatingMode(mode: Int32)
WidokNazwany podzbiór przestrzeni adresowej do filtrowanego przeglądaniaEnergyMeteringView pokazujący tylko węzły kWh
Typ danychDefiniuje typ skalarny lub strukturalny używany przez zmienneEnumHvacMode {Auto=0, Heating=1, Cooling=2}
ObjectTypeSzablon dla węzłów obiektów (jak definicja klasy)HVACUnitType ze standardowymi komponentami
VariableTypeSzablon dla węzłów zmiennych z domyślnymi atrybutamiAnalogItemType z właściwością EngineeringUnits
ReferenceTypeDefiniuje semantykę referencji między węzłamiHasComponent, HasProperty, Organizes

Przestrzeń adresowa: przestrzenie nazw i przeglądane drzewo

Przestrzeń adresowa jest zorganizowana jako przeglądane drzewo. Każdy węzeł jest identyfikowany przez NodeId składający się z indeksu przestrzeni nazw i identyfikatora (numeryczny, tekstowy lub GUID). Przestrzeń nazw 0 (ns=0) jest zawsze standardową przestrzenią nazw OPC UA zawierającą wbudowane typy i standardowe węzły. Przestrzenie nazw 1+ są przypisywane przez serwer dla treści specyficznych dla dostawcy lub aplikacji. Klienci odkrywają tablicę przestrzeni nazw za pomocą wywołania usługi GetNamespaceArray.

Przestrzeń adresowa OPC UA — przykład 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]

Klienci nawigują od korzenia Objects za pomocą usługi Browse, podążając za referencjami hierarchicznymi (HasComponent, Organizes, HasProperty), aby odkryć węzły. Usługa TranslateBrowsePathsToNodeIds umożliwia klientom bezpośrednie przejście do znanej ścieżki bez przeszukiwania całego drzewa – przydatne do wydajnościowego odpytywania znanych zmiennych.

Opcje transportu

OPC UA definiuje trzy wiązania transportowe. Wybór wpływa na opóźnienie, przechodzenie przez zapory ogniowe i narzut protokołu. OPC UA Binary przez TCP jest domyślne dla integracji BMS na poziomie zakładu; HTTPS i WebSockets są używane dla interfejsów chmurowych lub dostępnych przez przeglądarkę.

TransportPrefiks URIDomyślny portNarzutUwagi
OPC UA TCPopc.tcp://4840Najniższy – ramkowanie binarneNajlepsze dla hali produkcyjnej; trwałe połączenie TCP; nieprzyjazne dla zapór sieciowych
OPC UA HTTPSopc.https://443Średni — HTTP/1.1 + TLSPrzyjazny dla zapór sieciowych; może przechodzić przez proxy; wyższe opóźnienie na żądanie
OPC UA WebSocketsopc.wss://443Niski — ramkowanie WebSocketZgodny z przeglądarką; trwały; używany do web SCADA i bram chmurowych

Zalecenie dla poziomu produkcyjnego: Zawsze używaj opc.tcp:// w sieci LAN budynku lub VLAN OT. Trwałe połączenie TCP eliminuje narzut uzgadniania TLS na żądanie i zapewnia najniższe opóźnienie powiadomień subskrypcji. Zarezerwuj HTTPS dla integracji między lokalizacjami lub w chmurze, gdy port zapory 4840 nie może być otwarty.

Tryby bezpieczeństwa i polityki bezpieczeństwa

Bezpieczeństwo OPC UA jest negocjowane na poziomie Secure Channel przed wymianą jakichkolwiek wiadomości aplikacji. Serwer ogłasza obsługiwane EndpointDescriptions (kombinacje MessageSecurityMode i SecurityPolicyUri). Klient wybiera jedną podczas otwierania połączenia. Nigdy nie używaj None w środowisku produkcyjnym – przesyła wszystkie dane w postaci jawnej bez ochrony integralności.

MessageSecurityModeOchronaZastosowanie
BrakBrak podpisu, brak szyfrowaniaTylko laboratorium / rozwój – nigdy produkcja
PodpiszIntegralność HMAC wiadomości; brak szyfrowania ładunkuSCADA krytyczne dla wydajności w zaufanej zamkniętej sieci LAN
PodpiszISzyfrujHMAC + szyfrowanie AES wszystkich ładunków wiadomościStandard dla wszystkich integracji BMS i chmury

SecurityPolicyUri wybiera algorytmy kryptograficzne. Obecnie zalecane polityki (według IEC 62541-7:2022) to:

SecurityPolicyUriAsymetryczny (wymiana kluczy)Symetryczny (dane)Status
Basic128Rsa15RSA-PKCS1-v1.5 / 1024-bitAES-128-CBCPrzestarzałe — nie używać
Basic256RSA-OAEP / 1024-bitAES-256-CBCPrzestarzałe — nie używać
Basic256Sha256RSA-OAEP / 2048-bit + SHA-256AES-256-CBC + SHA-256 HMACObecny – szeroko wspierany
Aes128Sha256RsaOaepRSA-OAEP / 2048-bit + SHA-256AES-128-CBC + SHA-256 HMACObecny – niższe obciążenie CPU
Aes256Sha256RsaPssRSA-PSS / 2048-bit + SHA-256AES-256-CBC + SHA-256 HMACZalecany – najsilniejszy, używać tam, gdzie jest obsługiwany

Informacja o wycofaniu: Basic128Rsa15 i Basic256 używają 1024-bitowych kluczy RSA i SHA-1, które są uważane za kryptograficznie słabe. IEC 62541-7:2022 oznacza je jako przestarzałe. Kepware KEPServerEX 6.x i Siemens DESIGO CC obsługują Basic256Sha256 i Aes256Sha256RsaPss. Wyłącz przestarzałe polityki w konfiguracji serwera produkcyjnego, aby zapobiec atakom obniżania poziomu.

Metody uwierzytelniania

Uwierzytelnianie odbywa się na warstwie sesji (powyżej bezpiecznego kanału). OPC UA definiuje trzy typy tokenów tożsamości ActivateSession. Uwierzytelnianie oparte na certyfikatach jest najbezpieczniejsze i wymagane przez normy bezpieczeństwa przemysłowego, takie jak IEC 62443-3-3 Security Level 2.

Typ tokenaOpisZalecenie
AnonymousIdentityTokenBrak poświadczeń – każdy klient może utworzyć sesjęWyłącz w produkcji; dopuszczalne tylko dla publicznych pulpitów tylko do odczytu
UserNameIdentityTokenNazwa użytkownika i hasło; hasło szyfrowane kluczem publicznym serweraDopuszczalne dla dostępu operatora; używaj z transportem Sign+Encrypt
X509IdentityTokenKlient przedstawia ważny certyfikat X.509; serwer weryfikuje względem listy zaufaniaWymagane dla integracji maszyna-maszyna i zgodności z IEC 62443 SL-2

Sesje i subskrypcje

Sesja jest ustanawiana na szczycie bezpiecznego kanału po uwierzytelnieniu. Sesje mają RequestedSessionTimeout (zwykle 60–3600 sekund); jeśli klient nie wyśle keep-alive przed upływem czasu, serwer usuwa sesję i wszystkie jej subskrypcje. Klienci powinni obsługiwać ponowne połączenie poprzez przywrócenie sesji lub transfer.

Subskrypcje są podstawowym mechanizmem efektywnego monitorowania danych. Zamiast wielokrotnie odpytywać zmienne (co generuje niepotrzebny ruch), klienci tworzą subskrypcję z PublishingInterval i dodają do niej MonitoredItems. Serwer próbkuje każdy MonitoredItem z interwałem SamplingInterval i kolejkuje zmiany wartości; gdy PublishingInterval wyzwala, wszystkie oczekujące powiadomienia są wysyłane w jednej wiadomości PublishResponse.

Parametry subskrypcji – kluczowe pola

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

Filtrowanie martwej strefy dla czujników HVAC: Ustawienie absolutnej martwej strefy 0,2–0,5°C dla zmiennych temperatury zapobiega zalewaniu subskrypcji trywialnymi aktualizacjami wywołanymi szumem. W przypadku liczników energii typowe jest procentowe martwe strefy 1% na licznikach kWh. Filtrowanie martwej strefy odbywa się po stronie serwera, zmniejszając zarówno obciążenie CPU, jak i ruch sieciowy.

Specyfikacje towarzyszące OPC UA

Specyfikacje towarzyszące rozszerzają podstawowy standard OPC UA o domenowe modele informacyjne. Definiują standardowe ObjectTypes, VariableTypes i przestrzenie nazw URI, tak aby urządzenia różnych producentów udostępniały dane w spójnej, interoperacyjnej strukturze. Inżynierowie automatyki budynkowej powinni znać następujące specyfikacje towarzyszące:

SpecyfikacjaZakresKluczowe typy obiektów
IEC 62541-100 (OPC UA dla budynków)Automatyka budynkowa: przestrzenie, strefy, urządzenia, pomiary energiiBuildingType, SpaceType, HVACSystemType, EnergyMeterType
OPC UA dla FDI (Integracja urządzeń polowych)Urządzenia polowe: czujniki, siłowniki, przyrządy procesoweDeviceType, FunctionBlockType, ParameterType
OPC UA dla PLCopenElementy programu PLC: bloki funkcyjne, alarmy, zadaniaFunctionBlockType, AlarmType, TaskType
OPC UA dla I4.0 Asset Administration ShellCyfrowy bliźniak: metadane zasobów, podmodele, właściwościAssetAdministrationShellType, SubmodelType
OPC UA dla urządzeń (DI)Podstawowe informacje o urządzeniach sprzętowychDeviceType, ComponentType, SoftwareType

Potrzebujesz konfiguracji serwera OPC UA dla swojego projektu BMS?

Konfigurujemy i zabezpieczamy serwery OPC UA na Siemens DESIGO CC, Beckhoff TwinCAT i Kepware KEPServerEX – w tym zarządzanie certyfikatami, zaostrzanie polityki bezpieczeństwa i dostrajanie subskrypcji dla gęstych wdrożeń czujników.

Poproś o wycenę →
Ładowanie...
Powrót do góry