以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。以下に示す実施の形態では、本発明に係る電子装置を車輌に搭載される車載制御システムに含まれるECUに適用する場合を例として説明する。
(実施の形態1)
図1は、実施の形態1における車載制御システムの構成を示す構成図である。なお、図1では、車載制御システムの一部を示している。
車載制御システムは、ECU1、ECU2、ECU1,2が接続される車載LAN3、イグニッションスイッチ又はアクセサリスイッチ(図中IG,ACC)4、及び電圧監視部5を含む。
ECU1は例えばボディECUであり、ECU2はナビゲーションECUであって夫々、測定値、計算値、制御値等の各種物理量の数値情報を含むデータの送信、又は、エンジン、ブレーキ等を、マイコンによって制御する制御装置である。ECU1,2はいずれも車載LAN3に接続されており、ECU1,2は相互に制御データ等の通信が可能である。
ECU1は、マイコン100、リセット管理部15、電源回路16、及び電源スイッチ部17を備える。マイコン100は、CPU10、EEPROM(Electrically Erasable Programmable Read Only Memory:登録商標)11、RAM(Random Access Memory)12、入出力部13、及び通信部14を含む。マイコン100には、イグニッションスイッチ及びアクセサリスイッチ4からの信号を入力するIG,ACC端子、リセット信号を入力するRESET端子を有する。
マイコン100のCPU10は、マスクROM(図示せず)に記憶されている制御プログラムに基づき、ミラーの開閉、ヘッドライト、リアランプ、ルームランプのON/OFF、ドアロックの開閉などを含むボディ系のアクチュエータの制御処理、また、セキュリティセンサからの情報取得などのセキュリティ処理を含む信号処理を実行する。
EEPROM11には、ユーザの設定情報など、処理にて参照される各種情報が記憶されている。なお、EEPROM11は、EEPROMでなくフラッシュメモリ等を用いてもよい。
RAM12には、DRAM(Dynamic RAM)、SRAM(Static RAM)等を利用する。RAM12にはCPU10が読み出す制御プログラム等のコンピュータプログラムがロードされる他、処理によって発生する各種情報が一時的に記憶される。
入出力部13は、マイコン100と外部とのインタフェースである。マイコン100は、入出力部13が有するIG端子、ACC端子、RESET端子等により入力される信号、ミラー、ライト、ドアロックなどのアクチュエータからの制御信号、ドアロックセンサ、セキュリティセンサからのセンサ信号を入力し、各信号に基づいた制御処理を実行する。なお、ECU1のマイコン100は、RESET端子にリセット信号が入力され続ける間(RESET端子の電位がGNDである間)、割り込みにより図示しない水晶振動子等をも含めてマイコン100全体として動作が停止するように構成されている。リセット信号の入力が停止して、RESET端子の電位が所定の電位以上となった場合(リセット信号の入力が完了した場合)、動作が再開される。
通信部14は、ネットワークコントローラ機能を有し、マイコン100の車載LAN3を介した通信を実現させる。例えばCAN(Controller Area Network)プロトコルに準じた通信を実現する。他に、LIN(Local Interconnect Network)、FlexRay(登録商標)などでもよい。CPU10は、通信部14を介してECU2から車載LAN3へ送信された情報を受信することが可能であり、ECU2へ送信すべく車載LAN3へ情報を送信することが可能である。なお、物理層における通信を実現するトランシーバは図示を省略する。
リセット管理部15は、WD監視部(Watchdog部)151、リセット監視部152、及び記憶部153を含む。WD監視部151は、マイコン100の動作が正常であるか否かをリセット監視部152へ通知するための回路である。WD監視部151は、CPU10から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されない場合、CPU10に異常が発生したと判断して、リセット信号(パルス)をリセット監視部152へ入力する。
リセット監視部152は、リセット信号の状態を監視するための回路である。リセット監視部152は、WD監視部151から出力されるリセット信号を監視しており、連続したリセットが行われていないかを確認し、短時間に連続してリセットが発生していた場合、それがハードウェアの異常による連続リセットであるか否かを判断する。リセット監視部152は、ハードウェアの異常による連続したリセットであると判断した場合、リセットの回数をカウントして累積リセット回数nとして記憶部153に保存するとともに、電源遮断要求を電源スイッチ部17に送信する。また、リセット監視部152は、連続したリセットが行われていないと判断した場合、リセット信号をマイコン100のRESET端子へ入力する。これにより、CPU10から定期的にWDパルスが出力されない場合、CPU10へ割り込みがかかり、マイコン100、CPU10のリセットが実行される。なお、リセット監視部152はリセット間隔タイマ(図示せず)を備える。なお、記憶部153は車外の診断装置6によってアクセス可能である。
電源回路16は、+12Vの電源から、マイコン100内部の各構成部へ必要に応じて電圧を調整して電力を分配する回路である。電源回路16に電力が供給されない場合、マイコン100が内蔵する図示しない水晶振動子等も含めECU1のマイコン100全体が動作を停止する。
電源スイッチ部17は、ECU1への電力の供給をオンとオフとの間で切り替えることが可能に構成されている。電源スイッチ部17は、一端は電圧監視部5を介して+12Vのバッテリ又はオルタネータなどの電力供給装置に接続され、他端はECU1の電源回路16に接続されており、リセット監視部152からの電源遮断要求及びリセット回数nに応じてECU1への電力供給のオン/オフを切り替える。なお、電源スイッチ部17は再起動タイマ(図示せず)を備える。
ECU2は、ECU1と同様に、マイコン200、リセット管理部25、電源回路26、及び電源スイッチ部27を備える。マイコン100は、CPU20、EEPROM21、RAM22、入出力部23、及び通信部24を含む。マイコン100には、イグニッションスイッチ及びアクセサリスイッチ4からの信号を入力するIG,ACC端子、リセット信号を入力するRESET端子を有する。
マイコン200のCPU20は、マスクROM(図示せず)に記憶されている制御プログラム22に基づき、地図データの読出し、GPSアンテナ、ジャイロ装置、車速センサからの信号の受信、走行している道路の位置情報の算出などを含むナビゲーション系の信号処理を実行する。
EEPROM21には、ユーザの設定情報など、処理にて参照される各種情報が記憶されている。なお、EEPROM21は、EEPROMでなくフラッシュメモリ等を用いてもよい。
RAM22には、DRAM、SRAM等を利用する。RAM22にはCPU20が読み出す制御プログラムがロードされる他、処理によって発生する各種情報、例えば演算に用いる変数などの情報が一時的に記憶される。
入出力部23は、マイコン200と外部とのインタフェースである。マイコン200は、入出力部23が有するIG端子、ACC端子、RESET端子等により入力される信号、GPSアンテナからの衛星測位信号、ジャイロ装置、車速センサからのセンサ信号、CD−ROMなどの記憶装置からの地図データを入力し、各信号に基づいてナビゲーション処理を実行する。なお、ECU2のマイコン200は、RESET端子にリセット信号が入力され続ける間、割り込みにより図示しない水晶振動子等をも含めてマイコン200全体として動作が停止するように構成されている。リセット信号の入力が停止して、RESET端子の電位が所定の電位以上となった場合、動作が再開される。
通信部24は、ネットワークコントローラ機能を有し、マイコン200の車載LAN3を介した通信を実現させる。ECU1の通信部14と対応する。
リセット管理部25は、WD監視部251、リセット監視部252、及び記憶部253を含み、ECU1のリセット管理部15と対応する。WD監視部251は、マイコン200の動作が正常であるか否かをリセット監視部252へ通知するための回路であり、ECU1のWD監視部151と対応する。WD監視部251は、CPU20から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されない場合、CPU20に異常が発生したと判断して、リセット信号をリセット監視部252へ入力する。
リセット監視部252は、リセット信号の状態を監視するための回路であり、ECU1のリセット監視部152と対応する。リセット監視部252は、WD監視部251から出力されるリセット信号を監視しており、ハードウェアの異常による連続リセットであるか否かを判断する。リセット監視部252は、ハードウェアの異常による連続したリセットであると判断した場合、リセットの回数をカウントして累積リセット回数nとして記憶部253に保存するとともに、電源遮断要求を電源スイッチ部27に送信する。また、リセット監視部252は、連続したリセットが行われていないと判断した場合、リセット信号をマイコン200のRESET端子へ入力する。これにより、CPU20から定期的にWDパルスが出力されない場合、CPU20へ割り込みがかかり、マイコン200、CPU20のリセットが実行される。なお、リセット監視部252はリセット間隔タイマ(図示せず)を備える。なお、記憶部253は車外の診断装置6によってアクセス可能である。
電源回路26は、+12Vの電源から、マイコン200内部の各構成部へ必要に応じて電圧を調整して電力を分配する回路である。ECU1の電源回路16と対応する。
電源スイッチ部27は、ECU2への電力の供給をオンとオフとの間で切り替えることが可能に構成されており、ECU1の電源スイッチ部17と対応する。電源スイッチ部27は、一端は電圧監視部5を介して+12Vのバッテリ又はオルタネータなどの電力供給装置に接続され、他端はECU2の電源回路26に接続されており、リセット監視部252からの電源遮断要求及びリセット回数nに応じてECU2への電力供給のオン/オフを切り替える。なお、電源スイッチ部27は再起動タイマ(図示せず)を備える。
上述のように構成されるECU1のCPU10が暴走していた場合に実行される処理手順を、フローチャートを参照して説明する。図2は、実施の形態1におけるECU1のCPU10が暴走していた場合に実行された処理手順の一例を示すフローチャートである。
CPU10は、電源オンとなったとき、又はリセット信号の入力が完了して動作を開始すると、WDパルスを定期的にWD監視部151に出力する。WD監視部151は、マイコン100のCPU10から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されていたか否かを判断する(ステップS21)。WD監視部151は、WDパルスが定期的に入力されていたと判断した場合(S21:YES)、正常であるとリセット監視部152へ通知し、リセット監視部152は記憶部153に記憶されている累積リセット回数nを0にクリアし(ステップS32)、処理を終了する。
仮に、CPU10が暴走したとすると、WDパルスの出力は途絶する。そうなった場合、WD監視部151は、WDパルスが定期的に入力されていないと判断し(S21:NO)、CPU10に異常が発生したと判断して、リセット信号をリセット監視部152へ入力する(ステップS22)。リセット監視部152は、記憶部153に保存されている累積リセット回数n読み出して、該累積リセット回数nに基づいて、既に連続したリセットが行なわれていないかを判断する(ステップS23)。リセット監視部152は、連続したリセットが行なわれていないと判断した場合(S23:NO)、ステップS31へ進む。
ステップS31で、リセット監視部152は、リセット信号をマイコン100のRESET端子へ入力し、累積リセット回数nをインクリメントして記憶部153に保存し、リセット間隔タイマを作動し、処理を終了する。これにより、CPU10がリセットされる。なお、リセット間隔タイマのタイマ時間は、例えばECU1の出荷時に設定される。
一方、リセット監視部152は、連続したリセットが行なわれていたと判断した場合(S23:YES)、電源遮断要求と累積リセット回数nとを電源スイッチ部17へ出力する。
通常、自動車はエンジン始動時など大電流が必要であるとき、電圧は不安定になり、ハードウェアに異常がないにもかかわらず、ECU動作定格を割り込んでリセットが連続で発生することがあるが、あくまで正常動作の範囲内のため、本発明に係る電源制御処理から除外する。
そして、電源スイッチ部17は、電源遮断要求と累積リセット回数nを受信した後、バッテリ瞬断など通常起こりうる連続リセットであるか否かを確定するために、電源電圧が正常であるかを判断することを電圧監視部5に要求し、電圧監視部5によって、電源電圧が正常であるかを判断する(ステップS24)。
電源電圧が正常であるか否かを判断するには、バッテリに電圧監視センサをつけて直接読み取る方法や、ECUに流れる電流値からバッテリ容量を計算する方法、または過去の異常時の電圧降下状態の記録から、バッテリの劣化状態を推測するなどの方法を利用できる。
電源スイッチ部17は、電源電圧が異常であると判断した場合(S24:NO)、ステップS30へ進む。ステップS30で、リセット監視部152は、リセット間隔タイマのタイマ時間がタイムアウト(タイムオーバー)したかどうかを判定する。リセット監視部152は、リセット間隔タイマのタイマ時間がタイムアウトしないと判断した場合(S30:NO)、ステップS30を繰り返す。タイムアウトしたと判断されるまで、S30が繰り返される。リセット監視部152は、リセット間隔タイマのタイマ時間がタイムアウトしたと判断した場合(S30:YES)、ステップS31へ進む。
一方、電源スイッチ部17は、電源電圧が正常であると判断した場合(S24:YES)、ECU1への電力供給をオフにする(ステップS25)。その際、電源スイッチ部17は、ハードウェア異常のためECU1への電力供給を遮断したことを外部へ通知するために、電力遮断にかかわる異常情報を生成して記憶部153に記録する(ステップS26)。
具体的には、電力スイッチ部17は、記憶部153に記憶されているダイアグコードのうち、該異常情報に対応するダイアグコードと一致するものがあるかどうかを判断する。電力スイッチ部17は、前記異常情報に対応するダイアグコードと一致するものがないと判断した場合、対応のダイアグコードの値を1にし、該ダイアグコート及ぶその値を記憶部153に保存する。電力スイッチ部17は、前記異常情報に対応するダイアグコードと一致するものがあると判断した場合、該当するダイアグコードの値をインクリメントして更新する。診断装置6は後から異常の履歴を確認するために、記憶部153に保存しているダイアグコードを読み出して診断に利用する。なお、異常情報を記録するとき、異常情報の内容を運転者に知らしめるべく、異常情報の内容を示す警告音、警告灯、又は文字情報の出力を行なっても良い。これにより、運転者が異常を把握することが可能となる。特に、電子装置がセキュリティに関する装置である場合、セキュリティ機能が停止することを運転者に知らしめるべきである。
電源スイッチ部17は、ECU1への電力供給をオフにした後、リセット監視部152から受信した累積リセット回数nに基づいて、再起動タイマのタイマ時間を設定し、再起動タイマをスタートさせる(ステップS27)。本実施の形態1では、再起動タイマのタイマ時間は、累積リセット回数nの2乗のn2 に設定されるが、これに限定されるものではなく、例えばECU1の放電特性から自然放電が完了するのに必要な時間を計算しておき、一回のインターバルがその時間を越えてからのリトライでもなお復帰しない場合は、自然復帰の見込みが限りなく低いと判断して極端にインターバルを長くしても良い。
そして、電源スイッチ部17は、再起動タイマのタイマ時間がタイムアウト(タイムオーバー)したかどうかを判定する(ステップS28)。電源スイッチ部17は、再起動タイマのタイマ時間がタイムアウトしないと判断した場合(S28:NO)、ステップS28を繰り返す。タイムアウトしたと判断されるまで、ステップS28が繰り返される。電源スイッチ部17は、再起動タイマのタイマ時間がタイムアウトしたと判断した場合(S28:YES)、ステップS29へ進む。
ステップS29で、電源スイッチ部17は、累積リセット回数nをインクリメントして記憶部153に保存し、ECU1への電力供給をオンにする。これにより、処理を終了する。
ECU1への電力供給が再開され、またはリセットされると、CPU10は動作を再開する。このとき、もしハード異常が解消され正常動作に移行できる場合、CPU10はWDパルスを定期的にWD監視部151に出力する。WD監視部151は、WDパルスが定期的に入力されていたか否かを判断する(ステップS21)。WD監視部151は、WDパルスが定期的に入力されていたと判断した場合(S21:YES)、記憶部153に記憶されている累積リセット回数nを0にクリアし(ステップS32)、処理を終了する。
以上、図面に基づいてECU1のCPU10が暴走していた場合に実行される処理手順を詳述したが、ECU2のCPU20が暴走していた場合に、同様な処理手順を実行するので、重複する説明を省略する。
本実施の形態1によれば、WD監視部により、CPUの暴走を検知し、CPUのリセットが行われた場合、CPU暴走の原因がハードウェアの故障にあり、CPUが正常動作に戻らないとき、マイコンへの電力供給を停止する。そして、一定の時間間隔を挟んで再度ECUへの電力供給をオンにし、システムのリセットを行う。したがって、ハードウェア異常が時間経過により解消されていた場合は、自動的に、速やかに正常動作に復帰できる。なお、累積リセット回数に基づいて再起動タイマのタイマ時間を設定することで、むやみにリセットを繰り返して二次的な故障を引き起こすことを防ぐことが可能となる。さらに、電力遮断にかかわる異常情報を生成又は更新して保存することで、診断装置6は後から異常の履歴を確認するために、保存しているダイアグコードを読み出して診断に利用する。これのより、異常が発生したECUをあらかじめ特定することができる。
(実施の形態2)
実施の形態1では、ECU1、2はそれぞれ電源スイッチ部を備え、CPUが暴走していた場合の処理を独自で実行するような構成とした。これに対し実施の形態2では、電源マネージメントECUであるECUで各ECUへの電力供給をオンとオフとの間で切り替える。
図3は、実施の形態2における車載制御システムの構成を示す構成図であり、図4は図3における電源マネジメントECU70の構成を示す構成図である。なお、図3は、車載制御システムの一部を示している。
実施の形態2における車載制御システムは、ECU7、ECU8、ECU9、ECU7〜9が接続される車載LAN3、イグニッションスイッチ又はアクセサリスイッチ(図中IG,ACC)4、及び電圧監視部5を含む。
ECU7は電源マネージメントECUである。ECU8は実施の形態1におけるECU2同様、ボディECUであり、ECU9は実施の形態1におけるECU2同様、ナビケーションECUである。ECU7,8,9はいずれも車載LAN3に接続されており、ECU7,8,9は相互に制御データ等の通信が可能である。
ECU7は、マイコン700、リセット管理部75、電源回路76、及び電源スイッチ部77を備える。マイコン700は、CPU70、EEPROM71、RAM72、入出力部73、及び通信部74を含む。マイコン700には、イグニッションスイッチ及びアクセサリスイッチ4からの信号を入力するIG,ACC端子、リセット信号を入力するRESET端子を有する。
マイコン700のCPU70は、マスクROM(図示せず)に記憶されている制御プログラムに基づき、車載機器への電源分配、又はバッテリ及びオルタネータにおける充放電の制御処理などを含む信号処理を実行する。
EEPROM71には、ユーザの設定情報など、処理にて参照される各種情報が記憶されている。なお、EEPROM71は、EEPROMでなくフラッシュメモリ等を用いてもよい。
RAM72には、DRAM、SRAM等を利用する。RAM72にはCPU70が読み出す制御プログラム等のコンピュータプログラムがロードされる他、処理によって発生する各種情報が一時的に記憶される。
入出力部73は、マイコン700と外部とのインタフェースである。マイコン700は、入出力部73が有するIG端子、ACC端子、RESET端子等により入力される信号に基づいた制御処理を実行する。また、マイコン700は、ECU8,ECU9から入出力部73を介して入力された電源遮断要求に基づいて、ECU8,ECU9への電力供給をオンとオフとの間で切り替える。
通信部74は、ネットワークコントローラ機能を有し、マイコン700の車載LAN3を介した通信を実現させる。例えばCANプロトコルに準じた通信を実現する。他に、LIN、FlexRay(登録商標)などでもよい。CPU70は、通信部74を介してECU8、9から車載LAN3へ送信された情報を受信することが可能であり、ECU8、9へ送信すべく車載LAN3へ情報を送信することが可能である。なお、物理層における通信を実現するトランシーバは図示を省略する。
リセット管理部75は、WD監視部751、リセット監視部752、及び記憶部753を含む。WD監視部751は、マイコン700の動作が正常であるか否かをリセット監視部752へ通知するための回路である。WD監視部751は、CPU70から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されない場合、CPU70に異常が発生したと判断して、リセット信号をリセット監視部752へ入力する。
リセット監視部752は、リセット信号の状態を監視するための回路である。リセット監視部752は、WD監視部751から出力されるリセット信号を監視しており、連続したリセットが行われていないかを確認し、短時間に連続してリセットが発生していた場合、それがハードウェアの異常による連続リセットであるか否かを判断する。リセット監視部752は、ハードウェアの異常による連続したリセットであると判断した場合、リセットの回数をカウントして累積リセット回数nとして記憶部753に保存するとともに、電源遮断要求を電源スイッチ部77に送信する。また、リセット監視部752は、連続したリセットが行われていないと判断した場合、リセット信号をマイコン700のRESET端子へ入力する。これにより、CPU70から定期的にWDパルスが出力されない場合、CPU70へ割り込みがかかり、マイコン700、CPU70のリセットが実行される。なお、リセット監視部752はリセット間隔タイマ(図示せず)を備える。
電源回路76は、+12Vの電源から、マイコン700内部の各構成部へ必要に応じて電圧を調整して電力を分配する回路である。電源回路76に電力が供給されない場合、マイコン700が内蔵する図示しない水晶振動子等も含めECU7のマイコン700全体が動作を停止する。
電源スイッチ部77は、ECU7への電力の供給をオンとオフとの間で切り替えることが可能に構成されている。電源スイッチ部77は、一端は電圧監視部5を介して+12Vのバッテリ又はオルタネータなどの電力供給装置に接続され、他端はECU7の電源回路76に接続されており、リセット監視部752からの電源遮断要求及びリセット回数nに応じてECU7への電力供給のオン/オフを切り替える。なお、電源スイッチ部77は再起動タイマ(図示せず)を備える。
ECU8は、マイコン800、リセット管理部85、電源回路86、及び電源スイッチ87を備える。マイコン800は、CPU80、EEPROM81、RAM82、入出力部83、及び通信部84を含む。マイコン800には、イグニッションスイッチ及びアクセサリスイッチ4からの信号を入力するIG,ACC端子、リセット信号を入力するRESET端子を有する。
電源スイッチ87は、端子を3つ有し、1つはECU8の電源回路86、1つは+12Vのバッテリ又はオルタネータなどの電力供給装置に接続され、残りの1つは接地されている。電源スイッチ87は、ECU8への電力の供給をオンとオフとの間で切り替えることが可能にしてある。電源スイッチ87は後述するように、ECU7からの制御信号によりECU8への電力供給のオン/オフを切り替える。
ECU8のCPU80、EEPROM81、RAM82、入出力部83、通信部84、及び電源回路86の機能は夫々、実施の形態1におけるECU1のCPU10、EEPROM11、RAM12、入出力部13、通信部14、及び電源回路16と基本的に同様であるので、詳細な説明を省略する。以下、ECU8のリセット管理部85を詳しく説明する。
リセット管理部85は、WD監視部851、リセット監視部852、及び記憶部853を含む。WD監視部851は、マイコン100の動作が正常であるか否かをリセット監視部852へ通知するための回路である。WD監視部851は、CPU80から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されない場合、CPU80に異常が発生したと判断して、リセット信号をリセット監視部852へ入力する。
リセット監視部852は、リセット信号の状態を監視するための回路である。リセット監視部852は、WD監視部851から出力されるリセット信号を監視しており、連続したリセットが行われていないかを確認し、短時間に連続してリセットが発生していた場合、それがハードウェアの異常による連続リセットであるか否かを判断する。リセット監視部852は、ハードウェアの異常による連続したリセットであると判断した場合、リセットの回数をカウントして累積リセット回数nとして記憶部853に保存するとともに、電源遮断要求をECU7に送信する。また、リセット監視部852は、連続したリセットが行われていないと判断した場合、リセット信号をマイコン800のRESET端子へ入力する。これにより、CPU80から定期的にWDパルスが出力されない場合、CPU80へ割り込みがかかり、マイコン800、CPU80のリセットが実行される。
なお、リセット監視部852はリセット間隔タイマ(図示せず)を備え、連続したリセットであると判断し電源遮断要求をECU7に送信した後、該リセット間隔タイマで計時する所定の期間内にECU8への電力供給が停止されない場合、リセット信号をマイコン800のRESET端子へ入力することで、マイコン800、CPU80のリセットを実行する。
ECU9は、マイコン900、リセット管理部95、電源回路96、及び電源スイッチ97を備える。マイコン900は、CPU90、EEPROM91、RAM92、入出力部93、及び通信部94を含む。マイコン900には、イグニッションスイッチ及びアクセサリスイッチ4からの信号を入力するIG,ACC端子、リセット信号を入力するRESET端子を有する。
電源スイッチ97は、端子を3つ有し、1つはECU9の電源回路96、1つは+12Vのバッテリ又はオルタネータなどの電力供給装置に接続され、残りの1つは接地されている。電源スイッチ97は、ECU9への電力の供給をオンとオフとの間で切り替えることが可能にしてある。電源スイッチ97は後述するように、ECU7からの制御信号によりECU9への電力供給のオン/オフを切り替える。
ECU9のCPU90、EEPROM91、RAM92、入出力部93、通信部94、及び電源回路96の機能は夫々、実施の形態1におけるECU2のCPU20、EEPROM21、RAM22、入出力部23、通信部24、及び電源回路26と基本的に同様であるので、詳細な説明を省略する。以下、ECU9のリセット管理部95を詳しく説明する。
リセット管理部95は、WD監視部951、リセット監視部952、及び記憶部953を含む。WD監視部951は、マイコン900の動作が正常であるか否かをリセット監視部952へ通知するための回路である。WD監視部951は、CPU90から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されない場合、CPU90に異常が発生したと判断して、リセット信号をリセット監視部952へ入力する。
リセット監視部952は、リセット信号の状態を監視するための回路である。リセット監視部952は、WD監視部951から出力されるリセット信号を監視しており、連続したリセットが行われていないかを確認し、短時間に連続してリセットが発生していた場合、それがハードウェアの異常による連続リセットであるか否かを判断する。リセット監視部952は、ハードウェアの異常による連続したリセットであると判断した場合、リセットの回数をカウントして累積リセット回数nとして記憶部953に保存するとともに、電源遮断要求をECU7に送信する。また、リセット監視部952は、連続したリセットが行われていないと判断した場合、リセット信号をマイコン900のRESET端子へ入力する。これにより、CPU90から定期的にWDパルスが出力されない場合、CPU90へ割り込みがかかり、マイコン900、CPU90のリセットが実行される。
なお、リセット監視部952はリセット間隔タイマ(図示せず)を備え、連続したリセットであると判断し電源遮断要求をECU7に送信した後、該リセット間隔タイマで計時する所定の期間内にECU9への電力供給が停止されない場合、リセット信号をマイコン900のRESET端子へ入力することで、マイコン900、CPU90のリセットを実行する。
上述のように構成されるECU7のリセット管理部75、電源回路76、及び電源スイッチ部77の機能は夫々、実施の形態1におけるECU1(2)のリセット管理部15(25)、電源回路16(26)、及び電源スイッチ部17(27)のと基本的に同様であり、ECU7のCPU70が暴走していた場合に実行される処理手順も、実施の形態1におけるECU1(2)と基本的に同様であるので、詳細な説明を省略する。
以下、上述のように構成されるECU8,9のCPU80,90が暴走していた場合に実行される処理手順を、フローチャートを参照して説明する。図5は、実施の形態2におけるECU8のCPU80が暴走していた場合に実行された処理手順の一例を示すフローチャートである。図6は、実施の形態2における電源マネジメントECUが実行した処理手順の一例を示すフローチャートである。
CPU80は、電源オンとなったとき、又はリセット信号の入力が完了して動作を開始すると、WDパルスを定期的にWD監視部851に出力する。WD監視部851は、マイコン800のCPU80から定期的に出力されるべきWDパルスを監視しており、WDパルスが定期的に入力されていたか否かを判断する(ステップS51)。WD監視部851は、WDパルスが定期的に入力されていたと判断した場合(S51:YES)、正常であるとリセット監視部852へ通知し、リセット監視部852は記憶部853に記憶されている累積リセット回数nを0にクリアし(ステップS58)、処理を終了する。
仮に、CPU80が暴走したとすると、WDパルスの出力は途絶する。そうなった場合、WD監視部851は、WDパルスが定期的に入力されていないと判断し(S51:NO)、CPU80に異常が発生したと判断して、リセット信号をリセット監視部852へ入力する(ステップS52)。リセット監視部852は、記憶部853に保存されている累積リセット回数n読み出して、該累積リセット回数nに基づいて、既に連続したリセットが行なわれていないかを判断する(ステップS53)。リセット監視部852は、連続したリセットが行なわれていないと判断した場合(S53:NO)、ステップS56へ進む。
ステップS56で、リセット監視部852は、累積リセット回数nをインクリメントして記憶部853に保存し、ステップS57へ進む。ステップS57で、リセット監視部852は、リセット信号をマイコン800のRESET端子へ入力し、累積リセット回数nに基づいてリセット間隔タイマのタイマ時間を設定し、リセット間隔タイマを作動し、処理を終了する。これにより、CPU80がリセットされる。なお、本実施の形態2では、リセット間隔タイマのタイマ時間は、累積リセット回数nの2乗の倍数2n2 に設定される。
一方、リセット監視部852は、連続したリセットが行なわれていたと判断した場合(S53:YES)、リセット監視部852は、累積リセット回数nをインクリメントして記憶部853に保存した後、該累積リセット回数nと電源遮断要求とを、ECU7へ出力する(ステップS54)。
そして、リセット監視部852は、設定したリセット間隔が経過したかどうか(リセット間隔タイマのタイマ時間がタイムアウトしたかどうか)を判定する(ステップS55)。リセット監視部852は、設定したリセット間隔が経過しない(リセット間隔タイマのタイマ時間がタイムアウトしない)と判断した場合(S55:NO)、ステップS55の判定を繰り返す。リセット監視部852は、設定したリセット間隔が経過した(リセット間隔タイマのタイマ時間がタイムアウトした)と判断した場合(S55:YES)、ステップS57へ進む。これにより、設定したリセット間隔内にECU8への電力供給がECU7により遮断されない場合、ステップS57で、CPU80がリセットされ、処理を終了する。
一方、ECU7のCPU70は、ECU8からの累積リセット回数n及び電源遮断要求を入出力部73により受信したか否かを判断する(ステップS61)。CPU70は、ステップS61にて累積リセット回数n及び電源遮断要求を受信していないと判断した場合(S61:NO)、そのまま処理を終了する。当該処理は、繰り返し実行されるので、ステップS61へ戻り、制御要求を受信したと判断するまでは、ステップS61:NOが繰り返される。
CPU70は、ステップS61にて累積リセット回数n及び電源遮断要求を受信したと判断した場合(S61:YES)、バッテリ瞬断など通常起こりうる連続リセットであるか否かを確定するために、電源電圧が正常であるかを判断することを電圧監視部5に要求し、電圧監視部5によって、電源電圧が正常であるかを判断する(ステップS62)。
CPU70は、電源電圧が異常であると判断した場合(S62:NO)、そのまま処理を終了する。一方、CPU70は、電源電圧が正常であると判断した場合(S62:YES)、入出力部73により制御信号を出力させて電源スイッチ87をオフにしECU8への電力供給をオフにする(ステップS63)。
その際、CPU70は、ハードウェア異常のためECU8への電力供給を遮断したことを外部へ通知するために、ECU8の電力遮断にかかわる異常情報を生成して通信部74によりEEPROM71に記録する(ステップS64)。
具体的には、CPU70は、EEPROM71に記憶されているダイアグコードのうち、該異常情報に対応するダイアグコードと一致するものがあるかどうかを判断する。CPU70は、前記異常情報に対応するダイアグコードと一致するものがないと判断した場合、対応のダイアグコードの値を1にし、該ダイアグコート及ぶその値をEEPROM71に保存する。CPU70は、前記異常情報に対応するダイアグコードと一致するものがあると判断した場合、該当するダイアグコードの値をインクリメントして更新する。診断装置6は後から異常の履歴を確認するために、EEPROM71に保存しているダイアグコードを読み出して診断に利用する。なお、異常情報を記録するとき、異常情報の内容を運転者に知らしめるべく、異常情報の内容を示す警告音、警告灯、又は文字情報の出力を行なっても良い。これにより、運転者が異常を把握することが可能となる。特に、電子装置がセキュリティに関する装置である場合、セキュリティ機能が停止することを運転者に知らしめるべきである。
CPU70は、ECU8への電力供給をオフにした後、入出力部73により受信した累積リセット回数nに基づいて、電力再開タイマのタイマ時間を設定し、電力再開タイマをスタートさせる(ステップS65)。本実施の形態2では、電力再開タイマのタイマ時間は、累積リセット回数nの2乗のn2 に設定される。
そして、CPU70は、電力再開タイマのタイマ時間がタイムアウトしたかどうかを判定する(ステップS66)。CPU70は、電力再開タイマのタイマ時間がタイムアウトしないと判断した場合(S66:NO)、ステップS66を繰り返す。タイムアウトしたと判断されるまで、S66が繰り返される。CPU70は、電力再開タイマのタイマ時間がタイムアウトしたと判断した場合(S66:YES)、ステップS67へ進む。
ステップS67で、CPU70は、電源スイッチ87をオンにさせてECU8への電力供給をオンにする。これにより、処理を終了する。
ECU8への電力供給が再開され、またはリセットされると、CPU80は動作を再開する。このとき、もしハード異常が解消され正常動作に移行できる場合、CPU80はWDパルスを定期的にWD監視部851に出力する。WD監視部851は、WDパルスが定期的に入力されていたか否かを判断する(ステップS51)。WD監視部851は、WDパルスが定期的に入力されていたと判断した場合(S51:YES)、記憶部853に記憶されている累積リセット回数nを0にクリアし(ステップS58)、処理を終了する。
以上、図面に基づいてECU8のCPU80が暴走していた場合に実行される処理手順を詳述したが、ECU9のCPU90が暴走していた場合に、同様な処理手順を実行するので、重複する説明を省略する。
本実施の形態2では、WD監視部により、ECUのCPUの暴走を検知し、CPUのリセットが行われた場合、CPU暴走の原因がハードウェアの故障にあり、CPUが正常動作に戻らないとき、電源マネージメントECUにより暴走しているECUへの電力供給を停止する。そして、一定の間隔を挟んで再度該ECUへの電力供給をオンにし、システムのリセットを行う。したがって、ハードウェア異常が時間経過により解消されていた場合は、自動的に、速やかに正常動作に復帰できる。なお、累積リセット回数に基づいて電力再開タイマのタイマ時間を設定することで、むやみにリセットを繰り返して二次的な故障を引き起こすことを防ぐことが可能となる。さらに、電力遮断にかかわる異常情報を生成又は更新して保存することで、診断装置6は後から異常の履歴を確認するために、保存しているダイアグコードを読み出して診断に利用する。これにより、異常が発生したECUをあらかじめ特定することができる。
また、本実施の形態2では、リセット間隔タイマのタイマ時間を累積リセット回数nの2乗の倍数2n2 に設定し、電力再開タイマのタイマ時間を累積リセット回数nの2乗のn2 に設定する。これにより、電力再開タイマのタイマ時間内に暴走しているECUへの電力供給が電源マネージメントECUにより遮断されない場合、リセット間隔タイマのタイマ時間が経過すると、暴走しているECUのCPUのリセットを行う。したがって、電源マネージメントECU自身が故障にあり、または通信故障などにより、暴走しているECUへの電力供給が遮断されない場合、自動にリセットを行う。なお、累積リセット回数に基づいて電力再開タイマ及びリセット間隔タイマそれぞれのタイマ時間を設定することで、むやみにリセットを繰り返して二次的な故障を引き起こすことを防ぐことが可能となる。
なお、リセット間隔タイマ及び電力再開タイマそれぞれのタイマ時間の設定は、これに限定されるものではなく、前者を後者より長くすればよい。
なお、電源マネージメントECU自身が故障しているか、または通信に異常が発生しているかなどにより、暴走しているECUへの電力供給が遮断されない場合、該ECUが自動にリセットを行う。例えば、始動時など電源マネージメントECUも連続的にリセットされており、暴走しているECUへの電力供給が遮断されない場合、該ECUは、電力供給が電源マネージメントECUにより遮断されないにもかかわらず、リセットを行なう。したがって、始動時など大電流が必要であるとき、電圧は不安定である場合、ECUは自動的に速やかに正常動作に移行することができる。
実施の形態1及び2では、累積リセット回数nが0である場合、連続したリセットが行なわれていないと判断し、累積リセット回数nが0より大きい場合、連続したリセットが行なわれていたと判断するが、これに限定されるものではなく、例えば累積リセット回数nが3以下である場合、連続したリセットが行なわれていないと判断し、累積リセット回数nが3より大きい場合、連続したリセットが行なわれていたと判断してもよい。
実施の形態1及び2では、ECUが複数回、例えば5回以上リセットされた場合、故障していることを警告灯又はビープなどで外部へ通知してもよい。
実施の形態1及び2では、本発明に係る制御処理を、車載制御システムにおけるECUに適用した例を示した。しかしながら本発明はこれに限らず、電力供給を制御することでハードウェアの異常を解消できる各種の制御装置に適用させてもよいことは勿論である。
なお、開示された実施の形態は、全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上述の説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内での全ての変更が含まれることが意図される。