(57)【要約】【課題】従来よりも好適に複数モータを制御可能な技術を提供する。【解決手段】モータＡ，Ｂ，Ｃを制御する制御システムであって、制御部が、割込み信号が入力される度、モータＡ，Ｂ，Ｃの内、制御周期が到来したモータについて、当該モータに対する操作量（ＰＷＭ値）を、対応するモータ駆動回路に設定し、モータ毎の駆動回路により、各モータをＰＷＭ制御して、駆動するモータ制御システムにおいて、次のようにして、割込み信号の入力周期Ｔｓ、モータＡ，Ｂ，Ｃの制御周期Ｔｓ１，Ｔｓ２，Ｔｓ３を設定する。具体的には、各モータＡ，Ｂ，Ｃの最適な制御周期Ｔｒ＿Ａ，Ｔｒ＿Ｂ，Ｔｒ＿Ｃの最大公約数Ｔｍを求め、最大公約数Ｔｍを割込み信号の入力周期Ｔｓに決定し、モータＡの制御周期Ｔｓ１を、周期Ｔｓの（Ｔｒ＿Ａ／Ｔｍ）倍に決定し、モータＢ，Ｃの制御周期Ｔｓ２，Ｔｓ３を夫々、周期Ｔｓの（Ｔｒ＿Ｂ／Ｔｍ）倍，（Ｔｒ＿Ｃ／Ｔｍ）倍に決定する。【選択図】図４
2008253110.tif 000002
【特許請求の範囲】
【請求項１】
複数のモータを制御するモータ制御装置であって、
設定された操作量に対応する操作をモータに加えて、モータを駆動するモータ駆動手段を、前記複数のモータの夫々に備えると共に、
予め設定された処理実行周期毎に、前記複数のモータの内、制御周期が到来した各モータの前記モータ駆動手段に対して、操作量を設定する操作量設定手段
を備えるモータ制御装置
に対して、前記処理実行周期及び前記各モータの制御周期を設定する方法であって、
前記複数のモータの内、最適な制御周期が最小のモータの当該制御周期を基準周期として、当該基準周期のＮ（但し、値Ｎは２以上の整数である。）分の一の時間間隔を、前記処理実行周期に設定し、前記最適な制御周期が最小のモータの当該制御周期を、前記設定した処理実行周期のＮ倍に設定すると共に、前記複数のモータの内、前記最適な制御周期が最小のモータ以外の各モータの制御周期を、前記設定した処理実行周期のＭ倍（但し、値Ｍは、値Ｎ以上の整数である。）に設定することを特徴とする設定方法。
【請求項２】
複数のモータを制御するモータ制御装置であって、
設定された操作量に対応する操作をモータに加えて、モータを駆動するモータ駆動手段を、前記複数のモータの夫々に備えると共に、
予め定められた周期で到来する処理実行時刻が到来する度、前記複数のモータの内、制御周期が到来した各モータの前記モータ駆動手段に対して、操作量を設定する操作量設定手段を備え、
前記処理実行時刻の到来周期は、前記複数のモータの内、制御周期が最小のモータの当該制御周期とは異なる値であって、前記各モータに対し設定された制御周期の公約数に、定められていることを特徴とするモータ制御装置。
【請求項３】
基点からの経過時間を計測する計時手段
を備え、
前記操作量設定手段は、前記処理実行時刻が到来する度、前記複数のモータの夫々について、前記計時手段の計測値をモータの制御周期で除算して除算後の余りを算出し、当該余りが規定値であるか否かを判断することによって、制御周期が到来したモータを検出する構成にされていることを特徴とする請求項２記載のモータ制御装置。
【請求項４】
複数のモータを制御するモータ制御装置であって、
前記複数のモータの夫々に対し、
モータの回転量を検出する回転量検出手段と、
設定された操作量に対応する操作をモータに加えて、モータを駆動するモータ駆動手段と、
を備えると共に、
操作量の算出結果を記憶するための操作量記憶手段と、
予め定められた周期で到来する処理実行時刻が到来する度、前記複数のモータの内、制御周期が到来した各モータの前記モータ駆動手段に対して、操作量を設定する操作量設定手段と、
を備え、
前記操作量設定手段は、
前記処理実行時刻が到来する度、
前記制御周期が到来したモータについて、モータ毎に、対応する前記回転量検出手段から前記回転量についての検出値を取得すると共に、前記制御周期が到来したモータについて、モータ毎に、所定回前に算出された当該モータの操作量を、前記操作量記憶手段から読み出し、前記読み出した操作量を、このモータに対応する前記モータ駆動手段に設定す
る入出力処理
を実行すると共に、前記制御周期が到来したモータについて、前記入出力処理の実行後、モータ毎に、
対応する前記回転量検出手段から取得した前記検出値に基づき、このモータに対する操作量を算出し、前記算出した操作量を、前記操作量記憶手段に記憶させる算出記録処理
を実行する構成にされ、更に、
前記処理実行時刻の到来周期は、前記複数のモータの内、制御周期が最小のモータの当該制御周期とは異なる値であって、前記各モータに対し設定された制御周期の公約数に、定められていることを特徴とするモータ制御装置。
【請求項５】
前記操作量設定手段は、前記算出記録処理を、次の前記処理実行時刻の到来時までに終えることができなかった場合、前記次の処理実行時刻の到来時点で、この算出記録処理を中断すると共に、前記処理実行時刻の到来を契機として前記入出力処理を実行した後、前記中断された前記算出記録処理を再開する構成にされていることを特徴とする請求項４記載のモータ制御装置。
【請求項６】
マイクロコンピュータと、
前記操作量設定手段としての機能を、前記マイクロコンピュータに実現させるためのプログラムと、
を備え、
前記操作量設定手段としての機能は、当該モータ制御装置が備える単一の前記マイクロコンピュータが、前記プログラムを実行することにより、実現されることを特徴とする請求項１〜請求項５のいずれかに記載のモータ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のモータを制御するモータ制御装置に関する。
【背景技術】
【０００２】
従来より、モータ制御装置としては、異なる駆動対象を駆動する複数のモータを、単一の制御部（マイクロコンピュータ等）で制御するモータ制御装置が知られている。この種のモータ制御装置では、例えば、モータの回転に応じてパルス信号を出力するエンコーダからの入力信号に基づき、モータに対する操作量を算出し、この操作量をモータ駆動回路に設定する処理（以下、「制御処理」と称する。）を繰返し、モータ毎に実行することにより、モータ制御を実現する。但し、単一の制御部では、複数モータの上記制御処理を夫々、並列に実行することができない。このため、従来のモータ制御装置では、繰返し、各モータに対する制御処理を、順に実行することで、仮想的に各モータを並列制御している。
【０００３】
この他、複数モータにより異なる駆動対象を駆動する場合には、モータ毎に、適切な制御周期（換言すると、操作量の更新周期）が異なる場合も多い。このため、従来装置では、複数のモータの全てについての制御処理を、同周期で繰返し実行するのではなく、各モータの制御処理を、異なる周期で実行することが行われている。
【０００４】
具体的には、図１１に示すように、制御周期の最適値が最小のモータについての当該制御周期を、処理の実行周期Ｔｓに定め、他のモータの制御周期を、処理実行周期Ｔｓの整数倍に定めて、処理実行時刻が到来する度、制御周期が到来したモータについての上記制御処理を順に実行することで、従来装置では、仮想的に、各モータを異なる制御周期で、並列制御している（例えば、特許文献１参照）。制御周期がＭ×Ｔｓのモータについては、処理実行時刻の到来回数がＭの整数倍となる度、上記制御処理を実行するといった具合である。
【特許文献１】特開２００２−１８６２８８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来装置では、処理実行周期Ｔｓを、制御周期の最適値が最小のモータの当該制御周期に定めていたため、他のモータの制御周期が、上記最適値が最小のモータの制御周期Ｔｓに、拘束されるといった問題があった。
【０００６】
即ち、従来手法では、制御周期の最適値が最小のモータについての当該制御周期Ｔｓに拘束されて、他のモータに対し、最適な制御周期を設定することができないといった問題があった。また、これが原因で、複数モータを単一の制御部で制御するモータ制御装置においては、一部モータの制御性能が劣化するといった問題があった。
【０００７】
勿論、このような問題は、制御部を、モータ毎に設けることで解決することができる。しかしながら、制御部をモータ毎に設けると、装置の製造コストが大幅に上昇するといった問題があった。
【０００８】
本発明は、こうした問題に鑑みなされたものであり、単一の制御部にて、従来よりも適切に、複数モータを制御可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するためになされた第一の発明は、複数のモータを制御するモータ制御装置であって、設定された操作量に対応する操作をモータに加えて、モータを駆動するモータ駆動手段をモータ毎に備えると共に、制御周期が到来した各モータのモータ駆動手段に対し操作量を設定する動作を、予め設定された処理実行周期毎に実行する操作量設定手段を備えるモータ制御装置に対し、次のように、処理実行周期及び各モータの制御周期を設定するようにした方法の発明である（請求項１）。
【００１０】
この発明では、複数のモータの内、最適な制御周期が最小のモータの当該制御周期を基準周期として、当該基準周期のＮ（但し、値Ｎは２以上の整数である。）分の一の時間間隔を、処理実行周期に設定し、上記最適な制御周期が最小のモータの当該制御周期を、設定した処理実行周期のＮ倍に設定すると共に、複数のモータの内、最適な制御周期が最小のモータ以外の各モータの制御周期を、設定した処理実行周期のＭ倍（但し、値Ｍは、値Ｎ以上の整数である。）に設定する。
【００１１】
このような方法で、処理実行周期及び制御周期を設定すれば、従来のように、最適な制御周期が最小のモータの当該制御周期を、処理実行周期に定めるよりも、各モータの制御周期を、適切な値に設定することができる。
【００１２】
即ち、本発明の設定方法によれば、最適な制御周期が最小のモータの当該制御周期の整数分の一を、処理実行周期に設定するので、従来手法よりも、自由度高く、各モータの制御周期を設定することができ、結果として、各モータの制御周期を、最適値又はその近似値に設定することができる。
【００１３】
また、上記モータ制御装置では、処理実行周期毎に、制御周期が到来したモータを検出し制御周期が到来した各モータについての操作量を更新するといった動作で、各モータを制御周期毎に制御するので、単一の制御部（マイクロコンピュータ等）で、複数のモータを、簡単な手順で制御することができる。即ち、このモータ制御装置では、処理実行周期で統制せずに、各モータを個別に制御するモータ制御装置よりも、簡単に、複数モータを制御することができる。従って、本発明の設定方法によれば、簡単な制御系で、複数のモータを高精度に制御することができる。
【００１４】
また、具体的に、処理実行周期は、最適な制御周期が最小のモータの当該制御周期の整数分の一であって、各モータの最適な制御周期の最大公約数に定められるとよい。処理実行周期を必要以上に短くすると、制御周期が到来したモータが存在しないのにも拘わらず、制御周期が到来したモータの検出動作を、操作量設定手段が高頻繁に実行しなければならなくなり、操作量設定手段の処理負荷が増大する。一方、処理実行周期を、各モータの最適な制御周期の最大公約数に定めれば、各モータを最適な周期で制御することのできる最大長さの周期を、処理実行周期に定めることができ、操作量設定手段の処理負荷を効率的に抑えることができる。
【００１５】
また、上記目的を達成するためになされた第二の発明は、設定された操作量に対応する操作をモータに加えて、モータを駆動するモータ駆動手段をモータ毎に備えると共に、予め定められた周期で到来する処理実行時刻が到来する度、制御周期が到来した各モータのモータ駆動手段に対し、操作量を設定する操作量設定手段を備え、当該操作量設定手段の動作により複数モータを制御するモータ制御装置であって、処理実行時刻の到来周期が、制御周期が最小のモータの当該制御周期とは異なる値であって、各モータに対し設定された制御周期の公約数に、定められてなるモータ制御装置の発明である（請求項２）。
【００１６】
上述したように、処理実行周期を基準として各モータを制御する手法では、単一の制御部（マイクロコンピュータ等）で複数モータを制御する場合に、その制御手順及び制御系
の構成を、処理実行周期で統制しない手法と比較して、簡単にすることができるといった利点がある。しかしながら、処理実行周期を基準として各モータを制御する手法では、従来、各モータの制御周期が、制御周期の最適値が最小のモータの当該制御周期に、拘束されるといった問題があった。
【００１７】
本発明は、こうした問題に鑑み、各モータの制御周期の公約数に、処理実行周期（処理実行時刻の到来周期）を定めて、モータ制御装置を構成したものである。各モータの制御周期の公約数に、処理実行周期を定めれば、各モータの制御周期が、制御周期の最適値が最小のモータの当該制御周期に拘束されずに済む。即ち、本発明のようにモータ制御装置を構成すれば、処理実行周期を基準として各モータを制御する手法を採用しつつ、各モータの操作量を適切な周期で更新することができ、各モータを高精度に制御することができる。従って、本発明によれば、安価に高性能なモータ制御装置を構築することができる。
【００１８】
尚、このモータ制御装置において、処理実行周期は、各モータの制御周期の最大公約数に定められるとよい。このように、処理実行周期を、各モータの制御周期の最大公約数に定めれば、上述したように、操作量設定手段の処理負荷を抑えることができ、操作量設定手段としての機能をマイクロコンピュータにて実現する場合に、安価なマイクロコンピュータを用いることができる。
【００１９】
また、操作量設定手段では、制御周期が到来したモータを検出する必要があるが、このモータの検出動作は、具体的に、次のようにして実現されるとよい。
即ち、モータ制御装置には、基点からの経過時間を計測する計時手段を設けて、操作量設定手段は、処理実行時刻が到来する度、複数のモータの夫々について、計時手段の計測値をモータの制御周期で除算して除算後の余りを算出し、当該余りが規定値であるか否かを判断することによって、制御周期が到来したモータを検出する構成にされるとよい（請求項３）。このようにモータ制御装置を構成すれば、簡単な動作で制御周期が到来したモータを検出することができる。尚、規定値は、例えば、値ゼロに設定することができる。
【００２０】
また、モータ制御装置は、モータ毎に、モータ駆動手段及びモータの回転量を検出する回転量検出手段を備えると共に、操作量の算出結果を記憶するための操作量記憶手段と、操作量設定手段と、を備える構成にされ、更に、操作量設定手段は、次のように構成されるとよい。
【００２１】
即ち、操作量設定手段は、処理実行時刻が到来する度、入出力処理を実行すると共に、制御周期が到来したモータについて、入出力処理の実行後、モータ毎に、算出記録処理を実行する構成にされ、入出力処理として、制御周期が到来したモータについて、モータ毎に、対応する回転量検出手段から回転量についての検出値を取得すると共に、制御周期が到来したモータについて、モータ毎に、所定回前に算出された当該モータの操作量を、操作量記憶手段から読み出し、読み出した操作量を、このモータに対応するモータ駆動手段に設定する処理を実行し、各モータの算出記録処理として、対応するモータの回転量検出手段から取得した検出値に基づき、このモータに対する操作量を算出し、算出した操作量を、操作量記憶手段に記憶させる処理を実行する構成にされるとよい（請求項４）。
【００２２】
このようにモータ制御装置を構成すれば、操作量の演算時間が揺動する場合でも、高精度に一定周期（予め定められたモータの制御周期）で、操作量をモータ駆動手段に対して設定することができる。また、高精度に一定周期で各モータの回転量についての検出値を取得し、これに基づく操作量の算出動作を実行することができる。
【００２３】
即ち、従来装置では、処理実行時刻が到来すると、モータの回転量を取得して、この取
得値に基づき、モータに対する操作量を算出し、算出後に、当該算出の結果得られた操作量を、モータ駆動手段に設定して、操作量を更新するといった制御処理を実行していたため、一定周期で上記制御処理を開始しても、操作量の演算時間の揺動により、操作量の演算後に行われる操作量の設定動作については、安定して一定周期で実行することができないといった問題があった。
【００２４】
また、制御周期が到来したモータが複数ある場合には、処理実行時刻の到来を契機として、上記複数モータの制御処理を、優先度の高いモータから、順に実行することになるが、この場合には、優先度の低いモータの制御処理の実行開始時刻が、先に実行された優先度の高いモータについての制御処理の遅延を受けて安定しないため、操作量の設定動作だけでなく、回転量の検出値の取得動作についても、一定周期で精度よく実行することができないといった問題があった。そして、従来装置では、このような操作量の設定動作及び検出値の取得動作の実行周期の揺動が、モータの制御性能の劣化に繋がっていた。
【００２５】
これに対し、本発明のモータ制御装置では、操作量の演算前に、検出値の取得動作、及び、操作量の設定動作を実行するので、操作量の演算時間の揺動が、検出値の取得動作及び操作量の設定動作の実行時期に影響を与えることがなく、安定的に、一定周期で、検出値の取得動作及び操作量の設定動作を実行することができる。従って、本発明によれば、各モータを高精度に制御することができるモータ制御装置を提供することができる。
【００２６】
また、モータ制御装置は、処理実行時刻が到来してから次の処理実行時刻が到来するまでの期間に、入出力処理及び算出記録処理の全てが終了するように、構成されるのが好ましいが、操作量の演算時間が延びて、算出記録処理が次の処理実行時刻までに終了しない場合も考えられるので、このような場合を想定してモータ制御装置を構成する場合には、具体的に、操作量設定手段を次のように構成するとよい。
【００２７】
即ち、操作量設定手段は、算出記録処理を、次の処理実行時刻の到来時までに終えることができなかった場合、次の処理実行時刻の到来時点で、この算出記録処理を中断すると共に、処理実行時刻の到来を契機として入出力処理を実行した後、中断された算出記録処理を再開する構成にされるとよい（請求項５）。算出記録処理が次の処理実行時刻までに終了しない事態も考えられるモータ制御装置において、このように、操作量設定手段を構成すれば、上記事態が発生した場合でも、優先的に入出力処理が実行されるので、適切に検出値の取得動作及び操作量の設定動作を一定周期で実行することができ、安定したモータ制御を実現することができる。
【００２８】
また、操作量設定手段としての機能は、操作量設定手段としての機能をマイクロコンピュータに実現させるためのプログラムを、モータ制御装置が備える単一のマイクロコンピュータに、実行させることにより、実現することができる（請求項６）。単一のマイクロコンピュータにて操作量を演算する従来のモータ制御装置では、上述したように、操作量の演算時間の揺動から、精度よく一定周期で、回転量の検出値（制御量）の取得動作及び操作量の設定動作を実行することができないといった問題があったが、本発明を、このようなモータ制御装置に適用すれば、検出値の取得動作及び操作量の設定動作を一定周期で実行することができ、安定したモータ制御を実現することが可能なモータ制御装置を構成することができる。
【発明を実施するための最良の形態】
【００２９】
以下、本発明の実施例について、図面と共に説明する。
図１は、本発明が適用された制御システム１の構成を表すブロック図である。本実施例の制御システム１は、複数のモータＡ，Ｂ，Ｃを、単一の制御部１０にて制御するもので
あり、例えば、インクジェットプリンタにおける印字機構１００の制御システムに用いられる。図２は、印字機構１００の構成を表す概略断面図である。
【００３０】
本実施例の制御システム１を、印字機構１００の制御システムに適用する場合には、単一の制御部１０にて、インクジェットヘッド１０１を搭載したキャリッジ１０３を主走査方向に駆動するＣＲモータ１０５、給紙トレイ１１１から用紙Ｐを給紙する給紙ローラ１１３を駆動するＡＣＦモータ１１５、給紙される用紙Ｐをピンチローラ１２１と挟持して印字位置へと搬送する用紙搬送ローラ１２３及び用紙搬送ローラ１２３に連結された排紙ローラ１２７であって用紙搬送ローラ１２３側から搬送されてくる用紙Ｐをピンチローラ１２５と挟持して排紙する排紙ローラ１２７を駆動するＬＦモータ１２９を制御することになる。
【００３１】
具体的に、図２に示す印字機構１００において印字を実現するには、給紙ローラ１１３を回転させて、給紙トレイ１１１上の用紙Ｐを用紙搬送ローラ１２３側へと搬送し、用紙Ｐが用紙搬送ローラ１２３に到達した場合には、給紙ローラ１１３を回転させながらも、用紙搬送ローラ１２３を回転させて、用紙Ｐを印字位置まで搬送する必要がある。また、印字を開始するに当たっては、インクジェットヘッド１０１のノズルを洗浄するため、インクを吐き出すフラッシング動作を行う必要があり、この際には、キャリッジ１０３をフラッシング位置まで移動させる必要がある。そして、この場合には、ＣＲモータ１０５及びＡＣＦモータ１１５及びＬＦモータ１２９を、同時期に制御する必要がある。
【００３２】
図３は、横軸を時間、縦軸をモータ速度としたグラフを記したものであり、図３上段は、印字処理開始時のＣＲモータ１０５の動作を表すグラフ、中段は、ＡＣＦモータ１１５の動作を表すグラフ、下段は、ＬＦモータ１２９の動作を表すグラフである。図３に示すように、ＣＲモータ１０５、ＡＣＦモータ１１５及びＬＦモータ１２９は、特定の期間において同時制御される必要がある。本実施例の制御システム１は、このような複数モータを備える制御システムに適用され、単一の制御部１０にて、これら複数モータを制御する。
【００３３】
具体的に、本実施例の制御システム１は、モータＡ，Ｂ，Ｃを制御する制御部１０を備えると共に、図１に示すように、制御対象のモータＡ，Ｂ，Ｃ毎に、エンコーダ２１、エンコーダ信号処理回路２３、及び、モータ駆動回路２５を備える。また、この制御システム１は、制御部１０に割込み信号Ｉｒを所定周期Ｔｓで入力するタイマ２７を備える。以下では、モータＡのエンコーダ２１及びエンコーダ信号処理回路２３及びモータ駆動回路２５を、特に、エンコーダ２１ａ及びエンコーダ信号処理回路２３ａ及びモータ駆動回路２５ａと記し、モータＢのエンコーダ２１及びエンコーダ信号処理回路２３及びモータ駆動回路２５を、エンコーダ２１ｂ及びエンコーダ信号処理回路２３ｂ及びモータ駆動回路２５ｂと記し、モータＣのエンコーダ２１及びエンコーダ信号処理回路２３及びモータ駆動回路２５を、エンコーダ２１ｃ及びエンコーダ信号処理回路２３ｃ及びモータ駆動回路２５ｃと記す。
【００３４】
この制御システム１が備えるモータＡ，Ｂ，Ｃのエンコーダ２１は、周知のロータリーエンコーダ若しくはリニアエンコーダであり、対応するモータＡ，Ｂ，Ｃの回転に応じてパルス信号を出力する。パルス信号は、対応するモータＡ，Ｂ，Ｃのエンコーダ信号処理回路２３に入力され、エンコーダ信号処理回路２３は、このパルス信号に基づき、所定の時点（リセットされた時点）を基準としたモータＡ，Ｂ，Ｃの回転量（位置座標）Ｘ及びモータの回転速度Ｖを算出する。当該制御システム１を、上記印字機構１００の制御システムに適用した場合、モータＡの回転量は、キャリッジの位置座標を表し、モータＢ，Ｃの回転量は、用紙Ｐの搬送量を表すこととなる。
【００３５】
また、制御部１０は、各モータＡ，Ｂ，Ｃのエンコーダ信号処理回路２３で算出された回転量Ｘ及び回転速度Ｖを、制御量の情報としてエンコーダ信号処理回路２３から取得し、この情報Ｘ，Ｖに基づき、モータをフィードバック制御する構成にされている。ここでは、フィードバック制御の具体的な態様についての説明を省略するが、制御部１０は、周知の手法で、モータＡ，Ｂ，Ｃの回転量及び回転速度を、フィードバック制御する構成にすることができる。
【００３６】
この制御部１０は、各種演算処理を行うＣＰＵ１１、ＣＰＵ１１が実行するプログラムを記憶するＲＯＭ１３、及び、プログラム実行時に作業領域として使用されるＲＡＭ１５を有し、ＣＰＵ１１にてＲＯＭ１３が記憶するプログラムを実行することにより、各モータＡ，Ｂ，Ｃに対する操作量を算出し、これを対応するモータＡ，Ｂ，Ｃのモータ駆動回路２５に設定して、モータ制御を実現する。
【００３７】
具体的に、本実施例の制御システム１は、各モータＡ，Ｂ，ＣをＰＷＭ制御する構成にされており、制御部１０は、操作量として、ＰＷＭ値を、モータ駆動回路２５に設定する。換言すると、本実施例では、モータ駆動回路２５が、設定された操作量（ＰＷＭ値）に対応したデューティー比で、モータＡ，Ｂ，Ｃをオン／オフすることにより、モータの回転量及び回転速度が、操作量に対応した量に調整され、モータ制御が実現される。
【００３８】
そして、このような制御により回転するモータＡ，Ｂ，Ｃの回転量Ｘ及び回転速度Ｖは、上述したように、対応するエンコーダ２１及びエンコーダ信号処理回路２３を通じて検出される。制御部１０では、この検出値に基づき、新たな操作量が演算され、これがモータ駆動回路２５に設定される。本実施例の制御システム１では、このような動作によって、各モータＡ，Ｂ，Ｃについてのモータ制御が実現される。
【００３９】
ここで、制御システム１にて実現されるモータ制御について、更に具体的に説明すると、本実施例では、タイマ２７から制御部１０に対し周期的に割込み信号Ｉｒを入力する。そして、制御部１０に、割込み信号Ｉｒが入力される度、制御周期の到来したモータを検出させて、制御周期の到来したモータ毎に、制御量（エンコーダ信号処理回路２３にて算出された回転量Ｘ，回転速度Ｖ）の取得動作、及び、モータ駆動回路２５に対する操作量の設定動作を、実行させる。
【００４０】
また、本実施例では、このようにして複数のモータＡ，Ｂ，Ｃを制御するに先駆け、設計段階で、タイマ２７から入力する割込み信号の入力周期Ｔｓと、各モータＡ，Ｂ，Ｃの制御周期とを、次のようにして定める。図４は、割込み信号Ｉｒの入力周期Ｔｓ、モータＡの制御周期Ｔｓ１、モータＢの制御周期Ｔｓ２、及び、モータＣの制御周期Ｔｓ３の設定手順を示した説明図である。
【００４１】
周期Ｔｓ，Ｔｓ１，Ｔｓ２，Ｔｓ３を設定するに当っては、図４に示すように、各モータＡ，Ｂ，Ｃの最適な制御周期Ｔｒ＿Ａ，Ｔｒ＿Ｂ，Ｔｒ＿Ｃの最大公約数Ｔｍを導出し（手順［１］）、導出した最大公約数Ｔｍを、割込み信号の入力周期Ｔｓに決定する（手順［２］）。尚、最適な制御周期Ｔｒ＿Ａ，Ｔｒ＿Ｂ，Ｔｒ＿Ｃは、制御システム１に設定されるべき制御周期の理想値であり、設計者が試験や卓上計算により定めることができる。但し、ここでは、最大公約数Ｔｍといった概念を用いるため、最大公約数Ｔｍの導出に当っては、制御周期Ｔｒ＿Ａ，Ｔｒ＿Ｂ，Ｔｒ＿Ｃを、整数値のスケールに置換して、最大公約数Ｔｍを導出する。
【００４２】
このようにして、最大公約数Ｔｍを導出し入力周期Ｔｓを決定すると、入力周期Ｔｓは、最適な制御周期が最小のモータＡの当該制御周期Ｔｒ＿Ａの整数（Ｎ）分の一となる。但し、本実施例では、モータＡの最適な制御周期Ｔｒ＿Ａ、モータＢの最適な制御周期Ｔ
ｒ＿Ｂ、モータＣの最適な制御周期Ｔｒ＿Ｃが、Ｔｒ＿Ａ≦Ｔｒ＿Ｂ≦Ｔｒ＿Ｃの関係を有しているものとする。
【００４３】
Ｔｓ＝Ｔｒ＿Ａ／Ｎ
ここで、モータＢ，Ｃの最適な制御周期Ｔｒ＿Ｂ，Ｔｒ＿Ｃが、制御周期Ｔｒ＿Ａの整数倍である場合には、パラメータＮは、値１（Ｎ＝１）に設定されることになる。しかしながら、３以上のモータを制御するシステムを構築する場合に、モータＢ，Ｃの最適な制御周期が、モータＡの最適な制御周期Ｔｒ＿Ａの整数倍となることはまれであるので、入力周期Ｔｓは、一般的に、制御周期Ｔｒ＿Ａの整数分の一であって、二分の一以下に設定されることになる。本実施例においては、この点が、割込み信号の入力周期Ｔｓを、最適な制御周期が最小のモータＡの当該制御周期Ｔｒ＿Ａに設定する従来技術と異なる点である。
【００４４】
本実施例では、このようにして、入力周期Ｔｓを決定した後、決定した入力周期Ｔｓを基準として、その整数倍に、モータＡ，Ｂ，Ｃの制御周期Ｔｓ１，Ｔｓ２，Ｔｓ３を定める。
【００４５】
具体的には、モータＡの制御周期Ｔｓ１を、入力周期Ｔｓの（Ｔｒ＿Ａ／Ｔｓ）倍に決定し、モータＢの制御周期Ｔｓ２を、入力周期Ｔｓの（Ｔｒ＿Ｂ／Ｔｓ）倍に決定し、モータＣの制御周期Ｔｓ３を、入力周期Ｔｓの（Ｔｒ＿Ｃ／Ｔｓ）倍に決定する（手順［３］）。
【００４６】
また、手順［３］の終了後には、これらの決定内容に従って、割込み信号の入力周期Ｔｓ、モータＡの制御周期Ｔｓ１、モータＢの制御周期Ｔｓ２、モータＣの制御周期Ｔｓ３を設定してなる制御システム１を構成する（手順［４］）。
【００４７】
例えば、モータＡの最適な制御周期Ｔｒ＿Ａに対し、モータＢの最適な制御周期Ｔｒ＿Ｂが（４・Ｔｒ＿Ａ／３）であり、モータＣの最適な制御周期Ｔｒ＿Ｃが（５・Ｔｒ＿Ａ／３）である場合には、割込み信号の入力周期をＴｓ＝Ｔｒ＿Ａ／３に設定し、モータＡの制御周期をＴｓ１＝３・Ｔｓに設定し、モータＢの制御周期をＴｓ２＝４・Ｔｓに設定し、モータＣの制御周期をＴｓ３＝５・Ｔｓに設定する。
【００４８】
図５（ａ）は、上記のように周期Ｔｓ，Ｔｓ１，Ｔｓ２，Ｔｓ３を設定した際に、制御部１０で算出される、モータＡに対する操作量Ｕ１の演算期間Ｔ＿ａ、モータＢに対する操作量Ｕ２の演算期間Ｔ＿ｂ、モータＣに対する操作量Ｕ３の演算期間Ｔ＿ｃ、のパターンを、時間軸に沿って記したタイムチャートである。上記のように周期Ｔｓ，Ｔｓ１，Ｔｓ２，Ｔｓ３が設定された場合、本実施例の制御システム１では、制御部１０が、初回の割込みを０回目として、割込み回数ＣＮＴが３の倍数になる度、モータＡに対する操作量を演算し、割込み回数ＣＮＴが４の倍数となる度、モータＢに対する操作量を演算し、割込み回数ＣＮＴが５の倍数となる度、モータＣに対する操作量を演算することになる。
【００４９】
但し、本実施例では、従来装置とは異なり、操作量の演算後に操作量を設定するのではなく、操作量を演算する前に、入出力処理（図６及び図７参照）を実行して、前もって算出したモータの操作量をモータ駆動回路２５に設定する。図５（ｂ）は、図５（ａ）に示す各モータの操作量の演算期間に、入出力処理の実行期間Ｔ＿ｉｏを組み込んだ実際の制御部１０の動作態様を示したタイムチャートであり、各処理の実行期間Ｔ＿ｉｏ，Ｔ＿ａ，Ｔ＿ｂ，Ｔ＿ｃのパターンを記したタイムチャートである。
【００５０】
即ち、本実施例では、周期Ｔｓでタイマ２７から割込み信号Ｉｒが入力される度、制御部１０が、ＣＰＵ１１にて、図６及び図７に示す入出力処理を、割込み処理（例外処理）
として実行することにより、操作量の演算動作に優先した操作量の設定動作が実現される。図６及び図７は、制御部１０が実行する入出力処理を表すフローチャートである。
【００５１】
制御部１０は、図６に示す入出力処理を開始すると、まず、制御周期がＴｓ１＝Ｍ１・ＴｓのモータＡについて、モータＡの制御周期が到来したか否かを判断するため、割込み回数ＣＮＴを値Ｍ１で除算し、余りＲを算出する（Ｓ１１０）。尚、制御部１０は、割込み回数ＣＮＴの初期値をゼロとして、割込み信号Ｉｒが入力される度、Ｓ３１０で割込み回数ＣＮＴをカウントアップし、初回割込みを０回目とした割込み回数ＣＮＴをＲＡＭ１５に記憶する構成にされている。
【００５２】
そして、余りＲの算出後には、Ｓ１２０に移行し、余りＲが値ゼロであるか否かを判断することにより、モータＡの制御周期が到来したか否かを判断する。
例えば、制御周期Ｔｓ１＝３・Ｔｓである場合には、割込み回数ＣＮＴを３で除算して余りＲを算出し、余りＲがゼロであるか否かを判断することにより、割込み回数ＣＮＴが３の倍数であるか否かを判断する。そして、余りＲがゼロである場合には、割込み回数ＣＮＴが３の倍数であり、制御周期が到来したと判断して（Ｓ１２０でＹｅｓ）、Ｓ１３０に移行する。一方、余りＲがゼロではない場合には、制御周期が到来していないと判断して（Ｓ１２０でＮｏ）、Ｓ１６０に移行する。
【００５３】
また、Ｓ１６０に移行すると、制御部１０は、ＲＡＭ１５に記憶するモータＡの処理開始フラグＦＧ＿Ａをゼロにリセットし（ＦＧ＿Ａ＝０）、その後、Ｓ１７０に移行する。
一方、Ｓ１３０に移行すると、制御部１０は、ＲＡＭ１５に記憶されたモータＡに対する操作量Ｕ１を、ＲＡＭ１５から読み出し、これをモータＡのモータ駆動回路２５ａに設定する。
【００５４】
尚、本実施例の制御システム１は、モータ制御に先立って、制御部１０により初期化処理を実行し、モータＡに対する操作量Ｕ１、モータＢに対する操作量Ｕ２、モータＣに対する操作量Ｕ３として、初期値ゼロを設定し、これをＲＡＭ１５に記憶する構成にされている。
【００５５】
従って、制御部１０は、初回のＳ１３０の実行時、モータ駆動回路２５ａに対して操作量ゼロを設定することになる。一方、本実施例において、ＲＡＭ１５が記憶する操作量Ｕ１は、モータ制御の実行過程で、逐次更新される。従って、２回目以降については、更新された操作量Ｕ１が、制御部１０の動作により、モータ駆動回路２５ａに設定されることになる。
【００５６】
Ｓ１３０で、操作量としてゼロより大きい値がモータ駆動回路２５ａに設定された場合、モータ駆動回路２５ａは、操作量に対応するデューティー比でモータＡをオン／オフして、モータＡを駆動する。一方、操作量として値ゼロが設定された場合、モータ駆動回路２５ａは、実質的に、モータＡを駆動することなく、操作量が更新されるまで待機する。
【００５７】
Ｓ１３０での処理を終えると、制御部１０は、Ｓ１４０に移行し、モータＡのエンコーダ信号処理回路２３ａから、エンコーダ信号処理回路２３ａが保持するモータＡの回転量Ｘ及び回転速度Ｖを取得し、これをＲＡＭ１５に記憶する。尚、エンコーダ信号処理回路２３ａにて算出されるモータＡの回転量Ｘ及び回転速度Ｖを、以下では、回転量Ｘ１及び回転速度Ｖ１と表記する。
【００５８】
また、Ｓ１４０での処理を終えると、制御部１０は、Ｓ１５０に移行し、モータＡの処
理開始フラグＦＧ＿Ａを値１にセットする（ＦＧ＿Ａ＝１）。その後、Ｓ１７０に移行する。
【００５９】
また、Ｓ１７０に移行すると、制御部１０は、制御周期がＴｓ２＝Ｍ２・ＴｓのモータＢについて、Ｓ１１０の処理と同様の処理を実行する。即ち、制御部１０は、モータＢの制御周期が到来したか否かを判断するために、割込み回数ＣＮＴを値Ｍ２で除算し、余りＲを算出する（Ｓ１７０）。そして、余りＲの算出後には、Ｓ１８０に移行し、余りＲが値ゼロであるか否かを判断することにより、モータＢの制御周期が到来したか否かを判断する。
【００６０】
例えば、制御周期Ｔｓ２＝４・Ｔｓである場合には、割込み回数ＣＮＴを４で除算して余りＲを算出し、余りＲがゼロであるか否かを判断することにより、割込み回数ＣＮＴが４の倍数であるか否かを判断する。そして、余りＲがゼロである場合には、割込み回数ＣＮＴが４の倍数であり、モータＢの制御周期が到来したと判断して（Ｓ１８０でＹｅｓ）、Ｓ１９０に移行する。一方、余りＲがゼロではない場合には、制御周期が到来していないと判断して（Ｓ１８０でＮｏ）、Ｓ２２０に移行する。
【００６１】
また、Ｓ２２０に移行すると、制御部１０は、ＲＡＭ１５に記憶するモータＢの処理開始フラグＦＧ＿Ｂをゼロにリセットし（ＦＧ＿Ｂ＝０）、その後、Ｓ２３０に移行する。一方、Ｓ１９０に移行すると、制御部１０は、ＲＡＭ１５に記憶されたモータＢに対する操作量Ｕ２を、ＲＡＭ１５から読み出し、これをモータＢのモータ駆動回路２５ｂに設定する。
【００６２】
具体的に、制御部１０は、初回のＳ１９０の実行時、モータ駆動回路２５ｂに対して操作量ゼロを設定する。一方、ＲＡＭ１５が記憶する操作量Ｕ２については、モータ制御の実行過程で逐次更新されるので、２回目以降では、更新された操作量Ｕ２を、モータ駆動回路２５ｂに設定する。
【００６３】
Ｓ１９０で、操作量としてゼロより大きい値がモータ駆動回路２５ｂに設定された場合、モータ駆動回路２５ｂは、操作量に対応するデューティー比でモータＢをオン／オフして、モータＢを駆動する。一方、操作量として値ゼロが設定された場合、モータ駆動回路２５ｂは、実質的に、モータＢを駆動することなく、操作量が更新されるまで待機する。
【００６４】
Ｓ１９０での処理を終えると、制御部１０は、Ｓ２００に移行し、モータＢのエンコーダ信号処理回路２３ｂから、エンコーダ信号処理回路２３ｂが保持するモータＢの回転量Ｘ及び回転速度Ｖを取得し、これをＲＡＭ１５に書き込む。尚、エンコーダ信号処理回路２３ｂにて算出されるモータＢの回転量Ｘ及び回転速度Ｖを、以下では、回転量Ｘ２及び回転速度Ｖ２と表記する。
【００６５】
また、Ｓ２００での処理を終えると、制御部１０は、Ｓ２１０に移行し、モータＢの処理開始フラグＦＧ＿Ｂを値１にセットする（ＦＧ＿Ｂ＝１）。その後、Ｓ２３０に移行する。
【００６６】
また、Ｓ２３０に移行すると、制御部１０は、制御周期がＴｓ３＝Ｍ３・ＴｓのモータＣについて、Ｓ１１０の処理と同様の処理を実行する。即ち、制御部１０は、モータＣの制御周期が到来したか否かを判断するために、割込み回数ＣＮＴを値Ｍ３で除算し、余りＲを算出する（Ｓ２３０）。そして、余りＲの算出後には、Ｓ２４０に移行し、余りＲが値ゼロであるか否かを判断することにより、モータＣの制御周期が到来したか否かを判断する。
【００６７】
例えば、制御周期Ｔｓ３＝５・Ｔｓである場合には、割込み回数ＣＮＴを５で除算して余りＲを算出し、余りＲがゼロであるか否かを判断することにより、割込み回数ＣＮＴが５の倍数であるか否かを判断する。そして、余りＲがゼロである場合には、割込み回数ＣＮＴが５の倍数であり、モータＣの制御周期が到来したと判断して（Ｓ２４０でＹｅｓ）、Ｓ２５０に移行する。一方、余りＲがゼロではない場合には、制御周期が到来していないと判断して（Ｓ２４０でＮｏ）、Ｓ２８０に移行する。
【００６８】
また、Ｓ２８０に移行すると、制御部１０は、ＲＡＭ１５に記憶するモータＣの処理開始フラグＦＧ＿Ｃをゼロにリセットし（ＦＧ＿Ｃ＝０）、その後、Ｓ２９０に移行する。一方、Ｓ２５０に移行すると、制御部１０は、ＲＡＭ１５に記憶されたモータＣに対する操作量Ｕ３を、ＲＡＭ１５から読み出し、これをモータＣのモータ駆動回路２５ｃに設定する。
【００６９】
具体的に、制御部１０は、初回のＳ２５０の実行時、モータ駆動回路２５ｃに対して操作量ゼロを設定する。一方、ＲＡＭ１５が記憶する操作量Ｕ３については、モータ制御の実行過程で、更新されるので、２回目以降については、更新された操作量Ｕ３を、モータ駆動回路２５ｃに設定する。
【００７０】
Ｓ２５０で、操作量としてゼロより大きい値がモータ駆動回路２５ｃに設定された場合、モータ駆動回路２５ｃは、操作量に対応するデューティー比でモータＣをオン／オフして、モータＣを駆動する。一方、操作量として値ゼロが設定された場合、モータ駆動回路２５ｃは、実質的に、モータＣを駆動することなく、操作量が更新されるまで待機する。
【００７１】
Ｓ２５０での処理を終えると、制御部１０は、Ｓ２６０に移行し、モータＣのエンコーダ信号処理回路２３ｃから、エンコーダ信号処理回路２３ｃが保持するモータＣの回転量Ｘ及び回転速度Ｖを取得し、これをＲＡＭ１５に書き込む。尚、エンコーダ信号処理回路２３ｃにて算出されるモータＣの回転量Ｘ及び回転速度Ｖを、以下では、回転量Ｘ３及び回転速度Ｖ３と表記する。
【００７２】
また、Ｓ２６０での処理を終えると、制御部１０は、Ｓ２７０に移行し、モータＣの処理開始フラグＦＧ＿Ｃを値１にセットする（ＦＧ＿Ｃ＝１）。その後、Ｓ２９０に移行する。
【００７３】
また、Ｓ２９０に移行すると、制御部１０は、上述の処理にて、処理開始フラグＦＧ＿Ａ，ＦＧ＿Ｂ，ＦＧ＿Ｃのいずれかがセットされた（値１に設定された）か否かを判断し、処理開始フラグＦＧ＿Ａ，ＦＧ＿Ｂ，ＦＧ＿Ｃのいずれかがセットされた（値１に設定された）と判断すると（Ｓ２９０でＹｅｓ）、Ｓ３００に移行し、実行待ちキューに、操作量演算処理タスク（詳細後述。図８参照）を登録する。
【００７４】
尚、制御部１０は、割込み信号を受けて例外処理（入出力処理等）を実行するとき以外は、基本的に、実行待ちキューに登録されたタスクを、登録順に実行する構成にされている。また、割込み信号を受けて例外処理を実行する場合には、実行中のタスクを一旦中断して、例外処理を優先的に実行した後、中断したタスクを再開する構成にされている。
【００７５】
Ｓ３００での処理を終えると、制御部１０は、Ｓ３１０に移行する。一方、Ｓ２９０で、処理開始フラグＦＧ＿Ａ，ＦＧ＿Ｂ，ＦＧ＿Ｃが全てリセットされている（値０に設定されている）と判断すると（Ｓ２９０でＮｏ）、Ｓ３００の処理を実行することなく、Ｓ３１０に移行する。
【００７６】
また、Ｓ３１０に移行すると、制御部１０は、割込み回数ＣＮＴを１加算した値に更新
し（ＣＮＴ←ＣＮＴ＋１）、その後、割込み回数ＣＮＴが値Ｍ１，Ｍ２，Ｍ３の最小公倍数であるか否かを判断する（Ｓ３２０）。尚、本実施例では、割込み信号の入力周期Ｔｓが上述のように設定される関係上、Ｍ１，Ｍ２，Ｍ３に１以外の公約数は存在しないので、ここでは、具体的に、割込み回数ＣＮＴが、Ｍ１・Ｍ２・Ｍ３であるか否かを判断する。
【００７７】
そして、制御部１０は、割込み回数ＣＮＴが値Ｍ１，Ｍ２，Ｍ３の最小公倍数であると判断すると（Ｓ３２０でＹｅｓ）、Ｓ３３０に移行し、割込み回数ＣＮＴを値ゼロに更新した後、当該入出処理を終了する。一方、割込み回数ＣＮＴが値Ｍ１，Ｍ２，Ｍ３の最小公倍数ではないと判断すると（Ｓ３２０でＮｏ）、Ｓ３３０の処理を実行することなく、当該入出力処理を終了する。
【００７８】
以上に、入出力処理の手順を説明したが、制御部１０は、上記入出力処理を、割込み信号Ｉｒがタイマ２７から入力される度、他のタスクに優先して実行する。従って、本実施例の制御システム１においては、図５（ｂ）に示すように、周期Ｔｓ毎に、制御量の取得動作及び操作量の設定動作が遅延なく実行されることになる。
【００７９】
この他、本実施例の制御システム１では、制御周期の到来したモータが存在する場合、上述したように、入出力処理にて、操作量演算処理タスクを、実行待ちキューに登録するので、この入出力処理の実行後には、制御部１０にて、操作量演算処理タスクが実行されることになる。図８は、制御部１０のＣＰＵ１１により実行される操作量演算処理タスクの処理手順を表すフローチャートである。
【００８０】
操作量演算処理タスクを開始すると、制御部１０は、まず、入出力処理にて設定された処理開始フラグＦＧ＿Ａの値を、ローカルフラグＦＬ＿Ａに設定すると共に、処理開始フラグＦＧ＿Ｂの値を、ローカルフラグＦＬ＿Ｂに設定し、更に、処理開始フラグＦＧ＿Ｃの値を、ローカルフラグＦＬ＿Ｃに設定する（Ｓ４１０）。
【００８１】
その後、Ｓ４２０に移行して、フラグＦＬ＿Ａが値１に設定されているか否かを判断し、フラグＦＬ＿Ａが値１に設定されていると判断すると（Ｓ４２０でＹｅｓ）、モータＡの制御周期が到来しているとして、Ｓ４３０に移行し、入出力処理にてエンコーダ信号処理回路２３ａから読み出されたモータＡの回転量Ｘ１及び回転速度Ｖ１の情報に基づき、目標回転量及び目標回転速度に対応したモータＡに対する操作量Ｕ１を算出する。そして、算出した操作量Ｕ１を、ＲＡＭ１５に記録する（Ｓ４３５）。その後、Ｓ４４０に移行する。
【００８２】
一方、Ｓ４２０で、フラグＦＬ＿Ａが値ゼロに設定されていると判断すると（Ｓ４２０でＮｏ）、制御部１０は、Ｓ４３０,Ｓ４３５の処理を実行することなく、Ｓ４４０に移行する。
【００８３】
また、Ｓ４４０に移行すると、制御部１０は、フラグＦＬ＿Ｂが値１に設定されているか否かを判断し、フラグＦＬ＿Ｂが値１に設定されていると判断すると（Ｓ４４０でＹｅｓ）、モータＢの制御周期が到来しているとして、Ｓ４５０に移行し、上記入出力処理でエンコーダ信号処理回路２３ｂから読み出されたモータＢの回転量Ｘ２及び回転速度Ｖ２の情報に基づき、目標回転量及び目標回転速度に対応したモータＢに対する操作量Ｕ２を算出する。そして、算出した操作量Ｕ２を、ＲＡＭ１５に記録する（Ｓ４５５）。その後、Ｓ４６０に移行する。
【００８４】
一方、Ｓ４４０で、フラグＦＬ＿Ｂが値ゼロに設定されていると判断すると（Ｓ４４０でＮｏ）、制御部１０は、Ｓ４５０,Ｓ４５５の処理を実行することなく、Ｓ４６０に移
行する。
【００８５】
また、Ｓ４６０に移行すると、制御部１０は、フラグＦＬ＿Ｃが値１に設定されているか否かを判断し、フラグＦＬ＿Ｃが値１に設定されていると判断すると（Ｓ４６０でＹｅｓ）、モータＣの制御周期が到来しているとして、Ｓ４７０に移行し、上記入出力処理でエンコーダ信号処理回路２３ｃから読み出されたモータＣの回転量Ｘ３及び回転速度Ｖ３の情報に基づき、目標回転量及び目標回転速度に対応したモータＣに対する操作量Ｕ３を算出する。そして、算出した操作量Ｕ３を、ＲＡＭ１５に記録する（Ｓ４７５）。その後、当該操作量演算処理タスクを終了する。
【００８６】
一方、Ｓ４６０で、フラグＦＬ＿Ｃが値ゼロに設定されていると判断すると（Ｓ４６０でＮｏ）、制御部１０は、Ｓ４７０，Ｓ４７５の処理を実行することなく、当該操作量演算処理タスクを終了する。
【００８７】
以上、本実施例の制御システム１の構成及び動作について説明したが、本実施例の制御システム１では、上述したように、割込み信号Ｉｒが制御部１０に入力されて、入出力処理が制御部１０にて実行されたときに、操作量演算処理タスクが、実行待ちキューに登録され、この入出力処理の実行後に、実行される。
【００８８】
具体的に、本実施例では、モータＡの制御周期がＴｓ１＝３・Ｔｓに設定され、モータＢの制御周期がＴｓ２＝４・Ｔｓに設定され、モータＣの制御周期がＴｓ３＝５・Ｔｓに設定されている場合、図５（ｂ）に示すパターンで、制御部１０が、入出力処理及び操作量演算処理タスクを実行する。尚、操作量演算処理タスクの実行期間は、図５（ｂ）において、操作量の演算期間Ｔ＿ａ，Ｔ＿ｂ，Ｔ＿ｃのひとまとまりに対応する。
【００８９】
このように、本実施例では、制御周期の到来時に、次の制御周期の到来時に設定すべき操作量を予め算出して、ＲＡＭ１５に記録し、割込み信号Ｉｒが入力されたとき、優先的に入出力処理を実行して、制御量を取得すると共に、ＲＡＭ１５に記録しておいた操作量をモータ駆動回路２５に設定する。従って、この制御システム１によれば、操作量の演算時間の揺動が、制御量の取得動作及び操作量の設定動作の実行時期に影響を与えることがなく、安定的に、一定周期で、制御量の取得動作及び操作量の設定動作を実行することができる。よって、本実施例によれば、各モータＡ，Ｂ，Ｃを、単一の制御部１０にて精度よく制御することができる。
【００９０】
この点について、図９を用いて具体的に説明する。図９（ａ）は、本実施例の制御システム１における入出力処理の実行期間Ｔ＿ｉｏ、操作量Ｕ１の演算期間Ｔ＿ａ、操作量Ｕ２の演算期間Ｔ＿ｂの例を、横軸を時間軸として記したものである。一方、図９（ｂ）は、従来の制御システムにおいて、制御部が算出するモータＡに対する操作量Ｕ１の演算期間Ｔ＿ａ、モータＢに対する操作量Ｕ２の演算期間Ｔ＿ｂ、及び、制御量の取得期間Ｔ＿ｉ及び操作量の設定期間Ｔ＿ｏの例を、横軸を時間軸として記したものである。
【００９１】
図９（ｂ）に示すように、従来システムでは、割込み信号が入力されると、制御部が、まず、モータＡの制御量を取得して（期間Ｔ＿ｉ）、その後、モータＡの操作量を算出し（期間Ｔ＿ａ）、ここで算出した操作量をモータ駆動回路２５ａに設定し（期間Ｔ＿ｏ）、更に、制御周期の到来したモータが複数ある場合には、次のモータＢの制御量を取得し（期間Ｔ＿ｉ）、その後、モータＢの操作量を算出し（期間Ｔ＿ｂ）、その後、算出した操作量をモータ駆動回路２５ｂに設定する（期間Ｔ＿ｏ）。
【００９２】
従って、従来システムでは、例えば、モータＡについての操作量Ｕ１の演算が通常（図９（ｂ）上段）よりも遅れると（図９（ｂ）下段）、操作量Ｕ１の設定動作が遅れるばか
りでなく、後続のモータＢについての制御量の取得動作及び操作量Ｕ２の設定動作までもが遅れ、各モータについての制御量の取得動作及び操作量の設定動作を一定周期Ｔｓで、正確に実行することができない。特に、制御周期が到来したモータが、多数ある場合には、優先順位の低いモータについての制御量の取得動作及び操作量の設定動作の実行時期が、優先順位の高いモータについての操作量演算動作の延長によって、累積的に大きく変化する。従って、優先順位の低いモータについての制御性能は、従来システムの場合、大きく劣化する。
【００９３】
一方、本実施例の制御システム１では、図９（ａ）に示すように、割込み信号が入力される度、制御量の取得動作及び操作量の設定動作（Ｔ＿ｉｏ）を、操作量の演算動作（Ｔ＿ａ，Ｔ＿ｂ）に優先して実行するので、この制御システム１によれば、操作量の演算時間が通常（図９（ａ）上段）より延びても（図９（ａ）下段）、制御量の取得動作及び操作量の設定動作の実行周期を、一定に保つことができる。また、制御周期の到来したモータが複数ある場合でも、全モータの操作量の演算動作に先駆けて、入出力処理（Ｔ＿ｉｏ）を実行するので、他のモータの演算時間の延長により、各モータの制御量の取得動作及び操作量の設定動作の実行周期が揺動することがない。
【００９４】
従って、本実施例の制御システム１によれば、従来よりも精度よく、各モータの制御量の取得動作及び操作量の設定動作を、周期的に実行することができ、結果として、各モータを高精度に制御することができるのである。
【００９５】
また、本実施例では、操作量Ｕ１，Ｕ２，Ｕ３の算出に、通常より時間がかかり、次の割込み信号の入力時刻までに、操作量演算処理タスクが終了しない場合、実行中の操作量演算処理タスクを中断して、入出力処理を優先的に実行するようにした。従って、本実施例の制御システム１によれば、このような場合でも、操作量の演算時間の延びが、制御量の取得動作及び操作量の設定動作の実行時期に影響を与えることがなく、安定的に、一定周期で、制御量の取得動作及び操作量の設定動作を実行することができる。
【００９６】
図１０は、次の割込み信号の入力時刻までに、操作量演算処理タスクが終了しない場合の例を、横軸を時間軸とし、時間軸に沿って各処理の実行期間Ｔ＿ｉｏ，Ｔ＿ａ，Ｔ＿ｂ，Ｔ＿ｃを示して、記したものである。
【００９７】
本実施例では、このような場合でも、図１０下段に示すように、入出力処理を優先して実行することにより、制御量の取得動作及び操作量の設定動作を、時間Ｔｓで周期的に実行する。また、本実施例では、操作量を時間Ｔｓ内に算出することができない場合でも、入出力処理の終了後、図１０下段に示すように、操作量演算処理タスクを中断地点から再開する。
【００９８】
従って、本実施例の制御システム１によれば、操作量の演算が長引いた場合でも、次回の制御周期の到来時までに、各モータの操作量Ｕ１，Ｕ２，Ｕ３を算出することができ、結果として、各モータＡ，Ｂ，Ｃを高精度に制御することができる。
【００９９】
尚、図１０に示す例では、モータＣに対する操作量Ｕ３の演算が開始された後、割込み信号が入力されるので、制御部１０は、この割込み信号の入力を契機として、操作量演算処理タスクを中断し、入出力処理を実行し終了した後、演算途中の操作量Ｕ３の中断した演算ステップから処理を再開して、操作量Ｕ３を算出することになる。
【０１００】
また、入出力処理にて、他の操作量演算処理タスクが実行待ちキューに登録された場合、制御部１０は、中断した操作量演算処理タスクを終えた後、上記実行待ちキューに登録された他の操作量演算処理タスクを、新たに実行することになる。よって、本実施例によ
れば、時間Ｔｓ内に操作量を算出することができない場合であっても、各モータＡ，Ｂ，Ｃを高精度に制御することができる。
【０１０１】
また、本実施例では、上述した手法で、各モータの制御量取得動作及び操作量設定動作を一定周期Ｔｓで実行可能としつつ、当該周期Ｔｓを、各モータの最適な制御周期の最大公約数に設定することで、従来手法よりも、各モータの制御周期を適切に設定することができるようにし、単一の制御部１０（ＣＰＵ１１）でも、プログラムにより、高精度にモータ制御を実現できるようにした。従って、本実施例では、安価で、高性能な制御システムを構築することができる。
【０１０２】
以上、本発明の実施例について説明したが、本発明のモータ駆動手段は、本実施例において、制御対象のモータＡ，Ｂ，Ｃの夫々に設けられたモータ駆動回路２５に相当し、回転量検出手段は、制御対象のモータＡ，Ｂ，Ｃの夫々に設けられたエンコーダ２１及びエンコーダ信号処理回路２３に相当する。また、操作量設定手段は、本実施例において、タイマ２７及び制御部１０が実行する入出力処理及び操作量演算処理タスクにより実現されている。また、本発明の処理実行周期は、割込み信号Ｉｒの入力周期Ｔｓに対応し、処理実行時刻は、割込み信号Ｉｒの入力時刻に対応する。また、計時手段は、制御部１０が実行する入出力処理のＳ３１０の処理により実現され、操作量記憶手段は、ＲＡＭ１５に対応する。
【０１０３】
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、合計３個のモータを制御する制御システム１を例に挙げて説明したが、本発明は、モータが２個又は４個以上の制御システムにも適用することができる。また、上記実施例では、割込み回数ＣＮＴが、値Ｍ１，Ｍ２，Ｍ３の最小公倍数となる度に、Ｓ３３０にて、割込み回数ＣＮＴをゼロにリセットするようにしたが、上記実施例の制御システム１は、Ｓ３３０の処理を実行しない構成にされても、当然のことながら、構わない。
【図面の簡単な説明】
【０１０４】
【図１】制御システム１の構成を表すブロック図である。
【図２】印字機構１００の構成を表す概略断面図である。
【図３】印字機構１００を駆動するモータ１０５，１１５，１２９の動作例を示した説明図である。
【図４】割込み信号Ｉｒの入力周期Ｔｓ及び各モータの制御周期Ｔｓ１，Ｔｓ２，Ｔｓ３の設定手順を示した説明図である。
【図５】制御量の取得及び操作量の設定期間（Ｔ＿ｉｏ）並びに各モータＡ，Ｂ，Ｃに対する操作量の演算期間（Ｔ＿ａ，Ｔ＿ｂ，Ｔ＿ｃ）を表したタイムチャートである。
【図６】制御部１０が実行する入出力処理を表すフローチャートである。
【図７】制御部１０が実行する入出力処理を表すフローチャートである。
【図８】操作量演算処理タスクの処理手順を表すフローチャートである。
【図９】操作量の演算時間の揺動と、制御量の取得時期及び操作量の設定時期と、の関係を表す説明図である。
【図１０】割込み信号の入力時刻までに、操作量演算処理タスクが終了しない場合の後処理の例を示した説明図である。
【図１１】従来のモータ制御方法に関する説明図である。
【符号の説明】
【０１０５】
１…制御システム、１０…制御部、１１…ＣＰＵ、１３…ＲＯＭ、１５…ＲＡＭ、２１…エンコーダ、２３…エンコーダ信号処理回路、２５…モータ駆動回路、２７…タイマ、１００…印字機構、１０３…キャリッジ、１０５…ＣＲモータ、１１３…給紙ローラ、１１
５…ＡＣＦモータ、１２３…用紙搬送ローラ、１２７…排紙ローラ、１２９…ＬＦモータ
【図１】
2008253110.tif 000003
【図２】
2008253110.tif 000004
【図３】
2008253110.tif 000005
【図４】
2008253110.tif 000006
【図５】
2008253110.tif 000007
【図６】
2008253110.tif 000008
【図７】
2008253110.tif 000009
【図８】
2008253110.tif 000010
【図９】
2008253110.tif 000011
【図１０】
2008253110.tif 000012
【図１１】
2008253110.tif 000013