JP4978749B2 - 内燃機関の燃料噴射量制御装置 - Google Patents
内燃機関の燃料噴射量制御装置 Download PDFInfo
- Publication number
- JP4978749B2 JP4978749B2 JP2011502970A JP2011502970A JP4978749B2 JP 4978749 B2 JP4978749 B2 JP 4978749B2 JP 2011502970 A JP2011502970 A JP 2011502970A JP 2011502970 A JP2011502970 A JP 2011502970A JP 4978749 B2 JP4978749 B2 JP 4978749B2
- Authority
- JP
- Japan
- Prior art keywords
- value
- learning
- fuel injection
- fuel ratio
- air
- 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
Links
Images
Classifications
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/30—Controlling fuel injection
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/02—Circuit arrangements for generating control signals
- F02D41/14—Introducing closed-loop corrections
- F02D41/1438—Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor
- F02D41/1473—Introducing closed-loop corrections using means for determining characteristics of the combustion gases; Sensors therefor characterised by the regulation method
- F02D41/1475—Regulating the air fuel ratio at a value other than stoichiometry
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/22—Safety or indicating devices for abnormal conditions
- F02D41/222—Safety or indicating devices for abnormal conditions relating to the failure of sensors or parameter detection devices
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/24—Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means
- F02D41/2406—Electrical control of supply of combustible mixture or its constituents characterised by the use of digital means using essentially read only memories
- F02D41/2425—Particular ways of programming the data
- F02D41/2429—Methods of calibrating or learning
- F02D41/2438—Active learning methods
-
- F—MECHANICAL ENGINEERING; LIGHTING; HEATING; WEAPONS; BLASTING
- F02—COMBUSTION ENGINES; HOT-GAS OR COMBUSTION-PRODUCT ENGINE PLANTS
- F02D—CONTROLLING COMBUSTION ENGINES
- F02D41/00—Electrical control of supply of combustible mixture or its constituents
- F02D41/02—Circuit arrangements for generating control signals
- F02D41/18—Circuit arrangements for generating control signals by measuring intake air flow
- F02D41/187—Circuit arrangements for generating control signals by measuring intake air flow using a hot wire flow sensor
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02T—CLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
- Y02T10/00—Road transport of goods or passengers
- Y02T10/10—Internal combustion engine [ICE] based vehicles
- Y02T10/40—Engine management systems
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)
Description
本発明は、内燃機関の排気通路に配設された触媒の下流に配設される空燃比センサ(下流側空燃比センサ)の出力値に基づいて燃料噴射量を制御する内燃機関の燃料噴射量制御装置に関する。
従来の内燃機関の燃料噴射量制御装置の一つ(以下、「従来装置」と称呼する。)は、図1に示したように、機関の排気通路に配設された触媒(三元触媒)43と、上流側空燃比センサ56と、下流側空燃比センサ57と、を備える。上流側空燃比センサ56及び下流側空燃比センサ57は、触媒43よりも上流及び下流にそれぞれ配設されている。上流側空燃比センサ56の出力値Vabyfsは、被検出ガスの空燃比(上流側空燃比abyfs)に対して図2に示したように変化する。下流側空燃比センサ57の出力値Voxsは、被検出ガスの空燃比(下流側空燃比afdown)に対して図3に示したように変化する。
従来装置は、上流側空燃比センサの出力値により表される空燃比(上流側空燃比abyfs)を「理論空燃比に設定された目標空燃比」に一致させるための「燃料噴射量の補正量」を算出する。この補正量はメインフィードバック量とも称呼される。更に、従来装置は、「下流側空燃比センサの出力値と理論空燃比に相当する値に設定された下流側目標値との差」に基く値を積分処理する。従来装置は、その積分処理された値(以下、「時間積分値」とも称呼する。)に基づいて「燃料噴射量の補正量」の積分項を算出し、その積分項にを含む「燃料噴射量の補正量」を算出する。この補正量はサブフィードバック量とも称呼される。そして、従来装置は、これらの補正量(メインフィードバック量及びサブフィードバック量)を用いて燃料噴射量を補正することにより、機関に供給される混合気の空燃比を理論空燃比に制御している。なお、機関に供給される混合気の空燃比は、機関の空燃比とも称呼され、触媒43に流入する排ガスの空燃比と実質的に等しい。
エアフローメータの吸入空気量検出誤差、燃料噴射弁の噴射特性の個体差又は経時変化、及び、上流側空燃比センサの空燃比検出誤差等(以下、「吸排気系の誤差」と総称する。)は、機関の空燃比の目標空燃比に対する定常的な誤差を発生させる。従って、吸排気系の誤差は、上記時間積分値に現れる。即ち、上記時間積分値は吸排気系の誤差の大きさを表す値と等しい値に収束する。従って、従来装置は、吸排気系の誤差が発生している場合においても、機関の空燃比を理論空燃比に略一致させることができる。
ところが、時間積分値が収束するまでには所定の時間を要する。更に、例えば、下流側空燃比センサが活性化していない場合等の「サブフィードバック条件が不成立である期間」において、上記積分処理は実行されない。そこで、従来装置は、上記時間積分値(又は上記時間積分値に相関する値)を学習値(サブフィードバック量の学習値、サブFB学習値)として「機関の運転停止中においてもデータを保持することができるバックアップRAM等」に記憶・格納する。更に、従来装置は、サブフィードバック条件が不成立である期間、その学習値を用いて燃料噴射量を制御するとともに、サブフィードバック条件が成立するとその学習値に応じた値を時間積分値の初期値として使用する。
ところで、前記学習値(又は時間積分値)は、収束すべき値(即ち、上記吸排気系の誤差の大きさを表す値であり、以下、「収束値」とも称呼する。)から大きく乖離する場合がある。例えば、バッテリ交換等によりバックアップRAMに記憶されていた学習値がクリアされると、学習値は収束値から大きく偏移する場合がある。或いは、機関の失火率が変化した場合、及び、特定気筒の燃料噴射弁の燃料噴射特性が他の気筒の燃料噴射弁の燃料噴射特性から大きく変化した場合、等においても、学習値は収束値から大きく乖離する。
そこで、従来装置は、学習値(又は時間積分値)を収束値に迅速に収束させるため、学習値の収束の程度に応じて「時間積分値の変化速度」を変更している。より具体的に述べると、従来装置は、学習値の所定期間における変動量が所定の幅を超えると、学習値は収束していないと判定して時間積分値の一回あたりの更新量を大きくし、学習値の所定期間における変動量が所定の幅を超えないとき学習値は収束したと判定して時間積分値の一回あたりの更新量を小さくする。これにより、学習値が収束していない場合において学習値を迅速に収束値に接近させることができ、且つ、学習値が収束した場合において学習値が外乱により過度に変動することを回避することができる(例えば、特許文献1を参照。)。
ところで、三元触媒43の浄化効率を最適にすること及び/又は特定の成分(例えば、NOx)の排出量を低減すること等を目的として、下流側目標値は、「理論空燃比に相当する値Vst以外の一定値」に設定されたり、「三元触媒43の状態及び機関の運転状態(例えば、吸入空気量)等」に基いて変更されたりする。
この結果、図4に示したように、下流側目標値Voxsrefが理論空燃比に相当する値Vstよりも高い値に設定されると、「出力値Voxsが下流側目標値Voxsrefよりも大きい場合(リッチ判定時)における時間積分値SDVoxs(学習値)の変化速度(減少速度)の大きさdV1」は「出力値Voxsが下流側目標値Voxsrefよりも小さい場合(リーン判定時)における時間積分値SDVoxs(学習値)の変化速度(増大速度)の大きさdV2」よりも小さくなる。これは、次の理由に依るものと考えられる。
(1)時間積分値SDVoxsが、一定時間の経過毎に「出力値Voxsと下流側目標値Voxsrefとの差(出力偏差量DVoxs)」に比例する値(K・DVoxs)を積算することにより求められること。
(2)リッチ判定時の出力偏差量DVoxsの大きさDRがリーン判定時の出力偏差量DVoxsの大きさDLよりも小さくなるので、リッチ判定時の時間積分値SDVoxsの一回の更新量の大きさがリーン判定時の時間積分値SDVoxsの一回の更新量の大きさよりも小さくなること。
なお、大きさDRが大きさDLよりも小さいので、リッチ判定時間TRはリーン判定時間TLよりも一般に長くなる。
(2)リッチ判定時の出力偏差量DVoxsの大きさDRがリーン判定時の出力偏差量DVoxsの大きさDLよりも小さくなるので、リッチ判定時の時間積分値SDVoxsの一回の更新量の大きさがリーン判定時の時間積分値SDVoxsの一回の更新量の大きさよりも小さくなること。
なお、大きさDRが大きさDLよりも小さいので、リッチ判定時間TRはリーン判定時間TLよりも一般に長くなる。
一方、学習値(又は時間積分値)が収束しているか否かの判定に要する時間は、従来装置のように「学習値の所定期間における変動量が所定の幅を超えたか否か」により判定するよりも、「学習値の過去の値(直近の値)に基いて学習値の変動中心(「判定基準値Vkijun」とも称呼する。)を求め、その判定基準値Vkijunと所定期間における学習値との差が所定の閾値ΔV(特定値ΔV)以上であるか否か」により判定する方が、短くなる。この理由について、図5を参照しながら説明する。
図5の(A)に示したように、学習値(又は時間積分値)が正弦波状に変化する場合、「学習値の所定期間における変動量が所定の幅を超えたか否か」を判定することにより、学習値が収束しているか否かを判定するためには、その所定時間は最低でも「一周期T」以上でなければならない。これは、学習値の最大値(極大値)と最小値(極小値)とを取得するためには、一周期Tを要するからである。
これに対し、「上記判定基準値Vkijunと最新の学習値との差が所定の閾値ΔV以上であるか否か」を判定することにより学習値が収束しているか否かを判定する場合、その判定に要する時間は半周期T/2程度となる。これは、半周期T/2の時間が経過する間に、学習値の最大値(極大値)及び最小値(極小値)のうちの何れか一方が現れるからである。
従って、学習値が収束しているか否かの判定は、「判定基準値Vkijunと所定期間における学習値との差が所定の閾値ΔV以上となったか否か」を判定することにより行う方が、判定時間を短くする上で有利である。
しかしながら、前述したように、例えば、下流側目標値Voxsrefが理論空燃比に相当する値Vstよりも高い値に設定された場合、「リーン判定時における学習値の増大速度の大きさdV2」は「リッチ判定時における学習値の減少速度の大きさdV1」よりも大きい。このため、学習値が収束している場合であっても、学習値を増大させる外乱が発生したとき、判定基準値Vkijunと最新の学習値との差が所定の閾値ΔV以上となる可能性が高い(図5(B)の時刻t1を参照。)。これに対処するために、閾値ΔVを大きい値に設定すると、実際には学習値が収束していないために(或いは、学習値が収束値から乖離したために)学習値が大きく減少した場合であっても、学習値は収束しているという誤った判定がなされてしまう。
従って、本発明の目的は、学習値が収束しているか否かを迅速且つ精度良く判定することができ、その結果、学習値の変化速度を適切な値に設定することを可能ならしめることにより、学習値を「迅速に収束させ且つ安定して収束値近傍に維持する」ことができる「内燃機関の燃料噴射量制御装置」を提供することにある。
本発明による一つの態様に係る内燃機関の燃料噴射量制御装置は、前記機関に対して燃料を噴射する燃料噴射弁と、前記機関の排気通路に配設された触媒よりも下流の位置に配設されるとともに同触媒から流出するガスの空燃比に応じた出力値を出力する下流側空燃比センサと、補正量算出手段と、学習手段と、燃料噴射制御手段と、を備える。
前記補正量算出手段は、所定の下流側フィードバック条件が成立している期間において、前記下流側空燃比センサの出力値と所定の下流側目標値との偏差に所定の調整ゲインを乗じた値を積算することにより時間積分値を算出する。更に、前記補正量算出手段は、「前記下流側空燃比センサの出力値を前記下流側目標値に一致させるための補正量であって前記燃料噴射弁から噴射される燃料の量をフィードバック補正するための補正量」に含まれる「積分項」を「前記算出された時間積分値」に基いて算出し、その積分項に基いて前記補正量を算出する。
前記学習手段は、前記算出された積分項に相関する値を学習値として取得する。即ち、前記学習手段は、前記時間積分値を学習値として取得してもよく、前記積分項を学習値として取得してもよい。
前記燃料噴射制御手段は、前記下流側フィードバック条件が成立している場合には少なくも前記補正量に基いて最終燃料噴射量を算出するとともに、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値に基いて最終燃料噴射量を算出し、前記算出された最終燃料噴射量の燃料を前記燃料噴射弁から噴射させる。
更に、前記学習手段は、前記学習値が、「前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値」に正の特定値(閾値ΔV)を加えた値である上限値と、前記判定基準値から前記特定値を減じた値である下限値、との間に、所定時間に渡って存在している場合、前記学習値が収束したと判定するように構成されている。
前記学習手段は、「前記学習値が、前記判定基準値と前記学習値の最新値との差の大きさが所定の判定期間に渡り所定の閾値(前記特定値)よりも小さい場合、前記学習値が収束したと判定するように構成されている。」と言うこともできる。換言すると、前記学習手段は、前記判定基準値と前記学習値の最新値との差の大きさが前記閾値よりも大きくなった場合、前記学習値は収束していない判定する。
前記補正量算出手段は、前記学習値の増大速度の大きさと前記学習値の減少速度の大きさとの差の絶対値が小さくなるように、「前記学習値が増大する場合(前記時間積分値が増大する場合)における前記調整ゲイン」と「前記学習値が減少する場合(前記時間積分値が減少する場合)における前記調整ゲイン」とを互いに相違する値に設定するように構成されている。
これによれば、「リーン判定時における学習値の変化速度の大きさ」と「リッチ判定時における学習値の変化速度の大きさ」とを近づけることができる。従って、学習値が収束している場合、学習値は「前記上限値と前記下限値との間」に存在するようになる。その結果、学習値が収束していることを精度良く判定することができる。
しかも、上記構成によれば、所定期間における学習値の判定基準値からの偏差の大きさが特定値を超えたか否かを判定することになるので、所定期間における学習値の偏差の大きさが閾値を超えたか否かを判定する場合に比べ、学習値が収束しているか否かを短い時間にて判定することができる。
更に、前記特定値を過度に大きい値に設定する必要がないので、学習値が収束していない場合に学習値が収束していると誤って判定することを回避することができる。
この場合、前記学習手段は、前記学習値が収束したと判定されていない場合の前記調整ゲインを、前記学習値が収束したと判定された場合の前記調整ゲインよりも大きい値に設定するように構成されることが好適である。
これによれば、学習値が収束していない場合、調整ゲインが大きい値に設定されるので、学習値を収束値へとより迅速に近づけることができる。なお、学習値が収束していない場合においても、前記学習値が増大する場合における前記調整ゲインと前記学習値が減少する場合における前記調整ゲインとは互いに相違する値に設定されることが望ましい。
本発明の他の態様に係る内燃機関の燃料噴射量制御装置は、上記燃料噴射弁と、上記下流側空燃比センサと、上記補正量算出手段と同様の補正量算出手段と、上記学習手段と同様な学習手段と、上記燃料噴射制御手段と、を備える。
但し、この態様の装置における補正量算出手段は、前記時間積分値を算出する際の前記調整ゲインを前記学習値が増大する場合と前記学習値が減少する場合とにおいて同じ値に維持する。
更に、この態様の装置における学習手段は、
前記学習値が、「前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値」に正の第1特定値を加えた値である上限値と前記判定基準値から正の第2特定値を減じた値である下限値との間に所定時間に渡って存在している場合、前記学習値が収束したと判定するように構成される。
前記学習値が、「前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値」に正の第1特定値を加えた値である上限値と前記判定基準値から正の第2特定値を減じた値である下限値との間に所定時間に渡って存在している場合、前記学習値が収束したと判定するように構成される。
加えて、この学習手段は、
前記学習値の増大速度の大きさが前記学習値の減少速度の大きさよりも大きい場合には前記第1特定値を前記第2特定値よりも大きい値に設定し、且つ、前記学習値の減少速度の大きさが前記学習値の増大速度の大きさよりも大きい場合には前記第2特定値を前記第1特定値よりも大きい値に設定する。
前記学習値の増大速度の大きさが前記学習値の減少速度の大きさよりも大きい場合には前記第1特定値を前記第2特定値よりも大きい値に設定し、且つ、前記学習値の減少速度の大きさが前記学習値の増大速度の大きさよりも大きい場合には前記第2特定値を前記第1特定値よりも大きい値に設定する。
これによれば、上限値及び下限値のうち「学習値の変化速度の大きさが大きい側の閾値」は「学習値の変化速度の大きさが小さい側の閾値」よりも判定基準値から大きく乖離する値となる。従って、学習値が収束していれば、学習値の増大速度の大きさと減少速度の大きさが異なる場合であっても、学習値は「前記上限値と前記下限値との間」に存在するようになる。その結果、学習値が収束していることを精度良く判定することができる。
しかも、上記構成によれば、所定期間における学習値の判定基準値からの偏差の大きさが「前記第1特定値又は前記第2特定値」を超えたか否かを判定することになるので、所定期間における学習値の偏差の大きさが閾値を超えたか否かを判定する場合に比べ、学習値が収束しているか否かを短い時間にて判定することができる。
更に、前記第1特定値及び前記第2特定値を過度に大きい値に設定する必要がないので、学習値が収束していない場合に学習値が収束していると誤って判定することを回避することができる。加えて、調整ゲインは、学習値が増大する場合及び減少する場合において同じ値に維持される。従って、調整ゲインが過大であるために学習値がオーバーシュートする事態、或いは、調整ゲインが過小であるために学習値の収束が遅れる事態、等が発生することを回避することができる。その結果、エミッションを良好に維持することができる。
この場合においても、前記学習手段は、前記学習値が収束したと判定されていない場合の前記調整ゲインを、前記学習値が収束したと判定された場合の前記調整ゲインよりも大きい値に設定するように構成されることが好適である。
これによれば、学習値が収束していない場合、調整ゲインが大きい値に設定されるので、学習値を収束値へとより迅速に近づけることができる。なお、この態様においては、学習値が収束していない場合においても、前記学習値が増大する場合における前記調整ゲインと前記学習値が減少する場合における前記調整ゲインとは互いに等しい値に維持される。
以下、本発明の各実施形態に係る内燃機関の燃料噴射量制御装置(以下、単に「制御装置」とも称呼する。)について図面を参照しながら説明する。この制御装置は、内燃機関の空燃比制御装置でもある。
<第1実施形態>
(構成)
図1は、第1実施形態に係る制御装置(以下、「第1制御装置」とも称呼する。)を、4サイクル・火花点火式・多気筒(直列4気筒)・内燃機関10に適用したシステムの概略構成を示している。
(構成)
図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,H2などの未燃成分を酸化するとともに窒素酸化物(NOx)を還元する機能を有する。この機能は触媒機能とも称呼される。更に、各触媒は、酸素を吸蔵(貯蔵)する酸素吸蔵機能を有する。各触媒は、酸素吸蔵機能により空燃比が理論空燃比から偏移したとしても未燃成分及び窒素酸化物を浄化することができる。つまり、酸素吸蔵機能により、ウインドウの幅が拡大する。酸素吸蔵機能は、触媒に担持されているセリア(CeO2)等の酸素吸蔵材によってもたらされる。
このシステムは、熱線式エアフローメータ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)となる。出力値Vabyfsは、被検出ガスの空燃比が理論空燃比よりもリーンのとき最小出力値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に一致するようにサブフィードバック制御を行う。メインフィードバック制御とサブフィードバック制御とにより燃料噴射量がフィードバック補正される。
第1制御装置は、上流側空燃比センサ56の出力値Vabyfsにより表される上流側空燃比abyfsが所定の目標空燃比abyfrに一致するようにメインフィードバック制御を行う。更に、第1制御装置は、下流側空燃比センサ57の出力値Voxsが所定の下流側目標値Voxsrefに一致するようにサブフィードバック制御を行う。メインフィードバック制御とサブフィードバック制御とにより燃料噴射量がフィードバック補正される。
サブフィードバック制御においては、サブフィードバック量KSFBが算出される。このサブフィードバック量KSFBは目標空燃比abyfrを変更するように作用する。但し、サブフィードバック量KSFBは、上流側空燃比センサ56の出力値Vabyfsを補正するように作用してもよい。
第1制御装置は、サブフィードバック量KSFBを「出力値Voxsと下流側目標値Voxsrefとの差(出力偏差量DVoxs)」に基くPID制御により算出する。即ち、サブフィードバック量KSFBは、比例項、積分項及び微分項を含む。
第1制御装置は、サブフィードバック量KSFBの積分項を算出するために、出力偏差量DVoxsに相関する値(実際には、出力偏差量DVoxsをローパスフィルタ処理した値DVoxslow)に所定の調整ゲインKを乗じた値を積算(積分)することによって時間積分値SDVoxslowを求める。なお、値DVoxslowは、実質的に、出力値Voxsと下流側目標値Voxsrefとの偏差(出力偏差量)と称呼することができる。更に、第1制御装置は、その時間積分値SDVoxslowに積分定数を乗じることにより、サブフィードバック量KSFBの積分項を求める。
第1制御装置は、サブフィードバック量KSFBの積分項に応じた値をサブフィードバック量の学習値(サブFB学習値KSFBg)として取得する。サブFB学習値KSFBgは、バックアップRAMに格納され、少なくとも「サブフィードバック量を更新するためのサブフィードバック制御条件が成立しない場合」、燃料噴射量の補正に使用される。
一方、第1制御装置は、図5に示したように、ある時点までのサブFB学習値KSFBgの変動中心(サブFB学習値KSFBgの加重平均値)を示す判定基準値Vkijunを求める。そして、第1制御装置は、判定基準値Vkijunに正の特定値ΔVを加えた値を上限値Vgmaxthとして求めるとともに、判定基準値Vkijunから特定値ΔVを減じた値を下限値Vgminthとして求める。特定値ΔVは、サブFB学習値KSFBgが収束している可能性(サブFB学習値KSFBgの収束度)が高いと判定されるほど(即ち、後述するステータス(status)の値が大きいほど)、小さい値に設定される。
第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が「その収束値SDVoxsfinalから乖離し」且つ「サブFB学習値KSFBgの変化速度が大きい」という「不安定状態」にあることを意味する。
・status2(statusが「2」):サブFB学習値KSFBgの収束状態が良好である。即ち、status2の状態は、サブFB学習値KSFBgが「その収束値SDVoxsfinalの近傍にて安定している」という「安定状態」にあることを意味する。安定状態は、サブFB学習値KSFBgの学習が完了している状態と言い換えることもできる。
・status1(statusが「1」):サブFB学習値KSFBgの収束状態が、前記安定状態と前記不安定状態との間の状態(即ち、準安定状態)にある。
・status2(statusが「2」):サブFB学習値KSFBgの収束状態が良好である。即ち、status2の状態は、サブFB学習値KSFBgが「その収束値SDVoxsfinalの近傍にて安定している」という「安定状態」にあることを意味する。安定状態は、サブFB学習値KSFBgの学習が完了している状態と言い換えることもできる。
・status1(statusが「1」):サブFB学習値KSFBgの収束状態が、前記安定状態と前記不安定状態との間の状態(即ち、準安定状態)にある。
他方、第1制御装置において、下流側目標値Voxsrefは理論空燃比に相当する値Vst(例えば、0.5V)よりも大きい値(例えば、0.7V)に設定される。この結果、図4に示したように、リッチ判定時の出力偏差量DVoxsの大きさDRがリーン判定時の出力偏差量DVoxsの大きさDLよりも小さくなる。従って、調整ゲインKをリッチ判定時とリーン判定時とにおいて同じ値に維持していると、リーン判定時の時間積分値SDVoxslowの一回の更新量の大きさ(K・DLのローパスフィルタ値)がリッチ判定時の時間積分値SDVoxsの一回の更新量の大きさ(K・DRのローパスフィルタ値)よりも大きくなる。この結果、サブFB学習値KSFBgの更新速度の大きさは、リーン判定時の方がリッチ判定時よりも大きくなる。
このため、例えば、サブFB学習値KSFBgが実質的に収束値SDVoxsfinalに収束している場合であっても、図5の(B)の時刻t1に示したように、外乱によってサブFB学習値KSFBgが上限値Vgmaxthを超える場合が生じる。
そこで、第1制御装置は、サブFB学習値KSFBgの増大速度の大きさとサブFB学習値KSFBgの減少速度の大きさとの差が小さくなるように、(換言すると、時間積分値SDVoxslowの増大速度の大きさと時間積分値SDVoxslowの減少速度の大きさとの差が小さくなるように)、時間積分値SDVoxslowを増大させる場合の調整ゲインKを、時間積分値SDVoxslowを減少させる場合の調整ゲインKよりも、小さい値に設定する。この結果、サブFB学習値KSFBgの収束状態を精度良く判定することができる。
(空燃比制御の詳細)
次に、第1制御装置が行う機関の空燃比制御の詳細について説明する。第1制御装置は、上述したように、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefと一致させるためのサブフィードバック制御を実行する。
次に、第1制御装置が行う機関の空燃比制御の詳細について説明する。第1制御装置は、上述したように、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefと一致させるためのサブフィードバック制御を実行する。
一方、上流側触媒43は酸素吸蔵機能を有するから、上流側触媒43の上流の空燃比変化は所定の遅れ時間が経過した後に上流側触媒43の下流の空燃比変化となって現れる。従って、サブフィードバック制御のみでは過渡的な空燃比変動を十分に抑制することが困難である。そこで、第1制御装置は、上述したように、上流側空燃比センサ56の出力値Vabyfsに基く空燃比フィードバック制御(メインフィードバック制御)を実行する。
第1制御装置は、メインフィードバック制御により機関の空燃比を増大しているときにサブフィードバック制御により機関の空燃比を減少させる事態、及び、メインフィードバック制御により機関の空燃比を減少しているときにサブフィードバック制御により機関の空燃比を増大させる事態、が発生することがないように、以下に述べる複数の手段による空燃比制御を行う。これにより、メインフィードバック制御とサブフィードバック制御との間に制御上の干渉が発生しない。
第1制御装置は、機能ブロック図である図6に示した複数の手段等を含んで構成されている。以下、図6を参照しながら説明する。
<補正後基本燃料噴射量の算出>
筒内吸入空気量算出手段A1は、実際の吸入空気量Gaと、実際の機関回転速度NEと、ROMに格納されているルックアップテーブルMapMcと、に基づき今回の吸気行程を迎える気筒の吸入空気量である筒内吸入空気量Mc(k)を求める。なお、添え字の(k−N)は、今回の吸気行程からNストローク(4気筒エンジンにおいて、N・180°CA、CA;クランク角)前の吸気行程に対した値であることを示す。従って、添え字(k)が付された変数は、今回の吸気行程(又は現時点)に対応した値であることを示す。この表記方法は、以下において他のパラメータについても同様に用いられる。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらRAMに記憶されていく。
筒内吸入空気量算出手段A1は、実際の吸入空気量Gaと、実際の機関回転速度NEと、ROMに格納されているルックアップテーブルMapMcと、に基づき今回の吸気行程を迎える気筒の吸入空気量である筒内吸入空気量Mc(k)を求める。なお、添え字の(k−N)は、今回の吸気行程からNストローク(4気筒エンジンにおいて、N・180°CA、CA;クランク角)前の吸気行程に対した値であることを示す。従って、添え字(k)が付された変数は、今回の吸気行程(又は現時点)に対応した値であることを示す。この表記方法は、以下において他のパラメータについても同様に用いられる。筒内吸入空気量Mcは、各気筒の吸気行程に対応されながらRAMに記憶されていく。
上流側目標空燃比設定(決定)手段A2は、内燃機関10の運転状態である機関回転速度NE及び機関の負荷(例えば、スロットル弁開度TA)等に基づいて上流側目標空燃比(目標空燃比)abyfr(k)を決定する。後述するように、目標空燃比abyfrは「サブフィードバック制御を実現するサブフィードバック量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)
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)
最終燃料噴射量算出手段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を決定する。
下流側目標値設定手段A6は、「機関回転速度NE、吸入空気量Ga、スロットル弁開度TA、及び、上流側触媒43の劣化度(最大酸素吸蔵量Cmax)等」に基づいて下流側目標空燃比に対応する下流側目標値Voxsrefを決定する。
出力偏差量算出手段A7は、下記(3)式に基づいて、手段A6により設定されている現時点の下流側目標値Voxsrefから現時点での下流側空燃比センサ57の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。「現時点」とは、今回のFi(k)の噴射指示開始時点のことである。出力偏差量算出手段A7は、求めた出力偏差量DVoxsをローパスフィルタA8に出力する。
DVoxs=Voxsref−Voxs …(3)
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)
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の更新速度(変化速度)が変更される。第1制御装置において、調整ゲインKは、出力値Voxsが下流側目標値Voxsrefよりも大きいときと、出力値Voxsが下流側目標値Voxsrefよりも小さいときとで、互いに異なる値に設定される。
SDVoxslow(n)=SDVoxslow(n−1)+K・DVoxslow …(5)
SDVoxslow(n)=SDVoxslow(n−1)+K・DVoxslow …(5)
次いで、PIDコントローラA9は、下記(6)式に基づいて比例・積分・微分処理(PID処理)を実行し、サブフィードバック量KSFBを求める。(6)式において、Kpは予め設定された比例ゲイン(比例定数)、Kiは予め設定された積分ゲイン(積分定数)、Kdは予め設定された微分ゲイン(微分定数)である。DDVoxslowはローパスフィルタ通過後出力偏差量DVoxslowの時間微分値である。以上により、サブフィードバック量KSFBが求められる。
KSFB=Kp・DVoxslow+Ki・SDVoxslow+Kd・DDVoxslow …(6)
KSFB=Kp・DVoxslow+Ki・SDVoxslow+Kd・DDVoxslow …(6)
上記(6)式は積分項Ki・SDVoxslowを含んでいるので、定常状態では出力偏差量DVoxsがゼロになることが保証される。換言すれば、下流側目標値Voxsrefと下流側空燃比センサ57の出力値Voxsとの定常偏差がゼロになる。また、定常状態においては、出力偏差量DVoxsがゼロになるから、比例項Kp・DVoxslow及び微分項Kd・DDVoxslowの両者がゼロとなる。従って、サブフィードバック量KSFBの定常状態における収束値は積分項Ki・SDVoxslowの値と等しくなる。
以上から明らかなように、下流側目標値設定手段A6、出力偏差量算出手段A7、ローパスフィルタA8及びPIDコントローラA9はサブフィードバック量算出手段を構成している。
<メインフィードバック制御>
先に説明したように、上流側触媒43は酸素吸蔵機能を有している。従って、上流側触媒43の上流の排ガスの空燃比の変動における「比較的周波数の高い高周波数成分(前記周波数1/τ1以上の高周波数成分)」及び「比較的周波数が低く且つ振幅が比較的小さい低周波数成分(前記周波数1/τ1以下の周波数にて変動するとともに理論空燃比からの偏移量が比較的小さい低周波成分)」は、上流側触媒43の酸素吸蔵機能により吸収されるから、上流側触媒43の下流の排ガスの空燃比の変動として現れ難い。
先に説明したように、上流側触媒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)を求める。
テーブル変換手段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)をメインフィードバック補正値の算出に用いるのは、燃料噴射弁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)
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)
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(s)={1−1/(1+τ1・s)} …(9)
ハイパスフィルタA14は、空燃比偏差Dafを入力するとともに、上記(9)式より表された特性式に従って空燃比偏差Dafをハイパスフィルタ処理した後の値であるメインフィードバック制御用偏差DafHiを出力する。
メインフィードバック補正値更新手段A15は、ハイパスフィルタA14の出力値であるメインフィードバック制御用偏差DafHiを比例処理する。即ち、メインフィードバック補正値更新手段A15は、メインフィードバック制御用偏差DafHiに比例ゲインGpHiを乗じた値に「1」を加えることにより、メインフィードバック補正値KFmainを求める。このメインフィードバック補正値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)
KFmain=1+(Gphi・DafHi+Gihi・SDafHi)・KFB …(10)
以上から明らかなように、上流側目標空燃比設定手段A2、テーブル変換手段A10、目標空燃比遅延手段A11、ローパスフィルタA12、上流側空燃比偏差算出手段A13、ハイパスフィルタA14及びメインフィードバック補正値更新手段A15は、メインフィードバック補正値算出手段(メインフィードバック制御手段)を構成している。
<基本補正値の算出>
サブフィードバック量KSFBはPIDコントローラA9によりローパスフィルタ通過後出力偏差量DVoxslowを比例・積分・微分処理することによって算出される。しかしながら、上流側触媒43の酸素吸蔵機能の影響により機関の空燃比の変化は少し遅れて上流側触媒43の下流の排ガスの空燃比の変化として現れる。従って、エアフローメータ51の検出精度や空気量推定モデルの推定精度に起因する定常的な誤差の大きさが運転領域の急変等によって比較的急激に増大する場合、その誤差に起因する燃料噴射量の過不足分をサブフィードバック制御のみにより直ちに補償することはできない。
サブフィードバック量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)
Fi(k)={KF・Fbaseb(k)}・KFmain …(11)
基本補正値KFは、下記の(12)式により定義される。
Fbaset(k−N)=KF・Fbaseb(k−N) …(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)
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)
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=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の機能ブロック図である図7を参照しながら、基本補正値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を求めるためのルックアップテーブルを表すものとする。また、引数の値がセンサの検出値である場合、その引数の値には現在値が適用される。
次に、第1制御装置の実際の作動について説明する。以下、説明の便宜上、「MapX(a1,a2,…)」は、a1,a2,…を引数とする値Xを求めるためのルックアップテーブルを表すものとする。また、引数の値がセンサの検出値である場合、その引数の値には現在値が適用される。
<最終燃料噴射量Fi(k)の算出>
CPUは、図8にフローチャートにより示した最終燃料噴射量Fiの計算及び噴射指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度(例えば、BTDC90°CA)となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が上記所定クランク角度になると、CPUはステップ800から処理を開始して以下に記載したステップ810乃至ステップ830の処理を順に行い、ステップ840に進む。
CPUは、図8にフローチャートにより示した最終燃料噴射量Fiの計算及び噴射指示を行うルーチンを、各気筒のクランク角が各吸気上死点前の所定クランク角度(例えば、BTDC90°CA)となる毎に、繰り返し実行するようになっている。従って、任意の気筒のクランク角度が上記所定クランク角度になると、CPUはステップ800から処理を開始して以下に記載したステップ810乃至ステップ830の処理を順に行い、ステップ840に進む。
ステップ810:CPUは、テーブルMapMc(Ga,NE)に基づいて今回の吸気行程を迎える気筒(以下、「燃料噴射気筒」と云うこともある。)に吸入される今回の筒内吸入空気量Mc(k)を推定・決定する。筒内吸入空気量Mc(k)は、周知の空気量推定モデル(吸気通路における空気の挙動を模した物理法則に従って構築されたモデル)により算出されてもよい。
ステップ820:CPUは、下記の(16)式に基いて目標空燃比abyfr(k)を決定する。目標空燃比abyfr(k)は各気筒の吸気行程に対応されながらRAMに記憶されていく。(16)式において、abyfr0は所定の基準空燃比であり、ここでは理論空燃比stoichに設定されている。従って、サブフィードバック量KSFBが大きくなれば、目標空燃比abyfr(k)は小さくなる。なお、目標空燃比abyfr(k)は、更に、吸入空気量Ga及び/又は機関回転速度NE等の機関10の運転状態に基いて補正されてもよい。
abyfr(k)=abyfr0−KSFB…(16)
abyfr(k)=abyfr0−KSFB…(16)
ステップ830:CPUは、上記筒内吸入空気量Mc(k)を上記目標空燃比abyfr(k)で除することにより、補正前基本燃料噴射量Fbaseb(k)を算出する。補正前基本燃料噴射量Fbaseb(k)は各気筒の吸気行程に対応されながらRAMに記憶されていく。
次に、CPUはステップ840に進み、現在の運転状態がフューエルカット条件が成立しているか否かを判定する。フューエルカット条件が成立していれば、CPUはステップ840にて「Yes」と判定してステップ895に直接進み、本ルーチンを一旦終了する。従って、燃料噴射の指示を行うステップ870が実行されないので、燃料噴射は停止される(フューエルカット運転が実行される。)。
一方、ステップ840の判定時点においてフューエルカット条件が成立していなければ、CPUはステップ840にて「No」と判定し、以下に記載したステップ850乃至ステップ870の処理を順に行い、その後、ステップ895に進んで本ルーチンを一旦終了する。
ステップ850:CPUは、後述するルーチンによって計算されるとともにバックアップRAMに運転領域毎に格納されている基本補正値KFの中から、現時点における運転状態が属する運転領域に格納されている基本補正値KFを読み出す。なお、メインフィードバック制御条件が不成立のとき、運転状態に関わらず基本補正値KFには値「1」が設定される。更に、CPUは、補正前基本燃料噴射量Fbaseb(k)に、読み出した基本補正値KFを乗じた値を補正後基本燃料噴射量Fbaseとして設定する。
ステップ860:CPUは、上記(2)式及び上記(11)式に従い、補正後基本燃料噴射量Fbaseに後述するルーチンにて求められているメインフィードバック補正値KFmainを乗じることにより、今回の最終燃料噴射量Fi(k)を求める。
ステップ870:CPUは、最終燃料噴射量Fi(k)の燃料が燃料噴射気筒に対する燃料噴射弁33から噴射されるように、その燃料噴射弁33に対して噴射指示を行う。
ステップ870:CPUは、最終燃料噴射量Fi(k)の燃料が燃料噴射気筒に対する燃料噴射弁33から噴射されるように、その燃料噴射弁33に対して噴射指示を行う。
以上により、補正前基本燃料噴射量Fbaseb(k)が目標空燃比abyfr(k)と今回の筒内吸入空気量Mc(k)とに基づいて取得され、その補正前基本燃料噴射量Fbaseb(k)と基本補正値KFとにより補正後基本燃料噴射量Fbaseが取得される。更に、その補正後基本燃料噴射量Fbaseがメインフィードバック補正値KFmainにより補正されることにより最終的な燃料噴射量(最終燃料噴射量)Fi(k)が求められ、その最終燃料噴射量Fi(k)の燃料の噴射指示が燃料噴射気筒の燃料噴射弁33に対してなされる。
<メインフィードバック補正値の計算>
CPUは図9にフローチャートにより示したルーチンを実行周期Δt1(一定)の経過毎に繰り返し実行するようになっている。従って、所定のタイミングにてCPUはステップ900から処理を開始し、以下に記載したステップ905及びステップ910の処理を順に行い、ステップ915に進む。なお、この実行周期Δt1は、例えば、機関回転速度NEが想定される最大の機関回転速度である場合における連続する二つの噴射指示の発生時間間隔より短い時間に設定されている。
CPUは図9にフローチャートにより示したルーチンを実行周期Δt1(一定)の経過毎に繰り返し実行するようになっている。従って、所定のタイミングにてCPUはステップ900から処理を開始し、以下に記載したステップ905及びステップ910の処理を順に行い、ステップ915に進む。なお、この実行周期Δt1は、例えば、機関回転速度NEが想定される最大の機関回転速度である場合における連続する二つの噴射指示の発生時間間隔より短い時間に設定されている。
ステップ905:CPUは、ステップ905に記載した簡易のローパスフィルタ式(abyfrtgt(k)=α・abyfrtgtold+(1−α)・abyfr(k−N))に従ってメインフィードバック制御用目標空燃比abyfrtgt(k)を求める。ここで、αは0より大きく1より小さい定数であり、上記ローパスフィルタA12の時定数τに応じて設定されている。abyfrtgtoldは、「前回本ルーチンを実行した際にステップ910にて算出されたメインフィードバック制御用目標空燃比abyfrtgt」である。abyfrtgtoldは、前回メインフィードバック制御用目標空燃比と称呼される。abyfr(k−N)は、現時点からNストローク前の実際の上流側目標空燃比である。
ステップ910:CPUは、次回の本ルーチンの実行のために、前回メインフィードバック制御用目標空燃比abyfrtgtoldにステップ905にて算出したメインフィードバック制御用目標空燃比abyfrtgt(k)を格納する。
次に、CPUはステップ915に進み、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるか否かを判定する。メインフィードバック制御条件成立フラグXmainFBの値は、メインフィードバック制御条件が成立したときに「1」に設定され、メインフィードバック制御条件が不成立のとき「0」に設定される。
メインフィードバック制御条件は、例えば以下の総ての条件が成立するとき成立する。
・上流側空燃比センサ56が活性化している。
・フューエルカット条件が成立していない(フューエルカット運転状態でない。)。
・上流側空燃比センサ56が活性化している。
・フューエルカット条件が成立していない(フューエルカット運転状態でない。)。
いま、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるとすると、CPUは、以下に記載したステップ920乃至ステップ935の処理を順に行い、ステップ995に進んで本ルーチンを一旦終了する。
ステップ920:CPUは、現時点の上流側空燃比センサ56の出力値Vabyfsを図2により示したテーブルMapabyfs(vabyfs)に基づいて変換することにより、現時点の検出空燃比abyfs(k)を求める。
ステップ925:CPUは、上記(8)式であるステップ925内に記載した式に従ってメインフィードバック制御用目標空燃比abyfrtgt(k)から今回の検出空燃比abyfs(k)を減じることにより、空燃比偏差Dafを求める。
ステップ925:CPUは、上記(8)式であるステップ925内に記載した式に従ってメインフィードバック制御用目標空燃比abyfrtgt(k)から今回の検出空燃比abyfs(k)を減じることにより、空燃比偏差Dafを求める。
ステップ930:CPUは、空燃比偏差Dafに上記(9)式により表された特性を有するハイパスフィルタ処理を施すことにより、メインフィードバック制御用偏差DafHiを取得する。
ステップ935:CPUは、メインフィードバック制御用偏差DafHiに比例ゲインGpHiを乗じて得られる積に値「1」を加えることにより、メインフィードバック補正値KFmainを求める。
一方、メインフィードバック制御条件成立フラグXmainFBの値が「0」であるとすると、CPUは、ステップ915から以下に記載したステップ940及びステップ945の処理を順に行い、ステップ995に進んで本ルーチンを一旦終了する。
ステップ940:CPUは、メインフィードバック補正値KFmainを「1」に設定する。
ステップ945:CPUは、基本補正値KFを「1」に設定する。
ステップ945:CPUは、基本補正値KFを「1」に設定する。
このように、メインフィードバック制御条件が不成立(XmainFB=0)の場合、メインフィードバック補正値KFmainの更新が停止されるとともに、メインフィードバック補正値KFmainの値が「1」に設定されるので、メインフィードバック制御が停止される(メインフィードバック補正値KFmainの最終燃料噴射量Fiへの反映が停止される)。また、メインフィードバック制御条件が不成立(XmainFB=0)の場合、基本補正値KFの値が「1」に設定されるので、基本補正値KFの最終燃料噴射量Fiへの反映が停止される。
<基本補正値の計算と記憶・格納>
CPUは図10にフローチャートにより示したルーチンを、図8に示したルーチンの実行に先だって繰り返し実行するようになっている。従って、所定のタイミングにてCPUはステップ1000から処理を開始し、ステップ1005に進んでメインフィードバック制御条件成立フラグXmainFBの値が「1」であるか否かを判定する。いま、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるとすると、CPUは、以下に記載したステップ1010乃至1030の処理を順に行い、ステップ1095に進んで本ルーチンを一旦終了する。
CPUは図10にフローチャートにより示したルーチンを、図8に示したルーチンの実行に先だって繰り返し実行するようになっている。従って、所定のタイミングにてCPUはステップ1000から処理を開始し、ステップ1005に進んでメインフィードバック制御条件成立フラグXmainFBの値が「1」であるか否かを判定する。いま、メインフィードバック制御条件成立フラグXmainFBの値が「1」であるとすると、CPUは、以下に記載したステップ1010乃至1030の処理を順に行い、ステップ1095に進んで本ルーチンを一旦終了する。
ステップ1010:CPUは、上記(13)式であるステップ1010内に記載した式に従って「現時点からNストローク前の真の基本燃料噴射量Fbaset」を算出する。なお、現時点からNストローク前の最終燃料噴射量Fi(k−N)及び現時点からNストローク前の目標空燃比abyfr(k−N)は、いずれもRAMから読み出される。
ステップ1015:CPUは、上記(15)式と同じ式であるステップ1015に記載した式に基いて、現時点からNストローク前の真の基本燃料噴射量Fbasetを現時点からNストローク前の補正前基本燃料噴射量Fbaseb(k−N)により除することによって、基本補正値KFの基礎となる今回値KFnew(フィルタ前基本補正値KFbf)を算出する。なお、現時点からNストローク前の補正前基本燃料噴射量Fbaseb(k−N)はRAMから読み出される。
ステップ1020:CPUは、現時点からNストローク前の時点における機関10の運転状態が属する運転領域に対応してバックアップRAM内に格納してある基本補正値KFを同バックアップRAMから読み出す。この読み出された基本補正値KFは、過去の基本補正値KFoldである。
ステップ1025:CPUは、ステップ1025に記載した簡易のローパスフィルタ式(KF=β・KFold+(1−β)・KFnew)に従って新たな基本補正値KF(最終基本補正値KF)を算出する。ここで、βは0より大きく1より小さい定数である。
ステップ1025:CPUは、ステップ1025に記載した簡易のローパスフィルタ式(KF=β・KFold+(1−β)・KFnew)に従って新たな基本補正値KF(最終基本補正値KF)を算出する。ここで、βは0より大きく1より小さい定数である。
ステップ1030:CPUは、ステップ1025にて求められた基本補正値KFを、現時点からNストローク前の時点における機関10の運転状態が属する運転領域に対応したバックアップRAM内の格納領域に記憶・格納する。このようにして、基本補正値KFが更新され、且つ、記憶されて行く。
一方、メインフィードバック制御条件成立フラグXmainFBの値が「0」であると、CPUはステップ1005にて「No」と判定し、ステップ1095に直ちに進んで本ルーチンを一旦終了する。この場合、基本補正値KFの更新及びバックアップRAMへの記憶・格納処理は実行されない。
なお、基本補正値KFnewの値をそのまま新たな基本補正値KFとして採用してもよい。その場合、ステップ1020を省略し、ステップ1025における定数βを「0」に設定すればよい。
<サブフィードバック量の計算>
CPUは図11にフローチャートにより示したルーチンを、所定時間が経過する毎に繰り返し実行するようになっている。従って、所定のタイミングになるとCPUはステップ1100から処理を開始し、ステップ1105に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件はメインフィードバック制御条件が成立し、且つ、下流側空燃比センサ57が活性化していると判定されるときに成立する。
CPUは図11にフローチャートにより示したルーチンを、所定時間が経過する毎に繰り返し実行するようになっている。従って、所定のタイミングになるとCPUはステップ1100から処理を開始し、ステップ1105に進んでサブフィードバック制御条件が成立しているか否かを判定する。サブフィードバック制御条件はメインフィードバック制御条件が成立し、且つ、下流側空燃比センサ57が活性化していると判定されるときに成立する。
いま、サブフィードバック制御条件が成立しているものとして説明を続ける。この場合、CPUは以下に記載したステップ1110乃至ステップ1120の処理を順に行い、ステップ1125に進む。
ステップ1110:CPUは、上記(3)式であるステップ1110内に記載した式に従って、下流側目標値Voxsrefから現時点の下流側空燃比センサ57の出力値Voxsを減じることにより、出力偏差量DVoxsを求める。
ステップ1115:CPUは、出力偏差量DVoxsに対して上記(4)式により表された特性を有するローパスフィルタ処理を施すことによりローパスフィルタ通過後出力偏差量DVoxslowを算出する。
ステップ1115:CPUは、出力偏差量DVoxsに対して上記(4)式により表された特性を有するローパスフィルタ処理を施すことによりローパスフィルタ通過後出力偏差量DVoxslowを算出する。
ステップ1120:CPUは、下記(17)式に基づきローパスフィルタ通過後出力偏差量DVoxslowの微分値DDVoxslowを求める。(17)式において、DVoxslowoldは前回の本ルーチン実行時において「後述するステップ1150にて設定(更新)されたローパスフィルタ通過後出力偏差量DVoxslow」である。また、Δtは本ルーチンが前回実行された時点から今回実行された時点までの時間である。
DDVoxslow=(DVoxslow−DVoxslowold)/Δt …(17)
DDVoxslow=(DVoxslow−DVoxslowold)/Δt …(17)
次に、CPUはステップ1125に進み、下流側空燃比センサ57の出力値Voxsが所定の下流側目標値Voxsref以上であるか否かを判定する。本例において、下流側目標値Voxsrefは、理論空燃比に相当する値Vst(例えば、0.5V)よりも大きい値(例えば、0.7V)に設定されている。なお、下流側目標値Voxsrefは、例えば、吸入空気量Gaが大きくなるほど、理論空燃比に相当する値Vstから次第に大きくなる値に設定されてもよい。下流側目標値Voxsrefは、吸入空気量Gaの他、機関10の負荷、機関回転速度NE、上流側触媒43の温度、及び、最大酸素吸蔵量Cmax等により変更されてもよい。
このとき、出力値Voxsが下流側目標値Voxsref以上であれば、CPUはステップ1130に進んで調整ゲインKに「大ゲインKlarge」を設定する。これに対し、出力値Voxsが下流側目標値Voxsref未満であれば、CPUはステップ1135に進んで調整ゲインKに「大ゲインKlargeよりも小さい小ゲインKsmall」を設定する。大ゲインKlarge及び小ゲインKsmallは、後述する図12に示したルーチンにより決定されている。
次に、CPUは以下に述べるステップ1140乃至ステップ1150の処理を順に行い、ステップ1160に進む。
ステップ1140:CPUは、上記(5)式であるステップ1140内に示した式に従って時間積分値SDVoxslowを求める。
ステップ1145:CPUは、上記(6)式であるステップ1145内に示した式に従ってサブフィードバック量KSFBを求める。
ステップ1150:CPUは、ローパスフィルタ通過後出力偏差量DVoxslowの前回値DVoxslowoldに上記ステップ1110にて求めたローパスフィルタ通過後出力偏差量DVoxslowを格納する。
ステップ1145:CPUは、上記(6)式であるステップ1145内に示した式に従ってサブフィードバック量KSFBを求める。
ステップ1150:CPUは、ローパスフィルタ通過後出力偏差量DVoxslowの前回値DVoxslowoldに上記ステップ1110にて求めたローパスフィルタ通過後出力偏差量DVoxslowを格納する。
次に、CPUはステップ1160に進み、前回のサブFB学習値KSFBgの更新時点から学習間隔時間Tthが経過しているか否かを判定する。このとき、前回のサブFB学習値KSFBgの更新時点から学習間隔時間Tthが経過していなければ、CPUはステップ1160にて「No」と判定し、ステップ1195に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1160の処理を実行する時点において、前回のサブFB学習値KSFBgの更新時点から学習間隔時間Tthが経過していると、CPUはステップ1160にて「Yes」と判定してステップ1165に進み、時間積分値SDVoxslowをサブFB学習値KSFBgとしてバックアップRAMに格納する。このように、CPUは、サブフィードバック量KSFBが更新される期間よりも長い期間が経過した時点における「サブフィードバック量KSFBの定常成分に応じた時間積分値SDVoxslow」を、サブFB学習値KSFBgとして取り込む。
次に、CPUはステップ1170に進み、サブFB学習値KSFBgの過去の値の変動中心(荷重平均値)Vcを下記(18)式に従って更新する。γはαは0より大きく1より小さい定数である。Vc(n)は更新後の中心値Vcであり、Vc(n−1)は更新前の中心値Vcである。
Vc(n)=γ・Vc(n−1)+(1−γ)・KSFBg …(18)
Vc(n)=γ・Vc(n−1)+(1−γ)・KSFBg …(18)
一方、ステップ1105の判定時において、サブフィードバック制御条件が不成立であると、CPUはステップ1105にて「No」と判定してステップ1175に進み、サブフィードバック量KSFBに「積分ゲインKiとサブFB学習値KSFBgとの積」を代入する。次に、CPUはステップ1180にて積分値SDVoxslowにサブFB学習値KSFBgを設定した後、ステップ1195に進んで本ルーチンを一旦終了する。
<調整ゲインKの設定>
CPUは、調整ゲインKに使用される「大ゲインKlarge及び小ゲインKsmall」を決定するために、図12にフローチャートにより示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。
CPUは、調整ゲインKに使用される「大ゲインKlarge及び小ゲインKsmall」を決定するために、図12にフローチャートにより示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。
従って、所定のタイミングになると、CPUは図12のステップ1200から処理を開始し、ステップ1205に進んでステータス(status)が更新された直後か否かを判定する。statusは、後述する図13乃至図16に示したルーチンにより更新される。なお、このstatusの更新には、後述する図13のステップ1330におけるstatusの初期化設定も含まれる。
現時点が、statusの初期化設定がなされた直後であるか、又は、statusが更新された直後であると、CPUはステップ1205にて「Yes」と判定してステップ1210に進み、大ゲインKlargeをテーブルMapKlarge(Cmax,status)に基いて決定するとともに、小ゲインKsmallをテーブルMapKsmall(Cmax,status)に基いて決定する。
図12のステップ1210内に記載したように、テーブルMapKlarge(Cmax,status)によれば、最大酸素吸蔵量Cmaxが一定の場合において、status0での大ゲインKlargeがstatus1での大ゲインKlargeよりも大きく、且つ、status1での大ゲインKlargeがstatus2での大ゲインKlargeよりも大きくなるように、大ゲインKlargeが決定される。
同様に、テーブルMapKsmall(Cmax,status)によれば、最大酸素吸蔵量Cmaxが一定の場合において、status0での小ゲインKsmallがstatus1での小ゲインKsmallよりも大きく、且つ、status1での小ゲインKsmallがstatus2での小ゲインKsmallよりも大きくなるように、小ゲインKsmallが決定される。
更に、テーブルMapKlarge(Cmax,status)及びテーブルMapKsmall(Cmax,status)によれば、最大酸素吸蔵量Cmax及びステータスの値が同じである場合、大ゲインKlargeの方が小ゲインKsmallよりも常に大きくなるように、大ゲインKlarge及び小ゲインKsmallが決定される。加えて、大ゲインKlarge及び小ゲインKsmallは、各statusにおいて最大酸素吸蔵量Cmaxが大きいほど、より小さい値となるように決定される。
なお、上流側触媒43の最大酸素吸蔵量Cmaxは、上流側触媒43が吸蔵し得る酸素の量の最大値であり、所謂、アクティブ空燃比制御によって別途取得されている。最大酸素吸蔵量Cmaxは、触媒の劣化が進むほど小さくなる。アクティブ空燃比制御は、例えば、特開平5−133264号公報等に記載された周知の制御である。従って、ここではその詳細な説明を省略する。最大酸素吸蔵量Cmaxは、取得される毎にバックアップRAMに記憶・更新されるようになっている。
一方、CPUがステップ1205の処理を実行する時点において、現時点が、statusの初期化設定がなされた直後、及び、ステータス(status)が更新された直後、の何れでもなければ、CPUはステップ1205からステップ1295に直接進んで本ルーチンを一旦終了する。
<statuの初期設定>
次に、学習進行程度等を表す「status(ステータス)」を初期設定する際のCPUの作動について説明する。statusN(N=0、1、2)は、上述したように定義されている。
次に、学習進行程度等を表す「status(ステータス)」を初期設定する際のCPUの作動について説明する。statusN(N=0、1、2)は、上述したように定義されている。
以下、説明の便宜上、現時点が内燃機関10の始動直後であり、且つ、この機関始動前に「電気制御装置70に電力を供給するためのバッテリ」の交換がなされていたと仮定する。CPUは図13にフローチャートにより示した「status初期設定ルーチン」を、内燃機関10の始動時点以降、所定時間が経過する毎に実行するようになっている。
従って、内燃機関10の始動時点以降において所定のタイミングが到来すると、CPUステップ1300から処理を開始し、ステップ1310に進んで「現時点が、内燃機関10の始動直後であるか否か」を判定する。
前述の仮定に従うと、現時点は内燃機関10の始動直後である。従って、CPUはステップ1310にて「Yes」と判定し、ステップ1320に進んで「電気制御装置70に電力を供給するためのバッテリ」交換がなされたか否かを判定する。このとき、前述の仮定に従うと、事前にバッテリが交換されている。従って、CPUはステップ1320にて「Yes」と判定してステップ1330に進み、statusを「0」に設定・更新する。この「status」の値は、その値が更新される毎にバックアップRAMに記憶・更新される。
次に、CPUは、ステップ1340に進んでカウンタCIをクリアし(「0」に設定し)、続くステップ1345にて次の処理を行う。
CPUは、「バックアップRAMに記憶されているサブFB学習値KSFBg」を「0(初期値、デフォルト値)」に設定する。
CPUは、時間積分値SDVoxslowを「0(初期値、デフォルト値)」に設定する。
CPUは、中心値Vcを「0(初期値、デフォルト値)」に設定する。
CPUは、判定基準値Vkijunを「0(初期値、デフォルト値)」に設定する。
その後、CPUはステップ1395に進み、本ルーチンを一旦終了する。
CPUは、「バックアップRAMに記憶されているサブFB学習値KSFBg」を「0(初期値、デフォルト値)」に設定する。
CPUは、時間積分値SDVoxslowを「0(初期値、デフォルト値)」に設定する。
CPUは、中心値Vcを「0(初期値、デフォルト値)」に設定する。
CPUは、判定基準値Vkijunを「0(初期値、デフォルト値)」に設定する。
その後、CPUはステップ1395に進み、本ルーチンを一旦終了する。
なお、CPUがステップ1320に進んだとき、バッテリ交換がされていないと判定した場合、CPUはそのステップ1320にて「No」と判定してステップ1350に進み、バックアップRAMに記憶されているstatusを読み出す。次いで、CPUはステップ1355にて、「図11のステップ1170において算出されている中心値Vc」及び「判定基準値Vkijun」をバックアップRAMから読み出す。判定基準値Vkijunは、「status(ステータス)」の判定のために設定される閾値の基準となる値であり、後述する図15のステップ1540にて更新される。
以降、CPUはステップ1310にて「No」と判定し、ステップ1395に直接進んで本ルーチンを一旦終了するようになる。
<status判定その1(第1ステータス判定)>
CPUは、status判定を行うために、所定時間が経過する毎に図14にフローチャートにより示した「第1ステータス判定ルーチン」を実行するようになっている。従って、所定のタイミングになると、CPUは図14のステップ1400から処理を開始してステップ1410に進み、サブフィードバック制御条件が成立しているか否かを判定する。
CPUは、status判定を行うために、所定時間が経過する毎に図14にフローチャートにより示した「第1ステータス判定ルーチン」を実行するようになっている。従って、所定のタイミングになると、CPUは図14のステップ1400から処理を開始してステップ1410に進み、サブフィードバック制御条件が成立しているか否かを判定する。
このとき、サブフィードバック制御条件が成立していなければ、CPUはステップ1410にて「No」と判定してステップ1420に進む。そして、CPUはステップ1420にてカウンタCIを「0」に設定し、その後、ステップ1495に直接進んで本ルーチンを一旦終了する。なお、カウンタCIは、機関10が搭載された車両の図示しないイグニッション・キー・スイッチがオフ位置からオン位置に切り換えられた際に実行される図示しないイニシャルルーチンにより「0」に設定されるようになっている。
これに対し、CPUがステップ1410に進んだとき、サブフィードバック制御条件が成立していると、CPUはステップ1410にて「Yes」と判定してステップ1430に進み、現時点が「サブFB学習値KSFBgが更新された直後の時点」であるか否か(図11のステップ1165及びステップ1170の処理を行った直後であるか否か)を判定する。
このとき、現時点が「サブFB学習値KSFBgが更新された直後の時点」でなければ、CPUはステップ1430にて「No」と判定し、ステップ1495に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1430に進んだとき、現時点が「サブFB学習値KSFBgが更新された直後の時点」であると、CPUはそのステップ1430にて「Yes」と判定してステップ1440に進み、statusが「0」である(ステータスがstatus0である)か否かを判定する。このとき、statusが「0」でなければ、CPUはステップ1440にて「No」と判定し、ステップ1495に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1440に進んだとき、statusが「0」であると、CPUはそのステップ1440にて「Yes」と判定してステップ1450に進み、カウンタCIを「1」だけ増大する。次いで、CPUはステップ1460に進み、カウンタCIが更新回数閾値CIth以上であるか否かを判定する。このとき、カウンタCIが更新回数閾値CIthよりも小さいと、CPUはステップ1460にて「No」と判定し、ステップ1495に直接進んで本ルーチンを一旦終了する。
これに対し、CPUがステップ1460に進んだとき、カウンタCIが更新回数閾値CIth以上であると、CPUはそのステップ1460にて「Yes」と判定してステップ1470に進み、statusを「1」に設定・更新する(ステータスをstatus1に設定する)。
このように、statusが「0」であるとき、サブFB学習値KSFBgの更新が更新回数閾値CIth以上行われると、statusは「1」に変更される。これは、サブFB学習値KSFBgの更新が更新回数閾値CIth以上行われた時点においては、サブFB学習値KSFBgはある程度まで収束値に接近したであろうと判断できるからである。なお、ステップ1420を省略してもよい。また、ステップ1470の実行後にカウンタCIを「0」に設定してもよい。更に、図14のルーチン自体を省略してもよい。
<status判定その2(第2ステータス判定)>
CPUは、status判定を行うために、所定時間が経過する毎に図15にフローチャートにより示した「第2ステータス判定ルーチン」を実行するようになっている。以下においては、機関10の始動前に「電気制御装置70に電力を供給するためのバッテリ」が交換されたことによって、statusが図13のステップ1330にて「0」に設定され、且つ、ステップ1345にてサブFB学習値KSFBgが「0」に設定されたと仮定して説明を行う。更に、現時点は機関10の始動直後であると仮定する。
CPUは、status判定を行うために、所定時間が経過する毎に図15にフローチャートにより示した「第2ステータス判定ルーチン」を実行するようになっている。以下においては、機関10の始動前に「電気制御装置70に電力を供給するためのバッテリ」が交換されたことによって、statusが図13のステップ1330にて「0」に設定され、且つ、ステップ1345にてサブFB学習値KSFBgが「0」に設定されたと仮定して説明を行う。更に、現時点は機関10の始動直後であると仮定する。
CPUは、所定のタイミングになると、図15のステップ1500から処理を開始してステップ1505に進み、サブフィードバック制御条件が成立しているか否かを判定する。機関10の始動直後においては、サブフィードバック制御条件は一般に成立しない。従って、CPUはステップ1505にて「No」と判定してステップ1550に進み、カウンタCLを「0」に設定する。なお、カウンタCLは、上述したイニシャルルーチンにより「0」に設定されるようになっている。その後、CPUはステップ1595に直接進んで本ルーチンを一旦終了する。
この場合、CPUは図11のステップ1105からステップ1175に進むので、ステップ1165の処理は実行されない。従って、サブFB学習値KSFBgは「0」に維持される。
その後、機関10の運転が継続すると、サブフィードバック制御条件が成立する。これにより、図11のルーチンにより、サブフィードバック量KSFBが更新される。このとき、図13のステップ1330におけるstatusの初期化(「0」への設定)がなされているので、調整ゲインKは、図12に示したルーチンにより、statusが「0」であるときの「大ゲインKlarge及び小ゲインKsmall」の何れかに設定される。
係る状態において、CPUが図15のステップ1505に進むと、CPUはそのステップ1505にて「Yes」と判定してステップ1510に進む。そして、CPUは、ステップ1510にて、現時点がサブFB学習値KSFBgの更新直後の時点であるか否かを判定する。このとき、現時点がサブFB学習値KSFBgの更新直後の時点でなければ、CPUはステップ1510にて「No」と判定し、ステップ1595に直接進んで本ルーチンを一旦終了する。
一方、現時点がサブFB学習値KSFBgの更新直後の時点であると、CPUはステップ1510にて「Yes」と判定してステップ1515に進み、カウンタCLを「1」だけ増大する。次いで、CPUはステップ1520に進み、サブFB学習値KSFBg(本例においては、時間積分値SDVoxslow)の最大値Vgmax及び最小値Vgminを更新する。このサブFB学習値KSFBgの最大値Vgmax及び最小値Vgminは、カウンタCLが「0」から次のステップ1525にて用いられる閾値CLthに至るまでの期間(サブFB学習値KSFBgの収束度を判定するための所定時間)におけるサブFB学習値KSFBgの最大値及び最小値となる。
次に、CPUはステップ1525に進み、カウンタCLが閾値CLth以上であるか否かを判定する。このとき、カウンタCLが閾値CLthよりも小さいと、CPUはステップ1525にて「No」と判定し、ステップ1595に直接進んで本ルーチンを一旦終了する。
その後、時間が経過すると、サブFB学習値KSFBgが更新される毎に(即ち、学習間隔時間Tthが経過する毎に)ステップ1515の処理が実行される。従って、カウンタCLは閾値CLthに到達する。このとき、CPUがステップ1525に進むと、CPUはそのステップ1525にて「Yes」と判定してステップ1530に進み、カウンタCLを「0」に設定する。
次に、CPUはステップ1535に進み、図16に示したルーチンを実行する。即ち、CPUは図16のステップ1600から処理を開始してステップ1605に進み、statusが「0」であるか否かを判定する。前述の仮定に従えば、statusは「0」であるから、CPUはステップ1605にて「Yes」と判定してステップ1610に進み、判定基準値Vkijunに「所定の正の特定値である第1値ΔV0」を加えた値(Vkijun+ΔV0)を上限値(大側閾値)Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「第1値ΔV0」を減じた値(Vkijun−ΔV0)を下限値(小側閾値)Vgminthとして設定する。なお、この時点における判定基準値Vkijunの値は「0」である。
次に、CPUはステップ1615に進み、図15のステップ1520にて取得した最大値Vgmaxが上限値Vgmaxth以下であり、且つ、図15のステップ1520にて取得した最小値Vgminが下限値Vgminth以上であるか否かを判定する。即ち、CPUは、状態判定期間(カウンタCLが0から閾値CLthに至るまでの所定時間)におけるサブFB学習値KSFBgが、下限値Vgminthと上限値Vgmaxthとにより規定される閾値幅内であったか否かを判定する。
ところで、前述の仮定に従えば、機関始動前にバッテリ交換がなされため、サブFB学習値KSFBgは図13のステップ1345にて「0」に設定されている。この場合、一般に、サブFB学習値KSFBgと収束値SDVoxsfinalとの差は大きいので、サブフィードバック量KSFB及びサブFB学習値KSFBgの変化速度は大きい。従って、最大値Vgmaxが上限値Vgmaxthよりも大きいか、又は、最小値Vgminが下限値Vgminthよりも小さい。
このため、CPUはステップ1615にて「No」と判定し、ステップ1695を経由して図15のステップ1540に進み、判定基準値Vkijunに中心値Vcを設定する。中心値Vcは、図11のステップ1170にて算出されている。従って、CPUは、ステップ1535にてステータス判定が実行される時点において、その時点から状態判定期間(カウンタCLが0から閾値CLthに至るまでの期間)前の時点から、その時点まで、の期間におけるサブFB学習値KSFBgの加重平均(一次遅れ相当値である中心値Vc)を、判定基準値Vkijunとして設定する。その後、CPUはステップ1595に進み、本ルーチンを一旦終了する。この結果、statusは「0」に維持される。
この状態においては、statusが「0」であるため、調整ゲインK(大ゲインKlarge及び小ゲインKsmall)は大きい値に設定される(図12のステップ1210及び図11のステップ1125乃至ステップ1135を参照)。これにより、時間積分値SDVoxsの1回あたりの更新量K・DVoxs(の絶対値)が大きい値に設定される。即ち、大きな調整ゲインKを用いることにより、サブフィードバック量KSFB及び時間積分値SDVoxs(即ち、サブFB学習値KSFBg)の更新が迅速に行われる。従って、サブFB学習値KSFBg(時間積分値SDVoxs)は、「0(初期値、デフォルト値)」から大きい変化速度をもって収束値SDVoxsfinalに収束(接近)していく。
この状態が継続すると、サブFB学習値KSFBgは収束値SDVoxsfinalに接近し、収束値SDVoxsfinal近傍において比較的穏やかに変化するようになる。この結果、最大値Vgmaxは「ステップ1610にて算出される上限値Vgmaxth」以下となり、且つ、最小値Vgminは「ステップ1610にて算出される下限値Vgminth」以上となる。このとき、CPUが図16のステップ1615に進むと、CPUはそのステップ1615にて「Yes」と判定し、ステップ1620に進んでstatusを「1」に設定する。その後、CPUはステップ1695を経由して図15のステップ1540に進む。
なお、statusが「0」であるときにステップ1615の条件が成立しない場合であっても、前述した図14のステップ1460の条件(カウンタCIが更新回数閾値CIth以上となる条件)が成立すれば、ステップ1470にてstatusは「1」に変更される。
このように、statusが「1」に設定・更新された状態において、CPUが図12のステップ1210に進むと、CPUはそのステップ1210にて、status1に対応付けられている「テーブルMapKlarge(Cmax,status)及びMapKsmall(Cmax,status)」に基いて大ゲインKlarge及び小ゲインKsmallをそれぞれ決定する。
その結果、大きい値に設定されていた調整ゲインK(大ゲインKlarge及び小ゲインKsmall)が中程度の値に設定・変更されるので、時間積分値SDVoxsの1回あたりの更新量K・DVoxs(の絶対値)も中程度の値に設定される。この結果、サブFB学習値KSFBg(時間積分値SDVoxs)は、収束値SDVoxsfinalに比較的近い値から中程度の変化速度をもって収束値SDVoxsfinalに更に接近・収束していく。
一方、この時点以降、CPUが図15のルーチンのステップ1535を経由して図16のステップ1605に進むと、statusが「1」に設定されていることから、CPUはそのステップ1605にて「No」と判定する。そして、CPUはステップ1630に進んでstatusが「1」であるか否かを判定する。この場合、CPUはステップ1630にて「Yes」と判定してステップ1635に進み、判定基準値Vkijunに「第1値ΔV0よりも小さい第2値ΔV1(ΔV1>0)」を加えた値(Vkijun+ΔV1)を上限値Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「第2値ΔV1」を減じた値(Vkijun−ΔV1)を下限値Vgminthとして設定する。なお、第2値ΔV1も特定値と称呼される。
次に、CPUはステップ1640に進み、図15のステップ1520にて取得した最大値Vgmaxが上限値Vgmaxth以下であり、且つ、図15のステップ1520にて取得した最小値Vgminが下限値Vgminth以上であるか否かを判定する。
このとき、サブFB学習値KSFBgが収束値SDVoxsfinalに接近していると、最大値Vgmaxは上限値Vgmaxth以下であり、且つ、最小値Vgminは下限値Vgminth以上となる。この場合、CPUはステップ1640にて「Yes」と判定してステップ1645に進み、statusを「2」に設定する。その後、CPUはステップ1695を経由して図15のステップ1540に進む。
このように、statusが「2」に設定・更新された状態において、CPUが図12のステップ1210に進むと、CPUはそのステップ1210にて、status2に対応付けられている「テーブルMapKlarge(Cmax,status)及びMapKsmall(Cmax,status)」に基いて大ゲインKlarge及び小ゲインKsmallをそれぞれ決定する。
その結果、中程度の値に設定されていた調整ゲインK(大ゲインKlarge及び小ゲインKsmall)が小さい値に設定・変更されるので、時間積分値SDVoxsの1回あたりの更新量K・DVoxs(の絶対値)が更に小さくなる。
従って、statusが「1」から「2」に変更されると、サブFB学習値KSFBg(時間積分値SDVoxs)の変化速度はstatusが「1」の場合よりも小さくなる。この段階においては、サブFB学習値KSFBg(時間積分値SDVoxs)は収束値SDVoxsfinalに十分に近づいている。従って、サブFB学習値KSFBg(時間積分値SDVoxs)は、外乱が発生しても収束値SDVoxsfinal近傍の値に安定して維持される。
一方、この時点以降、CPUが図15のルーチンのステップ1535を経由して図16のステップ1605に進むと、statusが「2」に設定されていることから、CPUはそのステップ1605にて「No」と判定し、ステップ1630にても「No」と判定してステップ1655に進む。
CPUはステップ1655にて、判定基準値Vkijunに「第2値ΔV1よりも小さい第3値ΔV2(ΔV2>0)」を加えた値(Vkijun+ΔV2)を上限値Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「第3値ΔV2」を減じた値(Vkijun−ΔV2)を下限値Vgminthとして設定する。なお、第3値ΔV2も特定値と称呼される。
次に、CPUはステップ1660に進み、図15のステップ1520にて取得した最大値Vgmaxが上限値Vgmaxth以下であり、且つ、図15のステップ1520にて取得した最小値Vgminが下限値Vgminth以上であるか否かを判定する。
このとき、サブFB学習値KSFBgが収束値SDVoxsfinal付近において安定していると、最大値Vgmaxは上限値Vgmaxth以下であり、且つ、最小値Vgminは下限値Vgminth以上となる。この場合、CPUはステップ1660にて「Yes」と判定してステップ1695に進む。
一方、何らかの理由(例えば、失火率が変化するなどの大きく空燃比を乱す外乱)により、最大値Vgmaxが「(Vkijun+ΔV2)である上限値Vgmaxth」よりも大きくなるか、又は、最小値Vgminが「(Vkijun−ΔV2)である下限値Vgminth」よりも小さくなると、CPUはステップ1660にて「No」と判定してステップ1665に進み、statusを「1」に設定する。この結果、大ゲインKlarge及び小ゲインKsmallが、それぞれの中程度の値になるので、サブFB学習値KSFBgの更新速度が増大する。
更に、statusが「1」に設定されている状態において、最大値Vgmaxが「(Vkijun+ΔV1)である上限値Vgmaxth」よりも大きくなるか、又は、最小値Vgminが「(Vkijun−ΔV1)である下限値Vgminth」よりも小さくなると、CPUはステップ1640にて「No」と判定してステップ1650に進み、statusを「0」に設定する。この結果、大ゲインKlarge及び小ゲインKsmallが、それぞれの大きい値になるので、サブFB学習値KSFBgの更新速度が更に増大する。
以上、説明したように、第1制御装置は、
所定の下流側フィードバック条件(サブフィードバック制御条件)が成立している期間において(図11の「Yes」との判定を参照。)、下流側空燃比センサ57の出力値Voxsと所定の下流側目標値Voxsrefとの偏差DVoxslowに所定の調整ゲインKを乗じた値を積算することにより時間積分値SDVoxslowを算出するとともに、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefに一致させるための補正量(サブフィードバック量KSFB)であって燃料噴射弁33から噴射される燃料の量をフィードバック補正するための補正量(サブフィードバック量KSFB)に含まれる「積分項Ki・SDVoxslow」を「前記算出された時間積分値SDVoxslow」に基いて算出し、前記積分項Ki・SDVoxslowに基いて前記補正量(サブフィードバック量KSFB)を算出する補正量算出手段(図11のルーチンのステップ1105乃至ステップ1150)と、
前記算出された積分項Ki・SDVoxslowに相関する値(即ち、時間積分値SDVoxslow)を学習値(サブFB学習値KSFBg)として取得する学習手段(図11のステップ1160及びステップ1165)と、
前記下流側フィードバック条件が成立している場合には少なくも前記補正量(サブフィードバック量KSFB)に基いて最終燃料噴射量を算出するとともに(図8のルーチンの特にステップ820)、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値(サブFB学習値KSFBg)に基いて最終燃料噴射量Fi(k)を算出し(図8のルーチンの特にステップ820、図11のステップ1175)、前記算出された最終燃料噴射量Fi(k)の燃料を燃料噴射弁33から噴射させる燃料噴射制御手段(図8のステップ870)と、
を備えた内燃機関の燃料噴射量制御装置である。
所定の下流側フィードバック条件(サブフィードバック制御条件)が成立している期間において(図11の「Yes」との判定を参照。)、下流側空燃比センサ57の出力値Voxsと所定の下流側目標値Voxsrefとの偏差DVoxslowに所定の調整ゲインKを乗じた値を積算することにより時間積分値SDVoxslowを算出するとともに、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefに一致させるための補正量(サブフィードバック量KSFB)であって燃料噴射弁33から噴射される燃料の量をフィードバック補正するための補正量(サブフィードバック量KSFB)に含まれる「積分項Ki・SDVoxslow」を「前記算出された時間積分値SDVoxslow」に基いて算出し、前記積分項Ki・SDVoxslowに基いて前記補正量(サブフィードバック量KSFB)を算出する補正量算出手段(図11のルーチンのステップ1105乃至ステップ1150)と、
前記算出された積分項Ki・SDVoxslowに相関する値(即ち、時間積分値SDVoxslow)を学習値(サブFB学習値KSFBg)として取得する学習手段(図11のステップ1160及びステップ1165)と、
前記下流側フィードバック条件が成立している場合には少なくも前記補正量(サブフィードバック量KSFB)に基いて最終燃料噴射量を算出するとともに(図8のルーチンの特にステップ820)、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値(サブFB学習値KSFBg)に基いて最終燃料噴射量Fi(k)を算出し(図8のルーチンの特にステップ820、図11のステップ1175)、前記算出された最終燃料噴射量Fi(k)の燃料を燃料噴射弁33から噴射させる燃料噴射制御手段(図8のステップ870)と、
を備えた内燃機関の燃料噴射量制御装置である。
更に、前記学習手段は、
前記学習値(サブFB学習値KSFBg)が、前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値(判定基準値Vkijun、図11のステップ1170、図15のステップ1540を参照。)に正の特定値(第1値ΔV0、第2値ΔV1及び第3値ΔV2の何れか)を加えた値である上限値Vgmaxthと、前記判定基準値から前記特定値を減じた値である下限値Vgminthとの間に所定時間に渡って存在している場合、前記学習値が収束した(即ち、サブFB学習値KSFBgの収束度が向上した)と判定するように構成されている(図15のステップ1515乃至ステップ1535、及び、図16のルーチンの例えばステップ1640、ステップ1660及びステップ1615を参照。)。
前記学習値(サブFB学習値KSFBg)が、前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値(判定基準値Vkijun、図11のステップ1170、図15のステップ1540を参照。)に正の特定値(第1値ΔV0、第2値ΔV1及び第3値ΔV2の何れか)を加えた値である上限値Vgmaxthと、前記判定基準値から前記特定値を減じた値である下限値Vgminthとの間に所定時間に渡って存在している場合、前記学習値が収束した(即ち、サブFB学習値KSFBgの収束度が向上した)と判定するように構成されている(図15のステップ1515乃至ステップ1535、及び、図16のルーチンの例えばステップ1640、ステップ1660及びステップ1615を参照。)。
加えて、前記補正量算出手段は、
前記学習値(サブFB学習値KSFBg)の増大速度の大きさと前記学習値(サブFB学習値KSFBg)の減少速度の大きさとの差の絶対値(図4のdV1とdV2との差の大きさ)が小さくなるように、前記学習値が増大する場合における前記調整ゲインKと前記学習値が減少する場合における前記調整ゲインKとを互いに相違する値に設定するように構成されている(図12のステップ1210及び図11のステップ1125乃至ステップ1135を参照。)。
前記学習値(サブFB学習値KSFBg)の増大速度の大きさと前記学習値(サブFB学習値KSFBg)の減少速度の大きさとの差の絶対値(図4のdV1とdV2との差の大きさ)が小さくなるように、前記学習値が増大する場合における前記調整ゲインKと前記学習値が減少する場合における前記調整ゲインKとを互いに相違する値に設定するように構成されている(図12のステップ1210及び図11のステップ1125乃至ステップ1135を参照。)。
これによれば、「リーン判定時(出力値Voxsが下流側目標値Voxsrefよりも小さい場合)における学習値の変化速度の大きさ」とリッチ判定時(出力値Voxsが下流側目標値Voxsrefよりも大きい場合)における学習値の変化速度の大きさ」とを近づけることができる。従って、サブFB学習値KSFBgが収束している場合、サブFB学習値KSFBgは「上限値Vgmaxthと下限値Vgminthとの間」に安定して存在するようになる。その結果、サブFB学習値KSFBgが収束していることを精度良く判定することができる。
更に、前記特定値(上限値Vgmaxth及び下限値Vgminthを決める、第1値ΔV0、第2値ΔV1及び第3値ΔV2)を過度に大きい値に設定する必要がないので、サブFB学習値KSFBgの収束度を精度良く判定することができる。
<第2実施形態>
次に、本発明の第2実施形態に係る制御装置(以下、「第2制御装置」とも称呼する。)について説明する。この第2制御装置は、以下の2点についてのみ第1制御装置と異なる。
次に、本発明の第2実施形態に係る制御装置(以下、「第2制御装置」とも称呼する。)について説明する。この第2制御装置は、以下の2点についてのみ第1制御装置と異なる。
第1の相違点は、第2制御装置においては、サブFB学習値KSFBg(時間積分値SDVoxslow)が増大するときの変化速度の大きさを決定する調整ゲインKと、サブFB学習値KSFBg(時間積分値SDVoxslow)が減少するときの変化速度の大きさを決定する調整ゲインKと、が互いに同一の値に設定される点である。
第2の相違点は、第2制御装置においては、図17に示したように、上限値Vgmaxthを定める特定値(判定基準値Vkijunと上限値Vgmaxthとの差の大きさである第1特定値)と、下限値Vgminthを定める特定値(判定基準値Vkijunと下限値Vgminthとの差の大きさである第2特定値)と、が互いに異なる値に設定される点である。
なお、第2制御装置においては、第1特定値のほうが第2特定値よりも大きくなるように、第1特定値及び第2特定値が設定される。換言すると、サブFB学習値KSFBgの変化速度の大きさが大きい側の限界値(上限値Vgmaxth)と判定基準値Vkijunとの差(第1特定値)は、サブFB学習値KSFBgの変化速度の大きさが小さい側の限界値(下限値Vgminth)と判定基準値Vkijunとの差(第2特定値)よりも大きい。
より具体的に述べると、図17において、status0の場合における第1特定値(ΔV0small)はstatus0の場合における第2特定値(ΔV0small)よりも大きい。status1の場合における第1特定値(ΔV1large)はstatus1の場合における第2特定値(ΔV1small)よりも大きい。更に、status2の場合における第1特定値(ΔV2large)はstatus2の場合における第2特定値(ΔV2small)よりも大きい。なお、第1特定値はstatusの値が大きくなるほど小さくなり(即ち、ΔV0large>ΔV1large>ΔV2large)、第2特定値はstatusの値が大きくなるほど小さくなる(即ち、ΔV0small>ΔV1small>ΔV2small)。
(実際の作動)
次に、第2制御装置の実際の作動について説明する。第2制御装置のCPUは、図8乃至図10、図13乃至図15、並びに、図18乃至図20に示したルーチンを実行する。図18及び図19は、図11及び図12にそれぞれ代わるルーチンである。図20は図16に代わるルーチンである。図8乃至図10、並びに、図13乃至図15に示したルーチンについては説明済みである。よって、以下、図18乃至図20に示したルーチンについて説明する。なお、図18乃至図20に示したステップのうち既に説明したステップと同一の処理を行うためのステップには、そのようなステップに付された符号と同一の符合が付されている。
次に、第2制御装置の実際の作動について説明する。第2制御装置のCPUは、図8乃至図10、図13乃至図15、並びに、図18乃至図20に示したルーチンを実行する。図18及び図19は、図11及び図12にそれぞれ代わるルーチンである。図20は図16に代わるルーチンである。図8乃至図10、並びに、図13乃至図15に示したルーチンについては説明済みである。よって、以下、図18乃至図20に示したルーチンについて説明する。なお、図18乃至図20に示したステップのうち既に説明したステップと同一の処理を行うためのステップには、そのようなステップに付された符号と同一の符合が付されている。
第2制御装置のCPUは、サブフィードバック量KSFB及びサブFB学習値KSFBgを算出するために図18に示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。この図18のルーチンは、図11のルーチンのステップ1125乃至ステップ1135を、ステップ1810に置換した点のみにおいて、図11のルーチンと相違している。従って、以下、この相違点のみについて説明する。
CPUは、ステップ1810に進むと調整ゲインKを読み込む。調整ゲインKは、後述する図19に示したルーチンにより決定されている。
CPUは、調整ゲインKを決定するために、図19にフローチャートにより示したルーチンを所定時間が経過する毎に繰り返し実行するようになっている。この図19のルーチンは、図12のルーチンのステップ1210を、ステップ1910に置換した点のみにおいて、図12のルーチンと相違している。従って、以下、この相違点のみについて説明する。
現時点が、statusの初期化設定がなされた直後であるか、又は、statusが更新された直後であると、CPUは図19のステップ1205にて「Yes」と判定してステップ1910に進み、調整ゲインKをテーブルMapK(Cmax,status)に基いて決定する。
図19のステップ1910内に記載したように、テーブルMapK(Cmax,status)によれば、最大酸素吸蔵量Cmaxが一定の場合において、status0での調整ゲインKがstatus1での調整ゲインKよりも大きく、且つ、status1での調整ゲインKがstatus2での調整ゲインKよりも大きくなるように、調整ゲインKが決定される。更に、テーブルMapK(Cmax,status)によれば、調整ゲインKは、各statusにおいて最大酸素吸蔵量Cmaxが大きいほど、より小さい値となるように決定される。
更に、CPUは、図15のステップ1535に進んだとき、図20に示したルーチンを実行するようになっている。この図20のルーチンは、図16のルーチンのステップ1610、ステップ1635及びステップ1655を、ステップ2010、ステップ2035及びステップ2055にそれぞれ置換した点のみにおいて、図16のルーチンと相違している。従って、以下、この相違点のみについて説明する。
CPUはstatusが「0」である場合ステップ2010に進み、判定基準値Vkijunに「正の所定値ΔV0large」を加えた値(Vkijun+ΔV0large)を上限値(大側閾値)Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「正の所定値ΔV0small」を減じた値(Vkijun−ΔV0small)を下限値(小側閾値)Vgminthとして設定する。所定値ΔV0largeは所定値ΔV0smallよりも大きい。
この結果、図17に示したように、上限値Vgmaxthと判定基準値Vkijunとの差の大きさ(ΔV0large)は、下限値Vgminthと判定基準値Vkijunとの差の大きさ(ΔV0small)よりも大きくなる。
CPUはstatusが「1」である場合ステップ2035に進み、判定基準値Vkijunに「正の所定値ΔV1large」を加えた値(Vkijun+ΔV1large)を上限値(大側閾値)Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「正の所定値ΔV1small」を減じた値(Vkijun−ΔV1small)を下限値(小側閾値)Vgminthとして設定する。所定値ΔV1largeは所定値ΔV1smallよりも大きい。
この結果、図17に示したように、上限値Vgmaxthと判定基準値Vkijunとの差の大きさ(ΔV1large)は、下限値Vgminthと判定基準値Vkijunとの差の大きさ(ΔV1small)よりも大きくなる。
CPUはstatusが「2」である場合ステップ2055に進み、判定基準値Vkijunに「正の所定値ΔV2large」を加えた値(Vkijun+ΔV2large)を上限値(大側閾値)Vgmaxthとして設定する。更に、CPUは、判定基準値Vkijunから「正の所定値ΔV2small」を減じた値(Vkijun−ΔV2small)を下限値(小側閾値)Vgminthとして設定する。所定値ΔV2largeは所定値ΔV2smallよりも大きい。
この結果、図17に示したように、上限値Vgmaxthと判定基準値Vkijunとの差の大きさ(ΔV2large)は、下限値Vgminthと判定基準値Vkijunとの差の大きさ(ΔV2small)よりも大きくなる。
なお、所定値ΔV0largeは所定値ΔV1largeよりも大きく、所定値ΔV1largeは所定値ΔV2largeよりも大きい。所定値ΔV0large、所定値ΔV1large及び所定値ΔV2largeは「第1特定値」と総称される。また、所定値ΔV0smallは所定値ΔV1smallよりも大きく、所定値ΔV1smallは所定値ΔV2smallよりも大きい。所定値ΔV0small、所定値ΔV1small及び所定値ΔV2smallは「第2特定値」と総称される。
以上、説明したように、第2制御装置は、
下流側空燃比センサ57の出力値Voxsと所定の下流側目標値Voxsrefとの偏差DVoxslowに所定の調整ゲインKを乗じた値を積算することにより時間積分値SDVoxslowを算出するとともに、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefに一致させるための補正量(サブフィードバック量KSFB)であって燃料噴射弁33から噴射される燃料の量をフィードバック補正するための補正量(サブフィードバック量KSFB)に含まれる「積分項Ki・SDVoxslow」を「前記算出された時間積分値SDVoxslow」に基いて算出し、前記積分項Ki・SDVoxslowに基いて前記補正量(サブフィードバック量KSFB)を算出する補正量算出手段(図11のルーチンのステップ1105乃至ステップ1150)と、
前記算出された積分項Ki・SDVoxslowに相関する値(即ち、時間積分値SDVoxslow)を学習値(サブFB学習値KSFBg)として取得する学習手段(図11のステップ1160及びステップ1165)と、
前記下流側フィードバック条件が成立している場合には少なくも前記補正量(サブフィードバック量KSFB)に基いて最終燃料噴射量Fi(k)を算出するとともに(図8のルーチンの特にステップ820)、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値(サブFB学習値KSFBg)に基いて最終燃料噴射量Fi(k)を算出し(図8のルーチンの特にステップ820、図11のステップ1175)、前記算出された最終燃料噴射量Fi(k)の燃料を燃料噴射弁33から噴射させる燃料噴射制御手段(図8のステップ870)と、
を備える。
下流側空燃比センサ57の出力値Voxsと所定の下流側目標値Voxsrefとの偏差DVoxslowに所定の調整ゲインKを乗じた値を積算することにより時間積分値SDVoxslowを算出するとともに、下流側空燃比センサ57の出力値Voxsを下流側目標値Voxsrefに一致させるための補正量(サブフィードバック量KSFB)であって燃料噴射弁33から噴射される燃料の量をフィードバック補正するための補正量(サブフィードバック量KSFB)に含まれる「積分項Ki・SDVoxslow」を「前記算出された時間積分値SDVoxslow」に基いて算出し、前記積分項Ki・SDVoxslowに基いて前記補正量(サブフィードバック量KSFB)を算出する補正量算出手段(図11のルーチンのステップ1105乃至ステップ1150)と、
前記算出された積分項Ki・SDVoxslowに相関する値(即ち、時間積分値SDVoxslow)を学習値(サブFB学習値KSFBg)として取得する学習手段(図11のステップ1160及びステップ1165)と、
前記下流側フィードバック条件が成立している場合には少なくも前記補正量(サブフィードバック量KSFB)に基いて最終燃料噴射量Fi(k)を算出するとともに(図8のルーチンの特にステップ820)、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値(サブFB学習値KSFBg)に基いて最終燃料噴射量Fi(k)を算出し(図8のルーチンの特にステップ820、図11のステップ1175)、前記算出された最終燃料噴射量Fi(k)の燃料を燃料噴射弁33から噴射させる燃料噴射制御手段(図8のステップ870)と、
を備える。
更に、第2制御装置における前記学習手段は、前記学習値(サブFB学習値KSFBg)が、「前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値Vkijun」に正の第1特定値(例えば、ΔV1large)を加えた値である上限値Vgmaxthと、判定基準値Vkijunから正の第2特定値(例えば、ΔV1small)を減じた値である下限値Vgminthと、の間に所定時間に渡って存在している場合、前記学習値(サブFB学習値KSFBg)が収束した(即ち、サブFB学習値KSFBgの収束度が上昇した)と判定するように構成される(例えば、図20のステップ2035及びステップ1640を参照。)。
加えて、前記学習手段は、前記学習値の増大速度の大きさが前記学習値の減少速度の大きさよりも大きい場合(本例は、この場合に該当する。)には、前記第1特定値を前記第2特定値よりも大きい値に設定する。或いは、前記学習手段は、前記学習値の減少速度の大きさが前記学習値の増大速度の大きさよりも大きい場合(例えば、下流側目標値Voxsrefが「理論空燃比に相当する値Vstよりも小さい値」に設定された場合)には、前記第2特定値を前記第1特定値よりも大きい値に設定する。
即ち、上限値Vgmaxth及び下限値Vgminthのうち「学習値(サブFB学習値KSFBg)の変化速度の大きさが大きい側の閾値(本例において、上限値Vgmaxth)」は「学習値の変化速度の大きさが小さい側の閾値(本例において、下限値Vgminth)」よりも判定基準値Vkijunから大きく乖離する値となる。従って、学習値(サブFB学習値KSFBg)が収束していれば、学習値の増大速度の大きさと減少速度の大きさが異なる場合であっても、学習値は「上限値Vgmaxthと下限値Vgminthとの間」に存在するようになる。その結果、学習値が収束していることを精度良く判定することができる。
以上、説明したように、本発明の各実施形態に係る燃料噴射量制御装置は、サブFB学習値KSFBgの収束度を精度良く判定することができ、その結果、サブFB学習値KSFBgの更新速度を適切な値に設定することができる。従って、サブFB学習値KSFBgを適切な値(収束すべき値)に迅速に近づけることができるとともに、サブFB学習値KSFBgを適切な値の近傍に安定して維持することができる。
なお、本発明は上記実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。例えば、サブフィードバック制御は、サブフィードバック量により上流側空燃比センサ56の出力値Vabyfsを補正する周知の態様であってもよい。加えて、上記実施形態における時間積分値SDVoxslowは、出力偏差量DVoxsをローパスフィルタ処理した値DVoxslowに所定の調整ゲインKを乗じた値を積算することにより求められていたが、ローパスフィルタ処理を行わない出力偏差量DVoxsに所定の調整ゲインKを乗じた値を積算することにより求められてもよい。
更に、第1制御装置の特徴(即ち、調整ゲインKを、サブFB学習値KSFBgの変化速度が増大する場合と減少する場合とで相違させること)と、第2制御装置の特徴(上限値Vgmaxthと判定基準値Vkijunとの差の大きさと、下限値Vgminthと判定基準値Vkijunとの差の大きさと、を相違させること)と、の両方を一つの制御装置において採用してもよい。更に、サブFB学習値KSFBgは、サブフィードバック量KSFBの積分項Ki・SDVoxslowであってもよく、サブフィードバック量KSFBにローパスフィルタ処理を施した値であってもよい。即ち、サブFB学習値KSFBgは、サブフィードバック量KSFBの定常成分に応じた値(サブフィードバック量KSFBの積分項に相関する値)であればよい。
Claims (4)
- 内燃機関に対して燃料を噴射する燃料噴射弁と、
前記機関の排気通路に配設された触媒よりも下流の位置に配設されるとともに同触媒から流出するガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
所定の下流側フィードバック条件が成立している期間において、前記下流側空燃比センサの出力値と所定の下流側目標値との偏差に所定の調整ゲインを乗じた値を積算することにより時間積分値を算出するとともに、前記下流側空燃比センサの出力値を前記下流側目標値に一致させるための補正量であって前記燃料噴射弁から噴射される燃料の量をフィードバック補正するための補正量に含まれる積分項を前記算出された時間積分値に基いて算出し、前記積分項に基いて前記補正量を算出する補正量算出手段と、
前記算出された積分項に相関する値を学習値として取得する学習手段と、
前記下流側フィードバック条件が成立している場合には少なくも前記補正量に基いて最終燃料噴射量を算出するとともに、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値に基いて最終燃料噴射量を算出し、前記算出された最終燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
を備えた内燃機関の燃料噴射量制御装置において、
前記学習手段は、
前記学習値が、前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値に正の特定値を加えた値である上限値と前記判定基準値から前記特定値を減じた値である下限値との間に所定時間に渡って存在している場合、前記学習値が収束したと判定するように構成され
前記補正量算出手段は、
前記学習値の増大速度の大きさと前記学習値の減少速度の大きさとの差の絶対値が小さくなるように、前記学習値が増大する場合における前記調整ゲインと前記学習値が減少する場合における前記調整ゲインとを互いに相違する値に設定するように構成された、
燃料噴射量制御装置。 - 請求項1に記載の内燃機関の燃料噴射量制御装置において、
前記学習手段は、
前記学習値が収束したと判定されていない場合の前記調整ゲインを、前記学習値が収束したと判定された場合の前記調整ゲインよりも大きい値に設定するように構成された燃料噴射量制御装置。 - 内燃機関に対して燃料を噴射する燃料噴射弁と、
前記機関の排気通路に配設された触媒よりも下流の位置に配設されるとともに同触媒から流出するガスの空燃比に応じた出力値を出力する下流側空燃比センサと、
所定の下流側フィードバック条件が成立している期間において、前記下流側空燃比センサの出力値と所定の下流側目標値との偏差に所定の調整ゲインを乗じた値を積算することにより時間積分値を算出するとともに、前記下流側空燃比センサの出力値を前記下流側目標値に一致させるための補正量であって前記燃料噴射弁から噴射される燃料の量をフィードバック補正するための補正量に含まれる積分項を前記算出された時間積分値に基いて算出し、前記積分項に基いて前記補正量を算出する補正量算出手段と、
前記算出された積分項に相関する値を学習値として取得する学習手段と、
前記下流側フィードバック条件が成立している場合には少なくも前記補正量に基いて最終燃料噴射量を算出するとともに、前記下流側フィードバック条件が成立していない場合には少なくとも前記学習値に基いて最終燃料噴射量を算出し、前記算出された最終燃料噴射量の燃料を前記燃料噴射弁から噴射させる燃料噴射制御手段と、
を備えた内燃機関の燃料噴射量制御装置において、
前記学習手段は、
前記学習値が、前記学習値の過去の値に基いて算出される同学習値の過去の値の変動中心である判定基準値に正の第1特定値を加えた値である上限値と前記判定基準値から正の第2特定値を減じた値である下限値との間に所定時間に渡って存在している場合、前記学習値が収束したと判定するように構成されるとともに、
前記学習値の増大速度の大きさが前記学習値の減少速度の大きさよりも大きい場合には前記第1特定値を前記第2特定値よりも大きい値に設定し、且つ、前記学習値の減少速度の大きさが前記学習値の増大速度の大きさよりも大きい場合には前記第2特定値を前記第1特定値よりも大きい値に設定してなる燃料噴射量制御装置。 - 請求項3に記載の内燃機関の燃料噴射量制御装置において、
前記学習手段は、
前記学習値が収束したと判定されていない場合の前記調整ゲインを、前記学習値が収束したと判定された場合の前記調整ゲインよりも大きい値に設定するように構成された燃料噴射量制御装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2010/062990 WO2012014328A1 (ja) | 2010-07-27 | 2010-07-27 | 内燃機関の燃料噴射量制御装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP4978749B2 true JP4978749B2 (ja) | 2012-07-18 |
JPWO2012014328A1 JPWO2012014328A1 (ja) | 2013-09-09 |
Family
ID=45529570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011502970A Expired - Fee Related JP4978749B2 (ja) | 2010-07-27 | 2010-07-27 | 内燃機関の燃料噴射量制御装置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20130184973A1 (ja) |
JP (1) | JP4978749B2 (ja) |
CN (1) | CN102472184B (ja) |
DE (1) | DE112010005772B4 (ja) |
WO (1) | WO2012014328A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103047066B (zh) * | 2012-12-11 | 2015-02-04 | 潍柴动力股份有限公司 | 一种喷射间隔测试方法及系统 |
JP6274401B2 (ja) * | 2013-12-13 | 2018-02-07 | 三菱自動車工業株式会社 | エンジンの燃料噴射制御装置 |
JP6534604B2 (ja) * | 2015-11-19 | 2019-06-26 | 愛三工業株式会社 | 蒸発燃料処理装置 |
JP6544292B2 (ja) * | 2016-05-06 | 2019-07-17 | 株式会社デンソー | 燃料噴射制御装置 |
US10018143B2 (en) * | 2016-08-19 | 2018-07-10 | Ford Global Technologies, Llc | Methods and system for engine control |
US10018144B2 (en) * | 2016-08-19 | 2018-07-10 | Ford Global Technologies, Llc | Methods and system for engine control |
US11261814B1 (en) * | 2021-01-19 | 2022-03-01 | Ford Global Technologies, Llc | System and method for detecting engine misfire |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007255355A (ja) * | 2006-03-24 | 2007-10-04 | Toyota Motor Corp | 内燃機関の燃料噴射制御装置 |
JP2008106712A (ja) * | 2006-10-27 | 2008-05-08 | Toyota Motor Corp | 内燃機関の空燃比制御装置 |
JP2009162139A (ja) * | 2008-01-08 | 2009-07-23 | Toyota Motor Corp | 内燃機関の空燃比制御装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2812023B2 (ja) | 1991-11-12 | 1998-10-15 | トヨタ自動車株式会社 | 触媒劣化度検出装置 |
JP3444675B2 (ja) * | 1994-12-08 | 2003-09-08 | 株式会社日立ユニシアオートモティブ | 内燃機関の空燃比学習制御装置 |
JPH08261045A (ja) * | 1995-03-27 | 1996-10-08 | Toyota Motor Corp | 内燃機関の空燃比制御装置 |
JP3674292B2 (ja) | 1997-06-19 | 2005-07-20 | 株式会社デンソー | 空燃比検出装置 |
JP3855483B2 (ja) | 1998-08-25 | 2006-12-13 | 株式会社デンソー | 積層型空燃比センサ素子 |
JP2003314334A (ja) * | 2002-04-23 | 2003-11-06 | Toyota Motor Corp | 内燃機関の空燃比制御装置 |
JP3963130B2 (ja) * | 2002-06-27 | 2007-08-22 | トヨタ自動車株式会社 | 触媒劣化判定装置 |
JP2004069547A (ja) | 2002-08-07 | 2004-03-04 | Toyota Motor Corp | 空燃比センサの制御装置 |
WO2004094800A1 (ja) * | 2003-04-22 | 2004-11-04 | Toyota Jidosha Kabushiki Kaisha | 内燃機関の空燃比制御装置 |
JP5002171B2 (ja) * | 2006-03-14 | 2012-08-15 | 日産自動車株式会社 | 内燃機関の空燃比制御装置 |
JP5095973B2 (ja) * | 2006-09-25 | 2012-12-12 | 本田技研工業株式会社 | 多種類燃料エンジン用燃料噴射制御装置 |
JP4221025B2 (ja) * | 2006-12-25 | 2009-02-12 | 三菱電機株式会社 | 内燃機関の空燃比制御装置 |
JP2009074388A (ja) * | 2007-09-19 | 2009-04-09 | Toyota Motor Corp | 多気筒内燃機関の気筒間空燃比ばらつき異常検出装置 |
JP4807359B2 (ja) * | 2008-01-30 | 2011-11-02 | トヨタ自動車株式会社 | 内燃機関の空燃比制御装置 |
-
2010
- 2010-07-27 JP JP2011502970A patent/JP4978749B2/ja not_active Expired - Fee Related
- 2010-07-27 WO PCT/JP2010/062990 patent/WO2012014328A1/ja active Application Filing
- 2010-07-27 CN CN201080027767.3A patent/CN102472184B/zh not_active Expired - Fee Related
- 2010-07-27 DE DE112010005772.9T patent/DE112010005772B4/de not_active Expired - Fee Related
- 2010-07-27 US US13/812,415 patent/US20130184973A1/en not_active Abandoned
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007255355A (ja) * | 2006-03-24 | 2007-10-04 | Toyota Motor Corp | 内燃機関の燃料噴射制御装置 |
JP2008106712A (ja) * | 2006-10-27 | 2008-05-08 | Toyota Motor Corp | 内燃機関の空燃比制御装置 |
JP2009162139A (ja) * | 2008-01-08 | 2009-07-23 | Toyota Motor Corp | 内燃機関の空燃比制御装置 |
Also Published As
Publication number | Publication date |
---|---|
CN102472184B (zh) | 2015-04-01 |
JPWO2012014328A1 (ja) | 2013-09-09 |
DE112010005772T8 (de) | 2013-07-18 |
CN102472184A (zh) | 2012-05-23 |
US20130184973A1 (en) | 2013-07-18 |
WO2012014328A1 (ja) | 2012-02-02 |
DE112010005772T5 (de) | 2013-05-08 |
DE112010005772B4 (de) | 2015-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7484504B2 (en) | Air-fuel ratio control system and method for internal combustion engine | |
JP4957559B2 (ja) | 内燃機関の空燃比制御装置 | |
JP5644291B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP4978749B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP4315179B2 (ja) | 内燃機関の空燃比制御装置 | |
JP4039380B2 (ja) | 内燃機関の空燃比制御装置 | |
JP2004257377A (ja) | 内燃機関の排気浄化装置 | |
JP5499978B2 (ja) | 多気筒内燃機関の燃料噴射量制御装置 | |
JP4380625B2 (ja) | 内燃機関の空燃比制御装置 | |
JP5293889B2 (ja) | 内燃機関の空燃比制御装置 | |
JP4947019B2 (ja) | 内燃機関の空燃比制御装置 | |
JP4807359B2 (ja) | 内燃機関の空燃比制御装置 | |
JP4280931B2 (ja) | 内燃機関の空燃比制御装置 | |
JP3826997B2 (ja) | 内燃機関の空燃比制御装置 | |
JP5640662B2 (ja) | 内燃機関の燃料噴射量制御装置 | |
JP5770585B2 (ja) | 内燃機関の空燃比制御装置 | |
JP2006112274A (ja) | 内燃機関の空燃比制御装置 | |
JP4888397B2 (ja) | 内燃機関の空燃比制御装置 | |
JP2012077740A (ja) | 内燃機関の燃料噴射量制御装置 | |
JP4770589B2 (ja) | 内燃機関の空燃比制御装置 | |
JP2008106712A (ja) | 内燃機関の空燃比制御装置 | |
JP2007278186A (ja) | 内燃機関の空燃比制御装置 | |
JP2007247574A (ja) | 内燃機関の空燃比制御装置 | |
JPWO2005085616A1 (ja) | 多気筒内燃機関の吸気制御装置 | |
JP2008215106A (ja) | 内燃機関の空燃比制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20120321 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20120403 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20150427 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |