(57)【特許請求の範囲】
【請求項１】
車両に搭載される車両用記憶管理装置であって、
前記車両における故障を表す故障コードを、前記車両内に設けられる不揮発性メモリにおける互いに異なる３つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えた車両用記憶管理装置において、
前記３つの故障コード記憶領域への前記故障コードの記憶が完了した後に、その３つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、そのステータス情報を記憶するために前記不揮発性メモリに設けられる互いに異なる３つの記憶領域（以下、ステータス情報記憶領域と言う）のそれぞれに等しく記憶させるステータス情報記憶制御手段と、
前記３つのステータス情報記憶領域のデータの多数決を採って、その結果に基づき、前記３つの故障コード記憶領域のデータを採用するか否かを判定する採用判定手段を備え、その採用判定手段により採用すると判定されると、互いに異なる前記３つの故障コード記憶領域のデータの多数決を採って、その結果に基づき記憶に関する異常を判定する異常判定手段と、
を備えることを特徴とする車両用記憶管理装置。
【請求項２】
請求項１に記載の車両用記憶管理装置において、
前記不揮発性メモリのデータを初期化するか否かを判定する初期化判定手段と、
前記初期化判定手段により、前記不揮発性メモリのデータを初期化すると判定されると、前記３つのステータス情報記憶領域のデータを初期化し、その後に、前記３つの故障コード記憶領域のデータを初期化する初期化制御手段と、
を備えていることを特徴とする車両用記憶管理装置。
【請求項３】
請求項１又は２に記載の車両用記憶管理装置において、
前記異常判定手段は、
前記採用判定手段により前記３つの故障コード記憶領域のデータを採用しないと判定されると、その３つの故障コード記憶領域のデータを初期化する復元手段を備えていることを特徴とする車両用記憶管理装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の車両用記憶管理装置において、
前記ステータス情報記憶制御手段は、前記故障コードを含むデータを、前記ステータス情報として前記ステータス情報記憶領域に記憶させることを特徴とする車両用記憶管理装置。
【請求項５】
車両に搭載される車両用記憶管理装置であって、
前記車両における故障を表す故障コードを、前記車両内に設けられる不揮発性メモリにおける互いに異なる３つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えた車両用記憶管理装置において、
前記３つの故障コード記憶領域への前記故障コードの記憶が完了した後に、その３つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、前記不揮発性メモリにおけるそのステータス情報を記憶するための記憶領域（以下、ステータス情報記憶領域と言う）に記憶させるステータス情報記憶制御手段と、
前記不揮発性メモリのデータを初期化するか否かを判定する初期化判定手段と、
前記初期化判定手段により、前記不揮発性メモリのデータを初期化すると判定されると、前記ステータス情報記憶領域のデータを初期化し、その後に、前記３つの故障コード記憶領域のデータを順次初期化する初期化制御手段と、
を備えていることを特徴とする車両用記憶管理装置。
【請求項６】
車両に搭載される車両用記憶管理装置であって、
前記車両における故障を表す故障コードを、前記車両内に設けられる不揮発性メモリにおける互いに異なる３つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えた車両用記憶管理装置において、
前記３つの故障コード記憶領域への前記故障コードの記憶が完了した後に、その３つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、前記不揮発性メモリにおけるそのステータス情報を記憶するための記憶領域（以下、ステータス情報記憶領域と言う）に記憶させるステータス情報記憶制御手段を備え、
前記ステータス情報記憶制御手段は、前記故障コードを含むデータを、前記ステータス情報として前記ステータス情報記憶領域に記憶させることを特徴とする車両用記憶管理装置。
【請求項７】
請求項５又は請求項６に記載の車両用記憶管理装置において、
互いに異なる前記３つの故障コード記憶領域のデータの多数決を採って、その結果に基づき記憶に関する異常を判定する異常判定手段を備え、
前記異常判定手段は、前記ステータス情報記憶領域のデータに基づき前記３つの故障コード記憶領域のデータを採用するか否かを判定する採用判定手段を備え、その採用判定手段により採用すると判定されると、その３つの故障コード記憶領域のデータの多数決を採って、その結果に基づき記憶に関する異常を判定することを特徴とする車両用記憶管理装置。
【請求項８】
車両に搭載される車両用記憶管理装置であって、
前記車両における故障を表す故障コードを、前記車両内に設けられる不揮発性メモリにおける互いに異なる３つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えた車両用記憶管理装置において、
前記３つの故障コード記憶領域への前記故障コードの記憶が完了した後に、その３つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、前記不揮発性メモリにおけるそのステータス情報を記憶するための記憶領域（以下、ステータス情報記憶領域と言う）に記憶させるステータス情報記憶制御手段と、
互いに異なる前記３つの故障コード記憶領域のデータの多数決を採って、その結果に基づき記憶に関する異常を判定する異常判定手段と、を備え、
前記異常判定手段は、前記ステータス情報記憶領域のデータに基づき前記３つの故障コード記憶領域のデータを採用するか否かを判定する採用判定手段を備え、その採用判定手段により採用すると判定されると、その３つの故障コード記憶領域のデータの多数決を採って、その結果に基づき記憶に関する異常を判定する一方、前記採用判定手段により前記３つの故障コード記憶領域のデータを採用しないと判定されるとその３つの故障コード記憶領域のデータを初期化する復元手段を備えている、ことを特徴とする車両用記憶管理装置。
【請求項９】
車両に搭載される車両用記憶管理装置であって、
前記車両における故障を表す故障コードを、前記車両内に設けられる不揮発性メモリにおける互いに異なる２つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えた車両用記憶管理装置において、
前記２つの故障コード記憶領域への前記故障コードの記憶が完了した後に、その２つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、そのステータス情報を記憶するために前記不揮発性メモリに設けられる互いに異なる２つの記憶領域（以下、ステータス情報記憶領域と言う）のそれぞれに等しく記憶させるステータス情報記憶制御手段と、
前記２つのステータス情報記憶領域のデータが互いに一致するか否かを判断し、その判断結果に基づき、前記２つの故障コード記憶領域のデータを採用するか否かを判定する採用判定手段を備え、その採用判定手段により採用すると判定されると、互いに異なる前記２つの故障コード記憶領域のデータが互いに一致するか否かを判断して、その判断結果に基づき記憶に関する異常を判定する異常判定手段と、
を備えることを特徴とする車両用記憶管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載される車両用記憶管理装置に関し、特に、車両における故障を表す故障コードの記憶管理を行うものである。
【背景技術】
【０００２】
従来、車両（例えば自動車）に搭載されてその車両の各部を制御する電子制御装置（以下、ＥＣＵと記載する）は、必要に応じてその車両における所定の検出対象について故障の有無を判断し、故障有りと判断すると、その故障を表す故障コードをＥＣＵに設けられる半導体メモリ（例えば、ＳＲＡＭ、ＥＥＰＲＯＭ）に記憶させるようになっている。
【０００３】
そして、故障コードを半導体メモリに記憶させるこの種の記憶管理において、半導体メモリへの書き込みエラー、半導体メモリに記憶されたデータのデータ化け、或いは半導体メモリ自体の異常（物理的異常）などの記憶に関する異常を検出する技術が、例えば特許文献１，２に記載されている。
【０００４】
特許文献１，２には、半導体メモリの記憶領域を例えば３つの領域に分割してその分割した３つの領域のそれぞれに同一のデータを書き込み、それらの多数決を採って、２つ以上で一致しない場合（つまり、３つのデータが互いに異なる場合）、異常（記憶に関する異常）と判定する技術が開示されている。
【０００５】
ところで、半導体メモリの３つの領域に記憶されたデータの多数決を採る場合、その領域のアドレス単位（バイト単位）、つまりデータ全体で多数決を採る場合（例えば、特許文献２参照）と、データを構成するビット毎に、そのビット単位で多数決を採る場合（例えば、特許文献３参照）とがある。
【０００６】
以下、この点について、図を用いて説明する。
まず、ビット単位で多数決を採る場合について、図９を用いて説明する。
ここでは、記憶すべき故障コードは、０ｘ０１１８であるとする。尚、その０ｘ０１１８のうち、後半４桁が、１６進数表示により所定のデータ（故障コード）を表す実質的部分である。前半２桁は、後半４桁が１６進数表示であることを表す符号である。そして、実際の記憶データは、２進数で表したデータであり、２バイトのデータ量を有する。尚、以下、３つの記憶領域を１面、２面、３面というように区別する。
【０００７】
図９（ａ）にて、１面目には、０ｘ０１１８を２進数で表した「００００  ０００１  ０００１  １０００」が記憶されているものとする。２面目についても同様である。そして、３面目については、データ化け等の異常（ここでは、１３ビット目）が生じ、「００００  ０００１  ０００１  ００００」が記憶されているとする。
【０００８】
この場合、ビット単位で多数決を採ることにより、１３ビット目のデータは、「１」と認識される。つまり、多数決一致により、故障コードは、「００００  ０００１  ０００１  １０００」（０ｘ０１１８）となる。
【０００９】
次に、図９（ｂ）にて、１面目には、「００００  ０００１  １００１  １００１」（０ｘ０１９９）が記憶され、２面目には、「００００  ００００  ０００１  ００００」（０ｘ００１０）が記憶され、３面目には、「００００  ００１１  ０１００  １０１０」（０ｘ０３４Ａ）が記憶されているものとする。この場合、１ビット目から順に、ビット毎に多数決を採っていくと、その多数決一致により得られる故障コードは、「００００  ０００１  ０００１  １０００」（０ｘ０１１８）となる。つまり、１〜３面目のそれぞれに、意図する故障コード（０ｘ０１１８：「００００  ０００１  ０００１  １０００」）と全く異なるデータが記憶されているにもかかわらず、ビット単位の多数決を採ることで、たまたま、意図する故障コード（０ｘ０１１８：「００００  ０００１  ０００１  １０００」）に一致してしまう場合もある。
【００１０】
この点、次に説明するバイト単位の多数決のほうがより好ましいとも考えられる。
バイト単位の多数決について図１０を用いて説明する。
図１０（ａ）において、１面目には、０ｘ０１１８を２進数で表した「００００  ０００１  ０００１  １０００」が記憶されている。２面目についても同様である。そして、３面目については、データ化け等の異常（ここでは、１３ビット目）が生じ、「００００  ０００１  ０００１  ００００」（０ｘ０１１０）が記憶されているとする。
【００１１】
この場合、バイト単位（２バイトのデータ全体）で多数決をとると、１面目の「００００  ０００１  ０００１  １０００」（０ｘ０１１８）、２面目の「００００  ０００１  ０００１  １０００」（０ｘ０１１８）、及び３面目の「００００  ０００１  ０００１  ００００」（０ｘ０１１０）の全体の多数決一致を採ることになる。この場合、１面目及び２面目のデータ（故障コード）が一致するため、多数決結果は、「００００  ０００１  ０００１  １０００」（０ｘ０１１８）となる。
【００１２】
次に、図１０（ｂ）にて、１面目には「００００  ０００１  １００１  １００１」（０ｘ０１９９）が記憶され、２面目には「００００  ００００  ０００１  ００００」（０ｘ００１０）が記憶され、３面目には「００００  ００１１  ０１００  １０１０」（０ｘ０３４Ａ）が記憶されているものとする。
【００１３】
この場合において、バイト単位で多数決を採ると、１面目の「００００  ０００１  １００１  １００１」（０ｘ０１９９）、２面目の「００００  ００００  ０００１  ００００」（０ｘ００１０）、及び３面目の「００００  ００１１  ０１００  １０１０」（０ｘ０３４Ａ）の全体の多数決一致を採ることになる。そして、この場合、１〜３面のデータが互いに異なるため、多数決を採ることができず、異常判定がなされる。
【００１４】
以上の説明の中で、特に、図９（ｂ）と図１０（ｂ）とを比較して分かるように、ビット単位で多数決を採る場合は、バイト単位で多数決を採る場合と比べると、適切に異常を検出できない場合もある。
【特許文献１】特開２００６−２８６１１１号公報
【特許文献２】特開２００５−１９６５１５号公報
【特許文献３】特開２００１−６７２７２号公報
【発明の開示】
【発明が解決しようとする課題】
【００１５】
ところで、バイト単位で多数決を採る場合においても、以下のような別の問題もある。
例えば、３面のうちの２面目にデータを書き込んでいる時に電源が遮断されてその２面目にはデータが書き込まれず、３面不一致となる可能性がある。そしてこの場合、異常判定がなされてしまう。つまり、半導体メモリ自体にはなんら問題が無いのに異常と断定されてしまい、この場合には、信頼できるデータへの復元の余地があるにもかかわらず復元されなくなってしまうことになりかねない。
【００１６】
本発明は、こうした問題に鑑みなされたもので、車両に設けられる不揮発性メモリの複数の記憶領域に故障を表す故障コードを等しく記憶させる車両用記憶管理装置において、不揮発性メモリの複数の記憶領域に記憶されるデータの異常なのか記憶段階で生じた結果なのかを確認できるようにすること、また、そのデータの復元の機会を不要に失わないようにし、ひいては記憶に関する信頼性を向上させることを目的とする。
【課題を解決するための手段】
【００１７】
上記目的を達成するためになされた本願発明は、車両に搭載される車両用記憶管理装置であって、この車両用記憶管理装置は、車両における故障を表す故障コードを、車両内に設けられる不揮発性メモリにおける互いに異なる３つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えている。
【００１８】
また、３つの故障コード記憶領域への故障コードの記憶が完了した後に、その３つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、そのステータス情報を記憶するために不揮発性メモリに設けられる互いに異なる３つの記憶領域（以下、ステータス情報記憶領域と言う）のそれぞれに等しく記憶させるステータス情報記憶制御手段を備えている。
【００１９】
また、次のような異常判定手段を備えている。具体的には、３つのステータス情報記憶領域のデータの多数決を採って、その結果に基づき、３つの故障コード記憶領域のデータを採用するか否かを判定する採用判定手段を備え、その採用判定手段により採用すると判定されると、互いに異なる３つの故障コード記憶領域のデータの多数決を採って、その結果に基づき記憶に関する異常を判定する異常判定手段である。
【００２０】
このため、例えば、３つの故障コード記憶領域のうち２つ目の故障コード記憶領域（２面目）に故障コードが書き込まれている際に電源遮断が生じ、３つの故障コード記憶領域のデータが互いに異なる（３面不一致）というような場合における記憶に関する異常の判定に際し、ステータス情報に基づき３つの故障コード記憶領域には故障コードが記憶されていない（記憶が完了していない）と判断できる。また、その３つの故障コード記憶領域のデータを採用しないと判定することができる。
【００２２】
従って、３つの故障コード記憶領域に故障コードを記憶させている最中に電源遮断が生じるなどして３面不一致となったような場合において、その３つの故障コード記憶領域のデータを採用しない（言い換えれば、異常か否かの判定をしない）ため、異常判定がなされることがない。これによれば、異常であると断定されずに、復元の可能性が残されることになる。
【００２３】
このような本発明の装置では、ステータス情報記憶領域のデータに基づけば、３つの故障コード記憶領域のデータについて３面不一致となった場合でも、その原因が記憶途中の電源遮断等であるような場合（言い換えれば、復元の余地がある場合）には、異常判定を回避できるようになっている（復元の可能性が残されるようになっている）。
【００２４】
したがって、記憶に関する異常（３面不一致）の原因が例えば記憶途中の電源遮断であるような場合を判別でき、３つの故障コード記憶領域のデータの復元の機会を不要に失わないようにし、ひいては記憶に関する信頼性を向上させることができる。
【００２６】
さらには、本発明によれば、３つのステータス情報記憶領域に記憶されたデータの多数決が採られるため、そのデータ（つまり、ステータス情報）の信頼性が向上する。具体的に、ステータス情報記憶領域の１つにデータ化け等が生じても、残りの２つのステータス情報記憶領域のデータが正しければ、正しいデータ（ステータス情報）が得られる。
【００２７】
尚、本発明の装置で、その３つのステータス情報記憶領域にステータス情報が所定の順序で記憶されると、以下のような作用効果が得られる。
例えば、３つのステータス情報記憶領域のうち２つ目のステータス情報記憶領域（２面目）にステータス情報が書き込まれている際に電源遮断が生じ、その２つ目、及び３つ目のステータス情報記憶領域にステータス情報が記憶されていないような場合には、多数決結果に基づき、３つの故障コード記憶領域のデータを採用しない（記憶に関する異常を判定しない）と判定するようにすることができる。逆に、３つのステータス情報記憶領域のうち、少なくとも２つ目のステータス情報記憶領域まで、３つの故障コード記憶領域への故障コードの記憶が完了したことを表すステータス情報が記憶されれば、多数決結果に基づき、３つの故障コード記憶領域のデータを採用する（記憶に関する異常を判定する）と判定するようにすることができる。
【００２８】
本発明の装置では３つの故障コード記憶領域への故障コードの記憶が完了してはじめて、その３つの故障コード記憶領域のデータを採用する（記憶に関する異常を判定する）のであるが、このような本装置において、さらに、ステータス情報が所定の順序で記憶されるような構成とすれば、３つの故障コード記憶領域への故障コードの記憶が完了したことの確実性をより高いレベルで得ることができる。
【００２９】
また、本発明の装置では、不揮発性メモリのデータを初期化するか否かを判定する初期化判定手段と、初期化判定手段により、不揮発性メモリのデータを初期化すると判定されると、３つのステータス情報記憶領域のデータを初期化し、その後に、３つの故障コード記憶領域のデータを初期化する初期化制御手段と、を備え得る。
【００３０】
例えば、故障コードの記憶に関し、故障コードが表す故障について複数のトリップ期間（車両のイグニションスイッチのオンからオフまで、或いはオンから次のオンまでの期間）において正常判定がなされれば、その故障コードは消去しても良いことになっている。初期化判定手段は、そのような内容に基づき、不揮発性メモリのデータを初期化するか否かを判定するように構成することができる。
【００３１】
そして、初期化制御手段により、まず、真とすべき（信頼すべき）３つのステータス情報記憶領域のデータが初期化され、その後に、３つの故障コード記憶領域のデータが初期化されるため、３つの故障コード記憶領域のデータの初期化中に何かしらの異常が生じても、３つのステータス情報記憶領域のデータに基づき適切な処理を採ることができるようになる。
【００３３】
また、本発明の装置では、異常判定手段は、採用判定手段により３つの故障コード記憶領域のデータを採用しないと判定されると、その３つの故障コード記憶領域のデータを初期化する復元手段を備え得る。
【００３４】
これによれば、例えば３つの故障コード記憶領域のデータについて３面不一致となった場合はそのデータを採用しないと判定され、そして、その３つの故障コード記憶領域のデータが初期化される（復元）されることとなる。このように、異常状態が一旦リセットされるため、記憶に関する信頼性を向上させることができる。
【００３５】
また、ステータス情報記憶領域のデータを初期化して次に故障コード記憶領域のデータを初期化するような本願発明の装置において上記の復元手段を採用したならば、以下のような効果が得られる。
【００３６】
例えば、不揮発性メモリのデータの初期化に際し、ステータス情報記憶領域のデータの初期化が完了し、次に、３つの故障コード記憶領域のうち、例えば１つ目の故障コード記憶領域（１面目）を初期化している際に電源遮断が生じた場合を想定する。この場合、故障コード記憶領域の２面目及び３面目にはデータが残っており多数決を採れば１面目が異常であるとも判定されかねないが、ステータス情報記憶領域のデータ（初期化データ）に基づけば、不揮発性メモリの初期化中であることが分かる。このため、３つの故障コード記憶領域のデータを適切に初期化することができるようになる。
【００３７】
このように、本願発明の装置では、ステータス情報記憶領域のデータを真として（信頼して）、３つの故障コード記憶領域のデータを初期化するか否かを判断するため、故障コード記憶領域の初期化（復元）を適切に実行することができる。よって、記憶に関する信頼性をより向上させることができる。
【００３８】
また、本願発明の装置では、ステータス情報記憶制御手段は、故障コードを含むデータを、ステータス情報としてステータス情報記憶領域に記憶させるように構成し得る。
【００３９】
これによれば、故障コード記憶領域に記憶させるべき故障コードが、ステータス情報記憶領域のデータに含まれるため、例えば、そのステータス情報に基づいて故障コード記憶領域のデータを復元することも可能となる。これにより、記憶に関する信頼性をより向上させることができる。
【００４０】
次に、他の局面の本願発明は、車両に搭載される車両用記憶管理装置であって、車両における故障を表す故障コードを、車両内に設けられる不揮発性メモリにおける互いに異なる２つの記憶領域（以下、故障コード記憶領域と言う）のそれぞれに等しく記憶させる記憶制御手段を備えた車両用記憶管理装置において、２つの故障コード記憶領域への故障コードの記憶が完了した後に、その２つの故障コード記憶領域へのその故障コードの記憶が完了したことを表す情報（以下、ステータス情報と言う）を、そのステータス情報を記憶するために不揮発性メモリに設けられる互いに異なる２つの記憶領域（以下、ステータス情報記憶領域と言う）のそれぞれに等しく記憶させるステータス情報記憶制御手段を備えている。
【００４１】
また、次のような異常判定手段を備える。具体的には、２つのステータス情報記憶領域のデータが互いに一致するか否かを判断し、その判断結果に基づき、２つの故障コード記憶領域のデータを採用するか否かを判定する採用判定手段を備え、その採用判定手段により採用すると判定されると、互いに異なる２つの故障コード記憶領域のデータが互いに一致するか否かを判断して、その判断結果に基づき記憶に関する異常を判定する異常判定手段である。
【００４２】
このような本願発明によれば、前述したような効果と同じ効果を得ることができる。
【発明を実施するための最良の形態】
【００４３】
以下に、本発明の実施形態を図面に基づき説明する。
［第１実施形態］
まず、第１実施形態について説明する。図１は、車両に搭載される車両ネットワーク１の構成図である。
【００４４】
図１の車両ネットワーク１は、本発明が適用された電子制御装置（以下、ＥＣＵと記載する）１０を有している。尚、ＥＣＵ１０は、エンジンを制御するものである。そのＥＣＵ１０は、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）バス５０を介して、他のＥＣＵ（以下、他ＥＣＵとも記載する）４０と互いに通信可能に接続される。また、ＣＡＮバス５０に接続されるツール３０は、例えばＥＣＵ１０から、車両において検出された故障を表す故障コードを読み出して、その読み出した故障コードに基づき修理者が修理等を行うためのものである。尚、ＥＣＵ１０，４０は、車両のバッテリから電圧の供給を受けて動作する。
【００４５】
ＥＣＵ１０は、マイコン１１と、不揮発性メモリとしてのＥＥＰＲＯＭ１８とを備えている。
マイコン１１は、所定のプログラムに従って各種処理を実行するＣＰＵ１２と、ＣＰＵ１２が実行するプログラム等が記憶されるＲＯＭ１３と、ＣＰＵ１２の演算結果等の情報を記憶するためのＲＡＭ１４と、バッテリ２０から常時電圧が供給されて、電圧が供給される間データを保持可能なバックアップＲＡＭ（以下、ＳＲＡＭと記載する）１５と、外部の電子装置と接続するためのインタフェース（Ｉ／Ｏ）１６と、それらを相互に接続するバス１７とを備えている。
【００４６】
ＣＰＵ１２は、ＲＯＭ１３に記憶された故障診断のためのプログラムに従い動作して、車両の故障を検出するようになっている。そして、故障を検出した場合には、故障を表す故障コード（ＤＴＣ：Ｄｉａｇｎｏｓｔｉｃ  Ｔｒｏｕｂｌｅ  Ｃｏｄｅｓ）を、ＳＲＡＭ１５及びＥＥＰＲＯＭ１８に記憶させる。具体的には、故障コードをＳＲＡＭ１５に記憶させると共に、ＳＲＡＭ１５に記憶させた故障コードと同じコードを、永久故障コード（ＰＤＴＣ：Ｐｅｒｍａｎｅｎｔ  Ｄｉａｇｎｏｓｔｉｃ  Ｔｒｏｕｂｌｅ  Ｃｏｄｅｓ）として、ＥＥＰＲＯＭ１８に記憶させる。この永久故障コードは、カリフォルニア州大気資源局（ＣＡＲＢ：Ｃａｌｉｆｏｒｎｉａ  Ａｉｒ  Ｒｅｓｏｕｒｃｅｓ  Ｂｏａｒｄ）による法規（ＯＢＤII）として、診断結果として記憶されているＤＴＣを、永久故障コードとして、電子制御装置のＥＥＰＲＯＭ１８に記憶し車両のバッテリ２０が外されてしまっても記憶保持しておかなければいけないため、ＥＥＰＲＯＭ１８へ記憶させている。
【００４７】
ＥＥＰＲＯＭ１８には、例えば図４（ａ）に示すように、データ（故障コード）を記憶するための３つの故障コード記憶領域と、３つの故障コード記憶領域に故障コードがあるか否か（故障コードの記憶が完了したか否か）を表すステータス情報を記憶する３つのステータス情報記憶領域が設けられている。尚、記憶対象の故障コード毎に、３つの故障コード記憶領域、及び３つのステータス情報記憶領域が設けられる。また、以下、３つの故障コード記憶領域を、第１，第２，第３の故障コード記憶領域、或いは、１面、２面、３面というように区別する。３つのステータス情報記憶領域についても同様とする。
【００４８】
図２は、マイコン１１のＣＰＵ１２が実行するデータ復元処理を表すフローチャートである。この処理は、例えばイグニッションスイッチやスタートスイッチなど車両に設けられたスイッチの作動に伴いＣＰＵ１２が起動する毎に実行される。尚、以下の説明において、０ｘ０１１８は所定の故障を表す故障コードであり、０ｘ００００は故障コードの初期値（初期化した値）である。
【００４９】
この処理では、まず、Ｓ１１０で、３つのステータス情報記憶領域に記憶されたステータス情報について多数決を採って、その多数決結果に基づき３つのステータス情報記憶領域のデータが一致するか否か（３面一致するか否か）を判定する。
【００５０】
Ｓ１１０にて、３つのうち２つのステータス情報記憶領域のデータが一致する（２面一致）と判定すると（Ｓ１１０：２面一致）、Ｓ１２０に移行し、残り１面のデータを、２面一致したデータに復元する。そしてその後、Ｓ１３０に移行する。
【００５１】
Ｓ１１０にて、３つのステータス情報記憶領域のデータが一致すると判定すると（Ｓ１１０：ＹＥＳ）、Ｓ１３０に移行する。
Ｓ１３０では、３つの故障コード記憶領域に記憶されたデータについて多数決を採って、その多数決結果に基づき３つの故障コード記憶領域のデータが一致するか否か（３面一致するか否か）を判定する。
【００５２】
Ｓ１３０にて、３つのうち２つの故障コード記憶領域のデータが一致する（２面一致）と判定すると（Ｓ１３０：２面一致）、Ｓ１４０に移行し、残り１面のデータを、２面一致したデータに復元する。そしてその後、Ｓ１５０に移行する。
【００５３】
Ｓ１３０にて、３つの故障コード記憶領域のデータが一致すると判定すると（Ｓ１３０：ＹＥＳ）、Ｓ１５０に移行する。
Ｓ１５０では、Ｓ１１０又はＳ１２０の結果に基づきステータス情報が「有り」か否かを判定し、「有り」であると判定（確定）すると（Ｓ１５０：ＹＥＳ）、Ｓ１６０に移行する。
【００５４】
Ｓ１６０では、Ｓ１３０又はＳ１４０の結果に基づき故障コードが０ｘ００００であるか否かを判定し、０ｘ００００で無いと判定（確定）すると（Ｓ１６０：ＮＯ）、そのまま当該処理を終了する。
【００５５】
一方、Ｓ１６０では、Ｓ１３０あるいはＳ１４０での処理により故障コードが０ｘ００００であると判定（確定）すると（Ｓ１６０：ＹＥＳ）、Ｓ１７０に移行し、ステータス情報記憶領域のステータス情報を「無し」に書き換える。つまり、３つのステータス情報記憶領域のデータが「有り」で３面一致し、３つの故障コード記憶領域のデータが０ｘ００００で３面一致した場合には、ステータス情報を初期化（復元）して「無し」にする。そしてその後、当該処理を終了する。
【００５６】
またここで、Ｓ１５０でステータス情報が「有り」でない、つまり「無し」であると判定すると（Ｓ１５０：ＮＯ）、Ｓ１８０に移行する。
Ｓ１８０では、Ｓ１３０又はＳ１４０の結果に基づき故障コードが０ｘ００００であるか否かを判定し、０ｘ００００であると判定（確定）すると（Ｓ１８０：ＹＥＳ）、そのまま当該処理を終了する。
【００５７】
一方、Ｓ１８０で故障コードが０ｘ００００でないと判定（確定）すると（Ｓ１８０：ＮＯ）、Ｓ１９０に移行し、故障コードを０ｘ００００に書き換える。つまり、３つのステータス情報記憶領域のデータが「無し」で３面一致し、３つの故障コード記憶領域のデータが０ｘ００００以外で３面一致した場合には、ステータス情報を真とし（信頼し）、故障コードを０ｘ００００に初期化（復元する）。すなわち、ここではステータス情報記憶領域のデータが「無し」で一致するため、これは故障コード記憶領域への書き換えが現実に完了できていたとしても、書き換えが完了していないと判断でき、故障コード記憶領域のデータを初期値へ復元するのである。例えば、故障コード記憶領域の２面目或いは３面目まで故障コードの記憶が完了していても、ステータス情報記憶領域にステータス情報を記憶させる前に電源遮断が生じてステータス情報記憶領域のデータが「無し」で３面一致するような場合には、一旦故障コード記憶領域のデータを初期値に復元する趣旨である。そしてその後、当該処理を終了する。
【００５８】
ところで、本実施形態においては、原則、ステータス情報記憶領域のデータを真とし（信頼し）、例えばＳ１９０の処理の場合のように、ステータス情報記憶領域のデータが「無し」であればそのデータを信頼して故障コード記憶領域のデータを初期化（復元）する。一方、Ｓ１７０では、故障コード記憶領域のデータが初期値としての「０ｘ００００」で３面一致し、ステータス情報記憶領域のデータが「有り」で３面一致した場合の下、いわば故障コード記憶領域のデータを尊重してステータス情報記憶領域のデータを「無し」に書き換えている。これは、仮にステータス情報記憶領域のデータ（「有り」）を信頼することとしても、この場合、故障コード記憶領域のデータが「０ｘ００００」で３面一致しているという現実があり、故障コード記憶領域のデータを「０ｘ００００」以外のどのデータに復元するのが正しいのか不明であるため、いわば例外的に、故障コード記憶領域のデータを尊重する趣旨である。
【００５９】
また、ここで、Ｓ１３０にて３つの故障コード記憶領域のデータが互いに異なる（３面不一致）と判定すると（Ｓ１３０：３面不一致）、Ｓ２００に移行する。
Ｓ２００では、Ｓ１１０又はＳ１２０の結果に基づきステータス情報が「有り」か否かを判定し、「有り」でない、つまり「無し」であると判定すると（Ｓ２００：ＮＯ）、Ｓ２１０に移行し、故障コードを０ｘ００００に書き換える。つまり、３つの故障コード記憶領域のデータについて３面不一致となり、３つのステータス情報記憶領域のデータが「無し」で３面一致した場合（３つの故障コード記憶領域への故障コードの記憶が完了していないと判断できる場合）は、３つの故障コード記憶領域のデータを初期化（復元）する。つまり、故障コード記憶領域のデータが３面の不一致となり、このときにステータス情報記憶領域におけるステータス情報が「無し」であればそれは例えば故障コード記憶領域へのデータの書き込み最中に電源遮断等での３面不一致が生じている、と考えられるため、異常判定をしない。また書き換えが完了していないため、たとえ故障コード記憶領域への書き換え順序が決まっていたとしても、１面目のデータをそのまま信用するのではなく、初期値へ復元させることで、不揮発性メモリの故障コード記憶領域におけるデータの信頼性を向上させるようにしている。そしてその後、当該処理を終了する。
【００６０】
一方、Ｓ２００でステータス情報が「有り」であると判定すると（Ｓ２００：ＹＥＳ）、Ｓ２２０に移行し、異常判定する。つまり、３つの故障コード記憶領域のデータについて３面不一致となり、３つのステータス情報記憶領域のデータが「有り」で３面一致した場合（３つの故障コード記憶領域への故障コードの記憶が完了していると判断できる場合）は、異常判定する。具体的に、ここでは、車両におけるＭＩＬ（警告灯）を点灯させて、異常が生じた旨を車両の運転者に報知する。また、ＥＥＰＲＯＭ１８において記憶に関する異常が生じた旨のコード（以下、記憶異常コードと記載する）をＳＲＡＭ１５（図１参照）に記憶させる。ＳＲＡＭ１５に記憶されたその記憶異常コードは、例えばツール３０（図１参照）によりＥＣＵ１０から故障コードが読み出される際に、その故障コードとあわせて読み出される。そしてその後、当該処理を終了する。
【００６１】
また、ここで、Ｓ１１０にて３つのステータス情報記憶領域のデータが互いに異なる（３面不一致）であると判定すると（Ｓ１１０：３面不一致）、Ｓ２３０（図３参照）に移行する。
【００６２】
図３に説明を移し、Ｓ２３０では、３つの故障コード記憶領域のデータの多数決を採って、その多数決結果に基づき３つの故障コード記憶領域のデータが一致するか否か（３面一致するか否か）を判定する。
【００６３】
Ｓ２３０にて、３つのうち２つの故障コード記憶領域のデータが一致する（２面一致）と判定すると（Ｓ２３０：２面一致）、Ｓ２４０に移行し、残り１面のデータを、２面一致したデータに復元する。そしてその後、Ｓ２５０に移行する。
【００６４】
Ｓ２３０にて、３つの故障コード記憶領域のデータが一致すると判定すると（Ｓ２３０：ＹＥＳ）、Ｓ２５０に移行する。
Ｓ２５０では、Ｓ２３０又はＳ２４０の結果に基づき故障コードが０ｘ００００であるか否かを判定し、０ｘ００００であると判定（確定）すると（Ｓ２５０：ＹＥＳ）、Ｓ２６０に移行し、ステータス情報を「無し」に書き換える。つまり、３つのステータス情報記憶領域のデータについて３面不一致となり、３つの故障コード記憶領域のデータについて０ｘ００００で３面一致した場合には、ステータス情報を初期化（復元）して「無し」にする。そしてその後、当該処理を終了する。
【００６５】
一方、Ｓ２５０で故障コードが０ｘ００００でないと判定（確定）すると（Ｓ２５０：ＮＯ）、Ｓ２７０に移行し、ステータス情報を「有り」に書き換える。つまり、３つのステータス情報記憶領域のデータについて３面不一致となり、３つの故障コード記憶領域のデータについて０ｘ００００以外で３面一致した場合には、ステータス情報を「有り」に復元する。そしてその後、当該処理を終了する。このＳ２６０或いはＳ２７０においても、Ｓ１７０と同様、ステータス情報記憶領域のデータについて３面不一致となっているためいわば例外的に故障コード記憶領域のデータを尊重する趣旨である。
【００６６】
このように、３つのステータス情報記憶領域のデータについて３面不一致の場合には、３つの故障コード記憶領域のデータの多数決結果に基づき、３つのステータス情報記憶領域のデータを復元するようにしている。つまりステータス情報を信頼して故障コード記憶領域におけるデータの確からしさを判断することを前提とするものの、ステータス情報記憶領域もまた不揮発性メモリであるがため、ステータス情報記憶領域のデータが３面不一致と言うように、ステータス情報記憶領域のデータが逆に信頼できないような場合もあれば、故障コード記憶領域へのデータ書込みは完了したものの、ステータス情報を書き換える最中での電源遮断等の事情によりステータス情報が３面で不一致、という場合も有り得る。従って、故障コード記憶領域の３面のデータにより故障コード記憶領域のデータの信頼性が得られたと判断できる場合には故障コード記憶領域のデータに基づき、ステータス情報記憶領域のデータの復元を図ることができる。
【００６７】
またここで、Ｓ２３０で３つの故障コード記憶領域のデータが互いに異なる（３面不一致）と判定すると（Ｓ２３０：３面不一致）、Ｓ２８０に移行し、異常判定する。つまり、３つのステータス情報記憶領域のデータ及び３つの故障コード記憶領域のデータの双方について３面不一致の場合には、何れも信用できない（何れを信用して良いか分からない）ため、異常判定する。この異常判定については、図２のＳ２２０と同じである。そしてその後、当該処理を終了する。
【００６８】
図４〜図７は、本実施形態の作用を表す図面である。この図４〜図７を用いて、データの書き込みの流れ、及び初期化の流れを中心として、データの復元の態様について説明する。尚、図４〜図７において、処理の主体は、マイコン１１のＣＰＵ１２である。そして、図４或いは図６において、故障コードを故障コード記憶領域に記憶させる処理は特許請求の範囲の記憶制御手段に相当し、ステータス情報をステータス情報記憶領域に記憶させる処理はステータス情報記憶制御手段に相当する。また、図５或いは図７において、ＥＥＰＲＯＭ１８のデータを初期化する処理は特許請求の範囲の初期化制御手段に相当する。
【００６９】
まず、図４は、ＥＥＰＲＯＭ１８におけるデータの書き込み順を表す図面である。ここでは、一例として、ＥＥＰＲＯＭ１８の故障コード記憶領域に、データ（故障コード）として０ｘ０１１８を記憶させる場合を説明する。尚、図４において、網掛けの領域はデータの書き込み面を表す。
【００７０】
前述したが、図４（ａ）に示すように、ＥＥＰＲＯＭ１８は、故障コードを記憶するための故障コード記憶領域を３つ有すると共に、故障コード記憶領域へのデータの書き込みが完了したか否かを表すステータス情報を記憶するためのステータス情報記憶領域を３つ有している。
【００７１】
そして、例えば、車両における所定の検出対象について故障を検出し、その故障を表す故障コード（本例では、０ｘ０１１８）を永久故障コードとしてＥＥＰＲＯＭ１８に記憶させる場合、まず、第１の故障コード記憶領域（１面目）に０ｘ０１１８を記憶させる（図４（ｂ））。
【００７２】
第１の故障コード記憶領域（１面目）への記憶が完了すると、次に、第２の故障コード記憶領域（２面目）に０ｘ０１１８を記憶させる（図４（ｃ））。
第２の故障コード記憶領域（２面目）への記憶が完了すると、次に、第３の故障コード記憶領域（３面目）に０ｘ０１１８を記憶させる（図４（ｄ））。
【００７３】
第１〜第３の故障コード記憶領域への故障コードの記憶が完了すると、次に、第１のステータス情報記憶領域（１面目）に、故障コード記憶領域に故障コードが記憶されていること（第１〜第３の故障コード記憶領域への故障コードの記憶が完了したこと）を表すステータス情報（本例では、「有り」）を記憶させる（図４（ｅ））。
【００７４】
第１のステータス情報記憶領域（１面目）への記憶が完了すると、次に、第２のステータス情報記憶領域（２面目）に、ステータス情報を記憶させる（図４（ｆ））。
第２のステータス情報記憶領域（２面目）への記憶が完了すると、次に、第３のステータス情報記憶領域（３面目）に、ステータス情報を記憶させる（図４（ｇ））。
【００７５】
このような流れにより、ＥＥＰＲＯＭ１８に順次データが記憶される（図４（ｈ））。尚、以上の流れは、ＥＥＰＲＯＭ１８にデータを記憶させている際に電源が遮断するなどの事情がなく、記憶が順調に行われた場合の例である。
【００７６】
次に、図５は、ＥＥＰＲＯＭ１８に記憶されたデータの初期化手順を表す図面である。ここでは、一例として、ＥＥＰＲＯＭ１８の故障コード記憶領域に、データ（故障コード）として０ｘ０１１８が記憶されているものとする（図５（ａ））。また、ステータス情報記憶領域には、故障コード記憶領域へのデータの記憶が完了したことを表すステータス情報（本例では、「有り」）が記憶されているものとする（図５（ａ））。尚、本例において、故障コードを初期化した場合の初期値は０ｘ００００であり、ステータス情報を初期化した場合の初期値は「無し」である。また、図５において、網掛けの領域はデータの書き込み面（初期化中の面）を表す。
【００７７】
尚、例えば、故障コードが表す故障について複数のトリップ期間（車両のイグニションスイッチのオンからオフまで、或いはオンから次のオンまでの期間）において正常判定がなされると、その故障コードが初期化（消去）されるようになっている。複数のトリップ期間において正常判定がなされたか否かに基づき故障コードを初期化するか否かを判定する処理はＣＰＵ１２が実行し、この処理は、特許請求の範囲の初期化判定手段に相当する。
【００７８】
ＥＥＰＲＯＭ１８に記憶されたデータを初期化する場合、まず、ステータス情報記憶領域のデータを初期化する。
具体的に、第１のステータス情報記憶領域（１面目）に記憶されたデータを初期化する。この場合、第１のステータス情報記憶領域のデータ（ステータス情報）は、初期値としての「無し」になる（図５（ｂ））。
【００７９】
第１のステータス情報記憶領域（１面目）のデータの初期化が完了すると、次に、第２のステータス情報記憶領域（２面目）のデータを初期化する（図５（ｃ））。
第２のステータス情報記憶領域（２面目）のデータの初期化が完了すると、次に、第３のステータス情報記憶領域（３面目）のデータを初期化する（図５（ｄ））。
【００８０】
第１〜第３のステータス情報記憶領域のデータの初期化が完了すると、次に、第１〜第３の故障コード記憶領域のデータを初期化する。
具体的に、まず、第１の故障コード記憶領域（１面目）のデータを初期化する。この場合、第１の故障コード記憶領域のデータ（故障コード）は、初期値としての０ｘ００００になる（図５（ｅ））。
【００８１】
第１の故障コード記憶領域（１面目）のデータの初期化が完了すると、次に、第２の故障コード記憶領域（２面目）のデータを初期化する（図５（ｆ））。
第２の故障コード記憶領域（２面目）のデータの初期化が完了すると、次に、第３の故障コード記憶領域（３面目）のデータを初期化する（図５（ｇ））。
【００８２】
このような流れにより、ＥＥＰＲＯＭ１８内のデータが順次初期化される（図５（ｈ））。尚、以上の流れは、ＥＥＰＲＯＭ１８のデータを初期化している際に電源が遮断するなどの事情がなく、初期化が順調に行われた場合の例である。
【００８３】
次に、図６は、ＥＥＰＲＯＭ１８にデータを記憶させている際に、電源遮断が生じた場合の作用を表す。ここでは、一例として、ＥＥＰＲＯＭ１８の故障コード記憶領域に、データ（故障コード）として０ｘ０１１８を記憶させる場合を説明する。尚、図６において、網掛けの領域はデータの書き込み面を表す。
【００８４】
まず、図６（ｂ）にて、第１の故障コード記憶領域（１面目）にデータを記憶させている際（記憶の最中）に、電源遮断が生じたとする。この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：ＹＥＳ）、ステータス情報は「無し」と確定する（Ｓ１５０：ＮＯ）。そして、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域のデータが初期化（復元）される（Ｓ１８０：ＹＥＳ、或いは、Ｓ１８０：ＮＯ→Ｓ１９０、図６（Ｂ））。
【００８５】
次に、図６（ｃ）にて、第２の故障コード記憶領域（２面目）にデータを記憶させている際（記憶の最中）に、電源遮断が生じたとする。この場合、２面目の故障コードは不定となる。そして、１面目の故障コードは０ｘ０１１８であり、３面目の故障コードは０ｘ００００である。つまり、３面不一致となる。また、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：ＹＥＳ）、ステータス情報は「無し」と確定する（Ｓ２００：ＮＯ）。ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域のデータが初期化（復元）される（Ｓ２１０、図６（Ｃ））。
【００８６】
次に、図６（ｄ）にて、第３の故障コード記憶領域（３面目）にデータを記憶させている際（記憶の最中）に、電源遮断が生じたとする。この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：ＹＥＳ）、ステータス情報は「無し」と確定し（Ｓ１５０：ＮＯ）、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域の情報が初期化（復元）される（Ｓ１８０：ＮＯ→Ｓ１９０、図６（Ｄ））。
【００８７】
次に、図６（ｅ）にて、第１〜第３の故障コード記憶領域へのデータの書き込みが完了した後、第１のステータス情報記憶領域（１面目）に第１〜第３の故障コード記憶領域へのデータの書き込みが完了した旨を表すステータス情報（本例では、「有り」）を記憶させている際（記憶の最中）に、電源遮断が生じたものとする。
【００８８】
この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：２面一致→Ｓ１２０）、ステータス情報は「無し」と確定する（Ｓ１５０：ＮＯ）。そして、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域、及び第１〜第３のステータス情報記憶領域のデータが初期化される（Ｓ１８０：ＮＯ→Ｓ１９０、図６（Ｅ））。
【００８９】
次に、図６（ｆ）にて、第２のステータス情報記憶領域（２面目）にステータス情報（「有り」）を記憶させている際（記憶の最中）に、電源遮断が生じたものとする。
この場合、２面目のステータス情報は不定となる。そして、１面目のステータス情報は「有り」であり、３面目のステータス情報は「無し」である。つまり、３面不一致となる。
【００９０】
ステータス情報記憶領域のステータス情報が３面不一致の場合は（Ｓ１１０：３面不一致）、故障コード記憶領域の故障コードの多数決により（Ｓ２３０：ＹＥＳ）、故障コードが０ｘ０１１８と確定する（Ｓ２５０：ＮＯ）。そして、故障コード記憶領域のデータが記憶すべき０ｘ０１１８と確定したことに基づき、故障コード記憶領域への故障コードの記憶が完了したとみなされ、ステータス情報が「有り」に復元される（Ｓ２７０）。つまり、第１〜第３の故障コード記憶領域には０ｘ０１１８が記憶され、第１〜第３のステータス情報記憶領域には「有り」が記憶される（図６（Ｆ））。
【００９１】
次に、図６（ｇ）にて、第３のステータス情報記憶領域（３面目）にステータス情報を記憶させている際（記憶の最中）に、電源遮断が生じたものとする。
この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：２面一致）、ステータス情報は「有り」と確定する。少なくとも、第１及び第２のステータス情報記憶領域のステータス情報が「有り」だからである。
【００９２】
そして、ステータス情報が「有り」であることに基づき、その第１〜第３の故障コード記憶領域の故障コードは０ｘ０１１８と確定する（Ｓ１６０：ＮＯ）。
このような流れにより、ＥＥＰＲＯＭ１８にデータが記憶される（図６（ｈ））。
【００９３】
次に、図７は、ＥＥＰＲＯＭ１８に記憶されたデータを初期化している際に、電源遮断が生じた場合の作用を表す。ここでは、一例として、ＥＥＰＲＯＭ１８の故障コード記憶領域に、データ（故障コード）として０ｘ０１１８が記憶されているものとする（図７（ａ））。また、ステータス情報記憶領域には、故障コード記憶領域へのデータの記憶が完了したことを表すステータス情報（本例では、「有り」）が記憶されているものとする（図７（ａ））。尚、本例において、故障コードを初期化した場合の初期値は０ｘ００００であり、ステータス情報を初期化した場合の初期値は「無し」である。また、図７において、網掛けの領域はデータの書き込み面（初期化中の面）を表す。
【００９４】
まず、図７（ｂ）にて、第１のステータス情報記憶領域（１面目）のデータを初期化している際（初期化の最中）に、電源遮断が生じたものとする。
この場合、第１〜第３のステータス情報記憶領域の多数決により（Ｓ１１０：２面一致）、ステータス情報は「有り」と確定する（Ｓ１５０：ＹＥＳ）。そして、ステータス情報が「有り」であることに基づき、第１〜第３の故障コード記憶領域のデータ（故障コード）は０ｘ０１１８と確定する（Ｓ１６０：ＮＯ、図７（Ｂ））。
【００９５】
次に、図７（ｃ）にて、第２のステータス情報記憶領域（２面目）のデータを初期化している際（初期化の最中）に、電源遮断が生じたものとする。この場合、２面目のステータス情報は不定となる。そして、１面目のステータス情報は「無し」であり、３面目のステータス情報は「有り」である。つまり、３面不一致となる。
【００９６】
ステータス情報記憶領域のステータス情報が３面不一致の場合は（Ｓ１１０：３面不一致）、故障コード記憶領域の故障コードの多数決により（Ｓ２３０：ＹＥＳ）、故障コードが０ｘ０１１８と確定し（Ｓ２５０：ＮＯ）、また、ステータス情報が「有り」と確定する（Ｓ２７０）。つまり、第１〜第３の故障コード記憶領域には０ｘ０１１８が記憶され、第１〜第３のステータス情報記憶領域には「有り」が記憶される（図７（Ｃ））。
【００９７】
次に、図７（ｄ）にて、第３のステータス情報記憶領域（３面目）のデータを初期化している際（初期化の最中）に、電源遮断が生じたものとする。この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：２面一致）、ステータス情報は「無し」と確定する（Ｓ１５０：ＮＯ）。少なくとも、第１及び第２のステータス情報記憶領域のステータス情報が「無し」だからである。
【００９８】
そして、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域のデータは初期化されて０ｘ００００となる（Ｓ１８０：ＮＯ→Ｓ１９０、図７（Ｄ））。
【００９９】
次に、図７（ｅ）にて、第１〜第３のステータス情報記憶領域のステータス情報の初期化が完了した後、第１の故障コード記憶領域（１面目）のデータを初期化している際（初期化の最中）に、電源遮断が生じたものとする。
【０１００】
この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：ＹＥＳ）、ステータス情報は「無し」と確定する（Ｓ１５０：ＮＯ）。そして、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域のデータが初期化（復元）される（Ｓ１８０：ＮＯ→Ｓ１９０、図７（Ｅ））。
【０１０１】
次に、図７（ｆ）にて、第２の故障コード記憶領域（２面目）のデータを初期化している際（初期化の最中）に、電源遮断が生じたものとする。この場合、２面目の故障コードは不定となる。そして、１面目の故障コードは０ｘ００００であり、３面目の故障コードは０ｘ０１１８である。つまり、３面不一致となる。また、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：ＹＥＳ）、ステータス情報は「無し」と確定する（Ｓ２００：ＮＯ）。そして、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域のデータが初期化（復元）される（Ｓ２１０、図７（Ｆ））。
【０１０２】
次に、図７（ｇ）にて、第３の故障コード記憶領域のデータを初期化している際（初期化の最中）に、電源遮断が生じたものとする。
この場合、第１〜第３のステータス情報記憶領域のステータス情報の多数決により（Ｓ１１０：ＹＥＳ）、ステータス情報は「無し」と確定する（Ｓ１５０：ＮＯ）。そして、ステータス情報が「無し」であることに基づき、第１〜第３の故障コード記憶領域のデータが初期化（復元）される（Ｓ１８０：ＹＥＳ、或いは、Ｓ１８０：ＮＯ→Ｓ１９０、図７（Ｇ））。
【０１０３】
このような流れにより、ＥＥＰＲＯＭ１８のデータが初期化される（図７（ｈ））。
以上説明したように、本実施形態では、３つの故障コード記憶領域のうち２つ目の故障コード記憶領域（２面目）に故障コードが書き込まれている際に電源遮断が生じ、３つの故障コード記憶領域のデータが互いに異なる（３面不一致）というような場合において、ステータス情報に基づき、３つの故障コード記憶領域には故障コードが記憶されていない（記憶が完了していない）と判断して、その３つの故障コード記憶領域のデータを多数決を採るのに採用しないようにすることができる。このため、電源遮断等が原因で３つの故障コード記憶領域のデータについて３面不一致となったような場合に、故障コード記憶領域のデータが異常である、或いは故障コード記憶領域に物理的に異常が生じていると断定されることはない。そして、データの復元の可能性が残されることになる。
【０１０４】
その結果、３つの故障コード記憶領域のデータの復元の機会を不要に失わないようにすることができ、ひいては記憶に関する信頼性を向上させることができる。
さらに本実施形態では、ステータス情報は３面に記憶されるため、そのステータス情報の信頼性が向上する。具体的に、ステータス情報記憶領域の１つにデータ化け等が生じても、残りの２つのステータス情報記憶領域のデータが正しければ、正しいデータ（ステータス情報）が得られる。
【０１０５】
また、本実施形態では、ＥＥＰＲＯＭ１８の初期化に際し、まず、３つのステータス情報記憶領域のデータが順次初期化され、その後に、３つの故障コード記憶領域のデータが順次初期化されるため、図７においても説明したように、以下のような作用効果が得られる。
【０１０６】
例えば、ステータス情報記憶領域のデータの初期化が完了し、次に、３つの故障コード記憶領域のうち、例えば１つ目の故障コード記憶領域（１面目）を初期化している際に電源遮断が生じた場合を想定する。この場合、故障コード記憶領域の２面目及び３面目にはデータが残っており多数決を採れば１面目が異常であるとも判定されかねないが、ステータス情報記憶領域のステータス情報に基づけば、不揮発性メモリの初期化中であることが分かる。このため、３つの故障コード記憶領域のデータを適切に初期化することができるようになる。例えば図２のデータ復元処理におけるＳ１５０（ＮＯ判定）、Ｓ１８０（ＮＯ判定）、Ｓ１９０での初期化処理の一連の動作がこれに該当する。この「Ｓ１５０→Ｓ１８０→Ｓ１９０」の一連の処理は、上述のように故障コード記憶領域への書き込みが完了してないことを判断できるだけでなく、このように初期化の際に、電源途中で故障コード記憶領域のデータとステータス情報記憶領域のデータとの不一致を正し、データの復元を行うことができる。よって、記憶に関する信頼性を向上させることができる。
【０１０７】
尚、本実施形態において、ＥＣＵ１０が車両用記憶管理装置に相当し、Ｓ１３０（及びＳ２２０）、Ｓ２３０（及びＳ２８０）の処理が異常判定手段に相当し、例えばＳ２００の処理が採用判定手段に相当し、Ｓ２１０の処理が復元手段に相当している。
【０１０８】
［第２実施形態］
次に、第２実施形態について説明する。
この第２実施形態は、第１実施形態と比較して、図８（ａ）に示すように、ＥＥＰＲＯＭ１８にステータス情報記憶領域が３つではなく１つのみ設けられている点が異なっている。つまり、同じ故障コードを記憶する３つの故障コード記憶領域に対して、ステータス情報記憶領域は１つである。
【０１０９】
そして、マイコン１１のＣＰＵ１２が、図２，３のデータ復元処理に代えて、図８（ｂ）のデータ復元処理を実行する点が異なっている。
図８（ｂ）のデータ復元処理では、まず、Ｓ３１０で、３つの故障コード記憶領域に記憶された故障コードについて多数決を採って、その多数決結果に基づき３つの故障コードが一致するか否か（３面一致するか否か）を判定する。
【０１１０】
Ｓ３１０にて、３つのうち２つの故障コードが一致する（２面一致）と判定すると（Ｓ３１０：２面一致）、Ｓ１２０に移行し、残り１面の故障コードを、２面一致したデータに復元する。そしてその後、Ｓ３３０に移行する。
【０１１１】
Ｓ３１０にて、３つの故障コードが一致すると判定すると（Ｓ３１０：ＹＥＳ）、Ｓ３３０に移行する。
Ｓ３３０では、ステータス情報が「有り」か否かを判定し、「有り」であると判定すると（Ｓ３３０：ＹＥＳ）、Ｓ３４０に移行する。
【０１１２】
Ｓ３４０では、故障コードが０ｘ００００であるか否かを判定し、０ｘ００００でないと判定すると（Ｓ３４０：ＮＯ）、そのまま当該処理を終了する。
一方、Ｓ３４０で故障コードが０ｘ００００であると判定すると（Ｓ３４０：ＹＥＳ）、Ｓ３５０に移行し、ステータス情報を「無し」に書き換える。そしてその後、当該処理を終了する。
【０１１３】
また、ここで、Ｓ３３０でステータス情報が「有り」でない、つまり「無し」であると判定すると（Ｓ３３０：ＮＯ）、Ｓ３６０に移行する。
Ｓ３６０では、故障コードが０ｘ００００であるか否かを判定し、０ｘ００００であると判定すると（Ｓ３６０：ＹＥＳ）、そのまま当該処理を終了する。
【０１１４】
一方、Ｓ３６０で故障コードが０ｘ００００でないと判定すると（Ｓ３６０：ＮＯ）、Ｓ３７０に移行し、故障コードを０ｘ００００に書き換える。そしてその後、当該処理を終了する。
【０１１５】
またここで、Ｓ３１０にて、３つの故障コードが互いに一致しない（３面不一致）であると判定すると（Ｓ３１０：３面不一致）、Ｓ３８０に移行する。
Ｓ３８０では、ステータス情報が「有り」か否かを判定し、「有り」でない、つまり「無し」であると判定すると（Ｓ３８０：ＮＯ）、Ｓ３９０に移行し、故障コードを０ｘ００００に書き換える。そしてその後、当該処理を終了する。
【０１１６】
一方、Ｓ３８０でステータス情報が「有り」であると判定すると（Ｓ３８０：ＹＥＳ）、Ｓ４００に移行し、異常判定する。そしてその後、当該処理を終了する。
このような本第２実施形態によれば、ＥＥＰＲＯＭ１８の記憶領域を節約できる上、第１実施形態と同様の効果を得ることができる。
【０１１７】
尚、本第２本実施形態において、Ｓ３１０（及びＳ４００）の処理が異常判定手段に相当し、例えばＳ３８０の処理が採用判定手段に相当し、Ｓ３９０の処理が復元手段に相当している。
【０１１８】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術範囲内において種々の形態をとることができる。
例えば、上記実施形態ではＥＥＰＲＯＭ１８が故障コード記憶領域を３つ備えている場合について説明したが、故障コード記憶領域が２つの場合でも本発明を適用することができる。この場合、ステータス情報記憶領域は、２つでも良いし１つでも良い。
【０１１９】
また、上記実施形態において、記憶すべき故障コードを含むデータを、ステータス情報として記憶させても良い。例えば、故障コード記憶領域に０ｘ０１１８を記憶させる上記実施形態において、ステータス情報として、「有り」に代えて「０ｘ０１１８」をステータス情報記憶領域に記憶させ、「無し」に代えて「０ｘ００００」をステータス情報記憶領域に記憶させるようにしても良い。
【図面の簡単な説明】
【０１２０】
【図１】本実施形態の車両ネットワーク１の構成図である。
【図２】マイコン１１のＣＰＵ１２が実行するデータ復元処理を表すフローチャートである（その１）。
【図３】マイコン１１のＣＰＵ１２が実行するデータ復元処理を表すフローチャートである（その２）。
【図４】本実施形態の作用を表す図面である。
【図５】ＥＥＰＲＯＭ１８に記憶されたデータの消去手順を表す図面である。
【図６】ＥＥＰＲＯＭ１８にデータを記憶させている際に、電源遮断が生じた場合の作用を表す図面である。
【図７】ＥＥＰＲＯＭ１８に記憶されたデータを消去している際に、電源遮断が生じた場合の作用を表す図面である。
【図８】第２実施形態のマイコン１１のＣＰＵ１２が実行するデータ復元処理を表すフローチャートである。
【図９】ビット単位の多数決を説明する図面である。
【図１０】バイト単位の多数決を説明する図面である。
【符号の説明】
【０１２１】
１…車両ネットワーク
１０…電子制御装置（ＥＣＵ）
１１…マイコン
１２…ＣＰＵ
１３…ＲＯＭ
１４…ＲＡＭ
１５…ＳＲＡＭ
１６…Ｉ／Ｏ
１７…バス
１８…ＥＥＰＲＯＭ
２０…バッテリ
３０…ツール
４０…電子制御装置（ＥＣＵ）
５０…ＣＡＮバス
【図１】
0004475320.tif 000002
【図２】
0004475320.tif 000003
【図３】
0004475320.tif 000004
【図８】
0004475320.tif 000005
【図９】
0004475320.tif 000006
【図１０】
0004475320.tif 000007
【図４】
0004475320.tif 000008
【図５】
0004475320.tif 000009
【図６】
0004475320.tif 000010
【図７】
0004475320.tif 000011