Rockwell EtherNet/IP

Conectar autómatas Allen-Bradley por EtherNet/IP: ControlLogix, CompactLogix, PLC-5, SLC 500, MicroLogix y Micro800, sus direcciones de tag, tipos de dato y descubrimiento por red.

Ver como Markdown

El controlador Rockwell EtherNet/IP habla con autómatas Allen-Bradley / Rockwell por EtherNet/IP. Los autómatas ControlLogix y CompactLogix se direccionan por el nombre del tag del autómata declarado en el proyecto Logix, un Micro800 por el nombre de su variable global, y un PLC-5, SLC 500 o MicroLogix por dirección de archivo de datos: no hay ningún mapa de registros por medio. Añada un dispositivo bajo el controlador Rockwell EtherNet/IP en el Connector y elija su Familia del autómata; el panel muestra solo los campos que usa esa familia.

Familias de autómata

La Familia del autómata del dispositivo decide cómo se alcanza el autómata y cómo se direccionan sus tags:

Familia del autómata Autómatas Los tags se direccionan por Ranura
ControlLogix / CompactLogix ControlLogix, CompactLogix Tag del autómata, el nombre del tag sí
PLC-5 PLC-5 con puerto Ethernet (PLC-5/20E, /40E, /80E) Dirección de archivo de datos, como N7:0 no
SLC 500 SLC 5/05 Dirección de archivo de datos no
MicroLogix MicroLogix 1100 y 1400, y los demás a través de un 1761-NET-ENI Dirección de archivo de datos no
Micro800 Micro820, Micro850, Micro870 Tag del autómata, el nombre de una variable global no

ControlLogix / CompactLogix es el valor por defecto, y un dispositivo creado antes de que existiera el campo es uno de ellos, así que lee exactamente como siempre. Solo un autómata ControlLogix o CompactLogix se alcanza por el bus del chasis en una ranura: cualquier otra familia responde en su propio puerto Ethernet, y su dispositivo no tiene el campo Ranura. Un descubrimiento lee la familia en la identidad del autómata, así que un autómata encontrado llega con su familia ya elegida.

Conexión

Campo Significado Por defecto
Host o IP Dirección IP o nombre de host del puerto Ethernet del autómata. vacío
Familia del autómata A qué familia pertenece el autómata; decide los campos de abajo y cómo se direccionan los tags. ControlLogix / CompactLogix
Ranura Solo ControlLogix / CompactLogix: en qué posición del chasis está asentado el autómata, contando desde 0. 0
Intervalo de sondeo (ms) Periodo de lectura para todo el dispositivo, para los tags que no lo sustituyen. 1.000

No hay campo de puerto: EtherNet/IP usa su puerto TCP estándar, el 44818. La ruta CIP es el bus del chasis más la Ranura, así que un autómata asentado en cualquier punto del chasis es alcanzable; un autómata descubierto arranca en la ranura 0 y el campo es donde se corrige. No hay campo de bastidor: una ruta CIP no lleva ningún número de bastidor. Las peticiones agotan su tiempo de espera a los 10 segundos. La cabecera del dispositivo muestra el endpoint ya compuesto, por ejemplo eip://192.168.0.10:0, donde el número que sigue a la dirección es la ranura.

Un autómata de cualquier otra familia no lleva ranura, y su cabecera nombra la familia en su lugar, por ejemplo eip://192.168.0.20?family=slc500.

Cada tag puede fijar su propio Intervalo de sondeo (ms); un valor de 0 en el tag recae en el intervalo del dispositivo.

Direccionamiento

Un tag Rockwell se direcciona con dos campos de la tarjeta Fuente del tag:

Campo Significado Valores aceptados Por defecto
Tag del autómata El nombre del tag tal como está declarado en el autómata. Obligatorio. texto libre vacío
Desplazamiento en el tag (bytes, bits para BOOL) Dónde se sitúa el valor dentro de los datos de ese tag: un desplazamiento en bytes, o un desplazamiento en bits para los tags Boolean. 0 a 255 0

