(57)【要約】【課題】処理遅延や処理しきれなくなって破たんすることがなく、高精度な制御を可能とする。【解決手段】モータの駆動位置に応じて変化するエンコーダ信号を入力し、当該エンコーダ信号に応じて前記モータの駆動指令を出力し、前記モータの駆動位置と駆動速度のすくなくともどちらかを制御するモータ制御装置であって、所定の割り込み周期ごとに生起されて割り込み処理を実行する割り込み実行手段と、前記割り込み処理の生起回ごとに異なる処理を選択的に実行する低速処理手段と、前記割り込み処理の生起回ごとに同じ処理を実行する高速処理手段とを備え、前記高速処理手段はすくなくとも前記エンコーダ信号の計数値から前記モータの駆動位置を検出する処理を行い、前記低速処理手段はすくなくとも前記高速処理手段が検出した前記モータの駆動位置に応じて、前記モータの駆動指令を算出する処理を行なう。【選択図】図４
2013220006.tif 000002
【特許請求の範囲】
【請求項１】
モータの駆動位置に応じて変化するエンコーダ信号を入力し、当該エンコーダ信号に応じて前記モータの駆動指令を出力し、前記モータの駆動位置と駆動速度のすくなくともどちらかを制御するモータ制御装置であって、
所定の割り込み周期ごとに生起されて割り込み処理を実行する割り込み実行手段と、
前記割り込み処理の生起回ごとに異なる処理を選択的に実行する低速処理手段と、
前記割り込み処理の生起回ごとに同じ処理を実行する高速処理手段と
を備え、
前記高速処理手段はすくなくとも前記エンコーダ信号の計数値から前記モータの駆動位置を検出する処理を行い、
前記低速処理手段はすくなくとも前記高速処理手段が検出した前記モータの駆動位置に応じて、前記モータの駆動指令を算出する処理を行なう
ことを特徴とするモータ制御装置。
【請求項２】
請求項１に記載のモータ制御装置において、
所定の目標位置を生成する目標位置生成手段を備え、
前記高速処理手段あるいは前記低速処理手段のいずれかが、前記目標位置と前記モータの駆動位置の比較結果に応じた第１の目標速度を算出する位置比較処理を行い、
前記高速処理手段はさらに、
前記モータの駆動位置を前記割り込み周期ごとに差分し、算出された値に応じて前記モータの駆動速度を算出する速度算出処理と、
前記第１の目標速度と前記モータの駆動速度を比較して速度誤差を算出する速度比較処理と
を行い、
前記低速処理手段は、前記速度誤差に応じて前記駆動指令を算出する
ことを特徴とするモータ制御装置。
【請求項３】
請求項１に記載のモータ制御装置において、
外部から入力されるパルスを計数して目標位置を算出する目標パルス計数手段を備え、
前記高速処理手段あるいは前記低速処理手段のいずれかが、前記目標位置と前記モータの駆動位置の比較結果に応じた第１の目標速度を算出する位置比較処理を行い、
前記高速処理手段はさらに、
前記モータの駆動位置を前記割り込み周期ごとに差分し、算出された値に応じて前記モータの駆動速度を算出する速度算出処理と、
前記第１の目標速度と前記モータの駆動速度を比較して速度誤差を算出する速度比較処理と
を行い、
前記低速処理手段は、前記速度誤差に応じて前記駆動指令を算出する
ことを特徴とするモータ制御装置。
【請求項４】
請求項２または３のいずれか一項に記載のモータ制御装置において、
前記高速処理手段あるいは前記低速処理手段のいずれかが、前記目標位置を前記割り込み処理の所定の生起回ごとに差分し、算出された値に応じた第２の目標速度を算出する処理を行い、
前記高速処理手段は、前記第１、第２の目標速度を加算した値と前記モータの駆動速度を比較して前記速度誤差とする
ことを特徴とするモータ制御装置。
【請求項５】
請求項４に記載のモータ制御装置において、
前記高速処理手段は、
前記モータの駆動速度あるいは前記速度誤差の低域成分を抽出する低域フィルタ処理を行ない、フィルタ結果を後段の駆動速度あるいは速度誤差として用いる
ことを特徴とするモータ制御装置。
【請求項６】
請求項１乃至５のいずれか一項に記載のモータ制御装置において、
前記割り込み処理が実行されていないときにメイン処理を実行するメイン処理手段と、
前記割り込み処理の生起回数が所定回ごとに、前記メイン処理を一巡させるメインループ処理手段と
備え、
前記メイン処理手段はすくなくとも、前記割り込み処理中に算出された駆動指令あるいは前記モータの駆動位置に応じて、異常状態を判定するエラー判定を行なう
ことを特徴とするモータ制御装置。
【請求項７】
モータの駆動位置に応じて変化するエンコーダ信号を入力し、当該エンコーダ信号に応じて前記モータの駆動指令を出力し、前記モータの駆動位置と駆動速度のすくなくともどちらかを制御するモータ制御装置が実行する方法であって、
所定の割り込み周期ごとに生起されて割り込み処理を実行する割り込み実行工程と、
前記割り込み処理の生起回ごとに異なる処理を選択的に実行する低速処理工程と、
前記割り込み処理の生起回ごとに同じ処理を実行する高速処理工程と
を備え、
前記高速処理工程はすくなくとも前記エンコーダ信号の計数値から前記モータの駆動位置を検出する処理を行い、
前記低速処理工程はすくなくとも前記高速処理工程が検出した前記モータの駆動位置に応じて、前記モータの駆動指令を算出する処理を行なう
ことを特徴とするモータ制御方法。
【請求項８】
モータの駆動位置に応じて変化するエンコーダ信号を入力し、当該エンコーダ信号に応じて前記モータの駆動指令を出力し、前記モータの駆動位置と駆動速度のすくなくともどちらかを制御するモータ制御装置を構成するコンピュータを、
所定の割り込み周期ごとに生起されて割り込み処理を実行する割り込み実行手段、
前記割り込み処理の生起回ごとに異なる処理を選択的に実行する低速処理手段、
前記割り込み処理の生起回ごとに同じ処理を実行する高速処理手段
として機能させ、
前記高速処理手段はすくなくとも前記エンコーダ信号の計数値から前記モータの駆動位置を検出する処理を行い、
前記低速処理手段はすくなくとも前記高速処理手段が検出した前記モータの駆動位置に応じて、前記モータの駆動指令を算出する処理を行なう
ことを特徴とするモータ制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モータの速度や位置を制御する技術に関する。
【背景技術】
【０００２】
プリンタの用紙搬送制御やディスク記憶装置のヘッド位置制御などに、モータが広く使われている。このようなモータの移動対象を所望の位置に移動して位置決め制御したり、モータを所定の速度で動かしたりするために、モータ軸や移動対象に位置センサや速度センサをつけ、その信号を用いて目標位置や目標速度と比較してモータ駆動量をフィードバック制御する技術が一般的に用いられている。
【０００３】
このようなフィードバック制御を実行するのに、ＣＰＵ（Central Processing Unit）やメモリや入出力ポート等を備えたマイクロコンピュータで定期的にセンサ信号をサンプリングし、制御処理演算を行って駆動量を出力するデジタル制御が広く用いられる。その実行処理は、マイクロコンピュータに一般的に備わっている割り込み機構を用い、所定のサンプリング周期でＣＰＵに割り込みを要求し、割り込み処理内で制御処理演算を行なうのが普通である。
【０００４】
特許文献１には、タイマ割り込みを用いてモータの駆動を制御する電子機器において、割り込み処理が遅延された場合における制御の精度低下を抑制する技術が開示されている。すなわち、特許文献１では、所定間隔で発生するタイマ割り込み信号に応じて実行されるモータの駆動処理が、他の割り込み信号に対応する処理の実行によって遅延された場合においても、割り込み信号が発生されてから駆動処理が実行されるまでの遅延時間を算出し、補正位置情報を算出して位置情報が更新され、フィードバック制御が行われる。
【０００５】
特許文献２には、高性能のカウント器やそれに代わるＡＳＩＣ（Application Specific Integrated Circuit）を用いることなく、現在位置を把握する技術が開示されている。すなわち、特許文献２では、エンコーダから出力される２相のパルス信号をそれぞれ検出して計数処理を行う２相カウンタと、そのうちのＡ相パルス信号だけを検出して計数処理を行う１相カウンタとを設け、目標位置と、それらカウンタによって把握した現在位置との位置誤差を算出し、位置誤差に応じた目標速度を増幅手段から出力する一方で、位置誤差について比較的小さい値であるのか比較的大きい値であるのかを誤差判定手段によって判定し、比較的小さい値である場合には、２相カウンタによって現在位置を求める一方で、比較的大きい値である場合には、１相カウンタによって現在位置を求めるようにしている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１は、その課題に挙げているように、他の割り込み処理が優先されると制御演算が遅延してしまい、制御精度を悪化させる問題に対処するものである。しかし、特許文献１のように遅延時間を計測して制御処理を補正しても、なにがしかの精度悪化は避けられない。さらに、サンプリングから駆動量出力までの制御演算処理が遅延することにより制御量の位相遅れが生じることになるが、これはフィードバック制御理論によれば位相余裕を小さくし制御の安定性を損なう場合があり、最悪の場合、発振など不安定な状態に陥る問題がある。
【０００７】
また、特許文献２にも、同じように、マイクロコンピュータによる位置や速度のフィードバック制御が開示されている。この場合は他の割り込み処理を受け付けておらず、それによる制御処理の遅延はない。
【０００８】
しかし、どちらの従来技術についても、割り込み処理内で実行すべき処理が多くなると、そもそもの所定の制御割り込み周期内で処理が終わらなくなる可能性がある。こうなると正常な動作ができず、制御は破たんした状態になる。
【０００９】
制御性能を上げるためや、カウンタ等の高コストなハードウェアを用いずに割り込み処理のソフトウェアでカウント処理自体を行なうために、制御割り込み周期を短くしていくと、処理が終わらない可能性はさらに高まってしまい、問題になる。
【００１０】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、モータの位置や速度を定期的な割り込み処理で制御する装置において、安価なＣＰＵやマイクロコンピュータを用いて多くの処理を実行しなければならない場合でも、処理遅延や処理しきれなくなって破たんすることがなく、高精度な制御を可能とすることにある。
【課題を解決するための手段】
【００１１】
上記の課題を解決するため、本発明にあっては、モータの駆動位置に応じて変化するエンコーダ信号を入力し、当該エンコーダ信号に応じて前記モータの駆動指令を出力し、前記モータの駆動位置と駆動速度のすくなくともどちらかを制御するモータ制御装置であって、所定の割り込み周期ごとに生起されて割り込み処理を実行する割り込み実行手段と、前記割り込み処理の生起回ごとに異なる処理を選択的に実行する低速処理手段と、前記割り込み処理の生起回ごとに同じ処理を実行する高速処理手段とを備え、前記高速処理手段はすくなくとも前記エンコーダ信号の計数値から前記モータの駆動位置を検出する処理を行い、前記低速処理手段はすくなくとも前記高速処理手段が検出した前記モータの駆動位置に応じて、前記モータの駆動指令を算出する処理を行なうようにしている。
【発明の効果】
【００１２】
本発明にあっては、モータの位置や速度を定期的な割り込み処理で制御する装置において、安価なＣＰＵやマイクロコンピュータを用いて多くの処理を実行しなければならない場合でも、処理遅延や処理しきれなくなって破たんすることがなく、高精度な制御が可能となる。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態におけるモータ制御装置のハードウェア構成例を示す図である。
【図２】第１の実施形態におけるマイクロコンピュータが実行するシグナルフローを示す図である。
【図３】低域フィルタ処理の一例となる１次ローパスフィルタのシグナルフローを示す図である。
【図４】第１の実施形態における割り込み処理実行の例を示すフローチャートである。
【図５】第２の実施形態におけるモータ制御装置のハードウェア構成例を示す図である。
【図６】第２の実施形態におけるマイクロコンピュータが実行するシグナルフローを示す図である。
【図７】第２の実施形態における割り込み処理実行の例を示すフローチャートである。
【図８】第３の実施形態におけるマイクロコンピュータが実行するシグナルフローを示す図である。
【図９】第３の実施形態における割り込み処理実行の例を示すフローチャートである。
【図１０】第３の実施形態における割り込み処理の実行スケジュールを示す図である。
【図１１】第４の実施形態におけるマイクロコンピュータが実行するシグナルフローを示す図である。
【図１２】第４の実施形態における割り込み処理実行の例を示すフローチャートである。
【図１３】第５の実施形態におけるマイクロコンピュータが実行するシグナルフローを示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の好適な実施形態につき説明する。
【００１５】
＜第１の実施形態＞
図１は第１の実施形態におけるモータ制御装置１００のハードウェア構成例を示す図である。
【００１６】
図１において、マイクロコンピュータ（μCOM）１０１は一般的なマイクロコンピュータであり、内部にＣＰＵ、メモリおよび入出力装置を備え、所定の処理を実行できるようになっている。マイクロコンピュータ１０１からモータ側のモータドライバ（Driver）１０８へ駆動指令信号drvが出力される。
【００１７】
モータドライバ１０８は、マイクロコンピュータ１０１から出力される駆動指令信号drvに応じてモータ（Motor）１０９の駆動電圧vmを出力する。駆動指令信号drvは電圧で指示してもよいし、電圧に比例したパルス幅変調（ＰＷＭ：Pulse Width Modulation）されたパルス信号で指示してもよく、設計上の選択的事項である。同様に駆動電圧vmも電圧出力でもよいし、ＰＷＭパルスでもよい。
【００１８】
モータ１０９は、駆動電圧vmに応じて駆動力を発生させ、回転モータであれば回転運動、リニアモータであれば直線運動を行う。
【００１９】
エンコーダ（ENC）１１０は、モータ１０９の回転角や直線運動位置に応じて、値が変化するエンコーダ信号encpを出力する。具体的には、例えば、回転モータの回転軸に円盤状部材を取り付け、この円盤状部材の円周上に等間隔のスリットを取り付け、静止部材側に取り付けた光源からのスリット透過光を光電変換器で検出してエンコーダ信号とする。適切に波形整形すると、モータ１０９が所定角度あるいは所定位置だけ移動するごとにパルス信号が得られる。
【００２０】
エンコーダ１１０はモータ軸上には限定されず、モータ１０９が駆動する対象物の動作軸上にあってもよい。直線運動軸であれば直線的にスリットが配置されていてもよい。またスリットと光源による光学的手段でなく、磁気的な手段やその他の手段によってもよい。
【００２１】
以下にマイクロコンピュータ１０１の内部構成を説明する。
【００２２】
割り込み発生手段（IRQ）１０２は、ＣＰＵ１０３に対して所定の周期で定期的に割り込み要求を発生する。
【００２３】
ＣＰＵ１０３は、メモリ（mem）１０４に格納されたプログラム命令を順次デコードしてデータ移動や演算や分岐あるいは割り込み分岐といった処理を実行する。
【００２４】
メモリ１０４は、プログラムや各種データを格納する。
【００２５】
計数手段（cnt1）１０６は、エンコーダ１１０からのエンコーダ信号encpをカウントしてカウント量ecntを出力する。
【００２６】
デジタル・アナログ変換器（dac）１０７は、ＣＰＵ１０３からの駆動指令信号（デジタル量）ctlを駆動指令信号（アナログ量）drvに変換する。駆動指令信号drvはモータドライバ１０８の説明で記したように、駆動電圧でもよいし、ＰＷＭパルス信号でもよい。
【００２７】
ＣＰＵ１０３、メモリ１０４、計数手段１０６、デジタル・アナログ変換器１０７はその入出力データをやりとりするためにデータバスbusで接続されている。割り込み発生手段１０２、ＣＰＵ１０３、メモリ１０４、計数手段１０６、デジタル・アナログ変換器１０７により、ひとつのマイクロコンピュータ１０１を構成する。
【００２８】
図２は第１の実施形態におけるマイクロコンピュータ１０１が実行するシグナルフローを示す図である。
【００２９】
このシグナルフローは割り込み発生手段１０２により定期的に生起され実行される。それぞれの処理名を示す箱の下側に「fs」あるいは「fs/4」と記しているのは、サンプリング周波数である。fsは割り込み発生手段１０２で生起される基本割り込み周期（1/fs）の逆数であり、割り込みごとに毎回実行されることを示す。fs/4は割り込み４回ごとに１回実行される処理であり、サンプリング周波数は基本割り込み周波数の1/4になる。
【００３０】
目標位置発生処理（generate target position）２０１は、図示しない上位装置より指示されるか、あるいは自ら算出した目標位置xtgtを出力する。目標位置xtgtは一定量のステップの場合もあるし、所定の目標速度プロファイルを積分した時間的に変化する量の場合もあり、それは設計上の選択事項である。
【００３１】
現在位置検出処理（detect current position）２０３は、エンコーダ信号encpのカウント量ecntからモータ１０９あるいは対象物の現在位置xdetを算出する。単純にはカウント量ecntを読み出すだけの場合もあるが、エンコーダパルス単位から所定の物理単位に変換するためカウント量ecntに所定の係数を乗じる場合もある。なお、後段の演算で十分な演算語長を確保して演算精度を上げるため、エンコーダパルス単位に対して大きな係数を乗じておくのが好ましい。
【００３２】
また、この実施形態ではエンコーダパルスカウントはハードウェアである計数手段１０６で計数している。しかし、ハードウェア的な計数手段１０６がなくても、エンコーダパルス周期よりも十分短い割り込み周期で割り込み処理が実行される場合は、エンコーダパルス自体の論理値（０か１）を読み出してもよい。この場合は、一つ前の割り込み処理で読み出したエンコーダパルス論理値と今回のエンコーダパルス論理値に変化があったときパルスエッジが検出されたことになるから、これを元にソフトウェア的な処理により計数すればよい。
【００３３】
位置比較処理（compare position）２０２は、目標位置発生処理２０１の出力する目標位置xtgtと現在位置検出処理２０３の出力する現在位置xdetを比較し、比較結果に所定の係数を乗じて目標速度vtgt1を出力する。
【００３４】
具体的には、以下の演算を行う。なお、プログラミング言語はＣあるいはＣ＋＋風表記としている（「//」以降はコメント）。
【００３５】
vtgt1 = (xtgt - xdet) * Gx;  //Gxは所定の係数
これにより、目標位置xtgtと現在位置xdetのずれが大きいほど、大きな目標速度vtgt1となり、位置ずれを高速で小さくするようにモータ１０９を動かすことになる。位置ずれが小さくなると目標速度vtgt1は減少し、スムーズに目標位置xtgtに到達できる。
【００３６】
現在速度検出処理（detect current velocity）２０４は、現在位置検出処理２０３の出力する現在位置xdetを所定の周期ごとに差分して現在速度vdetを算出する。好ましくは、割り込み周期ごとに現在位置xdetと一つ前の現在位置z_xdetとの差分をとり、これに所定の係数を乗じて現在速度vdetとする。
【００３７】
すなわち、割り込み周期ごとに以下の演算を行う。
【００３８】
vdet = (xdet - z_xdet) * Gv;  // Gvは所定の係数
z_xdet = xdet;
これは現在位置xdetを微分して現在速度vdetを求めているのと等価であるので、vdetは速度の次元になる。
【００３９】
また、現在位置検出処理２０３の説明にも記したように、エンコーダパルスをハードウェアでなくソフトウェアでカウントする場合は、パルス論理の変化がまず検出される。実用的にはこれを現在速度vdetとし、現在速度vdetを積算して現在位置xdetとするほうが簡単である。
【００４０】
すなわち、割り込み周期ごとにエンコーダ信号encpを読み出すとして、現在速度vdetと現在位置xdetを以下のように求める。プログラム言語はＣ＋＋風に記している（「!=」は等しくないことを示す条件演算子）。
if (encp != z_encp) {     // ひとつ前のencpと変化があったら
vdet = 1;               // 速度vdetとして1が発生とする
}
else {                    // encpが変化していなければ
vdet = 0;               // vdetは0とする
}
xdet = xdet + vdet;       // vdetを積算して位置xdetとする
vdet = vdet * Gv;         // vdetに所定の計数Gvをかける
z_encp = encp;            // ひとつ前のencpを更新する
【００４１】
これはエンコーダ信号encpの両エッジ（立ち上がりと立下りの両方）をカウントして現在位置xdetとし、この現在位置xdetの微分（割り込み周期ごとの差分）を現在速度vdetとするプログラムである。ハードウェアの計数手段１０６が存在しなければこのようにして現在位置検出処理２０３と現在速度検出処理２０４を構成することができる。この場合、ハードウェアの計数手段１０６が不要となるため、より低コストに実現できるメリットがある。
【００４２】
速度比較処理（compare velocity）２０５は、目標速度vtgt1と現在速度vdetを比較した結果に応じて速度誤差verrを出力する。
【００４３】
すなわち、以下のように演算を行う。
【００４４】
verr = vtgt1 - vdet;
【００４５】
低域フィルタ処理（ＬＰＦ：Low Pass Filter）２０６は、速度誤差verrの低域成分を通過させるフィルタ演算を行い、処理後の速度誤差ve_lpfを出力する。ＬＰＦは公知の信号処理理論によって設計すればよい。
【００４６】
図３は低域フィルタ処理２０６の一例となる１次ローパスフィルタのシグナルフローを示す図である。入力inは速度誤差verrとなり、出力outは速度誤差ve_lpfとなる。
【００４７】
入力inは係数乗算４０１によりａ倍されて加算４０２の一方の入力となる。加算４０２の出力は出力outとなる。出力outはひとつ前の演算（割り込み）周期の値を記憶するメモリによる遅延４０３によりz_lpfとなり、係数乗算４０４によりｂ倍されて加算４０２の他方の入力となる。係数ａ、ｂは１次ローパスフィルタのカットオフ周波数とサンプリング周波数fsが与えられれば、周知の信号処理論により容易に設計することができる。
【００４８】
図３の１次ローパスフィルタの演算プログラムは次のようになる。これは割り込み周期（1/fs）ごとに実行されるのが好ましい。
【００４９】
out = in * a + z_lpf * b
z_lpf = out
【００５０】
１行目では、入力inから出力outを計算している。
【００５１】
２行目では、今回の出力outを次回の計算用にメモリ変数z_lpfに代入している。
【００５２】
図２に戻り、速度制御演算処理（velocity control）２０７は、低域フィルタ処理後の速度誤差ve_lpfに適切な誤差増幅演算を行って駆動指令信号ctlを出力する。
【００５３】
誤差増幅演算としては、よく知られたＰＩＤ（比例・積分・微分）コントローラ手法を用いるのが好ましい。ＰＩＤコントローラは、例えば、割り込み４回に１回の周期（サンプリング周波数fs/4）で下式のように実現される。
p = verr * Gp;            // 比例ゲインGpを乗じる
i = i + verr * Gi;        // 積分ゲインGiを乗じて積算する
d = (verr - z_verr) * Gd; // 前回速度誤差z_verrとの差分に微分ゲインGdを乗じる
ctl = p + i + d;          // 比例・積分・微分の成分を加算して制御出力とする
z_verr = verr;            // 次回微分のための更新
【００５４】
ＰＩＤ演算により、低域では積分により十分大きな増幅率を確保して速度誤差をゼロにするように制御され、高域では微分によりモータコイルの電流位相遅れ等を補償して安定化が可能、といった公知の制御理論の知見にもとづいた速度制御処理が実行される。
【００５５】
図４は第１の実施形態における割り込み処理実行の例を示すフローチャートである。
【００５６】
割り込みはマイクロコンピュータ１０１の割り込み発生手段１０２により所定の周期で生起され、割り込みエントリ（interrupt entry）に分岐して実行される。
【００５７】
図４においては、図２のシグナルフローにおける処理と同じ処理は、同じ処理名をつけている。
【００５８】
処理３０１では、割り込みカウント変数scntを４で割った剰余（scnt mod 4）の値（０から３）に応じてそれぞれの処理に分岐する。割り込みカウント変数scntは処理３１０でインクリメントされるので、割り込み処理を１回実行するたびに１増加する変数である。
【００５９】
この分岐機構により、割り込みごとにそれぞれ異なる処理を選択実行し、４回で一巡することになる。この選択実行手段を「低速処理手段」と呼ぶ。
【００６０】
処理３０２から処理３０５は、処理３０１の分岐機構により割り込み４回につき順次１回実行される。したがって、割り込み周期を1/fsとすれば、サンプリング周波数がfs/4で実行される処理群である。
【００６１】
処理３０２、３０３、３０４は図２における同名の処理２０１、２０２、２０７と同じ処理であるので、処理内容の説明は省略する。処理３０５は他の処理用に空けている。
【００６２】
処理３０６から処理３０９は、割り込みごとに毎回実行される。これを「高速処理手段」と呼ぶ。処理内容は図２の同名の処理と同じであるため説明を省略する。対応は以下のようになる。
【００６３】
処理３０６は処理２０３と同じ
処理３０７は処理２０４と同じ
処理３０８は処理２０５と同じ
処理３０９は処理２０６と同じ
【００６４】
処理３１０では割り込みカウント変数scntを１増加させている。
【００６５】
第１の実施形態では、以上のように、割り込みごとに異なる処理に分岐して実行する低速処理手段と、毎回実行する高速処理手段とを備えており、割り当てを以下のようにしている。
【００６６】
高速処理手段は、
現在位置検出
現在速度検出
速度比較
低域フィルタ
に割り当てている。一般に、現在位置と現在速度の検出は速度制御ループ内で高速な処理を要求されるため、割り込みごとに毎回実行することで高速で精密な制御を可能にしている。
【００６７】
低速処理手段は、
目標位置生成
位置比較
速度制御演算
に割り当てている。なお、位置比較は高速処理手段において行ってもよい。
【００６８】
これらは、比較的低速に処理しても制御性能に影響を与えないため、割り込み４回に１回順次実行することで、ＣＰＵ処理性能の低い、低コストマイクロコンピュータの利用を可能にしている。
【００６９】
ＣＰＵ処理性能が低い場合、すべての処理を割り込みごとに毎回実行すると、割り込み周期内に処理が終わらない可能性があり、制御処理が破たんしてしまう恐れがある。この場合でも、本実施形態のように低速でもよい処理を分散させることで全体として破たんせず、かつ制御性能を低下させないようにすることができる。
【００７０】
＜第２の実施形態＞
図５は第２の実施形態におけるモータ制御装置１００のハードウェア構成例を示す図である。
【００７１】
図５においては、上位装置からの目標パルス信号tgtpをカウントしてカウント量xcntを出力する計数手段１０５が新たに加わった点が図１とは異なる。すなわち、外部から目標パルス信号を入力する機構が加わったものである。図１と同一符号の要素は同じ機能を持つので、その説明は省略する。
【００７２】
図６は第２の実施形態におけるマイクロコンピュータ１０１が実行するシグナルフローを示す図である。
【００７３】
目標位置生成処理（generate target position）２０８は、外部からの目標パルス信号tgtpをカウントしたカウント量xcntを読み込んで目標位置xtgtを生成する。この処理のサンプリング周波数はfs/4、すなわち割り込み４回につき１回の処理でよい。
【００７４】
他の処理については、図２と同一の要素には同一符号を付けているので、ここでは内容の説明は省略する。すなわち、目標位置発生処理２０１に代えて目標位置生成処理２０８が設けられている。
【００７５】
このフローにより、外部から目標パルスを入力して目標位置とする場合でも、その目標位置に追従してモータ位置が制御できるようになる。
【００７６】
図７は第２の実施形態における割り込み処理実行の例を示すフローチャートである。
【００７７】
図７において、処理３１１は図６の目標位置生成処理２０８に対応する処理である。その他の処理は図４の同一符号で示した処理と同じである。
【００７８】
＜第３の実施形態＞
図８は第３の実施形態におけるマイクロコンピュータ１０１が実行するシグナルフローを示す図である。第３の実施形態におけるハードウェア構成は第２の実施形態について示した図５と同じである。
【００７９】
図８において、目標速度生成処理２１０（generate target velocity）は、目標位置生成処理２０８の出力する目標位置xtgtを微分して第２の目標速度vtgt2を出力する。具体的には、今回の割り込み処理における目標位置xtgtと、ひとつ前の割り込み処理における目標位置z_xtgtとの差分に応じた目標速度vtgt2を出力する。
【００８０】
目標速度vtgt2は、現在速度検出処理２０４が出力する現在速度vdetと同じ単位にするのが好ましい。現在速度vdetは毎回割り込み（サンプリング周波数fs）での位置差分で作られるが、目標速度生成処理２１０は４回に１回の割り込み（サンプリング周波数fs/4）で動作するので、現在速度vdetにかかる係数Gvを1/4して使うと簡単に単位が一致するので好ましい。
【００８１】
例えば、目標速度生成処理２１０の処理演算は以下のようになる。
【００８２】
vtgt2 = (xtgt - z_xtgt) * Gv / 4;   // 目標位置の差分(の1/4)
z_xtgt = xtgt                     // 前回の目標位置を更新
【００８３】
速度比較処理（compare velocity）２１１は、図６の速度比較処理２０５と違うのは、目標速度生成処理２１０の出力する第２の目標速度vtgt2も演算に使うところである。
【００８４】
速度比較処理２１１は、位置比較処理２０２の出力する第１の目標速度vtgt1と、目標速度生成処理２１０の出力する第２の目標速度vtgt2とを加算して目標速度とし、これと現在速度vdetを比較して速度誤差verrを出力する。
【００８５】
すなわち、演算は下式のようになる。
【００８６】
verr = vtgt1 + vtgt2 - vdet;
【００８７】
目標位置xtgtから生成した第２の目標速度vtgt2を加算することにより、一定速度で移動中は目標速度vtgt2と現在速度vdetがバランスし、他に外乱がなければ第１の目標速度vtgt1はゼロ付近で推移する。したがって、第１の目標速度vtgt1を生成するときの位置ずれ（xtgt-xdet）もゼロ付近で推移し、目標位置にほぼ完全に追従した制御が可能になり、精密な位置制御ができる。その他の処理は図６の同一符号で示した処理と同じである。
【００８８】
図９は第３の実施形態における割り込み処理実行の例を示すフローチャートである。
【００８９】
処理３１２は図８の目標速度生成処理２１０に対応した目標速度生成処理であり、割り込みカウント変数scntの剰余１のところに挿入している。このため、割り込みカウント変数scntの剰余２と３のところに、処理３０３と処理３０４が移動し、他の処理への割り当てはない。なお、処理３１２は、処理３０３と同様に高速処理手段に含めてもよい。
【００９０】
処理３１３は図８の速度比較処理２１１に対応した速度比較処理である。その他の処理は図７の同一符号で示した処理と同じである。
【００９１】
図１０は第３の実施形態における割り込み処理の実行スケジュールを示す図である。
【００９２】
横軸は割り込みカウント変数scntが０から１１までの各割り込みタイミングを示し、縦軸は各割り込み内で実行される処理を「＊」で示している。「＊」の処理順序は図９のフローチャートが毎回割り込みで実行されるときと同じであることが理解されよう。同様にして他の実施形態においてもこのようなスケジュール表で示すことができる。
【００９３】
＜第４の実施形態＞
図１１は第４の実施形態におけるマイクロコンピュータ１０１が実行するシグナルフローを示す図である。第４の実施形態のハードウェア構成は第２実施形態について示した図５と同じである。
【００９４】
図１１の各処理は図８の同一符号の処理と同じであるが、低域フィルタ処理２０６が速度比較処理２０５の前段に挿入されており、現在速度検出処理２０４の出力する現在速度vdetの低域成分を抽出してvdet_lpfを速度比較処理２０５に出力するところが異なっている。
【００９５】
これに伴ない、速度比較処理２０５の演算式は下式のようにvdetでなくvdet_lpfを用いることになる。
【００９６】
verr = vtgt1 + vtgt2 - vdet_lpf;
【００９７】
図１２は第４の実施形態における割り込み処理実行の例を示すフローチャートである。
【００９８】
シグナルフローでの低域フィルタ処理２０６の移動に伴なって、処理順をそろえるため、フローチャート上も処理３０９が処理３１３よりも前に移動している。処理３１３は図１１の速度比較処理２０５に対応している。その他の処理は図９の同一符号で示した処理と同じである。
【００９９】
ＬＰＦの処理３０９を速度比較の処理３１３よりも手前で現在速度vdetにだけ作用させることにより、速度比較前に平滑された現在速度vdet_lpfを得ることができる。平滑前の現在速度vdetは、差分演算によりGvか０かのパルス状にしか得られず、これだけでは現在速度に応じて例えばゲインなどの制御パラメータを変えるなど別の用途には利用しにくい面がある。平滑された現在速度vdet_lpfであれば、別の用途に容易に使うことができ、より多様な制御が可能になる。
【０１００】
＜第５の実施形態＞
図１３は第５の実施形態におけるマイクロコンピュータ１０１が実行するシグナルフローを示す図である。第５の実施形態のハードウェア構成は第２の実施形態について示した図５と同じである。
【０１０１】
図１３において、メイン処理（main process）６００は、割り込み処理が実行されていないときに処理６０１〜６０４を順次実行する。
【０１０２】
コマンド処理（command process）６０１は、適切な通信インターフェース（図示せず）を用いて、上位装置からのスタート指令や停止指令あるいは目標位置指令等を受信し、割り込み制御処理の一部または全部を動作させたり停止させたりする。
【０１０３】
異常検出処理（fail detection）６０２は、割り込み処理内でモータ制御処理や演算に応じて更新される各種変数（例えば、目標速度と現在速度の差や、目標位置と現在位置の差、あるいは制御出力値など）の値を定期的にモニタし、所定値を越えたり所定範囲内をオーバしたりした場合に異常状態と判定する。その場合、モータ制御をＯＦＦしたり、上位装置に異常報告をしたりする。
【０１０４】
その他処理（other process）６０３は、その他の処理用にリザーブしており、通常は何もしない。
【０１０５】
割り込み回数判断処理６０４は、割り込み処理実行ごとにインクリメントするscnt変数の値をモニタし、８だけ増加するのを待つ。８増加したらメイン処理６００の先頭に戻り、これによりメインループを構成する。
【０１０６】
割り込み処理（interrupt process）３＊＊は、所定の割り込み周期ごとに優先実行される。具体的には今までの実施形態の図４、図７、図９、図１２の処理と同じものである。
【０１０７】
このようにすると、メインループは割り込み８回で一巡するように動作するので、メイン処理６００内の各種処理は割り込み８回に１回実行される。したがって、メイン処理６００内でも正確な時間管理が可能である。特に、異常検出処理６０２は、異常状態が所定時間持続したかなど、正確な時間測定をする必要があるが、タイマなどのハードウェアを設けなくても、割り込み周期をベースに時間計測が可能なので、低コストで実現できる。
【０１０８】
また、割り込み周期内で確実に終了しなければならない割り込み処理と違い、長い処理をメインループで行なわせることができるので、低コストで多機能な制御ができる。
【０１０９】
＜総括＞
以上説明したように、本実施形態によれば次のような利点がある。
【０１１０】
（１）割り込み処理の内容を低速処理と高速処理に分け、高速処理ではすくなくともモータ位置を検出する処理を行い、低速処理ではすくなくともモータ位置に応じてモータの駆動指令を算出する処理を行なうようにしたので、位置検出を確実に行なって、高速回転でも高精度な制御を可能にすることができる。すなわち、安価なマイクロコンピュータを利用しても、全ての割り込み制御処理を毎回全部行なった場合のように、所定の割り込み周期内で処理が終わらず制御動作が破たんしたり、制御処理の遅れによって不安定になったり不正確な制御になったりすることがない。したがって、低コストで高精度かつ安定なモータ位置や速度の制御が可能になる。特に、位置検出処理を高速処理側としたので、高速回転でも確実に位置検出が行なえ、ＰＩＤのような比較的低速でよい制御演算を低速処理側に分散したので、ＣＰＵ処理負荷を軽くできる。
【０１１１】
（２）モータの速度検出処理を高速処理側とすることので、高速回転でも速度検出を確実に行なうことができ、高精度な制御が可能になる。さらに、比較的低速でもよい目標位置生成や位置比較処理を必ずしも毎回は行なわないようにすることで、ＣＰＵ処理負荷をさらに軽くでき、低コストで高精度かつ安定なモータ位置や速度の制御が可能になる。
【０１１２】
（３）外部から入力されるパルスを計数して目標位置を算出するようにしたので、外部入力パルスに追従してモータ位置を高精度に制御でき、目標位置検出と現在速度検出を確実に行なって、高速回転でも高精度な制御が可能になる。
【０１１３】
（４）通常の第１の目標速度に加え、目標位置の差分から第２の目標速度を算出し、第１、第２の目標速度を加算した値を用いることで、制御中の追従位置偏差を小さくでき、高精度な制御が可能になる。
【０１１４】
（５）速度誤差の低域成分を抽出する低域フィルタ処理を行なうことで、速度検出のノイズを小さくし、さらに高精度な制御が可能になる。
【０１１５】
（６）割り込み処理が実行されていないときにメイン処理を実行し、割り込み処理中に算出された駆動指令あるいはモータ位置に応じて異常状態を判定するエラー判定を行なうことで、タイマなどのハードウェアの追加なしに、低コストでさらに異なる多くの処理を所定の時間管理のもとに実行させることができる。特に動作異常検出に十分な処理時間を与えることができ、確実に異常検出ができ、信頼性の高い制御が可能になる。
【０１１６】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【０１１７】
１００              モータ制御装置
１０１              マイクロコンピュータ
１０２              割り込み発生手段
１０３              ＣＰＵ
１０４              メモリ
１０５、１０６      計数手段
１０７              デジタル・アナログ変換器
１０８              モータドライバ
１０９              モータ
１１０              エンコーダ
２０１              目標位置発生処理
２０２              位置比較処理
２０３              現在位置検出処理
２０４              現在速度検出処理
２０５              速度比較処理
２０６              低域フィルタ処理
２０７              速度制御演算処理
２０８              目標位置生成処理
２１０              目標速度生成処理
２１１              速度比較処理
【先行技術文献】
【特許文献】
【０１１８】
【特許文献１】特開２００６−３３８３６７号公報
【特許文献２】特開２０１１−４４００６号公報
【図１】
2013220006.tif 000003
【図２】
2013220006.tif 000004
【図３】
2013220006.tif 000005
【図４】
2013220006.tif 000006
【図５】
2013220006.tif 000007
【図６】
2013220006.tif 000008
【図７】
2013220006.tif 000009
【図８】
2013220006.tif 000010
【図９】
2013220006.tif 000011
【図１０】
2013220006.tif 000012
【図１１】
2013220006.tif 000013
【図１２】
2013220006.tif 000014
【図１３】
2013220006.tif 000015