JP5644291B2 - 内燃機関の燃料噴射量制御装置 - Google Patents

内燃機関の燃料噴射量制御装置 Download PDF

Info

Publication number
JP5644291B2
JP5644291B2 JP2010203064A JP2010203064A JP5644291B2 JP 5644291 B2 JP5644291 B2 JP 5644291B2 JP 2010203064 A JP2010203064 A JP 2010203064A JP 2010203064 A JP2010203064 A JP 2010203064A JP 5644291 B2 JP5644291 B2 JP 5644291B2
Authority
JP
Japan
Prior art keywords
value
amount
air
fuel ratio
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2010203064A
Other languages
English (en)
Other versions
JP2012057572A (ja
Inventor
岡崎 俊太郎
俊太郎 岡崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toyota Motor Corp
Original Assignee
Toyota Motor Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toyota Motor Corp filed Critical Toyota Motor Corp
Priority to JP2010203064A priority Critical patent/JP5644291B2/ja
Priority to US13/210,997 priority patent/US9037383B2/en
Publication of JP2012057572A publication Critical patent/JP2012057572A/ja
Application granted granted Critical
Publication of JP5644291B2 publication Critical patent/JP5644291B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/02Circuit arrangements for generating control signals
    • F02D41/14Introducing closed-loop corrections
    • F02D41/1438Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor
    • F02D41/1477Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor characterised by the regulation circuit or part of it,(e.g. comparator, PI regulator, output)
    • F02D41/1483Proportional component
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/02Circuit arrangements for generating control signals
    • F02D41/14Introducing closed-loop corrections
    • F02D41/1438Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor
    • F02D41/1439Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor characterised by the position of the sensor
    • F02D41/1441Plural sensors
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/02Circuit arrangements for generating control signals
    • F02D41/14Introducing closed-loop corrections
    • F02D41/1438Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor
    • F02D41/1477Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor characterised by the regulation circuit or part of it,(e.g. comparator, PI regulator, output)
    • F02D41/1482Integrator, i.e. variable slope
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/02Circuit arrangements for generating control signals
    • F02D41/14Introducing closed-loop corrections
    • F02D41/1401Introducing closed-loop corrections characterised by the control or regulation method
    • F02D2041/1413Controller structures or design
    • F02D2041/1422Variable gain or coefficients
    • FMECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
    • F02COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
    • F02DCONTROLLING COMBUSTION ENGINES
    • F02D41/00Electrical control of supply of combustible mixture or its constituents
    • F02D41/24Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means
    • F02D41/2406Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means using essentially read only memories
    • F02D41/2425Particular ways of programming the data
    • F02D41/2429Methods of calibrating or learning
    • F02D41/2451Methods of calibrating or learning characterised by what is learned or calibrated
    • F02D41/2454Learning of the air-fuel ratio control

Landscapes

  • Engineering & Computer Science (AREA)
  • Chemical & Material Sciences (AREA)
  • Combustion & Propulsion (AREA)
  • Mechanical Engineering (AREA)
  • General Engineering & Computer Science (AREA)
  • Electrical Control Of Air Or Fuel Supplied To Internal-Combustion Engine (AREA)
  • Combined Controls Of Internal Combustion Engines (AREA)
  • Exhaust Gas After Treatment (AREA)

Description

本発明は、内燃機関の排気通路に配設された触媒の下流に配設される空燃比センサ(下流側空燃比センサ)の出力値に基づいて燃料噴射量を制御する内燃機関の燃料噴射量制御装置に関する。
従来の内燃機関の燃料噴射量制御装置の一つ(以下、「従来装置」と称呼する。)は、図1に示したように、機関の排気通路に配設された触媒(三元触媒)43と、上流側空燃比センサ56と、下流側空燃比センサ57と、を備える。上流側空燃比センサ56及び下流側空燃比センサ57は、触媒43よりも上流及び下流にそれぞれ配設されている。
上流側空燃比センサ56の出力値Vabyfsは、被検出ガスの空燃比(上流側空燃比abyfs)に対して図2に示したように変化する。
下流側空燃比センサ57の出力値Voxsは、被検出ガスの空燃比(下流側空燃比afdown)に対して図3に示したように変化する。即ち、出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値maxとなり、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値minとなる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変し、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。
従来装置は、上流側空燃比センサの出力値により表される空燃比(上流側空燃比abyfs)を「理論空燃比に設定された目標空燃比」に一致させるための「燃料噴射量の補正量」を算出する。この補正量はメインフィードバック量とも称呼される。メインフィードバック量を用いた空燃比フィードバック制御はメインフィードバック制御とも称呼される。
更に、従来装置は、「下流側空燃比センサの出力値と、理論空燃比に実質的に相当する値に設定された下流側目標値と、の差(以下、「出力偏差量」とも称呼する。)」に基いて「メインフィードバック量とは別の燃料噴射量の補正量」を算出する。この補正量はサブフィードバック量とも称呼される。サブフィードバック量を用いた空燃比フィードバック制御はサブフィードバック制御とも称呼される。そして、従来装置は、メインフィードバック量及びサブフィードバック量を用いて燃料噴射量を補正することにより、機関に供給される混合気の空燃比を理論空燃比に制御している。なお、機関に供給される混合気の空燃比は、機関の空燃比とも称呼され、触媒43に流入する排ガスの空燃比と実質的に等しい。
サブフィードバック量は、PI制御又はPID制御に則って算出されるので、少なくとも比例項及び積分項を含む。より具体的に述べると、従来装置は、出力偏差量に比例ゲインを乗じることによりサブフィードバック量の比例項を算出する。従来装置は、出力偏差量に調整ゲインを乗じた値を積算することにより時間積分値を算出し、その時間積分値に基いてサブフィードバック量の積分項を算出する。
ところで、エアフローメータの吸入空気量検出誤差、燃料噴射弁の噴射特性の個体差又は経時変化、及び、上流側空燃比センサの空燃比検出誤差等(以下、「吸排気系の誤差」と総称する。)は、機関の空燃比の目標空燃比に対する定常的な誤差を発生させる。従って、吸排気系の誤差は、上記時間積分値に現れる。即ち、上記時間積分値は吸排気系の誤差の大きさを表す値と等しい値に収束する。従って、従来装置は、吸排気系の誤差が発生している場合においても、機関の空燃比を理論空燃比に略一致させることができる。
ところが、時間積分値が収束するまでには所定の時間を要する。更に、例えば、下流側空燃比センサが活性化していない場合等の「サブフィードバック制御条件(下流側フィードバック条件)が不成立である期間」において、時間積分値は更新されない。そこで、従来装置は、上記時間積分値(又は上記時間積分値に相関する値である「サブフィードバック量の積分項」)を、所定の学習間隔時間Tthが経過する毎にサブフィードバック量の学習値(サブFB学習値)として取得する。
学習間隔時間Tthは、サブフィードバック量(従って、時間積分値)の更新間隔時間よりも長い。サブFB学習値は、「機関の運転停止中においてもデータを保持することができるバックアップRAM等」に格納される。更に、従来装置は、サブフィードバック制御条件が不成立である期間、そのサブFB学習値を用いて燃料噴射量を制御するとともに、サブフィードバック制御条件が成立するとそのサブFB学習値に応じた値を時間積分値の初期値として使用する。これにより、サブフィードバック制御条件が不成立である期間、燃料噴射量をできるだけ適切な値に制御することができる。更に、サブフィードバック制御条件が成立した直後の時間積分値を適切な値に設定することができる。
このサブFB学習値は、収束すべき値から大きく乖離する場合がある。サブFB学習値が収束すべき値は、上記吸排気系の誤差の大きさを表す値であり、以下、「収束値」とも称呼する。例えば、バッテリ交換等によりバックアップRAMに記憶されていたサブFB学習値がクリアされると、サブFB学習値は収束値から大きく乖離することがある。或いは、機関の失火率が変化した場合、及び、特定気筒の燃料噴射弁の燃料噴射特性が他の気筒の燃料噴射弁の燃料噴射特性から大きく変化した場合、等においても、サブFB学習値は収束値から大きく乖離することがある。図4の(A)は、サブFB学習値が収束値から大きく乖離している状態から次第に収束する様子を概念的に示している。
従来装置は、サブFB学習値を収束値に迅速に収束させるため、サブFB学習値の収束の程度に応じて「時間積分値の変化速度」を変更している。より具体的に述べると、従来装置は、サブFB学習値の所定期間における変化量(変動量)が所定の幅を超えると、サブFB学習値は収束していないと判定して時間積分値の一回あたりの更新量を大きくし、サブFB学習値の所定期間における変化量が所定の幅を超えないときサブFB学習値は収束したと判定して時間積分値の一回あたりの更新量を小さくする。これにより、サブFB学習値が収束していない場合においてサブFB学習値を迅速に収束値に接近させることができ、且つ、サブFB学習値が収束した場合においてサブFB学習値が外乱により過度に変動することを回避することができる(例えば、特許文献1を参照。)。
特開2009−162139号公報
このように、時間積分値の一回あたりの更新量を変更することによりサブFB学習値を迅速に収束させるように構成されている装置において、学習値が収束しているか否かの判定を精度良く行うことは「時間積分値の一回あたりの更新量」を適切な値に設定するために重要である。加えて、時間積分値の一回あたりの更新量を変更しない装置であっても、サブFB学習値が収束しているか否かの判定を精度良く行うことは、気筒別空燃比の不均一性の程度を「サブFB学習値に相関する値に基いて取得する装置(例えば、特開2009−30455号公報を参照。)」等において重要である。
ところで、図4の(B)に示したように、サブFB学習値が実質的に収束した状況において、サブFB学習値の変化量は「サブフィードバック量の比例項」の大きさに実質的に依存して変化する。
より具体的に述べると、図4の(B)において、時刻t0−時刻t4の期間の「サブフィードバック量の比例項を算出するための比例ゲイン」は、時刻t4以降の比例ゲインの約2倍に設定されている。サブフィードバック量の比例項は「出力偏差量と比例ゲインとの積」である。下流側空燃比センサ57の出力値Voxsは、下流側空燃比センサ57の特性上、実質的に「最大出力値max及び最小出力値min」の何れかの値となり、且つ、下流側目標値は実質的に変化しないので、出力偏差量の大きさは略一定である。従って、時刻t0−時刻t4の期間のサブフィードバック量の比例項の大きさは、時刻t4以降の比例項の大きさの約2倍となる。一方、サブフィードバック量の積分項は実質的に収束しているから、触媒43に流入するガスの空燃比は実質的にサブフィードバック量の比例項に基いて変化する。
従って、時刻t0−時刻t1及び時刻t2−時刻t3における「触媒43の酸素吸蔵量OSAの減少速度」は、時刻t4−時刻t5及び時刻t6−時刻t7における酸素吸蔵量OSAの減少速度の2倍となる。同様に、時刻t1−時刻t2及び時刻t3−時刻t4における「触媒43の酸素吸蔵量OSAの増大速度」は、時刻t5−時刻t6及び時刻t7−時刻t8における酸素吸蔵量OSAの増大速度の2倍となる。
一方、下流側空燃比センサ57の出力値Voxsは、触媒43の酸素吸蔵量OSAが「0」に到達することにより触媒43からリッチなガスが流出したときに最小出力値minから最大出力値maxへと変化し、触媒43の酸素吸蔵量OSAが最大酸素吸蔵量Cmax(触媒43が吸蔵し得る酸素の量の最大値)に到達することにより触媒43からリーンなガスが流出したときに最大出力値maxから最小出力値minへと変化する。
この結果、下流側空燃比センサ57の出力値Voxsの反転周期(最小出力値minから最大出力値maxへと変化してから最小出力値minへと変化し、その後、再び最大出力値maxへと変化するまでの時間)は、比例ゲインに実質的に反比例する。即ち、時刻t0−時刻t4の期間における反転周期は、時刻t4−時刻t8の期間における反転周期の1/2倍となる。
他方、上記時間積分値及びサブフィードバック量の積分項は反転周期の長さに実質的に比例するように変化するので、サブFB学習値も反転周期の長さに実質的に比例するように変化する。従って、時刻t4−時刻t8の期間におけるサブFB学習値の変化量(変化幅)D1は、時刻t0−時刻t4の期間におけるサブFB学習値の変化量D2の2倍になる。
以上の説明から理解されるように、サブFB学習値が実質的に収束した状況において比例ゲインを大きい値に設定すれば、サブFB学習値の変化量を小さくすることができる。換言すると、比例ゲインを大きく設定することは、サブFB学習値が収束したとの判定を早期に行うために有利である。
しかしながら、触媒43の酸素吸蔵量OSAが「最大酸素吸蔵量Cmax」及び「0」に到達する毎に、触媒43からNOx及び未燃物がそれぞれ排出される。従って、サブFB学習値が収束したと判定された後においても比例ゲインが大きい値に設定され続けることは、NOx及び未燃物が排出される頻度が増大するので、エミッションを改善する上で好ましくない。
本発明は上述した課題に対処するためになされたものであって、その目的は、学習値(サブFB学習値)が収束しているか否かを迅速且つ精度良く判定することができ、且つ、学習値が収束したと判定した後におけるエミッションを改善することができる「内燃機関の燃料噴射量制御装置」を提供することにある。
本発明の一つの態様に係る内燃機関の燃料噴射量制御装置は、前記機関に対して燃料を噴射する燃料噴射弁と、前記機関の排気通路に配設された触媒よりも下流の位置に配設されるとともに同触媒から流出するガスの空燃比に応じた出力値を出力する下流側空燃比センサと、補正量算出手段と、学習手段と、燃料噴射制御手段と、を備える。
前記補正量算出手段は、所定の下流側フィードバック条件(サブフィードバック制御条件)が成立している期間において、
(1)「前記下流側空燃比センサの出力値と所定の下流側目標値との偏差」である出力偏差量に所定の比例ゲインを乗じることにより比例項を算出し、
(2)前記出力偏差量に所定の調整ゲインを乗じた値を積算することにより時間積分値を算出するとともに、その算出された時間積分値に比例した値を積分項として算出し、
(3)前記下流側空燃比センサの出力値を前記下流側目標値に一致させるための補正量であって前記燃料噴射弁から噴射される燃料の量をフィードバック補正する空燃比フィードバック量、を少なくとも前記比例項及び前記積分項に基いて算出する。
前記学習手段は、前記算出された積分項に相関する値を学習値として取得する。即ち、前記学習手段は、前記時間積分値、前記積分項、及び、それらに応じて変化する値(例えば、前記積分項の一次遅れフィルタ処理値)等を学習値として取得してもよい。
前記燃料噴射制御手段は、前記下流側フィードバック条件が成立している場合には少なくも前記空燃比フィードバック量に基いて最終燃料噴射量を算出する。前記燃料噴射制御手段は、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値に基いて最終燃料噴射量を算出する。更に、前記燃料噴射制御手段は、前記算出された最終燃料噴射量の燃料を前記燃料噴射弁から噴射させる。
更に、前記学習手段は、
(1)前記学習値が、所定の上限値と所定の下限値との間に所定時間に渡って存在している場合、又は、
(2)前記所定時間が経過する期間における前記学習値の変化量が判定用閾値幅よりも小さい場合、
前記学習値が収束したと判定するように構成される。
加えて、前記補正量算出手段は、
前記比例ゲインを、前記学習値が収束したと判定された後は前記学習値が収束したと判定される前に比べて小さい値に設定するとともに、
前記調整ゲインを、前記学習値が収束したと判定された後は前記学習値が収束したと判定される前に比べて小さい値に設定するように構成される。
上記構成によれば、学習値が収束値から大きく乖離している期間(図4の(A)の第1期間を参照。)において、調整ゲインが相対的に大きい値に設定されるので、学習値を収束値へと迅速に近づけることができる。一方、この期間において比例ゲインは比較的大きい値に維持される。しかしながら、この期間において、積分項が収束すべき値から比較的大きく乖離しているから、所定の単位時間に対する「下流側空燃比センサの出力値がリッチ空燃比に対応する値になっている時間」の比は比例ゲインの大きさの影響を受け難い。従って、比例ゲインの大きさは学習値の更新速度に大きな影響を与えない。
その後、学習値が収束値に接近する。この場合においても、比例ゲインは比較的大きい値に設定されている。この結果、図4の(B)の時刻t0−時刻t4に示したように、下流側空燃比センサの出力値の反転周期は短くなり、従って、学習値の変化量は比較的小さくなる。
従って、学習値が「所定の上限値と所定の下限値との間」に所定時間に渡って存在するタイミングが早期に発生する。この結果、学習値が「所定の上限値と所定の下限値との間」に所定時間に渡って存在する場合に学習値が収束したと判定するように学習手段が構成されているとき、その学習手段は「学習値が収束したとの判定」を早期に行うことができる。
同様に、上記構成によれば、所定時間が経過する期間における前記学習値の変化量が判定用閾値幅よりも小さくなるタイミングが早期に発生する。この結果、所定時間が経過する期間における前記学習値の変化量が判定用閾値幅よりも小さい場合に学習値が収束したと判定するように学習手段が構成されているとき、その学習手段は「学習値が収束したとの判定」を早期に行うことができる。
加えて、上記構成によれば、前記学習値が収束したと判定された後の比例ゲインは、前記学習値が収束したと判定される前の比例ゲインに比べて小さい値に設定される。その結果、図4の(B)の時刻t4以降に示したように、下流側空燃比センサの出力値の反転周期が長くなる。従って、触媒の酸素吸蔵量が「0」又は最大酸素吸蔵量Cmaxに到達する機会が減少するので、エミッションを改善することができる。
更に、前記学習値が収束したと判定された後の調整ゲインは、前記学習値が収束したと判定される前の調整ゲインに比べて小さい値に設定される。その結果、図4の(B)の時刻t4以降において一点鎖線により示したように、下流側空燃比センサの出力値の反転周期が長くなっても学習値の変化量は小さくなる。その結果、学習値が収束していないと再び判定されてしまうことを回避することができる。
ところで、触媒に流入する空燃比が「ある値」であったとしても、吸入空気量が大きいほど触媒に流入する「過剰な酸素又は過剰な未燃物」の量は多くなる。従って、触媒の酸素吸蔵量の変化速度は吸入空気量が大きいほど大きくなる。このため、図17に示したように、比例ゲインを吸入空気量に関わらず一定値に維持していると、吸入空気量が小さい場合の下流側空燃比センサの出力値の反転周期(時刻t4以降を参照。)は、吸入空気量が大きい場合の下流側空燃比センサの出力値の反転周期(時刻t1−時刻t4を参照。)よりも長くなる。その結果、吸入空気量が小さい場合、学習値(サブFB学習値)の変化量が大きくなる(変化量D1及びD2を参照。)。
そこで、本発明の他の態様に係る燃料噴射量制御装置における補正量算出手段は、前記学習値が収束したと判定される前において、前記比例ゲインを、前記機関の吸入空気量が小さいほど大きくするように構成される。例えば、前記比例ゲインは、吸入空気量に反比例するように設定される。
これによれば、図18に示したように、吸入空気量Gaが変化した場合であっても(時刻t4の前後を参照。)、下流側空燃比センサの出力値の反転周期を略一定に維持することが可能となる。その結果、吸入空気量が減少した場合であっても学習値の変化量が大きくならないので、学習手段は「学習値が収束したとの判定」を早期に行うことができる。
加えて、触媒に流入するガスの空燃比及び吸入空気量が一定であったとしても、下流側空燃比センサの出力値の反転周期は触媒の劣化の程度が進むほど短くなる。これは、触媒の劣化の程度が進むと、その触媒の最大酸素吸蔵量Cmaxが小さくなるので、酸素吸蔵量が「0」又は最大酸素吸蔵量Cmaxに早期に到達してしまうからである。
そこで、本発明の他の態様に係る燃料噴射量制御装置における補正量算出手段は、前記触媒の劣化の程度を示す触媒劣化指標値を取得するとともに、前記触媒の劣化の程度が進行しているほど前記比例ゲインが小さくなるように、前記比例ゲインを前記触媒劣化指標値に基いて決定するように構成される。
これによれば、触媒の劣化の程度に関わらず、下流側空燃比センサの出力値の反転周期を略一定に維持することが可能となる。その結果、触媒の劣化の程度に依らず、学習値が実質的に収束している場合においてその学習値の変化量を略一定に維持することができるので、学習手段は「学習値が収束したとの判定」を早期に行うことができる。
本発明の他の態様に係る燃料噴射量制御装置における補正量算出手段は、前記学習値が収束したと判定されたか否かに関わらず、前記比例ゲインを、前記機関の吸入空気量が小さいほど大きくするように構成される。
これによれば、学習値が収束したとの判定がなされる前において、吸入空気量が減少した場合であっても学習値の変化量が大きくならないので、学習手段は「学習値が収束したとの判定」を早期に行うことができる。更に、学習値が収束したとの判定がなされた後において吸入空気量が変化した場合であっても、下流側空燃比センサの出力値の反転周期をエミッションにとって適切な時間に設定することができる。この結果、学習値が収束しているか否かを迅速且つ精度良く判定することができ、且つ、学習値が収束したと判定した後におけるエミッションを改善することができる。
なお、前記学習手段は、
前記学習値が、前記上限値と前記下限値との間に前記所定時間に渡って存在している場合に前記学習値が収束したと判定するように構成され、且つ、前記上限値を前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値に正の特定値を加えた値として設定し、前記下限値を前記判定基準値から正の特定値を減じた値として設定するように構成され得る。
この学習手段は、「前記学習値が、前記判定基準値と前記学習値の最新値との差の大きさが所定の判定期間に渡り所定の閾値(前記特定値)よりも小さい場合、前記学習値が収束したと判定するように構成されている。」と言うこともできる。換言すると、前記学習手段は、前記判定基準値と前記学習値の最新値との差の大きさが前記閾値よりも大きくなった場合、前記学習値は収束していないと判定する。
この構成によれば、所定期間における学習値の判定基準値からの偏差の大きさが特定値を超えたか否かを判定することになるので、所定期間における学習値の変化量の大きさが閾値を超えたか否かを判定する場合に比べ、学習値が収束しているか否かを短い時間にて判定することができる。
本発明装置の他の目的、他の特徴及び付随する利点は、以下の図面を参照しつつ記述される本発明装置の各実施形態についての説明から容易に理解されるであろう。
図1は、本発明の第1実施形態に係る燃料噴射量制御装置(第1制御装置)を適用した内燃機関の概略図である。 図2は、図1に示した上流側空燃比センサの出力電圧と空燃比との関係を示したグラフである。 図3は、図1に示した下流側酸素濃度センサの出力電圧と空燃比との関係を示したグラフである。 図4の(A)及び図4の(B)は、下流側空燃比センサの出力値及びサブFB学習値等の変化の様子を示したタイムチャートである。 図5は、図1に示した電気制御装置が燃料噴射量制御(空燃比制御)を実行する際の機能を示した機能ブロック図である。 図6は、図5に示した基本補正値算出手段の機能ブロック図である。 図7は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図8は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図9は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図10は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図11は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図12は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図13は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図14は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図15は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図16は、第1制御装置のCPUが実行するルーチンを示したフローチャートである。 図17は、吸入空気量が変化した場合における、下流側空燃比センサの出力値、サブフィードバック量の比例項及びサブFB学習値等の変化の様子を示したタイムチャートである。 図18は、本発明の第2実施形態に係る燃料噴射量制御装置(第2制御装置)において、吸入空気量が変化した場合における、下流側空燃比センサの出力値、サブフィードバック量の比例項及びサブFB学習値等の変化の様子を示したタイムチャートである。 図19は、第2制御装置のCPUが実行するルーチンを示したフローチャートである。 図20は、本発明の第3実施形態に係る燃料噴射量制御装置(第3制御装置)のCPUが実行するルーチンを示したフローチャートである。
以下、本発明の各実施形態に係る内燃機関の燃料噴射量制御装置(以下、単に「制御装置」とも称呼する。)について図面を参照しながら説明する。この制御装置は、内燃機関の空燃比制御装置でもある。
<第1実施形態>
(構成)
図1は、第1実施形態に係る制御装置(以下、「第1制御装置」とも称呼する。)を、4サイクル・火花点火式・多気筒(直列4気筒)・内燃機関10に適用したシステムの概略構成を示している。
内燃機関10は、機関本体部20と、吸気系統30と、排気系統40と、を含む。
機関本体部20は、シリンダブロック部及びシリンダヘッド部を含む。機関本体部20は、複数の気筒(燃焼室)21を備えている。各気筒は、図示しない「吸気ポート及び排気ポート」と連通している。吸気ポートと燃焼室21との連通部は図示しない吸気弁により開閉される。排気ポートと燃焼室21との連通部は図示しない排気弁により開閉される。各燃焼室21には図示しない点火プラグが配設されている。
吸気系統30は、インテークマニホールド31、吸気管32、複数の燃料噴射弁33、及び、スロットル弁34を備えている。
インテークマニホールド31は、複数の枝部31aとサージタンク31bとを備えている。複数の枝部31aのそれぞれの一端は、複数の吸気ポートのそれぞれに接続されている。複数の枝部31aの他端はサージタンク31bに接続されている。
吸気管32の一端はサージタンク31bに接続されている。吸気管32の他端には図示しないエアフィルタが配設されている。
燃料噴射弁33は、一つの気筒(燃焼室)21に対して一つずつ配設されている。燃料噴射弁33は吸気ポートに設けられている。即ち、複数の気筒のそれぞれは、他の気筒とは独立して燃料供給を行う燃料噴射弁33を備えている。燃料噴射弁33は、噴射指示信号に応答して「その噴射指示信号に含まれる指示燃料噴射量の燃料」を吸気ポート内(従って、燃料噴射弁33に対応する気筒21)に噴射するようになっている。
スロットル弁34は、吸気管32内に回動可能に配設されている。スロットル弁34は、吸気通路の開口断面積を可変とするようになっている。スロットル弁34は、図示しないスロットル弁アクチュエータにより吸気管32内で回転駆動されるようになっている。
排気系統40は、エキゾーストマニホールド41、エキゾーストパイプ42、エキゾーストパイプ42に配設された上流側触媒43、及び、上流側触媒43よりも下流においてエキゾーストパイプ42に配設された「図示しない下流側触媒」を備えている。
エキゾーストマニホールド41は、複数の枝部41aと集合部41bとを備えている。複数の枝部41aのそれぞれの一端は、複数の排気ポートのそれぞれに接続されている。複数の枝部41aのそれぞれの他端は集合部41bに集合している。この集合部41bは、複数(2以上であり、本例では4つ)の気筒から排出された排ガスが集合する部分であるから、排気集合部HKとも称呼される。
エキゾーストパイプ42は集合部41bに接続されている。排気ポート、エキゾーストマニホールド41及びエキゾーストパイプ42は、排気通路を構成している。
上流側触媒43及び下流側触媒のそれぞれは、所謂、白金、ロジウム及びパラジウム等の貴金属(触媒物質)からなる活性成分を担持する三元触媒装置(排気浄化用の触媒)である。各触媒は、各触媒に流入するガスの空燃比が「三元触媒のウインドウ内の空燃比(例えば、理論空燃比)」であるとき、HC,CO,Hなどの未燃成分を酸化するとともに窒素酸化物(NOx)を還元する機能を有する。この機能は触媒機能とも称呼される。更に、各触媒は、酸素を吸蔵(貯蔵)し必要時に放出する酸素吸蔵(放出)機能を有する。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。つまり、酸素吸蔵機能により、ウインドウの幅が拡大する。酸素吸蔵機能は、触媒に担持されているセリア(CeO)等の酸素吸蔵材によってもたらされる。
このシステムは、熱線式エアフローメータ51、スロットルポジションセンサ52、水温センサ53、クランクポジションセンサ54、インテークカムポジションセンサ55、上流側空燃比センサ56、下流側空燃比センサ57、及び、アクセル開度センサ58を備えている。
エアフローメータ51は、吸気管32内を流れる吸入空気の質量流量(吸入空気流量)Gaに応じた信号を出力するようになっている。即ち、吸入空気量Gaは、単位時間あたりに機関10に吸入される吸入空気量を表す。
スロットルポジションセンサ52は、スロットル弁34の開度(スロットル弁開度)を検出し、スロットル弁開度TAを表す信号を出力するようになっている。
水温センサ53は、内燃機関10の冷却水の温度を検出し、冷却水温THWを表す信号を出力するようになっている。冷却水温THWは、機関10の暖機状態(機関10の温度)を表すパラメータである。
クランクポジションセンサ54は、クランク軸が10°回転する毎に幅狭のパルスを有するとともに同クランク軸が360°回転する毎に幅広のパルスを有する信号を出力するようになっている。この信号は、後述する電気制御装置70によって機関回転速度NEに変換される。
インテークカムポジションセンサ55は、インテークカムシャフトが所定角度から90度、次いで90度、更に180度回転する毎に一つのパルスを出力するようになっている。後述する電気制御装置70は、クランクポジションセンサ54及びインテークカムポジションセンサ55からの信号に基づいて、基準気筒(例えば第1気筒)の圧縮上死点を基準とした絶対クランク角度CAを取得するようになっている。この絶対クランク角度CAは、基準気筒の圧縮上死点において「0°クランク角度」に設定され、クランク軸の回転角度に応じて720°クランク角度まで増大し、その時点にて再び0°クランク角度に設定される。
上流側空燃比センサ56は、エキゾーストマニホールド41の集合部41b(排気集合部HK)と上流側触媒43との間の位置において「エキゾーストマニホールド41及びエキゾーストパイプ42の何れか」に配設されている。
上流側空燃比センサ56は、例えば、特開平11−72473号公報、特開2000−65782号公報及び特開2004−69547号公報等に開示された「拡散抵抗層を備える限界電流式広域空燃比センサ」である。
上流側空燃比センサ56は、図2に示したように、上流側空燃比センサ56の配設位置を流れる排ガスの空燃比に応じた出力値Vabyfsを「空燃比センサ出力」として出力する。この出力値Vabyfsは、上流側空燃比センサ56に到達している排ガスの空燃比が大きくなるほど(リーンとなるほど)増大する。出力値Vabyfsは、上流側空燃比センサ56に到達している排ガスの空燃比が理論空燃比であるとき、理論空燃比相当値Vstoichに一致する。
後述する電気制御装置70は、図2に示された関係を「空燃比変換テーブルMapabyfs(Vabyfs)」としてROM内に格納していて、実際の出力値Vabyfsを空燃比変換テーブルMapabyfs(Vabyfs)に適用することにより上流側空燃比abyfs(検出空燃比abyfs)を取得するようになっている。
再び、図1を参照すると、下流側空燃比センサ57は、エキゾーストパイプ42内に配設されている。下流側空燃比センサ57の配設位置は、上流側触媒43よりも下流側であり、且つ、下流側触媒よりも上流側(即ち、上流側触媒43と下流側触媒との間の排気通路)である。下流側空燃比センサ57は、周知の起電力式の酸素濃度センサ(安定化ジルコニア等の固体電解質を用いた周知の濃淡電池型の酸素濃度センサ)である。下流側空燃比センサ57は、排気通路であって下流側空燃比センサ57が配設されている部位を通過するガスである被検出ガスの空燃比に応じた出力値Voxsを発生するようになっている。換言すると、出力値Voxsは、上流側触媒43から流出し且つ下流側触媒に流入するガスの空燃比(下流側空燃比afdown)に応じた値である。
この出力値Voxsは、図3に示したように、被検出ガスの空燃比が理論空燃比よりもリッチのとき最大出力値max(例えば、約0.9V〜1.0V)となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値min(例えば、約0.1V〜0V)となる。更に、出力値Voxsは、被検出ガスの空燃比が理論空燃比であるとき最大出力値maxと最小出力値minの略中間の電圧Vst(中間電圧Vst、例えば、約0.5V)となる。出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリッチな空燃比からリーンな空燃比へと変化する際に最大出力値maxから最小出力値minへと急変する。同様に、出力値Voxsは、被検出ガスの空燃比が理論空燃比よりもリーンな空燃比からリッチな空燃比へと変化する際に最小出力値minから最大出力値maxへと急変する。
図1に示したアクセル開度センサ58は、運転者によって操作されるアクセルペダルAPの操作量Accp(アクセルペダル操作量、アクセルペダルAPの開度)を表す信号を出力するようになっている。アクセルペダル操作量Accpは、アクセルペダルAPの操作量が大きくなるとともに大きくなる。
電気制御装置70は、「CPU、CPUが実行するプログラム、テーブル(マップ、関数)及び定数等を予め記憶したROM、CPUが必要に応じてデータを一時的に格納するRAM、バックアップRAM、並びに、ADコンバータを含むインターフェース等」からなる周知のマイクロコンピュータである。
バックアップRAMは、機関10を搭載した車両の図示しないイグニッション・キー・スイッチの位置(オフ位置、始動位置及びオン位置等の何れか)に関わらず、車両に搭載されたバッテリから電力の供給を受けるようになっている。バックアップRAMは、バッテリから電力の供給を受けている場合、CPUの指示に応じてデータを格納する(データが書き込まれる)とともに、そのデータを読み出し可能となるように保持(記憶)する。従って、バックアップRAMは、機関10の運転停止中においてもデータを保持することができる。
バックアップRAMは、バッテリが車両から取り外される等によりバッテリからの電力供給が遮断されると、データを保持することができない。そこで、CPUは、バックアップRAMへの電力供給が再開されたとき、バックアップRAMに保持されるべきデータを初期化(デフォルト値に設定)するようになっている。なお、バックアップRAMは、EEPROM等の読み書き可能な不揮発性メモリであってもよい。
電気制御装置70は、上述したセンサ等と接続され、CPUにそれらのセンサからの信号を供給するようになっている。更に、電気制御装置70は、CPUの指示に応じて、各気筒に対応して設けられた点火プラグ(実際にはイグナイタ)、各気筒に対応して設けられた燃料噴射弁33、及び、スロットル弁アクチュエータ等に駆動信号(指示信号)を送出するようになっている。
なお、電気制御装置70は、取得されたアクセルペダルの操作量Accpが大きくなるほどスロットル弁開度TAが大きくなるように、スロットル弁アクチュエータに指示信号を送出するようになっている。即ち、電気制御装置70は、運転者により変更される機関10の加速操作量(アクセルペダル操作量Accp)に応じて「機関10の吸気通路に配設されたスロットル弁34」の開度を変更するスロットル弁駆動手段を備えている。
(第1制御装置による空燃比制御の概要)
第1制御装置は、上流側空燃比センサ56の出力値Vabyfsにより表される上流側空燃比abyfsが所定の目標空燃比abyfrに一致するようにメインフィードバック制御を行う。更に、第1制御装置は、下流側空燃比センサ57の出力値Voxsが所定の下流側目標値Voxsrefに一致するようにサブフィードバック制御を行う。メインフィードバック制御とサブフィードバック制御とにより燃料噴射量がフィードバック補正される。
サブフィードバック制御においては、サブフィードバック量KSFBが算出される。このサブフィードバック量KSFBは目標空燃比abyfrを変更するように作用する。但し、サブフィードバック量KSFBは、上流側空燃比センサ56の出力値Vabyfsを補正するように作用することにより、目標空燃比abyfrを実質的に変更してもよい。
第1制御装置は、サブフィードバック量KSFBを「出力値Voxsと下流側目標値Voxsrefとの差(出力偏差量DVoxs)」に基くPID制御により算出する。従って、サブフィードバック量KSFBは、比例項、積分項及び微分項を含む。
第1制御装置は、サブフィードバック量KSFBの比例項を算出するために、出力偏差量DVoxsに相関する値(実際には、出力偏差量DVoxsをローパスフィルタ処理した値DVoxslow)を算出し、その値(DVoxslow)に比例ゲインKpを乗じることにより比例項(=kp・DVoxslow)を算出する。なお、値DVoxslowは、実質的に、出力値Voxsと下流側目標値Voxsrefとの偏差(出力偏差量)と称呼することができる。
更に、第1制御装置は、サブフィードバック量KSFBの積分項を算出するために、出力偏差量DVoxsをローパスフィルタ処理した値DVoxslowに所定の調整ゲインKを乗じた値K・DVoxslowを積算(積分)することによって時間積分値SDVoxslowを求める。加えて、第1制御装置は、その時間積分値SDVoxslowに積分ゲインKiを乗じることにより、サブフィードバック量KSFBの積分項を求める。なお、本例において、積分ゲインKiは「1」であるので、第1制御装置は、時間積分値SDVoxslowに比例した値を積分項として算出すると言うこともできる。
第1制御装置は、サブフィードバック量KSFBの積分項に応じた値(本例において、積分項Ki・SDVoxslowそのもの)をサブフィードバック量の学習値(サブFB学習値KSFBg)として取得する。サブFB学習値KSFBgは、バックアップRAMに格納され、少なくとも「サブフィードバック量を更新するためのサブフィードバック制御条件が成立しない場合」、燃料噴射量の補正に使用される。
一方、第1制御装置は、過去の所定の時点から現時点までのサブFB学習値KSFBgの変動中心(サブFB学習値KSFBgの加重平均値)を判定基準値Vkijunとして求める。そして、第1制御装置は、判定基準値Vkijunに正の特定値ΔV(ΔV1、ΔV2等)を加えた値を上限値Vgmaxthとして求めるとともに、判定基準値Vkijunから特定値ΔVを減じた値を下限値Vgminthとして求める。
第1制御装置は、所定期間に渡り「サブFB学習値KSFBgが上限値Vgmaxthと下限値Vgminthとの間に存在している場合」、サブFB学習値KSFBgの収束度が上昇した(学習値が収束値に近づいている)と判定する。第1制御装置は、逆に、所定期間内において「サブFB学習値KSFBgが上限値Vgmaxthと下限値Vgminthとの間に存在しなくなった場合」、サブFB学習値KSFBgの収束度が低下した(学習値が収束値から乖離している)と判定する。サブFB学習値KSFBgの収束度は、次に述べるステータス(status)の値により示される。
・status0(statusが「0」):サブFB学習値KSFBgの収束状態が良好でない。即ち、status0の状態は、サブFB学習値KSFBgが「その収束値ki・SDVoxsfinalから乖離し」且つ「サブFB学習値KSFBgの変化速度が大きい」という「不安定状態」にあることを意味する。
・status2(statusが「2」):サブFB学習値KSFBgの収束状態が良好である。即ち、status2の状態は、サブFB学習値KSFBgが「その収束値ki・SDVoxsfinalの近傍にて安定している」という「安定状態」にあることを意味する。安定状態は、サブFB学習値KSFBgの学習が完了している状態と言い換えることもできる。
・status1(statusが「1」):サブFB学習値KSFBgの収束状態が、前記安定状態と前記不安定状態との間の状態(即ち、準安定状態)にある。
ところで、図4の(B)に示したように、サブFB学習値KSFBgが実質的に収束した状況において、サブFB学習値KSFBgの変化量は「サブフィードバック量の比例項」の大きさに実質的に依存して変化する。
この理由は、概ね、次のように説明することができる。
前述したように、サブフィードバック量KSFBは比例項、積分項及び微分項(本例においては、更にサブFB学習値KSFBg)の和である。そして、一般に、比例項の大きさは他の項に比べて大きい。或いは、サブFB学習値KSFBgが実質的に収束している状況においては、積分項及びサブFB学習値KSFBgは機関の空燃比の中心を理論空燃比近傍に維持するために必要な値になっている。従って、比例項が機関の空燃比を「理論空燃比よりもリッチな空燃比及び理論空燃比よりもリーンな空燃比」へと変更させる主たる要素である。
このため、図4の(B)の時刻t4以前に示したように、サブフィードバック量KSFBの比例項の大きさ(従って、比例ゲインの大きさ)が大きい場合には、触媒43の酸素吸蔵量が「0」又は最大酸素吸蔵量Cmaxに短時間にて到達する。従って、サブフィードバック量KSFBの比例項の大きさが大きい場合には、時間積分値が一方向(例えば、増大する方向)に継続的に変化する時間が短くなるので、サブFB学習値KSFBgの変化量D2も小さくなる。
これに対し、図4の(B)の時刻t4以降に示したように、サブフィードバック量KSFBの比例項の大きさ(従って、比例ゲインの大きさ)が小さい場合には、触媒43の酸素吸蔵量が「0」又は最大酸素吸蔵量Cmaxに到達するまでの時間が長くなる。従って、サブフィードバック量KSFBの比例項の大きさが小さい場合には、時間積分値が一方向(例えば、増大する方向)に継続的に変化する時間が長くなるので、サブFB学習値KSFBgの変化量D1が大きくなる。
このため、サブFB学習値KSFBgが所定の上限値と所定の下限値との間に所定時間に渡って存在している場合、又は、所定時間が経過する期間におけるサブFB学習値KSFBgの変化量が判定用閾値幅よりも小さい場合、サブFB学習値KSFBgが収束したと判定する装置においては、比例項の大きさを実質的に定める比例ゲインを小さい値に設定した方が、サブFB学習値KSFBgが収束しているとの判定をより早期に行うことができる。
しかしながら、触媒43の酸素吸蔵量OSAが「最大酸素吸蔵量Cmax」及び「0」に到達する毎に、触媒43からNOx及び未燃物がそれぞれ排出される。従って、サブFB学習値KSFBgが収束したと判定された後においても比例ゲインが大きい値に設定され続けることは、エミッションを改善する上で好ましくない。
そこで、第1制御装置は、サブFB学習値KSFBgの収束の程度が進むほど(サブフィードバック量KSFBが収束値に近づくほど)、比例ゲインを小さくする。より具体的に述べると、第1制御装置は、statusが「2」であるときの比例ゲインKpをstatusが「1」であるときの比例ゲインKpよりも小さい値に設定し、statusが「1」であるときの比例ゲインKpをstatusが「0」であるときの比例ゲインKpよりも小さい値に設定する。
これにより、サブFB学習値KSFBgが収束したと判定される前(例えば、statusが「2」であると判定される前)において、サブFB学習値KSFBgの所定期間における変化量は小さくなるので、サブFB学習値KSFBgが収束したとの判定を早期に行うことができる。加えて、サブFB学習値KSFBgが収束したと判定された後(例えば、statusが「2」であると判定される後)において、触媒43の酸素吸蔵量OSAが「最大酸素吸蔵量Cmax」及び「0」に到達する頻度が小さくなる(前述した出力値Voxsの反転周期が長くなる)ので、エミッションを改善することができる。
一方、第1制御装置は、サブFB学習値KSFBgの収束の程度が進むほど、調整ゲインKを小さくする。より具体的に述べると、第1制御装置は、statusが「2」であるときの調整ゲインKをstatusが「1」であるときの調整ゲインKよりも小さい値に設定し、statusが「1」であるときの調整ゲインKをstatusが「0」であるときの調整ゲインKよりも小さい値に設定する。
これにより、サブFB学習値KSFBgが収束したと判定される前(statusが「0」又「1」であるとき)において、サブFB学習値KSFBgを適切な値(収束すべき値)に迅速に近づけることができるとともに、サブFB学習値KSFBgが収束したと判定された後(statusが「2」となった後)においてサブFB学習値KSFBgを適切な値の近傍に安定して維持することができる。
(空燃比制御の詳細)
次に、第1制御装置が行う機関の空燃比制御の詳細について説明する。第1制御装置は、上述したように、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefと一致させるためのサブフィードバック制御を実行する。
一方、上流側触媒43は酸素吸蔵機能を有するから、上流側触媒43の上流の空燃比変化は所定の遅れ時間が経過した後に上流側触媒43の下流の空燃比変化となって現れる。従って、サブフィードバック制御のみでは過渡的な空燃比変動を十分に抑制することが困難である。そこで、第1制御装置は、上述したように、上流側空燃比センサ56の出力値Vabyfsに基く空燃比フィードバック制御(メインフィードバック制御)を実行する。
第1制御装置は、メインフィードバック制御により機関の空燃比を増大しているときにサブフィードバック制御により機関の空燃比を減少させる事態、及び、メインフィードバック制御により機関の空燃比を減少しているときにサブフィードバック制御により機関の空燃比を増大させる事態、が発生することがないように、以下に述べる複数の手段による空燃比制御を行う。これにより、メインフィードバック制御とサブフィードバック制御との間に制御上の干渉が発生しない。
第1制御装置は、機能ブロック図である図5に示した複数の手段等を含んで構成されている。以下、図5を参照しながら説明する。
<補正後基本燃料噴射量の算出>
筒内吸入空気量算出手段A1は、実際の吸入空気量Gaと、実際の機関回転速度NEと、ROMに格納されているルックアップテーブルMapMcと、に基づき今回の吸気行程を迎える気筒の吸入空気量である筒内吸入空気量Mc(k)を求める。なお、添え字(k)が付された変数は、今回の吸気行程(又は現時点)に対応した値であることを示す。添え字の(k−N)は、今回の吸気行程からNストローク(4気筒エンジンにおいて、N・180°CA、CA;クランク角)前の吸気行程に対した値であることを示す。この表記方法は、以下において他のパラメータについても同様に用いられる。筒内吸入空気量Mc(k)は、各気筒の吸気行程に対応されながらRAMに記憶されていく。
上流側目標空燃比設定(決定)手段A2は、内燃機関10の運転状態である機関回転速度NE及び機関の負荷(例えば、スロットル弁開度TA)等に基づいて上流側目標空燃比(目標空燃比)abyfr(k)を決定する。但し、本例においては、目標空燃比abyfrは、理論空燃比stoichに設定された基準空燃比abyfr0が「サブフィードバック制御を実現するサブフィードバック量KSFB」により補正されることにより決定される。即ち、目標空燃比abyfrは、理論空燃比stoichに設定された基準空燃比abyfr0からサブフィードバック量KSFBを減じた値(AF0-KSFB)に設定される。上流側目標空燃比abyfr(k)は上流側空燃比センサ56の出力値に基いて得られる検出空燃比abyfsの目標値の基礎となる値である。目標空燃比abyfr(k)は各気筒の吸気行程に対応されながらRAMに記憶されていく。
補正前基本燃料噴射量算出手段A3は、下記の(1)式に示したように、手段A1により求められた筒内吸入空気量Mc(k)を手段A2により設定された上流側目標空燃比abyfr(k)で除することにより、基本燃料噴射量Fbaseb(k)を求める。基本燃料噴射量Fbaseb(k)は、後述する基本補正値KF等による補正がなされる前の基本燃料噴射量であるから、補正前基本燃料噴射量Fbaseb(k)とも称呼される。補正前基本燃料噴射量Fbaseb(k)は各気筒の吸気行程に対応されながらRAMに記憶されていく。

Fbaseb(k)=Mc(k)/abyfr(k) …(1)
補正後基本燃料噴射量算出手段A4は、手段A3により求められた今回の補正前基本燃料噴射量Fbaseb(k)に基本補正値KFを乗じることにより補正後基本燃料噴射量Fbase(k)(=KF・Fbaseb(k))を求める。基本補正値KFは、後述する基本補正値算出手段A16により求められ、バックアップRAMに格納されている。
<最終燃料噴射量の算出>
最終燃料噴射量算出手段A5は、下記の(2)式により示したように、補正後基本燃料噴射量Fbase(k)(=KF・Fbaseb(k))にメインフィードバック量KFmainを乗じることにより、今回の最終燃料噴射量Fi(k)を求める。最終燃料噴射量Fi(k)は、各気筒の吸気行程に対応されながらRAMに記憶されていく。メインフィードバック量KFmainは、後述するメインフィードバック量更新手段A15によって求められる。

Fi(k)=(KF・Fbaseb(k))・KFmain=Fbase(k)・KFmain …(2)
第1制御装置は、この最終燃料噴射量Fi(k)の燃料が、今回の吸気行程を迎える気筒の燃料噴射弁33から噴射されるように、その燃料噴射弁33に対して噴射指示信号を送出する。換言すると、噴射指示信号は、最終燃料噴射量Fi(k)に関する情報を指示燃料噴射量として含んでいる。
<サブフィードバック量の算出>
下流側目標値設定手段A6は、「機関回転速度NE、吸入空気量Ga、スロットル弁開度TA、及び、上流側触媒43の劣化度(最大酸素吸蔵量Cmax)等」に基づいて下流側目標空燃比に対応する下流側目標値Voxsrefを決定する。下流側目標値Voxsrefは、本例において、理論空燃比に相当する値Vstである。下流側目標値Voxsrefは、触媒43のウインドウ内の空燃比に相当する値であれば、理論空燃比に相当する値Vstと相違する値であってもよい。
出力偏差量算出手段A7は、下記(3)式に基づいて、手段A6により設定されている現時点の下流側目標値Voxsrefから現時点での下流側空燃比センサ57の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。「現時点」とは、今回のFi(k)の噴射指示開始時点のことである。出力偏差量算出手段A7は、求めた出力偏差量DVoxsをローパスフィルタA8に出力する。

DVoxs=Voxsref−Voxs …(3)
ローパスフィルタA8は一次のデジタルフィルタである。ローパスフィルタA8の特性を表す伝達関数A8(s)は下記の(4)式により示される。(4)式において、sはラプラス演算子であり、τ1は時定数である。ローパスフィルタA8は周波数(1/τ1)以上の高周波数成分が通過することを実質的に禁止する。ローパスフィルタA8は出力偏差量DVoxsの値を入力するとともに、「出力偏差量DVoxsの値をローパスフィルタ処理した後の値」であるローパスフィルタ通過後出力偏差量DVoxslowをPIDコントローラA9に出力する。

A8(s)=1/(1+τ1・s) …(4)
PIDコントローラA9は、ローパスフィルタ通過後出力偏差量DVoxslowを下記(5)式に基づいて積分処理することにより、時間積分値(積分処理値)SDVoxslowを算出する。左辺のSDVoxslow(n)は更新後の時間積分値であり、右辺のSDVoxslow(n−1)は更新前の時間積分値である。Kは調整ゲイン(調整値)であり、後述するように設定・変更される値である。即ち、時間積分値SDVoxslowの1回あたりの更新量は、出力偏差量DVoxslowに調整ゲインKを乗じた値K・DVoxslowである。この調整ゲインKが変更されることにより、時間積分値SDVoxslowの更新速度(変化速度)が変更される。

SDVoxslow(n)=SDVoxslow(n-1)+K・DVoxslow …(5)
次いで、PIDコントローラA9は、下記(6)式に基づいて比例・積分・微分処理(PID処理)を実行し、サブフィードバック量KSFBを求める。(6)式において、Kpは比例ゲイン(比例定数)、Kiは積分ゲイン(積分定数)、Kdは微分ゲイン(微分定数)である。DDVoxslowはローパスフィルタ通過後出力偏差量DVoxslowの時間微分値である。サブFB学習値KSFBgは、積分項Ki・SDVoxslowを所定の学習間隔時間Tthが経過する毎に取り込んだ値である。以上により、サブフィードバック量KSFBが求められる。

KSFB=Kp・DVoxslow+Ki・SDVoxslow+Kd・DDVoxslow+KSFBg …(6)
上記(6)式は積分項Ki・SDVoxslowを含んでいるので、定常状態では出力偏差量DVoxslowがゼロになることが保証される。換言すれば、下流側目標値Voxsrefと下流側空燃比センサ57の出力値Voxsとの定常偏差がゼロになる。また、定常状態においては、出力偏差量DVoxsがゼロになるから、比例項Kp・DVoxslow及び微分項Kd・DDVoxslowの両者がゼロとなる。従って、サブフィードバック量KSFBの定常状態における収束値は積分項Ki・SDVoxslowとサブFB学習値KSFBgとの和に等しくなる。
以上から明らかなように、下流側目標値設定手段A6、出力偏差量算出手段A7、ローパスフィルタA8及びPIDコントローラA9はサブフィードバック量算出手段を構成している。
<メインフィードバック制御>
先に説明したように、上流側触媒43は酸素吸蔵機能を有している。従って、上流側触媒43の上流の排ガスの空燃比の変動における「比較的周波数の高い高周波数成分(前記周波数1/τ1以上の高周波数成分)」及び「比較的周波数が低く且つ振幅が比較的小さい低周波数成分(前記周波数1/τ1以下の周波数にて変動するとともに理論空燃比からの偏移量が比較的小さい低周波成分)」は、上流側触媒43の酸素吸蔵機能により吸収されるから、上流側触媒43の下流の排ガスの空燃比の変動として現れ難い。
従って、例えば、排ガスの空燃比が前記周波数(1/τ1)以上の高周波数で大きく変動するような「過渡運転状態における空燃比の急変」に対する補償は、サブフィードバック制御により行われ得ない。それ故、「過渡運転状態における空燃比の急変」に対する補償を確実に行うためには、上流側空燃比センサ56の出力値Vabyfsに基づいたメインフィードバック制御を行う必要がある。
一方、上流側触媒43の上流の排ガスの空燃比の変動における「周波数が比較的低くて振幅が比較的大きい低周波数成分(例えば、前記周波数(1/τ1)以下の周波数で変動するとともに理論空燃比からの偏移量が比較的大きい低周波成分)」は、上流側触媒43の酸素吸蔵機能では完全には吸収されない。従って、そのような上流側触媒43の上流における空燃比の変動は、所定の遅れを有しながら上流側触媒43の下流の排ガスの空燃比の変動として現れる。この結果、上流側空燃比センサ56の出力値Vabyfsが目標空燃比abyfrよりもリッチ側となり、下流側空燃比センサ57の出力値Voxsが下流側目標値Voxsrefよりもリーン側となる等の状態が発生し、メインフィードバック制御とサブフィードバック制御との間に前述した制御上の干渉が生じる場合がある。
以上のことから、第1制御装置は、上流側空燃比センサ56の出力値Vabyfsの変動における各周波数成分のうち「上流側触媒43の下流の空燃比の変動として現れ得る程度の周波数成分である所定の周波数(本例では、周波数(1/τ1))以下の低周波数成分」をカットした後の上流側空燃比センサ56の出力値Vabyfsに応じた値をメインフィードバック制御に使用する。このメインフィードバック制御に使用される「上流側空燃比センサ56の出力値Vabyfsに応じた値」は、「目標空燃比abyfrtgt(k)と出力値Vabyfs(k)との偏差Dafに対してハイパスフィルタ処理を施した値」である。この結果、前述した空燃比制御の干渉が発生することを回避することができるとともに、メインフィードバック制御によって過渡運転状態における空燃比の急変に対する補償を確実に行うことができる。より具体的には、メインフィードバック量は以下に述べるようにして求められる。
<メインフィードバック量の算出>
テーブル変換手段A10は、上流側空燃比センサ56の出力値Vabyfsと、図2に示したテーブルMapabyfsと、に基づいて、現時点の検出空燃比abyfs(k)を求める。
目標空燃比遅延手段A11は、上流側目標空燃比abyfrのうち、現時点からNストローク(N回の吸気行程)前の時点の上流側目標空燃比abyfrをRAMから読み出し、これを上流側目標空燃比abyfr(k−N)として設定する。上流側目標空燃比abyfr(k−N)は、現時点からNストローク前に吸気行程を迎えた気筒の補正前基本燃料噴射量Fbaseb(k−N)を算出するために用いられた上流側目標空燃比である。
前記値Nは、内燃機関10の排気量及び燃焼室21から上流側空燃比センサ56までの距離等により異なる値である。このように、現時点からNストローク前の実際の上流側目標空燃比abyfr(k−N)をメインフィードバック量KFmainの算出に用いるのは、燃料噴射弁33から噴射された燃料を含み且つ燃焼室21内で燃焼された混合気が上流側空燃比センサ56に到達するまでには、Nストロークに相当する無駄時間L1を要しているからである。なお、値Nは、機関回転速度NEが大きいほど小さくなり、且つ、機関の負荷(例えば、筒内吸入空気量Mc)が大きくなるほど小さくなるように変更されることが望ましい。
ローパスフィルタA12は、手段A11から出力された上流側目標空燃比abyfr(k−N)に対してローパスフィルタ処理を施し、メインフィードバック制御用目標空燃比(上流側フィードバック制御用目標空燃比)abyfrtgt(k)を算出する。メインフィードバック制御用目標空燃比abyfrtgt(k)は、上流側目標空燃比設定手段A2により決定されていた上流側の目標空燃比abyfr(k−N)に応じた値である。
このローパスフィルタA12は一次のディジタルフィルタである。ローパスフィルタA12の伝達特性A12(s)は下記の(7)式により示される。(7)式において、sはラプラス演算子であり、τは時定数(応答性に関するパラメータ)である。この特性により、周波数(1/τ)以上の高周波数成分の通過が実質的に禁止される。

A12(s)=1/(1+τ・s) …(7)
上流側空燃比センサ56に到達している排ガスの空燃比の値を入力信号とし、上流側空燃比センサ56の出力値Vabyfsに基いて求められる空燃比の値を出力信号とするとき、出力信号は入力信号に対してローパスフィルタ処理(例えば、所謂「なまし処理」を含む一次遅れ処理及び二次遅れ処理等)を施した信号と極めて似た信号となる。この結果、ローパスフィルタA12により生成されるメインフィードバック制御用目標空燃比abyfrtgt(k)は、上流側空燃比センサ56に目標空燃比abyfr(k−N)に応じた望ましい空燃比の排ガスが到達しているときに上流側空燃比センサ56が実際に出力するであろう値となる。
上流側空燃比偏差算出手段A13は、下記(8)式に基づいて、メインフィードバック制御用目標空燃比abyfrtgt(k)から現時点の検出空燃比abyfs(k)を減じることにより、空燃比偏差Dafを求める。この空燃比偏差Dafは、Nストローク前の時点において筒内に供給された混合気の実際の空燃比と目標空燃比との偏差を表す量である。

Daf=abyfrtgt(k)−abyfs(k) …(8)
ハイパスフィルタA14は一次のフィルタである。ハイパスフィルタA14の特性を表す伝達関数A14(s)は(9)式により示される。(9)式において、sはラプラス演算子であり、τ1は時定数である。時定数τ1は上記ローパスフィルタA8の時定数τ1と同一の時定数である。ハイパスフィルタA14は、周波数(1/τ1)以下の低周波数成分が通過することを実質的に禁止する。

A14(s)={1−1/(1+τ1・s)} …(9)
ハイパスフィルタA14は、空燃比偏差Dafを入力するとともに、上記(9)式より表された特性式に従って「空燃比偏差Dafをハイパスフィルタ処理した後の値」である「メインフィードバック制御用偏差DafHi」を出力する。
メインフィードバック量更新手段A15は、ハイパスフィルタA14の出力値であるメインフィードバック制御用偏差DafHiを比例処理する。即ち、メインフィードバック量更新手段A15は、メインフィードバック制御用偏差DafHiに比例ゲインGpHiを乗じた値に「1」を加えることにより、メインフィードバック量KFmain(=1+GpHi・DafHi)を求める。このメインフィードバック量KFmainは、最終燃料噴射量算出手段A5が今回の最終燃料噴射量Fi(k)を求める際に使用される。
なお、メインフィードバック量更新手段A15は、下記(10)式に基いて、メインフィードバック制御用偏差DafHiを比例・積分処理(PI処理)することにより、メインフィードバック量KFmainを求めてもよい。(10)式において、Gphiは予め設定された比例ゲイン(比例定数)、Gihiは予め設定された積分ゲイン(積分定数)である。SDafHiはメインフィードバック制御用偏差DafHiの時間積分値である。係数KFBは本例では「1」である。係数KFBは、機関回転速度NE及び筒内吸入空気量Mc等により可変とすることが好適である。

KFmain=1+(Gphi・DafHi+Gihi・SDafHi)・KFB …(10)
以上から明らかなように、上流側目標空燃比設定手段A2、テーブル変換手段A10、目標空燃比遅延手段A11、ローパスフィルタA12、上流側空燃比偏差算出手段A13、ハイパスフィルタA14及びメインフィードバック量更新手段A15は、メインフィードバック量算出手段(メインフィードバック制御手段)を構成している。
<基本補正値の算出>
サブフィードバック量KSFBはPIDコントローラA9によりローパスフィルタ通過後出力偏差量DVoxslowを比例・積分・微分処理することによって算出される。しかしながら、上流側触媒43の酸素吸蔵機能の影響により機関の空燃比の変化は少し遅れて上流側触媒43の下流の排ガスの空燃比の変化として現れる。従って、エアフローメータ51の検出精度や空気量推定モデルの推定精度に起因する定常的な誤差の大きさが運転領域の急変等によって比較的急激に増大する場合、その誤差に起因する燃料噴射量の過不足分をサブフィードバック制御のみにより直ちに補償することはできない。
一方、上流側触媒43の酸素吸蔵機能による遅れの影響がないメインフィードバック制御において、ハイパスフィルタA14によるハイパスフィルタ処理は微分処理(D処理)と同等の機能を達成する処理である。従って、ハイパスフィルタA14通過後の値がメインフィードバック量更新手段A15の入力値とされている上記メインフィードバック制御においては、仮にメインフィードバック量更新手段A15が積分処理を行うことによりメインフィードバック量KFmainを求めるように構成されている場合であっても、実質的な積分項を含むメインフィードバック量KFmainを算出することができない。それ故、上記メインフィードバック制御より、上記エアフローメータの検出精度や空気量推定モデルの推定精度に起因する燃料噴射量の定常的な誤差は補償され得ない。その結果、運転領域が変化した場合等において、一時的にエミッションが悪化する可能性がある。
このため、上記定常的な誤差を補償するため、第1制御装置は、補正前基本燃料噴射量Fbasebを補正する基本補正値KFを求める。更に、第1制御装置は、下記の(11)式に再度示したように、基本補正値KFによって補正後基本燃料噴射量Fbase(k)を求め、その補正後基本燃料噴射量Fbase(k)を更にメインフィードバック量KFmainにより補正している。

Fi(k)={KF・Fbaseb(k)}・KFmain …(11)
基本補正値KFは、下記の(12)式により定義される。

Fbaset(k−N)=KF・Fbaseb(k−N) …(12)
(12)式において、Fbasetは、目標空燃比を得るために必要な真の指示噴射量であり、誤差を含まない基本燃料噴射量であるということもできる。以下、Fbasetを、「真の基本燃料噴射量」と称呼する。(12)式の真の基本燃料噴射量Fbaset(k−N)は、下記の(13)式により算出される。

Fbaset(k−N)=(abyfs(k)・Fi(k−N))/abyfr(k−N) …(13)
上記(13)式について説明を加える。上述したNストロークは上記「無駄時間」に対応するストローク数に設定されている。つまり、現時点における検出空燃比abyfs(k)は最終燃料噴射量Fi(k−N)に基いて噴射された燃料によりもたらされている空燃比である。従って、(13)式における右辺の分子のabyfs(k)・Fi(k−N)は、最終燃料噴射量Fi(k−N)を決定した際の筒内空気量を表していることになる。それ故、(13)式に示したように、最終燃料噴射量Fi(k−N)を決定した時点の筒内空気量(abyfs(k)・Fi(k−N))を、最終燃料噴射量Fi(k−N)を決定した時点の目標空燃比abyfr(k−N)で除することにより、真の基本燃料噴射量Fbaset(k−N)が算出される。
一方、上記(12)式にて使用される補正前基本燃料噴射量Fbaseb(k)は、下記(14)式に基いて求められる。

Fbaseb(k)=Mc(k)/abyfr(k) …(14)
そこで、第1制御装置は、上記(12)〜(14)式から得られる下記(15)式に基いて基本補正値KFを求め、求めた基本補正値KFを同基本補正値KFを算出したときの運転領域に対応させてメモリに記憶しておく。

KF=Fbaset(k−N)/Fbaseb(k−N)
={abyfs(k)・Fi(k−N)/abyfr(k−N)}/{Mc(k−N)/abyfr(k−N)}…(15)
基本補正値KFは、上述した(15)式により表された原理に従って構成された基本補正値算出手段A16によって算出される。以下、基本補正値算出手段A16の機能ブロック図である図6を参照しながら、基本補正値KFの実際の算出の仕方について説明する。基本補正値算出手段A16は、A16a〜A16fの各手段等を含んで構成されている。
最終燃料噴射量遅延手段A16aは、今回の最終燃料噴射量Fi(k)を遅延させることにより現時点からNストローク前の最終燃料噴射量Fi(k−N)を求める。実際には、最終燃料噴射量遅延手段A16aは最終燃料噴射量Fi(k−N)をRAMから読み出す。
目標空燃比遅延手段A16bは、今回の目標空燃比abyfr(k)を遅延させることにより現時点からNストローク前の目標空燃比abyfr(k−N)を求める。実際には、目標空燃比遅延手段A16bは目標空燃比abyfr(k−N)をRAMから読み出す。
真の基本燃料噴射量算出手段A16cは、上記(13)式(Fbaset(k−N)=((abyfs(k)・Fi(k−N)/abyfr(k−N))に従って現時点からNストローク前の真の基本燃料噴射量Fbaset(k−N)を求める。
補正前基本燃料噴射量遅延手段A16dは、今回の補正前基本燃料噴射量Fbaseb(k)を遅延させることにより現時点からNストローク前の補正前基本燃料噴射量Fbaseb(k−N)を求める。実際には、補正前基本燃料噴射量遅延手段A16dは補正前基本燃料噴射量Fbaseb(k−N)をRAMから読み出す。
フィルタ前基本補正値算出手段A16eは、上述した(15)式に基く式(KFbf=Fbaset(k−N)/Fbaseb(k−N))に従って、真の基本燃料噴射量Fbaset(k−N)を補正前基本燃料噴射量Fbaseb(k−N)で除することにより、フィルタ前基本補正値KFbfを算出する。
ローパスフィルタA16fは、フィルタ前基本補正値KFbfに対してローパスフィルタ処理を施すことにより基本補正値KFを算出する。このローパスフィルタ処理は、基本補正値KFを安定化させるため(フィルタ前基本補正値KFbfに重畳しているノイズ成分を除去するため)に行われる。このようにして求められた基本補正値KFは、現時点からNストローク前の運転状態が属していた運転領域に対応させられながらRAM及びバックアップRAMに記憶・格納されて行く。
このように、基本補正値算出手段A16は、最終燃料噴射量Fi(k)の計算時点が到来する毎に、A16a〜A16fの各手段等を利用して基本補正値KFを更新する。そして、基本補正値算出手段A16は、最終燃料噴射量Fi(k)の算出時において機関10の運転状態が属する運転領域に格納されている基本補正値KFをバックアップRAMから読み出し、読み出した基本補正値KFを補正後基本燃料噴射量算出手段A4に提供する。この結果、燃料噴射量(補正前基本燃料噴射量)の定常的な誤差が迅速に補償されていく。以上が、第1制御装置のメインフィードバック制御及びサブフィードバック制御の概要である。
(実際の作動)
次に、第1制御装置の実際の作動について説明する。以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのルックアップテーブルを表すものとする。また、引数の値がセンサの検出値である場合、その引数の値には現在値が適用される。
<最終燃料噴射量Fi(k)の算出>
CPUは、図7にフローチャートにより示した最終燃料噴射量Fiの計算及び噴射指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度(例えば、BTDC90°CA)となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が上記所定クランク角度になると、CPUはステップ700から処理を開始して以下に記載したステップ710乃至ステップ730の処理を順に行い、ステップ740に進む。
ステップ710:CPUは、テーブルMapMc(Ga,NE)に基づいて今回の吸気行程を迎える気筒(以下、「燃料噴射気筒」と云うこともある。)に吸入される今回の筒内吸入空気量Mc(k)を推定・決定する。筒内吸入空気量Mc(k)は、周知の空気量推定モデル(吸気通路における空気の挙動を模した物理法則に従って構築されたモデル)により算出されてもよい。
ステップ720:CPUは、下記の(16)式に基いて目標空燃比abyfr(k)を決定する。目標空燃比abyfr(k)は各気筒の吸気行程に対応されながらRAMに記憶されていく。(16)式において、abyfr0は所定の基準空燃比であり、ここでは理論空燃比stoichに設定されている。従って、サブフィードバック量KSFBが大きくなれば、目標空燃比abyfr(k)は小さくなる。なお、目標空燃比abyfr(k)は、更に、吸入空気量Ga及び/又は機関回転速度NE等の機関10の運転状態に基いて補正されてもよい。

abyfr(k)=abyfr0−KSFB…(16)
ステップ730:CPUは、上記筒内吸入空気量Mc(k)を上記目標空燃比abyfr(k)で除することにより、補正前基本燃料噴射量Fbaseb(k)を算出する。補正前基本燃料噴射量Fbaseb(k)は各気筒の吸気行程に対応されながらRAMに記憶されていく。
次に、CPUはステップ740に進み、現在の運転状態がフューエルカット条件が成立しているか否かを判定する。フューエルカット条件が成立していれば、CPUはステップ740にて「Yes」と判定してステップ795に直接進み、本ルーチンを一旦終了する。従って、燃料噴射の指示を行うステップ770が実行されないので、燃料噴射は停止される(フューエルカット運転が実行される。)。
一方、ステップ740の判定時点においてフューエルカット条件が成立していなければ、CPUはステップ740にて「No」と判定し、以下に記載したステップ750乃至ステップ770の処理を順に行い、その後、ステップ795に進んで本ルーチンを一旦終了する。
ステップ750:CPUは、後述するルーチンによって計算されるとともにバックアップRAMに運転領域毎に格納されている基本補正値KFの中から、現時点における運転状態が属する運転領域に格納されている基本補正値KFを読み出す。なお、メインフィードバック制御条件が不成立のとき、運転状態に関わらず基本補正値KFには値「1」が設定される。更に、CPUは、補正前基本燃料噴射量Fbaseb(k)に、読み出した基本補正値KFを乗じた値を補正後基本燃料噴射量Fbaseとして設定する。
ステップ760:CPUは、上記(2)式及び上記(11)式に従い、補正後基本燃料噴射量Fbaseに後述するルーチンにて求められているメインフィードバック量KFmainを乗じることにより、今回の最終燃料噴射量Fi(k)を求める。
ステップ770:CPUは、最終燃料噴射量Fi(k)の燃料が燃料噴射気筒に対する燃料噴射弁33から噴射されるように、その燃料噴射弁33に対して噴射指示を行う。
以上により、補正前基本燃料噴射量Fbaseb(k)が目標空燃比abyfr(k)と今回の筒内吸入空気量Mc(k)とに基づいて取得され、その補正前基本燃料噴射量Fbaseb(k)と基本補正値KFとにより補正後基本燃料噴射量Fbaseが取得される。更に、その補正後基本燃料噴射量Fbaseがメインフィードバック量KFmainにより補正されることにより最終的な燃料噴射量(最終燃料噴射量)Fi(k)が求められ、その最終燃料噴射量Fi(k)の燃料の噴射指示が燃料噴射気筒の燃料噴射弁33に対してなされる。
<メインフィードバック量の計算>
CPUは図8にフローチャートにより示したルーチンを実行周期Δt1(一定)の経過毎に繰り返し実行するようになっている。従って、所定のタイミングにてCPUはステップ800から処理を開始し、以下に記載したステップ805及びステップ810の処理を順に行い、ステップ815に進む。なお、この実行周期Δt1は、例えば、機関回転速度NEが想定される最大の機関回転速度である場合における連続する二つの噴射指示の発生時間間隔より短い時間に設定されている。
ステップ805:CPUは、ステップ805に記載した簡易のローパスフィルタ式(abyfrtgt(k)=α・abyfrtgtold+(1−α)・abyfr(k−N))に従ってメインフィードバック制御用目標空燃比abyfrtgt(k)を求める。ここで、αは0より大きく1より小さい定数であり、上記ローパスフィルタA12の時定数τに応じて設定されている。abyfrtgtoldは、「前回本ルーチンを実行した際にステップ810にて算出されたメインフィードバック制御用目標空燃比abyfrtgt」である。abyfrtgtoldは、前回メインフィードバック制御用目標空燃比と称呼される。abyfr(k−N)は、現時点からNストローク前の実際の上流側目標空燃比である。
ステップ810:CPUは、次回の本ルーチンの実行のために、前回メインフィードバック制御用目標空燃比abyfrtgtoldにステップ805にて算出したメインフィードバック制御用目標空燃比abyfrtgt(k)を格納する。
次に、CPUはステップ815に進み、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるか否かを判定する。メインフィードバック制御条件成立フラグXmainFBの値は、メインフィードバック制御条件が成立したときに「1」に設定され、メインフィードバック制御条件が不成立のとき「0」に設定される。
メインフィードバック制御条件は、例えば以下の総ての条件が成立するとき成立する。
・上流側空燃比センサ56が活性化している。
・フューエルカット条件が成立していない(フューエルカット運転状態でない。)。
いま、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるとすると、CPUは、以下に記載したステップ820乃至ステップ835の処理を順に行い、ステップ895に進んで本ルーチンを一旦終了する。
ステップ820:CPUは、現時点の上流側空燃比センサ56の出力値Vabyfsを図2により示したテーブルMapabyfs(Vabyfs)に基づいて変換することにより、現時点の検出空燃比abyfs(k)を求める。
ステップ825:CPUは、上記(8)式であるステップ825内に記載した式に従ってメインフィードバック制御用目標空燃比abyfrtgt(k)から今回の検出空燃比abyfs(k)を減じることにより、空燃比偏差Dafを求める。
ステップ830:CPUは、空燃比偏差Dafに上記(9)式により表された特性を有するハイパスフィルタ処理を施すことにより、メインフィードバック制御用偏差DafHiを取得する。
ステップ835:CPUは、メインフィードバック制御用偏差DafHiに比例ゲインGpHiを乗じて得られる積に値「1」を加えることにより、メインフィードバック量KFmainを求める。
一方、メインフィードバック制御条件成立フラグXmainFBの値が「0」であるとすると、CPUは、ステップ815から以下に記載したステップ840及びステップ845の処理を順に行い、ステップ895に進んで本ルーチンを一旦終了する。
ステップ840:CPUは、メインフィードバック量KFmainを「1」に設定する。
ステップ845:CPUは、基本補正値KFを「1」に設定する。
このように、メインフィードバック制御条件が不成立(XmainFB=0)の場合、メインフィードバック量KFmainの更新が停止されるとともに、メインフィードバック量KFmainの値が「1」に設定されるので、メインフィードバック制御が停止される(メインフィードバック量KFmainの最終燃料噴射量Fiへの反映が停止される)。また、メインフィードバック制御条件が不成立(XmainFB=0)の場合、基本補正値KFの値が「1」に設定されるので、基本補正値KFの最終燃料噴射量Fiへの反映が停止される。
<基本補正値の計算と記憶・格納>
CPUは図9にフローチャートにより示したルーチンを、図7に示したルーチンの実行に先だって繰り返し実行するようになっている。従って、所定のタイミングにてCPUはステップ900から処理を開始し、ステップ905に進んでメインフィードバック制御条件成立フラグXmainFBの値が「1」であるか否かを判定する。いま、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるとすると、CPUは、以下に記載したステップ910乃至ステップ930の処理を順に行い、ステップ995に進んで本ルーチンを一旦終了する。
ステップ910:CPUは、上記(13)式であるステップ910内に記載した式に従って「現時点からNストローク前の真の基本燃料噴射量Fbaset」を算出する。なお、現時点からNストローク前の最終燃料噴射量Fi(k−N)及び現時点からNストローク前の目標空燃比abyfr(k−N)は、いずれもRAMから読み出される。
ステップ915:CPUは、上記(15)式と同じ式であるステップ915に記載した式に基いて、現時点からNストローク前の真の基本燃料噴射量Fbasetを現時点からNストローク前の補正前基本燃料噴射量Fbaseb(k−N)により除することによって、基本補正値KFの基礎となる今回値KFnew(フィルタ前基本補正値KFbf)を算出する。なお、現時点からNストローク前の補正前基本燃料噴射量Fbaseb(k−N)はRAMから読み出される。
ステップ920:CPUは、現時点からNストローク前の時点における機関10の運転状態が属する運転領域に対応してバックアップRAM内に格納してある基本補正値KFを同バックアップRAMから読み出す。この読み出された基本補正値KFは、過去の基本補正値KFoldである。
ステップ925:CPUは、ステップ925に記載した簡易のローパスフィルタ式(KF=β・KFold+(1−β)・KFnew)に従って新たな基本補正値KF(最終基本補正値KF)を算出する。ここで、βは0より大きく1より小さい定数である。
ステップ930:CPUは、ステップ925にて求められた基本補正値KFを、現時点からNストローク前の時点における機関10の運転状態が属する運転領域に対応したバックアップRAM内の格納領域に記憶・格納する。このようにして、基本補正値KFが更新され、且つ、記憶されて行く。
一方、メインフィードバック制御条件成立フラグXmainFBの値が「0」であると、CPUはステップ905にて「No」と判定し、ステップ995に直ちに進んで本ルーチンを一旦終了する。この場合、基本補正値KFの更新及びバックアップRAMへの記憶・格納処理は実行されない。
なお、基本補正値KFnewの値をそのまま新たな基本補正値KFとして採用してもよい。その場合、ステップ920を省略し、ステップ925における定数βを「0」に設定すればよい。
<サブフィードバック量の計算>
CPUは図10にフローチャートにより示したルーチンを、所定時間が経過する毎に繰り返し実行するようになっている。従って、所定のタイミングになるとCPUはステップ1000から処理を開始し、ステップ1005に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件はメインフィードバック制御条件が成立し、且つ、下流側空燃比センサ57が活性化していると判定されるときに成立する。
いま、サブフィードバック制御条件が成立しているものとして説明を続ける。この場合、CPUは以下に記載したステップ1010乃至ステップ1040の処理を順に行い、ステップ1045に進む。
ステップ1010:CPUは、上記(3)式であるステップ1010内に記載した式に従って、下流側目標値Voxsrefから現時点の下流側空燃比センサ57の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
ステップ1015:CPUは、出力偏差量DVoxsに対して上記(4)式により表された特性を有するローパスフィルタ処理を施すことによりローパスフィルタ通過後出力偏差量DVoxslowを算出する。
ステップ1020:CPUは、下記(17)式に基づきローパスフィルタ通過後出力偏差量DVoxslowの微分値DDVoxslowを求める。(17)式において、DVoxslowoldは前回の本ルーチン実行時において「後述するステップ1040にて設定(更新)されたローパスフィルタ通過後出力偏差量DVoxslow」である。また、Δtは本ルーチンが前回実行された時点から今回実行された時点までの時間である。

DDVoxslow=(DVoxslow-DVoxslowold)/Δt …(17)
ステップ1025:CPUは、「後述する図15に示したルーチンにより別途求められている比例ゲインKp」及び「後述する図16に示したルーチンにより別途求められている調整ゲインK」を読み込む。
比例ゲインKpは、サブFB学習値KSFBgが収束している可能性(サブFB学習値KSFBgの収束度)が高いと判定されるほど(即ち、ステータス(status)の値が大きいほど)、小さい値に設定される。
調整ゲインKは、最大酸素吸蔵量Cmaxが一定の場合において、サブFB学習値KSFBgが収束している可能性(サブFB学習値KSFBgの収束度)が高いと判定されるほど(即ち、ステータス(status)の値が大きいほど)、小さい値に設定される。更に、調整ゲインKは、後述するステータス(status)の値が「ある値」であるとき、最大酸素吸蔵量Cmaxが大きいほど(即ち、触媒の劣化の程度が小さいほど)小さい値になるように設定される。
ステップ1030:CPUは、上記(5)式であるステップ1030内に示した式に従って時間積分値SDVoxslowを求める。
ステップ1035:CPUは、上記(6)式であるステップ1035内に示した式に従ってサブフィードバック量KSFBを求める。
ステップ1040:CPUは、ローパスフィルタ通過後出力偏差量DVoxslowの前回値DVoxslowoldに上記ステップ1010にて求めたローパスフィルタ通過後出力偏差量DVoxslowを格納する。
次に、CPUはステップ1045に進み、前回のサブFB学習値KSFBgの更新時点から学習間隔時間Tthが経過しているか否かを判定する。このとき、前回のサブFB学習値KSFBgの更新時点から学習間隔時間Tthが経過していなければ、CPUはステップ1045にて「No」と判定し、ステップ1095に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1045の処理を実行する時点において、前回のサブFB学習値KSFBgの更新時点から学習間隔時間Tthが経過していると、CPUは以下に述べるステップ1055乃至ステップ1065の処理を順に行い、ステップ1095に進んで本ルーチンを一旦終了する。
ステップ1055:CPUは、積分ゲインKiと時間積分値SDVoxslowとの積(即ち、積分項Ki・SDVoxslow)を「その時点の(即ち、更新前の)サブFB学習値KSFBg」に加えることによりサブFB学習値KSFBgを更新し、更新されたサブFB学習値KSFBgをバックアップRAMに格納する。このように、CPUは、サブフィードバック量KSFBが更新される期間よりも長い期間が経過した時点における「サブフィードバック量KSFBの定常成分に応じた積分項Ki・SDVoxslow(時間積分値SDVoxslowに比例した値)」を、サブFB学習値KSFBgとして順次取り込む。
ステップ1060:CPUは、サブFB学習値KSFBgの過去の値の変動中心(荷重平均値)Vcを下記(18)式に従って更新する。γはαは0より大きく1より小さい定数である。Vc(n)は更新後の中心値Vcであり、Vc(n−1)は更新前の中心値Vcである。

Vc(n)=γ・Vc(n−1) + (1−γ)・KSFBg …(18)
ステップ1065:CPUは、時間積分値SDVoxslowを下記(19)式に従って「0」に設定する。その後、CPUはステップ1095に進み、本ルーチンを一旦終了する。

SDVoxslow(n)=0 …(19)
一方、ステップ1005の判定時において、サブフィードバック制御条件が不成立であると、CPUはステップ1005にて「No」と判定してステップ1070に進み、サブフィードバック量KSFBにサブFB学習値KSFBgを代入する。次に、CPUはステップ1075にて積分値SDVoxslowに「サブFB学習値KSFBgを積分ゲインKiにて除した値(KSFBg/Ki)を設定した後、ステップ1095に進んで本ルーチンを一旦終了する。
<statuの初期設定>
上述したように、比例ゲインKp及び調整ゲインKは、サブFB学習値KSFBgの収束の程度(学習進行程度)」を表す「status(ステータス)」に基いて定められる。そこで、以下、「status(ステータス)」を設定する際のCPUの作動について説明する。statusN(N=0、1、2)は、上述したように定義されている。
以下、説明の便宜上、現時点が内燃機関10の始動直後であり、且つ、この機関始動前に「電気制御装置70に電力を供給するためのバッテリ」の交換がなされていたと仮定する。CPUは図11にフローチャートにより示した「status初期設定ルーチン」を、内燃機関10の始動時点以降、所定時間が経過する毎に実行するようになっている。
従って、内燃機関10の始動時点以降において所定のタイミングが到来すると、CPUステップ1100から処理を開始し、ステップ1110に進んで「現時点が、内燃機関10の始動直後であるか否か」を判定する。
前述の仮定に従うと、現時点は内燃機関10の始動直後である。従って、CPUはステップ1110にて「Yes」と判定し、ステップ1120に進んで「電気制御装置70に電力を供給するためのバッテリ」交換がなされたか否かを判定する。このとき、前述の仮定に従うと、事前にバッテリが交換されている。従って、CPUはステップ1120にて「Yes」と判定してステップ1130に進み、statusを「0」に設定・更新する。この「status」の値は、その値が更新される毎にバックアップRAMに記憶・更新される。
次に、CPUは、ステップ1140に進んでカウンタCIをクリアし(「0」に設定し)、続くステップ1150にて次の処理を行う。
CPUは、「バックアップRAMに記憶されているサブFB学習値KSFBg」を「0(初期値、デフォルト値)」に設定する。
CPUは、時間積分値SDVoxslowを「0(初期値、デフォルト値)」に設定する。
CPUは、中心値Vcを「0(初期値、デフォルト値)」に設定する。
CPUは、判定基準値Vkijunを「0(初期値、デフォルト値)」に設定する。
その後、CPUはステップ1195に進み、本ルーチンを一旦終了する。
なお、CPUがステップ1120に進んだとき、バッテリ交換がされていないと判定した場合、CPUはそのステップ1120にて「No」と判定してステップ1160に進み、バックアップRAMに記憶されているstatusを読み出す。次いで、CPUはステップ1170にて、「図10のステップ1060において算出されている中心値Vc」及び「判定基準値Vkijun」をバックアップRAMから読み出す。判定基準値Vkijunは、「status(ステータス)」の判定のために設定される閾値の基準となる値であり、後述する図13のステップ1340にて更新される。
以降、CPUはステップ1110にて「No」と判定し、ステップ1195に直接進んで本ルーチンを一旦終了するようになる。
<status判定その1(第1ステータス判定)>
CPUは、status判定を行うために、所定時間が経過する毎に図12にフローチャートにより示した「第1ステータス判定ルーチン」を実行するようになっている。従って、所定のタイミングになると、CPUは図12のステップ1200から処理を開始してステップ1210に進み、サブフィードバック制御条件が成立しているか否かを判定する。
このとき、サブフィードバック制御条件が成立していなければ、CPUはステップ1210にて「No」と判定してステップ1220に進む。そして、CPUはステップ1220にてカウンタCIを「0」に設定し、その後、ステップ1295に直接進んで本ルーチンを一旦終了する。なお、カウンタCIは、機関10が搭載された車両の図示しないイグニッション・キー・スイッチがオフ位置からオン位置に切り換えられた際に実行される図示しないイニシャルルーチンにより「0」に設定されるようになっている。
これに対し、CPUがステップ1210に進んだとき、サブフィードバック制御条件が成立していると、CPUはステップ1210にて「Yes」と判定してステップ1230に進み、現時点が「サブFB学習値KSFBgが更新された直後の時点」であるか否か(図10のステップ1055の処理を行った直後であるか否か)を判定する。
このとき、現時点が「サブFB学習値KSFBgが更新された直後の時点」でなければ、CPUはステップ1230にて「No」と判定し、ステップ1295に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1230に進んだとき、現時点が「サブFB学習値KSFBgが更新された直後の時点」であると、CPUはそのステップ1230にて「Yes」と判定してステップ1240に進み、statusが「0」である(ステータスがstatus0である)か否かを判定する。このとき、statusが「0」でなければ、CPUはステップ1240にて「No」と判定し、ステップ1295に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1240に進んだとき、statusが「0」であると、CPUはそのステップ1240にて「Yes」と判定してステップ1250に進み、カウンタCIを「1」だけ増大する。次いで、CPUはステップ1260に進み、カウンタCIが更新回数閾値CIth以上であるか否かを判定する。このとき、カウンタCIが更新回数閾値CIthよりも小さいと、CPUはステップ1260にて「No」と判定し、ステップ1295に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1260に進んだとき、カウンタCIが更新回数閾値CIth以上であると、CPUはそのステップ1260にて「Yes」と判定してステップ1270に進み、statusを「1」に設定・更新する(ステータスをstatus1に設定する)。
このように、statusが「0」であるとき、サブFB学習値KSFBgの更新が更新回数閾値CIth以上行われると、statusは「1」に変更される。これは、サブFB学習値KSFBgの更新が更新回数閾値CIth以上行われた時点においては、サブFB学習値KSFBgはある程度まで収束値に接近したであろうと判断できるからである。なお、ステップ1220を省略してもよい。また、ステップ1270の実行後にカウンタCIを「0」に設定してもよい。更に、図12のルーチン自体を省略してもよい。
<status判定その2(第2ステータス判定)>
CPUは、status判定を行うために、所定時間が経過する毎に図13にフローチャートにより示した「第2ステータス判定ルーチン」を実行するようになっている。以下においては、機関10の始動前に「電気制御装置70に電力を供給するためのバッテリ」が交換されたことによって、statusが図11のステップ1130にて「0」に設定され、且つ、ステップ1150にてサブFB学習値KSFBgが「0」に設定されたと仮定して説明を行う。更に、現時点は機関10の始動直後であると仮定する。
CPUは、所定のタイミングになると、図13のステップ1300から処理を開始してステップ1305に進み、サブフィードバック制御条件が成立しているか否かを判定する。機関10の始動直後においては、サブフィードバック制御条件は一般に成立しない。従って、CPUはステップ1305にて「No」と判定してステップ1350に進み、カウンタCLを「0」に設定する。なお、カウンタCLは、上述したイニシャルルーチンにより「0」に設定されるようになっている。その後、CPUはステップ1395に直接進んで本ルーチンを一旦終了する。
この場合、CPUは図10のステップ1005からステップ1070に進むので、ステップ1055の処理は実行されない。従って、サブFB学習値KSFBgは「0」に維持される。
その後、機関10の運転が継続すると、サブフィードバック制御条件が成立する。従って、図10のルーチンにより、サブフィードバック量KSFBが更新される。
係る状態において、CPUが図13のステップ1305に進むと、CPUはそのステップ1305にて「Yes」と判定してステップ1310に進む。そして、CPUは、ステップ1310にて、現時点がサブFB学習値KSFBgの更新直後の時点であるか否かを判定する。このとき、現時点がサブFB学習値KSFBgの更新直後の時点でなければ、CPUはステップ1310にて「No」と判定し、ステップ1395に直接進んで本ルーチンを一旦終了する。
一方、現時点がサブFB学習値KSFBgの更新直後の時点(図10のステップ1055の処理が実行された時点の直後)であると、CPUはステップ1310にて「Yes」と判定してステップ1315に進み、カウンタCLを「1」だけ増大する。次いで、CPUはステップ1320に進み、サブFB学習値KSFBgの最大値Vgmax及び最小値Vgminを更新する。このサブFB学習値KSFBgの最大値Vgmax及び最小値Vgminは、それぞれ、カウンタCLが「0」から次のステップ1325にて用いられる閾値CLthに至るまでの期間(サブFB学習値KSFBgの収束度を判定するための所定時間、状態判定期間)におけるサブFB学習値KSFBgの最大値及び最小値となる。
次に、CPUはステップ1325に進み、カウンタCLが閾値CLth以上であるか否かを判定する。このとき、カウンタCLが閾値CLthよりも小さいと、CPUはステップ1325にて「No」と判定し、ステップ1395に直接進んで本ルーチンを一旦終了する。
その後、時間が経過すると、サブFB学習値KSFBgが更新される毎に(即ち、学習間隔時間Tthが経過する毎に)ステップ1315の処理が実行される。従って、カウンタCLは閾値CLthに到達する。このとき、CPUがステップ1325に進むと、CPUはそのステップ1325にて「Yes」と判定してステップ1330に進み、カウンタCLを「0」に設定する。
次に、CPUはステップ1335に進み、図14に示したルーチンを実行する。即ち、CPUは図14のステップ1400から処理を開始してステップ1405に進み、statusが「0」であるか否かを判定する。前述の仮定に従えば、statusは「0」であるから、CPUはステップ1405にて「Yes」と判定してステップ1410に進み、判定基準値Vkijunに「所定の正の特定値である第1値ΔV0」を加えた値(Vkijun+ΔV0)を上限値(大側閾値)Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「第1値ΔV0」を減じた値(Vkijun−ΔV0)を下限値(小側閾値)Vgminthとして設定する。なお、この時点における判定基準値Vkijunの値は「0」である。
次に、CPUはステップ1415に進み、図13のステップ1320にて取得した最大値Vgmaxが上限値Vgmaxth以下であり、且つ、図13のステップ1320にて取得した最小値Vgminが下限値Vgminth以上であるか否かを判定する。即ち、CPUは、状態判定期間(カウンタCLが0から閾値CLthに至るまでの所定時間)におけるサブFB学習値KSFBgが、下限値Vgminthと上限値Vgmaxthとにより規定される閾値幅内であったか否かを判定する。
ところで、前述の仮定に従えば、機関始動前にバッテリ交換がなされたため、サブFB学習値KSFBgは図11のステップ1150にて「0」に設定されている。この場合、一般に、サブFB学習値KSFBgと収束値ki・SDVoxsfinalとの差(時間積分値SDVoxsと、その収束値SDVoxsfinalとの差)は大きいので、サブフィードバック量KSFB及びサブFB学習値KSFBgの変化速度は大きい。従って、最大値Vgmaxが上限値Vgmaxthよりも大きいか、又は、最小値Vgminが下限値Vgminthよりも小さい。
このため、CPUはステップ1415にて「No」と判定し、ステップ1495を経由して図13のステップ1340に進み、判定基準値Vkijunに中心値Vcを設定する。中心値Vcは、図10のステップ1060にて算出されている。従って、CPUは、ステップ1335にてステータス判定が実行される時点において、その時点から状態判定期間(カウンタCLが0から閾値CLthに至るまでの期間)前の時点から、その時点まで、の期間におけるサブFB学習値KSFBgの加重平均値(一次遅れ相当値である中心値Vc)を、判定基準値Vkijunとして設定する。その後、CPUはステップ1395に進み、本ルーチンを一旦終了する。この結果、statusは「0」に維持される。
この状態が継続すると、サブFB学習値KSFBgは収束値ki・SDVoxsfinalに接近し、収束値ki・SDVoxsfinal近傍において比較的穏やかに変化するようになる。この結果、最大値Vgmaxは「ステップ1410にて算出される上限値Vgmaxth」以下となり、且つ、最小値Vgminは「ステップ1410にて算出される下限値Vgminth」以上となる。このとき、CPUが図14のステップ1415に進むと、CPUはそのステップ1415にて「Yes」と判定し、ステップ1420に進んでstatusを「1」に設定する。その後、CPUはステップ1495を経由して図13のステップ1340に進む。
なお、statusが「0」であるときにステップ1415の条件が成立しない場合であっても、前述した図12のステップ1260の条件(カウンタCIが更新回数閾値CIth以上となる条件)が成立すれば、statusはステップ1270にて「1」に変更される。
この時点以降、CPUが図13のルーチンのステップ1335を経由して図14のステップ1405に進むと、statusが「1」に設定されていることから、CPUはそのステップ1405にて「No」と判定する。そして、CPUはステップ1430に進んでstatusが「1」であるか否かを判定する。この場合、CPUはステップ1430にて「Yes」と判定してステップ1435に進み、判定基準値Vkijunに「第1値ΔV0よりも小さい第2値ΔV1(ΔV1>0)」を加えた値(Vkijun+ΔV1)を上限値Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「第2値ΔV1」を減じた値(Vkijun−ΔV1)を下限値Vgminthとして設定する。なお、第2値ΔV1も特定値と称呼される。
次に、CPUはステップ1440に進み、図13のステップ1320にて取得した最大値Vgmaxが上限値Vgmaxth以下であり、且つ、図13のステップ1320にて取得した最小値Vgminが下限値Vgminth以上であるか否かを判定する。
このとき、サブFB学習値KSFBgが収束値ki・SDVoxsfinalに接近していると、最大値Vgmaxは上限値Vgmaxth以下であり、且つ、最小値Vgminは下限値Vgminth以上となる。この場合、CPUはステップ1440にて「Yes」と判定してステップ1445に進み、statusを「2」に設定する。その後、CPUはステップ1495を経由して図13のステップ1340に進む。
この時点以降、CPUが図13のルーチンのステップ1335を経由して図14のステップ1405に進むと、statusが「2」に設定されていることから、CPUはそのステップ1405にて「No」と判定し、ステップ1430にても「No」と判定してステップ1455に進む。
CPUはステップ1455にて、判定基準値Vkijunに「第2値ΔV1よりも小さい第3値ΔV2(ΔV2>0)」を加えた値(Vkijun+ΔV2)を上限値Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「第3値ΔV2」を減じた値(Vkijun−ΔV2)を下限値Vgminthとして設定する。なお、第3値ΔV2も特定値と称呼される。また、第3値ΔV2は第2値ΔV1と等しい値であってもよい。
次に、CPUはステップ1460に進み、図13のステップ1320にて取得した最大値Vgmaxが上限値Vgmaxth以下であり、且つ、図13のステップ1320にて取得した最小値Vgminが下限値Vgminth以上であるか否かを判定する。
このとき、サブFB学習値KSFBgが収束値ki・SDVoxsfinal付近において安定していると、最大値Vgmaxは上限値Vgmaxth以下であり、且つ、最小値Vgminは下限値Vgminth以上となる。この場合、CPUはステップ1460にて「Yes」と判定してステップ1495に進む。
一方、何らかの理由(例えば、失火率が変化するなどの大きく空燃比を乱す外乱)により、最大値Vgmaxが「(Vkijun+ΔV2)である上限値Vgmaxth」よりも大きくなるか、又は、最小値Vgminが「(Vkijun−ΔV2)である下限値Vgminth」よりも小さくなると、CPUはステップ1460にて「No」と判定してステップ1465に進み、statusを「1」に設定する。
更に、statusが「1」に設定されている状態において、最大値Vgmaxが「(Vkijun+ΔV1)である上限値Vgmaxth」よりも大きくなるか、又は、最小値Vgminが「(Vkijun−ΔV1)である下限値Vgminth」よりも小さくなると、CPUはステップ1440にて「No」と判定してステップ1450に進み、statusを「0」に設定する。
<比例ゲインKpの設定>
CPUは、比例ゲインKpを決定するために、図15にフローチャートにより示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。このルーチンにより、比例ゲインKpは、第1比例ゲイン(最小比例ゲイン)Kpsmall、第2比例ゲイン(中程度比例ゲイン)Kpmid、及び、第3比例ゲイン(最大比例ゲイン)Kplarge、のうちの何れかに設定される。第3比例ゲインKplargeは第2比例ゲインKpmidよりも大きく、、第2比例ゲインKpmidは第1比例ゲインKpsmallよりも大きい。即ち、Kpsmall<Kpmid<Kplargeである。
所定のタイミングになると、CPUは図15のステップ1500から処理を開始し、ステップ1510にてステータス(status)を読み込む。
次に、CPUはステップ1520に進み、statusが「2」であるか否かを判定する。即ち、CPUは、ステップ1520にてサブFB学習値KSFBgの学習が完了しているか否か(サブFB学習値KSFBgが収束値ki・SDVoxsfinalに十分近づいているか否か)を判定する。
このとき、statusが「2」であると、CPUはステップ1520にて「Yes」と判定してステップ1560に進み、比例ゲインKpを第1比例ゲイン(最小比例ゲイン)Kpsmallに設定する。その後、CPUはステップ1595に進み、本ルーチンを一旦終了する。
一方、CPUがステップ1520の処理を行う時点において、statusが「2」でなければ、CPUはステップ1520にて「No」と判定してステップ1530に進み、statusが「0」であるか否かを判定する。即ち、CPUは、ステップ1530にてサブFB学習値KSFBgの学習が殆ど進んでいない状態であるか否か(サブFB学習値KSFBgが収束値ki・SDVoxsfinalから大きく乖離しているか否か)を判定する。
このとき、statusが「0」であると、CPUはステップ1530にて「Yes」と判定してステップ1540に進み、比例ゲインKpを第3比例ゲイン(最大比例ゲイン)Kplargeに設定する。その後、CPUはステップ1595に進み、本ルーチンを一旦終了する。
更に、CPUがステップ1530の処理を行う時点において、statusが「0」でなければ、CPUはステップ1530にて「No」と判定してステップ1550に進み、比例ゲインKpを第2比例ゲインKpmidに設定する。その後、CPUはステップ1595に進み、本ルーチンを一旦終了する。
以上をまとめると、CPUは、以下のように比例ゲインKpを設定する。
(1)statusが「0」であるとき:比例ゲインKp=第3比例ゲインKplarge
(2)statusが「1」であるとき:比例ゲインKp=第2比例ゲインKpmid
(3)statusが「2」であるとき:比例ゲインKp=第1比例ゲインKpsmall
<調整ゲインKの設定>
CPUは、調整ゲインKを決定するために、図16にフローチャートにより示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。
従って、所定のタイミングになると、CPUは図16のステップ1600から処理を開始し、ステップ1610に進んでステータス(status)を読み込む。
次に、CPUはステップ1620に進み、ステップ1620内に記載されたテーブルMapK(Cmax,status)に基いて調整ゲインKを決定する。その後、CPUはステップ1695に進んで本ルーチンを一旦終了する。
このテーブルMapK(Cmax,status)によれば、最大酸素吸蔵量Cmaxが一定の場合において、status0での調整ゲインKはstatus1での調整ゲインKよりも大きく、status1での調整ゲインKはstatus2での調整ゲインKよりも大きくなるように、調整ゲインKが決定される。
更に、テーブルMapK(Cmax,status)によれば、ステータスの値が同じである場合、調整ゲインKは最大酸素吸蔵量Cmaxが大きいほど「より小さい値」となるように決定される。
なお、上流側触媒43の最大酸素吸蔵量Cmaxは、上流側触媒43が吸蔵し得る酸素の量の最大値であり、所謂、アクティブ空燃比制御によって別途取得されている。最大酸素吸蔵量Cmaxは、上流側触媒43の劣化が進むほど小さくなる。アクティブ空燃比制御は、例えば、特開平5−133264号公報等に記載された周知の制御である。従って、ここではその詳細な説明を省略する。最大酸素吸蔵量Cmaxは、取得される毎にバックアップRAMに記憶・更新されるようになっている。
以上、説明したように、第1制御装置は、
所定の下流側フィードバック条件(サブフィードバック制御条件)が成立している期間において、下流側空燃比センサ57の出力値Voxsと所定の下流側目標値Voxsrefとの偏差に相関する値である出力偏差量(DVoxslow)に所定の比例ゲインKpを乗じることにより比例項(=kp・DVoxslow)を算出し、
前記出力偏差量(DVoxslow)に所定の調整ゲインKを乗じた値(K・DVoxslow)を積算することにより時間積分値(SDVoxslow)を算出するとともに、その算出された時間積分値(SDVoxslow)に比例した値(Ki・SDVoxslow)を積分項として算出し、
サブフィードバック量KSFB(即ち、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefに一致させるための補正量であり、且つ、燃料噴射弁33から噴射される燃料の量をフィードバック補正する空燃比フィードバック量)を少なくとも「比例項(=kp・DVoxslow)及び積分項(=Ki・SDVoxslow)に基いて算出する補正量算出手段(図10のステップ1005乃至ステップ1040を参照。)を備える。
更に、第1制御装置は、
前記算出された積分項(=Ki・SDVoxslow)に相関する値(Ki・SDVoxslow)を学習値(サブFB学習値KSFBg)として取得する学習手段(図10のステップ1045及びステップ1055を参照。)と、
前記下流側フィードバック条件が成立している場合には少なくも前記空燃比フィードバック量(サブフィードバック量KSFB)に基いて最終燃料噴射量Fi(k)を算出するとともに(図7のルーチンのステップ720乃至ステップ760、図8のルーチンを参照。)、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値(サブFB学習値KSFBg)に基いて最終燃料噴射量Fi(k)を算出し(図7のルーチンのステップ720乃至ステップ760、図8のルーチン、及び図10のステップ1070を参照。)
、前記算出された最終燃料噴射量Fi(k)の燃料を燃料噴射弁33から噴射させる燃料噴射制御手段(図7のステップ770)と、
を備える。
加えて、第1制御装置の前記学習手段は、
前記学習値(サブFB学習値KSFBg)が、所定の上限値Vgmaxthと所定の下限値Vgminthとの間に所定時間に渡って存在している場合、前記学習値が収束したと判定するように構成されている(図13の特にステップ1320、ステップ1335、図14のルーチンを参照。)。
加えて、第1制御装置の前記補正量算出手段は、
前記比例ゲインKpを、前記学習値(サブFB学習値KSFBg)が収束したと判定された後(例えば、statusが「2」に設定された後)は前記学習値が収束したと判定される前(例えば、statusが「1」に設定されているとき)に比べて小さい値に設定するとともに(図15のルーチンを参照。)、
前記調整ゲインKを、前記学習値(サブFB学習値KSFBg)が収束したと判定された後(例えば、statusが「2」に設定された後)は前記学習値が収束したと判定される前(例えば、statusが「1」に設定されているとき)に比べて小さい値に設定するように構成されている(図16のステップ1620を参照。)。
この結果、サブFB学習値KSFBgが収束したと判定される前(例えば、statusが「2」であると判定される前)において、サブFB学習値KSFBgの所定期間(カウンタCLが0から閾値CLthに至るまでの状態判定期間)における変化量は小さくなるので、サブFB学習値KSFBgが収束したとの判定を早期に行うことができる。加えて、サブFB学習値KSFBgが収束したと判定された後(例えば、statusが「2」であると判定される後)において、触媒43の酸素吸蔵量OSAが「最大酸素吸蔵量Cmax」及び「0」に到達する頻度が小さくなる(前述した出力値Voxsの反転周期が長くなる)ので、エミッションを改善することができる。
更に、第1制御装置によれば、サブFB学習値KSFBgの収束の程度が進むほど、調整ゲインKが小さくなる。これにより、サブFB学習値KSFBgが収束したと判定される前(statusが「0」又「1」であるとき)において、サブFB学習値KSFBgを適切な値(収束すべき値)に迅速に近づけることができるとともに、サブFB学習値KSFBgが収束したと判定された後(statusが「2」となった後)においてサブFB学習値KSFBgを適切な値の近傍に安定して維持することができる。
<第2実施形態>
次に、本発明の第2実施形態に係る制御装置(以下、「第2制御装置」とも称呼する。)について説明する。この第2制御装置は、サブFB学習値KSFBgが収束したと判定される前(例えば、statusが「0」又は「1」であるとき)において、比例ゲインKpを「吸入空気量Gaが大きいほど小さくなる値(実際には、吸入空気量Gaに反比例する値)」に設定する点のみにおいて、第1制御装置と相違している。以下、この相違点を中心に説明する。
触媒43に流入する空燃比が「ある値」であったとしても、吸入空気量Gaが大きいほど触媒43に流入する「過剰な酸素又は過剰な未燃物」の量は多くなる。従って、触媒43の酸素吸蔵量の変化速度は吸入空気量Gaが大きいほど大きくなる。このため、図17に示したように、比例ゲインKpを吸入空気量Gaに関わらず一定値に維持していると、吸入空気量が小さい場合(時刻t4以降)の「下流側空燃比センサ57の出力値Voxsの反転周期」は、吸入空気量Gaが大きい場合(時刻t1−時刻t4)の「下流側空燃比センサ57の出力値Voxsの反転周期」よりも長くなる。その結果、吸入空気量Gaが小さいほど学習値(サブFB学習値)の変化量はより大きくなる(変化量D1及びD2を参照。)。
これに対し、第2制御装置は、サブFB学習値KSFBgが収束したと判定される前(例えば、statusが「0」又は「1」であるとき)において、比例ゲインKpを「吸入空気量Gaが大きいほど小さくなる値(実際には、吸入空気量Gaに反比例する値)」に設定する。
この結果、図18に示したように、吸入空気量Gaが変化した場合であっても(時刻t4の前後を参照。)、「下流側空燃比センサ57の出力値Voxsの反転周期」を略一定に維持することが可能となる。従って、吸入空気量Gaが減少した場合であっても状態判定期間におけるサブFB学習値KSFBgの変化量が大きくならないので、第2制御装置は「サブFB学習値KSFBgが収束したとの判定(statusが「2」であるとの判定)」を早期に行うことができる。
(実際の作動)
次に、第2制御装置の実際の作動について説明する。第2制御装置のCPUは、図7乃至図14、図15に代わる図19、及び、図16に示したルーチンを実行する。図19以外の図に示したルーチンについては説明済みである。よって、以下、図19に示したルーチンについて説明する。なお、図19に示したステップのうち図15に説明したステップと同一の処理を行うためのステップには、そのようなステップに付された符号と同一の符合が付されている。更に、以下に述べる値「Kplarge、Kpmid及びKpsmall」は、第1制御装置が使用する値「Kplarge、Kpmid及びKpsmall」とそれぞれ同一である。
図19のルーチンは、図15のステップ1540及びステップ1550を、ステップ1940及びステップ1950にそれぞれ置換したルーチンである。従って、第2制御装置のCPUは、サブFB学習値KSFBgの学習が殆ど進んでいない状態である場合、即ち、statusが「0」である場合、ステップ1530からステップ1940に進み、比例ゲインKpを「吸入空気量Gaに反比例する第3比例ゲイン(最大比例ゲイン)Kplarge/Ga)」に設定する。その後、CPUはステップ1995に進み、本ルーチンを一旦終了する。この結果、statusが「0」である場合、比例ゲインKpは吸入空気量Gaが大きいほど小さくなる値Kplarge/Gaに設定される。但し、値Kplarge/Gaは、第1比例ゲイン(最小比例ゲイン)Kpsmall以上の値である。
更に、第2制御装置のCPUは、サブFB学習値KSFBgの収束状態が準安定状態状態である場合、即ち、statusが「1」である場合、ステップ1530からステップ1950に進み、比例ゲインKpを「吸入空気量Gaに反比例する第2比例ゲイン(中程度比例ゲイン)Kpmid/Ga)」に設定する。その後、CPUはステップ1995に進み、本ルーチンを一旦終了する。この結果、statusが「1」である場合、比例ゲインKpは吸入空気量Gaが大きいほど小さくなる値Kpmid/Gaに設定される。但し、値Kpmid/Gaは、第1比例ゲイン(最小比例ゲイン)Kpsmall以上の値である。更に、値Kpmid/Gaは、吸入空気量Gaが「ある特定値」であるとき、値Kplarge/Gaよりも小さい。
以上をまとめると、CPUは、以下のように比例ゲインKpを設定する。
(1)statusが「0」であるとき:比例ゲインKp=Kplarge/Ga
(2)statusが「1」であるとき:比例ゲインKp=Kpmid/Ga
(3)statusが「2」であるとき:比例ゲインKp=Kpsmall
以上、説明したように、第2制御装置は、第1制御装置と同様の補正量算出手段を備える。但し、第2制御装置の補正量算出手段は、学習値(サブFB学習値KSFBg)が収束したと判定される前(例えば、statusが「1」である場合)において、比例ゲインKpを、吸入空気量Gaが小さいほど大きくするように構成されている(図19のステップ1950を参照。)。
この結果、吸入空気量Gaが変化した場合であっても、「下流側空燃比センサ57の出力値Voxsの反転周期」を略一定に維持することが可能となる。従って、吸入空気量Gaが減少した場合であっても状態判定期間におけるサブFB学習値KSFBgの変化量が大きくならないので、第2制御装置は「サブFB学習値KSFBgが収束したとの判定(statusが「2」であるとの判定)」を早期に行うことができる。
なお、第2制御装置のCPUは、ステップ1560にて、比例ゲインKpを「値Kpsmall/Ga」に設定してもよい。即ち、第2制御装置は、サブFB学習値KSFBgの収束の程度に依らず、比例ゲインKpを「吸入空気量Gaが大きいほど小さくなる値」に設定してもよい。
<第3実施形態>
次に、本発明の第3実施形態に係る制御装置(以下、「第3制御装置」とも称呼する。)について説明する。この第3制御装置は、サブFB学習値KSFBgが収束したと判定される前(例えば、statusが「0」又は「1」であるとき)において、比例ゲインKpを「吸入空気量Gaが大きいほど小さくなり、且つ、触媒43の最大酸素吸蔵量Cmaxが小さくなるほど小さくなる値」に設定する点のみにおいて、第1制御装置と相違している。以下、この相違点を中心に説明する。
触媒43に流入する空燃比が「ある値」であり、且つ、吸入空気量Gaが「ある値」であっても、「下流側空燃比センサ57の出力値Voxsの反転周期」は触媒43の劣化の程度が進むほど短くなる。これは、触媒43の劣化の程度が進むと、触媒43の最大酸素吸蔵量Cmaxが小さくなるので、酸素吸蔵量が「0」又は最大酸素吸蔵量Cmaxに早期に到達してしまうからである。
これに対し、第3制御装置は、サブFB学習値KSFBgが収束したと判定される前(例えば、statusが「0」又は「1」であるとき)において、比例ゲインKpを「最大酸素吸蔵量Cmaxが小さいほど小さくなる値」に設定する。
この結果、触媒43の劣化の進行度(劣化度の程度、劣化度合い)に関わらず、「下流側空燃比センサ57の出力値Voxsの反転周期」を略一定に維持することが可能となる。従って、触媒43の劣化の程度に依らず、サブFB学習値KSFBgが実質的に収束している場合においてサブFB学習値KSFBgの変化量を略一定に維持することができるので、第3制御装置は「サブFB学習値KSFBgが収束したとの判定(statusが「2」であるとの判定)」を早期に行うことができる。
(実際の作動)
次に、第3制御装置の実際の作動について説明する。第3制御装置のCPUは、図7乃至図14、図15に代わる図20、及び、図16に示したルーチンを実行する。図20以外の図に示したルーチンについては説明済みである。よって、以下、図20に示したルーチンについて説明する。
第3制御装置のCPUは、比例ゲインKpを決定するために、図20にフローチャートにより示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。従って、所定のタイミングになると、CPUは図20のステップ2000から処理を開始し、ステップ2010にてステータス(status)を読み込む。
次に、CPUはステップ2020に進み、statusが「2」であるか否かを判定する。即ち、CPUは、ステップ2020にてサブFB学習値KSFBgの学習が完了しているか否か(サブFB学習値KSFBgが収束値ki・SDVoxsfinalに十分近づいているか否か)を判定する。
このとき、statusが「2」であると、CPUはステップ2020にて「Yes」と判定してステップ2030に進み、比例ゲインKpを第1制御装置が使用する第1比例ゲイン(最小比例ゲイン)Kpsmallに設定する。その後、CPUはステップ2095に進み、本ルーチンを一旦終了する。
一方、CPUがステップ2020の処理を行う時点において、statusが「2」でなければ、CPUはステップ2020にて「No」と判定してステップ2040に進み、補正係数(触媒劣化度補正係数)khを決定する。補正係数khは、最大酸素吸蔵量Cmaxが小さいほど「1」よりも小さい範囲において小さくなるように決定される。但し、補正係数khは正の値である。
次に、CPUはステップ2050に進み、statusが「0」であるか否かを判定する。即ち、CPUは、ステップ2050にてサブFB学習値KSFBgの学習が殆ど進んでいない状態であるか否か(サブFB学習値KSFBgが収束値ki・SDVoxsfinalから大きく乖離しているか否か)を判定する。
このとき、statusが「0」であると、CPUはステップ2050にて「Yes」と判定してステップ2060に進み、比例ゲインKpを第3比例ゲイン(最大比例ゲイン)に設定する。第3比例ゲインは、補正係数khと第1制御装置が使用する最大比例ゲインKplargeとの積を吸入空気量Gaで除した値(=kh・Kplarge/Ga)である。その後、CPUはステップ2095に進み、本ルーチンを一旦終了する。
この結果、statusが「0」である場合、比例ゲインKpは吸入空気量Gaが大きいほど小さくなり、且つ、最大酸素吸蔵量Cmaxが小さいほど小さくなる値kh・Kplarge/Gaに設定される。但し、値kh・Kplarge/Gaは、第1比例ゲイン(最小比例ゲイン)Kpsmall以上の値である。
更に、CPUがステップ2050の処理を行う時点において、statusが「0」でなければ、CPUはステップ2050にて「No」と判定してステップ2070に進み、比例ゲインKpを第2比例ゲイン(中程度比例ゲイン)に設定する。第2比例ゲインは、補正係数khと第1制御装置が使用する中程度比例ゲインKpmidとの積を吸入空気量Gaで除した値(=kh・Kpmid/Ga)である。その後、CPUはステップ2095に進み、本ルーチンを一旦終了する。
この結果、statusが「1」である場合、比例ゲインKpは吸入空気量Gaが大きいほど小さくなり、且つ、最大酸素吸蔵量Cmaxが小さいほど小さくなる値kh・Kpmid/Gaに設定される。但し、値kh・Kpmid/Gaは、第1比例ゲイン(最小比例ゲイン)Kpsmall以上の値である。
以上をまとめると、CPUは、以下のように比例ゲインKpを設定する。
(1)statusが「0」であるとき:比例ゲインKp=kh・Kplarge/Ga
(2)statusが「1」であるとき:比例ゲインKp=kh・Kpmid/Ga
(3)statusが「2」であるとき:比例ゲインKp=Kpsmall
以上、説明したように、第3制御装置は、第1制御装置と同様の補正量算出手段を備える。但し、第3制御装置の補正量算出手段は、学習値(サブFB学習値KSFBg)が収束したと判定される前(例えば、statusが「1」である場合)において、比例ゲインKpを、吸入空気量Gaが大きいほど小さくし、触媒43の劣化の程度が進行している(大きい)ほど小さくするように構成されている(図20のステップ2040、及び、図20のその他のステップを参照。)。
この結果、第3制御装置は、触媒43の劣化の程度に関わらず、且つ、吸入空気量Gaの大きさに関わらず、「下流側空燃比センサ57の出力値Voxsの反転周期」を略一定に維持することが可能となる。よって、触媒43の劣化の程度に依らず、学習値(サブFB学習値KSFBg)が実質的に収束している場合においてその学習値の変化量を略一定に維持することができる。従って、第3制御装置は、「サブFB学習値KSFBgが収束したとの判定」を早期に行うことができる。
なお、第3制御装置のCPUは、ステップ2030にて、比例ゲインKpを「値kh・Kpsmall、又は、値kh・Kpsmall/Ga」に設定してもよい。
以上、説明したように、本発明の各実施形態に係る燃料噴射量制御装置は、サブフィードバック量KSFBの比例ゲインKpを、サブFB学習値KSFBgが収束したと判定された後はサブFB学習値KSFBgが収束したと判定される前に比べて小さい値に設定する。その結果、サブFB学習値KSFBgが収束したとの判定を迅速に行うことができ、且つ、サブFB学習値KSFBgが収束したとの判定後においてエミッションを良好にすることができる。
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、サブフィードバック制御は、サブフィードバック量により上流側空燃比センサ56の出力値Vabyfsを補正する周知の態様であってもよい。加えて、上記実施形態における時間積分値SDVoxslowは、出力偏差量DVoxsをローパスフィルタ処理した値DVoxslowに所定の調整ゲインKを乗じた値を積算することにより求められていたが、ローパスフィルタ処理を行わない出力偏差量DVoxsに所定の調整ゲインKを乗じた値を積算することにより求められてもよい。
更に、サブFB学習値KSFBgは、時間積分値SDVoxslowそのものを取り込んだ値であってもよく、サブフィードバック量KSFBにローパスフィルタ処理を施した値であってもよい。即ち、サブFB学習値KSFBgは、サブフィードバック量KSFBの定常成分に応じた値(サブフィードバック量KSFBの積分項に相関する値)であればよい。
加えて、上記各実施形態に係る燃料噴射量制御装置は、所定時間が経過する期間におけるサブFB学習値KSFBg(学習値)の変化量を求め、その変化量が所定の判定用閾値幅よりも小さい場合にサブFB学習値KSFBgが収束したと判定し(例えば、statusが「2」であると判定し)、その変化量が所定の判定用閾値幅以上である場合にサブFB学習値KSFBgが収束していないと判定する(例えば、statusが「1」又は「0」であると判定する)ように構成されていてもよい。
更に、サブフィードバック量KSFBは、サブFB学習値KSFBgを含まないように算出されてもよい。即ち、KSFB=Kp・DVoxslow+Ki・SDVoxslow+Kd・DDVoxslowであってもよい。
加えて、第2及び第3制御装置において、サブFB学習値KSFBgが収束したと判定される前に設定される比例ゲインKpは、吸入空気量Gaに反比例した値でなくてもよく、吸入空気量Gaが大きくなるほど小さくなる値であればよい。
10…内燃機関、21…燃焼室、30…吸気系統、33…燃料噴射弁、40…排気系統、41…エキゾーストマニホールド、41b…集合部(排気集合部HK)、42…エキゾーストパイプ、43…上流側触媒(触媒)、56…上流側空燃比センサ、57…下流側空燃比センサ、70…電気制御装置。

Claims (3)

  1. 内燃機関に対して燃料を噴射する燃料噴射弁と、
    前記機関の排気通路に配設された触媒よりも下流の位置に配設されるとともに同触媒から流出するガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
    所定の下流側フィードバック条件が成立している期間において、前記下流側空燃比センサの出力値と所定の下流側目標値との偏差である出力偏差量に所定の比例ゲインを乗じることにより比例項を算出し、前記出力偏差量に所定の調整ゲインを乗じた値を積算することにより時間積分値を算出するとともに同算出された時間積分値に比例した値を積分項として算出し、前記下流側空燃比センサの出力値を前記下流側目標値に一致させるための補正量であって前記燃料噴射弁から噴射される燃料の量をフィードバック補正する空燃比フィードバック量を少なくとも前記比例項及び前記積分項に基いて算出する補正量算出手段と、
    前記算出された積分項に相関する値を学習値として取得する学習手段と、
    前記下流側フィードバック条件が成立している場合には少なくも前記空燃比フィードバック量に基いて最終燃料噴射量を算出するとともに、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値に基いて最終燃料噴射量を算出し、前記算出された最終燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
    を備えた内燃機関の燃料噴射量制御装置において、
    前記学習手段は、
    前記学習値が、所定の上限値と所定の下限値との間に所定時間に渡って存在している場合、又は、前記所定時間が経過する期間における前記学習値の変化量が判定用閾値幅よりも小さい場合、前記学習値が収束したと判定するように構成され、
    前記補正量算出手段は、
    前記比例ゲインを、前記学習値が収束したと判定された後は前記学習値が収束したと判定される前に比べて小さい値に設定するとともに、
    前記調整ゲインを、前記学習値が収束したと判定された後は前記学習値が収束したと判定される前に比べて小さい値に設定するように構成され、
    前記学習値が収束したと判定される前において、前記比例ゲインを、前記機関の吸入空気量が小さいほど大きくするように構成された燃料噴射量制御装置。
  2. 請求項1に記載の燃料噴射量制御装置において、
    前記補正量算出手段は、
    前記学習値が収束したと判定された後において、前記比例ゲインを、前記機関の吸入空気量に依存しない値に設定するように構成された燃料噴射量制御装置。
  3. 請求項1又は請求項2に記載の燃料噴射量制御装置において、
    前記補正量算出手段は、
    前記触媒の劣化の程度を示す触媒劣化指標値を取得するとともに、前記触媒の劣化の程度が進行しているほど前記比例ゲインが小さくなるように、前記比例ゲインを前記触媒劣化指標値に基いて決定するように構成された燃料噴射量制御装置。
JP2010203064A 2010-09-10 2010-09-10 内燃機関の燃料噴射量制御装置 Expired - Fee Related JP5644291B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010203064A JP5644291B2 (ja) 2010-09-10 2010-09-10 内燃機関の燃料噴射量制御装置
US13/210,997 US9037383B2 (en) 2010-09-10 2011-08-16 Fuel injection amount control apparatus for internal combustion engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010203064A JP5644291B2 (ja) 2010-09-10 2010-09-10 内燃機関の燃料噴射量制御装置

Publications (2)

Publication Number Publication Date
JP2012057572A JP2012057572A (ja) 2012-03-22
JP5644291B2 true JP5644291B2 (ja) 2014-12-24

Family

ID=45807516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010203064A Expired - Fee Related JP5644291B2 (ja) 2010-09-10 2010-09-10 内燃機関の燃料噴射量制御装置

Country Status (2)

Country Link
US (1) US9037383B2 (ja)
JP (1) JP5644291B2 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2826536A1 (de) * 2013-07-17 2015-01-21 Siemens VAI Metals Technologies GmbH Detektion eines Reinigungsvorganges einer Anlage mit mindestens einem Filter
JP6213085B2 (ja) * 2013-09-17 2017-10-18 株式会社デンソー 内燃機関の気筒別空燃比制御装置
US9771888B2 (en) * 2013-10-18 2017-09-26 GM Global Technology Operations LLC System and method for controlling an engine based on an oxygen storage capability of a catalytic converter
JP6344080B2 (ja) 2014-06-19 2018-06-20 トヨタ自動車株式会社 内燃機関の制御装置
JP6341235B2 (ja) * 2016-07-20 2018-06-13 トヨタ自動車株式会社 エンジンの空燃比制御装置
US10018144B2 (en) * 2016-08-19 2018-07-10 Ford Global Technologies, Llc Methods and system for engine control
US10018143B2 (en) * 2016-08-19 2018-07-10 Ford Global Technologies, Llc Methods and system for engine control
CN113847155B (zh) * 2021-10-15 2023-12-29 东风汽车集团股份有限公司 一种发动机短期燃油修正控制方法及控制系统

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2812023B2 (ja) 1991-11-12 1998-10-15 トヨタ自動車株式会社 触媒劣化度検出装置
JP3674292B2 (ja) 1997-06-19 2005-07-20 株式会社デンソー 空燃比検出装置
JP3592519B2 (ja) * 1997-09-16 2004-11-24 本田技研工業株式会社 内燃機関の排気系の空燃比制御装置及びプラントの制御装置
JP3855483B2 (ja) 1998-08-25 2006-12-13 株式会社デンソー 積層型空燃比センサ素子
DE19913901C2 (de) * 1999-03-26 2001-10-18 Siemens Ag Verfahren zum Überprüfen der Funktionsfähigkeit eines Katalysators
JP3570297B2 (ja) * 1999-06-10 2004-09-29 株式会社日立製作所 エンジン排気浄化装置
US6453229B1 (en) * 1999-10-19 2002-09-17 Unisia Jecs Corporation Air-fuel ratio control device for internal combustion engine and method thereof
JP3625403B2 (ja) * 1999-10-26 2005-03-02 三菱電機株式会社 内燃機関の触媒劣化検出装置
JP4354068B2 (ja) * 2000-02-02 2009-10-28 本田技研工業株式会社 内燃機関の排ガスの空燃比制御装置
JP3680217B2 (ja) * 2000-06-26 2005-08-10 トヨタ自動車株式会社 内燃機関の空燃比制御装置
JP2002250248A (ja) * 2001-12-25 2002-09-06 Hitachi Ltd 車両の診断制御方法
JP2004069547A (ja) 2002-08-07 2004-03-04 Toyota Motor Corp 空燃比センサの制御装置
JP2004204772A (ja) * 2002-12-25 2004-07-22 Hitachi Unisia Automotive Ltd 空燃比センサの診断装置
JP2009030455A (ja) 2007-07-24 2009-02-12 Toyota Motor Corp 多気筒内燃機関の気筒間空燃比ばらつき異常を検出するための装置及び方法
JP4673787B2 (ja) * 2006-05-10 2011-04-20 本田技研工業株式会社 内燃機関の空燃比制御装置
JP4661691B2 (ja) * 2006-05-31 2011-03-30 トヨタ自動車株式会社 内燃機関の空燃比制御装置
US8744729B2 (en) * 2007-07-24 2014-06-03 Toyota Jidosha Kabushiki Kaisha Apparatus and method for detecting abnormal air-fuel ratio variation among cylinders of multi-cylinder internal combustion engine
JP4957559B2 (ja) 2008-01-08 2012-06-20 トヨタ自動車株式会社 内燃機関の空燃比制御装置
CN102301117B (zh) * 2009-01-28 2014-03-12 丰田自动车株式会社 多气缸内燃机的监视装置
JP2010190089A (ja) * 2009-02-17 2010-09-02 Toyota Motor Corp 多気筒内燃機関の異常診断装置
JP5206877B2 (ja) * 2009-08-06 2013-06-12 トヨタ自動車株式会社 内燃機関の空燃比気筒間インバランス判定装置
JP5402903B2 (ja) * 2010-02-04 2014-01-29 トヨタ自動車株式会社 多気筒内燃機関の気筒間空燃比ばらつき異常検出装置

Also Published As

Publication number Publication date
JP2012057572A (ja) 2012-03-22
US20120065870A1 (en) 2012-03-15
US9037383B2 (en) 2015-05-19

Similar Documents

Publication Publication Date Title
JP5644291B2 (ja) 内燃機関の燃料噴射量制御装置
JP4957559B2 (ja) 内燃機関の空燃比制御装置
JP3846480B2 (ja) 内燃機関の排気浄化装置
JP4039380B2 (ja) 内燃機関の空燃比制御装置
EP2063090B1 (en) Control apparatus for internal combustion engine
JP4978749B2 (ja) 内燃機関の燃料噴射量制御装置
JP2012031777A (ja) 多気筒内燃機関の燃料噴射量制御装置
JP4280931B2 (ja) 内燃機関の空燃比制御装置
US9790873B2 (en) Air-fuel ratio control apparatus for an internal combustion engine
JP4936018B2 (ja) 内燃機関の空燃比制御装置
JP5287959B2 (ja) 内燃機関の制御装置
JP4807359B2 (ja) 内燃機関の空燃比制御装置
JP4893634B2 (ja) 内燃機関の空燃比制御装置
JP2006105054A (ja) 内燃機関の空燃比制御装置
JP3826997B2 (ja) 内燃機関の空燃比制御装置
JP5770585B2 (ja) 内燃機関の空燃比制御装置
JP2006112274A (ja) 内燃機関の空燃比制御装置
JP2012087670A (ja) 内燃機関の空燃比制御装置
JP4888397B2 (ja) 内燃機関の空燃比制御装置
JP4299218B2 (ja) 内燃機関の空燃比制御装置
JP4023174B2 (ja) 触媒劣化判定装置
JP2008106712A (ja) 内燃機関の空燃比制御装置
JP4770589B2 (ja) 内燃機関の空燃比制御装置
JPWO2005085616A1 (ja) 多気筒内燃機関の吸気制御装置
JP2009197683A (ja) 内燃機関の空燃比制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140225

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141007

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141020

R151 Written notification of patent or utility model registration

Ref document number: 5644291

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees