OPC UA · IEC 62541 · Informācijas modelis · Drošība · Sesijas · 10 min lasīšanai

OPC UA arhitektūra: informācijas modelis, drošība, sesijas un transports

OPC UA (IEC 62541) ir 13 daļu standarts, kas definē platformneatkarīgu, uz pakalpojumiem orientētu arhitektūru rūpnieciskai un ēku automatizācijai. Atšķirībā no priekšgājēja OPC Classic (tikai Windows COM/DCOM), OPC UA darbojas jebkurā OS, ietver pilnu drošības modeli un nodrošina vienotu informācijas modeli, kas padara katru serveri pašaprakstošu — tādējādi nav nepieciešamas ārējās datu vārdnīcas, integrējot BMS, SCADA un IoT platformas.

IEC 62541 standarta struktūra

IEC 62541 sastāv no 13 numurētām daļām. 1.–7. daļa nosaka pamata arhitektūru; 8.–14. daļa aptver kartējumus, drošību un profilus. Ēku automatizācijas integratoriem būtiskākās ir 1. daļa (Koncepti), 3. daļa (Adrešu telpas modelis), 4. daļa (Pakalpojumi), 6. daļa (Kartējumi — kodēšana un transports), 7. daļa (Profili) un pavadošā specifikācija IEC 62541-100 (OPC UA ēkām).

DaļaNosaukumsNozīmīgums
IEC 62541-1Koncepti un pārskatsPamata arhitektūra, pakalpojumu modelis, informācijas modeļa koncepts
IEC 62541-3Adrešu telpas modelisNodeClass tipi, atsauces, atribūti — datu modeļa mugurkauls
IEC 62541-4PakalpojumiRead, Write, Browse, Subscribe, Call pakalpojumu kopas — visi servera API
IEC 62541-6KartējumiBinārais kodējums (UA Binary), XML kodējums, opc.tcp transports, HTTPS, WebSockets
IEC 62541-7ProfiliServera, klienta un transporta profili atbilstības pārbaudei
IEC 62541-12Atklāšanas un globālie pakalpojumiLokālais atklāšanas serveris (LDS), globālais atklāšanas serveris (GDS) sertifikātu pārvaldībai
IEC 62541-100OPC UA ēkāmIFC kartēts informācijas modelis telpām, zonām, apkurei, ventilācijai, enerģijas uzskaitei

Informācijas modelis: NodeClass tipi un atsauces

Katrs datu elements OPC UA serverī tiek attēlots kā Mezgls adrešu telpā. Mezgliem ir NodeClass atribūts, kas nosaka to lomu. Mezgli ir savienoti viens ar otru ar tipizētām Atsaucēm — piemēram, HasComponent, HasProperty, Organizes, HasSubtype. Tas veido virzītu grafu, kuru klienti var pārlūkot, lai atklātu servera saturu bez iepriekšējām zināšanām par datu struktūru.

NodeClassMērķisPiemērs BMS
ObjektsKonteiners, kas grupē saistītus mezglus; pašam nav vērtībasAHU_01 objekts, kas apvieno visus ventilācijas iekārtas mainīgos
MainīgaisSatur tipizētu vērtību; nolasāms un pēc izvēles rakstāmsSupplyAirTemp (Float, °C), FanSpeed (UInt16, apgr./min)
MetodeIzsaukt funkcija ar ievades un izvades argumentiemResetAlarm(), SetOperatingMode(režīms: Int32)
SkatījumsNosaukta adrešu telpas apakškopa filtrētai pārlūkošanaiEnergyMeteringView skatījums, kas rāda tikai kWh mezglus
Datu tipsDefinē skalāru vai strukturētu tipu, ko izmanto mainīgieEnumHvacMode {Auto=0, Heating=1, Cooling=2}
Objekta tipsVeidne objektu mezgliem (līdzīgi klases definīcijai)HVACUnitType ar standarta komponentēm
Mainīgā tipsVeidne mainīgo mezgliem ar noklusējuma atribūtiemAnalogItemType ar EngineeringUnits īpašību
Atsauces tipsDefinē atsauces semantiku starp mezgliemHasComponent, HasProperty, Organizes

Adrešu telpa: vārdu telpas un pārlūkojams koks

Adrešu telpa ir strukturēta kā pārlūkojams koks. Katrs mezgls tiek identificēts ar NodeId, kas sastāv no vārdu telpas indeksa un identifikatora (ciparu, virknes vai GUID). Vārdu telpa 0 (ns=0) vienmēr ir OPC UA standarta vārdu telpa, kas satur iebūvētos tipus un standarta mezglus. Vārdu telpas 1+ tiek piešķirtas serverim pārdevēja vai lietojumprogrammas specifiskam saturam. Klienti atklāj vārdu telpu tabulu, izmantojot GetNamespaceArray pakalpojuma izsaukumu.

