次に図面を参照して、この発明の実施形態を説明する。図1は、この発明の前提となる自動車の電子制御装置に含まれるデータ収集装置14を示す。車載ネットワーク11は、車両に搭載された複数の電子制御ユニット(ECU)間の通信を行うためのネットワークである。この実施例では、ネットワークはF系統とB系統の2つの系統に分かれているが、一つの系統のネットワークであってもよい。F系統のネットワークは、エンジンの燃料噴射制御、点火時期制御などを行うECU、トランスミッションの制御を行うECU,ブレーキの制御を行うECUなどいわゆる制御系の複数のECUの間で通信を行うためのネットワークである。B系統のネットワークは、パワーウィンドウやドアロックを制御するECU、ライトを制御するECU、エアコンなど電装品を制御するECUなどいわゆるボディ電装系の複数のECUの間で通信を行うためのネットワークである。ECUは、基本的にはコンピュータであり、マイクロプロセッサと通信モジュールで構成される。
F系統のネットワークは、車速データ11A、エンジン水温データ11B、エンジン回転数データ11Cなどの制御系のデータ、およびECUが検出した不具合を示す不具合コード11Eをデータ収集装置(ECU)14に送る。B系統のネットワークは、エアコンなどのアクセサリ(ACC)の状態を示すデータ11Fなどのボディ電装系のECUからのデータ、およびECUが検出した不具合を示す不具合コード11Gをデータ収集装置14に送る。
データ収集装置14は、それ自体が電子制御装置(ECU)であり、マイクロプロセッサを主要素とするコントローラ14Hによって制御される。受信部14Aは車載ネットワーク11から車両の状態を示す最新のデータを逐次受け取り、コントローラ14Hは、このデータを車両状態データメモリ14Bに逐次一時記憶させる。車両状態データメモリ14Bは、ランダムアクセスメモリ(RAM)であり、たとえば20秒間のような所定の時間幅の最新データを記憶しており、順次ファースト・イン・ファースト・アウト(FIFO)のシフトレジスター式に、たとえば0.2秒ごとに新しいデータで書き替えられる。
不揮発性メモリ14Dは、電源オフ時にもバッテリから維持電流の供給を受けて記憶を維持するバックアップメモリ、またはEEPROMなどの書き替え可能のROMなどで構成される。コントローラ14Hは、不具合コード(DTC, Diagnosis Trouble Code)を受け取ると、不具合コード発生前15秒間のデータを車両状態データメモリ14Bから読み出して不揮発性メモリ14Dに保存する。このデータは、オンボード・スナップ・ショット(OBS)と呼ばれる。この処理は、不具合コードが発生されるたびに実行され、不揮発性メモリ14Dは、複数の不具合コードに対応して複数のOBSを保存する。
この車が点検、修理のためサービス店に持ち込まれると、サービススタッフが故障診断機16の接続端子をECU14の出力端子に接続し、不揮発性メモリ14Dに保存されたデータを診断機に読み取り、診断機を利用した故障診断を行う。
一方で、読み取った不揮発性メモリ14Dに保存されたデータを、本発明の故障再現用の基準データ設定に使用する収集データとしてデータ蓄積装置20に蓄積する。データ蓄積装置20に関連して基準データ生成装置30が設けられている。
なお、不揮発性メモリ14Dに保存されたデータは、車が故障診断などでサービス店に持ち込まれるのを待つことなく、車載の通信装置からデータ蓄積装置へ送信されるようにして、収集データとして利用することもできる。
表1は、一つの不具合コード発生に応じて不揮発性メモリ14Dに保存されたOBSデータの一例を示す。この例では、運転パラメータとして温度センサの出力電圧(V)、空燃比(AF)センサの出力電流(mA)、燃料噴射時間(インジェクタのノズルを開く時間、msec)を示してある。この他に車速、エンジン回転数などの多数(車種によって異なるが、例えば50~60)のパラメータについてのデータがOBSに含まれる。これらのパラメータを・・・で示してある。この明細書では、表1の各データフィールドに入れられたデータをエントリと呼び、その値をデータ値と呼ぶ。たとえば、同じデータ値Aを持つデータフィールドの数がN個であるときは、データ値Aのエントリ数はN個である、と表現する。
時間は、不具合コードの発生時を基準の0秒とし、0.2秒ずつさかのぼった時間をマイナス符号で示している。
図1および図2を参照しながら、故障再現用のデータを設定するプロセスを説明する。車両がサービスショップに持ち込まれると、スタッフが診断機16の端末装置を車両のデータ収集装置14に接続し、不揮発性メモリ14Dに記憶されたデータを読みとる。読みとられたデータは、ネットワークを介してサポートセンターに送られて車種毎に不具合コード(DTC)と該DTCに対応するOBSデータを組にしてデータ蓄積装置20に蓄積される。データ蓄積装置20には、数千から数万のオーダーの組のDTC/OBSデータが蓄積される。
基準データ生成装置30は、汎用のコンピュータであり、データ蓄積装置20に蓄積されたデータについて図2に示すプロセスを実行して基準データを生成する。図2は、プロセスの流れの一例を示しているが、同時に基準データ生成装置30の構成を示す機能ブロック図でもある。図2のプロセスは、車種ごとに実行され、車種ごとに基準データが生成される。
データ読み出し部31は、所与の車種についてデータ蓄積装置20に格納されているすべてのDTCについてのすべてのOBSデータを読み出す。全DTCについてパラメータごとの特徴を抽出する特徴抽出部33は、OBSデータの最後の行、すなわち表1の時間0におけるデータを運転パラメータごとに集め、データ値に対するエントリ数のヒストグラムから特徴的なデータ値の範囲を抽出する。
図3は、所与の一つの運転パラメータについてすべてのDTCに係るOBSデータを集めたヒストグラムである。この実施例では、エントリ数Kを超えるデータ値の範囲を、当該運転パラメータの特徴範囲とする。図3(A)の例では、データ値0からhの範囲が特徴範囲として抽出される。データ値aからbの範囲のエントリ数はしきい値Kに達しておらず、正確には特徴範囲が分断されるが、演算の効率を高めるため、この実施例では、分断された範囲を連結して一塊りの特徴範囲を抽出する。
階段関数化部35は、こうして抽出された特徴範囲を図3(B)に示すような階段関数に変換する。この例では階段関数は、データ値0からhの範囲で1であり、それ以外のデータ値では0である。すべてのDTCに係るOBSデータから運転パラメータごとに階段関数が定義される。運転パラメータがm個(mは整数)あるとすると、階段関数f1、f2、f3、・・・・fmが生成される。任意の運転パラメータについての全DTCに基づく階段関数をf(x)で表す。階段関数f(x)は、数値1および0の配列である。
DTCごと、パラメータごとの特徴抽出を行う特徴抽出部37は、所与の車種についてデータ蓄積装置20に格納されているOBSデータに関し、DTCごと、かつ運転パラメータごとに、表1の最後の行、すなわち時間0におけるデータを集め、データ値に対するエントリ数のヒストグラムから図3(A)に関連して説明したのと同じ手法を用いて特徴的なデータ値の範囲を抽出する。階段関数化部39は、こうして抽出されたデータ値の範囲を階段関数に変換する。DTCごと、運転パラメータごとの階段関数をg(x)で表す。階段関数g(x)は、数値1および0の配列である。
類似度算出部41は、同じパラメータについて、DTCごとの階段関数g(x)と、全DTCに基づく特徴関数f(x)との類似度を、次の式により算出する。
ここで使用した類似度すなわち「特徴的範囲の類似度」の定義は、内積の概念に基づいている。離散的なパラメータの場合は、類似度はベクトルの内積によって求まるベクトル間角度のコサインの値で示すことができる。上記の式はそれを連続的なパラメータの場合に拡張している。
まず、離散的なパラメータの場合で説明すると、類似度はV と W をベクトルとして、次の式で表される。
ベクトルがより同じ方向を向いていれば 1 に近い値が、より直交状態に近ければ 0 に近い値となる。
V を全体におけるその離散値パラメータの値の出現比とし、W をある DT C における出現比とすると、数2の式をそのまま適用することができる。たとえば、あるパラメータが 1、2、3、4 の値をとり、全体における出現比が 1 : 1 : 1: 3 であり、DTCにおける出現比が 0 : 0 : 0 : 1 だったとすると、V = (1 1 1 3)、W = (0 0 0 1)であり、数2から得られるコサインの値(類似度)は約 0.86となる。
数1の式は「_連続値_パラメータの場合」であり、特徴的範囲が連続的なので、数2の式のような通常のベクトル空間の内積を用いることができない。ここで特徴的範囲を、「その特徴的範囲内で 1 、それ以外では 0 をとる関数」と定義し直すと、それらの関数には次の式のように内積を定義することができる。
数1は、この内積と、内積によって決まる大きさ(ノルム)を用いて、通常のベクトル空間のときと同じようにコサインの値を求める式である。
f、gが上述のような矩形な関数であるとすると、数1の式の分子の値はfとgの共通範囲の大きさであり、分母はfとgの範囲の大きさに対し平方根をとって掛け合わせたものである。この値はfとgの範囲が重なっているほど1 に近づき、まったく重なっていなければ0 となり、特徴的範囲の類似度を表す。
なお、類似度式は正確には次の式で表される。大きさ(ノルム)は内積で定義される。
所与のDTCについてのあるパラメータの階段関数と全DTCについてのそのパラメータの階段関数との類似度が大きいことは、そのパラメータは、当該DTCを特徴づけないことを意味する。逆に、所与のDTCについてのあるパラメータの階段関数と全DTCについてのそのパラメータの階段関数との類似度が小さいことは、そのパラメータが当該DTCに固有の挙動を示し、当該TDCを特徴づけることを意味する。
類似度が算出されると、ブロック42で類似度がしきい値より小さいかどうか判定される。特徴パラメータおよび数値範囲設定部43は、類似度がしきい値よい小さいとき、そのパラメータおよびそのデータ値の特徴範囲を、当該DTCを特徴づけるパラメータおよびそのデータ値の特徴範囲として設定する。類似度がしきい値以上であるときは、このDTCに関するプロセスを終了して次のDTCについてプロセスを進める。
ブロック42で類似度がしきい値より小さいと判定されたパラメータについては、2次的特徴抽出部45がそのパラメータについての2次的な特徴を抽出する。表1を参照すると、2次的特徴抽出部は、DTC発生時、すなわち表1における時間0から3秒間さかのぼった期間(この期間を表1の右端にかっこで示す。)のデータ値の変化の傾きを算出し、そのデータを当該DTCにおける当該パラメータの属性として基準データに含める。たとえば、このパラメータがエンジン回転数または車速であれば、3秒間のデータ値の傾きが正ならば加速を表し、負ならが減速を表す。
データ値の傾きは、データ値の変化量を微分して求める。たとえば、次の式で傾きを算出することができる。
こうして、DTCごとに特徴パラメータおよび数値範囲設定部43で設定された特徴パラメータおよびその数値範囲、ならびにこの特徴パラメータについて2次的特徴抽出部45で抽出された2次的特徴が、基準データ設定部47によって設定され、サポートセンターのコンピュータの記憶装置に格納される。
個々のサービスショップは、ネットワークを介してサポートセンターのシステムにアクセスし、この基準データを用いた故障診断を実行することができる。サービスショップは、自己のパソコンをネットワークでサポートセンターのシステムに接続してオンラインでこの基準データを使用することができる。または、サービスショップは、サポートセンターから基準データをサービスショップの診断機16にダウンロードして使用することができる。
次に特徴パラメータおよび数値範囲設定部43が実行するプロセスの一例を説明する。データ蓄積装置20に蓄積されたデータから、あるDTCに係る多数のOBSデータに関し、あるパラメータの最後値、すなわち表1における時間0におけるデータ値を集めて、エントリ数のヒストグラムを作成する。表2は、その一例を示す。この例では、エントリ総数は100である。
エントリ総数のa%以下のデータ値の棒を削除する。いま、a%を1%とすると、1以下のエントリ数の棒は削除されるので、表3の棒が残る。図4の例では、図4(A)のヒストグラムから図4(B)のヒストグラムに移行する。
残った棒のうち、隣接する棒を結合してグループ化する。この例では、表4のようにグループ化される。
こうしてできたグループのうち、カウント数がカウント総数のb%以下のものを削除する。たとえば、20%以下のグループを削除すると、グループIDが3のグループが削除され、表5のグループが残る。図4の例では、図4(B)のヒストグラムから図4(C)のヒストグラムに移行する。
こうして得られたデータ値の範囲、0.0 - 0.1および0.3 - 0.7がこのパラメータの特徴的な数値範囲である。この二つの数値範囲を結合した数値範囲0.0 - 0.7をこのパラメータに関する基準データとなる特徴的な数値範囲とする。
次に全DTCについてのパラメータごとに特徴抽出する特徴抽出部33およびDTCごとパラメータごとに特徴抽出する特徴抽出部37が実行するプロセスの具体例および類似度算出までのプロセスの具体例を説明する。
表6は、全DTCについてのOBSデータからバッテリ電圧の最後値を集めた表である。ヒストグラムを作成する際の横軸のデータ値の幅、すなわち棒グラフの棒の幅の中心値に対してエントリ数を示してある。この例ではエントリ総数は901であり、仮に1台の車から一つのOBSデータが提供されたとすると、901台の車からのデータを集計したことになる。実際には、1台の車が数個のOBSデータを出すことがあるので、エントリ総数は必ずしも車の台数に対応しない。
表7は、DTC“P3608”に係るOBSデータからバッテリ電圧の最後値を集めた表である。中心値は、表6と同じくデータ値の幅の中心値を示す。この例ではエントリ総数は12であり、1台の車が一つのDTC“P3608”を出したとすると、12台の車からだされたDTC“P3608”に係るOBSデータを集計したことになる。
表3から表5に関連して説明した特徴範囲の抽出法におけるaを1%、bを20%とすると、表6は表8に変化し、表7は表9に変化する。表8および表9を階段関数に変形すると、表7はデータ値の範囲が11.1から14.6の階段関数f(x)になり、表9はデータ値の幅が5.8から6.5の階段関数g(x)になる。
図5は、この二つの階段関数の関係を示す。この二つの関数の類似度は、前述の数1により算出される。図5の例の場合、二つの関数が重なる範囲がないので、数1の分子が0となり、類似度は0である。類似度が低いことは、このパラメータがDTC“P3608”を特徴づけることを意味する。この例では、判定のしきい値を0.5とし、類似度0.5以下のパラメータは当該DTCを特徴づけるものと判定する。
したがって、サービスショップで診断作業を行なうテクニシャンからのDTC“P3608”についての問い合わせに対しては、このパラメータ名と抽出された特徴範囲に対応するデータ値範囲を故障再現のための範囲値として提示する。いまの例では、バッテリ電圧というパラメータはDTC“P3608”を特徴づけるパラメータであり、特徴的データ範囲値は、5.8~6.5Vである。
次にパラメータのとるデータ値が0と1の2値である整数値パラメータの判定法を説明する。整数値パラメータには、エアコン・スイッチのオン、オフ信号、ブレーキ・スイッチのオン、オフ信号などがある。
まず、全DTCについて対象とする整数値パラメータについて、全OBSデータの最後値を集め、0および1の出現比率を求める。いま、この比率が9対1であると、これをベクトルf(0.9, 0.1)で表す。
次に所与のDTCのOBSデータを対象として、この整数値パラメータの最後値を集め、0および1の出現比率を求める。いま、この比率が1対9であると、これをベクトルg(0.1, 0.9)で表す。
この二つのベクトルの類似度は、二つのベクトルの相関係数rで表すことができる。相関係数rは、次の数3で算出することができる。
具体例として、パラメータ、PNPスイッチについて全DTCのOBSデータを集計すると表10になり、DTC”P8630”についてOBSデータを集計すると表11になったとする。この表から出現比率fおよびgを求め、数3で演算すると、相関係数すなわち類似度は、0.675となる。類似度の判定しきい値を0.7とすると、パラメター、PNPスイッチは、DTC”P8630”の発生に深い関係がある特徴的なパラメータであると判定される。したがって、サービスショップで診断作業を行なうテクニシャンからのDTC“P8630”についての問い合わせに対しては、このパラメータ名の「PNPスイッチ」と抽出された特徴範囲に対応する0および1の出現比率「1対9」を故障再現のための設定値として提示する。
このパラメータおよびデータ値の出現比率は、DTCごとの基準データとして基準データ設定部47が設定し、サポートセンターのコンピュータの記憶装置に格納される。
そして、上記2つの具体例と同様にしてすべてのDTCに対して、特徴的パラメータとそのデータ値範囲を提示できるように設定する。
なお、1つのDTCに対しての特徴的パラメータが1つであるとは限らず、複数の特徴的パラメータがある場合も多数存在する。
上記2例では、わかりやすく説明するために「1つのDTCに対して1つのパラメータを提示」しているが、1つのDTCについて複数のパラメータが影響していて、複数のパラメータ名が提示される場合も多い。そのような場合には、個別のパラメータ設定だけでなく、提示された各パラメータごとに対応する各範囲値/出現率を故障再現用に設定して、複合した設定条件下での運転で故障再現を試みることも効果的な再現方法となる。
以上に、この発明を具体例について説明したが、この発明はこのような具体例に限定されるものではない。