本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
<A.適用例>
まず、図1を参照して、本発明が適用される場面の一例について説明する。図1は、本実施の形態に係る制御装置の適用例を説明するための模式図である。以下の説明においては、制御装置の一例として、主として、PLC(プログラマブルコントローラ)を想定する。
本実施の形態に係る制御装置60は、工業製品の生産ラインや物流システムにおける搬送装置などに適用され得る。たとえば、図1に示す物流システムにおいては、X方向に向けてワーク350を搬送するコンベア301、およびY方向に向けてワーク350を搬送するコンベア302など、複数種類の搬送経路が設けられている。これらの搬送経路は、システム上、搬送速度が互いに異なる場合がある。この例においても、コンベア301と、コンベア302とでは、搬送速度が互いに異なる。
上述したような搬送方向および搬送速度が互いに異なる複数のコンベア301,302によってワーク350が搬送される。たとえば、コンベア301によってX方向にワーク350が搬送された後、切替ポイントPにおいて、コンベア301からコンベア302へとワーク350を搬送するコンベアが切り替わり、切替後においては、コンベア302によってY方向にワーク350が搬送される。
コンベアによって搬送されるワーク350に対しては、ロボット400が追従する。ロボット400は、先行動作するコンベア301によって搬送されるワーク350を追いかけ、やがてワーク350に追いつくと、コンベア301の動作と同期しながらワーク350を追従する。
コンベア301からコンベア302へとワーク350を搬送するコンベアが切り替わると、ロボット400は、先行動作するコンベア302によって搬送されるワーク350を再び追いかけ、やがてワーク350に追いつくと、コンベア302の動作と同期しながらワーク350を追従する。
ロボット400は、所定期間に亘ってコンベア302の動作と同期しながらワーク350を追従すると、図示しないアームでワーク350を掴み取り、目的の場所までワーク350を持ち運ぶ。
このように、物流システムにおいて、制御装置60は、コンベア301,302、およびロボット400の動作を制御するためのモーション制御を実行する。これにより、制御装置60は、先行動作するコンベア301,302によって搬送されるワーク350をロボット400に追いかけさせる「追いかけ動作」と、コンベア302の動作と同期しながらロボット400にワーク350を追従させる「同期動作」とを実現する。
図2は、モーション制御の概要を視覚的に説明するための模式図である。なお、図2に示す例において、モータ500およびモータ600は、図1に示すコンベア301,302を動作させる駆動源に対応する。すなわち、モータ500の主軸501やモータ600の主軸601は、コンベア301,302を動作させるモータの軸に対応する。また、モータ550およびモータ650は、図1に示すロボット400を動作させる駆動源に対応する。すなわち、モータ550の従動軸551やモータ650の従動軸651は、ロボット400を動作させるモータの軸に対応する。
図2(a)を参照しながらモーション制御によって実現される追いかけ動作(カム動作)について説明する。図2(a)に示すように、モータ500の軸である主軸501にはカム502が固定されており、主軸501の回転に伴いカム502が回転する。また、モータ550の軸である従動軸551には、カム502に接する接触子552が固定されており、カム502の回転に伴い接触子552が回転する。このような構成によれば、モータ500の駆動によって主軸501の位置(位相)が変化すると、従動軸551の移動量(変位,回転量)が変化する。
制御装置60は、主軸501の位置に対する従動軸551の移動量を特定するための特性データを、主軸501の種類に応じて予め記憶している。制御装置60は、動作中の主軸501の種類に応じて適切な特性データを選択し、選択した特性データに基づき、従動軸551に対する指令速度を決定する。
図2(b)を参照しながらモーション制御によって実現される同期動作(ギア動作)について説明する。図2(b)に示すように、モータ600の軸である主軸601にはギア602が固定されており、主軸601の回転に伴いギア602が回転する。また、モータ650の軸である従動軸651には、ギア602に係合するギア652が固定されており、ギア602の回転に伴いギア652が回転する。ギア602の歯数とギア652の歯数とから、ギア比(歯車比)が決定される。
制御装置60は、動作中の主軸601の速度にギア比を乗算することで、従動軸651に対する指令速度を決定する。
図1に示す例によると、制御装置60は、コンベアによって搬送されるワーク350をロボット400に追従させる追いかけ動作においては、コンベアの主軸の位置に対するロボット400の従動軸の移動量を特定するための特性データに基づき、ロボット400の従動軸の速度を決定し、決定した速度に基づきロボット400の従動軸を制御する。
また、制御装置60は、コンベアの動作と同期しながらロボット400にワーク350を追従させる同期動作においては、コンベアの主軸の速度にギア比を乗算することで、ロボット400の従動軸の速度を決定し、決定した速度に基づきロボット400の従動軸を制御する。
ここで、コンベア301からコンベア302へとワーク350を搬送するコンベアが切り替わることによって、主軸の速度がステップ状に変化する場合がある。具体的には、コンベア301を駆動させるモータの軸(主軸)から、コンベア302を駆動させるモータの軸(主軸)へと、ロボット400を駆動させるモータの軸(従動軸)の同期対象となる主軸が切り替わると、主軸の速度がステップ状に変化する。
追いかけ動作中や同期動作中において、主軸が切り替わることによって主軸の速度がステップ状に変化すると、主軸に追従する従動軸に対して機械的な衝撃が加わる虞がある。たとえば、図3は、主軸が切り替わった場合における主軸および従動軸の速度変化を示すタイミングチャートである。なお、図3では、同期動作中に主軸が切り替わった場合の例を示す。
図3においては、縦軸を速度、横軸を時間で表す。また、X方向にワーク350を搬送させる主軸Aの速度をV1x、Y方向にワーク350を搬送させる主軸Bの速度をV1yで表す。X方向にロボット400を動作させた場合の従動軸の速度をV2x、Y方向にロボット400を動作させた場合の従動軸の速度をV2yで表す。
図3に示すように、タイミングt0~t1の期間においては、主軸Aが動作する一方で主軸Bが動作していないため、主軸Aの速度V1xのみが生じる。これに対して、従動軸は、主軸の速度に所定のギア比を乗算した速度でX方向のみに動作する。
ここで、タイミングt1(たとえば、図1に示す切替ポイントPにワーク350が到達したタイミング)で主軸Aから主軸Bへと主軸が切り替わると、それ以降、主軸Bが動作する一方で主軸Aが動作しないため、主軸Bの速度V1yのみが生じる。主軸Aと主軸Bとでは速度が異なるため、主軸Aから主軸Bへと主軸が切り替わることで、主軸の速度がステップ状に変化する。さらに、主軸Aと主軸Bとでは動作方向が異なるため、主軸Aから主軸Bへと主軸が切り替わることで、主軸の動作方向が変化する。
これに対して、従動軸は、主軸の切り替えに追従するように、X方向からY方向へと動作方向を変更し、さらに、ステップ状に異なる速度に変化しようとする。その結果、従動軸、および従動軸に接続されるロボット400に対して機械的な衝撃が加わり、従動軸やロボット400が振動する虞がある。したがって、たとえば、図3に示すように、タイミングt1直後において、従動軸に対して、X方向と反対方向に振動が生じるとともに、Y方向にも振動が生じる。
なお、図3においては、同期動作中に主軸が切り替わった場合の例を示したが、追いかけ動作中に主軸が切り替わった場合においても、主軸の速度がステップ状に変化することで、従動軸に振動が生じる。
また、追いかけ動作中や同期動作中において、主軸が切り替わることに限らず、主軸が反転することも考えられる。主軸が反転することによって主軸の速度がステップ状に変化すると、主軸に追従する従動軸に対して機械的な衝撃が加わる虞がある。たとえば、図4および図5は、主軸が反転した場合における主軸および従動軸の速度変化を示すタイミングチャートである。なお、図4および図5では、同期動作中に主軸が反転した場合の例を示す。なお、図1に示す例を想定すると、主軸の反転としては、主軸がX方向に動作している場合にX方向とは反対の方向に反転する場合、あるいは、主軸がY方向に動作している場合にY方向とは反対の方向に反転する場合が想定される。
図4および図5においては、縦軸を速度、横軸を時間で表す。また、X方向またはY方向にワーク350を搬送させる主軸の速度をV1で表す。また、ワーク350に追従するようにしてX方向またはY方向にロボット400を動作させた場合の従動軸の速度をV2で表す。
図4および図5に示すように、タイミングt0~t1の期間においては、主軸がX方向またはY方向などの一定方向に動作している。これに対して、従動軸は、主軸の速度に所定のギア比を乗算した速度で主軸と同じ方向に動作する。
ここで、タイミングt1で主軸が反転すると、それ以降、主軸の速度が反転前とは逆方向の-V1方向に転じ、主軸の速度がステップ状に変化する。さらに、主軸が反転するため、主軸の動作方向が逆方向に変化する。その後、タイミングt2で主軸が再び反転すると、それ以降、主軸の速度が反転前とは逆方向のV1方向に生じ、主軸の速度がステップ状に変化する。さらに、主軸が反転するため、主軸の動作方向が逆方向に変化する。
これに対して、従動軸は、主軸の反転に追従するように、反転してステップ状に異なる速度に変化しようとする。その結果、従動軸、および従動軸に接続されるロボット400に機械的な衝撃が加わり、従動軸やロボット400が振動する虞がある。したがって、たとえば、図4および図5に示すように、タイミングt1直後およびタイミングt2直後において、従動軸に対して振動が生じる。
さらに、図5に示すように、主軸が反転した場合には、主軸自身に対しても振動が生じることがあるため、主軸に追従して動作する従動軸に対しても、やはり主軸の振動がそのまま生じる。
なお、図4および図5においては、同期動作中に主軸が反転した場合の例を示したが、追いかけ動作中に主軸が反転した場合においても、主軸の速度がステップ状に変化することで、従動軸に振動が生じる。
以上のように、主軸および従動軸の動作中に主軸の速度がステップ状に変化した場合、従動軸に振動が生じることがある。そこで、本実施の形態においては、制御装置60は、主軸および従動軸の動作中に主軸の速度がステップ状に変化した場合、主軸の速度変化に応じた他の特性データに、選択中の特性データを切り替えて、再び従動軸に追いかけ動作を行わせる。
たとえば、図1に示す例の場合、制御装置60は、X方向に向けて主軸が動作している間では、主軸の位置に対する従動軸の移動量を特定するための特性データのうちの特性データAに基づき従動軸に追いかけ動作を行わせる。その後、制御装置60は、X方向において同期動作を行っている間に切替ポイントPで主軸がY方向に切り替わると、今度は、特性データのうちの特性データBに基づき従動軸に追いかけ動作を行わせる。
このように、制御装置60は、予め記憶していた特性データの中から、主軸の種類や主軸の速度に応じて最適な特性データを選択し、選択した特性データに基づき従動軸を動作させることで、適切な速度指令値を従動軸に出力することができ、その結果、従動軸に生じる振動を抑えることができる。
以上、本実施の形態に係る制御装置60の適用例について説明した。以下では、より詳細に、本実施の形態に係る制御装置60の構成および処理について説明する。
<B.システム構成>
図6は、PLCシステムの概略構成を示す模式図である。図6に示すように、PLCシステムSYSは、PLC1と、フィールドネットワーク2を介してPLC1に接続されるサーボドライバ3およびリモートIOターミナル5と、フィールド機器である検出スイッチ6およびリレー7とを含む。また、PLC1には、接続ケーブル10およびHUB16を介してタッチディスプレイ17およびサポート装置8が接続される。
PLC1は、主たる演算処理を実行するCPUユニット13と、1つ以上のIOユニット14と、特殊ユニット15とを含む。これらのユニットは、PLCシステムバス11を介して、データを互いに遣り取りできるように構成されている。また、これらのユニットには、電源ユニット12によって適切な電圧の電源が供給される。なお、PLC1として構成される各ユニットは、PLCメーカーが提供するものであるので、PLCシステムバス11は、一般にPLCメーカーごとに独自に開発され、使用されている。これに対して、フィールドネットワーク2については、異なるメーカーの製品同士が接続できるように、その規格などが公開されている場合も多い。
CPUユニット13の詳細については、図7を参照して後述する。IOユニット14は、一般的な入出力処理に関するユニットであり、オン/オフといった2値化されたデータの入出力を司る。すなわち、IOユニット14は、検出スイッチ6などのセンサが何らかの対象物を検出している状態(オン)および何らの対象物も検出していない状態(オフ)のいずれであるかという情報を収集する。また、IOユニット14は、リレー7やアクチュエータといった出力先に対して、活性化するための指令(オン)および不活性化するための指令(オフ)のいずれかを出力する。
特殊ユニット15は、アナログデータの入出力、温度制御、特定の通信方式による通信といった、IOユニット14ではサポートしない機能を有する。
フィールドネットワーク2は、CPUユニット13と遣り取りされる各種データを伝送する。フィールドネットワーク2としては、典型的には、各種の産業用イーサネット(登録商標)を用いることができる。産業用イーサネット(登録商標)としては、たとえば、EtherCAT(登録商標)、Profinet IRT、MECHATROLINK(登録商標)-III、Powerlink、SERCOS(登録商標)-III、CIP Motionなどが知られており、これらのうちのいずれを採用してもよい。本実施の形態に係るPLCシステムSYSでは、典型的に、EtherCAT(登録商標)をフィールドネットワーク2として採用する場合の構成について例示する。
なお、図6に示す例では、PLCシステムバス11およびフィールドネットワーク2の両方を有するPLCシステムSYSを例示するが、一方のみを搭載するシステム構成を採用してもよい。たとえば、フィールドネットワーク2ですべてのユニットを接続してもよい。あるいは、フィールドネットワーク2を使用せずに、サーボドライバ3をPLCシステムバス11に直接接続してもよい。さらに、フィールドネットワーク2の通信ユニットをPLCシステムバス11に接続し、CPUユニット13から当該通信ユニット経由で、フィールドネットワーク2に接続された機器との間の通信を行うようにしてもよい。
サーボドライバ3は、フィールドネットワーク2を介してCPUユニット13に接続されるとともに、CPUユニット13からの指令値に従ってサーボモータ4を駆動する。具体的には、サーボドライバ3は、PLC1から一定周期で、位置指令値、速度指令値、トルク指令値といった指令値を受ける。また、サーボドライバ3は、サーボモータ4の軸(前述の主軸や従動軸)に接続されている位置センサ(ロータリーエンコーダ)やトルクセンサといった検出器から、位置、速度(典型的には、今回位置と前回位置との差から算出される)、およびトルクといったサーボモータ4の動作に係る実測値を取得する。そして、サーボドライバ3は、CPUユニット13からの指令値を目標値に設定し、実測値をフィードバック値として、フィードバック制御を行う。すなわち、サーボドライバ3は、実測値が目標値に近づくようにサーボモータ4を駆動するための電流を調整する。なお、サーボドライバ3は、サーボモータアンプと称されることもある。
また、図6では、サーボモータ4とサーボドライバ3とを組み合わせたシステム例を示すが、その他の構成、たとえば、パルスモータとパルスモータドライバとを組み合わせたシステムを採用することもできる。
PLCシステムSYSのフィールドネットワーク2には、さらに、リモートIOターミナル5が接続されている。リモートIOターミナル5は、基本的には、IOユニット14と同様に、一般的な入出力処理に関する処理を行う。具体的には、リモートIOターミナル5は、フィールドネットワーク2でのデータ伝送に係る処理を行うための通信カプラ52と、1つ以上のIOユニット53とを含む。これらのユニットは、リモートIOターミナルバス51を介して、データを互いに遣り取りできるように構成される。
CPUユニット13は、HUB16を介してタッチディスプレイ17またはサポート装置8から提供されるデータを参照して所定の処理を実行することで制御対象を制御する。タッチディスプレイ17は、PLCシステムSYSの設計者や作業者などのユーザによるデータの入力操作を受け付けるディスプレイであり、ユーザによるタッチ操作入力を受け付ける図示しないタッチパネルを設ける。
統合開発環境となり得るサポート装置8は、一例として、汎用的なアーキテクチャに従うハードウェア(たとえば、汎用パソコン)を用いてプログラムを実行することで実現される。サポート装置8は、図示しない光学ドライブを有しており、コンピュータで読み取り可能なプログラムを非一過的に格納する記録媒体9(たとえば、DVD(Digital Versatile Disc)などの光学記録媒体)から、その中に格納されたプログラムが読み取られてインストールされる。
サポート装置8で実行される各種プログラムは、記録媒体9を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードされる形でインストールされてもよい。また、本実施の形態に係るサポート装置8が提供する機能は、OSが提供するモジュールの一部を利用する形で実現される場合もある。
サポート装置8からCPUユニット13に対して提供されるデータには、制御対象を制御する際に用いられるプログラムやパラメータなどが含まれる。これらのデータは、PLCシステムSYSの設計者などによって作成される。
CPUユニット13によって実行される上述したプログラムには、ユーザプログラムおよびシステムプログラムが含まれる。ユーザプログラムは、制御対象に応じて任意に作成される命令の組み合わせであり、ユーザが任意に作成および修正可能である。ユーザプログラムは、典型的には、国際電気標準会議(International Electrotechnical Commission:IEC)によって規定された国際規格IEC61131-3に従って記述された一または複数の命令からなるソースコードを含む。
これに対して、システムプログラムは、ユーザプログラムを実行するための実行環境や、CPUユニット13に含まれるハードウェアの制御を実現するためのプログラムである。基本的には、システムプログラムは予めCPUユニット13にインストールされている。
CPUユニット13には、上位PC18が接続されている。上位PC18は、たとえば、データベース機能を有しており、CPUユニット13との間で必要なデータを遣り取りすることで、CPUユニット13が出力するイベントログなどを収集する。
<C.CPUユニットのハードウェア構成>
次に、図7を参照して、CPUユニット13のハードウェア構成について説明する。図7は、CPUユニット13のハードウェア構成を示す模式図である。
図7に示すように、CPUユニット13は、マイクロプロセッサ100と、チップセット102と、メインメモリ104と、不揮発性メモリ106と、システムタイマ108と、PLCシステムバスコントローラ120と、フィールドネットワークコントローラ140と、USBコネクタ110とを含む。チップセット102と他のコンポーネントとの間は、各種のバスを介してそれぞれ結合されている。
マイクロプロセッサ100およびチップセット102は、典型的には、汎用的なコンピュータアーキテクチャに準じて構成される。すなわち、マイクロプロセッサ100は、チップセット102から内部クロックに従って順次供給される命令コードを解釈して実行する。チップセット102は、接続されている各種コンポーネントとの間で内部的なデータを遣り取りするとともに、マイクロプロセッサ100に必要な命令コードを生成する。さらに、チップセット102は、マイクロプロセッサ100での演算処理の実行の結果得られたデータなどをキャッシュする機能を有する。
CPUユニット13は、記憶部として、メインメモリ104および不揮発性メモリ106を有する。
メインメモリ104は、揮発性の記憶領域(RAM)であり、CPUユニット13への電源投入後にマイクロプロセッサ100で実行されるべき各種プログラムを保持する。また、メインメモリ104は、マイクロプロセッサ100による各種プログラムの実行時の作業用メモリとしても使用される。このようなメインメモリ104としては、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)といったデバイスが用いられる。
一方、不揮発性メモリ106は、リアルタイムOS(Operating System)、PLC1のシステムプログラム、ユーザプログラム、モーション演算プログラム、システム設定パラメータといったデータを不揮発的に保持する。これらのプログラムやデータは、必要に応じて、マイクロプロセッサ100がアクセスできるようにメインメモリ104にコピーされる。このような不揮発性メモリ106としては、フラッシュメモリのような半導体メモリを用いることができる。あるいは、ハードディスクドライブのような磁気記録媒体や、DVD-RAM(Digital Versatile Disk Random Access Memory)のような光学記録媒体などを用いることもできる。
システムタイマ108は、一定周期ごとに割り込み信号を発生してマイクロプロセッサ100に提供する。典型的には、ハードウェアの仕様によって、複数の異なる周期でそれぞれ割り込み信号を発生するように構成されるが、OS(Operating System)やBIOS(Basic Input Output System)などによって、任意の周期で割り込み信号を発生するように設定することもできる。このシステムタイマ108が発生する割り込み信号を利用して、後述するようなモーション制御サイクルごとの制御動作が実現される。
CPUユニット13は、通信回路として、PLCシステムバスコントローラ120およびフィールドネットワークコントローラ140を有する。
PLCシステムバスコントローラ120は、PLCシステムバス11を介したデータの遣り取りを制御する。より具体的には、PLCシステムバスコントローラ120は、DMA(Dynamic Memory Access)制御回路122と、PLCシステムバス制御回路124と、バッファメモリ126とを含む。なお、PLCシステムバスコントローラ120は、PLCシステムバスコネクタ130を介してPLCシステムバス11と内部的に接続される。
バッファメモリ126は、PLCシステムバス11を介して他のユニットへ出力されるデータ(以下「出力データ」とも称す。)の送信バッファ、および、PLCシステムバス11を介して他のユニットから入力されるデータ(以下「入力データ」とも称す。)の受信バッファとして機能する。なお、マイクロプロセッサ100による演算処理によって作成された出力データは、原始的にはメインメモリ104に格納される。そして、特定のユニットへ転送されるべき出力データは、メインメモリ104から読み出されて、バッファメモリ126に一次的に保持される。また、他のユニットから転送された入力データは、バッファメモリ126に一次的に保持された後、メインメモリ104に移される。
DMA制御回路122は、メインメモリ104からバッファメモリ126への出力データの転送、および、バッファメモリ126からメインメモリ104への入力データの転送を行う。
PLCシステムバス制御回路124は、PLCシステムバス11に接続される他のユニットとの間で、バッファメモリ126の出力データを送信する処理および入力データを受信してバッファメモリ126に格納する処理を行う。典型的には、PLCシステムバス制御回路124は、PLCシステムバス11における物理層およびデータリンク層の機能を提供する。
フィールドネットワークコントローラ140は、フィールドネットワーク2を介したデータの遣り取りを制御する。すなわち、フィールドネットワークコントローラ140は、用いられるフィールドネットワーク2の規格に従い、出力データの送信および入力データの受信を制御する。フィールドネットワークコントローラ140は、DMA制御回路142と、フィールドネットワーク制御回路144と、バッファメモリ146とを含む。なお、フィールドネットワークコントローラ140は、PLCシステムバスコネクタ150を介してPLCシステムバス11と内部的に接続される。
DMA制御回路142は、メインメモリ104からバッファメモリ146への出力データの転送、および、バッファメモリ146からメインメモリ104への入力データの転送を行う。
フィールドネットワーク制御回路144は、フィールドネットワーク2に接続される他の装置との間で、バッファメモリ146の出力データを送信する処理および入力データを受信してバッファメモリ146に格納する処理を行う。典型的には、フィールドネットワーク制御回路144は、フィールドネットワーク2における物理層およびデータリンク層の機能を提供する。
USBコネクタ110は、サポート装置8とCPUユニット13とを接続するためのインターフェイスである。典型的には、サポート装置8から転送される、CPUユニット13のマイクロプロセッサ100で実行可能なプログラムなどは、USBコネクタ110を介してPLC1に取込まれる。
<D.CPUユニットのソフトウェア構成>
次に、図8を参照して、本実施の形態に係る各種機能を提供するためのソフトウェア群について説明する。これらのソフトウェアに含まれる命令コードは、適切なタイミングで読み出され、CPUユニット13のマイクロプロセッサ100によって実行される。図8は、CPUユニット13で実行されるソフトウェア構成を示す模式図である。
図8に示すように、CPUユニット13で実行されるソフトウェアとしては、リアルタイムOS200と、システムプログラム210と、ユーザプログラム236との3階層になっている。
リアルタイムOS200は、CPUユニット13のコンピュータアーキテクチャに応じて設計されており、マイクロプロセッサ100がシステムプログラム210およびユーザプログラム236を実行するための基本的な実行環境を提供する。このリアルタイムOSは、典型的には、PLCのメーカーあるいは専門のソフトウェア会社などによって提供される。
システムプログラム210は、PLC1としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム210は、スケジューラプログラム212と、出力処理プログラム214と、入力処理プログラム216と、シーケンス命令演算プログラム232と、モーション演算プログラム234と、その他のシステムプログラム220とを含む。なお、一般には出力処理プログラム214および入力処理プログラム216は、連続的(一体として)に実行されるので、これらのプログラムを、IO処理プログラム218と総称する場合もある。
ユーザプログラム236は、ユーザにおける制御目的に応じて作成される。すなわち、PLCシステムSYSを用いて制御する対象のライン(プロセス)などに応じて、任意に設計されるプログラムである。
ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム236は、シーケンス命令演算プログラム232およびモーション演算プログラム234によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。そのため、ユーザプログラム236、シーケンス命令演算プログラム232、およびモーション演算プログラム234を、制御プログラム230と総称する場合もある。
このように、CPUユニット13のマイクロプロセッサ100は、記憶部に格納されたシステムプログラム210およびユーザプログラム236を実行する。
次に、各プログラムについてより詳細に説明する。ユーザプログラム236は、上述したように、ユーザにおける制御目的(たとえば、対象のラインやプロセス)に応じて作成される。ユーザプログラム236は、典型的には、CPUユニット13のマイクロプロセッサ100で実行可能なオブジェクトプログラム形式になっている。このユーザプログラム236は、サポート装置8などにおいて、ラダー言語などによって記述されたソースプログラムがコンパイルされることで生成される。そして、生成されたオブジェクトプログラム形式のユーザプログラム236は、サポート装置8から接続ケーブル10を介してCPUユニット13へ転送され、不揮発性メモリ106などに格納される。
スケジューラプログラム212は、出力処理プログラム214、入力処理プログラム216、および制御プログラム230について、各実行サイクルでの処理開始および処理中断後の処理再開を制御する。より具体的には、スケジューラプログラム212は、ユーザプログラム236およびモーション演算プログラム234の実行を制御する。
出力処理プログラム214は、ユーザプログラム236(制御プログラム230)の実行によって生成された出力データを、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140へ転送するのに適した形式に再配置する。PLCシステムバスコントローラ120またはフィールドネットワークコントローラ140が、マイクロプロセッサ100からの、送信を実行するための指示を必要とする場合は、出力処理プログラム214がそのような指示を発行する。
入力処理プログラム216は、PLCシステムバスコントローラ120および/またはフィールドネットワークコントローラ140によって受信された入力データを、制御プログラム230が使用するのに適した形式に再配置する。
シーケンス命令演算プログラム232は、ユーザプログラム236で使用されるある種のシーケンス命令が実行されるときに呼び出されて、その命令の内容を実現するために実行されるプログラムである。
モーション演算プログラム234は、ユーザプログラム236による指示に従って実行され、サーボドライバ3やパルスモータドライバといったモータドライバに対して出力する指令値を算出するプログラムである。
その他のシステムプログラム220は、図8において個別に示したプログラム以外の、PLC1の各種機能を実現するためのプログラム群をまとめて示したものである。その他のシステムプログラム220は、モーション制御サイクルの周期を設定するプログラム222を含む。
モーション制御サイクルの周期は、制御目的に応じて適宜設定することができる。典型的には、モーション制御サイクルの周期を指定する情報をユーザがサポート装置8へ入力する。すると、その入力された情報は、サポート装置8からCPUユニット13へ転送される。モーション制御サイクルの周期を設定するプログラム222は、サポート装置8からの情報を不揮発性メモリ106に格納させるとともに、システムタイマ108から指定されたモーション制御サイクルの周期で割り込み信号が発生されるように、システムタイマ108を設定する。CPUユニット13への電源投入時に、モーション制御サイクルの周期を設定するプログラム222が実行されることで、モーション制御サイクルの周期を指定する情報が不揮発性メモリ106から読み出され、読み出された情報に従ってシステムタイマ108が設定される。
リアルタイムOS200は、複数のプログラムを時間の経過に従い切り換えて実行するための環境を提供する。
<E.モーション制御の概略>
次に、上述したユーザプログラム236に含まれる典型的な構成について説明する。ユーザプログラム236は、モータの運動に関する制御開始の条件が成立するか否かを周期的に判断させる命令を含む。たとえば、モータの駆動力によって何らかの処置がなされるワーク(たとえば、図1に示すワーク350)が所定の処置位置まで搬送されたか否かを判断するようなロジックである。そして、ユーザプログラム236は、この制御開始の条件が成立したと判断されたことに応答して、モーション制御を開始させる命令をさらに含む。このモーション制御の開始に伴って、モーション命令の実行が指示される。すると、指示されたモーション命令に対応するモーション演算プログラム234が起動し、まず、モーション演算プログラム234の実行ごとにモータに対する指令値を算出していくために必要な初期処理が実行される。また、初期処理と同じモーション制御サイクルにおいて、第1サイクルでの指令値が算出される。したがって、初期処理および第1番目の指令値算出処理が、起動したモーション演算プログラム234が第1番目の実行においてなすべき処理となる。以降、各サイクルでの指令値が順次算出される。
<F.制御装置の構成>
図9は、制御装置60の機能構成を示す模式図である。ここでは、主軸として、主軸Aおよび主軸Bが制御装置60によって制御されるとともに、従動軸として、従動軸Aおよび従動軸Bが制御装置60によって制御される例を説明する。また、主軸Aサーボドライバ31および主軸Aサーボモータ41は、それぞれ主軸Aに接続されたサーボドライバおよびサーボモータであり、図6に示したサーボドライバ3およびサーボモータ4に対応する。主軸Bサーボドライバ32および主軸Bサーボモータ42は、それぞれ主軸Bに接続されたサーボドライバおよびサーボモータであり、図6に示したサーボドライバ3およびサーボモータ4に対応する。さらに、従動軸Aサーボドライバ33および従動軸Aサーボモータ43は、それぞれ従動軸Aに接続されたサーボドライバおよびサーボモータであり、図6に示したサーボドライバ3およびサーボモータ4に対応する。従動軸Bサーボドライバ34および従動軸Bサーボモータ44は、それぞれ従動軸Bに接続されたサーボドライバおよびサーボモータであり、図6に示したサーボドライバ3およびサーボモータ4に対応する。
図9に示すように、制御装置60は、ネットワーク処理部61と、主軸A指令値演算部71と、主軸B指令値演算部72と、主軸速度変化検出部66と、取得部68と、主軸振動検出部67と、記憶部62と、選択部63と、算出部70と、フィルタ処理部78と、フィルタ処理部79とを備える。これらの構成要素は、制御プログラム230、モーション制御サイクルの周期を設定するプログラム222、およびスケジューラプログラム212などによって実現される。
ネットワーク処理部61は、図6を参照しながら説明したタッチディスプレイ17、上位PC18、およびサポート装置8に接続するためのインターフェイスである。
主軸A指令値演算部71は、主軸Aサーボドライバ31に対して速度指令値を出力する。主軸Aサーボドライバ31は、主軸A指令値演算部71からの速度指令値に従って主軸Aサーボモータ41を駆動する。これにより、主軸Aサーボモータ41の軸である主軸Aが、制御装置60からの速度指令値に基づく速度で動作(回転)する。
主軸B指令値演算部72は、主軸Bサーボドライバ32に対して速度指令値を出力する。主軸Bサーボドライバ32は、主軸B指令値演算部72からの速度指令値に従って主軸Bサーボモータ42を駆動する。これにより、主軸Bサーボモータ42の軸である主軸Bが、制御装置60からの速度指令値に基づく速度で動作(回転)する。
主軸A指令値演算部71および主軸B指令値演算部72は、ユーザプログラム236の実行、タッチディスプレイ17からの指令、サポート装置8からの指令、および上位PC18からの指令のうちの少なくともいずれかに基づいて、速度指令値を出力したり、あるいは速度指令値の出力を停止したりする。これにより、主軸が切り替わる。
たとえば、主軸A指令値演算部71から速度指令値が出力される一方で、主軸B指令値演算部72から速度指令値が出力されない状況において、主軸A指令値演算部71から速度指令値が出力されない一方で、主軸B指令値演算部72から速度指令値が出力される状況へと切り替わった場合、動作対象となる主軸が主軸Aから主軸Bに切り替わる。また、主軸A指令値演算部71から速度指令値が出力されない一方で、主軸B指令値演算部72から速度指令値が出力される状況において、主軸A指令値演算部71から速度指令値が出力される一方で、主軸B指令値演算部72から速度指令値が出力されない状況へと切り替わった場合、動作対象となる主軸が主軸Bから主軸Aに切り替わる。このように、主軸A指令値演算部71および主軸B指令値演算部72は、主軸を切り替える「切替部」の一実施形態に対応する。
ここで、図10は、主軸の切り替えについて説明するための模式図である。図10に示すように、制御装置60は、CPUユニット13によって実現されるものであり、HUB16を介して、タッチディスプレイ17、サポート装置8、および上位PC18のそれぞれに接続されている。タッチディスプレイ17においては、プルダウンボタン17aが操作されることによって、主軸Aおよび主軸Bのいずれかを選択可能である。同様に、サポート装置8においては、プルダウンボタン8aが操作されることによって、主軸Aおよび主軸Bのいずれかを選択可能である。
このように、タッチディスプレイ17やサポート装置8を用いることで、ユーザは、手動で主軸を切り替えることができる。
上位PC18は、切替条件が成立したときに主軸を切り替えるためのプログラム18aを実行するように構成されている。たとえば、プログラム18aにおいては、主軸A(SlaveA)が目標の切替ポイント(たとえば、図1に示す切替ポイントP)に対応する位置の値(1000)を超えた場合に、主軸B(MasterB)が選択されるようになっている。同様に、制御装置60が実行するユーザプログラム236においては、主軸A(SlaveA)が目標の切替ポイント(たとえば、図1に示す切替ポイントP)に対応する位置の値(1000)を超えた場合に、主軸B(MasterB)が選択されるようになっている。
このように、上位PC18や制御装置60によってプログラムが実行されることで、自動で主軸を切り替えることができる。
図9に戻り、主軸A指令値演算部71は、さらに、ユーザプログラム236の実行、タッチディスプレイ17からの指令、上位PC18からの指令、およびサポート装置8からの指令のうちの少なくともいずれかに基づいて、主軸Aを反転させるための速度指令値を出力することも可能である。たとえば、主軸A指令値演算部71から出力される速度指令値が主軸Aの現在速度とは反対の速度ベクトルを有する速度であれば、主軸Aが反転する。また、主軸B指令値演算部72は、ユーザプログラム236の実行、タッチディスプレイ17からの指令、上位PC18からの指令、およびサポート装置8からの指令のうちの少なくともいずれかに基づいて、主軸Bを反転させるための速度指令値を出力することも可能である。たとえば、主軸B指令値演算部72から出力される速度指令値が主軸Bの現在速度とは反対の速度ベクトルを有する速度であれば、主軸Bが反転する。このように、主軸A指令値演算部71および主軸B指令値演算部72は、主軸の動作方向を反転させる「反転部」の一実施形態に対応する。
制御装置60においては、主軸A指令値演算部71からの速度指令値を検出する経路と、主軸Aサーボモータ41からの出力値を主軸Aのフィードバック現在値として検出する経路との間で検出経路を切り替える切替スイッチ73が設けられている。また、制御装置60においては、主軸B指令値演算部72からの速度指令値を検出する経路と、主軸Bサーボモータ42からの出力値を主軸Bのフィードバック現在値として検出する経路との間で検出経路を切り替える切替スイッチ74が設けられている。
切替スイッチ73および切替スイッチ74は、それぞれ切替スイッチ65に接続されている。切替スイッチ65は、ユーザプログラム236の実行、タッチディスプレイ17からの指令、上位PC18からの指令、およびサポート装置8からの指令のうちの少なくともいずれかに基づいて、主軸Aに対応する経路と、主軸Bに対応する経路との間で、主軸速度変化検出部66に至る経路を切り替える。たとえば、主軸Aが動作している一方で、主軸Bが動作していない場合、切替スイッチ65は、主軸Aに対応する経路と主軸速度変化検出部66に至る経路とを接続させる。また、主軸Aが動作していない一方で、主軸Bが動作している場合、切替スイッチ65は、主軸Bに対応する経路と主軸速度変化検出部66に至る経路とを接続させる。
主軸速度変化検出部66は、主軸の速度変化を検出することで主軸の切り替えや反転を検出する。具体的には、主軸速度変化検出部66は、主軸A指令値演算部71からの速度指令値または主軸Aサーボモータ41からのフィードバック現在値に基づき、主軸の速度がステップ状に変化したか否かを判定することで、主軸Aが切り替わったか否かを判定する。
主軸の速度がステップ状に変化したか否かの判定については、主軸の速度の変化量や変化率が閾値を超えたか否かを判定してもよい。たとえば、主軸の速度の変化率で判定する場合、V[t]/V[t-1]>αの式を用いればよい。ここで、V[t]は、時刻tにおける主軸の速度であり、V[t-1]は、時刻t-1における主軸の速度である。また、αは、閾値であり、制御装置60が適用される搬送装置などの条件によって任意に設定可能である。たとえば、図1の例の場合、コンベア301,302における主軸まわりの力のモーメントに基づきαが設定されてもよい。また、主軸速度変化検出部66は、主軸Aに対応する経路に接続された状態から、主軸Bに対応する経路に接続された状態へと切替スイッチ65によって経路が切り替えられたことを検出した場合、主軸Aから主軸Bへと主軸が切り替えられたと判断してもよい。また、主軸速度変化検出部66は、主軸Bに対応する経路に接続された状態から、主軸Aに対応する経路に接続された状態へと切替スイッチ65によって経路が切り替えられたことを検出した場合、主軸Bから主軸Aへと主軸が切り替えられたと判断してもよい。
さらに、主軸速度変化検出部66は、主軸A指令値演算部71からの速度指令値または主軸Aサーボモータ41からのフィードバック現在値に基づき、主軸Aが反転したか否かを判定する。また、主軸速度変化検出部66は、主軸B指令値演算部72からの速度指令値または主軸Bサーボモータ42からのフィードバック現在値に基づき、主軸の速度がステップ状に変化したか否かを判定することで、主軸Bが反転したか否かを判定する。
主軸の速度がステップ状に変化したか否かの判定については、主軸の速度の変化量や変化率が閾値を超えたか否かを判定してもよい。たとえば、主軸の速度の変化率で判定する場合、上述したように、V[t]/V[t-1]>αの式を用いればよい。また、主軸速度変化検出部66は、速度が2進数で表現されている場合には正負を示す符号を用いて主軸が反転したか否かを判定してもよい。たとえば、主軸速度変化検出部66は、V[t-1]<0、かつV[t]≧0であれば、速度ベクトルの正方向に主軸が反転したと判断し、V[t-1]≧0、かつV[t]<0であれば、速度ベクトルの負方向に主軸が反転したと判断してもよい。
取得部68は、制御周期ごとに主軸の現在の速度を取得する。具体的には、取得部68は、主軸A指令値演算部71からの速度指令値または主軸Aサーボモータ41からのフィードバック現在値に基づき、主軸Aの現在の速度を取得し、取得した主軸Aの速度をカム演算部75に出力する。また、取得部68は、主軸B指令値演算部72からの速度指令値または主軸Bサーボモータ42からのフィードバック現在値に基づき、主軸Bの現在の速度を取得し、取得した主軸Bの速度をカム演算部75に出力する。
主軸振動検出部67は、主軸の振動を検出する。具体的には、主軸振動検出部67は、主軸A指令値演算部71からの速度指令値または主軸Aサーボモータ41からのフィードバック現在値に基づき、主軸Aの速度が所定の上限値を超えたか否か、あるいは所定の下限値を下回ったか否かを判定する。また、主軸振動検出部67は、主軸B指令値演算部72からの速度指令値または主軸Bサーボモータ42からのフィードバック現在値に基づき、主軸Bの速度が所定の上限値を超えたか否か、あるいは所定の下限値を下回ったか否かを判定する。
ここで、図11は、主軸の振動検出について説明するためのタイミングチャートである。主軸の速度は、速度指令値に基づき理想的には一定だが、詳細には僅かながら変動する。このため、図11に示すように、振動による主軸の速度の振れを検出するために、主軸の種類や主軸に対する速度指令値に応じて、速度の上限値および下限値が設けられている。そして、主軸の速度が上限値を超えたり、下限値を下回ったりした場合、すなわち、主軸の速度の絶対値が限界値を超えた場合に、主軸振動検出部67は、主軸が振動していることを特定する。なお、主軸振動検出部67は、主軸の速度の絶対値が1回でも限界値を超えた場合に、主軸が振動していることを特定してもよいが、所定期間内において主軸の速度の絶対値が限界値を超えた回数が予め定められた限界回数を超えた場合に、主軸が振動していることを特定してもよい。図11に示す例では、タイミングt1~t2の振動発生期間において、主軸の速度が上限値を超えた回数が予め定められた限界回数を超えている。よって、この場合、主軸振動検出部67は、主軸が振動していると判断する。
図9に戻り、主軸振動検出部67は、さらに、主軸が振動していると判断した場合、切替スイッチ73および切替スイッチ74のうち、動作中の主軸に対応する切替スイッチを切り替えることで、取得部68による取得対象を切り替える。
具体的には、主軸Aが動作中の場合、切替スイッチ65が主軸Aに対応する経路側に接続される。この場合において、主軸Aが振動していない場合には、切替スイッチ73が主軸A指令値演算部71の出力に接続される。よって、取得部68は、主軸A指令値演算部71からの速度指令値に基づき、主軸Aの現在の速度を取得する。一方、主軸Aが振動している場合には、切替スイッチ73が主軸Aサーボモータ41の出力に接続される。よって、取得部68は、主軸Aサーボモータ41からのフィードバック現在値に基づき、主軸Aの現在の速度を取得する。
主軸Bが動作中の場合、切替スイッチ65が主軸Bに対応する経路側に接続される。この場合において、主軸Bが振動していない場合には、切替スイッチ74が主軸B指令値演算部72の出力に接続される。よって、取得部68は、主軸B指令値演算部72からの速度指令値に基づき、主軸Bの現在の速度を取得する。一方、主軸Bが振動している場合には、切替スイッチ74が主軸Bサーボモータ42の出力に接続される。よって、取得部68は、主軸Bサーボモータ42からのフィードバック現在値に基づき、主軸Bの現在の速度を取得する。
記憶部62は、従動軸による追いかけ動作(カム動作)を実現するためのカムデータを記憶する。カムデータは、主軸の位置に対する従動軸の移動量を特定するためのデータである。記憶部62は、主軸の種類や速度に応じて、複数種類のカムデータを記憶する。なお、カムデータは、「特性データ」の一実施形態である。
ここで、図12は、カム曲線について説明するためのグラフである。図12に示すカム曲線は、記憶部62に記憶された複数のカムデータのうちの一のカムデータをグラフ化したものである。
図12に示すカム曲線では、横軸に主軸の位置が規定され、縦軸に従動軸の位置が規定されている。すなわち、カム曲線は、主軸の位置に対応する従動軸の位置が規定されている。主軸および従動軸の位置については、追いかけ動作の開始位置が0.000mm、同期動作の開始位置が1.000mmで表されている。ユーザは、タッチディスプレイ17やサポート装置8を用いることで、手動で同期動作の開始位置を指定することができる。このため、ユーザが指定した同期動作の開始位置に応じて、カム曲線は変化する。また、ユーザは、タッチディスプレイ17やサポート装置8を用いることで、カム曲線における横軸や縦軸のレンジを変更したり、傾き(従動軸の加速度や減速度)を変更したりすることができる。
本実施の形態において、カムデータは、データテーブルの形式で規定されている。以下では、カムデータが規定されたデータテーブルを、カムテーブルとも称する。図13は、カムテーブルのデータ構造を示す図である。
図13に示すように、カムテーブルには、主軸の位置に対して従動軸の位置を対応付けたデータが格納されている。カムテーブル格納されたデータを用いて直線補完すると、図12に示したカム曲線になる。
カムテーブルでは、主軸の位置が追いかけ動作開始位置となる0.000から、同期動作開始位置となる1.000に至るまでの所定間隔(たとえば、0.001刻み)ごとに、従動軸の目標位置が規定されている。また、その各データにおいてインデックスの番号が割り当てられている。このようなカムテーブルを用いることで、主軸の位置に対する従動軸の移動量を特定することが可能になる。記憶部62には、図13に示すようなカムテーブルが、主軸の種類や速度に応じて複数記憶されている。
なお、カムデータは、データテーブルの形式で規定されるものに限らず、1次式および多項式のいずれかに基づき規定されてもよい。たとえば、カムデータを多項式で表す場合、従動軸の移動量として以下の式を用いればよい。
f(x)=axn+bxn-1+cxn-2+…
ここで、“x”は主軸の位置、“n”は定数、“a”、“b”、および“c”は、係数である。
なお、一般的には、カム曲線として、直線、等加速度、およびサイクロイドなどが知られているが、本実施の形態においては、タッチディスプレイ17およびサポート装置8によって、ユーザがカム曲線の形式を選択可能である。たとえば、図14は、カム曲線の切り替えについて説明するための模式図である。
図14に示すように、タッチディスプレイ17においては、プルダウンボタン17bが操作されることによって、カム曲線として、直線、等加速度、およびサイクロイドのうちのいずれかを選択可能である。さらに、タッチディスプレイ17においては、項目17cに同期開始位置を入力することで、同期開始位置を指定することもできる。同様に、サポート装置8においては、プルダウンボタン8bが操作されることによって、カム曲線として、直線、等加速度、およびサイクロイドのうちのいずれかを選択可能である。さらに、サポート装置8においては、項目17cに同期開始位置を入力することで、同期開始位置を指定することもできる。なお、サポート装置8においては、カム曲線のグラフ17dも表示されるため、ユーザは、視覚的にカム曲線を設定することができる。
図9に戻り、選択部63は、記憶部62に記憶された複数のカムデータのうちからいずれかのカムデータを選択し、選択したカムデータを算出部70に出力する。
算出部70は、従動軸に対して指令する速度を速度指令値として算出する。従動軸Aを動作させる場合には、出力部81から従動軸Aサーボドライバ33に対して、算出部70によって算出された速度指令値が出力される。従動軸Bを動作させる場合には、出力部82から従動軸Bサーボドライバ34に対して、算出部70によって算出された速度指令値が出力される。
算出部70は、カム演算部75と、従動軸A同期演算部76と、従動軸B同期演算部77とを含む。
カム演算部75は、従動軸に対する指令速度に乗算するギア比を算出し、算出したギア比を、従動軸A同期演算部76または従動軸B同期演算部77に対して出力する。具体的には、カム演算部75は、追いかけ動作が行われている場合、制御周期ごとに取得部68によって取得された主軸の現在の速度に基づき主軸の現在の位置を特定する。カム演算部75は、カムデータを参照することで、主軸の現在の位置に対応する従動軸の目標位置を特定する。カム演算部75は、従動軸の現在の位置と、カムデータに基づき特定した従動軸の目標位置との差分から、次の制御周期において従動軸が動作するべき移動量を特定する。カム演算部75は、特定した移動量だけ次の制御周期において従動軸を動作させるためのギア比を算出する。カム演算部75は、従動軸Aが追いかけ動作中である場合には、従動軸A同期演算部76に対してギア比を出力する一方、従動軸Bが追いかけ動作中である場合には、従動軸B同期演算部77に対してギア比を出力する。
また、カム演算部75は、同期動作が行われている場合、制御周期ごとに取得部68によって取得された主軸の現在の速度に応じて予め決定されていた所定のギア比を算出する。カム演算部75は、従動軸Aが同期動作中である場合には、従動軸A同期演算部76に対して所定のギア比を出力する一方、従動軸Bが同期動作中である場合には、従動軸B同期演算部77に対して所定のギア比を出力する。
従動軸A同期演算部76または従動軸B同期演算部77は、制御周期ごとに取得部68によって取得された主軸の現在の速度に、カム演算部75から取得したギア比を乗算して従動軸の速度を算出し、当該速度を示す速度指令値を、出力部81または出力部82を介して従動軸Aサーボドライバ33または従動軸Bサーボドライバ34に出力する。
前述したように、主軸振動検出部67によって主軸の振動が検出されていない場合には、取得部68が主軸に対する速度指令値に基づき主軸の速度を取得するため、従動軸A同期演算部76および従動軸B同期演算部77は、速度指令値に基づき従動軸の速度を算出する。一方、主軸振動検出部67によって主軸の振動が検出されている場合には、取得部68が主軸のフィードバック現在値に基づき主軸の速度を取得するため、従動軸A同期演算部76および従動軸B同期演算部77は、フィードバック現在値に基づき従動軸の速度を算出する。つまり、従動軸は、主軸が振動していない場合には、主軸に対する速度指令値に基づき主軸に同期し、主軸が振動している場合には、主軸のフィードバック現在値に基づき主軸に同期する。
フィルタ処理部78は、従動軸A同期演算部76から出力された従動軸の速度指令値に対してフィルタ処理を行う。フィルタ処理部78によってフィルタ処理を行うか否かは、従動軸A同期演算部76の出力に設けられた切替スイッチ83によって切替可能である。フィルタ処理部78によってフィルタ処理が行われた場合、フィルタ処理後の速度指令値が従動軸Aサーボドライバ33に出力される。
フィルタ処理部79は、従動軸B同期演算部77から出力された従動軸の速度指令値に対してフィルタ処理を行う。フィルタ処理部79によってフィルタ処理を行うか否かは、従動軸B同期演算部77の出力に設けられた切替スイッチ84によって切替可能である。フィルタ処理部79によってフィルタ処理が行われた場合、フィルタ処理後の速度指令値が従動軸Bサーボドライバ3に出力される。
ここで、フィルタ処理について説明する。前述したように、本実施の形態においては、主軸が切り替えられたり、主軸が反転したりした場合に、ユーザプログラム236に基づき選択部63によってカムデータが切り替えられるが、これ以外にも、ユーザは、タッチディスプレイ17、上位PC、およびサポート装置8によって、選択するカムデータを指定したり、選択中のカムデータを切り替えたりすることができる。
仮に、追いかけ動作中においてカムデータが他のカムデータに切り替えられた場合、カムデータが切り替えられた制御周期内では、従動軸の位置が急激に変化することがある。特に、切り替え前のカムテーブルと、切り替え後のカムテーブルとで、従動軸の位置が大きく異なる場合に、このような事態が生じ得る。従動軸の位置において急激な変化が生じた場合、従動軸のサーボドライバがハンチングする虞がある。そこで、カムデータの切り換えが行われた制御周期においては、カムデータ切り換え時に発生する従動軸における位置の急激な変化を抑制するように、従動軸の移動量を滑らかに変化させるためのフィルタ処理を行うことが好ましい。
具体的には、フィルタ処理は、平滑化フィルタをマイクロプロセッサ100が用いることにより実現される。平滑化フィルタは、従動軸の位置における急激な変化を平滑するため、ローパス特性を有することが好ましい。ローパス特性を有する代表的な平滑化フィルタとして、たとえば、一次遅れフィルタ、高次遅れフィルタ、移動平均フィルタが挙げられる。
1次遅れフィルタを用いる場合、伝達関数G(s)として以下の式を用いればよい。
G(s)=1/(T×s+1)
ここで、“T”は時定数である。“T”の値が大きいほど、滑らかに平滑化される。なお、一般的にローパスフィルタは信号の位相が遅れる特性がある。また、位相の遅れ度合と平滑度とは、トレードオフの関係にある。カムデータの切り換え後に、当該位相遅れをなくした場合には、“T”を小さく設定する必要がある。
サポート装置8にはFFT解析部20が搭載されている。FFT解析部20は、高速フーリエ変換によって、従動軸の固有振動周波数を周波数解析する。サポート装置8は、FFT解析部20による解析結果に基づき、共振周波数を励起しない最適なカムデータを選択するように、選択部63に指示する。
<G.制御装置の処理>
(追いかけ動作中切替処理)
図15は、制御装置60が実行する追いかけ動作中切替処理を示すフローチャートである。図15に示すように、制御装置60は、主軸速度変化検出部66により、主軸が切り替えまたは反転したか否かを判定する(S2)。制御装置60は、主軸が切り替えも反転もしていない場合(S2でNO)、S14の処理に移行する。
制御装置60は、主軸が切り替えまたは反転した場合(S2でYES)、主軸振動検出部67により、主軸が振動しているか否かを判定する(S4)。制御装置60は、主軸が振動していると判定した場合(S4でYES)、従動軸の同期対象を主軸のフィードバック現在値から主軸に対する速度指令値に切り替え(S6)、S8の処理に移行する。
制御装置60は、主軸が振動していないと判定した場合(S4でNO)、またはS6の処理の後、カムデータの切替指示があったか否かを判定する(S8)。つまり、タッチディスプレイ17、上位PC、サポート装置8、およびユーザプログラム236のいずれかによってカムデータを切り替える旨の指示があったか否かを判定する。
制御装置60は、カムデータの切替指示がある場合(S8でYES)、カムデータを切り替える(S10)。たとえば、ユーザプログラム236によって、主軸が切り替えまたは反転した場合にカムデータを切り替える旨の指示が行われている場合、制御装置60は、記憶部62に記憶された複数のカムデータの中から主軸の速度変化に応じた他のカムデータを特定する。具体的には、制御装置60は、主軸が切り替わった場合には、切替後における主軸の速度に対応するカムデータを特定し、主軸が反転した場合には、反転後における主軸の速度に対応するカムデータを特定する。そして、制御装置60は、特定したカムデータに、現在選択中のカムデータを切り替える。
制御装置60は、カムデータの切替指示がない場合(S8でNO)、またはS10の処理の後、切替後のカムデータを参照しながら、従動軸による主軸の追いかけ動作を開始する(S12)。その後、制御装置60は、主軸および従動軸が同期開始位置に到達したか否かを判定する(S14)。
制御装置60は、主軸および従動軸が同期開始位置に到達していない場合(S14でNO)、再びS14の処理を繰り返す。一方、制御装置60は、主軸および従動軸が同期開始位置に到達した場合(S14でYES)、同期動作を開始し(S16)、追いかけ動作中切替処理を終了する。
(同期動作中切替処理)
図16は、制御装置60が実行する同期動作中切替処理を示すフローチャートである。図16に示すように、制御装置60は、主軸速度変化検出部66により、主軸が切り替えまたは反転したか否かを判定する(S22)。制御装置60は、主軸が切り替えも反転もしていない場合(S22でNO)、S34の処理に移行する。
制御装置60は、主軸が切り替えまたは反転した場合(S22でYES)、主軸振動検出部67により、主軸が振動しているか否かを判定する(S24)。制御装置60は、主軸が振動していると判定した場合(S24でYES)、従動軸の同期対象を主軸のフィードバック現在値から主軸に対する速度指令値に切り替え(S26)、S28の処理に移行する。
制御装置60は、主軸が振動していないと判定した場合(S24でNO)、またはS26の処理の後、カムデータの切替指示があったか否かを判定する(S28)。つまり、タッチディスプレイ17、上位PC、サポート装置8、およびユーザプログラム236のいずれかによってカムデータを切り替える旨の指示があったか否かを判定する。
制御装置60は、カムデータの切替指示がある場合(S28でYES)、カムデータを切り替える(S30)。たとえば、ユーザプログラム236によって、主軸が切り替えまたは反転した場合にカムデータを切り替える旨の指示が行われている場合、制御装置60は、記憶部62に記憶された複数のカムデータの中から主軸の速度変化に応じた他のカムデータを特定する。具体的には、制御装置60は、主軸が切り替わった場合には、切替後における主軸の速度に対応するカムデータを特定し、主軸が反転した場合には、反転後における主軸の速度に対応するカムデータを特定する。そして、制御装置60は、特定したカムデータに、現在選択中のカムデータを切り替える。
制御装置60は、カムデータの切替指示がない場合(S28でNO)、またはS30の処理の後、切替後のカムデータを参照しながら、従動軸による主軸の追いかけ動作を開始する(S32)。その後、制御装置60は、主軸および従動軸が同期開始位置に到達したか否かを判定する(S34)。
制御装置60は、主軸および従動軸が同期開始位置に到達していない場合(S34でNO)、再びS34の処理を繰り返す。一方、制御装置60は、主軸および従動軸が同期開始位置に到達した場合(S34でYES)、同期動作を開始し(S36)、同期動作中切替処理を終了する。
<H.速度変化の態様>
(主軸が切り替わった場合)
図17は、主軸が切り替わった場合における主軸および従動軸の速度変化を示すタイミングチャートである。図17においては、縦軸を速度、横軸を時間で表す。また、主軸の速度をV1、従動軸の速度をV2で表す。なお、図17では、主軸Aから主軸Bに主軸が切り替わった場合の例が示されている。
図17に示すように、タイミングt0で従動軸によって主軸Aを追いかける追いかけ動作が開始される。追いかけ動作時においては、カムデータに基づき決定された速度指令値に基づき、従動軸が加速または減速しながら動作する。具体的には、従動軸は、タイミングt0~t1の期間において加速し、タイミングt1~t2の期間において定速を維持し、その後、タイミングt2~t3の期間において減速することで、主軸Aと同じタイミングで同期開始位置に到達する。同期開始位置に到達した後のタイミングt3以降では、主軸Aと従動軸とが所定のギア比に基づく速度で同期しながら動作する。
ここで、タイミングt4において、主軸Aから主軸Bに主軸が切り替わった場合、主軸の速度がステップ状に急激に変化する。そこで、制御装置60は、主軸Bに対して従動軸が追いかけ動作する際に参照するカムデータとして、主軸Bの速度に対応するカムデータを選択し、選択したカムデータに、選択中である主軸Aの速度に対応するカムデータを切り替える。
その後、タイミングt4で従動軸によって主軸Bを追いかける追いかけ動作が開始される。従動軸は、タイミングt4~t5の期間において加速し、タイミングt5~t6の期間において定速を維持し、その後、タイミングt6~t7の期間において減速することで、主軸Bと同じタイミングで同期開始位置に到達する。同期開始位置に到達した後のタイミングt7以降では、主軸Bと従動軸とが所定のギア比に基づく速度で同期しながら動作する。
このように、主軸Aおよび従動軸の動作中に主軸Aから主軸Bに切り替わることで主軸の速度がステップ状に変化した場合、主軸Bの速度に応じたカムデータに、選択中の主軸Aの速度に応じたカムデータが切り替えられるため、適切な速度指令値を従動軸に出力することができる。その結果、従動軸に生じる振動を抑えることができる。
(主軸が反転した場合)
図18は、主軸が反転した場合における主軸および従動軸の速度変化を示すタイミングチャートである。図18においては、縦軸を速度、横軸を時間で表す。また、主軸の速度をV1、従動軸の速度をV2で表す。
図18に示すように、タイミングt0で従動軸によって主軸を追いかける追いかけ動作が開始される。追いかけ動作時においては、カムデータに基づき決定された速度指令値に基づき、従動軸が加速または減速しながら動作する。具体的には、従動軸は、タイミングt0~t1の期間において加速し、タイミングt1~t2の期間において定速を維持し、その後、タイミングt2~t3の期間において減速することで、主軸と同じタイミングで同期開始位置に到達する。同期開始位置に到達した後のタイミングt3以降では、主軸と従動軸とが所定のギア比に基づく速度で同期しながら動作する。
ここで、タイミングt4において、主軸が反転した場合、主軸の速度が反転前とは逆方向の-V1方向に転じ、主軸の速度がステップ状に急激に変化する。そこで、制御装置60は、主軸に対して従動軸が再び追いかけ動作する際に参照するカムデータとして、反転後の主軸の速度に対応するカムデータを選択し、選択したカムデータに、選択中である反転前の主軸の速度に対応するカムデータを切り替える。
その後、タイミングt4で従動軸によって主軸を追いかける追いかけ動作が開始される。従動軸は、タイミングt4~t5の期間において-V2方向に加速し、タイミングt5~t6の期間において定速を維持し、その後、タイミングt6~t7の期間において-V2方向に減速することで、主軸と同じタイミングで同期開始位置に到達する。同期開始位置に到達した後のタイミングt7以降では、主軸と従動軸とが所定のギア比に基づく速度で同期しながら動作する。
ここで、タイミングt8において、主軸が再び反転した場合、主軸の速度が反転前とは逆方向のV1方向に再び転じ、主軸の速度がステップ状に急激に変化する。そこで、制御装置60は、主軸に対して従動軸が再び追いかけ動作する際に参照するカムデータとして、反転後の主軸の速度に対応するカムデータを選択し、選択したカムデータに、選択中である反転前の主軸の速度に対応するカムデータを切り替える。
その後、タイミングt8で従動軸によって主軸を追いかける追いかけ動作が開始される。従動軸は、タイミングt8~t9の期間においてV2方向に加速し、タイミングt9~t10の期間において定速を維持し、その後、タイミングt10~t11の期間においてV2方向に減速することで、主軸と同じタイミングで同期開始位置に到達する。同期開始位置に到達した後のタイミングt11以降では、主軸と従動軸とが所定のギア比に基づく速度で同期しながら動作する。
このように、主軸および従動軸の動作中に主軸が反転することで主軸の速度がステップ状に変化した場合、反転後の主軸の速度に応じたカムデータに、選択中である反転前の主軸の速度に応じたカムデータが切り替えられるため、適切な速度指令値を従動軸に出力することができる。その結果、従動軸に生じる振動を抑えることができる。
<I.作用効果>
以上のように、本実施の形態において、制御装置60は、制御周期ごとに取得した主軸の速度に所定のギア比を乗算した速度を速度指令値として従動軸に出力することで、従動軸の同期動作を行う。また、制御装置60は、制御周期ごとに取得した主軸の速度から算出される主軸の位置と選択中のカムデータとに基づき従動軸の移動量を特定し、当該移動量に基づき特定した速度を速度指令値として従動軸に出力することで、同期動作が開始する位置に主軸および従動軸が到達するまで従動軸の追いかけ動作を行う。さらに、制御装置60は、主軸および従動軸の動作中に主軸の速度がステップ状に変化した場合、主軸の速度変化に応じた他のカムデータに、選択中のカムデータを切り替える。このため、制御装置60は、追いかけ動作や同期動作のような主軸および従動軸の動作中において主軸の速度がステップ状に変化した場合であっても、選択中のカムデータをそのまま用いるものと比べて、より適切な速度指令値を従動軸に出力することができる。その結果、従動軸に生じる振動を抑えることができる。また、主軸の速度がステップ状ではなく連続的に変化する場合には、選択中のカムデータを少し補正するだけで事足りる場合もあるが、主軸の速度がステップ状に変化した場合には、予め準備していた適切なカムデータに切り替えた方が処理負担も抑えることができる。
制御装置60は、タッチディスプレイ17、サポート装置8、および上位PC18といった外部からの指令に基づき、主軸を切り替えることができるため、ユーザの利便性が向上する。また、制御装置60は、このような主軸の切り替えに応じたカムデータに、選択中のカムデータを切り替えることができるため、適切な速度指令値を従動軸に出力することができる。
制御装置60は、タッチディスプレイ17、サポート装置8、および上位PC18といった外部からの指令に基づき、主軸を切り替えることができるため、ユーザの利便性が向上する。また、制御装置60は、このような主軸の切り替えに応じたカムデータに、選択中のカムデータを切り替えることができるため、適切な速度指令値を従動軸に出力することができる。
制御装置60は、タッチディスプレイ17、サポート装置8、および上位PC18といった外部からの指令に基づき、主軸の動作方向を反転させることができるため、ユーザの利便性が向上する。また、制御装置60は、このような主軸の反転に応じたカムデータに、選択中のカムデータを切り替えることができるため、適切な速度指令値を従動軸に出力することができる。
制御装置60は、同期動作や追いかけ動作の制御において、検出対象となる速度として主軸に対する速度指令値または主軸のフィードバック現在値を検出することができるため、状況に応じた制御を行うことができる。
制御装置60は、同期動作や追いかけ動作の制御において、主軸の振動が検出された場合、主軸に対する速度指令値から主軸のフィードバック現在値に同期対象を切り替えることができるため、主軸の振動によって従動軸の動作が影響されない。
カムデータは、データテーブル、1次式、および多項式の少なくともいずれかに基づき規定され得るため、様々な形態でカムデータを規定することができ、ユーザの利便性が向上する。
制御装置60は、FFT解析部20による高速フーリエ変換によって算出された従動軸の固有振動数を考慮してカムデータを選択することができるため、従動軸に生じる振動を抑えることができる。
上述の開示において、制御装置は、同期動作が開始する位置に従動軸が到達する前において、動作中の主軸の速度がステップ状に変化したときに選択部によって特性データが切り替えられた場合、従動軸の移動量を平滑するフィルタ処理部をさらに備える。
制御装置60は、動作中の主軸の速度がステップ状に変化したときに選択中のカムデータを切り替えた場合、切替後のカムデータにおける従動軸の移動量をフィルタ処理によって平滑することができるため、カムデータの切り替えによって従動軸の移動量が急激に変化することを防止することができる。
<J.付記>
以上のように、本実施の形態では以下のような開示を含む。
(構成1)
主軸(501,601)の動作に対して従動軸(551,651)の動作を同期させる制御装置(60)であって、
制御周期ごとに前記主軸の速度を取得する取得部(68)と、
前記主軸の位置に対する前記従動軸の移動量を特定するための複数の特性データを記憶する記憶部(62)と、
前記複数の特性データのうちからいずれかの特性データを選択する選択部(63)と、
前記従動軸に対して指令する速度を速度指令値として算出する算出部(70)と、
前記算出部によって算出された前記速度指令値を前記従動軸に出力する出力部(81,82)とを備え、
前記算出部は、
前記主軸の動作に対して前記従動軸の動作を同期させる同期動作中においては、前記取得部によって取得された前記主軸の速度に所定の比率を乗算した速度を、前記速度指令値として算出し、
前記同期動作が開始する位置に前記従動軸が到達する前においては、前記取得部によって取得された前記主軸の速度から算出される前記主軸の位置と前記選択部によって選択中の前記特性データとに基づき前記従動軸の移動量を特定し、当該移動量に基づき特定される速度を、前記速度指令値として算出し、
前記選択部は、前記主軸および前記従動軸の動作中に前記主軸の速度がステップ状に変化した場合、前記記憶部に記憶された前記複数の特性データの中から前記主軸の速度変化に応じた他の特性データを特定し、当該他の特性データに、選択中の前記特性データを切り替える、制御装置。
(構成2)
前記主軸として、第1主軸と、当該第1主軸の速度とはステップ状に異なる速度で動作する第2主軸とが設けられており、
外部からの指令に基づき前記第1主軸から前記第2主軸に前記主軸を切り替える切替部(65)をさらに備え、
前記選択部は、前記主軸および前記従動軸の動作中に前記切替部によって前記主軸が切り替えられた場合、前記主軸の切り替えに応じた他の前記特性データに、選択中の前記特性データを切り替える、構成1に記載の制御装置。
(構成3)
外部からの指令に基づき前記主軸の動作方向を反転させる反転部(71,72)をさらに備え、
前記選択部は、前記主軸および前記従動軸の動作中に前記反転部によって前記主軸が反転された場合、前記主軸の反転に応じた他の前記特性データに、選択中の前記特性データを切り替える、構成1または構成2に記載の制御装置。
(構成4)
前記取得部は、前記主軸に対して指令された速度、または前記主軸の実測された速度を取得する、構成1~構成3のいずれかに記載の制御装置。
(構成5)
前記主軸の振動を検出する振動検出部(67)をさらに備え、
前記取得部は、前記振動検出部によって前記主軸の振動が検出された場合、前記主軸に対して指令された速度から前記主軸の実測された速度に取得対象を切り替える、構成4に記載の制御装置。
(構成6)
前記特性データは、データテーブル、1次式、および多項式の少なくともいずれかに基づき規定されたデータである、構成1~構成5のいずれかに記載の制御装置。
(構成7)
前記選択部は、高速フーリエ変換によって算出された前記従動軸の固有振動数に基づき前記特性データを選択する、構成1~構成6のいずれかに記載の制御装置。
(構成8)
前記同期動作が開始する位置に前記従動軸が到達する前において、動作中の前記主軸の速度がステップ状に変化したときに前記選択部によって前記特性データが切り替えられた場合、前記従動軸の移動量を平滑するフィルタ処理部(78,79)をさらに備える、構成1~構成7のいずれかに記載の制御装置。
(構成9)
主軸(501,601の動作に対して従動軸(551,651)の動作を同期させる制御装置(60)における制御方法であって、
制御周期ごとに前記主軸の速度を取得するステップと、
前記主軸の位置に対する前記従動軸の移動量を特定するための複数の特性データを記憶するステップと、
前記複数の特性データのうちからいずれかの特性データを選択するステップと、
前記従動軸に対して指令する速度を速度指令値として算出するステップと、
前記算出するステップによって算出された前記速度指令値を前記従動軸に出力するステップとを含み、
前記算出するステップは、
前記主軸の動作に対して前記従動軸の動作を同期させる同期動作中においては、前記取得するステップによって取得された前記主軸の速度に所定の比率を乗算した速度を、前記速度指令値として算出し、
前記同期動作が開始する位置に前記従動軸が到達する前においては、前記取得するステップによって取得された前記主軸の速度から算出される前記主軸の位置と前記選択するステップによって選択中の前記特性データとに基づき前記従動軸の移動量を特定し、当該移動量に基づき特定される速度を、前記速度指令値として算出し、
前記選択するステップは、前記主軸および前記従動軸の動作中に前記主軸の速度がステップ状に変化した場合、前記記憶部に記憶された前記複数の特性データの中から前記主軸の速度変化に応じた他の特性データを特定し、当該他の特性データに、選択中の前記特性データを切り替える、制御方法。
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組み合わせても、実施することが意図される。