(57)【要約】【課題】高コストなハードウェアを用いずに高精度にモータの駆動制御を行う。【解決手段】モータの回転位置に応じて周期的に変化するエンコード信号に応じた駆動指令に従い、モータの回転位置および回転速度のうち少なくとも一方を制御する。第１処理は、エンコード信号に基づき回転位置を検出する回転位置検出処理を少なくとも含み、割り込み処理の生起毎に同一の処理が実行される。第２処理は、第１処理により検出した回転位置に応じて駆動指令を生成する処理を少なくとも含み、割り込み処理の生起毎に異なる処理が選択される。割り込み処理内において、第２処理の実行に先立って、第１処理の回転位置検出処理を実行する。【選択図】図４
2014176101.tif 000002
【特許請求の範囲】
【請求項１】
駆動指令に従いモータの駆動制御を行う駆動制御部と、
前記駆動制御を行うための割り込み処理を割り込み周期毎に生起されて実行する割り込み制御部と、
前記割り込み処理の生起毎に同一の第１処理を実行する第１処理部と、
前記割り込み処理の生起毎に異なる第２処理を選択して実行する第２処理部と
を備え、
前記割り込み制御部は、
前記割り込み処理内で、前記第２処理の実行に先立って、前記第１処理のうち少なくとも１を実行する
ことを特徴とするモータ制御装置。
【請求項２】
前記駆動制御部は、
モータの回転位置に応じて周期的に変化するエンコード信号に応じた前記駆動指令に従い、前記モータの回転位置および回転速度のうち少なくとも一方を制御し、
前記第１処理部が実行する前記第１処理は、前記エンコード信号に基づき前記回転位置を検出する回転位置検出処理を少なくとも含み、
前記第２処理部が実行する前記第２処理は、前記第１処理部が検出した前記回転位置に応じて前記駆動指令を生成する処理を少なくとも含む
ことを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
目標位置を生成する目標位置生成部をさらに備え、
前記第１処理部および前記第２処理部のうち少なくとも一方は、さらに、
前記目標位置と前記回転位置とを比較して比較結果に応じて第１目標速度を生成する第１目標速度生成部を含み、
前記第１処理部は、さらに、
前記割り込み周期毎の前記回転位置の差分を取得し、取得した差分に応じて前記回転速度を算出し、算出した前記回転速度と前記第１目標速度とを比較して速度誤差を取得する速度比較部を含み、
前記第２処理部は、さらに、
前記速度誤差に応じて前記駆動指令を生成する速度制御部を含む
ことを特徴とする請求項２に記載のモータ制御装置。
【請求項４】
前記目標位置生成部は、
外部からの入力信号に応じて前記目標位置を生成する
ことを特徴とする請求項３に記載のモータ制御装置。
【請求項５】
前記第１処理部および前記第２処理部のうち少なくとも一方は、さらに、
前記割り込み処理の所定の生起回毎の前記目標位置の差分を取得し、取得した差分に応じて第２目標速度を生成する第２目標速度生成部を備え、
前記速度比較部は、
前記第１目標速度と前記第２目標速度とを加算した値と前記回転速度とを比較して前記速度誤差を取得する
ことを特徴とする請求項３または請求項４に記載のモータ制御装置。
【請求項６】
前記第１処理部は、さらに、
前記回転速度の低域成分を抽出するローパスフィルタを備え、
前記速度比較部は、
前記ローパスフィルタで抽出した前記低域成分と、前記第１目標速度と前記第２目標速度とを加算した値とを比較して前記速度誤差を取得する
ことを特徴とする請求項５に記載のモータ制御装置。
【請求項７】
前記第１処理部は、さらに、
前記速度比較部で取得された前記速度誤差の低域成分を抽出するローパスフィルタを備え、
前記速度制御部は、
前記ローパスフィルタで抽出した前記低域成分に応じて前記駆動指令を生成する
ことを特徴とする請求項５に記載のモータ制御装置。
【請求項８】
前記割り込み処理が実行されていない場合に第３処理を実行する第３処理部と、
前記割り込み処理の予め定められた生起回数毎に前記第３処理を実行させるループ処理部と
をさらに備え、
前記第３処理部は、
前記割り込み処理中に生成された前記駆動指令、および、前記割り込み処理中に取得された前記回転位置のうち少なくとも一方に応じて異常状態を判定する
ことを特徴とする請求項２乃至請求項７の何れか１項に記載のモータ制御装置。
【請求項９】
駆動指令に従いモータの駆動制御を行う駆動制御ステップと、
前記駆動制御を行うための割り込み処理を割り込み周期毎に生起されて実行する割り込み制御ステップと、
前記割り込み処理の生起毎に同一の第１処理を実行する第１処理ステップと、
前記割り込み処理の生起毎に異なる第２処理を選択して実行する第２処理ステップと
を備え、
前記割り込み制御ステップは、
前記割り込み処理内で、前記第２処理の実行に先立って、前記第１処理のうち少なくとも１を実行する
ことを特徴とするモータ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータを駆動制御するモータ制御装置およびモータ制御方法に関する。
【背景技術】
【０００２】
プリンタ装置および印刷機の用紙搬送制御や、ディスク記憶装置のヘッド位置制御などに、モータが広く使われている。これらの装置においては、モータを駆動制御して、モータを所定の速度で駆動したり、対象物を所望の位置に移動して位置決め制御を行う。モータの駆動制御方法として、モータ軸や移動対象に位置センサや速度センサを設け、これらのセンサの出力信号を用いて目標位置や目標速度と比較してモータ駆動量をフィードバック制御する技術が知られている。
【０００３】
このようなモータのフィードバック制御を、デジタル制御により実現する技術が広く用いられる。例えば、ＣＰＵ(Central  Processing  Unit)、メモリおよび入出力ポートなどを備えたマイクロコンピュータを用いてセンサ信号を定期的にサンプリングして制御処理演算を行い、モータの駆動量を出力することで、モータを駆動制御する。このモータの駆動制御の処理は、マイクロコンピュータに一般的に備わっている割り込み機構を用い、所定のサンプリング周期でＣＰＵに割り込みを要求し、割り込み処理内で制御処理演算を行なうのが一般的である。
【０００４】
このような割り込み処理によるモータ駆動のデジタル制御に関し、特許文献１には、タイマ割り込みを用いてモータの駆動制御を行う技術が開示されている。すなわち、特許文献１では、モータの駆動処理を所定間隔で発生するタイマ割り込み信号に応じて実行している。そして、他の割り込み信号に対応する処理の実行により遅延が発生した場合に、割り込み信号が発生してから駆動処理が実行されるまでの遅延時間を算出し、補正位置情報を算出して位置情報を更新してフィードバック制御を行なっている。特許文献１によれば、割り込み処理が遅延された場合における制御の精度低下を抑制することができる。
【０００５】
また、特許文献２には、エンコーダから出力される２相のパルス信号をそれぞれ検出して計数処理を行う２相カウンタと、Ａ相パルス信号だけを検出して計数処理を行う１相カウンタとを用いてモータの現在の回転位置を把握するようにした技術が開示されている。すなわち、特許文献２では、目標位置と、２相カウンタおよび１相カウンタによって把握した現在位置との差である位置誤差に応じた目標速度を出力する。それと共に、位置誤差の大きさを判定し、比較的小さい値である場合には２相カウンタによって現在位置を求め、比較的大きい値である場合には１相カウンタによって現在位置を求めている。特許文献２によれば、高性能のカウンタやそれに代わるＡＳＩＣ(Application  Specific  Integrated  Circuit)を用いること無く、モータの回転の現在位置を把握することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
デジタル制御においては、他の割り込み処理が優先されると制御演算が遅延してしまい、制御精度が低下してしまうという問題点があった。これに対して、特許文献１では、遅延時間を計測して制御処理を補正することで、他の割り込み処理による制御精度の悪化を抑制している。しかしながら、特許文献１の技術を用いたとしても、他の割り込み処理により何らかの精度低下が生じてしまうおそれがある。
【０００７】
さらに、特許文献１によれば、サンプリングから駆動量出力までの制御演算処理が遅延することにより、制御量の位相遅れが生じることになる。この制御量の位相遅れは、位相余裕を小さくし、その結果、制御の安定性を損なう場合があり、発振など不安定な状態を引き起こしてしまう可能性がある。
【０００８】
一方、特許文献２に開示されるマイクロコンピュータによるモータの回転位置や回転速度のフィードバック制御では、他の割り込み処理を受け付けていないため、それによる制御処理の遅延は発生しない。
【０００９】
しかしながら、この特許文献２においても、割り込み処理内で実行すべき処理が多くなると、割り込み処理の所定の周期内に処理が終了しなくなる可能性がある。割り込み処理の所定周期内に処理が終了しない場合、正常な動作ができずに制御が破綻するおそれがある。この問題は、特許文献１についても同様である。
【００１０】
制御割り込みの周期を短くすることで、制御性能を向上させることができる。また、制御割り込みの周期を短くすることで、カウンタなどの高コストなハードウェアを用いずに、割り込み処理のソフトウェアによりカウント処理を行うことが可能となる。しかしながら、このように割り込み周期を短くすると、割り込み周期内に処理が完了しない可能性がさらに高まってしまう。この問題は、より高速処理が可能なＣＰＵを用いることで解決可能であるが、この場合、ＣＰＵ本体と、ＣＰＵの周辺の構成のためのコストが嵩んでしまうという問題点があった。
【００１１】
本発明は、上記を鑑みてなされたものであって、高コストなハードウェアを用いずに高精度にモータの駆動制御を行うことを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、駆動指令に従いモータの駆動制御を行う駆動制御部と、駆動制御を行うための割り込み処理を割り込み周期毎に生起されて実行する割り込み制御部と、割り込み処理の生起毎に同一の第１処理を実行する第１処理部と、割り込み処理の生起毎に異なる第２処理を選択して実行する第２処理部とを備え、割り込み制御部は、割り込み処理内で、第２処理の実行に先立って、第１処理のうち少なくとも１を実行することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、高コストなハードウェアを用いずに高精度にモータの駆動制御を行うことが可能となるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】図１は、第１の実施形態に係るモータ制御装置の一例の構成を示すブロック図である。
【図２】図２は、第１の実施形態によるモータ制御装置の機能を説明するための機能ブロック図である。
【図３】図３は、第１の実施形態に係るＬＰＦの一例の構成を示すブロック図である。
【図４】図４は、第１の実施形態による割り込み処理の例を示すフローチャートである。
【図５】図５は、第２処理を実行した後に、第１処理の全ての処理を実行する場合の例を示す図である。
【図６】図６は、第１の実施形態に係る、第１処理のうち少なくとも現在位置の検出処理を、割り込み処理の先頭に実行する場合の例を示す図である。
【図７】図７は、第１の実施形態の変形例による割り込み処理の例を示すフローチャートである。
【図８】図８は、第２の実施形態によるモータ制御装置の一例の構成を示すブロック図である。
【図９】図９は、第２の実施形態によるモータ制御装置の機能を説明するための機能ブロック図である。
【図１０】図１０は、第２の実施形態による割り込み処理の例を示すフローチャートである。
【図１１】図１１は、第３の実施形態によるモータ制御装置の機能を説明するための機能ブロック図である。
【図１２】図１２は、第３の実施形態による割り込み処理の例を示すフローチャートである。
【図１３】図１３は、第３の実施形態における、割り込み処理の実行スケジュールの例を示す図である。
【図１４】図１４は、第４の実施形態によるモータ制御装置の機能を説明するための機能ブロック図である。
【図１５】図１５は、第４の実施形態による割り込み処理の例を示すフローチャートである。
【図１６】図１６は、各実施形態および実施形態の変形例に適用可能な、制御部における割り込み処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１５】
以下に、添付図面を参照して、モータ制御装置およびモータ制御方法の実施形態を詳細に説明する。
【００１６】
（第１の実施形態）
図１は、第１の実施形態に係るモータ制御装置の一例の構成を示す。図１において、モータ制御装置１は、制御部１０と、ドライバ１１と、エンコーダ（ＥＮＣ）１３とを有し、制御部１０から出力される駆動指令信号ｄｒｖに従い、ドライバ１１が駆動電圧Ｖｍを生成してモータ１２を駆動する。エンコーダ１３は、モータ１２の回転に応じてエンコード信号ｅｎｃｐを出力する。制御部１０は、このエンコード信号ｅｎｃｐに基づき、モータ１２の回転位置および回転速度のうち少なくとも一方を制御する駆動指令信号ｄｒｖを生成する。
【００１７】
駆動指令信号ｄｒｖは、電圧値により駆動を指令する信号であってもよいし、ＰＷＭ(Pulse  Width  Modulation)を用いてパルス幅により駆動を司令する信号であってもよい。同様に、駆動電圧Ｖｍは、電圧出力でもよいし、ＰＷＭ信号でもよい。
【００１８】
モータ１２は、回転軸が回転する回転モータでもよいし、動作部が直線運動を行うリニアモータでもよい。エンコーダ１３は、モータ１２が回転モータであれば、回転軸の回転角に応じて周期的に変化するエンコード信号ｅｎｃｐを出力する。また、エンコーダ１３は、モータ１２がリニアモータであれば、モータ１２の直線運動位置に応じて周期的に変化するエンコード信号ｅｎｃｐを出力する。以下では、モータ１２が回転モータであって、エンコード信号ｅｎｃｐがモータ軸の回転角に応じて周期的に変化する信号であるものとする。
【００１９】
エンコーダ１３は、具体的には、例えばモータ１２の回転軸に円盤状部材を取り付け、この円盤状部材の円周上に等間隔のスリットを設ける。そして、静止部材側に取り付けた光源からのスリット透過光を光電変換器で検出してエンコード信号ｅｎｃｐとする。エンコード信号ｅｎｃｐを適切に波形整形することで、モータ１２の回転軸が所定角度だけ回転する毎にパルスを発する、周期的なパルス信号が得られる。モータ１２がリニアモータの場合、動作部の移動位置に応じて周期的に変化するエンコード信号ｅｎｃｐが得られる。
【００２０】
エンコーダ１３の設置位置は、モータ回転軸上に限定されない。例えば、モータ１２が回転モータである場合、エンコーダ１３を、モータ１２が駆動する対象物の動作軸上に設置してもよい。モータ１２がリニアモータである場合、直線的にスリットが配置されていてもよい。また、エンコーダ１３は、スリットと光源とによる光学的手段でなく、磁気やその他の手段によってモータ１２の回転や移動を検出してもよい。
【００２１】
モータ制御装置１の構成について、より詳細に説明する。制御部１０は、例えばマイクロコンピュータであり、ＣＰＵ(Central  Processing  Unit)２０と、メモリ２１と、割り込み部２２と、カウンタ２３と、Ｄ／Ａ部２４とを有し、各部がバス２５により互いに通信可能に接続される。メモリ２１は、ＲＡＭ(Random  Access  Memory)およびＲＯＭ(Read  Only  Memory)を含み、ＲＯＭには、ＣＰＵ２０が動作するためのプログラムが予め記憶されている。
【００２２】
ＣＰＵ２０は、メモリ２１に記憶されるプログラム命令を順次デコードしてデータ移動、演算処理、分岐処理、割り込み処理といった各種処理を実行する。このとき、ＣＰＵ２０は、メモリ２１のＲＡＭ部分をワークメモリとして用いることができる。割り込み部２２は、ＣＰＵ２０に対して、予め定められた周期で定期的に割り込み要求ｉｎｔを発生させる。
【００２３】
カウンタ２３は、エンコーダ１３から出力されるエンコード信号ｅｎｃｐによるパルスをカウントしてカウント値ｅｃｎｔを出力する。Ｄ／Ａ部２４は、ＣＰＵ２０からデジタル信号として出力された駆動指令信号ｃｔｌを、アナログ信号である駆動指令信号ｄｒｖに変換してドライバ１１に対して出力する。駆動指令信号ｄｒｖは、上述したように、電圧出力でもよいし、ＰＷＭ信号でもよい。
【００２４】
ドライバ１１は、駆動指令信号ｄｒｖに従いモータ１２の駆動制御を行う駆動制御部として機能する。駆動指令信号ｄｒｖが電圧出力である場合には、ドライバ１１は、例えば駆動指令信号ｄｒｖの電圧値が高いほど高い駆動電圧Ｖｍを出力し、より高速でモータ１２を駆動する。一方、駆動指令信号ｄｒｖがＰＷＭ信号である場合には、ドライバ１１は、例えばＰＷＭのデューティ比が高いほど高い駆動電圧Ｖｍを出力する。以下では、駆動指令信号ｄｒｖおよび駆動電圧Ｖｍは、それぞれ電圧値により駆動指令およびモータ駆動を行うものとする。
【００２５】
図２は、第１の実施形態によるモータ制御装置１の機能を説明するための機能ブロック図である。この機能ブロック図における各部は、例えばＣＰＵ２０上で動作するプログラムにより実現される。モータ制御装置１は、目標位置生成部１００と、現在位置検出部１０１と、位置比較部１０２と、現在速度検出部１０３と、速度比較部１０４と、ローパスフィルタ（ＬＰＦ）１０５と、速度制御演算部１０６とを有する。
【００２６】
図２の各部を構成するためのモータ制御プログラムは、例えばメモリ２１に予め記憶される。これに限らず、各実施形態および変形例に係るモータ制御プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ(Compact  Disk)、フレキシブルディスク（ＦＤ）、ＤＶＤ(Digital  Versatile  Disk)などのコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
【００２７】
さらに、各実施形態および変形例に係るモータ制御プログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、実施形態に係るモータ制御プログラムを、インターネットなどのネットワーク経由で提供または配布するように構成してもよい。
【００２８】
例えば、第１の実施形態に係る制御部１０で動作するモータ制御プログラムは、上述した目標位置生成部１００と、現在位置検出部１０１と、位置比較部１０２と、現在速度検出部１０３と、速度比較部１０４と、ローパスフィルタ（ＬＰＦ）１０５と、速度制御演算部１０６とを含むモジュール構成となっている。実際のハードウェアとしては、ＣＰＵ２０がメモリ２１から当該モータ制御プログラムを読み出して実行することにより、上述した各部が主記憶装置（メモリ２１のＲＡＭ部分）上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【００２９】
図２を用いて、制御部１０において実行される処理による信号の流れについて詳細に説明する。図２に示される信号の流れは、割り込み部２２が定期的に割り込み要求ｉｎｔを出力することで生起され、実行される。
【００３０】
なお、この例では、エンコード信号ｅｎｃｐのサンプリング周波数を周波数ｆｓとした場合、目標位置生成部１００、位置比較部１０２および速度制御演算部１０６がサンプリング周波数ｆｓ／４で動作し、現在速度検出部１０１、現在速度検出部１０３、速度比較部１０４およびＬＰＦ１０５がそれぞれサンプリング周波数ｆｓで動作している。このサンプリング周波数ｆｓは、割り込み部２４で生起される基本割り込み周期（＝１／ｆｓ）の逆数であり、サンプリング周波数ｆｓでは、割り込み毎に処理が実行されることを示す。また、サンプリング周波数ｆｓ／４は、４回の割り込み毎に処理が実行されることを示す。
【００３１】
目標位置生成部１００は、目標位置ｘｔｇｔを出力する。目標位置生成部１００は、目標位置ｘｔｇｔの代わりに、目標位置への移動量である目標移動量を出力してもよい。目標位置生成部１００は、図示しない上位装置からの指示や、目標位置生成部１００内部での算出により、この目標位置ｘｔｇｔを生成して出力する。目標位置ｘｔｇｔは、一定量間隔のステップ単位で出力してもよいし、所定の目標速度プロファイルを積分した時間的に変化する量であってもよい。
【００３２】
現在位置検出部１０１は、エンコード信号ｅｎｃｐによるパルスをカウンタ２３で計数したカウント値ｅｎｃｔに基づき、現在のモータ１２の回転角を取得し、回転角に基づき現在位置ｘｄｅｔを出力する。現在位置検出部１０１は、カウンタ２３からカウント値ｅｎｃｔを直接的に読み出してもよいし、エンコード信号ｅｎｃｐから所定の物理単位に変換するために、カウント値ｅｎｃｔに所定の係数を乗じてもよい。この場合、後段の演算で十分な演算語長を確保して演算精度を上げるため、エンコード信号ｅｎｃｐのパルス単位に対して大きな係数を乗じておくのが好ましい。
【００３３】
第１の実施形態では、カウント値ｅｎｃｔを、ハードウェアで構成されたカウンタ２３により計数している。これに限らず、エンコード信号ｅｎｃｐのパルス周期よりも十分短い割り込み周期で割り込み処理が実行される場合、現在位置検出部１０１は、エンコード信号ｅｎｃｐのパルスに応じたパルス論理値（０または１）を直接的に読み出してもよい。この場合は、一つ前の割り込み処理で読み出したエンコード信号ｅｎｃｐのパルス論理値と、今回のパルス論理値とに変化があったときにパルスエッジが検出されたことになるので、パルス論理値の変化に基づきカウント値ｅｃｎｔを計数すればよい。
【００３４】
位置比較部１０２は、目標位置生成部１００から出力された目標位置ｘｔｇｔと、現在位置検出部１０１から出力された現在位置ｘｄｅｔとを比較し、下記の式（１）に従い比較結果に所定の係数Ｇｘを乗じて目標速度ｖｔｇｔ1を出力する。なお、以下において、特に記載の無い限り、各式は、プログラミング言語として一般的に用いられるＣ言語に準じた記法にて記述している。
vtgt1＝(xtgt−xdet)＊Gx；    …（１）
【００３５】
これにより、目標位置ｘｔｇｔと現在位置ｘｄｅｔとのずれが大きいほど大きな速度を目標速度ｖｔｇｔ1とし、位置ずれを高速で小さくするように、モータ１２が駆動される。位置ずれが小さくなると目標速度ｖｔｇｔ1が減少し、スムースに目標位置ｘｔｇｔに到達できる。
【００３６】
現在速度検出部１０３は、所定の周期毎に現在位置ｘｄｅｔの差分を求めて現在速度ｖｄｅｔを算出する。好ましくは、現在速度検出部１０３は、割り込み周期毎に現在位置ｘｄｅｔと１周期前の現在位置ｚ＿ｘｄｅｔとの差分を求め、この差分に対して所定の係数Ｇｖを乗じて現在速度ｖｄｅｔを求める。
【００３７】
例えば、現在速度検出部１０３は、割り込み周期毎に下記の式（２）の演算を行う。なお、以下の各式において、各行の先頭にコロン「：」で区切られて付される数字は、複数行からなる式の各行を区別するための行番号である。また、行番号が付されている場合、当該複数行が１の式を構成しているものとする。
1:  vdet＝(xdet0−xdet1)＊Gv；
2:  z＿xdet＝xdet；    …（２）
【００３８】
なお、上述したように、エンコード信号ｅｎｃｐによるパルスをソフトウェアによりカウントする場合には、パルス論理値の変化を検出する。実際には、検出されたパルス論理値の変化を現在速度ｖｄｅｔと見做し、現在速度ｖｄｅｔを積算して現在位置ｘｄｅｔとする方法が容易である。
【００３９】
例えば、現在位置検出部１０１および現在速度検出部１０３は、割り込み周期毎にエンコード信号ｅｎｃｐのパルスを読み出す場合、現在速度ｖｄｅｔおよび現在位置ｘｄｅｔを下記の式（３）を用いて求める。式（３）において、記号「！＝」は、両辺が等しくないことを示す条件演算子である。
1:  if  (encp  !=  z＿encp)  ｛
2:  vdet  =  1;
3:  ｝
4:  else  ｛
5:  vdet  =  0;
6:  ｝
7:  xdet  =  xdet  +  vdet;
8:  vdet  =  vdet  *  Gv;
9:  z＿encp  =  encp;    …（３）
【００４０】
式（３）において、１行目および２行目は、一つ前のエンコード信号ｅｎｃｐに対して変化があった場合に、現在速度ｖｄｅｔとして１を発生させることを示す。４行目および５行目は、エンコード信号ｅｎｃｐが変化してない場合に現在速度ｖｄｅｔを０とすることを示す。７行目は、現在速度ｖｄｅｔを積算して現在位置ｘｄｅｔとすることを示す。８行目は、現在速度ｖｄｅｔに所定の係数Ｇｖを乗ずることを示す。また、９行目は、一つ前のエンコード信号ｅｎｃｐを更新することを示す。
【００４１】
式（３）は、エンコード信号ｅｎｃｐの両エッジ（立ち上がりと立下り両方）をカウントして現在位置ｘｄｅｔとし、現在位置ｘｄｅｔの微分すなわち割り込み周期毎の差分を現在速度ｖｄｅｔとするためのプログラム例を示している。このプログラムに従い処理を行うことで、ハードウエアによるカウンタ２３を用いずに現在位置検出部１０１と現在速度検出部１０３とを構成できる。この場合、ハードウェアによるカウンタ２３を設ける例に比べて、装置を低コスト化することが可能である。
【００４２】
図２の説明に戻り、速度比較部１０４は、目標速度ｖｔｇｔ1と現在速度ｖｄｅｔとを比較し、比較結果に応じて、下記の式（４）に従い速度誤差ｖｅｒｒを出力する。
verr＝vtgt1−vdet;    …（４）
【００４３】
ローパスフィルタ（ＬＰＦ）１０５は、速度誤差ｖｅｒｒの低域成分を通過させるフィルタ演算を行う。ＬＰＦ１０５は、既知の信号処理理論を用いて設計することができる。
【００４４】
図３は、第１の実施形態に係るＬＰＦ１０５の一例の構成を示す。この例では、ＬＰＦ１０５は、係数乗算器２００および２０２と、加算器２０１と、遅延器２０３とを有し、１次ＬＰＦを構成している。図３に示すＬＰＦ１０５は、入力ｉｎとして入力された信号に対してローパスフィルタ処理を施して、出力ｏｕｔとして出力する。第１の実施形態では、速度比較部１０４から出力される速度誤差ｖｅｒｒが入力ｉｎとして入力され、速度誤差ｖｅｒｒがローパスフィルタ処理された信号ｖｅ＿ｌｐｆが、出力ｏｕｔとして速度演算制御部１０６に対して出力される。
【００４５】
また、係数乗算器２００および２０２は、それぞれ、入力された信号に対して係数ａおよびｂを乗ずる。これら係数ａおよびｂは、ＬＰＦ１０５のカットオフ周波数とサンプリング周波数ｆｓとが与えられれば、既知の信号処理理論を用いて容易に求めることができる。加算器２０１は、係数乗算器２００および２０２の出力を加算し、信号ｖｅ＿ｌｐｆとして出力する。遅延器２０３は、メモリであり、一つ前の演算（割り込み周期）の際の値を記憶する。
【００４６】
ＬＰＦ１０５は、下記の式（５）に従い演算を行って、入力ｉｎに入力された信号に対してローパスフィルタ処理を施す。この式（５）による処理は、割り込み周期（＝１／ｆｓ）毎に実行されることが好ましい。なお、式（５）において、変数ｚ＿ｌｐｆは、メモリ２０３に格納される値を示すメモリ変数である。
1:  out＝in＊a＋z＿lpf＊b
2:  z＿lpf＝out    …（５）
【００４７】
式（５）において、１行目で入力ｉｎから出力ｏｕｔまでを計算している。２行目で、今回の出力ｏｕｔを、次回の計算用に、メモリ変数ｚ＿ｌｐｆに代入している。
【００４８】
説明は図２に戻り、速度制御演算部１０６は、速度誤差ｖｅｒｒに対して誤差増幅演算処理を施して、モータ１２の回転速度を制御するためのモータ駆動指令信号ｃｔｌを生成する。速度制御演算部１０６は、例えばＰＩＤ（比例、積分、微分）コントローラ手法を用いて誤差増幅演算を行うと好ましい。速度制御演算部１０６は、所定回数の割り込み処理毎、例えば４回の割り込みに対して１回の周期（サンプリング周波数ｆｓ／４）で、下記の式（６）に従いＰＩＤ演算により誤差増幅演算を行う。なお、式（６）において、値Ｇｐ、ＧｉおよびＧｄは、それぞれ比例ゲイン、積分ゲインおよび微分ゲインである。
1:  p＝verr＊Gp;
2:  i＝i＋verr＊Gi;
3:  d＝(verr−  z＿verr)＊Gd;
4:  ctl＝p＋i＋d;
5:  z＿verr＝verr;    …（６）
【００４９】
式（６）において、１行目で速度誤差ｖｅｒｒに対して比例ゲインＧｐを乗じている。２行目で、速度誤差ｖｅｒｒに対して積分ゲインＧｉを乗じて積算している。３行目で前回の速度誤差ｚ＿ｖｅｒｒとの差分に微分ゲインＧｄを乗じている。４行目では、１行目〜３行目の結果すなわち比例成分、積分成分および微分成分を加算して、制御出力であるモータ駆動指令信号ｃｔｌを生成している。さらに、５行目では、次回の３行目の微分演算用の速度誤差ｚ＿ｖｅｒｒを更新している。
【００５０】
速度演算制御部１０６は、式（６）のＰＩＤ演算により、低域では、積分により十分大きな増幅率を確保して速度誤差をゼロにするように制御される。また、高域では、微分によりモータコイルの電流位相遅れなどが補償されて安定化が可能となる。このように、ＰＩＤ演算を用いた速度演算制御部１０６は、既知の制御理論の知見に基づいた速度制御処理を実行する。
【００５１】
図４は、第１の実施形態による割り込み処理の例を示すフローチャートである。割り込みは、制御部１０の割り込み部２２により所定の周期で生起され、割り込みエントリに分岐して実行される。
【００５２】
図４において、ステップＳ１００で、制御部１０は、現在位置検出部１０１により現在位置ｘｄｅｔを検出する。次のステップＳ１０１で、制御部１０は、カウント変数ｓｃｎｔの判定を行い、判定結果に応じて処理を分岐させる。この例では、制御部１０は、カウント変数ｓｃｎｔを４で除した剰余（ｍｏｄ）に従い、それぞれ第２処理であるステップＳ１０２Ａ〜１０２Ｄの何れかに処理を分岐させる。
【００５３】
制御部１０は、剰余が０であると判定した場合、処理をステップＳ１０２Ａに移行させ、目標位置生成部１００により目標位置ｘｔｇｔを生成する。制御部１０は、剰余が１であると判定した場合、処理をステップＳ１０２Ｂに移行させ、位置比較部１０２により目標位置ｘｔｇｔと現在位置ｘｄｅｔとを比較し、目標速度ｖｔｇｔ1を出力する。制御部１０は、剰余が２であると判定した場合、処理をステップＳ１０２Ｃに移行させ、速度制御演算部１０６により速度制御演算を行い、モータ駆動指令信号ｃｔｌを生成する。また、制御部１０は、剰余が３であると判定した場合、処理をステップＳ１０２Ｄに移行させる。第１の実施形態においては、ステップＳ１０２Ｄの処理はリザーブされている。
【００５４】
ステップＳ１０１で、カウント変数ｓｃｎｔを４で除した剰余に従い、それぞれ第２処理である、ステップＳ１０２Ａ〜１０２Ｄによる複数の異なる処理を選択している。そのため、第２処理は、この図４のフローチャート全体の４回の実行で一巡することになる。したがって、各第２処理は、割り込み周期１／ｆｓに対して、サンプリング周波数ｆｓ／４で実行される処理群である。
【００５５】
ステップＳ１０２Ａ〜Ｓ１０２Ｄのうち剰余の値に応じた処理が終了すると、処理がステップＳ１０３に移行される。ステップＳ１０３で、制御部１０は、現在速度検出部１０３により現在速度ｖｄｅｔを検出する。次のステップＳ１０４で、制御部１０は、速度比較部１０４により目標速度ｖｔｇｔ1と現在速度ｖｄｅｔとを比較し、比較結果として速度誤差ｖｅｒｒを出力する。次のステップＳ１０５で、制御部１０は、ＬＰＦ１０５により速度誤差ｖｅｒｒに対してローパスフィルタ処理を施す。そして、次のステップＳ１０６で、制御部１０は、カウント変数ｓｃｎｔを１だけインクリメントして、この図４のフローチャートによる処理を抜ける。
【００５６】
上述の第２処理がこのフローチャートの４回の実行で一巡するのに対し、ステップＳ１００、ならびに、ステップＳ１０３〜１０６の処理は、フローチャートの実行毎に実行される。このフローチャートの実行毎に実行されるステップＳ１００、ステップＳ１０３〜１０６の処理を、第１処理と呼ぶ。
【００５７】
ここで、第２処理は、フローチャートの実行毎に異なる処理が実行されるため、フローチャートの実行毎に実行時間が異なることになる。したがって、その後の処理の開始タイミングが毎回異なり、速度検出や位置検出を正確に実行することが困難となる。
【００５８】
そこで、図４のフローチャートにおいては、第１処理のうち、少なくとも現在位置検出部１０１による現在位置ｘｄｅｔの検出処理を各第２処理に対して先立って実行するようにしている。これにより、現在位置検出部１０１による処理の割り込み処理開始に対する開始タイミングがフローチャートの実行毎に等しくできる。このため、現在位置ｘｄｅｔを正確に検出することが可能となる。
【００５９】
また、エンコード信号ｅｎｃｐの係数をハードウェアによるカウンタ２３で行うのではなく、制御部１０における割り込みのタイミングで現在位置検出部１０１がエンコード信号ｅｎｃｐの論理値をサンプリングして行う場合も、サンプリング間隔が変動しないので、モータ１２のより高速な回転速度まで対応可能である。この場合、ハードウェアを用いた係数ではないので、回路および部品のコストを低く抑えることが可能となる。
【００６０】
図５および図６を用いて、第２処理を第１処理よりも前に実行する場合と、第１処理の少なくとも一部を第２処理の前に実行する場合との違いについて、より具体的に説明する。なお、図５および図６において、上述した図４のフローチャートと対応する処理に同一の符号を付して、詳細な説明を省略する。また、図５および図６において、周期Ｔｓは、割り込み周期を示す。
【００６１】
図５は、第２処理を実行した後に、第１処理の全ての処理を実行する場合の例を示す。図５の例では、周期＃０の先頭にて第２処理であるステップＳ１０２Ａの処理が時間Ｔ1をかけて実行され、周期＃１の先頭にて第２処理であるステップＳ１０２Ｂの処理が時間Ｔ2をかけて実行され、周期＃２の先頭にて第２処理であるステップＳ１０２Ｃの処理が時間Ｔ3をかけて実行されている。さらに、周期＃０〜＃２それぞれにおいて、ステップＳ１０２Ａ、ステップＳ１０２ＢおよびステップＳ１０２Ｃに続けて第１処理によるステップＳ１００の処理と、ステップＳ１０３〜１０５の処理とが実行される。
【００６２】
第２処理であるステップＳ１０２Ａ、ステップＳ１０２ＢおよびステップＳ１０２Ｃは、互いに異なる処理のため、時間Ｔ1、Ｔ2およびＴ3も、それぞれ異なる。そのため、各周期＃０〜＃２において、第２処理の終了タイミングすなわち第１処理の開始タイミングが互いに異なってしまうことになる。このため、第１処理の先頭に実行されるステップＳ１００の、現在位置検出部１０１による現在位置ｘｄｅｔのサンプリング周期Ｔｓ0およびＴｓ1は、割り込み周期Ｔｓと異なってしまう。
【００６３】
図６は、第１の実施形態に係る、第１処理のうち少なくともステップＳ１００の現在位置検出部１０１による現在位置ｘｄｅｔの検出処理を、割り込み処理の先頭に実行する場合の例である。図６の例では、第２処理は、第１処理に含まれるステップＳ１００の処理よりも後に実行されている。この場合には、割り込み周期毎に同一の処理であるステップＳ１００の処理が先頭に実行されるため、ステップＳ１００による各サンプリング周期Ｔｓ0およびＴｓ1は、割り込み周期の毎回で割り込み周期Ｔｓと等しくなる。そのため、現在位置検出部１０１によるサンプリングを正確に実行することが可能となる。
【００６４】
第１の実施形態では、上述したように、割り込み処理毎に同一の処理を実行する第１処理と、割り込み処理毎に異なる処理に分岐して実行する第２処理とを備えている。そして、第１処理として、下記の４の処理(i)〜(vi)を割り当てている。
(i)現在位置検出部１０１による現在位置ｘｄｅｔの検出処理。
(ii)現在速度検出部１０３による現在速度ｖｄｅｔの検出処理。
(iii)速度比較部１０４による目標速度ｖｔｇｔ1と現在速度ｖｔｇｔとの比較処理。
(iv)ＬＰＦによる速度誤差ｖｅｒｒに対する低域通過フィルタ処理。
【００６５】
一般に、現在位置と速度の検出は、速度制御ループ内で高速な処理を要求されるため、割り込み毎に実行することで、高速で精密な制御を可能にしている。
【００６６】
一方、第２処理として、下記の３の処理(v)〜(vii)を割り当てている。
(v)目標位置生成部１００による目標位置ｘｔｇｔの生成処理。
(vi)位置比較部１０２による目標位置ｘｔｇｔと現在位置ｘｄｅｔとの比較処理。
(vii)速度演算制御部１０６による速度制御演算処理。
【００６７】
第２処理として割り当てたこれらの処理は、比較的低速に処理しても制御性能に影響を与えないため、例えば割り込み４回に１回ずつ順次実行することで、制御部１０として、処理性能の比較的低いＣＰＵを用いた、低コストのマイクロコンピュータの利用を可能にしている。
【００６８】
すなわち、処理性能の低いＣＰＵを制御に用いた場合、全ての処理を割り込み処理毎に毎回実行すると、割り込み周期内に処理が完了しない可能性があり、制御処理が破綻してしまうおそれがある。第１の実施形態では、制御に係る処理のうち、高速性が要求されない処理を各割り込み周期で分散させることで、全体としての制御が破綻することが防がれると共に、制御性能を低下させないようにできる。
【００６９】
また、速度比較部１０４から出力された速度誤差ｖｅｒｒに対してＬＰＦ１０５によりローパスフィルタ処理を施しているため、現在速度ｖｄｅｔに起因するノイズが抑制され、より高精度な制御が可能となる。また、ステップＳ１０５のＬＰＦ１０５によるローパスフィルタ処理を、割り込み処理毎に実行される処理としたため、モータ１２を高速回転させる場合であっても、高精度な速度制御を行うことが可能である。
【００７０】
なお、処理(i)〜(vii)の第１処理および第２処理への割り当ては、上述の例に限定されない。例えば、上述で第２処理に割り当てられている処理(v)の目標位置生成部１００による目標位置ｘｔｇｔの生成処理を、第１処理に割り当ててもよい。この場合においても、少なくとも、処理(i)の現在位置検出部１０１による現在位置ｘｄｅｔの検出処理は、第１処理に割り当てる。また、少なくとも、処理(vii)の速度演算制御部１０６による速度制御演算処理は、第２処理に割り当てる。
【００７１】
（第１の実施形態の変形例）
次に、第１の実施形態の変形例について説明する。上述の第１の実施形態では、第１処理のうち、現在位置検出部１０１による現在位置検出処理のみを第２処理の前に実行しているが、これはこの例に限定されない。すなわち、第１処理に含まれる全ての処理（ステップＳ１００、ならびに、ステップＳ１０３〜１０６）を、第２処理の前に実行してもよい。
【００７２】
図７は、第１の実施形態の変形例による割り込み処理の例を示すフローチャートである。なお、図７において、上述の図４のフローチャートにおける処理と共通する処理には同一の符号を付し、詳細な説明を省略する。また、第１の実施形態の変形例では、図１を用いて説明した、第１の実施形態によるモータ制御装置１の構成をそのまま適用可能であると共に、図２を用いて説明した、モータ制御装置１の機能を示す機能ブロック図もそのまま適用できる。
【００７３】
図７に例示されるように、第１の実施形態の変形例では、制御部１０は、ステップＳ１００と、ステップＳ１０３〜ステップＳ１０６とによる第１処理を連続して実行し、その後、ステップＳ１０１で第２処理のうち１を選択して実行する。そして、第２処理が終了した後、カウント変数ｓｃｎｔを１だけインクリメントしている。
【００７４】
このように、第１処理が全て終了した後に第２処理を実行することで、第１処理における現在速度検出部１０３による現在速度ｖｄｅｔの検出処理や、速度比較部１０４による目標速度ｖｔｇｔ1と現在速度ｖｄｅｔとの比較処理の開始タイミングがずれることがない。そのため、制御部１０は、モータ１２の駆動制御をより正確に実行することが可能となる。
【００７５】
（第２の実施形態）
次に、第２の実施形態について説明する。図８は、第２の実施形態によるモータ制御装置１’の一例の構成を示す。なお、図８において、上述した図１と共通する部分には同一の符号を付して詳細な説明を省略する。
【００７６】
図８に例示するモータ制御装置１’において、上述した図１のモータ制御装置１に対して、外部からの目標パルス信号ｔｇｔｐをカウントしてカウント値ｘｃｎｔを出力するカウンタ２６が追加されている。目標パルス信号ｔｇｔｐは、例えばモータ制御装置１’の上位装置から供給される。
【００７７】
図９は、第２の実施形態によるモータ制御装置１’の機能を説明するための機能ブロック図である。図９において、目標位置生成部１００’は、図２における目標位置生成部１００に対応する。目標位置生成部１００’は、カウンタ２６から出力されるカウント値ｘｃｎｔに従い目標位置ｘｔｇｔを生成する点が、図２における目標位置生成部１００と異なっている。この場合、目標位置生成部１００’は、サンプリング周波数ｆｓ／４でカウント値ｘｃｎｔをサンプリングする。すなわち、目標位置生成部１００’は、割り込み処理４回のうち１回の処理でよい。
【００７８】
第２の実施形態によれば、外部から目標パルス信号ｔｇｔｐを入力して目標位置ｘｔｇｔを生成する場合でも、この目標位置ｘｔｇｔに追従してモータ１２の回転位置を制御することが可能となる。
【００７９】
図１０は、第２の実施形態による割り込み処理の例を示すフローチャートである。なお、図１０において、上述の図４のフローチャートにおける処理と共通する処理には同一の符号を付し、詳細な説明を省略する。
【００８０】
図１０に示されるように、第２の実施形態による割り込み処理は、図４で示した第１の実施形態による処理におけるステップＳ１０２Ａの処理がステップＳ１０２Ａ’とされている。ステップＳ１０２Ａ’は、目標位置生成部１００’による、外部からの目標パルス信号ｔｇｔｐをカウントしたカウント値ｘｃｎｔに基づき目標位置ｘｔｇｔを生成する処理である。図１０のフローチャートにおけるその他の処理は、図４のフローチャートにおける対応する処理と共通である。
【００８１】
このように、第２の実施形態では、外部から入力された目標パルス信号ｔｇｔｐに追従してモータ１２の回転位置を制御できる。
【００８２】
（第３の実施形態）
次に、第３の実施形態について説明する。図１１は、第３の実施形態によるモータ制御装置１’の機能を説明するための機能ブロック図である。なお、第３の実施形態では、図８を用いて説明した、第２の実施形態によるモータ制御装置１’の構成をそのまま適用可能である。また、図１１において、上述した図９と共通する部分については同一の符号を付し、詳細な説明を省略する。
【００８３】
図１１に例示されるように、第３の実施形態では、上述した第２の実施形態による構成に対し、目標速度生成部１０７が追加されている。目標速度生成部１０７は、外部からの目標パルス信号ｔｇｔｐをカウントしたカウント値ｘｃｎｔに基づき目標位置生成部１００’で生成された目標位置ｘｔｇｔを微分して、目標速度ｖｔｇｔ2を生成する。より具体的には、目標速度生成部１０７は、今回の割り込み処理における目標位置ｘｔｇｔと、前回の割り込み処理における目標位置ｚ＿ｘｔｇｔとの差分に応じた目標速度ｖｔｇｔ2を生成する。
【００８４】
目標速度ｖｔｇｔ2の単位は、現在速度検出部１０３が出力する現在速度ｖｄｅｔと同じ単位とすることが好ましい。また、現在速度検出部１０３は、現在速度ｖｄｅｔを、割り込み処理毎すなわちサンプリング周波数ｆｓの周期での位置差分から生成する。一方、目標速度生成部１０７は、割り込み処理４回について１回、すなわちサンプリング周波数ｆｓ／４で動作し、目標速度ｖｔｇｔ2を生成する。そのため、目標速度生成部１０７は、式（３）で示される、現在速度検出部１０３が現在速度ｖｄｅｔを生成する際に用いる係数Ｇｖを１／４とした係数を用いて目標速度ｖｔｇｔ2を生成すると、容易に単位が一致するので、好ましい。
【００８５】
例えば、目標速度生成部１０７は、割り込み周期の４回に１回の割合で、下記の式（７）の演算を行う。
1:  vtgt2＝(xtgt−z＿xtgt)＊Gv/4;
2:  z＿xtgt＝xtgt    …（７）
【００８６】
式（７）において、１行目は、外部からのカウント値ｘｃｎｔに基づき目標位置生成部１００’で生成された、前回の目標位置ｚ＿ｘｔｇｔと今回の目標位置ｘｔｇｔとの差分を求め、求めた差分に係数Ｇｖ／４を乗じている。２行目は、前回の目標位置ｚ＿ｘｔｇｔを今回の目標位置ｘｔｇｔで更新している。
【００８７】
目標速度生成部１０７は、生成した目標速度ｖｔｇｔ2を、速度比較部１０４’に対して出力する。速度比較部１０４’は、下記の式（８）に示されるように、目標速度ｖｔｇｔ2と、位置比較部１０２からの目標速度ｖｔｇｔ1とを加算して目標速度ｖｔｇｔ12とし、この目標速度ｖｔｇｔ12と現在速度検出部１０３からの現在速度ｖｄｅｔと比較して、速度誤差ｖｅｒｒを求める。
verr＝vtgt1＋vtgt2−vdet;    …（８）
【００８８】
速度比較部１０４’において、目標速度ｖｔｇｔ1と目標速度ｖｔｇｔ2とを加算することにより、モータ１２が一定速度で回転している場合は、目標速度ｖｔｇｔ2と現在速度ｖｄｅｔとがバランス状態を保ち、他に外乱が無ければ、目標速度ｖｔｇｔ1は、ゼロ付近で推移する。したがって、目標速度ｖｔｇｔ1を生成する際の位置ずれ（＝xtgt−xdet）もゼロ付近で推移し、目標位置ｘｔｇｔに高精度で追従した制御が可能になり、精密な位置制御ができる。
【００８９】
図１２は、第３の実施形態による割り込み処理の例を示すフローチャートである。なお、図１２において、上述の図１０のフローチャートにおける処理と共通する処理には同一の符号を付し、詳細な説明を省略する。
【００９０】
図１２に示されるように、第３の実施形態による割り込み処理は、ステップＳ１０１でカウント変数ｓｃｎｔの剰余に従い分岐される処理の一つとして、ステップＳ１０２Ｅの、外部からのｘｃｎｔに基づく目標速度生成処理が挿入されている。制御部１０は、このステップＳ１０２Ｅにおいて、目標速度生成部１０７による目標速度ｖｔｇｔ2の生成処理を行う。
【００９１】
図１２のフローチャートにおいて、ステップＳ１０２Ｅの処理がカウント変数ｓｃｎｔの剰余が１の場合の処理として挿入されているため、図１０のフローチャートにおいてそれぞれ剰余が１および２の処理であるステップＳ１０２ＢおよびステップＳ１０２Ｃの処理が、剰余２および３の処理に変更されている。また、図１２のフローチャートでは、図１０で示したステップＳ１０２Ｄの「その他の処理」が削除されている。
【００９２】
なお、図１２のフローチャートにおけるステップＳ１０４の処理は、速度比較部１０４’による、目標速度ｖｔｇｔ1およびｖｔｇｔ2を加算した値と、現在速度ｖｄｅｔとを比較する処理である。
【００９３】
図１３は、第３の実施形態における、割り込み処理の実行スケジュールの例を示す。図１３において、各行に示される処理は、上から、
(a)ステップＳ１０２Ａ’による目標位置ｘｔｇｔの生成処理、
(b)ステップＳ１０２Ｅによる目標速度ｖｔｇｔ2の生成処理、
(c)ステップＳ１００による現在位置ｘｄｅｔの検出処理、
(d)ステップＳ１０３による現在速度ｖｄｅｔの検出処理、
(e)ステップＳ１０２Ｂによる目標位置ｘｔｇｔと現在位置ｘｄｅｔとの比較処理、
(f)ステップＳ１０４による目標速度ｖｔｇｔ1およびｖｔｇｔ2の加算結果と現在速度ｖｄｅｔとの比較処理、
(g)ステップＳ１０５によるローパスフィルタ処理、
(h)ステップＳ１０２Ｃによる演算処理、
となっている。
【００９４】
また、図１３において、各列は、カウント変数ｓｃｎｔの値を示し、各列の下部に、カウント変数ｓｃｎｔの４の剰余が示されている。さらに、図１３において、記号「＊」は、各カウント変数ｓｃｎｔにおいて実行される各行の処理を示している。
【００９５】
図１３に示されるように、各処理の処理順序は、図１２のフローチャートによる処理が毎回割り込みで実行される場合と同一になることが分かる。図示および詳細な説明は省略するが、これは、他の実施形態および実施形態の変形例でも同様である。
【００９６】
（第４の実施形態）
次に、第４の実施形態について説明する。図１４は、第４の実施形態によるモータ制御装置１’の機能を説明するための機能ブロック図である。なお、第４の実施形態では、図８を用いて説明した、第２の実施形態によるモータ制御装置１’の構成をそのまま適用可能である。また、図１４において、上述した図１１と共通する部分については同一の符号を付し、詳細な説明を省略する。
【００９７】
上述した第３の実施形態では、速度比較部１０４’の後段にＬＰＦ１０５を配していた。これに対して、第４の実施形態では、速度比較部１０４”の前段にＬＰＦ１０５を配するようにしている。
【００９８】
より具体的には、第４の実施形態のモータ制御装置１’は、図１４に例示されるように、ＬＰＦ１０５が現在速度検出部１０３と速度比較部１０４”との間に挿入される。速度比較部１０４”は、現在速度検出部１０３から出力された現在速度ｖｄｅｔに対してＬＰＦ１０５でローパスフィルタ処理された信号ｖｄｅｔ＿ｌｐｆと、目標速度ｖｔｇｔ1およびｖｔｇｔ2を加算した目標速度ｖｔｇｔ12とを比較して、信号ｖｅ＿ｌｐｆを出力する。すなわち、速度比較部１０４”は、下記の式（９）に従い、速度誤差ｖｅｒｒがローパスフィルタ処理された信号ｖｅ＿ｌｐｆを求める。
ve＿lpf＝vtgt1＋vtgt2−vdet＿lpf;    …（９）
【００９９】
図１５は、第４の実施形態による割り込み処理の例を示すフローチャートである。なお、図１５において、上述の図１２のフローチャートにおける処理と共通する処理には同一の符号を付し、詳細な説明を省略する。
【０１００】
図１５に例示されるように、第４の実施形態による割り込み処理では、図１４の機能ブロック図によるＬＰＦ１０５の配置に対応し、図１２のフローチャートに対して、速度比較のステップＳ１０４と、ローパスフィルタ処理のステップＳ１０５の順番が入れ替えられている。すなわち、図１５の例では、ステップＳ１０３で現在速度検出部１０３により現在速度ｖｄｅｔが検出され、この現在速度ｖｄｅｔに対して、次のステップＳ１０５でＬＰＦ１０５によりローパスフィルタ処理が施される。そして、次のステップＳ１０４で、速度比較部１０４”により、現在速度ｖｄｅｔに対してローパスフィルタ処理が施された信号ｖｄｅｔ＿ｌｐｆを用いて速度比較処理がなされる。
【０１０１】
第４の実施形態によれば、ＬＰＦ１０５により、目標速度ｖｔｇｔ1およびｖｔｇｔ2、ならびに、現在速度ｖｄｅｔのうち、現在速度ｖｄｅｔにだけ速度比較部１０４”よりも手前でローパスフィルタ処理を施している。これにより、速度比較部１０４”による速度比較処理前に、平滑された現在速度ｖｄｅｔ＿ｌｐｆを得ることができる。
【０１０２】
平滑前の現在速度ｖｄｅｔは、差分演算により係数Ｇｖおよび０の何れの値を取るパルス上にしか得られず、現在速度ｖｄｅｔに応じて例えばゲインなどの制御パラメータを変えるなど、別の用途に利用しにくい面がある。これに対して、第４の実施形態のように、平滑された現在速度ｖｄｅｔ＿ｌｐｆであれば、別の用途に容易に使うことができ、より多様な制御が可能になる。
【０１０３】
また、現在速度検出部１０３から出力された現在速度ｖｄｅｔに対してＬＰＦ１０５によりローパスフィルタ処理を施しているため、現在速度ｖｄｅｔのノイズが抑制され、より高精度な制御が可能となる。また、ステップＳ１０５のＬＰＦ１０５によるローパスフィルタ処理を、割り込み処理毎に実行される処理としたため、モータ１２を高速回転させる場合であっても、高精度な速度制御を行うことが可能である。
【０１０４】
（各実施形態および実施形態の変形例に適用可能な割り込み処理）
次に、上述した各実施形態および実施形態の変形例に適用可能な、制御部１０における割り込み処理について説明する。図１６は、各実施形態および実施形態の変形例に適用可能な、制御部１０における割り込み処理を説明するためのフローチャートである。この図１６に例示されるフローチャートは、上述したモータ制御装置１と、モータ制御装置１’との何れにも適用可能なものである。以下では、図１６のフローチャートによる各処理がモータ制御装置１において実行されるものとして説明する。
【０１０５】
図１６に例示されるように、制御部１０における処理は、全体的には、ステップＳ２００の、メイン処理を実行するメインループと、ステップＳ２０１の、メインループに対して割り込んで処理を実行する割り込み処理とを有する。ステップＳ２０１の割り込み処理は、例えば割り込み部２２から出力される割り込み入力すなわち割り込み要求ｉｎｔをトリガとして実行される。ステップＳ２００のメイン処理において、制御部１０は、ステップＳ２０１の割り込み処理が実行されていない場合に、ステップＳ２１０〜ステップＳ２１３の処理を繰り返し実行する。
【０１０６】
ステップＳ２１０で、制御部１０は、コマンド処理を実行する。制御部１０は、ステップＳ２１０において、例えば適切な通信インターフェイス（図示しない）により、上位装置から送信された、モータ１２のスタート指令および停止指令、ならびに、目標位置指令といった各種指令を受信する。そして、制御部１０は、受信した指令に従い、モータ制御装置１の一部または全部を制御して、モータ１２を動作または停止させる。
【０１０７】
次のステップＳ２１１で、制御部１０は、モータ１２の動作の異常を検出する異常検出処理を実行する。制御部１０は、割り込み処理内においてモータ制御処理や演算に応じて更新される各種変数の値を定期的にモニタし、モニタした値が閾値や所定範囲を超えた場合に、異常状態であると判定する。制御部１０がモニタする値の例としては、目標速度ｖｔｇｔ1と現在速度ｖｄｅｔとの差である速度誤差ｖｅｒｒ、目標位置ｘｔｇｔと現在位置ｘｄｅｔとの差分、制御出力値であるモータ駆動指令信号ｃｔｌの値が挙げられる。
【０１０８】
制御部１０は、現在のモータ１２の状態が異常状態であると判定した場合、判定された異常状態に対応する第３処理を実行する。例えば、制御部１０は、第３処理として、ドライバ１１に対してモータ１２の回転をオフにする制御を行う。また例えば、制御部１０は、第３処理として、上位装置に対して異常状態を通知する処理を行う。
【０１０９】
次のステップＳ２１２は、他の処理用にリザーブしており、図１６のフローチャートにおいては、何も実行されない。
【０１１０】
次のステップＳ２１３で、制御部１０は、カウント変数ｓｃｎｔに基づき割り込み回数の判定処理を行う。制御部１０は、ステップＳ２０１の割り込み処理の実行毎にインクリメントされるカウント変数ｓｃｎｔの値をモニタし、カウント変数ｓｃｎｔの値が例えば８だけ増加したか否かを判定する。図１６の例では、制御部１０は、カウント変数ｓｃｎｔの８に対する剰余を求め、剰余が０になった場合に、カウント変数ｓｃｎｔの値が８だけ増加したと判定している。制御部１０は、カウント変数ｓｃｎｔの値が８だけ増加したと判定した場合に、処理をステップＳ２１０に戻す。
【０１１１】
したがって、制御部１０は、割り込み処理の予め定められた生起回数毎に上述した第３処理を実行させるループ処理部として機能する。
【０１１２】
一方、ステップＳ２０１は、割り込み処理であり、予め定めれられた割り込み周期毎に、ステップＳ２００のメインループの処理に対して優先して実行される。ステップＳ２０１の割り込み処理は、具体的には、上述した図４、図７、図１０、図１２および図１５の各フローチャートによる一連の処理に対応する。各フローチャートにおいて、最後の処理であるステップＳ１０６において、カウント変数ｓｃｎｔが１だけインクリメントされている。
【０１１３】
図１６において、ステップＳ２１３の判定により、ステップＳ２００のメインループは、８回の割り込み処理で一巡するように動作し、メインループ内の各処理がステップＳ２０１の割り込み処理の８回に付き１回、実行されることになる。したがって、メイン処理内でも正確な時間管理が可能である。
【０１１４】
例えば、ステップＳ２１１の異常検出処理は、異常状態が所定時間持続したか否かなど、正確な時間測定を行う必要がある。図１６のフローチャートの処理によれば、割り込み周期を基準に時間計測が可能なので、タイマなどのハードウェアを設ける必要が無く、低コストで実現できる。
【０１１５】
また、割り込み周期内で確実に終了しなければならない割り込み処理と違い、長い時間を要する処理をメインループで実行させることができるので、多機能な制御を低コストで実現可能である。例えば、ステップＳ２１１の異常状態の検出処理に十分な処理時間を与えることができ、確実に異常検出を行なって信頼性の高い制御が可能となる。
【０１１６】
上述の各実施形態および実施形態の変形例は、本発明の好適な実施の例ではあるがこれに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変形実施可能である。
【符号の説明】
【０１１７】
１，１’  モータ制御装置
１０  制御部
１１  ドライバ
１２  モータ
１３  エンコーダ
２０  ＣＰＵ
２１  メモリ
２２  割り込み部
２３，２６  カウンタ
２４  Ｄ／Ａ部
１００，１００’  目標位置生成部
１０１  現在位置検出部
１０２  位置比較部
１０３  現在速度検出部
１０４，１０４’，１０４”  速度比較部
１０５  ＬＰＦ
１０６  速度制御演算部
１０７  目標速度生成部
【先行技術文献】
【特許文献】
【０１１８】
【特許文献１】特開２００６−３３８３６７号公報
【特許文献２】特開２０１１−４４００６号公報
【図１】
2014176101.tif 000003
【図２】
2014176101.tif 000004
【図３】
2014176101.tif 000005
【図４】
2014176101.tif 000006
【図５】
2014176101.tif 000007
【図６】
2014176101.tif 000008
【図７】
2014176101.tif 000009
【図８】
2014176101.tif 000010
【図９】
2014176101.tif 000011
【図１０】
2014176101.tif 000012
【図１１】
2014176101.tif 000013
【図１２】
2014176101.tif 000014
【図１３】
2014176101.tif 000015
【図１４】
2014176101.tif 000016
【図１５】
2014176101.tif 000017
【図１６】
2014176101.tif 000018
【手続補正書】
【提出日】平成26年3月27日(2014.3.27)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
駆動指令に従いモータの駆動制御を行う駆動制御部と、
所定の周期毎に、エンコード信号の計数値から前記モータの回転位置を検出する第１処理を実行する第１処理部と、
複数回の前記所定の周期で前記モータの前記駆動指令を算出する第２処理を実行する第２処理部と
を備え、
前記第２処理の実行に先立って、前記第１処理のうち少なくとも１を実行する
ことを特徴とするモータ制御装置。
【請求項２】
前記駆動制御部は、
前記エンコード信号に応じた前記駆動指令に従い、前記モータの回転位置および回転速度のうち少なくとも一方を制御し、
前記第１処理部が実行する前記第１処理は、前記エンコード信号に基づき前記回転位置を検出する回転位置検出処理を少なくとも含み、
前記第２処理部が実行する前記第２処理は、前記第１処理部が検出した前記回転位置に応じて前記駆動指令を生成する処理を少なくとも含む
ことを特徴とする請求項１に記載のモータ制御装置。
【請求項３】
目標位置を生成する目標位置生成部をさらに備え、
前記第１処理部および前記第２処理部のうち少なくとも一方は、さらに、
前記目標位置と前記回転位置とを比較して比較結果に応じて第１目標速度を生成する第１目標速度生成部を含み、
前記第１処理部は、さらに、
前記所定の周期毎の前記回転位置の差分を取得し、取得した差分に応じて前記回転速度を算出し、算出した前記回転速度と前記第１目標速度とを比較して速度誤差を取得する速度比較部を含み、
前記第２処理部は、さらに、
前記速度誤差に応じて前記駆動指令を生成する速度制御部を含む
ことを特徴とする請求項２に記載のモータ制御装置。
【請求項４】
前記目標位置生成部は、
外部からの入力信号に応じて前記目標位置を生成する
ことを特徴とする請求項３に記載のモータ制御装置。
【請求項５】
前記第１処理部および前記第２処理部のうち少なくとも一方は、さらに、
前記所定の周期の所定の回毎の前記目標位置の差分を取得し、取得した差分に応じて第２目標速度を生成する第２目標速度生成部を備え、
前記速度比較部は、
前記第１目標速度と前記第２目標速度とを加算した値と前記回転速度とを比較して前記速度誤差を取得する
ことを特徴とする請求項３または請求項４に記載のモータ制御装置。
【請求項６】
前記第１処理部は、さらに、
前記回転速度の低域成分を抽出するローパスフィルタを備え、
前記速度比較部は、
前記ローパスフィルタで抽出した前記低域成分と、前記第１目標速度と前記第２目標速度とを加算した値とを比較して前記速度誤差を取得する
ことを特徴とする請求項５に記載のモータ制御装置。
【請求項７】
前記第１処理部は、さらに、
前記速度比較部で取得された前記速度誤差の低域成分を抽出するローパスフィルタを備え、
前記速度制御部は、
前記ローパスフィルタで抽出した前記低域成分に応じて前記駆動指令を生成する
ことを特徴とする請求項５に記載のモータ制御装置。
【請求項８】
前記第１処理および前記第２処理のうち少なくとも一方が実行されていない場合に第３処理を実行する第３処理部と、
前記所定の周期の予め定められた回数毎に前記第３処理を実行させるループ処理部と
をさらに備え、
前記第３処理部は、
前記第２処理中に生成された前記駆動指令、および、前記第１処理中に取得された前記回転位置のうち少なくとも一方に応じて異常状態を判定する
ことを特徴とする請求項２乃至請求項７の何れか１項に記載のモータ制御装置。
【請求項９】
駆動指令に従いモータの駆動制御を行う駆動制御ステップと、
所定の周期毎に、エンコード信号の計数値から前記モータの回転位置を検出する第１処理を実行する第１処理ステップと、
複数回の前記所定の周期で前記モータの前記駆動指令を算出する第２処理を実行する第２処理ステップと
を備え、
前記第２処理の実行に先立って、前記第１処理のうち少なくとも１を実行する
ことを特徴とするモータ制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
上述した課題を解決し、目的を達成するために、本発明は、駆動指令に従いモータの駆動制御を行う駆動制御部と、所定の周期毎に、エンコード信号の計数値からモータの回転位置を検出する第１処理を実行する第１処理部と、複数回の所定の周期でモータの駆動指令を算出する第２処理を実行する第２処理部とを備え、第２処理の実行に先立って、第１処理のうち少なくとも１を実行することを特徴とする。