変数には次の 2 種類があります。
基本変数には次の種類があります。
データの種類 |
説明 |
| BOOL | 変数に 0 または 1 の値が格納されます。 |
| SINT、USINT、INT、UINT、DINT、UDINT、LINT、ULINT、BYTE | 変数に整数型の値が格納されます。実数型の変数よりも高速に処理ができます。 |
| 変数にワード型の値が格納されます。 | |
| 変数に文字列型の値が格納されます。 | |
| 変数に実数型の値が格納されます。実数型変数は、整数型の変数よりも大きな値 (演算、定数等) を格納することができます。 | |
| 変数に時刻、日付の値が格納されます。 |
データの種類 |
符号付き |
データ長 |
データ範囲 |
SINT |
2 の補数 |
8 bit |
-128...127 |
USINT |
- |
8 bit |
0...255 |
INT |
2 の補数 |
16 bit |
-32768...32767 |
UINT |
- |
16 bit |
0...65535 |
DINT |
2 の補数 |
32 bit |
-2147483648...2147483647 |
UDINT |
- |
32 bit |
0...4,294,967,295 |
LINT |
2 の補数 |
64 bit |
-9,223,372,036,854,775,808...9,223,372,036,854,775,807 |
ULINT |
- |
64 bit |
0...18,446,744,073,709,551,615 |
BYTE |
- |
8 bit |
0...255 |
| データの種類 | データ長 | データ範囲 |
WORD |
16 bit |
0...65,535 |
DWORD |
32 bit |
0...4,294,967,295 |
LWORD |
64 bit |
0...18,446,744,073,709,551,615 |
| データの種類 | 説明 |
STRING |
最大 512 バイト分の文字列が格納されます。 外部変数を使用する場合、文字列のエンコードは変数の [文字列エンコード] プロパティで定義されます。 使用できる文字列エンコードは、UTF8、UTF16、シフト JIS、コードページ 850、GB2312、BIG5、KSC5601、コードページ 1251、コードページ 874、コードページ 1252 です。
|
WSTRING |
最大 512 ワード分のダブルバイト文字列が格納されます。 データタイプ WSTRING は、外部変数でのみ使用できます。 文字列エンコードは、UTF16 に固定されています。変数プロパティの [文字列エンコード] で設定を変更することはできません。また、機器プロパティのエンコードは無視されます。 |
変数に格納するバイト数またはワード数は、[バイト数 / ワード数] で設定します。
テキスト文字列の終端は、NULL (0x00) または [バイト数] で認識されます。
特定の変数またはドライバーについては、文字コードが [文字列エンコード] で変換できないテキストを使用すると、文字列の末尾が文字コードで認識されます。
ワードデータの上位 / 下位の関係は、選択したドライバーの [文字列モード] に依存します。
| データの種類 | データ長 | データ範囲 |
| REAL | 32 bit |
+/-3.402823E38 ...+/-1.1754944E-38 |
| LREAL | 64 bit |
+/-4.19E-307 ...+/-1.67E308 |
実数型変数の精度は 7 桁までです。データの精度が必要な場合 (比較演算など) では、整数型変数を使用してください。
例
例 1: 1.2345678 の場合、8 桁目 (1.234567 以降) の値は近似値です。
例 2: 実数型変数に 0.1 として格納された値は、実際には 0.1000000014901161 のような値である可能性があります。
外部実数型変数として実数型変数を使用する場合は、デバイス設定内のダブルワード順位設定が機器内の設定と一致していることを確認してください。設定が一致しない場合は、外部実数型変数値が正常に表示されません。
変数値の小数点にはピリオド (.) を使用してください。小数点を表すコンマ (,) には対応していません。
画面編集ソフトウェアや表示器で変数値の小数点にコンマ (,) を使用すると、エラーが表示されたり、コンマが無視されたりするなどの予期せぬ結果になります。
| データの種類 | 説明 | データ範囲 |
TIME |
経過した期間 (日数、時間) が格納されます。 | - 24 d 20 h 31 m 23 s 648 ms ... 24 d 20 h 31 m 23 s 647 ms TIME 変数の [初期値] および [入力範囲] に負の値を設定した場合、各時間単位に負の符号が表示されます。(例 : -24d -20:-31:-23.-648) |
| DATE | 日付データが格納されます。 | SP5000 シリーズオープンボックス (Windows 10 IoT Enterprise モデル)、IPC シリーズ、または PC/AT を使用する場合 1970/01/01 ... 2106/02/07 上記以外の機種 1970/01/01 ...2038/01/19 |
| TIME_OF_DAY | 時刻データが格納されます。 | 00:00:00 ... 23:59:59 |
DATE_AND_TIME |
DATE と TIME_OF_DAY の組み合わせです。 | SP5000 シリーズオープンボックス (Windows 10 IoT Enterprise モデル)、IPC シリーズ、または PC/AT を使用する場合 上記以外の機種 |
これらの変数を使用する場合は、接続機器側のデータタイプと、格納する値のデータタイプを合わせてください。
接続機器アドレスの範囲外の値を入力した場合は、入力した値が画面に表示されますが、接続機器アドレスには設定されません。
変数を異なるデータタイプに関連付けると、ソース変数の値が共通の結果値で上書きされる場合があります。
例えば、実数型変数を整数型変数に変換する場合: 123.4 を実数型変数に設定し、その値を整数型変数に書き込むと結果は 123 になります。実数型変数の値も 123 に更新されます。
DATE_AND_TIME 変数に接続機器から整数値を入力した場合、格納される値は表示器のタイムゾーンによってオフセットされます。そのため、入力した整数値に対して日付/時間表示器で表示される日付/時間がタイムゾーンによって異なります。
SP5000 シリーズオープンボックス (Windows 10 IoT Enterprise モデル)、IPC シリーズ、または PC/AT
| 接続機器から入力する整数値 | UTC+0 (範囲: 1970/01/01 00:00:00 ... 2106/02/07 06:28:15) | UTC+9 (範囲: 1970/01/01 09:00:00 ...2106/02/07 15:28:15) |
| 0 | 1970/01/01 00:00:00 | 2106/02/07 06:28:16 |
| 1 | 1970/01/01 00:00:01 | 2106/02/07 06:28:17 |
| : | : | : |
| 32399 | 1970/01/01 08:59:59 | 2106/02/07 15:28:15 |
| 32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
| : | : | : |
| 4294967295 | 2106/02/07 06:28:15 | 2106/02/07 06:28:15 |
上記以外の機種
| 接続機器から入力する整数値 | UTC+0 (範囲: 1970/01/01 00:00:00 ... 2038/01/19 03:14:07) | UTC+9 (範囲: 1970/01/01 09:00:00 ...2038/01/19 12:14:07) |
| 0 | 1970/01/01 00:00:00 | 2038/01/19 03:14:08 |
| 1 | 1970/01/01 00:00:01 | 2038/01/19 03:14:09 |
| : | : | : |
| 32399 | 1970/01/01 08:59:59 | 2038/01/19 12:14:07 |
| 32400 | 1970/01/01 09:00:00 | 1970/01/01 09:00:00 |
| : | : | : |
| 2147483647 | 2038/01/19 03:14:07 | 2038/01/19 03:14:07 |
ユーザーデータタイプ変数には次の種類があります。
配列と構造体も変数としてカウントされます。
配列は、同じデータタイプの変数の集まりです。配列内の各変数は要素と呼ばれます。
配列変数を理解するために、変数をボックスとしてイメージしてください。次の図に示すように、変数 Number は 1 つの値を含む 1 つのボックスです。

