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