Rockwell EtherNet/IP
Conectar controladores Allen-Bradley Logix sobre EtherNet/IP (CIP): nombres de tag del controlador, desplazamientos en bytes, tipos atómicos de CIP y descubrimiento por red.
El driver Rockwell EtherNet/IP habla con controladores Allen-Bradley / Rockwell Logix (ControlLogix, CompactLogix) sobre EtherNet/IP con direccionamiento de tags CIP. Usted direcciona los valores por el nombre de tag del controlador declarado en el proyecto de Logix, sin ningún mapa de registros de por medio. Agregue un dispositivo bajo el driver Rockwell EtherNet/IP en el Connector; el panel muestra solo los campos que usa este protocolo.
La conexión
| Campo | Significado | Valor inicial |
|---|---|---|
| Host o IP | Dirección IP o nombre de host del puerto Ethernet del controlador. | vacío |
| Slot | En qué posición del chasis está montado el controlador, contada desde 0. | 0 |
| Intervalo de sondeo (ms) | El periodo de lectura de todo el dispositivo, para los tags que no lo invaliden. | 1,000 |
No hay campo de puerto: EtherNet/IP usa su puerto TCP estándar, el 44818. La ruta CIP
es el backplane más el Slot, así que un controlador montado en cualquier lugar del
chasis es alcanzable; un controlador descubierto arranca en el slot 0 y el campo es
donde usted lo corrige. No hay campo de rack: una ruta CIP no lleva número de rack. Las
peticiones agotan su tiempo de espera a los 10 segundos. El encabezado del dispositivo
muestra el punto de conexión armado, por ejemplo eip://192.168.0.10:0, donde el número
que sigue a la dirección es el slot.
Cada tag puede poner su propio Intervalo de sondeo (ms); un valor de 0 en el tag cae en el intervalo del dispositivo.
El direccionamiento
Un tag de Rockwell se direcciona con dos campos de la tarjeta Origen del tag:
| Campo | Significado | Valores aceptados | Valor inicial |
|---|---|---|---|
| Tag del controlador | El nombre del tag tal como está declarado en el controlador. Obligatorio. | texto libre | vacío |
| Desplazamiento en el tag (bytes, bits para BOOL) | Dónde queda el valor dentro de los datos de ese tag: un desplazamiento en bytes, o un desplazamiento en bits para los tags booleanos. | de 0 a 255 | 0 |
El driver abre el tag del controlador que se nombra y saca el valor de su búfer de datos en el desplazamiento. Para un tag atómico simple, el desplazamiento se queda en 0. El desplazamiento es lo que permite que un solo tag del controlador sirva a varios canales: un DINT al inicio de una estructura es el desplazamiento 0, el REAL cuatro bytes después es el desplazamiento 4, y para un tag booleano el desplazamiento cuenta bits en lugar de bytes.
| Para leer | Tag del controlador | Desplazamiento | Tipo de dato |
|---|---|---|---|
Un DINT Counter de alcance de controlador |
Counter |
0 | Int32 |
Un DINT de alcance de programa en Main |
Program:Main.Counter |
0 | Int32 |
Un elemento de arreglo REAL Temps[2] |
Temps[2] |
0 | Float |
El segundo DINT dentro de la estructura Recipe |
Recipe |
4 | Int32 |
El bit 3 de los datos de Flags |
Flags |
3 | Boolean |
El nombre llega entero al controlador, con puntos y todo, y una lectura y una escritura
del mismo tag aterrizan en el mismo lugar. Eso es lo que hace funcionar un nombre de
alcance de programa como Program:Main.Counter. Una ruta de miembro con puntos
(MyUdt.Member) la resuelve el controlador cuando el controlador publica ese miembro
por su nombre; donde no lo hace, nombre el tag base de alcance de controlador 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 Origen muestra la dirección armada
conforme usted edita.
Los tipos de dato
Todos los tipos atómicos de CIP están disponibles como Tipo de dato de un tag:
| Tipo de dato | Tipo de 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 para lo que existe el desplazamiento en bytes, para llegar a los miembros que hay dentro de ellos. String falta a propósito en el selector: un STRING de Logix no es un tipo atómico, sino una estructura con una longitud y un arreglo de 82 bytes, y el driver no lo sabe ni leer ni escribir. El orden de bytes en el bus es el little-endian propio de CIP y se maneja automáticamente; no hay opción de orden de bytes.
Las escrituras
Los tags cuyo Acceso es Lectura y escritura o Solo escritura se pueden escribir. Una escritura lee el tag del controlador, cambia los bytes direccionados (o el bit direccionado, para Boolean) y lo escribe de regreso. Un tag nuevo arranca como Solo lectura.
El descubrimiento
El botón Descubrir del Connector difunde una petición CIP List Identity en todas las redes en las que está esta computadora y sigue escuchando hasta que pasen 10 segundos sin ninguna respuesta nueva. El escaneo nombra esas redes mientras corre, así que un resultado de cero dice a dónde fue realmente la pregunta: una estación con adaptadores virtuales para máquinas, para WSL o para una VPN a menudo tiene 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á arriba,
los adaptadores de loopback y de túnel, y una dirección que la interfaz se dio a sí
misma porque nadie contestó DHCP (169.254.x.x). Solo una respuesta que sea la respuesta
de identidad propia de un controlador se convierte en un dispositivo candidato,
nombrado con eip:// más su dirección; cualquier otra cosa que conteste en el puerto de
EtherNet/IP se ignora y se dice en el diario técnico. Para cada candidato, el escaneo lee
después la lista de tags de alcance de controlador y ofrece sus tags atómicos como
canales candidatos, cada uno con el desplazamiento 0.
El descubrimiento descarta lo que el driver no puede sondear: los tags de estructura y
los UDT (los STRING de Logix incluidos) se tiran, y las entradas Program:, Task: y
Map: se saltan. Un controlador que está en una red en la que esta computadora no está
no contesta la difusión; agréguelo a mano.
Bueno saber
- Cada petición al controlador agota su tiempo de espera a los 10 segundos, y la ventana de escucha del descubrimiento se cierra después de 10 segundos de silencio.
- El driver abre cada tag del controlador una sola vez y lo deja abierto mientras el equipo siga conectado, de modo que un controlador con decenas de tags se lee sobre las sesiones que ya tiene, en vez de abrir y cerrar una por cada lectura. Una lectura que falla suelta su tag, y la siguiente lo vuelve a abrir por el nombre.
- Renombrar un tag en el proyecto de Logix rompe el canal en silencio; el tag se lee entonces con mala calidad hasta que el nombre configurado vuelva a coincidir.