El controlador abre el tag del autómata que se ha nombrado y saca el valor de su búfer de datos en el desplazamiento indicado. Para un tag atómico sencillo, el desplazamiento se queda en 0. El desplazamiento es lo que permite que un mismo tag del autómata sirva a varios canales: un DINT al principio de una estructura está en el desplazamiento 0, el REAL que hay cuatro bytes después está en el desplazamiento 4, y en un tag Boolean el desplazamiento cuenta bits en vez de bytes.

Para leer Tag del autómata Desplazamiento Tipo de dato
Un DINT Counter de alcance del autómata Counter 0 Int32
Un DINT de alcance de programa en Main Program:Main.Counter 0 Int32
Un elemento de matriz REAL Temps[2] Temps[2] 0 Float
Un elemento de matriz BOOL Flags[5] Flags[5] 0 Boolean
El segundo DINT dentro de la estructura Recipe Recipe 4 Int32
El bit 3 de los datos de Flags Flags 3 Boolean

En una matriz BOOL el índice nombra el BOOL, no la palabra de 32 bits del autómata: Flags[5] es el BOOL 5, y un desplazamiento en bits cuenta a partir del BOOL nombrado, así que Flags[5] con desplazamiento 2 es el BOOL 7.

El nombre llega entero al autómata, puntos incluidos, y una lectura y una escritura del mismo tag aterrizan en el mismo sitio. Eso es lo que hace que funcione un nombre de alcance de programa como Program:Main.Counter. Una ruta de miembro con puntos (MyUdt.Member) la resuelve el autómata cuando el autómata publica ese miembro por su nombre; donde no lo hace, nombre el tag base de alcance del autómata y llegue dentro de él con el desplazamiento en bytes, que siempre funciona. La línea de solo lectura Dirección de origen (bus) de la tarjeta Fuente muestra la dirección ya compuesta mientras se edita.

Un Micro800 se direcciona igual, por el nombre de una variable global como Level: no tiene tags de alcance de programa que nombrar.

Direcciones de archivo de datos

Un tag de PLC-5, SLC 500 o MicroLogix se direcciona con un solo campo, Dirección de archivo de datos: la letra y el número del archivo, dos puntos y el elemento, y después un miembro tras un punto o un bit tras una barra. No hay campo de desplazamiento, porque la dirección nombra su propio elemento, miembro y bit, y el campo rechaza mientras se escribe una dirección que el controlador no puede leer, diciendo por qué.

Archivo Ejemplos Lee Tipo de dato
Entero (N) N7:0, N7:0/15 una palabra de 16 bits, o uno de sus bits Int16 o UInt16; Boolean para un bit
Bit (B) B3:0, B3:0/2 una palabra de 16 bits, o uno de sus bits Int16 o UInt16; Boolean para un bit
Coma flotante (F) F8:1 un valor de coma flotante de 32 bits Float
Entero largo (L) L9:0 un entero de 32 bits Int32 o UInt32
Temporizador (T) T4:0.ACC, T4:0.PRE, T4:0.DN ACC o PRE, o el bit EN, TT o DN Int16 o UInt16; Boolean para un bit
Contador (C) C5:0.ACC, C5:0.PRE, C5:0.DN ACC o PRE, o el bit CU, CD, DN, OV o UN Int16 o UInt16; Boolean para un bit
Control (R) R6:0.LEN, R6:0.POS LEN o POS Int16 o UInt16
Estado (S) S:1, S:1/15 una palabra del archivo de estado, o uno de sus bits Int16 o UInt16; Boolean para un bit
Entrada (I), salida (O) I:0, I:0/1, O:0/1 una palabra de la imagen de entradas o de salidas, o uno de sus bits Int16 o UInt16; Boolean para un bit

