Rockwell EtherNet/IP
Relier des automates Allen-Bradley Logix en 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 aux automates Allen-Bradley / Rockwell Logix (ControlLogix, CompactLogix) en EtherNet/IP avec l'adressage de tags CIP. Vous adressez les valeurs par le nom du tag d'automate déclaré dans le projet Logix, sans aucun plan de registres. 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 | 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 |
| Période 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 le
champ est là pour que vous le corrigiez. Il n'y a pas de champ de châssis : une route CIP ne porte pas de
numéro de châssis. Les requêtes expirent au bout de 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 régler sa propre période de scrutation (ms) ; une valeur de tag à 0 retombe sur la période de l'équipement.
Adressage
Un tag Rockwell est adressé par deux champs de la carte Source du tag :
| Champ | Sens | Valeurs acceptées | 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 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 les tags booléens. | 0-255 | 0 |
Le pilote ouvre le tag d'automate nommé et prélève la valeur de son tampon de données au décalage. Pour un tag atomique simple, le décalage reste 0. Le décalage est ce qui permet à un seul 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 | Boolean |
Le nom atteint l'automate entier, points compris, et une lecture et une
écriture du même tag atterrissent au même endroit. C'est ce qui fait fonctionner un nom de
portée programme comme Program:Main.Counter. Un chemin de membre pointé
(MyUdt.Member) est résolu par l'automate quand celui-ci publie ce membre par 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 marche toujours. La ligne Adresse source (bus) en lecture
seule de la carte Source montre l'adresse assemblée au fil de la saisie.
Types de donnée
Chaque type CIP atomique est disponible comme type de donnée de tag :
| Type de donnée | Type CIP | Taille |
|---|---|---|
| Boolean | BOOL | 1 bit au décalage en bits |
| 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 peuvent être lus ou écrits, et c'est pour cela que le décalage en octets existe, pour atteindre les membres à l'intérieur. String est délibérément absent du sélecteur : une 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 VPN a souvent plus de réseaux que l'opérateur ne s'y attend, 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 bouclage et de tunnel, et une adresse que l'interface s'est donnée elle-même faute de réponse
DHCP (169.254.x.x). Seule une réponse qui est la réponse d'identité d'un automate
devient un équipement candidat, nommé eip:// suivi de son adresse ; tout
autre répondant sur le port EtherNet/IP est ignoré et le journal le dit.
Pour chaque candidat, le balayage lit ensuite la liste des tags de portée automate et propose
ses tags atomiques en 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 comprises) sont abandonnés, et les entrées Program:, Task: et Map:
sont sautées. Un automate sur un réseau où cet ordinateur ne se trouve pas ne
répond pas à la diffusion ; ajoutez-le à la main.
Bon à savoir
- Chaque requête vers l'automate expire au bout de 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 garde ouvert tant que l'équipement est connecté ; un automate portant des dizaines de tags est donc lu sur les sessions qu'il a déjà, au lieu d'en ouvrir et d'en fermer une par lecture. Une lecture qui échoue relâche son tag, et la suivante le rouvre par son nom.
- Renommer un tag dans le projet Logix casse la voie en silence ; le tag se lit alors en mauvaise qualité jusqu'à ce que le nom configuré corresponde de nouveau.