Rockwell EtherNet/IP
Relier des automates Allen-Bradley Logix sur EtherNet/IP (CIP) : noms de tags d'automate, décalages en octets, types CIP atomiques et découverte réseau.
Le pilote Rockwell EtherNet/IP parle à des automates Allen-Bradley et Rockwell Logix (ControlLogix, CompactLogix) sur EtherNet/IP avec l'adressage de tags CIP. Vous adressez les valeurs par le nom de tag d'automate déclaré dans le projet Logix : aucun plan de registres n'entre en jeu. Ajoutez un équipement sous le pilote Rockwell EtherNet/IP dans le Connector; le volet ne montre que les champs que ce protocole emploie.
Connexion
| Champ | Sens | Par défaut |
|---|---|---|
| Hôte | L'adresse IP ou le nom d'hôte du port Ethernet de l'automate. | vide |
| Emplacement | La position du châssis où l'automate est logé, comptée à partir de 0. | 0 |
| Intervalle de scrutation (ms) | La période de lecture de tout l'équipement, pour les tags qui ne la remplacent pas. | 1 000 |
Il n'y a pas de champ de port : EtherNet/IP emploie son port TCP standard 44818. La route
CIP est le fond de panier plus l'emplacement, si bien qu'un automate logé n'importe où dans
le châssis est joignable; un automate découvert démarre à l'emplacement 0 et c'est ce
champ qui vous permet de le corriger. Il n'y a pas de champ de châssis : une route CIP ne porte
aucun numéro de châssis. Les requêtes expirent après 10 secondes. L'en-tête de l'équipement
montre le point de terminaison assemblé, par exemple eip://192.168.0.10:0, où le nombre après
l'adresse est l'emplacement.
Chaque tag peut poser son propre intervalle de scrutation (ms); une valeur de 0 sur un tag retombe sur l'intervalle de l'équipement.
Adressage
Un tag Rockwell est adressé par deux champs de la carte Source du tag :
| Champ | Sens | Valeurs acceptées | Par défaut |
|---|---|---|---|
| Tag d'automate | Le nom du tag tel qu'il est déclaré dans l'automate. Obligatoire. | texte libre | vide |
| Décalage dans le tag (octets, bits pour un BOOL) | Où, dans les données de ce tag, la valeur se trouve : un décalage en octets, ou un décalage en bits pour un tag booléen. | 0 à 255 | 0 |
Le pilote ouvre le tag d'automate nommé et prélève la valeur dans son tampon de données au décalage indiqué. Pour un tag atomique simple, le décalage reste 0. Le décalage est ce qui permet à un tag d'automate de servir plusieurs voies : un DINT au début d'une structure est au décalage 0, le REAL quatre octets plus loin au décalage 4, et pour un tag booléen le décalage compte des bits au lieu d'octets.
| Pour lire | Tag d'automate | Décalage | Type de donnée |
|---|---|---|---|
Un DINT Counter de portée automate |
Counter |
0 | Int32 |
Un DINT de portée programme dans Main |
Program:Main.Counter |
0 | Int32 |
Un élément de tableau REAL Temps[2] |
Temps[2] |
0 | Float |
Le deuxième DINT dans la structure Recipe |
Recipe |
4 | Int32 |
Le bit 3 des données de Flags |
Flags |
3 | Booléen |
Le nom atteint l'automate en entier, points compris, et une lecture et une
écriture du même tag arrivent au même endroit. C'est ce qui fait fonctionner un nom de
portée programme tel que Program:Main.Counter. Un chemin de membre pointé
(MyUdt.Member) est résolu par l'automate quand l'automate publie ce membre par son nom;
là où il ne le fait pas, nommez le tag de base, de portée automate, et atteignez son intérieur
par le décalage en octets, ce qui fonctionne toujours. La ligne en lecture seule
Adresse source (bus) de la carte Source montre l'adresse assemblée au fil de vos
modifications.
Types de donnée
Chaque type CIP atomique est disponible comme type de donnée d'un tag :
| Type de donnée | Type CIP | Taille |
|---|---|---|
| Boolean | BOOL | 1 bit au décalage de bit |
| SByte | SINT | 1 octet |
| Byte | USINT | 1 octet |
| Int16 | INT | 2 octets |
| UInt16 | UINT | 2 octets |
| Int32 | DINT | 4 octets |
| UInt32 | UDINT | 4 octets |
| Int64 | LINT | 8 octets |
| UInt64 | ULINT | 8 octets |
| Float | REAL | 4 octets |
| Double | LREAL | 8 octets |
Les structures et les UDT ne sont pas pris en charge : seuls les types atomiques ci-dessus se lisent et s'écrivent, et c'est pourquoi le décalage en octets existe, pour atteindre les membres à l'intérieur. Le texte est délibérément absent du sélecteur : un STRING Logix n'est pas un type atomique mais une structure faite d'une longueur et d'un tableau de 82 octets, et le pilote ne sait ni en lire ni en écrire. L'ordre des octets sur le bus est le petit-boutiste propre à CIP et il est traité automatiquement; il n'y a pas d'option d'ordre des octets.
Écritures
Les tags dont l'accès est Lecture et écriture ou Écriture seule peuvent être écrits. Une écriture lit le tag d'automate, change les octets adressés (ou le bit adressé pour un booléen), et le réécrit. Un nouveau tag démarre en Lecture seule.
Découverte
Le bouton Découvrir du Connector diffuse une requête CIP List Identity sur chaque réseau où se trouve cet ordinateur et continue d'écouter jusqu'à ce que 10 secondes passent sans nouvelle réponse. Le balayage nomme ces réseaux pendant qu'il tourne, si bien qu'un résultat nul dit où la question est réellement allée : une station avec des adaptateurs virtuels pour des machines, WSL ou un RPV a souvent plus de réseaux que l'opérateur ne l'imagine, et des candidats peuvent arriver de l'un d'eux.
Les interfaces qui ne peuvent pas porter la requête sont sautées : tout ce qui n'est pas actif,
les adaptateurs de boucle locale et de tunnel, et une adresse que l'interface s'est donnée
elle-même parce que rien n'a répondu au DHCP (169.254.x.x). Seule une réponse qui est la réponse
d'identité propre à un automate devient un équipement candidat, nommé eip:// suivi de son
adresse; tout ce qui répond autrement sur le port EtherNet/IP est ignoré et cela est dit dans le
journal. Pour chaque candidat, le balayage lit ensuite la liste des tags de portée automate et
propose ses tags atomiques comme voies candidates, chacune au décalage 0.
La découverte écarte ce que le pilote ne peut pas scruter : les tags de structure et d'UDT
(STRING Logix compris) sont abandonnés, et les entrées Program:, Task: et Map:
sont sautées. Un automate qui se trouve sur un réseau où cet ordinateur n'est pas ne répond pas
à la diffusion; ajoutez-le à la main.
Bon à savoir
- Chaque requête vers l'automate expire après 10 secondes, et la fenêtre d'écoute de la découverte se ferme après 10 secondes de silence.
- Le pilote ouvre chaque tag d'automate une seule fois et le laisse ouvert tant que l'équipement demeure connecté; un automate qui porte des dizaines de tags se lit donc sur les sessions qu'il possède déjà, plutôt que d'en ouvrir puis d'en fermer une par lecture. Une lecture qui échoue laisse aller son tag, et la suivante le rouvre par son nom.
- Renommer un tag dans le projet Logix casse la voie en silence; le tag lit alors une mauvaise qualité jusqu'à ce que le nom configuré corresponde de nouveau.