Protokół Antcas TCP jest całkowicie otwarto udokumentowany. Komunikacja odbywa się za pośrednictwem TCP.
Komunikacja odbywa się za pośrednictwem TCP z otwartym połączeniem od Antcas Control. Serwer może być połączony tylko z jednym klientem na interfejs. Port można dowolnie wybrać. Domyślnie jest to port 5'252. Maksymalny rozmiar pakietu jest ograniczony do 3'000 bajtów. Można przesyłać kilka pakietów jeden po drugim. Interfejs posiada timeout. Jeśli po pewnym czasie nie zostanie udzielona odpowiedź, proces zaczyna się od nowa.
Uwaga: Znaki takie jak litery z diakrytykiem i znaki specjalne są definiowane w formacie ISO-8859-1.
Wszystkie używane zmienne są wrażliwe na wielkość liter, co oznacza, że różnica między wielkimi i małymi literami ma znaczenie. Oto przykład, jak może wyglądać prosta transmisja:
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
Jak tylko połączenie zostanie nawiązane, Antcas Control wysyła handshake do klienta. Może on opcjonalnie zawierać maksymalny rozmiar bufora w bajtach, aby Antcas Control ograniczał każdą wiadomość podczas wysyłania, aż zostanie zwrócona potwierdzenie. Rozmiar MAX_BUFFER_SIZE nie powinien być zbyt mały, aby utrzymać wysoką prędkość interfejsu.
Antcas Control -> Klient:
ANTCAS_TCP\n
Antcas Control <- Klient:
OK[:MAX_BUFFER_SIZE=3000]\n
Inicjalizacja następuje po handshake. Wszystkie wartości punktów danych są wysyłane od klienta do Antcas Control. Patrz Przesyłanie wartości. Gdy transmisja zostanie zakończona, wywołuje się polecenie start. Następnie Antcas Control wysyła swoje wartości. Te są filtrowane po inicjalizacji. Nie przesyłany jest żaden punkt danych, który nie istnieje.
Antcas Control <- Klient:
START\n
Ponadto można przesłać tabelę tłumaczeń. To zwiększa wydajność przy wielu punktach danych. Tłumaczenie musi nastąpić bezpośrednio po handshake. Zmienne mogą być również zdefiniowane podwójnie. Na przykład temperatura typu INT i REAL. Punkty danych są całkowicie oddzielnie traktowane.
Antcas Control <- Klient:
TL:x:1:Licht/1. OG/EIN\n
Tutaj Licht/1. OG/EIN jest tłumaczone na x:1 dla komunikacji. Serwer wysyła zamiast nazwy tylko x:1.
Aby połączenie pozostało otwarte, używany jest cykliczny watchdog. Monitoruje on klienta oraz serwer. Timeout występuje po około 6s bez odpowiedzi. Klient może rozłączyć połączenie po 10 sekundach bez odpowiedzi od serwera. Jest to używane tylko wtedy, gdy nie przesyłane są żadne dane.
Antcas Control -> Klient:
KA\n
Antcas Control <- Klient:
RE\n
Wszystkie dane są przesyłane jako łańcuch znaków. Typ danych jest definiowany jako prefiks wartości. Punkt danych może wystąpić tylko raz, nawet jeśli posiada kilka typów danych. Punkt danych może również zawierać ścieżkę. Na przykład:
x:Licht/1. OG/EIN:TRUE\n
lub z tabelą tłumaczeń:
x:1:TRUE\n
Po przesłaniu łańcucha znaków, musi nastąpić potwierdzenie, dopiero wtedy przesyłana jest następna wartość:
OK\n
Antcas Control <-> Klient:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Klient:
ui:Datenpunkt:[0..65536]\n
Uwaga: Inne wartości muszą być przesyłane jako łańcuch znaków.
Antcas Control <-> Klient:
i:Datenpunkt:[-32768..32767]\n
Antcas Control <-> Klient:
r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n
Antcas Control <-> Klient:
d:Datenpunkt:D#YYYY-MM-DD\n
Antcas Control <-> Klient:
t:Datenpunkt:T#5d4h3m2s1ms\n
Antcas Control <-> Klient:
dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n
Antcas Control <-> Klient:
s:Datenpunkt:String[max. 64 Zeichen]\n
Uwaga: Wysyłanie znaku nowej linii (\n) nie jest dozwolone.
Ten typ danych komunikuje się zawsze tylko przed wymianą danych i wysyła wszystkie nadchodzące zdarzenia zegara czasowego. Implementacja na poziomie sterownika w Antcas Control nie jest możliwa. Jednak kalendarz może być manipulowany w sterowniku.
Przed poleceniem start zapytana jest liczba pożądanych zdarzeń. Zakres wartości wynosi od 0 do 255. Ponadto zwracana jest aktualna godzina w UTC. Służy ona obecnie tylko analizie błędów. Wartość jest jednak wymagana.
Antcas Control <- Klient (przed START):
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
Pierwsza godzina definiuje moment włączenia, a druga moment wyłączenia. Może dojść do nakładania się. Aby nie obciążać zbyt mocno pamięci, używany jest bufor cykliczny. Oznacza to, że jedna wartość jest zastępowana, a nie wszystkie wartości przesuwają się do przodu. Dlatego wszystkie wartości muszą być uwzględnione. Po otrzymaniu wysyłane jest potwierdzenie do serwera. Wartość może być również identyczna z tą z góry, aby uprościć program.
Antcas Control -> Klient:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
Aby podczas przerwanego połączenia nie wystąpiło zdarzenie, wszystkie nieaktywne wpisy są dezaktywowane. Ma to miejsce, gdy stan włączenia i wyłączenia jest identyczny. Minimalny czas przełączania wynosi zatem jedną sekundę.
Antcas Control -> Klient:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n