Beckhoff ADS

Conectar autómatas Beckhoff TwinCAT por ADS/AMS: la ruta AMS, el puerto del runtime, las rutas de símbolo y las longitudes de lectura.

Ver como Markdown

El controlador Beckhoff ADS habla con autómatas Beckhoff TwinCAT por ADS, el protocolo de automatización de TwinCAT transportado sobre rutas AMS. Los valores se direccionan por su ruta de símbolo en el programa del autómata, así que lo que se escribe es lo que declara el proyecto TwinCAT. Añada un dispositivo bajo el controlador Beckhoff ADS en el Connector; el panel muestra solo los campos que usa este protocolo.

Conexión

Campo Significado Por defecto
Host o IP Dirección IP del autómata. Su AMS Net Id se deriva de esta dirección como {ip}.1.1. Salvo que AMS Net Id del autómata lo indique, el AMS Net Id del autómata 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 1 del PLC 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 autómata. Un campo vacío usa la dirección de esta estación en la red que llega al autómata, que muestra en gris; un valor escrito en el campo se usa en su lugar. vacío
AMS Net Id del autómata El AMS Net Id propio del autómata, para un autómata 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) Periodo de lectura para todo el dispositivo, para los tags que no lo sustituyen. 1.000

La cabecera del dispositivo muestra el endpoint ya compuesto, por ejemplo ads://192.168.0.1:192.168.0.50:851 (IP local, IP del autómata, puerto AMS). Cada tag puede fijar su propio Intervalo de sondeo (ms); un valor de 0 en el tag recae en el intervalo del dispositivo.

ADS solo responde a las estaciones para las que el autómata tiene una ruta AMS: Preparar el autómata dice qué ruta agregar y dónde.

Preparar el autómata

Un autómata TwinCAT solo responde 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 autómata 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, igual a lo que el controlador deriva de 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 autómata como sistema de destino y abra SYSTEM > Routes, pestaña Static Routes, y luego Add. En el escritorio del propio autómata, 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 autómata. Un equipo con varias tarjetas de red tiene una dirección en cada una, y la ruta solo vale para la que nombra. Mientras IP local (AMS) está vacía, el controlador usa la dirección de la tarjeta por la que Windows llega al autómata, 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 autómata 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 controlador: 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 autómata responde, 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 autómata por su AMS Net Id, y el router del autómata solo responde por el suyo: un autómata cuyo AMS Net Id no es el que usa la estación tampoco responde nunca, lo que se ve exactamente igual que una ruta que falta. Cuando el autómata ya tiene la ruta y aun así no responde, 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 autómata; el aviso nombra el que usa la estación.

Direccionamiento

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

Campo Significado Valores aceptados Por defecto
Símbolo La ruta de símbolo de la variable en el programa del autómata. Obligatorio. texto libre, por ejemplo MAIN.fValue vacío
Longitud de lectura (bytes, en blanco = automático) Cuántos bytes se transfieren en cada 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 controlador resuelve el símbolo por su nombre en el autómata y lee sus bytes en bruto. 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 forma 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 ya compuesta mientras se edita.

Una lectura que el autómata 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 en pie y los demás tags siguen leyendo; el motivo desaparece con la siguiente lectura que el autómata responda.

Tipos de dato

El selector Tipo de dato ofrece los cuatro tipos que el controlador sabe transportar:

Tipo de dato Equivalente en el autómata Notas
Boolean BOOL 1 byte; distinto de cero es verdadero
Int32 DINT little-endian, igual que el autómata
Float REAL little-endian, igual que el autómata
String STRING texto hasta el primer NUL del búfer de lectura

El orden de bytes es el little-endian propio del autómata y se gestiona automáticamente; no hay opción de orden de bytes. Una lectura String descodifica el búfer devuelto hasta el primer terminador NUL, así que el relleno que va 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 esa variable en el programa del autómata como uno de los cuatro tipos de arriba para poder leerla aquí.

Escrituras

Se pueden escribir los tags cuyo Acceso es Lectura y escritura o Solo escritura. Una escritura resuelve el mismo símbolo y escribe los bytes del valor: 1 byte en Boolean, 4 bytes en Int32 y en Float. Una escritura String deposita toda la Longitud de lectura del tag: los bytes UTF-8 del texto delante y ceros detrás, así que un texto más corto escrito sobre uno más largo sustituye el valor entero y del antiguo no sobrevive nada. Un texto que no cabe en la longitud declarada se rechaza nombrando la longitud en el diario técnico, nunca se recorta a la medida. Un tag nuevo nace como Solo lectura.

Una escritura que el autómata rechaza, como la de un símbolo que no deja escribir, vuelve 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 en pie.

Descubrimiento

En este controlador, ADS no tiene descubrimiento por difusión, así que el Connector no muestra ningún botón Descubrir. Añada el dispositivo y sus símbolos a mano.

Conviene saber

  • La ruta AMS es la razón habitual por la que falla una primera conexión: el AMS Net Id de la ruta en el autómata 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 controlador pide al autómata un handle para cada símbolo una vez por conexión y devuelve los handles cuando la conexión se cierra. Tras una descarga en el autómata, un handle que el autómata ya no acepta se sustituye en la siguiente lectura, así que el tag sigue leyendo con el programa nuevo; un símbolo al que la descarga cambió el nombre o que quitó deja su tag sin valor, con ADS error 0x710 (no symbol by that name), hasta que los nombres vuelven a coincidir.
  • Un autómata inalcanzable no cuesta nada en el arranque: el dispositivo sigue reintentando en segundo plano y sus tags se leen con mala calidad hasta que la conexión aterriza.