Configuration du client OPC UA sur PLCnext Control : Guide étape par étape
La version firmware 2023.0 inclut un composant client OPC UA très attendu. Le centre d'informations PLCnext inclut une bonne référence technique pour cette fonctionnalité.
Ce tutoriel est un guide étape par étape montrant comment configurer le client OPC UA dans un dispositif PLCnext Control afin qu'il échange des données avec un serveur OPC UA.
Vous aurez besoin de :
- Un dispositif PLCnext Control exécutant le firmware 2023.0 ou ultérieur pour agir en tant que client OPC UA. Si vous devez mettre à niveau le firmware sur votre dispositif PLCnext Control, vous pouvez suivre la procédure montrée dans le Centre d'informations.
- PLCnext Engineer version 2023.3 ou ultérieure.
- Un serveur OPC UA. Cet article utilise un second dispositif PLCnext Control comme serveur OPC UA, mais vous pouvez utiliser le même dispositif PLCnext Control que celui que vous utilisez pour héberger le client, ou alternativement tout serveur OPC UA tiers s'exécutant (par exemple) sur un PC Windows. Pour les serveurs tiers, vous devrez déterminer comment adapter les étapes « serveur » ci-dessous pour votre serveur.
- UaExpert de Unified Automation, nécessaire pour obtenir des informations sur les étiquettes (tags) du serveur OPC UA que nous utiliserons dans la configuration de notre propre client OPC UA.
L'un des points clés à retenir lors de la configuration des communications OPC UA est que, pour des raisons de sécurité, le client OPC UA et le serveur OPC UA doivent se faire confiance mutuellement. Par conséquent, les certificats de sécurité doivent être échangés entre les dispositifs client et serveur. Cette procédure implique de passer d'un dispositif client à un dispositif serveur, ce qui peut être un peu déroutant. Si vous avez des suggestions pour simplifier la procédure (sans désactiver les contrôles de sécurité !), n'hésitez pas à les ajouter dans les commentaires.
Procédure
Dispositif serveur OPC UA
Ouvrez le site de gestion web (WBM) en naviguant vers l'adresse IP du PLC.
Sélectionnez l'élément Services système (System Services) dans le menu Configuration.
Activez le service Serveur OPC UA (OPC UA Server), s'il n'est pas déjà activé.
Appuyez sur le bouton Appliquer et redémarrer (Apply and reboot) si nécessaire.
Ouvrez PLCnext Engineer.
Créez un nouveau projet PLCnext Engineer en utilisant le modèle pour votre dispositif PLCnext Control.
Définissez l'adresse IP du PLC dans le projet PLCnext Engineer.
Sur la page de configuration Serveur OPC UA :
définissez le Nom DNS / Adresse IP (DNS name / IP address) sur le nom DNS ou l'adresse IP du PLC, selon que le client OPC UA accédera au serveur en utilisant un nom DNS ou l'adresse IP du serveur. Cette information sera incluse dans le certificat de sécurité du serveur OPC UA. De nombreux clients OPC UA rejetteront le certificat du serveur si cette information dans le certificat ne correspond pas à l'URL du serveur.
définissez Visibilité des variables (Visibility of variables) sur Marquées (Marked). Cela signifie que toutes les variables marquées avec l'attribut OPC seront accessibles via le serveur OPC UA.
Créez des variables qui seront exposées par le serveur OPC UA. Assurez-vous que la case à cocher OPC est cochée pour ces variables. Dans l'exemple ci-dessous, deux variables ont été créées dans le programme Main.
Ajoutez de la logique pour modifier la variable de sortie lorsqu'une nouvelle valeur d'entrée est reçue. Dans cet exemple, le programme Main exécute le code suivant :
Server_Data_Out := Server_Data_In + 1;Écrivez et démarrez le projet.
Notez que la version PLCnext Engineer 2025.0 et ultérieures inclut une fonctionnalité « parcourir » (browse) qui peut être utilisée pour créer des entrées de variables dans le client OPC UA. Si cette fonctionnalité de parcours est utilisée, il n'est pas nécessaire d'utiliser UaExpert pour obtenir des informations sur les variables du serveur, et les trois prochaines étapes peuvent être ignorées.
Utilisez UaExpert pour vous connecter au serveur OPC UA en utilisant le nom d'utilisateur et le mot de passe du PLC. Vous devriez voir un avertissement indiquant que le certificat est « Non approuvé » (Untrusted), mais il ne devrait pas y avoir d'autres avertissements.
Approuvez le certificat du serveur, soit de manière permanente, soit juste pour cette session.
Pour chaque variable du serveur, notez le nom de l'Identifiant de nœud (Node ID) et de l'Espace de noms (Namespace) pour cette variable.
Ouvrez à nouveau le site WBM pour le PLC serveur.
Sélectionnez l'élément Authentification par certificat (Certificate Authentication) dans le menu Sécurité.
Sélectionnez l'onglet Magasins d'identité (Identity Stores).
Téléchargez le certificat depuis le magasin d'identité OPC UA-auto-signé [serveur] (OPC UA-self-signed). La paire de clés n'a pas besoin d'être téléchargée.
Dispositif client OPC UA
Ouvrez le site de gestion web (WBM) en naviguant vers l'adresse IP du PLC.
Sélectionnez l'élément Services système dans le menu Configuration.
Activez le service Client OPC UA, s'il n'est pas déjà activé.
Appuyez sur le bouton Appliquer et redémarrer si nécessaire.
Une fois le redémarrage terminé, reconnectez-vous au site WBM et sélectionnez l'élément Authentification par certificat dans le menu Sécurité.
Sélectionnez l'onglet Magasins de confiance (Trust Stores).
Ajoutez le certificat OPC UA-auto-signé [serveur] (téléchargé précédemment) au magasin de confiance nommé Client OPC UA. Maintenant, le client OPC UA fera confiance au certificat de sécurité utilisé par le serveur OPC UA pour vérifier son identité. Cette étape devra être répétée chaque fois que le certificat du serveur change.
Sélectionnez l'onglet Magasins d'identité (Identity Stores).
Téléchargez le certificat depuis le magasin d'identité Client OPC UA auto-signé (OPC UA Client self-signed). La paire de clés n'a pas besoin d'être téléchargée.
Dispositif serveur OPC UA (suite)
Ouvrez le site de gestion web (WBM) en naviguant vers l'adresse IP du PLC.
Sélectionnez l'élément Authentification par certificat dans le menu Sécurité.
Sélectionnez l'onglet Magasins de confiance.
Ajoutez le certificat Client OPC UA auto-signé (téléchargé précédemment) au magasin de confiance nommé OPC UA-configurable. Maintenant, le serveur OPC UA fera confiance au certificat de sécurité utilisé par le client OPC UA pour vérifier son identité. Cette étape devra être répétée chaque fois que le certificat du client change.
Dispositif client OPC UA (suite)
Ouvrez PLCnext Engineer.
Créez un nouveau projet PLCnext Engineer en utilisant le modèle pour votre dispositif PLCnext Control. Si vous utilisez le même dispositif pour le client et le serveur OPC UA, le même projet PLCnext Engineer sera utilisé.
Définissez l'adresse IP du PLC dans le projet PLCnext Engineer.
Uniquement requis pour les PLC exécutant des versions de firmware antérieures à 2023.6 : Sur la page de configuration Serveur OPC UA, définissez Visibilité des variables sur Marquées. Oui, cela semble étrange d'exiger ce paramètre serveur OPC UA pour le client OPC UA. Cela est corrigé dans les versions de firmware 2023.6 et ultérieures.
Créez des variables qui seront connectées aux variables du serveur OPC UA. Uniquement requis pour les PLC exécutant des versions de firmware antérieures à 2023.6 : Assurez-vous que la case à cocher OPC est cochée pour ces variables (la case à cocher n'est pas requise pour les PLC exécutant le firmware 2023.6 ou ultérieur).
Dans l'exemple ci-dessous, deux variables ont été créées dans le programme Main.
Dans l'onglet Connexions client OPC UA, ajoutez un Serveur et deux Groupes de variables, comme indiqué ci-dessous.
L'URL du serveur, le nom d'utilisateur et le mot de passe doivent être modifiés pour convenir au serveur OPC UA que vous utilisez.
Dans le groupe de variables « S'abonner » (Subscribe), ajoutez un mappage de variable, comme indiqué ci-dessous.
Cela transfère automatiquement la valeur de la variable distante (sur le serveur OPC UA) vers la variable locale dans le projet PLCnext Engineer.
Dans le groupe de variables « Écrire » (Write), ajoutez un mappage de variable, comme indiqué ci-dessous.
Cela transfère automatiquement la valeur de la variable locale dans le projet PLCnext Engineer vers la variable distante (sur le serveur OPC UA).
Écrivez et démarrez le projet PLCnext Engineer.
En mode Débogage, modifiez la valeur de la variable
Client_Data_out. La valeur sera écrite dans la variableServer_Data_Insur le serveur OPC UA. Cette valeur sera incrémentée par le serveur et écrite dans la variableServer_Data_Out. La valeur de cette variable sera ensuite transférée vers la variableClient_Data_Insur le client.
Ça ne fonctionne pas ?
Veuillez consulter le Guide de dépannage dans le Centre d'informations PLCnext (en bas de la page).
Questions fréquentes
Q : Le client peut-il se connecter à un serveur OPC UA en utilisant l'authentification par Certificat/Clé ?
R : Non, pas pour le moment.
Q : Comment le client OPC UA stocke-t-il le mot de passe du serveur ?
R : Actuellement, le mot de passe du serveur OPC UA est stocké en clair dans le fichier de configuration du client, mais les développeurs du runtime PLCnext travaillent sur une méthode de stockage de mot de passe plus sécurisée.
Q : Puis-je obtenir des informations de qualité (ex: Code d'état, Horodatage) pour les données lues depuis un serveur OPC UA ?
R : Pas pour le moment, désolé.
Cet article a été mis à jour le 24.03.2025 pour inclure des informations sur la fonctionnalité de parcours du serveur (Server Browse) maintenant disponible dans PLCnext Engineer.
Annexe : Configuration basée sur fichiers
La configuration du client OPC UA dans PLCnext Engineer est stockée sur le contrôleur au format XML. Pour les applications qui n'utilisent pas PLCnext Engineer, il est possible de configurer le client OPC UA en écrivant la configuration XML directement sur le contrôleur.
La configuration préparée dans cet exemple est représentée dans les fichiers XML suivants :
Tous les changements requis aux paramètres par défaut du client OPC UA sont définis dans le fichier
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/client.module.config:<?xml version="1.0" encoding="utf-8" standalone="yes"?> <OpcUAClientModuleConfigurationDocument schemaVersion="1.0" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig" xmlns="https://www.phoenixcontact.com/schema/opcuaclientmoduleconfig"> <Application> <CertificateStore> <SelfSignedIdentityStoreName>OPC UA Client self-signed</SelfSignedIdentityStoreName> <GivenIdentityStoreName>OPC UA Client</GivenIdentityStoreName> <TrustStoreName>OPC UA Client</TrustStoreName> </CertificateStore> <SessionSecurity> <ApplicationAuthentication>false</ApplicationAuthentication> <ApplicationUriCheck>true</ApplicationUriCheck> <CertificateHostnameCheck>true</CertificateHostnameCheck> <CertificateTimeCheck>true</CertificateTimeCheck> <CertificateIssuerTimeCheck>true</CertificateIssuerTimeCheck> <PasswordEncryptionCheck>true</PasswordEncryptionCheck> </SessionSecurity> <Timeouts> <SessionTimeout>1200000</SessionTimeout> <ConnectTimeout>5000</ConnectTimeout> <WatchdogTimeout>5000</WatchdogTimeout> <CallTimeout>10000</CallTimeout> </Timeouts> </Application> </OpcUAClientModuleConfigurationDocument>Les connexions du client OPC UA sont définies dans le fichier
/opt/plcnext/projects/current/Services/OpcUA/Modules/Client/Configs/clientconnections.xml:<?xml version="1.0" encoding="utf-8"?> <eUAClientConfigurationDocument xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:uax="https://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="https://phoenixcontact.com/OpcUA/PLCnext/UAClientConfig/Types.xsd"> <eUAClientConfiguration> <Name>ClientConnectionsConfiguration</Name> <NamespaceArray> <uax:String>https://phoenixcontact.com/OpcUA/PLCnext/GlobalDataSpace/</uax:String> </NamespaceArray> <ServerConnections> <eUAClientServerConnection> <EncodingMask>3</EncodingMask> <Endpoint> <uax:EndpointUrl>opc.tcp://192.168.1.10:4840</uax:EndpointUrl> <uax:SecurityMode>Sign_2</uax:SecurityMode> <uax:SecurityPolicyUri>https://opcfoundation.org/UA/SecurityPolicy#Basic256Sha256</uax:SecurityPolicyUri> </Endpoint> <UserTokenType>UserName_1</UserTokenType> <UserName>admin</UserName> <Password>xxxxxxxx</Password> </eUAClientServerConnection> </ServerConnections> <VariableGroups> <eUAClientVariableGroup> <GroupType>Write_1</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_Out</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_In</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> <eUAClientVariableGroup> <GroupType>Subscribe_0</GroupType> <CycleTime>100</CycleTime> <NodeMappings> <eUAClientNodeMapping> <LocalVariable> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Client_Data_In</uax:Identifier> </LocalVariable> <RemoteVariableDescriptor> <EncodingMask>2</EncodingMask> <ServerIndex>1</ServerIndex> <NodeId> <uax:Identifier>ns=1;s=Arp.Plc.Eclr/MainInstance.Server_Data_Out</uax:Identifier> </NodeId> </RemoteVariableDescriptor> </eUAClientNodeMapping> </NodeMappings> </eUAClientVariableGroup> </VariableGroups> </eUAClientConfiguration> </eUAClientConfigurationDocument>Ce fichier utilise les informations Espace de noms (Namespace) et Identifiant de nœud (Node ID) enregistrées précédemment (avec UaExpert) pour spécifier quelles variables du serveur le client accédera.
Dans le fichier ci-dessus, modifiez les éléments suivants pour votre application :
L'élément
uax:EndpointUrldoit inclure l'adresse IP (ou le nom DNS) de votre serveur OPC UA.Les éléments
UsernameetPassworddoivent contenir les identifiants requis pour le serveur OPC UA.
IMPORTANT : Dans cet exemple, les chaînes Node ID dans UaExpert incluaient le texte
ns=6. Dans le fichier XML ci-dessus, cela a été changé enns=1, car le paramètre « namespace » (ns) est un index dans la liste des espaces de noms sur le client local. Dans cet exemple, le nom d'Espace de noms copié depuis UaExpert est le premier (et unique) espace de noms dans la liste des espaces de noms dans notre fichierclientconfig.xml.
Le runtime PLCnext doit être redémarré après avoir apporté des modifications aux fichiers de configuration du client OPC UA.
Technologie industrielle
- Maximiser l'efficacité des installations : comment le logiciel CMMS protège la valeur et réduit les coûts
- 7 façons dont l'éclairage intelligent réduit les coûts dans l'industrie
- Maîtriser l'émetteur IR : Comment utiliser les télécommandes infrarouges sur votre téléphone
- Fabrication de composants de train d'atterrissage : Insights des leaders aérospatial et défense
- Révolutionner le café : comment la blockchain améliore la traçabilité, la transparence et l'équité
- Conversion Tension-Courant : Conception Pratique d'un Amplificateur de Transconductance
- 2020 : Les 10 plus grands porte-conteneurs du monde
- MachineMetrics obtient la certification ISO 27001, établissant une nouvelle référence en sécurité de l'information
- Guide complet des tests de corrosion : méthodes, normes et équipements (Brouillard salin, CCT et plus)