Protokol

Protocoulul Antcas TCP este complet documentat deschis. Comunicarea se face prin intermediul TCP.

Comunicare

Comunicarea se face prin intermediul TCP cu o conexiune deschisă de la Antcas Control. Serverul poate fi conectat doar cu un client pe fiecare interfață. Portul poate fi ales liber. Portul standard este portul 5'252. Mărimea maximă a pachetului este limitată la 3'000 octeți. Pot fi transmise mai multe pachete una după alta. Interfața are un timeout. Dacă nu se primește răspunsul după o anumită perioadă de timp, procesul începe din nou.

Atenție: Caracterele precum diacriticele și caracterele speciale sunt definite în formatul ISO-8859-1.

Toate variabilele utilizate sunt sensibile la majuscule, ceea ce înseamnă că se face distincție între litere mari și litere mici. Iată un exemplu de cum poate fi structurată o transmisie simplă:

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

În momentul în care se stabilește o conexiune, Antcas Control trimite un handshake către client. Acesta poate conține opțional mărimea maximă a bufferului în octeți, astfel încât Antcas Control să limiteze fiecare telegramă la trimitere până când este returnată o confirmare. Mărimea MAX_BUFFER_SIZE nu ar trebui să fie prea mică pentru a menține viteza interfeței ridicată.

Antcas Control -> Client:

ANTCAS_TCP\n

Antcas Control <- Client:

OK[:MAX_BUFFER_SIZE=3000]\n

Inițializare

Inițializarea are loc după handshake. Toate valorile punctelor de date sunt trimise de la client către Antcas Control. Vezi Transmitere Valoare. Dacă transmisia este finalizată, se declanșează o comandă de start. Apoi, Antcas Control trimite valorile sale. Acestea sunt filtrate după inițializare. Astfel, nu va fi transmis niciun punct de date care să nu existe.

Antcas Control <- Client:

START\n

Tabel de traducere

De asemenea, poate fi transmis un tabel de traducere. Acest lucru crește performanța atunci când există multe puncte de date. Traducerea trebuie să aibă loc imediat după handshake. Variabilele pot fi definite și dublu. De exemplu, temperatura de tip INT și REAL. Punctele de date sunt tratate complet separat.

Antcas Control <- Client:

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

Aici, Licht/1. OG/EIN este tradus în x:1 pentru comunicare. Serverul trimite doar x:1 în locul numelui.

Watchdog / Keep Alive

Pentru a menține conexiunea deschisă, se utilizează un watchdog ciclic. Acesta supraveghează atât clientul, cât și serverul. Timeout-ul apare după aproximativ 6 secunde fără răspuns. Clientul poate închide conexiunea după 10 secunde fără răspuns de la server. Acesta este utilizat doar dacă nu se transmit date.

Antcas Control -> Client:

KA\n

Antcas Control <- Client:

RE\n

Transmitere Valoare

Toate datele sunt transmise ca șiruri de caractere. Tipul de date este definit ca prefix al valorii. Un punct de date poate apărea doar o dată, chiar dacă are mai multe tipuri de date. Punctul de date poate conține și un cale. De exemplu:

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

sau cu tabel de traducere:

x:1:TRUE\n

După ce șirul de caractere a fost transmis, trebuie să se efectueze o confirmare, doar atunci va fi transmis următorul valoare:

OK\n

Bool

Antcas Control <-> Client:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Client:

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

Atenție: Alte valori trebuie transmise ca șiruri de caractere.

Int

Antcas Control <-> Client:

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

Real/Float

Antcas Control <-> Client:

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

Date

Antcas Control <-> Client:

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

Time

Antcas Control <-> Client:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Client:

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

String

Antcas Control <-> Client:

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

Atenție: Trimiterea unui linefeed (\n) nu este permisă.

Timeswitch

Acest tip de date comunică întotdeauna înainte de schimbul de date și trimite toate evenimentele viitoare ale unei ceasuri cu comutator. O implementare la nivelul PLC în Antcas Control nu este posibilă. Cu toate acestea, un calendar poate fi manipulat în PLC.

Cerere Număr Evenimente

Înainte de comandă de start, se cere numărul de evenimente dorite. Intervalul valorilor este între 0..255. De asemenea, se returnează timpul curent în UTC. Acesta servește în prezent doar analizei erorilor. Cu toate acestea, valoarea este necesară.

Antcas Control <- Client (înainte de START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Transmitere Stări de Comutare

Prima oră definește momentul pentru pornire și a doua pentru oprire. Pot apărea și suprapuneri. Pentru a nu încărca prea mult memoria, se utilizează o memorie circulară. Acest lucru înseamnă că o valoare este înlocuită și nu toate valorile sunt deplasate. Prin urmare, toate valorile trebuie luate în considerare. După primire, se trimite o confirmare către server. Valoarea poate fi identică cu cea de mai sus pentru a simplifica programul.

Antcas Control -> Client:

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

Nicio Oră de Comutare

Pentru a evita declanșarea unui eveniment în cazul unei comunicări întrerupte, toate intrările neactive sunt dezactivate. Acest lucru se întâmplă dacă starea de pornire și oprire este identică. Astfel, timpul minim de comutare este de o secundă.

Antcas Control -> Client:

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