Rockwell EtherNet/IP
Relier des automates Allen-Bradley sur EtherNet/IP : ControlLogix, CompactLogix, PLC-5, SLC 500, MicroLogix et Micro800, leurs adresses de tags, types de donnée et découverte réseau.
Le pilote Rockwell EtherNet/IP parle aux automates Allen-Bradley / Rockwell sur EtherNet/IP. Les automates ControlLogix et CompactLogix s'adressent par le nom du tag d'automate déclaré dans le projet Logix, un Micro800 par le nom de sa variable globale, et un PLC-5, un SLC 500 ou un MicroLogix par adresse de fichier de données, sans aucun plan de registres. Ajoutez un équipement sous le pilote Rockwell EtherNet/IP dans le Connector et choisissez sa Famille d'automate; le volet ne montre que les champs que cette famille emploie.
Familles d'automate
La Famille d'automate de l'équipement décide comment l'automate est joint et comment ses tags s'adressent :
| Famille d'automate | Automates | Les tags s'adressent par | Emplacement |
|---|---|---|---|
| ControlLogix / CompactLogix | ControlLogix, CompactLogix | Tag d'automate, le nom du tag | oui |
| PLC-5 | PLC-5 avec un port Ethernet (PLC-5/20E, /40E, /80E) | Adresse de fichier de données, comme N7:0 |
non |
| SLC 500 | SLC 5/05 | Adresse de fichier de données | non |
| MicroLogix | MicroLogix 1100 et 1400, et les autres par un 1761-NET-ENI | Adresse de fichier de données | non |
| Micro800 | Micro820, Micro850, Micro870 | Tag d'automate, le nom d'une variable globale | non |
ControlLogix / CompactLogix est la valeur par défaut, et un équipement créé avant que le champ existe en est un, si bien qu'il lit exactement comme il l'a toujours fait. Seul un automate ControlLogix ou CompactLogix est joint par le fond de panier à un emplacement : toute autre famille répond sur son propre port Ethernet, et son équipement n'a pas de champ Emplacement. Une découverte lit la famille dans l'identité de l'automate, si bien qu'un automate trouvé arrive avec sa famille déjà choisie.
Connexion
| Champ | Sens | Par défaut |
|---|---|---|
| Hôte | L'adresse IP ou le nom d'hôte du port Ethernet de l'automate. | vide |
| Famille d'automate | La famille à laquelle l'automate appartient; elle décide des champs ci-dessous et de l'adressage des tags. | ControlLogix / CompactLogix |
| Emplacement | ControlLogix / CompactLogix seulement : 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 l'endpoint assemblé, par exemple eip://192.168.0.10:0, où le nombre après
l'adresse est l'emplacement.
Un automate de toute autre famille ne porte pas d'emplacement, et son en-tête nomme la
famille à la place, par exemple eip://192.168.0.20?family=slc500.
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 de la valeur 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 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 |
Un élément de tableau BOOL Flags[5] |
Flags[5] |
0 | Booléen |
Le deuxième DINT dans la structure Recipe |
Recipe |
4 | Int32 |
Le bit 3 des données de Flags |
Flags |
3 | Booléen |
Dans un tableau BOOL, l'indice désigne le BOOL et non le mot de 32 bits de
l'automate : Flags[5] est le BOOL 5, et un décalage en bits compte à partir du
BOOL désigné, donc Flags[5] au décalage 2 est le BOOL 7.
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 de la valeur montre l'adresse assemblée au fil de vos
modifications.
Un Micro800 s'adresse de la même façon, par le nom d'une variable globale comme
Level : il n'a pas de tags de portée programme à nommer.
Adresses de fichier de données
Un tag de PLC-5, de SLC 500 ou de MicroLogix s'adresse par un seul champ, Adresse de fichier de données : la lettre et le numéro du fichier, deux-points et l'élément, puis un membre après un point ou un bit après une barre oblique. Il n'y a pas de champ de décalage, car l'adresse nomme elle-même son élément, son membre et son bit, et le champ refuse pendant la saisie une adresse que le pilote ne sait pas lire, en disant pourquoi.
| Fichier | Exemples | Lit | Type de donnée |
|---|---|---|---|
| Entier (N) | N7:0, N7:0/15 |
un mot de 16 bits, ou l'un de ses bits | Int16 ou UInt16; Boolean pour un bit |
| Bit (B) | B3:0, B3:0/2 |
un mot de 16 bits, ou l'un de ses bits | Int16 ou UInt16; Boolean pour un bit |
| Flottant (F) | F8:1 |
une valeur à virgule flottante de 32 bits | Float |
| Entier long (L) | L9:0 |
un entier de 32 bits | Int32 ou UInt32 |
| Temporisation (T) | T4:0.ACC, T4:0.PRE, T4:0.DN |
ACC ou PRE, ou le bit EN, TT ou DN | Int16 ou UInt16; Boolean pour un bit |
| Compteur (C) | C5:0.ACC, C5:0.PRE, C5:0.DN |
ACC ou PRE, ou le bit CU, CD, DN, OV ou UN | Int16 ou UInt16; Boolean pour un bit |
| Contrôle (R) | R6:0.LEN, R6:0.POS |
LEN ou POS | Int16 ou UInt16 |
| État (S) | S:1, S:1/15 |
un mot du fichier d'état, ou l'un de ses bits | Int16 ou UInt16; Boolean pour un bit |
| Entrée (I), sortie (O) | I:0, I:0/1, O:0/1 |
un mot de l'image des entrées ou des sorties, ou l'un de ses bits | Int16 ou UInt16; Boolean pour un bit |
Le Type de donnée proposé suit le fichier, et saisir une adresse dont le fichier
ne porte pas le type du tag le change pour celui du fichier. Les fichiers d'état,
d'entrées et de sorties peuvent s'écrire sans leur numéro, comme les écrit le logiciel
de programmation; le pilote les envoie sous la forme S2:1, I1:0/1 et
O0:0/1, ce que montre la ligne Adresse source (bus). Dans une adresse
d'entrée ou de sortie, l'élément est la position du mot dans l'image : les entrées
intégrées d'un MicroLogix vont de I:0/0 en avant. Un élément de temporisation, de
compteur ou de contrôle se lit par l'un de ses membres, jamais en entier, et les
fichiers de chaîne, ASCII, BCD, message et PID ne sont pas lus. Un PLC-5 numérote ses
entrées et ses sorties en octal, ce que le pilote ne lit pas, si bien que ses fichiers
I et O sont refusés : lisez une telle valeur par un fichier de données dans lequel le
programme la copie. On ne sait si un fichier existe qu'en le lisant : un fichier que
l'automate n'a pas (N9:0 sans N9) se lit en erreur dès la première lecture de ce
tag, et tous les autres tags de l'équipement continuent de lire.
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.
Sur un PLC-5, un SLC 500 ou un MicroLogix, le type suit plutôt le fichier de données, comme le montre le tableau des adresses de fichier de données ci-dessus.
Écritures
Les tags dont l'Accès est Lecture et écriture ou Écriture seule peuvent être écrits. Une écriture envoie la valeur demandée et rien d'autre, de sorte qu'un bit ou un membre qui change dans l'automate au même moment n'est jamais ramené à ce qu'il était un instant plus tôt :
| Le tag adresse | Ce que l'écriture envoie |
|---|---|
| Un tag atomique au complet (décalage 0 et la taille du tag lui-même), ou un tag BOOL | La valeur, vers ce tag |
Un bit d'un tag de nombre entier (Flags, décalage 3, Boolean) |
Ce bit seulement, sous la forme Flags.3 : l'automate le change sur place et laisse les autres bits comme ils sont |
Un élément d'un tableau BOOL (Flags[5], Boolean) |
Ce BOOL seulement, comme bit 5 du premier mot du tableau (Flags[0].5) : l'automate le change sur place et laisse les autres BOOL du mot comme ils sont |
Une valeur dans une structure (Recipe, décalage 4) |
Ce membre seulement, par son nom (Recipe.Speed), trouvé dans la définition de structure que publie l'automate |
Une écriture qui ne pourrait se faire qu'en renvoyant le reste du tag est refusée, et le
motif nomme l'adresse : une partie d'un tag atomique (un Int16 au décalage 2 d'un DINT), un
bit d'un REAL, ou un décalage où aucun membre de la structure ne commence avec la taille de
la valeur. Adressez alors cette valeur par son propre nom, par exemple Recipe.Speed avec
le décalage 0. Le pilote détermine où vont les écritures d'un tag à sa première écriture et
le conserve tant que l'équipement reste connecté. Un nouveau tag démarre en Lecture seule.
Une adresse de fichier de données s'écrit telle qu'elle est nommée : un mot, un
flottant ou un membre en entier, et un bit (B3:0/2, T4:0.DN) seul, que
l'automate change sur place en laissant les autres bits de son mot tels quels.
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. Un automate Omron répond à la même requête et est lui aussi écarté, avec une ligne bien à
lui dans le journal : un automate NJ, NX ou NY est plutôt proposé par le balayage du pilote
Omron. 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.
Un tableau d'un type atomique est proposé par son premier élément, dans ce type
(Temps[0], ou Grid[0,0] à deux dimensions), et un tableau BOOL par un Booléen
sur son premier BOOL (Flags[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.
Un tag de tout autre type, comme un type système, n'est pas proposé non plus, et
cela est dit dans le journal.
L'identité par laquelle un automate répond porte son numéro de catalogue, qui nomme sa
famille : un PLC-5, un SLC 500, un MicroLogix ou un Micro800 arrive avec sa famille
choisie et son adresse qui la nomme (eip://192.168.0.20?family=micrologix). Un
PLC-5, un SLC 500 ou un MicroLogix ne publie aucune liste de tags, si bien qu'il
arrive sans canaux candidats et que ses tags se saisissent par adresse de fichier de
données; la liste de tags d'un Micro800 se lit comme celle d'un Logix.
Un automate Logix ou Micro800 que vous avez déjà relit sa liste de tags depuis sa propre page : Découvrir les tags, dans l'en-tête de sa carte Tags, ne propose que les tags de l'automate pour lesquels il n'a pas encore de tag, comparés par le nom sans tenir compte de la casse. Un automate à fichiers de données n'a pas de liste à lire et n'affiche pas Découvrir les tags (voir Découvrir les tags d'un équipement).
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.