自動車用電子制御装置
【課題】不揮発性メモリの記憶領域に故障が発生しても、情報の蓄積に支障がないようにする。
【解決手段】イグニッションスイッチがOFFになったことを契機として、不揮発性メモリに故障情報を書き込むときに、故障が発生していない記憶領域を選定し(S1)、記憶領域の全領域に消去データを書き込み(S2,S3)、消去データの確認により消去できたか否かを判定する(S4,S5)。記憶領域が消去できなかった場合、故障が発生していない他の記憶領域に素子異常情報を書き込む(S16)。また、イグニッションスイッチがONになったことを契機として、不揮発性メモリから故障情報を読み込むときに、チェックサムを利用して異常を検知し、故障が発生していない他の記憶領域に素子異常情報を書き込む。そして、素子異常情報を計数した計数値が所定の閾値以上である記憶領域は、故障が発生していると判定し、その使用を禁止する。
【解決手段】イグニッションスイッチがOFFになったことを契機として、不揮発性メモリに故障情報を書き込むときに、故障が発生していない記憶領域を選定し(S1)、記憶領域の全領域に消去データを書き込み(S2,S3)、消去データの確認により消去できたか否かを判定する(S4,S5)。記憶領域が消去できなかった場合、故障が発生していない他の記憶領域に素子異常情報を書き込む(S16)。また、イグニッションスイッチがONになったことを契機として、不揮発性メモリから故障情報を読み込むときに、チェックサムを利用して異常を検知し、故障が発生していない他の記憶領域に素子異常情報を書き込む。そして、素子異常情報を計数した計数値が所定の閾値以上である記憶領域は、故障が発生していると判定し、その使用を禁止する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、自動車用電子制御装置に関する。
【背景技術】
【0002】
自動車に搭載される電子制御装置には、動作中に発生した故障の情報(故障情報)を不揮発性のフラッシュメモリに記録するOBD(On-Board Diagnostics)機能が備え付けられている。OBD機能においては、特開2001−84002号公報(特許文献1)に記載されるように、ドライビングサイクルごとに異なる記憶領域に故障情報を記録することで、故障情報の記録が失敗しても、それまで蓄積した故障情報がすべて失われることを防止している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−84002号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ある記憶領域に素子固着などの故障が発生すると、その記憶領域に故障情報を正常に記録することができなくなってしまう。故障が発生した記憶領域から故障情報を読み込むときに、チェックサムなどで故障発生が検知されると、故障が発生していない他の記憶領域、例えば、故障が発生した記憶領域の直前に故障情報を書き込んだ記憶領域から故障情報が読み込まれる。
【0005】
しかし、従来技術においては、記憶領域への故障情報の書き込みに先立って、その記憶領域が正常であるか否かを診断していなかったため、故障情報の記録に際して、故障情報を読み込んだ記憶領域とは異なる記憶領域、即ち、故障が発生した記憶領域に故障情報を書き込んでしまう場合がある。この場合、故障が発生した記憶領域に故障情報が繰り返し記録されることから、記録可能な記憶領域が1つになると、故障情報のさらなる蓄積ができなくなってしまう。
【0006】
そこで、本発明は従来技術の問題点に鑑み、不揮発性メモリの記憶領域に故障が発生しても、故障情報などの蓄積への影響を抑制した、自動車用電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
自動車用電子制御装置は、イグニッションスイッチがOFFになった後、所定時間経過したときに内部電源を遮断するセルフシャットダウン機能と、不揮発性メモリと、を有する。そして、自動車用電子制御装置は、イグニッションスイッチがOFFになってから内部電源が遮断するまでに、不揮発性メモリに確保された複数の記憶領域の中から選定した1つの記憶領域に情報を書き込む一方、イグニッションスイッチがONになったときに、不揮発性メモリの記憶領域から情報を読み込む。また、自動車用電子制御装置は、不揮発性メモリに対する情報の読み込み時に、不揮発性メモリの記憶領域の電気的な故障が検知されると、その故障情報を記憶する。自動車用電子制御装置は、故障情報を参照して、電気的故障が検知された不揮発性メモリの記憶領域の使用を禁止する。
【発明の効果】
【0008】
不揮発性メモリの記憶領域に故障が発生しても、情報の蓄積への影響を抑制することができる。
【図面の簡単な説明】
【0009】
【図1】自動車用電子制御装置の一例を示す構成図である。
【図2】故障情報を格納する記憶領域のデータ構造図である。
【図3】故障情報書込処理の一例を示すフローチャートである。
【図4】故障情報書込処理の一例を示すフローチャートである。
【図5】記憶領域を選定するサブルーチンのフローチャートである。
【図6】故障情報読込処理の一例を示すフローチャートである。
【図7】故障報知処理の一例を示すフローチャートである。
【図8】実施例における故障情報書込処理の一連の手順を示す説明図である。
【図9】実施例における故障情報読込処理の一連の手順を示す説明図である。
【図10】実施例において故障情報の書き込みが未完了であった場合の説明図である。
【図11】実施例の動作イメージの説明図である。
【発明を実施するための形態】
【0010】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図1は、自動車用電子制御装置(以下「電子制御装置」という)の一例を示す。
電子制御装置100は、例えば、エンジン、自動変速機、燃料ポンプなどを電子制御するデバイスであって、CPU(Central Processing Unit)などのプロセッサ110と、一時的な作業領域となるRAM(Random Access Memory)120と、フラッシュメモリ130と、を有する。フラッシュメモリ130は、フラッシュROM(Read Only Memory)など、電源供給を遮断してもデータが消えない不揮発性の半導体メモリであって、OBD機能による故障情報などを保持記憶する。プロセッサ110、RAM120及びフラッシュメモリ130は、バス140を介して相互に接続されている。
【0011】
フラッシュメモリ130には、図2に示すように、故障情報を記憶する複数の記憶領域として、例えば、記憶領域1及び記憶領域2が確保されている。記憶領域1及び記憶領域2は、同図に示すように、バックアップ領域130A、開始印130B、カウンタ130C、SUM130D、終了印130E及び空き領域130Fを含む。バックアップ領域130Aには、電子制御装置100の作動中に収集された故障情報が格納される。開始印130Bには、バックアップ領域130Aに故障情報を書き込み始めたことを表す開始コードが格納される。カウンタ130Cには、バックアップ領域130Aに故障情報を書き込んだ累積回数が格納される。SUM130Dには、バックアップ領域130Aに格納された故障情報のチェックサムが格納される。終了印130Eには、バックアップ領域130Aへの故障情報の書き込みが終了したことを表す終了コードが格納される。空き領域130Fには、他の記憶領域について、そのバックアップ領域130Aに異常が発生したことを表す素子異常情報が逐次格納される。
【0012】
そして、電子制御装置100は、ROMなどに格納された制御プログラムに従って、故障情報書込処理、故障情報読込処理及び故障報知処理を夫々実行する。
【0013】
図3及び図4は、イグニッションスイッチがOFFになったことを契機として、電子制御装置100が所定時間後にセルフシャットダウンするまでに、電子制御装置100のプロセッサ110が実行する故障情報書込処理の一例を示す。ここで、セルフシャットダウンとは、イグニッションスイッチがOFFになった後、所定時間経過したときに内部電源を遮断する機能である。
【0014】
なお、故障情報書込処理の前提として、電子制御装置100の作動中に、RAM120に各種デバイスの故障情報が蓄積されていると共に、RAM120にカウンタ130C及び素子異常情報が退避されているものとする。また、前回のドライビングサイクルの故障情報がフラッシュメモリ130から読み出されてRAM120に書き込まれ、その後の処理において、この故障情報に対して今回のドライビングサイクルにおける故障診断結果が追記されるものとする。そして、イグニッションスイッチがOFFになると、RAM120の故障情報が故障情報書込処理における書き込み対象となる。
【0015】
ステップ1(図では「S1」と略記する。以下同様。)では、プロセッサ110が、RAM120に蓄積されている各種デバイスの故障情報を書き込む記憶領域を選定するサーブルーチン(図5参照)を実行する。
【0016】
ステップ2では、プロセッサ110が、ステップ1で選定した記憶領域について、その先頭アドレスから所定の消去データ(例えば、0xFF)を書き込み始めることで、記憶領域の消去を開始する。
【0017】
ステップ3では、プロセッサ110が、例えば、記憶領域の最終アドレスまで消去データを書き込んだか否かを介して、記憶領域の消去が完了したか否かを判定する。そして、プロセッサ110は、記憶領域の消去が完了したと判定すれば処理をステップ4へと進める一方(Yes)、記憶領域の消去が完了していないと判定すれば判定処理を繰り返す(No)。
【0018】
ステップ4では、プロセッサ110が、記憶領域に書き込まれた消去データを順次確認することで、記憶領域が正常に消去されたか否かを判定する消去チェックを行なう。
【0019】
ステップ5では、プロセッサ110が、ステップ4における消去チェックの結果に基づいて、記憶領域の全領域が消去されたか否かを判定する。そして、プロセッサ110は、記憶領域の全領域が消去されたと判定すれば処理をステップ6へと進める(Yes)。一方、プロセッサ110は、記憶領域の全領域が消去されていない、即ち、ある素子(セル)に異常があるため消去データの書き込みが正常に行われなかったと判定すれば処理をステップ16へと進める(No)。
【0020】
ステップ6では、プロセッサ110が、バックアップ領域130Aのチェックサムを計算するための変数SUMを0にリセットする。
【0021】
ステップ7では、プロセッサ110が、開始印130Bに所定の開始コードを格納する。
【0022】
ステップ8では、プロセッサ110が、書き込みアドレスとして、バックアップ領域130Aの先頭アドレスを設定する。
【0023】
ステップ9では、プロセッサ110が、例えば、書き込みアドレスがバックアップ領域130Aの最終アドレスを指しているか否かに基づいて、RAM120からフラッシュメモリ130への故障情報の書き込みが完了したか否かを判定する。そして、プロセッサ110は、故障情報の書き込みが完了していないと判定すれば処理をステップ10へと進める一方(Yes)、故障情報の書き込みが完了したと判定すれば処理をステップ13へと進める(No)。
【0024】
ステップ10では、プロセッサ110が、RAM120から故障情報を1バイト読み込み、書き込みアドレスが指定するアドレスに書き込む。
【0025】
ステップ11では、プロセッサ110が、例えば、変数SUMに対して、故障情報の1バイトのデータ値を加算することで、変数SUMを更新する。
【0026】
ステップ12では、プロセッサ110が、例えば、書き込みアドレスに1を加算することで、書き込みアドレスを更新した後、処理をステップ9へと戻す。
【0027】
ステップ13では、プロセッサ110が、変数SUMをSUM130Dに書き込む。
【0028】
ステップ14では、プロセッサ110が、RAM120からカウンタ及び素子異常情報を読み込み、記憶領域のカウンタ130C及び空き領域130Fに夫々書き込む。なお、素子異常情報が存在しない場合には、これを空き領域130Fに書き込む必要はない。
【0029】
ステップ15では、プロセッサ110が、終了印130Eに所定の終了コードを格納する。
【0030】
ステップ16では、プロセッサ110が、ステップ1で選定された記憶領域とは異なる記憶領域の空き領域130Fに、異常が発生した記憶領域を特定可能な情報を含んだ素子異常情報を書き込む。ここで、記憶領域の空き領域130Fに素子異常情報が既に書き込まれている場合には、これとは異なるアドレスに書き込む(以下同様)。
【0031】
図5は、記憶領域を選定するサブルーチンの一例を示す。
ステップ21では、プロセッサ110が、フラッシュメモリ130の各記憶領域の空き領域130Fを夫々参照し、素子異常情報の個数を計数した計数値が所定の閾値未満である記憶領域、要するに、素子に固着などの故障が発生していない正常な記憶領域を抽出する。ここで、素子異常情報が存在しない記憶領域は、無条件に抽出される。また、電子制御装置100の製造直後には、各記憶領域は未使用であるので、例えば、未使用の記憶領域を優先的に抽出したり、未使用領域が複数あればアドレス順に抽出する。なお、正常な記憶領域であるか否かは、素子異常情報の個数を計数せずに、素子異常情報の有無のみで判定してもよい。
【0032】
ステップ22では、プロセッサ110が、ステップ21で抽出した各記憶領域について、開始印130B、SUM130D及び終了印130Eの少なくとも1つを参照し、記憶領域が正常であるにもかかわらず、電子制御装置100がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかった記憶領域があるか否かを判定する。具体的には、プロセッサ110は、開始印130Bに所定の開始コードが格納されているか、SUM130Dにチェックサムが格納されているか、終了印130Eに所定の終了コードが格納されているかの少なくとも1つの条件が成立しているか否かを介して、故障情報の書き込みが正常に終了しなかった記憶領域があるか否かを判定する。そして、プロセッサ110は、故障情報の書き込みが正常に終了しなかった記憶領域があると判定すれば処理をステップ23へと進める一方(Yes)、故障情報の書き込みが正常に終了しなかった記憶領域がないと判定すれば処理をステップ24へと進める(No)。
【0033】
ステップ23では、プロセッサ110が、電子制御装置100がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかった記憶領域(故障しているとは断言できない記憶領域)を選定する。ここで、故障情報の書き込みが正常に終了しなかった記憶領域が複数存在する場合には、例えば、アドレス順で若い番号の記憶領域を選定する。
【0034】
ステップ24では、プロセッサ110が、正常な記憶領域の中から、ドライビングサイクルごとに故障情報を記録する記憶領域として、今回のドライビングサイクルで故障情報を読み込んだ記憶領域とは異なる他の記憶領域を選定する。この処理は、前回及び今回の少なくとも2つのドライビングサイクルにおける故障情報を保存するためのものである。ここで、使用できる正常な記憶領域が複数存在する場合には、例えば、アドレス順で若い番号の記憶領域を選定する。また、故障情報を書き込む他の記憶領域がない場合には、今回のドライビングサイクルで故障情報の書き込みが失敗すると正常な故障情報が失われるため、前回のドライビングサイクルにおける故障情報を保持して書き込みを行わない、又は、最新の故障情報に更新すべく、今回のドライビングサイクルで故障情報を読み込んだ記憶領域を選定する。
【0035】
なお、終了印130Eに書き込み順序を表す情報を付したり、書き込み順序を表すカウンタを用いることで、故障情報の書き込みが正常に終了しなかった記憶領域のうち、バックアップ領域130Aへの故障情報の書き込みが一番古い記憶領域を選定してもよい。このようにすれば、直近に故障情報が書き込まれた記憶領域が選定されることがなく、より新しいデータを確実に保存しつつ、新たなデータを書き込む領域を選択することができる。
【0036】
かかる故障情報書込処理によれば、RAM120に保持されている故障情報は、素子に故障が発生していない記憶領域のバックアップ領域130Aに書き込まれる。このとき、バックアップ領域130Aに所定の消去データが書き込めるかを否かを介して、故障情報の書き込み対象である記憶領域に異常が発生しているか否かが判定される。そして、記憶領域に異常が発生していると判定された場合には、故障が発生していない他の記憶領域の空き領域130Fに素子異常情報が書き込まれる。
【0037】
また、RAM120に保持されている故障情報を記憶領域に書き込むとき、開始印130Bに開始コードが書き込まれ、バックアップ領域130Aに故障情報が書き込まれ、SUM130Dにチェックサムが書き込まれ、終了印130Eに終了コードが書き込まれる、という手順が実行される。このため、開始印130B、SUM130D及び終了印130Eの少なくとも1つを参照することで、例えば、バッテリ電圧の低下、故障情報の書き込みに時間がかかったなど、電子制御装置100がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかったことを把握することができる。さらに、バックアップ領域130Aに故障情報を書き込むときに、故障情報のチェックサムが演算され、これがSUM130Dに書き込まれる。このため、後述する故障情報読込処理において、バックアップ領域130AのチェックサムとSUM130Dに格納されたチェックサムとを比較することで、記憶領域の素子に異常が発生しているか否かを判定することができる。
【0038】
なお、消去チェックにより記憶領域の全領域が消去されたと判定された場合、それまでに発生した素子異常は、例えば、ノイズ重畳により発生した一時的な異常であると考えられるため、記憶領域の空き領域130Fに格納された素子異常情報をクリア(削除)してもよい。
【0039】
図6は、イグニッションスイッチがONになったことを契機として、電子制御装置100のプロセッサ110が実行する故障情報読込処理の一例を示す。
【0040】
ステップ31では、プロセッサ110が、故障情報を読み込む対象となる記憶領域を選定する。即ち、プロセッサ110は、フラッシュメモリ130の各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印130B及び終了印130Eが正常である記憶領域のうち、バックアップ領域130Aに故障情報が書き込まれた時期が一番新しいものを選定する。
【0041】
ステップ32では、プロセッサ110が、変数SUMを0にリセットする。
【0042】
ステップ33では、プロセッサ110が、ステップ1で選定した記憶領域から、SUM130Dを読み込む。なお、記憶領域から読み込んだSUM130Dは、例えば、RAM120に一時的に記憶しておく。
【0043】
ステップ34では、プロセッサ110が、例えば、記憶領域のバックアップ領域130Aの最後までデータを読み出したか否かを介して、バックアップ領域130Aから故障情報の読み込みが完了したか否かを判定する。そして、プロセッサ110は、故障情報の読み込みが完了していないと判定すれば処理をステップ35へと進める一方(Yes)、故障情報の読み込みが完了したと判定すれば処理をステップ37へと進める(No)。
【0044】
ステップ35では、プロセッサ110が、記憶領域のバックアップ領域130Aから異常情報を1バイト読み込む。
【0045】
ステップ36では、プロセッサ110が、例えば、変数SUMに対して、異常情報の1バイトのデータ値を加算することで、変数SUMを更新した後、処理をステップ34へと戻す。
【0046】
ステップ37では、プロセッサ110が、ステップ33で読み込んだSUM130Dと変数SUMとを比較することで、バックアップ領域130Aから読み込んだ故障情報のチェックサムが正しいか否かを判定する。そして、プロセッサ110は、故障情報のチェックサムが正しいと判定すれば処理をステップ38へと進める一方(Yes)、故障情報のチェックサムが正しくないと判定すれば処理をステップ39へと進める(No)。
【0047】
ステップ38では、プロセッサ110が、記憶領域からカウンタ130C及び素子異常情報を読み込み、RAM120に退避させる。
【0048】
ステップ39では、プロセッサ110が、ステップ31で選定された記憶領域とは異なる記憶領域の空き領域130Fに、異常が発生した記憶領域を特定可能な情報を含んだ素子異常情報を書き込む。
【0049】
ステップ40では、プロセッサ110が、フラッシュメモリ130の各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印130B及び終了印130Eが正常である記憶領域のうち、バックアップ領域130Aに故障情報が書き込まれた時期が次に新しいものを選定した後、処理をステップ32へと戻す。
【0050】
かかる故障情報読込処理によれば、故障情報書込処理において故障情報が正常に書き込まれた記憶領域(素子に故障が発生していない記憶領域)のうち、故障情報の書き込みが一番新しい記憶領域から、故障情報が読み込まれる。ここで、記憶領域から故障情報を読み込むとき、読み込みデータのチェックサムが演算され、これと保持されているチェックサムとを比較することで、記憶領域に異常が発生しているか否かが再度判定される。そして、記憶領域に異常が発生していると判定された場合には、故障が発生していない他の記憶領域の空き領域130Fに素子異常情報が書き込まれる。また、記憶領域に異常が発生していると判定された場合には、記憶領域に記憶されている故障情報の確度が低いため、その前に書き込まれた記憶領域から故障情報を読み込むべく、故障情報の書き込みが次に新しい記憶領域から故障情報が読み込まれる。
【0051】
従って、かかる電子制御装置100によれば、故障が発生している記憶領域に対する故障情報の書き込み及び読み込みがなされることがなく、その記憶領域の使用が禁止され、故障情報などの蓄積への影響を抑制することができる。
【0052】
図7は、イグニッションスイッチがONになったことを契機として、電子制御装置100のプロセッサ110が所定時間ごとに繰り返し実行する故障報知処理の一例を示す。
【0053】
ステップ41では、プロセッサ110が、フラッシュメモリ130の各記憶領域の空き領域130Fを順次参照し、そこに格納されている素子異常情報を計数した素子異常回数が所定の閾値未満となっている、正常な記憶領域を抽出する。ここで、所定の閾値は、フラッシュメモリ130の記憶領域に固着などの故障が発生したことを確定するための閾値であって、例えば、フラッシュメモリ130の所定領域に予め記憶されている。なお、所定の閾値は、例えば、電子制御装置100に接続されたコンソールによって、任意の値に書き換えられるようにしてもよい。
【0054】
ステップ42では、プロセッサ110が、正常な記憶領域が1つであるか否かを判定する。そして、プロセッサ110は、正常な記憶領域が1つであると判定すれば処理をステップ43へと進める一方(Yes)、正常な記憶領域が2つ以上であると判定すれば処理を終了させる(No)。
【0055】
ステップ43では、プロセッサ110が、例えば、警告灯、ブザーなどの報知手段を作動させることで、運転者などに電子制御装置100のフラッシュメモリ130に故障が発生したことを報知する。
【0056】
かかる故障報知処理によれば、故障が発生していないフラッシュメモリ130の記憶領域の空き領域130Fを参照することで、他の記憶領域に関する素子異常回数が把握できる。また、この素子異常回数が所定の閾値未満の記憶領域、要するに、フラッシュメモリ130の素子に恒久的な故障が発生していない記憶領域が1つのみになると、2つのドライビングサイクルにおける故障情報が保持できなくなった旨が報知される。このため、運転者などは、フラッシュメモリ130に故障が発生したことを認識することができる。なお、3つ以上のドライビングサイクルにおける故障情報を保持する場合には、必要な記憶領域の数を確保できなくなったとき、又は、いずれかの記憶領域に故障が発生したと判定されたときに、故障情報が保持できなくなった旨を報知してもよい。
【0057】
次に、かかる電子制御装置100の作用及び効果について理解を容易ならしめることを目的とし、具体的な事例を想定した実施例について説明する。
実施例の前提条件として、フラッシュメモリ130には2つの記憶領域として、ブロック1(BL1)及びブロック2(BL2)が確保されているものとする。また、イグニッションスイッチがOFFになったときに、RAM120からブロック1に故障情報が書き込まれるものとする。
【0058】
イグニッションスイッチがOFFになると、図8に示すように、ブロック1に故障情報を書き込む準備として、ブロック1の全領域に所定の消去データを書き込むことで、ブロック1に書き込まれていた古い故障情報が消去される。ブロック1の消去に続いて消去チェックが行なわれ、同図に示すように、ある素子に固着が発生したことが検知されると、素子に故障が発生していないブロック2の空き領域130Fに、ブロック1の素子に異常が発生したことを表す素子異常情報が書き込まれる。そして、イグニッションスイッチがOFFになるたびに、このような処理が逐次実行され、ブロック2の空き領域130Fには、ブロック1の素子に異常が発生したことを表す素子異常情報が蓄積される。なお、ブロック1の素子に異常が検知された後、イグニッションスイッチがOFFになったときの処理でその異常が再度検知されない場合には、例えば、ノイズ重畳などによる一時的な異常であると考えられるため、ブロック2に蓄積された素子異常情報を消去してもよい。
【0059】
ブロック1の素子に固着が発生しても、故障情報の書き込みが最後まで行われたことから、図9に示すように、ブロック1の終了印130Eが書き込まれている。この場合、イグニッションスイッチがONになったときに実行される故障情報読込処理において、ブロック1から読み込んだ故障情報のチェックサムとSUM130Dに格納されていたチェックサムとが一致しないため、ブロック1に異常が発生していることが検知される。そして、故障が発生していないブロック2の空き領域130Fに、ブロック1に異常が発生していることを表す素子異常情報が書き込まれる。
【0060】
その後、ブロック2の空き領域130Fに書き込まれた素子異常情報を計数した計数値が所定の閾値以上であれば、その素子異常情報に係るブロック1が故障していると判定し、運転者などにその旨を通知すると共に、ブロック1の使用が禁止される。
【0061】
セルフシャットダウン中に故障情報の書き込みが正常に終了しなかった場合には、図10に示すように、開始印130Bが書き込まれているが、終了印130Eが書き込まれていない状態となるので、素子固着による異常と区別することができる。
【0062】
従って、図11に示すように、ブロック1に故障情報を書き込むときに、所定回数連続して異常が検知されると、その後の故障情報書込処理及び故障情報読込処理においてブロック1の使用が禁止される。なお、3つ以上のブロックについても、前述した処理で同様な作用及び効果が奏される。
【0063】
使用禁止となったブロック1については、所定のタイミングで故障情報の書き込みを再度実行し、その結果が問題なければ、素子異常情報を消去することで、その使用禁止を解除するようにしてもよい。ここで、所定のタイミングとしては、例えば、駐車中、渋滞などの低速走行中など、電子制御装置100の処理負荷が低い状態が適用できる。また、故障情報の書き込み回数は、1回に限らず、素子異常情報の計数値に応じた回数や2回以上の所定回数であってもよい。
【0064】
フラッシュメモリ130に2つの記憶領域のみが確保され、かつ、1回の異常発生により記憶領域の選定処理が行われる場合には、次のようにしてもよい。
イグニッションスイッチがOFFになったことを契機として、電子制御装置100のプロセッサ100が実行する故障情報書込処理において、今回のドライビングサイクルで故障情報を読み込んだ記憶領域とは異なる記憶領域を選定する。そして、消去チェックの結果、記憶領域が正常に消去されていれば、そのバックアップ領域130Aに故障情報を書き込む(このとき異常が発生してもそのままとする)。一方、消去チェックの結果、記憶領域が正常に消去されていなければ、今回のドライビングサイクルで更新された故障情報を破棄し、今回のドライビングサイクルで故障情報を読み込んだ記憶領域に素子故障情報を書き込む。
【0065】
イグニッションスイッチがONになったことを契機として、電子制御装置100のプロセッサ100が実行する故障情報読込処理において、2つの記憶領域を比較し、前回のドライビングサイクルで故障情報を書き込んだ記憶領域(第1の記憶領域)を特定する。また、第1の記憶領域とは異なる記憶領域(第2の記憶領域)の空き領域130Fを参照し、第1の記憶領域に消去異常が発生しているか否かを判定する。第1の記憶領域に消去異常が発生していれば、第2の記憶領域から故障情報を読み込む。一方、第1の記憶領域に消去異常が発生していなければ、第1の記憶領域から故障情報を読み込むと共に、チェックサムを利用して読込異常が発生しているか否かを判定する。第1の記憶領域に読込異常が発生していれば、今回のドライビングサイクルで更新された故障情報の書き込み先として、第1の記憶領域を内部的に予約しておく。
【0066】
そして、今回のドライビングサイクルで更新された故障情報を書き込む故障情報書込処理において、現在故障情報が正常に書き込まれている記憶領域を優先して選定すると共に、消去異常が発生した記憶領域に対して再度消去チェックを実行し、消去異常が再度発生しなければ選定対象とする一方、消去異常が再度発生すれば故障情報書込処理を中断する。また、故障情報書込処理において、内部的に予約しておいた記憶領域を選定し、この記憶領域に対して消去チェック及び書き込みを行なう。このように、記憶領域に読込異常が発生している間は、ドライビングサイクルごとに、古い故障情報を読み込み、読込異常が発生した記憶領域に対して故障情報の書き込みが繰り返し行なわれる。
【0067】
前回のドライビングサイクルで消去異常が発生した記憶領域が、今回のドライビングサイクルで故障情報の書き込み先として選定され、今回のドライビングサイクルで消去異常が発生せず、故障情報が正常に書き込めた場合、次回のドライビングサイクルでこの記憶領域から故障情報を正常に読み込むことができるので、これが最新の故障情報となる。他方の記憶領域、即ち、前回のドライビングサイクルの素子異常情報を記録した記憶領域は、次回の記憶領域として選定されて消去チェックが行なわれるので、自動的に素子異常情報が消去される。前回のドライビングサイクルで読込異常が発生した場合にも、今回のドライビングサイクルで読込異常が発生しなければ、その素子異常情報も自動的に消去される。
【0068】
ここで、前記実施形態及び前記実施例から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
【0069】
(イ)前記不揮発性メモリの記憶領域に電気的故障が検知された後、所定のタイミングで前記記憶領域に情報を再度書き込んだ結果、前記電気的故障が検知されなかった場合に、前記記憶領域の使用禁止を解除する、請求項1又は請求項2に記載の自動車用電子制御装置。
【0070】
この発明によれば、記憶領域の電気的故障が誤って検知されても、その後記憶領域の使用禁止が解除される可能性があるため、記憶領域の数を確保することができる。
【0071】
(ロ)前記不揮発性メモリの記憶領域に、前記情報のチェックサム、及び、前記情報の書き込みが終了したことを表す終了コードを更に書き込み、前記不揮発性メモリから情報を読み込むときに、前記終了コードが書き込まれていない場合には、前記不揮発性メモリの記憶領域に電気的故障が発生していないと判定する一方、前記終了コードが書き込まれかつ前記チェックサムが正しくない場合には、前記不揮発性メモリの記憶領域に電気的故障が発生していると判定する、請求項1、請求項2又は(イ)に記載の自動車用電子制御装置。
【0072】
この発明によれば、イグニッションスイッチがOFFになってから内部電源が遮断されるまでに、記憶領域に情報が書き込まれなかった場合を、記憶領域の電気的故障と判定することを回避できる。
【0073】
(ハ)前記不揮発性メモリに情報を書き込むときに、前記不揮発性メモリの記憶領域に所定の消去データを書き込んで消去した後、前記記憶領域の消去データを確認する、請求項1、請求項2、(イ)又は(ロ)に記載の自動車用電子制御装置。
【0074】
この発明によれば、消去データの書き込み及び確認を通して、不揮発性メモリの記憶領域に電気的故障が発生したか否かを判定することができる。
【符号の説明】
【0075】
100 電子制御装置
110 プロセッサ
120 RAM
130 フラッシュメモリ
130A バックアップ領域
130B 開始印
130C カウンタ
130D SUM
130E 終了印
130F 空き領域
【技術分野】
【0001】
本発明は、自動車用電子制御装置に関する。
【背景技術】
【0002】
自動車に搭載される電子制御装置には、動作中に発生した故障の情報(故障情報)を不揮発性のフラッシュメモリに記録するOBD(On-Board Diagnostics)機能が備え付けられている。OBD機能においては、特開2001−84002号公報(特許文献1)に記載されるように、ドライビングサイクルごとに異なる記憶領域に故障情報を記録することで、故障情報の記録が失敗しても、それまで蓄積した故障情報がすべて失われることを防止している。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2001−84002号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ある記憶領域に素子固着などの故障が発生すると、その記憶領域に故障情報を正常に記録することができなくなってしまう。故障が発生した記憶領域から故障情報を読み込むときに、チェックサムなどで故障発生が検知されると、故障が発生していない他の記憶領域、例えば、故障が発生した記憶領域の直前に故障情報を書き込んだ記憶領域から故障情報が読み込まれる。
【0005】
しかし、従来技術においては、記憶領域への故障情報の書き込みに先立って、その記憶領域が正常であるか否かを診断していなかったため、故障情報の記録に際して、故障情報を読み込んだ記憶領域とは異なる記憶領域、即ち、故障が発生した記憶領域に故障情報を書き込んでしまう場合がある。この場合、故障が発生した記憶領域に故障情報が繰り返し記録されることから、記録可能な記憶領域が1つになると、故障情報のさらなる蓄積ができなくなってしまう。
【0006】
そこで、本発明は従来技術の問題点に鑑み、不揮発性メモリの記憶領域に故障が発生しても、故障情報などの蓄積への影響を抑制した、自動車用電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【0007】
自動車用電子制御装置は、イグニッションスイッチがOFFになった後、所定時間経過したときに内部電源を遮断するセルフシャットダウン機能と、不揮発性メモリと、を有する。そして、自動車用電子制御装置は、イグニッションスイッチがOFFになってから内部電源が遮断するまでに、不揮発性メモリに確保された複数の記憶領域の中から選定した1つの記憶領域に情報を書き込む一方、イグニッションスイッチがONになったときに、不揮発性メモリの記憶領域から情報を読み込む。また、自動車用電子制御装置は、不揮発性メモリに対する情報の読み込み時に、不揮発性メモリの記憶領域の電気的な故障が検知されると、その故障情報を記憶する。自動車用電子制御装置は、故障情報を参照して、電気的故障が検知された不揮発性メモリの記憶領域の使用を禁止する。
【発明の効果】
【0008】
不揮発性メモリの記憶領域に故障が発生しても、情報の蓄積への影響を抑制することができる。
【図面の簡単な説明】
【0009】
【図1】自動車用電子制御装置の一例を示す構成図である。
【図2】故障情報を格納する記憶領域のデータ構造図である。
【図3】故障情報書込処理の一例を示すフローチャートである。
【図4】故障情報書込処理の一例を示すフローチャートである。
【図5】記憶領域を選定するサブルーチンのフローチャートである。
【図6】故障情報読込処理の一例を示すフローチャートである。
【図7】故障報知処理の一例を示すフローチャートである。
【図8】実施例における故障情報書込処理の一連の手順を示す説明図である。
【図9】実施例における故障情報読込処理の一連の手順を示す説明図である。
【図10】実施例において故障情報の書き込みが未完了であった場合の説明図である。
【図11】実施例の動作イメージの説明図である。
【発明を実施するための形態】
【0010】
以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
図1は、自動車用電子制御装置(以下「電子制御装置」という)の一例を示す。
電子制御装置100は、例えば、エンジン、自動変速機、燃料ポンプなどを電子制御するデバイスであって、CPU(Central Processing Unit)などのプロセッサ110と、一時的な作業領域となるRAM(Random Access Memory)120と、フラッシュメモリ130と、を有する。フラッシュメモリ130は、フラッシュROM(Read Only Memory)など、電源供給を遮断してもデータが消えない不揮発性の半導体メモリであって、OBD機能による故障情報などを保持記憶する。プロセッサ110、RAM120及びフラッシュメモリ130は、バス140を介して相互に接続されている。
【0011】
フラッシュメモリ130には、図2に示すように、故障情報を記憶する複数の記憶領域として、例えば、記憶領域1及び記憶領域2が確保されている。記憶領域1及び記憶領域2は、同図に示すように、バックアップ領域130A、開始印130B、カウンタ130C、SUM130D、終了印130E及び空き領域130Fを含む。バックアップ領域130Aには、電子制御装置100の作動中に収集された故障情報が格納される。開始印130Bには、バックアップ領域130Aに故障情報を書き込み始めたことを表す開始コードが格納される。カウンタ130Cには、バックアップ領域130Aに故障情報を書き込んだ累積回数が格納される。SUM130Dには、バックアップ領域130Aに格納された故障情報のチェックサムが格納される。終了印130Eには、バックアップ領域130Aへの故障情報の書き込みが終了したことを表す終了コードが格納される。空き領域130Fには、他の記憶領域について、そのバックアップ領域130Aに異常が発生したことを表す素子異常情報が逐次格納される。
【0012】
そして、電子制御装置100は、ROMなどに格納された制御プログラムに従って、故障情報書込処理、故障情報読込処理及び故障報知処理を夫々実行する。
【0013】
図3及び図4は、イグニッションスイッチがOFFになったことを契機として、電子制御装置100が所定時間後にセルフシャットダウンするまでに、電子制御装置100のプロセッサ110が実行する故障情報書込処理の一例を示す。ここで、セルフシャットダウンとは、イグニッションスイッチがOFFになった後、所定時間経過したときに内部電源を遮断する機能である。
【0014】
なお、故障情報書込処理の前提として、電子制御装置100の作動中に、RAM120に各種デバイスの故障情報が蓄積されていると共に、RAM120にカウンタ130C及び素子異常情報が退避されているものとする。また、前回のドライビングサイクルの故障情報がフラッシュメモリ130から読み出されてRAM120に書き込まれ、その後の処理において、この故障情報に対して今回のドライビングサイクルにおける故障診断結果が追記されるものとする。そして、イグニッションスイッチがOFFになると、RAM120の故障情報が故障情報書込処理における書き込み対象となる。
【0015】
ステップ1(図では「S1」と略記する。以下同様。)では、プロセッサ110が、RAM120に蓄積されている各種デバイスの故障情報を書き込む記憶領域を選定するサーブルーチン(図5参照)を実行する。
【0016】
ステップ2では、プロセッサ110が、ステップ1で選定した記憶領域について、その先頭アドレスから所定の消去データ(例えば、0xFF)を書き込み始めることで、記憶領域の消去を開始する。
【0017】
ステップ3では、プロセッサ110が、例えば、記憶領域の最終アドレスまで消去データを書き込んだか否かを介して、記憶領域の消去が完了したか否かを判定する。そして、プロセッサ110は、記憶領域の消去が完了したと判定すれば処理をステップ4へと進める一方(Yes)、記憶領域の消去が完了していないと判定すれば判定処理を繰り返す(No)。
【0018】
ステップ4では、プロセッサ110が、記憶領域に書き込まれた消去データを順次確認することで、記憶領域が正常に消去されたか否かを判定する消去チェックを行なう。
【0019】
ステップ5では、プロセッサ110が、ステップ4における消去チェックの結果に基づいて、記憶領域の全領域が消去されたか否かを判定する。そして、プロセッサ110は、記憶領域の全領域が消去されたと判定すれば処理をステップ6へと進める(Yes)。一方、プロセッサ110は、記憶領域の全領域が消去されていない、即ち、ある素子(セル)に異常があるため消去データの書き込みが正常に行われなかったと判定すれば処理をステップ16へと進める(No)。
【0020】
ステップ6では、プロセッサ110が、バックアップ領域130Aのチェックサムを計算するための変数SUMを0にリセットする。
【0021】
ステップ7では、プロセッサ110が、開始印130Bに所定の開始コードを格納する。
【0022】
ステップ8では、プロセッサ110が、書き込みアドレスとして、バックアップ領域130Aの先頭アドレスを設定する。
【0023】
ステップ9では、プロセッサ110が、例えば、書き込みアドレスがバックアップ領域130Aの最終アドレスを指しているか否かに基づいて、RAM120からフラッシュメモリ130への故障情報の書き込みが完了したか否かを判定する。そして、プロセッサ110は、故障情報の書き込みが完了していないと判定すれば処理をステップ10へと進める一方(Yes)、故障情報の書き込みが完了したと判定すれば処理をステップ13へと進める(No)。
【0024】
ステップ10では、プロセッサ110が、RAM120から故障情報を1バイト読み込み、書き込みアドレスが指定するアドレスに書き込む。
【0025】
ステップ11では、プロセッサ110が、例えば、変数SUMに対して、故障情報の1バイトのデータ値を加算することで、変数SUMを更新する。
【0026】
ステップ12では、プロセッサ110が、例えば、書き込みアドレスに1を加算することで、書き込みアドレスを更新した後、処理をステップ9へと戻す。
【0027】
ステップ13では、プロセッサ110が、変数SUMをSUM130Dに書き込む。
【0028】
ステップ14では、プロセッサ110が、RAM120からカウンタ及び素子異常情報を読み込み、記憶領域のカウンタ130C及び空き領域130Fに夫々書き込む。なお、素子異常情報が存在しない場合には、これを空き領域130Fに書き込む必要はない。
【0029】
ステップ15では、プロセッサ110が、終了印130Eに所定の終了コードを格納する。
【0030】
ステップ16では、プロセッサ110が、ステップ1で選定された記憶領域とは異なる記憶領域の空き領域130Fに、異常が発生した記憶領域を特定可能な情報を含んだ素子異常情報を書き込む。ここで、記憶領域の空き領域130Fに素子異常情報が既に書き込まれている場合には、これとは異なるアドレスに書き込む(以下同様)。
【0031】
図5は、記憶領域を選定するサブルーチンの一例を示す。
ステップ21では、プロセッサ110が、フラッシュメモリ130の各記憶領域の空き領域130Fを夫々参照し、素子異常情報の個数を計数した計数値が所定の閾値未満である記憶領域、要するに、素子に固着などの故障が発生していない正常な記憶領域を抽出する。ここで、素子異常情報が存在しない記憶領域は、無条件に抽出される。また、電子制御装置100の製造直後には、各記憶領域は未使用であるので、例えば、未使用の記憶領域を優先的に抽出したり、未使用領域が複数あればアドレス順に抽出する。なお、正常な記憶領域であるか否かは、素子異常情報の個数を計数せずに、素子異常情報の有無のみで判定してもよい。
【0032】
ステップ22では、プロセッサ110が、ステップ21で抽出した各記憶領域について、開始印130B、SUM130D及び終了印130Eの少なくとも1つを参照し、記憶領域が正常であるにもかかわらず、電子制御装置100がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかった記憶領域があるか否かを判定する。具体的には、プロセッサ110は、開始印130Bに所定の開始コードが格納されているか、SUM130Dにチェックサムが格納されているか、終了印130Eに所定の終了コードが格納されているかの少なくとも1つの条件が成立しているか否かを介して、故障情報の書き込みが正常に終了しなかった記憶領域があるか否かを判定する。そして、プロセッサ110は、故障情報の書き込みが正常に終了しなかった記憶領域があると判定すれば処理をステップ23へと進める一方(Yes)、故障情報の書き込みが正常に終了しなかった記憶領域がないと判定すれば処理をステップ24へと進める(No)。
【0033】
ステップ23では、プロセッサ110が、電子制御装置100がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかった記憶領域(故障しているとは断言できない記憶領域)を選定する。ここで、故障情報の書き込みが正常に終了しなかった記憶領域が複数存在する場合には、例えば、アドレス順で若い番号の記憶領域を選定する。
【0034】
ステップ24では、プロセッサ110が、正常な記憶領域の中から、ドライビングサイクルごとに故障情報を記録する記憶領域として、今回のドライビングサイクルで故障情報を読み込んだ記憶領域とは異なる他の記憶領域を選定する。この処理は、前回及び今回の少なくとも2つのドライビングサイクルにおける故障情報を保存するためのものである。ここで、使用できる正常な記憶領域が複数存在する場合には、例えば、アドレス順で若い番号の記憶領域を選定する。また、故障情報を書き込む他の記憶領域がない場合には、今回のドライビングサイクルで故障情報の書き込みが失敗すると正常な故障情報が失われるため、前回のドライビングサイクルにおける故障情報を保持して書き込みを行わない、又は、最新の故障情報に更新すべく、今回のドライビングサイクルで故障情報を読み込んだ記憶領域を選定する。
【0035】
なお、終了印130Eに書き込み順序を表す情報を付したり、書き込み順序を表すカウンタを用いることで、故障情報の書き込みが正常に終了しなかった記憶領域のうち、バックアップ領域130Aへの故障情報の書き込みが一番古い記憶領域を選定してもよい。このようにすれば、直近に故障情報が書き込まれた記憶領域が選定されることがなく、より新しいデータを確実に保存しつつ、新たなデータを書き込む領域を選択することができる。
【0036】
かかる故障情報書込処理によれば、RAM120に保持されている故障情報は、素子に故障が発生していない記憶領域のバックアップ領域130Aに書き込まれる。このとき、バックアップ領域130Aに所定の消去データが書き込めるかを否かを介して、故障情報の書き込み対象である記憶領域に異常が発生しているか否かが判定される。そして、記憶領域に異常が発生していると判定された場合には、故障が発生していない他の記憶領域の空き領域130Fに素子異常情報が書き込まれる。
【0037】
また、RAM120に保持されている故障情報を記憶領域に書き込むとき、開始印130Bに開始コードが書き込まれ、バックアップ領域130Aに故障情報が書き込まれ、SUM130Dにチェックサムが書き込まれ、終了印130Eに終了コードが書き込まれる、という手順が実行される。このため、開始印130B、SUM130D及び終了印130Eの少なくとも1つを参照することで、例えば、バッテリ電圧の低下、故障情報の書き込みに時間がかかったなど、電子制御装置100がセルフシャットダウンするまでに故障情報の書き込みが正常に終了しなかったことを把握することができる。さらに、バックアップ領域130Aに故障情報を書き込むときに、故障情報のチェックサムが演算され、これがSUM130Dに書き込まれる。このため、後述する故障情報読込処理において、バックアップ領域130AのチェックサムとSUM130Dに格納されたチェックサムとを比較することで、記憶領域の素子に異常が発生しているか否かを判定することができる。
【0038】
なお、消去チェックにより記憶領域の全領域が消去されたと判定された場合、それまでに発生した素子異常は、例えば、ノイズ重畳により発生した一時的な異常であると考えられるため、記憶領域の空き領域130Fに格納された素子異常情報をクリア(削除)してもよい。
【0039】
図6は、イグニッションスイッチがONになったことを契機として、電子制御装置100のプロセッサ110が実行する故障情報読込処理の一例を示す。
【0040】
ステップ31では、プロセッサ110が、故障情報を読み込む対象となる記憶領域を選定する。即ち、プロセッサ110は、フラッシュメモリ130の各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印130B及び終了印130Eが正常である記憶領域のうち、バックアップ領域130Aに故障情報が書き込まれた時期が一番新しいものを選定する。
【0041】
ステップ32では、プロセッサ110が、変数SUMを0にリセットする。
【0042】
ステップ33では、プロセッサ110が、ステップ1で選定した記憶領域から、SUM130Dを読み込む。なお、記憶領域から読み込んだSUM130Dは、例えば、RAM120に一時的に記憶しておく。
【0043】
ステップ34では、プロセッサ110が、例えば、記憶領域のバックアップ領域130Aの最後までデータを読み出したか否かを介して、バックアップ領域130Aから故障情報の読み込みが完了したか否かを判定する。そして、プロセッサ110は、故障情報の読み込みが完了していないと判定すれば処理をステップ35へと進める一方(Yes)、故障情報の読み込みが完了したと判定すれば処理をステップ37へと進める(No)。
【0044】
ステップ35では、プロセッサ110が、記憶領域のバックアップ領域130Aから異常情報を1バイト読み込む。
【0045】
ステップ36では、プロセッサ110が、例えば、変数SUMに対して、異常情報の1バイトのデータ値を加算することで、変数SUMを更新した後、処理をステップ34へと戻す。
【0046】
ステップ37では、プロセッサ110が、ステップ33で読み込んだSUM130Dと変数SUMとを比較することで、バックアップ領域130Aから読み込んだ故障情報のチェックサムが正しいか否かを判定する。そして、プロセッサ110は、故障情報のチェックサムが正しいと判定すれば処理をステップ38へと進める一方(Yes)、故障情報のチェックサムが正しくないと判定すれば処理をステップ39へと進める(No)。
【0047】
ステップ38では、プロセッサ110が、記憶領域からカウンタ130C及び素子異常情報を読み込み、RAM120に退避させる。
【0048】
ステップ39では、プロセッサ110が、ステップ31で選定された記憶領域とは異なる記憶領域の空き領域130Fに、異常が発生した記憶領域を特定可能な情報を含んだ素子異常情報を書き込む。
【0049】
ステップ40では、プロセッサ110が、フラッシュメモリ130の各記憶領域について、例えば、書き込み順序を表すカウンタを参照し、開始印130B及び終了印130Eが正常である記憶領域のうち、バックアップ領域130Aに故障情報が書き込まれた時期が次に新しいものを選定した後、処理をステップ32へと戻す。
【0050】
かかる故障情報読込処理によれば、故障情報書込処理において故障情報が正常に書き込まれた記憶領域(素子に故障が発生していない記憶領域)のうち、故障情報の書き込みが一番新しい記憶領域から、故障情報が読み込まれる。ここで、記憶領域から故障情報を読み込むとき、読み込みデータのチェックサムが演算され、これと保持されているチェックサムとを比較することで、記憶領域に異常が発生しているか否かが再度判定される。そして、記憶領域に異常が発生していると判定された場合には、故障が発生していない他の記憶領域の空き領域130Fに素子異常情報が書き込まれる。また、記憶領域に異常が発生していると判定された場合には、記憶領域に記憶されている故障情報の確度が低いため、その前に書き込まれた記憶領域から故障情報を読み込むべく、故障情報の書き込みが次に新しい記憶領域から故障情報が読み込まれる。
【0051】
従って、かかる電子制御装置100によれば、故障が発生している記憶領域に対する故障情報の書き込み及び読み込みがなされることがなく、その記憶領域の使用が禁止され、故障情報などの蓄積への影響を抑制することができる。
【0052】
図7は、イグニッションスイッチがONになったことを契機として、電子制御装置100のプロセッサ110が所定時間ごとに繰り返し実行する故障報知処理の一例を示す。
【0053】
ステップ41では、プロセッサ110が、フラッシュメモリ130の各記憶領域の空き領域130Fを順次参照し、そこに格納されている素子異常情報を計数した素子異常回数が所定の閾値未満となっている、正常な記憶領域を抽出する。ここで、所定の閾値は、フラッシュメモリ130の記憶領域に固着などの故障が発生したことを確定するための閾値であって、例えば、フラッシュメモリ130の所定領域に予め記憶されている。なお、所定の閾値は、例えば、電子制御装置100に接続されたコンソールによって、任意の値に書き換えられるようにしてもよい。
【0054】
ステップ42では、プロセッサ110が、正常な記憶領域が1つであるか否かを判定する。そして、プロセッサ110は、正常な記憶領域が1つであると判定すれば処理をステップ43へと進める一方(Yes)、正常な記憶領域が2つ以上であると判定すれば処理を終了させる(No)。
【0055】
ステップ43では、プロセッサ110が、例えば、警告灯、ブザーなどの報知手段を作動させることで、運転者などに電子制御装置100のフラッシュメモリ130に故障が発生したことを報知する。
【0056】
かかる故障報知処理によれば、故障が発生していないフラッシュメモリ130の記憶領域の空き領域130Fを参照することで、他の記憶領域に関する素子異常回数が把握できる。また、この素子異常回数が所定の閾値未満の記憶領域、要するに、フラッシュメモリ130の素子に恒久的な故障が発生していない記憶領域が1つのみになると、2つのドライビングサイクルにおける故障情報が保持できなくなった旨が報知される。このため、運転者などは、フラッシュメモリ130に故障が発生したことを認識することができる。なお、3つ以上のドライビングサイクルにおける故障情報を保持する場合には、必要な記憶領域の数を確保できなくなったとき、又は、いずれかの記憶領域に故障が発生したと判定されたときに、故障情報が保持できなくなった旨を報知してもよい。
【0057】
次に、かかる電子制御装置100の作用及び効果について理解を容易ならしめることを目的とし、具体的な事例を想定した実施例について説明する。
実施例の前提条件として、フラッシュメモリ130には2つの記憶領域として、ブロック1(BL1)及びブロック2(BL2)が確保されているものとする。また、イグニッションスイッチがOFFになったときに、RAM120からブロック1に故障情報が書き込まれるものとする。
【0058】
イグニッションスイッチがOFFになると、図8に示すように、ブロック1に故障情報を書き込む準備として、ブロック1の全領域に所定の消去データを書き込むことで、ブロック1に書き込まれていた古い故障情報が消去される。ブロック1の消去に続いて消去チェックが行なわれ、同図に示すように、ある素子に固着が発生したことが検知されると、素子に故障が発生していないブロック2の空き領域130Fに、ブロック1の素子に異常が発生したことを表す素子異常情報が書き込まれる。そして、イグニッションスイッチがOFFになるたびに、このような処理が逐次実行され、ブロック2の空き領域130Fには、ブロック1の素子に異常が発生したことを表す素子異常情報が蓄積される。なお、ブロック1の素子に異常が検知された後、イグニッションスイッチがOFFになったときの処理でその異常が再度検知されない場合には、例えば、ノイズ重畳などによる一時的な異常であると考えられるため、ブロック2に蓄積された素子異常情報を消去してもよい。
【0059】
ブロック1の素子に固着が発生しても、故障情報の書き込みが最後まで行われたことから、図9に示すように、ブロック1の終了印130Eが書き込まれている。この場合、イグニッションスイッチがONになったときに実行される故障情報読込処理において、ブロック1から読み込んだ故障情報のチェックサムとSUM130Dに格納されていたチェックサムとが一致しないため、ブロック1に異常が発生していることが検知される。そして、故障が発生していないブロック2の空き領域130Fに、ブロック1に異常が発生していることを表す素子異常情報が書き込まれる。
【0060】
その後、ブロック2の空き領域130Fに書き込まれた素子異常情報を計数した計数値が所定の閾値以上であれば、その素子異常情報に係るブロック1が故障していると判定し、運転者などにその旨を通知すると共に、ブロック1の使用が禁止される。
【0061】
セルフシャットダウン中に故障情報の書き込みが正常に終了しなかった場合には、図10に示すように、開始印130Bが書き込まれているが、終了印130Eが書き込まれていない状態となるので、素子固着による異常と区別することができる。
【0062】
従って、図11に示すように、ブロック1に故障情報を書き込むときに、所定回数連続して異常が検知されると、その後の故障情報書込処理及び故障情報読込処理においてブロック1の使用が禁止される。なお、3つ以上のブロックについても、前述した処理で同様な作用及び効果が奏される。
【0063】
使用禁止となったブロック1については、所定のタイミングで故障情報の書き込みを再度実行し、その結果が問題なければ、素子異常情報を消去することで、その使用禁止を解除するようにしてもよい。ここで、所定のタイミングとしては、例えば、駐車中、渋滞などの低速走行中など、電子制御装置100の処理負荷が低い状態が適用できる。また、故障情報の書き込み回数は、1回に限らず、素子異常情報の計数値に応じた回数や2回以上の所定回数であってもよい。
【0064】
フラッシュメモリ130に2つの記憶領域のみが確保され、かつ、1回の異常発生により記憶領域の選定処理が行われる場合には、次のようにしてもよい。
イグニッションスイッチがOFFになったことを契機として、電子制御装置100のプロセッサ100が実行する故障情報書込処理において、今回のドライビングサイクルで故障情報を読み込んだ記憶領域とは異なる記憶領域を選定する。そして、消去チェックの結果、記憶領域が正常に消去されていれば、そのバックアップ領域130Aに故障情報を書き込む(このとき異常が発生してもそのままとする)。一方、消去チェックの結果、記憶領域が正常に消去されていなければ、今回のドライビングサイクルで更新された故障情報を破棄し、今回のドライビングサイクルで故障情報を読み込んだ記憶領域に素子故障情報を書き込む。
【0065】
イグニッションスイッチがONになったことを契機として、電子制御装置100のプロセッサ100が実行する故障情報読込処理において、2つの記憶領域を比較し、前回のドライビングサイクルで故障情報を書き込んだ記憶領域(第1の記憶領域)を特定する。また、第1の記憶領域とは異なる記憶領域(第2の記憶領域)の空き領域130Fを参照し、第1の記憶領域に消去異常が発生しているか否かを判定する。第1の記憶領域に消去異常が発生していれば、第2の記憶領域から故障情報を読み込む。一方、第1の記憶領域に消去異常が発生していなければ、第1の記憶領域から故障情報を読み込むと共に、チェックサムを利用して読込異常が発生しているか否かを判定する。第1の記憶領域に読込異常が発生していれば、今回のドライビングサイクルで更新された故障情報の書き込み先として、第1の記憶領域を内部的に予約しておく。
【0066】
そして、今回のドライビングサイクルで更新された故障情報を書き込む故障情報書込処理において、現在故障情報が正常に書き込まれている記憶領域を優先して選定すると共に、消去異常が発生した記憶領域に対して再度消去チェックを実行し、消去異常が再度発生しなければ選定対象とする一方、消去異常が再度発生すれば故障情報書込処理を中断する。また、故障情報書込処理において、内部的に予約しておいた記憶領域を選定し、この記憶領域に対して消去チェック及び書き込みを行なう。このように、記憶領域に読込異常が発生している間は、ドライビングサイクルごとに、古い故障情報を読み込み、読込異常が発生した記憶領域に対して故障情報の書き込みが繰り返し行なわれる。
【0067】
前回のドライビングサイクルで消去異常が発生した記憶領域が、今回のドライビングサイクルで故障情報の書き込み先として選定され、今回のドライビングサイクルで消去異常が発生せず、故障情報が正常に書き込めた場合、次回のドライビングサイクルでこの記憶領域から故障情報を正常に読み込むことができるので、これが最新の故障情報となる。他方の記憶領域、即ち、前回のドライビングサイクルの素子異常情報を記録した記憶領域は、次回の記憶領域として選定されて消去チェックが行なわれるので、自動的に素子異常情報が消去される。前回のドライビングサイクルで読込異常が発生した場合にも、今回のドライビングサイクルで読込異常が発生しなければ、その素子異常情報も自動的に消去される。
【0068】
ここで、前記実施形態及び前記実施例から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
【0069】
(イ)前記不揮発性メモリの記憶領域に電気的故障が検知された後、所定のタイミングで前記記憶領域に情報を再度書き込んだ結果、前記電気的故障が検知されなかった場合に、前記記憶領域の使用禁止を解除する、請求項1又は請求項2に記載の自動車用電子制御装置。
【0070】
この発明によれば、記憶領域の電気的故障が誤って検知されても、その後記憶領域の使用禁止が解除される可能性があるため、記憶領域の数を確保することができる。
【0071】
(ロ)前記不揮発性メモリの記憶領域に、前記情報のチェックサム、及び、前記情報の書き込みが終了したことを表す終了コードを更に書き込み、前記不揮発性メモリから情報を読み込むときに、前記終了コードが書き込まれていない場合には、前記不揮発性メモリの記憶領域に電気的故障が発生していないと判定する一方、前記終了コードが書き込まれかつ前記チェックサムが正しくない場合には、前記不揮発性メモリの記憶領域に電気的故障が発生していると判定する、請求項1、請求項2又は(イ)に記載の自動車用電子制御装置。
【0072】
この発明によれば、イグニッションスイッチがOFFになってから内部電源が遮断されるまでに、記憶領域に情報が書き込まれなかった場合を、記憶領域の電気的故障と判定することを回避できる。
【0073】
(ハ)前記不揮発性メモリに情報を書き込むときに、前記不揮発性メモリの記憶領域に所定の消去データを書き込んで消去した後、前記記憶領域の消去データを確認する、請求項1、請求項2、(イ)又は(ロ)に記載の自動車用電子制御装置。
【0074】
この発明によれば、消去データの書き込み及び確認を通して、不揮発性メモリの記憶領域に電気的故障が発生したか否かを判定することができる。
【符号の説明】
【0075】
100 電子制御装置
110 プロセッサ
120 RAM
130 フラッシュメモリ
130A バックアップ領域
130B 開始印
130C カウンタ
130D SUM
130E 終了印
130F 空き領域
【特許請求の範囲】
【請求項1】
イグニッションスイッチがOFFになった後、所定時間経過したときに内部電源を遮断するセルフシャットダウン機能と、不揮発性メモリと、を有し、前記イグニッションスイッチがOFFになってから内部電源が遮断されるまでに、前記不揮発性メモリに確保された複数の記憶領域の中から選定した1つの記憶領域に情報を書き込む一方、前記イグニッションスイッチがONになったときに、前記不揮発性メモリの記憶領域から情報を読み込む自動車用電子制御装置において、
前記不揮発性メモリに対する情報の読み込み時に、前記不揮発性メモリの記憶領域の電気的故障を検知する手段と、
前記電気的故障が検知されたときに、前記電気的故障に係る記憶領域の故障情報を記憶する手段と、
前記故障情報を参照して、電気的故障が検知された不揮発性メモリの記憶領域の使用を禁止する手段と、
を有する、自動車用電子制御装置。
【請求項2】
前記不揮発性メモリの記憶領域の電気的故障を検知する手段は、前記記憶領域に対する情報の読み込みに際して、所定回数連続して異常が発生したときに、前記記憶領域に電気的故障が発生したと検知する、請求項1に記載の自動車用電子制御装置。
【請求項1】
イグニッションスイッチがOFFになった後、所定時間経過したときに内部電源を遮断するセルフシャットダウン機能と、不揮発性メモリと、を有し、前記イグニッションスイッチがOFFになってから内部電源が遮断されるまでに、前記不揮発性メモリに確保された複数の記憶領域の中から選定した1つの記憶領域に情報を書き込む一方、前記イグニッションスイッチがONになったときに、前記不揮発性メモリの記憶領域から情報を読み込む自動車用電子制御装置において、
前記不揮発性メモリに対する情報の読み込み時に、前記不揮発性メモリの記憶領域の電気的故障を検知する手段と、
前記電気的故障が検知されたときに、前記電気的故障に係る記憶領域の故障情報を記憶する手段と、
前記故障情報を参照して、電気的故障が検知された不揮発性メモリの記憶領域の使用を禁止する手段と、
を有する、自動車用電子制御装置。
【請求項2】
前記不揮発性メモリの記憶領域の電気的故障を検知する手段は、前記記憶領域に対する情報の読み込みに際して、所定回数連続して異常が発生したときに、前記記憶領域に電気的故障が発生したと検知する、請求項1に記載の自動車用電子制御装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−226674(P2012−226674A)
【公開日】平成24年11月15日(2012.11.15)
【国際特許分類】
【出願番号】特願2011−95660(P2011−95660)
【出願日】平成23年4月22日(2011.4.22)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】
【公開日】平成24年11月15日(2012.11.15)
【国際特許分類】
【出願日】平成23年4月22日(2011.4.22)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】
[ Back to top ]