プロトコル

Antcas TCP プロトコルは完全に公開されています。通信はTCPを介して行われます。

通信

通信は、Antcas Control からのオープン接続によるTCPで行われます。サーバーは1つのインターフェースごとに常に1つのクライアントのみに接続できます。ポートは自由に選択できます。デフォルトはポート 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 -> クライアント:

ANTCAS_TCP\n

Antcas Control <- クライアント:

OK[:MAX_BUFFER_SIZE=3000]\n

初期化

ハンドシェイク後に初期化が行われます。クライアントからAntcas Control にすべてのデータポイントの値が送信されます。詳細は「値の転送」を参照してください。転送が完了すると、開始コマンドがトリガーされます。その後、Antcas Control はその値を送信します。これらは初期化後にフィルタリングされます。つまり、存在しないデータポイントは転送されません。

Antcas Control <- クライアント:

START\n

翻訳テーブル

さらに、翻訳テーブルを転送できます。これにより、多くのデータポイントがある場合にパフォーマンスが向上します。翻訳はハンドシェイク直後に行われる必要があります。変数は重複して定義できます。例えば、INT型とREAL型の温度などです。データポイントは完全に別々に処理されます。

Antcas Control <- クライアント:

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

ここで、Licht/1. OG/EIN は通信のために x:1 に翻訳されます。サーバーは名前の代わりに x:1 のみを送信します。

ウォッチドッグ / キープアライブ

接続がオープン状態を維持するために、サイクリックなウォッチドッグが使用されます。これはクライアントとサーバーの両方を監視します。タイムアウトは約6秒間応答がない場合に発生します。クライアントはサーバーから 10 秒間応答がない場合、接続を切断できます。これはデータが転送されない場合のみ使用されます。

Antcas Control -> クライアント:

KA\n

Antcas Control <- クライアント:

RE\n

値の転送

すべてのデータは文字列として転送されます。データ型は値のプレフィックスとして定義されます。データポイントは複数のデータ型を持つ場合でも1回のみ現れる必要があります。データポイントにはパスを含めることもできます。例えば:

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[最大64文字]\n

注意: 改行文字(\n)の送信は許可されていません。

Timeswitch

このデータ型は常にデータ交換前に通信し、タイムスイッチのすべての今後のイベントを送信します。Antcas Control 内でのPLCレベルでの実装は不可能です。ただし、カレンダーをPLCで操作できます。

イベント数の要求

開始コマンド前に希望するイベント数が要求されます。値の範囲は 0..255 です。さらに、現在の時刻(UTC)が返されます。これは現在エラー分析にのみ使用されます。ただし、この値は必須です。

Antcas Control <- クライアント(START 前):

ts:Datenpunkt:s;MAX_USINT;ACTUAL_TIME\n

スイッチング状態の転送

最初の時刻はオンにする時間を定義し、2番目の時刻はオフにする時間を定義します。重複も発生する可能性があります。メモリを過度に負荷から守るために、リングバッファが使用されます。これは値が置き換えられ、すべての値が後ろに移動しないことを意味します。したがって、すべての値を考慮する必要があります。受信後にサーバーに確認応答が送信されます。この値は上記と同じでも構いません。プログラムを簡素化するためです。

Antcas Control -> クライアント:

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

スイッチング時間なし

通信が中断された場合にイベントが発生しないように、すべての非アクティブなエントリが無効になります。これはオンとオフの状態が同じ場合です。最小スイッチング時間は1秒になります。

Antcas Control -> クライアント:

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