(57)【要約】【課題】インバランス異常とトルク変動との双方に適切に対処できるようにした内燃機関の制御装置を提供する。【解決手段】ＣＰＵ３２は、三元触媒２４の昇温要求が生じる場合、気筒＃１〜＃４のうちの１つを、理論空燃比よりもリッチとするリッチ燃焼気筒とし、残りを、理論空燃比よりもリーンとするリーン燃焼気筒とするディザ制御を実行する。ＣＰＵ３２は、インバランス異常が生じる場合、リッチ燃焼気筒の空燃比とリーン燃焼気筒の空燃比との差の絶対値を制限する制限係数を算出する。また、ＣＰＵ３２は、失火が生じる場合、リッチ燃焼気筒の空燃比とリーン燃焼気筒の空燃比との差の絶対値を制限する制限係数を算出する。ＣＰＵ３２は、インバランス異常の制限係数と失火の制限係数とのうちの小さい方に基づき、上記絶対値を縮小制限する。【選択図】図１
2019100296.tif 000002
【特許請求の範囲】
【請求項１】
複数の気筒から排出された排気を浄化する排気浄化装置と、前記複数の気筒毎に設けられた燃料噴射弁と、を備える内燃機関を制御対象とし、
前記複数の気筒のうちの一部の気筒を、空燃比が理論空燃比よりもリッチであるリッチ燃焼気筒とし、前記複数の気筒のうちの前記一部の気筒とは別の気筒を、空燃比が理論空燃比よりもリーンであるリーン燃焼気筒とすべく、前記燃料噴射弁を操作するディザ制御処理と、
前記複数の気筒のそれぞれにおける空燃比を互いに等しく制御するために前記燃料噴射弁を操作する場合の前記複数の気筒のそれぞれの前記燃料噴射弁の噴射量のばらつき度合
が大きい場合に小さい場合よりも前記複数の気筒の空燃比同士の差の絶対値が小さくなる側に前記ディザ制御処理を制限するように要求する第１制限要求処理と、
前記内燃機関のトルク変動量が大きい場合に小さい場合よりも前記絶対値が小さくなる側に前記ディザ制御処理を制限するように要求する第２制限要求処理と、
前記第１制限要求処理と前記第２制限要求処理とのうちの前記絶対値をより小さくする要求に応じて前記絶対値が小さくなる側に前記ディザ制御処理を制限する制限処理と、を実行する内燃機関の制御装置。
【請求項２】
前記内燃機関のトルク変動量が大きい場合に小さい場合よりも点火時期を進角させる進角処理と、
前記ディザ制御処理の実行中に前記トルク変動量が大きくなる場合、前記進角処理の実行に先立って前記制限処理を実行する調停処理と、を実行する請求項１記載の内燃機関の制御装置。
【請求項３】
前記内燃機関のクランク軸の回転速度および負荷に応じて前記点火時期の要求遅角量を設定する遅角要求量設定処理を実行し、
前記進角処理は、前記トルク変動量に応じて前記要求遅角量を減少補正する処理である請求項２記載の内燃機関の制御装置。
【請求項４】
前記進角処理は、前記ばらつき度合いが大きい場合に小さい場合よりも前記点火時期を進角させる処理を含む請求項２または３記載の内燃機関の制御装置。
【請求項５】
前記第２制限要求処理は、前記トルク変動量が小さい状態から大きい状態に変化することに応じた前記絶対値に対する要求の変化速度に対して、前記トルク変動量が大きい状態から小さい状態に変化することに応じた前記絶対値に対する要求の変化速度を小さくする処理を含む請求項２〜４のいずれか１項に記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の気筒から排出された排気を浄化する排気浄化装置と、前記複数の気筒毎に設けられた燃料噴射弁と、を備える内燃機関を制御対象とする内燃機関の制御装置に関する。
【背景技術】
【０００２】
たとえば特許文献１には、触媒装置（排気浄化装置）の昇温要求がある場合、一部の気筒を、その空燃比が理論空燃比よりもリッチとなるリッチ燃焼気筒とし、残りの気筒を、その空燃比が理論空燃比よりもリーンとなるリーン燃焼気筒とするディザ制御を実行する制御装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−３１０５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、たとえば内燃機関の制御の異常として、複数の気筒のそれぞれにおける空燃比を互いに等しく制御するために燃料噴射弁を操作した際の複数の気筒のそれぞれの燃料噴射弁の噴射量のばらつき（インバランス）が生じる異常（インバランス異常）がある。インバランス異常が生じる場合、排気浄化装置に酸素と未燃燃料とが流入し排気浄化装置において未燃燃料が燃焼することにより、排気浄化装置の温度が上昇する。また、内燃機関の制御の異常として、失火が生じる場合にも、排気浄化装置に酸素と未燃燃料とが流入し排気浄化装置において未燃燃料が燃焼することにより、排気浄化装置の温度が上昇する。このようなインバランス異常や失火時において、ディザ制御が実行されると、排気浄化装置の温度が過度に上昇し、排気浄化装置の劣化を招くおそれがある。
【課題を解決するための手段】
【０００５】
以下、上記課題を解決するための手段およびその作用効果について記載する。
１．上記内燃機関の制御装置は、複数の気筒から排出された排気を浄化する排気浄化装置と、前記複数の気筒毎に設けられた燃料噴射弁と、を備える内燃機関を制御対象とし、前記複数の気筒のうちの一部の気筒を、空燃比が理論空燃比よりもリッチであるリッチ燃焼気筒とし、前記複数の気筒のうちの前記一部の気筒とは別の気筒を、空燃比が理論空燃比よりもリーンであるリーン燃焼気筒とすべく、前記燃料噴射弁を操作するディザ制御処理と、前記複数の気筒のそれぞれにおける空燃比を互いに等しく制御するために前記燃料噴射弁を操作する場合の前記複数の気筒のそれぞれの前記燃料噴射弁の噴射量のばらつき度合が大きい場合に小さい場合よりも前記複数の気筒の空燃比同士の差の絶対値が小さくなる側に前記ディザ制御処理を制限するように要求する第１制限要求処理と、前記内燃機関のトルク変動量が大きい場合に小さい場合よりも前記絶対値が小さくなる側に前記ディザ制御処理を制限するように要求する第２制限要求処理と、前記第１制限要求処理と前記第２制限要求処理とのうちの前記絶対値をより小さくする要求に応じて前記絶対値が小さくなる側に前記ディザ制御処理を制限する制限処理と、を実行する。
【０００６】
上記ばらつき度合いが大きい場合には小さい場合よりも、排気浄化装置に酸素と未燃燃料とが流入し排気浄化装置において未燃燃料が燃焼することにより、排気浄化装置の温度が上昇しやすい。そこで、第１制限要求処理によってばらつき度合いが大きい場合に小さい場合よりも上記絶対値をより小さくする。これにより、ばらつきに起因して排気浄化装置の温度が上昇しやすい傾向とディザ制御によって排気浄化装置の温度が高くなることとによって排気浄化装置の温度が過度に高くなることを抑制できる。また、トルク変動量が大きい場合には小さい場合よりも排気中の未燃燃料量と酸素量とが多くなる傾向があることから、排気浄化装置に酸素と未燃燃料とが流入し排気浄化装置において未燃燃料が燃焼することにより、排気浄化装置の温度が上昇しやすい。そこで、第２制限要求処理によってトルク変動量が大きい場合に小さい場合よりも上記絶対値を小さくする。これにより、トルク変動量が大きくなる燃焼状態に起因して排気浄化装置の温度が上昇しやすい傾向とディザ制御によって排気温度が高くなることとによって排気浄化装置の温度が過度に高くなることを抑制できる。
【０００７】
特に上記構成では、第１制限要求処理と第２制限要求処理とのうちの上記絶対値をより小さくする要求に応じて絶対値を制限することにより、インバランス異常とトルク変動との双方に適切に対処することができる。
【０００８】
２．上記１記載の内燃機関の制御装置において、前記内燃機関のトルク変動量が大きい場合に小さい場合よりも点火時期を進角させる進角処理と、前記ディザ制御処理の実行中に前記トルク変動量が大きくなる場合、前記進角処理の実行に先立って前記制限処理を実行する調停処理と、を実行する。
【０００９】
トルク変動量が大きい場合には小さい場合よりも排気中の未燃燃料量と酸素量とが多くなる傾向があることから、排気浄化装置に酸素と未燃燃料とが流入し排気浄化装置において未燃燃料が燃焼することにより、排気浄化装置の温度が上昇しやすい。そこで、進角処理によってトルク変動量が大きい場合に小さい場合よりも点火時期を進角させる。これにより、トルク変動量が大きくなる燃焼状態に起因して排気浄化装置の温度が上昇しやすい傾向と点火時期の遅角によって排気温度が高くなることとによって排気浄化装置の温度が過度に高くなることを抑制できる。ただし、ディザ制御処理の実行中にトルク変動量が大きくなる場合に第２制限要求処理に基づきディザ制御処理を制限する処理と、進角処理とを同時に実行すると、トルク変動量の増大がディザ制御処理の制限と点火時期の進角側設定とのいずれによって収まるかがはっきりせず、それら双方の対策の実行および停止のハンチングが生じやすくなるおそれがある。そこで上記構成では、調停処理によって、まずディザ制御処理を制限することにより、そうしたハンチングの発生を抑制する。
【００１０】
３．上記２記載の内燃機関の制御装置において、前記内燃機関のクランク軸の回転速度および負荷に応じて前記点火時期の要求遅角量を設定する遅角要求量設定処理を実行し、前記進角処理は、前記トルク変動量に応じて前記要求遅角量を減少補正する処理である。
【００１１】
上記構成では、要求遅角量を減少補正することによって進角処理を実現することにより、たとえば進角補正量自体を算出する処理によって進角処理を実現する場合と比較すると、回転速度や負荷を参照することなく進角処理を実現しやすい。
【００１２】
４．上記２または３記載の内燃機関の制御装置において、前記進角処理は、前記ばらつき度合いが大きい場合に小さい場合よりも前記点火時期を進角させる処理を含む。
上記ばらつき度合いが大きい場合には小さい場合よりも、排気浄化装置に酸素と未燃燃料とが流入し排気浄化装置において未燃燃料が燃焼することにより、排気浄化装置の温度が上昇しやすい。そこで、進角処理によってばらつき度合いが大きい場合に小さい場合よりも点火時期に対する要求をより進角側とする。これにより、ばらつきに起因して排気浄化装置の温度が上昇しやすい傾向と点火時期の遅角によって排気温度が高くなることとによって排気浄化装置の温度が過度に高くなることを抑制できる。
【００１３】
５．上記２〜４のいずれか１つに記載の内燃機関の制御装置において、前記第２制限要求処理は、前記トルク変動量が小さい状態から大きい状態に変化することに応じた前記絶対値に対する要求の変化速度に対して、前記トルク変動量が大きい状態から小さい状態に変化することに応じた前記絶対値に対する要求の変化速度を小さくする処理を含む。
【００１４】
トルク変動が大きくなる場合、排気浄化装置に未燃燃料と酸素が流入して排気浄化装置の温度が上昇するおそれがあるため、上記絶対値を迅速に小さくしてディザ制御による排気浄化装置の温度上昇を低減することが望まれる。一方、トルク変動が大きい状態から小さい状態に変化したときに、仮に上記絶対値を急速に大きくすると、トルクが急激に小さくなるおそれがある。これは、全ての気筒の空燃比を目標空燃比とする場合と比較してリッチ燃焼気筒のトルクが大きくなる度合いよりもリーン燃焼気筒のトルクが小さくなる度合いの方が大きいため、上記絶対値が大きい場合に小さい場合よりもトルクが小さくなるためである。そのため、トルク変動量が大きくなった際に排気浄化装置の温度上昇を迅速に抑制することと、トルク変動量が小さくなったときに内燃機関の軸トルクが急激に小さくなることを抑制しつつ本来の上記絶対値に戻すこととを狙って、上記速度の設定をした。
【図面の簡単な説明】
【００１５】
【図１】内燃機関の制御装置にかかる一実施形態および内燃機関を示す図。
【図２】同実施形態にかかる制御装置が実行する処理の一部を示すブロック図。
【図３】同実施形態にかかる点火時期の設定処理を例示する図。
【図４】同実施形態にかかる回転変動量の算出処理を示す図。
【図５】同実施形態にかかるディザ制限係数算出処理の手順を示す流れ図。
【図６】同実施形態にかかるディザ用第２補正係数の徐変処理の手順を示す流れ図。
【図７】同実施形態にかかる遅角制限係数算出処理の手順を示す流れ図。
【発明を実施するための形態】
【００１６】
以下、内燃機関の制御装置にかかる一実施形態について図面を参照しつつ説明する。
図１に示す内燃機関１０は、車両に搭載される。内燃機関１０において、吸気通路１２から吸入された空気は、過給機１４を介して気筒＃１〜＃４のそれぞれの燃焼室１６に流入する。気筒＃１〜＃４のそれぞれには、燃料を噴射する燃料噴射弁１８と、火花放電を生じさせる点火装置２０とが設けられている。燃焼室１６において、空気と燃料との混合気は、燃焼に供され、燃焼に供された混合気は、排気として、排気通路２２に排出される。排気通路２２のうちの過給機１４の下流には、酸素吸蔵能力を有した三元触媒２４が設けられている。
【００１７】
制御装置３０は、内燃機関１０を制御対象とし、その制御量（トルク、排気成分等）を制御するために、燃料噴射弁１８や点火装置２０等の内燃機関１０の操作部を操作する。この際、制御装置３０は、三元触媒２４の上流側に設けられた空燃比センサ４０によって検出される上流側空燃比Ａｆｕや、三元触媒２４の下流側に設けられた空燃比センサ４２によって検出される下流側空燃比Ａｆｄを参照する。また制御装置３０は、クランク角センサ４４の出力信号Ｓｃｒ、エアフローメータ４６によって検出される吸入空気量Ｇａ、水温センサ４８によって検出される内燃機関１０の冷却水の温度（水温ＴＨＷ）を参照する。制御装置３０は、ＣＰＵ３２、ＲＯＭ３４、および電気的に書き換え可能な不揮発性メモリ３６を備えており、ＲＯＭ３４に記憶されたプログラムをＣＰＵ３２が実行することにより上記制御量の制御を実行する。
【００１８】
図２に、ＲＯＭ３４に記憶されたプログラムをＣＰＵ３２が実行することにより実現される処理の一部を示す。
ベース噴射量算出処理Ｍ１０は、クランク角センサ４４の出力信号Ｓｃｒに基づき算出された回転速度ＮＥと吸入空気量Ｇａとに基づき、燃焼室１６における混合気の空燃比を目標空燃比に開ループ制御するための操作量である開ループ操作量として、ベース噴射量Ｑｂを算出する処理である。
【００１９】
目標値設定処理Ｍ１２は、燃焼室１６における混合気の空燃比を上記目標空燃比に制御するためのフィードバック制御量の目標値Ａｆ＊を設定する処理である。詳しくは、本実施形態では、目標値設定処理Ｍ１２は、下流側空燃比Ａｆｄを目標値にフィードバック制御するための操作量によって、目標値Ａｆ＊を補正する処理を含む。
【００２０】
ローパスフィルタ処理Ｍ１４は、上流側空燃比Ａｆｕの高周波成分を除去して空燃比Ａｆを算出する処理である。
フィードバック処理Ｍ１６は、フィードバック制御量である空燃比Ａｆを目標値Ａｆ＊にフィードバック制御するための操作量であるフィードバック操作量ＫＡＦを算出する。本実施形態では、目標値Ａｆ＊と空燃比Ａｆとの差を入力とする比例要素、積分要素、および微分要素の各出力値の和を、ベース噴射量Ｑｂの補正比率δとし、フィードバック操作量ＫＡＦを、「１＋δ」とする。
【００２１】
要求噴射量算出処理Ｍ１８は、ベース噴射量Ｑｂにフィードバック操作量ＫＡＦを乗算することによってベース噴射量Ｑｂを補正し、要求噴射量Ｑｄを算出する処理である。
要求値出力処理Ｍ２０は、内燃機関１０の気筒＃１〜＃４のそれぞれから排出される排気全体の成分を、気筒＃１〜＃４の全てで燃焼対象とする混合気の空燃比を目標空燃比とした場合と同等としつつも、燃焼対象とする混合気の空燃比を気筒間で異ならせるディザ制御の噴射量補正要求値αを算出して出力する。ここで、本実施形態にかかるディザ制御では、第１の気筒＃１〜第４の気筒＃４のうちの１つの気筒を、混合気の空燃比を理論空燃比よりもリッチとするリッチ燃焼気筒とし、残りの３つの気筒を、混合気の空燃比を理論空燃比よりもリーンとするリーン燃焼気筒とする。そして、リッチ燃焼気筒における噴射量を、上記要求噴射量Ｑｄの「１＋α」倍とし、リーン燃焼気筒における噴射量を、要求噴射量Ｑｄの「１−（α／３）」倍とする。リーン燃焼気筒とリッチ燃焼気筒との上記噴射量の設定によれば、気筒＃１〜＃４のそれぞれに充填される空気量が同一であるなら、内燃機関１０の各気筒＃１〜＃４から排出される排気全体の成分を、気筒＃１〜＃４の全てで燃焼対象とする混合気の空燃比を目標空燃比とした場合と同等とすることができる。なお、上記噴射量の設定によれば、気筒＃１〜＃４のそれぞれに充填される空気量が同一であるなら、各気筒において燃焼対象とされる混合気の燃空比の平均値の逆数が目標空燃比となる。なお、燃空比とは、空燃比の逆数のことである。
【００２２】
要求値出力処理Ｍ２０により、三元触媒２４の暖機要求が生じる場合や、三元触媒２４に堆積した硫黄の被毒回復処理の実行要求が生じる場合に、噴射量補正要求値αがゼロよりも大きい値とされる。ここで、三元触媒２４の暖機要求は、内燃機関１０の始動からの吸入空気量Ｇａの積算値ＩｎＧａが第１規定値Ｉｎｔｈ１以上である旨の条件（ア）と、積算値ＩｎＧａが第２規定値Ｉｎｔｈ２以下であって且つ水温ＴＨＷが所定温度ＴＨＷｔｈ以下である旨の条件（イ）との論理積が真である場合に生じるものとする。なお、条件（ア）は、三元触媒２４の上流側の端部の温度が活性温度となっていると判定される条件である。また、条件（イ）は、三元触媒２４の全体が未だ活性状態とはなっていないと判定される条件である。また、硫黄被毒回復処理の実行要求は、三元触媒２４の硫黄被毒量が予め定められた値以上となる場合に生じるとすればよく、また硫黄被毒量は、たとえば要求噴射量Ｑｄが大きいほど被毒量の増加量を多く算出し、増加量を積算することによって算出すればよい。
【００２３】
詳しくは、要求値出力処理Ｍ２０は、回転速度ＮＥおよび負荷率ＫＬに基づき、噴射量補正要求値αを可変設定する処理を含む。具体的には、ＲＯＭ３４に、入力変数としての回転速度ＮＥおよび負荷率ＫＬと出力変数としての噴射量補正要求値αとの関係を定めたマップデータを記憶しておき、ＣＰＵ３２がこれを用いて噴射量補正要求値αをマップ演算すればよい。なお、マップとは、入力変数の離散的な値と、入力変数の値のそれぞれに対応する出力変数の値と、の組データである。またマップ演算は、たとえば、入力変数の値がマップデータの入力変数の値のいずれかに一致する場合、対応する出力変数の値を演算結果とし、一致しない場合、組データに含まれる複数の出力変数の値の補間によって得られる値を演算結果とする処理とすればよい。ちなみに、負荷率ＫＬは、基準流入空気量に対する、１気筒の１燃焼サイクル当たりの流入空気量の比であり、筒内充填空気量を定量化したものである。なお、基準流入空気量は、回転速度ＮＥに応じて可変設定してもよい。
【００２４】
ディザ制限処理Ｍ２２は、噴射量補正要求値αにディザ制限係数Ｋｄを乗算した値によって、噴射量補正要求値αを更新する処理である。
補正係数算出処理Ｍ２４は、「１」に、噴射量補正要求値αを加算して、リッチ燃焼気筒に関し、要求噴射量Ｑｄの補正係数を算出する処理である。ディザ補正処理Ｍ２６は、要求噴射量Ｑｄに補正係数「１＋α」を乗算することによって、リッチ燃焼気筒とされる気筒＃ｗの噴射量指令値Ｑ＊を算出する処理である。ここで、「ｗ」は、「１」〜「４」のいずれかを意味する。
【００２５】
乗算処理Ｍ２８は、噴射量補正要求値αを「−１／３」倍する処理であり、補正係数算出処理Ｍ３０は、「１」に、乗算処理Ｍ２８の出力値を加算して、リーン燃焼気筒に関し、要求噴射量Ｑｄの補正係数を算出する処理である。ディザ補正処理Ｍ３２は、要求噴射量Ｑｄに補正係数「１−（α／３）」を乗算することによって、リーン燃焼気筒とされる気筒＃ｘ，＃ｙ，＃ｚの噴射量指令値Ｑ＊を算出する処理である。ここで、「ｘ」，「ｙ」，「ｚ」は、「１」〜「４」のいずれかであって、且つ、「ｗ」，「ｘ」，「ｙ」，「ｚ」は、互いに異なるものとする。
【００２６】
噴射量操作処理Ｍ３４は、ディザ補正処理Ｍ２６が出力する噴射量指令値Ｑ＊に基づき、リッチ燃焼気筒とされる気筒＃ｗの燃料噴射弁１８の操作信号ＭＳ１を生成して、同燃料噴射弁１８に出力し、同燃料噴射弁１８から噴射される燃料量が噴射量指令値Ｑ＊に応じた量となるように燃料噴射弁１８を操作する。また、噴射量操作処理Ｍ３４は、ディザ補正処理Ｍ３２が出力する噴射量指令値Ｑ＊に基づき、リーン燃焼気筒とされる気筒＃ｘ，＃ｙ，＃ｚの燃料噴射弁１８の操作信号ＭＳ１を生成して、同燃料噴射弁１８に出力し、同燃料噴射弁１８から噴射される燃料量が噴射量指令値Ｑ＊に応じた量となるように燃料噴射弁１８を操作する。
【００２７】
ベース点火時期設定処理Ｍ４０は、回転速度ＮＥ、負荷率ＫＬおよび目標値Ａｆ＊に基づき、ベース点火時期ＳＡｂａｓｅを設定する処理である。図３に実線にて示すように、ベース点火時期ＳＡｂａｓｅは、エンジントルクの発生効率が最大となる点火時期であるＭＢＴ（Minimum advance for Best Torque）点火時期と、ノッキングの発生を回避可能な点火時期の進角限界であるノック要求点火時期との２つの点火時期のうち、いずれか遅角側の時期である。これは、回転速度ＮＥ、負荷率ＫＬおよび目標値Ａｆ＊を入力変数とし、ベース点火時期ＳＡｂａｓｅを出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２によりベース点火時期ＳＡｂａｓｅをマップ演算することにより実現できる。
【００２８】
図２に戻り、要求遅角量設定処理Ｍ４２は、燃焼圧が急速に上昇することに起因した車両の振動や騒音を抑制するための遅角量である要求遅角量ΔＳＡを算出する処理である。これは、本実施形態の内燃機関１０が高圧縮比化されたものであることに起因して燃焼室１６内における混合気の燃焼が高速となることを背景としている。詳しくは、要求遅角量設定処理Ｍ４２は、回転速度ＮＥ、負荷率ＫＬおよび目標値Ａｆ＊に基づき、要求遅角量ΔＳＡを可変設定する処理である。これは、回転速度ＮＥ、負荷率ＫＬおよび目標値Ａｆ＊を入力変数とし、要求遅角量ΔＳＡを出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２により要求遅角量ΔＳＡをマップ演算することにより実現できる。
【００２９】
遅角制限処理Ｍ４４は、要求遅角量ΔＳＡに後述する遅角制限係数Ｋｓを乗算する処理であり、点火遅角処理Ｍ４６は、ベース点火時期ＳＡｂａｓｅから「Ｋｓ・ΔＳＡ」を減算して点火時期ＳＡを算出する処理である。なお、点火時期ＳＡは、進角側であるほど大きい値とされる量とする。
【００３０】
点火操作処理Ｍ４８は、点火時期ＳＡに応じて点火装置２０を操作すべく操作信号ＭＳ２を点火装置２０に出力する。
リッチインバランス学習処理Ｍ５０は、リッチインバランスの学習値（リッチ学習値Ｌｒ）を算出し、リッチ学習値Ｌｒを不揮発性メモリ３６に記憶する処理である。ここで、リッチインバランスとは、全ての気筒＃１〜＃４における混合気の空燃比を同一の値に制御するように各気筒＃１〜＃４の燃料噴射弁１８を操作する場合に、特定の気筒の空燃比が上記同一の値に対してリッチ側にずれることである。詳しくは、リッチインバランス学習処理Ｍ５０は、上流側空燃比Ａｆｕの時系列データから上流側空燃比Ａｆｕの所定時間当たりの変化量である時間変化ΔＡｆを算出し、これに基づき、リッチ学習値Ｌｒを算出する処理を含む。ここでは、時間変化ΔＡｆが大きい場合に小さい場合よりもリッチインバランスが大きいとして、リッチ学習値Ｌｒが大きい値に算出される。ただし、時間変化ΔＡｆは、リッチインバランスのみならず、回転速度ＮＥや負荷率ＫＬによっても変化するため、回転速度ＮＥおよび負荷率ＫＬから規格化係数が定められ、時間変化ΔＡｆが規格化係数で除算されて規格化される。これは、回転速度ＮＥおよび負荷率ＫＬを入力変数とし、規格化係数を出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２により規格化係数をマップ演算することにより実現される。
【００３１】
またリッチインバランス学習処理Ｍ５０は、不揮発性メモリ３６に記憶されているリッチ学習値Ｌｒを、新たに規格化された値に基づき更新する処理を含む。ここでは、不揮発性メモリ３６に記憶される値を、それまで不揮発性メモリ３６に記憶されていた値と、今回新たに規格化された値との指数移動平均処理値に更新すればよい。さらに、リッチインバランス学習処理Ｍ５０は、リッチ学習値Ｌｒが所定値以上となる場合、図１に示した警告灯５０を操作して異常がある旨を車両のユーザに通知する処理を含む。
【００３２】
リーンインバランス学習処理Ｍ５２は、リーンインバランスの学習値（リーン学習値Ｌｌ）を算出し、不揮発性メモリ３６に記憶する処理である。ここで、リーンインバランスとは、全ての気筒＃１〜＃４における混合気の空燃比を同一の値に制御するように各気筒＃１〜＃４の燃料噴射弁１８を操作する場合に、特定の気筒の空燃比が上記同一の値に対してリーン側にずれることである。詳しくは、リーンインバランス学習処理Ｍ５２は、クランク角センサ４４の出力信号Ｓｃｒから算出される各気筒＃１〜＃４のＴＤＣを含む３０°の回転角度領域における回転速度である瞬時速度ωｌの時系列データを取得し、一対の気筒の瞬時速度ωｌ同士の差Δωｌ（絶対値）に基づきリーン学習値Ｌｌを算出する処理を含む。ここで、一対の気筒は、たとえば圧縮上死点が出現する順序が互いに隣り合う一対の気筒とすればよい。また、差Δωｌが大きい場合に小さい場合よりもリーンインバランスの度合いが大きいとして、リーン学習値Ｌｌが大きい値とされる。ただし、差Δωｌは、リーンインバランスのみならず、回転速度ＮＥや負荷率ＫＬによっても変化するため、回転速度ＮＥおよび負荷率ＫＬから規格化係数が定められ、差Δωｌが規格化係数で除算されて規格化される。これは、回転速度ＮＥおよび負荷率ＫＬを入力変数とし、規格化係数を出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２により規格化係数をマップ演算することにより実現される。
【００３３】
また、リーンインバランス学習処理Ｍ５２は、不揮発性メモリ３６に記憶されているリーン学習値Ｌｌを新たに規格化した値に基づき更新する処理を含む。ここでは、不揮発性メモリ３６に記憶される値が、不揮発性メモリ３６に記憶されていた値と、新たに規格化した値との指数移動平均処理値に更新される。さらに、リーンインバランス学習処理Ｍ５２は、リーン学習値Ｌｌが所定値以上となる場合、図１に示した警告灯５０を操作して異常がある旨を車両のユーザに通知する処理を含む。
【００３４】
回転変動量算出処理Ｍ５４は、出力信号Ｓｃｒに基づき、回転変動量Δωが規格化された値（回転変動量Δωｎ）を算出する処理である。ここで、回転変動量Δωは、圧縮上死点を１回のみ含む所定角度間隔の回転速度（瞬時回転速度ω）を、圧縮上死点の出現タイミングが時系列的に隣り合う一対の気筒のうちの先に圧縮上死点が出現する気筒における値から後に圧縮上死点が出現する気筒における値を減算した値の絶対値である。
【００３５】
図４に、回転変動量算出処理Ｍ５４の詳細を示す。図４には、正常の場合の回転変動量Δωの頻度分布Ｎ１と、失火時の回転変動量Δωの頻度分布Ｎ２とを示している。正常側閾値Δｔｈｎは、頻度分布Ｎ１の平均よりも回転変動量Δωが大きい値となっており、異常側閾値Δｔｈｗは、頻度分布Ｎ２の平均よりも回転変動量Δωが小さい値となっており、正常側閾値Δｔｈｎよりも異常側閾値Δｔｈｗの方が大きい値となっている。回転変動量算出処理Ｍ５４は、頻度分布Ｎ１，Ｎ２が回転速度ＮＥおよび負荷率ＫＬに応じて変化することに鑑み、正常側閾値Δｔｈｎおよび異常側閾値Δｔｈｗを、回転速度ＮＥおよび負荷率ＫＬに応じて可変設定する処理を含む。詳しくは、回転速度ＮＥおよび負荷率ＫＬを入力変数とし正常側閾値Δｔｈｎを出力変数とするマップデータと、回転速度ＮＥおよび負荷率ＫＬを入力変数とし異常側閾値Δｔｈｗを出力変数とするマップデータとをＲＯＭ３４に記憶しておき、正常時閾値Δｔｈｎおよび異常時閾値ΔｔｈｗをＣＰＵ３２によりマップ演算すればよい。また、回転変動量算出処理Ｍ５４は、回転変動量Δωが正常側閾値Δｔｈｎ以下の場合、回転変動量Δωｎを「０」とし、異常側閾値Δｔｈｗ以上場合、回転変動量Δωｎを「１」とし、正常側閾値Δｔｈｎよりも大きく異常側閾値Δｔｈｗよりも小さい場合、回転変動量Δωが大きいほど回転変動量Δωｎを大きい値とする。これにより、規格化された回転変動量Δωｎは、「０」以上「１」以下の値となる。
【００３６】
図２に戻り、ディザ制限係数算出処理Ｍ５６は、リッチ学習値Ｌｒ、リーン学習値Ｌｌおよび回転変動量Δωｎに基づき、ディザ制限係数Ｋｄを算出する処理である。
図５に、ディザ制限係数算出処理Ｍ５６の手順を示す。図５に示す処理は、ＲＯＭ３４に記憶されたプログラムをＣＰＵ３２がたとえば所定周期で繰り返し実行することにより実現される。なお、以下では、先頭に「Ｓ」が付与された数字によってステップ番号を表現する。
【００３７】
図５に示す一連の処理において、ＣＰＵ３２は、不揮発性メモリ３６からリッチ学習値Ｌｒおよびリーン学習値Ｌｌを読み出すことによってリッチ学習値Ｌｒおよびリーン学習値Ｌｌを取得する（Ｓ１０）。次にＣＰＵ３２は、リッチ学習値Ｌｒおよびリーン学習値Ｌｌに基づき、ディザ用第１補正係数Ｋｄｉを算出する（Ｓ１２）。ディザ用第１補正係数Ｋｄｉは、ディザ制限係数Ｋｄの元となる係数である。詳しくはＣＰＵ３２は、リッチ学習値Ｌｒが上記所定値以上であることとリーン学習値Ｌｌが上記所定値以上であることとの論理和が真である場合、ディザ用第１補正係数Ｋｄｉを「０」とし、論理和が偽である場合、ディザ用第１補正係数Ｋｄｉを「１」とする。これは、リッチインバランスの度合いやリーンインバランスの度合いが大きい場合には、インバランスに起因して三元触媒２４の温度が高くなるため、噴射量補正要求値αに応じてディザ制御を実行したのでは、三元触媒２４の温度が過度に高くなるおそれがあることに鑑みてなされるものである。すなわち、インバランス度合いが大きい場合、ディザ用第１補正係数Ｋｄｉを「０」とすることにより、後述する処理によってディザ制限係数Ｋｄが「０」とされ、ディザ制御が禁止される。
【００３８】
次にＣＰＵ３２は、ディザ用第１補正係数Ｋｄｉがディザ用第１ガード値Ｋｄｉｔｈよりも小さいか否かを判定する（Ｓ１４）。ここで、ＣＰＵ３２には、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷに応じてディザ用第１ガード値Ｋｄｉｔｈを「０」から「１」の範囲で可変設定する。詳しくは、ＣＰＵ３２は、回転速度ＮＥおよび負荷率ＫＬによって規定される内燃機関１０の動作点から排気温度を把握し、把握される動作点に応じた排気温度が低い場合に高い場合よりもディザ用第１補正係数Ｋｄｉを大きい値に設定する。これは、もともとの排気温度が低い場合には、インバランスに起因して三元触媒２４の温度が上昇しやすい状態であるとしても、三元触媒２４の温度が過度に上昇することはないとの考えに基づくものである。また、ＣＰＵ３２は、水温ＴＨＷが低い場合に高い場合よりもディザ用第１ガード値Ｋｄｉｔｈを大きい値に設定する。これは、水温ＴＨＷが低い場合には高い場合よりも三元触媒２４の温度が低い傾向があり、インバランスに起因して三元触媒２４の温度が上昇しやすい状態であるとしても、三元触媒２４の温度が過度に上昇することはないとの考えに基づくものである。具体的には、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷを入力変数としディザ用第１ガード値Ｋｄｉｔｈを出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２によりディザ用第１ガード値Ｋｄｉｔｈをマップ演算すればよい。
【００３９】
ＣＰＵ３２は、ディザ用第１ガード値Ｋｄｉｔｈよりも小さいと判定する場合（Ｓ１４：ＹＥＳ）、ディザ用第１補正係数Ｋｄｉにディザ用第１ガード値Ｋｄｉｔｈを代入する（Ｓ１６）。ＣＰＵ３２は、Ｓ１６の処理が完了する場合や、Ｓ１４の処理において否定判定する場合には、規格化された回転変動量Δωｎを取得する（Ｓ１８）。そしてＣＰＵ３２は、回転変動量Δωｎに基づき、ディザ用第２補正係数Ｋｄｍを算出する（Ｓ２０）。ディザ用第２補正係数Ｋｄｍは、ディザ制限係数Ｋｄの元となる係数である。ＣＰＵ３２は、ディザ用第２補正係数Ｋｄｍを、回転変動量Δωｎが所定値以下の場合「１」とし、所定値よりも大きい規定値以上の場合に「０」とし、所定値よりも大きく規定値未満の場合、回転変動量Δωｎが大きい場合に小さい場合よりもディザ用第２補正係数Ｋｄｍを小さい値とする。これは、失火やそれに準じた燃焼状態となる場合、未燃燃料および酸素が三元触媒２４に流入し三元触媒２４において燃焼することにより三元触媒２４の温度が上昇するため、噴射量補正要求値αに応じてディザ制御を実行する場合には、三元触媒２４の温度が過度に上昇するおそれがあることに鑑みた設定である。すなわち、回転変動量Δωｎが大きい場合、ディザ用第２補正係数Ｋｄｍを「０」に近づけることにより、後述する処理によってディザ制限係数Ｋｄが「０」に近づけられ、噴射量補正要求値αの大きさが小さい側に制限される。
【００４０】
次にＣＰＵ３２は、ディザ用第２補正係数Ｋｄｍの徐変処理を実行する（Ｓ２２）。
図６に、徐変処理の手順を示す。図６に示す処理は、ＲＯＭ３４に記憶されたプログラムをＣＰＵ３２がたとえば所定周期で繰り返し実行することにより実現される。
【００４１】
図６に示す一連の処理において、ＣＰＵ３２は、まず、上述のＳ２０の処理によって今回算出されたディザ用第２補正係数Ｋｄｍ（ｎ）が前回算出されたディザ用第２補正係数Ｋｄｍ（ｎ−１）よりも小さいか否かを判定する（Ｓ３０）。ＣＰＵ３２は、今回算出されたディザ用第２補正係数Ｋｄｍ（ｎ）が前回算出されたディザ用第２補正係数Ｋｄｍ（ｎ−１）以上であると判定する場合（Ｓ３０：ＮＯ）、ディザ用第２補正係数Ｋｄｍ（ｎ）からディザ用第２補正係数Ｋｄｍ（ｎ−１）を減算した値が徐変値ΔＫよりも大きいか否かを判定する（Ｓ３２）。ＣＰＵ３２は、徐変値ΔＫよりも大きいと判定する場合（Ｓ３２：ＹＥＳ）、前回算出されたディザ用第２補正係数Ｋｄｍ（ｎ−１）に徐変値ΔＫを加算した値を今回算出されたディザ用第２補正係数Ｋｄｍ（ｎ）に代入する（Ｓ３４）。この処理は、ディザ用第２補正係数Ｋｄｍの増加速度を徐変値ΔＫによって制限する処理である。この処理は、噴射量補正要求値αを増大させる速度を制限するための処理である。なお、ＣＰＵ３２は、Ｓ３４の処理が完了する場合やＳ３０の処理において肯定判定する場合、Ｓ３２の処理において否定判定する場合には、図６に示す処理を一旦終了する。
【００４２】
図５に戻り、ＣＰＵ３２は、ディザ用第２補正係数Ｋｄｍがディザ用第２ガード値Ｋｄｍｔｈよりも小さいか否かを判定する（Ｓ２４）。ここで、ＣＰＵ３２は、ディザ用第２ガード値Ｋｄｍｔｈを、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷに応じて「０」から「１」の範囲で可変設定する。詳しくは、ＣＰＵ３２は、回転速度ＮＥおよび負荷率ＫＬによって規定される内燃機関１０の動作点から排気温度を把握し、把握される動作点に応じた排気温度が低い場合に高い場合よりもディザ用第２ガード値Ｋｄｍｔｈを大きい値に設定する。これは、もともとの排気温度が低い場合には、失火等に起因して三元触媒２４の温度が上昇しやすい状態であるとしても、三元触媒２４の温度が過度に上昇することはないとの考えに基づくものである。また、ＣＰＵ３２は、水温ＴＨＷが低い場合に高い場合よりもディザ用第２ガード値Ｋｄｍｔｈを大きい値に設定する。これは、水温ＴＨＷが低い場合には高い場合よりも三元触媒２４の温度が低い傾向があり、失火等に起因して三元触媒２４の温度が上昇しやすい状態であるとしても、三元触媒２４の温度が過度に上昇することはないとの考えに基づくものである。具体的には、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷを入力変数としディザ用第２ガード値Ｋｄｍｔｈを出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２によりディザ用第２ガード値Ｋｄｍｔｈをマップ演算すればよい。
【００４３】
ＣＰＵ３２は、ディザ用第２ガード値Ｋｄｍｔｈよりも小さいと判定する場合（Ｓ２４：ＹＥＳ）、ディザ用第２補正係数Ｋｄｍにディザ用第２ガード値Ｋｄｍｔｈを代入する（Ｓ２６）。ＣＰＵ３２は、Ｓ２６の処理が完了する場合やＳ２４の処理において否定判定する場合には、ディザ制限係数Ｋｄに、ディザ用第１補正係数Ｋｄｉとディザ用第２補正係数Ｋｄｍとのうちの小さい方を代入する（Ｓ２８）。なお、ＣＰＵ３２は、Ｓ２８の処理が完了する場合、図５に示す一連の処理を一旦終了する。
【００４４】
図２に戻り、遅角制限係数算出処理Ｍ５８は、リッチ学習値Ｌｒ、リーン学習値Ｌｌおよび回転変動量Δωｎに基づき、遅角制限係数Ｋｓを算出する処理である。
図７に、遅角制限係数算出処理Ｍ５８の手順を示す。図７に示す処理は、ＲＯＭ３４に記憶されたプログラムをＣＰＵ３２がたとえば所定周期で繰り返し実行することにより実現される。
【００４５】
図７に示す一連の処理において、ＣＰＵ３２は、Ｓ４０〜Ｓ４６の処理において、図５のＳ１０〜Ｓ１６の処理に対応する処理を実行する。ここで、Ｓ４０〜Ｓ４６の処理においては、ディザ用第１補正係数Ｋｄｉに代えて、遅角制限係数Ｋｓの元となる点火用第１補正係数Ｋｓｉが用いられ、ディザ用第１ガード値Ｋｄｉｔｈに代えて点火用第１ガード値Ｋｓｉｔｈが用いられる。ここで、Ｓ４２の処理においては、Ｓ１２の処理においてディザ用第１補正係数Ｋｄｉがゼロとされる場合に点火用第１補正係数Ｋｓｉがゼロとなる。また、点火用第１ガード値Ｋｓｉｔｈは、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷに応じて「０」から「１」の範囲で可変設定される。
【００４６】
次にＣＰＵ３２は、Ｓ４６の処理が完了する場合やＳ４４の処理において否定判定する場合には、噴射量補正要求値αが閾値αｔｈよりも小さいか否かを判定する（Ｓ４７）。本実施形態において、閾値αｔｈは、要求値出力処理Ｍ２０が設定する噴射量補正要求値αのうちゼロではない値の最小値よりも小さい値に設定されている。Ｓ４７の処理は、ディザ制御がなされていないことと図５の処理によってディザ制御が制限されていることとの論理和が真であるか否かを判定する処理となっている。
【００４７】
ＣＰＵ３２は、閾値αｔｈよりも小さいと判定する場合（Ｓ４７：ＹＥＳ）、Ｓ４８〜Ｓ５８の処理において、上記Ｓ１８〜Ｓ２８の処理に対応する処理を実行する。ここで、Ｓ４８〜Ｓ５８の処理においては、ディザ用第２補正係数Ｋｄｍに代えて、遅角制限係数Ｋｓの元となる点火用第２補正係数Ｋｓｍが用いられ、ディザ用第２ガード値Ｋｄｍｔｈに代えて、点火用第２ガード値Ｋｓｍｔｈが用いられ、ディザ制限係数Ｋｄに代えて遅角制限係数Ｋｓが用いられる。点火用第２補正係数Ｋｓｍは、「１」から「０」の値をとり、回転変動量Δωｎが大きい場合に小さい場合よりも小さい値となる。ただし、点火用第２補正係数Ｋｓｍが「１」となる回転変動量Δωｎがディザ用第２補正係数Ｋｄｍが「１」となる回転変動量Δωｎと一致するとは限らず、点火用第２補正係数Ｋｓｍが「０」となる回転変動量Δωｎがディザ用第２補正係数Ｋｄｍが「０」となる回転変動量Δωと一致するとは限らない。
【００４８】
なお、ＣＰＵ３２は、Ｓ５８の処理が完了する場合や、Ｓ４７の処理において否定判定する場合には、図７に示す一連の処理を一旦終了する。
ここで、本実施形態の作用および効果について説明する。
【００４９】
ＣＰＵ３２は、リッチ学習値Ｌｒやリーン学習値Ｌｌが所定値以上である場合、ディザ制限係数Ｋｄをゼロとし、ディザ制御を禁止する。これにより、インバランス異常に起因して三元触媒２４の温度が上昇しやすい傾向とディザ制御によって三元触媒２４の温度が上昇しやすいこととによって三元触媒２４の温度が過度に高くなることを抑制できる。また、ＣＰＵ３２は、失火等に起因して回転変動量Δωｎが大きい場合に小さい場合よりもディザ制限係数Ｋｄをゼロに近づける。これにより、失火等に起因して三元触媒２４の温度が上昇しやすい傾向とディザ制御によって排気温度が高くなることとによって三元触媒２４の温度が過度に高くなることを抑制できる。
【００５０】
特に本実施形態では、ディザ用第１補正係数Ｋｄｉとディザ用第２補正係数Ｋｄｍとのうちの小さい方をディザ制限係数Ｋｄとすることにより、インバランス異常と失火等の回転変動との双方に適切に対処することができる。
【００５１】
以上説明した本実施形態によれば、さらに以下に記載する作用および効果が得られる。
（１）回転変動量Δωｎが大きい場合に小さい場合よりも遅角制限係数Ｋｓを小さい値として点火遅角を制限することとするものの、ディザ制御の実行中に回転変動量Δωｎが大きくなる場合、点火遅角の制限に先立って噴射量補正要求値αを小さくなる側に制限した。これにより、点火遅角の制限と噴射量補正要求値αの制限とを同時に実行することに起因したハンチングの発生を抑制できる。ここで、ハンチングは、点火遅角の制限と噴射量補正要求値αの制限とを同時に実行することにより回転変動量Δωｎが小さくなった場合、その要因が点火遅角の制限によるものか噴射量補正要求値αの制限によるものかがはっきりしないことに起因して生じると考えられる。そして、ディザ制御の制限後に回転変動量Δωｎが大きい場合に小さい場合よりも遅角制限係数Ｋｓを小さい値として点火遅角を制限することにより、回転変動量Δωｎの増大に起因して三元触媒２４の温度が上昇しやすい傾向と点火時期の遅角によって排気温度が高くなることとによって三元触媒２４の温度が過度に高くなることを抑制できる。
【００５２】
（２）ＣＰＵ３２は、リッチ学習値Ｌｒやリーン学習値Ｌｌが所定値以上である場合、遅角制限係数Ｋｓを「０」とし、ベース点火時期ＳＡｂａｓｅを、要求遅角量ΔＳＡによって補正することなく、点火時期ＳＡとする。これにより、インバランス異常に起因して三元触媒２４の温度が上昇しやすい傾向と点火時期の遅角によって排気温度が高くなることとによって三元触媒２４の温度が過度に高くなることを抑制できる。
【００５３】
（３）ディザ用第２補正係数Ｋｄｍを小さい値に変更する場合よりもディザ用第２補正係数Ｋｄｍを大きい値に変更する場合に、その変化速度を小さくした。これにより、失火等が生じた場合には、噴射量補正要求値αを迅速に低減して三元触媒２４の温度上昇を抑制することができるとともに、失火等から回復するときには、噴射量補正要求値αを急激に増加させることに起因した内燃機関１０の軸トルクの急変を抑制できる。
【００５４】
（４）点火用第２補正係数Ｋｓｍを小さい値に変更する場合よりも点火用第２補正係数Ｋｓｍを大きい値に変更する場合に、その変化速度を小さくした。これにより、失火等が生じた場合には、点火時期の遅角量を迅速に低減して排気温度を低下させることができるとともに、失火等から回復するときには、点火時期を急激に遅角させることに起因した燃焼状態の急変を抑制できる。
【００５５】
＜対応関係＞
上記実施形態における事項と、上記「課題を解決するための手段」の欄に記載した事項との対応関係は、次の通りである。以下では、「課題を解決するための手段」の欄に記載した解決手段の番号毎に、対応関係を示している。［１］排気浄化装置は、三元触媒２４に対応し、ディザ制御処理は、噴射量補正要求値αがゼロよりも大きい場合における、補正係数算出処理Ｍ２４、ディザ補正処理Ｍ２６、乗算処理Ｍ２８、補正係数算出処理Ｍ３０、ディザ補正処理Ｍ３２、噴射量操作処理Ｍ３４に対応する。第１制限要求処理は、Ｓ１０〜Ｓ１６の処理に対応し、第２制限要求処理は、Ｓ１８〜Ｓ２６の処理に対応し、制限処理は、Ｓ２８の処理およびディザ制限処理Ｍ２２に対応する。［２］進角処理は、Ｓ４８〜Ｓ５８の処理、および遅角制限処理Ｍ４４に対応し、調停処理は、Ｓ４７の処理に対応する。［４］Ｓ４０〜Ｓ４６の処理に対応する。［５］図６の処理に対応する。
【００５６】
＜その他の実施形態＞
なお、本実施形態は、以下のように変更して実施することができる。本実施形態および以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【００５７】
・「第１制限要求処理について」
上記実施形態では、リッチ学習値Ｌｒおよびリーン学習値Ｌｌに基づきディザ用第１補正係数Ｋｄｉを設定したがこれに限らない。たとえば、「インバランス学習処理について」の欄に記載したように、リッチインバランスとリーンインバランスとを同一の学習値にて定量化する場合には、その単一の学習値に基づきディザ用第１補正係数Ｋｄｉを算出すればよい。
【００５８】
上記実施形態では、ディザ用第１補正係数Ｋｄｉの取りうる値を、「１」または「０」としたが、これに限らない。たとえば「０」以上「１」以下で任意の値をとりうるとし、インバランス度合いが大きい場合に小さい場合よりも小さい値となるようにしてもよい。
【００５９】
・「第２制限要求処理について」
上記実施形態では、ディザ用第２補正係数Ｋｄｍを、「０」以上「１」以下で任意の値をとりうるとしたが、これに限らない。たとえば、Ｓ２０の処理によって算出されるディザ用第２補正係数Ｋｄｍを「０」と「１」とのいずれかとしてもよい。
【００６０】
なお、Ｓ２２の徐変処理を含めることは必須ではない。
・「進角処理について」
上記実施形態では、リッチ学習値Ｌｒおよびリーン学習値Ｌｌに基づき点火用第１補正係数Ｋｓｉを設定したがこれに限らない。たとえば、「インバランス学習処理について」の欄に記載したように、リッチインバランスとリーンインバランスとを同一の学習値にて定量化する場合には、その単一の学習値に基づき点火用第１補正係数Ｋｓｉを算出すればよい。
【００６１】
上記実施形態では、点火用第１補正係数Ｋｓｉの取りうる値を、「１」または「０」としたが、これに限らない。たとえば「０」以上「１」以下で任意の値をとりうるとし、インバランス度合いが大きい場合に小さい場合よりも小さい値となるようにしてもよい。
【００６２】
なお、下記「点火時期の設定について」の欄に記載したように、ベース点火時期ＳＡｂａｓｅが要求遅角量ΔＳＡで補正された上記点火時期ＳＡ相当の量が内燃機関１０の動作点に基づき直接算出される場合、点火用第１補正係数Ｋｓｉに代えて、点火時期ＳＡを進角側に補正する補正量を算出すればよい。この場合、補正量の算出に、リッチ学習値Ｌｒおよびリーン学習値Ｌｌに加えて、回転速度ＮＥおよび負荷率ＫＬを用いることが望ましい。
【００６３】
上記実施形態では、点火用第２補正係数Ｋｓｍを、「０」以上「１」以下で任意の値をとりうるとしたが、これに限らない。たとえば、Ｓ５０の処理によって算出される点火用第２補正係数Ｋｓｍを「０」と「１」とのいずれかとしてもよい。
【００６４】
なお、下記「点火時期の設定について」の欄に記載したように、ベース点火時期ＳＡｂａｓｅが要求遅角量ΔＳＡで補正された上記点火時期ＳＡ相当の量が内燃機関１０の動作点に基づき直接算出される場合、点火用第２補正係数Ｋｓｍに代えて、点火時期ＳＡを進角側に補正する補正量を算出すればよい。この場合、補正量の算出に、回転変動量Δωに加えて、回転速度ＮＥおよび負荷率ＫＬを用いることが望ましい。
【００６５】
なお、Ｓ５２の徐変処理を含めることは必須ではない。
・「制限処理について」
上記「進角処理について」の欄に記載したように、点火用第１補正係数Ｋｓｉや点火用第２補正係数Ｋｓｍに代えて、点火時期ＳＡを進角側に補正する補正量を算出する場合、インバランス学習値に基づく補正量と回転変動量Δωｎに基づく補正量とのうちの大きい方を採用すればよい。
【００６６】
・「調停処理について」
上記実施形態では、閾値αｔｈを、要求値出力処理Ｍ２０が設定する噴射量補正要求値のうちのゼロよりも大きい値の最小値未満とし、それ以上に限定しなかったが、たとえば、閾値αｔｈをディザ制御が実行されていないことを判定するための値としてもよい。
【００６７】
・「インバランス学習処理について」
リッチ学習値Ｌｒを学習する学習処理としては、上記実施形態において例示したものに限らない。たとえば、上流側空燃比Ａｆｕの極大値と極小値との差に基づき、同差が大きい場合に小さい場合よりもリッチインバランスの度合いが大きいとしてリッチ学習値Ｌｒを算出してもよい。リッチ学習値Ｌｒを学習する学習処理としては、上流側空燃比Ａｆｕを用いるものにも限らない。たとえば、下流側空燃比Ａｆｄが目標空燃比に対してリーン側にずれる量が大きい場合に小さい場合よりもリッチインバランスの度合いが大きいとしてリッチ学習値Ｌｒを算出してもよい。
【００６８】
リーン学習値Ｌｌを学習する学習処理としては、上記実施形態において例示したものに限らない。たとえば、瞬時速度ωｌの算出に用いられる回転角度領域がＴＤＣを含まなくてもよく、またたとえば３０°ＣＡの回転角度領域の速度に限らず、たとえば６０°ＣＡの回転角度領域の速度等であってもよい。ただし、各気筒の燃焼行程に起因してクランク軸の回転速度が極大となる期間を含むことが望ましい。またたとえば、下流側空燃比Ａｆｄが目標空燃比に対してリーン側にずれる量が大きい場合に小さい場合よりもリーンインバランスの度合いが大きいとしてリーン学習値Ｌｌを算出してもよい。
【００６９】
リッチ学習値Ｌｒとリーン学習値Ｌｌとを各別に学習することは必須ではない。たとえば、下流側空燃比Ａｆｄが目標空燃比に対してリーン側にずれる量が大きい場合に小さい場合よりもリーンまたはリッチのインバランスの度合いが大きいとしてインバランスの度合いを学習してもよい。
【００７０】
インバランスの学習処理としては、空燃比センサの値や瞬時速度ωｌを用いるものに限らない。たとえば気筒＃１〜＃４のそれぞれに筒内圧センサを備えることとし、その検出値に基づき熱発生率を算出し、熱発生率に基づき噴射量を推定し、推定された噴射量のばらつきの度合いを定量化する処理であってもよい。
【００７１】
・「要求遅角量設定処理について」
上記実施形態では、目標値Ａｆ＊、回転速度ＮＥおよび負荷率ＫＬに基づき要求遅角量ΔＳＡを設定したが、これに限らない。たとえば、目標値Ａｆ＊に代えて、空燃比Ａｆを用いてもよい。またたとえば、負荷を、燃焼室１６内に充填される空気量自体としてもよい。またたとえば、負荷としての負荷率ＫＬに代えて、空燃比を目標空燃比に制御するための操作量としての燃料噴射弁１８の噴射量としてもよい。またたとえば、空燃比によらず、回転速度ＮＥおよび負荷に基づき要求遅角量ΔＳＡを設定してもよい。
【００７２】
上記実施形態では、要求遅角量ΔＳＡを、車両の振動や騒音を抑制するための遅角要求量としたが、これに限らない。たとえば、三元触媒２４の暖機処理のための要求遅角量であってもよい。
【００７３】
・「点火時期の設定について」
上記実施形態では、目標値Ａｆ＊、回転速度ＮＥおよび負荷率ＫＬに基づきベース点火時期ＳＡｂａｓｅを設定したが、これに限らない。たとえば、目標値Ａｆ＊に代えて、空燃比Ａｆを用いてもよい。またたとえば、負荷を、燃焼室１６内に充填される空気量自体としてもよい、またたとえば、負荷としての負荷率ＫＬに代えて、空燃比を目標空燃比に制御するための操作量としての燃料噴射弁１８の噴射量としてもよい。またたとえば、空燃比によらず、回転速度ＮＥおよび負荷に基づきベース点火時期ＳＡｂａｓｅを設定してもよい。
【００７４】
上記実施形態では、ベース点火時期ＳＡｂａｓｅを要求遅角量ΔＳＡによって補正することにより点火時期ＳＡを定めたがこれに限らない。たとえば、負荷率ＫＬ等の負荷および回転速度ＮＥによって規定される動作点に基づき、上記ベース点火時期ＳＡｂａｓｅが要求遅角量ΔＳＡで補正された点火時期ＳＡを直接算出してもよい。これは、たとえば回転速度ＮＥおよび負荷を入力変数とし点火時期ＳＡを出力変数とするマップデータをＲＯＭ３４に記憶しておき、ＣＰＵ３２により点火時期ＳＡをマップ演算することにより実現できる。なお、動作点に基づき点火時期ＳＡを直接算出する処理としては、動作点のみから算出する処理に限らず、たとえば、動作点および水温ＴＨＷに基づき算出する処理であってもよい。
【００７５】
・「トルク変動量について」
上記実施形態では、トルク変動量を、回転変動量Δωｎによって定量化したがこれに限らない。たとえば、気筒＃１〜＃４のそれぞれに燃焼室１６内の圧力を検出する筒内圧センサを備え、筒内圧センサの検出値の時系列データに基づき、各気筒の熱発生率を算出し、これに基づきトルクを算出することによって、気筒＃１〜＃４の燃焼行程に起因したトルク同士の相違を定量化したトルク変動量を算出してもよい。
【００７６】
・「ディザ制御処理について」
上記実施形態では、回転速度ＮＥおよび負荷率ＫＬに応じて噴射量補正要求値αを算出したが、これに限らない。たとえば、基本値α０を上限とし水温ＴＨＷに応じて可変設定される値に、回転速度ＮＥおよび負荷率ＫＬに基づき可変設定される補正係数を乗算した値を、噴射量補正要求値αとしてもよい。
【００７７】
またたとえば、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷの３つのパラメータに関しては、回転速度ＮＥおよび水温ＴＨＷのみに基づき噴射量補正要求値αを可変設定したり、負荷率ＫＬおよび水温ＴＨＷのみに基づき噴射量補正要求値αを可変設定したりしてもよい。さらに、回転速度ＮＥ、負荷率ＫＬおよび水温ＴＨＷの３つのパラメータのうちのいずれか１つのパラメータに基づいて噴射量補正要求値αを可変設定してもよい。また、たとえば内燃機関１０の動作点を特定するパラメータとして回転速度ＮＥおよび負荷率ＫＬを用いる代わりに、負荷としての負荷率ＫＬに代えて、たとえば負荷としてのアクセル操作量を用いてもよい。また、回転速度ＮＥおよび負荷に代えて、吸入空気量Ｇａに基づき噴射量補正要求値αを可変設定してもよい。
【００７８】
噴射量補正要求値αを、内燃機関の動作点に基づき「０」よりも大きい値で可変設定すること自体必須ではない。たとえば、三元触媒２４の暖機処理用のゼロよりも大きい単一の値と、硫黄被毒回復処理用のゼロよりも大きい単一の値とを定めてもよい。
【００７９】
上記実施形態では、リッチ燃焼気筒の数よりもリーン燃焼気筒の数を多くしたが、これに限らない。たとえば、リッチ燃焼気筒の数とリーン燃焼気筒の数とを同一としてもよい。またたとえば、全ての気筒＃１〜＃４を、リーン燃焼気筒かリッチ燃焼気筒かにするものに限らず、たとえば１つの気筒の空燃比を目標空燃比としてもよい。さらに、１燃焼サイクル内で、筒内充填空気量が同一であるなら燃空比の平均値の逆数が目標空燃比となることも必須ではない。たとえば、上記実施形態のように４気筒の場合において、筒内充填空気量が同一であるなら、５ストロークにおける燃空比の平均値の逆数が目標空燃比となるようにしてもよく、３ストロークにおける燃空比の平均値の逆数が目標空燃比となるようにしてもよい。ただし、１燃焼サイクルにおいて、リッチ燃焼気筒とリーン燃焼気筒との双方が存在する期間が少なくとも２燃焼サイクルに１回以上は生じることが望ましい。換言すれば、所定期間において筒内充填空気量が同一であるなら燃空比の平均値の逆数を目標空燃比とする際、所定期間を２燃焼サイクル以下とすることが望ましい。ここで、たとえば所定期間を２燃焼サイクルとして２燃焼サイクルの間に１度だけリッチ燃焼気筒が存在する場合、リッチ燃焼気筒とリーン燃焼気筒との出現順序は、リッチ燃焼気筒をＲ、リーン燃焼気筒をＬとすると、たとえば「Ｒ，Ｌ，Ｌ，Ｌ，Ｌ，Ｌ，Ｌ，Ｌ」となる。この場合、所定期間よりも短い１燃焼サイクルの期間であって「Ｒ，Ｌ，Ｌ，Ｌ」となる期間が設けられており、気筒＃１〜＃４のうちの一部がリーン燃焼気筒であり、別の気筒がリッチ燃焼気筒となっている。ただし、１燃焼サイクルとは異なる期間における燃空比の平均値の逆数を目標空燃比とする場合には、内燃機関が吸気行程において一旦吸入した空気の一部を吸気バルブが閉弁するまでに吸気通路に吹き戻す量が無視できることが望ましい。
【００８０】
・「排気浄化装置について」
上記構成では、排気浄化装置として、三元触媒２４を例示したがこれに限らない。たとえば、三元触媒２４の下流にガソリンパティキュレートフィルタ（ＧＰＦ）を備えてもよい。またたとえばＧＰＦのみであってもよい。ただし、その場合、ディザ制御による昇温効果を高めるうえでは、ＧＰＦに、酸素吸蔵能力を付与することが望ましい。
【００８１】
・「排気の昇温要求について」
昇温要求としては、上記実施形態において例示したものに限らない。たとえば、「排気浄化装置について」の欄に記載したように、ＧＰＦを備えるものにあっては、ＧＰＦが捕集した粒子状物質を燃焼させるためにＧＰＦの温度を上昇させる要求であってもよい。ちなみに、三元触媒２４の下流にＧＰＦを備える場合、リッチ燃焼気筒から排出された未燃燃料とリーン燃焼気筒から排出された酸素とを三元触媒２４にて反応させ、その反応熱によって三元触媒２４の下流の排気温を上昇させることによって、ＧＰＦを昇温させてもよい。またたとえば、排気通路２２への凝縮水の付着を抑制すべく排気通路２２を昇温するためにディザ制御による排気の昇温要求を生じさせてもよい。
【００８２】
・「制御装置について」
制御装置としては、ＣＰＵ３２とＲＯＭ３４とを備えて、ソフトウェア処理を実行するものに限らない。たとえば、上記実施形態においてソフトウェア処理されたものの少なくとも一部を、ハードウェア処理する専用のハードウェア回路（たとえばＡＳＩＣ等）を備えてもよい。すなわち、制御装置は、以下の（ａ）〜（ｃ）のいずれかの構成であればよい。（ａ）上記処理の全てを、プログラムに従って実行する処理装置と、プログラムを記憶するＲＯＭ等のプログラム格納装置とを備える。（ｂ）上記処理の一部をプログラムに従って実行する処理装置およびプログラム格納装置と、残りの処理を実行する専用のハードウェア回路とを備える。（ｃ）上記処理の全てを実行する専用のハードウェア回路を備える。ここで、処理装置およびプログラム格納装置を備えたソフトウェア処理回路や、専用のハードウェア回路は複数であってもよい。すなわち、上記処理は、１または複数のソフトウェア処理回路および１または複数の専用のハードウェア回路の少なくとも一方を備えた処理回路によって実行されればよい。
【００８３】
・「内燃機関について」
内燃機関としては、４気筒の内燃機関に限らない。たとえば直列６気筒の内燃機関であってもよい。燃料噴射弁としては、燃焼室１６に燃料を噴射するものに限らず、たとえば吸気通路１２に燃料を噴射するものであってもよい。
【符号の説明】
【００８４】
１０…内燃機関、１２…吸気通路、１４…過給機、１６…燃焼室、１８…燃料噴射弁、２０…点火装置、２２…排気通路、２４…三元触媒、３０…制御装置、３２…ＣＰＵ、３４…ＲＯＭ、３６…不揮発性メモリ、４０，４２…空燃比センサ、４４…クランク角センサ、４６…エアフローメータ、４８…水温センサ、５０…警告灯。
【図１】
2019100296.tif 000003
【図２】
2019100296.tif 000004
【図３】
2019100296.tif 000005
【図４】
2019100296.tif 000006
【図５】
2019100296.tif 000007
【図６】
2019100296.tif 000008
【図７】
2019100296.tif 000009