協議

Antcas TCP 協議完全公開文件化。通訊透過 TCP 進行。

通訊

通訊透過 TCP 進行,並保持 Antcas Control 的開放連接。每個介面最多只能與一個客戶端建立連接。埠號可以自由選擇。預設埠號為 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

看門狗 / 保持活動

為了保持連接開放,使用一個循環的看門狗。它監視客戶端和伺服器。在沒有回應的情況下,超時約 6 秒後發生。如果伺服器沒有回應,客戶端可以在 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[最多 64 個字符]\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