JP2004056857A - モータ制御装置 - Google Patents
モータ制御装置 Download PDFInfo
- Publication number
- JP2004056857A JP2004056857A JP2002207559A JP2002207559A JP2004056857A JP 2004056857 A JP2004056857 A JP 2004056857A JP 2002207559 A JP2002207559 A JP 2002207559A JP 2002207559 A JP2002207559 A JP 2002207559A JP 2004056857 A JP2004056857 A JP 2004056857A
- Authority
- JP
- Japan
- Prior art keywords
- phase
- drive
- motor
- rotor
- loop control
- 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.)
- Granted
Links
Images
Abstract
【解決手段】モータ12に、独立した2系統の駆動コイル35,36を設けると共に、各系統の駆動コイル35,36を別々に駆動する2系統のモータドライバ37,38を設け、各系統の駆動コイル35,36の断線の有無を断線検出回路60の出力に基づいて診断する。その結果、いずれかの系統の駆動コイルの断線が検出されたときに、フィードバック制御からオープンループ制御に切り換え、正常に動作する残りの系統の駆動コイルを用いて該モータドライバに駆動信号を出力して該駆動コイルの通電相を順次切り換えると共に、該駆動信号をカウントしてそのカウント値に基づいてロータを目標位置までゆっくりした速度で回転駆動する。
【選択図】 図3
Description
【発明の属する技術分野】
本発明は、エンコーダのパルス信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えることでロータを目標位置まで回転駆動するモータ制御装置に関するものである。
【0002】
【従来の技術】
近年、構造が簡単で安価なモータとして需要が増加しているスイッチトリラクタンスモータ等のブラシレス型のモータは、ロータの回転に同期してパルス信号を出力するエンコーダを搭載し、このエンコーダのパルス信号をカウントして、そのエンコーダカウント値に基づいてロータの回転位置を検出して通電相を順次切り換えることでロータを回転駆動するようにしたものがある。このようなエンコーダ付きのモータは、起動後のエンコーダカウント値に基づいてロータの回転位置を検出することができるため、フィードバック制御系(閉ループ制御系)によりロータを目標位置まで回転させる位置切換制御(位置決め制御)を行う各種の位置切換装置の駆動源として用いられている。
【0003】
【発明が解決しようとする課題】
ところで、モータの駆動コイルが断線したり、その駆動回路が故障すると、モータを正常に駆動できなくなる。そこで、フェールセーフ手段として、特開2001−271917号公報に示すように、モータのステータコアに、独立した2系統の駆動コイルを設けると共に、各系統の駆動コイルを別々に駆動する2系統の駆動回路を設け、いずれれか一方の系統の駆動コイル・駆動回路が故障したときに、故障していない片方の系統の駆動コイル・駆動回路を用いてロータの回転位置をフィードバック制御(以下「F/B制御」と表記する)するようにしたものがある。
【0004】
しかし、いずれれか一方の系統の駆動コイル・駆動回路が故障したときに、片方の駆動コイルのみでロータの回転位置をF/B制御する場合、駆動トルクが正常時の半分となるため、駆動トルクが不足して、ロータの回転位置をF/B制御できない可能性がある。かといって、片方の駆動コイルのみで正常なF/B制御を可能にする駆動トルクを確保しようとすると、大きな駆動コイルが必要となって、モータが大型化してしまうという欠点が発生する。
【0005】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、モータの駆動コイル・駆動回路が故障したときでも、ロータを目標位置まで回転させることができ、モータ制御の信頼性を向上できると共に、モータの大型化も回避することができるモータ制御装置を提供することにある。
【0006】
【課題を解決するための手段】
上記目的を達成するために、本発明の請求項1は、モータに、独立した少なくとも2系統の駆動コイルを設けると共に、各系統の駆動コイルを別々に駆動する少なくとも2系統の駆動回路を設け、各系統の駆動コイル・駆動回路を、それぞれ単独でもロータを回転駆動できるように構成し、各系統の駆動コイル・駆動回路の異常の有無を異常診断手段により診断し、その結果、いずれかの系統の駆動コイル・駆動回路の異常が検出されたときに、オープンループ制御手段によりオープンループ制御に切り換え、正常に動作する残りの系統の駆動コイル・駆動回路を用いて該駆動回路に駆動信号を出力して該駆動コイルの通電相を順次切り換えると共に、該駆動信号をカウントしてそのカウント値に基づいてロータを目標位置まで回転駆動するようにしたものである。
【0007】
このように、いずれかの系統の駆動コイル・駆動回路の異常が検出されたときに、正常に動作する残りの系統の駆動コイル・駆動回路を用いてオープンループ制御を行えば、ロータをゆっくりした速度で駆動することができる。従って、いずれかの系統の駆動コイル・駆動回路の異常が発生して駆動トルクが小さくなっても、オープンループ制御によってロータをロータをゆっくりした速度で目標位置まで回転させることができ、モータ制御の信頼性を向上できると共に、各系統の駆動コイルを大型化せずに済み、モータの大型化も回避することができる。
【0008】
この場合、請求項2のように、オープンループ制御中にモータに供給する電源電圧に応じてロータ回転速度を制限するようにすると良い。つまり、電源電圧が低下するほど、駆動トルクが低下して、オープンループ制御で対応できるロータ回転速度の限界値が低下するため、電源電圧が低くなるほど、ロータ回転速度を遅くするように制御すれば、電源電圧が低下した場合でも、オープンループ制御によってロータをゆっくりした速度で目標位置まで回転させることができる。
【0009】
また、駆動コイル・駆動回路の異常のうち、駆動コイルの断線時には、それ以外の異常よりも駆動トルクが低下する。従って、請求項3のように、駆動コイルの断線検出時にはそれ以外の異常検出時よりもロータ回転速度が遅くなるように正常に動作する残りの系統の駆動回路・駆動コイルを用いてオープンループ制御するようにしても良い。これにより、駆動トルクが小さくなる異常が発生した時でも、モータ制御の信頼性を確保することができる。
【0010】
また、請求項4のように、オープンループ制御によりモータを停止状態から駆動するときに最初の励磁を2相通電で行い、その後は、1相通電と2相通電とを交互に切り換えるようにすると良い。このように、オープンループ制御開始時に最初の励磁を2相通電で行えば、オープンループ制御開始時のロータの初期位置が最初の2相通電に対応する位置に正確に一致していなくても、その2相通電の大きなトルクが及ぶ範囲内であれば、オープンループ制御開始当初からロータの回転位置と通電相とを同期させてロータを回転駆動することができる。そして、オープンループ制御中に、1相通電と2相通電とを交互に切り換えるようにすれば、常に1相のみに通電する1相励磁方式や常に2相ずつ通電する2相励磁方式と比較して、1回の励磁当たりのロータ回転角度が1/2となるため、ロータを安定して精度良く回転させることができる。
【0011】
また、請求項5のように、オープンループ制御によりモータを停止状態から駆動するときに初めの所定回数の励磁の通電時間をその以後の励磁の通電時間よりも長い時間に設定するようにすると良い。オープンループ制御開始時にロータの初期位置と通電相とがずれていると、両者を同期させるのに数回の励磁を必要とする場合があるため、初めの所定回数の励磁の通電時間を長くすることで、その所定回数の励磁によってロータの回転位置と通電相とを確実に同期させることができる。
【0012】
また、請求項6のように、オープンループ制御中に、ロータ回転速度、駆動開始後の回転量、駆動開始後の経過時間、前記目標位置までの回転量、負荷トルクの少なくとも1つに基づいて励磁の通電時間を設定するようにすると良い。このようにすれば、オープンループ制御中のロータの加速→定速回転→減速→停止の制御を適正に行うことができる。
【0013】
また、請求項7のように、モータの出力軸の回転位置又はそれに相関する位置情報を検出する出力軸センサを設け、オープンループ制御中に通電相の切換回数のカウント値に基づいて推定したロータの回転位置が目標位置に到達した時点で該オープンループ制御を終了すると共に、出力軸センサの出力信号に基づいて該オープンループ制御によるモータ駆動が成功か失敗かを判定し、失敗であれば、再びオープンループ制御によるモータ駆動を繰り返すようにしても良い。このようにすれば、オープンループ制御によるモータ駆動の信頼性を高めることができる。
【0014】
この場合、オープンループ制御によるモータ駆動を何回も繰り返しても、それが失敗に終わるような場合は、モータやその駆動制御系が完全に故障して制御不能に陥っているものと考えられるため、請求項8のように、オープンループ制御によるモータ駆動を連続して所定回数以上失敗したときに、オープンループ制御不能と判断してモータの通電をオフするようにすると良い。このようにすれば、オープンループ制御不能と判断した後は、オープンループ制御を繰り返さずに済み、消費電力を節約することができる。
【0015】
また、請求項9のように、オープンループ制御開始時のロータの初期位置を出力軸センサの出力信号に基づいて推定し、該オープンループ制御中にロータの初期位置推定値と通電相の切換回数のカウント値とに基づいてロータの回転位置を推定するようにすると良い。このようにすれば、オープンループ制御中のロータの回転位置を比較的精度良く推定することができ、オープンループ制御によるモータ制御精度を高めることができる。
【0016】
また、請求項10のように、モータとしてスイッチトリラクタンスモータを使用するようにしても良い。スイッチトリラクタンスモータは、永久磁石が不要で構造が簡単であるため、安価であり、温度環境等に対する耐久性・信頼性も高いという利点がある。
【0017】
以上説明した請求項1〜10に係る発明は、スイッチトリラクタンスモータ等のブラシレス型のモータを駆動源とする各種の位置切換装置に適用でき、例えば、請求項11のように、車両の自動変速機のレンジを切り換えるレンジ切換機構を駆動するモータの制御装置に適用しても良い。これにより、信頼性の高いモータ駆動式のレンジ切換装置を構成することができる。
【0018】
【発明の実施の形態】
《実施形態(1)》
以下、本発明を車両のレンジ切換装置に適用した実施形態(1)を図1乃至図43に基づいて説明する。
【0019】
まず、図1に基づいてレンジ切換機構11の構成を説明する。レンジ切換機構11の駆動源となるモータ12は、例えばスイッチトリラクタンスモータにより構成され、減速機構26(図4参照)を内蔵し、その出力軸13の回転位置を検出する出力軸センサ14が設けられている。この出力軸13には、ディテントレバー15が固定されている。
【0020】
また、ディテントレバー15にはL字形のパーキングロッド18が固定され、このパーキングロッド18の先端部に設けられた円錐体19がロックレバー21に当接している。このロックレバー21は、円錐体19の位置に応じて軸22を中心にして上下動してパーキングギヤ20をロック/ロック解除するようになっている。パーキングギヤ20は、自動変速機27の出力軸に設けられ、このパーキングギヤ20がロックレバー21によってロックされると、車両の駆動輪が回り止めされた状態(パーキング状態)に保持される。
【0021】
一方、ディテントレバー15をパーキングレンジ(以下「Pレンジ」と表記する)と他のレンジ(以下「NotPレンジ」と表記する)に保持するためのディテントバネ23が支持ベース17に固定され、このディテントバネ23の先端に設けられた係合部23aがディテントレバー15のPレンジ保持凹部24に嵌まり込んだときに、ディテントレバー15がPレンジの位置に保持され、該ディテントバネ23の係合部23aがディテントレバー15のNotPレンジ保持凹部25に嵌まり込んだときに、ディテントレバー15がNotPレンジの位置に保持されるようになっている。
【0022】
Pレンジでは、パーキングロッド18がロックレバー21に接近する方向に移動して、円錐体19の太い部分がロックレバー21を押し上げてロックレバー21の凸部21aがパーキングギヤ20に嵌まり込んでパーキングギヤ20をロックした状態となり、それによって、自動変速機27の出力軸(駆動輪)がロックされた状態(パーキング状態)に保持される。
【0023】
一方、NotPレンジでは、パーキングロッド18がロックレバー21から離れる方向に移動して、円錐体19の太い部分がロックレバー21から抜け出てロックレバー21が下降し、それによって、ロックレバー21の凸部21aがパーキングギヤ20から外れてパーキングギヤ20のロックが解除され、自動変速機27の出力軸が回転可能な状態(走行可能な状態)に保持される。
【0024】
尚、前述した出力軸センサ14は、モータ12の減速機構26の出力軸13の回転角度に応じた電圧を出力する回転センサ(例えばポテンショメータ)によって構成され、その出力電圧によって現在のレンジがPレンジとNotPレンジのいずれであるかを確認できるようになっている。
【0025】
次に、図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の数は適宜変更しても良いことは言うまでもない。
【0026】
本実施形態の巻線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を構成するように結線されている。
【0027】
一方の系統の駆動コイル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’相が同時に通電される。
【0028】
これら2つの系統の駆動コイル35,36は、車両に搭載されたバッテリ(図示せず)を電源として、それぞれ別個のモータドライバ37,38(駆動回路)によって駆動される。このように、駆動コイル35,36とモータドライバ37,38をそれぞれ2系統ずつ設けることで、一方の系統が故障しても、他方の系統でSRモータ12を回転させることができるようになっている。図3に示すモータドライバ37,38の回路構成例では、各相毎にトランジスタ等のスイッチング素子39を1個ずつ設けたユニポーラ駆動方式の回路構成としているが、各相毎にスイッチング素子を2個ずつ設けたバイポーラ駆動方式の回路構成を採用しても良い。
【0029】
本実施形態では、各駆動コイル35,36の中性点を、バッテリの正極(電圧Vb)側に接続し、各駆動コイル35,36の各相の巻線33,34の一端を各モータドライバ37,38の各スイッチング素子39に接続した構成としている。各モータドライバ37,38の各スイッチング素子39のオン/オフは、ECU41のCPU41aによって制御される。
【0030】
各相の巻線33,34の断線を検出するために、各相の巻線33,34の通電ラインにそれぞれ断線検出回路60が設けられている。各相の断線検出回路60は、直流電源電圧Vcc(例えば5V)側とグラウンド側との間に2個の抵抗61,62を直列に接続すると共に、両抵抗61,62の中間接続点を各相の通電ラインに接続し、両抵抗61,62の中間接続点を信号線を介してECU41の各入力ポートに接続し、両抵抗61,62の中間接続点の電圧レベル(各相の通電ラインの電圧レベル)を各入力ポートを介して断線検出信号としてECU41に読み込むようになっている。この場合、直流電源電圧Vcc側の抵抗61の抵抗値は例えば30kΩに設定され、グラウンド側の抵抗62の抵抗値は例えば10kΩに設定されている。
【0031】
例えば、巻線33,34が正常(断線なし)の場合は、スイッチング素子39をオフすると、両抵抗61,62の中間接続点の電圧レベル(断線検出信号)が巻線33,34を介して印加されるバッテリ電圧Vbによって上昇して、断線検出信号がハイレベルとなる。そして、スイッチング素子39をオンすると、両抵抗61,62の中間接続点が該スイッチング素子39を介してグラウンド側に導通した状態となるため、断線検出信号がローレベルとなる。
【0032】
これに対し、巻線33,34が断線している場合は、スイッチング素子39をオフしても、両抵抗61,62の中間接続点には巻線33,34を介してバッテリ電圧Vbが印加されないため、断線検出信号がローレベルに維持され、ハイレベルには反転しない。
【0033】
このような関係から、ECU41のCPU41aは、各相のスイッチング素子39をオフしたときに、各相の断線検出信号がハイレベルになれば、各相の巻線33,34が正常(断線なし)と判定し、各相のスイッチング素子39をオフしたときに、各相の断線検出信号がローレベルのまま変化しなければ、各相の巻線33,34が断線していると判定する。
【0034】
図4に示すように、ECU41と各モータドライバ37,38は、レンジ切換制御装置42に搭載され、このレンジ切換制御装置42には、Pレンジへの切換操作を行うPレンジスイッチ43と、NotPレンジへの切換操作を行うNotPレンジスイッチ44の操作信号が入力される。Pレンジスイッチ43又はNotPレンジスイッチ44の操作により選択されたレンジは、インストルメントパネル(図示せず)に設けられたレンジ表示部45に表示される。尚、Pレンジスイッチ43とNotPレンジスイッチ44は、例えばモーメンタリ型スイッチにより構成されている。
【0035】
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極となっている。
【0036】
更に、ロータ32の基準回転位置に相当する位置のN極(N’)とその両側のS極(S’)がそれ以外の磁極よりも径方向の幅が広くなるように形成されている。尚、本実施形態では、SRモータ12の通電相の切り換えが一巡する間にロータ32とロータリマグネット47が一体的に45°回転することを考慮して、ロータ32の基準回転位置に相当する幅広な着磁部分(N’)が45°ピッチで形成されており、従って、ロータリマグネット47全体として、基準回転位置に相当する幅広な着磁部分(N’)が合計8個形成されている。尚、基準回転位置に相当する幅広な着磁部分(N’)は、ロータリマグネット47全体として、1個のみ形成した構成としても良い。
【0037】
このロータリマグネット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となるように配置されている。
【0038】
各磁気検出素子48,49,50の出力は、N極(N’極)と対向したときにハイレベル“1”となり、S極(S’極)と対向したときにローレベル“0”となる。尚、Z相信号用の磁気検出素子50の出力は、ロータ32の基準回転位置に相当する幅広なN’極に対向する毎にハイレベル“1”となり、それ以外の位置では、ローレベル“0”となる。
【0039】
本実施形態では、ECU41のCPU41aが後述するエンコーダカウンタルーチンによってA相信号とB相信号の立ち上がり/立ち下がりの両方のエッジをカウントして、そのエンコーダカウント値に応じてSRモータ12の通電相を切り換えることでロータ32を回転駆動する。この際、A相信号とB相信号の発生順序によってロータ32の回転方向を判定し、正回転(Pレンジ→NotPレンジの回転方向)ではエンコーダカウント値をカウントアップし、逆回転(NotPレンジ→Pレンジの回転方向)ではエンコーダカウント値をカウントダウンする。これにより、ロータ32が正回転/逆回転のいずれの方向に回転しても、エンコーダカウント値とロータ32の回転位置との対応関係が維持されるため、正回転/逆回転のいずれの回転方向でも、エンコーダカウント値によってロータ32の回転位置(回転角度)を検出して、その回転位置に対応した相の巻線33,34に通電してロータ32を回転駆動する。
【0040】
図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相信号が出力されると言う場合がある。
【0041】
ところで、エンコーダカウント値は、ECU41のRAMに記憶されるため、ECU41の電源がオフされると、エンコーダカウント値の記憶が消えてしまう。そのため、ECU41の電源投入直後のエンコーダカウント値(0)は、実際のロータ32の回転位置(通電相)に対応したものとならい。従って、エンコーダカウント値に応じて通電相を切り換えるためには、電源投入後にエンコーダカウント値と実際のロータ32の回転位置とを対応させて、エンコーダカウント値と通電相とを対応させる必要がある。
【0042】
そこで、本実施形態では、レンジ切換制御装置42のECU41によって後述する図8及び図9に示す初期駆動ルーチンを実行することで、ECU41への電源投入後の初期駆動時に、SRモータ12の通電相の切り換えを所定のタイムスケジュールで一巡させてエンコーダ46のA相信号及びB相信号のエッジをカウントし、初期駆動終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習し、その後の通常駆動時に、エンコーダカウント値と初期駆動終了時の学習結果とに基づいて通電相を決定するようにしている。
【0043】
この初期駆動時の学習は、具体的には次のようにして行われる。図12に示すように、PレンジでECU41に電源が投入されたときに初期駆動を行う場合は、例えば、W相通電→UW相通電→U相通電→UV相通電→V相通電→VW相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ32を正回転方向(Pレンジ→NotPレンジの回転方向)に駆動する。
【0044】
一方、NotPレンジでECU41に電源が投入されたときに初期駆動を行う場合は、例えば、V相通電→UV相通電→U相通電→UW相通電→W相通電→VW相通電の順序で通電相の切り換えを所定のタイムスケジュールで一巡し、ロータ32を逆回転方向(NotPレンジ→Pレンジの回転方向)に駆動する。
【0045】
この初期駆動時には、1相通電の時間T1を2相通電の時間T2よりも短くし、例えばT1=10ms、T2=100msに設定する。初期駆動中にロータ32の回転位置と通電相との同期がとれた後でも、トルクが小さい1相通電では、ロータ32が振動するため、1相通電の時間T1を短くして、できるだけ速やかに次の2相通電に切り換えることで、ロータ32の振動を速やかに停止させてエンコーダ46の出力信号を安定させるようにしている。
【0046】
このように、初期駆動時に通電相の切り換えを一巡させれば、初期駆動が終了するまでに、いずれかの通電相で必ずロータ32の回転位置と通電相とが一致して、それ以後、通電相の切り換えに同期してロータ32が回転して、このロータ32の回転に同期してエンコーダ46からA相信号及びB相信号が出力されるようになる。
【0047】
この初期駆動中に、エンコーダ46のA相信号及びB相信号の立ち上がり/立ち下がりの両方のエッジをカウントする。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ32が実際に通電相の切り換えに同期して回転した角度(回転量)が分かり、それによって、初期駆動終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係が分かる。
【0048】
図12の例では、初期駆動時に最初の通電相(W相)からロータ32が回転し、通電相の切り換え毎にロータ32が7.5°ずつ回転してエンコーダカウント値が2ずつカウントアップし、初期駆動終了時にエンコーダカウント値が12となる。
【0049】
これに対し、例えば、初めの3回の励磁(W相通電→UW相通電→U相通電)でロータ32が回転しない場合、つまり4回目以降の励磁(UV相通電→V相通電→VW相通電)でロータ32の回転位置と通電相とが同期してロータ32が3回の励磁分だけ回転する場合は、初期駆動終了時までにロータ32が7.5°×3=22.5°回転して、エンコーダカウント値が2×3=6となる。従って、初期駆動終了時のエンコーダカウント値を見れば、初期駆動が終了するまでにロータ32が実際に通電相の切り換えに同期して回転した角度(回転量)が判明する。
【0050】
初期駆動の最後の通電相は、常にVW相となるが、エンコーダカウント値は、必ずしも12になるとは限らず、例えば8、或は4である場合もある。初期駆動終了後の通常駆動時には、エンコーダカウント値に基づいて通電相が決定されるため、初期駆動によるエンコーダカウント値のずれを修正しないと、通常駆動時に正しい通電相を選択することができない。
【0051】
そこで、本実施形態では、初期駆動終了時のエンコーダカウント値を初期位置ずれ学習値として学習し、その後の通常駆動時にエンコーダカウント値を初期位置ずれ学習値で補正することで、初期駆動終了時のエンコーダカウント値と通電相(ロータ32の回転位置)とのずれを補正して、通常駆動時に正しい通電相を選択できるようにしている。
【0052】
初期駆動終了後は、図12に示すように、後述するF/B制御開始位置停止保持処理により、初期駆動終了時の通電相(VW相)と同じ相に例えば10ms通電してロータ32の位置を初期駆動終了時の位置に保持し、その後、後述するフィードバック制御(以下「F/B制御」と表記する)により、その時点のエンコーダカウント値と初期位置ずれ学習値とに基づいて通電相を切り換えてロータ32を目標位置Acntの方向へ回転させる。これにより、ロータ32の回転位置(エンコーダカウント値)が目標位置Acntから例えば0.5°以内に到達した時点で、通電相の切り換えを終了してロータ32を停止させ、その後は、後述する目標位置停止保持処理により、同じ相に通電し続けてロータ32の停止状態を保持し、この保持状態を例えば50ms継続する。この後、目標位置Acntが変化しなければ、通電を停止する。
【0053】
また、初期駆動の途中で、Pレンジスイッチ43又はNotPレンジスイッチ44が操作されてレンジ切換要求が発生した場合は、次の2相通電(2相通電の実行中にレンジ切換要求が発生したときはその2相通電)が終了してから通常駆動に移行すると共に、該2相通電終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習し、その後の通常駆動時に、エンコーダカウント値と2相通電終了時の学習結果とに基づいて通電相を決定するようにしている。
【0054】
2相通電では、トルクが大きいため、ロータ32の位置が2相通電に対応する位置から多少ずれていたとしても、ロータ32を2相通電に対応する位置まで回転させることができる。このため、初期駆動中に2相通電を1〜2回行うだけでロータ32の回転位置と通電相との同期がとれる確率は高いものと思われる。従って、初期駆動の途中でレンジ切換要求が発生したときには、次の2相通電(又は現在の2相通電)が終了してから通常駆動に移行するようにすれば、初期駆動の途中で、エンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習してから、通常駆動に速やかに移行することができる。
【0055】
例えば、図13のタイムチャートに示すように、初期駆動の2回目の励磁(UW相通電)中に、PレンジからNotPレンジへのレンジ切換要求が発生したときには、このUW相通電で初期駆動を終了して通常駆動に移行すると共に、UW相通電終了時のエンコーダカウント値とロータ32の回転位置と通電相との対応関係を学習する。本実施形態では、初期駆動の途中で通常駆動に移行する場合でも、その初期駆動を最後まで実行したと仮定して、本来の初期駆動終了時のエンコーダカウント値を推定し、その推定値を初期位置ずれ学習値とするようにしている。例えば、図13に示すように、初期駆動をW相通電とUW相通電の2回の励磁で終了する場合は、その後に予定されていた4回の励磁を行わずに初期駆動を終了するため、未終了の4回の励磁(U相通電→UV相通電→V相通電→VW相通電)を行ったものと仮定して、4回の励磁分の回転角度に相当するカウントアップ値(2×4=8)をUW相通電終了時のエンコーダカウント値に加算して初期位置ずれ学習値を求める。
【0056】
ところで、F/B制御中に、例えば、エンコーダ46のA相信号又はB相信号が何等かの原因で一時的に欠けたり、エンコーダ46の信号ラインに重畳したノイズパルスが正規のパルス信号と誤認されたり、脱調が発生したりすると、通電相(エンコーダカウント値)とロータ32の回転位相との同期が取れなくなって、ロータ32を正常に駆動できなくなってしまい、それによって、ロータ32が停止したり、逆回転することがあり、F/B制御を正常に続けられない状態になって制御不能に陥ることがある。
【0057】
そこで、本実施形態では、F/B制御中に、F/B制御状態(ロータ32の回転状態)が正常か異常かを監視し、異常が検出されれば、その時点で、F/B制御からオープンループ制御に切り換えてリカバリ処理を実行する。図22に示すリカバリ処理の実行例では、シフトレンジをPレンジからNotPレンジに切り換えるF/B制御の途中で、そのF/B制御状態が異常になって、ロータ32の異常停止又はエンコーダカウント値Ncntのカウント動作の異常停止が発生したした時点で、F/B制御からオープンループ制御に切り換えてリカバリ処理を実行する。
【0058】
オープンループ制御(リカバリ処理)中は、エンコーダカウント値Ncntの情報をフィードバックせずに通電相を順次切り換えてロータ32を回転駆動すると共に、当該オープンループ制御中に通電相を切り換える毎にオープンループ制御時の位置カウント値Ncntopをカウントアップ(又はカウントダウン)して、この位置カウント値Ncntopが目標カウント値Acntに到達した時点で、ロータ32が目標位置に到達したと判断してオープンループ制御(リカバリ処理)を終了し、F/B制御に復帰する。その結果、本実施形態では、F/B制御中に、エンコーダカウント値Ncntの異常や脱調等が発生してF/B制御状態(ロータ32の回転状態)が一時的に異常になっても、オープンループ制御によりロータ32を目標位置まで回転させることができる。
【0059】
この際、F/B制御状態の異常検出方法は、次の3つのF/B制御異常検出方法▲1▼〜▲3▼のいずれか1つ又は2つ、或は全てを用いるようにすれば良い。
【0060】
[F/B制御異常検出方法▲1▼]
図23に示すように、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制御状態)の異常の有無を判定することができる。
【0061】
[F/B制御異常検出方法▲2▼]
図23に示すように、F/B制御中に、A相信号のエッジ間隔ΔTaとB相信号のエッジ間隔ΔTbを計測して、各信号のエッジ間隔ΔTa,ΔTbが異常判定値(例えばΔTa,ΔTbの平均値の10倍)以上であるか否かで、F/B制御状態の異常の有無を監視する。
【0062】
尚、異常検出方法▲2▼として、ロータ回転速度を監視することにより、異常検出するようにしても良く、例えば、単位時間当りのエンコーダ46の出力パルス数に基づいて異常検出するようにしても良い。
【0063】
[F/B制御異常検出方法▲3▼]
図24に示すように、F/B制中に、エンコーダカウント値Ncntの変化方向からロータ32の回転方向を監視し、該ロータ32の回転方向が目標位置へ向かう回転方向から逆転したか否かでF/B制御状態(ロータ32の回転状態)の異常の有無を監視する。本実施形態では、エンコーダカウント値Ncntが目標位置と反対方向に連続して更新される回数をカウントし、そのカウント値Crが異常判定値(例えば4)以上であるか否かで、F/B制御状態(ロータ32の回転状態)の異常の有無を監視する。つまり、エンコーダカウント値Ncntが目標位置と反対方向に連続して例えば4回以上更新されたときにロータ32の逆転と判断して、逆転検出フラグXrをONに切り換える。
【0064】
更に、本実施形態では、オープンループ制御中の励磁方式を1−2相励磁方式に設定し、オープンループ制御開始時の最初の励磁を2相通電で行うと共に、図25に示すように、オープンループ制御開始から例えば3ステップ分は、各通電相の励磁時間を最長時間(例えば50ms)に設定して、ロータ32を確実に掴んでロータ32の回転位相と通電相とを確実に同期させる。この後は、励磁時間を大幅に短くするが、ロータ32の回転速度の上昇に伴って励磁時間を徐々に短くして、ロータ32の回転速度を緩やかに上昇させる。
【0065】
このオープンループ制御中のロータ32の回転位置を推定するために、オープンループ制御開始時のロータ32の初期位置(位置カウント値Ncntopの初期値)を出力軸センサ14の出力信号に基づいて算出し、その後、ECU41からモータドライバ37,38(モータ駆動回路)に駆動信号を出力して通電相を切り換える毎に、位置カウント値Ncntopをカウントアップ(又はカウントダウン)して、この位置カウント値Ncntopに基づいてロータ32の回転位置を推定し、この位置カウント値Ncntopと目標カウント値Acnt(目標位置)との差が所定値以下になった時点で、減速領域に入ったと判断して、励磁時間を徐々に長くして、ロータ32の回転速度を緩やかに減速し、該位置カウント値Ncntopが目標カウント値Acntに到達した時点で、ロータ32が目標位置に到達したと判断して、オープンループ制御を終了し、F/B制御に復帰する。
【0066】
ところで、F/B制御系が故障してF/B制御ではSRモータ12を正常に駆動できなくなった場合でも、オープンループ制御に切り換えれば、SRモータ12を正常に駆動できる可能性がある。例えば、SRモータ12の2系統の駆動コイル35,36(巻線33,34)のうちのいずれか一方の系統が断線してSRモータ12の駆動トルクが低下した場合でも、オープンループ制御に切り換えれば、SRモータ12を正常に駆動できる可能性がある。
【0067】
そこで、本実施形態では、後述する図31及び図32のシステム異常診断ルーチンによってF/B制御系の故障を検出したときに、後述する図33のフェールセーフ処理ルーチンにより、フェールセーフ処理時のオープンループ制御に切り換えてSRモータ12を駆動するようにしている。このフェールセーフ処理時のオープンループ制御は、前述したリカバリ処理時のオープンループ制御と同じである。
【0068】
但し、SRモータ12の2系統の駆動コイル35,36(巻線33,34)のうちのいずれか一方の系統が断線した場合は、断線していない片方の系統の駆動コイル35,36のみを使用してオープンループ制御を実行する。この場合、駆動コイル35,36の断線検出は、各相の断線検出回路60の抵抗61,62の中間接続点が接続されたECU41の各入力ポートの電圧レベル(断線検出信号)を読み込んで、後述する図42の駆動コイル断線検出ルーチンによって実行される。
【0069】
以上説明した本実施形態のレンジ切換制御は、レンジ切換制御装置42のECU41のCPU41aによって後述する各ルーチンに従って実行される。以下、これら各ルーチンの処理内容を説明する。
【0070】
[初期駆動]
図8及び図9に示す初期駆動ルーチンに従って実行される。本ルーチンは、ECU41への電源投入直後(イグニッションスイッチをOFF位置からACC位置へ操作した直後)に、初期駆動が終了するまで所定周期(例えば1ms周期)で実行される。
【0071】
本ルーチンが起動されると、まずステップ101で、フェールセーフ処理実行フラグXfsop=ON、又は、リカバリ処理実行フラグXrcv=ONであるか否かを判定する。ここで、フェールセーフ処理実行フラグXfsopは、エンコーダ46又はSRモータ12が故障したときに実行されるフェールセーフ処理(オープンループ制御によるレンジ切り換え)が実行されているか否かを判定するフラグであり、ONは実行されていることを意味する。また、リカバリ処理実行フラグXrcvは、一時的なF/B制御状態の異常が発生したときに一時的に実行されるリカバリ処理(オープンループ制御)が実行されているか否かを判定するフラグであり、ONは実行されていることを意味する。
【0072】
もし、上記ステップ101で、「Yes」と判定されれば、以降の処理を行うことなく、本ルーチンを終了し、「No」と判定されれば、ステップ102に進み、ECU41のイニシャル処理から出力軸センサ14の出力電圧が安定するまで待つための所定時間(例えば100ms)が経過したか否かを判定する。そして、イニシャル処理から所定時間経過した時点で、ステップ103に進み、出力軸センサ14の出力電圧を読み込んで、この出力電圧がレンジ判定値以下であるか否かで、現在のレンジがPレンジかNotPレンジかを判定し、Pレンジであれば、ステップ104に進み、レンジ判定フラグXnpをPレンジを意味する「0」にセットし、NotPレンジであれば、ステップ105に進み、レンジ判定フラグXnpをNotPレンジを意味する「1」にセットする。
【0073】
この後、ステップ106に進み、レンジ判定フラグXnp=0(Pレンジ)であるか否かを判定し、レンジ判定フラグXnp=0(Pレンジ)であれば、ステップ107に進み、図10のPレンジ初期駆動ルーチンを実行し、レンジ判定フラグXnp=1(NotPレンジ)であれば、ステップ108に進み、図11のNotPレンジ初期駆動ルーチンを実行する。
【0074】
上記ステップ107で、図10のPレンジ初期駆動ルーチンが起動されると、ステップ201〜206で、初期駆動中の励磁回数をカウントする励磁回数カウンタCASEが0〜5のいずれであるかを判定する。この励磁回数カウンタCASEは、イニシャル処理でセットされる初期値が0で、励磁を1回行う毎に1ずつカウントアップされる(図9のステップ114)。そして、励磁回数カウンタCASEの判定結果に応じて通電相と通電時間Tを次のように設定する。
【0075】
CASE=0(1回目の励磁)の場合は、ステップ207に進み、W相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=1(2回目の励磁)の場合は、ステップ208に進み、UW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0076】
CASE=2(3回目の励磁)の場合は、ステップ209に進み、U相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=3(4回目の励磁)の場合は、ステップ210に進み、UV相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0077】
CASE=4(5回目の励磁)の場合は、ステップ211に進み、V相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=5(6回目の励磁)の場合は、ステップ212に進み、VW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0078】
これにより、Pレンジで初期駆動を行う場合は、W相通電→UW相通電→U相通電→UV相通電→V相通電→VW相通電の順序で通電相の切り換えを一巡し、ロータ32を正回転方向(Pレンジ→NotPレンジの回転方向)に駆動する。この際、1相通電の時間T1を2相通電の時間T2よりも短く設定する。
【0079】
一方、ステップ108で、図11のNotPレンジ初期駆動ルーチンが起動されると、ステップ221〜226で、励磁回数カウンタCASEが0〜5のいずれであるかを判定し、その判定結果に応じて通電相と通電時間Tを次のように設定する。
【0080】
CASE=0(1回目の励磁)の場合は、ステップ227に進み、V相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=1(2回目の励磁)の場合は、ステップ228に進み、UV相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0081】
CASE=2(3回目の励磁)の場合は、ステップ229に進み、U相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=3(4回目の励磁)の場合は、ステップ230に進み、UW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0082】
CASE=4(5回目の励磁)の場合は、ステップ231に進み、W相通電を選択し、その通電時間TをT1(例えば10ms)にセットする。
CASE=5(6回目の励磁)の場合は、ステップ232に進み、VW相通電を選択し、その通電時間TをT2(例えば100ms)にセットする。
【0083】
これにより、NotPレンジで初期駆動を行う場合は、V相通電→UV相通電→U相通電→UW相通電→W相通電→VW相通電の順序で通電相の切り換えを一巡し、ロータ32を逆回転方向(NotPレンジ→Pレンジの回転方向)に駆動する。この場合も、1相通電の時間T1を2相通電の時間T2よりも短く設定する。
【0084】
以上のようにして、図10のPレンジ初期駆動ルーチン又は図11のNotPレンジ初期駆動ルーチンを実行した後、図8のステップ109に進み、初期駆動中にレンジ切換操作(Pレンジスイッチ43又はNotPレンジスイッチ44の操作)が行われたか否かを判定し、初期駆動中にレンジ切換操作が行われれば、ステップ110に進み、レンジ切換操作フラグXchgをONにセットし、レンジ切換操作が行われていなければ、ステップ111に進み、レンジ切換操作フラグXchgをOFFにセットする。
【0085】
この後、図9のステップ112に進み、現在の通電相の通電時間をカウントする通電時間カウンタCTをカウントアップし、次のステップ113で、現在の通電相の通電時間CTが前記図10又は図11のルーチンで設定した通電時間T(=T1又はT2)を越えたか否かを判定し、越えていなければ、以降の処理を行うことなく、本ルーチンを終了する。これにより、現在の通電相の通電時間CTが図10又は図11のルーチンで設定した通電時間T(=T1又はT2)を越えるまで、現在の通電相への通電が継続される。
【0086】
その後、現在の通電相の通電時間CTが図10又は図11のルーチンで設定した通電時間T(=T1又はT2)を越えた時点で、ステップ114に進み、励磁回数カウンタCASEを1だけカウントアップし、通電相を次の通電相に切り換える。そして、次のステップ115で、通電時間カウンタCTをリセットした後、ステップ116に進み、励磁回数カウンタCASEが初期駆動の終了を意味する「6」に達したか否かを判定し、もし、励磁回数カウンタCASEが「6」に達していれば、ステップ118に進み、初期駆動終了フラグXendを初期駆動の終了を意味する「ON」にセットする。
【0087】
また、励磁回数カウンタCASEが「6」に達していない場合、つまり、初期駆動の途中である場合は、ステップ117に進み、初期駆動の途中終了条件が成立しているか否かを判定する。この初期駆動の途中終了条件は、次の3つの条件▲1▼〜▲3▼によって判定される。
▲1▼レンジ判定フラグXnpが0(Pレンジ)であること
▲2▼励磁回数カウンタCASEが2又は4、つまり2相通電終了時であること
▲3▼レンジ切換操作フラグXchgがON、つまり初期駆動中にレンジ切換操作が行われたこと
【0088】
これら3つの条件▲1▼〜▲3▼のうち、1つでも満たさない条件があれば、初期駆動の途中終了条件が成立せず、初期駆動を継続する。これに対し、3つの条件▲1▼〜▲3▼を全て満たしていれば、初期駆動の途中終了条件が成立して、ステップ118に進み、初期駆動終了フラグXendを初期駆動の終了を意味する「ON」にセットする。
【0089】
この後、ステップ119に進み、レンジ判定フラグXnp=1であるか否か(NotPレンジで初期駆動を行ったか否か)を判定し、レンジ判定フラグXnp=1であれば、ステップ120に進み、初期駆動終了時のエンコーダカウント値Ncntを初期位置ずれ学習値Gcntとして記憶する。そして、次のステップ121で、エンコーダカウント値Ncntを次式によりNotPレンジを基準にした値に補正する。
Ncnt=Ncnt+288
【0090】
本実施形態では、Pレンジの保持位置を0点位置としてエンコーダカウント値Ncntをカウントアップし、NotPレンジの保持位置までロータ32が回転したときに、エンコーダカウント値Ncntが例えば288となるようになっている。従って、NotPレンジで初期駆動を行った場合は、初期駆動終了時のエンコーダカウント値Ncntに288を加算することで、エンコーダカウント値NcntをNotPレンジを基準にした値に補正する。
【0091】
一方、上記ステップ119で、レンジ判定フラグXnp=0(Pレンジで初期駆動)と判定されれば、ステップ122に進み、初期駆動終了時のエンコーダカウント値Ncntを用いて初期位置ずれ学習値Gcntを次式により算出する。
Gcnt=Ncnt+2×(6−CASE)
【0092】
この場合、初期駆動が最後まで行われれば、ステップ114の処理によりCASE=6となるため、初期駆動終了時のエンコーダカウント値Ncntがそのまま初期位置ずれ学習値Gcntとなるが、Pレンジで初期駆動を行う場合は、初期駆動の途中でレンジ切換操作が行われたときに、次の2相通電(2相通電の実行中にレンジ切換要求が発生したときはその2相通電)が終了してから通常駆動に移行するため、その初期駆動を最後まで実行したと仮定して、本来の初期駆動終了時のエンコーダカウント値Ncntを推定し、その推定値を初期位置ずれ学習値Gcntとするようにしている。2×(6−CASE)は、未終了の励磁回数分の回転角度に相当するカウントアップ値(以下「Ncnt補正量」という)である。
【0093】
図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となる。
【0094】
[エンコーダカウンタ]
次に、図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を算出する。
【0095】
ここで、A相信号とB相信号の今回値A(i) 、B(i) と、前回値A(i−1) 、B(i−1) を用いる理由は、A相信号とB相信号の発生順序によってロータ32の回転方向を判定するためであり、図17に示すように、正回転(Pレンジ→NotPレンジの回転方向)ではカウントアップ値ΔNをプラス値にしてエンコーダカウント値Ncntをカウントアップし、逆回転(NotPレンジ→Pレンジの回転方向)ではカウントアップ値ΔNをマイナス値にしてエンコーダカウント値Ncntをカウントダウンする。
【0096】
カウントアップ値ΔNの算出後、ステップ303に進み、前回のエンコーダカウント値Ncntに上記ステップ302で算出したカウントアップ値ΔNを加算して、今回のエンコーダカウント値Ncntを求める。この後、ステップ304に進み、次回のカウント処理のために、A相信号とB相信号の今回値A(i) 、B(i) をそれぞれA(i−1) 、B(i−1) として記憶して本ルーチンを終了する。
【0097】
[モータF/B制御]
次に、図18に示すモータF/B制御ルーチンの処理内容を説明する。本ルーチンは、AB相割り込み処理により実行されて特許請求の範囲でいうフィードバック制御手段としての役割を果たし、初期駆動終了後にモータF/B制御実行条件が成立しているときに、ロータ32の回転位置(エンコーダカウント値Ncnt)が目標位置Acntから例えば0.5°以内に到達するまで、エンコーダカウント値Ncntと初期位置ずれ学習値Gcntとに基づいて通電相を切り換えてロータ32を目標位置Acntの方向へ回転させる。ここで、モータF/B制御実行条件は、例えば次の▲1▼〜▲4▼の条件を全て満たしているときに成立する。
【0098】
▲1▼初期駆動終了後であること(初期駆動終了フラグXend=ON)
▲2▼フェールセーフ処理が行われていないこと(フェールセーフ処理実行フラグXfsop=OFF)
▲3▼リカバリ処理が行われていないこと(リカバリ処理実行フラグXrcv=OFF)
▲4▼初期駆動終了から所定の停止保持時間(例えば10ms)が経過していること、又は、モータ通電開始から所定の停止保持時間(例えば10ms)が経過していること
【0099】
尚、▲4▼の停止保持時間は、F/B制御開始時のロータ32の位置を確定するために設けられている。
上記▲1▼〜▲4▼の条件を全て満たしているときにモータF/B制御実行条件が成立し、F/B許可フラグXfbがONにセットされる。
【0100】
図18のモータF/B制御ルーチンが起動されると、まずステップ311で、F/B許可フラグXfbがONにセットされているか否か(モータF/B制御実行条件が成立しているか否か)を判定し、F/B許可フラグXfbがOFF(F/B制御実行条件が不成立)であれば、以降の処理を行うことなく、本ルーチンを終了する。
【0101】
これに対し、F/B許可フラグXfbがONにセットされていれば、ステップ312に進み、後述する図19の通電相設定ルーチンを実行して、現在のエンコーダカウント値Ncntと初期位置ずれ学習値Gcntとに基づいて通電相を設定し、次のステップ313で、通電処理ルーチン(図示せず)を実行して、上記ステップ312で設定した通電相に通電する。
【0102】
一方、上記ステップ312で、図19の通電相設定ルーチンが起動されると、ステップ321で、回転方向指示値Dが正回転(Pレンジ→NotPレンジの回転方向)を意味する「1」であるか否かを判定する。この回転方向指示値Dは、現在のエンコーダカウント値Ncntと目標値Acntとの大小関係によって設定される。
【0103】
この回転方向指示値D=1(正回転)であれば、ステップ322に進み、回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが減少したか否か)を判定し、逆転していなければ、ステップ323に進み、現在のエンコーダカウント値Ncnt、初期位置ずれ学習値Gcnt、正回転方向位相進み量K1、速度補正量Ksを用いて通電相判定値Mptnを次式により更新する。
Mptn=Ncnt−Gcnt+K1+Ks
【0104】
ここで、正回転方向位相進み量K1は、ロータ32を正回転させるのに必要な通電相の位相進み量(ロータ32の現在位置に対する通電相の位相進み量)であり、例えばK1=4に設定されている。
【0105】
また、速度補正量Ksは、ロータ32の回転速度に応じて設定される位相進み補正量である。低速域では、速度補正量Ksが0に設定され、高速になるに従って、速度補正量Ksが例えば1又は2に増加される。これにより、ロータ32の回転速度に適した通電相となるように通電相判定値Mptnが補正される。
【0106】
一方、上記ステップ322で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Mptnを更新しない。この場合は、逆転直前の通電相(前回の通電相)に通電され、ロータ32の逆転を抑制する方向に制動トルクが発生する。
【0107】
また、上記ステップ321で、回転方向指示値D=0(逆回転)、つまりNotPレンジ→Pレンジの回転方向と判定された場合は、ステップ324に進み、回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが増加したか否か)を判定し、逆転していなければ、ステップ325に進み、現在のエンコーダカウント値Ncnt、初期位置ずれ学習値Gcnt、逆回転方向位相進み量K2、速度補正量Ksを用いて通電相判定値Mptnを次式により更新する。
Mptn=Ncnt−Gcnt−K2−Ks
【0108】
ここで、逆回転方向位相進み量K2は、ロータ32を逆回転させるのに必要な通電相の位相進み量(ロータ32の現在位置に対する通電相の位相進み量)であり、例えばK2=3に設定されている。速度補正量Ksは正回転の場合と同じである。
【0109】
一方、上記ステップ324で、回転方向が回転方向指示に反して逆転したと判定された場合は、逆転防止のために通電相判定値Mptnを更新しない。この場合は、逆転直前の通電相(前回の通電相)に通電され、ロータ32の逆転を抑制する方向に制動トルクが発生する。
【0110】
以上のようにして、今回の通電相判定値Mptnを決定した後、ステップ326に進み、通電相判定値Mptnを“12”で割り算して、その余りMptn%12を求める。ここで、“12”は、通電相を一巡させる間のエンコーダカウント値Ncntの増減量に相当する。
【0111】
Mptn%12の算出後、ステップ327に進み、図20の変換テーブルを検索して、Mptn%12に対応する通電相を選択し、これを今回の通電相に設定する。
【0112】
図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相となる。
【0113】
一方、U相から逆回転(NotPレンジ→Pレンジ方向への回転)を開始する場合は、通電相判定値Mptnは次式により算出される。
Mptn=Ncnt−Gcnt−K2=Ncnt−Gcnt−3
U相から逆回転を開始する場合は、Mptn%12=6−3=3となり、最初の通電相はW相となる。
【0114】
このように、正回転方向位相進み量K1と逆回転方向位相進み量K2をそれぞれ4と3に設定することで、正回転方向と逆回転方向の通電相の切換パターンを対称にすることができ、正回転方向と逆回転方向のいずれの場合も、ロータ32の現在位置から2ステップ分ずらした位置の相を最初に励磁して回転を開始することができる。
【0115】
[リカバリ処理]
図26に示すリカバリ処理ルーチンは、所定周期(例えば1ms周期)で起動され、F/B制御状態が異常になったときにリカバリ処理を次のようにして実行する。本ルーチンが起動されると、まずステップ801で、リカバリ処理実行フラグXrcvがOFFであるか否かを判定し、Xrcv=OFF(リカバリ処理実行中でない)の場合は、ステップ802に進み、次の▲1▼〜▲4▼のリカバリ処理実行条件が成立しているか否かを判定する。
【0116】
▲1▼エンコーダ46のA相信号、B相信号、出力軸センサ14の出力信号が全て正常であること
▲2▼後述する図31のシステム異常診断ルーチンでセットされる各異常検出フラグXfnsw、Xfcnt、Xfrcvが全てOFF(異常なし)であること
▲3▼F/B許可フラグXfbがON(F/B制御中)であること
▲4▼後述する図28のF/B制御中AB相信号異常検出ルーチンでセットされるA相信号、B相信号に関する3つの異常検出フラグXfab、Xfta、XftbのいずれかがON(異常あり)であること、又は、後述する図30の逆転判定ルーチンでセットされる逆転検出フラグXrがON(逆転あり)であること
【0117】
これら4つの条件▲1▼〜▲4▼のうち、1つでも満たさない条件があれば、リカバリ処理実行条件が不成立となり、以降の処理を行うことなく、本ルーチンを終了する。
【0118】
これに対し、上記▲1▼〜▲4▼の条件を全て満たせば、リカバリ処理実行条件が成立し、ステップ802からステップ803に進み、リカバリ処理実行フラグXrcvをONにセットし、次のステップ804で、図27に示す関係に基づいて、現在の出力軸センサ14の出力信号Vnswを用いて現在の位置カウント値Ncntopを次式により算出する。
Ncntop=INT[{(Vnsw−Vp)/ΔV
×Kop×61/3.75−Kofp}×1/2]×2
ΔV=Vnp−Vp
【0119】
ここで、INTは[ ]内の数値を整数化する関数であり、Vpは出力軸センサ14のPレンジ出力学習値、Vnpは出力軸センサ14のNotPレンジ出力学習値、Kopはディテントレバー15の最大回転角、KofpはPレンジ側のオフセット値である。上式は、位置カウント値Ncntopを2の倍数とするように設定されている。
【0120】
ディテントレバー15の最大回転角Kopは、ディテントレバー15のPレンジ保持凹部24の側壁からNotPレンジ保持凹部25の側壁までのディテントレバー15の回転角であり、ディテントレバー15の可動範囲の設計値ΔNdとPレンジ側の遊び量ΔGpとを加算して求められる。本実施形態では、ΔNd=20.5(deg)、ΔGp=3(deg)となっている。
【0121】
上記位置カウント値Ncntopの算出式において、Kop×61/3.75はディテントレバー15の最大回転角Kopをモータ駆動ステップ数(励磁回数)に換算した値である。「61」は減速機構26の減速比であり、「3.75」は1ステップ(励磁1回当たり)のロータ32の回転角である。この位置カウント値Ncntopは、オープンループ制御開始時の位置カウント値Ncntopの初期値として用いられる。
【0122】
位置カウント値Ncntopの算出後、ステップ805に進み、リカバリ処理の実行回数をカウントするリカバリ処理実行回数カウンタCrcvをカウントアップし、次のステップ806で、オープンループ制御実行フラグXopenをONにセットして、後述する図35のオープンループ制御ルーチンによりオープンループ制御を実行する。
【0123】
リカバリ処理(オープンループ制御)の実行中は、本ルーチンが起動される毎に、ステップ801で「No」と判定されて、ステップ807に進み、オープンループ制御完了フラグXopcmpがオープンループ制御完了を意味するONにセットされているか否かを判定し、Xopcmp=OFFであれば、そのまま本ルーチンを終了し、オープンループ制御を継続する。
【0124】
その後、オープンループ制御が完了した時点で、ステップ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にセットする。
【0125】
[F/B制御中AB相信号異常検出]
図28に示す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にリセットして本ルーチンを終了する。
【0126】
これに対して、ステップ821でF/B許可フラグXfb=ON(F/B制御中)と判定された場合は、AB相信号異常判定実行条件が成立して、ステップ823に進み、A相信号カウント値NaとB相信号カウント値Nbとの偏差ΔNabを算出する。
ΔNab=|Na−Nb|
ここで、A相信号カウント値NaとB相信号カウント値Nbは、A相信号のエッジとB相信号のエッジを別々にカウントした値である。
【0127】
そして、次のステップ824で、AB相信号カウント値偏差ΔNabを異常判定値Kab(例えば3)と比較し、もし、AB相信号カウント値偏差ΔNabが異常判定値Kab以上であれば、A相信号カウント値NaとB相信号カウント値Nbのいずれかが異常であると判断して、ステップ825に進み、AB相信号異常検出フラグXfabをON(異常あり)にセットして、次のステップ826に進む。
【0128】
一方、AB相信号カウント値偏差ΔNabが異常判定値Kab未満の場合は、AB相信号異常検出フラグXfabをOFF(異常なし)に維持してステップ826に進む。
【0129】
F/B制御中にA相信号とB相信号が正常に出力されていれば、A相信号カウント値NaとB相信号カウント値Nbとの偏差ΔNabが0又は1となるため、このAB相信号カウント値偏差ΔNabが2以上になれば、いずれか一方の信号の抜けやノイズパルスの混入が考えられる(図23参照)。従って、AB相信号カウント値偏差ΔNabが異常判定値Kab以上であるか否かで、A相信号とB相信号の異常の有無を判定することができる。本実施形態では、異常判定値Kabを余裕を見て3に設定したが、2又は4以上の値に設定しても良い。
【0130】
以上のようにして、AB相信号カウント値偏差ΔNabによる異常判定処理を行った後、ステップ826に進み、A相信号のエッジ間隔ΔTaとB相信号のエッジ間隔ΔTbをカウントするカウンタをそれぞれカウントアップした後、ステップ827に進み、A相信号エッジ間隔ΔTaを異常判定値Kta(例えばΔTaの平均値の10倍の値)と比較し、もし、A相信号エッジ間隔ΔTaが異常判定値Kta以上であれば、A相信号が異常であると判断して、ステップ828に進み、A相信号異常検出フラグXftaをON(異常あり)にセットして、次のステップ829に進む。
【0131】
一方、A相信号エッジ間隔ΔTaが異常判定値Kta未満の場合は、A相信号異常検出フラグXftaをOFF(異常なし)に維持してステップ829に進む。そして、このステップ829で、B相信号エッジ間隔ΔTbを異常判定値Ktb(例えばΔTbの平均値の10倍の値)と比較し、もし、B相信号エッジ間隔ΔTbが異常判定値Ktb以上であれば、B相信号が異常であると判断して、ステップ830に進み、B相信号異常検出フラグXftbをON(異常あり)にセットして本ルーチンを終了する。
【0132】
一方、B相信号エッジ間隔ΔTbが異常判定値Ktb未満の場合は、B相信号異常検出フラグXftbをOFF(異常なし)に維持して、本ルーチンを終了する。
【0133】
各信号のエッジ間隔ΔTa,ΔTbは、ロータ回転速度に応じて変化するため、F/B制御中に、各信号のエッジ間隔ΔTa,ΔTbが長くなり過ぎる場合は、ロータ32の異常停止、異常速度低下、パルス抜けが考えられるため(図23参照)、各信号のエッジ間隔ΔTa,ΔTbが異常判定値Kta,Kta(例えばΔTa,ΔTbの平均値の10倍)以上であるか否かで、A相信号とB相信号の異常の有無を判定することができる。
【0134】
尚、各信号のエッジ間隔ΔTa,ΔTbが短くなり過ぎる場合は、ノイズパルスが正規のパルス信号と誤認されている可能性があるため、各信号のエッジ間隔ΔTa,ΔTbが所定の異常判定値以下であるか否かで、A相信号とB相信号の異常の有無を判定するようにしても良い。
【0135】
また、AB相信号カウント値偏差ΔNabによる異常判定処理(ステップ823〜825)と各信号のエッジ間隔ΔTa,ΔTbによる異常判定処理(ステップ826〜830)のいずれか一方の処理のみを行い、他方の処理を省略するようにしても良い。
【0136】
[逆転カウンタ]
図29に示す逆転カウンタルーチンは、AB相割り込み処理により実行され、ロータ32の回転方向が回転方向指示に反して連続して逆転した回数を次のようにしてカウントする。本ルーチンが起動されると、まずステップ831で、回転方向指示値Dが1(Pレンジ→NotPレンジの回転方向)、0(停止)、−1(NotPレンジ→Pレンジの回転方向)のいずれに該当するかを判定し、回転方向指示値Dが0(停止)であれば、以降の処理を行うことなく、本ルーチンを終了する。
【0137】
一方、回転方向指示値Dが1(Pレンジ→NotPレンジの回転方向)であれば、ステップ832に進み、前回のエンコーダカウント値Ncnt(i−1) と今回のエンコーダカウント値Ncnt(i) との差が1以上であるか否かで、ロータ32の回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが減少したか否か)を判定し、逆転していれば、ステップ834に進み、逆転回数をカウントする逆転カウンタCrをカウントアップし、逆転していなければ、ステップ835に進み、逆転カウンタCrを0にリセットする。
【0138】
また、回転方向指示値Dが−1(NotPレンジ→Pレンジの回転方向)であれば、ステップ833に進み、前回のエンコーダカウント値Ncnt(i−1) と今回のエンコーダカウント値Ncnt(i) との差が−1以下であるか否かで、ロータ32の回転方向が回転方向指示に反して逆転したか否か(エンコーダカウント値Ncntが増加したか否か)を判定し、逆転していれば、ステップ836に進み、逆転カウンタCrをカウントアップし、逆転していなければ、ステップ835に進み、逆転カウンタCrを0にリセットする。
【0139】
[逆転判定]
図30に示す逆転判定ルーチンは、所定周期(例えば1ms周期)で起動される。本ルーチンが起動されると、まずステップ841で、F/B許可フラグXfb=ON(F/B制御中)であるか否かを判定し、F/B許可フラグXfb=OFFであれば、ステップ844に進み、逆転検出フラグXrをOFFにセットして、本ルーチンを終了する。
【0140】
これに対して、ステップ841でF/B許可フラグXfb=ON(F/B制御中)と判定された場合は、逆転判定実行条件が成立して、ステップ842に進み、図29の逆転カウンタルーチンで求めた逆転カウント値Crが異常判定値Kr(例えば4)以上であるか否かで、ロータ32が回転方向指示に反して逆転し続けているか否かを判定し、逆転カウント値Crが異常判定値Kr以上であれば、ステップ843に進み、逆転検出フラグXrをONにセットして逆転の判定を確定し、逆転カウント値Crが異常判定値Kr未満であれば、ステップ844に進み、逆転検出フラグXrをOFFに維持する。
【0141】
[システム異常診断]
図31及び図32に示すシステム異常診断ルーチンは、所定周期(例えば8ms周期)で起動される。本ルーチンが起動されると、まずステップ851で、次の▲1▼、▲2▼の異常診断実行条件が成立しているか否かを判定する。
【0142】
▲1▼イグニッションスイッチ(図示せず)の操作によりECU41に電源が投入された後、所定時間(例えば1s)が経過していること
▲2▼リカバリ処理実行中でないこと(リカバリ処理実行フラグXrcv=OFFであること)
これら2つの条件▲1▼、▲2▼のうち、いずれか一方でも満たさない条件があれば、異常診断実行条件が不成立となり、ステップ852に進み、後述する仮異常状態継続時間カウンタCfnsw、Cfcntを0にリセットして、本ルーチンを終了する。
【0143】
これに対し、上記2つの条件▲1▼、▲2▼を両方とも満たせば、異常診断実行条件が成立し、ステップ851からステップ854に進み、出力軸センサ14が正常で、且つ、指令シフトレンジと、出力軸センサ14の出力信号Vnswから検出したレンジとが一致しているか否かを判定し、その判定結果が「Yes」であれば、ステップ856に進み、第1の仮異常状態継続時間カウンタCfnswを0にリセットする。
【0144】
これに対し、上記ステップ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(異常なし)に維持する。
【0145】
以上のようにして、出力軸センサ14の出力信号Vnswを用いて1回目の異常診断を行った後、図32のステップ859に進み、エンコーダカウント値Ncntと目標カウント値Acntとの偏差|Ncnt−Acnt|が所定値Kcnt(例えば5°相当値)よりも大きいか否かを判定し、このカウント値偏差|Ncnt−Acnt|が所定値Kcnt以下であれば、ステップ861に進み、第2の仮異常状態継続時間カウンタCfcntを0にリセットする。
【0146】
これに対し、上記ステップ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(異常なし)に維持する。
【0147】
以上のようにして、カウント値偏差|Ncnt−Acnt|を用いて2回目の異常診断を行った後、ステップ864に進み、図26のリカバリ処理ルーチンのステップ805でカウントされるリカバリ処理実行回数Crcvが異常判定値Kcrv(例えば3回)以上であるか否かを判定し、リカバリ処理実行回数Crcvが異常判定値Kcrv以上であれば、ステップ865に進み、システムの異常ありと判断して、ステップ865に進み、第3の異常検出フラグXfrcvをONにセットして本ルーチンを終了する。つまり、リカバリ処理が連続して異常判定値Kcrv(例えば3回)以上も繰り返される場合は、F/B制御系が正常に機能しない状態になっているため、システムの異常ありと判断するものである。
【0148】
一方、リカバリ処理実行回数Crcvが異常判定値Kcrv未満であれば、第3の異常検出フラグXfrcvをOFF(異常なし)に維持して本ルーチンを終了する。
【0149】
[フェールセーフ処理]
図33及び図34に示すフェールセーフ処理ルーチンは、所定周期(例えば8ms周期)で起動される。本ルーチンが起動されると、まずステップ901で、次の▲1▼、▲2▼のフェールセーフ処理実行条件が成立しているか否かを判定する。
▲1▼オープンループ制御によるレンジ切り換えが可能な状態であること(システム故障フラグXfailoff=OFFであること)
▲2▼図31及び図32のシステム異常診断ルーチンでセットされる3つの異常検出フラグXfnsw、Xfcnt、Xfrcvのうちの少なくとも1つがON(異常あり)であること、又は、後述する図43の駆動コイル断線検出ルーチンで駆動コイル35又は36の断線が検出されていること
【0150】
これら2つの条件▲1▼、▲2▼のうち、いずれか一方でも満たさない条件があれば、フェールセーフ処理実行条件が不成立となり、以降の処理を行うことなく、本ルーチンを終了する。
【0151】
これに対し、上記2つの条件▲1▼、▲2▼を両方とも満たせば、フェールセーフ処理実行条件が成立し、ステップ901からステップ902に進み、フェールセーフ処理実行フラグXfsopをONにセットし、次のステップ903で、警告ランプを点灯したり、或は、メータパネルの情報表示部等に警告表示して、運転者に警告する。
【0152】
この後、ステップ904に進み、前回のフェールセーフ処理終了後の経過時間を計測するフェールセーフ処理間隔カウンタCfsopの値が所定値Kfsop未満であるか否かを判定する。ここで、所定値Kfsopは、前回のフェールセーフ処理終了後にディテントバネ23の弾性力によってディテントバネ23の係合部23aがディテントレバー15の保持凹部24,25の傾斜側壁に沿ってその底部に滑り落ちるのに要する時間よりもある程度長い時間(例えば500ms)に設定されている。
【0153】
フェールセーフ処理間隔カウンタCfsopの値(前回のフェールセーフ処理終了後の経過時間)が所定値Kfsop未満であれば、ステップ905に進み、フェールセーフ処理間隔カウンタCfsopをカウントアップして前回のフェールセーフ処理終了後の経過時間をカウントする。この後、ステップ906に進み、全相の通電をオフした状態を継続し、次のステップ907で、通電フラグXonを通電オフを意味するOFFにセットして本ルーチンを終了する。これにより、前回のフェールセーフ処理終了後の経過時間が所定値Kfsopを越えるまでは、全相の通電をオフした状態に維持される。
【0154】
その後、フェールセーフ処理間隔カウンタCfsopの値(前回のフェールセーフ処理終了後の経過時間)が所定値Kfsop以上になった時点で、ステップ904からステップ908に進み、オープンループ制御実行フラグXopenがOFFであるか否かを判定し、OFFであれば、ステップ909に進み、指令シフトレンジsftが切り換えられたか否かを判定する。その結果、指令シフトレンジsftが切り換えられていないと判定されれば、ステップ910に進み、全相の通電をオフした状態を継続する。
【0155】
これに対して、上記ステップ909で、指令シフトレンジsftが切り換えられたと判定されれば、ステップ911に進み、前記図26のリカバリ処理ルーチンのステップ804と同じ方法で、現在の出力軸センサ14の出力信号Vnswを用いて現在の位置カウント値Ncntopを算出する。この位置カウント値Ncntopは、オープンループ制御開始時の位置カウント値Ncntopの初期値として用いられる。
【0156】
この後、ステップ912に進み、オープンループ制御実行フラグXopenをONにセットして、後述する図35のオープンループ制御ルーチンによりオープンループ制御を実行し、次のステップ913で、フェールセーフ処理の実行回数をカウントするフェールセーフ処理実行回数カウンタCfsをカウントアップして、本ルーチンを終了する。
【0157】
また、前記ステップ908で、オープンループ制御実行フラグXopenがONであると判定されれば、図34のステップ914に進み、オープンループ制御完了フラグXopcmpがオープンループ制御完了を意味するONにセットされているか否かを判定し、Xopcmp=OFFであれば、以降の処理を行うことなく、本ルーチンを終了する。
【0158】
これに対し、ステップ914で、オープンループ制御完了フラグXopcmpがONにセットされていると判定されれば、ステップ915に進み、指令シフトレンジと、出力軸センサ14の出力信号Vnswから検出したレンジとが一致しているか否かを判定し、両者が一致していれば、ステップ916に進み、フェールセーフ処理実行回数カウンタCfsを0にリセットする。そして、次のステップ918で、オープンループ制御完了フラグXopcmpをOFFにセットすると共に、次のステップ919で、オープンループ制御実行フラグXopenをOFFにセットして、本ルーチンを終了する。
【0159】
また、上記ステップ915で、指令シフトレンジと出力軸センサ14の出力信号Vnswとが一致していないと判定された場合は、ステップ917に進み、フェールセーフ処理実行回数カウンタCfsの値が故障判定値(例えば3回)以上であるか否かを判定し、フェールセーフ処理実行回数カウンタCfsの値が故障判定値未満であれば、まだ故障とは判定せずに、オープンループ制御完了フラグXopcmp=OFF、オープンループ制御実行フラグXopen=OFFにセットして(ステップ918、919)、本ルーチンを終了する。
【0160】
その後、フェールセーフ処理実行回数カウンタCfsの値が故障判定値(例えば3回)以上になれば、その時点で、システムの故障(オープンループ制御でもレンジ切り換えが不可能な状態)と判断して、ステップ917からステップ920に進み、システム故障フラグXfailoffをONにセットし、次のステップ921で、全相の通電をオフして、本ルーチンを終了する。
【0161】
[オープンループ制御]
図35乃至図37に示すオープンループ制御ルーチンは、所定周期(例えば1ms周期)で起動され、特許請求の範囲でいうオープンループ制御手段としての役割を果たす。本ルーチンが起動されると、まずステップ931で、オープンループ制御実行フラグXopenがONにセットされているか否かを判定し、Xopen=OFFであれば、以降の処理を行うことなく、本ルーチンを終了する。
【0162】
これに対し、オープンループ制御実行フラグXopenがONにセットされていれば、ステップ931からステップ932に進み、時間を計測する時間カウンタTopをカウントアップし、次のステップ933で、時間カウンタTopの値が現在の通電相の励磁時間tm以上になったか否かを判定し、励磁時間tm未満であれば、以降の処理を行うことなく、本ルーチンを終了する。これにより、ステップ934以降の処理は、励磁時間tm毎に実行される。
【0163】
その後、時間カウンタTopの値が現在の通電相の励磁時間tm以上になった時点で、ステップ933からステップ934に進み、目標カウント値Acntと現在の位置カウント値Ncntopとを比較して、ロータ32の駆動方向を判定する。その結果、現在の位置カウント値Ncntopが目標カウント値Acntよりも小さい場合は、ロータ32の駆動方向がPレンジ側からNotPレンジ側への回転方向(正回転方向)と判断して、ステップ935に進み、通電相判定値Mptnopを1ずつカウントアップし、次のステップ936で、位置カウント値Ncntopを2ずつカウントアップする。これは、1回の励磁でロータ32が2カウント分(3.75°)回転するためである。
【0164】
これに対し、現在の位置カウント値Ncntopが目標カウント値Acntよりも大きい場合は、ロータ32の駆動方向がNotPレンジ側からPレンジ側への回転方向(逆回転方向)と判断して、ステップ937に進み、通電相判定値Mptnopを1ずつカウントダウンし、次のステップ938で、位置カウント値Ncntopを2ずつカウントダウンする。
【0165】
この後、ステップ939に進み、通電相判定値Mptnopを“6”で割り算した時の余りMptnop%6を算出する。ここで、“6”は、オープンループ制御で通電相を一巡させる間の通電相判定値Mptnopの増減量に相当する。
【0166】
Mptnop%6の算出後、ステップ940に進み、図38のテーブルによってMptnop%6に応じて通電相を選択する。本実施形態では、オープンループ制御中は、1−2相励磁方式で駆動するように通電相を選択し、更に、オープンループ制御を開始するときの最初の励磁が2相通電(WU相通電又はUV相通電又はVW相通電)、つまりMptnop%6=1又は3又は5となるように通電相判定値Mptnopの初期値が設定されている。
【0167】
この後、ステップ980に進み、後述する図43の通電処理ルーチンを実行して、ステップ940で選択した通電相に通電する。この際、後述する図42の駆動コイル断線検出ルーチンによって、SRモータ12の2系統の駆動コイル35,36のうちのいずれか一方の系統の断線が検出されている場合は、断線していない片方の系統の駆動コイル35,36のみに通電し、両方の系統の断線が検出されている場合は、SRモータ12の通電をオフする。
【0168】
この後、図36のステップ941に進み、位置偏差devを次式により算出する。
dev=|Acnt−Ncntop|/2
上式から明らかなように、位置偏差devは、目標カウント値Acntと現在の位置カウント値Ncntopとの偏差(絶対値)の1/2である。
【0169】
そして、次のステップ942で、位置偏差devと回転速度パラメータmspdとを比較する。この回転速度パラメータmspdは、位置偏差devに応じて増減されるパラメータであり、この回転速度パラメータmspdに応じて図40のテーブルにより励磁時間tmを設定することで、ロータ32の回転速度、加速、減速を制御する。この場合、目標とする回転速度が高くなるほど、回転速度パラメータmspdが大きくなり、励磁時間tmが短い時間に設定されるようになっている。この回転速度パラメータmspdの初期値は0である。
【0170】
上記ステップ942で、位置偏差devが回転速度パラメータmspdより大きいと判定された場合は、ステップ943に進み、回転速度パラメータmspdを1だけカウントアップし、次のステップ944で、最小回転速度パラメータmspdminを0にセットする。この最小回転速度パラメータmspdminは、回転速度パラメータmspdの最小値を制限するパラメータ(下限ガード値)である。このように、位置偏差devが回転速度パラメータmspdより大きいときに、最小回転速度パラメータmspdminを0にセットすることで、オープンループ制御開始からロータ32が回転し始めるまでの期間に、励磁時間tmを最長時間(50ms)に設定できるようにしている。
【0171】
一方、上記ステップ942で、位置偏差devが回転速度パラメータmspdより小さいと判定された場合は、ステップ945に進み、回転速度パラメータmspdを1だけカウントダウンし、次のステップ946で、最小回転速度パラメータmspdminを4にセットする。これにより、ロータ32の回転が立ち上がった後は、励磁時間tmを例えば5ms以下に制限できるようにしている。
【0172】
また、上記ステップ942で、位置偏差devが回転速度パラメータmspdと一致すると判定された場合は、回転速度パラメータmspdを変化させずに、ステップ947に進み、最小回転速度パラメータmspdminを0にセットする。
【0173】
以上のようにして、回転速度パラメータmspdと最小回転速度パラメータmspdminを設定した後、ステップ948に進み、図39のテーブルを用いてバッテリ電圧(電源電圧)と駆動コイル35,36の断線の有無に応じて最大回転速度パラメータmspdmaxを設定する。この最大回転速度パラメータmspdmaxは、回転速度パラメータmspdの最大値を制限するパラメータ(上限ガード値)であり、バッテリ電圧が高くなるほど、最大回転速度パラメータmspdmaxを大きくして、ロータ32の回転速度を速くできるようにしている。また、2系統の駆動コイル35,36のうちの片方の系統が断線した場合は、駆動トルクが半減するため、最大回転速度パラメータmspdmaxを小さい値(正常時のmspdmaxのほぼ1/2の値)に設定して、ロータ32の回転速度を低速度に制限するようにしている。
【0174】
そして、次のステップ949で、回転速度パラメータmspdを最小回転速度パラメータmspdminと最大回転速度パラメータmspdmaxとの範囲内に収めるようにガード処理する。例えば、ステップ943又は945で更新した回転速度パラメータmspdが最小回転速度パラメータmspdminよりも小さい場合は、mspd=mspdminとし、また、回転速度パラメータmspdが最大回転速度パラメータmspdmaxよりも大きい場合は、mspd=mspdmaxとし、mspdmin≦mspd≦mspdmaxの場合は、その回転速度パラメータmspdをそのまま用いる。
【0175】
この後、ステップ950に進み、図40のテーブルを用いて、回転速度パラメータmspdに応じて励磁時間tmを設定する。図40の例では、回転速度パラメータmspdが0〜3までの範囲では、励磁時間tmを最長時間(例えば50ms)に設定し、起動時にロータ32の回転位相と通電相との同期を確実にとることができるようにしている。そして、回転速度パラメータmspdが4〜9までの範囲では、回転速度パラメータmspdが大きくなるに従って、励磁時間tmを例えば5msから3msまで3段階に小さくして、ロータ32の回転速度を3段階に調整できるようになっている。尚、励磁時間tmの切り換えは、2段階以下又は4段階以上であっても良いことは言うまでもない。
【0176】
励磁時間tmの設定後、ステップ951に進み、通電フラグXonをONにセットし、次のステップ952で、時間カウンタTopをクリアして本ルーチンを終了する。
【0177】
また、図35のステップ934で、現在の位置カウント値Ncntopが目標カウント値Acntと一致すると判定された場合は、図37のステップ955に進み、時間カウンタTopの計測時間が所定時間Khld(例えば500ms)以上になったか否かを判定する。その結果、時間カウンタTopの計測時間が所定時間Khld未満と判定された場合は、ステップ956に進み、全相の通電をオフし、次のステップ957で、励磁時間tmを所定時間Khld(例えば500ms)にセットする。
【0178】
この後、図36のステップ952に進み、時間カウンタTopをクリアして本ルーチンを終了する。このような処理により、オープンループ制御終了後、所定時間Khld(例えば500ms)が経過するまで、前記図35のステップ934以降の処理が行われないため、次のオープンループ制御が開始されない。これは、オープンループ制御終了後に、ディテントバネ23の弾性力によりディテントバネ23の係合部23aがディテントレバー15の保持凹部24,25の傾斜側壁に沿ってその底部に滑り落ちるまで待つためである。
【0179】
また、図37のステップ955で、時間カウンタTopの値が所定値Khld以上になったと判定されれば、ステップ958に進み、通電相判定値Mptnop=0、回転速度パラメータmspd=0にセットし、次のステップ959で、オープンループ制御完了フラグXopcmpをONにセットする。この後、ステップ960に進み、励磁時間Tmを0にセットし、次のステップ961で、通電フラグXonをOFFにセットした後、図36のステップ952に進み、時間カウンタTopをクリアして本ルーチンを終了する。
【0180】
以上説明した本ルーチンでは、オープンループ制御中の励磁方式を1−2相励磁方式に設定し、オープンループ制御開始時の最初の励磁を2相通電で行うと共に、図25に示すように、オープンループ制御開始から例えば3ステップ分は、各通電相の励磁時間tmを最長時間(例えば50ms)に設定して、ロータ32を確実に掴んでロータ32の回転位相と通電相とを確実に同期させる。この後は、励磁時間tmを大幅に短くするが、ロータ32の回転速度の上昇に伴って励磁時間tmを徐々に短くして、ロータ32の回転速度を緩やかに上昇させる。
【0181】
このオープンループ制御中のロータ32の回転位置を推定するために、オープンループ制御開始時のロータ32の初期位置(位置カウント値Ncntopの初期値)を出力軸センサ14の出力信号に基づいて算出し、その後、通電相を切り換える毎に位置カウント値Ncntopを2ずつカウントアップ(又はカウントダウン)して、該位置カウント値Ncntopに基づいてロータ32の回転位置を推定し、該位置カウント値Ncntopと目標カウント値Acntとの偏差がある程度小さくなった段階で、減速領域に入ったと判断して、励磁時間tmを徐々に長くして、ロータ32の回転速度を緩やかに減速し、該位置カウント値Ncntopが目標カウント値Acntに到達した時点で、ロータ32が目標位置に到達したと判断して、オープンループ制御を終了する。
【0182】
尚、本ルーチンでは、励磁時間tmを回転速度パラメータmspdに応じて設定するようにしたが、駆動開始後の回転量、駆動開始後の経過時間、目標位置までの回転量、負荷トルクの少なくとも1つに基づいて励磁時間tmを設定するようにしても良い。
【0183】
また、本ルーチンでは、オープンループ制御開始時の最初の励磁を2相通電としたが、最初の励磁を1相通電としても良く、更には、オープンループ制御中の励磁方式も1−2相励磁方式に限定されず、1相励磁方式又は2相励磁方式を採用しても良い。
【0184】
[オープンループ制御時エンジントルク抑制]
図41に示すオープンループ制御時エンジントルク抑制ルーチンは、所定周期(例えば1ms周期)で起動される。本ルーチンが起動されると、まずステップ971で、オープンループ制御実行フラグXopen=ON(オープンループ制御実行中)であるか否かを判定し、Xopen=ONであれば、ステップ972に進み、エンジントルク抑制フラグXtrqをONにセットし、Xopen=OFFであれば、ステップ973に進み、エンジントルク抑制フラグXtrqをOFFにセットする。このエンジントルク抑制フラグXtrqの情報は、レンジ切換制御用のECU41からエンジン制御用のECU(図示せず)に送信される。
【0185】
エンジン制御用のECUは、オープンループ制御実行フラグXopen=ONの情報を受信したときに、エンジントルクを抑制する方向にエンジン制御パラメータを制御して、エンジントルクを抑制した状態で、オープンループ制御によるレンジ切換動作を実行する。
【0186】
この際、エンジントルクを抑制する方向に制御するエンジン制御パラメータは、空気系、燃料系、点火系のうちの少なくとも1つの制御パラメータを用いれば良く、例えば、空気系の場合は、スロットルバルブの開駆動を禁止してスロットル開度を現状維持するようにしたり、或は、運転に支障を来さない範囲内でスロットル開度を閉じるようにしても良い。また、燃料系の場合は、運転に支障を来さない範囲内で燃料噴射量を制限するようにすれば良く、点火系の場合は、運転に支障を来さない範囲内で点火時期を遅角するようにすれば良い。
【0187】
[駆動コイル断線検出]
図42に示す駆動コイル断線検出ルーチンは、所定周期(例えば1ms周期)で起動され、特許請求の範囲でいう異常診断手段としての役割を果たす。本ルーチンでは、次のような方法で駆動コイル35,36の巻線33,34の断線を検出する。
【0188】
図3に示すように、各相の巻線33,34の通電ラインにそれぞれ断線検出回路60を設け、各相の断線検出回路60の両抵抗61,62の中間接続点の電圧レベル(各相の通電ラインの電圧レベル)をECU41の各入力ポートを介してECU41に読み込む。そして、駆動コイル35,36の巻線33,34が正常(断線なし)の場合は、モータドライバ37,38のスイッチング素子39をオフすると、両抵抗61,62の中間接続点の電圧レベルが巻線33,34を介して印加されるバッテリ電圧Vbによって上昇して、ECU41の入力ポートの電圧レベル(以下「ポートレベル」という)がハイレベルとなる。その後、スイッチング素子39をオンすると、両抵抗61,62の中間接続点が該スイッチング素子39を介してグラウンド側に導通した状態となるため、ECU41のポートレベルがローレベルとなる。
【0189】
これに対し、駆動コイル35,36の巻線33,34が断線している場合は、スイッチング素子39をオフしても、両抵抗61,62の中間接続点には巻線33,34を介してバッテリ電圧Vbが印加されないため、ECU41のポートレベルがローレベルに維持され、ハイレベルには反転しない。
【0190】
このような関係から、ECU41のCPU41aは、全相のスイッチング素子39をオフして駆動コイル35,36への通電をオフしているときに、各相のポートレベルがローレベルであるか否かで、各相の巻線33,34が断線しているか否かを判定する。
【0191】
図42の駆動コイル断線検出ルーチンが起動されると、まずステップ501で、全相が通電オフか否かを判定し、通電オフでなければ、以降の処理を行うことなく、本ルーチンを終了する。その後、全相が通電オフの状態となれば、ステップ502〜504で、U相、V相、W相の各ポートレベルがハイレベルであるか否かで、第1系統の駆動コイル36のU相、V相、W相の各巻線33が正常(断線なし)であるか否かを判定し、もし、U相、V相、W相のポートレベルのいずれか1つでもローレベルになっていれば、ローレベルになっている相の巻線33が断線していると判断して、ステップ506に進み、第1系統の駆動コイル36の断線と判定し、ステップ507以降の第2系統の駆動コイル37の断線検出処理に進む。
【0192】
これに対し、U相、V相、W相の各ポートレベルが全てハイレベルの場合(ステップ502〜504の判定が全て「Yes」の場合)は、ステップ505に進み、第1系統の駆動コイル36が正常(断線なし)と判定し、ステップ507以降の第2系統の駆動コイル37の断線検出処理に進む。
【0193】
この第2系統の駆動コイル37の断線検出処理も上記と同じであり、まずステップ507〜509で、U’相、V’相、W’相の各ポートレベルがハイレベルであるか否かで、第2系統の駆動コイル37のU’相、V’相、W’相の各巻線34が正常(断線なし)であるか否かを判定し、もし、U’相、V’相、W’相のポートレベルのいずれか1つでもローレベルになっていれば、ローレベルになっている相の巻線34が断線していると判断して、ステップ511に進み、第2系統の駆動コイル37の断線と判定し、本ルーチンを終了する。
【0194】
これに対し、U’相、V’相、W’相の各ポートレベルが全てハイレベルの場合(ステップ507〜509の判定が全て「Yes」の場合)は、ステップ510に進み、第2系統の駆動コイル37が正常(断線なし)と判定し、本ルーチンを終了する。
【0195】
以上説明した本ルーチンで、いずれか一方の系統の駆動コイル35又は36の断線が検出された場合は、図33のフェールセーフ処理ルーチンのステップ901で、フェールセーフ処理実行条件が成立し、警告表示が行われると共に、オープンループ制御実行フラグXopenがONにセットされてオープンループ制御が実行される。
【0196】
[通電処理]
図43に示す通電処理ルーチンは、図35のオープンループ制御ルーチンのステップ980で実行されるサブルーチンである。本ルーチンが起動されると、まずステップ981〜983で、第1系統の駆動コイル36(U相、V相、W相)と第2系統の駆動コイル37(U’相、V’相、W’相)のいずれか一方又は両方で断線が検出されているか否かを判定し、両方の系統の駆動コイル36,37が正常(断線なし)であれば、ステップ987に進み、両方の系統の駆動コイル36,37に通電する。
【0197】
一方、第1系統の駆動コイル36(U相、V相、W相)のみが断線と判定されれば、ステップ984に進み、第2系統の駆動コイル37(U’相、V’相、W’相)のみに通電し、反対に、第2系統の駆動コイル37(U’相、V’相、W’相)のみが断線と判定されれば、ステップ986に進み、第1系統の駆動コイル36(U相、V相、W相)のみに通電する。
【0198】
また、両方の系統の駆動コイル36,37が共に断線していると判定されれば、ステップ985に進み、両方の系統の駆動コイル36,37の通電を共にオフする。
【0199】
以上説明した本実施形態(1)によれば、SRモータ12の2系統の駆動コイル35,36(巻線33,34)のうちのいずれか一方の系統が断線した場合は、断線していない片方の系統の駆動コイル35,36のみを使用してオープンループ制御を実行するようにしたので、ロータ32をゆっくりした速度で駆動することができる。従って、いずれかの系統の駆動コイル35,36の断線が発生して駆動トルクが小さくなっても、オープンループ制御によってロータ32を目標位置まで回転させることができ、モータ制御の信頼性を向上できると共に、各系統の駆動コイル35,36を大型化せずに済み、SRモータ12の大型化も回避することができる。
【0200】
しかも、本実施形態(1)では、図39のテーブルを用いてバッテリ電圧と駆動コイル35,36の断線の有無に応じて最大回転速度パラメータmspdmaxを設定し、バッテリ電圧と駆動コイル35,36の断線の有無に応じてロータ32の回転速度を制限するようにしたので、バッテリ電圧が低下しているときにいずれかの系統の駆動コイル35,36の断線が発生した場合でも、オープンループ制御によってロータ32をゆっくりした速度で目標位置まで回転させることができる。
【0201】
《実施形態(2)》
上記実施形態(1)では、各相の通電ラインの電圧レベル(各相の断線検出回路60の両抵抗61,62の中間接続点の電圧レベル)を検出することで、駆動コイル35,36の巻線33,34が断線しているか否かを判定するようにしたが、図44及び図45に示す本発明の実施形態(2)では、各相の通電ラインに流れる励磁電流を電流センサ63で検出することで、駆動コイル35,36の巻線33,34が断線しているか否かを判定するようにしている。以下、前記実施形態(1)と異なる部分についてのみ説明する。
【0202】
本実施形態(2)では、図44に示すように、各駆動コイル35,36の中性点をバッテリ40の負極側に接続し、各駆動コイル35,36の各相の巻線33,34の一端を各モータドライバ37,38の各スイッチング素子39を介してバッテリ40の正極側に接続し、ECU41によって各モータドライバ37,38の各スイッチング素子39をオン/オフすることで、各系統の駆動コイル35,36の各相の通電をオン/オフするようになっている。
【0203】
各系統の駆動コイル35,36の各相の通電ラインには、それぞれ電流センサ63が設けられ、各相の電流センサ63の出力信号がECU41の各入力ポートに入力されるようになっている。
【0204】
各系統の駆動コイル35,36の巻線33,34が正常(断線なし)の場合は、スイッチング素子39がオンされた通電相の電流センサ63で励磁電流が検出されるが、巻線33,34が断線している場合は、スイッチング素子39をオンしても、その相の巻線33,34には励磁電流が流れないため、その相の電流センサ63で励磁電流が検出されない。
【0205】
このような関係から、ECU41は、各相のスイッチング素子39をオンしたときに、各相の電流センサ63で励磁電流が検出されれば、各相の巻線33,34が断線していないと判断し、各相のスイッチング素子39をオンしても、各相の電流センサ63で励磁電流が検出されなければ、各相の巻線33,34が断線していると判断する。
【0206】
以上説明した本実施形態(2)の駆動コイル35,36の断線検出は、図45の駆動コイル断線検出ルーチンによって実行される。本ルーチンは、所定周期(例えば1ms周期)で起動され、特許請求の範囲でいう異常診断手段としての役割を果たす。本ルーチンが起動されると、まずステップ521で、U相、U’相の通電中(U相、U’相のスイッチング素子39のオン中)であるか否かを判定し、U相、U’相の通電中であれば、ステップ523、524で、U相、U’相の電流センサ63で励磁電流が検出されたか否かを判定する。その結果、U相の励磁電流が検出されなければ、第1系統の駆動コイル36のU相断線と判定し(ステップ524)、U’相の励磁電流が検出されなければ、第2系統の駆動コイル37のU’相断線と判定する(ステップ526)。
【0207】
この後、ステップ527に進み、V相、V’相の通電中(V相、V’相のスイッチング素子39のオン中)であるか否かを判定し、V相、V’相の通電中であれば、ステップ528、530で、V相、V’相の電流センサ63で励磁電流が検出されたか否かを判定する。その結果、V相の励磁電流が検出されなければ、第1系統の駆動コイル36のV相断線と判定し(ステップ529)、V’相の励磁電流が検出されなければ、第2系統の駆動コイル37のV’相断線と判定する(ステップ531)。
【0208】
この後、ステップ532に進み、W相、W’相の通電中(W相、W’相のスイッチング素子39のオン中)であるか否かを判定し、W相、W’相の通電中であれば、ステップ533、535で、W相、W’相の電流センサ63で励磁電流が検出されたか否かを判定する。その結果、W相の励磁電流が検出されなければ、第1系統の駆動コイル36のW相断線と判定し(ステップ534)、W’相の励磁電流が検出されなければ、第2系統の駆動コイル37のW’相断線と判定する(ステップ536)。
【0209】
尚、本実施形態(2)では、各駆動コイル35,36の各相の通電ラインにそれぞれ電流センサ63を設けたが、これらの代わりに、各駆動コイル35,36の中性点に流れる励磁電流を検出するようにしても良い。この場合は、各駆動コイル35,36に電流センサを1個ずつ設けるだけで良く、低コスト化することができる。
【0210】
また、前記実施形態(1)、(2)では、駆動コイル35,36の断線を検出するようにしたが、モータドライバ37,38の故障を検出して、いずれか一方の系統のモータドライバが故障したときに、他方の系統のモータドライバを使用して他方の系統の駆動コイルのみをオープンループ制御で駆動するようにしても良い。
【0211】
例えば、前記実施形態(1)において、モータドライバ37,38の故障を検出する場合は、各相のスイッチング素子39をオンしたときに、各相のポートレベルがローレベルに反転すれば、モータドライバ37,38が正常であるが、各相のスイッチング素子39をオンしても、各相のポートレベルがハイレベルに維持されて、ローレベルに反転しなければ、その相のスイッチング素子39が故障していると判定することができる。
【0212】
また、モータドライバ37,38のスイッチング素子39が故障してオンしなくなった場合は、ECU41からスイッチング素子39に駆動信号を出力しても、スイッチング素子39がオンせず、巻線33,34に励磁電流が流れないため、前記実施形態(2)のように、各相の励磁電流を電流センサ63で検出して駆動コイル35,36の断線の有無を判定する方法では、スイッチング素子39の故障と駆動コイル35,36の断線とを区別できないが、スイッチング素子39が故障した系統も、駆動コイル35,36の断線と同じく、駆動コイル35,36に通電できないので、両者をあえて区別しなくても、正常な系統の駆動コイル・モータドライバを使用してオープンループ制御を行うのに何等支障はない。
【0213】
また、駆動コイル35,36の断線時には、それ以外の異常よりも駆動トルクが低下することを考慮して、駆動コイル35,36の断線検出時にはそれ以外の異常検出時よりもロータ回転速度が遅くなるように正常に動作する残りの系統の駆動回路・駆動コイルを用いてオープンループ制御するようにしても良い。これにより、駆動トルクが小さくなる異常が発生した時でも、モータ制御の信頼性を確保することができる。
【0214】
また、前記実施形態(1)、(2)では、駆動コイル・モータドライバを2系統設けたが、これを3系統以上設けるようにしても良い。
また、本発明に用いるエンコーダは、磁気式のエンコーダ46に限定されず、例えば、光学式のエンコーダやブラシ式のエンコーダを用いても良い。
【0215】
また、本発明に用いるモータは、SRモータ12に限定されず、エンコーダの出力信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えるブラシレス型のモータであれば、SRモータ以外のブラシレス型のモータを用いても良い。
【0216】
また、前記実施形態(1)のレンジ切換装置は、PレンジとNotPレンジの2つのレンジを切り換える構成であるが、例えば、ディテントレバー15の回動動作に連動して自動変速機のレンジ切換弁とマニュアルバルブを切り換えて、自動変速機のP、R、N、D、…の各レンジを切り換えるレンジ切換装置にも本発明を適用して実施できる。
【0217】
その他、本発明は、レンジ切換装置に限定されず、SRモータ等のブラシレス型のモータを駆動源とする各種の装置に適用して実施できることは言うまでもない。
【図面の簡単な説明】
【図1】本発明の実施形態(1)を示すレンジ切換装置の斜視図
【図2】実施形態(1)のSRモータの構成を説明する図
【図3】実施形態(1)の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】リカバリ処理の一例を説明するタイムチャート
【図23】エンコーダのA相信号・B相信号の異常を検出する方法を説明する図
【図24】F/B制御中のロータの逆転を検出する方法を説明する図
【図25】オープンループ制御の一例を説明するタイムチャート
【図26】リカバリ処理ルーチンの処理の流れを示すフローチャート
【図27】オープンループ制御開始時の位置カウント値Ncntの初期値を算出する方法を説明する図
【図28】F/B制御中AB相信号異常検出ルーチンの処理の流れを示すフローチャート
【図29】逆転カウンタルーチンの処理の流れを示すフローチャート
【図30】逆転判定ルーチンの処理の流れを示すフローチャート
【図31】システム異常診断ルーチンの処理の流れを示すフローチャート(その1)
【図32】システム異常診断ルーチンの処理の流れを示すフローチャート(その2)
【図33】フェールセーフ処理ルーチンの処理の流れを示すフローチャート(その1)
【図34】フェールセーフ処理ルーチンの処理の流れを示すフローチャート(その2)
【図35】オープンループ制御ルーチンの処理の流れを示すフローチャート(その1)
【図36】オープンループ制御ルーチンの処理の流れを示すフローチャート(その2)
【図37】オープンループ制御ルーチンの処理の流れを示すフローチャート(その3)
【図38】Mptnop%6から通電相への変換テーブルの一例を示す図
【図39】バッテリ電圧から最大回転速度パラメータmspdmaxを求めるテーブルの一例を示す図
【図40】回転速度パラメータmspdから励磁時間tmを求めるテーブルの一例を示す図
【図41】オープンループ制御時エンジントルク抑制ルーチンの処理の流れを示すフローチャート
【図42】実施形態(1)の駆動コイル断線検出ルーチンの処理の流れを示すフローチャート
【図43】通電処理ルーチンの処理の流れを示すフローチャート
【図44】実施形態(2)のSRモータを駆動する回路構成を示す回路図
【図45】実施形態(2)の駆動コイル断線検出ルーチンの処理の流れを示すフローチャート
【符号の説明】
11…レンジ切換機構、12…SRモータ、14…出力軸センサ、15…ディテントレバー、18…パーキングロッド、20…パーキングギヤ、21…ロックレバー、23…ディテントバネ、23a…係合部、24…Pレンジ保持凹部、25…NotPレンジ保持凹部、26…減速機構、27…自動変速機、31…ステータ、32…ロータ、33,34…巻線、35,36…駆動コイル、37,38…モータドライバ(駆動回路)、40…バッテリ、41…ECU(フィードバック制御手段,オープンループ制御手段,異常診断手段)、43…Pレンジスイッチ、44…NotPレンジスイッチ、46…エンコーダ、47…ロータリマグネット、48…A相信号用の磁気検出素子、49…B相信号用の磁気検出素子、50…Z相信号用の磁気検出素子、60…断線検出回路、61,62…抵抗、63…電流センサ。
Claims (11)
- 制御対象を回転駆動するモータのロータの回転に同期してパルス信号を出力するエンコーダと、このエンコーダのパルス信号のカウント値に基づいて前記ロータの回転位置を検出して前記モータの通電相を順次切り換えることで前記ロータを目標位置まで回転駆動するフィードバック制御を実行するフィードバック制御手段とを備えたモータ制御装置において、
前記モータは、独立した少なくとも2系統の駆動コイルと、各系統の駆動コイルを別々に駆動する少なくとも2系統の駆動回路を有すると共に、各系統の駆動コイル・駆動回路は、それぞれ単独でも前記ロータを回転駆動できるように構成され、
前記各系統の駆動コイル・駆動回路の異常の有無を診断する異常診断手段と、
前記異常診断手段によりいずれかの系統の駆動コイル・駆動回路の異常が検出されたときに残りの系統の駆動コイル・駆動回路を用いてオープンループ制御により該駆動回路に駆動信号を出力して該駆動コイルの通電相を順次切り換えると共に、該駆動信号をカウントしてそのカウント値に基づいて前記ロータを前記目標位置まで回転駆動するオープンループ制御手段と
を備えていることを特徴とするモータ制御装置。 - 前記オープンループ制御手段は、前記オープンループ制御中に前記モータに供給する電源電圧に応じてロータ回転速度を制限することを特徴とする請求項1に記載のモータ制御装置。
- 前記異常診断手段は、前記駆動コイルの断線を検出する手段を有し、
前記オープンループ制御手段は、前記駆動コイルの断線を検出した時には断線以外の異常を検出した時よりも前記ロータ回転速度が遅くなるように前記残りの系統の駆動回路に駆動信号を出力することを特徴とする請求項1又は2に記載のモータ制御装置。 - 前記オープンループ制御手段は、前記オープンループ制御により前記モータを停止状態から駆動するときに最初の励磁を2相通電で行い、その後は、1相通電と2相通電とを交互に切り換えることを特徴とする請求項1乃至3のいずれかに記載のモータ制御装置。
- 前記オープンループ制御手段は、前記オープンループ制御により前記モータを停止状態から駆動するときに初めの所定回数の励磁の通電時間をその以後の励磁の通電時間よりも長い時間に設定することを特徴とする請求項1乃至4のいずれかに記載のモータ制御装置。
- 前記オープンループ制御手段は、前記オープンループ制御中に、ロータ回転速度、駆動開始後の回転量、駆動開始後の経過時間、前記目標位置までの回転量、負荷トルクの少なくとも1つに基づいて励磁の通電時間を設定することを特徴とする請求項1乃至5のいずれかに記載のモータ制御装置。
- 前記モータの出力軸の回転位置又はそれに相関する位置情報を検出する出力軸センサを設け、
前記オープンループ制御手段は、前記オープンループ制御中に前記駆動信号のカウント値に基づいて推定した前記ロータの回転位置が前記目標位置に到達した時点で該オープンループ制御を終了すると共に、前記出力軸センサの出力信号に基づいて該オープンループ制御によるモータ駆動が成功か失敗かを判定し、失敗であれば再びオープンループ制御によるモータ駆動を繰り返すことを特徴とする請求項1乃至6のいずれかに記載のモータ制御装置。 - 前記オープンループ制御手段は、前記オープンループ制御によるモータ駆動を連続して所定回数以上失敗したときに、オープンループ制御不能と判断して前記モータの通電をオフすることを特徴とする請求項7に記載のモータ制御装置。
- 前記オープンループ制御手段は、前記オープンループ制御開始時の前記ロータの初期位置を前記出力軸センサの出力信号に基づいて推定し、該オープンループ制御中に前記ロータの初期位置推定値と前記駆動信号のカウント値とに基づいて前記ロータの回転位置を推定することを特徴とする請求項7又は8に記載のモータ制御装置。
- 前記モータは、スイッチトリラクタンスモータであることを特徴とする請求項1乃至9のいずれかに記載のモータ制御装置。
- 前記制御対象は、車両のパーキングレンジと他のレンジとを切り換えるレンジ切換装置であることを特徴とする請求項1乃至10のいずれかに記載のモータ制御装置。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002207559A JP3947922B2 (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 |
---|---|---|---|
JP2002207559A JP3947922B2 (ja) | 2002-07-16 | 2002-07-16 | モータ制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004056857A true JP2004056857A (ja) | 2004-02-19 |
JP3947922B2 JP3947922B2 (ja) | 2007-07-25 |
Family
ID=31931973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002207559A Expired - Fee Related JP3947922B2 (ja) | 2002-07-09 | 2002-07-16 | モータ制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3947922B2 (ja) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008301625A (ja) * | 2007-05-31 | 2008-12-11 | Canon Inc | ステッピングモータ駆動装置および画像形成装置 |
JP2009281484A (ja) * | 2008-05-21 | 2009-12-03 | Denso Corp | レンジ切換機構の制御装置 |
WO2011052074A1 (ja) * | 2009-10-30 | 2011-05-05 | トヨタ自動車株式会社 | 車両のシフト切替制御装置 |
JP2011097720A (ja) * | 2009-10-29 | 2011-05-12 | Canon Inc | モータ駆動装置 |
JP2012212388A (ja) * | 2011-03-31 | 2012-11-01 | Nec Corp | ディスクアレイ装置 |
JP2014238133A (ja) * | 2013-06-07 | 2014-12-18 | 株式会社デンソー | シフトバイワイヤ制御装置 |
WO2015093423A1 (ja) * | 2013-12-19 | 2015-06-25 | 日立オートモティブシステムズ株式会社 | 内燃機関のバルブタイミング制御装置及び該バルブタイミング制御装置のコントローラ |
WO2015122655A1 (ko) * | 2014-02-11 | 2015-08-20 | 삼성전자주식회사 | 동력 장치 및 동력 장치에 포함되는 전동기 구동 장치 |
JP2019158002A (ja) * | 2018-03-13 | 2019-09-19 | 株式会社デンソー | シフトレンジ制御装置 |
CN112602265A (zh) * | 2018-09-03 | 2021-04-02 | 株式会社电装 | 换挡挡位控制装置 |
-
2002
- 2002-07-16 JP JP2002207559A patent/JP3947922B2/ja not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008301625A (ja) * | 2007-05-31 | 2008-12-11 | Canon Inc | ステッピングモータ駆動装置および画像形成装置 |
JP2009281484A (ja) * | 2008-05-21 | 2009-12-03 | Denso Corp | レンジ切換機構の制御装置 |
JP2011097720A (ja) * | 2009-10-29 | 2011-05-12 | Canon Inc | モータ駆動装置 |
WO2011052074A1 (ja) * | 2009-10-30 | 2011-05-05 | トヨタ自動車株式会社 | 車両のシフト切替制御装置 |
JP5035475B2 (ja) * | 2009-10-30 | 2012-09-26 | トヨタ自動車株式会社 | 車両のシフト切替制御装置 |
US8616079B2 (en) | 2009-10-30 | 2013-12-31 | Toyota Jidosha Kabushiki Kaisha | Shift switching control device of vehicle |
JP2012212388A (ja) * | 2011-03-31 | 2012-11-01 | Nec Corp | ディスクアレイ装置 |
JP2014238133A (ja) * | 2013-06-07 | 2014-12-18 | 株式会社デンソー | シフトバイワイヤ制御装置 |
WO2015093423A1 (ja) * | 2013-12-19 | 2015-06-25 | 日立オートモティブシステムズ株式会社 | 内燃機関のバルブタイミング制御装置及び該バルブタイミング制御装置のコントローラ |
CN105829665A (zh) * | 2013-12-19 | 2016-08-03 | 日立汽车系统株式会社 | 内燃机的气门正时控制装置以及该气门正时控制装置的控制器 |
JPWO2015093423A1 (ja) * | 2013-12-19 | 2017-03-16 | 日立オートモティブシステムズ株式会社 | 内燃機関のバルブタイミング制御装置及び該バルブタイミング制御装置のコントローラ |
WO2015122655A1 (ko) * | 2014-02-11 | 2015-08-20 | 삼성전자주식회사 | 동력 장치 및 동력 장치에 포함되는 전동기 구동 장치 |
US9966880B2 (en) | 2014-02-11 | 2018-05-08 | Samsung Electronics Co., Ltd. | Power system and motor driving apparatus included in power system |
JP2019158002A (ja) * | 2018-03-13 | 2019-09-19 | 株式会社デンソー | シフトレンジ制御装置 |
CN112602265A (zh) * | 2018-09-03 | 2021-04-02 | 株式会社电装 | 换挡挡位控制装置 |
CN112602265B (zh) * | 2018-09-03 | 2023-12-05 | 株式会社电装 | 换挡挡位控制装置 |
Also Published As
Publication number | Publication date |
---|---|
JP3947922B2 (ja) | 2007-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6992451B2 (en) | Motor control apparatus operable in fail-safe mode | |
US7667427B2 (en) | Motor control apparatus | |
JP5454962B2 (ja) | モータ制御装置 | |
US7990088B2 (en) | Motor control apparatus | |
JP5648854B2 (ja) | モータ制御装置 | |
US8421396B2 (en) | Motor controlling device | |
JP3886042B2 (ja) | モータ制御装置 | |
JP3800529B2 (ja) | モータ制御装置 | |
JP3947922B2 (ja) | モータ制御装置 | |
JP3849864B2 (ja) | モータ制御装置 | |
JP2004023890A (ja) | モータ制御装置 | |
JP3849930B2 (ja) | モータ制御装置 | |
JP3849931B2 (ja) | モータ制御装置 | |
JP4082164B2 (ja) | モータ制御装置 | |
JP2004190839A (ja) | 位置切換制御装置 | |
JP6547663B2 (ja) | 制御装置 | |
JP3871130B2 (ja) | モータ制御装置 | |
JP3888940B2 (ja) | モータ制御装置 | |
JP3849627B2 (ja) | モータ制御装置 | |
JP3888278B2 (ja) | モータ制御装置 | |
JP3849629B2 (ja) | モータ制御装置 | |
JP3800532B2 (ja) | モータ制御装置 | |
JP2004023889A (ja) | モータ制御装置 | |
JP4748611B2 (ja) | 位置切換制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041116 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060830 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060901 |
|
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: 20070322 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070404 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3947922 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: 20100427 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110427 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120427 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120427 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130427 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130427 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140427 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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |