(57)【要約】【課題】故障診断に要する合計時間を短縮できるＥＣＵ故障診断装置を提供すること。【解決手段】故障診断対象のＥＣＵ１１内に機能毎に組み込まれた検査用のモジュールを呼び出すことで故障診断を行う故障診断装置１０は、モジュールの実行に要する実行時間とデータ処理に要する処理時間とをコマンドに従属させて格納する格納手段２３を有し、故障診断に先立って、実行時間と処理時間とに基づいて、コマンドを実行する順位を各コマンドに付与する。【選択図】図１
2009274695.tif 000002
【特許請求の範囲】
【請求項１】
故障診断対象のＥＣＵ内に機能毎に組み込まれた検査用のモジュールを呼び出すコマンドを送信する送信手段と、前記モジュールの実行を通じて得られる検査情報を受信する受信手段と、前記検査情報に対して故障診断用のデータ処理を行う演算手段と、前記ＥＣＵから仕様情報を検出する仕様検出手段と、を備え、
前記コマンドと前記検査情報の送受信を繰り返して前記ＥＣＵの故障診断を行う故障診断装置において、
前記データ処理中に前記検査情報を受信すると次の前記コマンドを送信する割り込み手段と、前記モジュールの実行時間と前記データ処理に要する処理時間とを前記コマンドに従属させて格納する格納手段と、前記検査情報に基づいて前記ＥＣＵの検査を行う故障診断ソフトウェアを有し、
前記故障診断ソフトウェアは、前記仕様情報に基づいて故障診断に用いる前記コマンドを選択して診断コマンド一覧を生成するリスト生成ステップと、前記実行時間と前記処理時間とを用いて前記コマンドを実行する順位を前期コマンドに付与する実行順位付与ステップと、を含むことを特徴とする故障診断装置。
【請求項２】
前記処理時間と前記実行時間は前記仕様情報にも従属されて前記格納手段に格納されることを特徴とする請求項１記載の故障診断装置。
【請求項３】
前記実行順位付与ステップは、前記診断コマンド一覧から故障診断に用いる前記コマンドの実行順列を作成する順列作成ステップと、前記順列に基づき前記コマンドを実行した場合における故障診断時間を計算する故障診断時間計算ステップと、各々の前記順列に対する前記故障診断時間の大小関係に基づき故障診断に用いるコマンドの順列を決定する順列決定ステップと、からなることを特徴とする請求項１又は請求項２記載の故障診断装置。
【請求項４】
前記順列決定ステップは、前記故障診断時間が最も短い前記順列を故障診断に用いるコマンドの順列として採用することを特徴とする請求項３記載の故障診断装置。
【請求項５】
前記実行順位付与ステップは、前記格納手段を参照して前記診断コマンド一覧から前記実行時間が短い順にコマンドを選び出す第１コマンド選出ステップと、前記格納手段を参照して前記診断コマンド一覧から前記処理時間が短い順にコマンドを選び出す第２コマンド選出ステップと、前記第１コマンド選出ステップおよび前記第２コマンド選出ステップの選出結果に基づいて、コマンドを最初に実行する最初の実行順位とコマンドを最後に実行する最後の実行順位を付与するコマンドを決定する初期終期コマンド決定ステップとからなることを特徴とする請求項１又は請求項２記載の故障診断装置。
【請求項６】
前記初期終期コマンド決定ステップは、最も実行時間が短い最短実行コマンドと最も処理時間が短い最短処理コマンドが異なるコマンドの場合に、前記最短実行コマンドに最初の実行順位を付与し、前記最短処理コマンドに最後の実行順位を付与することを特徴とする請求項５記載の故障診断装置。
【請求項７】
前記初期終期コマンド決定ステップは、前記最短実行コマンドと前記最短処理コマンドが同一のコマンドである場合に、前記最短実行コマンドの前記実行時間と、前記実行時間が二番目に短い準最短実行コマンドの実行時間と、の差である実行時間差と、前記最短処理コマンドの前記処理時間と、前記処理時間が二番目に短い準最短処理コマンドの処理時間と、の差である処理時間差と、を比較して、
前記実行時間差が前記処理時間差よりも小さい場合には、前記準最短実行コマンドに最初の実行順位を付与し、前記最短処理コマンドに最後の実行順位を付与し、前記処理時間差が前記実行時間差よりも小さい場合には、前記最短実行コマンドに最初の実行順位を付与し、前記準最短処理コマンドに最後の実行順位を付与することを特徴とする請求項５記載の故障診断装置。
【請求項８】
前記故障診断ソフトウェアは、
コマンドに未付与の実行順位のうち最も小さい実行順位である最小未付与順位の前に実行される実行順位を付与された昇順基準コマンドと、コマンドに未付与の実行順位のうち最も大きい実行順位である最大未付与順位の後に実行される実行順位を付与された降順基準コマンドと、を基準コマンドに設定する設定ステップと、
昇順基準コマンドの処理時間と最も近い実行時間を有する昇順候補コマンドと降順基準コマンドの実行時間と最も近い処理時間を有する降順候補コマンドとを実行順位が未付与のコマンドから検索する検索ステップと、
前記昇順基準コマンドの処理時間と前記昇順候補コマンドの実行時間との差である基準値１と前記降順基準コマンドの実行時間と前記降順候補コマンドの処理時間との差である基準値２とを比較する比較ステップと、前記基準値１が前記基準値２よりも小さい場合には、前記昇順候補コマンドに前記昇順基準コマンドの次に実行される実行順位を付与し、前記基準値１が前記基準値２よりも大きい場合には、前記降順候補コマンドに前記降順基準コマンドの前に実行される実行順位を付与する中間コマンド決定ステップを備えることを特徴とする請求項５ないし７のいずれかに記載の故障診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＣＵ内の異常を調べる故障診断装置に関するものである。
【背景技術】
【０００２】
近年、エンジンやＡＢＳといった車載機器を制御する車載用電子制御装置（ＥＣＵ）の需要が高まっている。これらのＥＣＵは、製品出荷に先立って、異常や不具合などがないか故障診断装置によって検査される。故障診断装置はＥＣＵの仕様を識別し、その仕様に対応した検査用のコマンドをＥＣＵに送信する。コマンドを受信したＥＣＵは、そのコマンドに対応したモジュールを呼び出す。モジュールはＥＣＵ内に予め記憶されており、モジュールが呼び出されると、ＥＣＵは検査動作を実行し、その実行結果から得られる検査情報を故障診断装置に送信する。検査情報を受信した故障診断装置は、次のコマンドをＥＣＵに送信し、その後、検査情報について故障診断に必要なデータ処理を行う。（例えば、下記特許文献１、２参照）。
【特許文献１】特開平５−１７２７０１号公報
【特許文献２】特開２００３−１９９３１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
ＥＣＵの故障診断は上記のような手順で行うため、ＥＣＵが検査動作実行中に故障診断装置がデータ処理を行わない場合や故障診断装置がデータ処理中にＥＣＵの検査動作が実行されない場合が発生し、他方の機器に生じている待ち時間が迅速な故障診断の実行を妨げていた。
【０００４】
そして、故障診断に必要なコマンドはＥＣＵの仕様によって異なる上に、後から故障診断に用いられるコマンドが変更する事態も想定される。ＥＣＵの仕様によって故障診断に使用するコマンドが異なる結果、診断するＥＣＵによっては、待ち時間が生じていた。
【０００５】
本発明の目的は、各コマンドの実行時間および処理時間に応じて、故障診断時間を好適化する故障診断装置を提供することにある。
【課題を解決するための手段】
【０００６】
請求項１記載の発明では、故障診断対象のＥＣＵ内に機能毎に組み込まれた検査用のモジュールを呼び出すコマンドを送信する送信手段と、モジュールの実行を通じて得られる検査情報を受信する受信手段と、検査情報に対して故障診断用のデータ処理を行う演算手段と、ＥＣＵから仕様情報を検出する仕様検出手段と、を備え、コマンドと検査情報の送受信を繰り返してＥＣＵの故障診断を行う故障診断装置において、データ処理中に検査情報を受信すると次のコマンドを送信する割り込み手段と、モジュールの実行に要する実行時間とデータ処理に要する処理時間とをコマンドに従属させて格納する格納手段と、前記検査情報に基づいて前記ＥＣＵの検査を行う故障診断ソフトウェアを有し、故障診断ソフトウェアは、仕様情報に基づいて故障診断に用いるコマンドを選択して診断コマンド一覧を生成するリスト生成ステップと、実行時間と処理時間とを用いてコマンドを実行する順位をコマンドに付与する実行順位付与ステップと、を含むことを特徴とする故障診断装置。
本発明によれば、各コマンドの処理時間および実行時間が格納手段に格納されているため、処理時間と実行時間に基づいてコマンドを実行する順位を決定することができ、故障診断において生じる待ち時間を短縮することができる。
【０００７】
請求項２記載の発明では、処理時間と実行時間は仕様情報にも従属されて格納手段に格納されることを特徴とする。
【０００８】
本発明によれば、実行時間と処理時間はコマンドの種類とＥＣＵの仕様情報の両方に関連付けされて、格納手段に格納される。したがって、同一のコマンドであっても、ＥＣＵの仕様情報によってコマンドの実行時間や処理時間が異なるような場合に、より故障診断に要する時間を好適化することができる。
【０００９】
請求項３記載の発明では、実行順位付与ステップは、診断コマンド一覧に含まれるコマンドの順列を作成する順列作成ステップと、順列に基づきコマンドを実行した場合における故障診断に要する故障診断時間を計算する故障診断時間計算ステップと、各々の順列に対する故障診断時間の大小関係に基づき故障診断に用いるコマンドの順列を決定する順列決定ステップと、からなることを特徴とする。
【００１０】
本発明によれば、診断コマンド一覧のコマンドの順列毎に故障診断時間を求めるため、確実に所望の故障診断時間を有するコマンドの順列を発見することができる。
【００１１】
請求項４記載の発明では、順列決定ステップは、故障診断時間が最も短い順列を故障診断に用いるコマンドの順列として採用することを特徴とする。
【００１２】
本発明では、故障診断時間が最も短い順列を故障診断に用いるコマンドの順列を用いて故障診断を行うため、故障診断に要する時間を最短化することができる。
【００１３】
請求項５記載の発明では、実行順位付与ステップは、格納手段を参照して診断コマンド一覧から実行時間が短い順にコマンドを選び出す第１コマンド選出ステップと、格納手段を参照して診断コマンド一覧から処理時間が短い順にコマンドを選び出す第２コマンド選出ステップと、第１コマンド選出ステップおよび第２コマンド選出ステップの選出結果に基づいて、コマンドを最初に実行する最初の実行順位とコマンドを最後に実行する最後の実行順位を付与するコマンドを決定する初期終期コマンド決定ステップとからなることを特徴とする。
【００１４】
本発明では、複数の順列を生成せずに最初と最後に実行するコマンドを決定することができるため、少ない計算量で故障診断時間に要する時間を好適化することができる。
【００１５】
請求項６記載の発明では、初期終期コマンド決定ステップは、最も実行時間が短い最短実行コマンドと最も処理時間が短い最短処理コマンドが異なるコマンドの場合に、最短実行コマンドに最初の実行順位を付与し、最短処理コマンドに最後の実行順位を付与することを特徴とする。
【００１６】
請求項７記載の発明では、初期終期コマンド決定ステップは、最短実行コマンドと最短処理コマンドが同一のコマンドである場合に、最短実行コマンドの実行時間と、実行時間が二番目に短い準最短実行コマンドの実行時間と、の差である実行時間差と、最短処理コマンドの処理時間と、処理時間が二番目に短い準最短処理コマンドの処理時間と、の差である処理時間差と、を比較して、実行時間差が処理時間差よりも小さい場合には、準最短実行コマンドに最初の実行順位を付与し、最短処理コマンドに最後の実行順位を付与し、処理時間差が実行時間差よりも小さい場合には、最短実行コマンドに最初の実行順位を付与し、準最短処理コマンドに最後の実行順位を付与することを特徴とする。
【００１７】
本発明によれば、実行時間が最も短いコマンドと処理時間が最も短いコマンドが存在する場合に、代替のコマンドを見つけ、好適な順位で代替コマンドを実行させるため、故障診断時間のよりよい短縮を図ることができる。
【００１８】
請求項８記載の発明では、故障診断ソフトウェアは、コマンドに未付与の実行順位のうち最も小さい実行順位である最小未付与順位の前に実行される実行順位を付与された昇順基準コマンドと、コマンドに未付与の実行順位のうち最も大きい実行順位である最大未付与順位の後に実行される実行順位を付与された降順基準コマンドと、を基準コマンドに設定する設定ステップと、昇順基準コマンドの処理時間と最も近い実行時間を有する昇順候補コマンドと降順基準コマンドの実行時間と最も近い処理時間を有する降順候補コマンドとを実行順位が未付与のコマンドから検索する検索ステップと、昇順基準コマンドの処理時間と昇順候補コマンドの実行時間との差である基準値１と降順基準コマンドの実行時間と降順候補コマンドの処理時間との差である基準値２とを比較する比較ステップと、基準値１が基準値２よりも小さい場合には、昇順候補コマンドに昇順基準コマンドの次に実行される実行順位を付与し、基準値１が基準値２よりも大きい場合には、降順候補コマンドに降順基準コマンドの前に実行される実行順位を付与する中間コマンド決定ステップを備えることを特徴とする。
【００１９】
本発明によれば、連続するコマンド間において、先のコマンドの処理時間と後のコマンドの実行時間との差が大きくなる事態を低減でき、故障診断に要する時間を減らすことができる。
【発明を実施するための最良の形態】
【００２０】
図１に本実施形態による故障診断装置１０とＥＣＵ１１の概略図を示す。故障診断装置１０は、故障診断を行うＥＣＵ１１と通信媒体１２を通じて論理的に接続される。故障診断装置１０は送信手段１３と受信手段１４を通じてＥＣＵ１１とのコマンドの送信や検査情報の受信を行い、ＥＣＵ１１は通信手段１５を通じて故障診断装置１０との送受信を行う。通信媒体１２は有線でも無線でも構わない。
【００２１】
故障診断装置１０は送信手段１３を通じてコマンドをＥＣＵ１１に送信し、ＥＣＵ１１内に機能毎に組み込まれたモジュールを呼び出し実行させることで、ＥＣＵ１１に検査動作を行わせる。モジュールを実行したＥＣＵ１１は検査動作を通じて、検査情報を得る。その後、ＥＣＵ１１は、検査情報を故障診断装置１０に送信する。故障診断装置１０は検査情報に対してデータ処理を行うことで、故障診断を行う。
【００２２】
次に、故障診断装置１０の構成について説明する。故障診断装置１０はＥＣＵ１１の仕様を識別する仕様検出手段２１と、故障診断装置１０は検査情報に対して故障診断用に必要なデータ処理を行う演算手段２０と、データ処理中に検査情報を受信すると次のコマンドを送信する割り込み手段２２と、モジュールの実行に要する実行時間およびデータ処理に要する処理時間を格納する格納手段２３を有する。
【００２３】
格納手段２３に格納される実行時間および処理時間は、コマンド番号にのみ従属させて定めてもよいし、コマンド番号とＥＣＵ１１の仕様情報の両方に従属させて定めても良い。同じ検査内容でも、実行時間と処理時間がＥＣＵ１１の仕様によって大きく左右される場合は、実行時間と処理時間とをコマンド番号とＥＣＵ１１の仕様情報との両方に従属させた方が故障診断時間をより短縮できる。
【００２４】
ＥＣＵ１１の構成について説明する。ＥＣＵ１１は、故障診断装置１０とのデータの送受信を行う通信手段１５と、検査動作に用いるモジュールを複数組み込む記憶手段と、モジュールの実行を行うＣＰＵ部と、ＥＣＵ１１の制御対象機器とのデータの入出力を行う入出力手段（Ｉ／Ｏ）を有する。
【００２５】
モジュールの呼び出しにより行われる検査動作の例として、エンジン回転出力や電解コンデンサの充放電などがあり、この検査動作の結果が検査情報として故障診断装置１０に送信される。
【００２６】
図２に故障診断装置１０−ＥＣＵ１１間におけるデータの送受信の様子を示す。ここでは、故障診断に３つのコマンドが用いられるものとする。各コマンドにはコマンド番号が付されていて、その番号と対応するモジュールがＥＣＵ１１内で呼び出される。なお、コマンド番号はコマンドを実行する順番とは関係ない。
【００２７】
最初に、故障診断装置１０は、コマンド１をＥＣＵ１１に送信する。コマンド１を受信したＥＣＵ１１は、モジュール１を呼び出してコマンド１の検査動作である実行１を行う。その後、ＥＣＵ１１は検査動作から得られた検査情報１を故障診断装置１０に送信する。故障診断装置１０は検査情報１を受信した後、次に実行するコマンド２をＥＣＵ１１に送信する。ここで、故障診断装置１０がコマンド１を送信してから検査情報１を受信するまでの期間は、故障診断装置１０は何らの処理も行わず、ＥＣＵ１１からの応答を待つ始期待ち時間となる。
【００２８】
ＥＣＵ１１はコマンド２を受信後、コマンド２に対応するモジュール２の呼び出しを行い、コマンド２の検査動作である実行２を行う。一方、故障診断装置１０はコマンド２を送信した後、コマンド１の検査情報のデータ処理を行う。このように、ＥＣＵ１１において検査動作を行っている間、故障診断装置１０は前のコマンド検査情報についてデータ処理を行う。実行２の終了後、ＥＣＵ１１は検査情報２を故障診断装置１０に送信する。この時点で、故障診断装置１０は処理１を実行中であるが、故障診断装置１０が保有する割り込み手段２２によって割り込みが発生し、処理１は中断する。そして、最後のコマンドであるコマンド３をＥＣＵ１１に送信する処理が行われる。コマンド３の送信完了後、故障診断装置１０は処理１を再開する。処理１の後、故障診断装置１０は検査情報２に対するデータ処理を行う。
【００２９】
ＥＣＵ１１はコマンド３を受信してモジュール３を呼び出し、検査動作を行って検査情報３を故障診断装置１０側に送信する。ＥＣＵ１１が実行３の完了する前に、故障診断装置１０は処理２を終えるため、処理２の完了から検査情報３の受信までは検査情報の受信を待つ中期待ち時間となる。
【００３０】
その後、故障診断装置１０は検査情報３に対するデータ処理を行い、最後のデータ処理の完了により故障診断が終了する。一方、ＥＣＵ１１側はコマンド３を送信後、何らの実行も行わず、待ち時間が発生する。このように、ＥＣＵ１１が最後のコマンドを送信してから故障診断装置１０が最後のデータ処理を完了するまでの間が終期待ち時間となる。
【００３１】
上述した始期待ち時間、中期待ち時間及び終期待ち時間の長さはコマンドの実行順番によって変動する。次に、各コマンドの実行順位を決定し、これらの待ち時間を減らす処理手順について説明する。この処理手順は、前記検査情報に基づいて前記ＥＣＵの検査を行う故障診断ソフトウェアに含まれ、ＥＣＵの仕様情報に基づいて診断コマンド一覧を生成するステップと各コマンドの実行時間および処理時間に基づいて各コマンドに実行順位を付与するステップからなる。
【００３２】
図３に故障診断装置１０に接続されたＥＣＵ１１の仕様検出フローチャートを示す。ステップ０１０では、故障診断装置１０はＥＣＵ１１に対してスタートビットを送信して、故障診断の開始を合図する。スタートビットを受信したＥＣＵ１１は、自身の仕様情報を故障診断装置１０に送信する。ステップ０２０では、故障診断装置１０は、仕様情報に基づき、故障診断対象のＥＣＵ１１の仕様情報を識別する。次に、リスト生成ステップであるステップ０３０では、仕様情報から、ＥＣＵ１１の故障診断に必要なコマンドを選び出し、そのコマンドの一群からなる診断コマンド一覧を生成する。ステップ０３０の後、実行時間と処理時間とを用いてコマンドを実行する順位をコマンドに付与するルーチン、つまり実行順位付与ステップに移行する。
（故障診断時間最短化ルーチン）
故障診断時間最短化ルーチンでは、各々のコマンドの実行順列に対して故障診断に要する時間を計算し、各々の故障診断時間を比較することで待ち時間が最短になるコマンドの実行順列を選び出す。実行順位付与ステップは、診断コマンド一覧から故障診断に用いるコマンドの実行順列を作成する順列作成ステップと、順列に基づきコマンドを実行した場合における故障診断時間を計算する故障診断時間計算ステップと、各々の順列に対する故障診断時間の大小関係に基づき故障診断に用いるコマンドの順列を決定する順列決定ステップと、からなる。
【００３３】
図４に故障診断時間最短化ルーチンを示す。最初に順列生成ステップであるステップ００４１において、診断コマンド一覧のコマンドから考えられるコマンドの実行順列の一覧を作成し、故障診断時間計算ステップであるステップ００４２に移行する。ステップ００４２においては、ステップ００４１において作成されたコマンドの実行順列に基づいて故障診断を行った場合の故障診断時間を計算する。ここで、故障診断時間の計算には図５に示す故障診断時間計算ルーチンを用いる。そして、順列決定ステップであるステップ００４３において、最も故障診断時間が短いコマンドの実行順列を選択し、そのコマンドの実行順列に基づいて各コマンドに実行順位を付与する。ここでの順列決定ステップは、故障診断時間が最も短い順列を故障診断に用いるコマンドの順列として採用する。
【００３４】
次に、図５に示される故障診断時間計算ルーチンの内容について言及する。故障診断時間計算ルーチンは、診断コマンド一覧のコマンドから作成されたコマンドの実行順列に対して、故障診断に要する時間を返すルーチンである。本ルーチンでは、まず、ステップ００１において、故障診断時間の計算に用いたコマンドの数を示す変数ｉに１が代入される。次にステップ００２において、変数ｓｕｍ＿ｔと変数ｓｕｍ＿Ｔに一番最初に実行されるコマンドの実行時間であるｔ［０］が代入される。ここで、変数ｔ［ｉ］はｉ＋１番目の実行されるコマンドの実行時間を示し、変数Ｔ［ｉ］はｉ＋１番目に実行されるコマンドの処理時間を示すものである。次に、ステップ００３において、診断コマンド一覧のコマンド数である変数Ｍが変数ｉより大きいか否かが判定され、大きいと判定された場合はステップ００４に移行し、小さいと判定された場合はステップ００８に移行する。ステップ００４では、ｓｕｍ＿ｔに実行時間ｔ［ｉ］が加算され、ｓｕｍ＿Ｔに処理時間Ｔ［ｉ］が加算され、ステップ００５に移行する。ステップ００５では、ｓｕｍ＿ｔとｓｕｍ＿Ｔの大小を比較し、ｓｕｍ＿Ｔがｓｕｍ＿ｔより小さいと判定されるとステップ００６に移行し、大きいと判定されると、ステップ００７に移行する。ステップ００６では、ｓｕｍ＿Ｔにｓｕｍ＿ｔが代入され、ステップ００７に移行する。ステップ００７では、ｉがインクリメントされ、再びステップ００３に戻る。ステップ００３からステップ００８に移行すると、ステップ００８においてｓｕｍ＿Ｔが故障診断時間として返され、故障診断時間計算ルーチンが終了する。
（初期終期コマンド決定ルーチン１）
図６に始期終期コマンド決定ステップを用いた本発明の初期終期コマンド決定ルーチン１を示す。初期終期コマンド決定ルーチン１に移行した故障診断装置１０はステップ０５０において、診断コマンド一覧から最も実行時間が短い最短実行コマンドｉに最初にコマンドを実行する実行順位を付与し、コマンドｉを診断コマンド一覧から削除する。次のステップ０６０において、故障診断装置１０は診断コマンド一覧から最も処理時間が短い最短処理コマンドｊに最後にコマンドを実行する実行順位を付与し、コマンドｊを診断コマンド一覧から削除する。
【００３５】
始期待ち時間はＥＣＵ１１側に必ず発生する待ち時間、終期待ち時間は故障診断装置１０側に必ず発生する空き時間であり、始期待ち時間及び終期待ち時間は故障診断に要するトータル時間のボトルネックとなる。そこで、始期終期コマンド決定ルーチンは、最短実行コマンドに最初に実行する実行順位を付与して、始期待ち時間を短くし、最短処理コマンドに最後に実行する実行順位を付与して終期待ち時間を短くする。
【００３６】
なお、ステップ０５０において、診断コマンド一覧から最短処理コマンドｊを検索し、次のステップ０６０において、最短実行コマンドｉを検索するようにしても問題はない。
（初期終期コマンド決定ルーチン２）
初期終期コマンド決定ルーチン１の代わりに、図７に示す本発明の初期終期コマンド決定ルーチン２を使用しても良い。初期終期コマンド決定ルーチン２では、第１コマンド選出ステップおよび第２コマンド選出ステップであるステップ１１０において、診断コマンド一覧から、最短実行コマンドｉと最短処理コマンドｊを検索する。ステップ１２０において、コマンドｉとコマンドｊが同一のコマンドか否か判定し、最短実行コマンドｉと最短処理コマンドｊが異なるコマンドならば、ステップ１７０へ移行する。最短実行コマンドコマンドｉと最短処理コマンドｊとが同一のコマンドの場合、ステップ１３０へ移行する。ステップ１３０では、診断コマンド一覧の中から、実行時間が二番目に短い準最短実行コマンドｉ２と処理時間が二番目に短い準最短処理コマンドｊ２を検索し、ステップ１４０へ移行する。ステップ１４０では、最短実行コマンドｉと準最短実行コマンドｉ２の時間差である実行時間差Δｉと最短処理コマンドｊと準最短処理コマンドｊ２の時間差である処理時間差Δｊを求め、ΔｉとΔｊを比較する。もし、処理時間差Δｊが実行時間差Δｉより小さければ、ステップ１５０に移行し、ｊにｊ２を代入する。ここでは、準最短処理コマンドを最短処理コマンドの代替コマンドに設定する。ステップ１５０の後、ステップ１７０に移行する。一方、実行時間差Δｉが処理時間差Δｊよりも小さければ、ステップ１６０に移行し、ｉにｉ２を代入する。ここでは、準最短実行コマンドを最短実行コマンドの代替コマンドに設定する。ステップ１７０に移行する。なお、ΔｉとΔｊが等しい場合、ステップ１６０とステップ１７０のどちらに移行してもよい。そして、始期終期コマンド決定ステップであるステップ１７０では、コマンドｉに最初に実行する実行順位を付与し、コマンドｊに最後に実行する実行順位を付与する。
【００３７】
上記ステップ１４０からステップ１７０の処理手順では、実行時間差が処理時間差よりも小さい場合には、準最短実行コマンドに最初の実行順位を付与し、最短処理コマンドに最後の実行順位を付与し、処理時間差が実行時間差よりも小さい場合には、最短実行コマンドに最初の実行順位を付与し、準最短処理コマンドに最後の実行順位を付与することとなる。
【００３８】
最後にステップ１８０において、診断コマンド一覧からコマンドｉ及びコマンドｊを削除する。
【００３９】
初期終期コマンド決定ルーチン２は、初期終期コマンド決定ルーチン１と同様に始期待ち時間と終期待ち時間を短くするためのものであるが、最短実行コマンドと最短処理コマンドが同一である場合に、始期待ち時間と終期待ち時間を初期終期コマンド決定ルーチン１の場合よりも短くできる処理手順を組み込んだ点に独自の利点がある。
（中間コマンド決定ルーチン１）
故障診断装置１０は初期終期コマンド決定ルーチン１又は初期終期コマンド決定ルーチン２の完了後、中間コマンド決定ステップを用いた中間コマンド決定ルーチンに移行する。図８に示す中間コマンド決定ルーチン１では、ステップ２１０において、故障診断装置１０は変数ｋに初期終期コマンド決定ルーチンで定まった最初に実行するコマンドのコマンド番号ｉを代入し、ステップ２２０において、ｎに２を代入する。ここで、コマンドｉは既にコマンドに付与されている付与済順位であって、付与済順位の次の順位がコマンドに未付与である順位を有する昇順基準コマンドであり、ｎは実行順位が確定したコマンドの数を示す。次に、ステップ２３０において、診断コマンド一覧から、コマンドｋの処理時間Ｔｔｒａｎｓ（ｋ）と最も近い実行時間Ｔｅｘｅ（ｌ）を有するコマンドｌを検索する。ここで、コマンドｌは昇順基準コマンドの処理時間と最も近い実行時間を有する昇順候補コマンドである。そして、ステップ２４０において、コマンドｋの次に実行する順位をコマンドｌに付与し、コマンドｌを診断コマンド一覧から削除する。ステップ２５０において、ｎをインクリメントし、ステップ２６０においてｎがＮに該当するか否か判定する。ここで、Ｎは対象としているＥＣＵ１１の故障診断に用いる総コマンド数を示す。ｎがＮに該当する場合は、すべてのコマンドに実行順位が付与されたものとなり、中間コマンド決定ルーチンが終了する。一方、ｎがＮ−１に該当しない場合、ステップ２７０に移行し、ｋにｌを代入し、ステップ２３０に戻る。
【００４０】
（中間コマンド決定ルーチン２）
中間コマンド決定ルーチン１の代わりに、図９に示す中間コマンド決定ルーチン２を用いてもよい。中間コマンド決定ルーチン２では、故障診断装置１０はステップ５１０において、最後に実行するコマンドのコマンド番号ｊを代入し、ステップ５２０において、ｎに２を代入する。ここで、コマンドｊは既にコマンドに付与されている付与済順位であって、前記付与済順位の前の順位がコマンドに未付与である順位を有する降順基準コマンドに該当する。次に、ステップ５３０において、診断コマンド一覧から、コマンドｈの実行時間Ｔｅｘｅ（ｈ）と最も近い処理時間Ｔｔｒａｎｓ（ｐ）を有するコマンドｐを検索する。ここで、コマンドｐは降順基準コマンドの実行時間と最も近い処理時間を有する降順候補コマンドである。そして、ステップ５４０において、コマンドｈの前に実行する順位をコマンドｐに付与する。その後、ステップ５５０において、ｎをインクリメントし、ステップ５６０において、ｎがＮに該当するか否か判定する。ここで、Ｎは対象としているＥＣＵ１１の故障診断に用いる総コマンド数を示し、ｎ＝Ｎとなる場合は、すべてのコマンドの実行順番が決定したものとして、中間コマンド決定ルーチンが終了する。一方、ｎがＮに該当しない場合、ステップ５７０に移行し、ｈにｐを代入し、ステップ５３０に戻る。
（中間コマンド決定ルーチン３）
中間コマンド決定ルーチン１又は中間コマンド決定ルーチン２の代わりに、中間コマンド決定ルーチン３を用いてもよい。これは昇順と降順の両方から実行順位を付与するものとなる。図１０に示す中間コマンド決定ルーチン３では、設定ステップであるステップ６１０において、変数ｋに初期終期コマンド決定ルーチンで定まった最初に実行するコマンドのコマンド番号ｉを代入し、変数ｈに初期終期コマンド決定ルーチンで定まった最後に実行するコマンドのコマンド番号ｊを代入し、ステップ６２０において、実行順位が確定したコマンド数ｎに２を代入する。ここで、設定ステップとは、コマンドに未付与の実行順位のうち最も小さい実行順位である最小未付与順位の前に実行される実行順位を付与された昇順基準コマンドと、コマンドに未付与の実行順位のうち最も大きい実行順位である最大未付与順位の後に実行される実行順位を付与された降順基準コマンドと、を基準コマンドに設定するものである。次に、検索ステップであるステップ６３０において、診断コマンド一覧からコマンドｋの処理時間Ｔｔｒａｎｓ（ｋ）と最も近い実行時間Ｔｅｘｅ（ｌ）を有するコマンドｌ、診断コマンド一覧からコマンドｈの実行時間Ｔｅｘｅ（ｈ）と最も近い処理時間Ｔｔｒａｎｓ（ｐ）を有するコマンドｐを検索する。ここで、検索ステップとは、昇順基準コマンドの処理時間と最も近い実行時間を有する昇順候補コマンドと降順基準コマンドの実行時間と最も近い処理時間を有する降順候補コマンドとを実行順位が未付与のコマンドから検索するステップのことである。そして、比較ステップであるステップ６４０において、Ｔｔｒａｎｓ（ｋ）とＴｅｘｅ（ｌ）との差（基準値１）の絶対値とＴｅｘｅ（ｈ）とＴｔｒａｎｓ（ｐ）との差（基準値２）の絶対値の大小関係を判断する。ここで、比較ステップとは、昇順基準コマンドの処理時間と昇順候補コマンドの実行時間との差である基準値１と降順基準コマンドの実行時間と降順候補コマンドの処理時間との差である基準値２とを比較するステップのことである。もし、Ｔｔｒａｎｓ（ｋ）とＴｅｘｅ（ｌ）との差の方が小さければ、ステップ６５０に移行し、コマンドｋの次に実行する順位をコマンドｌに付与し、コマンドｌを診断コマンド一覧から削除する。そして、ステップ６６０において、ｋにｌを代入し、ステップ６９０に移行する。一方、Ｔｅｘｅ（ｈ）とＴｔｒａｎｓ（ｐ）との差の方が小さければ、ステップ６７０に移行し、コマンドｈの前に実行する順位をコマンドｐに付与し、コマンドｐを診断コマンド一覧から削除する。次にステップ６８０に移行し、ｈにｐを代入する。なお、ステップ６４０において、Ｔｔｒａｎｓ（ｋ）とＴｅｘｅ（ｌ）との差の絶対値とＴｅｘｅ（ｈ）とＴｔｒａｎｓ（ｐ）との差が等しいとされた場合にはステップ６７０、ステップ６５０のどちらに移行してもよい。ステップ６５０、ステップ６７０は中間コマンド決定ステップであり、基準値１が基準値２よりも小さい場合には、昇順候補コマンドに昇順基準コマンドの次に実行される実行順位を付与し、基準値１が基準値２よりも大きい場合には、前記降順候補コマンドに前記降順基準コマンドの前に実行される実行順位を付与することとなる。また、ステップ６６０およびステップ６８０は設定ステップとなる。
ステップ６９０において、ｎをインクリメントし、ステップ７００において、ｎがＮに該当するか否か判断する。ｎ≠Ｎの場合、ステップ６３０に戻り、ｎ＝Ｎの場合、中間コマンド決定ルーチン３は終了する。
【００４１】
中間コマンド決定ルーチン３は、ステップ６４０において、より時間差が短いコマンドに順位を付与することができる。
【００４２】
（具体例１）
図１１に示す診断コマンド一覧を用いて診断コマンド一覧に初期終期コマンド決定ルーチンを用いた場合の順列の並びの具体例を図１２に示す。簡単のために、図１２の具体例では、図２で示した「コマンドｉ送信」の部分は省略する。また、コマンド数は３とする。故障診断時間最短化ルーチンでは、診断コマンド一覧から故障診断に用いるコマンドの実行順列を作成する。ここで、診断コマンド一覧に含まれるコマンド数をＮ個とすると、Ｎ！個数分のコマンドの実行順列が作成される。図１２の例では３個のコマンドがあるため、６個のコマンドの実行順列、つまり、「１→２→３」、「１→３→２」、「２→１→３」、「２→３→１」、「３→１→２」、「３→２→１」を作成する。つぎに、各々のコマンドの実行順列に対して、図５に示すような故障診断時間計算ルーチンを用いて、故障診断に要する時間を計算する。
【００４３】
図５のルーチンの適用例として、図５のルーチンをコマンド実施パターン１に用いた場合について言及する。最初に、ステップ００１において、変数ｉに１が代入される。次にステップ００２において、ｓｕｍ＿ｔとｓｕｍ＿Ｔに一番最初に実行されるコマンドの実行時間であるｔ［０］＝８が代入される。次に、ステップ００３において、コマンド数Ｍ＝３が変数ｉより大きいと判定され、ステップ００４に移行する。ステップ００４では、ｓｕｍ＿ｔに二番目に実行するコマンドの実行時間ｔ［１］＝４が加算され１２となる。また、ｓｕｍ＿Ｔに最初に実行するコマンドの処理時間Ｔ［０］＝５が加算され、１３となり、ステップ０５に移行する。ここでは、ｓｕｍ＿ｔとｓｕｍ＿Ｔの大小を比較し、ｓｕｍ＿Ｔがｓｕｍ＿ｔより大きいと判定され、ステップ００７に移行し、ｉがインクリメントされる。その後、ステップ００３に戻り、ステップ００４に移行するように判定される。ステップ００４では、ｓｕｍ＿ｔとｓｕｍ＿Ｔにｔ［２］とＴ［１］とが加算され、ｓｕｍ＿ｔ＝１８，ｓｕｍ＿Ｔ＝１６となる。その後、ステップ００５において、ｓｕｍ＿ｔがｓｕｍ＿Ｔよりも大きいと判定され、ステップ００６に移行し、ｓｕｍ＿Ｔにｓｕｍ＿ｔ＝１８が代入される。その後、ステップ００７→ステップ００３→ステップ００４と移行してゆき、ｓｕｍ＿ＴにＴ［３］が加算され、２２となる。なお、コマンド数が３なので、ｉ＞４のときのｔ［ｉ］はゼロとなる。そして、ステップ００５→ステップ００７→ステップ００３と移行し、Ｍ＝ｉとなったことから、ステップ００８においてｓｕｍ＿Ｔ＝２２が故障診断時間として返される。
【００４４】
このように、各コマンドの実行順列に対する故障診断時間が求められた後、最も故障診断時間が短いコマンドの実行順列、つまり、コマンド実行パターン２：「１→３→２」を用いてコマンドを用いて故障診断を行うことを決定し、コマンド１に最初に実行するコマンド順位１、コマンド２に最後に実行するコマンド順位３、コマンド３に２番目に実行するコマンド順位２を付与する。なお、故障診断時間を最短化する意味では故障診断時間が最も短いコマンドの実行順列を用いるのが理想であるが、故障診断時間が二番目や三番目に短いコマンドの実行順列を用いて故障診断を行ってもよい。
【００４５】
（具体例１）
図１３に示す診断コマンド一覧を用いて診断コマンド一覧に初期終期コマンド決定ルーチンを用いた場合の具体例を図１４に示す。簡単のために、図１４の具体例では、図２で示したような故障診断装置１０に示された「コマンドｉ送信」の部分は省略する。また、コマンド数は３とする。そのため、本具体例では、中間コマンド決定ルーチンは用いない。図１６（ａ）はコマンド番号順にコマンドの実行順番を並べた場合、図１６（ｂ）は初期終期コマンド決定ルーチン１に従い、実行順番を定めた場合、図１６（ｃ）は初期終期コマンド決定ルーチン２に従い、実行順番を定めた場合を示す。
【００４６】
（ｂ）では、始期終期コマンド決定ルーチン１に従い、実行時間が最も小さいものを最初のコマンドに割り当て、その次に、処理時間が最も小さいコマンドを最後の実行コマンドに割り当てる。このように、必ず空き時間が発生する始期待ち時間及び終期待ち時間にはそれぞれ実行時間が短いコマンドと処理時間が短いコマンドを割り当てるため、演算処理時間は（ａ）の場合と比較して短縮される。次に、（ｃ）の場合について説明する。最初に、コマンド２が最短実行コマンドと最短処理コマンドの両方に該当するものとして検索される。次に、コマンド３が診断コマンド一覧から準最短実行コマンドと準最短処理コマンドに該当するものとして検索される。最短実行コマンドと準最短実行コマンドの実行時間の差６−５＝１と、最短処理コマンドと準最短処理コマンドの処理時間の差５−３＝２を比較して、その差が最も短い準最短実行コマンドを最短実行コマンドの代替コマンドとして用いる。つまり、コマンド２を最初に実行するコマンドとして採用し、コマンド３を最後に実行するコマンドとして採用する。この結果、（ｂ）よりも１．５ほど小さい時間で故障診断を行うことができる。
【００４７】
（具体例２）
図１５に示す診断コマンド一覧を用いて診断コマンド一覧に中間コマンド決定ルーチンを用いた場合の具体例を図１６に示す。
【００４８】
図１６において、（ａ）は中間コマンド決定ルーチン１を用いた場合、（ｂ）は中間コマンド決定ルーチン２を用いた場合、（ｃ）は中間コマンド決定ルーチン３を用いた場合、（ａ）〜（ｃ）は中間コマンド決定ルーチン３を用いた場合を示す。なお、（ａ）〜（ｃ）は初期終期コマンド決定ルーチン２も併用している。そのため、最初に実行される順位１はコマンド５に付与され、最後に実行される順位６はコマンド６に付与される。
【００４９】
（ａ）では、中間コマンド決定ルーチン１を用いるため、順位１であるコマンド５の処理時間７と最も近い実行時間１０を持つコマンド３に順位２が付与される。次に処理時間１５と最も近い実行時間１５をもつコマンド３に順位３が付与される。同様の手順で、コマンド１に順位４が、コマンド４に順位５が付与され、故障診断に要する合計時間は１５４となる。
【００５０】
（ｂ）では、中間コマンド決定ルーチン２を用いるため、順位６であるコマンド６の実行時間８と最も近い処理時間１０をもつコマンド３に順位５が付与される。次に順位５であるコマンド３の実行時間１５と最も近い処理時間１５をもつコマンド２に順位４が付与される。同様の手順で、コマンド１に順位３が、コマンド４に順位２が付与される。この場合、故障診断に用いる合計時間は１４９となる。（ａ）では、昇順で順位を付与するのに対して、（ｂ）では、降順で順位を付与していく。昇順と降順では、合計時間は異なるため、（ｃ）では、昇順と降順のどちらからでも順位を付与できるようにする。その例について以下説明する。
【００５１】
（ｃ）では、  中間コマンド決定ルーチン３は昇順と降順の両方の観点から実行順位を付与するものとなる。図１０に示す中間コマンド決定ルーチン３では、ステップ６１０において、変数ｋに初期終期コマンド決定ルーチンで定まった最初に実行するコマンドのコマンド番号ｉを代入し、変数ｈに初期終期コマンド決定ルーチンで定まった最後に実行するコマンドのコマンド番号ｊを代入し、ステップ６２０において、ｎに２を代入する。ここで、ｎは実行順位が確定したコマンドの数を示す。次に、ステップ６３０において、診断コマンド一覧からコマンドｋの処理時間Ｔｔｒａｎｓ（ｋ）＝７と最も近い実行時間Ｔｅｘｅ（ｌ）を有するコマンドｌを検索する。ここでは、実行時間１０をもつコマンド２が検索され、ｌ＝２となる。また、診断コマンド一覧からコマンドｈの実行時間Ｔｅｘｅ（ｈ）＝８と最も近い処理時間Ｔｔｒａｎｓ（ｐ）を有するコマンドｐを検索する。ここでは、処理時間１０を有するコマンド３が検索され、ｐ＝３となる。そして、ステップ６４０において、Ｔｔｒａｎｓ（ｋ）とＴｅｘｅ（ｌ）との差の絶対値とＴｅｘｅ（ｈ）とＴｔｒａｎｓ（ｐ）との差の絶対値の大小関係を判断する。もし、Ｔｔｒａｎｓ（ｋ）とＴｅｘｅ（ｌ）との差の方が小さければ、ステップ６５０に移行し、Ｔｅｘｅ（ｈ）とＴｔｒａｎｓ（ｐ）との差の方が小さければ、ステップ６７０に移行する。ここで、｜Ｔｔｒａｎｓ（ｋ）−Ｔｅｘｅ（ｌ）｜＝３、｜Ｔｅｘｅ（ｈ）−Ｔｔｒａｎｓ（ｐ）｜＝２なので、ステップ６７０に移行することとなる。そして、ステップ６７０では、コマンドｈの前に実行する順位５をコマンド３に付与し、コマンドｐを診断コマンド一覧から削除する。次にステップ６８０に移行し、ｈにｐ＝３を代入する。ステップ６９０において、ｎをインクリメントし、ｎ＝３となる。ステップ７００において、順位を付与したコマンド数ｎが故障診断に用いるコマンド数Ｎに該当するか否か判断する。ｎ≠Ｎの場合、ステップ６３０に戻り、ｎ＝Ｎの場合、中間コマンド決定ルーチン３は終了する。ここでは、ｎ＝３、Ｎ＝６なので、ステップ６４０に移行することとなる。
【００５２】
同様の手順でコマンドに順位を付与していくと、コマンド２に順位２が付与され、コマンド１に順位４が付与され、コマンド４に順位３が付与される。この結果、（ｃ）では故障診断に要する合計時間は１４４となり、（ａ）と（ｂ）よりも短くなる。
【図面の簡単な説明】
【００５３】
【図１】本発明の一実施形態における故障診断装置とＥＣＵの概略図である。
【図２】故障診断装置とＥＣＵ間におけるデータ送受信の様子である。
【図３】故障診断装置が実行するＥＣＵの仕様検出フローチャートである。
【図４】故障診断時間最短化ルーチンを示すフローチャートである。
【図５】故障診断時間計算ルーチンを示すフローチャートである。
【図６】初期終期コマンド決定ルーチン１を示すフローチャートである。
【図７】初期終期コマンド決定ルーチン２を示すフローチャートである。
【図８】中間コマンド決定ルーチン１を示すフローチャートである。
【図９】中間コマンド決定ルーチン２を示すフローチャートである。
【図１０】中間コマンド決定ルーチン３を示すフローチャートである。
【図１１】故障診断時間最短化ルーチンに用いるコマンド例である。
【図１２】故障診断時間最短化ルーチンに用いる場合のコマンドの順列例である。
【図１３】各初期終期コマンド決定ルーチンに用いるコマンド例である。
【図１４】各始期終期コマンド決定ルーチンの適用例である。
【図１５】各中間コマンド決定ルーチンに用いるコマンド例である。
【図１６】各中間コマンド決定ルーチンの適用例である。
【符号の説明】
【００５４】
１０  故障診断装置
１１  ＥＣＵ
１２  通信媒体
１３  送信手段
１４  受信手段
１５  通信手段
２０  演算手段
２１  仕様検出手段
２２  割り込み手段
２３  格納手段
【図１】
2009274695.tif 000003
【図２】
2009274695.tif 000004
【図３】
2009274695.tif 000005
【図４】
2009274695.tif 000006
【図５】
2009274695.tif 000007
【図６】
2009274695.tif 000008
【図７】
2009274695.tif 000009
【図８】
2009274695.tif 000010
【図９】
2009274695.tif 000011
【図１０】
2009274695.tif 000012
【図１１】
2009274695.tif 000013
【図１２】
2009274695.tif 000014
【図１３】
2009274695.tif 000015
【図１４】
2009274695.tif 000016
【図１５】
2009274695.tif 000017
【図１６】
2009274695.tif 000018
【手続補正書】
【提出日】平成20年5月23日(2008.5.23)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００４３
【補正方法】変更
【補正の内容】
【００４３】
図５のルーチンの適用例として、図５のルーチンをコマンド実施パターン１に用いた場合について言及する。最初に、ステップ００１において、変数ｉに１が代入される。次にステップ００２において、ｓｕｍ＿ｔとｓｕｍ＿Ｔに一番最初に実行されるコマンドの実行時間であるｔ［０］＝８が代入される。次に、ステップ００３において、コマンド数Ｍ＝３が変数ｉより大きいと判定され、ステップ００４に移行する。ステップ００４では、ｓｕｍ＿ｔに二番目に実行するコマンドの実行時間ｔ［１］＝４が加算され１２となる。また、ｓｕｍ＿Ｔに最初に実行するコマンドの処理時間Ｔ［０］＝５が加算され、１３となり、ステップ０５に移行する。ここでは、ｓｕｍ＿ｔとｓｕｍ＿Ｔの大小を比較し、ｓｕｍ＿Ｔがｓｕｍ＿ｔより大きいと判定され、ステップ００７に移行し、ｉがインクリメントされる。その後、ステップ００３に戻り、ステップ００４に移行するように判定される。ステップ００４では、ｓｕｍ＿ｔとｓｕｍ＿Ｔにｔ［２］とＴ［１］とが加算され、ｓｕｍ＿ｔ＝１８，ｓｕｍ＿Ｔ＝１６となる。その後、ステップ００５において、ｓｕｍ＿ｔがｓｕｍ＿Ｔよりも大きいと判定され、ステップ００６に移行し、ｓｕｍ＿Ｔにｓｕｍ＿ｔ＝１８が代入される。その後、ステップ００７→ステップ００３→ステップ００４と移行してゆき、ｓｕｍ＿ＴにＴ［２］が加算され、２２となる。なお、コマンド数が３なので、ｉ＞４のときのｔ［ｉ］はゼロとなる。そして、ステップ００５→ステップ００７→ステップ００３と移行し、Ｍ＝ｉとなったことから、ステップ００８においてｓｕｍ＿Ｔ＝２２が故障診断時間として返される。