(57)【特許請求の範囲】
【請求項１】
マイコン（２１）と、
前記マイコンの動作を監視するためのモニタリングモジュール（２３）とを備え、
前記マイコンのＣＰＵ（２５）が実行するプログラムは、
制御対象（１５）を制御するためのプログラムである第１レベルのプログラム（４１）と、
前記第１レベルのプログラムによる前記制御対象に対する制御機能が正常か否かをモニタリングすると共に、前記制御機能が異常と判定した場合に前記制御機能を無効化させる第１の遮断信号を出力するための第２レベルのプログラム（４２）と、
前記第２レベルのプログラムの実行検査を行って、その検査結果を前記モニタリングモジュールに出力するための検査用プログラム（４３ａ）を含む第３レベルのプログラム（４３）と、を備え、
前記モニタリングモジュールは、前記検査結果が該検査結果の期待値と一致しない場合に前記制御機能を無効化させる第２の遮断信号を出力するように構成されている、車両用電子制御装置（１１）において、
前記マイコンは、
前記制御機能を無効化させる第３の遮断信号を出力するためのハードウェア回路であって、前記第３の遮断信号を出力するための動作が、前記第１レベルのプログラムのバグによって阻止されてしまうことが予防されたハードウェア回路（２９，６１）を備え、
前記ＣＰＵが実行する前記第３レベルのプログラムには、
前記検査用プログラムによる前記検査結果が該検査結果の期待値と一致しない場合に、前記ハードウェア回路に前記第３の遮断信号を出力させるためのエラー検出プログラム（４３ｂ）が含まれており、
前記ハードウェア回路（２９）は、
一定時間毎にカウントアップするカウンタ（２９ａ）の値が特定値に達すると前記第３の遮断信号を出力すると共に、所定のキーコードが与えられることを条件にして、前記カウンタへの書き込みが可能なウォッチドッグタイマ回路（２９）であり、
前記エラー検出プログラム（４３ｂ）は、
前記検査結果が前記期待値と一致した場合には、前記ウォッチドッグタイマ回路に前記キーコードを与えて前記カウンタに前記特定値とは異なる値を書き込むことにより、前記第３の遮断信号が出力されないようにし、前記検査結果が前記期待値と一致しない場合には、前記ウォッチドッグタイマ回路に前記キーコードを与えないことで、前記第３の遮断信号が出力されるようにするプログラムであること、
を特徴とする車両用電子制御装置。
【請求項２】
マイコン（２１）と、
前記マイコンの動作を監視するためのモニタリングモジュール（２３）とを備え、
前記マイコンのＣＰＵ（２５）が実行するプログラムは、
制御対象（１５）を制御するためのプログラムである第１レベルのプログラム（４１）と、
前記第１レベルのプログラムによる前記制御対象に対する制御機能が正常か否かをモニタリングすると共に、前記制御機能が異常と判定した場合に前記制御機能を無効化させる第１の遮断信号を出力するための第２レベルのプログラム（４２）と、
前記第２レベルのプログラムの実行検査を行って、その検査結果を前記モニタリングモジュールに出力するための検査用プログラム（４３ａ）を含む第３レベルのプログラム（４３）と、を備え、
前記モニタリングモジュールは、前記検査結果が該検査結果の期待値と一致しない場合に前記制御機能を無効化させる第２の遮断信号を出力するように構成されている、車両用電子制御装置（１１）において、
前記マイコンは、
前記制御機能を無効化させる第３の遮断信号を出力するためのハードウェア回路であって、前記第３の遮断信号を出力するための動作が、前記第１レベルのプログラムのバグによって阻止されてしまうことが予防されたハードウェア回路（２９，６１）を備え、
前記ＣＰＵが実行する前記第３レベルのプログラムには、
前記検査用プログラムによる前記検査結果が該検査結果の期待値と一致しない場合に、前記ハードウェア回路に前記第３の遮断信号を出力させるためのエラー検出プログラム（４３ｂ）が含まれており、
前記ハードウェア回路（６１）は、
一定時間毎にカウントアップするコンペアマッチカウンタ（６３）と、前記第１レベルのプログラムによってライトアクセスされないようになっているコンペアマッチレジスタ（６５）とを備え、前記コンペアマッチカウンタの値と前記コンペアマッチレジスタの値とが一致すると、前記第３の遮断信号を出力するコンペアマッチタイマ回路（６１）であり、
前記エラー検出プログラム（４３ｂ）は、
前記検査結果が前記期待値と一致した場合には、前記コンペアマッチカウンタの値に所定値を加えた値を、前記コンペアマッチレジスタに書き込むことにより、前記第３の遮断信号が出力されないようにし、前記検査結果が前記期待値と一致しない場合には、前記コンペアマッチレジスタへの書き込みを行わないことで、前記第３の遮断信号が出力されるようにするプログラムであること、
を特徴とする車両用電子制御装置。
【請求項３】
請求項１又は請求項２に記載の車両用電子制御装置において、
前記制御対象は、当該車両用電子制御装置が搭載される車両のエンジンのスロットル弁（１５）であり、
前記第１〜第３の遮断信号は、前記スロットル弁を動かすためのアクチュエータ（１７）の動作を停止させて前記スロットル弁の位置を特定位置に戻すための信号であり、
前記車両をイグニッションオンの状態からイグニッションオフの状態にするためのイグニッションオフ操作が前記車両の使用者によって行われると、前記検査用プログラムによる前記実行検査は実施されず、前記マイコンの前記ハードウェア回路により前記第３の遮断信号が出力されるようになっており、
更に、前記マイコンの前記ＣＰＵは、
前記車両の使用者が前記イグニッションオフ操作を行ったことを検出すると（Ｓ１１０：ＹＥＳ）、前記第３の遮断信号を出力する機能を診断するための処理として、
前記ハードウェア回路により前記第３の遮断信号が出力される予定時刻が経過するまで待った後、前記スロットル弁の位置を検出するスロットル位置センサ（３１）からの信号に基づいて前記スロットル弁の位置が前記特定位置であるか否かを判定し、前記スロットル弁の位置が前記特定位置でなければ前記第３の遮断信号を出力する機能が異常であると判定する処理（Ｓ１２０，Ｓ１３０，Ｓ１５０）を行うこと、
を特徴とする車両用電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両用の電子制御装置に関する。
【背景技術】
【０００２】
車両用電子制御装置として、制御対象を制御するためのマイコン（マイクロコンピュータ）と、マイコンの動作を監視するためのモニタリングモジュールと、を備えたものがある（例えば、特許文献１参照）。
【０００３】
特許文献１の装置では、マイコンが実行するプログラムが、第１〜第３のレベルに分割されている。
第１のレベルのプログラム（以下、第１レベルプログラムという）は、制御対象を制御するためのプログラムである。
【０００４】
第２のレベルのプログラム（以下、第２レベルプログラムという）は、第１レベルプログラムによる制御機能が正常か否かをモニタリング（監視）すると共に、制御機能が異常と判定した場合に制御対象に対する出力段を調節する信号を出力するためのプログラムである。
【０００５】
第３のレベルのプログラム（以下、第３レベルプログラムという）は、第２レベルプログラムの実行検査を行って、その検査結果をモニタリングモジュールに出力するためのプログラムである。
【０００６】
そして、モニタリングモジュールは、マイコンの第３レベルプログラムによって出力される上記検査結果と、その検査結果の期待値とを比較し、検査結果が期待値と一致しない場合に上記出力段を操作する信号を出力する。
【０００７】
つまり、この装置では、第１レベルプログラムが誤った制御をしても、第２レベルプログラムによって、誤った制御による不具合を回避する構成になっている。更に、第１、第２レベルプログラムが同時に異常になるような共通原因故障や、バグを発現した第１レベルプログラムが第２レベルプログラムを干渉によって侵害するような事象に対しては、第３レベルプログラムとモニタリングモジュールとによって、出力段を遮断できる構成となっている。
【０００８】
ここで、マイコンとは独立したモニタリングモジュールについて、自動車の電気／電子に関する機能安全規定であるＩＳＯ（国際標準化機構）２６２６２にて、どの程度の信頼性が求められているか説明する。
【０００９】
まず、マイコンの故障は、直ちに不定な制御に至る可能性があるので、通常、車両制御装置ならば、例えば意図せぬ車両加速が０．３Ｇに至る前に加速を抑止できるよう数十ミリ秒といった短い時間間隔で診断する。
【００１０】
一方、モニタリングモジュール単独の故障は、直ちに不定な制御を招くわけではないため、数十ミリ秒といった短い時間間隔での診断は不要であり、車両制御装置の場合であれば、例えば１ドライビングサイクルに１回程度の頻度で診断を行えば良い。
【００１１】
また、独立したマイコンとモニタリングモジュールとが、同一ドライビングサイクルで故障することは、マイコンの故障確率に対して十分無視できるほどに小さく、特別な対策は必須ではない。
【００１２】
上記のごとく、モニタリングモジュールについて、車両制御装置の場合であれば、例えば１ドライビングサイクルに１回程度の診断で信頼性を確保すれば良い。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特許第３９５５３２８号
【発明の概要】
【発明が解決しようとする課題】
【００１４】
ところで、上述した機能安全規定の内容は、マイコンとモニタリングモジュールとのハード的な故障と言う観点での話であり、バグを発現した第１レベルプログラムが第２レベルプログラムを干渉によって侵害するような事象を論じてはいない。
【００１５】
その干渉とは、例えば、第２レベルプログラムが参照するＲＡＭ内のデータを書き換えてしまう、といった現象であり、ハードウェアの故障ではない。このため、マイコンにおける第１レベルプログラムのバグ発現による干渉とモニタリングモジュールの故障との両方が、同一ドライビングサイクル中に絶対生じないとは言い難い。
【００１６】
そこで、本発明者は、第１レベルプログラムのバグがいつ発現するかわからないならば、最悪を想定して、第１レベルプログラムのバグ発現とモニタリングモジュールのハード的な故障とが同一ドライビングサイクルで発生し得るとの観点から、電子制御装置を設計することで、信頼性をより高めることを考えた。
【００１７】
このため、本発明は、車両用電子制御装置の信頼性向上を目的としている。
【課題を解決するための手段】
【００１８】
第１発明の車両用電子制御装置は、マイコンと、マイコンの動作を監視するためのモニタリングモジュールとを備える。
そして、マイコンのＣＰＵが実行するプログラムは、制御対象を制御するためのプログラムである第１レベルのプログラムと、第１レベルのプログラムによる制御対象に対する制御機能が正常か否かをモニタリングすると共に、前記制御機能が異常と判定した場合に前記制御機能を無効化させる第１の遮断信号を出力するための第２レベルのプログラムと、第２レベルのプログラムの実行検査を行って、その検査結果をモニタリングモジュールに出力するための検査用プログラムを含む第３レベルのプログラムと、を備える。
【００１９】
モニタリングモジュールは、マイコンからの前記検査結果が該検査結果の期待値と一致しない場合に前記制御機能を無効化させる第２の遮断信号を出力する。
このため、例えば、第１レベルのプログラムによる制御機能に異常が生じた場合には、第２レベルのプログラムによって出力される第１の遮断信号により、異常な制御機能を無効にすることができる。また例えば、第１、第２レベルのプログラムが同時に異常になるような共通原因故障が発生した場合や、バグを発現した第１レベルのプログラムが第２レベルのプログラムを干渉によって侵害した場合には、第３レベルのプログラムにおける検査用プログラムとモニタリングモジュールとが協同して、信頼性を確保する。つまり、それらの場合には、検査用プログラムによってマイコンから出力される検査結果（第２レベルのプログラムの実行検査を行った結果）が、期待値と一致しなくなり、モニタリングモジュールが第２の遮断信号を出力する。そして、その第２の遮断信号により、第１レベルのプログラムによる制御機能を無効化して、誤った制御を防止することができる。
【００２０】
更に、この車両用電子制御装置において、マイコンは、前記制御機能を無効化させる第３の遮断信号を出力するためのハードウェア回路であって、第３の遮断信号を出力するための動作が、第１レベルのプログラムのバグによって阻止されてしまうことが予防されたハードウェア回路を備える。そして、マイコンが実行する第３レベルのプログラムには、検査用プログラムによる前記検査結果が該検査結果の期待値と一致しない場合に、前記ハードウェア回路に第３の遮断信号を出力させるためのエラー検出プログラムが含まれている。
【００２１】
この車両用電子制御装置によれば、バグを発現した第１レベルのプログラムが第２レベルのプログラムを干渉によって侵害する事象と、モニタリングモジュールのハード的な故障とが、同一ドライビングサイクルで発生した場合でも、信頼性を確保することができる。つまり、その場合において、マイコン内のハードウェア回路まで故障することは考えられない。そして、その場合には、マイコンにおいて、検査用プログラムによる検査結果（第２レベルのプログラムの実行検査を行った結果）が期待値と一致しなくなり、エラー検出プログラム及び前記ハードウェア回路により第３の遮断信号が出力される。よって、その第３の遮断信号により、誤った制御を防止することができる。
【００２２】
このように、第１発明の車両用電子制御装置では、マイコンにおけるエラー検出プログラム及び前記ハードウェア回路により、モニタリングモジュールと同等の機能を実現しており、制御の信頼性を向上させることができる。
【００２３】
また、マイコン内に配置したモニタリングモジュールと同等の機能は、モニタリングモジュールとデコンポジションの関係を形成するため、モニタリグモジュールの背負うＡＳＩＬ（Automotive Safety Integrity Level：自動車向け安全水準）を軽減することが可能である。モニタリングモジュールが、例えば、制御を実施するマイコンとは別のサブマイコンである場合、ＡＳＩＬが軽減されることで、そのサブマイコンにおけるＲＯＭ、ＲＡＭ、インストラクション、フローチェックといった高負荷のかかるランタイムチェック（装置の動作中において定期的に行うチェック）を、実施しなくても済むこととなる。
【００２４】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００２５】
【図１】第１実施形態の車両用電子制御装置（ＥＣＵ）の構成を表す構成図である。
【図２】マイコン監視プログラムと監視ＩＣを説明するための説明図である。
【図３】通知データ、サム期待値、調整値を説明するための説明図である。
【図４】遮断信号診断処理を表すフローチャートである。
【図５】第２実施形態のコンペアマッチタイマ回路を表す構成図である。
【図６】第２実施形態のエラー検出プログラムの処理を表すフローチャートである。
【発明を実施するための形態】
【００２６】
本発明が適用された実施形態の車両用電子制御装置（以下、ＥＣＵという）について説明する。
［第１実施形態］
図１に示すように、第１実施形態のＥＣＵ１１は、少なくとも電子スロットル１３を制御する装置である。
【００２７】
電子スロットル１３は、車両のエンジンへの吸入空気量を調節するスロットル弁１５と、スロットル弁１５を動かすためのアクチュエータとしてのモータ１７とを、１つの製品としてまとめたものである。ＥＣＵ１１は、モータ１７を駆動することにより、スロットル弁１５の位置（開度）を調節する。また、電子スロットル１３では、モータ１７の駆動が停止されると、スロットル弁１５の位置が特定位置に戻るようになっている。その特定位置は、例えば、エンジンの所定出力での運転（例えばアイドリング運転）が可能な位置である。
【００２８】
ＥＣＵ１１は、スロットル弁１５（電子スロットル１３）を制御するためのマイコン２１と、マイコン２１の動作を監視するためのモニタリングモジュールとしての監視ＩＣ２３とを備える。尚、マイコン２１の動作を監視するとは、マイコン２１の構成要素の正常な機能性をモニタ（監視）することである。
【００２９】
マイコン２１は、プログラムを実行するＣＰＵ２５と、ＣＰＵ２５が実行するプログラムが記憶されたＲＯＭ２６と、ＣＰＵ２５による演算結果等が記憶されるＲＡＭ２７と、入出力ポート（Ｉ／Ｏ）２８と、他の内部周辺回路（例えばＡ／Ｄ変換器や、パルス幅変調信号を出力する回路や、後述するウォッチドッグタイマ回路２９等）とを備える。
【００３０】
ＥＣＵ１１には、スロットル弁１５の位置をスロットル開度として検出する２つのスロットル位置センサ（ＴＰＳ１，ＴＰＳ２）３１，３２からの信号と、車両の運転者によるアクセルペダルの操作位置をアクセル操作量として検出する２つのアクセル位置センサ（ＡＰＳ１，ＡＰＳ２）３３，３４からの信号とが、少なくとも入力される。
【００３１】
一方のスロットル位置センサ（ＴＰＳ１）３１は、スロットル開度を検出するメインセンサであり、他方のスロットル位置センサ（ＴＰＳ２）３２は、スロットル位置センサ３１，３２の診断に用いられるサブセンサである。同様に、一方のアクセル位置センサ（ＡＰＳ１）３３は、アクセル操作量を検出するメインセンサであり、他方のアクセル位置センサ（ＡＰＳ２）３４は、アクセル位置センサ３３，３４の診断に用いられるサブセンサである。
【００３２】
上記各センサ３１〜３４からの信号は、ＥＣＵ１１に備えられた入力回路（図示省略）を介して、マイコン２１に入力される。
マイコン２１で実行されるプログラムであって、詳しくは、ＣＰＵ２５が実行するＲＯＭ２６内のプログラムは、図１における点線の枠で示すように、第１レベルのプログラム４１と、第２レベルのプログラム４２と、第３レベルのプログラム４３とに、分けられている。第２、第３レベルのプログラム４２，４３は、第１レベルのプログラム４１よりも、設計における信頼性が高いプログラムである。
【００３３】
第１レベルのプログラム（以下、第１レベルプログラムともいう）４１は、制御対象（この例ではスロットル弁１５）を制御するためのプログラムであり、スロットル弁１５の制御量を算出する制御量演算プログラム４１ａを含む。
【００３４】
制御量演算プログラム４１ａは、アクセル位置センサ３３によって検出されるアクセル操作量から、スロットル弁１５の目標開度（目標位置）を演算し、スロットル位置センサ３１によって検出される実際のスロットル開度が、その目標開度となるように、モータ１７を駆動するための制御信号を出力する。尚、本明細書において、プログラムを主語にした動作は、そのプログラムをＣＰＵ２５が実行することで実現されるマイコン２１の動作である。また、マイコン２１から出力される制御信号は、図示しない出力段としての駆動回路を介してモータ１７に供給される。
【００３５】
第２レベルのプログラム（以下、第２レベルプログラムともいう）４２は、第１レベルプログラム４１によるスロットル弁１５に対する制御機能が正常か否かをモニタリングすると共に、制御機能が異常と判定した場合に該制御機能を無効化させる第１の遮断信号（以下、遮断信号１という）を出力するためのプログラムである。
【００３６】
第２レベルプログラム４２は、例えば、許容トルク算出プログラム４２ａと、推定トルク算出プログラム４２ｂと、診断プログラム４２ｃ，４２ｄと、異常処置プログラム４２ｅとを含む。
【００３７】
許容トルク算出プログラム４２ａは、アクセル位置センサ３３によって検出されるアクセル操作量から、エンジンの許容トルクを算出する。その許容トルクは、例えば、アクセル操作量から考えられるエンジンの出力トルクの最大値に相当する。
【００３８】
推定トルク算出プログラム４２ｂは、スロットル位置センサ３１によって検出されるスロットル開度から、現在エンジンが発生しているトルクの推定値である推定トルクを算出する。
【００３９】
診断プログラム４２ｃは、許容トルク算出プログラム４２ａによって算出された許容トルクと、推定トルク算出プログラム４２ｂによって算出された推定トルクとを比較し、例えば、推定トルクが許容トルクよりも所定値以上大きい場合に、異常（制御機能が異常）と判定する。つまり、制御機能の診断結果を「異常」とする。
【００４０】
診断プログラム４２ｄは、スロットル位置センサ３１，３２やアクセル位置センサ３３，３４といった、制御で用いる入力信号の診断を行うプログラムである。
例えば、診断プログラム４２ｄは、２つのスロットル位置センサ３１，３２による検出値を比較し、その２つの検出値が所定値以上離れていた場合に、異常と判定する。同様に、診断プログラム４２ｄは、２つのアクセル位置センサ３３，３４による検出値を比較し、その２つの検出値が所定値以上離れていた場合に、異常と判定する。
【００４１】
診断プログラム４２ｃ，４２ｄによる診断結果は、異常処置プログラム４２ｅに通知される。そして、異常処置プログラム４２ｅは、診断プログラム４２ｃ，４２ｄによる診断結果の何れかが「異常」であれば、遮断信号１を出力する。
【００４２】
マイコン２１からの遮断信号１は、電子スロットル１３に供給される。そして、電子スロットル１３は、遮断信号１が供給されると、モータ１７の駆動が強制的に停止されるようになっている。
【００４３】
マイコン２１から遮断信号１が出力されることで、第１レベルプログラム４１による制御機能が無効化され、スロットル弁１５の位置が前述の特定位置に戻り、エンジンの出力が制限される。尚、他の例として、例えば、マイコン２１からの遮断信号１が、ＥＣＵ１１における前述の駆動回路（出力段）に供給されて、モータ１７の駆動が強制的に停止させるようになっていても良い。また、マイコン２１から遮断信号１が出力されることで、モータ１７への電源供給が遮断されるように構成されていても良い。
【００４４】
第３レベルのプログラム（以下、第３レベルプログラムともいう）４３は、第２レベルプログラム４２の実行検査（以下、テストともいう）を行って、その検査結果を監視ＩＣ２３に出力するための、検査用プログラムとしてのマイコン監視プログラム４３ａを含んでいる。
【００４５】
マイコン監視プログラム４３ａの内容について、図２を用い説明する。ここでは、実行検査対象のプログラムが、第２レベルプログラム４２のうち、許容トルク算出プログラム４２ａ、推定トルク算出プログラム４２ｂ及び診断プログラム４２ｃからなる、トルクモニタプログラム５１であるとして説明する。
【００４６】
図２に示すように、トルクモニタプログラム５１には、許容トルク及び推定トルクの演算に用いる入力データとして、通常は、センサによって検出された制御データ（この例では、アクセル位置センサ３３によって検出されたアクセル操作量と、スロットル位置センサ３１によって検出されたスロットル開度）が入力される。
【００４７】
また、本実施形態では、実行検査を実施するタイミング（以下、テストタイミングという）が、一定時間Ｔ（例えば３２ｍｓ）毎に到来する。そして、そのテストタイミング毎に、トルクモニタプログラム５１には、入力データとして、制御データに代えて、実行検査用のデータであるテストデータが入力される。このような入力データの切り換えは、マイコン監視プログラム４３ａが行う。実行検査を実施する一定時間Ｔ毎の周期のことを、テスト周期という。
【００４８】
そして、マイコン監視プログラム４３ａは、トルクモニタプログラム５１にテストデータを入力した場合の、該トルクモニタプログラム５１の演算結果（この例では、診断プログラム４２ｃによる診断結果）と、その演算結果の期待値とを、比較部５３で比較する。テストデータと、それに対応する期待値は、ＲＯＭ２６に予め記憶されており、対応するもの同士が選択される。
【００４９】
比較部５３は、トルクモニタプログラム５１の演算結果と期待値とが一致していれば、検査結果として、「正」を示す「１」を出力し、逆に、演算結果と期待値とが一致していなければ、検査結果として、「誤」を示す「０」を出力する。
【００５０】
また、マイコン監視プログラム４３ａは、上記一定時間Ｔ毎にカウントアップするサイクルカウンタ５５と、テストデータ切換部５７とを備える。
サイクルカウンタ５５の値（以下、サイクルカウンタ値という）は、３の次に１へ戻る。このため、サイクルカウンタ値は、「１→２→３→１→２→３→１…」というように変化する。
【００５１】
テストデータ切換部５７は、サイクルカウンタ値が「１」又は「２」の場合には、テストデータとして、Ｔ用テストデータをトルクモニタプログラム５１に入力し、サイクルカウンタ値が「３」の場合には、テストデータとして、Ｆ用テストデータをトルクモニタプログラム５１に入力する。
【００５２】
Ｔ用テストデータは、比較部５３からの検査結果として「１」を期待する実行検査（以下、正期待の実行検査という）用のテストデータであり、トルクモニタプログラム５１の演算結果として、比較部５３で比較される期待値と同じ演算結果が得られるはずのテストデータである。このため、Ｔ用テストデータがトルクモニタプログラム５１に入力された場合、比較部５３から「１」が出力されることが、正常である。Ｔ用テストデータの「Ｔ」は、「True：真」の略である。
【００５３】
これに対して、Ｆ用テストデータは、比較部５３からの検査結果として「０」を期待する実行検査（以下、誤期待の実行検査という）用のテストデータであり、トルクモニタプログラム５１の演算結果として、比較部５３で比較される期待値とは異なる演算結果が得られるはずのテストデータである。このため、サイクルカウンタ値が３の場合であって、Ｆ用テストデータがトルクモニタプログラム５１に入力される場合には、比較部５３から「０」が出力されることが、正常である。Ｆ用テストデータの「Ｆ」は、「False：偽」の略である。このようなＦ用テストデータによる誤期待の実行検査を行うのは、比較部５３からの検査結果が「１」に固定される故障が生じたことも、異常として検出するためである。
【００５４】
また、本実施形態では、テスト周期毎に、実行検査対象のプログラムに対して、テストデータが異なる複数通りの実行検査を行うようになっている。このため、実行検査の種類毎に、異なるテストデータが用意されている。実行検査の種類は、実行検査の識別情報であるテストＩＤによって識別される。以下では、例えば、「テストＩＤ＝０」と「テストＩＤ＝１」との、２通りの実行検査が行われるものとして説明する。
【００５５】
例えば、Ｔ用テストデータによる正期待の実行検査（即ち、サイクルカウンタ値が１又は２の場合の実行検査）のうち、「テストＩＤ＝０」の実行検査では、Ｔ用テストデータとして、テストデータＡがトルクモニタプログラム５１に入力される。そして、トルクモニタプログラム５１の演算結果とテストデータＡに対応する期待値とが、比較部５３で比較される。また、「テストＩＤ＝１」の実行検査では、Ｔ用テストデータとして、テストデータＢがトルクモニタプログラム５１に入力され、トルクモニタプログラム５１の演算結果とテストデータＢに対応する期待値とが、比較部５３で比較される。同様に、Ｆ用テストデータによる誤期待の実行検査においても、テストＩＤ毎に、異なるＦ用テストデータがトルクモニタプログラム５１に入力されることとなる。
【００５６】
そして更に、マイコン監視プログラム４３ａは、送信データ合成部５９を備える。
送信データ合成部５９は、実施した実行検査のテストＩＤと、その実行検査について比較部５３が出力する検査結果との、両方を含んだデータを、通知データとして生成し、その生成した通知データを監視ＩＣ２３に出力する。通知データは、マイコン２１における検査結果を監視ＩＣ２３に通知するためのデータであり、マイコン２１から監視ＩＣ２３へのテスト回答でもある。また、マイコン２１から監視ＩＣ２３への通知データの伝送は、例えば通信線を介したシリアル通信で行われる。
【００５７】
例えば、本実施形態では、テストＩＤと検査結果との各データが４ビットであり、送信データ合成部５９は、テストＩＤを上位４ビットとし、検査結果を下位４ビットとした、８ビットデータを、通知データとして生成する。
【００５８】
ここで、「テストＩＤ＝０」の実行検査による通知データを、特に区別する場合には、通知データ０と言い、「テストＩＤ＝１」の実行検査による通知データを、特に区別する場合には、通知データ１と言うことにすると、通知データ０と通知データ１は、正常ならば、図３のようになる。尚、図３及び以下の説明において、「０ｘ」は、それ以降の２桁の英数字（図３の例では０と１）がヘキサ表示（１６進数表示）であることを意味している。つまり、図３の１段目〜３段目に示すように、サイクルカウンタ値が１又は２の場合、正常であれば、比較部５３からの検査結果が「１」になるため、通知データ０は［０ｘ０１］となり、通知データ１は［０ｘ１１］となる。また、サイクルカウンタ値が３の場合、正常であれば、比較部５３からの検査結果が「０」になるため、通知データ０は［０ｘ００］となり、通知データ１は［０ｘ１０］となる。
【００５９】
そして、送信データ合成部５９は、生成した通知データ０と通知データ１とを、連続的に監視ＩＣ２３へ出力する。尚、比較部５３、テストデータ切換部５７及び送信データ合成部５９の各々は、マイコン監視プログラム４３ａの一部を成すプログラムである。
【００６０】
一方、監視ＩＣ２３は、マイコン２１からの通知データに含まれている検査結果と、その検査結果の期待値とが一致しているか否かを判定するエラー検出回路２３ａと、エラー検出回路２３ａによって検査結果と期待値との不一致が検出された場合に、第１レベルプログラム４１によるスロットル弁１５の制御機能を無効化させる第２の遮断信号（以下、遮断信号２という）を出力する出力回路２３ｂと、を備える。
【００６１】
エラー検出回路２３ａは、例えば、動作を開始してから、マイコン２１からの通知データ（通知データ０及び通知データ１）を受信した回数を計数することにより、今回受信した通知データが、正期待の実行検査と誤期待の実行検査との何れによるものかを判別する。
【００６２】
エラー検出回路２３ａは、受信した通知データが、正期待の実行検査によるものであると判別した場合には、受信した通知データ０が［０ｘ０１］で、且つ、受信した通知データ１が［０ｘ１１］であるか否かを判定する。そして、エラー検出回路２３ａは、受信した通知データ０が［０ｘ０１］でないか、あるいは、受信した通知データ１が［０ｘ１１］でなければ、マイコン２１からの検査結果が期待値と一致していないと判定することとなる。また、エラー検出回路２３ａは、受信した通知データが、誤期待の実行検査によるものであると判別した場合には、受信した通知データ０が［０ｘ００］で、且つ、受信した通知データ１が［０ｘ１０］であるか否かを判定する。そして、エラー検出回路２３ａは、受信した通知データ０が［０ｘ００］でないか、あるいは、受信した通知データ１が［０ｘ１０］でなければ、マイコン２１からの検査結果が期待値と一致していないと判定することとなる。
【００６３】
尚、この例において、エラー検出回路２３ａは、通知データ０，１の単位で、期待値との比較を行っている（換言すれば、テストＩＤについても、それの期待値との比較を行っている）が、勿論、通知データ０，１から検査結果の部分（下位４ビット）を抽出して、それの期待値との比較を行っても良い。
【００６４】
このようにして、エラー検出回路２３ａがマイコン２１からの検査結果と期待値との不一致を検出すると、出力回路２３ｂが遮断信号２を出力する。また、エラー検出回路２３ａは、テスト周期よりも長い所定の制限時間が経過してもマイコン２１から通知データが送信されてこない場合にも、出力回路２３ｂに遮断信号２を出力させる。
【００６５】
尚、他の例として、例えば、エラー検出回路２３ａには、図３の４段目に示すように、通知データ０と通知データ１とのサム値（８ビットでの加算値）の正常値であるサム期待値を記憶させておいても良い。その場合、エラー検出回路２３ａは、受信した通知データが、正期待の実行検査によるものであると判別した場合には、受信した通知データ０と通知データ１とのサム値と、サム期待値である［０ｘ００］とが一致するか否かを判定し、両値が一致しなければ、検査結果と期待値とが不一致であると判定すれば良い。同様に、エラー検出回路２３ａは、受信した通知データが、誤期待の実行検査によるものであると判別した場合には、受信した通知データ０と通知データ１とのサム値と、サム期待値である［０ｘ１０］とが一致するか否かを判定し、両値が一致しなければ、検査結果と期待値とが不一致であると判定すれば良い。
【００６６】
また他の例として、例えば、エラー検出回路２３ａは、マイコン２１からテスト周期毎に送られてくる通知データ０及び通知データ１が、「［０ｘ０１］と［０ｘ１１］」→「［０ｘ０１］と［０ｘ１１］」→「［０ｘ００］と［０ｘ１０］」→…、という繰り返しパターンで変化しているか否かを判定することで、検査結果と期待値との一致／不一致を判定するようになっていても良い。勿論、その繰り返しパターンでなければ、検査結果と期待値とが不一致ということになる。
【００６７】
つまり、エラー検出回路２３ａが行う処理は、マイコン２１からの検査結果が、それの期待値と一致しないことを検出できれば、どのような処理でも良い。
図１に示すように、監視ＩＣ２３の出力回路２３ｂによって出力される遮断信号２も、遮断信号１と同様に、電子スロットル１３に供給される。電子スロットル１３は、遮断信号２が供給されても、モータ１７の駆動が強制的に停止されるようになっている。よって、監視ＩＣ２３から遮断信号２が出力された場合にも、スロットル弁１５の位置が前述の特定位置に戻り、エンジンの出力が制限される。尚、他の例として、例えば、監視ＩＣ２３からの遮断信号２が、ＥＣＵ１１における前述の駆動回路（出力段）に供給されて、モータ１７の駆動が強制的に停止させるようになっていても良い。また、監視ＩＣ２３から遮断信号２が出力されることで、モータ１７への電源供給が遮断されるように構成されていても良い。
【００６８】
更に、マイコン２１は、監視ＩＣ２３の機能と同様の機能を果たす手段を備えている。その手段は、図１に示すように、第３レベルプログラム４３の一部として備えられたエラー検出プログラム４３ｂと、当該マイコン２１内のウォッチドッグタイマ回路２９である。
【００６９】
エラー検出プログラム４３ｂは、マイコン監視プログラム４３ａによる検査結果が該検査結果の期待値と一致しない場合に、ウォッチドッグタイマ回路２９に第３の遮断信号（以下、遮断信号３という）を出力させるためのプログラムである。尚、エラー検出プログラム４３ｂの詳細については後で説明する。
【００７０】
図１に示すように、遮断信号３も、遮断信号１及び遮断信号２と同様に、第１レベルプログラム４１による制御機能を無効化させる信号であり、電子スロットル１３に供給される。電子スロットル１３は、遮断信号３が供給されても、モータ１７の駆動が強制的に停止されるようになっている。よって、マイコン２１から遮断信号３が出力された場合にも、スロットル弁１５の位置が前述の特定位置に戻り、エンジンの出力が制限される。尚、他の例として、例えば、マイコン２１からの遮断信号３が、ＥＣＵ１１における前述の駆動回路（出力段）に供給されて、モータ１７の駆動が強制的に停止させるようになっていても良い。また、マイコン２１から遮断信号３が出力されることで、モータ１７への電源供給が遮断されるように構成されていても良い。
【００７１】
ウォッチドッグタイマ回路２９は、マイコン２１内のクロックにより一定時間毎にカウントアップするカウンタ２９ａを備える。そして、ウォッチドッグタイマ回路２９は、カウンタ２９ａの値が、カウントアップによって特定値Ｎ（例えば最大値、あるいは最大値の次の値である０）に達すると、マイコン２１における所定の出力ポート（入出力ポート２８の何れか）からマイコン２１の外部へ遮断信号３を出力する。更に、ウォッチドッグタイマ回路２９は、予め定められた正規のキーコードが与えられることを条件にして、カウンタ２９ａへの書き込みが可能になっている。つまり、ウォッチドッグタイマ回路２９は、正規のキーコード（本実施形態では例えば８ビットの［０ｘ５Ａ］）を与えなければ、カウンタ２９ａにライトアクセスすることができないように構成されている。
【００７２】
次に、エラー検出プログラム４３ｂについて説明する。
エラー検出プログラム４３ｂは、マイコン監視プログラム４３ａの送信データ合成部５９によって前述の通知データ０及び通知データ１が生成される毎に、下記式１の演算を行うことにより、ウォッチドッグタイマ回路２９のカウンタ２９ａにライトアクセスするためのキーコードを生成する。
【００７３】
キーコード＝「サム値」＋「サイクルカウンタ値」＋「調整値［サイクルカウンタ値］」…式１
式１における「サム値」は、送信データ合成部５９によって今回生成された通知データ０と通知データ１とのサム値である。
【００７４】
式１における「サイクルカウンタ値」は、現時点でのサイクルカウンタ値である。
式１における「調整値［サイクルカウンタ値］」は、サイクルカウンタ値に応じた値であり、下記式２により予め算出されてＲＯＭ２６に記憶されている。
【００７５】
調整値［サイクルカウンタ値］＝「正規のキーコード」−「サイクルカウンタ値に応じたテストタイミングでの、通知データ０と通知データ１とのサム値の正常値であるサム期待値（図３の４段目参照）」−「サイクルカウンタ値」…式２
つまり、調整値［サイクルカウンタ値］は、正規のキーコードである［０ｘ５Ａ］から、サイクルカウンタ値に応じたテストタイミングでのサム期待値を減算し、更にサイクルカウンタ値を減算した値である。この例において、調整値［サイクルカウンタ値］は、図３の５段目に示す値である。
【００７６】
式１は、送信データ合成部５９によって生成された通知データ０と通知データ１とのサム値が、そのサム値の期待値であるサム期待値と一致した場合にだけ、算出結果が、正規のキーコードとなる式である。このため、式１は、マイコン監視プログラム４３ａによる検査結果（比較部５３が出力する検査結果）が、その検査結果の期待値と一致した場合にだけ、算出結果が、正規のキーコードとなる式でもある。検査結果の期待値とは、サイクルカウンタ値が１又は２の場合には「１」であり、サイクルカウンタ値が３の場合には「０」である。よって、検査結果が正しい場合にだけ、式１により、正規のキーコードが生成されることとなる。
【００７７】
そして、エラー検出プログラム４３ｂは、式１の演算で算出したキーコードを、ウォッチドッグタイマ回路２９に与えて、カウンタ２９ａに最大値とは異なるプリセッ値を書き込む。プリセット値は、カウンタ２９ａの値が、そのプリセット値から上記特定値Ｎに達するまでの所要時間が、テスト周期（当該エラー検出プログラム４３ｂがカウンタ２９ａにプリセット値を書き込もうとする周期でもある）よりも、十分に長くなる値である。
【００７８】
このため、マイコン監視プログラム４３ａによる検査結果が、その検査結果の期待値と一致した場合には、ウォッチドッグタイマ回路２９に正規のキーコードが与えられて、カウンタ２９ａにプリセッ値が書き込まれ、その結果、遮断信号３の出力が阻止される。逆に、検査結果が期待値と一致しない場合や検査結果が更新されない場合には、ウォッチドッグタイマ回路２９に正規のキーコードが与えられず、カウンタ２９ａにプリセッ値が書き込まれないため、やがて、ウォッチドッグタイマ回路２９により遮断信号３が出力される
このように、エラー検出プログラム４３ｂは、検査結果が期待値と一致した場合には、ウォッチドッグタイマ回路２９に正規のキーコードを与えてカウンタ２９ａに特定値Ｎとは異なるプリセット値を書き込むことにより、遮断信号３が出力されないようにし、検査結果が期待値と一致しない場合には、ウォッチドッグタイマ回路２９に正規のキーコードを与えないことで、遮断信号３が出力されるようにするプログラムである。
【００７９】
以上のようなＥＣＵ１１において、例えば、第１レベルプログラム４１による制御機能に異常が生じた場合には、第２レベルプログラム４２によって遮断信号１が出力され、異常な制御機能を無効にすることができる。
【００８０】
また例えば、第１レベルプログラム４１と第２レベルプログラム４２が同時に異常になるような共通原因故障が発生した場合や、バグを発現した第１レベルプログラム４１が第２レベルプログラム４２を干渉によって侵害した場合には、第３レベルプログラム４３におけるマイコン監視プログラム４３ａと監視ＩＣ２３とが協同して、信頼性を確保する。
【００８１】
つまり、それらの場合には、マイコン監視プログラム４３ａによってマイコン２１から監視ＩＣ２３へ通知データのかたちで出力される検査結果（第２レベルプログラム４２の実行検査を行った結果）が、期待値と一致しなくなり、監視ＩＣ２３が遮断信号２を出力する。そして、その遮断信号２により、第１レベルプログラム４１による制御機能を無効化して、誤った制御を防止することができる。
【００８２】
更に、ＥＣＵ１１において、マイコン２１は、遮断信号３を出力するためのハードウェア回路であって、遮断信号３を出力するための動作が、第１レベルプログラム４１のバグによって阻止されてしまうことが予防されたウォッチドッグタイマ回路２９を備える。前述の通り、ウォッチドッグタイマ回路２９は、正規のキーコードが与えられないと、カウンタ２９ａへのライトアクセスができない。このため、バグを発現した第１レベルプログラム４１が、ウォッチドッグタイマ回路２９に正規のキーコードを与えた上でカウンタ２９ａの値を書き換えてしまうこと（つまり、遮断信号３の出力を阻止してしまうこと）は無いと考えられる。
【００８３】
そして、マイコン２１における第３レベルプログラム４３には、マイコン監視プログラム４３ａによる検査結果が該検査結果の期待値と一致しない場合に、ウォッチドッグタイマ回路２９に遮断信号３を出力させるためのエラー検出プログラム４３ｂが含まれている。
【００８４】
このため、バグを発現した第１レベルプログラム４１が第２レベルプログラム４２を干渉によって侵害する事象（第２レベルプログラム４２が正常に実行されない事象）と、監視ＩＣ２３のハード的な故障（遮断信号２を出力できない故障）とが、同一ドライビングサイクルで発生した場合でも、信頼性を確保することができる。
【００８５】
つまり、その場合において、マイコン２１内のハードウェア回路であるウォッチドッグタイマ回路２９まで故障することは考えられない。そして、その場合には、マイコン２１において、マイコン監視プログラム４３ａによる検査結果が期待値と一致しなくなり、エラー検出プログラム４３ｂ及びウォッチドッグタイマ回路２９により遮断信号３が出力される。よって、その遮断信号３により、誤った制御を防止することができる。
【００８６】
尚、ドライビングサイクルとは、車両が１回走行する期間であり、一般に、ＥＣＵは、車両がイグニッションオンの状態になってからイグニッションオフの状態になるまでの期間として認識する。イグニッションオンの状態とは、車両におけるイグニッション電源のラインにバッテリ電圧が供給される状態であり、一般には、車両のイグニッションスイッチがオンされている状態である。
【００８７】
このように、本実施形態のＥＣＵ１１では、マイコン２１におけるエラー検出プログラム４３ｂ及びウォッチドッグタイマ回路２９により、監視ＩＣ２３と同等の機能を実現しており、制御の信頼性（延いては、制御システムの信頼性）を向上させることができる。本実施形態では、独立したハードウェアの故障が同一ドライビングサイクルで同時に発生しないと考えてよい点に着眼し、監視ＩＣ２３に対してランタイムチェックを実施するのではなく、マイコン２１内に監視ＩＣ２３と同等の機能をソフトウェアとウォッチドッグタイマ回路２９を使って構成している。そして、マイコン２１にて正しい検査結果が得られない場合、もしくは一定期間内に検査結果が更新されない場合は、マイコン２１内のハードウェア回路（この例ではウォッチドッグタイマ回路２９）で遮断信号３が出力されるようにしている。
【００８８】
また、遮断信号３を出力するハードウェア回路として、カウンタ値の書き換えにキーコードが必要なウォッチドッグタイマ回路２９を用いているため、遮断信号３の出力を阻止することについて複雑な手順が必要となり、プログラムのバグに対する堅牢性（いわゆるロバスト性）が高い。
【００８９】
また、マイコン２１内に配置した監視ＩＣ２３と同等の機能は、監視ＩＣ２３とデコンポジションの関係を形成するため、監視ＩＣ２３の背負うＡＳＩＬを軽減することが可能である。よって、例えば、監視ＩＣ２３の代わりに、マイコン２１とは別のサブマイコンを用いた場合、ＡＳＩＬが軽減されることで、そのサブマイコンにおけるＲＯＭ、ＲＡＭ、インストラクション、フローチェックといった高負荷のかかるランタイムチェックを、実施しなくても済むこととなる。例えば、サブマイコンにおける各種チェックを、起動直後や動作停止直前時に実行するだけで良くなる。
【００９０】
次に、ＥＣＵ１１のマイコン２１が有する他の機能について説明する。
マイコン２１のＣＰＵ２５は、図４に示す遮断信号診断処理を、例えば一定時間毎に実行する。図４の遮断信号診断処理は、遮断信号３を出力するマイコン２１の機能が正常か否かを診断するための処理である。また、遮断信号診断処理のプログラムは、例えば、第３レベルプログラム４３に含まれている。
【００９１】
尚、ＥＣＵ１１が搭載される車両では、使用者（一般には運転者）によりイグニッションスイッチ（以下、ＩＧＳＷという）がオンされると、イグニッションオンの状態になり、ＩＧＳＷがオフされると、イグニッションオフの状態（即ち、イグニッション電源のラインにバッテリ電圧が供給されない状態）になる。ＩＧＳＷをオフする操作が、イグニッションオフ操作に相当する。また、ＩＧＳＷがオフされてもマイコン２１における全ての処理が終了するまでは、ＥＣＵ１１に動作用の電源が供給され続けるようになっている。そして、車両の使用者によりＩＧＳＷがオフされると、マイコン２１では、マイコン監視プログラム４３ａによる実行検査は実施されず、その結果、マイコン２１のウォッチドッグタイマ回路２９により遮断信号３が出力されるようになっている。ＩＧＳＷがオフされれば、エンジンへの燃料噴射等が停止するため、遮断信号３が出力されても支障はない。
【００９２】
図４に示すように、ＣＰＵ２５は、遮断信号診断処理を開始すると、Ｓ１１０にて、ＩＧＳＷがオフされたか否かを判定し、ＩＧＳＷがオフされていなければ（ＩＧＳＷがオンであれば）、そのまま当該遮断信号診断処理を終了する。尚、ＩＧＳＷのオン／オフ状態は、ＩＧＳＷのオン／オフ状態を示す入力信号に基づいて判定される。
【００９３】
また、ＣＰＵ２５は、上記Ｓ１１０にて、ＩＧＳＷがオフされたと判定した場合には、Ｓ１２０に進み、ウォッチドッグタイマ回路２９が遮断信号３を出力する予定時刻が経過するまで待つ。例えば、カウンタ２９ａの値が前述のプリセット値から特定値Ｎに達するまでの所要時間よりも長い所定時間だけ待つ。
【００９４】
その後、ＣＰＵ２５は、Ｓ１３０に進み、スロットル位置センサ（ＴＰＳ１）３１からの信号に基づいて、スロットル弁１５の位置が前述の特定位置であるか否かを判定する。そして、ＣＰＵ２５は、スロットル弁１５の位置が特定位置であると判定した場合には、Ｓ１４０に進み、遮断信号３の診断結果を「正常」に設定した後、当該遮断信号診断処理を終了する。
【００９５】
また、ＣＰＵ２５は、上記Ｓ１３０にて、スロットル弁１５の位置が特定位置ではないと判定した場合には、遮断信号３を出力する機能が異常であると判定して、Ｓ１５０に進み、遮断信号３の診断結果を「異常」に設定する。そして、その後、当該遮断信号診断処理を終了する。
【００９６】
以上のような遮断信号診断処理により、遮断信号３を出力する機能の診断が、１ドライビングサイクルに１回は実施されることとなる。そして、最小限の頻度で潜在的な故障を検出することができる。
【００９７】
一方、マイコン２１において、マイコン監視プログラム４３ａは、エラー検出プログラム４３ｂについても、第２レベルプログラム４２に対する実行検査と同様の実行検査を行い、その検査結果も監視ＩＣ２３に送る。そして、監視ＩＣ２３は、エラー検出プログラム４３ｂについても、マイコン２１からの検査結果と、それの期待値とが一致しているか否かを判定し、不一致ならば、フェールセーフの処置として例えば遮断信号２を出力する。このため、エラー検出プログラム４３ｂの実行異常に関しても信頼性を向上させることができる。
【００９８】
［第２実施形態］
次に、第２実施形態のＥＣＵについて説明するが、ＥＣＵの符号としては、第１実施形態と同じ“１１”を用いる。また、第１実施形態と同様の構成要素や処理についても、第１実施形態と同じ符号を用いる。そして、このことは、後述する他の実施形態についても同様である。
【００９９】
第２実施形態のＥＣＵ１１は、第１実施形態のＥＣＵ１１と比較すると、マイコン２１において、遮断信号３を出力するためのハードウェア回路が、図５に示すコンペアマッチタイマ回路６１である点と、エラー検出プログラム４３ｂが図６の処理を行うためのプログラムである点とが、異なる。
【０１００】
図５に示すように、コンペアマッチタイマ回路６１は、マイコン２１内のクロックにより一定時間毎にカウントアップするコンペアマッチカウンタ６３と、コンペアマッチレジスタ６５と、コンペアマッチカウンタ６３の値とコンペアマッチレジスタ６５の値とを比較し、両値が一致すると、マイコン２１における所定の出力ポート２８ａ（入出力ポート２８の何れか）から遮断信号３を出力させる比較器６７と、を備える。
【０１０１】
また、コンペアマッチレジスタ６５は、第１レベルプログラム４１によってライトアクセスされないようになっている。このことにより、コンペアマッチタイマ回路６１は、遮断信号３を出力するための動作が、第１レベルプログラム４１のバグによって阻止されてしまうことが予防されている。例えば、プログラムの設計段階において、第１レベルプログラム４１の中には、コンペアマッチレジスタ６５へのライトアクセスに関する命令が配置されないようにしている。
【０１０２】
そして、第２実施形態におけるエラー検出プログラム４３ｂは、マイコン監視プログラム４３ａによる検査結果が該検査結果の期待値と一致しない場合に、コンペアマッチタイマ回路６１に遮断信号３を出力させるためのプログラムである。
【０１０３】
エラー検出プログラム４３ｂは、マイコン監視プログラム４３ａの送信データ合成部５９によって前述の通知データ０及び通知データ１が生成される毎に起動される。このことについては、第１実施形態と同じである。
【０１０４】
そして、ＣＰＵ２５は、エラー検出プログラム４３ｂを実行することで、図６の処理を行う。
図６に示すように、ＣＰＵ２５は、エラー検出プログラム４３ｂの実行を開始すると、まずＳ２１０にて、異常の有無を判定する。
【０１０５】
具体的には、送信データ合成部５９によって生成された通知データ０，１と、それらの期待値とを比較し、通知データ０，１が期待値と一致していれば正常、通知データ０，１が期待値と一致していなければ異常あり、と判定する。他の例として、例えば、第１実施形態と同様に、式１の演算によってキーコードを算出し、その算出結果が正規のキーコードである［０ｘ５Ａ］と一致していれば正常、一致していなければ異常あり、と判定するようになっていても良い。つまり、Ｓ２１０の処理は、マイコン監視プログラム４３ａによる検査結果が、それの期待値と一致しているか否かを判別できれば、どのような処理でも良い。
【０１０６】
ＣＰＵ２５は、Ｓ２１０にて、正常（異常なし）と判定した場合には、Ｓ２２０に進み、コンペアマッチカウンタ６３の値（現在値）に対して故障判定時間に相当する値を加えた値を、コンペアマッチレジスタ６５に書き込む。このＳ２２０の処理は、現時点から故障判定時間が経過するまでは遮断信号３が出力されないようにするための処理である。また、故障判定時間は、テスト周期（当該エラー検出プログラム４３ｂの実行周期でもある）よりも長い時間に設定されている。そして、ＣＰＵ２５は、Ｓ２２０の処理を行った後、エラー検出プログラム４３ｂの実行を終了する。
【０１０７】
また、ＣＰＵ２５は、Ｓ２１０にて、異常ありと判定した場合には、そのまま何もせずに（つまり、コンペアマッチレジスタ６５への書き込みを行わずに）、エラー検出プログラム４３ｂの実行を終了する。この場合には、やがてコンペアマッチカウンタ６３の値がコンペアマッチレジスタ６５の値と一致して、マイコン２１から遮断信号３が出力されることとなる。
【０１０８】
以上のような第２実施形態のＥＣＵ１１によっても、監視ＩＣ２３と同等の機能が、マイコン２１におけるエラー検出プログラム４３ｂ及びコンペアマッチタイマ回路６１によって実現され、第１実施形態のＥＣＵ１１と同様の効果を得ることができる。
【０１０９】
尚、第２実施形態において、ＣＰＵ２５は、図４の遮断信号診断処理におけるＳ１２０では、コンペアマッチタイマ回路６１が遮断信号３を出力する予定時刻が経過するまで待てば良い。具体的には、前述の故障判定時間よりも長い所定時間だけ待てば良い。
【０１１０】
［第３実施形態］
マイコン２１が、例えば、出力ポートの出力値（出力すべき値）が書き込まれる出力用レジスタとして、特定のプログラムからでしかライトアクセスすることができないメモリ保護機能を有した出力用レジスタを備えていれば、その出力用レジスタを、遮断信号３を出力するためのハードウェア回路として使用しても良い。尚、特定のプログラムかそうでないプログラムかは、例えばＲＯＭ２６における格納場所によって区別される。
【０１１１】
その場合、メモリ保護機能を有した出力用レジスタは、第１レベルプログラム４１からはアクセス不能で、エラー検出プログラム４３ｂからはアクセス可能にしておく。
そして、エラー検出プログラム４３ｂは、図６の処理を以下のように変更した処理が、ＣＰＵ５によって行われるように構成すれば良い。
【０１１２】
即ち、ＣＰＵ２５は、Ｓ２１０で正常（異常なし）と判定した場合には、そのままエラー検出プログラム４３ｂの実行を終了する。また、ＣＰＵ２５は、Ｓ２１０で異常ありと判定した場合には、メモリ保護機能を有した出力用レジスタに遮断信号３の出力を意味する方の値（例えば１）を書き込んで、その出力用レジスタに対応する出力ポートから遮断信号３を出力させる。そして、その後、エラー検出プログラム４３ｂの実行を終了する。
【０１１３】
このように構成しても、第１、第２実施形態のＥＣＵ１１と同様の効果が得られる。
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されることなく、種々の形態を採り得る。また、前述の数値も一例であり他の値でも良い。
【０１１４】
例えば、制御対象は、スロットル弁１５に限らず、燃料噴射弁や点火装置等でも良い。また、モニタリングモジュールとしては、マイコン２１とは別のマイコンでも良い。
また、上記実施形態における１つの構成要素が有する機能を複数の構成要素として分散させたり、複数の構成要素が有する機能を１つの構成要素に統合させたりしてもよい。また、上記実施形態の構成の少なくとも一部を、同様の機能を有する公知の構成に置き換えてもよい。また、上記実施形態の構成の一部を、課題を解決できる限りにおいて省略してもよい。なお、特許請求の範囲に記載した文言によって特定される技術思想に含まれるあらゆる態様が本発明の実施形態である。また、上述したＥＣＵの他、当該ＥＣＵを構成要素とするシステム、当該ＥＣＵとしてコンピュータを機能させるためのプログラム、このプログラムを記録した媒体、制御対象の制御方法など、種々の形態で本発明を実現することもできる。
【符号の説明】
【０１１５】
１１…ＥＣＵ（車両用電子制御装置）、１５…スロットル弁、２１…マイコン、２３…監視ＩＣ、２５…ＣＰＵ、２９…ウォッチドッグタイマ回路、４１…第１レベルプログラム、４２…第２レベルプログラム、４３…第３レベルプログラム、４３ａ…マイコン監視プログラム（検査用プログラム）、４３ｂ…エラー検出プログラム、６１…コンペアマッチタイマ回路
【図１】
0005967059.tif 000002
【図２】
0005967059.tif 000003
【図３】
0005967059.tif 000004
【図４】
0005967059.tif 000005
【図５】
0005967059.tif 000006
【図６】
0005967059.tif 000007