پروتکل

پروتکل Antcas TCP به طور کامل مستند و باز است. ارتباط از طریق TCP انجام می شود.

ارتباط

ارتباط از طریق TCP با یک اتصال باز از Antcas Control انجام می شود. سرور فقط می تواند در هر اینترفیس با یک کلاینت متصل شود. پورت می تواند آزادانه انتخاب شود. پورت پیش فرض ۵۲۵۲ است. اندازه بسته حداکثر به ۳۰۰۰ بایت محدود شده است. می توان چندین بسته را پشت سر هم منتقل کرد. اینترفیس دارای یک زمان انتظار است. اگر پس از مدت زمانی پاسخ داده نشود، فرایند دوباره شروع می شود.

توجه: کاراکترهای مانند املائات و کاراکترهای ویژه در فرمت ISO-8859-1 تعریف شده اند.

همه متغیرهای استفاده شده 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

Handshake

پس از ایجاد یک اتصال، Antcas Control یک Handshake به کلاینت می فرستد. این می تواند اختیاری اندازه بافر حداکثر را در بایت‌ها شامل شود، تا Antcas Control هر تلگرام را محدود کند هنگام ارسال، تا یک تاییدیه برگشت داده شود. اندازه MAX_BUFFER_SIZE نباید بسیار کوچک انتخاب شود، تا سرعت اینترفیس بالا بماند.

Antcas Control -> Client:

ANTCAS_TCP\n

Antcas Control <- Client:

OK[:MAX_BUFFER_SIZE=3000]\n

Initialisierung

Initialisierung پس از Handshake انجام می شود. همه مقادیر نقاط داده از کلاینت به Antcas Control ارسال می شوند. ببینید Wert übertragen. اگر انتقال کامل شد، یک دستور شروع فعال می شود. سپس Antcas Control مقادیر خود را ارسال می کند. این‌ها پس از Initialisierung فیلتر شده اند. بنابراین هیچ نقطه داده ای که وجود ندارد، منتقل نمی‌شود.

Antcas Control <- Client:

START\n

Übersetzungstabelle

به علاوه یک جدول ترجمه می تواند منتقل شود. این کار عملکرد را در صورت وجود بسیاری از نقاط داده افزایش می دهد. ترجمه باید مستقیم پس از 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 پس از حدود 6 ثانیه بدون پاسخ رخ می دهد. کلاینت پس از ۱۰ ثانیه بدون پاسخ از سرور می تواند اتصال را قطع کند. این فقط در صورت عدم انتقال داده استفاده می شود.

Antcas Control -> Client:

KA\n

Antcas Control <- Client:

RE\n

Wert übertragen

همه داده ها به عنوان رشته منتقل می شوند. نوع داده به عنوان پیشوند مقدار تعریف شده است. یک نقطه داده فقط یک بار باید وجود داشته باشد، حتی اگر این چندین نوع داده دارد. نقطه داده همچنین می تواند یک مسیر شامل شود. به عنوان مثال:

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

توجه: ارسال یک Linefeed (\n) مجاز نیست.

Timeswitch

این نوع داده همیشه فقط قبل از تبادل داده ها ارتباط برقرار می کند و همه رویدادهای آینده یک ساعت زمانبندی را ارسال می کند. پیاده سازی در سطح SPS در Antcas Control امکان پذیر نیست. با این حال، یک تقویم در SPS قابل تغییر است.

تعداد رویدادها را درخواست کنید

قبل از دستور شروع تعداد رویدادهای مورد نظر درخواست می شود. محدوده مقدار بین ۰..۲۵۵ است. علاوه بر این، زمان فعلی در UTC برگشت داده می شود. این فقط برای تحلیل خطا استفاده می شود. با این حال، مقدار ضروری است.

Antcas Control <- Client (vor START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Übertragung der Schaltzustände

زمان اول زمان روشن شدن را تعریف می کند و دومی برای خاموش کردن. ممکن است به تداخل بخرید. برای کاهش بار حافظه، یک حافظه حلقوی استفاده می شود. این معنی دارد که یک مقدار جایگزین شده است و همه مقادیر عقب نمی روند. بنابراین باید همه مقادیر در نظر گرفته شوند. پس از دریافت، یک تاییدیه به سرور برگشت داده می شود. مقدار نیز می تواند با بالا یکسان باشد تا برنامه را ساده تر کند.

Antcas Control -> Client:

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

Keine Schaltzeit

برای اینکه در صورت قطع ارتباط هیچ رویدادی فعال نشود، همه واردهای غیر فعال غیرفعال می شوند. این زمانی است که وضعیت روشن و خاموش یکسان هستند. زمان کمترین سوئیچینگ بنابراین یک ثانیه است.

Antcas Control -> Client:

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