JP2004056856A - Motor controller - Google Patents

Motor controller Download PDF

Info

Publication number
JP2004056856A
JP2004056856A JP2002207558A JP2002207558A JP2004056856A JP 2004056856 A JP2004056856 A JP 2004056856A JP 2002207558 A JP2002207558 A JP 2002207558A JP 2002207558 A JP2002207558 A JP 2002207558A JP 2004056856 A JP2004056856 A JP 2004056856A
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.)
Granted
Application number
JP2002207558A
Other languages
Japanese (ja)
Other versions
JP3849931B2 (en
Inventor
Shigeru Kamio
神尾 茂
Kenichi Fujiki
藤木 賢一
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Denso Corp
Original Assignee
Denso Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Denso Corp filed Critical Denso Corp
Priority to JP2002207558A priority Critical patent/JP3849931B2/en
Priority to US10/448,409 priority patent/US7312595B2/en
Priority to DE10362132.6A priority patent/DE10362132B4/en
Priority to DE10330809.1A priority patent/DE10330809B8/en
Publication of JP2004056856A publication Critical patent/JP2004056856A/en
Priority to US11/320,962 priority patent/US7667427B2/en
Application granted granted Critical
Publication of JP3849931B2 publication Critical patent/JP3849931B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Gear-Shifting Mechanisms (AREA)
  • Control Of Electric Motors In General (AREA)
  • Control Of Stepping Motors (AREA)

Abstract

<P>PROBLEM TO BE SOLVED: To perform the abnormality diagonosis of an encoder in a system which F/B-controls a motor as far as the target position, based on an encoder count value. <P>SOLUTION: When it becomes unable to perform the F/B control of the motor normally, it switches the control into open loop control. Also each time it outputs a motor drive signal in the open loop control, it counts up (or counts down) the positional count values at open loop control. At the point of time when this positional count value reaches the objective count value, it judges that a rotor has reached the target position, and finishes the open loop control. In this open loop control, it judges the existence of the wire breaking of the phase A/B of the encoder by comparing the count value of the encoder (the count value of the A-phase signal/B-phase signal of the encoder) with the positional count value (the count value of the motor drive signal), and also judges the existence of the abnormality of a Z-phase signal, based on the output interval of the Z-phase signal. <P>COPYRIGHT: (C)2004,JPO

Description

【0001】
【発明の属する技術分野】
本発明は、エンコーダのパルス信号のカウント値に基づいてロータの回転位置を検出してモータの通電相を順次切り換えることでロータを目標位置まで回転駆動するモータ制御装置に関するものである。
【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を次式により算出する。
Ncntop=INT[{(Vnsw−Vp)/ΔV
×Kop×61/3.75−Kofp}×1/2]×2
ΔV=Vnp−Vp
【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)となっている。

