OPC UA · IEC 62541 · Modèle d'information · Sécurité · Sessions · 10 min de lecture

Architecture OPC UA : Modèle d'information, sécurité, sessions et transport

OPC UA (IEC 62541) est une norme en 13 parties qui définit une architecture orientée services, indépendante de la plateforme, pour la communication en automatisme industriel et dans le bâtiment. Contrairement à son prédécesseur OPC Classic (qui était limité à Windows COM/DCOM), OPC UA fonctionne sur tout système d'exploitation, intègre un modèle de sécurité complet et fournit un modèle d'information unifié qui rend chaque serveur auto-descriptif – éliminant ainsi le besoin de dictionnaires de données externes lors de l'intégration des plateformes BMS, SCADA et IoT.

Structure de la norme IEC 62541

IEC 62541 se compose de 13 parties numérotées. Les parties 1 à 7 définissent l'architecture de base ; les parties 8 à 14 couvrent les mappages, la sécurité et les profils. Pour les intégrateurs d'automatisation des bâtiments, les parties les plus pertinentes sont 1 (Concepts), 3 (Modèle d'espace d'adressage), 4 (Services), 6 (Mappages — codage et transport), 7 (Profils) et la spécification compagnon IEC 62541-100 (OPC UA pour les bâtiments).

PartieTitrePertinence
IEC 62541-1Concepts et aperçuArchitecture fondamentale, modèle de service, concept de modèle d'information
IEC 62541-3Modèle d'espace d'adressageTypes NodeClass, références, attributs — le squelette du modèle de données
IEC 62541-4ServicesEnsembles de services Read, Write, Browse, Subscribe, Call — toutes les API serveur
IEC 62541-6MappagesEncodage binaire (UA Binary), encodage XML, transport opc.tcp, HTTPS, WebSockets
IEC 62541-7ProfilsProfils serveur, client et transport pour les tests de conformité
IEC 62541-12Découverte et services globauxServeur de découverte local (LDS), Serveur de découverte global (GDS) pour la gestion des certificats
IEC 62541-100OPC UA pour les bâtimentsModèle d'information mappé IFC pour les espaces, zones, CVC, comptage d'énergie

Modèle d'information : types NodeClass et références

Chaque donnée dans un serveur OPC UA est représentée comme un nœud dans l'espace d'adressage. Les nœuds ont un attribut NodeClass qui définit leur rôle. Les nœuds sont liés entre eux par des références typées – par exemple, HasComponent, HasProperty, Organizes, HasSubtype. Cela crée un graphe orienté que les clients peuvent parcourir pour découvrir le contenu du serveur sans connaissance préalable de la structure des données.

NodeClassObjectifExemple dans un BMS
ObjetConteneur regroupant des nœuds connexes ; aucune valeur propreObjet AHU_01 regroupant toutes les variables de la CTA
VariableContient une valeur typée ; lisible et éventuellement inscriptibleSupplyAirTemp (Float, °C), FanSpeed (UInt16, RPM)
MéthodeFonction appelable ; arguments d'entrée et de sortieResetAlarm(), SetOperatingMode(mode: Int32)
VueSous-ensemble nommé de l'espace d'adressage pour une navigation filtréeEnergyMeteringView affichant uniquement les nœuds kWh
Type de donnéesDéfinit le type scalaire ou structuré utilisé par les variablesEnumHvacMode {Auto=0, Heating=1, Cooling=2}
ObjectTypeModèle pour les nœuds d'objet (comme une définition de classe)HVACUnitType avec composants standard
VariableTypeModèle pour les nœuds de variable avec attributs par défautAnalogItemType avec propriété EngineeringUnits
ReferenceTypeDéfinit la sémantique d'une référence entre nœudsHasComponent, HasProperty, Organizes

Espace d'adressage : espaces de noms et arbre navigable

L'espace d'adressage est structuré comme un arbre navigable. Chaque nœud est identifié par un NodeId composé d'un index d'espace de noms et d'un identifiant (numérique, chaîne ou GUID). L'espace de noms 0 (ns=0) est toujours l'espace de noms standard OPC UA contenant les types intégrés et les nœuds standard. Les espaces de noms 1+ sont attribués par le serveur pour le contenu spécifique au fournisseur ou à l'application. Les clients découvrent la table des espaces de noms via l'appel de service GetNamespaceArray.

Espace d'adressage OPC UA — exemple 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]

Les clients naviguent à partir de la racine Objects en utilisant le service Browse, en suivant les références hiérarchiques (HasComponent, Organizes, HasProperty) pour découvrir les nœuds. Le service TranslateBrowsePathsToNodeIds permet aux clients d'accéder directement à un chemin connu sans parcourir tout l'arbre — utile pour l'interrogation sensible aux performances de variables connues.

Options de transport

OPC UA définit trois liaisons de transport. Le choix affecte la latence, le passage à travers les pare-feux et la surcharge du protocole. OPC UA Binary sur TCP est la valeur par défaut pour l'intégration BMS au niveau de l'usine ; HTTPS et WebSockets sont utilisés pour les interfaces cloud ou accessibles par navigateur.

TransportPréfixe URIPort par défautSurchargeRemarques
OPC UA TCPopc.tcp://4840Le plus faible – tramage binaireIdéal pour l'atelier ; connexion TCP persistante ; pas adapté aux pare-feu
OPC UA HTTPSopc.https://443Moyen — HTTP/1.1 + TLSAdapté aux pare-feu ; peut traverser les proxies ; latence plus élevée par requête
OPC UA WebSocketsopc.wss://443Faible — tramage WebSocketCompatible navigateur ; persistant ; utilisé pour la Web SCADA et les passerelles cloud

Recommandation pour le niveau atelier : Utilisez toujours opc.tcp:// dans un LAN de bâtiment ou un VLAN OT. La connexion TCP persistante élimine la surcharge de handshake TLS par requête et offre la latence de notification d'abonnement la plus faible. Réservez HTTPS pour les intégrations intersites ou cloud où le port pare-feu 4840 ne peut pas être ouvert.

Modes de sécurité et politiques de sécurité

La sécurité OPC UA est négociée au niveau du canal sécurisé avant tout échange de messages d'application. Le serveur annonce ses EndpointDescriptions supportées (combinaisons de MessageSecurityMode et SecurityPolicyUri). Le client en sélectionne une lors de l'ouverture d'une connexion. N'utilisez jamais None dans un environnement de production – il transmet toutes les données en clair sans protection d'intégrité.

MessageSecurityModeProtectionCas d'utilisation
AucunPas de signature, pas de chiffrementLaboratoire / développement uniquement – jamais en production
SignerIntégrité HMAC des messages ; pas de chiffrement de la charge utileSCADA critique en performance sur LAN fermé de confiance
SignerEtChiffrerHMAC + chiffrement AES de toutes les charges utiles des messagesStandard pour toutes les intégrations BMS et cloud

La SecurityPolicyUri sélectionne les algorithmes cryptographiques. Les politiques actuellement recommandées (selon IEC 62541-7:2022) sont :

SecurityPolicyUriAsymétrique (échange de clés)Symétrique (données)Statut
Basic128Rsa15RSA-PKCS1-v1.5 / 1024 bitsAES-128-CBCObsolète — ne pas utiliser
Basic256RSA-OAEP / 1024 bitsAES-256-CBCObsolète — ne pas utiliser
Basic256Sha256RSA-OAEP / 2048 bits + SHA-256AES-256-CBC + SHA-256 HMACActuel – largement pris en charge
Aes128Sha256RsaOaepRSA-OAEP / 2048 bits + SHA-256AES-128-CBC + SHA-256 HMACActuel – charge CPU plus faible
Aes256Sha256RsaPssRSA-PSS / 2048 bits + SHA-256AES-256-CBC + SHA-256 HMACRecommandé – le plus fort, utiliser là où il est pris en charge

Avis de dépréciation : Basic128Rsa15 et Basic256 utilisent des clés RSA de 1024 bits et SHA-1, tous deux considérés comme cryptographiquement faibles. La norme IEC 62541-7:2022 les marque comme obsolètes. Kepware KEPServerEX 6.x et Siemens DESIGO CC prennent en charge Basic256Sha256 et Aes256Sha256RsaPss. Désactivez les politiques obsolètes dans la configuration du serveur de production pour empêcher les attaques par rétrogradation.

