OPC DA
Un client pour les serveurs OPC Data Access classiques sur COM/DCOM, qui roule dans un processus auxiliaire 32 bits, avec un adressage par ID d'élément et un balayage des serveurs d'une machine.
Le pilote OPC DA est un client pour les serveurs OPC Data Access classiques (versions 1.0, 2.05a et 3.0), les serveurs COM par lesquels des passerelles d'automates anciennes, des systèmes SCADA et des simulateurs publient encore leurs données. Un serveur est nommé par la machine où il roule et par son ProgID, par exemple Matrikon.OPC.Simulation.1, et chaque tag par l'ID d'élément du serveur. Ajoutez le pilote et ses équipements sur la page Connector.
Équipement
| Champ | Sens | Par défaut |
|---|---|---|
| Hôte | Le nom ou l'adresse de l'ordinateur où roule le serveur OPC DA. Vide désigne cet ordinateur, où roulent la plupart des serveurs classiques. | vide : cet ordinateur |
| Serveur / Clé | Le ProgID du serveur, tel que son éditeur l'enregistre dans Windows, par exemple Matrikon.OPC.Simulation.1. |
OPC.Server.1 |
| Intervalle de scrutation (ms) | La fréquence à laquelle la station lit les tags de l'équipement, sauf si un tag fixe son propre intervalle. | 1000 |
L'adresse de l'équipement est assemblée à partir des deux, par exemple opc.da://localhost/Matrikon.OPC.Simulation.1. Il n'y a pas de port : COM trouve le serveur par l'enregistrement de Windows lui-même.
Adressage d'un tag
Un tag est adressé par son ID d'élément, saisi en texte libre et envoyé au serveur exactement tel qu'il est écrit, par exemple Random.Real8 ou Channel1.Device1.Tag1. Les ID d'élément sont ceux du serveur; sa documentation ou un balayage les liste. La station ajoute chaque élément à un groupe de l'équipement la première fois qu'un tag le lit, et le lit sur l'équipement, pas dans le cache du serveur.
Types de donnée
Le sélecteur de Type de donnée offre les types que contient un élément OPC DA : Boolean, SByte, Byte, Int16, UInt16, Int32, UInt32, Int64, UInt64, Float, Double, String et DateTime. Chaque lecture est convertie vers le type du tag, choisissez donc le type que le serveur déclare pour l'élément, celui qu'un balayage propose : un élément réel sur 64 bits lu en Float perd en précision, et lu en Double la conserve. Une valeur que le type du tag ne peut pas contenir, comme un texte qui n'est pas un nombre ou un tableau, laisse le tag sans valeur. En OPC DA une date ne porte pas de fuseau horaire, et la station la lit et l'écrit en UTC.
Chaque valeur que le serveur renvoie porte sa qualité. Une valeur de bonne qualité (Good) atteint le tag. Une valeur de qualité incertaine (Uncertain) ou de mauvaise qualité (Bad) laisse le tag sans valeur, et la ligne du journal de la lecture échouée nomme la qualité dans les mots de la spécification OPC DA, par exemple Bad: not connected (0x0008) ou Uncertain: last usable value (0x0044). Un élément dont la lecture échoue laisse son tag sans valeur, et les autres tags de l'équipement continuent de lire.
Découverte
Découvrir liste les serveurs OPC DA enregistrés sur un ordinateur : saisissez son nom ou son adresse dans la cible du balayage, ou laissez-la vide pour cet ordinateur. Chaque serveur est proposé comme un équipement, et son espace d'adressage est parcouru : chaque élément qu'il contient est proposé comme un tag en lecture seule, avec le type que le serveur déclare pour lui : un réel sur 64 bits en Double, un entier non signé sur 16 bits en UInt16, et ainsi de suite pour chaque type ci-dessus, une valeur monétaire en Double. Un élément qui ne déclare aucun type est proposé en String, qui lit toute valeur; un élément d'un type qu'aucun tag ne lit, comme un tableau, n'est pas proposé, et le balayage le compte parmi ce qu'il a laissé de côté. Voir Découverte pour la façon dont les candidats sont choisis et ajoutés.
Le balayage demande les serveurs à l'énumérateur de serveurs OPC (OpcEnum), par les bibliothèques proxy et stub d'OPC DA enregistrées sur cet ordinateur. Tant que l'une d'elles manque, le balayage ne liste rien et dit ce qui manque, avec les étapes de Installer les OPC Core Components.
Écritures
Les tags dont l'Accès est Lecture et écriture ou Écriture seule peuvent être écrits, vers le même élément que la lecture emploie. La valeur est envoyée dans le type dans lequel le serveur tient l'élément (dans le type du tag lui-même quand le serveur ne le dit pas), convertie à partir de la valeur du tag sans passer par du texte, de sorte qu'une station dans n'importe quelle langue envoie le même nombre. Un nombre entier hors de la plage du type de l'élément est refusé avant tout envoi, jamais ramené à la valeur la plus proche que le type peut contenir. Une écriture que le serveur refuse revient refusée, avec la raison quand la station sait la dire (un élément qui n'accepte pas d'écriture, une valeur que l'élément n'accepte pas, un élément que le serveur ne connaît pas, un accès refusé) et sinon avec le code d'erreur du serveur, par exemple OPC DA 0x80004005; le journal garde le code du serveur dans tous les cas. OPC DA n'a pas de commandes : un équipement de ce pilote n'en propose aucune.
Le processus auxiliaire 32 bits
Les serveurs OPC DA sont joints par un client COM 32 bits, que la station 64 bits ne peut pas charger. Le pilote roule donc dans un processus auxiliaire qui lui est propre, Lab.Desktop.DriverBridge.exe, que la station démarre la première fois qu'un équipement ou un balayage OPC DA en a besoin, ou qu'elle vérifie les OPC Core Components, et ferme quand le Connector s'arrête. Rien ne change dans l'usage du pilote : ses équipements et ses tags sont lus, écrits, balayés et inscrits au journal comme ceux de tout autre.
Si le processus auxiliaire s'arrête, ses équipements affichent l'erreur "Le processus auxiliaire 32 bits du pilote OPC DA s'est arrêté. La station le redémarre, et l'équipement se reconnecte par lui.", la page Événements garde son code de sortie, et leurs tags perdent leurs valeurs. La station redémarre le processus auxiliaire, après une pause qui grandit tant qu'il continue de s'arrêter, et les équipements se reconnectent d'eux-mêmes par lui. Une écriture qui était en route quand le processus auxiliaire s'est arrêté revient en échec, en disant qu'on ne sait pas si la valeur a atteint l'équipement. Aucun autre pilote ni aucune autre partie de la station ne s'arrête avec lui.
Avant de commencer
- La station n'installe aucun composant OPC. L'énumérateur de serveurs OPC (OpcEnum) et les bibliothèques proxy et stub d'OPC DA viennent avec le serveur OPC DA, ou avec les OPC Core Components. La station vérifie d'elle-même s'ils sont enregistrés et, tant que l'un d'eux manque, dit comment les installer : voir Installer les OPC Core Components.
- Un serveur sur un autre ordinateur est joint par DCOM, que les deux ordinateurs doivent autoriser pour le compte Windows sous lequel roule la station : permissions DCOM, règles de pare-feu et le même compte ou un domaine approuvé. Ce réglage se fait dans Windows, jamais dans la station : voir Préparer un serveur distant.
- Le pilote ne roule que sous Windows.
Installer les OPC Core Components
La station vérifie d'elle-même, dans le processus auxiliaire 32 bits, si cet ordinateur a l'énumérateur de serveurs OPC (OpcEnum) et les bibliothèques proxy et stub d'OPC DA enregistrés pour les programmes 32 bits : la première fois que la page du pilote, la page de l'un de ses équipements ou l'agent le demande, puis toutes les 30 secondes tant que l'un d'eux manque. Tant que le Connector n'a pas démarré, on ne sait pas s'ils sont là, et rien n'en est dit. Tant que l'un d'eux manque :
| Où | Ce qui est dit |
|---|---|
| La page du pilote | Un avis d'attention, « Les OPC Core Components manquent sur cet ordinateur », avec les étapes ci-dessous. Son lien ouvre la page de l'OPC Foundation dans le navigateur de l'ordinateur. |
| La page de chaque équipement | Le même avis, sauf si l'équipement est en ligne. |
| Un balayage | Il ne liste rien et dit ce qui manque : la ligne qui clôt le balayage renvoie à l'avis, et device_discover de l'agent donne les étapes en anglais. |
| La dernière erreur d'un équipement dont la connexion échoue | Ce qui manque et les mêmes étapes, en anglais, comme sont écrites les causes propres du pilote. |
| L'agent | driver_capabilities les donne sous prerequisite, avec installed à false. |
Pour les installer :
- Exécutez de nouveau le programme d'installation de votre serveur OPC DA : il les installe généralement.
- Sinon, ouvrez la page Core Components de l'OPC Foundation et téléchargez les OPC Core Components Redistributables. Seul un utilisateur enregistré peut les télécharger : si la page indique que vous n'avez pas la permission de télécharger le fichier, connectez-vous avec « Login » ou créez un compte avec « Create Account » sur la même page.
- Prenez
opc-core-components-redistributable-<version>-x86-x64.msisur un Windows 64 bits, qui contient aussi les composants 32 bits, et celui qui se termine par-x86.msiseulement sur un Windows 32 bits. - Exécutez-le en tant qu'administrateur, et redémarrez l'ordinateur si le programme d'installation le demande.
Au plus tard 30 secondes après l'installation, l'avis disparaît, le balayage liste les serveurs OPC DA et les équipements de ce pilote se connectent avec la configuration qu'ils ont, sans redémarrer Ganter Lab.
Préparer un serveur distant
Un serveur sur cet ordinateur n'a besoin de rien d'autre. Un serveur sur un autre ordinateur se joint par DCOM, qui ne laisse rien entrer d'un autre ordinateur tant que les deux ne sont pas préparés pour cela. La préparation se fait dans Windows sur les deux ordinateurs, par un administrateur de chacun, jamais dans la station :
- Utilisez le même compte Windows avec le même mot de passe sur les deux ordinateurs (le compte sous lequel roule la station), ou un compte de domaine que les deux connaissent.
- Sur l'ordinateur du serveur, lancez
dcomcnfget ouvrez Component Services > Computers > My Computer > Properties > COM Security. Sous Access Permissions et Launch and Activation Permissions, dans Edit Limits comme dans Edit Default, accordez à ce compte tous les droits à distance. Dans Edit Limits d'Access Permissions, accordez aussi Remote Access à ANONYMOUS LOGON, dont l'énumérateur de serveurs OPC (OpcEnum) a besoin. - Au même endroit, sous My Computer > DCOM Config, ouvrez les Properties du serveur OPC et d'OpcEnum, et dans leur onglet Security personnalisez les trois autorisations avec le même compte.
- Sur l'ordinateur de la station, lancez aussi
dcomcnfget, dans Edit Limits d'Access Permissions, accordez Remote Access au compte sous lequel roule le serveur OPC : le serveur rappelle la station. - Sur l'ordinateur du serveur, dans le Pare-feu Windows Defender, autorisez en entrée le port TCP
135 et les programmes du serveur OPC et d'OpcEnum (
OpcEnum.exe), et vérifiez dans Services qu'OpcEnum roule et démarre automatiquement.
Edit Default ne change rien tant qu'Edit Limits refuse le droit : réglez les deux. DCOM répond sur le port 135 puis porte les appels sur un port que Windows choisit : un pare-feu entre les deux ordinateurs qui n'ouvre que le 135 bloque donc encore le serveur.
| Ce que Windows répond | Ce que dit la page de l'équipement |
|---|---|
| Accès refusé (0x80070005) | « hôte refuse cette station par DCOM », avec le compte sous lequel roule la station et les étapes 1 à 4 |
| Le serveur RPC n'est pas disponible (0x800706BA) | « hôte ne répond pas à DCOM » : l'ordinateur est éteint ou hors d'atteinte, son pare-feu bloque DCOM, ou OpcEnum n'y roule pas, avec l'étape 5 |
Chaque avis prend la place de l'erreur de l'équipement et disparaît de lui-même dès que le serveur se connecte. Le journal technique et l'agent lisent les mêmes étapes en anglais. Un serveur sur cet ordinateur n'est jamais signalé ainsi.
Là où l'installation n'autorise pas DCOM, un wrapper ou un tunnel qui sert le serveur OPC DA en OPC UA, sur l'ordinateur du serveur, l'évite tout à fait : la station lit alors le serveur avec le pilote OPC UA.