Το πρωτόκολλο Antcas TCP είναι πλήρως ανοιχτά τεκμηριωμένο. Η επικοινωνία πραγματοποιείται μέσω TCP.
Η επικοινωνία πραγματοποιείται μέσω TCP με μια ανοιχτή σύνδεση από το Antcas Control. Ο διακομιστής μπορεί να συνδέεται μόνο με έναν πελάτη ανά διεπαφή. Η θύρα μπορεί να επιλεγεί ελεύθερα. Πρότυπο είναι η θύρα 5'252. Το μέγιστο μέγεθος πακέτου περιορίζεται σε 3'000 bytes. Μπορούν να μεταδοθούν πολλά πακέτα το ένα μετά το άλλο. Η διεπαφή έχει timeout. Αν δεν δοθεί απάντηση για κάποιο χρονικό διάστημα, ξεκινά ξανά η διαδικασία.
Σημείωση: Χαρακτήρες όπως τα Umlaute και ειδικοί χαρακτήρες ορίζονται στο ISO-8859-1-Format.
Όλες οι μεταβλητές που χρησιμοποιούνται είναι case sensitive, δηλαδή διακρίνεται μεταξύ κεφαλαίων και πεζών γραμμάτων. Εδώ ένα παράδειγμα πώς μπορεί να κατασκευαστεί μια απλή μετάδοση:
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
Αφού δημιουργηθεί μια σύνδεση, το Antcas Control στέλνει ένα handshake στον πελάτη. Αυτό μπορεί να περιέχει προαιρετικά το μέγιστο μέγεθος buffer σε bytes, ώστε το Antcas Control να περιορίζει κάθε τηλεγράφημα κατά την αποστολή μέχρι να επιστραφεί μια επιβεβαίωση. Το μέγεθος του MAX_BUFFER_SIZE δεν πρέπει να είναι πολύ μικρό, για να διατηρηθεί η ταχύτητα της διεπαφής.
Antcas Control -> Client:
ANTCAS_TCP\n
Antcas Control <- Client:
OK[:MAX_BUFFER_SIZE=3000]\n
Η αρχικοποίηση πραγματοποιείται μετά το handshake. Όλες οι τιμές των σημείων δεδομένων αποστέλλονται από τον πελάτη στο Antcas Control. Βλέπε Μετάδοση Τιμής. Όταν ολοκληρωθεί η μετάδοση, εκπυρσώνονται εντολές έναρξης. Στη συνέχεια, το Antcas Control στέλνει τις τιμές του. Αυτές φιλτράρονται μετά την αρχικοποίηση. Δεν μεταδίδεται δηλαδή σημείο δεδομένων που δεν υπάρχει.
Antcas Control <- Client:
START\n
Επιπλέον, μπορεί να μεταδοθεί ένας πίνακας μεταφράσεων. Αυτό βελτιώνει την απόδοση με πολλά σημεία δεδομένων. Η μετάφραση πρέπει να γίνει αμέσως μετά το handshake. Οι μεταβλητές μπορούν επίσης να ορίζονται διπλά. Για παράδειγμα, θερμοκρασία τύπου INT και REAL. Τα σημεία δεδομένων αντιμετωπίζονται πλήρως ξεχωριστά.
Antcas Control <- Client:
TL:x:1:Licht/1. OG/EIN\n
Εδώ, το Licht/1. OG/EIN μεταφράζεται σε x:1 για την επικοινωνία. Ο διακομιστής στέλνει αντί του ονόματος μόνο το x:1.
Για να παραμείνει η σύνδεση ανοιχτή, χρησιμοποιείται ένας κυκλικός watchdog. Αυτός επιβλέπει τον πελάτη και τον διακομιστή. Το timeout εμφανίζεται μετά από περίπου 6 δευτερόλεπτα χωρίς απάντηση. Ο πελάτης μπορεί να διακόψει τη σύνδεση μετά από 10 δευτερόλεπτα χωρίς απάντηση από τον διακομιστή. Αυτό χρησιμοποιείται μόνο όταν δεν μεταδίδονται δεδομένα.
Antcas Control -> Client:
KA\n
Antcas Control <- Client:
RE\n
Όλα τα δεδομένα μεταδίδονται ως string. Ο τύπος δεδομένων ορίζεται ως πρόθεμα της τιμής. Ένα σημείο δεδομένων μπορεί να εμφανιστεί μόνο μία φορά, ακόμη και αν έχει πολλούς τύπους δεδομένων. Το σημείο δεδομένων μπορεί επίσης να περιέχει μια διαδρομή. Για παράδειγμα:
x:Licht/1. OG/EIN:TRUE\n
ή με πίνακα μεταφράσεων:
x:1:TRUE\n
Μετά την μετάδοση του string, πρέπει να γίνει επιβεβαίωση, μόνο τότε θα μεταδοθεί η επόμενη τιμή:
OK\n
Antcas Control <-> Client:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Client:
ui:Datenpunkt:[0..65536]\n
Σημείωση: Άλλες τιμές πρέπει να μεταδοθούν ως string.
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
Προσοχή: Η αποστολή ενός linefeed (\n) δεν επιτρέπεται.
Αυτός ο τύπος δεδομένων επικοινωνεί πάντα πριν από την ανταλλαγή δεδομένων και στέλνει όλα τα επόμενα γεγονότα ενός χρονόμετρου. Μια υλοποίηση στο επίπεδο SPS στο Antcas Control δεν είναι δυνατή. Ωστόσο, μπορεί να τροποποιηθεί ένας ημερολόγιος στην SPS.
Πριν από την εντολή έναρξης, ζητείται ο αριθμός των επιθυμητών γεγονότων. Η περιοχή τιμών κυμαίνεται μεταξύ 0..255. Επιπλέον, επιστρέφεται η τωρινή ώρα σε UTC. Αυτή χρησιμοποιείται για την ανίχνευση σφαλμάτων. Η τιμή είναι ωστόσο απαραίτητη.
Antcas Control <- Client (πριν από START):
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
Η πρώτη ώρα ορίζει την στιγμή για την ενεργοποίηση και η δεύτερη για την απενεργοποίηση. Μπορεί επίσης να υπάρξουν επικαλύψεις. Για να μην φορτώνεται πολύ η μνήμη, χρησιμοποιείται μια κυκλική μνήμη. Αυτό σημαίνει ότι αντικαθίσταται μια τιμή και δεν μετακινούνται όλες οι τιμές προς τα πίσω. Ως εκ τούτου, πρέπει να λαμβάνονται υπόψη όλες οι τιμές. Μετά την λήψη, επιστρέφεται μια επιβεβαίωση στον διακομιστή. Η τιμή μπορεί επίσης να είναι ίδια με αυτήν από πάνω για να απλοποιηθεί το πρόγραμμα.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
Για να μην εκπυρσώνονται γεγονότα κατά τη διάρκεια μιας διακόπτουσας επικοινωνίας, όλες οι μη ενεργές καταχωρήσεις απενεργοποιούνται. Αυτό συμβαίνει όταν η κατάσταση ενεργοποίησης και απενεργοποίησης είναι ίδια. Η ελάχιστη διάρκεια διακοπής ρεύματος είναι επομένως ένα δευτερόλεπτο.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n