よくあるお問い合わせ(FAQ)
プログラム関連 (IEC言語)
- Q1IEC61131-3とは何ですか?
- Q2IEC61131-3対応言語のうち、統合コントローラVシリーズで対応しているものはどれですか?
- Q3CPUモジュールで、IEC61131-3をサポートしているものはどれですか?
- Q4各CPUモジュールで、IEC言語の命令語のサポート内容は同じですか?
- Q5未サポートの命令を使用してプログラムを作成したとき、エンジニアリングツールおよびCPUモジュールの動作はどうなりますか?
- Q6アプリケーションプログラムはどのような構成になっていますか?
- Q7タスクとは何ですか?
- Q8POU(プログラム構成単位)とは何ですか?
- Q9プログラム容量の考え方はどのようになっているのですか?
- Q10SFCとは何ですか?
- Q11ファンクションとは何ですか?
- Q12ファンクションブロックとは何ですか?
- Q13インデックスレジスタとは何ですか?
IEC61131-3はコントローラを動作するプログラム言語として国際標準規格となっているものです。プログラム記述言語として、
- ラダーダイアグラム (LD)
- シーケンシャルファンクションチャート (SFC)
- ファンクションブロックダイアグラム (FBD)
- ストラクチャードテキスト (ST)
- インストラクションリスト (IL)
の5言語を規程しています。
また
- データやI/O信号などに任意の変数名を設定して自由にプログラムが作成
- 機能をファンクションブロックとして作成し、ぷろぐらむ再利用が容易
- ファンクションブロックの組合わせによる階層化したプログラムが可能
といった特長により、ハードウェアに依存しないプログラム作成ができるようになりました。
IEC61131-3で規程している5言語のうち、LD、SFC、FBDが対応されています。
SモジュールおよびLモジュールです。Cモジュールはサポートしていません。
CPUモジュールにより命令語のサポート内容は異なります。詳しいサポート内容は「命令語説明書」(6E8C3787)の「1.9 命令語一覧表」をご覧下さい。
- 1. エンジニアリングツールでは、プログラムのコンパイルは正常完了します。
- 2. Sモジュールの場合、エンジニアリングツールからモジュールへプログラムのダウンロードは行なわれません。
- 3. Lモジュールの場合、エンジニアリングツールからモジュールへプログラムのダウンロードが行なわれ、モジュール実行時にエラーダウンまたはプログラム縮退が起きます。
アプリケーションプログラムは タスク、プログラム、ファンクション/ファンクションブロックの3層構造です。
タスクは複数のプログラムから構成され、 プログラムは複数ファンクション/ファンクションブロックから構成されます。
タスクはプログラムの実行単位を表します。タスク内に任意のプログラムを登録することで、プログラムを実行することができます。
POUは複数の命令語から構成されるプログラム管理上の最小単位で、プログラム、ファンクション、ファンクションブロックと呼ばれるものです。
プログラム容量は、ステップ数という単位でカウントします。ここでいうステップとは、命令語を構成する最小単位です。例えば、a接点=1ステップ、立ち上がり接点=2ステップ などと決まっています。(ステップ数の詳細は、「命令語説明書」(6E8C3787) 「1.7 ステップ数の計算」、「1.9 命令語一覧表」をご覧下さい。)
従って、プログラムのサイズは使用している命令語のステップ数の合計となります。
SFCはシーケンシャル・ファンクション・チャート(Sequential Function Chart)の略で、PLCのプログラム言語の1種としてIEC規格及びJIS規格に規定されています。工程歩進制御の記述に優れており、工程間の遷移条件と工程内での処理を明確に分離して記述できるため、運転仕様からのブレークダウンがしやすく、プログラムの可読性が高いという特長があります。
ファンクションは、ある特定の値を入力すると、一つの結果を出力します。同じ入力値なら毎回同じ結果が出力されます。算術演算命令などがこれにあたります。
ファンクションブロックは、ある値を入力すると、一つ以上の結果を出力します。同じ入力値でも毎回同じ結果が出力されるとは限りません。タイマー命令などがこれにあたります。
インデックスレジスタは、レジスタ(データメモリ)のアドレスを間接的に指定する場合に使用する特別なレジスタで、インデックスレジスタを使用して間接的にアドレスを指定することをインデックス修飾と言います。
インデックスレジスタとして、XI,XJ,XK,XL,XM,XN,XP,XQの8つ(S2TはI、J、Kの3つ)が準備されています。インデックス修飾及びインデックスレジスタへの値の代入は1スキャン中に何度行ってもかまいません。(インデックス修飾を行う命令の直前で行うことをお勧めします)