OPC UA adrešu telpa — BMS piemērs

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]

Klienti pārvietojas no Objects saknes, izmantojot Browse pakalpojumu, sekojot HierarchicalReferences (HasComponent, Organizes, HasProperty), lai atklātu mezglus. TranslateBrowsePathsToNodeIds pakalpojums ļauj klientiem pāriet tieši uz zināmo ceļu, nešķērsojot visu koku — noderīgi veiktspējas jutīgai zināmo mainīgo aptaujāšanai.

Transporta iespējas

OPC UA definē trīs transporta saistījumus. Izvēle ietekmē latentumu, ugunsmūra šķērsošanu un protokola papildu slodzi. OPC UA Binary pa TCP ir noklusējums rūpnīcas stāva BMS integrācijai; HTTPS un WebSockets tiek izmantoti mākoņa vai pārlūkprogrammas saskarnēm.

TransportsURI prefikssNoklusējuma portsPapildu slodzePiezīmes
OPC UA TCPopc.tcp://4840Zemākā — binārais ietvarsVislabāk rūpnīcas stāvam; pastāvīgs TCP savienojums; nav ugunsmūrim draudzīgs
OPC UA HTTPSopc.https://443Vidēja — HTTP/1.1 + TLSUgunsmūrim draudzīgs; var šķērsot starpniekserverus; lielāks latentums vienam pieprasījumam
OPC UA WebSocketsopc.wss://443Zema — WebSocket ietvarsSaderīgs ar pārlūkprogrammām; pastāvīgs savienojums; izmanto tīmekļa SCADA un mākoņa vārtejām

Ieteikums vietējam tīklam: Vienmēr izmantojiet opc.tcp:// ēkas lokālajā tīklā vai OT VLAN. Pastāvīgais TCP savienojums novērš TLS rokasspiediena aizkavi katram pieprasījumam un nodrošina viszemāko abonēšanas paziņojumu latentumu. HTTPS atstājiet starpvietņu vai mākoņa integrācijām, kur ugunsmūra portu 4840 nevar atvērt.

Drošības režīmi un drošības politikas

OPC UA drošība tiek saskaņota Secure Channel līmenī pirms jebkādu lietojumprogrammu ziņojumu apmaiņas. Serveris publicē savus atbalstītos EndpointDescription (MessageSecurityMode un SecurityPolicyUri kombinācijas). Klients izvēlas vienu, atverot savienojumu. Nekad neizmantojiet None ražošanas vidē — visi dati tiek pārraidīti vienkāršā tekstā bez integritātes aizsardzības.

MessageSecurityModeAizsardzībaLietošanas gadījums
NoneNav paraksta, nav šifrēšanasTikai laboratorija / izstrāde — nekad ražošanā
SignHMAC integritāte ziņojumiem; nav datu šifrēšanasVeiktspējai kritiska SCADA uzticamā slēgtā LAN
SignAndEncryptHMAC + AES visu ziņojumu datu šifrēšanaStandarts visām BMS un mākoņa integrācijām

SecurityPolicyUri izvēlas kriptogrāfiskos algoritmus. Pašreizējās ieteicamās politikas (saskaņā ar IEC 62541-7:2022) ir:

SecurityPolicyUriAsimetriskā (atslēgu apmaiņa)Simetriskā (dati)Statuss
Basic128Rsa15RSA-PKCS1-v1.5 / 1024 bitiAES-128-CBCNovecojis — neizmantot
Basic256RSA-OAEP / 1024 bitiAES-256-CBCNovecojis — neizmantot
Basic256Sha256RSA-OAEP / 2048 biti + SHA-256AES-256-CBC + SHA-256 HMACAktuāls — plaši atbalstīts
Aes128Sha256RsaOaepRSA-OAEP / 2048 biti + SHA-256AES-128-CBC + SHA-256 HMACAktuāls — mazāka CPU slodze
Aes256Sha256RsaPssRSA-PSS / 2048 biti + SHA-256AES-256-CBC + SHA-256 HMACIeteicams — spēcīgākais, izmantojiet kur iespējams

Novecošanas paziņojums: Basic128Rsa15 un Basic256 izmanto 1024 bitu RSA atslēgas un SHA-1, kas tiek uzskatīti par kriptogrāfiski vājiem. IEC 62541-7:2022 tos atzīmē kā novecojušus. Kepware KEPServerEX 6.x un Siemens DESIGO CC atbalsta Basic256Sha256 un Aes256Sha256RsaPss. Izslēdziet novecojušās politikas ražošanas servera konfigurācijā, lai novērstu pazemināšanas uzbrukumus.

