以下に添付図面を参照して、駆動制御装置、駆動制御方法およびプログラム、ならびに、画像形成装置の実施形態を詳細に説明する。
なお、以下では、各実施形態に係る駆動制御装置を画像形成装置、例えばカラー画像を形成する複写機に適用した例を挙げて説明するが、適用可能な装置はこれに限られるものではない。例えば、PC(パーソナルコンピュータ)などの外部コントローラから画像データを受け取り、画像を形成するプリント機器なども含まれる。また、例えば、複写機、プリンタ、スキャナ装置、ファクシミリ装置、および、コピー機能、プリンタ機能、スキャナ機能並びにファクシミリ機能のうち少なくとも2つの機能を有する複合機等の画像形成装置であればいずれにも適用することができる。さらに、各実施形態に係る駆動制御装置は、モータの回転を減速機構を用いて減速させて、回転体を駆動する構造を有していれば、他の種類の装置にも適用可能なものである。
(各実施形態に共通の構成)
図1は、各実施形態に適用可能な画像形成装置10の構造の例を概略的に示す。なお、各実施形態では、カラー複写機で用いる中間転写ベルトを駆動するためのギアの破損を検出する場合を例に挙げて説明する。図1に示すように、画像形成装置10は、スキャナユニット11と、感光体ユニット12a〜12dと、定着ユニット13と、中間転写ベルト14と、二次転写ローラ15と、レジストローラ16と、給紙ローラ17と、紙搬送ローラ18と、転写紙19と、給紙ユニット20と、斥力ローラ21と、排紙ユニット22と、中間転写スケール検出センサ23とを備えている。
スキャナユニット11は、原稿台の上面に載置された原稿の画像を読み取る。感光体ユニット12a〜12dは、それぞれYCMK4色に対応し、潜像担持体としてのドラム状の感光体ドラム、感光体クリーニングローラなどを有している。以下、色を特定しない場合は、単に感光体ユニット12という場合がある。
定着ユニット13は、転写されたトナー画像を転写紙19上に定着させる。中間転写ベルト14は、感光体ユニット12a〜12dで形成されたYCMK各色のトナー画像を重ね合わせかつ転写紙19に転写させる。中間転写ベルト14は、感光体ユニット12a〜12dにより画像が形成される画像形成媒体である。中間転写ベルト14は、駆動ローラ30により駆動される。駆動ローラ30は、モータ52により、歯数が異なり連結された歯車55および56を介して回転速度が減速されて駆動される。
二次転写ローラ15は、中間転写ベルト14上の画像を転写紙19に転写する。レジストローラ16は、転写紙19のスキュー補正および転写紙搬送などを行う。給紙ローラ17は、転写紙19を給紙ユニット20から搬送部へ送り出す。紙搬送ローラ18は、給紙ローラ17から送り出された転写紙19をレジストローラ16まで搬送する。
給紙ユニット20は、転写紙19を積載する。斥力ローラ21は、二次転写ローラ15の対向部分に配置され、中間転写ベルト14と二次転写ローラ15との間のニップを生成および維持させる。排紙ユニット22は、画像が転写かつ定着された転写紙が排出される。中間転写スケール検出センサ23は、中間転写ベルト14の搬送速度を計測するためのエンコーダであって、中間転写ベルト14上に形成されたスケールを検出してパルス出力を生成する。
上述の構成において、中間転写ベルト14の表面速度に速度変動が生じると、YCMK各色のトナー画像の重ね合わせ位置がずれてしまったり、トナー画像が伸び縮みしてしまったりする。これによって、バンディングと呼ばれる色ずれや色の濃淡などの画像の不具合が生じてしまう。
中間転写ベルト14の表面速度を変化させる原因として、摩擦負荷、駆動ローラ30や歯車55、56などの回転体の偏心や負荷変動、中間転写ベルト14の厚み変動、モータ52の回転位置を検出するロータリエンコーダ(図示しない)の取り付け偏心、減速機構(歯車55、56など)の取り付け偏心や負荷変動、モータの回転ムラ、用紙突入やクラッチのオン/オフによるトルク変動などが考えられる。これらを外乱と考えると、摩擦負荷による変動は、定常的若しくは非常に低い周波数成分であるため、フィードバック制御を行うことによって抑圧できる。中間転写ベルト14の厚みによる変動も、他の回転体の偏心などによる変動と比較して低い周波数成分であるため、中間転写ベルト14の表面速度を直接的に検出できれば、これを使用したフィードバック制御を行うことにより抑圧できる。
一方、回転体の変動成分の中でも、減速機構の偏心やモータの回転ムラは、回転体と中間転写ベルト14の剛性や、駆動軸と減速機構との連結部の剛性によって生じる機械共振周波数(以下、中間転写ベルト機構の機械共振周波数)に近い周波数となってしまう。そのため、単純にベルト表面速度をフィードバックする制御系では、中間転写ベルト機構の機械共振周波数以下の応答周波数の制御系となり、ゲイン不足により外乱を十分抑圧できず、所望の要求仕様を達成するのが困難である。
そこで、減速後の駆動軸にロータリエンコーダを取り付け、このロータリエンコーダの値をフィードバックするマイナーループと、ベルト表面上のエンコーダパターンの値をフィードバックするメジャーループとからなる二重ループのフィードバック制御系が提案されている。特開2009−222112号公報には、この二重ループのフィードバック制御系において、さらに、マイナーループに所望の周波数のゲインを増幅させる手段を設けることにより、減速機構の偏心やモータの回転ムラによる周波数成分を抑えるベルト駆動制御装置が提案されている。
各実施形態では、特開2009−222112号公報による、所望の周波数のゲインを増幅させる手段に代えて、高い周波数成分でも抑圧可能な構成を有する駆動制御装置について説明する。
図2は、各実施形態に適用可能な、画像形成装置10における中間転写ベルト14の駆動制御機構の例を示す。なお、図2において、上述の図1と共通する部分には同一の符号を付して、詳細な説明を省略する。
モータおよび減速機構50は、軸に歯車55が切られたモータ52と、歯車55の回転を減速させて駆動ローラ30に伝達する減速歯車56とを有する。図2の例では、歯車55と減速歯車56とで減速機構が構成されている。減速機構において、入力側の歯車は、モータ52の軸に取り付けられた構成でもよい。また、図2の例では減速機構が2の歯車55および減速歯車56を有するように示されているが、これはこの例に限定されない。例えば、モータおよび減速機構50は、3以上の歯車を用いて構成してもよいし、遊星歯車機構としてもよい。
減速機構の出力軸(図2の例では、減速歯車56の軸)に対して、ロータリエンコーダのコードホイール58が取り付けられており、コードホイール58のスリットを、駆動軸エンコーダセンサ59aおよび59bとで読み取る。駆動軸エンコーダセンサ59aおよび59bは、コードホイール58に対して位相が180degだけ異なる位置に配置され、駆動軸エンコーダセンサ59aおよび59bの出力の平均値を使用することによって、コードホイール58の偏心成分を補正することができる。
駆動軸エンコーダセンサ59aおよび59bは、コードホイール58の動きを検出して2値化信号であるエンコーダパルスを出力する。駆動軸エンコーダセンサ59aおよび59bの出力は、90度位相の異なる2相の2値化信号でもよいし、単相アナログ信号や2相アナログ信号でもよい。また、ここでは、2の駆動軸エンコーダセンサ59aおよび59bを使用した例を示すが、コードホイール58の偏心成分を中間転写ベルト14の表面速度のフィードバックで抑圧することも可能で、この場合には、駆動軸エンコーダセンサ59aおよび59bのうち何れか一方のみを用いればよい。
ベルト機構51は、中間転写ベルト14と、駆動ローラ30と、斥力ローラ21、25および26とを含む。ベルト機構51において、駆動ローラ30は、減速機構の出力軸である減速歯車56の回転軸により駆動される。減速機構の出力軸と駆動ローラ30の軸は、一体で構成されていてもよいが、整備性を考えて継ぎ手機構などで連結されていてもよい。駆動ローラ30は、中間転写ベルト14を駆動する。中間転写ベルト14は、複数の斥力ローラ21、25および26に支持されている。例えば、従動ローラ26は、中間転写ベルト14の張力調整機構を有し、斥力ローラ21は、中間転写ベルト14上に作像されたトナー画像を用紙に転写する転写軸の機能を併せ持つ。
中間転写ベルト14の表面にはエンコーダパターン24が刻まれており、このエンコーダパターン24を中間転写スケール検出センサ23で読み取ることによって、中間転写ベルト14の表面速度(ベルト表面速度)を検出する。中間転写スケール検出センサ23は、読み取ったエンコーダパターン24に従い2値化出力であるエンコーダパルスを出力する。
エンコーダパターン24は、中間転写ベルト14の裏面に刻まれていてもよい。また、図2の例では、中間転写スケール検出センサ23を、従動ローラ25および26の間に設けているが、これは一例であって、ベルト表面速度を正しく測定するために、中間転写ベルト14が平坦な部分であれば、他の部分に中間転写スケール検出センサ23を設けてもよい。例えば、駆動ローラ30と従動ローラ25との間や、駆動ローラ30と斥力ローラ21との間でもよい。
また、各ローラなどの回転軸上に中間転写スケール検出センサ23を設けると、中間転写スケール検出センサ23の出力に回転軸の曲率の影響が現れてしまう。この場合、中間転写ベルト14の製造上の厚み変動や環境変化による変動によって、エンコーダパターン24の間隔が変化してしまい、正しいベルト表面速度ではなくなってしまうおそれがある。そのため、各ローラなどの回転軸上に中間転写スケール検出センサ23を設けることは、避ける必要がある。
エンコーダパターン24は、製作方法は問わない。例えば、シート状のエンコーダパターン24を中間転写ベルト14に貼り付けてもよいし、中間転写ベルト14上に直接的にパターン加工してもよい。中間転写ベルト14の製造工程で、中間転写ベルト14と一体的にエンコーダパターン24を加工してもよい。
また、中間転写スケール検出センサ23は、等間隔のスリットを備えた反射式の光学センサを想定しているが、エンコーダパターン24から中間転写ベルト14の表面位置を正確に検出できるセンサであればよく、例えば、CCD(Charge Coupled Device)を撮像素子として用いたカメラを使用してエンコーダパターン24を撮像し、撮像画像に対して画像処理を施すことで表面位置を検出するものでもよい。さらに、ドップラー方式やベルト表面の凹凸から画像処理によって表面位置を検出できるセンサ方式であれば、エンコーダパターン24を省略することも可能である。
駆動軸エンコーダセンサ59aおよび59bの出力、ならびに、中間転写スケール検出センサ23の出力は、駆動制御部100に入力される。駆動制御部100は、駆動軸エンコーダセンサ59aおよび59b、ならびに、中間転写スケール検出センサ23の出力信号を使用して、駆動ローラ30の回転速度とベルト表面速度とを演算し、演算結果に基づき所定の制御演算を行い、モータ52を所定の回転速度で駆動するための指令値を求める。指令値は、駆動制御部100から図示されないモータドライバに渡され、モータドライバは、指令値に応じてモータ52を駆動する。
モータ52は、ブラシ付きモータでもブラシレスモータでもよい。モータドライバの駆動回路は、モータ52の形式に応じて変わってくる。モータドライバは、電圧制御方式でも電流制御方式でもよい。電流制御方式のドライバであれば、経時変化や環境変化に対してロバストとなる。モータドライバへの指令値の信号形式は、特に限定されず、アナログ値、デジタル値、PWM(Pulse Width Modulation)などを用いることができ、モータドライバは、指令値に対して比例した出力が得られるものであればよい。モータドライバは、PWM駆動でもリニア駆動でもよい。
駆動制御部100で行われる制御演算は、アナログ値およびデジタル値の何方を用いて行ってもよい。例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのデジタル演算器を用いて制御演算を行うことが一般的に行われており、この場合、制御演算は、ソフトウェアで記述される。これに限らず、単純な制御演算や動作ロジックであって、パラメータ変更が無いのであればハードウェアロジックで制御演算を行わせてもよい。
図3は、各実施形態に適用可能な駆動制御部100の一例の構成を示す。駆動制御部100は、比較器110および112と、加算器114と、ベルト速度補償器111と、駆動軸速度補償器113と、モータドライバ115と、駆動軸速度演算部116と、ベルト速度演算部117と、周期成分抽出部200とを有する。駆動制御部100において、モータドライバ115は、加算器114から出力された指令値に従いモータ52を駆動し、モータおよび減速機構50とベルト機構51とを含む機構部101を駆動する。なお、図3では、減速歯車56の駆動軸に取り付けられた駆動軸エンコーダセンサ59aおよび59bを、駆動軸エンコーダセンサ59として纏めて示している。
駆動制御部100は、ベルト機構51の中間転写スケール検出センサ23の出力に基づきベルト表面速度をフィードバックするメジャーループと、減速歯車56の駆動軸に取り付けられた駆動軸エンコーダセンサ59の出力に基づき当該駆動軸の回転速度をフィードバックするマイナーループとからなる二重ループにより、モータ52の回転速度を制御する。
中間転写ベルト14の目標速度(ベルト目標速度)が比較器110の一方の入力端に入力される。ベルト速度演算部117は、ベルト機構51に設けられた中間転写スケール検出センサ23の出力に基づき中間転写ベルト14の速度(ベルト速度)を算出する。算出されたベルト速度は、比較器110の他方の入力端に入力される。比較器110において、一方および他方の入力端に入力された値が比較され、差分が出力される。より具体的には、比較器110において、一方の入力端に入力されたベルト目標速度から他方の入力端に入力されたベルト速度が減算されて、ベルト速度偏差が出力される。ベルト速度偏差は、ベルト速度補償器111に入力される。
ベルト速度補償器111は、ベルト速度偏差に基づき駆動軸目標速度を出力する。駆動軸目標速度は、中間転写ベルト14のベルト表面速度を一定に制御するように駆動ローラ30を駆動するための目標速度である。駆動軸目標速度は、比較器112の一方の入力端に入力される。
駆動軸速度演算部116は、駆動軸エンコーダセンサ59の出力に基づき減速歯車56の駆動軸の回転速度(駆動軸速度)を算出する。算出された駆動軸速度は、比較器112の他方の入力端に入力される。比較器112において、一方および他方の入力端に入力された値が比較され、差分が出力される。より具体的には、比較器112において、被減算入力端に入力された駆動軸目標速度から減算入力端に入力された駆動軸速度が減算されて、駆動軸速度偏差が出力される。
駆動軸速度補償器113は、モータ52の回転速度を指定するモータ指令値を駆動軸速度偏差に基づき算出する。加算器114において、モータ指令値と周期成分抽出部200の出力とが加算される。詳細を後述するように、周期成分抽出部200は、減速機構の周期変動を抽出し、抽出された周期変動に基づき駆動軸速度補償部113から出力されるモータ指令値を補正する補正値を出力する。なお、図3の例では、加算器114は、周期成分抽出部200側の入力端が反転入力とされており、減算器として用いられている。
加算器114から出力された補正されたモータ指令値がモータドライバ115に供給される。モータドライバ115は、加算器114から供給された補正されたモータ指令値に従いモータ52を駆動する。モータ52の回転は、歯車55および減速歯車56を介して駆動ローラ30に伝達され、中間転写ベルト14が駆動される。
なお、減速歯車56の駆動軸の回転速度は、ロータリエンコーダにより検出され、ベルト表面速度はリニアエンコーダにより検出されるため、駆動軸の回転速度とベルト表面速度とでは単位系が異なる。一般的にロータリエンコーダの検出出力は角度で出力され、単位系はラジアン(rad)となり、リニアエンコーダの検出出力は長さで出力され、単位系はメートル(m)となる。したがって、駆動軸エンコーダセンサ59および中間転写スケール検出センサ23で求められた速度を、何方か一方の単位系に変換する必要がある。
駆動軸の回転速度をベルト表面速度と統一する場合は、速度の単位が「m/s」(meter per second)となり、駆動軸速度を変換するための単位変換用の係数を駆動軸速度演算部116に含むことになる。また、駆動軸速度補償器113も「m/s」に合わせる係数を持つことになる。一方、ベルト表面速度を駆動軸速度と統一する場合は、速度の単位が「rad/s」(radian per second)となり、ベルト速度補償器111に「rad/s」に変換する係数を持つことになる。
また、内側にあり、ロータリエンコーダ(駆動軸エンコーダセンサ59)の値をフィードバックするマイナーループの応答周波数は、外側のリニアエンコーダ(中間転写スケール検出センサ23)の値をフィードバックするメジャーループの応答周波数に対して、十分に高い必要がある。一般的には、マイナーループの応答周波数の帯域は、メジャーループの応答周波数の帯域に比べて、5〜10倍以上高い周波数帯域である。
(第1の実施形態)
次に、第1の実施形態について説明する。図4−1は、第1の実施形態による周期成分抽出部200Aの一例の構成を示す。なお、図4−1において、当該周期成分抽出部200Aを含む駆動制御部100の構成を、周期成分抽出部200Aに関連する部分を抜粋して示してある。なお、これは、後述する図4−2、図5、図6および図15においても同様である。図4−1、ならびに、後述する図4−2、図5、図6および図15に示される構成は、上述した二重ループのうちマイナーループ部分に相当する。
なお、図4−1において、比較器202は、図3の比較器112に対応し、加算器204は、図3の加算器114に対応する。また、図4−1の補償器203、ドライバ205および速度演算部208は、それぞれ図3の駆動軸速度補償器113、モータドライバ115および駆動軸速度演算部116に対応する。さらに、図4−1におけるモータ206および減速機構部207は、それぞれ図3のモータおよび減速機構50に含まれる構成であり、減速機構部207の出力は、駆動軸エンコーダセンサ59の出力である。
第1の実施形態において、周期成分抽出部200Aは、フィルタ演算部210と、速度記憶部211と、速度積算部212と、乗算部213と、位相調整部214とを含む。
速度演算部208は、減速機構部207において減速側に取り付けられた駆動軸エンコーダセンサ59の出力から、減速側すなわち減速歯車56の駆動軸の回転速度を検出する。速度検出は、駆動軸エンコーダセンサ59から出力されたエンコーダパルスの間隔を基本クロックでカウントし周期を求める方式を用いることができる。これに限らず、パルスカウンタの差分から算出する方式を用いて速度検出を行ってもよい。
速度演算部208は、回転速度を駆動軸エンコーダセンサ59のエンコーダパルス毎に出力する。回転速度は、例えば当該エンコーダパルスの間隔を基本クロックでカウントした場合のカウント値で表される。速度演算部208から出力された駆動軸の回転速度は、比較器202により目標速度201(駆動軸目標速度)と比較され、差分が駆動軸速度偏差として出力される。補償器203は、比較器202から出力された駆動軸速度偏差に基づきモータ206を駆動する駆動電圧相当のPWM値を出力する。
加算器204において、補償器203から出力された駆動電圧相当のPWM値に対して、周期成分抽出部200Aから出力される補正値相当のPWM値が加算され、補償器203から出力された駆動電圧相当のPWM値が補正された補正PWM値が出力される。なお、図4−1の例では、加算器204の周期成分抽出部200A側の入力端が反転入力となっているため、補正PWM値は、駆動電圧相当のPWM値から補正値相当のPWM値を減算した値となる。補正PWM値は、モータ206を駆動する際のモータ指令値としてドライバ205に入力される。ドライバ205は、供給されたモータ指令値に従いモータ206を電圧駆動する。モータ206の回転は、減速機構部207の減速機構により減速されて、図示されないベルト機構51を駆動する。
次に、第1の実施形態による周期成分抽出部200Aの動作について説明する。速度演算部208から駆動軸エンコーダセンサ59のエンコーダパルス毎に出力された減速側の駆動軸の回転速度がフィルタ演算部210に供給される。フィルタ演算部210は、供給されたエンコーダパルス毎の回転速度から、予め定められた周波数成分を抽出するバンドパスフィルタ演算を行う。
例えば、速度演算部208が、回転速度を示す値として、駆動軸エンコーダセンサ59から出力されたエンコーダパルスの間隔を基本クロックでカウントしたカウント値を用いる場合、速度演算部208から、エンコーダパルス毎にカウント値が出力される。フィルタ演算部210は、このエンコーダパルス毎のカウント値に対してバンドパスフィルタ演算を施すことで、エンコーダパルス毎のカウント値の変動分を抽出することができる。
このフィルタ演算部210で抽出される周波数成分が、抑圧したい周期変動の周波数成分に対応する。例えば、フィルタ演算部210に対して、抽出する周波数として、モータの1回転相当の周波数や、減速機構部(歯車55および減速歯車56)のギヤの噛合い周波数を予め設定することができる。フィルタ演算部210に設定可能な周波数は、1種類とは限られず、複数の周波数を設定することも可能である。この場合、それぞれ所定の周波数が設定された複数のフィルタ演算部210を並列に接続する。
フィルタ演算部210で抽出された周波数成分のエンコーダパルス毎の値(周期変動値と呼ぶ)が速度記憶部211に供給される。速度記憶部211は、供給された周期変動値を、周期変動の周期におけるエンコーダパルスそれぞれに対応する各位相毎に順次、保持する。例えば、速度記憶部211は、周期変動の周期に含まれるエンコーダパルス毎の記憶領域を有し、各位相の周期変動値を各記憶領域に順次記憶させる。速度積算部212は、速度記憶部211と対応する記憶領域を有し、当該記憶領域を利用して、速度記憶部211に保持される周期変動値を、周期内の対応する位相毎に積算演算する。
速度積算部212で積算された各周期変動値は、エンコーダパルス毎に順次選択され、乗算部213で所定のゲインが乗算される。乗算部213でゲインが乗算された各周期変動値は、位相調整部214に供給されて位相を調整されて周期成分抽出部200Aから出力される。周期成分抽出部200Aから出力された各周期変動値は、周期変動を補正する補正値として、加算器204で補償器203の出力に加算される。
周期成分抽出部200Aから出力される補正値は、誤差(周期変動分)を0に近付けるように動く。すなわち、完全に収束した場合、補正値は0となる。このとき、速度積算部212で誤差を積算していくため、定常値に収束するまでに所定の時間を要する。乗算部213におけるゲイン設定によって、補正値の収束時間を調整することが可能である。より大きなゲインを設定することで、収束時間をより高速とすることができる一方で、ノイズやパラメータの変動の影響を受け易くなり、補正値が不安定化してしまうことになる。補正値を安定化させるための乗算部213のゲインの設定方法については、後述する。
上述の構成において、速度記憶部211および速度積算部212それぞれの記憶領域は、モータ52の1回転に相当するエンコーダパルス数分のデータを保持可能であればよく、減速歯車56の1回転分のエンコーダパルス数分のデータを保持可能である必要はない。
所望の周波数は、1周期あたり最低2パルスあれば表現可能である。しかしながら、周期変動を補正する際の補正精度を上げるためには、エンコーダパルスに所定以上の分解能が必要である。
一例として、モータ52の周期変動を補正する場合について考える。この場合、例えば、モータ52の1回転相当のエンコーダパルス数を40パルスとし、減速機構の減速比を10とすると、モータ52の周期変動を補正するために必要な駆動軸エンコーダセンサ59によるエンコーダパルス数は、モータ52の1回転当たり40パルス×10=400パルスの整数倍あればよい。よって、ここでは、駆動軸エンコーダセンサ59の分解能を、400(パルス/回転)とする。
なお、上述したように、第1の実施形態では、速度記憶部211は、周期変動の周期に含まれるパルス分の周期変動値を、エンコーダパルス毎に順次、保持するようにしている。したがって、モータ52の1回転相当のエンコーダパルス数を40パルスとした場合、速度記憶部211および速度積算部212の記憶領域は、データを40個分保持可能であればよい。
別の例として、ギヤの噛合いによる周期変動を抑制する場合について考える。例えば、モータ52の1回転当たりのギヤの歯数が10とする。この場合、ギヤの1周期当たりのエンコーダパルス数が4パルスとなる。モータ52の1回転当たりのエンコーダパルス数を上述と同様に40とすると、ギヤの1周期当たりのエンコーダパルス数、モータ52の1回転当たりのエンコーダパルス数との最小公倍数が40となり、速度記憶部211および速度積算部212の記憶領域は、データを40個分保持可能であればよい。
さらに、ギヤの噛合いの周期変動の抑圧効果を向上させるためには、ギヤの噛合い周波数相当のエンコーダパルス数を多くして、分解能を上げる必要がある。
さらにまた、上述のようにして求めたエンコーダパルス数は、周期変動を抑圧するために必要なエンコーダパルス数であり、フィードバック制御系の制御性能を確保するために必要となるエンコーダパルス数とは異なる。駆動軸エンコーダセンサ59の出力信号処理による無駄時間を小さくし、フィードバック制御系の応答周波数を向上させるためには、エンコーダパルスについてより細かい分解能が必要となる場合がある。
位相調整部214は、補正PWM値のドライバ205に対する入力から、駆動軸エンコーダセンサ59からの出力までの位相遅れを考慮した値を設定する。
ところで、ドライバ205に印加可能な電圧や電流には制限があるため、周期成分抽出部200Aの出力である補正値も制限が必要である。速度積算部212の積算値が制限値を超えた場合、実際には、対応する電圧や電流をドライバ205に印加できないため、補正値が定常値に収束する時間が長くなってしまう。そこで、速度積算部212の積算値に制限を設け、積算値が制限値を超える値にならないようにする。
積算値の制限値int_dat_limは、例えば次式(1)により求めることができる。なお、式(1)において、値Vlimがドライバ205の電圧制限、定数Gi
FFが乗算部213のゲインとする。速度積算部212の積算値が制限値int_dat_limを超えた場合には、当該積算値を制限値int_dat_limに固定する。また、ここでは正側の例について説明したが、負側についても同様である。
(第1の実施形態の変形例)
次に、第1の実施形態の変形例について説明する。上述した図4−1に示す周期成分抽出部200Aから速度積算部212を省略し、速度記憶部211に保持した周期変動値を補正値として直接的に乗算部213に供給してもよい。図4−2は、第1の実施形態の変形例による、速度積算部212を省略した周期成分抽出部200A’の構成の例を示す。なお、図4−2において、図4−1と共通する部分には同一の符号を付し、詳細な説明を省略する。
図4−2に示される周期成分抽出部200A’では、速度記憶部211に保持される周期変動値を直接的に乗算部213に供給している。この場合、図4−1に例示した速度積算部212を使用する構成に対して、周期成分の抑圧効果が小さくなる一方で、補正出力の収束に要する時間が短いため、周期成分の抑圧効果の応答性が向上する。それと共に、図4−2の構成は、図4−1の構成に対して速度積算部212用の記憶領域が不要になる。
(第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態では、第1の実施形態の構成に対し、速度記憶部211および速度積算部212の出力にそれぞれゲインを乗じて加算し、加算結果を位相調整部214を介して補償器203の出力に加算する。
図5は、第2の実施形態による周期成分抽出部200Bの構成の例を示す。なお、図5において、上述の図4−1と共通する部分には同一の符号を付して、詳細な説明を省略する。第2の実施形態による周期成分抽出部200Bは、第1の実施形態による周期成分抽出部200Aに対し、乗算部213の代わりに、乗算部213Aおよび213Bが設けられると共に、乗算部213Aおよび213Bの出力を加算する加算器215が追加されている。
速度記憶部211の出力は、速度積算部212に入力されると共に、乗算部213Bに入力され比例ゲインGpFFが乗算される。速度積算部212の出力は、乗算部213Aに入力され、積算値に比例ゲインGiFFが乗算される。乗算部213Aおよび乗算部213Bの出力は、加算器215で加算され、位相調整部214で位相調整される。位相調整部214の出力は、加算器204で補償器203の出力に加算される。これにより、補償器203の出力の周期変動が補正される。
第2の実施形態の周期成分抽出部200Bによれば、速度記憶部211の出力により、周期変動の補正にかかる時間を短縮し、速度積算部212の出力により周期変動の補正精度を向上させることができる。乗算部213Aの比例ゲインGiFFを大きくすることで、初期状態からの補正性能を向上させることができる。また、乗算部213Bの比例ゲインGpFFを大きくすることで、補正出力の収束をより高速とすることができる。
(乗算部のゲイン設定)
ここで、乗算部213Aおよび213Bの比例ゲインGi
FFおよびGp
FFの設定方法について説明する。速度記憶部211の出力が供給される乗算部213Bの比例ゲインGp
FFの設定は、一般的に、フィードフォワード制御の場合、制御対象の逆モデル相当以下とすればよい。例えば電圧から角速度までの伝達関数を、次式(2)で表すことを考える。ここで、値ωは角速度(rad/s)、値Vは電圧値(volt)、値K
eは誘起電圧定数(volt/(rad/s))、値T
eは電気時定数(s)、値T
mは機械時定数(s)、値sはラプラス演算子である。
式(2)に基づき、逆モデルは、次式(3)で表される。
したがって、ラプラス演算子s→jωとして、周期変動の周波数を設定して、GpFFを求める。
速度積算部212の出力が供給される乗算部213Aの比例ゲインGiFFは、制御対象の一巡伝達関数が不安定にならないGiFF/sの補償器の形として求める。比例ゲインGiFFは、大きすぎると不安定となる。
一般的に、乗算部213Aの比例ゲインGiFFの設定で、補正動作の収束時間が変化する。速度積算部212の出力に対するゲインである比例ゲインGiFFを使用する場合は、速度記憶部211の出力に対するゲインである比例ゲインGpFFは小さくても良く、比例ゲインGpFFの設定で、補正の立ち上がり特性を調整できる。
(第3の実施形態)
次に、第3の実施形態について説明する。第3の実施形態では、上述した第2の実施形態の構成に対して、速度積算部212の構成が異なる。図6は、第3の実施形態による周期成分抽出部200Cの構成の例を示す。なお、図6において、上述した図5と共通する部分には同一の符号を付して、詳細な説明を省略する。
周期成分抽出部200Cにおいて、速度記憶部211の出力は、乗算部213Bに供給され比例ゲインGpFFを乗算されると共に、速度積算部216に供給される。速度積算部216の出力は、乗算部213Aに供給され比例ゲインGiFFを乗算される。乗算部213Aおよび乗算部213Bの出力は、加算器215で加算され、位相調整部214で位相調整される。位相調整部214の出力は、加算器204で補償器203の出力に加算される。これにより、補償器203の出力の周期変動が補正される。
速度積算部216は、速度記憶部211から出力される周期変動値を積算する積算部218と、フィルタ演算部210から出力される周期変動値に応じて積算部218による積算動作のオン/オフを制御するスイッチ部217とを有する。積算部218の動作は、上述した速度積算部212の動作と共通であるので、ここでの説明を省略する。
スイッチ部217は、フィルタ演算部210から出力される周期変動値が0近傍の所定範囲内にある場合は、積算部218における積算動作を行わない(オフとする)ように、速度積算部216を制御する。一方、スイッチ部217は、フィルタ演算部210から出力される周期変動値が当該所定範囲外にある場合には、積算部218において速度記憶部211の出力の積算動作を行う(オンとする)ように、速度積算部216を制御する。
図6の例では、スイッチ部217の一方の入力端に速度記憶部211の出力が入力され、他方の入力端に値「0」が入力されている。スイッチ部217は、フィルタ演算部210からの周期変動値が当該所定範囲内にある場合に他方の入力端を選択して積算部218に0を入力する。一方、スイッチ部217は、フィルタ演算部210からの周期変動値が当該所定範囲外である場合には、一方の入力端を選択して速度記憶部211の出力を積算部218に入力する。
フィルタ演算部210から出力される周期変動値が0に近付いた状態、換言すれば、周期成分による誤差が0に近付いた状態では、フィルタ演算部210の出力に含まれるノイズ成分や離散化誤差、数値丸め誤差などの影響が相対的に大きくなる。この第3の実施形態においては、フィルタ演算部210の出力値が0に近付いた場合に速度積算部216における積算動作を行わないようにしている。これにより、フィルタ演算部210の出力に含まれるノイズや離散化誤差、数値丸め誤差などの影響を排除することができ、周期成分抽出部200Cの補正出力を安定化させて、周期変動の抑圧効果を安定化できる。
なお、上述では、速度積算部216の積算動作は、フィルタ演算部210の出力値に対して単純に閾値判定を行いオン/オフを制御するように説明したが、これはこの例に限定されない。すなわち、積算動作のオン/オフ制御に図7に例示されるようにヒステリシスを持たせることにより、ノイズによる誤動作の防止や積算動作のオン/オフの切り替えによる過渡特性を改善することができ、より好ましい。
すなわち、周期変動成分が小さくなっていくと、フィルタ演算部210で抽出される値も小さくなり、ノイズやデジタル演算による桁落ちなどの誤差成分が増加し、S/Nが悪くなる。S/Nが悪い値を積算していくと、周期変動の補正値が異常値となり、この補正値をフィードフォワードすることによって制御系が発振する可能性があるため、速度積算部216では、それを防止する動作を行う。例えば、フィルタ演算部210の出力が閾値範囲内である場合は、積算動作をオフとし、閾値範囲外である場合は、積算動作をオンとする。
図7を用いて、このヒステリシスを持たせた積算動作のオン/オフ制御について、より具体的に説明する。図7において、図7(a)は、フィルタ演算部210から出力される周期変動値に対するオン(ON)/オフ(OFF)判定の例を示し、図7(b)は、この周期変動値に対応するスイッチ部217の動作の例を示す。図7(b)において、スイッチ部217は、ハイ(H)状態で積算動作をオンさせ、ロー(L)状態で積算動作をオフさせる。なお、図7(a)では、オン/オフ判定が周期変動値の正側について示されているが、負側においても同様にしたオン/オフ判定を行う。
図7(a)に例示されるように、0近傍の周期変動値に対し、積算動作のオフ判定を行う第1の閾値を、オン判定を行う第2の閾値よりも低い値に設定する。補正値に誤差が減少し、フィルタ演算部210から出力される周期変動値が0に近付きオフ判定の第1の閾値以下となった時点Aで、スイッチ部217は、積算動作をオフとさせる。その後、誤差が増加し、周期変動値が第1の閾値を超えオン判定の第2の閾値以上になった時点Bで、スイッチ部217は、積算動作をオンとさせる。さらにその後、誤差が減少し、周期変動値が第2の閾値より小さくなり、さらに第1の閾値以下になると(時点C)、スイッチ部217は、再び積算動作をオフとさせる。
オフ判定を行う第1の閾値を0に近付けることによって、周期変動成分の抑圧効果は大きくなる一方で、ノイズなどによる誤差の影響を受け易くなる。また、第1の閾値と、オン判定を行う第2の閾値との差が小さい方が、周期変動成分の抑圧後の変動が小さくなる一方で、ノイズなどの影響を受け易くなる。したがって、第1の閾値と第2の閾値との間隔をある程度開けるのが好ましい。このとき、第1の閾値と第2の閾値との間隔を大きく取ると、フィルタ演算部210の出力がオフ判定を行う第1の閾値以下となった後は、これまでの積算値(学習した値)を使用し続けることになる。温度上昇や経時変化などの何らかの原因で周期変動成分が大きくなると、再度、積算動作を行う。
図8は、周期成分抽出部200Cにおける周期変動値の取得と、補正値の出力タイミングの例を示す。図8において、図8(a)は、エンコーダパルス(ENC_pulse)の例を示す。ここでは、モータ206の1回転で駆動軸エンコーダセンサ59からエンコーダパルスが40パルス出力され、モータ206の回転周期の周期変動を抑圧するものとする。図8(a)では、モータ206の1回転当たりの40のエンコーダパルスに、それぞれ#0〜#39の番号を付して示している。
また、図8(b)は、速度記憶部211の各位相に対応する記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39に記憶されるデータ(変動周期値)の例を示し、図8(c)は、加算器215から出力される各位相の補正値の例を示す。
例えば、モータ206のn回転目において、エンコーダパルス毎の周期変動値に対応するデータDATA0_n、DATA1_n、DATA2_n、…、DATA39_nが、エンコーダパルス毎に順次、各記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39に記憶される。すなわち、エンコーダパルス#0によりデータDATA0_nが記憶領域mem_p0に記憶される。次のエンコーダパルス#1によりデータDATA1_nが記憶領域mem_p1に記憶される。以下同様にしてエンコーダパルス毎に順次データが記憶領域に記憶され、モータ206のn回転目における最後のエンコーダパルス#39によりデータDATA39_nが記憶領域mem_p39に記憶される。
なお、速度積算部216においても、同様のタイミングで、各位相の周期変動値の積算値Σ(DATA0)〜Σ(DATA39)が、各位相に対応した記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39に記憶される。
モータ206の(n+1)回転目のエンコーダパルス#0で、記憶領域mem_p0からデータDATA0_nが読み出され、乗算器213Bで比例ゲインGpFFを乗ぜられる。それと共に、当該エンコーダパルス#0で、記憶領域mem_i0から積算値Σ(DATA0)が読み出され、乗算器213Aで比例ゲインGiFFを乗ぜられる。比例ゲインGpFFを乗ぜられたデータDATA0_nと、比例ゲインGiFFを乗ぜられた積算値Σ(DATA0)とが加算器215で加算され、位相調整前の補正値として出力される。
以降、エンコーダパルス毎に、順次、位相が対応するデータおよび積算値の各記憶領域からの読み出しが行われる。そして、読み出されたデータおよび積算値に対してそれぞれ対応する比例ゲインが乗じられ、比例ゲインが乗じられたデータおよび積算値が加算されて補正値として出力される。
この記憶領域mem_p0から読み出されたデータDATA0_nと、記憶領域mem_i0から読み出された積算値Σ(DATA0)とによる補正値の出力処理と並行して、モータ206の(n+1)回転目のエンコーダパルス#0によるデータDATA0_n+1が取得されて記憶領域mem_p0に記憶されると共に、データDATA_0n+1が積算値Σ(DATA0)に加算され、積算値Σ(DATA0)が更新される。
次に、周期成分抽出部200Cの動作について、より詳細に説明する。図9は、周期成分抽出部200Cの機能を示す機能ブロック図である。なお、図9において、上述した図6と共通する部分については同一の符号を付して、詳細な説明を省略する。
図9の例では、周期成分抽出部200Cは、フィルタ演算部210と、判定器251および積算部218を有する速度積算部216と、選定器・位相調整部252Aおよび252Bと、乗算部213Aおよび213Bと、加算器215とを有する。なお、判定器251は、上述したスイッチ部217に対応する機能を有する。
これらのうち、選定器・位相調整部252Aおよび252Bは、それぞれ図6の位相調整部214に対応する。すなわち、図9の構成は、図6の構成に対して、乗算部213Aおよび213B、ならびに、加算器215と、位相調整部214との処理の順序が異ならされている。図9の構成において選定器・位相調整部252Aおよび252B共通の位相調整を施す場合、位相調整後の各補正値に対してそれぞれゲインを乗じて加算する処理と、図6の構成により各補正値にそれぞれゲインを乗じて加算した後に位相調整する処理とは、実質的に同一であると見做すことができる。
以下では、抽出する所望の周期変動が、駆動軸エンコーダセンサ59が出力するエンコーダパルスの40パルス分の周期であるものとする。すなわち、速度記憶部211および速度積算部216は、それぞれ40パルス分の周期変動値を保持可能な記憶領域を有していればよい。
速度演算部208でエンコーダパルス毎に出力された回転速度がフィルタ演算部210に供給される。フィルタ演算部210は、供給された回転速度から予め定められた周波数成分を抽出するバンドパスフィルタ演算が行われる。上述したように、このバンドパスフィルタ演算で抽出された周波数成分が、抑圧したい周期変動の周波数成分に対応する。フィルタ演算部210で抽出された周波数成分のデータすなわち周期変動値は、判定基準信号として判定器251に供給されるとともに、分配器250に供給される。
分配器250は、エンコーダパルス(ENCパルス)が供給され、エンコーダパルスのタイミングで周期変動値を順次出力する。このとき、分配器250は、抽出する所望の周期変動の周期である、エンコーダパルスの40パルスを単位として、周期変動値をエンコーダパルス毎に分配する。すなわち、分配器250は、供給された周波数変動値を、抽出する所望の周期変動の周期におけるエンコーダパルスそれぞれに対応する各位相毎に出力する。所望の周期変動の周期がエンコーダパルスの40パルスであるこの例では、周期変動値が、40パルスそれぞれに対応する各位相毎に分配器250で分配され出力される。
分配器250から出力された各位相の周期変動値は、それぞれ判定器251に入力されると共に、速度記憶部211が有する40個の記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39に順次記憶される。
判定器251は、上述したスイッチ部217と同様にして、フィルタ演算部210から出力された周期変動値を判定基準信号として用いて、供給された各位相の周期変動値の積算を行うか否かを判定する。より具体的には、判定器251は、周期変動信号の大きさに基づき、後続する積算部218において、抽出された周期変動値を用いるか、値「0」を用いるかを判定する。判定器251における動作の詳細は、図7を用いて説明した通りであるので、ここでの説明を省略する。
判定器251の各位相の出力は、積算部218にそれぞれ入力される。積算部218は、40個の加算回路Σ0、Σ1、Σ2、…、Σ39を有する加算部260と、各加算回路Σ0、Σ1、Σ2、…、Σ39にそれぞれ対応する40個の記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39を有する積算値記憶部261とを有する。積算部218は、判定器251から供給された各位相の出力を、それぞれ加算回路Σ0、Σ1、Σ2、…、Σ39で積算し、各積算値を記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39に記憶する。例えば、加算回路Σ0は、入力された値と記憶領域mem_i0に記憶されている値とを加算し、加算結果を記憶領域mem_i0に上書きする。
選定器・位相調整部252Aは、エンコーダパルスを基準として、位相を合わせるように積算値記憶部261の各記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39に記憶される値を選定する。選定器・位相調整部252Aの出力は、位相を合わせるため、1周期遅れよりも少し位相の進んだ周期成分の積算値となる。例えば、選定器・位相調整252Aは、記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39において、記憶領域mem_i2を周期の先頭として積算値を読み出し、以降、記憶領域mem_i3、mem_i4、mem_i5、…、mem_i39と順次積算値を読み出し、さらに記憶領域mem_i0、mem_i1から順次積算値を読み出す。
選定器・位相調整部252Aの各位相の出力は、乗算部213Aに供給され、式(2)および式(3)を用いて説明したようにして設定した比例ゲインGiFFが乗算され、加算器215に入力される。
一方、速度記憶部211に記憶された各位相の周期変動値は、上述の選定器・位相調整部252Aと同様にして、選定器・位相調整部252Bにより、エンコーダパルスを基準として、位相を合わせるように、各記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39から読み出される。選定器・位相調整部252Bで調整される位相量は、上述の選定器・位相調整部252Aと同一とされる。選定器・位相調整部252Bの各位相の出力は、乗算部213Bに供給され、式(2)および式(3)を用いて説明したようにして設定した比例ゲインGpFFが乗算され、加算器215に入力される。
加算器215は、乗算部213Aの各位相の出力と、乗算部213Bの各位相の出力とを、対応する位相毎に加算して出力する。加算器215の加算結果は、加算器204で補償器203の出力に加算される。ここでは、補償器203の出力の更新タイミングと独立して周期変動の補正出力が更新される。すなわち、補正出力は、フィードフォワードされる。
エンコーダパルス40個分のデータを記憶する、記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39や記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39は、リングバッファ構成とし、古い値から順次上書きされるようにすればよい。1周期分の記憶領域を有するリングバッファであれば、36パルス前に記憶したメモリアドレスの値を読み込む、すなわち位相を遅らせることと、4パルス後に記憶するメモリアドレスの値を読み込む、すなわち位相を進めることとが等価となる。
図10は、それぞれ1パルス分のデータを記憶する記憶領域を40個有するリングバッファを用いた例である。アドレスADD#37にデータDAT#37の書き込みを行うタイミングにおいて、例えば36パルス分位相を遅らせたデータを読み出す場合、アドレスADD#37に対して36個前のアドレスもしくは4個後のアドレスであるアドレスADD#01のデータDAT#01を使用することになる。
図11を用いて、第3の実施形態による補正動作について、概略的に説明する。なお、ここで説明する補正動作は、第3の実施形態のみならず、各実施形態に適用されるものである。制御対象の伝達特性より、検出された補正前の周期変動成分は、入力に対して位相遅れが発生する。そこで、位相の遅れを考慮して、予め位相を進めた補正値を用意する。また、補正値は、制御対象の伝達特性の周期成分相当の周波数のゲインも考慮した値とする。この補正値を制御対象の入力の加算部204にて加算することによって、周期変動成分を相殺し、制御対象の出力で検出される周期変動成分を小さくすることができる。
なお、各実施形態において、加算部204では、補正値の符号を反転して、補償器203の出力に対して加算している。
実機では、位相を進めることはできないので、記憶された1周期遅れた周期変動成分に対して、位相を進めることになる。図11は、検出された補正前の周期変動成分310に対して、位相を遅らせた補正値311を作成し、加算部204にて加算した結果、補正後の周期変動成分312となることを示している。図11の例からわかるように、1周期遅れの周期成分に対して位相を進めているため、位相を遅らせる量は、1周期(360deg)よりも小さくなる。
第3の実施形態による補正動作について、図9の構成を参照しながらより詳細に説明する。選定器・位相調整部252Aおよび252Bで調整される位相量は、制御対象の駆動系が電圧駆動方式である場合、抽出する周期成分(周波数)に相当する入力電圧から検出速度までの位相遅れを考慮した値となる。例えば、ボード線図などで表される伝達特性により、所望の周波数f1の位相が−40degとして求められた場合について考える。この場合、選定器・位相調整部252Aおよび252Bで周期変動の補正値を予め40deg進めた後に、補償器203の出力に加算することで、回転速度の周期変動を抑えられることになる。ここでは、1周期後の周期変動を補正することを考えると、位相を360deg−40deg=320deg遅らせることによって実現できる。
抽出する周期変動は、エンコーダパルスの40パルス分とすると、次式(4)により、エンコーダパルスの36パルス分遅らせることによって実現できることが分かる。
この位相補償について、図12のボード線図を用いてより詳細に説明する。図12において、図12(a)は、ゲイン線図を示し、図12(b)は、当該ゲイン線図に対応する位相線図を示す。
制御対象のモータ入力電圧から検出速度までの理想的な周波数応答は、上述した式(2)により、誘起電圧定数Ke、機械時定数Tm、電気時定数Teによって決まってくる。ボード線図に漸近線を書いた場合、1つ目の折れ点αが1/Tm、2つ目の折れ点βが1/Teとなる。図12は、簡単化のため、誘起電圧定数KeがDC的な変化であるため無視(Ke=1)したときの応答とする。
例えば、制御対象のモータ入力電圧から検出速度までの周波数応答が図12のような特性である場合、40Hzの正弦波状の変動を持ったモータ入力電圧を与えると、図12(b)に例示されるように、40degだけ位相が遅れた正弦波状の速度として検出される。
このような特性の制御対象に、回転系(モータロータや軸、ギヤ、駆動軸など)の偏心などによって発生する40Hzの変動周期成分が印加され、速度として検出される場合について考える。この場合、この40Hzの変動周期成分を抑圧するためには、この抽出された40Hzの変動周期成分を相殺するようにモータを駆動すればよい。
ここで、変動周期成分として検出した40Hzの波形に対して単純に比例ゲインでの調整を行い、加算部204で補償器203の出力に加算しただけでは、回転系で発生する40Hzの変動周期成分に対して40deg遅れた補正波形を反転して加算した形となるため、変動周期成分を抑圧する効果を十分に得られない可能性がある。なお、補正波形は、反転して変動周期成分に対して加算しているため、実際には減算処理となる。変動周期成分に加算する際の補正波形の符号は、速度から周期変動を抽出するのか、速度偏差から周期変動を抽出するのかで異なる。
図13は、変動周期成分を抑圧する効果を十分に得られない場合の位相補償の例を概略的に示す。図13において、変動周期成分として検出された波形の例を、正弦波300として示す。この正弦波300を、y=sin(ωt)とする。波形301は、正弦波300に対して位相θ1=−30deg=−0.52radずらした正弦波を反転させて加算した第1の補正例を示す。波形302は、正弦波300に対して位相θ2=−180deg=−3.14radずらした正弦波を反転して加算した第2の補正例を示す。図13から分かるように、位相が30degだけ遅れた波形301で補正しても、効果は、正弦波300の振幅を30%程度低減できるだけである。さらに、位相が180deg遅れた波形で補正すると、却って振幅を増幅させてしまい、制御系を不安定化させる結果となる。
(第3の実施形態の変形例)
次に、第3の実施形態の変形例について説明する。図9を用いて説明した、第3の実施形態による周期成分抽出部200Cは、エンコーダパルス毎に演算処理を行なっていた。すなわち、例えば周期成分抽出部200Cが図示されないCPUの制御に従い動作する場合、若しくは、周期成分抽出部200C全体がCPU上で動作するプログラムにより構成される場合、CPUは、エンコーダパルスによる割り込みがある毎に、所定の演算処理を実行する。
図14は、第3の実施形態の変形例による、周期成分抽出部200C’の一例の機能を示す図である。なお、図14において、上述した図9と共通する部分には同一の符号を付して、詳細な説明を省略する。
第3の実施形態の変形例では、周期成分抽出部200C’の各部を、処理の内容に応じて、エンコーダパルスの割り込みにより処理を行う部分と、タイマの割り込みにより処理を行う部分とに分ける。主として、エンコーダパルスによる割り込みを行う部分では、データの取得と出力とを行い、タイマ割り込みを行う部分では、取得されたデータに対するフィルタ演算を行う。
より具体的には、図14に示されるように、周期成分抽出部200C’は、エンコーダパルス(ENCパルス)の割り込みにより演算処理を行うENC割込み関数部270および272と、基準クロックに基づくタイマによる割り込みにより演算処理を行うタイマ割込み関数部271とに構成が分割される。基準クロックとしては、例えばCPUの動作の基準となるシステムクロックを用いることができる。
入力側のENC割込み関数部270は、分配器250’を有する。タイマ割込み関数部271は、フィルタ演算部210’と、判定器251’と、40個の加算回路Σ0、Σ1、Σ2、…、Σ39を備える加算部260とを有する。また、出力側のENC割込み関数部272は、選定器・位相調整部252Aおよび252Bと、乗算器213Aおよび213Bと、加算器215と、加算器204を含む加算部264とを有する。
加算部260の加算結果を記憶する積算値記憶部261の40個の記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39、ならびに、速度積算部211の40個の記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39が、それぞれタイマ割込み関数部271とENC割込み関数部272とを跨いで設けられる。また、分配器250’とフィルタ演算部210’との処理速度の差を吸収するためのバッファ263における40個の記憶領域mem_v0、mem_v1、mem_v2、…、mem_v39が、ENC割込み関数部270およびタイマ割込み関数部271とを跨いで設けられる。
このように、第3の実施形態の変形例による周期成分抽出部200C’は、上述した第3の実施形態による周期成分抽出部200Cとは、処理の順序が一部異なる。すなわち、周期成分抽出部200C’では、入力された回転速度を分配器250’でエンコーダパルス毎に各位相に分配した後、フィルタ演算部210’でフィルタ演算を行うようにしている。
図14において、速度演算部208から駆動軸エンコーダセンサ59のエンコーダパルス毎に出力された減速側の駆動軸の回転速度を示す回転速度データがENC割込み関数部270に供給され、分配器250’に入力される。分配器250’は、エンコーダパルス(ENCパルス)に従い、回転速度データを40のエンコーダパルスそれぞれに対応する各位相に分配する。分配器250’は、各位相に分配した回転速度データを、エンコーダパルスのタイミングでバッファ263の各記憶領域mem_v0、mem_v1、mem_v2、…、mem_v39に記憶する。
各記憶領域mem_v0、mem_v1、mem_v2、…、mem_v39に記憶された各回転速度データは、システムクロックに基づくタイマ割り込みにより順次読み出され、タイマ割込み関数部271のフィルタ演算部210’に供給される。フィルタ演算部210’は、タイマ割り込みに従い、供給された回転速度データに対してバンドパスフィルタによるディジタルフィルタ演算を施して所定の周波数成分を抽出し、抽出された周波数成分に基づき各位相の周期変動値を出力する。
フィルタ演算部210’から出力された各位相の周期変動値は、それぞれ判定器251’に入力されると共に、速度記憶部211が有する40個の記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39に順次記憶される。また、フィルタ演算部210’は、抽出した周波数成分に基づき周期変動の大きさを求め、求めた値を判定器251’による判定の際の判定基準値として、判定器251’に供給する。
判定器251’は、上述した判定器251と同様にして、フィルタ演算部210’から供給された判定基準値に基づき、供給された各位相の周期変動値の積算を行うか否かを判定する。より具体的には、判定器251’は、周期変動信号の大きさに基づき、後続する加算部260および積算値記憶部261からなる積算部において、抽出された周期変動値を用いるか、値「0」を用いるかを判定する。
判定器251’の各位相の出力は、積算部に入力される。積算部は、判定器251’から供給された各位相の出力を、それぞれ加算回路Σ0、Σ1、Σ2、…、Σ39で積算し、各積算値を記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39に記憶する。記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39に記憶された各積算値は、次周期以降の周期変動を抑圧するために使用する。
なお、速度記憶部211の各記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39に記憶される回転速度データをフィルタ演算部210’でフィルタ演算処理した後、上書きすることによって、回転速度データを記憶する各記憶領域mem_v0、mem_v1、mem_v2、…、mem_v39と共通化して使うことができる。
ENC割込み関数部272において、選定器・位相調整部252Aは、エンコーダパルスを基準として、位相を合わせるように積算値記憶部261の各記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39に記憶される値を選定する。選定器・位相調整部252Aの出力は、位相を合わせるため、1周期遅れよりも少し位相の進んだ周期成分の積算値となる。一例として、選定器・位相調整252Aは、記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39において、記憶領域mem_i2を周期の先頭として積算値を読み出し、以降、記憶領域mem_i3、mem_i4、mem_i5、…、mem_i39と順次積算値を読み出し、さらに記憶領域mem_i0、mem_i1から順次積算値を読み出す。各記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39からの積算値の読み出しは、エンコーダパルスに従い行われる。
選定器・位相調整部252Aの各位相の出力は、乗算部213Aに供給され、式(2)および式(3)を用いて説明したようにして設定した比例ゲインGiFFが乗算され、加算器215に入力される。
一方、ENC割込み関数部271において、速度記憶部211に記憶された各位相の周期変動値は、上述の選定器・位相調整部252Aと同様にして、選定器・位相調整部252Bにより、エンコーダパルスを基準として、位相を合わせるように、各記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39から読み出される。選定器・位相調整部252Bで調整される位相量は、上述の選定器・位相調整部252Aと同一とされる。選定器・位相調整部252Bの各位相の出力は、乗算部213Bに供給され、式(2)および式(3)を用いて説明したようにして設定した比例ゲインGpFFが乗算され、加算器215に入力される。
加算器215は、乗算部213Aの各位相の出力と、乗算部213Bの各位相の出力とを、対応する位相毎に加算して出力する。加算器215の加算結果は、加算器204で補償器203の出力に加算される。ここでは、補償器203の出力の更新タイミングと独立して周期変動の補正出力が更新される。すなわち、補正出力は、フィードフォワードされる。
このように、周期成分抽出部200C’内で、ENC割り込み処理を行う演算と、タイマ割り込み処理を行う演算とで処理を分けることによって、ENC割込み処理の負荷を低減できる。これにより、複数のエンコーダを使うような構成であっても、データ取得の遅れを小さくすることができる。
(第4の実施形態)
次に、第4の実施形態について説明する。図15は、第4の実施形態による周期成分抽出部200Dの一例の構成を示す。なお、図15において、上述した図6と共通する部分には同一の符号を付して、詳細な説明を省略する。
図15に示されるように、第4の実施形態による周期成分抽出部200Dは、図6に示した第3の実施形態による周期成分抽出部200Cに対して、フィルタ演算部210の直前に帯域制限演算部219が追加されている。すなわち、速度演算部208から出力された回転速度は、帯域制限演算部219で帯域制限処理を施された後、フィルタ演算部210に入力される。
上述した第1の実施形態〜第3の実施形態では、周期成分抽出部200A、200Bおよび200Cにおける演算をエンコーダパルス毎に行うため、エンコーダの分解能が高い場合、大きな演算負荷が発生する。一方、高分解能のエンコーダを用いた場合であっても、補正したい周期成分の周波数が低い場合は、エンコーダの高分解能は不要であるため、エンコーダで検出した検出データを間引くことが考えられる。また、補償器203と周期成分の補正用フィードフォワード処理とでサンプリング周波数を同一にする場合、補償器203のサンプリング周期よりもエンコーダの周波数が高い場合、フィードフォワード処理の出力データを間引く必要がある。
ここで、単純に値を間引いてしまうと、エリアシングと呼ばれる周期変動が発生し、例えば駆動制御部100に駆動される中間転写ベルト14上に形成される各色のトナー画像に周期的なズレが発生し、当該中間転写ベルト14上のトナー画像により、用紙上に形成される画像にモアレ縞が発生してしまう可能性がある。
そこで、第4の実施形態では、周期成分抽出部200Dの入力に設けた帯域制限演算部219により、エンコーダパルス毎に検出される回転速度に対してローパスフィルタ処理を施し帯域制限をかける。帯域制限演算部219で行うローパスフィルタ演算は、IIR(Infinite Impulse Response)フィルタおよびFIR(Finite Impulse Response)フィルタの何れを用いて行なってもよい。また、帯域制限演算部219におけるローパスフィルタ演算は、エンコーダパルスの周期をサンプリング周期として実行する必要がある。例えば、パルス数を1/2に間引きする場合は、単純な方法として2サンプル分のデータを使用して平均化する移動平均フィルタ処理(FIRフィルタ処理の一種)を行えばよい。
この場合、周期成分抽出部200Dにおいて、平均化されたデータに対して、間引かれたエンコーダサンプリング周期で、フィルタ演算部210以降の演算を上述した周期成分抽出部200A、200Bおよび200Cなどと同様に行う。
一方、周期成分抽出部200Dの演算周期が補償器203のサンプリング周期よりも長くなる場合、加算器204では、補償器203のサンプリング周期毎に周期成分の補正用フィードフォワード値を加算する。
なお、この第4の実施形態による、速度演算部208から出力された回転速度データに対して帯域制限演算部219でローパスフィルタ処理を施してから周期成分抽出処理を行う構成は、上述した第1および第2の実施形態による周期成分抽出部200Aおよび200Bにも適用可能なものである。
(各実施形態に共通の事項)
上述した各実施形態では、図3に例示するように、検出速度を周期成分抽出部200に入力して、周期変動の補正値を算出しているが、これはこの例に限定されない。すなわち、目標値と検出速度の差である速度偏差から周期変動の補正値を算出してもよい。この場合、補正のための加算器の符号が異なることに注意する。
一方、各実施形態による周期成分抽出処理を2重のフィードバックループを持つ制御系のマイナーループに使用する場合、速度偏差を周期成分抽出部200に入力する方式よりも、検出速度を周期成分抽出部200に入力する方式の方がより好ましい。
図16を用いてこの理由について説明する。図16(a)および図16(b)の2種類の構成を考える。図16(a)および図16(b)において、回路401、回路403および回路404は、それぞれ入力に対して演算C、演算Pおよび演算Gを施す。また、比較器400は、入力された信号rおよび信号yの差分eを出力する。加算器402および405は、回路401および回路404の出力を加算して信号uを出力する。なお、加算器405は、回路404の出力を反転して、回路401の出力に対して加算する。
まず、図16(a)において、加算器402から出力される信号uは、下記の式(5)のように表すことができる。
u=(r−y)×(C+G)=(r−y)×C+(r−y)×G …(5)
一方、図16(b)において、信号uは、下記の式(6)のように表すことができる。
u=(r−y)×C−y×G …(6)
ここで、フィードバック補償を行う補償器(図3の例では駆動軸速度補償器113)を回路401(演算C)、周期成分抽出部200を回路404(演算G)と考える。この場合、図16(a)の例では、演算Gの計算に信号y(検出速度に相当)および信号r(目標値に相当)が含まれる。一方、図16(b)の例では、演算Gの計算に信号yのみが含まれ、信号rが含まれない。
2重ループの場合、外側にあるメジャーループによって目標速度(信号r)が変化する。そのため、図16(a)の構成では、目標速度の変動も周期変動として検出することになる。制御の目的は、モータなどの周期変動であるため、目標値の変動を含まない図16(b)の構成の方が好ましい。したがって、検出速度を周期成分抽出部200に入力する構成の方がより高精度に制御を行うことができる。
上述の各実施形態において、速度積算部212および216の積算値が所定の値に収束するタイミング、若しくは、所定の時間が経過した後、周期成分抽出部への値の入力を停止し、駆動軸エンコーダセンサ59から出力されるエンコーダパルスにより、速度記憶部211、ならびに、速度積算部212および216に記憶されている値を選択して周期変動の補正を行ってもよい。これにより、エンコーダパルスによる割り込み毎のフィルタ演算やデータの選定や記憶、加算などの演算負荷を減らすことができる。
上述では、複数の周波数成分を抽出する場合は、フィルタ演算部210を複数個並列に用いると説明したが、これはこの例に限定されない。例えば、抽出した周波数毎に周期変動の抑圧性能を変えたい場合がある。この場合、複数の周期成分抽出部を使用し、要求される抑圧性能を得るように乗算部213(第1の実施形態の場合)や、乗算部213Aおよび213B(第2〜第4の実施形態の場合)のゲインを調整する。
また例えば、周波数の離れた2つの周期成分による周期変動を抑えたい場合は、位相補正量も大きく異なるため、別々の周期成分抽出部を用意するとよい。
(他の実施形態)
上述した各実施形態による周期成分抽出部200(周期成分抽出部200A〜200D)は、ロジック回路やFPGA(Field-Programmable Gate Array)といったハードウェアを用いて実現可能である。これに限らず、周期成分抽出部をCPU上で動作するプログラムによりソフトウェとしても実現できる。
図17は、周期成分抽出部200をソフトウェアにより実現する際の一例の構成を示す。なお、ここでは、周期成分抽出部200が含まれる駆動制御部100の制御対象のモータがDCブラシレスモータであるものとして説明する。また、図17に示される構成は、例えば図1の画像形成装置10を制御するための全体の構成において各実施形態に関わりの深い部分を抜粋して示している。
バス600に対して、CPU610、ROM(Read Only Memory)611、RAM(Random Access Memory)612、周期カウンタ613、PIO(Programmed I/O)614およびPWM発生部615が互いに通信可能に接続される。CPU610は、ROM611に予め記憶されるプログラムに従い、RAM612をワークメモリとして用いて、図17に示される構成の全体を制御する。
例えば、各実施形態による周期成分抽出部200を実現するためのプログラムは、ROM611に予め記憶されて提供される。これに限らず、当該プログラムは、インストール可能な形式または実行可能な形式のファイルでCD(Compact Disk)、FD(フレキシブルディスク)、DVD(Digital Versatile Disk)、フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよい。
さらに、各実施形態による周期成分抽出部200を実現するためのプログラムを、インターネットなどのネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、当該プログラムをインターネットなどのネットワーク経由で提供または配布するように構成してもよい。
各実施形態による周期成分抽出部200を実現するためのプログラムは、上述した各部(第3の実施形態の場合、フィルタ演算部210、速度記憶部211、速度積算部216、乗算器213Aおよび213B、加算器215、ならびに、位相調整部214)を含むモジュール構成となっており、実際のハードウェアとしては、CPU610がROM611から当該プログラムを読み出して実行することにより、これら各部がRAM612上にロードされ、フィルタ演算部210、速度記憶部211、速度積算部216、乗算器213Aおよび213B、加算器215、ならびに、位相調整部214がRAM612上に生成されるようになっている。また、速度記憶部211の各記憶領域mem_p0、mem_p1、mem_p2、…、mem_p39や、速度積算部216の各記憶領域mem_i0、mem_i1、mem_i2、…、mem_i39は、RAM612内の所定領域を利用して構成することができる。
図17の構成において、周期カウンタ613は、モータ617の回転を減速する減速機構の出力側に設けられたロータリエンコーダ618から供給されるエンコーダパルスのパルス間隔を基本クロック(システムクロック)で計測し、エンコーダパルスの周期を求め、当該周期の逆数を計算して、減速機構の出力側の回転速度を算出する。算出された回転速度を示す情報は、CPU610に供給される。
PIO614は、CPU610とモータドライバ616との間のインターフェイスである。CPU610は、PIO614を介して、モータドライバ616に対して、モータドライバ616のオン/オフや、モータ617に対するブレーキのオン/オフ、モータ617に対する回転方向の指定などを指示する。PWM発生部615は、CPU610の命令に従い、モータ617を駆動する駆動電圧相当のデューティのPWM信号を発生させる。PWM発生部615で発生されたPWM信号は、モータドライバ616に供給される。
モータ617は、上述したモータ52およびモータ206に対応し、減速機構を介して中間転写ベルト14を駆動する。モータドライバ616は、モータ617に取り付けられたホール素子から出力されるホール信号HU、HVおよびHWのロジックに応じて3相電流U、VおよびWを流し、モータ617を駆動する。モータ617の回転は、図示されない減速機構に伝達される。減速機構の出力側に取り付けられたロータリエンコーダ618は、減速機構の動きを検出し、エンコーダパルスを出力する。
このような構成において、CPU610は、予め設定された目標速度と、ロータリエンコーダ618の出力に基づき周期カウンタ613で算出された検出速度とを比較して、モータ617の回転速度を補償する補償器演算を行い、その結果に応じたPWM信号のデューティをPWM発生部615に設定する。
さらに、各実施形態では、上述の処理に加えて、エンコーダパルスを周期カウンタ613で計測するのと同時に、エンコーダパルスのエッジでCPU610に対する割り込みを発生させる。CPU610は、上述した周期成分抽出部200を実現するためのプログラムに従い、当該割り込みに応じて、上述した各実施形態による周期成分抽出部200の動作および演算を行う。