(57)【要約】【課題】書換可能な不揮発性メモリに確保するイベントの発生原因解析用データの容量を極力低減する車載電子制御装置を提供する。【解決手段】車載電子制御装置は、所定周期で、故障コードを除き診断毎に設定された記憶対象データの種類の総和をフリーズフレームデータとしてＲＡＭに記憶しておき、所定の故障が発生することにより基準時刻が確定した診断の故障コードを取得し、ＲＡＭに記憶されている各フレームのフリーズフレームデータの故障コードの欄に取得した故障コードを記憶する（Ｓ４３２）。そして、診断に対応したデータテーブルをＲＯＭから読み込み（Ｓ４３４）、データテーブルに基づいて、診断に対応した記憶対象データをＲＡＭのリングにバッファに記憶された各フレームのフリーズフレームデータから選択して取得し（Ｓ４３６）、診断毎に確保されたＥＥＰＲＯＭの記憶領域に記憶する（Ｓ４３８）。【選択図】図７
2014085709.tif 000002
【特許請求の範囲】
【請求項１】
所定のイベントに対応して、車両の挙動に関連する車両データのうち書換可能な不揮発性メモリ（２６）に記憶する記憶対象データが設定されているデータテーブル（３００、３１０）を取得するテーブル取得手段（Ｓ４３４、Ｓ４８０）と、
前記所定のイベントが発生すると、前記テーブル取得手段が取得する前記データテーブルに基づいて、前記所定のイベントに対応した前記記憶対象データを前記不揮発性メモリに時系列に記憶する記憶手段（Ｓ４０４、Ｓ４０８、Ｓ４１２、Ｓ４３８、Ｓ４５８、Ｓ４６２）と、
を備えることを特徴とする車載電子制御装置（１０）。
【請求項２】
前記記憶手段（Ｓ４０４、Ｓ４０８、Ｓ４１２、Ｓ４３８）は、前記車両データを時系列に揮発性メモリ（２２）に記憶し、前記所定のイベントが発生すると、前記所定のイベントに対応した前記データテーブル（３００）に基づいて、前記揮発性メモリに記憶された前記車両データから前記所定のイベントに対応した前記記憶対象データを選択して前記不揮発性メモリに記憶することを特徴とする請求項１に記載の車載電子制御装置。
【請求項３】
前記所定のイベントの発生が確定する前に前記所定のイベントが発生する前兆を検出する前兆検出手段（Ｓ４５２、Ｓ４７０〜Ｓ４８４）をさらに備え、
前記記憶手段は（Ｓ４５８、Ｓ４６２）、前記前兆検出手段が前記前兆を検出すると、前記所定のイベントに対応した前記データテーブル（３１０）に基づいて、前記前兆検出手段が前記前兆を検出した前記所定のイベントに対応した前記記憶対象データを時系列に揮発性メモリに記憶し、前記所定のイベントの発生が確定すると前記所定のイベントに対応して前記揮発性メモリに記憶された前記記憶対象データを前記不揮発性メモリに記憶する、
ことを特徴とする請求項１に記載の車載電子制御装置。
【請求項４】
前記前兆検出手段（Ｓ４９２、Ｓ４９４）は、前記所定のイベントの発生が確定するための前提条件が所定回数成立すると前記前兆を検出したと判断することを特徴とする請求項３に記載の車載電子制御装置。
【請求項５】
前記所定のイベントの発生を仮に確定してから前記所定のイベントの発生を確定する場合、前記前兆検出手段（Ｓ５００、Ｓ５０２）は、前記所定のイベントの発生が仮に確定すると前記前兆を検出したと判断することを特徴とする請求項３に記載の車載電子制御装置。
【請求項６】
前記データテーブルには、前記所定のイベントの発生確定時の前と後とのそれぞれで、前記不揮発性メモリに前記記憶対象データを時系列に記憶する回数が設定されていることを特徴とする請求項３から５のいずれか一項に記載の車載電子制御装置。
【請求項７】
前記データテーブルには、前記不揮発性メモリに前記記憶対象データを時系列に記憶する周期が設定されていることを特徴とする請求項３から６のいずれか一項に記載の車載電子制御装置。
【請求項８】
前記テーブル取得手段は、車両内の通信回線（２００）に接続する他装置（３０、５０）から前記通信回線を経由して前記他装置における前記所定のイベントに対応した前記データテーブルを取得し、
前記記憶手段は、前記通信回線を経由して前記他装置から前記記憶対象データの記憶開始を指令されると、前記データテーブルに基づいて前記車両データを時系列に揮発性メモリに記憶し、前記通信回線を経由して前記他装置から前記所定のイベントの発生を通知されると、前記揮発性メモリから前記所定のイベントに対応した前記記憶対象データを前記不揮発性メモリに時系列に記憶する、
ことを特徴とする請求項１に記載の車載電子制御装置。
【請求項９】
前記所定のイベントは車両異常であることを特徴とする請求項１から８のいずれか一項に記載の車載電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のイベントが発生すると車両の挙動に関連する車両データを書換可能な不揮発性メモリに時系列に記憶する車載電子制御装置に関する。
【背景技術】
【０００２】
従来、車両に故障または異常等の予め設定された所定のイベントが発生すると、イベントの発生原因を解析するために、イベント発生時の車両の挙動に関連する各種の車両データを記憶することが知られている（例えば、特許文献１参照）。そして、車両データの時間変化に基づいてイベントの発生原因を解析するために、車両データを時系列に記憶することが行われている。
【０００３】
イベントの発生原因の解析は、車両をディーラ等に持ち込んで記憶された車両データを読み出すことにより行われる。したがって、車両の電源スイッチがオフになっても記憶されたデータが保持されるように、ＥＥＰＲＯＭのような書換可能な不揮発性メモリにデータを記憶することが望ましい。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−３４９６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、イベントの発生原因を解析するために少なくともイベント発生前の車両データを時系列に記憶する場合、イベントの発生前にはイベントの種類が分からない。そこで、どのイベントが発生しても記憶した車両データに基づいて発生原因を解析できるように、時系列に揮発性メモリに記憶しておいた各イベントの発生原因を解析するために必要な車両データの種類の総和を、不揮発性メモリに記憶することが考えられる。そして、イベントの発生原因を解析するときには、不揮発性メモリからイベントに対応した車両データを選択する。
【０００６】
しかしながら、各イベントの発生原因を解析するために必要な車両データの種類の総和を不揮発性メモリに記憶するために記憶領域を確保すると、イベントによっては不要な容量が不揮発性メモリに確保されるという問題が生じる。
【０００７】
本発明は上記問題を解決するためになされたものであり、書換可能な不揮発性メモリに確保するイベントの発生原因解析用データの容量を極力低減する車載電子制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の車載電子制御装置によると、テーブル取得手段は、所定のイベントに対応して、車両の挙動に関連する車両データのうち書換可能な不揮発性メモリに記憶する記憶対象データが設定されているデータテーブルを取得する。そして、記憶手段は、所定のイベントが発生すると、テーブル取得手段が取得するデータテーブルに基づいて、所定のイベントに対応した記憶対象データを不揮発性メモリに時系列に記憶する。
【０００９】
この構成によれば、データテーブルに基づいて所定のイベント毎に不揮発性メモリに記憶する記憶対象データが選択されるので、イベントの発生原因の解析に不要な車両データが記憶されることを防止できる。その結果、記憶対象データを記憶するために不揮発性メモリに確保する記憶領域の容量を極力低減できる。
【００１０】
また、本発明の車載電子制御装置によると、所定のイベントの発生が確定する前に所定のイベントが発生する前兆を前兆検出手段が検出してもよい。前兆を検出することにより、所定のイベントを特定することができる。
【００１１】
これにより、前兆が検出された所定のイベントに対応したデータテーブルに基づいて、記憶手段は、前兆を検出された所定のイベントに対応した記憶対象データを選択し、時系列に揮発性メモリに記憶できる。
【００１２】
その結果、各イベントの発生原因を解析するために必要な記憶対象データの種類の総和を揮発性メモリに時系列に記憶することなく、記憶対象データを記憶するために要求される揮発性メモリの容量を、記憶対象データのデータ数が最大のイベントに合わせることができる。したがって、記憶対象データを記憶するための揮発性メモリの容量を極力低減できる。
【００１３】
イベントの発生が確定すれば、揮発性メモリに時系列に記憶されている記憶対象データをそのまま不揮発性メモリに記憶すればよい。
また、揮発性メモリに常時周期的に記憶対象データを記憶するのではなく、イベント発生の前兆が検出されたときに揮発性メモリに記憶対象データの記憶を開始するので、揮発性メモリに記憶対象データを記憶する処理負荷を低減できる。
【００１４】
尚、本発明に備わる複数の手段の各機能は、構成自体で機能が特定されるハードウェア資源、プログラムにより機能が特定されるハードウェア資源、またはそれらの組合せにより実現される。また、これら複数の手段の各機能は、各々が物理的に互いに独立したハードウェア資源で実現されるものに限定されない。
【図面の簡単な説明】
【００１５】
【図１】本実施形態による車両制御システムを示すブロック図。
【図２】診断毎にＥＥＰＲＯＭに記憶する記憶対象データを示すデータテーブル。
【図３】ＲＡＭに記憶するフリーズフレームデータを示す構成図。
【図４】診断毎にＥＥＰＲＯＭに記憶するフリーズフレームデータを示す構成図。
【図５】第１実施形態のフリーズフレームデータ記憶処理を示すフローチャート。
【図６】ＲＡＭへのフリーズフレームデータ記憶処理を示すフローチャート。
【図７】ＥＥＰＲＯＭへのフリーズフレームデータ記憶処理を示すフローチャート。
【図８】第２実施形態で使用するデータテーブルを示す構成図。
【図９】ＲＡＭに記憶するフリーズフレームデータを示す構成図。
【図１０】第２実施形態のフリーズフレームデータ記憶処理を示すフローチャート。
【図１１】故障発生の前兆検出処理を示すフローチャート。
【図１２】フリーズフレームデータの記憶条件判定処理１を示すフローチャート。
【図１３】フリーズフレームデータの記憶条件判定処理２を示すフローチャート。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態を図に基づいて説明する。
［第１実施形態］
図１に示す車両制御システム２では、エンジンＥＣＵ（Electronic Control Unit）１０およびボディＥＣＵ３０を含む車載ＥＣＵとドライブレコーダ５０とは、車両内のＣＡＮバス２００で通信可能に接続されている。
【００１７】
エンジンＥＣＵ１０は、エンジン運転状態に基づいて図示しないインジェクタの噴射制御、図示しない燃料ポンプの吐出制御等のエンジン制御を行うＥＣＵである。エンジンＥＣＵ１０は、ＲＡＭ２２、ＲＯＭ２４およびＥＥＰＲＯＭ２６等を備えるマイクロコンピュータ（以下、「マイコン」とも言う。）２０により主に構成されている。エンジンＥＣＵ１０は、エンジンの運転状態を検出するために、Ａ／Ｆセンサ１００、エアフロメータ１０２、Ｏ2センサ１０４等の各種センサの出力信号を取得する。
【００１８】
また、エンジンＥＣＵ１０は、各種センサの出力信号、アクチュエータの作動、エンジン制御の正当性を診断する。そして、所定のイベントとして故障または異常等が発生すると、診断結果として故障に対応した故障コードを生成する。
【００１９】
さらに、エンジンＥＣＵ１０は、所定のイベントが発生すると、車両の挙動に関連する車両データから所定のイベントに対応した記憶対象データをフリーズフレームデータ（Freeze Frame Data：ＦＦＤ）としてＥＥＰＲＯＭ２６に記憶する。ＦＦＤは、所定のイベントの発生原因を解析するための解析用データである。ＦＦＤの記憶処理については後述する。
【００２０】
ボディＥＣＵ３０は、図示しないフロントパネルで設定された温度および風量等に基づく空調制御、パワーウィンドウおよびドアロック等のドア制御を行うＥＣＵである。ボディＥＣＵ３０も、エンジンＥＣＵ１０と同様に、ＲＡＭ４２、ＲＯＭ４４およびＥＥＰＲＯＭ４６等を備えるマイコン４０により主に構成されている。
【００２１】
ドライブレコーダ５０は、図示しない加速度センサの検出信号から車両に所定以上の衝撃が加わったことを検出すると、車載カメラで撮影した車両周囲の画像、運転者によるアクセルおよびブレーキの操作量等の車両データを記録するものである。
【００２２】
（ＦＦＤ）
例えば、触媒劣化診断、Ａ／Ｆセンサ診断およびエアフロメータ診断の結果として故障と診断され、故障の発生原因を解析する場合、図２のデータテーブル３００に示すように、故障の発生原因を解析するために必要な車両データである記憶対象データの種類は診断毎に異なっている。データテーブル３００は、例えばＲＯＭ２４に記憶されている。
【００２３】
第１実施形態では、エンジンＥＣＵ１０は、故障発生前の車両データをＦＦＤに対応した１フレームずつＲＡＭ２２のリングバッファに記憶する。故障発生前にはＲＡＭ２２にＦＦＤを記憶する診断の種類が分からないので、診断の種類に関わらず同じ所定周期で車両データをリングバッファに記憶する。
【００２４】
さらに、故障発生前にはＲＡＭ２２にＦＦＤを記憶する診断の種類が分からないので、図３に示すように、図２のデータテーブル３００に示す診断毎に設定された記憶対象データの種類の総和が、ＦＦＤの１フレームとして周期毎にＲＡＭ２２のリングバッファに記憶される。ただし、故障発生前には故障コードが生成されていないので、故障コードの欄は空白である。
【００２５】
故障コードが生成され故障が確定しても、故障が確定した基準時刻を含み、基準時刻後の所定フレーム数のＦＦＤとして、図２に示す記憶対象データの種類の総和が故障発生前と同じ周期でＲＡＭ２２に記憶される。尚、故障が確定し基準時刻後に所定フレーム数のＦＦＤがＲＡＭ２２に記憶されると、生成された故障コードがＲＡＭ２２の各フレームの故障コードの欄に記憶される。
【００２６】
図３には、故障が発生したときの基準時刻（Ｔ）における１フレームを含み、基準時刻の前（Ｔ−２、Ｔ−１）に２フレーム、基準時刻の後（Ｔ＋１）に１フレームの計４フレームのＦＦＤをＲＡＭ２２に記憶する例が示されている。
【００２７】
そして、基準時刻の後（Ｔ＋１）の１フレームのＦＦＤがＲＡＭ２２に記憶されると、エンジンＥＣＵ１０は、データテーブル３００に基づき、図４に示すように、ＲＡＭ２２に記憶されたＦＦＤから診断に対応した記憶対象データを選択してコピーし、診断に対応したＥＥＰＲＯＭ２６の記憶領域に記憶する。
【００２８】
前述した例では、触媒劣化診断、Ａ／Ｆセンサ診断およびエアフロメータ診断のために４フレームずつ３面の記憶領域が、各診断の記憶対象データの容量に合わせてＥＥＰＲＯＭ２６に確保されている。
【００２９】
次に、エンジンＥＣＵ１０が実行するＦＦＤ記憶処理について説明する。図５〜図７のフローチャートにおいて、「Ｓ」はステップを表わしている。
（ＦＦＤ記憶処理）
エンジンＥＣＵ１０は、車両の運転が開始されてＦＦＤ記憶処理を実行する制御プログラムが起動すると、図５のＳ４００において、ＦＦＤの記憶停止フラグを「ＦＡＬＳＥ」に設定する初期化処理を行う。エンジンＥＣＵ１０は、記憶停止フラグが「ＦＡＬＳＥ」の場合、所定の周期毎にＲＡＭ２２のリングバッファにＦＦＤを記憶し、記憶停止フラグが「ＴＲＵＥ」の場合、ＲＡＭ２２に記憶したＦＦＤをＥＥＰＲＯＭ２６に記憶する。
【００３０】
ＲＡＭ２２にＦＦＤを記憶する所定周期のタスクの起床時間が満了になると（Ｓ４０２：Ｙｅｓ）、エンジンＥＣＵ１０は、前述したように、故障コードを除きデータテーブル３００に示す診断毎に設定された記憶対象データの種類の総和を１フレームのＦＦＤとしてＲＡＭ２２に記憶する（Ｓ４０４）。Ｓ４０４におけるＲＡＭ２２へのＦＦＤ記憶処理の詳細については、図６に基づいて後述する。
【００３１】
Ｓ４０４の処理後に記憶停止フラグが「ＦＡＬＳＥ」の場合（Ｓ４０６：Ｎｏ）、エンジンＥＣＵ１０は、次のフレームのＦＦＤをＲＡＭ２２に記憶するためにＳ４０２に処理を移行する。記憶停止フラグが「ＴＲＵＥ」の場合（Ｓ４０６：Ｙｅｓ）、エンジンＥＣＵ１０は、ＲＡＭ２２に記憶したＦＦＤをＥＥＰＲＯＭ２６に記憶する処理を実行する（Ｓ４０８）。Ｓ４０８におけるＥＥＰＲＯＭ２６へのＦＦＤ記憶処理については、図７に基づいて後述する。
【００３２】
（ＲＡＭ２２へのＦＦＤ記憶処理）
図５のＳ４０４で実行される処理について図６に基づいて説明する。エンジンＥＣＵ１０は、故障発生前の図６のＳ４１０において、故障コードを除き診断毎に設定された記憶対象データの種類の総和をＦＦＤとしてＲＡＭ２２に記憶するために必要な車両データをセンサ等から取得する。そして、エンジンＥＣＵ１０は、取得した１フレーム分の車両データをＲＡＭ２２のリングバッファに記憶し（Ｓ４１２）、次の１フレーム分の車両データを記憶するために、リングバッファにおけるＦＦＤの記憶開始位置を移動する（Ｓ４１４）。
【００３３】
所定の故障が発生せず、ＥＥＰＲＯＭ２６にＦＦＤを記憶する基準時刻が確定していないと（Ｓ４１６：Ｎｏ）、エンジンＥＣＵ１０は本処理を終了する。これにより、次に図５のＳ４０４が実行されることによりに、次の１フレームのＦＦＤがＲＡＭ２２のリングバッファに記憶される。
【００３４】
所定の故障が発生することによりＥＥＰＲＯＭ２６にＦＦＤを記憶する基準時刻が確定すると（Ｓ４１６：Ｙｅｓ）、エンジンＥＣＵ１０は、基準時刻後のフレーム数が必要フレーム数に一致するか否かを判定する（Ｓ４１８）。基準時刻後のフレーム数の初期値は０である。前述したように、基準時刻の後（Ｔ＋１）に１フレームのＦＦＤをＲＡＭ２２に記憶する場合、Ｓ４１８で判定する必要フレーム数は１である。
【００３５】
基準時刻後のフレーム数が必要フレーム数に一致しない場合（Ｓ４１８：Ｎｏ）、エンジンＥＣＵ１０は、基準時刻後のフレーム数を＋１し（Ｓ４２０）、本処理を終了する。この場合、記憶停止フラグは「ＴＲＵＥ」に設定されないので、基準時刻後のフレーム数が必要フレーム数に一致するまで、エンジンＥＣＵ１０は図５のＳ４０４を実行し、ＲＡＭ２２に故障発生後のＦＦＤを記憶する。
【００３６】
基準時刻後のフレーム数が必要フレーム数に一致すると（Ｓ４１８：Ｙｅｓ）、エンジンＥＣＵ１０は記憶停止フラグを「ＴＲＵＥ」に設定する（Ｓ４２２）。これにより、図５のＳ４０８におけるＥＥＰＲＯＭ２６へのＦＦＤの記憶処理が実行される。
【００３７】
（ＥＥＰＲＯＭ２６へのＦＦＤ記憶処理）
図５のＳ４０８で実行される処理について図７に基づいて説明する。エンジンＥＣＵ１０は、図７のＳ４３０において、所定の故障が発生することにより基準時刻が確定した診断の故障コードを取得し、ＲＡＭ２２に記憶されている各フレームのＦＦＤの故障コードの欄に取得した故障コードを記憶する（Ｓ４３２）。そして、診断に対応したデータテーブル３００をＲＯＭ２４から読み込む（Ｓ４３４）。
【００３８】
エンジンＥＣＵ１０は、データテーブル３００に基づいて、診断に対応した記憶対象データをＲＡＭ２２のリングにバッファに記憶された各フレームのＦＦＤから選択して取得し（Ｓ４３６）、図４に示すように、診断毎に確保されたＥＥＰＲＯＭ２６の記憶領域に記憶する（Ｓ４３８）。そして、記憶停止フラグを「ＦＡＬＳＥ」に設定する（Ｓ４４０）。
【００３９】
第１実施形態によると、所定のイベントとして所定の故障の発生が確定すると、ＲＡＭ２２のリングバッファに記憶された各フレームのＦＦＤから、診断に対応したデータテーブルに基づいて記憶対象データを選択して取得し、診断毎にＥＥＰＲＯＭ２６に記憶する。これにより、故障の発生原因を解析するために診断毎に必要な記憶対象データの総和を診断毎にＥＥＰＲＯＭ２６に記憶する必要がないので、ＥＥＰＲＯＭ２６にＦＦＤを記憶するために確保する記憶領域の容量を低減できる。
【００４０】
［第２実施形態］
エンジンＥＣＵ１０は、通常、触媒劣化診断、Ａ／Ｆセンサ診断およびエアフロメータ診断の結果として所定回数の異常を検出すると仮故障と診断し、仮故障の状態でさらに所定回数の異常を検出すると本故障と診断して故障コードを生成する。上記第１実施形態では、本故障と診断され故障コードが生成されると、故障が確定したと判断した。
【００４１】
これに対し、本発明の第２実施形態では、故障が確定する前に、故障が発生する前兆を検出すると、図８に示すデータテーブル３１０に基づき、診断毎に故障の発生原因を解析するために必要な車両データだけを記憶対象データとしてＲＡＭ２２のリングバッファに記憶する処理を開始する。
【００４２】
データテーブル３１０には、診断毎にＲＡＭ２２に記憶する記憶対象データと、記憶対象データをＲＡＭ２２に記憶する周期とが設定されている。さらに、故障が確定する前後でＲＡＭ２２のリングバッファに記憶するＦＦＤのフレーム数が診断毎にデータテーブル３１０に設定されていてもよい。図９の触媒劣化診断の例では、データテーブルに設定されたフレーム数にしたがい、故障確定前にｎ個、故障確定後にｍ個のフレームがＲＡＭ２２のリングバッファに記憶される。
【００４３】
このように、故障の前兆が検出されると、故障の前兆が検出された診断に対応したデータテーブル３１０に基づき、診断に対応した記憶対象データを、診断毎に設定された周期およびフレーム数でＲＡＭ２２のリングバッファに記憶する。
【００４４】
そして、故障の発生が確定しデータテーブル３１０に設定された故障確定後のフレーム数のＦＦＤがＲＡＭ２２のリングバッファに記憶されると、ＲＡＭ２２のリングバッファのＦＦＤがそのままＥＥＰＲＯＭ２６にコピーされて記憶される。
【００４５】
尚、前述したように、故障確定前と故障確定後とにおいてＲＡＭ２２のリングバッファに記憶するＦＦＤのフレーム数が診断毎にデータテーブル３１０に設定される場合には、ＲＡＭ２２に確保するリングバッファの数は、診断のうちで最大のフレーム数になる。
【００４６】
また、ＲＡＭ２２のリングバッファに設定するＦＦＤの１フレームの大きさは、データテーブル３１０において最大の記憶対象データ数を必要とする診断に合わせて設定すればよい。
【００４７】
次に、エンジンＥＣＵ１０が実行する第２実施形態のＦＦＤ記憶処理について説明する。図１０〜図１３のフローチャートにおいて、「Ｓ」はステップを表わしている。
（ＦＦＤ記憶処理）
エンジンＥＣＵ１０は、車両の運転が開始されてＦＦＤ記憶処理を実行する制御プログラムが起動すると、図１０のＳ４５０において、ＦＦＤの記憶停止フラグを「ＦＡＬＳＥ」に設定し、故障の前兆検出処理を実行する（Ｓ４５２）。故障の前兆が検出されるまで（Ｓ４５４：Ｙｅｓ）、Ｓ４５２の故障の前兆検出処理は実行される。故障の前兆検出処理については図１１に基づいて後述する。
【００４８】
故障の前兆検出処理により故障の前兆が検出されて前兆検出フラグが「ＴＲＵＥ」になると（Ｓ４５４：Ｙｅｓ）、故障の前兆が検出された診断に対応するデータテーブル３１０が前兆検出処理において取得される。そして、取得されたデータテーブル３１０に設定された周期タスクの起床時間が満了になると（Ｓ４５６：Ｙｅｓ）、エンジンＥＣＵ１０はＲＡＭ２２に１フレームのＦＦＤを記憶する（Ｓ４５８）。Ｓ４５８におけるＲＡＭ２２へのＦＦＤ記憶処理は、以下の（１）、（２）を除いて図６のＦＦＤ記憶処理と実質的に同一である。
【００４９】
（１）第２実施形態では、故障の前兆を検出してからＲＡＭ２２にＦＦＤを記憶するので、故障コードが分かっている。したがって、図６のＳ４１０において故障コードも取得され、Ｓ４１２において故障コードがＲＡＭ２２のリングバッファに記憶される。
【００５０】
（２）図６のＳ４１０において、故障の前兆が検出された診断に対応したデータテーブル３１０に基づいて記憶対象データを取得し、Ｓ４１２において取得した記憶対象データをＲＡＭ２２のリングバッファに記憶する。前述したように、ＲＡＭ２２のリングバッファに設定するＦＦＤの１フレームの大きさは、データテーブル３１０において最大の記憶対象データ数を必要とする診断に合わせて設定されている。
【００５１】
Ｓ４５８のＲＡＭ２２へのＦＦＤ記憶処理において故障が確定しておらず、記憶停止フラグが「ＦＡＬＳＥ」の場合（Ｓ４６０：Ｎｏ）、エンジンＥＣＵ１０は、次のフレームのＦＦＤをＲＡＭ２２に記憶するためにＳ４５６に処理を移行する。
【００５２】
Ｓ４５８のＲＡＭ２２へのＦＦＤ記憶処理において故障が確定し、記憶停止フラグが「ＴＲＵＥ」の場合（Ｓ４６０：Ｙｅｓ）、エンジンＥＣＵ１０は、ＲＡＭ２２に記憶したＦＦＤをＥＥＰＲＯＭ２６に記憶する処理を実行する（Ｓ４６２）。
【００５３】
データテーブル３１０に基づいて、故障の前兆が検出された診断に対応した記憶対象データがＲＡＭ２２のリングバッファに既に記憶されているので、Ｓ４６２におけるＥＥＰＲＯＭ２６へのＦＦＤ記憶処理においては、故障が確定した診断に対応したＥＥＰＲＯＭ２６の記憶領域に、ＲＡＭ２２のリングバッファのＦＦＤがそのままコピーされて記憶される。
【００５４】
（前兆検出処理）
図１１のＳ４７０においてエンジンＥＣＵ１０は、Ｓ４７４の記憶条件判定処理の実行回数をカウントするためのカウンタ（ｉ）を０に設定し、故障の前兆検出フラグを「ＦＡＬＳＥ」に設定する（Ｓ４７２）。
【００５５】
そして、故障の前兆が検出され、ＲＡＭ２２のリングバッファにＦＦＤの記憶を開始する条件が成立したか否かを判定する記憶条件判定処理を実行する（Ｓ４７４）。Ｓ４７４の記憶条件判定処理として、後述する図１２または図１３のいずれを適用してもよい。
【００５６】
Ｓ４７４の記憶条件処理を実行した結果、記憶条件が成立している場合（Ｓ４７６：Ｙｅｓ）、エンジンＥＣＵ１０は、前兆検出フラグを「ＴＲＵＥ」に設定し（Ｓ４７８）、前兆が検出された診断に対応したデータテーブル３１０をＲＯＭ２４から読み込む（Ｓ４８０）。
【００５７】
Ｓ４７４の記憶条件判定処理を実行した結果、記憶条件が成立していない場合（Ｓ４７６：Ｎｏ）、エンジンＥＣＵ１０は、カウンタ（ｉ）を＋１する（Ｓ４８２）。カウンタ（ｉ）が予め設定されたＦＦＤ記憶対象診断数未満であれば（Ｓ４８４：Ｙｅｓ）、Ｓ４７４に処理を移行し、記憶条件処理を継続する。
【００５８】
カウンタ（ｉ）がＦＦＤ記憶対象診断数以上であれば（Ｓ４８４：Ｎｏ）、エンジンＥＣＵ１０は本処理を終了する。これにより、次に図１１の処理が実行されるとカウンタ（ｉ）が０に設定され、最初から記憶条件判定処理が行われる。
【００５９】
（記憶条件判定処理１）
図１２のＳ４９０においてエンジンＥＣＵ１０は、触媒劣化診断、Ａ／Ｆセンサ診断またはエアフロメータ診断の結果として、故障を確定するための前提条件である異常を検出した回数を取得し、異常検出回数が故障確定前に仮故障と判断する回数の８０％以上であるか否かを判定する（Ｓ４９２）。
【００６０】
異常検出回数が仮故障と判断する回数の８０％以上であれば（Ｓ４９２：Ｙｅｓ）、エンジンＥＣＵ１０は、ＲＡＭ２２にＦＦＤを記憶する条件が成立したと判断する（Ｓ４９４）。
【００６１】
異常検出回数が仮故障と判断する回数の８０％未満であれば（Ｓ４９２：Ｎｏ）、エンジンＥＣＵ１０は、ＲＡＭ２２にＦＦＤを記憶する条件が成立していないと判断する（Ｓ４９６）。
【００６２】
（記憶条件判定処理２）
図１３の記憶条件判定処理２では、診断による異常検出回数が所定回数に達し仮故障になると（Ｓ５００：Ｙｅｓ）、エンジンＥＣＵ１０は、ＲＡＭ２２にＦＦＤを記憶する条件が成立していると判断する（Ｓ５０２）。
【００６３】
一方、まだ仮故障になっていない場合（Ｓ５００：Ｎｏ）、エンジンＥＣＵ１０は、ＲＡＭ２２にＦＦＤを記憶する条件が成立していないと判断する（Ｓ５０４）。
以上説明した第２実施形態では、所定の周期で常時ＲＡＭ２２にＦＦＤを記憶するのではなく、診断により故障の前兆が検出されるとＲＡＭ２２にＦＦＤを記憶する処理を開始する。したがって、ＲＡＭ２２にＦＦＤを記憶する処理負荷を低減できる。
【００６４】
さらに、前兆を検出した故障の種類に応じて、図８に示すデータテーブル３１０に基づいてＲＡＭ２２に記憶する車両データを選択するので、ＦＦＤを記憶するＲＡＭ２２の１フレームの容量は、診断の中で解析用に必要とする記憶対象データ数が最大のものに合わせればよい。したがって、ＦＦＤを記憶するためのＲＡＭ２２の容量を極力低減できる。
【００６５】
［他の実施形態］
上記実施形態では、エンジンＥＣＵ１０が自ＥＣＵにおける診断プログラムの実行結果として故障を検出すると、記憶対象データが設定されたデータテーブルに基づいて、診断に対応した記憶対象データをＦＦＤとしてＥＥＰＲＯＭ２６に記憶するＦＦＤ記憶処理について説明した。このＦＦＤ記憶処理の実行はエンジンＥＣＵ１０に限るものではなく、図２のボディＥＣＵ３０で実行してもよい。
【００６６】
ここで、ボディＥＣＵ３０がＦＦＤ記憶処理を実行するときに、例えば車両データをセンサから取得できないか、あるいはメモリ異常のために、ＦＦＤ記憶処理を正常に実行できない場合、ボディＥＣＵ３０からの指令によりエンジンＥＣＵ１０がボディＥＣＵ３０のＦＦＤ記憶処理を実行してもよい。
【００６７】
具体的には、ボディＥＣＵ３０における診断に対応したデータテーブルをボディＥＣＵ３０からエンジンＥＣＵ１０にＣＡＮバス２００を経由して送信し、ボディＥＣＵ３０からエンジンＥＣＵ１０に、データテーブルに基づいて車両データをＦＦＤとしてＲＡＭ２２に記憶するよう指令する。そして、所定のイベントが発生したことをボディＥＣＵ３０がエンジンＥＣＵ１０に通知すると、エンジンＥＣＵ１０は、所定のイベントに対応したＦＦＤをＲＡＭ２２からＥＥＰＲＯＭ２６に記憶する。
【００６８】
この場合、ボディＥＣＵ３０からの指令によりＲＡＭ２２に記憶するＦＦＤの対象となるイベントが特定されている場合には、エンジンＥＣＵ１０は、イベントの記憶対象データをＲＡＭ２２に記憶し、イベントの発生がボディＥＣＵ３０から通知されたときに、ＲＡＭ２２に記憶された記憶対象データをコピーしてＥＥＰＲＯＭ２６に記憶すればよい。
【００６９】
これに対し、ボディＥＣＵ３０からの指令によりＲＡＭ２２に記憶するＦＦＤの対象となるイベントが特定されていない場合には、エンジンＥＣＵ１０は、データテーブルに設定された記憶対象データの種類の総和をＦＦＤとしてＲＡＭ２２に記憶し、イベントの発生がボディＥＣＵ３０から通知されたときに、イベントに対応したデータテーブルに基づいて、ＲＡＭ２２に記憶されたＦＦＤから記憶対象データを選択してＥＥＰＲＯＭ２６に記憶すればよい。
【００７０】
また、ドライブレコーダ５０が故障によりデータを記録できない場合にも、上記のボディＥＣＵ３０と同様に、エンジンＥＣＵ１０は、記憶対象データが設定されているデータテーブルをドライブレコーダ５０からＣＡＮバス２００経由で取得し、ドライブレコーダ５０からの指令によりデータテーブルに設定された記憶対象データをＦＦＤとしてＲＡＭ２２に記憶してもよい。
【００７１】
ドライブレコーダ５０の場合は、衝突等により加速度センサの検出する加速度が所定値を超えることがイベントとして特定されているので、ＲＡＭ２２に記憶するＦＦＤはデータテーブルに設定された記憶対象データでよいと考えられる。
【００７２】
そして、ドライブレコーダ５０から所定のイベントとして、衝突等により加速度センサの検出する加速度が所定値を超えたことを通知されると、エンジンＥＣＵ１０は、ＲＡＭ２２に記憶されている記憶対象データをコピーしてＥＥＰＲＯＭ２６に時系列に記憶する。
【００７３】
ドライブレコーダ５０の故障時ではなく、ドライブレコーダ５０では記録できない車両データを補助する目的で、ドライブレコーダ５０から指令される所定のイベントに対応した記憶対象データをエンジンＥＣＵ１０で記憶してもよい。
【００７４】
上記第１実施形態では、所定の故障が発生することにより基準時刻が確定した診断の故障コードを一旦ＲＡＭ２２のリングバッファの各フレームに記憶してから、データテーブル３００に基づいて、診断に対応した記憶対象データをＲＡＭ２２から選択してＥＥＰＲＯＭ２６に記憶した。これに対し、故障が確定した診断の故障コードを直接ＥＥＰＲＯＭ２６に記憶してもよい。
【００７５】
また、イグニションキー等の車両の電源スイッチがオフの状態でも記憶データを保持できるのであれば、記憶対象データを記憶する書換可能な不揮発性メモリはＥＥＰＲＯＭに限るものではない。例えば、電源スイッチがオフの状態でバッテリから電力が供給される所謂バックアップＲＡＭを本発明の書換可能な不揮発性メモリとして使用してもよい。
【００７６】
また、ＦＦＤを記憶するトリガとなる所定のイベントは、診断による故障発生、あるいは衝突等の車両異常に限るものではなく、イベント発生後にイベントの発生原因を解析したい要求があるものであれば、どのようなイベントでもよい。
【００７７】
このように、本発明は、上記実施形態に限定されるものではなく、その要旨を逸脱しない範囲で種々の実施形態に適用可能である。
【符号の説明】
【００７８】
１０：エンジンＥＣＵ（車載電子制御装置）、２２：ＲＡＭ（揮発性メモリ）、２６：ＥＥＰＲＯＭ（書換可能な不揮発性メモリ）：３０：ボディＥＣＵ（他装置）、５０：ドライブレコーダ（他装置）、２００：ＣＡＮバス（通信回線）、３００、３１０：データテーブル
【図１】
2014085709.tif 000003
【図２】
2014085709.tif 000004
【図３】
2014085709.tif 000005
【図４】
2014085709.tif 000006
【図５】
2014085709.tif 000007
【図６】
2014085709.tif 000008
【図７】
2014085709.tif 000009
【図８】
2014085709.tif 000010
【図９】
2014085709.tif 000011
【図１０】
2014085709.tif 000012
【図１１】
2014085709.tif 000013
【図１２】
2014085709.tif 000014
【図１３】
2014085709.tif 000015