
【この記事でわかること】
✅ ST言語の定義と5言語の位置づけ
✅ ラダー(LD)との具体的な違いと使い分け
✅ IF文・FOR文・タイマの基本構文(コード付き)
✅ どんな現場・処理でSTを使うべきか
PLCプログラムといえば、ラダー(LD)を思い浮かべる方が多いかもしれません。
実際、日本国内ではラダーが8割以上の現場で使われている一方、ST言語の採用率は着実に増加しており、特に若手エンジニアやソフトウェア系の設計者を中心に広がっています。
本記事では、ST言語の基本構文や特長、LD(ラダー)との違い、実際の書き換え例までをわかりやすく解説します。
もくじ
ST言語とは?

ST言語(Structured Text)とは、IEC 61131-3で定義されたPLC用プログラミング言語のひとつで、C言語に近い構文を持つテキストベースの言語です。
数値演算・条件分岐・繰り返し処理・配列操作など、ラダー図では記述が煩雑になる高度な処理を、簡潔かつ構造化された形で実装できる点が最大の特徴です。
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);
条件分岐
ST言語のIF文は、条件が成立したときだけ処理を実行する制御構文で、ラダーのa接点+コイルの動作に相当します。
IF A > 100 THEN
B := TRUE;
ELSE
B := FALSE;
END_IF;
繰り返し処理
ST言語のFOR文は、指定した回数だけ処理を繰り返す構文で、多点・多軸の一括処理に特に有効です。
ラダーで同等の繰り返し処理を書くと、ステップ数は数倍になります。
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と他言語との使い分け
現実的な開発では、言語を組み合わせて使い分けることが重要です。
ラダー(LD)とST言語の使い分けの基本は「接点・コイル制御はラダー、演算・繰り返し・配列処理はST」です。
| 処理の種類 | 向いている言語 | 理由 |
| 接点・コイルのON/OFF制御 | ラダー(LD) | 回路図に近く直感的 |
| 四則演算・スケーリング | ST | 数式をそのまま1行で書ける |
| FOR/WHILEによる繰り返し | ST | ラダーでは同等処理がステップ数倍 |
| 配列・複数軸の一括処理 | ST | ループで簡潔にまとめられる |
| シーケンスの流れ制御 | ラダー or SFC | 視認性が高い |
例えば、私が実際に担当した食品ライン設備では、30軸以上のモーション制御をFOR文で一括処理するためにSTを採用しました。
ラダーで同じ処理を書いていたら、ステップ数は5倍以上になっていたと思います。
よくある質問
Q. ST言語はラダー(LD)の代わりに使えますか?
ST言語はラダーの「代替」ではなく「補完」として使うのが正解です。ラダーが得意な接点・コイル制御はそのままラダーで書き、数値演算・繰り返し・文字列処理など複雑な処理をSTで書く「ハイブリッド設計」が現場では主流になっています。
Q. ST言語は初心者でも学べますか?
C言語やPythonなど、他のプログラミング言語の経験がある方であれば比較的スムーズに習得できます。ラダーしか知らない方には最初とっつきにくく感じることもありますが、IF文・FOR文などの基本構文から順に覚えれば、3〜4週間で実務レベルの読み書きができるようになります。
Q. 三菱・オムロン・シーメンスでST言語の書き方は違いますか?
IEC 61131-3に基づいているため基本構文はほぼ共通ですが、タイマやカウンタのファンクションブロック名、変数宣言の方法などはメーカーごとに差異があります。三菱はGX Works3、オムロンはSysmac Studio、シーメンスはTIA Portalでそれぞれ確認するのがおすすめです。
Q. ST言語はどんな処理が得意ですか?
ST言語が特に力を発揮するのは、①多軸モーション制御のFORループ処理、②アナログ値の演算・スケーリング、③文字列・配列処理、④複雑な条件分岐(CASE文)などです。ラダーで同じ処理を書くとステップ数が数倍になるケースでも、STなら数十行で簡潔に記述できます。
Q. ST言語を練習するにはどんな環境が必要ですか?
実機PLCがなくても、三菱のGX Works3やオムロンのSysmac Studioは無償の試用版・シミュレーション機能があります。まずはPCだけで動くシミュレータ環境を用意し、本記事のコード例を実際に入力して動作確認するところから始めるのがおすすめです。
まとめ
ST言語をPLCプログラムに取り入れるメリットは、大きく4つあります。
- 演算処理の簡潔化:ラダーで複数ステップ必要な計算式を、STなら1行で記述できます。
- コードの再利用性:ファンクションブロック化により、同じ処理を複数箇所で使い回せます。
- 大規模制御への対応:配列とループを組み合わせることで、多軸・多点制御を効率的に実装できます。
- メーカー間の移植性:IEC 61131-3準拠のため、基本構文は三菱・オムロン・シーメンス間で共通です。
今後はLD+STのハイブリッド設計が当たり前になる時代です。制御エンジニアとしてST言語も使いこなせるようにしておきましょう。