(57)【特許請求の範囲】
【請求項１】
車両の動作を制御する車載電子制御装置であって、
前記車両の状態を表す状態値を保持する車両データ、および前記車両データの更新状態を表す更新データを記憶する揮発性メモリ、
前記車両データのバックアップであるメインバックアップ車両データ、前記メインバックアップ車両データの予備であるサブバックアップ車両データ、前記メインバックアップ車両データの更新状態を表すメインバックアップ更新データ、および前記サブバックアップ車両データの更新状態を表すサブバックアップ更新データを記憶する、不揮発性メモリ、
前記揮発性メモリおよび前記不揮発性メモリに対してデータを格納する制御部、
を備え、
前記制御部は、前記車両データ、前記メインバックアップ車両データ、および前記サブバックアップ車両データを相互照合する第１照合処理により正しい前記状態値を決定するとともに、決定された前記状態値とは異なる前記状態値を決定された前記状態値によって上書きし、
前記制御部は、前記第１照合処理により前記状態値が決定できない場合は、前記更新データ、前記メインバックアップ更新データ、および前記サブバックアップ更新データを相互照合する第２照合処理により正しい前記状態値を決定するとともに、決定された前記状態値とは異なる前記状態値を決定された前記状態値によって上書きする
ことを特徴とする車載電子制御装置。
【請求項２】
前記制御部は、前記車両データ、前記メインバックアップ車両データ、および前記サブバックアップ車両データの全てが一致せず、かつ前記第２照合処理により前記メインバックアップ車両データを正しい前記状態値として決定した場合は、前記メインバックアップ車両データを前記車両データとして前記揮発性メモリへ複製し、
前記制御部は、前記車両データ、前記メインバックアップ車両データ、および前記サブバックアップ車両データの全てが一致せず、かつ前記第２照合処理により前記サブバックアップ車両データを正しい前記状態値として決定した場合は、前記サブバックアップ車両データを前記車両データとして前記揮発性メモリへ複製し、
前記制御部は、前記車両データ、前記メインバックアップ車両データ、および前記サブバックアップ車両データの全てが一致せず、かつ前記第２照合処理により前記メインバックアップ車両データと前記サブバックアップ車両データのいずれも正しい前記状態値ではないと決定した場合は、デフォルト値を前記車両データとして前記揮発性メモリへ複製する
ことを特徴とする請求項１記載の車載電子制御装置。
【請求項３】
前記制御部は、所定のイベントが発生したとき、前記メインバックアップ車両データと前記サブバックアップ車両データを前記不揮発性メモリに対して書き込み、
前記制御部は、前記メインバックアップ車両データを前記不揮発性メモリに対して正常に書き込むことができた場合はその旨を表す値を前記メインバックアップ更新データとして前記不揮発性メモリに対して書き込むとともに、前記サブバックアップ車両データを前記不揮発性メモリに対して正常に書き込むことができた場合はその旨を表す値を前記サブバックアップ更新データとして前記不揮発性メモリに対して書き込み、
前記制御部は、前記メインバックアップ車両データを前記不揮発性メモリに対して正常に書き込むことができなかった場合はその旨を表す値を前記メインバックアップ更新データとして前記不揮発性メモリに対して書き込むとともに、前記サブバックアップ車両データを前記不揮発性メモリに対して正常に書き込むことができなかった場合はその旨を表す値を前記サブバックアップ更新データとして前記不揮発性メモリに対して書き込む
ことを特徴とする請求項１記載の車載電子制御装置。
【請求項４】
前記制御部は、前記第２照合処理において、前記更新データの前回値である前回更新データを取得し、
前記制御部は、前記第２照合処理において、前記更新データ、前記前回更新データ、前記メインバックアップ更新データ、および前記サブバックアップ更新データを相互照合することにより、正しい前記状態値を決定する
ことを特徴とする請求項１記載の車載電子制御装置。
【請求項５】
前記制御部は、所定のイベントが発生したとき、前記更新データのバックアップであるバックアップ更新データを前記不揮発性メモリに対して書き込む
ことを特徴とする請求項１記載の車載電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載される車載電子制御装置に関する。
【背景技術】
【０００２】
近年の車両は、当該車両またはその構成要素の動作を制御する電子制御装置を搭載している。車載電子制御装置は、制御対象の故障を検出すると、その故障を表す故障コードを半導体メモリ（例えば、バックアップＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）など）に記憶させる。バックアップＲＡＭは、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）の一種であり、車両のバッテリが接続されていれば常時電圧が供給されるように構成された揮発性メモリである。ＥＥＰＲＯＭは、不揮発性メモリである。
【０００３】
法規によれば、故障コードをイグニションサイクル（車両のイグニションスイッチがオンされてからオフされるまで、あるいはオンされてから次にオンされるまで）の終わりまでに、永久故障コードとして記憶させることが規定されている。車載電子制御装置は、その規定を満足するため、揮発性メモリに故障コードを記憶させた後、その故障コードと同じコードを不揮発性メモリに保存している。
【０００４】
上記のような永久故障コードのバックアップを実施しているのは、揮発性メモリに記憶された故障コードが不正に消去されたり、何らかの原因で故障コードが消去されたりする可能性があることに鑑みたものである。例えば、（ａ）車両のバッテリが取り外される、（ｂ）車両のイグニションスイッチをオンした際のバッテリ電圧の瞬間的な低下などにより揮発性メモリに電圧が供給されなくなる、（ｃ）揮発性メモリに異常が生じてその揮発性メモリが初期化される、などが発生した場合、揮発性メモリに記憶された故障コードは消失する。不揮発性メモリに故障コードを記憶させておけば、このような場合であっても故障コードを読み出すことができる。
【０００５】
下記特許文献１は、上記のように揮発性メモリと不揮発性メモリに記憶されるデータの信頼性を確保する技術について開示している。同文献においては、ＳＲＡＭ内に、ＰＤＴＣ（永久故障コード）記憶領域と同じ情報を記憶するためのミラー領域、およびＳＲＡＭの更新状態を表す更新情報を記憶する更新情報記憶領域を設ける。故障が検出されると、ＤＴＣ（故障コード）をミラー領域およびＤＴＣ記憶領域に記憶させて両者の整合を図るとともに、更新情報を書き換える。更新情報に基づき、ミラー領域とＤＴＣ記憶領域との間の整合性が確保されていることを確認したうえで、ミラー領域の情報をＰＤＴＣ記憶領域に複製する。更新情報に基づきミラー領域の情報が削除されたと判断した場合は、ＰＤＴＣ記憶領域の情報をミラー領域に複製する。これにより、信頼性が確保される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−０６７２９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記特許文献１記載の技術は、常時電源が供給されており、不揮発性メモリに対して常に正常なアクセス（書き込みまたは消去）がなされた場合を前提としている。しかし実際の車両においては、不揮発性メモリに対してアクセスしているとき、バッテリの取り外しや車両のイグニションスイッチオンなどにより瞬間的な電圧低下が起こると、バックアップＲＡＭが格納しているデータは破壊され、さらにそのときアクセスしている不揮発性メモリのアドレス上のデータも破壊される。そうすると、同文献における揮発性メモリと不揮発性メモリとの間の整合性を確保する機構は、故障コードを確実に保存することができない可能性があると考えられる。
【０００８】
本発明は、上記のような課題に鑑みてなされたものであり、揮発性メモリと、その揮発性メモリをバックアップする不揮発性メモリを備えた車載電子制御装置において、記憶すべきデータを確実に保存することを目的とする。
【課題を解決するための手段】
【０００９】
本発明に係る車載電子制御装置は、車両データとそのバックアップを相互照合することにより正しい車両状態を判定し、判定できない場合は更新データとそのバックアップを相互照合することにより正しい車両状態を判定する。
【発明の効果】
【００１０】
本発明に係る車載電子制御装置によれば、揮発性メモリと不揮発性メモリとの間のデータ整合を図るとともに、記憶すべきデータを確実に保存することができる。
【００１１】
上記した以外の課題、構成、および効果については、以下の実施形態の説明により明らかにされるであろう。
【図面の簡単な説明】
【００１２】
【図１】本発明に係る火花点火内燃機関とその電子制御装置（エンジンコントロールユニット９）の基本構成図である。
【図２】エンジンコントロールユニット９の構成を示す図である。
【図３】各メモリが格納するデータの構成を示す図である。
【図４】エンジンコントロールユニット９の全体動作を示すフローチャートである。
【図５】ステップＳ４０１の詳細を説明するフローチャートである。
【図６】ステップＳ５０９の詳細を説明するフローチャートである。
【図７】ステップＳ４０７の詳細を説明するフローチャートである。
【発明を実施するための形態】
【００１３】
図１は、本発明に係る火花点火内燃機関とその電子制御装置（エンジンコントロールユニット９）の基本構成図である。以下では、筒内噴射式火花点火内燃機関を例として説明するが、ポート噴射式火花点火内燃機関、筒内噴射とポート噴射の両方を備えたデュアル噴射式火花点火内燃機関、あるいはその他機器を制御する電子制御装置においても、本発明に係る構成を適用することができる。
【００１４】
エンジン１は、ピストン２、吸気バルブ３、排気バルブ４を備える。吸気は、空気流量計（ＡＦＭ）１８を通過して絞り弁１７に入り、分岐部であるコレクタ１４より吸気管１０、吸気バルブ３を介してエンジン１の燃焼室１９に供給される。燃料は、燃料噴射弁５から、エンジン１の燃焼室１９に噴射供給され、点火コイル７、点火プラグ６で点火される。燃焼後の排気ガスは、排気バルブ４を介して排気管１１に排出される。排気管１１には排気ガス浄化のための三元触媒１２が備えられている。
【００１５】
エンジンコントロールユニット９には、エンジン１のクランク角度センサ１５の信号、ＡＦＭ１８の空気量信号、排気ガス中の空燃比を検出する空燃比センサ１３の信号、アクセル開度センサ２０のアクセル開度、などの信号が入力される。エンジンコントロールユニット９は、アクセル開度センサ２０の信号からエンジンへの要求トルクの算出、アイドル状態の判定などを実施し、エンジン１に必要な吸入空気量を算出し、それに見合った開度信号を絞り弁１７に出力する。またエンジンコントロールユニット９は、燃料噴射弁５に対して燃料噴射信号を出力し、点火プラグ６へは点火信号を出力する。
【００１６】
エンジン１に取り付けられたノックセンサ８は、エンジン１の異常燃焼時に発生する異音（ノッキング）を検出し、エンジンコントロールユニット９はこれに基づき点火信号をフィードバック制御する。
【００１７】
図２は、エンジンコントロールユニット９の構成を示す図である。エンジンコントロールユニット９は、外部不揮発性メモリ(外部ＥＥＰＲＯＭ)２０９とマイクロコンピュータ２１０を備える。マイクロコンピュータ２１０はさらに、入出力インタフェース（Ｉ／Ｆ）２０５、外部通信インタフェース（Ｉ／Ｆ）２０６、ＲＡＭ２０３、不揮発性メモリ（ＲＯＭ）２０２、内部不揮発性メモリ（内部ＥＥＰＲＯＭ）２０４、内部通信インタフェース（Ｉ／Ｆ）２０７、ＣＰＵ２０１を備え、これらの要素はバス２０８を介して互いに接続されている
【００１８】
入出力Ｉ／Ｆ２０５は、センサ２１１とアクチュエータ２１２に接続されている。外部通信Ｉ／Ｆ２０６は、外部通信バス２１５を介して、外部装置２１４との間で信号を送受信する。ＲＡＭ２０３は、一時的情報を記憶する揮発性メモリである。ＲＯＭ２０２は、制御プログラムおよび各種制御設定を記憶する不揮発性メモリである。内部不揮発性メモリ２０４は、マイクロコンピュータ２１０が内蔵しているメモリであり、制御用学習値や故障コードなどの永続的に記憶すべきデータを記憶する。内部通信Ｉ／Ｆ２０７は、外部不揮発性メモリ２０９に接続されている。ＣＰＵ２０１は、各機能部を制御する。外部不揮発性メモリ２０９は、内部通信Ｉ／Ｆ２０７を介してマイクロコンピュータ２１０に接続されている。
【００１９】
ＣＰＵ２０１は、入出力Ｉ／Ｆ２０５を通じてセンサ２１１から入力情報を取り込み、ＲＯＭ２０２に保存された制御プログラムにしたがって、各制御および診断などを実行する。演算結果および入力情報はＲＡＭ２０３に一時保管されるとともに、演算結果に応じて、入出力Ｉ／Ｆ２０５を通じてアクチュエータ２１２の制御に用いられる。
【００２０】
ＣＰＵ２０１は、ＲＯＭ２０２に保存された診断プログラムにしたがって、各種制御の診断を実施するとともに、診断結果により得られた故障コードをＲＡＭ２０３と外部ＥＥＰＲＯＭ２０９に保存する。
【００２１】
さらにＣＰＵ２０１は、ＲＯＭ２０２に保存された学習プログラムにしたがって、各種制御の学習値を演算し、その学習値をＲＡＭ２０３と外部ＥＥＰＲＯＭ２０９に保存する。加えてＣＰＵ２０１は、外部ＥＥＰＲＯＭ２０９と同様に内部ＥＥＰＲＯＭ２０４にも故障コードや学習値を保存する。
【００２２】
図３は、各メモリが格納するデータの構成を示す図である。以下図３を用いて、各メモリが有する記憶領域および記憶領域が格納するデータについて説明する。
【００２３】
ＲＡＭ２０３は、車両データ保存領域３０１と今回カウント保存領域３０２を有する。車両データ保存領域３０１は、車両の状態を表す状態値（例えば故障コード、学習値など）を保持する車両データを記憶する。図３においては車両データ１と車両データ２を例示しているが、同領域が記憶する車両データの個数はこれに限らない。その他記憶領域についても同様である。今回カウント保存領域３０２は、車両データ保存領域３０１が格納する車両データの更新状態を表す更新データを記憶する。例えば車両データの更新回数を更新データとすることができる。以下に説明するその他更新データも同様である。
【００２４】
外部ＥＥＰＲＯＭ２０９は、メイン領域３０３（Ａ面）とサブ領域３０４（Ｂ面）を有する。メイン領域３０３は、車両データ保存領域３０１と同じデータを車両データ保存領域３０１のバックアップとして記憶する。サブ領域３０４は、メイン領域３０３と同じデータをメイン領域３０３の予備として記憶する。
【００２５】
内部ＥＥＰＲＯＭ２０４は、メイン完了カウント保存領域３０６（Ａ面）、サブ完了カウント保存領域３０７（Ｂ面）、今回カウント保存領域３０５を有する。メイン完了カウント保存領域３０６は、メイン領域３０３の更新状態を表すメイン更新データを記憶する。サブ完了カウント保存領域３０７は、サブ領域３０４の更新状態を表すサブ更新データを記憶する。今回カウント保存領域３０５は、今回カウント保存領域３０２と同じデータを今回カウント保存領域３０２のバックアップとして記憶する。
【００２６】
図４は、エンジンコントロールユニット９の全体動作を示すフローチャートである。エンジンコントロールユニット９は、例えば車両のイグニッションスイッチがＯＮされると本フローチャートを開始する。以下図４の各ステップについて説明する。
【００２７】
（図４：ステップＳ４０１）
ＣＰＵ２０１は、後述の図５で説明するＥＥＰＲＯＭ読み出し処理を実施する。
【００２８】
（図４：ステップＳ４０２〜Ｓ４０３）
ＣＰＵ２０１は、ＲＡＭ２０３が有する車両データ保存領域３０１をクリアするよう指示するコマンドを受け取ったか否かを判定する（Ｓ４０２）。受け取ったと判定した場合は車両データ保存領域３０１をクリアし（Ｓ４０３）、ステップＳ４０６へ進む。受け取っていないと判定した場合はステップＳ４０４へ進む。
【００２９】
（図４：ステップＳ４０４〜Ｓ４０５）
ＣＰＵ２０１は、ＲＡＭ２０３が格納しているデータを外部ＥＥＰＲＯＭ２０９に対してバックアップすべき要因を検出したか否かを判定する（Ｓ４０４）。バックアップ要因を検出した場合は、バックアップ対象となっている車両データをＲＡＭ２０３（車両データ保存領域３０１）に保存し（Ｓ４０５）、ステップＳ４０６へ進む。バックアップ要因を検出しなかった場合は、ステップＳ４０５をスキップしてステップＳ４０６へ進む。
【００３０】
（図４：ステップＳ４０６〜Ｓ４０７）
ＣＰＵ２０１は、イグニッションスイッチがＯＦＦされたか否かを判定する（Ｓ４０６）。ＯＦＦされた場合は、後述の図７で説明するＥＥＰＲＯＭ書き込み処理を実施する（Ｓ４０７）。イグニッションスイッチがＯＦＦされていない場合は、ステップＳ４０２へ戻って同様の処理を繰り返す。
【００３１】
図５は、ステップＳ４０１の詳細を説明するフローチャートである。本フローチャートにおいては、外部ＥＥＰＲＯＭ２０９から車両データを読み出すとともに、ＲＡＭ２０３が格納している車両データと外部ＥＥＰＲＯＭ２０９が格納している車両データを相互照合することにより、これらデータ間の整合性を維持するための処理を実施する。以下図５の各ステップについて説明する。
【００３２】
（図５：ステップＳ５０１）
ＣＰＵ２０１は、外部ＥＥＰＲＯＭ２０９のメイン領域３０３（Ａ面）とサブ領域３０４（Ｂ面）それぞれから、所定の単位（例えば１Ｂｙｔｅ）で車両データを読み出す。
【００３３】
（図５：ステップＳ５０２）
ＣＰＵ２０１は、ステップＳ５０１で読み出したメイン領域３０３の車両データとサブ領域３０４の車両データが互いに一致するか否かを判定する。一致する場合はステップＳ５０３へ進み、一致しない場合はステップＳ５０５へ進む。
【００３４】
（図５：ステップＳ５０３）
ＣＰＵ２０１は、ステップＳ５０１で読み出したメイン領域３０３の車両データと、これに対応するＲＡＭ２０３の車両データ保存領域３０１内に格納されている車両データとが、互いに一致するか否かを判定する。一致した場合は本フローチャートを終了する。一致しない場合はステップＳ５０４へ進む。
【００３５】
（図５：ステップＳ５０４）
ＣＰＵ２０１は、メイン領域３０３が格納している車両データを車両データ保存領域３０１へコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００３６】
（図５：ステップＳ５０３〜Ｓ５０４：補足）
メイン領域３０３、サブ領域３０４、および車両データ保存領域３０１全ての車両データが一致する場合、その車両データは正常な値を保持していると想定される。したがってこの場合はステップＳ５０４以降の処理は必要ない。これに対し、メイン領域３０３とサブ領域３０４それぞれが格納している車両データが一致し、車両データ保存領域３０１が格納している車両データがこれに一致しない場合、前者の車両データは正常であるが車両データ保存領域３０１が格納している車両データは破損していると想定される。したがってＳ５０４において、正しいと想定される車両データを車両データ保存領域３０１へ復元することとした。Ｓ５０５〜Ｓ５０８も同様の考え方に基づいている。
【００３７】
（図５：ステップＳ５０５）
ＣＰＵ２０１は、ステップＳ５０１で読み出したメイン領域３０３の車両データと、これに対応するＲＡＭ２０３の車両データ保存領域３０１内に格納されている車両データとが、互いに一致するか否かを判定する。一致した場合はステップＳ５０６へ進み、一致しない場合はステップＳ５０７へ進む。
【００３８】
（図５：ステップＳ５０６）
ＣＰＵ２０１は、車両データ保存領域３０１が格納している車両データをサブ領域３０４へコピーすることによりサブ領域３０４を復旧し、本フローチャートを終了する。
【００３９】
（図５：ステップＳ５０７）
ＣＰＵ２０１は、ステップＳ５０１で読み出したサブ領域３０４の車両データと、これに対応する車両データ保存領域３０１内に格納されている車両データとが、互いに一致するか否かを判定する。一致した場合はステップＳ５０８へ進み、一致しない場合はステップＳ５０９へ進む。
【００４０】
（図５：ステップＳ５０８）
ＣＰＵ２０１は、車両データ保存領域３０１が格納している車両データをメイン領域３０３へコピーすることによりメイン領域３０３を復旧し、本フローチャートを終了する。
【００４１】
（図５：ステップＳ５０９）
ＣＰＵ２０１は、後述の図６で説明するＥＥＰＲＯＭ正常領域判定処理を実施し、本フローチャートを終了する。
【００４２】
図６は、ステップＳ５０９の詳細を説明するフローチャートである。図５のフローチャートにおいて、車両データ保存領域３０１、メイン領域３０３、およびサブ領域３０４を相互照合することによって正しい車両データを決定することができなかった場合、本フローチャートにしたがって、車両データ本体に代えて更新データおよびそのバックアップを相互照合することにより、いずれの車両データが正しいかを判定する。以下図６の各ステップについて説明する。
【００４３】
（図６：ステップＳ６０１）
ＣＰＵ２０１は、ステップＳ５０１で読み出した車両データに対応するメイン完了カウント保存領域３０６内の更新データ（完了カウントＡ）と、今回カウント保存領域３０２内の更新データ（今回カウント）とが、互いに一致するか否かを判定する。一致する場合はステップＳ６０２へ進み、一致しない場合はステップＳ６０３へ進む。
【００４４】
（図６：ステップＳ６０２）
ＣＰＵ２０１は、メイン領域３０３（Ａ面）が格納している車両データを車両データ保存領域３０１へコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００４５】
（図６：ステップＳ６０２：補足）
本フローチャートは、車両データ保存領域３０１の車両データ、メイン領域３０３の車両データ、およびサブ領域３０４の車両データ全てが異なる場合に実施する。したがって本ステップにおいて、車両データ保存領域３０１の車両データとメイン領域３０３の車両データは異なるものとなっている。ステップＳ６０１において完了カウントＡと今回カウントが一致することを確認したので、メイン領域３０３を主要な記憶領域として用いる前提の下、同領域内の車両データが正しいとみなしてこれを車両データ保存領域３０１へコピーすることとした。
【００４６】
（図６：ステップＳ６０３）
ＣＰＵ２０１は、ステップＳ５０１で読み出した車両データに対応するメイン完了カウント保存領域３０６内の更新データ（完了カウントＡ）と、今回カウント保存領域３０２内の更新データの前回値（更新回数によって更新データを記述している場合は、今回カウントからカウント値を−１した値、以下同様）とが、互いに一致するか否かを判定する。一致する場合はステップＳ６０４へ進み、一致しない場合はステップＳ６０７へ進む。
【００４７】
（図６：ステップＳ６０４）
ＣＰＵ２０１は、ステップＳ５０１で読み出した車両データに対応するサブ完了カウント保存領域３０７内の更新データ（完了カウントＢ）と、今回カウント保存領域３０２内の更新データの前回値（今回カウントからカウント値を−１した値）とが、互いに一致するか否かを判定する。一致する場合はステップＳ６０５へ進み、一致しない場合はステップＳ６０６へ進む。
【００４８】
（図６：ステップＳ６０５）
ＣＰＵ２０１は、サブ領域３０４（Ｂ面）が格納している車両データを車両データ保存領域３０１へコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００４９】
（図６：ステップＳ６０５：補足）
本フローチャートにおいては、車両データ保存領域３０１の車両データ、メイン領域３０３の車両データ、およびサブ領域３０４の車両データ全てが異なる。また後述の図７で説明するように、ＣＰＵ２０１はまずメイン領域３０３に対して車両データを書き込み、次にメイン完了カウント保存領域３０６に対して更新データを書き込み、その後サブ領域３０４に対して車両データを書き込み、次にサブ完了カウント保存領域３０７に対して更新データを書き込む。これらの前提の下でステップＳ６０１、Ｓ６０３、Ｓ６０４の結果を考慮すると、メイン領域３０３は異常な車両データを保持しており、かつサブ領域３０４は前回の正常な車両データを保持していると考えられる。そこで本ステップにおいては、正常である可能性が相対的に高いサブ領域３０４を正しい車両データとして採用し、これを車両データ保存領域３０１へコピーすることとした。
【００５０】
（図６：ステップＳ６０６）
ＣＰＵ２０１は、車両データ保存領域３０１に対してＤｅｆａｕｌｔ値をコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００５１】
（図６：ステップＳ６０６：補足）
本ステップは、メイン完了カウント保存領域３０６内の更新データ（完了カウントＡ）、サブ完了カウント保存領域３０７内の更新データ（完了カウントＢ）、および今回カウント保存領域３０２内の更新データ（今回カウント）を相互照合することによっても正しい車両データを決定することができなかった場合に相当する。いずれの車両データが正しいかを判定することができないので、Ｄｅｆａｕｌｔ値を用いて復旧することとした。後述のステップＳ６１５も同様である。
【００５２】
（図６：ステップＳ６０７）
ＣＰＵ２０１は、ステップＳ５０１で読み出した車両データに対応するメイン完了カウント保存領域３０６内の車両データ（完了カウントＡ）がＦａｉｌ値であるか否かを判定する。Ｆａｉｌ値である場合はステップＳ６０８へ進み、Ｆａｉｌ値でない場合はステップＳ６１１へ進む。Ｆａｉｌ値は書き込み失敗を示す値であり、後述の図７で改めて説明する。
【００５３】
（図６：ステップＳ６０８）
ＣＰＵ２０１は、（ａ）ステップＳ５０１で読み出した車両データに対応するサブ完了カウント保存領域３０７内の更新データ（完了カウントＢ）と、今回カウント保存領域３０２内の更新データ（今回カウント）とが互いに一致するか、または、（ｂ）完了カウントＢと、今回カウント保存領域３０２内の更新データの前回値（今回カウントからカウント値を−１した値）とが互いに一致するかを、判定する。（ａ）（ｂ）いずれかを満たす場合はステップＳ６０９へ進み、（ａ）（ｂ）いずれも満たさない場合はステップＳ６１０へ進む。
【００５４】
（図６：ステップＳ６０９）
ＣＰＵ２０１は、サブ領域３０４（Ｂ面）が格納している車両データを車両データ保存領域３０１へコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００５５】
（図６：ステップＳ６１０）
ＣＰＵ２０１は、車両データ保存領域３０１に対してＤｅｆａｕｌｔ値をコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００５６】
（図６：ステップＳ６０９〜Ｓ６１０：補足）
Ｓ６０７において完了カウントＡがＦａｉｌ値であるため、メイン領域３０３は正しい車両データを格納していない。したがってＳ６０８においてサブ領域３０４が正しい車両データを格納しているか否かを更新データに基づき判定し、正しければこれを車両データ保存領域３０１へコピーすることとした。
【００５７】
（図６：ステップＳ６１１）
ＣＰＵ２０１は、ステップＳ５０１で読み出した車両データに対応するサブ完了カウント保存領域３０７内の更新データ（完了カウントＢ）と、今回カウント保存領域３０２内の更新データ（今回カウント）とが、互いに一致するか否かを判定する。一致する場合はステップＳ６１２へ進み、一致しない場合はステップＳ６１３へ進む。
【００５８】
（図６：ステップＳ６１２）
ＣＰＵ２０１は、サブ領域３０４（Ｂ面）が格納している車両データを車両データ保存領域３０１へコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００５９】
（図６：ステップＳ６１２：補足）
本ステップに到達した場合、完了カウントＡは今回カウントとも今回カウント−１とも一致せず（Ｓ６０１およびＳ６０３において“Ｎ”）、かつＦａｉｌ値でもないことになる（Ｓ６０７において“Ｎ”）。この場合、メイン領域３０３が格納している車両データは信頼性が低い可能性がある。かかる前提の下、ステップＳ６１１の結果によりサブ領域３０４の信頼性が高い可能性があると判定できるので、本ステップにおいてサブ領域３０４を正しい車両データとして採用することとした。
【００６０】
（図６：ステップＳ６１３）
ＣＰＵ２０１は、ステップＳ５０１で読み出した車両データに対応するサブ完了カウント保存領域３０７内の更新データ（完了カウントＢ）と、今回カウント保存領域３０２内の更新データの前回値（今回カウントからカウント値を−１した値）とが、互いに一致するか否かを判定する。一致する場合はステップＳ６１４へ進み、一致しない場合はステップＳ６１５へ進む。
【００６１】
（図６：ステップＳ６１４）
ＣＰＵ２０１は、メイン領域３０３（Ａ面）が格納している車両データを車両データ保存領域３０１へコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００６２】
（図６：ステップＳ６１４：補足）
本ステップに到達した場合、完了カウントＡは今回カウントとも今回カウント−１とも一致せず（Ｓ６０１およびＳ６０３において“Ｎ”）、かつＦａｉｌ値でもないことになる（Ｓ６０７において“Ｎ”）。この場合、ステップＳ６１３において完了カウントＢが今回カウント−１と一致したのであれば、メイン領域３０３に対して車両データを書き込み完了しているがメイン完了カウント保存領域３０６に対する書き込み途中でエラーが発生し、したがって完了カウントＡが異常であるとともに完了カウントＢが前回値と一致していると考えられる。かかる場合はメイン領域３０３が格納している車両データは正常であると考えられるので、本ステップにおいてメイン領域３０３を正しい車両データとして採用することとした。
【００６３】
（図６：ステップＳ６１５）
ＣＰＵ２０１は、車両データ保存領域３０１に対してＤｅｆａｕｌｔ値をコピーすることにより車両データ保存領域３０１を復旧し、本フローチャートを終了する。
【００６４】
図７は、ステップＳ４０７の詳細を説明するフローチャートである。本フローチャートにおいては、今回カウントを更新するとともに、車両データとその完了カウントをそれぞれ外部ＥＥＰＲＯＭ２０９と内部ＥＥＰＲＯＭ２０４に対して書き込む。以下図７の各ステップについて説明する。
【００６５】
（図７：ステップＳ７０１〜Ｓ７０２）
ＣＰＵ２０１は、今回カウント保存領域３０２の今回カウントのカウント値をインクリメントして同領域に格納する（Ｓ７０１）。ＣＰＵ２０１は、ステップＳ７０１で保存した今回カウントを今回カウント保存領域３０５に書き込む（Ｓ７０２）。
【００６６】
（図７：ステップＳ７０３）
ＣＰＵ２０１は、ＥＥＰＲＯＭに対して書き込むべき車両データを書き込み完了したか否かを判定する。書き込み未完了である場合はステップＳ７０４へ進み、書き込み完了した場合は本フローチャートを終了する。
【００６７】
（図７：ステップＳ７０４）
ＣＰＵ２０１は、車両データ保存領域３０１内の車両データをメイン領域３０３（Ａ面）に対して書き込む。
【００６８】
（図７：ステップＳ７０５〜Ｓ７０７）
ＣＰＵ２０１は、ステップＳ７０４においてメイン領域３０３に対して車両データが正常に書き込まれたか否かを判断する（Ｓ７０５）。正常に書き込まれたと判断した場合は、ステップＳ７０４で書き込んだ車両データに対応する更新データ（完了カウントＡ）として、メイン完了カウント保存領域３０６に対してステップＳ７０１と同じ今回カウント値を書き込み（Ｓ７０６）、ステップＳ７０８へ進む。正常に書き込まれなかったと判断した場合、ステップＳ７０４で書き込んだ車両データに対応する更新データ（完了カウントＡ）として、メイン完了カウント保存領域３０６に対してＦａｉｌ値を書き込み（Ｓ７０７）、ステップＳ７０８へ進む。
【００６９】
（図７：ステップＳ７０８）
ＣＰＵ２０１は、車両データ保存領域３０１内の車両データをサブ領域３０４（Ｂ面）に対して書き込む。
【００７０】
（図７：ステップＳ７０９〜Ｓ７１１）
ＣＰＵ２０１は、ステップＳ７０８においてサブ領域３０４に対して車両データが正常に書き込まれたか否かを判断する（Ｓ７０９）。正常に書き込まれたと判断した場合は、ステップＳ７０８で書き込んだ車両データに対応する更新データ（完了カウントＢ）として、サブ完了カウント保存領域３０７に対してステップＳ７０１と同じ今回カウント値を書き込み（Ｓ７１０）、ステップＳ７０３へ戻る。正常に書き込まれなかったと判断した場合、ステップＳ７０８で書き込んだ車両データに対応する更新データ（完了カウントＢ）として、サブ完了カウント保存領域３０７に対してＦａｉｌ値を書き込み（Ｓ７１１）、ステップＳ７０３へ戻る。
【００７１】
＜本発明のまとめ＞
本発明に係るエンジンコントロールユニット９は、車両データ保存領域３０１が格納している車両データ、メイン領域３０３が格納している車両データ、およびサブ領域３０４が格納している車両データを相互照合することにより、正しい車両データを判定する。正しい車両データを判定できない場合はさらに、今回カウント、完了カウントＡ、および完了カウントＢを相互照合することにより、正しい車両データを判定する。これにより、例えば外部ＥＥＰＲＯＭ２０９に対してアクセスしているとき瞬間的な電圧低下などによってデータが破損したとしても、ＲＡＭ２０３と外部ＥＥＰＲＯＭとの間のデータ整合を確保するとともに、記憶すべきデータを確実に復旧することができる。
【００７２】
本発明に係るエンジンコントロールユニット９は、車両データ保存領域３０１が格納している車両データ、メイン領域３０３が格納している車両データ、およびサブ領域３０４が格納している車両データの全てが一致しない場合であっても、今回カウント、完了カウントＡ、および完了カウントＢを用いて正しい車両データを判定する。これにより、例えばデータ破損に起因して車両データを相互照合するのみによっては正しい車両データを判定できない場合であっても、正しい車両データをＡ面またはＢ面から取り出してこれを復旧することができる。またデータが完全に破壊されたような場合であっても、Ｄｅｆａｕｌｔ値を用いて復旧することにより、制御を継続することができる。
【００７３】
本発明に係るエンジンコントロールユニット９は、メイン領域３０３またはサブ領域３０４に対して車両データを正常に書き込むことができなかった場合は、その旨を示すＦａｉｌ値を完了カウントＡまたは完了カウントＢとして書き込む。これにより、外部ＥＥＰＲＯＭ２０９からＲＡＭ２０３に対して車両データを復旧する際に、破損している車両データを回避して正しい車両データを復旧させることができる。
【００７４】
本発明に係るエンジンコントロールユニット９は、内部ＥＥＰＲＯＭ２０４の今回カウント保存領域３０５に今回カウントを格納するとともに、ＲＡＭ２０３の今回カウント保存領域３０２にも今回カウントを格納する。これにより、いずれか一方のみに対して今回カウントを格納する場合と比較して、今回カウントの信頼性を高めることができる。特にこれらを格納する記憶媒体はそれぞれ不揮発性メモリ（内部ＥＥＰＲＯＭ２０４）と揮発性メモリ（ＲＡＭ２０３）であり記憶媒体が異なるので、より信頼性を高めることができる。
【００７５】
＜本発明の変形例について＞
【００７６】
本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
【００７７】
以上の実施形態においては、揮発性メモリとしてＲＡＭ２０３を備え、ＲＡＭ２０３上に車両データ保存領域３０１と今回カウント保存領域３０２を設けているが、揮発性メモリを複数設けてこれら領域をそれぞれ異なる揮発性メモリ上に配置することもできる。さらには各揮発性メモリがこれら２つの領域を有し、各揮発性メモリが同じデータを保存するように構成することもできる。これら揮発性メモリが格納しているデータを相互参照することにより、データの信頼性を高めることができる。
【００７８】
以上の実施形態においては、不揮発性メモリとして外部ＥＥＰＲＯＭ２０９と内部ＥＥＰＲＯＭ２０４を用いているが、単一の揮発性メモリの記憶領域を分割して同様の領域構成を設けることもできる。データの信頼性の観点からは図３で説明したような構成が望ましいが、コスト抑制の観点から単一の不揮発性メモリを用いてもよい。
【００７９】
以上の実施形態においては、車両データ保存領域３０１、メイン領域３０３、サブ領域３０４が相互に同じデータを保持し、正しい車両データをコピーすることによってその他領域を復旧することを説明した（Ｓ５０４、Ｓ５０６，Ｓ５０８など）。これら記憶領域は互いにその他記憶領域のバックアップとしての役割を果たしているので、いずれの車両データをバックアップと称するかは、単なる呼称に過ぎない。
【符号の説明】
【００８０】
１：エンジン、２：ピストン、３：吸気バルブ、４：排気バルブ、５：燃料噴射弁、６：点火プラグ、７：点火コイル、８：ノックセンサ、９：エンジンコントロールユニット、１０：吸気管、１１：排気管、１２：三元触媒、１３：空燃比センサ、１４：コレクタ、１５：クランク角度センサ、１６：シグナルプレート、１７：絞り弁、１８：ＡＦＭ、１９：燃焼室、２０：アクセル開度センサ、２０１：ＣＰＵ、２０２：ＲＯＭ、２０３：ＲＡＭ、２０４：内部ＥＥＰＲＯＭ、２０５：入出力Ｉ／Ｆ、２０６：外部通信Ｉ／Ｆ、２０７：内部通信Ｉ／Ｆ、２０８：バス、２０９：外部ＥＥＰＲＯＭ、２１０：マイクロコンピュータ、３０１：車両データ保存領域、３０２：今回カウント保存領域、３０３：メイン領域、３０４：サブ領域、３０５：今回カウント保存領域、３０６：メイン完了カウント保存領域、３０７：サブ完了カウント保存領域。
【図１】
0006381490.tif 000002
【図２】
0006381490.tif 000003
【図３】
0006381490.tif 000004
【図４】
0006381490.tif 000005
【図５】
0006381490.tif 000006
【図６】
0006381490.tif 000007
【図７】
0006381490.tif 000008