El Tipo de dato que se ofrece sigue al archivo, y escribir una dirección cuyo archivo no guarda el tipo del tag lo cambia al del archivo. Los archivos de estado, de entradas y de salidas pueden escribirse sin su número, como los escribe el software de programación; el controlador los envía como S2:1, I1:0/1 y O0:0/1, y la línea Dirección de origen (bus) lo muestra. En una dirección de entrada o de salida, el elemento es la posición de la palabra en la imagen: las entradas integradas de un MicroLogix van de I:0/0 en adelante. Un elemento de temporizador, contador o control se lee a través de uno de sus miembros, nunca entero, y los archivos de cadena, ASCII, BCD, mensaje y PID no se leen. Un PLC-5 numera sus entradas y salidas en octal, y el controlador no lee esa numeración, así que sus archivos I y O se rechazan: lea ese valor a través de un archivo de datos al que el programa lo copie. Si un archivo existe solo se sabe al leerlo: un archivo que el autómata no tiene (N9:0 sin N9) se lee como error desde la primera lectura de ese tag, y todos los demás tags del dispositivo siguen leyendo.

Tipos de dato

Todo tipo atómico CIP está disponible como Tipo de dato de un tag:

Tipo de dato Tipo CIP Tamaño
Boolean BOOL 1 bit en el desplazamiento de bit
SByte SINT 1 byte
Byte USINT 1 byte
Int16 INT 2 bytes
UInt16 UINT 2 bytes
Int32 DINT 4 bytes
UInt32 UDINT 4 bytes
Int64 LINT 8 bytes
UInt64 ULINT 8 bytes
Float REAL 4 bytes
Double LREAL 8 bytes

Las estructuras y los UDT no se admiten: solo se pueden leer o escribir los tipos atómicos de arriba, que es la razón por la que existe el desplazamiento en bytes, para alcanzar los miembros que hay dentro de ellos. String falta a propósito del selector: un STRING de Logix no es un tipo atómico, sino una estructura formada por una longitud y una matriz de 82 bytes, y el controlador no puede ni leerlo ni escribirlo. El orden de bytes en el bus es el little-endian propio de CIP y se gestiona automáticamente; no hay opción de orden de bytes.

En un PLC-5, SLC 500 o MicroLogix, el tipo sigue en cambio al archivo de datos, como muestra la tabla de direcciones de archivo de datos de arriba.

Escrituras

Se pueden escribir los tags cuyo Acceso es Lectura y escritura o Solo escritura. Una escritura envía el valor pedido y nada más, de modo que un bit o un miembro que cambia en el autómata en ese mismo instante nunca vuelve a lo que era un momento antes:

El tag direcciona Lo que envía la escritura
Un tag atómico completo (desplazamiento 0 y el tamaño del propio tag), o un tag BOOL El valor, a ese tag
Un bit de un tag de tipo entero (Flags, desplazamiento 3, Boolean) Solo ese bit, como Flags.3: el autómata lo cambia en su sitio y deja los demás bits como están
Un elemento de una matriz BOOL (Flags[5], Boolean) Solo ese BOOL, como el bit 5 de la primera palabra de la matriz (Flags[0].5): el autómata lo cambia en su sitio y deja los demás BOOL de la palabra como están
Un valor dentro de una estructura (Recipe, desplazamiento 4) Solo ese miembro, por su nombre (Recipe.Speed), que se encuentra en la definición de la estructura que publica el autómata

Una escritura que solo podría hacerse devolviendo el resto del tag se rechaza, y el motivo cita la dirección: una parte de un tag atómico (un Int16 en el desplazamiento 2 de un DINT), un bit de un REAL, o un desplazamiento donde ningún miembro de la estructura empieza con el tamaño del valor. En ese caso, direccione el valor por su propio nombre, por ejemplo Recipe.Speed con desplazamiento 0. El controlador averigua dónde caen las escrituras de un tag en su primera escritura y lo guarda mientras el dispositivo sigue conectado. Un tag nuevo nace como Solo lectura.

