PLCのモーション制御プログラム開発に貢献する「PLCopen Motion Control FB」。本連載ではMotion Control FBについてより深く掘り下げ、解説していく。第1回は共通仕様と単軸の位置決め制御について取り上げる。
PLCopenのMotion Control FBとは、IEC 61131-3準拠のPLC(Programmable Logic Controller)で使用するモーション制御用ファンクションブロックのことです。
以前の連載「PLCの国際標準プログラミング入門」において、第4回で『PLCopenの「Motion Control FB」とは』を取り上げました。この中で、ハードウェア依存部を排除し動作仕様やインタフェース仕様を標準化することにより「再利用性を向上させること」「ユーザーのトレーニングコストを低減させること」が「Motion Control FB(ファンクションブロック)」の狙いであることを説明しました。
相対位置決めを例に、Motion Control FBをサポートしていないPLC(図1)と、サポートしているPLC(図2)のプログラムを比較してみます。
図1では、W012、W010.01といったメモリアドレスをプログラム中に記述しています。慣れた方には実装しやすいプログラミング方法であるもののメモリアドレスを意識する必要があります。一方、図2はメモリアドレスを意識する必要もなく、メモリアドレス変更時でもプログラムに影響しないため、プログラムの再利用性が向上します。また、プログラムの視認性が高まること、IEC 61131-3 に準拠した変数が使用できることもMotion Control FBのメリットだといえます。
この例からMotion Control FBの狙いやメリットを理解してもらえると思います。しかし本記事の読者の多くは、より複雑な制御をする場合にMotion Control FBをどのように使うのか知りたいのではないでしょうか。
そこで今回から4回にわたって、Motion Control FBを用いたモーション制御プログラムの事例を紹介しながら、Motion Control FBの狙いやメリットをより具体的に紹介していきます。第1〜3回まではMotion Control FBの代表的な機能の紹介とともに、Motion Control FBを適用したプログラム事例を紹介します。第4回は、PLCベンダー間でのプログラムの移植性について紹介します。初回となる今回は、Motion Control FBの共通仕様と単軸の位置決めについて説明します。
内容 | |
---|---|
第1回 | Motion Control FBの共通仕様と単軸の位置決め制御 |
第2回 | 同期制御と補正 |
第3回 | 多軸協調制御 |
第4回 | PLCベンダー間でのプログラム再利用性 |
本連載で紹介するプログラム事例は特に断りがない限り、PLCopen Motion Control FBの技術仕様書に記載された範囲内で実現できるものです※1)。
※1)技術仕様書の実現内容は各PLCベンダーに依存します。本連載で紹介するプログラム事例、動作事例が各ベンダーのPLCopen認証Motion Control FBで実現できることを保証するものではありません。
技術仕様書では、各FBのインタフェースの他、Motion Control FBの共通仕様も記載されています。今回は、FBのインタフェースの振る舞いとバッファモードについて紹介します。
各FBのインタフェース(入力/出力の変数)のうち、代表的な変数を表1に紹介します。また、これらの変数のTRUE/FALSEのタイミングチャートを図3に示します。
FBはExecuteの立ち上がりエッジで起動され、BusyがTRUEとなります。FBが制御状態になると、ActiveもTRUEになります。FBが正常完了するとDoneがTRUEとなり、BusyやActiveはFALSEになります。
図3の(a)(c)(d)のようにExecuteがTRUEの状態でDone、Command Aborted、ErrorがTRUEになった場合、Executeの立下りでこれらはFALSEになります※2)。もし(b)のように、ExecuteがFALSEの状態でこれらの変数がTRUEになった場合、Doneなどは1サイクルだけTRUEとなります。
※2)オムロン製NJシリーズでは、エラーリセットが完了するまでErrorのTRUEを継続する仕様です。
バッファモードとは、複数のFBを連続的に動作させる場合や、実行中のFBを中断し次のFBを実行する場合に使用する機能です。FB1が実行中の命令、FB2が次に実行される命令のとき、FB2の入力変数“BufferMode”にMC_BUFFER_MODE型の列挙子を指定します。
バッファモードの定義を表2に紹介します。
Copyright © ITmedia, Inc. All Rights Reserved.