(57)【要約】【課題】書き換え可能な不揮発性メモリから読み出して使用するデータが更新されない異常を検出する【解決手段】ＥＣＵ１は、電源オフ時に、ＲＡＭ４の第１データ記憶領域４１に記憶された全閉位置学習値を、フラッシュＲＯＭ５の第１データ記憶領域５１および第２データ記憶領域５２の何れかに記憶するとともに、ＲＡＭ４の第１データ記憶領域４１に記憶された第１照合情報を、記憶する全閉位置学習値と対応付けてフラッシュＲＯＭ５に記憶する。さらに、第１照合情報の値を１加算した値を第２照合情報として決定し、決定した第２照合情報をフラッシュＲＯＭ５に記憶する。その後、電源オン時に、ＲＡＭ４の第１データ記憶領域４１に記憶した全閉位置学習値に対応付けられている第１照合情報の値と、フラッシュＲＯＭ５に記憶されている第２照合情報の値とが非一致であるか否かを判断する。【選択図】図１
2014044494.tif 000002
【特許請求の範囲】
【請求項１】
所定の制御対象を制御する電子制御装置（１）であって、
前記制御対象を制御するための制御データを記憶する第１記憶領域（４１）が設けられ、記憶内容の書き換えが可能なメモリである第１メモリ（４）と、
前記第１記憶領域に記憶されていた前記制御データを記憶するための第２記憶領域（５１，５２）が複数設けられ、記憶内容の書き換えが可能な不揮発性メモリである第２メモリ（５）と、
当該電子制御装置の電源オフ時に、前記第２メモリにおける複数の前記第２記憶領域の中から１つの前記第２記憶領域を選択し、選択した前記第２記憶領域に、前記第１メモリの前記第１記憶領域に記憶されている前記制御データを記憶する第１記憶手段（Ｓ３７０，Ｓ３８０）と、
前記第１記憶手段が前記制御データを前記第２メモリに記憶する場合に、前記制御データを前記第２メモリに記憶したタイミングの順序を判別可能な情報である判別情報を、記憶する前記制御データと対応付けて前記第２メモリに記憶する第２記憶手段（Ｓ３７０，Ｓ３８０）と、
前記第１記憶手段が前記制御データを前記第２メモリに記憶する場合に、予め設定された設定条件に基づいて決定された第１設定情報を、記憶する前記制御データと対応付けて前記第２メモリに記憶する第３記憶手段（Ｓ３７０，Ｓ３８０）と、
前記第１記憶手段が前記制御データを前記第２メモリに記憶する場合に、前記第１設定情報との間で予め設定された関係である設定情報間関係を有するように第２設定情報を決定し、決定した前記第２設定情報を前記第２メモリに記憶する第４記憶手段（Ｓ３２０，Ｓ３９０）と、
当該電子制御装置の電源オン時に、前記第２メモリにおける複数の前記第２記憶領域に記憶されているデータに異常が発生しているか否かを判断する異常判断手段（Ｓ１１０，Ｓ１２０，Ｓ１５０）と、
当該電子制御装置の電源オン時に、前記異常判断手段による判断結果と、前記判別情報とに基づいて、データに異常が発生していない前記第２記憶領域の中から、前記制御データを前記第２メモリに記憶したタイミングが最も遅い前記第２記憶領域を選択し、選択した前記第２記憶領域に記憶されている前記制御データを、前記第１メモリの前記第１記憶領域に記憶する第５記憶手段（Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１５０，Ｓ１６０，Ｓ１７０）と、
前記第５記憶手段が前記第１記憶領域に記憶した前記制御データに対応付けられている前記第１設定情報と、前記第２メモリに記憶されている前記第２設定情報との間で、前記設定情報間関係を有しているか否かを判断する関係判断手段（Ｓ１８０）とを備える
ことを特徴とする電子制御装置。
【請求項２】
前記第１設定情報と前記第２設定情報との間で前記設定情報間関係を有していないと前記関係判断手段が判断した回数を計数する計数手段（Ｓ２００）を備える
ことを特徴とする請求項１に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、記憶内容の書き換えが可能な不揮発性メモリを備える電子制御装置に関する。
【背景技術】
【０００２】
車両を制御する電子制御装置では、車両を制御する過程で求めた学習値を、記憶内容の書き換えが可能な不揮発性メモリに書き込むことにより、電子制御装置の電源オフで学習値が消去されるのを防止し、次回の電源オン時に、この学習値を利用することができるように構成されている。
【０００３】
ところで、学習値を不揮発性メモリに書き込んでいる最中に例えばバッテリ電源が外れ、不揮発性メモリにデータを正常に書き込むことができない事態が発生することが想定される。このため、電子制御装置の中には、不揮発性メモリにデータが正常に書き込まれなかった異常を検出するための処理を実行するように構成されたものがある（例えば、特許文献１を参照）。
【０００４】
また、学習値を記憶する記憶領域を複数設け、直近の電源オフ時の学習値だけでなく、それ以前における電源オフ時の学習値を記憶し、直近の電源オフ時における不揮発性メモリへのデータ書き込みで異常が発生した場合に、それ以前の学習値を用いるように構成された電子制御装置が知られている。これにより、不揮発性メモリへのデータ書き込みでの失敗が１回発生しただけで、学習値を初期化しなくてはならないという事態の発生を抑制することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−１６１４９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、学習値を記憶する記憶領域が２つ設けられており、電源オフ時における学習値の記憶を、異常が発生した記憶領域に記憶するように構成されている電子制御装置では、以下に説明する問題が発生する可能性がある。
【０００７】
まず、電源オフ時において学習値を記憶するときに、２つの記憶領域のうちの一方の記憶領域（以下、第１記憶領域という）で異常が発生していると、この第１記憶領域に学習値を記憶する。その後、電源オン時に、第１記憶領域に異常が発生していることを確認すると、他方の記憶領域（以下、第２記憶領域という）から学習値を読み出すことになる。
【０００８】
そして、次の電源オフ時において学習値を記憶するときに、第１記憶領域で異常が発生していると、第１記憶領域に学習値を記憶する。その後、次の電源オン時に、第１記憶領域に異常が発生していることを確認すると、第２記憶領域から学習値を読み出すことになる。
【０００９】
このように、第１記憶領域での異常が継続すると、第２記憶領域において学習値の更新が行われず、学習値の更新が行われない第２記憶領域の学習値を電源オン時に読み出して使用する状況が継続することになる。
【００１０】
本発明は、こうした問題に鑑みてなされたものであり、書き換え可能な不揮発性メモリから読み出して使用するデータが更新されない異常を検出することを可能にする技術を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記目的を達成するためになされた請求項１に記載の電子制御装置は、所定の制御対象を制御するための制御データを記憶する第１記憶領域が設けられ、記憶内容の書き換えが可能なメモリである第１メモリと、第１記憶領域に記憶されていた制御データを記憶するための第２記憶領域が複数設けられ、記憶内容の書き換えが可能な不揮発性メモリである第２メモリとを備える。
【００１２】
そして第１記憶手段が、当該電子制御装置の電源オフ時に、第２メモリにおける複数の第２記憶領域の中から１つの第２記憶領域を選択し、選択した第２記憶領域に、第１メモリの第１記憶領域に記憶されている制御データを記憶する。
【００１３】
また第２記憶手段が、第１記憶手段が制御データを第２メモリに記憶する場合に、制御データを第２メモリに記憶したタイミングの順序を判別可能な情報である判別情報を、記憶する制御データと対応付けて第２メモリに記憶する。
【００１４】
次に異常判断手段が、当該電子制御装置の電源オン時に、第２メモリにおける複数の第２記憶領域に記憶されているデータに異常が発生しているか否かを判断する。
そして第５記憶手段が、当該電子制御装置の電源オン時に、異常判断手段による判断結果と、判別情報とに基づいて、データに異常が発生していない第２記憶領域の中から、制御データを第２メモリに記憶したタイミングが最も遅い第２記憶領域を選択し、選択した第２記憶領域に記憶されている制御データを、第１メモリの第１記憶領域に記憶する。
【００１５】
これにより、第２メモリにおける複数の第２記憶領域のそれぞれに、記憶されたタイミングが異なる制御データが記憶される。そして、第２記憶領域に記憶された制御データには、記憶したタイミングの順序を判別可能な情報である判別情報が対応付けられており、当該電子制御装置の電源オン時に、データに異常が発生していない第２記憶領域の中から、制御データを第２メモリに記憶したタイミングが最も遅い第２記憶領域に記憶されている制御データを、第１メモリの第１記憶領域に記憶する。
【００１６】
このため、請求項１に記載の電子制御装置は、第２記憶領域に異常が発生していない場合には、直近の電源オフ時に第２メモリに記憶された制御データを利用して、所定の制御対象を制御することができる。一方、直近の電源オフ時に第２メモリに記憶された制御データに異常が発生した場合であっても、直近の電源オフの１回前の電源オフ時に第２メモリに記憶された制御データを利用して、所定の制御対象を制御することができる。したがって、直近の電源オフ時に第２メモリに記憶された制御データに異常が発生すると、その後の電源オン時に制御データを初期化しなくてはならないという事態の発生を抑制することができる。
【００１７】
さらに、請求項１に記載の電子制御装置では、第３記憶手段が、第１記憶手段が制御データを第２メモリに記憶する場合に、予め設定された設定条件に基づいて決定された第１設定情報を、記憶する制御データと対応付けて第２メモリに記憶する。
【００１８】
また第４記憶手段が、第１記憶手段が制御データを第２メモリに記憶する場合に、第１設定情報との間で予め設定された関係である設定情報間関係を有するように第２設定情報を決定し、決定した第２設定情報を第２メモリに記憶する。
【００１９】
そして関係判断手段が、第５記憶手段が第１記憶領域に記憶した制御データに対応付けられている第１設定情報と、第２メモリに記憶されている第２設定情報との間で、設定情報間関係を有しているか否かを判断する。
【００２０】
これにより、第１設定情報と第２設定情報との間で設定情報間関係を有している場合には、当該電子制御装置の電源オン時に第１記憶領域に記憶した制御データは、直近の電源オフ時に第２メモリに記憶された制御データであり、設定情報間関係を有していない場合には、直近の電源オフ時に第２メモリに記憶された制御データではないと判断することができる。
【００２１】
したがって、請求項１に記載の電子制御装置によれば、直近の電源オフ時に第２メモリに記憶された制御データを次の電源オン時に利用できない異常を検出することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】ＥＣＵ１の構成を示すブロック図である。
【図２】全閉位置学習処理を示すフローチャートである。
【図３】ＲＡＭコピー処理を示すフローチャートである。
【図４】データ書戻処理を示すフローチャートである。
【図５】データが正常に記憶されている場合のＥＣＵ１の動作を示すタイミングチャートである。
【図６】データの記憶で異常が発生する場合のＥＣＵ１の動作を示すタイミングチャートである。
【発明を実施するための形態】
【００２３】
以下に本発明の実施形態を図面とともに説明する。
本実施形態の電子制御装置（以下、ＥＣＵという）１は、車両に搭載され、図１に示すように、車両のエンジンＥＧの制御を行う。
【００２４】
ＥＣＵ１は、ＣＰＵ（中央演算装置）２、ＲＯＭ３、ＲＡＭ４、フラッシュＲＯＭ５および入出力回路６と、これらを相互に接続するバス７とを備える。
ＲＯＭ３は、データ書き換え不能な不揮発性メモリであり、ＣＰＵ２が実行するプログラムと、プログラムの実行時に参照されるデータを記憶する。
【００２５】
ＲＡＭ４は、揮発性メモリであり、ＣＰＵ２の演算結果等を一時的に記憶する。
フラッシュＲＯＭ５は、データ書き換え可能な不揮発性メモリであり、ＥＣＵ１のシャットダウン後でも記憶内容を保持する必要があるデータを記憶する。
【００２６】
ＣＰＵ２は、エンジンＥＧを制御するための情報として、吸気管圧力センサ、エンジン回転数センサ、エンジン水温センサ、排気系の酸素センサ（空燃比センサ）、車速センサ、アクセルペダルセンサＡＳおよびイグニッションスイッチ等から各種信号を入出力回路６を介して入力する。なお、図１に示すエンジンＥＧは、エンジン本体を含め、吸気系、排気系等、エンジンに関連する系を総称して示すものであって、本実施形態では詳細な説明を省略する。
【００２７】
そしてＣＰＵ２は、ＲＯＭ３に記憶されたプログラムに基づいて各種処理を実行する。またＣＰＵ２は、入出力回路６を介して入力される各種信号に基づいて制御演算を行い、その演算結果に基づき、点火装置およびインジェクタ等の電気負荷へ入出力回路６を介して駆動信号を出力することにより、エンジンＥＧの制御に関係する電気負荷を制御する。
【００２８】
例えばＣＰＵ２は、インジェクタの開弁タイミングおよび開弁時間を演算し、その演算結果に基づいて、インジェクタを駆動するための駆動信号を出力することにより、エンジンＥＧへの燃料噴射を制御する。またＣＰＵ２は、アクセルペダル開度を示す信号をアクセルペダルセンサＡＳから入力した後に、アクセルペダル開度に基づいて目標スロットル開度を設定し、スロットルモータを駆動するための駆動信号を出力することにより、スロットルバルブを制御する。
【００２９】
さらにＲＡＭ４内には、第１データ記憶領域４１、第２データ記憶領域４２および異常カウンタ４３が設けられる。
第１データ記憶領域４１には、第１記憶部４１１、第２記憶部４１２および第３記憶部４１３が設けられている。そして第１記憶部４１１には、アクセルペダル全閉位置の学習値（以下、全閉位置学習値ともいう）が記憶される。第２記憶部４１２には、第１照合情報（詳細は後述する）が記憶される。第３記憶部４１３には、データが更新された回数（以下、データ更新回数という）が記憶される。
【００３０】
第２データ記憶領域４２には、第２照合情報（詳細は後述する）が記憶される。
異常カウンタ４３は、異常（詳細は後述する）の発生回数を示す。
さらにフラッシュＲＯＭ５内には、第１データ記憶領域５１、第２データ記憶領域５２および第３データ記憶領域５３が設けられる。
【００３１】
第１データ記憶領域５１には、第１記憶部５１１、第２記憶部５１２、第３記憶部５１３および第４記憶部５１４が設けられている。また第２データ記憶領域５２には、第１記憶部５２１、第２記憶部５２２、第３記憶部５２３および第４記憶部５２４が設けられている。
【００３２】
そして第１記憶部５１１，５２１には、全閉位置学習値が記憶される。第２記憶部５１２，５２２には、第１照合情報が記憶される。第３記憶部５１３，５２３には、データ更新回数が記憶される。第４記憶部５１４，５２４には、チェックサム値が記憶される。
【００３３】
なお、第４記憶部５１４（５２４）に記憶されるチェックサム値は、第１記憶部５１１（５２１）、第２記憶部５１２（５２２）、第３記憶部５１３（５２３）および第４記憶部５１４（５２４）の加算値が例えば＄ＦＦとなるように設定される。
【００３４】
第３データ記憶領域５３には、第１記憶部５３１および第２記憶部５３２が設けられている。そして第１記憶部５３１には、第２照合情報が記憶される。第２記憶部５３２には、異常カウンタ４３の値が記憶される。
【００３５】
このように構成されたＥＣＵ１において、ＣＰＵ２は、全閉位置学習処理を実行する。ここで、ＣＰＵ２が実行する全閉位置学習処理の手順を図２を用いて説明する。この全閉位置学習処理は、ＥＣＵ１の動作中に実行される処理である。
【００３６】
この全閉位置学習処理が実行されると、ＣＰＵ２は、まずＳ１０にて、フラッシュＲＯＭ５に記憶されているデータをＲＡＭ４にコピーするＲＡＭコピー処理（詳細は後述する）を実行する。
【００３７】
その後Ｓ２０にて、アクセルペダル全閉位置の学習値（全閉位置学習値）を更新し、更新した値を、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１に記憶する。
【００３８】
そしてＳ３０にて、異常カウンタ４３の値（以下、異常カウンタ値という）が予め設定された異常確定判定値（本実施形態では例えば３）以上であるか否かを判断する。ここで、異常カウンタ値が異常確定判定値未満である場合には（Ｓ３０：ＮＯ）、Ｓ５０に移行する。一方、異常カウンタ値が異常確定判定値以上である場合には（Ｓ３０：ＹＥＳ）、Ｓ４０にて、異常が確定した時に実行する処理として予め設定された処理を実行し、Ｓ５０に移行する。本実施形態では、フラッシュＲＯＭ５へデータを書き込むときに異常が発生した旨を示す情報（例えばダイアグコード）をフラッシュＲＯＭ５に記憶するとともに、フラッシュＲＯＭ５へデータを書き込むときに異常が発生した旨を車両の運転者に報知する処理を実行する。
【００３９】
そしてＳ５０に移行すると、ＥＣＵ１をシャットダウンさせる要求（以下、シャットダウン要求という）が発生したか否かを判断する。ここで、シャットダウン要求が発生していない場合には（Ｓ５０：ＮＯ）、Ｓ２０に移行して上述の処理を繰り返す。一方、シャットダウン要求が発生した場合には（Ｓ５０：ＹＥＳ）、Ｓ６０にて、ＲＡＭ４の第１データ記憶領域４１に記憶されているデータをフラッシュＲＯＭ５に書き戻すデータ書戻処理（詳細は後述する）を実行し、その後、全閉位置学習処理を終了する。
【００４０】
次に、Ｓ１０で実行されるＲＡＭコピー処理の手順を図３を用いて説明する。
ＲＡＭコピー処理が実行されると、ＣＰＵ２は、まずＳ１１０にて、フラッシュＲＯＭ５の第１データ記憶領域５１に記憶されているデータは正常であるか否かを判断する。なおＳ１１０では、第１記憶部５１１、第２記憶部５１２、第３記憶部５１３および第４記憶部５１４の加算値が＄ＦＦである場合に正常であり、＄ＦＦでない場合には異常であると判断する。
【００４１】
ここで、第１データ記憶領域５１に記憶されているデータが異常である場合には（Ｓ１１０：ＮＯ）、Ｓ１２０にて、フラッシュＲＯＭ５の第２データ記憶領域５２に記憶されているデータは正常であるか否かを判断する。なおＳ１２０では、第１記憶部５２１、第２記憶部５２２、第３記憶部５２３および第４記憶部５２４の加算値が＄ＦＦである場合に正常であり、＄ＦＦでない場合には異常であると判断する。
【００４２】
ここで、第２データ記憶領域５２に記憶されているデータが異常である場合には（Ｓ１２０：ＮＯ）、Ｓ１３０にて、第１データ記憶領域４１に初期値を記憶し、Ｓ１８０に移行する。具体的には、第１データ記憶領域４１の第１記憶部４１１に、全閉位置学習値の初期値として予め設定された値を記憶する。また第２記憶部４１２に、第１照合情報の初期値を記憶する。また第３記憶部４１３に、データ更新回数の初期値を記憶する。
【００４３】
一方、第２データ記憶領域５２に記憶されているデータが正常である場合には（Ｓ１２０：ＹＥＳ）、Ｓ１４０にて、第２データ記憶領域５２に記憶されているデータを第１データ記憶領域４１に記憶し、Ｓ１８０に移行する。具体的には、第２データ記憶領域５２の第１記憶部５２１、第２記憶部５２２および第３記憶部５２３に記憶されているデータをそれぞれ、第１データ記憶領域４１の第１記憶部４１１、第２記憶部４１２および第３記憶部４１３に記憶する。
【００４４】
またＳ１１０にて、第１データ記憶領域５１に記憶されているデータが正常である場合には（Ｓ１１０：ＹＥＳ）、Ｓ１５０にて、フラッシュＲＯＭ５の第２データ記憶領域５２に記憶されているデータは正常であるか否かを判断する。ここで、第２データ記憶領域５２に記憶されているデータが正常である場合には（Ｓ１５０：ＹＥＳ）、Ｓ１６０にて、第１データ記憶領域５１の第３記憶部５１３に記憶されているデータ更新回数（以下、第１データ更新回数という）が、第２データ記憶領域５２の第３記憶部５２３に記憶されているデータ更新回数（以下、第２データ更新回数という）よりも小さいか否かを判断する。
【００４５】
ここで、第１データ更新回数が第２データ更新回数よりも小さい場合には（Ｓ１６０：ＹＥＳ）、Ｓ１４０に移行して、上述の処理を行う。一方、第１データ更新回数が第２データ更新回数以上である場合には（Ｓ１６０：ＮＯ）、Ｓ１７０に移行する。
【００４６】
またＳ１５０にて、第２データ記憶領域５２に記憶されているデータが異常である場合には（Ｓ１５０：ＮＯ）、Ｓ１７０に移行する。
そしてＳ１７０に移行すると、第１データ記憶領域５１に記憶されているデータを第１データ記憶領域４１に記憶し、Ｓ１８０に移行する。具体的には、第１データ記憶領域５１の第１記憶部５１１、第２記憶部５１２および第３記憶部５１３に記憶されているデータをそれぞれ、第１データ記憶領域４１の第１記憶部４１１、第２記憶部４１２および第３記憶部４１３に記憶する。
【００４７】
そしてＳ１８０に移行すると、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報の値と、第３データ記憶領域５３の第２記憶部５３２に記憶されている第２照合情報の値とが一致しているか否かを判断する。ここで、第１照合情報の値と第２照合情報の値とが一致していない場合には（Ｓ１８０：ＮＯ）、Ｓ１９０にて、異常カウンタ４３をリセット（すなわち、異常カウンタ値を０に設定）し、ＲＡＭコピー処理を終了する。
【００４８】
一方、第１照合情報の値と第２照合情報の値とが一致している場合には（Ｓ１８０：ＹＥＳ）、Ｓ２００にて、異常カウンタ４３をインクリメント（１加算）して、ＲＡＭコピー処理を終了する。
【００４９】
次に、Ｓ６０で実行されるデータ書戻処理の手順を図４を用いて説明する。
データ書戻処理が実行されると、ＣＰＵ２は、まずＳ３１０にて、第２データ記憶領域４２に、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報を記憶する。そしてＳ３２０にて、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報の値を１加算する。さらにＳ３３０にて、第１データ記憶領域４１の第３記憶部４１３に記憶されているデータ更新回数を１加算する。
【００５０】
その後Ｓ３４０にて、フラッシュＲＯＭ５の第１データ記憶領域５１に記憶されているデータは正常であるか否かを判断する。ここで、第１データ記憶領域５１に記憶されているデータが異常である場合には（Ｓ３４０：ＮＯ）、Ｓ３７０に移行する。
【００５１】
一方、第１データ記憶領域５１に記憶されているデータが正常である場合には（Ｓ３４０：ＹＥＳ）、Ｓ３５０にて、フラッシュＲＯＭ５の第２データ記憶領域５２に記憶されているデータは正常であるか否かを判断する。ここで、第２データ記憶領域５２に記憶されているデータが正常である場合には（Ｓ３５０：ＹＥＳ）、Ｓ３６０にて、第１データ記憶領域５１の第３記憶部５１３に記憶されているデータ更新回数（第１データ更新回数）が、第２データ記憶領域５２の第３記憶部５２３に記憶されているデータ更新回数（第２データ更新回数）よりも小さいか否かを判断する。
【００５２】
ここで、第１データ更新回数が第２データ更新回数よりも小さい場合には（Ｓ３６０：ＹＥＳ）、Ｓ３７０に移行する。一方、第１データ更新回数が第２データ更新回数以上である場合には（Ｓ３６０：ＮＯ）、Ｓ３８０に移行する。
【００５３】
またＳ３５０にて、第２データ記憶領域５２に記憶されているデータが異常である場合には（Ｓ３５０：ＮＯ）、Ｓ３８０に移行する。
そしてＳ３７０に移行すると、第１データ記憶領域４１に記憶されているデータを第１データ記憶領域５１に記憶し、Ｓ３９０に移行する。具体的には、第１データ記憶領域４１の第１記憶部４１１、第２記憶部４１２および第３記憶部４１３に記憶されているデータをそれぞれ、第１データ記憶領域５１の第１記憶部５１１、第２記憶部５１２および第３記憶部５１３に記憶するとともに、第１記憶部４１１、第２記憶部４１２および第３記憶部４１３に記憶された値に基づいて算出されたチェックサム値を第１データ記憶領域５１の第４記憶部５１４に記憶する。
【００５４】
またＳ３８０に移行すると、第１データ記憶領域４１に記憶されているデータを第２データ記憶領域５２に記憶し、Ｓ３９０に移行する。具体的には、第１データ記憶領域４１の第１記憶部４１１、第２記憶部４１２および第３記憶部４１３に記憶されているデータをそれぞれ、第２データ記憶領域５２の第１記憶部５２１、第２記憶部５２２および第３記憶部５２３に記憶するとともに、第１記憶部４１１、第２記憶部４１２および第３記憶部４１３に記憶された値に基づいて算出されたチェックサム値を第２データ記憶領域５２の第４記憶部５２４に記憶する。
【００５５】
そしてＳ３９０に移行すると、第２データ記憶領域４２に記憶されているデータを、第３データ記憶領域５３の第１記憶部５３１に記憶する。その後Ｓ４００にて、異常カウンタ４３の値を、第３データ記憶領域５３の第２記憶部５３２に記憶し、データ書戻処理を終了する。
【００５６】
次に、ＲＡＭ４とフラッシュＲＯＭ５に全閉位置学習値を記憶するときのＥＣＵ１の動作を図５を用いて説明する。
なお図５は、データ記憶領域５１，５２に記憶されているデータに異常が発生していない場合におけるＥＣＵ１の動作を示す。
【００５７】
まず、図５に示すように、フラッシュＲＯＭ５内における第１データ記憶領域５１の第１記憶部５１１には全閉位置学習値として「１２」が記憶され、第２記憶部５１２には第１照合情報として「３」が記憶され、第３記憶部５１３にはデータ更新回数として「４」が記憶され、第４記憶部５１４にはチェックサム値が記憶されているとする（第１データ記憶領域５１ａを参照）。
【００５８】
また、第２データ記憶領域５２の第１記憶部５２１、第２記憶部５２２および第３記憶部５２３にはそれぞれ、「２５」、「２」および「３」が記憶され、第４記憶部５２４にはチェックサム値が記憶されているとする（第２データ記憶領域５２ａを参照）。
【００５９】
また、フラッシュＲＯＭ５内における第３データ記憶領域５３の第１記憶部５３１には第２照合情報として「２」が記憶され、第２記憶部５３２には異常カウンタ値として「０」が記憶されているとする（第３データ記憶領域５３ａを参照）。
【００６０】
そして、電源オンによりＥＣＵ１が起動すると、第１データ記憶領域５１および第２データ記憶領域５２のうち、第１データ記憶領域５１のデータが第１データ記憶領域４１に記憶される。
【００６１】
これは、第１データ記憶領域５１ａおよび第２データ記憶領域５２ａに記憶されているデータが正常であるとチェックサム値に基づいて判断される（判断結果Ｒ０１，Ｒ０２を参照）とともに、第１データ記憶領域５１ａに記憶されているデータ更新回数が、第２データ記憶領域５２ａに記憶されているデータ更新回数よりも大きいためである。
【００６２】
これにより、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１には全閉位置学習値として「１２」が記憶され、第２記憶部４１２には第１照合情報として「３」が記憶され、第３記憶部４１３にはデータ更新回数として「４」が記憶される（第１データ記憶領域４１ａを参照）。
【００６３】
なお、電源オンによりＥＣＵ１が起動してから、電源オフによりＥＣＵ１がシャットダウンするまでに、ＥＣＵ１を搭載した車両でドライブが１回行われるとし、図５では、今回の電源オンで５回目のドライブが行われるとしている。
【００６４】
さらに、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報の値と、第３データ記憶領域５３の第１記憶部５３１に記憶されている第２照合情報の値とが一致していないため、異常カウンタ４３がリセットされる（すなわち、異常カウンタ値を０に設定される）。
【００６５】
その後、全閉位置学習値が更新されることにより、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１に全閉位置学習値として「１６」が記憶されるとする（第１データ記憶領域４１ｂを参照）。なお、第２記憶部４１２と第３記憶部４１３のデータの内容は変化しない。
【００６６】
そして、電源オフによりＥＣＵ１がシャットダウンするときに、第１データ記憶領域４１の第３記憶部４１３に記憶されているデータ更新回数が１加算されることにより、第３記憶部４１３にはデータ更新回数として「５」が記憶される（第１データ記憶領域４１ｃを参照）。その後、第１データ記憶領域４１のデータが第２データ記憶領域５２に記憶される。
【００６７】
これは、第１データ記憶領域５１ａおよび第２データ記憶領域５２ａに記憶されているデータが正常であるとチェックサム値に基づいて判断される（判断結果Ｒ０１，Ｒ０２を参照）とともに、第１データ記憶領域５１ａに記憶されているデータ更新回数が、第２データ記憶領域５２ａに記憶されているデータ更新回数よりも大きいためである。
【００６８】
これにより、フラッシュＲＯＭ５内における第１データ記憶領域５１の第１記憶部５１１には全閉位置学習値として「１２」が記憶され、第２記憶部５１２には第１照合情報として「３」が記憶され、第３記憶部５１３にはデータ更新回数として「４」が記憶され、第４記憶部５１４にはチェックサム値が記憶される（第１データ記憶領域５１ｃを参照）。
【００６９】
また、第２データ記憶領域５２の第１記憶部５２１、第２記憶部５２２および第３記憶部５２３にはそれぞれ、「１６」、「４」および「５」が記憶され、第４記憶部５２４にはチェックサム値が記憶される（第２データ記憶領域５２ｃを参照）。
【００７０】
また、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報が第３データ記憶領域５３の第１記憶部５３１に記憶される。これにより、第３データ記憶領域５３の第１記憶部５３１には第２照合情報として「３」が記憶され、また、第２記憶部５３２には異常カウンタ値として「０」が記憶される（第３データ記憶領域５３ｃを参照）。
【００７１】
その後、電源オンによりＥＣＵ１が起動すると、起動直後の第１データ記憶領域５１、第２データ記憶領域５２および第３データ記憶領域５３には、前回の電源オフ時と同じデータが記憶されており（第１データ記憶領域５１ｄ、第２データ記憶領域５２ｄおよび第３データ記憶領域５３ｄを参照）、第１データ記憶領域５１および第２データ記憶領域５２のうち、第２データ記憶領域５２のデータが第１データ記憶領域４１に記憶される。
【００７２】
これは、第１データ記憶領域５１ｄおよび第２データ記憶領域５２ｄに記憶されているデータが正常であるとチェックサム値に基づいて判断される（判断結果Ｒ０３，Ｒ０４を参照）とともに、第２データ記憶領域５２ｄに記憶されているデータ更新回数が、第１データ記憶領域５１ｄに記憶されているデータ更新回数よりも大きいためである。
【００７３】
これにより、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１には全閉位置学習値として「１６」が記憶され、第２記憶部４１２には第１照合情報として「４」が記憶され、第３記憶部４１３にはデータ更新回数として「５」が記憶される（第１データ記憶領域４１ｄを参照）。
【００７４】
なお図５では、今回の電源オンで６回目のドライブが行われるとしている。
さらに、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報の値と、第３データ記憶領域５３の第１記憶部５３１に記憶されている第２照合情報の値とが一致していないため、異常カウンタ４３がリセットされる（すなわち、異常カウンタ値を０に設定される）。
【００７５】
その後、全閉位置学習値が更新されることにより、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１に全閉位置学習値として「２２」が記憶されるとする（第１データ記憶領域４１ｅを参照）。なお、第２記憶部４１２と第３記憶部４１３のデータの内容は変化しない。
【００７６】
そして、電源オフによりＥＣＵ１がシャットダウンするときに、第１データ記憶領域４１の第３記憶部４１３に記憶されているデータ更新回数が１加算されることにより、第３記憶部４１３にはデータ更新回数として「６」が記憶される（第１データ記憶領域４１ｆを参照）。その後、第１データ記憶領域４１のデータが第１データ記憶領域５１に記憶される。
【００７７】
これは、第１データ記憶領域５１ｄおよび第２データ記憶領域５２ｄに記憶されているデータが正常であるとチェックサム値に基づいて判断される（判断結果Ｒ０３，Ｒ０４を参照）とともに、第２データ記憶領域５２ｄに記憶されているデータ更新回数が、第１データ記憶領域５１ｄに記憶されているデータ更新回数よりも大きいためである。
【００７８】
これにより、フラッシュＲＯＭ５内における第１データ記憶領域５１の第１記憶部５１１には全閉位置学習値として「２２」が記憶され、第２記憶部５１２には第１照合情報として「５」が記憶され、第３記憶部５１３にはデータ更新回数として「６」が記憶され、第４記憶部５１４にはチェックサム値が記憶される（第１データ記憶領域５１ｆを参照）。
【００７９】
また、第２データ記憶領域５２の第１記憶部５２１、第２記憶部５２２および第３記憶部５２３にはそれぞれ、「１６」、「４」および「５」が記憶され、第４記憶部５２４にはチェックサム値が記憶される（第２データ記憶領域５２ｆを参照）。
【００８０】
また、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報が第３データ記憶領域５３の第１記憶部５３１に記憶される。これにより、第３データ記憶領域５３の第１記憶部５３１には第２照合情報として「４」が記憶され、また、第２記憶部５３２には異常カウンタ値として「０」が記憶される（第３データ記憶領域５３ｆを参照）。
【００８１】
次に、データ記憶領域５２に記憶されているデータに異常が発生した場合において、ＲＡＭ４とフラッシュＲＯＭ５に全閉位置学習値を記憶するときのＥＣＵ１の動作を図６を用いて説明する。
【００８２】
図６に示すように、５回目のドライブにおけるＥＣＵ１の動作は、図５と同一であるため、５回目のドライブでの説明を省略する。
そして、５回目のドライブの終了後に、６回目のドライブを開始するための電源オンによりＥＣＵ１が起動すると、起動直後の第１データ記憶領域５１、第２データ記憶領域５２および第３データ記憶領域５３には、前回の電源オフ時と同じデータが記憶されており（第１データ記憶領域５１ｇ、第２データ記憶領域５２ｇおよび第３データ記憶領域５３ｇを参照）、第１データ記憶領域５１および第２データ記憶領域５２のうち、第１データ記憶領域５１のデータが第１データ記憶領域４１に記憶される。
【００８３】
これは、第１データ記憶領域５１ｇに記憶されているデータが正常であり、第２データ記憶領域５２ｇに記憶されているデータが異常であるとチェックサム値に基づいて判断されるためである（判断結果Ｒ１１，Ｒ１２を参照）。
【００８４】
これにより、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１には全閉位置学習値として「１２」が記憶され、第２記憶部４１２には第１照合情報として「３」が記憶され、第３記憶部４１３にはデータ更新回数として「４」が記憶される（第１データ記憶領域４１ｄを参照）。
【００８５】
さらに、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報の値と、第３データ記憶領域５３の第１記憶部５３１に記憶されている第２照合情報の値とが一致しているため、異常カウンタ４３がインクリメント（１加算）される。これにより、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値を次の電源オン時に利用できない異常を検出することができる。
【００８６】
その後、全閉位置学習値が更新されることにより、ＲＡＭ４内における第１データ記憶領域４１の第１記憶部４１１に全閉位置学習値として「２２」が記憶されるとする（第１データ記憶領域４１ｈを参照）。なお、第２記憶部４１２と第３記憶部４１３のデータの内容は変化しない。
【００８７】
そして、電源オフによりＥＣＵ１がシャットダウンするときに、第１データ記憶領域４１の第３記憶部４１３に記憶されているデータ更新回数が１加算されることにより、第３記憶部４１３にはデータ更新回数として「５」が記憶される（第１データ記憶領域４１ｉを参照）。その後、第１データ記憶領域４１のデータが第２データ記憶領域５２に記憶される。
【００８８】
これは、第１データ記憶領域５１ｇに記憶されているデータが正常であり、第２データ記憶領域５２ｇに記憶されているデータが異常であるとチェックサム値に基づいて判断されるためである（判断結果Ｒ１１，Ｒ１２を参照）。
【００８９】
これにより、フラッシュＲＯＭ５内における第１データ記憶領域５１の第１記憶部５１１には全閉位置学習値として「１２」が記憶され、第２記憶部５１２には第１照合情報として「３」が記憶され、第３記憶部５１３にはデータ更新回数として「４」が記憶され、第４記憶部５１４にはチェックサム値が記憶される（第１データ記憶領域５１ｉを参照）。
【００９０】
また、第２データ記憶領域５２の第１記憶部５２１、第２記憶部５２２および第３記憶部５２３にはそれぞれ、「２２」、「４」および「５」が記憶され、第４記憶部５２４にはチェックサム値が記憶される（第２データ記憶領域５２ｉを参照）。
【００９１】
また、第１データ記憶領域４１の第２記憶部４１２に記憶されている第１照合情報が第３データ記憶領域５３の第１記憶部５３１に記憶される。これにより、第３データ記憶領域５３の第１記憶部５３１には第２照合情報として「３」が記憶され、また、第２記憶部５３２には異常カウンタ値として「１」が記憶される（第３データ記憶領域５３ｉを参照）。
【００９２】
このように構成されたＥＣＵ１は、エンジンＥＧを制御するための全閉位置学習値を記憶する第１データ記憶領域４１が設けられ、記憶内容の書き換えが可能なメモリであるＲＡＭ４と、第１データ記憶領域４１に記憶されていた全閉位置学習値を記憶するための第１データ記憶領域５１および第２データ記憶領域５２が設けられ、記憶内容の書き換えが可能な不揮発性メモリであるフラッシュＲＯＭ５とを備える。
【００９３】
そして、ＥＣＵ１の電源オフ時に、フラッシュＲＯＭ５における第１データ記憶領域５１および第２データ記憶領域５２の中から１つを選択し、選択したデータ記憶領域に、ＲＡＭ４の第１データ記憶領域４１に記憶されている全閉位置学習値を記憶する（Ｓ３７０，Ｓ３８０）。
【００９４】
また、全閉位置学習値をフラッシュＲＯＭ５に記憶する場合に、全閉位置学習値をフラッシュＲＯＭ５に記憶したタイミングの順序を判別可能な情報であるデータ更新回数を、記憶する全閉位置学習値と対応付けてフラッシュＲＯＭ５に記憶する（Ｓ３７０，Ｓ３８０）。
【００９５】
次に、ＥＣＵ１の電源オン時に、フラッシュＲＯＭ５における第１データ記憶領域５１および第２データ記憶領域５２に記憶されているデータに異常が発生しているか否かを判断する（Ｓ１１０，Ｓ１２０，Ｓ１５０）。
【００９６】
そして、ＥＣＵ１の電源オン時に、上記の異常判断の判断結果と、データ更新回数とに基づいて、フラッシュＲＯＭ５における第１データ記憶領域５１および第２データ記憶領域５２のうちデータに異常が発生していないデータ記憶領域の中から、全閉位置学習値をフラッシュＲＯＭ５に記憶したタイミングが最も遅いデータ記憶領域を選択し、選択したデータ記憶領域に記憶されている全閉位置学習値を、ＲＡＭ４の第１データ記憶領域４１に記憶する（Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１５０，Ｓ１６０，Ｓ１７０）。
【００９７】
これにより、フラッシュＲＯＭ５における第１データ記憶領域５１および第２データ記憶領域５２のそれぞれに、記憶されたタイミングが異なる全閉位置学習値が記憶される。そして、第１データ記憶領域５１および第２データ記憶領域５２に記憶された全閉位置学習値には、記憶したタイミングの順序を判別可能な情報であるデータ更新回数が対応付けられており、ＥＣＵ１の電源オン時に、フラッシュＲＯＭ５における第１データ記憶領域５１および第２データ記憶領域５２のうちデータに異常が発生していないデータ記憶領域の中から、全閉位置学習値をフラッシュＲＯＭ５に記憶したタイミングが最も遅いデータ記憶領域に記憶されている全閉位置学習値を、ＲＡＭ４の第１データ記憶領域４１に記憶する。
【００９８】
このためＥＣＵ１は、フラッシュＲＯＭ５の第１データ記憶領域５１および第２データ記憶領域５２に異常が発生していない場合には、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値を利用して、エンジンＥＧを制御することができる。一方、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値に異常が発生した場合であっても、直近の電源オフの１回前の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値を利用して、エンジンＥＧを制御することができる。したがって、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値に異常が発生すると、その後の電源オン時に全閉位置学習値を初期化しなくてはならないという事態の発生を抑制することができる。
【００９９】
さらにＥＣＵ１では、全閉位置学習値をフラッシュＲＯＭ５に記憶する場合に、ＲＡＭ４の第１データ記憶領域４１に記憶された第１照合情報を、記憶する全閉位置学習値と対応付けてフラッシュＲＯＭ５に記憶する（Ｓ３７０，Ｓ３８０）。
【０１００】
また、全閉位置学習値をフラッシュＲＯＭ５に記憶する場合に、第１照合情報の値を１加算した値を第２照合情報として決定し、決定した第２照合情報をフラッシュＲＯＭ５に記憶する（Ｓ３２０，Ｓ３９０）。
【０１０１】
そして、ＲＡＭ４の第１データ記憶領域４１に記憶した全閉位置学習値に対応付けられている第１照合情報の値と、フラッシュＲＯＭ５に記憶されている第２照合情報の値とが非一致であるか否かを判断する（Ｓ１８０）。
【０１０２】
これにより、第１照合情報の値と第２照合情報の値とが非一致である場合には、ＥＣＵ１の電源オン時にＲＡＭ４の第１データ記憶領域４１に記憶した全閉位置学習値は、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値であり、第１照合情報の値と第２照合情報の値とが一致している場合には、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値ではないと判断することができる。
【０１０３】
したがって、ＥＣＵ１によれば、直近の電源オフ時にフラッシュＲＯＭ５に記憶された全閉位置学習値を次の電源オン時に利用できない異常を検出することが可能となる。
またＥＣＵ１では、第１照合情報の値と第２照合情報の値とが一致していると判断した回数を計数する（Ｓ２００）。これにより、異常の発生回数を監視することができる。
【０１０４】
以上説明した実施形態において、ＲＡＭ４は本発明における第１メモリ、フラッシュＲＯＭ５は本発明における第２メモリ、Ｓ３７０，Ｓ３８０の処理は本発明における第１，２，３記憶手段、Ｓ３２０，Ｓ３９０の処理は本発明における第４記憶手段、Ｓ１１０，Ｓ１２０，Ｓ１５０の処理は本発明における異常判断手段、Ｓ１１０，Ｓ１２０，Ｓ１４０，Ｓ１５０，Ｓ１６０，Ｓ１７０の処理は本発明における第５記憶手段、Ｓ１８０の処理は本発明における関係判断手段、Ｓ２００の処理は本発明における計数手段である。
【０１０５】
また、エンジンＥＧは本発明における制御対象、全閉位置学習値は本発明における制御データ、第１データ記憶領域４１は本発明における第１記憶領域、第１データ記憶領域５１および第２データ記憶領域５２は本発明における第２記憶領域、データ更新回数は本発明における判別情報、第１照合情報は本発明における第１設定情報、第２照合情報は本発明における第２設定情報である。
【０１０６】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採ることができる。
例えば上記実施形態では、フラッシュＲＯＭ５において全閉位置学習値を記憶するデータ記憶領域を２つ設けたものを示したが、データ記憶領域を３つ以上設けるようにしてもよい。
【符号の説明】
【０１０７】
１…ＥＣＵ、２…ＣＰＵ、４…ＲＡＭ、５…フラッシュＲＯＭ
【図１】
2014044494.tif 000003
【図２】
2014044494.tif 000004
【図３】
2014044494.tif 000005
【図４】
2014044494.tif 000006
【図５】
2014044494.tif 000007
【図６】
2014044494.tif 000008