Figure 2004056856
【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相信号用の磁気検出素子。[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a motor control device that detects a rotational position of a rotor based on a count value of a pulse signal of an encoder and sequentially switches a current-carrying phase of the motor to rotate the rotor to a target position.
[0002]
[Prior art]
In recent years, brushless motors such as switch reluctance motors, which have been increasing in demand as simple and inexpensive motors, are equipped with an encoder that outputs a pulse signal in synchronization with the rotation of the rotor. In some cases, the rotational position of the rotor is detected based on the encoder count value, and the rotor is rotationally driven by sequentially switching the energized phase. Since such a motor with an encoder can detect the rotation position of the rotor based on the encoder count value after startup, the position switching control (rotation of the rotor to the target position by a feedback control system (closed loop control system)) is performed. It is used as a drive source for various position switching devices that perform positioning control).
[0003]
[Problems to be solved by the invention]
As described above, in a system that performs feedback control (hereinafter, referred to as “F / B control”) for rotating a rotor to a target position based on an encoder count value, when an encoder output signal becomes abnormal, the energized phase (encoder count) Value) and the rotation phase of the rotor cannot be synchronized, so that the motor cannot be driven normally and control becomes impossible.
[0004]
The present invention has been made in view of such circumstances, and accordingly, the object is to enable the rotor to be rotated to the target position even when the output signal of the encoder becomes abnormal, and to diagnose the abnormality of the encoder. An object of the present invention is to provide a motor control device that can perform the control with high accuracy and can improve the reliability of the motor control.
[0005]
[Means for Solving the Problems]
In order to achieve the above object, a motor control device according to a first aspect of the present invention is configured such that when an F / B control execution condition is satisfied, a rotation position of a rotor is determined by an F / B control unit based on an encoder count value. Is detected and F / B control for rotating the rotor to the target position is performed by sequentially switching the energized phase of the motor. When the F / B control execution condition is not satisfied due to a failure or the like, the open loop control means Switching from F / B control to open loop control and outputting a drive signal to the drive circuit of the motor without feeding back information on the encoder count value, sequentially switching the energized phase, counting the drive signal and reducing the count value to the count value The rotor is driven to rotate to the target position based on the rotation. Then, the abnormality diagnosing unit compares the encoder count value counted during the open loop control with the count value of the drive signal to determine whether or not the encoder is abnormal.
[0006]
During the F / B control, if the encoder count value becomes abnormal due to, for example, missing pulses or noise from the encoder, or if the signal line of the encoder is broken, the synchronization between the energized phase (encoder count value) and the rotational phase of the rotor is synchronized. And the F / B control state (rotor state of the rotor) becomes abnormal. In such a state, the F / B control execution condition is not satisfied, and the F / B control is switched to the open loop control. With this configuration, even if the encoder count value becomes abnormal due to, for example, missing pulses or noise from the encoder, or the signal line of the encoder is broken, the rotor can be rotated to the target position by open-loop control. . When the encoder count value counted during the open-loop control is compared with the count value of the drive signal, the encoder count value (the amount of rotation detected by the encoder) becomes equal to the count value of the drive signal (the amount of drive rotation by the open-loop control). Can be accurately determined whether or not the encoder is abnormal.
[0007]
It should be noted that the failure determination of the encoder can be performed only during the open loop control. In other words, during the F / B control, when the pulse signal of the encoder is not input due to the disconnection, the stop of the motor is determined to hold the energization (to output a drive pulse in synchronization with the pulse signal of the encoder). Can be done, but it cannot be determined whether this is due to an encoder failure.
[0008]
In this case, it is preferable to prohibit the return from the open loop control to the F / B control when the abnormality of the encoder is detected. That is, when the encoder becomes abnormal, the encoder count value becomes abnormal. Therefore, even if the F / B control for feeding back the encoder count value is performed, the motor cannot be driven normally. Therefore, in this case, by prohibiting the return to the F / B control, unnecessary F / B control is not performed, and the rotor can be rotated to the target position by the open loop control.
[0009]
Further, the encoder outputs the A-phase signal and the B-phase signal having a predetermined phase difference in synchronization with the rotation of the rotor, and outputs the Z-phase signal at the reference rotation position of the rotor. During the F / B control, the edges of the A-phase signal and the B-phase signal are counted, and the energized phase is sequentially switched based on the encoder count value, and the rotational position of the rotor and the energized phase are determined based on the Z-phase signal. Is determined, and if there is a shift, the shift is corrected (hereinafter, this correction is referred to as “Z-phase correction”), and further, the encoder count value and the drive signal count value counted during the open loop control. To determine whether there is an abnormality in the A-phase signal and the B-phase signal of the encoder. In this case, when updating the encoder count value by counting the A-phase signal and the B-phase signal, the rotation direction of the rotor is determined based on the generation order of the A-phase signal and the B-phase signal, and the encoder is determined in accordance with the rotation direction. The count value may be counted up or down, and the energized phase may be selected and energized according to the encoder count value and the rotation direction of the rotor. With this configuration, even if the rotor rotates in either the forward rotation or the reverse rotation, the correspondence between the encoder count value and the rotation position of the rotor can be maintained. , The correct energized phase can be selected based on the encoder count value. Further, since the reference rotation position of the rotor can be accurately detected by the Z-phase signal output from the encoder, for example, the energized phase (encoder count value) when the Z-phase signal is output corresponds to the reference rotation position of the rotor. By determining whether or not the current is in the energized phase (encoder count value), it is possible to confirm whether or not the correspondence between the rotational position of the rotor and the energized phase (encoder count value) has shifted. If there is a deviation, it is possible to perform highly reliable motor control by correcting the deviation.
[0010]
Further, when it is determined that the A-phase signal and the B-phase signal of the encoder are normal, the output interval of the Z-phase signal is determined based on the encoder count value to determine whether the Z-phase signal is abnormal. The determination may be made. If the A-phase signal and the B-phase signal of the encoder are determined to be normal, the encoder count value obtained by counting them accurately corresponds to the rotation angle (rotation amount) of the rotor. By determining the signal output interval (rotation angle), it can be accurately determined whether the Z-phase signal is output at the reference rotation position of the rotor.
[0011]
In this case, it is preferable to prohibit the Z-phase correction when the abnormality of the Z-phase signal is detected. By doing so, it is possible to avoid erroneous Z-phase correction when an abnormality occurs in the Z-phase signal.
[0012]
Further, a switch reluctance motor may be used as the motor. Switched reluctance motors have the advantage that they are inexpensive and have high durability and reliability against temperature environments and the like because they do not require permanent magnets and have a simple structure.
[0013]
The inventions according to claims 1 to 6 described above can be applied to various position switching devices using a brushless type motor such as a switch reluctance motor as a drive source. The present invention may be applied to a motor control device that drives a range switching mechanism that switches the range of the machine. Thus, a highly reliable motor-driven range switching device can be configured.
[0014]
BEST MODE FOR CARRYING OUT THE INVENTION
An embodiment in which the present invention is applied to a range switching device for a vehicle will be described below with reference to the drawings.
[0015]
First, the configuration of the range switching mechanism 11 will be described with reference to FIG. The motor 12 serving as a drive source of the range switching mechanism 11 is constituted by, for example, a switch reluctance motor, has a built-in speed reduction mechanism 26 (see FIG. 4), and is provided with an output shaft sensor 14 for detecting the rotational position of the output shaft 13. Have been. A detent lever 15 is fixed to the output shaft 13.
[0016]
An L-shaped parking rod 18 is fixed to the detent lever 15, and a conical body 19 provided at the tip of the parking rod 18 is in contact with the lock lever 21. The lock lever 21 moves up and down about the shaft 22 in accordance with the position of the cone 19 to lock / unlock the parking gear 20. The parking gear 20 is provided on the output shaft of the automatic transmission 27. When the parking gear 20 is locked by the lock lever 21, the driving wheels of the vehicle are held in a state where they are prevented from rotating (parking state).
[0017]
On the other hand, a detent spring 23 for holding the detent lever 15 in a parking range (hereinafter referred to as “P range”) and another range (hereinafter referred to as “NotP range”) is fixed to the support base 17. When the engaging portion 23a provided at the tip of the spring 23 is fitted into the P range holding concave portion 24 of the detent lever 15, the detent lever 15 is held at the position of the P range. The detent lever 15 is held at the position of the NotP range when 23a is fitted into the NotP range holding recess 25 of the detent lever 15.
[0018]
In the P range, the parking rod 18 moves in a direction approaching the lock lever 21, and the thick portion of the cone 19 pushes up the lock lever 21, and the projection 21 a of the lock lever 21 fits into the parking gear 20 to park. The gear 20 is locked, whereby the output shaft (drive wheel) of the automatic transmission 27 is maintained in a locked state (parking state).
[0019]
On the other hand, in the NotP range, the parking rod 18 moves in a direction away from the lock lever 21, the thick portion of the cone 19 comes out of the lock lever 21, and the lock lever 21 descends. 21a is disengaged from the parking gear 20, the lock of the parking gear 20 is released, and the output shaft of the automatic transmission 27 is maintained in a rotatable state (runnable state).
[0020]
The output shaft sensor 14 described above is constituted by a rotation sensor (for example, a potentiometer) that outputs a voltage corresponding to the rotation angle of the output shaft 13 of the speed reduction mechanism 26 of the motor 12, and the current range is set to the P range by the output voltage. And the NotP range.
[0021]
Next, the configuration of the motor 12 will be described with reference to FIG. In the present embodiment, a switched reluctance motor (hereinafter referred to as “SR motor”) is used as the motor 12. The SR motor 12 is a motor in which both the stator 31 and the rotor 32 have a salient pole structure, and has an advantage that a permanent magnet is not required and the structure is simple. For example, twelve salient poles 31a are formed at equal intervals on the inner peripheral portion of the cylindrical stator 31, whereas, for example, eight salient poles 32a are formed at equal intervals on the outer peripheral portion of the rotor 32. The respective salient poles 32a of the rotor 32 are sequentially opposed to the respective salient poles 31a of the stator 31 via a minute gap with the rotation of the rotor 32. The twelve salient poles 31a of the stator 31 have a total of six windings 33 of U-phase, V-phase, and W-phase, and a total of six windings 34 of U'-, V'-, and W'-phases. It is wound in order. It goes without saying that the number of salient poles 31a and 32a of the stator 31 and the rotor 32 may be changed as appropriate.
[0022]
The winding order of the windings 33 and 34 in the present embodiment is, for example, V phase → W phase → U phase → V phase → W phase → U phase → V ′ for the twelve salient poles 31a of the stator 31. The phases are wound in the order of phase → W ′ phase → U ′ phase → V ′ phase → W ′ phase → U ′ phase. As shown in FIG. 3, a total of six windings 33 of U-phase, V-phase and W-phase and a total of six windings 34 of U′-phase, V′-phase and W′-phase are two-system motors. They are connected so as to form the excitation units 35 and 36. One motor excitation unit 35 is configured by connecting a total of six windings 33 of U-phase, V-phase, and W-phase in a Y-connection (two windings 33 of the same phase are connected in series). The other motor excitation unit 36 is configured by connecting a total of six windings 34 of U ′ phase, V ′ phase, and W ′ phase in a Y connection (two windings 34 of the same phase are connected in series, respectively). It is connected to the). In the two motor excitation units 35 and 36, the U phase and the U 'phase are simultaneously energized, the V phase and the V' phase are simultaneously energized, and the W phase and the W 'phase are simultaneously energized.
[0023]
These two motor excitation units 35 and 36 are driven by separate motor drivers 37 and 38 (motor drive circuits) using a battery 40 mounted on the vehicle as a power supply. In this way, by providing the motor excitation units 35 and 36 and the motor drivers 37 and 38 each in two systems, even if one system fails, the SR motor 12 can be rotated in the other system. ing. The circuit configuration example of the motor drivers 37 and 38 shown in FIG. 3 has a unipolar drive circuit configuration in which one switching element 39 such as a transistor is provided for each phase, but two switching elements are provided for each phase. Alternatively, a circuit configuration of a bipolar drive system provided for each may be adopted. It is needless to say that the present invention may be configured such that one system is provided for each of the motor excitation unit and the motor driver.
[0024]
ON / OFF of each switching element 39 of each motor driver 37, 38 is controlled by the ECU 41 (control means). As shown in FIG. 4, the ECU 41 and the motor drivers 37 and 38 are mounted on a range switching control device 42. The range switching control device 42 includes a P range switch 43 for performing a switching operation to a P range, An operation signal of a NotP range switch 44 for performing a switching operation to the NotP range is input. The range selected by operating the P range switch 43 or the NotP range switch 44 is displayed on a range display section 45 provided on an instrument panel (not shown). The P range switch 43 and the NotP range switch 44 are constituted by, for example, momentary switches.
[0025]
The SR motor 12 is provided with an encoder 46 for detecting the rotational position of the rotor 32. The encoder 46 is constituted by, for example, a magnetic rotary encoder. As shown in FIGS. 5 and 6, the specific configuration of the encoder 46 is such that north poles and south poles are alternately arranged at equal pitches in the circumferential direction. A magnetized annular rotary magnet 47 is coaxially fixed to the side surface of the rotor 32, and three magnetic detecting elements 48, 49, 50 such as Hall ICs are arranged at positions facing the rotary magnet 47. It has a configuration. In the present embodiment, the magnetization pitch between the N pole and the S pole of the rotary magnet 47 is set to 7.5 °. The magnetization pitch (7.5 °) of the rotary magnet 47 is set to be the same as the rotation angle of the rotor 32 per excitation of the SR motor 12. As will be described later, when the energized phase of the SR motor 12 is switched six times by the 1-2-phase excitation method, all energized phases are switched once, and the rotor 32 and the rotary magnet 47 are integrally 7.5 °. × 6 = 45 ° rotation. The number of N poles and S poles present in the rotation angle range of 45 ° of the rotary magnet 47 is a total of six poles.
[0026]
Further, the N pole (N ') at the position corresponding to the reference rotation position of the rotor 32 and the S poles (S') on both sides thereof are formed so as to be wider in the radial direction than the other magnetic poles. In the present embodiment, considering that the rotor 32 and the rotary magnet 47 rotate integrally by 45 ° during one cycle of the switching of the energized phase of the SR motor 12, a wide width corresponding to the reference rotation position of the rotor 32 is taken into consideration. The large magnetized portions (N ′) are formed at a 45 ° pitch, so that a total of eight wide magnetized portions (N ′) corresponding to the reference rotation position are formed as the rotary magnet 47 as a whole. The wide magnetized portion (N ′) corresponding to the reference rotation position may be configured such that only one magnet is formed as the whole rotary magnet 47.
[0027]
Three magnetic detecting elements 48, 49, 50 are arranged with respect to the rotary magnet 47 in the following positional relationship. The magnetic detecting element 48 that outputs the A-phase signal and the magnetic detecting element 49 that outputs the B-phase signal are composed of a narrow magnetized portion (N, S) and a wide magnetized portion (N ′, S ′) of the rotary magnet 47. ) Are arranged on the same circumference at positions that can face both. On the other hand, the magnetic detection element 50 that outputs the Z-phase signal is located at a position radially outside or inside the narrow magnetized portion (N, S) of the rotary magnet 47 and has a wide magnetized portion (N ′). , S ′) only. As shown in FIG. 7, the interval between the two magnetic detecting elements 48 and 49 for outputting the A-phase signal and the B-phase signal is such that the phase difference between the A-phase signal and the B-phase signal is 90 ° in electrical angle (mechanical angle). 3.75 °). Here, “electric angle” is an angle when the generation period of the A / B phase signal is one cycle (360 °), and “mechanical angle” is a mechanical angle (one rotation of the rotor 32 is 360 °). The angle at which the rotor 32 rotates from the fall (rise) of the A-phase signal to the fall (rise) of the B-phase signal corresponds to the mechanical angle of the phase difference between the A-phase signal and the B-phase signal. I do. The magnetic detection element 50 that outputs the Z-phase signal is arranged so that the phase difference between the Z-phase signal and the B-phase signal (or the A-phase signal) becomes zero.
[0028]
The output of each of the magnetic detection elements 48, 49, and 50 becomes a high level "1" when facing the N pole (N 'pole), and becomes a low level "0" when facing the S pole (S' pole). Become. The output of the magnetic detection element 50 for the Z-phase signal becomes high level "1" every time it faces the wide N 'pole corresponding to the reference rotation position of the rotor 32. At other positions, the output becomes low level "1". 0 ".
[0029]
In the present embodiment, the ECU 41 counts both rising and falling edges of the A-phase signal and the B-phase signal by an encoder counter routine described later, and switches the energized phase of the SR motor 12 according to the encoder count value. Drives the rotor 32 to rotate. At this time, the rotation direction of the rotor 32 is determined based on the generation order of the A-phase signal and the B-phase signal, and the encoder count value is counted up in the forward rotation (P direction → NotP range rotation direction), and the reverse rotation (NotP range → In the (P-range rotation direction), the encoder count value is counted down. Accordingly, even if the rotor 32 rotates in either the forward direction or the reverse direction, the correspondence between the encoder count value and the rotational position of the rotor 32 is maintained. However, the rotation position (rotation angle) of the rotor 32 is detected based on the encoder count value, and the windings 33 and 34 of the phase corresponding to the rotation position are energized to drive the rotor 32 to rotate.
[0030]
FIG. 7 shows an output waveform of the encoder 46 and a switching pattern of the energized phase when the rotor 32 is rotated in the reverse rotation direction (the rotation direction from the NotP range to the P range). In both the reverse rotation direction (the rotation direction from the NotP range to the P range) and the normal rotation direction (the rotation direction from the P range to the NotP range), one phase energization and two phases are performed every time the rotor 32 rotates 7.5 °. The energization and the energization are alternately switched, and during the rotation of the rotor 32 by 45 °, for example, in the order of U-phase energization → UW-phase energization → W-phase energization → VW-phase energization → V-phase energization → UV-phase energization The switching of the energized phase is performed once. Each time the energized phase is switched, the rotor 32 rotates by 7.5 ° so that the magnetic pole of the rotary magnet 47 facing the magnetic detection elements 48 and 49 for the A-phase and B-phase signals changes from N pole to S pole. (N ′ pole → S ′ pole) or S pole → N pole (S ′ pole → N ′ pole), and the levels of the A-phase signal and the B-phase signal are alternately inverted. The encoder count value is incremented (or decremented) by 2 for every .5 ° rotation. Each time the switching of the energized phase completes one cycle and the rotor 32 rotates 45 °, the magnetic detection element 50 for the Z phase faces the wide N ′ pole corresponding to the reference rotation position of the rotor 32, and The signal becomes high level "1". In this specification, the fact that the A-phase, B-phase, and Z-phase signals are at the high level “1” may be referred to as the output of the A-phase, B-phase, and Z-phase signals.
[0031]
By the way, since the encoder count value is stored in the RAM of the ECU 41, when the power of the ECU 41 is turned off, the storage of the encoder count value disappears. Therefore, the encoder count value (0) immediately after the power supply of the ECU 41 is turned on does not correspond to the actual rotational position (energized phase) of the rotor 32. Therefore, in order to switch the energized phase according to the encoder count value, it is necessary to make the encoder count value correspond to the actual rotational position of the rotor 32 after power-on, and to make the encoder count value correspond to the energized phase.
[0032]
Therefore, in the present embodiment, the initial drive routine shown in FIGS. 8 and 9 to be described later is executed by the ECU 41 of the range switching control device 42, so that the initial phase of the SR motor 12 is turned on when the ECU 41 is powered on. Is cycled in a predetermined time schedule to count the edges of the A-phase signal and the B-phase signal of the encoder 46, and learn the correspondence between the encoder count value at the end of the initial drive, the rotational position of the rotor 32, and the energized phase. Then, during the subsequent normal driving, the energized phase is determined based on the encoder count value and the learning result at the end of the initial driving.
[0033]
The learning at the time of the initial drive is specifically performed as follows. As shown in FIG. 12, when the initial drive is performed when the power is supplied to the ECU 41 in the P range, for example, W-phase energization → UW-phase energization → U-phase energization → UV-phase energization → V-phase energization → VW-phase The energization phase is switched in a predetermined time schedule in the energization order, and the rotor 32 is driven in the normal rotation direction (P range → Not P range rotation direction).
[0034]
On the other hand, when the initial drive is performed when the power is supplied to the ECU 41 in the NotP range, for example, energization is performed in the order of V-phase energization → UV-phase energization → U-phase energization → UW-phase energization → W-phase energization → VW-phase energization. The phase switching is performed once in a predetermined time schedule, and the rotor 32 is driven in the reverse rotation direction (the rotation direction from the NotP range to the P range).
[0035]
During this initial drive, the one-phase energization time T1 is set shorter than the two-phase energization time T2, for example, T1 = 10 ms and T2 = 100 ms. Even after the rotational position of the rotor 32 and the energized phase are synchronized during the initial drive, the rotor 32 vibrates in the one-phase energization with a small torque, so the time T1 of the one-phase energization is shortened, and as soon as possible. By switching to the next two-phase energization, the vibration of the rotor 32 is stopped immediately and the output signal of the encoder 46 is stabilized.
[0036]
As described above, if the switching of the energized phase is performed once during the initial drive, the rotational position of the rotor 32 and the energized phase always match in any energized phase before the end of the initial drive. The rotor 32 rotates in synchronization with the phase switching, and the A-phase signal and the B-phase signal are output from the encoder 46 in synchronization with the rotation of the rotor 32.
[0037]
During this initial drive, both rising and falling edges of the A-phase signal and the B-phase signal of the encoder 46 are counted. Therefore, by looking at the encoder count value at the end of the initial drive, the angle (rotation amount) at which the rotor 32 actually rotates in synchronization with the switching of the energized phase before the end of the initial drive can be determined. The relationship between the encoder count value at the time, the rotational position of the rotor 32, and the energized phase can be understood.
[0038]
In the example of FIG. 12, the rotor 32 rotates from the first energized phase (W phase) during the initial drive, and the rotor 32 rotates by 7.5 ° every time the energized phase is switched, and the encoder count value is incremented by two. At the end of the initial drive, the encoder count value becomes 12.
[0039]
On the other hand, for example, if the rotor 32 does not rotate in the first three excitations (W-phase energization → UW-phase energization → U-phase energization), that is, the fourth and subsequent excitations (UV-phase energization → V-phase energization → VW-phase) In the case where the rotation position of the rotor 32 and the energized phase are synchronized with each other in the energized state and the rotor 32 rotates by three times of excitation, the rotor 32 is 7.5 ° × 3 = 22.5 ° by the end of the initial drive. It rotates and the encoder count value becomes 2 × 3 = 6. Therefore, by looking at the encoder count value at the end of the initial drive, the angle (rotation amount) at which the rotor 32 actually rotates in synchronization with the switching of the energized phase before the end of the initial drive is determined.
[0040]
Although the last energized phase of the initial drive is always the VW phase, the encoder count value is not always 12 and may be, for example, 8 or 4. At the time of normal drive after the end of the initial drive, the energized phase is determined based on the encoder count value. Therefore, unless the deviation of the encoder count value due to the initial drive is corrected, the correct energized phase cannot be selected at the time of normal drive.
[0041]
Therefore, in the present embodiment, the encoder count value at the end of the initial drive is learned as the initial position deviation learning value, and the encoder count value at the time of the subsequent normal drive is corrected with the initial position deviation learning value. The deviation between the encoder count value and the energized phase (the rotational position of the rotor 32) is corrected so that the correct energized phase can be selected during normal driving.
[0042]
After the end of the initial drive, as shown in FIG. 12, the F / B control start position stop holding process described later energizes the same phase as the energized phase (VW phase) at the end of the initial drive, for example, for 10 ms, and the position of the rotor 32 becomes Is held at the position at the end of the initial driving, and thereafter, the energized phase is determined by feedback control (hereinafter referred to as “F / B control”) described later based on the encoder count value at that time and the initial position deviation learning value. By switching, the rotor 32 is rotated in the direction of the target position Acnt. Thus, when the rotational position (encoder count value) of the rotor 32 reaches, for example, within 0.5 ° from the target position Acnt, the switching of the energized phase is completed and the rotor 32 is stopped. In the position stop holding process, the same phase is continuously energized to hold the stopped state of the rotor 32, and this held state is continued for, for example, 50 ms. Thereafter, if the target position Acnt does not change, the energization is stopped.
[0043]
When the P range switch 43 or the NotP range switch 44 is operated to generate a range switching request during the initial drive, the next two-phase energization (when the range switching request occurs during the execution of the two-phase energization) is performed. After the completion of the two-phase energization, the operation shifts to the normal drive, and the correspondence between the encoder count value at the end of the two-phase energization, the rotational position of the rotor 32, and the energized phase is learned. The energized phase is determined based on the encoder count value and the learning result at the end of the two-phase energization.
[0044]
In the two-phase energization, since the torque is large, even if the position of the rotor 32 is slightly shifted from the position corresponding to the two-phase energization, the rotor 32 can be rotated to the position corresponding to the two-phase energization. Therefore, it is considered that there is a high probability that the rotation position of the rotor 32 and the energized phase can be synchronized only by performing the two-phase energization once or twice during the initial driving. Therefore, when a range switching request is generated during the initial drive, the normal two-phase energization (or the current two-phase energization) is terminated before the normal drive is started. After learning the correspondence between the count value, the rotational position of the rotor 32, and the energized phase, it is possible to quickly shift to the normal drive.
[0045]
For example, as shown in the time chart of FIG. 13, when a range switching request from the P range to the NotP range occurs during the second excitation (UW phase energization) of the initial drive, the initial drive is performed by the UW phase energization. At the same time, the process is shifted to the normal drive, and the correspondence between the encoder count value at the end of the UW phase energization, the rotational position of the rotor 32, and the energized phase is learned. In the present embodiment, even when shifting to the normal drive in the middle of the initial drive, the encoder count value at the end of the original initial drive is estimated assuming that the initial drive has been executed to the end, and the estimated value is initialized. The position deviation learning value is set. For example, as shown in FIG. 13, when the initial drive is ended by two excitations of the W-phase energization and the UW-phase energization, the initial drive is ended without performing the four scheduled excitations thereafter. Assuming that four unexcited excitations (U-phase energization → UV-phase energization → V-phase energization → VW-phase energization) have been performed, the count-up value (2) corresponding to the rotation angle for the four excitations × 4 = 8) is added to the encoder count value at the end of the UW-phase energization to obtain an initial position deviation learning value.
[0046]
By the way, during the F / B control, for example, the A-phase signal or the B-phase signal of the encoder 46 is temporarily missing for some reason, or a noise pulse superimposed on the signal line of the encoder 46 is erroneously recognized as a normal pulse signal. When the step-out or step-out occurs, the energized phase (encoder count value) and the rotation phase of the rotor 32 become out of synchronization, and the rotor 32 cannot be driven normally, whereby the rotor 32 stops. The F / B control may not be able to continue normally and the control may not be possible.
[0047]
Therefore, in the present embodiment, during the F / B control, whether the F / B control state (rotation state of the rotor 32) is normal or abnormal is monitored, and if an abnormality is detected, the F / B control is performed at that time. Is switched to open loop control and the recovery process is executed. In the execution example of the recovery processing shown in FIG. 24, during the F / B control for switching the shift range from the P range to the NotP range, the F / B control state becomes abnormal, and the rotor 32 abnormally stops or the encoder count value When an abnormal stop of the count operation of Ncnt occurs, the F / B control is switched to the open loop control to execute the recovery processing.
[0048]
During the open loop control (recovery processing), the rotor 32 is driven to rotate by sequentially switching the energized phases without feeding back the information of the encoder count value Ncnt, and the open loop control is performed each time the energized phase is switched during the open loop control. The position count value Ncntop at the time is counted up (or counted down), and when the position count value Ncntop reaches the target count value Actnt, it is determined that the rotor 32 has reached the target position, and the open loop control (recovery processing) is performed. ), And returns to the F / B control. As a result, in the present embodiment, even if an abnormality of the encoder count value Ncnt or step-out occurs during the F / B control, the F / B control state (rotation state of the rotor 32) temporarily becomes abnormal. The rotor 32 can be rotated to the target position by the open loop control.
[0049]
At this time, the abnormality detection method of the F / B control state may be any one or two or all of the following three F / B control abnormality detection methods (1) to (3). good.
[0050]
[F / B control abnormality detection method (1)]
As shown in FIG. 25, during the F / B control, the edge of the A-phase signal and the edge of the B-phase signal are separately counted, and the deviation between the count value Na of the A-phase signal and the count value Nb of the B-phase signal is calculated. The presence / absence of an abnormality in the F / B control state is monitored based on whether | Na−Nb | is equal to or greater than an abnormality determination value (for example, 3). If the A-phase signal and the B-phase signal are normally output during the F / B control, the difference between the count value Na of the A-phase signal and the count value Nb of the B-phase signal becomes 0 or 1, so that both signals are output. If the deviation | Na−Nb | of the count value of the second signal is 2 or more, it is possible that one of the signals is missing or a noise pulse is mixed. In such a state, the encoder count value Ncnt and the rotational position of the rotor 32 cannot be synchronized, and the rotational state (F / B control state) of the rotor 32 becomes abnormal. | Na-Nb | can be used to determine whether there is an abnormality in the rotation state (F / B control state) of the rotor 32.
[0051]
[F / B control abnormality detection method (2)]
As shown in FIG. 25, during the F / B control, the edge interval ΔTa of the A-phase signal and the edge interval ΔTb of the B-phase signal are measured, and the edge intervals ΔTa and ΔTb of each signal are determined to be abnormal determination values (for example, ΔTa, The presence or absence of an abnormality in the F / B control state is monitored based on whether the average is equal to or more than 10 times the average value of ΔTb).
[0052]
As the abnormality detection method (2), the abnormality may be detected by monitoring the rotor rotation speed. For example, the abnormality may be detected based on the number of output pulses of the encoder 46 per unit time. good.
[0053]
[F / B control abnormality detection method (3)]
As shown in FIG. 26, during the F / B system, the rotation direction of the rotor 32 is monitored from the change direction of the encoder count value Ncnt, and whether the rotation direction of the rotor 32 is reversed from the rotation direction toward the target position is determined. Monitor whether there is an abnormality in the F / B control state (rotation state of the rotor 32). In the present embodiment, the number of times that the encoder count value Ncnt is continuously updated in the direction opposite to the target position is counted, and F / B is determined based on whether or not the count value Cr is equal to or greater than an abnormality determination value (for example, 4). The presence or absence of an abnormality in the control state (rotation state of the rotor 32) is monitored. That is, when the encoder count value Ncnt is continuously updated in the direction opposite to the target position, for example, four times or more, it is determined that the rotor 32 is rotating in the reverse direction, and the reverse rotation detection flag Xr is turned ON.
[0054]
Further, in the present embodiment, the excitation method during the open loop control is set to the 1-2 phase excitation method, the first excitation at the start of the open loop control is performed by two-phase conduction, and as shown in FIG. For example, for three steps from the start of the loop control, the excitation time of each energized phase is set to the longest time (for example, 50 ms), and the rotor 32 is reliably gripped and the rotational phase of the rotor 32 and the energized phase are reliably synchronized. After that, the excitation time is greatly reduced, but the excitation time is gradually shortened as the rotation speed of the rotor 32 increases, so that the rotation speed of the rotor 32 is gradually increased.
[0055]
In order to estimate the rotational position of the rotor 32 during the open loop control, the initial position of the rotor 32 at the start of the open loop control (the initial value of the position count value Ncntop) is calculated based on the output signal of the output shaft sensor 14. Thereafter, every time a drive signal is output from the ECU 41 to the motor drivers 37 and 38 (motor drive circuits) to switch the energized phase, the position count value Ncntop is counted up (or down) and based on the position count value Ncntop. When the difference between the position count value Ncntop and the target count value Acnt (target position) becomes equal to or less than a predetermined value, it is determined that the vehicle has entered the deceleration region, and the excitation time is gradually increased. And the rotational speed of the rotor 32 is gradually reduced, and the position count value Ncntop is Upon reaching the count value Acnt, the rotor 32 is determined to have reached the target position, and ends the open-loop control, returns to the F / B control.
[0056]
By the way, even if the F / B control system fails and the SR motor 12 cannot be normally driven by the F / B control, there is a possibility that the SR motor 12 can be normally driven by switching to the open loop control. For example, when the encoder 46 fails, one of the two motor excitation units 35 and 36 (windings 33 and 34) of the SR motor 12 fails, or the two motor driver Even if one of the systems 37 and 38 fails and the driving force of the SR motor 12 is reduced, there is a possibility that the SR motor 12 can be driven normally by switching to the open loop control.
[0057]
Therefore, in the present embodiment, when a failure (system abnormality) of the F / B control system is detected by a system abnormality diagnosis routine of FIGS. 33 and 34 described later, a fail-safe processing routine of FIG. The SR motor 12 is driven by switching to open loop control during processing. The open loop control during the fail-safe processing is the same as the above-described open loop control during the recovery processing.
[0058]
In the present embodiment, the encoder count value Ncnt (the count value of the A-phase signal and the B-phase signal of the encoder 46) and the position count value Ncntop (the motor drive signal) during the open-loop control (during the fail-safe process and the recovery process). And the presence / absence of A / B phase disconnection of the encoder 46 is determined. Specifically, whether the difference between the change amount of the encoder count value Ncnt and the change amount of the position count value Ncntop from the start to the end of the open loop control is equal to or larger than a determination value is determined by determining whether the A phase of the encoder 46 It is determined whether there is a disconnection in phase B. For example, when both the A phase and the B phase of the encoder 46 are disconnected, the encoder count value Ncnt does not change at all even if the rotor 32 rotates during the open loop control. Further, when one of the A phase and the B phase of the encoder 46 is disconnected, the amount of change in the encoder count value Ncnt is の of the normal amount. If the SR motor 12 is normally driven during the open loop control, the change amount of the position count value Ncntop during the open loop control is a value corresponding to the rotation amount (rotation angle) of the rotor 32 during the open loop control. It becomes. Therefore, by comparing the encoder count value Ncnt and the position count value Ncntop during the open loop control, it is possible to determine whether or not the A-phase / B-phase disconnection of the encoder 46 has occurred.
[0059]
Further, in the present embodiment, in order to determine whether or not the Z-phase signal of the encoder 46 is abnormal during the open loop control, the output interval of the Z-phase signal is changed to the next Z-phase signal after the output of the previous Z-phase signal. The measurement is performed based on a change amount (rotation angle of the rotor 32) of the encoder count value Ncnt until the signal is output, and the presence or absence of abnormality of the Z-phase signal is determined based on the output interval of the Z-phase signal. That is, the amount of change (the rotation angle of the rotor 32) of the encoder count value Ncnt from the output of the previous Z-phase signal to the output of the next Z-phase signal is determined by the interval between the reference rotational positions of the rotor 32 (this embodiment). If the value is equivalent to 45 °), it is determined that the Z-phase signal is normal, and if the state in which the Z-phase signal is not output even several times beyond the reference rotational position of the rotor 32 continues several times, the encoder When it is determined that the Z-phase is disconnected (abnormal) at 46, and when the Z-phase signal is output at an interval shorter than the interval of the reference rotation position of the rotor 32, erroneous detection of the Z-phase signal due to noise or the like (abnormal) Is determined.
[0060]
With the above-described method, it is determined whether there is an abnormality in the A-phase, B-phase, and Z-phase of the encoder 46 during the open-loop control, and if the disconnection (abnormality) of the A-phase and the B-phase is detected, the open-loop control is performed. From the control to the F / B control is prohibited. That is, if the A-phase and B-phase signals of the encoder 46 become abnormal, the encoder count value Ncnt becomes abnormal. Therefore, even if the F / B control for feeding back the encoder count value Ncnt is performed, the SR motor 12 is controlled. Cannot drive normally. Therefore, in this case, by prohibiting the return to the F / B control, unnecessary F / B control is not performed, and the rotor 32 can be rotated to the target position by the open loop control.
[0061]
Further, when an abnormality of the Z-phase signal of the encoder 46 is detected during the open loop control, the Z-phase correction is prohibited. By doing so, it is possible to avoid erroneous Z-phase correction when an abnormality occurs in the Z-phase signal.
[0062]
The range switching control of the present embodiment described above is executed by the ECU 41 of the range switching control device 42 in accordance with each routine described later. Hereinafter, the processing contents of each of these routines will be described.
[0063]
[Initial drive]
This is executed according to the initial drive routine shown in FIGS. This routine is executed at a predetermined cycle (for example, 1 ms cycle) immediately after the power supply to the ECU 41 is turned on (immediately after the ignition switch is operated from the OFF position to the ACC position) until the end of the initial drive.
[0064]
When the routine is started, first, in step 101, it is determined whether the fail-safe processing execution flag Xfsop = ON or the recovery processing execution flag Xrcv = ON. Here, the fail-safe process execution flag Xfsop is a flag for determining whether or not a fail-safe process (range switching by open loop control) executed when the encoder 46 or the SR motor 12 has failed is executed. ON means being executed. The recovery process execution flag Xrcv is a flag for determining whether or not a recovery process (open loop control) that is temporarily executed when a temporary F / B control state abnormality occurs has been executed. , ON means being executed.
[0065]
If “Yes” is determined in step 101, the present routine is terminated without performing the subsequent processing, and if “No” is determined, the process proceeds to step 102 and the output from the initial processing of the ECU 41 is performed. It is determined whether a predetermined time (for example, 100 ms) for waiting for the output voltage of the axis sensor 14 to stabilize has elapsed. Then, when a predetermined time has elapsed from the initial processing, the process proceeds to step 103, where the output voltage of the output shaft sensor 14 is read, and whether or not the current range is the P range is determined by whether or not this output voltage is equal to or less than the range determination value. It is determined whether the range is the NotP range. If the range is the P range, the process proceeds to step 104, where the range determination flag Xnp is set to “0” meaning the P range. If the range is the NotP range, the process proceeds to step 105 and the range determination flag Xnp Is set to “1” meaning NotP range.
[0066]
Thereafter, the process proceeds to step 106, where it is determined whether or not the range determination flag Xnp = 0 (P range). If the range determination flag Xnp = 0 (P range), the process proceeds to step 107, where P The range initial drive routine is executed, and if the range determination flag Xnp = 1 (NotP range), the routine proceeds to step 108, where the NotP range initial drive routine of FIG. 11 is executed.
[0067]
When the P range initial drive routine of FIG. 10 is started in step 107, in steps 201 to 206, it is determined whether the excitation number counter CASE for counting the number of excitations during the initial drive is 0 to 5. . The excitation number counter CASE has an initial value of 0 set in the initial processing, and is incremented by one each time excitation is performed once (step 114 in FIG. 9). Then, the energizing phase and the energizing time T are set as follows according to the determination result of the excitation number counter CASE.
[0068]
If CASE = 0 (first excitation), the process proceeds to step 207, where W-phase energization is selected, and the energization time T is set to T1 (for example, 10 ms).
If CASE = 1 (second excitation), the process proceeds to step 208, where UW-phase energization is selected, and the energization time T is set to T2 (for example, 100 ms).
[0069]
If CASE = 2 (third excitation), the process proceeds to step 209 to select U-phase energization and set the energization time T to T1 (for example, 10 ms).
If CASE = 3 (fourth excitation), the process proceeds to step 210, where UV phase energization is selected, and the energization time T is set to T2 (for example, 100 ms).
[0070]
If CASE = 4 (fifth excitation), the process proceeds to step 211, where V-phase energization is selected, and the energization time T is set to T1 (for example, 10 ms).
If CASE = 5 (sixth excitation), the process proceeds to step 212, where VW-phase energization is selected, and the energization time T is set to T2 (for example, 100 ms).
[0071]
Thus, when the initial drive is performed in the P range, the energized phases are switched in the order of W-phase energization → UW-phase energization → U-phase energization → UV-phase energization → V-phase energization → VW-phase energization, and the rotor 32 is rotated. Driving is performed in the forward rotation direction (P range → NotP range rotation direction). At this time, the one-phase energization time T1 is set shorter than the two-phase energization time T2.
[0072]
On the other hand, when the NotP range initial drive routine of FIG. 11 is started in step 108, it is determined in steps 221 to 226 whether the excitation number counter CASE is 0 to 5 and the energization is performed according to the determination result. The phase and the energizing time T are set as follows.
[0073]
If CASE = 0 (first excitation), the process proceeds to step 227, where V-phase energization is selected, and the energization time T is set to T1 (for example, 10 ms).
If CASE = 1 (second excitation), the process proceeds to step 228, where UV phase energization is selected, and the energization time T is set to T2 (for example, 100 ms).
[0074]
If CASE = 2 (third excitation), the process proceeds to step 229, where U-phase energization is selected, and the energization time T is set to T1 (for example, 10 ms).
If CASE = 3 (fourth excitation), the process proceeds to step 230, where UW-phase energization is selected, and the energization time T is set to T2 (for example, 100 ms).
[0075]
If CASE = 4 (fifth excitation), the process proceeds to step 231, where W-phase energization is selected, and the energization time T is set to T1 (for example, 10 ms).
If CASE = 5 (sixth excitation), the process proceeds to step 232, where VW-phase energization is selected, and the energization time T is set to T2 (for example, 100 ms).
[0076]
Thus, when the initial drive is performed in the NotP range, the switching of the energized phases is performed in the order of V phase energization → UV phase energization → U phase energization → UW phase energization → W phase energization → VW phase energization, and the rotor 32 Drive is performed in the reverse rotation direction (the rotation direction from the NotP range to the P range). Also in this case, the one-phase energization time T1 is set shorter than the two-phase energization time T2.
[0077]
After executing the P range initial drive routine of FIG. 10 or the NotP range initial drive routine of FIG. 11 as described above, the process proceeds to step 109 of FIG. 8, and the range switching operation (P range switch 43 or NotP It is determined whether or not the range switch 44 has been operated). If the range switch operation has been performed during the initial drive, the process proceeds to step 110, where the range switch operation flag Xchg is set to ON, and the range switch operation is performed. If not, the routine proceeds to step 111, where the range switching operation flag Xchg is set to OFF.
[0078]
Thereafter, the process proceeds to step 112 in FIG. 9, in which the energizing time counter CT for counting the energizing time of the current energizing phase is counted up. It is determined whether or not the energization time T (= T1 or T2) set in the routine 11 has been exceeded, and if not, this routine is terminated without performing the subsequent processing. Thereby, the energization to the current energized phase is continued until the energized time CT of the current energized phase exceeds the energized time T (= T1 or T2) set in the routine of FIG. 10 or FIG.
[0079]
Thereafter, when the energization time CT of the current energization phase exceeds the energization time T (= T1 or T2) set in the routine of FIG. 10 or FIG. 11, the routine proceeds to step 114, where the excitation number counter CASE is counted up by one. Then, the energized phase is switched to the next energized phase. Then, in the next step 115, after resetting the energization time counter CT, the routine proceeds to step 116, where it is determined whether or not the excitation number counter CASE has reached "6" indicating the end of the initial drive. If the number counter CASE has reached "6", the routine proceeds to step 118, where the initial drive end flag Xend is set to "ON" indicating the end of the initial drive.
[0080]
If the number-of-excitations counter CASE has not reached "6", that is, if the initial drive is being performed, the process proceeds to step 117, and it is determined whether the condition for ending the initial drive is satisfied. The condition for terminating the initial drive halfway is determined by the following three conditions (1) to (3).
(1) The range determination flag Xnp is 0 (P range)
{Circle around (2)} The excitation number counter CASE is 2 or 4, that is, the end of two-phase energization.
(3) The range switching operation flag Xchg is ON, that is, the range switching operation has been performed during the initial drive.
[0081]
If at least one of these three conditions (1) to (3) is not satisfied, the condition for ending the initial drive is not satisfied, and the initial drive is continued. On the other hand, if all of the three conditions (1) to (3) are satisfied, the condition for terminating the middle of the initial drive is satisfied, the process proceeds to step 118, and the initial drive end flag Xend indicates the end of the initial drive. Set to “ON”.
[0082]
Thereafter, the process proceeds to step 119, where it is determined whether or not the range determination flag Xnp = 1 (whether or not the initial drive was performed in the NotP range). If the range determination flag Xnp = 1, the process proceeds to step 120, The encoder count value Ncnt at the end of the initial drive is stored as an initial position deviation learning value Gcnt. Then, in the next step 121, the encoder count value Ncnt is corrected to a value based on the NotP range by the following equation.
Ncnt = Ncnt + 288
[0083]
In the present embodiment, the encoder count value Ncnt is counted up by setting the holding position of the P range to the zero point position, and when the rotor 32 rotates to the holding position of the NotP range, the encoder count value Ncnt becomes, for example, 288. ing. Therefore, when the initial drive is performed in the NotP range, the encoder count value Ncnt is corrected to a value based on the NotP range by adding 288 to the encoder count value Ncnt at the end of the initial drive.
[0084]
On the other hand, if it is determined in step 119 that the range determination flag Xnp = 0 (initial driving in the P range), the process proceeds to step 122, where the initial position deviation learning value Gcnt is calculated using the encoder count value Ncnt at the end of the initial driving. It is calculated by the following equation.
Gcnt = Ncnt + 2 × (6-CASE)
[0085]
In this case, if the initial drive is performed to the end, CASE = 6 by the processing of step 114, so that the encoder count value Ncnt at the end of the initial drive becomes the initial position deviation learning value Gcnt as it is, but the initial drive in the P range is performed. Is performed, when the range switching operation is performed during the initial driving, the next two-phase energization (or when a range switching request occurs during the execution of the two-phase energization, the two-phase energization) ends. To the normal drive, the initial drive is assumed to have been executed to the end, the encoder count value Ncnt at the end of the initial drive is estimated, and the estimated value is used as the initial position deviation learning value Gcnt. ing. 2 × (6-CASE) is a count-up value (hereinafter referred to as “Ncnt correction amount”) corresponding to the rotation angle for the number of unfinished excitations.
[0086]
FIG. 14 is a time chart for explaining the relationship among the excitation number counter CASE, the Ncnt correction amount, the energized phase, the A-phase signal, the B-phase signal, and the encoder count value Ncnt during the initial drive. For example, if the initial drive is to be terminated at the end of the UW-phase energization (when the number-of-excitations counter CASE has changed from 1 to 2) during the initial drive, the Ncnt correction amount = 2 × (6-CASE) = 2 × ( 6-2) = 8, and when ending the initial drive at the end of the UV-phase energization (when the number-of-excitations counter CASE changes from 3 to 4), Ncnt correction amount = 2 × (6-CASE) = 2 × (6-4) = 4.
[0087]
[Encoder counter]
Next, the processing content of the encoder counter routine shown in FIG. 15 will be described. This routine is started in synchronization with both the rising / falling edges of the A-phase signal and the B-phase signal by the AB-phase interrupt processing, and the rising / falling edges of the A-phase signal and the B-phase signal are set next. Count as follows. When this routine is started, first, in step 301, the values A (i) and B (i) of the A-phase signal and the B-phase signal are read, and in the next step 302, the count-up value ΔN calculation map of FIG. A search is performed to calculate a current value A (i), B (i) of the A-phase signal and the B-phase signal and a count-up value ΔN corresponding to the previous value A (i−1), B (i−1). .
[0088]
Here, the reason why the present values A (i) and B (i) of the A-phase signal and the B-phase signal and the previous values A (i-1) and B (i-1) are used is that the A-phase signal and the B-phase signal are used. This is because the rotation direction of the rotor 32 is determined based on the order in which the signals are generated. As shown in FIG. Is counted up, and in the reverse rotation (the rotation direction from the NotP range to the P range), the count-up value ΔN is set to a negative value, and the encoder count value Ncnt is counted down.
[0089]
After calculating the count-up value ΔN, the process proceeds to step 303, where the count-up value ΔN calculated in step 302 is added to the previous encoder count value Ncnt to determine the current encoder count value Ncnt. Thereafter, the process proceeds to step 304, where the current values A (i) and B (i) of the A-phase signal and the B-phase signal are changed to A (i-1) and B (i-1) for the next count processing. And the routine ends.
[0090]
[Motor F / B control]
Next, the processing content of the motor F / B control routine shown in FIG. 18 will be described. This routine is executed by the AB-phase interrupt processing and serves as the F / B control means referred to in the claims. When the motor F / B control execution condition is satisfied after the end of the initial driving, the rotor 32 is controlled. The energized phase is switched based on the encoder count value Ncnt and the initial position deviation learning value Gcnt until the rotational position (encoder count value Ncnt) of the target position Acnt reaches, for example, within 0.5 ° from the target position Acnt, and the rotor 32 is moved to the target position. Rotate in the direction of Acnt. Here, the motor F / B control execution condition is satisfied, for example, when all of the following conditions (1) to (4) are satisfied.
[0091]
(1) After the end of the initial drive (initial drive end flag Xend = ON)
(2) No fail-safe processing is performed (fail-safe processing execution flag Xfsop = OFF)
{Circle around (3)} Recovery processing is not being performed (recovery processing execution flag Xrcv = OFF)
(4) A predetermined stop holding time (for example, 10 ms) has elapsed since the end of the initial drive, or a predetermined stop holding time (for example, 10 ms) has elapsed since the start of motor energization.
[0092]
The stop holding time (4) is provided to determine the position of the rotor 32 at the start of the F / B control.
When all of the above conditions (1) to (4) are satisfied, the motor F / B control execution condition is satisfied, and the F / B permission flag Xfb is set to ON.
[0093]
When the motor F / B control routine of FIG. 18 is started, first, in step 311, whether the F / B permission flag Xfb is set to ON (whether the motor F / B control execution condition is satisfied or not) ), And if the F / B permission flag Xfb is OFF (the F / B control execution condition is not satisfied), the routine ends without performing the subsequent processing.
[0094]
On the other hand, if the F / B permission flag Xfb is set to ON, the routine proceeds to step 312, where the energized phase setting routine shown in FIG. 19 described later is executed, and the current encoder count value Ncnt and the initial position deviation learning value are set. The energization phase is set based on Gcnt, and in the next step 313, an energization processing routine (not shown) is executed to energize the energization phase set in step 312.
[0095]
On the other hand, when the energization phase setting routine of FIG. 19 is started in step 312, the rotation direction instruction value D is "1" meaning forward rotation (rotation direction from P range to NotP range) in step 321. It is determined whether or not. The rotation direction instruction value D is set based on the magnitude relationship between the current encoder count value Ncnt and the target value Acnt.
[0096]
If the rotation direction instruction value D = 1 (forward rotation), the process proceeds to step 322, where it is determined whether the rotation direction has been reversed in reverse to the rotation direction instruction (whether the encoder count value Ncnt has decreased). If not, the process proceeds to step 323, and the energized phase determination value Mptn is calculated using the current encoder count value Ncnt, the initial position deviation learning value Gcnt, the forward rotation direction phase lead amount K1, and the speed correction amount Ks by the following equation. Update.
Mptn = Ncnt−Gcnt + K1 + Ks
[0097]
Here, the forward rotation direction phase lead amount K1 is the phase lead amount of the conduction phase necessary for rotating the rotor 32 in the forward direction (the phase lead amount of the conduction phase with respect to the current position of the rotor 32). For example, K1 = 4 Is set.
[0098]
The speed correction amount Ks is a phase lead correction amount set according to the rotation speed of the rotor 32. In the low speed range, the speed correction amount Ks is set to 0, and as the speed increases, the speed correction amount Ks is increased to, for example, 1 or 2. Thus, the energized phase determination value Mptn is corrected so that the energized phase is suitable for the rotation speed of the rotor 32.
[0099]
On the other hand, if it is determined in step 322 that the rotation direction has been reversed against the rotation direction instruction, the energized phase determination value Mptn is not updated to prevent reverse rotation. In this case, electricity is supplied to the energized phase immediately before the reverse rotation (previous energized phase), and a braking torque is generated in a direction to suppress the reverse rotation of the rotor 32.
[0100]
If it is determined in step 321 that the rotation direction instruction value D = 0 (reverse rotation), that is, the rotation direction is from NotP range to P range, the process proceeds to step 324, where the rotation direction is reversed against the rotation direction instruction. It is determined whether or not the encoder count value Ncnt has increased. If the rotation has not been reversed, the process proceeds to step 325, where the current encoder count value Ncnt, the initial displacement learning value Gcnt, and the phase in the reverse rotation direction are advanced. The energized phase determination value Mptn is updated by the following equation using the amount K2 and the speed correction amount Ks.
Mptn = Ncnt-Gcnt-K2-Ks
[0101]
Here, the amount of phase advance K2 in the reverse rotation direction is the amount of phase advance of the energized phase required to rotate the rotor 32 in the reverse direction (the amount of phase advance of the energized phase with respect to the current position of the rotor 32). Is set. The speed correction amount Ks is the same as in the case of the forward rotation.
[0102]
On the other hand, when it is determined in step 324 that the rotation direction has been reversed against the rotation direction instruction, the energized phase determination value Mptn is not updated to prevent the rotation from being reversed. In this case, electricity is supplied to the energized phase immediately before the reverse rotation (previous energized phase), and a braking torque is generated in a direction to suppress the reverse rotation of the rotor 32.
[0103]
After the current energized phase determination value Mptn is determined as described above, the process proceeds to step 326, where the energized phase determination value Mptn is divided by "12" to obtain the remainder Mptn% 12. Here, “12” corresponds to the increase / decrease amount of the encoder count value Ncnt during one cycle of the energized phase.
[0104]
After the calculation of Mptn% 12, the process proceeds to step 327, where the conversion table of FIG. 20 is searched, and the energized phase corresponding to Mptn% 12 is selected and set as the current energized phase.
[0105]
FIG. 21 is a time chart for explaining a phase that is first energized when rotation is started from the U phase. In this case, since the speed correction amount Ks = 0, when the forward rotation (rotation in the direction from the P range to the NotP range) is started, the energized phase determination value Mptn is calculated by the following equation.
Mptn = Ncnt−Gcnt + K1 = Ncnt−Gcnt + 4
When starting the normal rotation from the U phase, the remainder of (Ncnt−Gcnt) / 12 is 6, so that Mptn% 12 = 6 + 4 = 10, and the first energized phase is the V phase.
[0106]
On the other hand, when the reverse rotation (rotation from the NotP range to the P range direction) is started from the U phase, the energized phase determination value Mptn is calculated by the following equation.
Mptn = Ncnt-Gcnt-K2 = Ncnt-Gcnt-3
When the reverse rotation is started from the U phase, Mptn% 12 = 6-3 = 3, and the first energized phase is the W phase.
[0107]
In this way, by setting the forward rotation direction phase lead amount K1 and the reverse rotation direction phase lead amount K2 to 4 and 3, respectively, the switching pattern of the energized phase in the forward rotation direction and the reverse rotation direction can be made symmetric. In both the forward rotation direction and the reverse rotation direction, the phase at a position shifted by two steps from the current position of the rotor 32 can be first excited to start rotation.
[0108]
[Z phase correction]
By the way, while the SR motor 12 is rotating, as shown in FIG. 23, the A-phase signal and the B-phase signal are alternately output from the encoder 46 in synchronization with the rotation of the rotor 32, and the switching of the energized phase goes through one cycle. Each time the rotor 32 rotates 45 °, a Z-phase signal is output. Since the reference rotational position of the rotor 32 can be accurately detected from the Z-phase signal, the energized phase (encoder count value) when the Z-phase signal is output changes to the energized phase (encoder count value) corresponding to the reference rotational position of the rotor 32. ), It is possible to confirm whether or not the correspondence between the rotational position of the rotor 32 and the energized phase (encoder count value) is not shifted. By performing the Z-phase correction for correcting the deviation, highly reliable motor control can be performed.
[0109]
This Z-phase correction is executed by a Z-phase correction routine shown in FIG. This routine is started in synchronization with both rising and falling edges of the A-phase signal by the A-phase interrupt processing. When this routine is started, first, at step 401, it is determined whether or not the following (1) to (3) Z-phase correction execution conditions are satisfied.
(1) The value Z of the Z-phase signal is 1 (high level)
{Circle around (2)} The encoder failure flag Xfailenc is set to OFF, meaning that there is no failure of the encoder 46.
{Circle around (3)} The Z-phase correction prohibition flag Xzng is set to OFF, meaning that Z-phase correction is permitted.
[0110]
Here, the encoder failure flag Xfailenc is determined to be a failure of the encoder 46 when the number of times of the Z-phase correction exceeds the determination value, and Xfailenc = ON is set in step 410 described later. Further, the Z-phase correction prohibition flag Xzng is set to Xzng = ON when an abnormality of the Z-phase signal of the encoder 46 is detected in the routine of FIG.
[0111]
If at least one of the above conditions (1) to (3) is not satisfied, the Z-phase correction execution condition is not satisfied, and the routine ends without performing the subsequent processing.
[0112]
On the other hand, if all of the above conditions (1) to (3) are satisfied, the condition for executing the Z-phase correction is satisfied, and the routine proceeds to step 402, where the Z-phase signal is output (the value Z of the Z-phase signal is inverted to 1). ) Is stored. The position detection count value Nzone is obtained by correcting the encoder count value Ncnt at the time of outputting the Z-phase signal with the initial position deviation learning value Gcnt. The reference rotation position of the rotor 32 (when the Z-phase signal is Output position) is detected.
Nzone = Ncnt−Gcnt
[0113]
After that, the process proceeds to step 403, and whether the rotation direction of the rotor 32 is the forward rotation direction (the rotation direction from the P range to the NotP range) is determined by whether or not the current activation timing of this routine is the rising of the A-phase signal. Determine whether or not.
[0114]
As shown in FIG. 23, since the A-phase signal and the Z-phase signal are output with a phase difference of 90 ° in electrical angle, the Z-phase signal output period in the forward rotation direction (the rotation direction from the P range to the NotP range). During the Z-phase signal output period, the A-phase signal falls in the reverse rotation direction (NotP range → P range rotation direction). Therefore, whether the A-phase signal rises or falls during the Z-phase signal output period can determine whether the rotation direction is the normal rotation direction or the reverse rotation direction.
[0115]
If it is determined in step 403 that the activation timing of this routine is the rising timing of the A-phase signal, that is, the rotation direction of the rotor 32 is the forward rotation direction (the rotation direction from the P range to the NotP range), Proceeding to 404, a deviation gz between the design value and the actual value of the energized phase when the Z-phase signal is output is calculated.
gz = K1-Nzon% 12
[0116]
Here, K1 is a forward rotation direction lead amount of an energized phase required for rotating the rotor 32 in the forward direction, and is set to, for example, K1 = 4. Nzone% 12 is the remainder when the position detection count value Nzon at the time of outputting the Z-phase signal is divided by “12”.
[0117]
In the present embodiment, as shown in FIG. 23, Nzon% 12 is designed to be 4 in the forward rotation direction (P range → NotP range rotation direction), so that the control system operates normally. If so, gz = K1−Nzon% 12 = 0.
[0118]
On the other hand, when it is determined in step 403 that the current activation timing of this routine is the falling timing of the A-phase signal, that is, the rotation direction of the rotor 32 is the reverse rotation direction (the rotation direction from the NotP range to the P range). Proceeds to step 405, and calculates a deviation gz between the design value and the actual value of the energized phase when the Z-phase signal is output.
gz = K2-Nzon% 12
Here, K2 is the amount of phase advance in the reverse rotation direction of the energization phase required to rotate the rotor 32 in the reverse direction, for example, K2 = 3.
[0119]
In the present embodiment, as shown in FIG. 23, Nzon% 12 is designed to be 3 in the reverse rotation direction (the rotation direction from the NotP range to the P range), so that the control system operates normally. If so, gz = K2−Nzon% 12 = 0.
[0120]
After calculating the deviation gz between the design value and the actual value, the process proceeds to step 406, and it is determined whether the deviation gz between the design value and the actual value of the energized phase at the time of outputting the Z-phase signal is 0, and If the deviation gz from the actual value is 0, the control system is operating normally, and this routine ends without performing the subsequent processing such as Z-phase correction.
[0121]
On the other hand, if the deviation gz between the design value and the actual value of the energized phase at the time of outputting the Z-phase signal is not 0, it is determined that the Z-phase correction is necessary, and the process proceeds to step 407, where the number of times of the Z-phase correction is The Z-phase correction number counter Cgz to be counted is counted up, and the routine proceeds to step 408, where the deviation of the initial position deviation learning value Gcnt is corrected by the deviation gz between the design value and the actual value.
Gcnt = Gcnt−gz
[0122]
Thereafter, it is determined whether or not the value of the Z-phase correction number counter Cgz (the number of Z-phase corrections) has exceeded a determination value. If the value is equal to or less than the determination value, it is not determined that the encoder 46 has failed yet. If the value of the number-of-corrections counter Cgz (the number of times of Z-phase correction) exceeds the determination value, it is determined that the encoder 46 has failed, and the routine proceeds to step 410, where the encoder failure flag Xfailenc is set to ON indicating that the encoder 46 has a failure. And the routine ends.
[0123]
When the encoder failure flag Xfailenc is set to ON, the routine is always determined as “No” in step 401 and the routine is forcibly terminated even if the routine is started by the A-phase interrupt processing thereafter. , Z-phase correction is not performed.
[0124]
[Recovery processing]
The recovery processing routine shown in FIG. 28 is started at a predetermined cycle (for example, 1 ms cycle), and executes the recovery processing as follows when the F / B control state becomes abnormal. When this routine is started, first, in step 801, it is determined whether or not the recovery processing execution flag Xrcv is OFF. If Xrcv = OFF (recovery processing is not being executed), the process proceeds to step 802, and the next step is performed. It is determined whether the recovery processing execution conditions (1) to (4) are satisfied.
[0125]
(1) The A-phase signal, B-phase signal of the encoder 46, and the output signal of the output shaft sensor 14 are all normal.
(2) All abnormality detection flags Xfnsw, Xfcnt, and Xfrcv set in a system abnormality diagnosis routine of FIG.
(3) F / B permission flag Xfb is ON (F / B control is being performed)
(4) One of three abnormality detection flags Xfab, Xfta, and Xftb relating to the A-phase signal and the B-phase signal set in the AB-phase signal abnormality detection routine during F / B control in FIG. Or the reverse rotation detection flag Xr set in a reverse rotation determination routine of FIG. 32 described later is ON (there is reverse rotation).
[0126]
If at least one of the four conditions (1) to (4) is not satisfied, the recovery processing execution condition is not satisfied, and the routine ends without performing the subsequent processing.
[0127]
On the other hand, if all of the above conditions (1) to (4) are satisfied, the recovery process execution condition is satisfied, the process proceeds from step 802 to step 803, the recovery process execution flag Xrcv is set to ON, and the next step 804 Then, based on the relationship shown in FIG. 29, the current position count value Ncntop is calculated by the following equation using the current output signal Vnsw of the output shaft sensor 14.
Ncntop = INT [{(Vnsw−Vp) / ΔV
× Kop × 61 / 3.75-Kofp} × 1/2] × 2
ΔV = Vnp−Vp
[0128]
Here, INT is a function for converting a numerical value in [] into an integer, Vp is a P range output learning value of the output shaft sensor 14, Vnp is a NotP range output learning value of the output shaft sensor 14, and Kop is a detent lever 15 The maximum rotation angle and Kofp are offset values on the P range side. The above equation is set so that the position count value Ncntop is a multiple of two.
[0129]
The maximum rotation angle Kop of the detent lever 15 is the rotation angle of the detent lever 15 from the side wall of the P range holding recess 24 of the detent lever 15 to the side wall of the NotP range holding recess 25, and the design value ΔNd of the movable range of the detent lever 15 And the play amount ΔGp on the P range side. In the present embodiment, ΔNd = 20.5 (deg) and ΔGp = 3 (deg).
Figure 2004056856
[0130]
In the above formula for calculating the position count value Ncntop, Kop × 61 / 3.75 is a value obtained by converting the maximum rotation angle Kop of the detent lever 15 into the number of motor drive steps (the number of excitations). “61” is the reduction ratio of the reduction mechanism 26, and “3.75” is the rotation angle of the rotor 32 in one step (per excitation). This position count value Ncntop is used as an initial value of the position count value Ncntop at the start of the open loop control.
[0131]
After calculating the position count value Ncntop, the process proceeds to step 805, where a recovery process execution number counter Crcv for counting the number of times of execution of the recovery process is counted up, and in the next step 806, the open loop control execution flag Xopen is set to ON. The open loop control is executed by an open loop control routine shown in FIG.
[0132]
During execution of the recovery process (open loop control), each time this routine is started, “No” is determined in step 801, and the process proceeds to step 807, where the open loop control completion flag Xopcmp indicates that the open loop control is completed. Then, it is determined whether or not Xopcmp = OFF, and if Xopcmp = OFF, this routine is terminated as it is, and the open loop control is continued.
[0133]
After that, when the open loop control is completed, the process proceeds to step 808, where the initial drive is re-executed, and the initial drive end flag Xend = OFF (initial drive is not completed), the range switching operation flag Xchg = OFF (range switching operation) None), the energization time counter CT = 0, the number of excitation counter CASE = 0, the encoder count value Ncnt = 0, and the initial position deviation learning value Gcnt = 0. Then, in the next step 811, after setting the open loop control execution flag Xopen = OFF and ending the open loop control (recovery processing), the process proceeds to step 812, where the recovery processing execution flag Xrcv = OFF, the A-phase signal, B A phase signal abnormality detection flag Xfab = OFF, Xfta = OFF, Xftb = OFF, and a third abnormality detection flag Xfrcv = OFF described later are set.
[0134]
[AB phase signal error detection during F / B control]
The F / B control AB phase signal abnormality detection routine shown in FIG. 30 is started at a predetermined cycle (for example, 1 ms cycle), and determines whether there is an abnormality in the A phase signal and the B phase signal of the encoder 46 during the F / B control. Is determined as follows. When this routine is started, first, in step 821, it is determined whether or not the F / B permission flag Xfb = ON (F / B control is being performed). If the F / B permission flag Xfb = OFF, the process proceeds to step 821. Proceeding to step 822, the A-phase signal counter Na = 0, the B-phase signal counter Nb = 0, the A-phase signal edge interval counter ΔTa = 0, and the B-phase signal edge interval counter ΔTb = 0, and this routine ends.
[0135]
On the other hand, if it is determined in step 821 that the F / B permission flag Xfb = ON (F / B control is being performed), the AB phase signal abnormality determination execution condition is satisfied, and the process proceeds to step 823, where the A phase signal is determined. A deviation ΔNab between the count value Na and the B-phase signal count value Nb is calculated.
ΔNab = | Na-Nb |
Here, the A-phase signal count value Na and the B-phase signal count value Nb are values obtained by separately counting the edges of the A-phase signal and the edges of the B-phase signal.
[0136]
Then, in the next step 824, the AB-phase signal count value deviation ΔNab is compared with the abnormality determination value Kab (for example, 3), and if the AB-phase signal count value deviation ΔNab is equal to or greater than the abnormality determination value Kab, the A-phase signal It is determined that one of the count value Na and the B-phase signal count value Nb is abnormal, and the process proceeds to step 825, where the AB-phase signal abnormality detection flag Xfab is set to ON (abnormal), and the process proceeds to the next step 826. move on.
[0137]
On the other hand, if the AB phase signal count value deviation ΔNab is smaller than the abnormality determination value Kab, the AB phase signal abnormality detection flag Xfab is kept OFF (no abnormality), and the routine proceeds to step 826.
[0138]
If the A-phase signal and the B-phase signal are normally output during the F / B control, the deviation ΔNab between the A-phase signal count value Na and the B-phase signal count value Nb becomes 0 or 1, so If the signal count value deviation ΔNab is 2 or more, it is possible that one of the signals is missing or a noise pulse is mixed in (see FIG. 25). Therefore, whether or not the A-phase signal and the B-phase signal are abnormal can be determined based on whether or not the AB-phase signal count value deviation ΔNab is equal to or larger than the abnormality determination value Kab. In the present embodiment, the abnormality determination value Kab is set to 3 with a margin, but may be set to 2 or 4 or more.
[0139]
After performing the abnormality determination process based on the AB-phase signal count value deviation ΔNab as described above, the process proceeds to step 826, where the counters that count the edge interval ΔTa of the A-phase signal and the edge interval ΔTb of the B-phase signal are counted up. After that, the process proceeds to step 827, where the A-phase signal edge interval ΔTa is compared with the abnormality determination value Kta (for example, a value that is 10 times the average value of ΔTa), and if the A-phase signal edge interval ΔTa is equal to or greater than the abnormality determination value Kta. If so, it is determined that the A-phase signal is abnormal, and the routine proceeds to step 828, where the A-phase signal abnormality detection flag Xfta is set to ON (abnormal), and the routine proceeds to the next step 829.
[0140]
On the other hand, if the A-phase signal edge interval ΔTa is less than the abnormality determination value Kta, the A-phase signal abnormality detection flag Xfta is kept OFF (no abnormality), and the routine proceeds to step 829. Then, in step 829, the B-phase signal edge interval ΔTb is compared with an abnormality determination value Ktb (for example, a value ten times the average value of ΔTb), and if the B-phase signal edge interval ΔTb is greater than or equal to the abnormality determination value Ktb. For example, it is determined that the B-phase signal is abnormal, the process proceeds to step 830, the B-phase signal abnormality detection flag Xftb is set to ON (abnormal), and the routine ends.
[0141]
On the other hand, if the B-phase signal edge interval ΔTb is smaller than the abnormality determination value Ktb, the B-phase signal abnormality detection flag Xftb is kept OFF (no abnormality), and this routine ends.
[0142]
Since the edge intervals ΔTa and ΔTb of each signal change according to the rotor rotation speed, if the edge intervals ΔTa and ΔTb of each signal become too long during the F / B control, the rotor 32 stops abnormally and abnormally stops. Since a drop and a missing pulse are considered (see FIG. 25), A is determined by whether or not the edge intervals ΔTa and ΔTb of each signal are equal to or larger than the abnormality determination values Kta and Kta (for example, 10 times the average value of ΔTa and ΔTb). It is possible to determine whether or not the phase signal and the B-phase signal are abnormal.
[0143]
If the edge intervals ΔTa and ΔTb of each signal become too short, the noise pulse may be erroneously recognized as a legitimate pulse signal. Therefore, the edge intervals ΔTa and ΔTb of each signal are equal to or less than a predetermined abnormality determination value. May be used to determine whether there is an abnormality in the A-phase signal and the B-phase signal.
[0144]
Further, only one of the abnormality determination processing based on the AB phase signal count value deviation ΔNab (steps 823 to 825) and the abnormality determination processing based on the edge intervals ΔTa and ΔTb of each signal (steps 826 to 830) is performed, and the other is performed. The processing may be omitted.
[0145]
[Reverse counter]
The reverse rotation counter routine shown in FIG. 31 is executed by the AB phase interrupt processing, and counts the number of times the rotation direction of the rotor 32 continuously reverses against the rotation direction instruction as follows. When this routine is started, first, in step 831, the rotation direction instruction value D is any one of 1 (the rotation direction from the P range to the NotP range), 0 (stop), and -1 (the rotation direction from the NotP range to the P range). Is determined, and if the rotation direction instruction value D is 0 (stop), this routine ends without performing the subsequent processing.
[0146]
On the other hand, if the rotation direction instruction value D is 1 (the rotation direction from the P range to the NotP range), the process proceeds to step 832, where the previous encoder count value Ncnt (i-1) and the current encoder count value Ncnt (i) are obtained. It is determined whether or not the rotation direction of the rotor 32 has been reversed (whether or not the encoder count value Ncnt has decreased) against the rotation direction instruction by determining whether or not the difference is equal to or greater than 1. The process proceeds to step 834 to count up the reverse rotation counter Cr for counting the number of reverse rotations. If the reverse rotation has not been performed, the process proceeds to step 835 to reset the reverse rotation counter Cr to zero.
[0147]
If the rotation direction instruction value D is -1 (the rotation direction from the NotP range to the P range), the process proceeds to step 833, and the previous encoder count value Ncnt (i-1) and the current encoder count value Ncnt (i) It is determined whether or not the rotation direction of the rotor 32 has been reversed (whether or not the encoder count value Ncnt has increased) against the rotation direction instruction, based on whether or not the difference from the rotation direction is less than or equal to −1. If so, the flow proceeds to step 836, where the reverse rotation counter Cr is counted up. If the rotation is not reversed, the flow proceeds to step 835 to reset the reverse rotation counter Cr to zero.
[0148]
[Reverse judgment]
The reverse rotation determination routine shown in FIG. 32 is started at a predetermined cycle (for example, 1 ms cycle). When this routine is started, first, in step 841, it is determined whether or not the F / B permission flag Xfb = ON (F / B control is being performed). Proceeding to 844, the reverse rotation detection flag Xr is set to OFF, and this routine ends.
[0149]
On the other hand, if it is determined in step 841 that the F / B permission flag Xfb = ON (F / B control is being performed), the reverse rotation determination execution condition is satisfied, and the routine proceeds to step 842, where the reverse rotation counter routine of FIG. It is determined whether or not the rotor 32 continues to rotate reversely against the rotation direction instruction by determining whether or not the reverse rotation count value Cr obtained in the above is equal to or greater than the abnormality determination value Kr (for example, 4). If it is equal to or greater than the determination value Kr, the process proceeds to step 843, where the reverse rotation detection flag Xr is set to ON to determine the determination of the reverse rotation. If the reverse rotation count value Cr is less than the abnormality determination value Kr, the process proceeds to step 844 to perform the reverse rotation. The detection flag Xr is kept off.
[0150]
[System error diagnosis]
The system abnormality diagnosis routine shown in FIG. 33 is started at a predetermined cycle (for example, a cycle of 8 ms). When this routine is started, first, in step 851, it is determined whether or not the following abnormality diagnosis execution conditions (1) and (2) are satisfied.
(1) A predetermined time (for example, 1 s) has elapsed after the power supply to the ECU 41 is turned on by operating an ignition switch (not shown).
(2) Recovery processing is not being executed (recovery processing execution flag Xrcv = OFF)
[0151]
If any one of these two conditions (1) and (2) is not satisfied, the abnormality diagnosis execution condition is not satisfied, and the routine proceeds to step 852, where the provisional abnormal state continuation time counters Cfnsw and Cfcnt are described. This routine is reset to 0 and the routine ends.
[0152]
On the other hand, if both of the above two conditions (1) and (2) are satisfied, the abnormality diagnosis execution condition is satisfied, and the routine proceeds from step 851 to step 854, where the output shaft sensor 14 is normal and the command shift range And the range detected from the output signal Vnsw of the output shaft sensor 14 is determined. If the determination result is “Yes”, the process proceeds to step 856 and the first temporary abnormal state continuation time Reset the counter Cfnsw to 0.
[0153]
On the other hand, if the decision result in the step 854 is “No”, the process proceeds to a step 855 to count up the first temporary abnormal state continuation time counter Cfnsw, and to output the command shift range and the output signal of the output shaft sensor 14. The duration of the state where Vnsw does not match is measured, and in the next step 857, it is determined whether or not the value of the first temporary abnormal state duration counter Cfnsw is larger than the abnormality determination value Kfnsw. Here, the abnormality determination value Kfnsw is set to a time (for example, 10 s) sufficiently longer than the longest time required for a normal range switching operation. Therefore, if the value of the first temporary abnormal state duration time counter Cfnsw is larger than the abnormality determination value Kfnsw, the range switching operation is not performed normally, and it is determined that there is an abnormality in the system. Proceeding to 858, the first abnormality detection flag Xfnsw is set to ON. If the determination result of step 857 is “No”, the first abnormality detection flag Xfnsw is kept OFF (no abnormality).
[0154]
As described above, after performing the first abnormality diagnosis using the output signal Vnsw of the output shaft sensor 14, the process proceeds to step 859 in FIG. 34, where the deviation | Ncnt− between the encoder count value Ncnt and the target count value Acnt− It is determined whether Actnt | is greater than a predetermined value Kcnt (e.g., a value corresponding to 5 [deg.]). If this count value deviation | Ncnt-Acnt | is equal to or smaller than the predetermined value Kcnt, the process proceeds to step 861, and the second temporary The abnormal state duration time counter Cfcnt is reset to 0.
[0155]
On the other hand, if the decision result in the above step 859 is "Yes", the process proceeds to a step 860 to count up the second provisional abnormal state duration time counter Cfcnt, and the count value deviation | Ncnt-Acnt | The duration of the state greater than Kcnt is measured, and in the next step 862, it is determined whether or not the value of the second temporary abnormal state duration time counter Cfcnt is greater than the abnormality determination value Kfcnt. Here, the abnormality determination value Kfcnt is set to a time (for example, 10 s) sufficiently longer than the maximum time required for a normal range switching operation. Therefore, if the value of the second temporary abnormal state continuation time counter Cfcnt is larger than the abnormality determination value Kfcnt, the range switching operation is not performed normally, and it is determined that there is an abnormality in the system. Proceeding to 863, the second abnormality detection flag Xfcnt is set to ON. If the determination result in step 862 is “No”, the second abnormality detection flag Xfcnt is kept OFF (no abnormality).
[0156]
As described above, after performing the second abnormality diagnosis using the count value deviation | Ncnt−Acnt |, the process proceeds to step 864, and the number of times of execution of the recovery process Crcv counted in step 805 of the recovery process routine of FIG. Is greater than or equal to the abnormality determination value Kcrv (for example, three times). If the number of times of execution of the recovery process Crcv is greater than or equal to the abnormality determination value Kcrv, the process proceeds to step 865, where it is determined that there is a system abnormality. Proceeding to 865, the third abnormality detection flag Xfrcv is set to ON, and this routine ends. That is, if the recovery process is continuously repeated for an abnormality determination value Kcrv (for example, three times or more), the F / B control system is not functioning properly, and it is determined that there is a system abnormality. is there.
[0157]
On the other hand, if the recovery processing execution number Crcv is less than the abnormality determination value Kcrv, the third abnormality detection flag Xfrcv is kept OFF (no abnormality), and this routine ends.
[0158]
[Fail-safe processing]
The fail-safe processing routine shown in FIG. 35 is started at a predetermined cycle (for example, a cycle of 8 ms). When this routine is started, first, in step 901, it is determined whether or not the following conditions (1) and (2) for performing fail-safe processing are satisfied.
(1) The range can be switched by open loop control (system failure flag Xfailoff = OFF)
{Circle around (2)} At least one of the three abnormality detection flags Xfnsw, Xfcnt, and Xfrcv set in the system abnormality diagnosis routine of FIG. 33 is ON (abnormal), or an AB phase disconnection detection of FIG. The AB phase disconnection detection flag Xfailab set in the routine is ON (AB phase disconnected)
[0159]
If any one of these two conditions (1) and (2) is not satisfied, the fail-safe processing execution condition is not satisfied, and the routine is terminated without performing the subsequent processing.
[0160]
On the other hand, if the above two conditions (1) and (2) are both satisfied, the fail-safe process execution condition is satisfied, the process proceeds from step 901 to step 902, and the fail-safe process execution flag Xfsop is set to ON. In the next step 903, a warning lamp is turned on, or a warning is displayed on an information display section or the like of the meter panel to warn the driver.
[0161]
Thereafter, the process proceeds to step 904, where it is determined whether or not the value of the fail-safe processing interval counter Cfsop for measuring the elapsed time after the end of the previous fail-safe processing is less than a predetermined value Kfsop. Here, the predetermined value Kfsop is such that the engaging portion 23a of the detent spring 23 slides down to the bottom thereof along the inclined side walls of the holding concave portions 24 and 25 of the detent lever 15 by the elastic force of the detent spring 23 after the end of the previous fail-safe processing. The time is set to be somewhat longer (for example, 500 ms) than the time required for the operation.
[0162]
If the value of the fail-safe processing interval counter Cfsop (the elapsed time after the end of the previous fail-safe processing) is less than the predetermined value Kfsop, the process proceeds to step 905, where the fail-safe processing interval counter Cfsop is counted up and the previous fail-safe processing is performed. The elapsed time after the end is counted. Thereafter, the process proceeds to step 906, where the energization of all phases is turned off, and in the next step 907, the energization flag Xon is set to OFF meaning energization off, and the routine ends. As a result, the energization of all phases is kept off until the elapsed time after the end of the previous fail-safe processing exceeds the predetermined value Kfsop.
[0163]
Thereafter, when the value of the fail-safe processing interval counter Cfsop (elapsed time after the end of the previous fail-safe processing) becomes equal to or greater than a predetermined value Kfsop, the process proceeds from step 904 to step 908, and the open-loop control execution flag Xopen is turned off. It is determined whether or not there is, and if it is OFF, the process proceeds to step 909, and it is determined whether or not the command shift range sft has been switched. As a result, if it is determined that the command shift range sft has not been switched, the process proceeds to step 910, and the state in which energization of all phases is turned off is continued.
[0164]
On the other hand, if it is determined in step 909 that the command shift range sft has been switched, the process proceeds to step 911, and the current output shaft sensor 14 is output in the same manner as in step 804 of the recovery processing routine of FIG. The current position count value Ncntop is calculated using the output signal Vnsw. This position count value Ncntop is used as an initial value of the position count value Ncntop at the start of the open loop control.
[0165]
Thereafter, the process proceeds to step 912, in which the open-loop control execution flag Xopen is set to ON, and the open-loop control is executed by an open-loop control routine shown in FIG. 37, which will be described later. , The fail-safe process execution number counter Cfs is counted up, and this routine ends.
[0166]
If it is determined in step 908 that the open loop control execution flag Xopen is ON, the process proceeds to step 914 in FIG. 36, where the open loop control completion flag Xopcmp is set to ON indicating open loop control completion. It is determined whether or not Xopcmp = OFF, and this routine ends without performing the subsequent processing.
[0167]
On the other hand, if it is determined in step 914 that the open loop control completion flag Xopcmp is set to ON, the process proceeds to step 915, where the command shift range and the range detected from the output signal Vnsw of the output shaft sensor 14 are set. Is determined, and if they match, the routine proceeds to step 916, where the fail-safe process execution counter Cfs is reset to zero. Then, in the next step 918, the open loop control completion flag Xopcmp is set to OFF, and in the next step 919, the open loop control execution flag Xopen is set to OFF, and this routine ends.
[0168]
If it is determined in step 915 that the command shift range does not match the output signal Vnsw of the output shaft sensor 14, the process proceeds to step 917, where the value of the fail-safe process execution counter Cfs is set to the failure determination value. (For example, three times) or more, and if the value of the fail-safe processing execution counter Cfs is less than the failure determination value, it is not determined that a failure has occurred yet, and the open-loop control completion flag Xopcmp = OFF. Then, the open loop control execution flag Xopen = OFF is set (steps 918 and 919), and this routine ends.
[0169]
Thereafter, when the value of the fail-safe processing execution number counter Cfs becomes equal to or more than a failure determination value (for example, three times), it is determined at that time that the system has failed (a state in which range switching is impossible even with open loop control). Proceeding from step 917 to step 920, the system failure flag Xfailoff is set to ON, and in the next step 921, energization of all phases is turned off, and this routine ends.
[0170]
[Open loop control]
The open loop control routine shown in FIG. 37 to FIG. 39 is started at a predetermined cycle (for example, 1 ms cycle) and plays a role as an open loop control means described in the claims. When this routine is started, it is first determined in step 931 whether or not the open loop control execution flag Xopen is set to ON. If Xopen = OFF, this routine is executed without performing the subsequent processing. finish.
[0171]
On the other hand, if the open loop control execution flag Xopen is set to ON, the process proceeds from step 931 to step 932, where the time counter Top for measuring time is counted up. At the next step 933, the value of the time counter Top is Is determined to be equal to or longer than the excitation time tm of the current energized phase, and if less than the excitation time tm, this routine is terminated without performing the subsequent processing. Thus, the processing after step 934 is executed for each excitation time tm.
[0172]
Thereafter, when the value of the time counter Top becomes equal to or longer than the excitation time tm of the current energized phase, the process proceeds from step 933 to step 934, where the target count value Acnt is compared with the current position count value Ncntop, and the rotor 32 is compared. Is determined. As a result, when the current position count value Ncntop is smaller than the target count value Actnt, the driving direction of the rotor 32 is determined to be the rotation direction (forward rotation direction) from the P range to the NotP range, and the process proceeds to step 935. Then, the energized phase determination value Mptnop is counted up by one, and in the next step 936, the position count value Ncntop is counted up by two. This is because the rotor 32 rotates by two counts (3.75 °) by one excitation.
[0173]
On the other hand, if the current position count value Ncntop is larger than the target count value Acnt, it is determined that the driving direction of the rotor 32 is the rotation direction from the NotP range side to the P range side (reverse rotation direction), and step 937 is performed. Then, the energized phase determination value Mptnop is counted down by one, and in the next step 938, the position count value Ncntop is counted down by two.
[0174]
Thereafter, the routine proceeds to step 939, where a remainder Mptnop% 6 when the energized phase determination value Mptnop is divided by "6" is calculated. Here, “6” corresponds to the amount of increase or decrease of the energized phase determination value Mptnop during one cycle of the energized phase in the open loop control.
[0175]
After calculating Mptnop% 6, the routine proceeds to step 940, where the energized phase is selected according to Mptnop% 6 from the table of FIG. 40, and the energized phase is excited. In the present embodiment, during the open loop control, the energized phase is selected so as to be driven by the 1-2 phase excitation method, and the first excitation when the open loop control is started is two-phase energized (WU phase energized or UV phase energization or VW phase energization), that is, the initial value of the energized phase determination value Mptnop is set so that Mptnop% 6 = 1, 3 or 5.
[0176]
Thereafter, the process proceeds to step 941 in FIG. 38, and the position deviation dev is calculated by the following equation.
dev = | Acnt-Ncntop | / 2
[0177]
As is apparent from the above equation, the position deviation dev is の of the deviation (absolute value) between the target count value Acnt and the current position count value Ncntop.
[0178]
Then, in the next step 942, the position deviation dev is compared with the rotation speed parameter mspd. The rotation speed parameter mspd is a parameter that is increased or decreased according to the position deviation dev. By setting the excitation time tm from the table in FIG. 42 according to the rotation speed parameter mspd, the rotation speed, acceleration, Control deceleration. In this case, as the target rotation speed increases, the rotation speed parameter mspd increases, and the excitation time tm is set to a shorter time. The initial value of the rotation speed parameter mspd is 0.
[0179]
If it is determined in step 942 that the position deviation dev is larger than the rotation speed parameter mspd, the process proceeds to step 943, where the rotation speed parameter mspd is counted up by one, and in the next step 944, the minimum rotation speed parameter mspdmin is set. Set to 0. This minimum rotation speed parameter mspdmin is a parameter (lower limit guard value) for limiting the minimum value of the rotation speed parameter mspd. As described above, when the position deviation dev is larger than the rotation speed parameter mspd, by setting the minimum rotation speed parameter mspdmin to 0, the excitation time tm can be reduced from the start of the open loop control to the start of rotation of the rotor 32. The maximum time (50 ms) can be set.
[0180]
On the other hand, if it is determined in step 942 that the position deviation dev is smaller than the rotation speed parameter mspd, the process proceeds to step 945, where the rotation speed parameter mspd is counted down by 1, and in the next step 946, the minimum rotation speed parameter mspdmin is set. Is set to 4. Thus, after the rotation of the rotor 32 rises, the excitation time tm can be limited to, for example, 5 ms or less.
[0181]
If it is determined in step 942 that the position deviation dev matches the rotation speed parameter mspd, the process proceeds to step 947 without changing the rotation speed parameter mspd, and the minimum rotation speed parameter mspdmin is set to 0.
[0182]
After the rotation speed parameter mspd and the minimum rotation speed parameter mspdmin are set as described above, the process proceeds to step 948, and the maximum rotation speed parameter mspdmax is set according to the battery voltage (power supply voltage) using the table of FIG. . The maximum rotation speed parameter mspdmax is a parameter (upper limit guard value) for limiting the maximum value of the rotation speed parameter mspd. As the battery voltage increases, the maximum rotation speed parameter mspdmax increases to increase the rotation speed of the rotor 32. I can do it.
[0183]
Then, in the next step 949, guard processing is performed so that the rotation speed parameter mspd falls within the range between the minimum rotation speed parameter mspdmin and the maximum rotation speed parameter mspdmax. For example, if the rotation speed parameter mspd updated in step 943 or 945 is smaller than the minimum rotation speed parameter mspdmin, then mspd = mspdmin, and if the rotation speed parameter mspd is larger than the maximum rotation speed parameter mspdmax, mspd = mspdmax, and when mspdmin ≦ mspd ≦ mspdmax, the rotation speed parameter mspd is used as it is.
[0184]
After that, the routine proceeds to step 950, where the excitation time tm is set according to the rotation speed parameter mspd using the table of FIG. In the example of FIG. 42, when the rotation speed parameter mspd is in the range of 0 to 3, the excitation time tm is set to the longest time (for example, 50 ms), and synchronization between the rotation phase of the rotor 32 and the energized phase is ensured at startup. Have to be able to. When the rotation speed parameter mspd is in the range of 4 to 9, as the rotation speed parameter mspd increases, the excitation time tm is reduced in three stages from, for example, 5 ms to 3 ms, and the rotation speed of the rotor 32 is adjusted in three stages. I can do it. Needless to say, the switching of the excitation time tm may be performed in two or less steps or four or more steps.
[0185]
After setting the excitation time tm, the routine proceeds to step 951, where the energization flag Xon is set to ON, and in the next step 952, the time counter Top is cleared, and this routine ends.
[0186]
If it is determined in step 934 in FIG. 37 that the current position count value Ncntop matches the target count value Actnt, the process proceeds to step 955 in FIG. 39, where the time counter Top measures the predetermined time Khld (for example, 500 ms). ) It is determined whether or not the above is achieved. As a result, if it is determined that the time measured by the time counter Top is shorter than the predetermined time Khld, the process proceeds to step 956, where the energization of all phases is turned off. ).
[0187]
Thereafter, the process proceeds to step 952 in FIG. 38, where the time counter Top is cleared and the present routine ends. By such processing, after the end of the open loop control, the processing after step 934 in FIG. 37 is not performed until a predetermined time Khld (for example, 500 ms) elapses, so that the next open loop control is not started. This is to wait until the engaging portion 23a of the detent spring 23 slides down to the bottom along the inclined side walls of the holding concave portions 24 and 25 of the detent lever 15 by the elastic force of the detent spring 23 after the end of the open loop control.
[0188]
If it is determined in step 955 of FIG. 39 that the value of the time counter Top is equal to or greater than the predetermined value Khld, the process proceeds to step 958, in which the energized phase determination value Mptnop = 0 and the rotation speed parameter mspd = 0 are set. In the next step 959, the open loop control completion flag Xopcmp is set to ON. Thereafter, the routine proceeds to step 960, where the excitation time Tm is set to 0. At the next step 961, the energizing flag Xon is set to OFF. Then, the routine proceeds to step 952 in FIG. 38, where the time counter Top is cleared and this routine is executed. To end.
[0189]
In this routine described above, the excitation method during the open loop control is set to the 1-2 phase excitation method, the first excitation at the start of the open loop control is performed by two-phase energization, and as shown in FIG. For example, for three steps from the start of the loop control, the excitation time tm of each energized phase is set to the longest time (for example, 50 ms), and the rotor 32 is surely gripped and the rotational phase of the rotor 32 and the energized phase are reliably synchronized. . Thereafter, the excitation time tm is greatly reduced, but the excitation time tm is gradually shortened as the rotation speed of the rotor 32 increases, so that the rotation speed of the rotor 32 is gradually increased.
[0190]
In order to estimate the rotational position of the rotor 32 during the open loop control, the initial position of the rotor 32 at the start of the open loop control (the initial value of the position count value Ncntop) is calculated based on the output signal of the output shaft sensor 14. Thereafter, every time the energized phase is switched, the position count value Ncntop is counted up (or down) by two, the rotational position of the rotor 32 is estimated based on the position count value Ncntop, and the position count value Ncntop and the target count are counted. At a stage where the deviation from the value Actnt has decreased to some extent, it is determined that the vehicle has entered the deceleration region, the excitation time tm is gradually increased, the rotation speed of the rotor 32 is gradually reduced, and the position count value Ncntop reaches the target value. At the time when the count value Acnt has been reached, it is determined that the rotor 32 has reached the target position, To end the Punrupu control.
[0191]
In this routine, the excitation time tm is set in accordance with the rotation speed parameter mspd. However, at least one of the rotation amount after the start of the drive, the elapsed time after the start of the drive, the rotation amount to the target position, and the load torque. The excitation time tm may be set based on the above.
[0192]
In this routine, the first excitation at the start of the open-loop control is two-phase energization. However, the first excitation may be one-phase energization. The method is not limited to the method, and a one-phase excitation method or a two-phase excitation method may be employed.
[0193]
[Suppress engine torque during open loop control]
The engine torque suppression routine during open loop control shown in FIG. 43 is started at a predetermined cycle (for example, 1 ms cycle). When this routine is started, first, in step 971, it is determined whether or not the open loop control execution flag Xopen = ON (open loop control is being executed). If Xopen = ON, the process proceeds to step 972 and the engine is started. The torque suppression flag Xtrq is set to ON, and if Xopen = OFF, the routine proceeds to step 973, where the engine torque suppression flag Xtrq is set to OFF. The information on the engine torque suppression flag Xtrq is transmitted from the ECU 41 for range switching control to an ECU (not shown) for engine control.
[0194]
When the ECU for engine control receives the information of the open-loop control execution flag Xopen = ON, the ECU controls the engine control parameters in a direction to suppress the engine torque, and performs the control by the open-loop control in a state where the engine torque is suppressed. Execute the range switching operation.
[0195]
At this time, at least one of an air system, a fuel system, and an ignition system may be used as an engine control parameter for controlling the engine torque in a direction to suppress the engine torque. The driving may be prohibited to keep the throttle opening at the current level, or the throttle opening may be closed within a range that does not hinder driving. In the case of the fuel system, the fuel injection amount may be limited within a range that does not hinder the operation, and in the case of the ignition system, the ignition timing is delayed within a range that does not hinder the operation. It is good to make it corner.
[0196]
[AB phase disconnection detection]
The AB phase disconnection detection routine shown in FIG. 44 is started by AB phase interrupt processing. When this routine is started, first, in step 501, it is determined whether or not the open loop control execution flag Xopen = ON (open loop control is being executed), and the open loop control execution flag Xopen = ON (open loop control execution). If it is (medium), the process proceeds to step 502, and it is determined whether or not the open loop control is started (immediately after the open loop control execution flag Xopen is switched from OFF to ON). As a result, if it is determined that the open loop control is to be started, the process proceeds to step 503, and the difference between the encoder count value Ncnt at the start of the open loop control and the position count value Ncntop is set as the count value deviation amount ΔNinit at the start of the open loop control. Ask.
ΔNinit = Ncnt−Ncntop
[0197]
On the other hand, if it is after the start of the open loop control (during the open loop control), "No" is determined in step 502, and the process proceeds to step 504, where the encoder count value Ncnt and the position count value during the open loop control are determined. A deviation amount ΔNerr from Ncntop is calculated.
ΔNerr = Ncnt−Ncntop
[0198]
Thereafter, the process proceeds to step 505, where it is determined whether or not the open loop control has ended (immediately after the open loop control execution flag Xopen has been switched from ON to OFF). This routine is terminated without performing the processing. If the open loop control is to be terminated, the process proceeds to step 506, where the count deviation ΔNerr at the end of the open loop control and the count deviation ΔNinit at the start of the open loop control. The absolute value of the deviation | ΔNerr−ΔNinit | is compared with the determination value to determine whether the A-phase and the B-phase of the encoder 46 are disconnected.
[0199]
For example, when the rotor 32 is normally driven by the open loop control and the A phase and the B phase of the encoder 46 are not disconnected, the count value deviation ΔNerr at the end of the open loop control and the count at the start of the open loop control The deviation | ΔNerr−ΔNinit | from the value deviation amount ΔNinit | becomes zero, but | ΔNerr−ΔNinit | does not become zero if one or both of the A phase and the B phase are disconnected. Therefore, if | ΔNerr−ΔNinit | is equal to or larger than the determination value, it is determined that the A-phase / B-phase disconnection of the encoder 46 is present, and the process proceeds to step 507, where the AB-phase disconnection detection flag Xfailab is disconnected from the A-phase / B-phase. It is set to ON, which means that there is, and this routine ends.
[0200]
On the other hand, if | ΔNerr−ΔNinit | is smaller than the determination value, it is determined that there is no disconnection of the A-phase and B-phase of the encoder 46, and the process proceeds to step 507, where the AB-phase disconnection detection flag Xfailab is disconnected from the A-phase and B-phase. In step 509, the AB phase normality determination flag Xnormab is set to ON, which means normal, and the routine ends.
[0201]
In this routine, the absolute value | ΔNerr−ΔNinit | of the deviation between the count value deviation ΔNerr at the end of the open loop control and the count value deviation ΔNinit at the start of the open loop control is calculated. The amount of change in the encoder count value Ncnt and the amount of change in the position count value Ncntop from the start to the end of the control are calculated, and the A phase of the encoder 46 is determined based on whether the absolute value of the difference between the two is greater than or equal to the determination value. It may be determined whether or not the B phase is disconnected. This is the absolute value of the difference between the change amount of the encoder count value Ncnt and the change amount of the position count value Ncntop from the start to the end of the open loop control | Ncnt change amount−Ncntop change amount | is | ΔNerr−ΔNinit | This is because
[0202]
It should be noted that the A-phase and B-phase disconnection detection of the encoder 46 can be performed only during open loop control. In other words, during the F / B control, if the A-phase and B-phase signals are not input due to the disconnection, the motor 12 is stopped to hold the energization (to output a drive pulse at the edge of the A-phase and B-phase signals). Can be determined, but it cannot be determined whether this is caused by a failure of the encoder 46.
[0203]
[Z-phase disconnection detection]
The Z-phase disconnection detection routine shown in FIG. 45 is started by the AB-phase interrupt processing, and determines whether the encoder 46 has a Z-phase disconnection as follows. When this routine is started, first, in step 511, it is determined whether or not the open loop control execution flag Xopen = ON (open loop control is being executed). If the open loop control execution flag Xopen = OFF, the process proceeds to step 511. Proceeding to 512, the Z-phase disconnection provisional detection counter Czng is cleared, and proceeding to step 518, the Z-phase signal output interval counter Czon is cleared.
[0204]
If the open-loop control execution flag Xopen = ON (open-loop control is being executed), the process proceeds to step 513, where it is determined whether or not the value of the Z-phase signal is 1 (high level). If the value is 1, the routine proceeds to step 514, in which the Z-phase normality determination flag Xnormz is set to ON meaning normal, the routine proceeds to step 518, the Z-phase signal output interval counter Czon is cleared, and the routine proceeds to step 519.
[0205]
On the other hand, if the value of the Z-phase signal is 0 (low level), the process proceeds to step 515, and the Z-phase signal output interval counter Czon for measuring the output interval of the Z-phase signal is counted up. Since this routine is started by the AB-phase interrupt processing, the Z-phase signal output interval counter Czon, like the encoder count value Ncnt, is synchronized with both rising and falling edges of the A-phase signal and the B-phase signal. Counted up.
[0206]
In the present embodiment, the output interval of the Z-phase signal (the interval between the reference rotation positions of the rotor 32) is 45 ° in the rotor rotation angle, and the edge interval between the A-phase signal and the B-phase signal is 3.75 °. When the output interval of the Z-phase signal is converted into the count value (encoder count value Ncnt) of the Z-phase signal output interval counter Czone, 45 ° ÷ 3.75 ° = 12. Therefore, if the Z-phase signal is not output even if the count value of the Z-phase signal output interval counter Czon exceeds 12, it means that the Z-phase signal has been lost.
[0207]
Therefore, in this routine, in step 516, it is determined whether or not the count value of the Z-phase signal output interval counter Czon has exceeded 24, thereby determining whether or not the Z-phase signal has been output continuously two or more times. If it is determined that the Z-phase signal is not output continuously two or more times, the process proceeds to step 517, where the Z-phase abnormality temporary detection counter Czng is counted up, and the process proceeds to step 518. The Z-phase signal output interval counter Czone is cleared, and the routine proceeds to step 519.
If it is determined in step 516 that the count value of the Z-phase signal output interval counter Czone does not exceed 24, the process proceeds to step 519.
[0208]
In step 519, it is determined whether there is a possibility of the Z-phase disconnection of the encoder 46 by determining whether the count value of the Z-phase abnormality temporary detection counter Czng is equal to or more than a determination value (for example, 3). If the count value of the phase abnormality temporary detection counter Czng is smaller than the determination value, it is determined that the Z-phase disconnection diagnosis is still being performed, and this routine ends.
[0209]
On the other hand, if the count value of the Z-phase abnormality temporary detection counter Czng is equal to or greater than the determination value, it is determined that either the Z-phase disconnection of the encoder 46 or the A-phase / B-phase signal is abnormal, and step 520 is performed. Then, it is determined whether the A phase and the B phase of the encoder 46 are normal based on whether the AB phase normality determination flag Xnormab is ON. As a result, if it is determined that the AB phase normality determination flag Xnormab = ON (the A phase and the B phase are normal), it is determined that the Z phase is broken, and the routine proceeds to step 521, where the Z phase abnormality detection flag Xfailz is set to Z. The flag is set to ON, meaning phase break (abnormal), and the routine proceeds to step 522, where the Z-phase correction inhibition flag Xzng is set to ON, and this routine ends.
[0210]
When the Z-phase correction prohibition flag Xzng is set to ON, Z-phase correction by the Z-phase correction routine of FIG. 22 is prohibited.
[0211]
[Z-phase signal error detection]
The Z-phase signal abnormality detection routine shown in FIG. 46 is started by the Z-phase interrupt processing, and determines whether there is an abnormality in the Z-phase signal of the encoder 46 as follows. When this routine is started, first, in step 531, a Z-phase signal output interval ΔNz from the previous Z-phase signal to the current Z-phase signal is calculated by the following equation.
ΔNz = | Ncnt−Ncntold |
In the above equation, Ncnt is the encoder count value when the current Z-phase signal is output, and Ncntold is the encoder count value when the previous Z-phase signal is output.
[0212]
Then, in the next step 532, it is determined whether or not the Z-phase signal output interval ΔNz is 0 or 12. If the Z-phase signal output interval ΔNz is 0, it means that the A-phase and B-phase are disconnected. If the Z-phase signal output interval ΔNz is 12, the Z-phase signal output interval ΔNz is normal. Means
[0213]
Therefore, if it is determined in step 532 that the Z-phase signal output interval ΔNz is 0 or 12, the process proceeds to step 533, in which the Z-phase normality determination flag Xnormz is set to ON indicating normality, and the process proceeds to step 538. Then, in order to calculate the next Z-phase signal output interval ΔNz, the encoder count value Ncnt at the time of the current Z-phase signal output is stored as the previous value Ncntold, and this routine ends.
[0214]
On the other hand, if the Z-phase signal output interval ΔNz is not 0 or 12, there is a possibility that the Z-phase signal is abnormal, so the process proceeds from step 532 to step 534, and the Z-phase abnormality temporary detection counter Czong is counted up. Then, in the next step 535, it is determined whether or not there is a possibility that the Z-phase signal of the encoder 46 is abnormal, based on whether or not the count value of the Z-phase abnormality temporary detection counter Czonng is equal to or more than a determination value (for example, 3). If it is determined that the count value of the Z-phase abnormality temporary detection counter Czonng is less than the determination value, it is determined that the Z-phase signal abnormality diagnosis is still being performed, and the process proceeds to step 538, where the current Z-phase signal output time is determined. The encoder count value Ncnt is stored as the previous value Ncntold, and this routine ends.
[0215]
On the other hand, if the count value of the Z-phase abnormality provisional detection counter Czonng is equal to or greater than the determination value, it is determined that the Z-phase signal of the encoder 46 is abnormal, and the process proceeds to step 536 to set the Z-phase abnormality detection flag Xfailz to abnormal. Is set to ON, and the routine proceeds to step 537, where the Z-phase correction inhibition flag Xzng is set to ON, and the Z-phase correction by the Z-phase correction routine of FIG. 22 is prohibited. Then, the process proceeds to a step 538, where the encoder count value Ncnt at the time of outputting the current Z-phase signal is stored as the previous value Ncntold, followed by terminating the present routine.
Note that each routine in FIGS. 44 to 46 plays a role as abnormality diagnosis means in claims.
[0216]
According to the present embodiment described above, the encoder count value Ncnt (the count value of the A-phase signal / B-phase signal of the encoder 46) and the position count value Ncntop (during open-loop control (fail-safe processing and recovery processing)). (Count value of the motor drive signal) to determine the presence or absence of the A-phase / B-phase disconnection of the encoder 46. Therefore, the A-phase / B-phase disconnection of the encoder 46 is detected during the open loop control. In this case, the return from the open loop control to the F / B control can be prohibited, so that unnecessary F / B control is not performed, and the rotor 32 can be rotated to the target position by the open loop control. it can.
[0219]
Furthermore, in the present embodiment, the presence or absence of the abnormality of the Z-phase signal of the encoder 46 is determined based on the Z-phase signal output interval during the open loop control. Phase correction can be prohibited, and erroneous Z-phase correction can be avoided.
[0218]
The encoder used in the present invention is not limited to the magnetic encoder 46, and may be, for example, an optical encoder or a brush encoder.
The motor used in the present invention is not limited to the SR motor 12, but may be any brushless motor that detects the rotational position of the rotor based on the count value of the output signal of the encoder and sequentially switches the energized phase of the motor. A brushless motor other than the SR motor may be used.
[0219]
The range switching device of the present embodiment is configured to switch between the two ranges of the P range and the NotP range. For example, the range switching valve and the manual valve of the automatic transmission are interlocked with the turning operation of the detent lever 15. The present invention can also be applied to a range switching device that switches the ranges P, R, N, D,.
[0220]
In addition, it goes without saying that the present invention is not limited to the range switching device but can be applied to various devices using a brushless type motor such as an SR motor as a drive source.
[Brief description of the drawings]
FIG. 1 is a perspective view of a range switching device according to an embodiment of the present invention.
FIG. 2 is a diagram illustrating a configuration of an SR motor.
FIG. 3 is a circuit diagram showing a circuit configuration for driving an SR motor.
FIG. 4 is a diagram schematically showing a configuration of an entire control system of the range switching device.
FIG. 5 is a plan view illustrating a configuration of a rotary magnet of the encoder.
FIG. 6 is a side view of the encoder.
FIG. 7A is a time chart showing an output waveform of an encoder, and FIG. 7B is a time chart showing an energized phase switching pattern;
FIG. 8 is a flowchart showing a flow of processing of an initial drive routine (part 1);
FIG. 9 is a flowchart (part 2) showing a flow of processing of an initial drive routine.
FIG. 10 is a flowchart showing the flow of processing of a P range initial drive routine.
FIG. 11 is a flowchart showing the flow of processing of a NotP range initial drive routine.
FIG. 12 is a time chart showing a control example when initial driving is performed in a P range.
FIG. 13 is a time chart showing a control example when a range switching operation is performed during initial driving;
FIG. 14 is a time chart for explaining an initial position deviation learning method when a range switching operation is performed during initial driving;
FIG. 15 is a flowchart showing the flow of processing of an encoder counter routine;
FIG. 16 is a diagram showing an example of a count-up value ΔN calculation map.
FIG. 17 is a time chart showing a relationship among a command range shift, an A-phase signal, a B-phase signal, and an encoder count value.
FIG. 18 is a flowchart showing the flow of processing of a motor F / B control routine;
FIG. 19 is a flowchart illustrating the flow of a process of an energized phase setting routine.
FIG. 20 is a diagram showing an example of a conversion table from Mptn% 12 to an energized phase.
FIG. 21 is a time chart illustrating an energization process.
FIG. 22 is a flowchart showing the flow of processing of a Z-phase correction routine.
FIG. 23 is a time chart illustrating Z-phase correction.
FIG. 24 is a time chart illustrating an example of a recovery process.
FIG. 25 is a view for explaining a method for detecting an abnormality in the A-phase signal and the B-phase signal of the encoder.
FIG. 26 is a view for explaining a method of detecting reverse rotation of the rotor during F / B control;
FIG. 27 is a time chart illustrating an example of open loop control.
FIG. 28 is a flowchart showing the flow of a recovery processing routine;
FIG. 29 is a view for explaining a method of calculating an initial value of the position count value Ncnt at the start of open loop control.
FIG. 30 is a flowchart showing the processing flow of an AB phase signal abnormality detection routine during F / B control;
FIG. 31 is a flowchart showing the flow of processing of a reverse rotation counter routine;
FIG. 32 is a flowchart showing the flow of a reverse rotation determination routine process;
FIG. 33 is a flowchart showing a processing flow of a system abnormality diagnosis routine (part 1);
FIG. 34 is a flowchart (part 2) illustrating a processing flow of a system abnormality diagnosis routine;
FIG. 35 is a flowchart (part 1) showing a flow of processing of a fail-safe processing routine;
FIG. 36 is a flowchart (part 2) illustrating a flow of processing of a fail-safe processing routine;
FIG. 37 is a flowchart (part 1) showing a flow of processing of an open loop control routine;
FIG. 38 is a flowchart (part 2) showing the flow of processing of the open loop control routine;
FIG. 39 is a flowchart (part 3) illustrating the processing flow of the open loop control routine;
FIG. 40 is a diagram showing an example of a conversion table from Mptnop% 6 to a conducting phase.
FIG. 41 is a diagram showing an example of a table for obtaining a maximum rotation speed parameter mspdmax from a battery voltage.
FIG. 42 is a diagram showing an example of a table for obtaining an excitation time tm from a rotation speed parameter mspd.
FIG. 43 is a flowchart showing the flow of processing of an engine torque suppression routine during open loop control;
FIG. 44 is a flowchart showing the flow of processing of an AB phase disconnection detection routine;
FIG. 45 is a flowchart showing the flow of processing of a Z-phase disconnection detection routine.
FIG. 46 is a flowchart showing the flow of processing of a Z-phase signal abnormality detection routine;
[Explanation of symbols]
11 Range switch mechanism, 12 SR motor, 14 Output shaft sensor, 15 Detent lever, 18 Parking rod, 20 Parking gear, 21 Lock lever, 23 Detent spring, 23a Engagement part, 24 P range holding recess, 25 NotP range holding recess, 26 ... speed reduction mechanism, 27 ... automatic transmission, 31 ... stator, 32 ... rotor, 33, 34 ... winding, 35, 36 ... motor exciting parts, 37, 38 ... Motor driver (drive circuit), 41: ECU (F / B control means, open loop control means, abnormality diagnosis means), 43: P range switch, 44: NotP range switch, 46: encoder, 47: rotary magnet, 48 ... A magnetic detection element for A-phase signal, 49 ... magnetic detection element for B-phase signal, 50 ... magnetic detection element for Z-phase signal.

