Protocolo

O protocolo Antcas TCP está completamente documentado de forma aberta. A comunicação ocorre via TCP.

Comunicação

A comunicação ocorre via TCP com uma conexão aberta do Antcas Control. O servidor pode estar conectado a apenas um cliente por interface. A porta pode ser escolhida livremente. O padrão é a porta 5'252. O tamanho máximo de pacote está limitado a 3'000 bytes. Vários pacotes podem ser transmitidos em sequência. A interface possui um tempo limite. Se nenhuma resposta for dada após um certo tempo, o processo recomeça.

Aviso: Caracteres como Umlaute e caracteres especiais são definidos no formato ISO-8859-1.

Todas as variáveis utilizadas são sensíveis a maiúsculas e minúsculas, o que significa que há distinção entre letras maiúsculas e minúsculas. Aqui está um exemplo de como uma transmissão simples pode ser estruturada:

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

Assim que uma conexão é estabelecida, o Antcas Control envia um handshake para o cliente. Este pode opcionalmente conter o tamanho máximo do buffer em bytes, para que o Antcas Control limite cada telegrama ao enviar até que uma confirmação seja retornada. O tamanho de MAX_BUFFER_SIZE não deve ser escolhido muito pequeno para manter a velocidade da interface alta.

Antcas Control -> Cliente:

ANTCAS_TCP\n

Antcas Control <- Cliente:

OK[:MAX_BUFFER_SIZE=3000]\n

Inicialização

A inicialização ocorre após o handshake. Todos os valores dos pontos de dados são enviados do cliente para o Antcas Control. Veja Transferência de Valor. Quando a transmissão estiver concluída, um comando de início será acionado. Em seguida, o Antcas Control envia seus valores. Esses são filtrados após a inicialização. Portanto, nenhum ponto de dados que não exista será transmitido.

Antcas Control <- Cliente:

START\n

Tabela de Tradução

Além disso, uma tabela de tradução pode ser transferida. Isso aumenta o desempenho com muitos pontos de dados. A tradução deve ocorrer diretamente após o handshake. Variáveis podem ser definidas duplamente. Por exemplo, temperatura do tipo INT e REAL. Os pontos de dados são tratados completamente separadamente.

Antcas Control <- Cliente:

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

Aqui, Licht/1. OG/EIN é traduzido para x:1 para a comunicação. O servidor envia apenas x:1 em vez do nome.

Watchdog / Keep Alive

Para manter a conexão aberta, um watchdog cíclico é utilizado. Este monitora o cliente e o servidor. O tempo limite ocorre após aproximadamente 6s sem resposta. O cliente pode desconectar a conexão após 10 segundos sem resposta do servidor. Este é usado apenas quando nenhum dado está sendo transmitido.

Antcas Control -> Cliente:

KA\n

Antcas Control <- Cliente:

RE\n

Transferência de Valor

Todos os dados são transmitidos como string. O tipo de dado é definido como prefixo do valor. Um ponto de dados só pode ocorrer uma vez, mesmo que tenha vários tipos de dados. O ponto de dados também pode conter um caminho. Por exemplo:

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

ou com tabela de tradução:

x:1:TRUE\n

Após a transmissão da string, uma confirmação deve ocorrer; apenas então o próximo valor será transmitido:

OK\n

Bool

Antcas Control <-> Cliente:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Cliente:

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

Aviso: Outros valores devem ser transmitidos como string.

Int

Antcas Control <-> Cliente:

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

Real/Float

Antcas Control <-> Cliente:

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

Date

Antcas Control <-> Cliente:

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

Time

Antcas Control <-> Cliente:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Cliente:

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

String

Antcas Control <-> Cliente:

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

Atenção: O envio de um feed de linha (\n) não é permitido.

Timeswitch

Este tipo de dado comunica-se sempre apenas antes da troca de dados e envia todos os eventos futuros de um relógio programável. Uma implementação no nível do SPS no Antcas Control não é possível. No entanto, um calendário pode ser manipulado no SPS.

Solicitar Número de Eventos

Antes do comando de início, o número de eventos desejados é solicitado. A faixa de valores está entre 0..255. Além disso, a hora atual em UTC é retornada. Esta serve atualmente apenas para análise de erros. No entanto, o valor é obrigatório.

Antcas Control <- Cliente (antes do START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Transmissão dos Estados de Comutação

A primeira hora define o momento para ligar e a segunda para desligar. Pode haver sobreposições. Para não sobrecarregar muito a memória, é utilizado um buffer circular. Isso significa que um valor é substituído e todos os valores não avançam. Portanto, todos os valores devem ser considerados. Após a recepção, uma confirmação é enviada de volta ao servidor. O valor também pode ser idêntico ao anterior para simplificar o programa.

Antcas Control -> Cliente:

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

Sem Tempo de Comutação

Para que nenhum evento seja acionado durante uma comunicação interrompida, todas as entradas não ativas são desativadas. Isso ocorre quando o estado de liga e desliga é idêntico. O tempo mínimo de comutação é, portanto, de uma segunda.

Antcas Control -> Cliente:

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