Протокол

Протокол 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

Handshake

Как только соединение установлено, Antcas Control отправляет клиенту Handshake. Он может содержать опционально максимальный размер буфера в байтах, чтобы Antcas Control ограничивал каждое сообщение при отправке до получения подтверждения. Размер MAX_BUFFER_SIZE не должен быть слишком маленьким, чтобы сохранить высокую скорость интерфейса.

Antcas Control -> Клиент:

ANTCAS_TCP\n

Antcas Control <- Клиент:

OK[:MAX_BUFFER_SIZE=3000]\n

Инициализация

Инициализация происходит после Handshake. Все значения точек данных передаются от клиента к Antcas Control. См. Передача значений. После завершения передачи отправляется команда Start. Затем Antcas Control отправляет свои значения. Они фильтруются после инициализации. Таким образом, не передается ни одна точка данных, которая не существует.

Antcas Control <- Клиент:

START\n

Таблица перевода

Кроме того, может быть передана таблица перевода. Это повышает производительность при большом количестве точек данных. Перевод должен происходить непосредственно после Handshake. Переменные могут быть определены дважды. Например, температура типа INT и REAL. Точки данных обрабатываются полностью отдельно.

Antcas Control <- Клиент:

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

Здесь Licht/1. OG/EIN переводится на x:1 для коммуникации. Сервер отправляет вместо имени только x:1.

Watchdog / Keep Alive

Чтобы соединение оставалось открытым, используется циклический Watchdog. Он контролирует клиент и сервер. Тайм-аут происходит примерно через 6 секунд без ответа. Клиент может разорвать соединение после 10 секунд без ответа от сервера. Он используется только если данные не передаются.

Antcas Control -> Клиент:

KA\n

Antcas Control <- Клиент:

RE\n

Передача значения

Все данные передаются как строка. Тип данных определяется как префикс значения. Точка данных может появляться только один раз, даже если она имеет несколько типов данных. Точка данных также может содержать путь. Например:

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

или с таблицей перевода:

x:1:TRUE\n

После передачи строки необходимо подтверждение, только тогда будет передан следующий значение:

OK\n

Bool

Antcas Control <-> Клиент:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Клиент:

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

Примечание: Другие значения должны быть переданы как строка.

Int

Antcas Control <-> Клиент:

i:Datenpunkt:[-32768..32767]\n

Real/Float

Antcas Control <-> Клиент:

r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n

Date

Antcas Control <-> Клиент:

d:Datenpunkt:D#YYYY-MM-DD\n

Time

Antcas Control <-> Клиент:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Клиент:

dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n

String

Antcas Control <-> Клиент:

s:Datenpunkt:String[max. 64 Zeichen]\n

Внимание: Отправка символа новой строки (\n) не разрешена.

Timeswitch

Этот тип данных всегда коммуницирует только перед обменом данными и отправляет все предстоящие события таймера. Реализация на уровне ПЛК в Antcas Control невозможна. Однако календарь может быть изменен в ПЛК.

Запрос количества событий

Перед командой Start запрашивается количество желаемых событий. Диапазон значений составляет от 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