(57)【要約】【課題】故障診断回数等を記録する自動車制御装置の有する、不揮発性記憶装置の容量を抑え、かつ１セルあたりの書き込み回数を抑える。【解決手段】更新の度に１だけ値を増やすようになっている複数の計数情報をＥＥＰＲＯＭ３に書き込む計数情報の書き込みにおいて、計数情報を更新するときに、この更新する旨の情報である更新情報をＥＥＰＲＯＭ３の所定の更新情報領域に書き込む段階（ステップ２０６）と、書き込まれた更新情報を複数個読み出し、読み出した複数個の更新情報にもとづいて、更新後の計数情報をＥＥＰＲＯＭ３に書き込む段階（ステップ２０５）と、を備え、また更新情報のそれぞれは、同時期に更新される複数の計数情報の識別子をそれぞれ１ビットがオンである状態として含む。【選択図】        図４
2004152387.tif 000002
【特許請求の範囲】
【請求項１】
更新の度に所定数だけ値を増やすようになっている複数の計数情報を不揮発性記憶装置に書き込む計数情報の書き込み方法であって、
前記計数情報を更新するときに、この更新する前記計数情報の識別子を有する更新情報を前記不揮発性記憶装置の所定の更新情報領域に書き込む段階と、
書き込まれた前記更新情報を複数個読み出し、読み出した前記複数個の前記更新情報に含まれる前記識別子にもとづいて、更新後の前記計数情報を前記不揮発性記憶装置に書き込む段階と、を備え、
前記更新情報のそれぞれは、同時期に更新される前記複数の計数情報の識別子を含むようになっていることを特徴とする計数情報の書き込み方法。
【請求項２】
前記更新情報の各ビットの特定の状態を、前記同時期に更新される各計数情報の識別子とすることを特徴とする請求項１に記載の計数情報の書き込み方法。
【請求項３】
前記所定の更新情報領域に空き領域がないときに、前記更新後の前記計数情報を前記不揮発性記憶装置に書き込み、前記更新情報領域の全てを空き状態にすることを特徴とする請求項１または２のいずれか１つに記載の計数情報の書き込み方法。
【請求項４】
更新の度に所定数だけ値を増やすようになっている複数の計数情報を不揮発性記憶装置に書き込む計数情報の書き込みプログラムであって、
コンピュータを、
前記計数情報を更新するときに、この更新する前記計数情報の識別子を有する更新情報を前記不揮発性記憶装置の所定の更新情報領域に書き込む手段、および、
書き込まれた前記更新情報を複数個読み出し、読み出した前記複数個の前記更新情報に含まれる前記識別子にもとづいて、更新後の前記計数情報を前記不揮発性記憶装置に書き込む手段、として機能させ、
前記更新情報のそれぞれは、同時期に更新される前記複数の計数情報の識別子を含むようになっていることを特徴とする計数情報の書き込みプログラム。
【請求項５】
前記更新情報の各ビットの特定の状態を、前記同時期に更新される各計数情報の識別子とすることを特徴とする請求項４に記載の計数情報の書き込みプログラム。
【請求項６】
前記所定の更新情報領域に空き領域がないときに、前記更新後の前記計数情報を前記不揮発性記憶装置に書き込み、前記更新情報領域の全てを空き状態にすることを特徴とする請求項４または５のいずれか１つに記載の計数情報の書き込みプログラム。
【請求項７】
更新の度に所定数だけ値を増やすようになっている複数の計数情報を不揮発性記憶装置に書き込む計数情報の書き込み装置であって、
前記計数情報を更新するときに、この更新する前記計数情報の識別子を有する更新情報を前記不揮発性記憶装置の所定の更新情報領域に書き込む手段と、
書き込まれた前記更新情報を複数個読み出し、読み出した前記複数個の前記更新情報に含まれる前記識別子にもとづいて、更新後の前記計数情報を前記不揮発性記憶装置に書き込む手段と、を備え、
前記更新情報のそれぞれは、同時期に更新される前記複数の計数情報の識別子を含むようになっていることを特徴とする計数情報の書き込み装置。
【請求項８】
前記更新情報の各ビットの特定の状態を、前記同時期に更新される各計数情報の識別子とすることを特徴とする請求項７に記載の計数情報の書き込み装置。
【請求項９】
前記所定の更新情報領域に空き領域がないときに、前記更新後の前記計数情報を前記不揮発性記憶装置に書き込み、前記更新情報領域の全てを空き状態にすることを特徴とする請求項７または８のいずれか１つに記載の計数情報の書き込み装置。
【請求項１０】
車両に搭載された車載機器を制御し、所定の条件が満たされた場合に前記車載機器における診断対象の故障診断を実施し、前記車両の１ドライビングサイクル中、更新の度に所定数だけ値を増やすようになっている計数情報である運転回数を、前記車両が所定の運転状態となったときに１回分だけ更新すると共に、同じく計数情報である故障診断回数を前記故障診断が実施されたときに１回分だけ更新する車載電子制御装置において、
前記計数情報を更新するときに、この更新する前記計数情報の識別子を有する更新情報を前記不揮発性記憶装置の所定の更新情報領域に書き込む段階と、
書き込まれた前記更新情報を複数個読み出し、読み出した前記複数個の前記更新情報に含まれる前記識別子にもとづいて、更新後の前記計数情報を前記不揮発性記憶装置に書き込む段階と、を備え、
前記更新情報のそれぞれは、同時期に更新される前記複数の計数情報の識別子を含むようになっていることを特徴とする計数情報の書き込み方法。
【請求項１１】
車両に搭載された車載機器を制御し、所定の条件が満たされた場合に前記車載機器における診断対象の故障診断を実施し、また更新の度に所定数だけ値を増やすようになっている複数の計数情報を不揮発性記憶装内に有し、また前記車両の１ドライビングサイクル中、計数情報である運転回数を、前記車両が所定の運転状態となったときに１回分だけ更新すると共に、計数情報である故障診断回数を、前記故障診断が実施されたときに１回分だけ更新する車載電子制御装置であって、
前記計数情報を更新するときに、この更新する前記計数情報の識別子を有する更新情報を前記不揮発性記憶装置の所定の更新情報領域に書き込む手段と、
書き込まれた前記更新情報を複数個読み出し、読み出した前記複数個の前記更新情報に含まれる前記識別子にもとづいて、更新後の前記計数情報を前記不揮発性記憶装置に書き込む手段と、を備え、
前記更新情報のそれぞれは、同時期に更新される前記複数の計数情報の識別子を含むようになっていることを特徴とする車載電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、自動車用制御装置等における、更新の度に所定数だけ値を増やすようになっている計数情報を不揮発性記憶装置に書き込む方法およびプログラムに関するものである。
【０００２】
【従来の技術】
一般に、ＥＥＰＲＯＭ等の書き込み可能な不揮発性記憶装置には、１セル（書き込み単位）当たりの書き込み回数に上限があり、この書き換え保証回数を超えて書き込みが行われると、書き込まれた記憶内容の信頼性は全く保証の限りでなくなる。
【０００３】
例えば、車両に搭載され、エンジン等の故障情報を検知して記憶するＯＢＤ（Ｏｎ  Ｂｏａｒｄ  Ｄｉａｇｎｏｓｉｓ）機能を備えるＥＣＵは、故障情報を記憶するためのＥＥＰＲＯＭを通常有している。このＯＢＤに対する制約として、ＣＡＲＢ（カリフォルニア待機資源保護局）によるＯＢＤ２の法規がある。ＯＢＤ２は、エンジンの異常で有毒な排気ガスが放出されるのを防ぐことを目的とし、米国内で販売する全ての車両にエンジンの排気ガス生成に関するシステムが正常に作動しているかを監視する機能を備えるＥＣＵの搭載を義務づける法規制である。
【０００４】
例えば、ＯＢＤ２のＲａｔｅＢａｓｅモニタ法では、サービス０９のＩＰＴ（Ｉｎ−ｕｓｅ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｔｒａｃｋｉｎｇ）に関連して、下記の式で定義されるモニタ頻度を継続的に記憶しておく必要がある。
【０００５】
モニタ頻度＝モニタリング実施回数／運転回数
なお、モニタ頻度は、故障診断を実施した頻度であり、触媒コンバータ、フューエルエバポレーションシステム、酸素センサ等といった複数の項目の診断についてそれぞれ存在する。そして、運転回数（以下、分母と記す）は、その項目について法規で定められた所定の走行条件が満たされたときにインクリメントされるデータである。また、モニタリング実施回数（以下、分子と記す）は、その項目について自動車メーカで定めた故障診断実施条件が満たされて、正常または異常の判定が終了した時点で、インクリメントされるデータである。このような、更新の度に所定数だけ値を増やすようになっているデータである計数情報は、非常に更新頻度が高い。したがって、このような計数情報を不揮発性記憶装置に記憶するようにすると、車両の耐用年数以内に、計数情報の書き換え回数が不揮発性記憶装置の書き換え保証回数を超えてしまう恐れがある。
【０００６】
この問題を解決する手段として、特許文献１のように、１つの書き込みデータに対して不揮発性記憶装置上にエリアをｎ組（ｎは２以上の整数）用意し、１つのエリアで書き込み回数が上限値に達したら、書き込み位置を別のエリアに移すようにする技術がある。これによって、１つのセル当たりの書き込み回数を抑えることで、書き換え保証回数を実質上ｎ倍にすることが可能になる。
【０００７】
【特許文献１】
特開２０００−１８２３８５号公報
【０００８】
【発明が解決しようとする課題】
しかし、上記特許文献１のような技術では、記録するデータ数のｎ倍の記憶容量が不揮発性記録装置に求められ、コスト高にもなるという問題がある。
【０００９】
本発明は上記点に鑑みて、計数情報を書き込むようになっている不揮発性記憶装置の容量を抑え、かつ１セルあたりの書き込み回数を抑えることを目的とする。
【００１０】
【課題を解決するための手段】
上記目的を達成するための請求項１に記載の発明は、更新の度に所定数だけ値を増やすようになっている複数の計数情報を不揮発性記憶装置に書き込む計数情報の書き込み方法であって、計数情報を更新するときに、この更新する計数情報の識別子を有する更新情報を不揮発性記憶装置の所定の更新情報領域に書き込む段階と、書き込まれた更新情報を複数個読み出し、読み出した複数個の更新情報に含まれる識別子にもとづいて、更新後の計数情報を不揮発性記憶装置に書き込む段階と、を備え、更新情報のそれぞれは、同時期に更新される複数の計数情報の識別子を含むようになっていることを特徴とする計数情報の書き込み方法である。
【００１１】
これによって、所定の更新情報領域に書き込まれた複数の更新情報をまとめた上で、更新後の計数情報を不揮発性記憶装置に書き込む。計数情報は、更新の度に所定数だけ値を増やすようになっているので、更新情報が更新される計数情報の識別子を有してさえいれば、その計数情報がどのように更新されるかがわかる。このように、複数の更新情報をまとめて更新後の計数情報を書き込むので、計数情報を書き込むようになっている不揮発性記憶装置の１セルあたりの書き込み回数を抑えることが可能となる。
【００１２】
また、更新情報のそれぞれは、同時期に更新される複数の計数情報の識別子を含むようになっているので、更新情報のそれぞれが単一の計数情報の識別子を含める場合にくらべ、更新情報そのものの書き込み回数が減る。また、所定の更新領域が、不揮発性記憶装置に書き込まれる計数情報に未だ反映されていない更新情報で一杯になるのが遅いので、更新情報領域の容量を抑えることができる。
【００１３】
これらのことから、不揮発性記憶装置の容量を抑え、かつ１セルあたりの書き込み回数を抑えることができる。
【００１４】
また、請求項２の発明は、請求項１に記載の計数情報の書き込み方法において、更新情報の各ビットの特定の状態を、同時期に更新される各計数情報の識別子とすることを特徴とする。
【００１５】
なお、各ビットの特定の状態とは、各ビットのオンおよびオフのいずれか特定の状態のことである。
【００１６】
また、請求項３に記載の発明は、請求項１または２のいずれか１つに記載の計数情報の書き込み方法において、所定の更新情報領域に空き領域がないときに、更新後の計数情報を不揮発性記憶装置に書き込み、更新情報領域の全てを空き状態にすることを特徴とする。
【００１７】
また、請求項４〜６の発明は、それぞれ請求項１〜３の発明をコンピュータプログラムとして実現する発明である。
【００１８】
また、請求項７〜９の発明は、それぞれ請求項１〜３の発明を計数情報の書き込み装置として実現する発明である。
【００１９】
また、請求項１０に記載の発明は、車両に搭載された車載機器を制御し、所定の条件が満たされた場合にこの車載機器における診断対象の故障診断を実施し、この車両の１ドライビングサイクル中、計数情報である運転回数を車両が所定の運転状態となったときに１回分だけ更新すると共に、同じく計数情報である故障診断回数を故障診断が実施されたときに１回分だけ更新する車載電子制御装置において、計数情報を更新するときに、この更新する前記計数情報の識別子を有する更新情報を不揮発性記憶装置の所定の更新情報領域に書き込む段階と、書き込まれた更新情報を複数個読み出し、読み出した複数個の更新情報に含まれる識別子にもとづいて、更新後の計数情報を不揮発性記憶装置に書き込む段階と、を備え、更新情報のそれぞれは、同時期に更新される複数の計数情報の識別子を含むようになっていることを特徴とする計数情報の書き込み方法である。
【００２０】
これによって、車載電子制御装置において、請求項１と同等の効果を得ることができる。
【００２１】
また、請求項１１の発明は、請求項１０の発明を車載電子制御装置として実現する発明である。
【００２２】
【発明の実施の形態】
（第１実施形態）
図１に、本発明の一実施形態に係るエンジンＥＣＵ（車載電子制御装置、以下の記載はＥＣＵとする）１の構成を示す。エンジンＥＣＵ１は、車両のエンジンの状態を検知し、またエンジンの作動の制御を行うと共に、車両の排気ガスの清浄化に寄与する各種車載機器の動作状態をチェックするための装置である。このエンジンＥＣＵ１は、ＣＰＵ２、ＥＥＰＲＯＭ３、ＲＯＭ４、およびＲＡＭ５を備えている。
【００２３】
このエンジンＥＣＵ１は、前述したＣＡＲＢ・ＯＤＢ２のＲａｔｅＢａｓｅモニタ法で定められている故障診断対象項目の各々について、その項目の故障診断実施条件が成立した場合には、該当する項目についての故障診断処理を実施して正常または異常の判定を行う。そして更にエンジンＥＣＵ１は、上記した故障診断対象項目について、前述したモニタ頻度を表す分子（モニタリング実施回数）と分母（運転回数）のデータを、ＥＥＰＲＯＭ３を用いて継続的に保存、更新する。
【００２４】
またこのエンジンＥＣＵ１には、図示しないツールと呼ばれる外部診断装置を図示しないダイアグ用コネクタを介して接続可能となっている。そして工場、カーディーラ等における診断において、エンジンＥＣＵ１は、ツールからの故障診断に関する出力要求に応じたデータ（例えば上記した分子、分母）をこのツールに出力するようになっている。
【００２５】
ＣＰＵ２は、書き換え不能な不揮発性メモリであるＲＯＭ４に書き込まれているプログラムを読み出し、そのプログラムの処理内容を実行し、この実行の段階において必要があればＥＥＰＲＯＭ３および揮発性メモリであるＲＡＭ５に対して情報の読み出し／書き込みを行う。またＣＰＵ２は動作時に、イグニッション線を介してイグニッションキーの切り替わりを検知し、車速センサから車速情報の入力を受け、外気温センサから外気温の情報の入力を受け、気圧センサから気圧値の入力を受け、また図示しない各種センサ類から、アイドル信号、クランク角等の車両に関する各種情報の入力を受ける。またＣＰＵ２は、後述する触媒バンク、２次エア装置、エバポ装置、Ｏ２センサ（図示せず）等の排気ガス清浄化に寄与する装置から、それらが正常に動作しているかどうかをチェックするために情報の入力を受ける。またＣＰＵ２は動作時に、必要に応じてエンジンの点火装置や噴射装置に制御信号を出力する。
【００２６】
ＥＥＰＲＯＭ３は、電気的に書き換え可能な不揮発性記憶装置である。一般に不揮発性記憶装置には、同一のセルへの書き込み回数に上限がある。この上限を書き換え保証回数という。この書き換え保証回数を超えて書き込みが行われると、書き込まれた記憶内容の信頼性は全く保証の限りでなくなる。本実施形態のＥＥＰＲＯＭでは、この書き換え保証回数が１０万回であるとする。
【００２７】
なお、「あるデータをＥＥＰＲＯＭ３のある領域に書き込む」という表現と「ＥＥＰＲＯＭ３のある領域をあるデータに書き換える」という表現は、同じ動作の別の表現形態であって、「書き込む」と「書き換える」という表現の間には、技術上の差違はない。
【００２８】
図２に、このＥＥＰＲＯＭ３のメモリ構成を示す。このＥＥＰＲＯＭ３は、４３バイトの記憶領域を備えている。各バイトは、＃１から＃４３までのアドレスが順に付与されることで区別される。
【００２９】
アドレス＃１、＃２には、このＥＥＰＲＯＭ３に書き込まれた全情報をエンジンＥＣＵ１の外部から取得するスキャンツールとの通信用のデータが書き込まれている。また＃３には、ＥＥＰＲＯＭ３に書き込まれるデータを、その目的、用途によって項目別に分けた場合の、その項目数が書き込まれている。＃１〜＃３のデータは、エンジンＥＣＵ１の工場出荷以降書き換えられることが全くないか、あるいはほとんどないものなので、エンジンＥＣＵ１の耐用年数内に書き換え回数がＥＥＰＲＯＭ３の書き換え保証回数の上限を超えることは、通常の使用ではあり得ない。
【００３０】
＃４以降の記憶領域には、連続する２バイト（１６ビット）で１つの項目を表現するデータが１６個書き込まれるようになっている。
【００３１】
＃４〜＃３５までは、計数情報が記録される。計数情報とは、更新の度に所定数だけ値を増やすようになっている情報のことである。本実施形態の計数情報は、更新の度に１だけ値を増やすようになっている。例えば、アドレス＃６、＃７で指定される項目の計数情報は、車両のイグニッションキーがオンとなる度に１つ値が増えるＩＧカウンタ値である。本実施形態においては、このＩＧカウンタ値が最も更新頻度が高い。
【００３２】
このＩＧカウンタ値のように、各計数情報は１回分だけ更新されるための条件を有している。本明細書では、この条件をカウント条件と呼ぶ。すなわち、ＩＧカウンタ値のカウント条件は、イグニッションキーがオンとなったことである。なお、イグニッションキーがオンとなってからオフとなるまでの期間は、トリップと呼ばれる。
【００３３】
＃４、＃５に記録されているのは、一般分母と呼ばれる計数情報である。この一般分母のカウント条件は、車両位置の高度が８０００フィート未満、外気温が２０°Ｆ以上、エンジン始動後累積時間が６００秒以上、車速＞２５マイル／秒である時間が３００秒以上、およびアイドル時間が連続３０秒以上という条件を全て満たしていることである。以下、このカウント条件を条件Ａと記す。カウント条件Ａは、車両がある程度走行した回数を一般分母に書き込むための条件であると言える。したがって、この一般分母は運転回数であると言える。
【００３４】
＃８、＃９には、触媒バンク１（分子）と呼ばれる計数情報が記録される。触媒とは、車両の排気ガスからＣＯ、ＮＯｘ等の有害物質をある程度吸着除去することで、排気ガスの浄化を行うものである。触媒バンク１（分子）のカウント条件は、この触媒の有害物質の吸着をモニタする装置が安定的に作動することである。
【００３５】
＃２８、２９には、２次エア（分子）と呼ばれる計数情報が記録される。２次エアとは、触媒による排気ガスの浄化の効率を高めるために、触媒に送る前の排気ガスに車外の空気を混ぜ合わせる装置である。２次エア（分子）のカウント条件は、この２次エアの装置が正常に作動しているか否かをモニタする装置が安定的に作動することである。
【００３６】
＃３２、＃３３にはエバポ（分子）と呼ばれる計数情報が記録される。エバポとは、蒸発による燃料漏れを検知する装置である。エバポ（分子）のカウント条件は、このエバポが安定的に作動することである。
【００３７】
なお、これらの各カウント条件は、１トリップで最大１度しか満たされないようになっている。すなわち、各カウント条件は、１トリップ内で一度満たされれば、同じトリップ内で再度満たされても、それをもってカウント条件が満たされるということにはしないようになっている。
【００３８】
＃１０、＃１１には触媒バンク１（分母）と呼ばれる計数情報が記録される。この計数情報のカウント条件は、条件Ａと同じである。
【００３９】
＃３０、＃３１には２次エア（分母）と呼ばれる計数情報が記録される。この計数情報のカウント条件は、条件Ａに加え、２次エアの装置が１０秒以上作動していることである。
【００４０】
＃３４、＃３５にはエバポ（分母）と呼ばれる計数情報が記録される。この計数情報のカウント条件は、条件Ａに加え、エンジン始動後外気温が４０°Ｆ以上９５°Ｆ未満が１０００秒以上続き、かつエンジン始動時の水温が４０〜９５°Ｆで外気温との差が１２°Ｆ以下であることである。
【００４１】
なお、図２中には示していないが、ＥＥＰＲＯＭ３中にはプライマリＯ２センサ（分子）およびプライマリＯ２センサ（分母）と呼ばれる計数情報も記録される。プライマリＯ２センサとは、点火のための混合気中の酸素量を計測する装置である。プライマリＯ２センサ（分母）のカウント条件は条件Ａと同じである。
【００４２】
プライマリＯ２センサ（分子）のカウント条件は、このプライマリＯ２センサが安定的に作動する条件下で、センサが正常に作動している、あるいはしていないことを判別できることである。具体的には、例えば、
（ａ）エンジン始動後、十分な時間が経過していること、
（ｂ）エンジン始動後、一定以上の速度での走行をした後であること、
（ｃ）アイドリング中であること、
このａ）〜ｃ）の条件下で一定時間センサ出力をモニタしたことをカウント条件とすることができる。
【００４３】
なお、これら分母データおよび分子データは、両方共に、自動車のドライビングサイクル、例えばイグニッションスイッチがオンされてオフされるまでの間（すなわち、エンジンＥＣＵ１に動作電源が投入されてその動作電源が遮断されるまでの１回の動作期間中）に、または「エンジン始動されて、その後エンジン停止されて、更に次のエンジン停止」までの間、１回だけインクリメントされるか、あるいはインクリメントされずにそのままの値を維持するかの何れかである。よって、各項目の分母と分子は、１インクリメントされると、その回の自動車の運転期間中では、それ以上値が更新されることはない。
【００４４】
また、同時期に複数の計数情報についてのカウント条件が成立している場合もありうる。以下、この＃３〜＃３５までの記憶領域を項目領域と記す。
【００４５】
また、＃３６〜＃４３までの記憶領域には、各２バイトから成る更新情報１、更新情報２、更新情報３、および更新情報４が書き込まれるようになっている。以下、この＃３６〜＃４３までの記憶領域を更新情報領域と記す。このように、ＥＥＰＲＯＭ３内の更新情報領域の位置はあらかじめ定められている。
【００４６】
以下、簡単のために、通常書き換えられることのないＥＥＰＲＯＭ３中の＃１〜＃３の領域は省略して、エンジンＥＣＵ１の作動について説明する。
【００４７】
そのようなＥＥＰＲＯＭ３の項目領域および更新情報領域のメモリ構成を図３に示す。２バイトのワード長のデータスロットが項目領域にｍ個、更新情報領域にｎ個、合わせてｍ＋ｎ個ある。ただし、ｍは１６を超えない整数であり、本実施形態においては、上述した通りｍは１６であり、ｎは４である。
【００４８】
項目領域はｍ個のデータスロットを有しており、それぞれのデータスロットが１項目に対応している。各々のデータスロットには、更新の度に所定数だけ値を増やすようになっている計数情報が書き込まれる。本実施形態では、この所定数は１である。
【００４９】
本実施形態においては、上記したカウント条件が成立したとき、直ちに更新された当該計数情報を所定の項目に書き込むのではなく、原則的に更新する旨の情報である更新情報を更新情報領域の１つのスロットに書き込むようになっている。そして、更新情報が一定数書き込まれた段階で、これら書き込まれた複数の更新情報に基づいて、計数情報の更新後の値を所定の項目に書き込むようになっている。
【００５０】
これを実現するためのＣＰＵ２の動作を示す処理ルーチンを図４に示す。
【００５１】
このルーチンは、エンジンＥＣＵ１の起動直後に実行が開始され、エンジンＥＣＵ１の作動が停止するまで実行されつづける。
【００５２】
なお、このＣＰＵ２は、このルーチンと同時に並行して他の処理も実行するようになっている。他の処理とは、エンジン噴射や点火タイミングの制御、外気温センサ、車速センサ、アイドルセンサ等からの入力に基づいた所定の条件すなわちカウント条件の判定、およびカウント条件が満たされた時の触媒、２次エア装置等の故障診断等である。このカウント条件の判定においては、例えば条件Ａの判定の場合には、気圧センサから入力された気圧値と、ＲＯＭに記載されている気圧と高度との対応表に基づいて車両位置の高度を導き出し、外気温センサからの入力によって外気温を取得し、車速センサからの入力によって車速を取得する等によって、必要な情報を集めた上で判定を行う。
【００５３】
以下、この図４の処理について説明する。ステップ２０１では、更新情報の作成を行う。この更新情報作成の処理の詳細を図５に示す。この更新情報作成処理は、ループ３０１内の処理を、項目数すなわち計数情報の数ｍだけ繰り返し、それぞれの繰り返しにおいて項目番号ｉを１からｍまで１づつ変化させ、その繰り返しによって最終的に得た更新情報をステップ３０５で戻り値として返すような関数の形態をとっている。
【００５４】
ステップ３０２では、ｉ番目の計数情報についての上記したカウント条件が成立するという条件式を評価する。
【００５５】
カウント条件が成立していなければ、評価値は偽（Ｆａｌｓｅ）となり、ループの１サイクルが終了する。
【００５６】
カウント条件が成立していれば、評価値は真（Ｔｒｕｅ）となり、処理はステップ３０３に進む。ステップ３０３では、更新情報に項目番号ｉをセットする。ここで、項目番号ｉのセットとは、更新情報の最上位ビットからｉ番目のビットをオンにすることである。従って、更新情報の最上位ビットからｉ番目のビットの、オンであるという状態が、更新される計数情報の識別子であると言える。つまり、更新情報のそれぞれは、更新される計数情報の識別子を含んでおり、またその識別子とは、更新情報の各ビットの特定の状態すなわちオンである状態となっている。
【００５７】
ステップ３０３が終了すると、ループの１サイクルが終了する。
【００５８】
このような処理を項目番号ｉの１からｍまでの範囲について繰り返すことで、更新される計数情報に対応するビットがオン、その他のビットがオフとなる更新情報が生成され、ループが終了する。本実施形態においては、ｍ＝１６、更新情報が２バイト（１６ビット）データとなっているので、更新情報のビット数と計数情報の数が合致する。このように、更新情報は、同時期に更新される複数の計数情報の識別子を含むようになっている。
【００５９】
そして、ステップ３０５では生成された更新情報をｍビットの戻り値として図４の処理ルーチンに返す。
【００６０】
図４において、更新情報作成処理が更新情報を返すと、処理はステップ２０２に進む。ステップ２０２では、更新情報があるという条件式の評価および条件分岐を行う。この評価は、ステップ２０１の戻り値が０であるか否かによって行う。戻り値が０であれば、評価値は偽となり、処理はステップ２０２の更新情報作成処理に戻る。戻り値が０以外であれば、評価値は真となり、処理はステップ２０３に進む。
【００６１】
ステップ２０３では、更新情報格納位置検索を行う。更新情報格納位置検索とは、更新情報領域内の空き領域、すなわち更新情報を格納する（書き込む）ことのできる位置を検索する処理である。具体的には、１〜ｎ番目までのデータスロットを順番に読み出し、その中で全ビットの値が０となっているものがあれば空き領域があるとする。すなわち、本実施形態においては、空き領域とは、更新情報領域内で全ビットの値が０となっているデータスロットをいう。
【００６２】
そして、ステップ２０４で、空き領域がない、すなわち更新情報格納位置がないという条件式の評価および条件分岐を行う。格納位置があれば、評価値は偽となり、処理はステップ２０６に進む。このステップ２０６では、ステップ２０１で作成された更新情報を、更新情報領域中の空いているデータスロットに書き込む。
【００６３】
一例として、図６に、作成された更新情報が３番目の更新情報のデータスロットに書き込まれる前（Ａ）と後（Ｂ）の状態のＥＥＰＲＯＭ３のメモリ構成図を示す。
【００６４】
格納位置が無ければ評価値は真となり、処理はステップ２０５に進み、全項目カウンタ値更新処理を行う。一例として、図７に更新情報の格納位置が無い状態の状態のＥＥＰＲＯＭ３のメモリ構成図を示す。
【００６５】
全項目カウンタ値更新処理の詳細を図８に示す。この全項目カウンタ値更新処理は、１〜ｎ番目の更新情報にもとづいて１〜ｍ番目の各項目の計数値を更新し、それを対応するデータスロットに書き込む処理のループ５０１と、更新情報の値を全て０にクリアする処理であるステップ５０７から成る。
【００６６】
ループ５０１内では、項目番号ｉを１からｍまで１つづつ変化させながら、このループ内の処理をｍ回繰り返す。このｉ番目の繰り返しにおいて、ステップ５０２では、項目ｉのカウンタ値をＲＡＭ５に読み出す。そしてループ５０３では、数値ｊを１からｎ＋１まで１づつ変化させながら、このループ内の処理をｎ＋１回繰り返すことで、項目ｉのカウンタ値の識別子を有している更新情報の数だけ、読み出した項目ｉのカウンタ値を増加させる。なお、直前にステップ２０１で作成した更新情報も、ｎ＋１番目の更新情報として、項目ｉのカウンタ値の増加の計算に含める。
【００６７】
具体的には、ループ５０３のｊ番目の繰り返しにおいて、ステップ５０４では、ｊ番目の更新情報（更新情報ｊ）を読み出し、この更新情報が項目ｉのカウンタ値の識別子を有しているという条件式の評価および条件分岐を行う。この識別子を有していなければ、評価値は偽となり、ループ５０３のｊ番目の繰り返しが終了する。この識別子を有していれば、評価値は真となり、処理はステップ５０５に進む。そしてステップ５０５では、ステップ５０２で読み出した項目ｉのカウンタ値に１を加算し、その後ループ５０３のｊ番目の繰り返しが終了する。
【００６８】
ループ５０３の繰り返しが終了すると、処理はステップ５０６に進み、項目ｉのカウンタ値に更新があったという条件式の評価および条件分岐を行う。この条件式は、ＲＡＭ５中の項目ｉのカウンタ値と、ＥＥＰＲＯＭ３中の項目ｉのカウンタ値とが異なっているという条件式と同値である。更新がなかったなら、評価値は偽となり、ループ５０１のｉ番目の繰り返しが終了する。更新があったなら、評価値は真となり、処理はステップ５０７に進み、ＲＡＭ５中の項目ｉのカウンタ値をＥＥＰＲＯＭ３の項目ｉの位置に書き込む。そしてループ５０１のｉ番目の繰り返しが終了する。
【００６９】
ループ５０１の繰り返しが終了すると、処理はステップ５０７に進み、ＥＥＰＲＯＭ３中の更新情報領域の全てに０を書き込む。これによって、ＥＥＰＲＯＭ３の更新情報領域は全て空き状態となる。そして全項目カウンタ値更新処理が終了する。
【００７０】
一例として、図９に、図７に示した状態の後、各項目に更新された後の計数情報が書き込まれ、更新情報が全て空き状態となったときのＥＥＰＲＯＭ３のメモリ構成図を示す。各項目中の括弧内の数字は、更新によるその項目の値の増分を示している。
【００７１】
全項目カウンタ値更新処理が終了すると、処理は図４のステップ２０１に戻る。
【００７２】
以上のようなＣＰＵ２のＥＥＰＲＯＭ３に対する書き込みの手順をまとめると、以下の通りになる。
（１）いずれかの項目のカウント条件が成立しているとき、更新情報を作成する（２）作成した更新情報を書き込む位置を更新情報領域から探し、書き込み位置があった場合は以下の（ａ）を、書き込み位置がない場合は以下の（ｂ）を行う
（ａ）当該書き込み位置に（１）の更新情報を書き込む
（ｂ）項目１〜ｍのカウンタ値について、更新情報１〜ｎおよび（１）で作成した更新情報のうち該当する識別子を有する更新情報の数を加算し、それを所定の項目領域に書き込み、更新情報１〜ｎを０にクリアする
このような手順の、（１）→（２）（ａ）の流れが、計数情報を更新するときに、この更新する旨の情報である更新情報を不揮発性記憶装置の所定の更新情報領域に書き込む段階を構成する。
【００７３】
また、このような手順の（１）→（２）（ｂ）の流れが、書き込まれた更新情報を複数個読み出し、読み出した複数個の更新情報にもとづいて、更新後の計数情報を不揮発性記憶装置に書き込む段階を構成する。
【００７４】
更新情報のそれぞれは、同時期に更新される複数の計数情報の識別子それぞれのビットに対応させて含むようになっている。
【００７５】
これによって、所定の更新情報領域に書き込まれた複数の更新情報をまとめた上で、更新後の計数情報を不揮発性記憶装置に書き込むので、計数情報を書き込むようになっている不揮発性記憶装置の１セルあたりの書き込み回数を抑えることが可能となる。
【００７６】
また、更新情報のそれぞれは、同時期に更新される複数の計数情報の識別子を含むようになっているので、更新情報のそれぞれが単一の計数情報の識別子を含める場合にくらべ、更新情報そのものの書き込み回数が減る。また、所定の更新領域が、不揮発性記憶装置に書き込まれる計数情報に未だ反映されていない更新情報で一杯になるのが遅いので、更新情報領域の容量を抑えることができる。
【００７７】
これらのことから、不揮発性記憶装置の容量を抑え、かつ１セルあたりの書き込み回数を抑えることができる。
【００７８】
なお、本発明の上記した実施形態において、エンジンＥＣＵ１が、不揮発性記憶装置へのデータの書き込み装置を構成する。本実施形態では、ＥＥＰＲＯＭ３はエンジンＥＣＵ１の内部にあるが、これは外部にあってもよい。また、エンジンＥＣＵ１はコンピュータを構成する。
【００７９】
また、本明細書の特許請求の範囲に記載されている「計数情報を更新するとき」とは、図４のステップ２０２で更新情報ありと判定する場合のことをいう。
【００８０】
また、図４のステップ２０６の更新情報書き込み処理が、計数情報を更新するときに、この更新する旨の情報である更新情報を不揮発性記憶装置の所定の更新情報領域に書き込む手段を構成する。
【００８１】
また、図４のステップ２０５の全項目カウンタ値更新処理が、書き込まれた更新情報を複数個読み出し、読み出した複数個の更新情報にもとづいて、更新後の計数情報を不揮発性記憶装置に書き込む手段を構成する。
【００８２】
なお、本実施形態においては、更新情報領域に空き領域がなくなったとき、ステップ２０５の全項目カウンタ値更新処理を行うが、空き領域がなくなる前に更新処理を行ってもよい。すなわち、書き込まれた更新情報を複数個読み出して不揮発性記憶装置に書き込むようになってさえいればよい。
【００８３】
また、図８のステップ５０７で、更新情報を全てクリアして空き領域としているが、必ずしもこのようにする必要はなく、例えば、更新情報１から更新情報４までの順次書き込みをサイクリックに行う様にし、更新情報１に書き込む直前に、書き込まれている更新情報を複数読み出してＥＥＰＲＯＭ３に書き込むようになっていてもよい。
【００８４】
また、上記した触媒バンク１（分子）、２次エア（分子）、エバポ（分子）、エバポ（分子）、およびプライマリＯ２センサ（分子）は、それぞれの故障診断が実施されたときに１回分だけ更新される計数情報である。
【００８５】
また、上記した一般分母、触媒バンク１（分母）、２次エア（分母）、エバポ（分母）、およびプライマリＯ２センサ（分母）は、車両がそれぞれ所定の運転状態となったときに１回分だけ更新される計数情報である。
【図面の簡単な説明】
【図１】本発明の実施形態のエンジンＥＣＵ１の構成を示す図である。
【図２】ＥＥＰＲＯＭ３のメモリ構成図である。
【図３】ＥＥＰＲＯＭ３の項目領域および更新情報領域のメモリ構成図である。
【図４】ＣＰＵ２の動作を示すフローチャートである。
【図５】ＣＰＵ２の更新情報作成の処理のフローチャートである。
【図６】更新情報が３番目の更新情報のデータスロットに書き込まれる前後の状態のメモリ構成図の一例である。
【図７】更新情報の格納位置が無い状態の状態のメモリ構成図の一例である。
【図８】ＣＰＵ２の全項目カウンタ値更新処理のフローチャートである。
【図９】各項目に更新された後の計数情報が書き込まれ、更新情報が全て空き状態となったときのメモリ構成図の一例である。
【符号の説明】
１…エンジンＥＣＵ、２…ＣＰＵ２、３…ＥＥＰＲＯＭ、４…ＲＯＭ、５…ＲＡＭ。
【図１】
2004152387.tif 000003
【図２】
2004152387.tif 000004
【図３】
2004152387.tif 000005
【図４】
2004152387.tif 000006
【図５】
2004152387.tif 000007
【図６】
2004152387.tif 000008
【図７】
2004152387.tif 000009
【図８】
2004152387.tif 000010
【図９】
2004152387.tif 000011