IEC 61131-3は1993年に初版が発行され、2003年に第2版に改訂、そして2013年に第3版への改訂が行われました。第3版では、異なるPLCベンダ間でのプログラム移植性を高めるためのいくつかの基本データ型、標準ファンクション、標準ファンクションブロックが追加されました。さらにオブジェクト指向拡張や名前空間の導入といったプログラミング言語機能の拡張が行われました。
原則としてこれら第3版における言語拡張は、第2版の言語仕様に対する後方互換性が保たれています。第2版の言語仕様に基づいて記述されたアプリケーション・プログラムは、第3版に対応した実行環境においてもそのまま同じ振る舞いをします。そのため、ユーザは新しい言語要素を知らなくても従来の言語仕様に沿ってプログラミングを行えるようになっています。
第2版から第3版での主な改訂点は次の通りです。
オブジェクト指向拡張
- クラス(CLASS)とメソッド(METHOD)の導入
- インタフェース(INTERFACE)とPOUによるその実装(IMPLEMENTS)の導入
- 継承(EXENDS)によるボディとメソッドのオーバーライド(OVERRIDE)の導入
- ファンクションブロックのオブジェクト指向拡張
名前空間(NAMESPACE)とアクセス限定子 INTERNALの追加
標準データ型の追加
- 64ビット精度時間型(LTIME, LTOD, LDT)、文字型(CHAR, WCHAR)追加
- 上記追加に伴う総称データ型(ANY_DURATION, ANY_CHARS, ANY_CHAR)の追加
標準ファンクション/ファンクションブロックの追加
- 追加されたデータ型を扱うファンクション群
- 型指定TRUNC命令, エンディアン変換命令, データ正当性確認命令, 三角関数ATAN2 など
ユーザ定義データ型に対する拡張
- 参照型の導入(型情報つきポインタ、算術演算は禁止)
- 入/出力変数において可変長配列型が利用可能に
- 列挙型の列挙子に基本データ型と値を指定できるように拡張
- 構造体型メンバに対する先頭からの相対アドレス指定(重複指定も可)
- ANY_BIT型変数へのドット”.”を用いた部分アクセス記法の追加
その他の拡張
- コメント表記方法の拡張( //, /* */, コメントの入れ子の許容)
- ラダーにおける比較接点の追加
- ストラクチュアドテキスト(ST)におけるCONTINUE文の追加
- 戻り値のないファンクションの許容
- POUの再帰呼び出しが禁止ではなくベンダ実装依存に変更
- 代入に伴う暗黙型変換/明示的型変換ルールの明確化