Beckhoff ADS
Conectar PLC Beckhoff TwinCAT sobre ADS/AMS: la ruta AMS, el puerto del runtime, las rutas de símbolo y las longitudes de lectura.
El driver Beckhoff ADS habla con PLC Beckhoff TwinCAT sobre ADS, el protocolo de automatización de TwinCAT transportado sobre rutas AMS. Usted direcciona los valores por su ruta de símbolo dentro del programa del PLC, así que lo que escribe es lo que declara el proyecto de TwinCAT. Agregue un dispositivo bajo el driver Beckhoff ADS en el Connector; el panel muestra solo los campos que usa este protocolo.
Conexión
| Campo | Significado | Valor inicial |
|---|---|---|
| Host o IP | La dirección IP del PLC. Su AMS Net Id se deriva de esta dirección como {ip}.1.1. Salvo que AMS Net Id del PLC lo indique, el AMS Net Id del PLC es esta dirección seguida de .1.1; un nombre se resuelve antes a su dirección IPv4. |
vacío |
| Puerto | El puerto AMS del runtime de destino: el 851 es el runtime de PLC 1 de TwinCAT 3, y los demás runtimes de TwinCAT 3 cuentan hacia arriba desde ahí (852, 853, …). Un campo vacío muestra 851 en gris y se usa ese runtime, que es también como se lee un dispositivo guardado con 0. | 851 |
| IP local (AMS) | La dirección IP propia de esta estación, de la que se deriva su AMS Net Id como {ip}.1.1. Tiene que coincidir con la ruta AMS configurada en el PLC. Un campo vacío usa la dirección de esta estación en la red que llega al PLC, que muestra en gris; un valor escrito en el campo se usa en su lugar. |
vacío |
| AMS Net Id del PLC | El AMS Net Id propio del PLC, para un PLC cuyo id no es su dirección IP seguida de .1.1: seis números de 0 a 255 separados por puntos, tal como lo muestra TwinCAT XAE en SYSTEM > Routes, pestaña NetId Management, Target NetId. Un campo vacío usa la dirección IPv4 del host seguida de .1.1, que muestra en gris. Un valor que no es un AMS Net Id deja el dispositivo desconectado y dice qué escribir. |
vacío |
| Intervalo de sondeo (ms) | El periodo de lectura de todo el dispositivo, para los tags que no lo invaliden. | 1,000 |
El encabezado del dispositivo muestra el endpoint armado, por ejemplo
ads://192.168.0.1:192.168.0.50:851 (IP local, IP del PLC, puerto AMS). Cada tag puede
poner su propio Intervalo de sondeo (ms); un valor de 0 en el tag cae en el
intervalo del dispositivo.
ADS solo contesta a las estaciones para las que el PLC tiene una ruta AMS: Preparar el PLC dice qué ruta agregar y dónde.
Preparar el PLC
Un PLC TwinCAT solo contesta ADS a una estación para la que su router AMS tiene una ruta. Sin la ruta, el router acepta la conexión en el puerto TCP 48898 y luego la cierra o nunca contesta, así que la conexión falla aunque el camino de red esté perfecto. Agregue una vez en el PLC una ruta estática para esta estación:
| Campo del diálogo Add Route de TwinCAT | Valor |
|---|---|
| Nombre: Route Name (Target) | Cualquier nombre; el aviso sugiere el nombre de equipo de esta estación. |
| Net id: AmsNetId | La dirección de esta estación seguida de .1.1, que es lo que el driver deriva de la IP local (AMS). |
| Transporte: Transport Type | El transporte TCP_IP |
| Dirección: Address Info | La dirección de esta estación, con IP Address seleccionado. |
| Tipo de ruta: Target Route y Remote Route | Static y None |
En TwinCAT XAE, elija el PLC como sistema de destino y abra SYSTEM > Routes, pestaña Static Routes, y luego Add. En el escritorio del propio PLC, el icono de TwinCAT del área de notificación abre la misma lista con Router > Edit Routes.
La dirección es la de esta estación en la red que llega al PLC. Un equipo con varias tarjetas de red tiene una dirección en cada una, y la ruta solo vale para la que nombra. Mientras la IP local (AMS) está vacía, el driver usa la dirección de la tarjeta por la que Windows llega al PLC, que el campo muestra en gris: esa es la dirección que nombra la ruta. Un valor escrito en el campo se usa en su lugar, y la ruta tiene que nombrar ese.
Cuando el router del PLC rechaza la estación por falta de la ruta, la página del dispositivo lo dice en un aviso que ocupa el lugar del error del driver: la ruta lista para agregar (su nombre, el AMS Net Id de esta estación, su dirección y el transporte, cada uno con un botón para copiar) y dónde la agrega TwinCAT. El aviso desaparece solo en cuanto el PLC contesta, y el registro y el agente leen la misma ruta. Un puerto que rechaza la conexión o se queda callado se dice como lo que es, no como una ruta que falta.
La estación direcciona al PLC por su AMS Net Id, y el router del PLC solo contesta por el suyo: un PLC cuyo AMS Net Id no es el que usa la estación tampoco contesta nunca, lo que se ve exactamente igual que una ruta que falta. Cuando el PLC ya tiene la ruta y aun así no contesta, revise su AMS Net Id en TwinCAT XAE en SYSTEM > Routes, pestaña NetId Management, Target NetId, y escríbalo en AMS Net Id del PLC; el aviso nombra el que usa la estación.
El direccionamiento
Un tag de Beckhoff se direcciona con dos campos de la tarjeta Fuente del tag:
| Campo | Significado | Valores aceptados | Valor inicial |
|---|---|---|---|
| Símbolo | La ruta de símbolo de la variable dentro del programa del PLC. Obligatorio. | texto libre, por ejemplo MAIN.fValue |
vacío |
| Longitud de lectura (bytes, en blanco = automático) | Cuántos bytes transferir por lectura. En blanco, la lectura se dimensiona a partir del tipo de dato. | 1 en adelante, o en blanco | en blanco |
La ruta de símbolo es exactamente lo que muestra TwinCAT: las variables de programa como
MAIN.fValue, las listas de variables globales como GVL.MachineSpeed o
GVL_Settings.rSetpoint. El driver resuelve el símbolo por su nombre en el PLC y lee sus
bytes crudos. Las longitudes de lectura automáticas son:
| Tipo de dato | Longitud de lectura automática |
|---|---|
| Boolean | 1 byte |
| Int32 | 4 bytes |
| Float | 4 bytes |
| String | 16 bytes |
Para un String de más de 16 caracteres, ponga la Longitud de lectura de modo que
cubra el tamaño declarado (un STRING(80) de TwinCAT necesita 80 bytes de texto). La
línea de solo lectura Dirección de origen (bus) de la tarjeta Fuente muestra la
dirección armada conforme usted edita.
Una lectura que el PLC rechaza, como la de un símbolo que no tiene o que no deja leer,
deja el tag sin valor, y el motivo del tag nombra el código de error ADS y lo que
significa, por ejemplo ADS error 0x710 (no symbol by that name). La conexión sigue
arriba y los demás tags siguen leyendo; el motivo se va con la siguiente lectura que el
PLC conteste.
Los tipos de dato
El selector de Tipo de dato ofrece los cuatro tipos que el driver sabe transportar:
| Tipo de dato | Contraparte en el PLC | Notas |
|---|---|---|
| Boolean | BOOL | 1 byte, distinto de cero es verdadero |
| Int32 | DINT | little-endian, igual que el PLC |
| Float | REAL | little-endian, igual que el PLC |
| String | STRING | el texto hasta el primer NUL del búfer de lectura |
El orden de bytes es el little-endian propio del PLC y se maneja automáticamente; no hay opción de orden de bytes. Una lectura de String decodifica el búfer devuelto hasta el primer terminador NUL, así que el relleno que queda detrás de un texto corto nunca se cuela en el valor. Los demás anchos de TwinCAT (INT, LREAL, WORD, …) no se ofrecen: exponga una variable así en el programa del PLC como uno de los cuatro tipos de arriba para poder leerla aquí.
Las escrituras
Los tags cuyo Acceso es Lectura y escritura o Solo escritura se pueden escribir. Una escritura resuelve el mismo símbolo y escribe los bytes del valor: 1 byte para Boolean, 4 bytes para Int32 y Float. Una escritura de String deja toda la Longitud de lectura del tag: los bytes UTF-8 del texto al frente y ceros detrás, así que un texto más corto escrito sobre uno más largo reemplaza el valor entero y no sobrevive nada del anterior. Un texto que no cabe en la longitud declarada se rechaza, con la longitud nombrada en el diario técnico, nunca se recorta para que quepa. Un tag nuevo arranca como Solo lectura.
Una escritura que el PLC rechaza, como la de un símbolo que no deja escribir, regresa
rechazada con el código de error ADS y lo que significa, por ejemplo
ADS error 0x704 (the symbol may not be written), y la conexión sigue arriba.
El descubrimiento
En este driver ADS no tiene descubrimiento por difusión, así que el Connector no muestra botón Descubrir. Agregue el dispositivo y sus símbolos a mano.
Bueno saber
- La ruta AMS es el motivo habitual por el que falla una primera conexión: el AMS Net Id
de la ruta en el PLC tiene que ser exactamente la IP de la estación más
.1.1, y la página del dispositivo da la ruta entera que hay que agregar. - El driver le pide al PLC un handle para cada símbolo una vez por conexión y devuelve
los handles cuando la conexión se cierra. Después de una descarga al PLC, un handle que
el PLC ya no acepta se reemplaza en la siguiente lectura, así que el tag sigue leyendo
con el programa nuevo; un símbolo que la descarga renombró o quitó deja su tag sin
valor, con
ADS error 0x710 (no symbol by that name), hasta que los nombres vuelvan a coincidir. - Un PLC inalcanzable no cuesta nada al arrancar: el dispositivo sigue reintentando en segundo plano y sus tags se leen con mala calidad hasta que la conexión llega.