以下に、本発明の好適な実施形態を図面に基づいて説明する。
[第1実施形態]
図1は、本実施形態の車両診断システムの全体を表す概略ブロック図である。この本実施形態の車両診断システム1は、エンジンECU2、Kライン3、トランスポンダ4から構成されている。
エンジンECU2は、インジェクタ11やイグナイタ12等の車載機器の動作を制御すると共にこれらの動作状況に関するデータとしてダイアグコード等のダイアグ情報をバックアップRAM25に記憶するものである。このエンジンECU2は、回転数を測定する回転センサ13、空気量を測定するエアフロセンサ14、冷却水温を測定する水温センサ15、スロットルバルブの開度を測定するスロットルセンサ16、排ガス中のO2センサ濃度を検出するO2センサ17、スタータモータを始動するスタータスイッチ18等の信号を入出力回路21経由でマイコン22のI/O23に入力し、これらの入力信号を基に、マイコン22のCPU24がROM27に記憶された各種制御プログラムにしたがって、適宜データをRAM26に一時記憶させながら、エンジンにとって最適な噴射量、噴射タイミング、点火時期を計算し、インジェクタ11、イグナイタ12等の車載機器にI/O23、入出力回路21を経由して出力する。
また、マイコン22は、上述したセンサ等からの入力信号から自己診断プログラムにしたがって車両各部の正常、異常を判定すると共に、異常発生時には警告ランプ31を点灯させて異常の発生を運転者に知らせる。一例として、所定時間毎に実行されるエアフロセンサ14の異常検出処理について簡単に説明すると、まず、エアフロセンサ14の出力値が所定範囲内にあるか否かを判別し、その結果、所定範囲内であればエアフロメータ正常判定フラグをセットすると共に異常判定フラグをリセットし、所定範囲外であれば異常が発生したとして異常判定フラグをセットする。そして、異常判定フラグがセットされているか否かを判別し、セットされていればエアフロセンサ14の異常を表示する警告ランプ31を点灯させると共に、異常の発生箇所、種類等に対応して予め定められたダイアグコードをバックアップRAM25に記憶する。
また、マイコン22のシリアルI/O28は通信回路29経由でKライン3に接続され、トランスポンダ4又は外部スキャンツール6と例えばISO9141−2のプロトコルにしたがって、ダイアグ情報についての通信を行う。なお、入出力回路21、マイコン22、通信回路29は電源回路30から電力の供給を受けている。
Kライン3は、OBDII対応の通信線であり、エンジンECU2に記憶されたダイアグ情報を読み出す外部スキャンツール6をコネクタ32に着脱自在に装着することにより、外部スキャンツール6とエンジンECU2を接続するものである。また、このKライン3は、コネクタ32とエンジンECU2の中間部分から分岐する分岐線3aを備えており、この分岐線3aにはトランスポンダ4に接続されている。
トランスポンダ4は、外部無線通信機器であるレシーバシステム5(例えば道路端や人工衛星に設置したもの)からの要求を無線データとして受信し、その要求に応じてダイアグ情報を読み出し、読み出したダイアグ情報を無線データとしてレシーバシステム5へ送信するものである。このトランスポンダ4は、Kライン3経由でエンジンECU2と通信を行うことによりエンジンECU2から必要なダイアグ情報を収集するスキャンツール部41と、エンジンECU2から読み出すダイアグ情報をスキャンツール部41へ指示すると共にレシーバシステム5からの要求に応じて無線データの応答メッセージを作成するデータ加工部42と、レシーバシステム5と通信を行う無線通信部43を備えている。これら各部の機能は本実施形態では一つのマイコンで処理しているが、各部の機能ごとに個別のマイコンで処理してもよい。また、このトランスポンダ4は、ダイアグ情報を記憶するための第1メモリ44と、VIN(車両コード)を記憶するための第2メモリ45とを備えている。両メモリ44、45はいずれもEEPROMあるいはバックアップRAM、フラッシュメモリ等の不揮発性メモリである。なお、スキャンツール部41は、外部スキャンツール6のように入力装置や表示装置を備えていてもよい。
外部スキャンツール6は、OBDII対応の外部診断装置であり、図1ではKライン3のコネクタ32から外した状態を示してあるが、通常は、車両が修理工場等に持ち込まれたときにコネクタ66がKライン3のコネクタ32に装着されてエンジンECU2からダイアグ情報を収集するものである。この外部スキャンツール6は、通信回路61、マイコン62、ICカード等の記憶装置63、LCD等の表示装置64、キーボード等の入力装置65を備えている。Kライン3のコネクタ32に装着された外部スキャンツール6は、作業者により任意のダイアグ情報の項目が入力装置65から入力されると、マイコン62が記憶装置63に記憶されたプログラムに従って入力装置65からの入力を、通信回路61、Kライン3経由でエンジンECU2にSAEで定められた通信フォーマットで例えばISO9141−2プロトコルにより送信し、エンジンECU2からの応答を待つ。そしてエンジンECU2からの応答を受信すると、取得した情報を表示装置64に表示する。
次に、本実施形態の車両診断システム1について、外部スキャンツール6が接続されていない場合のトランスポンダ4の動作を説明する。図2は、トランスポンダ4のデータ加工部42のデータ加工処理を表すフローチャートである。このデータ加工処理は、一定タイミング毎にコールされ、処理が開始されると、まずステップ(以下Sという)101において、レシーバシステム5からの要求メッセージの有無を示す無線要求フラグXREQ1のオンオフを判定する。S101において、この無線要求フラグXREQ1がオフならば(S101でNO)、レシーバシステム5からの要求メッセージがないので、続くS102〜S108の処理、つまり、スキャンツール部41を通じてエンジンECU2にダイアグ情報を要求したりスキャンツール部41を通じてエンジンECU2からのダイアグ情報を取得したりする処理を行う。
S102において、スキャンツール部41がエンジンECU2から応答メッセージを受信したか否かを表すダイアグ応答フラグXANS2のオンオフを判定する。ダイアグ応答フラグXANS2がオフならば(S102でNO)、エンジンECU2からの応答メッセージを受信していないので、S103へ進む。S103では、スキャンツール部41に対して要素ナンバが指定されているか否かを表すダイアグ要求フラグXREQ2のオンオフを判断する。ここで、要素ナンバとは、OBDIIモード、ID、フレームナンバ等と関係づけられた数字のことをいい、図3にその対照テーブルの一例を示す。ここで、OBDIIモードとは、モード01は最新パワートレーンデータ出力機能でエンジンの各種パラメータやエンジン名やモデルイヤー等を表す車両情報、モード02は故障した際のエンジン制御状態を表すフリーズフレーム、モード03は異常情報を表すダイアグコードを表し、またIDとは、例えば冷却水温度、エンジン回転数等を数字で表したものである。
S103において、このダイアグ要求フラグXREQ2がオンならば(S103でYES)、前回指定した要素ナンバについて現在処理している途中なので、そのままこの処理を終える。一方、S103において、ダイアグ要求フラグXREQ2がオフならば(S103でNO)、データ加工部42からスキャンツール部41へ要素ナンバが出されていないので、S104に進む。S104では、スキャンツール部41へ要素ナンバを出すタイミングか否か(つまりエンジンECU2に要求メッセージを出すタイミングか否か)を判断する。本実施形態では、このタイミングとして10秒毎のタイミングを採用しているが、このように一定時間毎のタイミング以外に、例えばエンジンが所定回転する毎のタイミングであってもよい。
S104において、10秒毎のタイミングでなければ(S104でNO)、エンジンECU2に要求メッセージを送信する必要はないので、この処理を終了する。一方、所定タイミングであれば(S104でYES)、続くS105において、新たに指定された要素ナンバが存在することをスキャンツール部41に伝えるためにダイアグ要求フラグXREQ2をオンにし、S106において、収集すべきダイアグ情報を表す要素ナンバを指定し、この処理を終了する。なお、要素ナンバの指定は、変数data_no(k)で行うが、ここでは10秒毎のタイミングのたびにk=0からk=nまで順次更新していき、k=nまで更新した後はk=0に戻す。
ところで、S102において、ダイアグ応答フラグXANS2がオンならば(S102でYES)、スキャンツール部41がエンジンECU2からの応答メッセージを受信しているため、S107においてデータ加工部42はその応答メッセージに従って第1メモリ44の内容を更新する。具体的には、第1メモリ44には図3のテーブル形式でダイアグ情報が記憶されているため、応答メッセージの要素ナンバに応じてその内容を更新する。そして更新後、S108に進み、ダイアグ応答フラグXANS2をオフにして、この処理を終了する。なお、第1メモリ44には図3のテーブル形式でダイアグ情報を記憶する代わりに、例えばダイアグ情報をトランスポンダ4とレシーバシステム5との間の通信フォーマットに合わせて加工したものを記憶してもよい。
さて、S101において、無線要求フラグXREQ1がオンならば(S101でYES)、レシーバシステム5からの要求メッセージがあるので、続くS109以下の処理を行う。なお、本実施形態では、レシーバシステム5からトランスポンダ4への無線による要求メッセージの通信フォーマットは、図4に示すように、ヘッダ、モード指定などから構成されているが、これ以外のフォーマットを採用してもよい。また、便宜上、モードにはF1、F2、F4、FFの4種類が存在することとし、モードF1は特定車両コードの車両へのダイアグコードの問い合わせ、モードF2は特定車両コードの車両へのフリーズフレームデータの問い合わせ、モードF4は特定車両コードの車両へのダイアグデータ消去要求、モードFFは特定エンジン、モデルイヤーの車両へのダイアグコードの問い合わせを表すこととする。
S109においてレシーバシステム5からの要求メッセージのモードを判定し、そのモードに対応した応答メッセージを図4の通信フォーマットで作成し、図示しない送信バッファに記憶する。続くS110においてレシーバシステム5に対する応答メッセージの送信準備が完了したことを示す無線応答フラグXANS1をオンにし、S111において無線要求フラグXREQ1をオフにして、この処理を終了する。ここで、要求メッセージがモードF1の場合を例にとって説明すると、S109において、ヘッダを付加し、モード指定としてモードF1を付加し、第2メモリからVINを読み出して付加し、第1メモリの要素ナンバ「0」からダイアグコードを取り出して付加することにより、図4の通信フォーマットの応答メッセージが作成される。
なお、図2のフローチャートには図示しないが、S101において無線要求フラグXREQ1がオンだったにもかかわらず、そのモードがF1、F2、F4、FFのいずれでもなかった場合には、フェイルセールのため、無線要求フラグXREQ1に関して異常があったと判断してS111に進み、この無線要求フラグXREQ1をオフにして、この処理を終了する。
次に、スキャンツール部41のスキャンツール処理について図5のフローチャートに基づいて説明する。このスキャンツール処理は、一定タイミング毎にコールされ、処理が開始されると、S201で、ダイアグ要求フラグXREQ2のオンオフを判定する。そして、このダイアグ要求フラグXREQ2がオンならば(S201でYES)、上述のデータ加工処理において新たに指定された要素ナンバが存在するため、S202において、図3の対照テーブルを参照してこの要素ナンバに対応するOBDIIモード、ID等を決定し、S203において、図6のSAEで定められた通信フォーマット(ダイアグコードに関する要求、応答例)の要求メッセージを作成し、これを例えばISO9141−2プロトコルでエンジンECU2に送信する。そして、S204において、ダイアグ要求フラグXREQ2をオフにし、この処理を終了する。一方、S201で、ダイアグ要求フラグXREQ2がオフならば、新たに指定された要素ナンバが存在しないので、続く205において、エンジンECU2から応答があったか否かを判断する。このS205において応答がなければ(S205でNO)、この処理を終了し、応答があれば(S205でYES)、続くS206においてISO9141−2プロトコルで応答メッセージを受信し、S207において、スキャンツール部41がエンジンECU2から応答メッセージを受信したことを示すためにダイアグ応答フラグXANS2をオンにして、この処理を終了する。
ところで、エンジンECU2は、既述したエアフロセンサの異常検出処理のように、所定タイミング毎に異常発生の有無を判断し、異常が発生した場合には、異常の発生箇所、種類等に対応して予め定められたダイアグコード等のダイアグ情報をバックアップRAM25に記憶している。このため、エンジンECU2は、スキャンツール部41からの要求メッセージを受信すると、この要求メッセージに対応する応答メッセージをバックアップRAM25に記憶されたダイアグ情報から読み出して図6の通信フォーマット形式で作成し、これをISO9141−2プロトコルでスキャンツール部41へ返信する。次に、無線通信部の無線通信処理について図7のフローチャートに基づいて説明する。この無線通信処理は、一定タイミング毎にコールされ、処理が開始されると、S301で、レシーバシステム5からの無線データを受信中か否かを判断し、無線データ受信中でなければ、S302に進み、レシーバシステム5に対する応答メッセージの送信準備が完了したか否かを示す無線応答フラグXANS1のオンオフを判定する。そして、この無線応答フラグXANS1がオフならば、レシーバシステム5に送信すべき応答メッセージが存在しないため、この処理を終える。一方、無線応答フラグXANS1がオンならば、既に述べたデータ加工処理のS109においてレシーバシステム5に対する応答メッセージが作成され送信準備が完了しているため、S303において、図示しない送信バッファに記憶された応答メッセージをレシーバシステム5に無線送信し、続くS304において、無線応答フラグXANS1をオフにし、この処理を終了する。また、S301において、レシーバシステム5からの無線データを受信中ならば、S305において、レシーバシステム5からの無線データ(要求メッセージ)を図示しない受信バッファに記憶し、S306において、新たな要求メッセージの存在を示すために無線要求フラグXREQ1をオンにして、この処理を終える。
以上のトランスポンダ4の各処理について具体的な処理例を以下に説明する。トランスポンダ4は、データ加工処理において、所定タイミング毎にダイアグ要求フラグXREQ2をオンにし(S104でYES、S105)、収集すべきダイアグ情報を表す要素ナンバを指定する(S106)。すると、スキャンツール処理において、ダイアグ要求フラグXREQ2がオンと判定され(S201でYES)、その要素ナンバに応じて図3の対照テーブルを検索してOBDIIモード、ID等を読み出し、要求メッセージをSAEで定められた通信フォーマットで作成してISO9141−2プロトコルによりKライン3経由でエンジンECUに送信し(S202、S203)、ダイアグ要求フラグXREQ2をオフにする(S204)。その後、エンジンECU2から要求メッセージに対する応答メッセージが返信されると(S201でNO、S205でYES)、その応答メッセージを受信し(S206)、ダイアグ受信フラグXANS2をオンにする(S207)。すると、データ加工処理において、ダイアグ受信フラグXANS2がオンと判定され(S102でYES)、第1メモリ44内のダイアグ情報が応答メッセージに基づいて更新され(S107)、ダイアグ受信フラグXANS2がオフされる(S108)。このようにして、トランスポンダ4はレシーバシステム5の要求の有無にかかわらず、エンジンECU2から所定タイミング(10秒)毎にダイアグ情報を収集し、それを第1メモリ44に記憶・更新していく。
一方、トランスポンダ4は、無線通信処理において、レシーバシステム5から無線によるダイアグ情報の問い合わせがあると(S301でYES)、その無線データ(図4の通信フォーマット形式の要求メッセージ)を受信バッファに記憶し(S305)、無線要求フラグXREQ1をオンにする(S306)。すると、データ加工処理において、無線要求フラグXREQ1がオンと判定され(S101でYES)、その要求メッセージのモードに応じて、第1メモリ44のダイアグ情報、第2メモリ45のVINなどを付加して図4に示す通信フォーマット形式の応答メッセージを作成し(S109)、無線応答フラグXANS1をオン、無線要求フラグXREQ1をオフにする(S110、S111)。すると、無線通信処理において、無線応答フラグXANS1がオンと判定され(S302でYES)、応答メッセージをレシーバシステム5に送信し(S303)、無線応答フラグXANS1をオフにする(S304)。このように、レシーバシステム5から無線によるダイアグ情報の問い合わせがあると、トランスポンダ4は内蔵メモリである第1メモリ44、第2メモリ45に記憶したダイアグ情報、VINを読み出して図4の通信フォーマット形式の応答メッセージを作成し、レシーバシステム5に返信する。
以上のように、トランスポンダ4は、レシーバシステム5との無線通信およびエンジンECU2との例えばISO9141−2プロトコルによる通信が可能であるうえ、外部スキャンツール6と同様、エンジンECU2に記憶されたダイアグ情報を読み出す機能を有している。このため、本実施形態の車両診断システム1によれば、従来のOBDIIシステムにこのトランスポンダ4を付加するのみで、OBDIIIに簡単に対応できると共に、従来通り、Kライン3のコネクタ32に外部スキャンツール6を接続できるためOBDIIにも対応できる。また、レシーバシステム5はトランスポンダ4からの応答メッセージに含まれるVINによってどの車両からデータが送られてきたのかを容易に特定できる。更に、レシーバシステム5からの要求前に予めトランスポンダ4の第1メモリ44にダイアグ情報が記憶され、この第1メモリ44からダイアグ情報を読み出してレシーバシステム5へ返信するため、レシーバシステム5からの要求を無線で受信するごとにエンジンECU2に記憶されたデータを読み出してレシーバシステム5へ返信する場合に比べて、要求を受けてから応答を返すまでの時間が短縮できる。
次に、本実施形態の車両診断システム1について、外部スキャンツール6が装着された場合のトランスポンダ4の動作を説明する。本実施形態の車両診断システム1では、トランスポンダ4は、上述の通り、所定タイミング(10秒)毎にKライン3を介してエンジンECU2にISOプロトコル−2で要求メッセージをシリアル送信する。一方、Kライン3のコネクタ32に装着された外部スキャンツール6は、オペレータが入力装置65から要求を入力するタイミングでKライン3を介してエンジンECU2にISOプロトコル−2で要求メッセージをシリアル送信する。ところで、OBDII対応のISO9141−2プロトコルは、マスタ・スレーブ通信であるため、車両診断システム1に外部スキャンツール6が接続されてマスタがトランスポンダ4と外部スキャンツール6の2つになると、各マスタはバスが空いてさえいれば任意のタイミングでメッセージを送信する。このため、Kライン3上でデータが衝突するおそれがある。
そこで、このようなデータ衝突を回避するために、トランスポンダ4のスキャンツール部41は図8のフローチャートに示す割込処理を実行する。この割り込み処理は、スキャンツール部41が1バイトシリアル受信する毎に発生するものであり、具体的には、エンジンECU2からの応答メッセージを1バイトシリアル受信した場合等のほか、スキャンツール部41がエンジンECU2へ要求メッセージを1バイトシリアル送信したあとKライン3経由でエコーバックしてくる同一データを受信した場合に発生する。
この割り込み処理が開始されると、まず、S401において、スキャンツール部41からエンジンECU2にKライン3経由で要求メッセージを送信中か否かを判断し、送信中でなければ(S401でNO)、今回シリアル受信したデータはエコーバックしたきたものではないので、S409に進み、1バイト毎に図示しない受信バッファにデータを記憶する通常の受信処理を行う。一方、エンジンECU2にKライン3経由で要求メッセージを送信中であれば(S401でYES)、今回シリアル受信したデータはエコーバックしてきたものである。この場合、S402において、フレーミングエラー等のシリアル通信エラーが発生したか否かを判断し、続くS403において、シリアル送信したデータとエコーバックしてきたシリアル受信したデータとが一致しているか否かを判断する。S402でシリアル通信エラーの発生がなく、S403で送受信データが一致したならば(S402、S403で共にYES)、S404において、引き続きスキャンツール部41のシリアル送信処理を継続することを表すために送信フラグをオンにし、この処理を終了する。この送信フラグがオンの場合には、図示しないが所定タイミング毎に実行されるシリアル送信処理を継続する。
一方、S402でシリアル通信エラーが発生したか、S403で送受信データが一致しなかったならば(S402、S403のいずれかでNO)、S405に進み、通信異常回数カウンタをインクリメントし、続くS406で通信異常回数カウンタの値が予め定められた異常判定値と比較し、カウンタ値が異常判定値未満なら(S406でNO)、ば前述のS404に進み、カウンタ値が異常判定値以上なら(S406でYES)、Kライン3上で外部スキャンツール6からの要求メッセージとデータが衝突している可能性が高いので、続くS407において、上述の送信フラグをオフし、シリアル送信処理が中止され、トランスポンダ4のマスタ動作が停止する。そして、続くS408において、所定トリップ数の期間だけ、トランスポンダ4の動作をマスタからスレーブに移行させる。これにより、トランスポンダ4は外部スキャンツール6からの要求に応じてダイアグ情報を外部スキャンツール6へ送信する。なお、所定トリップ数の期間経過後は、トランスポンダは再びマスタ動作を実行する。また、スレーブ動作中は、この割込処理のS409において、外部スキャンツール6からの要求メッセージを受信する。
以上の割込処理を実行することにより、トランスポンダ4は、Kライン3上におけるデータの衝突の有無を判断し、データの衝突があった場合には、Kライン3上へのシリアル送信処理を中止し、自らを外部スキャンツール6のスレーブとして動作することにより、その後のデータの衝突を回避する。また、トランスポンダ4がこのようなデータの衝突を回避する割込処理を実行するため、外部スキャンツール6は従来使用していたものをそのまま用いることができる。
なお、データの衝突を回避するには、トランスポンダ4のマスタ動作を停止すれば十分であるが、トランスポンダ4が外部スキャンツール6のスレーブとなることにより、外部スキャンツール6はエンジンECU2とトランスポンダ4の両方にダイアグ情報を要求し両方のダイアグ情報を収集できる。このため、例えばあるダイアグ情報についてはエンジンECU2からの方が詳しく、別のダイアグ情報についてはトランスポンダ4からの方が詳しい場合には、外部スキャンツール6はいずれか詳しいダイアグ情報を選択して取り込むことができる。
さて、Kライン3上でのデータの衝突を回避するための処理として、トランスポンダ4ではなく、外部スキャンツール6が図9のフローチャートに示す割込処理を実行してもよい。この処理は、図8の割込処理とは別に実行してもよいし、併せて実行してもよい。
ここでは、前提として、外部スキャンツール6のオペレータは、エンジンECU2からダイアグ情報を収集するためのキー入力操作に先立ち、トランスポンダ4にマスタ動作停止要求又はスレーブ化要求のキー入力操作を行うものとする。また、ここでは説明の便宜上、外部スキャンツール6からトランスポンダ4へのダイアグ情報の要求は行わないものとする。
図9の割り込み処理は、所定タイミング毎に発生するものであり、この処理が開始されると、外部スキャンツール6のマイコン62は、まずS501において、Kライン3上へ送信する必要があるキー入力が入力装置65を介してなされたか否かを判断し、そのようなキー入力がなされていなければ(S501でNO)、後述のS505に進む。一方、そのようなキー入力がなされたならば(S501でYES)、続くS502において、そのキー入力による要求はトランスポンダ4への要求か否かを判断し、トランスポンダ4への要求でなければ(S502でNO)、エンジンECU2への要求であるため、S504において、SAEで定められた通信フォーマット形式でダイアグ情報を要求するためのメッセージを作成し、これをISO9141−2プロトコルによりKライン3経由でエンジンECU2に送信する。一方、トランスポンダ4への要求であれば(S502でYES)、S503において、SAEで定められた通信フォーマット形式でマスタ動作停止要求又はスレーブ化要求のメッセージを作成し、これをISO9141−2プロトコルでKライン3経由でトランスポンダ4に送信する。なお、マスタ動作停止要求又はスレーブ化の要求は、例えば図10のように、トランスポンダ4の要求であることを示すヘッダと、マスタ動作又はスレーブ動作を指示するモード指定と、スレーブ化期間を示すトリップ指定とを含む通信フォーマットにより行う。
その後S505において、Kライン経由でメッセージを受信中か否かを判断し、受信中でなければ(S505でNO)、表示装置64にメニュー画面等を表示した上でこの処理を終了する。一方、メッセージを受信中ならば(S505でYES)、S506で1メッセージ受信した後、S507で受信したメッセージに対応した要求を外部スキャンツール6が送信したか否かを判断する。そして、受信メッセージに対応した要求を送信していたならば(S507でYES)、S508において、取得したダイアグ情報を表示装置64に表示してこの処理を終了する。一方、そのような要求を送信していなかったならば(S507でNO)、外部スキャンツール6以外のマスタとしてトランスポンダ4が存在していることになるので、続くS509において、図10の通信フォーマット形式でマスタ動作停止要求又はスレーブ化要求のメッセージを作成し、これをISO9141−2プロトコルでKライン経由でトランスポンダ4に送信し、この処理を終える。
以上のように、オペレータは、エンジンECU2からダイアグ情報を収集するためのキー入力操作に先立ち、トランスポンダ4にマスタ動作停止要求又はスレーブ化要求のキー入力操作を行うため、Kライン3上で外部スキャンツール6からの要求とトランスポンダ4からの要求が衝突するのを回避できる。
なお、上記S501〜S504に代えて、外部スキャンツール6は、図11に示すように、S511において、オペレータがエンジンECU2へダイアグ情報を要求するためのキー入力操作を行ったか否かを判断し、そのようなキー入力操作を行ったならば(S511でYES)、S512において、Kライン3経由でトランスポンダ4にマスタ動作停止要求又はスレーブ化要求のメッセージを送信し、その後S513において、Kライン3経由でエンジンECU2にダイアグ情報を要求するメッセージを送信するようにしてもよい。この場合、オペレータは、トランスポンダ4へのマスタ動作停止要求又はスレーブ化要求の入力操作をする必要がない。
ところで、図8又は図9のフローチャートにおいて、トランスポンダ4がマスタ動作を停止する期間又はスレーブ化する期間をトリップ数(1トリップとは、イグニッションがオンされてからオフされるまでの期間)で指定した場合、その指定したトリップ数が意に反して極端に大きな数になっていたとすると、車両が修理工場等からユーザーの手元に戻ったあとも、いつまでたっても、トランスポンダ4がマスタに復帰せず、レシーバシステム5との無線通信ができないおそれがある。
このおそれを防止するために、トランスポンダ4は図12に示すフローチャートに従って、動作復帰処理を実行する。この動作復帰処理は、イグニッションがオンされる毎に実行される処理であり、この処理が開始されると、S601において、トリップカウンタのカウンタ値CRTRIPをインクリメントする。トリップカウンタは、外部スキャンツール6がKライン3にアクセスしなかったトリップ数をカウントするカウンタである。なお、外部スキャンツール6がKライン3にアクセスする毎に、このカウンタ値CRTRIPはリセットされる。本実施形態では、トランスポンダ4がKライン3経由で外部スキャンツール6からのメッセージを受信する毎に、外部スキャンツール6がKライン3にアクセスしているとみなして、カウンタ値CRTRIPをリセットする。具体的にはメッセージのヘッダで判定する。続くS602において、カウンタ値CRTRIPが所定の上限値を越えたか否かを判断し、上限値を越えていなければ(S602でNO)、この処理を終了し、マスタ動作停止状態又はスレーブ化状態を継続する。一方、上限値を越えたならば(S602でYES)、外部スキャンツール6がKライン3にアクセスしない期間が所定トリップ数を越えて続いていることになり、外部スキャンツール6が取り外されて車両が修理工場等からユーザーの手元に戻ったと判断して、トランスポンダ4の動作を元どおりに復帰する。
なお、本実施形態において、図13に示すようなジョイント線35を備えたトランスポンダ4を用意してもよい。このジョイント線35は、一端にKライン3のコネクタ32と接続可能なコネクタ35aと、他端にKライン3のコネクタ32と同様のコネクタ35bを備えたOBDII対応の通信線であって、両コネクタ35a、35bの中間部分から分岐してトランスポンダ4に接続されている。そして、既存のOBDII対応のエンジンECU2にこのジョイント線35のコネクタ35aを接続すれば、極めて容易にOBDIIIに対応できるようになるうえ、既存のOBDII対応の外部スキャンツール6もジョイント線35のコネクタ35bに接続して従来と同様にして使用できる。
また、上記実施形態では、Kライン3に車載ECUとしてエンジンECU2を接続した車両診断システムを例示したが、Kライン3にはこのエンジンECU2と並列になるように他の車載ECUが接続されていてもよい。
[第2実施形態]
図14は、本実施形態の車両診断システムの全体を表す概略ブロック図である。この本実施形態の車両診断システム101は、エンジンECU102、Kライン103、トランスポンダ104を備えており、トランスポンダ104はKライン103のコネクタ132に接続可能なコネクタ141とKライン103のコネクタ132と同様のコネクタ142を備えている。そして、トランスポンダ104のコネクタ141をKライン103のコネクタ132に接続することにより、エンジンECU102とトランスポンダ104がKライン103を介して接続される。また、外部スキャンツール106のコネクタ166は、トランスポンダ104のコネクタ142に着脱可能に装着される。なお、エンジンECU102、Kライン103、トランスポンダ104、外部スキャンツール106、レシーバシステム105の基本構成については、第1実施形態のエンジンECU2、Kライン3、トランスポンダ4、外部スキャンツール6と同様なので、ここではその説明を省略する。
次に、本実施形態の車両診断システム101について、トランスポンダ104の動作を説明する。トランスポンダ104は、レシーバシステム105との無線通信をベース処理とし、外部スキャンツール106とのISO9141−2プロトコルによるKライン103経由の通信を割込処理としている。また、本実施形態では、トランスポンダ104はレシーバシステム105の無線要求があったときのみ、その要求について無線通信フォーマット(図4参照)からSAEで定められた通信フォーマット(図6参照)にフォーマット変換し、エンジンECU102に送信し、その応答を再びフォーマット変換して無線でレシーバシステム105に返信する。
図15は、トランスポンダ104のべース処理を表すフローチャートである。このベース処理は、トランスポンダ104の図示しない電源が投入されることにより開始される。この処理が開始されると、まず、S700において、許可フラグをオン、無線フラグをオフにセットする。なお、許可フラグは、Kライン103上にレシーバシステム105からの要求又はそれに対するエンジンECU102からの応答のKラインデータが存在する場合には、外部スキャンツール106からのKラインデータが割り込むとこのKラインデータと既にKライン103に存在するKラインデータとが衝突するおそれがあるため、割込処理を禁止すべくオフにセットされ、それ以外の場合には、割込処理を許可すべくオンにセットされるフラグである。また、無線フラグは、レシーバシステム105からトランスポンダ104のID(自己ID)を含む要求メッセージとしての無線データを受信してからレシーバシステム105にその要求メッセージに対する応答メッセージとしての無線データを送信するまでのあいだオンにセットされ、それ以外はオフにセットされる。
続くS701において、レシーバシステム105からの無線データをサンプリングする所定のタイミングか否かを判断し、所定タイミングでなければ(S701でNO)、そのまま待機し、所定タイミングならば(S701でYES)、S702に進み、無線データを受信し、その受信した無線データが自己IDを含むか否かを判断する。そして、受信した無線データが自己IDを含まなければ(S702でNO)、S701に戻り、自己IDを含んでいれば(S702でYES)、続くS703において、許可フラグはオンのまま、無線フラグをオンにセットする。
続くS704において、レシーバシステム105からの要求メッセージとしての無線データ(図4参照)をKラインデータ(図6参照)にフォーマット変換し、その後S705において、許可フラグをオフにセットしたうえで、S706においてそのKラインデータをエンジンECU102に送信する。その後、S707において、エンジンECU102から応答メッセージとしてのKラインデータを受信し、S708においてそのKラインデータにVINを付加して無線データにフォーマット変換し、S709においてその無線データをレシーバシステム105へ送信し、その後S700に戻って許可フラグをオン、無線フラグをオフにセットする。
次に、トランスポンダ104の割込処理について図16のフローチャートに基づいて説明する。この割込処理は所定タイミング毎に開始される。この処理が開始されると、トランスポンダ104は、まず、S801において、外部スキャンツール106から割込要求があったか否かを判断し、S802で許可フラグがオンか否かを判断する。外部スキャンツール106からの割込要求がないか、許可フラグがオフであれば(S801又はS802でNO)、この処理を終える。なお、外部スキャンツール106の割込要求は、オペレータが外部スキャンツール106の入力装置からダイアグ情報を取得する要求をキー入力したときに発生する。
S801で外部スキャンツール106の割込要求があり、S802で許可フラグがオンである場合(S801、S802で共にYES)、S803に進んで無線フラグがオンか否かを判断し、無線フラグがオフであれば(S803でNO)、トランスポンダ104は、未だレシーバシステム105から自己IDを含む無線データを受信していないものの、外部スキャンツール106とエンジンECU102とのKライン経由の通信が長時間かかるとその途中でレシーバシステム105から無線データを受信することが起こり得るので、S804において、そのような場合に備えてレシーバシステム105にビジー信号(現在別の処理中であり、応答不可能を意味する信号)を送信する準備をする。そして、続くS805において、外部スキャンツール106からの要求メッセージをそのままKライン103へ送信する。トランスポンダ104と外部スキャンツール106との通信は、Kラインデータを用いて行われるため、そのままKライン103へ送信できるのである。その後、S806において、エンジンECU102からその要求メッセージに対する応答メッセージとしてのKラインデータを受信し、S807において、そのKラインデータをそのまま外部スキャンツール106へ送信する。その後、S808において、ビジー信号の送信準備を解除して、この処理を終えてベース処理に復帰する。なお、S805〜S807の処理中にレシーバシステム105から無線データを受信したら、トランスポンダ104は準備していたビジー信号をレシーバシステム105に返信する。
S803において、無線フラグがオンであれば(S803でYES)、トランスポンダ104は、既にレシーバシステム105から自己IDを含む無線データを受信しているものの、この無線データをKラインデータにフォーマット変換してこれからエンジンECU102に送信しようとする段階のため、割込処理を優先させるべく、S809においてレシーバシステム105へビジー信号を送信する。その後、S810において、外部スキャンツール106からの要求メッセージをそのままKライン103へ送信し、S811において、エンジンECU102からその要求メッセージに対する応答メッセージとしてのKラインデータを受信し、S812において、そのKラインデータをそのまま外部スキャンツール106へ送信する。その後、S813において、レシーバシステム105へのビジー信号の送信を解除して、この処理を終えてベース処理に復帰する。
以上のように、本実施形態の車両診断システム101によれば、第1実施形態と同様、従来のOBDIIシステムにトランスポンダ104を付加するのみで簡易にOBDIIIに対応でき、また、トランスポンダ104のコネクタ142に外部スキャンツール106を接続できるため、従来どおりOBDIIにも対応できる。
また、トランスポンダ104は第1実施形態と同様、レシーバシステム105に対してVINを付加したデータを返信するため、レシーバシステム105はそのVINによってどの車両からデータが送られてきたのかを容易に特定できる。更に、トランスポンダ104は、レシーバシステム105からの要求に基づいてエンジンECU102からダイアグ情報を読み出す動作を行っている場合には、外部スキャンツール106に対して割込を禁止し、外部スキャンツール106からの要求に基づいてエンジンECU102からダイアグ情報を読み出す動作を行っている場合には、レシーバシステム105にビジー信号を送信するため、Kライン103上でデータ衝突を起こすことなく両者からの要求にスムーズに対処できる。
尚、本実施形態においても、第1実施形態と同様、トランスポンダ104はレシーバシステム105の無線要求の有無にかかわらず、所定タイミング毎にエンジンECU102にダイアグ情報を要求しその応答を自己のバックアップRAMに記憶し、レシーバシステム105から無線要求があった場合又は外部スキャンツール106から要求があった場合には、そのバックアップRAMに記憶したダイアグ情報を読み出して応答するようにしてもよい。この場合、レシーバシステム105又は外部スキャンツール106から要求を受けてから応答するまでの時間が短くなるうえ、Kライン103上ではトランスポンダ104とエンジンECU102との通信のみが行われるのでデータ衝突のおそれがない。