OPC UA · IEC 62541 · Modello informativo · Sicurezza · Sessioni · 10 min di lettura

Architettura OPC UA: Modello informativo, sicurezza, sessioni e trasporto

OPC UA (IEC 62541) è uno standard in 13 parti che definisce un'architettura orientata ai servizi, indipendente dalla piattaforma, per la comunicazione nell'automazione industriale e negli edifici. A differenza del suo predecessore OPC Classic (che era solo Windows COM/DCOM), OPC UA funziona su qualsiasi sistema operativo, incorpora un modello di sicurezza completo e fornisce un modello informativo unificato che rende ogni server auto-descrittivo – eliminando la necessità di dizionari di dati esterni quando si integrano piattaforme BMS, SCADA e IoT.

Struttura dello standard IEC 62541

IEC 62541 è composta da 13 parti numerate. Le parti 1–7 definiscono l'architettura principale; le parti 8–14 coprono mapping, sicurezza e profili. Per gli integratori di automazione degli edifici, le parti più rilevanti sono 1 (Concetti), 3 (Modello dello spazio degli indirizzi), 4 (Servizi), 6 (Mapping — codifica e trasporto), 7 (Profili) e la specifica complementare IEC 62541-100 (OPC UA per edifici).

ParteTitoloRilevanza
IEC 62541-1Concetti e panoramicaArchitettura fondamentale, modello di servizio, concetto di modello informativo
IEC 62541-3Modello dello spazio degli indirizziTipi NodeClass, riferimenti, attributi — la spina dorsale del modello dati
IEC 62541-4ServiziSet di servizi Read, Write, Browse, Subscribe, Call — tutte le API del server
IEC 62541-6MappingCodifica binaria (UA Binary), codifica XML, trasporto opc.tcp, HTTPS, WebSockets
IEC 62541-7ProfiliProfili server, client e trasporto per test di conformità
IEC 62541-12Scoperta e servizi globaliServer di scoperta locale (LDS), Server di scoperta globale (GDS) per la gestione dei certificati
IEC 62541-100OPC UA per edificiModello informativo mappato IFC per spazi, zone, HVAC, misurazione energia

Modello informativo: tipi NodeClass e riferimenti

Ogni dato in un server OPC UA è rappresentato come un nodo nello spazio degli indirizzi. I nodi hanno un attributo NodeClass che ne definisce il ruolo. I nodi sono collegati tra loro da riferimenti tipizzati – ad esempio, HasComponent, HasProperty, Organizes, HasSubtype. Questo crea un grafo orientato che i client possono esplorare per scoprire il contenuto del server senza conoscere preventivamente la struttura dei dati.

NodeClassScopoEsempio nel BMS
OggettoContenitore che raggruppa nodi correlati; nessun valore proprioOggetto AHU_01 che raggruppa tutte le variabili dell'UTA
VariabileContiene un valore tipizzato; leggibile e opzionalmente scrivibileSupplyAirTemp (Float, °C), FanSpeed (UInt16, RPM)
MetodoFunzione richiamabile; argomenti di input e outputResetAlarm(), SetOperatingMode(mode: Int32)
VistaSottoinsieme denominato dello spazio degli indirizzi per navigazione filtrataEnergyMeteringView che mostra solo nodi kWh
Tipo di datoDefinisce il tipo scalare o strutturato utilizzato dalle variabiliEnumHvacMode {Auto=0, Heating=1, Cooling=2}
ObjectTypeModello per nodi oggetto (come una definizione di classe)HVACUnitType con componenti standard
VariableTypeModello per nodi variabile con attributi predefinitiAnalogItemType con proprietà EngineeringUnits
ReferenceTypeDefinisce la semantica di un riferimento tra nodiHasComponent, HasProperty, Organizes

Spazio degli indirizzi: namespace e albero navigabile

Lo spazio degli indirizzi è strutturato come un albero navigabile. Ogni nodo è identificato da un NodeId composto da un indice di namespace e un identificatore (numerico, stringa o GUID). Il namespace 0 (ns=0) è sempre il namespace standard OPC UA contenente i tipi incorporati e i nodi standard. I namespace 1+ sono assegnati dal server per contenuti specifici del fornitore o dell'applicazione. I client scoprono la tabella dei namespace tramite la chiamata al servizio GetNamespaceArray.

