以下、本発明の各実施形態に係る内燃機関の空燃比気筒間インバランス判定装置について図面を参照しながら説明する。各実施形態に係る装置は、空燃比センサの出力値により表される空燃比(検出空燃比)の時間微分値(検出空燃比変化率)に相当する値(空燃比変化率指示量)をインバランス判定用パラメータとして取得し、そのインバランス判定用パラメータを用いて空燃比気筒間インバランス判定を実行する。
更に、各実施形態に係る装置は、空燃比センサが空燃比気筒間インバランス判定に適切な出力特性を有しているか否かを空燃比センサ評価用パラメータ(評価用パラメータ)を用いて判定する。各実施形態に係る装置は、強制的に空燃比気筒間インバランス状態を発生させ、その状態における検出空燃比変化率に相当する値を「評価用パラメータ」として取得する。
但し、インバランス判定用パラメータは、空燃比センサに排ガスが到達する少なくとも3以上の気筒のそれぞれに供給される混合気の空燃比の間の不均衡の程度が大きいほど大きくなるパラメータであればよく、検出空燃比変化率に相当する値に限定されることはない。具体的には、インバランス判定用パラメータは、空燃比センサの出力値(又は空燃比センサの出力値が空燃比に変換された値である検出空燃比)の軌跡長、空燃比センサの出力値又は検出空燃比の変化率の変化率に応じた値(上流側空燃比センサの出力値の時間に関する二階微分値、又は、上流側空燃比センサの出力値により表される空燃比の時間に関する二階微分値)等であってもよい。また、インバランス判定用パラメータは、空燃比センサに排ガスが到達する少なくとも3以上の気筒のそれぞれに供給される混合気の空燃比の間の不均衡の程度が大きいほど小さくなるパラメータであってもよい。
更に、空燃比センサ評価用パラメータは、前記空燃比センサの出力特性を表すパラメータであればよく、検出空燃比変化率に相当する値に限定されることはない。空燃比センサ評価用パラメータは、インバランス判定用パラメータと同じか同種のパラメータとすることが望ましい。
<第1実施形態>
本発明の第1実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第1判定装置」と称呼する。)は、内燃機関の空燃比を制御する空燃比制御装置の一部であり、燃料噴射量を制御する燃料噴射量制御装置でもある。
(構成)
図1は、第1判定装置が適用される内燃機関10の概略構成を示している。機関10は、4サイクル・火花点火式・多気筒(本例において4気筒)・ガソリン燃料機関である。機関10は、本体部20、吸気系統30及び排気系統40を備えている。
本体部20は、シリンダブロック部とシリンダヘッド部とを備えている。本体部20は、ピストン頂面、シリンダ壁面及びシリンダヘッド部の下面等により形成される複数(4個)の燃焼室(第1気筒#1乃至第4気筒#4)21を備えている。
シリンダヘッド部には、各燃焼室(各気筒)21に「空気及び燃料からなる混合気」を供給するための吸気ポート22と、各燃焼室21から排ガス(既燃ガス)を排出するための排気ポート23と、が形成されている。吸気ポート22は図示しない吸気弁により開閉され、排気ポート23は図示しない排気弁により開閉されるようになっている。
シリンダヘッド部には複数(4個)の点火プラグ24が固定されている。各点火プラグ24は、その火花発生部が各燃焼室21の中央部であってシリンダヘッド部の下面近傍位置に露呈するように配設されている。各点火プラグ24は、点火信号に応答して火花発生部から点火用火花を発生するようになっている。
シリンダヘッド部には更に複数(4個)の燃料噴射弁(インジェクタ)25が固定されている。燃料噴射弁25は、各吸気ポート22に一つずつ設けられている。燃料噴射弁25は、噴射指示信号に応答し、正常である場合に「その噴射指示信号に含まれる指示噴射量の燃料」を対応する吸気ポート22内に噴射するようになっている。このように、複数の気筒21のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁25を備えている。
更に、シリンダヘッド部には、吸気弁制御装置26が設けられている。この吸気弁制御装置26は、インテークカムシャフト(図示せず)とインテークカム(図示せず)との相対回転角度(位相角度)を油圧により調整・制御する周知の構成を備えている。吸気弁制御装置26は、指示信号(駆動信号)に基いて作動し、吸気弁の開弁タイミング(吸気弁開弁タイミング)を変更することができるようになっている。
吸気系統30は、インテークマニホールド31、吸気管32、エアフィルタ33、スロットル弁34及びスロットル弁アクチュエータ34aを備えている。
インテークマニホールド31は、各吸気ポート22に接続された複数の枝部と、それらの枝部が集合したサージタンク部と、を備えている。吸気管32はサージタンク部に接続されている。インテークマニホールド31、吸気管32及び複数の吸気ポート22は、吸気通路を構成している。エアフィルタ33は吸気管32の端部に設けられている。スロットル弁34はエアフィルタ33とインテークマニホールド31との間の位置において吸気管32に回動可能に取り付けられている。スロットル弁34は、回動することにより吸気管32が形成する吸気通路の開口断面積を変更するようになっている。スロットル弁アクチュエータ34aは、DCモータからなり、指示信号(駆動信号)に応答してスロットル弁34を回動させるようになっている。
排気系統40は、エキゾーストマニホールド41、エキゾーストパイプ(排気管)42、上流側触媒43及び下流側触媒44を備えている。
エキゾーストマニホールド41は、各排気ポート23に接続された複数の枝部41aと、それらの枝部41aが集合した集合部(排気集合部)41bと、からなっている。エキゾーストパイプ42は、エキゾーストマニホールド41の集合部41bに接続されている。エキゾーストマニホールド41、エキゾーストパイプ42及び複数の排気ポート23は、排ガスが通過する通路を構成している。なお、本明細書において、エキゾーストマニホールド41の集合部41b及びエキゾーストパイプ42を、便宜上、「排気通路」と称呼する。
上流側触媒43は、セラミックからなる担持体に「触媒物質である貴金属」及び「セリア(CeO2)」を担持していて、酸素吸蔵・放出機能(酸素吸蔵機能)を有する三元触媒である。上流側触媒43はエキゾーストパイプ42に配設(介装)されている。上流側触媒43は所定の活性温度に到達すると、「未燃物(HC、CO及びH2等)と窒素酸化物(NOx)とを同時に浄化する触媒機能」及び「酸素吸蔵機能」を発揮する。
下流側触媒44は、上流側触媒43と同様の三元触媒である。下流側触媒44は、上流側触媒43よりも下流においてエキゾーストパイプ42に配設(介装)されている。なお、上流側触媒43及び下流側触媒44は、三元触媒以外の種類の触媒であっても良い。
この第1判定装置は、熱線式エアフローメータ51、スロットルポジションセンサ52、クランク角センサ53、インテークカムポジションセンサ54、上流側空燃比センサ55、下流側空燃比センサ56及びアクセル開度センサ57を備えている。
熱線式エアフローメータ51は、吸気管32内を流れる吸入空気の質量流量を検出し、その質量流量(機関10の単位時間あたりの吸入空気量)Gaを表す信号を出力するようになっている。吸入空気流量Gaは排ガスの流量に略等しいので、排ガスの流速にも略比例する。
スロットルポジションセンサ52は、スロットル弁34の開度を検出し、スロットル弁開度TAを表す信号を出力するようになっている。
クランク角センサ(クランクポジションセンサ)53は、機関10のクランク軸が10度回転する毎に幅狭のパルスを有するとともに同クランク軸が360°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置60によって機関回転速度NEに変換される。
インテークカムポジションセンサ54は、インテークカムシャフトが所定角度から90度、次いで90度、更に180度回転する毎に一つのパルスを出力するようになっている。電気制御装置60は、クランク角センサ53及びインテークカムポジションセンサ54からの信号に基いて、基準気筒(例えば第1気筒#1)の圧縮上死点を基準とした絶対クランク角CAを取得するようになっている。この絶対クランク角CAは、基準気筒の圧縮上死点において「0°クランク角」に設定され、クランク角の回転角度に応じて720°クランク角まで増大し、その時点にて再び0°クランク角に設定される。
上流側空燃比センサ55(本発明における空燃比センサ55)は、エキゾーストマニホールド41の集合部41bと上流側触媒43との間の位置においてエキゾーストマニホールド41及びエキゾーストパイプ42の何れか(即ち、排気通路)に配設されている。即ち、空燃比センサ55は、機関10の排気通路であって「複数の気筒のうちの少なくとも3以上の気筒の燃焼室21)から排出された排ガスが集合する排気集合部」又は「その排気通路のその排ガス集合部よりも下流部位」に配設されている。空燃比センサ55は、例えば、特開平11−72473号公報、特開2000−65782号公報及び特開2004−69547号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
上流側空燃比センサ55は、図2及び図3に示したように、空燃比検出素子55aと、外側保護カバー55bと、内側保護カバー55cと、を有している。
外側保護カバー55bは金属からなる中空円筒体である。外側保護カバー55bは内側保護カバー55cを覆うように、内側保護カバー55cを内部に収容している。外側保護カバー55bは、流入孔55b1をその側面に複数備えている。流入孔55b1は、排気通路を流れる排ガス(外側保護カバー55bの外部の排ガス)EXを外側保護カバー55bの内部に流入させるための貫通孔である。更に、外側保護カバー55bは、外側保護カバー55bの内部の排ガスを外部(排気通路)に流出させるための流出孔55b2をその底面に有している。
内側保護カバー55cは、金属からなり、外側保護カバー55bの直径よりも小さい直径を有する中空円筒体である。内側保護カバー55cは、空燃比検出素子55aを覆うように空燃比検出素子55aを内部に収容している。内側保護カバー55cは流入孔55c1をその側面に複数備えている。この流入孔55c1は、外側保護カバー55bの流入孔55b1を通して「外側保護カバー55bと内側保護カバー55cとの間の空間」に流入した排ガスを、内側保護カバー55cの内部に流入させるため貫通孔である。更に、内側保護カバー55cは、内側保護カバー55cの内部の排ガスを外部に流出させるための流出孔55c2をその底面に有している。
図4の(A)乃至(C)に示したように、空燃比検出素子55aは、固体電解質層551と、排ガス側電極層552と、大気側電極層553と、拡散抵抗層554と、隔壁部555と、を含んでいる。
固体電解質層551は酸素イオン導電性酸化物焼結体である。本例において、固体電解質層551は、ZrO2(ジルコニア)にCaOを安定剤として固溶させた「安定化ジルコニア素子」である。固体電解質層551は、その温度が活性温度以上であるとき、周知の「酸素電池特性」及び「酸素ポンプ特性」を発揮する。
排ガス側電極層552は、白金(Pt)等の触媒活性の高い貴金属からなる。排ガス側電極層552は、固体電解質層551の一つの面上に形成されている。排ガス側電極層552は、化学メッキ等により浸透性を十分に有するように(即ち、多孔質状に)形成されている。
大気側電極層553は、白金(Pt)等の触媒活性の高い貴金属からなる。大気側電極層553は、固体電解質層551の他の面上であって、固体電解質層551を挟んで排ガス側電極層552に対向するように形成されている。大気側電極層553は、化学メッキ等により浸透性を十分に有するように(即ち、多孔質状に)形成されている。
拡散抵抗層(拡散律速層)554は、多孔質セラミック(耐熱性無機物質)からなる。拡散抵抗層554は、排ガス側電極層552の外側表面を覆うように、例えば、プラズマ溶射法等により形成されている。
隔壁部555は、緻密であってガスを透過させないアルミナセラミックスからなる。隔壁部555は大気側電極層553を収容する空間である「大気室556」を形成するように構成されている。大気室556には大気が導入されている。
上流側空燃比センサ55には電源557が接続されている。電源557は、大気側電極層553側が高電位となり、排ガス側電極層552が低電位となるように、電圧Vを印加する。
このような構造を有する上流側空燃比センサ55は、図4の(B)に示したように、排ガスの空燃比が理論空燃比よりもリーン側の空燃比であるとき、拡散抵抗層554を通って排ガス側電極層552に到達した酸素をイオン化して大気側電極層553へと通過させる。この結果、電源557の正極から負極へと電流Iが流れる。この電流Iの大きさは、図5に示したように、電圧Vを所定値Vp以上に設定すると、排ガス側電極層552に到達した酸素の濃度(酸素分圧、排ガスの空燃比)に比例した一定値となる。上流側空燃比センサ55は、この電流(即ち、限界電流Ip)を電圧に変換した値を出力値Vabyfsとして出力する。
これに対し、排ガスの空燃比が理論空燃比よりもリッチ側の空燃比であるとき、上流側空燃比センサ55は、図4の(C)に示したように、大気室556に存在する酸素をイオン化して排ガス側電極層552へと導き、拡散抵抗層554を通って排ガス側電極層552に到達する未燃物(HC,CO及びH2等)を酸化する。この結果、電源557の負極から正極へと電流Iが流れる。この電流Iの大きさも、図5に示したように、電圧Vを所定値Vp以上に設定すると、排ガス側電極層552に到達した未燃物の濃度(即ち、排ガスの空燃比)に比例した一定値となる。上流側空燃比センサ55は、この電流(即ち、限界電流Ip)を電圧に変換した値を出力値Vabyfsとして出力する。
即ち、空燃比検出素子55aは、図6に示したように、上流側空燃比センサ55の配設位置を流れ、且つ、外側保護カバー55bの流入孔55b1及び内側保護カバー55cの流入孔55c1を通って空燃比検出素子55aに到達しているガスの空燃比(上流側空燃比abyfs、検出空燃比abyfs)に応じた出力Vabyfsを「空燃比センサ出力(空燃比センサの出力値)Vabyfs」として出力する。空燃比センサ出力Vabyfsは、空燃比検出素子55aに到達しているガスの空燃比が大きくなるほど(リーンとなるほど)増大する。このように、空燃比センサ出力Vabyfsは、空燃比検出素子55aに到達している排ガスの空燃比に実質的に比例する。
後述する電気制御装置60は、図6に示した空燃比変換テーブル(マップ)Mapabyfsを記憶していて、空燃比センサの出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、実際の検出空燃比abyfsを取得する(上流側空燃比abyfsを検出する)。このように、検出空燃比abyfsは、空燃比センサ55の出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することによって空燃比に変換した値であるから、空燃比センサ55の出力値Vabyfsにより表される空燃比であると表現することもできる。なお、後述するように、空燃比センサ55は、その出力特性が変化する。空燃比変換テーブルMapabyfsは、そのような出力特性の変化が生じていない標準的な空燃比センサ55(即ち、基準空燃比センサ)の出力値Vabyfsに基づいて予め実験により求めたテーブルである。
再び、図1を参照すると、下流側空燃比センサ56は、上流側触媒43と下流側触媒44との間の位置においてエキゾーストパイプ42(即ち、排気通路)に配設されている。下流側空燃比センサ56は、周知の濃淡電池型の酸素濃度センサ(O2センサ)である。下流側空燃比センサ56は、下流側空燃比センサ56の配設位置を流れる排ガスの空燃比(下流側空燃比afdown)に応じた出力値Voxsを出力するようになっている。
下流側空燃比センサ56の出力Voxsは、図7に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max(例えば、約0.9V)となり、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min(例えば、約0.1V)となり、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Vst(中間電圧Vst、例えば、約0.5V)となる。更に、この出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変し、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
図1に示したアクセル開度センサ57は、運転者によって操作されるアクセルペダルAPの操作量を検出し、アクセルペダルAPの操作量Accpを表す信号を出力するようになっている。
電気制御装置60は、「CPU、ROM、RAM、バックアップRAM(又は、EEPROM等の不揮発性メモリ)、並びに、ADコンバータを含むインターフェース等」からなる「周知のマイクロコンピュータ」である。
バックアップRAMは、機関10を搭載した車両の図示しないイグニッション・キー・スイッチの位置(オフ位置、始動位置及びオン位置等の何れか)に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップRAMは、バッテリから電力の供給を受けている場合、CPUの指示に応じてデータを格納する(データが書き込まれる)とともに、そのデータを読み出し可能となるように保持(記憶)する。
電気制御装置60のインターフェースは、前記センサ51〜57と接続され、CPUにセンサ51〜57からの信号を供給するようになっている。更に、そのインターフェースは、CPUの指示に応じて、各気筒の点火プラグ24、各気筒の燃料噴射弁25、吸気弁制御装置26及びスロットル弁アクチュエータ34a等に指示信号(駆動信号)等を送出するようになっている。なお、電気制御装置60は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度TAが大きくなるように、スロットル弁アクチュエータ34aに指示信号を送出するようになっている。
(空燃比気筒間インバランス判定の原理)
次に、第1判定装置(及び後述する他の判定装置)が採用した「空燃比気筒間インバランス判定」の原理について説明する。
「空燃比センサ55の出力値Vabyfsにより表される空燃比(即ち、検出空燃比abyfs)」の「単位時間当たりの変化量」の大きさは、図8を参照しながら後に詳述するように、「ある気筒に供給される混合気の空燃比」が「残りの気筒に供給される混合気の空燃比」から乖離するほど、大きくなる。以下、残りの気筒に供給される混合気の空燃比から乖離した空燃比の混合気が供給される気筒は「インバランス気筒」とも称呼され、インバランス気筒に供給される混合気の空燃比は「インバランス気筒の空燃比」とも称呼される。更に、残りの気筒(インバランス気筒以外の気筒)は「非インバランス気筒」又は「正常気筒」とも称呼され、非インバランス気筒に供給される混合気の空燃比は「非インバランス気筒の空燃比又は正常気筒の空燃比」とも称呼される。
「検出空燃比abyfsの単位時間当たりの変化量」は、その単位時間が例えば4m秒程度の極めて短い時間であるとき、検出空燃比abyfsの時間微分値であると言うこともできるので、「検出空燃比変化率ΔAF」とも称呼される。従って、検出空燃比変化率ΔAFの絶対値はインバランス気筒の空燃比が正常気筒の空燃比から乖離するほど大きくなる。
加えて、空燃比センサ55は保護カバー(外側の保護カバー55b及び内側の保護カバー55c)を備えている。このため、後述するように、検出空燃比変化率ΔAFは機関回転速度NEの影響を受け難い。
従って、「検出空燃比変化率ΔAFに応じて変化する空燃比変化率指示量(例えば、複数の検出空燃比変化率ΔAFの絶対値の平均値及び複数の検出空燃比変化率ΔAFの絶対値のうちの最大値等)」に基づくことにより、機関回転速度NEの影響を強く受けることなく、空燃比気筒間インバランス判定を精度良く実行することができる。以下、この理由について詳細に説明する。
空燃比センサ55には、各気筒からの排ガスが点火順に到達する。空燃比気筒間インバランス状態が発生していない場合、各気筒から排出され且つ空燃比センサ55に到達する排ガスの空燃比は互いに略同一である。従って、空燃比気筒間インバランス状態が発生していない場合の空燃比センサ55の出力値Vabyfsにより表される検出空燃比abyfsは、例えば、図8の(A)に示したように変化する。即ち、空燃比気筒間インバランス状態が発生していない場合、空燃比センサ55の出力値Vabyfsの波形は略平坦である。このため、検出空燃比変化率ΔAFの絶対値は小さい。
一方、「特定気筒(例えば、第1気筒)の空燃比のみが理論空燃比よりもリッチ側に偏移した空燃比気筒間インバランス状態(リッチずれインバランス状態)」が発生している場合、その特定気筒の排ガスの空燃比(インバランス気筒の空燃比)と、その特定気筒以外の気筒の排ガスの空燃比(正常気筒の空燃比、非インバランス気筒の空燃比)と、は大きく相違する。
従って、リッチずれインバランス状態が発生している場合の空燃比センサ55の出力値Vabyfsにより表される検出空燃比abyfsは、例えば図8の(B)に示したように、4気筒・4サイクル・エンジンの場合に720°クランク角(一つの空燃比センサ55に到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角)毎に大きく変動する。なお、「一つの空燃比センサ55に到達する排ガスを排出している総ての気筒において各一回の燃焼行程が終了するのに要するクランク角が経過する期間」は、本明細書において「単位燃焼サイクル期間」とも称呼される。
より具体的に述べると、図8の(B)に示した例において、第1気筒がインバランス気筒であるとき、検出空燃比abyfsは、第1気筒からの排ガスが空燃比センサ55の空燃比検出素子55aに到達したときに理論空燃比よりもリッチ側の値となり、残りの気筒からの排ガスが空燃比検出素子55aに到達したときに理論空燃比又は理論空燃比よりも若干だけリーン側の値に収束するように連続的に変化する。残りの気筒からの排ガスが空燃比検出素子55aに到達したときに検出空燃比abyfsが理論空燃比よりも若干だけリーン側の値に収束するのは、上述した従来の空燃比フィードバック制御に依る。
他方、「特定気筒(例えば、第1気筒)の空燃比のみが理論空燃比よりもリーン側に偏移した空燃比気筒間インバランス状態(リーンずれインバランス状態)」が発生している場合においても、空燃比センサ55の出力値Vabyfsにより表される検出空燃比abyfsは、例えば図8の(C)に示したように、720°クランク角毎に大きく変動する。
より具体的に述べると、図8の(C)に示した例において、検出空燃比abyfsは、第1気筒からの排ガスが空燃比検出素子55aに到達したときに理論空燃比よりもリーン側の値となり、残りの気筒からの排ガスが空燃比検出素子55aに到達したときに理論空燃比又は理論空燃比よりも若干だけリッチ側の値に収束するように連続的に変化する。残りの気筒からの排ガスが空燃比検出素子55aに到達したときに検出空燃比abyfsが理論空燃比よりも若干だけリッチ側の値に収束するのは、上述した従来の空燃比フィードバック制御に依る。
図8の(A)〜(C)から明らかなように、空燃比気筒間インバランス状態が発生した場合の検出空燃比abyfsの時間微分値である「検出空燃比変化率ΔAF」の絶対値(角度α2〜α5の各大きさ)は、空燃比気筒間インバランス状態が発生していない場合の検出空燃比変化率ΔAFの絶対値(角度α1の大きさ)に比べて顕著に大きくなる。
従って、検出空燃比変化率ΔAFに応じて変化する空燃比変化率指示量(例えば、微小の所定時間毎に取得される検出空燃比変化率ΔAFそのもの、ある期間において取得された複数の検出空燃比変化率ΔAFの絶対値の平均値、及び、ある期間において取得された複数の検出空燃比変化率ΔAFの絶対値のうちの最大値等)を「インバランス判定用パラメータとして」空燃比センサ55の出力値Vabyfsに基づいて取得し、例えば、その空燃比変化率指示量と所定のインバランス判定用閾値とを比較すること等により空燃比気筒間インバランス判定を実行することができる。なお、実験によれば、図8の(B)に示したように、リッチずれインバランス状態が発生している場合、検出空燃比abyfsは比較的急激に減少した後に比較的緩慢に増大する。また、図8の(C)に示したように、リーンずれインバランス状態が発生している場合、検出空燃比abyfsは比較的急激に増大した後に比較的緩慢に減少する。従って、α2の大きさはα5の大きさよりも大きく、α4の大きさα3の大きさよりも大きい。
次に、検出空燃比変化率ΔAFが機関回転速度の影響を殆ど受けない点について説明する。
前述したように、空燃比センサ55は、空燃比検出素子55aと、その空燃比検出素子55aの保護カバー(55b、55c)と、を有している。保護カバー(55b、55c)は、空燃比検出素子55aを覆うように、空燃比検出素子55aをその内部に収容する。更に、保護カバー(55b、55c)は、排気通路を流れる排ガスEXを保護カバー(55b、55c)の内部に流入させて空燃比検出素子55aに到達させるための流入孔(55b1、55c1)と、保護カバーの内部に流入した排ガスを排気通路に流出させるための流出孔(55b2、55c2)と、を有する。
空燃比センサ55は、排気集合部41b又は排気集合部41bよりも下流の排気通路(且つ、上流側触媒43の上流)に、保護カバー(55b、55c)が露呈するように配設される。より具体的には、空燃比センサ55は、保護カバー(55b、55c)の底面が排ガスEXの流れと平行であり、保護カバー(55b、55c)の中心軸線は排ガスEXの流れと直交するように排気通路内に配設される。従って、排気通路を流れる排ガスEXは、図2及び図3において矢印Ar1により示したように外側の保護カバー55bの流入孔55b1を通って外側の保護カバー55bと内側の保護カバー55cとの間に流入し、矢印Ar2に示したように内側の保護カバー55cの流入孔55c1を通って内側の保護カバー55cの内部に流入した後に、空燃比検出素子55aに到達する。その後、その排ガスは、矢印Ar3に示したように内側の保護カバー55cの流出孔55c2及び外側の保護カバー55bの流出孔55b2を通って排気通路に流出する。
即ち、外側の保護カバー55bの流入孔55b1に到達した排気通路内の排ガスEXは、外側の保護カバー55bの流出孔55b2近傍を流れる排気通路内の排ガスEXの流れにより、保護カバー(55b、55c)内へと吸い込まれる。
このため、保護カバー(55b、55c)内における排ガスの流速は、外側の保護カバー55bの流出孔55b2近傍を流れる排気通路内の排ガスEXの流速(従って、単位時間あたりの吸入空気量である吸入空気流量Ga)に応じて変化する。換言すると、「ある空燃比の排ガス(第1排ガス)が流入孔55b1に到達した時点」から「その第1排ガスが空燃比検出素子55aに到達する時点」までの時間は、吸入空気流量Gaに依存するが機関回転速度NEには依存しない。このことは、内側の保護カバーのみを有する空燃比センサ55にも成立する。
図9は、特定気筒リッチずれインバランス状態が発生した場合における排ガスの空燃比の時間的変化を模式的に示した図である。図9において、線L1は外側の保護カバー55bの流入孔55b1に到達した排ガスの空燃比を示す。線L2、線L3及び線L4は、空燃比検出素子55aに到達している排ガスの空燃比を示す。但し、線L2は吸入空気流量Gaが比較的大きい場合、線L3は吸入空気流量Gaが中程度の大きさの場合、線L4は吸入空気流量Gaが比較的小さい場合に対応している。
線L1に示したように、リッチずれを起こしている特定気筒の排ガスが時刻t1にて流入孔55b1に到達すると、そのガスは流入孔(55b1、55c1)を通過し、時刻t1よりも僅かに遅れた時点(時刻t2)にて空燃比検出素子55aに到達し始める。このとき、前述したように、保護カバー(55b、55c)の内部を流れる排ガスの流速は、排気通路を流れる排ガスの流速により決定される。
従って、空燃比検出素子55aに接触するガスの空燃比は、吸入空気流量Gaが大きい場合ほど時刻t1により近い時点から変化し始める。更に、空燃比検出素子55aに接触する排ガスの空燃比は、「空燃比検出素子55aに新たに到達した排ガス」と「空燃比検出素子55aの近傍に既に存在していた排ガス」とが混合された排ガスの空燃比となる。従って、空燃比検出素子55aに接触(到達)する排ガスの空燃比の変化率(空燃比の時間微分値である変化速度、即ち、図9における線L2〜L4の傾きの大きさ)は吸入空気流量Gaが大きいほど大きくなる。
その後、リッチずれを起こしていない正常気筒の排ガスが時刻t3にて流入孔55b1に到達すると、そのガスは時刻t3よりも僅かに遅れた時点(時刻t4近傍)にて空燃比検出素子55aに到達し始める。「このリッチずれを起こしていない正常気筒からの排ガス」の「保護カバー(55b、55c)内における流速」も、排気通路を流れる排ガスEXの流速(従って、吸入空気流量Ga)により決定される。従って、空燃比検出素子55aに接触(到達)する排ガスの空燃比は、吸入空気流量Gaが大きいほど迅速に増大する。
なお、線L3及び線L4により示したように、吸入空気流量Gaが相対的に小さい場合、空燃比検出素子55aに接触する排ガスの空燃比が「リッチずれを起こしている特定気筒の排ガスの空燃比Ari」に一致する時点よりも前の時点にて、「排気順がその特定気筒の次の気筒であって、リッチずれを起こしていない気筒」の排ガスが空燃比検出素子55aに到達する。従って、空燃比検出素子55aに接触する排ガスの空燃比は、特定気筒の排ガスの空燃比Ariに一致する前にリーン側へと変化し始める。
一方、空燃比センサ55の出力値Vabyfs(実際には空燃比検出素子55aの出力値Vabyfs)は、空燃比検出素子55aに到達したガスの変化に僅かに遅れながら追従するように変化する。従って、図10に示したように、空燃比検出素子55aに到達している排ガスの空燃比が一点鎖線L3に示したように変化すると、空燃比センサ55の出力値Vabyfsは実線S1に示したように変化する。
図11は、特定気筒リッチずれインバランス状態が発生した場合であって、吸入空気流量Gaは一定であり且つ機関回転速度NEが変化したときの空燃比センサ55の出力値Vabyfsについて説明するための図である。
図11の(A)は、機関回転速度NEが所定値NE1であり吸入空気流量Gaが所定値Ga1である場合における、「外側の保護カバーの流入孔55b1に到達した排ガスの空燃比(線L1)」、「空燃比検出素子55aに到達しているガスの空燃比(線L3)」及び「空燃比センサ55の出力値Vabyfs(線S1)」を示す。
図11の(B)は、機関回転速度NEが所定値NE1の2倍(2・NE1)であり吸入空気流量Gaが所定値Ga1である場合における、「外側の保護カバーの流入孔55b1に到達した排ガスの空燃比(線L5)」、「空燃比検出素子55aに到達しているガスの空燃比(線L6)」及び「空燃比センサ55の出力値Vabyfs(線S2)」を示す。
前述したように、保護カバー(55b、55c)内を流れる排ガスの流速は吸入空気流量Gaにより決定される。従って、機関回転速度NEが変化しても、吸入空気流量Gaが変化しなければ、空燃比センサ55の出力値Vabyfsの変化率は変化せず、そのため、検出空燃比変化率ΔAF(傾き)は変化しない。更に、「リッチずれを起こしている特定気筒の排ガスが流入孔55b1に到達した時点(時刻t1)から、そのガスが空燃比検出素子55aに到達し始める時点(時刻t2)、までの時間」は、吸入空気流量Gaが変化しなければ、機関回転速度NEが変化しても一定時間Tdである。加えて、「リッチずれを起こしていない気筒の排ガスが流入孔55b1に到達した時点(時刻t3)から、そのガスが空燃比検出素子55aに到達し始める時点(時刻t4)、までの時間」は、吸入空気流量Gaが変化しなければ、同様に一定時間Tdである。この結果、空燃比センサ55の出力値Vabyfsは、図11の(A)及び(B)に示したように変化する。
図11の(A)及び(B)から理解されるように、空燃比センサ55の出力値Vabyfsの変化幅(W)は、機関回転速度NEが大きくなるほど小さくなる。即ち、空燃比センサ55の出力値Vabyfsの軌跡長は機関回転速度NEに応じて大きく変化する。従って、上述したように、空燃比センサ55の出力値Vabyfsの軌跡長に基づいて空燃比気筒間インバランス判定を行う場合、軌跡長と比較する参照値を機関回転速度NEに応じて精度良く決定しなければならない。
これに対し、検出空燃比変化率ΔAFは機関回転速度NEの影響を殆ど受けないので、検出空燃比変化率ΔAFに応じて変化する値(空燃比変化率指示量)も機関回転速度NEの影響を殆ど受けない。従って、空燃比変化率指示量を利用してインバランス判定を実行すれば(例えば、空燃比変化率指示量の絶対値と所定のインバランス判定用閾値との大小比較によりインバランス判定を実行すれば)、機関回転速度NEに関わらず「より精度の良い空燃比気筒間インバランス判定」を実行することができる。
(空燃比センサの出力特性)
更に、第1判定装置(及び後述する他の判定装置)は、空燃比センサ55の出力特性を評価する。そこで、以下、空燃比センサ55の出力特性について図12の(A)及び(B)を参照しながら説明する。なお、図12の(A)及び(B)は、何れも「空燃比気筒間インバランス状態が発生した場合(インバランス気筒の空燃比が正常気筒の空燃比からある程度乖離した場合)」における「空燃比センサ55の出力値Vabyfsに基づいて得られる検出空燃比abyfsのクランク角に対する変化の様子」を示した図である。
(1)空燃比センサ55の出力ゲイン(出力値Vabyfs)が減少する出力特性変化
図12の(A)の実線C1は「基準空燃比センサ」の出力値Vabyfsにより表される検出空燃比abyfsを示している。図12の(A)の破線C2は「出力値Vabyfsが低下した(ゲインが減少した)空燃比センサ55」の出力値Vabyfsにより表される検出空燃比abyfsを示している。
図12の(A)に示したように、空燃比センサ55の出力値Vabyfsのゲインが低下すると、その出力値Vabyfsは「出力値Vabyfsと理論空燃比に相当する値V0(Vstoich)との差の大きさが小さくなる」ように変化する。
この結果、空燃比センサ55の出力値Vabyfsのゲインが低下すると、検出空燃比変化率ΔAFが負となる場合における検出空燃比変化率ΔAFの絶対値(検出空燃比abyfsの傾きの大きさ)は、図12の(A)に矢印A1により示したように低下する。同様に、空燃比センサ55の出力値Vabyfsのゲインが低下すると、検出空燃比変化率ΔAFが正となる場合における検出空燃比変化率ΔAFの絶対値(検出空燃比abyfsの傾きの大きさ)は、図12の(A)に矢印A2により示したように低下する。更に、検出空燃比abyfsの最大値(極大値)は図12の(A)に矢印A3により示したように減少し、検出空燃比abyfsの最小値(極小値)は図12の(A)に矢印A4により示したように増大する。
従って、
・検出空燃比変化率ΔAFの絶対値に応じた値(インバランス判定用パラメータの一つ)と所定のインバランス判定用閾値との大小比較により、或いは、
・検出空燃比abyfsの二階微分値の絶対値に応じた値(インバランス判定用パラメータの一つ)と所定値のインバランス判定用閾値との大小比較により、或いは、
・検出空燃比abyfsの最大値又は最小値(インバランス判定用パラメータの一つ)と所定のインバランス判定用閾値との大小比較等により、或いは、
・検出空燃比abyfsの軌跡長(インバランス判定用パラメータの一つ)と所定のインバランス判定用閾値との大小比較等により、
空燃比気筒間インバランス状態が発生したか否かを判定する装置において、空燃比センサ55の出力特性が「出力ゲインが減少する」ように変化すると、精度の良いインバランス判定を行うことができない虞がある。
(2)空燃比センサ55の応答性が低下する出力特性変化
図12の(B)の実線C3は「基準空燃比センサ」の出力値Vabyfsにより表される検出空燃比abyfsを示している。図12の(B)の破線C4は「出力応答性が低下した空燃比センサ55」の出力値Vabyfsにより表される検出空燃比abyfsを示している。
このように、空燃比センサ55の応答性が低下すると、検出空燃比変化率ΔAFが負となる場合における検出空燃比変化率ΔAFの絶対値(検出空燃比abyfsの傾きの大きさ)は、図12の(B)に矢印A5により示したように低下する。同様に、検出空燃比変化率ΔAFが正となる場合における検出空燃比変化率ΔAFの絶対値(検出空燃比abyfsの傾きの大きさ)は、図12の(B)に矢印A6により示したように低下する。更に、検出空燃比abyfsの最大値(極大値)は図12の(B)に矢印A7により示したように減少し、検出空燃比abyfsの最小値(極小値)は図12の(B)に矢印A8により示したように増大する。
従って、上述したようなインバランス判定用パラメータとインバランス判定用閾値との大小比較により、空燃比気筒間インバランス状態が発生したか否かを判定する装置において、空燃比センサ55の出力特性が「応答性が低下する」ように変化すると、精度の良いインバランス判定を行うことができない虞がある。
更に、空燃比センサ55の応答性が低下すると、検出空燃比abyfsの最大値が発生するクランク角が図12の(B)に矢印A9により示したように遅れる。同様に、空燃比センサ55の応答性が低下すると、検出空燃比abyfsの最小値が発生するクランク角が図12の(B)に矢印A10により示したように遅れる。従って、判定装置が、検出空燃比abyfsの最大値及び/又は最小値の発生クランク角(発生時点)に基づいてインバランス気筒を特定するように構成されている場合、インバランス気筒を精度良く特定できない虞もある。
(空燃比センサ適正判定の概要)
そこで、第1判定装置は、以下に述べる方法によって、空燃比センサ55の出力特性がインバランス判定を行うことに対して適切であるか否かの判定(空燃比センサ適正判定、センサ適正判定)を実行するようになっている。
具体的に述べると、第1判定装置は、先ず、空燃比気筒間インバランス状態を強制的に発生させる。即ち、第1判定装置は、図13の(A)に示したように、特定気筒(例えば、第1気筒)に噴射される燃料量を増量することにより、「特定気筒に供給される混合気の空燃比(特定気筒の空燃比、強制インバランス気筒の空燃比)」を「他の気筒(第2〜第4気筒)に供給される混合気の空燃比(非強制インバランス気筒の空燃比)」よりもリッチ側の空燃比に強制的に設定する。他の気筒の空燃比は理論空燃比に設定される。このような状態を、以下、「強制インバランス状態」という。
なお、図13の(B)に示したように、第1判定装置は、強制インバランス気筒に対する燃料噴射量をY%(例えば、45%)だけ増量することにより強制インバランス気筒の空燃比を理論空燃比よりも所定空燃比だけリッチ側に偏移させ、非強制インバランス気筒のそれぞれに対する燃料噴射量を(Y/3)%だけ減量することにより非強制インバランス気筒の空燃比を理論空燃比よりもリーン側に設定してもよい。これにより、機関の全体に供給される混合気の空燃比の平均を理論空燃比に維持できるので、エミッションの悪化を回避することができる。
次に、第1判定装置は、強制インバランス状態において、検出空燃比変化率ΔAFを取得する。より具体的には、一定サンプリング時間tsの経過毎に空燃比センサ55の出力値Vabyfsを取得し、その出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより検出空燃比abyfsを取得する。そして、「現時点において取得した検出空燃比abyfs(今回の検出空燃比abyfs(n))」から「一定サンプリング時間tsの経過前に取得しておいた検出空燃比abyfs(前回の検出空燃比abyfs(n−1))」を減じることにより「現時点における検出空燃比変化率ΔAF(今回の検出空燃比変化率ΔAF(n))」を取得する。
次に、第1判定装置は、空燃比センサ55の出力特性を表す「空燃比センサ評価用パラメータ(評価用パラメータ)」を取得する。より具体的には、第1判定装置は、「一定サンプリング時間tsよりも長い評価データ収集期間において得られた複数の検出空燃比変化率ΔAFのそれぞれの絶対値|ΔAF|の平均値」を評価用パラメータとして算出する。評価データ収集期間は、単位燃焼サイクル期間の自然数倍の期間であることが望ましい。
その後、第1判定装置は、予めROMに格納されている基準パラメータをROMから読み出す。基準パラメータは、上記基準空燃比センサを空燃比センサ55に代えて取り付けるとともに上記強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる上記評価用パラメータに対応するパラメータである。即ち、基準パラメータは、上記強制インバランス状態において、空燃比センサ55の出力特性が基準空燃比センサの出力特性と一致している場合における「一定サンプリング時間tsよりも長い評価データ収集期間において得られた複数の検出空燃比変化率ΔAFのそれぞれの絶対値|ΔAF|の平均値」である。
そして、第1判定装置は、取得した評価用パラメータと読み出した基準パラメータとを比較し、それらの差の絶対値が所定の閾値未満である場合に空燃比センサ55は「インバランス判定を行うことに対して適切である」と判定し、それらの差の絶対値が所定の閾値以上である場合に空燃比センサ55は「インバランス判定を行うことに対して適切でない(空燃比センサ55は不適切である)」と判定する。
第1判定装置は、空燃比センサ55が「インバランス判定を行うことに対して適切である」と判定した場合、上述した空燃比変化率指示量に基づく空燃比気筒間インバランス判定を実行する。これに対し、第1判定装置は、空燃比センサ55が「インバランス判定を行うことに対して適切でない」と判定した場合、上述した空燃比変化率指示量に基づく空燃比気筒間インバランス判定の実行を禁止する。空燃比気筒間インバランス判定の実行を禁止することには、空燃比気筒間インバランス判定を実行しても、その判定結果を無効とすることを含む。以上が、第1判定装置の作動の概要である。
(作動)
次に、第1判定装置の実際の作動について説明する。
<燃料噴射量制御>
電気制御装置60のCPUは、図14に示した「燃料噴射量Fiの計算及び燃料噴射の指示を行うルーチン」を、所定の気筒のクランク角が吸気上死点前の所定クランク角度(例えば、BTDC90°CA)となる毎に、その気筒(以下、「燃料噴射気筒」とも称呼する。)に対して繰り返し実行するようになっている。
従って、所定のタイミングになると、CPUはステップ1400から処理を開始し、ステップ1410に進んで強制インバランス状態フラグXENの値が「1」であるか否かを判定する。強制インバランス状態フラグXENは、その値が「1」であるとき「強制インバランス状態である。」ことを示し、その値が「0」であるとき「強制インバランス状態でない。」ことを示す。
強制インバランス状態フラグXENの値は、機関10が搭載された車両のイグニッション・キー・スイッチがオフからオンへと変更されたときに実行されるイニシャルルーチンにおいて「0」に設定される。更に、強制インバランス状態フラグXENの値は、後述するルーチンにより強制インバランス状態が発生させられたときに「1」に設定され、強制インバランス状態が終了させられたときに「0」に設定される。
いま、強制インバランス状態フラグXENの値が「1」であると仮定する。この場合、CPUはステップ1410にて「Yes」と判定してステップ1420に進み、現時点における燃料噴射気筒が第N気筒であるか否かを判定する。値「N」は、1〜4の自然数であり、第1判定装置においては、後述するルーチンにより「1」に設定される。従って、CPUはステップ1420にて、燃料噴射気筒が第1気筒であるか否かを判定する。
そして、燃料噴射気筒が第N気筒(第1気筒)であると、CPUはステップ1420にて「Yes」と判定してステップ1430に進み、燃料補正係数Kenの値を「1+α」に設定する。燃料補正係数Kenは、強制インバランス状態を発生させるための係数(燃料噴射量の補正量)である。第1判定装置において、値「α」は、後述するルーチンにより正の所定値(例えば、0.45)に設定される。その後、CPUは、以下に述べるステップ1450乃至ステップ1490の処理を順に行い、ステップ1495に進んで本ルーチンを一旦終了する。
一方、CPUがステップ1420の処理を実行する時点において、燃料噴射気筒が第N気筒(第1気筒)でなければ、CPUはステップ1420にて「No」と判定してステップ1440に進み、燃料補正係数Kenの値を「1」に設定する。その後、CPUは、以下に述べるステップ1450乃至ステップ1490の処理を順に行い、ステップ1495に進んで本ルーチンを一旦終了する。
他方、CPUがステップ1410の処理を実行する時点において、強制インバランス状態フラグXENの値が「1」でなければ、CPUはステップ1410にて「No」と判定してステップ1440に進み、燃料補正係数Kenの値を「1」に設定する。その後、CPUは、以下に述べるステップ1450乃至ステップ1490の処理を順に行い、ステップ1495に進んで本ルーチンを一旦終了する。
ステップ1450:CPUは、「エアフローメータ51により計測された吸入空気流量Ga、機関回転速度NE及びルックアップテーブルMapMc」に基いて「燃料噴射気筒に吸入される空気量」である「筒内吸入空気量Mc(k)」を取得する。筒内吸入空気量Mc(k)は、各吸気行程に対応されながらRAM内に記憶される。筒内吸入空気量Mc(k)は、周知の空気モデル(吸気通路における空気の挙動を模した「物理法則に従って構築されるモデル」)により算出されてもよい。
ステップ1460:CPUは、筒内吸入空気量Mc(k)を上流側目標空燃比abyfrで除することにより基本燃料噴射量Fbaseを求める。上流側目標空燃比abyfrは、ここでは理論空燃比stoichに設定されている。
ステップ1470:CPUは、基本燃料噴射量Fbaseを空燃比フィードバック量DFiにより補正する(空燃比フィードバック量DFiを加算する)ことにより、FB後噴射量(フィードバック補正後燃料噴射量)Ffbiを算出する。なお、空燃比フィードバック量DFiは、強制インバランス状態フラグXENの値が「1」であるとき「0」に設定される。但し、空燃比フィードバック量DFiは、強制インバランス状態フラグXENの値が「1」であるか否かに拘わらず、以下のようにして算出されてもよい。
空燃比フィードバック量DFiの算出方法は周知である。空燃比フィードバック量DFiは、機関に供給される混合気の空燃比を理論空燃比に一致させるための補正量であり、例えば、所定の空燃比フィードバック条件が成立しているとき、以下のようにして求めることができる。なお、空燃比フィードバック量DFiは、空燃比フィードバック条件が成立していないとき、「0」に設定される。
CPUは、下記(1)式に従ってフィードバック制御用出力値Vabyfcを取得する。(1)式において、Vabyfsは上流側空燃比センサ55の出力、Vafsfbは下流側空燃比センサ56の出力Voxsに基いて算出されるサブフィードバック量である。サブフィードバック量Vafsfb算出方法については、後述する。
Vabyfc=Vabyfs+Vafsfb …(1)
CPUは、下記(2)式に示したように、上記フィードバック制御用出力値Vabyfcを図7に示した空燃比変換テーブルMapabyfsに適用することにより、フィードバック制御用空燃比abyfscを得る。
abyfsc=Mapabyfs(Vabyfc) …(2)
CPUは、下記(3)式乃至(5)式に従って、Nストローク前の時点で筒内に供給された燃料の過不足分を表す「筒内燃料供給量偏差DFc」を算出する。
筒内吸入空気量Mc(k−N)は、「現時点よりもNサイクル前の時点における筒内吸入空気量」である。
筒内燃料供給量Fc(k−N)は、「現時点よりもNサイクル前の時点において燃焼室21に実際に供給された燃料の量」である。
目標筒内燃料供給量Fcr(k−N)は、「現時点よりもNサイクル前の時点において燃焼室21に供給されるべきであった燃料の量」である。
Fc(k−N)=Mc(k−N)/abyfsc …(3)
Fcr=Mc(k−N)/abyfr …(4)
DFc=Fcr(k−N)−Fc(k−N) …(5)
CPUは、下記(6)式により、空燃比フィードバック量DFiを算出する。
Gpは予め設定された比例ゲインである。
Giは予め設定された積分ゲインである。
SDFcは「筒内燃料供給量偏差DFcの積分値」である。
DFi=Gp・DFc+Gi・SDFc …(6)
CPUは、例えば、以下のようにしてサブフィードバック量Vafsfbを算出する。
CPUは、下記(7)式に従って、「理論空燃比に対応した下流側目標値Voxsref」と「下流側空燃比センサ56の出力Voxs」との差である「出力偏差量DVoxs」を取得する。
DVoxs=Voxsref−Voxs …(7)
CPUは、下記(8)式に従って、サブフィードバック量Vafsfbを求める。
Kpは予め設定された比例ゲイン(比例定数)である。
Kiは予め設定された積分ゲイン(積分定数)である。
Kdは予め設定された微分ゲイン(微分定数)である。
SDVoxsは出力偏差量DVoxsの時間積分値である。
DDVoxsは出力偏差量DVoxsの時間微分値である。
Vafsfb=Kp・DVoxs+Ki・SDVoxs+Kd・DDVoxs …(8)
即ち、CPUは、下流側空燃比センサ56の出力Voxsを下流側目標値Voxsrefに一致させるための比例・積分・微分(PID)制御により「サブフィードバック量Vafsfb」を算出する。このサブフィードバック量Vafsfbは、上述した(1)式に示したように、フィードバック制御用出力値Vabyfcを算出するために使用される。
ステップ1480:CPUは、FB後噴射量Ffbiに燃料補正係数Kenを乗じることにより、最終燃料噴射量Fiを算出する。
ステップ1490:CPUは、最終燃料噴射量(指示噴射量)Fiの燃料が「燃料噴射気筒に対応して設けられている燃料噴射弁25」から噴射されるように、その燃料噴射弁25に指示信号を送出する。
従って、現時点において強制インバランス状態フラグXENの値が「1」であって、燃料噴射気筒が第N気筒(=第1気筒)であれば、燃料噴射量はαに応じた量だけ増量される。この結果、第N気筒は強制インバランス気筒となる。
これに対し、強制インバランス状態フラグXENの値が「1」であっても燃料噴射が第N気筒以外の気筒(第2〜第4気筒)であれば、燃料噴射量は増量も減量もされず、理論空燃比を得るために必要な燃料噴射量に設定される。従って、第N気筒以外の気筒は、非強制インバランス気筒となる。
更に、強制インバランス状態フラグXENの値が「1」でなければ、総ての気筒のそれぞれの燃料噴射量は増量も減量もされず、理論空燃比を得るために必要な燃料噴射量に設定される。
<判定許可フラグXkyokaの設定>
CPUは、判定許可フラグXkyokaの値に基づいて、後述する空燃比センサの適正判定及びインバランス判定を実行するか否かを決定するようになっている。この判定許可フラグXkyokaは、CPUが図15にフローチャートにより示した「判定許可フラグ設定ルーチン」を所定時間(4ms)が経過する毎に実行することにより設定される。なお、判定許可フラグXkyokaの値は、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
所定のタイミングになると、CPUは図15のステップ1500から処理を開始してステップ1510に進み、絶対クランク角CAが0°クランク角(=720°クランク角)であるか否かを判定する。
CPUがステップ1510の処理を行う時点において、絶対クランク角CAが0°クランク角でなければ、CPUはそのステップ1510にて「No」と判定してステップ1540に直接進む。
これに対し、CPUがステップ1510の処理を行う時点において、絶対クランク角CAが0°クランク角であると、CPUはそのステップ1510にて「Yes」と判定してステップ1520に進み、判定実行条件が成立しているか否かを判定する。
この判定実行条件は、以下の総ての条件(条件C1乃至条件C5)が成立したときに成立する。なお、判定実行条件は、条件C1及び条件C3の双方が成立したとき、成立する条件であってもよい。また、判定実行条件は、条件C3が成立しているときに成立する条件であってもよく、条件C3及び「条件C3を除く何れかの条件の一つ以上の条件」が成立する条件であってもよい。もちろん、判定実行条件は、他の条件が更に成立しているときに成立する条件であってもよい。
(条件C1)吸入空気流量Gaが、低側吸入空気流量閾値(第1閾値空気流量)Ga1thよりも大きく、且つ、高側吸入空気流量閾値(第2閾値空気流量)Ga2thよりも小さい。なお、高側吸入空気流量閾値Ga2thは低側吸入空気流量閾値Ga1thよりも大きい値である。
(条件C2)機関回転速度NEが、低側機関回転速度閾値NE1thよりも大きく、且つ、高側機関回転速度閾値NE2thよりも小さい。なお、高側機関回転速度閾値NE2thは低側機関回転速度閾値NE1thよりも大きい値である。
(条件C3)フューエルカット中でない。
(条件C4)メインフィードバック制御条件が成立していて、メインフィードバック制御中である。
(条件C5)サブフィードバック制御条件が成立していて、サブフィードバック制御中である。
CPUがステップ1520の処理を行う時点において、判定実行条件が成立していなければ、CPUはそのステップ1520にて「No」と判定し、ステップ1540に直接進む。
これに対し、CPUがステップ1520の処理を行う時点において、判定実行条件が成立していると、CPUはそのステップ1520にて「Yes」と判定してステップ1530に進み、判定許可フラグXkyokaの値を「1」に設定する。その後、CPUはステップ1540に進む。
CPUはステップ1540にて、上記判定実行条件が不成立であるか否かを判定する。そして、判定実行条件が不成立であると、CPUはそのステップ1540からステップ1550に進み、判定許可フラグXkyokaの値を「0」に設定し、ステップ1595に進んで本ルーチンを一旦終了する。これに対し、CPUがステップ1540の処理を行う時点において、判定実行条件が成立していれば、CPUはそのステップ1540からステップ1595へと直接進んで本ルーチンを一旦終了する。
このように、判定許可フラグXkyokaは、絶対クランク角が0°クランク角になった時点において判定実行条件が成立しているときに「1」に設定され、判定実行条件が不成立になった時点において「0」に設定される。
<空燃比センサの適正判定>
次に、「空燃比センサ適正判定」を実行するための処理について説明する。CPUは、所定時間(4ms=4ミリ秒=所定の一定サンプリング時間ts)が経過する毎に、図16にフローチャートにより示した「空燃比センサ適正判定ルーチン」を実行するようになっている。
従って、所定のタイミングになると、CPUはステップ1600から処理を開始し、ステップ1605に進んで「空燃比センサ55の適正判定(空燃比センサ適正判定、空燃比センサ特性評価)が未完了であるか否か」を判定する。具体的には、センサ適正判定終了フラグXSOKの値が「0」であるか否かを判定する。このセンサ適正判定終了フラグXSOKの値は、上述したイニシャルルーチンにおいて「0」に設定され、且つ、後述するステップ1670乃至ステップ1680にて空燃比センサ55の適正判定がなされたとき、「1」又は「2」に設定される。
CPUがステップ1605の処理を実行する時点において、空燃比センサ適正判定が完了していれば(即ち、センサ適正判定終了フラグXSOKの値が「0」以外の値であると)、CPUはステップ1605にて「No」と判定し、ステップ1695に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1605の処理を実行する時点において、空燃比センサ適正判定が完了していなければ(即ち、センサ適正判定終了フラグXSOKの値が「0」であると)、CPUはステップ1605にて「Yes」と判定し、ステップ1610に進んで判定実行条件が成立しているか否かを判定する。具体的には、CPUはステップ1610にて判定許可フラグXkyokaの値が「1」であるか否かを判定する。
このとき、判定許可フラグXkyokaの値が「1」であれば、CPUは以下に述べるステップ1615乃至ステップ1645の処理を順に行い、ステップ1650に進む。
ステップ1615:CPUは、強制インバランス状態(この場合、強制リッチインバランス状態)を発生させるために「特定気筒(本例においては、第1気筒)の燃料噴射量を他の気筒よりも増大させるための処理」を行う。具体的に述べると、CPUは、値「N」を「1」に設定し、強制インバランス状態フラグXENの値を「1」に設定し、値「α」を正の所定値αp(例えば、0.45)に設定する。これにより、第N気筒の燃料噴射量が他の気筒の燃料噴射量よりも値αに応じた分だけ増量される(図14のステップ1410乃至ステップ1440、ステップ1480を参照。)。
ステップ1620:CPUは、その時点の空燃比センサ55の出力値VabyfsをAD変換することにより取得する。
ステップ1625:CPUは、現時点においてRAMに格納されている検出空燃比abyfsを前回の検出空燃比abyfsold(前回の検出空燃比abyfs(n−1))としてRAMに記憶する。即ち、前回の検出空燃比abyfsoldは、現時点から4ms(サンプリング時間ts)前の時点における検出空燃比abyfsである。
ステップ1630:CPUは、ステップ1620にて取得した空燃比センサ出力Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、今回の検出空燃比abyfs(abyfs(n))を取得する。
ステップ1635:CPUは、「ステップ1630にて取得した今回の検出空燃比abyfs」から「ステップ1625にて格納した前回の検出空燃比abyfsold」を減じることにより、検出空燃比変化率ΔAF(今回の検出空燃比変化率ΔAF(n)=abyfs(n)−abyfs(n−1))を取得する。
この検出空燃比変化率ΔAFは、図17の(A)及び(B)に示したように、サンプリング時間ts(=4ms)における検出空燃比abyfsの変化量ΔAFである。更に、サンプリング時間tsが4msと短いので、検出空燃比変化率ΔAFは、実質的に検出空燃比abyfsの時間微分値d(abyfs)/dtに比例し、従って、検出空燃比abyfsが形成する波形の傾きαを表す。
ステップ1640:CPUはカウンタCsの値を「1」だけ増大する。なお、カウンタCsは上述したイニシャルルーチンにおいて「0」に設定され、且つ、判定実行条件が成立していないときにも「0」に設定される(図16のステップ1690を参照。)。
ステップ1645:CPUは、ステップ1645にて取得した検出空燃比変化率ΔAFの絶対値(|ΔAF|)を第Cs番目のデータΔAF(Cs)として格納する。例えば、現時点が「判定許可フラグXkyokaの値が「0」から「1」へと変更になった直後の時点」であるとすると、カウンタCsの値は「1」である(ステップ1690及びステップ1640を参照。)。従って、ステップ1635にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)がデータΔAF(1)として格納される。
次に、CPUはステップ1650にて空燃比センサ55の評価条件が成立しているか否かを判定する。より具体的に述べると、CPUはステップ1650にてカウンタCsの値が閾値Csth以上であるか否かを判定する。閾値Csthは、検出空燃比変化率ΔAFのデータ数が、空燃比センサ55の出力特性を判定するのに充分な数となるように定められる。なお、閾値Csthは、想定される一つの単位燃焼サイクル期間において取得される検出空燃比変化率ΔAFのデータ数以上となるように定められていることが望ましい。
このとき、空燃比センサ55の評価条件が成立していなければ(即ち、カウンタCsの値が閾値Csth未満であれば)、CPUはステップ1650にて「No」と判定し、ステップ1695に直接進んで本ルーチンを一旦終了する。
以上の処理は、センサ適正判定終了フラグXSOKの値が「0」であり、且つ、判定許可フラグXkyokaの値が「1」である状態が継続している期間、繰り返し実行される。従って、ステップ1640にてカウンタCsの値が増大され、ステップ1645にて検出空燃比変化率ΔAFの絶対値(|ΔAF|)がデータΔAF(Cs)として格納されて行く。
所定の時間が経過すると、カウンタCsの値は閾値Csthに到達する。このとき、CPUがステップ1650の処理を実行すると、CPUはそのステップ1650にて「Yes」と判定し、以下に述べるステップ1655乃至ステップ1665の処理を実行した後、ステップ1665に進む。
ステップ1655:CPUは、強制インバランス状態フラグXENの値を「0」に設定する。これにより、強制インバランス状態が終了する(図14のステップ1410及びステップ1440を参照。)。なお、このとき、CPUは値αを「0」に設定してもよい。
ステップ1660:CPUは、空燃比センサ55の出力特性が「空燃比気筒間インバランス判定を実行するのに」適正であるか否かを判定するための「空燃比センサ評価用パラメータ(データ)」を、データΔAF(m)(mは1〜Csthの自然数)に基づいて算出する。
より具体的に述べると、CPUは複数のデータΔAF(m)の総和をカウンタCs(現時点においては、閾値Csthと等しい。)により除することによって、検出空燃比変化率ΔAFの絶対値の平均値AveΔAFを評価用パラメータとして算出する。
ステップ1665:CPUは、上述した基準パラメータΔAFst(基準値)をROMから読み出す。なお、CPUは、以下のように基準パラメータΔAFstを読み出してもよい。
・CPUは、評価用パラメータAveΔAFの基礎となるデータである検出空燃比変化率ΔAFを取得した期間の「機関回転速度NE及び/又は吸入空気流量Ga」の平均値を評価用データ取得中機関状態パラメータとして求める。
・基準パラメータΔAFstを評価用データ取得中機関状態パラメータ別に予め求め、テーブル形成にてROMに格納しておく。
・CPUは、実際の評価用データ取得中機関状態パラメータに応じた基準パラメータΔAFstを前記テーブルから読み出す。
次に、CPUはステップ1670に進み、「評価用パラメータAveΔAFと基準パラメータΔAFstとの差の絶対値D」が「所定の評価用閾値Dth」よりも大きいか否かを判定する。即ち、CPUは、評価用パラメータAveΔAFと基準パラメータΔAFstとの比較を行う。
そして、CPUは、絶対値Dが閾値Dthよりも大きいとき、空燃比センサ55の出力特性が基準空燃比センサの出力特性から大きく乖離していて、空燃比センサ55(空燃比センサ55の出力特性)は「空燃比気筒間インバランス判定にとって適正ではない」と判定する。
この場合、CPUはステップ1670にて「Yes」と判定してステップ1675に進み、センサ適正判定終了フラグXSOKの値を「2」に設定する。換言すると、センサ適正判定終了フラグXSOKの値が「2」であることは、空燃比センサ55がインバランス判定に不適切なセンサであると判定されたことを示す。その後、CPUはステップ1695に進んで本ルーチンを一旦終了する。
一方、CPUがステップ1670の処理を実行する時点において、絶対値Dが閾値Dth以下であるならば、CPUは、空燃比センサ55の出力特性は基準空燃比センサの出力特性に実質的に等しく、よって、「空燃比センサ55は空燃比気筒間インバランス判定にとって適正である」と判定する。この場合、CPUはステップ1670にて「No」と判定してステップ1680に進み、センサ適正判定終了フラグXSOKの値を「1」に設定する。換言すると、センサ適正判定終了フラグXSOKの値が「1」であることは、「空燃比センサ55がインバランス判定に適切なセンサである。」と判定されたことを示す。その後、CPUはステップ1695に進んで本ルーチンを一旦終了する。
ところで、CPUがステップ1610の処理を実行する時点において、判定許可フラグXkyokaの値が「0」であると、CPUはそのステップ1610にて「No」と判定し、以下に述べるステップ1685、ステップ1690及びステップ1692の処理を順に行い、ステップ1695に直接進んで本ルーチンを一旦終了する。
ステップ1685:CPUは、強制インバランス状態フラグXENの値を「0」に設定する。なお、このとき、CPUは値αを「0」に設定してもよい。
ステップ1690:CPUは、カウンタCsの値を「0」に設定する(クリアする)。
ステップ1692:CPUは、それまでに得られているデータΔAF(m)(mは1〜Csまでの自然数)を総て「0」に設定する(クリアする)。
<空燃比気筒間インバランス判定>
次に、「空燃比気筒間インバランス判定」を実行するための処理について説明する。CPUは、4ms(4ミリ秒=所定の一定サンプリング時間ts)が経過する毎に、図18にフローチャートにより示した「空燃比気筒間インバランス判定ルーチン」を実行するようになっている。以下、場合分けしながら説明を続ける。
(場合1:センサ適正判定終了フラグXSOK及び判定許可フラグXkyokaの双方が「1」である場合)
所定のタイミングになると、CPUはステップ1800から処理を開始してステップ1802に進み、センサ適正判定終了フラグXSOKの値が「1」であるか否かを判定する。上記仮定によれば、CPUはステップ1802にて「Yes」と判定してステップ1804に進み、判定許可フラグXkyokaの値が「1」であるか否かを判定する。上記仮定によれば、CPUはステップ1804にて「Yes」と判定し、以下に述べるステップ1806乃至ステップ1816の処理を順に行ってステップ1822に進む。
ステップ1806:CPUは、その時点の空燃比センサの出力値VabyfsをAD変換することにより取得する。
ステップ1808:CPUは、その時点の検出空燃比abyfs(上流側空燃比abyfs)を前回の検出空燃比abyfsoldとして記憶する。即ち、前回の検出空燃比abyfsoldは、現時点から4ms(サンプリング時間ts)前の時点における検出空燃比abyfsである。
ステップ1810:CPUは、空燃比センサ55の出力値Vabyfsを空燃比変換テーブルMapabyfsに適用することにより、今回の検出空燃比abyfsを取得する。
ステップ1812:CPUはカウンタCpの値を「1」だけ増大する。カウンタCpの値は、後述するステップ1816にて「積算値SΔAFに加算された検出空燃比変化率ΔAFの絶対値|ΔAF|」のデータ数(個数)を表す。なお、カウンタCpは上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
ステップ1814:CPUは、今回の検出空燃比abyfsから前回の検出空燃比abyfsoldを減じることによって検出空燃比変化率ΔAFを求める。
ステップ1816:CPUは、この時点における検出空燃比変化率ΔAFの積算値SΔAFに、ステップ1814にて取得した検出空燃比変化率ΔAFの絶対値(|ΔAF|)を加えることにより、積算値SΔAFを更新する。積算値SΔAFに「検出空燃比変化率ΔAFの絶対値|ΔAF|」を積算する理由は、図8の(B)及び(C)からも理解されるように、空燃比気筒間インバランス状態が発生しているとき、検出空燃比変化率ΔAFが正の値にも負の値にもなるからである。なお、積算値SΔAFも、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
次に、CPUはステップ1822に進み、基準気筒(本例では第1気筒)の圧縮上死点を基準としたクランク角CA(絶対クランク角CA)が720°クランク角になっているか否かを判定する。このとき、絶対クランク角CAが720°クランク角未満であると、CPUはステップ1822にて「No」と判定してステップ1895に直接進み、本ルーチンを一旦終了する。
なお、ステップ1822は、検出空燃比変化率ΔAFの絶対値|ΔAF|の平均値を求めるための最小単位の期間(単位燃焼サイクル期間)を定めるステップであり、ここでは720°クランク角がその最小期間に相当する。720°クランク角は、一つの空燃比センサ55に到達する排ガスを排出している総ての気筒(本例における第1〜第4気筒)において各一回の燃焼行程が終了するのに要するクランク角である。もちろん、この最小期間は720°クランク角よりも短くてもよいが、サンプリング時間tsの複数倍の長さ以上の期間であることが望ましい。即ち、最小単位の期間内に複数個の検出空燃比変化率ΔAFが取得されるように、その最小単位の期間が定められていることが望ましい。
一方、CPUがステップ1822の処理を行う時点において、絶対クランク角CAが720°クランク角になっていると、CPUはそのステップ1822にて「Yes」と判定し、以下に述べるステップ1824乃至ステップ1830の処理を順に行い、ステップ1832に進む。
ステップ1824:CPUは、積算値SΔAFをカウンタCpの値により除することにより、検出空燃比変化率ΔAFの絶対値|ΔAF|の平均値(第1平均値)Ave1を算出する。
ステップ1826:CPUは、積算値SΔAFを「0」に設定(クリア)し、カウンタCpの値を「0」に設定(クリア)する。
ステップ1828:CPUは、第1平均値Ave1の積算値SAve1を更新する。より具体的には、CPUはその時点の「第1平均値Ave1の積算値SAve1」に、ステップ1824にて新たに取得された今回の第1平均値Ave1を加えることにより、今回の「第1平均値Ave1の積算値SAve1」を算出する。
ステップ1830:CPUは、カウンタCnの値を「1」だけ増大する。カウンタCnの値は「第1平均値Ave1の積算値SAve1」に加算された第1平均値Ave1のデータ数(個数)を表す。なお、カウンタCnは上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
次に、CPUはステップ1832に進み、カウンタCnの値が閾値Cnth以上であるか否かを判定する。このとき、カウンタCnの値が閾値Cnth未満であると、CPUはそのステップ1832にて「No」と判定し、ステップ1895に直接進んで本ルーチンを一旦終了する。なお、閾値Cnthは自然数であり、2以上であることが望ましい。
一方、CPUがステップ1832の処理を行う時点において、カウンタCnの値が閾値Cnth以上であると、CPUはそのステップ1832にて「Yes」と判定してステップ1834に進み、「第1平均値Ave1の積算値SAve1」をカウンタCnの値(=Cnth)によって除することにより、第1平均値Ave1の平均値(最終平均値)Avefを算出する。この最終平均値Avefは、検出空燃比変化率ΔAFに応じた値(ΔAFに応じて変化する値、ΔAFの大きさが大きくなるほど大きくなる値)であって、「インバランス判定用パラメータ」としての空燃比変化率指示量である。
次いで、CPUはステップ1836に進み、最終平均値Avef(空燃比変化率指示量)の絶対値|Avef|がインバランス判定用閾値ΔAF1thよりも大きいか否かを判定する。このインバランス判定用閾値ΔAF1thは、吸入空気流量Gaが大きいほど大きくなるように設定されることが望ましい。また、最終平均値Avefは正の値であるから、CPUはステップ1836にて最終平均値Avefがインバランス判定用閾値ΔAF1thよりも大きいか否かを判定するように構成されていてもよい。
このとき、最終平均値Avefの絶対値がインバランス判定用閾値ΔAF1thよりも大きいと、CPUはステップ1836にて「Yes」と判定してステップ1838に進み、インバランス発生フラグXINBの値を「1」に設定する。即ち、CPUは空燃比気筒間インバランス状態が発生していると判定する。更に、このとき、CPUは図示しない警告ランプを点灯してもよい。なお、インバランス発生フラグXINBの値はバックアップRAMに格納される。その後、CPUはステップ1842に進む。
これに対し、CPUがステップ1836の処理を行う時点において、最終平均値Avefの絶対値がインバランス判定用閾値ΔAF1th以下であると、CPUはステップ1836にて「No」と判定してステップ1840に進み、インバランス発生フラグXINBの値を「2」に設定する。即ち、「空燃比気筒間インバランス判定の結果、空燃比気筒間インバランス状態が発生していないと判定された旨」を記憶する。その後、CPUはステップ1842に進む。なお、ステップ1840は省略されてもよい。
CPUは、ステップ1842にて「第1平均値Ave1の積算値SAve1」を「0」に設定(クリア)するとともに、カウンタCnの値を「0」に設定(クリア)する。その後、CPUはステップ1895に進んで本ルーチンを一旦終了する。以上により、センサ適正判定終了フラグXSOKの値が「1」であるときに限り、空燃比気筒間インバランス判定が実行される。
(場合2:センサ適正判定終了フラグXSOK及び判定許可フラグXkyokaのうちの少なくとも一方が「1」以外の値である場合)
この場合、CPUはステップ1802又はステップ1804にて「No」と判定してステップ1818に進み、検出空燃比変化率ΔAFの積算値SΔAFの値を「0」に設定(クリア)する。次いで、CPUはステップ1820に進んでカウンタCpの値を「0」に設定し、その後、ステップ1895に直接進んで本ルーチンを一旦終了する。即ち、センサ適正判定終了フラグXSOKの値が「0」であって空燃比センサ適正判定が完了していない場合、及び、センサ適正判定終了フラグXSOKの値が「2」であって空燃比センサ適正判定の結果「空燃比センサが不適切」であると判定された場合、空燃比気筒間インバランス判定は実行されない(禁止される)。
以上、説明したように、第1判定装置は、3以上の複数の気筒を有する多気筒内燃機関10に適用される。
第1判定装置は、前記少なくとも3以上の気筒のうちの一つの気筒に供給される混合気の空燃比と同少なくとも3以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比との差が大きいほど大きくなるインバランス判定用パラメータ(最終平均値Avef)を、少なくとも空燃比センサ55の出力値Vabyfsに基づいて求める(図18のステップ1802乃至1834を参照。)。
更に、第1判定装置は、取得したインバランス判定用パラメータ(最終平均値Avef)が所定のインバランス判定用閾値(ΔAF1th)以上であるか否かの比較結果に基づいて「空燃比気筒間インバランス状態が発生しているか否かのインバランス判定」を実行するインバランス判定手段を備える(図18のステップ1836乃至1840を参照。)。
加えて、第1判定装置は、
前記インバランス判定を実行する前に(図16のステップ1605、図18のステップ1802を参照。)、「前記少なくとも3以上の気筒のうちの一つの気筒に供給される混合気の空燃比」が「その少なくとも3以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比」から乖離した「強制インバランス状態(本例においては、強制リッチインバランス状態)」が強制的に発生するように、複数の燃料噴射弁25から噴射される燃料の量を変更する強制インバランス状態生成手段(図16のステップ1615、図14のステップ1410乃至1440、図14のステップ1480を参照。)と、
前記強制インバランス状態が発生させられている状態における空燃比センサ55の出力値Vabyfsに基づいて「前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータ(AveΔAF)」を取得する評価用パラメータ取得手段(図16のステップ1620乃至1660を参照。)と、
前記取得された空燃比センサ評価用パラメータ(AveΔAF)と予め定められた基準パラメータ(ΔAFst)とを比較することにより「前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切であるか否か」の判定(センサ適正判定)を実行する空燃比センサ評価手段(図16のステップ1665乃至ステップ1680を参照。)と、
前記空燃比センサ評価手段によって前記空燃比センサの出力特性が前記インバランス判定を実行することに対して適切でないと判定された場合(図16のステップ1670における「Yes」との判定を参照。)、前記インバランス判定の実行を禁止するインバランス判定実行可否決定手段(図16のステップ1675にてセンサ適正判定終了フラグXSOKの値が「2」に設定されたとき、図18のステップ1802にて「No」と判定されるようになる点を参照。)を備える。
なお、第1判定装置は、図16のステップ1675にてセンサ適正判定終了フラグXSOKの値が「2」に設定されたとき、図18のステップ1806乃至ステップ1816と、ステップ1822乃至ステップ1836と、の処理を実行するが、ステップ1836の判定結果に拘わらずインバランス発生フラグXINBの値を「0」に維持することにより、前記インバランス判定の結果を無効とするように構成されていてもよい。
これによれば、本来の空燃比気筒間インバランスが発生した状態と類似する強制インバランス状態が強制的に発生させられ、その強制インバランス状態において空燃比センサ55の出力特性を表す空燃比センサ評価用パラメータ(AveΔAF)が取得されるとともに、その空燃比センサ評価用パラメータ(AveΔAF)と基準パラメータ(ΔAFst)とが近しいか否かに基づいて空燃比センサ適正判定がなされる。
従って、空燃比センサ55の出力特性が「空燃比気筒間インバランス判定」にとって不適切であるか否かが精度良く判定される。更に、空燃比センサ55の出力特性が空燃比気筒間インバランス判定に不適切であると判定された場合、空燃比気筒間インバランス判定が事実上実行されない。その結果、空燃比センサ55の出力特性の変化等に起因して、空燃比気筒間インバランス判定を誤る可能性を低減することができる。
なお、第1判定装置において、図16のステップ1615にて設定されるαの値は、負の値αmであってもよい。これにより、強制リーンインバランス状態が発生させられる。
<第2実施形態>
次に、本発明の第2実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第2判定装置」と称呼する。)について説明する。
第2判定装置は、空燃比センサ55の評価用パラメータを取得する際、「強制リッチインバランス状態及び強制リーンインバランス状態」の二つの空燃比気筒間インバランス状態を時間的に重複しない期間において強制的に発生させる。強制リッチインバランス状態は、強制インバランス気筒の空燃比が理論空燃比よりもリッチ側の空燃比である状態である。強制リーンインバランス状態は、強制インバランス気筒の空燃比が理論空燃比よりもリーン側の空燃比である状態である。
更に、第2判定装置は、強制リッチインバランス状態において取得される複数の検出空燃比変化率ΔAFの絶対値の平均値をリッチ側評価用パラメータとして取得する。同様に、第2判定装置は、強制リーンインバランス状態において取得される複数の検出空燃比変化率ΔAFの絶対値の平均値をリーン側評価用パラメータとして取得する。
そして、第2判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値DRthより大きく、且つ、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値DLthより大きいとき、空燃比センサ55(空燃比センサ55の出力特性)がインバランス判定にとって適正ではないと判定する。
なお、第2判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値DRthより大きいか、又は、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値DLthより大きいとき、空燃比センサ55(空燃比センサ55の出力特性)がインバランス判定にとって適正ではないと判定するように構成されていてもよい。その他の点において、第2判定装置は第1判定装置と同様である。従って、以下、この相違点を中心として説明する。なお、以下の説明において、既に説明したステップと同じ処理を行うステップのうちの幾つかにはそのステップと同じ符合を付している。これらのステップについての詳細説明は適宜省略される。
(作動)
第2判定装置のCPUは、第1判定装置のCPUが実行するルーチンのうち図16を除くルーチンを実行するとともに、図16に代わる図19及び図20に示した「空燃比センサ適正判定ルーチン」を所定時間(4ms)が経過する毎に実行するようになっている。
従って、所定のタイミングになると、CPUは図19のステップ1900から処理を開始し、ステップ1605にてセンサ適正判定終了フラグXSOKの値が「0」であるか否かを判定する。このとき、センサ適正判定終了フラグXSOKの値が「0」以外の値であると、CPUはステップ1605にて「No」と判定し、ステップ1995に直接進んで本ルーチンを直ちに終了する。
これに対し、CPUがステップ1605の処理を実行する時点において、センサ適正判定終了フラグXSOKの値が「0」であると、CPUはステップ1605にて「Yes」と判定し、ステップ1610に進んで判定許可フラグXkyokaの値が「1」であるか否かを判定する。
このとき、判定許可フラグXkyokaの値が「1」であれば、CPUはステップ1610にて「Yes」と判定してステップ1910に進み、強制リッチインバランスデータの取得が完了する前であるか否かを判定する。具体的には、CPUはステップ1910にて強制リッチインバランスデータ取得完了フラグXR(以下、「リッチデータ取得完了フラグXR」とも称呼する。)の値が「0」であるか否かを判定する。リッチデータ取得完了フラグXRの値は、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
このとき、強制リッチインバランスデータの取得完了前であり、リッチデータ取得完了フラグXRの値が「0」である(「1」でない)と、CPUはステップ1910にて「Yes」と判定し、ステップ1915乃至ステップ1935の処理を順に行う。
ステップ1915乃至ステップ1935は、図16のステップ1615乃至ステップ1635とそれぞれ同じ処理を行うステップである。従って、値「N」に「1」が設定され、強制インバランス状態フラグXENの値が「1」に設定され、値「α」に正の値「αp」が設定される。更に、検出空燃比変化率ΔAFが取得される。なお、値「N」は「2〜4」のうちの何れかに設定されてもよい。
次に、CPUはステップ1940に進み、カウンタCRの値を「1」だけ増大する。なお、カウンタCRは上述したイニシャルルーチンにおいて「0」に設定される。
次いで、CPUはステップ1945に進み、ステップ1935にて取得した検出空燃比変化率ΔAFの絶対値(|ΔAF|)を第CR番目の強制リッチインバランス時データΔAFR(CR)として格納する。例えば、現時点が「判定許可フラグXkyokaの値が「0」から「1」へと変更になった直後の時点」であるとすると、カウンタCRの値は「1」である(後述するステップ1960及びステップ1940を参照。)。従って、ステップ1935にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)がデータΔAFR(1)として格納される。
次に、CPUはステップ1950に進み、強制リッチインバランスデータの取得が完了したか否かを判定する。具体的には、CPUは、カウンタCRの値が所定の閾値CRth以上であるか否かを判定する。閾値CRthは、強制リッチインバランス状態において取得された検出空燃比変化率ΔAFのデータ数が、空燃比センサ55の出力特性を判定するのに充分な数となるように定められる。
このとき、カウンタCRの値が所定の閾値CRth未満であると、CPUはステップ1950にて「No」と判定し、ステップ1995に直接進んで本ルーチンを一旦終了する。
以上の処理は、センサ適正判定終了フラグXSOKの値が「0」であり、且つ、判定許可フラグXkyokaの値が「1」であり、且つ、リッチデータ取得完了フラグXRの値が「0」である状態が継続している期間、繰り返し実行される。従って、ステップ1940にてカウンタCRの値が増大され、ステップ1945にて検出空燃比変化率ΔAFの絶対値(|ΔAF|)がデータΔAFR(CR)として格納されて行く。データΔAFR(CR)は空燃比センサ評価用パラメータの元データである。
このような状態において所定の時間が経過すると、カウンタCRの値は閾値CRthに到達する。このとき、CPUがステップ1950の処理を実行すると、CPUはそのステップ1950にて「Yes」と判定してステップ1955に進み、リッチデータ取得完了フラグXRの値を「1」に設定する。次いで、CPUは、図20のステップ2005に進む(図19及び図20の「A」を参照。)。なお、この時点以降、CPUがステップ1910に進んだとき、CPUはそのステップ1910にて「No」と判定し、図20のステップ2005に直接進む。
CPUは図20のステップ2005にて、強制リーンインバランス状態を発生させるために、特定気筒(本例においては、第1気筒)の燃料噴射量を他の気筒よりも減少させる処理を行う。具体的に述べると、CPUは、値「N」を「1」に設定し、強制インバランス状態フラグXENの値を「1」に設定し、値「α」を負の所定値αm(例えば、−0.3)に設定する。これにより、第N気筒の燃料噴射量が他の気筒の燃料噴射量よりも値αに応じた分だけ減量される(図14のステップ1410乃至ステップ1440を参照。)。なお、値「N」は「2〜4」のうちの何れかに設定されてもよい。
次いで、CPUはステップ2010乃至ステップ2025の処理を実行する。ステップ2010乃至ステップ2025は、図16のステップ1620乃至ステップ1635とそれぞれ同じ処理を行うステップである。従って、検出空燃比変化率ΔAFが取得される。
次に、CPUはステップ2030に進み、カウンタCLの値を「1」だけ増大する。なお、カウンタCLは上述したイニシャルルーチンにおいて「0」に設定される。
次いで、CPUはステップ2035に進み、ステップ2025にて取得した検出空燃比変化率ΔAFの絶対値(|ΔAF|)を第CL番目の強制リーンインバランス時データΔAFL(CL)として格納する。例えば、現時点が「リッチデータ取得完了フラグXRの値が「0」から「1」へと変更になった直後の時点」であるとすると、カウンタCLの値は「1」である(後述する図19のステップ1970及び図20のステップ2030を参照。)。従って、ステップ2025にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)がデータΔAFL(1)として格納される。
次に、CPUはステップ2040に進み、強制リーンインバランスデータの取得が完了したか否かを判定する。具体的には、CPUは、カウンタCLの値が所定の閾値CLth以上であるか否かを判定する。閾値CLthは、強制リーンインバランス状態において取得された検出空燃比変化率ΔAFのデータ数が、空燃比センサ55の出力特性を判定するのに充分な数となるように定められる。
このとき、カウンタCLの値が所定の閾値CLth未満であると、CPUはステップ2040にて「No」と判定し、ステップ1995に直接進んで本ルーチンを一旦終了する。
このように、ステップ2005乃至ステップ2035の処理は、センサ適正判定終了フラグXSOKの値が「0」であり、且つ、判定許可フラグXkyokaの値が「1」であり、且つ、リッチデータ取得完了フラグXRの値が「1」である状態が継続している期間、繰り返し実行される。従って、ステップ2030にてカウンタCLの値が増大され、ステップ2035にて検出空燃比変化率ΔAFの絶対値(|ΔAF|)がデータΔAFL(CL)として格納されて行く。データΔAFL(CL)は空燃比センサ評価用パラメータの元データである。
このような状態において所定の時間が経過すると、カウンタCLの値は閾値CLthに到達する。このとき、CPUがステップ2040の処理を実行すると、CPUはそのステップ2040にて「Yes」と判定してステップ2045に進み、強制インバランス状態フラグXENの値を「0」に設定する。これにより、強制インバランス状態が終了する(図14のステップ1410及びステップ1440を参照。)。なお、このとき、CPUは値αを「0」に設定してもよい。
次いで、CPUはステップ2050に進み、空燃比センサ55の出力特性が「空燃比気筒間インバランス判定を実行するのに適正であるか否か」を判定するための「空燃比センサ評価用パラメータ」を、データΔAFR(m)(mは1〜CRthの自然数)とデータΔAFL(k)(kは1〜CLthの自然数)とに基づいて算出する。
より具体的に述べると、CPUは複数のデータΔAFR(m)の総和をカウンタCR(現時点においては、閾値CRthと等しい。)により除することによって、「強制リッチインバランス状態において取得された複数の検出空燃比変化率ΔAF」の絶対値の平均値AveΔAFRをリッチ側評価用パラメータとして算出する。更に、CPUは、複数のデータΔAFL(k)の総和をカウンタCL(現時点においては、閾値CLthと等しい。)により除することによって、「強制リーンインバランス状態において取得された複数の検出空燃比変化率ΔAF」の絶対値の平均値AveΔAFLをリーン側評価用パラメータとして算出する。
次いで、CPUはステップ2055に進み、リッチ側基準パラメータΔAFRst及びリーン側基準パラメータΔAFLstをROMから読み出す。リッチ側基準パラメータΔAFRstは、上記基準空燃比センサを空燃比センサ55に代えて取り付けるとともに上記強制リッチインバランス状態(αをαpに設定して第1気筒に対する燃料噴射を行う)を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる上記評価用パラメータAveΔAFRに対応するパラメータである。リーン側基準パラメータΔAFLstは、上記基準空燃比センサを空燃比センサ55に代えて取り付けるとともに上記強制リーンンバランス状態(αをαmに設定して第1気筒に対する燃料噴射を行う)を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる上記評価用パラメータAveΔAFLに対応するパラメータである。
なお、リッチ側基準パラメータΔAFRstは、第1判定装置が使用する基準パラメータΔAFstと同様、実際の評価用パラメータ取得中(この場合、強制リッチインバランス状態期間中)の機関状態パラメータ別に設定されてもよい。同様に、リーン側基準パラメータΔAFLstは、実際の評価用パラメータ取得中(この場合、強制リーンインバランス状態期間中)の機関状態パラメータ別に設定されてもよい。
次に、CPUはステップ2060に進み、リッチ側評価用パラメータAveΔAFRとリッチ側基準パラメータΔAFRstとの差の絶対値DRが所定のリッチ側評価用閾値DRthよりも大きく、且つ、リーン側評価用パラメータAveΔAFLとリーン側基準パラメータΔAFLstとの差の絶対値DLが所定のリーン側評価用閾値DLthよりも大きいか否かを判定する。
そして、CPUは、絶対値DRが閾値DRthよりも大きく且つ絶対値DLが閾値DLthよりも大きいとき、空燃比センサ55の出力特性が基準空燃比センサの出力特性から大きく乖離していて、よって、空燃比センサ55は「空燃比気筒間インバランス判定にとって適正ではない」と判定する。
この場合、CPUはステップ2060にて「Yes」と判定してステップ2065に進み、空燃比センサ55がインバランス判定に不適切なセンサであることを示すように、センサ適正判定終了フラグXSOKの値を「2」に設定する。その後、CPUはステップ1995に進んで本ルーチンを一旦終了する。
一方、CPUがステップ2060の処理を実行する時点において、絶対値DRが閾値DRth以下であるか、及び/又は、絶対値DLが閾値DLth以下であると、CPUは、空燃比センサ55の出力特性は基準空燃比センサの出力特性に実質的に等しく、よって、「空燃比センサ55は空燃比気筒間インバランス判定にとって適正である」と判定する。この場合、CPUはステップ2060にて「No」と判定してステップ2070に進み、空燃比センサ55がインバランス判定に適切なセンサであることを示すように、センサ適正判定終了フラグXSOKの値を「1」に設定する。その後、CPUはステップ1995に進んで本ルーチンを一旦終了する。
以上、説明したように、第2判定装置は、第1判定装置と同様、強制インバランス状態を発生させる強制インバランス状態生成手段を備える。
更に、その強制インバランス状態生成手段は、
前記強制インバランス状態として、
前記一つの気筒(この場合、第1気筒)に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリッチ側の空燃比である第1空燃比(理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ken(=1+αp)倍することにより得られる空燃比)に設定する強制リッチインバランス状態(図19のステップ1915、図14のステップ1410乃至ステップ1440、ステップ1480を参照。)と、
前記一つの気筒(この場合、第1気筒)に供給される混合気の空燃比を前記他の複数の気筒に供給される混合気の空燃比よりもリーン側の空燃比である第2空燃比(理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ken(=1+αm)倍することにより得られる空燃比)に設定する強制リーンインバランス状態(図20のステップ2005、図14のステップ1410乃至ステップ1440、ステップ1480を参照。)と、
が時間的に重複することなく発生するように、前記複数の燃料噴射弁から噴射される燃料の量を変更するように構成されている。
空燃比センサ55の出力特性は、検出する空燃比がリッチ側の空燃比からリーン側の空燃比へと変化する場合と、リーン側の空燃比からリッチ側の空燃比へと変化する場合と、において互いに相違する場合がある。従って、第2判定装置のように、「一つの気筒に供給される混合気の空燃比(強制インバランス気筒である第1気筒の空燃比)を、第1空燃比と第2空燃比とに設定すれば、空燃比センサ55に到達する排ガスの空燃比の変化の様子を種々に設定できるので、空燃比センサ適正判定をより精度良く判定することができる。
更に、第2判定装置は、強制インバランス気筒の空燃比を第1の空燃比に設定している期間における空燃比センサ評価用パラメータを第1評価用パラメータ(AveΔAFR)として取得し、強制インバランス気筒の空燃比を第2空燃比に設定している期間における空燃比センサ評価用パラメータを「第1評価用パラメータ(AveΔAFR)とは区別される第2評価用パラメータ(AveΔAFL)」として取得し、第1評価用パラメータ(AveΔAFR)及び第2評価用パラメータ(AveΔAFL)を、前記基準パラメータとしての「第1の基準パラメータΔAFRst及び第2の基準パラメータΔAFLst」とそれぞれ比較し、その比較結果に基づいて空燃比センサ適正判定を行う(図20のステップ2050乃至ステップ2070等を参照。)。従って、空燃比センサ適正判定をより精度良く判定することができる。
加えて、空燃比センサ55の出力特性は、検出する空燃比が理論空燃比よりもリッチ側である場合と、理論空燃比よりもリーン側である場合と、においても互いに相違する場合がある。従って、第2判定装置は、第1空燃比を理論空燃比よりもリッチ側の空燃比に設定し、第2空燃比を理論空燃比よりもリーン側の空燃比に設定している。その結果、空燃比センサ55の適正判定を一層精度良く実行することができる。
<第3実施形態>
次に、本発明の第3実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第3判定装置」と称呼する。)について説明する。
第3判定装置は、空燃比センサ55の評価用パラメータを取得する際、第2判定装置と同様、「強制リッチインバランス状態及び強制リーンインバランス状態」の強制インバランス状態を強制的に発生させ、それぞれの状態において取得された複数の検出空燃比変化率ΔAFの絶対値の平均値を「リッチ側評価用パラメータ及びリーン側評価用パラメータ」として取得する。そして、第3判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値DRthより大きく、且つ、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値DLthより大きいとき、空燃比センサ55(空燃比センサ55の出力特性)がインバランス判定にとって適正ではないと判定する。
更に、第3判定装置は、図21に示したように、「強制リッチインバランス状態及び強制リーンインバランス状態」を時間的に交互に発生させるとともに、強制リッチインバランス状態及び強制リーンインバランス状態のそれぞれの状態の継続時間(例えば、強制インバランス気筒に対する噴射回数)を「上流側触媒43の酸素吸蔵量OSAが「0」に到達せず、且つ、最大酸素吸蔵量Cmaxに到達しないように」制限する。
換言すると、第3判定装置は、非強制インバランス気筒の空燃比(以下、「中間空燃比」とも称呼する。)を「理論空燃比又は理論空燃比よりもリーン側の空燃比」に設定するとともに、強制インバランス気筒の空燃比を「理論空燃比よりもリッチ側の空燃比」に設定し続ける第1期間(強制リッチインバランス状態の継続期間、但し、機関10の全体に供給される混合気の空燃比の平均は理論空燃比よりもリッチな期間)において、「燃焼室21から排出される排ガス中の過剰な未燃物」が「上流側触媒43の最大酸素吸蔵量Cmaxよりも少ない量の酸素により酸化され得る第1の量」を超えないように、第1期間を制限する。更に、第3判定装置は、非強制インバランス気筒の空燃比(中間空燃比)を「理論空燃比又は理論空燃比よりもリッチ側の空燃比」に設定するとともに、強制インバランス気筒の空燃比を「理論空燃比よりもリーン側の空燃比」に設定し続ける第2期間(強制リーンインバランス状態の継続期間、但し、機関10の全体に供給される混合気の空燃比の平均は理論空燃比よりもリーンな期間)において、「燃焼室21から排出される排ガス中の過剰な酸素」が「上流側触媒43の最大酸素吸蔵量Cmaxよりも少ない第2の量」を超えないように、第2期間の長さを制限する。そして、第3判定装置は、第1期間と第2期間とを交互に設定する。
なお、第3判定装置は、リッチ側評価用パラメータとリッチ側基準パラメータとの差の絶対値がリッチ側閾値DRthより大きいか、又は、リーン側評価用パラメータとリーン側基準パラメータとの差の絶対値がリーン側閾値DLthより大きいとき、空燃比センサ55(空燃比センサ55の出力特性)がインバランス判定にとって適正ではないと判定するように構成されていてもよい。その他の点において、第3判定装置は第1判定装置及び第2判定装置と同様である。従って、以下、この相違点を中心として説明する。
(作動)
第3判定装置のCPUは、第1判定装置のCPUが実行するルーチンのうち図16を除くルーチンを実行するとともに、図16に代わる図22乃至図24に示したルーチンのそれぞれを所定時間(4ms)が経過する毎に実行するようになっている。
以下、空燃比センサ55の適正判定が未完了であってセンサ適正判定終了フラグXSOKの値が「0」であり、判定実行条件が成立していて判定許可フラグXkyokaの値が「1」であると仮定して説明を行う。
所定のタイミングになると、CPUは図22のステップ2200から処理を開始し、ステップ1605にて適正判定終了フラグXSOKの値が「0」であるか否かを判定する。このとき、センサ適正判定終了フラグXSOKの値が「0」以外の値であると、CPUはステップ1605にて「No」と判定し、ステップ2295に直接進んで本ルーチンを一旦終了する。
これに対し、上記仮定によれば、センサ適正判定終了フラグXSOKの値は「0」である。よって、CPUはステップ1605にて「Yes」と判定し、ステップ1610に進んで判定許可フラグXkyokaの値が「1」であるか否かを判定する。
上記仮定によれば、判定許可フラグXkyokaの値が「1」である。よって、CPUはステップ1610にて「Yes」と判定してステップ2210に進み、現時点が「強制リッチインバランス状態を発生させるべき時点(強制リッチインバランス状態の順番)」であるか否かを判定する。具体的には、CPUは、強制リーンインバランス状態発生フラグXLTの値が「0」であるか否かを判定する。なお、強制リーンインバランス状態発生フラグXLTの値は上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
従って、現時点が機関10の始動後において初めてステップ2210に進んだ時点であると仮定すると、CPUはそのステップ2210にて「Yes」と判定してステップ1910に進み、強制リッチインバランスデータの取得が完了する前であるか否か(即ち、リッチデータ取得完了フラグXRの値が「1」であるか否か)を判定する。この場合、リッチデータ取得完了フラグXRの値は「0」である。よって、CPUはステップ1910にて「Yes」と判定してステップ2220に進み、強制リッチインバランス状態発生回数カウンタCERの値を「1」だけ増大させる。このカウンタCERの値は上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
次に、CPUは、ステップ1915乃至ステップ1945の処理を順に行う。これにより、値「N」に「1」が設定され、強制インバランス状態フラグXENの値が「1」に設定され、値「α」に正の値「αp」が設定される。更に、検出空燃比変化率ΔAFが取得され、カウンタCRの値が「1」だけ増大させられる。そして、ステップ1935にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)が、ステップ1945にて「第CR番目の強制リッチインバランス時データΔAFR(CR)」として格納される。
次に、CPUはステップ2230に進み、強制リッチインバランス状態発生回数カウンタCERの値が所定の閾値CERth以上であるか否かを判定する。閾値CERthは、強制リッチインバランス状態が継続することによって上流側触媒43に流入する過剰な未燃物の量(過剰な未燃物の積算量)が、上流側触媒43の最大酸素吸蔵量Cmaxよりも小さい量に匹敵する量の酸素によって総て酸化されることができるように、予め定められる。閾値CERthは、「1」を含む自然数である。
この時点において、強制リッチインバランス状態発生回数カウンタCERの値が所定の閾値CERth以上ではないとすると、CPUはステップ2230にて「No」と判定してステップ1950に直接進み、強制リッチインバランスデータの取得が完了したか否か(カウンタCRの値が所定の閾値CRth以上であるか否か)を判定する。閾値CRthは、閾値CERth以上の値に設定されている。
従って、閾値CRthと閾値CERthとが同じ値に設定されている場合を除き、この時点でのカウンタCRの値は閾値CRth未満である。よって、CPUはステップ1950にて「No」と判定し、ステップ2295に直接進んで本ルーチンを一旦終了する。この結果、強制リーンインバランス状態発生フラグXLTの値は「0」に維持される。更に、「リッチデータ取得完了フラグXRの値」及び「上述したイニシャルルーチンにおいて「0」に設定されるリーンデータ取得完了フラグXLの値」の双方が「0」に維持される。
一方、所定のタイミングになると、CPUは図23のステップ2300から処理を開始し、ステップ1605にて適正判定終了フラグXSOKの値が「0」であるか否かを判定する。上記仮定によれば、センサ適正判定終了フラグXSOKの値は「0」である。よって、CPUはステップ1605にて「Yes」と判定し、ステップ1610に進んで判定許可フラグXkyokaの値が「1」であるか否かを判定する。
上記仮定によれば、判定許可フラグXkyokaの値が「1」である。よって、CPUはステップ1610にて「Yes」と判定してステップ2310に進み、現時点が「強制リーンインバランス状態を発生させるべき時点(強制リーンインバランス状態の順番)」であるか否かを判定する。具体的には、CPUは、強制リーンインバランス状態発生フラグXLTの値が「1」であるか否かを判定する。
上述したように、現時点において強制リーンインバランス状態発生フラグXLTの値は「0」に維持されている。従って、CPUはステップ2310にて「No」と判定し、ステップ2395に直接進んで本ルーチンを一旦終了する。
更に、CPUは、所定のタイミングにて図24のステップ2400から処理を開始してステップ2410に進み、空燃比センサ55の評価を行うためのデータの取得が完了したか否かを判定する。より具体的に述べると、CPUはステップ2410にて、リッチデータ取得完了フラグXRの値が「1」であり、且つ、リーンデータ取得完了フラグXLの値が「1」である、か否かを判定する。
この時点においては、リッチデータ取得完了フラグXRの値及びリーンデータ取得完了フラグXLの値は、何れも「0」である。従って、CPUはステップ2410にて「No」と判定し、ステップ2495に直接進んで本ルーチンを一旦終了する。
以上の状態が継続すると、CPUは図22のステップ2220、ステップ1915乃至ステップ1945の処理を繰り返し実行する。従って、所定の時間が経過すると、カウンタCERの値は閾値CERthに到達する。この場合、CPUが図22のステップ2230に進むと、CPUはそのステップ2230にて「Yes」と判定し、ステップ2240に進んで強制リーンインバランス状態発生フラグXLTの値を「1」に設定するとともに、ステップ2250にてカウンタCERの値を「0」に設定する。
次いで、CPUはステップ1950に進む。このとき、閾値CRthと閾値CERthとが同じ値に設定されている場合を除き、カウンタCRの値は閾値CRth未満である。よって、CPUはステップ1950にて「No」と判定し、ステップ2295に直接進んで本ルーチンを一旦終了する。
この結果、所定時間の経過後にCPUが図22のステップ2210の処理を行うと、CPUはそのステップ2210にて「No」と判定し、ステップ2295に直接進む。従って、図22のステップ1915の処理は実行されない。
一方、CPUが図23のステップ2310の処理を行うと、CPUはそのステップ2310にて「Yes」と判定してステップ2320に進み、強制リーンインバランスデータの取得が完了する前であるか否かを判定する。具体的には、CPUはステップ2320にて強制リーンインバランスデータ取得完了フラグXL(リーンデータ取得完了フラグXL)の値が「0」であるか否かを判定する。リーンデータ取得完了フラグXLの値は、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
この時点は強制リーンインバランスデータの取得完了前であり、従って、リーンデータ取得完了フラグXLの値は「0」である。従って、CPUはステップ2320にて「Yes」と判定してステップ2330に進み、強制リーンインバランス状態発生回数カウンタCELの値を「1」だけ増大させる。このカウンタCELの値は上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
次に、CPUは、ステップ2005乃至ステップ2035の処理を順に行う。これにより、値「N」に「1」が設定され、強制インバランス状態フラグXENの値が「1」に設定され、値「α」に負の値「αm」が設定される。更に、ステップ2025にて検出空燃比変化率ΔAFが取得され、ステップ2030にてカウンタCLの値が「1」だけ増大させられる。そして、ステップ2025にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)が、ステップ2035にて「第CL番目の強制リッチインバランス時データΔAFL(CL)」として格納される。
次に、CPUはステップ2340に進み、強制リーンインバランス状態発生回数カウンタCELの値が所定の閾値CELth以上であるか否かを判定する。閾値CELthは、強制リーンインバランス状態が継続することによって上流側触媒43に流入する過剰な酸素の量(過剰な酸素の積算量)が、上流側触媒43の最大酸素吸蔵量Cmaxよりも小さい量に匹敵する量となるように、予め定められる。閾値CELthは、「1」を含む自然数である。
この時点において、強制リーンインバランス状態発生回数カウンタCELの値が所定の閾値CELth以上ではないとすると、CPUはステップ2340にて「No」と判定してステップ2370に直接進み、強制リーンインバランスデータの取得が完了したか否か(カウンタCLの値が所定の閾値CLth以上であるか否か)を判定する。閾値CLthは、閾値CELth以上の値に設定されている。
従って、閾値CLthと閾値CELthとが同じ値に設定されている場合を除き、この時点でのカウンタCLの値は閾値CLth未満である。よって、CPUはステップ2370にて「No」と判定し、ステップ2395に直接進んで本ルーチンを一旦終了する。この結果、強制リーンインバランス状態発生フラグXLTの値は「1」に維持される。更に、リーンデータ取得完了フラグXLの値は「0」に維持される。
このため、CPUが図24のステップ2410に進むと、CPUはそのステップ2410にて「No」と判定し、ステップ2495に直接進んで本ルーチンを一旦終了する。
以上の状態が継続すると、CPUは図23のステップ2330、ステップ2005乃至ステップ2035の処理を繰り返し実行する。従って、所定の時間が経過すると、カウンタCELの値は閾値CELthに到達する。この場合、CPUが図23のステップ2340に進むと、CPUはそのステップ2340にて「Yes」と判定し、ステップ2350に進んで強制リーンインバランス状態発生フラグXLTの値を「0」に設定するとともに、ステップ2360にてカウンタCELの値を「0」に設定する。
次いで、CPUはステップ2370に進む。このとき、閾値CLthと閾値CELthとが同じ値に設定されている場合を除き、カウンタCLの値は閾値CLth未満である。よって、CPUはステップ2370にて「No」と判定し、ステップ2395に直接進んで本ルーチンを一旦終了する。
この結果、所定時間の経過後にCPUが図23のステップ2310の処理を行うと、CPUはそのステップ2310にて「No」と判定し、ステップ2395に直接進む。従って、図23のステップ2005の処理は実行されない。
一方、CPUが図22のステップ2210の処理を行うと、CPUはそのステップ2210にて「Yes」と判定してステップ1910、ステップ2220、ステップ1915乃至ステップ1945の処理を実行するようになる。
以上のように、CPUは、強制リッチインバランス状態を「データΔAFR(CR)が閾値CERth個取得されたとき」に終了し、強制リーンインバランス状態を発生させる。更に、CPUは、強制リーンインバランス状態を「データΔAFL(CL)が閾値CELth個取得されたとき」に終了し、強制リッチインバランス状態を発生させる。
このような状態が継続すると、カウンタCRの値は閾値CRthに到達する。この場合、CPUは図22のステップ1950に進んだとき、そのステップ1950にて「Yes」と判定してステップ1955に進み、リッチデータ取得完了フラグXRの値を「1」に設定するとともに、強制リーンインバランス状態発生フラグXLTの値を「1」に設定する。この結果、CPUは図22のステップ1910に進んだとき、そのステップ1910にて「No」と判定し、ステップ2295に直接進んで本ルーチンを一旦終了するようになる。従って、強制リッチインバランス状態は発生させられなくなる。
同様に、このような状態が継続すると、カウンタCLの値は閾値CLthに到達する。この場合、CPUは図23のステップ2370に進んだとき、そのステップ2370にて「Yes」と判定してステップ2380に進み、リーンデータ取得完了フラグXLの値を「1」に設定するとともに、強制リーンインバランス状態発生フラグXLTの値を「0」に設定する。この結果、CPUは図23のステップ2320に進んだとき、そのステップ2320にて「No」と判定し、ステップ2295に直接進んで本ルーチンを一旦終了するようになる。従って、強制リーンインバランス状態は発生させられなくなる。
加えて、リッチデータ取得完了フラグXRの値が「1」に設定され、且つ、リーンデータ取得完了フラグXLの値が「1」に設定されたとき、CPUが図24のステップ2410に進むと、CPUはそのステップ2410にて「Yes」と判定し、ステップ2420に進んで強制インバランス状態フラグXENの値を「0」に設定する。
次に、CPUは、ステップ2050乃至ステップ2060と、ステップ2065及びステップ2070のうちの何れか一方と、の処理を行い、空燃比センサ55が「空燃比気筒間インバランス判定にとって適正であるか否か」の判定を実行する。その後、CPUはステップ2430にてリッチデータ取得完了フラグXRの値を「0」に設定するとともに、ステップ2440にてリーンデータ取得完了フラグXLの値を「0」に設定し、ステップ2495に進んで本ルーチンを一旦終了する。
なお、判定許可フラグXkyokaの値が「0」であるとき、CPUは図22のステップ1610にて「No」と判定し、ステップ2260に進んでカウンタCERの値を「0」に設定するとともに、ステップ2270に進んでカウンタCELの値を「0」に設定する。その後、CPUはステップ1960乃至ステップ1975の処理を行ってステップ2280に進み、リッチデータ取得完了フラグXRの値及びリーンデータ取得完了フラグXLの値の双方を「0」に設定する。そして、CPUはステップ1985の処理を実行して本ルーチンを一旦終了する。
同様に、判定許可フラグXkyokaの値が「0」であるとき、CPUは図23のステップ1610にて「No」と判定し、ステップ2260、ステップ2270、ステップ1960乃至ステップ1975、ステップ2280、並びに、ステップ1985の処理を実行して本ルーチンを一旦終了する。
また、CPUは、適正判定終了フラグXSOKの値が「0」以外の値であるときに図23のステップ1605に進むと、そのステップ1605にて「No」と判定し、ステップ2395に直接進んで本ルーチンを一旦終了する。
以上、説明したように、第3判定装置は、第2判定装置と同様、一つの気筒(この場合、第1気筒)に供給される混合気の空燃比を他の複数の気筒(第2〜第4気筒)に供給される混合気の空燃比よりもリッチ側の空燃比である第1空燃比に設定する強制リッチインバランス状態と、一つの気筒(この場合、第1気筒)に供給される混合気の空燃比を他の複数の気筒(第2〜第4気筒)に供給される混合気の空燃比よりもリーン側の空燃比である第2空燃比に設定する強制リーンインバランス状態と、が時間的に重複することがないようにそれぞれ発生するように、複数の燃料噴射弁から噴射される燃料の量を変更するように構成された強制インバランス状態生成手段を備える(図22のステップ1915、図23のステップ2005等を参照。)。
更に、前記強制インバランス状態生成手段は、
前記強制リッチインバランス状態において、前記第1空燃比を理論空燃比よりもリッチ側の空燃比(理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ken(=1+αp)倍することにより得られる空燃比)に設定するとともに前記他の複数の気筒に供給される混合気の空燃比を「理論空燃比又は理論空燃比よりもリーン側の空燃比である第3空燃比(理論空燃比を得るために必要な燃料噴射量又はその噴射量を空燃比フィードバック量DFiにより補正(減量)することにより得られる空燃比であって、機関10の全体に供給される混合気の空燃比の平均が理論空燃比よりもリッチ側となるような空燃比)」に設定し、且つ、同強制リッチインバランス状態の継続期間において前記排ガス中の過剰な未燃物が三元触媒43の最大酸素吸蔵量よりも少ない量の酸素により酸化され得る量である第1の量を超えないように、同強制リッチインバランス状態の継続期間の長さを制限し(図22のステップ2210、ステップ2220、及び、ステップ2230乃至ステップ2250等を参照。)、
前記強制リーンンバランス状態において、前記第2空燃比を理論空燃比よりもリーン側の空燃比(理論空燃比を得るために必要な燃料噴射量を燃料補正係数Ken(=1+αm)倍することにより得られる空燃比)に設定するとともに前記他の複数の気筒に供給される混合気の空燃比を「理論空燃比又は理論空燃比よりもリッチ側の空燃比である第4空燃比(理論空燃比を得るために必要な燃料噴射量又はその噴射量を空燃比フィードバック量DFiにより補正(増量)することにより得られる空燃比であって、機関10の全体に供給される混合気の空燃比の平均が理論空燃比よりもリーン側となるような空燃比)」に設定し、且つ、同強制リーンンバランス状態の継続期間において前記排ガス中の過剰な酸素が前記三元触媒の最大酸素吸蔵量よりも少ない第2の量を超えないように、同強制リーンインバランス状態の継続期間の長さを制限する(図23のステップ2310、ステップ2330、及び、ステップ2340乃至ステップ2360等を参照。)。
従って、検出する空燃比が理論空燃比よりもリッチ側である場合と理論空燃比よりもリーン側である場合とにおいて空燃比センサ55の出力特性が互いに相違する場合であっても、空燃比センサの適正判定を一層精度良く実行することができる。
更に、この態様によれば、強制リッチインバランス状態において三元触媒43に流入する過剰な未燃物の積算量が、その三元触媒43により浄化することが可能な未燃物の量を超えることがないように設定することができる。加えて、この態様によれば、強制リーンインバランス状態において三元触媒43に流入する過剰な酸素の積算量が、その三元触媒43に吸蔵することが可能な酸素の量(最大酸素吸蔵量Cmax)を超えることがないように設定することができる。従って、強制インバランス状態を発生させているときにエミッションが悪化することを回避することが可能になる。
なお、第3判定装置のCPUは、三元触媒43の最大酸素吸蔵量Cmaxと瞬時瞬時の酸素吸蔵量OSAとを推定しておき、その酸素吸蔵量OSAが、「0」よりも大きい第1所定値と、その第1所定値よりも大きく且つ最大酸素吸蔵量Cmaxよりも小さい第2所定値と、の範囲内になるように、強制リッチインバランス状態の継続期間の長さ及び強制リーンインバランス状態の継続期間の長さを制限してもよい。
更に、第3判定装置のCPUは、空燃比フィードバック量DFiによることなく、燃料補正係数Kenの値を「1−αp/3」に設定するとともに、その燃料補正係数Kenを基本燃料噴射量Fbaseに乗じた量の燃料を非強制インバランス気筒に噴射するようにすることによって、上記第3空燃比を理論空燃比よりもリーン側の空燃比に設定してもよい。
同様に、第3判定装置のCPUは、空燃比フィードバック量DFiによることなく、燃料補正係数Kenの値を「1−αm/3」に設定するとともに、その燃料補正係数Kenを基本燃料噴射量Fbaseに乗じた量の燃料を非強制インバランス気筒に噴射するようにすることによって、上記第4空燃比を理論空燃比よりもリッチ側の空燃比に設定してもよい。
更に、第3判定装置のCPUは、カウンタCERを強制リッチインバランス状態発生中においてクランク角が720°経過する毎に(即ち、一つの単位燃焼サイクルが経過する毎)に「1」だけ増大してもよい。同様に、第3判定装置のCPUは、カウンタCELを強制リーンインバランス状態発生中においてクランク角が720°経過する毎に(即ち、一つの単位燃焼サイクルが経過する毎)に「1」だけ増大してもよい。
<第4実施形態>
次に、本発明の第4実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第4判定装置」と称呼する。)について説明する。
ところで、強制インバランス状態を発生させるために特定の気筒(強制インバランス気筒)の空燃比を偏移させたとしても、強制インバランス状態を発生させていない状態においてその特定の気筒の空燃比が他の気筒の空燃比から乖離していると、その影響が空燃比センサ評価用パラメータに現れる。従って、このような場合、空燃比センサ55の評価を正しく行うための評価用パラメータを取得できない虞がある。
そこで、第4判定装置は、空燃比センサ55の評価用パラメータを取得する際、強制インバランス気筒を互いに異なる少なくとも2つの気筒(第N1気筒及び第N2気筒)に順次変更する。加えて、第4判定装置は、強制インバランス気筒が「第N1気筒(例えば、第1気筒)」であるときに暫定評価用パラメータを求めるための複数の元データA1を取得するとともに、強制インバランス気筒が「第N2気筒(例えば、第4気筒)」であるときに暫定評価用パラメータを求めるための複数の元データA2を取得する。このように、第4判定装置は、強制インバランス気筒に設定された気筒に対応させながら暫定評価用パラメータの元データを取得する。
そして、第4判定装置は、各強制インバランス気筒に対する暫定評価用パラメータの元データの取得が完了すると、強制インバランス気筒のそれぞれに対する暫定評価用パラメータを「それぞれの暫定評価用パラメータを求めるための複数の元データ」から算出する。即ち、第4判定装置は、第N1気筒が強制インバランス気筒であるときの複数の元データA1の平均値等を空燃比センサ55の暫定評価用パラメータΔAFev(N1)として取得するとともに、第N2気筒が強制インバランス気筒であるときの複数の元データA2の平均値等を空燃比センサ55の暫定評価用パラメータΔAFev(N2)として取得する。
そして、第4判定装置は、第N1気筒に対する暫定評価用パラメータΔAFev(N1)と第N2気筒に対する暫定評価用パラメータΔAFev(N2)とが実質的に一致しているか否か(具体的には、それらの差の絶対値|ΔAFev(N1)−ΔAFev(N2)|が微小な所定の閾値αth以下であるか否か)を判定し、それらが実質的に一致している場合、強制インバランス状態を発生させていないときに各気筒の空燃比は互いに略一致していると見做し(即ち、第N1気筒及び第N2気筒の何れもが非インバランス気筒であると判断し)、第N1気筒に対する暫定評価用パラメータΔAFev(N1)及び第N2気筒に対する暫定評価用パラメータΔAFev(N2)の何れか、或いは、それらの平均値を最終的な空燃比センサの評価用パラメータ(最終評価用パラメータ)ΔAFevとして取得する。
その後、第4判定装置は、第1〜第3判定装置と同様、最終評価用パラメータΔAFevと基準パラメータΔAFstとの差の絶対値が閾値Dthを超えていれば、「空燃比センサ55の出力特性はインバランス判定を実行することに対して適切でない」と判定し、インバランス判定の実行を禁止する。これに対し、第4判定装置は、最終的な評価用パラメータΔAFevと基準パラメータΔAFstの差の絶対値が閾値Dth以下であれば、「空燃比センサ55の出力特性はインバランス判定を実行することに対して適切である」と判定し、インバランス判定の実行を許可する。
更に、第4判定装置は、第N1気筒に対する暫定評価用パラメータΔAFev(N1)と第N2気筒に対する暫定評価用パラメータΔAFev(N2)とが実質的に一致していないとき、強制インバランス状態を発生させていない状態において気筒別空燃比(第N1気筒に供給される混合気の空燃比と第N2気筒に供給される混合気の空燃比)の間に不均衡が生じていると判定し、「空燃比センサ55の出力特性はインバランス判定を実行することに対して適切か否か」の判定(空燃比センサ適正判定)を行わず、且つ、インバランス判定の実行を禁止する。
(作動)
第4判定装置のCPUは、図18に示したルーチンを実行することにより、インバランス判定を行う。更に、第4判定装置のCPUは、図25にフローチャートにより示したルーチンを実行することにより、空燃比センサ55の出力特性を評価する。より具体的に述べると、CPUは所定のタイミングにてステップ2500からステップ1605に進み、センサ適正判定終了フラグXSOKの値が「0」であるか否かを判定することにより、「空燃比センサ55の適正判定が未完了であるか否か」を判定する。このとき、センサ適正判定終了フラグXSOKの値が「0」以外の値であれば(即ち、センサ適正判定が完了していれば)、CPUはステップ2595に直接進んで本ルーチンを一旦終了する。
センサ適正判定終了フラグXSOKの値が「0」であると、CPUはステップ1605にて「Yes」と判定してステップ1610に進み、判定許可フラグXkyokaの値が「1」であるか否かを判定する。このとき、判定許可フラグXkyokaの値が「1」でなければ、CPUはステップ1610にて「No」と判定し、ステップ2595に直接進んで本ルーチンを一旦終了する。
一方、判定許可フラグXkyokaの値が「1」であると、CPUはステップ1610にて「Yes」と判定してステップ2510に進み、強制インバランス気筒を先ず第N1気筒(本例において、第1気筒)に設定するとともに、所定時間が経過する毎に検出空燃比変化率ΔAFの絶対値(暫定評価用パラメータの元データ)を取得し、その絶対値を第N1気筒とその絶対値の取得順序とに関連付けながら格納する。即ち、その絶対値が、第N1気筒を強制インバランス気筒に設定した時点から第Cn番目に得られたデータであるとすると、その絶対値は元データΔAF(N1,Cn)(=ΔAF(1,Cn))として格納される。
更に、CPUは、元データΔAF(N1,Cn)が閾値Cnth個得られると、強制インバランス気筒を第N2気筒(本例において、第4気筒)に設定するするとともに、所定時間が経過する毎に検出空燃比変化率ΔAFの絶対値(暫定評価用パラメータの元データ)を取得し、その絶対値を第N2気筒とその絶対値の取得順序とに関連付けながら格納する。即ち、その絶対値が、第N2気筒を強制インバランス気筒に設定した時点から第Cn番目に得られたデータであるとすると、その絶対値は元データΔAF(N2,Cn)(=ΔAF(4,Cn))として格納される。元データΔAF(N2,Cn)が閾値Cnth個得られるとCPUはステップ2520に進む。なお、CPUは、強制インバランス気筒がどの気筒であっても、その強制インバランス気筒に対する燃料噴射量の補正量(上記値α)を一定の値(上記値αp又はαm)に設定する。
次に、CPUはステップ2520において、第N1気筒についての複数の元データΔAF(N1,i)が閾値Cnth個得られ、且つ、第N2気筒についての複数の元データΔAF(N2,i)が閾値Cnth個得られていることを確認し、ステップ2530に進む。
CPUは、ステップ2530において、第N1気筒についての複数の元データΔAF(N1,i)の平均値を「第N1気筒の暫定評価用パラメータΔAFev(N1)」として取得するとともに、第N2気筒についての複数の元データΔAF(N2,i)の平均値を「第N2気筒の暫定評価用パラメータΔAFev(N2)」として取得する。
次に、CPUはステップ2540に進み、第N1気筒の暫定評価用パラメータΔAFev(N1)と、第N2気筒の暫定評価用パラメータΔAFev(N2)と、の差の絶対値|ΔAFev(N1)−ΔAFev(N2)|が閾値αthよりも小さいか否かを判定することにより、暫定評価用パラメータΔAFev(N1)と暫定評価用パラメータΔAFev(N2)とが実質的に一致しているか否かを判定する。
このとき、絶対値|ΔAFev(N1)−ΔAFev(N2)|が閾値αthよりも小さいと、強制インバランス状態を発生させていない状態において「第N1気筒に供給される混合気の空燃比と第N2気筒に供給される混合気の空燃比とは略一致している」と判断できるので、CPUはステップ2540にて「Yes」と判定してステップ2550に進み、暫定評価用パラメータΔAFev(N1)を「空燃比センサ55の最終的な評価用パラメータ(最終評価用パラメータ)ΔAFev」として採用する。
なお、CPUはステップ2550において、暫定評価用パラメータΔAFev(N2)を最終評価用パラメータΔAFevとして採用してもよく、「暫定評価用パラメータΔAFev(N1)と暫定評価用パラメータΔAFev(N2)との平均値」を最終評価用パラメータΔAFevとして採用してもよい。
次いで、CPUはステップ1665にて前述の通り基準パラメータΔAFstをROMから読み出し、ステップ1670以降に進んで「最終評価用パラメータΔAFevと基準パラメータΔAFstとの差の絶対値D」が閾値Dthより大きいか否かに基づいて、空燃比センサ55の出力特性がインバランス判定を実行することに対して適切であるか否かの判定(センサ適正判定)を実行する。
そして、空燃比センサ55の出力特性がインバランス判定を実行することに対して適切であると判定される場合、CPUはステップ1680にてセンサ適正判定終了フラグXSOKの値を「1」に設定する。これにより、CPUは図18のステップ1802にて「Yes」と判定するので、インバランス判定が実行される。
これに対し、空燃比センサ55の出力特性がインバランス判定を実行することに対して適切でないと判定される場合、CPUはステップ1675にてセンサ適正判定終了フラグXSOKの値を「2」に設定する。これにより、CPUは図18のステップ1802にて「No」と判定するので、インバランス判定が実行されない。
更に、CPUがステップ2540の処理を実行する時点において、差の絶対値|ΔAFev(N1)−ΔAFev(N2)|が閾値αthよりも大きいと、強制インバランス状態を発生させていない状態において「第N1気筒に供給される混合気の空燃比と第N2気筒に供給される混合気の空燃比とが相違している」と判断できる。即ち、第N1気筒及び第N2気筒の何れかがインバランス気筒であると判断できる。
そこで、CPUは、差の絶対値|ΔAFev(N1)−ΔAFev(N2)|が閾値αthよりも大きいとき、ステップ2540にて「No」と判定してステップ2560に進み、センサ適正判定終了フラグXSOKの値を「3」に設定し、ステップ2595に直接進んで本ルーチンを一旦終了する。換言すると、センサ適正判定終了フラグXSOKの値が「3」であることは、空燃比センサ55の判定を試みたが判定を中止したことを示す。
この場合(センサ適正判定終了フラグXSOKの値が「3」に設定された場合)、CPUは図18のステップ1802にて「No」と判定するので、インバランス判定が実行されない。即ち、CPUは、「第N1気筒に供給される混合気の空燃比と第N2気筒に供給される混合気の空燃比とが相違している」と判断した場合、インバランス判定の実行を禁止する。
以上、説明したように、第4判定装置は、
機関10が備える少なくとも3以上の気筒のうちの一つの気筒であって同気筒に供給される混合気の空燃比が他の気筒に供給される混合気の空燃比から所定空燃比だけ乖離した強制インバランス空燃比となるように「噴射される燃料の量が変更される強制インバランス気筒」を、第1の気筒(第N1気筒)に所定期間設定した後に第2の気筒(第N2気筒)に所定期間設定する強制インバランス状態生成手段(図25のステップ2510を参照。)を備える。
更に、第4判定装置は、
前記強制インバランス気筒が前記第1の気筒に設定されている第1強制インバランス期間における前記空燃比センサ評価用パラメータを第1暫定評価用パラメータ(ΔAFev(N1))として取得し、前記強制インバランス気筒が前記第2の気筒に設定されている第2強制インバランス期間における前記空燃比センサ評価用パラメータを第2暫定評価用パラメータ(ΔAFev(N2))として取得し(図25のステップ2510及びステップ2530を参照。)、
前記第1暫定評価用パラメータΔAFev(N1)と前記第2暫定評価用パラメータΔAFev(N2)との差の絶対値が所定閾値αth以下である場合、同第1暫定評価用パラメータΔAFev(N1)及び同第2暫定評価用パラメータΔAFev(N2)のうちの少なくとも一方に応じたパラメータを、前記センサ適正判定を実行する際に使用される最終的な空燃比センサ評価用パラメータΔAFevとして取得し(図25のステップ2540及びステップ2550を参照。)、
前記第1暫定評価用パラメータΔAFev(N1)と前記第2暫定評価用パラメータΔAFev(N2)との差の絶対値が前記所定閾値αthよりも大きい場合、前記空燃比センサ評価手段による前記センサ適正判定の実行を禁止するように構成された(図25のステップ2540及びステップ2560を参照。)、評価用パラメータ取得手段を備える。
なお、第4判定装置は、図25のステップ2560にてセンサ適正判定終了フラグXSOKの値が「3」に設定されたとき、図25のステップ2550、及び、ステップ1665乃至ステップ1680の処理を実行するが、ステップ1670の判定結果に拘わらずセンサ適正判定終了フラグXSOKの値を「3」に維持することにより、前記センサ適正判定の結果を無効とするように構成されていてもよい。
これによれば、第1暫定評価用パラメータ及び第2暫定評価用パラメータの何れもが、何れも元々のインバランス状態の影響を受けることなく「空燃比センサの出力特性」を精度良く表している場合にのみ、第1暫定評価用パラメータ及び第2暫定評価用パラメータの少なくとも一方に基づいて得られる最終評価用パラメータに基づくセンサ適正判定が実行される。この結果、正常な空燃比センサ55を「不適切な空燃比センサである」と判定してしまうことを回避することができる。
<第5実施形態>
次に、本発明の第5実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第5判定装置」と称呼する。)について説明する。
第5判定装置は、空燃比センサ55の評価用パラメータを取得する際、強制インバランス気筒を順次変更する。即ち、第5判定装置は、空燃比センサ55に排ガスが到達している総ての気筒のそれぞれを順番に強制インバランス気筒に設定する。更に、第5判定装置は、強制インバランス気筒のそれぞれに対して第4判定装置と同様に暫定評価用パラメータを取得する。
そして、第5判定装置は、各気筒に対する暫定評価用パラメータ同士を比較することにより、互いに最も近い2つの暫定評価用パラメータを選択する。これは、インバランス気筒を強制インバランス気筒に設定した場合に得られる暫定評価用パラメータと、非インバランス気筒を強制インバランス気筒に設定した場合に得られる評価用パラメータと、は相違することに基づく。換言すると、2以上の気筒が同時にインバランス気筒となることは実質的にないので(或いは、何れかの気筒がインバランス気筒として先に検出されるので)、互いに最も近い2つの暫定評価用パラメータが得られた2つの気筒は、何れもインバランス気筒ではないと判定でき、従って、その2つの気筒の暫定評価用パラメータは空燃比センサ55の出力特性を精度良く表すからである。
更に、第5判定装置は、その選択した「互いに最も近い2つの暫定評価用パラメータΔAFev」を用いて最終評価用パラメータを求める。例えば、そのような最終評価用パラメータは、「互いに最も近い2つの暫定評価用パラメータ」の何れか一方であってもよく、あるいは「互いに最も近い2つの暫定評価用パラメータ」の平均値であってもよい。そして、第5判定装置は、そのように求めた最終評価用パラメータと基準パラメータとを比較して、空燃比センサ55の出力特性がインバランス判定にとって適正であるか否かを判定する。
(作動)
第5判定装置のCPUは、図26にフローチャートにより示したルーチンを実行することにより、空燃比センサ55の出力特性を評価する点においてのみ、第4判定装置のCPUと相違している。より具体的に述べると、CPUは所定のタイミングにてステップ2600からステップ1605に進み、センサ適正判定終了フラグXSOKの値が「0」であるか否かを判定することにより、「空燃比センサ55の適正判定が未完了であるか否か」を判定する。このとき、センサ適正判定終了フラグXSOKの値が「0」以外の値であれば(即ち、センサ適正判定が完了していれば)、CPUはステップ2695に直接進んで本ルーチンを一旦終了する。
センサ適正判定終了フラグXSOKの値が「0」であると、CPUはステップ1605にて「Yes」と判定してステップ1610に進み、判定許可フラグXkyokaの値が「1」であるか否かを判定する。このとき、判定許可フラグXkyokaの値が「1」でなければ、CPUはステップ1610にて「No」と判定し、ステップ2695に直接進んで本ルーチンを一旦終了する。
一方、判定許可フラグXkyokaの値が「1」であると、CPUはステップ1610にて「Yes」と判定してステップ2905に進み、強制インバランス気筒を先ず一定の期間だけ第1気筒に設定するとともに、所定時間が経過する毎に検出空燃比変化率ΔAFの絶対値(暫定評価用パラメータの元データ)を取得し、その絶対値を第1気筒とその絶対値の取得順序とに関連付けながら格納する。即ち、その絶対値が、第1気筒を強制インバランス気筒に設定した時点から第C(N)番目に得られたデータであるとすると、その絶対値は元データΔAF(1,C(N))として格納される。
更に、CPUは、元データΔAF(1,C(N))が閾値C(N)th個得られると、強制インバランス気筒を前記一定の期間だけ第2気筒に設定し、同様に、所定時間の経過毎の検出空燃比変化率ΔAFの絶対値を元データAF(2,C(N))として格納する。次いで、CPUは、元データΔAF(2,C(N))が閾値C(N)th個得られると、強制インバランス気筒を前記一定の期間だけ第3気筒に設定し、同様に、所定時間の経過毎の検出空燃比変化率ΔAFの絶対値を元データAF(3,C(N))として格納する。
その後、CPUは、元データΔAF(3,C(N))が閾値C(N)th個得られると、強制インバランス気筒を前記一定の期間だけ第4気筒に設定し、同様に、所定時間の経過毎の検出空燃比変化率ΔAFの絶対値を元データAF(4,C(N))として格納する。なお、強制インバランス気筒を設定する順序は、任意の順序(例えば、第1、3、4、2気筒の点火順等)であってもよい。また、第N気筒(N=1,2,3,4)が強制インバランス気筒に設定されている期間を第N強制インバランス期間とも称呼する。
即ち、CPUは、一定の期間の経過毎に値「N」を「1」から「1」ずつ増大し、「一定の第N強制インバランス期間」に渡り、第N気筒を強制インバランス気筒に設定し且つ第N気筒以外の気筒を非強制インバランス気筒に設定する。そして、CPUは第N強制インバランス期間において複数の検出空燃比変化率ΔAFの絶対値を取得する。なお、CPUは、強制インバランス気筒がどの気筒であっても、その強制インバランス気筒に対する燃料噴射量の補正量(上記値α)を一定の値(上記値αp又はαm)に設定する。
次に、CPUはステップ2620に進み、総ての第N気筒(N=1,2,3,4)についての複数の元データΔAF(N,i)が閾値C(N)th個得られていることを確認し、ステップ2630に進む。
次に、CPUはステップ2630において、第N気筒(N=1,2,3,4)についての複数の元データΔAF(N,i)の平均値を「第N気筒の暫定評価用パラメータΔAFev(N)」として取得する。即ち、CPUは、第N強制インバランス期間において得られた複数の検出空燃比変化率ΔAFの絶対値の平均値を、第N気筒の暫定評価用パラメータΔAFev(N)として算出する。この結果、第1気筒の暫定評価用パラメータΔAFev(1)、第2気筒の暫定評価用パラメータΔAFev(2)、第3気筒の暫定評価用パラメータΔAFev(3)、及び、第4気筒の暫定評価用パラメータΔAFev(4)が取得される。
次に、CPUはステップ2640に進み、これらの暫定評価用パラメータΔAFev(N)の中から、互いに最も近い値を有する2つのパラメータ(ΔAF(M1),ΔAF(M2);M1,M2は互いに相違する1〜4の自然数)を選択する。そして、CPUは、この2つの暫定評価用パラメータの平均値(=(ΔAF(M1)+ΔAF(M2))/2)を最終評価用パラメータΔAFevとして採用する。なお、CPUは、選択された2つの暫定評価用パラメータのうちの何れか一方(例えば、小さい方又は大きい方)を最終評価用パラメータΔAFevとして採用してもよい。
次に、CPUはステップ1665に進み、基準パラメータΔAFstをROMから読み出す。そして、「最終評価用パラメータΔAFevと基準パラメータΔAFstとの差の絶対値D」が「所定の評価用閾値Dth」よりも大きい場合、CPUはステップ1670からステップ1675に進み、センサ適正判定終了フラグXSOKの値に「2」を設定する。これに対し、絶対値Dが閾値Dth以下であるならば、CPUはステップ1670からステップ1680に進み、センサ適正判定終了フラグXSOKの値に「1」を設定する。以上が、第5判定装置の作動の概要である。
(作動の詳細)
図27は、第5判定装置のCPUが実行する「空燃比センサ適正判定」の詳細なルーチンを示している。以下、簡単に説明すると、CPUは、ステップ1605及びステップ1610にて、センサ適正判定終了フラグXSOKの値が「0」であり且つ判定許可フラグXkyokaの値が「1」であることを確認した後、ステップ2705にて「元データの取得が完了する前であるか否か(元データ完了取得フラグXFINの値が「0」であるか否か)」を判定する。このとき、元データ完了取得フラグXFINの値が「1」であれば、CPUはステップ2795に直接進んで本ルーチンを一旦終了する。元データ完了取得フラグXFINの値は、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
元データ完了取得フラグXFINの値が「0」であると、CPUはステップ2710乃至ステップ2720の処理により、判定許可フラグXkyokaの値が「0」から「1」に変更になった直後にのみカウンタC(N)(但し、N=1,2,3,4)の値を総て「0」に設定し、値「N」を「1」に設定する。
その後、CPUはステップ2725に進み、特定気筒である第N気筒の燃料噴射量を他の気筒よりも増大させるための処理を行う。具体的に述べると、CPUは、強制インバランス状態フラグXENの値を「1」に設定し、値「α」を正の所定値αp(例えば、0.45)に設定する。これにより、第N気筒の燃料噴射量が他の気筒の燃料噴射量よりも値αに応じた分だけ増量される(図14のステップ1410乃至ステップ1440を参照。)。
次に、CPUはステップ1620乃至ステップ1635の処理を実行することにより、検出空燃比変化率ΔAFを取得する。次いで、CPUはステップ2725に進み、第N気筒カウンタC(N)の値を「1」だけ増大する。第N気筒カウンタC(N)は、ステップ2715及びステップ2720が実行された直後であれば第1気筒カウンタC(1)であり、その値は「1」となる。
次に、CPUはステップ2730に進み、ステップ1635にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)を「第N気筒の第C(N)番目の元データΔAF(N,C(N))」として格納する。例えば、現在の「N」の値が「1」であり、第N気筒カウンタC(N)の値が「1」であると、ステップ1635にて取得された検出空燃比変化率ΔAFの絶対値(|ΔAF|)が「第1気筒の第1番目の元データΔAF(1,1)」として格納される。
次に、CPUはステップ2735に進み、第N気筒カウンタC(N)が閾値C(N)th以上であるか否かを判定し、第N気筒カウンタC(N)が閾値C(N)th未満であればステップ2750に直接進む。これに対し、CPUは、第N気筒カウンタC(N)が閾値C(N)th以上であれば、ステップ2735からステップ2740に進んで第N気筒カウンタC(N)の値を「0」に設定し、ステップ2745にて値「N」を「1」だけ増大した後、ステップ2750に進む。ステップ2735の処理は、第N気筒を強制インバランス気筒に設定した場合における検出空燃比変化率ΔAFの絶対値|ΔAF|のデータ数が充分な数に到達したか否かを判定するステップである。
次に、CPUはステップ2750に進み、値「N」が5以上であるか否かを判定することにより、総ての気筒のそれぞれを強制インバランス気筒に設定した場合の複数の検出空燃比変化率ΔAFの絶対値(元データ)が取得されたか否かを判定する。このとき、元データの取得が完了していなければ(N<5)、CPUはステップ2750からステップ2795に直接進んで本ルーチンを一旦終了する。
これにより、以降、図27のルーチンが実行されると、それまでとは異なる気筒が強制インバランス気筒に設定され(例えば、それまでの強制インバランス気筒が第1気筒であれば、第2気筒が強制インバランス気筒に設定され)、その新たに設定された強制インバランス気筒に対する元データが格納されて行く。
一方、CPUがステップ2750の処理を実行する時点において、値「N」が「5」に到達していると、CPUはステップ2750からステップ2755に進んで元データ完了取得フラグXFINの値を「1」に設定するとともに、強制インバランス状態フラグXENの値を「0」に設定する。次に、CPUはステップ2760に進み、上述した図26のステップ2640と同様にして最終的な評価用パラメータΔAFevを決定する。
即ち、CPUは、値「N」のそれぞれに対してΔAF(N,C(N))(但し、C(N)は1〜C(N)thの自然数)の平均値を第N気筒の暫定評価用パラメータとして求め、求めた暫定評価用パラメータの中から互いに最も近い(差が小さい)2つの値を選択し、その選択した2つの値の平均値を最終評価用パラメータΔAFevとして採用する。その後、CPUはステップ2795に進んで本ルーチンを一旦終了する。
なお、CPUがステップ1610の処理を実行する時点において、判定許可フラグXkyokaの値が「0」であると、CPUはステップ2765乃至ステップ2775の処理を実行する。これにより、総ての元データΔAF(N,自然数h)、総ての第N気筒カウンタC(N)、及び、強制インバランス状態フラグXENの値、が「0」に設定される。
更に、CPUは図28に示したルーチンを所定時間の経過毎に実行するようになっている。従って、所定のタイミングになると、CPUは図28のステップ2800から処理を開始し、ステップ1605、ステップ1610及びステップ2810にて、「センサ適正判定終了フラグXSOKの値が「0」であり、且つ、判定許可フラグXkyokaの値が「1」であり、且つ、元データ完了取得フラグXFINの値が「1」」であることが確認された場合、ステップ1665以降の処理を行う。即ち、図27のステップ2760にて取得した最終評価用パラメータΔAFevと基準パラメータΔAFstとの差の絶対値に基づいて、空燃比センサ55が「空燃比気筒間インバランス判定にとって適正であるか否か」の判定を実行する。
以上、説明したように、第5判定装置は、空燃比センサ55に排ガスが到達している気筒の総てについて、それぞれを順番に強制インバランス気筒に設定し、各強制インバランス気筒に対応して暫定評価用パラメータを求め、その中で互いに最も近い値を有する二つの暫定評価用パラメータに基づいて最終評価用パラメータΔAFevを求める。従って、最終評価用パラメータΔAFevが、元々のインバランス気筒の影響を受け難い値であって、且つ、空燃比センサ55の出力特性を精度良く表す値となるので、空燃比センサ適正判定を精度良く行うことができる。その結果、インバランス判定も精度よく実施することができる。
<第6実施形態>
次に、本発明の第6実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第6判定装置」と称呼する。)について説明する。
第6判定装置は、第5判定装置と同様、強制インバランス気筒を順次変更する。更に、第6判定装置は、所定時間の経過毎に、強制インバランス気筒に設定された第N気筒に対応させながら検出空燃比変化率ΔAFを元データΔAF(N,C(N))として取得する。
そして、第6判定装置は、総ての気筒に対する元データが取得されたとき、強制インバランス状態を終了し、その状態において所定時間の経過毎に検出空燃比変化率ΔAFを取得する。更に、第6判定装置は、その検出空燃比変化率ΔAFを用いてインバランス傾向を識別する。
インバランス傾向の識別とは、何れか一つの気筒に供給される混合気の空燃比が、他の(残りの)気筒に供給される混合気の空燃比、からある程度以上乖離しているか否かを判定することを含む。但し、インバランス傾向があると判定される場合には、インバランス気筒の空燃比と非インバランス気筒の空燃比との空燃比の差が「空燃比気筒間インバランス状態である」と判定すべき程度にまで増大していない場合も含む。更に、インバランス傾向の識別は、インバランス傾向が有りと判定された場合に、そのインバランスが「リッチずれインバランス傾向」であるのか、「リーンずれインバランス傾向」であるのか、の判定を含む。
その後、第6判定装置は、取得した元データΔAF(N,C(N))と、インバランス傾向の識別結果と、から最終評価用パラメータを決定する。より具体的に述べると、第6判定装置は、インバランス傾向がないと判定した場合、元データΔAF(N,C(N))の中の負の値を有するデータを選択し、それらの平均値を最終評価用パラメータΔAFevとして採用する。
一方、第6判定装置は、リッチずれインバランス傾向があると判定した場合、第N気筒毎に「元データΔAF(N,C(N))の中の負の値を有するデータ」を選択し、それらの平均値の絶対値(絶対値の平均値でもよい。)Xを第N気筒毎に求め、その算出した値Xの中の最小値を最終評価用パラメータΔAFevとして採用する。
強制インバランス状態が発生していない状態においてリッチずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合における空燃比センサ55に到達する空燃比は、他の気筒(非インバランス気筒、正常気筒)を強制インバランス気筒に設定した場合における空燃比センサ55に到達する空燃比に比較して、急激に減少する挙動を示す。従って、検出空燃比変化率ΔAFのうちの負の値は、リッチずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合に、その絶対値が大きくなる。よって、上記の値Xは、元々のリッチずれインバランス状態の影響を最も受けていない値であると考えられるので、空燃比センサ55の出力特性を精度良く表すパラメータであり、空燃比センサ55の出力特性を評価するのに適切なパラメータである。
他方、第6判定装置は、リーンずれインバランス傾向があると判定した場合、第N気筒毎に「元データΔAF(N,C(N))の中の負の値を有するデータ」を選択し、それらの平均値の絶対値(絶対値の平均値でもよい。)Xを第N気筒毎に求め、その算出した値Xの中の最大値を最終評価用パラメータΔAFevとして採用する。
強制インバランス状態が発生していない状態においてリーンずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合における空燃比センサ55に到達する空燃比は、他の気筒(非インバランス気筒、正常気筒)を強制インバランス気筒に設定した場合における空燃比センサ55に到達する空燃比に比較して、緩慢に減少する挙動を示す。従って、検出空燃比変化率ΔAFのうちの負の値は、リーンずれインバランスを発生させているインバランス気筒を強制リッチインバランス気筒に設定した場合に、その絶対値が小さくなる。よって、上記の値Xは、元々のリーンずれインバランス状態の影響を最も受けていない値であると考えられるので、空燃比センサ55の出力特性を精度良く表すパラメータであり、空燃比センサ55の出力特性を評価するのに適切なパラメータである。
そして、第6判定装置は、他の装置と同様、最終評価用パラメータΔAFevと基準パラメータΔAFstとの差の絶対値に基づいて、空燃比センサ55が「空燃比気筒間インバランス判定にとって適正であるか否か」の判定を実行する。
(作動)
第6判定装置のCPUは、図29にフローチャートにより示したルーチンを実行することにより、空燃比センサ55の出力特性を評価する。より具体的に述べると、CPUは所定のタイミングにてステップ2900からステップ1605に進み、センサ適正判定終了フラグXSOKの値が「0」であるか否かを判定することにより、「空燃比センサ55の適正判定が未完了であるか否か」を判定する。このとき、センサ適正判定終了フラグXSOKの値が「0」以外の値(1又は2)であれば、CPUはステップ2995に直接進んで本ルーチンを一旦終了する。
センサ適正判定終了フラグXSOKの値が「0」であると、CPUはステップ1605にて「Yes」と判定してステップ1610に進み、判定許可フラグXkyokaの値が「1」であるか否かを判定する。このとき、判定許可フラグXkyokaの値が「1」でなければ、CPUはステップ1610にて「No」と判定し、ステップ2995に直接進んで本ルーチンを一旦終了する。
一方、判定許可フラグXkyokaの値が「1」であると、CPUはステップ1610にて「Yes」と判定してステップ2905に進み、強制インバランス気筒を順番に変更するとともに、各強制インバランス気筒毎に検出空燃比変化率ΔAFを求め、それを各強制インバランス気筒に対応させながら元データとして格納する。
次に、CPUはステップ2620において、総ての気筒のそれぞれを強制インバランス気筒に設定した場合の複数の検出空燃比変化率ΔAFが取得されたか否かを判定する。このとき、元データの取得が完了していなければ、CPUはステップ2995に直接進んで本ルーチンを一旦終了する。
これに対し、元データの取得が完了していると、CPUはステップ2620にて「Yes」と判定してステップ2910に進み、強制インバランス状態を終了するとともに、複数の検出空燃比変化率ΔAFを取得し、それらの検出空燃比変化率ΔAFに基づいて、インバランス傾向の有無を識別する。
より具体的には、検出空燃比変化率ΔAFの変化の様子が図8の(A)のように略一定であれば、CPUはインバランス傾向なしと判定する。この場合、CPUは、総ての気筒のそれぞれを強制インバランス気筒に設定した場合の複数の検出空燃比変化率(元データ)ΔAFのうち負の値を有するデータの絶対値|ΔAF|の平均値を算出し、それを最終的な評価用パラメータ評価用パラメータΔAFevとして採用する。
これに対し、検出空燃比変化率ΔAFの変化の様子が図8の(B)のように、比較的急激に減少した後に比較的穏やかに増大する傾向を示している場合、CPUはリッチインバランス傾向ありと判定する。この場合、CPUは、各気筒に対応する元データ(検出空燃比変化率ΔAF)の中の負の値を有するデータの絶対値の平均値を各気筒別に算出し、その算出した平均値の中の最小値を評価用パラメータ評価用パラメータΔAFevとして採用する。
他方、検出空燃比変化率ΔAFの変化の様子が図8の(C)のように、比較的急激に増大した後に比較的穏やかに減少する傾向を示している場合、CPUはリーンインバランス傾向ありと判定する。この場合、CPUは、各気筒に対応する元データ(検出空燃比変化率ΔAF)の中の負の値を有するデータの絶対値の平均値を各気筒別に算出し、その算出した平均値の中の最大値を評価用パラメータΔAFevとして採用する。
その後、CPUはステップ2930以降に進み、他の実施形態と同様に空燃比センサ55の適否を判定する。但し、ステップ2930にて読み出される基準パラメータΔAFstは、インバランス傾向がない状態において上記強制インバランス状態を発生させた場合において、空燃比センサ55の出力特性が基準空燃比センサの出力特性と一致しているときに得られた複数の検出空燃比変化率ΔAFのうち、負の値を有する検出空燃比変化率ΔAFの絶対値|ΔAF|の平均値である。
(作動の詳細)
第6判定装置のCPUは、実際には第5判定装置のCPUと同様、図27に示したルーチンを実行する。但し、図27のステップ2730において、検出空燃比変化率ΔAFそのものが元データ(N,C(N))として取得される。これにより、第N気筒を強制インバランス気筒に設定した場合における複数の検出空燃比変化率ΔAF(N,C(N))が元データとして取得される。
更に、CPUは、図30に示したルーチンを所定時間の経過毎に実行する。以下、簡単に説明すると、CPUは、ステップ1605及びステップ1610にて、センサ適正判定終了フラグXSOKの値が「0」であり且つ判定許可フラグXkyokaの値が「1」であることを確認した後、ステップ3010にて「元データの取得が完了した後であるか否か(元データ完了取得フラグXFINの値が「1」であるか否か)」を判定する。
CPUがステップ3010の処理を実行する時点において、元データ完了取得フラグXFINの値が「1」であると、CPUはそのステップ3010にて「Yes」と判定してステップ3020に進み、強制インバランス状態フラグXENの値が「0」であることを確認する。そして、強制インバランス状態フラグXENの値が「0」であると、CPUはステップ1620乃至ステップ1635の処理を実行することにより、検出空燃比変化率ΔAFを取得する。次いで、CPUはステップ3030に進み、カウンタCmの値を「1」だけ増大する。
次に、CPUはステップ3040に進み、ステップ1635にて取得された検出空燃比変化率ΔAFを「第Cm番目の元データΔAF(Cm)」として格納する。その後、CPUはステップ3050のカウンタCmの値が閾値Cmth以上であるか否かを判定する。閾値Cmthは、少なくとも複数の単位燃焼サイクルが経過したときに得られる検出空燃比変化率ΔAFの個数以上の値に設定されている。
このとき、カウンタCmの値が閾値Cmth未満であれば、CPUはステップ3050にて「No」と判定し、ステップ3095に直接進んで本ルーチンを一旦終了する。これに対し、カウンタCmの値が閾値Cmth以上であると、CPUはステップ3050にて「Yes」と判定してステップ3060に進み、ステップ3040にて取得した複数の検出空燃比変化率ΔAF(Cm)に基づいて、インバランス傾向を判定(識別)する。
即ち、検出空燃比変化率ΔAF(Cm)が図8の(A)のように略一定であれば、CPUはインバランス傾向なしと判定し、インバランス傾向フラグXkeikoの値を「1」に設定する。具体的には、検出空燃比変化率ΔAF(Cm)の絶対値の平均値が所定値(インバランス傾向識別値)以下であれば、CPUはインバランス傾向なしと判断する。なお、インバランス傾向フラグXkeikoの値も上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
一方、検出空燃比変化率ΔAF(Cm)が図8の(B)のように、相対的に急激な減少後に相対的に緩慢な増大を示すように変化していれば、CPUはリッチインバランス傾向ありと判定し、インバランス傾向フラグXkeikoの値を「2」に設定する。具体的には、検出空燃比変化率ΔAF(Cm)のうち、負の値を有するデータの絶対値の平均値Fmが正の値を有するデータの絶対値の平均値Fpよりも大きく、且つ、その平均値Fpがインバランス傾向識別値以上であれば、CPUはリッチインバランス傾向ありと判定する。
他方、検出空燃比変化率ΔAF(Cm)が図8の(C)のように、相対的に急激な増大の後に相対的に緩慢な減少を示すように変化していれば、CPUはリーンインバランス傾向ありと判定し、インバランス傾向フラグXkeikoの値を「3」に設定する。具体的には、検出空燃比変化率ΔAF(Cm)のうち、負の値を有するデータの絶対値の平均値Fmが正の値を有するデータの絶対値の平均値Fpよりも小さく、且つ、その平均値Fpがインバランス傾向識別値以上であれば、CPUはリーンインバランス傾向ありと判定する。
その後、CPUはステップ3070に進み、評価準備完了フラグXevokの値を「1」に設定する。評価準備完了フラグXevokの値は、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
なお、CPUはステップ1605、ステップ1610、ステップ3010、ステップ3020の何れかのステップにて「No」と判定した場合、以下に述べるステップ3075乃至ステップ3085の処理を実行し、ステップ3095に進む。
ステップ3075:CPUは検出空燃比変化率ΔAF(i)を総て「0」に設定する。
ステップ3080:CPUはカウンタCmの値を「0」に設定する。
ステップ3085:CPUは評価準備完了フラグXevokの値を「0」に設定する。
加えて、CPUは、所定時間が経過する毎に図31にフローチャートにより示したルーチンを実行するようになっている。従って、所定のタイミングになると、CPUは図31のステップ3100から処理を開始してステップ3110に進み、評価準備完了フラグXevokの値が「1」であるか否かを判定する。このとき、評価準備完了フラグXevokの値が「0」であると、CPUはステップ3195に直接進んで本ルーチンを一旦終了する。
一方、評価準備完了フラグXevokの値が「1」であると、CPUはステップ3110からステップ3120に進み、インバランス傾向フラグXkeikoの値が「1」であるか否かを判定する。そして、インバランス傾向フラグXkeikoの値が「1」であれば、CPUはステップ3120からステップ3130に進み、図27のステップ2730の処理により取得された複数の元データΔAF(N,C(N))の中から負の値を有するデータを選択し、それらの絶対値の平均値(それらの平均値の絶対値でもよい。)を、最終的な評価用パラメータΔAFevとして採用する。
その後、CPUはステップ3135に進み、ROMから基準パラメータΔAFstを読み出す。この場合、読み出される基準パラメータは、上記基準空燃比センサを空燃比センサ55に代えて取り付けるとともに上記強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる複数の検出空燃比変化率ΔAFのうちの負の値を有するデータの絶対値の平均値(それらの平均値の絶対値でもよい。)である。その後、CPUは、ステップ1670以降に進み、他の実施形態と同様に空燃比センサ55の適正判定を実行する。
他方、CPUがステップ3120の処理を実行する時点において、インバランス傾向フラグXkeikoの値が「1」でなければ、CPUはステップ3120からステップ3140に進み、インバランス傾向フラグXkeikoの値が「2」であるか否かを判定する。
このとき、評価準備完了フラグXevokの値が「2」であると、CPUはステップ3140からステップ3150に進み、値「N」毎に「元データΔAF(N,C(N))の中から負の値を有するデータ」を選択し、それらの絶対値の平均値AveΔAF(N)を第N気筒の暫定評価用パラメータとして求める。
即ち、CPUは、元データΔAF(1,m)(mは1〜C(1)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(1)として求め、元データΔAF(2,m)(mは1〜C(2)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(2)として求め、元データΔAF(3,m)(mは1〜C(3)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(3)として求め、元データΔAF(4,m)(mは1〜C(4)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(4)として求める。
そして、CPUは、それらの平均値の中の最小値を選択し、その最小値を最終評価用パラメータΔAFevとして採用する。その後、CPUはステップ3135以降に進み、空燃比センサ55の適正判定を実行する。
他方、CPUがステップ3140の処理を実行する時点において、インバランス傾向フラグXkeikoの値が「2」でなければ、CPUはステップ3140からステップ3160に進み、値「N」毎に「元データΔAF(N,C(N))の中から負の値を有するデータ」を選択し、それらの絶対値の平均値AveΔAF(N)を第N気筒の暫定評価用パラメータとして求める。
そして、CPUは、それらの平均値の中の最大値を選択し、その最大値を最終評価用パラメータΔAFevとして採用する。その後、CPUはステップ3135以降に進み、空燃比センサ55の適正判定を実行する。
以上、説明したように、第6判定装置は、強制インバランス状態を発生させていない場合において、インバランス傾向を識別する。そして、そのインバランス傾向の識別結果と、各気筒を強制インバランス気筒に設定した場合に得られた暫定評価用パラメータと、に基づいて、「元々のインバランス気筒の影響を受け難く、空燃比センサ55の出力特性を最も良く表すパラメータ」を最終評価用パラメータΔAFevとして選択する。従って、空燃比センサ適正判定を精度良く行うことができる。その結果、インバランス判定も精度よく実施することができる。
なお、第6判定装置は、第N気筒毎に「元データΔAF(N,C(N))の中の正の値を有するデータ」を選択し、それらの平均値の絶対値Yを暫定評価用パラメータとして第N気筒毎に求め、その暫定評価用パラメータとインバランス傾向とから最終評価用パラメータを求めても良い。
即ち、、CPUは、インバランス傾向がないと判定したとき、複数の元データΔAF(N,C(N))の中から正の値を有するデータを選択し、それらの絶対値の平均値(それらの平均値の絶対値でもよい。)を、最終的な評価用パラメータΔAFevとして採用する。
更に、CPUは、リッチインバランス傾向があると判定したとき、値「N」毎に「元データΔAF(N,C(N))の中から正の値を有するデータ」を選択し、それらの絶対値の平均値AveΔAF(N)を第N気筒の暫定評価用パラメータとして求める。そして、CPUは、それらの平均値の中の最小値を選択し、その最大値を最終評価用パラメータΔAFevとして採用する。
更に、CPUは、リーンインバランス傾向があると判定したとき、値「N」毎に「元データΔAF(N,C(N))の中から正の値を有するデータ」を選択し、それらの絶対値の平均値AveΔAF(N)を第N気筒の暫定評価用パラメータとして求める。そして、CPUは、それらの平均値の中の最大値を選択し、その最小値を最終評価用パラメータΔAFevとして採用する。
なお、第6判定装置のCPUは、リッチインバランス傾向があると判定したとき、又は、リーンインバランス傾向があると判定したとき、には、値「N」毎に「元データΔAF(N,C(N))の中から正及び負の値の何れか一方を有するデータ」を選択するとともに、それらの絶対値の平均値を求め、その中で、最大値と最小値とを除いた値を最終評価用パラメータΔAFevとして採用してもよい。
<第7実施形態>
次に、本発明の第7実施形態に係る空燃比気筒間インバランス判定装置(以下、単に「第7判定装置」と称呼する。)について説明する。
第7判定装置は、空燃比センサ55の出力特性が基準空燃比センサの出力特性に一致するように、空燃比センサ55の出力特性(例えば、出力値Vabyfs、検出空燃比変化率ΔAF、暫定評価用パラメータ及び最終評価用パラメータ等)を補正し、それらに基づいて得られた最終評価用パラメータを使用して空燃比気筒間インバランス判定を実行する。
より具体的に述べると、第7判定装置は、図27のステップ2760を除いたルーチンと、図30のルーチンと、図32(及び図33)のルーチンと、を所定時間の経過毎にそれぞれ実行することにより、空燃比センサ55の適正判定を行うとともに空燃比気筒間インバランス判定を実行する。但し、図27のステップ2730において、CPUは、検出空燃比変化率ΔAFそのものを元データΔAF(N,C(N))として取得する。
図27及び図30のルーチンは説明済みである。よって、以下、図32のルーチンについて説明する。
所定のタイミングになると、CPUは図32のステップ3200から処理を開始してステップ3210に進み、センサ適正判定終了フラグXSOKの値が「1」及び「2」の何れかであるか否かを判定する。即ち、CPUは、空燃比センサ55の出力特性の適否が判定済みであるか否かを判定する。このとき、センサ適正判定終了フラグXSOKの値が「0」であれば、CPUはステップ3210からステップ1818及びステップ1820を経由してステップ3295に直接進んで本ルーチンを一旦終了する。これに対し、センサ適正判定終了フラグXSOKの値が「1」又は「2」であれば、CPUはステップ3210からステップ1804に進む。なお、CPUは、ステップ3210にて、センサ適正判定終了フラグXSOKの値が「1」であるか否かを判定してもよい。この場合、センサ適正判定終了フラグXSOKの値が「2」であると、以下に述べるインバランス判定は実行されない。
CPUはステップ1804にて判定許可フラグXkyokaの値が「1」であるか否かを判定する。このとき、判定許可フラグXkyokaの値が「0」であると、CPUはステップ1804からステップ1818及びステップ1820を経由してステップ3295に直接進んで本ルーチンを一旦終了する。これに対し、判定許可フラグXkyokaの値が「1」であれば、CPUはステップ1804からステップ3220に進む。
CPUはステップ3220にて評価準備完了フラグXevokの値が「1」であるか否かを判定する。このとき、評価準備完了フラグXevokの値が「0」であると、CPUはステップ1804からステップ1818及びステップ1820を経由してステップ3295に直接進んで本ルーチンを一旦終了する。これに対し、評価準備完了フラグXevokの値が「1」であれば、CPUはステップ3220にて「Yes」と判定し、ステップ1806乃至ステップ1812の処理を行う。これにより、今回の検出空燃比abyfsと、前回の検出空燃比abyfsoldが取得され、カウンタCsの値が「1」だけ増大させられる。なお、カウンタCsの値は、上述したイニシャルルーチンにおいて「0」に設定されるようになっている。
次に、CPUはステップ3230に進み、今回の検出空燃比abyfsから前回の検出空燃比abyfsoldを減じることにより、暫定検出空燃比変化率ΔAF0を取得する。その後、CPUはステップ3240に進み、この暫定検出空燃比変化率ΔAF0を補正し、その補正した暫定検出空燃比変化率ΔAF0を検出空燃比変化率ΔAFとして採用する。
より具体的に述べると、CPUはステップ3240に進んだとき、図33に示した検出空燃比変化率ΔAF補正ルーチンを、ステップ3300から実行する。
CPUはステップ3300からステップ3305に進み、インバランス傾向フラグXkeikoの値が「1」であるか否かを判定する。いま、インバランス傾向フラグXkeikoの値が「1」であると仮定すると、CPUは以下に述べるステップ3310乃至ステップ3325の処理を順に行ってステップ3330に進む。
ステップ3310:CPUは、図27のステップ2730の処理により取得された複数の元データΔAF(N,i)の中から負の値を有するデータを選択し、それらの絶対値の平均値(それらの平均値の絶対値でもよい。)を負側パラメータΔAFmとして採用する。
ステップ3315:CPUは、図27のステップ2730の処理により取得された複数の元データΔAF(N,i)の中から正の値を有するデータを選択し、それらの絶対値の平均値(それらの平均値の絶対値でもよい。)を正側パラメータΔAFpとして採用する。
ステップ3320:CPUは、負側基準パラメータΔAFmstと正側基準パラメータΔAFpstとをROMから読み出す。
負側基準パラメータΔAFmstは、上記基準空燃比センサを空燃比センサ55に代えて取り付けるとともに、図27のステップ2725による状態と同じ強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる複数の検出空燃比変化率ΔAFのうちの負の値を有するデータの絶対値の平均値(それらの平均値の絶対値でもよい。)である。
正側基準パラメータΔAFpstは、上記基準空燃比センサを空燃比センサ55に代えて取り付けるとともに、図27のステップ2725による状態と同じ強制インバランス状態を発生させ、そのときの基準空燃比センサの出力値Vabyfsに基づいて得られる複数の検出空燃比変化率ΔAFのうちの正の値を有するデータの平均値(絶対値の平均値、又は平均値の絶対値でもよい。)である。
ステップ3325:CPUは、負側基準パラメータΔAFmstを負側パラメータΔAFmで除することにより負側補正係数km(=ΔAFmst/ΔAFm)を求める。更に、CPUは、正側基準パラメータΔAFpstを正側パラメータΔAFpで除することにより正側補正係数kp(=ΔAFpst/ΔAFp)を求める。即ち、CPUは、暫定評価用パラメータ(ΔAFm、ΔAFp)に対する基準パラメータ(ΔAFmst、ΔAFpst)の比に応じた値を補正量(km、kp)として算出する。
次に、CPUはステップ3330に進み、図32のステップ3230にて得られている暫定検出空燃比変化率ΔAF0が正であるか否か(「0」以上であるか否か)を判定する。そして、暫定検出空燃比変化率ΔAF0が正であれば、CPUはステップ3330からステップ3335に進み、暫定検出空燃比変化率ΔAF0に正側補正係数kpを乗じた値を検出空燃比変化率ΔAF(=kp・ΔAF0)として採用する。
一方、暫定検出空燃比変化率ΔAF0が負であれば、CPUはステップ3330からステップ3340に進み、暫定検出空燃比変化率ΔAF0に負側補正係数kmを乗じた値を検出空燃比変化率ΔAF(=km・ΔAF0)として採用する。そして、CPUはステップ3395を経由して、図32のステップ1816以降に進む。これにより、空燃比センサ55の出力特性の一つである暫定検出空燃比変化率ΔAF0が、基準空燃比センサが示すであろう検出空燃比変化率に接近(又は一致)させられ、その値が検出空燃比変化率ΔAFとして算出される。
図32のステップ1816以降の処理は、図18を参照して説明したステップ1816以降の処理と同じである。従って、CPUは、ステップ3240にて補正された検出空燃比変化率ΔAF(実際には、複数の検出空燃比変化率ΔAFの絶対値の平均値)を用いてインバランス判定を行う。
ところで、CPUが図33のステップ3305の処理を実行する時点において、インバランス傾向フラグXkeikoの値が「2」であるとすると、CPUはステップ3305にて「No」と判定し、インバランス傾向フラグXkeikoの値が「2」であるか否かを判定するステップ3345にて「Yes」と判定する。その後、CPUは以下に述べるステップ3350乃至ステップ3360の処理を順に行ってステップ3320以降へと進む。
ステップ3350:CPUは、値「N」毎に「図27のステップ2730の処理により取得された複数の元データΔAF(N,i)の中から負の値を有するデータ」を選択し、それらの絶対値の平均値AveΔAF(N)を第N気筒の暫定評価用パラメータとして求める。
即ち、CPUは、元データΔAF(1,i)(iは1〜C(1)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(1)として求め、元データΔAF(2,i)(iは1〜C(2)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(2)として求め、元データΔAF(3,i)(iは1〜C(3)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(3)として求め、元データΔAF(4,i)(iは1〜C(4)thの自然数)のうち負の値を有するデータの絶対値の平均値を平均値AveΔAF(4)として求める。
そして、CPUは、求めた平均値AveΔAF(N)のうちの最小値に対応する値Nを値Lとして特定する。即ち、平均値AveΔAF(1)、平均値AveΔAF(2)、平均値AveΔAF(3)及び平均値AveΔAF(4)の中から最小値を選択し、その選択した平均値が平均値AveΔAF(1)であるとすれば値Lを「1」に設定し、その選択した平均値が平均値AveΔAF(2)であるとすれば値Lを「2」に設定し、その選択した平均値が平均値AveΔAF(3)であるとすれば値Lを「3」に設定し、その選択した平均値が平均値AveΔAF(4)であるとすれば値Lを「4」に設定する。
ステップ3355:CPUは、元データΔAF(L,i)の中から負の値を有するデータを選択し、それらの平均値の絶対値(絶対値の平均値でもよい。)を負側パラメータΔAFmとして取得する。
ステップ3360:CPUは、元データΔAF(L,i)の中から正の値を有するデータを選択し、それらの平均値(絶対値の平均値でもよい。)を正側パラメータΔAFpとして取得する。
更に、CPUがステップ3305の処理を実行する時点において、インバランス傾向フラグXkeikoの値が「3」であるとすると、CPUはステップ3305及びステップ3345の両ステップにて「No」と判定して以下に述べるステップ3365の処理を行い、その後、ステップ3355及びステップ3360を経由して3320以降へと進む。
ステップ3365:CPUは、値「N」毎に「図27のステップ2730の処理により取得された複数の元データΔAF(N,i)の中から負の値を有するデータ」を選択し、それらの絶対値の平均値AveΔAF(N)を第N気筒の暫定評価用パラメータとして求める。そして、CPUは、求めた平均値AveΔAF(N)のうちの最大値に対応する値Nを値Lとして特定する
以上、説明したように、第7判定装置は、インバランス判定用パラメータAvefを空燃比センサ55の出力値Vabyfsに基づいて取得するとともに、その取得したインバランス判定用パラメータAvefが所定のインバランス判定用閾値ΔAF1th以上であるか否かの比較結果に基づいて空燃比気筒間インバランス状態が発生しているか否かの判定(インバランス判定)を実行するインバランス判定手段を備える(図32のルーチン、特に、ステップ1836を参照。)。
このインバランス判定手段は、
前記インバランス判定を実行する前に、機関10が備える少なくとも3以上の気筒のうちの一つの気筒に供給される混合気の空燃比が同少なくとも3以上の気筒のうちの他の複数の気筒に供給される混合気の空燃比から乖離した強制インバランス状態が強制的に発生するように複数の燃料噴射弁25から噴射される燃料の量を変更する強制インバランス状態生成手段(図27のステップ2775を参照。)と、
前記強制インバランス状態が発生させられている状態における前記空燃比センサの出力値に基づいて前記空燃比センサの出力特性を表す空燃比センサ評価用パラメータを取得する評価用パラメータ取得手段(図27のステップ2730、図33のステップ3310、ステップ3315、ステップ3350及びステップ3365等を参照。)と、
前記取得された評価用パラメータ(ΔAFm,ΔAFp)を予め定められた基準パラメータ(ΔAFmst、ΔAFpst)に接近させるための補正量(km、kp)を算出する補正量算出手段(図32のステップ3325を参照。)と、
前記空燃比センサの出力値、前記空燃比センサの出力値に基づいて取得される前記インバランス判定用パラメータを求めるために同空燃比センサの出力値に基づいて取得される元データ、及び、前記インバランス判定用パラメータ、のうちの少なくとも一つ(本例においては元データΔAF0)を前記算出した補正量(km、kp)により補正し、同補正したデータに基づいて前記インバランス判定用パラメータAvefを求めるインバランス判定用パラメータ取得手段(図32のステップ3240、図33のステップ3330乃至ステップ3340、図32のステップ1816乃至ステップ1834を参照。)と、
を備える。
これによれば、求められるインバランス判定用パラメータAvefは、空燃比センサ55が基準空燃比センサであるときに得られる値に近づく。従って、インバランス判定をより精度良く実行することができる。
なお、第7判定装置は、図32のステップ1810にて求められる検出空燃比abyfsに、負側補正係数km及び正側補正係数kpの平均値kを乗じることにより、補正後の検出空燃比abyfsを得て、その補正後の検出空燃比abyfsに基づいてステップ1816にて使用される検出空燃比変化率ΔAFの絶対値|ΔAF|を求めてもよい。
更に、第7判定装置は、図32のステップ3240にてΔAF0を補正することなく(但し、負側補正係数km及び正側補正係数kpは求めておく)、ステップ1813にて得られた評価用パラメータAvefに、負側補正係数km及び正側補正係数kpの平均値kを乗じることにより、インバランス判定用パラメータAvefを取得してもよい。
更に、第7判定装置は、強制インバランス状態を発生させた場合における単位燃焼サイクル期間内の検出空燃比abyfsの最大値Maxを求め、強制インバランス状態を発生させていない場合であって空燃比センサ55を基準空燃比センサに置換したときの単位燃焼サイクル期間内の検出空燃比abyfsの最大値Maxst(基準パラメータ)を予め求めておき、最大値Maxstを最大値Maxで除した値を補正量kとして求めてもよい。そして、第7判定装置は、強制インバランス状態を発生させていない場合の単位燃焼サイクル期間内の検出空燃比abyfsの最大値Maxactを求め、その最大値Maxactに補正量kを乗じた値をインバランス判定用パラメータMaxfinalとして求め、そのインバランス判定用パラメータMaxfinalがインバランス判定用閾値Maxth以上であるときに空燃比気筒間インバランス状態が発生したと判定するように構成されてもよい。
同様に、第7判定装置は、強制インバランス状態を発生させた場合における単位燃焼サイクル期間内の検出空燃比abyfsの最小値Minを求め、強制インバランス状態を発生させていない場合であって空燃比センサ55を基準空燃比センサに置換したときの単位燃焼サイクル期間内の検出空燃比abyfsの最小値Minst(基準パラメータ)を予め求めておき、最小値Minstを最小値Minで除した値を補正量kとして求めてもよい。そして、第7判定装置は、強制インバランス状態を発生させていない場合の単位燃焼サイクル期間内の検出空燃比abyfsの最小値Minactを求め、その最小値Minactに補正量kを乗じた値をインバランス判定用パラメータMinfinalとして求め、そのインバランス判定用パラメータMinfinalがインバランス判定用閾値Minth以下であるときに空燃比気筒間インバランス状態が発生したと判定するように構成されてもよい。
なお、このような場合においても、各気筒を順番に強制インバランス気筒に設定して気筒別の最大値Max(N)及び最小値Min(N)を求めるとともに、非強制インバランス状態におけるインバランス傾向を識別し、そのインバランス傾向に基づいて、インバランス気筒の影響を最も受けていない最大値Max(N)及び最小値Min(N)を選択し、それらを基準パラメータである最大値Maxst及び基準パラメータである最小値Minstでそれぞれ除することにより、上記補正量kを算出してもよい。
更に、第7判定装置は、負側補正係数km及び正側補正係数kp等の補正量に応じてインバランス判定用閾値を補正する(これらの補正量の逆数をインバランス判定用閾値に乗じる)ことにより、最終的なインバランス判定用閾値を決定してもよい。
以上、説明したように、本発明の各実施形態に係る空燃比気筒間インバランス判定装置は、空燃比センサ55の出力特性が基準空燃比センサの出力特性と乖離した場合であっても、誤った空燃比気筒間インバランス判定を実行する可能性を低減することができる。
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、インバランス判定用パラメータは、次のようなパラメータとしてもよい。
(P1)インバランス判定用パラメータは、空燃比センサ55の出力値Vabyfs又は検出空燃比abyfsの軌跡長であってもよい。
(P2)インバランス判定用パラメータは、単位燃焼期間サイクルにおいて得られる複数の検出空燃比変化率ΔAFのうちの絶対値の最大値であってもよい。
(P3)インバランス判定用パラメータは、単位燃焼期間サイクルにおいて得られる複数の検出空燃比変化率ΔAFのうちの負の値を有するデータの絶対値の最大値であってもよい。
(P4)インバランス判定用パラメータは、単位燃焼期間サイクルにおいて得られる複数の検出空燃比変化率ΔAFのうちの正の値を有するデータの絶対値の最大値であってもよい。
(P5)インバランス判定用パラメータは、検出空燃比変化率ΔAFの変化率に応じた値(空燃比センサの出力値Vabyfs又は検出空燃比abyfsの時間に関する二階微分値)の絶対値であってもよい。
(P6)インバランス判定用パラメータは、単位燃焼サイクル期間における「空燃比センサの出力値Vabyfs又は検出空燃比abyfsの最大値又は最小値」であってもよい。
更に、空燃比センサ評価用パラメータは、上記インバランス判定用パラメータと同じであってもよい。