(57)【要約】燃料噴射量の目標値Ｑｔｇｔと、所定のＮＯｘ参照濃度に対する排ガスのＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれΔＮＯｘと、の関係に基づいて燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つを判定する内燃機関の制御装置であって、燃料噴射量の目標値Ｑｔｇｔが所定の範囲内にて増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量および燃料噴射量の目標値Ｑｔｇｔが所定の第１の値Ｑｔｇｔ２であるときのＮＯｘ濃度ずれΔＮＯｘを含む第１の判定指標等に基づき、燃料噴射量ずれがゼロ、正および負のいずれであるかを判定する状態判定手段を備えた制御装置。
2011145223.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の運転状態に基づいて該内燃機関の気筒内に噴射される燃料の量である燃料噴射量の目標値を決定する燃料噴射量目標値決定手段と、
前記気筒内に吸入されるガスの酸素濃度である吸気酸素濃度に関連するパラメータである吸気酸素濃度関連パラメータの測定値、推定値または目標値を取得する吸気酸素濃度関連パラメータ取得手段と、
前記吸気酸素濃度関連パラメータに基づいて前記吸気酸素濃度を取得する吸気酸素濃度取得手段と、
前記気筒から排出されるガスの窒素酸化物濃度であるＮＯｘ濃度の測定値または推定値を取得するＮＯｘ濃度取得手段と、
所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれの前記燃料噴射量の目標値が所定の範囲内にて増大したときの変化量および前記燃料噴射量の目標値が所定の第１の値であるときの前記ＮＯｘ濃度ずれを含む第１の判定指標、ならびに、前記吸気酸素濃度が所定の範囲内にて増大したときの前記ＮＯｘ濃度ずれの変化量および前記吸気酸素濃度が所定の第２の値であるときの前記ＮＯｘ濃度ずれを含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段と、
を備えた内燃機関の制御装置。
【請求項２】
内燃機関の運転状態に基づいて該内燃機関の気筒内に噴射される燃料の量である燃料噴射量の目標値を決定する燃料噴射量目標値決定手段と、
前記気筒内に吸入されるガスの酸素濃度である吸気酸素濃度に関連するパラメータである吸気酸素濃度関連パラメータの測定値、推定値または目標値を取得する吸気酸素濃度関連パラメータ取得手段と、
前記吸気酸素濃度関連パラメータに基づいて前記吸気酸素濃度を取得する吸気酸素濃度取得手段と、
前記気筒から排出されるガスの窒素酸化物濃度であるＮＯｘ濃度の測定値または推定値を取得するＮＯｘ濃度取得手段と、
所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれであって前記燃料噴射量の目標値が所定の第１の値であるときのＮＯｘ濃度ずれを含む第１の判定指標、および、前記吸気酸素濃度が所定の第２の値であるときの前記ＮＯｘ濃度ずれを含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段であって、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、のうちの少なくとも一方を前記第１の値として採用すると共に、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、のうちの少なくとも一方を前記第２の値として採用する状態判定手段と、
を備えた内燃機関の制御装置。
【請求項３】
請求の範囲１または請求の範囲２に記載の制御装置であって、
前記燃料噴射量ずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記燃料噴射量の目標値を第１補正量だけ減少するように補正し、
前記燃料噴射量ずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記燃料噴射量の目標値を第２補正量だけ増大するように補正し、
前記吸気酸素濃度関連パラメータずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第３補正量だけ減少するように補正し、
前記吸気酸素濃度関連パラメータずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第４補正量だけ増大するように補正する補正手段、
を備えた内燃機関の制御装置。
【請求項４】
請求の範囲１〜請求の範囲３のいずれか一項に記載の制御装置において、
前記状態判定手段は、
前記第１の判定指標および前記第２の判定指標の双方に基づき、前記燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する、ように構成された内燃機関の制御装置。
【請求項５】
請求の範囲３または請求の範囲４のいずれか一項に記載の制御装置において、
前記補正手段は、
前記ＮＯｘ濃度ずれの大きさに応じて前記第１補正量の大きさ、前記第２補正量の大きさ、前記第３補正量の大きさおよび前記第４補正量の大きさを決定する、ように構成された内燃機関の制御装置。
【請求項６】
請求の範囲３〜請求の範囲５のいずれか一項に記載の制御装置において、
前記補正手段は、
前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記燃料噴射量の目標値を補正することを繰り返し、前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正することを繰り返す、ように構成された内燃機関の制御装置。
【請求項７】
請求の範囲３〜請求の範囲６のいずれか一項に記載の制御装置であって、
前記燃料が正常に噴射されているか否か、および、前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されているか否か、のうちの少なくとも一方を判定する異常判定手段であって、前記第１補正量および前記第２補正量のうちの少なくとも一方が所定の閾値よりも大きいときに前記燃料が正常に噴射されていないと判定し、前記第３補正量および前記第４補正量のうちの少なくとも一方が所定の閾値よりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する異常判定手段、を備えた内燃機関の制御装置。
【請求項８】
請求の範囲６または請求の範囲７に記載の制御装置において、
前記異常判定手段は、
前記燃料噴射量の目標値が補正される毎に前記第１補正量を積算し、
前記燃料噴射量の目標値が補正される毎に前記第２補正量を積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第３補正量を積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第４補正量を積算すると共に、
前記積算された第１補正量の値および前記積算された第２補正量の値のうちの少なくとも一方が所定の閾値よりも大きいときに前記燃料が正常に噴射されていないと判定し、前記積算された第３補正量の値および前記積算された第４補正量の値のうちの少なくとも一方が所定の閾値よりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する、ように構成された内燃機関の制御装置。
【請求項９】
請求の範囲１および請求の範囲３〜請求の範囲８のいずれか一項に記載の制御装置において、
前記状態判定手段は、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、のうちの少なくとも一方を前記第１の値として採用し、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、のうちの少なくとも一方を前記第２の値として採用する、ように構成された内燃機関の制御装置。
【請求項１０】
請求の範囲１〜請求の範囲９のいずれか一項に記載の制御装置において、
前記吸気酸素濃度関連パラメータ取得手段は、
前記内燃機関に吸入される空気の量である吸入空気量を前記吸気酸素濃度関連パラメータのうちの１つとして採用する、ように構成された内燃機関の制御装置。
【請求項１１】
請求の範囲１〜請求の範囲１０のいずれか一項に記載の制御装置において、
前記ＮＯｘ参照濃度は、
前記燃料噴射量と前記吸気酸素濃度とに基づいて前記ＮＯｘ濃度を推定するＮＯｘ濃度推定モデルを利用して定められる、ように構成された内燃機関の制御装置。
【請求項１２】
請求の範囲１〜請求の範囲１１に記載の制御装置において、
前記第１の値および前記第２の値は、
前記ＮＯｘ濃度推定モデルを利用して定められる、ように構成された内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関から排出される窒素酸化物（以下、「ＮＯｘ」とも称呼する。）の量を制御する内燃機関の制御装置に関する。
【背景技術】
【０００２】
火花点火式内燃機関およびディーゼル機関などの内燃機関（特に、ディーゼル機関）から排出されるガスには、ＮＯｘおよび微粒子状物質（以下、「ＰＭ」とも称呼する。）などの有害物質（以下、「エミッション」とも称呼する。）が含まれる。このエミッションの排出量は出来る限り低減されることが望ましい。この排ガスに含まれるＮＯｘ量を低減する方法として、例えば、ＥＧＲ装置によって還流されるガスの量であるＥＧＲガス量を内燃機関の運転状態に応じて制御する方法などが提案されている。
ところが、周知のように、排ガスに含まれるＮＯｘ量と、排ガスに含まれるＰＭ量と、の間には二律背反の関係がある。すなわち、ＮＯｘ量を減少させるように内燃機関が制御されるとＰＭ量が増大し、ＰＭ量を減少させるように内燃機関が制御されるとＮＯｘ量が増大する。そのため、エミッションの排出量を総合的に低減する観点において、ＮＯｘ量およびＰＭ量の双方を考慮して内燃機関が制御されることが望ましい。
具体的に述べると、ＮＯｘ量を出来る限り低減させると共にＰＭ量が増大されることを抑制するためには、ＮＯｘ量が内燃機関の運転状態に応じた所定の目標量に一致するように内燃機関が制御されることが望ましい。例えば、従来の内燃機関の制御装置の一つ（以下、「従来装置」とも称呼する。）は、気筒内に吸入されるガスの酸素濃度である吸気酸素濃度と、気筒内のガスの圧力である気筒内圧力と、気筒内に噴射される燃料の量、および、気筒内に燃料が噴射される時期などの運転パラメータの値を取得する。そして、従来装置は、それら運転パラメータの値を所定のＮＯｘ量推定モデルに適用することにより、排ガスに含まれるＮＯｘ量を推定するようになっている。さらに、この従来装置は、推定されたＮＯｘ量が所定の目標値であるＮＯｘ目標量に一致するように、ＥＧＲガス量などを制御するようになっている（例えば、特開２００２−３７１８９３号公報を参照。）。
【発明の開示】
【０００３】
従来装置は、上述したように、所定の運転パラメータの値に基づいて推定されるＮＯｘ量が所定のＮＯｘ目標量に一致するようにＥＧＲガス量などを制御するようになっている。すなわち、従来装置は、「取得された上記運転パラメータの値がそれら運転パラメータの実際の（現実の）値と一致している」こと（すなわち、取得された上記運転パラメータの値が正常であること）を前提としてＥＧＲガス量などを制御している。しかしながら、上記運転パラメータの値に関与する部材（例えば、各種センサおよび燃料噴射装置など）には、様々な要因による破損および経年劣化などの異常が生じる場合がある。さらに、上記運転パラメータの値に関与する部材は、構成上のばらつき（製造の際に生じる同一種の部材間における寸法および性能などの差）を有する場合もある。以下、便宜上、破損および経年劣化などの異常と、構成上のばらつきと、を単に「異常」と総称する。
上記異常が生じている場合、従来装置が取得した上記運転パラメータの値は正常ではない虞がある。上記運転パラメータの値が正常ではない場合、従来装置は、ＮＯｘ量を適切に制御することができない。さらに、上記運転パラメータの値が正常ではない場合であっても、従来装置は、取得された運転パラメータの値（すなわち、実際の（現実の）運転パラメータの値と異なる値）と、実際の（現実の）運転パラメータの値と、がどのように異なるかを確認することができない。
本発明の目的は、上記課題に鑑み、上記異常が生じた場合であっても、内燃機関の排ガスに含まれるＮＯｘ量に影響を与える運転パラメータの実際の（現実の）値と、その運転パラメータの取得された値と、がどのように異なるかを判定することができる内燃機関の制御装置を提供することにある。
上記課題を達成するための本発明による「第１の内燃機関の制御装置」は、
燃料噴射量目標値決定手段と、吸気酸素濃度関連パラメータ取得手段と、吸気酸素濃度取得手段と、ＮＯｘ濃度取得手段と、状態判定手段と、を備える。以下、これら手段についてより詳細に説明する。
燃料噴射量目標値決定手段は、
前記内燃機関の運転状態に基づき、該内燃機関の気筒内に噴射（供給）される燃料の量である「燃料噴射量」の目標値を決定するようになっている。この内燃機関の運転状態として、燃料噴射量の目標値を決定するために必要な運転パラメータが適宜採用され得る。例えば、機関回転速度およびアクセルペダル開度などが、内燃機関の運転状態として採用され得る。
吸気酸素濃度関連パラメータ取得手段は、
前記気筒内に吸入されるガスの酸素濃度である吸気酸素濃度に関連するパラメータである「吸気酸素濃度関連パラメータ」の測定値、推定値または目標値を取得するようになっている。吸気酸素濃度関連パラメータとして、例えば、内燃機関に吸入される空気の量である吸入空気量、気筒内に噴射される燃料の量である燃料噴射量、機関回転速度、内燃機関の吸気通路内のガスの圧力、内燃機関の排気通路内のガスの圧力、および、気筒内に燃料を噴射する時期である燃料噴射時期などのうちの少なくとも１つが、採用され得る。さらに、排ガスを排気通路から吸気通路へ還流させる排気再循環（ＥＧＲ）が行われている場合、「気筒内に吸入されるガス（すなわち、内燃機関の外部から吸入される空気と、排気再循環によって吸気通路へ還流される排ガス、の混合物）の量」に対する「排気再循環によって吸気通路へ還流される排ガスの量であるＥＧＲガス量」の比であるＥＧＲ率が、吸気酸素濃度関連パラメータとして採用され得る。加えて、吸気通路の所定位置に吸気酸素濃度測定装置（例えば、酸素濃度センサなど）が設けられている場合、その吸気酸素濃度測定装置の出力値が、吸気酸素濃度関連パラメータとして採用され得る。
この「吸気酸素濃度関連パラメータの測定値、推定値または目標値」を取得する方法は、特に限定されない。例えば、所定の吸気酸素濃度関連パラメータを取得するための周知の測定方法、推定方法または目標値の決定方法が、その方法として採用され得る。
吸気酸素濃度取得手段は、
前記吸気酸素濃度関連パラメータに基づき、「前記吸気酸素濃度」を取得するようになっている。この「吸気酸素濃度」を取得する方法は、特に制限されない。例えば、所定の吸気酸素濃度関連パラメータと吸気酸素濃度との関係を表す関係式をあらかじめ定めると共に、その関係式に実際の吸気酸素濃度関連パラメータを適用することによって吸気酸素濃度を算出する方法が、その方法として採用され得る。さらに、例えば、上記吸気酸素濃度測定装置の出力値に基づいて吸気酸素濃度を取得する方法が、その方法として採用され得る。
上記「所定の関係式に実際の吸気酸素濃度関連パラメータを適用することによって吸気酸素濃度を算出する方法」は、特に限定されない。例えば、排気再循環（ＥＧＲ）が行われている場合、ＥＧＲ率と、理論空燃比（≒１４．７）に対する実際の空燃比（実空燃比）の比である空気過剰率と、に基づいて吸気酸素濃度を算出する方法が、その方法として採用され得る。さらに、例えば、内燃機関の外部のガス（空気）の酸素濃度と、吸気通路内のガスの圧力と、に基づいて吸気酸素濃度を算出する方法が、その方法として採用され得る。
ＮＯｘ濃度取得手段は、
前記気筒から排出されるガスの窒素酸化物濃度である「ＮＯｘ濃度」の測定値または推定値を取得するようになっている。この「ＮＯｘ濃度の測定値または推定値」を取得する方法は、特に限定されない。例えば、ＮＯｘ濃度の測定値または推定値を取得する方法として、排気通路の所定位置にＮＯｘ濃度測定装置（例えば、ＮＯｘ濃度センサなど）を設けると共に、そのＮＯｘ濃度測定装置の出力値に基づいてＮＯｘ濃度の「測定値」を取得する方法が、採用され得る。さらに、例えば、あらかじめ実験などによって所定の運転パラメータ（例えば、吸気酸素濃度および燃料噴射量など）とＮＯｘ濃度との関係（例えば、ＮＯｘ濃度マップ）を取得すると共に、実際の運転パラメータをその関係に適用することによってＮＯｘ濃度の「推定値」を取得する方法が、その方法として採用され得る。加えて、例えば、所定の運転パラメータ（例えば、吸気酸素濃度および燃料噴射量など）に基づいてＮＯｘ濃度を推定するＮＯｘ濃度推定モデルに実際の運転パラメータを適用することによってＮＯｘ濃度の「推定値」を取得する方法が、その方法として採用され得る。
状態判定手段は、
「前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれ」が「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
「前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれ」が、「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
上記燃料噴射量ずれは、「燃料噴射量の目標値」を基準としてその「燃料噴射量の目標値」と「燃料噴射量の実際値」との差を表現することができる数値であればよく、特に制限されない。例えば、燃料噴射量ずれとして、「燃料噴射量の実際値から燃料噴射量の目標値を減算して得られる値」を「燃料噴射量の目標値」によって除算して得られる値（すなわち、燃料噴射量の目標値に対する上記減算して得られる値の割合）が、採用され得る。さらに、例えば、「燃料噴射量の実際値から燃料噴射量の目標値を減算して得られる値そのもの」が、燃料噴射量ずれとして採用され得る。
より具体的に述べると、燃料噴射量の目標値よりも燃料噴射量の実際値が大きいとき、燃料噴射量ずれは「正」である。さらに、燃料噴射量の目標値と燃料噴射量の実際値とが一致しているとき、燃料噴射量ずれは「ゼロ」である。加えて、燃料噴射量の目標値よりも燃料噴射量の実際値が小さいとき、燃料噴射量ずれは「負」である。
上記吸気酸素濃度関連パラメータずれは、「吸気酸素濃度関連パラメータの実際値」を基準としてその「吸気酸素濃度関連パラメータの実際値」と「吸気酸素濃度関連パラメータの測定値、推定値または目標値」との差を表現することができる数値であればよく、特に制限されない。例えば、吸気酸素濃度関連パラメータずれとして、「吸気酸素濃度関連パラメータの測定値、推定値または目標値から吸気酸素濃度関連パラメータの実際値を減算して得られる値」を「吸気酸素濃度関連パラメータの実際値」によって除算して得られる値（すなわち、吸気酸素濃度関連パラメータの実際値に対する上記減算して得られる値の割合）が、採用され得る。さらに、例えば、「吸気酸素濃度関連パラメータの測定値、推定値または目標値から吸気酸素濃度関連パラメータの実際値を減算して得られる値そのもの」が、吸気酸素濃度関連パラメータずれとして採用され得る。
より具体的に述べると、吸気酸素濃度関連パラメータの実際値よりも吸気酸素濃度関連パラメータの測定値、推定値または目標値が大きいとき、吸気酸素濃度関連パラメータずれは「正」である。さらに、吸気酸素濃度関連パラメータの実際値と吸気酸素濃度関連パラメータの測定値、推定値または目標値とが一致しているとき、吸気酸素濃度関連パラメータずれは「ゼロ」である。加えて、吸気酸素濃度関連パラメータの実際値よりも吸気酸素濃度関連パラメータの測定値、推定値または目標値が小さいとき、吸気酸素濃度関連パラメータずれは「負」である。
以下、便宜上、「燃料噴射量ずれの大きさがゼロ、正および負のいずれであるか、あるいは、ゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか」を、単に「燃料噴射量ずれの状態」とも称呼する。さらに、以下、便宜上、「吸気酸素濃度関連パラメータずれの大きさがゼロ、正および負のいずれであるか、あるいは、ゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか」を、単に「吸気酸素濃度関連パラメータずれの状態」とも称呼する。
燃料噴射量ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点において燃料噴射量ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。さらに、吸気酸素濃度関連パラメータずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点において吸気酸素濃度関連パラメータずれがゼロであるとみなし得る範囲であればよく、特に制限されない。これら「所定の範囲」は、内燃機関に要求されるエミッション排出量などに基づいて適宜定められ得る。
以下、便宜上、「燃料噴射量ずれがゼロまたは上記所定の範囲内の値であり、かつ、吸気酸素濃度関連パラメータずれがゼロまたは上記所定の範囲内の値である」ことを、「燃料噴射量および吸気酸素濃度関連パラメータは正常である」とも称呼する。これに対し、以下、便宜上、「燃料噴射量ずれがゼロまたは上記所定の範囲内の値であること、および、吸気酸素濃度関連パラメータずれがゼロまたは上記所定の範囲内の値であること、のうちの少なくとも一方が成立しない」ことを、「燃料噴射量および吸気酸素濃度関連パラメータが異常である」とも称呼する。
上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態が判定される際に用いられる判定指標についてより具体的に述べると、状態判定手段は、
（１）「所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれ」の前記燃料噴射量の目標値が所定の範囲内にて増大したときの変化量、および、前記燃料噴射量の目標値が所定の「第１の値」であるときの前記ＮＯｘ濃度ずれ、を含む第１の判定指標、
ならびに、
（２）前記吸気酸素濃度が所定の範囲内にて増大したときの前記ＮＯｘ濃度ずれの変化量、および、前記吸気酸素濃度が所定の「第２の値」であるときの前記ＮＯｘ濃度ずれ、を含む第２の判定指標、
のうちの少なくとも一方に基づき、上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つ、を判定するようになっている。
上記ＮＯｘ濃度ずれは、「ＮＯｘ参照濃度」を基準としてその「ＮＯｘ参照濃度」と「ＮＯｘ濃度の測定値または推定値」との差を表現することができる数値であればよく、特に制限されない。例えば、ＮＯｘ濃度ずれとして、「ＮＯｘ濃度の測定値または推定値からＮＯｘ参照濃度を減算して得られる値」を「ＮＯｘ参照濃度」によって除算して得られる値（すなわち、ＮＯｘ参照濃度に対する上記減算して得られる値の割合）が、採用され得る。さらに、例えば、「ＮＯｘ濃度の測定値または推定値からＮＯｘ参照濃度を減算して得られる値そのもの」が、ＮＯｘ濃度ずれとして採用され得る。
より具体的に述べると、ＮＯｘ参照濃度よりもＮＯｘ濃度の測定値または推定値が大きいとき、ＮＯｘ濃度ずれは「正」である。さらに、ＮＯｘ参照濃度とＮＯｘ濃度の測定値または推定値とが一致しているとき、ＮＯｘ濃度ずれは「ゼロ」である。加えて、ＮＯｘ参照濃度よりもＮＯｘ濃度の測定値または推定値が小さいとき、ＮＯｘ濃度ずれは「負」である。
上記「ＮＯｘ参照濃度」は、「燃料噴射量ずれがゼロまたは上記所定の範囲内の値であり、かつ、吸気酸素濃度関連パラメータずれがゼロまたは上記所定の範囲内の値であるときに取得されるＮＯｘ濃度」に相当する。換言すると、燃料噴射量および吸気酸素濃度関連パラメータが正常であるとき、ＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。
ＮＯｘ濃度ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点においてＮＯｘ濃度ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。この「所定の範囲」は、内燃機関に要求されるエミッション排出量などに基づいて適宜定められ得る。
上記ＮＯｘ参照濃度を定める方法は、特に制限されない。ＮＯｘ参照濃度を定める方法として、例えば、あらかじめ実験などによって「燃料噴射量および吸気酸素濃度関連パラメータが正常であることが確認されている内燃機関における、所定の運転パラメータ（例えば、燃料噴射量および吸気酸素濃度関連パラメータなど）とＮＯｘ濃度との関係」を取得すると共に、実際の運転パラメータをその関係に適用することによって得られるＮＯｘ濃度をＮＯｘ参照濃度として定める方法が、採用され得る。さらに、例えば、所定の運転パラメータ（例えば、燃料噴射量および吸気酸素濃度など）に基づいてＮＯｘ濃度を推定するＮＯｘ濃度推定モデルに実際の運転パラメータを適用することによって得られるＮＯｘ濃度をＮＯｘ参照濃度として定める方法が、その方法として採用され得る。
上記「第１の値」および上記「第２の値」は、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つを判定するために適切な値であればよく、特に制限されない。さらに、燃料噴射量の目標値に係る上記「所定の範囲」、および、吸気酸素濃度に係る上記「所定の範囲」は、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つを判定するために適切な範囲であればよく、特に制限されない。
上記「第１の判定指標」は、燃料噴射量の目標値が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第１の判定指標」は、燃料噴射量の目標値が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ、ならびに、それら「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
上記「第２の判定指標」は、吸気酸素濃度が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第２の判定指標」は、吸気酸素濃度が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ、ならびに、それら「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
以下、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態を判定する具体的な方法について述べる前に、内燃機関の運転パラメータと排ガスのＮＯｘ濃度との関係について説明する。
周知の燃焼モデル（サーマルＮＯｘ生成機構）の１つである拡大ゼルドヴィッチ機構によれば、燃焼過程において生成される窒素酸化物の濃度は、燃焼に供されるガスの窒素濃度および酸素濃度、ならびに、燃焼時の火炎温度の影響を受ける。発明者は、この拡大ゼルドヴィッチ機構をさらに詳細に検討した。発明者による種々の考察および種々の実験などによれば、内燃機関の排ガスに含まれるＮＯｘ量（すなわち、上記ＮＯｘ濃度）と、内燃機関の気筒内に噴射（供給）される燃料の量（すなわち、上記燃料噴射量）と、その気筒内に吸入されるガスの酸素濃度（すなわち、上記吸気酸素濃度）と、の間に強い相関があることが確認された。さらに、発明者による上記考察および上記実験などによれば、「燃料噴射量とＮＯｘ濃度との相関の程度」と、「吸気酸素濃度とＮＯｘ濃度との相関の程度」と、が異なることが確認された。なお、この吸気酸素濃度は、上述したように、吸気酸素濃度関連パラメータに基づいて定められる値である。
したがって、「燃料噴射量ずれ」が生じた場合のＮＯｘ濃度ずれの程度と、「吸気酸素濃度関連パラメータずれ」が生じた場合のＮＯｘ濃度ずれの程度と、は異なる。さらに、燃料噴射量の目標値が所定の値であるときに「燃料噴射量ずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、燃料噴射量の目標値がその所定の値であるときに「吸気酸素濃度関連パラメータずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、は異なる。加えて、吸気酸素濃度が所定の値であるときに「燃料噴射量ずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、吸気酸素濃度がその所定の値であるときに「吸気酸素濃度関連パラメータずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、は異なる。
さらに、上述したように、ＮＯｘ濃度ずれは、燃料噴射量および吸気酸素濃度関連パラメータが正常であるとき（すなわち、燃料噴射量ずれがゼロまたはゼロを含む所定の範囲内の値であり、かつ、吸気酸素濃度関連パラメータずれがゼロまたはゼロを含む所定の範囲内の値であるとき）ゼロまたはゼロを含む所定の範囲内の値となるように定められている。そのため、燃料噴射量ずれの大きさに応じてＮＯｘ濃度ずれは変化し、吸気酸素濃度関連パラメータずれの大きさに応じてＮＯｘ濃度ずれは変化する。
このように、ＮＯｘ濃度と、燃料噴射量と、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれ、吸気酸素濃度関連パラメータずれと、の間には所定の相関がある。そこで、状態判定手段は、上記「第１の判定指標（すなわち、燃料噴射量とＮＯｘ濃度ずれとの関係）」および上記「第２の判定指標（すなわち、吸気酸素濃度とＮＯｘ濃度ずれとの関係）」を利用し、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態を判定するようになっている。
すなわち、状態判定手段は、
上記第１の判定指標および上記第２の判定指標のうちの少なくとも一方に基づき、
（Ａ）前記燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｂ）前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
（Ｃ）前記吸気酸素濃度関連パラメータずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｄ）前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
このように、本発明の第１の内燃機関の制御装置は、ＮＯｘ濃度ずれを利用して「燃料噴射量ずれの状態」および「吸気酸素濃度関連パラメータずれの状態」のうちの少なくとも一方を判定することができる。すなわち、本発明の第１の内燃機関の制御装置は、ＮＯｘ濃度ずれが生じているとき、燃料噴射量および吸気酸素濃度関連パラメータの実際の値と、それらの取得された値と、がどのように異なるかを判定することができる。
なお、状態判定手段によって燃料噴射量ずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、燃料噴射量に関与する部材が正常であると判定することもできる。さらに、状態判定手段によって吸気酸素濃度関連パラメータずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、吸気酸素濃度関連パラメータに関与する部材が正常であると判定することもできる。
さらに、上記課題を達成するための本発明による「第２の内燃機関の制御装置」は、
燃料噴射量目標値決定手段と、吸気酸素濃度関連パラメータ取得手段と、吸気酸素濃度取得手段と、ＮＯｘ濃度取得手段と、状態判定手段と、を備える。以下、これら手段についてより詳細に説明する。
燃料噴射量目標値決定手段、吸気酸素濃度関連パラメータ取得手段、吸気酸素濃度取得手段は、および、ＮＯｘ濃度取得手段は、それぞれ、「第１の内燃機関の制御装置」の燃料噴射量目標値決定手段、吸気酸素濃度関連パラメータ取得手段、吸気酸素濃度取得手段は、および、ＮＯｘ濃度取得手段と同じである。
状態判定手段は、
「前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれ」が「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
「前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれ」が、「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
上記燃料噴射量ずれ、および、上記吸気酸素濃度関連パラメータずれは、それぞれ、「第１の内燃機関の制御装置」に関連して説明した燃料噴射量ずれ、および、吸気酸素濃度関連パラメータずれと同じである。
以下、便宜上、「第１の内燃機関の制御装置」に関連して説明した「燃料噴射量ずれの状態」、「吸気酸素濃度関連パラメータずれの状態」、「燃料噴射量および吸気酸素濃度関連パラメータは正常である」、および、「燃料噴射量および吸気酸素濃度関連パラメータが異常である」と同じ意味で、「燃料噴射量ずれの状態」、「吸気酸素濃度関連パラメータずれの状態」「燃料噴射量および吸気酸素濃度関連パラメータは正常である」、および、「燃料噴射量および吸気酸素濃度関連パラメータが異常である」を使用する。
上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態が判定される際に用いられる判定指標についてより具体的に述べると、状態判定手段は、
（１）「所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれ」であって前記燃料噴射量の目標値が所定の「第１の値」であるときのＮＯｘ濃度ずれを含む第１の判定指標、
および、
（２）前記吸気酸素濃度が所定の「第２の値」であるときの前記ＮＯｘ濃度ずれを含む第２の判定指標、
のうちの少なくとも一方に基づき、上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つ、を判定するようになっている。
上記「ＮＯｘ濃度ずれ」は、上記「ＮＯｘ参照濃度」、および、ＮＯｘ濃度ずれに係る上記「所定の範囲」は、それぞれ、「第１の内燃機関の制御装置」に関連して説明した「ＮＯｘ濃度ずれ」、「ＮＯｘ参照濃度」、および、ＮＯｘ濃度ずれに係る「所定の範囲」と同じである。
上記ＮＯｘ参照濃度を定める方法は、特に制限されず、「第１の内燃機関の制御装置」に関連して説明した「ＮＯｘ参照濃度を定める方法」と同様である。
上記「第１の判定指標」は、燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第１の判定指標」は、燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ、および、それ「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
上記「第２の判定指標」は、吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第２の判定指標」は、吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ、および、それ「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
なお、「第２の内燃機関の制御装置」に関する内燃機関の運転パラメータと排ガスのＮＯｘ濃度との関係は、「第１の内燃機関の制御装置」に関する内燃機関の運転パラメータと排ガスのＮＯｘ濃度との関係と同じである。
したがって、ＮＯｘ濃度と、燃料噴射量と、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれ、吸気酸素濃度関連パラメータずれと、の間には所定の相関がある。そこで、状態判定手段は、上記「第１の判定指標（すなわち、燃料噴射量とＮＯｘ濃度ずれとの関係）」および上記「第２の判定指標（すなわち、吸気酸素濃度とＮＯｘ濃度ずれとの関係）」を利用し、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態を判定するようになっている。
すなわち、状態判定手段は、
上記第１の判定指標および上記第２の判定指標のうちの少なくとも一方に基づき、
（Ａ）前記燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｂ）前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
（Ｃ）前記吸気酸素濃度関連パラメータずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｄ）前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
ここで、状態判定手段は、上記判定を行う際に利用する「第１の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、
のうちの少なくとも一方、を採用するようになっている。
上述したように、「第１の値」は、燃料噴射量の目標値に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値（すなわち、燃料噴射量の目標値）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
一方、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
さらに、状態判定手段は、上記判定を行う際に利用する「第２の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、
のうちの少なくとも一方、を採用するようになっている。
上述したように、「第２の値」は、吸気酸素濃度に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値（すなわち、吸気酸素濃度）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
一方、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
なお、上述したように、ＮＯｘ濃度ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点においてＮＯｘ濃度ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。
このように、本発明の第２の内燃機関の制御装置は、ＮＯｘ濃度ずれを利用して「燃料噴射量ずれの状態」および「吸気酸素濃度関連パラメータずれの状態」のうちの少なくとも一方を判定することができる。すなわち、本発明の第２の内燃機関の制御装置は、ＮＯｘ濃度ずれが生じているとき、燃料噴射量および吸気酸素濃度関連パラメータの実際の値と、それらの取得された値と、がどのように異なるかを判定することができる。
なお、状態判定手段によって燃料噴射量ずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、燃料噴射量に関与する部材に異常が生じていないと判定することもできる。さらに、状態判定手段によって吸気酸素濃度関連パラメータずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、吸気酸素濃度関連パラメータに関与する部材が正常であると判定することもできる。
以下、便宜上、「本発明の第１の内燃機関の制御装置」および「本発明の第２の内燃機関の制御装置」を、単に「本発明の内燃機関の制御装置」と総称する。
本発明の内燃機関の制御装置の第１の態様として、
制御装置は、補正手段を備えるように構成され得る。
この補正手段は、
（１）前記燃料噴射量ずれが「正」または「前記所定の範囲内の最大値よりも大きい値」であると判定されていれば前記燃料噴射量の目標値を「第１補正量だけ減少する」ように補正し、
（２）前記燃料噴射量ずれが「負」または「前記所定の範囲内の最小値よりも小さい値」であると判定されていれば前記燃料噴射量の目標値を「第２補正量だけ増大する」ように補正し、
（３）前記吸気酸素濃度関連パラメータずれが「正」または「前記所定の範囲内の最大値よりも大きい値」であると判定されていれば「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第３補正量だけ減少する」ように補正し、
（４）前記吸気酸素濃度関連パラメータずれが「負」または「前記所定の範囲内の最小値よりも小さい値である」と判定されていれば「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第４補正量だけ増大する」ように補正する、
ように構成され得る。
上述したように、本発明の内燃機関の制御装置は、ＮＯｘ濃度ずれが生じているとき、燃料噴射量および吸気酸素濃度関連パラメータの実際の値と、それらの取得された値と、がどのように異なるか（すなわち、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態）を判定することができる。
そこで、本態様における補正手段は、判定された燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態に応じて燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正する。これにより、「燃料噴射量ずれ」の大きさおよび「吸気酸素濃度関連パラメータずれ」の大きさが低減される。その結果、「ＮＯｘ濃度ずれ」の大きさが低減される。
本発明の内燃機関の制御装置の第２の態様として、
前記状態判定手段は、
前記第１の判定指標および前記第２の判定指標の「双方」に基づき、前記燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する、ように構成され得る。
本態様における状態判定手段は、第１の判定指標および第２の判定指標の「双方」に基づいて燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも一方を判定する。したがって、本態様における状態判定手段は、第１の判定指標および第２の判定指標の「一方」に基づいてそれら状態を判定する場合に比べ、より正確にそれら状態を判定することができる。
本発明の内燃機関の制御装置の第３の態様として、
前記補正手段は、
「前記ＮＯｘ濃度ずれの大きさ」に応じて前記第１補正量の大きさ、前記第２補正量の大きさ、前記第３補正量の大きさおよび前記第４補正量の大きさを決定する、
ように構成され得る。
上述したように、上記「第１の態様」における補正手段は、ＮＯｘ濃度ずれの大きさに応じて燃料噴射量の目標値を所定の補正量（第１補正量または第２補正量）だけ補正するようになっている。さらに、この補正手段は、ＮＯｘ濃度ずれの大きさに応じて吸気酸素濃度関連パラメータの測定値、推定値または目標値を所定の補正量（第３補正量または第４補正量）だけ補正するようになっている。
上述したように、ＮＯｘ濃度と燃料噴射量と吸気酸素濃度との間には強い相関がある。そのため、ＮＯｘ濃度ずれの大きさと、燃料噴射量ずれの大きさと、吸気酸素濃度関連パラメータずれの大きさと、の間にも相関があると考えられる。そこで、上記「第３の態様」における補正手段は、上記補正量の大きさをＮＯｘ濃度ずれの大きさに応じて決定するようになっている。これにより、本態様における補正手段は、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれのうちの少なくとも一方が生じた場合、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値をより適切に補正することができる。これにより、「燃料噴射量ずれ」の大きさおよび「吸気酸素濃度関連パラメータずれ」の大きさがより適切に低減される。その結果、「ＮＯｘ濃度ずれ」の大きさがより適切に低減される。
本発明の内燃機関の制御装置の第４の態様として、
前記補正手段は、
（１）前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記燃料噴射量の目標値を補正することを繰り返し、
（２）前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正することを繰り返す、
ように構成され得る。
上述したように、上記「第１の態様」および上記「第３の態様」における補正手段は、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正するようになっている。
さらに、上記「第４の態様」における補正手段は、この補正を繰り返し実行するようになっている。これにより、本態様における補正手段は、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれのうちの少なくとも一方が生じた場合、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれを実質的にゼロ（ゼロまたは上記所定の範囲内の値）にまで低減することができる。その結果、「ＮＯｘ濃度ずれ」の大きさが実質的にゼロ（ゼロまたは所定の範囲内の値）にまで低減される。
本発明の内燃機関の制御装置の第５の態様として、
制御装置は、異常判定手段を備えるように構成され得る。
この異常判定手段は、
「前記燃料が正常に噴射されているか否か」および「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されているか否か」のうちの少なくとも一方を判定する異常判定手段であって、
前記第１補正量および前記第２補正量のうちの少なくとも一方が所定の閾値よりも大きいときに「前記燃料が正常に噴射されていない」と判定し、前記第３補正量および前記第４補正量のうちの少なくとも一方が所定の閾値よりも大きいときに「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていない」と判定する、
ように構成され得る。
以下、便宜上、「前記燃料が正常に噴射されていない」ことを「燃料噴射量が異常である」とも称呼する。さらに、以下、便宜上、「吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていない」ことを「吸気酸素濃度関連パラメータが異常である」とも称呼する。
上述したように、上記第１の態様、上記第３の態様および上記第４の態様における補正手段は、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれのうちの少なくとも一方が生じた場合、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を所定の補正量だけ補正するようになっている。
さらに、上記「第５の態様」における異常判定手段は、これら補正量の大きさに基づき、燃料噴射量が異常であるか否か、および、吸気酸素濃度関連パラメータが異常であるか否か、を判定するようになっている。これにより、例えば、本発明の内燃機関の制御装置は、燃料噴射量が異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。さらに、例えば、本発明の内燃機関の制御装置は、吸気酸素濃度関連パラメータが異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。
第１補正量および第２補正量に係る上記「所定の閾値」は、第１補正量および第２補正量の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。さらに、第３補正量および第４補正量に係る上記「所定の閾値」は、第３補正量および第４補正量の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。
本発明の内燃機関の制御装置の第６の態様において、
前記異常判定手段は、
前記燃料噴射量の目標値が補正される毎に前記第１補正量を「積算」し、
前記燃料噴射量の目標値が補正される毎に前記第２補正量を「積算」し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第３補正量を「積算」し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第４補正量を「積算」すると共に、
「前記積算された第１補正量の値」および「前記積算された第２補正量の値」のうちの少なくとも一方が所定の閾値よりも大きいときに前記燃料が正常に噴射されていないと判定し、「前記積算された第３補正量の値」および「前記積算された第４補正量の値」のうちの少なくとも一方が所定の閾値よりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する、
ように構成され得る。
上述したように、上記「第４の態様」における補正手段は、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正することを繰り返すようになっている。
そこで、上記「第６の態様」における異常判定手段は、上記補正が行われる毎にその補正に用いられる補正量を積算すると共に、その積算された補正量の値に基づいて燃料噴射量が異常であるか否か、および、吸気酸素濃度関連パラメータが異常であるか否か、を判定するようになっている。これにより、上記同様、例えば、本発明の内燃機関の制御装置は、燃料噴射量が異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。さらに、例えば、本発明の内燃機関の制御装置は、吸気酸素濃度関連パラメータが異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。
積算された第１補正量の値および積算された第２補正量の値に係る上記「所定の閾値」は、積算された第１補正量の値および積算された第２補正量の値の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。さらに、積算された第３補正量の値および積算された第４補正量の値に係る上記「所定の閾値」は、積算された第３補正量の値および積算された第４補正量の値の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。
本発明の内燃機関の制御装置の第７の態様において、
前記状態判定手段は、「前記第１の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、のうちの少なくとも一方、を採用するように構成され得る。
上述したように、「第１の値」は、燃料噴射量の目標値に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値（すなわち、燃料噴射量の目標値）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
一方、上述したように、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
さらに、第７の態様における前記状態判定手段は、「前記第２の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、のうちの少なくとも一方、を採用するように構成され得る。
上述したように、「第２の値」は、吸気酸素濃度に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値（すなわち、吸気酸素濃度）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
一方、上述したように、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
なお、上述したように、ＮＯｘ濃度ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点においてＮＯｘ濃度ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。
本発明の内燃機関の制御装置の第８の態様として、
前記吸気酸素濃度関連パラメータ取得手段は、
前記内燃機関に吸入される空気の量である「吸入空気量」を前記吸気酸素濃度関連パラメータのうちの１つとして採用する、
ように構成され得る。
上記吸入空気量は、吸気酸素濃度に関連する代表的なパラメータの１つである。なお、吸気酸素濃度関連パラメータとして「吸入空気量」が採用されるとき、吸気酸素濃度関連パラメータ取得手段は「吸入空気量の測定値または推定値」を取得するように構成され得る。
この「吸入空気量の測定値または推定値」を取得する方法は、特に制限されない。吸入空気量の測定値または推定値を取得する方法として、例えば、吸気通路の所定位置に吸入空気量測定装置（例えば、熱線式エアフローメータおよびフラップ式エアフローメータなど）を設けると共に、その吸入空気量測定装置の出力値に基づいて吸入空気量の「測定値」を取得する方法が、採用され得る。さらに、例えば、機関回転速度、吸気通路内のガスの圧力、機関回転速度、および、スロットル弁の開度などの運転パラメータのうちの一または複数の運転パラメータに基づいて吸入空気量の「推定値」を取得する方法が、この方法として採用され得る。
本発明の内燃機関の制御装置の第９の態様において、
制御装置は、前記ＮＯｘ参照濃度を、
前記燃料噴射量と、前記吸気酸素濃度と、に基づいて前記ＮＯｘ濃度を推定する「ＮＯｘ濃度推定モデル」を利用して定める、
ように構成され得る。
上述したように、発明者による種々の考察および種々の実験などによれば、ＮＯｘ濃度と燃料噴射量と吸気酸素濃度との間に強い相関があることが確認されている。したがって、この相関に基づき、上記ＮＯｘ濃度推定モデルが定められ得る。さらに、上述したように、ＮＯｘ参照濃度は、燃料噴射量および吸気酸素濃度関連パラメータが正常であるときに取得されるＮＯｘ濃度に相当する。そこで、上記「第９の態様」におけるＮＯｘ参照濃度は、上記ＮＯｘ濃度推定モデルを利用して定められるようになっている。これにより、例えば「実験などによってあらかじめ取得した所定の運転パラメータとＮＯｘ濃度との関係」を利用してＮＯｘ参照濃度を取得することに比べ、より簡便にＮＯｘ参照濃度を取得することができる。
本発明の内燃機関の制御装置の第１０の態様において、
制御装置は、前記「第１の値」および前記「第２の値」を前記ＮＯｘ濃度推定モデルに基づいて定める、ように構成され得る。
上述したように、本発明の内燃機関の制御装置（第１の内燃機関の制御装置および第２の内燃機関の制御装置の双方）は、「燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ」および「吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ」のうちの少なくとも一方を利用し、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも一方を判定するようになっている。この第１の値および第２の値は、この判定を行うために出来る限り適切な値であることが望ましい。
上記ＮＯｘ濃度推定モデルは、上述したように、燃料噴射量と吸気酸素濃度とＮＯｘ濃度との関係を表すモデルである。そこで、このＮＯｘ濃度推定モデルを利用することにより、「上記判定を行うために出来る限り適切な値である第１の値および第２の値」が容易に定められ得る。
例えば、「上記判定を行うために出来る限り適切な値」として、上記「第７の態様」において採用されている第１の値および第２の値が挙げられる。上述したように、この第１の値は所定の複数の要件が満たされるときの燃料噴射量であり、この第２の値は所定の複数の要件が満たされるときの吸気酸素濃度関連パラメータである。一般に、このように複数の要件が満たされるときの燃料噴射量および吸気酸素濃度関連パラメータを特定することは困難である。しかし、上記ＮＯｘ濃度推定モデルを利用すれば、このような第１の値および第２の値であっても比較的容易に定められ得る。
【図面の簡単な説明】
【０００４】
図１は、本発明の第１実施形態に係る制御装置が適用される内燃機関の概略図である。
図２は、図１の内燃機関における、燃料噴射量の目標値と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図３は、図１の内燃機関における、燃料噴射量の目標値と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図４は、図１の内燃機関における、燃料噴射量の目標値と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図５は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図６は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図７は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図８は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図９は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１０は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１１は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１２は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１３は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１４は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１５は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１６は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１７は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１８は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１９は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２０は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２１は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２２は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２３は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２４は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための最良の形態】
【０００５】
以下、本発明による内燃機関の制御装置の各実施形態について、図面を参照しながら説明する。
（第１実施形態）
＜装置の概要＞
図１は、本発明の第１の実施形態に係る制御装置（以下、「第１装置」とも称呼する。）を内燃機関１０に適用したシステムの概略構成を示している。内燃機関１０は、第１気筒〜第４気筒の４つの気筒を有する４気筒ディーゼル機関である。以下、便宜上、「内燃機関」を単に「機関」とも称呼する。
この機関１０は、図１に示すように、燃料噴射（供給）系統を含むエンジン本体２０、エンジン本体２０に空気を導入するための吸気系統３０、エンジン本体２０から排出されるガスを機関１０の外部に放出するための排気系統４０、排ガスを排気系統４０から吸気系統３０に還流させるためのＥＧＲ装置５０、および、排ガスのエネルギによって駆動されてエンジン本体２０に導入される空気を圧縮する過給装置６０、を備えている。
エンジン本体２０は、吸気系統３０および排気系統４０が連結されたシリンダヘッド２１を有している。このシリンダヘッド２１は、各気筒に対応するように各気筒の上部に設けられた複数の燃料噴射装置２２を有している。各燃料噴射装置２２は、図示しない燃料タンクと接続されており、電気制御装置８０からの指示信号に応じて各気筒の燃焼室内に燃料を噴射するようになっている。
吸気系統３０は、シリンダヘッド２１に形成された図示しない吸気ポートを介して各気筒に連通されたインテークマニホールド３１、インテークマニホールド３１の上流側の集合部に接続された吸気管３２、吸気管３２内の開口断面積を可変とするスロットル弁（吸気絞り弁）３３、電気制御装置８０からの指示信号に応じてスロットル弁３３を回転駆動するスロットル弁アクチュエータ３３ａ、スロットル弁３３の上流側において吸気管３２に設けられたインタークーラ３４、および、インタークーラ３４の上流側に設けられた過給装置６０よりも上流側の吸気管３２の端部に設けられたエアクリーナ３５、を有している。インテークマニホールド３１および吸気管３２は、吸気通路を構成している。
排気系統４０は、シリンダヘッド２１に形成された図示しない排気ポートを介して各気筒に連通されたエキゾーストマニホールド４１、エキゾーストマニホールド４１の下流側の集合部に接続された排気管４２、および、排気管４２に設けられた過給装置６０よりも下流側の排気管４２に設けられた排ガス浄化用触媒（ＤＰＮＲ）４３、を有している。エキゾーストマニホールド４１および排気管４２は、排気通路を構成している。
ＥＧＲ装置５０は、排ガスをエキゾーストマニホールド４１からインテークマニホールド３１へと還流させる通路（ＥＧＲ通路）を構成する排気還流管５１、排気還流管５１に介装されたＥＧＲガス冷却装置（ＥＧＲクーラ）５２、および、排気還流管５１に介装されたＥＧＲ制御弁５３、を有している。ＥＧＲ制御弁５３は、電気制御装置８０からの指示信号に応じて還流される排ガス量（ＥＧＲガス量）を変更し得るようになっている。
過給装置６０は、コンプレッサ６１およびタービン６２を有している。コンプレッサ６１は吸気通路（吸気管３２）に設けられている。タービン６２は排気通路（排気管４２）に設けられている。コンプレッサ６１とタービン６２とは、図示しないローターシャフトによって同軸回転可能に連結されている。これにより、タービン６２が排ガスによって回転せしめられると、コンプレッサ６１が回転すると共にコンプレッサ６１に供給される空気が圧縮される（過給が行われる）。
この第１装置は、吸入空気量センサ７１、吸気温度センサ７２、吸気圧センサ７３、クランクポジションセンサ７４、ＮＯｘ濃度センサ７５、および、アクセル開度センサ７６、を備えている。吸入空気量センサ７１として、例えば、熱線式エアフローメータが採用され得る。
吸入空気量センサ７１は、吸気通路（吸気管３２）に設けられている。吸入空気量センサ７１は、吸気管３２内を流れると共に機関１０に吸入される空気の質量流量である吸入空気量（すなわち、機関１０に吸入される空気の質量）に応じた信号を出力するようになっている。この信号に基づき、吸入空気量の測定値Ｇａｍｓｒが取得される。
吸気温度センサ７２は、吸気通路（吸気管３２）に設けられている。吸気温度センサ７２は、吸気管３２内を流れると共に機関１０に吸入される空気の温度である吸気温度に応じた信号を出力するようになっている。この信号に基づき、吸気温度が取得される。
吸気圧センサ７３は、スロットル弁３３の下流側において吸気管３２に設けられている。吸気圧センサ７３は、それが設けられている部位における吸気管３２内の空気の圧力（すなわち、機関１０の燃焼室に供給される空気の圧力。換言すると、過給装置６０によってもたらされる過給圧）を表す信号を出力するようになっている。この信号に基づき、過給圧の測定値（以下、単に「過給圧Ｐｉｍ」とも称呼する。）が取得される。
クランクポジションセンサ７４は、図示しないクランクシャフトの近傍に設けられている。クランクポジションセンサ７４は、クランクシャフトが１０°回転する毎に幅の狭いパルスを有する信号を出力すると共に、クランクシャフトが３６０°回転する毎に幅の広いパルスを有する信号を出力するようになっている。これら信号に基づき、クランクシャフトの単位時間あたりの回転数の測定値（以下、単に「機関回転速度ＮＥ」とも称呼される。）が取得される。
ＮＯｘ濃度センサ７５は、排ガス浄化用触媒（ＤＰＮＲ）４３よりも上流側において排気通路（排気管４２）に設けられている。ＮＯｘ濃度センサ７５は、排気管４２を通過する排ガスのＮＯｘ濃度（質量濃度）に応じた信号を出力するようになっている。この信号に基づき、排ガスのＮＯｘ濃度の測定値ＮＯｘｍｓｒが取得される。
アクセル開度センサ７６は、機関１０の操作者によって操作されるアクセルペダルＡＰに設けられている。アクセル開度センサ７５は、このアクセルペダルＡＰの開度に応じた信号を出力するようになっている。この信号に基づき、アクセルペダル開度の測定値（以下、単に「アクセルペダル開度Ａｃｃｐ」とも称呼する。）が取得される。
電気制御装置８０は、ＣＰＵ８１、ＣＰＵ８１が実行するプログラム、テーブル（マップ）および定数などをあらかじめ記憶したＲＯＭ８２、ＣＰＵ８１が必要に応じて一時的にデータを格納するＲＡＭ８３、電源が投入された状態でデータを格納すると共に格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ８４、ならびに、ＡＤコンバータを含むインターフェース８５、などを有する。ＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３、ＲＡＭ８４およびインターフェース８５は、互いにバスで接続されている。
インターフェース８５は、上記各センサなどと接続され、ＣＰＵ８１に上記各センサなどから出力される信号を供給するようになっている。さらに、インターフェース８５は、ＣＰＵ８１の指示に応じて、燃料噴射装置２２、スロットル弁アクチュエータ３３ａ、および、ＥＧＲ制御弁５３などに駆動信号（指示信号）を送出するようになっている。
＜装置の作動の概要＞
以下、上述したように構成された第１装置の作動の概要について説明する。
まず、第１装置は、上記各センサから出力される信号に基づき、所定の運転パラメータ（吸入空気量の測定値Ｇａｍｓｒ、過給圧Ｐｉｍ、機関回転速度ＮＥ、および、排ガスのＮＯｘ濃度の測定値ＮＯｘｍｓｒ）を取得する。さらに、第１装置は、所定の運転パラメータに基づいて定まるＥＧＲ率の目標値Ｒｅｇｒｔｇｔと、その実際値Ｒｅｇｒａｃｔと、が一致するように、スロットル弁３３およびＥＧＲ制御弁５３を制御する。加えて、第１装置は、所定の運転パラメータに基づき、「燃料噴射量の目標値Ｑｔｇｔ」を決定する。
次いで、第１装置は、吸入空気量の測定値Ｇａｍｓｒ、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔおよび燃料噴射量の目標値Ｑｔｇｔに基づき、気筒内に吸入されるガスの酸素濃度である吸気酸素濃度Ｏｃｏｎを取得（算出）する。
一方、第１装置は、あらかじめ実験などによって「機関１０と同一の構成を備える機関であって、燃料噴射量の目標値Ｑｔｇｔとその実際値Ｑａｃｔとが一致しており且つ吸入空気量の測定値Ｇａｍｓｒとその実際値Ｇａａｃｔとが一致していることが確認されている機関における、燃料噴射量の目標値Ｑｔｇｔと吸気酸素濃度ＯｃｏｎとＮＯｘ濃度との関係ＭａｐＮＯｘｒｅｆ（Ｑｔｇｔ，Ｏｃｏｎ）」を取得している。第１装置は、この関係ＭａｐＮＯｘｒｅｆ（Ｑｔｇｔ，Ｏｃｏｎ）に実際の燃料噴射量の目標値Ｑｔｇｔおよび吸気酸素濃度Ｏｃｏｎを適用することにより、ＮＯｘ参照濃度ＮＯｘｒｅｆを取得する。
以下、便宜上、「燃料噴射量の目標値Ｑｔｇｔとその実際値Ｑａｃｔとが一致しており且つ吸入空気量の測定値Ｇａｍｓｒとその実際値Ｇａａｃｔとが一致している」ことを、「燃料噴射量および吸入空気量が正常である」とも称呼する。
そして、第１装置は、「ＮＯｘ濃度の測定値ＮＯｘｍｓｒからＮＯｘ参照濃度ＮＯｘｒｅｆを減算して得られる値（ＮＯｘｍｓｒ−ＮＯｘｒｅｆ）」を「ＮＯｘ参照濃度ＮＯｘｒｅｆ」によって除算して得られる値（すなわち、ＮＯｘ参照濃度ＮＯｘｒｅｆに対する上記減算して得られる値ＮＯｘｍｓｒ−ＮＯｘｒｅｆの割合）を、「ＮＯｘ濃度ずれΔＮＯｘ」として取得する。
第１装置は、機関１０が運転されている期間中、燃料噴射量の目標値Ｑｔｇｔと、ＮＯｘ濃度ずれΔＮＯｘと、を対応させながら取得し続ける。そして、第１装置は、取得されたこれら値に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。以下、便宜上、「燃料噴射量ずれの状態および吸入空気量ずれの状態の判定」を、単に「状態判定」とも称呼する。
第１装置において、燃料噴射量ずれとは、燃料噴射量の目標値Ｑｔｇｔに対する燃料噴射量の実際値Ｇａａｃｔの差を意味する。具体的には、「燃料噴射量の実際値Ｑａｃｔから燃料噴射量の目標値Ｑｔｇｔを減算して得られる値（Ｑａｃｔ−Ｑｔｇｔ）」を「燃料噴射量の目標値Ｑｔｇｔ」によって除算して得られる値（すなわち、燃料噴射量の目標値Ｑｔｇｔに対する上記減算して得られる値Ｑａｃｔ−Ｑｔｇｔの割合）が、「燃料噴射量ずれ」として取り扱われる。
さらに、第１装置において、吸入空気量ずれとは、吸入空気量の実際値Ｇａａｃｔに対する吸入空気量の測定値Ｇａｍｓｒの差を意味する。具体的には、「吸入空気量の測定値Ｇａｍｓｒから吸入空気量の実際値Ｇａａｃｔを減算して得られる値（Ｇａｍｓｒ−Ｇａａｃｔ）」を「吸入空気量の実際値Ｇａａｃｔ」によって除算して得られる値（すなわち、吸入空気量の実際値Ｇａａｃｔに対する上記減算して得られる値Ｇａｍｓｒ−Ｇａａｃｔの割合）が、「吸入空気量ずれ」として取り扱われる。
第１装置は、上記状態判定の結果に応じて、燃料噴射量ずれの大きさが小さくなるように燃料噴射量の目標値Ｑｔｇｔを所定の補正量だけ補正する。さらに、第１装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさが小さくなるように吸入空気量の測定値Ｇａｍｓｒを所定の補正量だけ補正する。加えて、第１装置は、これら補正を、燃料噴射量ずれがゼロとなり且つ吸入空気量ずれがゼロとなるまで繰り返す。
第１装置は、燃料噴射量の目標値Ｑｔｇｔの補正量の積算値が所定の閾値よりも大きくなると、「燃料噴射装置２２が異常である」ことを表示装置など（図１において図示省略。）に表示する。さらに、第１装置は、吸入空気量の測定値Ｇａｍｓｒの補正量の積算値が所定の閾値よりも大きくなると、「吸入空気量センサ７１が異常である」ことを上記表示装置などに表示する。以上が第１装置の作動の概要である。
＜内燃機関の制御方法＞
次いで、第１装置の具体的な作動についての説明を行う前に、第１装置に採用されている機関１０の制御方法につき、下記説明１−１〜１−４の順序に従って説明する。
（説明１−１）ＮＯｘ濃度推定モデルについての説明
（説明１−２）吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由についての説明
（説明１−３）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
（説明１−４）状態判定の結果に応じた補正についての説明
（説明１−１）ＮＯｘ濃度推定モデルについての説明
まず、周知のように、排気再循環（ＥＧＲ）が行われる内燃機関における吸気酸素濃度Ｏｃｏｎは、下記（１）式に示すように近似される。下記（１）式において、数値２３．２は標準状態における空気の酸素濃度（質量パーセント濃度）を、ＲｅｇｒはＥＧＲ率を、λは空気過剰率を、表す。なお、周知のように、標準状態とは、温度がゼロ℃（２７３．１５Ｋ）であり且つ圧力が１ｂａｒ（１０５Ｐａ）である状態を意味する。
Ｏｃｏｎ＝２３．２（１−Ｒｅｇｒ／λ）    ・・・（１）
上記（１）式において、空気過剰率λは下記（２）式に示すように定義される。下記（２）式において、ａｂｙｆａｃｔは実際の空燃比を、ａｂｙｆｓｔｏｉｃｈは理論空燃比（≒１４．７）を、表す。
λ＝ａｂｙｆａｃｔ／ａｂｙｆｓｔｏｉｃｈ    ・・・（２）
上記（２）式において、実際の空燃比ａｂｙｆａｃｔは下記（３）式に示すように定義される。下記（３）式において、Ｇａは吸入空気量を、Ｑは燃料噴射量を、表す。
ａｂｙｆａｃｔ＝Ｇａ／Ｑ    ・・・（３）
なお、周知のように、ＥＧＲ率Ｒｅｇｒは、下記（４）式に示すように定義される。下記（４）式において、Ｇｃｙｌは内燃機関の運転状態（機関回転速度および過給圧など）に応じて定まる気筒内に吸入されるガスの総量を、Ｇａは上述したように吸入空気量を、表す。
Ｒｅｇｒ＝（Ｇｃｙｌ−Ｇａ）／Ｇｃｙｌ    ・・・（４）
このように、内燃機関における吸気酸素濃度Ｏｃｏｎは、吸気酸素濃度に関連するパラメータ（すなわち、ＥＧＲ率Ｒｅｇｒ、吸入空気量Ｇａ、および、燃料噴射量Ｑ）に基づいて定まる。
次いで、周知の燃焼モデル（サーマルＮＯｘ生成機構）の１つである拡大ゼルドヴィッチ機構によれば、燃焼過程において生成される窒素酸化物の濃度は、燃焼に供されるガスの窒素濃度および酸素濃度、ならびに、燃焼時の火炎温度の影響を受ける。発明者は、この拡大ゼルドヴィッチ機構をさらに詳細に検討した。具体的に述べると、この拡大ゼルドヴィッチ機構を内燃機関に適用する場合、燃焼過程における上記ガスの窒素濃度の変化量は非常に小さいので、このガスの窒素濃度は燃焼過程において実質的に変化しない（すなわち、所定の固定値とみなす）と仮定し得る。さらに、この場合、上記ガスの酸素濃度は、内燃機関の吸気酸素濃度Ｏｃｏｎを所定の回数だけ累乗して得られる値に相当すると仮定し得る。加えて、この場合、上記燃焼時の火炎温度は、吸気酸素濃度Ｏｃｏｎおよび燃料噴射量Ｑに比例すると仮定し得る。
なお、燃料に含まれる窒素分（窒素化合物）に起因して生成されるフューエルＮＯｘの量、および、燃料に含まれる炭素分および水素分と空気に含まれる窒素とが反応して生成される中間体（シアン化水素など）に起因して生成されるプロンプトＮＯｘの量は、上記窒素酸化物（サーマルＮＯｘ）の量に対して小さいので、実質的にゼロであると仮定し得る。
発明者は、これら仮定に基づいて種々の考察および種々の実験などを行った。それら考察および実験などによれば、内燃機関の排ガスのＮＯｘ濃度ＮＯｘｃｏｎは下記（５）式にて表しめられることが確認された。下記（５）式において、ｅは自然対数の底（ネイピア数）を、Ｏｃｏｎは上記（１）式にて示される吸気酸素濃度を、Ｑは上述したように燃料噴射量を、指数Ａ、ＢおよびＣのそれぞれは内燃機関の構造などに応じて定まる固定値を、表す。なお、指数Ａ、ＢおよびＣは、個別の内燃機関ごとに定まる固有の値であって、実験などによって定められ得る値である。
ＮＯｘｃｏｎ＝ｅＡ×ＯｃｏｎＢ×ＱＣ    ・・・（５）
このように、内燃機関の排ガスのＮＯｘ濃度ＮＯｘｃｏｎと、吸気酸素濃度Ｏｃｏｎと、燃料噴射量Ｑと、の間に強い相関があることが確認された。換言すると、内燃機関の排ガスのＮＯｘ濃度ＮＯｘｃｏｎは吸気酸素濃度Ｏｃｏｎおよび燃料噴射量Ｑに基づいて定まることが確認された。
さらに、発明者によるさらなる考察および実験などによれば、一般的な内燃機関において、「吸気酸素濃度ＯｃｏｎとＮＯｘ濃度ＮＯｘｃｏｎとの相関の程度を表す指数Ｂ」と「燃料噴射量ＱとＮＯｘ濃度ＮＯｘｃｏｎとの相関の程度を表す指数Ｃ」とは異なることが確認された。換言すると、吸気酸素濃度ＯｃｏｎがＮＯｘ濃度ＮＯｘｃｏｎに与える影響は燃料噴射量ＱがＮＯｘ濃度ＮＯｘｃｏｎに与える影響とは異なることが確認された。上記（５）式は、「ＮＯｘ濃度推定モデル」として第１装置に採用される。
（説明１−２）吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由についての説明
上述したように、第１装置は、「燃料噴射量および吸入空気量が正常である」ことが確認されている機関の排ガスのＮＯｘ濃度を、ＮＯｘ参照濃度ＮＯｘｒｅｆとして取得している。よって、機関１０に吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じると、ＮＯｘ濃度センサ７５によって測定されるＮＯｘ濃度ＮＯｘｃｏｎはこのＮＯｘ参照濃度ＮＯｘｒｅｆと一致しない。すなわち、「ＮＯｘ濃度ずれΔＮＯｘ」が生じる。
より具体的に述べると、上記ＮＯｘ濃度推定モデルに示すように、ＮＯｘ濃度ＮＯｘｃｏｎは、吸気酸素濃度Ｏｃｏｎおよび燃料噴射量Ｑの影響を受ける（上記（５）式を参照。）。さらに、この吸気酸素濃度Ｏｃｏｎは、ＥＧＲ率Ｒｅｇｒ、吸入空気量Ｇａおよび燃料噴射量Ｑの影響を受ける（上記（１）式〜上記（４）式を参照。）。加えて、ＥＧＲ率Ｒｅｇｒは、吸入空気量Ｇａの影響を受ける（上記（４）式を参照。）。
「吸入空気量ずれ」が生じた場合、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔと一致しない。そのため、見掛け上のＥＧＲ率（すなわち、上記（４）式にて算出されるＥＧＲ率の計算値）Ｒｅｇｒａｐｐが目標値Ｒｅｇｒｔｇｔと一致しても、ＥＧＲ率の実際値Ｒｅｇｒａｃｔは目標値Ｒｅｇｒｔｇｔと一致しない。このように、この場合、吸入空気量の測定値Ｇａｍｓｒが実際値Ｇａａｃｔと一致せず且つＥＧＲ率の実際値ＲｅｇｒａｃｔがＥＧＲ率の目標値Ｒｅｇｒｔｇｔと一致しないので、見掛け上の吸気酸素濃度（すなわち、上記（１）式にて算出される吸気酸素濃度の計算値）Ｏｃｏｎａｐｐは吸気酸素濃度の実際値Ｏｃｏｎａｃｔと一致しない。
これらの結果、「吸気酸素濃度の実際値Ｏｃｏｎａｃｔ」および「燃料噴射量の実際値Ｑａｃｔ」に基づいて定まる実際のＮＯｘ濃度（ＮＯｘ濃度センサ７５によって測定されるＮＯｘ濃度）ＮＯｘｃｏｎは、「見掛け上の吸気酸素濃度Ｏｃｏｎａｐｐ」および「燃料噴射量の目標値Ｑｔｇｔ」を上記関係ＭａｐＮＯｘｒｅｆ（Ｑｔｇｔ，Ｏｃｏｎ）に適用することによって定まるＮＯｘ参照濃度ＮＯｘｒｅｆと、一致しない。すなわち、ＮＯｘ濃度ずれΔＮＯｘが生じる。
一方、「燃料噴射量ずれ」が生じた場合、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔと一致しない。この場合、ＥＧＲ率と燃料噴射量とは直接的には関連しないので（上記（４）式を参照。）、ＥＧＲ率の実際値Ｒｅｇｒａｃｔは目標値Ｒｅｇｒｔｇｔと一致する。ところが、この場合、燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔと一致しないので、見掛け上の吸気酸素濃度Ｏｃｏｎａｐｐは吸気酸素濃度の実際値Ｏｃｏｎａｃｔと一致しない。
この結果、「吸気酸素濃度の実際値Ｏｃｏｎａｃｔ」および「燃料噴射量の実際値Ｑａｃｔ」に基づいて定まる実際のＮＯｘ濃度ＮＯｘｃｏｎは、「見掛け上の吸気酸素濃度Ｏｃｏｎａｐｐ」および「燃料噴射量の目標値Ｑｔｇｔ」を上記関係ＭａｐＮＯｘｒｅｆ（Ｑｔｇｔ，Ｏｃｏｎ）に適用することによって定まるＮＯｘ参照濃度ＮＯｘｒｅｆと、一致しない。すなわち、ＮＯｘ濃度ずれΔＮＯｘが生じる。
以上が、吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由である。
（説明１−３）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
上述したように、吸入空気量ずれおよび燃料噴射量ずれの双方がＮＯｘ濃度ずれに影響を与える。第１装置は、この影響に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態のうちの少なくとも一方を判定する。以下、上記ＮＯｘ濃度推定モデルを用いて、下記条件１−Ａ〜１−Ｄのうちの「一または複数」が成立する場合における「燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとの関係」について説明する。
（条件１−Ａ）吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒよりも小さい。
（条件１−Ｂ）吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒよりも大きい。
（条件１−Ｃ）燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔよりも小さい。
（条件１−Ｄ）燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔよりも大きい。
以下、条件１−Ａに示す状態を「吸入空気量ずれが負である」と、条件１−Ｂに示す状態を「吸入空気量ずれが正である」と、条件１−Ｃに示す状態を「燃料噴射量ずれが負である」と、条件１−Ｄに示す状態を「燃料噴射量ずれが正である」と、称呼する。さらに、以下、便宜上、燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとの関係を「第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）」と称呼する。
さらに、この説明１−３において、吸入空気量および燃料噴射量「以外」のＮＯｘ濃度に影響を与え得る運転パラメータ（例えば、気筒内に吸入されるガスの総量Ｇｃｙｌに影響を与える機関回転速度ＮＥおよび過給圧Ｐｉｍ、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔ、ならびに、気筒内に燃料を噴射する時期である燃料噴射時期など）は、所定の値に固定されていると仮定する。すなわち、吸入空気量ずれおよび燃料噴射量ずれ「のみ」がＮＯｘ濃度ずれΔＮＯｘに影響を与えると仮定する。
まず、上記条件１−Ａ〜１−Ｄのうちの「１つ」が成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）について説明する。
図２（Ａ）は、条件１−Ａ〜条件１−Ｄのうちの１つが成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。ＮＯｘ濃度推定モデルにおける指数Ａ、ＢおよびＣ（上記（５）式を参照。）は、「機関１０と同一の構成を有する機関であって、燃料噴射量の目標値Ｑｔｇｔと実際値Ｑａｃｔとが一致しており且つ吸入空気量の測定値ＮＯｘｍｓｒと実際値Ｇａａｃｔとが一致していることが確認されている機関」を用いた実験によって定められた。
図２（Ａ）において、Ｇａｍｓｒ（−）は、条件１−Ａが成立する場合（吸入空気量ずれが負である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（＋）は、条件１−Ｂが成立する場合（吸入空気量ずれが正である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。Ｑａｃｔ（−）は、条件１−Ｃが成立する場合における（燃料噴射量ずれが負である場合）の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。Ｑａｃｔ（＋）は、条件１−Ｄが成立する場合（燃料噴射量ずれが正である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。
まず、「条件１−Ａのみ」が成立する場合、曲線Ｇａｍｓｒ（−）に示すように、少なくとも燃料噴射量の目標値Ｑｔｇｔが所定値Ａから所定値Ｂである範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
さらに、「条件１−Ｂのみ」が成立する場合、曲線Ｇａｍｓｒ（＋）に示すように、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
加えて、「条件１−Ｃのみ」が成立する場合、曲線Ｑａｃｔ（−）に示すように、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
さらに加えて、「条件１−Ｄのみ」が成立する場合、曲線Ｑａｃｔ（＋）に示すように、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
このように、条件１−Ａが成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、条件１−Ｂが成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、条件１−Ｃが成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、条件１−Ｄが成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、は異なる。
所定値Ａおよび所定値Ｂのそれぞれは、上述したように条件１−Ａ〜１−Ｄのうちの一の条件が成立した場合に得られる第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）がその一の条件とは異なる他の条件が成立した場合に得られる第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と異なることとなる適値に設定されればよい。
以上、条件１−Ａ〜１−Ｄのうちの「１つ」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じた場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）について説明した。
次いで、上記条件１−Ａ〜１−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）について説明する。
図２（Ｂ）は、条件１−Ａ〜１−Ｄのうちの複数が成立する場合における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。
図２（Ｂ）において、Ｇａｍｓｒ（−）＋Ｑａｃｔ（＋）は、条件１−Ａおよび条件１−Ｄが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが正である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（−）＋Ｑａｃｔ（−）は、条件１−Ａおよび条件１−Ｃが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが負である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（＋）＋Ｑａｃｔ（＋）は、条件１−Ｂおよび条件１−Ｄが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが正である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（＋）＋Ｑａｃｔ（−）は、条件１−Ｂおよび条件１−Ｃが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが負である場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）を示す曲線を表す。
なお、条件１−Ａ（吸入空気量ずれが負である状態）と、条件１−Ｂ（吸入空気量ずれが正である状態）と、は同時に成立し得ない。さらに、条件１−Ｃ（燃料噴射量ずれが負である状態）と、条件１−Ｄ（燃料噴射量ずれが正である状態）と、は同時に成立し得ない。よって、図２（Ｂ）に示す４つの組み合わせが、成立し得る組み合わせの全てである。
まず、「条件１−Ａおよび条件１−Ｄ」が成立する場合、曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（＋）に示すように、少なくとも燃料噴射量の目標値Ｑｔｇｔが所定値Ａから所定値Ｂである範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
さらに、「条件１−Ａおよび条件１−Ｃ」が成立する場合、曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（−）に示すように、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
加えて、「条件１−Ｂおよび条件１−Ｄ」が成立する場合、曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（＋）に示すように、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
さらに加えて、「条件１−Ｂおよび条件１−Ｃ」が成立する場合、曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（−）に示すように、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
このように、条件１−Ａおよび条件１−Ｄが成立する場合の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、条件１−Ａおよび条件１−Ｃが成立する場合の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）とは、上記範囲内におけるＮＯｘ濃度ずれΔＮＯｘの大きさが異なることを除いて同一である。さらに、条件１−Ｂおよび条件１−Ｄが成立する場合の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、条件１−Ｂおよび条件１−Ｃが成立する場合の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）とは、上記範囲内におけるＮＯｘ濃度ずれΔＮＯｘの大きさが異なることを除いて同一である。加えて、条件１−Ａおよび条件１−Ｄ、あるいは、条件１−Ａおよび条件１−Ｃが成立する場合の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）は、条件１−Ｂおよび条件１−Ｄ、あるいは、条件１−Ｂおよび条件１−Ｃが成立する場合の第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、異なる。
以上、条件１−Ａ〜１−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）について説明した。
なお、「条件１−Ａ〜１−Ｄのいずれも成立しない」場合（すなわち、吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合）、実際のＮＯｘ濃度ＮＯｘｃｏｎはＮＯｘ濃度ＮＯｘｃｏｎと一致する。よって、この場合、ＮＯｘ濃度ずれΔＮＯｘは、燃料噴射量の目標値Ｑｔｇｔにかかわらずゼロである。すなわち、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」であり、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「ゼロ」である。
ところで、機関１０を構成する部材のうち「吸入空気量および燃料噴射量と関連しない部材」が正常に作動しない場合においても、ＮＯｘ濃度ずれは生じ得る。例えば、ＮＯｘ濃度センサ７５が正常に作動しなし場合（実際のＮＯｘ濃度とは異なるＮＯｘ濃度を表す出力値を出力する場合）、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロであっても、ＮＯｘ濃度ずれが生じる。以下、このような状態を「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と称呼する。
この場合、図３の曲線Ｏｔｈｅｒ（＋）または曲線Ｏｔｈｅｒ（−）に示すように、燃料噴射量の目標値ＱｔｇｔにかかわらずＮＯｘ濃度ずれΔＮＯｘの大きさは変化しない。すなわち、少なくとも上記範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」である。さらに、この場合、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘは「正」または「負」である。
このように、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件１−Ａおよび条件１−Ｂを参照。）、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件１−Ｃおよび条件１−Ｄを参照。）、により、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）は異なる。換言すると、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）に基づき、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、を判定することができる。さらに、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）に基づき、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれ」が生じているか否か、を判定することができる。
具体的に述べると、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）が「所定範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「正」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘが「正」である関係」である場合、その関係は、図２（Ａ）の曲線Ｇａｍｓｒ（−）、ならびに、図２（Ｂ）の曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（＋）および曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが負である」と判定することができる。
さらに、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）が「所定範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「負」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘが「負」である関係」である場合、その関係は、図２（Ａ）の曲線Ｇａｍｓｒ（＋）、ならびに、図２（Ｂ）の曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（＋）および曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが正である」と判定することができる。
加えて、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）が「所定範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「負」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘが「正」である関係」である場合、その関係は、図２（Ａ）の曲線Ｑａｃｔ（＋）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが正である」と判定することができる。
さらに加えて、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）が「所定範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「正」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘが「負」である関係」である場合、その関係は、図２（Ａ）の曲線Ｑａｃｔ（−）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが負である」と判定することができる。
なお、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）が「所定範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「ゼロ」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘが「ゼロ」である関係」である場合、「吸入空気量ずれがゼロであり、かつ、燃料噴射量ずれがゼロである」と判定することができる。
さらに、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）が「所定範囲内（Ａ≦Ｑｔｇｔ≦Ｂ）において、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「ゼロ」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘが「正」または「負」である関係」である場合、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定することができる。
このように、第１装置は、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。以下、上述した燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する方法を、「第１状態判定方法」とも称呼する。
（説明１−４）状態判定の結果に応じた補正についての説明
第１装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさを低減するように吸入空気量の測定値Ｇａｍｓｒを補正し、燃料噴射量ずれの大きさを低減するように燃料噴射量の目標値Ｑｔｇｔを補正する。
具体的に述べると、第１装置は、吸入空気量ずれが「正」であると判定した場合、吸入空気量の測定値Ｇａｍｓｒを所定の補正量だけ「減少」するように補正する。一方、第１装置は、吸入空気量ずれが「負」であると判定した場合、吸入空気量の測定値Ｇａｍｓｒを所定の補正量だけ「増大」するように補正する。これら補正にて用いられる「補正量」はＮＯｘ濃度ずれΔＮＯｘの大きさに応じて決定される。
例えば、図４（Ａ）に示すように、燃料噴射量の目標値Ｑｔｇｔが所定値ＡであるときのＮＯｘ濃度ずれΔＮＯｘ（Ａ）および燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘ（Ｂ）の双方が「正」であって、ＮＯｘ濃度ずれΔＮＯｘ（Ａ）よりもＮＯｘ濃度ずれΔＮＯｘ（Ｂ）が大きい場合、第１装置は、上記説明１−３にて述べたように、「少なくとも吸入空気量ずれが負である」と判定する。
この場合、第１装置は、例えば、ＮＯｘ濃度ずれΔＮＯｘ（Ａ）とＮＯｘ濃度ずれΔＮＯｘ（Ｂ）との平均値に基づいて上記「補正量」を決定する。そして、第１装置は、吸入空気量の測定値Ｇａｍｓｒをこの補正量だけ「増大」するように補正する。具体的に述べると、第１装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、吸入空気量センサ７１の出力値（出力電圧）と吸入空気量の測定値Ｇａｍｓｒとの関係（マップ）を、測定値Ｇａｍｓｒが増大されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
さらに、第１装置は、燃料噴射量ずれが「正」であると判定した場合、燃料噴射量の目標値Ｑｔｇｔを所定の補正量だけ「減少」するように補正する。一方、第１装置は、燃料噴射量ずれが「負」であると判定した場合、燃料噴射量の目標値Ｑｔｇｔを所定の補正量だけ「増大」するように補正する。これら補正において用いられる「補正量」は、ＮＯｘ濃度ずれΔＮＯｘの大きさに応じて決定される。
例えば、図４（Ｂ）に示すように、燃料噴射量の目標値Ｑｔｇｔが所定値ＡであるときのＮＯｘ濃度ずれΔＮＯｘ（Ａ）および燃料噴射量の目標値Ｑｔｇｔが所定値ＢであるときのＮＯｘ濃度ずれΔＮＯｘ（Ｂ）の双方が「正」であって、ＮＯｘ濃度ずれΔＮＯｘ（Ａ）よりもＮＯｘ濃度ずれΔＮＯｘ（Ｂ）が小さい場合、第１装置は、上記説明１−３にて述べたように、「燃料噴射量ずれが正である」と判定する。
この場合、第１装置は、例えば、ＮＯｘ濃度ずれΔＮＯｘ（Ａ）とＮＯｘ濃度ずれΔＮＯｘ（Ｂ）との平均値に基づいて上記「補正量」を決定する。そして、第１装置は、燃料噴射量の目標値Ｑｔｇｔをこの補正量だけ「減少」するように補正する。具体的に述べると、第１装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、燃料噴射装置２２の燃料噴射時間と燃料噴射量の目標値Ｑｔｇｔとの関係（マップ）を、目標値Ｑｔｇｔが減少されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
このように燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒが補正されることにより、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
ところで、上記説明１−３にて述べたように、第１装置は、所定の条件が成立する場合、「少なくとも」吸入空気量ずれが負であると判定する（条件１−Ａが成立する場合、条件１−Ａおよび条件１−Ｃが成立する場合、ならびに、条件１−Ａおよび条件１−Ｄが成立する場合）。この場合、第１装置は、「吸入空気量ずれが負である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが正である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが負である」か、を区別して判定しない。すなわち、吸入空気量ずれ「のみ」が生じているか、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じているか、は判定されない。
しかし、上記説明１−４にて述べたように、上記いずれの条件が成立する場合であっても、第１装置は「吸入空気量ずれ」を低減するように吸入空気量の測定値Ｇａｍｓｒを補正する。そのため、吸入空気量ずれ「のみ」が生じている場合、この補正によってその吸入空気量ずれが低減される。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、この補正によってその「双方」のうちの吸入空気量ずれが低減される。そして、例えば繰り返しこの補正が行われることによって吸入空気量ずれが十分に低減されれば、それら「双方」のうちの燃料噴射量ずれ「のみ」が残る。燃料噴射量ずれ「のみ」が残れば、第１装置は、燃料噴射量ずれが生じていると判定すると共にその燃料噴射量ずれを低減するように燃料噴射量の目標値Ｑｔｇｔを補正する。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
このように、上記いずれの場合（吸入空気量ずれ「のみ」が生じている場合、および、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合）であっても、第１装置が繰り返し補正を行うことにより、ＮＯｘ濃度ずれΔＮＯｘが低減される。なお、上記説明から理解されるように、第１装置が「少なくとも吸入空気量ずれが「正」である」と判定する場合であっても、上記同様、第１装置が繰り返し補正を行うことによってＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
なお、第１装置は、「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」と判定した場合、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒを補正しない。さらに、第１装置は、「燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている」と判定した場合、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒを補正しない。
以上、説明１−１〜１−４にて述べたように、第１装置は燃料噴射量ずれの状態および吸入空気量ずれの状態を判定すると共に、その判定の結果に応じてＮＯｘ濃度ずれΔＮＯｘの大きさを低減するように機関１０を制御する。
ところで、上述したように、上記ＮＯｘ濃度推定モデルにおける指数Ａ、ＢおよびＣは、ＮＯｘ濃度推定モデルが適用される内燃機関の構成等に応じて定められる。そのため、機関１０と異なる構成を有する他の機関に上記ＮＯｘ濃度推定モデルが適用される場合、他の機関における指数Ａ、ＢおよびＣは、機関１０における指数Ａ、ＢおよびＣと異なる場合がある。この場合、機関１０における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、他の機関における第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）と、は異なる。しかし、上記説明から明らかなように、上記同様の考え方によって他の機関における燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
＜実際の作動＞
以下、第１装置の実際の作動について説明する。
第１装置において、ＣＰＵ８１は、図５〜図１１にフローチャートによって示した各ルーチンを所定のタイミング毎に実行するようになっている。ＣＰＵ８１は、これらルーチンにおいて、第１燃料過多噴射フラグＸＱＰ１、第１燃料過少噴射フラグＸＱＮ１、第１吸入空気量過多検出フラグＸＧＡＰ１、第１吸入空気量過少検出フラグＸＧＡＮ１、および、第１他異常発生フラグＸＯＴＨ１を用いる。
第１燃料過多噴射フラグＸＱＰ１は、その値が「０」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが大きくないこと（すなわち、Ｑａｃｔ≦Ｑｔｇｔ）を表す。一方、第１燃料過多噴射フラグＸＱＰ１は、その値が「１」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが大きいこと（すなわち、Ｑａｃｔ＞Ｑｔｇｔ）を表す。
第１燃料過少噴射フラグＸＱＮ１は、その値が「０」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが小さくないこと（すなわち、Ｑａｃｔ≧Ｑｔｇｔ）を表す。一方、第１燃料過少噴射フラグＸＱＮ１は、その値が「１」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが小さいこと（すなわち、Ｑａｃｔ＜Ｑｔｇｔ）を表す。
第１吸入空気量過多検出フラグＸＧＡＰ１は、その値が「０」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが大きくないこと（すなわち、Ｇａｍｓｒ≦Ｇａａｃｔ）を表す。一方、第１吸入空気量過多検出フラグＸＧＡＰ１は、その値が「１」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが大きいこと（すなわち、Ｇａｍｓｒ＞Ｇａａｃｔ）を表す。
第１吸入空気量過少検出フラグＸＧＡＮ１は、その値が「０」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが小さくないこと（すなわち、Ｇａｍｓｒ≧Ｇａａｃｔ）を表す。一方、第１吸入空気量過多検出フラグＸＧＡＰ１は、その値が「１」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが小さいこと（すなわち、Ｇａｍｓｒ＜Ｇａａｃｔ）を表す。
第１他異常発生フラグＸＯＴＨ１は、その値が「０」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことを表す。一方、第１他異常発生フラグＸＯＴＨ１は、その値が「１」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていることを表す。
第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、および、第１他異常発生フラグＸＯＴＨ１の値は、バックアップＲＡＭ８４に格納される。さらに、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、および、第１吸入空気量過少検出フラグＸＧＡＮ１の値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２および吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。加えて、第１他異常発生フラグＸＯＴＨ１の値は、上記工場出荷時およびサービス点検実施時などにおいて、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている原因を解消する処置がなされた際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
以下、ＣＰＵ８１が実行する各ルーチンについて詳細に説明する。
まず、現時点における、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、および、第１他異常発生フラグＸＯＴＨ１の値は、全て「０」に設定されていると仮定する。以下、便宜上、この仮定を「第１初期設定仮定」とも称呼する。
ＣＰＵ８１は、機関１０が始動されると、任意の気筒のクランク角が圧縮上死点前の所定クランク角度（例えば、圧縮上死点前９０度クランク角）θｆに一致する毎に、図５にフローチャートによって示した「第１燃料噴射制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、燃料噴射量の目標値Ｑｔｇｔを決定すると共に、その目標値Ｑｔｇｔだけの燃料を各気筒内に噴射させる。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔと一致していないと判定された場合にその目標値Ｑｔｇｔを補正すると共に、補正された目標値Ｑｔｇｔだけの燃料を各気筒内に噴射させる。以下、便宜上、クランク角が圧縮上死点前の所定クランク角θｆに一致する圧縮行程中の気筒を、「燃料噴射気筒」とも称呼する。
具体的に述べると、ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じて燃料噴射量の目標値Ｑｔｇｔを決定する。さらに、ＣＰＵ８１は、燃料噴射量の目標値Ｑｔｇｔよりも実際値Ｑａｃｔが大きいと判定されている場合、その目標値Ｑｔｇｔを所定の燃料噴射量補正量Ｑｃだけ減少させる。一方、ＣＰＵ８１は、燃料噴射量の目標値Ｑｔｇｔよりも実際値Ｑａｃｔが小さいと判定されている場合、その目標値Ｑｔｇｔを所定の燃料噴射量補正量Ｑｃだけ増大させる。
ＣＰＵ８１は、図５に示すルーチンにおいて、燃料噴射量補正量Ｑｃの積算値Ｑｃｓｕｍを算出する。この積算値Ｑｃｓｕｍの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始してステップ５１０に進み、「アクセルペダル開度Ａｃｃｐと、機関回転速度ＮＥと、燃料噴射量の目標値Ｑｔｇｔと、の関係」をあらかじめ定めた燃料噴射量目標値決定テーブルＭａｐＱｔｇｔ（Ａｃｃｐ，ＮＥ）に現時点におけるアクセルペダル開度Ａｃｃｐと機関回転速度ＮＥとを適用することにより、燃料噴射量の目標値Ｑｔｇｔを決定する。この燃料噴射量目標値決定テーブルＭａｐＱｔｇｔ（Ａｃｃｐ，ＮＥ）において、燃料噴射量の目標値Ｑｔｇｔは、アクセルペダル開度Ａｃｃｐおよび機関回転速度ＮＥに基づいて定まる要求トルクに応じた適値となるように、設計されている。
次いで、ＣＰＵ８１は、ステップ５２０に進み、現時点における第１燃料過多噴射フラグＸＱＰ１の値が「１」であるか否かを判定する。現時点における第１燃料過多噴射フラグＸＱＰ１の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ５２０にて「Ｎｏ」と判定してステップ５３０に進む。
ＣＰＵ８１は、ステップ５３０にて、現時点における第１燃料過少噴射フラグＸＱＮ１の値が「１」であるか否かを判定する。現時点における第１燃料過少噴射フラグＸＱＮ１の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ５３０にて「Ｎｏ」と判定してステップ５４０に進む。
ＣＰＵ８１は、ステップ５４０にて、上記目標値Ｑｔｇｔだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、上記目標値Ｑｔｇｔの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ５９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図６にフローチャートによって示した「第１吸入空気量取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量の測定値Ｇａｍｓｒを取得する。さらに、ＣＰＵ８１は、このルーチンにより、吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒと一致していないと判定された場合、その測定値Ｇａｍｓｒを補正する。
具体的に述べると、ＣＰＵ８１は、このルーチンにより、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値ＮＯｘｍｓｒを取得する。さらに、ＣＰＵ８１は、吸入空気量の測定値ＮＯｘｍｓｒよりも実際値Ｇａａｃｔが大きいと判定されている場合、その測定値ＮＯｘｍｓｒを所定の吸入空気量補正量Ｇａｃだけ減少させる。一方、ＣＰＵ８１は、吸入空気量の測定値ＮＯｘｍｓｒよりも実際値Ｇａａｃｔが小さいと判定されている場合、その測定値ＮＯｘｍｓｒを所定の吸入空気量補正量Ｇａｃだけ増大させる。
ＣＰＵ８１は、図６に示すルーチンにおいて、吸入空気量補正量Ｇａｃの積算値Ｇａｃｓｕｍを算出する。この積算値Ｇａｃｓｕｍの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始してステップ６１０に進み、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値Ｇａｍｓｒを取得する。
次いで、ＣＰＵ８１は、ステップ６２０に進み、現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値が「１」であるか否かを判定する。現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ６２０にて「Ｎｏ」と判定してステップ６３０に進む。
ＣＰＵ８１は、ステップ６３０にて、現時点における第１吸入空気量過少検出フラグＸＧＡＮ１の値が「１」であるか否かを判定する。現時点における第１吸入空気量過少検出フラグＸＧＡＮ１の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ６３０にて「Ｎｏ」と判定してステップ６９５に直接進み、本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図７にフローチャートによって示した「ＥＧＲ率制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じてＥＧＲ率の目標値Ｒｅｇｒｔｇｔを決定する。さらに、ＣＰＵ８１は、このルーチンにて、ＥＧＲ率の実際値Ｒｅｇｒａｃｔが目標値Ｒｅｇｒｔｇｔと一致するようにスロットル弁３３およびＥＧＲ制御弁５３を制御する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図７のステップ７００から処理を開始してステップ７１０に進み、「アクセルペダル開度Ａｃｃｐと、機関回転速度ＮＥと、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔと、の関係」をあらかじめ定めたＥＧＲ率目標値決定テーブルＭａｐＲｅｇｒｔｇｔ（ＮＥ，Ａｃｃｐ）に現時点におけるアクセルペダル開度Ａｃｃｐと、機関回転速度ＮＥと、を適用することにより、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔを決定する。このＥＧＲ率目標値決定テーブルＭａｐＲｅｇｒｔｇｔ（ＮＥ，Ａｃｃｐ）において、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔは、エミッション排出量を出来る限り低減する観点における適値となるように、設計されている。
次いで、ＣＰＵ８１は、ステップ７２０に進み、ＥＧＲ率の実際値Ｒｅｇｒａｃｔが上記目標値Ｒｅｇｒｔｇｔと一致するように、スロットル弁３３の開度およびＥＧＲ制御弁５３の開度を制御する。その後、ＣＰＵ８１は、ステップ７９５に進んで本ルーチンを一旦終了する。なお、ＥＧＲ率の実際値Ｒｅｇｒａｃｔは、上記（４）式に示すように、機関回転速度ＮＥおよび過給圧Ｐｉｍなどに応じて定まる各気筒内に吸入されるガスの総量Ｇｃｙｌと、吸入空気量の測定値Ｇａｍｓｒと、に基づいて算出され得る。
さらに、ＣＰＵ８１は、所定時間が経過する毎に図８および図９に一連のフローチャートによって示した「第１状態判定ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとを対応させながら取得する。さらに、ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、取得された燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとの関係（すなわち、上記第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ））に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図８のステップ８００から処理を開始してステップ８０２に進み、現時点にて「ＮＯｘ濃度を取得する条件（ＮＯｘ濃度取得条件）」が成立するか否かを判定する。より具体的に述べると、ＣＰＵ８１は、ステップ８０２にて、以下の条件Ｎ−１−１〜Ｎ−１−５の全てが成立したとき、ＮＯｘ濃度取得条件が成立すると判定する。換言すると、ＣＰＵ８１は、条件Ｎ−１−１〜Ｎ−１−５のうちの少なくとも１つが成立しないとき、ＮＯｘ濃度取得条件が成立しないと判定する。
（条件Ｎ−１−１）ＮＯｘ濃度センサ７５の温度が所定の範囲内の値である。
（条件Ｎ−１−２）ＮＯｘ濃度センサ７５周辺のガスの圧力が所定の範囲内の値である。
（条件Ｎ−１−３）ＮＯｘ濃度センサ７５周辺の酸素濃度が所定の範囲内の値である。
（条件Ｎ−１−４）ＮＯｘ濃度センサ７５の出力値が所定の範囲内の値である。
（条件Ｎ−１−５）機関回転速度ＮＥ、過給圧Ｐｉｍ、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔ、および、燃料噴射時期のそれぞれは、所定の固定値である。
条件Ｎ−１−１に係る所定の範囲は、ＮＯｘ濃度センサ７５が正常に作動することが可能である温度範囲に対応する。条件Ｎ−１−２に係る所定の範囲は、ＮＯｘ濃度センサ７５がＮＯｘ濃度を適切に測定することが可能である圧力範囲に対応する。条件Ｎ−１−３に係る所定の範囲は、ＮＯｘ濃度センサ７５がＮＯｘ濃度を適切に測定することが可能である酸素濃度範囲に対応する。条件Ｎ−１−４に係る所定の範囲は、ＮＯｘ濃度センサ７５がＮＯｘ濃度を適切に測定することが可能であるＮＯｘ濃度の範囲に対応する。
条件Ｎ−１−５に挙げられている機関回転速度ＮＥ、過給圧Ｐｉｍ、ＥＧＲ率の目標値Ｑｔｇｔおよび燃料噴射時期は、吸入空気量および燃料噴射量「以外」のＮＯｘ濃度に影響を与え得る運転パラメータである。これらパラメータが所定の固定値であれば、燃料噴射量ずれの状態および吸入空気量ずれの状態がより正確に判定せしめられる。
ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立していない」とき、ステップ８０２にて「Ｎｏ」と判定し、接続指標Ｂを経由して図９のステップ８９５に直接進んで本ルーチンを一旦終了する。このように、ＮＯｘ濃度取得条件が「成立していない」とき、ＮＯｘ濃度の測定値ＮＯｘｍｓｒは取得されない。
これに対し、ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立している」とき、ステップ８０２にて「Ｙｅｓ」と判定してステップ８０４に進む。ＣＰＵ８１は、ステップ８０４にてＮＯｘ濃度センサ７５の出力値に基づいてＮＯｘ濃度の測定値ＮＯｘｍｓｒを取得し、ステップ８０６に進む。
ＣＰＵ８１は、ステップ８０６にて、「吸入空気量の測定値Ｇａｍｓｒと、燃料噴射量の目標値Ｑｔｇｔと、空気過剰率λと、の関係」をあらかじめ定めた空気過剰率算出関数Ｆｎλ（Ｇａｍｓｒ，Ｑｔｇｔ）に、現時点における吸入空気量の測定値Ｇａｍｓｒおよび燃料噴射量の目標値Ｑｔｇｔを適用することにより、空気過剰率λを算出する（上記（２）式および上記（３）式を参照。）。
次いで、ＣＰＵ８１は、ステップ８０８に進み、「ＥＧＲ率の目標値Ｒｅｇｒｔｇｔと、空気過剰率λと、吸気酸素濃度Ｏｃｏｎと、の関係」をあらかじめ定めた吸気酸素濃度算出関数ＦｎＯｃｏｎ（Ｒｅｇｒｔｇｔ，λ）に、現時点におけるＥＧＲ率の目標値Ｒｅｇｒｔｇｔと、空気過剰率λと、を適用することにより、吸気酸素濃度Ｏｃｏｎを算出する（上記（１）式を参照。）。
次いで、ＣＰＵ８１は、ステップ８１０に進み、「燃料噴射量の目標値Ｑｔｇｔと実際値Ｑａｃｔとが一致しており且つ吸入空気量の測定値Ｇａｍｓｒと実際値Ｇａａｃｔとが一致していることが確認されている機関における、燃料噴射量の目標値Ｑｔｇｔと、吸気酸素濃度Ｏｃｏｎと、ＮＯｘ濃度と、の関係」をあらかじめ定めたＭａｐＮＯｘｒｅｆ（Ｑｔｇｔ，Ｏｃｏｎ）に、現時点における燃料噴射量の目標値Ｑｔｇｔと、吸気酸素濃度Ｏｃｏｎと、を適用して得られる値を、ＮＯｘ参照濃度ＮＯｘｒｅｆとして取得する。
次いで、ＣＰＵ８１は、ステップ８１２に進み、下記（６）式にＮＯｘ濃度の測定値ＮＯｘｍｓｒとＮＯｘ参照濃度ＮＯｘｒｅｆとを適用することにより、ＮＯｘ濃度ずれΔＮＯｘを取得する。すなわち、ステップ８１２にて、「ＮＯｘ参照濃度ＮＯｘｒｅｆに対する、ＮＯｘ濃度の測定値ＮＯｘｍｓｒからＮＯｘ参照濃度ＮＯｘｒｅｆを減算して得られる値の、割合」が、ＮＯｘ濃度ずれΔＮＯｘとして取得される。
ΔＮＯｘ＝（ＮＯｘｍｓｒ−ＮＯｘｒｅｆ）／ＮＯｘｒｅｆ    ・・・（６）
さらに、ＣＰＵ８１は、上述したように取得したＮＯｘ濃度ずれΔＮＯｘを、燃料噴射量の目標値Ｑｔｇｔと対応させながら（すなわち、ＮＯｘ濃度ずれΔＮＯｘと燃料噴射量の目標値Ｑｔｇｔとを組み合わせたデータを）、ＲＯＭ８２に格納する。
次いで、ＣＰＵ８１は、接続指標Ａを経由して図９のステップ８１４に進み、現時点にて「燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する条件（状態判定条件）」が成立しているか否かを判定する。より具体的に述べると、ＣＰＵ８１は、ステップ８１４にて、以下の条件Ｓ−１が成立したとき、状態判定条件が成立すると判定する。換言すると、ＣＰＵ８１は、条件Ｓ−１が成立しないとき、状態判定条件が成立しないと判定する。
（条件Ｓ−１）ＮＯｘ濃度ずれΔＮＯｘと燃料噴射量の目標値Ｑｔｇｔとを組み合わせたデータであって燃料噴射量の目標値Ｑｔｇｔが所定の範囲内の値であるデータが、少なくとも２つ取得されている。
上記「所定の範囲」は、上述した第１状態判定方法における「所定範囲（Ａ≦Ｑｔｇｔ≦Ｂ）」に相当する。燃料噴射量の目標値Ｑｔｇｔがこの所定の範囲内の値であるデータが少なくとも２つ取得されていれば、第１状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
ＣＰＵ８１は、状態判定条件が「成立している」とき、ステップ８１４にて「Ｙｅｓ」と判定し、ステップ８１６に進む。そして、ＣＰＵ８１は、ステップ８１６〜ステップ８４２に示す処理によって燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。これに対し、ＣＰＵ８１は、状態判定条件が「成立していない」とき、ステップ８１４にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。このように、状態判定条件が「成立していない」とき、燃料噴射量ずれの状態および吸入空気量ずれの状態は判定されない。
以下、現時点にて、状態判定条件が「成立している」と仮定すると共に、ステップ８１６〜ステップ８４２にて実行される処理について場合を分けてより詳細に説明する。
以下の説明においては、条件Ｓ−１に該当するデータとして、燃料噴射量の目標値が「第１の目標値Ｑｔｇｔ１」であるデータ、および、その目標値が「第１の目標値Ｑｔｇｔよりも大きい第２の目標値Ｑｔｇｔ２」であるデータが採用される。以下、燃料噴射量の目標値が第１の目標値Ｑｔｇｔ１であるときのＮＯｘ濃度ずれを「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）」と、燃料噴射量の目標値が第２の目標値Ｑｔｇｔ２（Ｑｔｇｔ２＞Ｑｔｇｔ１）であるときのＮＯｘ濃度ずれを「第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）」と、称呼する。なお、第１の目標値Ｑｔｇｔ１および第２の目標値Ｑｔｇｔ２は、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定するために適切な値となるように、上述したＮＯｘ濃度推定モデルに基づいて定められる。
（場合１−１）燃料噴射量ずれが「正」である場合
この場合、上述したように、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。すなわち、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも「大きい」。さらに、上記所定値として第２の目標値Ｑｔｇｔ２を採用すると、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「正」である。
ＣＰＵ８１は、ステップ８１６にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも大きいので、ＣＰＵ８１は、ステップ８１６にて「Ｙｅｓ」と判定してステップ８１８に進む。
ＣＰＵ８１は、ステップ８１８にて、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「正」であるので、ＣＰＵ８１は、ステップ８１８にて「Ｙｅｓ」と判定してステップ８２０に進む。
ＣＰＵ８１は、ステップ８２０にて、第１燃料過多噴射フラグＸＱＰ１の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
次いで、ＣＰＵ８１は、所定時間が経過する毎に、図１０にフローチャートによって示した「第１ＮＯｘ濃度平均ずれ取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値と、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値と、の平均値を取得する。以下、便宜上、この平均値を「第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１」とも称呼する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始してステップ１０１０に進み、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、および、第１吸入空気量過少検出フラグＸＧＡＮ１の値の少なくとも１つが「１」であるか否かを判定する。現時点における第１燃料過多噴射フラグＸＱＰ１の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定してステップ１０２０に進む。
ＣＰＵ８１は、ステップ１０２０にて、下記（７）式に第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値および第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値を適用することにより、第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１を取得する。
ΔＮＯｘａｖｅ１＝｛ΔＮＯｘ（Ｑｔｇｔ１）＋ΔＮＯｘ（Ｑｔｇｔ２）｝／２    ・・・（７）
その後、ＣＰＵ８１は、ステップ１０９５に進んで本ルーチンを一旦終了する。
なお、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、および、第１吸入空気量過少検出フラグＸＧＡＮ１の値の全てが「０」であれば、ＣＰＵ８１は、ステップ１０１０にて「Ｎｏ」と判定してステップ１０９５に進み、本ルーチンを一旦終了する。すなわち、第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１は取得されない。
場合１−１の説明に戻ると、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、ステップ５１０を経由してステップ５２０に進む。現時点における第１燃料過多噴射フラグＸＱＰ１の値は「１」であるので、ＣＰＵ８１は、ステップ５２０にて「Ｙｅｓ」と判定し、ステップ５５０に進む。
ＣＰＵ８１は、ステップ５５０にて、下記（８）式に第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Ｑｃを取得する。下記（８）式において、Ｋ１は所定の負の係数である。そのため、燃料噴射量補正量Ｑｃは負の数となる。
Ｑｃ＝Ｋ１・｜ΔＮＯｘａｖｅ１｜    ・・・（８）
次いで、ＣＰＵ８１は、ステップ５６０に進み、燃料噴射量の目標値Ｑｔｇｔに上記燃料噴射量補正量Ｑｃを加算する。燃料噴射量補正量Ｑｃは負の数であるので、実際には、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ減少せしめられる。
次いで、ＣＰＵ８１は、ステップ５７０に進み、燃料噴射量補正量の積算値Ｑｃｓｕｍに燃料噴射量補正量Ｑｃを加算する（Ｑｃは負の数であるので、実際には減算する）ことにより、新たな燃料噴射量補正量の積算値Ｑｃｓｕｍを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Ｑｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ５８０に進み、第１燃料過多噴射フラグＸＱＰ１の値に「０」を格納し、第１燃料過少噴射フラグＸＱＮ１の値に「０」を格納する。
次いで、ＣＰＵ８１は、ステップ５４０に進み、上述したように補正された目標値Ｑｔｇｔだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Ｑｔｇｔだけの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ５９５に進んで本ルーチンを一旦終了する。
このように、燃料噴射量ずれが正であるとき（すなわち、第１燃料過多噴射フラグＸＱＰ１の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ補正（減少）せしめられる。この結果、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが正である場合に実行される処理である。
（場合１−２）少なくとも吸入空気量ずれが「正」である場合
この場合、上述したように、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも「大きい」。さらに、上記所定値として第２の目標値Ｑｔｇｔ２を採用すると、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「負」である。
よって、この場合、ＣＰＵ８１は、図９のステップ８１６にて「Ｙｅｓ」と判定してステップ８１８に進む。さらに、ＣＰＵ８１は、ステップ８１８にて「Ｎｏ」と判定し、ステップ８２２に進む。
ＣＰＵ８１は、ステップ８２２にて、第１吸入空気量過多検出フラグＸＧＡＰ１の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定してステップ１０２０に進む。ＣＰＵ８１は、ステップ１０２０にて第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１を取得し、ステップ１０９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、ステップ６１０を経由してステップ６２０に進む。現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値は「１」であるので、ＣＰＵ８１は、ステップ６２０にて「Ｙｅｓ」と判定してステップ６４０に進む。
ＣＰＵ８１は、ステップ６４０にて、下記（９）式に第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Ｇａｃを取得する。下記（９）式において、Ｋ３は所定の負の係数である。そのため、吸入空気量補正量Ｇａｃは負の数となる。
Ｇａｃ＝Ｋ３・｜ΔＮＯｘａｖｅ１｜    ・・・（９）
次いで、ＣＰＵ８１は、ステップ６５０に進み、吸入空気量の測定値Ｇａｍｓｒに吸入空気量補正量Ｇａｃを加算する。吸入空気量補正量Ｇａｃは負の数であるので、実際には、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ減少せしめられる。
次いで、ＣＰＵ８１は、ステップ６６０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍに吸入空気量補正量Ｇａｃを加算する（Ｇａｃは負の数であるので、実際には減算する）ことにより、新たな吸入空気量補正量の積算値Ｇａｃｓｕｍを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Ｇａｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ６７０に進み、第１吸入空気量過多検出フラグＸＧＡＰ１の値に「０」を格納し、第１吸入空気量過少検出フラグＸＧＡＮ１の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ６９５に進んで本ルーチンを一旦終了する。
このように、少なくとも吸入空気量ずれが正であるとき（すなわち、第１吸入空気量過多検出フラグＸＧＡＰ１の値が「１」であるとき）、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ補正（減少）せしめられる。この結果、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが正である場合に実行される処理である。
（場合１−３）少なくとも吸入空気量ずれが「負」である場合
この場合、上述したように、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも「小さい」。さらに、上記所定値として第２の目標値Ｑｔｇｔ２を採用すると、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「正」である。
よって、この場合、ＣＰＵ８１は、ステップ８１６にて「Ｎｏ」と判定してステップ８２４に進む。ＣＰＵ８１は、ステップ８２４にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも小さいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも小さいので、ＣＰＵ８１は、ステップ８２４にて「Ｙｅｓ」と判定してステップ８２６に進む。
ＣＰＵ８１は、ステップ８２６にて、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「正」であるので、ＣＰＵ８１は、ステップ８２６にて「Ｙｅｓ」と判定してステップ８２８に進む。
ＣＰＵ８１は、ステップ８２８にて、第１吸入空気量過少検出フラグＸＧＡＮ１の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１吸入空気量過少検出フラグＸＧＡＮ１の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定し、ステップ１０２０に進む。ＣＰＵ８１は、ステップ１０２０にて第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１を取得し、ステップ１０９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、ステップ６１０を経由してステップ６２０に進む。現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ６２０にて「Ｎｏ」と判定してステップ６３０に進む。
現時点における第１吸入空気量過少検出フラグＸＧＡＮ１の値は「１」であるので、ＣＰＵ８１は、ステップ６３０にて「Ｙｅｓ」と判定してステップ６８０に進む。
ＣＰＵ８１は、ステップ６８０にて、下記（１０）式に第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Ｇａｃを取得する。下記（１０）式において、Ｋ４は所定の正の係数である。そのため、吸入空気量補正量Ｇａｃは正の数となる。
Ｇａｃ＝Ｋ４・｜ΔＮＯｘａｖｅ１｜    ・・・（１０）
次いで、ＣＰＵ８１は、ステップ６５０に進み、吸入空気量の測定値Ｇａｍｓｒに吸入空気量補正量Ｇａｃを加算する。吸入空気量補正量Ｇａｃは正の数であるので、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ増大せしめられる。
次いで、ＣＰＵ８１は、ステップ６６０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍに吸入空気量補正量Ｇａｃを加算する（Ｇａｃは正の数であるので、実際に加算する）ことにより、新たな吸入空気量補正量の積算値Ｇａｃｓｕｍを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Ｇａｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ＣＰＵ８１は、ステップ６７０に進み、第１吸入空気量過多検出フラグＸＧＡＰ１の値に「０」を格納し、第１吸入空気量過少検出フラグＸＧＡＮ１の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ６９５に進んで本ルーチンを一旦終了する。
このように、少なくとも吸入空気量ずれが負であるとき（すなわち、第１吸入空気量過少検出フラグＸＧＡＮ１の値が「１」であるとき）、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ補正（増大）せしめられる。この結果、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが負である場合に実行される処理である。
（場合１−４）燃料噴射量ずれが「負」である場合
この場合、上述したように、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも「小さい」。さらに、上記所定値として第２の目標値Ｑｔｇｔ２を採用すると、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「負」である。
よって、この場合、ＣＰＵ８１は、図９のステップ８１６およびステップ８２４を経由してステップ８２６に進み、ステップ８２６にて「Ｎｏ」と判定してステップ８３０に進む。
ＣＰＵ８１は、ステップ８３０にて、第１燃料過少噴射フラグＸＱＮ１の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１燃料過少噴射フラグＸＱＮ１の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定し、ステップ１０２０に進む。ＣＰＵ８１は、ステップ１０２０にて第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１を取得し、ステップ１０９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、ステップ５１０を経由してステップ５２０に進む。現時点における第１燃料過多噴射フラグＸＱＰ１の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ５２０にて「Ｎｏ」と判定し、ステップ５３０に進む。
現時点における第１燃料過少噴射フラグＸＱＮ１の値は「１」であるので、ＣＰＵ８１は、ステップ５３０にて「Ｙｅｓ」と判定してステップ５９０に進む。
ＣＰＵ８１は、ステップ５９０にて、下記（１１）式に第１ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ１の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Ｑｃを取得する。下記（１１）式において、Ｋ２は所定の正の係数である。そのため、燃料噴射量補正量Ｑｃは正の数となる。
Ｑｃ＝Ｋ２・｜ΔＮＯｘａｖｅ１｜    ・・・（１１）
次いで、ＣＰＵ８１は、ステップ５６０に進み、燃料噴射量の目標値Ｑｔｇｔに燃料噴射量補正量Ｑｃを加算する。上述したように燃料噴射量補正量Ｑｃは正の数であるので、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ増大せしめられる。
次いで、ＣＰＵ８１は、ステップ５７０に進み、燃料噴射量補正量の積算値Ｑｃｓｕｍに燃料噴射量補正量Ｑｃを加算する（Ｑｃは正の数であるので、実際に加算する）ことにより、新たな燃料噴射量補正量の積算値Ｑｃｓｕｍを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Ｑｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ５８０に進み、第１燃料過多噴射フラグＸＱＰ１の値に「０」を格納し、第１燃料過少噴射フラグＸＱＮ１の値に「０」を格納する。
次いで、ＣＰＵ８１は、ステップ５４０に進み、補正された目標値Ｑｔｇｔの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Ｑｔｇｔの燃料が燃料噴射装置２２に噴射（噴射）される。その後、ＣＰＵ８１は、ステップ５９５に進んで本ルーチンを一旦終了する。
このように、燃料噴射量ずれが負であるとき（すなわち、第１燃料過少噴射フラグＸＱＮ１の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ補正（増大）せしめられる。この結果、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが負である場合に実行される処理である。
（場合１−５）吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合
この場合、上述したように、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「ゼロ」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は「ゼロ」であり、かつ、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「ゼロ」である。
よって、この場合、ＣＰＵ８１は、ステップ８１６およびステップ８２４を経由してステップ８３２に進む。ＣＰＵ８１は、ステップ８３２にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値がゼロであり且つ第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値がゼロであるか否かを判定する。この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は「ゼロ」であり且つ第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値は「ゼロ」であるので、ＣＰＵ８１は、ステップ８３２にて「Ｙｅｓ」と判定してステップ８３４に進む。
次いで、ＣＰＵ８１は、ステップ８３４〜ステップ８４０の処理をこの順に実行する。具体的に述べると、ＣＰＵ８１は、ステップ８３４にて第１燃料過多噴射フラグＸＱＰ１の値に「０」を、ステップ８３６にて第１燃料過少噴射フラグＸＱＮ１の値に「０」を、ステップ８３８にて第１吸入空気量過多検出フラグＸＧＡＰ１の値に「０」を、ステップ８４０にて第１吸入空気量過少検出フラグＸＧＡＮ１の値に「０」を、格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、および、第１吸入空気量過少検出フラグＸＧＡＮ１の値の全ては、上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｎｏ」と判定してステップ１０９５に直接進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、現時点における第１燃料過多噴射フラグＸＱＰ１の値は「０」であり且つ第１燃料過少噴射フラグＸＱＮ１の値は「０」であるので、ステップ５１０、ステップ５２０、ステップ５３０およびステップ５４０を経由してステップ５９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値は「０」であり且つ第１吸入空気量過少検出フラグＸＧＡＮ１の値は「０」であるので、ステップ６１０、ステップ６２０およびステップ６３０を経由してステップ６９５に進んで本ルーチンを一旦終了する。
このように、燃料噴射量ずれが「ゼロ」であり且つ吸入空気量ずれが「ゼロ」であるとき（すなわち、第１燃料過多噴射フラグＸＱＰ１の値が「０」であり且つ第１燃料過少噴射フラグＸＱＮ１の値が「０」であるとき）、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである場合に実行される処理である。
（場合１−６）吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合
この場合、上述したように、燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」であり、かつ、燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「正」または「負」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値は、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値と「同一」である。さらに、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値はゼロではなく、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値はゼロではない。
よって、この場合、ＣＰＵ８１は、図９のステップ８１６およびステップ８２４を経由してステップ８３２に進み、ステップ８３２にて「Ｎｏ」と判定してステップ８４２に進む。
ＣＰＵ８１は、ステップ８４２にて、第１他異常発生フラグＸＯＴＨ１の値に「１」を格納する。次いで、ＣＰＵ８１は、ステップ８３４〜ステップ８４０を経由してステップ８９５に進み、本ルーチンを一旦終了する。よって、この場合、第１燃料過多噴射フラグＸＱＰ１の値は「０」であり、第１燃料過少噴射フラグＸＱＮ１の値は「０」であり、第１吸入空気量過多検出フラグＸＧＡＰ１の値は「０」であり、第１吸入空気量過少検出フラグＸＧＡＮ１の値は「０」である。
ここで、ＣＰＵ８１は、図１０のステップ１０００から処理を開始すると、ステップ１０００に続くステップ１０１０にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、ステップ５１０、ステップ５２０、ステップ５３０およびステップ５４０を経由してステップ５９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、ステップ６１０、ステップ６２０およびステップ６３０を経由してステップ６９５に進んで本ルーチンを一旦終了する。
このように、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じているとき（すなわち、第１他異常発生フラグＸＯＴＨ１の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合に実行される処理である。
以上、場合１−１〜１−６に場合を分けて説明したように、第１装置は、「燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」および「燃料噴射量の目標値Ｑｔｇｔが所定値であるときのＮＯｘ濃度ずれΔＮＯｘの値」に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。さらに、第１装置は、燃料噴射量ずれの状態および吸入空気量ずれの状態に応じて、吸入空気量の測定値Ｇａｍｓｒおよび燃料噴射量の目標値Ｑｔｇｔを補正する。
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図１１にフローチャートによって示した「異常通知ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量ずれの度合いが所定の度合いよりも大きいときに「吸入空気量センサ（エアフローメータ）７１が異常である」旨を、図示しない表示装置上に警報ランプを点灯することなどによって表示する。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量ずれの度合いが所定の度合いよりも大きいときに「燃料噴射装置（インジェクタ）２２が異常である」旨を、上記同様に表示する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１１のステップ１１００から処理を開始すると、ステップ１１１０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍが所定の閾値Ｇａｃｓｕｍｔｈよりも大きいか否かを判定する。
吸入空気量補正量の積算値Ｇａｃｓｕｍが上記閾値Ｇａｃｓｕｍｔｈよりも大きければ、ＣＰＵ８１は、ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進む。ＣＰＵ８１は、ステップ１１２０にて「吸入空気量センサ７１が異常である」旨を図示しない表示装置に表示させ、ステップ１１３０に進む。
これに対し、吸入空気量補正量の積算値Ｇａｃｓｕｍが上記閾値Ｇａｃｓｕｍｔｈ以下であれば、ＣＰＵ８１は、ステップ１１１０にて「Ｎｏ」と判定してステップ１１３０に直接進む。すなわち、「吸入空気量センサ７１が異常である」旨の表示はなされない。
ＣＰＵ８１は、ステップ１１３０にて、燃料噴射量補正量の積算値Ｑｃｓｕｍが所定の閾値Ｑｃｓｕｍｔｈよりも大きいか否かを判定する。
燃料噴射量補正量の積算値Ｑｃｓｕｍが上記閾値Ｑｃｓｕｍｔｈよりも大きければ、ＣＰＵ８１は、ステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進む。ＣＰＵ８１は、ステップ１１４０にて「燃料噴射装置２２が異常である」旨を図示しない表示装置に表示させ、ステップ１１９５に進んで本ルーチンを一旦終了する。
これに対し、燃料噴射量補正量の積算値Ｑｃｓｕｍが上記閾値Ｑｃｓｕｍｔｈ以下であれば、ＣＰＵ８１は、ステップ１１３０にて「Ｎｏ」と判定してステップ１１９５に直接進んで本ルーチンを一旦終了する。すなわち、「燃料噴射装置２２が異常である」旨の表示はなされない。
ところで、上述したように、第１燃料過多噴射フラグＸＱＰ１の値および第１燃料過少噴射フラグＸＱＮ１の値は、燃料噴射量の目標値Ｑｔｇｔが補正された後に「０」に再設定される（図５のステップ５８０を参照。）。そのため、例えば燃料噴射量ずれ「のみ」が生じている場合、一の時点において上記処理が実行されることによって燃料噴射量ずれが十分に補正されなければ（すなわち、燃料噴射量ずれがゼロにならなければ）、その一の時点以降の他の時点において第１状態判定ルーチンが実行されたときに、第１燃料過多噴射フラグＸＱＰ１の値または第１燃料過少噴射フラグＸＱＮ１の値が「１」に再び設定される。その結果、上記他の時点においても燃料噴射量の目標値Ｑｔｇｔが補正される。
一方、上記一の時点において燃料噴射量ずれが十分に補正されれば、上記他の時点において第１状態判定ルーチンが実行されたときに第１燃料過多噴射フラグＸＱＰ１の値および第１燃料過少噴射フラグＸＱＮ１の値が「１」に設定されない。その結果、他の時点において燃料噴射量の目標値Ｑｔｇｔは補正されない。このように、第１装置は、燃料噴射量ずれ「のみ」が生じている場合、燃料噴射量ずれが十分に補正されるまで燃料噴射量の目標値Ｑｔｇｔを繰り返し補正する。
さらに、第１吸入空気量過多検出フラグＸＧＡＰ１の値および第１吸入空気量過少検出フラグＸＧＡＮ１の値は、吸入空気量の測定値Ｇａｍｓｒが補正された後に「０」に再設定される（図６のステップ６７０を参照。）。上記説明から明らかなように、第１装置は、吸入空気量ずれ「のみ」が生じている場合、吸入空気量ずれが十分に補正されるまで吸入空気量の測定値Ｇａｍｓｒを補正することを繰り返す。
一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、例えば上記一の時点において「少なくとも吸入空気量ずれが生じている」と判定されれば、吸入空気量の測定値Ｇａｍｓｒが補正された後に第１吸入空気量過多検出フラグＸＧＡＰ１の値および第１吸入空気量過少検出フラグＸＧＡＮ１の値が「０」に再設定される。この補正によって吸入空気量ずれが十分に補正されなければ、上記他の時点において再び「少なくとも吸入空気量ずれが生じている」と判定され、吸入空気量の測定値Ｇａｍｓｒが補正される。
一方、上記一の時点において実行された補正によって吸入空気量ずれが十分に補正されれば、上記他の時点において「燃料噴射量ずれが生じている」と判定され、燃料噴射量の目標値Ｑｔｇｔが補正される。その後、燃料噴射量ずれが十分に補正されるまで、燃料噴射量の目標値Ｑｔｇｔが補正されることが繰り返される。
このように、第１装置は、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じている場合であっても、それらの「双方」が生じている場合であっても、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、上記補正を繰り返し実行する。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
＜装置の作用および効果＞
第１装置は、排ガスのＮＯｘ濃度の測定値ＮＯｘｍｓｒと、機関１０の運転状態に基づいて定まるＮＯｘ参照濃度ＮＯｘｒｅｆと、を比較することにより、ＮＯｘ濃度ずれΔＮＯｘを取得する。さらに、第１装置は、このＮＯｘ濃度ずれΔＮＯｘと、燃料噴射量の目標値Ｑｔｇｔと、の関係（上記第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ））に基づき、燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、吸入空気量ずれがゼロ、正および負のいずれであるか、を判定する。すなわち、第１装置は、ＮＯｘ濃度ずれΔＮＯｘが生じているとき、燃料噴射量の目標値Ｑｔｇｔと実際値Ｑａｃｔとがどのように異なるかを判定することができる。さらに、第１装置は、ＮＯｘ濃度ずれΔＮＯｘが生じているとき、吸入空気量の測定値Ｇａｍｓｒと実際値Ｇａａｃｔとがどのように異なるかを判定することができる。
さらに、第１装置は、燃料噴射量ずれが生じているとき、ＮＯｘ濃度ずれΔＮＯｘの大きさ（第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）および第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の平均値ΔＮＯｘａｖｅ）に応じて燃料噴射量の目標値Ｑｔｇｔを補正する。一方、第１装置は、吸入空気量ずれが生じているとき、ＮＯｘ濃度ずれΔＮＯｘの大きさΔＮＯｘａｖｅに応じて吸入空気量の測定値Ｇａｍｓｒを補正する。さらに、第１装置は、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、これら補正を繰り返し実行する。これにより、燃料噴射量ずれの大きさおよび吸入空気量の大きさが適切に低減される。その結果、ＮＯｘ濃度ずれが低減される。
加えて、第１装置は、燃料噴射量ずれを補正する際に用いられる補正量の積算値Ｑｃｓｕｍが所定の閾値Ｑｃｓｕｍｔｈを超えると、「燃料噴射装置２２が異常である」旨を表示装置に表示する。一方、第１装置は、吸入空気量ずれをを補正する際に用いられる補正量の積算値Ｇａｃｓｕｍが所定の閾値Ｇａｃｓｕｍｔｈを超えると、「吸入空気量センサ７１が異常である」旨を表示装置に表示する。
（第２実施形態）
次に、本発明の第２の実施形態に係る制御装置（以下、「第２装置」とも称呼する。）について説明する。
＜装置の概要＞
第２装置は、第１装置が適用される機関１０と同様の構成を有する機関（図１を参照。以下、便宜上、「機関１０」と称呼する。）に適用される。そこで、第２装置が適用される装置の概要についての詳細な説明は、省略される。
＜装置の作動の概要＞
以下、上述したように構成された第２装置の作動の概要について説明する。
第２装置は、第１装置における燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとの関係（すなわち、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ））に代えて「吸気酸素濃度Ｏｃｏｎと、ＮＯｘ濃度ずれΔＮＯｘと、の関係」に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する点においてのみ、第１装置と異なる。
具体的に述べると、第２装置は、第１装置と同様の手法にて「吸気酸素濃度Ｏｃｏｎ」および「ＮＯｘ濃度ずれΔＮＯｘ」を取得する。そして、第２装置は、機関１０が運転されている期間中、吸気酸素濃度Ｏｃｏｎと、ＮＯｘ濃度ずれΔＮＯｘと、を対応させながら取得し続ける。さらに、第２装置は、取得されたこれら値に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。
第２装置は、上記状態判定の結果に応じて、燃料噴射量ずれの大きさが小さくなるように燃料噴射量の目標値Ｑｔｇｔを所定の補正量だけ補正する。さらに、第２装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさが小さくなるように吸入空気量の測定値Ｇａｍｓｒを所定の補正量だけ補正する。加えて、第２装置は、これら補正を、燃料噴射量ずれがゼロとなり且つ吸入空気量ずれがゼロとなるまで繰り返す。
第２装置は、燃料噴射量の目標値Ｑｔｇｔの補正量の積算値が所定の閾値よりも大きくなると、「燃料噴射装置２２が異常である」ことを表示装置など（図１において図示省略。）に表示する。さらに、第２装置は、吸入空気量の測定値Ｇａｍｓｒの補正量の積算値が所定の閾値よりも大きくなると、「吸入空気量センサ７１が異常である」ことを上記表示装置などに表示する。以上が第２装置の作動の概要である。
＜内燃機関の制御方法＞
次いで、第２装置の具体的な作動についての説明を行う前に、第２装置に採用されている機関１０の制御方法について述べる。第２装置は、第１装置と同じＮＯｘ濃度推定モデルを採用している。そこで、ＮＯｘ濃度推定モデルについての説明（上記説明１−１を参照。）、および、吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由についての説明（上記説明１−２を参照。）は、省略される。以下、第２装置に採用されている制御方法につき、下記説明２−１〜２−２の順序に従って説明する。
（説明２−１）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
（説明２−２）状態判定の結果に応じた補正についての説明
（説明２−１）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
以下、上記ＮＯｘ濃度推定モデルを用いて、下記条件２−Ａ〜２−Ｄのうちの「一または複数」が成立する場合における「吸気酸素濃度ＯｃｏｎとＮＯｘ濃度ずれΔＮＯｘとの関係」について説明する。
（条件２−Ａ）吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒよりも小さい。
（条件２−Ｂ）吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒよりも大きい。
（条件２−Ｃ）燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔよりも小さい。
（条件２−Ｄ）燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔよりも大きい。
以下、条件２−Ａに示す状態を「吸入空気量ずれが負である」と、条件２−Ｂに示す状態を「吸入空気量ずれが正である」と、条件２−Ｃに示す状態を「燃料噴射量ずれが負である」と、条件２−Ｄに示す状態を「燃料噴射量ずれが正である」と、称呼する。さらに、以下、便宜上、吸気酸素濃度ＯｃｏｎとＮＯｘ濃度ずれΔＮＯｘとの関係を「第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）」と称呼する。
さらに、この説明２−１において、吸入空気量および燃料噴射量「以外」のＮＯｘ濃度に影響を与え得る運転パラメータ（例えば、気筒内に吸入されるガスの総量Ｇｃｙｌに影響を与える機関回転速度ＮＥおよび過給圧Ｐｉｍ、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔ、ならびに、気筒内に燃料を噴射する時期である燃料噴射時期など）は、所定の値に固定されていると仮定する。すなわち、吸入空気量ずれおよび燃料噴射量ずれ「のみ」がＮＯｘ濃度ずれΔＮＯｘに影響を与えると仮定する。
まず、上記条件２−Ａ〜２−Ｄのうちの「１つ」が成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）について説明する。
図１２（Ａ）は、条件２−Ａ〜条件２−Ｄのうちの１つが成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。ＮＯｘ濃度推定モデルにおける指数Ａ、ＢおよびＣは（上記（５）式を参照。）、「機関１０と同一の構成を有する機関であって、燃料噴射量の目標値Ｑｔｇｔと実際値Ｑａｃｔとが一致しており且つ吸入空気量の測定値ＮＯｘｍｓｒと実際値Ｇａａｃｔとが一致していることが確認されている機関」を用いた実験によって定められた。
図１２（Ａ）において、Ｇａｍｓｒ（−）は、条件２−Ａが成立する場合（吸入空気量ずれが負である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（＋）は、条件２−Ｂが成立する場合（吸入空気量ずれが正である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。Ｑａｃｔ（−）は、条件２−Ｃが成立する場合における（燃料噴射量ずれが負である場合）の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。Ｑａｃｔ（＋）は、条件２−Ｄが成立する場合（燃料噴射量ずれが正である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。
まず、「条件２−Ａのみ」が成立する場合、曲線Ｇａｍｓｒ（−）に示すように、少なくとも吸気酸素濃度Ｏｃｏｎが所定値Ｃから所定値Ｄである範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
さらに、「条件２−Ｂのみ」が成立する場合、曲線Ｇａｍｓｒ（＋）に示すように、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
加えて、「条件２−Ｃのみ」が成立する場合、曲線Ｑａｃｔ（−）に示すように、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
さらに加えて、「条件２−Ｄのみ」が成立する場合、曲線Ｑａｃｔ（＋）に示すように、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、燃料噴射量の目標値Ｑｔｇｔが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
このように、条件２−Ａが成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、条件２−Ｂが成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、条件２−Ｃが成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、条件２−Ｄが成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、は異なる。
所定値Ｃおよび所定値Ｄのそれぞれは、上述したように条件２−Ａ〜２−Ｄのうちの一の条件が成立した場合に得られる第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）がその一の条件とは異なる他の条件が成立した場合に得られる第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と異なることとなる適値に設定されればよい。
以上、条件２−Ａ〜２−Ｄのうちの「１つ」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じた場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）について説明した。
次いで、上記条件２−Ａ〜２−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）について説明する。
図１２（Ｂ）は、条件２−Ａ〜２−Ｄのうちの複数が成立する場合における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。
図１２（Ｂ）において、Ｇａｍｓｒ（−）＋Ｑａｃｔ（＋）は、条件２−Ａおよび条件２−Ｄが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが正である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（−）＋Ｑａｃｔ（−）は、条件２−Ａおよび条件２−Ｃが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが負である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（＋）＋Ｑａｃｔ（＋）は、条件２−Ｂおよび条件２−Ｄが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが正である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。Ｇａｍｓｒ（＋）＋Ｑａｃｔ（−）は、条件２−Ｂおよび条件２−Ｃが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが負である場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）を示す曲線を表す。
なお、条件２−Ａ（吸入空気量ずれが負である状態）と、条件２−Ｂ（吸入空気量ずれが正である状態）と、は同時に成立し得ない。さらに、条件２−Ｃ（燃料噴射量ずれが負である状態）と、条件２−Ｄ（燃料噴射量ずれが正である状態）と、は同時に成立し得ない。よって、図１２（Ｂ）に示す４つの組み合わせが、成立し得る組み合わせの全てである。
まず、「条件２−Ａおよび条件２−Ｄ」が成立する場合、曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（＋）に示すように、少なくとも吸気酸素濃度Ｏｃｏｎが所定値Ｃから所定値Ｄである範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
さらに、「条件２−Ａおよび条件２−Ｃ」が成立する場合、曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（−）に示すように、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は小さくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。
加えて、「条件２−Ｂおよび条件２−Ｄ」が成立する場合、曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（＋）に示すように、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
さらに加えて、「条件２−Ｂおよび条件２−Ｃ」が成立する場合、曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（−）に示すように、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大するにつれてＮＯｘ濃度ずれΔＮＯｘの値は大きくなる。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。
このように、条件２−Ａおよび条件２−Ｄが成立する場合の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、条件２−Ａおよび条件２−Ｃが成立する場合の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）とは、上記範囲内におけるＮＯｘ濃度ずれΔＮＯｘの大きさが異なることを除いて同一である。さらに、条件２−Ｂおよび条件２−Ｄが成立する場合の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、条件２−Ｂおよび条件２−Ｃが成立する場合の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）とは、上記範囲内におけるＮＯｘ濃度ずれΔＮＯｘの大きさが異なることを除いて同一である。加えて、条件２−Ａおよび条件２−Ｄ、あるいは、条件２−Ａおよび条件２−Ｃが成立する場合の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）は、条件２−Ｂおよび条件２−Ｄ、あるいは、条件２−Ｂおよび条件２−Ｃが成立する場合の第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、異なる。
以上、条件２−Ａ〜２−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）について説明した。
なお、「条件２−Ａ〜２−Ｄのいずれも成立しない」場合（すなわち、吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合）、実際のＮＯｘ濃度ＮＯｘｃｏｎはＮＯｘ濃度ＮＯｘｃｏｎと一致する。よって、この場合、ＮＯｘ濃度ずれΔＮＯｘは、吸気酸素濃度Ｏｃｏｎにかからわずゼロである。すなわち、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」であり、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「ゼロ」である。
ところで、上述したように、機関１０を構成する部材のうち「吸入空気量および燃料噴射量と関連しない部材」が正常に作動しない場合においても、ＮＯｘ濃度ずれは生じ得る。例えば、ＮＯｘ濃度センサ７５が正常に作動しなし場合（実際のＮＯｘ濃度とは異なるＮＯｘ濃度を表す出力値を出力する場合）、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロであっても、ＮＯｘ濃度ずれが生じる。以下、このような状態を「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と称呼する。
この場合、図１３の曲線Ｏｔｈｅｒ（＋）または曲線Ｏｔｈｅｒ（−）に示すように、吸気酸素濃度ＯｃｏｎにかかわらずＮＯｘ濃度ずれΔＮＯｘの大きさは変化しない。すなわち、少なくとも上記範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」である。さらに、この場合、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘは「正」または「負」である。
このように、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件２−Ａおよび条件２−Ｂを参照。）、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件２−Ｃおよび条件２−Ｄを参照。）、により、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）は異なる。換言すると、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）に基づき、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、を判定することができる。さらに、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）に基づき、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれ」が生じているか否か、を判定することができる。
具体的に述べると、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）が「所定範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「負」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘが「正」である関係」である場合、その関係は、図１２（Ａ）の曲線Ｇａｍｓｒ（−）、ならびに、図１２（Ｂ）の曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（＋）および曲線Ｇａｍｓｒ（−）＋Ｑａｃｔ（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが負である」と判定することができる。
さらに、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）が「所定範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「正」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘが「負」である関係」である場合、その関係は、図１２（Ａ）の曲線Ｇａｍｓｒ（＋）、ならびに、図１２（Ｂ）の曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（＋）および曲線Ｇａｍｓｒ（＋）＋Ｑａｃｔ（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが正である」と判定することができる。
加えて、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）が「所定範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「正」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘが「正」である関係」である場合、その関係は、図１２（Ａ）の曲線Ｑａｃｔ（＋）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが正である」と判定することができる。
さらに加えて、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）が「所定範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「負」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘが「負」である関係」である場合、その関係は、図１２（Ａ）の曲線Ｑａｃｔ（−）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが負である」と判定することができる。
なお、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）が「所定範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「ゼロ」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘが「ゼロ」である関係」である場合、「吸入空気量ずれがゼロであり、かつ、燃料噴射量ずれがゼロである」と判定することができる。
さらに、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）が「所定範囲内（Ｃ≦Ｏｃｏｎ≦Ｄ）において、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量が「ゼロ」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘが「正」または「負」である関係」である場合、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定することができる。
このように、第２装置は、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。以下、上述した燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する方法を、「第２状態判定方法」とも称呼する。
（説明２−２）状態判定の結果に応じた補正についての説明
第２装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさを低減するように吸入空気量の測定値Ｇａｍｓｒを補正し、燃料噴射量ずれの大きさを低減するように燃料噴射量の目標値Ｑｔｇｔを補正する。
具体的に述べると、第２装置は、吸入空気量ずれが「正」であると判定した場合、吸入空気量の測定値Ｇａｍｓｒを所定の補正量だけ「減少」するように補正する。一方、第２装置は、吸入空気量ずれが「負」であると判定した場合、吸入空気量の測定値Ｇａｍｓｒを所定の補正量だけ「増大」するように補正する。これら補正にて用いられる「補正量」はＮＯｘ濃度ずれΔＮＯｘの大きさに応じて決定される。
例えば、図１４（Ａ）に示すように、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘ（Ｃ）および吸気酸素濃度Ｏｃｏｎが所定値ＤであるときのＮＯｘ濃度ずれΔＮＯｘ（Ｄ）の双方が「正」であって、ＮＯｘ濃度ずれΔＮＯｘ（Ｃ）よりもＮＯｘ濃度ずれΔＮＯｘ（Ｄ）が小さい場合、第２装置は、上記説明２−１にて述べたように、「少なくとも吸入空気量ずれが負である」と判定する。
この場合、第２装置は、例えば、ＮＯｘ濃度ずれΔＮＯｘ（Ｃ）およびＮＯｘ濃度ずれΔＮＯｘ（Ｄ）の平均値に基づいて上記「補正量」を決定する。そして、第２装置は、吸入空気量の測定値Ｇａｍｓｒをこの補正量だけ「増大」するように補正する。具体的に述べると、第２装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、吸入空気量センサ７１の出力値（出力電圧）と吸入空気量の測定値Ｇａｍｓｒとの関係（マップ）を、測定値Ｇａｍｓｒが増大されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
さらに、第２装置は、燃料噴射量ずれが「正」であると判定した場合、燃料噴射量の目標値Ｑｔｇｔを所定の補正量だけ「減少」するように補正する。一方、第２装置は、燃料噴射量ずれが「負」であると判定した場合、燃料噴射量の目標値Ｑｔｇｔを所定の補正量だけ「増大」するように補正する。これら補正において用いられる「補正量」は、ＮＯｘ濃度ずれΔＮＯｘの大きさに応じて決定される。
例えば、図１４（Ｂ）に示すように、吸気酸素濃度Ｏｃｏｎが所定値ＣであるときのＮＯｘ濃度ずれΔＮＯｘ（Ｃ）および吸気酸素濃度Ｏｃｏｎが所定値ＤであるときのＮＯｘ濃度ずれΔＮＯｘ（Ｄ）の双方が「正」であって、ＮＯｘ濃度ずれΔＮＯｘ（Ｃ）よりもＮＯｘ濃度ずれΔＮＯｘ（Ｄ）が大きい場合、第２装置は、上記説明２−１にて述べたように、「燃料噴射量ずれが正である」と判定する。
この場合、第２装置は、例えば、ＮＯｘ濃度ずれΔＮＯｘ（Ｃ）とＮＯｘ濃度ずれΔＮＯｘ（Ｄ）との平均値に基づいて上記「補正量」を決定する。そして、第２装置は、燃料噴射量の目標値Ｑｔｇｔをこの補正量だけ「減少」するように補正する。具体的に述べると、第２装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、燃料噴射装置２２の燃料噴射時間と燃料噴射量の目標値Ｑｔｇｔとの関係（マップ）を、目標値Ｑｔｇｔが減少されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
このように燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒが補正されることにより、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
ところで、上記説明２−１にて述べたように、第２装置は、所定の条件が成立する場合、「少なくとも」吸入空気量ずれが負であると判定する（条件２−Ａが成立する場合、条件２−Ａおよび条件２−Ｃが成立する場合、ならびに、条件２−Ａおよび条件２−Ｄが成立する場合）。この場合、第２装置は、「吸入空気量ずれが負である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが正である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが負である」か、を区別して判定しない。すなわち、吸入空気量ずれ「のみ」が生じているか、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じているか、は判定されない。
しかし、上記説明２−２にて述べたように、上記いずれの条件が成立する場合であっても、第２装置は「吸入空気量ずれ」を低減するように吸入空気量の測定値Ｇａｍｓｒを補正する。そのため、吸入空気量ずれ「のみ」が生じている場合、この補正によってその吸入空気量ずれが低減される。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、この補正によってその「双方」のうちの吸入空気量ずれが低減される。そして、例えば繰り返しこの補正が行われることによって吸入空気量ずれが十分に低減されれば、それら「双方」のうちの燃料噴射量ずれ「のみ」が残る。燃料噴射量ずれ「のみ」が残れば、第２装置は、燃料噴射量ずれが生じていると判定すると共にその燃料噴射量ずれを低減するように燃料噴射量の目標値Ｑｔｇｔを補正する。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
このように、上記いずれの場合（吸入空気量ずれ「のみ」が生じている場合、および、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合）であっても、第２装置が繰り返し補正を行うことにより、ＮＯｘ濃度ずれΔＮＯｘが低減される。なお、上記説明から理解されるように、第２装置が「少なくとも吸入空気量ずれが「正」である」と判定する場合であっても、上記同様、第２装置が繰り返し補正を行うことによってＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
なお、第２装置は、「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」と判定した場合、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒを補正しない。さらに、第２装置は、「燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている」と判定した場合、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒを補正しない。
以上、説明２−１〜２−２にて述べたように、第２装置は燃料噴射量ずれの状態および吸入空気量ずれの状態を判定すると共に、その判定の結果に応じてＮＯｘ濃度ずれΔＮＯｘの大きさを低減するように機関１０を制御する。
ところで、上記第２状態判定方法において採用されている吸気酸素濃度Ｏｃｏｎは、具体的には「上記（１）式にて算出される吸気酸素濃度の計算値（見掛け上の吸気酸素濃度）」である。そのため、燃料噴射量ずれおよび吸入空気量ずれの少なくとも一方が生じている場合、この見掛け上の吸気酸素濃度Ｏｃｏｎと、吸気酸素濃度の実際値Ｏｃｏｎａｃｔと、は一致しない（上記説明（１−２）を参照。）。よって、この場合、「判定の指標とされる第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）そのもの」に何らかのずれが生じている。そこで、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）における見掛け上の吸気酸素濃度Ｏｃｏｎを「吸気酸素濃度の実際値Ｏｃｏｎａｃｔ」に置き換えると、上記状態判定をより適切に行うことができるとも考えられる。
しかし、上述したように、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）における「ＮＯｘ濃度ずれΔＮＯｘ」は、ＮＯｘ濃度の測定値ＮＯｘｍｓｒと、機関１０の運転状態に応じて定まるＮＯｘ参照濃度ＮＯｘｒｅｆと、に基づいて定められる。そのため、図１５に示すように、判定の指標として時点ｔにおける見掛け上の吸気酸素濃度Ｏｃｏｎ（ｔ）を用いた場合におけるＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ）と、判定の指標としてその時点ｔにおける吸気酸素濃度の実際値Ｏｃｏｎａｃｔ（ｔ）を用いた場合におけるＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎａｃｔ）と、は一致する。よって、見掛け上の吸気酸素濃度ＯｃｏｎとＮＯｘ濃度ずれΔＮＯｘとの関係（図中の実線）と、吸気酸素濃度の実際値ＯｃｏｎａｃｔとＮＯｘ濃度ずれΔＮＯｘとの関係（図中の破線）とは、単に図中横軸方向の位置が異なるに過ぎない。したがって、上記説明２−１〜２−２から理解されるように、所定の範囲（Ｃ≦Ｏｃｏｎ≦Ｄ）が適切に選択されていれば、判定の指標として見掛け上の吸気酸素濃度Ｏｃｏｎを用いた場合における上記状態判定の結果と、同指標として吸気酸素濃度の実際値Ｏｃｏｎａｃｔを用いた場合における上記状態判定の結果と、は一致する。
このように、判定の指標として見掛け上の吸気酸素濃度Ｏｃｏｎを用いても、同指標として吸気酸素濃度の実際値Ｏｃｏｎａｃｔを用いても、所定の範囲（Ｃ≦Ｏｃｏｎ≦Ｄ）が適切に選択されていれば、状態判定を適切に行うことができる。そこで、第２装置においては、判定の指標として見掛け上の吸気酸素濃度Ｏｃｏｎが用いられている。
一方、上述したように、ＮＯｘ濃度推定モデルにおける指数Ａ、ＢおよびＣは、ＮＯｘ濃度推定モデルが適用される内燃機関の構成等に応じて定められる。そのため、機関１０と異なる構成を有する他の機関にＮＯｘ濃度推定モデルが適用される場合、他の機関における指数Ａ、ＢおよびＣは、機関１０における指数Ａ、ＢおよびＣと異なる場合がある。この場合、機関１０における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、他の機関における第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）と、は異なる。しかし、上記説明から明らかなように、上記同様の考え方によって他の機関における燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
＜実際の作動＞
以下、第２装置の実際の作動について説明する。
第２装置は、第１装置において図５および図６にフローチャートによって示した処理に代えて「図１６および図１７にフローチャートによって示した処理」を実行する点、および、第１装置において図８〜図１０にフローチャートによって示した処理に代えて「図１８〜図２０にフローチャートによって示した処理」を実行する点においてのみ、第１装置と相違している。そこで、以下、これらの相違点を中心として説明する。
第２装置において、ＣＰＵ８１は、図７、図１１、および、図１６〜図２０にフローチャートによって示した各ルーチンを所定のタイミング毎に実行するようになっている。ＣＰＵ８１は、これらルーチンにおいて、第２燃料過多噴射フラグＸＱＰ２、第２燃料過少噴射フラグＸＱＮ２、第２吸入空気量過多検出フラグＸＧＡＰ２、第２吸入空気量過少検出フラグＸＧＡＮ２、および、第２他異常発生フラグＸＯＴＨ２を用いる。
第２燃料過多噴射フラグＸＱＰ２は、その値が「０」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが大きくないこと（すなわち、Ｑａｃｔ≦Ｑｔｇｔ）を表す。一方、第２燃料過多噴射フラグＸＱＰ２は、その値が「１」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが大きいこと（すなわち、Ｑａｃｔ＞Ｑｔｇｔ）を表す。
第２燃料過少噴射フラグＸＱＮ２は、その値が「０」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが小さくないこと（すなわち、Ｑａｃｔ≧Ｑｔｇｔ）を表す。一方、第２燃料過少噴射フラグＸＱＮ２は、その値が「１」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが小さいこと（すなわち、Ｑａｃｔ＜Ｑｔｇｔ）を表す。
第２吸入空気量過多検出フラグＸＧＡＰ２は、その値が「０」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが大きくないこと（すなわち、Ｇａｍｓｒ≦Ｇａａｃｔ）を表す。一方、第２吸入空気量過多検出フラグＸＧＡＰ２は、その値が「１」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが大きいこと（すなわち、Ｇａｍｓｒ＞Ｇａａｃｔ）を表す。
第２吸入空気量過少検出フラグＸＧＡＮ２は、その値が「０」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが小さくないこと（すなわち、Ｇａｍｓｒ≧Ｇａａｃｔ）を表す。一方、第２吸入空気量過多検出フラグＸＧＡＰ２は、その値が「１」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが小さいこと（すなわち、Ｇａｍｓｒ＜Ｇａａｃｔ）を表す。
第２他異常発生フラグＸＯＴＨ２は、その値が「０」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことを表す。一方、第２他異常発生フラグＸＯＴＨ２は、その値が「１」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていることを表す。
第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、および、第２他異常発生フラグＸＯＴＨ２の値は、バックアップＲＡＭ８４に格納される。さらに、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、および、第２吸入空気量過少検出フラグＸＧＡＮ２の値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２および吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。加えて、第２他異常発生フラグＸＯＴＨ２の値は、上記工場出荷時およびサービス点検実施時などにおいて、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている原因を解消する処置がなされた際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
以下、ＣＰＵ８１が実行する各ルーチンについて詳細に説明する。
まず、現時点における、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、および、第２他異常発生フラグＸＯＴＨ２の値は、全て「０」に設定されていると仮定する。以下、便宜上、この仮定を「第２初期設定仮定」とも称呼する。
ＣＰＵ８１は、機関１０が始動されると、任意の気筒のクランク角が圧縮上死点前の所定クランク角度（例えば、圧縮上死点前９０度クランク角）θｆに一致する毎に、図１６にフローチャートによって示した「第２燃料噴射制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、燃料噴射量の目標値Ｑｔｇｔを決定すると共に、その目標値Ｑｔｇｔだけの燃料を各気筒内に噴射させる。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔと一致していないと判定された場合にその目標値Ｑｔｇｔを補正すると共に、補正された目標値Ｑｔｇｔだけの燃料を各気筒内に噴射させる。
具体的に述べると、ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じて燃料噴射量の目標値Ｑｔｇｔを決定する。さらに、ＣＰＵ８１は、燃料噴射量の目標値Ｑｔｇｔよりも実際値Ｑａｃｔが大きいと判定されている場合、その目標値Ｑｔｇｔを所定の燃料噴射量補正量Ｑｃだけ減少させる。一方、ＣＰＵ８１は、燃料噴射量の目標値Ｑｔｇｔよりも実際値Ｑａｃｔが小さいと判定されている場合、その目標値Ｑｔｇｔを所定の燃料噴射量補正量Ｑｃだけ増大させる。
ＣＰＵ８１は、図１６に示すルーチンにおいて、燃料噴射量補正量Ｑｃの積算値Ｑｃｓｕｍを算出する。この積算値Ｑｃｓｕｍの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始してステップ１６１０に進み、「アクセルペダル開度Ａｃｃｐと、機関回転速度ＮＥと、燃料噴射量の目標値Ｑｔｇｔと、の関係」をあらかじめ定めた燃料噴射量目標値決定テーブルＭａｐＱｔｇｔ（Ａｃｃｐ，ＮＥ）に現時点におけるアクセルペダル開度Ａｃｃｐと機関回転速度ＮＥとを適用することにより、燃料噴射量の目標値Ｑｔｇｔを決定する。この燃料噴射量目標値決定テーブルＭａｐＱｔｇｔ（Ａｃｃｐ，ＮＥ）において、燃料噴射量の目標値Ｑｔｇｔは、アクセルペダル開度Ａｃｃｐおよび機関回転速度ＮＥに基づいて定まる要求トルクに応じた適値となるように、設計されている。
次いで、ＣＰＵ８１は、ステップ１６２０に進み、現時点における第２燃料過多噴射フラグＸＱＰ２の値が「１」であるか否かを判定する。現時点における第２燃料過多噴射フラグＸＱＰ２の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１６２０にて「Ｎｏ」と判定してステップ１６３０に進む。
ＣＰＵ８１は、ステップ１６３０にて、現時点における第２燃料過少噴射フラグＸＱＮ２の値が「１」であるか否かを判定する。現時点における第２燃料過少噴射フラグＸＱＮ２の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１６３０にて「Ｎｏ」と判定してステップ１６４０に進む。
ＣＰＵ８１は、ステップ１６４０にて、上記目標値Ｑｔｇｔだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、上記目標値Ｑｔｇｔの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ１６９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図１７にフローチャートによって示した「第２吸入空気量取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量の測定値Ｇａｍｓｒを取得する。さらに、ＣＰＵ８１は、このルーチンにより、吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒと一致していないと判定された場合、その測定値Ｇａｍｓｒを補正する。
具体的に述べると、ＣＰＵ８１は、このルーチンにより、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値ＮＯｘｍｓｒを取得する。さらに、ＣＰＵ８１は、吸入空気量の測定値ＮＯｘｍｓｒよりも実際値Ｇａａｃｔが大きいと判定されている場合、その測定値ＮＯｘｍｓｒを所定の吸入空気量補正量Ｇａｃだけ減少させる。一方、ＣＰＵ８１は、吸入空気量の測定値ＮＯｘｍｓｒよりも実際値Ｇａａｃｔが小さいと判定されている場合、その測定値ＮＯｘｍｓｒを所定の吸入空気量補正量Ｇａｃだけ増大させる。
ＣＰＵ８１は、図１７に示すルーチンにおいて、吸入空気量補正量Ｇａｃの積算値Ｇａｃｓｕｍを算出する。この積算値Ｇａｃｓｕｍの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始してステップ１７１０に進み、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値Ｇａｍｓｒを取得する。
次いで、ＣＰＵ８１は、ステップ１７２０に進み、現時点における第２吸入空気量過多検出フラグＸＧＡＰ２の値が「１」であるか否かを判定する。現時点における第２吸入空気量過多検出フラグＸＧＡＰ２の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１７２０にて「Ｎｏ」と判定してステップ１７３０に進む。
ＣＰＵ８１は、ステップ１７３０にて、現時点における第２吸入空気量過少検出フラグＸＧＡＮ２の値が「１」であるか否かを判定する。現時点における第２吸入空気量過少検出フラグＸＧＡＮ２の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１７３０にて「Ｎｏ」と判定してステップ１７９５に直接進み、本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図７のステップ７００から処理を開始し、ステップ７１０およびステップ７２０を経由してステップ７９５に進み、本ルーチンを一旦終了する。これにより、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔが決定されると共に、ＥＧＲ率の実際値Ｒｅｇｒａｃｔが目標値Ｒｅｇｒｔｇｔと一致するようにスロットル弁３３の開度およびＥＧＲ制御弁５３の開度が制御される。
さらに、ＣＰＵ８１は、所定時間が経過する毎に図１８および図１９に一連のフローチャートによって示した「第２状態判定ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとを対応させながら取得する。さらに、ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、取得された燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとの関係（すなわち、上記第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ））に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１８のステップ１８００から処理を開始してステップ１８０２に進み、現時点にて「ＮＯｘ濃度を取得する条件（ＮＯｘ濃度取得条件）」が成立するか否かを判定する。このステップ１８０２におけるＮＯｘ濃度取得条件は、第１装置におけるＮＯｘ濃度取得条件と同一である（図８のステップ８０２を参照。）。よって、ＮＯｘ濃度取得条件についての詳細な説明は、省略される。
ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立していない」とき、ステップ１８０２にて「Ｎｏ」と判定し、接続指標Ｂを経由して図１９のステップ１８９５に直接進んで本ルーチンを一旦終了する。このように、ＮＯｘ濃度取得条件が「成立していない」とき、ＮＯｘ濃度の測定値ＮＯｘｍｓｒは取得されない。
これに対し、ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立している」とき、ステップ１８０２にて「Ｙｅｓ」と判定してステップ１８０４に進む。ＣＰＵ８１は、ステップ１８０４にてＮＯｘ濃度センサ７５の出力値に基づいてＮＯｘ濃度の測定値ＮＯｘｍｓｒを取得し、ステップ１８０６に進む。
ＣＰＵ８１は、ステップ１８０６にて、「吸入空気量の測定値Ｇａｍｓｒと、燃料噴射量の目標値Ｑｔｇｔと、空気過剰率λと、の関係」をあらかじめ定めた空気過剰率算出関数Ｆｎλ（Ｇａｍｓｒ，Ｑｔｇｔ）に、現時点における吸入空気量の測定値Ｇａｍｓｒおよび燃料噴射量の目標値Ｑｔｇｔを適用することにより、空気過剰率λを算出する（上記（２）式および上記（３）式を参照。）。
次いで、ＣＰＵ８１は、ステップ１８０８に進み、「ＥＧＲ率の目標値Ｒｅｇｒｔｇｔと、空気過剰率λと、吸気酸素濃度Ｏｃｏｎと、の関係」をあらかじめ定めた吸気酸素濃度算出関数ＦｎＯｃｏｎ（Ｒｅｇｒｔｇｔ，λ）に、現時点におけるＥＧＲ率の目標値Ｒｅｇｒｔｇｔと、空気過剰率λと、を適用することにより、吸気酸素濃度Ｏｃｏｎを算出する（上記（１）式を参照。）。
次いで、ＣＰＵ８１は、ステップ１８１０に進み、「燃料噴射量の目標値Ｑｔｇｔと実際値Ｑａｃｔとが一致しており且つ吸入空気量の測定値Ｇａｍｓｒと実際値Ｇａａｃｔとが一致していることが確認されている機関における、燃料噴射量の目標値Ｑｔｇｔと、吸気酸素濃度Ｏｃｏｎと、ＮＯｘ濃度と、の関係」をあらかじめ定めたＭａｐＮＯｘｒｅｆ（Ｑｔｇｔ，Ｏｃｏｎ）に、現時点における燃料噴射量の目標値Ｑｔｇｔと、吸気酸素濃度Ｏｃｏｎと、を適用して得られる値を、ＮＯｘ参照濃度ＮＯｘｒｅｆとして取得する。
次いで、ＣＰＵ８１は、ステップ１８１２に進み、第１装置と同一の上記（６）式にＮＯｘ濃度の測定値ＮＯｘｍｓｒとＮＯｘ参照濃度ＮＯｘｒｅｆとを適用することにより、ＮＯｘ濃度ずれΔＮＯｘを取得する（図８のステップ８１２を参照。）。すなわち、ステップ１８１２にて、「ＮＯｘ参照濃度ＮＯｘｒｅｆに対する、ＮＯｘ濃度の測定値ＮＯｘｍｓｒからＮＯｘ参照濃度ＮＯｘｒｅｆを減算して得られる値の、割合」が、ＮＯｘ濃度ずれΔＮＯｘとして取得される。
さらに、ＣＰＵ８１は、上述したように取得したＮＯｘ濃度ずれΔＮＯｘを、吸気酸素濃度Ｏｃｏｎと対応させながら（すなわち、ＮＯｘ濃度ずれΔＮＯｘと吸気酸素濃度Ｏｃｏｎとを組み合わせたデータを）、ＲＯＭ８２に格納する。
次いで、ＣＰＵ８１は、接続指標Ａを経由して図１９のステップ１８１４に進み、現時点にて「燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する条件（状態判定条件）」が成立しているか否かを判定する。より具体的に述べると、ＣＰＵ８１は、ステップ１８１４にて、以下の条件Ｓ−２が成立したとき、状態判定条件が成立すると判定する。換言すると、ＣＰＵ８１は、条件Ｓ−２が成立しないとき、状態判定条件が成立しないと判定する。
（条件Ｓ−２）ＮＯｘ濃度ずれΔＮＯｘと吸気酸素濃度Ｏｃｏｎとを組み合わせたデータであって吸気酸素濃度Ｏｃｏｎが所定の範囲内の値であるデータが、少なくとも２つ取得されている。
上記「所定の範囲」は、上述した第２状態判定方法における「所定範囲（Ｃ≦Ｏｃｏｎ≦Ｄ）」に相当する。吸気酸素濃度Ｏｃｏｎがこの所定の範囲内の値であるデータが少なくとも２つ取得されていれば、第２状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
ＣＰＵ８１は、状態判定条件が「成立している」とき、ステップ１８１４にて「Ｙｅｓ」と判定し、ステップ１８１６に進む。そして、ＣＰＵ８１は、ステップ１８１６〜ステップ１８４２に示す処理によって燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。これに対し、ＣＰＵ８１は、状態判定条件が「成立していない」とき、ステップ１８１４にて「Ｎｏ」と判定し、ステップ１８９５に直接進んで本ルーチンを一旦終了する。このように、状態判定条件が「成立していない」とき、燃料噴射量ずれの状態および吸入空気量ずれの状態は判定されない。
以下、現時点にて、状態判定条件が「成立している」と仮定すると共に、ステップ１８１６〜ステップ１８４２にて実行される処理について場合を分けてより詳細に説明する。
以下の説明においては、条件Ｓ−２に該当するデータとして、吸気酸素濃度が「第１の吸気酸素濃度Ｏｃｏｎ１」であるデータ、および、吸気酸素濃度が「第１の吸気酸素濃度Ｏｃｏｎ１よりも大きい第２の吸気酸素濃度Ｏｃｏｎ２」であるデータが採用される。以下、吸気酸素濃度が第１の吸気酸素濃度Ｏｃｏｎ１であるときのＮＯｘ濃度ずれを「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）」と、吸気酸素濃度が第２の吸気酸素濃度（Ｏｃｏｎ２＞Ｏｃｏｎ１）であるときのＮＯｘ濃度ずれを「第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）」と、称呼する。なお、第１の吸気酸素濃度Ｏｃｏｎ１および第２の吸気酸素濃度Ｏｃｏｎ２は、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定するために適切な値となるように、上述したＮＯｘ濃度推定モデルに基づいて定められる。
（場合２−１）少なくとも吸入空気量ずれが「負」である場合
この場合、上述したように、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。すなわち、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも「大きい」。さらに、上記所定値として第１の吸気酸素濃度Ｏｃｏｎ１を採用すると、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「正」である。
ＣＰＵ８１は、ステップ１８１６にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも大きいので、ＣＰＵ８１は、ステップ１８１６にて「Ｙｅｓ」と判定してステップ１８１８に進む。
ＣＰＵ８１は、ステップ１８１８にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「正」であるので、ＣＰＵ８１は、ステップ１８１８にて「Ｙｅｓ」と判定してステップ１８２０に進む。
ＣＰＵ８１は、ステップ１８２０にて、第２吸入空気量過少検出フラグＸＧＡＮ２の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
次いで、ＣＰＵ８１は、所定時間が経過する毎に、図２０にフローチャートによって示した「第２ＮＯｘ濃度平均ずれ取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値と、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値と、の平均値を取得する。以下、便宜上、この平均値を「第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２」とも称呼する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始してステップ２０１０に進み、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、および、第２吸入空気量過少検出フラグＸＧＡＮ２の値の少なくとも１つが「１」であるか否かを判定する。現時点における第２吸入空気量過少検出フラグＸＧＡＮ２の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定してステップ２０２０に進む。
ＣＰＵ８１は、ステップ２０２０にて、下記（１２）式に第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値および第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値を適用することにより、第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２を取得する。
ΔＮＯｘａｖｅ２＝｛ΔＮＯｘ（Ｏｃｏｎ１）＋ΔＮＯｘ（Ｏｃｏｎ２）｝／２    ・・・（１２）
その後、ＣＰＵ８１は、ステップ２０９５に進んで本ルーチンを一旦終了する。
なお、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、および、第２吸入空気量過少検出フラグＸＧＡＮ２の値の全てが「０」であれば、ＣＰＵ８１は、ステップ２０１０にて「Ｎｏ」と判定してステップ２０９５に進み、本ルーチンを一旦終了する。すなわち、第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２は取得されない。
場合２−１の説明に戻ると、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、ステップ１７１０を経由してステップ１７２０に進む。現時点における第２吸入空気量過多検出フラグＸＧＡＰ２の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１７２０にて「Ｎｏ」と判定してステップ１７３０に進む。
現時点における第２吸入空気量過少検出フラグＸＧＡＮ２の値は「１」であるので、ＣＰＵ８１は、ステップ１７３０にて「Ｙｅｓ」と判定してステップ１７４０に進む。
ＣＰＵ８１は、ステップ１７４０にて、下記（１３）式に第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Ｇａｃを取得する。下記（１３）式において、Ｌ４は所定の正の係数である。そのため、吸入空気量補正量Ｇａｃは正の数となる。
Ｇａｃ＝Ｌ４・｜ΔＮＯｘａｖｅ２｜    ・・・（１３）
次いで、ＣＰＵ８１は、ステップ１７５０に進み、吸入空気量の測定値Ｇａｍｓｒに吸入空気量補正量Ｇａｃを加算する。吸入空気量補正量Ｇａｃは正の数であるので、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ増大せしめられる。
次いで、ＣＰＵ８１は、ステップ１７６０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍに吸入空気量補正量Ｇａｃを加算する（Ｇａｃは正の数であるので、実際に加算する）ことにより、新たな吸入空気量補正量の積算値Ｇａｃｓｕｍを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Ｇａｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ＣＰＵ８１は、ステップ１７７０に進み、第２吸入空気量過多検出フラグＸＧＡＰ２の値に「０」を格納し、第２吸入空気量過少検出フラグＸＧＡＮ２の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ１７９５に進んで本ルーチンを一旦終了する。
このように、少なくとも吸入空気量ずれが負であるとき（すなわち、第２吸入空気量過少検出フラグＸＧＡＮ２の値が「１」であるとき）、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ補正（増大）せしめられる。この結果、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが負である場合に実行される処理である。
（場合２−２）燃料噴射量ずれが「負」である場合
この場合、上述したように、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「負」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも「大きい」。さらに、上記所定値として第１の吸気酸素濃度Ｏｃｏｎ１を採用すると、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「負」である。
よって、この場合、ＣＰＵ８１は、図１９のステップ１８１６にて「Ｙｅｓ」と判定してステップ１８１８に進む。さらに、ＣＰＵ８１は、ステップ１８１８にて「Ｎｏ」と判定し、ステップ１８２２に進む。
ＣＰＵ８１は、ステップ１８２２にて、第２燃料過少噴射フラグＸＱＮ２の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２燃料過少噴射フラグＸＱＮ２の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定してステップ２０２０に進む。ＣＰＵ８１は、ステップ２０２０にて第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２を取得し、ステップ２０９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、ステップ１６１０を経由してステップ１６２０に進む。現時点における第２燃料過多噴射フラグＸＱＰ２の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１６２０にて「Ｎｏ」と判定し、ステップ１６３０に進む。
現時点における第２燃料過少噴射フラグＸＱＮ２の値は「１」であるので、ＣＰＵ８１は、ステップ１６３０にて「Ｙｅｓ」と判定してステップ１６５０に進む。
ＣＰＵ８１は、ステップ１６５０にて、下記（１４）式に第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Ｑｃを取得する。下記（１４）式において、Ｌ２は所定の正の係数である。そのため、燃料噴射量補正量Ｑｃは正の数となる。
Ｑｃ＝Ｌ２・｜ΔＮＯｘａｖｅ２｜    ・・・（１４）
次いで、ＣＰＵ８１は、ステップ１６６０に進み、燃料噴射量の目標値Ｑｔｇｔに燃料噴射量補正量Ｑｃを加算する。上述したように燃料噴射量補正量Ｑｃは正の数であるので、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ増大せしめられる。
次いで、ＣＰＵ８１は、ステップ１６７０に進み、燃料噴射量補正量の積算値Ｑｃｓｕｍに燃料噴射量補正量Ｑｃを加算する（Ｑｃは正の数であるので、実際に加算する）ことにより、新たな燃料噴射量補正量の積算値Ｑｃｓｕｍを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Ｑｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ１６８０に進み、第２燃料過多噴射フラグＸＱＰ２の値に「０」を格納し、第２燃料過少噴射フラグＸＱＮ２の値に「０」を格納する。
次いで、ＣＰＵ８１は、ステップ１６４０に進み、補正された目標値Ｑｔｇｔの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Ｑｔｇｔの燃料が燃料噴射装置２２に噴射（噴射）される。その後、ＣＰＵ８１は、ステップ１６９５に進んで本ルーチンを一旦終了する。
このように、燃料噴射量ずれが負であるとき（すなわち、第２燃料過少噴射フラグＸＱＮ２の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ補正（増大）せしめられる。この結果、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが負である場合に実行される処理である。
（場合２−３）燃料噴射量ずれが「正」である場合
この場合、上述したように、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「正」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも「小さい」。さらに、上記所定値として第１の吸気酸素濃度Ｏｃｏｎ１を採用すると、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「正」である。
よって、この場合、ＣＰＵ８１は、ステップ１８１６にて「Ｎｏ」と判定してステップ１８２４に進む。ＣＰＵ８１は、ステップ１８２４にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも小さいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも小さいので、ＣＰＵ８１は、ステップ１８２４にて「Ｙｅｓ」と判定してステップ１８２６に進む。
ＣＰＵ８１は、ステップ１８２６にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「正」であるので、ＣＰＵ８１は、ステップ１８２６にて「Ｙｅｓ」と判定してステップ１８２８に進む。
ＣＰＵ８１は、ステップ１８２８にて、第２燃料過多噴射フラグＸＱＰ２の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２燃料過多噴射フラグＸＱＰ２の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定し、ステップ２０２０に進む。ＣＰＵ８１は、ステップ２０２０にて第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２を取得し、ステップ２０９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、ステップ１６１０を経由してステップ１６２０に進む。現時点における第２燃料過多噴射フラグＸＱＰ２の値は「１」であるので、ＣＰＵ８１は、ステップ１６２０にて「Ｙｅｓ」と判定し、ステップ１６９０に進む。
ＣＰＵ８１は、ステップ１６９０にて、下記（１５）式に第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Ｑｃを取得する。下記（１５）式において、Ｌ１は所定の負の係数である。そのため、燃料噴射量補正量Ｑｃは負の数となる。
Ｑｃ＝Ｌ１・｜ΔＮＯｘａｖｅ２｜    ・・・（１５）
次いで、ＣＰＵ８１は、ステップ１６６０に進み、燃料噴射量の目標値Ｑｔｇｔに上記燃料噴射量補正量Ｑｃを加算する。燃料噴射量補正量Ｑｃは負の数であるので、実際には、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ減少せしめられる。
次いで、ＣＰＵ８１は、ステップ１６７０に進み、燃料噴射量補正量の積算値Ｑｃｓｕｍに燃料噴射量補正量Ｑｃを加算する（Ｑｃは負の数であるので、実際には減算する）ことにより、新たな燃料噴射量補正量の積算値Ｑｃｓｕｍを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Ｑｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ１６８０に進み、第２燃料過多噴射フラグＸＱＰ２の値に「０」を格納し、第２燃料過少噴射フラグＸＱＮ２の値に「０」を格納する。
次いで、ＣＰＵ８１は、ステップ１６４０に進み、上述したように補正された目標値Ｑｔｇｔだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Ｑｔｇｔだけの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ１６９５に進んで本ルーチンを一旦終了する。
このように、燃料噴射量ずれが正であるとき（すなわち、第２燃料過多噴射フラグＸＱＰ２の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ補正（減少）せしめられる。この結果、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが正である場合に実行される処理である。
（場合２−４）少なくとも吸入空気量ずれが「正」である場合
この場合、上述したように、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「正」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「負」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも「小さい」。さらに、上記所定値として第１の吸気酸素濃度Ｏｃｏｎ１を採用すると、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「負」である。
よって、この場合、ＣＰＵ８１は、図１９のステップ１８１６およびステップ１８２４を経由してステップ１８２６に進み、ステップ１８２６にて「Ｎｏ」と判定してステップ１８３０に進む。
ＣＰＵ８１は、ステップ１８３０にて、第２吸入空気量過多検出フラグＸＧＡＰ２の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２吸入空気量過多検出フラグＸＧＡＰ２の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定し、ステップ２０２０に進む。ＣＰＵ８１は、ステップ２０２０にて第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２を取得し、ステップ２０９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、ステップ１７１０を経由してステップ１７２０に進む。現時点における第２吸入空気量過多検出フラグＸＧＡＰ２の値は「１」であるので、ＣＰＵ８１は、ステップ１７２０にて「Ｙｅｓ」と判定してステップ１７８０に進む。
ＣＰＵ８１は、ステップ１７８０にて、下記（１６）式に第２ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ２の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Ｇａｃを取得する。下記（１６）式において、Ｌ３は所定の負の係数である。そのため、吸入空気量補正量Ｇａｃは負の数となる。
Ｇａｃ＝Ｌ３・｜ΔＮＯｘａｖｅ２｜    ・・・（１６）
次いで、ＣＰＵ８１は、ステップ１７５０に進み、吸入空気量の測定値Ｇａｍｓｒに吸入空気量補正量Ｇａｃを加算する。吸入空気量補正量Ｇａｃは負の数であるので、実際には、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ減少せしめられる。
次いで、ＣＰＵ８１は、ステップ１７６０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍに吸入空気量補正量Ｇａｃを加算する（Ｇａｃは負の数であるので、実際には減算する）ことにより、新たな吸入空気量補正量の積算値Ｇａｃｓｕｍを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Ｇａｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ１７７０に進み、第２吸入空気量過多検出フラグＸＧＡＰ２の値に「０」を格納し、第２吸入空気量過少検出フラグＸＧＡＮ２の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ１７９５に進んで本ルーチンを一旦終了する。
このように、吸入空気量ずれが正であるとき（すなわち、第２吸入空気量過多検出フラグＸＧＡＰ２の値が「１」であるとき）、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ補正（減少）せしめられる。この結果、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが正である場合に実行される処理である。
（場合２−５）吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合
この場合、上述したように、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「ゼロ」である。すなわち、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「ゼロ」であり、かつ、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値は「ゼロ」である。
よって、この場合、ＣＰＵ８１は、ステップ１８１６およびステップ１８２４を経由してステップ１８３２に進む。ＣＰＵ８１は、ステップ１８３２にて、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値がゼロであり且つ第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値がゼロであるか否かを判定する。この場合、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は「ゼロ」であり且つ第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値は「ゼロ」であるので、ＣＰＵ８１は、ステップ１８３２にて「Ｙｅｓ」と判定してステップ１８３４に進む。
次いで、ＣＰＵ８１は、ステップ１８３４〜ステップ１８４０の処理をこの順に実行する。具体的に述べると、ＣＰＵ８１は、ステップ１８３４にて第２燃料過多噴射フラグＸＱＰ２の値に「０」を、ステップ１８３６にて第２燃料過少噴射フラグＸＱＮ２の値に「０」を、ステップ１８３８にて第２吸入空気量過多検出フラグＸＧＡＰ２の値に「０」を、ステップ１８４０にて第２吸入空気量過少検出フラグＸＧＡＮ２の値に「０」を、格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、および、第２吸入空気量過少検出フラグＸＧＡＮ２の値の全ては、上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｎｏ」と判定してステップ２０９５に直接進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、現時点における第２燃料過多噴射フラグＸＱＰ２の値は「０」であり且つ第２燃料過少噴射フラグＸＱＮ２の値は「０」であるので、ステップ１６１０、ステップ１６２０、ステップ１６３０およびステップ１６４０を経由してステップ１６９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、現時点における第２吸入空気量過多検出フラグＸＧＡＰ２の値は「０」であり且つ第２吸入空気量過少検出フラグＸＧＡＮ２の値は「０」であるので、ステップ１７１０、ステップ１７２０およびステップ１７３０を経由してステップ１７９５に進んで本ルーチンを一旦終了する。
このように、燃料噴射量ずれが「ゼロ」であり且つ吸入空気量ずれが「ゼロ」であるとき（すなわち、第２燃料過多噴射フラグＸＱＰ２の値が「０」であり且つ第２燃料過少噴射フラグＸＱＮ２の値が「０」であるとき）、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである場合に実行される処理である。
（場合２−６）吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合
この場合、上述したように、吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量は「ゼロ」であり、かつ、吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘは「正」または「負」である。すなわち、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値は、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値と「同一」である。さらに、第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値はゼロではなく、第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値はゼロではない。
よって、この場合、ＣＰＵ８１は、図１９のステップ１８１６およびステップ１８２４を経由してステップ１８３２に進み、ステップ１８３２にて「Ｎｏ」と判定してステップ１８４２に進む。
ＣＰＵ８１は、ステップ１８４２にて、第２他異常発生フラグＸＯＴＨ２の値に「１」を格納する。次いで、ＣＰＵ８１は、ステップ１８３４〜ステップ１８４０を経由してステップ１８９５に進み、本ルーチンを一旦終了する。よって、この場合、第２燃料過多噴射フラグＸＱＰ２の値は「０」であり、第２燃料過少噴射フラグＸＱＮ２の値は「０」であり、第２吸入空気量過多検出フラグＸＧＡＰ２の値は「０」であり、第２吸入空気量過少検出フラグＸＧＡＮ２の値は「０」である。
ここで、ＣＰＵ８１は、図２０のステップ２０００から処理を開始すると、ステップ２０００に続くステップ２０１０にて「Ｎｏ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、ステップ１６１０、ステップ１６２０、ステップ１６３０およびステップ１６４０を経由してステップ１６９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、ステップ１７１０、ステップ１７２０およびステップ１７３０を経由してステップ１７９５に進んで本ルーチンを一旦終了する。
このように、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じているとき（すなわち、第２他異常発生フラグＸＯＴＨ２の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合に実行される処理である。
以上、場合２−１〜２−６に場合を分けて説明したように、第２装置は、「吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」および「吸気酸素濃度Ｏｃｏｎが所定値であるときのＮＯｘ濃度ずれΔＮＯｘの値」に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。さらに、第２装置は、燃料噴射量ずれの状態および吸入空気量ずれの状態に応じて、吸入空気量の測定値Ｇａｍｓｒおよび燃料噴射量の目標値Ｑｔｇｔを補正する。
さらに、ＣＰＵ８１は、所定のタイミングにて図１１のステップ１１００から処理を開始すると、ステップ１１１０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍが所定の閾値Ｇａｃｓｕｍｔｈよりも大きいか否かを判定する。
吸入空気量補正量の積算値Ｇａｃｓｕｍが上記閾値Ｇａｃｓｕｍｔｈよりも大きければ、ＣＰＵ８１は、ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進む。ＣＰＵ８１は、ステップ１１２０にて「吸入空気量センサ７１が異常である」旨を図示しない表示装置に表示させ、ステップ１１３０に進む。
これに対し、吸入空気量補正量の積算値Ｇａｃｓｕｍが上記閾値Ｇａｃｓｕｍｔｈ以下であれば、ＣＰＵ８１は、ステップ１１１０にて「Ｎｏ」と判定してステップ１１３０に直接進む。すなわち、「吸入空気量センサ７１が異常である」旨の表示はなされない。
ＣＰＵ８１は、ステップ１１３０にて、燃料噴射量補正量の積算値Ｑｃｓｕｍが所定の閾値Ｑｃｓｕｍｔｈよりも大きいか否かを判定する。
燃料噴射量補正量の積算値Ｑｃｓｕｍが上記閾値Ｑｃｓｕｍｔｈよりも大きければ、ＣＰＵ８１は、ステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進む。ＣＰＵ８１は、ステップ１１４０にて「燃料噴射装置２２が異常である」旨を図示しない表示装置に表示させ、ステップ１１９５に進んで本ルーチンを一旦終了する。
これに対し、燃料噴射量補正量の積算値Ｑｃｓｕｍが上記閾値Ｑｃｓｕｍｔｈ以下であれば、ＣＰＵ８１は、ステップ１１３０にて「Ｎｏ」と判定してステップ１１９５に直接進んで本ルーチンを一旦終了する。すなわち、「燃料噴射装置２２が異常である」旨の表示はなされない。
ところで、上述したように、第２燃料過多噴射フラグＸＱＰ２の値および第２燃料過少噴射フラグＸＱＮ２の値は、燃料噴射量の目標値Ｑｔｇｔが補正された後に「０」に再設定される（図１６のステップ１６８０を参照。）。そのため、例えば燃料噴射量ずれ「のみ」が生じている場合、一の時点において上記処理が実行されることによって燃料噴射量ずれが十分に補正されなければ（すなわち、燃料噴射量ずれがゼロにならなければ）、その一の時点以降の他の時点において第２状態判定ルーチンが実行されたときに、第２燃料過多噴射フラグＸＱＰ２の値または第２燃料過少噴射フラグＸＱＮ２の値が「１」に再び設定される。その結果、上記他の時点においても燃料噴射量の目標値Ｑｔｇｔが補正される。
一方、上記一の時点において燃料噴射量ずれが十分に補正されれば、上記他の時点において第２状態判定ルーチンが実行されたときに第２燃料過多噴射フラグＸＱＰ２の値および第２燃料過少噴射フラグＸＱＮ２の値が「１」に設定されない。その結果、他の時点において燃料噴射量の目標値Ｑｔｇｔは補正されない。このように、第２装置は、燃料噴射量ずれ「のみ」が生じている場合、燃料噴射量ずれが十分に補正されるまで燃料噴射量の目標値Ｑｔｇｔを繰り返し補正する。
さらに、第２吸入空気量過多検出フラグＸＧＡＰ２の値および第２吸入空気量過少検出フラグＸＧＡＮ２の値は、吸入空気量の測定値Ｇａｍｓｒが補正された後に「０」に再設定される（図１７のステップ１７７０を参照。）。上記説明から明らかなように、第２装置は、吸入空気量ずれ「のみ」が生じている場合、吸入空気量ずれが十分に補正されるまで吸入空気量の測定値Ｇａｍｓｒを補正することを繰り返す。
一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、例えば上記一の時点において「少なくとも吸入空気量ずれが生じている」と判定されれば、吸入空気量の測定値Ｇａｍｓｒが補正された後に第２吸入空気量過多検出フラグＸＧＡＰ２の値および第２吸入空気量過少検出フラグＸＧＡＮ２の値が「０」に再設定される。この補正によって吸入空気量ずれが十分に補正されなければ、上記他の時点において再び「少なくとも吸入空気量ずれが生じている」と判定され、吸入空気量の測定値Ｇａｍｓｒが補正される。
一方、上記一の時点において実行された補正によって吸入空気量ずれが十分に補正されれば、上記他の時点において「燃料噴射量ずれが生じている」と判定され、燃料噴射量の目標値Ｑｔｇｔが補正される。その後、燃料噴射量ずれが十分に補正されるまで、燃料噴射量の目標値Ｑｔｇｔが補正されることが繰り返される。
このように、第２装置は、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じている場合であっても、それらの「双方」が生じている場合であっても、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、上記補正を繰り返し実行する。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
＜装置の作用および効果＞
第２装置は、排ガスのＮＯｘ濃度の測定値ＮＯｘｍｓｒと、機関１０の運転状態に基づいて定まるＮＯｘ参照濃度ＮＯｘｒｅｆと、を比較することにより、ＮＯｘ濃度ずれΔＮＯｘを取得する。さらに、第２装置は、このＮＯｘ濃度ずれΔＮＯｘと、吸気酸素濃度Ｏｃｏｎと、の関係（上記第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ））に基づき、燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、吸入空気量ずれがゼロ、正および負のいずれであるか、を判定する。すなわち、第２装置は、ＮＯｘ濃度ずれΔＮＯｘが生じているとき、燃料噴射量の目標値Ｑｔｇｔと実際値Ｑａｃｔとがどのように異なるかを判定することができる。さらに、第２装置は、ＮＯｘ濃度ずれΔＮＯｘが生じているとき、吸入空気量の測定値Ｇａｍｓｒと実際値Ｇａａｃｔとがどのように異なるかを判定することができる。
さらに、第２装置は、燃料噴射量ずれが生じているとき、ＮＯｘ濃度ずれΔＮＯｘの大きさ（第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）および第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の平均値ΔＮＯｘａｖｅ）に応じて燃料噴射量の目標値Ｑｔｇｔを補正する。一方、第２装置は、吸入空気量ずれが生じているとき、ＮＯｘ濃度ずれΔＮＯｘの大きさΔＮＯｘａｖｅに応じて吸入空気量の測定値Ｇａｍｓｒを補正する。さらに、第２装置は、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、これら補正を繰り返し実行する。これにより、燃料噴射量ずれの大きさおよび吸入空気量の大きさが適切に低減される。その結果、ＮＯｘ濃度ずれΔＮＯｘの大きさが低減される。
加えて、第２装置は、燃料噴射量ずれを補正する際に用いられる補正量の積算値Ｑｃｓｕｍが所定の閾値Ｑｃｓｕｍｔｈを超えると、「燃料噴射装置２２が異常である」旨を表示装置に表示する。一方、第２装置は、吸入空気量ずれをを補正する際に用いられる補正量の積算値Ｇａｃｓｕｍが所定の閾値Ｇａｃｓｕｍｔｈを超えると、「吸入空気量センサ７１が異常である」旨を表示装置に表示する。
（第３実施形態）
次に、本発明の第３の実施形態に係る制御装置（以下、「第３装置」とも称呼する。）について説明する。
＜装置の概要＞
第３装置は、第１装置が適用される機関１０と同様の構成を有する機関（図１を参照。以下、便宜上、「機関１０」と称呼する。）に適用される。そこで、第３装置が適用される装置の概要についての詳細な説明は、省略される。
＜装置の作動の概要＞
以下、上述したように構成された第３装置の作動の概要について説明する。
第３装置は、第１装置における燃料噴射量の目標値ＱｔｇｔとＮＯｘ濃度ずれΔＮＯｘとの関係（すなわち、第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ））、および、第２装置における吸気酸素濃度ＯｃｏｎとＮＯｘ濃度ずれΔＮＯｘとの関係（すなわち、第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ））の「双方」に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する点においてのみ、第１装置および第２装置と異なる。
具体的に述べると、第３装置は、第１装置と同様の手法により、第１状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を予備的に判定する。さらに、第３装置は、第２装置と同様の手法により、第２状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を予備的に判定する。そして、第３装置は、これら予備的な判定の結果の双方に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を最終的に判定する。
第３装置は、その最終的な状態判定の結果に応じて、第１装置および第２装置と同様に燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒを補正する。さらに、第３装置は、第１装置および第２装置と同様、「燃料噴射装置２２が異常である」こと、および、「吸入空気量センサ７１が異常である」ことを上記表示装置などに表示する。以上が第３装置の作動の概要である。
＜内燃機関の制御方法＞
上述したように、第３装置は、第１状態判定方法および第２状態判定方法に従って上記状態判定を行うと共に、第１装置および第２装置と同様に燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒを補正する。そこで、第３装置における内燃機関の制御方法についての詳細な説明は、省略される。
＜実際の作動＞
以下、第３装置の実際の作動について説明する。
第３装置は、図７〜図１１にフローチャートによって示した処理（第１装置にて実行される処理）、および、図１８〜図２０にフローチャートによって示した処理（第２装置にて実行される処理）に加えて、図２１〜図２４にフローチャートによって示した処理を実行する。
ＣＰＵ８１は、上記フローチャートによって示したルーチンにおいて、第１装置と同様の第１燃料過多噴射フラグＸＱＰ１、第１燃料過少噴射フラグＸＱＮ１、第１吸入空気量過多検出フラグＸＧＡＰ１、第１吸入空気量過少検出フラグＸＧＡＮ１および第１他異常発生フラグＸＯＴＨ１、ならびに、第２装置と同様の第２燃料過多噴射フラグＸＱＰ２、第２燃料過少噴射フラグＸＱＮ２、第２吸入空気量過多検出フラグＸＧＡＰ２、第２吸入空気量過少検出フラグＸＧＡＮ２および第２他異常発生フラグＸＯＴＨ２を用いる。
さらに、ＣＰＵ８１は、それらルーチンにおいて、第３燃料過多噴射フラグＸＱＰ３、第３燃料過少噴射フラグＸＱＮ３、第３吸入空気量過多検出フラグＸＧＡＰ３、第３吸入空気量過少検出フラグＸＧＡＮ３、および、第３他異常発生フラグＸＯＴＨ３を用いる。
第３燃料過多噴射フラグＸＱＰ３は、その値が「０」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが大きくないこと（すなわち、Ｑａｃｔ≦Ｑｔｇｔ）を表す。一方、第３燃料過多噴射フラグＸＱＰ３は、その値が「１」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが大きいこと（すなわち、Ｑａｃｔ＞Ｑｔｇｔ）を表す。
第３燃料過少噴射フラグＸＱＮ３は、その値が「０」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが小さくないこと（すなわち、Ｑａｃｔ≧Ｑｔｇｔ）を表す。一方、第３燃料過少噴射フラグＸＱＮ３は、その値が「１」であるとき、燃料噴射量の目標値Ｑｔｇｔよりも燃料噴射量の実際値Ｑａｃｔが小さいこと（すなわち、Ｑａｃｔ＜Ｑｔｇｔ）を表す。
第３吸入空気量過多検出フラグＸＧＡＰ３は、その値が「０」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが大きくないこと（すなわち、Ｇａｍｓｒ≦Ｇａａｃｔ）を表す。一方、第３吸入空気量過多検出フラグＸＧＡＰ３は、その値が「１」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが大きいこと（すなわち、Ｇａｍｓｒ＞Ｇａａｃｔ）を表す。
第３吸入空気量過少検出フラグＸＧＡＮ３は、その値が「０」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが小さくないこと（すなわち、Ｇａｍｓｒ≧Ｇａａｃｔ）を表す。一方、第３吸入空気量過多検出フラグＸＧＡＰ３は、その値が「１」であるとき、吸入空気量の実際値Ｇａａｃｔよりも吸入空気量の測定値Ｇａｍｓｒが小さいこと（すなわち、Ｇａｍｓｒ＜Ｇａａｃｔ）を表す。
第３他異常発生フラグＸＯＴＨ３は、その値が「０」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことを表す。一方、第３他異常発生フラグＸＯＴＨ３は、その値が「１」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていることを表す。
第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、第１他異常発生フラグＸＯＴＨ１の値、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、第２他異常発生フラグＸＯＴＨ２の値、第３燃料過多噴射フラグＸＱＰ３の値、第３燃料過少噴射フラグＸＱＮ３の値、第３吸入空気量過多検出フラグＸＧＡＰ３の値、第３吸入空気量過少検出フラグＸＧＡＮ３の値、および、第３他異常発生フラグＸＯＴＨ３の値は、バックアップＲＡＭ８４に格納される。
さらに、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、第３燃料過多噴射フラグＸＱＰ３の値、第３燃料過少噴射フラグＸＱＮ３の値、第３吸入空気量過多検出フラグＸＧＡＰ３の値、および、第３吸入空気量過少検出フラグＸＧＡＮ３の値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２および吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
加えて、第１他異常発生フラグＸＯＴＨ１の値、第２他異常発生フラグＸＯＴＨ２の値、および、第３他異常発生フラグＸＯＴＨ３の値は、上記工場出荷時およびサービス点検実施時などにおいて、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている原因を解消する処置がなされた際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
以下、ＣＰＵ８１が実行する各ルーチンについて詳細に説明する。
まず、現時点における、第３燃料過多噴射フラグＸＱＰ３の値、第３燃料過少噴射フラグＸＱＮ３の値、第３吸入空気量過多検出フラグＸＧＡＰ３の値、第３吸入空気量過少検出フラグＸＧＡＮ３の値、および、第３他異常発生フラグＸＯＴＨ３の値は、全て「０」に設定されていると仮定する。以下、便宜上、この仮定を「第３初期設定仮定」とも称呼する。
ＣＰＵ８１は、機関１０が始動されると、任意の気筒のクランク角が圧縮上死点前の所定クランク角度（例えば、圧縮上死点前９０度クランク角）θｆに一致する毎に、図２１にフローチャートによって示した「第３燃料噴射制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、燃料噴射量の目標値Ｑｔｇｔを決定すると共に、その目標値Ｑｔｇｔだけの燃料を各気筒内に噴射させる。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量の実際値Ｑａｃｔが目標値Ｑｔｇｔと一致していないと判定された場合にその目標値Ｑｔｇｔを補正すると共に、補正された目標値Ｑｔｇｔだけの燃料を各気筒内に噴射させる。
具体的に述べると、ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じて燃料噴射量の目標値Ｑｔｇｔを決定する。さらに、ＣＰＵ８１は、燃料噴射量の目標値Ｑｔｇｔよりも実際値Ｑａｃｔが大きいと判定されている場合、その目標値Ｑｔｇｔを所定の燃料噴射量補正量Ｑｃだけ減少させる。一方、ＣＰＵ８１は、燃料噴射量の目標値Ｑｔｇｔよりも実際値Ｑａｃｔが小さいと判定されている場合、その目標値Ｑｔｇｔを所定の燃料噴射量補正量Ｑｃだけ増大させる。
ＣＰＵ８１は、図２１に示すルーチンにおいて、燃料噴射量補正量Ｑｃの積算値Ｑｃｓｕｍを算出する。この積算値Ｑｃｓｕｍの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始してステップ２１１０に進み、「アクセルペダル開度Ａｃｃｐと、機関回転速度ＮＥと、燃料噴射量の目標値Ｑｔｇｔと、の関係」をあらかじめ定めた燃料噴射量目標値決定テーブルＭａｐＱｔｇｔ（Ａｃｃｐ，ＮＥ）に現時点におけるアクセルペダル開度Ａｃｃｐと機関回転速度ＮＥとを適用することにより、燃料噴射量の目標値Ｑｔｇｔを決定する。この燃料噴射量目標値決定テーブルＭａｐＱｔｇｔ（Ａｃｃｐ，ＮＥ）において、燃料噴射量の目標値Ｑｔｇｔは、アクセルペダル開度Ａｃｃｐおよび機関回転速度ＮＥに基づいて定まる要求トルクに応じた適値となるように、設計されている。
次いで、ＣＰＵ８１は、ステップ２１２０に進み、現時点における第３燃料過多噴射フラグＸＱＰ３の値が「１」であるか否かを判定する。現時点における第３燃料過多噴射フラグＸＱＰ３の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２１２０にて「Ｎｏ」と判定してステップ２１３０に進む。
ＣＰＵ８１は、ステップ２１３０にて、現時点における第３燃料過少噴射フラグＸＱＮ３の値が「１」であるか否かを判定する。現時点における第３燃料過少噴射フラグＸＱＮ３の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２１３０にて「Ｎｏ」と判定してステップ２１４０に進む。
ＣＰＵ８１は、ステップ２１４０にて、上記目標値Ｑｔｇｔだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、上記目標値Ｑｔｇｔの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ２１９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図２２にフローチャートによって示した「第３吸入空気量取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量の測定値Ｇａｍｓｒを取得する。さらに、ＣＰＵ８１は、このルーチンにより、吸入空気量の実際値Ｇａａｃｔが測定値Ｇａｍｓｒと一致していないと判定された場合、その測定値Ｇａｍｓｒを補正する。
具体的に述べると、ＣＰＵ８１は、このルーチンにより、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値ＮＯｘｍｓｒを取得する。さらに、ＣＰＵ８１は、吸入空気量の測定値ＮＯｘｍｓｒよりも実際値Ｇａａｃｔが大きいと判定されている場合、その測定値ＮＯｘｍｓｒを所定の吸入空気量補正量Ｇａｃだけ減少させる。一方、ＣＰＵ８１は、吸入空気量の測定値ＮＯｘｍｓｒよりも実際値Ｇａａｃｔが小さいと判定されている場合、その測定値ＮＯｘｍｓｒを所定の吸入空気量補正量Ｇａｃだけ増大させる。
ＣＰＵ８１は、図２２に示すルーチンにおいて、吸入空気量補正量Ｇａｃの積算値Ｇａｃｓｕｍを算出する。この積算値Ｇａｃｓｕｍの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始してステップ２２１０に進み、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値Ｇａｍｓｒを取得する。
次いで、ＣＰＵ８１は、ステップ２２２０に進み、現時点における第３吸入空気量過多検出フラグＸＧＡＰ３の値が「１」であるか否かを判定する。現時点における第３吸入空気量過多検出フラグＸＧＡＰ３の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２２２０にて「Ｎｏ」と判定してステップ２２３０に進む。
ＣＰＵ８１は、ステップ２２３０にて、現時点における第３吸入空気量過少検出フラグＸＧＡＮ３の値が「１」であるか否かを判定する。現時点における第３吸入空気量過少検出フラグＸＧＡＮ３の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２２３０にて「Ｎｏ」と判定してステップ２２９５に直接進み、本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図７のステップ７００から処理を開始し、ステップ７１０およびステップ７２０を経由してステップ７９５に進み、本ルーチンを一旦終了する。これにより、ＥＧＲ率の目標値Ｒｅｇｒｔｇｔが決定されると共に、ＥＧＲ率の実際値Ｒｅｇｒａｃｔが目標値Ｒｅｇｒｔｇｔと一致するようにスロットル弁３３の開度およびＥＧＲ制御弁５３の開度が制御される。
さらに、ＣＰＵ８１は、所定のタイミングにて図８および図９に一連のフローチャートによって示した「第１状態判定ルーチン」を繰り返し実行し、燃料噴射量ずれおよび吸入空気量ずれの状態を判定する。加えて、ＣＰＵ８１は、所定のタイミングにて図１８および図１９に一連のフローチャートによって示した「第２状態判定ルーチン」を繰り返し実行し、燃料噴射量ずれおよび吸入空気量ずれの状態を判定する。
以下、「上記第１状態判定ルーチンによる燃料噴射量ずれの状態および吸入空気量ずれの状態の判定が完了しており、かつ、上記第２状態判定ルーチンによる燃料噴射量ずれの状態および吸入空気量ずれの状態の判定が完了している」と仮定して、説明を続ける。
ＣＰＵ８１は、所定時間が経過する毎に図１７にフローチャートによって示した「第３状態判定ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１状態判定ルーチンによる判定の結果および第２状態判定ルーチンによる判定の結果の双方に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。以下、場合を分けてより詳細に説明する。
（場合３−１）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが正である」と判定されている場合
この場合、第１燃料過多噴射フラグＸＱＰ１の値は「１」に設定されており（上記場合１−１を参照。）、かつ、第２燃料過多噴射フラグＸＱＰ２の値は「１」に設定されている（上記場合２−３を参照）。
ＣＰＵ８１は、所定のタイミングにて図２３のステップ２３００から処理を開始してステップ２３０５に進み、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、第１他異常発生フラグＸＯＴＨ１の値、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、および、第２他異常発生フラグＸＯＴＨ２の値、の全てが「０」であるか否かを判定する。
上述したように、現時点における第１燃料過多噴射フラグＸＱＰ１の値は「１」であり且つ第２燃料過多噴射フラグＸＱＰ２の値は「１」である。よって、ＣＰＵ８１は、ステップ２３０５にて「Ｎｏ」と判定してステップ２３１０に進む。
ＣＰＵ８１は、ステップ２３１０にて、第１燃料過多噴射フラグＸＱＰ１の値が「１」であり且つ第２燃料過多噴射フラグＸＱＰ２の値が「１」であるか否かを判定する。現時点における第１燃料過多噴射フラグＸＱＰ１の値は「１」であり且つ第２燃料過多噴射フラグＸＱＰ２の値は「１」であるので、ＣＰＵ８１は、ステップ２３１０にて「Ｙｅｓ」と判定してステップ２３１５に進む。
ＣＰＵ８１は、ステップ２３１５にて、第３燃料過多噴射フラグＸＱＰ３の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
次いで、ＣＰＵ８１は、所定時間が経過する毎に、図２４にフローチャートによって示した「第３ＮＯｘ濃度平均ずれ取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１状態判定ルーチンにおける第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値と、第２状態判定ルーチンにおける第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値と、の平均値を取得する。以下、便宜上、この平均値を「第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３」とも称呼する。
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始してステップ２４１０に進み、第３燃料過多噴射フラグＸＱＰ３の値、第３燃料過少噴射フラグＸＱＮ３の値、第３吸入空気量過多検出フラグＸＧＡＰ３の値、および、第３吸入空気量過少検出フラグＸＧＡＮ３の値の少なくとも１つが「１」であるか否かを判定する。現時点における第３燃料過多噴射フラグＸＱＰ３の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定してステップ２４２０に進む。
ＣＰＵ８１は、ステップ２４２０にて、下記（１７）式に第１状態判定ルーチンにおける第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値および第２状態判定ルーチンにおける第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値を適用することにより、第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３を取得する。
ΔＮＯｘａｖｅ３＝｛ΔＮＯｘ（Ｑｔｇｔ２）＋ΔＮＯｘ（Ｏｃｏｎ１）｝／２    ・・・（１７）
その後、ＣＰＵ８１は、ステップ２４９５に進んで本ルーチンを一旦終了する。
ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、ステップ２１１０を経由してステップ２１２０に進む。現時点における第３燃料過多噴射フラグＸＱＰ３の値は「１」であるので、ＣＰＵ８１は、ステップ２１２０にて「Ｙｅｓ」と判定し、ステップ２１５０に進む。
ＣＰＵ８１は、ステップ２１５０にて、下記（１８）式に第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Ｑｃを取得する。下記（１８）式において、Ｍ１は所定の負の係数である。そのため、燃料噴射量補正量Ｑｃは負の数となる。
Ｑｃ＝Ｍ１・｜ΔＮＯｘａｖｅ３｜    ・・・（１８）
次いで、ＣＰＵ８１は、ステップ２１６０に進み、燃料噴射量の目標値Ｑｔｇｔに上記燃料噴射量補正量Ｑｃを加算する。燃料噴射量補正量Ｑｃは負の数であるので、実際には、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ減少せしめられる。
次いで、ＣＰＵ８１は、ステップ２１７０に進み、燃料噴射量補正量の積算値Ｑｃｓｕｍに燃料噴射量補正量Ｑｃを加算する（Ｑｃは負の数であるので、実際には減算する）ことにより、新たな燃料噴射量補正量の積算値Ｑｃｓｕｍを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Ｑｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ２１８０に進み、第３燃料過多噴射フラグＸＱＰ３の値に「０」を格納し、第３燃料過少噴射フラグＸＱＮ３の値に「０」を格納する。
次いで、ＣＰＵ８１は、ステップ２１４０に進み、上述したように補正された目標値Ｑｔｇｔだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Ｑｔｇｔだけの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ２１９５に進んで本ルーチンを一旦終了する。
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが正である」と判定されているとき（すなわち、第３燃料過多噴射フラグＸＱＰ３の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ補正（減少）せしめられる。この結果、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが正である」と判定されている場合に実行される処理である。
（場合３−２）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが負である」と判定されている場合
この場合、第１燃料過少噴射フラグＸＱＮ１の値は「１」に設定されており（上記場合１−４を参照。）、かつ、第２燃料過少噴射フラグＸＱＮ２の値は「１」に設定されている（上記場合２−２を参照）。
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５およびステップ２３１０を経由し、ステップ２３２０に進む。
ＣＰＵ８１は、ステップ２３２０にて第１燃料過少噴射フラグＸＱＮ１の値が「１」であり且つ第２燃料過少噴射フラグＸＱＮ２の値が「１」であるか否かを判定する。現時点における第１燃料過少噴射フラグＸＱＮ１の値は「１」であり且つ第２燃料過少噴射フラグＸＱＮ２の値は「１」であるので、ＣＰＵ８１は、ステップ２３２０にて「Ｙｅｓ」と判定してステップ２３２５に進む。
ＣＰＵ８１は、ステップ２３２５にて、第３燃料過少噴射フラグＸＱＮ３の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３燃料過少噴射フラグＸＱＮ３の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進む。ＣＰＵ８１は、ステップ２４２０にて第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３を取得し、ステップ２４９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、ステップ２１１０を経由してステップ２１２０に進む。現時点における第３燃料過多噴射フラグＸＱＰ３の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２１２０にて「Ｎｏ」と判定し、ステップ２１３０に進む。
現時点における第３燃料過少噴射フラグＸＱＮ３の値は「１」であるので、ＣＰＵ８１は、ステップ２１３０にて「Ｙｅｓ」と判定してステップ２１９０に進む。
ＣＰＵ８１は、ステップ２１９０にて、下記（１９）式に第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Ｑｃを取得する。下記（１９）式において、Ｍ２は所定の正の係数である。そのため、燃料噴射量補正量Ｑｃは正の数となる。
Ｑｃ＝Ｍ２・｜ΔＮＯｘａｖｅ２｜      ・・・（１９）
次いで、ＣＰＵ８１は、ステップ２１６０に進み、燃料噴射量の目標値Ｑｔｇｔに燃料噴射量補正量Ｑｃを加算する。上述したように燃料噴射量補正量Ｑｃは正の数であるので、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ増大せしめられる。
次いで、ＣＰＵ８１は、ステップ２１７０に進み、燃料噴射量補正量の積算値Ｑｃｓｕｍに燃料噴射量補正量Ｑｃを加算する（Ｑｃは正の数であるので、実際に加算する）ことにより、新たな燃料噴射量補正量の積算値Ｑｃｓｕｍを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Ｑｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ２１８０に進み、第３燃料過多噴射フラグＸＱＰ３の値に「０」を格納し、第３燃料過少噴射フラグＸＱＮ３の値に「０」を格納する。
次いで、ＣＰＵ８１は、ステップ２１４０に進み、補正された目標値Ｑｔｇｔの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Ｑｔｇｔの燃料が燃料噴射装置２２に噴射（噴射）される。その後、ＣＰＵ８１は、ステップ２１９５に進んで本ルーチンを一旦終了する。
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが負である」と判定されているとき（すなわち、第３燃料過少噴射フラグＸＱＮ３の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔは燃料噴射量補正量Ｑｃだけ補正（増大）せしめられる。この結果、燃料噴射量の実際値Ｑａｃｔは目標値Ｑｔｇｔに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが負である」と判定されている場合に実行される処理である。
（場合３−３）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが正である」と判定されている場合
この場合、第１吸入空気量過多検出フラグＸＧＡＰ１の値は「１」に設定されており（上記場合１−２を参照。）、かつ、第２吸入空気量過多検出フラグＸＧＡＰ２の値は「１」に設定されている（上記場合２−４を参照）。
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５、ステップ２３１０およびステップ２３２０を経由し、ステップ２３３０に進む。
ＣＰＵ８１は、ステップ２３３０にて第１吸入空気量過多検出フラグＸＧＡＰ１の値が「１」であり且つ第２吸入空気量過多検出フラグＸＧＡＰ２の値が「１」であるか否かを判定する。現時点における第１吸入空気量過多検出フラグＸＧＡＰ１の値は「１」であり且つ第２吸入空気量過多検出フラグＸＧＡＰ２の値は「１」であるので、ＣＰＵ８１は、ステップ２３３０にて「Ｙｅｓ」と判定してステップ２３３５に進む。
ＣＰＵ８１は、ステップ２３３５にて、第３吸入空気量過多検出フラグＸＧＡＰ３の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３吸入空気量過多検出フラグＸＧＡＰ３の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進む。ＣＰＵ８１は、ステップ２４２０にて第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３を取得し、ステップ２４９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始すると、ステップ２２１０を経由してステップ２２２０に進む。現時点における第３吸入空気量過多検出フラグＸＧＡＰ３の値は「１」であるので、ＣＰＵ８１は、ステップ２２２０にて「Ｙｅｓ」と判定してステップ２２４０に進む。
ＣＰＵ８１は、ステップ２２４０にて、下記（２０）式に第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Ｇａｃを取得する。下記（２０）式において、Ｍ３は所定の負の係数である。そのため、吸入空気量補正量Ｇａｃは負の数となる。
Ｇａｃ＝Ｍ３・｜ΔＮＯｘａｖｅ３｜    ・・・（２０）
次いで、ＣＰＵ８１は、ステップ２２５０に進み、吸入空気量の測定値Ｇａｍｓｒに吸入空気量補正量Ｇａｃを加算する。吸入空気量補正量Ｇａｃは負の数であるので、実際には、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ減少せしめられる。
次いで、ＣＰＵ８１は、ステップ２２６０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍに吸入空気量補正量Ｇａｃを加算する（Ｇａｃは負の数であるので、実際には減算する）ことにより、新たな吸入空気量補正量の積算値Ｇａｃｓｕｍを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Ｇａｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ステップ２２７０に進み、第３吸入空気量過多検出フラグＸＧＡＰ３の値に「０」を格納し、第３吸入空気量過少検出フラグＸＧＡＮ３の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ２２９５に進んで本ルーチンを一旦終了する。
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが正である」と判定されているとき（すなわち、第３吸入空気量過多検出フラグＸＧＡＰ１の値が「１」であるとき）、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ補正（減少）せしめられる。この結果、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが正である」と判定されている場合に実行される処理である。
（場合３−４）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが負である」と判定されている場合
この場合、第１吸入空気量過少検出フラグＸＧＡＮ１の値は「１」に設定されており（上記場合１−３を参照。）、かつ、第２吸入空気量過少検出フラグＸＧＡＮ２の値は「１」に設定されている（上記場合２−１を参照）。
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５、ステップ２３１０、ステップ２３２０およびステップ２３３０を経由し、ステップ２３４０に進む。
ＣＰＵ８１は、ステップ２３４０にて第１吸入空気量過少検出フラグＸＧＡＮ１の値が「１」であり且つ第２吸入空気量過少検出フラグＸＧＡＮ２の値が「１」であるか否かを判定する。現時点における第１吸入空気量過少検出フラグＸＧＡＮ１の値は「１」であり且つ第２吸入空気量過少検出フラグＸＧＡＮ２の値は「１」であるので、ＣＰＵ８１は、ステップ２３４０にて「Ｙｅｓ」と判定してステップ２３４５に進む。
ＣＰＵ８１は、ステップ２３４５にて、第３吸入空気量過多検出フラグＸＧＡＰ３の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３吸入空気量過少検出フラグＸＧＡＮ３の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進む。ＣＰＵ８１は、ステップ２４２０にて第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３を取得し、ステップ２４９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図６のステップ２２００から処理を開始すると、ステップ２２１０を経由してステップ２２２０に進む。現時点における第３吸入空気量過多検出フラグＸＧＡＰ３の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２２２０にて「Ｎｏ」と判定してステップ２２３０に進む。
現時点における第３吸入空気量過少検出フラグＸＧＡＮ３の値は「１」であるので、ＣＰＵ８１は、ステップ２２３０にて「Ｙｅｓ」と判定してステップ２２８０に進む。
ＣＰＵ８１は、ステップ２２８０にて、下記（２１）式に第３ＮＯｘ濃度平均ずれΔＮＯｘａｖｅ３の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Ｇａｃを取得する。下記（２１）式において、Ｍ４は所定の正の係数である。そのため、吸入空気量補正量Ｇａｃは正の数となる。
Ｇａｃ＝Ｍ４・｜ΔＮＯｘａｖｅ３｜    ・・・（２１）
次いで、ＣＰＵ８１は、ステップ２２５０に進み、吸入空気量の測定値Ｇａｍｓｒに吸入空気量補正量Ｇａｃを加算する。吸入空気量補正量Ｇａｃは正の数であるので、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ増大せしめられる。
次いで、ＣＰＵ８１は、ステップ２２６０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍに吸入空気量補正量Ｇａｃを加算する（Ｇａｃは正の数であるので、実際に加算する）ことにより、新たな吸入空気量補正量の積算値Ｇａｃｓｕｍを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Ｇａｃｓｕｍの値は、バックアップＲＡＭ８４に格納される。
次いで、ＣＰＵ８１は、ＣＰＵ８１は、ステップ２２７０に進み、第３吸入空気量過多検出フラグＸＧＡＰ３の値に「０」を格納し、第３吸入空気量過少検出フラグＸＧＡＮ３の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ２２９５に進んで本ルーチンを一旦終了する。
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて少なくとも吸入空気量ずれが負であると判定されているとき（すなわち、第３吸入空気量過少検出フラグＸＧＡＮ３の値が「１」であるとき）、吸入空気量の測定値Ｇａｍｓｒは吸入空気量補正量Ｇａｃだけ補正（増大）せしめられる。この結果、吸入空気量の測定値Ｇａｍｓｒは実際値Ｇａａｃｔに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて少なくとも吸入空気量ずれが負であると判定されている場合に実行される処理である。
（場合３−５）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである」と判定されている場合
この場合、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、および、第１他異常発生フラグＸＯＴＨ１の値、の全ては「０」に設定されている（上記場合１−５を参照。）。さらに、この場合、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、および、第２他異常発生フラグＸＯＴＨ２の値、の全ては「０」に設定されている（場合２−５を参照。）。
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３００に続くステップ２３０５にて「Ｙｅｓ」と判定し、ステップ２３５０に進む。
ＣＰＵ８１は、ステップ２３５０〜ステップ２３６５の処理をこの順に実行する。具体的に述べると、ＣＰＵ８１は、ステップ２３５０にて第３燃料過多噴射フラグＸＱＰ３の値に「０」を、ステップ２３５５にて第３燃料過少噴射フラグＸＱＮ３の値に「０」を、ステップ２３６０にて第３吸入空気量過多検出フラグＸＧＡＰ３の値に「０」を、ステップ２３６５にて第３吸入空気量過少検出フラグＸＧＡＮ３の値に「０」を、格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３燃料過多噴射フラグＸＱＰ３の値、第３燃料過少噴射フラグＸＱＮ３の値、第３吸入空気量過多検出フラグＸＧＡＰ３の値、および、第３吸入空気量過少検出フラグＸＧＡＮ３の値の全ては、上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｎｏ」と判定してステップ２４９５に直接進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、現時点における第３燃料過多噴射フラグＸＱＰ３の値は「０」であり且つ第３燃料過少噴射フラグＸＱＮ３の値は「０」であるので、ステップ２１１０、ステップ２１２０、ステップ２１３０およびステップ２１４０を経由してステップ２１９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始すると、現時点における第３吸入空気量過多検出フラグＸＧＡＰ３の値は「０」であり且つ第３吸入空気量過少検出フラグＸＧＡＮ３の値は「０」であるので、ステップ２２１０、ステップ２２２０およびステップ２２３０を経由してステップ２２９５に進んで本ルーチンを一旦終了する。
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである」と判定されているとき（すなわち、第３燃料過多噴射フラグＸＱＰ３の値が「０」であり且つ第３燃料過少噴射フラグＸＱＮ３の値が「０」であるとき）、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである」と判定されている場合に実行される処理である。
（場合３−６）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定されている場合
この場合、第１他異常発生フラグＸＯＴＨ１の値は「１」に設定されており（上記場合１−６を参照。）、かつ、第２他異常発生フラグＸＯＴＨ２の値は「１」に設定されている（上記場合２−６を参照）。
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５、ステップ２３１０、ステップ２３２０、ステップ２３３０およびステップ２３４０を経由し、ステップ２３７０に進む。
ＣＰＵ８１は、ステップ２３７０にて、第３他異常発生フラグＸＯＴＨ３の値に「１」を格納する。次いで、ＣＰＵ８１は、接続指標Ａを経由してステップ２３５０に進む。ＣＰＵ８１は、ステップ２３５０〜ステップ２３６５を経由してステップ２３９５に進み、本ルーチンを一旦終了する。よって、この場合、第３燃料過多噴射フラグＸＱＰ３の値は「０」であり、第３燃料過少噴射フラグＸＱＮ３の値は「０」であり、第３吸入空気量過多検出フラグＸＧＡＰ３の値は「０」であり、第３吸入空気量過少検出フラグＸＧＡＮ３の値は「０」である。
ここで、ＣＰＵ８１は、図２４のステップ２４００から処理を開始すると、ステップ２４００に続くステップ２４１０にて「Ｎｏ」と判定し、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
ここで、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、ステップ２１１０、ステップ２１２０、ステップ２１３０およびステップ２１４０を経由してステップ２１９５に進んで本ルーチンを一旦終了する。
さらに、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始すると、ステップ２２１０、ステップ２２２０およびステップ２２３０を経由してステップ２２９５に進んで本ルーチンを一旦終了する。
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定されているとき（すなわち、第１他異常発生フラグＸＯＴＨ１の値が「１」であるとき）、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定されている場合に実行される処理である。
（場合３−７）第１状態判定ルーチンによる判定の結果と、第２状態判定ルーチンによる判定の結果と、が異なる場合
この場合、例えば、第１状態判定ルーチンにて「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」と判定されれば、第２状態判定ルーチンにて「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」とは判定されない。そのため、第１燃料過多噴射フラグＸＱＰ１の値、第１燃料過少噴射フラグＸＱＮ１の値、第１吸入空気量過多検出フラグＸＧＡＰ１の値、第１吸入空気量過少検出フラグＸＧＡＮ１の値、第１他異常発生フラグＸＯＴＨ１の値、第２燃料過多噴射フラグＸＱＰ２の値、第２燃料過少噴射フラグＸＱＮ２の値、第２吸入空気量過多検出フラグＸＧＡＰ２の値、第２吸入空気量過少検出フラグＸＧＡＮ２の値、および、第２他異常発生フラグＸＯＴＨ２の値、のうちの少なくとも１つは「１」である。
よって、ＣＰＵ８１は、図２３のステップ２３００から処理を開始ステップ２３０５に進むと、ステップ２３０５にて「Ｎｏ」と判定してステップ２３１０に進む。
この場合３−７において、第１燃料過多噴射フラグＸＱＰ１の値および第２燃料過多噴射フラグＸＱＰ２の値のうちの一方が「１」であれば、他方は「０」である。さらに、第１燃料過少噴射フラグＸＱＮ１の値および第２燃料過少噴射フラグＸＱＮ２の値のうちの一方が「１」であれば、他方は「０」である。加えて、第１吸入空気量過多検出フラグＸＧＡＰ１の値および第２吸入空気量過多検出フラグＸＧＡＰ２の値のうちの一方が「１」であれば、他方は「０」である。さらに加えて、第１吸入空気量過少検出フラグＸＧＡＮ１の値および第２吸入空気量過少検出フラグＸＧＡＮ２の値のうちの一方が「１」であれば、他方は「０」である。
よって、ＣＰＵ８１は、ステップ２３１０、ステップ２３２０、ステップ２３３０およびステップ２３４０の全てにて「Ｎｏ」と判定してステップ２３７０に進む。
ＣＰＵ８１は、ステップ２３７０にて第３他異常発生フラグＸＯＴＨ３の値に「１」を格納し、接続指標Ａを経由してステップ２３５０に進む。次いで、ＣＰＵ８１は、ステップ２３５０〜ステップ２３６５の処理をこの順に実行し、ステップ２３９５に進んで本ルーチンを一旦終了する。
このように、この場合３−７においては、上記場合３−６と同様、第３他異常発生フラグＸＯＴＨ３の値は「１」であり、第３燃料過多噴射フラグＸＱＰ３の値は「０」であり、第３燃料過少噴射フラグＸＱＮ３の値は「０」であり、第３吸入空気量過多検出フラグＸＧＡＰ３の値は「０」であり、第３吸入空気量過少検出フラグＸＧＡＮ３の値は「０」である。
したがって、上記場合３−６にて説明したように、この場合において燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒは補正されない。以上が、第１状態判定ルーチンによる判定の結果と第２状態判定ルーチンによる判定の結果とが異なる場合に実行される処理である。
以上、場合３−１〜３−７に場合を分けて説明したように、第３装置は、第１状態判定方法に基づく判定の結果と第２状態判定方法に基づく判定の結果とが「一致している」とき、それら判定の結果に応じて吸入空気量の測定値Ｇａｍｓｒおよび燃料噴射量の目標値Ｑｔｇｔを補正する。一方、第３装置は、第１状態判定方法に基づく判定の結果と第２状態判定方法に基づく判定の結果とが「異なる」とき、吸入空気量の測定値Ｇａｍｓｒおよび燃料噴射量の目標値Ｑｔｇｔを補正しない。
さらに、ＣＰＵ８１は、所定のタイミングにて図１１のステップ１１００から処理を開始すると、ステップ１１１０に進み、吸入空気量補正量の積算値Ｇａｃｓｕｍが所定の閾値Ｇａｃｓｕｍｔｈよりも大きいか否かを判定する。
吸入空気量補正量の積算値Ｇａｃｓｕｍが上記閾値Ｇａｃｓｕｍｔｈよりも大きければ、ＣＰＵ８１は、ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進む。ＣＰＵ８１は、ステップ１１２０にて「吸入空気量センサ７１が異常である」旨を図示しない表示装置に表示させ、ステップ１１３０に進む。
これに対し、吸入空気量補正量の積算値Ｇａｃｓｕｍが上記閾値Ｇａｃｓｕｍｔｈ以下であれば、ＣＰＵ８１は、ステップ１１１０にて「Ｎｏ」と判定してステップ１１３０に直接進む。すなわち、「吸入空気量センサ７１が異常である」旨の表示はなされない。
ＣＰＵ８１は、ステップ１１３０にて、燃料噴射量補正量の積算値Ｑｃｓｕｍが所定の閾値Ｑｃｓｕｍｔｈよりも大きいか否かを判定する。
燃料噴射量補正量の積算値Ｑｃｓｕｍが上記閾値Ｑｃｓｕｍｔｈよりも大きければ、ＣＰＵ８１は、ステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進む。ＣＰＵ８１は、ステップ１１４０にて「燃料噴射装置２２が異常である」旨を図示しない表示装置に表示させ、ステップ１１９５に進んで本ルーチンを一旦終了する。
これに対し、燃料噴射量補正量の積算値Ｑｃｓｕｍが上記閾値Ｑｃｓｕｍｔｈ以下であれば、ＣＰＵ８１は、ステップ１１３０にて「Ｎｏ」と判定してステップ１１９５に直接進んで本ルーチンを一旦終了する。すなわち、「燃料噴射装置２２が異常である」旨の表示はなされない。
ところで、上述したように、第３燃料過多噴射フラグＸＱＰ３の値および第３燃料過少噴射フラグＸＱＮ３の値は、燃料噴射量の目標値Ｑｔｇｔが補正された後に「０」に再設定される（図２１のステップ２１８０を参照。）。そのため、例えば燃料噴射量ずれ「のみ」が生じている場合、一の時点において上記処理が実行されることによって燃料噴射量ずれが十分に補正されなければ（すなわち、燃料噴射量ずれがゼロにならなければ）、その一の時点以降の他の時点において第３状態判定ルーチンが実行されたときに、第３燃料過多噴射フラグＸＱＰ３の値または第３燃料過少噴射フラグＸＱＮ３の値が「１」に再び設定される。その結果、上記他の時点においても燃料噴射量の目標値Ｑｔｇｔが補正される。
一方、上記一の時点において燃料噴射量ずれが十分に補正されれば、上記他の時点において第３状態判定ルーチンが実行されたときに第３燃料過多噴射フラグＸＱＰ３の値および第３燃料過少噴射フラグＸＱＮ３の値が「１」に設定されない。その結果、他の時点において燃料噴射量の目標値Ｑｔｇｔは補正されない。このように、第３装置は、燃料噴射量ずれ「のみ」が生じている場合、燃料噴射量ずれが十分に補正されるまで燃料噴射量の目標値Ｑｔｇｔを繰り返し補正する。
さらに、第３吸入空気量過多検出フラグＸＧＡＰ３の値および第３吸入空気量過少検出フラグＸＧＡＮ３の値は、吸入空気量の測定値Ｇａｍｓｒが補正された後に「０」に再設定される（図２２のステップ２２７０を参照。）。上記説明から明らかなように、第３装置は、吸入空気量ずれ「のみ」が生じている場合、吸入空気量ずれが十分に補正されるまで吸入空気量の測定値Ｇａｍｓｒを補正することを繰り返す。
一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、例えば上記一の時点において「少なくとも吸入空気量ずれが生じている」と判定されれば、吸入空気量の測定値Ｇａｍｓｒが補正された後に第３吸入空気量過多検出フラグＸＧＡＰ３の値および第３吸入空気量過少検出フラグＸＧＡＮ３の値が「０」に再設定される。この補正によって吸入空気量ずれが十分に補正されなければ、上記他の時点において再び「少なくとも吸入空気量ずれが生じている」と判定され、吸入空気量の測定値Ｇａｍｓｒが補正される。
一方、上記一の時点において実行された補正によって吸入空気量ずれが十分に補正されれば、上記他の時点において「燃料噴射量ずれが生じている」と判定され、燃料噴射量の目標値Ｑｔｇｔが補正される。その後、燃料噴射量ずれが十分に補正されるまで、燃料噴射量の目標値Ｑｔｇｔが補正されることが繰り返される。
このように、第３装置は、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じている場合であっても、それらの「双方」が生じている場合であっても、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、上記補正を繰り返し実行する。
＜装置の作用および効果＞
第３装置は、第１状態判定ルーチンによる判定の結果および第２状態判定ルーチンによる判定の結果の「双方」に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。したがって、第１状態判定ルーチンによる判定の結果および第２状態判定ルーチンによる判定の結果の「一方」に基づいてそれら状態を判定する場合に比べ、より正確にそれら状態を判定することができる。
ところで、上述したように、上記第１実施形態〜第３実施形態の制御装置は、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロ」、「正」および「負」のいずれであるかを判定すると共に、その判定の結果に応じて燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒのうちの少なくとも一方を補正するように構成されている。すなわち、これら実施形態の制御装置は、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロ以外」であれば、燃料噴射量の目標値Ｑｔｇｔおよび吸入空気量の測定値Ｇａｍｓｒのうちの少なくとも一方を補正する。
しかし、例えば、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロを含む所定の範囲内の値」であることがエミッション排出量を低減する観点において許される場合、本発明の制御装置は、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロを含む所定の範囲内の値」、「その所定の範囲内の最大値よりも大きい値」および「その所定の範囲内の最小値よりも小さい値」のいずれであるかを判定するように構成されてもよい。
このような制御装置は、例えば、図９のルーチンを、ステップ８１６にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも「所定値以上」大きいか否か」が判定され、ステップ８２４にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値よりも「所定値以上」小さいか否か」が判定され、ステップ８３２にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ１）の値が「ゼロを含む所定の範囲内の値」であり且つ第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値が「ゼロを含む所定の範囲内の値」であるか否か」が判定されるように変更することにより、構成され得る。さらに、このような制御装置は、例えば、図９のルーチンを、ステップ８１８およびステップ８２６にて「第２ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）の値が「所定値以上」であるか否か」が判定されるように変更することにより、構成され得る。
加えて、このような制御装置は、例えば、図１９のルーチンを、ステップ１８１６にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも「所定値以上」大きいか否か」が判定され、ステップ１８２４にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値よりも「所定値以上」小さいか否か」が判定され、ステップ１８３２にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が「ゼロを含む所定の範囲内の値」であり且つ第２ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ２）の値が「ゼロを含む所定の範囲内の値」であるか否か」が判定されるように変更することにより、構成され得る。さらに、このような制御装置は、例えば、図１９のルーチンを、ステップ１８１８およびステップ１８２６にて「第１ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）の値が「所定値以上」であるか否か」が判定されるように変更することにより、構成され得る。
ところで、図２に示す上記第１の関係Ｒ１（Ｑｔｇｔ，ΔＮＯｘ）から推定されるように、「燃料噴射量ずれがＮＯｘ濃度ずれΔＮＯｘに実質的に影響を与えない燃料噴射量の目標値Ｑｔｇｔ」が存在し得る。換言すると、「吸入空気量ずれがゼロまたは所定の範囲内の値であり且つ燃料噴射量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれΔＮＯｘがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量が、存在し得る。以下、便宜上、この燃料噴射量を「特異燃料噴射量」とも称呼する。
燃料噴射量の目標値Ｑｔｇｔが「特異燃料噴射量」であるときにＮＯｘ濃度ずれが生じた場合、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、そのＮＯｘ濃度ずれは「吸入空気量ずれ」に起因すると一義的に判定することができる。すなわち、この場合、上記第１実施形態において用いられている「燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」を用いることなく、燃料噴射量の目標値Ｑｔｇｔが所定値（特異燃料噴射量）であるときのＮＯｘ濃度ずれΔＮＯｘ「のみ」に基づき、状態判定を行うことができる。
さらに、上記同様、「吸入空気量ずれがＮＯｘ濃度ずれΔＮＯｘに実質的に影響を与えない燃料噴射量の目標値Ｑｔｇｔ」が存在し得る。換言すると、「燃料噴射量ずれがゼロまたは範囲内の値であり且つ吸入空気量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量が、存在し得る。上記同様、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、この燃料噴射量を利用することによって「燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」を用いることなく状態判定を行うことができる。
なお、このような制御装置は、例えば、図９のルーチンを、ステップ８１６、ステップ８２４、ステップ８３２およびステップ８４２を削除するように変更することにより、構成され得る。
加えて、図１２に示す上記第２の関係Ｒ２（Ｏｃｏｎ，ΔＮＯｘ）から推定されるように、「燃料噴射量ずれがＮＯｘ濃度ずれΔＮＯｘに実質的に影響を与えない吸気酸素濃度Ｏｃｏｎ」が存在し得る。換言すると、「吸入空気量ずれがゼロまたは所定の範囲内の値であり且つ燃料噴射量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれΔＮＯｘがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度が、存在し得る。以下、便宜上、この吸気酸素濃度を「特異吸気酸素濃度」とも称呼する。
吸気酸素濃度Ｏｃｏｎが「特異吸気酸素濃度」であるときにＮＯｘ濃度ずれが生じた場合、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、そのＮＯｘ濃度ずれは「吸入空気量ずれ」に起因すると一義的に判定することができる。すなわち、この場合、上記第２実施形態において用いられている「吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」を用いることなく、吸気酸素濃度Ｏｃｏｎが所定値（特異吸気酸素濃度）であるときのＮＯｘ濃度ずれΔＮＯｘ「のみ」に基づき、状態判定を行うことができる。
さらに、上記同様、「吸入空気量ずれがＮＯｘ濃度ずれΔＮＯｘに実質的に影響を与えない吸気酸素濃度Ｏｃｏｎ」が存在し得る。換言すると、「燃料噴射量ずれがゼロまたは範囲内の値であり且つ吸入空気量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度が、存在し得る。上記同様、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、この吸気酸素濃度を利用することによって「吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」を用いることなく状態判定を行うことができる。
なお、このような制御装置は、例えば、図１９のルーチンを、ステップ１８１６、ステップ１８２４、ステップ１８３２およびステップ１８４２を削除するように変更することにより、構成され得る。
（実施形態の総括）
以上、説明したように、本発明の第１実施形態〜第３実施形態に係る制御装置は、
燃料噴射量の目標値Ｑｔｇｔを決定する燃料噴射量目標値決定手段（図５、図１６および図２１のルーチン）と、
吸気酸素濃度関連パラメータの測定値、推定値または目標値（第１実施形態〜第３実施形態においては、吸入空気量の測定値Ｇａｍｓｒ）を取得する吸気酸素濃度関連パラメータ取得手段（図６、図１７および図２２のルーチン）と、
前記吸気酸素濃度関連パラメータＧａｍｓｒに基づいて前記吸気酸素濃度Ｏｃｏｎを取得する吸気酸素濃度取得手段（図８のステップ８０８および図１８のステップ１８０８）と、
ＮＯｘ濃度の測定値または推定値（第１実施形態〜第３実施形態においては、ＮＯｘ濃度の測定値ＮＯｘｍｓｒ）を取得するＮＯｘ濃度取得手段（図８のステップ８０４および図１８のステップ１８０８）と、
所定のＮＯｘ参照濃度ＮＯｘｒｅｆに対する前記ＮＯｘ濃度の測定値または推定値ＮＯｘｍｓｒの差を表すＮＯｘ濃度ずれΔＮＯｘの前記燃料噴射量の目標値Ｑｔｇｔが所定の範囲内（第１実施形態におけるＱｔｇｔ１≦Ｑｔｇｔ≦Ｑｔｇｔ２）にて増大したときの変化量および前記燃料噴射量の目標値Ｑｔｇｔが所定の第１の値（第１実施形態におけるＱｔｇｔ２）であるときの前記ＮＯｘ濃度ずれΔＮＯｘ（Ｑｔｇｔ２）を含む第１の判定指標、ならびに、前記吸気酸素濃度Ｏｃｏｎが所定の範囲内（第２実施形態におけるＯｃｏｎ１≦Ｑｔｇｔ≦Ｏｃｏｎ２）にて増大したときの前記ＮＯｘ濃度ずれΔＮＯｘの変化量および前記吸気酸素濃度Ｏｃｏｎが所定の第２の値（第２実施形態におけるＯｃｏｎ１）であるときの前記ＮＯｘ濃度ずれΔＮＯｘ（Ｏｃｏｎ１）を含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値Ｑｔｇｔに対する該燃料噴射量の実際値Ｑａｃｔの差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値Ｇａａｃｔに対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒの差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段（図８および図９のルーチン、ならびに、図１８および図１９のルーチン）と、
を備える。
さらに、上述したように、本発明の第１実施形態〜第３実施形態に係る制御装置は、「燃料噴射量の目標値Ｑｔｇｔが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」および「吸気酸素濃度Ｏｃｏｎが増大したときのＮＯｘ濃度ずれΔＮＯｘの変化量」を用いることなく状態判定を行うことができるように構成され得る。
具体的に述べると、上記各実施形態に係る制御装置は、
燃料噴射量の目標値Ｑｔｇｔを決定する燃料噴射量目標値決定手段（図５、図１６および図２１のルーチン）と、
吸気酸素濃度関連パラメータの測定値、推定値または目標値（第１実施形態〜第３実施形態においては、吸入空気量の測定値Ｇａｍｓｒ）を取得する吸気酸素濃度関連パラメータ取得手段（図６、図１７および図２２のルーチン）と、
前記吸気酸素濃度関連パラメータＧａｍｓｒに基づいて前記吸気酸素濃度Ｏｃｏｎを取得する吸気酸素濃度取得手段（図８のステップ８０８および図１８のステップ１８０８）と、
ＮＯｘ濃度の測定値または推定値（第１実施形態〜第３実施形態においては、ＮＯｘ濃度の測定値ＮＯｘｍｓｒ）を取得するＮＯｘ濃度取得手段（図８のステップ８０４および図１８のステップ１８０８）と、
所定のＮＯｘ参照濃度ＮＯｘｒｅｆに対する前記ＮＯｘ濃度の測定値または推定値ＮＯｘｍｓｒの差を表すＮＯｘ濃度ずれΔＮＯｘであって前記燃料噴射量の目標値Ｑｔｇｔが所定の第１の値（特異燃料噴射量）であるときのＮＯｘ濃度ずれΔＮＯｘを含む第１の判定指標、および、前記吸気酸素濃度Ｏｃｏｎが所定の第２の値（特異吸気酸素濃度）であるときの前記ＮＯｘ濃度ずれΔＮＯｘを含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値Ｑｔｇｔに対する該燃料噴射量の実際値Ｑａｃｔの差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値Ｇａａｃｔに対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒの差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段であって、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量（特異燃料噴射量）、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、のうちの少なくとも一方を前記第１の値として採用すると共に、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度（特異吸気酸素濃度）、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、のうちの少なくとも一方を前記第２の値として採用する状態判定手段（図９のルーチンからステップ８１６、ステップ８２４、ステップ８３２およびステップ８４２を削除して得られるルーチン、ならびに、図１９のルーチンからステップ１８１６、ステップ１８２４、ステップ１８３２およびステップ１８４２を削除して得られるルーチン）と、
を備えるように構成され得る。
さらに、上記各実施形態に係る制御装置は、
前記燃料噴射量ずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記燃料噴射量の目標値Ｑｔｇｔを第１補正量Ｑｃだけ減少するように補正し、
前記燃料噴射量ずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記燃料噴射量の目標値Ｑｔｇｔを第２補正量Ｑｃだけ増大するように補正し、
前記吸気酸素濃度関連パラメータずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒを第３補正量Ｇａｃだけ減少するように補正し、
前記吸気酸素濃度関連パラメータずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒを第４補正量Ｇａｃだけ増大するように補正する補正手段（第１実施形態における図５および図６のルーチン、第２実施形態における図１６および図１７のルーチン、ならびに、第３実施形態における図２１および図２２のルーチン）、を備える。
加えて、上記実施形態（第３実施形態）に係る制御装置において、
前記状態判定手段は、
前記第１の判定指標および前記第２の判定指標の双方に基づき、前記燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する（図２３のルーチン）、ように構成されている。
さらに加えて、上記各実施形態に係る制御装置において、
前記補正手段は、
前記ＮＯｘ濃度ずれΔＮＯｘの大きさに応じて前記第１補正量Ｑｃの大きさ、前記第２補正量Ｑｃの大きさ、前記第３補正量Ｇａｃの大きさおよび前記第４補正量Ｇａｃの大きさを決定する、ように構成されている。
さらに、上記各実施形態に係る制御装置において、
前記補正手段は、
前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記燃料噴射量の目標値Ｑｔｇｔを補正することを繰り返し、前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒを補正することを繰り返す、ように構成されている（図５のステップ５８０と図９のルーチンとの組み合わせ、図１６のステップ１６８０と図１９のルーチンとの組み合わせ、および、図２１のステップ２１８０と図２３のルーチンとの組み合わせ）。
加えて、上記各実施形態に係る制御装置は、
前記燃料が正常に噴射されているか否か、および、前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒが正常に取得されているか否か、のうちの少なくとも一方を判定する異常判定手段であって、前記第１補正量Ｑｃおよび前記第２補正量Ｑｃのうちの少なくとも一方が所定の閾値Ｑｃｓｕｍｔｈよりも大きいときに前記燃料が正常に噴射されていないと判定し、前記第３補正量Ｇａｃおよび前記第４補正量Ｇａｃのうちの少なくとも一方が所定の閾値Ｇａｃｓｕｍｔｈよりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する異常判定手段（図１１のルーチン）を備えている。
より具体的に述べると、前記異常判定手段は、
前記燃料噴射量の目標値Ｑｔｇｔが補正される毎に前記第１補正量Ｑｃを積算し、
前記燃料噴射量の目標値Ｑｔｇｔが補正される毎に前記第２補正量Ｑｃを積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒが補正される毎に前記第３補正量Ｇａｃを積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒが補正される毎に前記第４補正量Ｇａｃを積算すると共に、
前記積算された第１補正量の値Ｑｃｓｕｍおよび前記積算された第２補正量の値Ｑｃｓｕｍのうちの少なくとも一方が所定の閾値Ｑｃｓｕｍｔｈよりも大きいときに前記燃料が正常に噴射されていないと判定し、前記積算された第３補正量の値Ｇａｃｓｕｍおよび前記積算された第４補正量の値Ｇａｃｓｕｍのうちの少なくとも一方が所定の閾値Ｇａｃｓｕｍｔｈよりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Ｇａｍｓｒが正常に取得されていないと判定する、ように構成されている（図１１のルーチン）。
なお、上述したように、上記各実施形態に係る制御装置において、
前記吸気酸素濃度関連パラメータ取得手段は、
内燃機関１０に吸入される空気の量である吸入空気量Ｇａを前記吸気酸素濃度関連パラメータのうちの１つとして採用する、ように構成されている（図６、図１７および図２２のルーチン）。
さらに、上記各実施形態に係る制御装置において、
前記第１の値Ｑｔｇｔ２および前記第２の値Ｏｃｏｎ１は、
前記吸気酸素濃度と前記燃料噴射量とに基づいて前記ＮＯｘ濃度を推定するＮＯｘ濃度推定モデル（上記（５）式を参照。）を利用して定められる、ように構成されている。
以上、本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変形や修正を加えることができることは当業者にとって明らかである。
例えば、上記各実施形態の制御装置は、「あらかじめ定められている、機関１０の運転状態とＮＯｘ濃度との関係（マップ）」に基づいてＮＯｘ参照濃度を取得している。しかし、本発明の制御装置は、上記「ＮＯｘ濃度推定モデル」を利用してＮＯｘ参照濃度を定めるように構成され得る。
さらに、上記各実施形態の制御装置は、ＮＯｘ参照濃度ＮＯｘｒｅｆとＮＯｘ濃度の測定値ＮＯｘｍｓｒとに基づいてＮＯｘ濃度ずれを定めている。しかし、本発明の制御装置は、ＮＯｘ参照濃度ＮＯｘｒｅｆとＮＯｘ濃度の「推定値」とに基づいてＮＯｘ濃度ずれΔＮＯｘを定めるように構成され得る。
加えて、上記各実施形態の制御装置は、吸気酸素濃度関連パラメータとして「吸入空気量」を採用している。しかし、本発明の制御装置は、吸気酸素濃度関連パラメータとして、燃料噴射量、機関回転速度、吸気通路内のガスの圧力、排気通路内のガスの圧力、燃料噴射時期、ＥＧＲ率、および、吸気酸素濃度測定装置の出力値などのうちの少なくとも１つを採用するように構成され得る。そして、これらの測定値、推定値または目標値を用いて上記状態判定が行われる。
さらに、上記各実施形態の制御装置は、第１の判定指標に係る「第１の値」として上記所定の範囲（Ｑｔｇｔ１≦Ｑｔｇｔ≦Ｑｔｇｔ２）の最大値（Ｑｔｇｔ２）を採用している。しかし、第１の値は、この値に限定されない。例えば、本発明の制御装置は、上記所定の範囲に含まれる任意の値を「第１の値」として採用するように構成され得る。さらに、本発明の制御装置は、上記状態判定を行うために適切な値であれば、上記所定の範囲に含まれない値を「第１の値」として採用するように構成され得る。
さらに、本発明の制御装置は、「第１の値」として、「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量」を採用するように構成され得る。「第１の値」としてこの値が採用されれば、燃料噴射量ずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
さらに、本発明の制御装置は、「第１の値」として、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量」を採用するように構成され得る。「第１の値」としてこの値が採用されれば、吸気酸素濃度関連パラメータずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
加えて、上記各実施形態の制御装置は、第２の判定指標に係る「第２の値」として上記所定の範囲（Ｏｃｏｎ１≦Ｏｃｏｎ≦Ｏｃｏｎ２）の最小値（Ｏｃｏｎ１）を採用している。しかし、第１の値は、この値に限定されない。例えば、本発明の制御装置は、上記所定の範囲に含まれる任意の値を「第２の値」として採用するように構成され得る。さらに、本発明の制御装置は、上記状態判定を行うために適切な値であれば上記所定の範囲に含まれない値であっても、その値を「第２の値」として採用するように構成され得る。
加えて、本発明の制御装置は、「第２の値」として、「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度」を採用するように構成され得る。「第２の値」としてこの値が採用されれば、燃料噴射量ずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
さらに、本発明の制御装置は、「第２の値」として、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度」を採用するように構成され得る。「第２の値」としてこの値が採用されれば、吸気酸素濃度関連パラメータずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
加えて、上記各実施形態の制御装置は、燃料噴射量の補正量および吸入空気量の補正量を「第１ＮＯｘ濃度ずれの値および第２ＮＯｘ濃度ずれの値の平均値」に基づいて定めている。しかし、本発明の制御装置は、これら補正量を「第１ＮＯｘ濃度ずれの値、および、第２ＮＯｘ濃度ずれの値のいずれか一方」に基づいて定めるように構成され得る。さらに、本発明の制御装置は、これら補正量を上記ＮＯｘ濃度推定モデルに基づいて定めるように構成され得る。さらに加えて、本発明の制御装置は、これら補正量を「あらかじめ取得されている、ＮＯｘ濃度ずれの値と補正量との関係（マップ）」に基づいて定めるように構成され得る。
さらに、上記各実施形態の制御装置は、ＮＯｘ濃度ずれの変化量およびＮＯｘ濃度ずれの値「のみ」に基づいて上記状態判定を行うように構成されている。しかし、本発明の制御装置は、ＮＯｘ濃度ずれの変化量およびＮＯｘ濃度ずれの値、ならびに、それら「以外」のパラメータであって上記状態判定に影響を与え得るパラメータ、に基づいて上記状態判定を行うように構成され得る。
【図１】
2011145223.tif 000003
【図２（Ａ）】
2011145223.tif 000004
【図２（Ｂ）】
2011145223.tif 000005
【図３】
2011145223.tif 000006
【図４（Ａ）】
2011145223.tif 000007
【図４（Ｂ）】
2011145223.tif 000008
【図５】
2011145223.tif 000009
【図６】
2011145223.tif 000010
【図７】
2011145223.tif 000011
【図８】
2011145223.tif 000012
【図９】
2011145223.tif 000013
【図１０】
2011145223.tif 000014
【図１１】
2011145223.tif 000015
【図１２（Ａ）】
2011145223.tif 000016
【図１２（Ｂ）】
2011145223.tif 000017
【図１３】
2011145223.tif 000018
【図１４（Ａ）】
2011145223.tif 000019
【図１４（Ｂ）】
2011145223.tif 000020
【図１５】
2011145223.tif 000021
【図１６】
2011145223.tif 000022
【図１７】
2011145223.tif 000023
【図１８】
2011145223.tif 000024
【図１９】
2011145223.tif 000025
【図２０】
2011145223.tif 000026
【図２１】
2011145223.tif 000027
【図２２】
2011145223.tif 000028
【図２３】
2011145223.tif 000029
【図２４】
2011145223.tif 000030
【手続補正書】
【提出日】平成24年11月2日(2012.11.2)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内燃機関の運転状態に基づいて該内燃機関の気筒内に噴射される燃料の量である燃料噴射量の目標値を決定する燃料噴射量目標値決定手段と、
前記気筒内に吸入されるガスの酸素濃度である吸気酸素濃度に関連するパラメータである吸気酸素濃度関連パラメータの測定値、推定値または目標値を取得する吸気酸素濃度関連パラメータ取得手段と、
前記吸気酸素濃度関連パラメータに基づいて前記吸気酸素濃度を取得する吸気酸素濃度取得手段と、
前記気筒から排出されるガスの窒素酸化物濃度であるＮＯｘ濃度の測定値または推定値を取得するＮＯｘ濃度取得手段と、
所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれの前記燃料噴射量の目標値が所定の範囲内にて増大したときの変化量および前記燃料噴射量の目標値が所定の第１の値であるときの前記ＮＯｘ濃度ずれを含む第１の判定指標、ならびに、前記吸気酸素濃度が所定の範囲内にて増大したときの前記ＮＯｘ濃度ずれの変化量および前記吸気酸素濃度が所定の第２の値であるときの前記ＮＯｘ濃度ずれを含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する
状態判定手段と、
を備えた内燃機関の制御装置。
【請求項２】
内燃機関の運転状態に基づいて該内燃機関の気筒内に噴射される燃料の量である燃料噴射量の目標値を決定する燃料噴射量目標値決定手段と、
前記気筒内に吸入されるガスの酸素濃度である吸気酸素濃度に関連するパラメータである吸気酸素濃度関連パラメータの測定値、推定値または目標値を取得する吸気酸素濃度関連パラメータ取得手段と、
前記吸気酸素濃度関連パラメータに基づいて前記吸気酸素濃度を取得する吸気酸素濃度取得手段と、
前記気筒から排出されるガスの窒素酸化物濃度であるＮＯｘ濃度の測定値または推定値を取得するＮＯｘ濃度取得手段と、
所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれであって前記燃料噴射量の目標値が所定の第１の値であるときのＮＯｘ濃度ずれを含む第１の判定指標、および、前記吸気酸素濃度が所定の第２の値であるときの前記ＮＯｘ濃度ずれを含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段であって、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、のうちの少なくとも一方を前記第１の値として採用すると共に、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、のうちの少なくとも一方を前記第２の値として採用する状態判定手段と、
を備えた内燃機関の制御装置。
【請求項３】
請求項１または請求項２に記載の制御装置であって、
前記燃料噴射量ずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記燃料噴射量の目標値を第１補正量だけ減少するように補正し、
前記燃料噴射量ずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記燃料噴射量の目標値を第２補正量だけ増大するように補正し、
前記吸気酸素濃度関連パラメータずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第３補正量だけ減少するように補正し、
前記吸気酸素濃度関連パラメータずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第４補正量だけ増大するように補正する補正手段、
を備えた内燃機関の制御装置。
【請求項４】
請求項１〜請求項３のいずれか一項に記載の制御装置において、
前記状態判定手段は、
前記第１の判定指標および前記第２の判定指標の双方に基づき、前記燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する、ように構成された内燃機関の制御装置。
【請求項５】
請求項３または請求項４のいずれか一項に記載の制御装置において、
前記補正手段は、
前記ＮＯｘ濃度ずれの大きさに応じて前記第１補正量の大きさ、前記第２補正量の大きさ、前記第３補正量の大きさおよび前記第４補正量の大きさを決定する、ように構成された内燃機関の制御装置。
【請求項６】
請求項３〜請求項５のいずれか一項に記載の制御装置において、
前記補正手段は、
前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記燃料噴射量の目標値を補正することを繰り返し、前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正することを繰り返す、ように構成された内燃機関の制御装置。
【請求項７】
請求項３〜請求項６のいずれか一項に記載の制御装置であって、
前記燃料が正常に噴射されているか否か、および、前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されているか否か、のうちの少なくとも一方を判定する異常判定手段であって、
前記第１補正量および前記第２補正量のうちの少なくとも一方が所定の閾値よりも大きいときに前記燃料が正常に噴射されていないと判定し、前記第３補正量および前記第４補正量のうちの少なくとも一方が所定の閾値よりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する異常判定手段、を備えた内燃機関の制御装置。
【請求項８】
請求項６または請求項７に記載の制御装置において、
前記異常判定手段は、
前記燃料噴射量の目標値が補正される毎に前記第１補正量を積算し、
前記燃料噴射量の目標値が補正される毎に前記第２補正量を積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第３補正量を積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第４補正量を積算すると共に、
前記積算された第１補正量の値および前記積算された第２補正量の値のうちの少なくとも一方が所定の閾値よりも大きいときに前記燃料が正常に噴射されていないと判定し、前記積算された第３補正量の値および前記積算された第４補正量の値のうちの少なくとも一方が所定の閾値よりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する、ように構成された内燃機関の制御装置。
【請求項９】
請求項１および請求項３〜請求項８のいずれか一項に記載の制御装置において、
前記状態判定手段は、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、のうちの少なくとも一方を前記第１の値として採用し、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、のうちの少なくとも一方を前記第２の値として採用する、ように構成された内燃機関の制御装置。
【請求項１０】
請求項１〜請求項９のいずれか一項に記載の制御装置において、
前記吸気酸素濃度関連パラメータ取得手段は、
前記内燃機関に吸入される空気の量である吸入空気量を前記吸気酸素濃度関連パラメータのうちの１つとして採用する、ように構成された内燃機関の制御装置。
【請求項１１】
請求項１〜請求項１０のいずれか一項に記載の制御装置において、
前記ＮＯｘ参照濃度は、
前記燃料噴射量と前記吸気酸素濃度とに基づいて前記ＮＯｘ濃度を推定するＮＯｘ濃度推定モデルを利用して定められる、ように構成された内燃機関の制御装置。
【請求項１２】
請求項１１に記載の制御装置において、
前記第１の値および前記第２の値は、
前記ＮＯｘ濃度推定モデルを利用して定められる、ように構成された内燃機関の制御装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関から排出される窒素酸化物（以下、「ＮＯｘ」とも称呼する。）の量を制御する内燃機関の制御装置に関する。
【背景技術】
【０００２】
火花点火式内燃機関およびディーゼル機関などの内燃機関（特に、ディーゼル機関）から排出されるガスには、ＮＯｘおよび微粒子状物質（以下、「ＰＭ」とも称呼する。）などの有害物質（以下、「エミッション」とも称呼する。）が含まれる。このエミッションの排出量は出来る限り低減されることが望ましい。この排ガスに含まれるＮＯｘ量を低減する方法として、例えば、ＥＧＲ装置によって還流されるガスの量であるＥＧＲガス量を内燃機関の運転状態に応じて制御する方法などが提案されている。
【０００３】
ところが、周知のように、排ガスに含まれるＮＯｘ量と、排ガスに含まれるＰＭ量と、の間には二律背反の関係がある。すなわち、ＮＯｘ量を減少させるように内燃機関が制御されるとＰＭ量が増大し、ＰＭ量を減少させるように内燃機関が制御されるとＮＯｘ量が増大する。そのため、エミッションの排出量を総合的に低減する観点において、ＮＯｘ量およびＰＭ量の双方を考慮して内燃機関が制御されることが望ましい。
【０００４】
具体的に述べると、ＮＯｘ量を出来る限り低減させると共にＰＭ量が増大されることを抑制するためには、ＮＯｘ量が内燃機関の運転状態に応じた所定の目標量に一致するように内燃機関が制御されることが望ましい。例えば、従来の内燃機関の制御装置の一つ（以下、「従来装置」とも称呼する。）は、気筒内に吸入されるガスの酸素濃度である吸気酸素濃度と、気筒内のガスの圧力である気筒内圧力と、気筒内に噴射される燃料の量、および、気筒内に燃料が噴射される時期などの運転パラメータの値を取得する。そして、従来装置は、それら運転パラメータの値を所定のＮＯｘ量推定モデルに適用することにより、排ガスに含まれるＮＯｘ量を推定するようになっている。さらに、この従来装置は、推定されたＮＯｘ量が所定の目標値であるＮＯｘ目標量に一致するように、ＥＧＲガス量などを制御するようになっている（例えば、特開２００２−３７１８９３号公報を参照。）。
【発明の概要】
【０００５】
従来装置は、上述したように、所定の運転パラメータの値に基づいて推定されるＮＯｘ量が所定のＮＯｘ目標量に一致するようにＥＧＲガス量などを制御するようになっている。すなわち、従来装置は、「取得された上記運転パラメータの値がそれら運転パラメータの実際の（現実の）値と一致している」こと（すなわち、取得された上記運転パラメータの値が正常であること）を前提としてＥＧＲガス量などを制御している。しかしながら、上記運転パラメータの値に関与する部材（例えば、各種センサおよび燃料噴射装置など）には、様々な要因による破損および経年劣化などの異常が生じる場合がある。さらに、上記運転パラメータの値に関与する部材は、構成上のばらつき（製造の際に生じる同一種の部材間における寸法および性能などの差）を有する場合もある。以下、便宜上、破損および経年劣化などの異常と、構成上のばらつきと、を単に「異常」と総称する。
【０００６】
上記異常が生じている場合、従来装置が取得した上記運転パラメータの値は正常ではない虞がある。上記運転パラメータの値が正常ではない場合、従来装置は、ＮＯｘ量を適切に制御することができない。さらに、上記運転パラメータの値が正常ではない場合であっても、従来装置は、取得された運転パラメータの値（すなわち、実際の（現実の）運転パラメータの値と異なる値）と、実際の（現実の）運転パラメータの値と、がどのように異なるかを確認することができない。
【０００７】
本発明の目的は、上記課題に鑑み、上記異常が生じた場合であっても、内燃機関の排ガスに含まれるＮＯｘ量に影響を与える運転パラメータの実際の（現実の）値と、その運転パラメータの取得された値と、がどのように異なるかを判定することができる内燃機関の制御装置を提供することにある。
【０００８】
上記課題を達成するための本発明による「第１の内燃機関の制御装置」は、
燃料噴射量目標値決定手段と、吸気酸素濃度関連パラメータ取得手段と、吸気酸素濃度取得手段と、ＮＯｘ濃度取得手段と、状態判定手段と、を備える。以下、これら手段についてより詳細に説明する。
【０００９】
燃料噴射量目標値決定手段は、
前記内燃機関の運転状態に基づき、該内燃機関の気筒内に噴射（供給）される燃料の量である「燃料噴射量」の目標値を決定するようになっている。この内燃機関の運転状態として、燃料噴射量の目標値を決定するために必要な運転パラメータが適宜採用され得る。例えば、機関回転速度およびアクセルペダル開度などが、内燃機関の運転状態として採用され得る。
【００１０】
吸気酸素濃度関連パラメータ取得手段は、
前記気筒内に吸入されるガスの酸素濃度である吸気酸素濃度に関連するパラメータである「吸気酸素濃度関連パラメータ」の測定値、推定値または目標値を取得するようになっている。吸気酸素濃度関連パラメータとして、例えば、内燃機関に吸入される空気の量である吸入空気量、気筒内に噴射される燃料の量である燃料噴射量、機関回転速度、内燃機関の吸気通路内のガスの圧力、内燃機関の排気通路内のガスの圧力、および、気筒内に燃料を噴射する時期である燃料噴射時期などのうちの少なくとも１つが、採用され得る。さらに、排ガスを排気通路から吸気通路へ還流させる排気再循環（ＥＧＲ）が行われている場合、「気筒内に吸入されるガス（すなわち、内燃機関の外部から吸入される空気と、排気再循環によって吸気通路へ還流される排ガス、の混合物）の量」に対する「排気再循環によって吸気通路へ還流される排ガスの量であるＥＧＲガス量」の比であるＥＧＲ率が、吸気酸素濃度関連パラメータとして採用され得る。加えて、吸気通路の所定位置に吸気酸素濃度測定装置（例えば、酸素濃度センサなど）が設けられている場合、その吸気酸素濃度測定装置の出力値が、吸気酸素濃度関連パラメータとして採用され得る。
【００１１】
この「吸気酸素濃度関連パラメータの測定値、推定値または目標値」を取得する方法は、特に限定されない。例えば、所定の吸気酸素濃度関連パラメータを取得するための周知の測定方法、推定方法または目標値の決定方法が、その方法として採用され得る。
【００１２】
吸気酸素濃度取得手段は、
前記吸気酸素濃度関連パラメータに基づき、「前記吸気酸素濃度」を取得するようになっている。この「吸気酸素濃度」を取得する方法は、特に制限されない。例えば、所定の吸気酸素濃度関連パラメータと吸気酸素濃度との関係を表す関係式をあらかじめ定めると共に、その関係式に実際の吸気酸素濃度関連パラメータを適用することによって吸気酸素濃度を算出する方法が、その方法として採用され得る。さらに、例えば、上記吸気酸素濃度測定装置の出力値に基づいて吸気酸素濃度を取得する方法が、その方法として採用され得る。
【００１３】
上記「所定の関係式に実際の吸気酸素濃度関連パラメータを適用することによって吸気酸素濃度を算出する方法」は、特に限定されない。例えば、排気再循環（ＥＧＲ）が行われている場合、ＥＧＲ率と、理論空燃比（≒１４．７）に対する実際の空燃比（実空燃比）の比である空気過剰率と、に基づいて吸気酸素濃度を算出する方法が、その方法として採用され得る。さらに、例えば、内燃機関の外部のガス（空気）の酸素濃度と、吸気通路内のガスの圧力と、に基づいて吸気酸素濃度を算出する方法が、その方法として採用され得る。
【００１４】
ＮＯｘ濃度取得手段は、
前記気筒から排出されるガスの窒素酸化物濃度である「ＮＯｘ濃度」の測定値または推定値を取得するようになっている。この「ＮＯｘ濃度の測定値または推定値」を取得する方法は、特に限定されない。例えば、ＮＯｘ濃度の測定値または推定値を取得する方法として、排気通路の所定位置にＮＯｘ濃度測定装置（例えば、ＮＯｘ濃度センサなど）を設けると共に、そのＮＯｘ濃度測定装置の出力値に基づいてＮＯｘ濃度の「測定値」を取得する方法が、採用され得る。さらに、例えば、あらかじめ実験などによって所定の運転パラメータ（例えば、吸気酸素濃度および燃料噴射量など）とＮＯｘ濃度との関係（例えば、ＮＯｘ濃度マップ）を取得すると共に、実際の運転パラメータをその関係に適用することによってＮＯｘ濃度の「推定値」を取得する方法が、その方法として採用され得る。加えて、例えば、所定の運転パラメータ（例えば、吸気酸素濃度および燃料噴射量など）に基づいてＮＯｘ濃度を推定するＮＯｘ濃度推定モデルに実際の運転パラメータを適用することによってＮＯｘ濃度の「推定値」を取得する方法が、その方法として採用され得る。
【００１５】
状態判定手段は、
「前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれ」が「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
「前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれ」が、「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
【００１６】
上記燃料噴射量ずれは、「燃料噴射量の目標値」を基準としてその「燃料噴射量の目標値」と「燃料噴射量の実際値」との差を表現することができる数値であればよく、特に制限されない。例えば、燃料噴射量ずれとして、「燃料噴射量の実際値から燃料噴射量の目標値を減算して得られる値」を「燃料噴射量の目標値」によって除算して得られる値（すなわち、燃料噴射量の目標値に対する上記減算して得られる値の割合）が、採用され得る。さらに、例えば、「燃料噴射量の実際値から燃料噴射量の目標値を減算して得られる値そのもの」が、燃料噴射量ずれとして採用され得る。
【００１７】
より具体的に述べると、燃料噴射量の目標値よりも燃料噴射量の実際値が大きいとき、燃料噴射量ずれは「正」である。さらに、燃料噴射量の目標値と燃料噴射量の実際値とが一致しているとき、燃料噴射量ずれは「ゼロ」である。加えて、燃料噴射量の目標値よりも燃料噴射量の実際値が小さいとき、燃料噴射量ずれは「負」である。
【００１８】
上記吸気酸素濃度関連パラメータずれは、「吸気酸素濃度関連パラメータの実際値」を基準としてその「吸気酸素濃度関連パラメータの実際値」と「吸気酸素濃度関連パラメータの測定値、推定値または目標値」との差を表現することができる数値であればよく、特に制限されない。例えば、吸気酸素濃度関連パラメータずれとして、「吸気酸素濃度関連パラメータの測定値、推定値または目標値から吸気酸素濃度関連パラメータの実際値を減算して得られる値」を「吸気酸素濃度関連パラメータの実際値」によって除算して得られる値（すなわち、吸気酸素濃度関連パラメータの実際値に対する上記減算して得られる値の割合）が、採用され得る。さらに、例えば、「吸気酸素濃度関連パラメータの測定値、推定値または目標値から吸気酸素濃度関連パラメータの実際値を減算して得られる値そのもの」が、吸気酸素濃度関連パラメータずれとして採用され得る。
【００１９】
より具体的に述べると、吸気酸素濃度関連パラメータの実際値よりも吸気酸素濃度関連パラメータの測定値、推定値または目標値が大きいとき、吸気酸素濃度関連パラメータずれは「正」である。さらに、吸気酸素濃度関連パラメータの実際値と吸気酸素濃度関連パラメータの測定値、推定値または目標値とが一致しているとき、吸気酸素濃度関連パラメータずれは「ゼロ」である。加えて、吸気酸素濃度関連パラメータの実際値よりも吸気酸素濃度関連パラメータの測定値、推定値または目標値が小さいとき、吸気酸素濃度関連パラメータずれは「負」である。
【００２０】
以下、便宜上、「燃料噴射量ずれの大きさがゼロ、正および負のいずれであるか、あるいは、ゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか」を、単に「燃料噴射量ずれの状態」とも称呼する。さらに、以下、便宜上、「吸気酸素濃度関連パラメータずれの大きさがゼロ、正および負のいずれであるか、あるいは、ゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか」を、単に「吸気酸素濃度関連パラメータずれの状態」とも称呼する。
【００２１】
燃料噴射量ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点において燃料噴射量ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。さらに、吸気酸素濃度関連パラメータずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点において吸気酸素濃度関連パラメータずれがゼロであるとみなし得る範囲であればよく、特に制限されない。これら「所定の範囲」は、内燃機関に要求されるエミッション排出量などに基づいて適宜定められ得る。
【００２２】
以下、便宜上、「燃料噴射量ずれがゼロまたは上記所定の範囲内の値であり、かつ、吸気酸素濃度関連パラメータずれがゼロまたは上記所定の範囲内の値である」ことを、「燃料噴射量および吸気酸素濃度関連パラメータは正常である」とも称呼する。これに対し、以下、便宜上、「燃料噴射量ずれがゼロまたは上記所定の範囲内の値であること、および、吸気酸素濃度関連パラメータずれがゼロまたは上記所定の範囲内の値であること、のうちの少なくとも一方が成立しない」ことを、「燃料噴射量および吸気酸素濃度関連パラメータが異常である」とも称呼する。
【００２３】
上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態が判定される際に用いられる判定指標についてより具体的に述べると、状態判定手段は、
（１）「所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれ」の前記燃料噴射量の目標値が所定の範囲内にて増大したときの変化量、および、前記燃料噴射量の目標値が所定の「第１の値」であるときの前記ＮＯｘ濃度ずれ、を含む第１の判定指標、
ならびに、
（２）前記吸気酸素濃度が所定の範囲内にて増大したときの前記ＮＯｘ濃度ずれの変化量、および、前記吸気酸素濃度が所定の「第２の値」であるときの前記ＮＯｘ濃度ずれ、を含む第２の判定指標、
のうちの少なくとも一方に基づき、上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つ、を判定するようになっている。
【００２４】
上記ＮＯｘ濃度ずれは、「ＮＯｘ参照濃度」を基準としてその「ＮＯｘ参照濃度」と「ＮＯｘ濃度の測定値または推定値」との差を表現することができる数値であればよく、特に制限されない。例えば、ＮＯｘ濃度ずれとして、「ＮＯｘ濃度の測定値または推定値からＮＯｘ参照濃度を減算して得られる値」を「ＮＯｘ参照濃度」によって除算して得られる値（すなわち、ＮＯｘ参照濃度に対する上記減算して得られる値の割合）が、採用され得る。さらに、例えば、「ＮＯｘ濃度の測定値または推定値からＮＯｘ参照濃度を減算して得られる値そのもの」が、ＮＯｘ濃度ずれとして採用され得る。
【００２５】
より具体的に述べると、ＮＯｘ参照濃度よりもＮＯｘ濃度の測定値または推定値が大きいとき、ＮＯｘ濃度ずれは「正」である。さらに、ＮＯｘ参照濃度とＮＯｘ濃度の測定値または推定値とが一致しているとき、ＮＯｘ濃度ずれは「ゼロ」である。加えて、ＮＯｘ参照濃度よりもＮＯｘ濃度の測定値または推定値が小さいとき、ＮＯｘ濃度ずれは「負」である。
【００２６】
上記「ＮＯｘ参照濃度」は、「燃料噴射量ずれがゼロまたは上記所定の範囲内の値であり、かつ、吸気酸素濃度関連パラメータずれがゼロまたは上記所定の範囲内の値であるときに取得されるＮＯｘ濃度」に相当する。換言すると、燃料噴射量および吸気酸素濃度関連パラメータが正常であるとき、ＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。
【００２７】
ＮＯｘ濃度ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点においてＮＯｘ濃度ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。この「所定の範囲」は、内燃機関に要求されるエミッション排出量などに基づいて適宜定められ得る。
【００２８】
上記ＮＯｘ参照濃度を定める方法は、特に制限されない。ＮＯｘ参照濃度を定める方法として、例えば、あらかじめ実験などによって「燃料噴射量および吸気酸素濃度関連パラメータが正常であることが確認されている内燃機関における、所定の運転パラメータ（例えば、燃料噴射量および吸気酸素濃度関連パラメータなど）とＮＯｘ濃度との関係」を取得すると共に、実際の運転パラメータをその関係に適用することによって得られるＮＯｘ濃度をＮＯｘ参照濃度として定める方法が、採用され得る。さらに、例えば、所定の運転パラメータ（例えば、燃料噴射量および吸気酸素濃度など）に基づいてＮＯｘ濃度を推定するＮＯｘ濃度推定モデルに実際の運転パラメータを適用することによって得られるＮＯｘ濃度をＮＯｘ参照濃度として定める方法が、その方法として採用され得る。
【００２９】
上記「第１の値」および上記「第２の値」は、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つを判定するために適切な値であればよく、特に制限されない。さらに、燃料噴射量の目標値に係る上記「所定の範囲」、および、吸気酸素濃度に係る上記「所定の範囲」は、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つを判定するために適切な範囲であればよく、特に制限されない。
【００３０】
上記「第１の判定指標」は、燃料噴射量の目標値が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第１の判定指標」は、燃料噴射量の目標値が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ、ならびに、それら「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
【００３１】
上記「第２の判定指標」は、吸気酸素濃度が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第２の判定指標」は、吸気酸素濃度が所定の範囲内にて増大したときのＮＯｘ濃度ずれの変化量および吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ、ならびに、それら「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
【００３２】
以下、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態を判定する具体的な方法について述べる前に、内燃機関の運転パラメータと排ガスのＮＯｘ濃度との関係について説明する。
【００３３】
周知の燃焼モデル（サーマルＮＯｘ生成機構）の１つである拡大ゼルドヴィッチ機構によれば、燃焼過程において生成される窒素酸化物の濃度は、燃焼に供されるガスの窒素濃度および酸素濃度、ならびに、燃焼時の火炎温度の影響を受ける。発明者は、この拡大ゼルドヴィッチ機構をさらに詳細に検討した。発明者による種々の考察および種々の実験などによれば、内燃機関の排ガスに含まれるＮＯｘ量（すなわち、上記ＮＯｘ濃度）と、内燃機関の気筒内に噴射（供給）される燃料の量（すなわち、上記燃料噴射量）と、その気筒内に吸入されるガスの酸素濃度（すなわち、上記吸気酸素濃度）と、の間に強い相関があることが確認された。さらに、発明者による上記考察および上記実験などによれば、「燃料噴射量とＮＯｘ濃度との相関の程度」と、「吸気酸素濃度とＮＯｘ濃度との相関の程度」と、が異なることが確認された。なお、この吸気酸素濃度は、上述したように、吸気酸素濃度関連パラメータに基づいて定められる値である。
【００３４】
したがって、「燃料噴射量ずれ」が生じた場合のＮＯｘ濃度ずれの程度と、「吸気酸素濃度関連パラメータずれ」が生じた場合のＮＯｘ濃度ずれの程度と、は異なる。さらに、燃料噴射量の目標値が所定の値であるときに「燃料噴射量ずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、燃料噴射量の目標値がその所定の値であるときに「吸気酸素濃度関連パラメータずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、は異なる。加えて、吸気酸素濃度が所定の値であるときに「燃料噴射量ずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、吸気酸素濃度がその所定の値であるときに「吸気酸素濃度関連パラメータずれ」が生じた場合におけるＮＯｘ濃度ずれの程度と、は異なる。
【００３５】
さらに、上述したように、ＮＯｘ濃度ずれは、燃料噴射量および吸気酸素濃度関連パラメータが正常であるとき（すなわち、燃料噴射量ずれがゼロまたはゼロを含む所定の範囲内の値であり、かつ、吸気酸素濃度関連パラメータずれがゼロまたはゼロを含む所定の範囲内の値であるとき）ゼロまたはゼロを含む所定の範囲内の値となるように定められている。そのため、燃料噴射量ずれの大きさに応じてＮＯｘ濃度ずれは変化し、吸気酸素濃度関連パラメータずれの大きさに応じてＮＯｘ濃度ずれは変化する。
【００３６】
このように、ＮＯｘ濃度と、燃料噴射量と、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれ、吸気酸素濃度関連パラメータずれと、の間には所定の相関がある。そこで、状態判定手段は、上記「第１の判定指標（すなわち、燃料噴射量とＮＯｘ濃度ずれとの関係）」および上記「第２の判定指標（すなわち、吸気酸素濃度とＮＯｘ濃度ずれとの関係）」を利用し、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態を判定するようになっている。
【００３７】
すなわち、状態判定手段は、
上記第１の判定指標および上記第２の判定指標のうちの少なくとも一方に基づき、
（Ａ）前記燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｂ）前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
（Ｃ）前記吸気酸素濃度関連パラメータずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｄ）前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
【００３８】
このように、本発明の第１の内燃機関の制御装置は、ＮＯｘ濃度ずれを利用して「燃料噴射量ずれの状態」および「吸気酸素濃度関連パラメータずれの状態」のうちの少なくとも一方を判定することができる。すなわち、本発明の第１の内燃機関の制御装置は、ＮＯｘ濃度ずれが生じているとき、燃料噴射量および吸気酸素濃度関連パラメータの実際の値と、それらの取得された値と、がどのように異なるかを判定することができる。
【００３９】
なお、状態判定手段によって燃料噴射量ずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、燃料噴射量に関与する部材が正常であると判定することもできる。さらに、状態判定手段によって吸気酸素濃度関連パラメータずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、吸気酸素濃度関連パラメータに関与する部材が正常であると判定することもできる。
【００４０】
さらに、上記課題を達成するための本発明による「第２の内燃機関の制御装置」は、
燃料噴射量目標値決定手段と、吸気酸素濃度関連パラメータ取得手段と、吸気酸素濃度取得手段と、ＮＯｘ濃度取得手段と、状態判定手段と、を備える。以下、これら手段についてより詳細に説明する。
【００４１】
燃料噴射量目標値決定手段、吸気酸素濃度関連パラメータ取得手段、吸気酸素濃度取得手段は、および、ＮＯｘ濃度取得手段は、それぞれ、「第１の内燃機関の制御装置」の燃料噴射量目標値決定手段、吸気酸素濃度関連パラメータ取得手段、吸気酸素濃度取得手段は、および、ＮＯｘ濃度取得手段と同じである。
【００４２】
状態判定手段は、
「前記燃料噴射量の目標値に対する該燃料噴射量の実際値の差を表す燃料噴射量ずれ」が「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
「前記吸気酸素濃度関連パラメータの実際値に対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値の差を表す吸気酸素濃度関連パラメータずれ」が、「ゼロ」、「正」および「負」のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
【００４３】
上記燃料噴射量ずれ、および、上記吸気酸素濃度関連パラメータずれは、それぞれ、「第１の内燃機関の制御装置」に関連して説明した燃料噴射量ずれ、および、吸気酸素濃度関連パラメータずれと同じである。
【００４４】
以下、便宜上、「第１の内燃機関の制御装置」に関連して説明した「燃料噴射量ずれの状態」、「吸気酸素濃度関連パラメータずれの状態」、「燃料噴射量および吸気酸素濃度関連パラメータは正常である」、および、「燃料噴射量および吸気酸素濃度関連パラメータが異常である」と同じ意味で、「燃料噴射量ずれの状態」、「吸気酸素濃度関連パラメータずれの状態」「燃料噴射量および吸気酸素濃度関連パラメータは正常である」、および、「燃料噴射量および吸気酸素濃度関連パラメータが異常である」を使用する。
【００４５】
上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態が判定される際に用いられる判定指標についてより具体的に述べると、状態判定手段は、
（１）「所定のＮＯｘ参照濃度に対する前記ＮＯｘ濃度の測定値または推定値の差を表すＮＯｘ濃度ずれ」であって前記燃料噴射量の目標値が所定の「第１の値」であるときのＮＯｘ濃度ずれを含む第１の判定指標、
および、
（２）前記吸気酸素濃度が所定の「第２の値」であるときの前記ＮＯｘ濃度ずれを含む第２の判定指標、
のうちの少なくとも一方に基づき、上記燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも１つ、を判定するようになっている。
【００４６】
上記「ＮＯｘ濃度ずれ」は、上記「ＮＯｘ参照濃度」、および、ＮＯｘ濃度ずれに係る上記「所定の範囲」は、それぞれ、「第１の内燃機関の制御装置」に関連して説明した「ＮＯｘ濃度ずれ」、「ＮＯｘ参照濃度」、および、ＮＯｘ濃度ずれに係る「所定の範囲」と同じである。
【００４７】
上記ＮＯｘ参照濃度を定める方法は、特に制限されず、「第１の内燃機関の制御装置」に関連して説明した「ＮＯｘ参照濃度を定める方法」と同様である。
【００４８】
上記「第１の判定指標」は、燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第１の判定指標」は、燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ、および、それ「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
【００４９】
上記「第２の判定指標」は、吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ「のみ」を含むように構成され得る。さらに、上記「第２の判定指標」は、吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ、および、それ「以外」のパラメータであって上記判定に影響を与え得るパラメータ、を含むように構成され得る。
【００５０】
なお、「第２の内燃機関の制御装置」に関する内燃機関の運転パラメータと排ガスのＮＯｘ濃度との関係は、「第１の内燃機関の制御装置」に関する内燃機関の運転パラメータと排ガスのＮＯｘ濃度との関係と同じである。
【００５１】
したがって、ＮＯｘ濃度と、燃料噴射量と、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれ、吸気酸素濃度関連パラメータずれと、の間には所定の相関がある。そこで、状態判定手段は、上記「第１の判定指標（すなわち、燃料噴射量とＮＯｘ濃度ずれとの関係）」および上記「第２の判定指標（すなわち、吸気酸素濃度とＮＯｘ濃度ずれとの関係）」を利用し、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態を判定するようになっている。
【００５２】
すなわち、状態判定手段は、
上記第１の判定指標および上記第２の判定指標のうちの少なくとも一方に基づき、
（Ａ）前記燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｂ）前記燃料噴射量ずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
ならびに、
（Ｃ）前記吸気酸素濃度関連パラメータずれが「ゼロ」、「正」および「負」のいずれであるか、
あるいは、
（Ｄ）前記吸気酸素濃度関連パラメータずれが「ゼロを含む所定の範囲内の値」、「該所定の範囲内の最大値よりも大きい値」および「該所定の範囲内の最小値よりも小さい値」のいずれであるか、
のうちの少なくとも１つ、を判定するようになっている。
【００５３】
ここで、状態判定手段は、上記判定を行う際に利用する「第１の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、
のうちの少なくとも一方、を採用するようになっている。
【００５４】
上述したように、「第１の値」は、燃料噴射量の目標値に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値（すなわち、燃料噴射量の目標値）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【００５５】
一方、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
【００５６】
さらに、状態判定手段は、上記判定を行う際に利用する「第２の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、
のうちの少なくとも一方、を採用するようになっている。
【００５７】
上述したように、「第２の値」は、吸気酸素濃度に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値（すなわち、吸気酸素濃度）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【００５８】
一方、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
【００５９】
なお、上述したように、ＮＯｘ濃度ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点においてＮＯｘ濃度ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。
【００６０】
このように、本発明の第２の内燃機関の制御装置は、ＮＯｘ濃度ずれを利用して「燃料噴射量ずれの状態」および「吸気酸素濃度関連パラメータずれの状態」のうちの少なくとも一方を判定することができる。すなわち、本発明の第２の内燃機関の制御装置は、ＮＯｘ濃度ずれが生じているとき、燃料噴射量および吸気酸素濃度関連パラメータの実際の値と、それらの取得された値と、がどのように異なるかを判定することができる。
【００６１】
なお、状態判定手段によって燃料噴射量ずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、燃料噴射量に関与する部材に異常が生じていないと判定することもできる。さらに、状態判定手段によって吸気酸素濃度関連パラメータずれがゼロまたはゼロを含む所定の範囲内の値であると判定されれば、吸気酸素濃度関連パラメータに関与する部材が正常であると判定することもできる。
【００６２】
以下、便宜上、「本発明の第１の内燃機関の制御装置」および「本発明の第２の内燃機関の制御装置」を、単に「本発明の内燃機関の制御装置」と総称する。
【００６３】
本発明の内燃機関の制御装置の第１の態様として、
制御装置は、補正手段を備えるように構成され得る。
【００６４】
この補正手段は、
（１）前記燃料噴射量ずれが「正」または「前記所定の範囲内の最大値よりも大きい値」であると判定されていれば前記燃料噴射量の目標値を「第１補正量だけ減少する」ように補正し、
（２）前記燃料噴射量ずれが「負」または「前記所定の範囲内の最小値よりも小さい値」であると判定されていれば前記燃料噴射量の目標値を「第２補正量だけ増大する」ように補正し、
（３）前記吸気酸素濃度関連パラメータずれが「正」または「前記所定の範囲内の最大値よりも大きい値」であると判定されていれば「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第３補正量だけ減少する」ように補正し、
（４）前記吸気酸素濃度関連パラメータずれが「負」または「前記所定の範囲内の最小値よりも小さい値である」と判定されていれば「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を第４補正量だけ増大する」ように補正する、
ように構成され得る。
【００６５】
上述したように、本発明の内燃機関の制御装置は、ＮＯｘ濃度ずれが生じているとき、燃料噴射量および吸気酸素濃度関連パラメータの実際の値と、それらの取得された値と、がどのように異なるか（すなわち、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態）を判定することができる。
【００６６】
そこで、本態様における補正手段は、判定された燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態に応じて燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正する。これにより、「燃料噴射量ずれ」の大きさおよび「吸気酸素濃度関連パラメータずれ」の大きさが低減される。その結果、「ＮＯｘ濃度ずれ」の大きさが低減される。
【００６７】
本発明の内燃機関の制御装置の第２の態様として、
前記状態判定手段は、
前記第１の判定指標および前記第２の判定指標の「双方」に基づき、前記燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する、ように構成され得る。
【００６８】
本態様における状態判定手段は、第１の判定指標および第２の判定指標の「双方」に基づいて燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも一方を判定する。したがって、本態様における状態判定手段は、第１の判定指標および第２の判定指標の「一方」に基づいてそれら状態を判定する場合に比べ、より正確にそれら状態を判定することができる。
【００６９】
本発明の内燃機関の制御装置の第３の態様として、
前記補正手段は、
「前記ＮＯｘ濃度ずれの大きさ」に応じて前記第１補正量の大きさ、前記第２補正量の大きさ、前記第３補正量の大きさおよび前記第４補正量の大きさを決定する、
ように構成され得る。
【００７０】
上述したように、上記「第１の態様」における補正手段は、ＮＯｘ濃度ずれの大きさに応じて燃料噴射量の目標値を所定の補正量（第１補正量または第２補正量）だけ補正するようになっている。さらに、この補正手段は、ＮＯｘ濃度ずれの大きさに応じて吸気酸素濃度関連パラメータの測定値、推定値または目標値を所定の補正量（第３補正量または第４補正量）だけ補正するようになっている。
【００７１】
上述したように、ＮＯｘ濃度と燃料噴射量と吸気酸素濃度との間には強い相関がある。そのため、ＮＯｘ濃度ずれの大きさと、燃料噴射量ずれの大きさと、吸気酸素濃度関連パラメータずれの大きさと、の間にも相関があると考えられる。そこで、上記「第３の態様」における補正手段は、上記補正量の大きさをＮＯｘ濃度ずれの大きさに応じて決定するようになっている。これにより、本態様における補正手段は、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれのうちの少なくとも一方が生じた場合、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値をより適切に補正することができる。これにより、「燃料噴射量ずれ」の大きさおよび「吸気酸素濃度関連パラメータずれ」の大きさがより適切に低減される。その結果、「ＮＯｘ濃度ずれ」の大きさがより適切に低減される。
【００７２】
本発明の内燃機関の制御装置の第４の態様として、
前記補正手段は、
（１）前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記燃料噴射量の目標値を補正することを繰り返し、
（２）前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正することを繰り返す、
ように構成され得る。
【００７３】
上述したように、上記「第１の態様」および上記「第３の態様」における補正手段は、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正するようになっている。
【００７４】
さらに、上記「第４の態様」における補正手段は、この補正を繰り返し実行するようになっている。これにより、本態様における補正手段は、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれのうちの少なくとも一方が生じた場合、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれを実質的にゼロ（ゼロまたは上記所定の範囲内の値）にまで低減することができる。その結果、「ＮＯｘ濃度ずれ」の大きさが実質的にゼロ（ゼロまたは所定の範囲内の値）にまで低減される。
【００７５】
本発明の内燃機関の制御装置の第５の態様として、
制御装置は、異常判定手段を備えるように構成され得る。
【００７６】
この異常判定手段は、
「前記燃料が正常に噴射されているか否か」および「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されているか否か」のうちの少なくとも一方を判定する異常判定手段であって、
前記第１補正量および前記第２補正量のうちの少なくとも一方が所定の閾値よりも大きいときに「前記燃料が正常に噴射されていない」と判定し、前記第３補正量および前記第４補正量のうちの少なくとも一方が所定の閾値よりも大きいときに「前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていない」と判定する、
ように構成され得る。
【００７７】
以下、便宜上、「前記燃料が正常に噴射されていない」ことを「燃料噴射量が異常である」とも称呼する。さらに、以下、便宜上、「吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていない」ことを「吸気酸素濃度関連パラメータが異常である」とも称呼する。
【００７８】
上述したように、上記第１の態様、上記第３の態様および上記第４の態様における補正手段は、燃料噴射量ずれおよび吸気酸素濃度関連パラメータずれのうちの少なくとも一方が生じた場合、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を所定の補正量だけ補正するようになっている。
【００７９】
さらに、上記「第５の態様」における異常判定手段は、これら補正量の大きさに基づき、燃料噴射量が異常であるか否か、および、吸気酸素濃度関連パラメータが異常であるか否か、を判定するようになっている。これにより、例えば、本発明の内燃機関の制御装置は、燃料噴射量が異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。さらに、例えば、本発明の内燃機関の制御装置は、吸気酸素濃度関連パラメータが異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。
【００８０】
第１補正量および第２補正量に係る上記「所定の閾値」は、第１補正量および第２補正量の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。さらに、第３補正量および第４補正量に係る上記「所定の閾値」は、第３補正量および第４補正量の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。
【００８１】
本発明の内燃機関の制御装置の第６の態様において、
前記異常判定手段は、
前記燃料噴射量の目標値が補正される毎に前記第１補正量を「積算」し、
前記燃料噴射量の目標値が補正される毎に前記第２補正量を「積算」し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第３補正量を「積算」し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が補正される毎に前記第４補正量を「積算」すると共に、
「前記積算された第１補正量の値」および「前記積算された第２補正量の値」のうちの少なくとも一方が所定の閾値よりも大きいときに前記燃料が正常に噴射されていないと判定し、「前記積算された第３補正量の値」および「前記積算された第４補正量の値」のうちの少なくとも一方が所定の閾値よりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する、
ように構成され得る。
【００８２】
上述したように、上記「第４の態様」における補正手段は、燃料噴射量の目標値および吸気酸素濃度関連パラメータの測定値、推定値または目標値を補正することを繰り返すようになっている。
【００８３】
そこで、上記「第６の態様」における異常判定手段は、上記補正が行われる毎にその補正に用いられる補正量を積算すると共に、その積算された補正量の値に基づいて燃料噴射量が異常であるか否か、および、吸気酸素濃度関連パラメータが異常であるか否か、を判定するようになっている。これにより、上記同様、例えば、本発明の内燃機関の制御装置は、燃料噴射量が異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。さらに、例えば、本発明の内燃機関の制御装置は、吸気酸素濃度関連パラメータが異常であると判定されたときにその旨を内燃機関の操作者に対して通知し得る。
【００８４】
積算された第１補正量の値および積算された第２補正量の値に係る上記「所定の閾値」は、積算された第１補正量の値および積算された第２補正量の値の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。さらに、積算された第３補正量の値および積算された第４補正量の値に係る上記「所定の閾値」は、積算された第３補正量の値および積算された第４補正量の値の少なくとも一方がその閾値よりも大きいときのエミッション排出量が内燃機関のエミッション排出量を出来る限り低減する観点において許容することができない量となる適値として定められ得る。
【００８５】
本発明の内燃機関の制御装置の第７の態様において、
前記状態判定手段は、「前記第１の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量、のうちの少なくとも一方、を採用するように構成され得る。
【００８６】
上述したように、「第１の値」は、燃料噴射量の目標値に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値（すなわち、燃料噴射量の目標値）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【００８７】
一方、上述したように、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第１の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第１の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
【００８８】
さらに、第７の態様における前記状態判定手段は、「前記第２の値」として、
「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、
および、
「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でない」ときに「前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度、のうちの少なくとも一方、を採用するように構成され得る。
【００８９】
上述したように、「第２の値」は、吸気酸素濃度に対応する値である。「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値（すなわち、吸気酸素濃度）として採用されている場合、吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であれば、燃料噴射量ずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、燃料噴射量ずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「吸気酸素濃度関連パラメータずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【００９０】
一方、上述したように、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される値が第２の値として採用されている場合、燃料噴射量ずれがゼロまたは前記所定の範囲内の値であれば、吸気酸素濃度関連パラメータずれの大きさにかかわらずＮＯｘ濃度ずれはゼロまたはゼロを含む所定の範囲内の値となる。すなわち、この場合、吸気酸素濃度関連パラメータずれはＮＯｘ濃度ずれに影響を与えない。換言すると、この場合、「燃料噴射量ずれのみ」がＮＯｘ濃度ずれに影響を与える。よって、状態判定手段は、この場合におけるＮＯｘ濃度ずれ（すなわち、上記第２の判定指標）を用いることにより、さらに適切に燃料噴射量ずれの状態を判定することができる。
【００９１】
なお、上述したように、ＮＯｘ濃度ずれに係る上記「所定の範囲」は、内燃機関のエミッション排出量を出来る限り低減する観点においてＮＯｘ濃度ずれがゼロであるとみなし得る範囲であればよく、特に制限されない。
【００９２】
本発明の内燃機関の制御装置の第８の態様として、
前記吸気酸素濃度関連パラメータ取得手段は、
前記内燃機関に吸入される空気の量である「吸入空気量」を前記吸気酸素濃度関連パラメータのうちの１つとして採用する、
ように構成され得る。
【００９３】
上記吸入空気量は、吸気酸素濃度に関連する代表的なパラメータの１つである。なお、吸気酸素濃度関連パラメータとして「吸入空気量」が採用されるとき、吸気酸素濃度関連パラメータ取得手段は「吸入空気量の測定値または推定値」を取得するように構成され得る。
【００９４】
この「吸入空気量の測定値または推定値」を取得する方法は、特に制限されない。吸入空気量の測定値または推定値を取得する方法として、例えば、吸気通路の所定位置に吸入空気量測定装置（例えば、熱線式エアフローメータおよびフラップ式エアフローメータなど）を設けると共に、その吸入空気量測定装置の出力値に基づいて吸入空気量の「測定値」を取得する方法が、採用され得る。さらに、例えば、機関回転速度、吸気通路内のガスの圧力、機関回転速度、および、スロットル弁の開度などの運転パラメータのうちの一または複数の運転パラメータに基づいて吸入空気量の「推定値」を取得する方法が、この方法として採用され得る。
【００９５】
本発明の内燃機関の制御装置の第９の態様において、
制御装置は、前記ＮＯｘ参照濃度を、
前記燃料噴射量と、前記吸気酸素濃度と、に基づいて前記ＮＯｘ濃度を推定する「ＮＯｘ濃度推定モデル」を利用して定める、
ように構成され得る。
【００９６】
上述したように、発明者による種々の考察および種々の実験などによれば、ＮＯｘ濃度と燃料噴射量と吸気酸素濃度との間に強い相関があることが確認されている。したがって、この相関に基づき、上記ＮＯｘ濃度推定モデルが定められ得る。さらに、上述したように、ＮＯｘ参照濃度は、燃料噴射量および吸気酸素濃度関連パラメータが正常であるときに取得されるＮＯｘ濃度に相当する。そこで、上記「第９の態様」におけるＮＯｘ参照濃度は、上記ＮＯｘ濃度推定モデルを利用して定められるようになっている。これにより、例えば「実験などによってあらかじめ取得した所定の運転パラメータとＮＯｘ濃度との関係」を利用してＮＯｘ参照濃度を取得することに比べ、より簡便にＮＯｘ参照濃度を取得することができる。
【００９７】
本発明の内燃機関の制御装置の第１０の態様において、
制御装置は、前記「第１の値」および前記「第２の値」を前記ＮＯｘ濃度推定モデルに基づいて定める、ように構成され得る。
【００９８】
上述したように、本発明の内燃機関の制御装置（第１の内燃機関の制御装置および第２の内燃機関の制御装置の双方）は、「燃料噴射量の目標値が第１の値であるときのＮＯｘ濃度ずれ」および「吸気酸素濃度が第２の値であるときのＮＯｘ濃度ずれ」のうちの少なくとも一方を利用し、燃料噴射量ずれの状態および吸気酸素濃度関連パラメータずれの状態のうちの少なくとも一方を判定するようになっている。この第１の値および第２の値は、この判定を行うために出来る限り適切な値であることが望ましい。
【００９９】
上記ＮＯｘ濃度推定モデルは、上述したように、燃料噴射量と吸気酸素濃度とＮＯｘ濃度との関係を表すモデルである。そこで、このＮＯｘ濃度推定モデルを利用することにより、「上記判定を行うために出来る限り適切な値である第１の値および第２の値」が容易に定められ得る。
【０１００】
例えば、「上記判定を行うために出来る限り適切な値」として、上記「第７の態様」において採用されている第１の値および第２の値が挙げられる。上述したように、この第１の値は所定の複数の要件が満たされるときの燃料噴射量であり、この第２の値は所定の複数の要件が満たされるときの吸気酸素濃度関連パラメータである。一般に、このように複数の要件が満たされるときの燃料噴射量および吸気酸素濃度関連パラメータを特定することは困難である。しかし、上記ＮＯｘ濃度推定モデルを利用すれば、このような第１の値および第２の値であっても比較的容易に定められ得る。
【図面の簡単な説明】
【０１０１】
図１は、本発明の第１実施形態に係る制御装置が適用される内燃機関の概略図である。
図２は、図１の内燃機関における、燃料噴射量の目標値と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図３は、図１の内燃機関における、燃料噴射量の目標値と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図４は、図１の内燃機関における、燃料噴射量の目標値と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図５は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図６は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図７は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図８は、本発明の第１実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図９は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１０は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１１は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１２は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１３は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１４は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１５は、本発明の第２実施形態に係る制御装置が適用される内燃機関における、吸気酸素濃度と、ＮＯｘ濃度ずれと、燃料噴射量ずれの状態と、吸入空気量ずれの状態と、の関係を示すグラフである。
図１６は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１７は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１８は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図１９は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２０は、本発明の第２実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２１は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２２は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２３は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
図２４は、本発明の第３実施形態に係る制御装置のＣＰＵが実行するルーチンを示したフローチャートである。
【発明を実施するための形態】
【０１０２】
以下、本発明による内燃機関の制御装置の各実施形態について、図面を参照しながら説明する。
【０１０３】
（第１実施形態）
＜装置の概要＞
図１は、本発明の第１の実施形態に係る制御装置（以下、「第１装置」とも称呼する。）を内燃機関１０に適用したシステムの概略構成を示している。内燃機関１０は、第１気筒〜第４気筒の４つの気筒を有する４気筒ディーゼル機関である。以下、便宜上、「内燃機関」を単に「機関」とも称呼する。
【０１０４】
この機関１０は、図１に示すように、燃料噴射（供給）系統を含むエンジン本体２０、エンジン本体２０に空気を導入するための吸気系統３０、エンジン本体２０から排出されるガスを機関１０の外部に放出するための排気系統４０、排ガスを排気系統４０から吸気系統３０に還流させるためのＥＧＲ装置５０、および、排ガスのエネルギによって駆動されてエンジン本体２０に導入される空気を圧縮する過給装置６０、を備えている。
【０１０５】
エンジン本体２０は、吸気系統３０および排気系統４０が連結されたシリンダヘッド２１を有している。このシリンダヘッド２１は、各気筒に対応するように各気筒の上部に設けられた複数の燃料噴射装置２２を有している。各燃料噴射装置２２は、図示しない燃料タンクと接続されており、電気制御装置８０からの指示信号に応じて各気筒の燃焼室内に燃料を噴射するようになっている。
【０１０６】
吸気系統３０は、シリンダヘッド２１に形成された図示しない吸気ポートを介して各気筒に連通されたインテークマニホールド３１、インテークマニホールド３１の上流側の集合部に接続された吸気管３２、吸気管３２内の開口断面積を可変とするスロットル弁（吸気絞り弁）３３、電気制御装置８０からの指示信号に応じてスロットル弁３３を回転駆動するスロットル弁アクチュエータ３３ａ、スロットル弁３３の上流側において吸気管３２に設けられたインタークーラ３４、および、インタークーラ３４の上流側に設けられた過給装置６０よりも上流側の吸気管３２の端部に設けられたエアクリーナ３５、を有している。インテークマニホールド３１および吸気管３２は、吸気通路を構成している。
【０１０７】
排気系統４０は、シリンダヘッド２１に形成された図示しない排気ポートを介して各気筒に連通されたエキゾーストマニホールド４１、エキゾーストマニホールド４１の下流側の集合部に接続された排気管４２、および、排気管４２に設けられた過給装置６０よりも下流側の排気管４２に設けられた排ガス浄化用触媒（ＤＰＮＲ）４３、を有している。エキゾーストマニホールド４１および排気管４２は、排気通路を構成している。
【０１０８】
ＥＧＲ装置５０は、排ガスをエキゾーストマニホールド４１からインテークマニホールド３１へと還流させる通路（ＥＧＲ通路）を構成する排気還流管５１、排気還流管５１に介装されたＥＧＲガス冷却装置（ＥＧＲクーラ）５２、および、排気還流管５１に介装されたＥＧＲ制御弁５３、を有している。ＥＧＲ制御弁５３は、電気制御装置８０からの指示信号に応じて還流される排ガス量（ＥＧＲガス量）を変更し得るようになっている。
【０１０９】
過給装置６０は、コンプレッサ６１およびタービン６２を有している。コンプレッサ６１は吸気通路（吸気管３２）に設けられている。タービン６２は排気通路（排気管４２）に設けられている。コンプレッサ６１とタービン６２とは、図示しないローターシャフトによって同軸回転可能に連結されている。これにより、タービン６２が排ガスによって回転せしめられると、コンプレッサ６１が回転すると共にコンプレッサ６１に供給される空気が圧縮される（過給が行われる）。
【０１１０】
この第１装置は、吸入空気量センサ７１、吸気温度センサ７２、吸気圧センサ７３、クランクポジションセンサ７４、ＮＯｘ濃度センサ７５、および、アクセル開度センサ７６、を備えている。吸入空気量センサ７１として、例えば、熱線式エアフローメータが採用され得る。
【０１１１】
吸入空気量センサ７１は、吸気通路（吸気管３２）に設けられている。吸入空気量センサ７１は、吸気管３２内を流れると共に機関１０に吸入される空気の質量流量である吸入空気量（すなわち、機関１０に吸入される空気の質量）に応じた信号を出力するようになっている。この信号に基づき、吸入空気量の測定値Gamsrが取得される。
【０１１２】
吸気温度センサ７２は、吸気通路（吸気管３２）に設けられている。吸気温度センサ７２は、吸気管３２内を流れると共に機関１０に吸入される空気の温度である吸気温度に応じた信号を出力するようになっている。この信号に基づき、吸気温度が取得される。
【０１１３】
吸気圧センサ７３は、スロットル弁３３の下流側において吸気管３２に設けられている。吸気圧センサ７３は、それが設けられている部位における吸気管３２内の空気の圧力（すなわち、機関１０の燃焼室に供給される空気の圧力。換言すると、過給装置６０によってもたらされる過給圧）を表す信号を出力するようになっている。この信号に基づき、過給圧の測定値（以下、単に「過給圧Pim」とも称呼する。）が取得される。
【０１１４】
クランクポジションセンサ７４は、図示しないクランクシャフトの近傍に設けられている。クランクポジションセンサ７４は、クランクシャフトが１０°回転する毎に幅の狭いパルスを有する信号を出力すると共に、クランクシャフトが３６０°回転する毎に幅の広いパルスを有する信号を出力するようになっている。これら信号に基づき、クランクシャフトの単位時間あたりの回転数の測定値（以下、単に「機関回転速度NE」とも称呼される。）が取得される。
【０１１５】
ＮＯｘ濃度センサ７５は、排ガス浄化用触媒（ＤＰＮＲ）４３よりも上流側において排気通路（排気管４２）に設けられている。ＮＯｘ濃度センサ７５は、排気管４２を通過する排ガスのＮＯｘ濃度（質量濃度）に応じた信号を出力するようになっている。この信号に基づき、排ガスのＮＯｘ濃度の測定値NOxmsrが取得される。
【０１１６】
アクセル開度センサ７６は、機関１０の操作者によって操作されるアクセルペダルＡＰに設けられている。アクセル開度センサ７５は、このアクセルペダルＡＰの開度に応じた信号を出力するようになっている。この信号に基づき、アクセルペダル開度の測定値（以下、単に「アクセルペダル開度Accp」とも称呼する。）が取得される。
【０１１７】
電気制御装置８０は、ＣＰＵ８１、ＣＰＵ８１が実行するプログラム、テーブル（マップ）および定数などをあらかじめ記憶したＲＯＭ８２、ＣＰＵ８１が必要に応じて一時的にデータを格納するＲＡＭ８３、電源が投入された状態でデータを格納すると共に格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ８４、ならびに、ＡＤコンバータを含むインターフェース８５、などを有する。ＣＰＵ８１、ＲＯＭ８２、ＲＡＭ８３、ＲＡＭ８４およびインターフェース８５は、互いにバスで接続されている。
【０１１８】
インターフェース８５は、上記各センサなどと接続され、ＣＰＵ８１に上記各センサなどから出力される信号を供給するようになっている。さらに、インターフェース８５は、ＣＰＵ８１の指示に応じて、燃料噴射装置２２、スロットル弁アクチュエータ３３ａ、および、ＥＧＲ制御弁５３などに駆動信号（指示信号）を送出するようになっている。
【０１１９】
＜装置の作動の概要＞
以下、上述したように構成された第１装置の作動の概要について説明する。
【０１２０】
まず、第１装置は、上記各センサから出力される信号に基づき、所定の運転パラメータ（吸入空気量の測定値Gamsr、過給圧Pim、機関回転速度NE、および、排ガスのＮＯｘ濃度の測定値NOxmsr）を取得する。さらに、第１装置は、所定の運転パラメータに基づいて定まるＥＧＲ率の目標値Regrtgtと、その実際値Regractと、が一致するように、スロットル弁３３およびＥＧＲ制御弁５３を制御する。加えて、第１装置は、所定の運転パラメータに基づき、「燃料噴射量の目標値Qtgt」を決定する。
【０１２１】
次いで、第１装置は、吸入空気量の測定値Gamsr、ＥＧＲ率の目標値Regrtgtおよび燃料噴射量の目標値Qtgtに基づき、気筒内に吸入されるガスの酸素濃度である吸気酸素濃度Oconを取得（算出）する。
【０１２２】
一方、第１装置は、あらかじめ実験などによって「機関１０と同一の構成を備える機関であって、燃料噴射量の目標値Qtgtとその実際値Qactとが一致しており且つ吸入空気量の測定値Gamsrとその実際値Gaactとが一致していることが確認されている機関における、燃料噴射量の目標値Qtgtと吸気酸素濃度OconとＮＯｘ濃度との関係MapNOxref（Qtgt，Ocon）」を取得している。第１装置は、この関係MapNOxref（Qtgt，Ocon）に実際の燃料噴射量の目標値Qtgtおよび吸気酸素濃度Oconを適用することにより、ＮＯｘ参照濃度NOxrefを取得する。
【０１２３】
以下、便宜上、「燃料噴射量の目標値Qtgtとその実際値Qactとが一致しており且つ吸入空気量の測定値Gamsrとその実際値Gaactとが一致している」ことを、「燃料噴射量および吸入空気量が正常である」とも称呼する。
【０１２４】
そして、第１装置は、「ＮＯｘ濃度の測定値NOxmsrからＮＯｘ参照濃度NOxrefを減算して得られる値（NOxmsr−NOxref）」を「ＮＯｘ参照濃度NOxref」によって除算して得られる値（すなわち、ＮＯｘ参照濃度NOxrefに対する上記減算して得られる値NOxmsr−NOxrefの割合）を、「ＮＯｘ濃度ずれΔNOx」として取得する。
【０１２５】
第１装置は、機関１０が運転されている期間中、燃料噴射量の目標値Qtgtと、ＮＯｘ濃度ずれΔNOxと、を対応させながら取得し続ける。そして、第１装置は、取得されたこれら値に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。以下、便宜上、「燃料噴射量ずれの状態および吸入空気量ずれの状態の判定」を、単に「状態判定」とも称呼する。
【０１２６】
第１装置において、燃料噴射量ずれとは、燃料噴射量の目標値Qtgtに対する燃料噴射量の実際値Gaactの差を意味する。具体的には、「燃料噴射量の実際値Qactから燃料噴射量の目標値Qtgtを減算して得られる値（Qact−Qtgt）」を「燃料噴射量の目標値Qtgt」によって除算して得られる値（すなわち、燃料噴射量の目標値Qtgtに対する上記減算して得られる値Qact−Qtgtの割合）が、「燃料噴射量ずれ」として取り扱われる。
【０１２７】
さらに、第１装置において、吸入空気量ずれとは、吸入空気量の実際値Gaactに対する吸入空気量の測定値Gamsrの差を意味する。具体的には、「吸入空気量の測定値Gamsrから吸入空気量の実際値Gaactを減算して得られる値（Gamsr−Gaact）」を「吸入空気量の実際値Gaact」によって除算して得られる値（すなわち、吸入空気量の実際値Gaactに対する上記減算して得られる値Gamsr−Gaactの割合）が、「吸入空気量ずれ」として取り扱われる。
【０１２８】
第１装置は、上記状態判定の結果に応じて、燃料噴射量ずれの大きさが小さくなるように燃料噴射量の目標値Qtgtを所定の補正量だけ補正する。さらに、第１装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさが小さくなるように吸入空気量の測定値Gamsrを所定の補正量だけ補正する。加えて、第１装置は、これら補正を、燃料噴射量ずれがゼロとなり且つ吸入空気量ずれがゼロとなるまで繰り返す。
【０１２９】
第１装置は、燃料噴射量の目標値Qtgtの補正量の積算値が所定の閾値よりも大きくなると、「燃料噴射装置２２が異常である」ことを表示装置など（図１において図示省略。）に表示する。さらに、第１装置は、吸入空気量の測定値Gamsrの補正量の積算値が所定の閾値よりも大きくなると、「吸入空気量センサ７１が異常である」ことを上記表示装置などに表示する。以上が第１装置の作動の概要である。
【０１３０】
＜内燃機関の制御方法＞
次いで、第１装置の具体的な作動についての説明を行う前に、第１装置に採用されている機関１０の制御方法につき、下記説明１−１〜１−４の順序に従って説明する。
（説明１−１）ＮＯｘ濃度推定モデルについての説明
（説明１−２）吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由についての説明
（説明１−３）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
（説明１−４）状態判定の結果に応じた補正についての説明
【０１３１】
（説明１−１）ＮＯｘ濃度推定モデルについての説明
まず、周知のように、排気再循環（ＥＧＲ）が行われる内燃機関における吸気酸素濃度Oconは、下記（１）式に示すように近似される。下記（１）式において、数値２３．２は標準状態における空気の酸素濃度（質量パーセント濃度）を、RegrはＥＧＲ率を、λは空気過剰率を、表す。なお、周知のように、標準状態とは、温度がゼロ℃（２７３．１５Ｋ）であり且つ圧力が１ｂａｒ（１０５Ｐａ）である状態を意味する。
【０１３２】
Ocon＝23.2（1−Regr／λ）    ・・・（１）
【０１３３】
上記（１）式において、空気過剰率λは下記（２）式に示すように定義される。下記（２）式において、abyfactは実際の空燃比を、abyfstoichは理論空燃比（≒１４．７）を、表す。
【０１３４】
λ＝abyfact／abyfstoich    ・・・（２）
【０１３５】
上記（２）式において、実際の空燃比abyfactは下記（３）式に示すように定義される。下記（３）式において、Gaは吸入空気量を、Qは燃料噴射量を、表す。
【０１３６】
abyfact＝Ga／Q    ・・・（３）
【０１３７】
なお、周知のように、ＥＧＲ率Regrは、下記（４）式に示すように定義される。下記（４）式において、Gcylは内燃機関の運転状態（機関回転速度および過給圧など）に応じて定まる気筒内に吸入されるガスの総量を、Gaは上述したように吸入空気量を、表す。
【０１３８】
Regr＝（Gcyl−Ga）／Gcyl    ・・・（４）
【０１３９】
このように、内燃機関における吸気酸素濃度Oconは、吸気酸素濃度に関連するパラメータ（すなわち、ＥＧＲ率Regr、吸入空気量Ga、および、燃料噴射量Q）に基づいて定まる。
【０１４０】
次いで、周知の燃焼モデル（サーマルＮＯｘ生成機構）の１つである拡大ゼルドヴィッチ機構によれば、燃焼過程において生成される窒素酸化物の濃度は、燃焼に供されるガスの窒素濃度および酸素濃度、ならびに、燃焼時の火炎温度の影響を受ける。発明者は、この拡大ゼルドヴィッチ機構をさらに詳細に検討した。具体的に述べると、この拡大ゼルドヴィッチ機構を内燃機関に適用する場合、燃焼過程における上記ガスの窒素濃度の変化量は非常に小さいので、このガスの窒素濃度は燃焼過程において実質的に変化しない（すなわち、所定の固定値とみなす）と仮定し得る。さらに、この場合、上記ガスの酸素濃度は、内燃機関の吸気酸素濃度Oconを所定の回数だけ累乗して得られる値に相当すると仮定し得る。加えて、この場合、上記燃焼時の火炎温度は、吸気酸素濃度Oconおよび燃料噴射量Qに比例すると仮定し得る。
【０１４１】
なお、燃料に含まれる窒素分（窒素化合物）に起因して生成されるフューエルＮＯｘの量、および、燃料に含まれる炭素分および水素分と空気に含まれる窒素とが反応して生成される中間体（シアン化水素など）に起因して生成されるプロンプトＮＯｘの量は、上記窒素酸化物（サーマルＮＯｘ）の量に対して小さいので、実質的にゼロであると仮定し得る。
【０１４２】
発明者は、これら仮定に基づいて種々の考察および種々の実験などを行った。それら考察および実験などによれば、内燃機関の排ガスのＮＯｘ濃度NOxconは下記（５）式にて表しめられることが確認された。下記（５）式において、eは自然対数の底（ネイピア数）を、Oconは上記（１）式にて示される吸気酸素濃度を、Qは上述したように燃料噴射量を、指数A、BおよびCのそれぞれは内燃機関の構造などに応じて定まる固定値を、表す。なお、指数A、BおよびCは、個別の内燃機関ごとに定まる固有の値であって、実験などによって定められ得る値である。
【０１４３】
NOxcon＝e^A×Ocon^B×Q^C    ・・・（５）
【０１４４】
このように、内燃機関の排ガスのＮＯｘ濃度NOxconと、吸気酸素濃度Oconと、燃料噴射量Qと、の間に強い相関があることが確認された。換言すると、内燃機関の排ガスのＮＯｘ濃度NOxconは吸気酸素濃度Oconおよび燃料噴射量Qに基づいて定まることが確認された。
【０１４５】
さらに、発明者によるさらなる考察および実験などによれば、一般的な内燃機関において、「吸気酸素濃度OconとＮＯｘ濃度NOxconとの相関の程度を表す指数B」と「燃料噴射量QとＮＯｘ濃度NOxconとの相関の程度を表す指数C」とは異なることが確認された。換言すると、吸気酸素濃度OconがＮＯｘ濃度NOxconに与える影響は燃料噴射量QがＮＯｘ濃度NOxconに与える影響とは異なることが確認された。上記（５）式は、「ＮＯｘ濃度推定モデル」として第１装置に採用される。
【０１４６】
（説明１−２）吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由についての説明
上述したように、第１装置は、「燃料噴射量および吸入空気量が正常である」ことが確認されている機関の排ガスのＮＯｘ濃度を、ＮＯｘ参照濃度NOxrefとして取得している。よって、機関１０に吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じると、ＮＯｘ濃度センサ７５によって測定されるＮＯｘ濃度NOxconはこのＮＯｘ参照濃度NOxrefと一致しない。すなわち、「ＮＯｘ濃度ずれΔNOx」が生じる。
【０１４７】
より具体的に述べると、上記ＮＯｘ濃度推定モデルに示すように、ＮＯｘ濃度NOxconは、吸気酸素濃度Oconおよび燃料噴射量Qの影響を受ける（上記（５）式を参照。）。さらに、この吸気酸素濃度Oconは、ＥＧＲ率Regr、吸入空気量Gaおよび燃料噴射量Qの影響を受ける（上記（１）式〜上記（４）式を参照。）。加えて、ＥＧＲ率Regrは、吸入空気量Gaの影響を受ける（上記（４）式を参照。）。
【０１４８】
「吸入空気量ずれ」が生じた場合、吸入空気量の測定値Gamsrは実際値Gaactと一致しない。そのため、見掛け上のＥＧＲ率（すなわち、上記（４）式にて算出されるＥＧＲ率の計算値）Regrappが目標値Regrtgtと一致しても、ＥＧＲ率の実際値Regractは目標値Regrtgtと一致しない。このように、この場合、吸入空気量の測定値Gamsrが実際値Gaactと一致せず且つＥＧＲ率の実際値RegractがＥＧＲ率の目標値Regrtgtと一致しないので、見掛け上の吸気酸素濃度（すなわち、上記（１）式にて算出される吸気酸素濃度の計算値）Oconappは吸気酸素濃度の実際値Oconactと一致しない。
【０１４９】
これらの結果、「吸気酸素濃度の実際値Oconact」および「燃料噴射量の実際値Qact」に基づいて定まる実際のＮＯｘ濃度（ＮＯｘ濃度センサ７５によって測定されるＮＯｘ濃度）NOxconは、「見掛け上の吸気酸素濃度Oconapp」および「燃料噴射量の目標値Qtgt」を上記関係MapNOxref（Qtgt，Ocon）に適用することによって定まるＮＯｘ参照濃度NOxrefと、一致しない。すなわち、ＮＯｘ濃度ずれΔNOxが生じる。
【０１５０】
一方、「燃料噴射量ずれ」が生じた場合、燃料噴射量の実際値Qactは目標値Qtgtと一致しない。この場合、ＥＧＲ率と燃料噴射量とは直接的には関連しないので（上記（４）式を参照。）、ＥＧＲ率の実際値Regractは目標値Regrtgtと一致する。ところが、この場合、燃料噴射量の実際値Qactが目標値Qtgtと一致しないので、見掛け上の吸気酸素濃度Oconappは吸気酸素濃度の実際値Oconactと一致しない。
【０１５１】
この結果、「吸気酸素濃度の実際値Oconact」および「燃料噴射量の実際値Qact」に基づいて定まる実際のＮＯｘ濃度NOxconは、「見掛け上の吸気酸素濃度Oconapp」および「燃料噴射量の目標値Qtgt」を上記関係MapNOxref（Qtgt，Ocon）に適用することによって定まるＮＯｘ参照濃度NOxrefと、一致しない。すなわち、ＮＯｘ濃度ずれΔNOxが生じる。
【０１５２】
以上が、吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由である。
【０１５３】
（説明１−３）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
上述したように、吸入空気量ずれおよび燃料噴射量ずれの双方がＮＯｘ濃度ずれに影響を与える。第１装置は、この影響に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態のうちの少なくとも一方を判定する。以下、上記ＮＯｘ濃度推定モデルを用いて、下記条件１−Ａ〜１−Ｄのうちの「一または複数」が成立する場合における「燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとの関係」について説明する。
（条件１−Ａ）吸入空気量の実際値Gaactが測定値Gamsrよりも小さい。
（条件１−Ｂ）吸入空気量の実際値Gaactが測定値Gamsrよりも大きい。
（条件１−Ｃ）燃料噴射量の実際値Qactが目標値Qtgtよりも小さい。
（条件１−Ｄ）燃料噴射量の実際値Qactが目標値Qtgtよりも大きい。
【０１５４】
以下、条件１−Ａに示す状態を「吸入空気量ずれが負である」と、条件１−Ｂに示す状態を「吸入空気量ずれが正である」と、条件１−Ｃに示す状態を「燃料噴射量ずれが負である」と、条件１−Ｄに示す状態を「燃料噴射量ずれが正である」と、称呼する。さらに、以下、便宜上、燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとの関係を「第１の関係R1（Qtgt，ΔNOx）」と称呼する。
【０１５５】
さらに、この説明１−３において、吸入空気量および燃料噴射量「以外」のＮＯｘ濃度に影響を与え得る運転パラメータ（例えば、気筒内に吸入されるガスの総量Gcylに影響を与える機関回転速度NEおよび過給圧Pim、ＥＧＲ率の目標値Regrtgt、ならびに、気筒内に燃料を噴射する時期である燃料噴射時期など）は、所定の値に固定されていると仮定する。すなわち、吸入空気量ずれおよび燃料噴射量ずれ「のみ」がＮＯｘ濃度ずれΔNOxに影響を与えると仮定する。
【０１５６】
まず、上記条件１−Ａ〜１−Ｄのうちの「１つ」が成立する場合における第１の関係R1（Qtgt，ΔNOx）について説明する。
【０１５７】
図２（Ａ）は、条件１−Ａ〜条件１−Ｄのうちの１つが成立する場合における第１の関係R1（Qtgt，ΔNOx）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。ＮＯｘ濃度推定モデルにおける指数A、BおよびC（上記（５）式を参照。）は、「機関１０と同一の構成を有する機関であって、燃料噴射量の目標値Qtgtと実際値Qactとが一致しており且つ吸入空気量の測定値NOxmsrと実際値Gaactとが一致していることが確認されている機関」を用いた実験によって定められた。
【０１５８】
図２（Ａ）において、Gamsr（−）は、条件１−Ａが成立する場合（吸入空気量ずれが負である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。Gamsr（＋）は、条件１−Ｂが成立する場合（吸入空気量ずれが正である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。Qact（−）は、条件１−Ｃが成立する場合における（燃料噴射量ずれが負である場合）の第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。Qact（＋）は、条件１−Ｄが成立する場合（燃料噴射量ずれが正である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。
【０１５９】
まず、「条件１−Ａのみ」が成立する場合、曲線Gamsr（−）に示すように、少なくとも燃料噴射量の目標値Qtgtが所定値Aから所定値Bである範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０１６０】
さらに、「条件１−Ｂのみ」が成立する場合、曲線Gamsr（＋）に示すように、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０１６１】
加えて、「条件１−Ｃのみ」が成立する場合、曲線Qact（−）に示すように、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０１６２】
さらに加えて、「条件１−Ｄのみ」が成立する場合、曲線Qact（＋）に示すように、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０１６３】
このように、条件１−Ａが成立する場合における第１の関係R1（Qtgt，ΔNOx）と、条件１−Ｂが成立する場合における第１の関係R1（Qtgt，ΔNOx）と、条件１−Ｃが成立する場合における第１の関係R1（Qtgt，ΔNOx）と、条件１−Ｄが成立する場合における第１の関係R1（Qtgt，ΔNOx）と、は異なる。
【０１６４】
所定値Aおよび所定値Bのそれぞれは、上述したように条件１−Ａ〜１−Ｄのうちの一の条件が成立した場合に得られる第１の関係R1（Qtgt，ΔNOx）がその一の条件とは異なる他の条件が成立した場合に得られる第１の関係R1（Qtgt，ΔNOx）と異なることとなる適値に設定されればよい。
【０１６５】
以上、条件１−Ａ〜１−Ｄのうちの「１つ」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じた場合）における第１の関係R1（Qtgt，ΔNOx）について説明した。
【０１６６】
次いで、上記条件１−Ａ〜１−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第１の関係R1（Qtgt，ΔNOx）について説明する。
【０１６７】
図２（Ｂ）は、条件１−Ａ〜１−Ｄのうちの複数が成立する場合における第１の関係R1（Qtgt，ΔNOx）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。
【０１６８】
図２（Ｂ）において、Gamsr（−）＋Qact（＋）は、条件１−Ａおよび条件１−Ｄが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが正である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。Gamsr（−）＋Qact（−）は、条件１−Ａおよび条件１−Ｃが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが負である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。Gamsr（＋）＋Qact（＋）は、条件１−Ｂおよび条件１−Ｄが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが正である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。Gamsr（＋）＋Qact（−）は、条件１−Ｂおよび条件１−Ｃが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが負である場合）における第１の関係R1（Qtgt，ΔNOx）を示す曲線を表す。
【０１６９】
なお、条件１−Ａ（吸入空気量ずれが負である状態）と、条件１−Ｂ（吸入空気量ずれが正である状態）と、は同時に成立し得ない。さらに、条件１−Ｃ（燃料噴射量ずれが負である状態）と、条件１−Ｄ（燃料噴射量ずれが正である状態）と、は同時に成立し得ない。よって、図２（Ｂ）に示す４つの組み合わせが、成立し得る組み合わせの全てである。
【０１７０】
まず、「条件１−Ａおよび条件１−Ｄ」が成立する場合、曲線Gamsr（−）＋Qact（＋）に示すように、少なくとも燃料噴射量の目標値Qtgtが所定値Aから所定値Bである範囲内（A≦Qtgt≦B）において燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０１７１】
さらに、「条件１−Ａおよび条件１−Ｃ」が成立する場合、曲線Gamsr（−）＋Qact（−）に示すように、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０１７２】
加えて、「条件１−Ｂおよび条件１−Ｄ」が成立する場合、曲線Gamsr（＋）＋Qact（＋）に示すように、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０１７３】
さらに加えて、「条件１−Ｂおよび条件１−Ｃ」が成立する場合、曲線Gamsr（＋）＋Qact（−）に示すように、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０１７４】
このように、条件１−Ａおよび条件１−Ｄが成立する場合の第１の関係R1（Qtgt，ΔNOx）と、条件１−Ａおよび条件１−Ｃが成立する場合の第１の関係R1（Qtgt，ΔNOx）とは、上記範囲内におけるＮＯｘ濃度ずれΔNOxの大きさが異なることを除いて同一である。さらに、条件１−Ｂおよび条件１−Ｄが成立する場合の第１の関係R1（Qtgt，ΔNOx）と、条件１−Ｂおよび条件１−Ｃが成立する場合の第１の関係R1（Qtgt，ΔNOx）とは、上記範囲内におけるＮＯｘ濃度ずれΔNOxの大きさが異なることを除いて同一である。加えて、条件１−Ａおよび条件１−Ｄ、あるいは、条件１−Ａおよび条件１−Ｃが成立する場合の第１の関係R1（Qtgt，ΔNOx）は、条件１−Ｂおよび条件１−Ｄ、あるいは、条件１−Ｂおよび条件１−Ｃが成立する場合の第１の関係R1（Qtgt，ΔNOx）と、異なる。
【０１７５】
以上、条件１−Ａ〜１−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第１の関係R1（Qtgt，ΔNOx）について説明した。
【０１７６】
なお、「条件１−Ａ〜１−Ｄのいずれも成立しない」場合（すなわち、吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合）、実際のＮＯｘ濃度NOxconはＮＯｘ濃度NOxconと一致する。よって、この場合、ＮＯｘ濃度ずれΔNOxは、燃料噴射量の目標値Qtgtにかかわらずゼロである。すなわち、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」であり、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「ゼロ」である。
【０１７７】
ところで、機関１０を構成する部材のうち「吸入空気量および燃料噴射量と関連しない部材」が正常に作動しない場合においても、ＮＯｘ濃度ずれは生じ得る。例えば、ＮＯｘ濃度センサ７５が正常に作動しなし場合（実際のＮＯｘ濃度とは異なるＮＯｘ濃度を表す出力値を出力する場合）、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロであっても、ＮＯｘ濃度ずれが生じる。以下、このような状態を「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と称呼する。
【０１７８】
この場合、図３の曲線Other（＋）または曲線Other（−）に示すように、燃料噴射量の目標値QtgtにかかわらずＮＯｘ濃度ずれΔNOxの大きさは変化しない。すなわち、少なくとも上記範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」である。さらに、この場合、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxは「正」または「負」である。
【０１７９】
このように、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件１−Ａおよび条件１−Ｂを参照。）、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件１−Ｃおよび条件１−Ｄを参照。）、により、第１の関係R1（Qtgt，ΔNOx）は異なる。換言すると、第１の関係R1（Qtgt，ΔNOx）に基づき、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、を判定することができる。さらに、第１の関係R1（Qtgt，ΔNOx）に基づき、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれ」が生じているか否か、を判定することができる。
【０１８０】
具体的に述べると、第１の関係R1（Qtgt，ΔNOx）が「所定範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「正」であり、かつ、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxが「正」である関係」である場合、その関係は、図２（Ａ）の曲線Gamsr（−）、ならびに、図２（Ｂ）の曲線Gamsr（−）＋Qact（＋）および曲線Gamsr（−）＋Qact（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが負である」と判定することができる。
【０１８１】
さらに、第１の関係R1（Qtgt，ΔNOx）が「所定範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「負」であり、かつ、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxが「負」である関係」である場合、その関係は、図２（Ａ）の曲線Gamsr（＋）、ならびに、図２（Ｂ）の曲線Gamsr（＋）＋Qact（＋）および曲線Gamsr（＋）＋Qact（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが正である」と判定することができる。
【０１８２】
加えて、第１の関係R1（Qtgt，ΔNOx）が「所定範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「負」であり、かつ、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxが「正」である関係」である場合、その関係は、図２（Ａ）の曲線Qact（＋）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが正である」と判定することができる。
【０１８３】
さらに加えて、第１の関係R1（Qtgt，ΔNOx）が「所定範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「正」であり、かつ、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxが「負」である関係」である場合、その関係は、図２（Ａ）の曲線Qact（−）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが負である」と判定することができる。
【０１８４】
なお、第１の関係R1（Qtgt，ΔNOx）が「所定範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「ゼロ」であり、かつ、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxが「ゼロ」である関係」である場合、「吸入空気量ずれがゼロであり、かつ、燃料噴射量ずれがゼロである」と判定することができる。
【０１８５】
さらに、第１の関係R1（Qtgt，ΔNOx）が「所定範囲内（A≦Qtgt≦B）において、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「ゼロ」であり、かつ、燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOxが「正」または「負」である関係」である場合、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定することができる。
【０１８６】
このように、第１装置は、第１の関係R1（Qtgt，ΔNOx）に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。以下、上述した燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する方法を、「第１状態判定方法」とも称呼する。
【０１８７】
（説明１−４）状態判定の結果に応じた補正についての説明
第１装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさを低減するように吸入空気量の測定値Gamsrを補正し、燃料噴射量ずれの大きさを低減するように燃料噴射量の目標値Qtgtを補正する。
【０１８８】
具体的に述べると、第１装置は、吸入空気量ずれが「正」であると判定した場合、吸入空気量の測定値Gamsrを所定の補正量だけ「減少」するように補正する。一方、第１装置は、吸入空気量ずれが「負」であると判定した場合、吸入空気量の測定値Gamsrを所定の補正量だけ「増大」するように補正する。これら補正にて用いられる「補正量」はＮＯｘ濃度ずれΔNOxの大きさに応じて決定される。
【０１８９】
例えば、図４（Ａ）に示すように、燃料噴射量の目標値Qtgtが所定値AであるときのＮＯｘ濃度ずれΔNOx（A）および燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOx（B）の双方が「正」であって、ＮＯｘ濃度ずれΔNOx（A）よりもＮＯｘ濃度ずれΔNOx（B）が大きい場合、第１装置は、上記説明１−３にて述べたように、「少なくとも吸入空気量ずれが負である」と判定する。
【０１９０】
この場合、第１装置は、例えば、ＮＯｘ濃度ずれΔNOx（A）とＮＯｘ濃度ずれΔNOx（B）との平均値に基づいて上記「補正量」を決定する。そして、第１装置は、吸入空気量の測定値Gamsrをこの補正量だけ「増大」するように補正する。具体的に述べると、第１装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、吸入空気量センサ７１の出力値（出力電圧）と吸入空気量の測定値Gamsrとの関係（マップ）を、測定値Gamsrが増大されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
【０１９１】
さらに、第１装置は、燃料噴射量ずれが「正」であると判定した場合、燃料噴射量の目標値Qtgtを所定の補正量だけ「減少」するように補正する。一方、第１装置は、燃料噴射量ずれが「負」であると判定した場合、燃料噴射量の目標値Qtgtを所定の補正量だけ「増大」するように補正する。これら補正において用いられる「補正量」は、ＮＯｘ濃度ずれΔNOxの大きさに応じて決定される。
【０１９２】
例えば、図４（Ｂ）に示すように、燃料噴射量の目標値Qtgtが所定値AであるときのＮＯｘ濃度ずれΔNOx（A）および燃料噴射量の目標値Qtgtが所定値BであるときのＮＯｘ濃度ずれΔNOx（B）の双方が「正」であって、ＮＯｘ濃度ずれΔNOx（A）よりもＮＯｘ濃度ずれΔNOx（B）が小さい場合、第１装置は、上記説明１−３にて述べたように、「燃料噴射量ずれが正である」と判定する。
【０１９３】
この場合、第１装置は、例えば、ＮＯｘ濃度ずれΔNOx（A）とＮＯｘ濃度ずれΔNOx（B）との平均値に基づいて上記「補正量」を決定する。そして、第１装置は、燃料噴射量の目標値Qtgtをこの補正量だけ「減少」するように補正する。具体的に述べると、第１装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、燃料噴射装置２２の燃料噴射時間と燃料噴射量の目標値Qtgtとの関係（マップ）を、目標値Qtgtが減少されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
【０１９４】
このように燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrが補正されることにより、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０１９５】
ところで、上記説明１−３にて述べたように、第１装置は、所定の条件が成立する場合、「少なくとも」吸入空気量ずれが負であると判定する（条件１−Ａが成立する場合、条件１−Ａおよび条件１−Ｃが成立する場合、ならびに、条件１−Ａおよび条件１−Ｄが成立する場合）。この場合、第１装置は、「吸入空気量ずれが負である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが正である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが負である」か、を区別して判定しない。すなわち、吸入空気量ずれ「のみ」が生じているか、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じているか、は判定されない。
【０１９６】
しかし、上記説明１−４にて述べたように、上記いずれの条件が成立する場合であっても、第１装置は「吸入空気量ずれ」を低減するように吸入空気量の測定値Gamsrを補正する。そのため、吸入空気量ずれ「のみ」が生じている場合、この補正によってその吸入空気量ずれが低減される。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、この補正によってその「双方」のうちの吸入空気量ずれが低減される。そして、例えば繰り返しこの補正が行われることによって吸入空気量ずれが十分に低減されれば、それら「双方」のうちの燃料噴射量ずれ「のみ」が残る。燃料噴射量ずれ「のみ」が残れば、第１装置は、燃料噴射量ずれが生じていると判定すると共にその燃料噴射量ずれを低減するように燃料噴射量の目標値Qtgtを補正する。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０１９７】
このように、上記いずれの場合（吸入空気量ずれ「のみ」が生じている場合、および、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合）であっても、第１装置が繰り返し補正を行うことにより、ＮＯｘ濃度ずれΔNOxが低減される。なお、上記説明から理解されるように、第１装置が「少なくとも吸入空気量ずれが「正」である」と判定する場合であっても、上記同様、第１装置が繰り返し補正を行うことによってＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０１９８】
なお、第１装置は、「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」と判定した場合、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrを補正しない。さらに、第１装置は、「燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている」と判定した場合、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrを補正しない。
【０１９９】
以上、説明１−１〜１−４にて述べたように、第１装置は燃料噴射量ずれの状態および吸入空気量ずれの状態を判定すると共に、その判定の結果に応じてＮＯｘ濃度ずれΔNOxの大きさを低減するように機関１０を制御する。
【０２００】
ところで、上述したように、上記ＮＯｘ濃度推定モデルにおける指数A、BおよびCは、ＮＯｘ濃度推定モデルが適用される内燃機関の構成等に応じて定められる。そのため、機関１０と異なる構成を有する他の機関に上記ＮＯｘ濃度推定モデルが適用される場合、他の機関における指数A、BおよびCは、機関１０における指数A、BおよびCと異なる場合がある。この場合、機関１０における第１の関係R1（Qtgt，ΔNOx）と、他の機関における第１の関係R1（Qtgt，ΔNOx）と、は異なる。しかし、上記説明から明らかなように、上記同様の考え方によって他の機関における燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
【０２０１】
＜実際の作動＞
以下、第１装置の実際の作動について説明する。
【０２０２】
第１装置において、ＣＰＵ８１は、図５〜図１１にフローチャートによって示した各ルーチンを所定のタイミング毎に実行するようになっている。ＣＰＵ８１は、これらルーチンにおいて、第１燃料過多噴射フラグXQP1、第１燃料過少噴射フラグXQN1、第１吸入空気量過多検出フラグXGAP1、第１吸入空気量過少検出フラグXGAN1、および、第１他異常発生フラグXOTH1を用いる。
【０２０３】
第１燃料過多噴射フラグXQP1は、その値が「０」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが大きくないこと（すなわち、Qact≦Qtgt）を表す。一方、第１燃料過多噴射フラグXQP1は、その値が「１」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが大きいこと（すなわち、Qact＞Qtgt）を表す。
【０２０４】
第１燃料過少噴射フラグXQN1は、その値が「０」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが小さくないこと（すなわち、Qact≧Qtgt）を表す。一方、第１燃料過少噴射フラグXQN1は、その値が「１」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが小さいこと（すなわち、Qact＜Qtgt）を表す。
【０２０５】
第１吸入空気量過多検出フラグXGAP1は、その値が「０」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが大きくないこと（すなわち、Gamsr≦Gaact）を表す。一方、第１吸入空気量過多検出フラグXGAP1は、その値が「１」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが大きいこと（すなわち、Gamsr＞Gaact）を表す。
【０２０６】
第１吸入空気量過少検出フラグXGAN1は、その値が「０」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが小さくないこと（すなわち、Gamsr≧Gaact）を表す。一方、第１吸入空気量過多検出フラグXGAP1は、その値が「１」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが小さいこと（すなわち、Gamsr＜Gaact）を表す。
【０２０７】
第１他異常発生フラグXOTH1は、その値が「０」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことを表す。一方、第１他異常発生フラグXOTH1は、その値が「１」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていることを表す。
【０２０８】
第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、および、第１他異常発生フラグXOTH1の値は、バックアップＲＡＭ８４に格納される。さらに、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、および、第１吸入空気量過少検出フラグXGAN1の値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２および吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。加えて、第１他異常発生フラグXOTH1の値は、上記工場出荷時およびサービス点検実施時などにおいて、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている原因を解消する処置がなされた際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
【０２０９】
以下、ＣＰＵ８１が実行する各ルーチンについて詳細に説明する。
【０２１０】
まず、現時点における、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、および、第１他異常発生フラグXOTH1の値は、全て「０」に設定されていると仮定する。以下、便宜上、この仮定を「第１初期設定仮定」とも称呼する。
【０２１１】
ＣＰＵ８１は、機関１０が始動されると、任意の気筒のクランク角が圧縮上死点前の所定クランク角度（例えば、圧縮上死点前９０度クランク角）θｆに一致する毎に、図５にフローチャートによって示した「第１燃料噴射制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、燃料噴射量の目標値Qtgtを決定すると共に、その目標値Qtgtだけの燃料を各気筒内に噴射させる。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量の実際値Qactが目標値Qtgtと一致していないと判定された場合にその目標値Qtgtを補正すると共に、補正された目標値Qtgtだけの燃料を各気筒内に噴射させる。以下、便宜上、クランク角が圧縮上死点前の所定クランク角θｆに一致する圧縮行程中の気筒を、「燃料噴射気筒」とも称呼する。
【０２１２】
具体的に述べると、ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じて燃料噴射量の目標値Qtgtを決定する。さらに、ＣＰＵ８１は、燃料噴射量の目標値Qtgtよりも実際値Qactが大きいと判定されている場合、その目標値Qtgtを所定の燃料噴射量補正量Qcだけ減少させる。一方、ＣＰＵ８１は、燃料噴射量の目標値Qtgtよりも実際値Qactが小さいと判定されている場合、その目標値Qtgtを所定の燃料噴射量補正量Qcだけ増大させる。
【０２１３】
ＣＰＵ８１は、図５に示すルーチンにおいて、燃料噴射量補正量Qcの積算値Qcsumを算出する。この積算値Qcsumの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
【０２１４】
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始してステップ５１０に進み、「アクセルペダル開度Accpと、機関回転速度NEと、燃料噴射量の目標値Qtgtと、の関係」をあらかじめ定めた燃料噴射量目標値決定テーブルMapQtgt（Accp，NE）に現時点におけるアクセルペダル開度Accpと機関回転速度NEとを適用することにより、燃料噴射量の目標値Qtgtを決定する。この燃料噴射量目標値決定テーブルMapQtgt（Accp，NE）において、燃料噴射量の目標値Qtgtは、アクセルペダル開度Accpおよび機関回転速度NEに基づいて定まる要求トルクに応じた適値となるように、設計されている。
【０２１５】
次いで、ＣＰＵ８１は、ステップ５２０に進み、現時点における第１燃料過多噴射フラグXQP1の値が「１」であるか否かを判定する。現時点における第１燃料過多噴射フラグXQP1の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ５２０にて「Ｎｏ」と判定してステップ５３０に進む。
【０２１６】
ＣＰＵ８１は、ステップ５３０にて、現時点における第１燃料過少噴射フラグXQN1の値が「１」であるか否かを判定する。現時点における第１燃料過少噴射フラグXQN1の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ５３０にて「Ｎｏ」と判定してステップ５４０に進む。
【０２１７】
ＣＰＵ８１は、ステップ５４０にて、上記目標値Qtgtだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、上記目標値Qtgtの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ５９５に進んで本ルーチンを一旦終了する。
【０２１８】
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図６にフローチャートによって示した「第１吸入空気量取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量の測定値Gamsrを取得する。さらに、ＣＰＵ８１は、このルーチンにより、吸入空気量の実際値Gaactが測定値Gamsrと一致していないと判定された場合、その測定値Gamsrを補正する。
【０２１９】
具体的に述べると、ＣＰＵ８１は、このルーチンにより、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値NOxmsrを取得する。さらに、ＣＰＵ８１は、吸入空気量の測定値NOxmsrよりも実際値Gaactが大きいと判定されている場合、その測定値NOxmsrを所定の吸入空気量補正量Gacだけ減少させる。一方、ＣＰＵ８１は、吸入空気量の測定値NOxmsrよりも実際値Gaactが小さいと判定されている場合、その測定値NOxmsrを所定の吸入空気量補正量Gacだけ増大させる。
【０２２０】
ＣＰＵ８１は、図６に示すルーチンにおいて、吸入空気量補正量Gacの積算値Gacsumを算出する。この積算値Gacsumの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
【０２２１】
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始してステップ６１０に進み、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値Gamsrを取得する。
【０２２２】
次いで、ＣＰＵ８１は、ステップ６２０に進み、現時点における第１吸入空気量過多検出フラグXGAP1の値が「１」であるか否かを判定する。現時点における第１吸入空気量過多検出フラグXGAP1の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ６２０にて「Ｎｏ」と判定してステップ６３０に進む。
【０２２３】
ＣＰＵ８１は、ステップ６３０にて、現時点における第１吸入空気量過少検出フラグXGAN1の値が「１」であるか否かを判定する。現時点における第１吸入空気量過少検出フラグXGAN1の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ６３０にて「Ｎｏ」と判定してステップ６９５に直接進み、本ルーチンを一旦終了する。
【０２２４】
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図７にフローチャートによって示した「ＥＧＲ率制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じてＥＧＲ率の目標値Regrtgtを決定する。さらに、ＣＰＵ８１は、このルーチンにて、ＥＧＲ率の実際値Regractが目標値Regrtgtと一致するようにスロットル弁３３およびＥＧＲ制御弁５３を制御する。
【０２２５】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図７のステップ７００から処理を開始してステップ７１０に進み、「アクセルペダル開度Accpと、機関回転速度NEと、ＥＧＲ率の目標値Regrtgtと、の関係」をあらかじめ定めたＥＧＲ率目標値決定テーブルMapRegrtgt（NE，Accp）に現時点におけるアクセルペダル開度Accpと、機関回転速度NEと、を適用することにより、ＥＧＲ率の目標値Regrtgtを決定する。このＥＧＲ率目標値決定テーブルMapRegrtgt（NE，Accp）において、ＥＧＲ率の目標値Regrtgtは、エミッション排出量を出来る限り低減する観点における適値となるように、設計されている。
【０２２６】
次いで、ＣＰＵ８１は、ステップ７２０に進み、ＥＧＲ率の実際値Regractが上記目標値Regrtgtと一致するように、スロットル弁３３の開度およびＥＧＲ制御弁５３の開度を制御する。その後、ＣＰＵ８１は、ステップ７９５に進んで本ルーチンを一旦終了する。なお、ＥＧＲ率の実際値Regractは、上記（４）式に示すように、機関回転速度NEおよび過給圧Pimなどに応じて定まる各気筒内に吸入されるガスの総量Gcylと、吸入空気量の測定値Gamsrと、に基づいて算出され得る。
【０２２７】
さらに、ＣＰＵ８１は、所定時間が経過する毎に図８および図９に一連のフローチャートによって示した「第１状態判定ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとを対応させながら取得する。さらに、ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、取得された燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとの関係（すなわち、上記第１の関係R1（Qtgt，ΔNOx））に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。
【０２２８】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図８のステップ８００から処理を開始してステップ８０２に進み、現時点にて「ＮＯｘ濃度を取得する条件（ＮＯｘ濃度取得条件）」が成立するか否かを判定する。より具体的に述べると、ＣＰＵ８１は、ステップ８０２にて、以下の条件Ｎ−１−１〜Ｎ−１−５の全てが成立したとき、ＮＯｘ濃度取得条件が成立すると判定する。換言すると、ＣＰＵ８１は、条件Ｎ−１−１〜Ｎ−１−５のうちの少なくとも１つが成立しないとき、ＮＯｘ濃度取得条件が成立しないと判定する。
（条件Ｎ−１−１）ＮＯｘ濃度センサ７５の温度が所定の範囲内の値である。
（条件Ｎ−１−２）ＮＯｘ濃度センサ７５周辺のガスの圧力が所定の範囲内の値である。
（条件Ｎ−１−３）ＮＯｘ濃度センサ７５周辺の酸素濃度が所定の範囲内の値である。
（条件Ｎ−１−４）ＮＯｘ濃度センサ７５の出力値が所定の範囲内の値である。
（条件Ｎ−１−５）機関回転速度NE、過給圧Pim、ＥＧＲ率の目標値Regrtgt、および、燃料噴射時期のそれぞれは、所定の固定値である。
【０２２９】
条件Ｎ−１−１に係る所定の範囲は、ＮＯｘ濃度センサ７５が正常に作動することが可能である温度範囲に対応する。条件Ｎ−１−２に係る所定の範囲は、ＮＯｘ濃度センサ７５がＮＯｘ濃度を適切に測定することが可能である圧力範囲に対応する。条件Ｎ−１−３に係る所定の範囲は、ＮＯｘ濃度センサ７５がＮＯｘ濃度を適切に測定することが可能である酸素濃度範囲に対応する。条件Ｎ−１−４に係る所定の範囲は、ＮＯｘ濃度センサ７５がＮＯｘ濃度を適切に測定することが可能であるＮＯｘ濃度の範囲に対応する。
【０２３０】
条件Ｎ−１−５に挙げられている機関回転速度NE、過給圧Pim、ＥＧＲ率の目標値Qtgtおよび燃料噴射時期は、吸入空気量および燃料噴射量「以外」のＮＯｘ濃度に影響を与え得る運転パラメータである。これらパラメータが所定の固定値であれば、燃料噴射量ずれの状態および吸入空気量ずれの状態がより正確に判定せしめられる。
【０２３１】
ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立していない」とき、ステップ８０２にて「Ｎｏ」と判定し、接続指標Ｂを経由して図９のステップ８９５に直接進んで本ルーチンを一旦終了する。このように、ＮＯｘ濃度取得条件が「成立していない」とき、ＮＯｘ濃度の測定値NOxmsrは取得されない。
【０２３２】
これに対し、ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立している」とき、ステップ８０２にて「Ｙｅｓ」と判定してステップ８０４に進む。ＣＰＵ８１は、ステップ８０４にてＮＯｘ濃度センサ７５の出力値に基づいてＮＯｘ濃度の測定値NOxmsrを取得し、ステップ８０６に進む。
【０２３３】
ＣＰＵ８１は、ステップ８０６にて、「吸入空気量の測定値Gamsrと、燃料噴射量の目標値Qtgtと、空気過剰率λと、の関係」をあらかじめ定めた空気過剰率算出関数Fnλ（Gamsr，Qtgt）に、現時点における吸入空気量の測定値Gamsrおよび燃料噴射量の目標値Qtgtを適用することにより、空気過剰率λを算出する（上記（２）式および上記（３）式を参照。）。
【０２３４】
次いで、ＣＰＵ８１は、ステップ８０８に進み、「ＥＧＲ率の目標値Regrtgtと、空気過剰率λと、吸気酸素濃度Oconと、の関係」をあらかじめ定めた吸気酸素濃度算出関数FnOcon（Regrtgt，λ）に、現時点におけるＥＧＲ率の目標値Regrtgtと、空気過剰率λと、を適用することにより、吸気酸素濃度Oconを算出する（上記（１）式を参照。）。
【０２３５】
次いで、ＣＰＵ８１は、ステップ８１０に進み、「燃料噴射量の目標値Qtgtと実際値Qactとが一致しており且つ吸入空気量の測定値Gamsrと実際値Gaactとが一致していることが確認されている機関における、燃料噴射量の目標値Qtgtと、吸気酸素濃度Oconと、ＮＯｘ濃度と、の関係」をあらかじめ定めたMapNOxref（Qtgt，Ocon）に、現時点における燃料噴射量の目標値Qtgtと、吸気酸素濃度Oconと、を適用して得られる値を、ＮＯｘ参照濃度NOxrefとして取得する。
【０２３６】
次いで、ＣＰＵ８１は、ステップ８１２に進み、下記（６）式にＮＯｘ濃度の測定値NOxmsrとＮＯｘ参照濃度NOxrefとを適用することにより、ＮＯｘ濃度ずれΔNOxを取得する。すなわち、ステップ８１２にて、「ＮＯｘ参照濃度NOxrefに対する、ＮＯｘ濃度の測定値NOxmsrからＮＯｘ参照濃度NOxrefを減算して得られる値の、割合」が、ＮＯｘ濃度ずれΔNOxとして取得される。
【０２３７】
ΔNOx＝（NOxmsr−NOxref）／NOxref    ・・・（６）
【０２３８】
さらに、ＣＰＵ８１は、上述したように取得したＮＯｘ濃度ずれΔNOxを、燃料噴射量の目標値Qtgtと対応させながら（すなわち、ＮＯｘ濃度ずれΔNOxと燃料噴射量の目標値Qtgtとを組み合わせたデータを）、ＲＯＭ８２に格納する。
【０２３９】
次いで、ＣＰＵ８１は、接続指標Ａを経由して図９のステップ８１４に進み、現時点にて「燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する条件（状態判定条件）」が成立しているか否かを判定する。より具体的に述べると、ＣＰＵ８１は、ステップ８１４にて、以下の条件Ｓ−１が成立したとき、状態判定条件が成立すると判定する。換言すると、ＣＰＵ８１は、条件Ｓ−１が成立しないとき、状態判定条件が成立しないと判定する。
（条件Ｓ−１）ＮＯｘ濃度ずれΔNOxと燃料噴射量の目標値Qtgtとを組み合わせたデータであって燃料噴射量の目標値Qtgtが所定の範囲内の値であるデータが、少なくとも２つ取得されている。
【０２４０】
上記「所定の範囲」は、上述した第１状態判定方法における「所定範囲（A≦Qtgt≦B）」に相当する。燃料噴射量の目標値Qtgtがこの所定の範囲内の値であるデータが少なくとも２つ取得されていれば、第１状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
【０２４１】
ＣＰＵ８１は、状態判定条件が「成立している」とき、ステップ８１４にて「Ｙｅｓ」と判定し、ステップ８１６に進む。そして、ＣＰＵ８１は、ステップ８１６〜ステップ８４２に示す処理によって燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。これに対し、ＣＰＵ８１は、状態判定条件が「成立していない」とき、ステップ８１４にて「Ｎｏ」と判定し、ステップ８９５に直接進んで本ルーチンを一旦終了する。このように、状態判定条件が「成立していない」とき、燃料噴射量ずれの状態および吸入空気量ずれの状態は判定されない。
【０２４２】
以下、現時点にて、状態判定条件が「成立している」と仮定すると共に、ステップ８１６〜ステップ８４２にて実行される処理について場合を分けてより詳細に説明する。
【０２４３】
以下の説明においては、条件Ｓ−１に該当するデータとして、燃料噴射量の目標値が「第１の目標値Qtgt1」であるデータ、および、その目標値が「第１の目標値Qtgtよりも大きい第２の目標値Qtgt2」であるデータが採用される。以下、燃料噴射量の目標値が第１の目標値Qtgt1であるときのＮＯｘ濃度ずれを「第１ＮＯｘ濃度ずれΔNOx（Qtgt1）」と、燃料噴射量の目標値が第２の目標値Qtgt2（Qtgt2＞Qtgt1）であるときのＮＯｘ濃度ずれを「第２ＮＯｘ濃度ずれΔNOx（Qtgt2）」と、称呼する。なお、第１の目標値Qtgt1および第２の目標値Qtgt2は、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定するために適切な値となるように、上述したＮＯｘ濃度推定モデルに基づいて定められる。
【０２４４】
（場合１−１）燃料噴射量ずれが「正」である場合
この場合、上述したように、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」であり、かつ、燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxは「正」である。すなわち、この場合、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも「大きい」。さらに、上記所定値として第２の目標値Qtgt2を採用すると、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「正」である。
【０２４５】
ＣＰＵ８１は、ステップ８１６にて、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも大きいので、ＣＰＵ８１は、ステップ８１６にて「Ｙｅｓ」と判定してステップ８１８に進む。
【０２４６】
ＣＰＵ８１は、ステップ８１８にて、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「正」であるので、ＣＰＵ８１は、ステップ８１８にて「Ｙｅｓ」と判定してステップ８２０に進む。
【０２４７】
ＣＰＵ８１は、ステップ８２０にて、第１燃料過多噴射フラグXQP1の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
【０２４８】
次いで、ＣＰＵ８１は、所定時間が経過する毎に、図１０にフローチャートによって示した「第１ＮＯｘ濃度平均ずれ取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値と、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値と、の平均値を取得する。以下、便宜上、この平均値を「第１ＮＯｘ濃度平均ずれΔNOxave1」とも称呼する。
【０２４９】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始してステップ１０１０に進み、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、および、第１吸入空気量過少検出フラグXGAN1の値の少なくとも１つが「１」であるか否かを判定する。現時点における第１燃料過多噴射フラグXQP1の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定してステップ１０２０に進む。
【０２５０】
ＣＰＵ８１は、ステップ１０２０にて、下記（７）式に第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値および第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値を適用することにより、第１ＮＯｘ濃度平均ずれΔNOxave1を取得する。
【０２５１】
ΔNOxave1＝｛ΔNOx（Qtgt1）+ΔNOx（Qtgt2）｝／2    ・・・（７）
【０２５２】
その後、ＣＰＵ８１は、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０２５３】
なお、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、および、第１吸入空気量過少検出フラグXGAN1の値の全てが「０」であれば、ＣＰＵ８１は、ステップ１０１０にて「Ｎｏ」と判定してステップ１０９５に進み、本ルーチンを一旦終了する。すなわち、第１ＮＯｘ濃度平均ずれΔNOxave1は取得されない。
【０２５４】
場合１−１の説明に戻ると、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、ステップ５１０を経由してステップ５２０に進む。現時点における第１燃料過多噴射フラグXQP1の値は「１」であるので、ＣＰＵ８１は、ステップ５２０にて「Ｙｅｓ」と判定し、ステップ５５０に進む。
【０２５５】
ＣＰＵ８１は、ステップ５５０にて、下記（８）式に第１ＮＯｘ濃度平均ずれΔNOxave1の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Qcを取得する。下記（８）式において、K1は所定の負の係数である。そのため、燃料噴射量補正量Qcは負の数となる。
【０２５６】
Qc＝K1・｜ΔNOxave1｜    ・・・（８）
【０２５７】
次いで、ＣＰＵ８１は、ステップ５６０に進み、燃料噴射量の目標値Qtgtに上記燃料噴射量補正量Qcを加算する。燃料噴射量補正量Qcは負の数であるので、実際には、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ減少せしめられる。
【０２５８】
次いで、ＣＰＵ８１は、ステップ５７０に進み、燃料噴射量補正量の積算値Qcsumに燃料噴射量補正量Qcを加算する（Qcは負の数であるので、実際には減算する）ことにより、新たな燃料噴射量補正量の積算値Qcsumを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Qcsumの値は、バックアップＲＡＭ８４に格納される。
【０２５９】
次いで、ＣＰＵ８１は、ステップ５８０に進み、第１燃料過多噴射フラグXQP1の値に「０」を格納し、第１燃料過少噴射フラグXQN1の値に「０」を格納する。
【０２６０】
次いで、ＣＰＵ８１は、ステップ５４０に進み、上述したように補正された目標値Qtgtだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Qtgtだけの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ５９５に進んで本ルーチンを一旦終了する。
【０２６１】
このように、燃料噴射量ずれが正であるとき（すなわち、第１燃料過多噴射フラグXQP1の値が「１」であるとき）、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ補正（減少）せしめられる。この結果、燃料噴射量の実際値Qactは目標値Qtgtに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが正である場合に実行される処理である。
【０２６２】
（場合１−２）少なくとも吸入空気量ずれが「正」である場合
この場合、上述したように、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」であり、かつ、燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxは「負」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも「大きい」。さらに、上記所定値として第２の目標値Qtgt2を採用すると、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「負」である。
【０２６３】
よって、この場合、ＣＰＵ８１は、図９のステップ８１６にて「Ｙｅｓ」と判定してステップ８１８に進む。さらに、ＣＰＵ８１は、ステップ８１８にて「Ｎｏ」と判定し、ステップ８２２に進む。
【０２６４】
ＣＰＵ８１は、ステップ８２２にて、第１吸入空気量過多検出フラグXGAP1の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
【０２６５】
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１吸入空気量過多検出フラグXGAP1の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定してステップ１０２０に進む。ＣＰＵ８１は、ステップ１０２０にて第１ＮＯｘ濃度平均ずれΔNOxave1を取得し、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０２６６】
さらに、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、ステップ６１０を経由してステップ６２０に進む。現時点における第１吸入空気量過多検出フラグXGAP1の値は「１」であるので、ＣＰＵ８１は、ステップ６２０にて「Ｙｅｓ」と判定してステップ６４０に進む。
【０２６７】
ＣＰＵ８１は、ステップ６４０にて、下記（９）式に第１ＮＯｘ濃度平均ずれΔNOxave1の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Gacを取得する。下記（９）式において、K3は所定の負の係数である。そのため、吸入空気量補正量Gacは負の数となる。
【０２６８】
Gac＝K3・｜ΔNOxave1｜    ・・・（９）
【０２６９】
次いで、ＣＰＵ８１は、ステップ６５０に進み、吸入空気量の測定値Gamsrに吸入空気量補正量Gacを加算する。吸入空気量補正量Gacは負の数であるので、実際には、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ減少せしめられる。
【０２７０】
次いで、ＣＰＵ８１は、ステップ６６０に進み、吸入空気量補正量の積算値Gacsumに吸入空気量補正量Gacを加算する（Gacは負の数であるので、実際には減算する）ことにより、新たな吸入空気量補正量の積算値Gacsumを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Gacsumの値は、バックアップＲＡＭ８４に格納される。
【０２７１】
次いで、ＣＰＵ８１は、ステップ６７０に進み、第１吸入空気量過多検出フラグXGAP1の値に「０」を格納し、第１吸入空気量過少検出フラグXGAN1の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ６９５に進んで本ルーチンを一旦終了する。
【０２７２】
このように、少なくとも吸入空気量ずれが正であるとき（すなわち、第１吸入空気量過多検出フラグXGAP1の値が「１」であるとき）、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ補正（減少）せしめられる。この結果、吸入空気量の測定値Gamsrは実際値Gaactに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが正である場合に実行される処理である。
【０２７３】
（場合１−３）少なくとも吸入空気量ずれが「負」である場合
この場合、上述したように、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」であり、かつ、燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxは「正」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも「小さい」。さらに、上記所定値として第２の目標値Qtgt2を採用すると、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「正」である。
【０２７４】
よって、この場合、ＣＰＵ８１は、ステップ８１６にて「Ｎｏ」と判定してステップ８２４に進む。ＣＰＵ８１は、ステップ８２４にて、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも小さいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも小さいので、ＣＰＵ８１は、ステップ８２４にて「Ｙｅｓ」と判定してステップ８２６に進む。
【０２７５】
ＣＰＵ８１は、ステップ８２６にて、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「正」であるので、ＣＰＵ８１は、ステップ８２６にて「Ｙｅｓ」と判定してステップ８２８に進む。
【０２７６】
ＣＰＵ８１は、ステップ８２８にて、第１吸入空気量過少検出フラグXGAN1の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
【０２７７】
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１吸入空気量過少検出フラグXGAN1の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定し、ステップ１０２０に進む。ＣＰＵ８１は、ステップ１０２０にて第１ＮＯｘ濃度平均ずれΔNOxave1を取得し、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０２７８】
ここで、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、ステップ６１０を経由してステップ６２０に進む。現時点における第１吸入空気量過多検出フラグXGAP1の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ６２０にて「Ｎｏ」と判定してステップ６３０に進む。
【０２７９】
現時点における第１吸入空気量過少検出フラグXGAN1の値は「１」であるので、ＣＰＵ８１は、ステップ６３０にて「Ｙｅｓ」と判定してステップ６８０に進む。
【０２８０】
ＣＰＵ８１は、ステップ６８０にて、下記（１０）式に第１ＮＯｘ濃度平均ずれΔNOxave1の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Gacを取得する。下記（１０）式において、K4は所定の正の係数である。そのため、吸入空気量補正量Gacは正の数となる。
【０２８１】
Gac＝K4・｜ΔNOxave1｜    ・・・（１０）
【０２８２】
次いで、ＣＰＵ８１は、ステップ６５０に進み、吸入空気量の測定値Gamsrに吸入空気量補正量Gacを加算する。吸入空気量補正量Gacは正の数であるので、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ増大せしめられる。
【０２８３】
次いで、ＣＰＵ８１は、ステップ６６０に進み、吸入空気量補正量の積算値Gacsumに吸入空気量補正量Gacを加算する（Gacは正の数であるので、実際に加算する）ことにより、新たな吸入空気量補正量の積算値Gacsumを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Gacsumの値は、バックアップＲＡＭ８４に格納される。
【０２８４】
次いで、ＣＰＵ８１は、ＣＰＵ８１は、ステップ６７０に進み、第１吸入空気量過多検出フラグXGAP1の値に「０」を格納し、第１吸入空気量過少検出フラグXGAN1の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ６９５に進んで本ルーチンを一旦終了する。
【０２８５】
このように、少なくとも吸入空気量ずれが負であるとき（すなわち、第１吸入空気量過少検出フラグXGAN1の値が「１」であるとき）、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ補正（増大）せしめられる。この結果、吸入空気量の測定値Gamsrは実際値Gaactに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが負である場合に実行される処理である。
【０２８６】
（場合１−４）燃料噴射量ずれが「負」である場合
この場合、上述したように、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」であり、かつ、燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxは「負」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも「小さい」。さらに、上記所定値として第２の目標値Qtgt2を採用すると、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「負」である。
【０２８７】
よって、この場合、ＣＰＵ８１は、図９のステップ８１６およびステップ８２４を経由してステップ８２６に進み、ステップ８２６にて「Ｎｏ」と判定してステップ８３０に進む。
【０２８８】
ＣＰＵ８１は、ステップ８３０にて、第１燃料過少噴射フラグXQN1の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
【０２８９】
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１燃料過少噴射フラグXQN1の値は「１」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｙｅｓ」と判定し、ステップ１０２０に進む。ＣＰＵ８１は、ステップ１０２０にて第１ＮＯｘ濃度平均ずれΔNOxave1を取得し、ステップ１０９５に進んで本ルーチンを一旦終了する。
【０２９０】
さらに、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、ステップ５１０を経由してステップ５２０に進む。現時点における第１燃料過多噴射フラグXQP1の値は上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ５２０にて「Ｎｏ」と判定し、ステップ５３０に進む。
【０２９１】
現時点における第１燃料過少噴射フラグXQN1の値は「１」であるので、ＣＰＵ８１は、ステップ５３０にて「Ｙｅｓ」と判定してステップ５９０に進む。
【０２９２】
ＣＰＵ８１は、ステップ５９０にて、下記（１１）式に第１ＮＯｘ濃度平均ずれΔNOxave1の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Qcを取得する。下記（１１）式において、K2は所定の正の係数である。そのため、燃料噴射量補正量Qcは正の数となる。
【０２９３】
Qc＝K2・｜ΔNOxave1｜    ・・・（１１）
【０２９４】
次いで、ＣＰＵ８１は、ステップ５６０に進み、燃料噴射量の目標値Qtgtに燃料噴射量補正量Qcを加算する。上述したように燃料噴射量補正量Qcは正の数であるので、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ増大せしめられる。
【０２９５】
次いで、ＣＰＵ８１は、ステップ５７０に進み、燃料噴射量補正量の積算値Qcsumに燃料噴射量補正量Qcを加算する（Qcは正の数であるので、実際に加算する）ことにより、新たな燃料噴射量補正量の積算値Qcsumを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Qcsumの値は、バックアップＲＡＭ８４に格納される。
【０２９６】
次いで、ＣＰＵ８１は、ステップ５８０に進み、第１燃料過多噴射フラグXQP1の値に「０」を格納し、第１燃料過少噴射フラグXQN1の値に「０」を格納する。
【０２９７】
次いで、ＣＰＵ８１は、ステップ５４０に進み、補正された目標値Qtgtの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Qtgtの燃料が燃料噴射装置２２に噴射（噴射）される。その後、ＣＰＵ８１は、ステップ５９５に進んで本ルーチンを一旦終了する。
【０２９８】
このように、燃料噴射量ずれが負であるとき（すなわち、第１燃料過少噴射フラグXQN1の値が「１」であるとき）、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ補正（増大）せしめられる。この結果、燃料噴射量の実際値Qactは目標値Qtgtに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが負である場合に実行される処理である。
【０２９９】
（場合１−５）吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合
この場合、上述したように、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」であり、かつ、燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxは「ゼロ」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は「ゼロ」であり、かつ、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「ゼロ」である。
【０３００】
よって、この場合、ＣＰＵ８１は、ステップ８１６およびステップ８２４を経由してステップ８３２に進む。ＣＰＵ８１は、ステップ８３２にて、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値がゼロであり且つ第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値がゼロであるか否かを判定する。この場合、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は「ゼロ」であり且つ第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値は「ゼロ」であるので、ＣＰＵ８１は、ステップ８３２にて「Ｙｅｓ」と判定してステップ８３４に進む。
【０３０１】
次いで、ＣＰＵ８１は、ステップ８３４〜ステップ８４０の処理をこの順に実行する。具体的に述べると、ＣＰＵ８１は、ステップ８３４にて第１燃料過多噴射フラグXQP1の値に「０」を、ステップ８３６にて第１燃料過少噴射フラグXQN1の値に「０」を、ステップ８３８にて第１吸入空気量過多検出フラグXGAP1の値に「０」を、ステップ８４０にて第１吸入空気量過少検出フラグXGAN1の値に「０」を、格納する。その後、ＣＰＵ８１は、ステップ８９５に進んで本ルーチンを一旦終了する。
【０３０２】
ここで、ＣＰＵ８１は、所定のタイミングにて図１０のステップ１０００から処理を開始すると、ステップ１０１０に進む。現時点における第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、および、第１吸入空気量過少検出フラグXGAN1の値の全ては、上記第１初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１０１０にて「Ｎｏ」と判定してステップ１０９５に直接進んで本ルーチンを一旦終了する。
【０３０３】
ここで、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、現時点における第１燃料過多噴射フラグXQP1の値は「０」であり且つ第１燃料過少噴射フラグXQN1の値は「０」であるので、ステップ５１０、ステップ５２０、ステップ５３０およびステップ５４０を経由してステップ５９５に進んで本ルーチンを一旦終了する。
【０３０４】
さらに、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、現時点における第１吸入空気量過多検出フラグXGAP1の値は「０」であり且つ第１吸入空気量過少検出フラグXGAN1の値は「０」であるので、ステップ６１０、ステップ６２０およびステップ６３０を経由してステップ６９５に進んで本ルーチンを一旦終了する。
【０３０５】
このように、燃料噴射量ずれが「ゼロ」であり且つ吸入空気量ずれが「ゼロ」であるとき（すなわち、第１燃料過多噴射フラグXQP1の値が「０」であり且つ第１燃料過少噴射フラグXQN1の値が「０」であるとき）、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである場合に実行される処理である。
【０３０６】
（場合１−６）吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合
この場合、上述したように、燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」であり、かつ、燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxは「正」または「負」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値は、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値と「同一」である。さらに、第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値はゼロではなく、第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値はゼロではない。
【０３０７】
よって、この場合、ＣＰＵ８１は、図９のステップ８１６およびステップ８２４を経由してステップ８３２に進み、ステップ８３２にて「Ｎｏ」と判定してステップ８４２に進む。
【０３０８】
ＣＰＵ８１は、ステップ８４２にて、第１他異常発生フラグXOTH1の値に「１」を格納する。次いで、ＣＰＵ８１は、ステップ８３４〜ステップ８４０を経由してステップ８９５に進み、本ルーチンを一旦終了する。よって、この場合、第１燃料過多噴射フラグXQP1の値は「０」であり、第１燃料過少噴射フラグXQN1の値は「０」であり、第１吸入空気量過多検出フラグXGAP1の値は「０」であり、第１吸入空気量過少検出フラグXGAN1の値は「０」である。
【０３０９】
ここで、ＣＰＵ８１は、図１０のステップ１０００から処理を開始すると、ステップ１０００に続くステップ１０１０にて「Ｎｏ」と判定し、ステップ１０９５に直接進んで本ルーチンを一旦終了する。
【０３１０】
ここで、ＣＰＵ８１は、所定のタイミングにて図５のステップ５００から処理を開始すると、ステップ５１０、ステップ５２０、ステップ５３０およびステップ５４０を経由してステップ５９５に進んで本ルーチンを一旦終了する。
【０３１１】
さらに、ＣＰＵ８１は、所定のタイミングにて図６のステップ６００から処理を開始すると、ステップ６１０、ステップ６２０およびステップ６３０を経由してステップ６９５に進んで本ルーチンを一旦終了する。
【０３１２】
このように、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じているとき（すなわち、第１他異常発生フラグXOTH1の値が「１」であるとき）、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合に実行される処理である。
【０３１３】
以上、場合１−１〜１−６に場合を分けて説明したように、第１装置は、「燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量」および「燃料噴射量の目標値Qtgtが所定値であるときのＮＯｘ濃度ずれΔNOxの値」に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。さらに、第１装置は、燃料噴射量ずれの状態および吸入空気量ずれの状態に応じて、吸入空気量の測定値Gamsrおよび燃料噴射量の目標値Qtgtを補正する。
【０３１４】
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図１１にフローチャートによって示した「異常通知ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量ずれの度合いが所定の度合いよりも大きいときに「吸入空気量センサ（エアフローメータ）７１が異常である」旨を、図示しない表示装置上に警報ランプを点灯することなどによって表示する。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量ずれの度合いが所定の度合いよりも大きいときに「燃料噴射装置（インジェクタ）２２が異常である」旨を、上記同様に表示する。
【０３１５】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１１のステップ１１００から処理を開始すると、ステップ１１１０に進み、吸入空気量補正量の積算値Gacsumが所定の閾値Gacsumthよりも大きいか否かを判定する。
【０３１６】
吸入空気量補正量の積算値Gacsumが上記閾値Gacsumthよりも大きければ、ＣＰＵ８１は、ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進む。ＣＰＵ８１は、ステップ１１２０にて「吸入空気量センサ７１が異常である」旨を図示しない表示装置に表示させ、ステップ１１３０に進む。
【０３１７】
これに対し、吸入空気量補正量の積算値Gacsumが上記閾値Gacsumth以下であれば、ＣＰＵ８１は、ステップ１１１０にて「Ｎｏ」と判定してステップ１１３０に直接進む。すなわち、「吸入空気量センサ７１が異常である」旨の表示はなされない。
【０３１８】
ＣＰＵ８１は、ステップ１１３０にて、燃料噴射量補正量の積算値Qcsumが所定の閾値Qcsumthよりも大きいか否かを判定する。
【０３１９】
燃料噴射量補正量の積算値Qcsumが上記閾値Qcsumthよりも大きければ、ＣＰＵ８１は、ステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進む。ＣＰＵ８１は、ステップ１１４０にて「燃料噴射装置２２が異常である」旨を図示しない表示装置に表示させ、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０３２０】
これに対し、燃料噴射量補正量の積算値Qcsumが上記閾値Qcsumth以下であれば、ＣＰＵ８１は、ステップ１１３０にて「Ｎｏ」と判定してステップ１１９５に直接進んで本ルーチンを一旦終了する。すなわち、「燃料噴射装置２２が異常である」旨の表示はなされない。
【０３２１】
ところで、上述したように、第１燃料過多噴射フラグXQP1の値および第１燃料過少噴射フラグXQN1の値は、燃料噴射量の目標値Qtgtが補正された後に「０」に再設定される（図５のステップ５８０を参照。）。そのため、例えば燃料噴射量ずれ「のみ」が生じている場合、一の時点において上記処理が実行されることによって燃料噴射量ずれが十分に補正されなければ（すなわち、燃料噴射量ずれがゼロにならなければ）、その一の時点以降の他の時点において第１状態判定ルーチンが実行されたときに、第１燃料過多噴射フラグXQP1の値または第１燃料過少噴射フラグXQN1の値が「１」に再び設定される。その結果、上記他の時点においても燃料噴射量の目標値Qtgtが補正される。
【０３２２】
一方、上記一の時点において燃料噴射量ずれが十分に補正されれば、上記他の時点において第１状態判定ルーチンが実行されたときに第１燃料過多噴射フラグXQP1の値および第１燃料過少噴射フラグXQN1の値が「１」に設定されない。その結果、他の時点において燃料噴射量の目標値Qtgtは補正されない。このように、第１装置は、燃料噴射量ずれ「のみ」が生じている場合、燃料噴射量ずれが十分に補正されるまで燃料噴射量の目標値Qtgtを繰り返し補正する。
【０３２３】
さらに、第１吸入空気量過多検出フラグXGAP1の値および第１吸入空気量過少検出フラグXGAN1の値は、吸入空気量の測定値Gamsrが補正された後に「０」に再設定される（図６のステップ６７０を参照。）。上記説明から明らかなように、第１装置は、吸入空気量ずれ「のみ」が生じている場合、吸入空気量ずれが十分に補正されるまで吸入空気量の測定値Gamsrを補正することを繰り返す。
【０３２４】
一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、例えば上記一の時点において「少なくとも吸入空気量ずれが生じている」と判定されれば、吸入空気量の測定値Gamsrが補正された後に第１吸入空気量過多検出フラグXGAP1の値および第１吸入空気量過少検出フラグXGAN1の値が「０」に再設定される。この補正によって吸入空気量ずれが十分に補正されなければ、上記他の時点において再び「少なくとも吸入空気量ずれが生じている」と判定され、吸入空気量の測定値Gamsrが補正される。
【０３２５】
一方、上記一の時点において実行された補正によって吸入空気量ずれが十分に補正されれば、上記他の時点において「燃料噴射量ずれが生じている」と判定され、燃料噴射量の目標値Qtgtが補正される。その後、燃料噴射量ずれが十分に補正されるまで、燃料噴射量の目標値Qtgtが補正されることが繰り返される。
【０３２６】
このように、第１装置は、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じている場合であっても、それらの「双方」が生じている場合であっても、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、上記補正を繰り返し実行する。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０３２７】
＜装置の作用および効果＞
第１装置は、排ガスのＮＯｘ濃度の測定値NOxmsrと、機関１０の運転状態に基づいて定まるＮＯｘ参照濃度NOxrefと、を比較することにより、ＮＯｘ濃度ずれΔNOxを取得する。さらに、第１装置は、このＮＯｘ濃度ずれΔNOxと、燃料噴射量の目標値Qtgtと、の関係（上記第１の関係R1（Qtgt，ΔNOx））に基づき、燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、吸入空気量ずれがゼロ、正および負のいずれであるか、を判定する。すなわち、第１装置は、ＮＯｘ濃度ずれΔNOxが生じているとき、燃料噴射量の目標値Qtgtと実際値Qactとがどのように異なるかを判定することができる。さらに、第１装置は、ＮＯｘ濃度ずれΔNOxが生じているとき、吸入空気量の測定値Gamsrと実際値Gaactとがどのように異なるかを判定することができる。
【０３２８】
さらに、第１装置は、燃料噴射量ずれが生じているとき、ＮＯｘ濃度ずれΔNOxの大きさ（第１ＮＯｘ濃度ずれΔNOx（Qtgt1）および第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の平均値ΔNOxave）に応じて燃料噴射量の目標値Qtgtを補正する。一方、第１装置は、吸入空気量ずれが生じているとき、ＮＯｘ濃度ずれΔNOxの大きさΔNOxaveに応じて吸入空気量の測定値Gamsrを補正する。さらに、第１装置は、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、これら補正を繰り返し実行する。これにより、燃料噴射量ずれの大きさおよび吸入空気量の大きさが適切に低減される。その結果、ＮＯｘ濃度ずれが低減される。
【０３２９】
加えて、第１装置は、燃料噴射量ずれを補正する際に用いられる補正量の積算値Qcsumが所定の閾値Qcsumthを超えると、「燃料噴射装置２２が異常である」旨を表示装置に表示する。一方、第１装置は、吸入空気量ずれをを補正する際に用いられる補正量の積算値Gacsumが所定の閾値Gacsumthを超えると、「吸入空気量センサ７１が異常である」旨を表示装置に表示する。
【０３３０】
（第２実施形態）
次に、本発明の第２の実施形態に係る制御装置（以下、「第２装置」とも称呼する。）について説明する。
【０３３１】
＜装置の概要＞
第２装置は、第１装置が適用される機関１０と同様の構成を有する機関（図１を参照。以下、便宜上、「機関１０」と称呼する。）に適用される。そこで、第２装置が適用される装置の概要についての詳細な説明は、省略される。
【０３３２】
＜装置の作動の概要＞
以下、上述したように構成された第２装置の作動の概要について説明する。
【０３３３】
第２装置は、第１装置における燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとの関係（すなわち、第１の関係R1（Qtgt，ΔNOx））に代えて「吸気酸素濃度Oconと、ＮＯｘ濃度ずれΔNOxと、の関係」に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する点においてのみ、第１装置と異なる。
【０３３４】
具体的に述べると、第２装置は、第１装置と同様の手法にて「吸気酸素濃度Ocon」および「ＮＯｘ濃度ずれΔNOx」を取得する。そして、第２装置は、機関１０が運転されている期間中、吸気酸素濃度Oconと、ＮＯｘ濃度ずれΔNOxと、を対応させながら取得し続ける。さらに、第２装置は、取得されたこれら値に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。
【０３３５】
第２装置は、上記状態判定の結果に応じて、燃料噴射量ずれの大きさが小さくなるように燃料噴射量の目標値Qtgtを所定の補正量だけ補正する。さらに、第２装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさが小さくなるように吸入空気量の測定値Gamsrを所定の補正量だけ補正する。加えて、第２装置は、これら補正を、燃料噴射量ずれがゼロとなり且つ吸入空気量ずれがゼロとなるまで繰り返す。
【０３３６】
第２装置は、燃料噴射量の目標値Qtgtの補正量の積算値が所定の閾値よりも大きくなると、「燃料噴射装置２２が異常である」ことを表示装置など（図１において図示省略。）に表示する。さらに、第２装置は、吸入空気量の測定値Gamsrの補正量の積算値が所定の閾値よりも大きくなると、「吸入空気量センサ７１が異常である」ことを上記表示装置などに表示する。以上が第２装置の作動の概要である。
【０３３７】
＜内燃機関の制御方法＞
次いで、第２装置の具体的な作動についての説明を行う前に、第２装置に採用されている機関１０の制御方法について述べる。第２装置は、第１装置と同じＮＯｘ濃度推定モデルを採用している。そこで、ＮＯｘ濃度推定モデルについての説明（上記説明１−１を参照。）、および、吸入空気量ずれおよび燃料噴射量ずれの少なくとも一方が生じた場合にＮＯｘ濃度ずれが生じる理由についての説明（上記説明１−２を参照。）は、省略される。以下、第２装置に採用されている制御方法につき、下記説明２−１〜２−２の順序に従って説明する。
（説明２−１）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
（説明２−２）状態判定の結果に応じた補正についての説明
【０３３８】
（説明２−１）燃料噴射量ずれの状態および吸入空気量ずれの状態の判定方法についての説明
以下、上記ＮＯｘ濃度推定モデルを用いて、下記条件２−Ａ〜２−Ｄのうちの「一または複数」が成立する場合における「吸気酸素濃度OconとＮＯｘ濃度ずれΔNOxとの関係」について説明する。
（条件２−Ａ）吸入空気量の実際値Gaactが測定値Gamsrよりも小さい。
（条件２−Ｂ）吸入空気量の実際値Gaactが測定値Gamsrよりも大きい。
（条件２−Ｃ）燃料噴射量の実際値Qactが目標値Qtgtよりも小さい。
（条件２−Ｄ）燃料噴射量の実際値Qactが目標値Qtgtよりも大きい。
【０３３９】
以下、条件２−Ａに示す状態を「吸入空気量ずれが負である」と、条件２−Ｂに示す状態を「吸入空気量ずれが正である」と、条件２−Ｃに示す状態を「燃料噴射量ずれが負である」と、条件２−Ｄに示す状態を「燃料噴射量ずれが正である」と、称呼する。さらに、以下、便宜上、吸気酸素濃度OconとＮＯｘ濃度ずれΔNOxとの関係を「第２の関係R2（Ocon，ΔNOx）」と称呼する。
【０３４０】
さらに、この説明２−１において、吸入空気量および燃料噴射量「以外」のＮＯｘ濃度に影響を与え得る運転パラメータ（例えば、気筒内に吸入されるガスの総量Gcylに影響を与える機関回転速度NEおよび過給圧Pim、ＥＧＲ率の目標値Regrtgt、ならびに、気筒内に燃料を噴射する時期である燃料噴射時期など）は、所定の値に固定されていると仮定する。すなわち、吸入空気量ずれおよび燃料噴射量ずれ「のみ」がＮＯｘ濃度ずれΔNOxに影響を与えると仮定する。
【０３４１】
まず、上記条件２−Ａ〜２−Ｄのうちの「１つ」が成立する場合における第２の関係R2（Ocon，ΔNOx）について説明する。
【０３４２】
図１２（Ａ）は、条件２−Ａ〜条件２−Ｄのうちの１つが成立する場合における第２の関係R2（Ocon，ΔNOx）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。ＮＯｘ濃度推定モデルにおける指数A、BおよびCは（上記（５）式を参照。）、「機関１０と同一の構成を有する機関であって、燃料噴射量の目標値Qtgtと実際値Qactとが一致しており且つ吸入空気量の測定値NOxmsrと実際値Gaactとが一致していることが確認されている機関」を用いた実験によって定められた。
【０３４３】
図１２（Ａ）において、Gamsr（−）は、条件２−Ａが成立する場合（吸入空気量ずれが負である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。Gamsr（＋）は、条件２−Ｂが成立する場合（吸入空気量ずれが正である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。Qact（−）は、条件２−Ｃが成立する場合における（燃料噴射量ずれが負である場合）の第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。Qact（＋）は、条件２−Ｄが成立する場合（燃料噴射量ずれが正である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。
【０３４４】
まず、「条件２−Ａのみ」が成立する場合、曲線Gamsr（−）に示すように、少なくとも吸気酸素濃度Oconが所定値Cから所定値Dである範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０３４５】
さらに、「条件２−Ｂのみ」が成立する場合、曲線Gamsr（＋）に示すように、少なくとも上記範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０３４６】
加えて、「条件２−Ｃのみ」が成立する場合、曲線Qact（−）に示すように、少なくとも上記範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０３４７】
さらに加えて、「条件２−Ｄのみ」が成立する場合、曲線Qact（＋）に示すように、少なくとも上記範囲内（C≦Ocon≦D）において、燃料噴射量の目標値Qtgtが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０３４８】
このように、条件２−Ａが成立する場合における第２の関係R2（Ocon，ΔNOx）と、条件２−Ｂが成立する場合における第２の関係R2（Ocon，ΔNOx）と、条件２−Ｃが成立する場合における第２の関係R2（Ocon，ΔNOx）と、条件２−Ｄが成立する場合における第２の関係R2（Ocon，ΔNOx）と、は異なる。
【０３４９】
所定値Cおよび所定値Dのそれぞれは、上述したように条件２−Ａ〜２−Ｄのうちの一の条件が成立した場合に得られる第２の関係R2（Ocon，ΔNOx）がその一の条件とは異なる他の条件が成立した場合に得られる第２の関係R2（Ocon，ΔNOx）と異なることとなる適値に設定されればよい。
【０３５０】
以上、条件２−Ａ〜２−Ｄのうちの「１つ」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じた場合）における第２の関係R2（Ocon，ΔNOx）について説明した。
【０３５１】
次いで、上記条件２−Ａ〜２−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第２の関係R2（Ocon，ΔNOx）について説明する。
【０３５２】
図１２（Ｂ）は、条件２−Ａ〜２−Ｄのうちの複数が成立する場合における第２の関係R2（Ocon，ΔNOx）を上記「ＮＯｘ濃度推定モデル」を用いて表したグラフである。
【０３５３】
図１２（Ｂ）において、Gamsr（−）＋Qact（＋）は、条件２−Ａおよび条件２−Ｄが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが正である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。Gamsr（−）＋Qact（−）は、条件２−Ａおよび条件２−Ｃが成立する場合（吸入空気量ずれが負であり且つ燃料噴射量ずれが負である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。Gamsr（＋）＋Qact（＋）は、条件２−Ｂおよび条件２−Ｄが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが正である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。Gamsr（＋）＋Qact（−）は、条件２−Ｂおよび条件２−Ｃが成立する場合（吸入空気量ずれが正であり且つ燃料噴射量ずれが負である場合）における第２の関係R2（Ocon，ΔNOx）を示す曲線を表す。
【０３５４】
なお、条件２−Ａ（吸入空気量ずれが負である状態）と、条件２−Ｂ（吸入空気量ずれが正である状態）と、は同時に成立し得ない。さらに、条件２−Ｃ（燃料噴射量ずれが負である状態）と、条件２−Ｄ（燃料噴射量ずれが正である状態）と、は同時に成立し得ない。よって、図１２（Ｂ）に示す４つの組み合わせが、成立し得る組み合わせの全てである。
【０３５５】
まず、「条件２−Ａおよび条件２−Ｄ」が成立する場合、曲線Gamsr（−）＋Qact（＋）に示すように、少なくとも吸気酸素濃度Oconが所定値Cから所定値Dである範囲内（C≦Ocon≦D）において吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０３５６】
さらに、「条件２−Ａおよび条件２−Ｃ」が成立する場合、曲線Gamsr（−）＋Qact（−）に示すように、少なくとも上記範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は小さくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「正」である。
【０３５７】
加えて、「条件２−Ｂおよび条件２−Ｄ」が成立する場合、曲線Gamsr（＋）＋Qact（＋）に示すように、少なくとも上記範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０３５８】
さらに加えて、「条件２−Ｂおよび条件２−Ｃ」が成立する場合、曲線Gamsr（＋）＋Qact（−）に示すように、少なくとも上記範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大するにつれてＮＯｘ濃度ずれΔNOxの値は大きくなる。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「負」である。
【０３５９】
このように、条件２−Ａおよび条件２−Ｄが成立する場合の第２の関係R2（Ocon，ΔNOx）と、条件２−Ａおよび条件２−Ｃが成立する場合の第２の関係R2（Ocon，ΔNOx）とは、上記範囲内におけるＮＯｘ濃度ずれΔNOxの大きさが異なることを除いて同一である。さらに、条件２−Ｂおよび条件２−Ｄが成立する場合の第２の関係R2（Ocon，ΔNOx）と、条件２−Ｂおよび条件２−Ｃが成立する場合の第２の関係R2（Ocon，ΔNOx）とは、上記範囲内におけるＮＯｘ濃度ずれΔNOxの大きさが異なることを除いて同一である。加えて、条件２−Ａおよび条件２−Ｄ、あるいは、条件２−Ａおよび条件２−Ｃが成立する場合の第２の関係R2（Ocon，ΔNOx）は、条件２−Ｂおよび条件２−Ｄ、あるいは、条件２−Ｂおよび条件２−Ｃが成立する場合の第２の関係R2（Ocon，ΔNOx）と、異なる。
【０３６０】
以上、条件２−Ａ〜２−Ｄのうちの「複数」が成立する場合（すなわち、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じた場合）における第２の関係R2（Ocon，ΔNOx）について説明した。
【０３６１】
なお、「条件２−Ａ〜２−Ｄのいずれも成立しない」場合（すなわち、吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合）、実際のＮＯｘ濃度NOxconはＮＯｘ濃度NOxconと一致する。よって、この場合、ＮＯｘ濃度ずれΔNOxは、吸気酸素濃度Oconにかからわずゼロである。すなわち、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」であり、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「ゼロ」である。
【０３６２】
ところで、上述したように、機関１０を構成する部材のうち「吸入空気量および燃料噴射量と関連しない部材」が正常に作動しない場合においても、ＮＯｘ濃度ずれは生じ得る。例えば、ＮＯｘ濃度センサ７５が正常に作動しなし場合（実際のＮＯｘ濃度とは異なるＮＯｘ濃度を表す出力値を出力する場合）、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロであっても、ＮＯｘ濃度ずれが生じる。以下、このような状態を「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と称呼する。
【０３６３】
この場合、図１３の曲線Other（＋）または曲線Other（−）に示すように、吸気酸素濃度OconにかかわらずＮＯｘ濃度ずれΔNOxの大きさは変化しない。すなわち、少なくとも上記範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」である。さらに、この場合、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxは「正」または「負」である。
【０３６４】
このように、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件２−Ａおよび条件２−Ｂを参照。）、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか（条件２−Ｃおよび条件２−Ｄを参照。）、により、第２の関係R2（Ocon，ΔNOx）は異なる。換言すると、第２の関係R2（Ocon，ΔNOx）に基づき、吸入空気量ずれが「ゼロ」、「正」および「負」のいずれであるか、あるいは、燃料噴射量ずれが「ゼロ」、「正」および「負」のいずれであるか、を判定することができる。さらに、第２の関係R2（Ocon，ΔNOx）に基づき、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれ」が生じているか否か、を判定することができる。
【０３６５】
具体的に述べると、第２の関係R2（Ocon，ΔNOx）が「所定範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「負」であり、かつ、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxが「正」である関係」である場合、その関係は、図１２（Ａ）の曲線Gamsr（−）、ならびに、図１２（Ｂ）の曲線Gamsr（−）＋Qact（＋）および曲線Gamsr（−）＋Qact（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが負である」と判定することができる。
【０３６６】
さらに、第２の関係R2（Ocon，ΔNOx）が「所定範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「正」であり、かつ、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxが「負」である関係」である場合、その関係は、図１２（Ａ）の曲線Gamsr（＋）、ならびに、図１２（Ｂ）の曲線Gamsr（＋）＋Qact（＋）および曲線Gamsr（＋）＋Qact（−）に示される関係に相当する。すなわち、この場合、「少なくとも吸入空気量ずれが正である」と判定することができる。
【０３６７】
加えて、第２の関係R2（Ocon，ΔNOx）が「所定範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「正」であり、かつ、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxが「正」である関係」である場合、その関係は、図１２（Ａ）の曲線Qact（＋）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが正である」と判定することができる。
【０３６８】
さらに加えて、第２の関係R2（Ocon，ΔNOx）が「所定範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「負」であり、かつ、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxが「負」である関係」である場合、その関係は、図１２（Ａ）の曲線Qact（−）に示される関係に相当する。すなわち、この場合、「燃料噴射量ずれが負である」と判定することができる。
【０３６９】
なお、第２の関係R2（Ocon，ΔNOx）が「所定範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「ゼロ」であり、かつ、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxが「ゼロ」である関係」である場合、「吸入空気量ずれがゼロであり、かつ、燃料噴射量ずれがゼロである」と判定することができる。
【０３７０】
さらに、第２の関係R2（Ocon，ΔNOx）が「所定範囲内（C≦Ocon≦D）において、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量が「ゼロ」であり、かつ、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOxが「正」または「負」である関係」である場合、「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定することができる。
【０３７１】
このように、第２装置は、第２の関係R2（Ocon，ΔNOx）に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。以下、上述した燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する方法を、「第２状態判定方法」とも称呼する。
【０３７２】
（説明２−２）状態判定の結果に応じた補正についての説明
第２装置は、上記状態判定の結果に応じて、吸入空気量ずれの大きさを低減するように吸入空気量の測定値Gamsrを補正し、燃料噴射量ずれの大きさを低減するように燃料噴射量の目標値Qtgtを補正する。
【０３７３】
具体的に述べると、第２装置は、吸入空気量ずれが「正」であると判定した場合、吸入空気量の測定値Gamsrを所定の補正量だけ「減少」するように補正する。一方、第２装置は、吸入空気量ずれが「負」であると判定した場合、吸入空気量の測定値Gamsrを所定の補正量だけ「増大」するように補正する。これら補正にて用いられる「補正量」はＮＯｘ濃度ずれΔNOxの大きさに応じて決定される。
【０３７４】
例えば、図１４（Ａ）に示すように、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOx（C）および吸気酸素濃度Oconが所定値DであるときのＮＯｘ濃度ずれΔNOx（D）の双方が「正」であって、ＮＯｘ濃度ずれΔNOx（C）よりもＮＯｘ濃度ずれΔNOx（D）が小さい場合、第２装置は、上記説明２−１にて述べたように、「少なくとも吸入空気量ずれが負である」と判定する。
【０３７５】
この場合、第２装置は、例えば、ＮＯｘ濃度ずれΔNOx（C）およびＮＯｘ濃度ずれΔNOx（D）の平均値に基づいて上記「補正量」を決定する。そして、第２装置は、吸入空気量の測定値Gamsrをこの補正量だけ「増大」するように補正する。具体的に述べると、第２装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、吸入空気量センサ７１の出力値（出力電圧）と吸入空気量の測定値Gamsrとの関係（マップ）を、測定値Gamsrが増大されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
【０３７６】
さらに、第２装置は、燃料噴射量ずれが「正」であると判定した場合、燃料噴射量の目標値Qtgtを所定の補正量だけ「減少」するように補正する。一方、第２装置は、燃料噴射量ずれが「負」であると判定した場合、燃料噴射量の目標値Qtgtを所定の補正量だけ「増大」するように補正する。これら補正において用いられる「補正量」は、ＮＯｘ濃度ずれΔNOxの大きさに応じて決定される。
【０３７７】
例えば、図１４（Ｂ）に示すように、吸気酸素濃度Oconが所定値CであるときのＮＯｘ濃度ずれΔNOx（C）および吸気酸素濃度Oconが所定値DであるときのＮＯｘ濃度ずれΔNOx（D）の双方が「正」であって、ＮＯｘ濃度ずれΔNOx（C）よりもＮＯｘ濃度ずれΔNOx（D）が大きい場合、第２装置は、上記説明２−１にて述べたように、「燃料噴射量ずれが正である」と判定する。
【０３７８】
この場合、第２装置は、例えば、ＮＯｘ濃度ずれΔNOx（C）とＮＯｘ濃度ずれΔNOx（D）との平均値に基づいて上記「補正量」を決定する。そして、第２装置は、燃料噴射量の目標値Qtgtをこの補正量だけ「減少」するように補正する。具体的に述べると、第２装置は、例えば、上記平均値に所定の係数を乗じて得られる値に応じて、燃料噴射装置２２の燃料噴射時間と燃料噴射量の目標値Qtgtとの関係（マップ）を、目標値Qtgtが減少されるように変更（学習）する。これにより、吸入空気量ずれが低減される。
【０３７９】
このように燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrが補正されることにより、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０３８０】
ところで、上記説明２−１にて述べたように、第２装置は、所定の条件が成立する場合、「少なくとも」吸入空気量ずれが負であると判定する（条件２−Ａが成立する場合、条件２−Ａおよび条件２−Ｃが成立する場合、ならびに、条件２−Ａおよび条件２−Ｄが成立する場合）。この場合、第２装置は、「吸入空気量ずれが負である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが正である」か、「吸入空気量ずれが負であり、かつ、燃料噴射量ずれが負である」か、を区別して判定しない。すなわち、吸入空気量ずれ「のみ」が生じているか、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じているか、は判定されない。
【０３８１】
しかし、上記説明２−２にて述べたように、上記いずれの条件が成立する場合であっても、第２装置は「吸入空気量ずれ」を低減するように吸入空気量の測定値Gamsrを補正する。そのため、吸入空気量ずれ「のみ」が生じている場合、この補正によってその吸入空気量ずれが低減される。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、この補正によってその「双方」のうちの吸入空気量ずれが低減される。そして、例えば繰り返しこの補正が行われることによって吸入空気量ずれが十分に低減されれば、それら「双方」のうちの燃料噴射量ずれ「のみ」が残る。燃料噴射量ずれ「のみ」が残れば、第２装置は、燃料噴射量ずれが生じていると判定すると共にその燃料噴射量ずれを低減するように燃料噴射量の目標値Qtgtを補正する。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０３８２】
このように、上記いずれの場合（吸入空気量ずれ「のみ」が生じている場合、および、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合）であっても、第２装置が繰り返し補正を行うことにより、ＮＯｘ濃度ずれΔNOxが低減される。なお、上記説明から理解されるように、第２装置が「少なくとも吸入空気量ずれが「正」である」と判定する場合であっても、上記同様、第２装置が繰り返し補正を行うことによってＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０３８３】
なお、第２装置は、「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」と判定した場合、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrを補正しない。さらに、第２装置は、「燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている」と判定した場合、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrを補正しない。
【０３８４】
以上、説明２−１〜２−２にて述べたように、第２装置は燃料噴射量ずれの状態および吸入空気量ずれの状態を判定すると共に、その判定の結果に応じてＮＯｘ濃度ずれΔNOxの大きさを低減するように機関１０を制御する。
【０３８５】
ところで、上記第２状態判定方法において採用されている吸気酸素濃度Oconは、具体的には「上記（１）式にて算出される吸気酸素濃度の計算値（見掛け上の吸気酸素濃度）」である。そのため、燃料噴射量ずれおよび吸入空気量ずれの少なくとも一方が生じている場合、この見掛け上の吸気酸素濃度Oconと、吸気酸素濃度の実際値Oconactと、は一致しない（上記説明（１−２）を参照。）。よって、この場合、「判定の指標とされる第２の関係R2（Ocon，ΔNOx）そのもの」に何らかのずれが生じている。そこで、第２の関係R2（Ocon，ΔNOx）における見掛け上の吸気酸素濃度Oconを「吸気酸素濃度の実際値Oconact」に置き換えると、上記状態判定をより適切に行うことができるとも考えられる。
【０３８６】
しかし、上述したように、第２の関係R2（Ocon，ΔNOx）における「ＮＯｘ濃度ずれΔNOx」は、ＮＯｘ濃度の測定値NOxmsrと、機関１０の運転状態に応じて定まるＮＯｘ参照濃度NOxrefと、に基づいて定められる。そのため、図１５に示すように、判定の指標として時点tにおける見掛け上の吸気酸素濃度Ocon（t）を用いた場合におけるＮＯｘ濃度ずれΔNOx（Ocon）と、判定の指標としてその時点tにおける吸気酸素濃度の実際値Oconact（t）を用いた場合におけるＮＯｘ濃度ずれΔNOx（Oconact）と、は一致する。よって、見掛け上の吸気酸素濃度OconとＮＯｘ濃度ずれΔNOxとの関係（図中の実線）と、吸気酸素濃度の実際値OconactとＮＯｘ濃度ずれΔNOxとの関係（図中の破線）とは、単に図中横軸方向の位置が異なるに過ぎない。したがって、上記説明２−１〜２−２から理解されるように、所定の範囲（C≦Ocon≦D）が適切に選択されていれば、判定の指標として見掛け上の吸気酸素濃度Oconを用いた場合における上記状態判定の結果と、同指標として吸気酸素濃度の実際値Oconactを用いた場合における上記状態判定の結果と、は一致する。
【０３８７】
このように、判定の指標として見掛け上の吸気酸素濃度Oconを用いても、同指標として吸気酸素濃度の実際値Oconactを用いても、所定の範囲（C≦Ocon≦D）が適切に選択されていれば、状態判定を適切に行うことができる。そこで、第２装置においては、判定の指標として見掛け上の吸気酸素濃度Oconが用いられている。
【０３８８】
一方、上述したように、ＮＯｘ濃度推定モデルにおける指数A、BおよびCは、ＮＯｘ濃度推定モデルが適用される内燃機関の構成等に応じて定められる。そのため、機関１０と異なる構成を有する他の機関にＮＯｘ濃度推定モデルが適用される場合、他の機関における指数A、BおよびCは、機関１０における指数A、BおよびCと異なる場合がある。この場合、機関１０における第２の関係R2（Ocon，ΔNOx）と、他の機関における第２の関係R2（Ocon，ΔNOx）と、は異なる。しかし、上記説明から明らかなように、上記同様の考え方によって他の機関における燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
【０３８９】
＜実際の作動＞
以下、第２装置の実際の作動について説明する。
【０３９０】
第２装置は、第１装置において図５および図６にフローチャートによって示した処理に代えて「図１６および図１７にフローチャートによって示した処理」を実行する点、および、第１装置において図８〜図１０にフローチャートによって示した処理に代えて「図１８〜図２０にフローチャートによって示した処理」を実行する点においてのみ、第１装置と相違している。そこで、以下、これらの相違点を中心として説明する。
【０３９１】
第２装置において、ＣＰＵ８１は、図７、図１１、および、図１６〜図２０にフローチャートによって示した各ルーチンを所定のタイミング毎に実行するようになっている。ＣＰＵ８１は、これらルーチンにおいて、第２燃料過多噴射フラグXQP2、第２燃料過少噴射フラグXQN2、第２吸入空気量過多検出フラグXGAP2、第２吸入空気量過少検出フラグXGAN2、および、第２他異常発生フラグXOTH2を用いる。
【０３９２】
第２燃料過多噴射フラグXQP2は、その値が「０」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが大きくないこと（すなわち、Qact≦Qtgt）を表す。一方、第２燃料過多噴射フラグXQP2は、その値が「１」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが大きいこと（すなわち、Qact＞Qtgt）を表す。
【０３９３】
第２燃料過少噴射フラグXQN2は、その値が「０」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが小さくないこと（すなわち、Qact≧Qtgt）を表す。一方、第２燃料過少噴射フラグXQN2は、その値が「１」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが小さいこと（すなわち、Qact＜Qtgt）を表す。
【０３９４】
第２吸入空気量過多検出フラグXGAP2は、その値が「０」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが大きくないこと（すなわち、Gamsr≦Gaact）を表す。一方、第２吸入空気量過多検出フラグXGAP2は、その値が「１」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが大きいこと（すなわち、Gamsr＞Gaact）を表す。
【０３９５】
第２吸入空気量過少検出フラグXGAN2は、その値が「０」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが小さくないこと（すなわち、Gamsr≧Gaact）を表す。一方、第２吸入空気量過多検出フラグXGAP2は、その値が「１」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが小さいこと（すなわち、Gamsr＜Gaact）を表す。
【０３９６】
第２他異常発生フラグXOTH2は、その値が「０」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことを表す。一方、第２他異常発生フラグXOTH2は、その値が「１」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていることを表す。
【０３９７】
第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、および、第２他異常発生フラグXOTH2の値は、バックアップＲＡＭ８４に格納される。さらに、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、および、第２吸入空気量過少検出フラグXGAN2の値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２および吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。加えて、第２他異常発生フラグXOTH2の値は、上記工場出荷時およびサービス点検実施時などにおいて、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている原因を解消する処置がなされた際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
【０３９８】
以下、ＣＰＵ８１が実行する各ルーチンについて詳細に説明する。
【０３９９】
まず、現時点における、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、および、第２他異常発生フラグXOTH2の値は、全て「０」に設定されていると仮定する。以下、便宜上、この仮定を「第２初期設定仮定」とも称呼する。
【０４００】
ＣＰＵ８１は、機関１０が始動されると、任意の気筒のクランク角が圧縮上死点前の所定クランク角度（例えば、圧縮上死点前９０度クランク角）θｆに一致する毎に、図１６にフローチャートによって示した「第２燃料噴射制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、燃料噴射量の目標値Qtgtを決定すると共に、その目標値Qtgtだけの燃料を各気筒内に噴射させる。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量の実際値Qactが目標値Qtgtと一致していないと判定された場合にその目標値Qtgtを補正すると共に、補正された目標値Qtgtだけの燃料を各気筒内に噴射させる。
【０４０１】
具体的に述べると、ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じて燃料噴射量の目標値Qtgtを決定する。さらに、ＣＰＵ８１は、燃料噴射量の目標値Qtgtよりも実際値Qactが大きいと判定されている場合、その目標値Qtgtを所定の燃料噴射量補正量Qcだけ減少させる。一方、ＣＰＵ８１は、燃料噴射量の目標値Qtgtよりも実際値Qactが小さいと判定されている場合、その目標値Qtgtを所定の燃料噴射量補正量Qcだけ増大させる。
【０４０２】
ＣＰＵ８１は、図１６に示すルーチンにおいて、燃料噴射量補正量Qcの積算値Qcsumを算出する。この積算値Qcsumの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
【０４０３】
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始してステップ１６１０に進み、「アクセルペダル開度Accpと、機関回転速度NEと、燃料噴射量の目標値Qtgtと、の関係」をあらかじめ定めた燃料噴射量目標値決定テーブルMapQtgt（Accp，NE）に現時点におけるアクセルペダル開度Accpと機関回転速度NEとを適用することにより、燃料噴射量の目標値Qtgtを決定する。この燃料噴射量目標値決定テーブルMapQtgt（Accp，NE）において、燃料噴射量の目標値Qtgtは、アクセルペダル開度Accpおよび機関回転速度NEに基づいて定まる要求トルクに応じた適値となるように、設計されている。
【０４０４】
次いで、ＣＰＵ８１は、ステップ１６２０に進み、現時点における第２燃料過多噴射フラグXQP2の値が「１」であるか否かを判定する。現時点における第２燃料過多噴射フラグXQP2の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１６２０にて「Ｎｏ」と判定してステップ１６３０に進む。
【０４０５】
ＣＰＵ８１は、ステップ１６３０にて、現時点における第２燃料過少噴射フラグXQN2の値が「１」であるか否かを判定する。現時点における第２燃料過少噴射フラグXQN2の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１６３０にて「Ｎｏ」と判定してステップ１６４０に進む。
【０４０６】
ＣＰＵ８１は、ステップ１６４０にて、上記目標値Qtgtだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、上記目標値Qtgtの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ１６９５に進んで本ルーチンを一旦終了する。
【０４０７】
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図１７にフローチャートによって示した「第２吸入空気量取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量の測定値Gamsrを取得する。さらに、ＣＰＵ８１は、このルーチンにより、吸入空気量の実際値Gaactが測定値Gamsrと一致していないと判定された場合、その測定値Gamsrを補正する。
【０４０８】
具体的に述べると、ＣＰＵ８１は、このルーチンにより、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値NOxmsrを取得する。さらに、ＣＰＵ８１は、吸入空気量の測定値NOxmsrよりも実際値Gaactが大きいと判定されている場合、その測定値NOxmsrを所定の吸入空気量補正量Gacだけ減少させる。一方、ＣＰＵ８１は、吸入空気量の測定値NOxmsrよりも実際値Gaactが小さいと判定されている場合、その測定値NOxmsrを所定の吸入空気量補正量Gacだけ増大させる。
【０４０９】
ＣＰＵ８１は、図１７に示すルーチンにおいて、吸入空気量補正量Gacの積算値Gacsumを算出する。この積算値Gacsumの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
【０４１０】
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始してステップ１７１０に進み、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値Gamsrを取得する。
【０４１１】
次いで、ＣＰＵ８１は、ステップ１７２０に進み、現時点における第２吸入空気量過多検出フラグXGAP2の値が「１」であるか否かを判定する。現時点における第２吸入空気量過多検出フラグXGAP2の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１７２０にて「Ｎｏ」と判定してステップ１７３０に進む。
【０４１２】
ＣＰＵ８１は、ステップ１７３０にて、現時点における第２吸入空気量過少検出フラグXGAN2の値が「１」であるか否かを判定する。現時点における第２吸入空気量過少検出フラグXGAN2の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１７３０にて「Ｎｏ」と判定してステップ１７９５に直接進み、本ルーチンを一旦終了する。
【０４１３】
さらに、ＣＰＵ８１は、所定のタイミングにて図７のステップ７００から処理を開始し、ステップ７１０およびステップ７２０を経由してステップ７９５に進み、本ルーチンを一旦終了する。これにより、ＥＧＲ率の目標値Regrtgtが決定されると共に、ＥＧＲ率の実際値Regractが目標値Regrtgtと一致するようにスロットル弁３３の開度およびＥＧＲ制御弁５３の開度が制御される。
【０４１４】
さらに、ＣＰＵ８１は、所定時間が経過する毎に図１８および図１９に一連のフローチャートによって示した「第２状態判定ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとを対応させながら取得する。さらに、ＣＰＵ８１は、このルーチンにより、所定の条件が成立しているとき、取得された燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとの関係（すなわち、上記第２の関係R2（Ocon，ΔNOx））に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。
【０４１５】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図１８のステップ１８００から処理を開始してステップ１８０２に進み、現時点にて「ＮＯｘ濃度を取得する条件（ＮＯｘ濃度取得条件）」が成立するか否かを判定する。このステップ１８０２におけるＮＯｘ濃度取得条件は、第１装置におけるＮＯｘ濃度取得条件と同一である（図８のステップ８０２を参照。）。よって、ＮＯｘ濃度取得条件についての詳細な説明は、省略される。
【０４１６】
ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立していない」とき、ステップ１８０２にて「Ｎｏ」と判定し、接続指標Ｂを経由して図１９のステップ１８９５に直接進んで本ルーチンを一旦終了する。このように、ＮＯｘ濃度取得条件が「成立していない」とき、ＮＯｘ濃度の測定値NOxmsrは取得されない。
【０４１７】
これに対し、ＣＰＵ８１は、ＮＯｘ濃度取得条件が「成立している」とき、ステップ１８０２にて「Ｙｅｓ」と判定してステップ１８０４に進む。ＣＰＵ８１は、ステップ１８０４にてＮＯｘ濃度センサ７５の出力値に基づいてＮＯｘ濃度の測定値NOxmsrを取得し、ステップ１８０６に進む。
【０４１８】
ＣＰＵ８１は、ステップ１８０６にて、「吸入空気量の測定値Gamsrと、燃料噴射量の目標値Qtgtと、空気過剰率λと、の関係」をあらかじめ定めた空気過剰率算出関数Fnλ（Gamsr，Qtgt）に、現時点における吸入空気量の測定値Gamsrおよび燃料噴射量の目標値Qtgtを適用することにより、空気過剰率λを算出する（上記（２）式および上記（３）式を参照。）。
【０４１９】
次いで、ＣＰＵ８１は、ステップ１８０８に進み、「ＥＧＲ率の目標値Regrtgtと、空気過剰率λと、吸気酸素濃度Oconと、の関係」をあらかじめ定めた吸気酸素濃度算出関数FnOcon（Regrtgt，λ）に、現時点におけるＥＧＲ率の目標値Regrtgtと、空気過剰率λと、を適用することにより、吸気酸素濃度Oconを算出する（上記（１）式を参照。）。
【０４２０】
次いで、ＣＰＵ８１は、ステップ１８１０に進み、「燃料噴射量の目標値Qtgtと実際値Qactとが一致しており且つ吸入空気量の測定値Gamsrと実際値Gaactとが一致していることが確認されている機関における、燃料噴射量の目標値Qtgtと、吸気酸素濃度Oconと、ＮＯｘ濃度と、の関係」をあらかじめ定めたMapNOxref（Qtgt，Ocon）に、現時点における燃料噴射量の目標値Qtgtと、吸気酸素濃度Oconと、を適用して得られる値を、ＮＯｘ参照濃度NOxrefとして取得する。
【０４２１】
次いで、ＣＰＵ８１は、ステップ１８１２に進み、第１装置と同一の上記（６）式にＮＯｘ濃度の測定値NOxmsrとＮＯｘ参照濃度NOxrefとを適用することにより、ＮＯｘ濃度ずれΔNOxを取得する（図８のステップ８１２を参照。）。すなわち、ステップ１８１２にて、「ＮＯｘ参照濃度NOxrefに対する、ＮＯｘ濃度の測定値NOxmsrからＮＯｘ参照濃度NOxrefを減算して得られる値の、割合」が、ＮＯｘ濃度ずれΔNOxとして取得される。
【０４２２】
さらに、ＣＰＵ８１は、上述したように取得したＮＯｘ濃度ずれΔNOxを、吸気酸素濃度Oconと対応させながら（すなわち、ＮＯｘ濃度ずれΔNOxと吸気酸素濃度Oconとを組み合わせたデータを）、ＲＯＭ８２に格納する。
【０４２３】
次いで、ＣＰＵ８１は、接続指標Ａを経由して図１９のステップ１８１４に進み、現時点にて「燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する条件（状態判定条件）」が成立しているか否かを判定する。より具体的に述べると、ＣＰＵ８１は、ステップ１８１４にて、以下の条件Ｓ−２が成立したとき、状態判定条件が成立すると判定する。換言すると、ＣＰＵ８１は、条件Ｓ−２が成立しないとき、状態判定条件が成立しないと判定する。
（条件Ｓ−２）ＮＯｘ濃度ずれΔNOxと吸気酸素濃度Oconとを組み合わせたデータであって吸気酸素濃度Oconが所定の範囲内の値であるデータが、少なくとも２つ取得されている。
【０４２４】
上記「所定の範囲」は、上述した第２状態判定方法における「所定範囲（C≦Ocon≦D）」に相当する。吸気酸素濃度Oconがこの所定の範囲内の値であるデータが少なくとも２つ取得されていれば、第２状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を判定することができる。
【０４２５】
ＣＰＵ８１は、状態判定条件が「成立している」とき、ステップ１８１４にて「Ｙｅｓ」と判定し、ステップ１８１６に進む。そして、ＣＰＵ８１は、ステップ１８１６〜ステップ１８４２に示す処理によって燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。これに対し、ＣＰＵ８１は、状態判定条件が「成立していない」とき、ステップ１８１４にて「Ｎｏ」と判定し、ステップ１８９５に直接進んで本ルーチンを一旦終了する。このように、状態判定条件が「成立していない」とき、燃料噴射量ずれの状態および吸入空気量ずれの状態は判定されない。
【０４２６】
以下、現時点にて、状態判定条件が「成立している」と仮定すると共に、ステップ１８１６〜ステップ１８４２にて実行される処理について場合を分けてより詳細に説明する。
【０４２７】
以下の説明においては、条件Ｓ−２に該当するデータとして、吸気酸素濃度が「第１の吸気酸素濃度Ocon1」であるデータ、および、吸気酸素濃度が「第１の吸気酸素濃度Ocon1よりも大きい第２の吸気酸素濃度Ocon2」であるデータが採用される。以下、吸気酸素濃度が第１の吸気酸素濃度Ocon1であるときのＮＯｘ濃度ずれを「第１ＮＯｘ濃度ずれΔNOx（Ocon1）」と、吸気酸素濃度が第２の吸気酸素濃度（Ocon2＞Ocon1）であるときのＮＯｘ濃度ずれを「第２ＮＯｘ濃度ずれΔNOx（Ocon2）」と、称呼する。なお、第１の吸気酸素濃度Ocon1および第２の吸気酸素濃度Ocon2は、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定するために適切な値となるように、上述したＮＯｘ濃度推定モデルに基づいて定められる。
【０４２８】
（場合２−１）少なくとも吸入空気量ずれが「負」である場合
この場合、上述したように、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」であり、かつ、吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxは「正」である。すなわち、この場合、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は、第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも「大きい」。さらに、上記所定値として第１の吸気酸素濃度Ocon1を採用すると、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「正」である。
【０４２９】
ＣＰＵ８１は、ステップ１８１６にて、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも大きいので、ＣＰＵ８１は、ステップ１８１６にて「Ｙｅｓ」と判定してステップ１８１８に進む。
【０４３０】
ＣＰＵ８１は、ステップ１８１８にて、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「正」であるので、ＣＰＵ８１は、ステップ１８１８にて「Ｙｅｓ」と判定してステップ１８２０に進む。
【０４３１】
ＣＰＵ８１は、ステップ１８２０にて、第２吸入空気量過少検出フラグXGAN2の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
【０４３２】
次いで、ＣＰＵ８１は、所定時間が経過する毎に、図２０にフローチャートによって示した「第２ＮＯｘ濃度平均ずれ取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値と、第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値と、の平均値を取得する。以下、便宜上、この平均値を「第２ＮＯｘ濃度平均ずれΔNOxave2」とも称呼する。
【０４３３】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始してステップ２０１０に進み、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、および、第２吸入空気量過少検出フラグXGAN2の値の少なくとも１つが「１」であるか否かを判定する。現時点における第２吸入空気量過少検出フラグXGAN2の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定してステップ２０２０に進む。
【０４３４】
ＣＰＵ８１は、ステップ２０２０にて、下記（１２）式に第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値および第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値を適用することにより、第２ＮＯｘ濃度平均ずれΔNOxave2を取得する。
【０４３５】
ΔNOxave2＝｛ΔNOx（Ocon1）+ΔNOx（Ocon2）｝／2    ・・・（１２）
【０４３６】
その後、ＣＰＵ８１は、ステップ２０９５に進んで本ルーチンを一旦終了する。
【０４３７】
なお、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、および、第２吸入空気量過少検出フラグXGAN2の値の全てが「０」であれば、ＣＰＵ８１は、ステップ２０１０にて「Ｎｏ」と判定してステップ２０９５に進み、本ルーチンを一旦終了する。すなわち、第２ＮＯｘ濃度平均ずれΔNOxave2は取得されない。
【０４３８】
場合２−１の説明に戻ると、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、ステップ１７１０を経由してステップ１７２０に進む。現時点における第２吸入空気量過多検出フラグXGAP2の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１７２０にて「Ｎｏ」と判定してステップ１７３０に進む。
【０４３９】
現時点における第２吸入空気量過少検出フラグXGAN2の値は「１」であるので、ＣＰＵ８１は、ステップ１７３０にて「Ｙｅｓ」と判定してステップ１７４０に進む。
【０４４０】
ＣＰＵ８１は、ステップ１７４０にて、下記（１３）式に第２ＮＯｘ濃度平均ずれΔNOxave2の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Gacを取得する。下記（１３）式において、L4は所定の正の係数である。そのため、吸入空気量補正量Gacは正の数となる。
【０４４１】
Gac＝L4・｜ΔNOxave2｜    ・・・（１３）
【０４４２】
次いで、ＣＰＵ８１は、ステップ１７５０に進み、吸入空気量の測定値Gamsrに吸入空気量補正量Gacを加算する。吸入空気量補正量Gacは正の数であるので、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ増大せしめられる。
【０４４３】
次いで、ＣＰＵ８１は、ステップ１７６０に進み、吸入空気量補正量の積算値Gacsumに吸入空気量補正量Gacを加算する（Gacは正の数であるので、実際に加算する）ことにより、新たな吸入空気量補正量の積算値Gacsumを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Gacsumの値は、バックアップＲＡＭ８４に格納される。
【０４４４】
次いで、ＣＰＵ８１は、ＣＰＵ８１は、ステップ１７７０に進み、第２吸入空気量過多検出フラグXGAP2の値に「０」を格納し、第２吸入空気量過少検出フラグXGAN2の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ１７９５に進んで本ルーチンを一旦終了する。
【０４４５】
このように、少なくとも吸入空気量ずれが負であるとき（すなわち、第２吸入空気量過少検出フラグXGAN2の値が「１」であるとき）、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ補正（増大）せしめられる。この結果、吸入空気量の測定値Gamsrは実際値Gaactに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが負である場合に実行される処理である。
【０４４６】
（場合２−２）燃料噴射量ずれが「負」である場合
この場合、上述したように、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「負」であり、かつ、吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxは「負」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は、第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも「大きい」。さらに、上記所定値として第１の吸気酸素濃度Ocon1を採用すると、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「負」である。
【０４４７】
よって、この場合、ＣＰＵ８１は、図１９のステップ１８１６にて「Ｙｅｓ」と判定してステップ１８１８に進む。さらに、ＣＰＵ８１は、ステップ１８１８にて「Ｎｏ」と判定し、ステップ１８２２に進む。
【０４４８】
ＣＰＵ８１は、ステップ１８２２にて、第２燃料過少噴射フラグXQN2の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
【０４４９】
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２燃料過少噴射フラグXQN2の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定してステップ２０２０に進む。ＣＰＵ８１は、ステップ２０２０にて第２ＮＯｘ濃度平均ずれΔNOxave2を取得し、ステップ２０９５に進んで本ルーチンを一旦終了する。
【０４５０】
さらに、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、ステップ１６１０を経由してステップ１６２０に進む。現時点における第２燃料過多噴射フラグXQP2の値は上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ１６２０にて「Ｎｏ」と判定し、ステップ１６３０に進む。
【０４５１】
現時点における第２燃料過少噴射フラグXQN2の値は「１」であるので、ＣＰＵ８１は、ステップ１６３０にて「Ｙｅｓ」と判定してステップ１６５０に進む。
【０４５２】
ＣＰＵ８１は、ステップ１６５０にて、下記（１４）式に第２ＮＯｘ濃度平均ずれΔNOxave2の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Qcを取得する。下記（１４）式において、L2は所定の正の係数である。そのため、燃料噴射量補正量Qcは正の数となる。
【０４５３】
Qc＝L2・｜ΔNOxave2｜    ・・・（１４）
【０４５４】
次いで、ＣＰＵ８１は、ステップ１６６０に進み、燃料噴射量の目標値Qtgtに燃料噴射量補正量Qcを加算する。上述したように燃料噴射量補正量Qcは正の数であるので、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ増大せしめられる。
【０４５５】
次いで、ＣＰＵ８１は、ステップ１６７０に進み、燃料噴射量補正量の積算値Qcsumに燃料噴射量補正量Qcを加算する（Qcは正の数であるので、実際に加算する）ことにより、新たな燃料噴射量補正量の積算値Qcsumを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Qcsumの値は、バックアップＲＡＭ８４に格納される。
【０４５６】
次いで、ＣＰＵ８１は、ステップ１６８０に進み、第２燃料過多噴射フラグXQP2の値に「０」を格納し、第２燃料過少噴射フラグXQN2の値に「０」を格納する。
【０４５７】
次いで、ＣＰＵ８１は、ステップ１６４０に進み、補正された目標値Qtgtの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Qtgtの燃料が燃料噴射装置２２に噴射（噴射）される。その後、ＣＰＵ８１は、ステップ１６９５に進んで本ルーチンを一旦終了する。
【０４５８】
このように、燃料噴射量ずれが負であるとき（すなわち、第２燃料過少噴射フラグXQN2の値が「１」であるとき）、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ補正（増大）せしめられる。この結果、燃料噴射量の実際値Qactは目標値Qtgtに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが負である場合に実行される処理である。
【０４５９】
（場合２−３）燃料噴射量ずれが「正」である場合
この場合、上述したように、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」であり、かつ、吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxは「正」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも「小さい」。さらに、上記所定値として第１の吸気酸素濃度Ocon1を採用すると、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「正」である。
【０４６０】
よって、この場合、ＣＰＵ８１は、ステップ１８１６にて「Ｎｏ」と判定してステップ１８２４に進む。ＣＰＵ８１は、ステップ１８２４にて、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも小さいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも小さいので、ＣＰＵ８１は、ステップ１８２４にて「Ｙｅｓ」と判定してステップ１８２６に進む。
【０４６１】
ＣＰＵ８１は、ステップ１８２６にて、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値がゼロよりも大きいか否かを判定する。上述したように、この場合、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「正」であるので、ＣＰＵ８１は、ステップ１８２６にて「Ｙｅｓ」と判定してステップ１８２８に進む。
【０４６２】
ＣＰＵ８１は、ステップ１８２８にて、第２燃料過多噴射フラグXQP2の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
【０４６３】
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２燃料過多噴射フラグXQP2の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定し、ステップ２０２０に進む。ＣＰＵ８１は、ステップ２０２０にて第２ＮＯｘ濃度平均ずれΔNOxave2を取得し、ステップ２０９５に進んで本ルーチンを一旦終了する。
【０４６４】
さらに、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、ステップ１６１０を経由してステップ１６２０に進む。現時点における第２燃料過多噴射フラグXQP2の値は「１」であるので、ＣＰＵ８１は、ステップ１６２０にて「Ｙｅｓ」と判定し、ステップ１６９０に進む。
【０４６５】
ＣＰＵ８１は、ステップ１６９０にて、下記（１５）式に第２ＮＯｘ濃度平均ずれΔNOxave2の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Qcを取得する。下記（１５）式において、L1は所定の負の係数である。そのため、燃料噴射量補正量Qcは負の数となる。
【０４６６】
Qc＝L1・｜ΔNOxave2｜    ・・・（１５）
【０４６７】
次いで、ＣＰＵ８１は、ステップ１６６０に進み、燃料噴射量の目標値Qtgtに上記燃料噴射量補正量Qcを加算する。燃料噴射量補正量Qcは負の数であるので、実際には、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ減少せしめられる。
【０４６８】
次いで、ＣＰＵ８１は、ステップ１６７０に進み、燃料噴射量補正量の積算値Qcsumに燃料噴射量補正量Qcを加算する（Qcは負の数であるので、実際には減算する）ことにより、新たな燃料噴射量補正量の積算値Qcsumを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Qcsumの値は、バックアップＲＡＭ８４に格納される。
【０４６９】
次いで、ＣＰＵ８１は、ステップ１６８０に進み、第２燃料過多噴射フラグXQP2の値に「０」を格納し、第２燃料過少噴射フラグXQN2の値に「０」を格納する。
【０４７０】
次いで、ＣＰＵ８１は、ステップ１６４０に進み、上述したように補正された目標値Qtgtだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Qtgtだけの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ１６９５に進んで本ルーチンを一旦終了する。
【０４７１】
このように、燃料噴射量ずれが正であるとき（すなわち、第２燃料過多噴射フラグXQP2の値が「１」であるとき）、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ補正（減少）せしめられる。この結果、燃料噴射量の実際値Qactは目標値Qtgtに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、燃料噴射量ずれが正である場合に実行される処理である。
【０４７２】
（場合２−４）少なくとも吸入空気量ずれが「正」である場合
この場合、上述したように、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「正」であり、かつ、吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxは「負」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも「小さい」。さらに、上記所定値として第１の吸気酸素濃度Ocon1を採用すると、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「負」である。
【０４７３】
よって、この場合、ＣＰＵ８１は、図１９のステップ１８１６およびステップ１８２４を経由してステップ１８２６に進み、ステップ１８２６にて「Ｎｏ」と判定してステップ１８３０に進む。
【０４７４】
ＣＰＵ８１は、ステップ１８３０にて、第２吸入空気量過多検出フラグXGAP2の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
【０４７５】
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２吸入空気量過多検出フラグXGAP2の値は「１」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｙｅｓ」と判定し、ステップ２０２０に進む。ＣＰＵ８１は、ステップ２０２０にて第２ＮＯｘ濃度平均ずれΔNOxave2を取得し、ステップ２０９５に進んで本ルーチンを一旦終了する。
【０４７６】
さらに、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、ステップ１７１０を経由してステップ１７２０に進む。現時点における第２吸入空気量過多検出フラグXGAP2の値は「１」であるので、ＣＰＵ８１は、ステップ１７２０にて「Ｙｅｓ」と判定してステップ１７８０に進む。
【０４７７】
ＣＰＵ８１は、ステップ１７８０にて、下記（１６）式に第２ＮＯｘ濃度平均ずれΔNOxave2の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Gacを取得する。下記（１６）式において、L3は所定の負の係数である。そのため、吸入空気量補正量Gacは負の数となる。
【０４７８】
Gac＝L3・｜ΔNOxave2｜    ・・・（１６）
【０４７９】
次いで、ＣＰＵ８１は、ステップ１７５０に進み、吸入空気量の測定値Gamsrに吸入空気量補正量Gacを加算する。吸入空気量補正量Gacは負の数であるので、実際には、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ減少せしめられる。
【０４８０】
次いで、ＣＰＵ８１は、ステップ１７６０に進み、吸入空気量補正量の積算値Gacsumに吸入空気量補正量Gacを加算する（Gacは負の数であるので、実際には減算する）ことにより、新たな吸入空気量補正量の積算値Gacsumを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Gacsumの値は、バックアップＲＡＭ８４に格納される。
【０４８１】
次いで、ＣＰＵ８１は、ステップ１７７０に進み、第２吸入空気量過多検出フラグXGAP2の値に「０」を格納し、第２吸入空気量過少検出フラグXGAN2の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ１７９５に進んで本ルーチンを一旦終了する。
【０４８２】
このように、吸入空気量ずれが正であるとき（すなわち、第２吸入空気量過多検出フラグXGAP2の値が「１」であるとき）、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ補正（減少）せしめられる。この結果、吸入空気量の測定値Gamsrは実際値Gaactに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、少なくとも吸入空気量ずれが正である場合に実行される処理である。
【０４８３】
（場合２−５）吸入空気量ずれが「ゼロ」であり、かつ、燃料噴射量ずれが「ゼロ」である場合
この場合、上述したように、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」であり、かつ、吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxは「ゼロ」である。すなわち、第２ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「ゼロ」であり、かつ、第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値は「ゼロ」である。
【０４８４】
よって、この場合、ＣＰＵ８１は、ステップ１８１６およびステップ１８２４を経由してステップ１８３２に進む。ＣＰＵ８１は、ステップ１８３２にて、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値がゼロであり且つ第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値がゼロであるか否かを判定する。この場合、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は「ゼロ」であり且つ第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値は「ゼロ」であるので、ＣＰＵ８１は、ステップ１８３２にて「Ｙｅｓ」と判定してステップ１８３４に進む。
【０４８５】
次いで、ＣＰＵ８１は、ステップ１８３４〜ステップ１８４０の処理をこの順に実行する。具体的に述べると、ＣＰＵ８１は、ステップ１８３４にて第２燃料過多噴射フラグXQP2の値に「０」を、ステップ１８３６にて第２燃料過少噴射フラグXQN2の値に「０」を、ステップ１８３８にて第２吸入空気量過多検出フラグXGAP2の値に「０」を、ステップ１８４０にて第２吸入空気量過少検出フラグXGAN2の値に「０」を、格納する。その後、ＣＰＵ８１は、ステップ１８９５に進んで本ルーチンを一旦終了する。
【０４８６】
ここで、ＣＰＵ８１は、所定のタイミングにて図２０のステップ２０００から処理を開始すると、ステップ２０１０に進む。現時点における第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、および、第２吸入空気量過少検出フラグXGAN2の値の全ては、上記第２初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２０１０にて「Ｎｏ」と判定してステップ２０９５に直接進んで本ルーチンを一旦終了する。
【０４８７】
ここで、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、現時点における第２燃料過多噴射フラグXQP2の値は「０」であり且つ第２燃料過少噴射フラグXQN2の値は「０」であるので、ステップ１６１０、ステップ１６２０、ステップ１６３０およびステップ１６４０を経由してステップ１６９５に進んで本ルーチンを一旦終了する。
【０４８８】
さらに、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、現時点における第２吸入空気量過多検出フラグXGAP2の値は「０」であり且つ第２吸入空気量過少検出フラグXGAN2の値は「０」であるので、ステップ１７１０、ステップ１７２０およびステップ１７３０を経由してステップ１７９５に進んで本ルーチンを一旦終了する。
【０４８９】
このように、燃料噴射量ずれが「ゼロ」であり且つ吸入空気量ずれが「ゼロ」であるとき（すなわち、第２燃料過多噴射フラグXQP2の値が「０」であり且つ第２燃料過少噴射フラグXQN2の値が「０」であるとき）、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである場合に実行される処理である。
【０４９０】
（場合２−６）吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合
この場合、上述したように、吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量は「ゼロ」であり、かつ、吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxは「正」または「負」である。すなわち、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値は、第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値と「同一」である。さらに、第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値はゼロではなく、第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値はゼロではない。
【０４９１】
よって、この場合、ＣＰＵ８１は、図１９のステップ１８１６およびステップ１８２４を経由してステップ１８３２に進み、ステップ１８３２にて「Ｎｏ」と判定してステップ１８４２に進む。
【０４９２】
ＣＰＵ８１は、ステップ１８４２にて、第２他異常発生フラグXOTH2の値に「１」を格納する。次いで、ＣＰＵ８１は、ステップ１８３４〜ステップ１８４０を経由してステップ１８９５に進み、本ルーチンを一旦終了する。よって、この場合、第２燃料過多噴射フラグXQP2の値は「０」であり、第２燃料過少噴射フラグXQN2の値は「０」であり、第２吸入空気量過多検出フラグXGAP2の値は「０」であり、第２吸入空気量過少検出フラグXGAN2の値は「０」である。
【０４９３】
ここで、ＣＰＵ８１は、図２０のステップ２０００から処理を開始すると、ステップ２０００に続くステップ２０１０にて「Ｎｏ」と判定し、ステップ２０９５に直接進んで本ルーチンを一旦終了する。
【０４９４】
ここで、ＣＰＵ８１は、所定のタイミングにて図１６のステップ１６００から処理を開始すると、ステップ１６１０、ステップ１６２０、ステップ１６３０およびステップ１６４０を経由してステップ１６９５に進んで本ルーチンを一旦終了する。
【０４９５】
さらに、ＣＰＵ８１は、所定のタイミングにて図１７のステップ１７００から処理を開始すると、ステップ１７１０、ステップ１７２０およびステップ１７３０を経由してステップ１７９５に進んで本ルーチンを一旦終了する。
【０４９６】
このように、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じているとき（すなわち、第２他異常発生フラグXOTH2の値が「１」であるとき）、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている場合に実行される処理である。
【０４９７】
以上、場合２−１〜２−６に場合を分けて説明したように、第２装置は、「吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量」および「吸気酸素濃度Oconが所定値であるときのＮＯｘ濃度ずれΔNOxの値」に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。さらに、第２装置は、燃料噴射量ずれの状態および吸入空気量ずれの状態に応じて、吸入空気量の測定値Gamsrおよび燃料噴射量の目標値Qtgtを補正する。
【０４９８】
さらに、ＣＰＵ８１は、所定のタイミングにて図１１のステップ１１００から処理を開始すると、ステップ１１１０に進み、吸入空気量補正量の積算値Gacsumが所定の閾値Gacsumthよりも大きいか否かを判定する。
【０４９９】
吸入空気量補正量の積算値Gacsumが上記閾値Gacsumthよりも大きければ、ＣＰＵ８１は、ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進む。ＣＰＵ８１は、ステップ１１２０にて「吸入空気量センサ７１が異常である」旨を図示しない表示装置に表示させ、ステップ１１３０に進む。
【０５００】
これに対し、吸入空気量補正量の積算値Gacsumが上記閾値Gacsumth以下であれば、ＣＰＵ８１は、ステップ１１１０にて「Ｎｏ」と判定してステップ１１３０に直接進む。すなわち、「吸入空気量センサ７１が異常である」旨の表示はなされない。
【０５０１】
ＣＰＵ８１は、ステップ１１３０にて、燃料噴射量補正量の積算値Qcsumが所定の閾値Qcsumthよりも大きいか否かを判定する。
【０５０２】
燃料噴射量補正量の積算値Qcsumが上記閾値Qcsumthよりも大きければ、ＣＰＵ８１は、ステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進む。ＣＰＵ８１は、ステップ１１４０にて「燃料噴射装置２２が異常である」旨を図示しない表示装置に表示させ、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０５０３】
これに対し、燃料噴射量補正量の積算値Qcsumが上記閾値Qcsumth以下であれば、ＣＰＵ８１は、ステップ１１３０にて「Ｎｏ」と判定してステップ１１９５に直接進んで本ルーチンを一旦終了する。すなわち、「燃料噴射装置２２が異常である」旨の表示はなされない。
【０５０４】
ところで、上述したように、第２燃料過多噴射フラグXQP2の値および第２燃料過少噴射フラグXQN2の値は、燃料噴射量の目標値Qtgtが補正された後に「０」に再設定される（図１６のステップ１６８０を参照。）。そのため、例えば燃料噴射量ずれ「のみ」が生じている場合、一の時点において上記処理が実行されることによって燃料噴射量ずれが十分に補正されなければ（すなわち、燃料噴射量ずれがゼロにならなければ）、その一の時点以降の他の時点において第２状態判定ルーチンが実行されたときに、第２燃料過多噴射フラグXQP2の値または第２燃料過少噴射フラグXQN2の値が「１」に再び設定される。その結果、上記他の時点においても燃料噴射量の目標値Qtgtが補正される。
【０５０５】
一方、上記一の時点において燃料噴射量ずれが十分に補正されれば、上記他の時点において第２状態判定ルーチンが実行されたときに第２燃料過多噴射フラグXQP2の値および第２燃料過少噴射フラグXQN2の値が「１」に設定されない。その結果、他の時点において燃料噴射量の目標値Qtgtは補正されない。このように、第２装置は、燃料噴射量ずれ「のみ」が生じている場合、燃料噴射量ずれが十分に補正されるまで燃料噴射量の目標値Qtgtを繰り返し補正する。
【０５０６】
さらに、第２吸入空気量過多検出フラグXGAP2の値および第２吸入空気量過少検出フラグXGAN2の値は、吸入空気量の測定値Gamsrが補正された後に「０」に再設定される（図１７のステップ１７７０を参照。）。上記説明から明らかなように、第２装置は、吸入空気量ずれ「のみ」が生じている場合、吸入空気量ずれが十分に補正されるまで吸入空気量の測定値Gamsrを補正することを繰り返す。
【０５０７】
一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、例えば上記一の時点において「少なくとも吸入空気量ずれが生じている」と判定されれば、吸入空気量の測定値Gamsrが補正された後に第２吸入空気量過多検出フラグXGAP2の値および第２吸入空気量過少検出フラグXGAN2の値が「０」に再設定される。この補正によって吸入空気量ずれが十分に補正されなければ、上記他の時点において再び「少なくとも吸入空気量ずれが生じている」と判定され、吸入空気量の測定値Gamsrが補正される。
【０５０８】
一方、上記一の時点において実行された補正によって吸入空気量ずれが十分に補正されれば、上記他の時点において「燃料噴射量ずれが生じている」と判定され、燃料噴射量の目標値Qtgtが補正される。その後、燃料噴射量ずれが十分に補正されるまで、燃料噴射量の目標値Qtgtが補正されることが繰り返される。
【０５０９】
このように、第２装置は、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じている場合であっても、それらの「双方」が生じている場合であっても、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、上記補正を繰り返し実行する。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０５１０】
＜装置の作用および効果＞
第２装置は、排ガスのＮＯｘ濃度の測定値NOxmsrと、機関１０の運転状態に基づいて定まるＮＯｘ参照濃度NOxrefと、を比較することにより、ＮＯｘ濃度ずれΔNOxを取得する。さらに、第２装置は、このＮＯｘ濃度ずれΔNOxと、吸気酸素濃度Oconと、の関係（上記第２の関係R2（Ocon，ΔNOx））に基づき、燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、吸入空気量ずれがゼロ、正および負のいずれであるか、を判定する。すなわち、第２装置は、ＮＯｘ濃度ずれΔNOxが生じているとき、燃料噴射量の目標値Qtgtと実際値Qactとがどのように異なるかを判定することができる。さらに、第２装置は、ＮＯｘ濃度ずれΔNOxが生じているとき、吸入空気量の測定値Gamsrと実際値Gaactとがどのように異なるかを判定することができる。
【０５１１】
さらに、第２装置は、燃料噴射量ずれが生じているとき、ＮＯｘ濃度ずれΔNOxの大きさ（第１ＮＯｘ濃度ずれΔNOx（Ocon1）および第２ＮＯｘ濃度ずれΔNOx（Ocon2）の平均値ΔNOxave）に応じて燃料噴射量の目標値Qtgtを補正する。一方、第２装置は、吸入空気量ずれが生じているとき、ＮＯｘ濃度ずれΔNOxの大きさΔNOxaveに応じて吸入空気量の測定値Gamsrを補正する。さらに、第２装置は、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、これら補正を繰り返し実行する。これにより、燃料噴射量ずれの大きさおよび吸入空気量の大きさが適切に低減される。その結果、ＮＯｘ濃度ずれΔNOxの大きさが低減される。
【０５１２】
加えて、第２装置は、燃料噴射量ずれを補正する際に用いられる補正量の積算値Qcsumが所定の閾値Qcsumthを超えると、「燃料噴射装置２２が異常である」旨を表示装置に表示する。一方、第２装置は、吸入空気量ずれをを補正する際に用いられる補正量の積算値Gacsumが所定の閾値Gacsumthを超えると、「吸入空気量センサ７１が異常である」旨を表示装置に表示する。
【０５１３】
（第３実施形態）
次に、本発明の第３の実施形態に係る制御装置（以下、「第３装置」とも称呼する。）について説明する。
【０５１４】
＜装置の概要＞
第３装置は、第１装置が適用される機関１０と同様の構成を有する機関（図１を参照。以下、便宜上、「機関１０」と称呼する。）に適用される。そこで、第３装置が適用される装置の概要についての詳細な説明は、省略される。
【０５１５】
＜装置の作動の概要＞
以下、上述したように構成された第３装置の作動の概要について説明する。
【０５１６】
第３装置は、第１装置における燃料噴射量の目標値QtgtとＮＯｘ濃度ずれΔNOxとの関係（すなわち、第１の関係R1（Qtgt，ΔNOx））、および、第２装置における吸気酸素濃度OconとＮＯｘ濃度ずれΔNOxとの関係（すなわち、第２の関係R2（Ocon，ΔNOx））の「双方」に基づいて燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する点においてのみ、第１装置および第２装置と異なる。
【０５１７】
具体的に述べると、第３装置は、第１装置と同様の手法により、第１状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を予備的に判定する。さらに、第３装置は、第２装置と同様の手法により、第２状態判定方法に従って燃料噴射量ずれの状態および吸入空気量ずれの状態を予備的に判定する。そして、第３装置は、これら予備的な判定の結果の双方に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を最終的に判定する。
【０５１８】
第３装置は、その最終的な状態判定の結果に応じて、第１装置および第２装置と同様に燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrを補正する。さらに、第３装置は、第１装置および第２装置と同様、「燃料噴射装置２２が異常である」こと、および、「吸入空気量センサ７１が異常である」ことを上記表示装置などに表示する。以上が第３装置の作動の概要である。
【０５１９】
＜内燃機関の制御方法＞
上述したように、第３装置は、第１状態判定方法および第２状態判定方法に従って上記状態判定を行うと共に、第１装置および第２装置と同様に燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrを補正する。そこで、第３装置における内燃機関の制御方法についての詳細な説明は、省略される。
【０５２０】
＜実際の作動＞
以下、第３装置の実際の作動について説明する。
【０５２１】
第３装置は、図７〜図１１にフローチャートによって示した処理（第１装置にて実行される処理）、および、図１８〜図２０にフローチャートによって示した処理（第２装置にて実行される処理）に加えて、図２１〜図２４にフローチャートによって示した処理を実行する。
【０５２２】
ＣＰＵ８１は、上記フローチャートによって示したルーチンにおいて、第１装置と同様の第１燃料過多噴射フラグXQP1、第１燃料過少噴射フラグXQN1、第１吸入空気量過多検出フラグXGAP1、第１吸入空気量過少検出フラグXGAN1および第１他異常発生フラグXOTH1、ならびに、第２装置と同様の第２燃料過多噴射フラグXQP2、第２燃料過少噴射フラグXQN2、第２吸入空気量過多検出フラグXGAP2、第２吸入空気量過少検出フラグXGAN2および第２他異常発生フラグXOTH2を用いる。
【０５２３】
さらに、ＣＰＵ８１は、それらルーチンにおいて、第３燃料過多噴射フラグXQP3、第３燃料過少噴射フラグXQN3、第３吸入空気量過多検出フラグXGAP3、第３吸入空気量過少検出フラグXGAN3、および、第３他異常発生フラグXOTH3を用いる。
【０５２４】
第３燃料過多噴射フラグXQP3は、その値が「０」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが大きくないこと（すなわち、Qact≦Qtgt）を表す。一方、第３燃料過多噴射フラグXQP3は、その値が「１」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが大きいこと（すなわち、Qact＞Qtgt）を表す。
【０５２５】
第３燃料過少噴射フラグXQN3は、その値が「０」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが小さくないこと（すなわち、Qact≧Qtgt）を表す。一方、第３燃料過少噴射フラグXQN3は、その値が「１」であるとき、燃料噴射量の目標値Qtgtよりも燃料噴射量の実際値Qactが小さいこと（すなわち、Qact＜Qtgt）を表す。
【０５２６】
第３吸入空気量過多検出フラグXGAP3は、その値が「０」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが大きくないこと（すなわち、Gamsr≦Gaact）を表す。一方、第３吸入空気量過多検出フラグXGAP3は、その値が「１」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが大きいこと（すなわち、Gamsr＞Gaact）を表す。
【０５２７】
第３吸入空気量過少検出フラグXGAN3は、その値が「０」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが小さくないこと（すなわち、Gamsr≧Gaact）を表す。一方、第３吸入空気量過多検出フラグXGAP3は、その値が「１」であるとき、吸入空気量の実際値Gaactよりも吸入空気量の測定値Gamsrが小さいこと（すなわち、Gamsr＜Gaact）を表す。
【０５２８】
第３他異常発生フラグXOTH3は、その値が「０」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことを表す。一方、第３他異常発生フラグXOTH3は、その値が「１」であるとき、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていることを表す。
【０５２９】
第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、第１他異常発生フラグXOTH1の値、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、第２他異常発生フラグXOTH2の値、第３燃料過多噴射フラグXQP3の値、第３燃料過少噴射フラグXQN3の値、第３吸入空気量過多検出フラグXGAP3の値、第３吸入空気量過少検出フラグXGAN3の値、および、第３他異常発生フラグXOTH3の値は、バックアップＲＡＭ８４に格納される。
【０５３０】
さらに、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、第３燃料過多噴射フラグXQP3の値、第３燃料過少噴射フラグXQN3の値、第３吸入空気量過多検出フラグXGAP3の値、および、第３吸入空気量過少検出フラグXGAN3の値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２および吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
【０５３１】
加えて、第１他異常発生フラグXOTH1の値、第２他異常発生フラグXOTH2の値、および、第３他異常発生フラグXOTH3の値は、上記工場出荷時およびサービス点検実施時などにおいて、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じている原因を解消する処置がなされた際に電気制御装置８０に対して所定の操作がなされたとき、「０」に設定されるようになっている。
【０５３２】
以下、ＣＰＵ８１が実行する各ルーチンについて詳細に説明する。
【０５３３】
まず、現時点における、第３燃料過多噴射フラグXQP3の値、第３燃料過少噴射フラグXQN3の値、第３吸入空気量過多検出フラグXGAP3の値、第３吸入空気量過少検出フラグXGAN3の値、および、第３他異常発生フラグXOTH3の値は、全て「０」に設定されていると仮定する。以下、便宜上、この仮定を「第３初期設定仮定」とも称呼する。
【０５３４】
ＣＰＵ８１は、機関１０が始動されると、任意の気筒のクランク角が圧縮上死点前の所定クランク角度（例えば、圧縮上死点前９０度クランク角）θｆに一致する毎に、図２１にフローチャートによって示した「第３燃料噴射制御ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、燃料噴射量の目標値Qtgtを決定すると共に、その目標値Qtgtだけの燃料を各気筒内に噴射させる。さらに、ＣＰＵ８１は、このルーチンにより、燃料噴射量の実際値Qactが目標値Qtgtと一致していないと判定された場合にその目標値Qtgtを補正すると共に、補正された目標値Qtgtだけの燃料を各気筒内に噴射させる。
【０５３５】
具体的に述べると、ＣＰＵ８１は、このルーチンにより、機関１０の運転状態に応じて燃料噴射量の目標値Qtgtを決定する。さらに、ＣＰＵ８１は、燃料噴射量の目標値Qtgtよりも実際値Qactが大きいと判定されている場合、その目標値Qtgtを所定の燃料噴射量補正量Qcだけ減少させる。一方、ＣＰＵ８１は、燃料噴射量の目標値Qtgtよりも実際値Qactが小さいと判定されている場合、その目標値Qtgtを所定の燃料噴射量補正量Qcだけ増大させる。
【０５３６】
ＣＰＵ８１は、図２１に示すルーチンにおいて、燃料噴射量補正量Qcの積算値Qcsumを算出する。この積算値Qcsumの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて燃料噴射装置２２に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
【０５３７】
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始してステップ２１１０に進み、「アクセルペダル開度Accpと、機関回転速度NEと、燃料噴射量の目標値Qtgtと、の関係」をあらかじめ定めた燃料噴射量目標値決定テーブルMapQtgt（Accp，NE）に現時点におけるアクセルペダル開度Accpと機関回転速度NEとを適用することにより、燃料噴射量の目標値Qtgtを決定する。この燃料噴射量目標値決定テーブルMapQtgt（Accp，NE）において、燃料噴射量の目標値Qtgtは、アクセルペダル開度Accpおよび機関回転速度NEに基づいて定まる要求トルクに応じた適値となるように、設計されている。
【０５３８】
次いで、ＣＰＵ８１は、ステップ２１２０に進み、現時点における第３燃料過多噴射フラグXQP3の値が「１」であるか否かを判定する。現時点における第３燃料過多噴射フラグXQP3の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２１２０にて「Ｎｏ」と判定してステップ２１３０に進む。
【０５３９】
ＣＰＵ８１は、ステップ２１３０にて、現時点における第３燃料過少噴射フラグXQN3の値が「１」であるか否かを判定する。現時点における第３燃料過少噴射フラグXQN3の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２１３０にて「Ｎｏ」と判定してステップ２１４０に進む。
【０５４０】
ＣＰＵ８１は、ステップ２１４０にて、上記目標値Qtgtだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、上記目標値Qtgtの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ２１９５に進んで本ルーチンを一旦終了する。
【０５４１】
さらに、ＣＰＵ８１は、所定時間が経過する毎に、図２２にフローチャートによって示した「第３吸入空気量取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、吸入空気量の測定値Gamsrを取得する。さらに、ＣＰＵ８１は、このルーチンにより、吸入空気量の実際値Gaactが測定値Gamsrと一致していないと判定された場合、その測定値Gamsrを補正する。
【０５４２】
具体的に述べると、ＣＰＵ８１は、このルーチンにより、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値NOxmsrを取得する。さらに、ＣＰＵ８１は、吸入空気量の測定値NOxmsrよりも実際値Gaactが大きいと判定されている場合、その測定値NOxmsrを所定の吸入空気量補正量Gacだけ減少させる。一方、ＣＰＵ８１は、吸入空気量の測定値NOxmsrよりも実際値Gaactが小さいと判定されている場合、その測定値NOxmsrを所定の吸入空気量補正量Gacだけ増大させる。
【０５４３】
ＣＰＵ８１は、図２２に示すルーチンにおいて、吸入空気量補正量Gacの積算値Gacsumを算出する。この積算値Gacsumの値は、機関１０を搭載した車両の工場出荷時およびサービス点検実施時などにおいて吸入空気量センサ７１に異常がないことが確認された際に電気制御装置８０に対して所定の操作がなされたとき、ゼロに設定されるようになっている。
【０５４４】
より具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始してステップ２２１０に進み、吸入空気量センサ７１の出力値に基づいて吸入空気量の測定値Gamsrを取得する。
【０５４５】
次いで、ＣＰＵ８１は、ステップ２２２０に進み、現時点における第３吸入空気量過多検出フラグXGAP3の値が「１」であるか否かを判定する。現時点における第３吸入空気量過多検出フラグXGAP3の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２２２０にて「Ｎｏ」と判定してステップ２２３０に進む。
【０５４６】
ＣＰＵ８１は、ステップ２２３０にて、現時点における第３吸入空気量過少検出フラグXGAN3の値が「１」であるか否かを判定する。現時点における第３吸入空気量過少検出フラグXGAN3の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２２３０にて「Ｎｏ」と判定してステップ２２９５に直接進み、本ルーチンを一旦終了する。
【０５４７】
さらに、ＣＰＵ８１は、所定のタイミングにて図７のステップ７００から処理を開始し、ステップ７１０およびステップ７２０を経由してステップ７９５に進み、本ルーチンを一旦終了する。これにより、ＥＧＲ率の目標値Regrtgtが決定されると共に、ＥＧＲ率の実際値Regractが目標値Regrtgtと一致するようにスロットル弁３３の開度およびＥＧＲ制御弁５３の開度が制御される。
【０５４８】
さらに、ＣＰＵ８１は、所定のタイミングにて図８および図９に一連のフローチャートによって示した「第１状態判定ルーチン」を繰り返し実行し、燃料噴射量ずれおよび吸入空気量ずれの状態を判定する。加えて、ＣＰＵ８１は、所定のタイミングにて図１８および図１９に一連のフローチャートによって示した「第２状態判定ルーチン」を繰り返し実行し、燃料噴射量ずれおよび吸入空気量ずれの状態を判定する。
【０５４９】
以下、「上記第１状態判定ルーチンによる燃料噴射量ずれの状態および吸入空気量ずれの状態の判定が完了しており、かつ、上記第２状態判定ルーチンによる燃料噴射量ずれの状態および吸入空気量ずれの状態の判定が完了している」と仮定して、説明を続ける。
【０５５０】
ＣＰＵ８１は、所定時間が経過する毎に図１７にフローチャートによって示した「第３状態判定ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１状態判定ルーチンによる判定の結果および第２状態判定ルーチンによる判定の結果の双方に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。以下、場合を分けてより詳細に説明する。
【０５５１】
（場合３−１）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが正である」と判定されている場合
この場合、第１燃料過多噴射フラグXQP1の値は「１」に設定されており（上記場合１−１を参照。）、かつ、第２燃料過多噴射フラグXQP2の値は「１」に設定されている（上記場合２−３を参照）。
【０５５２】
ＣＰＵ８１は、所定のタイミングにて図２３のステップ２３００から処理を開始してステップ２３０５に進み、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、第１他異常発生フラグXOTH1の値、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、および、第２他異常発生フラグXOTH2の値、の全てが「０」であるか否かを判定する。
【０５５３】
上述したように、現時点における第１燃料過多噴射フラグXQP1の値は「１」であり且つ第２燃料過多噴射フラグXQP2の値は「１」である。よって、ＣＰＵ８１は、ステップ２３０５にて「Ｎｏ」と判定してステップ２３１０に進む。
【０５５４】
ＣＰＵ８１は、ステップ２３１０にて、第１燃料過多噴射フラグXQP1の値が「１」であり且つ第２燃料過多噴射フラグXQP2の値が「１」であるか否かを判定する。現時点における第１燃料過多噴射フラグXQP1の値は「１」であり且つ第２燃料過多噴射フラグXQP2の値は「１」であるので、ＣＰＵ８１は、ステップ２３１０にて「Ｙｅｓ」と判定してステップ２３１５に進む。
【０５５５】
ＣＰＵ８１は、ステップ２３１５にて、第３燃料過多噴射フラグXQP3の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
【０５５６】
次いで、ＣＰＵ８１は、所定時間が経過する毎に、図２４にフローチャートによって示した「第３ＮＯｘ濃度平均ずれ取得ルーチン」を繰り返し実行するようになっている。ＣＰＵ８１は、このルーチンにより、第１状態判定ルーチンにおける第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値と、第２状態判定ルーチンにおける第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値と、の平均値を取得する。以下、便宜上、この平均値を「第３ＮＯｘ濃度平均ずれΔNOxave3」とも称呼する。
【０５５７】
具体的に述べると、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始してステップ２４１０に進み、第３燃料過多噴射フラグXQP3の値、第３燃料過少噴射フラグXQN3の値、第３吸入空気量過多検出フラグXGAP3の値、および、第３吸入空気量過少検出フラグXGAN3の値の少なくとも１つが「１」であるか否かを判定する。現時点における第３燃料過多噴射フラグXQP3の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定してステップ２４２０に進む。
【０５５８】
ＣＰＵ８１は、ステップ２４２０にて、下記（１７）式に第１状態判定ルーチンにおける第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値および第２状態判定ルーチンにおける第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値を適用することにより、第３ＮＯｘ濃度平均ずれΔNOxave3を取得する。
【０５５９】
ΔNOxave3＝｛ΔNOx（Qtgt2）+ΔNOx（Ocon1）｝／2    ・・・（１７）
【０５６０】
その後、ＣＰＵ８１は、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０５６１】
ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、ステップ２１１０を経由してステップ２１２０に進む。現時点における第３燃料過多噴射フラグXQP3の値は「１」であるので、ＣＰＵ８１は、ステップ２１２０にて「Ｙｅｓ」と判定し、ステップ２１５０に進む。
【０５６２】
ＣＰＵ８１は、ステップ２１５０にて、下記（１８）式に第３ＮＯｘ濃度平均ずれΔNOxave3の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Qcを取得する。下記（１８）式において、M1は所定の負の係数である。そのため、燃料噴射量補正量Qcは負の数となる。
【０５６３】
Qc＝M1・｜ΔNOxave3｜    ・・・（１８）
【０５６４】
次いで、ＣＰＵ８１は、ステップ２１６０に進み、燃料噴射量の目標値Qtgtに上記燃料噴射量補正量Qcを加算する。燃料噴射量補正量Qcは負の数であるので、実際には、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ減少せしめられる。
【０５６５】
次いで、ＣＰＵ８１は、ステップ２１７０に進み、燃料噴射量補正量の積算値Qcsumに燃料噴射量補正量Qcを加算する（Qcは負の数であるので、実際には減算する）ことにより、新たな燃料噴射量補正量の積算値Qcsumを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Qcsumの値は、バックアップＲＡＭ８４に格納される。
【０５６６】
次いで、ＣＰＵ８１は、ステップ２１８０に進み、第３燃料過多噴射フラグXQP3の値に「０」を格納し、第３燃料過少噴射フラグXQN3の値に「０」を格納する。
【０５６７】
次いで、ＣＰＵ８１は、ステップ２１４０に進み、上述したように補正された目標値Qtgtだけの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、その燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Qtgtだけの燃料が燃料噴射気筒内に噴射される。その後、ＣＰＵ８１は、ステップ２１９５に進んで本ルーチンを一旦終了する。
【０５６８】
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが正である」と判定されているとき（すなわち、第３燃料過多噴射フラグXQP3の値が「１」であるとき）、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ補正（減少）せしめられる。この結果、燃料噴射量の実際値Qactは目標値Qtgtに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが正である」と判定されている場合に実行される処理である。
【０５６９】
（場合３−２）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが負である」と判定されている場合
この場合、第１燃料過少噴射フラグXQN1の値は「１」に設定されており（上記場合１−４を参照。）、かつ、第２燃料過少噴射フラグXQN2の値は「１」に設定されている（上記場合２−２を参照）。
【０５７０】
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５およびステップ２３１０を経由し、ステップ２３２０に進む。
【０５７１】
ＣＰＵ８１は、ステップ２３２０にて第１燃料過少噴射フラグXQN1の値が「１」であり且つ第２燃料過少噴射フラグXQN2の値が「１」であるか否かを判定する。現時点における第１燃料過少噴射フラグXQN1の値は「１」であり且つ第２燃料過少噴射フラグXQN2の値は「１」であるので、ＣＰＵ８１は、ステップ２３２０にて「Ｙｅｓ」と判定してステップ２３２５に進む。
【０５７２】
ＣＰＵ８１は、ステップ２３２５にて、第３燃料過少噴射フラグXQN3の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
【０５７３】
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３燃料過少噴射フラグXQN3の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進む。ＣＰＵ８１は、ステップ２４２０にて第３ＮＯｘ濃度平均ずれΔNOxave3を取得し、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０５７４】
さらに、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、ステップ２１１０を経由してステップ２１２０に進む。現時点における第３燃料過多噴射フラグXQP3の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２１２０にて「Ｎｏ」と判定し、ステップ２１３０に進む。
【０５７５】
現時点における第３燃料過少噴射フラグXQN3の値は「１」であるので、ＣＰＵ８１は、ステップ２１３０にて「Ｙｅｓ」と判定してステップ２１９０に進む。
【０５７６】
ＣＰＵ８１は、ステップ２１９０にて、下記（１９）式に第３ＮＯｘ濃度平均ずれΔNOxave3の値を適用することにより、燃料噴射量を補正するための燃料噴射量補正量Qcを取得する。下記（１９）式において、M2は所定の正の係数である。そのため、燃料噴射量補正量Qcは正の数となる。
【０５７７】
Qc＝M2・｜ΔNOxave2｜    ・・・（１９）
【０５７８】
次いで、ＣＰＵ８１は、ステップ２１６０に進み、燃料噴射量の目標値Qtgtに燃料噴射量補正量Qcを加算する。上述したように燃料噴射量補正量Qcは正の数であるので、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ増大せしめられる。
【０５７９】
次いで、ＣＰＵ８１は、ステップ２１７０に進み、燃料噴射量補正量の積算値Qcsumに燃料噴射量補正量Qcを加算する（Qcは正の数であるので、実際に加算する）ことにより、新たな燃料噴射量補正量の積算値Qcsumを取得（更新）する。取得（更新）された燃料噴射量補正量の積算値Qcsumの値は、バックアップＲＡＭ８４に格納される。
【０５８０】
次いで、ＣＰＵ８１は、ステップ２１８０に進み、第３燃料過多噴射フラグXQP3の値に「０」を格納し、第３燃料過少噴射フラグXQN3の値に「０」を格納する。
【０５８１】
次いで、ＣＰＵ８１は、ステップ２１４０に進み、補正された目標値Qtgtの燃料を燃料噴射気筒に設けられている燃料噴射装置２２から噴射するように、燃料噴射装置２２に指示を与える。すなわち、このとき、補正された目標値Qtgtの燃料が燃料噴射装置２２に噴射（噴射）される。その後、ＣＰＵ８１は、ステップ２１９５に進んで本ルーチンを一旦終了する。
【０５８２】
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが負である」と判定されているとき（すなわち、第３燃料過少噴射フラグXQN3の値が「１」であるとき）、燃料噴射量の目標値Qtgtは燃料噴射量補正量Qcだけ補正（増大）せしめられる。この結果、燃料噴射量の実際値Qactは目標値Qtgtに近づけられるので、燃料噴射量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「燃料噴射量ずれが負である」と判定されている場合に実行される処理である。
【０５８３】
（場合３−３）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが正である」と判定されている場合
この場合、第１吸入空気量過多検出フラグXGAP1の値は「１」に設定されており（上記場合１−２を参照。）、かつ、第２吸入空気量過多検出フラグXGAP2の値は「１」に設定されている（上記場合２−４を参照）。
【０５８４】
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５、ステップ２３１０およびステップ２３２０を経由し、ステップ２３３０に進む。
【０５８５】
ＣＰＵ８１は、ステップ２３３０にて第１吸入空気量過多検出フラグXGAP1の値が「１」であり且つ第２吸入空気量過多検出フラグXGAP2の値が「１」であるか否かを判定する。現時点における第１吸入空気量過多検出フラグXGAP1の値は「１」であり且つ第２吸入空気量過多検出フラグXGAP2の値は「１」であるので、ＣＰＵ８１は、ステップ２３３０にて「Ｙｅｓ」と判定してステップ２３３５に進む。
【０５８６】
ＣＰＵ８１は、ステップ２３３５にて、第３吸入空気量過多検出フラグXGAP3の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
【０５８７】
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３吸入空気量過多検出フラグXGAP3の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進む。ＣＰＵ８１は、ステップ２４２０にて第３ＮＯｘ濃度平均ずれΔNOxave3を取得し、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０５８８】
さらに、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始すると、ステップ２２１０を経由してステップ２２２０に進む。現時点における第３吸入空気量過多検出フラグXGAP3の値は「１」であるので、ＣＰＵ８１は、ステップ２２２０にて「Ｙｅｓ」と判定してステップ２２４０に進む。
【０５８９】
ＣＰＵ８１は、ステップ２２４０にて、下記（２０）式に第３ＮＯｘ濃度平均ずれΔNOxave3の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Gacを取得する。下記（２０）式において、M3は所定の負の係数である。そのため、吸入空気量補正量Gacは負の数となる。
【０５９０】
Gac＝M3・｜ΔNOxave3｜    ・・・（２０）
【０５９１】
次いで、ＣＰＵ８１は、ステップ２２５０に進み、吸入空気量の測定値Gamsrに吸入空気量補正量Gacを加算する。吸入空気量補正量Gacは負の数であるので、実際には、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ減少せしめられる。
【０５９２】
次いで、ＣＰＵ８１は、ステップ２２６０に進み、吸入空気量補正量の積算値Gacsumに吸入空気量補正量Gacを加算する（Gacは負の数であるので、実際には減算する）ことにより、新たな吸入空気量補正量の積算値Gacsumを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Gacsumの値は、バックアップＲＡＭ８４に格納される。
【０５９３】
次いで、ＣＰＵ８１は、ステップ２２７０に進み、第３吸入空気量過多検出フラグXGAP3の値に「０」を格納し、第３吸入空気量過少検出フラグXGAN3の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ２２９５に進んで本ルーチンを一旦終了する。
【０５９４】
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが正である」と判定されているとき（すなわち、第３吸入空気量過多検出フラグXGAP1の値が「１」であるとき）、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ補正（減少）せしめられる。この結果、吸入空気量の測定値Gamsrは実際値Gaactに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが正である」と判定されている場合に実行される処理である。
【０５９５】
（場合３−４）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「少なくとも吸入空気量ずれが負である」と判定されている場合
この場合、第１吸入空気量過少検出フラグXGAN1の値は「１」に設定されており（上記場合１−３を参照。）、かつ、第２吸入空気量過少検出フラグXGAN2の値は「１」に設定されている（上記場合２−１を参照）。
【０５９６】
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５、ステップ２３１０、ステップ２３２０およびステップ２３３０を経由し、ステップ２３４０に進む。
【０５９７】
ＣＰＵ８１は、ステップ２３４０にて第１吸入空気量過少検出フラグXGAN1の値が「１」であり且つ第２吸入空気量過少検出フラグXGAN2の値が「１」であるか否かを判定する。現時点における第１吸入空気量過少検出フラグXGAN1の値は「１」であり且つ第２吸入空気量過少検出フラグXGAN2の値は「１」であるので、ＣＰＵ８１は、ステップ２３４０にて「Ｙｅｓ」と判定してステップ２３４５に進む。
【０５９８】
ＣＰＵ８１は、ステップ２３４５にて、第３吸入空気量過多検出フラグXGAP3の値に「１」を格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
【０５９９】
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３吸入空気量過少検出フラグXGAN3の値は「１」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｙｅｓ」と判定し、ステップ２４２０に進む。ＣＰＵ８１は、ステップ２４２０にて第３ＮＯｘ濃度平均ずれΔNOxave3を取得し、ステップ２４９５に進んで本ルーチンを一旦終了する。
【０６００】
ここで、ＣＰＵ８１は、所定のタイミングにて図６のステップ２２００から処理を開始すると、ステップ２２１０を経由してステップ２２２０に進む。現時点における第３吸入空気量過多検出フラグXGAP3の値は上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２２２０にて「Ｎｏ」と判定してステップ２２３０に進む。
【０６０１】
現時点における第３吸入空気量過少検出フラグXGAN3の値は「１」であるので、ＣＰＵ８１は、ステップ２２３０にて「Ｙｅｓ」と判定してステップ２２８０に進む。
【０６０２】
ＣＰＵ８１は、ステップ２２８０にて、下記（２１）式に第３ＮＯｘ濃度平均ずれΔNOxave3の値を適用することにより、吸入空気量を補正するための吸入空気量補正量Gacを取得する。下記（２１）式において、M4は所定の正の係数である。そのため、吸入空気量補正量Gacは正の数となる。
【０６０３】
Gac＝M4・｜ΔNOxave3｜    ・・・（２１）
【０６０４】
次いで、ＣＰＵ８１は、ステップ２２５０に進み、吸入空気量の測定値Gamsrに吸入空気量補正量Gacを加算する。吸入空気量補正量Gacは正の数であるので、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ増大せしめられる。
【０６０５】
次いで、ＣＰＵ８１は、ステップ２２６０に進み、吸入空気量補正量の積算値Gacsumに吸入空気量補正量Gacを加算する（Gacは正の数であるので、実際に加算する）ことにより、新たな吸入空気量補正量の積算値Gacsumを取得（更新）する。取得（更新）された吸入空気量補正量の積算値Gacsumの値は、バックアップＲＡＭ８４に格納される。
【０６０６】
次いで、ＣＰＵ８１は、ＣＰＵ８１は、ステップ２２７０に進み、第３吸入空気量過多検出フラグXGAP3の値に「０」を格納し、第３吸入空気量過少検出フラグXGAN3の値に「０」を格納する。その後、ＣＰＵ８１は、ステップ２２９５に進んで本ルーチンを一旦終了する。
【０６０７】
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて少なくとも吸入空気量ずれが負であると判定されているとき（すなわち、第３吸入空気量過少検出フラグXGAN3の値が「１」であるとき）、吸入空気量の測定値Gamsrは吸入空気量補正量Gacだけ補正（増大）せしめられる。この結果、吸入空気量の測定値Gamsrは実際値Gaactに近づけられるので、吸入空気量ずれの大きさが低減される。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて少なくとも吸入空気量ずれが負であると判定されている場合に実行される処理である。
【０６０８】
（場合３−５）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである」と判定されている場合
この場合、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、および、第１他異常発生フラグXOTH1の値、の全ては「０」に設定されている（上記場合１−５を参照。）。さらに、この場合、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、および、第２他異常発生フラグXOTH2の値、の全ては「０」に設定されている（場合２−５を参照。）。
【０６０９】
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３００に続くステップ２３０５にて「Ｙｅｓ」と判定し、ステップ２３５０に進む。
【０６１０】
ＣＰＵ８１は、ステップ２３５０〜ステップ２３６５の処理をこの順に実行する。具体的に述べると、ＣＰＵ８１は、ステップ２３５０にて第３燃料過多噴射フラグXQP3の値に「０」を、ステップ２３５５にて第３燃料過少噴射フラグXQN3の値に「０」を、ステップ２３６０にて第３吸入空気量過多検出フラグXGAP3の値に「０」を、ステップ２３６５にて第３吸入空気量過少検出フラグXGAN3の値に「０」を、格納する。その後、ＣＰＵ８１は、ステップ２３９５に進んで本ルーチンを一旦終了する。
【０６１１】
ここで、ＣＰＵ８１は、所定のタイミングにて図２４のステップ２４００から処理を開始すると、ステップ２４１０に進む。現時点における第３燃料過多噴射フラグXQP3の値、第３燃料過少噴射フラグXQN3の値、第３吸入空気量過多検出フラグXGAP3の値、および、第３吸入空気量過少検出フラグXGAN3の値の全ては、上記第３初期設定仮定に従えば「０」であるので、ＣＰＵ８１は、ステップ２４１０にて「Ｎｏ」と判定してステップ２４９５に直接進んで本ルーチンを一旦終了する。
【０６１２】
ここで、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、現時点における第３燃料過多噴射フラグXQP3の値は「０」であり且つ第３燃料過少噴射フラグXQN3の値は「０」であるので、ステップ２１１０、ステップ２１２０、ステップ２１３０およびステップ２１４０を経由してステップ２１９５に進んで本ルーチンを一旦終了する。
【０６１３】
さらに、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始すると、現時点における第３吸入空気量過多検出フラグXGAP3の値は「０」であり且つ第３吸入空気量過少検出フラグXGAN3の値は「０」であるので、ステップ２２１０、ステップ２２２０およびステップ２２３０を経由してステップ２２９５に進んで本ルーチンを一旦終了する。
【０６１４】
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである」と判定されているとき（すなわち、第３燃料過多噴射フラグXQP3の値が「０」であり且つ第３燃料過少噴射フラグXQN3の値が「０」であるとき）、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれがゼロであり且つ燃料噴射量ずれがゼロである」と判定されている場合に実行される処理である。
【０６１５】
（場合３−６）第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定されている場合
この場合、第１他異常発生フラグXOTH1の値は「１」に設定されており（上記場合１−６を参照。）、かつ、第２他異常発生フラグXOTH2の値は「１」に設定されている（上記場合２−６を参照）。
【０６１６】
よって、この場合、ＣＰＵ８１は、図２３のステップ２３００から処理を開始すると、ステップ２３０５、ステップ２３１０、ステップ２３２０、ステップ２３３０およびステップ２３４０を経由し、ステップ２３７０に進む。
【０６１７】
ＣＰＵ８１は、ステップ２３７０にて、第３他異常発生フラグXOTH3の値に「１」を格納する。次いで、ＣＰＵ８１は、接続指標Ａを経由してステップ２３５０に進む。ＣＰＵ８１は、ステップ２３５０〜ステップ２３６５を経由してステップ２３９５に進み、本ルーチンを一旦終了する。よって、この場合、第３燃料過多噴射フラグXQP3の値は「０」であり、第３燃料過少噴射フラグXQN3の値は「０」であり、第３吸入空気量過多検出フラグXGAP3の値は「０」であり、第３吸入空気量過少検出フラグXGAN3の値は「０」である。
【０６１８】
ここで、ＣＰＵ８１は、図２４のステップ２４００から処理を開始すると、ステップ２４００に続くステップ２４１０にて「Ｎｏ」と判定し、ステップ２４９５に直接進んで本ルーチンを一旦終了する。
【０６１９】
ここで、ＣＰＵ８１は、所定のタイミングにて図２１のステップ２１００から処理を開始すると、ステップ２１１０、ステップ２１２０、ステップ２１３０およびステップ２１４０を経由してステップ２１９５に進んで本ルーチンを一旦終了する。
【０６２０】
さらに、ＣＰＵ８１は、所定のタイミングにて図２２のステップ２２００から処理を開始すると、ステップ２２１０、ステップ２２２０およびステップ２２３０を経由してステップ２２９５に進んで本ルーチンを一旦終了する。
【０６２１】
このように、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定されているとき（すなわち、第１他異常発生フラグXOTH1の値が「１」であるとき）、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、第１状態判定ルーチンおよび第２状態判定ルーチンの双方にて「吸入空気量ずれおよび燃料噴射量ずれ以外のずれが生じている」と判定されている場合に実行される処理である。
【０６２２】
（場合３−７）第１状態判定ルーチンによる判定の結果と、第２状態判定ルーチンによる判定の結果と、が異なる場合
この場合、例えば、第１状態判定ルーチンにて「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」と判定されれば、第２状態判定ルーチンにて「燃料噴射量ずれがゼロであり且つ吸入空気量ずれがゼロである」とは判定されない。そのため、第１燃料過多噴射フラグXQP1の値、第１燃料過少噴射フラグXQN1の値、第１吸入空気量過多検出フラグXGAP1の値、第１吸入空気量過少検出フラグXGAN1の値、第１他異常発生フラグXOTH1の値、第２燃料過多噴射フラグXQP2の値、第２燃料過少噴射フラグXQN2の値、第２吸入空気量過多検出フラグXGAP2の値、第２吸入空気量過少検出フラグXGAN2の値、および、第２他異常発生フラグXOTH2の値、のうちの少なくとも１つは「１」である。
【０６２３】
よって、ＣＰＵ８１は、図２３のステップ２３００から処理を開始ステップ２３０５に進むと、ステップ２３０５にて「Ｎｏ」と判定してステップ２３１０に進む。
【０６２４】
この場合３−７において、第１燃料過多噴射フラグXQP1の値および第２燃料過多噴射フラグXQP2の値のうちの一方が「１」であれば、他方は「０」である。さらに、第１燃料過少噴射フラグXQN1の値および第２燃料過少噴射フラグXQN2の値のうちの一方が「１」であれば、他方は「０」である。加えて、第１吸入空気量過多検出フラグXGAP1の値および第２吸入空気量過多検出フラグXGAP2の値のうちの一方が「１」であれば、他方は「０」である。さらに加えて、第１吸入空気量過少検出フラグXGAN1の値および第２吸入空気量過少検出フラグXGAN2の値のうちの一方が「１」であれば、他方は「０」である。
【０６２５】
よって、ＣＰＵ８１は、ステップ２３１０、ステップ２３２０、ステップ２３３０およびステップ２３４０の全てにて「Ｎｏ」と判定してステップ２３７０に進む。
【０６２６】
ＣＰＵ８１は、ステップ２３７０にて第３他異常発生フラグXOTH3の値に「１」を格納し、接続指標Ａを経由してステップ２３５０に進む。次いで、ＣＰＵ８１は、ステップ２３５０〜ステップ２３６５の処理をこの順に実行し、ステップ２３９５に進んで本ルーチンを一旦終了する。
【０６２７】
このように、この場合３−７においては、上記場合３−６と同様、第３他異常発生フラグXOTH3の値は「１」であり、第３燃料過多噴射フラグXQP3の値は「０」であり、第３燃料過少噴射フラグXQN3の値は「０」であり、第３吸入空気量過多検出フラグXGAP3の値は「０」であり、第３吸入空気量過少検出フラグXGAN3の値は「０」である。
【０６２８】
したがって、上記場合３−６にて説明したように、この場合において燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrは補正されない。以上が、第１状態判定ルーチンによる判定の結果と第２状態判定ルーチンによる判定の結果とが異なる場合に実行される処理である。
【０６２９】
以上、場合３−１〜３−７に場合を分けて説明したように、第３装置は、第１状態判定方法に基づく判定の結果と第２状態判定方法に基づく判定の結果とが「一致している」とき、それら判定の結果に応じて吸入空気量の測定値Gamsrおよび燃料噴射量の目標値Qtgtを補正する。一方、第３装置は、第１状態判定方法に基づく判定の結果と第２状態判定方法に基づく判定の結果とが「異なる」とき、吸入空気量の測定値Gamsrおよび燃料噴射量の目標値Qtgtを補正しない。
【０６３０】
さらに、ＣＰＵ８１は、所定のタイミングにて図１１のステップ１１００から処理を開始すると、ステップ１１１０に進み、吸入空気量補正量の積算値Gacsumが所定の閾値Gacsumthよりも大きいか否かを判定する。
【０６３１】
吸入空気量補正量の積算値Gacsumが上記閾値Gacsumthよりも大きければ、ＣＰＵ８１は、ステップ１１１０にて「Ｙｅｓ」と判定してステップ１１２０に進む。ＣＰＵ８１は、ステップ１１２０にて「吸入空気量センサ７１が異常である」旨を図示しない表示装置に表示させ、ステップ１１３０に進む。
【０６３２】
これに対し、吸入空気量補正量の積算値Gacsumが上記閾値Gacsumth以下であれば、ＣＰＵ８１は、ステップ１１１０にて「Ｎｏ」と判定してステップ１１３０に直接進む。すなわち、「吸入空気量センサ７１が異常である」旨の表示はなされない。
【０６３３】
ＣＰＵ８１は、ステップ１１３０にて、燃料噴射量補正量の積算値Qcsumが所定の閾値Qcsumthよりも大きいか否かを判定する。
【０６３４】
燃料噴射量補正量の積算値Qcsumが上記閾値Qcsumthよりも大きければ、ＣＰＵ８１は、ステップ１１３０にて「Ｙｅｓ」と判定してステップ１１４０に進む。ＣＰＵ８１は、ステップ１１４０にて「燃料噴射装置２２が異常である」旨を図示しない表示装置に表示させ、ステップ１１９５に進んで本ルーチンを一旦終了する。
【０６３５】
これに対し、燃料噴射量補正量の積算値Qcsumが上記閾値Qcsumth以下であれば、ＣＰＵ８１は、ステップ１１３０にて「Ｎｏ」と判定してステップ１１９５に直接進んで本ルーチンを一旦終了する。すなわち、「燃料噴射装置２２が異常である」旨の表示はなされない。
【０６３６】
ところで、上述したように、第３燃料過多噴射フラグXQP3の値および第３燃料過少噴射フラグXQN3の値は、燃料噴射量の目標値Qtgtが補正された後に「０」に再設定される（図２１のステップ２１８０を参照。）。そのため、例えば燃料噴射量ずれ「のみ」が生じている場合、一の時点において上記処理が実行されることによって燃料噴射量ずれが十分に補正されなければ（すなわち、燃料噴射量ずれがゼロにならなければ）、その一の時点以降の他の時点において第３状態判定ルーチンが実行されたときに、第３燃料過多噴射フラグXQP3の値または第３燃料過少噴射フラグXQN3の値が「１」に再び設定される。その結果、上記他の時点においても燃料噴射量の目標値Qtgtが補正される。
【０６３７】
一方、上記一の時点において燃料噴射量ずれが十分に補正されれば、上記他の時点において第３状態判定ルーチンが実行されたときに第３燃料過多噴射フラグXQP3の値および第３燃料過少噴射フラグXQN3の値が「１」に設定されない。その結果、他の時点において燃料噴射量の目標値Qtgtは補正されない。このように、第３装置は、燃料噴射量ずれ「のみ」が生じている場合、燃料噴射量ずれが十分に補正されるまで燃料噴射量の目標値Qtgtを繰り返し補正する。
【０６３８】
さらに、第３吸入空気量過多検出フラグXGAP3の値および第３吸入空気量過少検出フラグXGAN3の値は、吸入空気量の測定値Gamsrが補正された後に「０」に再設定される（図２２のステップ２２７０を参照。）。上記説明から明らかなように、第３装置は、吸入空気量ずれ「のみ」が生じている場合、吸入空気量ずれが十分に補正されるまで吸入空気量の測定値Gamsrを補正することを繰り返す。
【０６３９】
一方、吸入空気量ずれおよび燃料噴射量ずれの「双方」が生じている場合、例えば上記一の時点において「少なくとも吸入空気量ずれが生じている」と判定されれば、吸入空気量の測定値Gamsrが補正された後に第３吸入空気量過多検出フラグXGAP3の値および第３吸入空気量過少検出フラグXGAN3の値が「０」に再設定される。この補正によって吸入空気量ずれが十分に補正されなければ、上記他の時点において再び「少なくとも吸入空気量ずれが生じている」と判定され、吸入空気量の測定値Gamsrが補正される。
【０６４０】
一方、上記一の時点において実行された補正によって吸入空気量ずれが十分に補正されれば、上記他の時点において「燃料噴射量ずれが生じている」と判定され、燃料噴射量の目標値Qtgtが補正される。その後、燃料噴射量ずれが十分に補正されるまで、燃料噴射量の目標値Qtgtが補正されることが繰り返される。
【０６４１】
このように、第３装置は、吸入空気量ずれおよび燃料噴射量ずれの「一方」が生じている場合であっても、それらの「双方」が生じている場合であっても、燃料噴射量ずれおよび吸入空気量ずれが十分に補正されるまで、上記補正を繰り返し実行する。
【０６４２】
＜装置の作用および効果＞
第３装置は、第１状態判定ルーチンによる判定の結果および第２状態判定ルーチンによる判定の結果の「双方」に基づき、燃料噴射量ずれの状態および吸入空気量ずれの状態を判定する。したがって、第１状態判定ルーチンによる判定の結果および第２状態判定ルーチンによる判定の結果の「一方」に基づいてそれら状態を判定する場合に比べ、より正確にそれら状態を判定することができる。
【０６４３】
ところで、上述したように、上記第１実施形態〜第３実施形態の制御装置は、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロ」、「正」および「負」のいずれであるかを判定すると共に、その判定の結果に応じて燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrのうちの少なくとも一方を補正するように構成されている。すなわち、これら実施形態の制御装置は、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロ以外」であれば、燃料噴射量の目標値Qtgtおよび吸入空気量の測定値Gamsrのうちの少なくとも一方を補正する。
【０６４４】
しかし、例えば、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロを含む所定の範囲内の値」であることがエミッション排出量を低減する観点において許される場合、本発明の制御装置は、燃料噴射量ずれおよび吸入空気量ずれのうちの少なくとも一方が「ゼロを含む所定の範囲内の値」、「その所定の範囲内の最大値よりも大きい値」および「その所定の範囲内の最小値よりも小さい値」のいずれであるかを判定するように構成されてもよい。
【０６４５】
このような制御装置は、例えば、図９のルーチンを、ステップ８１６にて「第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも「所定値以上」大きいか否か」が判定され、ステップ８２４にて「第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値よりも「所定値以上」小さいか否か」が判定され、ステップ８３２にて「第１ＮＯｘ濃度ずれΔNOx（Qtgt1）の値が「ゼロを含む所定の範囲内の値」であり且つ第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値が「ゼロを含む所定の範囲内の値」であるか否か」が判定されるように変更することにより、構成され得る。さらに、このような制御装置は、例えば、図９のルーチンを、ステップ８１８およびステップ８２６にて「第２ＮＯｘ濃度ずれΔNOx（Qtgt2）の値が「所定値以上」であるか否か」が判定されるように変更することにより、構成され得る。
【０６４６】
加えて、このような制御装置は、例えば、図１９のルーチンを、ステップ１８１６にて「第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも「所定値以上」大きいか否か」が判定され、ステップ１８２４にて「第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値よりも「所定値以上」小さいか否か」が判定され、ステップ１８３２にて「第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が「ゼロを含む所定の範囲内の値」であり且つ第２ＮＯｘ濃度ずれΔNOx（Ocon2）の値が「ゼロを含む所定の範囲内の値」であるか否か」が判定されるように変更することにより、構成され得る。さらに、このような制御装置は、例えば、図１９のルーチンを、ステップ１８１８およびステップ１８２６にて「第１ＮＯｘ濃度ずれΔNOx（Ocon1）の値が「所定値以上」であるか否か」が判定されるように変更することにより、構成され得る。
【０６４７】
ところで、図２に示す上記第１の関係R1（Qtgt，ΔNOx）から推定されるように、「燃料噴射量ずれがＮＯｘ濃度ずれΔNOxに実質的に影響を与えない燃料噴射量の目標値Qtgt」が存在し得る。換言すると、「吸入空気量ずれがゼロまたは所定の範囲内の値であり且つ燃料噴射量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれΔNOxがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量が、存在し得る。以下、便宜上、この燃料噴射量を「特異燃料噴射量」とも称呼する。
【０６４８】
燃料噴射量の目標値Qtgtが「特異燃料噴射量」であるときにＮＯｘ濃度ずれが生じた場合、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、そのＮＯｘ濃度ずれは「吸入空気量ずれ」に起因すると一義的に判定することができる。すなわち、この場合、上記第１実施形態において用いられている「燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量」を用いることなく、燃料噴射量の目標値Qtgtが所定値（特異燃料噴射量）であるときのＮＯｘ濃度ずれΔNOx「のみ」に基づき、状態判定を行うことができる。
【０６４９】
さらに、上記同様、「吸入空気量ずれがＮＯｘ濃度ずれΔNOxに実質的に影響を与えない燃料噴射量の目標値Qtgt」が存在し得る。換言すると、「燃料噴射量ずれがゼロまたは範囲内の値であり且つ吸入空気量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される燃料噴射量が、存在し得る。上記同様、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、この燃料噴射量を利用することによって「燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量」を用いることなく状態判定を行うことができる。
【０６５０】
なお、このような制御装置は、例えば、図９のルーチンを、ステップ８１６、ステップ８２４、ステップ８３２およびステップ８４２を削除するように変更することにより、構成され得る。
【０６５１】
加えて、図１２に示す上記第２の関係R2（Ocon，ΔNOx）から推定されるように、「燃料噴射量ずれがＮＯｘ濃度ずれΔNOxに実質的に影響を与えない吸気酸素濃度Ocon」が存在し得る。換言すると、「吸入空気量ずれがゼロまたは所定の範囲内の値であり且つ燃料噴射量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれΔNOxがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度が、存在し得る。以下、便宜上、この吸気酸素濃度を「特異吸気酸素濃度」とも称呼する。
【０６５２】
吸気酸素濃度Oconが「特異吸気酸素濃度」であるときにＮＯｘ濃度ずれが生じた場合、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、そのＮＯｘ濃度ずれは「吸入空気量ずれ」に起因すると一義的に判定することができる。すなわち、この場合、上記第２実施形態において用いられている「吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量」を用いることなく、吸気酸素濃度Oconが所定値（特異吸気酸素濃度）であるときのＮＯｘ濃度ずれΔNOx「のみ」に基づき、状態判定を行うことができる。
【０６５３】
さらに、上記同様、「吸入空気量ずれがＮＯｘ濃度ずれΔNOxに実質的に影響を与えない吸気酸素濃度Ocon」が存在し得る。換言すると、「燃料噴射量ずれがゼロまたは範囲内の値であり且つ吸入空気量ずれがゼロまたは所定の範囲内の値でないときにＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となる」ものと推定される吸気酸素濃度が、存在し得る。上記同様、燃料噴射量ずれおよび吸入空気量ずれ以外のずれが生じていないことがあらかじめ確認されていれば、この吸気酸素濃度を利用することによって「吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量」を用いることなく状態判定を行うことができる。
【０６５４】
なお、このような制御装置は、例えば、図１９のルーチンを、ステップ１８１６、ステップ１８２４、ステップ１８３２およびステップ１８４２を削除するように変更することにより、構成され得る。
【０６５５】
（実施形態の総括）
以上、説明したように、本発明の第１実施形態〜第３実施形態に係る制御装置は、
燃料噴射量の目標値Qtgtを決定する燃料噴射量目標値決定手段（図５、図１６および図２１のルーチン）と、
吸気酸素濃度関連パラメータの測定値、推定値または目標値（第１実施形態〜第３実施形態においては、吸入空気量の測定値Gamsr）を取得する吸気酸素濃度関連パラメータ取得手段（図６、図１７および図２２のルーチン）と、
前記吸気酸素濃度関連パラメータGamsrに基づいて前記吸気酸素濃度Oconを取得する吸気酸素濃度取得手段（図８のステップ８０８および図１８のステップ１８０８）と、
ＮＯｘ濃度の測定値または推定値（第１実施形態〜第３実施形態においては、ＮＯｘ濃度の測定値NOxmsr）を取得するＮＯｘ濃度取得手段（図８のステップ８０４および図１８のステップ１８０８）と、
所定のＮＯｘ参照濃度NOxrefに対する前記ＮＯｘ濃度の測定値または推定値NOxmsrの差を表すＮＯｘ濃度ずれΔNOxの前記燃料噴射量の目標値Qtgtが所定の範囲内（第１実施形態におけるQtgt1≦Qtgt≦Qtgt2）にて増大したときの変化量および前記燃料噴射量の目標値Qtgtが所定の第１の値（第１実施形態におけるQtgt2）であるときの前記ＮＯｘ濃度ずれΔNOx（Qtgt2）を含む第１の判定指標、ならびに、前記吸気酸素濃度Oconが所定の範囲内（第２実施形態におけるOcon1≦Qtgt≦Ocon2）にて増大したときの前記ＮＯｘ濃度ずれΔNOxの変化量および前記吸気酸素濃度Oconが所定の第２の値（第２実施形態におけるOcon1）であるときの前記ＮＯｘ濃度ずれΔNOx（Ocon1）を含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値Qtgtに対する該燃料噴射量の実際値Qactの差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値Gaactに対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrの差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段（図８および図９のルーチン、ならびに、図１８および図１９のルーチン）と、
を備える。
【０６５６】
さらに、上述したように、本発明の第１実施形態〜第３実施形態に係る制御装置は、「燃料噴射量の目標値Qtgtが増大したときのＮＯｘ濃度ずれΔNOxの変化量」および「吸気酸素濃度Oconが増大したときのＮＯｘ濃度ずれΔNOxの変化量」を用いることなく状態判定を行うことができるように構成され得る。
【０６５７】
具体的に述べると、上記各実施形態に係る制御装置は、
燃料噴射量の目標値Qtgtを決定する燃料噴射量目標値決定手段（図５、図１６および図２１のルーチン）と、
吸気酸素濃度関連パラメータの測定値、推定値または目標値（第１実施形態〜第３実施形態においては、吸入空気量の測定値Gamsr）を取得する吸気酸素濃度関連パラメータ取得手段（図６、図１７および図２２のルーチン）と、
前記吸気酸素濃度関連パラメータGamsrに基づいて前記吸気酸素濃度Oconを取得する吸気酸素濃度取得手段（図８のステップ８０８および図１８のステップ１８０８）と、
ＮＯｘ濃度の測定値または推定値（第１実施形態〜第３実施形態においては、ＮＯｘ濃度の測定値NOxmsr）を取得するＮＯｘ濃度取得手段（図８のステップ８０４および図１８のステップ１８０８）と、
所定のＮＯｘ参照濃度NOxrefに対する前記ＮＯｘ濃度の測定値または推定値NOxmsrの差を表すＮＯｘ濃度ずれΔNOxであって前記燃料噴射量の目標値Qtgtが所定の第１の値（特異燃料噴射量）であるときのＮＯｘ濃度ずれΔNOxを含む第１の判定指標、および、前記吸気酸素濃度Oconが所定の第２の値（特異吸気酸素濃度）であるときの前記ＮＯｘ濃度ずれΔNOxを含む第２の判定指標、のうちの少なくとも一方に基づき、前記燃料噴射量の目標値Qtgtに対する該燃料噴射量の実際値Qactの差を表す燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータの実際値Gaactに対する該吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrの差を表す吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する状態判定手段であって、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量（特異燃料噴射量）、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量、のうちの少なくとも一方を前記第１の値として採用すると共に、
前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度（特異吸気酸素濃度）、および、前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度、のうちの少なくとも一方を前記第２の値として採用する状態判定手段（図９のルーチンからステップ８１６、ステップ８２４、ステップ８３２およびステップ８４２を削除して得られるルーチン、ならびに、図１９のルーチンからステップ１８１６、ステップ１８２４、ステップ１８３２およびステップ１８４２を削除して得られるルーチン）と、
を備えるように構成され得る。
【０６５８】
さらに、上記各実施形態に係る制御装置は、
前記燃料噴射量ずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記燃料噴射量の目標値Qtgtを第１補正量Qcだけ減少するように補正し、
前記燃料噴射量ずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記燃料噴射量の目標値Qtgtを第２補正量Qcだけ増大するように補正し、
前記吸気酸素濃度関連パラメータずれが正または前記所定の範囲内の最大値よりも大きい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrを第３補正量Gacだけ減少するように補正し、
前記吸気酸素濃度関連パラメータずれが負または前記所定の範囲内の最小値よりも小さい値であると判定されていれば前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrを第４補正量Gacだけ増大するように補正する補正手段（第１実施形態における図５および図６のルーチン、第２実施形態における図１６および図１７のルーチン、ならびに、第３実施形態における図２１および図２２のルーチン）、を備える。
【０６５９】
加えて、上記実施形態（第３実施形態）に係る制御装置において、
前記状態判定手段は、
前記第１の判定指標および前記第２の判定指標の双方に基づき、前記燃料噴射量ずれがゼロ、正および負のいずれであるか、あるいは、前記燃料噴射量ずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、ならびに、前記吸気酸素濃度関連パラメータずれがゼロ、正および負のいずれであるか、あるいは、前記吸気酸素濃度関連パラメータずれがゼロを含む所定の範囲内の値、該所定の範囲内の最大値よりも大きい値および該所定の範囲内の最小値よりも小さい値のいずれであるか、のうちの少なくとも１つを判定する（図２３のルーチン）、ように構成されている。
【０６６０】
さらに加えて、上記各実施形態に係る制御装置において、
前記補正手段は、
前記ＮＯｘ濃度ずれΔNOxの大きさに応じて前記第１補正量Qcの大きさ、前記第２補正量Qcの大きさ、前記第３補正量Gacの大きさおよび前記第４補正量Gacの大きさを決定する、ように構成されている。
【０６６１】
さらに、上記各実施形態に係る制御装置において、
前記補正手段は、
前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記燃料噴射量の目標値Qtgtを補正することを繰り返し、前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であると判定されるまで前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrを補正することを繰り返す、ように構成されている（図５のステップ５８０と図９のルーチンとの組み合わせ、図１６のステップ１６８０と図１９のルーチンとの組み合わせ、および、図２１のステップ２１８０と図２３のルーチンとの組み合わせ）。
【０６６２】
加えて、上記各実施形態に係る制御装置は、
前記燃料が正常に噴射されているか否か、および、前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrが正常に取得されているか否か、のうちの少なくとも一方を判定する異常判定手段であって、前記第１補正量Qcおよび前記第２補正量Qcのうちの少なくとも一方が所定の閾値Qcsumthよりも大きいときに前記燃料が正常に噴射されていないと判定し、前記第３補正量Gacおよび前記第４補正量Gacのうちの少なくとも一方が所定の閾値Gacsumthよりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値が正常に取得されていないと判定する異常判定手段（図１１のルーチン）を備えている。
【０６６３】
より具体的に述べると、前記異常判定手段は、
前記燃料噴射量の目標値Qtgtが補正される毎に前記第１補正量Qcを積算し、
前記燃料噴射量の目標値Qtgtが補正される毎に前記第２補正量Qcを積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrが補正される毎に前記第３補正量Gacを積算し、
前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrが補正される毎に前記第４補正量Gacを積算すると共に、
前記積算された第１補正量の値Qcsumおよび前記積算された第２補正量の値Qcsumのうちの少なくとも一方が所定の閾値Qcsumthよりも大きいときに前記燃料が正常に噴射されていないと判定し、前記積算された第３補正量の値Gacsumおよび前記積算された第４補正量の値Gacsumのうちの少なくとも一方が所定の閾値Gacsumthよりも大きいときに前記吸気酸素濃度関連パラメータの測定値、推定値または目標値Gamsrが正常に取得されていないと判定する、ように構成されている（図１１のルーチン）。
【０６６４】
なお、上述したように、上記各実施形態に係る制御装置において、
前記吸気酸素濃度関連パラメータ取得手段は、
内燃機関１０に吸入される空気の量である吸入空気量Gaを前記吸気酸素濃度関連パラメータのうちの１つとして採用する、ように構成されている（図６、図１７および図２２のルーチン）。
【０６６５】
さらに、上記各実施形態に係る制御装置において、
前記第１の値Qtgt2および前記第２の値Ocon1は、
前記吸気酸素濃度と前記燃料噴射量とに基づいて前記ＮＯｘ濃度を推定するＮＯｘ濃度推定モデル（上記（５）式を参照。）を利用して定められる、ように構成されている。
【０６６６】
以上、本発明を詳細にまた特定の実施態様を参照して説明したが、本発明の精神と範囲を逸脱することなく様々な変形や修正を加えることができることは当業者にとって明らかである。
【０６６７】
例えば、上記各実施形態の制御装置は、「あらかじめ定められている、機関１０の運転状態とＮＯｘ濃度との関係（マップ）」に基づいてＮＯｘ参照濃度を取得している。しかし、本発明の制御装置は、上記「ＮＯｘ濃度推定モデル」を利用してＮＯｘ参照濃度を定めるように構成され得る。
【０６６８】
さらに、上記各実施形態の制御装置は、ＮＯｘ参照濃度NOxrefとＮＯｘ濃度の測定値NOxmsrとに基づいてＮＯｘ濃度ずれを定めている。しかし、本発明の制御装置は、ＮＯｘ参照濃度NOxrefとＮＯｘ濃度の「推定値」とに基づいてＮＯｘ濃度ずれΔNOxを定めるように構成され得る。
【０６６９】
加えて、上記各実施形態の制御装置は、吸気酸素濃度関連パラメータとして「吸入空気量」を採用している。しかし、本発明の制御装置は、吸気酸素濃度関連パラメータとして、燃料噴射量、機関回転速度、吸気通路内のガスの圧力、排気通路内のガスの圧力、燃料噴射時期、ＥＧＲ率、および、吸気酸素濃度測定装置の出力値などのうちの少なくとも１つを採用するように構成され得る。そして、これらの測定値、推定値または目標値を用いて上記状態判定が行われる。
【０６７０】
さらに、上記各実施形態の制御装置は、第１の判定指標に係る「第１の値」として上記所定の範囲（Qtgt1≦Qtgt≦Qtgt2）の最大値（Qtgt2）を採用している。しかし、第１の値は、この値に限定されない。例えば、本発明の制御装置は、上記所定の範囲に含まれる任意の値を「第１の値」として採用するように構成され得る。さらに、本発明の制御装置は、上記状態判定を行うために適切な値であれば、上記所定の範囲に含まれない値を「第１の値」として採用するように構成され得る。
【０６７１】
さらに、本発明の制御装置は、「第１の値」として、「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量」を採用するように構成され得る。「第１の値」としてこの値が採用されれば、燃料噴射量ずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【０６７２】
さらに、本発明の制御装置は、「第１の値」として、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される燃料噴射量」を採用するように構成され得る。「第１の値」としてこの値が採用されれば、吸気酸素濃度関連パラメータずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【０６７３】
加えて、上記各実施形態の制御装置は、第２の判定指標に係る「第２の値」として上記所定の範囲（Ocon1≦Ocon≦Ocon2）の最小値（Ocon1）を採用している。しかし、第１の値は、この値に限定されない。例えば、本発明の制御装置は、上記所定の範囲に含まれる任意の値を「第２の値」として採用するように構成され得る。さらに、本発明の制御装置は、上記状態判定を行うために適切な値であれば上記所定の範囲に含まれない値であっても、その値を「第２の値」として採用するように構成され得る。
【０６７４】
加えて、本発明の制御装置は、「第２の値」として、「前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値であり且つ前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度」を採用するように構成され得る。「第２の値」としてこの値が採用されれば、燃料噴射量ずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【０６７５】
さらに、本発明の制御装置は、「第２の値」として、「前記燃料噴射量ずれがゼロまたは前記所定の範囲内の値であり且つ前記吸気酸素濃度関連パラメータずれがゼロまたは前記所定の範囲内の値でないときに前記ＮＯｘ濃度ずれがゼロまたはゼロを含む所定の範囲内の値となるものと推定される吸気酸素濃度」を採用するように構成され得る。「第２の値」としてこの値が採用されれば、吸気酸素濃度関連パラメータずれがＮＯｘ濃度ずれに実質的に影響を与えないので、より適切に吸気酸素濃度関連パラメータずれの状態を判定することができる。
【０６７６】
加えて、上記各実施形態の制御装置は、燃料噴射量の補正量および吸入空気量の補正量を「第１ＮＯｘ濃度ずれの値および第２ＮＯｘ濃度ずれの値の平均値」に基づいて定めている。しかし、本発明の制御装置は、これら補正量を「第１ＮＯｘ濃度ずれの値、および、第２ＮＯｘ濃度ずれの値のいずれか一方」に基づいて定めるように構成され得る。さらに、本発明の制御装置は、これら補正量を上記ＮＯｘ濃度推定モデルに基づいて定めるように構成され得る。さらに加えて、本発明の制御装置は、これら補正量を「あらかじめ取得されている、ＮＯｘ濃度ずれの値と補正量との関係（マップ）」に基づいて定めるように構成され得る。
【０６７７】
さらに、上記各実施形態の制御装置は、ＮＯｘ濃度ずれの変化量およびＮＯｘ濃度ずれの値「のみ」に基づいて上記状態判定を行うように構成されている。しかし、本発明の制御装置は、ＮＯｘ濃度ずれの変化量およびＮＯｘ濃度ずれの値、ならびに、それら「以外」のパラメータであって上記状態判定に影響を与え得るパラメータ、に基づいて上記状態判定を行うように構成され得る。
【国際調査報告】
2011145223.tif 000031
2011145223.tif 000032
2011145223.tif 000033
2011145223.tif 000034