□ 変数のデータ型
変数のデータ型です。
| データ型 | 内容 | 範囲 |
| BOOL | ビット | true, false |
| INT | ワード(符号付き) 16ビット | -32768~32767 |
| WORD | ワード(符号なし) 16ビット | 0~65535 |
| DINT | ダブルワード(符号付き) 32ビット | -2147483648~2147483647 |
| DWORD | ダブルワード(符号なし) 32ビット | 0~4294967295 |
| REAL | 単精度実数 32ビット | -2128 ~ -2-126,0,2-126 ~ 2128 |
| LREAL | 倍精度実数 62ビット | -21024 ~ -2-1022,0,2-1022 ~ 21024 |
□ 演算子
演算子及び優先順位です。
| 演算子 | 内容 | 優先順位 |
| () | 丸括弧式 | 1 |
| ファンクション() | ファンクション呼び出し式 | 2 |
| - | 符号の反転 | 3 |
| NOT | ビット型補数 | 3 |
| ** | べき乗 | 4 |
| * | 乗算 | 5 |
| / | 除算 | 5 |
| MOD | 剰余算 | 5 |
| + | 加算 | 6 |
| - | 減算 | 6 |
| <, >, <=, >= | 比較 | 7 |
| = | 一致 | 8 |
| <> | 不一致 | 8 |
| &, AND | 論理積 | 9 |
| XOR | 排他的論理和 | 10 |
| OR | 論理和 | 11 |
代入文
代入文は、 := (コロンイコール) を使用します。
文の終端
文の終端は、 ; (セミコロン)を付けます。
コメント
単一行コメントは、 //、複数行コメントは、 (* *), /* */ となります。
例
ia1 := 23; // 符号付きワードに代入
以下のプログラム例は、インラインST で確認しています。また、インラインSTボックスのラダーソフトによる実行条件は省略しています。
□ 演算例
以下の演算例で使用するラベル名及びデータ型です。GX Works3 のラベルで登録します。
| ラベル名 | データ型 |
| bBool1 | BOOL |
| bBool2 | BOOL |
| ia1 | INT |
| ia2 | INT |
| iwa1 | WORD |
| iwa2 | WORD |
| ida1 | DINT |
| ida2 | DINT |
| idwa1 | DWORD |
| idwa2 | DWORD |
1) bool
bBool1 := TRUE; // bBool1 on, FALSE で off
bBool2 := bBool1; // ビットの代入
bBool1 := 1; // 数字 1 (TRUE) または 0 (FALSE) で代入
bBool2 := NOT bBool1; //bBool1 の補数(反転)代入
bBool2 := bBool1 = FALSE; // bBool1 = False の時 on
2) INT,WORD
// INT 符号付き
ia1 := -2;
ia2 := ia1 + 10; // => 8
ia1 := -2;
ia2 := ia1 * (-2); // => 4
ia1 := 9;
ia2 := ia1 / 2; // => 4
ia1 := 9;
ia2 := ia1 MOD 2; // => 1
// WORD 符号なし
iwa1 := 50000;
iwa1 := iwa1 + 10; // => 50010
// -------
INC(TRUE, ia1); //INT インクリメント +1
DEC(TRUE, ia2); //INT デクリメント -1
INC_U(TRUE, iwa1); //WORD インクリメント +1
DEC_U(TRUE, iwa2); //WORD デクリメント -1
iwa2 := INT_TO_WORD(ia1); // INT -> WORD 変換
ia2 := WORD_TO_INT(iwa2); // WORD -> INT 変換
// 論理演算 AND, OR, XOR INT, WORD で可
ia1 := H00FF;
WAND(TRUE, ia1, HF, ia2); // ia2 => 15(HF)
ia1 := HF;
WOR(TRUE, ia1, HF0, ia2); // ia2 => 255(HF)
ia1 := HF;
WXOR(TRUE, ia1, H5, ia2); // ia2 => 10(HA)
// 論理演算 AND, OR, XOR WORDで可 INTでは不可
iwa1 := H00FF;
iwa2 := iwa1 AND H000F; // => 15(HF)
iwa1 := HF;
iwa2 := iwa1 OR HF0; // => 255(HFF)
iwa1 := HF;
iwa2 := iwa1 XOR H5; // => 10(HA)
3) DINT,DWORD
// DINT 符号付き
ida1 := 3000000;
ida2 := ida1 + 100; // => 3000100
ida1 := 3000000;
ida2 := ida1 - 3000001; // => -1
ida1 := 3000000;
ida2 := ida1 * 2; // => 6000000
ida1 := 1000000;
ida2 := ida1 / 3; // => 333333
ida1 := 1000000;
ida2 := ida1 MOD 3; // => 1
// DWORD 符号なし
idwa1 := 3000000000;
idwa2 := idwa1 + 2; // => 3000000002;
// -------
DINC(TRUE, ida1); // DINT インクリメント +1
DDEC(TRUE, ida1); // DINT デクリメント -1
DINC_U(TRUE, idwa1); // DWORD インクリメント +1
DDEC_U(TRUE, idwa1); // DWORD デクリメント -1
idwa1 := DINT_TO_DWORD(ida1); // DINT -> DWORD 変換
ida1 := DWORD_TO_DINT(idwa1); // DWORD -> DINT 変換
ia1 := DINT_TO_INT(ida1); // DINT -> INT 変換 -32768~32767 の範囲外ではエラー
ida1 := INT_TO_DINT(ia1); // INT -> DINT 変換
iwa1 := DWORD_TO_WORD(idwa1); // DWORD -> WORD 変換 上位16ビットは、捨てられます
idwa1 := WORD_TO_DWORD(iwa1); // WORD -> DWORD 変換
4) デバイスを使用
デバイスを使用する場合は、デバイスにデータ型を指定します。
D200 := 256; // INT 何も指定しないと INT 型
D202:U := 40000; // WORD 指定
D204:D := H20000; // DINT 指定 D204,D205
D206:UD := HAAAAFFFF; // DWORD 指定 D206,D207
// ラベルとデバイスを混在
ida1 := 6; D208:D := 25;
D210:D := 5 * ida1 + D208:D; // => 55
