STとは

ST(Structured Text)はプログラム言語のひとつでIEC61131-3で規定されているラダーと混在できる言語です
計算するときや、FOR文、IF文を使いたいときにST言語で記述すると書きやすく、見やすくなります

ST言語でできること

ST言語
機能
条件分岐IF
繰り返しFOR
ループWHILE
CASE分岐CASE
計算式+ - * /
関数呼び出しFunction

ラダーとST言語の違い

比較
項目ラダーST
見やすさ
複雑な計算
FOR文×
CASE文×
保守性

使用例

三角形を計算する
ST言語による三角形面積計算

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

STの基本構文

IF文

IF Value > 10 THEN
	Judge := TRUE;
ELSE
	Judge := FALSE;
END_IF;

FOR文

FOR i := 0 TO 9 DO
	Sum := Sum + Data[i];
END_FOR;

CASE文

CASE Step OF
0:
	Start();
1:
	Run();
2:
	Stop();
END_CASE;

注意点

IF文でフラグ処理するときの注意点

三角形の面積が10以上ならJudgeをONにするときのことを考えます
IF文でのフラグ処理例
このようにしてしまいがちですが、これだと一度JudgeがONすると面積が10未満でもONしっぱなしになるので必ず下記のようにELSE文をいれて10未満ならJudgeをOFFにします
ELSE文を使用したフラグ処理

インラインSTは起動条件がOFFで読み飛ばされる

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

この記事へのコメント