Una dirección de archivo de datos se escribe tal como se nombra: una palabra, un valor de coma flotante o un miembro enteros, y un bit (B3:0/2, T4:0.DN) solo, que el autómata cambia en el sitio, dejando los demás bits de su palabra como están.

Descubrimiento

El botón Descubrir del Connector difunde una petición CIP List Identity por todas las redes en las que está este ordenador y sigue escuchando hasta que pasan 10 segundos sin ninguna respuesta nueva. La exploración nombra esas redes mientras corre, así que un resultado de cero dice adónde fue de verdad la pregunta: una estación con adaptadores virtuales para máquinas, para WSL o para una VPN suele tener más redes de las que el operador espera, y los candidatos pueden llegar por cualquiera de ellas.

Las interfaces que no pueden llevar la petición se saltan: todo lo que no está levantado, los adaptadores de loopback y de túnel, y una dirección que la interfaz se dio a sí misma porque nadie respondió al DHCP (169.254.x.x). Solo una respuesta que sea la contestación de identidad propia de un autómata se convierte en un dispositivo candidato, nombrado con eip:// más su dirección; cualquier otra cosa que responda en el puerto de EtherNet/IP se ignora y se dice así en el diario técnico. Un autómata Omron responde a la misma petición y también se deja fuera, con una línea propia en el diario técnico: a un autómata NJ, NX o NY lo ofrece en su lugar la exploración del controlador Omron. Para cada candidato, la exploración lee después la lista de tags de alcance del autómata y ofrece sus tags atómicos como canales candidatos, cada uno con desplazamiento 0. Una matriz de un tipo atómico se ofrece como su primer elemento, en ese tipo (Temps[0], o Grid[0,0] con dos dimensiones), y una matriz BOOL como un Boolean sobre su primer BOOL (Flags[0]).

El descubrimiento descarta lo que el controlador no puede sondear: los tags de estructura y de UDT (los STRING de Logix incluidos) se tiran, y las entradas Program:, Task: y Map: se saltan. Un autómata que está en una red en la que este ordenador no está no responde a la difusión; añádalo a mano. Un tag de cualquier otro tipo, como un tipo de sistema, tampoco se ofrece, y el diario técnico lo dice.

La identidad con la que responde un autómata lleva su número de catálogo, que nombra su familia: un PLC-5, SLC 500, MicroLogix o Micro800 llega con su familia elegida y con su dirección nombrándola (eip://192.168.0.20?family=micrologix). Un PLC-5, SLC 500 o MicroLogix no publica ninguna lista de tags, así que llega sin canales candidatos y sus tags se escriben por dirección de archivo de datos; la lista de tags de un Micro800 se lee como la de un Logix.

Un controlador Logix o Micro800 que ya tiene vuelve a leer su lista de tags desde su propia página: Descubrir tags, en la cabecera de su tarjeta de tags, ofrece solo los tags del controlador para los que todavía no tiene tag, comparados por el nombre sin distinguir mayúsculas de minúsculas. Un controlador de archivos de datos no tiene lista que leer y no muestra Descubrir tags (vea Descubrir los tags de un dispositivo).

Conviene saber

  • Toda petición al autómata agota su tiempo de espera a los 10 segundos, y la ventana de escucha del descubrimiento se cierra tras 10 segundos de silencio.
  • El controlador abre cada tag del autómata una sola vez y lo mantiene abierto mientras el equipo siga conectado, así que un autómata con decenas de tags se lee sobre las sesiones que ya tiene, en lugar de abrir y cerrar una por cada lectura. Una lectura que falla suelta su tag, y la siguiente lo abre de nuevo por el nombre.
  • Cambiar el nombre de un tag en el proyecto Logix rompe el canal en silencio; el tag se lee entonces con mala calidad hasta que el nombre configurado vuelve a coincidir.