Spazio degli indirizzi OPC UA — esempio 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]

I client navigano dalla radice Objects utilizzando il servizio Browse, seguendo i riferimenti gerarchici (HasComponent, Organizes, HasProperty) per scoprire i nodi. Il servizio TranslateBrowsePathsToNodeIds consente ai client di saltare direttamente a un percorso noto senza attraversare l'intero albero — utile per il polling sensibile alle prestazioni di variabili note.

Opzioni di trasporto

OPC UA definisce tre binding di trasporto. La scelta influisce su latenza, attraversamento firewall e overhead del protocollo. OPC UA Binary su TCP è il default per l'integrazione BMS a livello di impianto; HTTPS e WebSocket sono utilizzati per interfacce cloud o accessibili dal browser.

TrasportoPrefisso URIPorta predefinitaOverheadNote
OPC UA TCPopc.tcp://4840Il più basso – framing binarioOttimo per l'officina; connessione TCP persistente; non amico dei firewall
OPC UA HTTPSopc.https://443Medio — HTTP/1.1 + TLSAmico dei firewall; può attraversare proxy; latenza più alta per richiesta
OPC UA WebSocketsopc.wss://443Basso — framing WebSocketCompatibile con browser; persistente; utilizzato per Web SCADA e gateway cloud

Raccomandazione per il livello di stabilimento: Utilizzare sempre opc.tcp:// all'interno di una LAN dell'edificio o VLAN OT. La connessione TCP persistente elimina il sovraccarico dell'handshake TLS per richiesta e offre la latenza di notifica di sottoscrizione più bassa. Riservare HTTPS per integrazioni cross-site o cloud dove la porta firewall 4840 non può essere aperta.

Modalità di sicurezza e politiche di sicurezza

La sicurezza OPC UA viene negoziata a livello di Secure Channel prima dello scambio di messaggi applicativi. Il server pubblica i suoi EndpointDescriptions supportati (combinazioni di MessageSecurityMode e SecurityPolicyUri). Il client ne seleziona uno all'apertura di una connessione. Non utilizzare mai None in un ambiente di produzione – trasmette tutti i dati in chiaro senza protezione dell'integrità.

MessageSecurityModeProtezioneCaso d'uso
NessunoNessuna firma, nessuna crittografiaSolo laboratorio/sviluppo – mai in produzione
FirmaIntegrità HMAC dei messaggi; nessuna crittografia del payloadSCADA critico per le prestazioni su LAN chiusa affidabile
FirmaECrittografaHMAC + crittografia AES di tutti i payload dei messaggiStandard per tutte le integrazioni BMS e cloud

SecurityPolicyUri seleziona gli algoritmi crittografici. Le politiche attualmente raccomandate (secondo IEC 62541-7:2022) sono:

SecurityPolicyUriAsimmetrico (scambio di chiavi)Simmetrico (dati)Stato
Basic128Rsa15RSA-PKCS1-v1.5 / 1024 bitAES-128-CBCDeprecato — non utilizzare
Basic256RSA-OAEP / 1024 bitAES-256-CBCDeprecato — non utilizzare
Basic256Sha256RSA-OAEP / 2048 bit + SHA-256AES-256-CBC + SHA-256 HMACCorrente – ampiamente supportata
Aes128Sha256RsaOaepRSA-OAEP / 2048 bit + SHA-256AES-128-CBC + SHA-256 HMACCorrente – carico CPU inferiore
Aes256Sha256RsaPssRSA-PSS / 2048 bit + SHA-256AES-256-CBC + SHA-256 HMACConsigliata – la più forte, da usare dove supportata

Avviso di deprecazione: Basic128Rsa15 e Basic256 utilizzano chiavi RSA a 1024 bit e SHA-1, entrambi considerati crittograficamente deboli. IEC 62541-7:2022 li segna come deprecati. Kepware KEPServerEX 6.x e Siemens DESIGO CC supportano Basic256Sha256 e Aes256Sha256RsaPss. Disabilitare le politiche deprecate nella configurazione del server di produzione per prevenire attacchi di downgrade.

