ST(Structured Text)はプログラム言語のひとつでIEC61131-3で規定されているラダーと混在できる言語です
計算するときや、FOR文、IF文を使いたいときにST言語で記述すると書きやすく、見やすくなります
| 機能 | 例 |
|---|---|
| 条件分岐 | IF |
| 繰り返し | FOR |
| ループ | WHILE |
| CASE分岐 | CASE |
| 計算式 | + - * / |
| 関数呼び出し | Function |
| 項目 | ラダー | ST |
|---|---|---|
| 見やすさ | ○ | ○ |
| 複雑な計算 | △ | ◎ |
| FOR文 | × | ◎ |
| CASE文 | × | ◎ |
| 保守性 | ○ | ○ |
三角形を計算する

これをラダーで書くと計算途中の値を覚えるために一時的に格納する変数が必要になり見にくくなります

IF Value > 10 THEN
Judge := TRUE;
ELSE
Judge := FALSE;
END_IF;
FOR i := 0 TO 9 DO
Sum := Sum + Data[i];
END_FOR;
CASE Step OF
0:
Start();
1:
Run();
2:
Stop();
END_CASE;
三角形の面積が10以上ならJudgeをONにするときのことを考えます

このようにしてしまいがちですが、これだと一度JudgeがONすると面積が10未満でもONしっぱなしになるので必ず下記のようにELSE文をいれて10未満ならJudgeをOFFにします

インラインSTの起動条件のflgがOFFになるとインラインSTは実行されません
よって、インラインST内の変数は前回値を保持したままとなるので、Judgeは前回値のままになり前回値がONであればOFFに変わることがないので注意が必要です
この場合でflgがOFFのときにJudgeもOFFしたいときは、計算だけSTでやってIF文のところをインラインSTの外に出すのが簡単そうです(場面によってやり方は変えてください)