Claims (7)

制御対象を回転駆動するモータのロータの回転に同期してパルス信号を出力するエンコーダと、このエンコーダのパルス信号のカウント値(以下「エンコーダカウント値」という)に基づいて前記ロータの回転位置を検出して前記モータの通電相を順次切り換えることで前記ロータを目標位置まで回転駆動するフィードバック制御(以下「F/B制御」と表記する)を実行するF/B制御手段とを備えたモータ制御装置において、
F/B制御実行条件が不成立のときに、前記F/B制御からオープンループ制御に切り換えて、前記エンコーダカウント値の情報をフィードバックせずに前記モータの駆動回路に駆動信号を出力して通電相を順次切り換えると共に、前記駆動信号をカウントしてそのカウント値に基づいて前記ロータを前記目標位置まで回転駆動するオープンループ制御手段と、
前記オープンループ制御中にカウントした前記エンコーダカウント値と前記駆動信号のカウント値とを比較して前記エンコーダの異常の有無を判定する異常診断手段と
を備えていることを特徴とするモータ制御装置。
An encoder that outputs a pulse signal in synchronization with the rotation of a rotor of a motor that rotationally drives a control target; and detects a rotational position of the rotor based on a count value of the pulse signal of the encoder (hereinafter, referred to as an “encoder count value”). An F / B control means for executing feedback control (hereinafter referred to as "F / B control") for rotating the rotor to a target position by sequentially switching the energized phase of the motor. At
When the condition for executing the F / B control is not satisfied, the control is switched from the F / B control to the open-loop control, and a drive signal is output to the drive circuit of the motor without feeding back the information of the encoder count value to supply a current to the motor. Open-loop control means for sequentially switching between, and counting the drive signal and rotationally driving the rotor to the target position based on the count value;
A motor control device comprising: abnormality diagnosis means for comparing the encoder count value counted during the open-loop control with the count value of the drive signal to determine whether the encoder is abnormal.
前記異常診断手段は、前記エンコーダの異常を検出したときに前記オープンループ制御から前記F/B制御への復帰を禁止することを特徴とする請求項1に記載のモータ制御装置。2. The motor control device according to claim 1, wherein the abnormality diagnosis unit prohibits a return from the open loop control to the F / B control when detecting an abnormality of the encoder. 3. 前記エンコーダは、前記ロータの回転に同期して所定の位相差を有するA相信号とB相信号を出力すると共に、該ロータの基準回転位置でZ相信号を出力し、
前記F/B制御手段は、前記F/B制御中に前記A相信号及び前記B相信号のエッジをカウントして、そのエンコーダカウント値に基づいて通電相を順次切り換えると共に、前記Z相信号に基づいて前記ロータの回転位置と通電相とのずれの有無を判定し、ずれがあれば、そのずれを補正し(以下この補正を「Z相補正」という)、
前記異常診断手段は、前記オープンループ制御中にカウントした前記エンコーダカウント値と前記駆動信号のカウント値とを比較して前記エンコーダのA相信号及びB相信号の異常の有無を判定することを特徴とする請求項1又は2に記載のモータ制御装置。
The encoder outputs an A-phase signal and a B-phase signal having a predetermined phase difference in synchronization with the rotation of the rotor, and outputs a Z-phase signal at a reference rotation position of the rotor,
The F / B control means counts the edges of the A-phase signal and the B-phase signal during the F / B control, sequentially switches the energizing phase based on the encoder count value, and changes the Z-phase signal. The presence or absence of a difference between the rotational position of the rotor and the energized phase is determined based on the difference. If there is a difference, the difference is corrected (hereinafter, this correction is referred to as “Z-phase correction”).
The abnormality diagnosis means compares the encoder count value counted during the open loop control with the count value of the drive signal to determine whether there is an abnormality in the A-phase signal and the B-phase signal of the encoder. The motor control device according to claim 1 or 2, wherein
前記異常診断手段は、前記エンコーダのA相信号及びB相信号が正常と判断したときに、前記Z相信号の出力間隔を前記エンコーダカウント値に基づいて判定して前記Z相信号の異常の有無を判定することを特徴とする請求項3に記載のモータ制御装置。The abnormality diagnosis means determines whether or not there is an abnormality in the Z-phase signal by determining an output interval of the Z-phase signal based on the encoder count value when it determines that the A-phase signal and the B-phase signal of the encoder are normal. The motor control device according to claim 3, wherein is determined. 前記異常診断手段は、前記Z相信号の異常を検出したときに前記Z相補正を禁止することを特徴とする請求項4に記載のモータ制御装置。The motor control device according to claim 4, wherein the abnormality diagnosis unit inhibits the Z-phase correction when detecting an abnormality in the Z-phase signal. 前記モータは、スイッチトリラクタンスモータであることを特徴とする請求項1乃至5のいずれかに記載のモータ制御装置。The motor control device according to claim 1, wherein the motor is a switched reluctance motor. 前記制御対象は、車両のパーキングレンジと他のレンジとを切り換えるレンジ切換装置であることを特徴とする請求項1乃至6のいずれかに記載のモータ制御装置。7. The motor control device according to claim 1, wherein the control target is a range switching device that switches between a parking range of the vehicle and another range.
JP2002207558A 2002-07-09 2002-07-16 Motor control device Expired - Fee Related JP3849931B2 (en)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2002207558A JP3849931B2 (en) 2002-07-16 2002-07-16 Motor control device
US10/448,409 US7312595B2 (en) 2002-07-09 2003-05-30 Motor control apparatus
DE10362132.6A DE10362132B4 (en) 2002-07-09 2003-07-08 Engine control unit
DE10330809.1A DE10330809B8 (en) 2002-07-09 2003-07-08 Engine control unit
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 (en) 2002-07-16 2002-07-16 Motor control device

