โปรโทคอล

โปรโทคอล Antcas TCP ถูกเอกสารไว้อย่างเปิดเผยทั้งหมด การสื่อสารเกิดขึ้นผ่าน TCP.

การสื่อสาร

การสื่อสารเกิดขึ้นผ่าน TCP ด้วยการเชื่อมต่อเปิดจาก Antcas Control เซิร์ฟเวอร์สามารถเชื่อมต่อกับไคลเอนต์เพียงหนึ่งตัวต่ออินเตอร์เฟซได้ ในพอร์ตสามารถเลือกได้อย่างเสรี พอร์ตที่ใช้โดยปกติคือ 5'252 ขนาดแพ็กเก็ตสูงสุดถูกจำกัดไว้ที่ 3'000 ไบต์ สามารถส่งแพ็กเก็ตหลายๆ แพ็กเก็ตต่อกันได้ อินเตอร์เฟซมีการตั้งเวลาหมดอายุ ถ้าหากไม่ได้รับการตอบกลับภายในระยะเวลาหนึ่งกระบวนการจะเริ่มต้นใหม่

หมายเหตุ: ตัวอักษรเช่นตัวสะกดพิเศษและเครื่องหมายพิเศษถูกกำหนดในรูปแบบ 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

การเริ่มต้นใช้งาน

การเริ่มต้นใช้งานเกิดขึ้นหลังจาก 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 ที่ซ้ำไปซ้ำมาได้ถูกใช้ เพื่อตรวจสอบไคลเอนต์และเซิร์ฟเวอร์ การหมดอายุเกิดขึ้นหลังจากประมาณ 6 วินาทีที่ไม่มีการตอบกลับ ไคลเอนต์สามารถตัดเชื่อมต่อหลังจาก 10 วินาทีที่ไม่ได้รับการตอบกลับจากเซิร์ฟเวอร์ การใช้งานนี้จะเกิดขึ้นเฉพาะเมื่อไม่มีข้อมูลที่ถูกส่ง

Antcas Control -> Client:

KA\n

Antcas Control <- Client:

RE\n

การส่งค่า

ทุกข้อมูลถูกส่งในรูปแบบสตริง ชนิดของข้อมูลจะถูกกำหนดเป็นส่วนหน้าของค่าข้อมูลหนึ่งๆ ไม่สามารถมีอยู่มากกว่าหนึ่งครั้งแม้ว่าจะมีหลายชนิดของข้อมูลได้ ข้อมูลสามารถมีเส้นทางได้ เช่น:

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 ได้

การค้นหาจำนวนเหตุการณ์

ก่อนคำสั่งเริ่มต้น จำนวนเหตุการณ์ที่ต้องการจะถูกค้นหา ค่าที่ใช้ได้อยู่ระหว่าง 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