(57)【要約】【課題】制御処理の継続性を確保しつつ、異常の検出が可能な制御装置を提供する。【解決手段】エンジンＥＣＵ２０は、４つのＣＰＵ１〜４によりエンジン制御処理を実行する。ＣＰＵ１〜４は、それらの全てが監視側ＣＰＵ及び被監視側ＣＰＵに該当し、且つそれぞれの監視対象のＣＰＵが全て異なるように他のＣＰＵを監視する。また、ＣＰＵ１〜４のいずれかに異常が生じた際、残りの正常なＣＰＵは、退避用のエンジン制御処理の実行が可能な場合、当該退避用のエンジン制御処理を実行する。残りの正常なＣＰＵは、退避用のエンジン制御処理の実行が不可能な場合、監視ＩＣ２２へのウォッチドッグ信号の送信を停止する。【選択図】図２
2016071771.tif 000002
【特許請求の範囲】
【請求項１】
３つ以上の複数の演算部（１，２，３，４）により制御処理を実行する制御装置であって、
監視する側の演算部を監視側演算部とし、監視される側の演算部を被監視側演算部とするとき、
前記複数の演算部は、それらの全てが前記監視側演算部及び前記被監視側演算部に該当し、且つそれぞれの監視対象の演算部が全て異なるように他の演算部をそれぞれ監視し、
前記複数の演算部のいずれかに異常が生じた際、残りの正常な演算部は、制御処理の実行が可能な場合、前記制御処理を実行するとともに、前記制御処理の実行が不可能な場合、特定の動作を行うことを特徴とする制御装置。
【請求項２】
前記残りの正常な演算部は、
前記制御処理の実行が可能な場合には、異常な演算部が前記監視側演算部及び前記被監視側演算部のいずれにも該当せず、且つ前記残りの正常な演算部の全てが前記監視側演算部及び前記被監視側演算部に該当し、且つそれぞれの監視対象の演算部が全て異なるように他の演算部をそれぞれ監視する状態に移行するとともに、
前記残りの正常な演算部のいずれかに更に異常が生じた際、更に残りの正常な演算部は、前記制御処理の実行が可能な場合、前記更に残りの演算部により前記制御処理を実行するとともに、前記制御処理の実行が不可能な場合、前記特定の動作を行うことを特徴とする請求項１に記載の制御装置。
【請求項３】
前記監視側演算部は、前記被監視側演算部から出力されるウォッチドッグ信号に基づき前記被監視側演算部の状態を監視することを特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記複数の演算部により共用される記憶部（６）を更に備え、
前記被監視側演算部は、前記ウォッチドッグ信号の出力情報を前記記憶部に記憶し、
前記監視側演算部は、前記記憶部に記憶されている前記ウォッチドッグ信号の出力情報に基づき前記被監視側演算部を監視することを特徴とする請求項３に記載の制御装置。
【請求項５】
前記被監視側演算部は、通信用のバスを介して前記ウォッチドッグ信号を前記監視側演算部に送信し、
前記監視側演算部は、前記被監視側演算部から送信される前記ウォッチドッグ信号に基づき前記被監視側演算部を監視することを特徴とする請求項４に記載の制御装置。
【請求項６】
前記複数の演算部は、前記残りの正常な演算部の数に基づき前記制御処理を実行可能か否かを判断することを特徴とする請求項１〜５のいずれか一項に記載の制御装置。
【請求項７】
前記複数の演算部は、異常の生じた演算部が前記制御処理の実行に不可欠な演算部であるか否かに基づき前記制御処理を実行可能か否かを判断することを特徴とする請求項１〜６のいずれか一項に記載の制御装置。
【請求項８】
前記残りの正常な演算部は、前記異常な演算部により行われていた処理を代行することを特徴とする請求項１〜７のいずれか一項に記載の制御装置。
【請求項９】
前記複数の演算部は、エンジン制御処理を実行するものであり、
前記複数の演算部のいずれかに異常が生じた場合、車両走行が制限された退避用のエンジン制御処理を実行することを特徴とする請求項１〜８のいずれか一項に記載の制御装置。
【請求項１０】
制御装置（２１）を監視する監視装置であって、
前記制御装置として、請求項１〜９のいずれか一項に記載の制御装置が用いられるとともに、
前記制御装置を監視する監視部（２２）を備え、
前記複数の演算部は、前記監視部にウォッチドッグ信号を送信するとともに、前記制御処理の実行が不可能な場合には、前記特定の動作として、前記監視部への前記ウォッチドッグ信号の送信を停止し、
前記監視部は、前記ウォッチドッグ信号の送信が停止されることに基づき前記制御装置の異常を検出することを特徴とする監視装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算部を有する制御装置、及び制御装置を監視する監視装置に関する。
【背景技術】
【０００２】
この種の制御装置としては、特許文献１に記載の制御装置がある。特許文献１に記載の制御装置は、２つのマイクロコンピュータ（以下、「マイコン」と略記する）と、２つのマイコンを監視する監視部とを備えている。２つのマイコンは同一周期のウォッチドッグ信号を異なるタイミングで監視部に送信する。監視部は、一方のマイコンからのウォッチドッグ信号の送信時期と、他方のマイコンからのウォッチドッグ信号の送信時期とが所定時間以上ずれることに基づき異常を検出する。監視部は、異常を検出した場合、各マイコンにリセット信号を送信することで、各マイコンを初期化する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平３−２１７３６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、特許文献１に記載の制御装置では、２つのマイコンのいずれか一方に異常が生じると、異常なマイコンと共に正常なマイコンも初期化されてしまう。その際、２つのマイコンにより実行されていた制御処理が一時的に停止するため、制御システム全体が一時的に停止してしまう。そのため、制御処理の継続性の観点からすると改良の余地を残すものとなっている。
【０００５】
本発明は、こうした実情に鑑みてなされたものであり、その目的は、制御処理の継続性を確保しつつ、異常の検出が可能な制御装置及び監視装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記課題を解決する制御装置は、３つ以上の複数の演算部（１，２，３，４）により制御処理を実行する。監視する側の演算部を監視側演算部とし、監視される側の演算部を被監視側演算部とするとき、複数の演算部は、それらの全てが監視側演算部及び被監視側演算部に該当し、且つそれぞれの監視対象の演算部が全て異なるように他の演算部をそれぞれ監視する。複数の演算部のいずれかに異常が生じた際、残りの正常な演算部は、制御処理の実行が可能な場合、制御処理を実行するとともに、制御処理の実行が不可能な場合、特定の動作を行う。
【０００７】
本発明によれば、複数の演算部のいずれかに異常が生じた際、残りの正常な演算部により制御処理の実行が可能な場合には、残りの正常な演算部が制御処理を実行するため、制御の継続性を確保することができる。また、制御処理の実行が不可能な場合には、残りの正常な演算部が特定の動作を行うため、当該特定の動作の検出に基づき制御装置の異常を検出することもできる。
【発明の効果】
【０００８】
本発明によれば、制御処理の継続性を確保しつつ、制御装置の異常を検出することができる。
【図面の簡単な説明】
【０００９】
【図１】エンジン制御装置の概略構成を示すブロック図。
【図２】エンジンＥＣＵの一実施形態についてその概略構成を示すブロック図。
【図３】実施形態のＣＰＵ及び監視ＩＣによる相互監視の概要を模式的に示す図。
【図４】（ａ）〜（ｅ）は、実施形態のＣＰＵ及びマイコンからのウォッチドッグ信号の出力態様をそれぞれ示すタイミングチャート。
【図５】実施形態のＣＰＵ及び監視ＩＣによる相互監視の概要を模式的に示す図。
【図６】実施形態のＲＯＭに記憶されている情報を示す図表。
【図７】実施形態のＲＯＭに記憶されている制御処理の再配分テーブルの具体的な内容を示す図表。
【図８】実施形態のＲＡＭに記憶されている情報を示す図表。
【図９】実施形態の各ＣＰＵにより実行されるＷＤ信号監視処理の手順を示すフローチャート。
【図１０】実施形態の各ＣＰＵにより実行されるＷＤ信号送信処理の手順を示すフローチャート。
【図１１】実施形態の各ＣＰＵにより実行される異常検出処理の手順を示すフローチャート。
【図１２】実施形態の各ＣＰＵにより実行される制御再配分処理の手順を示すフローチャート。
【図１３】実施形態のマイコンの動作を示すフローチャート。
【図１４】実施形態の監視ＩＣにより実行される監視処理の手順を示すフローチャート。
【図１５】（ａ）〜（ｃ）は、実施形態のマイコン、監視ＩＣからマイコンに送信されるリセット信号Ｓｒ、及び監視ＩＣのカウンタＣの値の推移をそれぞれ示すタイミングチャート。
【発明を実施するための形態】
【００１０】
以下、エンジン制御装置の一実施形態について説明する。はじめに、本実施形態のエンジン制御装置の概要について説明する。
【００１１】
図１に示されるように、本実施形態のエンジン制御装置１０は、エンジンＥＣＵ（電子制御装置）２０と、センサ装置３０とを備えている。
【００１２】
センサ装置３０は、例えばアクセルペダルポジションセンサ３１やエアフロメータ３２、クランク角センサ３３等からなる。アクセルペダルポジションセンサ３１は、アクセルペダルの踏み込み量を検出する。エアフロメータ３２は、エンジンの吸入空気量を検出する。クランク角センサ３３は、エンジンの出力軸であるクランクシャフトの回転角（クランク角）を検出する。センサ装置３０から出力される検出信号は、エンジンＥＣＵ２０に取り込まれている。
【００１３】
エンジンＥＣＵ２０は、センサ装置の検出信号に基づきスロットルモータ４０やイグニッションコイル４１、インジェクタ４２等を駆動させることにより、電子スロットル制御や点火時期制御、燃料噴射制御等を実行する。
【００１４】
次に、エンジンＥＣＵ２０の構成について詳述する。
【００１５】
図２に示されるように、エンジンＥＣＵ２０は、マイコン２１と、監視部としての監視ＩＣ２２とを備えている。
【００１６】
マイコン２１は、４つの中央演算処理装置（ＣＰＵ）１〜４と、ＲＯＭ（Read Only Memory）５と、ＲＡＭ（ Random Access Memory）６と、入出力ポート７と、電源回路８とを有している。
【００１７】
ＣＰＵ１〜４は、通信用のバス９を介してＲＯＭ５やＲＡＭ６、入出力ポート７と各種データを授受することが可能となっている。ＣＰＵ１〜４は、エンジンＥＣＵ２０により実行される電子スロットル制御や点火時期制御等のエンジン制御に係る各種制御処理を分担して実行する。以下では、便宜上、ＣＰＵ１〜４によりそれぞれ実行される制御処理を、第１制御処理、第２制御処理、第３制御処理、及び第４制御処理と略記する。また、ＣＰＵ１〜４は、符号の値が小さいものから順に、ＣＰＵ番号１〜４が割り振られている。すなわち、ＣＰＵ１にはＣＰＵ番号「１」が、ＣＰＵ２にはＣＰＵ番号「２」が、ＣＰＵ３にはＣＰＵ番号「３」が、ＣＰＵ４にはＣＰＵ番号「４」がそれぞれ割り振られている。ＣＰＵ１〜４は、それぞれの状態を相互に監視している。
【００１８】
ＲＯＭ５は、各種制御プログラムや、それらの制御で用いられる制御データ等が記憶された読み出し専用のメモリである。ＲＡＭ６は、ＣＰＵ１〜４の演算結果等を一時的に記憶するメモリである。ＲＯＭ５及びＲＡＭ６は、ＣＰＵ１〜４により記憶部として共用されている。
【００１９】
入出力ポート７は監視ＩＣ２２と通信可能に接続されている。入出力ポート７は、ＣＰＵ１〜４と監視ＩＣ２２との間で信号やデータの授受を行う。
【００２０】
電源回路８は、図示しない車載バッテリから供給される駆動電圧Ｖｍに基づき各ＣＰＵ１〜４の動作電圧Ｖｍｍを生成する。すなわち、ＣＰＵ１〜４は、電源回路８から供給される動作電圧Ｖｍｍにより駆動する。
【００２１】
監視ＩＣ２２は、カウンタＣ等を有する集積回路からなる。監視ＩＣ２２はマイコン２１の状態を監視している。監視ＩＣ２２は、マイコン２１の異常を検出した場合、マイコン２１の電源回路８にリセット信号Ｓｒを送信する。このリセット信号Ｓｒに基づき電源回路８がＣＰＵ１〜４への電圧の付与を停止することにより、ＣＰＵ１〜４の動作がリセットされる。
【００２２】
本実施形態の監視装置５０は、監視対象のマイコン２１と、マイコン２１を監視する監視ＩＣ２２とにより構成されている。
【００２３】
次に、本実施形態のＣＰＵ１〜４及び監視ＩＣ２２による監視構成の概要について説明する。
【００２４】
図３に矢印で示されるように、ＣＰＵ１〜４はリング状に監視し合う関係を構築している。なお、矢印の根元のＣＰＵは被監視側のＣＰＵを示し、矢印の先のＣＰＵは監視側のＣＰＵを示している。よって、ＣＰＵ１はＣＰＵ４を監視している。ＣＰＵ２はＣＰＵ１を監視している。ＣＰＵ３はＣＰＵ２を監視している。ＣＰＵ４はＣＰＵ３を監視している。このように、ＣＰＵ１〜４は、監視する側のＣＰＵを監視側ＣＰＵとし、監視される側のＣＰＵを被監視側ＣＰＵとすると、それらの全てが監視側ＣＰＵ及び被監視側ＣＰＵに該当し、且つそれぞれの監視対象のＣＰＵが全て異なるように他のＣＰＵをそれぞれ監視している。
【００２５】
具体的には、ＣＰＵ１〜４は、「ＣＰＵ１→ＣＰＵ２→ＣＰＵ３→ＣＰＵ４→ＣＰＵ１→・・・」の順でリング状にウォッチドッグ（ＷＤ）信号を出力する。図４（ａ）〜（ｄ）に示されるように、ＷＤ信号は、ローレベル（Ｌ）からハイレベル（Ｈ）に変化するパルス信号からなる。前回のＣＰＵによるＷＤ信号の送信時刻から次のＣＰＵのＷＤ信号の送信時刻までの時間間隔は、一定時間Ｔに設定されている。したがって、ＣＰＵ１〜４のそれぞれからＷＤ信号が出力される周期は、基本的には「４×Ｔ」に設定されている。周期Ｔは、例えば４［ｍｓ」に設定される。
【００２６】
ＣＰＵ１〜４は、被監視側ＣＰＵがＷＤ信号を前回出力した時刻から時間閾値Ｔｔｈが経過しても次のＷＤ信号を出力しなかった場合、被監視側ＣＰＵに異常が生じたと判断する。時間閾値Ｔｔｈは、例えば各ＣＰＵ１〜４のＷＤ信号の出力周期である「４×Ｔ」よりも僅かに大きい値に設定される。
【００２７】
なお、本実施形態では、被監視側ＣＰＵは、監視側ＣＰＵにＷＤ信号を直接送信せずに、ＷＤ信号の出力情報をＲＡＭ６に保存する。したがって、監視側ＣＰＵは、ＲＡＭ６に記憶された被監視側ＣＰＵのＷＤ信号の出力情報に基づき被監視側ＣＰＵからＷＤ信号が出力されたか否かを判定する。
【００２８】
また、図３に矢印で示されるように、各ＣＰＵ１〜４は、ＷＤ信号の出力情報をＲＡＭ６に保存する際に、監視ＩＣ２２にもＷＤ信号を併せて送信する。したがって、図４（ｅ）に示されるように、マイコン２１は監視ＩＣ２２に一定の周期ＴでＷＤ信号を送信する。監視ＩＣ２２は、このマイコン２１から出力されるＷＤ信号に基づきマイコン２１の異常の有無を検出する。
【００２９】
一方、ＣＰＵ１〜４は、それらのいずれかに異常が生じた場合、残りの正常なＣＰＵにより退避用のエンジン制御処理を実行可能か否かを判断する。退避用のエンジン制御処理は、例えば車両が路肩等の安全な場所に停車するまでの車両走行を可能とすべく、車両走行に何らかの制限が設けられたエンジン制御処理を示す。車両走行の制限としては、例えば走行可能距離を短い距離に制限し、且つ走行可能速度を低速に制限するといった方法が考えられる。ＣＰＵ１〜４は、例えば残りの正常なＣＰＵの数が予め定められた最小ＣＰＵ数以上であって、且つ異常なＣＰＵが主要ＣＰＵでない場合には、退避用のエンジン制御処理を実行可能であると判断する。最小ＣＰＵ数は、退避用のエンジン制御処理を実行するために必要な最低限のＣＰＵの数である。主要ＣＰＵは、退避用のエンジン制御処理の実行に不可欠であって、且つそのＣＰＵにより実行されている制御処理を他のＣＰＵに代行させることが不可能なＣＰＵを示す。異常なＣＰＵを除く残りの正常なＣＰＵは、退避用のエンジン制御処理を実行可能な場合には、当該退避用のエンジン制御処理を実行する。その際、残りの正常なＣＰＵは、異常なＣＰＵにより実行されていた制御処理を代行可能であれば、これを代行する。また、残りの正常なＣＰＵは、異常なＣＰＵが監視側ＣＰＵ及び被監視側ＣＰＵのいずれにも該当しないようにリング状の監視体制を再構築する。例えば図５に示されるようにＣＰＵ４に異常が生じた場合、ＣＰＵ１は、ＣＰＵ３を監視する状態に移行する。これにより、残りの正常なＣＰＵ１〜３によりリング状の監視体制が再構築される。
【００３０】
また、残りの正常なＣＰＵは、正常なＣＰＵの数が最小ＣＰＵ数未満である場合、あるいは異常なＣＰＵが主要ＣＰＵである場合には、退避用のエンジン制御処理の実行が不可能であると判定する。この場合、残りの正常なＣＰＵは、監視ＩＣ２２へのＷＤ信号の送信を停止する。これにより、監視ＩＣ２２は、マイコン２１からのＷＤ信号の送信がないことに基づきマイコン２１の異常を検出する。このとき、監視ＩＣ２２は、マイコン２１にリセット信号Ｓｒを送信することにより、各ＣＰＵ１〜４の動作を初期化し、マイコン２１を復旧させる。
【００３１】
次に、上記のような相互監視を実現するためにマイコン２１及び監視ＩＣ２２が有する具体的な構成について説明する。
【００３２】
図６に示されるように、ＲＯＭ５には、以下の（ａ１）〜（ａ６）に示す情報が記憶されている。
【００３３】
（ａ１）各ＣＰＵ１〜４により実行されるプログラム。
（ａ２）全ＣＰＵの数。本実施形態では、この値は「４」となっている。
（ａ３）退避用のエンジン制御処理の実行に必要な最小ＣＰＵ数。この値は、全ＣＰＵ数よりも小さい値（例えば「２」）に設定される。
（ａ４）主要ＣＰＵの番号。例えばＣＰＵ２が主要ＣＰＵである場合、ここにはＣＰＵ２のＣＰＵ番号である「２」が記憶されている。
（ａ５）ＷＤ信号の送信周期Ｔ。
（ａ６）制御処理の再配分テーブル。再配分テーブルは、図７に示されるように、異常発生ＣＰＵと、異常発生ＣＰＵの担当制御処理と、処理引取先ＣＰＵと、処理先頭アドレス等の情報からなる。処理引取先ＣＰＵは、対応するＣＰＵに異常が生じた際に、そのＣＰＵにより実行されている処理を代行するＣＰＵを示す。
【００３４】
なお、図７において、各ＣＰＵ１〜４により実行される第１〜第４制御処理のうち、第１制御処理及び第４制御処理には、処理引取先ＣＰＵが記載されている。これらの制御処理は、退避用のエンジン制御処理の実行中に他のＣＰＵが実行して処理を行う必要のある制御処理、例えば燃料噴射制御や点火時期制御等が該当する。なお、処理引取先ＣＰＵは、各ＣＰＵ１〜４が担当する制御処理の負担を考慮した上で、実行すべき処理負担の少ないＣＰＵに、処理負担の大きな制御処理が割り振られるように設定されている。
【００３５】
また、ＣＰＵ２が実行する第２制御処理には処理引取先ＣＰＵが記載されていない。これは、ＣＰＵ２は主要ＣＰＵであるため、その制御処理を代行可能なＣＰＵが存在しないためである。
【００３６】
さらに、ＣＰＵ３が実行する第３制御処理にも処理引取先ＣＰＵが記載されていない。この第３制御処理は、車両走行に直接関わらない制御処理、例えば電子スロットル制御等が該当する。第３制御処理は、退避用のエンジン制御処理中に処理を行わずとも、例えば固定値設定で対応可能であるため、制御処理の引き渡しが行われないようになっている。
【００３７】
図８に示されるように、ＲＡＭ６にはＷＤ信号の前回送信時刻Ｔｗｄが記憶されている。例えば現時点でＷＤ信号の送信を最後に行ったＣＰＵがＣＰＵ３であれば、ＣＰＵ３がＷＤ信号の送信を行った時刻が前回送信時刻Ｔｗｄとして記憶される。
【００３８】
また、ＲＡＭ６には、ＣＰＵ１〜４毎に以下の（ｂ１）〜（ｂ７）に示される情報が記憶されている。
【００３９】
（ｂ１）自身のＣＰＵ番号。ここには、例えばＣＰＵ１の情報であれば、自身のＣＰＵ番号「１」が記憶されている。
（ｂ２）自身が監視するＣＰＵ（以下、「監視対象ＣＰＵ」と略記する）の番号。ここには、例えばＣＰＵ１の情報であれば、監視対象のＣＰＵ４の番号である「４」が記憶されている。
（ｂ３）自身を監視するＣＰＵ（以下、「監視元ＣＰＵ」と略記する）の番号。ここには、例えばＣＰＵ１の情報であれば、監視元のＣＰＵ２の番号である「２」が記憶されている。
（ｂ４）監視対象ＣＰＵからのＷＤ信号の出力情報。ここには、例えばＣＰＵ１の情報であれば、監視対象のＣＰＵ４からのＷＤ信号の出力情報が記憶される。
（ｂ５）自身の動作状態。ここには、例えばＣＰＵ１の情報であれば、ＣＰＵ１が正常及び異常のいずれの状態であるかが記憶される。初期状態では、ここには「正常状態」の旨が記憶されている。
（ｂ６）異常検出情報。ここには、例えばＣＰＵ１の情報であれば、ＣＰＵ１が監視対象ＣＰＵ４の異常を検出した際に、その旨が記憶される。初期状態では、ここには「異常検出無し」の旨が記憶されている。
（ｂ７）ＷＤ信号未受信時間。ここには、例えばＣＰＵ１の情報であれば、ＣＰＵ１がＣＰＵ４からのＷＤ信号の出力を前回確認した時点からの経過時間が記憶されている。なお、経過時間の計測は、例えばマイコン２１に設けられたカウンタの計数により行われる。
【００４０】
各ＣＰＵ１〜４は、図６に示されるＲＯＭ５に記憶されている情報、及び図８に示されるＲＡＭ６に記憶されているＣＰＵ１〜４毎の情報に基づき図９に示される処理を所定の演算周期で繰り返し実行する。演算周期は、例えば０．５［ｍｓ］に設定される。なお、各ＣＰＵ１〜４が実行する処理は同一であるため、以下では、便宜上、ＣＰＵ１が実行する処理について代表して説明する。
【００４１】
図９に示されるように、ＣＰＵ１は、まず、ＲＡＭ６の自身の情報におけるＷＤ信号の未受信時間が時間閾値Ｔｔｈ以上であるか否かを判断する（ステップＳ１０）。ＣＰＵ１は、ＷＤ信号の未受信時間が時間閾値Ｔｔｈ未満である場合（ステップＳ１１：ＮＯ）、換言すればＣＰＵ４からのＷＤ信号の出力を前回確認した時点からの経過時間が時間閾値Ｔｔｈ未満である場合には、ステップＳ１４の処理を実行する。すなわち、ＣＰＵ１は、ＲＡＭ６の自身の情報における監視対象ＣＰＵ４からのＷＤ信号出力情報が「出力有り」となっているか否かを判断する（ステップＳ１４）。ＣＰＵ１は、監視対象ＣＰＵ４からのＷＤ信号の出力情報が「出力無し」となっている場合（ステップＳ１４：ＮＯ）、処理を一旦終了する。
【００４２】
ＣＰＵ１は、監視対象ＣＰＵ４からのＷＤ信号の出力情報が「出力有り」となっている場合には（ステップＳ１４：ＹＥＳ）、監視対象ＣＰＵ４からＷＤ信号が正常に出力されたと判定する。この場合、ＣＰＵ１は、ＲＡＭ６の自身の情報におけるＷＤ信号未受信時間をクリアするとともに（ステップＳ１５）、監視対象ＣＰＵ４からのＷＤ信号の出力情報を「出力無し」に設定し（ステップＳ１６）、ＷＤ信号送信イベントを発行する（ステップＳ１７）。
【００４３】
ＣＰＵ１は、ＷＤ信号送信イベントを発行した場合、ＲＡＭ６に記憶されているＷＤ信号の前回送信時刻Ｔｗｄからの経過時間をマイコン２１の内蔵タイマを用いて計測する。ＣＰＵ１は、内蔵タイマのカウント値からＷＤ信号の前回送信時刻Ｔｗｄを減算した値、換言すればＷＤ信号の前回送信時刻Ｔｗｄからの経過時間が、ＲＯＭ５に記憶されているＷＤ信号の送信周期Ｔを超えた際に、図１０に示されるＷＤ信号送信処理を割り込み処理として実行する。
【００４４】
具体的には、図１０に示されるように、ＣＰＵ１は、監視ＩＣ２２にＷＤ信号を送信する（ステップＳ１７０）。また、ＣＰＵ１は、ＲＡＭ６のＣＰＵ２の情報におけるＷＤ信号出力情報を「出力有り」に変更する（ステップＳ１７１）。これにより、ＣＰＵ１の監視元であるＣＰＵ２は、ＣＰＵ１からＷＤ信号が正常に出力されたと判定することが可能となる。さらに、ＣＰＵ１は、現在の時刻を前回送信時刻ＴｗｄとしてＲＡＭ６に記憶させる（ステップＳ１７２）。
【００４５】
以上の処理は、「ＣＰＵ１→ＣＰＵ２→ＣＰＵ３→ＣＰＵ４→ＣＰＵ１→・・・」の順で実行される。すなわち、この順でＷＤ信号の出力が行われる。
【００４６】
一方、図９に示されるように、ＣＰＵ１は、監視対象ＣＰＵ４からＷＤ信号が出力されないまま（ステップＳ１４：ＮＯ）、ＷＤ信号の未受信時間が時間閾値Ｔｔｈ以上になった場合には（ステップＳ１０：ＹＥＳ）、監視対象ＣＰＵ４に異常が生じたと判定する。この場合、ＣＰＵ１は、ＲＡＭ６の自身の情報における異常検出情報を「異常検出有り」に変更するとともに（ステップＳ１１）、異常の生じた監視対象ＣＰＵ４を停止させる（ステップＳ１２）。なお、ＣＰＵ１は、マイコン２１に搭載された各ＣＰＵ１〜４の停止機能を用いることにより、例えば動作クロックを停止させる等してＣＰＵ４を停止させる。また、ＣＰＵ１は、ＲＡＭ６の監視対象ＣＰＵ４の情報における動作状態を「異常状態」に変更する（ステップＳ１３）。
【００４７】
このようにしてＣＰＵ１がＣＰＵ４の異常を検出した場合、停止したＣＰＵ４の除く残りの正常なＣＰＵ１〜３の全てが、図１１に示される異常発生時処理を割り込み処理として実行する。すなわち、各ＣＰＵ１〜３は、ＲＡＭ６の自身の情報におけるＷＤ信号未受信時間をクリアした後（ステップＳ２０）、退避用のエンジン制御処理を実行可能か否かを判定する（ステップＳ２１）。各ＣＰＵ１〜３は、残りの正常なＣＰＵの数がＲＯＭ５に記憶された最小ＣＰＵ数以上であって、且つ異常なＣＰＵ４の番号が主要ＣＰＵ番号でない場合には、退避用のエンジン制御処理を実行可能であると判定する（ステップＳ２１：ＹＥＳ）。この場合、各ＣＰＵ１〜３は、監視元ＣＰＵが正常であるか否かを判断する（ステップＳ２２）。
【００４８】
ここで、上記のようにＣＰＵ４のみに異常が生じた場合、ＣＰＵ４を監視元とするＣＰＵ３のみが否定処理を行い（ステップＳ２２：ＮＯ）、それ以外のＣＰＵ１，２は肯定処理を行う（ステップＳ２２：ＹＥＳ）。このとき、ＣＰＵ３は、監視元ＣＰＵ４のＣＰＵ番号が最大値であるか否かを判断する（ステップＳ２３）。この場合、監視元ＣＰＵ４のＣＰＵ番号が最大値であるため（ステップＳ２３：ＹＥＳ）、ＣＰＵ３は、正常且つＣＰＵ番号が最小値のＣＰＵ１のＣＰＵ番号を、ＲＡＭ６の自身の情報における監視元のＣＰＵ番号として記憶させる（ステップＳ２４）。
【００４９】
次に、各ＣＰＵ１〜３は、監視対象ＣＰＵが正常であるか否かを判断する（ステップＳ２６）。ここで、上記のようにＣＰＵ４のみに異常が生じた場合、ＣＰＵ４を監視対象とするＣＰＵ１のみが否定処理を行い（ステップＳ２６：ＮＯ）、それ以外のＣＰＵ２，３は肯定処理を行う（ステップＳ２６：ＹＥＳ）。このとき、ＣＰＵ１は、監視対象ＣＰＵ１のＣＰＵ番号が最小値であるか否かを判断する（ステップＳ２７）。この場合、監視対象ＣＰＵ１のＣＰＵ番号が最小値であるため（ステップＳ２７：ＹＥＳ）、ＣＰＵ１は、正常且つＣＰＵ番号が最大値のＣＰＵ３のＣＰＵ番号をＲＡＭ６の自身の情報における監視対象ＣＰＵの番号として記憶させる（ステップＳ２８）。
【００５０】
以上の処理により、各ＣＰＵ１〜４の監視状態は、図３に示される状態から、図５に示される状態へと移行する。すなわち、ＣＰＵ１〜３によりリング状の監視体制が再構築される。
【００５１】
次に、正常なＣＰＵ１〜３は、ＲＡＭ６の自身の情報における異常検出情報に基づき、自身が異常検出ＣＰＵか否かを判断する（ステップＳ３０）。ここで、上記のようにＣＰＵ４のみに異常が生じた場合、ＣＰＵ１の異常検出情報が「異常検出有り」となっている。そのため、ＣＰＵ１は、自身が異常検出ＣＰＵであると判断し（ステップＳ３０：ＹＥＳ）、ＷＤ信号送信イベントを発行する（ステップＳ３１）。これにより、ＣＰＵ１が、図１０に示されるＷＤ信号送信処理を実行する。一方、ＣＰＵ２，３は、自身が異常検出ＣＰＵでないため（ステップＳ３０：ＮＯ）、処理を終了する。これにより、ＣＰＵ１〜３によりリング状の監視体制が再構築された後には、ＣＰＵ１からＷＤ信号の出力が開始されることとなる。
【００５２】
なお、上記では、ＣＰＵ４のみに異常が生じた場合を例に挙げて説明したが、例えばＣＰＵ３のみに異常が生じた場合、ＣＰＵ３を監視元とするＣＰＵ２は、監視元ＣＰＵ３が異常であると判断する（ステップＳ２２：ＮＯ）。このとき、監視元ＣＰＵ３のＣＰＵ番号が最大値でないため（ステップＳ２３：ＮＯ）、ＣＰＵ２は、監視元ＣＰＵ３のＣＰＵ番号に「１」を加算した値、すなわちＣＰＵ４のＣＰＵ番号をＲＡＭ６の自身の情報における監視元ＣＰＵの番号として記憶させる（ステップＳ２５）。
【００５３】
またこの場合、ＣＰＵ３を監視対象とするＣＰＵ４は、監視対象ＣＰＵ３が異常であると判断する（ステップＳ２６：ＮＯ）。このとき、監視対象ＣＰＵ３のＣＰＵ番号は最小値でないため（ステップＳ２７：ＮＯ）、ＣＰＵ４は、監視対象ＣＰＵ３のＣＰＵ番号から「１」を減算した値、すなわちＣＰＵ２のＣＰＵ番号をＲＡＭ６の自身の情報における監視対象のＣＰＵ番号として記憶させる（ステップＳ２９）。
【００５４】
これらの処理により、ＣＰＵ３のみに異常が生じた場合にも、同様にＣＰＵ１，２，４によりリング状の監視体制を構築することができる。
【００５５】
一方、ＣＰＵ４のみに異常が生じた場合、残りの正常なＣＰＵ１〜３は、図１１に示される処理を実行してリング状の監視体制を再構築した後、図１２に示される処理を実行する。すなわち、正常なＣＰＵ１〜３は、ＲＯＭ５に記憶された再配分テーブルにおける処理引取先ＣＰＵの欄を参照し（ステップＳ４０）、自身が異常時の処理引取先ＣＰＵに該当するか否かを判断する（ステップＳ４１）。本実施形態では、ＣＰＵ４の処理引取先ＣＰＵがＣＰＵ１に設定されている。そのため、ＣＰＵ１は、自身が処理引取先ＣＰＵに該当すると判断すると（ステップＳ４１：ＹＥＳ）、処理先頭アドレス欄を参照し（ステップＳ４２）、参照したアドレスを自身が実行すべき処理として追加する（ステップＳ４３）。
【００５６】
また、ＣＰＵ２，３は、自身が処理引取先ＣＰＵに該当していないと判断すると（ステップＳ４１：ＮＯ）、処理を終了する。
【００５７】
このようにしてＣＰＵ４の担当制御処理をＣＰＵ１が代行することにより、残りの正常なＣＰＵ１〜３により退避用のエンジン制御処理が実行される。そのため、運転者は、走行距離が短く、且つ低速走行でありながらも、車両の路肩等の安全な場所まで車両を走行させることができる。
【００５８】
一方、上記では、ＣＰＵ４のみに異常が生じた場合を例に挙げて説明したが、例えば主要なＣＰＵであるＣＰＵ２のみに異常が生じた場合には、図１１に示されるように、残りの正常なＣＰＵ１，３，４はステップＳ２１にて退避用のエンジン制御処理の実行が不可能と判断する（ステップＳ２１：ＮＯ）。あるいは、ＣＰＵ４に異常が生じた後に、更にＣＰＵ１及びＣＰＵ３に異常が生じた場合には、残りの正常なＣＰＵの数が最小ＣＰＵ数よりも小さい値となるため、正常なＣＰＵ２はステップＳ２１にて退避用のエンジン制御処理の実行が不可能と判断する（ステップＳ２１：ＮＯ）。この場合、正常なＣＰＵは、リング状の監視体制を再構築せずに、監視ＩＣ２２へのＷＤ信号の出力を停止する（ステップＳ３２）。
【００５９】
次に、ＣＰＵ１〜４が図９〜図１２に示される処理を実行した際のマイコン２１の動作について図１３を参照して説明する。なお、マイコン２１は、図１３に示される処理を所定の周期で繰り返し実行する。
【００６０】
図１３に示されるように、マイコン２１は、まず、各ＣＰＵ１〜４により相互監視を行い（ステップＳ５０）、異常なＣＰＵが存在するか否かを判断する（ステップＳ５１）。マイコン２１は、異常なＣＰＵが存在しない場合には（ステップＳ５１：ＮＯ）、処理を終了する。
【００６１】
マイコン２１は、異常なＣＰＵが存在する場合には（ステップＳ５１：ＹＥＳ）、退避用のエンジン制御処理を実行することが可能か否かを判断する（ステップＳ５２）。マイコン２１は、退避用のエンジン制御処理を実行することが可能な場合には（ステップＳ５２：ＹＥＳ）、異常なＣＰＵを除く残りの正常なＣＰＵでリング状の監視体制を再構築する（ステップＳ５３）。また、マイコン２１は、異常なＣＰＵにより行われていた処理を他のＣＰＵに引き渡すべく、各ＣＰＵの制御処理を再配分する（ステップＳ５４）。
【００６２】
マイコン２１は、退避用のエンジン制御処理を実行することが不可能な場合には（ステップＳ５２：ＮＯ）、監視ＩＣ２２へのＷＤ信号の送信を停止する（ステップＳ５５）。
【００６３】
次に、監視ＩＣ２２により実行されるマイコン２１の監視処理について説明する。なお、監視ＩＣ２２のカウンタＣの値は、初期状態では、「０」に設定されている。
【００６４】
監視ＩＣ２２は、図１４に示される処理を所定の演算周期で繰り返し実行する。すなわち、監視ＩＣ２２は、カウンタＣの値をインクリメントした後（ステップＳ６０）、カウンタＣの値が閾値Ｃｔｈ以上であるか否かを判断する（ステップＳ６１）。閾値Ｃｔｈは、例えばＣＰＵ１〜４の異常により監視ＩＣ２２へのＷＤ信号の送信が停止された時点から、正常なＣＰＵによりリング状の監視体制が構築されてＷＤ信号の送信が再開されるまでに要する時間よりも長い時間（例えば、４０［ｍｓ］）に対応した値に設定される。監視ＩＣ２２は、カウンタＣの値が閾値Ｃｔｈ以上でない場合には（ステップＳ６１：ＮＯ）、マイコン２１から送信されるＷＤ信号を受信したか否かを判断する（ステップＳ６３）。監視ＩＣ２２は、ＷＤ信号を受信していない場合には（ステップＳ６３：ＮＯ）、処理を終了する。
【００６５】
監視ＩＣ２２は、カウンタＣの値が閾値Ｃｔｈに達する前に（ステップＳ６１：ＮＯ）、マイコン２１から送信されるＷＤ信号を受信した場合には（ステップＳ６３：ＹＥＳ）、カウンタＣの値をクリアする（ステップＳ６４）。
【００６６】
監視ＩＣ２２は、マイコン２１からＷＤ信号が送信されないまま（ステップＳ６３：ＮＯ）、カウンタＣの値が閾値Ｃｔｈ以上になった場合には（ステップＳ６１：ＹＥＳ）、マイコン２１にリセット信号Ｓｒを送信する（ステップＳ６２）。リセット信号Ｓｒは、例えばローレベルからハイレベルに変化するパルス信号からなる。
【００６７】
次に、本実施形態のマイコン２１及び監視ＩＣ２２の動作について説明する。
【００６８】
図１５（ａ）に示されるように、マイコン２１は、各ＣＰＵ１〜４が正常な場合、ＷＤ信号を周期Ｔで送信する。また、マイコン２１は、ＣＰＵ１〜４のいずれかに異常が生じた場合でも、退避用のエンジン制御処理を行っている間は、同様にＷＤ信号を周期Ｔで送信する。マイコン２１から周期ＴでＷＤ信号が送信されている間、図１５（ｃ）に示されるように、監視ＩＣ２２は、カウンタＣの値を閾値Ｃｔｈに達する前にクリアする。したがって、監視ＩＣ２２はリセット信号Ｓｒを送信しない。
【００６９】
マイコン２１は、時刻ｔ１でＣＰＵ１〜４に異常が生じた際、退避用のエンジン制御処理の実行が不可能な場合には、それ以降はＷＤ信号の送信を停止する。この場合、監視ＩＣ２２は、カウンタＣの値をインクリメントし続ける。そして、監視ＩＣ２２は、カウンタＣの値が閾値Ｃｔｈに達する時刻ｔ２でマイコン２１にリセット信号Ｓｒを送信する。よって、時刻ｔ２で各ＣＰＵ１〜４がリセットされることとなる。
【００７０】
以上説明したエンジン制御装置１０及び監視装置５０によれば、以下の（１）〜（４）に示される作用及び効果を得ることができる。
【００７１】
（１）ＣＰＵ１〜４のいずれかに異常が生じた際、残りの正常な３つのＣＰＵは、退避用のエンジン制御処理を実行することが可能な場合、当該退避用のエンジン制御処理を実行する。具体的には、正常な３つのＣＰＵは、残りの正常なＣＰＵの数が最小ＣＰＵ数以上であって、且つ異常なＣＰＵが主要ＣＰＵでないことを条件に、退避用のエンジン制御処理を実行する。そのため、エンジン制御処理の継続性を確保することができる。また、正常な３つのＣＰＵは、退避用のエンジン制御処理を実行することが不可能な場合、監視ＩＣ２２へのＷＤ信号の送信を停止する。そのため、監視ＩＣ２２は、マイコン２１からのＷＤ信号の送信が停止することをもって、マイコン２１の異常を検出することもできる。
【００７２】
（２）ＣＰＵ１〜４のいずれかに異常が生じた場合、残りの正常な３つのＣＰＵはリング状の監視体制を再構築する。具体的には、正常な３つのＣＰＵは、異常なＣＰＵが監視側ＣＰＵ及び被監視側ＣＰＵのいずれにも該当せず、且つ残りの正常なＣＰＵの全てが監視側ＣＰＵ及び被監視側ＣＰＵに該当し、且つそれぞれの監視対象のＣＰＵが全て異なるように他のＣＰＵを監視する。また、残りの正常な３つのＣＰＵのいずれかに更に異常が生じた際、更に残りの正常な２つのＣＰＵは、退避用のエンジン制御処理の実行が可能な場合には、退避用のエンジン制御処理を行う。そのため、エンジン制御処理の継続性を更に向上させることができる。また、正常な２つのＣＰＵは、退避用のエンジン制御処理の実行が不可能な場合には、監視ＩＣ２２へのＷＤ信号の送信を停止する。そのため、正常なＣＰＵが２個だけになった場合でも、監視ＩＣ２２はマイコン２１の異常を検出することができる。
【００７３】
（３）各ＣＰＵ１〜４は、ＷＤ信号に基づき被監視側ＣＰＵを監視することとした。これにより、各ＣＰＵ１〜４は、被監視側ＣＰＵの状態を容易に監視することができる。
【００７４】
（４）各ＣＰＵ１〜４は、いずれかのＣＰＵに異常が生じた場合、異常なＣＰＵにより行われていた制御処理を代行することとした。これにより、残りの正常なＣＰＵによりエンジン制御処理をより的確に継続することができる。
【００７５】
なお、上記実施形態は、以下の形態にて実施することもできる。
【００７６】
・ＣＰＵ１〜４は、バス９を介して監視側ＣＰＵにＷＤ信号を直接送信してもよい。この場合、監視側ＣＰＵは、被監視側ＣＰＵからバス９を介して送信されるＷＤ信号に基づき被監視側ＣＰＵを監視する。このような構成であれば、各ＣＰＵ１〜４の出力状態をＲＡＭ６に記憶させる処理が不要となるため、各ＣＰＵ１〜４の処理速度を向上させることが可能である。
【００７７】
・マイコン２１は、退避用のエンジン制御処理の実行の際、カーナビゲーション装置等を通じて運転者にエンジンＥＣＵ２０の異常を通知してもよい。その際、マイコン２１は、カーナビゲーション装置により安全な場所への経路案内を行ってもよい。また、マイコン２１は、カーナビゲーション装置等により運転者にイグニッションスイッチのオフ操作を促すとともに、イグニッションスイッチがオフ操作された際にＣＰＵ１〜４をリセットしてもよい。これにより、その後のイグニッションスイッチのオン操作に伴いマイコン２１が起動した際に、異常の生じたＣＰＵを含む全てのＣＰＵ１〜４が再起動するため、ＣＰＵ１〜４を正常な状態に復帰させることが可能となる。このような構成によれば、イグニッションスイッチのオン操作時に全てのＣＰＵ１〜４を正常復帰させることができるため、マイコン２１の動作の信頼性を向上させることができる。
【００７８】
・ＣＰＵ１〜４から監視ＩＣ２２に異常を通知するための特定の動作は、ＷＤ信号を停止する動作に限らず、適宜の動作を採用することが可能である。例えばＣＰＵ１〜４は、予め定められた異常検出信号を監視ＩＣ２２に送信することにより、監視ＩＣ２２に異常を通知してもよい。ＣＰＵ１〜４間で異常を通知する手段も同様に適宜変更可能である。
【００７９】
・ＣＰＵ１〜４が退避用のエンジン制御処理を実行可能か否かを判定する条件は、適宜変更可能である。例えばＣＰＵ１〜４の中に主要ＣＰＵに該当するＣＰＵが存在しない場合には、残りの正常なＣＰＵの数だけで退避用のエンジン制御処理を実行可能か否かを判断してもよい。
【００８０】
・ＣＰＵ１〜４のいずれかに異常が生じた際、残りの正常なＣＰＵは、退避用のエンジン制御処理ではなく、通常のエンジン制御処理を継続して実行してもよい。要は、ＣＰＵ１〜４のいずれかに異常が生じた際に、残りの正常なＣＰＵがエンジン制御処理を実行するものであればよい。
【００８１】
・エンジンＥＣＵ２０の有するＣＰＵの数は、３つ以上であれば、任意に変更可能である。
【００８２】
・上記実施形態のエンジンＥＣＵ２０の構成は、３つ以上の複数のＣＰＵによって制御処理を実行する制御装置であれば、任意の制御装置に適用可能である。また、演算部としてＣＰＵを有する構成に限らず、例えば演算部としてのマイコンを３つ以上有する制御装置にも適用可能である。
【００８３】
・本発明は上記の具体例に限定されるものではない。すなわち、上記の具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素及びその配置、材料、条件、形状、サイズ等は、例示したものに限定されるわけではなく適宜変更することができる。また、前述した実施形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
【符号の説明】
【００８４】
１，２，３，４：ＣＰＵ（演算部）
６：ＲＡＭ（記憶部）
２１：マイコン（制御装置）
２２：監視部（監視ＩＣ）
【図１】
2016071771.tif 000003
【図２】
2016071771.tif 000004
【図３】
2016071771.tif 000005
【図４】
2016071771.tif 000006
【図５】
2016071771.tif 000007
【図６】
2016071771.tif 000008
【図７】
2016071771.tif 000009
【図８】
2016071771.tif 000010
【図９】
2016071771.tif 000011
【図１０】
2016071771.tif 000012
【図１１】
2016071771.tif 000013
【図１２】
2016071771.tif 000014
【図１３】
2016071771.tif 000015
【図１４】
2016071771.tif 000016
【図１５】
2016071771.tif 000017