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ļa | Nosaukums | Nozīmīgums |
|---|---|---|
| IEC 62541-1 | Koncepti un pārskats | Pamata arhitektūra, pakalpojumu modelis, informācijas modeļa koncepts |
| IEC 62541-3 | Adrešu telpas modelis | NodeClass tipi, atsauces, atribūti — datu modeļa mugurkauls |
| IEC 62541-4 | Pakalpojumi | Read, Write, Browse, Subscribe, Call pakalpojumu kopas — visi servera API |
| IEC 62541-6 | Kartējumi | Binārais kodējums (UA Binary), XML kodējums, opc.tcp transports, HTTPS, WebSockets |
| IEC 62541-7 | Profili | Servera, klienta un transporta profili atbilstības pārbaudei |
| IEC 62541-12 | Atklāšanas un globālie pakalpojumi | Lokālais atklāšanas serveris (LDS), globālais atklāšanas serveris (GDS) sertifikātu pārvaldībai |
| IEC 62541-100 | OPC UA ēkām | IFC 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.
| NodeClass | Mērķis | Piemērs BMS |
|---|---|---|
| Objekts | Konteiners, kas grupē saistītus mezglus; pašam nav vērtības | AHU_01 objekts, kas apvieno visus ventilācijas iekārtas mainīgos |
| Mainīgais | Satur tipizētu vērtību; nolasāms un pēc izvēles rakstāms | SupplyAirTemp (Float, °C), FanSpeed (UInt16, apgr./min) |
| Metode | Izsaukt funkcija ar ievades un izvades argumentiem | ResetAlarm(), SetOperatingMode(režīms: Int32) |
| Skatījums | Nosaukta adrešu telpas apakškopa filtrētai pārlūkošanai | EnergyMeteringView skatījums, kas rāda tikai kWh mezglus |
| Datu tips | Definē skalāru vai strukturētu tipu, ko izmanto mainīgie | EnumHvacMode {Auto=0, Heating=1, Cooling=2} |
| Objekta tips | Veidne objektu mezgliem (līdzīgi klases definīcijai) | HVACUnitType ar standarta komponentēm |
| Mainīgā tips | Veidne mainīgo mezgliem ar noklusējuma atribūtiem | AnalogItemType ar EngineeringUnits īpašību |
| Atsauces tips | Definē atsauces semantiku starp mezgliem | HasComponent, 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.
| Transports | URI prefikss | Noklusējuma ports | Papildu slodze | Piezīmes |
|---|---|---|---|---|
| OPC UA TCP | opc.tcp:// | 4840 | Zemākā — binārais ietvars | Vislabāk rūpnīcas stāvam; pastāvīgs TCP savienojums; nav ugunsmūrim draudzīgs |
| OPC UA HTTPS | opc.https:// | 443 | Vidēja — HTTP/1.1 + TLS | Ugunsmūrim draudzīgs; var šķērsot starpniekserverus; lielāks latentums vienam pieprasījumam |
| OPC UA WebSockets | opc.wss:// | 443 | Zema — WebSocket ietvars | Saderī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.
| MessageSecurityMode | Aizsardzība | Lietošanas gadījums |
|---|---|---|
| None | Nav paraksta, nav šifrēšanas | Tikai laboratorija / izstrāde — nekad ražošanā |
| Sign | HMAC integritāte ziņojumiem; nav datu šifrēšanas | Veiktspējai kritiska SCADA uzticamā slēgtā LAN |
| SignAndEncrypt | HMAC + AES visu ziņojumu datu šifrēšana | Standarts 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:
| SecurityPolicyUri | Asimetriskā (atslēgu apmaiņa) | Simetriskā (dati) | Statuss |
|---|---|---|---|
| Basic128Rsa15 | RSA-PKCS1-v1.5 / 1024 biti | AES-128-CBC | Novecojis — neizmantot |
| Basic256 | RSA-OAEP / 1024 biti | AES-256-CBC | Novecojis — neizmantot |
| Basic256Sha256 | RSA-OAEP / 2048 biti + SHA-256 | AES-256-CBC + SHA-256 HMAC | Aktuāls — plaši atbalstīts |
| Aes128Sha256RsaOaep | RSA-OAEP / 2048 biti + SHA-256 | AES-128-CBC + SHA-256 HMAC | Aktuāls — mazāka CPU slodze |
| Aes256Sha256RsaPss | RSA-PSS / 2048 biti + SHA-256 | AES-256-CBC + SHA-256 HMAC | Ieteicams — 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 tips | Apraksts | Ieteikums |
|---|---|---|
| AnonymousIdentityToken | Bez akreditācijas datiem — jebkurš klients var izveidot sesiju | Izslēdziet ražošanas vidē; pieļaujams tikai publiskiem lasāmiem paneļiem |
| UserNameIdentityToken | Lietotājvārds un parole; parole tiek šifrēta ar servera publisko atslēgu | Pieņemams operatora piekļuvei; izmantojiet ar Sign+Encrypt transportu |
| X509IdentityToken | Klients uzrāda derīgu X.509 sertifikātu; serveris pārbauda pret uzticamo sarakstu | Nepiecieš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 EURangeMirušā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ācija | Piemērošanas joma | Galvenie ObjectTypes |
|---|---|---|
| IEC 62541-100 (OPC UA ēkām) | Ēku automatizācija: telpas, zonas, iekārtas, enerģijas uzskaite | BuildingType, SpaceType, HVACSystemType, EnergyMeterType |
| OPC UA FDI (lauka ierīču integrācijai) | Lauka ierīces: sensori, izpildmehānismi, procesa instrumenti | DeviceType, FunctionBlockType, ParameterType |
| OPC UA PLCopen | PLC programmas elementi: funkciju bloki, trauksmes signāli, uzdevumi | FunctionBlockType, AlarmType, TaskType |
| OPC UA I4.0 aktīvu pārvaldības apvalkam | Digitālais dvīnis: aktīva metadati, apakšmodeļi, īpašības | AssetAdministrationShellType, SubmodelType |
| OPC UA ierīcēm (DI) | Aparatūras ierīču informācijas pamats | DeviceType, 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 →