Publications (2)

Publication Number Publication Date
JP2004056856A true JP2004056856A (en) 2004-02-19
JP3849931B2 JP3849931B2 (en) 2006-11-22

Family

ID=31931972

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002207558A Expired - Fee Related JP3849931B2 (en) 2002-07-09 2002-07-16 Motor control device

Country Status (1)

Country Link
JP (1) JP3849931B2 (en)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190138B2 (en) 2003-12-22 2007-03-13 Denso Corporation Failure monitor for motor drive control system
JP2008106826A (en) * 2006-10-24 2008-05-08 Toyota Motor Corp Control device and control method of shift change mechanism, program embodied in computer, and recording media to record this program
JP2009112151A (en) * 2007-10-31 2009-05-21 Denso Corp Motor control apparatus
JP2010098922A (en) * 2008-10-20 2010-04-30 Canon Inc Motor drive device and electronic apparatus
JP2015224714A (en) * 2014-05-28 2015-12-14 株式会社デンソー Range changeover control device
JP2017077038A (en) * 2015-10-12 2017-04-20 株式会社デンソー Motor controller
DE112017001661T5 (en) 2016-04-01 2018-12-20 Denso Corporation MOTOR CONTROL DEVICE
JP2019088074A (en) * 2017-11-06 2019-06-06 株式会社デンソー Shift range control device
WO2020100521A1 (en) * 2018-11-15 2020-05-22 株式会社デンソー Shift range control device
CN113828830A (en) * 2021-10-21 2021-12-24 浙江特康电子科技有限公司 Motor torsion control device and electric tool

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6139900A (en) * 1984-07-30 1986-02-26 Toshiba Corp Control circuit for pulse motor
JPH0425716A (en) * 1990-05-22 1992-01-29 Hitachi Ltd Encoder abnormality detecting device
JPH11247807A (en) * 1998-02-27 1999-09-14 Shin Caterpillar Mitsubishi Ltd Servo valve
JP2001258284A (en) * 2000-03-14 2001-09-21 Aisin Seiki Co Ltd Moving body controller and motor controller
JP2001271917A (en) * 2000-03-28 2001-10-05 Denso Corp Shift range changeover device for automatic transmission

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6139900A (en) * 1984-07-30 1986-02-26 Toshiba Corp Control circuit for pulse motor
JPH0425716A (en) * 1990-05-22 1992-01-29 Hitachi Ltd Encoder abnormality detecting device
JPH11247807A (en) * 1998-02-27 1999-09-14 Shin Caterpillar Mitsubishi Ltd Servo valve
JP2001258284A (en) * 2000-03-14 2001-09-21 Aisin Seiki Co Ltd Moving body controller and motor controller
JP2001271917A (en) * 2000-03-28 2001-10-05 Denso Corp Shift range changeover device for automatic transmission

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7190138B2 (en) 2003-12-22 2007-03-13 Denso Corporation Failure monitor for motor drive control system
JP2008106826A (en) * 2006-10-24 2008-05-08 Toyota Motor Corp Control device and control method of shift change mechanism, program embodied in computer, and recording media to record this program
JP2009112151A (en) * 2007-10-31 2009-05-21 Denso Corp Motor control apparatus
JP2010098922A (en) * 2008-10-20 2010-04-30 Canon Inc Motor drive device and electronic apparatus
US8508161B2 (en) 2008-10-20 2013-08-13 Canon Kabushiki Kaisha Drive apparatus
JP2015224714A (en) * 2014-05-28 2015-12-14 株式会社デンソー Range changeover control device
JP2017077038A (en) * 2015-10-12 2017-04-20 株式会社デンソー Motor controller
DE112017001661T5 (en) 2016-04-01 2018-12-20 Denso Corporation MOTOR CONTROL DEVICE
JP2019088074A (en) * 2017-11-06 2019-06-06 株式会社デンソー Shift range control device
CN111713013A (en) * 2017-11-06 2020-09-25 株式会社电装 Shift gear control device
CN111713013B (en) * 2017-11-06 2023-08-22 株式会社电装 Gear shifting control device
WO2020100521A1 (en) * 2018-11-15 2020-05-22 株式会社デンソー Shift range control device
JP2020084997A (en) * 2018-11-15 2020-06-04 株式会社デンソー Shift range control device
CN113828830A (en) * 2021-10-21 2021-12-24 浙江特康电子科技有限公司 Motor torsion control device and electric tool

Also Published As

Publication number Publication date
JP3849931B2 (en) 2006-11-22

Similar Documents

Publication Publication Date Title
US6992451B2 (en) Motor control apparatus operable in fail-safe mode
US7667427B2 (en) Motor control apparatus
JP5454962B2 (en) Motor control device
US7990088B2 (en) Motor control apparatus
JP5093624B2 (en) Motor control device
JP3886042B2 (en) Motor control device
US20130154537A1 (en) Motor control apparatus
JP3800529B2 (en) Motor control device
JP3849864B2 (en) Motor control device
JP3849931B2 (en) Motor control device
JP3849930B2 (en) Motor control device
JP3947922B2 (en) Motor control device
JP2004023890A (en) Motor controller
JP6547663B2 (en) Control device
JP4082164B2 (en) Motor control device
JP4189953B2 (en) Position switching control device
JP3871130B2 (en) Motor control device
JP3888940B2 (en) Motor control device
JP3849627B2 (en) Motor control device
JP3888278B2 (en) Motor control device
JP3800532B2 (en) Motor control device
JP3849629B2 (en) Motor control device
JP2004023889A (en) Motor controller
JP4748611B2 (en) Position switching control device

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