(57)【要約】【課題】学習値の更新の完了までに要する時間を短縮することができる内燃機関の制御装置を提供すること。【解決手段】制御装置３０は、空燃比偏差を入力とするフィードバック制御によって気筒内に供給する燃料量を調整する燃料量制御部１３０と、リーン期間処理とリッチ期間処理とを交互に繰り返す目標空燃比調整部１２０と、空燃比ＡＦの定常的なずれを補償する学習値Ｘを更新する学習値更新部１４０とを備える。学習値更新部１４０は、酸素量偏差ＤＯＡの絶対値が判定値以下である場合、リーン期間処理及びリッチ期間処理のうちの一方の処理から他方の処理に切り替わるときのみ学習値Ｘを更新する。一方、学習値更新部１４０は、酸素量偏差ＤＯＡの絶対値が判定値よりも大きい場合、一方の処理から他方の処理に切り替わるとき、及び、他方の処理から一方の処理に切り替わるときの双方で学習値Ｘを更新する。【選択図】図２
2020112057.tif 000002
【特許請求の範囲】
【請求項１】
酸素吸蔵能を有する触媒が排気通路に設けられており、前記触媒に吸蔵されている酸素を利用して前記排気通路を流れる排気を浄化する内燃機関に適用され、
前記排気通路における前記触媒よりも上流側に配置されている上流側空燃比センサによって検出される空燃比である空燃比検出値と目標空燃比との偏差である空燃比偏差を入力とするフィードバック制御によって、前記内燃機関の気筒内に供給する燃料量を調整する燃料量制御部と、
前記目標空燃比を理論空燃比よりもリーン側の値とするリーン期間処理と、前記目標空燃比を理論空燃比よりもリッチ側の値とするリッチ期間処理とを交互に繰り返す目標空燃比調整部と、
前記空燃比検出値の定常的なずれを補償する学習値を更新する学習値更新部と、を備え、
前記学習値を用い、前記リーン期間処理中に前記触媒に吸蔵される酸素の量である酸素吸蔵量と前記リッチ期間処理中に前記触媒から脱離する酸素の量である酸素脱離量との乖離を是正する内燃機関の制御装置において、
前記学習値更新部は、
前記酸素吸蔵量と前記酸素脱離量との偏差である酸素量偏差の絶対値が判定値未満である場合、前記リーン期間処理及び前記リッチ期間処理のうちの一方の処理から他方の処理に切り替わるときには前記学習値を更新する一方、前記他方の処理から前記一方の処理に切り替わるときには前記学習値を更新せず、
前記酸素量偏差の絶対値が前記判定値以上である場合、前記一方の処理から前記他方の処理に切り替わるとき、及び、前記他方の処理から前記一方の処理に切り替わるときの双方で前記学習値を更新する
ことを特徴とする内燃機関の制御装置。
【請求項２】
前記学習値更新部は、前記学習値の一回の更新量を、前記酸素量偏差と係数との積の絶対値と規定値とのうちの小さい方の値とする
請求項１に記載の内燃機関の制御装置。
【請求項３】
前記学習値更新部は、前記酸素量偏差の絶対値が前記判定値以上である場合、前記学習値の一回の更新量を規定値とする
請求項１に記載の内燃機関の制御装置。
【請求項４】
前記学習値更新部は、前記酸素量偏差の絶対値が前記判定値未満である場合、前記学習値の一回の更新量を、前記酸素量偏差の絶対値が小さいほど小さくする
請求項３に記載の内燃機関の制御装置。
【請求項５】
前記内燃機関は、前記排気通路における前記触媒よりも下流側に下流側空燃比センサが配置されるものであり、
前記学習値更新部は、前記リーン期間処理の実行中において前記下流側空燃比センサによって検出される排気空燃比が理論空燃比よりもリーン側の値であるときに前記リーン期間処理から前記リッチ期間処理に切り替え、前記リッチ期間処理の実行中において前記排気空燃比が理論空燃比よりもリッチ側の値であるときに前記リッチ期間処理から前記リーン期間処理に切り替える
請求項１〜請求項４のうち何れか一項に記載の内燃機関の制御装置。
【請求項６】
前記学習値更新部は、理論空燃比を補正する値として前記学習値を更新する
請求項１〜請求項５のうち何れか一項に記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、酸素吸蔵能を有する触媒が排気通路に設けられており、当該触媒に吸蔵されている酸素を利用して排気通路を流れる排気を浄化する内燃機関に適用される内燃機関の制御装置に関する。
【背景技術】
【０００２】
特許文献１には、空燃比検出値が目標空燃比となるように燃料噴射弁の燃料噴射量を調整する内燃機関の制御装置の一例が記載されている。空燃比検出値は、排気通路における触媒よりも上流側に配置されている上流側空燃比センサによって検出されるセンサ値である。こうした空燃比検出値と実空燃比との間に、定常的なずれが生じることがある。実空燃比とは、実際の空燃比のことである。そのため、特許文献１に記載の制御装置では、こうした空燃比検出値と実空燃比との定常的なずれを補償する補償制御と、当該定常的なずれを補償するための学習値を更新する学習制御とが実施される。
【０００３】
学習制御では、目標空燃比を理論空燃比よりもリーン側の値とするとともに、当該期間中に触媒に吸蔵された酸素の量である酸素吸蔵量を導出するリーン期間処理と、目標空燃比を理論空燃比よりもリッチ側の値とするとともに、当該期間中に触媒から脱離した酸素の量である酸素脱離量を導出するリッチ期間処理とが交互に繰り返される。リーン期間処理の実施中において、排気通路における触媒よりも下流側に配置されている下流側空燃比センサによって検出されるセンサ値である排気空燃比が理論空燃比よりもリーン側の値になると、制御装置で実行される処理がリーン期間処理からリッチ期間処理に切り替えられる。また、リッチ期間処理の実施中において、排気空燃比が理論空燃比よりもリッチ側の値になると、制御装置で実行される処理がリッチ期間処理からリーン期間処理に切り替えられる。
【０００４】
上記の定常的なずれが大きい場合、触媒は酸素吸蔵量が大きすぎたり、小さすぎたりしている状態になっている。そのため、上記の定常的なずれが大きいと、リッチ期間処理中に導出される酸素脱離量とリーン期間処理中に導出される酸素吸蔵量との偏差である酸素量偏差の絶対値が大きくなる。学習制御では、リーン期間処理及びリッチ期間処理のうちの一方の処理から他方の処理に切り替わるときに、酸素量偏差の絶対値に基づいて学習値が更新される。一方、特許文献１に記載の学習制御では、他方の処理から一方の処理に切り替わるときには、学習値が更新されない。なお、学習値は、燃料噴射量や目標空燃比を補正するための値である。
【０００５】
そして、補償制御では、学習制御によって更新された学習値を基に、燃料噴射量や目標空燃比が補正される。こうした補償制御によって、酸素量偏差が許容範囲に収まるようになると、学習制御が終了される、すなわち学習値の更新が完了する。なお、学習制御の終了後でも、補償制御は継続される、すなわち学習値を用いた上記補正が継続される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１５−７１９６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記の学習制御では、リーン期間処理とリッチ期間処理とが１セット実行されると、学習値が更新されることとなる。そのため、リーン期間処理の実行期間やリッチ期間処理の実行期間が長いと、学習値の更新間隔が長くなる。したがって、上記の定常的なずれが比較的大きい状況下で学習制御が開始される場合、学習値の更新の完了までに要する時間が長くなってしまう。
【課題を解決するための手段】
【０００８】
上記課題を解決するための内燃機関の制御装置は、酸素吸蔵能を有する触媒が排気通路に設けられており、触媒に吸蔵されている酸素を利用して排気通路を流れる排気を浄化する内燃機関に適用される。この制御装置は、排気通路における触媒よりも上流側に配置されている上流側空燃比センサによって検出される空燃比である空燃比検出値と目標空燃比との偏差である空燃比偏差を入力とするフィードバック制御によって、内燃機関の気筒内に供給する燃料量を調整する燃料量制御部と、目標空燃比を理論空燃比よりもリーン側の値とするリーン期間処理と、目標空燃比を理論空燃比よりもリッチ側の値とするリッチ期間処理とを交互に繰り返す目標空燃比調整部と、空燃比検出値の定常的なずれを補償する学習値を更新する学習値更新部と、を備えている。そして、制御装置は、当該学習値を用い、リーン期間処理中に触媒に吸蔵される酸素の量である酸素吸蔵量とリッチ期間処理中に触媒から脱離する酸素の量である酸素脱離量との乖離を是正する。学習値更新部は、酸素吸蔵量と酸素脱離量との偏差である酸素量偏差の絶対値が判定値未満である場合、リーン期間処理及びリッチ期間処理のうちの一方の処理から他方の処理に切り替わるときには学習値を更新する一方、他方の処理から一方の処理に切り替わるときには前記学習値を更新しない。また、学習値更新部は、酸素量偏差の絶対値が判定値以上である場合、一方の処理から他方の処理に切り替わるとき、及び、他方の処理から一方の処理に切り替わるときの双方で前記学習値を更新する。
【０００９】
上記構成では、酸素量偏差の絶対値が判定値未満である場合では、リーン期間処理からリッチ期間処理に切り替わるとき、及び、リッチ期間処理からリーン期間処理に切り替わるときのうちの一方のみで学習値が更新されるものの、上記酸素量偏差の絶対値が判定値以上である場合では、リーン期間処理からリッチ期間処理に切り替わるとき、及び、リッチ期間処理からリーン期間処理に切り替わるときの双方で学習値が更新される。その結果、酸素量偏差の絶対値が大きい状態で学習値の更新する制御を開始する場合にあっては、上記酸素量偏差の大きさに拘わらず、リーン期間処理及びリッチ期間処理のうちの一方の処理から他方の処理に切り替わるときのみで学習値を更新する場合と比較し、学習値の更新機会を増やすことができる。これにより、学習値の更新の完了までに要する時間を短縮することができる。
【００１０】
上記内燃機関の制御装置の一態様において、学習値更新部は、学習値の一回の更新量を、酸素量偏差と係数との積の絶対値と規定値とのうちの小さい方の値とする。この構成によれば、学習値を更新するに際し、上記酸素量偏差の絶対値が大きいほど学習値の一回の更新量を大きくすることができる。しかし、上記積の絶対値が規定値よりも大きいときには、学習値の一回の更新量が規定値となる。これにより、学習値の一回の更新量が大きくなりすぎることを抑制できる。その結果、学習値を更新するに際してハンチングの発生を抑制できる。
【００１１】
上記酸素量偏差の絶対値が判定値以上である場合、空燃比検出値と実空燃比との定常的なずれ量が大きいと判断できるため、学習値の更新完了に要する時間を短縮するためには学習値の一回の更新量を大きくすることが望ましい。そこで、学習値更新部は、酸素量偏差の絶対値が判定値以上である場合、学習値の一回の更新量を規定値としてもよい。
【００１２】
一方、上記酸素量偏差の絶対値が判定値未満である場合、空燃比検出値と実空燃比との定常的なずれ量がそれほど大きくないと判断できるため、上記酸素量偏差の絶対値が小さいほど、学習値の一回の更新量を小さくすることが望ましい。そこで、学習値更新部は、酸素量偏差の絶対値が判定値未満である場合、学習値の一回の更新量を、酸素量偏差の絶対値が小さいほど小さくしてもよい。
【００１３】
上記制御装置の一態様が適用される内燃機関は、排気通路における触媒よりも下流側に下流側空燃比センサが配置されるものである。当該制御装置の一態様において、学習値更新部は、リーン期間処理の実行中において下流側空燃比センサによって検出される排気空燃比が理論空燃比よりもリーン側の値であるときにリーン期間処理からリッチ期間処理に切り替え、リッチ期間処理の実行中において排気空燃比が理論空燃比よりもリッチ側の値であるときにリッチ期間処理からリーン期間処理に切り替える。
【００１４】
リーン期間処理の実行中に排気空燃比が理論空燃比よりもリーン側の値になった場合、当該リーン期間処理では、触媒にさらに酸素を吸蔵させることができないと判断することができる。つまり、触媒の酸素吸蔵量が上限に達していると判断できる。また、リッチ期間処理の実行中に排気空燃比が理論空燃比よりもリッチ側の値になった場合、当該リッチ期間処理では、触媒に酸素が吸蔵されていないと判断することができる。つまり、酸素脱離量は最大値となっている。上記構成によれば、このように値の比較的大きい酸素吸蔵量及び酸素脱離量を用い、酸素量偏差が算出される。
【００１５】
例えば、学習値更新部は、理論空燃比を補正する値として学習値を更新する。
【図面の簡単な説明】
【００１６】
【図１】実施形態の内燃機関の制御装置と、同制御装置によって制御される内燃機関とを示す構成図。
【図２】同制御装置の機能構成を示すブロック図。
【図３】同制御装置の目標空燃比調整部が実行する処理ルーチンを説明するフローチャート。
【図４】同制御装置の吸蔵量導出部が実行する処理ルーチンを説明するフローチャート。
【図５】同制御装置の脱離量導出部が実行する処理ルーチンを説明するフローチャート。
【図６】同制御装置の学習値算出部が実行する処理ルーチンを説明するフローチャート。
【図７】学習更新値と酸素量偏差との関係を示すマップ。
【図８】空燃比と実空燃比との定常的なずれを補償する処理を実行する際のタイミングチャート。
【図９】変更例において、学習値を導出する際に実行される処理ルーチンを説明するフローチャート。
【発明を実施するための形態】
【００１７】
以下、内燃機関の制御装置の一実施形態を図１〜図８に従って説明する。
図１には、本実施形態の制御装置３０と、制御装置３０によって制御される内燃機関１０とが図示されている。内燃機関１０は、複数の気筒１１を備えている。図１では、気筒１１は１つのみ図示されている。各気筒１１内には、往復動するピストン１２が設けられている。各気筒１１内においてピストン１２よりも上方の空間が燃焼室１３となっている。
【００１８】
内燃機関１０の吸気通路１４には、吸気通路１４を流れる吸入空気の量を調整するスロットルバルブ１５が設けられている。吸気バルブ１６が開弁している場合、吸気通路１４を介して吸入空気が燃焼室１３に導入される。
【００１９】
内燃機関１０には、燃料を噴射する燃料噴射弁１７が設けられている。図１には、燃料噴射弁１７として、燃焼室１３内に燃料を直接噴射する筒内噴射弁が図示されている。また、内燃機関１０には、吸入空気と燃料とを含む混合気を火花放電によって点火する点火装置１８が設けられている。燃料噴射弁１７及び点火装置１８は、気筒数と同数設けられている。混合気の燃焼によって燃焼室１３内に生じた排気は、排気バルブ１９が開弁しているときに排気通路２０に排出される。
【００２０】
内燃機関１０の排気浄化装置２１は、排気通路２０に設けられている触媒２２を備えている。触媒２２は、酸素吸蔵能を有している。排気浄化装置２１は、触媒２２に吸蔵されている酸素によって、排気浄化装置２１に流入した未燃燃料を酸化（燃焼）させることができる。すなわち、排気浄化装置２１は、触媒２２に吸蔵されている酸素を利用して排気通路２０を流れる排気を浄化する。
【００２１】
また、排気通路２０における触媒２２よりも上流側（すなわち、燃焼室１３側）には、上流側空燃比センサ３１が設けられている。また、排気通路２０における触媒２２よりも下流側には、下流側空燃比センサ３２が設けられている。これら各空燃比センサ３１，３２は、周知の空燃比センサである。上流側空燃比センサ３１は、混合気の空燃比を検出するものであり、触媒２２に向けて流れる排気の酸素濃度に比例する大きさの信号を出力する。また、下流側空燃比センサ３２は、触媒２２を通過した排気の酸素濃度に比例する大きさの信号を出力する。なお、本実施形態では、上流側空燃比センサ３１から出力される信号の大きさに対応する値のことを「空燃比検出値ＡＦ」といい、下流側空燃比センサ３２から出力される信号の大きさに対応する値のことを「排気空燃比ＡＦＥＸ」ともいう。
【００２２】
制御装置３０には、上流側空燃比センサ３１及び下流側空燃比センサ３２を含む各種のセンサから信号が入力される。空燃比センサ３１，３２以外のセンサとしては、クランク角センサ３３及びエアフロメータ３４などを挙げることができる。クランク角センサ３３は、内燃機関１０のクランク軸の回転速度である機関回転速度ＮＥに応じた信号を出力する。エアフロメータ３４は、吸気通路１４を流れる吸入空気量ＧＡに応じた信号を出力する。そして、制御装置３０は、各種のセンサ３１〜３４からの信号を基に、各燃料噴射弁１７及び各点火装置１８を制御する。
【００２３】
ところで、上流側空燃比センサ３１によって検出される空燃比検出値ＡＦと、混合気の実際の空燃比である実空燃比ＡＦＲとの間には、定常的なずれが生じることがある。制御装置３０では、こうした定常的なずれを補償するための学習値Ｘを更新する学習制御と、学習制御によって導出された学習値Ｘを用いて上記定常的なずれを補償する補償制御とが実施される。
【００２４】
次に、図２を参照し、制御装置３０の機能構成について説明する。
制御装置３０は、学習制御及び補償制御の実施に必要な機能部として、理論空燃比補正部１１０、目標空燃比調整部１２０、燃料量制御部１３０及び学習値更新部１４０を有している。
【００２５】
理論空燃比補正部１１０は、補償制御の実施時には、上流側空燃比センサ３１によって検出された空燃比検出値ＡＦを利用し、空燃比制御を実施するために必要な値として理論空燃比ＡＦＳを補正する。すなわち、理論空燃比補正部１１０は、基礎理論空燃比ＡＦＳＢを、後述する学習値更新部１４０によって更新された学習値Ｘを用いて補正することによって、理論空燃比ＡＦＳを導出する。理論空燃比補正部１１０は、下記の関係式（式１）を用い、理論空燃比ＡＦＳを算出する。すなわち、理論空燃比ＡＦＳは、学習値Ｘが正の値である場合には基礎理論空燃比ＡＦＳＢよりも小さくなる一方、学習値Ｘが負の値である場合には基礎理論空燃比ＡＦＳＢよりも大きくなる。さらに、学習値Ｘの絶対値が大きいほど、理論空燃比ＡＦＳと基礎理論空燃比ＡＦＳＢとの差分が大きくなる。なお、基礎理論空燃比ＡＦＳＢは、例えば「１４．６」である。
【００２６】
【数１】
2020112057.tif 000003
目標空燃比調整部１２０は、理論空燃比補正部１１０によって導出された理論空燃比ＡＦＳを基に、目標空燃比ＡＦＴｒを決める。すなわち、上記の学習制御が実施されていない場合、目標空燃比調整部１２０は、目標空燃比ＡＦＴｒを理論空燃比ＡＦＳと同じ値とする。
【００２７】
目標空燃比調整部１２０は、学習制御の実施時では、目標空燃比ＡＦＴｒを理論空燃比ＡＦＳよりもリーン側の値とするリーン期間処理と、目標空燃比ＡＦＴｒを理論空燃比ＡＦＳよりもリッチ側の値とするリッチ期間処理とを交互に繰り返す。リーン期間処理の具体的な処理内容、リーン期間処理の具体的な処理内容、リーン期間処理からリッチ期間処理への切り替え、及び、リッチ期間処理からリーン期間処理への切り替えについては、後述する。
【００２８】
燃料量制御部１３０は、目標空燃比調整部１２０によって決められた目標空燃比ＡＦＴｒと、上流側空燃比センサ３１によって検出される空燃比検出値ＡＦとを基に、燃料噴射弁１７の燃料噴射量を制御する。すなわち、燃料量制御部１３０は、基本噴射量算出部１３１、空燃比フィードバック部１３２、乗算器１３３及び噴射弁制御部１３４を有している。以降の記載では、空燃比フィードバック部１３２のことを、「空燃比Ｆ／Ｂ部１３２」と略記する。
【００２９】
基本噴射量算出部１３１は、機関負荷率ＫＬを基に基本噴射量ＱＢを算出する。基本噴射量ＱＢは、規定の満充填時理論噴射量ＱＴＨと機関負荷率ＫＬとの積として算出される。満充填時理論噴射量ＱＴＨとして、機関負荷率ＫＬが「１００％」であり、且つ空燃比検出値ＡＦが目標空燃比ＡＦＴｒと等しいときにおける燃料噴射量の算出値が設定されている。また、機関負荷率ＫＬは、例えば、機関回転速度ＮＥ及び吸入空気量ＧＡを基に算出することができる。
【００３０】
空燃比Ｆ／Ｂ部１３２は、空燃比検出値ＡＦと目標空燃比ＡＦＴｒとの偏差である空燃比偏差ΔＡＦを入力とするフィードバック制御によって、比例要素と積分要素と微分要素との和を補正比率δとして算出する。そして、空燃比Ｆ／Ｂ部１３２は、算出した補正比率δと「１」との和をフィードバック補正量ＦＡＦとして算出する。
【００３１】
乗算器１３３は、基本噴射量算出部１３１によって算出された基本噴射量ＱＢと、空燃比Ｆ／Ｂ部１３２によって算出されたフィードバック補正量ＦＡＦとの積を要求噴射量ＱＢＲとして算出する。
【００３２】
噴射弁制御部１３４は、乗算器１３３によって算出された要求噴射量ＱＢＲを基に、燃料噴射弁１７を駆動させる。このとき、噴射弁制御部１３４は、要求噴射量ＱＢＲが多いほど、燃料噴射弁１７の電磁コイルに対する通電時間を長くする。
【００３３】
学習値更新部１４０は、学習制御の実施時に学習値Ｘを更新する。すなわち、学習値更新部１４０は、吸蔵量導出部１４１、脱離量導出部１４２、酸素量偏差算出部１４３、学習値算出部１４４及び記憶部１４５を有している。
【００３４】
吸蔵量導出部１４１は、目標空燃比調整部１２０によってリーン期間処理が実行されているときに、リーン期間処理の実行によって触媒２２に吸蔵される酸素の量である酸素吸蔵量ＯＳＡを算出する。酸素吸蔵量ＯＳＡの算出方法については後述する。
【００３５】
脱離量導出部１４２は、目標空燃比調整部１２０によってリッチ期間処理が実行されているときに、リッチ期間処理の実行によって触媒２２から脱離する酸素の量である酸素脱離量ＯＥＤを算出する。酸素脱離量ＯＥＤの算出方法については後述する。
【００３６】
酸素量偏差算出部１４３は、吸蔵量導出部１４１によって算出された酸素吸蔵量ＯＳＡと、脱離量導出部１４２によって算出された酸素脱離量ＯＥＤとの偏差である酸素量偏差ＤＯＡを算出する。すなわち、酸素量偏差算出部１４３は、酸素脱離量ＯＥＤから酸素吸蔵量ＯＳＡを引いた値を酸素量偏差ＤＯＡとして算出する。本実施形態では、目標空燃比調整部１２０によって実行される処理がリーン期間処理からリッチ期間処理に切り替わるとき、及び当該処理がリッチ期間処理からリーン期間処理に切り替わるときの両者で、酸素量偏差算出部１４３は酸素量偏差ＤＯＡを算出する。酸素量偏差ＤＯＡの算出方法については後述する。
【００３７】
学習値算出部１４４は、酸素量偏差算出部１４３によって算出された酸素量偏差ＤＯＡを基に、学習値Ｘを更新する。学習値Ｘの更新方法については後述する。そして、学習値算出部１４４は、学習値Ｘを更新すると、更新した学習値Ｘを記憶部１４５に記憶する。すなわち、記憶部１４５には、学習値更新部１４０によって更新される学習値Ｘの最新値が記憶される。そして、記憶部１４５に記憶されている学習値Ｘの最新値が、理論空燃比補正部１１０での理論空燃比ＡＦＳの補正に用いられる。
【００３８】
次に、図３を参照し、学習制御の実施時に目標空燃比調整部１２０が実行する処理ルーチンについて説明する。本処理ルーチンは、学習制御の実施時には繰り返し実行される。
本処理ルーチンにおいて、ステップＳ１１では、リーン期間フラグＦＬＧ１にオンがセットされているか否かの判定が行われる。リーン期間フラグＦＬＧ１は、リーン期間処理の実行を許可するか又はリッチ期間処理の実行を許可するかを判断するためのフラグである。すなわち、リーン期間フラグＦＬＧ１にオンがセットされている場合、リーン期間処理の実行が許可される。一方、リーン期間フラグＦＬＧ１にオフがセットされている場合、リッチ期間処理の実行が許可される。なお、学習制御の開始時では、リーン期間フラグＦＬＧ１にオンがセットされている。
【００３９】
ステップＳ１１において、リーン期間フラグＦＬＧ１にオンがセットされている場合（ＹＥＳ）、処理が次のステップＳ１２に移行される。ステップＳ１２において、リーン期間処理が実行される。すなわち、リーン期間処理では、理論空燃比ＡＦＳに規定の変更値Ｚを足した値が目標空燃比ＡＦＴｒとして算出される。これにより、目標空燃比ＡＦＴｒを、理論空燃比ＡＦＳよりもリーン側の値とすることができる。続いて、ステップＳ１３では、排気空燃比ＡＦＥＸがリーン判定値ＡＦＬＴｈよりもリーン側の値であるか否かの判定が行われる。リーン判定値ＡＦＬＴｈは、基礎理論空燃比ＡＦＳＢよりもリーン側の値に設定されている。そのため、排気空燃比ＡＦＥＸがリーン判定値ＡＦＬＴｈよりもリーン側の値である場合、触媒２２による酸素の更なる吸蔵が不能である。
【００４０】
ステップＳ１３において、排気空燃比ＡＦＥＸがリーン判定値ＡＦＬＴｈよりもリーン側の値であるとの判定がなされていない場合（ＮＯ）、本処理ルーチンが一旦終了される。この場合、リーン期間処理の実行が継続される。一方、排気空燃比ＡＦＥＸがリーン判定値ＡＦＬＴｈよりもリーン側の値であるとの判定がなされている場合（Ｓ１３：ＹＥＳ）、処理が次のステップＳ１４に移行される。ステップＳ１４において、リーン期間フラグＦＬＧ１にオフがセットされる。その後、本処理ルーチンが一旦終了される。
【００４１】
その一方で、ステップＳ１１において、リーン期間フラグＦＬＧ１にオフがセットされている場合（ＮＯ）、処理が次のステップＳ１５に移行される。ステップＳ１５において、リッチ期間処理が実行される。すなわち、リーン期間フラグＦＬＧ１がオンからオフに切り替わると、処理がリーン期間処理からリッチ期間処理に切り替わる。リッチ期間処理では、理論空燃比ＡＦＳから変更値Ｚを引いた値が目標空燃比ＡＦＴｒとして算出される。これにより、目標空燃比ＡＦＴｒを、理論空燃比ＡＦＳよりもリッチ側の値とすることができる。続いて、ステップＳ１６では、排気空燃比ＡＦＥＸがリッチ判定値ＡＦＲＴｈよりもリッチ側の値であるか否かの判定が行われる。リッチ判定値ＡＦＲＴｈは、基礎理論空燃比ＡＦＳＢよりもリッチ側の値に設定されている。そのため、排気空燃比ＡＦＥＸがリッチ判定値ＡＦＲＴｈよりもリッチ側の値である場合、触媒２２に酸素が既に吸蔵されておらず、排気浄化装置２１では未燃燃料を酸化（燃焼）させることが不能である。その結果、排気通路２０における触媒２２よりも下流側を未燃燃料が流れるようになる。
【００４２】
ステップＳ１６において、排気空燃比ＡＦＥＸがリッチ判定値ＡＦＲＴｈよりもリッチ側の値であるとの判定がなされていない場合（ＮＯ）、本処理ルーチンが一旦終了される。この場合、リッチ期間処理の開始前までに触媒２２に吸蔵された酸素が触媒２２に未だ残っているため、リッチ期間処理の実行が継続される。一方、排気空燃比ＡＦＥＸがリッチ判定値ＡＦＲＴｈよりもリッチ側の値であるとの判定がなされている場合（Ｓ１６：ＹＥＳ）、処理が次のステップＳ１７に移行される。ステップＳ１７において、リーン期間フラグＦＬＧ１にオンがセットされる。その後、本処理ルーチンが一旦終了される。このようにリーン期間フラグＦＬＧ１がオフからオンに切り替わると、処理がリッチ期間処理からリーン期間処理に切り替わる。
【００４３】
次に、図４を参照し、酸素吸蔵量ＯＳＡを算出する際に吸蔵量導出部１４１が実行する処理ルーチンについて説明する。なお、本処理ルーチンは、学習制御の実施時には繰り返し実行される。
【００４４】
本処理ルーチンにおいて、ステップＳ２１では、目標空燃比調整部１２０によってリッチ期間処理が実行されているか否かの判定が行われる。リッチ期間処理が実行されているとの判定がなされている場合（Ｓ２１：ＹＥＳ）、触媒２２に吸蔵される酸素の量は増えないため、本処理ルーチンが一旦終了される。一方、リッチ期間処理が実行されているとの判定がなされていない場合（Ｓ２１：ＮＯ）、処理が次のステップＳ２２に移行される。ステップＳ２２において、目標空燃比調整部１２０によって実行される処理がリッチ期間処理からリーン期間処理に切り替わった直後であるか否かの判定が行われる。本処理ルーチンの前回の実行時にはリッチ期間処理が実行されており、且つ本処理ルーチンの今回の実行時にはリーン期間処理が実行されている場合は、リッチ期間処理からリーン期間処理に切り替わった直後である。一方、本処理ルーチンの前回の実行時ではリーン期間処理が実行されており、且つ本処理ルーチンの今回の実行時でもリーン期間処理が実行されている場合は、リッチ期間処理からリーン期間処理に切り替わった直後ではない。
【００４５】
リッチ期間処理からリーン期間処理に切り替わった直後であるとの判定がなされている場合（Ｓ２２：ＹＥＳ）、処理が次のステップＳ２３に移行される。ステップＳ２３において、酸素吸蔵量保持値ＯＳＡＨに酸素吸蔵量ＯＳＡが代入される。すなわち、酸素吸蔵量保持値ＯＳＡＨは、前回のリーン期間処理中に導出された酸素吸蔵量ＯＳＡと同じ値となる。続いて、ステップＳ２４において、酸素吸蔵量ＯＳＡが「０」にリセットされる。その後、本処理ルーチンが一旦終了される。一方、リッチ期間処理からリーン期間処理に切り替わった直後であるとの判定がなされていない場合（Ｓ２２：ＮＯ）、処理が次のステップＳ２５に移行される。ステップＳ２５において、酸素吸蔵量ＯＳＡが算出される。すなわち、吸蔵量導出部１４１は、単位時間あたりの酸素吸蔵量の増大量である単位増大量ΔＯＳＡを算出し、その単位増大量ΔＯＳＡの積算値を酸素吸蔵量ＯＳＡとして算出する。単位増大量ΔＯＳＡは、空燃比検出値ＡＦと理論空燃比ＡＦＳとの差分、すなわち上記の変更値Ｚが大きいほど大きくなる。また、単位増大量ΔＯＳＡは、吸入空気量ＧＡが多いほど大きくなる。例えば、吸蔵量導出部１４１は、以下の関係式（式２）を用いて単位増大量ΔＯＳＡを算出する。関係式（式２）において、「ＲＯＸ」は、吸入空気中で酸素が占める割合のことである。
【００４６】
【数２】
2020112057.tif 000004
ステップＳ２５において酸素吸蔵量ＯＳＡが算出されると、本処理ルーチンが一旦終了される。
【００４７】
次に、図５を参照し、酸素脱離量ＯＥＤを算出する際に脱離量導出部１４２が実行する処理ルーチンについて説明する。なお、本処理ルーチンは、学習制御の実施時には繰り返し実行される。
【００４８】
本処理ルーチンにおいて、ステップＳ３１では、目標空燃比調整部１２０によってリーン期間処理が実行されているか否かの判定が行われる。リーン期間処理が実行されているとの判定がなされている場合（Ｓ３１：ＹＥＳ）、触媒２２から酸素が脱離しないため、本処理ルーチンが一旦終了される。一方、リーン期間処理が実行されているとの判定がなされていない場合（Ｓ３１：ＮＯ）、処理が次のステップＳ３２に移行される。ステップＳ３２において、目標空燃比調整部１２０によって実行される処理がリーン期間処理からリッチ期間処理に切り替わった直後であるか否かの判定が行われる。本処理ルーチンの前回の実行時にはリーン期間処理が実行されており、且つ本処理ルーチンの今回の実行時にはリッチ期間処理が実行されている場合は、リーン期間処理からリッチ期間処理に切り替わった直後である。一方、本処理ルーチンの前回の実行時ではリッチ期間処理が実行されており、且つ本処理ルーチンの今回の実行時でもリッチ期間処理が実行されている場合は、リーン期間処理からリッチ期間処理に切り替わった直後ではない。
【００４９】
リーン期間処理からリッチ期間処理に切り替わった直後であるとの判定がなされている場合（Ｓ３２：ＹＥＳ）、処理が次のステップＳ３３に移行される。ステップＳ３３において、酸素脱離量保持値ＯＥＤＨに酸素脱離量ＯＥＤが代入される。すなわち、酸素脱離量保持値ＯＥＤＨは、前回のリッチ期間処理中に導出された酸素脱離量ＯＥＤと同じ値となる。続いて、ステップＳ３４において、酸素脱離量ＯＥＤが「０」にリセットされる。その後、本処理ルーチンが一旦終了される。一方、リーン期間処理からリッチ期間処理に切り替わった直後であるとの判定がなされていない場合（Ｓ３２：ＮＯ）、処理が次のステップＳ３５に移行される。ステップＳ３５において、酸素脱離量ＯＥＤが算出される。すなわち、脱離量導出部１４２は、触媒２２からの単位時間あたりの酸素の脱離量である単位脱離量ΔＯＥＤを算出し、その単位脱離量ΔＯＥＤの積算値を酸素脱離量ＯＥＤとして算出する。単位脱離量ΔＯＥＤは、空燃比検出値ＡＦと理論空燃比ＡＦＳとの差分、すなわち上記の変更値Ｚが大きいほど大きくなる。また、単位脱離量ΔＯＥＤは、燃料噴射量が多いほど大きくなる。目標空燃比ＡＦＴｒが一定である場合、燃料噴射量は吸入空気量ＧＡと相関する。そのため、目標空燃比ＡＦＴｒが理論空燃比ＡＦＳよりもリッチ側の値である場合、単位脱離量ΔＯＥＤは、吸入空気量ＧＡが多いほど大きくなる。例えば、脱離量導出部１４２は、以下の関係式（式３）を用いて単位脱離量ΔＯＥＤを算出する。
【００５０】
【数３】
2020112057.tif 000005
ステップＳ３５において酸素脱離量ＯＥＤが算出されると、本処理ルーチンが一旦終了される。
【００５１】
次に、酸素量偏差ＤＯＡを算出するために酸素量偏差算出部１４３によって実行される処理について説明する。
目標空燃比調整部１２０によって実行される処理がリーン期間処理からリッチ期間処理に切り替わった場合、酸素脱離量保持値ＯＥＤＨが上記ステップＳ３３で更新され、上記ステップＳ３４で酸素脱離量ＯＥＤが「０」にリセットされると、酸素量偏差ＤＯＡが算出される。この場合、酸素脱離量保持値ＯＥＤＨから酸素吸蔵量ＯＳＡを引いた値が酸素量偏差ＤＯＡとして算出される。
【００５２】
一方、目標空燃比調整部１２０によって実行される処理がリッチ期間処理からリーン期間処理に切り替わった場合、酸素吸蔵量保持値ＯＳＡＨが上記ステップＳ２３で更新され、上記ステップＳ２４で酸素吸蔵量ＯＳＡが「０」にリセットされると、酸素量偏差ＤＯＡが算出される。この場合、酸素脱離量ＯＥＤから酸素吸蔵量保持値ＯＳＡＨを引いた値が酸素量偏差ＤＯＡとして算出される。
【００５３】
次に、図６を参照し、学習値Ｘを更新するために学習値算出部１４４によって実行される処理ルーチンについて説明する。本処理ルーチンは、学習制御の実施中では繰り返し実行される。
【００５４】
本処理ルーチンにおいて、ステップＳ４１では、目標空燃比調整部１２０によって実行される処理がリーン期間処理からリッチ期間処理に切り替わったか否かの判定が行われる。本処理ルーチンの前回の実行時ではリーン期間処理が実行されており、且つ本処理ルーチンの今回の実行時ではリッチ期間処理が実行されている場合は、リーン期間処理からリッチ期間処理に切り替わった場合である。リーン期間処理からリッチ期間処理に切り替わったとの判定がなされている場合（Ｓ４１：ＹＥＳ）、処理が次のステップＳ４２に移行される。ステップＳ４２において、リーン期間処理からリッチ期間処理に切り替わった際に酸素量偏差算出部１４３によって算出された酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上であるか否かの判定が行われる。酸素量偏差ＤＯＡの絶対値が大きいということは、上流側空燃比センサ３１によって検出されている空燃比検出値ＡＦと実空燃比ＡＦＲとの定常的なずれの補償が未だ十分ではなく、学習値Ｘの大幅な更新が必要であることを意味している。すなわち、判定値ＤＯＡＴｈは、学習値Ｘを大幅に更新してよいか否かの判断基準である。
【００５５】
ステップＳ４２において、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合（ＹＥＳ）、処理が後述するステップＳ４４に移行される。すなわち、学習値Ｘが更新される。一方、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合（Ｓ４２：ＮＯ）、本処理ルーチンが一旦終了される。この場合、学習値Ｘが更新されない。すなわち、リーン期間処理からリッチ期間処理に切り替わったときには、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合に限り、学習値Ｘが更新される。
【００５６】
その一方で、ステップＳ４１において、リーン期間処理からリッチ期間処理に切り替わったとの判定がなされていない場合（ＮＯ）、処理が次のステップＳ４３に移行される。ステップＳ４３において、目標空燃比調整部１２０によって実行される処理がリッチ期間処理からリーン期間処理に切り替わったか否かの判定が行われる。本処理ルーチンの前回の実行時ではリッチ期間処理が実行されており、且つ本処理ルーチンの今回の実行時ではリーン期間処理が実行されている場合は、リッチ期間処理からリーン期間処理に切り替わった場合である。リッチ期間処理からリーン期間処理に切り替わったとの判定がなされている場合（Ｓ４３：ＹＥＳ）、処理が次のステップＳ４４に移行される。すなわち、リッチ期間処理からリーン期間処理に切り替わった際に算出された酸素量偏差ＤＯＡの大きさに拘わらず、学習値Ｘが更新される。一方、リッチ期間処理からリーン期間処理に切り替わったとの判定がなされていない場合（Ｓ４３：ＮＯ）、本処理ルーチンが一旦終了される。
【００５７】
ステップＳ４４において、酸素量偏差ＤＯＡを基に、学習値Ｘが更新される。本実施形態では、酸素量偏差ＤＯＡを基に学習更新値ＤＸを導出し、学習値Ｘと学習更新値ＤＸとの和が新たな学習値Ｘとして算出される。学習更新値ＤＸは、図７に示すマップを用いて導出される。
【００５８】
図７における実線は、酸素量偏差ＤＯＡを基に学習更新値ＤＸを導出するためのマップを表している。図７における破線Ｌ１は、酸素量偏差ＤＯＡと係数αとの積を表している。係数αは、酸素量偏差ＤＯＡを学習更新値ＤＸに変換するための係数である。
【００５９】
図７に示すように、酸素量偏差ＤＯＡが学習不感帯ＤＺ内の値である場合、学習更新値ＤＸは「０」となる。学習不感帯ＤＺは、酸素量偏差ＤＯＡの絶対値が小さいため、学習値Ｘの更新が不要であると判断できる酸素量偏差ＤＯＡの範囲のことである。学習不感帯ＤＺの上限ＤＺＵは「０」よりも大きく、学習不感帯ＤＺの下限ＤＺＬは「０」よりも小さい。
【００６０】
酸素量偏差ＤＯＡが学習不感帯ＤＺの上限ＤＺＵよりも大きい場合、学習更新値ＤＸは、酸素量偏差ＤＯＡと係数αとの積と、規定値ＤＸ１とのうちの小さい方の値と同じ値となる。一方、酸素量偏差ＤＯＡが学習不感帯ＤＺの下限ＤＺＬよりも小さい場合、学習更新値ＤＸは、酸素量偏差ＤＯＡと係数αとの積と、規定値ＤＸ１と「−１」との積とのうちの大きい方の値と同じ値となる。
【００６１】
本実施形態では、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈと等しいときにおける酸素量偏差ＤＯＡと係数αとの積の絶対値と、規定値ＤＸ１とが同じとなるように、規定値ＤＸ１が設定されている。そのため、本実施形態では、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合、学習値Ｘの一回の更新量である学習更新値ＤＸの絶対値は、規定値ＤＸ１となる。一方、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合、学習値Ｘの一回の更新量である学習更新値ＤＸの絶対値は、酸素量偏差ＤＯＡの絶対値が小さいほど小さくなる。
【００６２】
図６に戻り、ステップＳ４４での学習値Ｘの更新が完了すると、本処理ルーチンが一旦終了される。
なお、学習値Ｘの更新は、酸素量偏差ＤＯＡが学習不感帯ＤＺに収まるようになると終了される。具体的には、酸素量偏差ＤＯＡが学習不感帯ＤＺに収まっている状態の継続時間が終了判定時間以上になると、学習値Ｘの更新が終了される。このように学習値Ｘの更新が終了されると、学習制御の実施が終了される。ちなみに、学習制御が終了されても、補償制御は継続される。
【００６３】
次に、図８を参照し、本実施形態の作用及び効果について説明する。図８に示す例は、空燃比検出値ＡＦが実空燃比ＡＦＲに対してリッチ側に乖離している場合の例である。
リーン期間処理が実行されている場合、目標空燃比ＡＦＴｒが理論空燃比ＡＦＳよりもリーン側の値であるため、触媒２２では、排気に含まれる酸素が吸蔵される。そのため、酸素吸蔵量ＯＳＡが導出される。その一方で、酸素脱離量ＯＥＤは、リッチ期間処理の前回の実行時の値に保持される。
【００６４】
触媒２２における実際の酸素吸蔵量がその上限に達していない場合、下流側空燃比センサ３２によって検出される排気空燃比ＡＦＥＸは、理論空燃比と同じになる。しかし、触媒２２における実際の酸素吸蔵量がその上限に達すると、燃焼室１３から排気通路２０に排出された排気に含まれる酸素を触媒２２が吸蔵できなくなる。その結果、触媒２２を通過する酸素の量が多くなる。その結果、排気空燃比ＡＦＥＸが理論空燃比よりもリーン側の値となる。
【００６５】
そして、タイミングｔ１１で、排気空燃比ＡＦＥＸがリーン判定値ＡＦＬＴｈよりもリーン側の値になると、リーン期間処理が終了されてリッチ期間処理が開始される。また、タイミングｔ１１では、リッチ期間処理の前回の実行時に導出された酸素脱離量ＯＥＤである酸素脱離量保持値ＯＥＤＨから、タイミングｔ１１まで実行されたリーン期間処理の実行中に導出された酸素吸蔵量ＯＳＡを引いた値が酸素量偏差ＤＯＡとして算出される。この場合、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈよりも大きい。そのため、リーン期間処理からリッチ期間処理への移行時であっても、学習値Ｘが更新される。
【００６６】
本実施形態では、学習値Ｘは、理論空燃比ＡＦＳを補正するための値である。そのため、学習値Ｘが更新されると、理論空燃比ＡＦＳもまた更新される。よって、理論空燃比ＡＦＳの更新後では、更新後の理論空燃比ＡＦＳに基づいた目標空燃比ＡＦＴｒを用いて空燃比制御が実施される。
【００６７】
タイミングｔ１１からタイミングｔ１２までの期間では、リッチ期間処理が実行される。リッチ期間処理中では、目標空燃比ＡＦＴｒが理論空燃比ＡＦＳよりもリッチ側の値であるため、燃焼室１３から排気通路２０に排出された排気に含まれる未燃燃料の酸化（燃焼）によって、触媒２２に吸蔵されている酸素の量が減少する。そのため、リッチ期間処理中では、酸素脱離量ＯＥＤが導出される。その一方で、酸素吸蔵量ＯＳＡは、タイミングｔ１１の値で保持される。
【００６８】
触媒２２に酸素が吸蔵されている場合、吸蔵されている酸素によって未燃燃料が酸化されるため、下流側空燃比センサ３２によって検出される排気空燃比ＡＦＥＸは、理論空燃比と同じになる。しかし、吸蔵されていた酸素が全て消費されて触媒２２に酸素が吸蔵されていない状態になると、燃焼室１３から排気通路２０に排出された排気に含まれる未燃燃料を排気浄化装置２１では酸化できなくなる。その結果、排気通路２０における触媒２２よりも下流側を未燃燃料が流れるようになる。その結果、排気空燃比ＡＦＥＸが理論空燃比よりもリッチ側の値となる。
【００６９】
そして、タイミングｔ１２で、排気空燃比ＡＦＥＸがリッチ判定値ＡＦＲＴｈよりもリッチ側の値になると、リッチ期間処理が終了されてリーン期間処理が開始される。また、タイミングｔ１２では、タイミングｔ１２まで実行されたリッチ期間処理の実行時に導出された酸素脱離量ＯＥＤから、リーン期間処理の前回の実行時に導出された酸素吸蔵量ＯＳＡである酸素吸蔵量保持値ＯＳＡＨを引いた値が酸素量偏差ＤＯＡとして算出される。この場合、酸素量偏差ＤＯＡは、図７に示した学習不感帯ＤＺ外の値である。そのため、リッチ期間処理からリーン期間処理に移行する際に、学習値Ｘが更新される。このように学習値Ｘが更新されると、理論空燃比ＡＦＳもまた補正される。すると、補正された理論空燃比ＡＦＳに基づいた目標空燃比ＡＦＴｒを用いて空燃比制御が実施されるため、酸素脱離量ＯＥＤと酸素吸蔵量ＯＳＡとの乖離が是正されていく。
【００７０】
本実施形態では、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合では、リッチ期間処理からリーン期間処理に切り替わるとき、及び、リーン期間処理からリッチ期間処理に切り替わるときの双方で、学習値Ｘが更新される。その結果、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合であっても、リッチ期間処理からリーン期間処理に切り替わるとき、及び、リーン期間処理からリッチ期間処理に切り替わるときの何れか一方のみで学習値Ｘを更新する場合と比較し、学習値Ｘの更新機会を増やすことができる。このように学習値Ｘの更新機会を増やすことにより、学習値Ｘの更新の完了までに要する時間を短縮することができる。
【００７１】
なお、酸素量偏差ＤＯＡの算出に用いられる酸素吸蔵量ＯＳＡの導出時の理論空燃比ＡＦＳを第１理論空燃比とし、酸素量偏差ＤＯＡの算出に用いられる酸素脱離量ＯＥＤの導出時の理論空燃比ＡＦＳを第２理論空燃比とした場合、目標空燃比調整部１２０によって実行される処理が切り替わる度に学習値Ｘを更新する状況下では第２理論空燃比は第１理論空燃比と異なる値となる。異なる理論空燃比ＡＦＳを用いて導出された酸素吸蔵量ＯＳＡと酸素脱離量ＯＥＤとを用いて酸素量偏差ＤＯＡを算出しても、その算出精度は高いとは言いがたい。しかし、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合にあっては、学習更新値ＤＸは、絶対値が規定値ＤＸ１になるように設定されるため、酸素量偏差ＤＯＡの算出精度が低くても、その精度の低さが学習値Ｘの更新の精度に与える影響はほとんどない。
【００７２】
学習値Ｘの更新によって理論空燃比ＡＦＳが補正され、補正後の理論空燃比ＡＦＳに基づいた目標空燃比ＡＦＴｒを用いて空燃比制御が実施されると、酸素量偏差ＤＯＡの絶対値が小さくなる。そして、リーン期間処理からリッチ期間処理に切り替わる場合であっても、例えばタイミングｔ１３のように酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上にならないことがある。このように酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合、学習値Ｘの更新がある程度進んだと判断できるため、リーン期間処理からリッチ期間処理に切り替わっても学習値Ｘの更新が行われない。すなわち、リッチ期間処理からリーン期間処理に切り替わるときのみで学習値Ｘが更新されるようになる。
【００７３】
すると、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合では、酸素量偏差ＤＯＡの算出に用いられる酸素吸蔵量ＯＳＡの導出時の理論空燃比ＡＦＳが、酸素量偏差ＤＯＡの算出に用いられる酸素脱離量ＯＥＤの導出時の理論空燃比ＡＦＳと同じ値となる。そのため、酸素量偏差ＤＯＡの算出精度が低くならない。そして、こうした酸素量偏差ＤＯＡを用いて学習更新値ＤＸが導出されるようになるため、学習更新値ＤＸの絶対値が過大となることを抑制できる。すなわち、学習値Ｘのハンチングが生じにくくなる。そして、酸素量偏差ＤＯＡが学習不感帯ＤＺ内の値になると、学習値Ｘの更新が終了される。
【００７４】
なお、空燃比検出値ＡＦが実空燃比ＡＦＲに対してリーン側に乖離しているときに学習制御が実施されることがある。酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合、リッチ期間処理からリーン期間処理に切り替わるとき、及び、リーン期間処理からリッチ期間処理に切り替わるときの双方で、学習値Ｘが更新される。このように学習値Ｘが更新されると、酸素量偏差ＤＯＡの絶対値が徐々に小さくなる。そして、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上にならなくなると、リッチ期間処理からリーン期間処理に切り替わるときには学習値Ｘが更新されるものの、リーン期間処理からリッチ期間処理に切り替わるときには学習値Ｘが更新されなくなる。したがって、空燃比検出値ＡＦが実空燃比ＡＦＲに対してリーン側に乖離している場合であっても、空燃比検出値ＡＦが実空燃比ＡＦＲに対してリッチ側に乖離している場合と同様の効果を得ることができる。
【００７５】
本実施形態では、以下に示す効果をさらに得ることができる。
（１）本実施形態では、学習値Ｘを更新するに際し、酸素量偏差ＤＯＡの絶対値が大きいほど学習更新値ＤＸの絶対値を大きくすることができる。しかし、酸素量偏差ＤＯＡと係数αとの積の絶対値が規定値ＤＸ１よりも大きいときには、学習更新値ＤＸの絶対値が規定値ＤＸ１となる。これにより、学習値Ｘの一回の更新量が大きくなりすぎることを抑制できる。
【００７６】
また、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合、酸素量偏差ＤＯＡの算出精度が高いとは言いがたい。そのため、酸素量偏差ＤＯＡと係数αとの積を学習更新値ＤＸとした場合、学習更新値ＤＸの絶対値が大きくなりすぎ、学習値Ｘの更新に際してハンチングが発生するおそれがある。この点、本実施形態では、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合には、学習更新値ＤＸを規定値ＤＸ１としている。その結果、学習値Ｘの一回の更新量が大きくなりすぎることを抑制できる。
【００７７】
したがって、本実施形態によれば、学習値Ｘを更新するに際してハンチングの発生を抑制できる。
（２）酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合、酸素量偏差ＤＯＡの絶対値が小さいほど、学習更新値ＤＸの絶対値を小さくすることができる。すなわち、学習値Ｘの一回の更新量を小さくすることができる。その結果、学習値Ｘを更新するに際してハンチングの発生を抑制できる。
【００７８】
上記実施形態は、以下のように変更して実施することができる。上記実施形態及び以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
・酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合、リーン期間処理からリッチ期間処理に切り替わるときには学習値Ｘを更新する一方で、リッチ期間処理からリーン期間処理に切り替わるときには学習値Ｘを更新しないようにしてもよい。図９には、このような場合に学習値算出部１４４が実行する処理ルーチンが図示されている。
【００７９】
本処理ルーチンにおいて、ステップＳ５１では、目標空燃比調整部１２０によって実行される処理がリッチ期間処理からリーン期間処理に切り替わったか否かの判定が行われる。リッチ期間処理からリーン期間処理に切り替わったとの判定がなされている場合（Ｓ５１：ＹＥＳ）、処理が次のステップＳ５２に移行される。ステップＳ５２において、リッチ期間処理からリーン期間処理に切り替わった際に算出された酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上であるか否かの判定が行われる。酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合（Ｓ５２：ＹＥＳ）、処理が後述するステップＳ５４に移行される。すなわち、学習値Ｘが更新される。一方、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満である場合（Ｓ５２：ＮＯ）、本処理ルーチンが一旦終了される。つまり、リッチ期間処理からリーン期間処理に切り替わったときでは、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上である場合に限り、学習値Ｘが更新される。
【００８０】
その一方で、ステップＳ５１において、リッチ期間処理からリーン期間処理に切り替わったとの判定がなされていない場合（ＮＯ）、処理が次のステップＳ５３に移行される。ステップＳ５３において、目標空燃比調整部１２０によって実行される処理がリーン期間処理からリッチ期間処理に切り替わったか否かの判定が行われる。リーン期間処理からリッチ期間処理に切り替わったとの判定がなされている場合（Ｓ５３：ＹＥＳ）、処理が次のステップＳ５４に移行される。すなわち、リーン期間処理からリッチ期間処理に切り替わった際に算出された酸素量偏差ＤＯＡの大きさに拘わらず、学習値Ｘが更新される。一方、リーン期間処理からリッチ期間処理に切り替わったとの判定がなされていない場合（Ｓ５３：ＮＯ）、本処理ルーチンが一旦終了される。
【００８１】
ステップＳ５４では、上記ステップＳ４４と同様に、学習値Ｘが更新される。そして、本処理ルーチンが一旦終了される。
・リーン期間処理からリッチ期間処理に切り替える条件は、上記実施形態で説明した条件とは異なる条件であってもよい。例えば、目標空燃比調整部１２０は、吸蔵量導出部１４１によって導出される酸素吸蔵量ＯＳＡが規定吸蔵量ＯＳＡＴｈに達したことを条件に、リーン期間処理を終了してリッチ期間処理を開始させるようにしてもよい。また、目標空燃比調整部１２０は、リーン期間処理の継続時間が規定のリーン継続時間に達したことを条件に、リーン期間処理を終了してリッチ期間処理を開始させるようにしてもよい。
【００８２】
・リッチ期間処理からリーン期間処理に切り替える条件は、上記実施形態で説明した条件とは異なる条件であってもよい。例えば、目標空燃比調整部１２０は、脱離量導出部１４２によって導出される酸素脱離量ＯＥＤが規定脱離量ＯＥＤＴｈに達したことを条件に、リッチ期間処理を終了してリーン期間処理を開始させるようにしてもよい。また、目標空燃比調整部１２０は、リッチ期間処理の継続時間が規定のリッチ継続時間に達したことを条件に、リッチ期間処理を終了してリーン期間処理を開始させるようにしてもよい。
【００８３】
・リーン期間処理中における目標空燃比ＡＦＴｒと理論空燃比ＡＦＳとのずれ量を、リッチ期間処理中における目標空燃比ＡＦＴｒと理論空燃比ＡＦＳとのずれ量と異ならせてもよい。
【００８４】
・下流側空燃比センサ３２は、理論空燃比近傍を境にして信号の電圧値が急変する特性を有するセンサであってもよい。
・上記実施形態では、酸素量偏差ＤＯＡに基づいた学習値Ｘによって理論空燃比ＡＦＳを補正することにより、空燃比検出値ＡＦと実空燃比ＡＦＲとの定常的なずれを補償するようにしている。しかし、理論空燃比ＡＦＳ以外の他のパラメータを補正することにより、当該定常的なずれを補償するようにしてもよい。例えば、理論空燃比ＡＦＳの代わりに要求噴射量ＱＢＲを補正することにより、上記の定常的なずれを補償するようにしてもよい。この場合、酸素量偏差ＤＯＡを燃料噴射量に対する学習値に変換し、この学習値を用いて要求噴射量ＱＢＲを補正することにより、上記実施形態と同等の効果を得ることができる。
【００８５】
・規定値ＤＸ１を用いずに学習更新値ＤＸを導出するようにしてもよい。すなわち、酸素量偏差ＤＯＡが学習不感帯ＤＺの上限ＤＺＵよりも大きい場合、酸素量偏差ＤＯＡが判定値ＤＯＡＴｈ以上であっても、学習更新値ＤＸを、酸素量偏差ＤＯＡと係数αとの積と同じ値とするようにしてもよい。同様に、酸素量偏差ＤＯＡが学習不感帯ＤＺの下限ＤＺＬよりも小さい場合、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上であっても、学習更新値ＤＸを、酸素量偏差ＤＯＡと係数αとの積と同じ値としてもよい。
【００８６】
なお、規定値ＤＸ１を用いずに学習更新値ＤＸを導出する場合、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上であるか否かによって係数αの大きさを変えるようにしてもよい。例えば、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ未満であるときの係数αを第１係数α１とした場合、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈ以上であるときの係数αを、第１係数α１よりも小さい第２係数α２としてもよい。
【００８７】
・酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈと等しいときにおける酸素量偏差ＤＯＡと係数αとの積の絶対値が規定値ＤＸ１よりも小さくなるように、規定値ＤＸ１を設定してもよい。この場合、酸素量偏差ＤＯＡの絶対値が判定値ＤＯＡＴｈよりも小さい場合であっても、学習更新値ＤＸの絶対値が規定値ＤＸ１と同じ値となることがある。
【００８８】
・内燃機関１０は、燃料噴射弁として、吸気通路１４に燃料を噴射するポート噴射弁を備えるものであってもよい。また、内燃機関１０は、燃料噴射弁として、気筒１１内に燃料を直接噴射する筒内噴射弁と、ポート噴射弁との双方を備えるものであってもよい。
【符号の説明】
【００８９】
１０…内燃機関、１１…気筒、２０…排気通路、２２…触媒、３０…制御装置、３１…上流側空燃比センサ、３２…下流側空燃比センサ、１２０…目標空燃比調整部、１３０…燃料量制御部、１４０…学習値更新部。
【図１】
2020112057.tif 000006
【図２】
2020112057.tif 000007
【図３】
2020112057.tif 000008
【図４】
2020112057.tif 000009
【図５】
2020112057.tif 000010
【図６】
2020112057.tif 000011
【図７】
2020112057.tif 000012
【図８】
2020112057.tif 000013
【図９】
2020112057.tif 000014