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.

Ver como Markdown

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.