(57)【特許請求の範囲】
【請求項１】
速度検出対象としての回転体に取り付けられたエンコーダの出力パルスから、回転体の回転速度を検出する速度検出装置において、
前記出力パルスのエッジを検出するエッジ検出手段と、
検出されたエッジに基づいて回転体の回転方向を検出する回転方向検出手段と、
速度演算周期に同期した時間を計測する時間計測手段と、
前記エッジ検出手段の出力により前記時間計測手段の時間計測値を保持する時間記憶手段と、
速度演算周期内の前記エッジの変化状態を検出しエッジ変化情報として保持するエッジ変化情報保持手段と、
前記回転方向及びエッジ変化情報から、速度演算周期内に前記エッジの変化がない場合に次に発生するエッジを予測するエッジ予測手段と、
このエッジ予測手段により予測したエッジに対応する時間補正値と、前記時間計測値及び前記回転方向とを用いて回転体の回転速度を演算する演算手段と、
を備え、
前回以前の速度演算により得た速度検出値を用いて前記時間補正値を求めることを特徴とする速度検出装置。
【請求項２】
請求項１に記載した速度検出装置において、
前記演算手段は、前記エッジ予測手段により予測したエッジが将来の速度演算周期内の所定時点に発生すると仮定して前記時間補正値を求め、この時間補正値を前記時間計測値及び前記回転方向と共に用いて回転体の回転速度を演算することを特徴とする速度検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば電動機を可変速駆動する電動機駆動装置において、電動機に取り付けたエンコーダの出力パルスを用いて電動機速度を検出する速度検出装置に関するものである。
【背景技術】
【０００２】
電動機を可変速駆動する装置として、インバータが知られている。インバータの機能の中で、電動機の速度を高精度に制御するために、電動機に取り付けたエンコーダの出力パルス信号に基づいて電動機速度を検出し、速度指令値との偏差をゼロにする速度調節機能を用いて制御を行うものがある。
【０００３】
しかし、エンコーダの出力パルスは通常、１回転あたりのパルス数が決められており、パルスは回転速度によって粗密が発生する。パルスが粗となる低速領域では、検出精度が悪化して速度検出値に誤差が生じるため、速度制御性能を悪化させる原因となる。速度制御性能が悪化すると、例えばクレーンなどでは、速度制御誤差がトルクのリプルとなり、積荷に振動が伝わって問題になる。あるいは速度制御誤差により、自動運転中に積荷の停止位置に誤差が生じ、他の機器に影響を及ぼす等の問題が生じる。
また、エンコーダの取り付け方により、出力パルスの位相誤差が発生し、この出力パルスに基づく検出方法では、速度検出値に位相誤差の影響が現れ、上述したようなトルクリプル等の問題を引き起こす。
【０００４】
そこで、上述の問題を解決するため、特許文献１には、エンコーダの出力パルスの立ち上がりエッジ、立ち下がりエッジを利用して速度を検出する方法が開示されている。以下、この従来技術について簡単に説明する。
【０００５】
図１０は、特許文献１に記載された従来技術の構成図である。
図１０において、ラッチ信号作成部２１は、エンコーダから出力されるＡ相、Ｂ相という位相の異なった２種類のパルスからそれぞれの立ち上がりエッジ、立ち下がりエッジを検出し、合計４種類のラッチ信号ＥＤ０〜ＥＤ３を作成する。角度計測カウンタ２２は、ラッチ信号（４Ｆ）と電動機の回転方向を示すＵＰ／ＤＯＷＮ信号を用いてカウンタのＵＰ，ＤＯＷＮを行う。
【０００６】
時間計測カウンタ２３は、速度演算周期に同期してゼロになるダウンカウンタである。４種類のラッチ信号ＥＤ０〜ＥＤ３のそれぞれに対応させて、角度計測カウンタ２２の値をラッチして保存する第１データラッチ２４−１〜２４−４と、時間計測カウンタ２３の値をラッチして保存する第２データラッチ２５−１〜２５−４とを設け、更に、速度演算周期毎に入力データをラッチする角度データラッチ２７−１〜２７−４，時間データラッチ２８−１〜２８−４を設ける。
なお、ＣＰＵ３０では、速度演算周期毎に角度計測値（データラッチ２７−１〜２７−４の値）と時間計測値（データラッチ２８−１〜２８−４の値）とを読み込み、検出フローチャートに従って電動機の速度を検出する。
【０００７】
また、２６は、ラッチ信号ＥＤ０〜ＥＤ３からＡ相パルス、Ｂ相パルスのエッジ変化を検出して保持するエッジ保持部、２９は、エッジ保持部２６の出力信号ＦＩＬ０〜ＦＩＬ３から、エッジの変化が１回でもあれば「１」を、変化が１回もなければ「０」を設定して保持することによりエッジの変化情報を保持するエッジ変化情報保持部、３１はコントローラ、３２は第３データラッチを示す。
【０００８】
図１１は、上記従来技術による速度検出動作を示すフローチャートである。
速度演算周期毎にエッジの変化の有無を図１０のエッジ保持部２６により検出し、速度演算周期毎にラッチしたエッジ変化情報保持部２９の出力値Ｆ０〜Ｆ３をＣＰＵ３０が読み込む。速度演算周期において一度でもエッジを検出していたら、カウント値の大小から最新のエッジを検索し、最新エッジに対応するデータラッチ２７−１〜２７−４の角度計測値とデータラッチ２８−１〜２８−４の時間計測値とを用いて、数式１に基づき速度ωを演算する。
【０００９】
【数１】
0004998789.tif 000002
【００１０】
ただし、θＮｅｗは今回のサンプルタイミングで読み込んだ角度計測値、θＯＬＤは前回のサンプルタイミングで読み込んだ角度計測値、ＴＳはサンプリング周期、ＴＮｅｗは今回のサンプルタイミングで読み込んだ時間計測値、ＴＯＬＤは前回のサンプルタイミングで読み込んだ時間計測値である。
また、回転速度が低く、速度演算周期内にパルスが一度も存在しなかった場合は、ＴＯＬＤにサンプリング周期ＴＳを加えて速度ωＳを推定する。
【００１１】
【特許文献１】特開平６−１１８０９０号公報（［００２４］〜［００４３］、図２，図１４）
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記の従来技術では、低速域において速度演算周期内にエンコーダからパルスが発生せず、エッジが存在しない場合には、サンプルタイミングを基準として最新のエッジに対応する時間にサンプリング周期ＴＳを加算することで時間計測値を補正し、速度ωＳを推定している。
しかしながら、速度演算周期の２〜３回にわたってエンコーダからパルスが発生しないような極低速域では、速度の真値に対して誤差が発生し、電動機のトルクリプル等の問題を生じることになる。
そこで、本発明の解決課題は、極低速域においても高精度に速度を検出可能とした速度検出装置を提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、請求項１に係る発明は、速度検出対象としての回転体に取り付けられたエンコーダの出力パルスから、回転体の回転速度を検出する速度検出装置において、
前記出力パルスのエッジを検出するエッジ検出手段と、
検出されたエッジに基づいて回転体の回転方向を検出する回転方向検出手段と、
速度演算周期に同期した時間を計測する時間計測手段と、
前記エッジ検出手段の出力により前記時間計測手段の時間計測値を保持する時間記憶手段と、
速度演算周期内の前記エッジの変化状態を検出しエッジ変化情報として保持するエッジ変化情報保持手段と、
前記回転方向及びエッジ変化情報から、速度演算周期内に前記エッジの変化がない場合に次に発生するエッジを予測するエッジ予測手段と、
このエッジ予測手段により予測したエッジに対応する時間補正値と、前記時間計測値及び前記回転方向とを用いて回転体の回転速度を演算する演算手段と、
を備え、
前回以前の速度演算により得た速度検出値を用いて前記時間補正値を求めるものである。
【００１４】
請求項２に係る発明は、請求項１において、前記演算手段は、前記エッジ予測手段により予測したエッジが将来の速度演算周期内の所定時点に発生すると仮定して前記時間補正値を求め、この時間補正値を前記時間計測値及び前記回転方向と共に用いて回転体の回転速度を演算するものである。
【発明の効果】
【００１６】
本発明によれば、速度演算周期内にエンコーダからパルスが発生せず、エッジが存在しないような極低速域においても、回転方向及びエッジ変化情報から次に発生するエッジを予測して時間補正値を求め、この時間補正値を時間計測値及び回転方向と共に用いることで、高精度な速度検出を行うことができる。
【発明を実施するための最良の形態】
【００１７】
以下、図に沿って本発明の実施形態を説明する。
ここで、本実施形態の特徴は、速度演算周期内にパルスが発生しないような極低速域においては次に発生するエッジを予測し、この予測エッジに応じた時間補正値を用いて速度演算用の時間計測値を補正することにある。
【００１８】
図１は、本発明の実施形態の主要部を示す構成図である。なお、図１０の従来技術と同一の部分には同一の参照符号を付してある。
図１において、２１はエッジ検出手段としてのラッチ信号作成部であり、エンコーダ（図示せず）から出力される位相の異なったＡ相パルス、Ｂ相パルスの立ち上がりエッジと立ち下がりエッジとを検出し、ラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３を作成する。上記エンコーダは、例えば速度を検出するべき回転体である電動機回転軸に連結されて、その回転速度に比例した数のＡ相パルス、Ｂ相パルスを出力する。
ここで、エンコーダはＡ相，Ｂ相の２相に限定されず、３相以上であっても良いが、本実施形態では、２相エンコーダから出力されるＡ相パルス、Ｂ相パルスの立ち上がりエッジ及び立ち下がりエッジの４種類のエッジを用いて速度を検出する場合について説明する。
【００１９】
上記Ａ相パルス、Ｂ相パルスは、回転方向検出部３２にも入力されている。この回転方向検出部３２は、後述するように、Ａ相パルス、Ｂ相パルス及びラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３から、電動機の回転方向（ＣＷ：正転，ＣＣＷ：逆転）を検出するものである。
回転方向検出部３２から出力される信号ＣＷ／ＣＣＷは、回転方向保持部３３に入力され、速度演算周期信号（サンプリング信号）ＳＭＰＬによりラッチされて回転方向検出信号ＣＷＤＥＴとして出力される。
【００２０】
また、回転方向検出部３２からは、回転方向が変化したことを示す回転方向変化検出信号ＣＨＮＧも出力されており、この信号ＣＨＮＧは、回転方向変化エッジ記憶部３４に入力されている。回転方向変化エッジ記憶部３４は、回転方向が変化した際のエッジ情報を保持し、回転方向変化エッジ信号ＣＨＮＧＥＤとしてＣＰＵ３０Ａに出力する。
【００２１】
前記ラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３は、時間記憶手段としてのデータラッチ２５−１〜２５−４に入力されていると共に、エッジ保持部２６にも入力されている。
データラッチ２５−１〜２５−４には、図１０と同様に時間計測カウンタ２３から出力された時間計測値（時間カウント値）ＴＤＥ０ＥＮ〜ＴＤＥ３ＥＮが入力されており、ラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３によってこれらの時間計測値ＴＤＥ０ＥＮ〜ＴＤＥ３ＥＮを記憶し、次段のデータラッチ２８−１〜２８−４に送るように構成されている。上記時間計測カウンタ２３は、速度演算周期に同期してゼロになるダウンカウンタである。
データラッチ２８−１〜２８−４では、速度演算周期信号ＳＭＰＬによりラッチした時間計測値ＴＤＥ０ＥＮ〜ＴＤＥ３ＥＮを、時間計測値Ｔ０ＥＮ〜Ｔ３ＥＮとしてＣＰＵ３０Ａに送出する。
【００２２】
ラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３は、Ｊ−Ｋフリップフロップ等からなるエッジ保持部２６に入力され、速度演算周期における各エッジの変化の有無が検出される。エッジ保持部２６では、各ラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３について、エッジの変化が１回でもあれば「１」を設定して保持し、変化が１回もなければ「０」を設定して保持する。これらの保持データは、エッジ変化情報保持部２９に送られ、速度演算周期信号ＳＭＰＬによりラッチされてエッジ変化検出信号ＥＤＦ０〜ＥＤＦ３としてＣＰＵ３０Ａに送出される。
【００２３】
図２は、前記回転方向検出部３２の動作を示すタイミングチャートである。
回転方向検出部３２は、ラッチ信号ＥＤ０，ＥＤ１，ＥＤ２，ＥＤ３が発生した際の、Ａ相パルス，Ｂ相パルスの状態から回転方向を検出する。
【００２４】
すなわち、図２において、例えば時点（３）でＡ相パルスの立ち上がりエッジを信号ＥＤ０により検出したときに（ＥＤ０が「１」）、Ｂ相パルスが検出されない場合（Ｂ相パルスが「０」）は、正回転と判断して信号ＣＷ（＝「１」）を出力する。一方、時点（４）においてＢ相パルスの立ち下がりエッジを信号ＥＤ３により検出したときに（ＥＤ３が「１」）、Ａ相パルスが検出された場合（Ａ相パルスが「１」）には、逆回転と判断して信号ＣＣＷ（＝「０」）を出力する。
こうして得られた回転方向検出信号は、回転方向保持部３３において速度演算周期信号ＳＭＰＬによりラッチされ、回転方向検出信号ＣＷＤＥＴとしてＣＰＵ３０Ａに送られる。
なお、図２において、ＴＣＨＮＧは回転方向が変化した時点を示している。
【００２５】
ＣＰＵ３０Ａでは、速度演算周期毎に、データラッチ２８−１〜２８−４からの時間計測値Ｔ０ＥＮ〜Ｔ３ＥＮと、回転方向保持部３３からの回転方向検出信号ＣＷＤＥＴと、エッジ変化情報保持部２９からのエッジ変化検出信号ＥＤＦ０〜ＥＤＦ３とを用いて、電動機の速度を検出する。
ここで、回転方向変化エッジ信号ＣＨＮＧＥＤは、逆回転時も考慮して速度を検出する場合に用いられるが、その詳細については後述する。
【００２６】
図３は、正回転時における速度検出動作を示すタイミングチャートである。ここでは、一例として、図３における時点（１）のサンプルタイミング（速度演算周期信号ＳＭＰＬのタイミング）で速度を検出するものとして説明する。
図３の時点（１）において、図示するサンプルタイミングによれば、最新のエッジは信号ＥＤ０によるＡ相パルスの立ち上がりエッジである。これは、エッジ変化検出信号ＥＤＦ０〜ＥＤＦ３から、ＥＤＦ０が「１」であり、その他のＥＤＦ１〜ＥＤＦ３が「０」であることから判断する。なお、図３ではＥＤＦ０の値のみを図示し、ＥＤＦ１〜ＥＤＦ３を省略してある。
【００２７】
このため、信号ＥＤ０によりラッチした時間計測値ＴＤＥ０ＥＮ＝Ｔ０ＥＮ１が最新の時間計測値（今回値）であり、前回の信号ＥＤ０が発生した時の時間計測値ＴＤＥ０ＥＮ＝Ｔ０ＥＮ０を前回値として使用する。このＴ０ＥＮ０の値は、時点（１）でデータラッチ２８−１から読み込むことはできないが、前回のエッジ変化検出信号ＥＤＦ０が「１」であった時点（１）’でＣＰＵ３０Ａ内のメモリに保存しておくことにより使用可能である。
また、速度演算周期に対応する時間計測カウンタ２３の最大値をＴｍａｘとし、前回値Ｔ０ＥＮ０から今回値Ｔ０ＥＮ１までの間にＥＤＦ０がゼロであったサンプリング回数をＮ０として、これらをＣＰＵ３０Ａのメモリに記憶しておき、数式２に基づいて速度ｎを演算する。
【００２８】
【数２】
0004998789.tif 000003
【００２９】
なお、数式２において、ＣＷｓｉｇｎは回転方向を示し、正回転（ＣＷ）を「１」、逆回転（ＣＣＷ）を「−１」とする。また、Ｋはエンコーダの１回転あたりの出力パルス数に関係する定数である。
【００３０】
図３に示すように、回転方向が変化していない場合には、Ａ相パルス、Ｂ相パルスは順序通り発生する。例えば、図３において、Ａ相パルスの立ち上がり→Ｂ相パルスの立ち上がり→Ａ相パルスの立ち下がり→Ｂ相パルスの立ち下がりという順序は不変である。このため、図３の時点（１）のサンプルタイミングで速度検出を行う場合、回転方向が変化していなければ、前回のＡ相パルスの立ち上がりから今回のＡ相パルスの立ち上がりまでに計４回のエッジが発生したことがわかる。
【００３１】
よって、数式２の分子を、Ａ相パルス１周期内に存在するＡ相，Ｂ相パルスのエッジ数とおいて速度ｎを検出することができる。なお、数式２における分子の４は、本実施形態のように、Ａ相パルス，Ｂ相パルスを出力する２相エンコーダの場合に、Ａ相パルス（またはＢ相パルス）の１周期内に存在する全相（つまりＡ相，Ｂ相）パルスのエッジ数であり、エンコーダの相数によって異なるのは明らかである。また、数式２における定数Ｋは、前述した如く、使用するエンコーダの１回転あたりの出力パルス数によって変化する。
従って、エンコーダの相数や出力パルス数に応じて上記エッジ数（数式２における分子の数値）や定数ＫをＣＰＵ３０Ａが変更すれば、数式２により、エンコーダの相数や出力パルス数に関係なく速度を検出することができる。
【００３２】
さて、前述した図２の時点ＴＣＨＮＧにおいて回転方向が変化すると、各相パルスのエッジが出現する順序が崩れる。例えば、時点ＴＣＨＮＧより後で今回のラッチ信号ＥＤ３の後にサンプルタイミングが発生した際に、今回のラッチ信号ＥＤ３によりラッチした時間計測値Ｔ３ＥＮ１と前回のラッチ信号ＥＤ３によりラッチした時間計測値Ｔ３ＥＮ０とを使用しても、Ｂ相パルスの立ち下がりエッジに対応する前回及び今回のラッチ信号ＥＤ３の間に発生したエッジは、ラッチ信号ＥＤ０，ＥＤ１に対応するエッジ（Ａ相パルスの立ち上がりエッジ，Ｂ相パルスの立ち上がりエッジ）と、今回のラッチ信号ＥＤ３に対応するＢ相パルスの立ち下がりエッジだけであるから、合計３個である。つまり、Ａ相パルスの立ち下がりエッジに対応するラッチ信号ＥＤ２が、前回及び今回のラッチ信号ＥＤ３の間に存在しない。
【００３３】
すなわち、図３に示した如く回転方向に変化がない場合には、前回及び今回のラッチ信号の間に４個のエッジが存在するため数式２の分子の値は４で良いが、回転方向が変化した場合には、数式２の分子の値を３にする必要があり、数式２をそのまま使用すると速度演算値に誤差が生じる。
そこで、回転方向の変化検出要因となったエッジ情報を記憶する回転方向変化エッジ記憶部３４を設け、この記憶部３４による回転方向変化エッジ情報（回転方向変化エッジ信号ＣＨＮＧＥＤ）を加味してＣＰＵ３０Ａが速度を演算する。
【００３４】
図４は、回転方向変化エッジ記憶部３４の動作を示すタイミングチャートである。時点ＴＣＨＮＧにおいて、回転方向が正転（ＣＷ）から逆転（ＣＣＷ）に変化したとする。なお、サンプルタイミングは、図４に▽で示したタイミングであるとする。
【００３５】
回転方向が変化したことをＣＰＵ３０Ａが知り得るのは、時点ＴＣＨＮＧの直後のサンプルタイミングの時点（２）である。このとき、エンコーダパルスのエッジの最新情報はラッチ信号ＥＤ３から取得される。また、回転方向に変化がなく正転のままであれば、ラッチ信号ＥＤ１の次に信号ＥＤ２が検出されるが、図４の例では信号ＥＤ１の次に信号ＥＤ３が検出されるので、回転方向が変化したこともラッチ信号ＥＤ３から検出される。
【００３６】
そこで、回転方向の変化検出要因となったエッジ（ラッチ信号）を回転方向変化エッジ信号ＣＨＮＧＥＤとして回転方向変化エッジ記憶部３４が保存し、ＣＰＵ３０Ａによる速度検出に使用する。なお、上述したようにエッジの最新情報を与えるラッチ信号と回転方向の変化を検出した（変化検出要因となった）ラッチ信号とが常に同一とは限らないため、回転方向変化エッジ信号ＣＨＮＧＥＤを用いる必要がある。
【００３７】
図５は、回転方向が変化した場合も含む速度検出のフローチャートである。
回転方向の変化の有無（ステップＳ１）は、信号ＣＷＤＥＴの前回値と今回値とが一致しているか否かによって判断する。信号ＣＷＤＥＴの今回値と前回値とが一致していれば（Ｓ１ ＮＯ）、ステップＳ５，Ｓ６を経て数式２により速度ｎを演算する（Ｓ７）。
【００３８】
信号ＣＷＤＥＴの今回値と前回値とが一致していない場合は（Ｓ１ ＹＥＳ）、速度演算周期の間で回転方向が変化しているとみなす。そして、回転方向変化エッジ信号ＣＨＮＧＥＤを読み込み、回転方向が変化した際のエッジ（ラッチ信号）の情報を検索する（Ｓ２）。ここで、図４の例では、回転方向変化エッジ信号ＣＨＮＧＥＤとして「３」が保持されている。この信号ＣＨＮＧＥＤの「３」はラッチ信号ＥＤ３を意味しており、Ｂ相パルスの立ち下がりエッジによって回転方向に変化が起きたことがわかる。
【００３９】
次に、上記信号ＣＨＮＧＥＤ（Ｂ相パルスの立ち下がりに対応する）に応じた時間計測値Ｔ３ＥＮを用いて、速度ｎを演算する。すなわち、回転方向が変化している場合は、回転方向変化を検出した際のエッジ情報に応じた時間計測値と、前回の時間計測値とからエッジ間隔を求め、その間に発生するエッジの数は４ではなく３であるとして、数式３により速度ｎを演算する（Ｓ３，Ｓ４）。
【００４０】
【数３】
0004998789.tif 000004
【００４１】
なお、数式３以外にも、回転方向の変化を検出したエッジがわかっていれば、回転方向が変化する直前のエッジに対応する時間計測値（図４の例ではＥＤ１に対応するＴ１ＥＮの値）を用いて、エッジ数を２として計算しても良い。いずれにしても、速度演算式は数式３に限定されるものではない。
【００４２】
次いで、本実施形態の特徴である極低速時の速度検出動作を、ＣＰＵ３０Ａの構成と共に図１，図６〜図８を参照しつつ説明する。
図１に示したＣＰＵ３０Ａは、速度演算周期毎にデータラッチ２８−１〜２８−４内の時間計測値Ｔ０ＥＮ，Ｔ１ＥＮ，Ｔ２ＥＮ，Ｔ３ＥＮを内部の記憶部３５−１〜３５−４に読み込み、時間計測値Ｔ０ＭＥＭ１，Ｔ１ＭＥＭ１，Ｔ２ＭＥＭ１，Ｔ３ＭＥＭ１を更新する。
【００４３】
すなわち、ＣＰＵ内部の時間計測値は、内部の記憶部３６に記憶されたエッジ変化情報ＥＤＦ０ＭＥＭ，ＥＤＦ１ＭＥＭ，ＥＤＦ２ＭＥＭ，ＥＤＦ３ＭＥＭに基づいて速度演算周期内にエッジの変化が検出されたとき、前回の時間計測値Ｔ０ＭＥＭ０，Ｔ１ＭＥＭ０，Ｔ２ＭＥＭ０，Ｔ３ＭＥＭ０を今回値Ｔ０ＭＥＭ１，Ｔ１ＭＥＭ１，Ｔ２ＭＥＭ１，Ｔ３ＭＥＭ１に更新する。なお、別の記憶部３７内の回転方向情報は、速度演算周期毎に今回値ＣＷＭＥＭ１、前回値ＣＷＭＥＭ０としてそれぞれ更新される。
【００４４】
最新エッジ検出部３８は、記憶部３６のエッジ変化情報から、一つだけエッジが検出された場合はそれを最新エッジとみなし、そのエッジに対応する記憶部３５−１〜３５−４内の時間計測値を最新エッジの時間計測値とみなす。仮に、速度演算周期内に複数のエッジが検出された場合は、時間計測値が小さいエッジの方がサンプルタイミングに近いものとして、そのエッジを最新エッジとみなす。
【００４５】
これは、サンプルタイミングに同期する時間計測カウンタ２３がダウンカウンタであり、カウンタの値が小さい方がサンプルタイミングに近いとみなせるからである。なお、時間計測カウンタ２３はダウンカウンタに限定されるわけではなく、アップカウンタであっても良い。アップカウンタの場合は、サンプルタイミングに近い方が時間計測値は大きくなるので、カウンタの種類に合わせて最新エッジを検出すればよい。
最新エッジ検出部３８により得た最新エッジ判別信号（ＥＤＦ０〜ＥＤＦ３に対応させて、「０」〜「３」の値をとる）と、最新エッジに対応する時間計測値とは、記憶部３７からの回転方向判別信号及び記憶部３６からのエッジ有無判別信号と共にエッジ予測・速度演算部３９に送られる。
【００４６】
図６は、最新エッジ検出部３８、エッジ予測・速度演算部３９等の動作を示すタイミングチャートである。
最新エッジ判別信号及び最新エッジ時間計測値は、前述のように最新エッジ検出部３８にて作成され、図６の時点（１）のように、エンコーダパルスのエッジが発生した直後のサンプルタイミングで更新される。いま、時点（１）’に着目すると、時点（１）から（１）’までの速度演算周期内にエンコーダパルスのエッジは検出されず、ＣＰＵ３０Ａの内部のエッジ変化情報ＥＤＦ０ＭＥＭ，ＥＤＦ１ＭＥＭ，ＥＤＦ２ＭＥＭ，ＥＤＦ３ＭＥＭは、全てゼロである。ここで、時点（１）以後は、最新エッジ検出部３８から出力される最新エッジ判別信号が、Ａ相パルスの立ち上がりエッジを示す「０」となっている。
【００４７】
このとき、時点（１）ではＡ相パルスの立ち上がりエッジを検出しているので、時点（１）’では、回転方向が正であれば、次に発生するのはＢ相パルスの立ち上がりエッジであると予測できる。従って、時点（１）以後にエッジ予測・速度演算部３９から出力される次のエッジ予測値（最新エッジ判別信号と同様に、ＥＤＦ０〜ＥＤＦ３に対応させて「０」〜「３」の値をとる）は、Ｂ相パルスの立ち上がりエッジを示す「１」となる。
なお、回転方向が逆のときは、次に発生するのはＢ相パルスの立ち下がりエッジであるから、次のエッジ予測値が「３」となる。
以下、回転方向が正回転であるものとして説明を続ける。
【００４８】
時点（１）’におけるエッジ予測値から、エッジ時間補正値Ｔ１ｃｍｐを数式４により演算する。
【００４９】
【数４】
0004998789.tif 000005
【００５０】
ただし、Ｎ１は、前回、Ｂ相立ち上がりエッジを検出してから時点（１）’までのサンプリング回数を表し、Ｔｍａｘは、サンプリング周期に同期した時間計測カウンタ２３の最大値である。
【００５１】
数式４における定数（１／２）は、次のエッジが、サンプリング周期の中央で発生すると予測したためである。図６のａ点に着目すると、予測誤差は次に発生するエンコーダパルスがサンプリング周期内のどの点であっても、サンプリング周期の１／２以内となり、検出誤差を最小にすることができる。なお、上記の定数は１／２に限定されるものではなく、状況に応じて変更してもよい。
【００５２】
エッジ予測・速度演算部３９は、前回のＢ相パルスの立ち上がりエッジに対応する時間計測値、数式４のエッジ時間補正値、及び回転方向から、数式５により速度ｎを計算する。
【００５３】
【数５】
0004998789.tif 000006
【００５４】
ただし、Ｔ１ＭＥＭ１は、前回のＢ相パルスの立ち上がりエッジを検出した際の時間計測値であり、今回のサンプルタイミングではエッジを検出していないので、更新されない。
【００５５】
ここで、本実施形態によるエッジ時間補正値を用いた時間計測方法と従来技術による時間計測方法との違いについて説明する。
図６の時点（１）’において、従来技術では、最新エッジであるＡ相パルスの立ち上がりエッジに対応する時間計測値Ｔ０ＭＥＭ１にサンプリング周期に応じた時間計測値Ｔｍａｘを加え、数式６により速度ｎを演算している。
【００５６】
【数６】
0004998789.tif 000007
【００５７】
ここで、図７は、従来技術により速度を演算した場合と、本実施形態により速度を演算した場合の時間計測誤差の関係を示したタイミングチャートである。いま、真のパルス幅の時間計測値をＴ０とし、どのエッジで検出してもパルス幅は同一、すなわち真の速度に変化がないものとする。図７において、▽はサンプルタイミングを表し、このタイミング▽の各点で速度検出演算を行う。
【００５８】
図７の時点（１）においては、従来技術でも本実施形態でもＡ相パルスの立ち上がりエッジを検出しているため、前回及び今回の時間計測値Ｔ０ＭＥＭ０，Ｔ０ＭＥＭ１を用いて演算した速度検出値は同一であり、理論上誤差は発生しない。
しかし、時点（２）では、時点（１）と（２）との間にエッジを検出していないため、従来技術と本実施形態では、時間計測値に差異が生じる。すなわち、従来技術では、直前のＡ相パルスの立ち上がりエッジに対応する時間計測値を用いて計算するので、図７に示すように、真の時間計測値に対して数式７で示す誤差Ｅｒｒｃｏｎｖが発生する。
【００５９】
【数７】
0004998789.tif 000008
【００６０】
一方、本実施形態における誤差Ｅｒｒｐｒｏｐは、図７より、数式８によって表される。
【００６１】
【数８】
0004998789.tif 000009
【００６２】
図７から明らかなように、ＥｒｒＴｃ（＝Ｅｒｒｐｒｏｐ）はＥｒｒＴ＋ＥｒｒＴａ（＝Ｅｒｒｃｏｎｖ）より小さく、時間計測誤差が大幅に低減できていることが分かる。これは、従来技術では、最新のエッジからサンプリング周期分のＴｍａｘを加えるため、エッジを検出したサンプルタイミングの次のサンプルタイミングで、少なくともＥｒｒＴという時間計測誤差が生まれる。この誤差ＥｒｒＴは時間計測値の真値Ｔ０の３／４に相当し、速度検出誤差に大きく影響する。
一方、本実施形態では、次に発生するエッジをもとに時間計測を行い、かつ予測エッジの位置をサンプリング周期の中央とするためＥｒｒＴは発生せず、時間計測値の誤差は真値Ｔ０の１／４未満となり、従来技術に対して少なくとも１／３に誤差を縮小できる。
【００６３】
図８は、本実施形態と従来技術により速度検出を行った場合のシミュレーション結果を示しており、横軸は時間を、縦軸は速度を示している。このシミュレーションでは、真の速度を１０ｒ／ｍｉｎ（１分間あたり１０回転）とし、演算方式のみ従来技術と本実施形態との二通りにして演算結果を比較した。なお、エッジの検出方法やカウンタのクロック周波数などは同一とした。
【００６４】
図８より、従来技術では、エッジを検出した次の速度演算周期内にエッジが存在しない場合に誤差が大きくなり、階段状に真値に収束する。一方、本実施形態では、従来技術に比べて誤差が小さく、良好に検出できている。
従来技術のように検出値に誤差が大きいと、検出値をもとにして速度制御を行っている場合には、トルクリプルが増大する恐れがあり好ましくない。これに対し、本実施形態では、検出値の誤差を従来技術に対して大幅に低減できるため、トルクリプルなどの影響を低減することができる。
【００６５】
次に、図９に示す実施形態では、前記数式４による時間補正値演算用の係数１／２を、前回以前の速度検出値に応じて可変とする予測補正値演算部４０をＣＰＵ３０Ｂ内に備えている。
前述したように、時間計測値の誤差は、最大で真値Ｔ０の１／４発生する。この誤差はＴ０によって変わるため、図９では、予測エッジの補正値をＴ０に応じて最小となるように演算する。
時間計測値の真値Ｔ０は、前回以前に演算した速度検出値をｎ０とすると、数式９によって表すことができる。
【００６６】
【数９】
0004998789.tif 000010
【００６７】
ただし、Ｋ４は、エンコーダの１回転あたりのパルス数に関係する定数であり、数式５を例にとると、Ｋ４＝４Ｋが成り立つ。前回以前に演算した速度検出値ｎ０とは、エッジを検出したときの誤差が小さい速度検出値でもよいし、前回のサンプルタイミングにおける速度検出値でもよい。
予測補正値演算部４０により求められる補正値をｋ（ただし、０＜ｋ＜１／２）とすると、図７における時点（２）のように、速度演算周期内にエッジを検出しなかった場合の真値Ｔ０との間の誤差ΔＴは、数式１０によって表される。
【００６８】
【数１０】
0004998789.tif 000011
【００６９】
数式１０から、ΔＴ＝０となるｋを求めると、数式１１となる。
【００７０】
【数１１】
0004998789.tif 000012
【００７１】
数式１１に数式９を代入すると、数式１２が求まる。
【００７２】
【数１２】
0004998789.tif 000013
【００７３】
従って、予測補正値演算部４０は数式１２により補正値ｋを演算し、数式４のエッジ時間補正値Ｔ１ｃｍｐを数式１３のように演算する。
【００７４】
【数１３】
0004998789.tif 000014
【００７５】
数式１３の時間補正値をもとに前記同様に数式５を演算し、速度ｎを求める。なお、Ｔ０が非常に大きい（ｎ０が非常に小さい）極低速領域では、複数の速度演算周期内でエッジを検出しないときがあるので、Ｎ１は１とは限らない。よって、補正値ｋの上限を１／２として演算すれば、どの速度領域においても誤差を最小にすることができる。
【００７６】
なお、本発明は数式１３の演算方法に限定されるものではなく、使用するエンコーダのパルス数やサンプリング周期に応じてリアルタイムに計算してもよいし、演算量を低減するために、制御開始時に補正値ｋを一度計算してメモリに記憶しておいてもよい。
また、本発明は、例えば特許文献１の回路構成により複数のエッジの時間計測値を用いて速度を検出する場合にも適用することができ、図１や図９に示した回路構成に何ら限定されるものではない。
【図面の簡単な説明】
【００７７】
【図１】本発明の実施形態の主要部を示す構成図である。
【図２】図１における回転方向検出部の動作を示すタイミングチャートである。
【図３】図１における速度検出動作を示すタイミングチャートである。
【図４】図１における回転方向変化エッジ記憶部の動作を示すタイミングチャートである。
【図５】図１における速度検出動作を示すフローチャートである。
【図６】図１における最新エッジ検出部、エッジ予測・速度演算部等の動作を示すタイミングチャートである。
【図７】従来技術及び図１による時間計測誤差の関係を示したタイミングチャートである。
【図８】従来技術及び図１により速度を検出した場合のシミュレーション結果を示す図である。
【図９】本発明の実施形態を示す構成図である。
【図１０】従来技術を示す構成図である。
【図１１】従来技術による速度検出動作を示すフローチャートである。
【符号の説明】
【００７８】
２１：ラッチ信号作成部
２３：時間計測カウンタ
２５−１〜２５−４：データラッチ
２６：エッジ保持部
２８−１〜２８−４：データラッチ
２９：エッジ変化情報保持部
３０Ａ，３０Ｂ：ＣＰＵ
３１：コントローラ
３２：回転方向検出部
３３：回転方向保持部
３４：回転方向変化エッジ記憶部
３５−１〜３５−４，３６，３７：記憶部
３８：最新エッジ検出部
３９：エッジ予測・速度演算部
４０：予測補正値演算部
【図１】
0004998789.tif 000015
【図２】
0004998789.tif 000016
【図３】
0004998789.tif 000017
【図４】
0004998789.tif 000018
【図５】
0004998789.tif 000019
【図６】
0004998789.tif 000020
【図７】
0004998789.tif 000021
【図８】
0004998789.tif 000022
【図９】
0004998789.tif 000023
【図１０】
0004998789.tif 000024
【図１１】
0004998789.tif 000025