(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-05-19
(45)【発行日】2025-05-27
(54)【発明の名称】内燃機関の失火検出装置
(51)【国際特許分類】
F02D 45/00 20060101AFI20250520BHJP
【FI】
F02D45/00 368Z
(21)【出願番号】P 2021213103
(22)【出願日】2021-12-27
【審査請求日】2024-03-20
(73)【特許権者】
【識別番号】000003207
【氏名又は名称】トヨタ自動車株式会社
(74)【代理人】
【識別番号】100105957
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】中山 裕貴
(72)【発明者】
【氏名】片山 章弘
(72)【発明者】
【氏名】宮原 秀樹
(72)【発明者】
【氏名】池尻 祐貴
(72)【発明者】
【氏名】安澤 巧
【審査官】家喜 健太
(56)【参考文献】
【文献】特開平10-054294(JP,A)
【文献】特開2004-225552(JP,A)
【文献】特開2021-123316(JP,A)
【文献】特開2015-206347(JP,A)
【文献】特開2000-265889(JP,A)
【文献】米国特許出願公開第2003/0085709(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
F02D 19/00 - 45/00
(57)【特許請求の範囲】
【請求項1】
6つの気筒を備えた内燃機関に適用され、
クランクシャフトの回転変動量に基づいて、360°CA毎に失火が発生する異常である対向気筒失火の発生を検出する対向気筒失火検出処理を実行する内燃機関の失火検出装置であり、
前記クランクシャフトの累積回転回数が予め定められた回転回数に達するまでに、前記対向気筒失火検出処理において前記対向気筒失火の発生が判定された回数である失火カウント値が閾値以上になったときに、失火異常が発生したと判定する異常診断処理を実行し、
膨張行程が360°CA離れた一組の対向気筒への燃料供給を停止して残りの気筒に燃料を供給する特定気筒停止処理が実行されているときには、
前記対向気筒失火検出処理を停止することにより前記失火カウント値の更新を停止し、且つ前記累積回転回数の更新を停止する
内燃機関の失火検出装置。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は内燃機関の失火検出装置に関するものである。
【背景技術】
【0002】
特許文献1には、6気筒の内燃機関において対向気筒失火を検出する失火検出装置が開示されている。なお、対向気筒失火とは、360°CA毎に発生する失火のことである。すなわち、対向気筒失火が発生しているときには、膨張行程が360°CA離れた2つの気筒、すなわち対向気筒の双方で失火が発生している。失火検出装置は、クランクシャフトの回転変動量に基づいて対向気筒失火を検出する。
【0003】
また、特許文献2には、内燃機関の複数の気筒のうち、特定の気筒への燃料供給を停止させて残りの気筒に燃料を供給することによって触媒の温度を昇温させる制御を実行する内燃機関の制御装置が開示されている。
【0004】
6気筒の内燃機関において、特許文献2に開示されているように特定の気筒への燃料供給を停止させて残りの気筒に燃料を供給する特定気筒停止処理を実行する場合、1組の対向気筒への燃料供給を停止させる。これは、6つの気筒すべてが1回ずつ点火時期を迎える期間、すなわちクランクシャフトが2回転する期間に対して、2回の燃焼停止気筒を均等に振り分けることによってトルク変動を抑制するためである。
【先行技術文献】
【特許文献】
【0005】
【文献】特開平10-54294号公報
【文献】特開2021-60027号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、6気筒の内燃機関において、1組の対向気筒への燃料供給を停止させる特定気筒停止処理を実行している場合、クランクシャフトの回転変動は、対向気筒失火が発生しているときと同様の挙動を示す。そのため、対向気筒失火が発生していないにも拘わらず、対向気筒失火が発生していると誤検出してしまうおそれがある。
【課題を解決するための手段】
【0007】
以下、上記課題を解決するための手段及びその作用効果について記載する。
上記課題を解決するための内燃機関の失火検出装置は、6つの気筒を備えた内燃機関に適用される。この失火検出装置は、クランクシャフトの回転変動量に基づいて、360°CA毎に失火が発生する異常である対向気筒失火の発生を検出する対向気筒失火検出処理を実行する。また、この失火検出装置は、膨張行程が360°CA離れた一組の対向気筒への燃料供給を停止して残りの気筒に燃料を供給する特定気筒停止処理が実行されているときには、前記対向気筒失火検出処理を停止する。
【0008】
上記の失火検出装置は、クランクシャフトの回転変動量の挙動が、対向気筒失火が発生しているときの回転変動量の挙動と同様の挙動になる特定気筒停止処理を実行しているときには、対向気筒失火検出処理を停止する。そのため、特定気筒停止処理に起因する回転変動量の挙動に基づいて、対向気筒失火が発生していると誤検出してしまうことを抑制できる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、失火検出装置の一実施形態であるエンジンコントロールユニットを備えるハイブリッド車両の構成を示す模式図である。
【
図2】
図2は、クランク角信号について説明する模式図である。
【
図3】
図3は、対向気筒失火が発生しているときのクランクシャフトの回転変動量の挙動を示すグラフである。
【
図4】
図4は、回転変動量の算出態様を説明するための説明図である。
【
図5】
図5は、対向気筒失火の検出及び異常判定にかかる一連の処理の流れを示すフローチャートである。
【
図6】
図6は、実施形態のエンジンコントロールユニットによる作用を説明するタイムチャートであり、
図6(a)は特定気筒停止処理が実行されているか否か、
図6(b)は累積回転回数Σrev、
図6(c)は失火カウント値cnt、の推移を示している。
【発明を実施するための形態】
【0010】
以下、内燃機関の失火検出装置の一実施形態について、
図1~
図6を参照して説明する。
<車両10の構成について>
図1に示すように、車両10は、エンジン50を備えている。エンジン50は、
図1に示すように#1~#6の6つの気筒を備える6気筒エンジンである。また、車両10は、電力を蓄えるバッテリ30を備えている。さらに車両10は、第1モータジェネレータ11と第2モータジェネレータ12とを備えている。これら第1モータジェネレータ11及び第2モータジェネレータ12は、バッテリ30からの給電に応じて駆動力を発生するモータであり、外部からの動力を受けてバッテリ30に充電する電力を発電する発電機としての機能も兼ね備えている。
【0011】
さらに、車両10には、サンギア14、プラネタリキャリア15、リングギア16の3つの回転要素を有する遊星ギア機構13が設けられている。遊星ギア機構13のプラネタリキャリア15には、エンジン50の出力軸であるクランクシャフト59が連結されている。そして、遊星ギア機構13のサンギア14には第1モータジェネレータ11の回転軸に連結された第1インプットシャフト25が連結されている。また、遊星ギア機構13のリングギア16には、カウンタドライブギア17が一体に設けられている。カウンタドライブギア17には、カウンタドリブンギア18が噛み合わされている。そして、このカウンタドリブンギア18には、リダクションギア19が噛み合わされている。リダクションギア19には、第2モータジェネレータ12の回転軸に連結された第2インプットシャフト26が連結されている。
【0012】
また、カウンタドリブンギア18には、ファイナルドライブギア20が一体回転可能に連結されている。ファイナルドライブギア20には、ファイナルドリブンギア21が噛み合わされている。そして、ファイナルドリブンギア21には、差動機構22を介して、駆動輪23の駆動軸24が連結されている。
【0013】
<システムコントロールユニット100について>
システムコントロールユニット100は、プログラムが記憶されている記憶装置と、記憶装置に記憶されているプログラムを実行して各種の制御を実行する処理回路と、を備えている。システムコントロールユニット100は、パワーコントロールユニット200及びエンジンコントロールユニット300と接続されている。
【0014】
<パワーコントロールユニット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は、プラグインハイブリッド車である。
【0015】
<エンジンコントロールユニット300について>
エンジンコントロールユニット300は、システムコントロールユニット100からの指令に基づいてエンジン50を制御する。エンジンコントロールユニット300は、プログラムが記憶されている記憶装置と、記憶装置に記憶されているプログラムを実行して各種の制御を実行する処理回路と、を備えている。
【0016】
エンジンコントロールユニット300には、エンジン50の運転状態を検出する各種センサの検出信号が入力されている。エンジンコントロールユニット300に検出信号を入力するセンサには、クランクシャフト59の回転角を検出するクランクポジションセンサ134が含まれている。
【0017】
図2に示すように、クランクシャフト59には、クランクロータ58が取り付けられている。クランクロータ58には、34個の歯56が等しい間隔をあけて設けられているが、隣接する歯56の間隔が広くなっている欠け歯部57が1箇所設けられている。クランクポジションセンサ134は、クランクロータ58の歯56と対向するようにクランクロータ58の周縁部に向けて設けられている。
【0018】
クランクポジションセンサ134は、磁石と磁気抵抗素子を内蔵したセンサ回路からなる磁気抵抗素子タイプのセンサである。クランクシャフト59の回転に伴ってクランクロータ58が回転すると、それに伴ってクランクロータ58の歯56とクランクポジションセンサ134とが近接、離間するようになる。これにより、クランクポジションセンサ134内の磁気抵抗素子にかかる磁界の方向が変化し、磁気抵抗素子の内部抵抗が変化する。センサ回路はこの抵抗値変化を電圧に変換した波形と閾値との大小関係を比較してその波形をLo信号とHi信号とによる矩形波に整形し、クランク角信号Scrとして出力する。
【0019】
図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である。
【0020】
そして、欠け歯部57に対応するHi信号に続いて歯56に対応するLo信号が検出されてから、次に欠け歯部57に対応するHi信号に続いてLo信号が検出されるまでの間隔は、クランク角にして360°CAになっている。
【0021】
エンジンコントロールユニット300は、クランク角信号Scrに基づいてクランク角及び機関回転速度を算出している。また、エンジンコントロールユニット300は、クランクシャフト59の回転変動量の指標値として、クランク角が一定量変化するのに要した時間を算出している。
図2には、T30に相当する期間を図示している。T30は、クランク角が30°CA変化するのに要した時間である。
【0022】
エンジンコントロールユニット300は、クランクポジションセンサ134から入力されるクランク角信号Scrに基づいてクランクシャフト59の回転速度である機関回転速度を算出する。
【0023】
また、エンジンコントロールユニット300には、エンジン50の燃焼室に吸入する吸気の温度を検出する吸気温センサ135が接続されている。さらに、エンジンコントロールユニット300には、エンジン50の冷却水の温度を検出する水温センサ136も接続されている。
【0024】
図1に示すように、システムコントロールユニット100には、車両10の運転者が車両10のシステムの起動と停止を切り替えるためのメインスイッチ130が接続されている。また、システムコントロールユニット100には、アクセル操作量を検出するアクセルポジションセンサ131と、ブレーキ操作量を検出するブレーキセンサ132とが接続されている。さらにシステムコントロールユニット100には、車両10の速度である車速を検出する車速センサ133が接続されている。
【0025】
また、パワーコントロールユニット200には、バッテリ30の電流、電圧及び温度が入力されている。パワーコントロールユニット200は、これら電流、電圧及び温度に基づき、バッテリ30の充電容量に対する充電残量の比率である充電状態指標値SOCを算出している。
【0026】
エンジンコントロールユニット300とパワーコントロールユニット200は、それぞれシステムコントロールユニット100に接続されている。そして、システムコントロールユニット100とパワーコントロールユニット200とエンジンコントロールユニット300とのそれぞれが、センサから入力された検出信号に基づく情報や算出した情報を相互にやりとりし、共有している。
【0027】
システムコントロールユニット100は、これらの情報に基づき、エンジンコントロールユニット300に指令を出力し、エンジンコントロールユニット300を通じてエンジン50を制御する。また、システムコントロールユニット100は、これらの情報に基づいてパワーコントロールユニット200に指令を出力する。これにより、システムコントロールユニット100は、パワーコントロールユニット200を通じて第1モータジェネレータ11及び第2モータジェネレータ12の制御と、バッテリ30の充電制御とを行う。このようにシステムコントロールユニット100は、パワーコントロールユニット200とエンジンコントロールユニット300とに指令を出力することにより車両10を制御する。
【0028】
<車両10の制御について>
続いて、こうしたシステムコントロールユニット100が行う車両10の制御についてより詳しく説明する。
【0029】
システムコントロールユニット100は、アクセル操作量と車速とに基づき、車両10の出力の要求値である要求出力を演算する。そして、システムコントロールユニット100は、要求出力やバッテリ30の充電状態指標値SOCなどに応じて、エンジン50、第1モータジェネレータ11及び第2モータジェネレータ12のトルク配分を決定する。そして、エンジン50の出力と、第1モータジェネレータ11、第2モータジェネレータ12による力行/回生とを制御する。なお、システムコントロールユニット100は、充電状態指標値SOCの大きさによって車両10の走行モードを切り替える。
【0030】
システムコントロールユニット100は、充電状態指標値SOCが一定の水準を超えている場合には、エンジン50を作動させずに第2モータジェネレータ12による駆動力や第1モータジェネレータ11による駆動力によって走行するモータ走行モードを選択する。すなわち、システムコントロールユニット100は、バッテリ30の充電残量に十分な余裕がある場合には、モータ走行モードを選択する。
【0031】
一方で、システムコントロールユニット100は、充電状態指標値SOCが一定の水準以下になった場合には、第1モータジェネレータ11及び第2モータジェネレータ12に加えて、エンジン50を使用して走行するハイブリッド走行モードを選択する。
【0032】
なお、システムコントロールユニット100は、充電状態指標値SOCが一定の水準を超えている場合であっても、次のような場合には、ハイブリッド走行モードを選択する。
・車速がモータ走行モードの上限車速を超えているとき。
【0033】
・アクセル操作量が大きい急加速のときなど、一時的に大きな出力が必要なとき。
・エンジン50の始動が必要なとき。
システムコントロールユニット100は、ハイブリッド走行モードを選択している場合には、エンジン50を始動させる際に第1モータジェネレータ11をスタータモータとして機能させる。具体的には、システムコントロールユニット100は、第1モータジェネレータ11によってサンギア14を回転させることによりクランクシャフト59を回転させてエンジン50を始動する。
【0034】
また、システムコントロールユニット100は、ハイブリッド走行モードを選択している場合には、充電状態指標値SOCの大きさに応じて停車時の制御を切り替える。具体的には、充電状態指標値SOCが閾値以上である場合には、システムコントロールユニット100は、エンジン50の運転を停止させ、第1モータジェネレータ11及び第2モータジェネレータ12の駆動も行わない。すなわち、システムコントロールユニット100は、停車時にエンジン50の運転を停止させてアイドリング運転を抑制する。なお、バッテリ30の充電状態指標値SOCが閾値未満である場合には、システムコントロールユニット100は、エンジン50を運転させる。そして、エンジン50の出力によって第1モータジェネレータ11を駆動して第1モータジェネレータ11を発電機として機能させる。
【0035】
システムコントロールユニット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は機関回転速度をより高くする。そして、第1モータジェネレータ11で発電された電力を第2モータジェネレータ12の駆動に使用するとともに、余剰の電力をバッテリ30に充電する。なお、加速時には、システムコントロールユニット100は機関回転速度を高めるとともに、第1モータジェネレータ11で発電された電力を第2モータジェネレータ12の駆動に使用する。これにより、エンジン50の動力と第2モータジェネレータ12の動力とによって車両10を加速させる。そして、システムコントロールユニット100は減速時には、エンジン50の運転を停止させる。そして、システムコントロールユニット100は第2モータジェネレータ12を発電機として機能させ、発電した電力をバッテリ30に充電する。車両10では、こうした発電によって生じる抵抗をブレーキとして利用する。こうした減速時の発電制御を回生制御という。
【0036】
<失火異常の診断について>
エンジンコントロールユニット300は、エンジン50における失火異常を診断する異常診断を行う。具体的には、エンジンコントロールユニット300は、360°CA毎に失火が発生する異常である対向気筒失火を検出する。そして、対向気筒失火の発生頻度が高い場合に、対向気筒失火による失火異常が発生していると診断する。
【0037】
図3は、対向気筒失火が発生している場合のクランクシャフト59の回転変動の挙動を示している。
図3には、各気筒での燃焼によって、クランク角が一定量変化するのに要した時間の長さを、気筒毎に表示している。具体的には、点火が行われてからクランク角が120°CA変化するのに要した時間であるT120を、気筒毎に示している。
【0038】
図3は、#2の気筒と#5の気筒において失火が生じている例を示している。#2の気筒と#6の気筒は膨張行程が360°CA離れている。すなわち、
図3は、#2の気筒と#5の気筒とで失火が生じる対向気筒失火が発生しているときの回転変動の挙動を示している。失火が生じている気筒では、燃焼ガスの膨張が発生しない。そのため、
図3に示すように、#2の気筒及び#5の気筒では、クランク角が120°CA変化するのに要する時間であるT120が、失火が発生していない#1、#3、#4、#6の気筒よりも長くなる。
【0039】
そこで、エンジンコントロールユニット300は、クランク角信号Scrに基づいて算出したT120を回転変動量の指標値として利用する。具体的には、エンジンコントロールユニット300は、
図3に示したように、膨張行程が360°CA離れている気筒におけるT120が長くなる挙動が現れていることを検知し、対向気筒失火を検出する。
【0040】
具体的には、
図4に示すように、エンジンコントロールユニット300は、各気筒の燃焼行程に対応するT120として、T120[0]~T120[5]を算出する。
図4では、#5の気筒におけるT120をT120[0]として対向気筒失火を検出するために用いる回転変動量の指標値の算出態様を示している。なお、
図4に示すように、T120[0]は、#6の気筒の上死点である#6TDCからクランク角が30°CA変化するのに要した時間をT30[0]として算出されている。
図4に示すように、T120[0]は、T30[0]と、1つ前の30°CAにおけるT30であるT30[1]と、2つ前の30°CAにおけるT30であるT30[2]と、3つ前の30°CAにおけるT30であるT30[3]と、を加算した和である。
図4に示すように、T120[0]~T120[5]は、いずれも連続する4つのT30を加算した和である。
【0041】
そして、エンジンコントロールユニット300は、点火時期が前後に隣接している気筒におけるΔT120の差であるΔT120を算出する。
図4に示す例では、T120[0]から1つ前のT120であるT120[1]を引いた差をΔT120[0]として算出している。
【0042】
#5の気筒で失火が発生しておらず、#4の気筒でも失火が発生していない場合には、T120[0]とT120[1]はおおむね同じ長さになるため、ΔT120[0]の値は「0」に近い値になる。一方で、#5の気筒で失火が発生しており、#4の気筒で失火が発生していない場合には、T120[0]がT120[1]よりも長くなるため、ΔT120[0]が大きな値になる。すなわち、ΔT120は、点火時期が前後に隣接する気筒の間での回転変動量の指標値であり、失火の発生を検知するための指標値になっている。
【0043】
図4に示す例では、対向気筒失火を検出するために、エンジンコントロールユニット300は、膨張行程が#5の気筒と360°CA離れた#2の気筒における失火検知の指標値であるΔT120[3]も算出している。そして、エンジンコントロールユニット300は、ΔT120[0]とΔT120[3]の和であるΣT120[0]を算出する。
【0044】
#5の気筒及び#2の気筒の双方で失火が発生しており、対向気筒失火が発生しているときには、ΔT120[0]とΔT120[3]の双方が大きな値になるため、ΣT120[0]はとても大きな値になる。
【0045】
エンジンコントロールユニット300は、ΣT120[0]の他に、同様の算出方法で、ΣT120[1]及びΣT120[2]を算出し、これらの平均値であるΔT120Aを算出している。そして、エンジンコントロールユニット300は、ΣT120Aが閾値X1以上である場合に、対向気筒失火が発生していると判定することにより、対向気筒失火の発生を検出する。エンジンコントロールユニット300は、こうした対向気筒失火検出処理をエンジン50の運転中に繰り返し実行している。
【0046】
なお、エンジンコントロールユニット300は、対向気筒失火の検出以外にも、T30の差であるΔT30や、T180の差であるΔT180を用いた単一の気筒の失火の検出や、不規則に発生する失火であるランダム失火の検出なども行っている。
【0047】
<特定気筒停止処理について>
エンジンコントロールユニット300は、6つの気筒のうち、膨張行程が360°CA離れた一組の対向気筒に対する燃料供給を停止して残りの4つの気筒に燃料を供給した状態でエンジン50を運転させる特定気筒停止処理を実行することがある。こうした特定気筒停止処理は、エンジン50の排気通路に設けられたパティキュレートフィルタに堆積した粒子状物質を燃焼させて除去するために実行される。一部の気筒への燃料供給を停止した状態でエンジン50を運転させることにより、燃料供給を停止している気筒を通過した空気を排気浄化触媒やパティキュレートフィルタに送り込むことができる。これにより、粒子状物質の酸化反応を促進し、粒子状物質を燃焼させて除去することができる。
【0048】
なお、燃料の供給を停止させる気筒を、膨張行程が360°CA離れた一組の対向気筒にするのは、クランクシャフト59が2回転する期間に対して、2回の燃焼停止気筒を均等に振り分けることによってトルク変動を抑制するためである。
【0049】
ところで、エンジン50において、1組の対向気筒への燃料供給を停止させる特定気筒停止処理を実行した場合、クランクシャフト59の回転変動は、
図2に示した対向気筒失火が発生しているときと同様の挙動を示すことになる。そのため、エンジンコントロールユニット300は、対向気筒失火が発生していないにも拘わらず、対向気筒失火が発生していると誤検出してしまう。
【0050】
<対向気筒失火についての異常診断>
上述のような誤検出を抑制するため、エンジンコントロールユニット300では、特定気筒停止処理を実施しているときには、対向気筒失火の発生を検出する対向気筒失火検出処理を停止するようにしている。
【0051】
図5は、エンジンコントロールユニット300が実行する対向気筒失火についての異常診断にかかる一連の処理の流れを示すフローチャートである。エンジンコントロールユニット300は、各気筒のTDCを迎える度にこのルーチンを実行する。
【0052】
図5に示すように、エンジンコントロールユニット300は、まず、ステップS100の処理において、特定気筒停止処理を実施しているか否かを判定する。そして、エンジンコントロールユニット300は、特定気筒停止処理の実施中ではないと判定した場合(ステップS100:NO)には、処理をステップS110へと進める。
【0053】
エンジンコントロールユニット300は、ステップS110の処理において、累積回転回数Σrevを更新する。なお、累積回転回数Σrevは、このルーチンを通じてエンジン50の運転中にクランクシャフト59が1回転する度に1つカウントアップされる値である。すなわち、累積回転回数Σrevはクランクシャフト59の回転回数を積算した値である。具体的には、このステップS110の処理において、エンジンコントロールユニット300は、クランク角信号Scrに基づいてクランクシャフト59の回転位相を把握する。そして、クランクシャフト59が1回転する度に累積回転回数Σrevを1つカウントアップさせる。例えば、クランク角信号Scrから0°CAを跨いだことが検知されたとき、そして、クランク角が360°CAを跨いだことが検知されたときに、累積回転回数Σrevを1つカウントアップさせる。
【0054】
次に、ステップS120の処理において、エンジンコントロールユニット300は、対向気筒失火が発生したか否かを判定する。具体的には、エンジンコントロールユニット300は、上述した対向気筒失火検出処理を実行する。
【0055】
エンジンコントロールユニット300は、ステップS120の処理において対向気筒失火が発生したと判定した場合(ステップS120:YES)には、処理をステップS130へと進める。
【0056】
ステップS130の処理において、エンジンコントロールユニット300は、失火カウント値cntを更新する。なお、失火カウント値cntは、このルーチンを通じて対向気筒失火が発生したと判定した回数を示す値である。具体的には、ステップS130の処理において、エンジンコントロールユニット300は、失火カウント値cntに「1」を加算し、その和を新たな失火カウント値cntにする。すなわち、この場合には、エンジンコントロールユニット300は、失火カウント値cntを「1」増大させる。そして、エンジンコントロールユニット300は、処理をステップS140へと進める。
【0057】
ステップS140の処理において、エンジンコントロールユニット300は、累積回転回数Σrevが第2閾値X2以上であるか否かを判定する。例えば、第2閾値X2は、「200」に設定されている。ステップS140の処理において、累積回転回数Σrevが第2閾値X2以上であると判定した場合(ステップS140:YES)には、エンジンコントロールユニット300は、処理をステップS150へと進める。
【0058】
そして、エンジンコントロールユニット300は、ステップS150の処理において、失火カウント値cntが第3閾値X3以上であるか否かを判定する。ステップS150の処理において、失火カウント値cntが第3閾値X3以上であると判定した場合(ステップS150:YES)には、エンジンコントロールユニット300は、処理をステップS160へと進める。そして、ステップS160の処理において、エンジンコントロールユニット300は、対向気筒失火による失火異常が発生している旨の判定を行い、異常診断を下す。なお、ここでは、対向気筒失火の発生頻度が許容できる範囲を超えた状態を、対向気筒失火による失火異常としている。第3閾値X3は、こうした失火異常を判定するための失火カウント値cntの閾値として設定されている。例えば、第3閾値X3は、「10」に設定されている。
【0059】
こうして異常診断を下すと、エンジンコントロールユニット300は、対向気筒失火による失火異常が発生していることを示す情報を記憶装置に記録する。また、エンジンコントロールユニット300は、警告灯と点灯させたり、運転席のディスプレイに、失火異常が発生していることを表示させたりする。
【0060】
ステップS160の処理を通じて異常診断を下すと、エンジンコントロールユニット300は、処理をステップS170へと進める。ステップS170の処理では、エンジンコントロールユニット300は、累積回転回数Σrev及び失火カウント値cntを「0」にリセットする。そして、エンジンコントロールユニット300は、このルーチンを一旦終了させる。なお、異常診断が下された場合には、修理などが行われ、失火異常が発生していることを示す情報がクリアされるまでは、このルーチンは実行されなくなる。
【0061】
また、ステップS150の処理において、失火カウント値cntが第3閾値X3未満であると判定した場合(ステップS150:NO)には、エンジンコントロールユニット300は、S160の処理を実行せずに、処理をステップS170へと進める。
【0062】
なお、ステップS140において、累積回転回数Σrevが第2閾値X2未満であると判定した場合(ステップS140:NO)には、エンジンコントロールユニット300は、そのままこの診断ルーチンを一旦終了させる。すなわち、この場合には、エンジンコントロールユニット300は、異常診断を行うことなく、このルーチンを一旦終了させる。
【0063】
以上のように、このルーチンを繰り返し実行することによって、エンジンコントロールユニット300は、累積回転回数Σrevが第2閾値X2に達する度に異常判定するか否かを判定している。そして、異常判定するか否かの判定は、累積回転回数Σrevが第2閾値X2に達するまでの間に対向気筒失火の発生が判定された回数を示す失火カウント値cntに基づいて行われる。すなわち、このルーチンでは、対向気筒失火検出処理にかかるステップS110~ステップS130までの処理の結果に基づいて、異常診断が行われている。
【0064】
エンジンコントロールユニット300は、ステップS100の処理において特定気筒停止処理の実施中であると判定した場合(ステップS100:YES)には、ステップS110~ステップS130の処理を実行しない。そして、エンジンコントロールユニット300は、そのまま処理をステップS140へと進める。すなわち、この場合には、累積回転回数Σrevの更新、対向気筒失火検出処理の実行、失火カウント値cntの更新が行われなくなる。その結果、ステップS140の処理において肯定判定がなされることもなくなり、異常診断が行われなくなる。
【0065】
こうしてエンジンコントロールユニット300は、特定気筒停止処理を実施しているときには、対向気筒失火の発生を検出する対向気筒失火検出処理を停止するようにしている。
【0066】
<本実施形態の作用>
次に、
図6を参照してこの実施形態の作用を説明する。車両10のエンジン50が運転されているときには、
図6(b)に示すようにクランクシャフト59が1回転する度に累積回転回数Σrevが「1」積算される。また、
図6(c)に示すように対向気筒失火検出処理を通じて対向気筒失火の発生が検出される度に失火カウント値cntが増加する。なお、
図6に示す例では、異常診断が下されない程度の低い頻度で対向気筒失火が検出されている。
【0067】
図6(a)に示すように、時刻t1において特定気筒停止処理が開始されると、上述したように、エンジンコントロールユニット300は、累積回転回数Σrevの更新、対向気筒失火検出処理の実行、失火カウント値cntの更新、を停止する。
【0068】
図6では、比較例として、こうした累積回転回数Σrevの更新、対向気筒失火検出処理の実行、失火カウント値cntの更新、の停止を行わずに、これらを実行し続けた場合の例を破線で示している。
【0069】
比較例の場合には、
図6(b)に破線で示すように、特定気筒停止処理を実行している間も累積回転回数Σrevが増大し続ける。また、
図6(c)に破線で示すように特定気筒停止処理を実行している間も失火カウント値cntが増大し続ける。なお、特定気筒停止処理を実行している間は、対向気筒失火検出処理を実行する度に対向気筒失火が発生しているとの判定がなされてしまう。そのため、失火カウント値cntの増加速度は時刻t1以前よりも大きくなる。そして、時刻t2において累積回転回数Σrevが第2閾値X2以上であると判定されると、失火カウント値cntと第3閾値X3との比較が行われる。その結果、時刻t2において、失火カウント値cntが第3閾値X3以上であることに基づいて対向気筒失火による失火異常が発生しているとの判定がなされ、誤った異常診断が下されてしまう。
【0070】
これに対して、本実施形態の場合には、特定気筒停止処理が実施されている間は、エンジンコントロールユニット300は、累積回転回数Σrevの更新、対向気筒失火検出処理の実行、失火カウント値cntの更新、を停止する。そのため、
図6(b)及び
図6(c)に実線で示すように、累積回転回数Σrev及び失火カウント値cntは増加しない。
【0071】
そして、
図6(a)に示すように、時刻t3において特定気筒停止処理が終了すると、累積回転回数Σrevの更新、対向気筒失火検出処理の実行、失火カウント値cntの更新、が再開される。
【0072】
時刻t4において、累積回転回数Σrevが第2閾値X2以上であると判定されると、失火カウント値cntと第3閾値X3との比較が行われる。この場合には、時刻t4における失火カウント値cntが第3閾値X3未満であるため、誤った異常診断は下されない。
【0073】
<本実施形態の効果>
(1)エンジンコントロールユニット300は、クランクシャフト59の回転変動量の挙動が、対向気筒失火が発生しているときの回転変動量の挙動と同様の挙動になる特定気筒停止処理を実行しているときには、対向気筒失火検出処理を停止する。そのため、特定気筒停止処理に起因する回転変動量の挙動に基づいて、対向気筒失火が発生していると誤検出してしまうことを抑制できる。
【0074】
(2)誤検出の結果に基づく誤った異常診断が下されることも回避できる。
<変更例>
本実施形態は、以下のように変更して実施することができる。本実施形態及び以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【0075】
・特定気筒停止処理を実施しているときに、累積回転回数Σrevの更新、対向気筒失火検出処理の実行、失火カウント値cntの更新、を停止する例を示した。これに対して、特定気筒停止処理を実施しているときに、対向気筒失火検出処理を停止すれば、対向気筒失火が発生していると誤検出してしまうことを抑制できる。そのため、上記の様な態様に限らず、特定気筒停止処理を実施しているときに、対向気筒失火検出処理を停止すれば、同様の効果を得ることができる。例えば、特定気筒停止処理を実施しているときには、対向気筒失火検出処理を含む、他の失火検出も含めて全ての失火検出処理を停止するようにしてもよい。
【0076】
・車両10は、プラグインハイブリッド車に限らない。外部充電を行うための構成を備えていないハイブリッド車であってもよい。また、エンジン50の駆動力のみで走行する車両であってもよい。
【0077】
・累積回転回数Σrevが第2閾値X2以上になったときの失火カウント値cntが第3閾値X3以上であることに基づいて失火異常の発生を診断する例を示した。これに対して、累積回転回数Σrevが第2閾値X2以上になったときの失火カウント値cntを第2閾値X2で割って失火率を算出するようにしてもよい。すなわち、失火率が閾値以上であることに基づいて失火異常の発生を診断するようにしてもよい。
【0078】
・
図5のルーチンをシステムコントロールユニット100で実行し、失火異常を診断するようにしてもよい。この場合には、システムコントロールユニット100が失火検出装置になる。
【0079】
・上記実施形態では、失火検出装置であるエンジンコントロールユニット300は、ソフトウェア処理を実行する。しかしながら、これは例示に過ぎない。例えば、失火検出装置は、上記実施形態において実行されるソフトウェア処理の少なくとも一部を処理する専用のハードウェア回路(例えばASICなど)を備えてもよい。すなわち、失火検出装置は、以下の(a)~(c)のいずれかの構成であればよい。(a)失火検出装置は、プログラムに従って全ての処理を実行する処理回路と、プログラムを記憶する記憶装置とを備える。すなわち、失火検出装置は、ソフトウェア実行装置を備える。(b)失火検出装置は、プログラムに従って処理の一部を実行する処理回路と、記憶装置とを備える。さらに、失火検出装置は、残りの処理を実行する専用のハードウェア回路を備える。(c)失火検出装置は、全ての処理を実行する専用のハードウェア回路を備える。ここで、ソフトウェア実行装置、及び/又は、専用のハードウェア回路は複数であってもよい。すなわち、上記処理は、1つ又は複数のソフトウェア実行装置および1つ又は複数の専用のハードウェア回路の少なくとも一方を備えた処理回路(processing circuitry)によって実行され得る。プログラムを格納する記憶装置すなわちコンピュータ可読媒体は、汎用または専用のコンピュータでアクセスできるあらゆる利用可能な媒体を含む。
【符号の説明】
【0080】
10…車両
11…第1モータジェネレータ
12…第2モータジェネレータ
30…バッテリ
31…コネクタ
40…外部電源
50…エンジン
59…クランクシャフト
100…システムコントロールユニット
130…メインスイッチ
131…アクセルポジションセンサ
132…ブレーキセンサ
133…車速センサ
134…クランクポジションセンサ
135…吸気温センサ
136…水温センサ
200…パワーコントロールユニット
300…エンジンコントロールユニット