以下、図面を参照して、本発明の実施の形態を説明する。
本ゲートウェイ装置は、複数の電子制御装置(ECU)が接続される複数のネットワークを相互に接続するように介在し、一のネットワークに接続される電子制御装置から複数の異なる送信周期でそれぞれ送信されるデータフレームを、当該データフレームに含まれる識別子(ID)に応じた順序で他のネットワークに転送(又は送信)するものである。
図1は、本発明の一実施形態に係るゲートウェイ装置の構成を示す図である。図1では、本ゲートウェイ装置は車内ネットワークに接続されている。
図示の例では、本ゲートウェイ装置10にはネットワークN1〜N4をそれぞれ構成するバスB1〜B4が接続されており、これにより、バスB1、B2とバスB3、B4との間が、本ゲートウェイ装置10を介して互いに通信可能に接続される。バスB1〜B4には、複数の電子制御装置(ECU)1a〜1gが接続されており、これらのECU1a〜1gは、ゲートウェイ装置10を介して、所定の通信プロトコルに従って互いに通信することができる。本実施形態では、通信プロトコルとして、周知のCAN(controller area network)プロトコルを用いる。
ECU1a〜1gは、例えばエンジン制御用のECU、ドア制御用のECU、エアバック制御用のECU、ナビゲーションシステム用のECUであり、各ECUは、例えば中央処理装置(CPU、Central Processing Unit)およびメモリを備えるコンピュータとして実現される。
本実施形態では、各データフレームの優先度が、当該データフレームの送信周期に応じて定められており、当該送信周期が短いほど高い優先度が割り当てられ、従ってより小さなID番号が割り当てられる。また、送信周期が同じで種類の異なるデータフレームが複数存在する場合には、これら複数のデータフレームには、少なくとも当該送信周期よりも長い送信周期を持つデータフレームよりも高い優先度である範囲内において、異なる優先度のID番号を割り当てることができる。さらに、当該異なる優先度のIDは、当該データフレームの送信元である電子制御装置(ECU)の優先度や重要度に応じて割り当てられるものとすることができる。
ゲートウェイ装置10(図1)は、バスB1及びB2からデータフレームを受信してバスB3又はB4にデータフレームを送信する中継ユニット12と、バスB3及びB4からデータフレームを受信してバスB1又はB2にデータフレームを送信する中継ユニット14と、を有している。
中継ユニット12と14とは、データフレームを送受信するバスの組み合わせのみが異なり、その構成及び動作(作用)は同様である。
このため、説明を簡潔にして理解を容易にすべく、以下では、中継ユニット12を例にとり、ゲートウェイ装置10のより詳細な構成及び動作を説明する。
図2は、ゲートウェイ装置10の中継ユニット12の構成を示す図である。
中継ユニット12は、CANモジュール100、102と、ルート検索ユニット104と、送信制御ユニット106とを備える。CANモジュール100、102は、CANプロトコルに従ってデータフレームを送受信するよう構成されており、例えば上述した汎用のCANインタフェースモジュールにより構成することができる。
CANモジュール100は、受信機110と、送信機112と、受信機110が受信したデータフレームを格納する記憶装置である受信MB(メッセージボックス、Massage Box)114と、送信機112から送信されるデータフレームを一時格納する記憶装置である6つの送信MB116、118、120、122、124、126を有する。ここで、受信MB114及び送信MB116〜126は、例えばRAM(Random Access Memory)により構成することができる。
同様に、CANモジュール102は、受信機130と、送信機132と、受信機130が受信したデータフレームを格納する記憶装置である受信MB134と、送信機132から送信されるデータフレームを一時格納する記憶装置である6つの送信MB136、138、140、142、144、146を有する。ここで、受信MB134及び送信MB136〜146は、例えばRAMにより構成することができる。
CANモジュール100及び102の受信機110及び130は、それぞれバスB1及びB2に接続されており、CANモジュール100及び102の送信機112及び132は、それぞれバスB3及びB4に接続されている。
CANモジュール100及び102は、それぞれ、バスB1及びB2から受信したデータフレームを受信MB114及び受信MB134に格納する。また、CANモジュール100及び102は、送信MB116〜126及び136〜146に一時的に格納されたデータフレームを、それぞれ優先度の高い順にバスB3及びB4に送信する。
CANモジュール100及び102における上記処理は、本実施形態ではハードウェアで実現されているものとする。なお、代替的に、CANモジュール100及び102がそれぞれCPU等のプロセッサを備えるものとし、当該各プロセッサが所定のソフトウェアプログラムをそれぞれ実行することにより上記処理が行われるものとしてもよい。
ルート検索ユニット104は、検索エンジン150、152と、RAM等の記憶装置で構成されるレジスタ154、156と、フラッシュメモリ等で構成される不揮発性メモリ158、160と、を有している。
レジスタ154、156は、それぞれ、検索エンジン150、152から出力されるデータフレームを一時記憶する。
不揮発性メモリ158には、バスB1から受信されるデータフレームの転送ルート、すなわち、当該データフレームに含まれるIDに応じてバスB3又はB4のいずれのバスへ送信すべきかを示すルーティングマップ162が予め記憶されている。同様に、不揮発性メモリ160には、バスB2から受信されるデータフレームの転送ルート、すなわち、当該データフレームに含まれるIDに応じてバスB3又はB4のいずれのバスへ送信すべきか、を示すルーティングマップ164が予め記憶されている。
検索エンジン150及び152は、本実施形態では、汎用ロジックIC(Integrated Circuit)や大規模集積回路(LSI、Large scale Integration)、あるいはASIC(Application Specific Integrated Circuit)等のハードウェアにより構成されており、それぞれルーティングマップ162及び164を参照し、受信機110及び130により受信されたデータフレームの転送ルートを検索する。すなわち、当該受信されたデータフレームをバスB3又はB4のいずれに送信すべきかを特定する。
より詳細には、検索エンジン150は、CANモジュール100の受信機110によりバスB1からのデータフレームの受信が完了し当該受信されたデータフレームが受信MB114に格納されたことに応じて、当該受信MB114からデータフレームを読み出すと共にルーティングマップ162を参照し、当該データフレームのIDに基づいて当該データフレームを送信すべき転送先のバス(バスB3又はB4のいずれか)を特定する。このとき、検索エンジン150は、受信したデータフレームのIDに対応する転送先の情報がルーティングマップ162に含まれていないときは、当該データフレームを、転送すべきデータフレームではないものとして破棄する。
そして、検索エンジン150は、上記特定した転送先のバスがバスB3であれば、受信MB114から読み出した上記データフレームをレジスタ154に格納し、上記特定した転送先のバスがバスB4であれば当該データフレームをレジスタ156に格納する。
同様に、検索エンジン152は、CANモジュール102の受信機130によりバスB2から受信されたデータフレームが受信MB134に格納されたことに応じて、当該データフレームを受信MB134から読み出すと共にルーティングマップ164を参照し、当該データフレームのIDに基づいて当該データフレームの転送先のバスを特定して、当該特定したバスに対応するレジスタ154又は156に、当該データフレームを格納する。また、検索エンジン152は、受信したデータフレームのIDに対応する転送先の情報がルーティングマップ164に含まれていないときは、当該データフレームを破棄する。
なお、検索エンジン150及び152は、上述したように本実施形態ではハードウェアにより構成されるものとしたが、代替的に、CPU等のプロセッサとRAMやROM(Read Only Memory)等の記憶装置とを備えるコンピュータが、所定のソフトウェアプログラムを実行することにより実現されるものとすることもできる。
送信制御ユニット106は、バスB3へ送信すべきデータフレームを格納する3つの送信バッファ170〜174と、バスB4へ送信すべきデータフレームを格納する3つの送信バッファ176〜180と、不揮発性メモリ190と、処理ユニット192と、を有している。
各送信バッファ170〜180は、例えばRAMにより構成される。送信バッファ170〜180は、それぞれ、所定数(例えば5個)のデータフレームを格納できるように当該所定数のデータフレーム格納領域を備えている。
不揮発性メモリ190は、例えばフラッシュメモリやEEPROM(Electrically Erasable Programmable Read-Only Memory)、あるいはハードディスク装置等により構成される。不揮発性メモリ190には、ID番号と当該ID番号を持つデータフレームの送信周期との対応情報である送信周期情報194が、予め記憶されている。
処理ユニット192は、CPU等のプロセッサとRAMやROM等の記憶装置とを備えるコンピュータであり、上記プロセッサ(不図示)がソフトウェアプログラムを実行することにより、データフレームに含まれる識別子に基づいて、送信バッファ170〜180へのデータフレームの書込みや読み出しを行ったり、送信MB116〜126、136〜146へのデータフレームの書込み等を行う。
上述したように、本実施形態では、データフレームの優先度が当該データフレームの送信周期によって定められており、当該送信周期がより短いデータフレームにはより高い優先度(より小さいID番号)が割り当てられている。また、送信周期が同じで種類の異なるデータフレームが複数存在する場合には、少なくともより長い送信周期を持つデータフレームよりも高い優先度である範囲内において、それぞれ異なる優先度のIDが割り当てられている。不揮発性メモリ190に記憶されている送信周期情報194には、これらのIDと送信周期との対応関係の情報が含まれている。
送信バッファ170〜174、176〜180は、それぞれ各送信周期に対応付けられており、各送信バッファ170〜180には当該対応付けられた送信周期を持つデータフレームだけが格納される。
本実施形態では、例えば送信周期は10ms、20ms、及び30msの3種類であり、送信バッファ170及び176が送信周期10msに、送信バッファ172及び178が送信周期20msに、送信バッファ174及び180が送信周期30msに、それぞれ対応付けられている。
さらに、送信バッファ170〜174は、それぞれ、CANモジュール100に備える送信MB116〜126のいずれか一つ以上の送信MBが対応付けられ、送信MB116〜126には、それぞれ、当該送信MBに対応付けられた送信バッファに格納されているデータフレームのみが格納される。
同様に、送信バッファ176〜180は、それぞれ、CANモジュール102に備える送信MB136〜146のいずれか一つ以上の送信MBが対応付けられ、各送信MB136〜146には、それぞれ、当該送信MBに対応付けられた送信バッファに格納されているデータフレームのみが格納される。
本実施形態では、例えば、送信周期10msに対応付けられた送信バッファ170には送信MB116及び118が、送信周期20msに対応付けられた送信バッファ172には送信MB120及び122が、送信周期30msに対応付けられた送信バッファ174には送信MB124及び126が、それぞれ対応付けられている。また、同様に、送信周期10msに対応付けられた送信バッファ176には送信MB136及び138が、送信周期20msに対応付けられた送信バッファ178には送信MB140及び142が、送信周期30msに対応付けられた送信バッファ180には送信MB144及び146が、それぞれ対応付けられている。
これらの、各送信周期と、送信バッファ170〜180と、送信MB116〜126、136〜146との対応付けは、予め定めて、例えば処理ユニット192のプロセッサ(不図示)が実行するソフトウェアプログラムの中で規定しておくことができる。また、代替的には、これらの対応付けに関する情報を不揮発性メモリ190に予め記憶させておき、処理ユニット192が、不揮発性メモリ190に記憶された当該対応付けに関する情報を参照しつつ、処理を行うものとすることができる。
送信制御ユニット106の処理ユニット192における処理は、以下のように行われる。
処理ユニット192は、レジスタ154にデータフレームが格納されると、当該データフレームをレジスタ154から読み出すと共に、不揮発性メモリ190が記憶する送信周期情報194を参照し、上記読み出したデータフレームに含まれるIDに基づいて、当該データフレームの送信周期を特定する。
そして、処理ユニット192は、レジスタ154から読み出したデータフレームを、送信バッファ170〜174のうち上記特定した送信周期に対応する一の送信バッファに格納する。例えば、上記特定された送信周期が10msであれば当該データフレームを送信バッファ170に格納し、上記特定された送信周期が20ms又は30msであれば、当該データフレームを送信バッファ172又は174にそれぞれ格納する。
同様に、処理ユニット192は、レジスタ156にデータフレームが格納されると、当該データフレームをレジスタ156から読み出すと共に、不揮発性メモリ190が記憶する送信周期情報194を参照し、上記読み出したデータフレームに含まれるIDに基づいて、当該データフレームの送信周期を特定する。
そして、処理ユニット192は、レジスタ156から読み出したデータフレームを、送信バッファ170〜174のうち上記特定した送信周期に対応する一の送信バッファに格納する。例えば、上記特定された送信周期が10msであれば当該データフレームを送信バッファ176に格納し、上記特定された送信周期が20ms又は30msであれば、当該データフレームを送信バッファ178又は180にそれぞれ格納する。
なお、レジスタ154及び156にデータフレームが格納されたか否かの情報は、ルート検索ユニット104が送信制御ユニット106に対し信号線(不図示)を介して通知するものとしてもよいし、ルート検索ユニット104内に上記情報を示すステータスレジスタ(不図示)を設けるものとし、送信制御ユニット106の処理ユニット192が所定の時間間隔で当該ステータスレジスタのデータを読み出して当該情報を得るものとしてもよい。また、あるいは、送信制御ユニット106の処理ユニット192が、所定の時間間隔で、レジスタ154及び156からデータフレームを読み出してレジスタ154及び156をリセット(例えばリセット値0に設定)するものとし、当該読み出したデータがリセット値でなければ、当該読み出したデータを新たに受信されたデータフレームとして処理するものとしてもよい。
さらに、処理ユニット192は、CANモジュール100及び102にそれぞれ備える送信MB116〜126及び136〜146の状態を監視し、送信MB116〜126、136〜146の中に送信待ちのデータフレームが格納されていない送信MBがあるときは、送信バッファ170〜180のうち当該送信MBに対応付けられた送信バッファからデータフレームを読み出して、当該読み出したデータフレームを当該送信MBに格納する。その際、処理ユニット192は、当該送信バッファから優先度順にデータフレームを読み出して、当該読み出したデータフレームを上記送信MBに格納するものとしてもよい。
上述したゲートウェイ装置10では、送信周期のより短いデータフレームにより高い優先度のIDが割り当てられるため、CANモジュール100、102は、送信MB116〜126、136〜146に格納されたデータフレームを従来と同様に優先度順に送信するだけで、より短い送信周期を持つデータフレームを優先的に送信することとなる。
また、上述した構成を有するゲートウェイ装置10は、データフレームに含まれるIDから当該データフレームの送信周期を特定し、送信バッファ170〜180のうち当該送信周期に対応付けられた送信バッファに格納する。また、本ゲートウェイ装置10では、各送信バッファ170〜180に対しそれぞれ一つ以上(本実施形態では二つ)の送信MB(すなわち、送信MB116〜126、136〜146の内のいずれか一つ以上の送信MB)を予め対応付け、各送信バッファ170〜180に格納したデータフレームを、それぞれ当該送信バッファに対応付けられた送信MBにのみ格納する。
これにより、本ゲートウェイ装置10では、送信バッファ170〜180を介してCANモジュール100、102の送信MB116〜126、136〜146も送信周期に対応付けられることとなり、各送信MB116〜126、136〜146は、例えば送信周期10ms用、20ms用、30ms用として使い分けられることとなる。
このため、例えば送信周期の短い(従って、優先度の高い)データフレームが新たに受信された場合には、当該データフレームは、当該短い送信周期に対応付けられた送信バッファを介して当該短い送信周期用の送信MBに格納され、より長い送信周期の(従って、より優先度の低い)データフレームが他の送信MBに格納されていても、当該より長い送信周期のデータフレームの送信を待つことなく、速やかに送信されることとなる。
したがって、本ゲートウェイ装置10においては、より高い優先度のデータフレームが受信されて送信バッファ内に格納されたとしても、従来のように送信バッファ内の当該優先度の高いデータフレームと送信MB内の優先度の低いデータフレームとの入れ替えを行う必要はなく、データフレームの転送に伴う処理負荷を低減することができる。
また、上述のように、より短い送信周期のデータフレームはより高い優先度を持ち、かつ送信MB116〜126、136〜146は送信周期毎に対応付けられて使い分けられるので、同一の送信周期を持つデータフレームは、異なるIDを持つものであっても、CANモジュール100、102が行う送信動作の観点からは実質的に同一の優先度を持つものとなる。その結果、一の送信周期を持つデータフレームが、その時点におけるCANモジュール100又は102内において最も高い優先度を持つものとなって送信MBから当該バス上へ送信されれば(例えば、送信周期10msの一のデータフレームが送信MB116又は118からバスB3上へ送信されれば)、当該送信周期用に対応付けられた送信バッファ内(例えば、送信バッファ170内)のデータフレームは当該送信周期用の送信MB(例えば、送信MB116及び118)に次々に格納されて送信されることとなり、送信周期のより長いデータフレームの存在により送信が遅延してしまう問題は生じない。
すなわち、送信周期に応じて互いに対応付けられた送信バッファと送信MB(例えば、送信バッファ170と送信MB116および118)との間において当該送信MB内に最も高い優先度のデータフレームが格納されていなくても、他の送信MBに格納された送信周期のより長いデータフレームの存在により送信が遅延してしまうことはない。したがって、本ゲートウェイ装置10では、互いに対応付けられた送信バッファと送信MBとの間でのデータフレームの入れ替えを行う必要はなく、データフレームの転送に伴う処理負荷を更に低減することができる。
次に、上述した送信制御ユニット106の動作を、具体的な例を挙げて説明する。
図3は、バスB1及びB2に接続されたECU1a〜1cから送信されるデータフレームの、送信周期及びID(識別子)の割り当ての一例を示す図である。図示の例では、ECU1a〜1cのそれぞれについて、送信周期が10ms、20ms、30msの3種類のデータフレーム1〜9が送信されるものとしている。また、ECU1a〜1cの重要度が、これらECUが制御する車内装置の重要度に応じて決定されており、ECU1aの重要度が最も高く、続いてECU1b、1cの順に重要度が下がるものとなっている。
そして、図3の例では、まず、送信周期が10msであるデータフレーム1、4、7に対し、それぞれ固有のID番号として110、120、130が割り当てられ、次に、送信周期が20msであるデータフレーム2、5、8に対し、それぞれ固有のID番号であって、送信周期10msのデータフレーム1、4、7よりも数字の大きい(優先度の低い)ID番号として、210、220、230が割り当てられている。また、同様に、送信周期が30msであるデータフレーム3、6、9に対し、それぞれ固有のID番号であって、送信周期20msのデータフレーム2、5、8よりも数字の大きい(優先度の低い)ID番号として、310、320、330が割り当てられている。
図4は、図3に対応して予め定められる送信周期情報194の例である。図4の例では、図3に示す表の図示最も右側の2列の情報が、そのまま送信周期情報194として用いられている(ただし、左右の列は入れ替わっている)。この送信周期情報194は、送信制御ユニット106の不揮発性メモリ190に記憶される。
図5は、図3に示す各データフレームがバスB1及びB2を介して受信される場合の、送信制御ユニット106における具体的な動作を説明するための説明図である。なお、冗長な説明を避けて理解を容易にするため、図5には、バスB3を転送先とするデータフレームの処理ルートを構成する要素、すなわち、ルート検索ユニット104のレジスタ154と、送信制御ユニット106の送信バッファ170〜174と、CANモジュール100の送信MB116〜126及び送信機112のみを示している。
図5のレジスタ154を示す矩形枠内に示された「(ID:110)」との記載は、IDが110であるデータフレームがレジスタ154に格納されていることを示している。当該データフレームは、バスB1に接続されたECU1aから出力され、受信機110、受信MB114、検索エンジン150を介してレジスタ154に入力されたものである。
各送信バッファ170〜174には、それぞれ5つのデータフレーム記憶領域が確保されている。図5においては、送信バッファ170〜174の5つの矩形枠のそれぞれがデータフレーム記憶領域であり、矩形枠内に示された数字は、当該数値をID番号とするデータフレームがその記憶領域に格納されていることを示している。また、データフレーム記憶領域を示す矩形枠内に示された「空」は、当該データフレーム記憶領域が空いている、すなわち、送信待ちのデータフレームが格納されていないことを示している。
送信制御ユニット106の処理ユニット192は、レジスタ154にデータフレームが格納されたことを検知すると、当該データフレームをレジスタ154から読み出し、当該データフレームからIDデータを抽出して、当該データフレームのIDが110であることを検出する。次に、処理ユニット192は、不揮発性メモリ190が記憶する送信周期情報194(図4)を参照し、ID=110が送信周期10msに対応することを特定する。
続いて、処理ユニット192は、上記特定した送信周期10msに対応する送信バッファ170内のデータフレーム記憶領域に空き(図示左端の矩形)があることを確認し、当該空いているデータフレーム記憶領域に、上記読み出したデータフレームを格納する。
なお、送信バッファ170内に空いているデータフレーム記憶領域がない場合、処理ユニット192は、エラー処理として所定の処理を実行することができる。例えば、当該エラー処理は、レジスタ154から読み込んだデータフレームと同じ優先度か又はより低い優先度を持つ送信バッファ170内のデータフレームを、当該読み込んだデータフレームにより上書きする処理とすることができる。
次に、処理ユニット192は、CANモジュール100の送信MB116〜126の空き状況を確認し、10ms用MBである送信MB116、118と、20ms用MBである送信MB122が空いていること検知する。続いて、処理ユニット192は、送信MB116及び118に送信待ちのデータフレームを格納すべく、送信MB116、118に対応付けられた10ms用送信バッファである送信バッファ170の、例えば図示最も右側にある2つのデータフレーム記憶領域に格納されているデータフレーム(ID=110、及び120)を、それぞれ、送信MB116と118に転送する。
また、処理ユニット192は、送信MB122に送信待ちのデータフレームを格納すべく、送信MB122に対応付けられた20ms用送信バッファである送信バッファ172の、例えば図示最も右側にあるデータフレーム記憶領域に格納されているデータフレーム(ID=220)を、送信MB122に転送する。
上述したとおり、本ゲートウェイ装置10では、互いに対応付けられた送信バッファと送信MBとの間においては、当該送信MBに最も高い優先度のデータフレームを常に格納しておく必要はなく、当該送信バッファと送信MBとの間でデータフレームの入れ替えを行う必要はない。このため、図5に示す例では送信MB126内にID=330のデータフレームが格納されており、当該送信MB126に対応付けられた送信バッファ174内にID=330よりも高い優先度(ID=320又は310)を持つデータフレームが格納されているが、処理ユニット192は、送信MB126内のID=330のデータフレームと、送信バッファ174内のID=310のデータフレームとの入れ替えは行わない。
したがって、当該データフレームの入れ替えに伴う処理負荷は発生せず、従って、当該入れ替え処理に付随する、CANモジュール100への送信MB126についてのデータフレーム送信開始の禁止処理や、当該入れ替え後の送信開始許可等の処理負荷も発生しないこととなり、ゲートウェイ装置10全体としての処理負荷が軽減される。
次に、本ゲートウェイ装置10における動作手順について説明する。
ゲートウェイ装置10における処理は、(i)CANモジュール100、102が行う、データフレームの受信処理及び送信処理と、(ii)ルート検索ユニット104が行うルーティング処理と、(iii)送信制御ユニット106が行う送信制御処理と、により構成され、各処理は互いに独立に実行される。
〔受信処理〕
本受信処理は、ゲートウェイ装置10の電源が投入されたときに、CANモジュール100、102において開始する。図6は、受信処理の動作手順を示すフロー図である。なお、受信処理の内容は、CANモジュール100及び102において同様であるので、以下では、CANモジュール100を例に採り、その処理手順を示す。
ゲートウェイ装置10の電源が投入されると、CANモジュール100は、まず、受信機110により、バスB1に接続されたいずれかのECU1a〜1cからバスB1上にデータフレームが送信されたか否かを判断し(S100)、送信されていないときは(S100、No)、ステップS100に戻って、バスB1上にデータフレームが送信されるのを待機する。
一方、バスB1上にデータフレームが送信されたときは(S100、Yes)、当該送信されたデータフレームを受信して(S102)、受信したデータフレームを受信MB114に格納し(S104)、ステップS100に戻って処理を繰り返す。なお、本処理は、ゲートウェイ装置10の電源が断となったときに終了する。
〔送信処理〕
本送信処理は、ゲートウェイ装置10の電源が投入されたときに、CANモジュール100、102において開始する。図7は、送信処理の動作手順を示すフロー図である。なお、送信処理の内容は、CANモジュール100及び102において同様であるので、以下では、CANモジュール100を例に採り、その処理手順を示す。
ゲートウェイ装置10の電源が投入されると、CANモジュール100は、まず、送信MB116〜126のいずれかに送信待ちのデータフレームが格納されているか否かを判断し(S200)、格納されていないときは(S200、No)、ステップS200に戻って、送信MB116〜126のいずれかにデータフレームが格納されるのを待機する。
一方、送信MB116〜126のいずれかにデータフレームが格納されているときは(S200、Yes)、送信MB116〜126に格納されているデータフレームのうち最も優先度の高い(したがって、最も小さいID番号を持つ)データフレームが格納されている送信MBを特定し(S202)、当該送信MBからデータフレームを読み出して(S204)、読み出したデータフレームを、送信機112によりバスB3に送信する(S206)。ここで、バスB3へのデータフレームの送信は、CANプロトコルに準拠して行われる。
ステップS206においてデータフレームを送信すると、CANモジュール100は、ステップS200に戻って処理を繰り返す。なお、本処理は、ゲートウェイ装置10の電源が断となったときに終了する。
〔ルーティング処理〕
本ルーティング処理は、ゲートウェイ装置10の電源が投入されたときに、ルート検索ユニット104により開始される。図8は、ルーティング処理の動作手順を示すフロー図である。なお、本ルーティング処理は、ルート検索ユニット104の検索エンジン150及び152により行われるが、本処理の内容は検索エンジン150及び152において同様であるので、以下では、検索エンジン150を例に採り、その処理手順を示す。
ゲートウェイ装置10の電源が投入されると、検索エンジン150は、まず、CANモジュール100の受信機110により受信されたデータフレームが受信MB114に格納されているか否かを判断する(S300)。すなわち、上述した受信処理(図6)のステップS104の処理によりバスB1から受信されたデータフレームが受信MB114に格納されたことを確認する。
なお、受信MB114にデータフレームが格納されたか否かは、例えば、検索エンジン150が、CANモジュール100に設けられたステータスレジスタ(不図示)のデータを読み出し、当該読み出したデータに含まれる特定のビットにより表わされた受信MB114の状態を示す情報に基づいて判断することができる。
そして、検索エンジン150は、受信されたデータフレームが受信MB114に格納されていないときは(S300、No)、ステップS300に戻ってデータフレームが受信MB114に格納されるのを待機する。
一方、受信MB114にデータフレームが格納されているときは(S300、Yes)、当該データフレームを受信MB114から読み出し(S302)、不揮発性メモリ158が記憶するルーティングマップ162を参照し、上記読み出したデータフレームのIDに基づき、当該データフレームが転送すべきデータフレームか否かを判断し(S304)、転送すべきデータフレームでなければ(S304、No)、当該データフレームを破棄し、ステップS300に戻って新たに受信されたデータフレームが受信MB114に格納されるのを待機する。
一方、受信MB114から読み出したデータフレームが転送すべきデータフレームであるときは(S304、Yes)、当該データフレームのIDとルーティングマップ162とに基づき、当該データフレームを送信すべきバス、すなわち転送先バス(バスB3、B4のいずれか)を特定する(S306)。そして、上記読み出したデータフレームを、上記特定した転送先バスに対応するレジスタ154又は156に格納した後(S308)、ステップS300に戻って、新たに受信されたデータフレームが受信MB114に格納されるのを待機する。なお、本処理は、ゲートウェイ装置10の電源が断になったときに終了する。
検索エンジン152におけるルーティング処理も上記と同様に行われる。すなわち、検索エンジン152におけるルーティング処理により、バスB2から受信されたデータフレームは、そのIDに基づいて、転送すべきデータフレームであるか否かが判断されると共に、転送すべきデータフレームであれば転送先バスが特定される。そして、バスB3へ転送すべきデータフレームであればレジスタ154に格納され、バスB3へ転送すべきデータフレームであればレジスタ156に格納される。なお、検索エンジン150におけるルーティング処理と検索エンジン152におけるルーティング処理は、並行して実行されるものとすることができる。
〔送信制御処理〕
本送信制御処理は、データフレーム振分処理とデータフレーム出力処理とにより構成される。データフレーム振分処理は、レジスタ154、156内のデータフレームを、その送信周期に応じた送信バッファ(すなわち、送信バッファ170〜180のいずれか)に格納する処理である。また、データフレーム出力処理は、送信MB116〜126、136〜146の空き状態に応じて、送信バッファ170〜180から送信待ちデータフレームを読み出して送信MB116〜126、136〜146に格納する処理である。
データフレーム振分処理とデータフレーム出力処理とは、共に、ゲートウェイ装置10の電源が投入されたときに、送信制御ユニット106の処理ユニット192により開始される。
〈データフレーム振分処理〉
図9は、データフレーム振分処理の動作手順を示すフロー図である。
ゲートウェイ装置10の電源が投入されると、送信制御ユニット106の処理ユニット192は、ルート検索ユニット104のレジスタ154、156のいずれかにデータフレームが格納されているか否かを判断する(S400)。すなわち、上述したルーティング処理(図8)のステップS306の処理により、バスB1、B2から受信されたデータフレームがレジスタ154、156にそれぞれ格納されたか否かを確認する。
なお、レジスタ154、156にデータフレームが格納されているか否かは、例えばルート検索ユニット104が送信制御ユニット106に対して通知するものとしてもよいし、送信制御ユニット106の処理ユニット192が、ルート検索ユニット104に設けられたステータスレジスタ(不図示)を読み出して、当該読み出したデータに含まれる特定のビットにより表わされたレジスタ154、156の状態を示す情報から判断するものとすることができる。
そして、処理ユニット192は、レジスタ154、156のいずれにもデータフレームが格納されていないときは(S400、No)、ステップS400に戻ってデータフレームがレジスタ154、156のいずれかに格納されるのを待機する。
一方、レジスタ154及び又は156にデータフレームが格納されているときは(S400、Yes)、レジスタ154及び又は156に格納されているデータフレームを読み出し(S402)、不揮発性メモリ190が記憶する送信周期情報194を参照して、上記読み出したデータフレームのIDに基づき、当該データフレームの送信周期を特定する(S404)。
処理ユニット192は、送信バッファ170〜174のうち当該特定した送信周期に対応する送信バッファに、上記読み出したデータフレームを格納した後(S406)、ステップS400に戻って、新たなデータフレームがレジスタ154、156のいずれかに格納されるのを待機する。なお、本処理は、ゲートウェイ装置10の電源が断になったときに終了する。なお、ステップS402においてレジスタ154及び156の両レジスタからそれぞれデータフレームを読み出したときは、ステップS404では当該読み出した各データフレームの送信周期をそれぞれ特定し、ステップS405では当該読み出した各フレームを、それぞれ、上記特定した送信周期に対応する送信バッファに格納するものとする。
〈データフレーム出力処理〉
次に、送信制御処理のデータフレーム出力処理の動作手順について説明する。
図10は、フレーム出力処理の動作手順を示すフロー図である。
ゲートウェイ装置10の電源が投入されると、送信制御ユニット106の処理ユニット192は、まず、CANモジュール100、102の送信MB116〜126、136〜146のいずれかに送信待ちデータフレームを格納していない送信MB(空き送信MB)があるか否かを判断する(S500)。なお、送信MB116〜126、及び136〜146のいずれかに空きがあるか否かの判断は、例えば、処理ユニット192が、CANモジュール100及び102が備えるステータスレジスタ(不図示)からデータを読み出し、当該読み出したデータに含まれる特定のビットにより表わされた送信MB116〜126、及び136〜146の状態を示す情報から判断するものとすることができる。
そして、処理ユニット192は、空き送信MBがないとき、すなわち、送信MB116〜126又は136〜146のいずれにも送信待ちデータフレームが格納されているときは(S500、No)、ステップS500に戻って送信MBに空きができるのを待機する。
一方、空き送信MBがあるとき、すなわち送信MB116〜126又は136〜146のいずれかに空きがあるときは(S500、Yes)、空き送信MBのうち、当該空き送信MBに対応付けられた送信バッファに送信待ちデータフレームが格納されているものがあるか否か、すなわち、対応する送信バッファに送信待ちデータフレームが格納されている空き送信MBがあるか否かを判断する(S502)。ここで、「対応する送信バッファ」とは、当該空き送信MBに対応付けられている送信バッファをいい、例えば、送信MB116が空き送信MBであれば、当該空き送信MBに対応する送信バッファは、送信バッファ170であり、送信MB122が空き送信MBであれば、当該空き送信MBに対応する送信バッファは、送信バッファ172である。
そして、いずれの空き送信バッファも、対応する送信バッファに送信待ちデータフレームが格納されていないときは(S502、No)、ステップS500に戻って処理を繰り返す。
一方、対応する送信バッファに送信待ちデータフレームが格納されている送信MBがあるときは(S502、Yes)、当該各空き送信MBについて、それぞれ対応する送信バッファから送信待ちデータフレームを読み出して、当該読み出したデータフレームを当該空き送信MBに格納した後(S504)、ステップS500に戻って処理を繰り返す。本処理は、ゲートウェイ装置10の電源が断になったときに終了する。
なお、本実施形態では、送信バッファ170〜180のすべてについて、それぞれ、送信MB116〜126、136〜146のうちの異なる2つの送信MBが対応付けられるものとしたが、これに限らず、各送信バッファに対応付ける送信MBの数は、1つあるいは3つ以上とすることもできる。
なお、本実施形態のように各送信バッファに2つの送信MBを対応付けた場合や、2つ以上の送信MBを対応付けた場合には、当該対応付けた一の送信MBからデータフレームが送信されている間に、対応する送信バッファから次の送信待ちデータフレームを読み出して上記対応付けた他の送信MBに当該読み出したデータフレームを格納することができる。このため、2つ以上の送信MBを対応付けた場合は、同一バス上に接続されたECUからのより長い送信周期を持つデータフレームの送信割り込みを防止して、同じ送信周期を持つデータフレームを連続してバス上に送信することが可能となる。
また、本実施形態では、一つの送信周期に対して一つの送信バッファを対応付けるものとしたが(例えば、一の送信周期10msに対して一の送信バッファ170を対応付けている)、これに限らず、所定の周期以上の複数の送信周期に対して一つの送信バッファを対応付けるものとすることもできる。このような所定の周期以上の長い送信周期を持つデータフレームの発生頻度は、より短い送信周期を持つ他のデータフレームの発生頻度よりも低いため、送信周期毎に送信バッファを設けた場合には、当該送信バッファの記憶装置としての利用効率が低下してしまうこととなる。一方、上記のように、所定の周期以上の複数の送信周期に対して一つの送信バッファを対応付けるものとすれば、送信バッファを構成する記憶装置のリソースを節約して、記憶装置としての利用効率を向上させることができる。
さらに、上記所定の周期以上の複数の送信周期に対応付けられた送信バッファに対しては、一つの送信MBだけを対応付けるものとすることができる。上述ように、所定の周期以上の長い送信周期を持つデータフレームの発生頻度は低く、当該送信バッファに2つ以上の送信MBを対応付けて連続送信する必要性は低いためである。これにより、送信MBの使用数を抑えて、CANモジュール100、102内での記憶装置のリソースを節約することができる。
本実施形態の変形例として、上述のように所定の周期以上の複数の送信周期に対して1つの送信バッファを対応付け、当該送信バッファに1つの送信MBを対応付けたゲートウェイ装置の例を、以下に示す。
図11は、本変形例に係るゲートウェイ装置に用いられる中継ユニットの構成を示している。図11に示す中継ユニット22は、図2に示す中継ユニット12に対応するものであり、例えば図1に示すゲートウェイ装置10の中継ユニット12に置き代えて使用される。
中継ユニット22の構成要素のうち、図2に示す中継ユニット12と同じ構成要素については、図2と同じ符号を用いるものとし、図2についての説明を援用する。
図11の例では、送信周期10、20、30msのデータフレームのほか、送信周期100ms、200ms、300msのデータフレームが存在するものとする。
図11に示す中継ユニット22は、中継ユニット12と同様の構成を有するが、送信制御ユニット106及びCANモジュール100、102に代えて、送信制御ユニット206及びCANモジュール200、202を備える。
送信制御ユニット206は、送信制御ユニット106と同様の構成を有するが、送信バッファ170〜180に加えて送信バッファ282、284を備え、送信周期情報194を記憶する不揮発性メモリ190に代えて、送信周期10、20、30、100、200、300msのデータフレームについてのIDと送信周期との対応情報を含んだ送信周期情報294を記憶する不揮発性メモリ290を備える。
また、送信制御ユニット206は、処理ユニット192に代えて、処理ユニット292を備える。処理ユニット292は、処理ユニット192と同様にプロセッサ及び記憶装置等を備えるコンピュータであり、不揮発性メモリ290が記憶する送信周期情報294を参照して、送信バッファ170〜180、282、284についてのデータフレームの書込み及び読み出し、並びに送信MB116〜126、136〜146、228、248へのデータフレームの書込み等の処理を行う。なお、処理ユニット292が行う処理動作は、処理ユニット192と同様であり、送信周期10、20、30msのデータフレームに加えて100、200、300msのデータフレームを扱う点が異なる。
CANモジュール200及び202は、それぞれ、CANモジュール100及び102と同様の構成を有するが、送信MB116〜126、136〜146に加えて送信MB228及び248を備え、送信機112及び132に代えて送信機212及び232を備える。
送信機212は、送信機112と同様に、送信MB116〜126及び228に格納されたデータフレームを優先度順に送信する。また、送信機232は、送信機132と同様に、送信MB136〜146及び248に格納されたデータフレームを優先度順に送信する。
すなわち、図11に示す中継ユニット22では、バスB3を転送先とするデータフレームに関して、100ms以上の送信周期、すなわち、送信周期100ms、200ms、300msの3つの送信周期が1つの送信バッファ282に対応付けられ、バスB4を転送先とするデータフレームに関して、上記3つの送信周期が1つの送信バッファ284に対応付けられている。また、送信バッファ282及び284は、それぞれ1つの送信MB228及び248が対応付けられている。
処理ユニット292は、レジスタ154からデータフレームを読み出すと、送信周期情報294を参照し、当該読み出したデータフレームに含まれるIDから当該データフレームの送信周期を特定し、当該データフレームを、当該特定した送信周期に対応する送信バッファに格納する。
すなわち、レジスタ154から読み出したデータフレームについて、上記特定された送信周期が100ms、200ms又は300msであるときは、当該読み出したデータフレームを送信バッファ282に格納する。
また、同様に、処理ユニット292は、レジスタ156からデータフレームを読み出すと、送信周期情報294を参照して当該データフレームの送信周期を特定し、当該データフレームを、当該特定した送信周期に対応する送信バッファに格納する。
すなわち、上記特定した送信周期が100ms、200ms又は300msであるときは、レジスタ156から読み出した当該データフレームを送信バッファ284に格納する。
格納する。
そして、処理ユニット292は、送信MB228又は248が空いている(すなわち、送信待ちデータフレームが格納されていない)ときは、それぞれ、送信バッファ282又は284から送信待ちデータフレームを読み出して、送信MB228又は248に当該読み出したデータフレームを格納する。なお、処理ユニット292における他の処理は、処理ユニット192における処理と同様であるので、処理ユニット192についての上記説明を援用する。
以上、説明したように、本実施形態のゲートウェイ装置10では、より短い送信周期のデータフレームにより高い優先度の識別子が付されており、かつ、送信待ちのデータフレームを格納する送信バッファを送信周期に対応付けると共に、各送信バッファに一以上の送信MBを対応付けることで、送信周期毎に送信バッファと送信MBとが使い分けられる。
これにより、本ゲートウェイ装置10では、同一の送信周期を持つデータフレームは同じ送信バッファを経由して同じ一以上の送信MBから送信されることとなるので、他の送信MB内のより長い送信周期のデータフレームの存在により送信が遅延することがない。このため、従来のように、送信バッファ内のより優先度の高いデータフレームの送信が送信MB内のより優先度の低いデータフレームの送信完了を待って遅延してしまう問題を回避すべく、送信バッファと送信MBとの間でのデータフレームの入れ替えを行う必要はなく、データフレームの転送処理の負荷が軽減される。