データ型

PLC内の各変数には自動的に適切なデータ型が割り当てられます。変換はインターフェースでのみ設定する必要があります。この章では、Antcas Controlの各種データ型について説明します。

ブール値 BOOL

このタイプには2つの状態しかありません。真または偽です。アプリケーションでは、変数の代わりにTRUE(真)またはFALSE(偽)で値を定義できます。

さらに、特殊型のNULLが使用されます。この状態は変数の初期化時、つまり未記述の場合に設定されます。また、NULLを使用して特殊な機能を実行できます。例えば、インターフェースに値が通信されてはならない場合などです。

整数 INT(Integer)

整数は、026などの整数です。また、値は負にもできます。Antcas Controlでは64ビットPLCを使用しており、非常に大きな数の計算が可能です。最大の数は定数INT_MAX(9223372036854775807)で定義されます。最小の数はINT_MINまたはINT_MAX+1です。これは符号ビットが1ビット使用するためです。範囲外の数は、指数を伴うFloatで適用されます。この場合、計算は不正確になります。

整数には-0という値が設定できます。これはFALSEとは等しくありません。ただし、関数EQ(-0,0)で検証するとTRUEになります。-0は文字列'-0'としてのみ定義できます。

また、Hex値を直接定義することも可能です。これは0xまたは0Xで始まります。例えば、0xFF255になります。

浮動小数点数 REAL(Float)

FloatまたはReal値は、0.122.005(ピリオド付き)などの浮動小数点数です。指数もサポートされています。例えば、10E21'000を表し、10e-20.1を表します。大文字と小文字の区別はありません。数値を整数に変換しようとするため、PLCの計算が簡単になります。大きな数では計算が不正確になることがあります。小数点以下の桁数はパフォーマンス向上のため固定で14桁に制限されています。

浮動小数点数には有限な精度があります。システムによって異なりますが、Antcas Controlでは通常を使用しており、最大の相対丸め誤差は1.11e-16のオーダーです。非基本的な算術演算はより大きなエラーを引き起こす可能性があります。また、複数の演算を組み合わせる場合、エラープロパゲーションを考慮する必要があります。

さらに、10進数ベースの浮動小数点数として正確に表現できる有理数があります。例えば0.10.7などです。しかし、これらは2進数ベースの浮動小数点数として正確に表現できません。これは内部的にマントッサの大きさに依存せず使用されます。したがって、それらを内部的な二進表示に変換するにはわずかな精度の損失が伴います。これにより混乱する結果が生じることがあります:FLOOR((0.1+0.7)*10)は通常7になり、期待される結果である8ではなくなります。これは内部的な表現が7.9999999999999991118のようなものになるためです。

したがって、浮動小数点数に最後の桁まで依存することは決してなく、浮動小数点数を直接等価性で検証することはありません。

文字列 STRING

文字列またはStringは、シングルクォート' 'またはダブルクォート" "で定義されます。例えば、'Text 1'"Test!"などです。関数ブロックCONCATを使用して複数の文字列を結合できます。

改行または新しい行はCTRL+Enterで作成できます。これは矢印↵で表示されます。

文字列内に'または"を指定するためのエスケープ文字は必要ありません。文字列は直接"ダブルクォート「」が含まれています"と指定できます。

特殊文字を直接宣言することも可能です。そのために、文字列内で二重の引用符で次のシーケンスを指定します:

エスケープシーケンス ASCII略称
\\ Escaped \
\n LF
\r CR
\r\n CRLF
\0 NUL
\t TAB
\e ESC
\f FORMFEED
\x## 任意のバイト

例えば、任意のバイト126または7EをHex数値として宣言するには、次の式を使用します:"\x7E"。この文字列は"~"に相当します。

ここで、7Eはプレースホルダー値です。Hex値00からFFの範囲内のすべての値を指定できます。ただし、UTF-8 BOM"\xEF\xBB\xBF"はほとんどのブラウザによって自動的に削除されます。文字列をマスクすることが可能です。そのために先行するバックスラッシュを使用します:"\\x7E"これは'\x7E'に相当します。

注意: UTF-8範囲外のすべての文字列は非永続的に保存できません。ライブビューではこれらは暗い紫色で表示されます。

文字列を数値に変換する記事も参照してください。

日付と時刻 DT(Date and Time)

DT#で日付と時刻を定義します。例えば、DT#2016-03-25-22:12:00時刻は、1970年1月1日(この値はUTC/GMTタイムゾーン)からのミリ秒単位の整数に変換されます。

日付 D(Date)

D#で日付を定義します。例えば、D#2016-03-25。時刻は、1970年1月1日(この値はUTC/GMTタイムゾーン)からのミリ秒単位の整数に変換されます。

時間 T(Time)

T#で時間を定義します。例えば、T#5d3h5m11s500ms。時刻はミリ秒単位の整数に変換されます。

配列

配列を直接定義することはできません。ただし、変数への割り当てを行うことができます。詳細は変数を参照してください。

非常に重要: 配列内で値を定義しないでください。例えばsetとset.p - PLCはここでクラッシュします。したがって、実行されません。また、予期せぬエラーの原因にもなります。