命令リスト(IL)|低水準命令でPLC高信頼制御

命令リスト(IL)

命令リスト(IL)は、PLC制御向け国際規格IEC 61131-3で定義されたテキストベースのプログラミング言語である。ニーモニック(略号)命令を順次実行し、アキュムレータの論理値や数値を更新しながら入出力・内部変数を操作する。ラダー図やFBDに比べて低水準であるが、処理が明確で実行効率に優れるため、限られたリソースの装置や微細なタイミング制御で活用されてきた。第3版では非推奨とされたが、既存設備の保守・改造では依然として重要である。

位置づけと規格

命令リスト(IL)は、LD(ラダー)、FBD、ST(Structured Text)、SFC(順序制御)と並ぶ言語群の一つである。IEC 61131-3はデータ型、POU(Program/Function/Function Block)の枠組み、変数スコープ、実行モデルを共通化しつつ、ILでは命令列による逐次実行を採用する。2013年改訂(第3版)でILは非推奨となり、新規開発はST等への移行が推奨されるが、互換性のため多くの開発環境が読込・表示・ビルドを継続支援している。

基本構成と実行モデル

ILは上から下へ順次実行され、命令はアキュムレータ(現在値)とオペランド(変数・定数)に作用する。LDで読み込んだ値にANDORを重ね、STでブール結果を出力変数へ格納する、という流れが基本である。算術や比較も同様にアキュムレータ中心に行い、ジャンプ命令でフローを分岐させる。

代表的な命令と意味

  • LD X0, LDN X0:変数の読込/否定読込。
  • AND X1, OR X2, XOR X3:ブール演算をアキュムレータへ適用。
  • ST Y0:現在のブール値を出力や内部ビットに格納。
  • ADD D0, SUB D1, MUL D2, DIV D3:数値演算。
  • GT, GE, EQ, NE, LT, LE:比較によりアキュムレータへ真偽を設定。
  • JMP L1, JMPC L2:無条件/条件付きジャンプ。
  • CAL TON_1, RET:FB呼出/リターン。タイマ・カウンタ等のFBと併用する。

データ型とアドレッシング

IECではBOOLINTDINTREALTIMEなどを標準化している。I/Oは%I(入力)、%Q(出力)、%M(メモリ)などの表記がある一方、ベンダ独自のX0Y10D100等も多い。移植性を確保するにはシンボリック変数(タグ名)を用い、ハード依存の絶対番地を最小化するのが望ましい。

制御フローと構造化

ILはJMP/JMPCによりフロー制御を行う。過度なラベル分岐は可読性を損なうため、短い直列分岐に留め、反復はSFCやST、FBDといった上位表現に委ねるのが保守性に優れる。大きな機能はFunctionやFunction Blockとして分割し、ILは局所的・性能重視の部分へ適用する設計が実務的である。

タイマ・カウンタの扱い

IECのタイマ(TONTOFTP)やカウンタ(CTUCTD)はFBとして提供され、ILからCALや引数設定で呼び出す。開始条件やプリセット値、経過時間ET、完了ビットQ等を変数に結び、スキャン毎に評価させる。

開発・デバッグ上の要点

  • 命令列を論理塊ごとに空行やコメントで区切り、ラベル名は機能を表す短語にする。
  • オンラインモニタでアキュムレータと主要変数の変化を追跡し、境界値・チャタリング時の挙動を確認する。
  • クロスリファレンスで参照関係を洗い出し、影響範囲を明確化する。

保守性とコーディング規約

命令リスト(IL)は簡潔な一方、人の読み解きに負荷がかかる。命名規約、コメント方針、禁止事項(多段ジャンプ、自己修正的な代入など)をチームで定め、レビューで遵守する。I/Oのデバウンスや非常停止系は標準FBで統一し、IL記述のばらつきを抑えるとトラブルシュートが迅速になる。

相互運用と再利用

同一プロジェクトでLDやFBD、SFCと混在させ、共通FB・関数を言語非依存の資産として整備する。計算集中部のみをILで最適化し、状態遷移はSFC、論理合成はFBD、と役割分担することで、見通しと性能を両立できる。

歴史と現状

ニーモニックは初期PLC時代からの伝統で、メモリ節約と実装容易性が背景にあった。規格の成熟とツール進化により高水準言語化が進み、第3版以降はILの新規採用が減少している。ただし既設ラインの寿命は長く、命令リスト(IL)の読解力は保守や改造見積に不可欠である。

移行と互換運用の指針

  1. 現行ILの機能単位を棚卸しし、試験ケースを作る。
  2. 算術・比較・分岐はSTへ移し、I/OマッピングはFBで抽象化する。
  3. ツールの自動変換を用いる場合も、境界値とタイミングの再検証を必ず行う。
  4. 移行後もILを読める体制を維持し、緊急時の解析力を確保する。

コメント(β版)