(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-05
(45)【発行日】2024-08-14
(54)【発明の名称】内燃機関の異常診断装置
(51)【国際特許分類】
F02D 45/00 20060101AFI20240806BHJP
【FI】
F02D45/00 368Z
(21)【出願番号】P 2022035083
(22)【出願日】2022-03-08
【審査請求日】2023-12-19
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】宮原 秀樹
(72)【発明者】
【氏名】片山 章弘
(72)【発明者】
【氏名】中山 裕貴
(72)【発明者】
【氏名】池尻 祐貴
(72)【発明者】
【氏名】安澤 巧
【審査官】戸田 耕太郎
(56)【参考文献】
【文献】特開2000-073850(JP,A)
【文献】特開2021-060027(JP,A)
【文献】特開2012-052498(JP,A)
【文献】米国特許出願公開第2002/0134357(US,A1)
【文献】特開2005-337021(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
F02D 45/00
(57)【特許請求の範囲】
【請求項1】
複数の気筒を有した内燃機関であり、排気浄化装置に酸素を供給するために前記複数の気筒のうちの少なくとも1つの気筒に対する燃料供給を停止させるとともに残りの気筒には燃料を供給する停止処理が実行されることのある前記内燃機関に適用され、機関回転速度の変動の情報に基づき、各気筒における失火の発生を検出する失火検出処理と、前記失火検出処理によって失火が検出された回数を示す失火カウンタを算出するカウント処理と、前記内燃機関を既定量運転させる間に失火が検出された回数を示す前記失火カウンタに基づいて前記排気浄化装置に異常が生じている旨の診断を下す触媒異常診断処理と、を実行する内燃機関の異常診断装置であり、
前記触媒異常診断処理は、前記内燃機関を前記既定量運転させる間に前記停止処理を実行した場合には、前記内燃機関を前記既定量運転させる間に前記停止処理を実行しなかった場合よりも前記失火カウンタが小さい状態で前記排気浄化装置に異常が生じている旨の診断を下す
内燃機関の異常診断装置。
【請求項2】
前記内燃機関を前記既定量運転させる間に前記停止処理を実行した場合には、前記内燃機関を前記既定量運転させる間に失火が検出された回数を示す前記失火カウンタから前記停止処理により燃料供給を停止させた回数を除外する補正を施すとともに、前記既定量の運転において前記停止処理によって燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値を算出し、
前記触媒異常診断処理は、補正後の前記失火カウンタが前記異常判定閾値よりも大きい場合に前記排気浄化装置に異常が発生している旨の診断を下す
請求項1に記載の内燃機関の異常診断装置。
【請求項3】
前記異常判定閾値は、前記内燃機関を前記既定量運転させている間に圧縮上死点を迎える度に機関負荷率及び機関回転速度に基づいて算出した許容失火率を平均した平均許容失火率に、前記既定量の運転中に燃料供給を行った燃焼行程の回数を乗じた値であり、
前記停止処理を実行した場合には、前記停止処理を実行していない場合よりも、機関負荷率及び機関回転速度に基づいて算出される前記許容失火率を小さくする
請求項2に記載の内燃機関の異常診断装置。
【請求項4】
前記触媒異常診断処理に加え、
前記内燃機関を第2既定量運転させる間に失火が検出された回数を示す前記失火カウンタである第2失火カウンタが失火判定閾値より大きい場合に失火異常が生じている旨の診断を下す失火異常診断処理を実行し、
前記失火異常診断処理は、前記内燃機関を前記第2既定量運転させる間に前記停止処理を実行した場合には、前記第2失火カウンタから前記停止処理により燃料供給を停止させた回数を除外する補正を施すとともに、前記第2既定量の運転における全ての気筒の圧縮上死点の到来回数の和に占める燃料の供給を行った回数の割合を前記失火判定閾値に乗じる補正を施し、補正後の前記第2失火カウンタが補正後の前記失火判定閾値よりも大きい場合に前記失火異常が発生していることを診断する
請求項2又は請求項3に記載の内燃機関の異常診断装置。
【請求項5】
前記停止処理を実行しなかった場合の前記異常判定閾値を第1異常判定閾値とし、前記停止処理を実行した場合の前記異常判定閾値を第2異常判定閾値とするとともに、
前記停止処理を実行しなかった場合の前記失火判定閾値を第1失火判定閾値とし、前記停止処理を実行しなかった場合の前記失火判定閾値を第2失火判定閾値とした場合、
前記第2異常判定閾値を前記第1異常判定閾値で割った商が前記第2失火判定閾値を前記第1失火判定閾値で割った商よりも小さい
請求項4に記載の内燃機関の異常診断装置。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は内燃機関の異常診断装置に関するものである。
【背景技術】
【0002】
特許文献1には、複数の気筒を備えるエンジンと、モータジェネレータとを備えるハイブリッド車両が開示されている。このハイブリッド車両には、前記複数の気筒から排出された排気を浄化する排気浄化装置が設けられている。排気浄化装置の触媒は、活性化温度において排気浄化能力を発揮する。そのため、特許文献1に開示されているハイブリッド車両では、触媒の温度が低いときには、触媒を活性化温度まで温める触媒暖機を行う。
【0003】
特許文献1に開示されている制御装置は、触媒暖機が必要なときに、エンジンの複数の気筒のうち一部の気筒への燃料供給を停止させる一方で残りの気筒には燃料を供給する停止処理を実行する。これにより、排気浄化装置に燃料供給が停止されている気筒を通じて排気浄化装置に酸素が供給されるようになる。そして、触媒での酸化反応が促進されて触媒の温度が上昇する。こうして制御装置は、停止処理を実行することによって触媒暖機を促進することができる。
【0004】
内燃機関の異常診断装置は、機関回転速度の変動の情報に基づいて各気筒における失火の発生を検出する。さらに、異常診断装置は、クランク軸の回転回数が既定回数に達する度に失火の発生頻度が閾値以上であるか否かを判定する。そして、異常診断装置は、失火の発生頻度が閾値以上である場合に燃焼異常が発生しているとの診断を下す。
【0005】
特許文献2には、こうした停止処理を実行しているときに、燃料供給を停止している気筒に対する失火検出を停止して残りの気筒に対する失火検出のみを行う異常診断装置が開示されている。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2021-60027号公報
【文献】特開2000-73850号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、失火が生じると、気筒を通過した混合気が排気浄化装置に導入される。そのため、酸化反応が生じて排気浄化装置の温度が過剰に上昇してしまう。そこで、異常診断装置は、排気浄化装置の異常診断として、失火の発生頻度に基づいて排気浄化装置にダメージが蓄積していると診断する。異常診断装置では、上記の燃焼異常についての診断とは別に、こうした排気浄化装置の異常診断を行う。
【0008】
なお、上述したように停止処理を実行している場合には、停止気筒を通じて空気が導入されるため、さらに排気浄化装置の温度が上昇する。的確に排気浄化装置の異常診断を行うためには、こうした停止処理の影響も診断に反映させる必要がある。
【課題を解決するための手段】
【0009】
以下、上記課題を解決するための手段及びその作用効果について記載する。
上記課題を解決するための内燃機関の異常診断装置は、複数の気筒を有した内燃機関であり、排気浄化装置に酸素を供給するために前記複数の気筒のうちの少なくとも1つの気筒に対する燃料供給を停止させるとともに残りの気筒には燃料を供給する停止処理が実行されることのある前記内燃機関に適用される。この異常診断装置は、機関回転速度の変動の情報に基づき、各気筒における失火の発生を検出する失火検出処理と、前記失火検出処理によって失火が検出された回数を示す失火カウンタを算出するカウント処理と、前記内燃機関を既定量運転させる間に失火が検出された回数を示す前記失火カウンタに基づいて前記排気浄化装置に異常が生じている旨の診断を下す触媒異常診断処理と、を実行する。前記触媒異常診断処理は、前記内燃機関を前記既定量運転させる間に前記停止処理を実行した場合には、前記内燃機関を前記既定量運転させる間に前記停止処理を実行しなかった場合よりも前記失火カウンタが小さい状態で前記排気浄化装置に異常が生じている旨の診断を下す。
【0010】
停止処理を実行している場合には、停止気筒を通じて空気が導入されるため、酸化反応によって排気浄化装置の温度が上昇する。そのため、停止処理を実行していない場合と比較して、失火が発生した回数が少なくても排気浄化装置に過熱によるダメージが蓄積している。
【0011】
上記の異常診断装置は、停止処理を実行した場合には、停止処理を実行しなかった場合よりも失火カウンタが小さい状態で排気浄化装置に異常が生じている旨の診断を下す。すなわち、上記の異常診断装置は、停止処理による過熱のダメージを反映させて、触媒異常診断処理を行うことができる。
【0012】
内燃機関の異常診断装置の一態様は、前記内燃機関を前記既定量運転させる間に前記停止処理を実行した場合には、前記内燃機関を前記既定量運転させる間に失火が検出された回数を示す前記失火カウンタから前記停止処理により燃料供給を停止させた回数を除外する補正を施すとともに、前記既定量の運転において前記停止処理によって燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値を算出する。そして、この異常診断装置は、前記触媒異常診断処理において、補正後の前記失火カウンタが前記異常判定閾値よりも大きい場合に前記排気浄化装置に異常が発生している旨の診断を下す。
【0013】
上記の異常診断装置は、燃料供給を伴う燃焼行程における失火の発生回数を示す失火カウンタが異常判定閾値よりも大きい場合に排気浄化装置に異常が発生している旨の診断を下す。既定量の運転において停止処理によって燃料の供給を停止させた回数が多いほど、排気浄化装置に蓄積したダメージは多くなる。そこで、上記の異常診断装置は、燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値を算出する。これにより、上記の異常診断装置は、燃焼供給を停止させた回数に応じたダメージの蓄積を反映させた触媒異常診断処理を実現できる。
【0014】
なお、既定量の運転において停止処理によって燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値を算出する態様としては、前記異常判定閾値は、前記内燃機関を前記既定量運転させている間に圧縮上死点を迎える度に機関負荷率及び機関回転速度に基づいて算出した許容失火率を平均した平均許容失火率に、前記既定量の運転中に燃料供給を行った燃焼行程の回数を乗じた値であり、前記停止処理を実行した場合には、前記停止処理を実行していない場合よりも、機関負荷率及び機関回転速度に基づいて算出される前記許容失火率を小さくする、といった態様を採用することができる。
【0015】
内燃機関の異常診断装置の一態様は、前記触媒異常診断処理に加え、前記内燃機関を第2既定量運転させる間に失火が検出された回数を示す前記失火カウンタである第2失火カウンタが失火判定閾値より大きい場合に失火異常が生じている旨の診断を下す失火異常診断処理を実行する。そして、この異常診断装置は、前記失火異常診断処理において、前記内燃機関を前記第2既定量運転させる間に前記停止処理を実行した場合には、前記第2失火カウンタから前記停止処理により燃料供給を停止させた回数を除外する補正を施すとともに、前記第2既定量の運転における全ての気筒の圧縮上死点の到来回数の和に占める燃料の供給を行った回数の割合を前記失火判定閾値に乗じる補正を施し、補正後の前記第2失火カウンタが補正後の前記失火判定閾値よりも大きい場合に前記失火異常が発生していることを診断する。
【0016】
上記の異常診断装置は、触媒異常診断に加えて、失火異常診断処理を実行する。停止処理を実行していると、燃料供給を停止している気筒において失火が発生しているとの誤った失火検出が行われるおそれがある。その結果、失火の発生頻度が高いと判定されて失火異常が発生していると誤診断されてしまう。これに対して、上記の異常診断装置は、停止処理を実行した場合には、失火異常診断処理において、カウント処理によってカウントした第2失火カウンタから燃料供給を停止させた回数を除外する補正を施すとともに、実際に燃料供給を行った割合にあわせて失火判定閾値を小さくする補正をしている。これにより、上記の異常診断装置は、燃料供給が停止されている気筒が存在していることを反映させて的確に失火異常を診断できる。
【0017】
内燃機関の異常診断装置の一態様は、前記停止処理を実行しなかった場合の前記異常判定閾値を第1異常判定閾値とし、前記停止処理を実行した場合の前記異常判定閾値を第2異常判定閾値とするとともに、前記停止処理を実行しなかった場合の前記失火判定閾値を第1失火判定閾値とし、前記停止処理を実行しなかった場合の前記失火判定閾値を第2失火判定閾値とした場合、前記第2異常判定閾値を前記第1異常判定閾値で割った商が前記第2失火判定閾値を前記第1失火判定閾値で割った商よりも小さい。
【0018】
失火異常診断処理においては、燃料供給を停止している気筒を失火の検出対象から除外して失火異常を診断すればよい。一方で、触媒異常診断処理においては、燃料供給を停止している気筒を失火の検出対象から除外するのみならず、燃料供給を停止している気筒からの酸素の供給による発熱による排気浄化装置へのダメージの蓄積を反映させる必要がある。
【0019】
前記第2異常判定閾値を前記第1異常判定閾値で割った商が前記第2失火判定閾値を前記第1失火判定閾値で割った商よりも小さいということは、停止処理を実行した場合に、停止処理を実行していない場合と比較して異常判定閾値が小さくされる度合いが、失火判定閾値が小さくされる度合いよりも大きいことを示す。
【0020】
すなわち、上記の異常診断装置では、停止処理を実行した場合に、異常判定閾値が小さくされる度合いが、失火判定閾値が小さくされる度合いよりも大きくなっている。そのため、燃料供給を停止している気筒を失火の検出対象から除外するのみならず、燃料供給を停止している気筒からの酸素の供給による発熱による排気浄化装置へのダメージの蓄積を反映させた触媒異常診断を実現できる。
【図面の簡単な説明】
【0021】
【
図1】
図1は、異常診断装置の一実施形態であるエンジンコントロールユニットを備えるハイブリッド車両の構成を示す模式図である。
【
図2】
図2は、クランク角信号について説明する模式図である。
【
図3】
図3は、再生処理にかかるルーチンにおける処理の流れを示すフローチャートである。
【
図4】
図4は、失火検出処理にかかるルーチンにおける処理の流れを示すフローチャートである。
【
図5】
図5は、失火異常診断処理にかかるルーチンにおける処理の流れを示すフローチャートである。
【
図6】
図6は、触媒異常診断処理にかかるルーチンにおける処理の流れを示すフローチャートである。
【
図7】
図7は、停止処理を実行していない場合に参照する許容失火率のマップデータの説明図である。
【
図8】
図8は、停止処理を実行している場合に参照する許容失火率のマップデータの説明図である。
【
図9】
図9は、触媒異常診断処理における処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0022】
以下、内燃機関の異常診断装置の一実施形態であるエンジンコントロールユニット300について、
図1~
図9を参照して説明する。
<車両10の構成について>
図1に示すように、車両10は、エンジン50を備えている。エンジン50は、
図1に示すように#1~#6の6つの気筒を備える6気筒エンジンである。なお、エンジン50には、吸気ポートに燃料を噴射するポート噴射弁と、燃焼室に燃焼を噴射する筒内噴射弁とが設けられている。また、燃焼室内の空気と燃料との混合気は、点火プラグの火花放電に伴って燃焼に供される。そのときに生成される燃焼エネルギが、エンジン50の出力軸であるクランクシャフト59の回転エネルギに変換される。燃焼室において燃焼に供された混合気は、排気通路に排出される。排気通路には、酸素吸蔵能力を有した三元触媒と、ガソリンパティキュレートフィルタ(以下、GPFと記載する)とが設けられている。なお、GPFは、PMを捕集するフィルタに三元触媒が担持されたものである。
【0023】
また、車両10は、電力を蓄えるバッテリ30を備えている。さらに車両10は、第1モータジェネレータ11と第2モータジェネレータ12とを備えている。これら第1モータジェネレータ11及び第2モータジェネレータ12は、バッテリ30からの給電に応じて駆動力を発生するモータであり、外部からの動力を受けてバッテリ30に充電する電力を発電する発電機としての機能も兼ね備えている。
【0024】
さらに、車両10には、サンギア14、プラネタリキャリア15、リングギア16の3つの回転要素を有する遊星ギア機構13が設けられている。遊星ギア機構13のプラネタリキャリア15には、クランクシャフト59が連結されている。そして、遊星ギア機構13のサンギア14には第1モータジェネレータ11の回転軸に連結された第1インプットシャフト25が連結されている。また、遊星ギア機構13のリングギア16には、カウンタドライブギア17が一体に設けられている。カウンタドライブギア17には、カウンタドリブンギア18が噛み合わされている。そして、このカウンタドリブンギア18には、リダクションギア19が噛み合わされている。リダクションギア19には、第2モータジェネレータ12の回転軸に連結された第2インプットシャフト26が連結されている。
【0025】
また、カウンタドリブンギア18には、ファイナルドライブギア20が一体回転可能に連結されている。ファイナルドライブギア20には、ファイナルドリブンギア21が噛み合わされている。そして、ファイナルドリブンギア21には、差動機構22を介して、駆動輪23の駆動軸24が連結されている。
【0026】
<システムコントロールユニット100について>
システムコントロールユニット100は、プログラムが記憶されている記憶装置と、記憶装置に記憶されているプログラムを実行して各種の制御を実行する処理回路と、を備えている。システムコントロールユニット100は、パワーコントロールユニット200及びエンジンコントロールユニット300と接続されている。
【0027】
<パワーコントロールユニット200について>
第1モータジェネレータ11及び第2モータジェネレータ12は、パワーコントロールユニット200を介してバッテリ30に接続されている。パワーコントロールユニット200は、制御回路とインバータとコンバータとを含んでいる。パワーコントロールユニット200は、システムコントロールユニット100からの指令に基づいて動作する。そしてパワーコントロールユニット200は、バッテリ30から第1モータジェネレータ11及び第2モータジェネレータ12への給電量と、第1モータジェネレータ11及び第2モータジェネレータ12からバッテリ30への充電量とを調整する。なお、車両10には外部電源40と接続可能なコネクタ31が設けられている。そのため、バッテリ30は、外部電源40からの供給電力によっても充電可能である。すなわち、車両10は、プラグインハイブリッド車である。
【0028】
<エンジンコントロールユニット300について>
エンジンコントロールユニット300は、システムコントロールユニット100からの指令に基づいてエンジン50を制御する。エンジンコントロールユニット300は、プログラムが記憶されている記憶装置と、記憶装置に記憶されているプログラムを実行して各種の制御を実行する処理回路と、を備えている。
【0029】
エンジンコントロールユニット300には、エンジン50の運転状態を検出する各種センサの検出信号が入力されている。エンジンコントロールユニット300に検出信号を入力するセンサには、クランクシャフト59の回転角を検出するクランクポジションセンサ134が含まれている。
【0030】
図2に示すように、クランクシャフト59には、クランクロータ58が取り付けられている。クランクロータ58には、34個の歯56が等しい間隔をあけて設けられているが、隣接する歯56の間隔が広くなっている欠け歯部57が1箇所設けられている。クランクポジションセンサ134は、クランクロータ58の歯56と対向するようにクランクロータ58の周縁部に向けて設けられている。
【0031】
クランクポジションセンサ134は、磁石と磁気抵抗素子を内蔵したセンサ回路からなる磁気抵抗素子タイプのセンサである。クランクシャフト59の回転に伴ってクランクロータ58が回転すると、それに伴ってクランクロータ58の歯56とクランクポジションセンサ134とが近接、離間するようになる。これにより、クランクポジションセンサ134内の磁気抵抗素子にかかる磁界の方向が変化し、磁気抵抗素子の内部抵抗が変化する。センサ回路はこの抵抗値変化を電圧に変換した波形と閾値との大小関係を比較してその波形をLo信号とHi信号とによる矩形波に整形し、クランク角信号Scrとして出力する。
【0032】
図2に示すように、具体的には、クランクポジションセンサ134は、歯56と対向しているときにLo信号を出力する。そして、クランクポジションセンサ134は、歯56同士の間の空隙部分と対向しているときにHi信号を出力する。そのため、欠け歯部57に対応するHi信号が検出されると、そのあと歯56に対応するLo信号が検出される。そして、それからは10°CA毎に歯56に対応するLo信号が検出される。こうして34個のLo信号が検出されたあと、再び欠け歯部57に対応するHi信号が検出される。そのため、欠け歯部57に対応するHi信号を挟んで次の歯56に対応するLo信号が検出されるまでの回転角はクランク角にして30°CAである。
【0033】
そして、欠け歯部57に対応するHi信号に続いて歯56に対応するLo信号が検出されてから、次に欠け歯部57に対応するHi信号に続いてLo信号が検出されるまでの間隔は、クランク角にして360°CAになっている。
【0034】
エンジンコントロールユニット300は、クランク角信号Scrに基づいてクランク角を算出している。また、エンジンコントロールユニット300は、クランクシャフト59の回転変動量の指標値として、クランク角が一定量変化するのに要した時間であるT30を算出している。
図2には、T30に相当する期間を図示している。T30は、クランク角が30°CA変化するのに要した時間である。
【0035】
エンジンコントロールユニット300は、クランクポジションセンサ134から入力されるクランク角信号Scrに基づいてクランクシャフト59の回転速度である機関回転速度NEを算出する。
【0036】
また、エンジンコントロールユニット300には、エンジン50の吸入空気量Gaと吸気温THAを検出するエアフローメータ135が接続されている。さらに、エンジンコントロールユニット300には、エンジン50の冷却水の温度である水温THWを検出する水温センサ136も接続されている。また、エンジンコントロールユニット300は、GPFに流入する排気の圧力Pexを検出する排気圧センサ137も接続されている。
【0037】
図1に示すように、システムコントロールユニット100には、車両10の運転者が車両10のシステムの起動と停止を切り替えるためのメインスイッチ130が接続されている。また、システムコントロールユニット100には、アクセル操作量を検出するアクセルポジションセンサ131と、ブレーキ操作量を検出するブレーキセンサ132とが接続されている。さらにシステムコントロールユニット100には、車両10の速度である車速を検出する車速センサ133が接続されている。
【0038】
また、パワーコントロールユニット200には、バッテリ30の電流、電圧及び温度が入力されている。パワーコントロールユニット200は、これら電流、電圧及び温度に基づき、バッテリ30の充電容量に対する充電残量の比率である充電状態指標値SOCを算出している。
【0039】
エンジンコントロールユニット300とパワーコントロールユニット200は、それぞれシステムコントロールユニット100に接続されている。そして、システムコントロールユニット100とパワーコントロールユニット200とエンジンコントロールユニット300とのそれぞれが、センサから入力された検出信号に基づく情報や算出した情報を相互にやりとりし、共有している。
【0040】
システムコントロールユニット100は、これらの情報に基づき、エンジンコントロールユニット300に指令を出力し、エンジンコントロールユニット300を通じてエンジン50を制御する。また、システムコントロールユニット100は、これらの情報に基づいてパワーコントロールユニット200に指令を出力する。これにより、システムコントロールユニット100は、パワーコントロールユニット200を通じて第1モータジェネレータ11及び第2モータジェネレータ12の制御と、バッテリ30の充電制御とを行う。このようにシステムコントロールユニット100は、パワーコントロールユニット200とエンジンコントロールユニット300とに指令を出力することにより車両10を制御する。
【0041】
<車両10の制御について>
続いて、こうしたシステムコントロールユニット100が行う車両10の制御についてより詳しく説明する。
【0042】
システムコントロールユニット100は、アクセル操作量と車速とに基づき、車両10の出力の要求値である要求出力を演算する。そして、システムコントロールユニット100は、要求出力やバッテリ30の充電状態指標値SOCなどに応じて、エンジン50、第1モータジェネレータ11及び第2モータジェネレータ12のトルク配分を決定する。そして、エンジン50の出力と、第1モータジェネレータ11、第2モータジェネレータ12による力行/回生とを制御する。なお、システムコントロールユニット100は、充電状態指標値SOCの大きさによって車両10の走行モードを切り替える。
【0043】
システムコントロールユニット100は、充電状態指標値SOCが一定の水準を超えている場合には、エンジン50を作動させずに第2モータジェネレータ12による駆動力や第1モータジェネレータ11による駆動力によって走行するモータ走行モードを選択する。すなわち、システムコントロールユニット100は、バッテリ30の充電残量に十分な余裕がある場合には、モータ走行モードを選択する。
【0044】
一方で、システムコントロールユニット100は、充電状態指標値SOCが一定の水準以下になった場合には、第1モータジェネレータ11及び第2モータジェネレータ12に加えて、エンジン50を使用して走行するハイブリッド走行モードを選択する。
【0045】
なお、システムコントロールユニット100は、充電状態指標値SOCが一定の水準を超えている場合であっても、次のような場合には、ハイブリッド走行モードを選択する。
・車速がモータ走行モードの上限車速を超えているとき。
【0046】
・アクセル操作量が大きい急加速のときなど、一時的に大きな出力が必要なとき。
・エンジン50の始動が必要なとき。
システムコントロールユニット100は、ハイブリッド走行モードを選択している場合には、エンジン50を始動させる際に第1モータジェネレータ11をスタータモータとして機能させる。具体的には、システムコントロールユニット100は、第1モータジェネレータ11によってサンギア14を回転させることによりクランクシャフト59を回転させてエンジン50を始動する。
【0047】
また、システムコントロールユニット100は、ハイブリッド走行モードを選択している場合には、充電状態指標値SOCの大きさに応じて停車時の制御を切り替える。具体的には、充電状態指標値SOCが閾値以上である場合には、システムコントロールユニット100は、エンジン50の運転を停止させ、第1モータジェネレータ11及び第2モータジェネレータ12の駆動も行わない。すなわち、システムコントロールユニット100は、停車時にエンジン50の運転を停止させてアイドリング運転を抑制する。なお、バッテリ30の充電状態指標値SOCが閾値未満である場合には、システムコントロールユニット100は、エンジン50を運転させる。そして、エンジン50の出力によって第1モータジェネレータ11を駆動して第1モータジェネレータ11を発電機として機能させる。
【0048】
システムコントロールユニット100は、ハイブリッド走行モードを選択している場合には、走行中にも充電状態指標値SOCに応じて制御を切り替える。発進時及び軽負荷走行時において、バッテリ30の充電状態指標値SOCが閾値以上である場合には、システムコントロールユニット100は、第2モータジェネレータ12の駆動力のみによって車両10の発進及び走行を行う。この場合、エンジン50は停止しており、第1モータジェネレータ11による発電も行われない。一方で発進時及び軽負荷走行時において、バッテリ30の充電状態指標値SOCが閾値未満である場合には、システムコントロールユニット100は、エンジン50を始動して第1モータジェネレータ11で発電を行い、発電した電力をバッテリ30に充電する。このときには、車両10は、エンジン50の駆動力の一部と第2モータジェネレータ12の駆動力とによって走行する。定常走行時において、バッテリ30の充電状態指標値SOCが閾値以上である場合には、システムコントロールユニット100は、運転効率の高い状態でエンジン50を運転させ、車両10を主にエンジン50の出力で走行させる。このときには、エンジン50の動力は遊星ギア機構13を介して駆動輪23側と第1モータジェネレータ11側とに分割される。これにより、車両10は、第1モータジェネレータ11で発電を行いながら走行する。そして、システムコントロールユニット100は発電した電力によって第2モータジェネレータ12を駆動し、第2モータジェネレータ12の動力によってエンジン50の動力を補助する。一方で定常走行時において、バッテリ30の充電状態指標値SOCが閾値未満である場合には、システムコントロールユニット100は機関回転速度NEをより高くする。そして、第1モータジェネレータ11で発電された電力を第2モータジェネレータ12の駆動に使用するとともに、余剰の電力をバッテリ30に充電する。なお、加速時には、システムコントロールユニット100は機関回転速度NEを高めるとともに、第1モータジェネレータ11で発電された電力を第2モータジェネレータ12の駆動に使用する。これにより、エンジン50の動力と第2モータジェネレータ12の動力とによって車両10を加速させる。そして、システムコントロールユニット100は減速時には、エンジン50の運転を停止させる。そして、システムコントロールユニット100は第2モータジェネレータ12を発電機として機能させ、発電した電力をバッテリ30に充電する。車両10では、こうした発電によって生じる抵抗をブレーキとして利用する。こうした減速時の発電制御を回生制御という。
【0049】
<再生処理について>
図3に、エンジンコントロールユニット300が実行する再生処理にかかるルーチンにおける処理手順を示す。
図3に示すルーチンは、エンジンコントロールユニット300の記憶装置に記憶されたプログラムをエンジンコントロールユニット300の処理回路が所定周期で繰り返し実行することにより実現される。なお、以下では、先頭に「S」が付与された数字によって、各処理のステップ番号を表現する。
【0050】
図3に示すルーチンにおいて、エンジンコントロールユニット300は、まず、機関回転速度NE、機関負荷率KL及び水温THWを取得する(S10)。機関負荷率KLは、エンジンコントロールユニット300により、吸入空気量Ga及び機関回転速度NEに基づき算出されている。次にエンジンコントロールユニット300は、機関回転速度NE、機関負荷率KL及び水温THWに基づき、堆積量DPMの更新量ΔDPMを算出する(S12)。ここで、堆積量DPMは、GPFに捕集されているPMの量である。詳しくは、エンジンコントロールユニット300は、機関回転速度NE、機関負荷率KL及び水温THWに基づき排気通路に排出される排気中のPMの量を算出する。また、エンジンコントロールユニット300は、機関回転速度NE及び機関負荷率KLに基づきGPFの温度を算出する。そしてエンジンコントロールユニット300は、排気中のPMの量やGPFの温度に基づき更新量ΔDPMを算出する。
【0051】
次にエンジンコントロールユニット300は、堆積量DPMに更新量ΔDPMを加算した和を新たな堆積量DPMにする。こうして堆積量DPMを更新する(S14)。次に、エンジンコントロールユニット300は、フラグFが「1」であるか否かを判定する(S16)。フラグFは、「1」である場合に、GPFのPMを燃焼除去するための再生処理を実行していることを示す。一方でフラグFは、「0」である場合に再生処理を実行していないことを示す。エンジンコントロールユニット300は、フラグFが「0」であると判定する場合(S16:NO)、堆積量DPMが再生実行値DPMH以上であるか否かを判定する(S18)。再生実行値DPMHは、堆積量DPMが再生実行値DPMH以上であることに基づいて、PMを除去する必要がある状態であることを判定するための閾値である。
【0052】
エンジンコントロールユニット300は、再生実行値DPMH以上であると判定する場合(S18:YES)、再生処理の実行条件が成立するか否かを判定する(S20)。ここで実行条件は、以下の条件(ア)~条件(ウ)の論理積が真である旨の条件とすればよい。
【0053】
条件(ア):エンジン50に対するトルクの指令値である機関トルク指令値Te*が所定値Teth以上である旨の条件。
条件(イ):機関回転速度NEが所定速度以上である旨の条件。
【0054】
条件(ウ):S24のトルク補償処理を実行できる旨の条件。
エンジンコントロールユニット300は、論理積が真であると判定する場合(S20:YES)には、再生処理を実行し、フラグFに「1」を代入する(S22)。すなわち、エンジンコントロールユニット300は、気筒#2及び気筒#5のポート噴射弁及び筒内噴射弁からの燃料の噴射を停止する。そして、エンジンコントロールユニット300は気筒#1,気筒#3,気筒#4,気筒#6の燃焼室内の混合気の空燃比を理論空燃比よりもリッチとする。すなわち、再生処理は、複数の気筒のうちの一部の気筒に対する燃料供給を停止させるとともに残りの気筒には燃料を供給する停止処理である。なお、このエンジン50では、2つの気筒への燃料供給を停止させるようにしている。この再生処理は、排気通路に酸素と未燃燃料とを排出することによってGPFの温度を上昇させてGPFが捕集したPMを燃焼除去するための処理である。この停止処理は、排気浄化装置である三元触媒及びGPFに酸素を供給するために実行される。エンジンコントロールユニット300は、排気通路に酸素と未燃燃料を排出することによって三元触媒等において未燃燃料を燃焼させ排気の温度を上昇させる。これにより、GPFの温度を上昇させることができる。また、GPFに酸素を供給することによってGPFが捕集したPMを燃焼除去することができる。
【0055】
なお、燃料の供給を停止する気筒は気筒#2及び気筒#5に限らない。例えば、燃料の供給を停止する回数に偏りが生じないように燃料の供給を停止させる気筒を順に切り替えるようにしてもよい。
【0056】
エンジンコントロールユニット300は、気筒#2及び気筒#5の燃焼制御の停止に起因したエンジン50のクランクシャフト59のトルク変動を補償する処理を実行する(S24)。この処理において、エンジンコントロールユニット300は、パワーコントロールユニット200に対する指示を出力する。この指示を受けたパワーコントロールユニット200は、第2モータジェネレータ12に対する走行のための要求トルクに、補償トルクを重畳する。そして、パワーコントロールユニット200は、補償トルクが重畳された要求トルクに基づきインバータを操作する。
【0057】
なお、このトルク補償処理を実行できる旨の条件は、第2モータジェネレータ12に異常が生じていないこと、トルク補償処理を実行するのに必要な電力がバッテリ30に蓄えられていることなどである。
【0058】
一方、エンジンコントロールユニット300は、フラグFが「1」であると判定する場合(S16:YES)、堆積量DPMが停止用閾値DPML以下であるか否かを判定する(S26)。停止用閾値DPMLは、堆積量DPMが停止用閾値DPML以下であることに基づいて再生処理を停止させてもよい旨を判定するための閾値である。エンジンコントロールユニット300は、堆積量DPMが停止用閾値DPML以下となる場合(S26:YES)、再生処理を停止してフラグFに「0」を代入する(S28)。
【0059】
なお、エンジンコントロールユニット300は、S24,S28の処理を完了する場合や、S18,S20の処理において否定判定する場合には、
図3に示すルーチンを一旦終了する。
【0060】
<失火検出処理について>
図4に、エンジンコントロールユニット300が実行する失火検出処理にかかるルーチンにおける処理手順を示す。
図4に示すルーチンは、エンジンコントロールユニット300の記憶装置に記憶されたプログラムをエンジンコントロールユニット300の処理回路が所定周期で繰り返し実行することにより実現される。
【0061】
図4に示す一連の処理において、エンジンコントロールユニット300は、まず、クランクシャフト59が30°CA回転するのに要する時間であるT30を取得する(S30)。T30は、エンジンコントロールユニット300によって、クランク角信号Scrに基づいてクランクシャフト59が30°CAだけ回転する時間が計時されることによって算出される。次にエンジンコントロールユニット300は、「m=0,1,2,3,…」として、T30[m+1]にT30[m]を代入し、T30[0]にS30の処理で新たに取得したT30を代入して、それらを記憶装置に記憶する(S32)。この処理は、T30の後のカッコ内の変数を、過去のものほど数字が大きくなるようにするための処理である。この処理によって、カッコ内の変数の値が1つ大きい場合、30°CAだけ前のT30となる。
【0062】
次にエンジンコントロールユニット300は、現在のクランクシャフト59の回転角度が、気筒#1~#6のいずれかの圧縮上死点を基準としてATDC90°CAであるか否かを判定する(S34)。エンジンコントロールユニット300は、ATDC90°CAであると判定する場合(S34:YES)、上記いずれかの気筒を失火の有無の判定対象として、判定対象となる気筒の回転変動量ΔT30[0]を算出する(S38)。詳しくは、エンジンコントロールユニット300は、最新のT30[0]からT30[2]を減算する。ここで、T30[0]は、判定対象となる気筒のATDC60°CAから30°CA回転に要する時間である。そのため、失火が生じていない場合には、T30[0]は、T30[2]よりも小さくなることから、回転変動量ΔT30[0]は、負となる。これに対し、失火が生じる場合、回転変動量ΔT30[0]は正となる。
【0063】
エンジンコントロールユニット300は、回転変動量ΔT30[0]が変動量閾値Δth以上であるか否かを判定する(S40)。回転変動量ΔT30[0]は機関回転速度NEの変動の情報である。S40の処理は、機関回転速度NEの変動の情報に基づいて判定対象となる気筒において失火が生じたか否かを判定する失火検出処理である。たとえば、エンジンコントロールユニット300は、変動量閾値Δthを、機関回転速度NEや機関負荷率KLに応じて可変設定することとしてもよい。
【0064】
エンジンコントロールユニット300は、変動量閾値Δth以上であると判定する場合(S40:YES)、失火が生じた旨を判定して失火カウンタをインクリメントする(S44)。なお、失火カウンタは、失火検出処理によって失火が検出された回数をカウントした値である。すなわち、S44の処理は、失火検出処理によって失火が検出された回数をカウントするカウント処理である。S44の処理において、エンジンコントロールユニット300は、失火カウンタとして、第1失火カウンタCmf1と第2失火カウンタCmf2をインクリメントする。第1失火カウンタCmf1は後述する触媒異常診断処理において参照する失火カウンタである。第2失火カウンタCmf2は、後述する失火異常診断処理において参照する失火カウンタである。
【0065】
なお、エンジンコントロールユニット300は、S44の処理を完了する場合や、S34,S40の処理において否定判定する場合には、
図4に示す一連の処理を一旦終了する。
【0066】
<異常診断処理について>
エンジンコントロールユニット300は、エンジン50における失火に起因する異常を診断する異常診断処理を行う。エンジンコントロールユニット300は、異常診断処理として、失火異常診断処理と、触媒異常診断処理とを実行する。失火異常診断処理は、第2失火カウンタCmf2に基づいて失火異常を診断する異常診断処理である。なお、ここでの失火異常とは、エンジン50における失火の発生頻度が許容範囲を超えて高くなっている異常のことである。触媒異常診断処理は、第1失火カウンタCmf1に基づいて触媒異常を診断する異常診断処理である。排気浄化装置の温度が上昇しすぎると、排気浄化装置にダメージが蓄積する。ここでの触媒異常とは、排気浄化装置に過熱によるダメージが許容範囲を超えて蓄積している状態のことである。
【0067】
<失火異常診断処理について>
図5に、本実施形態にかかる失火異常診断処理にかかるルーチンにおける処理手順を示す。
図5に示す処理は、エンジンコントロールユニット300に記憶されたプログラムをエンジンコントロールユニット300の処理回路が所定周期で繰り返し実行することにより実現される。
【0068】
図5に示す一連の処理において、エンジンコントロールユニット300は、まず気筒#1~#6のいずれかの圧縮上死点、すなわちTDCであるか否かを判定する(S50)。エンジンコントロールユニット300は、いずれかの気筒の圧縮上死点であると判定する場合(S50:YES)、第2モニタカウンタCtdc2をインクリメントする(S52)。
【0069】
エンジンコントロールユニット300は、S52の処理を実行した後、第2モニタカウンタCtdc2が第2既定値Ceth2以上であるか否かを判定する(S54)。第2既定値Ceth2は、第2モニタカウンタCtdc2が第2既定値Ceth2以上になったことに基づいて、エンジン50が第2既定量運転されたことを判定するための閾値である。
【0070】
エンジンコントロールユニット300は、S54の処理において肯定判定する場合(S54:YES)、停止処理を実行していたかを判定する(S56)。ここでは、エンジン50が第2既定量運転される間に、停止処理を実行したことがあったかを判定する。すなわち、S56の処理は、直近の第2既定量の運転の中に、一部でも停止処理を実行している期間が存在すれば、肯定判定される。
【0071】
エンジンコントロールユニット300は、S56の処理において否定判定する場合(S56:NO)、第2失火カウンタCmf2が失火判定閾値Cmfth2よりも大きいか否かを判定する(S64)。ここで、失火判定閾値Cmfth2は、燃料供給を伴う燃焼制御の実行回数が第2既定値Ceth2に達するまでの期間において失火が生じた回数が許容範囲を超える下限値に基づいて設定されている。
【0072】
エンジンコントロールユニット300は、第2失火カウンタCmf2が失火判定閾値Cmfth2よりも大きいと判定する場合(S64:YES)、失火異常判定を行う(S66)。S66の失火異常判定は、エンジン50に失火異常が発生している旨の診断を下す処理である。そして、エンジンコントロールユニット300は、報知処理を実行する(S68)。S68の報知処理において、エンジンコントロールユニット300は、システムコントロールユニット100に指示を出力する。指示を受けたシステムコントロールユニット100は、
図1に示す警告灯150を操作することによって、失火異常が診断された旨を報知する。
【0073】
一方、エンジンコントロールユニット300は、第2失火カウンタCmf2が失火判定閾値Cmfth2以下であると判定する場合(S64:NO)、処理をS69に進める。そして、エンジンコントロールユニット300は、第2失火カウンタCmf2,第2モニタカウンタCtdc2及び後述する第2停止カウンタCfc2を「0」にリセットする(S69)。
【0074】
なお、エンジンコントロールユニット300は、S68,S69の処理を完了する場合と、S50,S54の処理において否定判定する場合には、
図5に示す一連の処理を一旦終了する。
【0075】
ところで、エンジンコントロールユニット300は、S56の処理において肯定判定する場合(S56:YES)、第2停止カウンタCfc2を算出する(S58)。第2停止カウンタCfc2は、直近の第2既定量の運転の間に停止処理によって燃料供給を停止させた回数を示す値である。上述したように停止処理では、6つの気筒のうち、2つの気筒における燃料供給を停止している。そこで、このS58の処理では、停止処理を実行していた期間における圧縮上死点の到来回数を3で割ることにより第2停止カウンタCfc2を算出する。そして、エンジンコントロールユニット300は、S60の処理に移行する。
【0076】
エンジンコントロールユニット300は、S60の処理において、失火判定閾値Cmfth2に「(Ctdc2-Cfc2)/Ctdc2」を乗じた積を、失火判定閾値Cmfth2に代入する(S60)。そして、エンジンコントロールユニット300は、S62の処理に移行する。なお、S60の処理は、失火判定閾値Cmfth2に対して、第2既定量の運転における全ての気筒の圧縮上死点の到来回数の和(Ctdc2)に占める燃料の供給を行った回数(Ctdc2-Cfc2)の割合を乗じる補正を施す処理である。
【0077】
エンジンコントロールユニット300は、S62の処理において、第2失火カウンタCmf2から第2停止カウンタCfc2を引いた差を、第2失火カウンタCmf2に代入する(S62)。そして、エンジンコントロールユニット300は、S64の処理に移行する。なお、S62の処理は、エンジン50を第2既定量運転させる間にカウント処理によってカウントされた回数(第2失火カウンタCmf2)から停止処理により燃料供給を停止させた回数(第2停止カウンタCfc2)を除外する補正を施す処理である。
【0078】
図5に示すルーチンは、エンジン50を第2既定量運転させる間に失火が検出された回数を示す第2失火カウンタCmf2が失火判定閾値Cmfth2より大きい場合にエンジン50に失火異常が発生している旨の診断を下す失火異常診断処理である。
【0079】
図5を参照して説明したように本実施形態の失火異常診断処理は、エンジン50を第2既定量運転させる間に停止処理を実行した場合(S56:YES)には、第2失火カウンタCmf2及び失火判定閾値Cmfth2に補正を施す(S60,S62)。そして、補正後の第2失火カウンタCmf2が補正後の失火判定閾値Cmfth2よりも大きい場合(S64:YES)にエンジン50に失火異常が発生していることを診断する(S66)。
【0080】
すなわち、異常診断装置であるエンジンコントロールユニット300は、停止処理を実行した場合には、失火異常診断処理において、第2失火カウンタCmf2に対して燃料供給を停止させた回数を除外する補正を施す。また、エンジンコントロールユニット300は、実際に燃料供給を行った割合にあわせて失火判定閾値Cmfth2を補正している。
【0081】
<触媒異常診断処理について>
図6に、本実施形態にかかる触媒異常診断処理にかかるルーチンにおける処理手順を示す。
図6に示す処理は、エンジンコントロールユニット300に記憶されたプログラムをエンジンコントロールユニット300の処理回路が所定周期で繰り返し実行することにより実現される。
【0082】
図6に示す一連の処理において、エンジンコントロールユニット300は、まず気筒#1~#6のいずれかの圧縮上死点、すなわちTDCであるか否かを判定する(S70)。エンジンコントロールユニット300は、いずれかの気筒の圧縮上死点であると判定する場合(S70:YES)、第1モニタカウンタCtdc1をインクリメントする(S72)。
【0083】
次に、エンジンコントロールユニット300は、許容失火率Rmfを算出する。許容失火率Rmfは、排気浄化装置に加熱による触媒異常を発生させない失火率の範囲の上限値である。エンジンコントロールユニット300は、機関回転速度NE及び機関負荷率KLに基づいて許容失火率Rmfを算出する。
【0084】
エンジンコントロールユニット300の記憶装置には、機関負荷率KLと、機関回転速度NEとを入力変数とし、許容失火率Rmfを出力変数とするマップデータが記憶されている。エンジンコントロールユニット300は、このマップデータを用いて許容失火率Rmfを算出する。なお、マップデータとは、入力変数の離散的な値と、入力変数の値のそれぞれに対応する出力変数の値と、の組データである。また、マップ演算は、例えば、入力変数の値がマップデータの入力変数の値のいずれかに一致する場合、対応するマップデータの出力変数の値を演算結果とする。これに対し、入力変数の値がマップデータの入力変数の値のいずれにも一致しない場合、マップデータに含まれる複数の出力変数の値の補間によって得られる値を演算結果とする処理とすればよい。
【0085】
ここで、
図7及び
図8を参照してマップデータについて説明する。エンジンコントロールユニット300の記憶装置には、停止処理を実行していないときに参照する第1マップデータと、停止処理を実行しているときに参照する第2マップデータとが記憶されている。
【0086】
図7に示すように、第1マップデータには、機関負荷率KLと機関回転速度NEの組合せに応じた許容失火率Rmfが記憶されている。なお、
図7に示す例では、機関負荷率KL及び許容失火率Rmfを百分率(%)で示している。このマップデータによって算出される許容失火率Rmfは、機関負荷率KLと機関回転速度NEが変化せずに定常運転されているときの許容失火率である。このマップデータは、予め行う実験やモデルベースでのシミュレーションの結果に基づいて各入力変数に対する出力変数の値を適合することによって作成されている。
【0087】
図8に示すように、第2マップデータにも、第1マップデータと同様に、機関負荷率KLと機関回転速度NEの組合せに応じた許容失火率Rmfが記憶されている。第2マップデータにおいては、第1マップデータにおける許容失火率Rmfの値よりも小さい値が出力変数として記憶されている。具体的には、第2マップデータは、第1マップデータにおける出力変数から「33(%)」を引いて第1マップデータよりも出力変数を小さくしている。これは、停止処理を実行している場合には、燃料供給が停止されている気筒を失火気筒と同等とみなして許容失火率Rmfを算出するためである。停止処理を実行しているときには燃料供給が停止されている気筒から排気浄化装置に空気が導入される。そのため、失火が発生している場合と同様に、排気浄化装置の温度が上昇してしまう。上述したようにエンジン50では停止処理において6つの気筒のうち2つの気筒の燃料供給を停止する。そこで、本実施形態では、燃料供給を停止している2つの気筒を失火気筒と同等とみなし、第1マップデータにおける出力変数から6分の2に相当する「33(%)」を引いて、出力変数を小さくしている。なお、
図8における網掛けを施した範囲の値は、全て「5(%)」になっている。これにより、第2マップデータでは、出力変数の下限値を「5(%)」にしている。例えば、「0(%)」のように、許容失火率Rmfを小さくし過ぎると、触媒異常診断処理において、過剰な頻度で触媒異常である旨の診断が下されるようになってしまう。出力変数の下限値を「5(%)」にしているのは、こうした事態を回避するためである。
【0088】
停止処理が実行されているか否かに応じて第1マップデータか第2マップデータを選択して許容失火率Rmfを算出すると、エンジンコントロールユニット300は、積算許容失火率ΣRmfを算出する(S76)。具体的には、エンジンコントロールユニット300は、S74の処理において算出した許容失火率Rmfを積算許容失火率ΣRmfに加算する。そして、エンジンコントロールユニット300は、その和を新たな積算許容失火率ΣRmfとして記憶装置に記憶する。なお、積算許容失火率ΣRmfは、後述するS84又はS87の処理において、平均許容失火率Rmf_aveを算出するために用いる値である。積算許容失火率ΣRmfは、S84又はS87の処理において平均許容失火率Rmf_aveを算出する度に「0」にリセットされる。
【0089】
積算許容失火率ΣRmfを算出すると(S76)、次にエンジンコントロールユニット300は、第1モニタカウンタCtdc1が第1既定値Ceth1以上であるか否かを判定する(S78)。第1既定値Ceth1は、第1モニタカウンタCtdc1が第1既定値Ceth1以上になったことに基づいて、エンジン50が第1既定量運転されたことを判定するための閾値である。なお、第1既定値Ceth1は第2既定値Ceth2よりも小さい。すなわち、第1既定量は、第2既定量よりも少ない。
【0090】
エンジンコントロールユニット300は、S78の処理において肯定判定する場合(S78:YES)、触媒異常診断処理を実行する(S80)。
図9に示すように、触媒異常診断処理を開始すると、エンジンコントロールユニット300は、停止処理を実行していたかを判定する(S81)。ここでは、エンジン50が第1既定量運転される間に、停止処理を実行したことがあったかを判定する。すなわち、S81の処理は、直近の第1既定量の運転の中に、一部でも停止処理を実行している期間が存在すれば、肯定判定される。
【0091】
エンジンコントロールユニット300は、S81の処理において否定判定する場合(S91:NO)、平均許容失火率Rmf_aveを算出する(S87)。具体的には、エンジンコントロールユニット300は、記憶装置に記憶している積算許容失火率ΣRmfを第1既定値Ceth1で割ることによって平均許容失火率Rmf_aveを算出する。すなわち、平均許容失火率Rmf_aveは、積算許容失火率ΣRmfを第1既定値Ceth1で割った商である。エンジンコントロールユニット300は、上述したように平均許容失火率Rmf_aveを算出すると、積算許容失火率ΣRmfを「0」にする。
【0092】
次に、エンジンコントロールユニット300は、異常判定閾値Cmfth1を算出する(S88)。具体的には、エンジンコントロールユニット300は、第1既定値Ceth1に平均許容失火率Rmf_aveを乗じた積を100で割って異常判定閾値Cmfth1を算出する。算出される値は、平均許容失火率Rmf_aveに、既定量の運転中に燃料供給を行った燃焼行程の回数を乗じた値になる。すなわち、これは平均許容失火率Rmf_aveを第1既定量の運転を行った際の失火の許容回数に換算する処理である。
【0093】
そして、エンジンコントロールユニット300は、第1失火カウンタCmf1が異常判定閾値Cmfth1よりも大きいか否かを判定する(S89)。エンジンコントロールユニット300は、第1失火カウンタCmf1が異常判定閾値Cmfth1よりも大きいと判定する場合(S89:YES)、触媒異常判定を行う(S90)。S90の触媒異常判定は、エンジン50に触媒異常が発生している旨の診断を下す処理である。そして、エンジンコントロールユニット300は、報知処理を実行する(S91)。S91の報知処理において、エンジンコントロールユニット300は、システムコントロールユニット100に指示を出力する。指示を受けたシステムコントロールユニット100は、
図1に示す警告灯150を操作することによって、触媒異常が診断された旨を報知する。
【0094】
一方、エンジンコントロールユニット300は、第1失火カウンタCmf1が異常判定閾値Cmfth1以下であると判定する場合(S89:NO)、処理をS92へと進める。そして、エンジンコントロールユニット300は、第1失火カウンタCmf1,第1モニタカウンタCtdc1及び後述する第1停止カウンタCfc1を「0」にリセットする(S92)。
【0095】
なお、エンジンコントロールユニット300は、S91,S92の処理を完了した場合は、触媒異常診断処理を終了させる。そして、
図6に示す一連の処理を一旦終了する。また、
図6に示したS70,S78の処理において否定判定する場合にも、
図6に示す一連の処理を一旦終了する。
【0096】
エンジンコントロールユニット300は、S81の処理において肯定判定する場合(S81:YES)、第1停止カウンタCfc1を算出する(S82)。第1停止カウンタCfc1は、直近の第1既定量の運転の間に停止処理によって燃料供給を停止させた回数を示す値である。上述したように停止処理では、6つの気筒のうち、2つの気筒における燃料供給を停止している。そこで、このS82の処理では、停止処理を実行していた期間における圧縮上死点の到来回数を3で割ることにより第1停止カウンタCfc1を算出する。そして、エンジンコントロールユニット300は、S83の処理に移行する。
【0097】
エンジンコントロールユニット300は、S83の処理において、第1失火カウンタCmf1から第1停止カウンタCfc1を引いた差を、第1失火カウンタCmf1に代入する(S83)。
【0098】
次に、エンジンコントロールユニット300は、平均許容失火率Rmf_aveを算出する(S84)。このS84の処理の内容は、S87の処理の内容と同じである。しかし、S84の処理を実行するのは、第1既定量の運転の間に停止処理が実行されていた場合である。そのため、S84の処理において用いる積算許容失火率ΣRmfには、
図8を参照して説明したマップデータを用いて算出した許容失火率Rmfが含まれている。そのため、S84の処理を通じて算出される平均許容失火率Rmf_aveは、S87の処理を通じて算出される平均許容失火率Rmf_aveよりも小さくなりやすい。
【0099】
次に、エンジンコントロールユニット300は、異常判定閾値Cmfth1を算出する(S85)。具体的には、S85の処理において、エンジンコントロールユニット300は、第1既定値Ceth1から第1停止カウンタCfc1を引いた差に平均許容失火率Rmf_aveを乗じた積を100で割って異常判定閾値Cmfth1を算出する。
【0100】
そして、エンジンコントロールユニット300は、異常判定閾値Cmfth1に「(Ctdc1-Cfc1)/Ctdc1」を乗算した積を、異常判定閾値Cmfth1に代入する(S86)。そして、エンジンコントロールユニット300は、S89の処理に移行する。なお、S86の処理は、異常判定閾値Cmfth1に対して、第1既定量の運転における全ての気筒の圧縮上死点の到来回数の和(Ctdc1)に占める燃料の供給を行った回数(Ctdc1-Cfc1)の割合を乗じる補正を施す処理である。
【0101】
そして、エンジンコントロールユニット300は、処理をS89へと進める。
<本実施形態の作用>
図9に示すルーチンは、エンジン50を第1既定量運転させる間に失火が検出された回数を示す第1失火カウンタCmf1が異常判定閾値Cmfth1より大きい場合にエンジン50に触媒異常が発生している旨の診断を下す触媒異常診断処理である。
【0102】
図9を参照して説明したように本実施形態の触媒異常診断処理は、エンジン50を第1既定量運転させる間に停止処理を実行した場合(S81:YES)には、第1失火カウンタCmf1及び異常判定閾値Cmfth1に補正を施す(S83,S86)。そして、補正後の第1失火カウンタCmf1が補正後の異常判定閾値Cmfth1よりも大きい場合(S89:YES)にエンジン50に触媒異常が発生していることを診断する(S90)。
【0103】
すなわち、異常診断装置であるエンジンコントロールユニット300は、停止処理を実行した場合には、触媒異常診断処理において、第1失火カウンタCmf1に対して燃料供給を停止させた回数を除外する補正を施す。また、実際に燃料供給を行った割合にあわせて異常判定閾値Cmfth1を補正している。
【0104】
なお、停止処理が実行されていた場合に、既定量の運転における全ての気筒の圧縮上死点の到来回数の和に占める燃料の供給を行った回数の割合を乗じる補正を施す点は、S86の処理と、失火異常診断処理におけるS60の処理とで共通している。しかし、触媒異常診断処理の場合には、補正を施す前の異常判定閾値Cmfth1の算出(S85)に用いる許容失火率Rmfの算出(S74)に際して、第1マップデータよりも出力変数が小さい第2マップデータを用いている。そのため、停止処理が実行されていた場合には、停止処理が実行されていなかった場合よりも補正を施す前の異常判定閾値Cmfth1が小さくなっている。
【0105】
これにより、エンジンコントロールユニット300は、エンジン50を第1既定量運転させる間に停止処理を実行した場合には、停止処理を実行しなかった場合よりも第1失火カウンタCmf1が小さい状態で触媒異常の診断を下す。
【0106】
また、上述したように、触媒異常診断処理では、停止処理が実行されていた場合には、停止処理が実行されていなかった場合よりも補正を施す前の異常判定閾値Cmfth1自体が小さくなっている。停止処理が実行されていなかった場合よりも小さい異常判定閾値Cmfth1に対して、さらに既定量の運転における全ての気筒の圧縮上死点の到来回数の和に占める燃料の供給を行った回数の割合を乗じる補正を施している。そのため、停止処理を実行した場合に、停止処理を実行していない場合と比較して異常判定閾値Cmfth1が小さくされる度合いが、失火判定閾値Cmfth2が小さくされる度合いよりも大きくなっている。
【0107】
ここで、停止処理を実行しなかった場合の異常判定閾値Cmfth1を第1異常判定閾値とし、停止処理を実行した場合の異常判定閾値Cmfth1を第2異常判定閾値とする。そして、停止処理を実行しなかった場合の失火判定閾値Cmfth2を第1失火判定閾値とし、停止処理を実行しなかった場合の失火判定閾値Cmfth2を第2失火判定閾値とする。この場合、第2異常判定閾値を第1異常判定閾値で割った商は第2失火判定閾値を第1失火判定閾値で割った商よりも小さくなる。
【0108】
<本実施形態の効果>
(1)停止処理を実行している場合には、停止気筒を通じて空気が導入されるため、酸化反応によって排気浄化装置の温度が上昇する。そのため、停止処理を実行していない場合と比較して、失火が発生した回数が少なくても排気浄化装置に過熱によるダメージが蓄積している。
【0109】
上記のエンジンコントロールユニット300は、停止処理を実行した場合には、停止処理を実行しなかった場合よりも第1失火カウンタCmf1が小さい状態で排気浄化装置に異常が生じている旨の診断を下す。すなわち、上記のエンジンコントロールユニット300は、停止処理による過熱のダメージを反映させて、触媒異常診断処理を行うことができる。
【0110】
(2)第1既定量の運転において停止処理によって燃料の供給を停止させた回数が多いほど、排気浄化装置に蓄積したダメージは多くなる。
そこで、停止処理が実行されている場合には、エンジンコントロールユニット300は、第2マップデータを用いて許容失火率Rmfを算出する。これにより、エンジンコントロールユニット300は、燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値Cmfth1を算出している。そのため、エンジンコントロールユニット300は、燃焼供給を停止させた回数に応じたダメージの蓄積を反映させた触媒異常診断処理を実現できる。
【0111】
(3)エンジンコントロールユニット300は、触媒異常診断に加えて、失火異常診断処理を実行する。停止処理を実行していると、燃料供給を停止している気筒において失火が発生しているとの誤った失火検出が行われるおそれがある。その結果、失火の発生頻度が高いと判定されて失火異常が発生していると誤診断されてしまう。これに対して、上記のエンジンコントロールユニット300は、停止処理を実行した場合には、失火異常診断処理において、カウント処理によってカウントした第2失火カウンタCmf2から燃料供給を停止させた回数を除外する補正を施す。また、エンジンコントロールユニット300は、実際に燃料供給を行った割合にあわせて失火判定閾値Cmfth2を小さくする補正をしている。これにより、上記のエンジンコントロールユニット300は、燃料供給が停止されている気筒が存在していることを反映させて的確に失火異常を診断できる。
【0112】
(4)失火異常診断処理においては、燃料供給を停止している気筒を失火の検出対象から除外して失火異常を診断すればよい。一方で、触媒異常診断処理においては、燃料供給を停止している気筒を失火の検出対象から除外するのみならず、燃料供給を停止している気筒からの酸素の供給による発熱による排気浄化装置へのダメージの蓄積を反映させる必要がある。
【0113】
上記のエンジンコントロールユニット300では、停止処理を実行した場合に、異常判定閾値Cmfth1が小さくされる度合いが、失火判定閾値Cmfth2が小さくされる度合いよりも大きくなっている。そのため、燃料供給を停止している気筒を失火の検出対象から除外するのみならず、燃料供給を停止している気筒からの酸素の供給による発熱による排気浄化装置へのダメージの蓄積を反映させた触媒異常診断を実現できる。
【0114】
<変更例>
本実施形態は、以下のように変更して実施することができる。本実施形態及び以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【0115】
・上記実施形態では、6気筒エンジンの例を示したが、異常診断装置の適用対象は、6気筒エンジンに限らない。また、停止処理において燃料供給を停止させる気筒の数は2つに限らない。例えば、4気筒エンジンにおいて、4つの気筒のうち1つの気筒に対する燃料供給を停止する停止処理を実行する場合には、第1マップデータに相当するマップデータにおける出力変数から4分の1に相当する「25(%)」を引いた第2マップデータを用意する。そして、停止処理を実行している場合には、この第2マップデータを用いて許容失火率Rmfを算出すればよい。なお、4つの気筒のうち、2つの気筒に対する燃料供給を停止する停止処理を実行する場合には、4分の2に相当する「50(%)」を引いた第2マップデータを用いればよい。なお、停止処理において燃料供給を停止する気筒の数が変動する場合には、停止する気筒の数に対応させてそれぞれマップデータを用意して、そのときの停止気筒の数に対応したマップデータを用いて許容失火率Rmfを算出すればよい。
【0116】
・第1既定量の運転において停止処理によって燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値Cmfth1を算出する態様としては、上記の実施形態で示した態様に限らない。こうした態様に限らず、停止処理によって燃料の供給を停止させた回数が多いほど小さくなるように異常判定閾値Cmfth1を算出することのできる態様を採用すればよい。
【0117】
・上記実施形態では、回転変動量ΔT30として、ATDC60°CAからATDC90°CAまでの区間の回転に要するT30[0]からTDC~ATDC30°CAの区間の回転に要するT30[2]を減算した値とした。回転変動量ΔT30は、これに限らない。たとえば、失火の判定対象となる気筒のTDC~ATDC30°CAの区間の回転に要するT30から、1つ前に圧縮上死点となった気筒のTDC~ATDC30°CAの区間の回転に要するT30を減算した値としてもよい。
【0118】
・上記実施形態では、圧縮上死点の出現間隔以下の回転角度間隔におけるクランクシャフト59の回転速度の変動量である回転変動量を、同回転角度間隔の回転に要する時間同士の差によって定量化したが、これに限らず、比によって定量化してもよい。
【0119】
・上記実施形態では、回転変動量を定めるための圧縮上死点の出現間隔以下の回転角度間隔におけるクランクシャフト59の回転速度を示す変数である瞬時速度変数を、同回転角度間隔の回転に要する時間によって定量化した。これに限らず、瞬時速度変数を、速度によって定量化してもよい。
【0120】
・再生処理の実行を許可する所定の条件としては、上記実施形態において例示したものに限らない。たとえば、上記条件(ア)~条件(ウ)の3つの条件に関しては、それらのうちの2つのみを含んでもよく、またたとえば1つのみを含んでもよい。なお、所定の条件に上記3つの条件以外の条件が含まれてもよく、また上記3つの条件のいずれも含まなくてもよい。
【0121】
・停止処理としては、再生処理に限らない。たとえば、エンジン50の出力を調整するために一部の気筒における燃料の供給を停止する処理であってもよい。またたとえば、1部の気筒において異常が生じた場合に、その気筒における燃焼制御を停止する処理であってもよい。またたとえば、三元触媒の酸素吸蔵量が既定値以下となる場合に、一部の気筒のみ燃焼制御を停止し、残りの気筒における混合気の空燃比を理論空燃比とする制御を実行する処理であってもよい。
【0122】
・上記実施形態では、異常の診断が下された場合、警告灯150を用いた報知処理を実行したが、報知処理としては、視覚情報を出力する装置を操作対象とする処理に限らず、たとえば聴覚情報を出力する装置を操作対象とする処理であってもよい。
【0123】
・異常診断処理の結果を報知処理に利用すること自体必須ではない。たとえば、失火異常の診断を下された場合に、失火が生じにくい運転状態へとエンジン50の制御を変更すべくエンジン50を操作する処理を実行してもよい。
【0124】
・堆積量DPMの推定処理としては、上記の実施形態において例示したものに限らない。たとえば、GPFの上流側と下流側との圧力の差と吸入空気量Gaとに基づき堆積量DPMを推定してもよい。具体的には、圧力の差が大きい場合に小さい場合よりも堆積量DPMを大きい値に推定し、圧力の差が同一であっても、吸入空気量Gaが小さい場合に大きい場合よりも堆積量DPMを大きい値に推定すればよい。ここで、GPFの下流側の圧力を一定値とみなす場合、差圧に代えて上記圧力Pexを用いることができる。
【0125】
・GPFとしては、三元触媒が担持されたフィルタに限らず、フィルタのみであってもよい。また、GPFとしては、排気通路のうちの三元触媒の下流に設けられるものに限らない。また、排気浄化装置がGPFを備えること自体必須ではない。たとえば排気浄化装置が三元触媒のみからなる場合であっても、排気浄化装置の昇温が必要となるなら、上記実施形態やそれらの変更例に例示した処理を実行することが有効である。
【0126】
・モニタカウンタが既定値以上になったときの失火カウント値が判定閾値以上であることに基づいて異常の発生を診断する例を示した。これに対して、モニタカウンタが判定閾値以上になったときの失火カウント値を判定閾値で割って失火率を算出するようにしてもよい。すなわち、失火率が閾値(失火率)以上であることに基づいて異常の発生を診断するようにしてもよい。
【0127】
・車両10は、プラグインハイブリッド車に限らない。外部充電を行うための構成を備えていないハイブリッド車であってもよい。シリーズ・パラレルハイブリッド車に限らず、たとえばパラレルハイブリッド車やシリーズハイブリッド車であってもよい。もっとも、ハイブリッド車に限らず、たとえば、車両10の動力発生装置がエンジン50のみの車両であってもよい。
【0128】
・触媒異常診断処理及び失火異常診断処理をシステムコントロールユニット100で実行し、異常を診断するようにしてもよい。この場合には、システムコントロールユニット100が異常診断装置になる。
【0129】
・上記実施形態では、異常診断装置であるエンジンコントロールユニット300は、ソフトウェア処理を実行する。しかしながら、これは例示に過ぎない。例えば、異常診断装置は、上記実施形態において実行されるソフトウェア処理の少なくとも一部を処理する専用のハードウェア回路(例えばASICなど)を備えてもよい。すなわち、異常診断装置は、以下の(a)~(c)のいずれかの構成であればよい。(a)異常診断装置は、プログラムに従って全ての処理を実行する処理回路と、プログラムを記憶する記憶装置とを備える。すなわち、異常診断装置は、ソフトウェア実行装置を備える。(b)異常診断装置は、プログラムに従って処理の一部を実行する処理回路と、記憶装置とを備える。さらに、異常診断装置は、残りの処理を実行する専用のハードウェア回路を備える。(c)異常診断装置は、全ての処理を実行する専用のハードウェア回路を備える。ここで、ソフトウェア実行装置、及び/又は、専用のハードウェア回路は複数であってもよい。すなわち、上記処理は、1つ又は複数のソフトウェア実行装置および1つ又は複数の専用のハードウェア回路の少なくとも一方を備えた処理回路(processing circuitry)によって実行され得る。プログラムを格納する記憶装置すなわちコンピュータ可読媒体は、汎用または専用のコンピュータでアクセスできるあらゆる利用可能な媒体を含む。
【0130】
・本明細書において使用される「少なくとも1つ」という表現は、所望の選択肢の「1つ以上」を意味する。一例として、本明細書において使用される「少なくとも1つ」という表現は、選択肢の数が2つであれば「1つの選択肢のみ」または「2つの選択肢の双方」を意味する。他の例として、本明細書において使用される「少なくとも1つ」という表現は、選択肢の数が3つ以上であれば「1つの選択肢のみ」または「2つ以上の任意の選択肢の組み合わせ」を意味する。
【符号の説明】
【0131】
10…車両
11…第1モータジェネレータ
12…第2モータジェネレータ
30…バッテリ
31…コネクタ
40…外部電源
50…エンジン
59…クランクシャフト
100…システムコントロールユニット
130…メインスイッチ
131…アクセルポジションセンサ
132…ブレーキセンサ
133…車速センサ
134…クランクポジションセンサ
135…エアフローメータ
136…水温センサ
137…排気圧センサ
150…警告灯
200…パワーコントロールユニット
300…エンジンコントロールユニット