[図面の説明]
以下、適宜図面を参照して本発明の実施形態について説明する。ここに、図1は、本発明の実施形態に係る複合機1の外観構成を示す斜視図である。図2は、プリンタ部2の主要構成を示す部分拡大断面図である。図3は、プリンタ部2の主要構成を示す平面図であり、主としてプリンタ部2の略中央から装置背面側の構成が示されている。図4は、キャリッジ38の理想的な速度軌跡を示す図である。図5は、プリンタ部2の主制御部100の主要構成を示すブロック図である。図6は、モータ制御部107の構成を詳細に示すブロック図である。図7は、キャリッジ38の加速区間L01で用いられる速度プロファイルを特定するための関数f01(s)を示す座標図である。図8及び図9は、キャリッジ38の移動制御の手順の一例を示すフローチャートである。図10は、キャリッジ38の加速区間L01で用いられる速度プロファイルを特定するための関数f01(s)の変形例を示す座標図である。図11は、従来のフィードバック制御に用られる速度プロファイル201を示す座標図である。図12は、従来のモータ駆動制御装置において採用されている速度プロファイル204を示す図である。
[複合機1]
複合機1は、プリンタ部2とスキャナ部3とを一体的に備えた多機能装置(MFP:Multi Function Product)であり、プリント機能、スキャン機能、コピー機能、ファクシミリ機能等を有する。図1に示されるように、複合機1は概ね直方体に形成されており、その下部がプリンタ部2であり、上部がスキャナ部3である。
複合機1のプリンタ部2は、所定の印刷データに基づいて、記録用紙に画像や文書を記録するものである。プリンタ部2は、正面に開口9が形成されている。給紙トレイ20及び排紙トレイ21は、開口9の内側に上下2段に設けられている。給紙トレイ20に収容された記録用紙がプリンタ部2の内部へ給送されて、その記録用紙に所望の画像が記録される。その後、画像記録済みの記録用紙が排紙トレイ21へ排出される。
スキャナ部3は、所謂フラットベッドスキャナとして構成されている。複合機1の天板としての原稿カバー30がスキャナ部3の上部に開閉自在に設けられている。原稿カバー30の下側に、図示しないコンタクトガラス及び複数のCISが設けられている。複数のCISは、複合機1の奥行き方向(配列方向)へ一列に配列された状態で図示しないキャリッジに搭載されている。このキャリッジは、コンタクトガラスの裏面に沿って上記配列方向と直交する方向(移動方向)へ移動可能に構成されている。上記キャリッジが上記移動方向へ移動される過程において、コンタクトガラスに載置された原稿の画像がCISによって読み取られる。
図1に示されるように、複合機1の正面上部には、プリンタ部2やスキャナ部3を操作するための操作パネル4が設けられている。操作パネル4は、各種操作ボタンや液晶表示部から構成されている。複合機1は、操作パネル4からの操作指示に基づいて動作する。複合機1が外部のコンピュータに接続されている場合には、該コンピュータからプリンタドライバ又はスキャナドライバを介して送信される指示に基づいても複合機1が動作する。
[プリンタ部2]
図2に示されるように、複合機1の底側に給紙トレイ20が設けられている。給紙トレイ20の上側に給紙ローラ25が設けられている。プリンタ部2の図示しないフレームに基軸29が支持されている。この基軸29に給紙アーム26の基端が回動可能に支持されている。給紙ローラ25は、給紙アーム26の先端に回転可能に軸支されている。基軸29には、給紙ローラ25を回転駆動させるためのLFモータ95(図5参照)が連結されている。給紙アーム26には、基軸29から入力されたLFモータ95の回転駆動力を給紙ローラ25に伝達するギヤ駆動機構27が設けられている。LFモータ95の回転駆動力は、基軸29、ギヤ駆動機構27を介して給紙ローラ25に伝達される。これにより、給紙ローラ25が回転駆動される。
給紙ローラ25が給紙トレイ20上の記録用紙に圧接された状態で回転駆動されると、給紙ローラ25のローラ面と記録用紙との間の摩擦力により、最上位置の記録用紙が給紙トレイ20の奥側(図2の右側)へ送り出される。記録用紙は、その先端が傾斜板22に当接して上方へ案内される。傾斜板22から用紙搬送路23が延出されている。具体的には、用紙搬送路23は、傾斜板22から上方へ向けられ、そして、複合機1の正面側(図2の左側)へ曲げられてから、複合機1の背面側から正面側へと延ばされて、画像記録ユニット24の下部を通って、排紙トレイ21まで延設されている。したがって、給紙トレイ20に収容された記録用紙は、用紙搬送路23により下方から上方へUターンするように案内されて画像記録ユニット24に至り、画像記録ユニット24により画像記録が行われた後、排紙トレイ21に排出される。
図2に示されるように、用紙搬送路23には、画像記録ユニット24が配置されている。画像記録ユニット24は、インクジェット記録方式の記録ヘッド39と、この記録ヘッド39を搭載するキャリッジ38(本発明の被駆動体の一例)とを備えている。キャリッジ38は、記録用紙の搬送方向と直交する方向(図2の紙面に垂直な方向)へスライド可能に支持されている。
記録ヘッド39は、キャリッジ38の底面に配置されており、記録ヘッド39のノズルがキャリッジ38の下面に露出されている。複合機1の内部に配置されたインクカートリッジ(不図示)から各色のインクが記録ヘッド39へ供給される。キャリッジ38の下面に対向してプラテン42が設けられている。キャリッジ38が往復移動される間に、記録ヘッド39のノズルから各色インクが微小なインク滴として選択的に吐出されると、プラテン42上を搬送される記録用紙に画像が記録される。
図3に示されるように、用紙搬送路23の上側において一対のガイドレール43,44が配置されている。これらガイドレール43,44は、記録用紙の搬送方向(図3の上側から下側方向)に所定距離を隔てられて対向しており、且つ記録用紙の搬送方向と直交する方向(図3の左右方向)に延設されている。ガイドレール43,44は、プリンタ部2の筐体内に設けられ、プリンタ部2を構成するフレームの一部を構成している。
ガイドレール43は、記録用紙の搬送方向上流側に配設されている。このガイドレール43は、用紙搬送路23の幅方向(図3の左右方向)の長さがキャリッジ38の往復移動範囲より長い平板状のものである。また、ガイドレール44は、記録用紙の搬送方向下流側に配設されている。このガイドレール44は、用紙搬送路23の幅方向の長さがガイドレール43とほぼ同じ長さの平板状のものである。キャリッジ38は、各ガイドレール43,44を跨ぐようにして配設されている。具体的には、キャリッジ38の搬送方向上流側の端部がガイドレール43に載置され、キャリッジ38の搬送方向下流側の端部がガイドレール44に載置されており、各ガイドレール43,44の延出方向に摺動可能に配設されている。
ガイドレール44の搬送方向上流側の縁部45は、上方へ向かって略直角に曲折されている。ガイドレール43,44に担持されたキャリッジ38は、縁部45をローラ対等の挟持部材により摺動可能に挟持している。これにより、キャリッジ38は、記録用紙の搬送方向に対して位置決めされ、且つ、記録用紙の搬送方向と直交する方向に摺動することができる。つまり、キャリッジ38は、ガイドレール43,44上に摺動自在に担持され、ガイドレール44の縁部45を基準として、記録用紙の搬送方向と直交する方向へ往復移動する。
図3に示されるように、ガイドレール44の上面には、ベルト駆動機構46が配設されている。ベルト駆動機構46は、駆動プーリ47と、従動プーリ48と、無端環状のベルト49とを有する。
駆動プーリ47及び従動プーリ48は、用紙搬送路23の幅方向の両端付近にそれぞれ設けられている。駆動プーリ47と従動プーリ48との間に、無端環状のベルト49が張架されている。駆動プーリ47の軸に、キャリッジ38を移動させるためのCRモータ96(本発明の電動機の一例、図5参照)が連結されている。このCRモータ96は、フィードバック制御に適合するよう製作されたサーボモータである。CRモータ96が回転駆動されると、その回転駆動力が駆動プーリ47に伝達される。そして、駆動プーリ47の回転によってベルト49が周運動する。なお、ベルト49は無端環状のもののほか、有端のベルトの両端部をキャリッジ38に固着するものも適用可能である。
キャリッジ38は、その下面側においてベルト49に連結されている。したがって、ベルト49の周運動に基づいて、キャリッジ38が縁部45を基準としてガイドレール43,44上を摺動する。このようなキャリッジ38に記録ヘッド39が搭載されて、記録ヘッド39が、用紙搬送路23の幅方向を往復移動される。
図3に示されるように、ガイドレール44には、エンコーダストリップ50が配設されている。エンコーダストリップ50は、透明な樹脂からなる帯状のものである。エンコーダストリップ50には、遮光部と透光部とが等ピッチで配置されたパターンが記されている。ガイドレール44の幅方向(キャリッジ38の移動方向)の両端には、その上面から起立する一対の支持リブ33,34が設けられている。エンコーダストリップ50は、その両端部が支持リブ33,34に係止されて、縁部45に沿って架設されている。
キャリッジ38の上面において、エンコーダストリップ50に対応する位置には、透過型センサである光学センサ35が設けられている。光学センサ35は、キャリッジ38の移動方向へ僅かに位置をずらして配置された2つの受光素子(例えばフォトトランジスタ)と、これらの受光素子に向けて発光する1つの発光素子(例えばLED)とにより構成されている。発光素子及び受光素子の間に、エンコーダストリップ50が配置されている。このように光学センサ35及びエンコーダストリップ50が設けられることによって、キャリッジ38の位置を検出するためのリニアエンコーダが構成される。
本実施形態では、エンコーダストリップ50のパターンに応じた2種類のエンコーダ信号ENC1及びENC2(図6参照)が光学センサ35から出力される。これらのエンコーダ信号ENC1及びENC2は、HIGHレベルとLOWレベルとからなる矩形波信号である。これらのエンコーダ信号ENC1及びENC2が後述する主制御部100(本発明の駆動制御装置の一例、図5参照)のモータ制御部107(本発明の制御部の一例)に入力されて、所定の基準位置(例えば待機位置)からのキャリッジ38の位置が算出される。なお、上記基準位置は、次のようにして判定することができる。例えば、キャリッジ38を一方向へ移動させて、キャリッジ38がその可動範囲の端で停止したときに光学センサ35から一定レベル(HIGHレベル又はLOWレベル)の信号が継続して出力されることをもって、その位置(可動範囲の端)を基準位置として認識することができる。
また、主制御部100では、光学センサ35から入力された上記エンコーダ信号ENC1及びENC2(図6参照)に基づいてキャリッジ38の実際の速度(実速度)や加速度、移動方向が算出される。これらの位置、実速度、加速度、移動方向などのデータ(フィードバックデータ)に基づいてCRモータ96(図5参照)がフィードバック制御によって駆動される。
図3に示されるように、記録用紙が通過しない範囲、すなわち記録ヘッド39(図2参照)による画像記録領域の外側には、メンテナンス機構51が配設されている。具体的には、メンテナンス機構51は、図3においてプラテン42の右端部に配置されている。メンテナンス機構51は、記録ヘッド39のノズル内のインクの乾燥を防止したり、ノズルから気泡や異物を吸引除去するものである。本実施形態では、キャリッジ38の待機位置(ホームポジション)はメンテナンス機構51の直上に設定されている。したがって、画像記録を行わない場合は、キャリッジ38は、画像記録指示が入力されるまで上記待機位置で待機する。
図2に示されるように、画像記録ユニット24の上流側には、搬送ローラ87とピンチローラ88とを有する一対の搬送ローラ対89が設けられている。画像記録ユニット24の下流側には、排紙ローラ90と該排紙ローラ90の上方に設けられた拍車91とを有する一対の排出ローラ対92が設けられている。搬送ローラ87の軸に、複数のギヤからなるギヤ駆動機構85(図5参照)が連結されている。LFモータ95(図5参照)の回転駆動力は、ギヤ駆動機構85を介して搬送ローラ87の軸に伝達される。これにより、搬送ローラ87が所定の回転速度で回転されて、記録用紙が用紙搬送路23中を搬送される。搬送ローラ87と排紙ローラ90とはギヤなどの伝達機構により連結されており、該伝達機構を介して搬送ローラ87から駆動力が排紙ローラ90に伝達される。これにより、搬送ローラ87と排紙ローラ90とが同期駆動される。
搬送ローラ87の回転軸にエンコーダディスク52が設けられている。エンコーダディスク52の周縁には、遮光部と透光部とが等ピッチで交互に配置されたパターンが記されている。エンコーダディスク52の周縁に対応する位置に光学センサ(不図示)が配設されている。上記光学センサの発光素子と受光素子との間にエンコーダディスク52の周縁が配置されている。エンコーダディスク52と上記光学センサとによって、搬送ローラ87の回転位置を検出するためのロータリーエンコーダが構成される。本実施形態では、搬送ローラ87とともにエンコーダディスク52が回転され、その際に、エンコーダディスク52のパターンに応じた矩形波信号が上記光学センサから出力される。この矩形波信号は後述する主制御部100(図5参照)に入力される。主制御部100は、上記矩形波信号に基づいて、搬送ローラ87の回転位置を算出する。ここで算出された回転位置を用いて、搬送ローラ87によって搬送される記録用紙の搬送位置や搬送量などが求められる。
本実施形態では、複合機1に画像記録指示が入力されて、記録用紙における記録領域の先端が記録ヘッド39の下方に到達すると、CRモータ96(図5参照)が主制御部100によって駆動制御される。これにより、キャリッジ38は、図3の右端部に設定された待機位置からスライドを開始して、記録用紙の搬送方向と直交する方向(図3の左右方向)へ往復移動する。
図4に、キャリッジ38が往復移動する際の理想的な速度軌跡が示されている。仮に、キャリッジ38の速度が図4に示される理想的な速度軌跡を辿るように変移すると、キャリッジ38の理想的な動きが実現されて、高精度な画像記録が行われる。図4の速度軌跡によれば、キャリッジ38は、CRモータ96が正回転方向へ回転されることによって、時刻t0において待機位置で静止していた状態から動き出して、区間L01において往方向(図3の左方向)へ加速駆動される。そして、所定時間が経過すると、時刻t1における目標速度として予め設定されていた速度v1に達する。
区間L12では、キャリッジ38は上記速度v1で定速駆動される。キャリッジ38が上記待機位置とは反対側の端部に近づくと、時刻t2から時刻t3の区間L23において、速度v1の定速駆動から減速駆動に切り換えられる。キャリッジ38の減速が終了すると、CRモータ96が逆方向へ回転されることによって、キャリッジ38は、時刻t3から時刻t4の区間L34において復方向(図3の右方向)へ加速駆動される。そして、時刻t3から所定時間経過後の時刻t4に、キャリッジ38が、速度v1に達する。その後、時刻t4から時刻t5の区間L45において、上記速度v1で定速駆動される。そして、キャリッジ38が上記待機位置に近づくと、時刻t5から時刻t6の区間L56において減速駆動される。その後は、必要に応じて、区間L01〜L56の動作が繰り返されて、キャリッジ38が連続して往復移動する。
しかしながら、フィードバック制御により駆動されるキャリッジ38の実際の速度(実速度)は、静止状態のときにキャリッジ38に作用する静止最大摩擦力の影響を受けるため、図4に示される速度軌跡のように変移しない。詳細には、加速制御を行う区間L01において、CRモータ96に駆動電流が出力されたにもかかわらず、CRモータ96の回転トルクが静止最大摩擦力を上回るまでキャリッジ38が動き出さないという不感現象が生じ、画像記録時に必要な速度に到達するまでに時間がかかり過ぎることになる。しかしながら、本実施形態では、後述するモータ制御部107(図5参照)によって、図7に示される関数f01(s)(本発明の第1関数f(s)の一例)で示される速度プロファイルを用いてCRモータ96がフィードバック制御されて、区間L01における加速駆動が行われるため、上記不感現象が生じる時間を短縮することができ、且つ、キャリッジ38の速度の周期的変動を抑制して安定した制御を実現することが可能になる。なお、モータ制御部107及び関数f01(s)の詳細については後述する。
[主制御部100]
次に、図5を参照して、プリンタ部2に設けられた主制御部100の主要構成について説明する。
主制御部100は、プリンタ部2の全体動作を制御するものであり、記録ヘッド39の吐出制御のほか、CRモータ96及びLFモータ95の駆動制御を行う。図5に示されるように、主制御部100は、主として、各種演算を行うCPU101と、ROM102と、RAM103と、EEPROM104と、CRモータ96を制御するモータ制御部107と、インターフェース(I/F)108と、CRモータドライバ110と、LFモータドライバ111と、ヘッド駆動回路113とがバス105などで接続されて構成されている。
インターフェース108は、図示しないホストコンピュータから出力される印刷データなどの信号を受信するためのものである。
ROM102には、CPU101がプリンタ部2の各種動作を制御するための動作プログラムや、CRモータ96をPID制御(フィードバック制御の一例)するための制御プログラムなどが記憶されている。後述する式(4)で表される関数は、この制御プログラムに組み込まれている。なお、制御プログラムに式(4)の関数そのものが組み込まれていなくても、例えば、後述する式(2)で表される一般式と、後述する式(3)を係数a,b,c,dについて解いたもの或いは式(3)を上記制御プログラムに組み込むことが考えられる。もちろん、これら以外の様々な手法が考えられるが、少なくとも、式(4)の係数を算出する方法(手順)が制御プログラムに組み込まれていればよい。
また、ROM102には、CRモータ96のPID制御に必要なPID定数(比例ゲイン、積分ゲイン及び微分ゲインなど)が記憶されている。ここで、PID制御とは、フィードバック制御の一種であって、目標速度F(t)と実速度G(t)との偏差(速度差)に比例ゲインを乗じて入力値を変化させる比例動作(P動作)と、上記偏差の累積値に積分ゲインを乗じて入力値を変化させる積分動作(I動作)と、上記偏差の変化(つまり偏差の微分)に微分ゲインを乗じて入力値を変化させる微分動作(D動作)とを組み合わせた制御方法のことをいう。なお、本実施形態では、説明の便宜上、PID制御によってCRモータ96が駆動される例について説明するが、言うまでもなく、入力とフィードバックデータとを比較して出力制御を行なうあらゆるフィードバック制御をCRモータ96の駆動方式として採用することが可能である。
RAM103は、CPU101が上述の各種プログラムを実行する際に用いる各種データや実行時に算出される各種数値を一時的に記録する記憶領域、或いは所定の演算処理を行うための作業領域として使用される。
EEPROM104には、電源オフ後も保持すべきデータや設定フラグ等が格納されている。
モータ制御部107は、光学センサ35からのエンコーダ信号ENC1及びENC2(図6参照)に基づいて生成された基準パルスのカウントや、そのパルス幅に基づいてキャリッジ38の位置や速度などを算出する演算処理などを行い、これらのカウント値或いは演算値を用いてCRモータ96を制御するものであり、ASIC(Application Specific Integrated Circuit)として構成されている。モータ制御部107は、CPU101の制御の下で、CRモータドライバ110に駆動制御信号を出力する。CRモータドライバ110は、駆動制御信号に応じた駆動電流をCRモータ96に出力する。駆動電流を受けたCRモータ96は、キャリッジ38を移動させる。キャリッジ38が移動されると、光学センサ35からエンコーダ信号ENC1及びENC2がモータ制御部107にフィードバックされる。なお、モータ制御部107の詳細な構成については後述する。
CPU101は、図示しないホストコンピュータからインターフェース108を介して受信された印刷データを、RAM103の所定の記憶領域に格納するとともに、予めROM102に記憶されている制御プログラムに従って、LFモータ95を駆動するために必要な各種制御信号を出力する演算制御動作と、画像データを加工して、この画像データに基づいて実際に画像記録を行う印刷データを展開し、これに基づいて記録ヘッド39を駆動するための制御信号を出力する処理を行う。また、モータ制御部107からの制御信号により、CRモータ96の動きに同期させてヘッド駆動回路113にヘッド駆動信号を送ったり、CRモータ96の動きに合わせて、LFモータドライバ111に制御信号を送ることによりLFモータ95を回転させるなどの、各部分の動作を統括する役割も果たす。
ヘッド駆動回路113は、入力された画像データから得られた印刷データに基づいて、記録用紙上の画像記録箇所が記録ヘッド39の下方に到達したときに、記録ヘッド39に備えられたピエゾ素子(不図示)に電圧を印加して、記録用紙へ向けてインクを吐出させるものである。
LFモータドライバ111は、CPU101からの微電圧の制御信号を受けて、LFモータ95に対して駆動電流を出力することにより、LFモータ95を制御するものである。LFモータ95は、DCモータからなるものである。搬送ローラ87の回転軸に取り付けられたエンコーダディスク52と光学センサ(不図示)とにより構成されたロータリーエンコーダによってLFモータ95の回転位置が検出され、その検出結果がLFモータドライバ111にフィードバックされる。LFモータドライバ111は、フィードバックされた回転位置に基づいて、搬送ローラ87による記録用紙の搬送量が所定量となるようにLFモータ95を精度よく制御する。
LFモータ95が回転駆動されると、ギヤなどの伝達機構を介してその駆動力が搬送ローラ87および排紙ローラ90に伝達される。これにより、記録用紙が搬送される。主制御部100では、搬送された記録用紙の搬送位置や搬送量が、搬送ローラ87の回転位置に基づいて算出される。主制御部100のCPU101は、算出された記録用紙の搬送位置や搬送量に基づいて記録用紙の搬送状態を判断して、LFモータドライバ111に対してLFモータ95を駆動若しくは停止させる制御信号を送信する。
[モータ制御部107]
次に、図6を参照して、モータ制御部107の構成について詳細に説明する。
モータ制御部107は、エッジ検出部121と、キャリッジ位置管理部122と、エンコーダ周期測定部123と、PID演算部124と、PWM生成部125と、速度プロファイル生成部128(本発明の関数生成手段の一例)と、目標速度生成部129とを有する。モータ制御部107は、例えばASICなどの集積回路として構成されている。上記各部は、トランジスタやコンデンサなどの素子が集積配置されたハードロジック回路として構成されており、上記各部が有する後述の固有機能を実現するための回路が1つのチップ内に集約されている。なお、言うまでもないが、上記各部が個別に機能する構成に限られず、例えば、PID演算部124、PWM生成部125、及び速度プロファイル生成部128が、各機能を実現する一つの回路で構成されていてもよい。
エッジ検出部121は、光学センサ35で発生したエンコーダ信号ENC1及びENC2の信号のエッジ(立ち上がり)を検出するとともに、その検出タイミングで基準パルスを生成するものである。生成された基準パルスは、キャリッジ位置管理部122及びエンコーダ周期測定部123に出力される。また、エッジ検出部121は、2種類のエンコーダ信号ENC1,ENC2の位相差からキャリッジ38の進行方向を求め、その方向をフラグとする方向フラグ信号をキャリッジ位置管理部122へ出力する。
キャリッジ位置管理部122は、エッジ検出部121から入力された方向フラグ信号に基づいてキャリッジ38の走行方向を求める。また、このキャリッジ位置管理部122は、エッジ検出部121から入力された基準パルスのパルス数をカウントすることにより、そのカウント値とパルス幅とからキャリッジ38の走行位置(待機位置からの走行距離)を求める。ここで求められたキャリッジ38の走行位置や走行方向は、CPU101による各種演算処理に用いられる。
エンコーダ周期測定部123は、キャリッジ38の実際の移動速度を算出するものである。詳細には、エンコーダ周期測定部123は、図示しないクロック発信器によって与えられた一定時間内において、エッジ検出部121から出力された基準パルスのパルス数をカウントすることにより、そのカウント値、パルス幅及び上記一定時間に基づいてキャリッジ38の移動速度を算出する。ここで算出された移動速度は、PID演算部124に出力される。
速度プロファイル生成部128は、キャリッジ38の速度制御に用いられる速度プロファイルを生成する。この速度プロファイルは、変数sで定義された関数f(s)で表される。この関数f(s)の変数sにフィードバック指令が発せられた時刻tを代入した値f(t)は、キャリッジ38の移動制御区間においてフィードバック指令が発せられる毎に測定されるキャリッジ38の実速度G(t)とその都度比較される目標速度F(t)である。以下、説明の便宜上、移動制御開始直後の停止状態にあるキャリッジ38を加速させる加速制御の区間L01で用いられる速度プロファイルを関数f01(s)と表記する。また、区間L12、区間L23、区間L34、区間L45、区間L56それぞれの区間で用いられる速度プロファイルを、関数f12(s)関数f23(s)関数f34(s)関数f45(s)関数f56(s)と表記する。
関数f01(s)は、図7に示されるように、変数sに対してt0≦s≦t1の範囲で定義された連続で滑らかな関数である(図7の実線参照)。言い換えると、関数f01(s)は、時刻t0〜時刻t1に対応する変数sの範囲t0≦s≦t1において連続しており、時間の経過に伴い滑らかに変移している。このような関数f01(s)としては、変数sに関して少なくとも2階微分が可能なものが考えられる。2階或いはそれ以上の複数階微分が可能な関数f01(s)であれば、連続した滑らかな関数であると言える。この関数f01(s)は、変数s(t0≦s≦t1)についての後述する関数h01(s)(図7の破線参照)を所定のルールで変換することで得られる。なお、関数f01(s)の詳細については後述する。
なお、本実施形態では、時刻t1以降の区間(区間L12以降の区間)における移動制御で用いられる速度プロファイルとしては、f(s)=h(s)(但し、s≧t1)で表される関数が用いられる。関数h(t)は、図4に示される速度軌跡と概ね同様の曲線を描く。以下、説明の便宜上、区間L01(時刻t0〜時刻t1)の範囲に対応する関数h(t)を、関数h01(s)(t0≦s≦t1)と表記する。この関数h01(s)が、本発明の第2関数h(s)の一例である。また、同様に、区間L12、区間L23、区間L34、区間L45、区間L56それぞれの区間に対応する関数h(t)を関数h12(s)、関数h23(s)、関数h34(s)、関数h45(s)、関数h56(s)と表記する。上記関数h01(s)は、従来の加速制御に用られる従来の速度プロファイル(図11において符号201で示される曲線を参照)と概ね同様であって、原点(t=t0、v=0)からスタートして、時間の経過とともに緩やかに徐々に大きくなり、定速制御の区間L12において必要とする設定速度v1に近づくにつれて再び緩やかに変移する。
ここで、区間L01に対応する上述の関数h01(s)について説明する。この関数h01(s)は、図7に示されるように、少なくとも時刻t0〜時刻t1(t0≦s≦t1)において連続しており、変数sの変化に伴って滑らかに変移している。この関数h01(s)は、以下の手法で与えられる。なお、区間L01以降の各区間に対応する関数h12(s)、関数h23(s)、関数h34(s)、関数h45(s)、関数h56(s)についても、関数h01(s)と同様の手法で算出することができるため、ここではその詳細な説明を省略する。
例えば、キャリッジ38の制御目標値として、静止状態にある時刻t0におけるキャリッジ38の速度がv0(=0)、その時点での加速度がα0に設定されていると仮定する。また、定速制御を開始する時刻t1におけるキャリッジ38の目標速度、つまり区間L12で必要とする速度がv1、その時点での加速度がα1に設定されていると仮定する。これらの制御目標値は、装置の仕様などにより予め決定される要素であり、予めCPU101に与えられている情報である。速度v0、加速度α0、速度v1、加速度α1は、関数h01(s)を用いて、下記式(1)のように表される。
ここで、関数h01(s)が下記式(2)に示す3次多項式で与えられていると仮定する。なお、本実施形態では、関数h01(s)を3次多項式として取り扱うが、これは単なる一例であって、例えば、時刻t0やt1におけるキャリッジ38の位置情報を考慮してさらに高次の多項式と仮定してもよい。この場合、式(1)に示される速度v0、加速度α0、速度v1、加速度α1に加えて、多項式の項数に応じた情報が必要であることは言うまでもない。また、関数h01(s)を、2次多項式や、3次以上の多項式、三角関数、対数関数、指数関数、その他の連続で滑らかな関数、及びそれらの組み合わせと仮定してもかまわない。
上記式(1)に示される各制御目標値を上記式(2)に代入すると、速度v0、加速度α0、速度v1、加速度α1は、下記式(3)のように表すことができる。
上記式(3)に示される各式を未知数a,b,c,dについての4次連立方程式として解くことにより、未知数a,b,c,dが求められる。ここで求められたa,b,c,dを上記式(2)に代入することによって、関数h01(s)は、下記式(4)のように与えられる。
例えば、キャリッジ38が静止状態にあるときに、「0.3秒後に43IPSの速度まで加速し、その後は一定速度で運動せよ。」という内容の加速指令がCPU101から速度プロファイル生成部128に入力されると、速度プロファイル生成部128は、上記加速指令とともに入力された情報、つまり、t0=0、t1=0.3(T=0.3)、v0=0、v1=43[IPS]、α1=0を上記式(4)に代入することにより、下記式(5)で表される関数h01(s)を近似式として算出する。なお、式(5)では、小数点2桁目以下が四捨五入されている。
このようにして算出された上記式(5)の関数h01(s)は、変数s(0≦s≦0.3)の範囲において、原点(t0=0、h01(t0)=0)を通り、時間の経過とともに曲線状に変移して制御目標値であるh01(0.3)=43[IPS]に至る非線形を描く。
次に、関数f01(s)(図7の実線参照)の生成手法について説明する。この関数f01(s)は、変数s(t0≦s≦t1)についての関数である。上述したように、区間L01における加速制御で用いられる速度プロファイルは、この関数f01(s)で表される。
速度プロファイル生成部128は、加速指令が速度プロファイル生成部128に入力された際に算出された関数h01(s)(例えば、式(5)で表される関数)に基づいて、s=t0のときにf(s)=F(t0)、s=t1のときにf(s)=F(t1)(=v1)となるように、定数F(t0)及び定数F(t1)を用いて関数f01(s)(図7の実線参照)を生成する。ここで、定数F(t0)は、時刻t0の時点で用いられる目標速度として予め設定されたものである。この目標速度F(t0)が、本発明の目標速度F(t0)に相当する。また、定数F(t1)は、時刻t1の時点で用いられる目標速度として予め設定されたものである。この目標速度F(t1)が、本発明の目標速度F(t1)に相当する。本実施形態では、速度プロファイル生成部128では、下記の式(6)に基づいて関数h01(s)を変換することにより関数f01(s)が生成される。
上記式(6)及び図7に示されるように、目標速度F(t0)は、時刻t0=0おける速度軸(図7のy軸)と関数f01(s)との交点(切片)におけるf11(s)の値である。特に、本実施形態では、目標速度F(t0)は、0よりも大きく、且つ、制御目標値である時刻t1における目標速度F(t1)よりも小さい値に設定されている。したがって、上記式(6)によれば、関数f01(s)は、関数h01(s)が速度軸(y軸)方向へ(F(t1)−F(t0))/F(t1)(<1)だけ圧縮され、時刻t0=0おける速度軸(y軸)と関数f01(s)との交点(切片)がF(t0)(>0)である関数と言える。
ここで、例えば、目標速度F(t0)が3[IPS]であると仮定する。この場合、速度プロファイル生成部128は、上記式(5)と、F(t0)=3[IPS]と、F(t1)=43[IPS]とを上記式(6)に代入することにより、下記式(7)で表される関数f01(s)を生成する。
このように、加速制御の区間L01において用いられる速度プロファイルとして、上式(6)に基づいて関数h01(s)を変換するだけで関数f01(s)が生成されるため、時刻t0から時刻t1までの区間L01において、滑らかに連続する関数f01(s)を、複雑な処理をすることなく容易に得ることができる。
速度プロファイル生成部128で生成された関数f(s)は、目標速度生成部129において、各区間において随時(例えばフィードバックループ時間Δtごと)必要とされる目標速度F(t)の生成処理に用いられる。区間L01における目標速度F(t)は関数f01(s)に基づいて生成され、区間L01を除く区間L12における目標速度F(t)は、上述の関数f(s)=h(s)(但し、s≧t1)に基づいて生成される。
例えば、区間L01における目標速度F(t)は、CPU101からのフィードバック指令が入力される毎にその時点におけるキャリッジ38の目標速度F(t)を上記式(6)に示される関数f01(s)に基づいて生成する。仮に、フィードバックループ時間Δtが0.0001秒(1/10000秒)であるとすると、フィードバック指令が0.0001秒毎に発せられることになるから、「0.3秒後に43IPSの速度まで加速し、その後は一定速度で運動せよ」といった内容の移動指令が入力された上述の例では、上記ループ時間Δt毎に{s=0.0001,0.0002,0.0003,・・・,0.2999,0.3000}が順番に式(7)の関数f01(s)に入力される。そして、各時間毎にその時点での目標速度F(t)が生成される。具体的には、或る時点において目標速度F(t)が生成されるとその目標速度にしたがってCRモータ96が駆動されるから、その駆動中に次の目標速度F(t)が生成される。各ループ時間毎に生成された目標速度F(t)は、生成される度にPID演算部124に順次出力される。本実施形態では、目標速度F(t)はF(t)=f(t)として定められる。
PID演算部124は、キャリッジ38の速度制御のためのPID制御の演算を行い、
PWM生成部125に出力するための制御信号(以下「PID制御信号」と称する。)を生成する。具体的には、エンコーダ周期測定部123から入力された実速度G(t)と目標速度生成部129から入力された目標速度F(t)との速度差が算出される。そして、算出された速度差とROM102に記憶されているPID定数とに基づいてPID制御のための各種演算や制御信号の生成が行われる。なお、生成されたPID制御信号は、PWM生成部125へ出力される。
PWM生成部125は、PID演算部124からのPID制御信号に応じたPWM(Pulse Width Modulation:パルス幅変調)信号を生成する。具体的には、PWM生成部125では、上記PID制御信号に基づいて、所定のデューティ比(ON時間とOFF時間の比で、一定の周期に対するON時間の割合で表されたもの)が求められる。そして、このデューティ比を有するPWM信号が生成される。生成されたPWM信号は、CRモータドライバ110に出力される。PWM信号を受けたCRモータドライバ110は、CRモータ96に駆動電流を与えてCRモータ96を回転させる。CRモータ96の回転駆動力は、ベルト駆動機構46を介してキャリッジ38に伝達される。これにより、キャリッジ38が所定方向へ所定速度で移動する。
以下、図7の座標図、図8及び図9のフローチャートを参照しながら、キャリッジ38を移動させる際に行われる移動制御の手順の一例について説明する。なお、以下の説明では、関数f(s)を用いて、変数s=tk(k=0,1,2,3,・・・)であるときのf(tk)が目標速度F(tk)として与えられる。つまり、目標速度F(tk)=f(tk)である。
外部のホストコンピュータなどから印刷データとともに画像記録指示がインターフェース108を介して複合機1に入力されると、主制御部100のモータ制御部107及びCRモータドライバ110などによって、CRモータ96に対し、PID制御による駆動制御が実行される。これにより、停止状態にあるキャリッジ38の移動制御が開始される。
まず、図8に示されるように、ステップS1では、CPU101によって、当該移動制御に用いられるパラメータkが初期値「0」に設定される。ここで、パラメータkは、予め定められた時刻tkを特定するためのものである。本実施形態では、パラメータkは、「0」以上の整数としており、時刻tkは、区間L01〜L56(図4参照)の各区間の起点又は終点を表す時刻に対応している。
ステップS2では、時刻tkにおける目標速度F(tk)と、その時点における目標加速度αkとが取得される。これらはいずれも、移動制御の指令を受けた際に入力される情報であり、予めRAM103に格納されている。したがって、RAM103から時刻tkに対応する目標速度F(tk)及び目標加速度αkを読み出すことにより各情報を取得することができる。
ステップS3では、時刻tkにおけるキャリッジ38の実速度G(tk)が算出される。実速度G(tk)は、上述したように、エンコーダ周期測定部123において、エッジ検出部121から出力された基準パルスのパルス数をカウントし、そのカウント値やパルス幅に基づいて算出される。なお、キャリッジ38の移動制御開始直後の時刻t0の時点では、最初のフィードバック制御の指令がまだ出力されておらず、CRモータ96が駆動されていないので、キャリッジ38は静止最大摩擦力によって停止状態にある。そのため、通常、時刻t0における実速度G(t0)は「0」である。
ステップS4では、時刻tk+1における目標速度F(tk+1)と、その時点における目標加速度αk+1とが取得される。これらはいずれも、移動制御の指令を受けた際に該指令とともに入力される情報であり、予めRAM103に格納されている。したがって、RAM103から時刻tk+1に対応する目標速度F(tk+1)及び目標加速度αk+1を読み出すことにより各情報を取得することができる。
ステップS5では、関数hk k+1(s)が生成される。例えば、パラメータk=0(S1参照)に設定されている場合は、区間L01に対応する関数h01(s)が生成される。また、パラメータk=1に設定されている場合は、区間L12に対応する関数h12(s)が生成される。かかる関数hk k+1(s)の生成手法は、上述した関数h01(s)の生成手法と同様であるため、ここではその説明を省略する。
ステップS6では、時刻tkにおける実速度G(tk)が0かどうかが判断される。かかる判断は、後述のステップS11において目標速度F(t)を取得する際に用いられる関数を特定するために行われる。なお、実速度G(tk)が実際に0である場合に限られず、実質的に速度が0であると評価できる場合にG(tk)=0と判断してもかまわない。
ステップS6において、実速度G(tk)が「0」であると判断されると(S6のYes)、次のステップS7では、上述した関数f01(s)の生成手法と同じ手法で以下の式(8)の関数が生成されて、時刻tk〜時刻tk+1の範囲、つまり区間Lk k+1で用いられる関数f(s)=fk k+1(s)として設定される。本実施形態では、時刻t0、時刻t3では実速度が0であるため(図4参照)、各区間L01、区間L34で用いられる関数f(s)として、f01(s)、f34(s)が設定される。
一方、実速度G(tk)が「0」ではないと判断されると(S6のNo)、次のステップS8では、時刻tk〜時刻tk+1の範囲、つまり区間Lk k+1で用いられる関数f(s)=fk k+1(s)として、ステップS5で生成された関数hk k+1(s)が設定される。本実施形態では、時刻t1、時刻t2などでは実速度が「0」ではないため(図4参照)、各区間L12、区間L23で用いられる関数f(s)として、h12(s)、h23(s)が設定される。
例えば、移動制御が開始された直後の時刻t0の時点では、キャリッジ38が停止状態にある。そのため、後述するステップS11では、区間L01で用いられる目標速度F(t)は、上式(8)に示す関数に基づいて求められる。また、時刻t3の時点でもキャリッジ38の実速度G(t3)、G(t6)が「0」と判断されるため、後述するステップS11では、区間L34で用いられる目標速度F(t)も、上式(8)に示す関数に基づいて求められる。一方、時刻t1,t2,t4,t5の時点では、キャリッジ38の実速度G(t)は「0」よりも大きい。そのため、後述するステップS11では、区間L12,L23,L45,L56で用いられる目標速度F(t)は、関数hk k+1(s)に基づいて求められる。
後述するステップS11で用いられる関数が設定されると、図9に示されるように、次のステップS9では、CPU101によって、当該移動制御に用いられるパラメータjが初期値「0」に設定される。ここで、パラメータjは、時刻tk〜時刻tk+1の範囲、つまり区間Lk k+1において行われるフィードバック制御の回数をカウントするためのものである。本実施形態では、パラメータjは、「0」以上の整数としている。
ステップS10では、目標速度F(t)を取得するタイミング(時刻t)が定められる。具体的には、区間Lk k+1において既に実行されたフィードバック制御の回数を示すパラメータjとフィードバックループ時間Δtとを乗じた値jΔtを時刻tkに加算した時刻t=tk+jΔtが求められる。例えば、移動制御が開始された直後に目標速度F(t)を取得する場合は、パラメータk=0であり、パラメータj=0であるため、目標速度F(t)を取得するタイミングとして、時刻t=t0が定められる。
次のステップS11では、ステップS10で定めた時刻t(=tk+jΔt)における目標速度F(t)がステップS8若しくはステップS9で設定した関数に基づいて取得される。つまり、目標速度F(t)として、f(t)=f(tk+jΔt)が求められる。
ステップS12では、上述したステップS3の算出手法と同様にして、時刻t(=tk+jΔt)における実速度G(t)(=G(tk+jΔt))が算出される。
そして、ステップS13では、ステップS11で求められた目標速度F(t)とステップS12で算出された実速度G(t)との差(速度差)F(t)−G(t)がCPU101によって算出される。本実施形態では、移動制御の開始直後の時刻t0の時点では、まだCRモータ96が駆動されておらず、キャリッジ38は静止最大摩擦力によって停止状態にあるため、その実速度G(t0)は「0」である。しかしながら、時刻t0時点での目標速度F(t0)は、0より大きい値に設定される。したがって、速度差として、F(t0)−G(t0)=F(t0)(>0)が算出される。その後、速度差F(t)−G(t)に基づいてPID制御信号が生成されて、上述したように、CRモータ96の駆動信号の生成、CRモータ96の駆動制御に用いられる。
次に、ステップS14において、パラメータjがインクリメントされて、その後、ステップS15において、時刻t(=tk+(j+1)Δt)が時刻tk+1と一致するかどうかが判断される。ステップS15において時刻tk+1と一致しないと判断された場合は(S15のNo)、ステップS10以降の手順のループ処理が繰り返し行われる。一方、ステップS15において時刻tk+1と一致すると判断された場合は(S15のYes)、パラメータkがインクリメントされる(S16)。
そして、次のステップS17では、時刻tk+1に基づいて、その後の移動が完了したかどうか、言い換えると、画像記録処理が終了したかどうかが判断される。ここで、移動がまだ完了していないと判断されると(S17のNo)、上述のステップS4以降の手順のループ処理が繰り返し行われる。一方、移動が完了したと判断されると(S17のYes)、キャリッジ38を待機位置に戻した後に、キャリッジ38に関する一連の移動制御が終了する。
このように、上述の実施形態では、キャリッジ38の移動制御開始直後の時刻t0における目標速度F(t0)=f01(t0)が、「0」よりも大きく且つ時刻t1における目標速度F(t1)=f01(t1)よりも小さい値であり、更に、加速制御が行われる区間L01(時刻t0から時刻t1の区間)に渡って連続して滑らかな関数f01(s)(式(6)、式(7)参照)で表された速度プロファイルが用いられる。そのため、加速制御の開始時の時刻t0から加速制御が終了する時刻t1までの区間L01において、キャリッジ38の実速度G(t)が目標速度F(t)に対して周期的に変動することが抑制される。これにより、キャリッジ38を円滑に加速させることができ、しかも、区間L01におけるPID制御が安定する。また、時刻t0に対応する目標速度F(t0)が0より大きい値に設定されているため、加速制御初期においてキャリッジ38に大きな駆動トルクを与えることができる。そのため、キャリッジ38の動き出しを早めることができる。
また、上述の実施形態では、複数の関数ではなく、1つの関数f(s)に基づいてPID制御によるキャリッジ38の移動制御が行われるため、モータ制御に要する演算処理が複雑にならず、簡素化される。これにより、全区間において、モータ制御を軽負荷で行うことができる。
また、キャリッジ38の実速度G(t)が目標速度F(t)に対して周期的に変動しないため、加速区間L01におけるキャリッジ38の助走距離を短くすることができる。そのため、プリンタ部2の幅をコンパクトにし、且つ、キャリッジ38の往復移動時間の短縮による高速印刷を実現することが可能となる。なお、本発明は、スキャナ部3においてCISを支持するキャリッジの移動制御に適用することも可能である。この場合は、スキャナ部3の幅をコンパクトにし、且つ、当該キャリッジの往復移動時間の短縮による高速読取を実現することが可能となる。
[変形例]
上述の実施形態では、速度プロファイル生成部128は、上記式(6)に示されるようにして関数h01(s)を変換することにより関数f01(s)を生成することとしたが、速度プロファイル生成部128において、定数uを用いて、以下の式(9)に基づいて関数h01(s)を変換することにより、図10に示される関数f01(s)を生成するようにしてもよい。ここで、定数uは、h01(u)=F(t01)となるように定められたものである。
式(9)によれば、関数f01(s)は、関数h01(s)が時間軸(横軸)方向へ定数uだけシフトされ、時刻t0(=0)における速度軸(縦軸)と関数f01(s)との交点(切片)がf01(t0)=F(t0)=h01(t0+u)(>0)である関数と言える。このように変換することにより、時刻t0における目標速度F(t0)が0より大きく、時刻t1における目標速度F(t1)に達するまで滑らかに連続する関数f01(s)を、複雑な処理をすることなく、容易に生成することができる。
なお、本発明は、インクジェット記録方式の画像記録装置に限らず、感熱式で画像を記録する、所謂、サーマルプリンタにおいて記録用紙を搬送するための搬送ローラや、ADFと称される自動原稿送り装置において原稿を画像読取位置へ向けて搬送するための搬送ローラなどを加速制御する場合にも、適用することが可能である。もちろん、これらの被駆動体に限られず、モータの駆動対象である様々な被駆動体を移動制御する場合に、本発明を適用することができる。