البروتوكول

البروتوكول Antcas TCP مستند بالكامل ومفتوح. تحدث التواصل عبر TCP.

التواصل

تحدث التواصل عبر TCP مع اتصال مفتوح من Antcas Control. يمكن للخادم أن يكون متصلًا دائمًا مع عميل واحد فقط لكل واجهة. يمكن اختيار الميناء بحرية. الميناء الافتراضي هو الميناء 5'252. حجم الحزمة الأقصى محدود بـ 3'000 بايت. يمكن نقل عدة حزم متتالية. تحتوي الواجهة على Timeout. إذا لم يتم تقديم إجابة بعد فترة معينة، يبدأ العملية من البداية.

ملاحظة: الأحرف مثل الحروف المتحركة والأحرف الخاصة محددة في تنسيق 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

Handshake

بعد إنشاء اتصال، يرسل Antcas Control Handshake إلى العميل. يمكن أن يحتوي هذا الإرسال اختياريًا على حجم الحافظة الأقصى بالبايت، حتى يقيد Antcas Control كل Telegram عند الإرسال حتى يتم تقديم تأكيد. يجب عدم اختيار حجم 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 / Keep Alive

لحفظ الاتصال مفتوحًا، يتم استخدام Watchdog دوريًا. هذا يراقب العميل والخادم. يحدث Timeout بعد حوالي 6s بدون إجابة. يمكن للعميل فصل الاتصال بعد 10 ثوانٍ بدون إجابة من الخادم. يتم استخدامه فقط إذا لم يتم نقل أي بيانات.

Antcas Control -> Client:

KA\n

Antcas Control <- Client:

RE\n

نقل القيمة

جميع البيانات تُنقل كسلسلة. يتم تعريف نوع البيانات كprefix للقيمة. يجب أن يحدث نقطة بيانات مرة واحدة فقط، حتى لو كان لديها عدة أنواع من البيانات. يمكن أن يحتوي نقطة البيانات أيضًا على مسار. على سبيل المثال:

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

أو مع جدول الترجمة:

x:1:TRUE\n

بعد نقل السلسلة، يجب تقديم تأكيد، ثم يتم نقل القيمة التالية:

OK\n

Bool

Antcas Control <-> Client:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Client:

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

ملاحظة: يجب نقل القيم الأخرى كسلسلة.

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

تحذير: إرسال خط جديد (\n) غير مسموح به.

Timeswitch

هذا نوع البيانات يتواصل دائمًا قبل تبادل البيانات ويرسل جميع الأحداث القادمة لمؤقت زمني. لا يمكن تنفيذ هذا على مستوى 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