Protokoll

Azon a protokoll, az Antcas TCP teljesen nyíltan dokumentált. A kommunikáció TCP-n keresztül történik.

Kommunikáció

A kommunikáció TCP-n keresztül történik egy nyitott kapcsolattal az Antcas Control-ból. A szerver mindig csak egy klienssel tud csatlakozni egy interfészenként. A port szabadon választható. Az alapértelmezett port a 5'252. A maximális csomagméret 3'000 bájtra korlátozódik. Több csomagot is egymás után át lehet küldeni. Az interfész rendelkezik egy időkorlátossal. Ha bizonyos időn belül nem érkezik meg válasz, az eljárás újra kezdődik.

Megjegyzés: Betűk mint umlautok és speciális karakterek az ISO-8859-1 formátumban vannak meghatározva.

Az összes használt változó érzékeny a nagy- és kisbetűkre, ami azt jelenti, hogy megkülönbözteti a nagy- és kisbetűket. Itt van egy példa, ahogyan egy egyszerű átvitel lehet felépítve:

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

Amiután egy kapcsolat létrejött, az Antcas Control egy handshaket küld a kliensnek. Ez opcionálisan tartalmazhatja a maximális buffer méretét bájtokban, hogy az Antcas Control minden üzenetet korlátozhat, amíg vissza nem kap megerősítést. Az MAX_BUFFER_SIZE mérete ne legyen túl kicsi, hogy a kommunikáció sebessége magas maradjon.

Antcas Control -> Kliens:

ANTCAS_TCP\n

Antcas Control <- Kliens:

OK[:MAX_BUFFER_SIZE=3000]\n

Inicializálás

Az inicializálás a handshake után történik. Az összes érték az adatpontokról a klienstől az Antcas Controlhoz kerül küldésre. Lásd: Érték átvitel. Ha az átvitel befejeződött, egy START parancs kerül kiadásra. Ezután az Antcas Control küldi el az értékeket. Ezek az inicializálás után lesznek szűrve. Tehát nem kerül átvitelre olyan adatpont, amely nem létezik.

Antcas Control <- Kliens:

START\n

Fordítástábla

Azonban egy fordítástáblázat is át lehet küldeni. Ez növeli a teljesítményt sok adatpont esetén. A fordítás közvetlenül a handshake után kell történjön meg. A változókat duplán is definiálhatjuk. Például hőmérséklet INT és REAL típusú. Az adatpontok teljesen külön vannak kezelve.

Antcas Control <- Kliens:

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

Itt a Licht/1. OG/EIN fordítva lesz x:1-re a kommunikációhoz. A szerver helyette csak x:1-et küld.

Watchdog / Keep Alive

A kapcsolat nyitva maradása érdekében egy ciklusos watchdogot használunk. Ez figyeli a klienst és a szervert is. Az időkorlát 6 másodperc után lép be, ha nem érkezik meg válasz. A kliens 10 másodperc után zárhatja a kapcsolatot, ha nem érkezik meg válasz a szervertől. Ez csak akkor használatos, ha nincs adat átvitel.

Antcas Control -> Kliens:

KA\n

Antcas Control <- Kliens:

RE\n

Érték átvitel

Az összes adat stringként kerül átvitelre. Az adattípus a érték előtagjaként van meghatározva. Egy adatpont csak egyszer jelenhet meg, még akkor is, ha több adattípust tartalmaz. Az adatpont egy útvonalat is tartalmazhat. Például:

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

vagy fordítástáblázattal:

x:1:TRUE\n

Amiután a string át lett küldve, egy megerősítésre van szükség, csak akkor kerül az következő érték átvitelre:

OK\n

Bool

Antcas Control <-> Kliens:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Kliens:

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

Megjegyzés: Más értékeket stringként kell átvitelre küldeni.

Int

Antcas Control <-> Kliens:

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

Real/Float

Antcas Control <-> Kliens:

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

Date

Antcas Control <-> Kliens:

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

Time

Antcas Control <-> Kliens:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Kliens:

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

String

Antcas Control <-> Kliens:

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

Figyelmeztetés: A sorvég jel (\n) küldése nem engedélyezett.

Timeswitch

Ez az adattípus mindig csak a adatcseré előtt kommunikál és küldi el az összes jövőbeli eseményt egy időzítőszervezőnek. Egy implementáció SPS szinten az Antcas Control-ban nem lehetséges. Viszont egy naptár manipulálható a SPS-ben.

Eszemények száma lekérdezése

A START parancs előtt a kívánt események számát kérdezik le. Az érték tartománya 0..255. Emellett visszaadja az aktuális időpontot UTC-ben. Ez jelenleg csak a hibaelemzéshez szolgál. Az érték azonban szükséges.

Antcas Control <- Kliens (START előtt):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Kapcsolóállapotok átvitel

Az első időpont meghatározza a bekapcsolás időpontját, és a második az kikapcsolásét. Összehasonlítás is előfordulhat. A memóriaterhelés csökkentése érdekében egy körgyűrűs memóriát használunk. Ez azt jelenti, hogy egy értéket helyettesítünk, és nem mindent eltolunk. Ezért minden értéket figyelembe kell venni. A fogadás után egy megerősítés küldésre kerül a szervernek. Az érték azonos is lehet a fentivel, hogy a program egyszerűbb legyen.

Antcas Control -> Kliens:

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

Nincs kapcsolási idő

Azonban, ha a kommunikáció megszakad, akkor sem kerül esemény kiváltásra, minden nem aktív bejegyzés deaktiválva lesz. Ez az eset, ha a bekapcsolás és kikapcsolás állapot azonos. A minimális kapcsolási idő így egy másodperc.

Antcas Control -> Kliens:

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