Le protocole Antcas TCP est entièrement documenté de manière ouverte. La communication s'effectue via TCP.
La communication s'effectue via TCP avec une connexion ouverte depuis Antcas Control. Le serveur ne peut être connecté qu'à un seul client par interface. Le port peut être choisi librement. Par défaut, le port est 5'252. La taille maximale des paquets est limitée à 3'000 octets. Plusieurs paquets peuvent être transmis les uns après les autres. L'interface possède un délai d'attente. Si aucune réponse n'est donnée après un certain temps, le processus recommence.
Remarque: Les caractères tels que les accents et les caractères spéciaux sont définis au format ISO-8859-1.
Toutes les variables utilisées sont sensibles à la casse, ce qui signifie qu'une distinction est faite entre les majuscules et les minuscules. Voici un exemple de la manière dont une transmission simple peut être structurée :
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
Dès qu'une connexion est établie, Antcas Control envoie un handshake au client. Celui-ci peut optionnellement contenir la taille maximale du buffer en octets, afin que Antcas Control limite chaque télégramme lors de l'envoi jusqu'à ce qu'un accusé de réception soit renvoyé. La taille de MAX_BUFFER_SIZE ne doit pas être choisie trop petite pour maintenir la vitesse de l'interface élevée.
Antcas Control -> Client:
ANTCAS_TCP\n
Antcas Control <- Client:
OK[:MAX_BUFFER_SIZE=3000]\n
L'initialisation a lieu après le handshake. Toutes les valeurs des points de données sont envoyées par le client à Antcas Control. Voir Transfert de valeur. Une fois la transmission terminée, une commande de démarrage est déclenchée. Ensuite, Antcas Control envoie ses valeurs. Celles-ci sont filtrées après l'initialisation. Aucun point de données n'est donc transmis s'il n'existe pas.
Antcas Control <- Client:
START\n
De plus, un tableau de traduction peut être transmis. Cela améliore les performances avec de nombreux points de données. La traduction doit avoir lieu directement après le handshake. Les variables peuvent également être définies en double. Par exemple, la température de type INT et REAL. Les points de données sont traités complètement séparément.
Antcas Control <- Client:
TL:x:1:Licht/1. OG/EIN\n
Ici, Licht/1. OG/EIN est traduit en x:1 pour la communication. Le serveur envoie à la place du nom uniquement x:1.
Afin de maintenir la connexion ouverte, un watchdog cyclique est utilisé. Celui-ci surveille le client ainsi que le serveur. Le délai d'attente se produit après environ 6 secondes sans réponse. Le client peut interrompre la connexion après 10 secondes sans réponse du serveur. Celui-ci n'est utilisé que lorsqu'aucun données ne sont transmises.
Antcas Control -> Client:
KA\n
Antcas Control <- Client:
RE\n
Toutes les données sont transmises en tant que chaîne. Le type de données est défini comme préfixe de la valeur. Un point de données ne peut apparaître qu'une seule fois, même s'il possède plusieurs types de données. Le point de données peut également contenir un chemin. Par exemple :
x:Licht/1. OG/EIN:TRUE\n
ou avec le tableau de traduction :
x:1:TRUE\n
Après avoir transmis la chaîne, une confirmation doit être effectuée, puis seulement la valeur suivante est transmise :
OK\n
Antcas Control <-> Client:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Client:
ui:Datenpunkt:[0..65536]\n
Remarque : Les autres valeurs doivent être transmises sous forme de chaîne.
Antcas Control <-> Client:
i:Datenpunkt:[-32768..32767]\n
Antcas Control <-> Client:
r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n
Antcas Control <-> Client:
d:Datenpunkt:D#YYYY-MM-DD\n
Antcas Control <-> Client:
t:Datenpunkt:T#5d4h3m2s1ms\n
Antcas Control <-> Client:
dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n
Antcas Control <-> Client:
s:Datenpunkt:String[max. 64 Zeichen]\n
Attention : L'envoi d'un saut de ligne (\n) n'est pas autorisé.
Ce type de données communique toujours avant l'échange de données et envoie tous les événements à venir d'une minuterie. Une implémentation au niveau PLC dans Antcas Control n'est pas possible. Cependant, un calendrier peut être manipulé dans le PLC.
Avant la commande de démarrage, le nombre d'événements souhaités est demandé. La plage de valeurs se situe entre 0..255. De plus, l'heure actuelle en UTC est renvoyée. Celle-ci sert actuellement uniquement à l'analyse des erreurs. La valeur est cependant requise.
Antcas Control <- Client (avant START) :
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
La première heure définit le moment de l'allumage et la seconde celui de l'extinction. Il peut également y avoir des chevauchements. Pour ne pas trop solliciter la mémoire, une mémoire circulaire est utilisée. Cela signifie qu'une valeur est remplacée et que toutes les valeurs ne sont pas décalées. Par conséquent, toutes les valeurs doivent être prises en compte. Après réception, un accusé de réception est renvoyé au serveur. La valeur peut également être identique à celle du haut pour simplifier le programme.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
Afin qu'aucun événement ne soit déclenché en cas de communication interrompue, toutes les entrées non actives sont désactivées. C'est le cas lorsque l'état d'allumage et d'extinction est identique. Le temps de commutation minimal est donc d'une seconde.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n