(57)【要約】【課題】  従来のラインレシーバでは除去できなかったノイズの影響を除くことで、正確な回転子位置を検出して各種機械等の制御をより高精度にする。【解決手段】  同一波長で位相が互いにπ/2 radずれたＡ信号およびＢ信号と、回転子の１回転毎に生成するＺ信号から、ラインレシーバによりコモンノイズを除去した後、Ａ，Ｂ両信号の生成規則に反して推移したものをノイズとみなすことでＡ，Ｂ両信号それぞれに重畳するコモンノイズ以外のノイズ除去を行う。Ａ，Ｂ両信号の立ち上がりおよび立ち下がりの関係から回転子の回転方向を検出し、回転方向に応じたノイズ除去を行う。回転速度が回転方向転換可能な限界速度を超えているか否かを判定し、限界速度を超えているときにコモンノイズ以外のノイズ除去を行う。【効果】  特に、ＳＲモータを使用した各種機械の高精度制御が効果的に実現できる。【選択図】    図５
2005198428.tif 000002
【特許請求の範囲】
【請求項１】
ロータリエンコーダから、同一波長で位相が互いにπ/2 radずれたＡ信号およびＢ信号と、回転子の１回転毎に生成するＺ信号とを発信させ、ラインレシーバにより各信号に重畳するコモンノイズを除去した後、Ａ，Ｂ両信号の生成規則に反して推移したものをノイズとみなすことでＡ，Ｂ両信号それぞれに重畳するコモンノイズ以外のノイズ除去を行い、位置検出を行うことを特徴とするロータリエンコーダによる回転子の位置検出方法。
【請求項２】
Ａ，Ｂ両信号の立ち上がりおよび立ち下がりの関係から回転子の回転方向を検出し、回転方向に応じたノイズ除去を行うことを特徴とする請求項１記載のロータリエンコーダによる回転子の位置検出方法。
【請求項３】
回転子の回転速度が回転方向転換可能な限界速度を超えているか否かを判定し、限界速度を超えているときにコモンノイズ以外のノイズ除去を行うことを特徴とする請求項２記載のロータリエンコーダによる回転子の位置検出方法。
【請求項４】
ロータリエンコーダが発信する請求項１記載のＡ，Ｂ，Ｚ各信号から各信号に重畳するコモンノイズを除去するラインレシーバと、Ａ，Ｂ両信号の生成規則に反して推移したものをノイズとみなすことでＡ，Ｂ両信号それぞれに重畳するコモンノイズ以外のノイズ除去を行うノイズ除去機構と、ノイズ除去を行った信号に基づいて回転子の位置を検出する位置検出機構とからなることを特徴とするロータリエンコーダによる回転子の位置検出装置。
【請求項５】
Ａ，Ｂ両信号の立ち上がりおよび立ち下がりの関係から回転子の回転方向を検出する回転方向検出機構を有し、前記ノイズ除去機構が回転方向に応じた機構である請求項４記載のロータリエンコーダによる回転子の位置検出装置。
【請求項６】
回転子の回転速度が回転方向転換可能な限界速度を超えているか否かを判定する回転速度判定機構を有し、限界速度を超えているときはノイズ除去を行った信号を出力し、限界速度以下のときはノイズ除去を行わない信号を出力する信号セレクタを有し、前記位置検出機構が信号セレクタの出力により検出する機構である請求項５記載のロータリエンコーダによる回転子の位置検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高精度な位置制御が必要なサーボドライブ等に使用されるロータリエンコーダがモータ回転子の位置情報として発する信号から、従来のラインレシーバでは除去できなかったノイズの影響を除くことで、正確な回転子位置を検出するための方法および装置に関するものである。
【背景技術】
【０００２】
各種機械等の制御において、ロータリエンコーダによるモータ回転子の位置検出は不可欠である。ロータリエンコーダは、モータ回転子の軸端に設置されて回転軸の角変位をデジタル信号化し、図１のようなＡ信号、Ｂ信号およびＺ信号を回転子の位置情報として発信する。図１において、clkは時間を表わすクロック信号である。
【０００３】
Ａ信号とＢ信号は、同一波長で位相が互いに１/4波長（π/2 rad）ずれた信号である。この両信号の位相関係から回転子の回転方向を検知することができる。また、Ａ，Ｂ信号のパルスを累積加算することにより、回転子の位置（何回転目で何°回転した位置か）を検知することができる。Ｚ信号は回転子の１回転毎に発信され、何回転したかを知ることができる。
【０００４】
ロータリエンコーダが発信したＡ，Ｂ，Ｚ各信号は、制御装置に入力され、サーボドライブ等によってモータの回転が制御される。このとき、サーボドライブ等の電力変換装置がスイッチング動作を伴うため、スイッチングノイズがＡ，Ｂ，Ｚ各信号に重畳する。その他、外部の装置などに起因する種々のノイズも重畳する。
【０００５】
これらノイズのうちコモンノイズは、従来技術によりラインレシーバを用いて除去することができる。コモンノイズは、各信号とその反転信号に同時に同一高さで重畳するノイズである。例えば、図２に示すように、Ａ信号とＡ信号の反転信号であるnotＡ信号に重畳しているコモンノイズ１は、（Ａ−notＡ)／２を演算することにより除去される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、このようなコモンノイズ以外のノイズ、すなわち各信号（Ａ，Ｂ，Ｚ）とその反転信号（notＡ，notＢ，notＺ）に独立して重畳するノイズ（以下、単にノイズという）は、従来のラインレシーバでは除去できない。そして、ノイズによって回転子の正確な位置情報が得られず、さらには回転子を誤って反転させることにもなり、各種機械等の制御に支障を来す。
【０００７】
そこで本発明が解決しようとする課題は、高精度な位置制御が必要なサーボドライブ等に使用されるロータリエンコーダにおいて、モータ回転子の位置情報として発する信号から、従来のラインレシーバでは除去することのできなかったノイズの影響を除くことで、正確な回転子位置を検出して各種機械等の制御をより高精度にすることである。
【課題を解決するための手段】
【０００８】
上記課題を解決するための本発明法は、ロータリエンコーダから、同一波長で位相が互いにπ/2 radずれたＡ信号およびＢ信号と、回転子の１回転毎に生成するＺ信号とを発信させ、ラインレシーバにより各信号に重畳するコモンノイズを除去した後、Ａ，Ｂ両信号の生成規則に反して推移したものをノイズとみなすことでＡ，Ｂ両信号それぞれに重畳するコモンノイズ以外のノイズ除去を行い、位置検出を行うことを特徴とするロータリエンコーダによる回転子の位置検出方法である。
【０００９】
上記本発明法において、Ａ，Ｂ両信号の立ち上がりおよび立ち下がりの関係から回転子の回転方向を検出し、回転方向に応じたノイズ除去を行うことができる。
そして、回転子の回転速度が回転方向転換可能な限界速度を超えているか否かを判定し、限界速度を超えているときにコモンノイズ以外のノイズ除去を行うことができる。
【００１０】
また上記課題を解決するための本発明装置は、ロータリエンコーダが発信する上記Ａ，Ｂ，Ｚ各信号から各信号に重畳するコモンノイズを除去するラインレシーバと、Ａ，Ｂ両信号の生成規則に反して推移したものをノイズとみなすことでＡ，Ｂ両信号それぞれに重畳するコモンノイズ以外のノイズ除去を行うノイズ除去機構と、ノイズ除去を行った信号に基づいて回転子の位置を検出する位置検出機構とからなることを特徴とするロータリエンコーダによる回転子の位置検出装置である。
【００１１】
上記本発明装置において、Ａ，Ｂ両信号の立ち上がりおよび立ち下がりの関係から回転子の回転方向を検出する回転方向検出機構を有し、前記ノイズ除去機構を回転方向に応じた機構とすることができる。
また、回転子の回転速度が回転方向転換可能な限界速度を超えているか否かを判定する回転速度判定機構を有し、限界速度を超えているときはノイズ除去を行った信号を出力し、限界速度以下のときはノイズ除去を行わない信号を出力する信号セレクタを有し、前記位置検出機構を信号セレクタの出力により検出する機構とすることができる。
【発明の効果】
【００１２】
本発明は、ハードウェア記述言語であるVHDL（VHSIC Hardware Description Language）やVerilog-HDL（Verilog Hardware Description Language）を使用してプログラミングすることにより、FPGA（Field Programmable Gate Array）上で効果的に実現できる。FPGAは、高速で複雑なデジタルシステムを実現できる書換え可能な集積回路であり、近年、デジタル回路製造分野でシェアを伸ばしている。
ＳＲモータは、回転子構造が簡単なので大変堅牢である。従って、一般の回転機と比較して高速回転が可能であり、高速回転が必要な用途に用いられる。そのため、高速回転時における位置検出には高速な信号処理が不可欠となる。そこで、高速で複雑な信号処理が可能であるFPGAがＳＲモータの制御系にとって有効となる。
本発明により上記課題が解決され、特に、ＳＲモータを使用した各種機械の高精度制御が効果的に実現できる。
【発明を実施するための最良の形態】
【００１３】
本発明法は、モータ回転子に取り付けたロータリエンコーダから、図１のようなＡ，Ｂ，Ｚ各信号を発信させ、ノイズを除去して回転子の位置を正確に検出する。Ａ信号とＢ信号は、同一波長で位相が互いにπ/2 radずれており、Ｚ信号は回転子の１回転毎に生成される。
まず、図２の例で説明したように、ラインレシーバにより、Ａ，Ｂ，Ｚ各信号からコモンノイズを除去する。その後、従来のラインレシーバでは除去できなかったノイズを、Ａ，Ｂ両信号の生成規則に反して推移したものをノイズとみなすことで、Ａ，Ｂ両信号それぞれに重畳するコモンノイズ以外の影響を除く。以下、これをノイズ除去という。
【００１４】
Ａ，Ｂ両信号の生成規則について、図３および図４により説明する。図３は、一点鎖線で回転方向が変化した場合を示している。Ａ信号がＢ信号よりπ/2 rad進んで出力しているときを正転とすると、反転時はＡ信号がＢ信号よりπ/2 rad遅れて出力する。各信号のパルスのHi時を「１」、Lo時を「０」とする２進法で状態を表示すると、π/2 rad毎に、正転時には、Ａ信号が１，１，０，０と推移するとき、Ｂ信号は０，１，１，０と推移する。反転時には、Ａ信号が１，１，０，０と推移するとき、Ｂ信号は１，０，０，１と推移する。
【００１５】
Ａ信号が１でＢ信号が０の状態を「１０」、Ａ信号が１でＢ信号が１の状態を「１１」、Ａ信号が０でＢ信号が１の状態を「０１」、Ａ信号が０でＢ信号が０の状態を「００」、と表示すると、Ａ，Ｂ両信号の状態は、図４の生成規則で推移する。すなわち、
正転時は  １０→１１→０１→００→１０→・・・
反転時は  １０→００→０１→１１→１０→・・・
と推移する。
【００１６】
図５の例により、コモンノイズ以外のノイズ除去について説明する。本例は正転であり、すでにラインレシーバでコモンノイズを除去してある。１９０ns近辺でＢ信号にノイズ２が、３９０ns近辺でＢ信号にノイズ３が、５８０ns近辺でＡ信号にノイズ４が、それぞれ重畳し、両信号の状態は、１０→１１→１０→１１→０１→００→０１→００→１０→１１→０１→１１→０１と推移している。ここで、アンダーラインの状態が生成規則に反している。
【００１７】
ノイズ除去後の信号をＲＡ，ＲＢで示す。図５の状態遷移において、Ａ，Ｂ各信号の状態が１３０ns近辺で１０から１１へ推移したのは図４の生成規則のとおりであるから、この時点ではＲＡ，ＲＢ各信号は変わらない。しかし、ノイズ２で１１から１０へ推移したのは図４の生成規則に反している。生成規則どおりの状態遷移では、１１から０１に推移する。したがって、ここでは、ＲＡ，ＲＢ各信号はこの生成規則に反した状態１０を無視し、状態１１であり続ける。その結果、Ｂ信号のノイズ２はＲＢのように除去される。
また、ノイズ３では状態が００から０１へ推移しているが、これも生成規則に反しているので、ＲＡ，ＲＢ各信号はこの状態０１を無視して状態００であり続ける。その結果、Ｂ信号のノイズ３もＲＢのように除去される。
【００１８】
図５の状態遷移において、ノイズ４では、状態が１１から０１へ推移している。これは、生成規則のとおりであるから、この時点でＲＡ，ＲＢ各信号は１１から０１へと推移する。そして、Ａ信号のノイズ４を過ぎると、状態が０１から１１へと推移し、これは生成規則に反しているので、ＲＡ，ＲＢ各信号は状態０１であり続ける。その結果、ノイズ４は除去されるが、ノイズ４の位置でＲＡ，ＲＢ各信号の状態が１１から０１へと推移し、実線のように、破線で示す本来の信号よりも状態１１の幅が縮小し、次の状態０１の幅が増大する。しかし、ノイズ除去による信号幅変動は、Ａ，Ｂ信号の位相差（π/2 rad）未満の僅少なものであり、その影響が小さくなるように位置・速度制御系を設計することが可能である。
本発明法は、このようにして、ロータリエンコーダが発信するＡ信号およびＢ信号から、コモンノイズ以外の、従来は除去困難であったノイズ除去を行い、モータ回転子の位置検出を行う。
【００１９】
本発明法において、Ａ，Ｂ両信号の立ち上がりおよび立ち下がりの関係から回転子の回転方向を検出することができる。回転子の正転と反転を図３のように定義すると、次のような関係になっている。
正転では、Ａ信号が立ち上がったとき、Ｂ信号は「０」である。
Ａ信号が立ち下がったとき、Ｂ信号は「１」である。
Ｂ信号が立ち上がったとき、Ａ信号は「１」である。
Ｂ信号が立ち下がったとき、Ａ信号は「０」である。
反転では、Ａ信号が立ち上がったとき、Ｂ信号は「１」である。
Ａ信号が立ち下がったとき、Ｂ信号は「０」である。
Ｂ信号が立ち上がったとき、Ａ信号は「０」である。
Ｂ信号が立ち下がったとき、Ａ信号は「１」である。
【００２０】
ここで、図６のように、Ａ，Ｂ両信号それぞれに、クロック約１周期幅遅れた同形の信号Ａ1，Ｂ1を生成する。すると、Ａ信号の立ち上がりはＡが「１」でＡ1が「０」のときであり、Ａ信号の立ち下りはＡが「０」でＡ1が「１」のときである。Ｂ信号の立ち上がりはＢが「１」でＢ1が「０」のときであり、Ｂ信号の立ち下りはＢが「０」でＢ1が「１」のときである。すなわち、Ａ，Ａ1，Ｂ，Ｂ1各信号の状態で回転方向を判定することができる。正転をdir＝０、反転をdir＝１で示すと、表１の関係となり、回転方向を検出することができる。シミュレーション結果を図６に示す。
【００２１】
【表１】
2005198428.tif 000003
【００２２】
次に、図７のように、Ａ，Ｂ両信号の立ち上がり時および立ち下がり時にクロック１周期幅の信号ｄを生成する。この信号ｄを４逓倍信号という。４逓倍信号ｄを生成するには、図７のように、Ａ，Ｂ両信号の立ち上がりより遅れて立ち上がる次のクロック信号と同時に立ち上がる同形の信号Ａ1，Ｂ1を生成し、さらに、Ａ1，Ｂ1両信号の立ち上がりより遅れて立ち上がる次のクロック信号と同時に立ち上がる同形の信号Ａ2，Ｂ2を生成する。そして、Ａ1が１でＡ2が０、Ａ1が０でＡ2が１、Ｂ1が１でＢ2が０、Ｂ1が０でＢ2が１、の各場合を１とするクロック１周期幅のパルスを４逓倍信号ｄとする。
この４逓倍信号によって、回転子の位置を検出することができる。また、４逓倍信号の周期と回転子１回転のパルス数から、回転速度を求めることができる。
【００２３】
図５に例示するアルゴリズムによってノイズ除去を行う場合、回転が正転か反転かをあらかじめ設定した上で行う。そのため、回転方向が転換する場合は、このアルゴリズムによるノイズ除去を行うことができないので、回転速度を検出し、回転方向転換可能な限界速度以下の低速域にあるときは、このノイズ除去アルゴリズムを使用せず、該限界速度を超えた高速域にあるとき、ノイズ除去アルゴリズムを使用してノイズ除去を行う。
【００２４】
本発明法による回転子の位置検出は、図８に示すような本発明装置により行うことができる。まず、Ａ，Ｂ，Ｚ各信号からラインレシーバによりコモンノイズを除去する。そして、コモンノイズを除去したＡ，Ｂ信号をノイズ除去機構に入力し、コモンノイズ以外のノイズ除去を行って信号セレクタに入力する。また、ノイズ除去機構を経ない信号を信号セレクタに入力する。
【００２５】
信号セレクタでは、図９に示すように、回転速度が方向転換可能な低速域であればノイズ除去を行わない信号を出力し、低速域でなければノイズ除去を行った信号を出力する。回転速度は、信号セレクタから出力された信号について、図８のように４逓倍信号生成機構と回転速度検出機構を経て演算される。演算された回転速度を用いて回転速度判定機構で判定した結果を信号セレクタに入力する。
また信号セレクタから出力されたノイズ除去を行わない信号を、図８のように、回転方向検出機構を経てノイズ除去機構に導入し、回転方向に応じたノイズ除去を行う。
【００２６】
そして、信号セレクタから出力されるノイズ除去を行った信号または行わない信号を、図８のように４逓倍信号生成機構に入力して４逓倍信号のパルスをカウントし、回転子位置検出機構に入力して位置検出を行う。このとき、回転方向検出機構からの入力によって、図１０に示すように、回転方向が反転であれば４逓倍信号のパルスをカウントダウンし、正転であればカウントアップする。また、除去できなかったノイズの影響によってカウント値に誤りが出る可能性もあるので、Ｚ信号を用いて補正を行う。Ｚ信号による補正は、１回転毎に、カウント値を強制的に零または２πに相当するカウント値にリセットすることで行われる。
こうして得られたカウント値出力によって、回転子の位置がわかる。
【００２７】
本発明のノイズ除去において使用するＡ，Ｂ両信号の生成規則は回転子の回転方向によって異なるので、モータの回転方向が転換する場合の制御用には、上記のように、回転方向および回転速度を検出し、両検出結果に応じて位置検出を行う（請求項３，６）。
しかし、モータの回転方向は変わらず、回転速度を変化させるような制御用には、回転速度の検出は不要である。その場合、回転方向が常に不変であれば、回転方向の検出も不要であり（請求項１，４）、また回転方向を転換した後に再転換しない間は、その回転方向の検出結果によってノイズ除去を行う（請求項２，５）。
【実施例】
【００２８】
本発明の一実施例として、ＶＨＤＬによるＳＲモータの制御プログラムを以下に示す。しかし、本発明はこのプログラムのコーディングに限定されるものではない。このほか、対象機器に応じ、本発明による種々のプログラムを実現することができる。
【００２９】
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_arith.ALL;
USE ieee.std_logic_unsigned.ALL;
ENTITY SR_control IS
PORT (clk: IN std_logic;
a, b, z: IN std_logic;
s1, s2, s3: IN std_logic;
nl_on, a_nl, b_nl, a1, a2, a3, a4, b1, b2,
b3, b4, c1, c2, c3, c4, d, dir,
z1, z2, z3, z0,
s3_1, s3_2, s3_3, s3_0,
s1_p, s2_p, s3_p: OUT std_logic;
cr_ap: OUT std_logic_vector ( 1 DOWNTO 0 );
p_ct: OUT std_logic_vector (15 DOWNTO 0);
n_ct: OUT std_logic_vector (19 DOWNTO 0);
ps_ct: OUT std_logic_vector (15 DOWNTO 0);
mi_on, u, v, w: OUT std_logic;
clk_q, dadt0, da_clk, csld: OUT std_logic;
clk_4: OUT std_logic_vector (1 DOWNTO 0);
clk_q_ct: OUT std_logic_vector (4 DOWNTO 0);
out1, out2, out3, out4: OUT std_logic);
END SR_control;
ARCHITECTURE rtl OF SR_controlIS
TYPE STATE IS (st00, st01, st10, st11);
SIGNAL cr_st_s: STATE;
SIGNAL nl_on_s, a_nl_s, b_nl_s, a1_s, a2_s, a3_s, a4_s, b1_s, b2_s,
b3_s, b4_s, c1_s, c2_s, c3_s, c4_s, d_s, dir_s,
z1_s, z2_s, z3_s, z0_s,
s3_1_s, s3_2_s, s3_3_s, s3_0_s,
s1_p_s, s2_p_s, s3_p_s: std_logic;
SIGNAL cr_ap_s: std_logic_vector( 1 DOWNTO 0 );
SIGNAL p_ct_s: std_logic_vector(15 DOWNTO 0);
SIGNAL n_ct_s: std_logic_vector(19 DOWNTO 0);
SIGNAL ps_ct_s: std_logic_vector(15 DOWNTO 0);
SIGNAL mi_on_s, u_s, v_s, w_s: std_logic;
SIGNAL clk_q_s, dadt0_s, da_clk_s, csld_s: std_logic;
SIGNAL dadt0_h_s: std_logic_vector (31 DOWNTO 0);
SIGNAL clk_4_s: std_logic_vector (1 DOWNTO 0);
SIGNAL clk_q_ct_s : std_logic_vector(4 DOWNTO 0); 
BEGIN 
【００３０】
--to observe--
out1 <= u_s;
out2 <= v_s;
out3 <= w_s;
PROCESS (clk, cr_st_s, a, b, dir_s, a_nl_s, b_nl_s, nl_on_s, cr_ap_s)
BEGIN
--suppression of noise 2--
IF (clk'eventAND clk = '1') THEN
CASE cr_st_s IS
WHEN st00 =>
IF (dir_s = '1' AND a = '0' AND b = '1') THEN
cr_st_s <= st01;
ELSIF (dir_s = '0' AND a = '1' AND b = '0') THEN
cr_st_s <= st10;
ELSE
cr_st_s <= st00;
END IF;
WHEN st01 =>
IF (dir_s = '1' AND a = '1' AND b = '1') THEN
cr_st_s <= st11;
ELSIF (dir_s = '0' AND a = '0' AND b = '0') THEN
cr_st_s <= st00;
ELSE
cr_st_s <= st01;
END IF;
WHEN st10 =>
IF (dir_s = '1' AND a = '0' AND b = '0') THEN
cr_st_s <= st00;
ELSIF (dir_s = '0' AND a = '1' AND b = '1') THEN
cr_st_s <= st11;
ELSE
cr_st_s <= st10;
END IF;
WHEN st11 =>
IF (dir_s = '1' AND a = '1' AND b = '0') THEN
cr_st_s <= st10;
ELSIF (dir_s = '0' AND a = '0' AND b = '1') THEN
cr_st_s <= st01;
ELSE
cr_st_s <= st11;
END IF;
END CASE;
END IF;
IF (nl_on_s= '0') THEN
IF (a = '0' AND b = '0') THEN
cr_st_s <= st00;
ELSIF (a = '0' AND b = '1') THEN
cr_st_s <= st01;
ELSIF (a = '1' AND b = '0') THEN
cr_st_s <= st10;
ELSIF (a = '1' AND b = '1') THEN
cr_st_s <= st11;
END IF;
END IF;  
IF (cr_st_s= st00) THEN
a_nl_s <= '0';
b_nl_s <= '0';
ELSIF (cr_st_s = st01) THEN
a_nl_s <= '0';
b_nl_s <= '1'; 
ELSIF (cr_st_s = st10) THEN
a_nl_s <= '1';
b_nl_s <= '0';
ELSIF (cr_st_s = st11) THEN
a_nl_s <= '1';
b_nl_s <= '1'; 
END IF;
IF (cr_st_s= st00) THEN
cr_ap_s <= "00";
ELSIF (cr_st_s = st01) THEN
cr_ap_s <= "01";
ELSIF (cr_st_s = st10) THEN
cr_ap_s <= "10";
ELSIF (cr_st_s = st11) THEN
cr_ap_s <= "11";
END IF;
END PROCESS;
a_nl <= a_nl_s;
b_nl <= b_nl_s;
cr_ap <= cr_ap_s;
【００３１】
--position--
PROCESS (clk, a, b, z, nl_on_s, a_nl_s, b_nl_s, cr_st_s, a1_s, b1_s, a2_s, b2_s,
a3_s, b3_s, a4_s, b4_s, c1_s, c2_s, c3_s, c4_s, d_s, dir_s,
z1_s, z2_s, z3_s, z0_s, p_ct_s, n_ct_s, s1_p_s, s2_p_s, s3_p_s,
s3, s3_1_s, s3_2_s, s3_3_s, s3_0_s, ps_ct_s)
BEGIN
IF (d_s'eventAND d_s = '1') THEN
IF (n_ct_s >= "00000000001111101000") THEN
nl_on_s <= '0';        
ELSE
nl_on_s <= '1';
END IF;
END IF;
--4teibai--
IF (clk'eventAND clk = '1') THEN
a1_s <= a;
b1_s <= b;
END IF;
IF (clk'eventAND clk = '1') THEN
IF (nl_on_s = '1') THEN
a2_s <= a_nl_s;
b2_s <= b_nl_s;
ELSIF (nl_on_s = '0') THEN
a2_s <= a1_s;
b2_s <= b1_s;
END IF;
END IF;
IF (clk'eventAND clk = '1') THEN
a3_s <= a2_s;
b3_s <= b2_s;
END IF;
IF (clk'eventAND clk = '1') THEN
a4_s <= a3_s;
b4_s <= b3_s;
END IF;
IF (a1_s = '1' AND (NOT a3_s = '1')) THEN
c1_s <= '1';
ELSE 
c1_s <= '0';
END IF;
IF (NOT a1_s = '1' AND a3_s = '1') THEN
c2_s <= '1';
ELSE 
c2_s <= '0';
END IF;
IF (b1_s = '1' AND (NOT b3_s = '1')) THEN
c3_s <= '1';
ELSE 
c3_s <= '0';
END IF;
IF (NOT b1_s = '1' AND b3_s = '1') THEN
c4_s <= '1';
ELSE 
c4_s <= '0';
END IF;
IF (c1_s = '1' OR c2_s = '1' OR c3_s = '1' OR c4_s = '1') THEN
d_s <= '1';
ELSE
d_s <= '0';
END IF;
【００３２】
--direction--
IF (d_s'eventAND d_s = '0') THEN
IF ((a1_s = '1' AND a4_s = '0' AND b1_s = '0' AND b4_s = '0') OR
(a1_s = '1' AND a4_s = '1' AND b1_s = '1' AND b4_s = '0') OR
(a1_s = '0' AND a4_s = '1' AND b1_s = '1' AND b4_s = '1') OR
(a1_s = '0' AND a4_s = '0' AND b1_s = '0' AND b4_s = '1')) THEN
dir_s <= '0';
END IF;
IF ((a1_s = '0' AND a4_s = '0' AND b1_s = '1' AND b4_s = '0') OR
(a1_s = '1' AND a4_s = '0' AND b1_s = '1' AND b4_s = '1') OR
(a1_s = '1' AND a4_s = '1' AND b1_s = '0' AND b4_s = '1') OR
(a1_s = '0' AND a4_s = '1' AND b1_s = '0' AND b4_s = '0')) THEN
dir_s <= '1';
END IF;
END IF;
IF (d_s'eventAND d_s = '1') THEN
z1_s <= z;
END IF;
IF (d_s'eventAND d_s = '1') THEN
z2_s <= z1_s;
END IF;
IF (d_s'eventAND d_s = '1') THEN
z3_s <= z2_s;
END IF;
IF (z1_s = '1' AND z3_s = '0') THEN
z0_s <= '1';
ELSE
z0_s <= '0';
END IF;
【００３３】
--count using R.E. signal and z--
IF (dir_s= '1' AND z0_s = '1') THEN
p_ct_s <= "0000000000000000";
ELSIF (dir_s = '0' AND z0_s = '1') THEN
p_ct_s <= "0000010110100000";
ELSIF (d_s'event AND d_s = '1') THEN
IF (dir_s = '1' AND p_ct_s >= "0000010110100000") THEN
p_ct_s <= "0000000000000000";
ELSIF (dir_s = '1') THEN
p_ct_s <= p_ct_s+ '1';
END IF;
IF (dir_s = '0' AND p_ct_s <= "0000000000000000") THEN
p_ct_s <= "0000010110100000";
ELSIF (dir_s= '0') THEN
p_ct_s <= p_ct_s- '1';
END IF;
END IF;
IF (clk'eventAND clk = '1') THEN
n_ct_s <= n_ct_s+ '1';
IF (d_s = '1') THEN
n_ct_s <= "00000000000000000000";        
END IF;
END IF;
--count using R.E. signal and s3--
IF (d_s'eventAND d_s = '1') THEN
s3_1_s <= s3;
END IF;
IF (d_s'eventAND d_s = '1') THEN
s3_2_s <= s3_1_s;
END IF;
IF (d_s'eventAND d_s = '1') THEN
s3_3_s <= s3_2_s;
END IF;
IF (s3 = '0' AND s3_3_s = '1') THEN
s3_0_s <= '1';
ELSE
s3_0_s <= '0';
END IF;
IF (dir_s= '1' AND s3_0_s = '1') THEN
ps_ct_s <= "0000000000000000";
ELSIF (dir_s = '0' AND s3_0_s = '1') THEN
ps_ct_s <= "0000000101101000";
ELSIF (d_s'event AND d_s = '1') THEN
IF (dir_s = '1' AND ps_ct_s >= "0000000101101000") THEN
ps_ct_s <= "0000000000000000";
ELSIF (dir_s = '1') THEN
ps_ct_s <= ps_ct_s+ '1';
END IF;
IF (dir_s = '0' AND ps_ct_s <= "0000000000000000") THEN
ps_ct_s <= "0000000101101000";
ELSIF (dir_s = '0') THEN
ps_ct_s <= ps_ct_s- '1';
END IF;
END IF;
--estimated s1,s2,s3 using R.E. signal and Z--
--  IF (p_ct_s >= "0000000000000000" AND p_ct_s < "0000000000111100") THEN -- 0 to 15 --
--      s1_p_s <= '1';
--      s2_p_s <= '0';
--      s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000000000111100" AND p_ct_s < "0000000001111000") THEN -- 15 to 30 --
--         s1_p_s <= '1';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000000001111000" AND p_ct_s < "0000000010110100") THEN -- 30 to 45 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000000010110100" AND p_ct_s < "0000000011110000") THEN -- 45 to 60 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000000011110000" AND p_ct_s < "0000000100101100") THEN -- 60 to 75 --
--         s1_p_s <= '0';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000000100101100" AND p_ct_s < "0000000101101000") THEN -- 75 to 90 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000000101101000" AND p_ct_s < "0000000110100100") THEN -- 90 to 105 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000000110100100" AND p_ct_s < "0000000111100000") THEN -- 105 to 120 --
--         s1_p_s <= '1';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000000111100000" AND p_ct_s < "0000001000011100") THEN -- 120 to 135 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000001000011100" AND p_ct_s < "0000001001011000") THEN -- 135 to 150 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000001001011000" AND p_ct_s < "0000001010010100") THEN -- 150 to 165 --
--         s1_p_s <= '0';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000001010010100" AND p_ct_s < "0000001011010000") THEN -- 165 to 180 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000001011010000" AND p_ct_s < "0000001100001100") THEN -- 180 to 195 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000001100001100" AND p_ct_s < "0000001101001000") THEN -- 195 to 210 --
--         s1_p_s <= '1';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000001101001000" AND p_ct_s < "0000001110000100") THEN -- 210 to 225 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000001110000100" AND p_ct_s < "0000001111000000") THEN -- 225 to 240 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000001111000000" AND p_ct_s < "0000001111111100") THEN -- 240 to 255 --
--         s1_p_s <= '0';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000001111111100" AND p_ct_s < "0000010000111000") THEN -- 255 to 270 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000010000111000" AND p_ct_s < "0000010001110100") THEN -- 270 to 285 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000010001110100" AND p_ct_s < "0000010010110000") THEN -- 285 to 300 --
--         s1_p_s <= '1';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000010010110000" AND p_ct_s < "0000010011101100") THEN -- 300 to 315 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '0';
--  ELSIF (p_ct_s >= "0000010011101100" AND p_ct_s < "0000010100101000") THEN -- 315 to 330 --
--         s1_p_s <= '0';
--         s2_p_s <= '1';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000010100101000" AND p_ct_s < "0000010101100100") THEN -- 330 to 345 --
--         s1_p_s <= '0';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  ELSIF (p_ct_s >= "0000010101100100" AND p_ct_s < "0000010110100000") THEN -- 345 to 360 --
--         s1_p_s <= '1';
--         s2_p_s <= '0';
--         s3_p_s <= '1';
--  END IF;
--estimated s1,s2,s3 using R.E. signal and s3--
IF (ps_ct_s>= "0000000000000000" AND ps_ct_s < "0000000000111100") THEN -- 0 to 15 --
s1_p_s <= '1';
s2_p_s <= '0';
s3_p_s <= '0';
ELSIF (ps_ct_s >= "0000000000111100" AND ps_ct_s < "0000000001111000") THEN -- 15 to 30 --
s1_p_s <= '1';
s2_p_s <= '1';
s3_p_s <= '0';
ELSIF (ps_ct_s >= "0000000001111000" AND ps_ct_s < "0000000010110100") THEN -- 30 to 45 --
s1_p_s <= '0';
s2_p_s <= '1';
s3_p_s <= '0';
ELSIF (ps_ct_s >= "0000000010110100" AND ps_ct_s < "0000000011110000") THEN -- 45 to 60 --
s1_p_s <= '0';
s2_p_s <= '1';
s3_p_s <= '1';
ELSIF (ps_ct_s >= "0000000011110000" AND ps_ct_s < "0000000100101100") THEN -- 60 to 75 --
s1_p_s <= '0';
s2_p_s <= '0';
s3_p_s <= '1';
ELSIF (ps_ct_s >= "0000000100101100" AND ps_ct_s < "0000000101101000") THEN -- 75 to 90 --
s1_p_s <= '1';
s2_p_s <= '0';
s3_p_s <= '1';
END IF;
END PROCESS;
nl_on <= nl_on_s;
a1 <= a1_s;
b1 <= b1_s;
a2 <= a2_s;
b2 <= b2_s;
a3 <= a3_s;
b3 <= b3_s;
a4 <= a4_s;
b4 <= b4_s;
z1 <= z1_s;
z2 <= z2_s;
z3 <= z3_s;
z0 <= Z0_s;
c1 <= c1_s;
c2 <= c2_s;
c3 <= c3_s;
c4 <= c4_s;
d <= d_s;
dir <= dir_s;
p_ct <= p_ct_s;
n_ct <= n_ct_s;
s3_1 <= s3_1_s;
s3_2 <= s3_2_s;
s3_3 <= s3_3_s;
s3_0 <= s3_0_s;
ps_ct <= ps_ct_s;
s1_p <= s1_p_s;
s2_p <= s2_p_s;
s3_p <= s3_p_s;
【００３４】
--switching--
PROCESS (clk, d_s, n_ct_s, mi_on_s, s1, s2, s3, s1_p_s, s2_p_s, s3_p_s, u_s, v_s, w_s)
BEGIN
IF (d_s'event AND d_s= '1') THEN
IF (n_ct_s>= "00000000001111101000") THEN
mi_on_s <= '0';        
ELSE
mi_on_s <= '1';
END IF;
END IF;
【００３５】
--LoMi using s1,s2,s3--
--IF (s1 = '1' AND s2 = '0' AND s3 = '0') THEN
--    u_s <= '0';
--    v_s <= '0';
--    w_s <= '1';
--ELSIF (s1 = '1' AND s2 = '1' AND s3 = '0') THEN
--       u_s <= '1';
--       v_s <= '0';
--       w_s <= '1';
--ELSIF (s1 = '0' AND s2 = '1' AND s3 = '0') THEN
--       u_s <= '1';
--       v_s <= '0';
--       w_s <= '0';
--ELSIF (s1 = '0' AND s2 = '1' AND s3 = '1') THEN
--       u_s <= '1';
--       v_s <= '1';
--       w_s <= '0';
--ELSIF (s1 = '0' AND s2 = '0' AND s3 = '1') THEN
--       u_s <= '0';
--       v_s <= '1';
--       w_s <= '0';
--ELSIF (s1 = '1' AND s2 = '0' AND s3 = '1') THEN
--       u_s <= '0';
--       v_s <= '1';
--       w_s <= '1';
--END IF;
--LoMi using estimated s1,s2,s3--
--IF (s1_p_s = '1' AND s2_p_s= '0' AND s3_p_s = '0') THEN
--    u_s <= '0';
--    v_s <= '0';
--    w_s <= '1';
--ELSIF (s1_p_s = '1' AND s2_p_s = '1' AND s3_p_s = '0') THEN
--       u_s <= '1';
--       v_s <= '0';
--       w_s <= '1';
--ELSIF (s1_p_s = '0' AND s2_p_s = '1' AND s3_p_s = '0') THEN
--       u_s <= '1';
--       v_s <= '0';
--       w_s <= '0';
--ELSIF (s1_p_s = '0' AND s2_p_s = '1' AND s3_p_s = '1') THEN
--       u_s <= '1';
--       v_s <= '1';
--       w_s <= '0';
--ELSIF (s1_p_s = '0' AND s2_p_s = '0' AND s3_p_s = '1') THEN
--       u_s <= '0';
--       v_s <= '1';
--       w_s <= '0';
--ELSIF (s1_p_s = '1' AND s2_p_s = '0' AND s3_p_s = '1') THEN
--       u_s <= '0';
--       v_s <= '1';
--       w_s <= '1';
--END IF;
--LoMi, MI using s1,s2,s3--
--IF (mi_on_s = '0') THEN --LoMi--
--  IF (s1 = '1' AND s2 = '0' AND s3 = '0') THEN
--      u_s <= '0';
--      v_s <= '0';
--      w_s <= '1';
--  ELSIF (s1 = '1' AND s2 = '1' AND s3 = '0') THEN
--         u_s <= '1';
--         v_s <= '0';
--         w_s <= '1';
--  ELSIF (s1 = '0' AND s2 = '1' AND s3 = '0') THEN
--         u_s <= '1';
--         v_s <= '0';
--         w_s <= '0';
--  ELSIF (s1 = '0' AND s2 = '1' AND s3 = '1') THEN
--         u_s <= '1';
--         v_s <= '1';
--         w_s <= '0';
--  ELSIF (s1 = '0' AND s2 = '0' AND s3 = '1') THEN
--         u_s <= '0';
--         v_s <= '1';
--         w_s <= '0';
--  ELSIF (s1 = '1' AND s2 = '0' AND s3 = '1') THEN
--         u_s <= '0';
--         v_s <= '1';
--         w_s <= '1';
--  END IF;
--ELSIF (mi_on_s = '1') THEN --Mi--
--  IF (s1 = '1' AND s2 = '0' AND s3 = '0') THEN
--      u_s <= '0';
--      v_s <= '0';
--      w_s <= '1';
--  ELSIF (s1 = '1' AND s2 = '1' AND s3 = '0') THEN
--         u_s <= '1';
--         v_s <= '0';
--         w_s <= '0';
--  ELSIF (s1 = '0' AND s2 = '1' AND s3 = '0') THEN
--         u_s <= '1';
--         v_s <= '0';
--         w_s <= '0';
--  ELSIF (s1 = '0' AND s2 = '1' AND s3 = '1') THEN
--         u_s <= '0';
--         v_s <= '1';
--         w_s <= '0';
--  ELSIF (s1 = '0' AND s2 = '0' AND s3 = '1') THEN
--         u_s <= '0';
--         v_s <= '1';
--         w_s <= '0';
--  ELSIF (s1 = '1' AND s2 = '0' AND s3 = '1') THEN
--         u_s <= '0';
--         v_s <= '0';
--         w_s <= '1';
--  END IF;
--END IF;
--LoMi, MI using estimated s1,s2,s3--
IF (mi_on_s = '0') THEN --LoMi--
IF (s1_p_s = '1' AND s2_p_s = '0' AND s3_P_s = '0') THEN
u_s <= '0';
v_s <= '0';
w_s <= '1';
ELSIF (s1_p_s = '1' AND s2_p_s = '1' AND s3_p_s = '0') THEN
u_s <= '1';
v_s <= '0';
w_s <= '1';
ELSIF (s1_p_s = '0' AND s2_p_s = '1' AND s3_p_s = '0') THEN
u_s <= '1';
v_s <= '0';
w_s <= '0';
ELSIF (s1_p_s = '0' AND s2_p_s = '1' AND s3_p_s = '1') THEN
u_s <= '1';
v_s <= '1';
w_s <= '0';
ELSIF (s1_p_s = '0' AND s2_p_s = '0' AND s3_p_s = '1') THEN
u_s <= '0';
v_s <= '1';
w_s <= '0';
ELSIF (s1_p_s = '1' AND s2_p_s = '0' AND s3_p_s = '1') THEN
u_s <= '0';
v_s <= '1';
w_s <= '1';
END IF;
ELSIF (mi_on_s = '1') THEN --Mi--
IF (s1_p_s = '1' AND s2_p_s = '0' AND s3_p_s = '0') THEN
u_s <= '0';
v_s <= '0';
w_s <= '1';
ELSIF (s1_p_s = '1' AND s2_p_s = '1' AND s3_p_s = '0') THEN
u_s <= '1';
v_s <= '0';
w_s <= '0';
ELSIF (s1_p_s = '0' AND s2_p_s = '1' AND s3_p_s = '0') THEN
u_s <= '1';
v_s <= '0';
w_s <= '0';
ELSIF (s1_p_s = '0' AND s2_p_s = '1' AND s3_p_s = '1') THEN
u_s <= '0';
v_s <= '1';
w_s <= '0';
ELSIF (s1_p_s = '0' AND s2_p_s = '0' AND s3_p_s = '1') THEN
u_s <= '0';
v_s <= '1';
w_s <= '0';
ELSIF (s1_p_s = '1' AND s2_p_s = '0' AND s3_p_s = '1') THEN
u_s<= '0';
v_s <= '0';
w_s <= '1';
END IF;
END IF;
END PROCESS;
mi_on <= mi_on_s;
u <= u_s;
v <= v_s;
w <= w_s;
【００３６】
--da interface--
PROCESS (clk, clk_4_s, clk_q_s, clk_q_ct_s, clk_q_s, p_ct_s, ps_ct_s, dadt0_h_s, dadt0_s, da_clk_s, csld_s)
BEGIN
dadt0_h_s <= p_ct_s * "0000000000101101";
--  dadt0_h_s <= ps_ct_s * "0000000000101101";
--  dadt0_h_s <= "00000000000000001111111111111111";
IF (clk_4_s = "11") THEN
clk_4_s <= "00";
ELSIF (clk'event AND clk = '1') THEN
clk_4_s <= clk_4_s + '1';
END IF;
IF (clk_q_ct_s= "10010") THEN
clk_q_ct_s <= "00000";
ELSIF (clk_q_s'event AND clk_q_s = '1') THEN
clk_q_ct_s <= clk_q_ct_s+ '1';
IF (clk_q_ct_s = "00001") THEN
dadt0_s <= dadt0_h_s(15);
ELSIF (clk_q_ct_s = "00010") THEN
dadt0_s <= dadt0_h_s(14);
ELSIF (clk_q_ct_s = "00011") THEN
dadt0_s <= dadt0_h_s(13);
ELSIF (clk_q_ct_s = "00100") THEN
dadt0_s <= dadt0_h_s(12);
ELSIF (clk_q_ct_s = "00101") THEN
dadt0_s <= dadt0_h_s(11);
ELSIF (clk_q_ct_s = "00110") THEN
dadt0_s <= dadt0_h_s(10);
ELSIF (clk_q_ct_s = "00111") THEN
dadt0_s <= dadt0_h_s(9);
ELSIF (clk_q_ct_s = "01000") THEN
dadt0_s <= dadt0_h_s(8);
ELSIF (clk_q_ct_s = "01001") THEN
dadt0_s <= dadt0_h_s(7);
ELSIF (clk_q_ct_s = "01010") THEN
dadt0_s <= dadt0_h_s(6);
ELSIF (clk_q_ct_s = "01011") THEN
dadt0_s <= dadt0_h_s(5);
ELSIF (clk_q_ct_s = "01100") THEN
dadt0_s <= dadt0_h_s(4);
ELSIF (clk_q_ct_s = "01101") THEN
dadt0_s <= dadt0_h_s(3);
ELSIF (clk_q_ct_s = "01110") THEN
dadt0_s <= dadt0_h_s(2);
ELSIF (clk_q_ct_s = "01111") THEN
dadt0_s <= dadt0_h_s(1);
ELSIF (clk_q_ct_s = "10000") THEN
dadt0_s <= dadt0_h_s(0);
ELSE
dadt0_s <= '0';        
END IF;
END IF;
IF(clk'eventAND clk = '1' ) THEN
da_clk_s <= clk_q_s;
IF(clk_q_ct_s = "00000" ) THEN
csld_s <= '1';
ELSE
csld_s <= '0';
END IF;
END IF;
END PROCESS;
clk_q_s <= clk_4_s(1);
clk_4 <= clk_4_s;
clk_q_ct <= clk_q_ct_s;
csld <= csld_s; 
dadt0 <= dadt0_s;
da_clk <= da_clk_s;
END rtl;
【図面の簡単な説明】
【００３７】
【図１】本発明においてロータリエンコーダが発信する信号の説明図である。
【図２】従来技術におけるコモンノイズ除去の説明図である。
【図３】本発明におけるＡ，Ｂ両信号の生成規則の説明図である。
【図４】本発明におけるＡ，Ｂ両信号の生成規則の別の説明図である。
【図５】本発明におけるノイズ除去の説明図である。
【図６】本発明における回転方向検出の説明図である。
【図７】本発明における４逓倍信号の説明図である。
【図８】本発明装置の構成例を示す説明図である。
【図９】本発明装置における信号セレクタの説明図である。
【図１０】本発明装置における回転子位置検出機構の説明図である。
【符号の説明】
【００３８】
１：コモンノイズ
２，３，４：ノイズ
【図１】
2005198428.tif 000004
【図２】
2005198428.tif 000005
【図３】
2005198428.tif 000006
【図４】
2005198428.tif 000007
【図５】
2005198428.tif 000008
【図６】
2005198428.tif 000009
【図７】
2005198428.tif 000010
【図８】
2005198428.tif 000011
【図９】
2005198428.tif 000012
【図１０】
2005198428.tif 000013