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