(57)【要約】【課題】温度センサの故障判定期間であってもトルク異常の監視を実現可能にした、内燃機関制御システムを提供する。【解決手段】内燃機関制御システムは、制御モジュール２０（制御部）と、正常時トルク算出部および異常時トルク算出部を有する監視モジュール３０（監視部）と、検出異常判定部とを備える。制御モジュール２０は、水温センサ５（温度センサ）の検出値に応じて内燃機関の燃焼状態を制御する。監視モジュール３０は、推定トルクが機関要求トルクに対して所定以上乖離したトルク異常状態であるか否かを監視する。検出異常判定部は、検出値または検出値の挙動が異常であるか否かを判定する。正常時トルク算出部は、検出異常判定部により異常と判定されていない場合に、検出値を用いて、推定トルクを算出する。異常時トルク算出部は、検出異常判定部により異常と判定されている場合に、検出値を用いることを禁止しつつ、推定トルクを算出する。【選択図】図１
2019044625.tif 000002
【特許請求の範囲】
【請求項１】
被検出物の温度を検出する温度センサ（５）の検出値に応じて、内燃機関の燃焼状態を制御する制御部（２０）と、
前記内燃機関の実トルクの推定値である推定トルク、および前記内燃機関に要求されている機関要求トルクを算出し、前記推定トルクが前記機関要求トルクに対して所定以上乖離したトルク異常状態であるか否かを監視する監視部（３０）と、
前記検出値または前記検出値の挙動が異常であるか否かを判定する検出異常判定部（Ｓ３０、Ｓ４１、Ｓ６１）と、
を備え、
前記監視部は、
前記検出異常判定部により異常と判定されていない場合に、前記検出値を用いて、前記推定トルクを算出する正常時トルク算出部（Ｓ３８、Ｓ５１、Ｓ７１）と、
前記検出異常判定部により異常と判定されている場合に、前記検出値を用いることを禁止しつつ、前記推定トルクを算出する異常時トルク算出部（Ｓ３５、Ｓ４６、Ｓ６６）と、
を有する内燃機関制御システム。
【請求項２】
前記検出異常判定部は、前記検出値が予め設定された上下限範囲を超えている場合に異常と判定する上下限判定部（Ｓ３０）を有する請求項１に記載の内燃機関制御システム。
【請求項３】
前記検出異常判定部は、前記検出値の変化量が予め設定された正常変化範囲を超えている場合に異常と判定する変化量判定部（Ｓ４１）を有する請求項１または２に記載の内燃機関制御システム。
【請求項４】
前記変化量判定部により異常と判定される直前の前記検出値が小さいほど、前記正常変化範囲は大きい範囲に設定される請求項３に記載の内燃機関制御システム。
【請求項５】
前記検出異常判定部は、前記検出値が、前記内燃機関の運転状態に応じて設定される下限ガード値以下である場合に異常と判定する下限ガード判定部（Ｓ６１）を有する請求項１〜４のいずれか１つに記載の内燃機関制御システム。
【請求項６】
前記下限ガード判定部は、前記運転状態の履歴に応じて前記下限ガード値を設定する請求項５に記載の内燃機関制御システム。
【請求項７】
前記正常時トルク算出部は、前記推定トルクを算出するにあたり、前記検出値の今回値および前回値のうち高温側の値を用いて算出する請求項１〜６のいずれか１つに記載の内燃機関制御システム。
【請求項８】
前記正常時トルク算出部は、前記推定トルクを算出するにあたり、前記検出値が所定以下の低温であることを条件として、前記高温側の値を用いて算出する請求項７に記載の内燃機関制御システム。
【請求項９】
前記検出異常判定部により異常と判定されている状態が所定時間以上継続した場合に、前記温度センサが故障していると判定する故障判定部（Ｓ３３、Ｓ４４、Ｓ６４）を備え、
前記異常時トルク算出部は、前記故障判定部により故障と判定された場合に、前記被検出物の温度が予め設定された所定温度であるとみなして、前記推定トルクを算出する請求項１〜８のいずれか１つに記載の内燃機関制御システム。
【請求項１０】
前記制御部は、制御用記憶領域（２０ｍ）を用いた制御用演算装置であり、
前記監視部は、前記制御用記憶領域とは別の監視用記憶領域（３０ｍ）を用いた監視用演算装置である請求項１〜９のいずれか１つに記載の内燃機関制御システム。
【請求項１１】
前記監視用演算装置の演算周期は、前記制御用演算装置の演算周期より長い請求項１０に記載の内燃機関制御システム。
【請求項１２】
前記監視用演算装置は、前記監視用演算装置の外部から取得したデータが正常であることをチェックする入力保障部（３１）を有する請求項１０または１１に記載の内燃機関制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この明細書における開示は、内燃機関の燃焼状態を制御する制御部と、内燃機関のトルク異常を監視する監視部と、を備えた内燃機関制御システムに関する。
【背景技術】
【０００２】
特許文献１には、内燃機関の燃焼状態を制御する制御部と、内燃機関のトルク異常を監視する監視部と、を備えた制御システムが記載されている。この監視部は、内燃機関の実トルクが、内燃機関に要求されている機関要求トルクと乖離した場合に、トルク異常状態であると判定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１９６７１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さて、この種の制御部は、各種の温度を温度センサで検出し、その検出値に応じて制御内容を補正することが一般的である。上記温度の具体例としては、内燃機関を冷却する冷却水の温度、潤滑油の温度、吸気の温度、燃料の温度等が挙げられる。例えば、潤滑油の温度が低温である場合、潤滑油の粘性が高くなることに起因してフリクションロスが大きくなるので、そのロスを補うように、出力トルクを増大させる側に制御部は温度補正する。また、トルク異常判定に用いる実トルクおよび機関要求トルクを監視部が算出する場合についても同様であり、上記温度センサの検出値を用いて実トルクまたは機関要求トルクを温度補正すれば、トルク異常の監視精度を向上できる。
【０００５】
しかし、温度センサに断線や短絡等による故障が生じると、制御部は誤った温度補正をすることになるので、実トルクが機関要求トルクから乖離するおそれがある。そして、監視部についても誤った温度補正をすることになるので、実トルクと機関要求トルクとの乖離を正しく検知できないおそれがある。
【０００６】
そこで本発明者は、温度センサの検出値が想定範囲を超えた異常値になっている場合に、温度センサが故障であると判定して、制御部による制御内容を制限しながら内燃機関を制御（制限制御）することを検討した。
【０００７】
但し、温度センサの検出応答速度は遅い（例えば１０秒程度）ので、検出値が異常値であるからといって直ぐに温度センサが故障であると判定すると、誤った故障判定になる可能性が高い。そこで本発明者は、異常値の状態が所定時間以上（例えば１０秒以上）継続したことを条件として、温度センサが故障であると判定し、制限制御を実行することをさらに検討した。
【０００８】
しかしながら、このように所定時間を待って温度センサを故障判定すると、異常値が現れてから所定時間が経過するまでの故障判定期間では、先述したように監視部は正しく温度補正できないので、トルク異常を正しく監視できない。つまり、故障判定期間では、トルク異常を正しく監視できない状態で制御部が内燃機関を制御する状態に陥る。
【０００９】
この開示の目的は、温度センサの故障判定期間であってもトルク異常の監視を実現可能にした、内燃機関制御システムを提供することである。
【課題を解決するための手段】
【００１０】
ここに開示された内燃機関制御システムは、
被検出物の温度を検出する温度センサ（５）の検出値に応じて、内燃機関の燃焼状態を制御する制御部（２０）と、
内燃機関の実トルクの推定値である推定トルク、および内燃機関に要求されている機関要求トルクを算出し、推定トルクが機関要求トルクに対して所定以上乖離したトルク異常状態であるか否かを監視する監視部（３０）と、
検出値または検出値の挙動が異常であるか否かを判定する検出異常判定部（Ｓ３０、Ｓ４１、Ｓ６１）と、を備え、
監視部は、
検出異常判定部により異常と判定されていない場合に、検出値を用いて、推定トルクを算出する正常時トルク算出部（Ｓ３８、Ｓ５１、Ｓ７１）と、
検出異常判定部により異常と判定されている場合に、検出値を用いることを禁止しつつ、推定トルクを算出する異常時トルク算出部（Ｓ３５、Ｓ４６、Ｓ６６）と、を有する。
【００１１】
ここに開示された内燃機関制御システムによると、温度センサの検出値またはその挙動が異常と判定されていない場合（温度センサ正常時）には、トルク異常監視に用いる推定トルクは検出値を用いて算出される。そのため、正常時には、被検出物の温度を考慮したトルク異常監視を実現できるので、監視精度を向上できる。
【００１２】
一方、温度センサの検出値またはその挙動が異常と判定されている場合（温度センサ異常時）には、温度センサの検出値を用いることなく推定トルクは算出される。そのため、温度センサ正常時に比べれば監視精度は劣るものの、異常値を用いて監視する場合に比べれば監視精度を向上できる。よって、温度センサが故障であるか否かの判定に十分な時間（故障判定期間）を用いたとしても、その故障判定期間でのトルク異常の監視を実現できる。
【００１３】
この明細書における開示された複数の態様は、それぞれの目的を達成するために、互いに異なる技術的手段を採用する。請求の範囲およびこの項に記載した括弧内の符号は、後述する実施形態の部分との対応関係を例示的に示すものであって、技術的範囲を限定することを意図するものではない。この明細書に開示される目的、特徴、および効果は、後続の詳細な説明、および添付の図面を参照することによってより明確になる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係る内燃機関制御システムのブロック図。
【図２】図１に示す制御モジュールのブロック図。
【図３】図１に示す監視モジュールのブロック図。
【図４】第１実施形態においてトルク監視制御の手順を示すフローチャート。
【図５】第１実施形態において、推定トルク算出に用いられる水温を決定する処理手順を示すフローチャート。
【図６】図５のサブルーチン処理であって、電圧異常判定の処理手順を示すフローチャート。
【図７】図５のサブルーチン処理であって、変化量異常判定の処理手順を示すフローチャート。
【図８】図５のサブルーチン処理であって、スタック異常判定の処理手順を示すフローチャート。
【図９】図５のサブルーチン処理であって、水温決定の処理手順を示すフローチャート。
【図１０】経過時間に対する水温変化と、正常変化範囲と、スタック防止用の下限ガード値との関係を示す図。
【図１１】経過時間に対する水温変化の一例を示す図。
【図１２】第１実施形態に対する比較例において、経過時間に対する水温変化と、フリクションロスおよびトルクの変化の一例を示す図。
【図１３】第１実施形態において、経過時間に対する水温変化と、フリクションロスおよびトルクの変化の一例を示す図。
【発明を実施するための形態】
【００１５】
図面を参照しながら、複数の実施形態を説明する。複数の実施形態において、機能的におよび／または構造的に対応する部分および／または関連付けられる部分には同一の参照符号、または百以上の位が異なる参照符号が付される場合がある。対応する部分および／または関連付けられる部分については、他の実施形態の説明を参照することができる。
【００１６】
（第１実施形態）
図１は、車両に搭載された電子制御装置（Electronic Control Unit）であって、車両に搭載された内燃機関の作動を制御するＥＣＵ１０を示す。上記車両は、内燃機関を駆動源として走行する。なお、本実施形態に係る内燃機関は点火着火式のガソリンエンジンであるが、自着火式のディーゼルエンジンであってもよい。また、上記車両には、内燃機関の出力軸の回転速度を所望の回転速度に変換して出力する変速機が備えられている。
【００１７】
ＥＣＵ１０は、ＭＣＵ１１(Micro Controller Unit)、点火駆動ＩＣ１２、燃料噴射弁駆動ＩＣ１３、電スロ駆動ＩＣ１４、通信回路１５および統合ＩＣ１６を備える。
【００１８】
ＭＣＵ１１は、演算処理装置であるＣＰＵ１１ａと、記憶媒体であるメモリ１１ｍと、入力処理回路１１ｃと、通信回路１１ｄと、ＣＰＵチェック回路１１ｅと、を備える。図１に示す例では、ＭＣＵ１１は１つの半導体チップ上に、ＣＰＵ１１ａ、メモリ１１ｍ、入力処理回路１１ｃ、通信回路１１ｄおよびＣＰＵチェック回路１１ｅが集積されているが、複数の半導体チップに分散して集積させてもよい。また、複数の半導体チップに分散して集積させた場合、共通の基板に複数の半導体チップを実装させてもよいし、複数の基板の各々に半導体チップを実装させてもよい。さらに、共通した１つの筐体に各々の半導体チップを収容させてもよいし、別々の筐体に収容させてもよい。
【００１９】
メモリ１１ｍは、プログラムおよびデータを記憶する記憶媒体であり、ＣＰＵ１１ａによって読み取り可能なプログラムを非一時的に格納する非遷移的実体的記憶媒体を含む。記憶媒体は、半導体メモリまたは磁気ディスクなどによって提供されうる。メモリ１１ｍに記憶されたプログラムは、ＣＰＵ１１ａにより実行されることによって、ＥＣＵ１０をこの明細書に記載される装置として機能させ、この明細書に記載される方法を実行するように制御装置を機能させる。
【００２０】
制御装置が提供する手段および／または機能は、実体的な記憶媒体に記録されたソフトウェアおよびそれを実行するコンピュータ、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの組合せによって提供することができる。例えば、制御装置がハードウェアである電子回路によって提供される場合、それは多数の論理回路を含むデジタル回路、またはアナログ回路によって提供することができる。
【００２１】
ＭＣＵ１１には、エンジン回転数、アクセル開度、インマニ圧、排気圧、水温、油温、外部ＥＣＵから出力された外部信号等の各種信号が入力される。これらの信号は、ＥＣＵ１０の外部から入力処理回路１１ｃまたは通信回路１１ｄへ入力される。
【００２２】
エンジン回転数の信号は、クランク角センサの検出値を表す信号であり、この検出値に基づきＭＣＵ１１は、内燃機関のクランク軸（出力軸）の単位時間当りの回転数、つまり出力軸の回転速度を演算する。アクセル開度の信号は、アクセルペダルセンサの検出値を表す信号であり、この検出値に基づきＭＣＵ１１は、車両の運転者つまり内燃機関のユーザが操作したアクセルペダルの踏込量を演算する。
【００２３】
インマニ圧の信号は、吸気圧センサの検出値を表す信号であり、この検出値に基づきＭＣＵ１１は、燃焼室へ吸入される吸気の圧力を演算する。排気圧の信号は、排気圧センサの検出値を表す信号であり、この検出値に基づきＭＣＵ１１は、燃焼室から排出される排気の圧力を演算する。水温の信号は、水温センサ５の検出値を表す信号であり、この検出値に基づきＭＣＵ１１は、内燃機関を冷却する水の温度を演算する。油温の信号は、油温センサの検出値を表す信号であり、この検出値に基づきＭＣＵ１１は、内燃機関の潤滑油や油圧アクチュエータの作動油の温度を演算する。
【００２４】
なお、水温センサ５は、内燃機関のシリンダブロックに取り付けられており、シリンダブロックに設けられた冷却水通路を流れる冷却水の温度（水温）に応じた電圧の信号（電圧値）を出力する。このように出力された信号は、入力処理回路１１ｃによりアナログ信号からデジタル信号に変換されるとともに、水温を表す信号に変換される。水温センサ５は、被検出物としての冷却水の温度を検出する「温度センサ」に相当する。
【００２５】
外部ＥＣＵから出力された外部信号の具体例としては、内燃機関の出力軸を駆動源とする補機の作動状態を表す信号が挙げられる。上記補機の具体例としては、車室内を空調する空調装置が有する冷媒圧縮機であって、内燃機関の出力軸を駆動源とするコンプレッサが挙げられる。
【００２６】
点火駆動ＩＣ１２は、内燃機関が備える点火装置への電力供給と遮断を制御するスイッチング素子を有し、このスイッチング素子への指令信号をＭＣＵ１１は出力する。具体的には、ＭＣＵ１１は、先述したエンジン回転数等の各種信号に基づき、点火装置で放電点火させる時期の目標値である目標点火時期を演算し、演算した目標点火時期に応じて指令信号を点火駆動ＩＣ１２へ出力する。
【００２７】
燃料噴射弁駆動ＩＣ１３は、内燃機関が備える燃料噴射弁への電力供給と遮断を制御するスイッチング素子を有し、このスイッチング素子への指令信号をＭＣＵ１１は出力する。具体的には、ＭＣＵ１１は、先述したエンジン回転数等の各種信号に基づき、燃料噴射弁で燃料噴射させる期間（つまり噴射量）の目標値である目標噴射量を演算し、演算した目標噴射量に応じて指令信号を燃料噴射弁駆動ＩＣ１３へ出力する。
【００２８】
電スロ駆動ＩＣ１４は、内燃機関が備える電子スロットルバルブ（電スロ）への電力供給と遮断を制御するスイッチング素子を有し、このスイッチング素子への指令信号をＭＣＵ１１は出力する。具体的には、ＭＣＵ１１は、先述したエンジン回転数等の各種信号に基づき、電スロのバルブ開度の目標値である目標開度を演算し、演算した目標開度に応じて指令信号を電スロ駆動ＩＣ１４へ出力する。
【００２９】
このように、点火装置、燃料噴射弁および電スロの作動をＥＣＵ１０が制御することで、内燃機関の燃焼状態は制御される。そして、ＭＣＵ１１により演算される目標点火時期、目標噴射量および目標開度は、内燃機関の燃焼状態を制御する制御量の目標値である目標制御量に相当する。
【００３０】
通信回路１５は、ＭＣＵ１１が把握している各種情報を外部ＥＣＵへ出力する。例えば、後述するトルク異常状態等の異常が生じている旨を表す異常フラグの信号を、車両運転者が視認する表示装置の作動を制御する表示ＥＣＵへ出力する。表示ＥＣＵは、異常フラグの信号を取得した場合に警告表示や警告音を生じさせる。
【００３１】
統合ＩＣ１６は、図示しないメモリ、およびメモリに記憶されている各種のプログラムを実行するＣＰＵ等を備える。ＣＰＵが実行するプログラムに応じて、統合ＩＣ１６は、マイコン監視部１６ａとして機能したり、電スロカット制御部１６ｂとして機能したりする。
【００３２】
ここで、ＣＰＵチェック回路１１ｅは、メモリ１１ｍに記憶されているプログラムおよびデータが正常であるかのチェック（例えばパリティチェック）を実行する等、ＣＰＵ１１ａおよびメモリ１１ｍが正常であるか否かをチェックする。マイコン監視部１６ａは、ＣＰＵチェック回路１１ｅのチェック結果を参照しつつ、ＭＣＵ１１の作動不良を監視する。
【００３３】
統合ＩＣ１６は、マイコン監視部１６ａが異常を検出した場合には、電スロの作動を制限するといった電スロカットの制御を実行する。例えば、アクセル開度に拘らず、予め設定しておいた所定開度に目標開度を固定して、内燃機関の出力が所定出力未満となるように制限する。あるいは、目標開度をゼロにして内燃機関を強制的に停止させる。電スロカット制御部１６ｂは、電スロ駆動ＩＣ１４へ電スロカットを指令する信号を出力する。電スロ駆動ＩＣ１４は、ＭＣＵ１１から出力される指令信号よりも電スロカット指令信号を優先して作動する。
【００３４】
ＭＣＵ１１は、制御モジュール２０および監視モジュール３０を有する。これらのモジュールは、いずれについても、共通するＣＰＵ１１ａおよびメモリ１１ｍにより提供される機能である。すなわち、メモリ１１ｍの制御用記憶領域２０ｍに記憶された制御プログラムをＣＰＵ１１ａが実行している時のＣＰＵ１１ａおよびメモリ１１ｍは、制御モジュール２０として機能する。
【００３５】
また、メモリ１１ｍの監視用記憶領域３０ｍに記憶された監視プログラムをＣＰＵ１１ａが実行している時のＣＰＵ１１ａおよびメモリ１１ｍは、監視モジュール３０として機能する。制御用記憶領域２０ｍおよび監視用記憶領域３０ｍは、メモリ１１ｍの記憶領域のうち異なる領域に、別々に設定されている。
【００３６】
制御モジュール２０は、ユーザが要求する内燃機関の駆動トルクであるユーザ要求トルクに応じて、先述した各種の目標制御量を演算する「制御用演算装置」を提供する。監視モジュール３０は、内燃機関の実トルクの推定値である推定トルクが、内燃機関に要求されている機関要求トルクに対して所定以上乖離したトルク異常状態であるか否かを監視する「監視用演算装置」を提供する。ＥＣＵ１０は、制御用演算装置および監視用演算装置を備える「内燃機関制御システム」を提供する。
【００３７】
＜１＞制御モジュール２０の説明
制御モジュール２０は、機関要求トルク算出部２１および駆動信号出力部２２としての機能を有する。機関要求トルク算出部２１は、入力処理回路１１ｃおよび通信回路１１ｄから取得した各種信号に基づき、内燃機関に要求するべきトルクである機関要求トルクを算出する。駆動信号出力部２２は、機関要求トルク算出部２１で算出された機関要求トルクに応じて、先述した目標点火時期、目標噴射量、および目標開度等の目標制御量を演算する。さらに駆動信号出力部２２は、演算された目標制御量に応じて、点火駆動ＩＣ１２、燃料噴射弁駆動ＩＣ１３および電スロ駆動ＩＣ１４等のアクチュエータへ、各種の指令信号を出力する。
【００３８】
図２を用いてより詳細に説明すると、機関要求トルク算出部２１は、ユーザ要求トルク算出部２１ａ、ポンプロス算出部２１ｂ、フリクションロス算出部２１ｃ、トルク効率算出部２１ｄおよび演算部Ｂ１〜Ｂ６としての機能を有する。
【００３９】
＜１−１＞ユーザ要求トルクの説明
ユーザ要求トルク算出部２１ａは、先述したエンジン回転数およびアクセル開度に基づきユーザ要求トルクを算出する。エンジン回転数が高回転数であるほど、また、アクセル開度が大きいほど、ユーザ要求トルクは大きい値に算出される。例えば、エンジン回転数およびアクセル開度とユーザ要求トルクとの相関を表すマップをメモリ１１ｍに予め記憶させておき、そのマップを参照して、エンジン回転数およびアクセル開度に応じたユーザ要求トルクをユーザ要求トルク算出部２１ａは算出する。
【００４０】
＜１−２＞ロストルクの説明
ポンプロス算出部２１ｂは、先述したインマニ圧および排気圧に基づき、ポンプロスをトルク換算した値であるポンプロストルクを算出する。ポンプロスとは、内燃機関のピストンが往復動する際に吸排気から受ける抵抗によるエネルギ損失のことである。インマニ圧が低いほど、ピストンの吸気行程での吸気抵抗が大きいとみなしてポンプロスは大きい値に設定される。また、排気圧が高いほど、ピストンの排気行程での排気抵抗が大きいとみなしてポンプロスは大きい値に設定される。例えば、インマニ圧および排気圧とポンプロスとの相関を表すマップをメモリ１１ｍに予め記憶させておき、そのマップを参照して、インマニ圧および排気圧に応じたポンプロスをポンプロス算出部２１ｂは算出する。
【００４１】
フリクションロス算出部２１ｃは、先述した水温および油温に基づき、フリクションロスをトルク換算した値であるフリクションロストルクを算出する。フリクションロスとは、内燃機関のピストンが往復動する際のシリンダとの摩擦による機械エネルギロスのことである。水温が適正範囲から外れて低温または高温になっているほど、摩擦が大きいとみなしてフリクションロスは大きい値に設定される。また、油温が低いほど潤滑油等の粘性が大きいとみなしてフリクションロスは大きい値に設定される。例えば、水温および油温とフリクションロスとの相関を表すマップをメモリ１１ｍに予め記憶させておき、そのマップを参照して、水温および油温に応じたフリクションロスをフリクションロス算出部２１ｃは算出する。
【００４２】
演算部Ｂ１は、ポンプロス算出部２１ｂにより算出されたポンプロス、フリクションロス算出部２１ｃにより算出されたフリクションロス、およびロストルク学習値を加算して、総ロストルクを演算する。演算部Ｂ２は、ユーザ要求トルク算出部２１ａにより算出されたユーザ要求トルク、演算部Ｂ１により演算された総ロストルク、および外部要求トルクを加算して、ロス込みトルクを演算する。外部要求トルクの具体例としては、車載バッテリへの充電を目的として、内燃機関で駆動する発電機による発電量を増大させるといった、発電増大分のトルクが挙げられる。
【００４３】
＜１−３＞リザーブの説明
演算部Ｂ３は、アイドルリザーブ、触媒暖機リザーブおよび補機リザーブの各々に相当するトルクを加算してリザーブトルクを演算する。これら各々のリザーブトルクは、エンジン回転数、エンジン負荷および水温等の内燃機関の運転状態に応じて、制御モジュール２０により設定される。演算部Ｂ４は、演算部Ｂ２により演算されたロス込みトルクに、演算部Ｂ３により演算されたリザーブトルクを加算して、リザーブ込みトルクを演算する。
【００４４】
アイドルリザーブトルクとは、内燃機関のアイドル運転時にトルクアップさせて燃焼を安定化させる制御を実施するにあたり、そのトルクアップ分に相当するトルクのことである。触媒暖機リザーブトルクとは、内燃機関の排気を浄化する触媒を活性化温度以上に温度上昇させるべく排気温度を上昇させる暖機制御を実施するにあたり、排気温度を上昇させることに用いる燃焼エネルギのロス分をトルクに換算した値のことである。補機リザーブトルクとは、内燃機関を駆動源とする発電機等の補機を駆動させるのに要するトルクのことである。
【００４５】
＜１−４＞トルク効率の説明
トルク効率算出部２１ｄは、最大トルク発生点火時期（ＭＢＴ点火時期）、ノック学習込みベース遅角量および目標ラムダに基づき、トルク効率を算出する。ＭＢＴ点火時期とは、最大トルクが得られる点火時期のことであり、エンジン回転数やエンジン負荷、水温等に応じて異なる時期となる。但し、ＭＢＴ点火時期ではノッキングが生じやすいので、ＭＢＴ点火時期よりも所定時間遅い時期、つまり所定角度遅角させた時期で点火させることが要求される。その遅角させた時期をベース点火時期と呼ぶ。その遅角量（ベース遅角量）は、エンジン回転数やエンジン負荷、水温等に応じて異なる。
【００４６】
また、ノッキングがセンサで検出された場合には、点火時期を所定時間だけ遅角させるように補正するフィードバック制御を実行しており、その遅角補正量（ノック学習量）を次回以降の点火時期制御に反映させる学習制御をノック学習と呼ぶ。そして、ベース点火時期にノック学習量を反映させた時期が目標点火時期に相当する。
【００４７】
演算部Ｂ５は、ＭＢＴ点火時期から目標点火時期を減算して得られた時期を、ＭＢＴ点火時期に対する目標点火時期の遅角量であるＭＢＴ遅角量として演算する。トルク効率算出部２１ｄは、演算部Ｂ５により演算されたＭＢＴ遅角量および目標ラムダに基づき、トルク効率を算出する。
【００４８】
トルク効率とは、燃焼室での燃焼エネルギのうち、クランク軸の回転トルクに変換される分のエネルギの割合のことである。ＭＢＴ遅角量が小さいほど、つまり目標点火時期がＭＢＴ点火時期に近いほど、トルク効率は高い値に算出される。目標ラムダとは、燃焼室で燃焼する混合気に含まれる、空気と燃料の比率（ラムダ）の目標値のことであり、トルク効率算出部２１ｄは、目標ラムダに応じた値にトルク効率を算出する。例えば、ＭＢＴ遅角量および目標ラムダとトルク効率との相関を表すマップをメモリ１１ｍに予め記憶させておき、そのマップを参照して、ＭＢＴ遅角量および目標ラムダに応じたトルク効率をトルク効率算出部２１ｄは算出する。
【００４９】
なお、上述したＭＢＴ点火時期、ベース点火時期および目標ラムダの各々は、エンジン回転数、エンジン負荷および水温等の内燃機関の運転状態に応じて、制御モジュール２０により設定される。
【００５０】
また、上記ノック学習に係る学習制御は制御モジュール２０により実行される。本実施形態に係るＥＣＵ１０は、点火駆動ＩＣから出力される駆動電流または電圧を検出する検出回路を備えている。そして、その検出回路による検出値を用いて、制御モジュール２０は機関要求トルクを演算している。具体的には、上記検出値に基づき実点火時期を算出し、その実点火時期を用いてノック学習に係る学習制御を実行し、ノック学習量を算出している。
【００５１】
＜１−５＞制御用機関要求トルクの説明
演算部Ｂ６は、演算部Ｂ４により演算されたリザーブ込みトルクに、トルク効率算出部２１ｄにより算出されたトルク効率を除算して、エンジン制御に用いる制御用の機関要求トルクを演算する。要するに、総ロストルクおよびリザーブトルクをユーザ要求トルクに加算した値を、トルク効率で除算することで、機関要求トルク算出部２１は機関要求トルクを算出する。
【００５２】
＜２＞監視モジュール３０の説明
監視モジュール３０は、推定トルクが機関要求トルクに対して所定以上乖離したトルク異常状態であるか否かを監視するものであることは先述した通りであり、推定トルクとは、内燃機関の実トルクを推定した値のことである。機関要求トルクとは、内燃機関に要求されているトルクのことであり、制御モジュール２０の機関要求トルク算出部２１により算出される機関要求トルクと同義である。但し、監視モジュール３０で算出される機関要求トルクは、トルク異常の監視に用いられる値であり、制御モジュール２０で算出される機関要求トルクは、内燃機関に対する目標制御量の算出に用いられる値である。つまり、これら監視用の機関要求トルクと制御用の機関要求トルクは、メモリ１１ｍの記憶領域のうち異なる領域で演算された値である。
【００５３】
図１に示すように、監視モジュール３０は、入力保障部３１、機関要求トルク演算部３２、推定トルク演算部３３、トルク比較異常判定部３４および電スロカット制御部３５としての機能を有する。
【００５４】
入力保障部３１は、入力処理回路１１ｃおよび通信回路１１ｄから取得した各種信号のデータが正常であることをチェック（例えばパリティチェック）する。異常であれば、データ修復、データ再取得、データ廃棄等を入力保障部３１は実行する。これにより、監視モジュール３０が異常データを用いて各種の算出を行うことを回避できる。つまり、入力保障部３１は、監視モジュール３０による算出に用いられる各種データが正常であることを保障する。
【００５５】
トルク比較異常判定部３４は、機関要求トルク演算部３２により算出された期間要求トルクと、推定トルク演算部３３により算出された推定トルクとの差分を算出し、その差分が所定以上であれば、上述したトルク異常状態であると判定する。トルク異常状態であると判定された場合、電スロカット制御部３５は、電スロカット制御部１６ｂと同様にして、電スロ駆動ＩＣ１４へ電スロカットを指令する信号を出力する。
【００５６】
＜２−１＞監視用機関要求トルクの説明
図３に示すように、機関要求トルク演算部３２は、ユーザ要求トルクと外部要求トルクとを加算して、内燃機関に要求されている機関要求トルクを算出する演算部Ｂ１１としての機能を有する。この算出に用いるユーザ要求トルクは、入力保障部３１により保障されたエンジン回転数およびアクセル開度のデータを用いて算出される。このように、機関要求トルク演算部３２は、入力処理回路１１ｃおよび通信回路１１ｄから取得した各種信号であって、入力保障部３１により保障された信号（データ）に基づき、内燃機関に要求されている機関要求トルクを算出する。
【００５７】
＜２−２＞監視用推定トルクの説明
図３に示すように、推定トルク演算部３３は、推定トルク算出部３３ａ、ＭＢＴ点火時期算出部３３ｂ、ベース点火時期算出部３３ｃ、トルク効率算出部３３ｄ、ロストルク算出部３３ｅおよび演算部Ｂ１２、Ｂ１３、Ｂ１４としての機能を有する。
【００５８】
推定トルク算出部３３ａは、先述した充填効率およびエンジン回転数に基づき、点火時期がＭＢＴである場合における内燃機関の実際の駆動トルク（ＭＢＴ推定トルク）を推定する。エンジン回転数が高回転数であるほど、また、充填効率が大きいほど、ＭＢＴ推定トルクは大きい値に算出される。例えば、エンジン回転数および充填効率とＭＢＴ推定トルクとの相関を表すマップをメモリ１１ｍに予め記憶させておき、そのマップを参照して、エンジン回転数および充填効率に応じたＭＢＴ推定トルクを推定トルク算出部３３ａは算出する。
【００５９】
ＭＢＴ点火時期算出部３３ｂは、充填効率およびエンジン回転数に基づきＭＢＴ点火時期を算出する。ベース点火時期算出部３３ｃは、充填効率およびエンジン回転数に基づきベース点火時期を算出する。これらのＭＢＴ点火時期およびベース点火時期は、推定トルク算出部３３ａと同様にして、メモリ１１ｍに予め記憶させておいたマップを参照して算出される。
【００６０】
演算部Ｂ１２は、ＭＢＴ点火時期算出部３３ｂにより算出されたＭＢＴ点火時期から、ベース点火時期算出部３３ｃにより算出されたベース点火時期を減算した値を、先述したベース遅角量として演算する。トルク効率算出部３３ｄは、演算部Ｂ１２により演算されたベース遅角量に基づき、先述したトルク効率を算出する。但し、ノック学習量が予め設定しておいた所定量またはゼロとみなして、トルク効率算出部３３ｄはトルク効率を算出する。
【００６１】
ロストルク算出部３３ｅは、エンジン回転数および水温に基づき、ポンプロスおよびフリクションロスを含むロスエネルギをトルク換算したロストルクを算出する。例えば、エンジン回転数および水温とロストルクとの相関を表すマップをメモリ１１ｍに予め記憶させておき、そのマップを参照して、エンジン回転数および水温に応じたロストルクをロストルク算出部３３ｅは算出する。
【００６２】
演算部Ｂ１３は、推定トルク算出部３３ａにより算出されたＭＢＴ推定トルクに、トルク効率算出部３３ｄにより演算されたトルク効率を乗算した値を、ロストルクを考慮しない推定トルクとして演算する。演算部Ｂ１４は、演算部Ｂ１３により演算された推定トルクから、ロストルク算出部３３ｅにより算出されたロストルクを減算した値を、監視用の推定トルクとして演算する。
【００６３】
以上により、推定トルク演算部３３は、入力処理回路１１ｃおよび通信回路１１ｄから取得した各種信号であって、入力保障部３１により保障された信号（データ）に基づき、内燃機関が実際に出力している駆動トルクを推定する。
【００６４】
＜３＞監視モジュール３０による処理手順の説明
内燃機関の運転期間中には、監視モジュール３０による監視機能が常時作動する。具体的には、図４に示すメイン処理が常時実行される。
【００６５】
図４のメイン処理では、先ずステップＳ１０において、モニタ実行条件が満たされているか否かを判定する。例えば、ＣＰＵチェック回路１１ｅによるチェックが完了していることや、マイコン監視部１６ａが異常を検出していないこと等が、モニタ実行条件の具体例として挙げられる。
【００６６】
モニタ実行条件が満たされていると判定された場合、続くステップＳ１１において、先述した機関要求トルク演算部３２が、監視用の機関要求トルクを算出する。なお、図３に示す機関要求トルク演算部３２ではユーザ要求トルクの算出ブロックを省略しているが、例えばユーザ要求トルク算出部２１ａと同様にして、エンジン回転数およびアクセル開度に基づきユーザ要求トルクを算出する。但し、入力保障部３１により保障されたエンジン回転数およびアクセル開度のデータを用いてユーザ要求トルクを算出する。
【００６７】
続くステップＳ１２では、先述した推定トルク演算部３３が、監視用の推定トルクを算出する。続くステップＳ１３では、先述したトルク比較異常判定部３４が、トルク異常の判定を実行する。ステップＳ１３にてトルク異常と判定された場合、続くステップＳ１４において、電スロカット制御部３５が電スロカット指令信号を出力する。
【００６８】
＜４＞水温センサ５の故障対策
さて、水温センサ５により検出される水温は、先述した通り、制御モジュール２０による機関要求トルクの算出、および監視モジュール３０による推定トルクの算出に用いられる。詳細には、フリクションロス算出部２１ｃによるフリクションロスの算出、およびロストルク算出部３３ｅによるロストルク算出に用いられる。したがって、水温センサ５が故障した場合、水温センサ５の検出値をそのまま上記算出に用いると、機関要求トルクおよび推定トルクが正常に算出されなくなる。
【００６９】
水温センサ５の故障の具体例としては、断線、短絡およびスタックが挙げられる。断線または短絡の故障が生じた場合、水温センサ５の出力が、変化し得る範囲の最大値または最低値に張り付いたまま変化しなくなる。スタックの故障が生じた場合、水温センサ５の出力が、変化しうる範囲のある値に固定されて変化しなくなる。
【００７０】
そこで本実施形態では、水温センサ５の検出値が異常である場合、またはその検出値の挙動が異常である場合に、水温センサ５が故障しているとみなし、制御モジュール２０は内燃機関の出力を制限する。例えば、機関要求トルク算出部２１により算出された機関要求トルクが上限値を超えている場合には、機関要求トルクを上限値に制限する。或いは、電スロカット制御部３５と同様にして、制御モジュール２０が電スロカット指令信号を出力する。
【００７１】
但し、水温センサ５の検出応答速度は遅い（例えば１０秒程度）ので、検出値が異常値であるからといって直ぐに水温センサ５が故障であると判定すると、誤った故障判定になる可能性が高い。そこで本実施形態では、異常値の状態が所定時間以上（例えば１０秒以上）継続したことを条件として、水温センサ５が故障であると判定し、内燃機関の出力を制限する。
【００７２】
しかしながら、このように所定時間を待って水温センサ５を故障判定すると、異常値が現れてから所定時間が経過するまでの故障判定期間Ｍ（図１３参照）では、先述したように推定トルクが正常に算出されなくなる。そのため、監視モジュール３０はトルク異常を正しく監視できない。つまり、故障判定期間Ｍでは、トルク異常を正しく監視できない状態で制御モジュール２０が内燃機関を制御する状態に陥ることが懸念される。
【００７３】
そこで本実施形態では、監視モジュール３０が推定トルクを算出するにあたり、故障判定期間Ｍには水温センサ５の検出値を用いることを禁止しつつ算出する。以下、推定トルクの算出に用いる水温の設定手順について、図５〜図９を用いて説明する。図５〜図９に示す処理は、内燃機関の運転期間中に監視モジュール３０により常時実行される。
【００７４】
図５に示す処理では、先ずステップＳ２０において、ＥＣＵ１０をリセットさせる要求または内燃機関を停止させる要求の有無を判定する。上記要求があると判定された場合には、続くステップＳ２１において、水温センサ５により検出された水温のうち前回の処理で取得した水温をリセットする。続くステップＳ２２では、後述する異常状態のフラグおよび故障通知のフラグをリセットする。上記要求がないと判定された場合には、続くステップＳ２３において、水温センサ５から出力される先述した電圧値を取得する。続くステップＳ２４では、図６に示すサブルーチン処理による電圧異常判定を実行する。電圧異常判定の処理では、取得した電圧値、つまり水温センサ５の検出値が、予め設定された上下限範囲を超えている電圧異常の状態であるか否かを判定し、その判定結果に応じて、推定トルクの算出に用いる水温を設定する。
【００７５】
続くステップＳ２５では、ステップＳ２３で取得した電圧値を水温に変換する。例えば、電圧値と水温との関係を表した数式を予めメモリ１１ｍに記憶させておき、その数式に電圧値を代入して水温を算出する。
【００７６】
続くステップＳ２６では、図７に示すサブルーチン処理による変化量異常判定を実行する。変化量異常判定の処理では、ステップＳ２５で変換された水温の単位時間当りの変化量が、予め設定された正常変化範囲を超えている場合に異常と判定し、その判定結果に応じて、推定トルクの算出に用いる水温を設定する。つまり、水温検出値そのものの異常を判定するのではなく、水温検出値の挙動についての異常を判定する。
【００７７】
続くステップＳ２７では、図７に示すサブルーチン処理によるスタック異常判定を実行する。スタック異常判定の処理では、ステップＳ２５で変換された水温が、内燃機関の運転状態に応じて設定される下限ガード値以下である場合に異常と判定し、その判定結果に応じて、推定トルクの算出に用いる水温を設定する。
【００７８】
続くステップＳ２８では、推定トルクの算出に用いる水温を、ステップＳ２４、Ｓ２６、Ｓ２７による異常判定処理で設定された水温、および予め設定された所定温度Ｔｂのいずれにするかを決定する。
【００７９】
図６に示す電圧異常判定の処理では、先ずステップＳ３０において、水温センサ５から出力された最新の電圧値（現在値）が、予め設定された上下限範囲を超えているか否かを判定する。上下限範囲の上限値および下限値は、内燃機関の運転状態や外気温度に拘らず一定の値に設定されている。上限値および下限値は、水温センサ５に断線または短絡が生じた場合に電圧値が超えることとなるような値に設定されている。
【００８０】
電圧値が上下限範囲を超えていると判定された場合、水温センサ５が故障している可能性があるとみなし、ステップＳ３１において、上下限異常フラグをオンに設定するとともに、水温センサ５の現在値を用いて推定トルクを算出することを禁止する。
【００８１】
続くステップＳ３２では、上下限異常状態を検知してからの経過時間（異常状態経過時間）を計測する。具体的には、上下限異常フラグがオフからオンに切り替わったタイミングでカウント値の積算を開始し、ステップＳ３２にてカウント値を１つ積算してカウント値を更新していく。
【００８２】
続くステップＳ３３では、異常状態経過時間が所定時間（例えば１０秒）を超えたか否かを判定する。所定時間を超えたと判定された場合には、続くステップＳ３４において、水温センサ５が故障していると判定し、その旨を制御モジュール２０へ出力するとともに、ＥＣＵ１０の外部へ通信回路１５から出力する。上記所定時間は、水温センサ５が故障であるか否かの判定を確定させるための故障判定期間Ｍである。一方、異常状態経過時間が所定時間を超えていないと判定された場合には、ステップＳ３５において、ステップＳ２３で取得した現在の電圧値ではなく前回取得した前回値を、推定トルクの算出に用いる電圧値として設定する。ここで用いる前回値とは、故障判定期間Ｍに取得された電圧値を除き、故障判定期間Ｍ直前の電圧値のことである。
【００８３】
また、ステップＳ３０にて電圧値が上下限範囲を超えていないと判定された場合には、続くステップＳ３６において、上下限異常フラグをオフに設定するとともに、水温センサ５の現在値を用いて推定トルクを算出することを許可する。続くステップＳ３７では、ステップＳ３２で更新されるカウント値をゼロにして、異常状態経過時間をリセットする。続くステップＳ３８では、ステップＳ２３で取得した現在の電圧値を、推定トルクの算出に用いる電圧値として設定する。
【００８４】
要するに、図６の電圧異常判定の処理では、上下限異常状態が検出されてから故障判定が確定するまでの故障判定期間Ｍでは、現在水温を用いて推定トルクを算出することを禁止して、前回値を用いて推定トルクを算出する。
【００８５】
図７に示す変化量異常判定の処理では、先ずステップＳ４０において、内燃機関の運転状態に基づき、単位時間当りの水温変化量に対する正常変化範囲（図１０の符号Ｗ参照）を設定する。例えば、水温センサ５が断線、短絡していないものの突発的に大きく変動した水温が出力される異常状態（図１０の符号Ｋ１参照）である場合に、その変動した水温が正常変化範囲を超えることとなるように正常変化範囲は設定されている。
【００８６】
また、例えば内燃機関の運転開始時において、実際の水温（実水温）が極めて低い温度（例えば−３０℃）である場合には、大きく水温上昇するので水温変化量は大きくなる。一方、実水温が十分に高い温度（例えば１０℃）である場合には大きくは水温上昇しないので、水温変化量は小さくなる。これらの点を鑑みると、実水温が低いほど正常変化範囲を大きく設定して、正常に大きく水温上昇している状態を誤って異常判定することの抑制を図ることが望ましい。また、実水温が高いほど正常変化範囲を小さく設定して、異常検知の迅速化を図ることが望ましい。そこでステップＳ４０では、例えば内燃機関の運転履歴が低水温となるような履歴であるほど、正常変化範囲を大きく設定している。
【００８７】
続くステップＳ４１では、水温センサ５から出力された水温変化量を算出し、その水温変化量が、ステップＳ４０で設定された正常変化範囲を超えているか否かを判定する。水温変化量は、最新の水温（現在水温）から前回取得した水温（前回水温）を減算した値であってもよいし、現在水温を含む所定期間に取得された複数の水温の平均であってもよい。
【００８８】
水温変化量が正常変化範囲を超えていると判定された場合、水温センサ５が故障している可能性があるとみなし、ステップＳ４２において、変化量異常フラグをオンに設定するとともに、水温センサ５の現在値を用いて推定トルクを算出することを禁止する。
【００８９】
続くステップＳ４３では、変化量異常状態を検知してからの経過時間（異常状態経過時間）を計測する。具体的には、変化量異常フラグがオフからオンに切り替わったタイミングでカウント値の積算を開始し、ステップＳ４３にてカウント値を１つ積算してカウント値を更新していく。
【００９０】
続くステップＳ４４では、異常状態経過時間が所定時間（故障判定期間Ｍ）を超えたか否かを判定する。所定時間を超えたと判定された場合には、続くステップＳ４５において、水温センサ５が故障していると判定し、その旨を制御モジュール２０へ出力するとともに、ＥＣＵ１０の外部へ通信回路１５から出力する。一方、異常状態経過時間が所定時間を超えていないと判定された場合には、ステップＳ４６において、ステップＳ２３で取得した現在の電圧値に基づく水温（現在水温）ではなく前回取得した前回水温を、推定トルクの算出に用いる水温として設定する。ここで用いる前回水温とは、故障判定期間Ｍ直前の水温のことであり、故障判定期間Ｍに取得された水温は除かれる。
【００９１】
また、ステップＳ４１にて水温変化量が正常変化範囲を超えていないと判定された場合には、続くステップＳ４７において、変化量異常フラグをオフに設定するとともに、水温センサ５の現在値を用いて推定トルクを算出することを許可する。続くステップＳ４８では、ステップＳ４３で更新されるカウント値をゼロにして、異常状態経過時間をリセットする。続くステップＳ４９では、現在水温が閾値Ｔａ（図１１参照）未満であるか否かを判定する。閾値Ｔａは、例えば７０℃に設定されている。
【００９２】
現在水温が閾値Ｔａ未満であると判定された場合、続くステップＳ５０において、ステップＳ２３で取得した現在水温および前回水温のうち大きい方の水温を、推定トルクの算出に用いる水温として設定する。一方、現在水温が閾値Ｔａ未満でないと判定された場合、続くステップＳ５１において、ステップＳ２３で取得した現在水温を、推定トルクの算出に用いる水温として設定する。
【００９３】
図８に示すスタック異常判定の処理では、先ずステップＳ６０において、内燃機関の運転履歴に基づき、スタック防止用の下限ガード値を設定する。例えば、水温センサ５が断線、短絡していないものの、実際の水温よりも低温の値（低温張付値）を継続して出力するといった異常状態である場合に、その低温張付値より高い値となるように下限ガード値は設定されている。なお、図１０の符号Ｌがスタック防止用の下限ガード値を例示し、符号Ｋ２が低温貼付値を例示している。
【００９４】
また、例えば内燃機関の運転開始時において、実水温が極めて低い温度（例えば−３５℃）になる場合がある。この点を鑑みると、水温が低いほど下限ガード値を低温に設定して、正常に極低温になっている状態を低温張付値であると誤って異常判定することの抑制を図ることが望ましい。また、水温が高いほど下限ガード値を高温に設定して、異常検知の迅速化を図ることが望ましい。そこでステップＳ６０では、例えば内燃機関の運転履歴が低水温となるような履歴であるほど、下限ガード値を低温に設定している。
【００９５】
運転履歴のパラメータとして、内燃機関の始動後の経過時間が挙げられる。また、エンジン回転数、吸気量、燃料カット状態、車速、車室内を空調する空調装置の駆動状態、冷却水を冷却する冷却装置の駆動状態、および外気温度の少なくとも１つを運転履歴のパラメータに加えて、現在水温の推定精度を向上させてもよい。
【００９６】
続くステップＳ６１では、水温センサ５から出力された水温が、ステップＳ６０で設定された下限ガード値以下であるか否かを判定する。水温が下限ガード値以下であると判定された場合、水温センサ５が故障している可能性があるとみなし、ステップＳ６２において、スタック異常フラグをオンに設定するとともに、水温センサ５の現在値を用いて推定トルクを算出することを禁止する。
【００９７】
続くステップＳ６３では、スタック異常状態を検知してからの経過時間（異常状態経過時間）を計測する。具体的には、スタック異常フラグがオフからオンに切り替わったタイミングでカウント値の積算を開始し、ステップＳ６３にてカウント値を１つ積算してカウント値を更新していく。
【００９８】
続くステップＳ６４では、異常状態経過時間が所定時間（故障判定期間Ｍ）を超えたか否かを判定する。所定時間を超えたと判定された場合には、続くステップＳ６５において、水温センサ５が故障していると判定し、その旨を制御モジュール２０へ出力するとともに、ＥＣＵ１０の外部へ通信回路１５から出力する。一方、異常状態経過時間が所定時間を超えていないと判定された場合には、ステップＳ６６において、ステップＳ２３で取得した現在の電圧値に基づく水温（現在水温）ではなく下限ガード値を、推定トルクの算出に用いる水温として設定する。
【００９９】
また、ステップＳ６１にて水温が下限ガード値以下でないと判定された場合には、続くステップＳ６７において、スタック異常フラグをオフに設定するとともに、水温センサ５の現在値を用いて推定トルクを算出することを許可する。続くステップＳ６８では、ステップＳ６３で更新されるカウント値をゼロにして、異常状態経過時間をリセットする。続くステップＳ６９では、現在水温が閾値Ｔａ未満であるか否かを判定する。
【０１００】
現在水温が閾値Ｔａ未満であると判定された場合、続くステップＳ７０において、ステップＳ２３で取得した現在水温および前回水温のうち大きい方の水温を、推定トルクの算出に用いる水温として設定する。一方、現在水温が閾値Ｔａ未満でないと判定された場合、続くステップＳ７１において、ステップＳ２３で取得した現在水温を、推定トルクの算出に用いる水温として設定する。
【０１０１】
図９に示す水温決定処理では、先ずステップＳ８０において、ステップＳ３４、Ｓ４５、Ｓ６５による故障通知が為されているか否かを判定する。故障通知中であると判定された場合には、続くステップＳ８１において、予め設定された所定温度Ｔｂ（例えば６０℃）を、推定トルクの算出に用いる水温として決定する。故障通知中でないと判定された場合には、続くステップＳ８２において、図６、図７および図８の各異常判定処理により設定された値を、推定トルクの算出に用いる水温として決定する。つまり、図６に記載のステップＳ３５、Ｓ３８、図７に記載のステップＳ４６、Ｓ５０、Ｓ５１、および図８に記載のＳ６６、Ｓ７０、Ｓ７１のいずれかで設定された値を、推定トルクの算出に用いる水温として決定する。
【０１０２】
そして、監視モジュール３０のロストルク算出部３３ｅは、上述の如く決定された水温を用いてロストルクを算出する。監視モジュール３０は、そのロストルクを用いて推定トルクを算出し、その推定トルクを用いてトルク異常を監視する。
【０１０３】
＜５＞監視制御の一態様の説明
先述した通り本実施形態では、監視モジュール３０のロストルク算出部３３ｅは、水温センサ５により検出された現在水温を用いて、フリクションロスを含むロストルクを算出する。また、算出されたロストルクを用いて監視モジュール３０は推定トルクを算出し、その推定トルクを用いてトルク異常を監視する。そして、故障判定期間Ｍにおいては、水温センサ５により検出された現在水温を用いることを禁止しつつ、ロストルク算出部３３ｅはロストルクを算出する。
【０１０４】
これに対し、図１２に係る比較例では、故障判定が確定した以降は所定温度Ｔｂを用いてロストルクを算出するものの、故障判定期間Ｍにおいては、ロストルク算出部３３ｅは現在水温を用いてロストルクを算出する。つまり、現在水温を用いて推定トルクを算出してトルク異常を監視する。なお、制御モジュール２０のフリクションロス算出部２１ｃについては、本実施形態および比較例のいずれについても、現在水温を用いてフリクションロスを算出する。
【０１０５】
図１２および図１３の（ａ）（ｂ）（ｃ）欄の各々は、水温、フリクションロスおよびトルクの、経過時間に対する変化を示す。図１２は比較例による変化を示し、図１３は本実施形態による変化を示す。
【０１０６】
図１２の（ａ）欄は、内燃機関の運転開始に伴い実水温が上昇しているにも拘らず、水温センサ５にスタック異常が生じていることに起因して、水温センサ５の検出値が低温張付値になっている状態を示す。比較例の場合、スタック異常が生じている状態では、実水温よりも低い水温でフリクションロスが算出されることになる。
【０１０７】
その結果、図１２の（ｂ）欄に示すように、制御モジュール２０が算出する制御用のフリクションロスは、実フリクションロスよりも大きくなる。そのため、図１２の（ｃ）欄に示すように、制御モジュール２０が算出する制御用の機関要求トルクよりも実トルクが大きくなる。つまり、故障判定期間Ｍでは、所望するトルクより実トルクが大きい状態で維持される。
【０１０８】
さらに、図１２の（ｂ）欄に示すように、監視モジュール３０が算出する監視用のフリクションロスは、先述の如く低水温で算出されることに伴い、実フリクションロスよりも大きくなる。そのため、図１２の（ｃ）欄に示すように、監視モジュール３０の推定トルク演算部３３が算出する監視用の推定トルクは、実トルクよりも小さい値となる。したがって、機関要求トルク演算部３２により算出される監視用の機関要求トルクと推定トルクとが所定以上乖離しなくなるので、トルク異常を精度良く監視できなくなる。
【０１０９】
これに対し本実施形態では、図１３の（ａ）欄に示すように水温センサ５の検出値が低温張付値になっていても、ロストルク算出部３３ｅの算出に用いられる水温は、故障判定期間Ｍでは図８のステップＳ６６で設定される下限ガード値に決定される。そのため、低温張付値に比べて実水温に近い水温を用いてフリクションロスが算出される。
【０１１０】
その結果、図１３の（ｂ）欄に示すように、監視モジュール３０が算出する監視用のフリクションロスは、制御用のフリクションロスに比べて実フリクションロスに近い値となる。
【０１１１】
そのため、図１３の（ｃ）欄に示すように、監視用の推定トルクは、比較例に比べて実トルクに近い値となる。よって、制御用のフリクションロスが実フリクションロスより大きくなることに起因して所望するトルクより実トルクが大きい状態で維持された場合に、推定トルクは実トルクに近い値となる。よって、監視用の機関要求トルクと推定トルクとが所定以上乖離するようになるので、トルク異常を精度良く監視できる。
【０１１２】
＜６＞作用効果の説明
本実施形態に係る内燃機関制御システムは、制御モジュール２０（制御部）と、監視モジュール３０（監視部）と、ステップＳ３０、Ｓ４１、Ｓ６１による検出異常判定部と、を備える。制御モジュール２０は、水温センサ５（温度センサ）の水温検出値に応じて、内燃機関の燃焼状態を制御する。監視モジュール３０は、推定トルクおよび機関要求トルクを算出し、推定トルクが機関要求トルクに対して所定以上乖離したトルク異常状態であるか否かを監視する。検出異常判定部は、水温検出値または水温検出値の挙動が異常であるか否かを判定する。そして監視モジュール３０は、ステップＳ３８、Ｓ５１、Ｓ７１による正常時トルク算出部と、ステップＳ３５、Ｓ４６、Ｓ６６による異常時トルク算出部とを備える。正常時トルク算出部は、検出異常判定部により異常と判定されていない場合に、水温検出値を用いて、推定トルクを算出する。異常時トルク算出部は、検出異常判定部により異常と判定されている場合に、水温検出値を用いることを禁止しつつ、推定トルクを算出する。
【０１１３】
これによれば、水温センサ５の正常時には、トルク異常監視に用いる推定トルクは現在水温を用いて算出される。そのため、正常時には、水温を考慮したトルク異常監視を実現できるので、監視精度を向上できる。一方、水温センサ５の異常時であって故障判定期間Ｍには、水温センサ５により検出された現在水温を用いることなく推定トルクは算出される。そのため、センサ正常時に比べれば監視精度は劣るものの、異常値を用いて監視する場合に比べれば監視精度を向上できる。よって、水温センサ５が故障であるか否かの判定に十分な時間（故障判定期間Ｍ）を用いたとしても、その故障判定期間Ｍでのトルク異常の監視を実現できる。
【０１１４】
さらに本実施形態では、検出異常判定部は、水温検出値が予め設定された上下限範囲を超えている場合に異常と判定する、ステップＳ３０による上下限判定部を有する。これによれば、ノイズなどにより水温検出値が瞬間的に異常な値になった場合に、その異常な水温検出値でトルク異常を監視してしまうことを回避できる。
【０１１５】
さらに本実施形態では、検出異常判定部は、水温検出値の変化量が予め設定された正常変化範囲を超えている場合に異常と判定する、ステップＳ４１による変化量判定部を有する。これによっても、ノイズなどにより水温検出値が瞬間的に異常な値になった場合に、その異常な水温検出値でトルク異常を監視してしまうことを回避できる。
【０１１６】
さらに本実施形態では、変化量判定部により異常と判定される直前の水温検出値が小さいほど、正常変化範囲は大きい範囲に設定される。ここで、例えば１０秒で、１０℃から５０℃に変化（４０℃上昇）する等、水温検出値が本来ありえない異常な変化をした場合に、その異常状態を変化量判定部は検出できる。しかし、−３０℃から１０℃に変化（４０℃上昇）することはありえる変化であり、正常状態である蓋然性が高い。したがって、異常判定直前の水温検出値が小さいほど、正常変化範囲を大きい範囲に設定する本実施形態によれば、正常に変化している状態を異常状態と誤検出するおそれを抑制できる。
【０１１７】
さらに本実施形態では、検出異常判定部は、水温検出値が下限ガード値以下である場合に異常と判定する、ステップＳ６１による下限ガード判定部を有する。下限ガード値は、内燃機関の運転状態に応じて設定される。これによれば、水温検出値が実水温よりも低い値を維持する異常になった場合に、その異常な水温検出値でトルク異常を監視してしまうことを回避できる。なお、実水温より低い水温でフリクションロスを算出すると、潤滑油が低粘性であるとみなしてフリクションロスを実ロスよりも大きく算出してしまい、機関要求トルクが大きく算出されてしまう。
【０１１８】
さらに本実施形態では、下限ガード判定部は、運転状態の履歴に応じて下限ガード値を設定する。水温は、内燃機関の運転状態の履歴に依存するので、水温検出値が本来ありえない異常に低い値であるか否かは、上記履歴によって異なってくる。したがって、運転状態の履歴に応じて下限ガード値を設定する本実施形態によれば、正常に低い水温を検出している状態を異常状態と誤検出するおそれを抑制できる。
【０１１９】
さらに本実施形態では、正常時トルク算出部は、推定トルクを算出するにあたり、水温検出値の今回値および前回値のうち高温側の値を用いて算出する。ここで、冷却水がラジエータで冷却されるものである場合、低温条件下の水温は、８０℃程度までは基本的に単調増加するはずである。但し、図１１の拡大図に示すように、厳密には脈動しながら増加するはずである。そのため、脈動で落ち込んだ水温検出値は、実水温よりも低い可能性が高い。したがって、このような脈動を考慮して、今回値および前回値のうち高温側の値を用いる本実施形態によれば、脈動により落ち込んだ水温検出値（今回値）を用いてフリクションロスを誤って大きく算出してしまうことを抑制できる。なお、前回値が、脈動により実水温よりも高温になっている可能性も高いが、この場合には、フリクションロスを小さく算出することになる。よって、前回値を用いたことに起因して実トルクがユーザ要求トルクより大きくなることはないので、実トルクを小さくする側の値を用いたトルク制御およびトルク異常監視となる。
【０１２０】
さらに本実施形態では、正常時トルク算出部は、推定トルクを算出するにあたり、水温検出値が閾値Ｔａ（所定以下）の低温であることを条件として、高温側の値を用いて算出する。上記単調増加する範囲と単調増加が終了した境界の温度に閾値Ｔａを設定しておけば、単調増加が終了した場合にまで実トルクを小さくする側の値を用いた制御や監視をすることを回避できる。
【０１２１】
さらに本実施形態では、検出異常判定部により異常と判定されている状態が所定時間以上継続した場合に、水温センサ５が故障していると判定する、ステップＳ３３、Ｓ４４、Ｓ６４による故障判定部を備える。そして、異常時トルク算出部は、故障判定部により故障と判定された場合に、水温が予め設定された所定温度であるとみなして、推定トルクを算出する。これによれば、故障判定期間Ｍの後の水温センサ５の故障を確定させた以降において、水温を用いずに推定トルク等を算出する場合に比べれば、算出精度を向上できる。
【０１２２】
さらに本実施形態では、ＥＣＵ１０（内燃機関制御システム）は、制御モジュール２０（制御用演算装置）および監視モジュール３０（監視用演算装置）を備える。制御モジュール２０は、制御用記憶領域２０ｍを用いて演算する演算装置であって、ユーザ要求トルクに応じて、内燃機関の燃焼状態を制御する制御量の目標値である目標制御量を演算する。監視モジュール３０は、制御用記憶領域２０ｍとは別の監視用記憶領域３０ｍを用いて演算する演算装置であって、計数値設定部、積算部および異常判定部を有する。このように、トルク監視する演算装置である監視モジュール３０は、制御用記憶領域２０ｍとは別の監視用記憶領域３０ｍを用いて演算する。そのため、監視用の推定トルクが異常値になるのに対して監視用の要求トルクは異常値にならず、トルク乖離量が大きくなり、制御用記憶領域２０ｍに記憶されたデータの異常に起因したトルク異常の監視が可能となる。
【０１２３】
さて、監視に用いる推定トルクおよび要求トルクの演算速度および演算精度は、制御に用いる推定トルクおよび要求トルクに比べて低い。この点を鑑み、本実施形態では、監視モジュール３０の演算周期は制御モジュール２０の演算周期より長い。そのため、監視モジュール３０の演算処理負荷が必要以上に大きくなることを回避できる。
【０１２４】
また、監視に用いる推定トルクおよび要求トルクの場合、これらのトルクの演算に用いるデータが正常時であることの保障に対する要求は、制御に用いる推定トルクおよび要求トルクの場合に比べて高い。この点を鑑み、本実施形態では、監視モジュール３０は入力保障部３１を有し、入力保障部３１は、監視モジュール３０の外部から取得したデータが正常であることをチェックする。そのため、監視モジュール３０の演算に用いるデータが正常時であることの保障を向上でき、上記要求に応えることができる。
【０１２５】
（他の実施形態）
この明細書における開示は、例示された実施形態に制限されない。開示は、例示された実施形態と、それらに基づく当業者による変形態様を包含する。例えば、開示は、実施形態において示された部品および／または要素の組み合わせに限定されない。開示は、多様な組み合わせによって実施可能である。開示は、実施形態に追加可能な追加的な部分をもつことができる。開示は、実施形態の部品および／または要素が省略されたものを包含する。開示は、１つの実施形態と他の実施形態との間における部品および／または要素の置き換え、または組み合わせを包含する。開示される技術的範囲は、実施形態の記載に限定されない。開示されるいくつかの技術的範囲は、請求の範囲の記載によって示され、さらに請求の範囲の記載と均等の意味及び範囲内での全ての変更を含むものと解されるべきである。
【０１２６】
上記第１実施形態では、ステップＳ３３、Ｓ４４、Ｓ６４による各々の故障判定部において、所定時間（故障判定期間Ｍ）は同じ長さに設定されている。これに対し、各々の故障判定部に係る所定時間を異なる長さに設定してもよい。つまり、異常状態の種類に応じて、故障判定期間Ｍを異ならせてもよい。例えば、スタック異常に係る故障判定期間Ｍを、変化量異常または電圧異常に係る故障判定期間Ｍよりも長く設定してもよい。また、電圧異常に係る所定時間を変化量異常に係る所定時間よりも短い時間に設定して、断線、短絡による異常状態に陥った場合には、電圧異常判定により故障通知が迅速に為されるようにしてもよい。
【０１２７】
上記第１実施形態では、水温センサ５の故障判定は、監視モジュール３０が実行している。これに対し、制御モジュール２０が実行してもよいし、制御モジュール２０および監視モジュール３０以外で実行してもよい。また、制御モジュール２０および監視モジュール３０の各々で実行してもよい。
【０１２８】
上記第１実施形態では、被検出物の温度を検出する温度センサとして水温センサ５を適用させており、被検出物をエンジン冷却水としている。これに対し、被検出物をエンジン潤滑油の温度（油温）とし、温度センサとして油温センサを適用させてもよいし、吸気温度を検出する吸気温センサや、燃料温度を検出する燃温センサを適用させてもよい。
【０１２９】
上記第１実施形態では、検出異常判定部は、ステップＳ３０による上下限判定部、ステップＳ４１による変化量判定部、およびステップＳ６１による下限ガード判定部を有する。これに対し、検出異常判定部は、水温検出値または水温検出値の挙動が異常であるか否かを判定するものであれば、これらの上下限判定部、変化量判定部、および下限ガード判定部を有していなくてもよいし、これらの判定部のいずれかを廃止してもよい。
【０１３０】
上記各実施形態では、監視モジュール３０の演算速度は制御モジュール２０の演算速度よりも遅い。具体的には、入力保障部３１によるチェック処理速度がボトルネックとなり、機関要求トルク演算部３２および推定トルク演算部３３の演算速度は、機関要求トルク算出部２１の演算速度よりも遅くなっている。これに対し、監視モジュール３０の演算速度が制御モジュール２０の演算速度と同等であってもよい。
【０１３１】
上記各実施形態では、共通する１つのメモリ１１ｍの記憶領域に、制御用記憶領域２０ｍおよび監視用記憶領域３０ｍを設定している。これに対し、ＥＣＵ１０に複数のメモリを設け、第１のメモリの記憶領域を制御用記憶領域として設定し、第２のメモリの記憶領域を監視用記憶領域として設定してもよい。
【０１３２】
上記各実施形態では、共通する１つのＭＣＵ１１が、制御用記憶領域２０ｍおよび監視用記憶領域３０ｍを有している。これに対し、ＥＣＵ１０に複数のＭＣＵを設け、第１のＭＣＵが制御用記憶領域を有し、第２のＭＣＵが監視用記憶領域を有するように構成されていてもよい。
【０１３３】
上記各実施形態では、車両に搭載された内燃機関をＥＣＵ１０の制御対象としているが、車載以外の定置式の内燃機関をＥＣＵ１０の制御対象としてもよい。また、ハイブリッド車や電気自動車に搭載されている車両駆動用モータを監視対象としても良い。
【符号の説明】
【０１３４】
５…温度センサ（水温センサ）、２０…制御モジュール（制御部）、２０ｍ…制御用記憶領域、３０…監視モジュール（監視部）、３０ｍ…監視用記憶領域、３１…入力保障部、Ｓ３０…上下限判定部（検出異常判定部）、Ｓ４１…変化量判定部（検出異常判定部）、Ｓ６１…下限ガード判定部（検出異常判定部）、Ｓ３３、Ｓ４４、Ｓ６４…故障判定部、Ｓ３５、Ｓ４６、Ｓ６６…異常時トルク算出部、Ｓ３８、Ｓ５１、Ｓ７１…正常時トルク算出部。
【図１】
2019044625.tif 000003
【図２】
2019044625.tif 000004
【図３】
2019044625.tif 000005
【図４】
2019044625.tif 000006
【図５】
2019044625.tif 000007
【図６】
2019044625.tif 000008
【図７】
2019044625.tif 000009
【図８】
2019044625.tif 000010
【図９】
2019044625.tif 000011
【図１０】
2019044625.tif 000012
【図１１】
2019044625.tif 000013
【図１２】
2019044625.tif 000014
【図１３】
2019044625.tif 000015