
PLCプログラムといえば、ラダー(LD)を思い浮かべる方が多いかもしれません。
しかし、制御の複雑化やデータ処理の高度化が進む中で、テキストベースのST(Structured Text)言語にも注目が集まっています。
本記事では、ST言語の基本構文や特長、LD(ラダー)との違い、実際の書き換え例までをわかりやすく解説します。
もくじ
ST言語とは?

ST(Structured Text)は、IEC 61131-3で定義されているPLC用の標準言語のひとつで、C言語やPascalのような構文を持つテキストベースの言語です。
IEC 61131-3では、以下の5つの言語が定義されています。
- LD(ラダー図):電気回路図に近く、直感的なプログラム表現
- FBD(ファンクションブロックダイアグラム):機能ブロックによる視覚的表現
- ST(構造化テキスト):高機能なテキスト記述
- IL(命令リスト):アセンブリに似た表記(現在は非推奨)
- SFC(シーケンシャルファンクションチャート):状態遷移を明確にする構造
この中でSTは、数値演算・条件分岐・繰り返し・文字列処理など、高度な制御処理に強みを発揮します。
ST言語が選ばれる理由
| 特長 | 内容 |
| 高度な処理が得意 | 数学演算や文字列処理、複雑な分岐処理が記述しやすい |
| 保守性・再利用性に優れる | 構造化されており、プログラムの可読性と保守性が高い |
| プログラミング経験が活きる | C言語などの経験があると習得がスムーズ |
| ベンダー横断で使える | IEC 61131-3に準拠しており、多くのPLCメーカーで利用可能 |
ST言語の基本構文
変数の定義
VAR
A : INT;
B : BOOL;
END_VAR
代入・演算
A := 10 + 5;
B := (A > 10);
条件分岐
IF A > 100 THEN
B := TRUE;
ELSE
B := FALSE;
END_IF;
繰り返し処理
FOR i := 1 TO 5 DO
Sum := Sum + i;
END_FOR;
よく使われる処理とサンプルコード
| 処理内容 | サンプルコード |
| 入出力制御 | Y0 := X0; |
| 数値演算 | Result := A * 2 + B / 4; |
| 条件分岐 | IF Mode = 1 THEN Start := TRUE; |
| 配列の使用 | Data[0] := 100; |
| ループと集計 | FOR i := 0 TO 4 DO Sum := Sum + Data[i]; END_FOR; |
ST言語の活用シーン
STは、以下のような場面で特に力を発揮します。
- ラダーで書くと煩雑になる処理
- 数値演算や統計的な処理
- データロギングや文字列の加工
- パラメータをもとに柔軟な処理を行いたい場合
LD(ラダー)とSTの比較
| 項目 | LD(ラダー) | ST(Structured Text) |
| 視認性 | 回路図のようで直感的 | テキストで論理構造が明確 |
| 習得のしやすさ | 電気系の知識があれば簡単 | C言語経験者には親しみやすい |
| 複雑な処理 | 不向き(可読性低下) | 得意(簡潔な記述が可能) |
| 保守性 | 規模が大きくなると低下 | 構造化で維持しやすい |
| 演算・文字列処理 | 非常に煩雑または不可 | 標準機能で対応可能 |
ラダーをSTで書き換える例
例1:入力 → 出力の基本制御
LD(ラダー)

ST
Y0 := X0;
例2:自己保持回路
LD(ラダー)

ST
IF (X0 OR Y20) AND X1 == 0 THEN
Y20 := TRUE;
ELSE
Y20 := FALSE;
END_IF;
例3:タイマの使用
LD(ラダー)

ST
T0(IN := X0, PT := T#100ms);
※ T0 はタイマファンクションブロックとして動作。使用するPLCメーカーによって記述方法がやや異なります。
STと他言語との使い分け
現実的な開発では、言語を組み合わせて使い分けることが重要です。
| 処理内容 | 適した言語 |
| シンプルなI/O制御 | LD |
| 複雑な演算処理 | ST |
| 条件による分岐・繰返し | ST |
| 文字列や通信データの処理 | ST |
| 状態遷移制御 | SFC |
まとめ
ST言語は、PLCにおける「高度な処理を簡潔に実装するための選択肢」として非常に有用です。
- ラダーよりも柔軟で構造化された記述が可能
- 保守性や再利用性が高く、大規模システムにも向いている
- 演算処理や文字列処理など、ラダーでは煩雑な処理に最適
今後はLD+STのハイブリッド設計が当たり前になる時代です。制御エンジニアとしてST言語も使いこなせるようにしておきましょう。