Protokoll

Protokolli Antcas TCP është i dokumentuar plotësisht. Komunikimi bëhet përmes TCP.

Komunikim

Komunikimi bëhet përmes TCP me një lidhje të hapur nga Antcas Control. Serveri mund të lidhet vetëm me një klient në çdo interface. Porti mund të zgjedhet lirshëm. Porti standard është porti 5'252. Madhësia maksimale e paketës është e kufizuar në 3'000 bytes. Mund të transmetohen shumë paketa një pas tjetrës. Interface-ja ka një timeout. Nëse nuk dërgohet përgjigje pas një kohe të caktuar, procesi fillon nga fillimi.

Shënim: Simbole si Umlaute dhe karaktere speciale janë të definuara në formatin ISO-8859-1.

Të gjitha variablat e përdorura janë Case Sensitive, kjo do të thotë se ndahen shkronjat e mëdha nga ato të vogla. Këtu ka një shembull siç mund të jetë ndërtuar një transmetim i thjeshtë:

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

Sa herë që një lidhje është e ndërtuar, Antcas Control dërgon një handshake te klienti. Ky mund të përmbajë opcional madhësinë maksimale të buffer-it në bytes, kështu që Antcas Control të kufizojë çdo telegramë gjatë dërgimit deri sa të ketë një konfirmim. Madhësia e MAX_BUFFER_SIZE nuk duhet të zgjedhet shumë e vogël për të ruajtur shpejtësinë e interface-it.

Antcas Control -> Client:

ANTCAS_TCP\n

Antcas Control <- Client:

OK[:MAX_BUFFER_SIZE=3000]\n

Inicializim

Inicializimi bëhet pas handshake. Të gjitha vlerat e pikave të të dhënave nga klienti i dërgohen Antcas Control. Shihni Vlera e transmetuar. Kur transmetimi është i plotë, lëshohen një urdhër fillestar. Pastaj Antcas Control dërgon vlerat e tij. Këto filtrohen pas inicializimit. Prandaj nuk transmetohet asnjë pikë e të dhënave që nuk ekziston.

Antcas Control <- Client:

START\n

Tabelë e përkthimeve

Për më tepër, mund të transmetohet një tabelë e përkthimeve. Kjo rrit performancën kur ka shumë pika të të dhënave. Përkthimi duhet të bëhet direkt pas handshake. Variablat mund të përcaktohen edhe dy herë. P.sh. temperatura nga tipi INT dhe REAL. Pikat e të dhënave trajtohen plotësisht në mënyrë të veçantë.

Antcas Control <- Client:

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

Këtu Licht/1. OG/EIN përkthehet në x:1 për komunikim. Serveri dërgon në vend të emrit vetëm x:1.

Watchdog / Keep Alive

Për të mbajtur lidhjen të hapur, përdoret një watchdog ciklik. Ky monitoron klientin dhe serverin. Timeout-i ndodh pas rreth 6s pa përgjigje. Klienti mund të ndalojë lidhjen pas 10 sekondave pa përgjigje nga serveri. Ky përdoret vetëm nëse nuk transmetohen të dhëna.

Antcas Control -> Client:

KA\n

Antcas Control <- Client:

RE\n

Vlera e transmetuar

Të gjitha të dhënat transmetohen si string. Tipi i të dhënave përcaktohet si prefiks i vlerës. Një pikë e të dhënave mund të shfaqet vetëm një herë, edhe nëse ka shumë tipa të të dhënave. Pika e të dhënave mund të përmbajë edhe një rrugë. P.sh.:

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

ose me tabelën e përkthimeve:

x:1:TRUE\n

Pas transmetimit të stringut, duhet të bëhet një konfirmim, vetëm atëherë transmetohet vlera tjetër:

OK\n

Bool

Antcas Control <-> Client:

x:Datenpunkt:FALSE/TRUE\n

Uint

Antcas Control <-> Client:

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

Shënim: Vlerat tjera duhet të transmetohen si string.

Int

Antcas Control <-> Client:

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

Real/Float

Antcas Control <-> Client:

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

Date

Antcas Control <-> Client:

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

Time

Antcas Control <-> Client:

t:Datenpunkt:T#5d4h3m2s1ms\n

Datetime

Antcas Control <-> Client:

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

String

Antcas Control <-> Client:

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

Kuptim: Dërgimi i një linefeed (\n) nuk është i lejuar.

Timeswitch

Ky lloj të dhënave komunikon gjithmonë para shkëmbimit të të dhënave dhe dërgon të gjitha ngjarjet e ardhshme të një orari. Një implementim në nivel SPS në Antcas Control nuk është i mundur. Megjithatë, një kalendar në SPS mund të manipulojë.

Kërkoni numrin e ngjarjeve

Para urdhrit fillestar kërkohet numri i ngjarjeve të dëshiruara. Rrjedha e vlerave është midis 0..255. Për më tepër, kthehet koha aktuale në UTC. Kjo shërben aktualisht vetëm për analizën e gabimeve. Megjithatë, vlera është e nevojshme.

Antcas Control <- Client (para START):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

Transmetimi i gjendjeve të shkëmbimit

Koha e parë përcakton momentin për aktivimin dhe ajo e dytë për çaktivizimin. Mund të ketë edhe mbivendosje. Për të mos ngarkuar shumë memorie, përdoret një memorie ringjallëse. Kjo do të thotë se një vlerë zëvendësohet dhe jo të gjitha vlerat nuk lëvizin pas. Prandaj duhen marrë parasysh të gjitha vlerat. Pas pranimit dërgohet një konfirmim te serveri. Vlera mund të jetë identike me atë të sipërme për të bërë programin më të thjeshtë.

Antcas Control -> Client:

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

Asnjë kohë shkëmbimi

Për të siguruar që nëse komunikimi është i ndërprerë asnjë ngjarje nuk aktivizohet, të gjitha hyrjet jo aktive çaktivizohen. Kjo ndodh kur gjendja e aktivimit dhe çaktivizimit janë identike. Kështu kohe shkëmbimi minimal është një sekondë.

Antcas Control -> Client:

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