以下に本発明の実施例として、第一実施例及び第二実施例の制御システム1並びにモータ制御装置50の構成を、図面を用いて説明する。但し、第一実施例及び第二実施例の制御システム1並びにモータ制御装置50の詳細な構成を説明するのに先立っては、第一実
施例及び第二実施例の制御システム1並びにモータ制御装置50の主な基本構成を説明する。
<基本構成>
第一実施例及び第二実施例の制御システム1は、図1に示すように、駆動対象10を駆動するモータ(直流モータ)20と、エンコーダ30と、エンコーダ30の出力信号に基づき、モータ20を制御し、これによって、駆動対象10の運動を制御するモータ制御装置50と、を備える。また、このモータ制御装置50は、モータドライバ51と、位置検出器53と、速度検出器55と、モータ制御ユニット60と、を備える。エンコーダ30としては、例えば、駆動対象10の移動方向に沿って取り付けられる直線型のエンコーダスケールと、駆動対象に取り付けられる光センサとを備えるリニアエンコーダが採用され得る。その他、エンコーダ30としては、例えば、モータ20の回転軸に接続されたロータリエンコーダが採用されてもよい。
モータドライバ51は、入力された操作量Uに対応する電流又は電圧をモータ20に印加して、モータ20を駆動する周知のモータドライバである。例えば、モータドライバ51は、アナログ制御又はPWM制御により操作量Uに対応する電流又は電圧をモータ20に印加する構成にすることができる。
一方、位置検出器53は、エンコーダ30の出力信号に基づき、駆動対象10の位置P又はモータ20の回転位置Xを検出するものである。この他、速度検出器55は、エンコーダ30の出力信号に基づき、駆動対象の速度V又はモータ20の回転速度ωを検出するものである。エンコーダ30としては、駆動対象10が所定距離移動する度、又はモータ20が所定角度回転する度にパルス信号を出力するものが知られている。具体的には、位相がπ/2異なる二つのパルス信号であるA相信号及びB相信号を、エンコーダ信号として出力するものが知られている。
このエンコーダ30を用いる場合、位置検出器53は、エンコーダ30から入力されるA相信号及びB相信号の位相差に基づき、駆動対象10の移動方向、又はモータ20の回転方向を検知することができる。例えば、位置検出器53は、モータ20が正回転している場合には、A相信号の立ち上りエッジが入力される度、内蔵のカウンタを1カウントアップする。また、位置検出器53は、モータ20が負回転している場合には、A相信号の立ち上りエッジが入力される度、上記カウンタを1カウントダウンする。このカウンタのカウントアップ及びカウントダウンにより、駆動対象10の位置P、又はモータ20の回転位置Xを検出(計測)することができる。この他、速度検出器55は、エンコーダ30からA相信号の立ち上りエッジが入力される時間間隔を計測する。そして、この時間に対応する駆動対象10の移動量、又はモータ20の回転量を、当該計測された時間間隔で除算する。これにより、駆動対象10の速度V、又はモータ20の回転速度ωを検出(計測)することができる。
エンコーダ30としてロータリエンコーダを用いる場合、モータ制御ユニット60は、位置検出器53から入力されるモータ20の回転位置Xから駆動対象10の位置Pを特定し、及び、速度検出器55から入力されるモータ20の回転速度ωから駆動対象10の速度Vを特定することができる。そして、位置検出器53から入力されるモータ20の回転位置X及び速度検出器55から入力されるモータ20の回転速度ωから特定される駆動対象10の位置P及び速度Vの少なくとも一方に基づいて、操作量Uを設定することができる。
一方、エンコーダ30としてリニアエンコーダを用いる場合、モータ制御ユニット60は、位置検出器53から入力される駆動対象10の位置P及び速度検出器55から入力される速度Vの少なくとも一方に基づいて、操作量Uを設定することができる。
そしてモータ制御ユニット60は、当該操作量Uをモータドライバ51に入力することにより、モータ20の回転を制御し、駆動対象10の運動をフィードバック制御する。具体的に、モータ制御ユニット60は、操作量Uとしてモータ20に印加する電流/電圧を指定する値である電流/電圧指令値を、モータドライバ51に入力することができる。この場合、モータドライバ51は、モータ制御ユニット60から入力される操作量Uとしての電流/電圧指令値に対応する電流/電圧でモータ20を駆動することにより、操作量Uに対応する電流/電圧でモータ20を駆動する構成にすることができる。
以下では、モータ制御ユニット60により駆動対象10の速度Vを制御する例を、第一実施例として説明し、モータ制御ユニット60による駆動対象10の位置Pを制御する例を、第二実施例として説明する。
<第一実施例>
まず、駆動対象10の速度Vを制御する制御システム1の例について説明する。駆動対象10の速度Vを制御する制御システム1としては、インクジェットプリンタ100におけるキャリッジ110の搬送制御システムを挙げることができる。図2には、インクジェットプリンタ100の内、キャリッジ110の搬送制御システムの概略構成を示す。
周知のようにインクジェットプリンタ100では、用紙Qを副走査方向(図2に示す紙面法線方向)に所定量搬送する。用紙Qの搬送を停止して、記録ヘッド120(所謂インクジェットヘッド)を搭載したキャリッジ110を主走査方向(図2に示す太矢印方向)に搬送する。このキャリッジ110の搬送時に、記録ヘッド120にインク液滴を吐出させることにより、用紙Qに画像を形成する。
図2に示すインクジェットプリンタ100では、主走査方向に延設されたガイドレール150にキャリッジ110が設けられる。キャリッジ110は、ガイドレール150によって、その移動を主走査方向に規制されている。また、キャリッジ110は、モータM1の動力を受けて回転するベルト131に連結されており、ベルト131の回転に伴って、主走査方向に移動する。
ベルト131は、モータM1に駆動されて回転する駆動プーリ133と従動プーリ134との間に巻回されており、モータM1に駆動されて駆動プーリ133が回転すると、駆動プーリ133からの動力を受けて、従動プーリ134と共に回転する。尚、駆動プーリ133は、モータM1に対し、直接、又は、ギヤ等を介して間接的に接続される。ベルト131は、ゴムやウレタンなどの材料により構成され、若干の伸縮性を有する。
また、キャリッジ110には、キャリッジ110の移動に応じてパルス信号(エンコーダ信号)を出力するエンコーダE1が取り付けられており、エンコーダE1(詳細には、エンコーダスケール及び光学センサを備えるエンコーダE1の内のキャリッジに固定された光学センサ)から出力されるパルス信号は、モータ制御装置170に入力される。
モータ制御装置170は、統括制御装置190からの指令に従ってモータM1を制御することにより、駆動対象であるキャリッジ110を、その速度が統括制御装置190から指定された速度Vcに到達するまで加速させる。また、キャリッジ110が速度Vcに到達すると、統括制御装置190から指定された減速開始位置にキャリッジ110が到達するまで、キャリッジ110を速度Vcで定速移動させる。次に、キャリッジ110が減速開始位置に到達すると、減速制御を開始してキャリッジ110を停止させる。図2下段には、このようなキャリッジ110の加速度及び速度の変化を、横軸を時間軸として概略的に示す。
モータ制御装置170は、統括制御装置190からの指令に従い、このようなキャリッジ110の速度制御を行いつつ、キャリッジ110を主走査方向において往復動させる。キャリッジ110の移動時には、統括制御装置190からの指令を受けて、印字制御装置180が記録ヘッド120からのインク液滴の吐出制御を行う。この動作によって、用紙Qには、印刷対象の画像データに基づく画像が、用紙Qに形成される。
尚、統括制御装置190は、インクジェットプリンタ100全体を統括制御するものである。例えば、外部のパーソナルコンピュータ等から印刷指令を受けると、印刷指令にて指定された印刷対象の画像データに基づく画像を用紙Qに形成するために、モータ制御装置170及び印字制御装置180、並びに、他の図示しない装置内の各部に指令入力する。そして、キャリッジ110を片道分移動させている時には、記録ヘッド120にインク液滴を吐出させる。また、キャリッジ110の片道分の移動が完了するのに合わせて、用紙Qを副走査方向に所定量送り出す一連の動作を繰返し実行する。この一連の動作の繰返しにより、用紙Qに印刷対象の画像データに基づく一連の画像を形成する。尚、用紙Qの送出量は、キャリッジ110の片道分の移動で用紙Qに形成される画像の副走査方向の幅に対応する。
図1に示す制御システム1のモータ制御装置50は、例えば、このようなインクジェットプリンタ100のモータ制御装置170として、インクジェットプリンタ100に組み込まれる。モータ制御装置50がインクジェットプリンタ100に組み込まれるケースでは、図1に示す駆動対象10、モータ20、及び、エンコーダ30は、夫々順に、キャリッジ110、モータM1及びエンコーダE1に対応する。
続いて、第一実施例のモータ制御装置50におけるモータ制御ユニット60の詳細構成について、図3及び図4を用いて説明する。インクジェットプリンタ100のような駆動対象10の速度制御が必要なシステムには、一例として第一実施例のモータ制御装置50が組み込まれる。インクジェットプリンタ100では、キャリッジ110の移動時にインク液滴の吐出制御を行う。インク液滴の吐出時には、キャリッジ110の速度制御の誤差が、インク液滴の着弾地点のずれに現れ、用紙Qに形成される画像の品質に影響を与える。そして、従来技術では、キャリッジ110に作用する動き出し時の不連続な摩擦力の変化等が原因で、加速領域での速度制御を精度よく行うことができない。このため一般的に、インク液滴の吐出については、キャリッジ110が定速移動しているときに限って行っている。
しかしながら、キャリッジ110の加速時にインク液滴を吐出することができない場合には、インク液敵の吐出領域と重複しないようにキャリッジ110の加速領域を十分に設定する必要がある。このため、インクジェットプリンタ100を小型化するのが難しい。一方、加速領域の一部をインク液滴の吐出領域とすることができれば、加速領域と吐出領域との重複領域のサイズに対応した量、インクジェットプリンタ100の筐体を小さくすることができる。
また、従来技術では、上述した理由で加速領域での速度制御を精度よく行うことができないことから、キャリッジ110を一定速度で安定制御できるようになるまでに時間を要する。更には、急な加速が生じることが原因でキャリッジ110や記録ヘッド120が加速方向に傾くと、このことが原因で、インク液滴の吐出位置に微小な誤差が生じて、用紙Qに形成される画像の品質が劣化する可能性がある。
そこで、第一実施例では、駆動対象10(キャリッジ110等)が所定速度Vcに到達するまでの加速領域において、駆動対象10の速度を高精度に制御できるように、モータ制御装置50を構成している。
具体的に、本実施例のモータ制御装置50は、図3及び図4に示す方法で駆動対象10の速度を制御する。即ち、本実施例では、図3に示すように、速度検出器55により駆動対象10の動き出し(変位)を検知するまでは、モータドライバ51に入力する操作量Uを漸次増加させる。これにより、モータ20から発生する力を徐々に増加させる。そして、駆動対象10の動き出しを検知すると(図3に示す時刻T0)、つまり、検出された駆動対象10の速度Vが、ゼロからゼロより大きい値となると、所定条件が満足されるまでは、モータドライバ51に入力する操作量Uを漸次減少させる。これにより、駆動対象10の動き出し直後の過度な加速を抑える。そして、駆動対象10の加速度が所定条件を満足する値に到達した時点から駆動対象10の速度Vを目標速度Vrにフィードバック制御することにより、高精度に駆動対象10の速度制御を実現する。
詳述すると、本実施例のモータ制御装置50が備えるモータ制御ユニット60は、図4に示す速度制御処理を実行することにより、速度ゼロから所定速度Vcまでの高精度な駆動対象10の速度制御を実現する。モータ制御ユニット60は、統括制御装置190等の指令元から駆動指令が入力されると、図4に示す速度制御処理を開始する。そして、上記指令元から指定された速度制御の実行時間である時間Taが経過するまで、図4に示す速度制御処理を、予め定められた制御周期毎に繰返し実行する。この動作により、モータ制御ユニット60は、上記駆動指令に基づく速度制御開始時刻t=0から時間Taが経過する時点(時刻t=Ta)で、駆動対象10が上記指令元から指定された速度Vcまで加速するように、駆動対象10の速度Vを制御する。
制御周期毎の速度制御処理において、モータ制御ユニット60は、具体的に次の処理を行う。まず、モータ制御ユニット60は、前回の速度制御処理で算出された操作量Uをモータドライバ51に入力することにより、操作量Uに対応した駆動電流又は電圧でモータ20を駆動させる(S110)。尚、駆動指令が入力された直後のS110では、操作量U=0を入力する。また、モータ制御ユニット60は、この現在時刻tの時点における速度検出器55からの入力値に基づいて駆動対象10の速度Vを特定する(S115)。更に、モータ制御ユニット60は、フラグF1が値1に設定されているか否かを判断する(S120)。尚、フラグF1は、駆動指令の入力時に値ゼロに初期化されるものである。
ここで、フラグF1が値1に設定されていないと判断すると(S120でNo)、モータ制御ユニット60は、S115で特定された現在時刻tでの駆動対象10の速度Vがゼロより大きい値であるか否かを判断する(S130)。そして、速度Vがゼロより大きい値ではない(即ち、速度Vがゼロである)と判断すると(S130でNo)、モータドライバ51に入力する操作量Uを、前回設定された値から所定値Auだけ増加した値に設定する(S140)。但し、駆動指令直後の速度制御処理では、操作量Uの前回値として、静止摩擦力に基づいて定められた初期値Csfを用いる。この初期値Csfは、例えば、設計段階で設計者により設定される。即ち、駆動指令直後の速度制御処理では、モータドライバ51に入力する操作量Uを、U=Csf+Auに設定する。その後、当該速度制御処理を一旦終了する。S140で設定された操作量Uは、次の周期で実行される速度制御処理のS110でモータドライバ51に入力される。
本実施例のモータ制御ユニット60は、このようにして、駆動対象10の速度Vが値ゼロから値ゼロより大きい値に変化するまでの期間は、操作量Uを値Auずつ漸次増加させる。これにより、駆動対象10に作用するモータ20からの動力を増加させる。このように操作量Uを漸次増加させると、駆動対象10が動き出すことで、駆動対象10の速度Vがゼロより大きい値となる時期が到来する。尚、特定される速度Vがゼロより大きい値となる時点は以下の時点に対応する。例えば、上述した手法でパルス信号の入力時間間隔に基づいて速度Vが検出される場合、モータ20が負荷に打ち勝つことで回転をし始め、こ
れによってエンコーダ30からパルス信号が二回以上、速度検出器55に入力されて、この二回のパルス信号の時間間隔に基づき、駆動対象10の速度Vとしてゼロより大きい値が検出される時点に対応する。
そして、駆動対象の速度Vとしてゼロより大きい値が検出された時点直後の周期で実行する速度制御処理において、モータ制御ユニット60は、駆動対象10の速度Vが値ゼロから値ゼロより大きい値であると判断して(S130でYes)、S150以降の処理を実行する。図3によれば、時刻t=T0が、S130で肯定判断される時点に対応し、S130での肯定判断は、駆動対象10の変位(動き出し)を検知する動作に対応する。尚、ここで説明する速度制御処理では、操作量Uを制御周期毎に切り替えるため、操作量Uは段階的に変化するが、図3に示す例では、操作量Uの変化の態様を簡単に示すために、模式的に線形で表しているので留意されたい。この他、図3に示すグラフは、駆動対象10の速度Vとして、速度検出器55によって駆動対象10の速度Vが検出された時点での、駆動対象10の速度Vをプロットしたものである。即ち、駆動対象10の速度Vが特定されるS115の時点ではない点に留意されたい。
S150に移行すると、モータ制御ユニット60は、今回特定された現在時刻tでの駆動対象10の速度Vと前回特定された駆動対象10の速度Vとの差ΔVを、その速度変化に要した時間間隔(速度制御処理の実行間隔である制御周期)ΔTで除算する。そして、現在時刻tでの駆動対象10の加速度A=ΔV/ΔTを特定し、この加速度Aが、次の条件式を満足するか否かを判断する(S150)。
A<2・(V−Vc)/(t−Ta) …(1)
上式におけるAは、現在時刻tでの加速度Aであり、Vは、S115で特定された現在時刻tでの駆動対象10の速度Vであり、Vcは、駆動指令元から指定された速度制御終了時の目標速度Vcであり、Taは、駆動指令元から指定された加速時間Taである。
本実施例では、上述したように所定条件が満足された時点(時刻t=T1(図3参照))からフィードバック制御を開始する。つまり、この所定条件が満足された時点は、上記条件式(1)が満足された時点に対応する。フィードバック制御では、次の関数に従って、各時刻tでの目標速度Vrを算出し、目標速度Vrと駆動対象10の速度Vとの偏差に基づいた操作量Uを算出する。
Vr=(V1−Vc)/(T1−Ta)2・(t−Ta)2+Vc …(2)
尚、V1は、フィードバック制御への切替時点(t=T1)での駆動対象10の速度Vである。このようにフィードバック制御で用いられる目標プロファイル(目標速度軌跡)は、加速時間Ta及び速度Vc、切替時点から時刻t=Taまでの残り時間(T1−Ta)、並びに、切替時点での駆動対象10の速度V1によって定まる。そしてこの目標プロファイルは、駆動対象10の切替時点での運動状態に応じた時刻t=Taまでの目標速度Vrの軌跡を示す目標プロファイルである。且つ、切替時点(時刻t=T1)での目標速度Vrが、切替時点での駆動対象10の速度V1となり、時刻t=Taでの目標速度Vrが、駆動指令元から指定された速度Vcとなる目標プロファイルである。
この目標速度軌跡を定義する式(2)で示される関数によっては、目標加速度Arが、目標速度Vrの一階時間微分で間接的に定義される。
Ar=dVr/dt={(V1−Vc)/(T1−Ta)2}・2(t−Ta)
…(3)
即ち、上記目標速度軌跡に従えば、フィードバック制御への切替時点(時刻t=T1)での目標加速度Arは、2・(V1−Vc)/(T1−Ta)となる。このことから理解できるように、S150では、条件式(1)が満足されているか否かを判断することによ
り、駆動対象10の加速度Aが、現時点からフィードバック制御を開始した場合に設定される目標プロファイルから定まる目標加速度Arを下回っているか否かを判断する。
そして、駆動対象10の加速度Aが高く、条件式(1)が満足されていないと判断すると(S150でNo)、モータ制御ユニット60は、S160に移行して、モータドライバ51に入力する操作量Uを、前回設定された値から所定値Adだけ減少させた値に設定する。その後、当該速度制御処理を一旦終了する。尚、S160で設定された操作量Uは、次の周期で実行される速度制御処理のS110でモータドライバ51に入力される。
本実施例のモータ制御ユニット60は、このようにして、駆動対象10の動き出し後、駆動対象の加速度Aが高く、条件式(1)が満足されない期間は、制御周期毎に、操作量Uを値Adずつ漸次減少させる。このように操作量Uを漸次減少させた場合には、駆動対象10の加速度Aが減少することで、条件式(1)が満足される時期が到来する。
そして、条件式(1)が満足されると、モータ制御ユニット60は、S150で肯定判断して、S170に移行する。また、S170では、フラグF1を値1に設定することで、次回以降の制御周期での速度制御処理では、S120で肯定判断されて、S190の処理が直ちに実行されるようにする。また、この処理を終えると、モータ制御ユニット60は、S175に移行し、目標プロファイル(目標速度軌跡)を定義するパラメータT1及びV1の値を記憶保持することによって、フィードバック制御に用いる目標プロファイルを、式(2)に従う現在の駆動対象10の運動状態に応じた目標プロファイルに設定する。即ち、現在時刻tを、時刻T1として記憶し、S115で特定された現在時刻tにおける駆動対象10の速度Vを、速度V1として記憶する。
その後、モータ制御ユニット60は、フィードバック制御に際して、目標速度Vrと駆動対象10の速度Vとの偏差e=Vr−Vから操作量Uを算出するのに用いられる伝達関数G(z)に含まれる積分要素Gi(z)の前回出力値を、次のように設定する(S180)。即ち、S180では、積分要素Gi(z)の前回出力値を、今回仮にS160の処理を実行したときに算出される操作量U=U1−Adに設定する。操作量U=U1は、現時点でモータドライバ51に設定されている最新の操作量U=U1である。但し、S180では、積分要素Gi(z)の前回出力値を、現時点でモータドライバ51に設定されている最新の操作量U=U1に設定されてもよい。
S190に移行すると、モータ制御ユニット60は、S115で特定された現在時刻tでの駆動対象の速度Vと、式(2)から算出される現在時刻tでの目標速度Vrとに基づき、偏差e=Vr−Vを算出し、この偏差eを、所定の伝達関数G(z)に入力して、偏差eに対応した操作量Uを算出する。尚、1/zは、遅延演算子である。
具体的に、本実施例では、伝達関数G(z)として、比例要素Gp(z)=Kp、微分要素Gd(z)=Kd・(z−1)/z、積分要素Gi(z)=Ki・z/(z−1)を含む伝達関数G(z)=Gp(z)+Gd(z)+Gi(z)を用いて、PID(比例積分微分)制御により駆動対象10の速度Vを制御する。上式におけるKpは比例ゲイン、Kdは微分ゲイン、Kiは積分ゲインである。
S150で肯定判断した制御周期である時刻t=T1でのS190においては、目標速度Vrとして、式(2)に従い、その時点での駆動対象10の速度V=V1が設定される。このため、上記時刻t=T1では、偏差eとして値ゼロが算出される(e=0)。また、時刻t=T1でのS190においては、微分要素Gd(z)で必要な偏差eの前回値として値ゼロが用いられる。従って、比例要素の出力Up及び微分要素の出力Udとしては、共にゼロが算出され、時刻t=T1の制御周期で算出される操作量Uは、積分要素Gi
(z)の出力Uiに一致する。そして、偏差e=0である場合の積分要素Gi(z)の出力Uiは、前回出力値に一致する。従って、時刻t=T1でのS190においては、操作量Uとして、S180で設定された値(「仮に今回S160の処理を行った場合に算出される操作量U1−Ad」又は「現時点でモータドライバ51に設定されている最新の操作量U1」)が算出されることになる。即ち、目標速度Vrと駆動対象10の速度Vとに基づくフィードバック制御の開始前後では、連続した操作量(又は同一の操作量)が、モータドライバ51に設定される。
モータ制御ユニット60は、このようにしてS190で偏差e=Vr−Vに基づく操作量Uを算出した後、当該速度制御処理を終了する。このようにして算出された操作量Uは、次の制御周期で、モータドライバ51に入力される。また、モータ制御ユニット60は、時刻t=T1以降の各制御周期において、S120で肯定判断しS190での処理を実行する動作を繰り返すことによって「偏差e=Vr−Vに基づく操作量Uを算出し、これをモータドライバ51に入力する処理」を繰返し行う。
以上には、速度制御処理の内容について説明したが、速度制御処理では、例えば、図5に示すような制御器60aを用いて操作量Uを算出することができる。図5に示す制御器60aは、初期制御ブロック610及びPID制御ブロック620を備える。初期制御ブロック610は、切替器SW1を備え、加算器611の前回出力値と切替器SW1から選択的に入力される値Au又は値−Adとを加算器611にて加算することにより、切替器SW1から選択的に入力される値Au又は値−Adの累積値を算出し、これを加算器613に入力する。具体的に、切替器SW1の入力が端子[1]に設定されている場合には、加算器611に値Auが入力され、切替器SW1の入力が端子[2]に設定されている場合には、加算器611に値−Adが入力される。また、この初期制御ブロック610は、加算器611からの出力値と初期値Csfとを加算器613で加算して、この加算値を、操作量Uffとして出力する。
一方、PID制御ブロック620は、目標速度Vrと駆動対象10の速度Vとの偏差eを算出する加算器621と、比例器623、微分器625、積分器627と、加算器629と、を備える。加算器629は、比例器623の出力Up、微分器625の出力Ud及び積分器627の出力Uiの合算値Up+Ud+Uiを、モータドライバ51に入力する操作量Uとして算出する。ここで、積分器627は、切替器SW2を備え、切替器SW2の入力が端子[2]に設定された状態では、前回の操作量Uiと今回の偏差eに基づく値Ki・eとを加算器627aにて加算して、この加算値を今回の操作量Uiとして出力する。一方で積分器627は、切替器SW2の入力が端子[1]に設定された状態では、初期制御ブロック610の出力Uffと今回の偏差eに基づく値Ki・eとを加算器627aにて加算し、この加算値を今回の操作量Uiとして出力する。
この制御器60aを用いる場合、モータ制御ユニット60は、速度制御処理において、具体的に次のような処理を行うことができる。即ち、S140では、目標速度Vrとして、S115で特定された駆動対象10の速度Vと同一値を設定し、切替器SW1の入力を端子[1]に設定し、切替器SW2の入力を端子[1]に設定する。このようにすると、加算器621の出力はゼロであるので、比例器623の出力Up及び微分器625の出力Udはゼロとなる。そして、積分器627からは、初期制御ブロック610の出力である操作量Uffが出力される。結果として、制御器60aからは、操作量Uとして、操作量Uffの前回値に値Auが加算された値が出力される。
また、S160では、目標速度Vrとして、S115で特定された駆動対象10の速度Vと同一値を設定し、切替器SW1の入力を端子[2]に設定し、切替器SW2の入力を端子[1]に設定する。このようにすると、制御器60aからは、操作量Uとして、操作
量Uffの前回値から値Adが減算された値が出力される。
また、S180の処理については実行せずに、S190では、次の処理を行う。即ち、目標速度Vrとして、式(2)に従う速度を設定すると共に、時刻t=T1では、切替器SW1の入力を端子[2]に設定し、切替器SW2の入力を端子[1]に設定することで、積分器627の加算器627aに、前回の操作量Uffから値Ad減算された値が入力されるようにする。一方、時刻t=T1を超えた各時刻tでは、切替器SW2の入力を端子[2]に設定することで、積分器627の加算器627aに、積分器627の前回出力値が入力されるようにする。このような処理を行うことで、制御器60aを用いて、上述した処理と同様の処理を行うことができる。
以上、本実施例のモータ制御装置50の構成について説明したが、本実施例の手法で駆動対象10の速度制御を行うと、駆動対象10の動き出し(変位)時にフィードバック制御を実行しない。よって、駆動対象10が速度Vcに到達するまでの加速プロセスにおける駆動対象10の速度制御を精度よく行うことができる。即ち、目標速度軌跡からのずれを抑えて、駆動対象10を精度よく速度Vcまで加速させることができる。特に、本実施例によれば、フィードバック制御への切替時点(時刻t=T1)での目標速度Vrを、その時点での駆動対象10の速度Vに設定し、切替時点での目標加速度Arを、その時点での駆動対象10の加速度Aに略一致する値に設定する。よって、滑らかにフィードフォワード制御(初期制御)からフィードバック制御に切り替えることができ、駆動対象10を精度よく速度Vcまで加速させることができる。
更に付言すれば、本実施例によれば、フィードバック制御への切替前後における操作量Uが連続又は一致するように、操作量Uを演算するので、フィードフォワード制御からフィードバック制御への切替を原因とした速度変動が生じるのを極力抑えることができ、駆動対象10を精度よく速度Vcまで加速させることができる。
比較例として、図8には、駆動対象10の動き出し前からフィードバック制御により、駆動対象10の速度Vを目標速度Vrに制御した場合の、駆動対象10の目標速度Vr及び実速度V、並びに、操作量Uの時間変化の態様を示す。このように従来技術によれば、駆動対象10が動き出すまでに操作量Uが大きくなりすぎ、一方で駆動対象10が動き出して、摩擦力が小さくなり駆動対象10、又はモータ20に作用する負荷が小さくなると、必要以上に操作量Uが小さくなりすぎ、速度Vの振動が生じる。従って、駆動対象10を目標速度軌跡に従って精度よく速度Vcまで加速させることができない。
一方、本実施例によれば、図3に示すように駆動対象10を目標速度軌跡に従って精度よく速度Vcまで加速させることができる。従って、本実施例のモータ制御装置50を、例えば、インクジェットプリンタ100のモータ制御装置170として用いれば、加速領域においてインク液滴の吐出を行っても目標速度軌跡に基づくタイミングでインク液滴の吐出を行うことで、想定された地点にインク液滴を着弾させることができ、高品質な画像を用紙Qに形成することができる。
以上には、駆動対象10に作用する摩擦力が静止摩擦力から動摩擦力に変化することを原因とした速度Vの振動について説明した。一方で、インクジェットプリンタ100のように、ベルト131を通じてキャリッジ110にモータM1からの動力を伝達し、キャリッジ110を搬送する搬送システムでは、ベルト131の伸びによって、モータM1から生じる動力が直接的にキャリッジ110に伝わらないことがある。そのため、ベルト131が十分に伸びるまでは、キャリッジ110に十分な動力が伝わらない。この現象は、特にキャリッジ110の動き出し時に発生する。そして、ベルト131が十分に伸びキャリッジ110が動き出し始めるとキャリッジ110が急加速するといった現象が生じる。本
実施例のモータ制御装置50によれば、このようなベルト131の伸びに起因する急加速及びそれに起因した速度の振動現象についても抑えることができる。
<第二実施例>
第二実施例のモータ制御装置50は、駆動対象10の位置Pを制御する制御システム1に用いられるものであるが、このような制御システム1としては、インクジェットプリンタ200における用紙Qの搬送制御システムを挙げることができる。図6には、インクジェットプリンタ200の内、用紙Qの搬送制御システム周辺の概略構成を示す。
インクジェットプリンタ200では、インクジェットプリンタ100と同様、まず用紙Qを副走査方向(図6に示す太矢印方向)に所定量搬送する。用紙Qの搬送を停止して、記録ヘッド220を搭載したキャリッジ210を主走査方向(図6紙面法線方向)に搬送する。このキャリッジ210の搬送時に、記録ヘッド220にインク液滴を吐出させることにより、用紙Qに画像を形成する。このインクジェットプリンタ200は、プラテン260の上流側に、搬送ローラ230及びピンチローラ235を備え、プラテン260の送り出し方向の下流側に、排紙ローラ240及びピンチローラ245を備える。また、プラテン260上に、用紙Qに対して画像形成可能な記録ヘッド220及び記録ヘッド220を搬送するためのキャリッジ210を備える。この他、インクジェットプリンタ200は、搬送ローラ230及び排紙ローラ240を駆動するためのモータM2、このモータM2の回転軸に取り付けられたエンコーダE2、モータM2を制御するモータ制御装置270、並びに、モータ制御装置270を含む装置内各部に対して指令入力して、インクジェットプリンタ200全体を統括制御する統括制御装置290を備える。
搬送ローラ230及び排紙ローラ240は、モータM2からの動力を受けて連動するように回転する。搬送ローラ230とピンチローラ235との間には、図示しない給紙トレイから用紙Qが供給され、給紙された用紙Qは、搬送ローラ230とピンチローラ235との間で挟持されて、搬送ローラ230の回転により下流側(図中太矢印方向)に搬送される。また、搬送ローラ230の回転により搬送されて排紙ローラ240に到達した用紙Qは、排紙ローラ240とピンチローラ245との間で挟持されて、排紙ローラ240の回転により送り出し方向の下流に搬送される。この搬送ローラ230及び排紙ローラ240の同期動作により、用紙Qは、図示しない排紙トレイに排出される。
インクジェットプリンタ200では、外部のパーソナルコンピュータ等から印刷指令を受信すると、統括制御装置290が、印刷指令にて指定された印刷対象の画像データに基づく画像を用紙Qに形成するために、モータ制御装置270に対し、搬送ローラ230及び排紙ローラ240を所定量回転させるように駆動指令を入力する。この駆動指令に従って、モータ制御装置270は、搬送ローラ230及び排紙ローラ240が所定量回転するようにモータM2を制御する。この際には、エンコーダE2からの出力信号に基づいて、モータM2を制御する。
統括制御装置290は、このような駆動指令の入力を繰返し実行することにより、モータ制御装置270を通じて、用紙Qを所定量ずつ記録ヘッド220による画像形成位置に搬送する。そして、用紙Qを所定量ずつ搬送しては、用紙Qの搬送方向とは直交する主走査方向(図6紙面法線方向)に、記録ヘッド220を搬送しつつ、記録ヘッド220に印刷対象の画像データに基づくインク液滴の吐出動作を実行させることにより、プラテン260上の用紙Qに印刷対象の画像データに基づく画像を形成する。尚、記録ヘッド220のインク液滴の吐出動作は、少なくとも用紙Qが所定量搬送された後に、当該搬送を停止した状態で実行される。また、記録ヘッド220を1回搬送する中でのインク液滴の吐出動作の実行が終了すると、再度用紙Qが所定量送り出される。
このようなインクジェットプリンタ200のモータ制御装置270には、用紙Qの搬送に際して、高精度な位置制御が要求されるが、第二実施例のモータ制御装置50は、例えば、このようなインクジェットプリンタ200のモータ制御装置270として、インクジェットプリンタ200に組み込むことができる。モータ制御装置50が、このようなインクジェットプリンタ200のモータ制御装置270に組み込まれる場合、図1に示す駆動対象10、モータ20、及び、エンコーダ30は、夫々順に、搬送ローラ230(又は排紙ローラ240又は用紙Q)、モータM2及びエンコーダE2に対応する。
続いて、第二実施例のモータ制御装置50におけるモータ制御ユニット60の詳細構成について、図7及び図8を用いて説明する。但し、第二実施例のモータ制御装置50は、第一実施例と基本思想を同じくするものであり、駆動対象10の速度制御を行うか、それとも位置制御を行うかといった点で、第一実施例のモータ制御装置50と相違する構成を備える程度のものである。従って、以下では、第一実施例のモータ制御装置50と共通する構成の説明を適宜省略する。
本実施例のモータ制御ユニット60は、統括制御装置290等の指令元から駆動指令が入力されると、図7に示す位置制御処理を開始し、上記指令元から指定された時間Tbが経過するまで、図7に示す位置制御処理を、予め定められた制御周期毎に繰返し実行する。この動作により、モータ制御ユニット60は、上記駆動指令に基づく位置制御開始時刻t=0から時間Tbが経過する時点(時刻t=Tb)で、駆動対象10が上記指令元から指定された目標停止位置Pcまで変位して停止するように、駆動対象10の位置Pを制御する。
上記制御周期毎の位置制御処理において、モータ制御ユニット60は、具体的に次の処理を行う。まず、前回の位置制御処理で算出された操作量Uをモータドライバ51に入力することにより、操作量Uに対応した駆動電流又は電圧でモータ20を駆動させる(S210)。尚、駆動指令が入力された直後のS210では、操作量U=0を入力する。
また、モータ制御ユニット60は、この時点における位置検出器53からの入力値に基づいて現在時刻tでの駆動対象10の位置Pを特定する(S215)。但し、ここで言う駆動対象10の位置Pは、駆動指令が入力された時点での駆動対象10の停止地点を原点(ゼロ)とした位置であって、駆動対象10の駆動方向を正方向とする位置である。
更に、モータ制御ユニット60は、フラグF2が値1に設定されているか否かを判断する(S220)。尚、フラグF2は、駆動指令の入力時に値ゼロに初期化される。ここで、フラグF2が値1に設定されていないと判断すると(S220でNo)、モータ制御ユニット60は、S215で特定された現在時刻tでの駆動対象10の位置Pがゼロより大きい値であるか否かを判断する(S230)。そして、位置Pがゼロより大きい値ではないと判断すると(S230でNo)、モータドライバ51に入力する操作量Uを、前回設定された値から所定値Auだけ増加した値に設定する(S240)。但し、駆動指令直後の位置制御処理では、操作量Uの前回値として、第一実施例と同様に初期値Csfを用いる。即ち、駆動指令後の初回の位置制御処理では、モータドライバ51に入力する操作量Uを、U=Csf+Auに設定する。その後、当該位置制御処理を一旦終了する。S240で設定された操作量Uは、次の周期で実行される位置制御処理のS210でモータドライバ51に入力される。
本実施例のモータ制御ユニット60は、このようにして、位置検出器53から入力される値から特定される駆動対象10の位置Pが値ゼロから値ゼロより大きい値に変化するまでの期間は、操作量Uを値Auずつ漸次増加させることにより、駆動対象10に作用するモータ20からの動力を増加させる。このように操作量Uを漸次増加させると、駆動対象
10が動き出すことで、駆動対象10の位置Pがゼロより大きい値となる時期が到来する。そして、駆動対象10の位置Pとしてゼロより大きい値が特定されると、モータ制御ユニット60は、230で肯定判断して、S250以降の処理を実行する。具体的に、S250に移行すると、モータ制御ユニット60は、現在時刻tでの駆動対象10の速度Vが、次の条件式を満足するか否かを判断する。
V<2・(P−Pc)/(t−Tb) …(4)
上式において、Vは、現在時刻tでの駆動対象10の速度Vであり、Pcは、駆動指令元から指定された目標停止位置Pcであり、Tbは、駆動指令元から指定された目標停止位置Pcに駆動対象10を停止させるまでの時間である。駆動対象10の速度Vは、S215で速度検出器55から入力される値から特定することが可能であるが、今回特定された駆動対象10の位置Pと前回の駆動対象10の位置Pとの差ΔPを、その位置変化に要した時間間隔(制御周期ΔT)で除算することによって、算出されてもよい。
本実施例では、上記駆動指令が入力された後、条件式(4)が満足された時点でフィードバック制御を開始する。一方、フィードバック制御では、次の関数に従って、各時刻tでの目標位置Prを算出し、目標位置Prと駆動対象10の位置Pとの偏差に基づいた操作量Uを算出する。
Pr=(P1−Pc)/(T1−Tb)2・(t−Tb)2+Pc …(5)
P1は、フィードバック制御への切替時点(時刻t=T1)での駆動対象10の位置Pである。このようにフィードバック制御で用いられる目標プロファイル(目標位置軌跡)は、予め定められる時間Tb及び位置Pc、切替時点から時刻t=T1までの残り時間(Tb−T1)、並びに、切替時点での駆動対象10の位置P1によって定まる。そしてこの目標プロファイルは、切替時点での目標位置Prが切替時点での駆動対象10の位置P1である。且つ、時刻t=Tbでの目標位置Prが目標停止位置Pcである切替時点での駆動対象10の運動状態に応じた目標位置Prの軌跡を示す目標プロファイルである。
この目標位置軌跡を定義する式(5)によっては、目標速度Vrが、目標位置Prの一階時間微分で間接的に定義される。
Vr=dPr/dt={(P1−Pc)/(T1−Tb)2}・2(t−Tb)
…(6)
この上記目標位置軌跡に従えば、フィードバック制御への切替時点(時刻t=T1)での目標速度Vrは、2・(P1−Pc)/(T1−Tb)となる。
即ち、S250では、式(4)に従う条件式が満足されているか否かを判断することにより、駆動対象10の速度Vが、現在時刻tからフィードバック制御を開始した場合の目標速度Vrを下回っているか否かを判断する。そして、駆動対象10の速度Vが高く、上記条件式(4)が満足されていないと判断すると(S250でNo)、S260に移行し、モータドライバ51に入力する操作量Uを、前回設定された値から所定値Adだけ減少させた値に設定する。その後、当該位置制御処理を一旦終了する。S260で設定された操作量Uは、次の周期で実行される位置制御処理のS210でモータドライバ51に入力される。
本実施例のモータ制御ユニット60は、このようにして、駆動対象10の動き出し後、駆動対象の速度Vが高く、条件式(4)が満足されない期間は、制御周期毎に、操作量Uを値Adずつ漸次減少させる。このように操作量Uを漸次減少させた場合には、駆動対象10の速度Vが減少することで、条件式(4)が満足される時期が到来する。そして、条件式(4)が満足されると、モータ制御ユニット60は、S250で肯定判断して、S270に移行する。S270において、モータ制御ユニット60は、フラグF2を値1に設定することで、次回以降の位置制御処理では、S220で肯定判断されて、S290の処
理が直ちに実行されるようにする。
S270の処理を終えると、モータ制御ユニット60は、S275に移行し、目標プロファイル(目標位置軌跡)を定義するパラメータT1及びP1の値を記憶保持することによって、フィードバック制御に用いる目標プロファイルを、式(5)に従う現在の駆動対象10の運動状態に応じた目標プロファイルに設定する。即ち、現在時刻tを、時刻T1として記憶し、S215で特定された現在時刻tにおける駆動対象10の位置Pを、位置P1として記憶する。
その後、モータ制御ユニット60は、S290に移行し、S215で特定された現在時刻tでの駆動対象の位置Pと、式(5)から算出される現在時刻tでの目標位置Prとに基づき、偏差e=Pr−Pを算出し、この偏差eを、所定の伝達関数H(z)に入力して、偏差eに対応した操作量Uを算出する。尚、本実施例では、伝達関数H(z)として、比例要素Hp(z)=Kp及び微分要素Hd(z)=Kd・(z−1)/zを含む伝達関数H(z)=Hp(z)+Hd(z)を用いて、PD(比例微分)制御により駆動対象10の位置Pを制御する。但し、上式におけるKpは、比例ゲイン、Kdは、微分ゲインであり、時刻t=T1でのS290においては、微分要素Hd(z)で必要な偏差eの前回値として値ゼロが用いられる。
モータ制御ユニット60は、このようにしてS290で操作量Uを算出した後、当該位置制御処理を終了する。このようにして算出された操作量Uは、次の制御周期で、モータドライバ51に入力される。
以上、第二実施例のモータ制御装置50の構成について説明したが、本実施例のモータ制御装置50によれば、駆動対象10の駆動開始時からフィードバック制御を行う従来装置よりも、駆動対象10を高精度に目標停止位置Pcまで目標位置軌跡に従って変位させることができる。即ち、本実施例のモータ制御装置50によれば、駆動開始時からしばらくはフィードバック制御を実行しないので、操作量Uや偏差e=Pr−Pの振動を抑えることができ、従来のように振動の影響が響くことが原因で目標停止位置Pcへの停止精度が劣化するのを抑えることができる。
従って、本実施例のモータ制御装置50を、インクジェットプリンタ200のモータ制御装置270として用いれば、統括制御装置290から指定された搬送量に対応する位置Pcまで、用紙Qを高精度に副走査方向に搬送して停止させることができ、用紙Qに対して高品質な画像を形成することができる。
<対応関係>
ここで、用語間の対応関係について説明する。位置検出器53及び速度検出器55によって実現される処理並びにモータ制御ユニット60が実行するS115,S215の処理は、計測手段によって実現される処理の一例に対応する。また、モータドライバ51は、駆動装置の一例に対応し、モータ制御ユニット60が実行するS110,S210,S190,S290の処理やPID制御ブロック620によって実現される処理は、主制御手段によって実現される処理の一例に対応し、モータ制御ユニット60が実行するS110,S210,S140,S160,S240,S260の処理は、初期制御手段によって実現される処理の一例に対応する。
この他、モータ制御ユニット60が実行するS130,S230の処理は、検知手段によって実現される処理の一例に対応し、モータ制御ユニット60がS150,S250で条件式が満足されているか否かを判断して、この判断結果によって操作量Uの設定方法を切り替える処理、及び、S175,S275でパラメータT1,V1,P1を設定するこ
とにより、式(2)(5)に従う目標プロファイル(目標速度軌跡又は目標位置軌跡)を設定する処理は、切替設定手段によって実現される処理の一例に対応する。また、記録ヘッド120を搭載したキャリッジ110は、画像形成ユニットの一例に対応し、モータM1、ベルト131、プーリ133,134、及びガイドレール150は、搬送ユニットに一例に対応し、印字制御装置180は、記録制御ユニットの一例に対応する。
また、本発明は、上記実施例に限定されるものではなく、種々の態様を採ることができる。例えば、上記実施例では、エンコーダ30としてロータリエンコーダを用いる場合、位置検出器53により検出されるモータ20の回転位置X又は速度検出器55により検出されるモータ20の回転速度ωから、駆動対象10の位置P又は速度Vを特定して、この位置P又は速度Vを目標値に合わせるようにモータ制御を行うようにした。しかし、モータ20の回転位置X又は回転速度ωと、駆動対象10の位置P又は速度Vとは、その尺度が異なる程度のものである。つまり、当然のことながら、位置検出器53により検出されるモータ20の回転位置X又は速度検出器55により検出されるモータ20の回転速度ωを直接用いて、これを目標値に合わせるようにモータ制御を行うことにより、間接的に、駆動対象10の位置制御又は速度制御を行うようにしてもよい。
また、上記実施例によれば、エンコーダ30としてロータリエンコーダが用いられる場合、駆動対象10の位置P及び速度Vは、モータ20の回転軸に接続されたエンコーダ30の出力信号により検出されるモータ20の回転位置X及び回転速度ωに基づいて、特定されていた。しかしながら、ロータリエンコーダは、駆動対象10に接続されてもよく、駆動対象10の位置P及び速度Vは、ロータリエンコーダの出力信号から直接検出されても良い。例えば、ロータリエンコーダは、搬送ローラ230の回転軸に接続され得る。
また、上記実施例では、S140,S240でモータドライバ51に入力する操作量Uを漸次増加させるようにしたが、S140,S240では、操作量Uとして固定値を設定してもよい。但し、操作量Uとして一定値を設定する場合には、駆動対象10が静止摩擦に打ち勝って動き出すのに必要な操作量Uの値を適切に求める必要がある。