(57)【特許請求の範囲】
【請求項１】
同一機能を提供するグループごとにハードウエア資源に故障が発生しているか否かを診断する診断回路及びプロセッサが組み込まれたマイクロコンピュータを備えた電子制御装置であって、
前記プロセッサが、前記診断回路により前記ハードウエア資源に故障が発生していると診断したとき、ソフトウエアによる診断機能を実行して、前記グループにおける前記ハードウエア資源の故障部位を特定し、前記故障部位により提供される機能を、他のハードウエア資源で代替するように構成された、
ことを特徴とする電子制御装置。
【請求項２】
前記プロセッサが、前記診断回路により故障が発生していると診断したハードウエア資源が未使用であるとき、当該ハードウエア資源により提供される機能を、他のハードウエア資源で代替することを禁止するように構成された、
ことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
同一機能を提供するグループごとにハードウエア資源に故障が発生しているか否かを診断する診断回路を内蔵したマイクロコンピュータが、
前記診断回路により前記ハードウエア資源に故障が発生していると診断したとき、ソフトウエアによる診断機能を実行して、前記グループにおける前記ハードウエア資源の故障部位を特定し、前記故障部位により提供される機能を、他のハードウエア資源で代替する、
ことを特徴とする電子制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置及び電子制御方法に関する。
【背景技術】
【０００２】
電子制御装置のマイクロコンピュータには、タイマ，入出力回路，Ａ／Ｄコンバータなどのハードウエア資源を診断する目的で、特開２０１２−１８１５６４号公報（特許文献１）に記載されるように、ＢＩＳＴ（Built In Self Test）が組み込まれているものがある。ＢＩＳＴは、ＬＳＩ（Large Scale Integration）チップにＬＳＩテスタの機能の一部を組み込んだものであって、テストパターンを発生する回路と、テスト結果と期待値とを照合する回路と、を有する。そして、ＢＩＳＴにおいては、テストパターンをハードウエア資源に入力し、ハードウエア資源から出力されるテスト結果と期待値とを照合することで、そのハードウエア資源に故障が発生しているか否かを診断する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−１８１５６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＢＩＳＴによってハードウエア資源に故障が発生していると診断された場合、機能安全規格ＩＳＯ２６２６２の観点から、制御不能の要因となるハードウエア資源の使用を禁止することが望ましい。しかし、重要なハードウエア資源の使用を禁止すると、制御対象システムを継続して制御できなくなってしまう。
【０００５】
そこで、本発明は、ハードウエア資源に故障が発生しても、制御対象システムを継続して制御できる、電子制御装置及び電子制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
電子制御装置は、同一機能を提供するグループごとにハードウエア資源に故障が発生しているか否かを診断する診断回路及びプロセッサが組み込まれたマイクロコンピュータを備える。そして、電子制御装置のプロセッサは、診断回路によりハードウエア資源に故障が発生していると診断したとき、ソフトウエアによる診断機能を実行して、グループにおけるハードウエア資源の故障部位を特定し、故障部位により提供される機能を、他のハードウエア資源で代替する。
【０００７】
電子制御方法では、同一機能を提供するグループごとにハードウエア資源に故障が発生しているか否かを診断する診断回路を内蔵したマイクロコンピュータが、診断回路によりハードウエア資源に故障が発生していると診断したとき、ソフトウエアによる診断機能を実行して、グループにおけるハードウエア資源の故障部位を特定し、故障部位により提供される機能を、他のハードウエア資源で代替する。
【発明の効果】
【０００８】
本発明によれば、ハードウエア資源に故障が発生しても、制御対象システムを継続して制御することができる。
【図面の簡単な説明】
【０００９】
【図１】自動車に搭載された内燃機関の一例を示すシステム図である。
【図２】電子回路基板の一例を示すブロック図である。
【図３】ＢＩＳＴの一例を示すブロック図である。
【図４】タイマの一例を示すブロック図である。
【図５】初期化処理の一例を示すフローチャートである。
【図６】タイマの故障部位を特定する方法の説明図である。
【図７】タイマの故障部位特定処理の一例を示すフローチャートである。
【図８】入出力回路の故障部位を特定する方法の説明図である。
【図９】入出力回路の故障部位を特定する他の方法の説明図である。
【図１０】入出力回路の故障部位特定処理の一例を示すフローチャートである。
【図１１】不揮発性メモリの故障部位を特定する方法の説明図である。
【図１２】不揮発性メモリの故障部位特定処理の一例を示すフローチャートである。
【図１３】揮発性メモリの故障部位を特定する方法の説明図である。
【図１４】揮発性メモリの故障部位特定処理の一例を示すフローチャートである。
【図１５】タイマ機能の説明図である。
【図１６】タイマを代替する方法の説明図である。
【図１７】タイマの代替処理の概要を示す説明図である。
【図１８】揮発性メモリを代替する方法の説明図である。
【図１９】演算装置を代替する方法の説明図である。
【発明を実施するための形態】
【００１０】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図１は、自動車に搭載された内燃機関の一例を示す。
【００１１】
内燃機関１００の吸気通路１１０には、吸気流通方向に沿って、空気中の埃などを濾過するエアクリーナ１２０、電子制御スロットルチャンバ１３０、図示しない動弁機構により開閉する吸気バルブ１４０がこの順番で配設されている。電子制御スロットルチャンバ１３０と吸気バルブ１４０との間に位置する吸気通路１１０には、吸気バルブ１４０の傘部に向けて燃料を噴射する、電子制御式の燃料噴射弁１５０が取り付けられている。
【００１２】
電子制御スロットルチャンバ１３０は、吸気流量を調整するスロットルバルブ１３２と、スロットルバルブ１３２を回動させるステッピングモータなどのアクチュエータ１３４と、スロットルバルブ１３２の開度（スロットル開度）を検出するポテンショメータなどのスロットルポジションセンサ１３６と、を有する。そして、電子制御スロットルチャンバ１３０は、外部からの開度信号に応じて、アクチュエータ１３４によってスロットルバルブ１３２を開閉する。
【００１３】
一方、内燃機関１００の排気通路１６０には、排気流通方向に沿って、排気バルブ１７０、排気中のＣＯ（一酸化炭素），ＨＣ（炭化水素）及びＮＯｘ（窒素酸化物）を同時に還元浄化する三元触媒コンバータ１８０、排気音を低減するマフラー１９０がこの順番で配設されている。
【００１４】
また、内燃機関１００のシリンダヘッド１０２には、燃焼室１０４を臨むように、ディストリビュータ２００からの点火電流に応答して、燃料と空気との混合気を火花点火する点火プラグ２１０が取り付けられている。なお、ディストリビュータ２００は、内燃機関１００の各気筒に配設された点火プラグ２１０に対して、運転状態に応じたタイミングで点火電流を分配する。
【００１５】
内燃機関１００の所定箇所には、内燃機関１００の回転速度を検出する回転速度センサ２２０と、内燃機関１００の負荷を検出する負荷センサ２３０と、が取り付けられている。ここで、内燃機関１００の負荷としては、例えば、吸気流量、吸気圧力、過給圧力など、内燃機関１００の出力トルクと密接に関連する状態量を使用することができる。
【００１６】
車両の運転者が操作するアクセルペダル２４０には、アクセルペダル２４０の踏み込み量（アクセル操作量）を検出するアクセルセンサ２５０が併設されている。ここで、アクセルセンサ２５０としては、例えば、ポテンショメータを使用することができる。
【００１７】
スロットルポジションセンサ１３６、回転速度センサ２２０、負荷センサ２３０及びアクセルセンサ２５０の各出力信号は、電子制御装置３００に入力される。
【００１８】
電子制御装置３００は、各種の電子部品が実装された電子回路基板３２０を内蔵している。電子回路基板３２０には、図２に示すように、マイクロコンピュータ３４０が実装されている。マイクロコンピュータ３４０は、プロセッサの一例として挙げられるＣＰＵ（Central Processing Unit）３４２と、揮発性メモリの一例として挙げられるＲＡＭ（Random Access Memory）３４４と、不揮発性メモリの一例として挙げられるＲＯＭ（Read Only Memory）３４６と、時間を計時するタイマ３４８と、入出力回路３５０と、Ａ／Ｄコンバータ３５２と、これらを相互に接続するバス３５４と、を一体的に組み込んでいる。要するに、マイクロコンピュータ３４０は、１つのチップに、ＣＰＵ３４２、ＲＡＭ３４４、ＲＯＭ３４６、タイマ３４８、入出力回路３５０、Ａ／Ｄコンバータ３５２及びバス３５４を集積することで製造されている。
【００１９】
そして、電子制御装置３００は、ＲＯＭ３４６に格納された制御プログラムを実行することで、スロットル開度，回転速度，負荷，アクセル操作量などに応じて、電子制御スロットルチャンバ１３０，燃料噴射弁１５０及びディストリビュータ２００を夫々電子制御する。
【００２０】
即ち、電子制御装置３００は、内燃機関１００の回転速度及び負荷に応じた燃料噴射量及び燃料噴射時期を求め、クランク角度が燃料噴射時期になったときに、燃料噴射弁１５０に燃料噴射量に応じた作動信号を出力する。また、電子制御装置３００は、内燃機関１００の回転速度及び負荷に応じた点火時期を求め、クランク角度が点火時期になったときに、ディストリビュータ２００に作動信号を出力する。さらに、電子制御装置３００は、アクセル操作量及びその変化量に応じた目標スロットル開度を求め、目標スロットル開度とスロットル開度との偏差に応じて、電子制御スロットルチャンバ１３０のアクチュエータ１３４をフィードバック制御する。
【００２１】
また、マイクロコンピュータ３４０には、そのハードウエア資源、例えば、ＣＰＵ３４２、ＲＡＭ３４４、ＲＯＭ３４６、タイマ３４８、入出力回路３５０及びＡ／Ｄコンバータ３５２などを診断する診断回路の一例として挙げられる、ＢＩＳＴ３６０が組み込まれている。ＢＩＳＴ３６０は、図３に示すように、被診断回路（ハードウエア資源）ＨＷに入力するテストパターンを発生する発生回路３６２と、被診断回路ＨＷの出力と期待値とを照合して故障を診断する照合回路３６４と、を有する。
【００２２】
ＢＩＳＴ３６０は、所定の機能を提供するグループごとに、ハードウエア資源に故障が発生しているか否かを診断する。時間を計時するタイマ３４８は、例えば、図４に示すように、キャプチャ、コンペア及びＰＷＭ（Pulse Width Modulation）出力を有する、複数のタイマＡ〜Ｃを含んでいる。しかし、ＢＩＳＴ３６０は、時間を計時するタイマという括りで、そのハードウエア資源に故障が発生しているか否かを診断し、個別のタイマＡ〜Ｃについては故障の有無を診断できない。
【００２３】
本実施形態では、マイクロコンピュータ３４０のＣＰＵ３４２が、ＢＩＳＴ３６０によりハードウエア資源に故障が発生していると診断したとき、故障が発生しているハードウエア資源により提供される機能を、他のハードウエア資源で代替するように構成されている。
【００２４】
図５は、電子制御装置３００に電源が投入されたことを契機として、マイクロコンピュータ３４０のＣＰＵ３４２が、ＲＯＭ３４６に格納された制御プログラムに従って実行する、初期化処理の一例を示す。
【００２５】
ステップ１（図では「Ｓ１」と略記する。以下同様。）では、マイクロコンピュータ３４０のＣＰＵ３４２が、マイクロコンピュータ３４０に組み込まれたＢＩＳＴ３６０を実行する。即ち、マイクロコンピュータ３４０のＣＰＵ３４２は、ＢＩＳＴ３６０の照合回路３６４の出力信号に基づいて、ハードウエア資源に故障が発生しているか否かを診断する。ここで、ＢＩＳＴ３６０は、前述したように、所定の機能を提供するグループごと、具体的には、ＣＰＵ３４２、ＲＡＭ３４４、ＲＯＭ３４６、タイマ３４８、入出力回路３５０及びＡ／Ｄコンバータ３５２に故障が発生しているか否かを診断する。
【００２６】
ステップ２では、マイクロコンピュータ３４０のＣＰＵ３４２が、ＢＩＳＴ３６０の実行結果に基づいて、マイクロコンピュータ３４０のいずれかのハードウエア資源に故障が発生しているか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、すべてのハードウエア資源が正常であると判定すれば（Ｙｅｓ）、処理をステップ５へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、いずれかのハードウエア資源に故障が発生していると判定すれば（Ｎｏ）、処理をステップ３へと進める。
【００２７】
ステップ３では、故障が発生したすべてのハードウエア資源に関して、マイクロコンピュータ３４０のＣＰＵ３４２が、ソフトウエアによる診断機能を夫々実行し、ハードウエア資源の故障部位（例えば、タイマ３４８におけるタイマＣなど）を特定する。なお、診断機能の詳細については後述する。
【００２８】
ステップ４では、マイクロコンピュータ３４０のＣＰＵ３４２が、例えば、ＲＯＭ３４６に格納された制御構成情報を参照することで、ハードウエア資源の故障部位が未使用であるか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、故障部位が未使用であると判定すれば（Ｙｅｓ）、処理をステップ５へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、故障部位が使用されていると判定すれば（Ｎｏ）、処理をステップ６へと進める。
【００２９】
ステップ５では、マイクロコンピュータ３４０のＣＰＵ３４２が、マイクロコンピュータ３４０のハードウエア資源に故障が発生していない、通常時の初期化処理を実行する。ここで、通常時の初期化処理としては、例えば、制御変数をリセットする、ＲＯＭ３４６から各種の学習値を読み込むなどを挙げることができる。
【００３０】
ステップ６では、マイクロコンピュータ３４０のＣＰＵ３４２が、マイクロコンピュータ３４０のハードウエア資源に故障が発生している、故障時の初期化処理を実行する。ここで、故障時の処理化処理としては、その詳細を後述するように、故障が発生しているハードウエア資源により提供される機能を、他のハードウエア資源で代替する、代替処理の準備などを挙げることができる。
【００３１】
かかる電子制御装置３００によれば、電源が投入されたことを契機として、マイクロコンピュータ３４０のＣＰＵ３４２が、ＢＩＳＴ３６０を実行して、ハードウエア資源に故障が発生しているか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、ハードウエア資源に故障が発生していないと判定すれば、通常時の初期化処理を実行する。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、ハードウエア資源に故障が発生していると判定すれば、ソフトウエアによる診断機能によって故障部位を特定する。マイクロコンピュータ３４０のＣＰＵ３４２は、故障部位が未使用であれば、制御対象システムへの影響がないため、通常時の初期化処理を実行する。また、マイクロコンピュータ３４０のＣＰＵ３４２は、故障部位が使用されていれば、制御対象システムへの影響を軽減すべく、故障時の初期化処理を実行する。
【００３２】
要するに、マイクロコンピュータ３４０のＣＰＵ３４２は、ハードウエア資源の故障部位を特定したとき、その故障部位により提供される機能についてのみ、故障時の初期化処理を実行する。また、マイクロコンピュータ３４０のＣＰＵ３４２は、ハードウエア資源の故障部位が未使用であるとき、その故障部位により提供される機能の代替を禁止する。
【００３３】
次に、診断機能及び代替処理の詳細について説明する。
［診断機能］
（１）タイマの故障部位特定
ＢＩＳＴ３６０は、タイマ機能を提供するタイマ３４８に故障が発生しているか否かを診断することはできるが、複数のタイマのどれに故障が発生しているかを特定することができない。そこで、図６に示すように、パルスを出力する時間間隔が異なる３つ以上（図では、３つ）のタイマＡ，Ｃ及びＥを使用し、マイクロコンピュータ３４０のＣＰＵ３４２が、所定時間に亘ってタイマＡ，Ｃ及びＥから出力されるパルスを夫々カウントする。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、タイマＡ，Ｃ及びＥの各カウント値から時間を求め、これを相互に比較することで、どのタイマに故障が発生しているかを特定できる。
【００３４】
図７は、タイマの故障部位を特定する処理の一例を示す。
ステップ１１では、マイクロコンピュータ３４０のＣＰＵ３４２が、所定時間に亘ってタイマＡ，Ｃ及びＥから出力されるパルスを夫々カウントし、このカウント値と各パルスに割り付けられた時間間隔とを乗算することで、タイマＡ，Ｃ及びＥによる計時結果を取得する。
【００３５】
ステップ１２では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＡの計時結果とタイマＣとの計時結果とを比較し、その偏差が所定値以内であるか否かを判定する。ここで、所定値は、２つのタイマのいずれかが故障しているか否かを判定するための閾値であって、例えば、タイマの精度、計算誤差などに応じて適宜設定することができる。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、計時結果の偏差が所定値より大きければ、タイマＡ及びＣの一方が故障していると判定し（ＮＧ）、処理をステップ１３へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、計時結果の偏差が所定値以内であれば、タイマＡ及びＣは正常であると判定し（ＯＫ）、処理をステップ１６へと進める。
【００３６】
ステップ１３では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＡの計時結果とタイマＥの計時結果とを比較し、その偏差が所定値以内であるか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、計時結果の偏差が所定値より大きいと判定すれば（ＮＧ）、処理をステップ１４へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、計時結果の偏差が所定値以下であると判定すれば（ＯＫ）、処理をステップ１５へと進める。
【００３７】
ステップ１４では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＡに故障が発生していると特定する。
ステップ１５では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＣに故障が発生していると特定する。
【００３８】
ステップ１６では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＡの計時結果とタイマＥの計時結果とを比較し、その偏差が所定値以内であるか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、計時結果の偏差が所定値より大きいと判定すれば（ＮＧ）、処理をステップ１７へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、計時結果の偏差が所定値以下であると判定すれば（ＯＫ）、処理をステップ１８へと進める。
【００３９】
ステップ１７では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＥに故障が発生していると特定する。
ステップ１８では、マイクロコンピュータ３４０のＣＰＵ３４２が、タイマＡ，Ｃ及びＥに故障が発生していないと特定する。即ち、マイクロコンピュータ３４０のＣＰＵ３４２は、例えば、ノイズ重畳などによって、ＢＩＳＴ３６０が誤診断したと判断する。
【００４０】
（２）入出力回路の故障部位特定
マイクロコンピュータ３４０は、信号を入出力する複数の端子を備えている。しかし、ＢＩＳＴ３６０は、入出力機能を提供する入出力回路３５０に故障が発生しているかを診断することができるが、複数の端子のうち、どの端子に割り付けられた入出力機能に故障が発生しているかを特定することができない。そこで、マイクロコンピュータ３４０のＣＰＵ３４２は、図８に示すように、入出力回路３５０に内蔵された、ＯＮ／ＯＦＦ指令レジスタ３５０Ａの指令値とその出力をモニタするレベルモニタレジスタ３５０Ｂの出力値とを比較することで、故障が発生している端子を特定できる。
【００４１】
なお、マイクロコンピュータ３４０のＣＰＵ３４２は、図９に示すように、電子回路基板３２０の入力端子を利用して出力をモニタするレベルモニタレジスタ３５０Ｂを使用することもできる。また、入出力機能の故障部位特定は、マイクロコンピュータ３４０のすべての端子ではなく、制御対象システムに重大な影響を及ぼす端子のみとすることもできる。
【００４２】
図１０は、タイマの故障部位を特定する処理の一例を示す。
ステップ２１では、マイクロコンピュータ３４０のＣＰＵ３４２が、ＯＮ／ＯＦＦ指令レジスタ３５０Ａの指令値とレベルモニタレジスタ３５０Ｂの出力値とを比較し、指令通りの出力となっているか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、指令通りの出力となっていないと判定すれば（ＮＧ）、処理をステップ２２へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、指令通りの出力となっていると判定すれば（ＯＫ）、処理をステップ２３へと進める。
【００４３】
ステップ２２では、マイクロコンピュータ３４０のＣＰＵ３４２が、診断対象の端子に故障が発生していると特定する。
ステップ２３では、マイクロコンピュータ３４０のＣＰＵ３４２が、診断対象の端子に故障が発生していないと判定する。
【００４４】
（３）不揮発性メモリの故障部位特定
マイクロコンピュータ３４０のＲＯＭ３４６には、図１１に示すように、制御対象システムを制御するタスクのプログラム、例えば、タスク１を格納するタスク格納領域１と、タスク２を格納するタスク格納領域２と、が確保されている。また、ＲＯＭ３４６には、タスク格納領域１及び２に格納されたタスク１及び２に夫々関連付けて、そのサム値（基準値）を格納するサム値格納領域１及び２が確保され、そこにタスク１及び２のサム値が格納されている。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、タスク格納領域１及び２に格納されているタスク１及び２のサム値を計算し、これとサム値格納領域１及び２に格納されているサム値とを比較することで、ＲＯＭ３４６の記憶領域のうち、データを正常に記憶できない故障部位を特定できる。なお、ＲＯＭ３４６の故障部位は、サム値に代えて、例えば、パリティ値などを使用して特定することもできる。
【００４５】
図１２は、不揮発性メモリの故障部位を特定する処理の一例を示す。
ステップ３１では、マイクロコンピュータ３４０のＣＰＵ３４２が、診断対象となるタスク格納領域に格納されているデータのサム値を計算する。
【００４６】
ステップ３２では、マイクロコンピュータ３４０のＣＰＵ３４２が、タスク格納領域のサム値（計算値）とサム値格納領域のサム値（基準値）とを比較し、両者が一致しているか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、計算値と基準値とが一致していないと判定すれば（ＮＧ）、処理をステップ３３へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、計算値と基準値とが一致していると判定すれば（ＯＫ）、処理をステップ３４へと進める。
【００４７】
ステップ３３では、マイクロコンピュータ３４０のＣＰＵ３４２が、診断対象のタスク格納領域に故障が発生していると特定する。
ステップ３４では、マイクロコンピュータ３４０のＣＰＵ３４２が、診断対象のタスク格納領域に故障が発生していないと特定する。
【００４８】
（４）揮発性メモリの故障部位特定
マイクロコンピュータ３４０のＲＡＭ３４４の故障部位を特定するために、ＲＡＭ３４４のアドレスを指し示すポインタを準備する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、図１３に示すように、ポインタが指し示すアドレスにテストデータを書き込み（手順１）、そこからテストデータを読み出す（手順２）。また、マイクロコンピュータ３４０のＣＰＵ３４２は、ＲＡＭ３４４に書き込んだテストデータとＲＡＭ３４４から読み出したテストデータとを比較し、両者が一致しているか否かを介して、ＲＡＭ３４４に故障が発生しているか否かを判定する（手順３）。その後、マイクロコンピュータ３４０のＣＰＵ３４２は、ポインタを更新する（手順４）。このように、マイクロコンピュータ３４０のＣＰＵ３４２は、ＲＡＭ３４４の先頭アドレスから最終アドレスまで、上記処理を繰り返し実行することで、どのアドレスに故障が発生しているかを特定できる。
【００４９】
図１４は、揮発性メモリの故障部位特定を特定する処理の一例を示す。
ステップ４１では、マイクロコンピュータ３４０のＣＰＵ３４２が、ポインタにＲＡＭ３４４の先頭アドレスを設定する。
【００５０】
ステップ４２では、マイクロコンピュータ３４０のＣＰＵ３４２が、ポインタが指し示すアドレスに、テストデータを書き込む。
ステップ４３では、マイクロコンピュータ３４０のＣＰＵ３４２が、ポインタが指し示すアドレスから、テストデータを読み出す。
【００５１】
ステップ４４では、マイクロコンピュータ３４０のＣＰＵ３４２が、ＲＡＭ３４４に書き込んだテストデータ（書込み値）とＲＡＭ３４４から読み出したテストデータ（読出し値）とを比較し、両者が一致しているか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、書込み値と読出し値とが一致していると判定すれば（ＯＫ）、処理をステップ４６へと進める。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、書込み値と読出し値とが一致していないと判定すれば（ＮＧ）、処理をステップ４５へと進める。
【００５２】
ステップ４５では、マイクロコンピュータ３４０のＣＰＵ３４２が、ポインタが指し示すアドレスに、例えば、素子固着などの故障が発生していると判定する。その後、マイクロコンピュータ３４０のＣＰＵ３４２は、処理をステップ４６へと進める。
【００５３】
ステップ４６では、マイクロコンピュータ３４０のＣＰＵ３４２が、ポインタがＲＡＭ３４４の最終アドレスを指し示しているか、要するに、ＲＡＭ３４４のすべての領域を診断したか否かを判定する。そして、マイクロコンピュータ３４０のＣＰＵ３４２は、ポインタがＲＡＭ３４４の最終アドレスを指し示していると判定すれば（Ｙｅｓ）、処理を終了させる。一方、マイクロコンピュータ３４０のＣＰＵ３４２は、ポインタがＲＡＭ３４４の最終アドレスを指し示していないと判定すれば（Ｎｏ）、処理をステップ４７へと進める。
【００５４】
ステップ４７では、マイクロコンピュータ３４０のＣＰＵ３４２が、ポインタを更新、要するに、ポインタがテストデータに対応したＲＡＭ３４４の次のアドレスを指し示すようにする。その後、マイクロコンピュータ３４０のＣＰＵ３４２は、処理をステップ４２へと戻す。
【００５５】
なお、他のハードウエア資源、即ち、ＣＰＵ３４２及びＡ／Ｄコンバータ３５２に関しては、例えば、所定のデータを入力した場合の出力データとその期待値とを比較することで、故障が発生しているか否かを診断することができる。また、マイクロコンピュータ３４０のハードウエア資源は、ＣＰＵ３４２、ＲＡＭ３４４、ＲＯＭ３４６、タイマ３４８、入出力回路３５０及びＡ／Ｄコンバータ３５２に限らず、他の機能を提供する要素も含むことができる。
【００５６】
［代替処理］
（１）タイマ
内燃機関１００の点火制御では、タイマ３４８は、図１５に示すように、コンペアマッチを利用して、所定のタイミングになったときにＯＮ信号を出力している。このタイマ機能を代替するため、マイクロコンピュータ３４０のＣＰＵ３４２は、図１６に示すように、内燃機関１００の運転状態に応じたタイミングで、入出力回路３５０のＯＮ／ＯＦＦ指令レジスタ３５０Ａに０又は１を書き込む。入出力回路３５０のＯＮ／ＯＦＦ指令レジスタ３５０Ａに１が書き込まれると、その出力信号がＯＮとなり、タイマ３４８と略同等の機能を発揮することができる。なお、入出力回路３５０のＯＮ／ＯＦＦ指令レジスタ３５０Ａに０又は１を書き込んだ場合、その出力が変化するまでに多少の時間を要するが、タイマ機能の代替処理としては支障がない程度に抑えることができる。
【００５７】
このようにすれば、図１７に示すように、例えば、タイマ３４８のタイマＣに故障が発生すると、タイマＣの機能を停止し、入出力回路３５０から代替信号たる出力信号Ｃ’が出力される。このため、タイマ３４８のすべてのタイマ機能が停止して、例えば、内燃機関１００の点火制御が実行できなくなることが回避される。このとき、点火制御に若干の遅れが生じるが、少なくともリンプホーム制御を確保できる程度の制御性は確保することができる。なお、マイクロコンピュータ３４０の所定の端子が、選択可能な複数の機能を提供するマルチファンクション化されている場合には、この端子の機能を所望の機能に切り替えてもよい。
【００５８】
（２）揮発性メモリ
マイクロコンピュータ３４０のＲＡＭ３４４は、図１８に示すように、領域Ａ，Ｂ，・・・及び予約領域に論理的に分割されている。そして、例えば、領域Ｂに故障が発生すると、マイクロコンピュータ３４０のＣＰＵ３４２は、領域Ｂを使用不可にすると共に、予約領域を領域Ｂの代替領域Ｂ’として使用すべく、例えば、領域Ｂをアクセスするアドレスをオフセットする。
【００５９】
このようにすれば、ＲＡＭ３４４の一部に故障が発生すると、その領域の使用が禁止されると共に、その領域の代わりに予約領域が使用される。このため、故障が発生した領域を使用しないことから機能安全を確保しつつ、正常時と略同等の制御を実行することができる。
【００６０】
（３）演算装置（ＣＰＵ）
マイクロコンピュータ３４０のＣＰＵ３４２が、図１９に示すように、ＣＰＵ１及び２を備えたマルチコアプロセッサである場合を考える。ＣＰＵ１及び２は、論理演算、加算及び減算を行う算術論理演算装置ＡＬＵ（Arithmetic Logic Unit）と、浮動小数点演算を専門に行う浮動小数点演算装置ＦＰＵ（Floating Point Unit）と、を有する。ＣＰＵ１において、タスク１−Ｂを実行していたＦＰＵに故障が発生すると、ＣＰＵ１のＦＰＵで実行していたタスク１−Ｂを、ＣＰＵ２のＦＰＵに移管して実行する。
【００６１】
このようにすれば、ＣＰＵ３４２の一部、具体的には、ＡＬＵ、ＦＰＵに故障が発生しても、ＣＰＵ３４２がフェイルセーフ処理に移行することがなく、従来と同等な制御性を確保することができる。
【００６２】
従って、電子制御装置３００のハードウエア資源に故障が発生しても、故障が発生しているハードウエア資源により提供される機能が他のハードウエア資源で代替されるため、制御対象システムを継続して制御することができる。
【００６３】
ここで、前記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
【００６４】
（Ａ）前記ハードウエア資源が、少なくとも３つのタイマである場合、前記プロセッサが、少なくとも３つのタイマの計時結果を比較して、故障が発生している前記タイマを特定するように構成された、ことを特徴とする請求項１〜請求項４のいずれか１つに記載の電子制御装置。
このようにすれば、３つのタイマの計時結果を比較することで、故障が発生しているタイマを特定することができる。
【００６５】
（Ｂ）前記ハードウエア資源が、複数の入出力回路である場合、前記プロセッサが、前記入出力回路の指令値と出力値とを比較して、故障が発生している前記入出力回路を特定するように構成された、ことを特徴とする請求項１〜請求項４及び（Ａ）のいずれか１つに記載の電子制御装置。
このようにすれば、入出力回路の指令値と出力値とを比較することで、故障が発生している入出力回路を特定することができる。
【００６６】
（Ｃ）前記ハードウエア資源が不揮発性メモリである場合、前記プロセッサが、前記不揮発性メモリにおける所定領域に格納されたデータから求めた計算値と前記不揮発性メモリにおける前記所定領域に格納されたデータの基準値とを比較することで、故障が発生している前記所定領域を特定するように構成された、ことを特徴とする請求項１〜請求項４、（Ａ）及び（Ｂ）のいずれか１つに記載の電子制御装置。
このようにすれば、不揮発性メモリの所定領域における計算値と基準値とを比較することで、故障が発生している所定領域を特定することができる。
【００６７】
（Ｄ）前記ハードウエア資源が揮発性メモリである場合、前記プロセッサが、前記揮発性メモリの所定アドレスに書き込んだデータと前記揮発性メモリの所定アドレスから読み出したデータとを比較することで、故障が発生している前記揮発性メモリのアドレスを特定するように構成された、ことを特徴とする請求項１〜請求項４及び（Ａ）〜（Ｃ）のいずれか１つに記載の電子制御装置。
このようにすれば、揮発性メモリに書き込んだデータと揮発性メモリから読み出したデータとを比較することで、故障が発生している揮発性メモリのアドレスを特定することができる。
【００６８】
（Ｅ）前記ハードウエア資源がタイマである場合、前記プロセッサが、前記タイマから出力される信号を、入出力回路から出力される信号で代替するように構成された、ことを特徴とする請求項１〜請求項４及び（Ａ）〜（Ｄ）のいずれか１つに記載の電子制御装置。
このようにすれば、入出力回路によってタイマを代替することができる。
【００６９】
（Ｆ）前記ハードウエア資源が不揮発性メモリである場合、前記プロセッサが、故障が発生した所定領域のアドレスを、前記不揮発性メモリに確保された予約領域のアドレスにオフセットすることで代替するように構成された、ことを特徴とする請求項１〜請求項４及び（Ａ）〜（Ｅ）のいずれか１つに記載の電子制御装置。
このようにすれば、不揮発性メモリの所定領域を代替することができる。
【００７０】
（Ｇ）前記ハードウエア資源がマルチコアプロセッサの場合、前記プロセッサが、故障が発生したコアを他のコアで代替するように構成された、ことを特徴とする請求項１〜請求項４及び（Ａ）〜（Ｆ）のいずれか１つに記載の電子制御装置。
このようにすれば、マルチコアプロセッサの１つのコアに故障が発生しても、他のコアで代替することができる。
【符号の説明】
【００７１】
３００  電子制御装置
３４０  マイクロコンピュータ
３４２  ＣＰＵ（プロセッサ、ハードウエア資源）
３４４  ＲＡＭ（ハードウエア資源）
３４６  ＲＯＭ（ハードウエア資源）
３４８  タイマ（ハードウエア資源）
３５０  入出力回路（ハードウエア資源）
３５２  Ａ／Ｄコンバータ（ハードウエア資源）
３６０  ＢＩＳＴ（診断回路）
【図１】
0006407127.tif 000002
【図２】
0006407127.tif 000003
【図３】
0006407127.tif 000004
【図４】
0006407127.tif 000005
【図５】
0006407127.tif 000006
【図６】
0006407127.tif 000007
【図７】
0006407127.tif 000008
【図８】
0006407127.tif 000009
【図９】
0006407127.tif 000010
【図１０】
0006407127.tif 000011
【図１１】
0006407127.tif 000012
【図１２】
0006407127.tif 000013
【図１３】
0006407127.tif 000014
【図１４】
0006407127.tif 000015
【図１５】
0006407127.tif 000016
【図１６】
0006407127.tif 000017
【図１７】
0006407127.tif 000018
【図１８】
0006407127.tif 000019
【図１９】
0006407127.tif 000020