(57)【要約】  モータ制御装置は、移動指令生成部と、移動指令処理部と、制御部とを有する。移動指令生成部は、モータの移動指令を出力する。移動指令処理部は、バッファと、フィルタと、処理部と、を有する。バッファは、移動指令を保持する。フィルタは、定数をフィルタ処理し、新たな定数を生成する。処理部は、バッファに保持された移動指令と、フィルタで生成された新たな定数とに基づいて演算処理を行い、新たな定数に比例した新たな移動指令を生成して出力する。制御部は、新たな移動指令に基づいてモータの制御を行う。
2018047394.tif 000002
【特許請求の範囲】
【請求項１】
モータの移動指令を出力する移動指令生成部と、
前記移動指令を保持するバッファと、
定数をフィルタ処理し、新たな定数を生成するフィルタと、
前記バッファに保持された前記移動指令と、前記フィルタで生成された前記新たな定数とに基づいて演算処理を行い、前記新たな定数に比例した新たな移動指令を生成して出力する処理部と、
を有する移動指令処理部と、
前記新たな移動指令に基づいて前記モータの制御を行う制御部と、
を備えた
モータ制御装置。
【請求項２】
前記定数は、前記モータの被駆動体の移動速度に比例した値である
請求項１記載のモータ制御装置。
【請求項３】
前記制御部は、前記新たな移動指令を積算し、前記モータによって駆動される被駆動体の移動量を減算する
請求項１記載のモータ制御装置。
【請求項４】
バッファと、フィルタと、処理部とを有する移動指令処理部を用いてモータの位置制御を行うモータの位置制御方法であって、
前記バッファに移動指令を入力して、保持する第１のステップと、
前記フィルタに定数を入力し、フィルタ処理して、新たな定数を生成する第２のステップと、
前記バッファに保持された前記移動指令を取り出して、前記処理部内の第１の保持部に保持された値に加算して、第１の加算値として保持するとともに、
前記定数を前記処理部内の第２の保持部に保持された値に加算して、第２の加算値として保持する第３のステップと、
前記新たな定数と、前記第１の加算値と、前記第２の加算値と、に基づいて、演算を行い、前記新たな定数に比例する新たな移動指令を生成するとともに、
前記第１の保持部に保持された前記第１の加算値から前記新たな移動指令を減算した値を前記第１の保持部に保持し、かつ、
前記第２の保持部に保持された前記第２の加算値から前記新たな定数を減算した値を前記第２の保持部に保持する第４のステップと、
を備える
モータの位置制御方法。
【請求項５】
前記第３のステップにおいて、前記第１の保持部に保持された前記第１の加算値を取り出して、前記処理部内の第３の保持部に保持した後に、前記バッファから前記移動指令を取り出して、前記第１の保持部に入力して保持し、
前記新たな定数から前記第２の保持部に保持された前記第２の加算値を減算した後に、前記第２の保持部に前記定数を入力して保持し、
第４のステップにおいて、前記演算の結果に、前記第３の保持部に保持された前記第１の加算値を加算して、前記新たな移動指令として出力する
請求項４に記載のモータの位置制御方法。
【請求項６】
前記第１のステップにおいて、前記バッファに前記移動指令及び前記定数を入力して、保持し、
前記第３のステップにおいて、前記バッファに保持された前記定数を前記第２の保持部に加算または入力して保持する
請求項４に記載のモータの位置制御方法。
【請求項７】
前記第２のステップにおいて、前記バッファに入力される前記移動指令の個数と同じ個数の前記定数が、前記フィルタに入力されてフィルタ処理され、
前記新たな定数が所定の値以下になるまで、前記第１のステップから前記第４のステップまでの一連の処理を繰り返し実行する
請求項４に記載のモータの位置制御方法。
【請求項８】
前記第２のステップにおいて、前記バッファに入力される前記移動指令の個数と同じ個数の前記定数が、前記フィルタに入力されてフィルタ処理され、
前記新たな定数が所定の値以下になるまで、前記第１のステップから前記第４のステップまでの一連の処理を繰り返し実行する
請求項５に記載のモータの位置制御方法。
【請求項９】
前記第２のステップにおいて、前記バッファに入力される前記移動指令の個数と同じ個数の前記定数が、前記フィルタに入力されてフィルタ処理され、
前記新たな定数が所定の値以下になるまで、前記第１のステップから前記第４のステップまでの一連の処理を繰り返し実行する
請求項６に記載のモータの位置制御方法。
【請求項１０】
前記第１のステップにおいて、前記バッファに前記移動指令及び前記定数を入力して、保持し、
前記第３のステップにおいて、前記バッファに保持された前記定数を前記第２の保持部に加算または入力して保持する
請求項５に記載のモータの位置制御方法。
【請求項１１】
前記第２のステップにおいて、前記バッファに入力される前記移動指令の個数と同じ個数の前記定数が、前記フィルタに入力されてフィルタ処理され、
前記新たな定数が所定の値以下になるまで、前記第１のステップから前記第４のステップまでの一連の処理を繰り返し実行する
請求項１０に記載のモータの位置制御方法。
【請求項１２】
モータと、
前記モータを制御する、請求項１または２に記載のモータ制御装置と、前記モータによって駆動される被駆動体と、
を備え、
前記フィルタのカットオフ周波数は、前記被駆動体の固有振動数である産業用機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、移動指令をフィルタ処理して位置制御を行うモータ制御装置並びにモータの位置制御方法、及びこの制御装置を用いた産業用機械に関する。
【背景技術】
【０００２】
従来、自動搬送機やロボット等を動作させるためのモータの位置制御を行うにあたって、特許文献１に示すように、移動指令生成部と制御部との間にフィルタを挿入し、モータの移動指令をフィルタ処理により滑らかな加減速動作にする技術が知られていた。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１０２２１５号公報
【発明の概要】
【０００４】
本開示のモータ制御装置は、移動指令生成部と、移動指令処理部と、制御部とを有する。
【０００５】
移動指令生成部は、モータの移動指令を出力する。
【０００６】
移動指令処理部は、バッファと、フィルタと、処理部と、を有する。
【０００７】
バッファは、移動指令を保持する。
【０００８】
フィルタは、定数をフィルタ処理し、新たな定数を生成する。
【０００９】
処理部は、バッファに保持された移動指令と、フィルタで生成された新たな定数とに基づいて演算処理を行い、新たな定数に比例した新たな移動指令を生成して出力する。
【００１０】
制御部は、新たな移動指令に基づいてモータの制御を行う。
【００１１】
本開示のモータの位置制御方法は、バッファと、フィルタと、処理部とを有する移動指令処理部を用いてモータの位置制御を行うモータの位置制御方法である。
【００１２】
本開示のモータの位置制御方法は、
バッファに移動指令を入力して、保持する第１のステップと、
フィルタに定数を入力し、フィルタ処理して、新たな定数を生成する第２のステップと、
バッファに保持された移動指令を取り出して、処理部内の第１の保持部に保持された値に加算して、第１の加算値として保持するとともに、
定数を処理部内の第２の保持部に保持された値に加算して、第２の加算値として保持する第３のステップと、
新たな定数と、第１の加算値と、第２の加算値と、に基づいて、演算を行い、新たな定数に比例する新たな移動指令を生成するとともに、
第１の保持部に保持された第１の加算値から新たな移動指令を減算した値を第１の保持部に保持し、かつ、
第２の保持部に保持された第２の加算値から新たな定数を減算した値を第２の保持部に保持する第４のステップと、
を備える。
【００１３】
本開示の産業用機械は、モータと、モータを制御する、上記のモータ制御装置と、モータによって駆動される被駆動体と、を有する。ここで、フィルタのカットオフ周波数は、被駆動体の固有振動数である。
【図面の簡単な説明】
【００１４】
【図１】図１は、実施の形態１に係るモータ制御装置の構成を示すブロック図である。
【図２】図２は、実施の形態１に係る移動指令処理部の構成を示すブロック図である。
【図３Ａ】図３Ａは、実施の形態１に係るＩＩＲ型デジタルフィルタの構成を示すブロック図である。
【図３Ｂ】図３Ｂは、実施の形態１に係るＦＩＲ型デジタルフィルタの構成を示すブロック図である。
【図４】図４は、実施の形態１に係る移動指令処理部でのフローチャートである。
【図５Ａ】図５Ａは、実施の形態１に係るモータ制御装置の移動指令によるｘｙ軌跡を示す図である。
【図５Ｂ】図５Ｂは、ｘ軸に対する移動指令の時系列を示す図である。
【図５Ｃ】図５Ｃは、ｙ軸に対する移動指令の時系列を示す図である。
【図５Ｄ】図５Ｄは、移動定数出力の時系列を示す図である。
【図６Ａ】図６Ａは、図４に示すフローチャ−トの実行後の移動指令によるｘｙ軌跡を示す図である。
【図６Ｂ】図６Ｂは、ｘ軸に対する処理後の移動指令の時系列を示す図である。
【図６Ｃ】図６Ｃは、ｙ軸に対する処理後の移動指令の時系列を示す図である。
【図６Ｄ】図６Ｄは、処理後の移動定数出力の時系列を示す図である。
【図７Ａ】図７Ａは、比較例に係るモータ制御装置の移動指令によるｘｙ軌跡を示す図である。
【図７Ｂ】図７Ｂは、ｘ軸に対する移動指令の時系列を示す図である。
【図７Ｃ】図７Ｃは、ｙ軸に対する移動指令の時系列を示す図である。
【図８Ａ】図８Ａは、比較例に係るモータ制御装置のフィルタ処理後の移動指令によるｘｙ軌跡を示す図である。
【図８Ｂ】図８Ｂは、ｘ軸に対するフィルタ処理後の移動指令の時系列を示す図である。
【図８Ｃ】図８Ｃは、ｙ軸に対するフィルタ処理後の移動指令の時系列を示す図である。
【図９】図９は、比較例に係るモータ制御装置の構成を示すブロック図である。
【図１０】図１０は、実施の形態２に係るモータ制御装置の構成を示すブロック図である。
【図１１】図１１は、実施の形態２に係る移動指令処理部の構成を示すブロック図である。
【図１２】図１２は、実施の形態２に係る移動指令処理部でのフローチャートである。
【図１３Ａ】図１３Ａは、実施の形態２に係るモータ制御装置の移動指令によるｘｙ軌跡を示す図である。
【図１３Ｂ】図１３Ｂは、ｘ軸に対する移動指令の時系列を示す図である。
【図１３Ｃ】図１３Ｃは、ｙ軸に対する移動指令の時系列を示す図である。
【図１３Ｄ】図１３Ｄは、移動定数出力の時系列を示す図である。
【図１４Ａ】図１４Ａは、図１２に示すフローチャ−トの実行後の移動指令によるｘｙ軌跡を示す図である。
【図１４Ｂ】図１４Ｂは、ｘ軸に対する処理後の移動指令の時系列を示す図である。
【図１４Ｃ】図１４Ｃは、ｙ軸に対する処理後の移動指令の時系列を示す図である。
【図１４Ｄ】図１４Ｄは、処理後の移動定数出力の時系列を示す図である。
【図１５Ａ】図１５Ａは、実施の形態３に係る溶接ロボットの概略構成図である。
【図１５Ｂ】図１５Ｂは、ワークを溶接するときの溶接ワイヤの動きを示す図である。
【発明を実施するための形態】
【００１５】
特許文献１に開示されているように、移動指令生成部からの移動指令をフィルタ処理することで、移動指令に含まれる起振成分、すなわちモータによって駆動される機械の振動を誘発する成分を除去できる。
【００１６】
しかし、フィルタ処理された移動指令によってモータ位置を制御すると、モータによって駆動されるロボット等の移動軌跡が、本来、指示していた移動軌跡と一致しなくなる場合がある。
【００１７】
これは、フィルタ処理前の移動指令における時系列的に異なる成分が混在した状態で、フィルタ処理後の移動指令が構成されていることによる。
【００１８】
（実施の形態１）
本実施の形態を図面に基づいて詳細に説明する。以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものでは全くない。
【００１９】
図１は、本実施の形態に係るモータ制御装置の構成を示すブロック図である。
【００２０】
なお、本実施の形態では、２軸でモータの位置制御を行う例を示している。
【００２１】
（モータ制御装置の構成）
図１に示すように、モータ制御装置１００は、移動指令生成部１と、移動指令処理部２０と、制御部１１０を有している。モータ制御装置１００は、さらに、モータ６と、電流検出器５と位置検出器７とを有していてもよい。移動指令生成部１は、モータ６を駆動するための移動指令を生成する。移動指令処理部２０は、移動指令生成部１からの移動指令を処理して新たな移動指令を出力する。電流検出器５は、モータ６の駆動電流を検出する。位置検出器７は、モータ６の回転角度を検出する。制御部１１０は、位置制御部２と、速度制御部３と、電流制御部４と、信号処理部８と、を有している。位置制御部２は、モータ６の位置を制御する。速度制御部３は、モータ６の回転速度を制御する。電流制御部４は、モータ６の駆動電流を制御する。信号処理部８は、位置検出器７からの信号を処理する。信号処理部８で処理された信号は、モータ６が駆動する被駆動体（ロボット等）の実際の回転角速度ωと実際の移動量ｑに変換される。
【００２２】
図１に示すように、モータ制御装置は、モータ６と、位置検出器７と、電流検出器５と、を２組、つまり、２軸分備えていてもよい。また、位置制御部２と、速度制御部３と、電流制御部４と、信号処理部８と、を２組、つまり、２軸分備えていてもよい。図１において、第１軸の各部信号には添字１を、第２軸の各部信号には添字２を付している。
【００２３】
以下の説明では、添字１および添字２を添字ｍ（ｍ＝１または２）として表す。
【００２４】
移動指令生成部１は、ユーザが作成する動作プログラムに基づいて軌道計画をして移動指令ｐｍ＊を生成する。移動指令ｐｍ＊はモータの単位時間当たりの回転量として所定周期毎に出力される。
【００２５】
移動指令処理部２０は、移動指令生成部１から所定周期毎に出力される移動指令ｐｍ＊を入力し、それらを所定周期毎に処理して新たな移動指令ｑｍ＊を生成して出力する。
【００２６】
位置制御部２は、移動指令処理部２０から所定周期毎に出力される移動指令ｑｍ＊を入力し、それを積算するとともに、所定周期毎の実際の移動量ｑｍを減算していく。ここで、実際の移動量ｑｍは、位置検出器７の出力を信号処理部８で処理して得られる所定時間毎のモータの回転角移動量である。すなわち、移動指令生成部１や移動指令処理部２０を介して得られた指令に関する値に「＊」を付記している。そして、モータを駆動して実際に得られた値には「＊」を付記していない。
【００２７】
位置制御部２内では、移動指令ｑｍ＊の時系列の総和と実際の移動量ｑｍの時系列の総和との差分が位置偏差量として保持される。この位置偏差量に比例定数（位置ゲイン）を乗じたものが速度指令ωｍ＊として位置制御部２から出力される。
【００２８】
また、この速度指令ωｍ＊には、移動指令ｑｍ＊に比例定数（フィードフォワードゲイン）を乗じたものが加算される場合もある。
【００２９】
速度制御部３は、位置制御部２からの速度指令ωｍ＊とモータの実際の速度ωｍとの差分値を入力とし、これに対して例えばＰＩ（Ｐｒｏｐｏｒｔｉｏｎａｌ−Ｉｎｔｅｇｒａｌ）制御を施して電流指令Ｉｍ＊を出力する。ここで、実際の速度ωｍは、位置検出器７の出力を信号処理部８で処理して得られる。
【００３０】
電流制御部４は、速度制御部３からの電流指令Ｉｍ＊と実電流Ｉｍとの差分を入力とし、これに対して例えばＰＩ制御を施してモータ６の駆動電流を制御する。
【００３１】
なお、実電流Ｉｍは電流検出器５で検出する。
【００３２】
図１に示す構成のモータ制御装置は、例えば、ロボット等の産業用機械に適用される。
【００３３】
なお、図１では２軸の構成で示したが、多関節ロボットは、その関節数に応じた数のモータと制御部を有している。そして、それぞれのモータとロボットアームは減速機を介して接続される。
【００３４】
（移動指令処理部の構成）
図２は、本実施の形態に係る移動指令処理部２０の構成を示すブロック図である。図２に示すように、移動指令処理部２０は、バッファ２１、処理部２２、フィルタ２３を有している。
【００３５】
バッファ２１は、移動指令生成部１からの移動指令ｐｍ＊（ｍ＝１、２）を入力し、これらを一旦保持する。
【００３６】
バッファ２１は、先に入力したデータから先に出力する、いわゆるＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）の動作をする。
【００３７】
バッファ２１に入力する移動指令Ｐｉ＊は、図１に示した移動指令ｐｍ＊（ｍ＝１、２）を要素とするベクトル量である。移動指令Ｐｉ＊の添字ｉはバッファ２１へ入力する順番を表す。
【００３８】
なお、図４、図１２などのフローチャートでは「＊」を付記していない。
【００３９】
移動指令Ｐｉ＊は所定周期毎にバッファ２１へ入力される。また、バッファ２１が保持する移動指令Ｐｊの添字ｊは、バッファ２１から取り出す移動指令Ｐｊの順番を表す。
【００４０】
バッファ２１に保持する移動指令Ｐｊの取り出しは随時であり、必ずしも移動指令Ｐｉ＊のバッファ２１への入力とは同期しない。
【００４１】
処理部２２は、バッファ２１から移動指令Ｐｊを取り出して加工を行い、新たな移動指令Ｑｋ＊として出力する。
【００４２】
ここで、移動指令Ｑｋ＊は、各軸の移動指令を要素とするベクトル量である。
【００４３】
また、移動指令Ｑｋ＊の添字ｋは、処理部２２から出力されるＱｋ＊の順番を表わす。
【００４４】
図３Ａ、図３Ｂは、本実施の形態に係るフィルタ２３の構成の例を示す図である。図３Ａは、ＩＩＲ型デジタルフィルタの構成を示すブロック図である。図３ＢはＦＩＲ型デジタルフィルタの構成を示すブロック図である。フィルタ２３はデジタルフィルタであり、例えば、図３Ａに示すＩＩＲ（Ｉｎｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ：無限インパルス応答）型のデジタルフィルタが用いられる。あるいは、図３Ｂに示すＦＩＲ（Ｆｉｎｉｔｅ  Ｉｍｐｕｌｓｅ  Ｒｅｓｐｏｎｓｅ：有限インパルス応答）型のデジタルフィルタでもよい。あるいはそれ以外の構成であってもよい。
【００４５】
図３Ａに示すａ１、ａ２、ｂ０、ｂ１、ｂ２、及び図３Ｂに示すｃ０〜ｃ４は定数であり、これらの値でフィルタ２３のカットオフ周波数が定められる。また、図３Ａ、図３Ｂに示す「ｚ−１」は１周期遅れ要素（１サンプル遅れ要素）である。尚、図では、「ｚ−１」は「ｚ−１」のように、上付きの数字で示している。
【００４６】
フィルタ２３は、入力に同期して演算を行い、結果を出力する。
【００４７】
また、フィルタ２３は、一連のデータ列の入力が終了した後も所定周期毎に演算を行い、結果を出力する。そして、少なくとも出力が０値になるまでは所定周期毎に演算を繰り返し行う。
【００４８】
また、フィルタ２３において、入力の時系列の総和と出力の時系列の総和は一致する。図３Ａ、図３Ｂに示す定数ａ１、ａ２、ｂ０、ｂ１、ｂ２、またはｃ０〜ｃ４は、この条件を満たすように定められる。
【００４９】
なお、図３Ａでは２次のＩＩＲ型デジタルフィルタを示しているが、１次もしくは３次以上のＩＩＲ型デジタルフィルタでも構わない。
【００５０】
また、図３Ｂでは、５次のＦＩＲ型デジタルフィルタを示しているが、４次以下もしくは６次以上のＦＩＲ型フィルタでも構わない。
【００５１】
フィルタ２３の定数の値は、その総和が１であり、かつ入力の停止で出力が０に収束していくように設定していれば、任意の値の組み合わせが可能である。通常は、モータ６によって駆動されるロボット等の産業用機械の固有振動に合わせて、その振動成分を除去する値に設定される。
【００５２】
フィルタ２３には、バッファ２１への移動指令Ｐｉ＊の入力に同期して、移動定数Ｄが入力される（図２）。
【００５３】
移動定数Ｄはスカラー量であり、任意の大きさの固定値である。
【００５４】
フィルタ２３は、移動定数Ｄの入力に同期して、フィルタ演算を行い、その結果を新たな移動定数ｄｋとして出力する。
【００５５】
ここで、ｄｋの添字ｋはフィルタから出力される値ｄｋの順番を表わし、フィルタ２３からのｄｋの出力と処理部２２からのＱｋ＊の出力は同期している。
【００５６】
（処理部の構成と動作）
図２に示すように、バッファ２１からの移動指令Ｐｊは、保持部３３（第１の保持部）に入力される。すなわち、移動指令の保持部３３の要素に移動指令Ｐｊが加算されて、Ｒｋとして保持される。Ｒｋは移動指令であり、各軸の移動指令を要素とするベクトル量である。
【００５７】
移動定数Ｄは、保持部３４（第２の保持部）に入力される。すなわち、移動定数の保持部３４の要素に移動定数Ｄが加算されて、Ｓｋとして保持されている。保持部３４が保持する値Ｓｋはスカラー量である。
【００５８】
入出力間の経路は、判定部３５からの指示に基づいてスイッチ３１、３２により開閉される。
【００５９】
判定部３５では、フィルタ２３が出力する値ｄｋと保持部３４が保持する値Ｓｋとを比較し、Ｓｋがｄｋよりも小さければ、スイッチ３１とスイッチ３２を閉じる。
【００６０】
スイッチ３１が閉じられると、バッファ２１から移動指令Ｐｊが取り出され、その移動指令Ｐｊが、保持部３３が保持する値Ｒｋに加算される。
【００６１】
また、スイッチ３２を閉じると、移動定数Ｄが、保持部３４が保持する値Ｓｋに加算される。それぞれの加算が実行されると、スイッチ３１、３２は開いた状態に戻る。
【００６２】
なお、フィルタ２３が出力する値ｄｋが、保持部３４が保持する値Ｓｋ以下であれば、スイッチ３１とスイッチ３２は開いたままであり、保持部３３への移動指令Ｐｊの加算、及び保持部３４への移動定数Ｄの加算は行われない。
【００６３】
演算部３８は、保持部３３が保持する値Ｒｋ、保持部３４が保持する値Ｓｋ、および、フィルタ２３が出力する値ｄｋを用いて、式（１）の計算を行って、新たな移動指令Ｑｋ＊を生成して出力する。
【００６４】
【数１】
2018047394.tif 000003
【００６５】
なお、式（１）はベクトル演算であり、Ｑｋ＊、Ｒｋはベクトル量、ｄｋ／Ｓｋはスカラー量である。
【００６６】
移動指令Ｑｋ＊が生成された後は、保持部３３が保持する移動指令Ｒｋおよび保持部３４が保持する値Ｓｋをそれぞれ式（２）、式（３）の通り更新する。
【００６７】
【数２】
2018047394.tif 000004
【００６８】
【数３】
2018047394.tif 000005
【００６９】
ここで、要素３６、３７は１周期遅れ要素（１サンプル遅れ要素）である。
【００７０】
式（２）で更新する値Ｒｋおよび式（３）で更新する値Ｓｋは、次回の演算周期で用いる値である。一方、式（２）で用いる値Ｑｋ＊および式（３）で用いる値ｄｋは、今回の演算周期で求めた値である。
【００７１】
つまり、次回の演算周期においては、その１回前の演算周期で算出された値を用いる。要素３６、３７はこの１回前の演算周期で算出された値に対応している。
【００７２】
（移動指令フロー）
図４は、本実施の形態に係る移動指令処理部２０でのフローチャートである。
【００７３】
なお、図４におけるＲｋ、ｄｋ、Ｐｊ等の記号は、上述したのと同じ記号である。
【００７４】
また、符号Ｎは、移動指令処理部２０に入力される移動指令Ｐｉの個数である。
【００７５】
まず、移動指令処理部２０において、値の初期化を行う（ステップＳ１）。添字ｉ、ｊ、ｋの初期値の１は１番目のデータであることを示す。値Ｒｋはベクトル量、値Ｓｋはスカラー量で、それらの値は０に初期化される。
【００７６】
次に、移動指令Ｐｉが存在するかを判断する（ステップＳ２）。具体的には、移動指令Ｐｉの入力順を表わす値ｉが、移動指令Ｐｉの個数Ｎ以下であれば、移動指令Ｐｉが存在するとし、次に進んで、移動指令Ｐｉをバッファ２１に入力する（ステップＳ３）。
【００７７】
併せて移動指令Ｄもフィルタ２３に入力する。また、添字ｉは次の周期での演算に備えて繰り上げておく。そして、次のステップＳ４へ進む。
【００７８】
また、ｉがＮより大きければ、全ての移動指令Ｐｉをバッファ２１に入力し終えたことになるので、ステップＳ３を行わずにステップＳ４へ進む。
【００７９】
次に、フィルタ２３でフィルタ演算を行い、その結果を新たな移動定数ｄｋとして出力する（ステップＳ４）。
【００８０】
なお、フィルタ２３に入力がなされなかった場合は、値０が入力されたものとして演算を行い、ｄｋを出力する。
【００８１】
次に、Ｓｋとフィルタ出力ｄｋとの大小比較、及びバッファ２１からの移動指令Ｐｊの取り出し回数を表わす値ｊと、移動指令Ｐｉの個数Ｎとの大小比較を行う（ステップＳ５）。
【００８２】
Ｓｋがｄｋよりも小さく、かつ、ｊがＮ以下であれば次へ進み、移動指令Ｐｊをバッファ２１より取り出してＲｋに加算する（ステップＳ６）。併せて、Ｓｋに移動定数Ｄを加算する。また添字ｊは次の周期での演算に備えて繰り上げておく。そしてステップＳ７へ進む。
【００８３】
Ｓｋがｄｋ以上であればステップＳ６を行わずにステップＳ７へ進む。
【００８４】
ｊがＮより大きい場合も、全ての移動指令Ｐｊをバッファ２１から取り出し終えたことになるので、ステップＳ６を行わずにステップＳ７へ進む。
【００８５】
ステップＳ７では式（１）、式（２）、式（３）で表わされる演算を行う。また添字ｋを次の周期での演算に備えて繰り上げておく。そしてステップＳ８へ進む。
【００８６】
次に、フィルタ出力ｄｋが存在するかを判断する（ステップＳ８）。
【００８７】
ｄｋの値が０であれば、処理を終了する。ｄｋが０でなければ、ステップＳ２へと進み、次の周期の演算に入り、ステップＳ２からステップＳ８までの処理を演算周期毎に繰り返し行う。
【００８８】
ここで注意すべきは、バッファ２１に移動指令ＰｉをＮ回入力した後も、バッファ２１内には移動指令Ｐｊが存在し、バッファ２１から移動指令Ｐｊを全て取り出した後も、フィルタ２３内には値が残存していてｄｋの出力がなされるということである。
【００８９】
ステップＳ８において、ｄｋの値をチェックして繰り返しループの終了を判断するのはこのためである。
【００９０】
なお、ステップＳ７における式（１）で表わされる演算は、以下に示す式（４）で表わされる演算を用いても構わない。
【００９１】
【数４】
2018047394.tif 000006
【００９２】
式（１）で表わされる演算に用いる各量を整数とした場合に、ｄｋの値が小さくなったとき、小数点以下切捨ての結果、Ｑｋ＊の値が０になることがある。その場合、Ｒｋに値を残したまま繰り返し演算を終了してしまう。すなわち、移動の目標位置に対する実際の到達位置に若干のずれが生じる。式（４）で表わされる演算を用いることで、これが防止できる。
【００９３】
ちなみに、図４に示すステップＳ１０（ステップＳ５からステップＳ７までの一連の処理）は、図２に示す処理部２２で実行される。
【００９４】
このステップＳ１０を、図４に示すステップＳ２０に置き換えてもよい。
【００９５】
ステップＳ２０では、ステップＳ６の代わりにステップＳ１６が、ステップＳ７の代わりにステップＳ１７がそれぞれ実行される。
【００９６】
ステップＳ１６およびステップＳ１７におけるＷは、処理部２２の保持部４４（第３の保持部）内に一時的に格納される値である。
【００９７】
Ｓｋがｄｋよりも小さい場合、ステップＳ１６では、元のＲｋを保持部４４にＷとして一時格納する。そして、ｄｋよりＳｋを差し引く。その上で、バッファ２１よりＰｊを取り出してＲｋに代入し、ＳｋにＤを代入する。
【００９８】
ステップＳ１７で、ステップＳ７と同じ処理でＱｋ＊の算出およびＲｋ、Ｓｋの更新を行う。このようにして求めたＱｋ＊に、ステップＳ１６で、保持部４４に一時格納された値であるＷを加算して、図２の処理部２２が出力するＱｋ＊とする。
【００９９】
また、ステップＳ１１の処理をステップＳ２１の処理に置き換えてもよい。ステップＳ２１の中のステップＳ１８の値Ｅは任意の値である。
【０１００】
ステップ２１によれば、フィルタ出力ｄｋが十分に小さな所定の値Ｅにまで収束した時点で繰り返し演算を終了する。そのために、目標位置への到達時間が短縮できる。
【０１０１】
（移動指令処理前後での移動指令と移動軌跡との関係）
図５Ａ〜図５Ｃは、本実施の形態に係るモータ制御装置１００の移動指令の時系列と、その移動指令による軌跡を示す図である。図５Ａは、移動指令によるｘｙ軌跡を示す図である。図５Ｂは、ｘ軸に対する移動指令の時系列を示す図である。図５Ｃは、ｙ軸に対する移動指令の時系列を示す図である。図５Ｄは、移動定数出力の時系列を示す図である。図５Ａ〜図５Ｄは、移動指令処理部２０での処理前の状態を示している。
【０１０２】
図６Ａ〜図６Ｃは、図４に示すフローチャ−トの実行後の移動指令の時系列と、その移動指令による軌跡を示す図である。図６Ａは、処理後の移動指令によるｘｙ軌跡を示す図である。図６Ｂは、ｘ軸に対する処理後の移動指令の時系列を示す図である。図６Ｃは、ｙ軸に対する処理後の移動指令の時系列を示す図である。図６Ｄは、処理後の移動定数出力の時系列を示す図である。すなわち、図６Ａ〜図６Ｄは、移動指令処理部２０での処理後の状態を示している。
【０１０３】
なお、フィルタ２３は、５段のＦＩＲ型デジタルフィルタとし、各段のフィルタ定数は１／５としている。すなわち、フィルタ２３は、５回平均フィルタとしている。
【０１０４】
ここで、本実施の形態に係るモータ制御装置との比較のため、図１に示す構成において、移動指令処理部２０の代わりにフィルタ１０を設けた構成を比較例とし、そのブロック図を図９に、そのときの移動指令の時系列と、その移動指令による軌跡との関係を、図７及び図８に示す。
【０１０５】
図７Ａ〜図７Ｃは、比較例に係るモータ制御装置の移動指令の時系列と、その移動指令による軌跡を示す図である。図７Ａは、移動指令によるｘｙ軌跡を示す図である。図７Ｂは、ｘ軸に対する移動指令の時系列を示す図である。図７Ｃは、ｙ軸に対する移動指令の時系列を示す図である。図７Ａ〜図７Ｄは、フィルタ１０での処理前の状態を示している。
【０１０６】
図８Ａ〜図８Ｃは、比較例に係るモータ制御装置のフィルタ処理後の移動指令の時系列と、その移動指令による軌跡を示す図である。図８Ａは、移動指令によるｘｙ軌跡を示す図である。図８Ｂは、ｘ軸に対するフィルタ処理後の移動指令の時系列を示す図である。図８Ｃは、ｙ軸に対するフィルタ処理後の移動指令の時系列を示す図である。すなわち、図８Ａ〜図８Ｄは、フィルタ１０での処理後の状態を示している。
【０１０７】
図９は、比較例に係るモータ制御装置３００の構成を示すブロック図である。
【０１０８】
図９に示すように、モータ制御装置３００は、移動指令生成部１から各軸の位置制御部２までの間にそれぞれフィルタ１０だけを設けている点で、図１に示すモータ制御装置１００の構成と異なる。この違いを除けばその他は同じ構成である。また、フィルタ１０の構造は、フィルタ２３と同様である。すなわち、フィルタ１０は、５回平均フィルタとしている。
【０１０９】
図５Ａから図８Ｃでは、ｘ軸とｙ軸の２軸からなる直交ロボットに適用されるモータの位置制御の一例が示されている。
【０１１０】
図５Ａ、図６Ａ、図７Ａ及び図８Ａにおいて、”◎”で表される点Ａは移動の開始点を、点Ｂは移動の終了点をそれぞれ表す。
【０１１１】
また、図５Ａ、図７Ａにおいて、”○”で表される点は、移動指令処理部２０またはフィルタ１０における処理前の補間位置に対応している。補間位置間の移動指令はｐｍｉ＊（ｍ＝ｘ、ｙ、ｉ＝１〜６）で表される。
【０１１２】
図６Ａ、図８Ａにおいて、”●”で表される点は、移動指令処理部２０またはフィルタ１０における処理後の補間位置に対応している。補間位置間のフィルタ処理後の移動指令はｑｍｋ＊（ｍ＝ｘ、ｙ、ｋ＝１〜１０）で表される。
【０１１３】
また、図６Ａにおいて、点ＡＢ間を結ぶ実線は、図５Ａに示したｘｙ軌跡と同じである。これに対して、図８Ａにおいて、点ＡＢ間を結ぶ実線は、図７Ａに示したｘｙ軌跡と異なる。
【０１１４】
また、図５Ｂ、図５Ｃ、図６Ｂ、図６Ｃと、図７Ｂ、図７Ｃ、図８Ｂ、図８Ｃにおいて、移動指令ｐｍｉ＊からフィルタ処理後の移動指令ｑｍｉ＊が形成されるときのデータの対応関係を示すために、同一データを同一ハッチングで示している。
【０１１５】
まず、比較例について説明する。
【０１１６】
例えば、図７Ｂ、図８Ｂに示すように、移動指令ｐｍ１＊（ｍ＝ｘ、ｙ）は、フィルタ１０で処理された結果、ｑｍ１＊からｑｍ５＊に均等に割り付けられる。例えば、図７Ｂにおける移動指令ｐｘ１＊の成分Ｅ１〜Ｅ５は、フィルタ１０で処理されて、図８Ｂのｑｘ１＊からｑｘ５＊に５等分される。
【０１１７】
同様に、移動指令ｐｍ２＊は、ｑｍ２＊からｑｍ６＊に均等に割り付けられる。例えば、図７Ｂにおける移動指令ｐｘ２＊の成分は、フィルタ１０で処理されて、図８Ｂのｑｘ２＊からｑｘ６＊に５等分される。
【０１１８】
このように、移動指令ｐｍｉ＊（ｉ＝１〜６）をフィルタ１０で順次処理して、移動指令ｑｍｋ＊（ｋ＝１〜１０）が得られる。
【０１１９】
図７Ｂと図８Ｂとの対比、また、図７Ｃと図８Ｃとの対比から明らかなように、フィルタ処理後の移動指令ｑｍｋ＊では、フィルタ処理前の移動指令ｐｍｉ＊に対して、移動開始時と移動終了の部分での急激な変化が緩和されている。例えば、図７Ｂの縦軸を見ると、０からｐｘ１＊まで急激に立ち上がっている。しかし、図８Ｂの縦軸を見ると、徐々に立ち上がっている。これは、移動指令ｐｍｉ＊に含まれている起振成分がフィルタ処理によって低減されることを意味している。
【０１２０】
よって、移動開始時および移動終了時の急な動作が緩和されて、例えば、モータが接続されたロボットアームの振動の誘発を防止できる。
【０１２１】
しかし一方で、移動指令生成部が出力する移動指令ｐｍ＊に対して軸毎にフィルタ処理を行うことで、図８Ａに示すように、その移動指令ｑｍ＊による軌跡は本来の軌跡（図８Ａの点ＡＢ間を結ぶ破線）、つまり、移動指令ｐｍ＊が描く軌跡から外れた状態となる。
【０１２２】
これは、移動指令ｐｍ＊が、フィルタ処理により複数に分割された後、個々の成分が、フィルタ処理後の移動指令ｑｍ＊に対して、異なる時系列に属するように割り付けられることに起因する。
【０１２３】
例えば、図８Ｂに示される移動指令ｑｘ５＊は、図７Ｂに示される移動指令ｐｘ１＊からｐｘ５＊の各々の一部が足し合わされて生成されている。その結果、フィルタ処理前の移動指令ｐｍ５＊（ｍ＝ｘ、ｙ）と、フィルタ処理後の移動指令ｑｍ５＊（ｍ＝ｘ、ｙ）とでは、値が大きくかけ離れてしまっている。
【０１２４】
よって、制御部１１０の応答性を高めて、実際の移動量ｑｍが移動指令ｑｍ＊に一致するように制御しても、実際の移動量ｑｍが描く軌跡が、移動指令生成部が出力する移動指令ｐｍ＊による軌跡に一致しなくなる。
【０１２５】
次に、本実施の形態に係るモータ制御装置１００の制御について説明する。
【０１２６】
比較例との大きな違いは、移動定数Ｄを設定し、これをフィルタ処理した値を用いて、移動指令生成部１からの移動指令ｐｍｉ＊（ｍ＝ｘ、ｙ、ｉ＝１〜６）を変形処理し、新たな移動指令ｑｍｋ＊（ｍ＝ｘ、ｙ、ｋ＝１〜１０）を生成している点にある。
【０１２７】
図６Ｄに示すように、図５Ｄにおける移動定数Ｄをフィルタ処理して新たな移動定数ｄｋ（ｋ＝１〜１０）が得られる。
【０１２８】
このｄｋを用いて、移動指令生成部１からの移動指令ｐｍｉ＊（ｍ＝ｘ、ｙ、ｉ＝１〜６）に対して、図４に示すフローチャ−トを実行することにより、移動指令ｑｍｋ＊（ｍ＝ｘ、ｙ、ｋ＝１〜１０）が得られる。
【０１２９】
なお、図６Ｂ、図６Ｃに示す値を得るのに、図４に示すフローチャ−トの内、ステップＳ１０ではなく、ステップＳ２０を実行している。また、図５Ｂ、図５Ｃでは、データの数が６の場合（Ｎ＝６）を示している。本実施の形態のモータ制御装置１００は、図５Ａ〜図５Ｃに示すように、データの大きさが異なる場合に、特に効果的である。
【０１３０】
図６Ｂ、図６Ｃに示すように、例えば、移動指令ｐｍ１＊は、図４に示すフローチャ−トの処理が実行された後に、移動指令ｑｍ１＊、ｑｍ２＊、ｑｍ３＊に割り付けられる。また、移動指令ｐｍ２＊は、図４に示すフローチャ−トの処理が実行された後に、移動指令ｑｍ３＊、ｑｍ４＊に割り付けられる。
【０１３１】
例えば、図５Ｂにおける移動指令ｐｘ１＊の成分は、フィルタ２３で処理されて、図６Ｂのｑｘ１＊、ｑｘ２＊、ｑｘ３＊に割り付けられる。次に、図５Ｂにおける移動指令ｐｘ２＊は、フィルタ２３で処理されて、図６Ｂのｑｘ３＊とｑｘ４＊に割り付けられる。ここで、ｑｘ３＊は、ｐｘ１＊とｐｘ２＊とを有している。
【０１３２】
概念的には、従来の移動指令ｐｍ１＊は、図７Ｂに示すように横軸に沿って分割されるのに対して、本願の移動指令ｐｍ１＊は、図５Ｂに示すように縦軸に沿って分割される。
【０１３３】
図５Ｂから図５Ｄに示すように、移動指令ｐｍ１＊からｐｍ６＊及び移動定数Ｄが分割され、これらをもとに新たな移動指令ｑｍ１＊からｑｍ１０＊及び新たな移動定数ｄｋが得られる。図５Ｂから図５Ｄに示すｐｍｉ＊やＤの分割された領域の面積の大きさが、図６Ｂから図６Ｄに示すｑｍｋ＊やｄｋの大きさに対応している。
【０１３４】
図６Ｂ、図６Ｃに示すように、１つのｑｍｋ＊は、高々二つのｐｍｉ＊から構成される。例えば、図６Ｂに示すように、ｑｘ３＊は、ｐｘ１＊とｐｘ２＊との２つのｐｍｉ＊を有している。また、ｑｘ８＊は、ｐｘ５＊とｐｘ６＊との２つのｐｍｉ＊を有している。その他のフィルタ処理後の移動指令ｑｍｋ＊は、１つの移動指令ｐｍｋ＊で構成されている。すなわち、ｑｘ１＊、ｑｘ２＊、ｑｘ４＊、ｑｘ５＊、ｑｘ６＊、ｑｘ７＊、ｑｘ９＊、ｑｘ１０＊は、１つの移動指令ｐｍｋ＊で構成されている。要するに、１つのｑｍｋ＊は、１つあるいは２つのｐｍｉ＊で構成されている。言い換えれば、ｑｍｋ＊は三つ以上のｐｍｉ＊から構成されることはなく、移動指令ｐｍｉ＊における時系列の異なる成分が、移動指令処理後の新たな移動指令ｑｍｋ＊に混合されるのを大幅に抑制できる。
【０１３５】
よって、図６Ａに示す移動指令処理後の補間位置”●”は、図５Ａに示す移動指令処理前の補間位置”○”を結ぶ曲線上から殆ど外れることはない。
【０１３６】
また、図６Ｂ、図６Ｃから明らかなように、移動指令処理で得られたｑｍｋ＊において、移動開始時と移動終了の部分での急激な変化が緩和されている。これは、移動指令ｐｍｉ＊に含まれている起振成分が低減されることを意味している。例えば、図５Ｂの縦軸を見ると、０から急激に立ち上がっている。しかし、図６Ｂの縦軸を見ると、徐々に立ち上がっている。
【０１３７】
多関節ロボットではその関節数に応じた数のモータとその制御部を備える。そして、関節数に応じたそれぞれのモータとロボットアームは減速機を介して接続される。
【０１３８】
このような構成のロボットでは、減速機、ロボットアームが弾性体となって２慣性系を構成し、駆動時に振動が発生する場合がある。
【０１３９】
特に、静止状態からの移動し始めと、目標位置での停止時に振動が発生しやすい。
【０１４０】
本実施の形態によれば、移動指令生成部１が出力する移動指令ｐｍ＊に対して、フィルタ２３のカットオフ周波数を上記の２慣性系の固有振動数に合わせて設定して、移動定数Ｄのフィルタ処理を行うことで、移動指令ｐｍ＊に含まれる起振成分を確実に低減した移動指令ｑｍ＊を生成できる。すなわち、フィルタ２３のカットオフ周波数を被駆動体の固有振動数にしてもよい。
【０１４１】
なお、この場合の起振成分は、上記の２慣性系の固有振動を中心とする振動成分である。
【０１４２】
よって、移動開始時および移動終了時の急な動作が緩和されて、ロボットアームの振動の誘発を防止できる。
【０１４３】
なお、本実施の形態では、ロボットの駆動軸数を２軸として示したが、２軸に限られない。駆動軸数が３軸以上であってもよい。従って、図２、図３に示したベクトル量Ｐｉ、Ｐｊ、Ｒｋ、Ｑｋ＊において要素数を２軸に限定するものではない。要素数が３軸以上の場合でも、本実施の形態に示す構成が適用できる。
【０１４４】
また、図１及び図２に示した構成はソフトウェアおよびハードウェアのどちらでも実現可能である。ハードウェアではＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のプログラム可能なロジックデバイスを用いれば構成できる。
【０１４５】
（実施の形態２）
図１０は、本実施の形態に係るモータ制御装置１０２の構成を示すブロック図である。
【０１４６】
図１１は、本実施の形態に係る移動指令処理部３０の構成を示す図である。
【０１４７】
図１２は、本実施の形態に係る移動指令処理部３０でのフローチャートである。
【０１４８】
なお、実施の形態１で説明した構成、ステップと同様の箇所については、同一の符号を付して詳細な説明は省略する。
【０１４９】
（移動指令処理部の構成と動作）
本実施の形態と実施の形態１とで異なる点は、移動指令処理部３０の内部構成であり、移動定数Ｄｉがバッファ４１に入力され、Ｄｊとしてバッファ４１から取り出される点にある。後述するように、このことにより、移動定数Ｄｉが変化する場合にも対応できる。
【０１５０】
図１１に示すように、移動指令処理部３０は、バッファ４１、処理部２２、フィルタ２３で構成される。
【０１５１】
バッファ４１は、移動指令生成部１からの移動指令ｐｍ＊（ｍ＝１、２）、および、移動定数Ｄｉを入力とし、これらを一旦保持する。
【０１５２】
バッファ４１は、先に入力したデータから先に出力する、いわゆるＦＩＦＯ（Ｆｉｒｓｔ−Ｉｎ  Ｆｉｒｓｔ−Ｏｕｔ）の動作をする。
【０１５３】
バッファ４１に入力する移動指令Ｐｉ＊は、移動指令ｐｍ＊（ｍ＝１，２）を要素とするベクトル量である。移動指令Ｐｉ＊および移動定数Ｄｉの添字ｉはバッファ４１へ入力する順番を表す。
【０１５４】
移動指令Ｐｉ＊および移動定数Ｄｉは所定周期毎にバッファ４１へ入力される。また、バッファ４１が保持する移動指令Ｐｊおよび移動定数Ｄｊの添字ｊは、バッファ４１から取り出す移動指令Ｐｊおよび移動指令Ｄｊの順番を表す。
【０１５５】
ここで、移動定数Ｄｉまたは移動定数Ｄｊは、移動指令Ｐｉ＊による隣り合う補間位置の間の距離に比例したスカラー量である。隣り合う補間位置の間の距離は所定時間毎の移動距離であるから速度と見なすこともできる。よって、移動定数Ｄｉは、移動指令Ｐｉ＊による、ロボットや、モータの被駆動体のエンドエフェクタの移動速度に比例した値ということもできる。
【０１５６】
なお、隣り合う補間位置の間の距離から移動定数Ｄｉを決めるための比例定数は任意の値でよい。
【０１５７】
バッファ４１に保持する移動指令Ｐｊおよび移動定数Ｄｊの取り出しは随時であり、必ずしも移動指令Ｐｉ＊および移動定数Ｄｉのバッファ４１への入力とは同期しない。
【０１５８】
フィルタ２３はデジタルフィルタであり、その構成、特性は、実施の形態１で説明した通りである。
【０１５９】
フィルタ２３には、バッファ４１への移動指令Ｐｉ＊および移動定数Ｄｉの入力に同期して、移動定数Ｄｉが入力される。
【０１６０】
フィルタ２３は、移動定数Ｄｉの入力に同期して、フィルタ演算を行い、その結果を新たな移動定数ｄｋとして出力する。
【０１６１】
ここで、ｄｋの添字ｋはフィルタから出力するｄｋの順番を表す。
【０１６２】
処理部２２は、バッファ４１から移動指令Ｐｊを取り出して加工を行い、新たな移動指令Ｑｋ＊として出力する処理部であり、実施の形態１で説明したのと同様である。
【０１６３】
ただし、処理部２２のスイッチ３２には、実施の形態１では固定の定数Ｄが入力されているのに対して、本実施の形態２では、バッファ４１が保持する移動定数Ｄｊが入力される。
【０１６４】
また、スイッチ３１には、バッファ４１が保持するＰｊが入力される。そして、Ｐｊの入力とＤｊの入力とは同期していて、判定部３５の開閉操作に従って両者の入力が同時に行われる。
【０１６５】
移動指令Ｑｋ＊を出力するまでの処理部２２でのその他の処理は、実施の形態１で説明した通りである。
【０１６６】
（移動指令フロー）
次に、移動指令処理部３０における処理の流れを説明する。
【０１６７】
図１２に示すフローチャ−トと、図４に示すフローチャ−トとで異なる点は、ステップＳ３の代わりにステップＳ２３が、ステップＳ６の代わりにステップＳ２６が、ステップＳ１６の代わりにステップＳ３６がそれぞれ実行されることである。
【０１６８】
ステップＳ２３では、移動指令Ｐｉに併せて移動定数Ｄｉもバッファ４１に入力される。またＤｉはフィルタ２３にも入力される。
【０１６９】
ステップＳ２６では、移動指令Ｐｊに併せてＤｊもバッファ４１より取り出される。取り出されたＤｊはＳｋに加算される。
【０１７０】
ステップＳ３６では、移動指令Ｐｊに併せてＤｊもバッファ４１より取り出される。取り出されたＤｊはＳｋに加算される。
【０１７１】
これら以外のステップについては、図４に示すフローチャ−トと同じ処理が行われる。
【０１７２】
なお、ステップＳ３０は、ステップＳ６の代わりにステップＳ２６が実行される点を除けば、図４に示すステップＳ１０と同じである。ステップＳ４０は、ステップＳ１６の代わりにステップＳ３６が実行される点を除けば、図４に示すステップＳ２０と同じである。
【０１７３】
従って、実施の形態１で説明したのと同様に、ステップＳ３０をステップＳ４０に置き換えて実行することが可能である。
【０１７４】
ステップＳ７およびステップＳ１７における式（１）で表わされる演算は、式（４）で表わされる演算に置き換えて実行しても構わない。
【０１７５】
（移動指令処理前後での移動指令と移動軌跡との関係）
図１３Ａ〜図１３Ｃは、本実施の形態に係るモータ制御装置１０２の移動指令の時系列と、その移動指令による軌跡を示す図である。図１３Ａは、移動指令によるｘｙ軌跡を示す図である。図１３Ｂは、ｘ軸に対する移動指令の時系列を示す図である。図１３Ｃは、ｙ軸に対する移動指令の時系列を示す図である。図１３Ｄは、移動定数出力の時系列を示す図である。図１３Ａ〜図１３Ｄは、移動指令処理部３０での処理前の状態を示している。
【０１７６】
図１４Ａ〜図１４Ｃは、図１２に示すフローチャ−トの実行後の移動指令の時系列と、その移動指令による軌跡を示す図である。図１４Ａは、処理後の移動指令によるｘｙ軌跡を示す図である。図１４Ｂは、ｘ軸に対する処理後の移動指令の時系列を示す図である。図１４Ｃは、ｙ軸に対する処理後の移動指令の時系列を示す図である。図１４Ｄは、処理後の移動定数出力の時系列を示す図である。すなわち図１４Ａ〜図１４Ｄは、移動指令処理部３０での処理後の状態を示している。
【０１７７】
なお、フィルタ２３は、５段のＦＩＲ型デジタルフィルタとし、各段のフィルタ定数は１／５としている。すなわち、フィルタ２３は、５回平均フィルタとしている。
【０１７８】
図１３Ａ、図１４Ａにおいて、”◎”で表される点Ａは移動の開始点を、点Ｂは移動の中間点を、点Ｃは移動の終了点をそれぞれ表す。
【０１７９】
また、図１３Ａにおいて、”○”で表される点は、フィルタ処理前の補間位置に対応している。補間位置間の移動指令はｐｍｉ＊（ｍ＝ｘ、ｙ、ｉ＝１〜６）で表される。
【０１８０】
図１４Ａにおいて、”●”で表される点は、フィルタ処理後の補間位置に対応している。補間位置間のフィルタ処理後の移動指令はｑｍｋ＊（ｍ＝ｘ、ｙ、ｉ＝１〜１０）で表される。
【０１８１】
また、図１３Ｂ、図１３Ｃ、図１４Ｂ、図１４Ｃにおいて、移動指令ｐｍｉ＊から新たな移動指令ｑｍｋ＊が生成されるときのデータの対応関係を示すために、同一データを同一ハッチングで示している。
【０１８２】
図１３Ａ〜図１３Ｃに示すように、中間点Ｂの前後で移動速度が変更されている場合を考える。中間点Ｂから終了点Ｃへの移動速度は、開始点Ａから中間点Ｂへの移動速度の２倍になっている。
【０１８３】
図１３Ｄに示すように、上記の速度変化に対応して、移動定数Ｄｉの値も中間点Ｂの後で２倍になっている。つまり、移動定数Ｄｉを、移動速度に比例した値としている。
【０１８４】
なお、図１３Ｄに示す値ｕは比例定数であり任意の値である。
【０１８５】
図１４Ｄに示すように、図１３Ｄにおける移動定数Ｄｉをフィルタ処理してｄｋ（ｋ＝１〜１０）が得られる。
【０１８６】
このｄｋを用いて、移動指令生成部１からの移動指令ｐｍｉ＊（ｍ＝ｘ、ｙ、ｉ＝１〜６）に対して、図１２に示すフローチャ−トを実行することにより、移動指令ｑｍｋ＊（ｍ＝ｘ、ｙ、ｋ＝１〜１０）が得られる。
【０１８７】
なお、図１４Ａに示す値を得るのに、図１２に示すフローチャ−トの内、ステップＳ３０ではなく、ステップＳ４０を実行している。また、図１３Ｂ、図１３Ｃでは、データの数が８の場合（Ｎ＝８）を示している。
【０１８８】
例えば、移動定数Ｄ１は、図１２に示す処理が実行された後に、移動定数ｄ１、ｄ２に割り付けられる。この割り付けを用いて、移動指令ｐｍ１＊は、図１２に示すフローチャ−トの処理が実行された後に、移動指令ｑｍ１＊、ｑｍ２＊に割り付けられる。
【０１８９】
例えば、図１３Ｂにおける移動指令ｐｘ１＊の成分は、フィルタ２３で処理されて、図１４Ｂのｑｘ１＊とｑｘ２＊に割り付けられる。次に、図１３Ｂにおける移動指令ｐｘ２＊は、フィルタ２３で処理されて、図１４Ｂのｑｘ３＊に割り付けられる。
【０１９０】
概念的には、本願の移動指令ｐｍ１＊は、図１３Ｂに示すように縦軸に沿って分割される。
【０１９１】
また、移動速度が変化した直後の移動定数Ｄ５は、図１２に示すフローチャ−トの処理が実行された後に、移動定数ｄ５、ｄ６に割り付けられる。この割り付けを用いて、移動指令ｐｍ５＊は、図１２に示すフローチャ−トの処理が実行された後に、移動指令ｑｍ５＊、ｑｍ６＊に割り付けられる。
【０１９２】
図１４Ｂから図１４Ｄに示すように、移動定数Ｄｉ及び移動指令ｐｍ１＊〜ｐｍ６＊が分割され、これらをもとに移動指令ｑｍ１＊〜ｑｍ１０＊やｄｋが得られる。図１３Ｂから図１３Ｄに示すｐｍｉ＊やＤｉの分割された領域の面積の大きさが、図１４Ｂから図１４Ｄに示すｑｍｋ＊やｄｋの大きさに対応している。
【０１９３】
図１４Ｂ、図１４Ｃに示すように、１つのｑｍｋ＊は、高々二つのｐｍｉ＊から構成される。要するに、１つのｑｍｋ＊は、１つあるいは２つのｐｍｉ＊で構成されている。言い換えれば、ｑｍｋ＊は三つ以上のｐｍｉ＊から構成されることはなく、移動指令ｐｍｉ＊における時系列の異なる成分が、移動指令処理後の新たな移動指令ｑｍｋ＊に混合されるのを大幅に抑制できる。
【０１９４】
よって、図１４Ａに示す移動指令処理後の補間位置”●”は、図１３Ａに示す移動指令処理前の補間位置”○”を結ぶ曲線上から殆ど外れることはない。
【０１９５】
また、図１４Ｂ、図１４Ｃから明らかなように、移動指令処理で得られたｑｍｋ＊において、移動開始と移動終了の部分はもちろん、速度が急変する中間点Ｂにおいても、値の急激な変化が緩和されている。これは、移動指令ｐｍｉ＊に含まれている起振成分が低減されることを意味している。例えば、図１３Ｂの縦軸を見ると、ｐｘ４＊からｐｘ５＊まで急激に立ち上がっている。しかし、図１４Ｂの縦軸を見ると、徐々に立ち上がっている。
【０１９６】
以上のように、多関節ロボット等に本実施の形態のモータ制御装置１０２を適用した場合、ロボットアームの移動開始時および移動終了時および中間での移動速度変化による急な動作が緩和されて、その振動の誘発を防止できる。
【０１９７】
なお、本実施の形態では、ロボットの駆動軸数を２軸として示したが、２軸に限られるものではない。駆動軸数が３軸以上であっても同様である。すなわち、図１１、図１２に示したベクトル量Ｐｉ、Ｐｊ、Ｒｋ、Ｑｋ＊において要素数を２軸に限定するものではない。要素数が３軸以上の場合でも、本実施の形態に示す構成が適用できる。
【０１９８】
また、図１０及び図１１に示した構成はソフトウェアおよびハードウェアのどちらでも実現可能である。ハードウェアではＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等のプログラム可能なロジックデバイスを用いれば構成できる。
【０１９９】
（実施の形態３）
図１５Ａは、本実施の形態に係る溶接ロボット２００の概略構成図である。図１５Ｂは、ワークを溶接するときの溶接ワイヤ２１１の動きを示す図である。
【０２００】
図１５Ａに示すように、多関節ロボットである溶接ロボット２００（被駆動体）は、複数のアーム２０１と、それらの間に複数の関節軸２０２と、を有している。アーム２０１の先端に溶接トーチ２１０が設置されている。溶接トーチ２１０の先端には溶接ワイヤ２１１が取り付けられている。溶接ワイヤ２１１とワーク２２０との間でアークを発生させて溶接を行う。
【０２０１】
溶接ロボット２００は、ロボット制御装置２０３と電気的に結合している。ロボット制御装置２０３は、関節軸数に応じたモータ制御装置２０４を有している。ここでは、ロボット制御装置２０３の詳細や、各々の関節軸２０２に対応したモータ６（図示せず）の配置の詳細は省略する。
【０２０２】
本実施形態において、モータ制御装置２０４は、実施の形態１または実施の形態２に示したモータ制御装置１００またはモータ制御装置１０２と同様の構成である。
【０２０３】
図１５Ｂに示すように、板状のワーク２２０と略円筒状のワーク２２１とを溶接するのにあたって、溶接ワイヤ２１１の先端は、溶接部の始点Ａから終点Ｂまでの軌跡を確実に描く必要がある。仮に、この軌跡から溶接ワイヤ２１１の先端が外れると、外れた部分で溶接不良を起こす場合がある。
【０２０４】
本実施形態によれば、モータ６が、移動指令によって指示された移動軌跡を忠実に追跡する。そのため、アーム２０１の先端に取り付けられた溶接ワイヤ２１１が軌跡を外れることなく移動して、溶接不良を低減できる。
【０２０５】
また、モータ６の移動指令ｐｍ＊に含まれる起振成分を低減できる。そのため、移動開始時および移動終了時及び中間での移動速度変化によるアーム２０１の急な動作が緩和されて、振動の誘発を防止できる。
【０２０６】
以上のことにより、移動開始時や急なアームの加速時に、溶接ビードの不形成を抑制できる。また、移動終了時や急なアームの減速時に、溶接ビードの溜まりが形成されるのを抑制できる。さらに、アームの振動が抑制されるため、溶接ワイヤの先端の移動精度が向上する。
【０２０７】
なお、本実施形態では、アーク溶接ロボットについて説明したが、本実施形態に限られず、他のロボットや自動搬送機等の産業用機械に、本開示のモータ制御装置は適用可能である。
【０２０８】
以上、本開示のモータ制御装置によれば、本来の指令軌跡に含まれる起振成分を取り除きつつ、フィルタ処理後の指令軌跡が本来の指令軌跡からずれないように位置制御を行える。
【０２０９】
上記のように、本開示のモータ制御装置は、移動指令と対になる定数を設定し、これをフィルタ処理して得られた新たな定数を用いて、モータの移動指令をフィルタ処理する。
【０２１０】
具体的には、本開示のモータ制御装置は、モータの移動指令を出力する移動指令生成部と、移動指令に基づいてモータの制御を行う制御部と、を備えたモータ制御装置である。モータ制御装置は、移動指令を処理して、新たな移動指令を出力する移動指令処理部を有している。移動指令処理部は、移動指令を保持するバッファと、移動指令と対になった定数をフィルタ処理するフィルタと、バッファに保持された移動指令と、フィルタ処理された定数とに基づいて、新たな移動指令を生成して出力する処理部と、を有している。新たな移動指令は、フィルタ処理された定数に比例した値である。
【０２１１】
この構成によれば、新たに生成された移動指令をフィルタ処理された定数に比例させることで、時系列的に異なる移動指令が新たな移動指令に混在するのを抑制する。その結果、フィルタ処理後の指令軌跡が本来の指令軌跡からずれないようにモータの位置制御を行うことが可能となる。またフィルタ処理により、本来の指令軌跡に含まれる起振成分を取り除くことが可能となる。
【０２１２】
ここで、移動指令と対になった定数は、モータの被駆動体の移動速度に比例した値であるのが好ましい。
【０２１３】
この構成によれば、モータの移動速度の急変に対しても、被駆動体のフィルタ処理後の指令軌跡が本来の指令軌跡からずれないようにモータの位置制御を行うことが可能となる。
【０２１４】
また、本開示のモータの位置制御方法は、上記のいずれかのモータ制御装置から出力される移動指令に基づいて、モータの位置制御を行う、モータの位置制御方法である。バッファに移動指令を入力して、保持する第１のステップを有する。さらに、定数をフィルタに入力し、フィルタ処理して、新たな定数を生成する第２のステップを有する。さらに、バッファに保持された移動指令を取り出して、処理部内の第１の保持部に保持された値に加算して保持するとともに、定数を処理部内の第２の保持部に保持された値に加算して保持する第３のステップを有する。さらに、新たな定数と、第１の保持部に保持された加算値と、第２の保持部に保持された加算値と、に基づいて、演算を行い、新たな定数に比例する新たな移動指令を生成するとともに、第１の保持部に保持された加算値から新たな移動指令を減算した値を第１の保持部に保持し、かつ、第２の保持部に保持された加算値から新たな定数を減算した値を第２の保持部に保持する第４のステップを有する。
【０２１５】
この方法によれば、移動指令を順次、バッファから取り出し、処理部内に保持することで、フィルタ処理された定数との演算を短時間で行うことができる。
【０２１６】
第３のステップにおいて、処理部内の第１の保持部から、保持された移動指令の加算値を取り出して、処理部内の第３の保持部に保持した後に、バッファから移動指令を取り出して、処理部内の第１の保持部に加算して保持し、新たな定数から処理部内の第２の保持部に保持された定数の加算値を減算した後に、処理部内の第２の保持部に定数を入力して保持するのが好ましい。第４のステップにおいて、第１の演算結果に、処理部内の第３の保持部に保持された移動指令の加算値を加算して、新たな移動指令として出力するのが好ましい。
【０２１７】
第１のステップにおいて、バッファに移動指令及び定数を入力して、保持し、第３のステップにおいて、バッファに保持された定数を第２の保持部に加算または入力して保持する、のが好ましい。
【０２１８】
この方法によれば、移動定数も順次、バッファから取り出し、処理部内に保持することで、移動定数を変化させた、例えば、モータの移動速度に比例した値としたときにも、移動指令とフィルタ処理された定数を用いて新たな移動指令を生成する演算を短時間で行うことができる。
【０２１９】
第２のステップにおいて、定数はバッファに入力される移動指令の個数と同じ個数が、フィルタに入力されてフィルタ処理され、さらに、新たな定数が所定の値以下になるまで、第１のステップから第４のステップまでの一連の処理を繰り返し実行する、のが好ましい。
【０２２０】
この方法によれば、フィルタ内に新たな定数が残存しているかどうかを確認でき、繰り返し処理の終了タイミングを決定できる。
【０２２１】
本開示の産業用機械は、モータと、モータを制御する上記のいずれかのモータ制御装置と、モータによって駆動される被駆動体と、を備える産業用機械であって、フィルタのカットオフ周波数は、被駆動体の固有振動数であることを特徴とする。
【産業上の利用可能性】
【０２２２】
本開示のモータ制御装置は、理想軌跡に対する指令軌跡の誤差を生じることなく、動作開始時、動作終了時、および移動速度急変時の加振を防止できる。そのため、ロボット等の、モータで駆動され、固有振動をもつ産業用機械に適用する上できわめて有用である。
【符号の説明】
【０２２３】
１  移動指令生成部
２  位置制御部
３  速度制御部
４  電流制御部
５  電流検出器
６  モータ
７  位置検出器
８  信号処理部
１０  フィルタ
２０，３０  移動指令処理部
２１  バッファ
２２  処理部
２３  フィルタ
３１  スイッチ
３２  スイッチ
３３  保持部
３４  保持部
３５  判定部
３６，３７  要素
３８  演算部
４１  バッファ
４４  保持部
１００，１０２，３００  モータ制御装置
１１０  制御部
２００  溶接ロボット
２０１  アーム
２０２  関節軸
２０３  ロボット制御装置
２０４  モータ制御装置
２１０  溶接トーチ
２１１  溶接ワイヤ
２２０  ワーク
２２１  ワーク
【図１】
2018047394.tif 000007
【図２】
2018047394.tif 000008
【図３Ａ】
2018047394.tif 000009
【図３Ｂ】
2018047394.tif 000010
【図４】
2018047394.tif 000011
【図５Ａ】
2018047394.tif 000012
【図５Ｂ】
2018047394.tif 000013
【図５Ｃ】
2018047394.tif 000014
【図５Ｄ】
2018047394.tif 000015
【図６Ａ】
2018047394.tif 000016
【図６Ｂ】
2018047394.tif 000017
【図６Ｃ】
2018047394.tif 000018
【図６Ｄ】
2018047394.tif 000019
【図７Ａ】
2018047394.tif 000020
【図７Ｂ】
2018047394.tif 000021
【図７Ｃ】
2018047394.tif 000022
【図８Ａ】
2018047394.tif 000023
【図８Ｂ】
2018047394.tif 000024
【図８Ｃ】
2018047394.tif 000025
【図９】
2018047394.tif 000026
【図１０】
2018047394.tif 000027
【図１１】
2018047394.tif 000028
【図１２】
2018047394.tif 000029
【図１３Ａ】
2018047394.tif 000030
【図１３Ｂ】
2018047394.tif 000031
【図１３Ｃ】
2018047394.tif 000032
【図１３Ｄ】
2018047394.tif 000033
【図１４Ａ】
2018047394.tif 000034
【図１４Ｂ】
2018047394.tif 000035
【図１４Ｃ】
2018047394.tif 000036
【図１４Ｄ】
2018047394.tif 000037
【図１５Ａ】
2018047394.tif 000038
【図１５Ｂ】
2018047394.tif 000039
【手続補正書】
【提出日】平成30年12月19日(2018.12.19)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０１８０
【補正方法】変更
【補正の内容】
【０１８０】
図１４Ａにおいて、”●”で表される点は、フィルタ処理後の補間位置に対応している。補間位置間のフィルタ処理後の移動指令はｑｍｋ＊（ｍ＝ｘ、ｙ、ｋ＝１〜１０）で表される。
【国際調査報告】
2018047394.tif 000040
2018047394.tif 000041