(57)【要約】【課題】上位制御器から送信される制御指令に同期して、制御パラメータの整合性を保持しながら実行可能な分散制御装置及び分散制御方法を提供すること。【解決手段】複数のモータ制御器１０２、１０３、１０４が上位制御器１０１からの制御指令に応じて複数のモータ１０５、１０６、１０７を制御する分散制御装置において、複数のモータ制御器１０２、１０３、１０４のそれぞれは、上位制御器１０１からの制御指令を記憶可能なメモリと、上位制御器１０１からの制御指令の受信間隔を計測可能なタイマと、上位制御器１０１からの制御指令を受信すると、制御指令を一旦メモリに記憶し、次の制御指令を受信すると、記憶した制御指令と次の制御指令との受信間隔を計測し、計測した受信間隔が所定の制御指令発信間隔と異なる場合には、制御指令の発信間隔に応じて制御パラメータを変更し、変更した制御パラメータを用いてモータ制御を実行する演算器と、を備えた。【選択図】図１
2014123188.tif 000002
【特許請求の範囲】
【請求項１】
複数のモータを制御する複数のモータ制御器と、前記複数のモータ制御器のそれぞれに接続された上位制御器と、を有し、前記複数のモータ制御器のそれぞれが前記上位制御器からの制御指令に応じて前記複数のモータを制御する分散制御装置において、
前記複数のモータ制御器のそれぞれは、
前記上位制御器が発信する制御指令を記憶可能なメモリと、
前記上位制御器からの制御指令の受信間隔を計測可能なタイマと、
前記上位制御器からの制御指令を受信すると、制御指令をいったん前記メモリに記憶し、次の制御指令を受信すると、記憶した制御指令と次の制御指令との受信間隔を前記タイマで計測し、計測した受信間隔が所定の制御指令発信間隔と異なる場合には、前記制御指令の発信間隔に応じて前記複数のモータの出力値を設定するために予め設定された制御パラメータを、計測した受信間隔に応じた制御パラメータに変更し、変更した制御パラメータを用いてモータ制御を実行する制御部と、を備えた、
ことを特徴とする分散制御装置。
【請求項２】
前記モータ制御器で実行されるモータ制御が、指令値と応答値との偏差を算出して比例制御、積分制御及び微分制御を行うＰＩＤ制御であり、前記制御パラメータが前記ＰＩＤ制御の演算における積分係数、微分係数である、
ことを特徴とする請求項１に記載の分散制御装置。
【請求項３】
前記ＰＩＤ制御は、モータの回転目標角度指令値と回転角度応答値との偏差を算出して比例制御、積分制御及び微分制御を行う位置ＰＩＤ制御と、モータの速度指令値と回転速度応答値との偏差を算出して比例制御、積分制御及び微分制御を行う速度ＰＩＤ制御と、モータのトルクに寄与する電流値を変換したトルク指令値とトルク応答値との偏差を算出して比例制御、積分制御及び微分制御を行う電流ＰＩＤ制御と、を有する、
ことを特徴とする請求項２に記載の分散制御装置。
【請求項４】
各関節に複数のモータが設けられた多軸多関節のロボットアームと、
前記上位制御器と、前記ロボットアームの前記複数のモータを制御する前記複数のモータ制御器と、を有する請求項１から３のいずれか１項に記載の分散制御装置と、を備えた、
ことを特徴とするロボット装置。
【請求項５】
複数のモータを制御する複数のモータ制御器のそれぞれに接続された上位制御器からの制御指令に応じて、前記複数のモータ制御器のそれぞれが前記複数のモータを制御する分散制御方法において、
前記モータ制御器のそれぞれの制御部が、前記上位制御器からの制御指令を受信すると、制御指令をメモリに記憶する制御指令記憶工程と、
前記制御部が、次の制御指令を受信すると、受信間隔を計測可能なタイマで、前記メモリに記憶した制御指令と次の制御指令との受信間隔を計測する受信間隔計測工程と、
前記制御部が、計測した受信間隔が所定の制御指令発信間隔と異なる場合に、前記制御指令の発信間隔に応じて前記複数のモータの出力値を設定するために予め設定された制御パラメータを、計測した受信間隔に応じた制御パラメータに変更するパラメータ変更工程と、
前記制御部が、変更したパラメータでモータ制御を実行するモータ制御工程と、を備えた、
ことを特徴とする分散制御方法。
【請求項６】
請求項５に記載の各工程をコンピュータに実行させるための分散制御プログラム。
【請求項７】
請求項６に記載の分散制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項８】
請求項５に記載の分散制御方法を用いて、前記モータ制御器のそれぞれの制御部が、多軸多関節のロボットアームの各軸に設けられた複数のモータを制御する、
ことを特徴とする多関節ロボットの分散制御方法。
【請求項９】
請求項８に記載の各工程をコンピュータに実行させるための多関節ロボットの分散制御プログラム。
【請求項１０】
請求項９に記載の多関節ロボットの分散制御プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のモータを同期して制御する分散制御装置に関し、特にはマスタースレーブ型の分散制御装置及びその制御方法に関する。
【背景技術】
【０００２】
従来、上位制御器に複数の下位制御器が通信線等で接続され、上位制御器から所定の周期で送信される制御指令に対して同期して下位制御器がモータ等の制御を行う分散制御装置が知られている。分散制御装置は、例えば、ロボットアームを駆動する複数のモータそれぞれに設けられた複数のモータ制御器（下位制御器）に対して、上位制御器から制御指令を定期的に送信することで各モータを制御し、ロボットアームを精度よく駆動させる際等に用いられる。
【０００３】
しかしながら、このような分散制御装置は、上位制御部の処理負荷や通信負荷等の影響により、上位制御部から送信される制御指令の周期（発信間隔）が変動する場合がある。制御指令の周期変動は、周期毎のパラメータを用いて行っている場合には、所定の周期に調整されたパラメータの不適合によるモータのトルク変動やロボットアームにおける位置精度の低下を発生させるおそれがあった。
【０００４】
これに対しては、上位制御器と、上位制御器の同期信号線を利用した下位制御器と、を用いることで、上位制御器と下位制御器との同期処理を行う分散制御装置が開示されている（特許文献１参照）。また、上位制御器から下位制御器へ同期時刻を送信することで下位制御器が内部タイマの時刻を変更し、下位制御で処理される制御周期を上位制御器の制御周期に合致させることで、同期処理を行う分散制御装置が開示されている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１６７４０６号公報
【特許文献２】特開平０９−１６０６３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示の分散制御装置は、同期信号を送信する専用線を使用して上位制御器と下位制御器との同期処理を行うため、配線数が増加する。また、上位制御器からの制御指令に応じて下位制御器でモータ制御を行う場合、上位制御器から下位制御器へ制御指令を送信する指令送信周期と同期信号周期の同期が保証されていない場合に制御指令周期と下位制御器の制御周期の同期ズレが発生するおそれがある。
【０００７】
また、特許文献２に開示の分散制御装置のように、上位制御器から同期時刻を送信し、送信された同期時刻に応じて下位制御器の制御タイマを変更して制御を行う場合には、制御タイマの時刻変更直後にモータ制御周期が変動する場合がある。これにより、規定制御周期で調整されたモータ制御パラメータで動作させることによるモータ制御における応答性能の低下等を招くおそれがある。
【０００８】
そこで、本発明は、上位制御器からの指令周期が変動した場合においても、モータ制御器で制御パラメータの整合性を保持しながらモータを制御可能な分散制御装置及び分散制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、複数のモータを制御する複数のモータ制御器と、前記複数のモータ制御器のそれぞれに接続された上位制御器と、を有し、前記複数のモータ制御器のそれぞれが前記上位制御器からの制御指令に応じて前記複数のモータを制御する分散制御装置において、前記複数のモータ制御器のそれぞれは、前記上位制御器が発信する制御指令を記憶可能なメモリと、前記上位制御器からの制御指令の受信間隔を計測可能なタイマと、前記上位制御器からの制御指令を受信すると、制御指令をいったん前記メモリに記憶し、次の制御指令を受信すると、記憶した制御指令と次の制御指令との受信間隔を前記タイマで計測し、計測した受信間隔が所定の制御指令発信間隔と異なる場合には、前記制御指令の発信間隔に応じて前記複数のモータの出力値を設定するために予め設定された制御パラメータを、計測した受信間隔に応じた制御パラメータに変更し、変更した制御パラメータを用いてモータ制御を実行する制御部と、を備えたことを特徴とする。
【００１０】
また、本発明は、複数のモータを制御する複数のモータ制御器のそれぞれに接続された上位制御器からの制御指令に応じて、前記複数のモータ制御器のそれぞれが前記複数のモータを制御する分散制御方法において、前記モータ制御器のそれぞれの制御部が、前記上位制御器からの制御指令を受信すると、制御指令をメモリに記憶する制御指令記憶工程と、前記制御部が、次の制御指令を受信すると、受信間隔を計測可能なタイマで、前記メモリに記憶した制御指令と次の制御指令との受信間隔を計測する受信間隔計測工程と、前記制御部が、計測した受信間隔が所定の制御指令発信間隔と異なる場合に、前記制御指令の発信間隔に応じて前記複数のモータの出力値を設定するために予め設定された制御パラメータを、計測した受信間隔に応じた制御パラメータに変更するパラメータ変更工程と、前記制御部が、変更したパラメータでモータ制御を実行するモータ制御工程と、を備えた、ことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、上位制御器からの指令周期が変動した場合においても、モータ制御器で制御パラメータの整合性を保持しながらモータを制御することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係るロボット装置の構成図である。
【図２】本実施形態に係る分散制御装置のモータ制御器で処理されるモータ制御のブロック図である。
【図３】本実施形態に係る分散制御装置によるモータ制御指令を実行する際のタイムチャートである。
【図４】上位制御器とモータ制御器とのコマンド通信におけるシーケンス図である。
【図５】コマンド受信後のモータ制御器のフローチャートである。
【図６】停止時のモータ制御器のフローチャートである。
【図７】本実施形態に係る分散制御装置のモータ回転速度とモータトルクの計測データである。
【発明を実施するための形態】
【００１３】
以下、本発明の実施形態に係るロボット装置１について、図１から図７を参照しながら説明する。本発明に係るロボット装置１は、上位制御器と、上位制御器に接続された下位制御器としてのモータ制御器とを用いたマスタースレーブ型の分散制御装置を備えた多関節ロボットであり、例えば、多軸多関節のロボットアームの駆動制御等に用いられる。本実施形態においては、３軸３関節のロボットアーム２と、ロボットアーム２の軌道生成を行う上位制御器１０１及びロボットアームの各関節のモータを駆動するモータ制御器１０２〜１０４を有する分散制御装置３と、を備えたロボット装置１を用いて説明する。
【００１４】
まず、本実施形態に係るロボット装置１全体の概略構成について、図１を参照しながら説明する。図１は、本発明の実施形態に係るロボット装置１の構成図である。
【００１５】
図１に示すように、ロボット装置１は、３軸３関節のロボットアーム２（３軸アクチュエータ）と、分散制御装置３と、を備えている。分散制御装置３は、軌道生成を行う上位制御器１０１と、下位制御器としてのモータ制御器１０２、１０３、１０４と、を備えている。モータ制御器１０２，１０３，１０４は、ロボットアーム２の各関節に設けられる複数のモータ１０５，１０６，１０７に接続されている。上位制御器１０１とモータ制御器１０２〜１０４とは、制御指令及びモータ制御器１０２〜１０４の状態を通知するシリアル通信線１１１を介して接続されており、上位制御器１０１は、所定の制御指令発信間隔にて制御指令をモータ制御器１０２〜１０４へ送信する。なお、上位制御器１０１より送信される制御指令は、ロボットアーム２のモータ１０５〜１０７の目標回転角度等の指令値を送信する指令コマンドと指令実行コマンドとからなる。
【００１６】
上位制御器１０１は、予め指定した教示点データからロボットアーム２の軌道生成を行い、シリアル通信線１１１を介して接続されるモータ制御器１０２〜１０４へ送信するモータの回転目標角度指令値を逐次的に生成する。そして、生成したモータ回転目標角度指令値を含む指令コマンドを、シリアル通信線１１１を介してモータ制御器１０２〜１０４へ個別に送信した後、指令実行コマンドを予め設定された周期（間隔）でモータ制御器１０２〜１０４へブロードキャスト送信する。本実施形態においては、指令実行コマンドの送信周期を２ミリ秒に設定している。指令実行コマンドを所定周期（所定間隔）で送信することで、上位制御器１０１に接続されたモータ制御器１０２〜１０４が指令実行コマンド直前に送信された指令コマンドと同期して指令実行処理を行う。なお、上位制御器１０１には、不図示のユーザー操作盤が付属しており、ユーザー操作によりモータ駆動が開始されるように構成されている。
【００１７】
モータ制御器１０２〜１０４には、不図示の制御基板が配設されており、制御基板には電源回路、通信制御器、制御部としての演算器、記憶可能なメモリ及びモータドライバが実装されている。また、モータ制御器１０２〜１０４には、一つのモータ１０５〜１０７がモータドライバを介して接続されており、モータ１０５〜１０７には、モータの回転角度検出する回転位置検出器１０８，１０９，１１０がモータの回転軸に接続されている。なお、モータ制御器１０２〜１０４の演算器は、不図示のアナログ／デジタル変換器、揮発メモリ、不揮発メモリ、受信間隔等を計測可能なタイマ等を有している。
【００１８】
制御基板に実装される演算器の不揮発性メモリ内には、モータ制御に使用する制御パラメータの他に、コマンド実行遅延数と指令コマンド受信バッファサイズを指定するパラメータ値があらかじめ保存されている。そして、設定された指令コマンド受信バッファサイズで指定されるキュー構造のメモリ領域を演算器リセット後の処理内で確保し、指令コマンドキューとしている。本実施形態においては、指令コマンド実行遅延数を１、指令コマンドキューサイズを２に設定している。
【００１９】
また、分散制御装置３は、コンピュータ読み取り可能な記録媒体に記録された制御プログラムを読み取り可能な不図示の記録メディア読取装置を備えており、記録媒体に記録された分散制御プログラム等を読み取って実行することも可能となっている。
【００２０】
次に、本実施形態に係る分散制御装置３のモータ制御器１０２〜１０４で処理されるモータ制御について、図２を参照しながら説明する。なお、本実施形態においては、モータ制御器１０２で処理されるモータ制御を用いて説明する。図２は、本実施形態に係る分散制御装置３のモータ制御器１０２で処理されるモータ制御のブロック図である。
【００２１】
図２に示すように、本実施形態に係るモータ制御器１０２によるモータ制御は、位置フィードバック制御３０６と、速度フィードバック制御３０８と、電流フィードバック制御３１０と、をカスケード構成とした制御を用いている。以下、位置フィードバック制御３０６、速度フィードバック制御３０８及び電流フィードバック制御３１０について具体的に説明する。
【００２２】
位置フィードバック制御３０６は、上位制御器１０１からの指令実行コマンド３０１の受信に同期して実行される。なお、前回の指令実行コマンドを受信してから３ミリ秒以上の指令実行コマンドの受信がない場合は、前回の指令実行コマンドのモータ１０５の回転目標角度指令値にてモータ１０５の駆動処理がなされる。上位制御器１０１からの指令実行コマンドの受信より、モータ１０５の回転目標角度位置情報を含む指令コマンドをコマンドキュー３０２に保存すると共に、コマンドキュー３０２から実行する指令コマンドを取り出す。コマンドキュー３０２はＦＩＦＯバッファであり、バッファ保存順に読み出しが可能なメモリ構造となっている。
【００２３】
位置フィードバック制御３０６は、まず、モータ制御器１０２に接続されるモータ１０５の回転軸に接続された回転位置検出器１０８よりモータ１０５の回転角度を取得する。そして、回転目標角度指令値と回転角度（応答値としての回転角度応答値）との偏差により、比例制御、積分制御、微分制御にて出力値を決定する位置ＰＩＤ制御の演算３０７が実行される。例えば、位置フィードバック制御３０６で実行される位置ＰＩＤ制御の演算３０７は、次式で示される。
【００２４】
【数１】
2014123188.tif 000003
【００２５】
なお、上記数１式の位置ＰＩＤ制御の演算３０７における比例係数Ｋｐｐ、積分係数Ｋｉｐ、微分係数Ｋｄｐは、上位制御器１０１より指令実行コマンドが送信される所定間隔の２ミリ秒で調整された値（制御パラメータ）が予め設定されている。
【００２６】
速度フィードバック制御３０８は、０．５ミリ秒間隔で処理がなされている。位置フィードバック制御３０６からの出力結果を速度指令値として、回転位置検出器１０８より取得したモータ１０５の回転速度と前回の速度フィードバック制御時に取得したモータ１０５の回転速度との差を現在のモータ回転速度（回転速度応答値）とする。そして、速度指令値と現在のモータ回転速度の偏差により比例制御、積分制御、微分制御にて出力値を決定する速度ＰＩＤ制御の演算３０９が実行される。例えば、速度フィードバック制御３０８で実行される速度ＰＩＤ制御の演算３０９は、次式で示される。
【００２７】
【数２】
2014123188.tif 000004
【００２８】
なお、上記数２式の速度ＰＩＤ制御の演算３０９で使用する比例係数Ｋｐｖ、積分係数Ｋｉｖ、微分係数Ｋｄｖは、速度フィードバック制御３０８が実行される周期である０．５ミリ秒で調整された値（制御パラメータ）が予め設定されている。
【００２９】
電流フィードバック制御３１０は、０．１ミリ秒間隔で処理がなされている。そして、モータ出力回路のモータ出力ラインに配置される電流検出素子より、モータ各相に流れる電流を電圧として計測してデジタル、アナログ変換器３１９、３２０によって量子化された数値データに変換される。例えば、電流フィードバック制御３１０で実行される電流ＰＩＤ制御の演算３１１は、次式で示される。
【００３０】
【数３】
2014123188.tif 000005
【００３１】
電流フィードバック制御３１０では、数３式で示される変換式により、取得した３相分のモータ電流（数３式中のｉｕ、−ｉｕ−ｉｗ、ｉｗ）を、モータ１０５で発生するトルクに寄与する電流値と励磁電流に変換する処理３１４を実行する。その後、速度フィードバック制御３０８からの出力結果をトルク指令値として、トルク指令値とトルク値（トルク応答値）の偏差から比例制御、積分制御、微分制御にてモータ出力値を決定する数４式で示される電流ＰＩＤ制御の演算３１１が実行される。同様に、数５式で示される励磁電流をゼロに制御する電流ＰＩＤ制御の演算３１２が実行される。
【００３２】
【数４】
2014123188.tif 000006
【００３３】
【数５】
2014123188.tif 000007
【００３４】
なお、電流ＰＩＤ制御の演算３１１、３１２によるモータ１０５の出力値を決定する処理には、モータ１０５で発生する逆起電力の補正処理等を含んでもよい。また、上記数５式及び数６式で使用する比例係数Ｋｐｉｑ、Ｋｐｉｄ、積分係数Ｋｉｉｑ、Ｋｉｉｄ、微分係数Ｋｄｉｑ、Ｋｄｉｄは、電流フィードバック制御３１０の周期の０．１ミリ秒で調整された値（制御パラメータ）が予め設定されている。
【００３５】
モータ１０５の駆動は、電流フィードバック制御３１０の処理により決定されたモータ１０５の出力値ｖｄ、ｖｑを数６式の変換式によりモータ各相の出力デューティー値Ｕ、Ｖ、Ｗに変換する処理３１３によって各相の出力デューティー値を決定する。そして、各相の出力デューティー値に応じてゲート回路のスイッチング素子をオンオフ制御する（ＰＷＭ駆動制御）。
【００３６】
【数６】
2014123188.tif 000008
【００３７】
本実施形態では、指令実行コマンドの受信時間（受信間隔）に応じて制御パラメータの値の変更を行う処理は、レギュレータブロック３０５で実行されている。変更する制御パラメータは、位置ＰＩＤ制御の演算３０７で処理される数１式中のｘ及び速度フィードバック制御３０８の制御周期と速度フィードバック制御３０８にて処理される速度ＰＩＤ制御の演算３０９で処理される数２式中のｙとした。
【００３８】
上位制御器１０１から指令実行コマンドを受信した受信時刻Ｔｋと、前回の指令実行コマンドを受信した際に記憶した時刻Ｔｋ−１より上位制御器１０１からの指令実行コマンドの受信間隔ΔＴｋを算出する。
【００３９】
位置フィードバック制御においては、受信間隔ΔＴｋにより、位置フィードバック制御で処理される数１式の位置ＰＩＤ制御の演算３０７における調整係数をＸｋ＝Ｔｐｂ／ΔＴｋに変更した後に、出力計算を実行する。ここで示すＴｐｂは、位置フィードバック規定周期時間（２ミリ秒）を表す。
【００４０】
続いて、速度フィードバック制御周期時間の変更処理を行う。速度フィードバック制御周期の決定方法は、指令実行コマンド受信間隔ΔＴｋを速度フィードバック周期の規定時間０．５ミリ秒で分割する。ここで、速度フィードバック周期時間をＴｓ１、Ｔｓ２、・・・、Ｔｓｍ（ここで、ｍは速度フィードバック制御インデックス）とすると、Ｔｓ１〜Ｔｓｍ−１までは、速度フィードバック周期の規定時間０．５ミリ秒とする。Ｔｓｍは、ΔＴｋを規定の速度フィードバック制御周期０．５ミリ秒で除算した剰余となる。
【００４１】
本実施形態では、ΔＴｋ内で実行される速度フィードバック制御の最終速度フィードバック制御周期時間を変更する。ここで、決定される速度フィードバック制御周期は、Ｔｓ１、Ｔｓ２、・・・、Ｔｓｍ−１は、規定の速度フィードバック制御周期Ｔｓｂで出力計算を実行する。ｍ回目の速度フィードバック制御においては、速度フィードバック制御で処理される数２式のＰＩＤ制御演算における調整係数ｙｋ＝Ｔｓｂ／Ｔｓｍ−１に変更した後に、出力計算を実行する。ここで示すＴｓｂは、速度フィードバック規定周期時間（０．５ミリ秒）を表す。
【００４２】
次に、モータ駆動開始時の上位制御器１０１とモータ制御器１０２〜１０４の処理シーケンス及び処理フローについて、図３〜図５を参照しながら説明する。図３は、本実施形態に係る分散制御装置３によるモータ制御指令を実行する際のタイムチャートである。図４は、上位制御器１０１とモータ制御器１０２〜１０４とのコマンド通信におけるシーケンス図である。図５は、コマンド受信後のモータ制御器１０２〜１０４のフローチャートである。
【００４３】
上位制御器１０１から送信された指令コマンドＣ１，ｎを受信すると、モータ制御器１０２に実装される通信制御器に具備される不図示の受信バッファに指令コマンドＣ１，ｎが保存される（制御指令記憶工程）。ここで、ｎは指令コマンド及び指令実行コマンドの受信順序を表すインデックスである。
【００４４】
続いて、上位制御器１０１より送信される指令実行コマンドＥｎを受信することによって、モータ制御器１０２の演算器にて、受信割り込みが発生して、指令コマンドＣ１，ｎの読み出しと指令コマンドキューへの保存及び指令コマンドが実行される。指令コマンドキューは、保存した順に読み出しが行えるＦＩＦＯ構成のデータ構造を成している。初回の指令実行コマンドＥ１を受信した際、受信バッファに保存される指令コマンドＣ１，１を読み出してコマンドキューへ予め設定された実行遅延数分、指令実行コマンドＥ１受信割り込み処理４０１にて、同一データ（Ｃ１，１）を保存する。その後、コマンドキューより指令コマンドを読み出して４０４で指令コマンドＣＥ１，１の実行を行う。
【００４５】
続いて、指令実行コマンドＥ２受信割り込み処理４０２にて、指令コマンドＣ１，２の読み出しと、指令コマンドキューへの保存及び指令コマンドキューから指令コマンドＣＥ１，２を読み出す。また、指令実行コマンドＥ１とＥ２を受信した受信時刻Ｔ１、Ｔ２から受信間隔ΔＴ１，１を計測（受信間隔計測工程）して、前述の速度フィードバック制御周期時間の変更とＸ１及びＹ１の変更（パラメータ変更工程）を行う。その後に、４０５で指令コマンドＣＥ１，２を実行する（モータ制御工程）。
【００４６】
ここで、４０５の処理にて、指令コマンドキューに保存される未実行の指令コマンドＣ１，２を指令コマンド予測値としてＰＩＤ制御を行うフィードフォワード制御を組み合わせてモータ駆動制御を行ってもよい。４０３以降の処理は、４０２及び４０５と同一の処理を実行する。モータ制御器１０３、１０４においても同様の処理が実行されている。
【００４７】
次に、上位制御器１０１とモータ制御器１０２〜１０４とを各軸にそれぞれ配設した３軸アクチュエータで構成されるロボットアーム２の処理動作を、図４及び図５を参照しながら説明する。図４は、上位制御器１０１とモータ制御器１０２〜１０４とのコマンド通信におけるシーケンス図である。図５は、コマンド受信後のモータ制御器１０２〜１０４のフローチャートである。
【００４８】
ロボットアーム２（３軸アクチュエータ）の動作を開始する前に、上位制御器１０１は、接続されるモータ制御器１０２〜１０４へ初期動作指令コマンド及び指令実行コマンドを送信する。モータ制御器１０２〜１０４は、初期動作指令コマンド及び指令実行コマンドを受信して、演算器のレジスタ及び内部変数の初期化処理実行後に、あらかじめ設定された各アクチュエータ原点位置へモータ駆動により移動させる（Ｓ６０１）。
【００４９】
続いて、ユーザー操作盤を操作してロボットアーム２の動作を開始する。動作を開始すると、上位制御器１０１は、軌道生成計算を開始すると共に、Ｓ５０１のシーケンスにてモータ制御器１０２へモータ１０５の回転目標角度指令値Ｒ１，１を含む指令コマンドＣ１，１を送信する。同様に、上位制御器１０１は、モータ制御器１０３にモータ１０６の回転目標角度指令値Ｒ２，１を含む指令コマンドＣ２，１を送信し、モータ制御器１０４にモータ１０７の回転目標角度指令値Ｒ３，１を含む指令コマンドＣ３，１を送信する。指令コマンドＣ１，１、Ｃ２，１、Ｃ３，１を送信すると、上位制御器１０１は、モータ制御器１０２〜１０４へ指令実行コマンドＥ１をブロードキャスト送信する。
【００５０】
なお、ここで示す記号添字は、前段がモータ制御器インデックス（モータ制御器１０２が１、モータ制御器１０３が２、モータ制御器１０４が３）、後段が上位制御器１０１より送信された指令コマンドの順番を表している。
【００５１】
モータ制御器１０２〜１０４が指令コマンドＣ１，１、Ｃ２，１、Ｃ３，１を受信する（Ｓ６０２）と、指令コマンドと指令コマンドに付加された回転目標角度指令値Ｒ１，１、Ｒ２，１、Ｒ３，１を通信ドライバの受信バッファへ記憶する。
【００５２】
続いて、上位制御器１０１よりブロードキャスト送信された指令実行コマンドＥ１を受信（Ｓ６０３）したことによるブロードキャスト受信割り込みが、モータ制御器１０２〜１０４の演算器にて発生する。モータ制御器１０２〜１０４は、ブロードキャスト受信割り込み処理の中で、モータ制御器１０２〜１０４の演算器が内蔵するタイマにより計測した指令実行コマンドＥ１の受信時刻Ｔ１，１、Ｔ２，１、Ｔ３，１を演算器の揮発メモリ内に記憶する（Ｓ６０４）。
【００５３】
次に、モータ制御器１０２〜１０４に接続されたモータ軸に結合された回転位置検出器１０８〜１１０により取得したモータ回転角度等を含むモータ制御器のステータス情報Ｓ１，１、Ｓ２，１、Ｓ３，１を、上位制御器１０１へ返信する（Ｓ６０５）。ここで、モータ制御器１０２〜１０４は、受信バッファに記憶された指令コマンドＣ１，１、Ｃ２，１、Ｃ３，１及び回転目標角度指令値Ｒ１，１、Ｒ２，１，Ｒ３，１を読み出す（Ｓ６０６）。そして、読み出した回転目標角度指令値Ｒ１，１、Ｒ２，１、Ｒ３，１を指令コマンドキューに記憶する処理を、モータ制御器１０２〜１０４の不揮発メモリ内に設定されたコマンド実行遅延数と指令コマンドキューのデータ数が一致するまで繰り返す（Ｓ６０７）。
【００５４】
次に、モータ制御器１０２〜１０４は、指令コマンドＣＥ１，１、ＣＥ２，１、ＣＥ３，１を取り出した後に、前回の指令実行コマンドと今回の指令実行コマンドの受信時刻の時刻差ΔＴ１，１、ΔＴ２，１、ΔＴ３，１をそれぞれ計算する（Ｓ６０８、Ｓ６０９）。なお、初回の指令コマンド実行のため規定指令実行コマンドの送信周期間隔（所定の制御指令発信間隔）としての時刻差ΔＴ１，１、ΔＴ２，１、ΔＴ３，１の値は、２ミリ秒としている。
【００５５】
続いて、モータ制御器１０２〜１０４は、モータ制御に使用する制御パラメータの値の変更処理（Ｓ６１０、Ｓ６１１、Ｓ６１２）を行った後に、コマンドキューより読み出した指令コマンドＣＥ１，１、ＣＥ２，１、ＣＥ３，１を実行する（Ｓ６１３）。これにより、モータ制御器１０２〜１０４に接続されるモータの回転角度（応答値）Ｐ１，１、Ｐ２，１、Ｐ３，１がモータ回転軸に結合される回転位置検出器１０８〜１１０より取得される。また、モータ制御器１０２〜１０４への回転目標角度指令値Ｒ１，１、Ｒ２，１、Ｒ３，１が取得される。そして、回転目標角度指令値Ｒ１，１、Ｒ２，１、Ｒ３，１とモータ制御器１０２〜１０４に接続されるモータの回転角度Ｐ１，１、Ｐ２，１、Ｐ３，１との偏差（情報）に応じて、モータ１０５〜１０７への出力を決定してモータ駆動処理を実行する。
【００５６】
上位制御器１０１は、モータ制御器１０２〜１０４より送信されたステータス情報Ｓ１，１、Ｓ２，１、Ｓ３，１を確認後、モータ制御器１０２〜１０４に異常等がなければ、Ｓ５０２のシーケンスにて、次の指令コマンドＣ１，２、Ｃ２，２、Ｃ３，２を送信する。モータ制御器１０２〜１０４は、指令コマンドＣ１，２、Ｃ２，２、Ｃ３，２を受信し、指令コマンドと指令コマンドに付加される回転目標角度指令値Ｒ１，２、Ｒ２，２、Ｒ３，２を受信バッファへ記憶する。
【００５７】
続いて、上位制御器１０１は、モータ制御器１０２〜１０４へ指令実行コマンドＥ２をブロードキャスト送信する。上位制御器１０１よりブロードキャスト送信された指令実行コマンドＥ２をモータ制御器１０２〜１０４が受信すると、ブロードキャスト受信割り込みが、モータ制御器１０２〜１０４の演算器にて発生する。モータ制御器１０２〜１０４は、ブロードキャスト受信割り込み処理の中で、モータ制御器に内蔵するタイマにて指令実行コマンドＥ２の受信時刻Ｔ１，２、Ｔ２，２、Ｔ３，２を記憶する処理（Ｓ６０４）を実行する。Ｓ６０５の処理にて、モータ制御器１０２〜１０４に配設された回転位置検出器１０８〜１１０より取得したモータ回転角度等を含む、モータ制御器１０２〜１０４のステータス情報Ｓ１，２、Ｓ２，２、Ｓ３，２を上位制御器１０１へ返信する。
【００５８】
続いて、Ｓ６０６の処理にて、受信した指令コマンドＣ１，２、Ｃ２，２、Ｃ３，２をコマンドキューに記憶して、コマンド実行遅延数とコマンドキューデータ数Ｑの比較を行う。初回の指令コマンドＣ１，１、Ｃ２，１、Ｃ３，１、指令実行コマンドＥ１の受信処理にてコマンド実行遅延数分の指令コマンドは、コマンドキューに保存されている。そのため、以降は、指令実行コマンドが受信される度に、モータ制御器に送信された指令コマンドを指令コマンドキューに記憶した後に、指令コマンドキューより指令コマンドＣＥ１，２、ＣＥ２，２、ＣＥ３，２を読み出し、読み出した指令コマンドを実行する。
【００５９】
ここで、指令コマンドキューより読み出される指令コマンドＣＥ１，２、ＣＥ２，２、ＣＥ３，２は、Ｃ１，１、Ｃ２，１、Ｃ３，１になり、指令コマンドに付加される回転目標角度指令値はＲ１，１、Ｒ２，１、Ｒ３，１となる。
【００６０】
次に、Ｓ６０９の処理にて、前回の指令実行コマンドＥ１の受信時刻Ｔ１，１、Ｔ２，１、Ｔ３，１と今回の指令実行コマンドＥ２の受信時刻Ｔ１，２、Ｔ２，２、Ｔ３，２から指令実行コマンド受信間隔ΔＴ１，２、ΔＴ２，２、ΔＴ３，２を算出する。モータ制御器１０２〜１０４は、Ｓ６１０、Ｓ６１１、Ｓ６１２の処理でモータ制御に用いる制御パラメータの変更を行った後、コマンドキューより読み出した指令コマンドＣＥ１，２、ＣＥ２，２、ＣＥ３，２を実行し、モータの駆動を開始するＳ６１３を実行する。Ｓ６１３の処理では、指令コマンドＣＥ１，２、ＣＥ２，２、ＣＥ３，２に含まれるモータの回転目標角度指令値とモータの回転角度Ｐ１，２、Ｐ２，２、Ｐ３，２をモータ回転軸に結合され回転位置検出器１０８〜１１０より取得する。そして、モータの回転目標角度指令値とモータの回転角度Ｐ１，２、Ｐ２，２、Ｐ３，２の偏差に応じてモータ制御器１０２〜１０４に接続されるモータ１０５〜１０７への出力を決定してモータ駆動処理を実行する。
【００６１】
上位制御器１０１は、モータ制御器１０２〜１０４からのステータス情報Ｓ１，２、Ｓ２，２、Ｓ３，２を確認後、モータ制御器に異常等の発生がなければ、Ｓ５０３のシーケンスにて、次の指令コマンドＣ１，３、Ｃ２，３、Ｃ３，３を送信する。そして、モータ制御器１０２〜１０４は、指令コマンドＣ１，３、Ｃ２，３、Ｃ３，３を受信して、指令コマンドと指令コマンドに付加される回転目標角度指令値Ｒ１，３、Ｒ２，３、Ｒ３，３を受信バッファへ記憶する。
【００６２】
続いて、上位制御器１０１は、モータ制御器１０２〜１０４へ指令実行コマンドＥ３をブロードキャスト送信する。上位制御器１０１よりブロードキャスト送信された指令実行コマンドＥ３をモータ制御器１０２〜１０４が受信すると、ブロードキャスト受信割り込みが、モータ制御器１０２〜１０４の演算器にて発生する。モータ制御器１０２〜１０４は、ブロードキャスト受信割り込み処理の中で、各モータ制御器に内蔵するタイマにて指令実行コマンドＥ３の受信時刻Ｔ１，３、Ｔ２，３、Ｔ３，３を記憶する処理６０４を実行する。また、Ｓ６０５の処理にて、モータ制御器１０２〜１０４に接続されるモータ軸に結合された回転位置検出器１０８〜１１０より取得したモータ回転角度等を含む、モータ制御器１０２〜１０４のステータス情報を上位制御器１０１へ返信する。
【００６３】
続いて、Ｓ６０６の処理にて受信した指令コマンドＣ１，３、Ｃ２，３、Ｃ３，３をコマンドキューに記憶する。そして、指令コマンドキューより指令コマンドＣＥ１，３、ＣＥ２，３、ＣＥ３，３を読み出し、読み出した指令コマンドを実行する処理となる。ここで、指令コマンドキューより読み出される指令コマンドＣＥ１，３、ＣＥ２，３、ＣＥ３，３は、Ｃ１，２、Ｃ２，２、Ｃ３，２となり、指令コマンドに付加される回転目標角度指令値はＲ１，２、Ｒ２，２、Ｒ３，２となる。
【００６４】
次に、Ｓ６０９の処理にて、前回の指令実行コマンドＥ１の受信時刻Ｔ１，２、Ｔ２，２、Ｔ３，２と今回の指令実行コマンドＥ３の受信時刻Ｔ１，３、Ｔ２，３、Ｔ３，３から指令実行コマンド受信間隔ΔＴ１，３、ΔＴ２，３、ΔＴ３，３を算出する。モータ制御器１０２〜１０４は、Ｓ６１０、Ｓ６１１、Ｓ６１２の処理にてモータ制御に使用する制御パラメータの値の変更処理を行い、読み出した指令コマンドＣＥ１，３、ＣＥ２，３、ＣＥ３，３を実行してモータの駆動を開始するＳ６１３の処理を実行する。
【００６５】
Ｓ６１３の処理では、まず、指令コマンドＣＥ１，３、ＣＥ２，３、ＣＥ３，３に含まれるモータの回転目標角度指令値と、モータの回転角度Ｐ１，３、Ｐ２，３、Ｐ３，３をモータ回転軸に結合され回転位置検出器１０８〜１１０より取得する。そして、回転目標角度指令値と回転角度Ｐ１，３、Ｐ２，３、Ｐ３，３の偏差に応じて、モータ制御器１０２〜１０４に接続されるモータ１０５〜１０７への出力を決定してモータ駆動処理を実行する。以降、同様の処理を繰り返して、上位制御器１０１より送信された指令コマンドを実行してモータ駆動制御を実行する。
【００６６】
次に、モータ駆動を停止する際の処理内容について図６を参照しながら説明する。図６は、停止時のモータ制御器のフローチャートである。
【００６７】
モータの停止制御は、上位制御器１０１からの停止指令コマンドを受信することにより実行される。本実施形態においては、即時停止を実行するモータ停止方法と、コマンドキューに残存する指令コマンドを実行後にモータ停止を実行するモータ停止方法と、の２種類の停止方法を有している。
【００６８】
モータの即時停止は、非常停止等の緊急性を有する状況でのモータ停止であり、コマンドキューに残存するコマンドを実行せずにモータ駆動を停止する。一方、コマンドキューに残存する指令コマンドを実行後にモータ停止は、通常の制御シーケンスによるモータ停止方法となる。これらの停止方法の切り替えは、上位制御器１０１の判断により行われ、上位制御器１０１がシステムの状況によりモータの停止方法を選択して、モータ停止方法を選択するフラグ情報を含む停止指令コマンドを送信することによって実現される。
【００６９】
次に、モータ停止時の処理内容について説明する。上位制御器１０１よりモータ制御器に停止方法を選択するフラグ情報を含む停止指令コマンドＳが送信されると、停止指令コマンドに付与されているＩＤによりモータ制御器が識別され、該当するモータ制御器は停止指令コマンドＳを受信する。Ｓ７０１の処理にて、停止指令コマンドを受信したモータ制御器は、通信制御器に内蔵される不図示の受信バッファに記憶される。
【００７０】
続いて、上位制御器より指令実行コマンドＥが送信され、Ｓ７０２の処理にて、指令実行コマンドＥ受信処理がなされる。そして、指令実行コマンドＥ受信処理の中で、上位制御器１０１へ該当モータ制御器のモータ回転角度情報を含むステータス情報を返信する処理がＳ７０３として実行される。次に停止指令コマンドＳを読み出し、停止指令コマンドＳに付加される停止モードパラメータの判定により緊急停止か通常停止の判別をＳ７０４の処理で実行される。Ｓ７０４の処理にて、緊急停止の場合はコマンドキュー内のデータをすべてクリアし（Ｓ７１３）、モータへのＰＷＭ出力停止をＳ７１２の処理にて行う。この際に、モータが負荷イナーシャの大きい物体を駆動している場合には、上位制御器にて減速停止させるモータ回転角度指令値を生成する。
【００７１】
ここで、生成したモータの回転目標角度指令値情報を含む指令コマンドを順次送信して減速停止させるか、モータ制御器内で減速停止する速度指令値を生成して、モータ制御器で実行されている速度制御にて減速停止制御を行ってもよい。
【００７２】
通常停止の場合には、Ｓ７０６の処理にて、現在のキューに残存する指令コマンド数を判定して、指令コマンドが残っている場合にはＳ７０７の処理にてモータ制御器内のタイマにより規定制御周期間隔で指令コマンドを取り出す。そして、Ｓ７０８の処理にて指令コマンドを実行する処理をキューが空になるまで続ける。キューに残るすべての指令コマンドを実行すると、Ｓ７０９の処理にて、モータに結合される位置検出器より現在位置情報を取得する。そして、前回の制御周期における位置情報との差分をモータ軸の回転速度として、予め設定された規定速度と比較することによりモータ出力を停止させるかを判定する。
【００７３】
現在のモータ軸回転速度が規定速度より超過している場合には、モータ制御器に配設されるモータドライバ回路及びモータが接続される機構部品の損傷を抑制するために速度制御による減速停止処理を実行する。
【００７４】
減速停止処理における減速加速度は、予め設定された加速度を用いて速度指令値をモータ制御器内の処理にて生成して、モータ軸の回転速度が規定速度以下になるまで速度制御を実行する処理がなされている。また、減速停止時の速度指令値生成方法は、予め設定された減速比率によって、現在速度に減速比率を乗ずる値を速度指令値として減速停止処理を速度制御によって行ってもよい。本実施形態においては、減速停止処理時に速度制御を実行する周期は０．５ミリ秒とした。
【００７５】
減速停止処理後、モータ軸の回転速度が規定速度以下となり次第、モータ出力の停止を行う。本実施形態においては、予め設定された減速停止時間により、減速停止時間を超過した場合にはモータ軸の回転速度が規定速度以下となっていない場合もＳ７１２の処理にてモータへのＰＷＭ出力を停止させる処理とし、減速停止時間は５００ミリ秒に設定した。
【００７６】
上位制御器から指令コマンドに同期してモータ駆動制御を処理するモータ制御器において以上の方法を用いたモータ制御器によって等速回転にてモータ駆動を行った際のモータ回転速度及びモータトルクの計測結果を図７（ｂ）に示す。一方、図７（ａ）は、上位制御器の計算負荷上昇により制御指令送信周期が変動した際のモータ回転速度とモータトルクの計測結果である。
【００７７】
図７（ａ）では、図７（ｂ）と比較してモータ回転速度、モータトルクともに微小な振動が見られる。これは、モータ制御器の制御周期が変動することよって、予め規定制御周期にて調整された制御パラメータによりモータ駆動をことに起因する。モータ駆動を、目標値と応答値の偏差から比例制御、積分制御、微分制御を行うＰＩＤ制御にてモータへの出力を決定する場合には、上位制御器からの制御指令が変動する。即ち制御周期が変動することによって、例えば、微分制御における微分時間が変化することになる。これにより、微分制御係数を固定値にてＰＩＤ制御を行い、モータ出力値を決定する場合にモータ出力値が微分時間の変動に応じて微小に変動することになる。
【００７８】
モータ出力値に変動は、モータ巻線に流れる電流が変化してモータトルク及びモータ回転速度が変動する。これにより、モータ制御器を各軸に配したロボットアームに利用する場合には、モータ回転速度の変動によりロボットアームの位置再現性の低下を招くことになる。また、ハンド等にモータ制御器を利用する場合には、モータトルクの変動によって、把持動作時の把持力の変動を発生させることが懸念される。
【００７９】
図７（ｂ）は、図７（ａ）と比較して、上位制御器からの指令実行コマンド受信周期が変動した際も、モータの回転速度モータトルクの変動が抑制されていることが確認できる。これにより、上位制御器から送信される指令コマンドの受信周期が変動しても、モータの回転速度やトルクの変動を低減でき、アクチュエータ等の駆動制御に用いる場合には、その位置精度等の改善を工業的に安価かつ容易に実現することができる。
【００８０】
なお、本発明は、指令実行コマンドの受信間隔が指定間隔（本実施形態においては２ミリ秒）以下である場合が好ましく、特に指定間隔の半分以下であることが好ましい。
【符号の説明】
【００８１】
１    ロボット装置
２    ロボットアーム
３    分散制御装置
１０１    上位制御器
１０２、１０３、１０４    モータ制御器
１０５、１０６、１０７    モータ
【図１】
2014123188.tif 000009
【図２】
2014123188.tif 000010
【図３】
2014123188.tif 000011
【図４】
2014123188.tif 000012
【図５】
2014123188.tif 000013
【図６】
2014123188.tif 000014
【図７】
2014123188.tif 000015