【実施例1】
【0021】
図1に本発明の一つの実施例を適用する車両構成を示す。車両はネットワーク110とネットワーク120の二つのネットワークを有する。ネットワーク110とネットワーク120はそれぞれ電気的に独立したバス113およびバス123でネットワークのノードである車載ECU111,112,121,122を接続している。
【0022】
ネットワークプロトコルとしては、CAN通信やLIN通信あるいはFlexRay通信が用いられる。CAN通信においては、通信データにIDという識別子を付加してメッセージを構成し、前記IDの数値に応じて優先順位を決定する。各メッセージの優先順位であるID、送信するECUと受信するECUは、車載用ネットワークの設計時に決定し、各ECUのメモリに格納されている。各ECUはバス上の電気信号を監視して、通信中のIDを取得し、受信すべきメッセージを特定する。
【0023】
ネットワーク上で複数のECUから同時にメッセージの送信が行われる場合、優先順位が最も高いIDのECUが送信を行い、他のECUはバスが空くまで待機する。すなわち、優先順位の高いIDのデータほど遅延なく通信可能であり、優先順位の低いIDのデータは遅延を起こしやすい。
【0024】
車載ECU111および車載ECU112はバス113と電気的に接続されており、バス123とは電気的には接続されていない。一方、車載ECU121および車載ECU122はバス123と電気的に接続されており、バス113とは電気的には接続されていない。
【0025】
ゲートウェイECU100は、バス113およびバス123の両方と電気的に接続されている。このため、ゲートウェイECU100は、たとえばバス113のデータを受信し、バス123に送信することで、車載ECU111から車載ECU122へのデータ通信を可能とする。これが、ゲートウェイECU100が行う、車載ネットワーク110と車載ネットワーク120の間のゲートウェイ通信である。
【0026】
ゲートウェイ通信を行うためのゲートウェイECU100の構成を
図2に示す。
図2においては、車載ネットワーク110から車載ネットワーク120へのゲートウェイ通信について示すが、ゲートウェイECU100に車載ネットワーク120から車載ネットワーク110への構成を追加することで、双方向のゲートウェイ通信が可能である。
【0027】
バス113を介して車載ネットワーク110上のECUから受信したメッセージ220は、受信器205により受信バッファ200へ格納される。メッセージ220は、メッセージ228としてバス123へ送信されるが、車載ネットワーク110と車載ネットワーク120は独立しており、車載ネットワーク120にて設計された送信用IDにメッセージ220のIDを変更する。
【0028】
ゲートウェイECU100は、各メッセージの車載ネットワーク110のIDと車載ネットワーク120のIDとの関係をROMあるいはRAM上のID変換テーブル210として保有している。ID変換処理202は、受信バッファ202のメッセージ221のIDを、ID変換テーブル210を用いてネットワーク120上の該当IDに変換し、メッセージ222として出力する。たとえば、メッセージ221のIDがID11である場合、変換されてメッセージ222はID23になる。
【0029】
メッセージ222は、送信待ちテーブル更新処理203のアルゴリズムによって通常送信キュー211に登録され、遅延と判断された場合、通常送信キュー211の遅延しているメッセージが、遅延送信キュー212に登録される。
【0030】
送信処理204は、送信バッファ201が空の状態の場合に、遅延送信キュー212の先頭のメッセージを送信バッファ201に格納する。遅延送信キュー212が空の場合、通常送信キュー211の先頭のメッセージを送信バッファ201に格納する。
【0031】
送信器206はバス123に送信バッファ201のIDで送信を試み、他のECUとの優先順位により送信権を取得した場合、送信バッファ201のメッセージを送信して、送信バッファ201をクリアする。
【0032】
送信完了により、送信処理204は、遅延送信キュー212あるいは通常送信キュー211の該当メッセージを削除する。これにより、該当キューのメッセージの優先順位が一つずつ繰り上げられる。
【0033】
送信バッファ201が空となっているので、送信処理204が次のメッセージの送信を繰り返す。
【0034】
遅延が発生していない状態で、送信予定のメッセージ227が送信権を取得できず、バス123への送信を待機している状態で、バス113より新たな受信があり、遅延送信キューが更新された場合、送信処理204は現在の送信をキャンセルし、送信バッファ201を遅延送信キューのメッセージで更新してもよい。この処理により、遅延が発生した場合に直ちに遅延を軽減する動作へ移行し、遅延を軽減することが可能である。
【0035】
次に、送信待ちテーブル更新処理203のアルゴリズムについて
図3に示す。
処理301は、メッセージ222の送信IDを取得し、処理302にて、メッセージ222の送信IDをキーとして、通常送信キュー211内を検索し、同一IDのメッセージの取得を試みる。
【0036】
処理303にて同一IDのメッセージの取得可否判定を行い、取得した場合は、処理304へ進む。一方、同一IDのメッセージを取得できない場合、処理306へ進む。
【0037】
処理304および処理305では、同一IDで既存のメッセージが検出されたため、このゲートウェイECU100にデータが停滞しているため通信の遅延が発生する可能性があると判断して、遅延軽減のための処理を行う。
【0038】
処理304では通常送信キュー211から同一IDで既存のメッセージを削除し、通常送信キュー211を更新する。そして処理305において、同一IDで既存のメッセージを遅延送信キュー212の末尾に追加する。
【0039】
処理306では、メッセージ222を通常送信キュー211へ追加する。本実施例においては、受信元ネットワークから受信したメッセージは受信順に送信先ネットワークに送信するため、テーブルとしては、メッセージをテーブルの末尾に追加するキューを採用している。通常送信キュー211と遅延送信キュー212として、IDによる優先順位を採用したテーブルとしても構わない。
【0040】
図3の送信待ちテーブル更新処理203のアルゴリズムを適用した結果の送信待ちテーブルを時系列で説明した図を
図4に示す。
【0041】
時刻t1において、通常送信キュー211にはメッセージ401、 メッセージ410およびメッセージ411が格納されており、通常送信キュー211の先頭にあるメッセージ401が送信バッファ201にコピーされている。
【0042】
時刻t2において、メッセージ401が送信される前に、ID変換処理202よりメッセージ402の送信要求が発生した。メッセージ402のIDであるID45を通常送信キュー211から検索する。その結果、メッセージ410が同一IDのため、同一IDが存在すると判定する。メッセージ410の送信動作を優先するために、メッセージ410を通常送信キュー211から削除して遅延送信キュー212へ移動する。一方、メッセージ402は、通常送信キュー211の末尾に追加する。
【0043】
遅延送信キュー212の先頭が更新されたので、メッセージ401の送信をキャンセルし、送信バッファ201をメッセージ410で更新する。これにより、メッセージ410の送信動作を開始し、バスへの送信権が得られた場合に、メッセージ410を送信する。
【0044】
次に、時刻t3において、メッセージ410が送信される前に、ID変換処理202よりメッセージ403の送信要求が発生した。メッセージ403のIDであるID28を通常送信キュー211から検索する。その結果、メッセージ411が同一IDのため、同一IDが存在すると判定する。メッセージ411の送信動作を優先するために、メッセージ411を通常送信キュー211から削除して遅延送信キュー212の末尾へ移動する。遅延送信キュー212には既にメッセージ410が登録されており、遅延送信キュー212においては先着順で遅延時間が長いと考慮することができるので、通常送信キュー211からのメッセージの登録は遅延送信キュー212の末尾へ行う。
【0045】
この場合、遅延送信キュー212の先頭は更新されていないので、送信バッファ201は更新しない。
【0046】
このように、優先順位の低いIDのメッセージがボトルネックとなり、ゲートウェイ送信が滞り、ゲートウェイECU内で送信待ちメッセージが増加したとしても、本実施例の装置により、遅延が発生したメッセージが優先されるため、遅延を軽減することが可能である。
【0047】
また、周期が一定ではない通信に対しても、ゲートウェイECU内で送信待ちのメッセージが重複した時点で送信の優先順位が変更されるため、メッセージの遅延を解消することが可能である。
【実施例2】
【0048】
次に、本発明の第二の実施例を示す。対象とするネットワークは第一の実施例と同様である。第二の実施例のゲートウェイECU100の構成を
図5に示す。
第一の実施例との差異は、メッセージの優先順位の管理方法である。
第二の実施例においては、メモリ上のテーブルである送信待ちテーブル511を用いて、メッセージ送信の優先順位を管理する。
送信待ちテーブル511は、送信予定のメッセージについて優先順位、送信IDとメッセージのデータを保持している。
【0049】
送信待ちテーブル更新処理503は、バス113から新たにメッセージを受信して、メッセージ222を送信する場合に、送信待ちテーブル511を更新する。送信待ちテーブル更新処理503は、まず、メッセージ222と同一のIDのメッセージが送信待ちテーブル511に存在するかを検索する。同一のIDのメッセージがない場合、メッセージ222に最も低い優先順位を付加して、送信待ちテーブル511に格納する。同一のIDのメッセージが存在する場合、例えば送信ID45であるメッセージ2113とすると、メッセージ2113の優先順位を遅延数505の次の優先に設定し、遅延数505をインクリメントする。詳細は
図6に示す。
【0050】
送信処理504は、送信待ちテーブル511のメッセージのうち、優先順位の高い順にメッセージを送信バッファ201にコピーすることで、送信待ち状態とする。送信待ち状態のメッセージは、バス123の送信権を得られた場合に、バス123に送信される。送信が完了し、送信バッファ201が空となったことを検知して、送信処理504は、遅延数505がゼロ以上の場合に、遅延数505をデクリメントする。
【0051】
次に第二の実施例の送信処理を時系列で示した図が
図6である。
【0052】
時刻t1において、送信の遅延が発生していないとする。送信待ちテーブル511において、優先順位の最も高い優先順位1はメッセージ601であり、優先順位2はメッセージ602、この時点で最も優先順位の低いメッセージは、メッセージ603の状態である。優先順位1のメッセージ601が送信バッファ201に格納され、バス上の送信権が得られると、バス上に送信される。
【0053】
時刻t2において、ID変換処理202からメッセージ604の送信依頼がある場合、送信待ちテーブル511から、メッセージ604と同一のIDのメッセージを検索する。この場合、メッセージ603が該当する。そこで、メッセージ603の優先順位を優先順位1に設定し、メッセージ601および602の優先順位は順次落として更新する。そして、メッセージ604を最も優先順位の低い優先順位4として、送信待ちテーブル511に格納する。メッセージ603と、メッセージ604が同一のIDであるため、送信遅延と判断し、送信遅延数505をインクリメントする。
【0054】
送信待ちテーブル511の優先順位1のメッセージが変更となったため、送信バッファは、メッセージ603で更新する。これにより、メッセージ603が優先的に送信されることになる。
【0055】
次に時刻t3において、ID変換処理202からメッセージ605の送信依頼がある場合、送信待ちテーブル511から、メッセージ605と同一のIDのメッセージを検索する。この場合、メッセージ602が該当する。このとき、送信遅延数505が1なので、メッセージ602の優先順位は優先順位2とする。これにより、最も遅延しているメッセージ603の送信は継続される。
【0056】
次に時刻t4において、メッセージ603の送信に完了した場合、送信バッファ201が空となり、送信待ちテーブル511からもメッセージ603を削除し、その他のメッセージの優先順位を一つずつ優先的にするように更新する。送信遅延数505が1以上なので、送信完了したメッセージの遅延が解消したことになり、送信遅延数505をデクリメントする。一方、優先順位1のメッセージがメッセージ602に変更となるので、送信バッファ201にはメッセージ602が格納され、送信待機状態となる。
【0057】
以上の第二の実施例により、送信が遅延しているメッセージについて、ECU内で送信待ちのメッセージが重複した時点で送信の優先順位が変更されるため、送信遅延の解消に効果がある。