Metodi di autenticazione

L'autenticazione viene eseguita a livello di sessione (sopra il canale sicuro). OPC UA definisce tre tipi di token di identità ActivateSession. L'autenticazione basata su certificato è la più sicura ed è richiesta per gli standard di sicurezza industriale come IEC 62443-3-3 Security Level 2.

Tipo di tokenDescrizioneRaccomandazione
AnonymousIdentityTokenNessuna credenziale – qualsiasi client può creare una sessioneDisabilitare in produzione; accettabile solo per dashboard pubbliche di sola lettura
UserNameIdentityTokenNome utente e password; password crittografata con chiave pubblica del serverAccettabile per accesso operatore; utilizzare con trasporto Sign+Encrypt
X509IdentityTokenIl client presenta un certificato X.509 valido; il server lo convalida rispetto alla lista di fiduciaRichiesto per integrazione macchina-macchina e conformità IEC 62443 SL-2

Sessioni e sottoscrizioni

Una sessione viene stabilita sul canale sicuro dopo l'autenticazione. Le sessioni hanno un RequestedSessionTimeout (tipicamente 60–3600 secondi); se il client non invia un keep-alive prima della scadenza, il server elimina la sessione e tutte le sue sottoscrizioni. I client dovrebbero gestire la riconnessione con ripristino o trasferimento della sessione.

Le sottoscrizioni sono il meccanismo principale per il monitoraggio efficiente dei dati. Invece di interrogare ripetutamente le variabili (che genera traffico inutile), i client creano una sottoscrizione con un PublishingInterval e aggiungono MonitoredItems. Il server campiona ogni MonitoredItem all'intervallo SamplingInterval e accoda le modifiche dei valori; quando scatta il PublishingInterval, tutte le notifiche in coda vengono inviate in un unico messaggio PublishResponse.

Parametri della sottoscrizione — campi chiave

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

Filtro deadband per sensori HVAC: Impostare un deadband assoluto di 0,2–0,5°C sulle variabili di temperatura impedisce al server di inondare la sottoscrizione con aggiornamenti banali dovuti al rumore. Per i contatori di energia, è tipico un deadband percentuale dell'1% sui contatori kWh. Il filtraggio deadband avviene lato server, riducendo sia il carico della CPU che il traffico di rete.

Specifiche companion OPC UA

Le specifiche companion estendono lo standard base OPC UA con modelli informativi specifici del dominio. Definiscono ObjectTypes, VariableTypes e URI di namespace standard in modo che dispositivi di diversi produttori espongano i dati in una struttura coerente e interoperabile. Gli ingegneri di automazione degli edifici dovrebbero conoscere le seguenti specifiche companion:

SpecificaAmbito di applicazioneTipi di oggetti chiave
IEC 62541-100 (OPC UA per edifici)Automazione degli edifici: spazi, zone, apparecchiature, misurazione dell'energiaBuildingType, SpaceType, HVACSystemType, EnergyMeterType
OPC UA per FDI (Integrazione dei dispositivi di campo)Dispositivi di campo: sensori, attuatori, strumenti di processoDeviceType, FunctionBlockType, ParameterType
OPC UA per PLCopenElementi del programma PLC: blocchi funzione, allarmi, taskFunctionBlockType, AlarmType, TaskType
OPC UA per I4.0 Asset Administration ShellGemello digitale: metadati dell'asset, sottomodelli, proprietàAssetAdministrationShellType, SubmodelType
OPC UA per dispositivi (DI)Informazioni di base sui dispositivi hardwareDeviceType, ComponentType, SoftwareType

Hai bisogno di una configurazione del server OPC UA per il tuo progetto BMS?

Configuriamo e proteggiamo server OPC UA su Siemens DESIGO CC, Beckhoff TwinCAT e Kepware KEPServerEX – inclusa la gestione dei certificati, l'indurimento delle policy di sicurezza e la messa a punto delle sottoscrizioni per distribuzioni di sensori ad alta densità.

Richiedi un preventivo →
Caricamento in corso ...
Torna all'inizio