Protokoll

Protokollet Antcas TCP är helt öppet dokumenterat. Kommunikation sker via TCP.

Kommunikation

Kommunikationen sker via TCP med en öppen anslutning från Antcas Control. Servern kan per gränssnitt endast vara ansluten till en klient åt gången. Porten kan fritt väljas. Standardport är 5'252. Den maximala paketstorleken är begränsad till 3'000 bytes. Flera paket kan skickas i följd. Gränssnittet har ett tidsgräns. Om ingen svar ges efter en viss tid startar processen om från början.

Anmärkning: Tecken som diakritiska tecken och specialtecken definieras i ISO-8859-1-formatet.

Alla använda variabler är case-sensitive, vilket innebär att skillnad görs mellan versaler och gemener. Här följer ett exempel på hur en enkel överföring kan vara uppbyggd:

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

Så snart en anslutning har upprättats skickar Antcas Control ett handskakningsmeddelande till klienten. Detta kan valfritt innehålla den maximala buffertstorleken i bytes, så att Antcas Control begränsar varje telegram vid sändning tills en bekräftelse returneras. Storleken på MAX_BUFFER_SIZE bör inte väljas för liten för att upprätthålla gränssnittets hastighet.

Antcas Control -> Klient:

ANTCAS_TCP\n

Antcas Control <- Klient:

OK[:MAX_BUFFER_SIZE=3000]\n

Initialisering

Initialiseringen sker efter handskakningen. Alla värden för datapunkterna skickas från klienten till Antcas Control. Se värdeöverföring. När överföringen är klar utlöses ett startkommando. Därefter skickar Antcas Control sina värden. Dessa filtreras efter initialiseringen. Inga datapunkter som inte existerar kommer att överföras.

Antcas Control <- Klient:

START\n

Översättningstabell

En översättningstabell kan också överföras. Detta förbättrar prestandan vid många datapunkter. Översättningen måste ske direkt efter handskakningen. Variabler kan också definieras dubbelt. Till exempel temperatur av typ INT och REAL. Datapunkterna behandlas helt separat.

Antcas Control <- Klient:

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

Här översätts Licht/1. OG/EIN till x:1 för kommunikationen. Servern skickar istället för namnet endast x:1.

Watchdog / Keep Alive

För att anslutningen ska förbli öppen används en cyklisk watchdog. Den övervakar både klienten och servern. Tidsgränsen inträffar efter cirka 6 sekunder utan svar. Klienten får efter 10 sekunder utan svar från servern bryta anslutningen. Denna används endast om inga data överförs.

Antcas Control -> Klient:

KA\n

Antcas Control <- Klient:

RE\n

Värdeöverföring

Alla data överförs som sträng. Datatypen definieras som prefix till värdet. En datapunkt får endast förekomma en gång, även om den har flera datatyper. Datapunkten kan också innehålla en sökväg. Till exempel:

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

eller med översättningstabell:

x:1:TRUE\n

Efter att strängen har överförts måste en bekräftelse ske, först då överförs nästa värde:

OK\n

Bool

Antcas Control <-> Klient:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Klient:

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

Anmärkning: Andra värden måste överföras som sträng.

Int

Antcas Control <-> Klient:

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

Real/Float

Antcas Control <-> Klient:

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

Date

Antcas Control <-> Klient:

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

Time

Antcas Control <-> Klient:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Klient:

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

String

Antcas Control <-> Klient:

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

Varning: Att skicka en radbrytning (\n) är inte tillåtet.

Timeswitch

Denna datatyp kommunicerar alltid endast före datautbytet och skickar alla kommande händelser för en tidsur. En implementering på SPS-nivå i Antcas Control är inte möjlig. Dock kan en kalender manipuleras i SPS.

Ange antal händelser

Innan startkommandot begärs antalet önskade händelser. Värdet ligger mellan 0..255. Dessutom returneras den aktuella tiden i UTC. Denna används för närvarande endast för felanalys. Värdet är dock obligatoriskt.

Antcas Control <- Klient (innan START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Överföring av tidslägen

Den första tiden definierar tidpunkten för att slå på och den andra för att slå av. Det kan också förekomma överlappningar. För att inte belasta minnet för mycket används en ringbuffert. Detta innebär att ett värde ersätts och inte alla värden skjuts upp. Därför måste alla värden beaktas. Efter mottagandet skickas en bekräftelse tillbaka till servern. Värdet kan också vara identiskt med det ovan för att göra programmet enklare.

Antcas Control -> Klient:

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

Ingen tidsinställning

För att inga händelser ska utlösas vid en avbruten kommunikation deaktiveras alla icke aktiva poster. Detta är fallet när till- och från-ställningsläget är identiska. Den minimala tidsinställningen ligger därmed på en sekund.

Antcas Control -> Klient:

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