JP3849931B2 - モータ制御装置 - Google Patents
モータ制御装置 Download PDFInfo
- Publication number
- JP3849931B2 JP3849931B2 JP2002207558A JP2002207558A JP3849931B2 JP 3849931 B2 JP3849931 B2 JP 3849931B2 JP 2002207558 A JP2002207558 A JP 2002207558A JP 2002207558 A JP2002207558 A JP 2002207558A JP 3849931 B2 JP3849931 B2 JP 3849931B2
- Authority
- JP
- Japan
- Prior art keywords
- phase
- count value
- encoder
- rotor
- phase signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Control Of Stepping Motors (AREA)
- Gear-Shifting Mechanisms (AREA)
- Control Of Electric Motors In General (AREA)
Description
【発明の属する技術分野】
本発明は、エンコーダのパルス信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えることでロータを目標位置まで回転駆動するモータ制御装置に関するものである。
【0002】
【従来の技術】
近年、構造が簡単で安価なモータとして需要が増加しているスイッチトリラクタンスモータ等のブラシレス型のモータは、ロータの回転に同期してパルス信号を出力するエンコーダを搭載し、このエンコーダのパルス信号をカウントして、そのエンコーダカウント値に基づいてロータの回転位置を検出して通電相を順次切り換えることでロータを回転駆動するようにしたものがある。このようなエンコーダ付きのモータは、起動後のエンコーダカウント値に基づいてロータの回転位置を検出することができるため、フィードバック制御系(閉ループ制御系)によりロータを目標位置まで回転させる位置切換制御(位置決め制御)を行う各種の位置切換装置の駆動源として用いられている。
【0003】
【発明が解決しようとする課題】
このように、エンコーダカウント値に基づいてロータを目標位置まで回転させるフィードバック制御(以下「F/B制御」と表記する)を行うシステムでは、エンコーダの出力信号が異常になると、通電相(エンコーダカウント値)とロータの回転位相との同期が取れなくなって、モータを正常に駆動できなくなり、制御不能に陥る結果となる。
【0004】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、エンコーダの出力信号が異常になっても、ロータを目標位置まで回転させることができると共に、エンコーダの異常診断を精度良く行うことができて、モータ制御の信頼性を向上させることができるモータ制御装置を提供することにある。
【0005】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項1のモータ制御装置は、F/B制御実行条件が成立しているときには、F/B制御手段によって、エンコーダカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えることでロータを目標位置まで回転駆動するF/B制御を実行し、故障時等でF/B制御実行条件が不成立のときには、オープンループ制御手段によって、F/B制御からオープンループ制御に切り換えてエンコーダカウント値の情報をフィードバックせずにモータの駆動回路に駆動信号を出力して通電相を順次切り換えると共に、前記駆動信号をカウントしてそのカウント値に基づいてロータを目標位置まで回転駆動する。そして、異常診断手段によって、オープンループ制御中にカウントしたエンコーダカウント値と駆動信号のカウント値とを比較してエンコーダの異常の有無を判定する。
【0006】
F/B制御中に、例えばエンコーダのパルス抜けやノイズによりエンコーダカウント値が異常になったり、或は、エンコーダの信号線が断線すると、通電相(エンコーダカウント値)とロータの回転位相との同期が取れなくなって、F/B制御状態(ロータの回転状態)が異常になる。このような状態になると、F/B制御実行条件が不成立となり、F/B制御からオープンループ制御に切り換えられる。このようにすれば、例えばエンコーダのパルス抜けやノイズによりエンコーダカウント値が異常になったり、或は、エンコーダの信号線が断線した場合でも、オープンループ制御によりロータを目標位置まで回転させることができる。そして、このオープンループ制御中にカウントしたエンコーダカウント値と駆動信号のカウント値とを比較すれば、エンコーダカウント値(エンコーダによる検出回転量)が駆動信号のカウント値(オープンループ制御による駆動回転量)に相当する値になっているか否かで、エンコーダが異常であるか否かを精度良く判定することができる。
【0007】
尚、エンコーダの故障判定は、オープンループ制御時にしかできない。つまり、F/B制御中は、断線によりエンコーダのパルス信号が入力されなくなると、通電をホールドするため(エンコーダのパルス信号に同期して駆動パルスを出力するため)、モータの停止を判定することはできるが、これがエンコーダの故障に起因するものかどうかを特定することはできない。
【0008】
この場合、請求項2のように、エンコーダの異常を検出したときに、オープンループ制御からF/B制御への復帰を禁止するようにすると良い。つまり、エンコーダが異常になった場合は、エンコーダカウント値が異常となるため、このエンコーダカウント値をフィードバックするF/B制御を行っても、モータを正常に駆動できない。従って、この場合は、F/B制御への復帰を禁止することで、無駄なF/B制御を行わずに済むと共に、オープンループ制御によってロータを目標位置まで回転させることができる。
【0009】
また、請求項3のように、エンコーダは、ロータの回転に同期して所定の位相差を有するA相信号とB相信号を出力すると共に、該ロータの基準回転位置でZ相信号を出力する構成とし、F/B制御中にA相信号及びB相信号のエッジをカウントして、そのエンコーダカウント値に基づいて通電相を順次切り換えると共に、Z相信号に基づいてロータの回転位置と通電相とのずれの有無を判定し、ずれがあれば、そのずれを補正し(以下この補正を「Z相補正」という)、更に、オープンループ制御中にカウントしたエンコーダカウント値と駆動信号のカウント値とを比較してエンコーダのA相信号及びB相信号の異常の有無を判定するようにすると良い。この場合、A相信号及びB相信号をカウントしてエンコーダカウント値を更新する際に、A相信号とB相信号の発生順序によってロータの回転方向を判定して、その回転方向に応じてエンコーダカウント値をカウントアップ又はカウントダウンし、そのエンコーダカウント値とロータの回転方向に応じて通電相を選択して通電するようにすると良い。このようにすれば、ロータが正回転/逆回転のいずれの方向に回転しても、エンコーダカウント値とロータの回転位置との対応関係を維持することができて、正回転/逆回転のいずれの回転方向でも、エンコーダカウント値に基づいて正しい通電相を選択することができる。更に、エンコーダから出力されるZ相信号によってロータの基準回転位置を正確に検出できるため、例えば、Z相信号が出力されるときの通電相(エンコーダカウント値)がロータの基準回転位置に対応する通電相(エンコーダカウント値)であるか否かを判定することで、ロータの回転位置と通電相(エンコーダカウント値)との対応関係がずれていないか否かを確認することができ、もし、ずれていれば、そのずれを補正することで、信頼性の高いモータ制御を行うことができる。
【0010】
また、請求項4のように、エンコーダのA相信号及びB相信号が正常と判断したときに、Z相信号の出力間隔をエンコーダカウント値に基づいて判定してZ相信号の異常の有無を判定するようにしても良い。エンコーダのA相信号及びB相信号が正常と判断されれば、それらをカウントしたエンコーダカウント値がロータの回転角度(回転量)に正確に対応しているため、エンコーダカウント値に基づいてZ相信号の出力間隔(回転角度)を判定すれば、Z相信号がロータの基準回転位置で出力されているか否かを正確に判定することができる。
【0011】
この場合、請求項5のように、Z相信号の異常を検出したときに、Z相補正を禁止するようにすると良い。このようにすれば、Z相信号の異常が発生したときに、誤ったZ相補正を行うことを回避することができる。
【0012】
また、請求項6のように、モータとしてスイッチトリラクタンスモータを使用するようにしても良い。スイッチトリラクタンスモータは、永久磁石が不要で構造が簡単であるため、安価であり、温度環境等に対する耐久性・信頼性も高いという利点がある。
【0013】
以上説明した請求項1〜6に係る発明は、スイッチトリラクタンスモータ等のブラシレス型のモータを駆動源とする各種の位置切換装置に適用でき、例えば、請求項7のように、車両の自動変速機のレンジを切り換えるレンジ切換機構を駆動するモータの制御装置に適用しても良い。これにより、信頼性の高いモータ駆動式のレンジ切換装置を構成することができる。
【0014】
【発明の実施の形態】
以下、本発明を車両のレンジ切換装置に適用した一実施形態を図面に基づいて説明する。
【0015】
まず、図1に基づいてレンジ切換機構11の構成を説明する。レンジ切換機構11の駆動源となるモータ12は、例えばスイッチトリラクタンスモータにより構成され、減速機構26(図4参照)を内蔵し、その出力軸13の回転位置を検出する出力軸センサ14が設けられている。この出力軸13には、ディテントレバー15が固定されている。
【0016】
また、ディテントレバー15にはL字形のパーキングロッド18が固定され、このパーキングロッド18の先端部に設けられた円錐体19がロックレバー21に当接している。このロックレバー21は、円錐体19の位置に応じて軸22を中心にして上下動してパーキングギヤ20をロック/ロック解除するようになっている。パーキングギヤ20は、自動変速機27の出力軸に設けられ、このパーキングギヤ20がロックレバー21によってロックされると、車両の駆動輪が回り止めされた状態(パーキング状態)に保持される。
【0017】
一方、ディテントレバー15をパーキングレンジ(以下「Pレンジ」と表記する)と他のレンジ(以下「NotPレンジ」と表記する)に保持するためのディテントバネ23が支持ベース17に固定され、このディテントバネ23の先端に設けられた係合部23aがディテントレバー15のPレンジ保持凹部24に嵌まり込んだときに、ディテントレバー15がPレンジの位置に保持され、該ディテントバネ23の係合部23aがディテントレバー15のNotPレンジ保持凹部25に嵌まり込んだときに、ディテントレバー15がNotPレンジの位置に保持されるようになっている。
【0018】
Pレンジでは、パーキングロッド18がロックレバー21に接近する方向に移動して、円錐体19の太い部分がロックレバー21を押し上げてロックレバー21の凸部21aがパーキングギヤ20に嵌まり込んでパーキングギヤ20をロックした状態となり、それによって、自動変速機27の出力軸(駆動輪)がロックされた状態(パーキング状態)に保持される。
【0019】
一方、NotPレンジでは、パーキングロッド18がロックレバー21から離れる方向に移動して、円錐体19の太い部分がロックレバー21から抜け出てロックレバー21が下降し、それによって、ロックレバー21の凸部21aがパーキングギヤ20から外れてパーキングギヤ20のロックが解除され、自動変速機27の出力軸が回転可能な状態(走行可能な状態)に保持される。
【0020】
尚、前述した出力軸センサ14は、モータ12の減速機構26の出力軸13の回転角度に応じた電圧を出力する回転センサ(例えばポテンショメータ)によって構成され、その出力電圧によって現在のレンジがPレンジとNotPレンジのいずれであるかを確認できるようになっている。
【0021】
次に、図2に基づいてモータ12の構成を説明する。本実施形態では、モータ12として、スイッチトリラクタンスモータ(以下「SRモータ」と表記する)が用いられている。このSRモータ12は、ステータ31とロータ32が共に突極構造を持つモータで、永久磁石が不要で構造が簡単であるという利点がある。円筒状のステータ31の内周部には、例えば12個の突極31aが等間隔に形成され、これに対して、ロータ32の外周部には、例えば8個の突極32aが等間隔に形成され、ロータ32の回転に伴い、ロータ32の各突極32aがステータ31の各突極31aと微小ギャップを介して順番に対向するようになっている。ステータ31の12個の突極31aには、U相、V相、W相の合計6個の巻線33と、U’相、V’相、W’相の合計6個の巻線34が順番に巻回されている。尚、ステータ31とロータ32の突極31a,32aの数は適宜変更しても良いことは言うまでもない。
【0022】
本実施形態の巻線33,34の巻回順序は、ステータ31の12個の突極31aに対して、例えば、V相→W相→U相→V相→W相→U相→V’相→W’相→U’相→V’相→W’相→U’相の順序で巻回されている。図3に示すように、U相、V相、W相の合計6個の巻線33と、U’相、V’相、W’相の合計6個の巻線34は、2系統のモータ励磁部35,36を構成するように結線されている。一方のモータ励磁部35は、U相、V相、W相の合計6個の巻線33をY結線して構成され(同じ相の2個の巻線33はそれぞれ直列に接続されている)、他方のモータ励磁部36は、U’相、V’相、W’相の合計6個の巻線34をY結線して構成されている(同じ相の2個の巻線34はそれぞれ直列に接続されている)。2つのモータ励磁部35,36は、U相とU’相が同時に通電され、V相とV’相が同時に通電され、W相とW’相が同時に通電される。
【0023】
これら2つのモータ励磁部35,36は、車両に搭載されたバッテリ40を電源として、それぞれ別個のモータドライバ37,38(モータ駆動回路)によって駆動される。このように、モータ励磁部35,36とモータドライバ37,38をそれぞれ2系統ずつ設けることで、一方の系統が故障しても、他方の系統でSRモータ12を回転させることができるようになっている。図3に示すモータドライバ37,38の回路構成例では、各相毎にトランジスタ等のスイッチング素子39を1個ずつ設けたユニポーラ駆動方式の回路構成としているが、各相毎にスイッチング素子を2個ずつ設けたバイポーラ駆動方式の回路構成を採用しても良い。尚、本発明は、モータ励磁部とモータドライバをそれぞれ1系統ずつ設けた構成としても良いことは言うまでもない。
【0024】
各モータドライバ37,38の各スイッチング素子39のオン/オフは、ECU41(制御手段)によって制御される。図4に示すように、このECU41と各モータドライバ37,38は、レンジ切換制御装置42に搭載され、このレンジ切換制御装置42には、Pレンジへの切換操作を行うPレンジスイッチ43と、NotPレンジへの切換操作を行うNotPレンジスイッチ44の操作信号が入力される。Pレンジスイッチ43又はNotPレンジスイッチ44の操作により選択されたレンジは、インストルメントパネル(図示せず)に設けられたレンジ表示部45に表示される。尚、Pレンジスイッチ43とNotPレンジスイッチ44は、例えばモーメンタリ型スイッチにより構成されている。
【0025】
SRモータ12には、ロータ32の回転位置を検出するためのエンコーダ46が設けられている。このエンコーダ46は、例えば磁気式のロータリエンコーダにより構成されており、その具体的な構成は、図5及び図6に示すように、N極とS極が円周方向に交互に等ピッチで着磁された円環状のロータリマグネット47がロータ32の側面に同軸状に固定され、このロータリマグネット47に対向する位置に、3個のホールIC等の磁気検出素子48,49,50が配置された構成となっている。本実施形態では、ロータリマグネット47のN極とS極の着磁ピッチが7.5°に設定されている。このロータリマグネット47の着磁ピッチ(7.5°)は、SRモータ12の励磁1回当たりのロータ32の回転角度と同じに設定されている。後述するように、1−2相励磁方式でSRモータ12の通電相の切り換えを6回行うと、全ての通電相の切り換えが一巡してロータ32とロータリマグネット47が一体的に7.5°×6=45°回転する。このロータリマグネット47の45°の回転角度範囲に存在するN極とS極の数は、合計6極となっている。
【0026】
更に、ロータ32の基準回転位置に相当する位置のN極(N’)とその両側のS極(S’)がそれ以外の磁極よりも径方向の幅が広くなるように形成されている。尚、本実施形態では、SRモータ12の通電相の切り換えが一巡する間にロータ32とロータリマグネット47が一体的に45°回転することを考慮して、ロータ32の基準回転位置に相当する幅広な着磁部分(N’)が45°ピッチで形成されており、従って、ロータリマグネット47全体として、基準回転位置に相当する幅広な着磁部分(N’)が合計8個形成されている。尚、基準回転位置に相当する幅広な着磁部分(N’)は、ロータリマグネット47全体として、1個のみ形成した構成としても良い。
【0027】
このロータリマグネット47に対して3個の磁気検出素子48,49,50が次のような位置関係で配置されている。A相信号を出力する磁気検出素子48とB相信号を出力する磁気検出素子49は、ロータリマグネット47の幅狭な着磁部分(N,S)と幅広な着磁部分(N’,S’)の両方に対向し得る位置の同一円周上に配置されている。一方、Z相信号を出力する磁気検出素子50は、ロータリマグネット47の幅狭な着磁部分(N,S)よりも径方向外側又は内側の位置で、且つ、幅広な着磁部分(N’,S’)のみに対向し得る位置に配置されている。A相信号とB相信号を出力する2個の磁気検出素子48,49の間隔は、図7に示すように、A相信号とB相信号の位相差が、電気角で90°(機械角で3.75°)となるように設定されている。ここで、“電気角”はA・B相信号の発生周期を1周期(360°)とした場合の角度で、“機械角”は機械的な角度(ロータ32の1回転を360°とした場合の角度)であり、A相信号の立ち下がり(立ち上がり)からB相信号の立ち下がり(立ち上がり)までにロータ32が回転する角度がA相信号とB相信号の位相差の機械角に相当する。また、Z相信号を出力する磁気検出素子50は、Z相信号とB相信号(又はA相信号)との位相差が0となるように配置されている。
【0028】
各磁気検出素子48,49,50の出力は、N極(N’極)と対向したときにハイレベル“1”となり、S極(S’極)と対向したときにローレベル“0”となる。尚、Z相信号用の磁気検出素子50の出力は、ロータ32の基準回転位置に相当する幅広なN’極に対向する毎にハイレベル“1”となり、それ以外の位置では、ローレベル“0”となる。
【0029】
本実施形態では、ECU41が後述するエンコーダカウンタルーチンによってA相信号とB相信号の立ち上がり/立ち下がりの両方のエッジをカウントして、そのエンコーダカウント値に応じてSRモータ12の通電相を切り換えることでロータ32を回転駆動する。この際、A相信号とB相信号の発生順序によってロータ32の回転方向を判定し、正回転(Pレンジ→NotPレンジの回転方向)ではエンコーダカウント値をカウントアップし、逆回転(NotPレンジ→Pレンジの回転方向)ではエンコーダカウント値をカウントダウンする。これにより、ロータ32が正回転/逆回転のいずれの方向に回転しても、エンコーダカウント値とロータ32の回転位置との対応関係が維持されるため、正回転/逆回転のいずれの回転方向でも、エンコーダカウント値によってロータ32の回転位置(回転角度)を検出して、その回転位置に対応した相の巻線33,34に通電してロータ32を回転駆動する。
【0030】
図7は、ロータ32を逆回転方向(NotPレンジ→Pレンジの回転方向)に回転させたときのエンコーダ46の出力波形と通電相の切換パターンを示している。逆回転方向(NotPレンジ→Pレンジの回転方向)と正回転方向(Pレンジ→NotPレンジの回転方向)のいずれの場合も、ロータ32が7.5°回転する毎に1相通電と2相通電とを交互に切り換えるようになっており、ロータ32が45°回転する間に、例えば、U相通電→UW相通電→W相通電→VW相通電→V相通電→UV相通電の順序で通電相の切り換えを一巡するようになっている。そして、この通電相の切り換え毎に、ロータ32が7.5°ずつ回転して、A相、B相信号用の磁気検出素子48,49に対向するロータリマグネット47の磁極がN極→S極(N’極→S’極)又はS極→N極(S’極→N’極)に変化してA相信号とB相信号のレベルが交互に反転し、それによって、ロータ32が7.5°回転する毎に、エンコーダカウント値が2ずつカウントアップ(又はカウントダウン)する。また、通電相の切り換えが一巡してロータ32が45°回転する毎に、Z相用の磁気検出素子50がロータ32の基準回転位置に相当する幅広なN’極に対向して、Z相信号がハイレベル“1”となる。尚、本明細書では、A相、B相、Z相信号がハイレベル“1”となることを、A相、B相、Z相信号が出力されると言う場合がある。
【0031】
ところで、エンコーダカウント値は、ECU41のRAMに記憶されるため、ECU41の電源がオフされると、エンコーダカウント値の記憶が消えてしまう。そのため、ECU41の電源投入直後のエンコーダカウント値(0)は、実際のロータ32の回転位置(通電相)に対応したものとならい。従って、エンコーダカウント値に応じて通電相を切り換えるためには、電源投入後にエンコーダカウント値と実際のロータ32の回転位置とを対応させて、エンコーダカウント値と通電相とを対応させる必要がある。
【0032】
そこで、本実施形態では、レンジ切換制御装置42のECU41によって後述する図8及び図9に示す初期駆動ルーチンを実行することで、ECU41への電源投入後の初期駆動時に、SRモータ12の通電相の切り換えを所定のタイムスケジュールで一巡させてエンコーダ46のA相信号及びB相信号のエッジをカウントし、初期駆動終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習し、その後の通常駆動時に、エンコーダカウント値と初期駆動終了時の学習結果とに基づいて通電相を決定するようにしている。
【0033】
この初期駆動時の学習は、具体的には次のようにして行われる。図12に示すように、PレンジでECU41に電源が投入されたときに初期駆動を行う場合は、例えば、W相通電→UW相通電→U相通電→UV相通電→V相通電→VW相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ32を正回転方向(Pレンジ→NotPレンジの回転方向)に駆動する。
【0034】
一方、NotPレンジでECU41に電源が投入されたときに初期駆動を行う場合は、例えば、V相通電→UV相通電→U相通電→UW相通電→W相通電→VW相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ32を逆回転方向(NotPレンジ→Pレンジの回転方向)に駆動する。
【0035】
この初期駆動時には、1相通電の時間T1を2相通電の時間T2よりも短くし、例えばT1=10ms、T2=100msに設定する。初期駆動中にロータ32の回転位置と通電相との同期がとれた後でも、トルクが小さい1相通電では、ロータ32が振動するため、1相通電の時間T1を短くして、できるだけ速やかに次の2相通電に切り換えることで、ロータ32の振動を速やかに停止させてエンコーダ46の出力信号を安定させるようにしている。
【0036】
このように、初期駆動時に通電相の切り換えを一巡させれば、初期駆動が終了するまでに、いずれかの通電相で必ずロータ32の回転位置と通電相とが一致して、それ以後、通電相の切り換えに同期してロータ32が回転して、このロータ32の回転に同期してエンコーダ46からA相信号及びB相信号が出力されるようになる。
【0037】
この初期駆動中に、エンコーダ46のA相信号及びB相信号の立ち上がり/立ち下がりの両方のエッジをカウントする。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ32が実際に通電相の切り換えに同期して回転した角度(回転量)が分かり、それによって、初期駆動終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係が分かる。
【0038】
図12の例では、初期駆動時に最初の通電相(W相)からロータ32が回転し、通電相の切り換え毎にロータ32が7.5°ずつ回転してエンコーダカウント値が2ずつカウントアップし、初期駆動終了時にエンコーダカウント値が12となる。
【0039】
これに対し、例えば、初めの3回の励磁(W相通電→UW相通電→U相通電)でロータ32が回転しない場合、つまり4回目以降の励磁(UV相通電→V相通電→VW相通電)でロータ32の回転位置と通電相とが同期してロータ32が3回の励磁分だけ回転する場合は、初期駆動終了時までにロータ32が7.5°×3=22.5°回転して、エンコーダカウント値が2×3=6となる。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ32が実際に通電相の切り換えに同期して回転した角度(回転量)が判明する。
【0040】
初期駆動の最後の通電相は、常にVW相となるが、エンコーダカウント値は、必ずしも12になるとは限らず、例えば8、或は4である場合もある。初期駆動終了後の通常駆動時には、エンコーダカウント値に基づいて通電相が決定されるため、初期駆動によるエンコーダカウント値のずれを修正しないと、通常駆動時に正しい通電相を選択することができない。
【0041】
そこで、本実施形態では、初期駆動終了時のエンコーダカウント値を初期位置ずれ学習値として学習し、その後の通常駆動時にエンコーダカウント値を初期位置ずれ学習値で補正することで、初期駆動終了時のエンコーダカウント値と通電相(ロータ32の回転位置)とのずれを補正して、通常駆動時に正しい通電相を選択できるようにしている。
【0042】
初期駆動終了後は、図12に示すように、後述するF/B制御開始位置停止保持処理により、初期駆動終了時の通電相(VW相)と同じ相に例えば10ms通電してロータ32の位置を初期駆動終了時の位置に保持し、その後、後述するフィードバック制御(以下「F/B制御」と表記する)により、その時点のエンコーダカウント値と初期位置ずれ学習値とに基づいて通電相を切り換えてロータ32を目標位置Acntの方向へ回転させる。これにより、ロータ32の回転位置(エンコーダカウント値)が目標位置Acntから例えば0.5°以内に到達した時点で、通電相の切り換えを終了してロータ32を停止させ、その後は、後述する目標位置停止保持処理により、同じ相に通電し続けてロータ32の停止状態を保持し、この保持状態を例えば50ms継続する。この後、目標位置Acntが変化しなければ、通電を停止する。
【0043】
また、初期駆動の途中で、Pレンジスイッチ43又はNotPレンジスイッチ44が操作されてレンジ切換要求が発生した場合は、次の2相通電(2相通電の実行中にレンジ切換要求が発生したときはその2相通電)が終了してから通常駆動に移行すると共に、該2相通電終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習し、その後の通常駆動時に、エンコーダカウント値と2相通電終了時の学習結果とに基づいて通電相を決定するようにしている。
【0044】
2相通電では、トルクが大きいため、ロータ32の位置が2相通電に対応する位置から多少ずれていたとしても、ロータ32を2相通電に対応する位置まで回転させることができる。このため、初期駆動中に2相通電を1〜2回行うだけでロータ32の回転位置と通電相との同期がとれる確率は高いものと思われる。従って、初期駆動の途中でレンジ切換要求が発生したときには、次の2相通電(又は現在の2相通電)が終了してから通常駆動に移行するようにすれば、初期駆動の途中で、エンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習してから、通常駆動に速やかに移行することができる。
【0045】
例えば、図13のタイムチャートに示すように、初期駆動の2回目の励磁(UW相通電)中に、PレンジからNotPレンジへのレンジ切換要求が発生したときには、このUW相通電で初期駆動を終了して通常駆動に移行すると共に、UW相通電終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習する。本実施形態では、初期駆動の途中で通常駆動に移行する場合でも、その初期駆動を最後まで実行したと仮定して、本来の初期駆動終了時のエンコーダカウント値を推定し、その推定値を初期位置ずれ学習値とするようにしている。例えば、図13に示すように、初期駆動をW相通電とUW相通電の2回の励磁で終了する場合は、その後に予定されていた4回の励磁を行わずに初期駆動を終了するため、未終了の4回の励磁(U相通電→UV相通電→V相通電→VW相通電)を行ったものと仮定して、4回の励磁分の回転角度に相当するカウントアップ値(2×4=8)をUW相通電終了時のエンコーダカウント値に加算して初期位置ずれ学習値を求める。
【0046】
ところで、F/B制御中に、例えば、エンコーダ46のA相信号又はB相信号が何等かの原因で一時的に欠けたり、エンコーダ46の信号ラインに重畳したノイズパルスが正規のパルス信号と誤認されたり、脱調が発生したりすると、通電相(エンコーダカウント値)とロータ32の回転位相との同期が取れなくなって、ロータ32を正常に駆動できなくなってしまい、それによって、ロータ32が停止したり、逆回転することがあり、F/B制御を正常に続けられない状態になって制御不能に陥ることがある。
【0047】
そこで、本実施形態では、F/B制御中に、F/B制御状態(ロータ32の回転状態)が正常か異常かを監視し、異常が検出されれば、その時点で、F/B制御からオープンループ制御に切り換えてリカバリ処理を実行する。図24に示すリカバリ処理の実行例では、シフトレンジをPレンジからNotPレンジに切り換えるF/B制御の途中で、そのF/B制御状態が異常になって、ロータ32の異常停止又はエンコーダカウント値Ncntのカウント動作の異常停止が発生したした時点で、F/B制御からオープンループ制御に切り換えてリカバリ処理を実行する。
【0048】
オープンループ制御(リカバリ処理)中は、エンコーダカウント値Ncntの情報をフィードバックせずに通電相を順次切り換えてロータ32を回転駆動すると共に、当該オープンループ制御中に通電相を切り換える毎にオープンループ制御時の位置カウント値Ncntopをカウントアップ(又はカウントダウン)して、この位置カウント値Ncntopが目標カウント値Acntに到達した時点で、ロータ32が目標位置に到達したと判断してオープンループ制御(リカバリ処理)を終了し、F/B制御に復帰する。その結果、本実施形態では、F/B制御中に、エンコーダカウント値Ncntの異常や脱調等が発生してF/B制御状態(ロータ32の回転状態)が一時的に異常になっても、オープンループ制御によりロータ32を目標位置まで回転させることができる。
【0049】
この際、F/B制御状態の異常検出方法は、次の3つのF/B制御異常検出方法▲1▼〜▲3▼のいずれか1つ又は2つ、或は全てを用いるようにすれば良い。
【0050】
[F/B制御異常検出方法▲1▼]
図25に示すように、F/B制御中に、A相信号のエッジとB相信号のエッジとを別々にカウントし、A相信号のカウント値NaとB相信号のカウント値Nbとの偏差|Na−Nb|が異常判定値(例えば3)以上であるか否かでF/B制御状態の異常の有無を監視する。F/B制御中にA相信号とB相信号が正常に出力されていれば、A相信号のカウント値NaとB相信号のカウント値Nbとの差が0又は1となるため、両信号のカウント値の偏差|Na−Nb|が2以上になれば、いずれか一方の信号の抜けやノイズパルスの混入が考えられる。このような状態になると、エンコーダカウント値Ncntとロータ32の回転位置との同期が取れなくなって、ロータ32の回転状態(F/B制御状態)が異常になるため、両信号のカウント値の偏差|Na−Nb|によってロータ32の回転状態(F/B制御状態)の異常の有無を判定することができる。
【0051】
[F/B制御異常検出方法▲2▼]
図25に示すように、F/B制御中に、A相信号のエッジ間隔ΔTaとB相信号のエッジ間隔ΔTbを計測して、各信号のエッジ間隔ΔTa,ΔTbが異常判定値(例えばΔTa,ΔTbの平均値の10倍)以上であるか否かで、F/B制御状態の異常の有無を監視する。
【0052】
尚、異常検出方法▲2▼として、ロータ回転速度を監視することにより、異常検出するようにしても良く、例えば、単位時間当りのエンコーダ46の出力パルス数に基づいて異常検出するようにしても良い。
【0053】
[F/B制御異常検出方法▲3▼]
図26に示すように、F/B制中に、エンコーダカウント値Ncntの変化方向からロータ32の回転方向を監視し、該ロータ32の回転方向が目標位置へ向かう回転方向から逆転したか否かでF/B制御状態(ロータ32の回転状態)の異常の有無を監視する。本実施形態では、エンコーダカウント値Ncntが目標位置と反対方向に連続して更新される回数をカウントし、そのカウント値Crが異常判定値(例えば4)以上であるか否かで、F/B制御状態(ロータ32の回転状態)の異常の有無を監視する。つまり、エンコーダカウント値Ncntが目標位置と反対方向に連続して例えば4回以上更新されたときにロータ32の逆転と判断して、逆転検出フラグXrをONに切り換える。
【0054】
更に、本実施形態では、オープンループ制御中の励磁方式を1−2相励磁方式に設定し、オープンループ制御開始時の最初の励磁を2相通電で行うと共に、図27に示すように、オープンループ制御開始から例えば3ステップ分は、各通電相の励磁時間を最長時間(例えば50ms)に設定して、ロータ32を確実に掴んでロータ32の回転位相と通電相とを確実に同期させる。この後は、励磁時間を大幅に短くするが、ロータ32の回転速度の上昇に伴って励磁時間を徐々に短くして、ロータ32の回転速度を緩やかに上昇させる。
【0055】
このオープンループ制御中のロータ32の回転位置を推定するために、オープンループ制御開始時のロータ32の初期位置(位置カウント値Ncntopの初期値)を出力軸センサ14の出力信号に基づいて算出し、その後、ECU41からモータドライバ37,38(モータ駆動回路)に駆動信号を出力して通電相を切り換える毎に、位置カウント値Ncntopをカウントアップ(又はカウントダウン)して、この位置カウント値Ncntopに基づいてロータ32の回転位置を推定し、この位置カウント値Ncntopと目標カウント値Acnt(目標位置)との差が所定値以下になった時点で、減速領域に入ったと判断して、励磁時間を徐々に長くして、ロータ32の回転速度を緩やかに減速し、該位置カウント値Ncntopが目標カウント値Acntに到達した時点で、ロータ32が目標位置に到達したと判断して、オープンループ制御を終了し、F/B制御に復帰する。
【0056】
ところで、F/B制御系が故障してF/B制御ではSRモータ12を正常に駆動できなくなった場合でも、オープンループ制御に切り換えれば、SRモータ12を正常に駆動できる可能性がある。例えば、エンコーダ46が故障した場合、或は、SRモータ12の2系統のモータ励磁部35,36(巻線33,34)のうちのいずれか一方の系統が故障したり、2系統のモータドライバ37,38のうちのいずれか一方の系統が故障してSRモータ12の駆動力が低下した場合でも、オープンループ制御に切り換えれば、SRモータ12を正常に駆動できる可能性がある。
【0057】
そこで、本実施形態では、後述する図33及び図34のシステム異常診断ルーチンによってF/B制御系の故障(システム異常)を検出したときに、後述する図35のフェールセーフ処理ルーチンにより、フェールセーフ処理時のオープンループ制御に切り換えてSRモータ12を駆動するようにしている。このフェールセーフ処理時のオープンループ制御は、前述したリカバリ処理時のオープンループ制御と同じである。
【0058】
また、本実施形態では、オープンループ制御中(フェールセーフ処理及びリカバリ処理中)に、エンコーダカウント値Ncnt(エンコーダ46のA相信号・B相信号のカウント値)と位置カウント値Ncntop(モータ駆動信号のカウント値)とを比較して、エンコーダ46のA相・B相の断線の有無を判定する。具体的には、オープンループ制御開始時から終了時までのエンコーダカウント値Ncntの変化量と位置カウント値Ncntopの変化量との差が判定値以上であるか否かで、エンコーダ46のA相・B相の断線の有無を判定する。例えば、エンコーダ46のA相・B相の両方が断線している場合は、オープンループ制御中にロータ32が回転してもエンコーダカウント値Ncntが全く変化しない。また、エンコーダ46のA相・B相のいずれか一方が断線している場合は、エンコーダカウント値Ncntの変化量が正常時の1/2となる。また、オープンループ制御中にSRモータ12が正常に駆動されれば、オープンループ制御中の位置カウント値Ncntopの変化量は、オープンループ制御中のロータ32の回転量(回転角度)に相当する値となる。従って、オープンループ制御中に、エンコーダカウント値Ncntと位置カウント値Ncntopとを比較すれば、エンコーダ46のA相・B相の断線の有無を判定することができる。
【0059】
更に、本実施形態では、オープンループ制御中にエンコーダ46のZ相信号の異常の有無を判定するために、Z相信号の出力間隔を、先のZ相信号が出力されてから次のZ相信号が出力されるまでのエンコーダカウント値Ncntの変化量(ロータ32の回転角度)によって測定し、このZ相信号の出力間隔に基づいてZ相信号の異常の有無を判定するようにしている。すなわち、先のZ相信号が出力されてから次のZ相信号が出力されるまでのエンコーダカウント値Ncntの変化量(ロータ32の回転角度)がロータ32の基準回転位置の間隔(本実施形態では45°)に相当する値であれば、Z相信号が正常と判定し、ロータ32の基準回転位置の間隔を越えてもZ相信号が出力されない状態が何回か続いた場合は、エンコーダ46のZ相の断線(異常)と判定し、反対に、ロータ32の基準回転位置の間隔よりも短い間隔でZ相信号が出力されたときには、ノイズ等によるZ相信号の誤検出(異常)と判定する。
【0060】
以上のような方法で、オープンループ制御中にエンコーダ46のA相・B相・Z相の異常の有無を判定し、A相・B相の断線(異常)が検出されれば、オープンループ制御からF/B制御への復帰を禁止する。つまり、エンコーダ46のA相・B相信号が異常になった場合は、エンコーダカウント値Ncntが異常となるため、このエンコーダカウント値NcntをフィードバックするF/B制御を行っても、SRモータ12を正常に駆動できない。従って、この場合は、F/B制御への復帰を禁止することで、無駄なF/B制御を行わずに済むと共に、オープンループ制御によってロータ32を目標位置まで回転させることができる。
【0061】
また、オープンループ制御中にエンコーダ46のZ相信号の異常を検出したときには、Z相補正を禁止する。このようにすれば、Z相信号の異常が発生したときに、誤ったZ相補正を行うことを回避することができる。
【0062】
以上説明した本実施形態のレンジ切換制御は、レンジ切換制御装置42のECU41によって後述する各ルーチンに従って実行される。以下、これら各ルーチンの処理内容を説明する。
【0063】
[初期駆動]
図8及び図9に示す初期駆動ルーチンに従って実行される。本ルーチンは、ECU41への電源投入直後(イグニッションスイッチをOFF位置からACC位置へ操作した直後)に、初期駆動が終了するまで所定周期(例えば1ms周期)で実行される。
【0064】
本ルーチンが起動されると、まずステップ101で、フェールセーフ処理実行フラグXfsop=ON、又は、リカバリ処理実行フラグXrcv=ONであるか否かを判定する。ここで、フェールセーフ処理実行フラグXfsopは、エンコーダ46又はSRモータ12が故障したときに実行されるフェールセーフ処理(オープンループ制御によるレンジ切り換え)が実行されているか否かを判定するフラグであり、ONは実行されていることを意味する。また、リカバリ処理実行フラグXrcvは、一時的なF/B制御状態の異常が発生したときに一時的に実行されるリカバリ処理(オープンループ制御)が実行されているか否かを判定するフラグであり、ONは実行されていることを意味する。
【0065】
もし、上記ステップ101で、「Yes」と判定されれば、以降の処理を行うことなく、本ルーチンを終了し、「No」と判定されれば、ステップ102に進み、ECU41のイニシャル処理から出力軸センサ14の出力電圧が安定するまで待つための所定時間(例えば100ms)が経過したか否かを判定する。そして、イニシャル処理から所定時間経過した時点で、ステップ103に進み、出力軸センサ14の出力電圧を読み込んで、この出力電圧がレンジ判定値以下であるか否かで、現在のレンジがPレンジかNotPレンジかを判定し、Pレンジであれば、ステップ104に進み、レンジ判定フラグXnpをPレンジを意味する「0」にセットし、NotPレンジであれば、ステップ105に進み、レンジ判定フラグXnpをNotPレンジを意味する「1」にセットする。
【0066】
この後、ステップ106に進み、レンジ判定フラグXnp=0(Pレンジ)であるか否かを判定し、レンジ判定フラグXnp=0(Pレンジ)であれば、ステップ107に進み、図10のPレンジ初期駆動ルーチンを実行し、レンジ判定フラグXnp=1(NotPレンジ)であれば、ステップ108に進み、図11のNotPレンジ初期駆動ルーチンを実行する。
【0067】
上記ステップ107で、図10のPレンジ初期駆動ルーチンが起動されると、ステップ201〜206で、初期駆動中の励磁回数をカウントする励磁回数カウンタCASEが0〜5のいずれであるかを判定する。この励磁回数カウンタCASEは、イニシャル処理でセットされる初期値が0で、励磁を1回行う毎に1ずつカウントアップされる(図9のステップ114)。そして、励磁回数カウンタCASEの判定結果に応じて通電相と通電時間Tを次のように設定する。
【0068】
CASE=0(1回目の励磁)の場合は、ステップ207に進み、W相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=1(2回目の励磁)の場合は、ステップ208に進み、UW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0069】
CASE=2(3回目の励磁)の場合は、ステップ209に進み、U相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=3(4回目の励磁)の場合は、ステップ210に進み、UV相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0070】
CASE=4(5回目の励磁)の場合は、ステップ211に進み、V相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=5(6回目の励磁)の場合は、ステップ212に進み、VW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0071】
これにより、Pレンジで初期駆動を行う場合は、W相通電→UW相通電→U相通電→UV相通電→V相通電→VW相通電の順序で通電相の切り換えを一巡し、ロータ32を正回転方向(Pレンジ→NotPレンジの回転方向)に駆動する。この際、1相通電の時間T1を2相通電の時間T2よりも短く設定する。
【0072】
一方、ステップ108で、図11のNotPレンジ初期駆動ルーチンが起動されると、ステップ221〜226で、励磁回数カウンタCASEが0〜5のいずれであるかを判定し、その判定結果に応じて通電相と通電時間Tを次のように設定する。
【0073】
CASE=0(1回目の励磁)の場合は、ステップ227に進み、V相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=1(2回目の励磁)の場合は、ステップ228に進み、UV相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0074】
CASE=2(3回目の励磁)の場合は、ステップ229に進み、U相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=3(4回目の励磁)の場合は、ステップ230に進み、UW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0075】
CASE=4(5回目の励磁)の場合は、ステップ231に進み、W相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=5(6回目の励磁)の場合は、ステップ232に進み、VW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0076】
これにより、NotPレンジで初期駆動を行う場合は、V相通電→UV相通電→U相通電→UW相通電→W相通電→VW相通電の順序で通電相の切り換えを一巡し、ロータ32を逆回転方向(NotPレンジ→Pレンジの回転方向)に駆動する。この場合も、1相通電の時間T1を2相通電の時間T2よりも短く設定する。
【0077】
以上のようにして、図10のPレンジ初期駆動ルーチン又は図11のNotPレンジ初期駆動ルーチンを実行した後、図8のステップ109に進み、初期駆動中にレンジ切換操作(Pレンジスイッチ43又はNotPレンジスイッチ44の操作)が行われたか否かを判定し、初期駆動中にレンジ切換操作が行われれば、ステップ110に進み、レンジ切換操作フラグXchgをONにセットし、レンジ切換操作が行われていなければ、ステップ111に進み、レンジ切換操作フラグXchgをOFFにセットする。
【0078】
この後、図9のステップ112に進み、現在の通電相の通電時間をカウントする通電時間カウンタCTをカウントアップし、次のステップ113で、現在の通電相の通電時間CTが前記図10又は図11のルーチンで設定した通電時間T(=T1又はT2)を越えたか否かを判定し、越えていなければ、以降の処理を行うことなく、本ルーチンを終了する。これにより、現在の通電相の通電時間CTが図10又は図11のルーチンで設定した通電時間T(=T1又はT2)を越えるまで、現在の通電相への通電が継続される。
【0079】
その後、現在の通電相の通電時間CTが図10又は図11のルーチンで設定した通電時間T(=T1又はT2)を越えた時点で、ステップ114に進み、励磁回数カウンタCASEを1だけカウントアップし、通電相を次の通電相に切り換える。そして、次のステップ115で、通電時間カウンタCTをリセットした後、ステップ116に進み、励磁回数カウンタCASEが初期駆動の終了を意味する「6」に達したか否かを判定し、もし、励磁回数カウンタCASEが「6」に達していれば、ステップ118に進み、初期駆動終了フラグXendを初期駆動の終了を意味する「ON」にセットする。
【0080】
また、励磁回数カウンタCASEが「6」に達していない場合、つまり、初期駆動の途中である場合は、ステップ117に進み、初期駆動の途中終了条件が成立しているか否かを判定する。この初期駆動の途中終了条件は、次の3つの条件▲1▼〜▲3▼によって判定される。
▲1▼レンジ判定フラグXnpが0(Pレンジ)であること
▲2▼励磁回数カウンタCASEが2又は4、つまり2相通電終了時であること
▲3▼レンジ切換操作フラグXchgがON、つまり初期駆動中にレンジ切換操作が行われたこと
【0081】
これら3つの条件▲1▼〜▲3▼のうち、1つでも満たさない条件があれば、初期駆動の途中終了条件が成立せず、初期駆動を継続する。これに対し、3つの条件▲1▼〜▲3▼を全て満たしていれば、初期駆動の途中終了条件が成立して、ステップ118に進み、初期駆動終了フラグXendを初期駆動の終了を意味する「ON」にセットする。
【0082】
この後、ステップ119に進み、レンジ判定フラグXnp=1であるか否か(NotPレンジで初期駆動を行ったか否か)を判定し、レンジ判定フラグXnp=1であれば、ステップ120に進み、初期駆動終了時のエンコーダカウント値Ncntを初期位置ずれ学習値Gcntとして記憶する。そして、次のステップ121で、エンコーダカウント値Ncntを次式によりNotPレンジを基準にした値に補正する。
Ncnt=Ncnt+288
【0083】
本実施形態では、Pレンジの保持位置を0点位置としてエンコーダカウント値Ncntをカウントアップし、NotPレンジの保持位置までロータ32が回転したときに、エンコーダカウント値Ncntが例えば288となるようになっている。従って、NotPレンジで初期駆動を行った場合は、初期駆動終了時のエンコーダカウント値Ncntに288を加算することで、エンコーダカウント値NcntをNotPレンジを基準にした値に補正する。
【0084】
一方、上記ステップ119で、レンジ判定フラグXnp=0(Pレンジで初期駆動)と判定されれば、ステップ122に進み、初期駆動終了時のエンコーダカウント値Ncntを用いて初期位置ずれ学習値Gcntを次式により算出する。
Gcnt=Ncnt+2×(6−CASE)
【0085】
この場合、初期駆動が最後まで行われれば、ステップ114の処理によりCASE=6となるため、初期駆動終了時のエンコーダカウント値Ncntがそのまま初期位置ずれ学習値Gcntとなるが、Pレンジで初期駆動を行う場合は、初期駆動の途中でレンジ切換操作が行われたときに、次の2相通電(2相通電の実行中にレンジ切換要求が発生したときはその2相通電)が終了してから通常駆動に移行するため、その初期駆動を最後まで実行したと仮定して、本来の初期駆動終了時のエンコーダカウント値Ncntを推定し、その推定値を初期位置ずれ学習値Gcntとするようにしている。2×(6−CASE)は、未終了の励磁回数分の回転角度に相当するカウントアップ値(以下「Ncnt補正量」という)である。
【0086】
図14は、初期駆動時の励磁回数カウンタCASE、Ncnt補正量、通電相、A相信号、B相信号、エンコーダカウント値Ncntの関係を説明するタイムチャートである。例えば、初期駆動中に、UW相通電終了時(励磁回数カウンタCASEが1から2になったとき)に初期駆動を終了する場合は、Ncnt補正量=2×(6−CASE)=2×(6−2)=8となり、UV相通電終了時(励磁回数カウンタCASEが3から4になったとき)に初期駆動を終了する場合は、Ncnt補正量=2×(6−CASE)=2×(6−4)=4となる。
【0087】
[エンコーダカウンタ]
次に、図15に示すエンコーダカウンタルーチンの処理内容を説明する。本ルーチンは、AB相割り込み処理によりA相信号とB相信号の立ち上がり/立ち下がりの両方のエッジに同期して起動され、A相信号とB相信号の立ち上がり/立ち下がりの両方のエッジを次のようにしてカウントする。本ルーチンが起動されると、まずステップ301で、A相信号とB相信号の値A(i) 、B(i) を読み込み、次のステップ302で、図16のカウントアップ値ΔN算出マップを検索して、A相信号とB相信号の今回値A(i) 、B(i) と、前回値A(i-1) 、B(i-1) に応じたカウントアップ値ΔNを算出する。
【0088】
ここで、A相信号とB相信号の今回値A(i) 、B(i) と、前回値A(i-1) 、B(i-1) を用いる理由は、A相信号とB相信号の発生順序によってロータ32の回転方向を判定するためであり、図17に示すように、正回転(Pレンジ→NotPレンジの回転方向)ではカウントアップ値ΔNをプラス値にしてエンコーダカウント値Ncntをカウントアップし、逆回転(NotPレンジ→Pレンジの回転方向)ではカウントアップ値ΔNをマイナス値にしてエンコーダカウント値Ncntをカウントダウンする。
【0089】
カウントアップ値ΔNの算出後、ステップ303に進み、前回のエンコーダカウント値Ncntに上記ステップ302で算出したカウントアップ値ΔNを加算して、今回のエンコーダカウント値Ncntを求める。この後、ステップ304に進み、次回のカウント処理のために、A相信号とB相信号の今回値A(i) 、B(i) をそれぞれA(i-1) 、B(i-1) として記憶して本ルーチンを終了する。
【0090】
[モータF/B制御]
次に、図18に示すモータF/B制御ルーチンの処理内容を説明する。本ルーチンは、AB相割り込み処理により実行されて特許請求の範囲でいうF/B制御手段としての役割を果たし、初期駆動終了後にモータF/B制御実行条件が成立しているときに、ロータ32の回転位置(エンコーダカウント値Ncnt)が目標位置Acntから例えば0.5°以内に到達するまで、エンコーダカウント値Ncntと初期位置ずれ学習値Gcntとに基づいて通電相を切り換えてロータ32を目標位置Acntの方向へ回転させる。ここで、モータF/B制御実行条件は、例えば次の▲1▼〜▲4▼の条件を全て満たしているときに成立する。
【0091】
▲1▼初期駆動終了後であること(初期駆動終了フラグXend=ON)
▲2▼フェールセーフ処理が行われていないこと(フェールセーフ処理実行フラグXfsop=OFF)
▲3▼リカバリ処理が行われていないこと(リカバリ処理実行フラグXrcv=OFF)
▲4▼初期駆動終了から所定の停止保持時間(例えば10ms)が経過していること、又は、モータ通電開始から所定の停止保持時間(例えば10ms)が経過していること
【0092】
尚、▲4▼の停止保持時間は、F/B制御開始時のロータ32の位置を確定するために設けられている。
上記▲1▼〜▲4▼の条件を全て満たしているときにモータF/B制御実行条件が成立し、F/B許可フラグXfbがONにセットされる。
【0093】
図18のモータF/B制御ルーチンが起動されると、まずステップ311で、F/B許可フラグXfbがONにセットされているか否か(モータF/B制御実行条件が成立しているか否か)を判定し、F/B許可フラグXfbがOFF(F/B制御実行条件が不成立)であれば、以降の処理を行うことなく、本ルーチンを終了する。
【0094】
これに対し、F/B許可フラグXfbがONにセットされていれば、ステップ312に進み、後述する図19の通電相設定ルーチンを実行して、現在のエンコーダカウント値Ncntと初期位置ずれ学習値Gcntとに基づいて通電相を設定し、次のステップ313で、通電処理ルーチン(図示せず)を実行して、上記ステップ312で設定した通電相に通電する。
【0095】
一方、上記ステップ312で、図19の通電相設定ルーチンが起動されると、ステップ321で、回転方向指示値Dが正回転(Pレンジ→NotPレンジの回転方向)を意味する「1」であるか否かを判定する。この回転方向指示値Dは、現在のエンコーダカウント値Ncntと目標値Acntとの大小関係によって設定される。
【0096】
この回転方向指示値D=1(正回転)であれば、ステップ322に進み、回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが減少したか否か)を判定し、逆転していなければ、ステップ323に進み、現在のエンコーダカウント値Ncnt、初期位置ずれ学習値Gcnt、正回転方向位相進み量K1、速度補正量Ksを用いて通電相判定値Mptnを次式により更新する。
Mptn=Ncnt−Gcnt+K1+Ks
【0097】
ここで、正回転方向位相進み量K1は、ロータ32を正回転させるのに必要な通電相の位相進み量(ロータ32の現在位置に対する通電相の位相進み量)であり、例えばK1=4に設定されている。
【0098】
また、速度補正量Ksは、ロータ32の回転速度に応じて設定される位相進み補正量である。低速域では、速度補正量Ksが0に設定され、高速になるに従って、速度補正量Ksが例えば1又は2に増加される。これにより、ロータ32の回転速度に適した通電相となるように通電相判定値Mptnが補正される。
【0099】
一方、上記ステップ322で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Mptnを更新しない。この場合は、逆転直前の通電相(前回の通電相)に通電され、ロータ32の逆転を抑制する方向に制動トルクが発生する。
【0100】
また、上記ステップ321で、回転方向指示値D=0(逆回転)、つまりNotPレンジ→Pレンジの回転方向と判定された場合は、ステップ324に進み、回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが増加したか否か)を判定し、逆転していなければ、ステップ325に進み、現在のエンコーダカウント値Ncnt、初期位置ずれ学習値Gcnt、逆回転方向位相進み量K2、速度補正量Ksを用いて通電相判定値Mptnを次式により更新する。
Mptn=Ncnt−Gcnt−K2−Ks
【0101】
ここで、逆回転方向位相進み量K2は、ロータ32を逆回転させるのに必要な通電相の位相進み量(ロータ32の現在位置に対する通電相の位相進み量)であり、例えばK2=3に設定されている。速度補正量Ksは正回転の場合と同じである。
【0102】
一方、上記ステップ324で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Mptnを更新しない。この場合は、逆転直前の通電相(前回の通電相)に通電され、ロータ32の逆転を抑制する方向に制動トルクが発生する。
【0103】
以上のようにして、今回の通電相判定値Mptnを決定した後、ステップ326に進み、通電相判定値Mptnを“12”で割り算して、その余りMptn%12を求める。ここで、“12”は、通電相を一巡させる間のエンコーダカウント値Ncntの増減量に相当する。
【0104】
Mptn%12の算出後、ステップ327に進み、図20の変換テーブルを検索して、Mptn%12に対応する通電相を選択し、これを今回の通電相に設定する。
【0105】
図21はU相から回転を開始する場合に最初に通電する相を説明するタイムチャートである。この場合、速度補正量Ks=0となるため、正回転(Pレンジ→NotPレンジ方向への回転)を開始する場合は、通電相判定値Mptnは次式により算出される。
Mptn=Ncnt−Gcnt+K1=Ncnt−Gcnt+4
U相から正回転を開始する場合は、(Ncnt−Gcnt)/12の余りは、6となるため、Mptn%12=6+4=10となり、最初の通電相はV相となる。
【0106】
一方、U相から逆回転(NotPレンジ→Pレンジ方向への回転)を開始する場合は、通電相判定値Mptnは次式により算出される。
Mptn=Ncnt−Gcnt−K2=Ncnt−Gcnt−3
U相から逆回転を開始する場合は、Mptn%12=6−3=3となり、最初の通電相はW相となる。
【0107】
このように、正回転方向位相進み量K1と逆回転方向位相進み量K2をそれぞれ4と3に設定することで、正回転方向と逆回転方向の通電相の切換パターンを対称にすることができ、正回転方向と逆回転方向のいずれの場合も、ロータ32の現在位置から2ステップ分ずらした位置の相を最初に励磁して回転を開始することができる。
【0108】
[Z相補正]
ところで、SRモータ12の回転中は、図23に示すように、ロータ32の回転に同期してエンコーダ46からA相信号とB相信号が交互に出力されると共に、通電相の切り換えが一巡してロータ32が45°回転する毎に、Z相信号が出力される。このZ相信号によってロータ32の基準回転位置を正確に検出できるため、Z相信号が出力されるときの通電相(エンコーダカウント値)がロータ32の基準回転位置に対応する通電相(エンコーダカウント値)であるか否かを判定することで、ロータ32の回転位置と通電相(エンコーダカウント値)との対応関係がずれていないか否かを確認することができ、もし、ずれていれば、そのずれを補正するZ相補正を行うことで、信頼性の高いモータ制御を行うことができる。
【0109】
このZ相補正は、図22に示すZ相補正ルーチンによって実行される。本ルーチンは、A相割り込み処理によりA相信号の立ち上がり/立ち下がりの両方のエッジに同期して起動される。本ルーチンが起動されると、まずステップ401で、次の▲1▼〜▲3▼のZ相補正実行条件が成立しているか否かを判定する。
▲1▼Z相信号の値Zが1(ハイレベル)であること
▲2▼エンコーダ故障フラグXfailencがエンコーダ46の故障無しを意味するOFFにセットされていること
▲3▼Z相補正禁止フラグXzngがZ相補正許可を意味するOFFにセットされていること
【0110】
ここで、エンコーダ故障フラグXfailencは、Z相補正の回数が判定値を越えたときに、エンコーダ46の故障と判断されて、後述するステップ410でXfailenc=ONにセットされる。また、Z相補正禁止フラグXzngは、後述する図45又は図46のルーチンでエンコーダ46のZ相信号の異常が検出されたときに、Xzng=ONにセットされる。
【0111】
上記▲1▼〜▲3▼の条件のうち、1つでも満たさない条件があれば、Z相補正実行条件が不成立となり、以降の処理を行うことなく、本ルーチンを終了する。
【0112】
これに対し、上記▲1▼〜▲3▼の条件を全て満たせば、Z相補正実行条件が成立し、ステップ402に進み、Z相信号出力時(Z相信号の値Zが1に反転した時)の位置検出カウント値Nzonを記憶する。この位置検出カウント値Nzonは、Z相信号出力時のエンコーダカウント値Ncntを初期位置ずれ学習値Gcntで補正したものであり、この位置検出カウント値Nzonからロータ32の基準回転位置(Z相信号が出力される位置)が検出される。
Nzon=Ncnt−Gcnt
【0113】
この後、ステップ403に進み、今回の本ルーチンの起動タイミングがA相信号の立ち上がりであるか否かで、ロータ32の回転方向が正回転方向(Pレンジ→NotPレンジの回転方向)であるか否かを判定する。
【0114】
図23に示すように、A相信号とZ相信号は、電気角で90°の位相差で出力されるため、正回転方向(Pレンジ→NotPレンジの回転方向)では、Z相信号出力期間中にA相信号が立ち上がり、逆回転方向(NotPレンジ→Pレンジの回転方向)では、Z相信号出力期間中にA相信号が立ち下がる。従って、Z相信号出力期間中にA相信号が立ち上がりか立ち下がるかで、正回転方向か逆回転方向かを判定することができる。
【0115】
上記ステップ403で、今回の本ルーチンの起動タイミングがA相信号の立ち上がりタイミング、つまりロータ32の回転方向が正回転方向(Pレンジ→NotPレンジの回転方向)であると判定された場合は、ステップ404に進み、Z相信号出力時の通電相の設計値と実値とのずれgzを算出する。
gz=K1−Nzon%12
【0116】
ここで、K1はロータ32を正回転させるのに必要な通電相の正回転方向位相進み量であり、例えば、K1=4に設定されている。Nzon%12は、Z相信号出力時の位置検出カウント値Nzonを“12”で割り算したときの余りである。
【0117】
本実施形態では、図23に示すように、正回転方向(Pレンジ→NotPレンジの回転方向)の場合に、Nzon%12が4となるように設計されているため、制御系が正常に動作していれば、gz=K1−Nzon%12=0となる。
【0118】
一方、上記ステップ403で、今回の本ルーチンの起動タイミングがA相信号の立ち下がりタイミング、つまりロータ32の回転方向が逆回転方向(NotPレンジ→Pレンジの回転方向)であると判定された場合は、ステップ405に進み、Z相信号出力時の通電相の設計値と実値とのずれgzを算出する。
gz=K2−Nzon%12
ここで、K2はロータ32を逆回転させるのに必要な通電相の逆回転方向位相進み量であり、例えばK2=3に設定されている。
【0119】
本実施形態では、図23に示すように、逆回転方向(NotPレンジ→Pレンジの回転方向)の場合に、Nzon%12が3となるように設計されているため、制御系が正常に動作していれば、gz=K2−Nzon%12=0となる。
【0120】
設計値と実値とのずれgzの算出後、ステップ406に進み、Z相信号出力時の通電相の設計値と実値とのずれgzが0であるか否かを判定し、設計値と実値とのずれgzが0であれば、制御系は正常に動作しているので、以降のZ相補正等の処理を行わずに本ルーチンを終了する。
【0121】
これに対して、Z相信号出力時の通電相の設計値と実値とのずれgzが0でない場合は、Z相補正が必要と判断して、ステップ407に進み、Z相補正の回数をカウントするZ相補正回数カウンタCgzをカウントアップして、ステップ408に進み、初期位置ずれ学習値Gcntのずれを設計値と実値とのずれgz分だけ補正する。
Gcnt=Gcnt−gz
【0122】
この後、Z相補正回数カウンタCgzの値(Z相補正の回数)が判定値を越えたか否かを判定し、判定値以下であれば、まだエンコーダ46の故障とは判定しないが、Z相補正回数カウンタCgzの値(Z相補正の回数)が判定値を越えていれば、エンコーダ46の故障と判断して、ステップ410に進み、エンコーダ故障フラグXfailencをエンコーダ46の故障有りを意味するONにセットして本ルーチンを終了する。
【0123】
尚、エンコーダ故障フラグXfailencがONにセットされると、その後、A相割り込み処理により本ルーチンが起動されても、常に、ステップ401で「No」と判定されて、本ルーチンが強制終了されるため、Z相補正が実行されない。
【0124】
[リカバリ処理]
図28に示すリカバリ処理ルーチンは、所定周期(例えば1ms周期)で起動され、F/B制御状態が異常になったときにリカバリ処理を次のようにして実行する。本ルーチンが起動されると、まずステップ801で、リカバリ処理実行フラグXrcvがOFFであるか否かを判定し、Xrcv=OFF(リカバリ処理実行中でない)の場合は、ステップ802に進み、次の▲1▼〜▲4▼のリカバリ処理実行条件が成立しているか否かを判定する。
【0125】
▲1▼エンコーダ46のA相信号、B相信号、出力軸センサ14の出力信号が全て正常であること
▲2▼後述する図33のシステム異常診断ルーチンでセットされる各異常検出フラグXfnsw、Xfcnt、Xfrcvが全てOFF(異常なし)であること
▲3▼F/B許可フラグXfbがON(F/B制御中)であること
▲4▼後述する図30のF/B制御中AB相信号異常検出ルーチンでセットされるA相信号、B相信号に関する3つの異常検出フラグXfab、Xfta、XftbのいずれかがON(異常あり)であること、又は、後述する図32の逆転判定ルーチンでセットされる逆転検出フラグXrがON(逆転あり)であること
【0126】
これら4つの条件▲1▼〜▲4▼のうち、1つでも満たさない条件があれば、リカバリ処理実行条件が不成立となり、以降の処理を行うことなく、本ルーチンを終了する。
【0127】
これに対し、上記▲1▼〜▲4▼の条件を全て満たせば、リカバリ処理実行条件が成立し、ステップ802からステップ803に進み、リカバリ処理実行フラグXrcvをONにセットし、次のステップ804で、図29に示す関係に基づいて、現在の出力軸センサ14の出力信号Vnswを用いて現在の位置カウント値Ncntopを次式により算出する。
【0128】
ここで、INTは[ ]内の数値を整数化する関数であり、Vpは出力軸センサ14のPレンジ出力学習値、Vnpは出力軸センサ14のNotPレンジ出力学習値、Kopはディテントレバー15の最大回転角、KofpはPレンジ側のオフセット値である。上式は、位置カウント値Ncntopを2の倍数とするように設定されている。
【0129】
ディテントレバー15の最大回転角Kopは、ディテントレバー15のPレンジ保持凹部24の側壁からNotPレンジ保持凹部25の側壁までのディテントレバー15の回転角であり、ディテントレバー15の可動範囲の設計値ΔNdとPレンジ側の遊び量ΔGpとを加算して求められる。本実施形態では、ΔNd=20.5(deg)、ΔGp=3(deg)となっている。
【0130】
上記位置カウント値Ncntopの算出式において、Kop×61/3.75はディテントレバー15の最大回転角Kopをモータ駆動ステップ数(励磁回数)に換算した値である。「61」は減速機構26の減速比であり、「3.75」は1ステップ(励磁1回当たり)のロータ32の回転角である。この位置カウント値Ncntopは、オープンループ制御開始時の位置カウント値Ncntopの初期値として用いられる。
【0131】
位置カウント値Ncntopの算出後、ステップ805に進み、リカバリ処理の実行回数をカウントするリカバリ処理実行回数カウンタCrcvをカウントアップし、次のステップ806で、オープンループ制御実行フラグXopenをONにセットして、後述する図37のオープンループ制御ルーチンによりオープンループ制御を実行する。
【0132】
リカバリ処理(オープンループ制御)の実行中は、本ルーチンが起動される毎に、ステップ801で「No」と判定されて、ステップ807に進み、オープンループ制御完了フラグXopcmpがオープンループ制御完了を意味するONにセットされているか否かを判定し、Xopcmp=OFFであれば、そのまま本ルーチンを終了し、オープンループ制御を継続する。
【0133】
その後、オープンループ制御が完了した時点で、ステップ808に進み、初期駆動を再実行するために、初期駆動終了フラグXend=OFF(初期駆動未終了)、レンジ切換操作フラグXchg=OFF(レンジ切換操作なし)、通電時間カウンタCT=0、励磁回数カウンタCASE=0、エンコーダカウント値Ncnt=0、初期位置ずれ学習値Gcnt=0にセットする。そして、次のステップ811で、オープンループ制御実行フラグXopen=OFFにセットしてオープンループ制御(リカバリ処理)を終了した後、ステップ812に進み、リカバリ処理実行フラグXrcv=OFF、A相信号、B相信号の異常検出フラグXfab=OFF、Xfta=OFF、Xftb=OFF、後述する第3の異常検出フラグXfrcv=OFFにセットする。
【0134】
[F/B制御中AB相信号異常検出]
図30に示すF/B制御中AB相信号異常検出ルーチンは、所定周期(例えば1ms周期)で起動され、F/B制御中にエンコーダ46のA相信号とB相信号の異常の有無を次のようにして判定する。本ルーチンが起動されると、まずステップ821で、F/B許可フラグXfb=ON(F/B制御中)であるか否かを判定し、F/B許可フラグXfb=OFFであれば、ステップ822に進み、A相信号カウンタNa=0、B相信号カウンタNb=0、A相信号エッジ間隔カウンタΔTa=0、B相信号エッジ間隔カウンタΔTb=0にリセットして本ルーチンを終了する。
【0135】
これに対して、ステップ821でF/B許可フラグXfb=ON(F/B制御中)と判定された場合は、AB相信号異常判定実行条件が成立して、ステップ823に進み、A相信号カウント値NaとB相信号カウント値Nbとの偏差ΔNabを算出する。
ΔNab=|Na−Nb|
ここで、A相信号カウント値NaとB相信号カウント値Nbは、A相信号のエッジとB相信号のエッジを別々にカウントした値である。
【0136】
そして、次のステップ824で、AB相信号カウント値偏差ΔNabを異常判定値Kab(例えば3)と比較し、もし、AB相信号カウント値偏差ΔNabが異常判定値Kab以上であれば、A相信号カウント値NaとB相信号カウント値Nbのいずれかが異常であると判断して、ステップ825に進み、AB相信号異常検出フラグXfabをON(異常あり)にセットして、次のステップ826に進む。
【0137】
一方、AB相信号カウント値偏差ΔNabが異常判定値Kab未満の場合は、AB相信号異常検出フラグXfabをOFF(異常なし)に維持してステップ826に進む。
【0138】
F/B制御中にA相信号とB相信号が正常に出力されていれば、A相信号カウント値NaとB相信号カウント値Nbとの偏差ΔNabが0又は1となるため、このAB相信号カウント値偏差ΔNabが2以上になれば、いずれか一方の信号の抜けやノイズパルスの混入が考えられる(図25参照)。従って、AB相信号カウント値偏差ΔNabが異常判定値Kab以上であるか否かで、A相信号とB相信号の異常の有無を判定することができる。本実施形態では、異常判定値Kabを余裕を見て3に設定したが、2又は4以上の値に設定しても良い。
【0139】
以上のようにして、AB相信号カウント値偏差ΔNabによる異常判定処理を行った後、ステップ826に進み、A相信号のエッジ間隔ΔTaとB相信号のエッジ間隔ΔTbをカウントするカウンタをそれぞれカウントアップした後、ステップ827に進み、A相信号エッジ間隔ΔTaを異常判定値Kta(例えばΔTaの平均値の10倍の値)と比較し、もし、A相信号エッジ間隔ΔTaが異常判定値Kta以上であれば、A相信号が異常であると判断して、ステップ828に進み、A相信号異常検出フラグXftaをON(異常あり)にセットして、次のステップ829に進む。
【0140】
一方、A相信号エッジ間隔ΔTaが異常判定値Kta未満の場合は、A相信号異常検出フラグXftaをOFF(異常なし)に維持してステップ829に進む。そして、このステップ829で、B相信号エッジ間隔ΔTbを異常判定値Ktb(例えばΔTbの平均値の10倍の値)と比較し、もし、B相信号エッジ間隔ΔTbが異常判定値Ktb以上であれば、B相信号が異常であると判断して、ステップ830に進み、B相信号異常検出フラグXftbをON(異常あり)にセットして本ルーチンを終了する。
【0141】
一方、B相信号エッジ間隔ΔTbが異常判定値Ktb未満の場合は、B相信号異常検出フラグXftbをOFF(異常なし)に維持して、本ルーチンを終了する。
【0142】
各信号のエッジ間隔ΔTa,ΔTbは、ロータ回転速度に応じて変化するため、F/B制御中に、各信号のエッジ間隔ΔTa,ΔTbが長くなり過ぎる場合は、ロータ32の異常停止、異常速度低下、パルス抜けが考えられるため(図25参照)、各信号のエッジ間隔ΔTa,ΔTbが異常判定値Kta,Kta(例えばΔTa,ΔTbの平均値の10倍)以上であるか否かで、A相信号とB相信号の異常の有無を判定することができる。
【0143】
尚、各信号のエッジ間隔ΔTa,ΔTbが短くなり過ぎる場合は、ノイズパルスが正規のパルス信号と誤認されている可能性があるため、各信号のエッジ間隔ΔTa,ΔTbが所定の異常判定値以下であるか否かで、A相信号とB相信号の異常の有無を判定するようにしても良い。
【0144】
また、AB相信号カウント値偏差ΔNabによる異常判定処理(ステップ823〜825)と各信号のエッジ間隔ΔTa,ΔTbによる異常判定処理(ステップ826〜830)のいずれか一方の処理のみを行い、他方の処理を省略するようにしても良い。
【0145】
[逆転カウンタ]
図31に示す逆転カウンタルーチンは、AB相割り込み処理により実行され、ロータ32の回転方向が回転方向指示に反して連続して逆転した回数を次のようにしてカウントする。本ルーチンが起動されると、まずステップ831で、回転方向指示値Dが1(Pレンジ→NotPレンジの回転方向)、0(停止)、−1(NotPレンジ→Pレンジの回転方向)のいずれに該当するかを判定し、回転方向指示値Dが0(停止)であれば、以降の処理を行うことなく、本ルーチンを終了する。
【0146】
一方、回転方向指示値Dが1(Pレンジ→NotPレンジの回転方向)であれば、ステップ832に進み、前回のエンコーダカウント値Ncnt(i-1) と今回のエンコーダカウント値Ncnt(i) との差が1以上であるか否かで、ロータ32の回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが減少したか否か)を判定し、逆転していれば、ステップ834に進み、逆転回数をカウントする逆転カウンタCrをカウントアップし、逆転していなければ、ステップ835に進み、逆転カウンタCrを0にリセットする。
【0147】
また、回転方向指示値Dが−1(NotPレンジ→Pレンジの回転方向)であれば、ステップ833に進み、前回のエンコーダカウント値Ncnt(i-1) と今回のエンコーダカウント値Ncnt(i) との差が−1以下であるか否かで、ロータ32の回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが増加したか否か)を判定し、逆転していれば、ステップ836に進み、逆転カウンタCrをカウントアップし、逆転していなければ、ステップ835に進み、逆転カウンタCrを0にリセットする。
【0148】
[逆転判定]
図32に示す逆転判定ルーチンは、所定周期(例えば1ms周期)で起動される。本ルーチンが起動されると、まずステップ841で、F/B許可フラグXfb=ON(F/B制御中)であるか否かを判定し、F/B許可フラグXfb=OFFであれば、ステップ844に進み、逆転検出フラグXrをOFFにセットして、本ルーチンを終了する。
【0149】
これに対して、ステップ841でF/B許可フラグXfb=ON(F/B制御中)と判定された場合は、逆転判定実行条件が成立して、ステップ842に進み、図31の逆転カウンタルーチンで求めた逆転カウント値Crが異常判定値Kr(例えば4)以上であるか否かで、ロータ32が回転方向指示に反して逆転し続けているか否かを判定し、逆転カウント値Crが異常判定値Kr以上であれば、ステップ843に進み、逆転検出フラグXrをONにセットして逆転の判定を確定し、逆転カウント値Crが異常判定値Kr未満であれば、ステップ844に進み、逆転検出フラグXrをOFFに維持する。
【0150】
[システム異常診断]
図33に示すシステム異常診断ルーチンは、所定周期(例えば8ms周期)で起動される。本ルーチンが起動されると、まずステップ851で、次の▲1▼、▲2▼の異常診断実行条件が成立しているか否かを判定する。
▲1▼イグニッションスイッチ(図示せず)の操作によりECU41に電源が投入された後、所定時間(例えば1s)が経過していること
▲2▼リカバリ処理実行中でないこと(リカバリ処理実行フラグXrcv=OFFであること)
【0151】
これら2つの条件▲1▼、▲2▼のうち、いずれか一方でも満たさない条件があれば、異常診断実行条件が不成立となり、ステップ852に進み、後述する仮異常状態継続時間カウンタCfnsw、Cfcntを0にリセットして、本ルーチンを終了する。
【0152】
これに対し、上記2つの条件▲1▼、▲2▼を両方とも満たせば、異常診断実行条件が成立し、ステップ851からステップ854に進み、出力軸センサ14が正常で、且つ、指令シフトレンジと、出力軸センサ14の出力信号Vnswから検出したレンジとが一致しているか否かを判定し、その判定結果が「Yes」であれば、ステップ856に進み、第1の仮異常状態継続時間カウンタCfnswを0にリセットする。
【0153】
これに対し、上記ステップ854の判定結果が「No」であれば、ステップ855に進み、第1の仮異常状態継続時間カウンタCfnswをカウントアップして、指令シフトレンジと出力軸センサ14の出力信号Vnswとが一致していない状態の継続時間を計測し、次のステップ857で、第1の仮異常状態継続時間カウンタCfnswの値が異常判定値Kfnswよりも大きいか否かを判定する。ここで、異常判定値Kfnswは、正常なレンジ切換動作に要する最長時間よりも十分に長い時間(例えば10s)に設定されている。従って、第1の仮異常状態継続時間カウンタCfnswの値が異常判定値Kfnswよりも大きければ、レンジ切換動作が正常に行われない状態になっているため、システムの異常ありと判断して、ステップ858に進み、第1の異常検出フラグXfnswをONにセットする。上記ステップ857の判定結果が「No」であれば、第1の異常検出フラグXfnswをOFF(異常なし)に維持する。
【0154】
以上のようにして、出力軸センサ14の出力信号Vnswを用いて1回目の異常診断を行った後、図34のステップ859に進み、エンコーダカウント値Ncntと目標カウント値Acntとの偏差|Ncnt−Acnt|が所定値Kcnt(例えば5°相当値)よりも大きいか否かを判定し、このカウント値偏差|Ncnt−Acnt|が所定値Kcnt以下であれば、ステップ861に進み、第2の仮異常状態継続時間カウンタCfcntを0にリセットする。
【0155】
これに対し、上記ステップ859の判定結果が「Yes」であれば、ステップ860に進み、第2の仮異常状態継続時間カウンタCfcntをカウントアップして、カウント値偏差|Ncnt−Acnt|が所定値Kcntよりも大きい状態の継続時間を計測し、次のステップ862で、第2の仮異常状態継続時間カウンタCfcntの値が異常判定値Kfcntよりも大きいか否かを判定する。ここで、異常判定値Kfcntは、正常なレンジ切換動作に要する最長時間より十分に長い時間(例えば10s)に設定されている。従って、第2の仮異常状態継続時間カウンタCfcntの値が異常判定値Kfcntよりも大きければ、レンジ切換動作が正常に行われない状態になっているため、システムの異常ありと判断して、ステップ863に進み、第2の異常検出フラグXfcntをONにセットする。上記ステップ862の判定結果が「No」であれば、第2の異常検出フラグXfcntをOFF(異常なし)に維持する。
【0156】
以上のようにして、カウント値偏差|Ncnt−Acnt|を用いて2回目の異常診断を行った後、ステップ864に進み、図28のリカバリ処理ルーチンのステップ805でカウントされるリカバリ処理実行回数Crcvが異常判定値Kcrv(例えば3回)以上であるか否かを判定し、リカバリ処理実行回数Crcvが異常判定値Kcrv以上であれば、ステップ865に進み、システムの異常ありと判断して、ステップ865に進み、第3の異常検出フラグXfrcvをONにセットして本ルーチンを終了する。つまり、リカバリ処理が連続して異常判定値Kcrv(例えば3回)以上も繰り返される場合は、F/B制御系が正常に機能しない状態になっているため、システムの異常ありと判断するものである。
【0157】
一方、リカバリ処理実行回数Crcvが異常判定値Kcrv未満であれば、第3の異常検出フラグXfrcvをOFF(異常なし)に維持して本ルーチンを終了する。
【0158】
[フェールセーフ処理]
図35に示すフェールセーフ処理ルーチンは、所定周期(例えば8ms周期)で起動される。本ルーチンが起動されると、まずステップ901で、次の▲1▼、▲2▼のフェールセーフ処理実行条件が成立しているか否かを判定する。
▲1▼オープンループ制御によるレンジ切り換えが可能な状態であること(システム故障フラグXfailoff=OFFであること)
▲2▼図33のシステム異常診断ルーチンでセットされる3つの異常検出フラグXfnsw、Xfcnt、Xfrcvのうちの少なくとも1つがON(異常あり)であること、又は、後述する図44のAB相断線検出ルーチンでセットされるAB相断線検出フラグXfailabがON(AB相断線あり)であること
【0159】
これら2つの条件▲1▼、▲2▼のうち、いずれか一方でも満たさない条件があれば、フェールセーフ処理実行条件が不成立となり、以降の処理を行うことなく、本ルーチンを終了する。
【0160】
これに対し、上記2つの条件▲1▼、▲2▼を両方とも満たせば、フェールセーフ処理実行条件が成立し、ステップ901からステップ902に進み、フェールセーフ処理実行フラグXfsopをONにセットし、次のステップ903で、警告ランプを点灯したり、或は、メータパネルの情報表示部等に警告表示して、運転者に警告する。
【0161】
この後、ステップ904に進み、前回のフェールセーフ処理終了後の経過時間を計測するフェールセーフ処理間隔カウンタCfsopの値が所定値Kfsop未満であるか否かを判定する。ここで、所定値Kfsopは、前回のフェールセーフ処理終了後にディテントバネ23の弾性力によってディテントバネ23の係合部23aがディテントレバー15の保持凹部24,25の傾斜側壁に沿ってその底部に滑り落ちるのに要する時間よりもある程度長い時間(例えば500ms)に設定されている。
【0162】
フェールセーフ処理間隔カウンタCfsopの値(前回のフェールセーフ処理終了後の経過時間)が所定値Kfsop未満であれば、ステップ905に進み、フェールセーフ処理間隔カウンタCfsopをカウントアップして前回のフェールセーフ処理終了後の経過時間をカウントする。この後、ステップ906に進み、全相の通電をオフした状態を継続し、次のステップ907で、通電フラグXonを通電オフを意味するOFFにセットして本ルーチンを終了する。これにより、前回のフェールセーフ処理終了後の経過時間が所定値Kfsopを越えるまでは、全相の通電をオフした状態に維持される。
【0163】
その後、フェールセーフ処理間隔カウンタCfsopの値(前回のフェールセーフ処理終了後の経過時間)が所定値Kfsop以上になった時点で、ステップ904からステップ908に進み、オープンループ制御実行フラグXopenがOFFであるか否かを判定し、OFFであれば、ステップ909に進み、指令シフトレンジsftが切り換えられたか否かを判定する。その結果、指令シフトレンジsftが切り換えられていないと判定されれば、ステップ910に進み、全相の通電をオフした状態を継続する。
【0164】
これに対して、上記ステップ909で、指令シフトレンジsftが切り換えられたと判定されれば、ステップ911に進み、前記図28のリカバリ処理ルーチンのステップ804と同じ方法で、現在の出力軸センサ14の出力信号Vnswを用いて現在の位置カウント値Ncntopを算出する。この位置カウント値Ncntopは、オープンループ制御開始時の位置カウント値Ncntopの初期値として用いられる。
【0165】
この後、ステップ912に進み、オープンループ制御実行フラグXopenをONにセットして、後述する図37のオープンループ制御ルーチンによりオープンループ制御を実行し、次のステップ913で、フェールセーフ処理の実行回数をカウントするフェールセーフ処理実行回数カウンタCfsをカウントアップして、本ルーチンを終了する。
【0166】
また、前記ステップ908で、オープンループ制御実行フラグXopenがONであると判定されれば、図36のステップ914に進み、オープンループ制御完了フラグXopcmpがオープンループ制御完了を意味するONにセットされているか否かを判定し、Xopcmp=OFFであれば、以降の処理を行うことなく、本ルーチンを終了する。
【0167】
これに対し、ステップ914で、オープンループ制御完了フラグXopcmpがONにセットされていると判定されれば、ステップ915に進み、指令シフトレンジと、出力軸センサ14の出力信号Vnswから検出したレンジとが一致しているか否かを判定し、両者が一致していれば、ステップ916に進み、フェールセーフ処理実行回数カウンタCfsを0にリセットする。そして、次のステップ918で、オープンループ制御完了フラグXopcmpをOFFにセットすると共に、次のステップ919で、オープンループ制御実行フラグXopenをOFFにセットして、本ルーチンを終了する。
【0168】
また、上記ステップ915で、指令シフトレンジと出力軸センサ14の出力信号Vnswとが一致していないと判定された場合は、ステップ917に進み、フェールセーフ処理実行回数カウンタCfsの値が故障判定値(例えば3回)以上であるか否かを判定し、フェールセーフ処理実行回数カウンタCfsの値が故障判定値未満であれば、まだ故障とは判定せずに、オープンループ制御完了フラグXopcmp=OFF、オープンループ制御実行フラグXopen=OFFにセットして(ステップ918、919)、本ルーチンを終了する。
【0169】
その後、フェールセーフ処理実行回数カウンタCfsの値が故障判定値(例えば3回)以上になれば、その時点で、システムの故障(オープンループ制御でもレンジ切り換えが不可能な状態)と判断して、ステップ917からステップ920に進み、システム故障フラグXfailoffをONにセットし、次のステップ921で、全相の通電をオフして、本ルーチンを終了する。
【0170】
[オープンループ制御]
図37乃至図39に示すオープンループ制御ルーチンは、所定周期(例えば1ms周期)で起動され、特許請求の範囲でいうオープンループ制御手段としての役割を果たす。本ルーチンが起動されると、まずステップ931で、オープンループ制御実行フラグXopenがONにセットされているか否かを判定し、Xopen=OFFであれば、以降の処理を行うことなく、本ルーチンを終了する。
【0171】
これに対し、オープンループ制御実行フラグXopenがONにセットされていれば、ステップ931からステップ932に進み、時間を計測する時間カウンタTopをカウントアップし、次のステップ933で、時間カウンタTopの値が現在の通電相の励磁時間tm以上になったか否かを判定し、励磁時間tm未満であれば、以降の処理を行うことなく、本ルーチンを終了する。これにより、ステップ934以降の処理は、励磁時間tm毎に実行される。
【0172】
その後、時間カウンタTopの値が現在の通電相の励磁時間tm以上になった時点で、ステップ933からステップ934に進み、目標カウント値Acntと現在の位置カウント値Ncntopとを比較して、ロータ32の駆動方向を判定する。その結果、現在の位置カウント値Ncntopが目標カウント値Acntよりも小さい場合は、ロータ32の駆動方向がPレンジ側からNotPレンジ側への回転方向(正回転方向)と判断して、ステップ935に進み、通電相判定値Mptnopを1ずつカウントアップし、次のステップ936で、位置カウント値Ncntopを2ずつカウントアップする。これは、1回の励磁でロータ32が2カウント分(3.75°)回転するためである。
【0173】
これに対し、現在の位置カウント値Ncntopが目標カウント値Acntよりも大きい場合は、ロータ32の駆動方向がNotPレンジ側からPレンジ側への回転方向(逆回転方向)と判断して、ステップ937に進み、通電相判定値Mptnopを1ずつカウントダウンし、次のステップ938で、位置カウント値Ncntopを2ずつカウントダウンする。
【0174】
この後、ステップ939に進み、通電相判定値Mptnopを“6”で割り算した時の余りMptnop%6を算出する。ここで、“6”は、オープンループ制御で通電相を一巡させる間の通電相判定値Mptnopの増減量に相当する。
【0175】
Mptnop%6の算出後、ステップ940に進み、図40のテーブルによってMptnop%6に応じて通電相を選択し、その通電相を励磁する。本実施形態では、オープンループ制御中は、1−2相励磁方式で駆動するように通電相を選択し、更に、オープンループ制御を開始するときの最初の励磁が2相通電(WU相通電又はUV相通電又はVW相通電)、つまりMptnop%6=1又は3又は5となるように通電相判定値Mptnopの初期値が設定されている。
【0176】
この後、図38のステップ941に進み、位置偏差devを次式により算出する。
dev=|Acnt−Ncntop|/2
【0177】
上式から明らかなように、位置偏差devは、目標カウント値Acntと現在の位置カウント値Ncntopとの偏差(絶対値)の1/2である。
【0178】
そして、次のステップ942で、位置偏差devと回転速度パラメータmspdとを比較する。この回転速度パラメータmspdは、位置偏差devに応じて増減されるパラメータであり、この回転速度パラメータmspdに応じて図42のテーブルにより励磁時間tmを設定することで、ロータ32の回転速度、加速、減速を制御する。この場合、目標とする回転速度が高くなるほど、回転速度パラメータmspdが大きくなり、励磁時間tmが短い時間に設定されるようになっている。この回転速度パラメータmspdの初期値は0である。
【0179】
上記ステップ942で、位置偏差devが回転速度パラメータmspdより大きいと判定された場合は、ステップ943に進み、回転速度パラメータmspdを1だけカウントアップし、次のステップ944で、最小回転速度パラメータmspdminを0にセットする。この最小回転速度パラメータmspdminは、回転速度パラメータmspdの最小値を制限するパラメータ(下限ガード値)である。このように、位置偏差devが回転速度パラメータmspdより大きいときに、最小回転速度パラメータmspdminを0にセットすることで、オープンループ制御開始からロータ32が回転し始めるまでの期間に、励磁時間tmを最長時間(50ms)に設定できるようにしている。
【0180】
一方、上記ステップ942で、位置偏差devが回転速度パラメータmspdより小さいと判定された場合は、ステップ945に進み、回転速度パラメータmspdを1だけカウントダウンし、次のステップ946で、最小回転速度パラメータmspdminを4にセットする。これにより、ロータ32の回転が立ち上がった後は、励磁時間tmを例えば5ms以下に制限できるようにしている。
【0181】
また、上記ステップ942で、位置偏差devが回転速度パラメータmspdと一致すると判定された場合は、回転速度パラメータmspdを変化させずに、ステップ947に進み、最小回転速度パラメータmspdminを0にセットする。
【0182】
以上のようにして、回転速度パラメータmspdと最小回転速度パラメータmspdminを設定した後、ステップ948に進み、図41のテーブルを用いてバッテリ電圧(電源電圧)に応じて最大回転速度パラメータmspdmaxを設定する。この最大回転速度パラメータmspdmaxは、回転速度パラメータmspdの最大値を制限するパラメータ(上限ガード値)であり、バッテリ電圧が高くなるほど、最大回転速度パラメータmspdmaxを大きくして、ロータ32の回転速度を速くできるようにしている。
【0183】
そして、次のステップ949で、回転速度パラメータmspdを最小回転速度パラメータmspdminと最大回転速度パラメータmspdmaxとの範囲内に収めるようにガード処理する。例えば、ステップ943又は945で更新した回転速度パラメータmspdが最小回転速度パラメータmspdminよりも小さい場合は、mspd=mspdminとし、また、回転速度パラメータmspdが最大回転速度パラメータmspdmaxよりも大きい場合は、mspd=mspdmaxとし、mspdmin≦mspd≦mspdmaxの場合は、その回転速度パラメータmspdをそのまま用いる。
【0184】
この後、ステップ950に進み、図42のテーブルを用いて、回転速度パラメータmspdに応じて励磁時間tmを設定する。図42の例では、回転速度パラメータmspdが0〜3までの範囲では、励磁時間tmを最長時間(例えば50ms)に設定し、起動時にロータ32の回転位相と通電相との同期を確実にとることができるようにしている。そして、回転速度パラメータmspdが4〜9までの範囲では、回転速度パラメータmspdが大きくなるに従って、励磁時間tmを例えば5msから3msまで3段階に小さくして、ロータ32の回転速度を3段階に調整できるようになっている。尚、励磁時間tmの切り換えは、2段階以下又は4段階以上であっても良いことは言うまでもない。
【0185】
励磁時間tmの設定後、ステップ951に進み、通電フラグXonをONにセットし、次のステップ952で、時間カウンタTopをクリアして本ルーチンを終了する。
【0186】
また、図37のステップ934で、現在の位置カウント値Ncntopが目標カウント値Acntと一致すると判定された場合は、図39のステップ955に進み、時間カウンタTopの計測時間が所定時間Khld(例えば500ms)以上になったか否かを判定する。その結果、時間カウンタTopの計測時間が所定時間Khld未満と判定された場合は、ステップ956に進み、全相の通電をオフし、次のステップ957で、励磁時間tmを所定時間Khld(例えば500ms)にセットする。
【0187】
この後、図38のステップ952に進み、時間カウンタTopをクリアして本ルーチンを終了する。このような処理により、オープンループ制御終了後、所定時間Khld(例えば500ms)が経過するまで、前記図37のステップ934以降の処理が行われないため、次のオープンループ制御が開始されない。これは、オープンループ制御終了後に、ディテントバネ23の弾性力によりディテントバネ23の係合部23aがディテントレバー15の保持凹部24,25の傾斜側壁に沿ってその底部に滑り落ちるまで待つためである。
【0188】
また、図39のステップ955で、時間カウンタTopの値が所定値Khld以上になったと判定されれば、ステップ958に進み、通電相判定値Mptnop=0、回転速度パラメータmspd=0にセットし、次のステップ959で、オープンループ制御完了フラグXopcmpをONにセットする。この後、ステップ960に進み、励磁時間Tmを0にセットし、次のステップ961で、通電フラグXonをOFFにセットした後、図38のステップ952に進み、時間カウンタTopをクリアして本ルーチンを終了する。
【0189】
以上説明した本ルーチンでは、オープンループ制御中の励磁方式を1−2相励磁方式に設定し、オープンループ制御開始時の最初の励磁を2相通電で行うと共に、図27に示すように、オープンループ制御開始から例えば3ステップ分は、各通電相の励磁時間tmを最長時間(例えば50ms)に設定して、ロータ32を確実に掴んでロータ32の回転位相と通電相とを確実に同期させる。この後は、励磁時間tmを大幅に短くするが、ロータ32の回転速度の上昇に伴って励磁時間tmを徐々に短くして、ロータ32の回転速度を緩やかに上昇させる。
【0190】
このオープンループ制御中のロータ32の回転位置を推定するために、オープンループ制御開始時のロータ32の初期位置(位置カウント値Ncntopの初期値)を出力軸センサ14の出力信号に基づいて算出し、その後、通電相を切り換える毎に位置カウント値Ncntopを2ずつカウントアップ(又はカウントダウン)して、該位置カウント値Ncntopに基づいてロータ32の回転位置を推定し、該位置カウント値Ncntopと目標カウント値Acntとの偏差がある程度小さくなった段階で、減速領域に入ったと判断して、励磁時間tmを徐々に長くして、ロータ32の回転速度を緩やかに減速し、該位置カウント値Ncntopが目標カウント値Acntに到達した時点で、ロータ32が目標位置に到達したと判断して、オープンループ制御を終了する。
【0191】
尚、本ルーチンでは、励磁時間tmを回転速度パラメータmspdに応じて設定するようにしたが、駆動開始後の回転量、駆動開始後の経過時間、目標位置までの回転量、負荷トルクの少なくとも1つに基づいて励磁時間tmを設定するようにしても良い。
【0192】
また、本ルーチンでは、オープンループ制御開始時の最初の励磁を2相通電としたが、最初の励磁を1相通電としても良く、更には、オープンループ制御中の励磁方式も1−2相励磁方式に限定されず、1相励磁方式又は2相励磁方式を採用しても良い。
【0193】
[オープンループ制御時エンジントルク抑制]
図43に示すオープンループ制御時エンジントルク抑制ルーチンは、所定周期(例えば1ms周期)で起動される。本ルーチンが起動されると、まずステップ971で、オープンループ制御実行フラグXopen=ON(オープンループ制御実行中)であるか否かを判定し、Xopen=ONであれば、ステップ972に進み、エンジントルク抑制フラグXtrqをONにセットし、Xopen=OFFであれば、ステップ973に進み、エンジントルク抑制フラグXtrqをOFFにセットする。このエンジントルク抑制フラグXtrqの情報は、レンジ切換制御用のECU41からエンジン制御用のECU(図示せず)に送信される。
【0194】
エンジン制御用のECUは、オープンループ制御実行フラグXopen=ONの情報を受信したときに、エンジントルクを抑制する方向にエンジン制御パラメータを制御して、エンジントルクを抑制した状態で、オープンループ制御によるレンジ切換動作を実行する。
【0195】
この際、エンジントルクを抑制する方向に制御するエンジン制御パラメータは、空気系、燃料系、点火系のうちの少なくとも1つの制御パラメータを用いれば良く、例えば、空気系の場合は、スロットルバルブの開駆動を禁止してスロットル開度を現状維持するようにしたり、或は、運転に支障を来さない範囲内でスロットル開度を閉じるようにしても良い。また、燃料系の場合は、運転に支障を来さない範囲内で燃料噴射量を制限するようにすれば良く、点火系の場合は、運転に支障を来さない範囲内で点火時期を遅角するようにすれば良い。
【0196】
[AB相断線検出]
図44に示すAB相断線検出ルーチンは、AB相割り込み処理により起動される。本ルーチンが起動されると、まずステップ501で、オープンループ制御実行フラグXopen=ON(オープンループ制御実行中)であるか否かを判定し、オープンループ制御実行フラグXopen=ON(オープンループ制御実行中)であれば、ステップ502に進み、オープンループ制御開始時(オープンループ制御実行フラグXopenがOFFからONに切り換わった直後)であるか否かを判定する。その結果、オープンループ制御開始時と判定されれば、ステップ503に進み、オープンループ制御開始時のエンコーダカウント値Ncntと位置カウント値Ncntopとの差分をオープンループ制御開始時のカウント値ずれ量ΔNinitとして求める。
ΔNinit=Ncnt−Ncntop
【0197】
これに対して、オープンループ制御開始後(オープンループ制御中)であれば、上記ステップ502で「No」と判定されて、ステップ504に進み、オープンループ制御中のエンコーダカウント値Ncntと位置カウント値Ncntopとのずれ量ΔNerrを算出する。
ΔNerr=Ncnt−Ncntop
【0198】
この後、ステップ505に進み、オープンループ制御終了時(オープンループ制御実行フラグXopenがONからOFFに切り換わった直後)であるか否かを判定し、オープンループ制御終了時でなければ、以降の処理を行うことなく、本ルーチンを終了するが、オープンループ制御終了時であれば、ステップ506に進み、オープンループ制御終了時のカウント値ずれ量ΔNerrとオープンループ制御開始時のカウント値ずれ量ΔNinitとの偏差の絶対値|ΔNerr−ΔNinit|を判定値と比較して、エンコーダ46のA相・B相が断線しているか否かを判定する。
【0199】
例えば、オープンループ制御によってロータ32が正常に駆動された場合、エンコーダ46のA相・B相が断線していなければ、オープンループ制御終了時のカウント値ずれ量ΔNerrとオープンループ制御開始時のカウント値ずれ量ΔNinitとの偏差|ΔNerr−ΔNinit|が0になるが、A相・B相のいずれか一方又は両方が断線していれば、|ΔNerr−ΔNinit|が0にならない。従って、|ΔNerr−ΔNinit|が判定値以上であれば、エンコーダ46のA相・B相の断線ありと判断して、ステップ507に進み、AB相断線検出フラグXfailabをA相・B相の断線ありを意味するONにセットして本ルーチンを終了する。
【0200】
一方、|ΔNerr−ΔNinit|が判定値未満であれば、エンコーダ46のA相・B相の断線無しと判断して、ステップ507に進み、AB相断線検出フラグXfailabをA相・B相の断線なしを意味するOFFにセットし、次のステップ509で、AB相正常判定フラグXnormabを正常意味するONにセットして本ルーチンを終了する。
【0201】
尚、本ルーチンでは、オープンループ制御終了時のカウント値ずれ量ΔNerrとオープンループ制御開始時のカウント値ずれ量ΔNinitとの偏差の絶対値|ΔNerr−ΔNinit|を算出するようにしたが、オープンループ制御開始時から終了時までのエンコーダカウント値Ncntの変化量と位置カウント値Ncntopの変化量を算出し、両者の偏差の絶対値が判定値以上であるか否かで、エンコーダ46のA相・B相が断線しているか否かを判定するようにしても良い。これは、オープンループ制御開始時から終了時までのエンコーダカウント値Ncntの変化量と位置カウント値Ncntopの変化量との偏差の絶対値|Ncnt変化量−Ncntop変化量|は、|ΔNerr−ΔNinit|と等しくなるためである。
【0202】
尚、エンコーダ46のA相・B相の断線検出は、オープンループ制御時にしかできない。つまり、F/B制御中は、断線によりA相・B相信号が入力されなくなると、通電をホールドするため(A相・B相信号のエッジで駆動パルスを出力するため)、モータ12の停止を判定することはできるが、これがエンコーダ46の故障に起因するものかどうかを特定することはできない。
【0203】
[Z相断線検出]
図45に示すZ相断線検出ルーチンは、AB相割り込み処理により起動され、次のようにしてエンコーダ46のZ相の断線の有無を判定する。本ルーチンが起動されると、まずステップ511で、オープンループ制御実行フラグXopen=ON(オープンループ制御実行中)であるか否かを判定し、オープンループ制御実行フラグXopen=OFFであれば、ステップ512に進み、Z相断線仮検出カウンタCzngをクリアしてステップ518に進み、Z相信号出力間隔カウンタCzonをクリアする。
【0204】
また、オープンループ制御実行フラグXopen=ON(オープンループ制御実行中)であれば、ステップ513に進み、Z相信号の値が1(ハイレベル)であるか否かを判定し、Z相信号の値が1であれば、ステップ514に進み、Z相正常判定フラグXnormzを正常意味するONにセットしてステップ518に進み、Z相信号出力間隔カウンタCzonをクリアしてステップ519に進む。
【0205】
これに対し、Z相信号の値が0(ローレベル)であれば、ステップ515に進み、Z相信号の出力間隔を計測するためのZ相信号出力間隔カウンタCzonをカウントアップする。本ルーチンは、AB相割り込み処理により起動されるため、Z相信号出力間隔カウンタCzonは、エンコーダカウント値Ncntと同じく、A相信号とB相信号の立ち上がり/立ち下がりの両方のエッジに同期してカウントアップされる。
【0206】
本実施形態では、Z相信号の出力間隔(ロータ32の基準回転位置の間隔)がロータ回転角で45°であり、A相信号とB相信号のエッジ間隔が3.75°であるため、Z相信号の出力間隔をZ相信号出力間隔カウンタCzonのカウント値(エンコーダカウント値Ncnt)に換算すると、45°÷3.75°=12となる。従って、Z相信号出力間隔カウンタCzonのカウント値が12を越えてもZ相信号が出力されない場合は、Z相信号が抜けたことを意味する。
【0207】
そこで、本ルーチンでは、ステップ516で、Z相信号出力間隔カウンタCzonのカウント値が24を越えたか否かを判定することで、Z相信号が2回以上連続して出力されていないか否かを判定し、その結果、Z相信号が2回以上連続して出力されていないと判定されれば、ステップ517に進み、Z相異常仮検出カウンタCzngをカウントアップして、ステップ518に進み、Z相信号出力間隔カウンタCzonをクリアしてステップ519に進む。
上述したステップ516で、Z相信号出力間隔カウンタCzonのカウント値が24を越えていないと判定されれば、ステップ519に進む。
【0208】
このステップ519では、Z相異常仮検出カウンタCzngのカウント値が判定値(例えば3)以上であるか否かで、エンコーダ46のZ相の断線の可能性があるか否かを判定し、Z相異常仮検出カウンタCzngのカウント値が判定値未満であれば、まだ、Z相断線診断の途中であると判断して、本ルーチンを終了する。
【0209】
これに対し、Z相異常仮検出カウンタCzngのカウント値が判定値以上であれば、エンコーダ46のZ相の断線又はA相・B相信号の異常のどちらかであると判断して、ステップ520に進み、AB相正常判定フラグXnormabがONであるか否かで、エンコーダ46のA相・B相が正常であるか否かを判定する。その結果、AB相正常判定フラグXnormab=ON(A相・B相が正常)であると判定されれば、Z相の断線と判断して、ステップ521に進み、Z相異常検出フラグXfailzをZ相断線(異常)を意味するONにセットして、ステップ522に進み、Z相補正禁止フラグXzngをONにセットして、本ルーチンを終了する。
【0210】
Z相補正禁止フラグXzngがONにセットされた場合は、図22のZ相補正ルーチンによるZ相補正が禁止される。
【0211】
[Z相信号異常検出]
図46に示すZ相信号異常検出ルーチンは、Z相割り込み処理により起動され、次のようにしてエンコーダ46のZ相信号の異常の有無を判定する。本ルーチンが起動されると、まずステップ531で、前回のZ相信号から今回のZ相信号までのZ相信号出力間隔ΔNzを次式により算出する。
ΔNz=|Ncnt−Ncntold|
上式において、Ncntは今回のZ相信号出力時のエンコーダカウント値であり、Ncntoldは前回のZ相信号出力時のエンコーダカウント値である。
【0212】
そして、次のステップ532で、Z相信号出力間隔ΔNzが0又は12であるか否かを判定する。Z相信号出力間隔ΔNzが0であれば、A相・B相が断線していることを意味し、Z相信号出力間隔ΔNzが12であれば、Z相信号出力間隔ΔNzが正常であることを意味する。
【0213】
従って、上記ステップ532で、Z相信号出力間隔ΔNzが0又は12であると判定されれば、ステップ533に進み、Z相正常判定フラグXnormzを正常を意味するONにセットして、ステップ538に進み、次回のZ相信号出力間隔ΔNzを演算するために、今回のZ相信号出力時のエンコーダカウント値Ncntを前回値Ncntoldとして記憶して本ルーチンを終了する。
【0214】
一方、Z相信号出力間隔ΔNzが0又は12でない場合は、Z相信号が異常である可能性があるため、ステップ532からステップ534に進み、Z相異常仮検出カウンタCzonngをカウントアップする。そして、次のステップ535で、Z相異常仮検出カウンタCzonngのカウント値が判定値(例えば3)以上であるか否かで、エンコーダ46のZ相信号の異常の可能性があるか否かを判定し、Z相異常仮検出カウンタCzonngのカウント値が判定値未満であれば、まだ、Z相信号異常診断の途中であると判断して、ステップ538に進み、今回のZ相信号出力時のエンコーダカウント値Ncntを前回値Ncntoldとして記憶して本ルーチンを終了する。
【0215】
これに対し、Z相異常仮検出カウンタCzonngのカウント値が判定値以上であれば、エンコーダ46のZ相信号の異常であると判断して、ステップ536に進み、Z相異常検出フラグXfailzを異常を意味するONにセットして、ステップ537に進み、Z相補正禁止フラグXzngをONにセットして、図22のZ相補正ルーチンによるZ相補正を禁止する。そして、ステップ538に進み、今回のZ相信号出力時のエンコーダカウント値Ncntを前回値Ncntoldとして記憶して本ルーチンを終了する。
尚、図44〜図46の各ルーチンは、特許請求の範囲でいう異常診断手段としての役割を果たす。
【0216】
以上説明した本実施形態によれば、オープンループ制御中(フェールセーフ処理及びリカバリ処理中)に、エンコーダカウント値Ncnt(エンコーダ46のA相信号・B相信号のカウント値)と位置カウント値Ncntop(モータ駆動信号のカウント値)とを比較して、エンコーダ46のA相・B相の断線の有無を判定するようにしたので、オープンループ制御中にエンコーダ46のA相・B相の断線が検出されたときは、オープンループ制御からF/B制御への復帰を禁止することができ、無駄なF/B制御を行わずに済むと共に、オープンループ制御によってロータ32を目標位置まで回転させることができる。
【0217】
更に、本実施形態では、オープンループ制御中にZ相信号出力間隔に基づいてエンコーダ46のZ相信号の異常の有無を判定するようにしたので、Z相信号の異常が検出されときは、Z相補正を禁止することができ、誤ったZ相補正を行うことを回避することができる。
【0218】
尚、本発明に用いるエンコーダは、磁気式のエンコーダ46に限定されず、例えば、光学式のエンコーダやブラシ式のエンコーダを用いても良い。
また、本発明に用いるモータは、SRモータ12に限定されず、エンコーダの出力信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えるブラシレス型のモータであれば、SRモータ以外のブラシレス型のモータを用いても良い。
【0219】
また、本実施形態のレンジ切換装置は、PレンジとNotPレンジの2つのレンジを切り換える構成であるが、例えば、ディテントレバー15の回動動作に連動して自動変速機のレンジ切換弁とマニュアルバルブを切り換えて、自動変速機のP、R、N、D、…の各レンジを切り換えるレンジ切換装置にも本発明を適用して実施できる。
【0220】
その他、本発明は、レンジ切換装置に限定されず、SRモータ等のブラシレス型のモータを駆動源とする各種の装置に適用して実施できることは言うまでもない。
【図面の簡単な説明】
【図1】本発明の一実施形態を示すレンジ切換装置の斜視図
【図2】SRモータの構成を説明する図
【図3】SRモータを駆動する回路構成を示す回路図
【図4】レンジ切換装置の制御システム全体の構成を概略的に示す図
【図5】エンコーダのロータリマグネットの構成を説明する平面図
【図6】エンコーダの側面図
【図7】(a)はエンコーダの出力波形を示すタイムチャート、(b)は通電相切り換えパターンを示すタイムチャート
【図8】初期駆動ルーチンの処理の流れを示すフローチャート(その1)
【図9】初期駆動ルーチンの処理の流れを示すフローチャート(その2)
【図10】Pレンジ初期駆動ルーチンの処理の流れを示すフローチャート
【図11】NotPレンジ初期駆動ルーチンの処理の流れを示すフローチャート
【図12】Pレンジで初期駆動を行ったときの制御例を示すタイムチャート
【図13】初期駆動中にレンジ切換操作されたときの制御例を示すタイムチャート
【図14】初期駆動中にレンジ切換操作されたときの初期位置ずれ学習方法を説明するタイムチャート
【図15】エンコーダカウンタルーチンの処理の流れを示すフローチャート
【図16】カウントアップ値ΔN算出マップの一例を示す図
【図17】指令レンジシフト、A相信号、B相信号、エンコーダカウント値の関係を示すタイムチャート
【図18】モータF/B制御ルーチンの処理の流れを示すフローチャート
【図19】通電相設定ルーチンの処理の流れを示すフローチャート
【図20】Mptn%12から通電相への変換テーブルの一例を示す図
【図21】通電処理を説明するタイムチャート
【図22】Z相補正ルーチンの処理の流れを示すフローチャート
【図23】Z相補正を説明するタイムチャート
【図24】リカバリ処理の一例を説明するタイムチャート
【図25】エンコーダのA相信号・B相信号の異常を検出する方法を説明する図
【図26】F/B制御中のロータの逆転を検出する方法を説明する図
【図27】オープンループ制御の一例を説明するタイムチャート
【図28】リカバリ処理ルーチンの処理の流れを示すフローチャート
【図29】オープンループ制御開始時の位置カウント値Ncntの初期値を算出する方法を説明する図
【図30】F/B制御中AB相信号異常検出ルーチンの処理の流れを示すフローチャート
【図31】逆転カウンタルーチンの処理の流れを示すフローチャート
【図32】逆転判定ルーチンの処理の流れを示すフローチャート
【図33】システム異常診断ルーチンの処理の流れを示すフローチャート(その1)
【図34】システム異常診断ルーチンの処理の流れを示すフローチャート(その2)
【図35】フェールセーフ処理ルーチンの処理の流れを示すフローチャート(その1)
【図36】フェールセーフ処理ルーチンの処理の流れを示すフローチャート(その2)
【図37】オープンループ制御ルーチンの処理の流れを示すフローチャート(その1)
【図38】オープンループ制御ルーチンの処理の流れを示すフローチャート(その2)
【図39】オープンループ制御ルーチンの処理の流れを示すフローチャート(その3)
【図40】Mptnop%6から通電相への変換テーブルの一例を示す図
【図41】バッテリ電圧から最大回転速度パラメータmspdmaxを求めるテーブルの一例を示す図
【図42】回転速度パラメータmspdから励磁時間tmを求めるテーブルの一例を示す図
【図43】オープンループ制御時エンジントルク抑制ルーチンの処理の流れを示すフローチャート
【図44】AB相断線検出ルーチンの処理の流れを示すフローチャート
【図45】Z相断線検出ルーチンの処理の流れを示すフローチャート
【図46】Z相信号異常検出ルーチンの処理の流れを示すフローチャート
【符号の説明】
11…レンジ切換機構、12…SRモータ、14…出力軸センサ、15…ディテントレバー、18…パーキングロッド、20…パーキングギヤ、21…ロックレバー、23…ディテントバネ、23a…係合部、24…Pレンジ保持凹部、25…NotPレンジ保持凹部、26…減速機構、27…自動変速機、31…ステータ、32…ロータ、33,34…巻線、35,36…モータ励磁部、37,38…モータドライバ(駆動回路)、41…ECU(F/B制御手段,オープンループ制御手段,異常診断手段)、43…Pレンジスイッチ、44…NotPレンジスイッチ、46…エンコーダ、47…ロータリマグネット、48…A相信号用の磁気検出素子、49…B相信号用の磁気検出素子、50…Z相信号用の磁気検出素子。
Claims (7)
- 制御対象を回転駆動するモータのロータの回転に同期してパルス信号を出力するエンコーダと、このエンコーダのパルス信号のカウント値(以下「エンコーダカウント値」という)に基づいて前記ロータの回転位置を検出して前記モータの通電相を順次切り換えることで前記ロータを目標位置まで回転駆動するフィードバック制御(以下「F/B制御」と表記する)を実行するF/B制御手段とを備えたモータ制御装置において、
F/B制御実行条件が不成立のときに、前記F/B制御からオープンループ制御に切り換えて、前記エンコーダカウント値の情報をフィードバックせずに前記モータの駆動回路に駆動信号を出力して通電相を順次切り換えると共に、前記駆動信号をカウントしてそのカウント値に基づいて前記ロータを前記目標位置まで回転駆動するオープンループ制御手段と、
前記オープンループ制御中にカウントした前記エンコーダカウント値と前記駆動信号のカウント値とを比較して前記エンコーダの異常の有無を判定する異常診断手段と
を備えていることを特徴とするモータ制御装置。 - 前記異常診断手段は、前記エンコーダの異常を検出したときに前記オープンループ制御から前記F/B制御への復帰を禁止することを特徴とする請求項1に記載のモータ制御装置。
- 前記エンコーダは、前記ロータの回転に同期して所定の位相差を有するA相信号とB相信号を出力すると共に、該ロータの基準回転位置でZ相信号を出力し、
前記F/B制御手段は、前記F/B制御中に前記A相信号及び前記B相信号のエッジをカウントして、そのエンコーダカウント値に基づいて通電相を順次切り換えると共に、前記Z相信号に基づいて前記ロータの回転位置と通電相とのずれの有無を判定し、ずれがあれば、そのずれを補正し(以下この補正を「Z相補正」という)、
前記異常診断手段は、前記オープンループ制御中にカウントした前記エンコーダカウント値と前記駆動信号のカウント値とを比較して前記エンコーダのA相信号及びB相信号の異常の有無を判定することを特徴とする請求項1又は2に記載のモータ制御装置。 - 前記異常診断手段は、前記エンコーダのA相信号及びB相信号が正常と判断したときに、前記Z相信号の出力間隔を前記エンコーダカウント値に基づいて判定して前記Z相信号の異常の有無を判定することを特徴とする請求項3に記載のモータ制御装置。
- 前記異常診断手段は、前記Z相信号の異常を検出したときに前記Z相補正を禁止することを特徴とする請求項4に記載のモータ制御装置。
- 前記モータは、スイッチトリラクタンスモータであることを特徴とする請求項1乃至5のいずれかに記載のモータ制御装置。
- 前記制御対象は、車両のパーキングレンジと他のレンジとを切り換えるレンジ切換装置であることを特徴とする請求項1乃至6のいずれかに記載のモータ制御装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002207558A JP3849931B2 (ja) | 2002-07-16 | 2002-07-16 | モータ制御装置 |
US10/448,409 US7312595B2 (en) | 2002-07-09 | 2003-05-30 | Motor control apparatus |
DE10362132.6A DE10362132B4 (de) | 2002-07-09 | 2003-07-08 | Motorsteuerungsgerät |
DE10330809.1A DE10330809B8 (de) | 2002-07-09 | 2003-07-08 | Motorsteuerungsgerät |
US11/320,962 US7667427B2 (en) | 2002-07-09 | 2005-12-30 | Motor control apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002207558A JP3849931B2 (ja) | 2002-07-16 | 2002-07-16 | モータ制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004056856A JP2004056856A (ja) | 2004-02-19 |
JP3849931B2 true JP3849931B2 (ja) | 2006-11-22 |
Family
ID=31931972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002207558A Expired - Fee Related JP3849931B2 (ja) | 2002-07-09 | 2002-07-16 | モータ制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3849931B2 (ja) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4367620B2 (ja) | 2003-12-22 | 2009-11-18 | 株式会社デンソー | モータ駆動システムの異常診断装置 |
JP4899783B2 (ja) * | 2006-10-24 | 2012-03-21 | トヨタ自動車株式会社 | シフト切換機構の制御装置、制御方法およびその制御方法をコンピュータで実現されるプログラムならびにそのプログラムが記録された記録媒体 |
JP4936069B2 (ja) * | 2007-10-31 | 2012-05-23 | 株式会社デンソー | モータ制御装置 |
JP5355029B2 (ja) * | 2008-10-20 | 2013-11-27 | キヤノン株式会社 | 駆動装置 |
JP6044591B2 (ja) * | 2014-05-28 | 2016-12-14 | 株式会社デンソー | レンジ切換制御装置 |
JP6436048B2 (ja) * | 2015-10-12 | 2018-12-12 | 株式会社デンソー | モータ制御装置 |
JP6558291B2 (ja) | 2016-04-01 | 2019-08-14 | 株式会社デンソー | モータ制御装置 |
JP6985108B2 (ja) * | 2017-11-06 | 2021-12-22 | 株式会社デンソー | シフトレンジ制御装置 |
JP7135757B2 (ja) * | 2018-11-15 | 2022-09-13 | 株式会社デンソー | シフトレンジ制御装置 |
CN113828830A (zh) * | 2021-10-21 | 2021-12-24 | 浙江特康电子科技有限公司 | 一种电机扭力控制装置以及电动工具 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6139900A (ja) * | 1984-07-30 | 1986-02-26 | Toshiba Corp | パルスモ−タ制御回路 |
JP2685962B2 (ja) * | 1990-05-22 | 1997-12-08 | 株式会社日立製作所 | エンコーダ異常検出装置 |
JP3844167B2 (ja) * | 1998-02-27 | 2006-11-08 | 新キャタピラー三菱株式会社 | サーボ弁 |
JP2001258284A (ja) * | 2000-03-14 | 2001-09-21 | Aisin Seiki Co Ltd | 運動体制御装置及びモータ制御装置 |
JP4319324B2 (ja) * | 2000-03-28 | 2009-08-26 | 株式会社デンソー | 自動変速機のシフトレンジ切換装置 |
-
2002
- 2002-07-16 JP JP2002207558A patent/JP3849931B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2004056856A (ja) | 2004-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7667427B2 (en) | Motor control apparatus | |
US7161314B2 (en) | Motor control apparatus having current supply phase correction | |
US6992451B2 (en) | Motor control apparatus operable in fail-safe mode | |
JP5454962B2 (ja) | モータ制御装置 | |
US7990088B2 (en) | Motor control apparatus | |
JP3886042B2 (ja) | モータ制御装置 | |
US20130154537A1 (en) | Motor control apparatus | |
JP3800529B2 (ja) | モータ制御装置 | |
JP3849931B2 (ja) | モータ制御装置 | |
JP3849930B2 (ja) | モータ制御装置 | |
JP3849864B2 (ja) | モータ制御装置 | |
JP3947922B2 (ja) | モータ制御装置 | |
JP2004023890A (ja) | モータ制御装置 | |
JP4189953B2 (ja) | 位置切換制御装置 | |
JP4082164B2 (ja) | モータ制御装置 | |
JP2017161455A (ja) | 制御装置 | |
JP3888940B2 (ja) | モータ制御装置 | |
JP3871130B2 (ja) | モータ制御装置 | |
JP3849627B2 (ja) | モータ制御装置 | |
JP3888278B2 (ja) | モータ制御装置 | |
JP3800532B2 (ja) | モータ制御装置 | |
JP3849629B2 (ja) | モータ制御装置 | |
JP2004023889A (ja) | モータ制御装置 | |
JP4748611B2 (ja) | 位置切換制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040311 |
|
A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20040311 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20040311 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20040408 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041216 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060712 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060824 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060824 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3849931 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100908 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100908 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110908 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110908 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120908 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120908 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130908 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |