Rockwell EtherNet/IP

Relier des automates Allen-Bradley en EtherNet/IP : ControlLogix, CompactLogix, PLC-5, SLC 500, MicroLogix et Micro800, leurs adresses de tags, types de donnée et découverte réseau.

Afficher en Markdown

Le pilote Rockwell EtherNet/IP parle aux automates Allen-Bradley / Rockwell en 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 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 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 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 régler son propre Intervalle 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 de la valeur 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
Un élément de tableau BOOL Flags[5] Flags[5] 0 Boolean
Le deuxième DINT dans la structure Recipe Recipe 4 Int32
Le bit 3 des données de Flags Flags 3 Boolean

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 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 de la valeur montre l'adresse assemblée au fil de la saisie.

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 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.

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, si bien qu'un bit ou un membre qui change dans l'automate au même instant n'est jamais remis à ce qu'il était un instant plus tôt :

Le tag adresse Ce que l'écriture envoie
Un tag atomique en entier (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 type entier (Flags, décalage 3, Boolean) Ce bit seul, sous la forme Flags.3 : l'automate le change sur place et laisse les autres bits tels quels
Un élément d'un tableau BOOL (Flags[5], Boolean) Ce BOOL seul, comme bit 5 du premier mot du tableau (Flags[0].5) : l'automate le change sur place et laisse les autres BOOL du mot tels quels
Une valeur dans une structure (Recipe, décalage 4) Ce membre seul, 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 cite 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ù atterrissent les écritures d'un tag à sa première écriture et le garde 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 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. Un automate Omron répond à la même requête et est lui aussi laissé de côté, avec une ligne à lui dans le journal : un automate NJ, NX ou NY est 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 en 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 Boolean 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 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. Un tag de tout autre type, comme un type système, n'est pas proposé non plus, et le journal le dit.

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 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.