O protocolo Antcas TCP está completamente documentado de forma aberta. A comunicação ocorre via TCP.
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
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
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
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.
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
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
Antcas Control <-> Cliente:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Cliente:
ui:Datenpunkt:[0..65536]\n
Aviso: Outros valores devem ser transmitidos como string.
Antcas Control <-> Cliente:
i:Datenpunkt:[-32768..32767]\n
Antcas Control <-> Cliente:
r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n
Antcas Control <-> Cliente:
d:Datenpunkt:D#YYYY-MM-DD\n
Antcas Control <-> Cliente:
t:Datenpunkt:T#5d4h3m2s1ms\n
Antcas Control <-> Cliente:
dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n
Antcas Control <-> Cliente:
s:Datenpunkt:String[max. 64 Zeichen]\n
Atenção: O envio de um feed de linha (\n) não é permitido.
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.
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
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
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