配列を各ボックスに番号が付けられている 1 列のボックスとしてイメージしてください。次の図では、配列変数 Number には 0~4 までの 5 つの要素が含まれています。変数の値は 5 つのボックスそれぞれに保存されています。

配列内の各変数を指定するときは、変数名の後に要素番号を [ ] で囲んで指定します。
(例) 要素数が 5 の配列

要素番号は通常 0 を起点としますが、正の値または負の値を起点とすることもできます。
(例) 開始番号が -1、要素数が 5 の配列

多次元配列とは、別の配列を含む配列です。(例えば、2 つの DINT 配列を含む配列は 2 次元配列です。)
[プロジェクトエクスプローラー] ウィンドウの [変数] → [すべてのユーザーデータタイプ] → [配列] の、[次元] 列にて、配列の次元と要素数をまとめて設定します。
配列の設計手順については、以下を参照してください。
1 次元の場合、要素数のみを入力します。
(例) 要素数 = 3 の 1 次元配列の場合、「3」と入力します。

多次元の場合、各次元の要素数を [次元] フィールドに、カンマ (,) で区切って入力します。
(例) 1 次元が (開始番号 = 0 で) 要素数 = 3、また 2 次元が (開始番号 = 0 で) 要素数 = 4 の 2 次元配列の場合、「3,4」と入力します。

