1. TOP
  2. PLC
  3. IEC61131-3
2026/06/04

IEC61131-3とは

IEC 61131-3 は、PLC(Programmable Logic Controller)のプログラミング言語を標準化した国際規格です。

PLCメーカーごとに異なっていたプログラム記述方法を統一し、プログラムの再利用性や保守性を向上させることを目的としています。

5つの標準プログラミング言語

グラフィック言語

LD (Ladder Diagram / ラダー図)

リレー回路をベースにした言語です。

FBD (Function Block Diagram / ファンクションブロック図)

ブロックと信号線を結んで処理を表現する言語です。

SFC (Sequential Function Chart)

プロセスの「工程(ステップ)」と「移行条件」をフローチャートのように記述する言語です。

テキスト言語

ST (Structured Text / ストラクチャードテキスト)

C言語やPascalに似た高、中級言語。複雑な数値計算、データ処理(配列・文字処理)、条件分岐(IF文、FOR文など)を省スペースでスマートに記述できます。

IL (Instruction List / インストラクションリスト)

いわゆるニモニックです。アセンブリ言語に似た低級言語です。

使い分け

基本はLD(ラダー)とFBD(FUN,FB)を組み合わせてプログラミングします
よく使う処理をまとめてモジュール化することで再利用できるようになります。 モジュール化(自作のFUNまたはFB)すると社内の共有資産として使いまわすことができ、不具合時にモジュールを改修することで使用しているプログラムの全てが改修できるため品質も上昇します
ST言語は、複雑な数値計算やデータ処理(配列、文字列処理)、繰り返し処理(For文)、条件分岐(IF文)などは見やすく記述できるため分かりやすくなります

データ型

基本型

データ型
分類サイズ
ブールBOOLTRUE/FALSE
ビット列BYTE8bit
WORD16bit
DWORD32bit
LWORD64bit
整数型SINT8bit
INT16bit
DINT32bit
LINT64bit
USINT8bit
UINT16bit
UDINT32bit
ULINT64bit
実数型REAL32bit
LREAL64bit
STRING文字数 + NULL

日付型

データ型
分類サイズ
時間型TIME64bit
日付型DATE64bit
時刻型TIME_OF_DAY64bit
日付時刻型DATE_AND_TIME64bit

配列

分類記述例
INT型配列 要素数100ARRAY[0..99] OF INT

構造体

名称データ型
mySTRUCTSTRUCT
mem1DINT
mem2INT
mem3STRING

共用体

名称データ型
myUNIONUNION
mem1ARRAY[0..3] OF BYTE
mem2ARRAY[0..1] OF WORD
mem3DWORD

列挙型

名称
myENUM
right1
left2
center3

変数のスコープ

ローカル

POU内だけで使用する変数

グローバル変数

全体で使用できる変数

入力変数

外部ネットワークから書き込める変数

出力変数

外部ネットワークから読み出せる変数

入出力変数

外部ネットワークから読み書きできる変数

FUNとFB

ファンクション FUN

動作

ファンクションは入力がONすると実行して結果を返します。入力値や出力値は状態を保持しません。

標準のFUN例

  • MOV
  • SHL
  • Decoder
  • など

ファンクションブロック FB

動作

ファンクションブロックはファンクションブロック本体(親)をもとにインスタンス(子)が作成されます。
インスタンスは個別に扱われ複数のインスタンスを作成した場合は別々の動作をします。
ファンクションと異なり毎スキャン実行されることに注意してください。

標準のFB例

  • TON
  • PIDAT
  • SktUDPCreate
  • FileOpen
  • など

メーカー間の互換性

リレー回路のような接点と出力だけであればメーカー依存はありません。
しかし、FBやFUNはメーカーによって実装状況や名称が多少異なります。
以下はIEC61131-3準拠のFUNとFBの一部です

ファンクション

算術

  • ADD, SUB, MUL, DIV, MOD : 加算・減算・乗算・除算・剰余
  • ABS : 絶対値
  • SQRT : 平方根
  • SIN, COS, TAN, ASIN, ACOS, ATAN : 三角関数
  • EXPT : べき乗
  • LN, LOG : 対数

ビット演算

  • AND, OR, XOR, NOT : ビットごとの論理演算
  • SHL, SHR : ビットの左シフト・右シフト
  • ROR, ROL : ビットの右ローテート・左ローテート

データ型変換

  • INT_TO_UDINT など : 任意のデータ型から別の型へ変換
  • INT_TO_REAL, REAL_TO_INT : 整数と実数間の変換
  • BCD_TO_INT, INT_TO_BCD : BCDコードと整数間の変換

選択・比較

  • MOVE : 値の代入
  • EQ, NE, GT, GE, LT, LE : 比較演算
  • LIMIT : 値の上下限制御
  • MAX, MIN : 複数の値から最大・最小を選択
  • MUX : マルチプレクサ

文字列操作

  • LEN : 文字列の長さを取得
  • CONCAT : 文字列の結合
  • INSERT : 文字列の挿入
  • DELETE : 文字列の削除
  • REPLACE : 文字列の置換
  • FIND : 文字列の検索

ファンクションブロック

タイマ・カウンタ

  • TON, TOF, TP, CTU, CTD, CTUD : オンディレイタイマ・オフディレイタイマ・パルスタイマ・アップカウンタ・ダウンカウンタ・アップダウンカウンタ

この記事へのコメント