Antcas TCP प्रोटोकॉल पूरी तरह से खुला दस्तावेज़ है। संचार TCP के माध्यम से होता है।
संचार एक खुले कनेक्शन के साथ Antcas Control से TCP के माध्यम से होता है। सर्वर हर इंटरफेस पर केवल एक क्लाइंट के साथ जुड़ा हो सकता है। पोर्ट को स्वतंत्र रूप से चुना जा सकता है। डिफ़ॉल्ट पोर्ट 5'252 है। अधिकतम पैकेट साइज़ 3'000 बाइट्स तक सीमित है। कई पैकेट एक के बाद दूसरे को ट्रांसमिट किए जा सकते हैं। इंटरफेस में एक टाइमआउट होता है। अगर कुछ समय के बाद कोई जवाब नहीं दिया जाता, तो प्रक्रिया फिर से शुरू हो जाती है।
नोट: अक्षरों जैसे उमलौट और विशेष चिह्न ISO-8859-1 फॉर्मेट में परिभाषित किए गए हैं।
सभी उपयोग किए जाने वाले वेरिएबल्स केस सेंसिटिव होते हैं, इसका मतलब है कि बड़े और छोटे अक्षरों के बीच अंतर किया जाता है। यहां एक उदाहरण दिया गया है कि एक सरल ट्रांसमिशन कैसे बनाया जा सकता है:
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 क्लाइंट को एक हैंडशेक भेजता है। इसमें ऑप्शनल रूप से अधिकतम बफर साइज़ बाइट्स में शामिल किया जा सकता है, ताकि Antcas Control हर टेलीग्राम को ट्रांसमिट करने के लिए सीमित कर सके, जब तक कि एक कन्फर्मेशन वापस नहीं दिया जाता। MAX_BUFFER_SIZE का साइज़ बहुत छोटा नहीं होना चाहिए, ताकि इंटरफेस की गति को बनाए रखा जा सके।
Antcas Control -> क्लाइंट:
ANTCAS_TCP\n
Antcas Control <- क्लाइंट:
OK[:MAX_BUFFER_SIZE=3000]\n
हैंडशेक के बाद इनिशियलाइजेशन होता है। क्लाइंट द्वारा Antcas Control को सभी डेटा पॉइंट्स के मान भेजे जाते हैं। देखें मान ट्रांसमिट करना। अगर ट्रांसमिशन पूरा हो जाता है, तो एक स्टार्ट कमांड ट्रिगर किया जाता है। उसके बाद Antcas Control अपने मान भेजता है। इनिशियलाइजेशन के बाद ये फिल्टर किए जाते हैं। इसलिए कोई डेटा पॉइंट नहीं ट्रांसमिट की जाती जो मौजूद नहीं हो।
Antcas Control <- क्लाइंट:
START\n
इसके अलावा एक ट्रांसलेशन टेबल ट्रांसमिट किया जा सकता है। यह कई डेटा पॉइंट्स के साथ प्रदर्शन को बढ़ाता है। ट्रांसलेशन को हैंडशेक के तुरंत बाद करना चाहिए। वेरिएबल्स को दोहराया भी जा सकता है। उदाहरण के लिए, टेम्प्रेचर INT और REAL प्रकार का हो सकता है। डेटा पॉइंट्स पूरी तरह से अलग-अलग हैं।
Antcas Control <- क्लाइंट:
TL:x:1:Licht/1. OG/EIN\n
यहां Licht/1. OG/EIN को संचार के लिए x:1 में ट्रांसलेट किया जाता है। सर्वर नाम के बजाय केवल x:1 भेजता है।
कनेक्शन को खुले रखने के लिए एक साइकलिक वॉचडॉग का उपयोग किया जाता है। यह क्लाइंट और सर्वर दोनों को मॉनिटर करता है। टाइमआउट लगभग 6s बिना जवाब के होता है। क्लाइंट को 10 सेकंड्स बिना सर्वर के जवाब के कनेक्शन तोड़ने की अनुमति है। यह केवल तब लागू किया जाता है जब कोई डेटा ट्रांसमिट नहीं किया जा रहा हो।
Antcas Control -> क्लाइंट:
KA\n
Antcas Control <- क्लाइंट:
RE\n
सभी डेटा को स्ट्रिंग के रूप में ट्रांसमिट किया जाता है। डेटा टाइप मान की प्रीफिक्स के रूप में परिभाषित किया जाता है। एक डेटा पॉइंट केवल एक बार आ सकता है, भले ही इसमें कई डेटा टाइप हों। डेटा पॉइंट में एक पाथ भी शामिल हो सकता है। उदाहरण के लिए:
x:Licht/1. OG/EIN:TRUE\n
या ट्रांसलेशन टेबल के साथ:
x:1:TRUE\n
स्ट्रिंग ट्रांसमिट होने के बाद, एक कन्फर्मेशन होना चाहिए, केवल तब अगला मान ट्रांसमिट किया जाएगा:
OK\n
Antcas Control <-> क्लाइंट:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> क्लाइंट:
ui:Datenpunkt:[0..65536]\n
नोट: अन्य मानों को स्ट्रिंग के रूप में ट्रांसमिट करना होगा।
Antcas Control <-> क्लाइंट:
i:Datenpunkt:[-32768..32767]\n
Antcas Control <-> क्लाइंट:
r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n
Antcas Control <-> क्लाइंट:
d:Datenpunkt:D#YYYY-MM-DD\n
Antcas Control <-> क्लाइंट:
t:Datenpunkt:T#5d4h3m2s1ms\n
Antcas Control <-> क्लाइंट:
dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n
Antcas Control <-> क्लाइंट:
s:Datenpunkt:String[max. 64 Zeichen]\n
सावधान: एक लाइनफीड (\n) भेजना अनुमति नहीं है।
इस डेटा टाइप का संचार हमेशा डेटा एक्सचेंज से पहले होता है और एक टाइम स्विच के सभी आने वाले इवेंट्स भेजता है। Antcas Control में SPS लेवल पर इसका कार्यान्वयन संभव नहीं है। हालांकि, एक कैलेंडर को SPS में मैनिपुलेट किया जा सकता है।
स्टार्ट कमांड से पहले इच्छित इवेंट्स की संख्या अनुरोध की जाती है। वैल्यू रेंज 0..255 के बीच होती है। इसके अलावा, वर्तमान समय UTC में वापस दिया जाता है। यह वर्तमान में केवल एरर एनालिसिस के लिए उपयोग किया जाता है। हालांकि, वैल्यू आवश्यक है।
Antcas Control <- क्लाइंट (START से पहले):
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
पहला समय ऑन करने के लिए टाइमिंग को परिभाषित करता है और दूसरा ऑफ करने के लिए। ओवरलैप हो सकते हैं। मेमोरी को बहुत अधिक लोड नहीं करने के लिए, एक रिंग बफर का उपयोग किया जाता है। इसका मतलब है कि एक वैल्यू बदल दी जाती है और सभी वैल्यूज शिफ्ट नहीं होते। इसलिए सभी वैल्यूज को ध्यान में रखना होगा। प्राप्ति के बाद सर्वर को एक कन्फर्मेशन वापस भेजा जाता है। वैल्यू ऊपर दिए गए वैल्यू के साथ भी समान हो सकता है, ताकि प्रोग्राम को सरल बनाया जा सके।
Antcas Control -> क्लाइंट:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
एक इंटरप्टेड संचार के दौरान कोई इवेंट ट्रिगर नहीं होने के लिए, सभी निष्क्रिय एंट्रीज को डिसएक्टिवेट किया जाता है। यह तब होता है जब ऑन और ऑफ स्टेट्स समान होते हैं। इस प्रकार न्यूनतम स्विच टाइम एक सेकंड पर होता है।
Antcas Control -> क्लाइंट:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n