(57)【特許請求の範囲】
【請求項１】
複数の気筒の全てを作動させる全筒運転と、前記複数気筒の一部を休止する休筒運転とを切り換える気筒休止機構を備える内燃機関の制御装置において、
前記機関のクランク軸の回転角度を検出するクランク角検出手段と、
前記クランク角検出手段の検出誤差を補正する補正手段と、
前記補正手段により前記クランク角検出手段の検出誤差の補正が可能となった後に前記休筒運転を許可する許可手段とを有することを特徴とする内燃機関の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、内燃機関の制御装置に関し、特に複数の気筒の全てを作動させる全筒運転と、前記複数気筒の一部を休止する休筒運転とを切り換える気筒休止機構を備える内燃機関の制御装置に関する。
【０００２】
【従来の技術】
内燃機関の燃費を向上させるために、機関の特定運転状態、特に軽負荷運転状態において、一部の気筒の作動を停止させ、残りの気筒により運転を継続するための気筒休止機構を備える機関が知られている。
【０００３】
また、機関の失火状態を機関の回転速度変動により検出することも知られている。機関回転速度は、クランク軸に固定された円盤状のプレートに複数のパルサ（突起部）を設け、このパルサの回転角速度を電磁ピックアップで検出するように構成されたクランク角センサにより検出される。そのため、パルサの加工精度によって、検出機関回転速度が変動し、失火検出へ悪影響を与えることがある。そこでそのような悪影響を排除するために、機関減速時に、複数のパルサのそれぞれについて回転角速度を検出し、各パルサに対応する回転角速度と、それらの平均値との比率を補正値として記憶し、失火検出時の検出回転速度を該補正値で補正することが特開平６−３４６７７９号公報に開示されている。
【０００４】
【発明が解決しようとする課題】
上記気筒休止機構を備える機関においても、失火状態を検出することが、例えば気筒休止機構の異常を検出するために行われる。したがって、上述したようなクランク角センサにより検出される回転速度の補正が必要となる。
【０００５】
しかしながら、気筒休止機構を備える機関においては、低負荷運転状態にて休筒運転を行うため、減速時において休筒運転となる場合がある。その場合に検出される各パルサの回転角速度は、全筒運転中に検出されるものと異なるものとなり、上記補正値を正確に算出することができない。そのため、失火検出の精度が低下するおそれがあった。
【０００６】
本発明はこの点に着目してなされたものであり、気筒休止機構を備えた内燃機関の検出回転速度の補正値を正確に算出し、失火検出精度の低下を防止することができる内燃機関の制御装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記目的を達成するため請求項１に記載の発明は、複数の気筒の全てを作動させる全筒運転と、前記複数気筒の一部を休止する休筒運転とを切り換える気筒休止機構を備える内燃機関の制御装置において、前記機関のクランク軸の回転角度を検出するクランク角検出手段と、前記クランク角検出手段の検出誤差を補正する補正手段と、前記補正手段により前記クランク角検出手段の検出誤差の補正が可能となった後に前記休筒運転を許可する許可手段とを有することを特徴とする。
【０００８】
この構成によれば、気筒休止機構を備える内燃機関のクランク軸の回転角度を検出するクランク角検出手段の検出誤差の補正が可能となった後に、休筒運転が許可されるので、クランク角検出手段の検出誤差を補正する補正値を休筒運転中に算出することがなく、正確な補正値を得ることができる。したがって、クランク角度検出手段の出力に基づく失火検出の精度が低下することを防止できる。
【０００９】
【発明の実施の形態】
以下本発明の実施の形態を図面を参照して説明する。
図１は本発明の一実施形態にかかる車両の駆動系の概略構成を示す図である。本実施形態の車両はいわゆるハイブリッド車両であり、内燃機関（以下「エンジン」という）１によって駆動される駆動軸２は、変速機４を介して駆動輪５を駆動できるように構成されている。モータ３は、駆動軸２を直接回転駆動できるように配設されており、また駆動軸２の回転による運動エネルギを電気エネルギに変換して出力する回生機能を有する。
【００１０】
図２はエンジン１の制御装置の構成を示す図である。４気筒を有するエンジン１の吸気管１２の途中にはスロットル弁１３が配されている。スロットル弁１３にはスロットル弁開度（ＴＨＡ）センサ１４が連結されており、当該スロットル弁１３の開度に応じた電気信号を出力してエンジン制御用電子制御ユニット（以下「ＥＣＵ」という）１５に供給する。
【００１１】
燃料噴射弁１６は吸気管１２内に燃料を噴射するように各気筒毎に設けられており、各噴射弁は図示しない燃料ポンプに接続されていると共にＥＣＵ１５に電気的に接続されてＥＣＵ１５からの信号により燃料噴射弁１６の開弁時間が制御される。
【００１２】
一方、スロットル弁１３の直ぐ下流には吸気管内絶対圧（ＰＢＡ）センサ１７が設けられており、この絶対圧センサ１７により電気信号に変換された絶対圧信号はＥＣＵ１５に供給される。また、その下流には吸気温（ＴＡ)センサ１８が取付けられており、吸気温ＴＡを検出して対応する電気信号を出力してＥＣＵ１５に供給する。
【００１３】
エンジン１の本体に装着されたエンジン水温（ＴＷ）センサ１９はサーミスタ等から成り、エンジン水温（冷却水温）ＴＷを検出して対応する温度信号を出力してＥＣＵ１５に供給する。
ＥＣＵ１５には、エンジン１のクランク軸（図示せず）の回転角度を検出するクランク角度位置センサ２０が接続されており、クランク軸の回転角度に応じた信号がＥＣＵ１５に供給される。クランク角度位置センサ２０は、エンジン１の特定の気筒の所定クランク角度位置でパルス（以下「ＣＹＬパルス」という）を出力する気筒判別センサ、各気筒の吸入行程開始時の上死点（ＴＤＣ）に関し所定クランク角度前のクランク角度位置で（４気筒エンジンではクランク角１８０度毎に）ＴＤＣパルス（図１０（ａ）参照）を出力するＴＤＣセンサ及びＴＤＣパルスより短い一定クランク角周期（例えば３０度周期）でＣＲＫパルス（図１０（ｂ）参照）を発生するＣＲＫセンサから成り、ＣＹＬパルス、ＴＤＣパルス及びＣＲＫパルスがＥＣＵ１５に供給される。これらの信号パルスは、燃料噴射時期、点火時期等の各種タイミング制御及びエンジン回転数（エンジン回転速度）ＮＥの検出に使用される。
【００１４】
エンジン１には、４気筒のうちの３気筒を一時的に休止させるための気筒休止機構３０が設けられている。図３は、気筒休止機構３０を油圧駆動するための油圧回路とその制御系を示す図である。
気筒休止機構３０は、エンジン１の潤滑油を作動油として使用し、油圧駆動される。オイルポンプ３１により加圧された作動油は、油路３２及び吸気側油路３３ｉ，排気側油路３３ｅを介して、気筒休止機構３０に供給される。油路３２と、油路３３ｉ及び３３ｅとの間に、吸気側電磁弁３５ｉ及び排気側電磁弁３５ｅが設けられており、これらの電磁弁３５ｉ，３５ｅはＥＣＵ１５に接続されてその作動がＥＣＵ１５により制御される。
【００１５】
油路３３ｉ，３３ｅには、作動油圧を検出する油圧センサ３４ｉ，３４ｅが設けられており、その検出信号は、ＥＣＵ１５に供給される。また、油路３２の途中には、作動油温ＴＯＩＬを検出する作動油温センサ３３が設けられており、その検出信号がＥＣＵ１５に供給される。
【００１６】
気筒休止機構３０の具体的な構成例は、例えば特開平１０−１０３０９７号公報に示されており、本実施形態でも同様の機構を用いている。この機構によれば、電磁弁３５ｉ，３５ｅが閉弁され、油路３３ｉ，３３ｅ内の作動油圧が低いときは、各気筒（＃２気筒、＃３気筒及び＃４気筒）の吸気弁及び排気弁が通常の開閉作動を行う一方、電磁弁３５ｉ，３５ｅが開弁され、油路３３ｉ，３３ｅ内の作動油圧が高くなると、各気筒（＃２気筒、＃３気筒、及び＃４気筒）の吸気弁及び排気弁が閉弁状態を維持する。すなわち、電磁弁３５ｉ，３５ｅの閉弁中は、全ての気筒を作動させる全筒運転が行われ、電磁弁３５ｉ，３５ｅを開弁させると、＃２〜＃４気筒を休止状態とする休筒運転が行われる。＃１気筒はエンジン運転中は常に作動する。
【００１７】
なお、気筒休止機構３０は、吸気弁側の切り換え機構と、排気弁側の切り換え機構とを単一の油圧系統で作動させるように構成してもよい。
ＥＣＵ１５には、エンジン１によって駆動される車両の走行速度（車速）ＶＰを検出する車速センサ４１、大気圧ＰＡを検出する大気圧センサ４２、燃料噴射弁１６、電磁弁３５、ＥＣＵ１５などに電力を供給する１２Ｖ系バッテリ（図示せず）の出力電圧ＶＢを検出するバッテリ電圧センサ４３、モータ３に駆動電力を供給する大容量バッテリ（図示せず）の温度ＴＢＡＴを検出するバッテリ温度センサ４４、及び吸気管１２内の負圧が供給されるブレーキブースタ（図示せず）内の圧力（マスタパワ圧）ＭＰＭＯＮを検出するマスタパワ圧センサ４６が接続されており、これらのセンサの検出信号がＥＣＵ１５に供給される。さらにＥＣＵ１５には、当該車両のブレーキペダル（図示せず）が操作されたことを検出するブレーキスイッチ４５が接続されており、ブレーキスイッチ４５の出力信号がＥＣＵ１５に供給される。
【００１８】
ＥＣＵ１５は、各種センサからの入力信号波形を整形し、電圧レベルを所定レベルに修正し、アナログ信号値をデジタル信号値に変換する等の機能を有する入力回路、中央演算処理回路（以下「ＣＰＵ」という）、ＣＰＵで実行される各種演算プログラム及び演算結果等を記憶する記憶回路、前記燃料噴射弁６に駆動信号を供給する出力回路等から構成される。ＥＣＵ１５の記憶回路は、イグニッションスイッチがオフされた後も記憶内容を保持するバックメモリを備えている。ＥＣＵ１５は、各種センサの検出信号に基づいて、燃料噴射弁６の開弁時間、点火時期などを制御するとともに、電磁弁３５ｉ，３５ｅの開閉を行って、エンジン１の全筒運転と、休筒運転との切り換え制御を行う。
【００１９】
図４及び図５は、休筒運転の実施条件を判断する制御を行う処理のフローチャートであり、この処理は、所定時間（例えば１０ｍｓｅｃ）毎にＥＣＵ１５のＣＰＵで実行される。
ステップＳ１１では、フュエルカットフラグＦＦＣが「１」であるか否かを判別する。フュエルカットフラグＦＦＣが「０」であって、エンジン１への燃料供給を遮断するフュエルカット運転中でないときは、休筒運転実施条件不成立と判定し、直ちにステップＳ３７（図５）に進む。ステップＳ３７では、ダウンカウントタイマＴＤＥＣＰＢを所定時間ＴＭＤＥＣＰＢ（例えば０．１秒）に設定してスタートさせ、次いで、休筒フラグＦＤＣＳＣＮＤを「０」に設定する（ステップＳ４２）。
【００２０】
フュエルカットフラグＦＦＣが「１」であって、エンジン１への燃料供給を遮断するフュエルカット運転中であるときは、吸気温ＴＡが所定上限値ＴＡＤＣＳＨ（例えば５０℃）及び所定下限値ＴＡＤＣＳＬ（例えば−１０℃）の範囲内にあるか否かを判別する（ステップＳ１２）。この答が肯定（ＹＥＳ）であるときは、エンジン水温ＴＷが所定上限値ＴＷＤＣＳＨ（例えば１１０℃）及び所定下限値ＴＷＤＣＳＬ（−１０℃）の範囲内にあるか否かを判別する（ステップＳ１３）。この答が肯定（ＹＥＳ）であるときは、大気圧ＰＡが所定上限値ＰＡＤＣＳＨ（例えば１０３ｋＰａ）及び所定下限値ＰＡＤＣＳＬ（例えば７４ｋＰａ）の範囲内にあるか否かを判別する（ステップＳ１４）。この答が肯定（ＹＥＳ）であるときは、バッテリ電圧ＶＢが所定電圧ＶＢＤＣＳ（例えば１０Ｖ）以上であるか否かを判別する（ステップＳ１５）。
【００２１】
ステップＳ１２〜Ｓ１５のいずれかの答が否定（ＮＯ）であるときは休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。ステップＳ１５の答が肯定（ＹＥＳ）であるときは、スロットル全閉フラグＦＴＨＩＤＬＥが「１」であるか否かを判別する（ステップＳ１６）。スロットル全開フラグＦＴＨＩＤＬＥが「１」であって、スロットル弁１３が全閉状態でないことを示すときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。
【００２２】
スロットル全開フラグＦＴＨＩＤＬＥが「０」であって、スロットル弁１３が全閉状態にあることを示すときは、休筒フラグＦＤＣＳＣＮＤが「１」であるか否かを判別する（ステップＳ１７）。休筒フラグＦＤＣＳＣＮＤが「１」であって休筒運転実施条件が既に成立していることを示すときは、直ちにステップＳ１９に進む。休筒フラグＦＤＣＳＣＮＤが「０」であるときは、油圧ＰＯＩＬが所定圧ＰＯＤＳＬ（例えば１ｋｇ／ｃｍ2以上であるか否かを判別する（ステップＳ１８）。ＰＯＩＬ＜ＰＯＤＳＬであるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。ＰＯＩＬ≧ＰＯＤＳＬであるときは、ステップＳ１９に進む。
【００２３】
ステップＳ１９では、自動変速フラグＦＡＴが「１」であるか否かを判別する。自動変速フラグＦＡＴが「１」であって、当該車両が自動変速機を備えていることを示すときは、さらにシフトレンジフラグＦＡＴＮＰが「１」であるか否かを判別する（ステップＳ２０）。シフトレンジフラグＦＡＴＮＰが「１」であって自動変速機のシフトレンジがニュートラルレンジ、パーキングレンジまたはリバースレンジであることを示すときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。シフトレンジフラグＦＡＴＮＰが「０」であるときは、ステップＳ２２に進む。
【００２４】
ステップＳ１９で自動変速フラグＦＡＴが「０」であって手動変速機を備えた車両であることを示すときは、選択されている変速段を示す変速段パラメータＮＧＲが所定値ＮＧＲＤＣＳ（例えば２）以上か否かを判別する（ステップＳ２１）。変速段パラメータＮＧＲは、選択されている変速段の１速、２速、３速、４速、及び５速に対応して、「１」，「２」，「３」，「４」，及び「５」に設定される。ＮＧＲ＜ＮＧＲＤＣＳであって、低速段が選択されるかまたはエンジン１の駆動力を変速機４に伝達するクラッチ（図示せず）の係合力が小さい、いわゆる半クラッチ状態であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。ＮＧＲ≧ＮＧＲＤＣＳであって、高速段が選択されているときは、ステップＳ２２に進む。
【００２５】
ステップＳ２２では、作動油温ＴＯＩＬが所定上限値ＴＯＤＣＳＨ（例えば１１０℃）及び所定下限値ＴＯＤＣＳＬ（例えば２５℃）の範囲内にあるか否かを判別し、その答が否定（ＮＯ）であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。作動油温ＴＯＩＬが所定上限値ＴＯＤＣＳＨ及び所定下限値ＴＯＤＣＳＬの範囲内にあるときは、車速ＶＰが急激に減速されたか否かを判別する（ステップＳ２３）。車速ＶＰが急減速されたときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。
【００２６】
ステップＳ２３の答が否定（ＮＯ）であるときは、リーク検知フラグＦＡＩＲＬＫが「１」であるか否かを判別する（ステップＳ２４）。リーク検知フラグＦＡＲＩＬＫは、図８に示すリーク判定処理で吸気管１２に漏れが有ると判定されたとき「１」に設定される。リーク検知フラグＦＡＩＲＬＫが「１」であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。
【００２７】
リーク検知フラグＦＡＩＲＬＫが「０」であって、吸気管１２の漏れが検出されていないことを示すとき、学習完了フラグＦＫＣＲＭＥＦが「１」であるか否かを判別する（ステップＳ２５）。学習完了フラグＦＫＣＲＭＥＦは、図９に示すＫＣＲＲＥＦ算出処理において、学習補正係数ＫＣＲＲＥＦの算出が完了したとき「１」に設定される（図９，ステップＳ８２）。学習完了フラグＦＫＣＲＭＥＦが「０」であって、学習補正係数ＫＣＲＲＥＦの算出が完了していないことを示すときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。これにより、学習補正係数ＫＣＲＲＥＦの算出が完了するまで、休筒運転は許可されないので、休筒運転中のエンジン回転速度に基づいて不適切な学習が行われることが防止される。
【００２８】
学習完了フラグＦＫＣＲＭＥＦが「１」であるときは、エンジン回転数ＮＥの変化量ＤＮＥ（＝ＤＮＥ(k)−ＤＮＥ(k-1)，「ｋ」は、ＴＤＣパルスの発生周期で離散化した時刻）が負の所定変化量ＤＮＥＤＣＳ（−２００ｒｐｍ）以下であるか否かを判別する（ステップＳ２６）。この答が肯定（ＹＥＳ）であって、エンジン回転数ＮＥが急激に低下しているときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。
【００２９】
変化量ＤＮＥが所定変化量ＤＮＥＤＣＳより大きいときは、大容量バッテリ温度ＴＢＡＴが所定上限値ＴＢＤＣＳＨ（例えば４５℃）及び所定下限値ＴＢＤＣＳＬ（例えば０℃）の範囲内にあるか否かを判別する（ステップＳ２７）。この答が肯定（ＹＥＳ）であるときは、大容量バッテリの残容量ＱＢＡＴ（％）が、所定上限値ＱＢＤＣＳＨ（例えば７５％）及び所定下限値ＱＢＤＣＳＬ（例えば３０％）の範囲内にあるか否かを判別する（ステップＳ２８）。残容量ＱＢＡＴは、モータ３を制御する電子コントロールユニット（図示せず）から供給される。この答が肯定（ＹＥＳ）であるときは、車速ＶＰが所定上限速度ＶＰＤＣＳＨ（例えば１３０ｋｍ／ｈ）以下であるか否かを判別する（ステップＳ２９）。この答が肯定（ＹＥＳ）であるときは、ブレーキスイッチＯＫフラグＦＬＯＫＢＫＳＷが「１」であるか否かを判別する（ステップＳ３０）。
【００３０】
ステップＳ２７〜Ｓ３０の何れかの答が否定（ＮＯ）であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。ステップＳ３０でブレーキスイッチＯＫフラグＦＬＯＫＢＫＳＷが「１」であって、ブレーキスイッチが正常であることを示すときは、ブレーキスイッチフラグＦＢＫＳＷが「１」であるか否かを判別する（ステップＳ３１）。
【００３１】
ブレーキスイッチフラグＦＢＫＳＷが「１」であって、ブレーキペダルが踏み込まれていることを示すときは、車速ＶＰが第１所定下限車速ＶＰＤＣＳＢＬ（例えば１０ｋｍ／ｈ）以上か否かを判別する（ステップＳ３２）。ＶＰ＜ＶＰＤＣＳＢＬであるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。一方ＶＰ≧ＶＰＤＣＳＢＬであるときは、ステップＳ３４に進む。またブレーキスイッチフラグＦＢＫＳＷが「０」であって、ブレーキが踏み込まれていないことを示すときは、車速ＶＰが第１所定下限車速ＶＰＤＣＳＢＬより高い第２所定下限車速ＶＰＤＣＳＬ（例えば２２ｋｍ／ｈ）以上か否かを判別する（ステップＳ３３）。ＶＰ＜ＶＰＤＣＳＬであるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。一方ＶＰ≧ＶＰＤＣＳＬであるときは、ステップＳ３４に進む。
【００３２】
ステップＳ３４では、エンジン回転数ＮＥが所定上限回転数ＮＤＣＳＨ（例えば３２００ｒｐｍ）以下であるか否かを判別し、その答が否定（ＮＯ）であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。ＮＥ≦ＮＤＣＳＨであるときは、図７に示すＮＤＣＳＬ算出処理を実行し（ステップＳ３５）、下限回転数ＮＤＣＳＬを算出する。次いで、エンジン回転数ＮＥが下限回転数ＮＤＣＳＬ（例えば９００ｒｐｍ）以上であるか否かを判別し（ステップＳ３６）、その答が否定（ＮＯ）であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ３７に進む。
【００３３】
ステップＳ３８では、ステップＳ３７でセットしたダウンカウントタイマＴＤＥＣＰＢの値が「０」であるか否かを判別し、ＴＤＥＣＰＢ＞０である間は、ステップＳ４２に進む。なお、ダウンカウントタイマＴＤＥＣＰＢの値が「０」となるまでの時間は、図示しないスロットルバイパス弁を閉じて、ブレーキブースタ内に負圧を確保するための時間に充てられる。
【００３４】
ＴＤＥＣＰＢ＝０となると、車速ＶＰに応じて、図６（ａ）に示すＭＰＤＣＳテーブルを検索し、上側リミット値ＭＰＤＣＳＨ及び下側リミット値ＭＰＤＣＳＬを算出する。さらに、大気圧ＰＡに応じて同図（ｂ）示すように補間演算を行うことにより、所定下限ゲージ圧ＭＰＤＣＳを算出する（ステップＳ３９）。ＭＰＤＣＳテーブルは、車速ＶＰが高くなるほど、上側リミット値ＭＰＤＣＳＨ及び下側リミット値ＭＰＤＣＳＬが低下するように設定されており、さらに所定下限ゲージ圧ＭＰＤＣＳは、大気圧ＰＡが高くなるほど増加するように設定される。
【００３５】
ステップＳ４０では、マスタパワ圧ＭＰＭＯＮのゲージ圧ＭＰＧＡ（＝ＰＡ−ＭＰＭＯＮ）が、所定下限ゲージ圧ＭＰＤＣＳ以上であるか否かを判別する。この答が否定（ＮＯ）であるときは、休筒運転実施条件不成立と判定し、前記ステップＳ４２に進む。ゲージ圧ＭＰＧＡが低い、換言すればブレーキブースタ内圧力が大気圧ＰＡに近いときは、休筒運転によりブレーキブースタ内に吸気管内の負圧が導入されにくくなるので、休筒運転を禁止する。一方ＭＰＧＡ≧ＭＰＤＣＳであるときは、休筒運転実施条件成立と判定し、休筒フラグＦＤＣＳＣＮＤを「１」に設定する（ステップＳ４１）。
【００３６】
図７は、図５のステップＳ３５で実行されるＮＤＣＳＬ算出処理のフローチャートである。
ステップＳ５１では、自動変速フラグＦＡＴが「１」であるか否かを判別し、ＦＡＴ＝１であって当該車両が自動変速機を備えているときは、選択されているシフトレンジ及びエンジンの目標アイドル回転数ＮＯＢＪＸに応じて、図８（ａ）に示すように設定されたＮＤＣＳＬＨテーブルまたはＮＤＣＳＬＬテーブルを検索し、下限回転数ＮＤＣＳＬを算出する（ステップＳ５３）。ＮＤＣＳＬＨテーブル及びＮＤＣＳＬＬテーブルは、それぞれ選択可能なシフトレンジに対応して設けられており、図８（ａ）はそれらのテーブルの代表的な設定例を示している。ＮＤＣＳＬＨテーブルは、エンジン回転数ＮＥが増加しているときに使用され、ＮＤＣＳＬＬテーブルは、エンジン回転数ＮＥが減少しているときに使用される。ＮＤＣＳＬＨテーブル及びＮＤＣＳＬＬテーブルは、図８（ａ）に示すように、目標アイドル回転数ＮＯＢＪＸが高くなるほど、下限回転数ＮＤＣＳＬＨ及ＮＤＣＳＬＬが低くなるように設定されている。また、選択シフトレンジがＳレンジ（加速時に低速段の使用割合を大きくしたレンジ）、Ｌレンジ（エンジンブレーキを効かせるためのレンジ）、またはＲレンジ（リバースレンジ）であるときに使用されるテーブルは、選択シフトレンジがＤレンジ（ドライブレンジ）であるときに使用されるテーブルに比べて、下限回転数ＮＤＣＳＬ及びＮＤＣＳＬＨが高くなるように設定されている。
【００３７】
一方ＦＡＴ＝０であって当該車両が手動変速機を備えているときは、選択されている変速段及びエンジンの目標アイドル回転数ＮＯＢＪＸに応じて、図８（ａ）に示すように設定されたＮＤＣＳＬＨテーブルまたはＮＤＣＳＬＬテーブルを検索し、下限回転数ＮＤＣＳＬを算出する（ステップＳ５２）。この場合、ＮＤＣＳＬＨテーブル及びＮＤＣＳＬＬテーブルは、それぞれ選択可能な変速段に対応して設けられており、図８（ａ）はそれらのテーブルの代表的な設定例を示している。変速段に対応して設けられた複数のテーブルは、変速段が低くなるほど、下限回転数ＮＤＣＳＬ及びＮＤＣＳＬＨが高くなるように設定されている。
【００３８】
ステップＳ５４では、ブレーキスイッチフラグＦＢＫＳＷが「１」であるか否かを判別する。ＦＢＫＳＷ＝０であってブレーキペダルが踏み込まれていないときは、下限回転数ＮＤＣＳＬを所定量ＤＮＤＣＳＬ（例えば２００ｒｐｍ）だけ増加させ（ステップＳ５５）、ステップＳ５６に進む。
【００３９】
ステップＳ５６では、作動油温ＴＯＩＬに応じて図８（ｂ）に示すＮＤＣＳＧＬテーブルを検索し、下限値ＮＤＣＳＧＬを算出する。次いで、下限回転数ＮＤＣＳＬが下限値ＮＤＣＳＧＬ以上か否かを判別し（ステップＳ５７）、ＮＤＣＳＬ≧ＮＤＣＳＧＬであるときは、直ちに本処理を終了する。ＮＤＣＳＬ＜ＮＤＣＳＧＬであるときは、下限回転数ＮＤＣＳＬを下限値ＮＤＣＳＧＬに設定し（ステップＳ５８）、本処理を終了する。
【００４０】
図９は、学習補正係数ＫＣＲＲＥＦを算出する処理のフローチャートである。本処理は、ＣＲＫパルスの発生に同期してＥＣＵ１５のＣＰＵで実行される。
本実施形態では、１つのＣＲＫパルスの発生から次のＣＲＫパルスの発生までの期間を「ステージ」と呼び、各ステージにはステージ番号が付されている。図１０は、各気筒の行程と、ステージ番号との関係を示す図であり、ステージ番号は、各気筒の圧縮行程の最初のステージを「０」とし、吸入行程の最後のステージを「２３」として定義されている。また＃２気筒のステージ番号を基準ステージ番号ＦＩＳＴＧといい、図９に示す処理で用いる。なお、図１０に「ＩＧ」を付して示す範囲は、点火が行われる範囲を示している。
【００４１】
ステップＳ６１では、基準ステージ番号ＦＩＳＴＧが「０」または「１２」であるか否かを判別する。基準ステージ番号ＦＩＳＴＧが「０」か「１２」であるときは、ステージカウンタＣＰＬＳを「０」にリセットし（ステップＳ６３）、基準ステージ番号ＦＩＳＴＧが「０」か「１２」以外であるときは、ステージカウンタＣＰＬＳを「１」だけインクリメントする（ステップＳ６２）。すなわち、ステージカウンタＣＰＬＳは、カウント値が０から１１までの値をとる巡回カウンタである。
【００４２】
続くステップＳ６４では、下記式（１）により、１回転周期ＣＲ１２ＭＥ(n)を算出する。
0003712661.tif 000002
ここで、「ｎ」は、ＣＲＫパルスの発生周期で離散化した時刻を示し、（ｎ）及び（ｎ−１）はそれぞれ今回値及び前回値を示すために付されている。ＭＦＣＲＭＥ(n)は、ＣＲＫパルスの発生時間間隔（以下「ステージ周期」という）の最新の検出値であり、ＭＦＣＲＭＥ(n-12)は、１２ステージ周期前の検出値である。
【００４３】
ステップＳ６５では、学習実行フラグＦＬＲＮが「１」であるか否かを判別する。学習実行フラグＦＬＲＮは、下記１）〜７）の条件が満たされると「１」に設定される。これにより、学習補正係数ＫＣＲＲＥＦの算出が許可される。
１）フュエルカット運転中であること
２）エンジン回転数ＮＥが所定上限値ＮＥＫＣＲＭＥＨ及び所定下限値ＮＥＫＣＲＭＥＬの範囲内にあること
３）スロットル弁１３が全閉状態にあること
４）エンジン水温ＴＷが所定水温ＴＷＫＣＲＭＥより高いこと
５）エンジン回転数ＮＥの変化量ＤＮＥの絶対値が所定変化量ＤＮＥＫＣＲＭＥ（例えば１ＴＤＣ期間（６ステージ周期）あたり２０ｒｐｍ）より小さいこと６）吸気管内絶対圧ＰＢＡの変化量ＤＰＢＡ（＝ＰＢＡ(k)−ＰＢＡ(k-1)，「ｋ」は、ＴＤＣパルスの発生周期で離散化した時刻）の絶対値が所定変化量ＤＰＢＫＣＲＭＥ（例えば１ＴＤＣ期間あたり５．３ｋＰａ（４０ｍｍＨｇ））より小さいこと
７）モータ３による回生エネルギ量を示すモータトルクの変化量ＤＡＣＴＴＲＱの絶対値が所定変化量ＤＡＣＫＣＲＭＥ（例えば１ＴＤＣ期間あたり５ｋｇｆ・ｍ）より小さいこと
なお、モータトルクの変化量ＤＡＣＴＴＲＱは、図示しないモータ制御用ＥＣＵから供給される。
【００４４】
フュエルカット運転中であることを条件とするのは、エンジンの燃焼による回転変動の影響を排除するためである。
ステップＳ６５で学習実行フラグＦＬＲＮが「０」であって学習補正係数ＫＣＲＲＥＦの算出が許可されていないときは、ステップＳ６８で参照されるダウンカウントタイマＴＫＣＲＭＥを所定時間ＴＭＫＣＲＭＥ（例えば０．３秒）に設定してスタートさせ（ステップＳ６７）、さらに学習フラグＦＫＣＲＭＥを「０」に設定して（ステップＳ６９）、本処理を終了する。
【００４５】
ステップＳ６５で学習実行フラグＦＬＲＮが「１」であって学習補正係数ＫＣＲＲＥＦの算出が許可されているときは、ダウンカウントタイマＴＫＣＲＭＥの値が「０」であるか否かを判別する（ステップＳ６８）。ＴＫＣＲＭＥ＞０である間は、前記ステップＳ６９に進み、ＴＫＣＲＭＥ＝０となると、ステップＳ７０に進んで、学習完了フラグＦＫＣＲＭＥＦが「１」であるか否かを判別する。学習完了フラグＦＫＣＲＭＥＦが既に「１」に設定されているときは直ちに本処理を終了する。
【００４６】
ＦＫＣＲＭＥＦ＝０であるときは、初期処理完了フラグＦＫＣＲＭＥＥＮＤが「１」であるか否かを判別する（ステップＳ７１）。初期処理完了フラグＦＫＣＲＭＥＥＮＤは、バッテリの取り外しなどで、バックアップメモリに格納されてた学習補正係数ＫＣＲＲＥＦが失われた後において、学習補正係数ＫＣＲＲＥＦの初期処理が完了したとき「１」に設定される。学習補正係数ＫＣＲＲＥＦの初期処理とは、後述するなまし係数ＫＣＲＫＲＥＦを今回値の寄与度が大きくなるような値（学習速度を高める値）に変更して学習補正係数ＫＣＲＲＥＦを算出する処理である。
【００４７】
ステップＳ７１でＦＫＣＲＭＥＥＮＤ＝０であって学習補正係数ＫＣＲＲＥＦの初期処理が完了していないときは、学習フラグＦＫＣＲＭＥが「１」であるか否かを判別する（ステップＳ７２）。最初は、ＦＫＣＲＭＥ＝０であるので、学習補正係数ＫＣＲＲＥＦ(CPLS)（CPLS=0〜11）をすべて「１．０」に設定し（ステップＳ７３）、初期処理実施カウンタＣＫＣＲＭＥを「０」に設定する（ステップＳ７４）。学習フラグＦＫＣＲＭＥが「１」に設定された後は（ステップＳ７７参照）、ステップＳ７２から直ちにステップＳ７５に進む。
【００４８】
ステップＳ７５では、なまし係数ＫＣＲＫＲＥＦを第１のなまし係数値ＫＣＲＫＲＥＦ０に設定し、ステップＳ７７に進む。
ステップＳ７１でＦＫＣＲＭＥＥＮＤ＝１であって初期処理が完了していることを示すときは、なまし係数ＫＣＲＫＲＥＦを第１のなまし係数値ＫＣＲＫＲＥＦ０より小さい第２のなまし係数値ＫＣＲＫＲＥＦ１に設定し（ステップＳ７６）、ステップＳ７７に進む。
【００４９】
ステップＳ７７では、学習フラグＦＫＣＲＭＥを「１」に設定し、次いで学習補正係数ＫＣＲＲＥＦを算出する（ステップＳ７８）。学習補正係数ＫＣＲＲＥＦは、下記式（２）で定義される誤差補正係数ＫＣＲＫをなまし処理することにより算出される。
【数１】
0003712661.tif 000003
【００５０】
式（２）において、ＭＦＣＲＭＥは、ステージ周期（ＣＲＫパルスの発生時間間隔）の実測値、ＣＲ１２ＭＥはステップＳ６４で算出される１回転周期である。また、ＭＣＲＭＥ及びＭＣＲＭＥ１２は、それぞれ基準とするクランク角度位置センサ（パルサ）（設計値どおりに製作されたと仮定したクランク角度位置センサ）のステージ周期及び１回転周期である。すなわち、誤差補正係数ＫＣＲＫは、基準クランク角度位置センサの１回転周期ＭＣＲ１２ＭＥに対するステージ周期ＭＣＲＭＥの比率（エンジン回転数ＮＥに依存しない）を、実測される１回転周期ＣＲ１２ＭＥに対するステージ周期ＭＦＣＲＭＥの比率（エンジン回転数ＮＥに依存しない）で除算することにより算出される。なお、今回値ＫＣＲＫ(CPLS)ではなく、６ステージ周期前の値ＫＣＲＫ(CPLS-6)を算出するのは、補正の対象とするステージを中心とした１回転周期ＣＲ１２ＭＥ(n)を用いて誤差補正係数ＫＣＲＫを算出するためである。また、式（２）の「ｉ」は基準ステージ番号ＦＩＳＴＧである。
【００５１】
式（２）から明らかなように、クランク角度位置センサ２０により検出されるステージ周期ＭＦＣＲＭＥと１回転周期ＣＲ１２ＭＥの比率ＲＡＣＴが、基準ステージ周期ＭＣＲＭＥと基準１回転周期ＭＣＲ１２ＭＥとの比率ＲＲＥＦと等しいとき、誤差補正係数ＫＣＲＫは「１．０」となり、ＲＡＣＴ＞ＲＲＥＦであるときは、誤差補正係数ＫＣＲＫは「１．０」より小さくなり、逆にＲＡＣＴ＜ＲＲＥＦであるときは、誤差補正係数ＫＣＲＫは「１．０」より大きくなる。
【００５２】
ここで、下記式（３）により、基準補正係数ＫＭＣＲＭＥを定義すると、式（２）は、下記式（２ａ）のように変形される。
【数２】
0003712661.tif 000004
本実施形態では、２４のステージに対応した２４個の基準補正係数ＫＭＣＲＭＥ(i)（ｉ＝０〜２３）を予め算出し、メモリ（ＲＯＭ）に格納するようにしており、式（２ａ）により、誤差補正係数ＫＣＲＫが算出される。２４個の基準補正係数ＫＭＣＲＭＥを予め算出しておくのは、フュエルカット運転中であっても、空気の圧縮、膨張などの影響により、クランク軸の回転角速度は、ステージ毎にわずかずつ変化するからである。
【００５３】
そして誤差補正係数ＫＣＲＫと、なまし係数ＫＣＲＫＲＥＦを下記式（４）に適用することにより、学習補正係数ＫＣＲＲＥＦを算出する。
0003712661.tif 000005
ここで、右辺のＫＣＲＲＥＦ(CPLS-6)は１２ステージ周期前の算出値である。
【００５４】
ステップＳ７９では、ステップＳ７８で算出した学習補正係数ＫＣＲＲＥＦのリミットチェックを行う。すなわち、学習補正係数ＫＣＲＲＥＦが所定上限値ＫＣＲＲＥＦＬＨより大きいときは、学習補正係数ＫＣＲＲＥＦをその所定上限値ＫＣＲＲＥＦＬＨに設定し、学習補正係数ＫＣＲＲＥＦが所定下限値ＫＣＲＲＥＦＬＬより小さいときは、学習補正係数ＫＣＲＲＥＦをその所定下限値ＫＣＲＲＥＦＬＬに設定する。
【００５５】
算出された学習補正係数ＫＣＲＲＥＦ(CPLS)（CPLS=0〜11）は、バックアップメモリに格納される。
ステップＳ８０では、初期処理実施カウンタＣＫＣＲＭＥを「１」だけインクリメントし、次いでそのカウンタＣＫＣＲＭＥの値が所定数ＣＫＣＲＥＮＤ（例えば１２０）と等しいか否かを判別する（ステップＳ８１）。ＣＫＣＲＭＥ＜ＣＫＣＲＥＮＤである間は直ちに本処理を終了し、ＣＫＣＲＭＥ＝ＣＫＣＲＥＮＤとなると、初期処理完了フラグＦＫＣＲＭＥＥＮＤ及び学習完了フラグＦＫＣＲＭＥＦをともに「１」に設定し（ステップＳ８２）、本処理を終了する。
【００５６】
初期処理完了フラグＦＫＣＲＭＥＥＮＤが「１」に設定されると、バッテリの取り外しなどがない限り、「１」に設定された状態がイグニッションスイッチオフ後も保持されるので、本処理の次回実行時においては、ステップＳ７２からステップＳ７５は実行されない。なお、イグニッションスイッチがオフされたとき、初期処理実施カウンタＣＫＣＲＭＥの値は「０」にリセットされ、学習完了フラグＦＫＣＲＭＥＦは「０」にリセットされる。
【００５７】
図９の処理により算出される学習補正係数ＫＣＲＲＥＦは、「１．０」より小さい値に収束したときは、対応するステージ周期ＭＦＣＲＭＥを決定するパルサの間隔が設計値より大きいことを意味する。一方、「１．０」より大きい値に収束したときは、対応するステージ周期ＭＦＣＲＭＥを決定するパルサの間隔が設計値より小さいことを意味する。
【００５８】
図９の処理により算出される学習補正係数ＫＣＲＲＥＦを検出ステージ周期ＭＦＣＲＭＥに乗算することにより、検出ステージ周期ＭＦＣＲＭＥを補正し、補正後のステージ周期ＭＦＣＲＭＥを用いて，図示しない処理により失火判定が行われる。より具体的には、補正後のステージ周期ＭＦＣＲＭＥの変化量に応じた回転変動パラメータが算出され、その回転変動パラメータが判定閾値を越えると、失火が発生したと判定される。判定閾値は、前記基準クランク角度位置センサに対応して設定されている。したがって、学習補正係数ＫＣＲＲＥＦで補正したステージ周期を用いることにより、クランク角度位置センサの特性ばらつきを補正して正確な失火判定を行うことが可能となる。
【００５９】
図１１は、吸気管１２の漏れ（リーク）を判定するリーク判定処理のフローチャートである。この処理は、ＴＤＣパルスの発生に同期してＥＣＵ１５のＣＰＵで実行される。
ステップＳ９１では、エンジン回転数ＮＥに応じて図１２に示すＰＢＧＡＬＫテーブルを検索し、判定閾値ＰＢＧＡＬＫを算出する。ＰＢＧＡＬＫテーブルは、エンジン回転数ＮＥが増加するほど判定閾値ＰＢＧＡＬＫが増加するように設定されている。ステップＳ９２では、始動フラグＦＳＴＭＯＤが「１」であるか否かを判別する。ＦＳＴＭＯＤ＝１であって、エンジン１の始動中（クランキング中）であることを示すときはは、ステップＳ９６で参照されるダウンカウントタイマＴＬＫＴＨＰを所定時間ＴＭＬＫＴＨＰ（例えば２秒）に設定してスタートさせる（ステップＳ９５）。さらにステップＳ９９で算出されるダウンカウントタイマＴＡＩＲＬＫを所定時間ＴＭＡＩＲＬＫ（例えば３秒）に設定してスタートさせ（ステップＳ９８）、リーク検知フラグＦＡＩＲＬＫを「０」に設定して（ステップＳ１０２）、本処理を終了する。
【００６０】
始動フラグＦＳＴＭＯＤが「１」でないとき、すなわちエンジン１の始動中でないときは、スロットル全閉フラグＦＴＨＩＤＬＥが「１」であるか否かを判別する。その答が否定（ＮＯ）であって、スロットル弁１３が全閉状態にあるときは、休筒フラグＦＤＣＳＣＮＤが「１」であるか否かを判別する（ステップＳ９４）。
【００６１】
ステップＳ９３またはＳ９４の答が肯定（ＹＥＳ）であるときは、リーク判定を実行できないので、前記ステップＳ９５に進む。ＦＤＣＳＣＮＤ＝０であって、休筒運転が許可されていないときは、ステップＳ９５でスタートしたタイマＴＫＬＴＨＰの値が「０」であるか否かを判別する（ステップＳ９６）。ＴＫＬＴＨＰ＞０である間は、前記ステップＳ９８に進み、ＴＫＬＴＨＰ＝０となると、大気圧ＰＡと吸気管内絶対圧ＰＢＡとの差圧であるゲージ圧ＰＢＧＡ（＝ＰＡ−ＰＢＡ）が判定閾値ＰＢＧＡＬＫより小さいか否かを判別する。ゲージ圧ＰＢＧＡが判定閾値ＰＢＧＡＬＫ以上である（吸気管内絶対圧ＰＢＡが比較的低い）ときは、吸気管１２は正常と判定して前記ステップＳ９８に進む。
【００６２】
一方ＰＢＧＡ＜ＰＢＧＡＬＫであって、吸気管内絶対圧ＰＢＡが比較的高いときは、漏れが有る可能性があると判定し、ステップＳ９８でスタートしたタイマＴＡＩＲＬＫの値が「０」であるか否かを判別する（ステップＳ９９）。ＴＡＩＲＬＫ＞０である間は、前記ステップＳ１０２に進み、ＴＡＩＲＬＫ＝０となると、ステップＳ１００に進んで、フュエルカットフラグＦＦＣが「１」であるか否かを判別する。ＦＦＣ＝０であってフュエルカット中でないときは、前記ステップＳ１０２に進む。ＦＦＣ＝１であってフュエルカット中であるときは、漏れがあるとの判定を確定し、リーク検知フラグＦＡＩＲＬＫを「１」に設定する（ステップＳ１０１）。
【００６３】
休筒運転中は、全筒運転中に比べて吸気管内絶対圧ＰＢＡが増加する傾向があるが、図１１の処理によれば、休筒運転中はリーク判定（ステップＳ９７）が実行されないので、休筒運転に起因して吸気管内絶対圧ＰＢＡが高くなったときに、漏れが有ると誤判定することを防止できる。
【００６４】
本実施形態では、ＥＣＵ１５が補正手段及び許可手段を構成する。より具体的には、図９の処理が補正手段に相当し、図５のステップＳ２５が許可手段に相当する。
なお本発明は上述した実施形態に限るものではなく、種々の変形が可能である。例えば、上述した実施形態では４気筒エンジンを示したが、本発明はどのような気筒数のエンジンにも適用可能である。
【００６５】
また上述した図１１の処理では、休筒運転中はリーク判定を行わないようにしたが、これに代えて、休筒運転中は、判定閾値ＰＢＧＡＬＫを全筒運転中より小さな値に設定し、リーク判定を実行するようにしてもよい。
【００６６】
【発明の効果】
以上詳述したように本発明によれば、気筒休止機構を備える内燃機関のクランク軸の回転角度を検出するクランク角検出手段の検出誤差の補正が可能となった後に、休筒運転が許可されるので、クランク角検出手段の検出誤差を補正する補正値を休筒運転中に算出することがなく、正確な補正値を得ることができる。したがって、クランク角度検出手段に出力に基づく失火検出の精度が低下することを防止できる。
【図面の簡単な説明】
【図１】本発明の一実施形態にかかる車両の駆動系の概略構成を示す図である
【図２】図１に示す内燃機関の制御装置の構成を示す図である。
【図３】気筒休止機構を油圧駆動するための油圧回路とその制御系を示す図である。
【図４】休筒運転実施条件を判断する処理のフローチャートである。
【図５】休筒運転実施条件を判断する処理のフローチャートである。
【図６】図５の処理で参照されるテーブルを示す図である。
【図７】図５に示す処理で実行される下限回転数（ＮＤＣＳＬ）算出処理のフローチャートである。
【図８】図７の処理で参照されるテーブルを示す図である。
【図９】クランク軸の回転角度検出誤差を補正する学習補正係数（ＫＣＲＲＥＦ）を算出する処理のフローチャートである。
【図１０】各気筒の行程とステージ番号を説明するための図である。
【図１１】吸気管の漏れを判定する処理のフローチャートである。
【図１２】図１１の処理で参照されるテーブルを示す図である。
【符号の説明】
１  内燃機関
１５  電子コントロールユニット（補正手段、許可手段）
２０  クランク角度位置センサ（クランク角検出手段）
３０  気筒休止機構
【図１】
0003712661.tif 000006
【図２】
0003712661.tif 000007
【図３】
0003712661.tif 000008
【図４】
0003712661.tif 000009
【図５】
0003712661.tif 000010
【図６】
0003712661.tif 000011
【図７】
0003712661.tif 000012
【図８】
0003712661.tif 000013
【図９】
0003712661.tif 000014
【図１０】
0003712661.tif 000015
【図１１】
0003712661.tif 000016
【図１２】
0003712661.tif 000017