(57)【要約】【課題】  形状等の固体誤差の影響を解消し、個々の内燃機関においてＮＯｘ発生量を正確に推定し得るように同個々の機関毎にＮＯｘ発生量推定モデルを学習する方法の提供。【解決手段】  このＮＯｘ発生量推定モデルの学習方法は、燃焼により発生するＮＯｘ発生量に影響を与える因子の値を引数とする、所定の実験結果により予め適合された適合定数を含む実験式にてＮＯｘ発生量（推定ＮＯｘ発生量）を推定するＮＯｘ発生量推定モデルと、前記ＮＯｘ発生量（検出ＮＯｘ発生量）を検出するＮＯｘ発生量検出手段（排気ＮＯｘ濃度センサ）とを備えた内燃機関に適用される。前記引数が正常値であるか否かを判定し、前記引数が正常値であると判定した場合であって、且つ、前記推定ＮＯｘ発生量と前記検出ＮＯｘ発生量との相違の程度が所定の程度よりも小さいとき、同検出ＮＯｘ発生量に基づいて前記適合定数を更新することでＮＯｘ発生量推定モデルを学習する。【選択図】  図１
2005180219.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の燃焼室内での燃焼により発生するＮＯｘ発生量に影響を与える因子の値を取得する取得手段と、
前記取得された因子の値を引数とするとともに所定の実験結果に基づいて予め適合された適合定数を含む式にて表されるＮＯｘ発生量推定モデルを使用して前記ＮＯｘ発生量を推定ＮＯｘ発生量として推定するＮＯｘ発生量推定手段と、
前記ＮＯｘ発生量を検出ＮＯｘ発生量として検出するＮＯｘ発生量検出手段と、
を備えた内燃機関に適用されるＮＯｘ発生量推定モデルの学習方法であって、
前記引数が正常値であるか否かを判定し、
前記引数が正常値であると判定した場合において、前記ＮＯｘ発生量推定手段により推定された前記推定ＮＯｘ発生量と前記ＮＯｘ発生量検出手段により検出された前記検出ＮＯｘ発生量との相違の程度が所定の程度よりも小さいとき、同検出ＮＯｘ発生量に基づいて前記適合定数を更新する内燃機関のＮＯｘ発生量推定モデルの学習方法。
【請求項２】
内燃機関の燃焼室内での燃焼により発生するＮＯｘ発生量に影響を与える複数の因子の値をそれぞれ取得する取得手段と、
前記取得された各因子の値をそれぞれ別々の引数とするとともに、所定の実験結果に基づいて予め適合された適合定数であって前記各引数に係わる適合定数をそれぞれ別々に含む式にて表されるＮＯｘ発生量推定モデルを使用して前記ＮＯｘ発生量を推定ＮＯｘ発生量として推定するＮＯｘ発生量推定手段と、
前記ＮＯｘ発生量を検出ＮＯｘ発生量として検出するＮＯｘ発生量検出手段と、
を備えた内燃機関に適用されるＮＯｘ発生量推定モデルの学習方法であって、
前記引数が正常値であるか否かを判定し、
前記引数が正常値であると判定した場合において、前記ＮＯｘ発生量推定手段により推定された前記推定ＮＯｘ発生量と前記ＮＯｘ発生量検出手段により検出された前記検出ＮＯｘ発生量との相違の程度が所定の程度よりも小さいとき、前記複数の引数のうち所定の１つの引数に対応する前記因子の値を所定のパターンにて実際に変更することで得られる複数の前記検出ＮＯｘ発生量に基づいて同所定の１つの引数に係わる前記適合定数を更新する内燃機関のＮＯｘ発生量推定モデルの学習方法。
【請求項３】
請求項１又は請求項２に記載の内燃機関のＮＯｘ発生量推定モデルの学習方法において、
前記因子は、前記燃焼室内で燃焼する混合気の周辺状態量であることを特徴とする内燃機関のＮＯｘ発生量推定モデルの学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の燃焼室内での燃焼により発生するＮＯｘ発生量に影響を与える因子の値を引数とするとともに所定の実験結果に基づいて予め適合された適合定数を含む式にて表されるＮＯｘ発生量推定モデルの学習方法に関する。
【背景技術】
【０００２】
火花点火式内燃機関、ディーゼル機関等の内燃機関においては、排気通路から外部へ排出される排ガス中のＮＯｘ量（以下、「ＮＯｘ排出量」と云うこともある。）を低減する必要があり、そのためには、燃焼室内にて（噴射により霧化した）燃料と空気を含む混合気の燃焼により発生するＮＯｘ発生量（以下、単に「ＮＯｘ発生量」と称呼する。）を低減する必要がある。このＮＯｘ発生量を低減するためには、例えば、ＥＧＲ装置により還流されるＥＧＲガス量を増大させること、或いは、燃料噴射時期を遅らせること等により最高火炎温度（最高燃焼温度）を低下させることが有効である。
【０００３】
しかしながら、一方では、ＮＯｘ発生量を低減するためにＥＧＲガス量を増大させていくと（ディーゼル機関において）微粒子状物質（パティキュレート・マター、ＰＭ）の発生量が増大していくというトレードオフがあり、また、ＮＯｘ発生量を低減するために燃料噴射時期を遅らせていくと燃費が悪化していくというトレードオフがあることが知られている。
【０００４】
従って、ＰＭ排出量の増大の抑制、燃費の悪化の抑制等を考慮した上でＮＯｘ発生量を出来る限り低減するためには、同ＮＯｘ発生量を機関の運転状態に応じた所定の目標値に制御することが好ましい。ここで、ＮＯｘ発生量を排気ＮＯｘ濃度センサ等により実測することは可能である一方で、同排気ＮＯｘ濃度センサはその応答性が比較的低いことから過渡運転状態においてＮＯｘ排出量を精度良く実測することは非常に困難である。よって、機関が過渡運転状態にある場合を含めてＮＯｘ発生量を所定の目標値に精度良く制御するためには同ＮＯｘ発生量を計算により精度良く推定する必要がある。
【０００５】
このため、下記特許文献１に記載の内燃機関の制御装置は、吸入空気量と、吸気の温度及び圧力と、排ガスの空燃比と、吸気に還流された排ガスのＥＧＲ率をそれぞれセンサ等により検出し、これらの各値を引数とする所定の理論式、及び所定の実験式にて表されるＮＯｘ発生量推定モデルを使用して上記ＮＯｘ発生量を計算により推定する。そして、推定されたＮＯｘ発生量が所定の目標値になるようにＥＧＲガス量、或いは燃料噴射時期等を制御するようになっている。
【特許文献１】特開２００２−１９５０７１号公報
【０００６】
ところで、上記装置においてＮＯｘ発生量の推定に使用される実験式（即ち、ＮＯｘ発生量推定モデル）には種々の適合定数が含まれている。これらの適合定数は、上記内燃機関を種々の条件で実際に稼働させて各々の条件下での実際のＮＯｘ発生量をそれぞれ計測する所定の実験の結果に基づいて予め適合・決定された値である。係る実験は、通常、ＮＯｘ発生量計測用の上記内燃機関の試験品（マスター品）を使用して実行される。
【０００７】
一方、このマスター品と、同マスター品と同型の大量生産された実際の個々の機関との間には、構成部品の各形状、センサ出力値等において不可避的に誤差（以下、「形状等の固体誤差」と云うこともある。）が存在する。従って、上記装置が大量生産品である個々の内燃機関に適用される場合、上記マスター品を使用して適合・決定された適合定数を含んだ上記実験式に少なくとも基づいて得られる上記推定ＮＯｘ発生量と実際のＮＯｘ発生量との間は、上記形状等の固体誤差の程度に応じた誤差が不可避的に発生し得る。即ち、係る形状等の固体誤差に起因して正確な推定ＮＯｘ発生量を得ることができないという問題があった。以上のことから、上記形状等の固体誤差の影響を解消するため、個々の機関毎にＮＯｘ発生量推定モデル（に含まれる適合定数）を学習する方法の到来が望まれていたところである。
【発明の開示】
【０００８】
本発明は、かかる課題に対処するためになされたものであって、その目的は、上記形状等の固体誤差の影響を解消して個々の機関においてＮＯｘ発生量をそれぞれ精度良く推定し得るように同個々の機関毎にＮＯｘ発生量推定モデルを学習する方法を提供することにある。
【０００９】
本発明による内燃機関のＮＯｘ発生量推定モデルの学習方法は、取得手段と、ＮＯｘ発生量推定手段と、ＮＯｘ発生量検出手段とを備えた内燃機関に適用される。取得手段は、内燃機関の燃焼室内での燃焼により発生するＮＯｘ発生量に影響を与える因子の値を取得する手段である。取得手段は、係る因子の値を、所定の計算により推定することで取得しても、センサ等により物理的に検出することで取得してもよい。また、取得される因子の種類（数）は１つであっても複数であってもよい。
【００１０】
係る因子は、前記燃焼室内で燃焼する混合気の周辺状態量であることが好適である。混合気の周辺状態量としては、例えば、機関に与えられる負荷の程度を表す負荷指標値、及び、燃焼室内の（噴射された）燃料の霧化の程度を表す霧化指標値等が挙げられる。ここにおいて、負荷指標値は機関に与えられる負荷の程度を表す値であって、例えば、（一作動サイクルあたりの）燃料噴射量、機関の駆動トルク、燃焼室の内壁面の温度等である。また、霧化指標値は燃焼室内の燃料の霧化の程度を表す値であって、例えば、燃料の噴射圧力、スワール比、燃焼が発生する領域における空気過剰率等である。
【００１１】
ＮＯｘ発生量推定手段は、前記取得された因子の値を引数とするとともに所定の実験結果に基づいて予め適合された適合定数を含む（実験）式にて表されるＮＯｘ発生量推定モデルを使用して前記ＮＯｘ発生量を推定ＮＯｘ発生量として（計算により）推定する手段である。係る適合定数は、例えば、上記ＮＯｘ発生量計測用のマスター品である機関を種々の条件で実際に稼働させて各々の条件下での実際のＮＯｘ発生量をそれぞれ計測する所定の実験の結果に基づいて、所定の統計処理等を利用して予め適合・決定された値である。
【００１２】
また、ＮＯｘ発生量検出手段は、前記ＮＯｘ発生量を検出ＮＯｘ発生量として検出（実測）する手段である。ＮＯｘ発生量検出手段としては、例えば、排ガスが通過する排気通路に配設された排気ＮＯｘ濃度センサを用いた手段等が挙げられる。
【００１３】
そして、本発明によるＮＯｘ発生量推定モデルの学習方法は、先ず、前記引数が正常値であるか否かを判定し、前記引数が正常値であると判定した場合において、前記ＮＯｘ発生量推定手段により推定された前記推定ＮＯｘ発生量と前記ＮＯｘ発生量検出手段により検出された前記検出ＮＯｘ発生量との相違の程度が所定の程度よりも小さいとき（例えば、両者の偏差が所定値未満であるとき）、同検出ＮＯｘ発生量に基づいて前記適合定数を更新することで前記ＮＯｘ発生量推定モデルを学習する方法である。
【００１４】
ここにおいて、「引数が正常値であるか否か」は、前記取得手段が同引数となる因子の値を所定の計算により推定することで取得する場合は、例えば、同取得手段が取得した因子の推定値と、同因子の値を実測可能な正常な（断線等の電気的接続に係わる異常が発生していない）センサによる同因子の実測（検出）値との相違の程度が所定の程度よりも小さいか否かで判定され得る。また、前記取得手段が引数となる因子の値をセンサ等により物理的に検出することで取得する場合は、例えば、同センサ等において断線等の電気的接続に係わる異常が発生していないか否かで判定され得る。
【００１５】
また、上記推定ＮＯｘ発生量と上記検出ＮＯｘ発生量との相違の程度が所定の程度よりも小さいことは、ＮＯｘ発生量検出手段（例えば、排気ＮＯｘ濃度センサ等）により検出される検出ＮＯｘ発生量が正常な（正確な）値となっていることを意味している。従って、上記本発明によるＮＯｘ発生量推定モデルの学習方法によれば、少なくとも引数が正常値であり、且つ、検出ＮＯｘ発生量が正常な（正確な）値となっている場合にのみ、同正常な（正確な）値である検出ＮＯｘ発生量に基づいて前記適合定数が個々の機関毎に更新され得る。この結果、上記形状等の固体誤差の影響が解消されて個々の機関においてＮＯｘ発生量がそれぞれ確実に精度良く推定され得るように同個々の機関毎にＮＯｘ発生量推定モデルを学習することができる。
【００１６】
更には、上記本発明によるＮＯｘ発生量推定モデルの学習方法が適用される内燃機関においては、前記取得手段は前記ＮＯｘ発生量に影響を与える複数の因子の値をそれぞれ取得するように構成されるとともに、前記ＮＯｘ発生量推定手段は前記取得された各因子の値をそれぞれ別々の引数とするとともに、所定の実験結果に基づいて予め適合された適合定数であって前記各引数に係わる適合定数をそれぞれ別々に含む式にて表されるＮＯｘ発生量推定モデルを使用して前記ＮＯｘ発生量を推定ＮＯｘ発生量として推定するように構成され、上記方法は、前記引数（の総て）が正常値であると判定した場合において、前記ＮＯｘ発生量推定手段により推定された前記推定ＮＯｘ発生量と前記ＮＯｘ発生量検出手段により検出された前記検出ＮＯｘ発生量との相違の程度が所定の程度よりも小さいとき、前記複数の引数のうち所定の１つの引数に対応する前記因子の値（のみ）を所定のパターンにて実際に変更することで得られる複数の前記検出ＮＯｘ発生量に基づいて同所定の１つの引数に係わる前記適合定数を更新するように構成されることが好適である。
【００１７】
ここで、前記所定のパターンとしては、例えば、前記所定の１つの引数に対応する因子の値を、現時点での値から所定量（割合）だけ上下に一回ずつ偏移させるパターン等が挙げられる。これによれば、前記１つの引数に対応する因子の互いに異なる複数の各値に対応する検出ＮＯｘ発生量がそれぞれ検出され、各検出ＮＯｘ発生量に対して同１つの引数に係わる適合定数がそれぞれ個別に求められ得る。
【００１８】
そして、これら個別に求められた複数の上記１つの引数に係わる適合定数に基づいて（従って、複数の前記検出ＮＯｘ発生量に基づいて）同１つの引数に係わる適合定数が最終的により正確な（１つの）値として決定され、更新され得る。また、所定のパターンにて値が変更される対象となる因子を順次変更していくことで、総ての引数に係わる適合定数がより一層正確な値として更新され得る。従って、個々の機関においてＮＯｘ発生量がそれぞれ更に一層精度良く推定され得るようにＮＯｘ発生量推定モデルを学習することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施形態に係る内燃機関（ディーゼル機関）のＮＯｘ発生量推定モデルの学習方法について説明する前に、先ず、このＮＯｘ発生量推定モデルを使用したＮＯｘ発生量推定方法、及び、推定されたＮＯｘ発生量に基づいて排気通路から外部へ排出される排ガス中のＮＯｘ排出量を推定するＮＯｘ排出量推定方法を実施する内燃機関の制御装置について図面を参照しつつ説明する。
【００２０】
図１は、係る内燃機関の制御装置を４気筒内燃機関（ディーゼル機関）１０に適用したシステム全体の概略構成を示している。このシステムは、燃料供給系統を含むエンジン本体２０、エンジン本体２０の各気筒の燃焼室（筒内）にガスを導入するための吸気系統３０、エンジン本体２０からの排ガスを放出するための排気系統４０、排気還流を行うためのＥＧＲ装置５０、及び電気制御装置６０を含んでいる。
【００２１】
エンジン本体２０の各気筒の上部には燃料噴射弁（噴射弁、インジェクタ）２１が配設されている。各燃料噴射弁２１は、図示しない燃料タンクと接続された燃料噴射用ポンプ２２に燃料配管２３を介して接続されている。燃料噴射用ポンプ２２は、電気制御装置６０と電気的に接続されていて、同電気制御装置６０からの駆動信号（後述する（指令）最終燃料噴射圧力Pcrfinに応じた指令信号）により燃料の実際の噴射圧力（吐出圧力）が同指令最終燃料噴射圧力Pcrfinになるように同燃料を昇圧するようになっている。
【００２２】
これにより、燃料噴射弁２１には、燃料噴射用ポンプ２２から前記最終燃料噴射圧力Pcrfinまで昇圧された燃料が供給されるようになっている。また、燃料噴射弁２１は、電気制御装置６０と電気的に接続されていて、同電気制御装置６０からの駆動信号（後述する（指令）燃料噴射量qfinに応じた指令信号）により所定時間だけ開弁し、これにより各気筒の燃焼室内に前記指令最終燃料噴射圧力Pcrfinにまで昇圧された燃料を前記指令燃料噴射量qfinだけ直接噴射するようになっている。
【００２３】
吸気系統３０は、エンジン本体２０の各気筒の燃焼室にそれぞれ接続された吸気マニホールド３１、吸気マニホールド３１の上流側集合部に接続され同吸気マニホールド３１とともに吸気通路を構成する吸気管３２、吸気管３２内に回動可能に保持されたスロットル弁３３、電気制御装置６０からの駆動信号に応答してスロットル弁３３を回転駆動するスロットル弁アクチュエータ３３ａ、スロットル弁３３の上流において吸気管３２に順に介装されたインタクーラー３４と過給機３５のコンプレッサ３５ａ、及び吸気管３２の先端部に配設されたエアクリーナ３６とを含んでいる。
【００２４】
排気系統４０は、エンジン本体２０の各気筒にそれぞれ接続された排気マニホールド４１、排気マニホールド４１の下流側集合部に接続された排気管４２、排気管４２に配設された過給機３５のタービン３５ｂ、及び排気管４２に介装されたディーゼルパティキュレートフィルタ（以下、「ＤＰＮＲ」と称呼する。）４３を含んでいる。排気マニホールド４１及び排気管４２は排気通路を構成している。
【００２５】
ＤＰＮＲ４３は、コージライト等の多孔質材料から形成されたフィルタ４３ａを備え、通過する排気ガス中のパティキュレートを細孔表面にて捕集するフィルタである。ＤＰＮＲ４３は、担体としてのアルミナに、カリウムＫ，ナトリウムＮａ，リチウムＬｉ，セシウムＣｓのようなアルカリ金属、バリウムＢａ，カルシウムＣａのようなアルカリ土類金属、及びランタンＬａ、イットリウムＹのような希土類金属から選ばれた少なくとも一つを白金とともに担持し、ＮＯｘを吸収した後に同吸収したＮＯｘを放出して還元する吸蔵還元型ＮＯｘ触媒としても機能するようになっている。
【００２６】
ＥＧＲ装置５０は、排気ガスを還流させる通路（ＥＧＲ通路）を構成する排気還流管５１と、排気還流管５１に介装されたＥＧＲ制御弁５２と、ＥＧＲクーラー５３とを備えている。排気還流管５１はタービン３５ｂの上流側排気通路（排気マニホールド４１）とスロットル弁３３の下流側吸気通路（吸気マニホールド３１）を連通している。ＥＧＲ制御弁５２は電気制御装置６０からの駆動信号に応答し、再循環される排気ガス量（排気還流量、ＥＧＲガス流量）を変更し得るようになっている。
【００２７】
電気制御装置６０は、互いにバスで接続されたＣＰＵ６１、ＣＰＵ６１が実行するプログラム、テーブル（ルックアップテーブル、マップ）、及び定数等を予め記憶したＲＯＭ６２、ＣＰＵ６１が必要に応じてデータを一時的に格納するＲＡＭ６３、電源が投入された状態でデータを格納するとともに同格納したデータを電源が遮断されている間も保持するバックアップＲＡＭ６４、並びにＡＤコンバータを含むインターフェース６５等からなるマイクロコンピュータである。
【００２８】
インターフェース６５は、空気流量（新気流量）計測手段であって吸気管３２に配置された熱線式エアフローメータ７１、スロットル弁３３の下流であって排気還流管５１が接続された部位よりも下流の吸気通路に設けられた吸気温センサ７２、吸気温センサ７２の近傍の吸気通路に配設された吸気管圧力センサ７３、クランクポジションセンサ７４、アクセル開度センサ７５、吸気管圧力センサ７３の近傍の吸気通路に設けられた吸気酸素濃度センサ７６、過給機３５のタービン３５ｂよりも下流であってＤＰＮＲ４３よりも上流の排気通路に配設された空気過剰率センサ７７、空気過剰率センサ７７の近傍の排気通路に配設された排気ＮＯｘ濃度センサ７８、及び燃料噴射圧力センサ７９と接続されていて、これらのセンサからの信号をＣＰＵ６１に供給するようになっている。また、インターフェース６５は、燃料噴射弁２１、燃料噴射用ポンプ２２、スロットル弁アクチュエータ３３ａ、及びＥＧＲ制御弁５２と接続されていて、ＣＰＵ６１の指示に応じてこれらに駆動信号を送出するようになっている。
【００２９】
熱線式エアフローメータ７１は、吸気通路内を通過する吸入空気（新気）の質量流量（単位時間あたりの吸入新気量）を計測し、同質量流量Ga（吸入新気流量Ga）を表す信号を発生するようになっている。吸気温センサ７２は、前述した吸気の温度を検出し、同吸気温度Tbを表す信号を発生するようになっている。吸気管圧力センサ７３は、吸気の圧力（即ち、吸気管圧力）を検出し、同吸気管圧力Pbを表す信号を発生するようになっている。
【００３０】
クランクポジションセンサ７４は、各気筒の絶対クランク角度を検出し、クランク角度CAを表すとともにエンジン１０の回転速度であるエンジン回転速度NEをも表す信号を発生するようになっている。アクセル開度センサ７５は、アクセルペダルＡＰの操作量を検出し、アクセル操作量Accpを表す信号を発生するようになっている。吸気酸素濃度センサ７６は、吸気中の酸素濃度（即ち、吸気酸素濃度）を検出し、同吸気酸素濃度RO2_inを表す信号を発生するようになっている。
【００３１】
空気過剰率センサ７７は、排気通路を通過する排ガスの空気過剰率を検出し、空気過剰率λを表す信号を発生するようになっている。排気ＮＯｘ濃度センサ７８は、排気通路を通過する排ガス中のＮＯｘ濃度（質量濃度）を検出し、排気ＮＯｘ濃度RNOx_exactを表す信号を発生するようになっている。また、燃料噴射圧力センサ７９は、燃料噴射圧力を検出し、検出燃料噴射圧力Pcractを発生するようになっている。
【００３２】
（ＮＯｘ発生量推定方法の概要）
次に、上記のように構成された内燃機関の制御装置（以下、「本装置」と云うこともある。）による本発明の実施形態に係るＮＯｘ発生量推定方法の概要について説明する。図２は、機関１０の或る一つの気筒のシリンダ内(筒内)に吸気マニホールド３１からガス（即ち、吸気）が吸入され、筒内に吸入されたガス（筒内ガス）が排気マニホールド４１へ排出される様子を模式的に示した図である。
【００３３】
図２に示したように、吸気（従って、筒内ガス）には、吸気管３２の先端部からスロットル弁３３を介して吸入された新気と、排気還流管５１からＥＧＲ制御弁５２を介して吸入されたＮＯｘを含むＥＧＲガスが含まれる。吸入される新気量（新気質量）と吸入されるＥＧＲガス量（ＥＧＲガス質量）の和に対するＥＧＲガス質量の割合（即ち、ＥＧＲ率）は、運転状態に応じて電気制御装置６０（ＣＰＵ６１）により適宜制御されるスロットル弁３３の開度、及びＥＧＲ制御弁５２の開度に応じて変化する。
【００３４】
吸気（即ち、新気、及びＮＯｘを含むＥＧＲガスから構成されるガス）は、吸気行程において開弁している吸気弁Vinを介してピストンの下降に伴って筒内に吸入されて筒内ガスとなる。筒内ガスは、ピストンが下死点に達した時点（以下、「ATDC-180°」と称呼する。）で吸気弁Vinが閉弁することにより筒内に密閉され、その後の圧縮行程においてピストンの上昇に伴って圧縮される。そして、ピストンが上死点近傍に達っすると（具体的には、後述する最終燃料噴射時期finjfinが到来すると）、本装置は、前記指令燃料噴射量qfinに応じた所定時間だけ燃料噴射弁２１を開弁することで燃料を筒内に直接噴射する。この結果、噴射された燃料は、時間の経過に伴って同筒内ガスと混ざり合いながら混合気となって筒内において拡散していき、所定のタイミングにて自己着火が発生することに起因して燃焼する。
【００３５】
係る燃焼は、本実施例では、後述するように推定される燃焼領域（以下、「Ｂ領域」と云うこともある。図２を参照。）においてのみ発生し、燃焼室内におけるＢ領域を除いた領域である非燃焼領域（以下、「Ａ領域」と云うこともある。図２を参照。）では発生しないと仮定する。そして、燃焼後に燃焼室内に存在する筒内ガスは、排ガスとなって、排気行程において開弁している排気弁Voutを介してピストンの上昇に伴って排気マニホールド４１へ排出され、係る排ガスは、排気管４２を介して外部へと排出されていく。
【００３６】
以下、本装置が実施する具体的なＮＯｘ発生量推定方法について説明していく。このＮＯｘ発生量推定方法では、燃料が噴射される対象となる気筒（以下、「燃料噴射気筒」と称呼する。）について上記最終燃料噴射時期finjfinが到来する毎に、その直後の爆発行程において上記Ｂ領域において燃焼により発生するＢ領域燃焼発生ＮＯｘ量NOxBが推定されていく。
【００３７】
Ｂ領域燃焼発生ＮＯｘ量NOxBは、単位燃料量あたりの燃焼発生ＮＯｘ量（以下、「推定燃焼発生ＮＯｘ率RNOx_burnest」と称呼する。）に今回の指令燃料噴射量qfinc(＝qfin)を乗じた値として、下記(1)式に従って求めることができる。
【００３８】
NOxB＝RNOx_burnest・qfinc  ・・・(1)
【００３９】
ここで、上記(1)式における推定燃焼発生ＮＯｘ率RNOx_burnestは下記(2)式にて推定される。この(2)式がＮＯｘ発生量推定モデルを表す式に相当し、(2)式に従って推定燃焼発生ＮＯｘ率RNOx_burnestを求める手段がＮＯｘ発生量推定手段に相当する。
【００４０】
RNOx_burnest＝eK0・(RO2c)K1・(qfinc)K2・(Pcrc)K3・e(K4/Tflame)  ・・・(2)
【００４１】
上記(2)式において、eは自然対数の底である。RO2cは、吸気弁Vin閉弁時（即ち、ATDC-180°）において吸気酸素濃度センサ７６により検出される吸気酸素濃度RO2_inである下死点時吸気酸素濃度である。qfincは上記(1)式と同様、今回の指令燃料噴射量(=qfin)である。Pcrcは今回の指令燃料噴射圧力(=Pcrfin)である。
【００４２】
また、上記(2)式において、Tflameは今回の爆発行程における最高火炎温度である。最高火炎温度Tflameは、混合気が燃焼を開始してから同燃焼を終了するまでの間における火炎温度のピーク値であって、吸気酸素濃度RO2_in（具体的には、上記下死点時吸気酸素濃度RO2c）、及び後述する下死点時筒内ガス温度Ta0を引数とする所定の関数に基づいて推定することができる。K0〜K4は代表的な公知の所定の重回帰分析に基づいて後述するように決定された適合定数である。
【００４３】
即ち、上記(2)式は、推定燃焼発生ＮＯｘ率RNOx_burnestを求めるための実験式である。上記(2)式にて推定される推定燃焼発生ＮＯｘ率RNOx_burnestは、上記下死点時吸気酸素濃度RO2c、上記今回の指令燃料噴射量qfinc、上記今回の指令燃料噴射圧力Pcrc、及び上記最高火炎温度Tflame（即ち、ＮＯｘ発生量に影響を与える因子）を引数とする関数であって、より具体的には、下死点時吸気酸素濃度RO2cのべき乗、今回の指令燃料噴射量qfincのべき乗、今回の指令燃料噴射圧力Pcrcのべき乗、及び、最高火炎温度Tflameに応じて決定される値を指数とする指数関数、の積に基づいて計算される。
【００４４】
適合定数K0〜K4は、例えば、以下のような実験を行うことにより決定され得る。即ち、先ず、機関１０についてのＮＯｘ発生量計測用のマスター品を準備し、所定の運転状態で稼働させる。次に、この状態にて、上記下死点時吸気酸素濃度RO2c、上記今回の指令燃料噴射量qfinc、上記今回の指令燃料噴射圧力Pcrc、及び上記最高火炎温度Tflame（即ち、下死点時吸気酸素濃度RO2cと下死点時筒内ガス温度Ta0）の各値の組み合わせを種々の所定パターンになるように順次変更していく。そして、そのパターン毎に、上記排気ＮＯｘ濃度センサ７８と同等のセンサを使用して実際の排気ＮＯｘ濃度RNOx_exact（従って、実際の燃焼発生ＮＯｘ率RNOx_burnactを順次計測していく。
【００４５】
そして、このような作業（実験）の結果得られた上記各値の組み合わせと、計測された実際の燃焼発生ＮＯｘ率RNOx_burnactの値との関係に関する多数のデータに基づいて、上記公知の所定の重回帰分析を行って上記適合定数K0〜K4を求めることができる。ここにおいて、少なくとも、適合定数K1〜K3は正の値に決定され、適合定数K4は負の値に決定される。
【００４６】
従って、上記(2)式から理解できるように、(2)式に従って推定・計算される推定燃焼発生ＮＯｘ率RNOx_burnest（従って、Ｂ領域燃焼発生ＮＯｘ量NOxB）は、下死点時吸気酸素濃度RO2c、今回の指令燃料噴射量qfinc、今回の指令燃料噴射圧力Pcrc、及び最高火炎温度Tflameのうちのどの値が増加しても増大する。このことは、以下の実際の現象に沿うものである。
【００４７】
即ち、先ず、吸気酸素濃度RO2_inが増加するとＢ領域燃焼発生ＮＯｘ量NOxBが増大する。これは、酸素はＮＯｘを発生させる材料であって燃焼室内の酸素量が多くなると当然にＮＯｘが発生し易くなることに基づく現象である。
【００４８】
また、燃料噴射量qfinが増加するとＢ領域燃焼発生ＮＯｘ量NOxBが増大する。これは、以下の現象に基づく。即ち、燃料噴射量qfinの増加に応じて機関１０に与えられる負荷の大きさが増大する。係る負荷が増大すると、燃焼室の内壁面温度が上昇して同内壁面からの輻射熱の増大により燃焼前の混合気が加熱され易くなる。その結果、混合気の最高火炎温度が高くなってＮＯｘが発生し易くなる。
【００４９】
また、燃料噴射圧力Pcrが増加するとＢ領域燃焼発生ＮＯｘ量NOxBが増大する。これは、以下の現象に基づく。即ち、燃料噴射圧力Pcrの増加に応じて燃料の噴射速度が増大すること等により同燃料の霧化の程度が大きくなる。燃料の霧化の程度が大きくなると、噴射された燃料の量に対する同燃料と混ざり合って混合気となる空気量の割合が多くなる。その結果、上記Ｂ領域における空気過剰率が大きくなってＮＯｘが発生し易くなる。
【００５０】
また、最高火炎温度Tflameが増加するとＢ領域燃焼発生ＮＯｘ量NOxBが増大する。これは、ガス温度が高くなるほど窒素からＮＯｘが生成される化学反応が促進されることに基づく現象である。以上のことから、上記(2)式に従って推定燃焼発生ＮＯｘ率RNOx_burnestを計算すれば、少なくとも上記４つの実際の現象に沿うように同推定燃焼発生ＮＯｘ率RNOx_burnest（従って、上記(1)式に従うＢ領域燃焼発生ＮＯｘ量NOxB）を精度良く推定することができる。以上が、ＮＯｘ発生量推定方法の概要である。
【００５１】
（ＮＯｘ排出量推定方法の概要）
次に、図２に示したようなＥＧＲ装置５０を備えた内燃機関１０に適用される、本装置が実施する具体的なＮＯｘ排出量推定方法について説明していく。このＮＯｘ排出量推定方法では、燃料噴射気筒について上記最終燃料噴射時期finjfinが到来する毎に、その直後の排気行程において同燃料噴射気筒の排気弁Voutから排気通路を介して外部へ排出されることになる排ガス中のＮＯｘの質量（即ち、ＮＯｘ排出量。推定ＮＯｘ排出量NOxest。）が推定されていく。
【００５２】
この方法では、推定ＮＯｘ排出量NOxestを推定するにあたり、燃焼室内に吸入されたＮＯｘの全質量に対する上記燃焼前に上記Ｂ領域に存在するＮＯｘの質量の割合（以下、「ＮＯｘ量割合RatioNOx」と称呼する。）、上記燃焼後に上記Ａ領域内に残存するＮＯｘ質量、及び、上記燃焼後に上記Ｂ領域内に残存するＮＯｘ質量をそれぞれ推定する必要がある。従って、先ず、これらの求め方について図２を参照しながら説明する。
【００５３】
<ＮＯｘ量割合RatioNOxの求め方>
燃焼室内に吸入された吸気（筒内ガス）中の酸素分子、ＮＯｘを含む各ガスの成分は同燃焼室内全域に渡ってそれぞれ均一に分布するものと仮定する。また、この状態においてＢ領域内に存在する酸素は総て燃焼により消費されると仮定する。そうすると、「燃焼室内に吸入された酸素の全質量」に対する「燃焼により消費される酸素の質量」の割合（以下、「酸素量割合」と称呼する。）は、燃焼室の体積に対するＢ領域の体積の割合を表すとともに、燃焼室内に吸入されたＮＯｘの全質量に対する、燃焼前にＢ領域に存在するＮＯｘの質量の割合（従って、上記ＮＯｘ量割合RatioNOx）をも表すことになる。換言すれば、上記酸素量割合を利用してＢ領域が推定され得る。
【００５４】
従って、ＮＯｘ量割合RatioNOxを求めるためには上記酸素量割合を求めればよく、このためには、「燃焼室内に吸入された酸素の全質量」と「燃焼により消費される酸素の質量」とを求める必要がある。
【００５５】
ここで、「燃焼室内に吸入された酸素の全質量」は、吸入された燃焼室内の総ガス質量（以下、「筒内総ガス量Gcyl」と称呼する。）に、燃焼前の筒内ガスの酸素濃度を乗じることで求めることができる。筒内総ガス量Gcylは、ATDC-180°における気体の状態方程式に基づく下記(3)式に従って求めることができる。
【００５６】
Gcyl＝(Pa0・Va0)/(R・Ta0)  ・・・(3)
【００５７】
上記(3)式において、Pa0は、ATDC-180°における下死点時筒内ガス圧力である。ATDC-180°において筒内ガス圧力は吸気管圧力Pbと略等しいと考えられるから、下死点時筒内ガス圧力Pa0は、ATDC-180°において吸気管圧力センサ７３により検出される吸気管圧力Pbとして取得することができる。Va0は、ATDC-180°における下死点時燃焼室内容積である。燃焼室内容積Vaは機関１０の設計諸元に基づいてクランク角度CAの関数として表すことができるから、この関数に基づいて下死点時燃焼室内容積Va0も求めることができる。Ta0は、ATDC-180°における下死点時筒内ガス温度である。ATDC-180°において筒内ガス温度は吸気温度Tbと略等しいと考えられるから、下死点時筒内ガス温度Ta0は、ATDC-180°において吸気温センサ７２により検出される吸気温度Tbとして取得することができる。Rは筒内ガスのガス定数である。
【００５８】
また、燃焼前の筒内ガスの酸素濃度は吸気弁Vin閉弁時（即ち、ATDC-180°）における吸気酸素濃度RO2_inと略等しいと考えられるから、燃焼前の筒内ガスの酸素濃度は、上記(2)式にて使用される下死点時吸気酸素濃度RO2cとして取得することができる。以上より、「燃焼室内に吸入された酸素の全質量」は「Gcyl・RO2c」と表すことができる。
【００５９】
一方、「燃焼により消費される酸素の質量」は、噴射された燃料の総て（即ち、前記燃料噴射量qfinの燃料）が理論空燃比stoichをもって完全燃焼するとの仮定のもと、「K・qfinc」と表すことができる。ここで、Kは所定の係数であって、例えば、大気中に含まれる酸素の質量割合０．２３に理論空燃比stoich（例えば、１４．６）を乗じた値「０．２３・stoich」である。qfincは上記(1)式,(2)式と同様、今回の指令燃料噴射量(＝qfin)である。以上のことから、ＮＯｘ量割合RatioNOxは、下記(4)式に従って求めることができる。
【００６０】
RatioNOx＝(K・qfinc)/(Gcyl・RO2c)  ・・・(4)
【００６１】
<燃焼後にＡ領域内に残存するＮＯｘ質量の求め方>
上述のごとく、本実施例では燃焼室内における燃焼はＢ領域内でのみ発生し、Ａ領域では燃焼が発生しないと仮定するから、ＥＧＲ装置５０を介して燃焼室内に還流してきたＮＯｘ量のうち燃焼前にＡ領域内に存在するＮＯｘの質量（以下、「Ａ領域還流ＮＯｘ量NOxA」と称呼する。）は、燃焼後においてもそのままＡ領域内に保存（保持）されると考えることができる。換言すれば、Ａ領域還流ＮＯｘ量NOxAは、そのまま「燃焼後にＡ領域内に残存するＮＯｘ質量」となる。
【００６２】
ここで、燃焼室内に吸入されたＮＯｘの全質量に対する上記燃焼前に上記Ａ領域に存在するＮＯｘの質量の割合は、上記ＮＯｘ量割合RatioNOxを用いて「1-RatioNOx」と表すことができるから、Ａ領域還流ＮＯｘ量NOxAは、上記筒内総ガス量Gcylに、燃焼前の筒内ガスのＮＯｘ濃度と（1-RatioNOx）とを乗じることで求めることができる。燃焼前の筒内ガスのＮＯｘ濃度は吸気中のＮＯｘ濃度（吸気ＮＯｘ濃度RNOx_in）と略等しいと考えられるから、Ａ領域還流ＮＯｘ量NOxAは、下記(5)式にて表すことができる。
【００６３】
NOxA＝RNOx_in・(1-RatioNOx)・Gcyl  ・・・(5)
【００６４】
上記(5)式において、吸気ＮＯｘ濃度RNOx_inは、上記筒内総ガス量Gcylに対する、ＥＧＲ装置５０から還流されてきたＥＧＲガス中のＮＯｘ質量の質量割合である。ＥＧＲガス中のＮＯｘ濃度は前回（の燃料噴射時期に）演算された後述する推定排気ＮＯｘ濃度RNOx_exestと等しいと仮定すると、吸気ＮＯｘ濃度RNOx_inは下記(6)式に従って求めることができる。
【００６５】
RNOx_in＝(RNOx_exest・Gegr)/Gcyl  ・・・(6)
【００６６】
上記(6)式において、Gegrは今回の吸気行程で吸気の一部としてＥＧＲ装置５０から燃焼室内に吸入されてきたＥＧＲガスの質量であって、下記(7)式に従って取得され得る。
【００６７】
Gegr＝Gcyl-Gm  ・・・(7)
【００６８】
上記(7)式において、Gmは今回の吸気行程で吸気管３２の先端部から吸気の一部として燃焼室内に吸入された新気の質量（吸入新気量）であって、エアフローメータ７１により計測される単位時間あたりの吸入新気量（吸入新気流量Ga）と、クランクポジションセンサ７４の出力に基づくエンジン回転速度NEと、吸入新気流量Ga及びエンジン回転速度NEを引数とする一吸気行程あたりの吸入新気量を求めるための関数ｆ(Ga,NE)とに基づいて計算される。吸入新気流量Ga及びエンジン回転速度NEとしては、ATDC-180°において各センサにより取得される下死点時吸入新気流量Ga0、及び下死点時エンジン回転速度NE0がそれぞれ使用される。以上のように、Ａ領域還流ＮＯｘ量NOxA、従って、「燃焼後にＡ領域内に残存するＮＯｘ質量」は上記(5)式に従って求めることができる。
【００６９】
<燃焼後にＢ領域内に残存するＮＯｘ質量の求め方>
燃焼後においてはＢ領域において、上記(1)式、(2)式により推定される上記Ｂ領域燃焼発生ＮＯｘ量NOxBが発生する。そして、この推定されたＢ領域燃焼発生ＮＯｘ量NOxBは、そのまま「燃焼後にＢ領域内に残存するＮＯｘ質量」に略一致し得ると考えることができる。従って、「燃焼後にＢ領域内に残存するＮＯｘ質量」は、上記(1)式、(2)式に従って推定されるＢ領域燃焼発生ＮＯｘ量NOxBとして求めることができる。
【００７０】
このようにして、「燃焼後にＡ領域内に残存するＮＯｘ質量」であるＡ領域還流ＮＯｘ量NOxA、及び、「燃焼後にＢ領域内に残存するＮＯｘ質量」であるＢ領域燃焼発生ＮＯｘ量NOxBが求められると、燃焼後に燃焼室内に残存するＮＯｘの全質量は「NOxA＋NOxB」として求めることができる。また、燃焼後に燃焼室内に残存するガスの全質量は、「Gcyl＋qfinc」と表すことができる。
【００７１】
従って、排気行程において燃焼室から排気弁Voutを介して排気通路（排気マニホールド４１）に排出される排ガス中のＮＯｘ濃度（推定排気ＮＯｘ濃度RNOx_exest）は、「燃焼後に燃焼室内に残存するガスの全質量」に対する、「燃焼後に燃焼室内に残存するＮＯｘの全質量」の質量割合であって、下記(8)式に従って求めることができる。
【００７２】
RNOx_exest＝(NOxA＋NOxB)/(Gcyl＋qfinc)  ・・・(8)
【００７３】
上記(8)式に従って求められる推定排気ＮＯｘ濃度RNOx_exestの前回値は、排気通路（排気マニホールド４１）を流れる排ガス中のＮＯｘ濃度が排気還流管５１内を流れるＥＧＲガス中のＮＯｘ濃度に等しいとの仮定のもと、前述のごとく、上記吸気ＮＯｘ濃度RNOx_in（の今回値）を求める際に上記(6)式にて使用される。
【００７４】
また、排気通路（排気マニホールド４１、及び排気管４２）を流れる排ガス中のＮＯｘ濃度は同排気通路全域に渡って一定であると仮定すると、上記推定排気ＮＯｘ濃度RNOx_exestの値は、排気通路（具体的には、排気管４２の端部）から外部に排出される際の排ガス中のＮＯｘ濃度と等しくなる。
【００７５】
更には、通常の機関１０の運転状態（特に、定常運転状態）においては、排気通路（排気管４２）から外部へ排出される一作動サイクル（一排気行程）あたりの排ガスの質量は上記吸入新気量Gmと略等しくなる。以上のことから、排気通路を介して外部へ排出される排ガス中の一作動サイクルあたりのＮＯｘの質量（上記推定ＮＯｘ排出量NOxest）は、下記(9)式に従って求めることができる。これにより、ＥＧＲガス量Gegrが増加すると吸入新気量Gmが減少することで推定ＮＯｘ排出量NOxestが低下することになる。従って、ＥＧＲガス量が増加するとＮＯｘ排出量が低下するという現象が的確に表され得る。
【００７６】
NOxest＝RNOx_exest・Gm  ・・・(9)
【００７７】
以上、(1)〜(9)式を利用して、本装置は、燃料噴射気筒についての上記最終燃料噴射時期finjfinが到来する毎に、その直後の排気行程において同燃料噴射気筒の排気弁Voutから排出されることになるＮＯｘの質量、即ち推定ＮＯｘ排出量NOxestを推定する。以上が、ＮＯｘ排出量推定方法の概要である。
【００７８】
（燃料噴射制御の概要）
上記ＮＯｘ排出量推定方法を実施する本装置は、一作動サイクルあたりの目標ＮＯｘ排出量NOxtを、上記燃料噴射量qfinとエンジン回転速度NEとに基づいて逐次計算する。そして、本装置は、前回推定された推定ＮＯｘ排出量NOxestが目標ＮＯｘ排出量NOxtに一致するように、最終燃料噴射開始時期finjfin、及びＥＧＲ制御弁５２の開度をフィードバック制御する。
【００７９】
具体的には、前回推定された上記推定ＮＯｘ排出量NOxestの値が上記目標ＮＯｘ排出量NOxtよりも大きいとき、今回の燃料噴射気筒についての最終燃料噴射開始時期finjfinを基本燃料噴射時期finjbaseよりも所定量だけ遅らせ、且つ、ＥＧＲ制御弁５２の開度を現時点での値から所定開度だけ大きくする。これにより、今回の燃料噴射気筒についての最高火炎温度が低くなるように制御され、この結果、今回の燃料噴射気筒から外部へ排出される推定ＮＯｘ排出量NOxestが上記目標ＮＯｘ排出量NOxtに一致せしめられる。
【００８０】
一方、前回推定された上記推定ＮＯｘ排出量NOxestの値が上記目標ＮＯｘ排出量NOxtよりも小さいとき、今回の燃料噴射気筒についての最終燃料噴射開始時期finjfinを基本燃料噴射時期finjbaseよりも所定量だけ早め、且つ、ＥＧＲ制御弁５２の開度を現時点での値から所定開度だけ小さくする。これにより、今回の燃料噴射気筒についての最高火炎温度が高くなるように制御され、この結果、今回の燃料噴射気筒から外部へ排出される推定ＮＯｘ排出量NOxestが上記目標ＮＯｘ排出量NOxtに一致せしめられる。以上が、燃料噴射制御の概要である。
【００８１】
（推定燃焼発生ＮＯｘ率RNOx_burnestの実際の演算方法）
上記(2)式に従って推定燃焼発生ＮＯｘ率RNOx_burnestを演算するためには、「べき乗」の演算、及び「掛け算」の演算が必要となる。しかしながら、一般に、マイクロコンピュータを使用して「べき乗」の演算を実行すると計算負荷が増大し、同マイクロコンピュータを使用して「掛け算」の演算を実行すると計算精度が低下する傾向がある。よって、「べき乗」の演算、及び「掛け算」の演算を避けるため、本装置（ＣＰＵ６１）は、実際には、上記(2)式において両辺の自然対数をとることで得られる下記(10)式を利用して、テーブル検索と「足し算」の演算のみで推定燃焼発生ＮＯｘ率RNOx_burnestを計算する。
【００８２】
log(RNOx_burnest)＝K0＋K1・log(RO2c)＋K2・log(qfinc)＋K3・log(Pcrc)＋K4/Tflame  ・・・(10)
【００８３】
即ち、本装置は、上記(10)式の右辺の第２項〜第５項までの各項を求めるために予めＲＯＭ６２にそれぞれ記憶されているテーブルMaplog1(RO2c)、Maplog2(qfinc)、Maplog3(Pcrc)、及びMapinvpro(Tflame)に基づいて、テーブル検索値dataMap1(＝K1・log(RO2c))、dataMap2(＝K2・log(qfinc))、dataMap3(＝K3・log(Pcrc))、及びdataMap4(＝K4/Tflame)をそれぞれ決定し、「足し算」を伴う下記(11)式に従って「log(RNOx_burnest)」を求める。
【００８４】
log(RNOx_burnest)＝K0＋dataMap1＋dataMap2＋dataMap3＋dataMap4  ・・・(11)
【００８５】
そして、本装置は、上記（11）式に従って求められた「log(RNOx_burnest)」から推定燃焼発生ＮＯｘ率RNOx_burnestを求めるために予めＲＯＭ６２に記憶されているテーブルMapinvlog(log(RNOx_burnest))に基づいて同推定燃料発生ＮＯｘ率RNOx_burnestを求める。これにより、ＣＰＵ６１の計算負荷を軽減できるとともに計算精度の低下を防止できる。
【００８６】
（ＮＯｘ発生量推定モデル（適合定数）の学習）
次に、本装置が実行するＮＯｘ発生量推定モデル（適合定数）の学習について説明する。先に述べたように、上記ＮＯｘ発生量推定モデルを表す(2)式における適合定数K0〜K4は、上記マスター品を使用した実験により適合された値である。一方、このマスター品と、同マスター品と同型の大量生産された個々の機関との間には、上記「形状等の固体誤差」が非可否的に存在するから、上記マスター品に基づく適合定数K0〜K4を使用したＮＯｘ発生量推定モデルを一律に個々の機関に適用すると、上記推定燃焼発生ＮＯｘ率RNOx_burnest（従って、Ｂ領域燃焼発生ＮＯｘ量NOxB）の計算において、上記形状等の固体誤差に応じた誤差が個別に発生する。
【００８７】
換言すれば、上記ＮＯｘ発生量推定モデルを大量生産品である個々の機関に適用する場合、上記マスター品を使用して適合・決定された上記適合定数KO〜K4とは異なる最適な適合定数K0〜K4が個別に存在する。よって、本装置は、同本装置が適用された個々の機関毎に適合定数K0〜K4を最適な値に更新するため、機関１０の稼働中における所定の時期に、適合定数K0〜K4の学習・更新を実行する。先ず、適合定数K3（引数Pcrcに係わる適合定数）についての学習・更新の方法について説明する。
【００８８】
適合定数K3の学習・更新は、ＮＯｘ発生量推定モデルによる演算結果である上記推定燃焼発生ＮＯｘ率RNOx_burnest（推定ＮＯｘ発生量）の値が実際の燃焼発生ＮＯｘ率（検出ＮＯｘ発生量）と等しくなるように実行される必要がある。ここで、実際の燃焼発生ＮＯｘ率（以下、「検出燃焼発生ＮＯｘ率RNOx_burnact」と称呼する。）は、ＮＯｘ発生量検出手段としての排気ＮＯｘ濃度センサ７８の出力に基づく下記(12)式に従って取得することができる。
【００８９】
RNOx_burnact＝(RNOx_exact(Gcyl＋qfinc)-NOxA)/qfinc  ・・・(12)
【００９０】
上記(12)式は、上記(8)式において、「RNOx_exest」を「RNOx_exact」に置き換え、且つ、「NOxB」を「RNOx_burnact・qfinc」に置き換えた式を検出燃焼発生ＮＯｘ率RNOx_burnactについて解くことで得られる式である。上記(12)式において、RNOx_exactは排気ＮＯｘ濃度センサ７８により検出された排気ＮＯｘ濃度である。
【００９１】
即ち、適合定数K3は、具体的には、適合定数K3以外の学習時の適合定数K0〜K2,K4と、同学習時の引数RO2c,qfinc,Pcrc,Tflameとを使用したＮＯｘ発生量推定モデル（即ち、上記(2)式の右辺）による演算値を上記(12)式にて求められる検出燃焼発生ＮＯｘ率RNOx_burnactと等しい値とするための値として学習・更新される。
【００９２】
従って、係る適合定数K3の学習を精度良く、且つ確実に実行するためには、ＮＯｘ発生量推定モデルの引数RO2c,qfinc,Pcrc,Tflame、及び上記検出燃焼発生ＮＯｘ率RNOx_burnactが、総て正常な値である必要がある。また、適合定数K3の学習を更に一層精度良く実行するためには、適合定数K3に係わる引数Pcrc以外の引数の値を実質的に維持したまま同引数Pcrcの値のみを上記学習時の値の近傍であって同学習時の値とは異なる値に設定した場合における他の学習結果をも考慮することが好ましいと考えられる。また、係る学習を実行する際のＮＯｘ発生量推定モデルの引数RO2c,qfinc,Pcrc,Tflame、及び上記検出燃焼発生ＮＯｘ率RNOx_burnactは安定した値となっていることが好ましいことから、係る学習は機関１０が所定の定常運転状態となっているときに実行されることが好ましい。
【００９３】
そこで、本装置は、係る学習を開始するに際し、先ず、機関１０が所定の定常運転状態となっていることを条件に、ＮＯｘ発生量推定モデルの引数RO2c,qfinc,Pcrc,Tflameが総て正常値であるか否かを判定する。具体的には、下死点時吸気酸素濃度RO2cの値は、同RO2cの値が吸気酸素濃度センサ７６の出力そのものに基づく値であることから、同吸気酸素濃度センサ７６において断線等の電気的接続に係わる異常が発生している場合に異常値であると判定され、同異常が発生していない場合に正常値であると判定される。なお、最高火炎温度Tflameの値は前述のごとく少なくとも下死点時吸気酸素濃度RO2cに基づいて取得される値であるから、本例では、下死点時吸気酸素濃度RO2cの値が正常値であるか否かの判定結果はそのまま最高火炎温度Tflameの値が正常値であるか否かの判定結果を表す。
【００９４】
また、今回の指令燃料噴射量qfincの値は、後述するように同qfincの値が所定のテーブル検索値であることから、同qfincの値と今回の燃料噴射量の実測値との差が所定値以上である場合に異常値であると判定され、同差が同所定値未満である場合に正常値であると判定される。今回の燃料噴射量の実測値は、例えば、上記今回の吸気行程あたりの吸入新気量Gmを、空気過剰率センサ７７により検出される空気過剰率λと理論空燃比stoich（例えば、１４．６）とで除することで取得することができる。
【００９５】
同様に、今回の指令燃料噴射圧力Pcrcの値は、後述するように同Pcrcの値が所定のテーブル検索値であることから、同Pcrcの値と燃料噴射圧力センサ７９により検出される検出燃料噴射圧力Pcractとの差が所定値以上である場合に異常値であると判定され、同差が同所定値未満である場合に正常値であると判定される。
【００９６】
次に、本装置は、ＮＯｘ発生量推定モデルの引数RO2c,qfinc,Pcrc,Tflameが総て正常値であることを条件に、この状態において排気ＮＯｘ濃度センサ７８の出力と、上記(12)式とに基づいて得られる上記検出燃焼発生ＮＯｘ率RNOx_burnactnorm（＝RNOx_burnact）が正常値であるか否かを判定する。具体的には、検出燃焼発生ＮＯｘ率RNOx_burnactnormの値は、同検出燃焼発生ＮＯｘ率RNOx_burnactnormと上記(2)式に従って得られる推定燃焼発生ＮＯｘ率RNOx_burnestとの偏差の程度が所定の程度以上である場合に異常値であると判定され、同偏差の程度が同所定の程度未満である場合に正常値であると判定される。
【００９７】
この結果、本装置は、上記検出燃焼発生ＮＯｘ率RNOx_burnactnormが正常値であると判定した場合、適合定数K3の学習を実行する。これにより、適合定数K3の学習値K3normが、適合定数K3以外の現時点での適合定数K0〜K2,K4と、現時点での引数RO2c,qfinc,Pcrc,Tflameとを使用したＮＯｘ発生量推定モデルによる演算値を上記検出燃焼発生ＮＯｘ率RNOx_burnactnormと等しい値とするための値として求められる。
【００９８】
次いで、本装置は、引数Pcrc以外の引数の値を実質的に維持したまま指令最終燃料噴射圧力Pcrfin（即ち、引数Pcrc）を現時点での値（即ち、上記テーブル検索値）から所定量（割合）だけ増加させた値（増加値）に変更・設定する。これにより実際の燃料噴射圧力が増加せしめられる。そして、所定時間が経過して機関１０が所定の定常運転状態になっていることを条件に、本装置は、適合定数K3の他の学習（噴射圧力増加時学習）を実行する。
【００９９】
即ち、本装置は、この状態（Pcrcが上記増加値に設定されている状態）において排気ＮＯｘ濃度センサ７８の出力と、上記(12)式とに基づいて得られる上記検出燃焼発生ＮＯｘ率RNOx_burnactup（＝RNOx_burnact）を取得し、適合定数K3の噴射圧力増加時学習値K3upを、適合定数K3以外の現時点での適合定数K0〜K2,K4と、現時点での引数RO2c,qfinc,Pcrc,Tflame（Pcrcは上記増加値）とを使用したＮＯｘ発生量推定モデルによる演算値を上記検出燃焼発生ＮＯｘ率RNOx_burnactupと等しい値とするための値として求める。
【０１００】
更に、本装置は、引数Pcrc以外の引数の値を実質的に維持したまま指令最終燃料噴射圧力Pcrfin（即ち、引数Pcrc）を上記増加値から、上記テーブル検索値から所定量（割合）だけ減少させた値（減少値）に変更・設定することで適合定数K3の他の学習（噴射圧力減少時学習）を実行する。
【０１０１】
即ち、本装置は、この状態（Pcrcが上記減少値に設定されている状態）において排気ＮＯｘ濃度センサ７８の出力と、上記(12)式とに基づいて得られる上記検出燃焼発生ＮＯｘ率RNOx_burnactdown（＝RNOx_burnact）を取得し、適合定数K3の噴射圧力減少時学習値K3downを、適合定数K3以外の現時点での適合定数K0〜K2,K4と、現時点での引数RO2c,qfinc,Pcrc,Tflame（Pcrcは上記減少値）とを使用したＮＯｘ発生量推定モデルによる演算値を上記検出燃焼発生ＮＯｘ率RNOx_burnactdownと等しい値とするための値として求める。
【０１０２】
そして、本装置は、上記学習値K3norm，噴射圧力増加時学習値K3up，及び噴射圧力減少時学習値K3downの平均値を最終学習値として設定し、適合定数K3の値を現時点での値から同最終学習値に更新する。以上のように、引数Pcrcの上記テーブル検索値、上記増加値、上記減少値の各値に対応する検出燃焼発生ＮＯｘ率RNOx_burnactnorm，RNOx_burnactup，RNOx_burnactdownがそれぞれ取得されるとともに、これら複数の検出燃焼発生ＮＯｘ率に基づいて適合定数K3が更新される。
【０１０３】
以上、適合定数K3の学習・更新について説明した。他の適合定数の学習・更新についても同様に行うことができる。従って、ここではそれらの詳細な説明を省略する。以上が、ＮＯｘ発生量推定モデル（適合定数）の学習の概要である。
【０１０４】
（実際の作動）
次に、上記のように構成された内燃機関の制御装置の実際の作動について説明する。
<燃料噴射量等の制御>
ＣＰＵ６１は、図３にフローチャートにより示した燃料噴射量等の制御を行うためのルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ６１はステップ３００から処理を開始し、ステップ３０５に進んでアクセル開度Accp、エンジン回転速度NE、及び図４に示したテーブル（マップ）Mapqfinから（指令）燃料噴射量qfinを求める。テーブルMapqfinは、アクセル開度Accp及びエンジン回転速度NEと燃料噴射量qfinとの関係を規定するテーブルであり、ＲＯＭ６２内に格納されている。
【０１０５】
次いで、ＣＰＵ６１はステップ３１０に進み、燃料噴射量qfin、エンジン回転速度NE、及び図５に示したテーブルMapfinjbaseから基本燃料噴射時期finjbaseを決定する。テーブルMapfinjbaseは、燃料噴射量qfin及びエンジン回転速度NEと基本燃料噴射時期finjbaseとの関係を規定するテーブルであり、ＲＯＭ６２内に格納されている。
【０１０６】
その後、ＣＰＵ６１はステップ３１５に進んで、燃料噴射量qfin、エンジン回転速度NE、及び図６に示したテーブルMapPcrbaseからテーブル検索値である基本燃料噴射圧力Pcrbaseを決定する。テーブルMapPcrbaseは、燃料噴射量qfin及びエンジン回転速度NEと基本燃料噴射圧力Pcrbaseとの関係を規定するテーブルであり、ＲＯＭ６２内に格納されている。
【０１０７】
続いて、ＣＰＵ６１はステップ３２０に進んで、上記基本燃料噴射圧力Pcrbaseに係数αを乗じた値を最終燃料噴射圧力Pcrfinとして設定する。ここで、係数αは後述するルーチンにより設定・変更される値であって、通常は「１．００」であり、後述する適合定数の学習を実行するために燃料噴射圧力を強制的に変更するとき、「１．００」以外の値に設定される。
【０１０８】
次に、ＣＰＵ６１はステップ３２５に進み、燃料噴射量qfin、エンジン回転速度NE、及び図７に示したテーブルMapNOxtから目標ＮＯｘ排出量NOxtを決定する。テーブルMapNOxtは、燃料噴射量qfin及びエンジン回転速度NEと目標ＮＯｘ排出量NOxtとの関係を規定するテーブルであり、ＲＯＭ６２内に格納されている。
【０１０９】
次いで、ＣＰＵ６１はステップ３３０に進んで、前記決定した目標ＮＯｘ排出量NOxtから後述するルーチンにより求められている最新の（具体的には、前回の燃料噴射時期に演算された）推定ＮＯｘ排出量NOxestを減じた値をＮＯｘ排出量偏差ΔNOxとして格納する。
【０１１０】
続いて、ＣＰＵ６１はステップ３３５に進んで、噴射時期補正値Δθを、前記ＮＯｘ排出量偏差ΔNOxと図８に示したテーブルMapΔθとから決定する。テーブルMapΔθは、ＮＯｘ排出量偏差ΔNOxと噴射時期補正値Δθとの関係を規定するテーブルであり、ＲＯＭ６２内に格納されている。
【０１１１】
次いで、ＣＰＵ６１はステップ３４０に進み、基本噴射時期finjbaseを噴射時期補正値Δθで補正して最終燃料噴射時期finjfinを決定する。これにより、ＮＯｘ排出量偏差ΔNOxに応じて噴射時期が補正されることになる。この場合、図８から明らかなように、ＮＯｘ排出量偏差ΔNOxが正の大きい値になるほど噴射時期補正値Δθが正の大きな値となって最終燃料噴射時期finjfinが進角側となり、同ＮＯｘ排出量偏差ΔNOxが負の大きい値（絶対値が大きい値）になるほど噴射時期補正値Δθは負の大きな値となって最終燃料噴射時期finjfinが遅角側に移行される。
【０１１２】
続いて、ＣＰＵ６１はステップ３４５に進み、燃料噴射気筒についての噴射開始時期（即ち、上記決定された最終燃料噴射時期finjfin）が到来したか否かを判定し、「Ｎｏ」と判定する場合はステップ３９５に直ちに進んで本ルーチンを一旦終了する。
【０１１３】
一方、ステップ３４５の判定において「Ｙｅｓ」と判定する場合、ＣＰＵ６１はステップ３５０に進んで上記決定された（指令）燃料噴射量qfinの燃料を燃料噴射気筒についての燃料噴射弁２１から上記決定された最終燃料噴射圧力Pcrfinをもって噴射するとともに、続くステップ３５５にて上記ＮＯｘ排出量偏差ΔNOxが正の値であるか否かを判定し、「Ｙｅｓ」と判定する場合、ステップ３６０に進んでＥＧＲ制御弁５２の開度を現時点での値よりも所定開度だけ小さくした後、ステップ３７５に進む。
【０１１４】
ステップ３５５の判定において「Ｎｏ」と判定する場合、ＣＰＵ６１はステップ３６５に進み、上記ＮＯｘ排出量偏差ΔNOxが負の値であるか否かを判定する。ステップ３６５の判定において、ＣＰＵ６１は「Ｙｅｓ」と判定する場合、ステップ３７０に進んでＥＧＲ制御弁５２の開度を現時点での値よりも所定開度だけ大きくした後にステップ３７５に進む一方、「Ｎｏ」と判定する場合（即ち、ＮＯｘ排出量偏差ΔNOxの値が「０」のとき）、ＥＧＲ制御弁５２の開度を変更することなくステップ３７５に進む。
【０１１５】
このようにして、ＮＯｘ排出量偏差ΔNOxに応じてＥＧＲ制御弁５２の開度が変更される。そして、ステップ３７５に進むと、ＣＰＵ６１は実際に噴射した上記燃料噴射量qfinの値を今回の燃料噴射量qfincとして格納し、続くステップ３８０にて上記最終燃料噴射圧力Pcrfinの値を今回の燃料噴射圧力Pcrcとして格納した後、ステップ３９５に進んで本ルーチンを一旦終了する。以上により、燃料噴射量、燃料噴射時期、燃料噴射圧力、及びＥＧＲ制御弁５２の開度の制御が達成される。
【０１１６】
<推定ＮＯｘ排出量の計算>
また、ＣＰＵ６１は、図９にフローチャートにより示した推定ＮＯｘ排出量NOxestの計算を行うためのルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ６１はステップ９００から処理を開始し、ステップ９０５に進んで現時点がATDC-180°に一致しているか否かを判定する。
【０１１７】
いま、現時点がATDC-180°より前であるものとして説明を続けると、ＣＰＵ６１はステップ９０５にて「Ｎｏ」と判定してステップ９３５に直ちに進み、燃料噴射気筒についての燃料噴射開始時期（即ち、上記最終燃料噴射時期finjfin）が到来したか否かを判定する。現時点はATDC-180°よりも前であるから、ＣＰＵ６１はステップ９３５にて「Ｎｏ」と判定し、ステップ９９５に直ちに進んで本ルーチンを一旦終了する。
【０１１８】
以降、ＣＰＵ６１はATDC-180°が到来するまでの間、ステップ９００、９０５、９３５、９９５の処理を繰り返し実行する。そして、ATDC-180°が到来すると、ＣＰＵ６１はステップ９０５に進んだとき「Ｙｅｓ」と判定してステップ９１０に進むようになり、ステップ９１０にて、吸気温センサ７２、吸気管圧力センサ７３、エアフローメータ７１、及びクランクポジションセンサ７４によりそれぞれ検出される現時点（即ち、ATDC-180°）での吸気温度Tb、吸気管圧力Pb、吸入新気流量Ga、及びエンジン回転速度NEを、それぞれ、下死点時筒内ガス温度Ta0、下死点時筒内ガス圧力Pa0、下死点時吸入新気流量Ga0、及び下死点時エンジン回転速度NE0として格納する。
【０１１９】
次いで、ＣＰＵ６１はステップ９１５に進み、吸気酸素濃度センサ７６により検出される現時点（即ち、ATDC-180°）での吸気酸素濃度RO2_inを下死点時吸気酸素濃度RO2cとして格納し、続くステップ９２０にて、上記(3)式に従って筒内総ガス量Gcylを求める。ここで、下死点時筒内ガス圧力Pa0、及び下死点時筒内ガス温度Ta0としては、ステップ９１０にて格納されている値が用いられる。
【０１２０】
続いて、ＣＰＵ６１はステップ９２５に進んで、上記下死点時吸入新気流量Ga0と、上記下死点時エンジン回転速度NE0と、上記関数ｆとに基づいて吸入新気量Gmを求め、続くステップ９３０にて、ステップ９２０にて求めた筒内総ガス量Gcylと、前記吸入新気量Gmと、上記(7)式とに基づいてＥＧＲガス量Gegrを求める。そして、ＣＰＵ６１はステップ９３５に進んで「Ｎｏ」と判定してステップ９９５に直ちに進んで本ルーチンを一旦終了する。
【０１２１】
以降、ＣＰＵ６１は燃料噴射時期（即ち、上記最終燃料噴射時期finjfin）が到来するまでの間、ステップ９００、９０５、９３５、９９５の処理を再び繰り返し実行する。そして、上記最終燃料噴射時期finjfinが到来すると、ＣＰＵ６１はステップ９３５にて「Ｙｅｓ」と判定してステップ９４０に進むようになり、ステップ９４０にて上記(6)式に従って吸気ＮＯｘ濃度RNOx_inを求める。ここで、ＥＧＲガス量Gegr、及び筒内総ガス量Gcylとして、ステップ９３０、及びステップ９２０にて求められた値がそれぞれ使用される。推定排気ＮＯｘ濃度RNOx_exestとしては、前回の燃料噴射開始時期において後述するステップ９６０にて求められている値が使用される。
【０１２２】
続いて、ＣＰＵ６１はステップ９４５に進んで、上記(4)式、及び上記(5)式に相当するステップ９４５内に記載の式に基づいてＡ領域還流ＮＯｘ量NOxAを求める。ここで、今回の燃料噴射量qfincとしては、図３のステップ３７５にて格納されている最新の値が使用される。次に、ＣＰＵ６１はステップ９５０を経由して図１０のステップ１０００に進み、推定燃焼発生ＮＯｘ率RNOx_burnestの計算を行うための処理を開始する。
【０１２３】
即ち、ＣＰＵ６１はステップ１０００からステップ１００５に進むと、先ず、先のステップ９１５にて求めた下死点時吸気酸素濃度RO2cの最新値と、先のステップ９１０にて求めた下死点時筒内ガス温度Ta0の最新値と、及び最高火炎温度Tflameを求めるためのステップ１００５内に記載されたテーブルと、に基づいて最高火炎温度Tflameを推定・決定する。
【０１２４】
次に、ＣＰＵ６１はステップ１０１０に進んで図９のステップ９１５にて求められている下死点時吸気酸素濃度RO2cの最新値と前記テーブルMaplog1とに基づいて前記テーブル検索値dataMap1(＝K1・log(RO2c))を求める。
【０１２５】
同様に、ＣＰＵ６１はステップ１０１５に進んで図３のステップ３７５にて格納されている今回の燃料噴射量qfincと前記テーブルMaplog2とに基づいて前記テーブル検索値dataMap2(＝K2・log(qfinc))を求め、続くステップ１０２０にて図３のステップ３８０にて格納されている今回の燃料噴射圧力Pcrcと前記テーブルMaplog3とに基づいて前記テーブル検索値dataMap3(＝K3・log(Pcrc))を求め、続くステップ１０２５にてステップ１００５にて求めた最新の最高火炎温度Tflameと前記テーブルMapinvproとに基づいて前記テーブル検索値dataMap4(＝K4/Tflame)を求める。
【０１２６】
次いで、ＣＰＵ６１はステップ１０３０に進んで、上記(11)式に従って「log(RNOx_burnest)」を求め、続くステップ１０３５にて、同log(RNOx_burnest)と前記テーブルMapinvlogとに基づいて推定燃焼発生ＮＯｘ率RNOx_burnestを求めた後、ステップ１０９５を経由して、図９のステップ９５５に進む。
【０１２７】
ＣＰＵ６１はステップ９５５に進むと、上記(1)式に従ってＢ領域燃焼発生ＮＯｘ量NOxBを求める。次いで、ＣＰＵ６１はステップ９６０に進んで、上記(8)式に従って推定排気ＮＯｘ濃度RNOx_exestを求めるとともに、続くステップ９６５にて上記(9)式に従って推定ＮＯｘ排出量NOxestを求め、ステップ９９５に進んで本ルーチンを一旦終了する。以降、ＣＰＵ６１は次の燃料噴射気筒についてのATDC-180°が到来するまでの間、ステップ９００、９０５、９３５、９９５の処理を繰り返し実行する。
【０１２８】
以上のようにして、新たな推定ＮＯｘ排出量NOxestが燃料噴射開始時期が到来する毎に求められていく。そして、この新たな推定ＮＯｘ排出量NOxestは、前述のごとく、図３のステップ３３０にて使用され、この結果、次の燃料噴射気筒についての最終燃料噴射開始時期finjfin、及びＥＧＲ制御弁５２の開度が同新たな推定ＮＯｘ排出量NOxestに基づいてフィードバック制御されていく。
【０１２９】
<適合定数K3の学習・更新>
また、ＣＰＵ６１は、図１１にフローチャートにより示した適合定数K3の学習を開始するためのルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ６１はステップ１１００から処理を開始し、ステップ１１０５に進んで変数ＸＨＡＮの値が「０」になっているか否かを判定し、「Ｎｏ」と判定する場合、ステップ１１９５に直ちに進んで本ルーチンを一旦終了する。ここで、変数ＸＨＡＮは、その値が「０」になっているとき適合定数の学習が実行されていないことを示し、その値が「１」であるとき噴射圧力増加時学習が実行されていることを示し、その値が「２」であるとき噴射圧力減少時学習が実行されていることを示す。
【０１３０】
ＣＰＵ６１はステップ１１０５にて「Ｙｅｓ」と判定する場合、ステップ１１１０に進み、変数αの値を「１．００」に設定する。続いて、ＣＰＵ６１は、ステップ１１１５にて機関１０が所定の定常運転状態にあるか否かを判定し、「Ｙｅｓ」と判定する場合、続くステップ１１２０にて現時点での引数RO2c（即ち、先のステップ９１５にて求められているRO2cの最新値）が正常値であるか否か（及び、引数Tflameが正常値であるか否か）を判定し、「Ｙｅｓ」と判定する場合、続くステップ１１２５にて現時点での引数qfinc（即ち、先のステップ３７５にて求められているqfincの最新値）が正常値であるか否かを判定し、「Ｙｅｓ」と判定する場合、続くステップ１１３０にて現時点での引数Pcrc（即ち、先のステップ３８０にて求められているPcrcの最新値）が正常値であるか否かを判定する。そして、ステップ１１１５〜１１３０の何れかの判定において「Ｎｏ」と判定する場合、ＣＰＵ６１はステップ１１９５に直ちに進んで本ルーチンを一旦終了する。
【０１３１】
いま、変数ＸＨＡＮの値が「０」になっていて、且つ、機関１０が所定の定常運転状態にあって、且つ、引数RO2c（及びTflame），qfinc，Pcrcが総て正常値であるものとすると、ＣＰＵ６１はステップ１１１０〜１１３０を経てステップ１１３５に進んで、現時点で排気ＮＯｘ濃度センサ７８により検出されている排気ＮＯｘ濃度RNOx_exactの値を検出排気ＮＯｘ濃度RNOx_exactnormとして格納する。
【０１３２】
次いで、ＣＰＵ６１はステップ１１４０に進み、上記検出排気ＮＯｘ濃度RNOx_exactnormと、先のステップ９２０にて求めた最新の筒内総ガス量Gcylと、先のステップ３７５にて格納した今回の燃料噴射量qfincと、先のステップ９４５にて求めた最新のＡ領域還流ＮＯｘ量NOxAと、上記(12)式に相当するステップ１１４０内に記載の式とに基づいて検出燃焼発生ＮＯｘ率RNOx_burnactnormを求め、続くステップ１１４５にて、上記検出燃焼発生ＮＯｘ率RNOx_burnactnormと、先のステップ９５０にて求めた最新の推定燃焼発生ＮＯｘ率RNOx_burnestと、ステップ１１４５内に記載の式とに基づいて、同検出燃焼発生ＮＯｘ率RNOx_burnactnormと同推定燃焼発生ＮＯｘ率RNOx_burnestとの偏差の程度が所定の程度未満であるか（即ち、検出燃焼発生ＮＯｘ率RNOx_burnactnormが正常値であるか）否かを判定し、「Ｎｏ」と判定する場合、ステップ１１９５に直ちに進む。ここで、値Z0は正の小さい値である。
【０１３３】
いま、検出燃焼発生ＮＯｘ率RNOx_burnactnormが正常値であるものとすると、ＣＰＵ６１はステップ１１４５の判定において「Ｙｅｓ」と判定してステップ１１５０に進み、上述した手法に基づいて引数Pcrcがテーブル検索値Pcrbaseとなっている場合の学習値K3normを計算する。そして、ＣＰＵ６１はステップ１１５５に進んで変数ＸＨＡＮの値を「０」から「１」に変更し、続くステップ１１６０にて係数αの値を「1＋y0」に設定した後、ステップ１１９５に進んで本ルーチンを一旦終了する。ここで、値y0は正の小さい値である。
【０１３４】
この結果、図３のステップ３２０の実行により、最終燃料噴射圧力Pcrfinがテーブル検索値である基本燃料噴射圧力Pcrbaseよりも若干大きい値（即ち、上記増加値）に設定され、実際の燃料噴射圧力が同増加値になるように制御されるようになる。また、これ以降、変数ＸＨＡＮの値が「１」になっているから、ＣＰＵ６１はステップ１１０５に進んだとき「Ｎｏ」と判定してステップ１１９５に直ちに進むようになる。
【０１３５】
また、ＣＰＵ６１は、図１２にフローチャートにより示した噴射圧力増加時学習を実行するためのルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ６１はステップ１２００から処理を開始し、ステップ１２０５に進んで変数ＸＨＡＮの値が「１」になっているか否かを判定し、「Ｎｏ」と判定する場合、ステップ１２９５に直ちに進んで本ルーチンを一旦終了する。
【０１３６】
いま、先のステップ１１５５の実行により変数ＸＨＡＮの値が「０」から「１」に変更（即ち、引数Pcrcがテーブル検索値から上記増加値に変更）された直後であるものとすると、ＣＰＵ６１はステップ１２０５にて「Ｙｅｓ」と判定してステップ１２１０に進み、変数ＸＨＡＮの値が「０」から「１」に変更された後から所定時間が経過し、且つ、機関１０が定常運転状態になっているか否かを判定する。
【０１３７】
現時点は、変数ＸＨＡＮの値が「０」から「１」に変更された直後であるから、ステップはステップ１２１０にて「Ｎｏ」と判定してステップ１２９５に直ちに進んで本ルーチンを一旦終了する。以降、ＣＰＵ６１はステップ１２１０の条件が成立するまでステップ１２００〜１２１０、１２９５の処理を繰り返し実行する。
【０１３８】
そして、上記所定時間が経過して、且つ、機関１０が定常運転状態になっていると、ＣＰＵ６１はステップ１２１０にて「Ｙｅｓ」と判定してステップ１２１５に進み、現時点で排気ＮＯｘ濃度センサ７８により検出されている排気ＮＯｘ濃度RNOx_exactの値を検出排気ＮＯｘ濃度RNOx_exactupとして格納し、続くステップ１２２０にて、先のステップ１１４０と同様にして、上記検出排気ＮＯｘ濃度RNOx_exactupに基づいて検出燃焼発生ＮＯｘ率RNOx_burnactupを求める。
【０１３９】
続いて、ＣＰＵ６１はステップ１２２５に進んで、上述した手法に基づいて引数Pcrcが上記増加値となっている場合の噴射圧力増加時学習値K3upを計算する。そして、ＣＰＵ６１はステップ１２３０に進んで変数ＸＨＡＮの値を「１」から「２」に変更し、続くステップ１２３５にて係数αの値を「1−y0」に設定した後、ステップ１２９５に進んで本ルーチンを一旦終了する。
【０１４０】
この結果、図３のステップ３２０の実行により、最終燃料噴射圧力Pcrfinがテーブル検索値である基本燃料噴射圧力Pcrbaseよりも若干小さい値（即ち、上記減少値）に設定され、実際の燃料噴射圧力が同減少値になるように制御されるようになる。また、これ以降、変数ＸＨＡＮの値が「２」になっているから、ＣＰＵ６１はステップ１２０５に進んだとき「Ｎｏ」と判定してステップ１２９５に直ちに進むようになる。
【０１４１】
同様に、ＣＰＵ６１は、図１３にフローチャートにより示した噴射圧力減少時学習を実行するためのルーチンを所定時間の経過毎に繰り返し実行するようになっている。従って、所定のタイミングになると、ＣＰＵ６１はステップ１３００から処理を開始し、ステップ１３０５に進んで変数ＸＨＡＮの値が「２」になっているか否かを判定する。
【０１４２】
いま、先のステップ１２３０の実行により変数ＸＨＡＮの値が「１」から「２」に変更（即ち、引数Pcrcが上記増加値から上記減少値に変更）された直後であるものとすると、ＣＰＵ６１はステップ１３０５にて「Ｙｅｓ」と判定してステップ１３１０に進み、変数ＸＨＡＮの値が「１」から「２」に変更された後から所定時間が経過し、且つ、機関１０が定常運転状態になっているか否かを判定する。
【０１４３】
現時点は、変数ＸＨＡＮの値が「１」から「２」に変更された直後であるから、ステップはステップ１３１０にて「Ｎｏ」と判定してステップ１３９５に直ちに進む。以降、ＣＰＵ６１はステップ１３１０の条件が成立するまでステップ１３００〜１３１０、１３９５の処理を繰り返し実行する。
【０１４４】
そして、上記所定時間が経過して、且つ、機関１０が定常運転状態になっていると、ＣＰＵ６１はステップ１３１０にて「Ｙｅｓ」と判定してステップ１３１５〜１３２０に順次進み、先のステップ１２１５〜１２２０と同様にして、現時点で排気ＮＯｘ濃度センサ７８により検出されている排気ＮＯｘ濃度RNOx_exactである検出排気ＮＯｘ濃度RNOx_exactdownに基づいて検出燃焼発生ＮＯｘ率RNOx_burnactdownを求める。
【０１４５】
続いて、ＣＰＵ６１はステップ１３２５に進んで、上述した手法に基づいて引数Pcrcが上記減少値となっている場合の噴射圧力減少時学習値K3downを計算する。そして、ＣＰＵ６１はステップ１３３０に進んで変数ＸＨＡＮの値を「２」から「０」に変更し、続くステップ１３３５にて、先のステップ１１５０、ステップ１２２５、及びステップ１３２５にてそれぞれ求めた学習値K3norm、噴射圧力増加時学習値K3up、及び噴射圧力減少時学習値K3downの平均値を最終学習値として設定し、適合定数K3を同最終学習値になるように更新した後、ステップ１３９５に進んで本ルーチンを一旦終了する。
【０１４６】
以降、変数ＸＨＡＮの値が「０」になっているから、ＣＰＵ６１はステップ１３０５に進んだとき「Ｎｏ」と判定してステップ１３９５に直ちに進むようになる。また、図１１のステップ１１０５に進んだとき「Ｙｅｓ」と判定してステップ１１１０に進むようになり、この結果、係数αの値が再び「１．００」に戻されるとともに、図３のステップ３２０の実行により、最終燃料噴射圧力Pcrfinがテーブル検索値である基本燃料噴射圧力Pcrbaseと等しい値に設定され、実際の燃料噴射圧力が同テーブル検索値になるように制御されるようになる。そして、これ以降、ステップ１１１５〜１１３０、１１４５の条件が成立する毎に適合定数K3の学習・更新が実行されていく。
【０１４７】
以上、説明した図１１〜図１３に示したルーチンは、適合定数K3についての学習・更新を行うためのルーチンである。ＣＰＵ６１は実際には、その他の適合定数についての学習・更新を行うための図１１〜図１３に相当する図示しないルーチンをも所定時間の経過毎に繰り返し実行しているが、ここでは、その詳細は説明を省略する。なお、適合定数K1を学習・更新する場合において、適合定数K1に係わる引数RO2cの値をその時点での値から所定量だけ増減させるためには、例えば、ＥＧＲ制御弁５２の開度をその時点の値より所定開度だけ増減させればよい。
【０１４８】
以上、説明したように、本発明の実施形態に係る内燃機関のＮＯｘ発生量推定モデルの学習方法によれば、適合定数を含む実験式である上記(2)式にて表されるＮＯｘ発生量推定モデルの引数RO2c,qfinc,Pcrc,Tflameが総て正常値であり、且つ、検出ＮＯｘ発生量（検出燃焼発生ＮＯｘ率RNOx_burnact）が正常値となっている場合にのみ、同正常値である検出ＮＯｘ発生量に基づいて適合定数が個々の機関毎に更新され得る。この結果、上記「形状等の固体誤差」の影響が解消されて個々の機関においてＮＯｘ発生量（Ｂ領域燃焼発生ＮＯｘ量NOxB）がそれぞれ確実に精度良く推定され得るように同個々の機関毎にＮＯｘ発生量推定モデルを学習することができた。
【０１４９】
本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、上記実施形態においては、ＮＯｘ発生量推定モデルの引数RO2cとして吸気酸素濃度センサ７６により検出された検出値を採用しているが、吸気酸素濃度を求めるための所定の公知の推定式に基づいて取得された推定値を引数RO2cとして採用するように構成してもよい。この場合、引数RO2cは、同引数RO2cの値と吸気酸素濃度センサ７６により検出される吸気酸素濃度RO2_inとの差が所定値以上である場合に異常値であると判定され、同差が同所定値未満である場合に正常値であると判定される。
【０１５０】
また、上記実施形態においては、ＮＯｘ発生量推定モデルの引数qfincとしてテーブル検索値を採用しているが、空気過剰率センサ７７により検出される空気過剰率λに基づく燃料噴射量の実測値を引数qfincとして採用するように構成してもよい。この場合、引数qfincは、空気過剰率センサ７７において断線等の電気的接続に係わる異常が発生している場合に異常値であると判定され、同異常が発生していない場合に正常値であると判定される。
【０１５１】
また、上記実施形態においては、ＮＯｘ発生量推定モデルの引数Pcrcとしてテーブル検索値を採用しているが、燃料噴射圧力センサ７９により検出される燃料噴射圧力Pcractに基づく燃料噴射圧力の実測値を引数Pcrcとして採用するように構成してもよい。この場合、引数Pcrcは、燃料噴射圧力センサ７９において断線等の電気的接続に係わる異常が発生している場合に異常値であると判定され、同異常が発生していない場合に正常値であると判定される。
【０１５２】
また、上記実施形態においては、燃料噴射圧力をテーブル検索値よりも減少させた値である上記減少値（或いは、燃料噴射圧力をテーブル検索値よりも増加させた値である上記増加値）に設定した場合において、失火等の燃焼に係わる異常が発生した場合、上記ＮＯｘ発生量推定モデル（即ち、適合定数K3）の学習を中止するように構成してもよい。
【図面の簡単な説明】
【０１５３】
【図１】本発明の実施形態に係る内燃機関のＮＯｘ排出量推定方法を実施する内燃機関の制御装置を４気筒内燃機関（ディーゼル機関）に適用したシステム全体の概略構成図である。
【図２】或る一つの気筒のシリンダ内(筒内)に吸気マニホールドからガスが吸入され、筒内に吸入された筒内ガスが排気マニホールドへ排出される様子を模式的に示した図である。
【図３】図１に示したＣＰＵが実行する燃料噴射量等を制御するためのルーチンを示したフローチャートである。
【図４】図１に示したＣＰＵが図３に示したルーチンを実行する際に参照する燃料噴射量を決定するためのテーブルである。
【図５】図１に示したＣＰＵが図３に示したルーチンを実行する際に参照する基本燃料噴射時期を決定するためのテーブルである。
【図６】図１に示したＣＰＵが図３に示したルーチンを実行する際に参照する基本燃料噴射圧力を決定するためのテーブルである。
【図７】図１に示したＣＰＵが図３に示したルーチンを実行する際に参照する目標ＮＯｘ排出量を決定するためのテーブルである。
【図８】図１に示したＣＰＵが図３に示したルーチンを実行する際に参照する噴射時期補正値を決定するためのテーブルである。
【図９】図１に示したＣＰＵが実行するＮＯｘ排出量（推定ＮＯｘ排出量）の計算を実行するためのルーチンを示したフローチャートである。
【図１０】図１に示したＣＰＵが実行する推定燃焼発生ＮＯｘ率の計算を実行するためのルーチンを示したフローチャートである。
【図１１】図１に示したＣＰＵが実行する適合定数の学習を開始するためのルーチンを示したフローチャートである。
【図１２】図１に示したＣＰＵが実行する噴射圧力増加時学習を実行するためのルーチンを示したフローチャートである。
【図１３】図１に示したＣＰＵが実行する噴射圧力減少時学習を実行するためのルーチンを示したフローチャートである。
【符号の説明】
【０１５４】
２１…燃料噴射弁、２２…燃料噴射用ポンプ、３１…吸気マニホールド、３２…吸気管、４１…排気マニホールド、４２…排気管、５０…ＥＧＲ装置、５２…ＥＧＲ制御弁、６０…電気制御装置、６１…ＣＰＵ、７１…エアフローメータ、７２…吸気温センサ、７３…吸気管圧力センサ、７４…クランクポジションセンサ、７６…吸気酸素濃度センサ、７７…空気過剰率センサ、７８…排気ＮＯｘ濃度センサ、７９…燃料噴射圧力センサ
【図１】
2005180219.tif 000003
【図２】
2005180219.tif 000004
【図３】
2005180219.tif 000005
【図４】
2005180219.tif 000006
【図５】
2005180219.tif 000007
【図６】
2005180219.tif 000008
【図７】
2005180219.tif 000009
【図８】
2005180219.tif 000010
【図９】
2005180219.tif 000011
【図１０】
2005180219.tif 000012
【図１１】
2005180219.tif 000013
【図１２】
2005180219.tif 000014
【図１３】
2005180219.tif 000015