(57)【要約】【課題】リニアエンコーダを用いたモータ制御装置において、リニアスケールに汚れが付着している区間を特定し、その区間内での制御性能の劣化を効果的に抑制する。【解決手段】キャリッジの異常速度が検出された場合、キャリッジをその走査域の一端側から駆動させて異常速度が検知されたときの位置と他端側から駆動させて異常速度が検知されたときの位置を検出し、各位置の間を補償区間（汚れ区間）に設定する。補償区間設定後のキャリッジ駆動時は、補償区間に入る前の演算タイミング毎に、その演算タイミングでの検出速度等に基づいて演算された操作量（通常操作量Ｕａ）を予め記憶されているノミナル操作量Ｕｎで除算することにより補償係数αを算出する。補償区間内では、演算タイミング毎に、ノミナル操作量Ｕｎに補償係数α（補償区間に入る直前に算出されたもの）を乗じて補償操作量Ｕｃを算出し、これを通常操作量Ｕａに代えて制御に用いる。【選択図】図８
2011041375.tif 000002
【特許請求の範囲】
【請求項１】
予め設定された移動経路上をモータにより駆動される被駆動体の移動量に応じてパルス状のエンコーダ信号を出力するリニアエンコーダと、
前記リニアエンコーダからの前記エンコーダ信号をカウントし、該カウント値に基づいて前記被駆動体の速度及び位置を検出する駆動状態検出手段と、
所定の演算タイミング毎に、前記駆動状態検出手段により検出された速度に基づいて前記モータを制御するための操作量を演算して該モータへ出力する操作量演算手段と、
を備えたモータ制御装置であって、
前記駆動状態検出手段により検出された速度が予め設定された速度正常範囲から外れた異常速度であるか否かを検知する異常速度検知手段と、
前記異常速度検知手段によって前記異常速度が検知された場合に、まず前記被駆動体を前記移動経路の一端から駆動させてその駆動開始から前記異常速度検知手段により前記異常速度が検知されるまでの前記エンコーダ信号をカウントすることにより第１カウント値ｋａを計測し、さらに前記被駆動体を前記移動経路の他端から駆動させてその駆動開始から前記異常速度検知手段により前記異常速度が検知されるまでの前記エンコーダ信号をカウントすることにより第２カウント値ｋｂを計測して、該各カウント値ｋａ，ｋｂに対応した位置の間を補償区間として検出する補償区間検出手段と、
当該モータ制御装置における制御対象のノミナルモデルに対する前記操作量であるノミナル操作量が前記演算タイミング毎に記憶されているノミナル操作量記憶手段と、
前記補償区間検出手段により前記補償区間が検出された後の前記被駆動体の駆動の際、前記駆動状態検出手段により検出された位置に基づいて前記被駆動体が前記補償区間に入ったかどうかを判断する補償区間判断手段と、
前記補償区間判断手段により前記被駆動体が前記補償区間に入ったと判断されている間、前記演算タイミング毎に、前記ノミナル操作量記憶手段に記憶されている前記ノミナル操作量に基づいて予め決められた演算により補償操作量を生成し、その補償操作量を前記操作量演算手段による前記操作量に代えて前記モータへ出力する、操作量補償手段と、
を備えていることを特徴とするモータ制御装置。
【請求項２】
請求項１に記載のモータ制御装置であって、
前記補償区間判断手段により前記被駆動体が前記補償区間に入ったと判断される前の、一または複数の前記演算タイミングにおける、前記操作量演算手段により演算された前記操作量である実操作量と前記ノミナル操作量記憶手段に記憶されている前記ノミナル操作量とに基づいて、前記ノミナル操作量を前記補償操作量に換算するための、前記ノミナル操作量と前記実操作量との関係を表す補償情報を生成する補償情報生成手段を備え、
前記操作量補償手段は、前記補償操作量の生成を、前記演算タイミング毎に、その演算タイミングにおける前記ノミナル操作量を前記補償情報を用いて前記補償操作量に換算することにより行う
ことを特徴とするモータ制御装置。
【請求項３】
請求項２に記載のモータ制御装置であって、
前記補償情報生成手段は、前記補償区間判断手段により前記被駆動体が前記補償区間に入ったと判断される直前の前記演算タイミングにおける前記実操作量と前記ノミナル操作量との比率を前記補償情報として生成し、
前記操作量補償手段は、前記補償情報生成手段により生成された前記比率に従って前記ノミナル操作量を前記補償操作量に換算する
ことを特徴とするモータ制御装置。
【請求項４】
請求項２に記載のモータ制御装置であって、
前記補償情報生成手段は、前記補償区間判断手段により前記被駆動体が前記補償区間に入ったと判断される前の複数の前記演算タイミング毎に前記実操作量と前記ノミナル操作量との比率を演算して、その演算した各比率の平均値を前記補償情報として生成し、
前記操作量補償手段は、前記補償情報生成手段により生成された前記平均値に従って前記ノミナル操作量を前記補償操作量に換算する
ことを特徴とするモータ制御装置。
【請求項５】
請求項２〜請求項４の何れか１項に記載のモータ制御装置であって、
前記補償情報生成手段は、前記被駆動体の駆動開始後、予め設定された補償情報生成開始条件が成立した場合に、前記補償情報の生成を開始する
ことを特徴とするモータ制御装置。
【請求項６】
請求項１〜請求項５の何れか１項に記載のモータ制御装置であって、
前記操作量演算手段は、前記被駆動体が前記補償区間から出た後の最初の前記演算タイミングにおける前記操作量として、前記補償区間から出る前に該補償区間内において前記操作量補償手段によって最後に演算された前記補償操作量を用いる
ことを特徴とするモータ制御装置。
【請求項７】
請求項１〜請求項６の何れか１項に記載のモータ制御装置であって、
前記異常速度検知手段によって前記異常速度が検知された場合に、前記被駆動体を前記移動経路の一端から他端までの全領域を駆動させ、該駆動中の前記エンコーダ信号をカウントすることにより異常時全カウント値Ｍを計測する異常時全カウント値計測手段と、
前記第１カウント値ｋａと前記第２カウント値ｋｂの和を前記異常時全カウント値Ｍから減算することにより補償区間内実カウント値ｚを演算する補償区間内実カウント値演算手段を備え、
前記操作量補償手段は、補償区間判断手段により前記補償区間に入ったと判断された場合、該入った後の前記駆動状態検出手段によるカウント値及び前記補償区間内実カウント値ｚに基づいて該補償区間の終了位置を検出し、該終了位置が検出されるまで前記補償操作量を出力する
ことを特徴とするモータ制御装置。
【請求項８】
請求項７に記載のモータ制御装置であって、
前記リニアエンコーダが正常である場合に前記被駆動体を前記移動経路の一端から他端までの全領域を駆動させたときの、該駆動中の前記エンコーダ信号のカウント値であるノミナルカウント値Ｎが予め記憶されているノミナルカウント値記憶手段と、
前記異常速度検知手段によって前記異常速度が検知された場合に、前記異常時全カウント値計測手段により計測された前記異常時全カウント値Ｍを前記ノミナルカウント値Ｎから減算することにより、異常時カウント誤差ｎを演算する異常時カウント誤差演算手段と、
前記補償区間検出手段により前記補償区間が検出された後の前記被駆動体の駆動の際、前記被駆動体が前記補償区間から出たときに、前記駆動状態検出手段によるカウント中のカウント値を、前記補償区間から出たときのカウント値に前記異常時カウント誤差ｎを加算した値に修正する修正手段と、
を備えていることを特徴とするモータ制御装置。
【請求項９】
請求項８に記載のモータ制御装置であって、
前記操作量補償手段は、前記異常時カウント誤差ｎが０ではない場合に、前記補償操作量を出力する
ことを特徴とするモータ制御装置。
【請求項１０】
請求項８又は請求項９に記載のモータ制御装置であって、
前記異常時カウント誤差演算手段によって前記異常時カウント誤差ｎが０と演算された場合に該演算結果に基づく予め決められた報知を行う第１報知手段を備えている
ことを特徴とするモータ制御装置。
【請求項１１】
請求項８〜請求項１０の何れか１項に記載のモータ制御装置であって、
前記第１カウント値ｋａと前記第２カウント値ｋｂの和を前記ノミナルカウント値Ｎから減算することにより、前記補償区間において前記駆動状態検出手段により本来カウントされるべきカウント値である補償区間幅ｍを演算する補償区間幅演算手段と、
前記補償区間幅演算手段により演算された前記補償区間幅ｍが、予め設定した補償区間幅閾値より大きいか否かを判断する補償区間幅判断手段と、
を備え、
前記操作量補償手段は、前記補償区間幅判断手段により前記補償区間幅ｍが前記補償区間幅閾値以下と判断された場合に、前記補償操作量を出力する
ことを特徴とするモータ制御装置。
【請求項１２】
請求項１１に記載のモータ制御装置であって、
前記補償区間幅判断手段により前記補償区間幅ｍが前記補償区間幅閾値より大きいと判断された場合に該判断結果に基づく予め決められた報知を行う第２報知手段を備えている
ことを特徴とするモータ制御装置。
【請求項１３】
請求項１〜請求項１２の何れか１項に記載のモータ制御装置であって、
前記補償区間検出手段により前記補償区間が検出された後の前記被駆動体の駆動の際、前記被駆動体が前記補償区間に入る前に前記異常速度検知手段によって前記異常速度が検知された場合に、前記補償区間の開始位置を、現在検出されている位置よりも予め決められた量だけ前の位置へ更新する更新手段を備えている
ことを特徴とするモータ制御装置。
【請求項１４】
請求項１〜請求項１３の何れか１項に記載のモータ制御装置と、
インクを吐出することにより被記録媒体に画像を形成する記録ヘッドと、
前記被駆動体としての、前記記録ヘッドを搭載したキャリッジと、
を備えていることを特徴とする画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、被駆動体の駆動をリニアエンコーダからの信号に基づいて制御するモータ制御装置、及びこのモータ制御装置を搭載した画像形成装置に関する。
【背景技術】
【０００２】
インクジェットプリンタにおいては、記録ヘッドを搭載したキャリッジをモータによって駆動制御するために、一般に、所定間隔でスリットが形成されたリニアスケールを有するリニアエンコーダが用いられる。リニアエンコーダを用いたモータ制御装置では、リニアエンコーダから出力されるパルス状のエンコーダ信号に基づいてキャリッジの位置や速度等の駆動状態が検出され、その検出結果に基づくフィードバック制御が行われる。
【０００３】
ところで、リニアスケールには、インクジェットプリンタの製造ラインでインクが付着したり、ユーザによる使用時に機器内部のグリスが付着したりするなどして、汚れが付着してしまうことがある。リニアスケールに汚れが付着すると、キャリッジの検出速度が乱れ、実際の速度とは異なる速度が検出されるおそれがある。このようにキャリッジの速度が誤検出されてしまうと、その誤検出された速度に基づく不要なフィードバック制御がなされてキャリッジの実際の速度自体も乱れ、印字品質が劣化してしまう。
【０００４】
これに対し、特許文献１には、キャリッジの検出速度が異常であった場合に、その異常の出現区間が微小範囲ならば当該検出速度に代えて直前の検出速度を用いてモータを駆動制御し、連続した制御周期で速度異常が検出されたり同一箇所で複数回連続して速度異常が検出された場合には、エンコーダ汚れと判断することが記載されている。
【０００５】
また、特許文献２には、搬送ベルト等のベルト上にエンコーダスケールが設けられたレーザプリンタにおいて、スケールの継ぎ目やスケールに付着したトナーの影響などによって、演算速度が所定の正規範囲を逸脱していると判断された場合に、目標速度又は過去の演算速度の平均値をフィードバック量として操作量を演算することが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００６−２１３０４２号公報
【特許文献２】特開２００６−１７８３７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１，２のいずれにおいても、エンコーダスケールの汚れが発生している区間を正確には検出できず、エンコーダスケールの汚れに起因して生じる検出速度の異常を補償するための制御が必要以上になされ、制御性能が悪化するおそれがある。
【０００８】
しかも、汚れの影響を排除するために、速度異常が検出された場合には直前の検出速度や目標速度等をフィードバック量としてモータ制御を行うようにしているため、実際の位置における摺動負荷が考慮されず、制御精度が劣化するおそれがある。
【０００９】
本発明は上記課題に鑑みなされたものであり、リニアエンコーダにより検出された駆動状態に基づいて被駆動体をモータにより駆動制御するモータ制御装置において、被駆動体の駆動範囲のうちリニアスケールに汚れが付着している区間を特定し、その区間内でリニアスケールの汚れに起因した制御性能の劣化を効果的に抑制することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するためになされた請求項１に記載の発明は、予め設定された移動経路上をモータにより駆動される被駆動体の移動量に応じてパルス状のエンコーダ信号を出力するリニアエンコーダと、そのリニアエンコーダからのエンコーダ信号をカウントし、そのカウント値に基づいて被駆動体の速度及び位置を検出する駆動状態検出手段と、所定の演算タイミング毎に、駆動状態検出手段により検出された速度に基づいてモータを制御するための操作量を演算してモータへ出力する操作量演算手段と、を備えたモータ制御装置であって、駆動状態検出手段により検出された速度が予め設定された速度正常範囲から外れた異常速度であるか否かを検知する異常速度検知手段と、この異常速度検知手段によって異常速度が検知された場合に、まず被駆動体を移動経路の一端から駆動させてその駆動開始から異常速度検知手段により異常速度が検知されるまでのエンコーダ信号をカウントすることにより第１カウント値ｋａを計測し、さらに被駆動体を移動経路の他端から駆動させてその駆動開始から異常速度検知手段により異常速度が検知されるまでのエンコーダ信号をカウントすることにより第２カウント値ｋｂを計測して、各カウント値ｋａ，ｋｂに対応した位置の間を補償区間として検出する補償区間検出手段と、当該モータ制御装置における制御対象のノミナルモデルに対する操作量であるノミナル操作量が演算タイミング毎に記憶されているノミナル操作量記憶手段と、補償区間検出手段により補償区間が検出された後の被駆動体の駆動の際、駆動状態検出手段により検出された位置に基づいて被駆動体が補償区間に入ったかどうかを判断する補償区間判断手段と、この補償区間判断手段により被駆動体が補償区間に入ったと判断されている間、演算タイミング毎に、ノミナル操作量記憶手段に記憶されているノミナル操作量に基づいて予め決められた演算により補償操作量を生成し、その補償操作量を操作量演算手段による操作量に代えてモータへ出力する、操作量補償手段と、を備えている。
【００１１】
このように構成されたモータ制御装置では、異常速度が検知された場合、その異常速度がリニアエンコーダを構成するリニアスケールの汚れ等に起因するものであるとの一応の仮定の元で、その汚れ等が付着している区間を補償区間として特定する。そして、以後再び被駆動体を移動経路の端部から駆動させる際は、補償区間においては、操作量補償手段が、操作量演算手段により演算される操作量に代えて、ノミナル操作量に基づく演算により補償操作量を生成し、モータへ出力する。
【００１２】
従って、本発明のモータ制御装置によれば、補償区間内において、汚れ等に起因して生じる検出速度の変動の影響がモータ制御に反映されてしまうのを防止でき、被駆動体を安定して駆動させることができる。しかも、補償操作量によるモータ制御はあくまでも補償区間内で行われ、それ以外の区間では通常通り検出速度に基づいて演算される操作量が用いられるため、全体として制御性能の劣化を大幅に抑え、高精度にモータを制御することができる。また、補償区間で用いられる補償操作量は、予め記憶されているノミナル操作量に基づいて演算された値であるため、この補償操作量を補償区間で用いることで、補償区間内においてもより適切な制御を実現することができる。
【図面の簡単な説明】
【００１３】
【図１】実施形態のインクジェットプリンタの電気的構成を表すブロック図である。
【図２】実施形態のインクジェットプリンタにおける画像形成機構の概略構成を表す説明図である。
【図３】ＣＲリニアエンコーダからのＡ，Ｂ各相信号、及びＣＲリニアエンコーダ処理部にて生成されるエッジ検出信号を表す説明図である。
【図４】リニアスケールに付着した汚れの影響によって検出速度が変動することを説明するための説明図である。
【図５】ＡＳＩＣにて行われるキャリッジ駆動処理を表すフローチャートである。
【図６】図５のキャリッジ駆動処理におけるＳ１８０の補償区間対応制御処理の詳細を表すフローチャートである。
【図７】リニアスケールにおける汚れ区間（補償区間）の検出及びその検出結果に基づく補償制御を説明するための説明図である。
【図８】補償区間内で使用される補償操作量を説明するための説明図である。
【発明を実施するための形態】
【００１４】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
（１）インクジェットプリンタの構成
図１に、本実施形態のインクジェットプリンタ１の電気的構成を示す。インクジェットプリンタ１は、用紙Ｐ（図２参照）への画像形成を行うものであり、用紙Ｐへインク液滴を吐出する記録ヘッド１１と、この記録ヘッド１１が搭載されたキャリッジ１２と、このキャリッジ１２を主走査方向（用紙Ｐが搬送される副走査方向と直交する方向）へ往復駆動させるための駆動源であるキャリッジ（ＣＲ）モータ１３と、キャリッジ１２の駆動状態（位置や速度、移動方向等）を検出するためのＣＲリニアエンコーダ１４と、記録ヘッド１１を駆動してインク液滴を吐出させるための記録ヘッドドライバ１５と、ＣＲモータ１３を駆動するためのＣＲモータドライバ１６と、これら各ドライバ１５，１６を介して記録ヘッド１１やＣＲモータ１３の駆動を制御するＡＳＩＣ２と、を備えている。
【００１５】
なお、インクジェットプリンタ１は、図示は省略したものの、用紙Ｐを副走査方向へ搬送するための、搬送ローラやその駆動用モータ等からなる搬送機構も備えている。
ここで、インクジェットプリンタ１における、キャリッジ１２、ＣＲモータ１３、及びＣＲリニアエンコーダ１４等からなる画像形成機構の具体的構成について、図２を用いて説明する。図２に示すように、インクジェットプリンタ１の画像形成機構においては、用紙Ｐの幅方向（主走査方向）にガイド軸４１が設置され、このガイド軸４１に、記録ヘッド１１を搭載したキャリッジ１２が挿通されている。
【００１６】
キャリッジ１２は、ガイド軸４１に沿って設けられた無端ベルト４２に連結されている。無端ベルト４２は、ガイド軸４１の一端側に設置された従動プーリ４４と、ガイド軸４１の他端側に設置されたＣＲモータ１３の駆動プーリ４３との間に掛け止められている。これにより、キャリッジ１２は、無端ベルト４２を介して伝達されるＣＲモータ１３の駆動力により、ガイド軸４１に沿って主走査方向に往復駆動される。
【００１７】
ガイド軸４１の近傍には、主走査方向に所定の間隔でスリット４８が形成されたリニアスケール４６が、ガイド軸４１に沿って（即ちキャリッジ１２の移動経路に沿って）設置されている。また、キャリッジ１２におけるリニアスケール４６と対向する位置には、リニアスケール４６を挟んで発光部および受光部が配置された検出部４７が備えられており、リニアスケール４６と共にＣＲリニアエンコーダ１４を構成している。
【００１８】
検出部４７は、発光部及及び受光部からなる光ユニットを二組有し、発光部と受光部の間にリニアスケール４６が挟まれるように配置されている。そのため、キャリッジ１２の移動と共に検出部４７が移動すると、発光部の光がスリット４８を透過して受光部で受光される状態と、発光部の光がリニアスケール４６により遮られて受光部で受光されない状態とが交互に生じ、その状態変化がパルス信号として検出部４７から出力される。
【００１９】
具体的には、図３に示すように、検出部４７からは、キャリッジ１２の移動に応じて、各光ユニットに対応した、互いに位相差（本実施形態では１／４周期の位相差）を有する２種類のパルス信号（Ａ相信号，Ｂ相信号）が出力される。このＡ，Ｂ各相のパルス信号は、ＡＳＩＣ２内のＣＲリニアエンコーダ処理部３４（図１参照）に入力される。
【００２０】
ＣＲリニアエンコーダ処理部３４は、Ａ相信号（以下これを「エンコーダ信号」ともいう）の立ち上がりエッジ及び立ち下がりエッジを検出し、その検出毎にエッジ検出信号を生成する。そして、エッジ検出信号の生成の度にそのエッジ検出信号をカウントし、そのカウント値に基づいてキャリッジ１２の位置を検出する。また、ＣＲリニアエンコーダ処理部３４は、エッジ検出信号の生成の度に、ＣＲリニアエンコーダ１４の物理分解能と、前回エッジが検出されてから今回エッジが検出されるまでの時間とに基づく演算により、キャリッジ１２の速度を検出する。また、ＣＲリニアエンコーダ処理部３４は、Ａ，Ｂ各相のパルス信号の位相の違いに基づき、キャリッジ１２の移動方向を検出する。
【００２１】
記録制御部３１は、ＣＲリニアエンコーダ処理部３４にて検出されたキャリッジ１２の駆動状態に基づき、記録ヘッド１１を駆動させるための駆動指令を生成し、記録ヘッドドライバ１５へ出力する。
【００２２】
ＣＲモータ制御部３２は、基本的にはキャリッジ１２の駆動状態に基づくフィードバック制御（以下「通常制御」ともいう）を行う。即ち、所定の演算タイミング毎に、ＣＲリニアエンコーダ処理部３４にて検出された駆動状態に基づいて、ＣＲモータ１３を制御するための操作量（以下「通常操作量」と称す）Ｕａを演算する。そして、その通常操作量Ｕａに対応した駆動指令（ＰＷＭ信号など）をＣＲモータドライバ１６へ出力する。
【００２３】
但し、後述するように、補償制御情報設定部３６によりリニアスケール４６に汚れ等が付着していることが検出され、補償制御情報設定部３６から汚れ区間情報が伝達されてきた場合は、ＣＲモータ制御部３２は、その汚れ等が付着している区間（汚れ区間）では、検出速度等に基づく通常制御（フィードバック制御）に代えて補償制御を行う。
【００２４】
また、インクジェットプリンタ１は、ＡＳＩＣ２を含む当該インクジェットプリンタ１の各部を統括的に制御するＣＰＵ３と、ＣＰＵ３が実行するプログラム等が記憶されたＲＯＭ４と、ＣＰＵ３によるプログラム実行時に作業領域として使用されるＲＡＭ５と、後述するノミナルカウント値Ｎやノミナル操作量データを含む各種設定情報等が記憶されるＥＥＰＲＯＭ６と、図示しないパーソナルコンピュータ等に接続されて相互にデータ送受信するためのインタフェース（Ｉ／Ｆ）７と、各種操作ボタンや表示装置等を備えた操作・表示部８とを備え、これら及びＡＳＩＣ２がバス９を介して互いに接続されている。
【００２５】
用紙Ｐへの画像形成のためのキャリッジ駆動は、調整領域内の初期位置から開始される。その初期位置からの駆動が開始されると、キャリッジ１２は記録領域へ（順方向へ）加速し始め、やがて所定の目標一定速度に到達する。
【００２６】
本実施形態では、キャリッジ１２は、駆動開始（加速開始）後、目標一定速度にまだ到達していない加速期間中に記録領域へ入り、記録領域に入った後も加速を続けて、やがて目標一定速度へ到達する。目標一定速度に到達後、所定期間はその目標一定速度での定速駆動が行われるが、定速駆動期間が終わると減速が開始される。そして、減速開始から暫くして記録領域から待機領域へと移り、やがて停止することになる。
【００２７】
キャリッジ１２が記録領域を移動されている間、用紙Ｐへの１ライン分の画像形成が行われる。つまり本実施形態では、画像形成速度の高速化のために、定速駆動中だけでなくその前後の加減速期間でも画像形成が行われる。待機領域内での停止後は、キャリッジ１２は、この待機領域から調整領域へ向かう方向（つまり逆方向）へ移動し始める。そして、記録領域内で次の１ライン分の画像形成が行われ、再び調整領域内で停止する。この逆方向への移動時も、順方向への移動時と同様に、加減速期間中にも画像形成が行われる。
【００２８】
このようにしてキャリッジ１２が主走査方向へ往復移動されながら記録ヘッド１１により画像形成が行われることで、最終的に用紙Ｐへ１ページ分の画像が形成される。
（２）リニアスケールの汚れによる検出速度の変動について
図４に、リニアスケール４６に汚れが付着している例と、その場合にキャリッジ１２を定速駆動させたときのエンコーダ信号及びこのエンコーダ信号に基づいて検出される検出速度の例を示す。なお、図４に示す検出速度は、同図中、リニアスケール４６に対してキャリッジ１２が右方向に移動している場合の検出結果である。
【００２９】
図４の例では、リニアスケール４６にグリス等の汚れ７０が付着しているため、その汚れ７０が付着している領域内の１つのスリット４８はその汚れ７０によって覆われている。そのため、キャリッジ１２がその汚れ７０で覆われている領域に対応する区間を移動している間は、本来検出されるはずのエンコーダ信号のエッジが検出されない。これにより、キャリッジ１２は実際には定速移動しているにもかかわらず、エンコーダ信号に基づく検出速度は、図４に示すように、汚れ７０の影響を受けて大きく変動（低下）し、予め設定された速度正常範囲（速度下限閾値から速度上限閾値までの間）から外れてしまう。
【００３０】
このように検出速度が変動すると、実際には定速移動しているにもかかわらず、ＣＲモータ制御部３２は、その大きく低下した検出速度を目標速度（一定速度）に戻すべく、本来は必要のないフィードバック制御を行う。その結果、キャリッジ１２の実際の速度自体も乱れてしまう。
【００３１】
そこで、本実施形態のインクジェットプリンタ１では、補償制御情報設定部３６が、キャリッジ１２の検出速度が速度正常範囲から外れた異常速度であるかどうかを検知し、異常速度が検知された場合は、その異常速度がリニアスケール４６の汚れ等に起因するものか否かを判断する。そして、汚れ等の付着に起因するものである場合には、その付着している区間（汚れ区間）を特定し、その汚れ区間に関する情報である汚れ区間情報（詳細は後述）をＣＲモータ制御部３２へ伝達する。このようにして汚れ区間情報が伝達されると、ＣＲモータ制御部３２は、以後、その汚れ区間を補償区間として補償制御を行う。
【００３２】
尚、異常速度であるか否かの判断方法は種々考えられ、例えば目標速度に対する速度偏差が所定の閾値以内となる範囲を速度正常範囲としてそれを外れたら異常速度と判断してもよいし、速度偏差の変化量が所定の閾値を超えた場合に異常速度と判断してもよい。
【００３３】
（３）キャリッジ駆動処理の説明
次に、ＡＳＩＣ２にて行われるキャリッジ駆動処理を、図５を用いて説明する。図５のキャリッジ駆動処理は、ＡＳＩＣ２において主にＣＲリニアエンコーダ処理部３４（特に補償制御情報設定部３６）及びＣＲモータ制御部３２にて行われる。
【００３４】
ＣＰＵ３は、用紙Ｐへの画像形成を行う際、ＡＳＩＣ２に対し、キャリッジ駆動処理を含む各種処理の実行に必要な各種設定等を行う。ＡＳＩＣ２は、そのＣＰＵ３からの各種設定等に従い、キャリッジ駆動処理を実行する。ＣＰＵ３にて設定される項目の中には、キャリッジ１２の動作パターンも含まれている。即ち、用紙Ｐの大きさや紙質、画像形成の速度や品質などに応じた複数種類の動作パターンが設定される。そのため、ＡＳＩＣ２は、ＣＰＵ３にて設定される動作パターンに従ってキャリッジ１２を駆動させる。
【００３５】
なお、ＣＲリニアエンコーダ処理部３４は、このキャリッジ駆動処理と並行して、ＣＲリニアエンコーダ１４からのＡ，Ｂ各相信号に基づくキャリッジ１２の速度、位置、移動方向等の検出や、その検出速度が異常速度であるか否かの判断等も行う。
【００３６】
ＡＳＩＣ２は、このキャリッジ駆動処理を開始すると、まずＳ１１０にて、キャリッジ１２の１ライン分の走査（駆動）を開始する。そして、Ｓ１２０にて、前回の駆動時（回の１ライン分の走査時）までに異常速度が検知済みか否かを判断し、検知済みならば（Ｓ１２０：ＹＥＳ）Ｓ１８０の補償区間対応制御処理に進み、まだ検知されていない場合は（Ｓ１２０：ＮＯ）、通常制御に入る。
【００３７】
即ち、演算タイミング毎に（Ｓ１３０：ＹＥＳ）、Ｓ１４０にて通常制御処理を行う。具体的には、エンコーダ信号に基づいて検出された検出速度等に基づいて通常操作量Ｕａを演算し、その通常操作量Ｕａに対応した駆動指令を出力することにより、ＣＲモータ１３を駆動（ひいてはキャリッジ１２を駆動）させる。
【００３８】
１ライン分の走査が終了するまでは、演算タイミング毎にこのＳ１４０の通常制御処理を行う。１ライン分の走査が終了すると（Ｓ１５０：ＹＥＳ）、Ｓ１６０にてその１ライン分の走査中に異常速度が検知されたか否かを判断し、異常速度が検知された場合は（Ｓ１６０：ＹＥＳ）Ｓ２００以降に進み、異常速度が検知されなかった場合は（Ｓ１６０：ＮＯ）、Ｓ１７０にて、全ライン走査完了したか否かを判断する。そして、全ライン走査が完了するまでは上述したＳ１１０以降の処理による１ライン毎の走査を繰り返し、全ライン走査が完了すると（Ｓ１７０：ＹＥＳ）、このキャリッジ駆動処理を終了する。
【００３９】
一方、１ライン分の走査中に異常速度が検知された場合は（Ｓ１６０：ＹＥＳ）、Ｓ２００にて、すでに汚れ判定が実行済みか否かを判断する。汚れ判定とは、汚れ等が付着している区間（汚れ区間）を特定するためのＳ２１０〜Ｓ２５０の処理であり、換言すれば、後述する補償制御が行われる区間である補償区間を特定するための処理である。そのため、汚れ区間と補償区間とは実質的には同義（同じ区間を示すもの）である。すでに汚れ判定が実行済みならば（Ｓ２００：ＹＥＳ）、Ｓ２８０に進むが、まだ汚れ判定が実行されていない場合は（Ｓ２００：ＮＯ）、Ｓ２１０以降の汚れ判定を実行する。
【００４０】
ここで、汚れ判定について、図７を参照しつつ説明する。図７は、リニアスケール４６において近接する２箇所に汚れ７１，７２が付着している例を示している。汚れ判定を開始すると、まずＳ２１０にて汚れカウント値ｎを算出する。具体的には、まず、キャリッジ１２をその移動経路（走査域）の一端から他端までの全領域を駆動させて、その間のエンコーダ信号をカウントすることにより、異常時全カウント値Ｍを計測する。
【００４１】
一方、ＥＥＰＲＯＭ６には、リニアスケール４６が汚れ等のない正常な状態である場合にキャリッジ１２を移動経路の一端から他端までの全走査域を駆動させた場合のエンコーダ信号のカウント値が、ノミナルカウント値Ｎとして予め記憶されている。そこで、次式（１）の演算を行うことにより、汚れカウント値ｎを求める。
【００４２】
汚れカウント値ｎ ＝ ノミナルカウント値Ｎ − 異常時全カウント値Ｍ  ・・・（１）
そして、Ｓ２２０にて、その算出した汚れカウント値ｎに基づき、異常速度の原因がリニアスケール４６の汚れによるものか否かを判断する。具体的には、汚れカウント値ｎが０ではない場合は、異常速度がリニアスケール４６の汚れに起因するもの判断する。逆に、汚れカウント値ｎが０である場合は、リニアスケール４６の汚れとは別の原因で異常速度が検知されたものと判断する。
【００４３】
汚れカウント値ｎが０で、異常速度の原因が汚れによるものではないと判断した場合は（Ｓ２２０：ＮＯ）、Ｓ２６０にて、操作・表示部８が備える図示しない表示装置へのエラー表示を行い、続くＳ２７０にて、キャリッジ１２の駆動を停止する。
【００４４】
汚れカウント値ｎが０ではなく、異常速度の原因が汚れによるものであると判断した場合は（Ｓ２２０：ＹＥＳ）、Ｓ２３０にて汚れ区間幅ｍの算出を行う。具体的には、まずキャリッジ１２を移動経路の一端側から順方向へ駆動させ、その駆動開始から異常速度が検知されるまでのエンコーダ信号をカウントすることにより第１カウント値ｋａを計測する。次に、キャリッジ１２を移動経路の他端側から逆方向へ駆動させ、その駆動開始から異常速度が検知されるまでのエンコーダ信号をカウントすることにより第２カウント値ｋｂを計測する。そして、次式（２）の演算を行うことにより、汚れ区間幅ｍを求める。
【００４５】
汚れ区間幅ｍ ＝ ノミナルカウント値Ｎ −
（第１カウント値ｋａ ＋ 第２カウント値Ｋｂ）  ・・・（２）
この汚れ区間幅ｍは、図７に示すように、２つの汚れ７１，７２を含む汚れ区間の幅であり、換言すれば、この汚れ区間内において仮に汚れ７１，７２がなかったならばカウントされたであろうカウント値を意味するものである。
【００４６】
汚れ区間幅ｍの算出後は、続くＳ２４０にて、その算出された汚れ区間幅ｍが所定の汚れ幅閾値より大きいか否かを判断する。そして、汚れ区間幅ｍが汚れ幅閾値より大きい場合は（Ｓ２４０：ＹＥＳ）、汚れが広範囲にわたって付着しているものとして、Ｓ２６０よるエラー表示を行い、続くＳ２７０にてキャリッジ１２の駆動を停止する。汚れ区間幅ｍが広くなるケースとしては、単に1つの汚れが広範囲に渡って連続的に付着しているケースの他、狭い領域の汚れが断続的に点在しているケース等も想定される。
【００４７】
汚れ区間幅ｍが汚れ幅閾値以下である場合は（Ｓ２４０：ＮＯ）、Ｓ２５０にて、次式（３）の演算を行うことにより汚れ区間内実カウント値ｚを算出する。
汚れ区間内実カウント値ｚ ＝ 異常時全カウント値Ｍ −
（第１カウント値ｋａ ＋ 第２カウント値Ｋｂ）  ・・・（３）
なお、汚れ区間幅ｍは、上記式（２）以外にも、上記式（３）で得られた汚れ区間内実カウント値ｚに汚れカウント値ｎを加算することによっても算出できる。そのため、Ｓ２３０の汚れ区間幅ｍの算出に先立ってまずＳ２５０の汚れ区間内実カウント値ｚの算出を行い、その後に、ｍ＝ｚ＋ｎの演算により汚れ区間幅ｍを算出するようにしてもよい。
【００４８】
Ｓ２１０〜Ｓ２５０の汚れ判定は、補償制御情報設定部３６にて行われる。補償制御情報設定部３６は、汚れ判定を実行した後、得られた各値（ｍ，ｚ，ｋａ，ｋｂ）を、汚れ区間を示す汚れ区間情報としてＣＲモータ制御部３２へ伝達する。ＣＲモータ制御部３２は、その伝達されてきた汚れ区間情報が示す汚れ区間を補償区間として設定し、以後、その補償区間内（即ち汚れ区間内）では後述する補償制御を行う。
【００４９】
汚れ判定実行後は、再びＳ１１０に戻り、次の１ライン分の走査を開始する。そのため、汚れ判定が行われた後のキャリッジ駆動の際は、それ以前のキャリッジ駆動においてすでに異常速度が検知済みであることから、Ｓ１２０の判断処理では異常速度検知済みと判断され、Ｓ１８０の補償区間対応制御処理に進むことになる。
【００５０】
Ｓ１８０の補償区間対応制御処理は、図６のフローチャートに示す通りであり、まずＳ４１０にて、キャリッジ１２の現在位置が補償区間前であるか否かを判断する。そして、補償区間前ならば（Ｓ４１０：ＹＥＳ）、演算タイミング毎に（Ｓ４２０：ＹＥＳ）、Ｓ４３０以降の処理に進む。補償区間前かどうかの判断は、駆動開始後のエンコーダ信号のカウント値に基づいて行い、順方向駆動のときはカウント値が第１カウントｋａに達するまでは補償区間前であると判断し、逆方向駆動のときはカウント値が第２カウント値ｋｂに達するまでは補償区間前であると判断する。
【００５１】
Ｓ４３０では、図５のＳ１４０と同様、通常制御処理を行う。即ち、検出速度等に基づいて通常操作量Ｕａを算出し、キャリッジ１２を駆動させる。そして、Ｓ４４０にて、予め設定された補償係数算出開始条件（本発明の補償情報生開始条件に相当）が成立したか否か、即ちキャリッジ１２が初期不安定区間から出たか否かを判断する。初期不安定区間とは、キャリッジ１２の駆動開始後からその駆動状態が安定するまでの区間を意味するものであり、キャリッジ１２がまだ初期不安定区間内である（即ち補償係数算出開始条件が成立していない）ならば（Ｓ４４０：ＮＯ）、一旦この補償区間対応制御処理を終了し、初期不安定区間を抜けた（即ち補償係数算出開始条件が成立した）ならば（Ｓ４４０：ＹＥＳ）、Ｓ４５０に進む。Ｓ４５０では、現在の駆動方向に対応したノミナル操作量データから、現演算タイミングでのノミナル操作量Ｕｎを読み出す。
【００５２】
ここで、ノミナル操作量データ及びノミナル操作量Ｕｎについて説明する。ＥＥＰＲＯＭ６には、インクジェットプリンタ１のノミナルモデルに対する操作量（ノミナル操作量Ｕｎ）が、演算タイミング毎の時系列的なデータ群（ノミナル操作量データ）として、インクジェットプリンタ１の出荷前に予め記憶されている。ノミナル操作量Ｕｎとは、仮にインクジェットプリンタ１の実モデルがノミナルモデルと同じならばそのノミナル操作量Ｕｎをそのまま用いてキャリッジ１２を正常に駆動制御できる、という操作量である。
【００５３】
図８に、キャリッジ１２が１ライン走査される間の各演算タイミング毎の、ノミナル操作量データ（ノミナル操作量Ｕｎ）とキャリッジ駆動中に実際に算出される操作量の一例を示す。図８に示すように、通常制御処理によって演算される通常操作量Ｕａは、ノミナル操作量Ｕｎからずれた値となっている。
【００５４】
ノミナル操作量データは、動作パターン毎に、また、駆動方向毎に、ＥＥＰＲＯＭ６に記憶されている。そのため、Ｓ４５０では、現駆動時の動作パターンに対応し且つ現駆動方向に対応したノミナル操作量データの中から、現演算タイミングでのノミナル操作量Ｕｎ（Ｕｎｆ又はＵｎｒ）が読み出される。なお、Ｕｎｆは駆動方向が順方向の場合を示し、Ｕｎｒは駆動方向が逆方向の場合を示す。
【００５５】
そして、Ｓ４６０にて、現在の駆動方向に対応した補償係数α（αｆ又はαｒ）を算出する。補償係数αの算出は、Ｓ４３０で算出した通常操作量ＵａをＳ４５０で読み出したノミナル操作量Ｕｎで除算することにより行われる。つまり、補償係数αは、通常操作量Ｕａとノミナル操作量Ｕｎとの比率を表すものであり、換言すれば、ノミナルモデルと実モデルとのずれを定量的に示すものである。なお、αｆは駆動方向が順方向の場合を示し、αｒは駆動方向が逆方向の場合を示す。
【００５６】
また、キャリッジ１２の駆動開始直後は、ＣＲモータ１３に対して通常操作量Ｕａに応じた駆動力が与えられるものの、静止摩擦等によってすぐには動き出さずに検出速度が０のままという、不安定な状態となる。そのため、そのような不安定な状態のときの通常操作量Ｕａに基づいて得られる補償係数αは、信頼性の低い値であるおそれがある。
【００５７】
そこで本実施形態では、駆動開始後の、検出速度がまだ０のままの間は、不感帯として、その不感帯での駆動中は補償係数αの算出を行わない。更に、キャリッジ１２が不感帯を出た直後の所定区間においても、不感帯の影響を受けた精度の低い制御がなされるおそれがあるため、補償計数αの算出を行わない。
【００５８】
つまり、キャリッジ１２の駆動開始後、不感帯及びその直後の所定区間は、安定した制御がなされないおそれのある初期不安定区間であり、この初期不安定区間を駆動中は、補償係数算出開始条件がまだ不成立である（Ｓ４４０：ＮＯ）として補償係数αの算出は行わず、初期不安定区間を出た後に、補償係数算出開始条件が成立した（Ｓ４４０：ＹＥＳ）として補償係数αの算出を行うようにしている。なお、不感帯やその直後の所定区間の設定、延いてはそれら両者を含む初期不安定区間の設定は、適宜行うことができ、例えば駆動開始位置から所定距離としてもよいし、駆動開始から所定時間経過するまでとしてもよいし、キャリッジ１２の速度が所定速度に到達するまでとしてもよい。
【００５９】
このようにして、キャリッジ１２が補償区間に入るまでは、α算出区間として（但し初期不安定区間は除く）、演算タイミング毎に、現演算タイミングにおける補償係数αが算出され、その値はＡＳＩＣ２内にて保持される。但し本実施形態では、常に最新の補償係数αのみが保持される。
【００６０】
そして、キャリッジ１２が補償区間に入ると（Ｓ４１０：ＮＯ，Ｓ４２０：ＮＯ）、その補償区間の駆動中は、演算タイミング毎に（Ｓ４８０：ＹＥＳ）、補償制御を行う。即ち、まずＳ４９０にて、現在の駆動方向に対応したノミナル操作量データから、現演算タイミングでのノミナル操作量Ｕｎを読み出す。そして、Ｓ５００にて、Ｓ４９０で読み出したノミナル操作量Ｕｎに補償係数αを乗じることにより、補償操作量Ｕｃを算出する。
【００６１】
つまり、補償区間内においては、検出速度に基づいて通常操作量Ｕａを算出する通常制御処理を行うのではなく、図８に例示するように、演算タイミング毎に、その演算タイミングにおけるノミナル操作量Ｕｎをα倍することにより、補償操作量Ｕｃに換算する。そして、その補償操作量Ｕｃに基づいてＣＲモータ１３を駆動する。
【００６２】
補償制御を行っている間も、エンコーダ信号のカウントは継続され、ＣＲモータ制御部３２は、補償制御開始後のカウント値に基づいて補償区間の終了タイミングを検出する。具体的には、補償区間に入った後のカウント値が汚れ区間内実カウント値ｚに到達したかどうかを判断する。そして、汚れ区間内実カウント値ｚに到達したとき、それは補償区間内における最後のカウントであるため、更に次のカウントが行われるまで補償制御を継続する。そして、汚れ区間内実カウント値ｚに到達後、次のカウントが行われたときに、補償区間から出た（即ち汚れ区間から出た）ものと判断する。
【００６３】
キャリッジ１２が補償区間を出ると（Ｓ４１０：ＮＯ，Ｓ４２０：ＹＥＳ）、再び通常制御に戻る。即ち、演算タイミング毎に（Ｓ５１０：ＹＥＳ）、通常操作量Ｕａを算出し、その通常操作量Ｕａに基づいてＣＲモータ１３を駆動する。
【００６４】
但し、補償制御から通常制御に戻った後の最初の演算タイミングにおいて、単にそのときの検出速度等に基づいて通常操作量Ｕａを算出するようにすると、その直前の演算タイミングでの操作量（即ち補償区間最後の演算タイミングでの補償操作量Ｕｃ）から大きく変動してキャリッジ１２の動作が不安定になってしまうおそれがある。
【００６５】
そこで本実施形態では、補償区間を出た後の最初の演算タイミングでは（Ｓ５２０：ＹＥＳ）、通常操作量Ｕａとして、補償区間最後の演算タイミングで演算された補償操作量Ｕｃを設定する（Ｓ５３０）。そして、その次の演算タイミング以降、即ち補償区間を出てから２番目の演算タイミング以降は（Ｓ５２０：ＮＯ）、Ｓ４３０と同様、通常操作量Ｕａによる通常制御処理を行う（Ｓ５４０）。
【００６６】
ここで、補償区間終了時のエンコーダ信号のカウント値は、エンコーダスケール４６の汚れ等の影響により、汚れ等がない正常状態の場合のカウント値とは異なる値になっている可能性が高い。そこで、補償制御情報設定部３６は、キャリッジ１２が補償区間から出た時に、その時点（補償区間終了時）のエンコーダ信号のカウント値を、その時点におけるキャリッジ１２の位置に対応した、本来あるべき正しいカウント値に修正する。具体的には、補償区間終了時に、その時点での実際のカウント値に汚れカウント値ｎを加算することにより、カウント値の修正を行う。
【００６７】
補償区間を出て通常制御に戻った後、１ライン分の走査が終了すると（図５のＳ１９０：ＹＥＳ）、Ｓ１６０にて、その１ライン分の走査中に異常速度が検知されたか否かが判断される。
【００６８】
補償区間の開始位置は、第１カウント値ｋａ又は第２カウント値ｋｂに基づいて判断されるが、これら各カウント値ｋａ，ｋｂは、キャリッジ１２を端部から駆動させて異常速度が検知されるまでのカウント値に基づくものである。そのため、異常速度が検知されるタイミングによっては、必ずしも、その検知時のカウント値が汚れ区間の開始位置（汚れ等が付着している位置の端部）に対応しているとは限らない。つまり、ＣＲリニアエンコーダ処理部３４による異常速度の検知タイミングが遅れると、すでに汚れ区間に入ってしかもその汚れ区間内でカウントが進んだ段階で、異常速度が検知される可能性もある。
【００６９】
そこで、汚れ判定が行われた後の１ライン分の走査中においてもまだ異常速度が検知された場合は（Ｓ１６０：ＹＥＳ）、Ｓ２００に進む。この場合、少なくとも１回はすでに汚れ判定が行われているはずであるため、Ｓ２８０に進み、補償区間の開始位置を更新する。即ち、補償制御情報設定部３６が、補償区間の開始位置を、現在設定されている位置（カウント値）よりも前の位置に更新する。
【００７０】
例えば、補償区間開始タイミングが第１カウント値ｋａに設定されている場合に、補償区間開始前（即ちカウント値が第１カウント値ｋａに達する前）に異常速度が検知された場合は、補償区間開始タイミングを所定カウント分早いタイミングへ更新する。このようにして補償区間開始位置を更新した後も、まだ、補償区間開始前に異常速度が検知された場合は、更に補償区間開始位置を所定カウント分早いタイミングへ更新する。つまり、補償区間開始前に異常速度が検知されなくなるまで、補償区間開始位置を逐次更新（前倒し）していく。なお、一回の更新毎にどの程度ずつ更新していくかは適宜決めればよい。
【００７１】
また、上記のように補償区間開始位置を更新する場合は、併せて、汚れ区間幅ｍや汚れ区間内実カウント値ｚも更新するのが好ましい。例えば、補償区間開始位置が１カウント分早められた場合は、汚れ区間幅ｍ及び汚れ区間内実カウント値ｚも１カウント分増やす、といった具合である。
【００７２】
Ｓ２８０にて補償区間の開始位置が更新された後は、再びＳ１１０に戻り、次の１ライン分の走査が開始される。
（４）実施形態の効果等
以上説明した本実施形態のインクジェットプリンタ１によれば、補償区間内において、汚れ等に起因して生じる検出速度の変動の影響がＣＲモータ１３の制御に反映されてしまうのを防止でき、キャリッジ１２を安定して駆動させることができる。そのため、リニアスケール４５に汚れ等が付着していても、その影響を抑えてキャリッジ１２を高精度に制御でき、高品質の画像を形成することができる。
【００７３】
しかも、補償操作量Ｕｃによる制御はあくまでも補償区間内で行われ、それ以外の区間では通常操作量Ｕａによる通常制御が行われる。即ち、補償区間が終了したら再び、検出速度に基づいて演算された通常操作量Ｕａによる通常制御処理が行われる。また、補償区間の終了タイミングは、補償区間開始後のエンコーダ信号のカウント値と汚れ区間内実カウント値ｚとに基づいて正確に検出される。
【００７４】
そのため、補償操作量ＵｃによるＣＲモータ１３の駆動制御を必要十分に行うことができ、全体として制御性能の劣化を大幅に抑え、ＣＲモータ１３の制御、ひいてはキャリッジ１２の駆動制御を高精度に行うことができる。
【００７５】
また、補償区間で用いられる補償操作量Ｕｃは、予め記憶されているノミナル操作量Ｕｎに補償係数αを乗じたものであるが、この補償係数αは、補償区間に入る直前の演算タイミングにおける通常操作量Ｕａとノミナル操作量Ｕｎの比率である。そのため、経年変化や周囲環境（温度や湿度等）に起因して本来必要な操作量とノミナル操作量Ｕｎとの間にずれが生じていても、補償係数αを用いることでそのずれが加味された（実モデルに合った）適切な補償操作量Ｕｃを得ることができ、補償区間内においてもより適切且つ高精度な制御を実現することができる。
【００７６】
また、補償係数αは上記のように比率であることから、補償区間が、キャリッジ１２の定速駆動区間に設定されるか或いは加減速区間に設定されるかにかかわらず、補償制御を行うことが可能である。昨今、製品の小型化や印刷速度の高速化といった要望から、本実施形態のように加減速区間においても画像形成を行う製品が増えているが、そのような製品に対しても効果的に補償制御を行うことが可能である。
【００７７】
また、補償係数αの算出は、不感帯を含む初期不安定区間を抜けた後（補償係数算出開始条件が成立した後）に行うようにしているため、駆動開始直後の不安定な状態のときの通常操作量Ｕａを補償係数αの生成に用いないようにすることができ、高精度・高信頼性の補償係数αを生成することができる。なお、初期不安定区間を抜ける前に補償区間に入ってしまう場合は、補償係数αが算出されないことになる。そのような場合の対応としては、例えばノミナル操作量Ｕｎをそのまま補償操作量Ｕｃとしたり、或いはエラー扱いにしてキャリッジ駆動を停止したりするなど、適宜決めればよい。
【００７８】
また、補償区間を出た後の最初の通常操作量Ｕａとして、補償区間における最後の補償操作量Ｕｃが用いられるため、補償制御から通常制御に移行する際の操作量の大きな変動・不連続性を抑制でき、通常制御への切り替えをスムーズに行うことができる。
【００７９】
また、本実施形態では、補償区間終了時（キャリッジ１２が補償区間を出た時）、エンコーダ信号のカウント値を、その時の実際のカウント値に汚れカウント値ｎを加算することで、その時点において本来あるべきカウント値（本来の位置を示す値）に修正するようにしている。そのため、補償区間を通過した後のキャリッジ１２の実際の位置とカウント値とのずれをなくすことができ、補償区間通過後のキャリッジ１２の駆動制御を、補償区間の影響（汚れ等の影響）を受けることなく、より高精度に行うことができる。
【００８０】
また、本実施形態では、汚れカウント値ｎが０であった場合は、異常速度の原因がリニアスケール４６の汚れ以外のものであるとして、補償操作量Ｕｃによる補償制御は行わずに外部のユーザ等に対するエラー報知を行い、キャリッジ１２の駆動を停止させるようにしている。そのため、補償操作量Ｕｃによる補償制御の要否を正確に判断でき、ＣＲリニアエンコーダ１４以外の要因による異常が発生した場合にはそのことをユーザ等に知らしめて、その異常に応じた適切な対応をとるよう促すことができる。
【００８１】
更に、汚れ区間幅ｍが汚れ幅閾値より大きかった場合も、汚れ区間幅ｍが広すぎるものとしてユーザ等に対するエラー報知を行い、キャリッジ１２を停止させるようにしている。そのため、広い範囲にわたって補償操作量Ｕｃでキャリッジ１２を駆動させることにより生じ得る制御性能の劣化を防ぐことができ、ユーザ等に対しても適切な対応をとるように促すことができる。
【００８２】
また、本実施形態では、異常速度の検知によって汚れ区間（補償区間）が設定された後のキャリッジ１２の駆動の際、その設定された補償区間に入る前に再び異常速度が検知された場合は、補償区間の開始位置を、現在設定されている位置（カウント値）よりも前の位置に更新するようにしている。そのため、一旦設定された補償区間の開始位置が、実際に汚れ等が付着し始めている位置からずれていたとしても、そのずれを修正することができ、汚れ等が付着している区間全体に渡って確実に補償操作量Ｕｃによる制御が行われるようにすることができる。
【００８３】
なお、本実施形態において、ＣＲリニアエンコーダ処理部３４は本発明の駆動状態検出手段に相当し、ＣＲモータ制御部３２は本発明の操作量演算手段、補償情報生成手段、補償区間判断手段、及び操作量補償手段に相当し、ＥＥＰＲＯＭ６は本発明のノミナル操作量記憶手段及びノミナルカウント値記憶手段に相当し、操作・表示部８は本発明の第１報知手段及び第２報知手段に相当し、補償係数αは本発明の補償情報に相当する。
【００８４】
また、補償制御情報設定部３６は、本発明の異常速度検知手段、補償区間検出手段、異常時全カウント値計測手段、補償区間内実カウント値演算手段、異常時カウント誤差演算手段、修正手段、補償区間幅演算手段、補償区間幅判断手段、及び更新手段に相当する。
【００８５】
（５）変形例
上記実施形態では、補償係数αとして、補償区間に入る直前の演算タイミングにおける通常操作量Ｕａとノミナル操作量Ｕｎとの比率を用いたが、補償係数αの算出方法はこれに限定されず、例えば、補償区間に入る前の複数の演算タイミングにおける上記比率の平均値を補償係数αとしてもよい。複数の比率の平均値を補償係数αとることで、ノイズ等の影響が抑制された適切な補償操作量Ｕｃを得ることができる。
【００８６】
また例えば、通常操作量Ｕａとノミナル操作量Ｕｎとの差を補償係数αとしてもよい。但しその場合、補償区間を定速区間に限定するのが望ましい。また、例えば最小二乗法などを用いてノミナル操作量Ｕｎを通常操作量Ｕａに線形変換する関数を導出し、その関数を用いて、ノミナル操作量Ｕｎから補償操作量Ｕｃを得るようにすることもできる。
【００８７】
また、上記実施形態では、ノミナル操作量Ｕｎに補償係数αを乗じたものを補償操作量Ｕｃとしたが、実モデルとノミナルモデルとの差（ずれ）の程度によっては、ノミナル操作量Ｕｎをそのまま補償操作量Ｕｃとすることも可能である。
【００８８】
また、上記実施形態では、汚れによってスリット４８が覆われてしまうケース、即ち本来カウントされるはずのエンコーダ信号のエッジがカウントされないケースを例示したが、これとは逆に、例えばスリット４８にその幅よりも細い汚れが付着するなどして、本来カウントされるべきエッジよりも多いエッジが検出されてカウントされてしまうケースにおいても、上記実施形態と同様にして汚れ区間（補償区間）を特定し、補償制御を行うようにすることができる。
【００８９】
また、上記実施形態では、インクジェットプリンタ１におけるキャリッジ１２を駆動させるＣＲモータ１３の制御に対して本発明を適用した例を示したが、本発明は、リニアエンコーダを用いて駆動対象の移動量を検出することによりモータを制御するよう構成されたあらゆるモータ制御装置に対して適用できる。
【符号の説明】
【００９０】
１…インクジェットプリンタ、２…ＡＳＩＣ、３…ＣＰＵ、４…ＲＯＭ、５…ＲＡＭ、６…ＥＥＰＲＯＭ、７…Ｉ／Ｆ、８…操作・表示部、９…バス、１１…記録ヘッド、１２…キャリッジ、１３…ＣＲモータ、１４…ＣＲリニアエンコーダ、１５…記録ヘッドドライバ、１６…ＣＲモータドライバ、３１…記録制御部、３２…ＣＲモータ制御部、３４…ＣＲリニアエンコーダ処理部、３６…補償制御情報設定部、４１…ガイド軸、４２…無端ベルト、４３…駆動プーリ、４４…従動プーリ、４６…リニアスケール、４７…検出部、４８…スリット、７０〜７２…汚れ、Ｐ…用紙
【図１】
2011041375.tif 000003
【図２】
2011041375.tif 000004
【図３】
2011041375.tif 000005
【図５】
2011041375.tif 000006
【図６】
2011041375.tif 000007
【図８】
2011041375.tif 000008
【図４】
2011041375.tif 000009
【図７】
2011041375.tif 000010