PLC(プログラマブルロジックコントローラ)のプログラミングに使われる言語には複数の種類がありますが、その中でも最もよく知られているのがラダー言語(Ladder Language)です。
ラダー言語はC言語やPythonのような汎用プログラミング言語とは根本的に異なる仕組みを持っており、電気技術者にとって理解しやすい独特な特徴を備えています。
しかし「ラダー言語はどのような仕組みで動いているのか」「他のPLCプログラミング言語とどう違うのか」「命令語の体系はどうなっているのか」について詳しく説明できる方は多くないかもしれません。
この記事では、ラダー言語の定義・基本的な仕組みと特徴・IEC 61131-3の他の言語との比較・メーカー別の開発環境まで、体系的に解説していきます。
ラダー言語の本質を深く理解したい方はぜひ最後までお読みください。
ラダー言語とはIEC 61131-3で規定されたPLC専用のグラフィカルプログラミング言語である!
それではまず、ラダー言語の定義と規格上の位置づけについて解説していきます。
ラダー言語の定義と国際規格
ラダー言語(Ladder Language、Ladder Diagram Language)とは、IEC 61131-3という国際規格においてPLC向けプログラミング言語として定義されたグラフィカル言語のひとつであり、電気回路図に似た「ラダー図(はしご状の図)」によってシーケンス制御ロジックを記述します。
IEC(International Electrotechnical Commission、国際電気標準会議)が1993年に制定したIEC 61131-3規格には、PLCのプログラミング言語として以下の5種類が規定されています。
| 言語名 | 略称 | 種類 | 特徴 |
|---|---|---|---|
| ラダー図(Ladder Diagram) | LD | グラフィカル | 電気回路図形式、最も普及 |
| ファンクションブロック図(Function Block Diagram) | FBD | グラフィカル | 信号の流れをブロックで表現 |
| 構造化テキスト(Structured Text) | ST | テキスト | 高水準言語に近い記述形式 |
| インストラクションリスト(Instruction List) | IL | テキスト | アセンブリ言語に近い低水準形式 |
| シーケンシャルファンクションチャート(Sequential Function Chart) | SFC | グラフィカル | 状態遷移図形式、工程制御に適する |
この5種類の中でラダー言語(LD)は製造現場での普及率が最も高く、世界中のPLCプログラマーの間で事実上の標準言語として位置づけられています。
グラフィカル言語としての特徴
ラダー言語が「グラフィカル言語」である最大の特徴は、プログラムのロジックを文字列のコードではなく視覚的な図形で表現することです。
CやJavaといったテキストベースのプログラミング言語ではアルファベットや記号を並べてプログラムを記述しますが、ラダー言語では接点やコイルの記号を組み合わせた図形でプログラムを表現します。
この視覚的な表現の利点は、プログラムのロジックが「目で見てわかる」ことです。
たとえば「押しボタンAまたは押しボタンBが押されたとき、かつ非常停止が押されていないとき、モーターが動く」というロジックをラダー図として描くと、条件と結果の関係が回路図として視覚的に確認できます。
これがプログラミングの専門教育を受けていない電気・機械技術者でもラダー言語を習得しやすい理由のひとつです。
ラダー言語が広く普及した理由
ラダー言語が数十年にわたって世界中で広く使われ続けている理由は、技術的な優秀さだけでなく社会的・産業的な背景にあります。
歴史的背景としては、PLCが登場する以前から電気技術者がリレーシーケンス回路の設計・保守に慣れており、ラダー図はそのリレー回路図をそのままPLCのプログラミング言語として採用したものです。
そのため既存の電気技術者がほとんど学習負担なく移行できたことが初期普及を後押ししました。
保守性の高さも重要な要因です。
製造現場では設備の保守・トラブルシューティングを担当するのが電気技術者や保守担当者であることが多く、プログラミング専門家でなくてもラダー図を読んで問題箇所を特定できることが現場での価値を高めています。
また主要なPLCメーカーすべてがラダー言語に対応しているため、技術者のスキルが特定のメーカー・機種に依存しにくいというポータビリティの高さも普及に貢献しています。
ラダー言語の仕組みとプログラム実行のメカニズム
続いては、ラダー言語がどのような仕組みで動作しているかについて確認していきます。
スキャンサイクルと実行順序の仕組み
ラダー言語(ラダープログラム)の最も基本的な実行メカニズムが「スキャンサイクル(Scan Cycle)」です。
PLCはラダープログラムを「逐次実行」するのではなく、以下の3フェーズを一定の周期で繰り返します。
PLCのスキャンサイクルの3フェーズ
フェーズ1(入力更新):物理的な入力端子(センサー・スイッチなどの接続端子)の状態を読み込み、入力デバイスの内部バッファを更新する
フェーズ2(プログラム実行):ラダープログラムを第1ラングから最終ラングまで上から順番に演算し、各コイルの出力状態を計算する(この段階では実際の出力端子はまだ変化しない)
フェーズ3(出力更新):フェーズ2で計算した演算結果を物理的な出力端子に書き出し、アクチュエーターを制御する
このフェーズ1→2→3を繰り返す1周期がスキャンサイクルであり、その所要時間をスキャンタイム(通常数ms〜数十ms)という
スキャンサイクル方式の重要な特性として「同一スキャン内での変化は次のスキャンまで反映されない」という点があります。
たとえばフェーズ2のプログラム実行中にある出力コイルがONになったとしても、そのコイルに対応する接点(自己保持に使う場合など)が同じスキャン内の後続ラングで閉じることはありません。
次のスキャンのフェーズ1で更新されてから有効になります。
この動作の違いを理解することは、正確なラダー図の設計において非常に重要です。
論理演算の仕組みと真理値
ラダー言語ではすべての接点とコイルは「ON(1、真)」または「OFF(0、偽)」という2値の状態を持ち、ブール代数(論理演算)に基づいて処理されます。
ラダー図の各ラングは基本的に以下の論理演算で構成されます。
ラダー言語の基本論理演算
AND(論理積):接点を直列接続した回路。すべての接点がONのときのみコイルがONになる
出力 = 接点A AND 接点B AND 接点C …
OR(論理和):接点を並列接続した回路。いずれかひとつの接点がONであればコイルがONになる
出力 = 接点A OR 接点B OR 接点C …
NOT(否定):B接点(ノーマルクローズ接点)。デバイスがOFFのとき接点が閉じる
接点の状態 = NOT デバイスの状態
NAND・NOR・XOR などの複合論理も接点の組み合わせで実現可能
これらの基本論理演算の組み合わせによって、AND・OR・NOT の三種の神器だけで理論的にはあらゆる論理回路を表現できます。
これはデジタル回路設計の原理と同じであり、ラダー言語は本質的にソフトウェアで実装したデジタル論理回路といえます。
ラダー言語での命令語の体系
ラダー言語の命令語は大きく「基本命令」「応用命令(特殊命令)」の2種類に分類されます。
基本命令は接点読み取り(LD・LDI・AND・ANI・OR・ORI)・出力(OUT・SET・RST)などの単純な論理演算命令であり、どのPLCでも共通して使える基本的な命令群です。
応用命令はデータ演算(MOV・ADD・SUB・MUL・DIV)・比較演算(=・<・>・<=・>=)・タイマー(TON・TOF)・カウンター(CTU・CTD)・通信命令・PID制御命令など多様な拡張命令群で構成されており、メーカーや機種によって内容が異なります。
現代のPLCはこれらの命令語を数百種類以上備えており、単純なシーケンス制御から高度な数値演算・通信処理まで幅広い制御を実現できます。
IEC 61131-3の他のプログラミング言語との違い
続いては、ラダー言語とIEC 61131-3の他のPLCプログラミング言語の違いについて確認していきます。
構造化テキスト(ST)との違い
構造化テキスト(ST:Structured Text)はPascalやBasicに近い高水準テキスト言語であり、変数への代入・条件分岐(IF-THEN-ELSE)・繰り返し処理(FOR・WHILE)・関数呼び出しなどをテキストで記述します。
ラダー言語との最大の違いは「テキストベース」という点です。
STを使うとデータ演算・文字列処理・複雑な数学演算などをコンパクトに記述でき、ソフトウェアエンジニアにとって習得しやすい言語です。
一方でラダー言語の視覚的なわかりやすさがなく、電気技術者には直感的に理解しにくいというデメリットがあります。
現代のPLC開発では「シーケンス制御のロジックはラダー言語で記述し、複雑なデータ演算・計算処理はSTで記述する」という使い分けが一般的です。
ファンクションブロック図(FBD)との違い
ファンクションブロック図(FBD:Function Block Diagram)はグラフィカル言語のひとつであり、あらかじめ定義された機能を持つ「ブロック」を配置し、ブロック間を信号線で接続することでプログラムを表現します。
FBDはアナログ信号処理・PID制御・データ変換などの「データの流れ」を表現することが得意であり、プロセス制御・計装分野での普及が高い言語です。
ラダー言語との違いは表現スタイルにあります。
ラダー言語は電流の流れ(ONかOFFか)という二値論理を中心とした表現が得意なのに対し、FBDはデータの変換・演算の流れを中心とした表現が得意という特性の違いがあります。
IL・SFCとの比較
インストラクションリスト(IL:Instruction List)はアセンブリ言語に近い低水準テキスト言語であり、1命令1行の形式でプログラムを記述します。
実行効率が高く、古いPLCとの互換性が高いという利点がありますが、可読性が低く現代の開発環境では使用が減少しています。
なお最新版のIEC 61131-3(第3版)ではILは廃止される方向にあります。
シーケンシャルファンクションチャート(SFC:Sequential Function Chart)は工程の進み方を状態遷移図(フローチャートに近い)で表現するグラフィカル言語です。
「ステップ(状態)」と「トランジション(遷移条件)」という概念で複数の工程を順次制御する「工程制御」に非常に適した言語です。
各ステップ内部の詳細な処理はラダー言語やSTで記述するため、SFCとラダー言語を階層的に組み合わせて使う設計が現代の大規模PLC開発では一般的になっています。
ラダー言語の長所と短所・現代の開発環境での位置づけ
続いては、ラダー言語のメリットとデメリット、そして現代のPLC開発における位置づけを確認していきます。
ラダー言語の主なメリット
ラダー言語が半世紀以上にわたって産業界で支持されてきた理由は、多くの実用的なメリットにあります。
第一のメリットは「視覚的な直感性」です。
電気回路図に似た表現形式であるため、電気技術者・保守担当者が直感的に理解しやすく、プログラミング未経験者でも比較的短期間で習得できます。
第二のメリットは「デバッグ・トラブルシューティングの容易さ」です。
多くのPLCプログラミングソフトウェアにはオンラインモニター機能があり、PLCが実行中にラダー図上の接点・コイルのON/OFF状態をリアルタイムで視覚的に確認できます。
問題のある箇所が回路図上で「見える」ため、エラーの特定が非常に速いです。
第三のメリットは「高い信頼性と実績」です。
数十年にわたる産業現場での使用実績があり、動作の予測可能性・信頼性が十分に検証されています。
ラダー言語の主なデメリット
一方で、ラダー言語にはいくつかのデメリットも存在します。
第一のデメリットは「複雑な演算処理への不向きさ」です。
数学的な計算・文字列処理・配列操作などを記述しようとすると、ラダー言語では非常に多くのラングが必要となり可読性が著しく低下します。
これらはSTなどのテキスト言語の方が遥かに効率よく記述できます。
第二のデメリットは「大規模プログラムの管理が困難」という点です。
大規模なシーケンス制御プログラムになるとラングの数が数千〜数万行に及ぶことがあり、オブジェクト指向設計のような構造化・モジュール化が困難なため保守性が低下します。
第三のデメリットは「メーカー間の互換性の不完全さ」です。
IEC 61131-3という国際規格があるものの、各メーカーが独自の拡張命令を追加しているため、三菱電機のPLCプログラムをそのままオムロンのPLCに移植することは実際には困難な場合があります。
現代のPLC開発環境でのラダー言語の位置づけ
現代のPLC開発では「ラダー言語を中心としつつ、用途に応じて他の言語を組み合わせる」マルチ言語アプローチが標準化しつつあります。
たとえば三菱電機のGX Works3・オムロンのSysmac Studio・シーメンスのTIA PortalなどのモダンなPLC開発環境では、ラダー言語・ST・FBD・SFCを同一プロジェクト内で混在させて使用できます。
工程制御の大枠はSFCで定義し、各工程内のシーケンス処理はラダー言語で記述し、複雑な計算処理はSTで記述するという役割分担が典型的な設計パターンです。
メーカー別のラダー言語開発環境の特徴
続いては、主要なPLCメーカーのラダー言語開発環境について確認していきます。
三菱電機(MELSEC)のGX Worksシリーズ
三菱電機のPLC(MELSECシリーズ)向けプログラミングソフトウェアが「GX Works(ジーエックスワークス)」シリーズです。
現行の主力製品は「GX Works3」であり、iQシリーズPLCに対応しています。
GX Works3ではラダー言語・ST・SFC・FBD/LDの複数言語でのプログラミングに対応しており、プログラム構造化機能(ファンクションブロック・ラベル)による大規模プログラムの管理も可能です。
三菱電機は国内シェアが最も高いPLCメーカーのひとつであり、GX Worksの操作習熟は日本の製造業エンジニアにとって重要なスキルのひとつです。
オムロン(Sysmac)のSysmac Studio
オムロンのPLC(NXシリーズ・NJシリーズなど)向けの統合開発環境が「Sysmac Studio(シスマックスタジオ)」です。
Sysmac StudioはIEC 61131-3への準拠度が高く、ラダー言語・ST・SFC・FBD・ILすべての言語に対応しています。
特に注目されているのが「モーションコントロール」機能との統合であり、PLCのシーケンス制御とサーボモーターの高精度な位置決め制御を同一の開発環境で管理できます。
シーメンス・ロックウェルオートメーションの開発環境
シーメンス(Siemens)のPLC(SIMATICシリーズ・S7シリーズ)向けには「TIA Portal(Totally Integrated Automation Portal)」が使われます。
TIA PortalはPLCプログラミングだけでなく、HMI(ヒューマンマシンインターフェース)の設計・インバーター設定・ドライブシステムの設定まで統合的に管理できる包括的な開発プラットフォームです。
ロックウェルオートメーション(Rockwell Automation)のPLC(ControlLogixシリーズなど)向けには「Studio 5000 Logix Designer」が使われており、北米の製造業を中心に広いシェアを持っています。
ラダー言語の理解を深めるために押さえておくべきポイントをまとめます。
・ラダー言語はIEC 61131-3で規定された5言語のひとつであり、グラフィカルな表現形式を持つ
・PLCはスキャンサイクル(入力更新→プログラム実行→出力更新)の繰り返しでラダープログラムを実行する
・AND・OR・NOT の基本論理演算を組み合わせてあらゆるシーケンス制御を表現できる
・構造化テキスト(ST)・ファンクションブロック図(FBD)・SFCなど他の言語との使い分けが現代のPLC開発では一般的
・三菱電機・オムロン・シーメンスなど各メーカーが独自の開発環境を提供しているが、基本的な概念は共通
まとめ
ラダー言語はIEC 61131-3規格で定義されたPLC専用のグラフィカルプログラミング言語であり、電気回路図に似た接点とコイルの記号でシーケンス制御ロジックを視覚的に表現します。
PLCはスキャンサイクル(入力更新→ラダープログラム実行→出力更新)を繰り返すことでラダー言語のプログラムを実行しており、すべての処理はAND・OR・NOTのブール論理演算として処理されます。
IEC 61131-3の他の言語(ST・FBD・IL・SFC)と比較するとラダー言語は視覚的な直感性とデバッグのしやすさに優れる一方、複雑な演算処理や大規模プログラムの管理では他の言語が優位な場面もあります。
現代のPLC開発環境ではラダー言語を中心に複数の言語を組み合わせるマルチ言語アプローチが普及しており、用途に応じた言語の使い分けが設計の質を向上させます。
ラダー言語の仕組みと特徴を深く理解することが、効率的なPLCプログラミングと安定した製造現場の構築につながるでしょう。