Protokol

Protokol Antcas TCP je zcela otevřeně dokumentováno. Komunikace probíhá přes TCP.

Komunikace

Komunikace probíhá přes TCP s otevřeným spojením od Antcas Control. Server může na každém rozhraní být připojen pouze k jednomu klientovi. Port lze volně zvolit. Výchozí port je 5'252. Maximální velikost balíčku je omezena na 3'000 bajtů. Mohou být přenášeny několik balíků za sebou. Rozhraní má timeout. Pokud po určité době nedojde k odpovědi, proces začne znovu.

Poznámka: Znaky jako diakritika a speciální znaky jsou definovány ve formátu ISO-8859-1.

Všechny použité proměnné jsou citlivé na velikost písmen, což znamená, že se rozlišuje mezi velkými a malými písmeny. Tady je příklad, jak může být postavena jednoduchá přenosová komunikace:

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

Jakmile je spojení vytvořeno, Antcas Control pošle klientovi handshake. Může obsahovat volitelnou maximální velikost bufferu v bytech, aby Antcas Control omezil každý telegram při odesílání, dokud nedojde k potvrzení. Velikost MAX_BUFFER_SIZE by neměla být příliš malá, aby se udržela vysoká rychlost rozhraní.

Antcas Control -> Klient:

ANTCAS_TCP\n

Antcas Control <- Klient:

OK[:MAX_BUFFER_SIZE=3000]\n

Inicializace

Inicializace probíhá po handshake. Všechny hodnoty datových bodů jsou odesílány od klienta do Antcas Control. Viz přenos hodnot. Je-li přenos dokončen, je spuštěn příkaz START. Poté Antcas Control odešle své hodnoty. Tyto hodnoty jsou po inicializaci filtrovány. Nebude tedy přenesen žádný datový bod, který neexistuje.

Antcas Control <- Klient:

START\n

Překladová tabulka

Navíc může být přenesena překladová tabulka. To zvyšuje výkonnost při velkém počtu datových bodů. Překlad musí proběhnout ihned po handshake. Proměnné mohou být také definovány dvakrát. Například teplota typu INT a REAL. Datové body jsou zcela samostatně zpracovávány.

Antcas Control <- Klient:

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

Zde je Licht/1. OG/EIN přeloženo na x:1 pro komunikaci. Server místo jména pošle pouze x:1.

Watchdog / Keep Alive

Aby zůstalo spojení otevřené, je použit cyklický watchdog. Ten monitoruje klienta i server. Timeout nastane přibližně po 6s bez odpovědi. Klient může po 10 sekundách bez odpovědi od serveru spojení ukončit. Tento mechanismus je používán pouze tehdy, když nejsou přenášena žádná data.

Antcas Control -> Klient:

KA\n

Antcas Control <- Klient:

RE\n

Přenos hodnoty

Všechny data jsou přenášena jako řetězec. Datový typ je definován jako prefix hodnoty. Datový bod může existovat pouze jednou, i když má několik datových typů. Datový bod může také obsahovat cestu. Například:

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

nebo s překladovou tabulkou:

x:1:TRUE\n

Po přenosu řetězce musí být potvrzeno, teprve pak bude přenesen další hodnota:

OK\n

Bool

Antcas Control <-> Klient:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Klient:

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

Poznámka: Jiná hodnota musí být přenesena jako řetězec.

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 znaky]\n

Pozor: Odesílání nového řádku (\n) není povoleno.

Timeswitch

Tento datový typ komunikuje vždy pouze před výměnou dat a odesílá všechna budoucí události časového spínače. Implementace na úrovni SPS v Antcas Control není možná. Nicméně lze v SPS manipulovat s kalendářem.

Požadavek počtu událostí

Před příkazem START se požaduje počet požadovaných událostí. Rozsah hodnot je mezi 0..255. Navíc se vrací aktuální čas v UTC. Tento slouží zatím pouze k analýze chyb. Nicméně hodnota je povinná.

Antcas Control <- Klient (před START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Přenos stavů spínače

První čas definuje okamžik pro zapnutí a druhý pro vypnutí. Mohou nastat i překryvy. Aby se neztěžilo příliš paměť, je používán kruhový buffer. To znamená, že hodnota je nahrazena a všechny hodnoty se nesunou dopředu. Proto musí být zohledněny všechny hodnoty. Po přijetí je odeslána potvrzení zpět na server. Hodnota může být také identická s tou výše uvedenou, aby bylo programování jednodušší.

Antcas Control -> Klient:

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

Žádná časová spínací doba

Aby při přerušené komunikaci nebyla spuštěna žádná událost, jsou všechny neaktivní záznamy deaktivovány. To je případ, pokud jsou stav zapnutí a vypnutí identické. Minimální časové období pro spínání tak činí jednu sekundu.

Antcas Control -> Klient:

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