この配列を使って配列変数 Var1 を作成すると、以下のようになります。

要素の開始番号を 0 以外に設定する場合、要素数の代わりに、開始番号と最終番号を 2 つのピリオド (..) で区切って入力すると [要素数] フィールドで要素数が算出されます。
(例) 1 次元が開始番号 = 0 で要素数 = 3、また 2 次元が開始番号 = 3 で最終番号 = 6 の場合、「3,3..6」と入力します。

入力後、「3..6」は要素数「4」に変換され、この次元の配列は要素番号 3 から開始します。

この配列で配列変数 Var1 を作成すると、以下のようになります。

間接アドレス設定により、配列内の連続する値の範囲内の変数値へのアクセス、メモリー消費の最小化、ミリ秒未満の値の更新を最速に行えます。
配列の間接アドレス設定は、変数の値またはオブジェクトのプロパティ値に応じて要素番号を動的に指定します。
オブジェクトのプロパティ値により配列要素番号を間接指定する場合、オブジェクト名のまえに、「$GraphicalObject」を入れます。
現在値の入力欄または変数セレクタのソースプロパティ欄にて、「$」を入力することでポップアップ表示される文字列から「$GraphicalObject」を選択することで入力することができます (入力補助機能によります)。
配列の間接アドレス設定は、以下に対応しています。
[式] コンバーターで使用できます。
(例: Array11[DINT1.value+2]、Array21[Int2[Int3[Int1+1]]]、Array31[Int1*4-(Int2+Int4/4)])
すべての変数データタイプで最大 5 レベルの入れ子に対応しています。
(例: Array11[Array22[DINT1.value],DINT02.value])
構造体とは、他の変数をまとめて保持する変数のことです。構造体内の各変数は要素と呼ばれます。要素はどのデータタイプでもかまいません。
別の構造体または配列を要素として追加することで、入れ子の構造体を作成することができます。
構造体を各ボックスに要素が関連付けられている 1 つのグループのボックスとしてイメージしてください。
次の図では、構造体変数 DATA に 3 つの要素が含まれています。変数の値は 3 つのボックスそれぞれに保存されています。

変数に格納する値が範囲 (最大値/最小値) を超えた場合、値は次のように扱われます。
| データの種類 | 説明 |
STRING、WSTRING |
可能な文字数分の値が格納されます。 |
| 上記以外 | 入力範囲から超えた分の値を入力範囲の下限値から数え直して、値が格納されます。 例) 符号なし 8 ビットの変数 (値の範囲: 0...255) 例 1: 256 を格納しようとすると、変数には「0」が格納されます。(上限値を 1 つ越えたので、下限値の「0」が格納されます。) 例 2: 257 を格納しようとすると、変数には「1」が格納されます。(上限値を 2 つ越えたので、下限値から数えて 2 番目の値である「1」が格納されます。) |
入力範囲から超えた分の値を入力範囲の下限値から数え直して、値が格納されます。
(例): 符号なし 8 ビットの変数 (値の範囲: 0...255)
例 1: 256 を格納しようとすると、変数には「0」が格納されます。(上限値を 1 つ越えたので、下限値の「0」が格納されます。)
例 2: 257 を格納しようとすると、変数には「1」が格納されます。(上限値を 2 つ越えたので、下限値から数えて 2 番目の値である「1」が格納されます。)
| データの種類 | 説明 |
STRING、WSTRING |
可能な文字数分の値が格納されます。 |
| 上記以外 | 次の上限値 / 下限値に値が丸められます。
|
値は何も格納されません。
| データの種類 | 説明 |
BOOL、REAL、LREAL |
値は何も格納されません。 |
LINT、ULINT、LWORD |
次の上限値 / 下限値に値が丸められます。
|
STRING、WSTRING |
可能な文字数分の値が格納されます。 |
| 上記以外 | 入力範囲から超えた分の値を入力範囲の下限値から数え直して、値が格納されます。 (例): 符号なし 8 ビットの変数 (値の範囲: 0...255) 例 1: 256 を格納しようとすると、変数には「0」が格納されます。(上限値を 1 つ越えたので、下限値の「0」が格納されます。) 例 2: 257 を格納しようとすると、変数には「1」が格納されます。(上限値を 2 つ越えたので、下限値から数えて 2 番目の値である「1」が格納されます。) |