(57)【要約】      （修正有）【課題】失火の有無の判定のための演算負荷を軽減できる内燃機関の失火検出装置を提供する。【解決手段】記憶装置６６は，回転波形変数を入力とし，内燃機関の失火が生じた確率に関する変数である失火変数を出力する写像を規定するデータである写像データ６６ａ，６６ｂを記憶している。実行装置であるＣＰＵ６２，ＲＯＭ６４は，クランク角センサ７２の検出値に基づく回転波形変数を取得する取得処理と，この取得処理によって取得された変数を入力とする写像の出力に基づき失火の有無を判定する判定処理と，失火が生じたと判定する場合に異常に対処することをユーザに促すべく警告灯７８を操作する報知処理と，を実行する。これにより，連続的に出現する角度領域のそれぞれの微小回転時間を用いる場合に比較すると，写像の入力の次元を低減できることから，ＣＰＵ６２の演算負荷を低減できる。【選択図】図１
2020165363.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置と、実行装置と、を備え、
前記記憶装置は、回転波形変数を入力とし、内燃機関の失火が生じた確率に関する変数である失火変数を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、前記内燃機関のクランク軸の回転挙動を検知するセンサの検出値に基づく前記回転波形変数を取得する取得処理、前記取得処理によって取得された変数を入力とする前記写像の出力に基づき前記失火の有無を判定する判定処理、および前記判定処理によって失火が生じたと判定する場合、所定のハードウェアを操作することによって失火が生じたことに対処するための対処処理を実行し、
前記回転波形変数は、前記クランク軸の連続した回転角度間隔のうちから選択された互いに不連続な一部の角度間隔における瞬時速度変数に基づく変数であって且つ、失火の検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違に関する情報を含む変数であり、
前記瞬時速度変数は、圧縮上死点の出現間隔よりも小さい角度間隔における前記クランク軸の回転速度である瞬時速度に関する変数であり、
前記写像データは、機械学習によって学習されたデータを含む内燃機関の失火検出装置。
【請求項２】
前記写像の入力には、前記内燃機関の動作点を規定する変数である動作点変数が含まれ、
前記取得処理は、前記動作点変数を取得する処理を含み、
前記判定処理は、前記取得処理によって取得された前記動作点変数を前記写像への入力にさらに含めた前記写像の出力に基づき前記失火の有無を判定する処理であり、
前記写像は、前記回転波形変数と前記動作点変数と前記機械学習によって学習されたパラメータとの結合演算によって前記失火変数の値を出力する請求項１記載の内燃機関の失火検出装置。
【請求項３】
前記回転波形変数は、気筒間変数と変動パターン変数とを含み、
前記気筒間変数は、前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違を定量化した変数であり、
前記変動パターン変数は、前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒である第１組の気筒の前記瞬時速度変数の値同士の相違と前記第１組とは異なる２つの気筒である第２組の気筒の前記瞬時速度変数の値同士の相違との関係を定量化した変数であり、
前記写像は、前記気筒間変数と前記変動パターン変数と前記機械学習によって学習されたパラメータとの結合演算によって前記失火変数の値を出力する請求項１記載の内燃機関の失火検出装置。
【請求項４】
前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒は、圧縮上死点の出現順序が互いに隣接する２つの気筒である請求項１〜３のいずれか１項に記載の内燃機関の失火検出装置。
【請求項５】
前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒は、圧縮上死点間の間隔が前記クランク軸の１回転の間隔となる２つの気筒である請求項１〜３のいずれか１項に記載の内燃機関の失火検出装置。
【請求項６】
前記写像データは、１つの気筒で連続的に失火が生じる連続失火を検出するための写像を規定する連続失火用データと、いくつかの気筒でランダムに失火が生じるランダム失火
を検出するための写像を規定するランダム失火用データとを含み、
前記判定処理は、前記取得処理によって取得された変数を入力とする前記連続失火用データによって規定される前記写像の出力に基づき前記連続失火の有無を判定する連続失火判定処理と、前記取得処理によって取得された変数を入力とする前記ランダム失火用データによって規定される前記写像の出力に基づき前記ランダム失火の有無を判定するランダム失火判定処理と、を含む請求項１〜５のいずれか１項に記載の内燃機関の失火検出装置。
【請求項７】
前記実行装置は、
前記クランク軸の前記瞬時速度変数の値と該クランク軸に機械的に連結される入力軸の速度との差に基づき、前記クランク軸と前記入力軸とのねじれに起因した前記瞬時速度変数の値の位相ずれを低減する低減処理を実行し、
前記取得処理によって取得される前記回転波形変数は、前記低減処理の出力に基づき算出される請求項１〜６のいずれか１項に記載の内燃機関の失火検出装置。
【請求項８】
請求項１〜７のいずれか１項に記載の前記実行装置および前記記憶装置を備え、
前記判定処理は、前記取得処理によって取得された変数を入力とする前記写像の出力値を算出する出力値算出処理を含み、
前記実行装置は、第１実行装置および第２実行装置を含み、
前記第１実行装置は、車両に搭載されて且つ、前記取得処理と、前記取得処理によって取得されたデータを車両の外部に送信する車両側送信処理と、前記出力値算出処理の算出結果に基づく信号を受信する車両側受信処理と、前記対処処理と、を実行し、
前記第２実行装置は、前記車両の外部に配置されて且つ、前記車両側送信処理によって送信されたデータを受信する外部側受信処理と、前記出力値算出処理と、前記出力値算出処理の算出結果に基づく信号を前記車両に送信する外部側送信処理と、を実行する内燃機関の失火検出システム。
【請求項９】
請求項８記載の前記第２実行装置および前記記憶装置を備えるデータ解析装置。
【請求項１０】
請求項８記載の前記第１実行装置を備える内燃機関の制御装置。
【請求項１１】
請求項１〜７のいずれか１項に記載の前記取得処理、前記判定処理、および前記対処処理をコンピュータによって実行させる内燃機関の失火検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の失火検出装置、内燃機関の失火検出システム、データ解析装置、内燃機関の制御装置、および内燃機関の失火検出方法に関する。
【背景技術】
【０００２】
たとえば下記特許文献１には、時系列的に隣り合う圧縮上死点間の角度間隔だけクランク軸が回転するのに要する時間を各気筒の燃焼行程に伴うクランク軸の回転速度に関する変数として利用し、それら時間同士の差と判定値との大小比較に基づき、失火の有無を判定する装置が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１７４３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、時系列的に隣り合う圧縮上死点間の角度間隔においてもクランク軸は複雑な回転挙動を示している。しかし上記装置では、圧縮上死点間の角度間隔よりも小さい角度間隔のそれぞれにおけるクランク軸の回転挙動が平均化されたものに基づき異常の有無を判定するにすぎず、失火の有無に応じた回転挙動の相違に対して必ずしも感度の高い変数に基づき失火の有無を判定できるものではない。また、上記差と比較する判定値は、内燃機関の動作点等に応じて適切な値が異なることから、適合工数が大きくなる。そこで発明者は、圧縮上死点間の角度間隔よりも小さい角度間隔におけるクランク軸の回転挙動を機械学習による学習済みモデルに入力することを検討した。しかしその場合、圧縮上死点間の角度間隔よりも小さい角度間隔におけるクランク軸の回転挙動を示す変数を入力変数とすることにより、入力変数の次元が大きくなり、演算負荷が大きくなる。
【課題を解決するための手段】
【０００５】
以下、上記課題を解決するための手段およびその作用効果について記載する。
１．記憶装置と、実行装置と、を備え、前記記憶装置は、回転波形変数を入力とし、内燃機関の失火が生じた確率に関する変数である失火変数を出力する写像を規定するデータである写像データを記憶しており、前記実行装置は、前記内燃機関のクランク軸の回転挙動を検知するセンサの検出値に基づく前記回転波形変数を取得する取得処理、前記取得処理によって取得された変数を入力とする前記写像の出力に基づき前記失火の有無を判定する判定処理、および前記判定処理によって失火が生じたと判定する場合、所定のハードウェアを操作することによって失火が生じたことに対処するための対処処理を実行し、前記回転波形変数は、前記クランク軸の連続した回転角度間隔のうちから選択された互いに不連続な一部の角度間隔における瞬時速度変数に基づく変数であって且つ、失火の検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違に関する情報を含む変数であり、前記瞬時速度変数は、圧縮上死点の出現間隔よりも小さい角度間隔における前記クランク軸の回転速度である瞬時速度に関する変数であり、前記写像データは、機械学習によって学習されたデータを含む内燃機関の失火検出装置である。
【０００６】
上記構成では、機械学習によって失火変数の値を算出し、これに基づき失火の有無を判定することから、適合工数を軽減できる。そして機械学習によって学習された写像データ
によって規定される写像への入力となる回転波形変数が、連続した角度間隔のうちから選択された互いに不連続な一部の角度間隔における瞬時速度変数に基づく変数であることから、連続した角度間隔の全ての瞬時速度変数自体を入力とする場合と比較すると、入力変数の次元を低減できる。しかも、回転波形変数は、失火の検出対象の気筒およびそれ以外の気筒のそれぞれの圧縮上死点に対応する瞬時速度変数の値同士の相違を示すことから、失火の有無に応じて相違が顕著となりやすい変数を構成できる。そのため、上記構成では、失火の有無の判定に必要な情報を利用しつつも失火の有無の判定のための演算負荷を軽減できる。
【０００７】
２．前記写像の入力には、前記内燃機関の動作点を規定する変数である動作点変数が含まれ、前記取得処理は、前記動作点変数を取得する処理を含み、前記判定処理は、前記取得処理によって取得された前記動作点変数を前記写像への入力にさらに含めた前記写像の出力に基づき前記失火の有無を判定する処理であり、前記写像は、前記回転波形変数と前記動作点変数と前記機械学習によって学習されたパラメータとの結合演算によって前記失火変数の値を出力する上記１記載の内燃機関の失火検出装置である。
【０００８】
失火の検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する瞬時速度変数同士の差は、内燃機関の動作点に応じて変動する。そのため、上記差についての失火が生じているときと生じていないときとの乖離度合いについても内燃機関の動作点に応じて変動する。したがって、上記差に対して失火の有無を判定するための判定値を設定し、上記差と判定値との大小比較に基づき失火の有無を判定する場合、判定値を動作点毎に適合する必要がある。これに対し、上記構成では、回転波形変数と動作点変数と機械学習によって学習されたパラメータとの結合演算によって失火変数の値を出力する写像を学習対象とすることから、互いに異なる動作点に対して共通のパラメータを学習することが可能となる。
【０００９】
３．前記回転波形変数は、気筒間変数と変動パターン変数とを含み、前記気筒間変数は、前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違を定量化した変数であり、前記変動パターン変数は、前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒である第１組の気筒の前記瞬時速度変数の値同士の相違と前記第１組とは異なる２つの気筒である第２組の気筒の前記瞬時速度変数の値同士の相違との関係を定量化した変数であり、前記写像は、前記気筒間変数と前記変動パターン変数と前記機械学習によって学習されたパラメータとの結合演算によって前記失火変数の値を出力する上記１記載の内燃機関の失火検出装置である。
【００１０】
クランク軸には、路面からの振動等が重畳することから、気筒間変数のみから失火の有無を判定する場合には、誤判定が生じる懸念がある。そこで上記構成では、気筒間変数に加えて、変動パターン変数を用いて失火変数の値を算出することにより、気筒間変数のみから算出する場合と比較して、失火変数の値を、失火が生じた確率の大小をより高精度に示す値とすることができる。しかも、気筒間変数と変動パターン変数との結合演算によって失火変数の値を算出することから、気筒間変数の値と判定値との比較と、変動パターン変数の値と判定値との比較とに基づき、失火の有無を判定する場合と比較して、気筒間変数の値および変動パターン変数の値と失火の有無との関係をより詳細に考慮して失火の有無を判定することができる。
【００１１】
４．前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒は、圧縮上死点の出現順序が互いに隣接する２つの気筒である上記１〜３のいずれか１つに記載の内燃機関の失火検出装置である。
【００１２】
互いの圧縮上死点の出現タイミングが隣接しない２つの気筒のそれぞれの瞬時速度同士の差には、様々な影響が及びやすい。そこで、上記構成では、圧縮上死点の出現順序が互いに隣接する２つの気筒のそれぞれの瞬時速度同士の差に関する情報に基づき、失火変数の値を算出することにより、瞬時速度同士の差に失火の有無以外の情報が含まれることを極力低減できる。
【００１３】
５．前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒は、圧縮上死点間の間隔が前記クランク軸の１回転の間隔となる２つの気筒である上記１〜３のいずれか１つに記載の内燃機関の失火検出装置である。
【００１４】
瞬時速度変数の値には、クランク軸の角度に応じた検出誤差が生じやすい。そこで上記構成では、圧縮上死点間の間隔がクランク軸の１回転の間隔となる２つの気筒のそれぞれの瞬時速度同士の差を用いることにより、同差に角度に応じた検出誤差が重畳することを抑制できる。
【００１５】
６．前記写像データは、１つの気筒で連続的に失火が生じる連続失火を検出するための写像を規定する連続失火用データと、いくつかの気筒でランダムに失火が生じるランダム失火を検出するための写像を規定するランダム失火用データとを含み、前記判定処理は、前記取得処理によって取得された変数を入力とする前記連続失火用データによって規定される前記写像の出力に基づき前記連続失火の有無を判定する連続失火判定処理と、前記取得処理によって取得された変数を入力とする前記ランダム失火用データによって規定される前記写像の出力に基づき前記ランダム失火の有無を判定するランダム失火判定処理と、を含む上記１〜５のいずれか１つに記載の内燃機関の失火検出装置である。
【００１６】
ランダム失火と連続失火とでは、クランク軸の回転挙動が異なる。そのため、単一の写像によってランダム失火と連続失火とを高精度に判定する場合には、写像に対する要求が大きくなり、写像の構造が複雑化しやすい。これに対し上記構成では、ランダム失火用データと連続失火用データとを備えることにより、各写像の構造を簡素化しつつも、ランダム失火と連続失火とを高精度に判定できる。
【００１７】
７．前記実行装置は、前記クランク軸の前記瞬時速度変数の値と該クランク軸に機械的に連結される入力軸の速度との差に基づき、前記クランク軸と前記入力軸とのねじれに起因した前記瞬時速度変数の値の位相ずれを低減する低減処理を実行し、前記取得処理によって取得される前記回転波形変数は、前記低減処理の出力に基づき算出される上記１〜６のいずれか１つに記載の内燃機関の失火検出装置である。
【００１８】
クランク軸と入力軸とにねじれが生じるときに失火が生じる場合と、ねじれが生じないときに失火が生じる場合とでは、クランク軸の瞬時速度が極小値となる位相が異なる。そのため、ねじれが生じても失火の有無を高精度に判定するために、連続する角度間隔のそれぞれの瞬時速度変数の値の全てに基づき失火の有無を判定することが考えられるものの、その場合には、写像の入力変数の次元が大きくなり、演算負荷が大きくなる。そこで上記構成では、低減処理を用いることにより、瞬時速度変数の値の一部のみを用いて、ねじれの有無にかかわらず失火の有無を高精度に判定できる。
【００１９】
８．上記１〜７のいずれか１項に記載の前記実行装置および前記記憶装置を備え、前記判定処理は、前記取得処理によって取得された変数を入力とする前記写像の出力値を算出する出力値算出処理を含み、前記実行装置は、第１実行装置および第２実行装置を含み、前記第１実行装置は、車両に搭載されて且つ、前記取得処理と、前記取得処理によって取得されたデータを車両の外部に送信する車両側送信処理と、前記出力値算出処理の算出結果に基づく信号を受信する車両側受信処理と、前記対処処理と、を実行し、前記第２実行
装置は、前記車両の外部に配置されて且つ、前記車両側送信処理によって送信されたデータを受信する外部側受信処理と、前記出力値算出処理と、前記出力値算出処理の算出結果に基づく信号を前記車両に送信する外部側送信処理と、を実行する内燃機関の失火検出システムである。
【００２０】
上記構成では、出力値算出処理を車両の外部で行うことで、車載装置の演算負荷を軽減できる。
９．上記８記載の前記第２実行装置および前記記憶装置を備えるデータ解析装置である。
【００２１】
１０．上記８記載の前記第１実行装置を備える内燃機関の制御装置である。
１１．上記１〜７のいずれか１つに記載の前記取得処理、前記判定処理、および前記対処処理をコンピュータによって実行させる内燃機関の失火検出方法である。
【００２２】
上記方法によれば、上記１〜７記載の構成と同様の効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】第１の実施形態にかかる制御装置および車両の駆動系の構成を示す図。
【図２】同実施形態にかかる制御装置が実行する処理の一部を示すブロック図。
【図３】同実施形態にかかる失火用プログラムに規定されている処理の手順を示す流れ図。
【図４】同実施形態にかかる写像の入力変数を示すタイムチャート。
【図５】同実施形態にかかる失火用プログラムに規定されている処理の手順を示す流れ図。
【図６】第２の実施形態にかかる失火検出システムの構成を示す図。
【図７】（ａ）および（ｂ）は、失火検出システムが実行する処理の手順を示す流れ図。
【発明を実施するための形態】
【００２４】
＜第１の実施形態＞
以下、内燃機関の失火検出装置にかかる第１の実施形態について図面を参照しつつ説明する。
【００２５】
図１に示す車両ＶＣに搭載された内燃機関１０において、吸気通路１２には、スロットルバルブ１４が設けられている。吸気通路１２から吸入された空気は、吸気バルブ１６が開弁することによって各気筒＃１〜＃４の燃焼室１８に流入する。燃焼室１８には、燃料噴射弁２０によって燃料が噴射される。燃焼室１８において、空気と燃料との混合気は、点火装置２２による火花放電によって燃焼に供され、燃焼によって生じたエネルギは、クランク軸２４の回転エネルギとして取り出される。燃焼に供された混合気は、排気バルブ２６の開弁に伴って、排気として、排気通路２８に排出される。
【００２６】
クランク軸２４には、クランク軸２４の複数個（ここでは、３４個）の回転角度のそれぞれを示す歯部３２が設けられたクランクロータ３０が結合されている。クランクロータ３０には、基本的には、１０°ＣＡ間隔で歯部３２が設けられているものの、隣接する歯部３２間の間隔が３０°ＣＡとなる箇所である欠け歯部３４が１箇所設けられている。これは、クランク軸２４の基準となる回転角度を示すためのものである。
【００２７】
クランク軸２４は、動力分割機構を構成する遊星歯車機構４０のキャリアＣに機械的に連結されている。遊星歯車機構４０のサンギアＳには、第１のモータジェネレータ４２の回転軸が機械的に連結されており、遊星歯車機構４０のリングギアＲには、第２のモータ
ジェネレータ４４の回転軸および駆動輪５０が機械的に連結されている。第１のモータジェネレータ４２の各端子には、インバータ４６によって交流電圧が印加され、第２のモータジェネレータ４４の各端子には、インバータ４８によって交流電圧が印加される。
【００２８】
制御装置６０は、内燃機関１０を制御対象とし、その制御量であるトルクや排気成分比率等を制御するために、スロットルバルブ１４や、燃料噴射弁２０、点火装置２２等の内燃機関１０の操作部を操作する。また、制御装置６０は、第１のモータジェネレータ４２を制御対象とし、その制御量であるトルクや回転速度を制御するために、インバータ４６を操作する。また、制御装置６０は、第２のモータジェネレータ４４を制御対象とし、その制御量であるトルクや回転速度を制御するために、インバータ４８を操作する。なお、図１には、スロットルバルブ１４、燃料噴射弁２０、点火装置２２、インバータ４６，４８のそれぞれの操作信号ＭＳ１〜ＭＳ５を記載している。
【００２９】
制御装置６０は、制御量の制御に際し、エアフローメータ７０によって検出される吸入空気量Ｇａや、クランク角センサ７２の出力信号Ｓｃｒ、第１速度センサ７４によって検出される第１のモータジェネレータ４２の回転速度ωｍｇ１、第２速度センサ７６によって検出される第２のモータジェネレータ４４の回転速度ωｍｇ２を参照する。
【００３０】
制御装置６０は、ＣＰＵ６２、ＲＯＭ６４、電気的に書き換え可能な不揮発性メモリである記憶装置６６、および周辺回路６７を備え、それらがローカルネットワーク６８によって通信可能とされたものである。なお、周辺回路６７は、内部の動作を規定するクロック信号を生成する回路や、電源回路、リセット回路等を含む。
【００３１】
制御装置６０は、ＲＯＭ６４に記憶されたプログラムをＣＰＵ６２が実行することによって、上記制御量の制御を実行する。
図２に、ＲＯＭ６４に記憶されたプログラムをＣＰＵ６２が実行することによって実現される処理の一部を示す。
【００３２】
インプット速度算出処理Ｍ１０は、回転速度ωｍｇ１，ωｍｇ２に基づき、遊星歯車機構４０のキャリアＣの速度であるインプット速度ωｉｎｐを算出する処理である。
生速度算出処理Ｍ１２は、出力信号Ｓｃｒに基づき生速度ωｅｇ０を算出する処理である。ここで、生速度ωｅｇ０は、クランク軸２４が、圧縮上死点の出現間隔よりも小さい角度間隔（たとえば３０°ＣＡ）だけ回転する際の速度である。
【００３３】
速度差算出処理Ｍ１４は、インプット速度ωｉｎｐから生速度ωｅｇ０を減算することによって、速度差ωｄｍｐを算出する処理である。
ねじれ角算出処理Ｍ１６は、速度差ωｄｍｐを入力とし、積分要素に基づき、ねじれ角θｄｍｐを算出する処理である。
【００３４】
弾性力算出処理Ｍ１８は、ねじれ角θｄｍｐに弾性係数Ｋを乗算することによって、弾性力Ｆｄｍｐを算出する処理である。
減衰成分算出処理Ｍ２０は、速度差ωｄｍｐに減衰係数Ｃを乗算することによって、減衰成分Ｆｄｃｒを算出する処理である。
【００３５】
ねじれ力算出処理Ｍ２２は、弾性力Ｆｄｍｐと減衰成分Ｆｄｃｒとを加算することによって、ねじれ力Ｆを算出する処理である。
加速度算出処理Ｍ２４は、ねじれ力Ｆを慣性係数Ｉで除算することによって、加速度ΔΔωを算出する処理である。
【００３６】
ダンパねじれ振動成分算出処理Ｍ２６は、加速度ΔΔωを入力とする積分要素の出力値
として、ダンパねじれ振動成分Δωｅｇを算出する処理である。ねじれ排除瞬時速度算出処理Ｍ２８は、生速度ωｅｇ０からダンパねじれ振動成分Δωｅｇを減算することによって、ねじれ排除瞬時速度ωｅｇを算出する処理である。ねじれ排除瞬時速度ωｅｇは、遊星歯車機構４０のキャリアＣ側とクランク軸２４側とのねじれによるクランク軸２４の回転挙動の位相ずれが除去された速度である。
【００３７】
微小回転時間算出処理Ｍ３０は、ねじれ排除瞬時速度ωｅｇに基づき、クランク軸２４が３０°ＣＡ回転するのに要する時間（微小回転時間Ｔ３０）を算出する処理である。なお、本実施形態において、時系列的に隣り合う微小回転時間Ｔ３０同士は、互いに隣接する３０°ＣＡの角度間隔の回転に要する時間を示しており、それら角度間隔は重複した部分を持たない。
【００３８】
失火用処理Ｍ３２は、微小回転時間Ｔ３０に基づき、失火の有無の判定等を実行する処理である。
図３に、失火用処理Ｍ３２のうちの失火がランダムに生じる異常に関する処理の手順を示す。図３に示す処理は、ＲＯＭ６４に記憶された失火用プログラム６４ａをＣＰＵ６２が、たとえば所定周期で繰り返し実行することにより実現される。なお、以下では、先頭に「Ｓ」が付与された数字によって、各処理のステップ番号を表現する。
【００３９】
図３に示す一連の処理において、ＣＰＵ６２は、微小回転時間Ｔ３０を取得する（Ｓ１０）。次にＣＰＵ６２は、Ｓ１０の処理において取得した最新の微小回転時間Ｔ３０を、微小回転時間Ｔ３０（０）とし、より過去の値ほど、微小回転時間Ｔ３０（ｍ）の変数「ｍ」を大きい値とする（Ｓ１２）。すなわち、「ｍ＝１，２，３，…」として、Ｓ１２の処理がなされる直前における微小回転時間Ｔ３０（ｍ−１）を微小回転時間Ｔ３０（ｍ）とする。これにより、たとえば、図３の処理が前回実行されたときにＳ１０の処理により取得された微小回転時間Ｔ３０は、微小回転時間Ｔ３０（１）となる。
【００４０】
次に、ＣＰＵ６２は、Ｓ１０の処理において取得された微小回転時間Ｔ３０が、気筒＃１〜＃４のいずれかの圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔の回転に要する時間であるか否かを判定する（Ｓ１４）。そしてＣＰＵ６２は、圧縮上死点までの角度間隔の回転に要する時間であると判定する場合（Ｓ１４：ＹＥＳ）、３６０°ＣＡだけ前に圧縮上死点となった気筒の失火の有無を判定すべく、まず、失火の有無の判定処理の入力とする回転波形変数の値を算出する。
【００４１】
すなわち、ＣＰＵ６２は、まず、圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔に関する微小回転時間Ｔ３０の互いに１８０°だけ離間した値同士の差を気筒間変数ΔＴａとして算出する（Ｓ１６）。この処理は、「ｍ＝１，２，３，…」として、気筒間変数ΔＴａ（ｍ−１）を、「Ｔ３０（６ｍ−６）−Ｔ３０（６ｍ）」とする処理である。
【００４２】
図４に、気筒間変数ΔＴａを例示する。なお、本実施形態では、気筒＃１、気筒＃３、気筒＃４、気筒＃２の順に圧縮上死点が出現し、その順で燃焼行程となるものを例示している。図４には、Ｓ１０の処理において気筒＃４の圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔の微小回転時間Ｔ３０（０）を取得することにより、失火の有無の検出対象が気筒＃１である例を示している。この場合、気筒間変数ΔＴａ（０）は、気筒＃４の圧縮上死点と、１つ前に圧縮上死点となった気筒＃３の圧縮上死点とのそれぞれに対応する微小回転時間Ｔ３０同士の差となる。図４には、気筒間変数ΔＴａ（２）が、失火の検出対象となる気筒＃１の圧縮上死点に対応する微小回転時間Ｔ３０（１２）と、気筒＃２の圧縮上死点に対応する微小回転時間Ｔ３０（１８）との差であることを記載している。
【００４３】
図３に戻り、ＣＰＵ６２は、気筒間変数ΔＴａ（０），ΔＴａ（１），ΔＴａ（２），…のうちの互いに７２０°ＣＡだけ離間した値同士の差である気筒間変数ΔＴｂを算出する（Ｓ１８）。この処理は、「ｍ＝１，２，３，…」として、気筒間変数ΔＴｂ（ｍ−１）を、「ΔＴａ（ｍ−１）−ΔＴａ（ｍ＋３）」とする処理である。
【００４４】
図４に、気筒間変数ΔＴｂを例示する。図４には、気筒間変数ΔＴｂ（２）が、「ΔＴａ（２）−Ｔａ（６）」であることが記載されている。
図３に戻り、ＣＰＵ６２は、失火の検出対象となる気筒に対応する気筒間変数ΔＴｂと、それ以外の気筒に対応する気筒間変数ΔＴｂとの相対的な大きさの関係を示す変動パターン変数ＦＬを算出する（Ｓ２０）。本実施形態では、変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］を算出する。
【００４５】
ここで、変動パターン変数ＦＬ［０２］は、「ΔＴｂ（０）／ΔＴｂ（２）」によって定義される。すなわち、変動パターン変数ＦＬ［０２］は、図４の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｂ（２）で、その次の次に圧縮上死点となる気筒＃４に対応する気筒間変数ΔＴｂ（０）を除算した値である。また、変動パターン変数ＦＬ［１２］は、「ΔＴｂ（１）／ΔＴｂ（２）」によって定義される。すなわち、変動パターン変数ＦＬ［１２］は、図４の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｂ（２）で、その次に圧縮上死点となる気筒＃３に対応する気筒間変数ΔＴｂ（１）を除算した値である。また、変動パターン変数ＦＬ［３２］は、「ΔＴｂ（３）／ΔＴｂ（２）」によって定義される。すなわち、変動パターン変数ＦＬ［３２］は、図４の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｂ（２）で、その１つ前に圧縮上死点となっていた気筒＃２に対応する気筒間変数ΔＴｂ（３）を除算した値である。
【００４６】
次に、ＣＰＵ６２は、回転速度ＮＥ、および充填効率ηを取得する（Ｓ２２）。
そして、ＣＰＵ６２は、検出対象となる気筒において失火が生じた確率に関する変数である失火変数ＰＲを出力する写像の入力変数ｘ（１）〜ｘ（６）に、Ｓ１８，Ｓ２０の処理によって取得した回転波形変数の値と、Ｓ２２の処理によって取得した変数の値とを代入する（Ｓ２４）。すなわち、ＣＰＵ６２は、入力変数ｘ（１）に気筒間変数ΔＴｂ（２）を代入し、入力変数ｘ（２）に変動パターン変数ＦＬ［０２］を代入し、入力変数ｘ（３）に変動パターン変数ＦＬ［１２］を代入し、入力変数ｘ（４）に変動パターン変数ＦＬ［３２］を代入する。また、ＣＰＵ６２は、入力変数ｘ（５）に、回転速度ＮＥを代入し、入力変数ｘ（６）に充填効率ηを代入する。
【００４７】
次にＣＰＵ６２は、図１に示す記憶装置６６に記憶されたランダム失火用データ６６ａによって規定される写像に入力変数ｘ（１）〜ｘ（６）を入力することによって、写像の出力値である失火変数ＰＲの値を算出する（Ｓ２６）。
【００４８】
本実施形態において、この写像は、中間層が１層のニューラルネットワークによって構成されている。上記ニューラルネットワークは、入力側係数ｗＲ（１）ｊｋ（ｊ＝０〜ｎ，ｋ＝０〜６）と、入力側係数ｗＲ（１）ｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）を含む。本実施形態では、活性化関数ｈ（ｘ）として、ＲｅＬＵを例示する。なお、ＲｅＬＵは、入力と「０」とのうちの小さくない方を出力する関数である。ちなみに、ｗＲ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【００４９】
また、上記ニューラルネットワークは、出力側係数ｗＲ（２）ｉｊ（ｉ＝１〜２，ｊ＝０〜ｎ）と、出力側係数ｗＲ（２）ｉｊによって規定される線形写像である出力側線形写
像の出力である原型変数ｙＲ（１），ｙＲ（２）のそれぞれを入力として、失火変数ＰＲを出力するソフトマックス関数を含む。これにより、本実施形態において、失火変数ＰＲは、実際に失火が生じたことのもっともらしさの大小を「０」よりも大きく「１」よりも小さい所定領域内で連続的な値として定量化したものとなる。
【００５０】
次に、ＣＰＵ６２は、失火変数ＰＲの値が判定値ＰＲｔｈ以上であるか否かを判定する（Ｓ２８）。そしてＣＰＵ６２は、判定値ＰＲｔｈ以上であると判定する場合（Ｓ２８：ＹＥＳ）、後述の連続失火のための失火変数ＰＣの今回値ＰＣ（ｎ）が判定値ＰＣｔｈ以上であることと、失火変数ＰＲの前回値ＰＲ（ｎ−１）が判定値ＰＲｔｈ以上であることとの論理積が真であるか否かを判定する（Ｓ３０）。この処理は、今回、Ｓ２８の処理において肯定判定された失火が、特定の気筒で連続的に生じる失火である連続失火ではないことを確認する処理である。そしてＣＰＵ６２は、論理積が偽であると判定する場合（Ｓ３０：ＮＯ）、ランダム失火カウンタＣＲをインクリメントする（Ｓ３２）。そして、ＣＰＵ６２は、Ｓ２８の処理を最初に実行した時点または後述のＳ３８の処理がなされた時点から所定期間が経過したか否かを判定する（Ｓ３４）。ここで所定期間は、１燃焼サイクルの期間よりも長く、１燃焼サイクルの１０倍以上の長さを有することがより望ましい。
【００５１】
ＣＰＵ６２は、所定期間が経過したと判定する場合（Ｓ３４：ＹＥＳ）、ランダム失火カウンタＣＲが閾値Ｃｔｈ以上であるか否かを判定する（Ｓ３６）。この処理は、許容範囲を超える頻度で失火が生じたか否かを判定する処理である。ＣＰＵ６２は、閾値Ｃｔｈ未満であると判定する場合（Ｓ３６：ＮＯ）、ランダム失火カウンタＣＲを初期化する（Ｓ３８）。これに対し、ＣＰＵ６２は、閾値Ｃｔｈ以上であると判定する場合（Ｓ３６：ＹＥＳ）、異常に対処することをユーザに促すべく、図１に示す警告灯７８を操作する報知処理を実行する（Ｓ４０）。
【００５２】
なお、ＣＰＵ６２は、Ｓ３８，Ｓ４０の処理が完了する場合や、Ｓ３０の処理において肯定判定する場合、Ｓ１４，Ｓ２８，Ｓ３４の処理において否定判定する場合には、図３に示す一連の処理を一旦終了する。
【００５３】
ちなみに、上記ランダム失火用データ６６ａは、たとえば次のようにして生成されたものである。すなわち、テストベンチにてクランク軸２４にダイナモメータを接続した状態で内燃機関１０を稼働させ、気筒＃１〜＃４のそれぞれにおいて要求される燃料を噴射すべきタイミングのうちランダムに選択したタイミングでは燃料噴射を停止させる。そして燃料の噴射を停止させた気筒においては失火変数ＰＲの値を「１」としたデータを教師データとし、燃料の噴射を停止させていない気筒においては、失火変数ＰＲの値を「０」としたデータを教師データに含める。そして、都度の回転波形変数やＳ２２の処理によって取得する変数の値を用いて、Ｓ２４，Ｓ２６の処理と同様の処理によって、失火変数ＰＲの値を算出する。こうして算出された失火変数ＰＲの値と教師データとの差を縮めるように、上記入力側係数ｗＲ（１）ｊｋや出力側係数ｗＲ（２）ｉｊの値を学習する。具体的には、たとえば、公差エントロピーを最小化するように、入力側係数ｗＲ（１）ｊｋや出力側係数ｗＲ（２）ｉｊの値を学習すればよい。
【００５４】
図５に、失火用処理Ｍ３２のうちの特定の気筒で連続的に生じる失火に関する処理の手順を示す。図５に示す処理は、ＲＯＭ６４に記憶された失火用プログラム６４ａをＣＰＵ６２が、たとえば所定周期で繰り返し実行することにより実現される。なお、図５において、図３に示した処理に対応する処理には、便宜上、同一のステップ番号を付している。
【００５５】
図５に示す一連の処理において、ＣＰＵ６２は、Ｓ１６の処理が完了する場合、気筒間変数ΔＴｂを算出するとともに、圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔
に関する微小回転時間Ｔ３０の互いに３６０°だけ離間した値同士の差を気筒間変数ΔＴｃとして算出する（Ｓ１８ａ）。この処理は、「ｍ＝１，２，３，…」として、気筒間変数ΔＴｃ（ｍ−１）を、「ΔＴａ（ｍ−１）＋ΔＴａ（ｍ）」とする処理である。
【００５６】
図４に、気筒間変数ΔＴｃ（２）が「ΔＴａ（２）＋ΔＴａ（３）」であることを記載した。ここで、気筒間変数ΔＴａ（２）は、「Ｔ３０（１２）−Ｔ３０（１８）」であり、気筒間変数ΔＴａ（３）は、「Ｔ３０（１８）−Ｔ３０（２４）」であることから、気筒間変数ΔＴｃ（２）は、「Ｔ３０（１２）−Ｔ３０（２４）」となる。
【００５７】
次に、ＣＰＵ６２は、失火の検出対象となる気筒に対応する気筒間変数ΔＴｃと、それ以外の気筒に対応する気筒間変数ΔＴｃとの相対的な大きさの関係を示す変動パターン変数ＦＣを算出する（Ｓ２０ａ）。本実施形態では、変動パターン変数ＦＣ［０２］，ＦＣ［１２］，ＦＣ［３２］を算出する。
【００５８】
ここで、変動パターン変数ＦＣ［０２］は、「ΔＴｃ（０）／ΔＴｃ（２）」によって定義される。すなわち、変動パターン変数ＦＣ［０２］は、図４の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｃ（２）で、その次の次に圧縮上死点となる気筒＃４に対応する気筒間変数ΔＴｃ（０）を除算した変数である。また、変動パターン変数ＦＣ［１２］は、「ΔＴｃ（１）／ΔＴｃ（２）」によって定義される。すなわち、変動パターン変数ＦＣ［１２］は、図４の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｃ（２）で、その次に圧縮上死点となる気筒＃３に対応する気筒間変数ΔＴｃ（１）を除算した変数である。また、変動パターン変数ＦＣ［３２］は、「ΔＴｃ（３）／ΔＴｃ（２）」によって定義される。すなわち、変動パターン変数ＦＣ［３２］は、図４の例を用いると、失火の検出対象となる気筒＃１に対応する気筒間変数ΔＴｃ（２）で、その１つ前に圧縮上死点となっていた気筒＃２に対応する気筒間変数ΔＴｃ（３）を除算した変数である。
【００５９】
ＣＰＵ６２は、Ｓ２２の処理を実行した後、検出対象となる気筒において連続的に失火が生じた確率に関する変数である失火変数ＰＣを出力する写像の入力変数ｘ（１）〜ｘ（７）に、Ｓ１８ａ，Ｓ２０ａの処理によって取得した回転波形変数の値と、Ｓ２２の処理によって取得した変数の値とを代入する（Ｓ２４ａ）。すなわち、ＣＰＵ６２は、入力変数ｘ（１）に気筒間変数ΔＴｂ（２）を代入し、入力変数ｘ（２）に、気筒間変数ΔＴｃ（２）を代入し、入力変数ｘ（３）に変動パターン変数ＦＣ［０２］を代入し、入力変数ｘ（４）に変動パターン変数ＦＣ［１２］を代入し、入力変数ｘ（５）に変動パターン変数ＦＣ［３２］を代入する。また、ＣＰＵ６２は、入力変数ｘ（６）に、回転速度ＮＥを代入し、入力変数ｘ（７）に充填効率ηを代入する。
【００６０】
次にＣＰＵ６２は、図１に示す記憶装置６６に記憶された連続失火用データ６６ｂによって規定される写像に入力変数ｘ（１）〜ｘ（７）を入力することによって、写像の出力値である失火変数ＰＣの値を算出する（Ｓ２６ａ）。
【００６１】
本実施形態において、この写像は、中間層が１層のニューラルネットワークによって構成されている。上記ニューラルネットワークは、入力側係数ｗＣ（１）ｊｋ（ｊ＝０〜ｎ，ｋ＝０〜７）と、入力側係数ｗＣ（１）ｊｋによって規定される線形写像である入力側線形写像の出力のそれぞれを非線形変換する入力側非線形写像としての活性化関数ｈ（ｘ）とを含む。本実施形態では、活性化関数ｈ（ｘ）として、ＲｅＬＵを例示する。ちなみに、ｗＣ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【００６２】
また、上記ニューラルネットワークは、出力側係数ｗＣ（２）ｉｊ（ｉ＝１〜２，ｊ＝
０〜ｎ）と、出力側係数ｗＣ（２）ｉｊによって規定される線形写像である出力側線形写像の出力である原型変数ｙＣ（１），ｙＣ（２）のそれぞれを入力として、失火変数ＰＣを出力するソフトマックス関数とを含む。
【００６３】
次に、ＣＰＵ６２は、失火変数ＰＣの値が判定値ＰＣｔｈ以上であるか否かを判定する（Ｓ２８ａ）。そしてＣＰＵ６２は、判定値ＰＣｔｈ以上であると判定する場合（Ｓ２８ａ：ＹＥＳ）、ランダム失火のための失火変数ＰＲの今回値ＰＲ（ｎ）が判定値Ｐｔｈ以上であることと、前回値ＰＲ（ｎ−１）が判定値Ｐｔｈ未満であることとの論理積が真であるか否かを判定する（Ｓ３０ａ）。この処理は、Ｓ２８ａの処理によって肯定判定された要因が、連続失火が生じているためであるか否かを判定するための処理である。そしてＣＰＵ６２は、論理積が偽であると判定する場合（Ｓ３０ａ：ＮＯ）、連続失火カウンタＣＣをインクリメントする（Ｓ３２ａ）。そして、ＣＰＵ６２は、Ｓ２８ａの処理を最初に実行した時点または後述のＳ３８ａの処理がなされた時点から所定期間が経過したか否かを判定する（Ｓ３４）。ここで所定期間は、１燃焼サイクルの期間よりも長く、望ましくは、１燃焼サイクルの１０倍以上の長さを有することが望ましい。
【００６４】
ＣＰＵ６２は、所定期間が経過したと判定する場合（Ｓ３４：ＹＥＳ）、連続失火カウンタＣＣが閾値Ｃｔｈ以上であるか否かを判定する（Ｓ３６ａ）。この処理は、許容範囲を超える頻度で失火が生じたか否かを判定する処理である。ＣＰＵ６２は、閾値Ｃｔｈ未満であると判定する場合（Ｓ３６ａ：ＮＯ）、連続失火カウンタＣＣを初期化する（Ｓ３８ａ）。これに対し、ＣＰＵ６２は、閾値Ｃｔｈ以上であると判定する場合（Ｓ３６：ＹＥＳ）、Ｓ４０の処理に移行する。
【００６５】
なお、ＣＰＵ６２は、Ｓ３８ａ，Ｓ４０の処理が完了する場合や、Ｓ３０ａの処理において肯定判定する場合、Ｓ１４，Ｓ２８ａ，Ｓ３４の処理において否定判定する場合には、図５に示す一連の処理を一旦終了する。
【００６６】
ちなみに、上記連続失火用データ６６ｂは、たとえば次のようにして生成されたものである。すなわち、テストベンチにてクランク軸２４にダイナモメータを接続した状態で内燃機関１０を稼働させ、気筒＃１〜＃４のそれぞれにおいて要求される燃料を噴射すべきタイミングのうち選択された特定の１つの気筒において継続的に燃料噴射を停止させる。そして燃料の噴射を停止させた気筒においては失火変数ＰＣの値を「１」としたデータを教師データとし、燃料の噴射を停止させていない気筒においては、失火変数ＰＣの値を「０」としたデータを教師データに含める。そして、都度の回転波形変数やＳ２２の処理によって取得する変数の値を用いて、Ｓ２４ａ，Ｓ２６ａの処理と同様の処理によって、失火変数ＰＣの値を算出する。こうして算出された失火変数ＰＣの値と教師データとの差を縮めるように、上記入力側係数ｗＣ（１）ｊｋや出力側係数ｗＣ（２）ｉｊの値を学習する。具体的には、たとえば、公差エントロピーを最小化するように、入力側係数ｗＣ（１）ｊｋや出力側係数ｗＣ（２）ｉｊの値を学習すればよい。
【００６７】
ここで、本実施形態の作用および効果について説明する。
ＣＰＵ６２は、回転波形変数に基づき失火変数ＰＲを出力する写像や、回転波形変数に基づき失火変数ＰＣを出力する写像を用いて失火の有無を判定する。ここで、これら写像を規定する写像データであるランダム失火用データ６６ａや連続失火用データ６６ｂは、いずれも、様々な動作点をとるようにしつつ内燃機関１０を比較的自由に稼働することによって生成される教師データを用いて学習可能である。このため、各動作点毎に、失火の有無におけるクランク軸２４の挙動の検知に基づきマップデータを適合する場合と比較すると、適合工数を軽減できる。
【００６８】
しかも、写像への入力となる回転波形変数を、圧縮上死点前３０°ＣＡから圧縮上死点
までの回転角度の回転に要する微小回転時間Ｔ３０を選択的に用いて生成した。これにより、連続的に出現する角度領域のそれぞれの微小回転時間Ｔ３０を用いる場合と比較すると、写像の入力の次元を低減できることから、ＣＰＵ６２の演算負荷を軽減できる。
【００６９】
以上説明した本実施形態によれば、さらに以下に記載する作用効果が得られる。
（１）内燃機関１０の動作点を規定する動作点変数としての回転速度ＮＥおよび充填効率ηを写像の入力とした。燃料噴射弁２０や点火装置２２等の内燃機関１０の操作部の操作量は、内燃機関１０の動作点に基づき定められる傾向がある。そのため、動作点変数は、各操作部の操作量に関する情報を含む変数である。したがって、動作点変数を写像の入力とすることにより、各操作部の操作量に関する情報に基づき失火変数ＰＲの値を算出することができ、ひいては操作量によるクランク軸２４の回転挙動の変化を反映して失火変数ＰＲの値をより高精度に算出することができる。
【００７０】
また、動作点変数を入力変数とすることにより、回転波形変数と動作点変数との、機械学習によって学習されたパラメータである入力側係数ｗＲ（１）ｊｋ，ｗＣ（１）ｊｋによる結合演算によって失火変数ＰＲ，ＰＣの値が算出される。このため、動作点変数に基づき失火の有無を判定しつつも、動作点変数毎に適合値を適合する必要が生じない。これに対し、たとえば気筒間変数ΔＴｂと判定値との大小比較をする場合には、判定値を動作点変数毎に適合する必要が生じることから、適合工数が大きくなる。
【００７１】
（２）ランダム失火用データ６６ａと連続失火用データ６６ｂとを備えた。ランダム失火と連続失火とでは、クランク軸の回転挙動が異なるため、単一の写像によってランダム失火と連続失火とを高精度に判定する場合には、写像に対する要求が大きくなり、写像の構造が複雑化しやすい。これに対し本実施形態では、ランダム失火用データ６６ａと連続失火用データ６６ｂとを備えることにより、各写像の構造を簡素化しつつも、ランダム失火と連続失火とを高精度に判定できる。
【００７２】
（３）ねじれ排除瞬時速度ωｅｇに基づき算出された微小回転時間Ｔ３０を用いて、失火変数ＰＲ，ＰＣを出力する写像への入力となる回転波形変数を生成した。クランク軸２４とキャリアＣ（入力軸）とにねじれが生じるときに失火が生じる場合と、ねじれが生じないときに失火が生じる場合とでは、生速度ωｅｇ０が極小値となる位相が異なる。そのため、ねじれの有無にかかわらず失火の有無を高精度に判定するうえでは、連続する角度間隔のそれぞれの微小回転時間Ｔ３０の全てに基づき失火の有無を判定することが考えられるものの、その場合には、写像の入力変数の次元が大きくなり、演算負荷が大きくなる。これに対し本実施形態では、ねじれ排除瞬時速度ωｅｇを用いて算出された微小回転時間Ｔ３０を用いることにより、一部の角度間隔の微小回転時間Ｔ３０のみを用いて、ねじれの有無にかかわらず失火の有無を高精度に判定できる。
【００７３】
（４）回転波形変数に、気筒間変数ΔＴｂを含めた。気筒間変数ΔＴｂは、失火の検出対象の気筒とこれに隣接する気筒との圧縮上死点付近の微小回転時間Ｔ３０同士を差を予め１次元で定量化したものである。そのため、小さい次元数の変数で失火の有無の判定に必要な情報を効率的に取り込むことができる。
【００７４】
（５）回転波形変数に、気筒間変数ΔＴｃを含めた。気筒間変数ΔＴｃは、失火の検出対象の気筒と圧縮上死点が３６０°ＣＡだけずれた気筒との圧縮上死点付近の微小回転時間Ｔ３０同士の差を予め１次元で定量化したものである。そのため、差をとる対象となる一対の微小回転時間Ｔ３０の算出が、複数の歯部３２間の時間間隔のうちの同一の歯部３２間の時間間隔に基づき行われることから、歯部３２間の回転角度に誤差がある場合であっても、その誤差の影響を抑制できる。
【００７５】
（６）ランダム失火用の写像への入力となる回転波形変数に、気筒間変数ΔＴｂのみならず、変動パターン変数ＦＬを含めた。クランク軸２４には、路面からの振動等が重畳することから、回転波形変数を気筒間変数ΔＴｂのみとする場合には、誤判定が生じる懸念がある。これに対し、本実施形態では、気筒間変数ΔＴｂに加えて、変動パターン変数ＦＬを用いて失火変数ＰＲの値を算出することにより、気筒間変数ΔＴｂのみから算出する場合と比較して、失火変数ＰＲの値を、失火が生じたもっともらしらの大小（確率）をより高精度に示す値とすることができる。
【００７６】
しかも、本実施形態では、気筒間変数ΔＴｂと変動パターン変数ＦＬとの機械学習によって学習されたパラメータである入力側係数ｗＲ（１）ｊｋによる結合演算によって失火変数ＰＲの値を算出する。そのため、気筒間変数ΔＴｂと判定値との比較と、変動パターン変数ＦＬと判定値との比較とに基づき、失火の有無を判定する場合と比較して、気筒間変数ΔＴｂおよび変動パターン変数ＦＬと失火の有無との関係をより詳細に考慮してランダムな失火の有無を判定することができる。
【００７７】
（６）連続失火用の写像への入力となる回転波形変数に、気筒間変数ΔＴｂ，ΔＴｃのみならず、変動パターン変数ＦＣを含めた。クランク軸２４には、路面からの振動等が重畳することから、回転波形変数を気筒間変数ΔＴｂ，ΔＴｃのみとする場合には、誤判定が生じる懸念がある。これに対し、本実施形態では、気筒間変数ΔＴｂ，ΔＴｃに加えて、変動パターン変数ＦＣを用いて失火変数ＰＣの値を算出することにより、気筒間変数ΔＴｂ，ΔＴｃのみから算出する場合と比較して、失火変数ＰＣの値を、失火が生じたもっともらしらの大小（確率）をより高精度に示す値とすることができる。
【００７８】
しかも、本実施形態では、気筒間変数ΔＴｂ，ΔＴｃと変動パターン変数ＦＣとの機械学習によって学習されたパラメータである入力側係数ｗＣ（１）ｊｋによる結合演算によって失火変数ＰＣの値を算出する。そのため、気筒間変数ΔＴｂと判定値との比較と、変動パターン変数ＦＣと判定値との比較とに基づき、失火の有無を判定する場合と比較して、気筒間変数ΔＴｂおよび変動パターン変数ＦＣと失火の有無との関係をより詳細に考慮して失火の有無を判定することができる。
【００７９】
＜第２の実施形態＞
以下、第２の実施形態について、第１の実施形態との相違点を中心に図面を参照しつつ説明する。
【００８０】
本実施形態では、失火変数ＰＲ，ＰＣの算出処理を車両の外部で行う。
図６に本実施形態にかかる失火検出システムを示す。なお、図６において、図１に示した部材に対応する部材については、便宜上同一の符号を付している。
【００８１】
図６に示す車両ＶＣ内の制御装置６０は、通信機６９を備えている。通信機６９は車両ＶＣの外部のネットワーク８０を介してセンター９０と通信するための機器である。
センター９０は、複数の車両ＶＣから送信されるデータを解析する。センター９０は、ＣＰＵ９２、ＲＯＭ９４、記憶装置９６、周辺回路９７および通信機９９を備えており、それらがローカルネットワーク９８によって通信可能とされるものである。
【００８２】
図７に、本実施形態にかかる失火の検出に関する処理の手順を示す。図７（ａ）に示す処理は、図６に示すＲＯＭ６４に記憶されている失火用サブプログラム６４ｂをＣＰＵ６２が実行することにより実現される。また、図７（ｂ）に示す処理は、ＲＯＭ９４に記憶されている失火用メインプログラム９４ａをＣＰＵ９２が実行することにより実現される。なお、図７において図３に示した処理に対応する処理については、便宜上同一のステップ番号を付している。以下では、失火検出処理の時系列に沿って、図７に示す処理を説明
する。
【００８３】
すなわち、車両ＶＣにおいてＣＰＵ６２は、Ｓ１０，Ｓ１２の処理を実行した後、図７（ａ）に示すＳ１４の処理において肯定判定する場合、微小回転時間Ｔ３０（０），Ｔ３０（６），Ｔ３０（１２），Ｔ３０（１８），Ｔ３０（２４），Ｔ３０（３０），Ｔ３０（３６），Ｔ３０（４２），Ｔ３０（４８）を取得する（Ｓ５０）。これら微小回転時間Ｔ３０は、互いに異なる角度間隔のそれぞれにおける微小回転時間Ｔ３０同士の相違に関する情報を含む変数である回転波形変数を構成する。特に、上記微小回転時間Ｔ３０は、圧縮上死点前３０°ＣＡから圧縮上死点までの角度間隔の回転に要する時間であり、しかも、圧縮上死点の出現タイミングの９回分の値である。そのため、それら微小回転時間Ｔ３０の組データは、互いに異なる圧縮上死点のそれぞれに対応した微小回転時間Ｔ３０同士の相違に関する情報を示す変数となっている。なお、上記の９個の微小回転時間Ｔ３０は、気筒間変数ΔＴｂ（２）、および変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］を算出するときに用いた微小回転時間Ｔ３０の全てである。これは、気筒間変数ΔＴｂ（２），ΔＴｃ（２）、および変動パターン変数ＦＣ［０２］，ＦＣ［１２］，ＦＣ［３２］を算出するときに用いた微小回転時間Ｔ３０を包含する。
【００８４】
次に、ＣＰＵ６２は、Ｓ２２の処理を実行した後、通信機６９を操作することによって、それらＳ５０，Ｓ２２の処理において取得したデータを、車両ＶＣの識別情報（車両ＩＤ）とともにセンター９０に送信する（Ｓ５２）。
【００８５】
これに対し、センター９０のＣＰＵ９２は、図７（ｂ）に示すように、送信されたデータを受信する（Ｓ６０）。そして、ＣＰＵ９２は、Ｓ６０の処理によって取得した変数の値を入力変数ｘ（１）〜ｘ（１１）に代入する（Ｓ６２）。すなわち、ＣＰＵ６２は、入力変数ｘ（１）に微小回転時間Ｔ３０（０）を代入し、入力変数ｘ（２）に微小回転時間Ｔ３０（６）を代入し、入力変数ｘ（３）に微小回転時間Ｔ３０（１２）を代入し、入力変数ｘ（４）に微小回転時間Ｔ３０（１８）を代入する。またＣＰＵ９２は、入力変数ｘ（５）に微小回転時間Ｔ３０（２４）を代入し、入力変数ｘ（６）に微小回転時間Ｔ３０（３０）を代入し、入力変数ｘ（７）に微小回転時間Ｔ３０（３６）を代入する。またＣＰＵ９２は、入力変数ｘ（８）に微小回転時間Ｔ３０（４２）を代入し、入力変数ｘ（９）に微小回転時間Ｔ３０（４８）を代入する。またＣＰＵ９２は、入力変数ｘ（１０）に回転速度ＮＥを代入し、入力変数ｘ（１１）に充填効率ηを代入する。
【００８６】
次にＣＰＵ９２は、図６に示す記憶装置９６に記憶されたランダム失火用データ９６ａによって規定される写像に入力変数ｘ（１）〜ｘ（１１）を入力することによって、写像の出力値である失火変数ＰＲの値を算出する（Ｓ６４）。
【００８７】
本実施形態において、この写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ＲｅＬＵであり、出力層の活性化関数がソフトマックス関数であるニューラルネットワークによって構成されている。詳しくは、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗＲ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。図７（ｂ）において、ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。具体的には、たとえば、第１の中間層の各ノードの値は、係数ｗＲ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜１１）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（１１）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。ちなみに、ｗＲ（１）ｊ０等は、バイアスパラメータであり、入力変数ｘ（０）は、「１」と定義されている。
【００８８】
また、ＣＰＵ６２は、図６に示す記憶装置９６に記憶された連続失火用データ９６ｂによって規定される写像に入力変数ｘ（１）〜ｘ（１１）を入力することによって、写像の
出力値である失火変数ＰＲの値を算出する（Ｓ６６）。
【００８９】
本実施形態において、この写像は、中間層が「α」個であって且つ、各中間層の活性化関数ｈ１〜ｈαが、ＲｅＬＵであり、出力層の活性化関数がソフトマックス関数であるニューラルネットワークによって構成されている。詳しくは、ｍ＝１，２，…，αとすると、第ｍの中間層の各ノードの値は、係数ｗＣ（ｍ）によって規定される線形写像の出力を活性化関数ｈｍに入力することによって生成される。図７（ｂ）において、ｎ１，ｎ２，…，ｎαは、それぞれ、第１、第２、…、第αの中間層のノード数である。具体的には、たとえば、第１の中間層の各ノードの値は、係数ｗＣ（１）ｊｉ（ｊ＝０〜ｎ１，ｉ＝０〜１１）によって規定される線形写像に上記入力変数ｘ（１）〜ｘ（１１）を入力した際の出力を活性化関数ｈ１に入力することによって生成される。ちなみに、ｗＣ（１）ｊ０等は、バイアスパラメータであり、入力変数ｗＣ（０）は、「１」と定義されている。
【００９０】
次に、ＣＰＵ９２は、通信機９９を操作することによって、Ｓ６０の処理によって受信したデータが送信された車両ＶＣに、失火変数ＰＲ，ＰＣの値を示す信号を送信し（Ｓ６８）、図７（ｂ）に示す一連の処理を一旦終了する。これに対し、図７（ａ）に示すように、ＣＰＵ６２は、失火変数ＰＲ，ＰＣの値を受信し（Ｓ５４）、失火変数ＰＲが判定値ＰＲｔｈ以上であることと失火変数ＰＣが判定値ＰＣｔｈ以上であることとの論理和が真であるか否かを判定する（Ｓ５６）。そして、ＣＰＵ６２は、論理和が真であると判定する場合（Ｓ５６：ＹＥＳ）、失火変数ＰＲが判定値ＰＲｔｈ以上であることと失火変数ＰＣが判定値ＰＣｔｈ以上であることとの論理積が真であるか否かを判定する（Ｓ５８）。そしてＣＰＵ６２は、論理積が真であると判定する場合（Ｓ５８：ＹＥＳ）、連続失火が生じているか否かを判定すべく失火変数ＰＲの前回値ＰＲ（ｎ−１）が判定値ＰＲｔｈ以上であるか否かを判定する（Ｓ６０）。そしてＣＰＵ６２は、判定値ＰＲｈｔ以上であると判定する場合（Ｓ６０：ＹＥＳ）、Ｓ３２ａの処理に移行する。
【００９１】
一方、ＣＰＵ６２は、論理積が偽であると判定する場合（Ｓ５８：ＮＯ）、失火変数ＰＣの値が判定値ＰＣｔｈ以上であるか否かを判定する（Ｓ６２）。そしてＣＰＵ６２は、判定値ＰＣｔｈ以上であると判定する場合（Ｓ６２：ＹＥＳ）、Ｓ３２ａの処理に移行する。
【００９２】
これに対し、ＣＰＵ６２は、Ｓ６０、Ｓ６２の処理において否定判定する場合、Ｓ３２の処理に移行する。ＣＰＵ６２は、Ｓ３２，Ｓ３２ａの処理が完了する場合、Ｓ５６の処理が最初に実行された時点または後述のＳ３８ｂの処理がなされた時点から所定期間が経過したか否かを判定する（Ｓ３４）。ここで所定期間は、１燃焼サイクルの期間よりも長く、望ましくは、１燃焼サイクルの１０倍以上の長さを有することが望ましい。
【００９３】
ＣＰＵ６２は、所定期間が経過したと判定する場合（Ｓ３４：ＹＥＳ）、ランダム失火カウンタＣＲが閾値Ｃｔｈ以上であることと連続失火カウンタＣＣが閾値Ｃｔｈ以上であることとの論理和が真であるか否かを判定する（Ｓ３６ｂ）。この処理は、許容範囲を超える頻度で失火が生じたか否かを判定する処理である。ＣＰＵ６２は、閾値Ｃｔｈ未満であると判定する場合（Ｓ３６ｂ：ＮＯ）、ランダム失火カウンタＣＲおよび連続失火カウンタＣＣを初期化する（Ｓ３８ｂ）。これに対し、ＣＰＵ６２は、閾値Ｃｔｈ以上であると判定する場合（Ｓ３６ｂ：ＹＥＳ）、Ｓ４０の処理に移行する。
【００９４】
なお、ＣＰＵ６２は、Ｓ３８ｂ，Ｓ４０の処理が完了する場合や、Ｓ１４，Ｓ５６，Ｓ３４の処理において否定判定する場合には、図７（ａ）に示す一連の処理を一旦終了する。
【００９５】
このように、本実施形態では、センター９０において失火変数ＰＲ，ＰＣの値を算出す
るため、ＣＰＵ６２の演算負荷を軽減できる。
＜対応関係＞
上記実施形態における事項と、上記「課題を解決するための手段」の欄に記載した事項との対応関係は、次の通りである。以下では、「課題を解決するための手段」の欄に記載した解決手段の番号毎に、対応関係を示している。［１，３］失火検出装置は、制御装置６０に対応する。実行装置は、ＣＰＵ６２およびＲＯＭ６４に対応する。記憶装置は、記憶装置６６に対応する。取得処理は、図３のＳ１８〜Ｓ２２の処理や、図５のＳ１８ａ，Ｓ２０ａ，Ｓ２２の処理に対応する。判定処理は、図３のＳ２４〜Ｓ３８の処理や、図５のＳ２４ａ〜Ｓ３８ａの処理に対応する。対処処理は、Ｓ４０の処理に対応する。回転波形変数は、Ｓ２６の処理においては、気筒間変数ΔＴｂ（２）および変動パターン変数ＦＬ［０２］，ＦＬ［１２］，ＦＬ［３２］に対応し、Ｓ２６ａの処理においては、気筒間変数ΔＴｂ（２），ΔＴｃ（２）および変動パターン変数ＦＣ［０２］，ＦＣ［１２］，ＦＣ［３２］に対応する。瞬時速度変数は、微小回転時間Ｔ３０に対応する。［２］動作点変数は、回転速度ＮＥおよび充填効率ηに対応する。［４］気筒間変数ΔＴｂが写像への入力変数とされていることに対応する。［５］気筒間変数ΔＴｃが写像への入力変数とされていることに対応する。［６］ランダム失火判定処理は、図３のＳ２４〜Ｓ３８の処理に対応し、連続失火判定処理は、図５のＳ２４ａ〜Ｓ３８ａの処理に対応する。［７］低減処理は、図２に示す、生速度ωｅｇ０からねじれ排除瞬時速度ωｅｇを算出する処理に対応する。［８］第１実行装置は、ＣＰＵ６２およびＲＯＭ６４に対応する。第２実行装置は、ＣＰＵ９２およびＲＯＭ９４に対応する。取得処理は、Ｓ５０，Ｓ２２の処理に対応し、車両側送信処理は、Ｓ５２の処理に対応し、車両側受信処理は、Ｓ５４の処理に対応する。対処処理は、Ｓ４０の処理に対応する。外部側受信処理は、Ｓ６０の処理に対応し、出力値算出処理は、Ｓ６２〜Ｓ６６の処理に対応し、外部側送信処理は、Ｓ６８の処理に対応する。［９］データ解析装置は、センター９０に対応する。［１０］内燃機関の制御装置は、図６に示す制御装置６０に対応する。［１１］コンピュータは、ＣＰＵ６２およびＲＯＭ６４や、ＣＰＵ６２，ＣＰＵ９２およびＲＯＭ６４，ＲＯＭ９４に対応する。
【００９６】
＜その他の実施形態＞
なお、本実施形態は、以下のように変更して実施することができる。本実施形態および以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【００９７】
・「低減処理について」
たとえば、下記「車両について」の欄に記載したように、推力を生成する装置が内燃機関のみの車両の場合において、たとえばクランク軸２４に変速装置を介して駆動輪５０が機械的に連結されている場合、インプット速度ωｉｎｐとして、変速装置の入力軸の回転速度を用いればよい。
【００９８】
低減処理としては、図２に例示したものに限らない。たとえば、減衰成分算出処理Ｍ２０を削除してもよい。
なお、ねじれ排除瞬時速度ωｅｇに基づき、入力変数ｘを生成するための微小回転時間Ｔ３０を算出することは必須ではない。
【００９９】
・「ランダム失火のための写像への入力について」
（ａ）気筒間変数について
気筒間変数ΔＴｂとしては、互いに圧縮上死点の出現タイミングが隣接する一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差に限らない。たとえば、互いに圧縮上死点の出現タイミングが３６０°ＣＡだけ離間した気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差であってもよい。これは、「Ｔ３０（１２）−Ｔ３０
（２４）−｛Ｔ３０（３６）−Ｔ３０（４８）｝」となる。
【０１００】
また、たとえば、一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差として、失火の検出対象の気筒の圧縮上死点に対応した１つの差のみを写像の入力とするものに限らない。たとえば上記気筒間変数ΔＴｂ（２）に加えて、「Ｔ３０（１１）−Ｔ３０（１７）−｛Ｔ３０（３５）−Ｔ３０（４１）｝」を写像への入力に含めてもよい。
【０１０１】
またたとえば、一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差の７２０°ＣＡだけ離間した値同士の差に限らず、失火の検出対象の気筒と、それ以外の気筒とのそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の差を写像への入力としてもよい。
【０１０２】
またたとえば、気筒間変数を、一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の比としてもよい。
なお、気筒間変数を定義する際の微小回転時間としては、３０°ＣＡの回転に要する時間に限らず、たとえば４５°ＣＡの回転に要する時間等であってもよい。この際、微小回転時間は、圧縮上死点の出現間隔よりも小さい角度間隔の回転に要する時間とする。
【０１０３】
さらに、上記において、微小回転時間に代えて、所定の角度間隔の回転に要する時間によって所定の角度間隔を除算した瞬時回転速度を用いてもよい。
（ｂ）変動パターン変数について
変動パターン変数の定義としては、上記実施形態において例示したものに限らない。たとえば、気筒間変数ΔＴｂを、「気筒間変数について」の欄において例示したもの等に変更することによって、変動パターン変数の定義を変更してもよい。
【０１０４】
さらに、互いに異なる圧縮上死点の出現タイミングに対応した気筒間変数ΔＴｂ同士の比として変動パターン変数を定義することも必須ではなく、比の代わりに差をとってもよい。この場合であっても、たとえば内燃機関１０の動作点変数を入力に含めるなどすることにより、変動パターン変数の大きさが、動作点に応じて変化することを反映して失火変数ＰＲの値を算出できる。
【０１０５】
なお、写像への入力に変動パターン変数を含めることは、必須ではない。
（ｃ）回転波形変数について
Ｓ６４の処理では、互いに圧縮上死点の出現タイミングが異なる９個のタイミングのそれぞれに対応した微小回転時間Ｔ３０によって回転波形変数を構成したが、これに限らない。たとえば、微小回転時間Ｔ３０（１），Ｔ３０（７），Ｔ３０（１３），…，Ｔ３０（４９）の９個によって回転波形変数を構成してもよく、またたとえば、Ｓ６４の処理で例示した９個にこれら９個を加えた１８個によって構成してもよい。ここでの微小回転時間としては、３０°ＣＡの間隔の回転に要する時間に限らない。また、微小回転時間に代えて、所定の角度間隔の回転に要する時間によって所定の角度間隔を除算した瞬時回転速度を用いてもよい。
【０１０６】
・「連続失火のための写像への入力について」
（ａ）気筒間変数について
たとえば、気筒間変数ΔＴａ（２）に代えて、「Ｔ３０（１１）−Ｔ３０（１７）」を気筒間変数（以下、ΔＴａ´（２））として写像への入力としてもよい。またたとえば、気筒間変数ΔＴａ（２），ΔＴａ´（２）の双方を写像への入力に含めてもよい。
【０１０７】
たとえば、気筒間変数ΔＴｃ（２）に代えて、「Ｔ３０（１１）−Ｔ３０（２３）」を
気筒間変数（以下、ΔＴｃ´（２））として写像への入力としてもよい。またたとえば、気筒間変数ΔＴｃ（２），ΔＴｃ´（２）の双方を写像への入力に含めてもよい。
【０１０８】
気筒間変数ΔＴａ（２）および気筒間変数ΔＴａ´（２）の少なくとも一方と、気筒間変数ΔＴｃ（２）および気筒間変数ΔＴｃ´（２）の少なくとも一方との双方を写像への入力とすることは必須ではない。
【０１０９】
またたとえば、気筒間変数を、一対の気筒のそれぞれの圧縮上死点に対応する微小回転時間Ｔ３０同士の比としてもよい。
なお、気筒間変数ΔＴａ，ΔＴｃを定義する際の微小回転時間としては、３０°ＣＡの回転に要する時間に限らず、たとえば４５°ＣＡの回転に要する時間等であってもよい。この際、微小回転時間は、圧縮上死点の出現間隔よりも小さい角度間隔の回転に要する時間とする。
【０１１０】
さらに、上記において、微小回転時間に代えて、所定の角度間隔の回転に要する時間によって所定の角度間隔を除算した瞬時回転速度を用いてもよい。
（ｂ）変動パターン変数について
変動パターン変数の定義としては、上記実施形態において例示したものに限らない。たとえば、気筒間変数ΔＴｃを、「気筒間変数について」の欄において例示したもの等に変更することによって、変動パターン変数の定義を変更してもよい。
【０１１１】
またたとえば、互いに異なる圧縮上死点の出現タイミングに対応した気筒間変数ΔＴｃ同士の比として変動パターン変数を定義してもよい。
また、互いに異なる圧縮上死点の出現タイミングに対応した気筒間変数ΔＴｃ同士の比として変動パターン変数を定義することも必須ではなく、比の代わりに差をとってもよい。この場合であっても、たとえば内燃機関１０の動作点変数を入力に含めるなどすることにより、変動パターン変数の大きさが、動作点に応じて変化することを反映して失火変数ＰＣの値を算出できる。
【０１１２】
なお、写像への入力に変動パターン変数を含めることは、必須ではない。
（ｃ）回転波形変数について
Ｓ６６の処理では、互いに圧縮上死点の出現タイミングが異なる９個のタイミングのそれぞれに対応した微小回転時間Ｔ３０によって回転波形変数を構成したが、これに限らない。たとえば、気筒間変数ΔＴｂ（２），ΔＴｃ（２）、および変動パターン変数ＦＣ［０２］，ＦＣ［１２］，ＦＣ［３２］を算出するときに用いた微小回転時間Ｔ３０の全てとしてもよい。すなわち、微小回転時間Ｔ３０（０），Ｔ３０（６），Ｔ３０（１２），Ｔ３０（１２），Ｔ３０（１８），Ｔ３０（２４），Ｔ３０（３０）の６個としてもよい。またたとえば、微小回転時間Ｔ３０（１），Ｔ３０（７），Ｔ３０（１３），…，Ｔ３０（３３）の６個によって回転波形変数を構成してもよい。またたとえば、気筒間変数ΔＴｂ（２），ΔＴｃ（２）、および変動パターン変数ＦＣ［０２］，ＦＣ［１２］，ＦＣ［３２］を算出するときに用いた微小回転時間Ｔ３０の全てにこれら６個を加えた１２個によって構成してもよい。ここでの微小回転時間としては、３０°ＣＡの間隔の回転に要する時間に限らない。また、微小回転時間に代えて、所定の角度間隔の回転に要する時間によって所定の角度間隔を除算した瞬時回転速度を用いてもよい。
【０１１３】
・「検出対象とする失火について」
上記実施形態では、ランダム失火と連続失火とを検出対象としたが、これらを識別することは必須ではない。これらを識別しない失火変数を出力する写像は、その入力としてたとえば、上記「ランダム失火のための写像への入力について」の欄や「連続失火のための写像への入力について」の欄に例示した気筒間変数を入力変数として構成すればよい。
【０１１４】
・「動作点変数について」
動作点変数としては、回転速度ＮＥおよび充填効率ηに限らない。たとえば、吸入空気量Ｇａと回転速度ＮＥとであってもよい。またたとえば下記「内燃機関について」の欄に記載したように、圧縮着火式内燃機関を用いる場合、噴射量と回転速度ＮＥとであってもよい。なお、動作点変数を写像の入力とすることは必須ではない。たとえば下記「車両について」の欄に記載したシリーズハイブリッド車に搭載される内燃機関に適用される場合において、内燃機関が特定の動作点に限って運転される場合等には、動作点変数を入力変数に含めなくても、失火変数ＰＲ，ＰＣの値を高精度に算出できる。
【０１１５】
・「判定処理について」
上記実施形態では、ランダム失火カウンタＣＲの閾値Ｃｔｈと連続失火カウンタＣＣの閾値Ｃｔｈとの関係について特に言及しなかったが、たとえば、連続失火カウンタＣＣの閾値をランダム失火カウンタＣＲの閾値よりも大きくするなど、それらの大きさが互いに異なってもよい。
【０１１６】
・「外部側送信処理について」
Ｓ６８の処理では、失火変数ＰＲ，ＰＣの値を送信したが、これに限らない。たとえば、原型変数ｙＲ（１），ｙＲ（２），ｙＣ（１），ｙＣ（２）の値を送信してもよい。またたとえば、センター９０において、Ｓ５６〜Ｓ６２，Ｓ３２，Ｓ３２ａ，Ｓ３４，Ｓ３６ｂ，Ｓ３８ｂの処理を実行する場合、異常があるか否かの判定結果を送信してもよい。
【０１１７】
・「対処処理について」
上記実施形態では、警告灯７８を操作することによって、視覚情報を通じて失火が生じた旨を報知したが、これに限らない。たとえば、スピーカを操作することによって、聴覚情報を通じて失火が生じた旨を報知してもよい。また、たとえば図１に示す制御装置６０が通信機６９を備えることとし、通信機６９を操作してユーザの携帯端末に失火が生じた旨の信号を送信する処理としてもよい。これは、ユーザの携帯端末に、報知処理を実行するアプリケーションプログラムをインストールしておくことにより実現できる。
【０１１８】
対処処理としては、報知処理に限らない。たとえば、内燃機関１０の燃焼室１８内の混合気の燃焼を制御するための操作部を失火が生じた旨の情報に応じて操作する操作処理であってもよい。具体的には、たとえば操作部を点火装置２２として失火が生じた気筒の点火時期を進角させてもよい。またたとえば、操作部を燃料噴射弁２０として、失火が生じた気筒の燃料噴射量を増量させてもよい。
【０１１９】
・「写像への入力について」
ニューラルネットワークへの入力や、下記「機械学習のアルゴリズムについて」の欄に記載した回帰式への入力等としては、各次元が単一の物理量や変動パターン変数ＦＬ，ＦＣからなるものに限らない。たとえば上記実施形態等において写像への入力とした複数種類の物理量や変動パターン変数ＦＬ，ＦＣの一部については、ニューラルネットワークや回帰式への直接の入力とする代わりに、それらの主成分分析によるいくつかの主成分を、ニューラルネットワークや回帰式への直接の入力としてもよい。もっとも、主成分をニューラルネットワークや回帰式の入力とする場合に、ニューラルネットワークや回帰式への入力の一部のみが主成分となることは必須ではなく、全部を主成分としてもよい。なお、主成分を写像への入力とする場合、ランダム失火用データ６６ａ，９６ａや連続失火用データ６６ｂ，９６ｂには、主成分を定める写像を規定するデータが含まれることとなる。
【０１２０】
・「写像データについて」
車両において実行される演算に用いられる写像を規定する写像データを、Ｓ６４，Ｓ６
６の処理において例示した写像を規定するランダム失火用データ９６ａや連続失火用データ９６ｂとしてもよい。
【０１２１】
たとえば図７の記載によれば、ニューラルネットワークの中間層の層数は、２層よりも多い表現となっているが、これに限らない。
上記実施形態では、活性化関数ｈ，ｈ１，ｈ２，…ｈαを、ＲｅＬＵとし、出力の活性化関数をソフトマックス関数としたが、これに限らない。たとえば活性化関数ｈ，ｈ１，ｈ２，…ｈαを、ハイパボリックタンジェントとしてもよい。またとえば、活性化関数ｈ，ｈ１，ｈ２，…ｈαをロジスティックジグモイド関数としてもよい。
【０１２２】
またたとえば、出力の活性化関数を、ロジスティックジグモイド関数としてもよい。この場合、たとえば出力層のノード数を１個とし、これを失火変数とすればよい。
・「機械学習のアルゴリズムについて」
機械学習のアルゴリズムとしては、ニューラルネットワークを用いるものに限らない。たとえば、回帰式を用いてもよい。これは、上記ニューラルネットワークにおいて中間層を備えないものに相当する。また、たとえば、サポートベクトルマシンを用いてもよい。この場合、出力の値の大きさ自体には意味がなく、その値が正であるか否かに応じて、失火が生じたか否かを表現する。換言すれば、失火変数の値が３値以上の値を有してそれらの値の大小が失火の確率の大小を表現するものとは相違する。
【０１２３】
・「データ解析装置について」
たとえばＳ６２，Ｓ６４の処理に代えて、Ｓ２４〜Ｓ２８の処理や、Ｓ２４ａ〜Ｓ２８ａの処理をセンター９０によって実行してもよい。
【０１２４】
図７（ｂ）の処理等を、たとえばユーザが所持する携帯端末によって実行してもよい。なお、この際、たとえばＳ６８の処理におけるデータの送信が有効な距離が車両の長さ程度である設定とするなどして、車両ＩＤの送受信処理を削除してもよい。
【０１２５】
・「実行装置について」
実行装置としては、ＣＰＵ６２（９２）とＲＯＭ６４（９４）とを備えて、ソフトウェア処理を実行するものに限らない。たとえば、上記実施形態においてソフトウェア処理されたものの少なくとも一部を、ハードウェア処理する専用のハードウェア回路（たとえばＡＳＩＣ等）を備えてもよい。すなわち、実行装置は、以下の（ａ）〜（ｃ）のいずれかの構成であればよい。（ａ）上記処理の全てを、プログラムに従って実行する処理装置と、プログラムを記憶するＲＯＭ等のプログラム格納装置とを備える。（ｂ）上記処理の一部をプログラムに従って実行する処理装置およびプログラム格納装置と、残りの処理を実行する専用のハードウェア回路とを備える。（ｃ）上記処理の全てを実行する専用のハードウェア回路を備える。ここで、処理装置およびプログラム格納装置を備えたソフトウェア実行装置や、専用のハードウェア回路は複数であってもよい。
【０１２６】
・「記憶装置について」
上記実施形態では、ランダム失火用データ６６ａ，９６ａや連続失火用データ６６ｂ，９６ｂが記憶される記憶装置と、失火用プログラム６４ａや失火用メインプログラム９４ａが記憶される記憶装置（ＲＯＭ６４，９４）とを別の記憶装置としたが、これに限らない。
【０１２７】
・「コンピュータについて」
コンピュータとしては、車両に搭載されたＣＰＵ６２およびＲＯＭ６４等の実行装置と、センター９０が備えるＣＰＵ９２およびＲＯＭ９４等の実行装置とから構成されるものに限らない。たとえば、車両に搭載された実行装置とセンター９０が備える実行装置と、
ユーザの携帯端末内のＣＰＵおよびＲＯＭ等の実行装置とによって、構成してもよい。これは、たとえば図７のＳ６６の処理を、ユーザの携帯端末に送信する処理とし、Ｓ５４〜Ｓ６２，Ｓ３２，Ｓ３２ａ，Ｓ３４，Ｓ３６ｂ，Ｓ３８ｂ，Ｓ４０の処理を携帯端末において実行することで実現できる。
【０１２８】
・「内燃機関について」
上記実施形態では、燃料噴射弁として、燃焼室１８内に燃料を噴射する筒内噴射弁を例示したがこれに限らない。たとえば吸気通路１２に燃料を噴射するポート噴射弁であってもよい。またたとえば、ポート噴射弁と筒内噴射弁との双方を備えてもよい。
【０１２９】
内燃機関としては、火花点火式内燃機関に限らず、たとえば燃料として軽油などを用いる圧縮着火式内燃機関等であってもよい。
・「車両について」
車両としては、シリーズ・パラレルハイブリッド車に限らない。たとえば、パラレルハイブリッド車やシリーズハイブリッド車であってもよい。また、ハイブリッド車に限らず、車両の推力を生成する装置が内燃機関のみの車両であってもよい。
【符号の説明】
【０１３０】
１０…内燃機関、１２…吸気通路、１４…スロットルバルブ、１６…吸気バルブ、１８…燃焼室、２０…燃料噴射弁、２２…点火装置、２４…クランク軸、２６…排気バルブ、２８…排気通路、３０…クランクロータ、３２…歯部、３４…欠け歯部、４０…遊星歯車機構、４２…第１のモータジェネレータ、４４…第２のモータジェネレータ、４６，４８…インバータ、５０…駆動輪、６０…制御装置、６２…ＣＰＵ、６４…ＲＯＭ、６４ａ…失火用プログラム、６４ｂ…失火用サブプログラム、６６…記憶装置、６６ａ…ランダム失火用データ、６６ｂ…連続失火用データ、６７…周辺回路、６８…ローカルネットワーク、６９…通信機、７０…エアフローメータ、７２…クランク角センサ、７４…第１速度センサ、７４ａ…異常対処プログラム、７６…第２速度センサ、７８…警告灯、８０…ネットワーク、９０…センター、９２…ＣＰＵ、９４…ＲＯＭ、９４ａ…失火用メインプログラム、９６…記憶装置、９６ａ…ランダム失火用データ、９６ｂ…連続失火用データ、９７…周辺回路、９８…ローカルネットワーク、９９…通信機、１２４ａ…異常対処メインプログラム。
【図１】
2020165363.tif 000003
【図２】
2020165363.tif 000004
【図３】
2020165363.tif 000005
【図４】
2020165363.tif 000006
【図５】
2020165363.tif 000007
【図６】
2020165363.tif 000008
【図７】
2020165363.tif 000009
【手続補正書】
【提出日】令和1年7月26日(2019.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
記憶装置と、実行装置と、を備え、
前記記憶装置は、回転波形変数を入力とし、内燃機関の失火が生じた確率に関する変数である失火変数を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、前記内燃機関のクランク軸の回転挙動を検知するセンサの検出値に基づく前記回転波形変数を取得する取得処理、前記取得処理によって取得された変数を入力とする前記写像の出力に基づき前記失火の有無を判定する判定処理、および前記判定処理によって失火が生じたと判定する場合、所定のハードウェアを操作することによって失火が生じたことに対処するための対処処理を実行し、
前記回転波形変数は、前記クランク軸の連続した回転角度間隔のうちから選択された互いに不連続な一部の角度間隔における瞬時速度変数に基づく変数であって且つ、失火の検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違に関する情報を含む変数であって、気筒間変数と変動パターン変数とを含み、
前記瞬時速度変数は、圧縮上死点の出現間隔よりも小さい角度間隔における前記クランク軸の回転速度である瞬時速度に関する変数であり、
前記写像データは、機械学習によって学習されたデータを含み、
前記気筒間変数は、前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違を定量化した変数であり、
前記変動パターン変数は、前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒である第１組の気筒の前記瞬時速度変数の値同士の相違と前記第１組とは異なる２つの気筒である第２組の気筒の前記瞬時速度変数の値同士の相違との関係を定量化した変数であり、
前記写像は、前記気筒間変数と前記変動パターン変数と前記機械学習によって学習されたパラメータとの結合演算によって前記失火変数の値を出力する内燃機関の失火検出装置。
【請求項２】
記憶装置と、実行装置と、を備え、
前記記憶装置は、回転波形変数を入力とし、内燃機関の失火が生じた確率に関する変数である失火変数を出力する写像を規定するデータである写像データを記憶しており、
前記実行装置は、前記内燃機関のクランク軸の回転挙動を検知するセンサの検出値に基づく前記回転波形変数を取得する取得処理、前記取得処理によって取得された変数を入力とする前記写像の出力に基づき前記失火の有無を判定する判定処理、および前記判定処理によって失火が生じたと判定する場合、所定のハードウェアを操作することによって失火が生じたことに対処するための対処処理を実行し、
前記回転波形変数は、前記クランク軸の連続した回転角度間隔のうちから選択された互いに不連続な一部の角度間隔における瞬時速度変数に基づく変数であって且つ、失火の検出対象の気筒と当該気筒とは異なる気筒との２つの気筒のそれぞれの圧縮上死点に対応する前記瞬時速度変数の値同士の相違に関する情報を含む変数であり、
前記瞬時速度変数は、圧縮上死点の出現間隔よりも小さい角度間隔における前記クランク軸の回転速度である瞬時速度に関する変数であり、
前記写像データは、機械学習によって学習されたデータを含み、
前記写像データは、１つの気筒で連続的に失火が生じる連続失火を検出するための写像を規定する連続失火用データと、いくつかの気筒でランダムに失火が生じるランダム失火を検出するための写像を規定するランダム失火用データとを含み、
前記判定処理は、前記取得処理によって取得された変数を入力とする前記連続失火用データによって規定される前記写像の出力に基づき前記連続失火の有無を判定する連続失火判定処理と、前記取得処理によって取得された変数を入力とする前記ランダム失火用データによって規定される前記写像の出力に基づき前記ランダム失火の有無を判定するランダム失火判定処理と、を含む内燃機関の失火検出装置。
【請求項３】
前記写像の入力には、前記内燃機関の動作点を規定する変数である動作点変数が含まれ、
前記取得処理は、前記動作点変数を取得する処理を含み、
前記判定処理は、前記取得処理によって取得された前記動作点変数を前記写像への入力にさらに含めた前記写像の出力に基づき前記失火の有無を判定する処理であり、
前記写像は、前記回転波形変数と前記動作点変数と前記機械学習によって学習されたパラメータとの結合演算によって前記失火変数の値を出力する請求項２記載の内燃機関の失火検出装置。
【請求項４】
前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒は、圧縮上死点の出現順序が互いに隣接する２つの気筒である請求項１〜３のいずれか１項に記載の内燃機関の失火検出装置。
【請求項５】
前記検出対象の気筒と当該気筒とは異なる気筒との２つの気筒は、圧縮上死点間の間隔が前記クランク軸の１回転の間隔となる２つの気筒である請求項１〜３のいずれか１項に記載の内燃機関の失火検出装置。
【請求項６】
前記実行装置は、
前記クランク軸の前記瞬時速度変数の値と該クランク軸に機械的に連結される入力軸の速度との差に基づき、前記クランク軸と前記入力軸とのねじれに起因した前記瞬時速度変数の値の位相ずれを低減する低減処理を実行し、
前記取得処理によって取得される前記回転波形変数は、前記低減処理の出力に基づき算出される請求項１〜５のいずれか１項に記載の内燃機関の失火検出装置。
【請求項７】
請求項１〜６のいずれか１項に記載の前記実行装置および前記記憶装置を備え、
前記判定処理は、前記取得処理によって取得された変数を入力とする前記写像の出力値を算出する出力値算出処理を含み、
前記実行装置は、第１実行装置および第２実行装置を含み、
前記第１実行装置は、少なくともその一部が車両に搭載されて且つ、前記取得処理と、前記取得処理によって取得されたデータを車両の外部に送信する車両側送信処理と、前記出力値算出処理の算出結果に基づく信号を受信する車両側受信処理と、前記対処処理と、を実行し、
前記第２実行装置は、前記車両側送信処理によって送信されたデータを受信する外部側受信処理と、前記出力値算出処理と、前記出力値算出処理の算出結果に基づく信号を前記車両に送信する外部側送信処理と、を実行する内燃機関の失火検出システム。
【請求項８】
請求項７記載の前記第２実行装置および前記記憶装置を備えるデータ解析装置。
【請求項９】
請求項７記載の前記第１実行装置を備える内燃機関の制御装置。
【請求項１０】
請求項１〜６のいずれか１項に記載の前記取得処理、前記判定処理、および前記対処処理をコンピュータによって実行させる内燃機関の失火検出方法。
【請求項１１】
前記第１実行装置は、車両に搭載される車載実行装置と、該車載実行装置とは別の受信実行装置とを備え、
前記車載実行装置は、前記取得処理と、前記取得処理によって取得されたデータを車両の外部に送信する車両側送信処理と、を実行し、
前記受信実行装置は、少なくとも前記車両側受信処理を実行する、請求項７記載の内燃機関の失火検出システムにおける、前記受信実行装置を備える受信装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、内燃機関の失火検出装置、内燃機関の失火検出システム、データ解析装置、内燃機関の制御装置、内燃機関の失火検出方法、および受信装置に関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１２７
【補正方法】変更
【補正の内容】
【０１２７】
・「コンピュータについて」
コンピュータとしては、車両に搭載されたＣＰＵ６２およびＲＯＭ６４等の実行装置と、センター９０が備えるＣＰＵ９２およびＲＯＭ９４等の実行装置とから構成されるものに限らない。たとえば、車両に搭載された実行装置とセンター９０が備える実行装置と、ユーザの携帯端末内のＣＰＵおよびＲＯＭ等の実行装置とによって、構成してもよい。これは、たとえば図７のＳ６８の処理を、ユーザの携帯端末に送信する処理とし、Ｓ５４〜Ｓ６２，Ｓ３２，Ｓ３２ａ，Ｓ３４，Ｓ３６ｂ，Ｓ３８ｂ，Ｓ４０の処理を携帯端末において実行することで実現できる。
【手続補正書】
【提出日】令和1年10月16日(2019.10.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１１
【補正方法】変更
【補正の内容】
【請求項１１】
前記第１実行装置は、車両に搭載される車載実行装置と、該車載実行装置とは別の受信実行装置とを備え、
前記車載実行装置は、前記取得処理と、前記取得処理によって取得されたデータを車両の外部に送信する車両側送信処理と、を実行し、
前記受信実行装置は、携帯端末に備えられて且つ、少なくとも前記車両側受信処理を実行する、請求項７記載の内燃機関の失火検出システムにおける前記受信実行装置。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、内燃機関の失火検出装置、内燃機関の失火検出システム、データ解析装置、内燃機関の制御装置、内燃機関の失火検出方法、および受信実行装置に関する。