Protocolo

El protocolo Antcas TCP está completamente documentado de manera abierta. La comunicación se realiza a través de TCP.

Comunicación

La comunicación se realiza a través de TCP con una conexión abierta desde Antcas Control. El servidor solo puede estar conectado con un cliente por interfaz. El puerto puede elegirse libremente. El puerto estándar es el 5'252. El tamaño máximo de paquete está limitado a 3'000 bytes. Se pueden transmitir varios paquetes en secuencia. La interfaz posee un tiempo de espera. Si después de cierto tiempo no se recibe una respuesta, el proceso comienza de nuevo.

Nota: Los caracteres como las vocales con diacríticos y los signos especiales están definidos en el formato ISO-8859-1.

Todas las variables utilizadas son sensibles a mayúsculas y minúsculas, lo que significa que se distingue entre mayúsculas y minúsculas. Aquí hay un ejemplo de cómo puede estar estructurada una transmisión simple:

ANTCAS_TCP
OK:3000
TL:x:1:Licht/1. OG/EIN
TL:ui:1:Licht/1. OG/DIM
START
x:1:TRUE
OK
KA
RE

Handshake

Tan pronto como se establece una conexión, Antcas Control envía un handshake al cliente. Este puede contener opcionalmente el tamaño máximo del búfer en bytes, para que Antcas Control limite cada telegrama durante el envío hasta que se devuelva una confirmación. El tamaño de MAX_BUFFER_SIZE no debe ser demasiado pequeño para mantener alta la velocidad de la interfaz.

Antcas Control -> Cliente:

ANTCAS_TCP\n

Antcas Control <- Cliente:

OK[:MAX_BUFFER_SIZE=3000]\n

Inicialización

La inicialización se realiza después del handshake. Se envían todos los valores de los puntos de datos desde el cliente a Antcas Control. Ver Transmisión de valor. Una vez finalizada la transmisión, se desencadena un comando de inicio. Luego, Antcas Control envía sus valores. Estos se filtran después de la inicialización. Por lo tanto, no se transmite ningún punto de datos que no exista.

Antcas Control <- Cliente:

START\n

Tabla de traducción

Además, se puede transmitir una tabla de traducción. Esto mejora el rendimiento con muchos puntos de datos. La traducción debe realizarse directamente después del handshake. Las variables también pueden definirse en duplicado. Por ejemplo, temperatura de tipo INT y REAL. Los puntos de datos se tratan por completo de manera separada.

Antcas Control <- Cliente:

TL:x:1:Licht/1. OG/EIN\n

Aquí, Licht/1. OG/EIN se traduce a x:1 para la comunicación. El servidor envía solo x:1 en lugar del nombre.

Watchdog / Keep Alive

Para mantener la conexión abierta, se utiliza un watchdog cíclico. Este supervisa tanto al cliente como al servidor. El tiempo de espera ocurre después de aproximadamente 6 segundos sin respuesta. El cliente puede desconectar la conexión después de 10 segundos sin respuesta del servidor. Esto solo se utiliza cuando no se transmiten datos.

Antcas Control -> Cliente:

KA\n

Antcas Control <- Cliente:

RE\n

Transmisión de valor

Todos los datos se transmiten como cadena. El tipo de dato se define como prefijo del valor. Un punto de datos solo puede aparecer una vez, incluso si tiene varios tipos de datos. El punto de datos también puede contener una ruta. Por ejemplo:

x:Licht/1. OG/EIN:TRUE\n

o con tabla de traducción:

x:1:TRUE\n

Después de que se haya transmitido la cadena, debe ocurrir una confirmación; solo entonces se transmite el siguiente valor:

OK\n

Bool

Antcas Control <-> Cliente:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Cliente:

ui:Datenpunkt:[0..65536]\n

Nota: Otros valores deben transmitirse como cadena de caracteres.

Int

Antcas Control <-> Cliente:

i:Datenpunkt:[-32768..32767]\n

Real/Float

Antcas Control <-> Cliente:

r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n

Date

Antcas Control <-> Cliente:

d:Datenpunkt:D#YYYY-MM-DD\n

Time

Antcas Control <-> Cliente:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Cliente:

dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n

String

Antcas Control <-> Cliente:

s:Datenpunkt:String[max. 64 Zeichen]\n

Atención: No está permitido enviar un salto de línea (\n).

Timeswitch

Este tipo de dato solo comunica antes del intercambio de datos y envía todos los eventos futuros de un reloj programable. Una implementación a nivel de PLC en Antcas Control no es posible. Sin embargo, se puede manipular un calendario en la PLC.

Solicitar número de eventos

Antes del comando de inicio, se solicita el número de eventos deseados. El rango de valores está entre 0..255. Además, se devuelve la hora actual en UTC. Esto solo sirve actualmente para el análisis de errores. Sin embargo, el valor es obligatorio.

Antcas Control <- Cliente (antes de START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Transmisión de los estados de conmutación

La primera hora define el momento para encender y la segunda para apagar. También pueden ocurrir superposiciones. Para no sobrecargar demasiado la memoria, se utiliza una memoria circular. Esto significa que un valor se reemplaza y no todos los valores se desplazan hacia adelante. Por lo tanto, todos los valores deben tenerse en cuenta. Después de recibir, se envía una confirmación al servidor. El valor también puede ser idéntico al anterior para simplificar el programa.

Antcas Control -> Cliente:

ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n

Sin tiempo de conmutación

Para que no se active ningún evento durante una comunicación interrumpida, todas las entradas no activas se desactivan. Esto ocurre cuando el estado de encendido y apagado son idénticos. Por lo tanto, el tiempo de conmutación mínimo es de una segundo.

Antcas Control -> Cliente:

ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n