Connecter OPC UA à Beckhoff TwinCAT
| Produit | Beckhoff TwinCAT |
|---|---|
| Catégorie | PLC |
| Rôle OPC UA | Client et serveur |
TwinCAT expose OPC UA via la fonction TF6100 : un serveur, un client et une passerelle, configurés sur la cible et non dans le programme automate. Les symboles sont publiés par des pragmas d'attribut dans le code, ce qui fait de l'interface publiée une décision prise à la compilation. TF6100 est une fonction sous licence : confirmez donc les licences auprès de Beckhoff.
Avant de commencer
- La fonction OPC UA TF6100 installée sur la cible et licenciée pour elle. La gestion des licences sur les cibles Beckhoff est un vrai point de blocage ; déterminez la licence nécessaire et son mode d'application avant la mise en service.
- Un projet TwinCAT que vous pouvez compiler et activer, car la publication des symboles est pilotée par des attributs dans le source et prend effet à l'activation.
- Un accès à la configuration du serveur OPC UA de la cible, que ce soit via l'outil Configurator ou le fichier de configuration du serveur, ainsi qu'un accès au système de fichiers de son répertoire PKI pour le travail sur les certificats.
- Une décision sur le port de runtime que vous exposez. Une cible TwinCAT héberge couramment plus d'un runtime automate, et chacun est un endpoint ADS distinct que le serveur peut publier.
Mise en place
- Installez et licenciez TF6100 sur la cibleLa fonction doit être présente et licenciée sur la machine qui va servir, ce qui, sur un IPC ou un contrôleur embarqué Beckhoff, est l'automate lui-même et non le PC d'ingénierie. Vérifiez l'état de la licence avant de déboguer quoi que ce soit d'autre.
- Marquez les symboles que vous voulez publierLa publication se fait sur demande, via des pragmas d'attribut dans la déclaration, par exemple {attribute 'OPC.UA.DA' := '1'} au-dessus d'une variable, d'une structure ou d'une liste de variables globales entière, un attribut d'accès associé déterminant si le symbole est lisible, inscriptible ou les deux. Appliquer le pragma à une GVL ou à une structure publie ses membres : c'est ainsi que l'on garde une interface réduite et relisible.
- Recompilez et activez la configurationLes pragmas sont compilés dans l'information de symboles : une recompilation et une activation sont donc nécessaires avant que l'espace d'adressage change. Un ingénieur qui modifie des pragmas puis s'étonne que l'arborescence de browse n'ait pas bougé a presque toujours sauté cette étape.
- Pointez le serveur vers le runtime et vérifiez le namespaceConfigurez quel équipement ADS et quel port de runtime le serveur publie, puis parcourez l'arborescence obtenue. Lisez le NamespaceArray et notez l'URI du namespace du runtime ; c'est cet URI, et non l'index, que doit contenir la configuration de votre client.
- Réalisez l'échange de certificats sur la cibleLe serveur tient un répertoire PKI avec les dossiers habituels trusted, issuer, rejected et CRL. Connectez-vous une fois avec votre client, laissez la tentative échouer, puis déplacez le certificat client du dossier rejected vers le dossier trusted sur la cible et redémarrez le serveur s'il met la liste de confiance en cache. Faites également confiance au certificat serveur côté client.
- Importez un modèle d'information si la machine en a unLà où le build TF6100 installé supporte l'import de nodeset, chargez le NodeSet2 du companion et liez les symboles publiés aux variables du modèle, pour que le client voie des types standard au lieu d'une arborescence de symboles ADS. Confirmez le mécanisme d'import supporté par votre build avant de concevoir autour.
- Réglez les abonnements en fonction de la réalité ADSLe serveur échantillonne le runtime via ADS : votre intervalle d'échantillonnage OPC UA est donc borné par ce que cette couche et le cycle de tâche peuvent fournir. Réglez l'intervalle de publication sur la cadence dont votre consommateur a besoin, appliquez des bandes mortes aux analogiques, et relisez les intervalles révisés que renvoie le serveur.
À quoi ressemble l'espace d'adressage
L'espace d'adressage par défaut reflète l'arborescence des symboles ADS du runtime publié : une hiérarchie suivant le device et le port du runtime, puis les listes de variables globales et les instances de programme, puis les variables que vous avez marquées, les membres de structure étant imbriqués tels qu'ils sont déclarés. Les identifiants sont des chaînes construites à partir du chemin du symbole : une variable apparaît donc sous le nom pleinement qualifié qu'elle porte dans le code, ce qui rend la correspondance lisible mais couple votre client au nommage du code. Les versions plus récentes peuvent aussi présenter un dossier de type modèle d'équipement dérivé du modèle Device Information. Lorsqu'un nodeset a été importé et lié, les types companion standard apparaissent à côté de l'arborescence des symboles ou à sa place, et c'est la version sur laquelle il faut insister pour toute intégration que vous comptez réutiliser.
Les pièges
- TF6100 est sous licence, et la licence réside sur la cible. C'est un risque d'achat et de planning plutôt qu'un risque technique, et c'est le même type de piège que l'option serveur d'un fournisseur d'automates : confirmez la licence auprès de Beckhoff avant de vous engager sur des dates.
- Renommer une variable, la déplacer d'une GVL à une autre ou changer une structure modifie l'identifiant chaîne, et le client casse avec BadNodeIdUnknown alors que rien n'a changé sur la machine. Traitez l'ensemble des symboles marqués par pragma comme une API publiée, avec un processus de gestion des changements.
- Les indices de namespace sont attribués au démarrage du serveur et peuvent se décaler quand l'ensemble des runtimes publiés ou la configuration du serveur change. Résolvez-les depuis le NamespaceArray à la connexion.
- La confiance dans les certificats est ici, comme partout, le principal obstacle pratique, avec cette particularité que le magasin de confiance est un répertoire sur le contrôleur. Quelqu'un doit avoir un accès au système de fichiers de ce contrôleur au moment de la mise en service, et cette personne n'est souvent pas celle qui porte le sujet OPC UA.
- L'attribut d'accès en écriture est distinct de la publication. Un symbole publié en lecture seule est visible, accepte une requête d'écriture et renvoie un statut Bad : vérifiez donc toujours le StatusCode renvoyé.
- Le serveur lit via ADS : un symbole mis à jour une fois par cycle de tâche ne peut donc pas être échantillonné plus vite que ce cycle, quel que soit l'intervalle demandé. Des intervalles demandés rapides achètent de la charge CPU, pas de la résolution.
- Des structures publiées en bloc peuvent arriver sous forme de valeurs structurées que votre client doit décoder. Vérifiez que votre client sait gérer le mécanisme de description de types du serveur avant de concevoir autour de structures plutôt que de variables plates.
En extraire les données OEE
TwinCAT est l'une des meilleures plateformes automate pour prélever des données de TRS, car le mécanisme de pragmas permet au constructeur de publier une interface réduite et délibérée : une variable d'état, un compteur de pièces bonnes et un compteur de rebuts, un code de défaut ou de motif, un horodatage de cycle. Exigez cette interface plutôt qu'un export massif de symboles. Les comptages doivent être tenus dans le PLC sous forme de compteurs ; détecter les fronts d'un booléen aux cadences d'échantillonnage OPC UA fera manquer les cycles courts, car votre échantillonnage est borné par le cycle de tâche et l'intervalle de publication. Si le constructeur a importé un nodeset machinery et lié les symboles à une machine d'état et à un compteur standard, le mappage de la disponibilité et des comptages devient portable et vous pouvez réutiliser le client sur les machines d'autres fournisseurs. Le temps de production planifié, les calendriers d'équipes et les temps de cycle standard ne sont pas dans l'automate.
Dernière vérification le 7 septembre 2026 par rapport à OPC UA 1.05.07. OPC UA Connect est une ressource pédagogique et n'est pas affiliée à l'OPC Foundation.