(57)【特許請求の範囲】
【請求項１】
常時電源供給され、故障コードを記憶保持するための故障コード記憶領域を有する揮発性メモリと、
前記故障コードと同じコードを記憶するためのバックアップ領域を有する不揮発性メモリと、
車両における所定の検出対象について故障が検出されると、その検出された故障を表す前記故障コード（以下、確定故障コードと言う）を前記故障コード記憶領域に記憶させると共に、その確定故障コードのうち、前記バックアップ領域に記憶すべき確定故障コード（以下、永久故障コードと言う）を前記バックアップ領域に記憶させる記憶制御手段とを備え、前記車両に搭載される車両用記憶管理装置において、
前記揮発性メモリは、さらに、前記バックアップ領域内の情報と同じ情報を記憶するためのミラー領域と、当該揮発性メモリ内のデータ更新状態を表す更新情報を記憶する更新情報記憶領域とを備え、
前記記憶制御手段は、さらに、前記永久故障コードと同じコードを、前記ミラー領域に記憶させると共に、前記更新情報を前記更新情報記憶領域に記憶させ、
前記更新情報記憶領域に記憶された前記更新情報に基づき、前記ミラー領域及び前記バックアップ領域の情報が互いに一致するように、そのミラー領域、或いはバックアップ領域の情報を所定の復旧処理で更新する復旧手段を備えていることを特徴とする車両用記憶管理装置。
【請求項２】
請求項１に記載の車両用記憶管理装置において、
前記復旧手段は、前記更新情報に基づき、前記ミラー領域及び前記故障コード記憶領域の両方の情報が更新されたと判断した場合には、そのミラー領域内の情報を前記バックアップ領域に複製する第１処理を前記復旧処理として実行し、前記更新情報に基づき、前記ミラー領域及び前記故障コード記憶領域の両方又は一方の情報が更新されていないと判断した場合には、前記バックアップ領域内の情報を前記ミラー領域に複製する第２処理を前記復旧処理として実行することを特徴とする車両用記憶管理装置。
【請求項３】
請求項２に記載の車両用記憶管理装置において、
前記復旧手段は、前記更新情報に基づき、前記ミラー領域及び前記故障コード記憶領域の両方又は一方の情報が更新されていないと判断すると、そのミラー領域及び故障コード記憶領域の情報に基づき、そのミラー領域及び故障コード記憶領域の何れか一方において記憶時期の最も新しい故障コードが、他方にも記憶されているか否かを判定し、記憶されていると判定すると、前記第２処理に代えて、前記第１処理を、前記復旧処理として実行するようになっていることを特徴とする車両用記憶管理装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の車両用記憶管理装置において、
前記不揮発性メモリは、前記更新情報を記憶するための記憶領域（以下、更新情報第２記憶領域と言う）を有し、
前記揮発性メモリは、該揮発性メモリ内の所定の情報が消去されると、その所定の情報が消去されたことを表すクリア履歴情報が記憶されるクリア履歴記憶領域を有し、
前記記憶制御手段は、前記更新情報を、前記更新情報第２記憶領域に記憶させ、
前記復旧手段は、前記クリア履歴情報に基づき前記揮発性メモリ内の所定の情報が消去されたと判断すると、前記更新情報第２記憶領域に記憶された更新情報に基づき、前記復旧処理を実行するようになっていることを特徴とする車両用記憶管理装置。
【請求項５】
請求項１ないし請求項４の何れか１項に記載の車両用記憶管理装置において、
前記揮発性メモリは、前記ミラー領域を複数備え、
前記記憶制御手段は、前記複数のミラー領域のそれぞれに、前記永久故障コードと同じコードを記憶させるようになっており、
前記複数のミラー領域及び前記バックアップ領域の情報を比較し、その比較した情報が一致しない場合に異常を検出する異常検出手段を備えていることを特徴とする車両用記憶管理装置。
【請求項６】
請求項１ないし請求項５の何れか１項に記載の車両用記憶管理装置において、
前記不揮発性メモリは、前記バックアップ領域を複数備え、
前記記憶制御手段は、前記複数のバックアップ領域のそれぞれに、前記永久故障コードを記憶させるようになっており、
前記ミラー領域及び前記複数のバックアップ領域の情報を比較し、その比較した情報が一致しない場合に異常を検出する記憶異常検出手段を備えていることを特徴とする車両用記憶管理装置。
【請求項７】
常時電源供給され、故障コードを記憶保持するための故障コード記憶領域を有する揮発性メモリと、
前記故障コードと同じコードを記憶するためのバックアップ領域を有する不揮発性メモリと、
車両における所定の検出対象について故障が検出されると、その検出された故障を表す前記故障コード（以下、確定故障コードと言う）を前記故障コード記憶領域に記憶させると共に、その確定故障コードのうち、前記バックアップ領域に記憶すべき確定故障コード（以下、永久故障コードと言う）を前記バックアップ領域に記憶させる記憶制御手段とを備え、前記車両に搭載される車両用記憶管理装置において、
前記揮発性メモリは、さらに、前記バックアップ領域内の情報と同じ情報を記憶するためのミラー領域を備え、
前記記憶制御手段は、故障が検出されると、その検出された故障を表す前記確定故障コードを前記ミラー領域に記憶し、その後、当該確定故障コードを前記故障コード記憶領域に記憶させ、その後、当該確定故障コードを前記永久故障コードとして前記バックアップ領域に記憶させ、さらに、復旧処理として、前記ミラー領域、前記故障コード記憶領域、及び前記バックアップ領域の情報に基づき、前記ミラー領域の情報と前記バックアップ領域の情報とが不一致、且つ、前記ミラー領域内の確定故障コードのうち記憶時期の最も新しい確定故障コード（以下、最新コードと言う）が前記故障コード記憶領域に記憶されていると判断すると、当該最新コードを前記バックアップ領域に記憶させ、前記ミラー領域の情報と前記バックアップ領域の情報とが不一致、且つ、前記ミラー領域内における前記最新コードが前記故障コード記憶領域に記憶されていないと判断すると、当該最新コードを前記故障コード記憶領域及び前記バックアップ領域の両方に記憶させる処理を行う
ことを特徴とする車両用記憶管理装置。
【請求項８】
請求項７に記載の車両用記憶管理装置において、
前記ミラー領域は、記憶対象のコード毎に、そのコードと同じコードを記憶するための複数の記憶領域を有し、
前記記憶制御手段は、記憶対象の前記確定故障コード毎に、前記ミラー領域における前記複数の記憶領域のそれぞれにその確定故障コードを記憶させると共に、そのミラー領域における複数の記憶領域のうち過半数の記憶領域で一致したコードを正規の確定故障コードと認識して前記復旧処理を実行し、さらに、その正規の確定故障コードとは異なるコードが記憶されている記憶領域のそのコードを、その正規の確定故障コードに書き換えることを特徴とする車両用記憶管理装置。
【請求項９】
請求項７又は請求項８に記載の車両用記憶管理装置において、
少なくとも前記揮発性メモリには、前記車両におけるバッテリの脱着履歴を表す情報が記憶されるようになっており、
前記記憶制御手段は、前記脱着履歴を表す情報に基づき前記バッテリが取り外されたと判断すると、前記復旧処理に代えて、前記バックアップ領域内の情報を前記ミラー領域に複製することを特徴とする車両用記憶管理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載される車両用記憶管理装置に関する。
【背景技術】
【０００２】
従来、例えば車両の各部を制御する電子制御装置（以下、ＥＣＵと記載する）では、所定の検出対象について故障を検出した場合には、法規に基づき、その故障を表す故障コードを、半導体メモリ（例えば、ＳＲＡＭ、ＥＥＰＲＯＭ等）に記憶させるようになっている。ＳＲＡＭは、バックアップＲＡＭとも呼ばれ、車両のバッテリから常時電圧が供給されるように構成された揮発性メモリである。また、ＥＥＰＲＯＭは、不揮発性メモリである。
【０００３】
法規では、揮発性メモリ（例えばＳＲＡＭ）に故障コードを記憶させた後、その故障コードと同じコードを、イグニションサイクル（車両のイグニションスイッチがオンされてからオフされるまで、或いはオンされてから次にオンされるまで）の終わりまでに、不揮発性メモリ（例えばＥＥＰＲＯＭ）に記憶させなくてはならない旨が定められている。
【０００４】
これは、揮発性メモリに記憶された故障コードが不正に消去されてしまったり、何らかの原因で故障コードが消去してしまったりすることに鑑みたものと考えられる。例えば、車両のバッテリが取り外されて揮発性メモリに電圧が供給されなくなったり、揮発性メモリに異常が生じてその揮発性メモリが初期化されたりした場合、揮発性メモリに記憶された故障コードは消失するが、不揮発性メモリに記憶させておいた故障コードは読み出すことができる。尚、揮発性メモリ、不揮発性メモリに記憶された故障コードは、故障の解析のために用いられる。例えば工場等の担当者が、故障診断装置をＥＣＵに通信可能に接続し、故障診断装置を介してＥＣＵに故障コードを要求すると、ＥＣＵは、揮発性メモリ、または不揮発性メモリから故障コードを読み出して、その読み出した故障コードを故障診断装置に返信する。故障診断装置は、故障コードに基づき、車両における故障の箇所や原因等を解析する。
【０００５】
そして、上記の揮発性メモリ及び不揮発性メモリに記憶されるデータの信頼性を確保する技術が、例えば特許文献１に開示されている。
特許文献１では、揮発性メモリは、保存対象のデータを記憶する第１の記憶領域と、その保存対象のデータと同じデータを記憶する第２の記憶領域を備え、不揮発性メモリは、保存対象のデータと同じデータを記憶する第３の記憶領域を備えている。そして、ＥＣＵは、第１の記憶領域のデータと第２の記憶領域のデータと第３の記憶領域のデータとを比較し、２箇所以上で一致したデータを正しいデータとして採用する。これにより、信頼性が確保される。
【特許文献１】特開２００４−２１５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記特許文献１の技術は、揮発性メモリにおける第１の記憶領域のデータ全てを、その揮発性メモリの第２の記憶領域、及び不揮発性メモリの第３の記憶領域に記憶させることを前提としているが、揮発性メモリのデータは、バッテリの脱着や外部のツールからの消去指令により消去される場合も想定される。この場合、特許文献１では、揮発性メモリのデータと不揮発性メモリのデータとの整合がとれなくなると共に、不揮発性メモリのデータを、本来書き換えるべきでないのに誤って書き換えてしまうことも懸念される。
【０００７】
本発明は、こうした点に鑑みなされたもので、揮発性メモリと、その揮発性メモリのバックアップとしての不揮発性メモリとを備えた車両用記憶管理装置において、揮発性メモリのデータと不揮発性メモリのデータとの整合をとりつつ、記憶すべきデータを確実に記憶することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた請求項１に記載の車両用記憶管理装置は、常時電源供給され、故障コードを記憶保持するための故障コード記憶領域を有する揮発性メモリと、故障コードと同じコードを記憶するためのバックアップ領域を有する不揮発性メモリと、車両における所定の検出対象について故障が検出されると、その検出された故障を表す故障コード（以下、確定故障コードと言う）を故障コード記憶領域に記憶させると共に、その確定故障コードのうち、バックアップ領域に記憶すべき確定故障コード（以下、永久故障コードと言う）をバックアップ領域に記憶させる記憶制御手段とを備えている。尚、この車両用記憶管理装置は、車両に搭載されるものである。
【０００９】
そして、本請求項１の車両用記憶管理装置において、揮発性メモリは、さらに、バックアップ領域内の情報と同じ情報を記憶するためのミラー領域と、当該揮発性メモリ内のデータ更新状態を表す更新情報を記憶する更新情報記憶領域とを備え、記憶制御手段は、さらに、永久故障コードと同じコードを、ミラー領域に記憶させると共に、更新情報を更新情報記憶領域に記憶させる。
【００１０】
さらに、更新情報記憶領域に記憶された更新情報に基づき、ミラー領域及びバックアップ領域の情報が互いに一致するように、そのミラー領域、或いはバックアップ領域の情報を所定の復旧処理で更新する復旧手段を備えている。
【００１１】
このような請求項１の車両用記憶管理装置では、揮発性メモリには、その揮発性メモリの更新状態を表す更新情報が記憶されるため、その更新情報に基づき、揮発性メモリの更新状態が分かるようになる。具体的には、ミラー領域或いは故障コード記憶領域に新たにコードが記憶された旨や、ミラー領域或いは故障コード記憶領域の情報が消去された旨などが分かるようになる。このため、このような更新情報に基づき、ミラー領域及びバックアップ領域の情報が一致するか否かを推測できる。
【００１２】
そしてこの点、請求項１の車両用記憶管理装置では、復旧手段が、更新情報に基づき、ミラー領域及びバックアップ領域の情報が一致するように、ミラー領域或いはバックアップ領域の情報を更新する復旧処理を実行するようになっている。
【００１３】
以上説明したように、請求項１の車両用記憶管理装置では、まず、ミラー領域及び故障コード記憶領域の整合性は確保される。そして、ミラー領域或いは故障コード記憶領域が更新された場合でも、復旧手段により、ミラー領域及びバックアップ領域の情報が一致するようになる。このため、故障コード記憶領域及びバックアップ領域の情報の整合性が確保される。さらに、このため、そのバックアップ領域のデータの信頼性が確保される。
【００１４】
次に、請求項１の車両用記憶管理装置では、具体的に、請求項２のように構成すると良い。
請求項２の車両用記憶管理装置は、請求項１の車両用記憶管理装置において、復旧手段は、更新情報に基づき、ミラー領域及び故障コード記憶領域の両方の情報が更新されたと判断した場合には、そのミラー領域内の情報をバックアップ領域に複製する第１処理を復旧処理として実行し、更新情報に基づき、ミラー領域及び故障コード記憶領域の両方又は一方の情報が更新されていないと判断した場合には、バックアップ領域内の情報をミラー領域に複製する第２処理を復旧処理として実行するようになっている。
【００１５】
つまり、ミラー領域及び故障コード記憶領域の両方が更新された場合には、故障コード記憶領域に確定故障コードが記憶され、ミラー領域に永久故障コードと同じコードが記憶されて、両者の整合性がとれていると判断でき、復旧手段は、その判断のうえで、ミラー領域の情報をバックアップ領域に複製する。このため、ミラー領域の情報とバックアップ領域の情報とは一致し、さらに言えばそのミラー領域は故障コード記憶領域と整合がとれているため、バックアップ領域と故障コード記憶領域の整合性も確保されることとなる。
【００１６】
一方、ミラー領域及び故障コード記憶領域の両方又は一方が更新されていない場合には、ミラー領域及び故障コード記憶領域がそもそも更新されていない、或いは何らかの原因でミラー領域及び故障コード記憶領域を更新できなかったと判断でき、この場合には、バックアップ領域の情報をミラー領域に複製することで、バックアップ領域及びミラー領域の整合性を確保することができる。
【００１７】
次に、請求項２の車両用記憶管理装置では、具体的に、請求項３のように構成すると良い。
請求項３の車両用記憶管理装置は、請求項２の車両用記憶管理装置において、復旧手段は、更新情報に基づき、ミラー領域及び故障コード記憶領域の両方又は一方の情報が更新されていないと判断すると、そのミラー領域及び故障コード記憶領域の情報に基づき、そのミラー領域及び故障コード記憶領域の何れか一方において記憶時期の最も新しい故障コードが、他方にも記憶されているか否かを判定し、記憶されていると判定すると、第２処理に代えて、第１処理を、復旧処理として実行するようになっている。
【００１８】
例えば、ミラー領域及び故障コード記憶領域を正常に更新したにもかかわらず、更新情報が更新されず、その更新情報が、ミラー領域及び故障コード記憶領域が正常に更新されたことを表さない場合もある。
【００１９】
この点、請求項３の車両用記憶管理装置では、更新情報に基づき、ミラー領域及び故障コード記憶領域の両方又は一方の情報が更新されていないと判断された場合でも、そのミラー領域及び故障コード記憶領域の情報に基づき、そのミラー領域及び故障コード記憶領域の何れか一方において記憶時期の最も新しい故障コードが、他方にも記憶されているか否かを判定し、記憶されていると判定すると、ミラー領域の情報をバックアップ領域に記憶するため、より確実に、ミラー領域とバックアップ領域との整合、ひいては故障コード記憶領域とバックアップ領域との整合を図ることができる。
【００２０】
次に、請求項１〜３の車両用記憶管理装置では、請求項４のように構成することができる。
請求項４の車両用記憶管理装置は、請求項１〜３の車両用記憶管理装置において、不揮発性メモリは、更新情報を記憶するための記憶領域（以下、更新情報第２記憶領域と言う）を有し、揮発性メモリは、該揮発性メモリ内の所定の情報が消去されると、その所定の情報が消去されたことを表すクリア履歴情報が記憶されるクリア履歴記憶領域を有し、記憶制御手段は、更新情報を、更新情報第２記憶領域に記憶させ、復旧手段は、クリア履歴情報に基づき揮発性メモリ内の所定の情報が消去されたと判断すると、更新情報第２記憶領域に記憶された更新情報に基づき、復旧処理を実行するようになっている。
【００２１】
これによれば、揮発性メモリ内の更新情報が消去された場合でも、復旧手段は、不揮発性メモリに記憶された更新情報に基づき復旧処理を実行できるため、安心である。
次に、請求項１〜４の車両用記憶管理装置では、請求項５のようにすると、より信頼性を向上させることができる。
【００２２】
請求項５の車両用記憶管理装置は、請求項１〜４の車両用記憶管理装置において、揮発性メモリは、ミラー領域を複数備え、記憶制御手段は、複数のミラー領域のそれぞれに、永久故障コードと同じコードを記憶させるようになっており、複数のミラー領域及びバックアップ領域の情報を比較し、その比較した情報が一致しない場合に異常を検出する異常検出手段を備えている。
【００２３】
逆に言えば、異常が検出されないということは、ミラー領域及びバックアップ領域の情報が互いに一致しているということであり、これによれば、そのミラー領域及びバックアップ領域の情報の信頼性が向上する。
【００２４】
次に、請求項６の車両用記憶管理装置は、請求項１〜５の車両用記憶管理装置において、不揮発性メモリは、バックアップ領域を複数備え、記憶制御手段は、複数のバックアップ領域のそれぞれに、永久故障コードを記憶させるようになっており、ミラー領域及び複数のバックアップ領域の情報を比較し、その比較した情報が一致しない場合に異常を検出する記憶異常検出手段を備えている。
【００２５】
このような車両用記憶管理装置によれば、請求項５と同様に、ミラー領域及びバックアップ領域の情報の信頼性が向上する。
ところで、［背景技術］の欄で説明した特許文献１の技術は、その欄で述べたように、揮発性メモリにおける第１の記憶領域のデータ全てを、その揮発性メモリの第２の記憶領域、及び不揮発性メモリの第３の記憶領域に記憶させることを前提としており、言い換えれば、同一データを複数の領域に順番に書き込む。そして、２箇所以上で一致したデータを正しいデータとして認識し、例えばある１箇所のみデータが異なっていた場合には、その異なっているデータを正しいデータに書き換える。
【００２６】
この場合において、最初に所定の領域のデータを更新した時点で、電子制御装置（具体的に、電子制御装置が備えるマイコン）にリセットがかかった場合などには、その所定の領域にだけ新しいデータが書き込まれ、他の２つの領域には古いデータが残っている（或いは、データが書き込まれていない）といった状態になり、それらデータの不整合を復旧するために、更新すべき新しいデータが古いデータに書き換えられてしまう（或いは、新しいデータが消去されてしまう）ことになる。
【００２７】
この点に鑑み、揮発性メモリのデータと不揮発性メモリのデータとの整合をとりつつ、記憶すべきデータを確実に記憶できるようにすることが課題となるが、一案としては、領域間のデータの不整合が生じた場合に、最初に更新される領域のデータを採用して、他の２つの領域を更新するようにすることが考えられる。
【００２８】
この点、請求項７の発明は、常時電源供給され、故障コードを記憶保持するための故障コード記憶領域を有する揮発性メモリと、故障コードと同じコードを記憶するためのバックアップ領域を有する不揮発性メモリと、車両における所定の検出対象について故障が検出されると、その検出された故障を表す故障コード（以下、確定故障コードと言う）を故障コード記憶領域に記憶させると共に、その確定故障コードのうち、バックアップ領域に記憶すべき確定故障コード（以下、永久故障コードと言う）をバックアップ領域に記憶させる記憶制御手段とを備え、車両に搭載される車両用記憶管理装置において、揮発性メモリは、さらに、バックアップ領域内の情報と同じ情報を記憶するためのミラー領域を備え、記憶制御手段は、故障が検出されると、その検出された故障を表す確定故障コードをミラー領域に記憶させ、その後、当該確定故障コードを故障コード記憶領域に記憶させ、その後、当該確定故障コードを永久故障コードとしてバックアップ領域に記憶させ、さらに、復旧処理として、ミラー領域、故障コード記憶領域、及びバックアップ領域の情報に基づき、ミラー領域の情報とバックアップ領域の情報とが不一致、且つ、ミラー領域内の確定故障コードのうち記憶時期の最も新しい確定故障コード（以下、最新コードと言う）が故障コード記憶領域に記憶されていると判断すると、当該最新コードをバックアップ領域に記憶させ、ミラー領域の情報とバックアップ領域の情報とが不一致、且つ、ミラー領域内における最新コードが故障コード記憶領域に記憶されていないと判断すると、当該最新コードを故障コード記憶領域及びバックアップ領域の両方に記憶させる処理を行うことを特徴としている。
【００２９】
これによれば、領域間のデータの不整合が生じた場合に、最初に更新されるミラー領域のデータが採用され、他の２つの故障コード記憶領域、及びバックアップ領域のデータが、採用されたデータに更新されるようになる。
【００３０】
より詳しく説明すると、例えば、最初にミラー領域のデータが更新された時点で車両用記憶管理装置にリセットがかかったとしても、そのミラー領域のデータが、他の２つの故障コード記憶領域及びバックアップ領域と同じ古いデータに更新されることなく、逆に、その故障コード記憶領域及びバックアップ領域の古いデータがミラー領域の新しいデータに更新されるようになる。
【００３１】
ここで、請求項７の車両用記憶管理装置において、領域間のデータの不整合が生じた原因が、最初に更新されるミラー領域のデータ化けによるものだった場合に、誤ったデータを他の２つの故障コード記憶領域及びバックアップ領域に書き込んでしまうことになる。
【００３２】
そこで、請求項８の車両用記憶管理装置では、請求項７の車両用記憶管理装置において、ミラー領域は、記憶対象のコード毎に、そのコードと同じコードを記憶するための複数の記憶領域を有し、記憶制御手段は、記憶対象の確定故障コード毎に、ミラー領域における複数の記憶領域のそれぞれにその確定故障コードを記憶させると共に、そのミラー領域における複数の記憶領域のうち過半数の記憶領域で一致したコードを正規の確定故障コードと認識して前記復旧処理を行い、さらに、その正規の確定故障コードとは異なるコードが記憶されている記憶領域のそのコードを、その正規の確定故障コードに書き換えることを特徴としている。
【００３３】
これによれば、ミラー領域のデータのうちデータ化けした誤ったデータが採用されてしまうことを防止でき、また、データ化けが生じたとしても、正しいデータに復旧されるようになる。つまり、ミラー領域のデータの信頼性を向上させることができ、ひいては、故障コード記憶領域及びバックアップ領域のデータを誤ったデータに更新してしまうことを防止することができる。
【００３４】
次に、請求項９の車両用記憶管理装置は、請求項７，８の車両用記憶管理装置において、少なくとも揮発性メモリには、車両におけるバッテリの脱着履歴を表す情報が記憶されるようになっており、記憶制御手段は、脱着履歴を表す情報に基づきバッテリが取り外されたと判断すると、前記復旧処理に代えて、バックアップ領域内の情報全てをミラー領域に複製することを特徴としている。
【００３５】
具体的に、揮発性メモリに所定のコードを記憶しておき、そのコードがクリア（または変更）されているか否かによって、バッテリが取り外されたか否かが確認できるようにすることができる。つまり、所定のコードがクリア（または変更）されていればバッテリが取り外されたと判断でき、所定のコードがクリア（または変更）されていなければバッテリが取り外されていないと判断できる。
【００３６】
そして、これによれば、バッテリが取り外されてミラー領域や故障コード記憶領域のデータがクリアされたとしても、バックアップ領域の情報がミラー領域に複製されるため、ミラー領域及びバックアップ領域の整合性をとることができる。
【発明を実施するための最良の形態】
【００３７】
以下に、本発明の実施形態を図面に基づき説明する。
［第１実施形態］
図１は、本発明が適用された電子制御装置（以下、ＥＣＵと記載する）１の構成図である。このＥＣＵ１は、車両（図示省略）に搭載され、その車両の各部を制御する。
【００３８】
ＥＣＵ１は、マイコン２と、不揮発性メモリとしてのＥＥＰＲＯＭ１４とを備えている。ＥＥＰＲＯＭ１４は、バス１６及び図示しない所定のインタフェースを介して、マイコン２とデータのやりとりが可能に接続される。
【００３９】
マイコン２は、所定のプログラムに従って各種処理を実行するＣＰＵ４と、ＣＰＵ４が実行するプログラム等が記憶されるＲＯＭ８と、ＣＰＵ４の演算結果等の情報を記憶するためのＲＡＭ１０と、車両の図示しないバッテリから常時電圧が供給されて、電圧が供給される間データを保持可能なバックアップＲＡＭ（以下、ＳＲＡＭと記載する）１２と、外部の電子装置と接続するためのインタフェース（Ｉ／Ｏ）６と、それらを相互に接続するバス１６とを備えている。
【００４０】
ＣＰＵ４は、ＲＯＭ８に記憶された故障診断のためのプログラムに従い動作して、車両の故障の有無を検出するようになっている。そして、故障を検出した場合には、故障を表す故障コード（ＤＴＣ：Ｄｉａｇｎｏｓｔｉｃ  Ｔｒｏｕｂｌｅ  Ｃｏｄｅｓ）を、ＳＲＡＭ１２及びＥＥＰＲＯＭ１４に記憶させる。具体的には、故障コードをＳＲＡＭ１２に記憶させると共に、ＳＲＡＭ１２に記憶させた故障コードと同じコードを、永久故障コード（ＰＤＴＣ：Ｐｅｒｍａｎｅｎｔ  Ｄｉａｇｎｏｓｔｉｃ  Ｔｒｏｕｂｌｅ  Ｃｏｄｅｓ）として、ＥＥＰＲＯＭ１４に記憶させる。尚、以下、ＳＲＡＭ１２に記憶される故障コードのことをＤＴＣと言い、特に、ＥＥＰＲＯＭ１４に記憶される故障コードのことをＰＤＴＣと言う。
【００４１】
ところで、ＥＥＰＲＯＭ１４にＰＤＴＣを記憶させることは、法規により義務づけられている。具体的には、ＳＲＡＭ１２にＤＴＣを記憶させた後、そのＤＴＣのうち所定のＤＴＣと同じコード（ＰＤＴＣ）を、イグニションサイクル（車両のイグニションスイッチがオンされてからオフされるまで、或いはオンされてから次にオンされるまで）の終わりまでに、ＥＥＰＲＯＭ１４に記憶させなくてはならない。
【００４２】
次に、状態診断装置３は、ＥＣＵ１から故障コードを取得してそのＥＣＵ１が搭載された車両の状態診断を行う装置であり、Ｉ／Ｏ６を介して、ＥＣＵ１のマイコン２と接続される。具体的には、例えば修理工場やディーラーにおいて、修理担当者等が、状態診断装置３をＥＣＵ１に通信可能に接続する。
【００４３】
ＥＣＵ１は、状態診断装置３から故障コードの送信要求を受けると、ＳＲＡＭ１２に記憶されたＤＴＣを読み出して、その読み出したＤＴＣを状態診断装置３に送信する。仮に、車両のバッテリが取り外されてＳＲＡＭ１２に電圧が供給されなくなったりＥＣＵ１に異常が生じてそのＥＣＵ１及びＳＲＡＭ１２が初期化されたりして、ＳＲＡＭ１２に記憶されたＤＴＣが消失した場合には、ＥＥＰＲＯＭ１４に記憶させておいたＰＤＴＣをＳＲＡＭ１２に書込むことによって、ＳＲＡＭ１２のデータを回復させる。
【００４４】
次に、図２は、ＳＲＡＭ１２の記憶領域の構成を表す図面である。
図２に示すように、ＳＲＡＭ１２には、ＤＴＣを記憶する領域（以下、ＤＴＣ記憶領域と記載する）と、ＰＤＴＣのコピー（ミラー）を記憶する領域（以下、ミラー領域と記載する）と、ＳＲＡＭ１２の更新状態を表す更新情報を記憶する領域（以下、更新情報記憶領域と記載する）とを有している。
【００４５】
ＥＥＰＲＯＭ１４は、ＰＤＴＣを記憶する領域（以下、ＰＤＴＣ記憶領域と記載する）を有している。
さらに詳しく説明すると、ＤＴＣ記憶領域は、ＤＴＣを１個だけ格納する格納領域を複数（例えば５個以上）有している。ＰＤＴＣ記憶領域は、ＰＤＴＣを１個だけ格納する格納領域を４つ有している。これは、ＥＥＰＲＯＭ１４には、ＰＤＴＣを４つまで記憶しておけば良いという法規に基づくものである。ミラー領域は、ＰＤＴＣ記憶領域と同じ構成を有している。具体的に、ＰＤＴＣのミラーを１個だけ格納する格納領域を４つ有している。本実施形態では、詳しくは後述するが、ミラー領域の情報をＰＤＴＣ記憶領域に複製し、或いはＰＤＴＣ記憶領域の情報をミラー領域に複製することで、両者の整合を図るようにしている。
【００４６】
次に、図３は、マイコン２のＣＰＵ４が実行する異常検出処理の流れを表すフローチャートである。
この異常検出処理では、まず、Ｓ１１０において、異常検出処理を起動し、所定の検出対象について異常（故障）があるか否かの異常検出を行う。次に、Ｓ１２０に移行し、Ｓ１１０の検出結果に基づき異常が有るか否かを判定し、異常無しと判定した場合には（Ｓ１２０：ＮＯ）、そのまま当該処理を終了する。
【００４７】
一方、Ｓ１２０で異常ありと判定すると（Ｓ１２０：：ＹＥＳ）、Ｓ１３０に移行し、ミラー領域に記憶されているコード数が４未満か否かを判定する。
Ｓ１３０で４未満でないと判定すると（Ｓ１３０：ＮＯ）、ミラー領域（及びＰＤＴＣ記憶領域）に新たにコードを記憶させなくても良いと判断する一方、Ｓ１７０に移行して、今回検出された異常を表すＤＴＣをＤＴＣ記憶領域に記憶させる。そしてその後、当該処理を終了する。
【００４８】
一方、Ｓ１３０で、ミラー領域のコード数が４未満であると判定すると（Ｓ１３０：ＹＥＳ）、今回検出された異常を表すＤＴＣをＰＤＴＣ記憶領域（及びミラー領域）に記憶すべきと判断し、Ｓ１４０に移行して、まず、更新情報を更新中にする。「更新中」とは、ミラー領域及びＤＴＣ記憶領域に所定のコードを記憶する最中であることを表す趣旨である。
【００４９】
次に、Ｓ１５０に進み、そのＰＤＴＣ記憶領域（及びミラー領域）に記憶すべきと判断したＤＴＣ（つまり、ＰＤＴＣ）のミラーを、ミラー領域に記憶させる。
そして、Ｓ１６０に進み、ＤＴＣ記憶領域に、その今回検出した異常を表すＤＴＣを記憶させる。
【００５０】
そして次に、Ｓ１８０に進み、更新情報を更新許可にする。「更新許可」とは、ミラー領域及びＤＴＣ記憶領域の更新が完了し、そのミラー領域の情報をＰＤＴＣ記憶領域に複製しても良いことを表す趣旨である。Ｓ１８０の後は、当該処理を終了する。
【００５１】
次に、図４は、マイコン２のＣＰＵ４が定期的に実行する定常処理を表すフローチャートである。
この処理では、Ｓ２１０で定常処理を起動し、次に、Ｓ２１２に進む。
【００５２】
Ｓ２１２では、ＰＤＴＣ記憶領域のＰＤＴＣを削除するか否かを判定する。この処理では、例えばＰＤＴＣが表す故障について、複数のトリップ期間（イグニションサイクルと同義であり、車両のイグニションスイッチのオンからオフまでの期間、或いは車両のイグニションスイッチのオンから次のオンまでの期間）において正常復帰したと正常判定されると、その正常判定に係るＰＤＴＣをＥＥＰＲＯＭ１４から削除しても良いという法規に従う。つまり、所定の故障について、複数のトリップ期間において正常判定がなされたか否かに基づき、ＰＤＴＣを削除するか否かを判定する。そして、複数のトリップ期間において正常判定がなされたと判断すると、その正常判定に係るＰＤＴＣについては、ＥＥＰＲＯＭ１４から削除すると判定する。
【００５３】
Ｓ２１２でＰＤＴＣを削除すると判定すると（Ｓ２１２：ＹＥＳ）、Ｓ２１４に移行し、更新情報を更新中にする。
次に、Ｓ２１６に進み、ミラー領域のミラーのうち、削除対象のＰＤＴＣに対応するミラーを削除する。
【００５４】
そして次に、Ｓ２１８に進み、更新情報を更新許可にする。Ｓ２１８の後は、Ｓ２２０に進む。また、Ｓ２１２においてＰＤＴＣを削除しないと判定した場合も（Ｓ２１２：ＮＯ）、Ｓ２２０に移行する。
【００５５】
Ｓ２２０では、更新情報が更新許可であるか否かを判定し、更新許可であると判定すると（Ｓ２２０：ＹＥＳ）、Ｓ２３０に移行し、ミラー領域の情報をＰＤＴＣ記憶領域に複製する。これにより、ミラー領域及びＰＤＴＣ記憶領域の両者の整合が図られる。
【００５６】
次に、Ｓ２４０に進み、更新情報を更新無にする。「更新無」とは、ミラー領域及びＰＤＴＣ記憶領域の両者の整合が図られた後において、ミラー領域及びＤＴＣ記憶領域が更新されていないことを表す趣旨である。言い換えれば、ミラー領域及びＰＤＴＣ記憶領域の両者の整合が維持されていることを意味する。
【００５７】
Ｓ２４０の後は、Ｓ２５０に進む。ここで、Ｓ２２０で更新情報が更新許可でないと判定した場合も（Ｓ２２０：ＮＯ）、Ｓ２５０に移行する。
Ｓ２５０では、ミラー領域の情報及び更新情報が共に初期値であるか否かを判定する。例えば、図示しない車両のバッテリが取り外されると、ＳＲＡＭ１２への電源の供給が遮断され、ミラー領域の情報及び更新情報が共に初期値になる。
【００５８】
ミラー領域の情報及び更新情報がともに初期値であると判定すると（Ｓ２５０：ＹＥＳ）、Ｓ２６０に移行し、ＰＤＴＣ記憶領域の情報を、ミラー領域に複製する。そしてその後、当該処理を終了する。
【００５９】
一方、Ｓ２５０で、ミラー領域の情報及び更新情報が共に初期値でないと判定すると（Ｓ２５０：ＮＯ）、そのまま当該処理を終了する。
次に、図５は、マイコン２のＣＰＵ４が実行するＩＧ電源オン時処理を表すフローチャートである。ＩＧとは、車両のイグニションスイッチのことである。
【００６０】
この処理は、車両のイグニションスイッチがオンされると開始される。また、ＥＣＵ１がリセット（初期化）されると開始される。尚、ＳＲＡＭ１２の情報は、そのＳＲＡＭ１２に常時電圧を供給する図示しないバッテリが取り外されない限り、保持される。
【００６１】
まず、Ｓ３１０でＩＧ電源ＯＮ時処理を起動すると、次にＳ３２０に進み、更新情報が更新中か否かを判定する。
Ｓ３２０で、更新情報が更新中でないと判定すると（Ｓ３２０：ＮＯ）、更新情報は更新許可、或いは更新無であると判断する。言い換えると、前回ＩＧがオフされる前の更新（ミラー領域及びＤＴＣ記憶領域の更新）が正常に終了した、或いは更新がなされていないと判断する。そしてそのまま当該処理を終了する。
【００６２】
一方、Ｓ３２０で更新中であると判定すると（Ｓ３２０：ＹＥＳ）、前回ＩＧがオフされる前の更新が正常に終了していないと判断し、Ｓ３３０に移行する。Ｓ３３０では、ミラー領域の最後のコード、言い換えると、記憶時期の最も新しいコードが、ＤＴＣ記憶領域に含まれるか否かを判定する。
【００６３】
Ｓ３３０で、ミラー領域において記憶時期の最も新しいコードがＤＴＣ記憶領域に含まれると判定すると（Ｓ３３０：ＹＥＳ）、前回ＩＧがオフされる前の更新が正常に終了していると判断し、Ｓ３４０に移行して、更新情報を更新許可にする。そしてその後、当該処理を終了する。
【００６４】
一方、Ｓ３３０で、ミラー領域において記憶時期の最も新しいコードがＤＴＣ記憶領域に含まれないと判定すると（Ｓ３３０：ＮＯ）、Ｓ３５０に移行し、ＰＤＴＣ記憶領域の情報をミラー領域に複製する。
【００６５】
そして次に、Ｓ３６０に進み、更新情報を更新無にする。そしてその後、当該処理を終了する。
次に、図６は、本実施形態の作用を説明するためのタイムチャートである。
【００６６】
図６では、ＳＲＡＭ１２におけるＤＴＣ記憶領域、ミラー領域、更新情報記憶領域と、ＥＥＰＲＯＭ１４におけるＰＤＴＣ記憶領域の記憶態様を表している。この図６を用いて、ＤＴＣ記憶領域、ミラー領域、更新情報記憶領域、及びＰＤＴＣ記憶領域の記憶態様と、リセットタイミングとの関係について説明する。
【００６７】
ここで、リセットとは、ＥＣＵ１に何らかの異常が生じてそのＥＣＵ１が初期化されることを言う。尚、手動によりリセットされることもある。本実施形態のＥＣＵ１では、リセットがどのタイミングで生じたとしても、ミラー領域とＰＤＴＣ記憶領域との整合が図られるようになっている。以下、説明する。
【００６８】
まず、前提を説明する。ＤＴＣ記憶領域には、ＤＴＣとして「Ａ」が記憶され、ミラー領域には、ＤＴＣ記憶領域のＤＴＣ記憶と同じ「Ａ」が記憶されていることを前提とする。また、ＰＤＴＣ記憶領域にも「Ａ」が記憶されている。また尚、更新情報記憶領域には、更新情報として、「更新無」が記憶されているものとする。以下の説明において、処理の主体は、ＥＣＵ１が備えるマイコン２（より具体的に、ＣＰＵ４）である。
【００６９】
次に、作用について具体的に説明する。所定の検出対象について故障が生じると、その故障の旨が検出される（時刻ｔ１、Ｓ１１０→Ｓ１２０：ＹＥＳ）。尚、この時刻ｔ１で検出された故障を表すＤＴＣを「Ｂ」とする。次に、ミラー領域に記憶されているコード数は１であるため（Ｓ１３０：ＹＥＳ）、更新情報を「更新中」にする（Ｓ１４０）。
【００７０】
ここで、更新情報を「更新中」にする処理が完了する前に、リセットが生じたとする（パターン１）。つまり、更新情報は「更新無」のままである。
リセットが生じた後（初期化処理が終了した後）は、ＩＧ電源ＯＮ時処理が開始され、この処理で、更新情報は「更新中」でない（より詳しくは、「更新無」である）と判定する（Ｓ３２０：ＮＯ）。この場合、ＩＧ電源ＯＮ時処理はそのまま終了となる。
【００７１】
また、その後実行されることとなる定常処理においては、更新情報は「更新許可」でないと判定し（Ｓ２２０：：ＮＯ）、また、ミラー領域の情報及び更新情報は初期値でないと判定する（Ｓ２５０：ＮＯ）。さらに、ＰＤＴＣを削除しないと判定して（Ｓ２７０：ＮＯ）、そのまま定常処理を終了する。
【００７２】
このように、パターン１では、ミラー領域及びＰＤＴＣ記憶領域の情報はそのまま（つまり、「Ａ」のみ記憶）であり、整合性は維持される。
図６に戻り、更新情報を「更新中」に書き換える処理が終了すると（時刻ｔ２、Ｓ１４０）、ミラー領域に、今回検出した故障を表すＤＴＣである「Ｂ」を記憶させる（Ｓ１５０）。
【００７３】
ここで、ミラー領域に「Ｂ」を記憶させる処理が完了する前に、リセットが生じたとする（パターン２）。つまり、ミラー領域に「Ｂ」はまだ記憶されていない。
この場合、ＩＧ電源ＯＮ時処理で、更新情報は「更新中」と判定する（Ｓ３２０：ＹＥＳ）。そして、ミラー領域において最も記憶時期の新しいコード（この場合「Ａ」）がＤＴＣ記憶領域に記憶されているか否かの判定処理で、記憶されていると判定して（Ｓ３３０：ＹＥＳ）、更新情報を「更新許可」にする（Ｓ３４０）。
【００７４】
そして、その後に実行されることとなる定常処理で、更新情報は「更新許可」と判定し（Ｓ２２０）、ミラー領域の情報をＰＤＴＣ記憶領域に複製する。具体的には、ミラー領域における「Ａ」をそのままＰＤＴＣ記憶領域に複製する。これにより、ミラー領域及びＰＤＴＣ記憶領域の整合が改めて図られる。
【００７５】
図６に戻り、ミラー領域への「Ｂ」の記憶が完了すると、次に、その「Ｂ」をＤＴＣ記憶領域に記憶させる（時刻ｔ３、Ｓ１６０）。
ここで、ＤＴＣ記憶領域に「Ｂ」を記憶させる処理が完了する前に、リセットが生じたとする（パターン３）。つまり、ＤＴＣ記憶領域に「Ｂ」はまだ記憶されていない。
【００７６】
この場合、ＩＧ電源ＯＮ時処理で、更新情報は「更新中」と判定する（Ｓ３２０：ＹＥＳ）。そして、ミラー領域において最も記憶時期の新しいコード（この場合、「Ｂ」）がＤＴＣ記憶領域に記憶されているか否かの判定処理で、記憶されていないと判定して（Ｓ３３０：ＮＯ）、ＰＤＴＣ記憶領域の情報をミラー領域に複製する。これにより、「Ｂ」が一旦ミラー領域に記憶されたものの、ミラー領域の情報がＰＤＴＣ記憶領域の情報と同じになり、ＰＤＴＣ記憶領域及びミラー領域の整合が図られることになる。尚、更新情報は「更新無」にする（Ｓ３６０）。
【００７７】
そして、その後実行されることとなる定常処理で、更新情報は「更新許可」でないと判定し（Ｓ２２０：ＮＯ）、また、ミラー領域の情報及び更新情報は初期値でないと判定する（Ｓ２５０：ＮＯ）。さらに、ＰＤＴＣを削除しないと判定して（Ｓ２７０：ＮＯ）、そのまま定常処理を終了する。
【００７８】
図６に戻り、ＤＴＣ記憶領域に「Ｂ」を記憶させる処理が完了すると、更新情報を「更新許可」にする（時刻ｔ４、Ｓ１８０）。
ここで、更新情報を「更新許可」にする処理が完了する前に、リセットが生じたとする（パターン４）。つまり、更新情報は「更新中」のままである。
【００７９】
この場合、ＩＧ電源ＯＮ時処理で、更新情報は「更新中」と判定し（Ｓ３２０：ＹＥＳ）する。そして、ミラー領域において最も記憶時期の新しいコード（この場合、「Ｂ」）がＤＴＣ記憶領域に記憶されているか否かの判定処理で、記憶されていると判定して（Ｓ３３０：：ＹＥＳ）、更新情報を「更新許可」にする（Ｓ３４０）。
【００８０】
そして、その後実行されることとなる定常処理で、更新情報は「更新許可」と判定し（Ｓ２２０：ＹＥＳ）、ミラー領域の情報をＰＤＴＣ記憶領域に複製する（Ｓ２３０）。尚、更新情報は「更新無」にする（Ｓ２４０）。そして、ミラー領域の情報及び更新情報は初期値でないと判定し（Ｓ２５０：ＮＯ）、また、ＰＤＴＣは削除しないと判定して（Ｓ２７０：ＮＯ）、そのまま定常処理を終了する。
【００８１】
このように、更新情報が「更新許可」でない場合でも、ミラー領域及びＤＴＣ記憶領域が正常に更新されていれば、ミラー領域の情報をＰＤＴＣ記憶領域に複製する。これにより、そのミラー領域及びＰＤＴＣ記憶領域の整合が図られ、ひいてはＤＴＣ記憶領域及びＰＤＴＣ記憶領域の整合が図られる。
【００８２】
図６に戻り、更新情報を「更新許可」にする処理が完了すると（時刻ｔ５、Ｓ１８０）、その後の定常処理で、ミラー領域の情報がＰＤＴＣ記憶領域に複製される（時刻ｔ５、Ｓ２３０）。
【００８３】
ここで、ミラー領域の情報をＰＤＴＣ記憶領域に複製する処理が完了する前に、リセットが生じたとする（パターン５）。
この場合、ＩＧ電源ＯＮ時処理については、パターン４の場合と同様である。また、定常処理についても、パターン４の場合と同様である。
【００８４】
つまり、ミラー領域の情報をＰＤＴＣ記憶領域に複製する最中にリセットが生じたとしても、その後、ＩＧ電源ＯＮ時処理、及び定常処理で、ミラー領域の情報がＰＤＴＣ記憶領域に複製され、両者の整合が図られるようになっている。
【００８５】
図６に戻り、ミラー領域の情報をＰＤＴＣ記憶領域に複製する処理が完了すると（時刻ｔ６、Ｓ２３０）、更新情報を「更新無」にする（Ｓ２４０）。
ここで、更新情報を「更新無」にする処理が完了する前に、リセットが生じたとする（パターン６）。つまり、更新情報は「更新許可」のままである。
【００８６】
この場合、ＩＧ電源ＯＮ時処理で、更新情報は「更新中」でないと判定（Ｓ３２０：ＮＯ）し、そのＩＧ電源ＯＮ時処理を終了する。そして、その後の定常処理でＳ２１２：ＮＯ→Ｓ２２０と進み、Ｓ２２０で、更新情報は「更新許可」であると判定し（Ｓ２２０：ＹＥＳ）、ミラー領域の情報（Ａ及びＢ）をＰＤＴＣ記憶領域に複製する。そして、更新情報を「更新無」にし（Ｓ２４０）、Ｓ２５０：ＮＯと進んで、定常処理を終了する。尚、図６の例で、更新情報を「更新無」にする処理は、時刻ｔ７で完了している。
【００８７】
ここで、例えば、ＤＴＣ（或いはＰＤＴＣ）の「Ｂ」が表す故障について、正常判定がなされたとする（時刻ｔ８）。正常判定とは、具体的に、所定の故障について、複数のトリップ期間において正常に復帰したと判断されることである。
【００８８】
この場合、ＰＤＴＣ記憶領域からその「Ｂ」を消去すると判定し（Ｓ２７０：ＹＥＳ）、ＰＤＴＣ記憶領域における「Ｂ」を消去する（時刻ｔ８〜ｔ９、Ｓ２８０）。また、ミラー領域から、その「Ｂ」のミラー（ここでは、同じく「Ｂ」）を削除する（時刻ｔ９〜ｔ１０、Ｓ２８０）。尚、ＤＴＣ記憶領域はそのままである（つまり、「Ｂ」は記憶したままである）。この例で言えば、ＤＴＣ記憶領域のコード数とＰＤＴＣ記憶領域のコード数とは必ずしも一致しないが、ＰＤＴＣ記憶領域のＰＤＴＣと同じコードが、ＤＴＣ記憶領域に含まれることとなり、整合性が維持されることとなる。
【００８９】
図１０〜１３は、本実施形態の作用をより詳細に説明した図である。
具体的に、図１０，１１は、データの記憶態様を表した図であり、図１２，図１３は、リセットが生じた場合のデータの記憶態様（復旧態様）を表した図である。
【００９０】
図１０，１１において、横軸は時系列を表し、縦軸は、各コード（各記憶領域）を表す項目を、故障が検出された際の情報の書込順に並べたものである。つまり、故障が検出されると、先にも説明したとおり、１．更新情報→２．永久故障コードミラー（ミラー領域）→３．確定故障コード：ＤＴＣ（ＤＴＣ記憶領域）→４．更新情報→５．永久故障コード：ＰＤＴＣ（ＰＤＴＣ記憶領域）→６．更新情報の順で情報が書き込まれる。また、Ｐ００１０〜Ｐ００９０は、故障コードを表す。尚、ＭＩＬは、ユーザなどに異常や故障を知らせるための警告灯のことである。ところで、以下では、説明の便宜上、時系列を表す場合には、時系列１、時系列２、・・・というように記載する。
【００９１】
図１０において、時系列１で故障（ＤＴＣ：Ｐ００１０）が検出されると（Ｓ１１０→Ｓ１２０：ＹＥＳ→Ｓ１３０：ＹＥＳ）、更新情報が「更新中」に書き換えられ（Ｓ１４０）、ミラー領域にＰ００１０が記憶され（Ｓ１５０）、ＤＴＣ記憶領域にＰ００１０が記憶され（Ｓ１６０）、更新情報が「更新許可」に書き換えられる（Ｓ１８０）。その後の定常処理で（図４）、ミラー領域の情報がＰＤＴＣ記憶領域に複製され（Ｓ２２０：ＹＥＳ→Ｓ２３０）、更新情報が「更新無」に書き換えられる（Ｓ２４０）。時系列２についても同様である。
【００９２】
次に、時系列３において、ＤＣＴ記憶領域の情報が外部のツール（例えば状態診断装置３：図１参照）により削除されたとする。この場合、その他の記憶領域の情報はそのままである。
【００９３】
時系列４において、故障（ＤＴＣ：Ｐ００３０）が検出されると、時系列１で説明したのと同様に、情報が記憶・更新される。そして、この時系列４においては、図１０に示すように、ミラー領域及びＰＤＴＣ記憶領域にはＰ００１０、Ｐ００２０、及びＰ００３０が記憶され、ＤＴＣ記憶領域にはＰ００３０のみが記憶されることとなる（ＤＴＣ記憶領域の情報は、時系列３で削除されているため）。
【００９４】
時系列５において、故障（ＤＴＣ：Ｐ００４０）が検出されると、ミラー領域及びＰＤＴＣ記憶領域に、Ｐ００１０、Ｐ００２０、Ｐ００３０、及びＰ００４０が記憶され、ＤＴＣ記憶領域には、Ｐ００３０及びＰ００４０が記憶されることとなる。
【００９５】
時系列６において、故障（ＤＴＣ：Ｐ００５０）が検出されると、ミラー領域に記憶されているコード数が４つのため（Ｓ１３０：ＮＯ）、ＤＴＣ記憶領域にのみＰ００５０が記憶される（Ｓ１７０）。この場合、更新情報、及びＰＤＴＣ記憶領域の情報はそのままである（ＰＤＴＣ記憶領域について、図４のＳ２１２：ＮＯ→Ｓ２２０：ＮＯ→Ｓ２５０：ＮＯ）。
【００９６】
時系列７において、３トリップ期間において正常復帰した旨の正常判定がなされると、ＰＤＴＣ削除と判定され（Ｓ２１２：ＹＥＳ）、更新情報が「更新中」に書き換えられると共に（Ｓ２１４）、ミラー領域の情報が削除され（Ｓ２１６）、更新情報が「更新許可」に書き換えられ（Ｓ２１８）、ミラー領域の情報がそのままＰＤＴＣ記憶領域に複製される（Ｓ２３０）。つまり、ＰＤＴＣ記憶領域の情報が削除される。そして、更新情報が「更新無」に書き換えられる（Ｓ２４０）。
【００９７】
時系列８において、故障（ＤＴＣ：Ｐ００６０）が検出されると、時系列１で説明したのと同様に、情報が記憶・更新される。そして、この時系列８においては、図１０に示すように、ミラー領域及びＰＤＴＣ記憶領域にはＰ００６０が記憶され、ＤＴＣ記憶領域にはＰ００３０、Ｐ００４０、Ｐ００５０、Ｐ００６０が記憶されることとなる。
【００９８】
時系列９〜１１（図１１も参照）において、それぞれ、故障が検出されると、時系列１で説明したのと同様に、情報が記憶・更新される。
図１１に進み、時系列１２において故障が検出されると、時系列６で説明したのと同様に、情報が記憶・更新される。
【００９９】
時系列１３で、車両のバッテリが取り外されたとすると（バッテリクリア）、ＳＲＡＭ１２の情報が全て削除される。つまり、ミラー領域及びＤＴＣ記憶領域の情報が全て削除され、更新情報が初期値になる。ＰＤＴＣ記憶領域の情報はそのままである。
【０１００】
時系列１４において、バッテリが復帰する（バッテリがつながれる）と、ＰＤＴＣ記憶領域の情報がそのままミラー領域に複製される（Ｓ３２０：ＮＯ、Ｓ２２０：ＮＯ→Ｓ２５０：ＹＥＳ→Ｓ２６０）。
【０１０１】
時系列１５において、Ｐ００６０について正常復帰した旨の正常判定がなされると、そのＰ００６０を削除すると判定し（Ｓ２１２：ＹＥＳ）、更新情報が「更新中」に書き換えられると共に（Ｓ２１４）、ミラー領域のＰ００６０が削除され（Ｓ２１６）、更新情報が「更新許可」に書き換えられ（Ｓ２１８）、ミラー領域の情報がそのままＰＤＴＣ記憶領域に複製され（Ｓ２３０）、更新情報が「更新無」に書き換えられる（Ｓ２４０）。
【０１０２】
時系列１６〜１８においても、時系列１５と同様である。
次に、図１２，１３に基づき説明する。図１２，１３の時系列１〜１８は、図１０，１１の時系列１〜１８に対応する。
【０１０３】
図１２で、時系列１において、例えば書き込み順１で、更新情報が「更新無」から「更新中」に書き換えられた直後にリセットが生じると、その書き換えの処理が無かったかのように復旧される。つまり、更新情報が「更新無」になる（Ｓ３２０：ＹＥＳ→Ｓ３３０：ＮＯ→（Ｓ３５０）→Ｓ３６０）。また、時系列１において、ミラー領域にＰ００１０が書き込まれた直後にリセットが生じると、その書き込みの処理が無かったかのように復旧される（Ｓ３２０：ＹＥＳ→Ｓ３３０：ＮＯ→Ｓ３５０→Ｓ３６０）。
【０１０４】
時系列２において（Ｐ００１０がすでに記憶されているものとする）、書き込み順１で、更新情報が「更新無」から「更新中」に書き換えられた直後にリセットが生じると、その書き換えの処理が無かったかのように復旧される（Ｓ３６０）。また、ミラー領域にＰ００２０が書き込まれた直後にリセットが生じると、その書き込みの処理が無かったかのように復旧される（Ｓ３５０）。時系列４，５についても同様である。尚、時系列３，６については、図１０で説明したとおりであり、ここでは説明を省略する。
【０１０５】
時系列７において、３トリップ期間において正常復帰した旨の正常判定がなされ、書き込み順１で、更新情報が「更新無」から「更新中」に書き換えられた直後にリセットが生じると、その書き換えの処理が無かったかのように復旧される（Ｓ３６０）。また、ミラー領域の情報が削除された後にリセットが生じると、その削除の処理が無かったかのように復旧される（Ｓ３６０）。時系列８〜１１についても同様である。また、時系列１２〜１４については、図１１で説明したとおりであり、ここでは説明を省略する。
【０１０６】
次に、時系列１５において、Ｐ００６０について正常復帰した旨の正常判定がなされ、書き込み順１で更新情報が「更新無」から「更新中」に書き換えられた直後にリセットが生じると、その書き換えの処理が無かったかのように復旧される（Ｓ３６０）。また、ミラー領域からＰ００６０が削除された後にリセットが生じると、その削除の処理が無かったかのように復旧される（Ｓ３２０：ＹＥＳ→Ｓ３３０：ＮＯ→Ｓ３５０）。時系列１６〜１７についても同様である。
【０１０７】
以上説明したように、本実施形態のＥＣＵ１は、故障を検出すると、その故障を表す故障コードをＳＲＡＭ１２のミラー領域に記憶させ、次にＤＴＣ記憶領域に記憶させる。そして、ミラー領域の情報を、ＰＤＴＣ記憶領域に複製する。
【０１０８】
尚、ミラー領域は、ＰＤＴＣ記憶領域と同じ構成を有している。このため、ミラー領域の情報をＰＤＴＣ記憶領域に容易に複製できる。そして、ミラー領域の情報をＰＤＴＣ記憶領域に複製することで、ミラー領域の情報とＰＤＴＣ記憶領域の情報とが一致し、ひいてはＤＴＣ記憶領域とＰＤＴＣ記憶領域の情報とが一致することとなる。このため、ＤＴＣ記憶領域とＰＤＴＣ記憶領域の整合を簡易にとることができる。
【０１０９】
しかも、ＳＲＡＭ１２には、ＳＲＡＭ１２の更新状態を表す更新情報を記憶する更新情報記憶領域が設けられる。そして、ＥＣＵ１は、その更新情報に基づき、ミラー領域及びＤＴＣ記憶領域に正常に所定のＤＴＣが記憶された（更新された）ことを判断すると共に、その判断のうえで、ミラー領域の情報をＰＤＴＣ記憶領域に複製する。また、ＥＣＵ１は、更新情報に基づき、ミラー領域及びＤＴＣ記憶領域に所定のＤＴＣが正常に記憶されていない（例えば、更新が完了していない）ことを判断すると共に、その場合には、ＰＤＴＣ記憶領域の情報をミラー領域に複製する。このようにして、ミラー領域とＰＤＴＣ記憶領域との整合、ひいてはＤＴＣ記憶領域とＰＤＴＣ記憶領域の整合を確実に確保できるようになる。尚、ここでいう「整合」がとれているとは、例えば、ＤＴＣ記憶領域及びＰＤＴＣ記憶領域のそれぞれにおいて、記憶すべきコードが記憶されていることを含む趣旨であり、言い換えれば、ＤＴＣ記憶領域及びＰＤＴＣ記憶領域の両方又は一方において、記憶すべきでない故障コードが記憶されていないことを含む趣旨である。
【０１１０】
さらに、ＥＣＵ１は、ミラー領域の情報と更新情報とに基づき、ＳＲＡＭ１２の状態を以下のように、より正確に判別できるようになっている。
例えば、ＳＲＡＭ１２に電圧を供給するバッテリが取り外されると、ＳＲＡＭ１２が記憶する情報が全て消失する（ＳＲＡＭ１２が初期化される）。このため、ミラー領域の情報及び更新情報が共に初期値なら、バッテリが取り外された旨を判別できる。
【０１１１】
車両のイグニションスイッチがオフされたり、ＥＣＵ１が初期化されたりした場合、ＳＲＡＭ１２には、イグニションスイッチがオフされる直前、或いはＥＣＵ１が初期化される直前の情報が記憶される。そしてこの際、ＥＣＵ１は、更新情報に基づき、ミラー領域或いはＤＴＣ記憶領域について、情報の更新中であったか否か、或いは情報の更新が完了したか否かを判別できる。
【０１１２】
また、例えば、ＥＣＵ１に状態診断装置３からＤＴＣの消去指令が入力されてＤＴＣ記憶領域の情報が削除されたような場合、その旨を判別できる。具体的に、状態診断装置３からの消去指令で削除されるのはＤＴＣ記憶領域の情報であり、ミラー領域及び更新情報記憶領域の情報は削除されないため、各領域の情報の有無を判断することで判別できるようになっている。
【０１１３】
このように、本実施形態のＥＣＵ１は、更新情報（及びミラー領域の情報、ＤＴＣ記憶領域の情報）に基づき、ＳＲＡＭ１２の状態を正確に把握できると共に、ミラー領域とＰＤＴＣ記憶領域との整合性、ひいてはＤＴＣ記憶領域とＰＤＴＣ記憶領域との整合を確実に確保することができる。
【０１１４】
尚、本実施形態において、Ｓ１４０〜Ｓ１８０、Ｓ２４０、及びＳ３４０の処理が記憶制御手段に相当し、Ｓ２３０、Ｓ２６０、及びＳ３５０の処理が復旧手段及び復旧処理に相当し、特に、Ｓ２３０の処理が第１処理に相当し、Ｓ２６０及びＳ３５０の処理が第２処理に相当し、ＤＴＣが確定故障コードに相当し、ＰＤＴＣが永久故障コードに相当し、更新情報が、特許請求の範囲における更新情報及びクリア履歴情報に相当し、更新情報記憶領域が、特許請求の範囲における更新情報記憶領域及びクリア履歴記憶領域に相当している。
［第２実施形態］
次に、第２実施形態について説明する。
【０１１５】
ここでは、第１実施形態と異なる点についてのみ説明する。
第２実施形態のＥＣＵ１では、ＳＲＡＭ１２における記憶構成が、図２と異なり、図７に示すようになっている。また、ＥＣＵ１のＣＰＵ４が、図３の異常検出処理に代えて図８の異常検出処理を実行し、図４の定常処理に代えて図９の定常処理を実行する点が異なっている。以下、順に説明する。
【０１１６】
図７は、第２実施形態におけるＥＣＵ１のＳＲＡＭ１２の記憶構成を表す図面であり、具体的に、第１実施形態と比較して、更新情報記憶領域を備えていない点が異なっている。また、ミラー領域の構成が異なっている。
【０１１７】
ミラー領域は、図７に示すように、ＰＤＴＣのミラーを１個だけ格納する格納領域のそれぞれにおいて、同じデータを記憶する３つの領域を有している。つまり、３面冗長方式を採用している。そして、ＣＰＵ４は、その３つの領域のデータを比較し、２つ以上の領域で一致したデータを正しいデータと認識するようになっている。さらに、例えば、２つの領域で一致したデータがあればそのデータを正しいデータと認識し、残りの領域のデータをその正しいと認識したデータに書き換えるようになっている。尚、２面冗長方式を採用しても良いことは勿論であり、さらに、３面以上に構成しても良いことは勿論である。また、この種の技術については周知であるため、以上のような説明に留めることとする。
【０１１８】
次に、図８の異常検出処理について説明する。
まず、Ｓ４１０にて、異常検出処理を起動し、所定の検出対象について異常（故障）があるか否かの異常検出を行う。次に、Ｓ４２０に移行し、Ｓ４１０の検出結果に基づき異常が有るか否かを判定し、異常無しと判定した場合には（Ｓ４２０：ＮＯ）、そのまま当該処理を終了する。
【０１１９】
一方、Ｓ４２０で異常ありと判定すると（Ｓ４２０：：ＹＥＳ）、Ｓ４３０に移行し、ミラー領域に記憶されているコード数が４未満か否かを判定する。
Ｓ４３０で４未満でないと判定すると（Ｓ４３０：ＮＯ）、ミラー領域（及びＰＤＴＣ記憶領域）に新たにコードを記憶させなくても良いと判断し、当該処理を終了する。
【０１２０】
一方、Ｓ４３０で４未満であると判定すると（Ｓ４３０：ＹＥＳ）、Ｓ４４０に移行し、ミラー領域に、今回検出された異常（故障）を表すコード（ＤＴＣ）を記憶させる。
そして次に、Ｓ４５０に進み、ＤＴＣ記憶領域にも、今回検出された故障を表すＤＴＣを記憶させる。そしてその後、当該処理を終了する。
【０１２１】
次に、図９の処理では、まず、Ｓ５１０で定常処理を起動し、次にＳ５２０に進む。
Ｓ５２０では、バッテリ脱着履歴が有るか否か、つまり、車両の図示しないバッテリが取り外されたか否かを判定する。尚、ＳＲＡＭ１２には、所定のコードが記憶されるようになっている。この所定のコードは、バッテリの脱着によりクリア（または変更）されるものである。つまり、この所定のコードにより、バッテリが取り外されたか否かが分かるようになっている。尚、この所定のコードは、請求項９のバッテリの脱着履歴を表す情報に相当する。
【０１２２】
Ｓ５２０でバッテリ脱着履歴がない（バッテリが取り外されていない）と判定すると（Ｓ５２０：ＮＯ）、Ｓ５４０に移行する。
一方、Ｓ５２０でバッテリ脱着履歴がある（バッテリが取り外された）と判定すると（Ｓ５２０：ＹＥＳ）、Ｓ５３０に移行する。
【０１２３】
Ｓ５３０では、ＰＤＴＣ記憶領域の情報をミラー領域に複製し、Ｓ５４０に進む。
Ｓ５４０では、ＰＤＴＣを削除するか否かを判定する。尚、この判定処理の内容は、前述の図４のＳ２１２と同じである。
【０１２４】
Ｓ５４０でＰＤＴＣを削除しないと判定すると（Ｓ５４０：ＮＯ）、Ｓ５７０に移行する。
一方、Ｓ５４０でＰＤＴＣを削除すると判定すると（Ｓ５４０：ＹＥＳ）、Ｓ５５０に移行する。
【０１２５】
Ｓ５５０では、その削除対象のＰＤＴＣに対応するＤＴＣ（ＰＤＴＣと同じＤＴＣ）をミラー領域から削除する。
次にＳ５６０に進み、削除対象のＰＤＴＣをＰＤＴＣ記憶領域から削除する。そして次に、Ｓ５７０に進む。
【０１２６】
Ｓ５７０では、ミラー領域に記憶されているコード数が４未満か否かを判定し、４未満でないと判定すると（Ｓ５７０：ＮＯ）、そのまま当該処理を終了する。
一方、Ｓ５７０でミラー領域に記憶されているコード数が４未満であると判定すると（Ｓ５７０：ＹＥＳ）、Ｓ５８０に移行する。
【０１２７】
Ｓ５８０では、ミラー領域の情報とＰＤＴＣ記憶領域の情報とが一致するか否かを判定し、一致すると判定すると（Ｓ５８０：ＹＥＳ）、そのまま当該処理を終了する。
一方、Ｓ５８０でミラー領域の情報とＰＤＴＣ記憶領域の情報とが一致しないと判定すると（Ｓ５８０：ＮＯ）、Ｓ５９０に移行する。
【０１２８】
Ｓ５９０では、ミラー領域に記憶されているコード数がＰＤＴＣ記憶領域に記憶されているコード数よりも小さいか否かを判定し、小さいと判定すると（Ｓ５９０：ＹＥＳ）、Ｓ６３０に移行する。
【０１２９】
Ｓ６３０では、ＰＤＴＣ記憶領域のＰＤＴＣのうち、ミラー領域に含まれないものを削除する。そしてその後、当該処理を終了する。これは、Ｓ５５０にてミラー領域のコードを削除した後でマイコンにリセットがかかり、Ｓ５６０が実行できなかった場合を想定した処理である。
【０１３０】
一方、Ｓ５９０で、ミラー領域に記憶されているコード数がＰＤＴＣ記憶領域に記憶されているコード数よりも小さくないと判定すると（Ｓ５９０：ＮＯ）、Ｓ６００に移行する。
【０１３１】
Ｓ６００では、ミラー領域において最後に記憶されている（つまり、最新の）ＤＴＣがＤＴＣ記憶領域にも記憶されているか否かを判定し、記憶されていると判定すると（Ｓ６００：ＹＥＳ）、Ｓ６２０に移行する。
【０１３２】
一方、Ｓ６００で、ミラー領域において最後に記憶されている（最新の）ＤＴＣがＤＴＣ記憶領域に記憶されていないと判定すると（Ｓ６００：ＮＯ）、Ｓ６１０に移行し、そのミラー領域の最新のＤＴＣをＤＴＣ記憶領域に記憶させる。
【０１３３】
次に、Ｓ６２０では、ミラー領域の最新のＤＴＣを、ＰＤＴＣとして、ＰＤＴＣ記憶領域に記憶させる。そしてその後、当該処理を終了する。
以上説明したように、本第２実施形態のＥＣＵ１によれば、最初に更新されるミラー領域のデータが採用（信頼）され、他の２つのＤＴＣ記憶領域、及びＰＤＴＣ記憶領域のデータが、採用されたデータに更新されるようになる。
【０１３４】
このため、例えば、最初にミラー領域のデータが更新された時点でＥＣＵ１にリセットがかかったとしても、ＤＴＣ記憶領域及びＰＤＴＣ記憶領域の古いデータがミラー領域の新しいデータに更新されるようになる。このため、ＤＴＣ記憶領域及びＰＤＴＣ記憶領域について、整合を図ることができる。
【０１３５】
しかも、ミラー領域では前述したような３面冗長方式が採用されているため、ミラー領域のデータの信頼性が高くなっている。
具体的に、ミラー領域のデータのうちデータ化けした誤ったデータが採用されてしまうことを防止でき、また、データ化けが生じたとしても、正しいデータに復旧されるようになる。このため、ＤＴＣ記憶領域及びＰＤＴＣ記憶領域のデータを誤ったデータに更新してしまうことを防止することができる。
【０１３６】
また、例えばミラー領域のデータを２面冗長方式で記憶し、両データが不一致の場合はミラー領域のデータ異常として復旧処理を実施しないようにすれば、データ化けによる誤ったデータが採用されることがなく、ミラー領域のサイズを抑えることができる。
【０１３７】
このように、復旧処理を行う前にミラー領域が正常であることを確認してから、ＤＴＣ領域及びＰＤＴＣ領域へデータを復旧させるようにすると良い。
尚、本実施形態において、Ｓ５８０〜Ｓ６２０の処理が請求項７の復旧処理に相当し、Ｓ５２０及びＳ５３０の処理が請求項９の記憶制御手段の処理に相当している。
【０１３８】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術範囲内において種々の形態をとることができる。
例えば、上記実施形態において、更新情報記憶領域をＥＥＰＲＯＭ１４に設けても良い。これは、特許請求の範囲の記載において、不揮発性メモリに更新情報第２記憶領域を設けることに相当する。これによれば、例えばＳＲＡＭ１２の情報が記憶されて更新情報が初期値になった場合でも、ＥＥＰＲＯＭ１４に記憶された更新情報を参照することができる。このため、図６で説明したように、その更新情報に基づき、ミラー領域及びＰＤＴＣ記憶領域の整合を図ることができる。
【０１３９】
また、ＳＲＡＭ１２に、そのＳＲＡＭ１２の所定の情報が消去されたことを表すクリア履歴情報を記憶するクリア履歴記憶領域（特許請求の範囲のクリア履歴記憶領域に相当）を設けても良い。さらに、クリア履歴としては、消去の原因が分かるような情報とすれば良い。例えば、消去の原因として、イグニションスイッチがオフされたため、バッテリが取り外されたため、外部の診断ツールから消去指令が入力されたため、ということが分かるようにすると良い。
【０１４０】
尚、ＥＥＰＲＯＭ１４に更新情報記憶領域を設ける構成と、ＳＲＡＭ１２にクリア履歴記憶領域を設ける構成とを組み合わせると良い。
また、上記実施形態において、ＳＲＡＭ１２にミラー領域を複数設け、それぞれ同じ情報を記憶させるようにしても良い。そして例えば、その複数のミラー領域とＰＤＴＣ記憶領域の情報を比較し、一致しない場合に、異常の旨を検出するようにすると良い。これは、特許請求の範囲の異常検出手段に相当する。これによれば、ＰＤＴＣ記憶領域（及びミラー領域）の情報の信頼性を向上させることができる。
【０１４１】
また、上記実施形態において、ＥＥＰＲＯＭ１４にＰＤＴＣ記憶領域を複数設け、それぞれ同じ情報を記憶させるようにしても良い。そして例えば、その複数のミラー領域とＰＤＴＣ記憶領域の情報を比較し、一致しない場合に、異常の旨を検出するようにすると良い。これは、特許請求の範囲の記憶異常検出手段に相当する。これによれば、ＰＤＴＣ記憶領域（及びミラー領域）の情報の信頼性を向上させることができる。
【０１４２】
さらに、前述のミラー領域を複数設ける構成と、ＰＤＴＣ記憶領域を複数設ける構成とを組み合わせても良い。
また、上記実施形態のＳ３３０において、ＤＴＣ記憶領域において記憶時期の最も新しいコードがミラー領域に記憶されているか否かを判断しても良い。
【図面の簡単な説明】
【０１４３】
【図１】本発明が適用された電子制御装置（ＥＣＵ）１の構成図である。
【図２】ＳＲＡＭ１２及びＥＥＰＲＯＭ１４の記憶構成を表す図である。
【図３】ＥＣＵ１において実行される異常検出処理を表すフローチャートである。
【図４】ＥＣＵ１において実行される定常処理を表すフローチャートである。
【図５】ＥＣＵ１において実行されるＩＧ電源ＯＮ時処理を表すフローチャートである。
【図６】本実施形態の作用を表すタイムチャートである。
【図７】第２実施形態におけるＳＲＡＭ１２及びＥＥＰＲＯＭ１４の記憶構成を表す図である。
【図８】第２実施形態のＥＣＵ１において実行される異常検出処理を表すフローチャートである。
【図９】第２実施形態のＥＣＵ１において実行される定常処理を表すフローチャートである。
【図１０】第２実施形態の作用を説明するタイムチャートである（その１）。
【図１１】第２実施形態の作用を説明するタイムチャートである（その２）。
【図１２】第２実施形態の作用を説明するタイムチャートである（その３）。
【図１３】第２実施形態の作用を説明するタイムチャートである（その４）。
【符号の説明】
【０１４４】
１…ＥＣＵ
２…マイコン
３…状態診断装置
４…ＣＰＵ
６…Ｉ／Ｏ
８…ＲＯＭ
１０…ＲＡＭ
１２…ＳＲＡＭ
１４…ＥＥＰＲＯＭ
１６…バス
【図１】
0004345860.tif 000002
【図２】
0004345860.tif 000003
【図３】
0004345860.tif 000004
【図４】
0004345860.tif 000005
【図５】
0004345860.tif 000006
【図６】
0004345860.tif 000007
【図７】
0004345860.tif 000008
【図８】
0004345860.tif 000009
【図９】
0004345860.tif 000010
【図１０】
0004345860.tif 000011
【図１１】
0004345860.tif 000012
【図１２】
0004345860.tif 000013
【図１３】
0004345860.tif 000014