Het protocol Antcas TCP is volledig open gedocumenteerd. De communicatie vindt plaats via TCP.
De communicatie vindt plaats via TCP met een open verbinding van Antcas Control. De server kan per interface altijd alleen met één client verbinden. De poort kan vrij gekozen worden. Standaard is de poort 5'252. De maximale pakketgrootte is beperkt tot 3'000 bytes. Er kunnen meerdere pakketten achter elkaar worden overgedragen. De interface heeft een timeout. Wanneer na een bepaalde tijd geen antwoord wordt gegeven, begint het proces opnieuw.
Opmerking: Tekens zoals umlauts en speciale tekens zijn gedefinieerd in het ISO-8859-1-formaat.
Alle gebruikte variabelen zijn case-sensitive, dit betekent dat er onderscheid wordt gemaakt tussen hoofd- en kleine letters. Hier is een voorbeeld van hoe een eenvoudige overdracht kan worden opgebouwd:
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
Zodra een verbinding is opgezet, stuurt Antcas Control een handshake naar de client. Deze kan optioneel de maximale buffergrootte in bytes bevatten, zodat Antcas Control elk bericht beperkt bij het verzenden totdat een bevestiging wordt teruggegeven. De grootte van MAX_BUFFER_SIZE moet niet te klein worden gekozen om de snelheid van de interface hoog te houden.
Antcas Control -> Client:
ANTCAS_TCP\n
Antcas Control <- Client:
OK[:MAX_BUFFER_SIZE=3000]\n
De initialisatie vindt plaats na de handshake. Alle waarden van de datapunten worden van de client naar Antcas Control verzonden. Zie Waarde Overdragen. Is de overdracht voltooid, wordt een startcommando geactiveerd. Daarna stuurt Antcas Control zijn waarden. Deze worden na de initialisatie gefilterd. Er wordt dus geen datapunt overgedragen dat niet bestaat.
Antcas Control <- Client:
START\n
Daarnaast kan een vertalingstabel worden overgedragen. Dit verhoogt de prestaties bij veel datapunten. De vertaling moet direct na de handshake plaatsvinden. Variabelen kunnen ook dubbel gedefinieerd worden. Bijvoorbeeld temperatuur van het type INT en REAL. De datapunten worden volledig apart behandeld.
Antcas Control <- Client:
TL:x:1:Licht/1. OG/EIN\n
Hier wordt Licht/1. OG/EIN vertaald naar x:1 voor de communicatie. De server stuurt in plaats van de naam alleen nog x:1.
Om de verbinding open te houden, wordt een cyclische watchdog gebruikt. Deze controleert zowel de client als de server. Het timeout treedt op na ongeveer 6 seconden zonder antwoord. De client mag na 10 seconden zonder antwoord van de server de verbinding verbreken. Deze wordt alleen gebruikt als geen gegevens worden overgedragen.
Antcas Control -> Client:
KA\n
Antcas Control <- Client:
RE\n
Alle gegevens worden als string overgedragen. Het datatype wordt gedefinieerd als prefix van de waarde. Een datapunt mag alleen één keer voorkomen, zelfs als het meerdere datatypes heeft. Het datapunt kan ook een pad bevatten. Bijvoorbeeld:
x:Licht/1. OG/EIN:TRUE\n
of met vertalingstabel:
x:1:TRUE\n
Na het overdragen van de string moet een bevestiging plaatsvinden, pas dan wordt de volgende waarde overgedragen:
OK\n
Antcas Control <-> Client:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Client:
ui:Datenpunkt:[0..65536]\n
Opmerking: Andere waarden moeten als tekenreeks worden overgedragen.
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 tekens]\n
Let op: Het verzenden van een linefeed (\n) is niet toegestaan.
Deze datatype communiceert altijd alleen voor de datuitwisseling en stuurt alle komende gebeurtenissen van een tijdschakelaar. Een implementatie op SPS-niveau in Antcas Control is niet mogelijk. Echter kan een kalender in de SPS worden manipulerd.
Voor het startcommando wordt het aantal gewenste gebeurtenissen aangevraagd. De waardebereik ligt tussen 0..255. Bovendien wordt de huidige tijd in UTC teruggegeven. Deze dient momenteel alleen voor foutanalyse. De waarde is echter vereist.
Antcas Control <- Client (voor START):
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
De eerste tijd definieert het moment voor inschakelen en de tweede voor uitschakelen. Er kunnen ook overlappingen optreden. Om de opslag niet te veel te belasten, wordt een ringspeicher gebruikt. Dit betekent dat een waarde wordt vervangen en niet alle waarden naar achteren schuiven. Daarom moeten alle waarden in beschouwing worden genomen. Na ontvangst wordt een bevestiging aan de server teruggestuurd. De waarde kan ook identiek zijn aan die van boven om het programma eenvoudiger te maken.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
Om bij een onderbroken communicatie geen gebeurtenis te activeren, worden alle niet-actieve inzendingen gedeactiveerd. Dit is het geval wanneer de in- en uitschakelstand identiek zijn. De minimale schakeltijd ligt daarom op één seconde.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n