Il protocollo Antcas TCP è completamente documentato in modo aperto. La comunicazione avviene tramite TCP.
La comunicazione avviene tramite TCP con una connessione aperta da Antcas Control. Il server può essere collegato a un solo client per interfaccia. La porta può essere scelta liberamente. La porta standard è la 5'252. La dimensione massima del pacchetto è limitata a 3'000 byte. È possibile trasmettere più pacchetti consecutivamente. L'interfaccia ha un timeout. Se non viene ricevuta una risposta dopo un certo tempo, il processo ricomincia dall'inizio.
Nota: I caratteri come le vocali accentate e i caratteri speciali sono definiti nel formato ISO-8859-1.
Tutte le variabili utilizzate sono case sensitive, il che significa che viene fatta distinzione tra maiuscole e minuscole. Ecco un esempio di come può essere strutturata una semplice trasmissione:
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
Non appena viene stabilita una connessione, Antcas Control invia un handshake al client. Questo può contenere opzionalmente la dimensione massima del buffer in byte, affinché Antcas Control limiti ogni telegramma durante l'invio fino a quando non viene ricevuta una conferma. La dimensione di MAX_BUFFER_SIZE non dovrebbe essere scelta troppo piccola per mantenere alta la velocità dell'interfaccia.
Antcas Control -> Client:
ANTCAS_TCP\n
Antcas Control <- Client:
OK[:MAX_BUFFER_SIZE=3000]\n
L'inizializzazione avviene dopo l'handshake. Vengono inviati tutti i valori dei punti dati dal client ad Antcas Control. Vedere Trasmissione del valore. Una volta completata la trasmissione, viene attivato un comando di avvio. Successivamente, Antcas Control invia i propri valori. Questi vengono filtrati dopo l'inizializzazione. Non viene quindi trasmesso alcun punto dati che non esiste.
Antcas Control <- Client:
START\n
Inoltre, può essere trasmessa una tabella di traduzione. Questo aumenta le prestazioni con molti punti dati. La traduzione deve avvenire immediatamente dopo l'handshake. Le variabili possono anche essere definite due volte. Ad esempio, temperatura del tipo INT e REAL. I punti dati vengono trattati completamente separatamente.
Antcas Control <- Client:
TL:x:1:Licht/1. OG/EIN\n
Qui Licht/1. OG/EIN viene tradotto in x:1 per la comunicazione. Il server invia solo x:1 invece del nome.
Per mantenere la connessione aperta, viene utilizzato un watchdog ciclico. Questo monitora il client e il server. Il timeout si verifica dopo circa 6 secondi senza risposta. Il client può interrompere la connessione dopo 10 secondi senza risposta dal server. Questo viene utilizzato solo se non vengono trasmessi dati.
Antcas Control -> Client:
KA\n
Antcas Control <- Client:
RE\n
Tutti i dati vengono trasmessi come stringa. Il tipo di dato viene definito come prefisso del valore. Un punto dati può apparire solo una volta, anche se ha più tipi di dati. Il punto dati può anche contenere un percorso. Ad esempio:
x:Licht/1. OG/EIN:TRUE\n
o con la tabella di traduzione:
x:1:TRUE\n
Dopo aver trasmesso la stringa, è necessaria una conferma prima che venga trasmesso il valore successivo:
OK\n
Antcas Control <-> Client:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Client:
ui:Datenpunkt:[0..65536]\n
Nota: Altri valori devono essere trasmessi come stringa.
Antcas Control <-> Client:
i:Datenpunkt:[-32768..32767]\n
Antcas Control <-> Client:
r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n
Antcas Control <-> Client:
d:Datenpunkt:D#YYYY-MM-DD\n
Antcas Control <-> Client:
t:Datenpunkt:T#5d4h3m2s1ms\n
Antcas Control <-> Client:
dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n
Antcas Control <-> Client:
s:Datenpunkt:String[max. 64 Zeichen]\n
Attenzione: L'invio di un newline (\n) non è consentito.
Questo tipo di dato comunica sempre solo prima dello scambio di dati e invia tutti gli eventi futuri di un interruttore temporizzato. Un'implementazione a livello di PLC in Antcas Control non è possibile. Tuttavia, un calendario può essere manipolato nella PLC.
Prima del comando di avvio viene richiesta la quantità desiderata di eventi. L'intervallo di valori va da 0 a 255. Inoltre, viene restituito l'ora attuale in UTC. Questo serve attualmente solo all'analisi degli errori. Tuttavia, il valore è necessario.
Antcas Control <- Client (prima di START):
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
Il primo orario definisce il momento dell'accensione e il secondo quello dello spegnimento. Possono verificarsi sovrapposizioni. Per non sovraccaricare troppo la memoria, viene utilizzato un buffer circolare. Ciò significa che un valore viene sostituito e non tutti i valori vengono spostati verso destra. Pertanto, tutti i valori devono essere considerati. Dopo la ricezione, una conferma viene inviata al server. Il valore può anche essere identico a quello sopra per semplificare il programma.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
Affinché non venga attivato un evento in caso di comunicazione interrotta, tutti gli elementi non attivi vengono disattivati. Questo è il caso quando lo stato di accensione e spegnimento sono identici. Il tempo di commutazione minimo è quindi di una seconda.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n