(57)【要約】  モータ制御装置は、モータの移動指令を出力する移動指令生成部と、移動指令をフィルタ処理して出力するフィルタと、フィルタの出力を入力として位置制御を行う位置制御部とを備える。フィルタは、フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２を含む以下の伝達関数Ｈ（ｚ）： Ｈ（ｚ）＝（ｂ０＋ｂ１・ｚ−１＋ｂ２・ｚ−２）／｛１−（ａ１・ｚ−１＋ａ２・ｚ−２）｝であらわされる無限インパルス応答型デジタルフィルタである。フィルタは、第１のサンプル周期でフィルタ係数ｂ０を変更し、第１のサンプリング周期の次の第２のサンプル周期でフィルタ係数ａ１、ｂ１を変更し、第２のサンプリング周期の次の第３のサンプル周期でフィルタ係数ａ２、ｂ２を変更するように構成されている。
2017022170.tif 000002
【特許請求の範囲】
【請求項１】
モータを制御するモータ制御装置であって、
前記モータの移動指令を出力する移動指令生成部と、
前記移動指令をフィルタ処理して出力するフィルタと、
前記モータの位置制御を行う位置制御部と、
を備え、
前記フィルタは、フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２を含む以下の伝達関数Ｈ（ｚ）：
Ｈ（ｚ）＝（ｂ０＋ｂ１・ｚ−１＋ｂ２・ｚ−２）／｛１−（ａ１・ｚ−１＋ａ２・ｚ−２）｝
であらわされて複数のサンプル周期で入力される入力データに基づいて出力データを出力する無限インパルス応答型デジタルフィルタであり、
前記位置制御部は前記出力データに基づいて前記モータの位置制御を行うよう構成されており、
前記フィルタは、
前記複数のサンプル周期のうちの第１のサンプル周期で前記フィルタ係数ｂ０を変更し、
前記複数のサンプル周期のうちの前記第１のサンプリング周期の次の第２のサンプル周期で前記フィルタ係数ａ１、ｂ１を変更し、
前記複数のサンプル周期のうちの前記第２のサンプリング周期の次の第３のサンプル周期で前記フィルタ係数ａ２、ｂ２を変更する、
ように構成されている、モータ制御装置。
【請求項２】
前記フィルタは、
前記第１のサンプル周期で前記フィルタ係数ａ１、ａ２、ｂ１、ｂ２を変更せず、
前記第２のサンプル周期でフィルタ係数ａ２、ｂ０、ｂ２を変更せず、
前記第３のサンプル周期で前記フィルタ係数ａ１、ｂ０、ｂ１を変更しない、
ように構成されている、請求項１に記載のモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移動指令をフィルタ処理してモータの角度位置を制御するモータ制御装置に関する。
【背景技術】
【０００２】
図５はモータ７の位置制御を行うモータ制御装置５０１の構成図である。モータ制御装置５０１は、モータ７を駆動して回転させるための移動指令を生成する移動指令生成部１と、モータ７の回転の角度位置を制御する位置制御部２と、モータ７の回転速度を制御する速度制御部３と、モータ７に供給される電流を制御する電流制御部４と、モータ７に電流を供給するアンプ５と、モータ７の回転の角度位置を検出する位置検出器８と、位置検出器８からの信号を処理する処理部１０と、アンプ５に電力を供給する電源部９を備える。処理部１０はモータ７の位置検出器８からの信号を処理し、モータ７の実際の速度ωと実際の移動量Δθに変換する。【０００３】
移動指令生成部１は、ユーザが作成する動作プログラムに基づいて移動指令Δθ＊を生成して所定周期毎に出力する。移動指令Δθ＊はモータの単位時間当たりの回転量である。【０００４】
位置制御部２は、移動指令生成部１から所定周期毎に出力される移動指令Δθ＊を積算して位置指令Ｄθを得て、所定周期毎の実際の移動量Δθを位置指令Ｄθから減算していく。ここで、実際の移動量Δθは、位置検出器８の出力を処理部１０で処理して得られる所定時間毎のモータ７の回転角移動量である。【０００５】
位置制御部２は、移動指令生成部１からの移動指令Δθ＊の総和と、処理部１０からの実際の移動量Δθの総和の差分を位置偏差量として保持する。この位置偏差量に比例定数（位置ゲイン）を乗じたものが速度指令ω＊として位置制御部２から出力される。この速度指令には、移動指令Δθ＊に比例定数（フィードフォワードゲイン）を乗じた値が加算されていてもよい。【０００６】
速度制御部３は、位置制御部２からの速度指令ω＊と処理部１０からのモータの実際の速度ωとの差分に対して例えばＰＩ制御を施して電流指令Ｉ＊を出力する。【０００７】
電流制御部４は、速度制御部３からの電流指令Ｉ＊とモータ７へ供給される実電流Ｉとの差分に対して例えばＰＩ制御を施して電圧指令またはＰＷＭ指令を出力する。【０００８】
なお、実電流Ｉは電流検出器６で検出する。【０００９】
アンプ５は、電流制御部４からの電圧指令またはＰＷＭ指令に基づき電源部９よりモータ７へ供給する電流を生成す。【００１０】
アンプ５に接続された電源部９はアンプ５に電力を供給し、モータ７への電流の供給源となる。【００１１】
モータ制御装置５０１を用いて、ロボット等の産業用機械が構成される。【００１２】
例えば、ロボットでは、駆動するアームの関節の数に応じた数のモータを備え、それぞれのモータとロボットアームは減速機を介して接続されている。【００１３】
このような構成のロボットでは、減速機、アームが弾性体となって、モータと負荷（アーム等）がある剛性を持つ軸（減速機等）を介して運動する系である２慣性系を構成し、駆動時に振動が発生する場合がある。特に、静止状態からの移動し始めと、目標位置での停止時に振動が発生しやすい。【００１４】
一般的には、モータ制御装置５０１の移動指令生成部１は移動指令Δθ＊を徐々に大きくしていって一定時間後に目標の移動指令量に達するように処理を行い、ロボットのアーム（以下、ロボットアームと称す）が目標位置に近づいたら、移動指令Δθ＊を徐々に小さくしていって目標位置で０となるように処理を行いいわゆる加減速処理を行う。これにより、前記振動の発生が抑えられる。【００１５】
しかしそれでもなお振動が発生してしまう場合がある。【００１６】
そのような場合には、移動指令生成部１と位置制御部２との間にフィルタを挿入する。このフィルタは移動指令に含まれる起振成分を取り除く。【００１７】
ここで、起振成分は、２慣性系の固有振動を含む振動成分である。よって、フィルタのカットオフ周波数は、この２慣性系による固有振動数に設定する。【００１８】
ところがロボットにおいては、ロボットアームの姿勢が変化すると固有振動数が変化する。その姿勢によりモータ側から見た、ロボットアームおよびその先に取り付けられる運搬物の慣性（イナーシャ）の大きさが変わるからである。【００１９】
従って、フィルタにより起振成分を取り除く場合は、フィルタのカットオフ周波数を、ロボットアームの姿勢に応じて変えられるようにするのが望ましい。【００２０】
このために、移動指令をフィルタ処理するフィルタの係数をロボットアームの姿勢に応じて変える方法が提案されている（例えば特許文献１）。【００２１】
一般にフィルタは、その内部にデータを残したままフィルタ係数を変えると、フィルタへの入力の総和とフィルタからの出力の総和は一致しなくなる。【００２２】
移動指令に対するフィルタ処理では、このようなことにより不具合が生じてしまう場合がある。フィルタ処理後の目標位置（フィルタ処理後の移動指令の積算値）が当初の目標位置（フィルタ処理前の移動指令の積算値）からずれてしまうからである。【００２３】
そこで特許文献１では、以下のようにして、移動開始位置から目標位置へかけてフィルタ係数を変えながらも目標位置がずれないように構成されている。【００２４】
すなわち、ｎ個のフィルタを並列に配置して、制御周期毎に入力される移動指令を、順次異なるフィルタへ入力し、これらのフィルタの出力の和を、位置制御部へ入力する移動指令とする。【００２５】
このフィルタは、デジタルフィルタで、ｎ次の有限インパルス応答（ＦＩＲ）型フィルタである。ｎ次のＦＩＲ型フィルタ（以下、フィルタという）は、一つのデータを入力した後、次のデータを入力しなければ、ｎ周期後にはフィルタの内部が空になる。また、ｎ周期後にはフィルタの内部が空になった時点では、フィルタへの入力の総和とフィルタからの出力の総和は一致する。【００２６】
このフィルタを用いて、一つの移動指令に対して一つのフィルタで処理するようにし、その移動指令が当該フィルタから完全に掃き出されるまで、当該フィルタには次の移動指令を入力しない。次の移動指令は、並列に接続された別のフィルタに入力する。【００２７】
フィルタはその内部が空になってはじめて、あらたな移動指令の入力を可能とする。例えば、Ｎ個の移動指令の列があったとして、１番目の移動指令を１番目のフィルタに入力する。そして、２番目の移動指令は２番目のフィルタに入力する。２番目のフィルタのフィルア係数は１番目のフィルタのフィルタ係数と異なっていてよい。【００２８】
このようにしてｋ（ｋ≦ｎ≦Ｎ）番目の移動指令をｋ番目のフィルタに入力していくということを順次行っていく。ここで、それぞれのフィルタ係数は少しずつ異なる値とする。【００２９】
このようにして、次にｎ番目の移動指令をｎ番目のフィルタに入力したとき、１番目のフィルタ内が空になるので、ｎ＋１番目の移動指令は１番目のフィルタに入力する。このとき１番目のフィルタのフィルタ係数は前回の１番目の移動指令を入力した際のフィルタ係数と異なる値とすることができる。【００３０】
これを順次繰り返していき、フィルタ定数を徐々に変化させていく。【００３１】
各フィルタでは、その内部にデータ（移動指令）が存在している間はフィルタ定数を変化させないので、入力の総和と出力の総和は一致する。【００３２】
以上のような構成で、移動指令の入力総和と出力総和のずれが生じることなく、移動しつつフィルタカットオフ周波数を変えることができる。
【先行技術文献】
【特許文献】
【００３３】
【特許文献１】特開平１１−１０２２１５号公報
【発明の概要】
【００３４】
モータ制御装置は、モータの移動指令を出力する移動指令生成部と、移動指令をフィルタ処理して出力するフィルタと、フィルタの出力を入力として位置制御を行う位置制御部とを備える。フィルタは、フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２を含む以下の伝達関数Ｈ（ｚ）： Ｈ（ｚ）＝（ｂ０＋ｂ１・ｚ−１＋ｂ２・ｚ−２）／（１−（ａ１・ｚ−１＋ａ２・ｚ−２））であらわされる無限インパルス応答型デジタルフィルタである。フィルタは、第１のサンプル周期でフィルタ係数ｂ０を変更し、第１のサンプリング周期の次の第２のサンプル周期でフィルタ係数ａ１、ｂ１を変更し、第２のサンプリング周期の次の第３のサンプル周期でフィルタ係数ａ２、ｂ２を変更するように構成されている。
【００３５】
このモータ制御装置のフィルタは、少ない演算量で、カットオフ周波数を変化させることができ、入力データの総和と出力データの総和とのずれを生じない。
【図面の簡単な説明】
【００３６】
【図１】図１は実施の形態におけるモータ制御装置の概略構成図である。
【図２】図２は実施の形態におけるモータ制御装置のフィルタの構成図である。
【図３】図３は実施の形態におけるモータ制御装置のフィルタの構成図である。
【図４】図４は実施の形態におけるモータ制御装置の動作を示す図である。
【図５】図５は従来のモータ制御装置の概略構成図である。
【発明を実施するための形態】
【００３７】
図１は実施の形態におけるモータ制御装置１００１の概略構成図である。図１において、図５に示すモータ制御装置５０１と同じ部分には同じ参照番号を付して詳細な説明は省略する。
【００３８】
特許文献１に開示されている方法はロボットアームの固有振動周波数が高い場合にはフィルタの次数が少なくて済み有効である。
【００３９】
しかし、ロボットアームの固有振動周波数が低くなると、演算量が増大して対応が困難となる。これは、低い固有振動周波数に対応する様に、ＦＩＲ型フィルタでカットオフ周波数を低くするにはフィルタの次数を高次にする（フィルタの係数を多くする）必要があり、さらに、特許文献１に開示されている構成では、フィルタの次数に比例した数のフィルタを並列接続する必要がある。つまり、演算量がフィルタ次数の２乗に比例して増大するからである。
【００４０】
一方で、コスト低減、ロボットアームのモータ軸の複数軸間でのデータの同期がとりやすいという観点から、一つのＣＰＵで複数軸の制御を行うことが要請されており、ＣＰＵの演算能力に余裕がないのが現状である。さらには、制御性能を向上させるために制御周期の短縮も望まれ、逆に、前記フィルタの演算量は少しでも減らしたいのが実情である。
【００４１】
ロボットアームを大型化した場合、ロボットアームの固有振動周波数は低くなるが、以上のような理由により、特許文献１に開示の方法での対応は難しい。
【００４２】
そこで、この問題への対応として、無限インパルス応答（ＩＩＲ）型フィルタを用いる方法が考えられる。
【００４３】
ＩＩＲ型フィルタは少ない個数の係数でカットオフ周波数を任意の大きさに設定できる利点がある。
【００４４】
一方、ＩＩＲ型フィルタにおいても、フィルタ内にデータを残したままフィルタ係数を変えると、フィルタへの入力の総和とフィルタからの出力の総和は一致しなくなる性質はＦＩＲ型フィルタに同じである。
【００４５】
そこで、特許文献１の構成にならって、複数のＩＩＲ型フィルタを並列接続し、各々のＩＩＲ型フィルタにデータを一つずつ順次入力していく構成が考えられる。
【００４６】
しかし、ＩＩＲ型フィルタではその内部にデータが長期に渡って残存するので、多数のＩＩＲ型フィルタを接続する必要がある。結局、個々のフィルタの演算量が少なくても、並列接続するフィルタの数が多くなるので、計算量は低減しない。
【００４７】
以下に図１に示す実施の形態におけるモータ制御装置１００１を説明する。モータ制御装置１００１は、図５に示すモータ制御装置５０１と異なり、移動指令生成部１と位置制御部２との間に設けられたフィルタ２０をさらに備える。
【００４８】
図２はフィルタ２０の構成図である。
【００４９】
実施の形態におけるフィルタ２０は２次の無限インパルス応答（ＩＩＲ）型フィルタである。２次のデジタルＩＩＲフィルタであるフィルタ２０の伝達関数Ｈ（ｚ）は（数１）のように示される。
【００５０】
【数１】
2017022170.tif 000003
【００５１】
ここで（数１）のフィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２は（数２）の関係を満たす。
【００５２】
【数２】
2017022170.tif 000004
【００５３】
フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２を適宜設計することにより、フィルタ２０のカットオフ周波数と減衰量を任意に設定することができる。
【００５４】
図３はフィルタ２０の伝達関数Ｈ（ｚ）に対応するブロック図である。図３に示す２次のデジタルＩＩＲフィルタでフィルタ２０が構成されている。
【００５５】
図３に示すフィルタ２０では、フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２の値をフィルタ２０のサンプル周期毎の入出力の途中で変化させなければ、フィルタ２０への入力の総和とフィルタ２０からの出力の総和は一致する。逆に、図３に示すフィルタ２０において、フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２の値を途中で変化させると、フィルタ２０への入力の総和とフィルタからの出力の総和は一致しない。
【００５６】
図２に示すフィルタ２０の構成は、図３に示すフィルタ２０において、入力の総和と出力の総和を一致させながら、フィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２の値をフィルタ２０へのサンプル周期毎の入出力の途中で変化させることができる。
【００５７】
以下、図２に示すフィルタ２０の構成について詳細に説明する。
【００５８】
フィルタ２０には入力データｘ（ｉ）が入力され、出力データｙ（ｉ）を出力する。ここで、ｉは自然数であり、入力データｘ（ｉ）と出力データｙ（ｉ）はそれぞれｉ周期目の入力データの値と出力データの値とを示す。
【００５９】
以下の説明で、ｉ周期目における中間変数ｕ０（ｉ）、ｕ１（ｉ）、ｕ２（ｉ）、Ｗ（ｉ）を参照する。また、フィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）はそれぞれｉ周期目におけるフィルタ係数ａ１、ａ２、ｂ０、ｂ１、ｂ２の値を示し、これらの値は演算周期毎に変化し得る。
【００６０】
なお、以下の説明では、遅れ要素ｚ−ｎ（遅延ブロック）を参照する。遅れ要素ｚ−ｎは入力のｎ周期前の値を出力する部分であり、例えばｚ−１は入力の１周期前の値を出力する部分である。
【００６１】
これらの中間変数およびフィルタ係数を使ってｉ周期目の出力データｙ（ｉ）は（数３）のようになる。
【００６２】
【数３】
2017022170.tif 000005
【００６３】
なお、中間変数ｕ０（ｉ）、ｕ１（ｉ）、ｕ２（ｉ）、Ｗ（ｉ）は以下の（数４）〜（数７）のように算出される。
【００６４】
【数４】
2017022170.tif 000006
【００６５】
【数５】
2017022170.tif 000007
【００６６】
【数６】
2017022170.tif 000008
【００６７】
【数７】
2017022170.tif 000009
【００６８】
次に、フィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）を設定するための構成を説明する。
【００６９】
モータ７の回転すなわち移動を開始する角度位置である開始位置におけるカットオフ周波数から決めた初期フィルタ係数Ａ１ｓ、Ａ２ｓ、Ｂ０ｓ、Ｂ１ｓ、Ｂ２ｓと、回転すなわち移動の最終角度位置である目標位置におけるカットオフ周波数から決めた目標フィルタ係数Ａ１ｅ、Ａ２ｅ、Ｂ０ｅ、Ｂ１ｅ、Ｂ２ｅを得る。これらのフィルタ係数を使って、演算周期毎に初期フィルタ係数から目標フィルタ係数まで漸近的に変化する定数Ａ１（ｋ）、Ａ２（ｋ）、Ｂ０（ｋ）、Ｂ１（ｋ）、Ｂ２（ｋ）を（数８）で求める。
【００７０】
【数８】
2017022170.tif 000010
【００７１】
ここでｋは自然数であり、移動開始位置から目標位置の間の補間数をＮ（自然数）としたとき、１≦ｋ≦Ｎである。また値αは、（数９）で求める量である。
【００７２】
【数９】
2017022170.tif 000011
【００７３】
なお、モータ７が回転を開始する角度位置である移動開始位置での初期フィルタ係数Ａ１ｓ、Ａ２ｓ、Ｂ０ｓ、Ｂ１ｓ、Ｂ２ｓ、および、モータ７が回転を終了する角度位置である目標位置での目標フィルタ係数Ａ１ｅ、Ａ２ｅ、Ｂ０ｅ、Ｂ１ｅ、Ｂ２ｅは（数１０）の関係を満たす。
【００７４】
【数１０】
2017022170.tif 000012
【００７５】
したがって、定数Ａ１（ｋ）、Ａ２（ｋ）、Ｂ０（ｋ）、Ｂ１（ｋ）、Ｂ２（ｋ）について（数１１）の関係が成り立つ。
【００７６】
【数１１】
2017022170.tif 000013
【００７７】
ここで、値αは、フィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）が、初期フィルタ係数Ａ１ｓ、Ａ２ｓ、Ｂ０ｓ、Ｂ１ｓ、Ｂ２ｓから目標フィルタ係数Ａ１ｅ、Ａ２ｅ、Ｂ０ｅ、Ｂ１ｅ、Ｂ２ｅに変化するときの合成比率を示す定数で、演算における、開始が０で終わりが１の間で変化する。
【００７８】
なお、値αは（数９）で求めることができるが、データテーブルを用いて求めても良く、または、一次遅れ曲線の式もしくは高次の関数曲線の式を用いて求めても良い。
【００７９】
定数Ａ１（ｋ）、Ａ２（ｋ）、Ｂ０（ｋ）、Ｂ１（ｋ）、Ｂ２（ｋ）を使って、ｉ周期目のフィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）を以下のように求める。
【００８０】
１周期目（ｉ＝１、ｋ＝１）のフィルタ係数ａ１（１）、ａ２（１）、ｂ０（１）、ｂ１（１）、ｂ２（１）は（数１２）で求める。
【００８１】
【数１２】
2017022170.tif 000014
【００８２】
２周期目（ｉ＝２、ｋ＝２）フィルタ係数ａ１（２）、ａ２（２）、ｂ０（２）、ｂ１（２）、ｂ２（２）は（数１３）で求める。
【００８３】
【数１３】
2017022170.tif 000015
【００８４】
以後、Ｎ周期目まで（３≦ｉ≦Ｎ）のフィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）は（数１４）で求める。
【００８５】
【数１４】
2017022170.tif 000016
【００８６】
Ｎ＋１周期目（ｉ＝Ｎ＋１）のフィルタ係数ａ１（Ｎ＋１）、ａ２（Ｎ＋１）、ｂ０（Ｎ＋１）、ｂ１（Ｎ＋１）、ｂ２（Ｎ＋１）は（数１５）で求める。
【００８７】
【数１５】
2017022170.tif 000017
【００８８】
Ｎ＋２周期目以後（ｉ≧Ｎ＋２）のフィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）は（数１６）で求める。
【００８９】
【数１６】
2017022170.tif 000018
【００９０】
ここで、フィルタ２０へのＮ周期目のデータの入力が終了して以後のＮ＋１周期目以後もフィルタ２０内にはデータが残存し、フィルタ２０内に残存するデータを出力し切るまでの間、フィルタ係数の演算（数３）〜（数７）を続けてフィルタ２０は出力データｙ（ｉ）を求めて出力する。
【００９１】
以上のようにフィルタ係数の演算を行うことにより、フィルタ２０へのデータの入力を続けながらフィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）を変更しても、フィルタ２０への入力データｘ（ｉ）の総和とフィルタ２０からの出力データｙ（ｉ）の総和を一致させることができる。
【００９２】
図４は、実際のデータの数すなわち補間数ＮがＮ＝５である場合に、１周期目からｍ周期目までのｉ周期目の入力データｘ（ｉ）と、フィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）と、中間変数ｕ０（ｉ）、ｕ１（ｉ）、ｕ２（ｉ）と、出力データｙ（ｉ）の値を示す（１≦ｉ≦ｍ、ｉ＝１，・・・，ｍ）。
【００９３】
ｉは周期の番号であり、入力データｘ（ｉ）はフィルタ２０へ入力される、移動指令生成部１からの移動指令である。中間変数ｕ０（ｉ）、ｕ１（ｉ）、ｕ２（ｉ）は値ｑ（ｊ）を有する。出力データｙ（ｉ）はフィルタ２０から出力されて位置制御部２へ入力される移動指令である。
【００９４】
Ｎ（補間数、実際のデータ数）＝５であり、それぞれの入力データ（移動指令）を、ｐ１〜ｐ５としている。
【００９５】
フィルタ係数ａ１（ｉ）、ａ２（ｉ）、ｂ０（ｉ）、ｂ１（ｉ）、ｂ２（ｉ）は、（数１２）〜（数１６）にしたがって変化している。
【００９６】
中間変数ｕ０（ｉ）、ｕ１（ｉ）、ｕ２（ｉ）は値ｑ（ｊ）を有する（ｊ＝１〜ｍ）。図４は「中間変数の値」の欄で値ｑ（ｊ）の内訳を示す。
【００９７】
出力データｙ（ｉ）は、（数３）にしたがって算出した値を値ｑ（ｊ）を使って示している。
【００９８】
以下、これらの値を使って、フィルタ２０への入力データｘ（ｉ）の総和とフィルタ２０からの出力データｙ（ｉ）の総和が一致することを示す。
【００９９】
図４に示す値ｑ（ｊ）（ｊ＝１〜ｍ）の内訳のそれぞれの左辺を合計し、それぞれの右辺を合計して値ｑ（ｊ）についてまとめると（数１７）が得られる。
【０１００】
【数１７】
2017022170.tif 000019
【０１０１】
また、１周期目からｍ周期目までについて出力データｙ（ｉ）（ｉ＝１〜ｍ）どうしを加算して、値ｑ（ｊ）についてまとめると（数１８）が得られる。
【０１０２】
【数１８】
2017022170.tif 000020
【０１０３】
（数１７）と（数１８）の左辺を合計してかつ右辺を合計して値ｑ（ｊ）についてまとめると（数１９）が得られる。
【０１０４】
【数１９】
2017022170.tif 000021
【０１０５】
（数１１）より、（数１９）は（数２０）で表される。
【０１０６】
【数２０】
2017022170.tif 000022
【０１０７】
（数２０）の両辺から（ｑ（１）＋ｑ（２）＋・・・ｑ（ｍ−２））を差し引いて（数２１）が得られる。
【０１０８】
【数２１】
2017022170.tif 000023
【０１０９】
（数２１）を変形して（数２２）が得られる。
【０１１０】
【数２２】
2017022170.tif 000024
【０１１１】
（数１）で示すフィルタ２０においては、（数２３）の関係により、値ｑ（ｍ）は周期を重ねて数ｍが大きくなると０に収束する。
【０１１２】
【数２３】
2017022170.tif 000025
【０１１３】
よって、（数２２）において、周期を重ねてｍが大ききくなると値ｒは０に収束し、１周期目からｍ周期目までの出力データｙ（ｉ）の総和は（数２４）に示すように、入力データ（ｉ）の総和に収束する。
【０１１４】
【数２４】
2017022170.tif 000026
【０１１５】
つまり、十分な数の周期を経過して数ｍを十分大きくすると、フィルタ２０の出力データｙ（ｉ）の総和はフィルタ２０の入力データｘ（ｉ）の総和に等しいと見なせる。
【０１１６】
あるいは、値ｑ（ｍ）が十分に小さくなったところで（数２２）の値ｒを、最後のｍ周期目の出力データｙ（ｍ）に加算して出力すれば、少ない数の周期でフィルタ２０の出力データｙ（ｉ）の総和とフィルタ２０への入力データｘ（ｉ）の総和を一致させることができる。
【０１１７】
または、フィルタ２０は、（数２２）の値ｒをｍ周期目の出力データｙ（ｍ）の次の（ｍ+１）周期目の出力データｙ（ｍ＋１）として出力してもよい。
【０１１８】
なお、（数２２）は補間数ＮがＮ＝５である場合（ｐ１〜ｐ５）の結果であるが、補間数ＮをＮ＝ｎとして（数２２）を一般化しても同様の結果となり、すなわち、１周期目からｍ周期目までの出力データｙ（ｉ）の総和は（数２５）で表される。
【０１１９】
【数２５】
2017022170.tif 000027
【０１２０】
以上のように、実施の形態におけるモータ制御装置１００１は、モータ７の移動指令を出力する移動指令生成部１と、移動指令をフィルタ処理して出力する少なくとも一つのフィルタ２０と、フィルタ２０の出力に基づいて位置制御を行う位置制御部２とを備える。フィルタ２０は以下の伝達関数Ｈ（ｚ）：Ｈ（ｚ）＝（ｂ０＋ｂ１・ｚ−１＋ｂ２・ｚ−２）／｛１−（ａ１・ｚ−１＋ａ２・ｚ−２）｝であらわされるＩＩＲ型デジタルフィルタである。
【０１２１】
フィルタ２０は、複数のサンプル周期で入力される入力データｘ（ｉ）に基づいて出力データｙ（ｉ）を出力する。位置制御部２は出力データｙ（ｉ）に基づいてモータ７の位置制御を行うよう構成されている。フィルタ２０は、複数のサンプル周期のうちの或るサンプル周期でフィルタ係数ｂ０を変更し、或るサンプル周期の次のサンプル周期でフィルタ係数ａ１、ｂ１を変更し、さらに次のサンプル周期でフィルタ係数ａ２、ｂ２を変更する。
【０１２２】
フィルタ２０は、上記或るサンプル周期ではフィルタ係数ａ１、ａ２、ｂ１、ｂ２を変更せず、次のサンプル周期ではフィルタ係数ａ２、ｂ０、ｂ２を変更せず、さらに次のサンプル周期ではフィルタ係数ａ１、ｂ０、ｂ１を変更しない。
【０１２３】
これにより、少なくとも一つのフィルタ２０（ＩＩＲ型フィルタ）を構成するＣＰＵの演算負荷を増加させることなく、フィルタ２０へのサンプル周期毎の入出力の途中で、入力データの総和と出力データの総和を一致させながらフィルタ係数を変化させることができる。
【０１２４】
実施の形態におけるモータ制御装置１００１により、ロボット等の、モータ７で駆動され、姿勢に応じて固有振動数が低周波領域にまで変化する産業用機械に対して、姿勢の広範囲にわたって移動指令による加振を防止することができる。
【符号の説明】
【０１２５】
１    移動指令生成部
２    位置制御部
３    速度制御部
４    電流制御部
５    アンプ
６    電流検出器
７    モータ
８    位置検出器
９    電源部
１０    処理部
２０    フィルタ
【図１】
2017022170.tif 000028
【図２】
2017022170.tif 000029
【図３】
2017022170.tif 000030
【図４】
2017022170.tif 000031
【図５】
2017022170.tif 000032
【国際調査報告】
2017022170.tif 000033
2017022170.tif 000034
2017022170.tif 000035
2017022170.tif 000036