(57)【要約】【課題】同期処理を行う際に、駆動指令の変動により制御の連続性が損なわれ、回転モータの出力トルク等の変動を招いていた。【解決手段】各モータ制御装置Ｍ１〜Ｍ６は、回転モータ１２１〜１２６の回転位置が位置指令に追従するようモータ駆動部１０９に出力する駆動指令を、予め設定された時間間隔で周期的に演算するモータ制御処理を行う演算部１１１を備える。この演算部１１１は、外部から同期指令を受信したときに、駆動指令の演算の開始時刻を同期指令に同期させる同期処理を行う。この同期処理として、演算部１１１は、同期指令を受信したときに演算する駆動指令の演算開始時刻と同期指令の受信時刻との時間差を求める。次いで、演算部１１１は、時間差を所定数に分割して複数の調整時間を求める。次いで、演算部１１１は、同期指令を受信してからの所定数の周期の各時間間隔に、各調整時間をそれぞれ加算する補正を行う。【選択図】図２
2013169063.tif 000002
【特許請求の範囲】
【請求項１】
入力を受けた駆動指令に従って回転モータを駆動するモータ駆動部と、
前記回転モータの回転位置が外部から受信した位置指令に追従するよう前記モータ駆動部に出力する前記駆動指令を、予め設定された時間間隔で周期的に演算するモータ制御処理を行うと共に、外部から同期指令を受信したときに、前記駆動指令の演算の開始時刻を前記同期指令に同期させる同期処理を行う演算部と、を備え、
前記演算部は、前記同期処理として、前記同期指令を受信したときに演算対象となっている前記駆動指令の演算開始時刻と前記同期指令の受信時刻との時間差を求め、前記時間差を所定数に分割して複数の調整時間を求め、前記同期指令を受信してからの前記所定数の周期の前記各時間間隔に、前記各調整時間をそれぞれ加算する補正を行う、
ことを特徴とするモータ制御装置。
【請求項２】
前記演算部は、前記各調整時間を漸次大きくなるように求める、
ことを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
複数の関節と前記各関節をそれぞれ駆動する複数の回転モータとを有するロボット本体と、
前記各回転モータをそれぞれ制御する複数の請求項１又は２に記載のモータ制御装置と、
前記各モータ制御装置にそれぞれ位置指令を送信すると共に、前記各モータ制御装置に同時に同期指令を送信する上位制御装置と、を備えたことを特徴とするロボット装置。
【請求項４】
入力を受けた駆動指令に従って回転モータを駆動するモータ駆動部と、前記回転モータの回転位置が外部から受信した位置指令に追従するよう前記モータ駆動部に出力する前記駆動指令を、予め設定された時間間隔で周期的に演算するモータ制御処理を行うと共に、外部から同期指令を受信したときに、前記駆動指令の演算の開始時刻を前記同期指令に同期させる同期処理を行う演算部と、を備えたモータ制御装置のモータ制御方法において、
前記演算部が、前記同期処理として、前記同期指令を受信したときに演算対象となっている前記駆動指令の演算開始時刻と前記同期指令の受信時刻との時間差を求めるステップと、
前記演算部が、前記時間差を所定数に分割して複数の調整時間を求めるステップと、
前記演算部が、前記同期指令を受信してからの前記所定数の周期の前記各時間間隔に、前記各調整時間をそれぞれ加算する補正を行うステップと、を備えた、
ことを特徴とするモータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回転モータを制御するモータ制御装置、複数のモータ制御装置を備えて回転モータを分散制御するロボット装置、モータ制御方法に関する。
【背景技術】
【０００２】
一般に、産業用ロボットにおけるロボットアーム等のロボット本体に複数の回転モータ及びモータ制御装置を配設し、上位制御装置により各モータ制御装置に各回転モータの位置指令を送信し、各モータ制御装置に各回転モータを制御させる分散制御を行っている。各モータ制御装置は、駆動指令に従って回転モータを駆動するモータ駆動部と、このモータ駆動部に出力する駆動指令を周期的に演算する演算部とを有している。この分散制御において、モータ制御装置間でモータ制御処理、即ち駆動指令の演算のタイミングが非同期に行われている場合には、産業用ロボットの位置精度や繰り返し位置精度の低下を招いていた。そこで、従来、分散制御において各モータ制御装置間の演算のタイミングの同期が図られている。
【０００３】
この同期方法として、通信ライン等の共有信号線を使用することや同期指令を発行してモータ制御時間を調整することで、各モータ制御装置間のモータ制御処理周期の同期を図ることが特許文献１に開示されている。また、各モータ制御装置間で共有する信号線へ上位制御装置から同期信号を送信することによって、モータ制御装置間での同期を図ることが特許文献２に開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−３１９１８４号公報
【特許文献２】特開２０１０−０７４２１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述したモータ制御処理において、モータ制御処理の周期の急変は制御が不連続となり、回転モータのトルク変動が発生する。つまり、モータ制御装置が同期指令を受信した時刻に、モータ制御処理の開始時刻を変更して即時合致させると、同期指令の受信前後にて駆動指令が急激に変動することがある。特に変更時間が大きい場合には、同期指令の受信前後にて駆動指令が変動大となる。
【０００６】
例えばモータ制御処理における電流制御の場合には、各モータ制御装置の処理内で周期的に電流を検出して、回転モータに流れる電流が電流指令となるように制御される。しかしながら、同期指令の受信時刻に同期するように電流制御のための周期タイマの時間調整が行わるので、モータ電流検出周期が不定期となり、モータ電流制御への入力となる電流指令と回転モータの電流との差分が増大する。モータ電流制御における電流指令と回転モータの電流との差分の増大はモータトルクの変動を発生させ、産業用ロボットの位置精度やハンドロボット等の物品を把持する場合にはその把持力等に影響を与える。
【０００７】
そこで、本発明は、同期処理を実行した際に、回転モータのトルク変動を抑制することが可能なモータ制御装置、複数の回転モータを分散制御するロボット装置、モータ制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のモータ制御装置は、入力を受けた駆動指令に従って回転モータを駆動するモータ駆動部と、前記回転モータの回転位置が外部から受信した位置指令に追従するよう前記モータ駆動部に出力する前記駆動指令を、予め設定された時間間隔で周期的に演算するモータ制御処理を行うと共に、外部から同期指令を受信したときに、前記駆動指令の演算の開始時刻を前記同期指令に同期させる同期処理を行う演算部と、を備え、前記演算部は、前記同期処理として、前記同期指令を受信したときに演算対象となっている前記駆動指令の演算開始時刻と前記同期指令の受信時刻との時間差を求め、前記時間差を所定数に分割して複数の調整時間を求め、前記同期指令を受信してからの前記所定数の周期の前記各時間間隔に、前記各調整時間をそれぞれ加算する補正を行う、ことを特徴とする。
【発明の効果】
【０００９】
本発明によれば、回転モータのトルク変動が生じるのを抑制しながらも、駆動指令の演算開始時刻を同期させることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の第１実施形態に係るロボット装置の概略構成を示す斜視図である。
【図２】ロボット装置のシステム構成を示すブロック図である。
【図３】各モータ制御装置の演算部で処理される制御ブロック図である。
【図４】演算部によるモータ制御処理のフィードバック制御動作を説明するための制御ブロック図である。
【図５】上位制御装置と各モータ制御装置の処理シーケンス図である。
【図６】本第１実施形態のモータ制御装置によるモータ制御周期の同期処理を示すタイムチャートである。
【図７】本第１実施形態の各モータ制御装置における演算部の同期処理を示すフローチャートである。
【図８】本発明の第２実施形態に係るモータ制御装置によるモータ制御周期の同期処理を示すタイムチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態を、図面を参照しながら詳細に説明する。以下に図を用いて本発明の実施形態について詳細に説明するが、本発明の分散制御を利用した産業用ロボットの構成及びモータ制御の同期処理方法はこれにより何ら限定されるものではない。
【００１２】
［第１実施形態］
図１は、本発明の第１実施形態に係るロボット装置の概略構成を示す斜視図である。ロボット装置１は、産業用ロボットであり、ロボットコントローラ１００と、ロボット本体としての多軸（６軸）のロボットアーム３００と、ロボットアーム３００に設けられ、コントローラ１００に接続された複数（６つ）のモータ制御装置Ｍ１〜Ｍ６とを備える。また、ロボット装置１は、ロボットアーム３００の先端に設けられたロボットハンド４００を備える。
【００１３】
ロボットアーム３００は、アームリンクを連結してなる複数（６つ）の関節Ｊ１〜Ｊ６と、各関節に設けられ、各関節を駆動する複数（６つ）の回転モータ１２１〜１２６と、を有している。各モータ制御装置Ｍ１〜Ｍ６は、各回転モータ１２１〜１２６に接続されており、本実施形態では各回転モータ１２１〜１２６に隣接して設けられている。各回転モータ１２１〜１２６は、例えばブラシレスＤＣモータ等の回転電機である。
【００１４】
ロボットコントローラ１００は、各モータ制御装置Ｍ１〜Ｍ６に接続された、上位制御装置１０１及び電源装置１０２を備えている。上位制御装置１０１は、各モータ制御装置Ｍ１〜Ｍ６に指令を送信することで各回転モータ１２１〜１２６に各回転モータ１２１〜１２６を制御させる分散制御を行う。上位制御装置１０１は、教示による動作を実現するためにロボットアーム３００の軌道を計算する。上位制御装置１０１は、各モータ制御装置Ｍ１〜Ｍ６に、軌道計算の結果に基づく各回転モータの動作を指示する動作指令（具体的には、位置指令）、動作指令に基づく動作の実行の開始を指示する動作実行開始指令、同期指令等、各種指令を送信する。電源装置１０２は、各モータ制御装置Ｍ１〜Ｍ６、及び各モータ制御装置Ｍ１〜Ｍ６を介して各回転モータ１２１〜１２６に電力を供給する。
【００１５】
図２は、ロボット装置１のシステム構成を示すブロック図である。各モータ制御装置Ｍ１〜Ｍ６は、共通の通信線であるシリアル通信線１３０で上位制御装置１０１に接続されている。上位制御装置１０１は、モータ制御装置Ｍ１〜Ｍ６へシリアル通信線１３０を介してシリアル通信によりＣＡＮ等の通信プロトコルにて各種指令を信号として送信する。また、上位制御装置１０１と各モータ制御装置Ｍ１〜Ｍ６との間では、シリアル通信線１３０を介してステータス通知等の送受信が行われている。
【００１６】
各モータ制御装置Ｍ１〜Ｍ６は、同一の構成であり、以下、１つのモータ制御装置Ｍ１について説明し、他のモータ制御装置Ｍ２〜Ｍ６については、同一符号を付して説明を省略する。
【００１７】
モータ制御装置Ｍ１は、上位制御装置１０１から各種指令を示す信号を受信する通信ドライバ１０３と、電源装置１０２により印加された電圧を所定の直流電圧に変換するＤＣ電圧変換器１０４と、を備えている。またモータ制御装置Ｍ１は、マイクロコンピュータで構成された制御器１０５と、複数のスイッチング素子を有し、回転モータ１２１に交流電流を供給するインバータ１０６と、を備えている。
【００１８】
制御器１０５は、演算部１１１と、通信制御部１１２と、メモリ１１３と、クロック生成部１１４と、タイマ１１５と、ＰＷＭ波形生成部１１６と、ＡＤ変換部１１７と、カウンタ１１８と、を有している。本実施形態では、ＰＷＭ波形生成部１１６とインバータ１０６とでモータ駆動部１０９が構成されている。
【００１９】
また、モータ制御装置Ｍ１は、インバータ１０６から回転モータ１２１（具体的には回転モータ１２１の巻線）に流れる電流を検出する電流検出部１０７を備えている。電流検出部１０７は、電流検出結果を示す電流値を、電圧として出力する。つまり、電流検出部１０７は、電流値に比例又は対応する電圧値の電圧を出力する。
【００２０】
また、モータ制御装置Ｍ１は、カウンタ１１８と共に、回転モータ１２１の回転位置、具体的には回転モータ１２１のロータの回転位置（換言すると回転角度）を検出する位置検出部１１０を構成する位置センサ１０８を備えている。位置センサ１０８は、例えばロータリエンコーダであり、ロータの回転によりパルスを出力する。カウンタ１１８は、位置センサ１０８が出力したパルスの数をカウントする。そして、カウンタ１１８は、カウント結果を回転モータ１２１の回転位置情報（以下、単に位置情報という）として演算部１１１に出力する。このように、カウンタ１１８が位置センサ１０８のパルス数をカウントすることで回転モータ１２１の回転位置を検出している。
【００２１】
制御器１０５の通信制御部１１２は、通信ドライバ１０３からの入力を受けた各種指令のデータをメモリ１１３に記憶させる制御を行う。
【００２２】
メモリ１１３は、ＲＡＭ等の記憶部であり、通信制御部１１２の制御の下、受信した各種指令のデータを記憶する。
【００２３】
クロック生成部１１４は、例えば水晶発振器であり、固有の発振周波数でクロック信号を生成し出力する。タイマ１１５は、クロック生成部１１４が生成したクロック信号に基づいて計時を行い、その計時結果を演算部１１１に出力する。
【００２４】
演算部１１１は、例えばＣＰＵであり、上位制御装置１０１からの各種指令、電流検出結果を示す電流情報、位置検出結果を示す位置情報に基づき、不図示の不揮発メモリに記憶された処理プログラムに従って演算処理を行う。演算部１１１は、演算処理の一つとして、モータ駆動部１０９を構成するＰＷＭ波形生成部１１６に出力する駆動指令を演算する。そして、演算部１１１は、この駆動指令の演算が終了した時点で駆動指令をＰＷＭ波形生成部１１６に出力する。
【００２５】
ＰＷＭ波形生成部１１６は、演算部１１１からの駆動指令の入力を受け、インバータ１０６の各スイッチング素子のゲート端子（ベース端子）に出力するＰＷＭ信号を生成する。インバータ１０６は、ＰＷＭ信号によるスイッチング素子のスイッチング動作により、供給された直流電圧をパルス幅変調して回転モータ１２１に出力する。これにより、回転モータ１２１には、交流電流、例えば３相の交流電流が出力される。以上のＰＷＭ波形生成部１１６及びインバータ１０６の動作により、モータ駆動部１０９は、入力を受けた駆動指令に従って回転モータ１２１を駆動する。つまり、モータ駆動部１０９は、入力を受けた駆動指令に応じて回転モータ１２１に電流を供給する。
【００２６】
ＡＤ変換部１１７は、電流検出部１０７からの電流値を示す出力電圧（アナログ信号）を、演算部１１１で認識可能なデジタル信号に変換し、この電流情報を演算部１１１に出力する。
【００２７】
演算部１１１は、ロボットアーム３００の挙動、つまり回転モータ１２１の回転位置及び電流をモニタし、上位制御装置１０１から受信した指令に基づいて、フィードバック制御を行い、回転モータ１２１の駆動を制御する。具体的には演算部１１１は、電流検出部１０７からの電流情報と位置検出部１１０により取得した位置情報とに基づいて、位置、速度、電流制御処理にてモータの位置、速度、電流（トルク）を制御する駆動指令を演算する演算処理を実行する。
【００２８】
図３に、各モータ制御装置Ｍ１〜Ｍ６の演算部１１１で処理される制御ブロック図を示す。上位制御装置１０１からの指令（コマンド）を受信する処理は、指令を受信した際に割り込み処理（コマンド受信割り込み）を発生させ、割り込み処理内にて以下の処理を実行する。コマンド受信割り込みは、タイマ、ハードウェア等の他の割り込み発生時に処理が優先されるように優先度の設定がなされている。
【００２９】
まず、演算部１１１は、上位制御装置１０１からの指令（コマンド）の入力を受けた場合、この指令（コマンド）を解析するコマンド解析処理２０１を実行する。そして、演算部１１１は、解析した指令（コマンド）に応じたプログラムを読み出すコマンド分岐処理２０２を実行する。具体的には、演算部１１１は、このコマンド分岐処理２０２で指令が動作指令、つまり位置指令の場合は、モータ制御処理２０３のプログラムを読み出す。そして、演算部１１１は、読み出したプログラムによりモータ制御処理２０３を実行する。また、演算部１１１は、コマンド分岐処理２０２で指令が同期指令の場合は、同期処理２０４のプログラムを読み出す。そして、演算部１１１は、読み出したプログラムにより同期処理２０４を実行する。また、演算部１１１は、コマンド分岐処理２０２で指令がエラーを示すエラー指令の場合は、エラー処理２０５のプログラムを読み出す。そして、演算部１１１は、読み出したプログラムによりエラー処理２０５を実行する。
【００３０】
演算部１１１は、モータ制御処理２０３のプログラムをタイマ割り込み処理内で呼び出し実行する。このモータ制御処理２０３では、位置情報及び電流値情報に基づいたフィードバック制御が演算部１１１により行われる。
【００３１】
図４は、演算部１１１によるモータ制御処理２０３のフィードバック制御動作を説明するための制御ブロック図である。
【００３２】
上位制御装置１０１は、モータ制御装置Ｍ１に回転モータ１２１の回転位置の指令を示す位置指令θｒｅｆを送信する。演算部１１１は、上位制御装置１０１から通信線１３０を介して入力を受けた位置指令θｒｅｆと、位置検出部１１０から取得した回転モータ１２１の回転位置を示す位置情報θとの差分ｅａを演算する処理２１１を行う。
【００３３】
演算部１１１は、差分ｅａに基づき、検出される位置情報θが位置指令θｒｅｆに追従するように、即ち差分ｅａを補償するように、回転モータ１２１のロータの回転速度の指令を示す速度指令Ｗｒｅｆを演算する位置制御処理２１２を行う。この位置制御処理２１２では、ＰＩＤ制御により速度指令Ｗｒｅｆを演算する。
【００３４】
演算部１１１は、定周期に位置検出部１１０から取得した位置情報θに基づき、回転モータ１２１のロータの回転速度（以下、単に速度という）Ｗを求める処理２１３を行う。そして、演算部１１１は、速度指令Ｗｒｅｆと速度Ｗとの差分ｅｂを演算する処理２１４を行う。
【００３５】
演算部１１１は、差分ｅｂに基づき、速度情報Ｗが速度指令Ｗｒｅｆに追従するように、即ち差分ｅｂを補償するように、回転モータ１２１の巻線に流す電流値の指令を示す電流（トルク）指令Ｉｒｅｆを演算する速度制御処理２１５を行う。この速度制御処理２１５では、ＰＩＤ制御により電流指令Ｉｒｅｆを演算する。
【００３６】
演算部１１１は、電流指令Ｉｒｅｆと、ＡＤ変換部１１７を介して電流検出部１０７から取得したモータ各相の電流情報Ｉｕｖｗとの差分ｅｃを演算する処理２１６を行う。また、演算部１１１は、位置検出部１１０から取得した位置情報θをモータ電気角θｅへ変換する電気角変換処理２１７を行う。
【００３７】
演算部１１１は、モータ電気角θｅによりモータ各相の位相を決定すると共に、差分ｅｃに基づき、電流情報Ｉｕｖｗが電流指令Ｉｒｅｆに追従するように、即ち差分ｅｃを補償するように、駆動指令ｘを演算する電流制御処理２１８を行う。この電流制御処理２１８では、ＰＩＤ制御により駆動指令ｘを演算する。
【００３８】
この駆動指令ｘは、モータ駆動部１０９のＰＷＭ波形生成部１１６からＰＷＭ信号を出力させる指令である。ＰＷＭ波形生成部１１６は、駆動指令ｘに従ってＰＷＭ信号を生成し、インバータ１０６に出力する。インバータ１０６は、ＰＷＭ信号に従って直流電圧をパルス幅変調して回転モータ１２１の各相の巻線に印加することで、各相の巻線に交流電流を供給する。
【００３９】
本実施形態では、各モータ制御装置Ｍ１〜Ｍ６は、共有する制御同期信号線を有しておらず、演算部１１１における各処理２１１〜２１８は、クロック生成部１１４にて生成されるクロック信号に同期してなされている。
【００４０】
モータ制御処理２０３は制御器１０５のタイマ割り込み処理内で呼び出しがなされており、各処理２１２，２１５，２１８は予め設定された時間間隔毎に周期的に実行される。タイマ１１５は、クロック信号に基づき各時間間隔をカウントしている。
【００４１】
演算部１１１は、外部、即ち上位制御装置１０１から指令実行開始指令を受信することにより位置制御処理２１２を実行する。上位制御装置１０１は、予め設定された第１時間間隔（例えば２ｍｓ間隔）で指令実行開始指令を送信するので、各モータ制御装置Ｍ１〜Ｍ６は、タイマ１１５で計時した第１時間間隔で位置制御処理２１２を実行する。この位置制御処理２１２では、位置制御処理開始のタイミングで取得した位置情報を用いて、速度指令Ｗｒｅｆの演算を行う。速度制御処理２１５では、タイマ１１５で計時した第２時間間隔（例えば５００μｓ）で取得した速度情報Ｗと、演算により求めた速度指令Ｗｒｅｆとの差分に基づき、第２時間間隔で電流指令Ｉｒｅｆを演算する。電流制御処理２１８では、時間間隔Ｔｂでありタイマ１１５で計時した第３時間間隔（例えば１００μｓ）で取得した電流情報Ｉｕｖｗと、演算により求めた電流指令Ｉｒｅｆとの差分に基づき、第３時間間隔で駆動指令ｘを演算する。
【００４２】
つまり、演算部１１１は、モータ制御処理２０３として、回転モータの回転位置が外部、即ち上位制御装置１０１から受信した位置指令θｒｅｆに追従するようモータ駆動部１０９に出力する駆動指令ｘを、予め設定された時間間隔Ｔｂで周期的に演算する。具体的には、演算部１１１は、モータ制御処理２０３の電流制御処理２１８として、回転モータに供給されている電流が電流指令Ｉｒｅｆに追従するようモータ駆動部１０９に出力する駆動指令ｘを、予め設定された時間間隔Ｔｂで周期的に演算する。電流指令Ｉｒｅｆは、回転モータの回転位置が位置指令θｒｅｆに追従するよう演算される値である。
【００４３】
図５は、上位制御装置１０１と各モータ制御装置Ｍ１〜Ｍ６の処理シーケンス図である。上位制御装置１０１は、教示データに基づく軌道生成の計算の結果、動作指令、即ち位置指令を各モータ制御装置Ｍ１〜Ｍ６にそれぞれシリアル通信線１３０を介して送信する。そして、上位制御装置１０１は、動作指令の送信後に動作指令の実行を開始する指令（指令実行開始指令）を各モータ制御装置Ｍ１〜Ｍ６にシリアル通信線１３０を介して同時に送信する。この指令実行開始指令はブロードキャストコマンドであり、各モータ制御装置Ｍ１〜Ｍ６に第１時間間隔で一斉送信される。この指令実行開始指令を受信した各モータ制御装置Ｍ１〜Ｍ６は位置指令に応じた動作を実行する。
【００４４】
本実施形態では、上位制御装置１０１は、同期指令を送信する際には、同期指令を指令実行開始指令に含めて送信する。具体的には、上位制御装置１０１は、指令実行開始指令のパケットに同期指令を示す情報を付加して送信する。したがって、上位制御装置１０１は、各モータ制御装置Ｍ１〜Ｍ６に同時に同期指令を送信することとなる。
【００４５】
各モータ制御装置Ｍ１〜Ｍ６の演算部１１１は、外部、即ち上位制御装置１０１から同期指令を受信したときに、駆動指令の演算の開始時刻を同期指令に同期させる同期処理２０４を行う。
【００４６】
図６は本第１実施形態のモータ制御装置Ｍ１，Ｍ２によるモータ制御周期の同期処理を示すタイムチャートであり、図７は、本第１実施形態の各モータ制御装置Ｍ１〜Ｍ６における演算部１１１の同期処理を示すフローチャートである。以下、図７に示すフローチャートに沿って、図６を参照しながら説明する。
【００４７】
ここで、モータ制御周期時間、即ち駆動指令を周期的に演算開始する時間間隔をＴｂとする。この時間間隔Ｔｂは、予め設定された値であり、例えば１００マイクロ秒である。この時間間隔Ｔｂは、回転モータに流れる電流の値を取得する時間間隔でもある。つまり、駆動指令の演算開始時刻は、電流の値を取得する時刻でもある。
【００４８】
また、Ｎは、２以上の整数値である所定数、ｎは、１，２，…，Ｎの値を取る整数値である。Ｔｍ１，ｎ、Ｔｍ２，ｎは、各モータ制御装置Ｍ１，Ｍ２における駆動指令の演算開始時刻、Ｔｓは同期指令の受信時刻である。本実施形態では、演算部１１１は、駆動指令の演算開始時刻Ｔｍ１，ｎ、Ｔｍ２，ｎで電流検出部１０７から電流情報を取得し、電流制御処理２１８にて駆動指令ｘを演算する。
【００４９】
まず、各モータ制御装置Ｍ１〜Ｍ６の演算部１１１は、指令（コマンド）の解析を行い（Ｓ１）、指令（コマンド）をセットする（Ｓ２）。次に、演算部１１１は、指令が同期指令であるか否かを判断する（Ｓ３）。ここで、同期指令は、第１時間間隔、例えば約２ミリ秒毎に送信されるいずれかの指令実行開始指令に含めて送信されるものである。
【００５０】
演算部１１１は、指令が同期指令である場合（Ｓ３：Ｙｅｓ）、同期処理を行うが、その同期処理として、同期指令を受信したときに演算対象となっている駆動指令の演算開始時刻Ｔｍと同期指令の受信時刻Ｔｓとの時間差ΔＴを求める（Ｓ４）。
【００５１】
例えば、図６に示すように、モータ制御装置Ｍ１の演算部１１１は、駆動指令を演算するモータ制御処理を行うが、同期指令を受信したとき、同期指令の受信時刻Ｔｓと、そのときに演算している駆動指令の演算開始時刻Ｔｍ１，１との時間差ΔＴ１を求める。同様に、モータ制御装置Ｍ２の演算部１１１は、同期指令の受信時刻Ｔｓと、そのときに演算している駆動指令の演算開始時刻Ｔｍ２，１との時間差ΔＴ２を求める。なお、図６では、同期指令が駆動指令の演算中に受信された場合について図示しているが、駆動指令の演算終了後に同期指令が受信される場合もある。
【００５２】
次に、演算部１１１は、時間差ΔＴを所定数Ｎに分割して複数の調整時間Ｔ１，Ｔ２，…，ＴＮを求める（Ｓ５）。例えば、図６に示すように、モータ制御装置Ｍ１の演算部１１１は、時間差ΔＴ１を所定数Ｎに分割して複数の調整時間Ｔ１，１，Ｔ１，２，…，Ｔ１，Ｎを求める。モータ制御装置Ｍ１の演算部１１１は、時間差ΔＴ２を所定数Ｎに分割して複数の調整時間Ｔ２，１，Ｔ２，２，…，Ｔ２，Ｎを求める。
【００５３】
本実施形態では、各モータ制御装置Ｍ１〜Ｍ６の演算部１１１は、同じ値である所定数Ｎで時間差ΔＴを分割する。なお、各調整時間の時間幅は任意に設定することができるが、本実施形態では演算を容易にするために、各モータ制御装置Ｍ１〜Ｍ６の演算部１１１は、時間差ΔＴを所定数Ｎで等分割し、各調整時間をＴｎ＝ΔＴ／Ｎとする。
【００５４】
次に、演算部１１１は、同期指令を受信してからのｎ周期目の時間間隔Ｔｂに、調整時間Ｔｎを加算する補正を行い（Ｓ６）、モータ制御処理（具体的には電流制御処理２１８）を実行する（Ｓ７）。演算部１１１は、ステップＳ６，Ｓ７の処理を、ｎ＝１からｎ＝Ｎまで繰り返し行う。つまり、演算部１１１は、同期指令を受信してからの所定数Ｎの周期（Ｎ周期）の各時間間隔Ｔｂに、各調整時間Ｔ１〜ＴＮをそれぞれ加算する補正を行う。例えば、図６に示すように、モータ制御装置Ｍ１の演算部１１１は、同期指令を受信したときからＮ周期の各時間間隔Ｔｂに各調整時間Ｔ１，１〜Ｔ１，Ｎを加算する補正を行う。モータ制御装置Ｍ２の演算部１１１は、同期指令を受信したときからＮ周期の各時間間隔Ｔｂに各調整時間Ｔ２，１〜Ｔ２，Ｎを加算する補正を行う。このとき、各モータ制御装置Ｍ１〜Ｍ６のタイマ１１５では、演算部１１１の加算補正により、電流制御処理を行う周期のカウント時間が調整時間の分延長するよう調整される。
【００５５】
なお、演算部１１１は、指令が同期指令を含まない指令実行開始指令の場合（Ｓ３：Ｎｏ）、同期処理を行わなくてもよいが、本実施形態では、時間差ΔＴを０にリセットし（Ｓ８）、ステップＳ５の処理に移行する。これにより、同期処理と同一の演算を行うものの、各時間間隔Ｔｂの補正量が０となり、実質的に補正を行っていないこととなる。
【００５６】
以上、同期指令を受信してからＮ周期後には、各モータ制御装置Ｍ１〜Ｍ６におけるモータ制御処理のタイミング（駆動指令の演算開始時刻）がそれぞれ時間差ΔＴ１、ΔＴ２…の分、変更されることとなる。つまり、Ｎ周期後には、各モータ制御装置Ｍ１〜Ｍ６における駆動指令の演算開始時刻が、同期信号に同期することとなる。
【００５７】
したがって、Ｎ周期で段階的に駆動指令の演算開始時刻が調整されるので、回転モータ１２１〜１２６の位置精度の低下やトルク変動が生じるのを抑制しながらも、駆動指令の演算開始時刻を同期指令に同期させることができる。
【００５８】
つまり、ロボット装置１において、モータ制御処理の周期毎に駆動指令の演算開始時刻が調整時間で変更され、同期指令に段階的に合致して、複数のモータ制御装置Ｍ１〜Ｍ６間のモータ制御処理（具体的には電流制御処理）が同期される。したがって、各モータ制御装置Ｍ１〜Ｍ６間で同期信号線を有することなく、モータ制御の同期処理中のトルク変動を抑制することができ、モータ制御装置間でモータ制御処理の同期を容易に実現することができる。
【００５９】
ここで、時間差ΔＴ１、ΔＴ２を等分割したとしても、誤差により調整時間の積算値Ｔｓｕｍ１＝Ｔ１，１＋…＋Ｔ１，Ｎ−１＋Ｔ１，Ｎ、Ｔｓｕｍ２＝Ｔ２，１＋…＋Ｔ２，Ｎ−１＋Ｔ２，ＮがΔＴ１、ΔＴ２以上となる場合がある。この場合、最終タイマ時刻調整時間Ｔ１，Ｎ、Ｔ２，Ｎを、ΔＴ１，Ｎ＝ΔＴ１−Ｔｓｕｍ１、ΔＴ２，Ｎ＝ΔＴ２−Ｔｓｕｍ２にて、時刻調整を行う。これにより、駆動指令の演算開始時刻をより精度よく同期信号に同期させることができる。
【００６０】
［第２実施形態］
次に、本発明の第２実施形態に係るモータ制御装置の同期動作について説明する。図８は、本発明の第２実施形態に係るモータ制御装置Ｍ１によるモータ制御周期の同期処理を示すタイムチャートである。
【００６１】
上記第１実施形態では、時間差ΔＴ１を所定数Ｎで等分割した場合について説明したが、本第２実施形態では、時間差ΔＴ１を所定数ＮでＮ分割する際に、後の周期になるに連れて漸次大きくなるように分割する。具体的には、演算部１１１は、各調整時間がＴ１，１≦Ｔ１，２≦…≦Ｔ１，Ｎ−１≦Ｔ１，Ｎの関係となるように、時間差ΔＴ１をＮ分割する。
【００６２】
ここで、駆動指令の演算開始時刻をＮ周期で同期させる場合、初期の調整時間をＴ１，１＝ΔＴ１／Ｎとし、Ｔ１，ｎ＝Ａ×Ｔ１，ｎ−１として調整時間を段階的に増大させた値とするのがよい。係数Ａは１≦Ａとなる値である。このように係数Ａを予め設定しておくことで、調整時間の演算が容易となる。なお、モータ制御装置Ｍ１について説明したが各モータ制御装置Ｍ２〜Ｍ６についても同様である。
【００６３】
また、上位制御装置１０１からの各モータ制御装置Ｍ１〜Ｍ６への位置指令θｒｅｆ、上位制御装置１０１からの同期指令受信時に位置検出部１１０から読み取った現在位置θとする。また、上位制御装置１０１からの位置指令θｒｅｆと位置検出部１１０から読み取った現在位置θとの差分をｅ＝θｒｅｆ−θとする。位置指令θｒｅｆとモータ制御処理を実行する、即ち駆動指令を周期的に演算する演算開始時刻毎に位置検出部１１０から読み取った現在位置θｎとの差分をｅｎ＝θｒｅｆ−θｎとする。このように定義した場合、各調整時間を演算部１１１によりＴｎ＝Ｋ・ΔＴ・（ｅ−ｅｎ）／ｅ（ただし、ｅ＝０の場合はＴ１＝ΔＴ）の演算式にて決定してもよい。差分ｅｎはＰＩＤ制御により漸次小さくなるので、調整時間Ｔｎは漸次大きくなる。ここで、係数Ｋは各モータ制御装置Ｍ１〜Ｍ６間にて同期完了時間、位置センサ１０８の分解能等で決定される調整係数である。
【００６４】
以上、同期指令を受信してからＮ周期後には、各モータ制御装置Ｍ１〜Ｍ６におけるモータ制御処理のタイミング（駆動指令の演算開始時刻）がそれぞれ時間差ΔＴ変更されることとなる。つまり、Ｎ周期後には、各モータ制御装置Ｍ１〜Ｍ６における駆動指令の演算開始時刻が、同期信号に同期し互いに同期することとなる。
【００６５】
したがって、Ｎ周期で段階的に駆動指令の演算開始時刻が調整されるので、回転モータ１２１〜１２６の位置精度の低下やトルク変動が生じるのを抑制しながらも、駆動指令の演算開始時刻を同期指令に同期させることができる。
【００６６】
つまり、ロボット装置１において、モータ制御処理の周期毎に駆動指令の演算開始時刻が調整時間で変更され、同期指令に段階的に合致して、複数のモータ制御装置Ｍ１〜Ｍ６間のモータ制御処理（具体的には電流制御処理）が同期される。したがって、各モータ制御装置Ｍ１〜Ｍ６間で同期信号線を有することなく、モータ制御の同期処理中のトルク変動を抑制することができ、モータ制御装置間でモータ制御処理の同期を容易に実現することができる。
【００６７】
また、電流制御処理を周期的に行うことで検出される電流Ｉｕｖｗは電流指令Ｉｒｅｆに徐々に近づけられていく。つまり、電流Ｉｕｖｗの調整量は後の周期になるに連れて小さくなる。本実施形態では、後の周期になるに連れて調整時間が漸次大きくなるように求められる。つまり、モータ制御処理のＮ周期において各周期での調整時間Ｔｎが段階的に大きくなるように求められる。
【００６８】
このように、電流制御処理（ＰＩＤ制御）の始めの方では、駆動指令を演算開始する時間間隔が短く、電流情報Ｉｕｖｗを取り込む間隔が短いので、精度よく電流を電流指令Ｉｒｅｆに近づけることができる。そして、電流情報Ｉｕｖｗと電流指令Ｉｒｅｆとの差分が小さくなるに連れて電流情報Ｉｕｖｗを取り込む時間間隔が段階的に長くなるように補正されることになるので、ＰＩＤ制御を行う電流制御処理において時間間隔が長くなることによる影響が受けにくくなる。これにより、駆動指令の過剰な変動をより効果的に抑制することができ、安定して駆動指令の演算開始時刻を同期指令に同期させることができる。
【００６９】
ここで、時間差ΔＴをＮ分割したとしても、誤差により調整時間の積算値Ｔｓｕｍ＝Ｔ１＋…＋ＴＮ−１＋ＴＮがΔＴ以上となる場合がある。この場合、最終タイマ時刻調整時間ＴＮを、ΔＴＮ＝ΔＴ−Ｔｓｕｍにて、時刻調整を行う。これにより、駆動指令の演算開始時刻をより精度よく同期信号に同期させることができる。
【００７０】
なお、本発明は、以上説明した実施形態に限定されるものではなく、多くの変形が本発明の技術的思想内で当分野において通常の知識を有する者により可能である。
【００７１】
上記実施形態では、ロボット本体としてロボットアーム３００の場合について説明したが、これに限定するものではなく、ロボット本体として複数の回転モータを有するロボットハンドの場合についても適用可能である。
【符号の説明】
【００７２】
１…ロボット装置、１０１…上位制御装置、１０９…モータ駆動部、１１１…演算部、１２１〜１２６…回転モータ、２０３…モータ制御処理、２０４…同期処理、３００…ロボットアーム（ロボット本体）
【図１】
2013169063.tif 000003
【図２】
2013169063.tif 000004
【図３】
2013169063.tif 000005
【図４】
2013169063.tif 000006
【図５】
2013169063.tif 000007
【図６】
2013169063.tif 000008
【図７】
2013169063.tif 000009
【図８】
2013169063.tif 000010