协议

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

看门狗 / 保持活动

为了保持连接开放,使用循环看门狗。它监视客户端和服务器。在没有响应的情况下,超时大约在 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:数据点:FALSE/TRUE\n

无符号整数

Antcas Control <-> 客户端:

ui:数据点:[0..65536]\n

注意:其他值必须以字符串形式传输。

整数

Antcas Control <-> 客户端:

i:数据点:[-32768..32767]\n

实数/浮点数

Antcas Control <-> 客户端:

r:数据点:[3.402823E-38..1.175 495E+38]\n

日期

Antcas Control <-> 客户端:

d:数据点:D#YYYY-MM-DD\n

时间

Antcas Control <-> 客户端:

t:数据点:T#5d4h3m2s1ms\n

日期时间

Antcas Control <-> 客户端:

dt:数据点:DT#YYYY-MM-DD[-HH:II:SS]\n

字符串

Antcas Control <-> 客户端:

s:数据点:String[最多 64 个字符]\n

注意:发送换行符(\n)是不允许的。

时钟开关

此数据类型仅在数据交换之前通信,并发送所有即将到来的时间开关事件。在 Antcas Control 中无法实现 PLC 层面的实现。但是可以操作 PLC 中的日历。

请求事件数量

在启动命令之前,会请求所需事件的数量。值范围在 0..255 之间。此外,还会返回当前 UTC 时间。此时间仅用于错误分析。但是该值是必需的。

Antcas Control <- 客户端(在 START 之前):

ts:数据点:s;MAX_USINT;ACTUAL_TIME\n

传输开关状态

第一个时间定义了打开的时刻,第二个时间定义了关闭的时刻。也可以发生重叠。为了不过多占用存储器,使用环形缓冲区。这意味着一个值被替换,而不是所有值都向后移动。因此必须考虑所有值。接收后,将确认发送到服务器。该值也可以与上述相同,以简化程序设计。

Antcas Control -> 客户端:

ts:数据点:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n

无开关时间

为了在中断通信时不触发任何事件,所有非活动条目都被禁用。这是当打开和关闭状态相同时发生的情况。因此最小开关时间为一秒钟。

Antcas Control -> 客户端:

ts:数据点:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n