Méthodes d'authentification

L'authentification est effectuée au niveau de la session (au-dessus du canal sécurisé). OPC UA définit trois types de jetons d'identité ActivateSession. L'authentification par certificat est la plus sécurisée et est requise pour les normes de sécurité industrielle telles que IEC 62443-3-3 Security Level 2.

Type de jetonDescriptionRecommandation
AnonymousIdentityTokenAucun identifiant – tout client peut créer une sessionDésactiver en production ; acceptable uniquement pour les tableaux de bord publics en lecture seule
UserNameIdentityTokenNom d'utilisateur et mot de passe ; mot de passe chiffré avec la clé publique du serveurAcceptable pour l'accès opérateur ; utiliser avec le transport Sign+Encrypt
X509IdentityTokenLe client présente un certificat X.509 valide ; le serveur valide par rapport à la liste de confianceRequis pour l'intégration machine à machine et la conformité IEC 62443 SL-2

Sessions et abonnements

Une session est établie sur le canal sécurisé après authentification. Les sessions ont un RequestedSessionTimeout (généralement 60 à 3600 secondes) ; si le client n'envoie pas de keep-alive avant l'expiration, le serveur supprime la session et tous ses abonnements. Les clients doivent gérer la reconnexion avec rétablissement ou transfert de session.

Les abonnements sont le mécanisme principal pour une surveillance efficace des données. Au lieu d'interroger les variables à plusieurs reprises (ce qui génère un trafic inutile), les clients créent un abonnement avec un PublishingInterval et y ajoutent des MonitoredItems. Le serveur échantillonne chaque MonitoredItem à l'intervalle SamplingInterval et met en file d'attente les changements de valeur ; lorsque le PublishingInterval se déclenche, toutes les notifications en attente sont envoyées dans un seul message PublishResponse.

Paramètres d'abonnement — champs clés

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

Filtrage par zone morte pour les capteurs CVC : Définir une zone morte absolue de 0,2 à 0,5 °C sur les variables de température empêche le serveur d'inonder l'abonnement de mises à jour triviales dues au bruit. Pour les compteurs d'énergie, une zone morte en pourcentage de 1 % sur les compteurs kWh est typique. Le filtrage par zone morte s'effectue côté serveur, réduisant à la fois la charge CPU et le trafic réseau.

Spécifications compagnons OPC UA

Les spécifications compagnons étendent le standard de base OPC UA avec des modèles d'information spécifiques au domaine. Elles définissent des ObjectTypes, VariableTypes et URI d'espace de noms standard afin que les appareils de différents fabricants exposent les données dans une structure cohérente et interopérable. Les ingénieurs en automatisation des bâtiments doivent connaître les spécifications compagnons suivantes :

SpécificationDomaine d'applicationTypes d'objets clés
IEC 62541-100 (OPC UA pour les bâtiments)Automatisation des bâtiments : espaces, zones, équipements, comptage d'énergieBuildingType, SpaceType, HVACSystemType, EnergyMeterType
OPC UA pour FDI (Intégration des appareils de terrain)Appareils de terrain : capteurs, actionneurs, instruments de processusDeviceType, FunctionBlockType, ParameterType
OPC UA pour PLCopenÉléments de programme PLC : blocs fonctionnels, alarmes, tâchesFunctionBlockType, AlarmType, TaskType
OPC UA pour I4.0 Asset Administration ShellJumeau numérique : métadonnées d'actif, sous-modèles, propriétésAssetAdministrationShellType, SubmodelType
OPC UA pour les dispositifs (DI)Informations de base sur les dispositifs matérielsDeviceType, ComponentType, SoftwareType

Besoin d'une configuration de serveur OPC UA pour votre projet BMS ?

Nous configurons et sécurisons les serveurs OPC UA sur Siemens DESIGO CC, Beckhoff TwinCAT et Kepware KEPServerEX – y compris la gestion des certificats, le durcissement de la politique de sécurité et le réglage des abonnements pour les déploiements de capteurs à haute densité.

Demander un devis →
Chargement...
Retour en haut