IEC 61131-3 は、PLC(Programmable Logic Controller)のプログラミング言語を標準化した国際規格です。
PLCメーカーごとに異なっていたプログラム記述方法を統一し、プログラムの再利用性や保守性を向上させることを目的としています。
リレー回路をベースにした言語です。
ブロックと信号線を結んで処理を表現する言語です。
プロセスの「工程(ステップ)」と「移行条件」をフローチャートのように記述する言語です。
C言語やPascalに似た高、中級言語。複雑な数値計算、データ処理(配列・文字処理)、条件分岐(IF文、FOR文など)を省スペースでスマートに記述できます。
いわゆるニモニックです。アセンブリ言語に似た低級言語です。
基本はLD(ラダー)とFBD(FUN,FB)を組み合わせてプログラミングします
よく使う処理をまとめてモジュール化することで再利用できるようになります。
モジュール化(自作のFUNまたはFB)すると社内の共有資産として使いまわすことができ、不具合時にモジュールを改修することで使用しているプログラムの全てが改修できるため品質も上昇します
ST言語は、複雑な数値計算やデータ処理(配列、文字列処理)、繰り返し処理(For文)、条件分岐(IF文)などは見やすく記述できるため分かりやすくなります
| 分類 | データ型サイズ | |
|---|---|---|
| ブール | BOOL | TRUE/FALSE |
| ビット列 | BYTE | 8bit |
| WORD | 16bit | |
| DWORD | 32bit | |
| LWORD | 64bit | |
| 整数型 | SINT | 8bit |
| INT | 16bit | |
| DINT | 32bit | |
| LINT | 64bit | |
| USINT | 8bit | |
| UINT | 16bit | |
| UDINT | 32bit | |
| ULINT | 64bit | |
| 実数型 | REAL | 32bit |
| LREAL | 64bit | |
| STRING | 文字数 + NULL |
| 分類 | データ型サイズ | |
|---|---|---|
| 時間型 | TIME | 64bit |
| 日付型 | DATE | 64bit |
| 時刻型 | TIME_OF_DAY | 64bit |
| 日付時刻型 | DATE_AND_TIME | 64bit |
| 分類 | 記述例 |
|---|---|
| INT型配列 要素数100 | ARRAY[0..99] OF INT |
| 名称 | データ型 | |
|---|---|---|
| mySTRUCT | STRUCT | |
| mem1 | DINT | |
| mem2 | INT | |
| mem3 | STRING | |
| 名称 | データ型 | |
|---|---|---|
| myUNION | UNION | |
| mem1 | ARRAY[0..3] OF BYTE | |
| mem2 | ARRAY[0..1] OF WORD | |
| mem3 | DWORD | |
| 名称 | 値 | |
|---|---|---|
| myENUM | ||
| right | 1 | |
| left | 2 | |
| center | 3 | |
POU内だけで使用する変数
全体で使用できる変数
外部ネットワークから書き込める変数
外部ネットワークから読み出せる変数
外部ネットワークから読み書きできる変数
ファンクションは入力がONすると実行して結果を返します。入力値や出力値は状態を保持しません。
ファンクションブロックはファンクションブロック本体(親)をもとにインスタンス(子)が作成されます。
インスタンスは個別に扱われ複数のインスタンスを作成した場合は別々の動作をします。
ファンクションと異なり毎スキャン実行されることに注意してください。
リレー回路のような接点と出力だけであればメーカー依存はありません。
しかし、FBやFUNはメーカーによって実装状況や名称が多少異なります。
以下はIEC61131-3準拠のFUNとFBの一部です