Antcas TCP 프로토콜은 완전히 공개적으로 문서화되어 있습니다. 통신은 TCP를 통해 이루어집니다.
통신은 Antcas Control에서 열린 연결을 통해 TCP를 사용하여 이루어집니다. 서버는 인터페이스당 한 번에 하나의 클라이언트만 연결할 수 있습니다. 포트는 자유롭게 선택할 수 있습니다. 기본값은 포트 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 -> Client:
ANTCAS_TCP\n
Antcas Control <- Client:
OK[:MAX_BUFFER_SIZE=3000]\n
핸드셰이크 후 초기화가 이루어집니다. 클라이언트는 Antcas Control에게 모든 데이터 포인트의 값을 전송합니다. 값 전송 참조. 전송이 완료되면 시작 명령이 발행됩니다. 그 후 Antcas Control은 자신의 값을 전송합니다. 이 값들은 초기화 후 필터링됩니다. 즉, 존재하지 않는 데이터 포인트는 전송되지 않습니다.
Antcas Control <- Client:
START\n
또한 번역 테이블을 전송할 수 있습니다. 이는 많은 데이터 포인트에서 성능을 향상시킵니다. 번역은 핸드셰이크 직후에 직접 이루어져야 합니다. 변수는 중복으로 정의될 수도 있습니다. 예를 들어, INT 및 REAL 유형의 온도. 데이터 포인트는 완전히 별도로 처리됩니다.
Antcas Control <- Client:
TL:x:1:Licht/1. OG/EIN\n
여기서 Licht/1. OG/EIN은 통신용으로 x:1로 번역됩니다. 서버는 이름 대신 x:1만 전송합니다.
연결을 유지하기 위해 주기적인 Watchdog이 사용됩니다. 이 Watchdog은 클라이언트 및 서버를 모니터링합니다. 타임아웃은 약 6초 동안 응답이 없으면 발생합니다. 클라이언트는 10초 동안 서버의 응답이 없으면 연결을 끊을 수 있습니다. 이는 데이터가 전송되지 않을 때만 사용됩니다.
Antcas Control -> Client:
KA\n
Antcas Control <- Client:
RE\n
모든 데이터는 문자열로 전송됩니다. 데이터 유형은 값의 접두사로 정의됩니다. 데이터 포인트는 여러 데이터 유형을 가질 수 있지만 한 번만 발생할 수 있습니다. 데이터 포인트에 경로가 포함될 수도 있습니다. 예를 들어:
x:Licht/1. OG/EIN:TRUE\n
또는 번역 테이블을 사용한 경우:
x:1:TRUE\n
문자열이 전송된 후 확인 응답이 이루어져야 합니다. 그 다음에 다음 값이 전송됩니다:
OK\n
Antcas Control <-> Client:
x:Datenpunkt:FALSE/TRUE\n
Antcas Control <-> Client:
ui:Datenpunkt:[0..65536]\n
참고: 다른 값은 문자열로 전송되어야 합니다.
Antcas Control <-> Client:
i:Datenpunkt:[-32768..32767]\n
Antcas Control <-> Client:
r:Datenpunkt:[3.402823E-38..1.175 495E+38]\n
Antcas Control <-> Client:
d:Datenpunkt:D#YYYY-MM-DD\n
Antcas Control <-> Client:
t:Datenpunkt:T#5d4h3m2s1ms\n
Antcas Control <-> Client:
dt:Datenpunkt:DT#YYYY-MM-DD[-HH:II:SS]\n
Antcas Control <-> Client:
s:Datenpunkt:String[최대 64자]\n
주의: Linefeed (\n) 전송은 허용되지 않습니다.
이 데이터 유형은 항상 데이터 교환 전에 통신하며, 타이머 스위치의 모든 향후 이벤트를 보냅니다. Antcas Control에서 SPS 수준에서의 구현은 불가능합니다. 그러나 SPS에서 캘린더를 조작할 수 있습니다.
시작 명령 전에 원하는 이벤트의 수가 요청됩니다. 값 범위는 0..255입니다. 또한 현재 UTC 시간도 반환됩니다. 이는 현재 오류 분석에만 사용되며, 값은 필수적입니다.
Antcas Control <- Client (START 전):
ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n
첫 번째 시간은 켜짐을 위한 시점을 정의하고 두 번째는 꺼짐을 위한 시점을 정의합니다. 중복이 발생할 수도 있습니다. 메모리를 너무 많이 사용하지 않기 위해 링 버퍼가 사용됩니다. 이는 값이 대체되고 모든 값이 이동하지 않는다는 것을 의미합니다. 따라서 모든 값을 고려해야 합니다. 수신 후 서버에 확인 응답을 보냅니다. 값은 위와 동일한 것으로도 간소화할 수 있습니다.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#YYYY-MM-DD-HH:II:SS;DT#YYYY-MM-DD-HH:II:SS\n
통신이 중단된 경우 이벤트가 발생하지 않도록 모든 비활성 항목을 비활성화합니다. 이는 켜짐과 꺼짐 상태가 동일한 경우입니다. 최소 스위치 시간은 1초입니다.
Antcas Control -> Client:
ts:Datenpunkt:USINT;DT#1970-01-01-00:00:00;DT#1970-01-01-00:00:00\n