Autentifikācijas metodes

Autentifikācija tiek veikta sesijas slānī (virs drošā kanāla). OPC UA definē trīs ActivateSession identitātes marķieru tipus. Sertifikātu autentifikācija ir visdrošākā un ir nepieciešama rūpnieciskās drošības standartiem, piemēram, IEC 62443-3-3 Drošības līmenis 2.

Marķiera tipsAprakstsIeteikums
AnonymousIdentityTokenBez akreditācijas datiem — jebkurš klients var izveidot sesijuIzslēdziet ražošanas vidē; pieļaujams tikai publiskiem lasāmiem paneļiem
UserNameIdentityTokenLietotājvārds un parole; parole tiek šifrēta ar servera publisko atslēguPieņemams operatora piekļuvei; izmantojiet ar Sign+Encrypt transportu
X509IdentityTokenKlients uzrāda derīgu X.509 sertifikātu; serveris pārbauda pret uzticamo sarakstuNepieciešams mašīnas-mašīnas integrācijai un IEC 62443 SL-2 atbilstībai

Sesijas un abonementi

Sesija tiek izveidota virs droša kanāla pēc autentifikācijas. Sesijai ir RequestedSessionTimeout (parasti 60–3600 sekundes); ja klients nenosūta keep-alive pirms taimauta, serveris dzēš sesiju un visus tās abonementus. Klientiem jāapstrādā atkārtota savienošana ar sesijas atjaunošanu vai pārnešanu.

Abonementi ir primārais mehānisms efektīvai datu uzraudzībai. Tā vietā, lai atkārtoti aptaujātu mainīgos (kas rada lieku trafiku), klienti izveido abonementu ar PublishingInterval un pievieno tam MonitoredItems. Serveris paraugā katru MonitoredItem ar SamplingInterval un rindā ievieto izmaiņas; kad iestājas PublishingInterval, visi uzkrātie paziņojumi tiek nosūtīti vienā PublishResponse ziņojumā.

Abonementa parametri — galvenie lauki

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

Mirušās zonas filtrēšana HVAC sensoriem: Absolūtās mirušās zonas 0,2–0,5°C iestatīšana temperatūras mainīgajiem neļauj serverim pārslogot abonementu ar triviāliem trokšņa izraisītiem atjauninājumiem. Enerģijas skaitītājiem tipiska ir procentuālā mirušā zona 1% no kWh rādījumiem. Filtrēšana notiek servera pusē, samazinot gan CPU slodzi, gan tīkla trafiku.

OPC UA pavadošās specifikācijas

Pavadošās specifikācijas paplašina OPC UA pamatstandartu ar nozarei specifiskiem informācijas modeļiem. Tās definē standarta ObjectTypes, VariableTypes un vārdu telpas URI, lai dažādu ražotāju ierīces atklātu datus vienotā, savietojamā struktūrā. Ēku automatizācijas inženieriem būtu jāzina šādas pavadošās specifikācijas:

SpecifikācijaPiemērošanas jomaGalvenie ObjectTypes
IEC 62541-100 (OPC UA ēkām)Ēku automatizācija: telpas, zonas, iekārtas, enerģijas uzskaiteBuildingType, SpaceType, HVACSystemType, EnergyMeterType
OPC UA FDI (lauka ierīču integrācijai)Lauka ierīces: sensori, izpildmehānismi, procesa instrumentiDeviceType, FunctionBlockType, ParameterType
OPC UA PLCopenPLC programmas elementi: funkciju bloki, trauksmes signāli, uzdevumiFunctionBlockType, AlarmType, TaskType
OPC UA I4.0 aktīvu pārvaldības apvalkamDigitālais dvīnis: aktīva metadati, apakšmodeļi, īpašībasAssetAdministrationShellType, SubmodelType
OPC UA ierīcēm (DI)Aparatūras ierīču informācijas pamatsDeviceType, ComponentType, SoftwareType

Nepieciešama OPC UA servera konfigurācija jūsu BMS projektam?

Mēs konfigurējam un aizsargājam OPC UA serverus uz Siemens DESIGO CC, Beckhoff TwinCAT un Kepware KEPServerEX — ieskaitot sertifikātu pārvaldību, drošības politikas stiprināšanu un abonēšanas iestatīšanu liela blīvuma sensoru izvietojumiem.

Pieprasīt piedāvājumu →
Ielādējas...
Uz augšu