(57)【特許請求の範囲】
【請求項１】
異なる通信バスに夫々接続する複数の通信部と、書き換え可能な記憶部と、記憶してあるコンピュータプログラムに基づき、１又は複数の通信部にて受信した１又は複数の情報を他の１又は複数の通信部から送信する中継処理を実行するプロセッサとを備える中継装置であって、
前記記憶部には、受信した通信バス毎、及び、各通信バスで受信した情報の識別情報毎に、中継先を特定する情報を含む一定の型のレコードから構成されたルーティングテーブルが記憶してあり、
前記プロセッサは、前記ルーティングテーブル内の前記レコードから該レコードに含まれる情報を戻り値として返す特定の命令コードを実行する実行手段を備えること
を特徴とする中継装置。
【請求項２】
前記情報は複数のシグナル情報からなり、
前記ルーティングテーブルは、
受信した情報を格納する格納領域と、前記シグナル情報毎に、前記シグナル情報を読み出すための前記格納領域内の格納位置を示すインデックス情報とを含み、
前記実行手段は、
前記インデックス情報を参照する手段と、
前記インデックス情報に基づき、ルーティングテーブル内からシグナル情報を読み出す手段と、
読み出したシグナル情報から中継する情報を作成する手段と
を備えることを特徴とする請求項１に記載の中継装置。
【請求項３】
前記情報は複数のシグナル情報からなり、
前記ルーティングテーブルは、
中継する情報を格納し、中継先が対応付けられている格納領域と、前記情報に含まれるシグナル情報毎に前記格納領域内の格納位置を示すインデックス情報とを含み、
前記実行手段は、
前記インデックス情報を参照する手段と、
前記インデックス情報に基づき、ルーティングテーブル内にシグナル情報を格納する手段と
を備えることを特徴とする請求項１に記載の中継装置。
【請求項４】
請求項１乃至３のいずれかに記載の中継装置と、該中継装置の前記複数の通信部に夫々接続される複数の通信バスとを含むこと
を特徴とする通信ハーネス。
【請求項５】
情報を送受信する複数の通信装置と、該複数の通信装置が夫々接続された複数の通信バスと、該複数の通信バスが接続された請求項１乃至３のいずれかに記載の中継装置とを含むこと
を特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、異なる通信バス間を中継する中継装置に関し、多様な中継バリエーションに対応するためにルーティングテーブルを置換することが可能であり、且つ、置換された異なるルーティングテーブルに対応可能な中継装置、該中継装置を含む通信ハーネス、及び前記中継装置を含む通信システムに関する。
【背景技術】
【０００２】
車両制御の分野では、車内に配される夫々機器を制御する多数の制御機器（ＥＣＵ：Electronic Control Unit）を通信バスで接続し、相互にデータを送受信させて、多様な処理を行なう構成が一般的となっている。１つの通信バスに接続されるＥＣＵの数に制限があること、又はＥＣＵの役割によって通信速度が異なることから、ＥＣＵを複数の群に分け、群毎に１つの通信バスに接続し、２つの通信バス間を中継装置（ゲートウェイ）で接続する構成が採用されている。
【０００３】
中継装置は、１つの通信バスから受信した情報を、ＣＡＮ（Controller Area Network）であればＣＡＮＩＤで識別し、ＣＡＮＩＤ毎に中継の要否及び中継先の通信バスを特定するルーティングテーブルを参照し、中継先の通信バスから送信して中継処理を実現している（特許文献１，２等）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−０４９９４４号公報
【特許文献２】国際公開第２００８／１２６６９８号パンフレット
【特許文献３】特開２００６−３４００９９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１又は２に記載されている構成では、ルーティングテーブルをメモリに記憶しておき、中継処理プログラムに基づくＣＰＵから、又は中継処理を行なうように構成された回路から、一の通信バスから情報を受信する都度、又は、一の情報を送信するタイミングが到来する都度、メモリ内のルーティングテーブルからＩＤと中継先の通信バスとの対応を読み出して中継先の通信バスを特定する処理を毎回行なう。このような構成では、メモリからの読み出しによって処理が遅くなったり、メモリに記憶するルーティングテーブルの情報量が多くなったりするなどの問題がある。
【０００６】
また、特許文献３に開示されているように、車載ＥＣＵは、昨今ではハードウェアコストの削減のため、車種又はオプションなどの違いで夫々のハードウェアを製作することを回避するため、書き換え可能なコンピュータプログラムに基づくマイクロコンピュータ（以下マイコンという）処理が採用されている。
【０００７】
このような事情から、処理の高速化、及びメモリの節約のために結局、ルーティングテーブルの内容を組み込んだコンピュータプログラムをＣＰＵに読み出させて実行するマイコンを用いた構成が採用されているのが現実である。つまり、コンピュータプログラムの実行コード内に、ある情報を受信した場合の中継先が既に規定されており、テーブルの読み出し処理が不要である。特許文献２にも、中継装置が起動するときに、メモリに記憶されているルーティングテーブルを読み込んで変換し、中継処理回路内に組み込んで用いることが記載されている。
【０００８】
一方で、電子制御にて実現される機能が増加していることから車載ＥＣＵの数も膨大である。中継装置も、２つの通信バス間の情報の中継ではなく、３つ以上の通信バス間の情報の中継処理が必要になってきている。したがって、ある情報は１の通信バスから他の３つの通信バスへ中継し、２つの通信バスから夫々受信した２つの情報をまとめて、他の１の通信バスから送信するなどの多様な中継バリエーションが存在する。更に、車両メーカ、車種又はオプション毎に、通信バスの数、各通信バスに接続されるＥＣＵの種類が異なるから、中継バリエーションが増加する。ルーティングテーブルの内容を組み込んだコンピュータプログラムをＣＰＵに読み出させる構成では、異なるバリエーション毎に、中継処理のプログラムを開発しなければならず、開発コストを抑えることが困難である。
【０００９】
本発明は斯かる事情に鑑みてなされたものであり、多様な中継バリエーションに対応するためにルーティングテーブルを置換することが可能であり、且つ、置換された異なるルーティングテーブルに対応可能な中継装置、該中継装置を含む通信ハーネス、及び前記中継装置を含む通信システムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明に係る中継装置は、異なる通信バスに夫々接続する複数の通信部と、書き換え可能な記憶部と、記憶してあるコンピュータプログラムに基づき、１又は複数の通信部にて受信した１又は複数の情報を他の１又は複数の通信部から送信する中継処理を実行するプロセッサとを備える中継装置であって、前記記憶部には、受信した通信バス毎、及び、各通信バスで受信した情報の識別情報毎に、中継先を特定する情報を含む一定の型のレコードから構成されたルーティングテーブルが記憶してあり、前記プロセッサは、前記ルーティングテーブル内の前記レコードから該レコードに含まれる情報を戻り値として返す特定の命令コードを実行する実行手段を備えることを特徴とする。
【００１１】
本発明に係る中継装置は、前記情報は複数のシグナル情報からなり、前記ルーティングテーブルは、受信した情報を格納する格納領域と、前記シグナル情報毎に、前記シグナル情報を読み出すための前記格納領域内の格納位置を示すインデックス情報とを含み、前記実行手段は、前記インデックス情報を参照する手段と、前記インデックス情報に基づき、ルーティングテーブル内からシグナル情報を読み出す手段と、読み出したシグナル情報から中継する情報を作成する手段とを備えることを特徴とする。
【００１２】
本発明に係る中継装置は、前記情報は複数のシグナル情報からなり、前記ルーティングテーブルは、中継する情報を格納し、中継先が対応付けられている格納領域と、前記情報に含まれるシグナル情報毎に前記格納領域内の格納位置を示すインデックス情報とを含み、前記実行手段は、前記インデックス情報を参照する手段と、前記インデックス情報に基づき、ルーティングテーブル内にシグナル情報を格納する手段とを備えることを特徴とする。
【００１３】
本発明に係る通信ハーネスは、上記発明の中継装置のいずれかと、該中継装置の前記複数の通信部に夫々接続される複数の通信バスとを含むことを特徴とする。
【００１４】
本発明に係る通信システムは、情報を送受信する複数の通信装置と、該複数の通信装置が夫々接続された複数の通信バスと、該複数の通信バスが接続された上記発明の中継装置のいずれかとを含むことを特徴とする。
【００１５】
本発明では、中継装置の記憶部には書き換え可能なルーティングテーブルが記憶され、該ルーティングテーブルは、受信した通信バス毎、及び各通信バスで受信した情報の識別情報毎に中継先を特定するものであって、コンピュータプログラムに基づき中継処理を実行するプロセッサは、前記ルーティングテーブルを読み出すための特定の命令コードを実行する。特定の命令コードは、一定の条件を満たすルーティングテーブルであれば内容が異なるルーティングテーブルに対し普遍的に対応するものである。
【００１６】
本発明では、ルーティングテーブルは受信した情報を格納する格納領域を含み、該格納領域には中継先が対応付けられており、当該格納先のインデックス情報を含む。プロセッサが特定の命令コードに基づき、ルーティングテーブルから情報を読み出すに際し、インデックス情報を参照する手段と、インデックス情報に基づき受信した情報の格納先から情報を読み出す手段とを実行することにより、内容が異なるルーティングテーブルであってもインデックス情報に基づき、ルーティングテーブル内の情報を読み出すことが可能である。
【００１７】
本発明では、ルーティングテーブルは中継（送信）する情報を格納する格納領域を含み、該格納領域には中継先が対応付けられており、当該格納先のインデックス情報を含む。プロセッサが特定の命令コードに基づき、ルーティングテーブルに前記中継する情報を格納するに際し、インデックス情報を参照する手段と、インデックス情報に基づき格納領域に情報を格納する手段とを実行し、送信する情報を作成することにより、内容が異なるルーティングテーブルであってもインデックス情報に基づき、格納領域に対応付けられた中継先へ、情報を送信することが可能である。
【発明の効果】
【００１８】
本発明による場合、多様な中継バリエーションに対応するためにルーティングテーブルを置換することが可能である。そして、置換されたルーティングテーブルに対しても特定の命令コードを実行することにより、置換された異なるルーティングテーブルに対応して受信した情報を管理し、中継する情報を作成することができる。
【００１９】
したがって、異なる中継バリエーション夫々に応じてプロセッサが中継処理を実行するためのコンピュータプログラムを作成し直す必要がない。これにより、開発コストを抑えることが可能である。また、中継処理を実行するためのコンピュータプログラムを作成し直す必要がないから、本発明の中継装置の検査を行なうに際し、前記コンピュータプログラムの検査は、異なる中継バリエーション毎に毎回行なう必要がなく、異なる中継バリエーションに対応させた異なるルーティングテーブルを含めた動作のみ検査すればよい。したがって、中継装置及び該中継装置を含む通信システム構築後の検査の項目を減少させ、製造コストを抑えることも可能である。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態における車載通信システムの構成を示すブロック図である。
【図２】フラッシュメモリに記憶される情報の内容を模式的に示す模式図である。
【図３】ルーティングテーブルの受信テーブルの内容例を示す説明図である。
【図４】受信テーブルのインデックス情報の内容例を示す説明図である。
【図５】ルーティングテーブルの送信テーブルの内容例を示す説明図である。
【図６】送信テーブルのインデックス情報の内容例を示す説明図である。
【図７】中継装置における受信処理の処理手順の一例を示すフローチャートである。
【図８】中継装置における即時中継処理の処理手順の一例を示すフローチャートである。
【図９】中継装置における送信処理の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００２１】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。
なお、以下の実施の形態では本発明を、車載機器を制御する車載通信システムに適用した場合の例を挙げて説明する。
【００２２】
図１は、本実施の形態における車載通信システムの構成を示すブロック図である。車載通信システムは、複数の通信バス１１，１２，１３，１４と、通信バス１１，１２，１３，１４夫々に接続されているＥＣＵ２１，２２，２３，２４と、通信バス１１，１２，１３，１４間の情報の中継処理を行なう中継装置３とを含む。
【００２３】
実施の形態１では、通信バス１１，１２，１３，１４を介した通信は、いずれもＣＡＮプロトコルに準じる。複数の通信バス１１，１２，１３，１４は、接続されるＥＣＵ２１，２２，２３，２４の制御対象の種類で区別されている。換言すれば、送受信される情報種類で区別される。通信速度は、通信バス１１，１２，１３，１４毎に異なる設定とされていてもよい。例えば、通信バス１１には走行制御系の制御を行なう複数のＥＣＵ２１が接続されており、車速等の制御系の情報が送受信される。通信バス１２には、電力制御系の制御を行なう複数のＥＣＵ２２が接続されており、バッテリー情報などの電力制御系の情報が送受信される。通信バス１３には、カーナビゲーションシステムなどのアクセサリ系の制御を行なう複数のＥＣＵ２３が接続されており、時間情報、位置情報などのマルチメディア系の情報が送受信される。通信バス１４には、ボディの制御を行なう複数のＥＣＵ２４が接続されており、ドアロック、セキュリティなどに関する情報が送受信される。
【００２４】
中継装置３は、ＣＰＵ（Central Processing Unit）３０と、第１通信部３１と、第２通信部３２と、第３通信部３３と、第４通信部３４と、フラッシュメモリ３５と、ＲＡＭ（Random Access Memory）３６とを備えている。
【００２５】
ＣＰＵ３０は、フラッシュメモリ３５に記憶されているルーティングテーブル３７及び後述のコンピュータプログラムに基づき、ＲＡＭ３６を送信バッファ又は受信バッファとして用い、第１〜第４通信部３１〜３４を介した送受信を実行して中継処理を実現する。ＣＰＵ３０はＭＰＵ（Micro Processing Unit ）に代替されてもよい。
【００２６】
第１〜第４通信部３１〜３４は夫々、ＣＡＮコントローラ及びＣＡＮトランシーバを含み、ＣＡＮプロトコルに基づき、各種情報を含むＣＡＮメッセージの送受信を実現する。第１通信部３１は通信バス１１に、第２通信部３２は通信バス１２に、第３通信部３３は通信バス１３に、第４通信部３４は通信バス１４に接続されている。
【００２７】
フラッシュメモリ３５は、書き換え可能な不揮発性メモリであり、後述するようにＣＰＵ３０が読み出すコンピュータプログラム及びルーティングテーブルを記憶する。なお、フラッシュメモリ３５の代替として、ＥＥＰＲＯＭ（登録商標）などの不揮発性メモリを用いてもよい。
【００２８】
ＲＡＭ３６は、送受信バッファとして用いられる。ＣＰＵ３０は、第１〜第４通信部３１〜３４にて受信したＣＡＮメッセージ、及び、第１〜第４通信部３１〜３４にて送信するＣＡＮメッセージをＲＡＭ３６に記憶する。
【００２９】
なお、ＣＰＵ３０、第１〜第４通信部３１〜３４におけるＣＡＮコントローラ部、フラッシュメモリ３５及びＲＡＭ３６でマイコンとして構成されていてよい。
【００３０】
図２は、フラッシュメモリ３５に記憶される情報の内容を模式的に示す模式図である。フラッシュメモリ３５には、ルーティングテーブル３７、ルーティングプログラム３８、及びプラットフォームプログラム３９が記憶されている。他に、図示しないドライバプログラム等が記憶されていてもよい。
【００３１】
プラットフォームプログラム３９は、第１〜第４通信部３１〜３４にてＣＡＮメッセージを受信した場合に、ＣＰＵ３０へ受信割込を通知し、ＲＡＭ３６の受信バッファに書き込む処理、ＣＰＵ３０が作成して与えたＣＡＮメッセージを、第１〜第４通信部３１〜３４へ与えて送信せしめる処理など、基本的な入出力処理を各機器で共通化したプログラムである。
【００３２】
ルーティングプログラム３８は、ＣＰＵ３０による中継処理、即ち後述のフローチャートに示すような処理手順を実現するためのプログラムである。ルーティングプログラム３８は、ルーティングテーブル３７が、他のルーティングテーブル４０に置換された場合でも、書き換え不要となるように、車種又はオプション依存の実行コードを含まない。ルーティングプログラム３８は、置換されたルーティングテーブル４０にも対応するように、ルーティングテーブル３７、及びルーティングテーブル４０、並びに他のルーティングテーブルにも対応する共通化された実行コードを含むように構成されている。実行コードについては、後述の各フローチャートにて詳細を説明する。
【００３３】
ルーティングテーブル３７は、ＣＡＮメッセージを受信した場合に参照する受信テーブルと、ＣＡＮメッセージを送信する場合に参照する送信テーブルとに区別されている。受信テーブル及び送信テーブルとに夫々分けて記憶する構成としてもよい。
【００３４】
図３は、ルーティングテーブル３７の受信テーブルの内容例を示す説明図である。受信テーブルは、通信バス１１〜１４毎に、受信するＣＡＮメッセージのＣＡＮＩＤ別のレコードからなる。各レコードは図３の例では、中継対象であるか否か（ＯＫ：中継対象である／ＮＧ：中継対象でない）、即時中継先の情報、受信したＣＡＮメッセージに含まれるデータ部分の情報長（ＤＬＣ：Data Length Code）、データの格納領域、未中継のデータを受信しているか否かを示す受信フラグ（ＯＮ：受信／ＯＦＦ:中継済み）の情報からなる。レコード長は定められている。各レコードは通信バス１１のＣＡＮＩＤ「０」のレコードから順に、フラッシュメモリ３５上の受信テーブル用の領域の先頭から順に記憶される。
【００３５】
ＣＡＮＩＤは、例えば１１ビットで表わされ、ＣＡＮの規定により最大値は０ｘ７ＦＦである。中継対象であるか否かの情報は、例えば１ビット又は８ビットで表わされ、ＯＫは「１」、ＮＧは「０」とする。即時中継先は、例えば５ビットで表わし、１ビットずつ、通信バス１１〜１４、即ち第１〜第４通信部３１〜３４に割り振り（１ビットは予備）、「０」の場合は中継先でなく、「１」の場合は中継先であることを表す。ＤＬＣは、例えば４ビットで表わされ、０〜８である。
【００３６】
データの格納領域は８ビット用意されている。なおデータは、複数のシグナル情報からなる。例えば車両のドアの開閉状態のシグナル情報を、１ビットずつ「１：開／０：閉」で表わすことができる。具体的には、受信したＣＡＮメッセージのデータ部分の８ビットの内、先頭から５ビットで順に、前部座席右側ドアの開閉、前部座席左側ドアの開閉、後部座席右側ドアの開閉、後部座席左側ドアの開閉、リアドアの開閉を表すことが可能である。
【００３７】
受信フラグは、例えば８ビットで表わされ、「ＯＮ：受信」は「０ｘ０１」、「ＯＦＦ：中継済み」は「０ｘ００」とする。
【００３８】
図３に示す内容例では例えば、通信バス１１から受信されるＣＡＮＩＤが「０」のＣＡＮメッセージは、中継対象でない（ＮＧ）。また、通信バス１１から受信されるＣＡＮＩＤが「０ｘ０５０」のＣＡＮメッセージは、中継対象であり（ＯＫ）、即時中継先は「０１１１０ｂ」であって、通信バス１１に対応する末尾のビットと、予備の先頭ビットとが「０」であって他のビットは「１」であるから、通信バス１２〜１４即ち第２通信部３２〜第４通信部３４により即時中継する。そして、ＣＡＮＩＤが「０ｘ０５０」のＣＡＮメッセージのデータ「ｘ」とデータ長「ｘｘ」は、夫々当該レコードの格納領域に格納される。受信フラグは「ＯＦＦ」とされている。また、ＣＡＮＩＤが「０ｘ０５１」のＣＡＮメッセージは、中継対象であるが（ＯＫ）、即時中継先は「０００００ｂ」であって即時中継しない。ＣＡＮＩＤが「０ｘ０５１」のＣＡＮメッセージのデータ「ｙ」とデータ長「ｙｙ」は、夫々当該レコードの格納領域に格納され、中継済みとなるまで受信フラグは「ＯＮ」である。
【００３９】
また、ルーティングテーブル３７はインデックス情報を含む。図４は、受信テーブルのインデックス情報の内容例を示す説明図である。インデックス情報には、受信したＣＡＮメッセージにより受信したシグナルの数、各シグナルの受信テーブル内の格納位置が含まれる。格納位置は、受信テーブルの各レコード内のデータ中の対象シグナルの開始バイト、開始バイト内のシグナルの開始ビット、及びシグナルのビット長により表されている。
【００４０】
図４に示す例では例えば、受信したＣＡＮメッセージのデータ内に含まれるシグナルの総数は「５０」であることが示されている。また、１つめのシグナルは受信テーブルの「０ｘ００５１」番目のレコードのデータの「０」バイト目の「０」ビット目の「１」ビット分に格納され、２つめのシグナルは同レコードのデータの「０」バイト目の「３」ビット目からの「２」ビット分に格納されることが示されている。同様にして、２５番目のシグナルは受信テーブルの「０ｘ０８８０」番目のレコードのデータの「０」バイト目の「４」ビット目の「２」ビット分に格納されることが示されている。同様にして、５０番目のシグナルは、受信テーブルの「０ｘ１０Ａ０」番目のレコードのデータの「０」バイト目の「７」ビット目の「１」ビットに格納されることが示されている。
【００４１】
インデックス情報を参照して受信テーブルを読み出すことにより、受信テーブルの内容が異なる場合であっても、ルーティングプログラム３８に基づく処理を実行するＣＰＵ３０は、受信テーブルが記憶されている記憶領域のいずれのアドレスの何バイト目の何ビット目から何ビット分読み出せばよいかを特定することができる。
【００４２】
なお、受信テーブルの定義に応じて、インデックス情報は予め設計により定まるものである。したがって、図４に示すようなインデックス情報は、図３に示すような受信テーブルを含むルーティングテーブル３７内に共に記憶される。ルーティングテーブル３７が例えばルーティングテーブル４０に置換された場合、受信テーブルのインデックス情報はルーティングテーブル４０内の受信テーブルと共に記憶される。ルーティングテーブル３７が他のルーティングテーブル４０に置換された場合でも、ルーティングプログラム３８に基づくＣＰＵ３０の処理は変更する必要がない。インデックス情報のレコードは先頭から順に読み出せばよく、レコードの型が定まっていれば内容によらない。
【００４３】
図５は、ルーティングテーブル３７の送信テーブルの内容例を示す説明図である。送信テーブルは、ＣＡＮＩＤ別のレコードからなる。各レコードは、ＣＡＮＩＤ、中継先のバス情報、送信するＣＡＮメッセージに含まれるデータ部分の情報長（ＤＬＣ）、データの格納領域、及び送信条件からなる。送信条件は必須ではない。なお、レコード長は定められている。各レコードは、先頭のＣＡＮＩＤが「０ｘ０１０」のＣＡＮメッセージから、フラッシュメモリ３５上の送信テーブル用の領域の先頭から順に記憶される。
【００４４】
図５に示す内容例では、ＣＡＮＩＤは例えば１１ビットで表わされる。中継先のバス情報は例えば５ビットで表わし、各ビットは「（予備）（通信バス１４）（通信バス１３）（通信バス１２）（通信バス１１）」に対応し、夫々「１」であるときは中継先であり、「０」であるときは中継先でない。例えば、ＣＡＮＩＤが「０ｘ０１０」の送信ＣＡＮメッセージの中継先のバスは通信バス１１、即ち当該メッセージは第１通信部３１から１０ミリ秒毎に送信するＣＡＮメッセージである。また、ＣＡＮＩＤが「０ｘ０１０」の送信ＣＡＮメッセージのデータ部分の格納領域に例えば情報長が「ｋｋ」の「ｋ」が格納される。送信条件は、イグニッション位置がＡＣＣ（アクセサリ）であるなどの時間以外の条件でもよい。他には、データ内のシグナル値が何らかの条件を満たすか否かなどであってもよい。
【００４５】
またルーティングテーブル３７は、送信テーブルに対応するインデックス情報も含む。図６は、送信テーブルのインデックス情報の内容例を示す説明図である。インデックス情報には、送信するＣＡＮメッセージに格納すべきシグナルの数、各シグナルの送信テーブル内の格納位置が含まれる。格納位置は、送信テーブルの各レコード内のデータ中の対象シグナルの開始バイト、開始バイト内のシグナルの開始ビット、及びシグナルのビット長により表されている。
【００４６】
図６に示す例では例えば、送信するＣＡＮメッセージのデータ内に含まれるシグナルの総数は「５０」であることが示されている。１つめのシグナルは、送信テーブルの「０ｘ００」番目のレコードのデータの「０」バイト目の「０」ビット目の「１」ビット分に格納すべきであり、２つ目のシグナルは同レコードのデータの「０」バイト目の「１」ビット目から「２」ビット分に格納すべきであることが示されている。同様にして、２５番目のシグナルは、送信テーブルの「０ｘ０８」番目のレコードのデータの「０」バイト目の「０」ビット目から「２」ビット分に、２６番目のシグナルは同レコードのデータの「０」バイト目の「２」ビット目から「３」ビット分に、２７番目のシグナルは同レコードのデータの「５」ビット目の「１」ビットに、２８番目のシグナルは同レコードのデータの「６」ビット目の「１」ビットに、２９番目のシグナルは同レコードのデータの「７」ビット目の「１」ビットに格納すべきであることが示されている。
【００４７】
なお本実施の形態の例では、受信するＣＡＮメッセージに含まれるシグナルの総数と、送信するシグナルの総数とは一致してある。同一の通し番号のシグナルは、同一のシグナルである。同一のシグナルについて、受信テーブルのインデックス情報と、送信テーブルのインデックス情報とを１つのレコードにまとめるようにしてもよい。
【００４８】
図３〜図６に示した各テーブル及びインデックス情報に基づき、中継装置３のＣＰＵ３０は、以下に説明するような中継処理を実行する。なおＣＰＵ３０は、ルーティングプログラム３８に基づき、即時中継処理及び定期的中継処理を夫々実現する。即時中継処理では、ＣＰＵ３０は、ＣＡＮメッセージを受信した時点で直接的に、第１〜第４通信バス１１〜１４のいずれか１つ又は複数へ中継する。定期的中継処理では、ＣＰＵ３０は、ＣＡＮメッセージを受信した時点では、ＣＡＮメッセージに含まれるデータを受信テーブル内のデータ格納領域（受信バッファ）に記憶しておき、例えば１０ミリ秒などの一定期間が経過する都度、定期的に、受信バッファからデータを参照して送信テーブルにてＣＡＮメッセージを作成し、送信する。ＣＰＵ３０は、即時中継処理及び定期的中継処理を実現するために、ＣＡＮメッセージを受信したときの受信処理と、周期的に実行する送信処理とにタスクを区別して夫々実行する。
【００４９】
図７は、中継装置３における受信処理の処理手順の一例を示すフローチャートである。プラットフォームプログラム３９に基づく処理により、ＣＰＵ３０へ受信割込みが通知された場合に、ＣＰＵ３０はルーティングプログラム３８に基づいて以下の処理を実行する。
【００５０】
ＣＰＵ３０は、受信したＣＡＮメッセージのＣＡＮＩＤ及び受信したバスが通信バス１１〜１４のいずれであるかを特定する（ステップＳ１１）。ＣＰＵ３０は、特定したＣＡＮＩＤ及び通信バスに基づき、ルーティングテーブル３７の中継要否を参照する（ステップＳ１２）。図３に示したように、通信バス１１〜１４毎に、受信したメッセージのＣＡＮＩＤ別に、中継対象であるか否かがテーブル化されている。ステップＳ１２では具体的には、ＣＰＵ３０は、ルーティングプログラム３８に基づき、通信バス及びＣＡＮＩＤを引数としてルーティングテーブル３７を読み出し、読み出した戻り値としてルーティングテーブル３７内に記憶されている中継対象であるか否かの結果を返す関数を呼び出す処理を行なう。
【００５１】
ＣＰＵ３０は、ステップＳ１２の参照結果（戻り値）に基づき、中継の要否を判定し（ステップＳ１３）、要と判定した場合（Ｓ１３：ＹＥＳ）、ルーティングテーブル３７内の即時中継先を参照し（ステップＳ１４）、参照結果に基づき即時中継処理を実行する（ステップＳ１５）。
【００５２】
ＣＰＵ３０は、即時中継処理後、受信したメッセージに含まれているデータを読み出し（ステップＳ１６）、読み出したデータを受信テーブルのデータ格納領域に格納し（ステップＳ１７）、受信フラグをＯＮに設定し（ステップＳ１８）、処理を終了する。
【００５３】
ＣＰＵ３０は、ステップＳ１３にて、参照結果に基づき不要と判定した場合（Ｓ１３：ＮＯ）、処理をそのまま終了する。
【００５４】
図８は、中継装置３における即時中継処理の処理手順の一例を示すフローチャートである。図８に示すフローチャートは、図７のステップＳ１５の詳細な手順に対応する。
【００５５】
ＣＰＵ３０は、図７のステップＳ１４の参照結果に基づき、即時中継対象であるか否かを判断する（ステップＳ５１）。具体的には、参照結果が「０ｘ００（０００００ｂ）」でない場合、ＣＰＵ３０は即時中継対象であると判断する。
【００５６】
ＣＰＵ３０は、即時中継対象であると判断した場合（Ｓ５１：ＹＥＳ）、即時中継先として通信バス１１を選択し（ステップＳ５２）、参照結果である即時中継先と、選択してある通信バス１１とが一致するか否かを判断する（ステップＳ５３）。ＣＰＵ３０は、一致したと判断した場合（Ｓ５３：ＹＥＳ）、プラットフォームプログラム３９に基づく処理により、選択してある通信バス１１へ、即ち選択した通信バス１１に接続する第１通信部３１から、受信したＣＡＮメッセージを即時送信せしめるべく、プラットフォームプログラム３９の処理を実行し（ステップＳ５４）、次の処理へ進む。
【００５７】
ＣＰＵ３０は、全通信バス１１〜１４を選択したか否かを判断し（ステップＳ５５）、全てを選択していないと判断した場合（Ｓ５５：ＮＯ）、次の通信バス１２、即ち第２通信部３２を選択し（ステップＳ５６）、処理をステップＳ５３へ戻し、次の通信バス１２への即時送信処理を実行する。
【００５８】
ＣＰＵ３０は、通信バス１３及び通信バス１４についてもステップＳ５２〜Ｓ５４の処理を実行し、全通信バス１１〜１４を選択したと判断した場合（Ｓ５５：ＹＥＳ）、受信したＣＡＮメッセージについての即時中継処理を終了し、図７のステップＳ１６へ処理を戻す。
【００５９】
ステップＳ５１にて、即時中継対象でないと判断した場合（Ｓ５１：ＮＯ）、受信したメッセージについての即時中継処理を終了し、図７のステップＳ１６へ処理を戻す。
【００６０】
図７及び図８のフローチャートに示した処理手順について、具体例を挙げて説明する。具体例として、通信バス１２から、ＣＡＮＩＤが「０ｘ１００」のＣＡＮメッセージが送信された場合の処理を説明する。
【００６１】
ＣＰＵ３０は、第２通信部３２からＣＡＮメッセージの受信について通知を受け、ＣＡＮＩＤを「０ｘ１００」、通信バスを「通信バス１２」と特定する（Ｓ１１）。ＣＰＵ３０は、ルーティングテーブル３７から通信バス１２の「０ｘ１００」番目のレコードを参照し、中継対象であるか否かの結果を返す関数を呼び出す（Ｓ１２）。当該関数により、図３に示すように「ＯＫ」が返されるから、ＣＰＵ３０は、中継要と判定し（Ｓ１３：ＹＥＳ）、同一レコードの即時中継先「０１００１ｂ」を参照し（Ｓ１４）、参照した即時中継先を与えてＳ１５の即時中継処理を実行する。
【００６２】
ＣＰＵ３０は、即時中継処理にて、参照した即時中継先は「０ｘ００」でないので即時中継対象であると判断する（Ｓ５１：ＹＥＳ）。ＣＰＵ３０は、最初の通信バス１１を選択し（Ｓ５２）、「０１００１ｂ」の通信バス１１に対応する末尾ビットは「１」であるから即時中継先と一致すると判断し（Ｓ５３：ＹＥＳ）、選択した通信バス１１に対応する第１通信部３１から、受信してあるＣＡＮメッセージを直接的に送信する（Ｓ５４）。ＣＰＵ３０は、全ての通信バス１１〜１４を選択していないから（Ｓ５５：ＮＯ）、次の通信バス１２を選択する（Ｓ５６）。ＣＰＵ３０は、処理をステップＳ５３に戻し、即時中継先「０１００１ｂ」の通信バス１２に対応する末尾から２つ目のビットが「０」であるから即時中継先と一致しないと判断し（Ｓ５３：ＮＯ）、処理をステップＳ５５へ進める。そしてＣＰＵ３０は、未だ全ての通信バス１１〜１４を選択していないから（Ｓ５５：ＮＯ）、次の通信バス１３を選択する（Ｓ５６）。ＣＰＵ３０は、処理をステップＳ５３へ戻し、即時中継先「０１００１ｂ」の通信バス１３に対応する末尾から３つ目のビットが「０」であるから即時中継先と一致しないと判断し（Ｓ５３：ＮＯ）、処理をステップＳ５５へ進める。ＣＰＵ３０は、未だ全ての通信バス１１〜１４を選択していないから（Ｓ５５：ＮＯ）、次の通信バス１４を選択する（Ｓ５６）。ＣＰＵ３０は、処理をステップＳ５３へ戻し、即時中継先「０１００１ｂ」の通信バス１４に対応する末尾から４つ目のビットが「１」であるから即時中継先と一致すると判断し（Ｓ５３：ＹＥＳ）、選択した通信バス１４に対応する第４通信部３４から、受信してあるＣＡＮメッセージを直接的に送信する（Ｓ５４）。ステップＳ５５で全ての通信バス１１〜１４を選択したと判断し、図７のステップＳ１６に戻る。
【００６３】
ＣＰＵ３０は、受信したＣＡＮメッセージのデータ「ｖ」及び情報長「ｖｖ」を読み出し（Ｓ１６）、ルーティングテーブル３７の受信テーブル内の対応するレコードのデータ格納領域に書き込み（Ｓ１７）、受信フラグを「ＯＮ」に設定し（Ｓ１８）、処理を終了する。
【００６４】
次に、中継装置３における送信処理について説明する。図９は、中継装置３における送信処理の処理手順の一例を示すフローチャートである。中継装置３は、図示しないタイマ部にて、例えば１０ミリ秒の一定期間をカウントしており、１０ミリ秒が経過する都度、タイマ割込をＣＰＵ３０へ通知する。ＣＰＵ３０は、当該タイマ割込が通知された場合に、ルーティングプログラム３８に基づき以下の処理を実行する。
【００６５】
ＣＰＵ３０は、送信するＣＡＮメッセージのレコード数を取得する（ステップＳ２０１）。レコード数は、送信レコードの総レコード数を計数してもよいし、予め別にレコード数を記録しておき、ＣＰＵ３０がこれを参照するようにしてもよい。
【００６６】
ＣＰＵ３０は、カウント用の変数Ｌに「０」を代入し（ステップＳ２０２）、送信テーブルのＬ番目のレコード（先頭は０番目）を順に読み出す（ステップＳ２０３）。ＣＰＵ３０は、当該レコードをインデックス先とするシグナルのインデックス情報を抽出する（ステップＳ２０４）。抽出したインデックス情報を１つ選択し（ステップＳ２０５）、選択したインデックス情報のシグナルが受信テーブル内のいずれに格納されているかを、受信テーブルのインデックス情報から特定する（ステップＳ２０６）。
【００６７】
ＣＰＵ３０は、特定した受信テーブル内のレコードを参照し（ステップＳ２０７）、受信フラグが「ＯＮ」であるか否かを判断する（ステップＳ２０８）。ＣＰＵ３０は、受信フラグが「ＯＮ」である場合（Ｓ２０８：ＹＥＳ）、ステップＳ２０６でインデックス情報から特定した格納位置からシグナルを取得し（ステップＳ２０９）、取得したシグナルを、ステップＳ２０５にて選択してある送信テーブルのインデックス情報が示す格納位置に格納する（ステップＳ２１０）。
【００６８】
ＣＰＵ３０は、ステップＳ２０４で抽出したインデックス情報を全て選択したか否かを判断し（ステップＳ２１１）、全てを選択していないと判断した場合（Ｓ２１１：ＮＯ）、処理をステップＳ２０５へ戻し、次のインデックス情報を選択する（Ｓ２０５）。
【００６９】
次に選択したインデックス情報のシグナルが格納されている受信テーブルのレコード内の受信フラグが「ＯＦＦ」であると判断した場合（Ｓ２０８：ＮＯ）、処理をステップＳ２１１へ進める。
【００７０】
ＣＰＵ３０は、ステップＳ２１１にて全てを選択したと判断した場合（Ｓ２１１：ＹＥＳ）、送信するＣＡＮメッセージのデータが完成しているので、ステップＳ２０３で読み出している当該レコードの送信条件が成立しているか否かを判断する（ステップＳ２１２）。ＣＰＵ３０は、送信条件が成立していると判断した場合（Ｓ２１２：ＹＥＳ）、当該レコード内のデータ部分を含むＣＡＮメッセージを、当該レコード内の中継先バスに対応する第１〜第４通信部３１〜３４のいずれかに与えて送信せしめる（ステップＳ２１３）。
【００７１】
次にＣＰＵ３０は、カウント用の変数Ｌに「１」を加算し（ステップＳ２１４）、ステップＳ２０１で取得したレコード数と変数Ｌとが一致するか否かを判断する（ステップＳ２１５）。即ちＣＰＵ３０は、送信テーブル内の全てのレコードについて処理を実行したか否かを判断する（Ｓ２１５）。ＣＰＵ３０は、ステップＳ２１５で一致しないと判断した場合（Ｓ２１５：ＮＯ）、処理をステップＳ２０３へ戻し、次のＬ番目のレコードを読み出す（Ｓ２０３）。
【００７２】
ＣＰＵ３０は、ステップＳ２１２にて送信条件が不成立であると判断した場合（Ｓ２１２：ＮＯ）、処理をステップＳ２１４へ進め、次のレコードについて処理を実行する。
【００７３】
ＣＰＵ３０は、ステップＳ２１５にて、ステップＳ２０１で取得したレコード数と変数Ｌとが一致すると判断した場合（Ｓ２１５：ＹＥＳ）、受信テーブルの全レコードの受信フラグを「ＯＦＦ」とし（ステップＳ２１６）、処理を終了する。
【００７４】
図９のフローチャートに示した処理手順について、具体例を挙げて説明する。具体例として、図５の送信テーブルの内容例の内、ＣＡＮＩＤが「０ｘ０Ａ０」のレコードを読み出した場合（Ｓ２０３）の処理を説明する。なお当該レコードは、０ｘ０８番目のレコードであるとする。
【００７５】
ＣＰＵ３０は、０ｘ０８番目のレコードをインデックス先とするシグナルのインデックス情報（２５〜２９）を抽出する（Ｓ２０４）。抽出したインデックス情報の内、２５番目のシグナルのインデックス情報を選択し（Ｓ２０５）、選択したインデックス情報のシグナルが受信テーブル内のいずれに格納されているかを、受信テーブルのインデックス情報（２５番目）から「ｐｏｓ０ｘ０８８０」であると特定する（Ｓ２０６）。
【００７６】
ＣＰＵ３０は、受信テーブル内の「ｐｏｓ０ｘ０８８０」番目のレコード、即ち通信バス１２から受信したＣＡＮＩＤ「０ｘ０８０」のレコードを参照し（Ｓ２０７）、受信フラグが「ＯＮ」であると判断する（Ｓ２０８：ＹＥＳ）。ＣＰＵ３０は、受信テーブル内の当該レコードのデータ格納領域から、ステップＳ２０６で特定した格納位置、即ち開始バイト「０」、開始ビット「０」、ビット長「１」を参考にしてシグナルを取得する（Ｓ２０９）。そしてＣＰＵ３０は、ステップＳ２０５で選択した２５番目のインデックス情報（送信テーブル）の格納位置の情報に基づき、送信テーブルのＣＡＮＩＤが「０ｘ０Ａ０」のレコードのデータ格納領域の「０」番目のバイトの「０」番目のビットから２ビット分、取得したシグナルの情報を格納する（Ｓ２１０）。
【００７７】
ＣＰＵ３０は、次に「２６」番目のインデックス情報に基づき、即ち通信バス１２から受信したＣＡＮＩＤ「０ｘ０８０」のレコードを参照し（Ｓ２０７）、ステップＳ２０６で特定した格納位置からシグナルを取得する（Ｓ２０９）。抽出したインデックス情報（２５〜２９）から送信するＣＡＮメッセージを完成させ、送信条件が成立しているか否かを判断し（Ｓ２１２）、送信条件は送信周期が２０ミリ秒毎であるから、１０ミリ秒毎の送信処理の２回につき１回、送信テーブルの当該レコードの送信（Ｓ２１３）を実行する。
【００７８】
このように、ルーティングテーブル３７が一定の型のレコードから構成されており、各レコードを読み出す方法が、上述した各処理手順内の特定の方法に定められる構成とすることにより、ルーティングテーブル３７が、例えばルーティングテーブル４０に置換されたとしても、ルーティングプログラム３８に基づく処理は変更する必要が無い。特に、ルーティングテーブル３７又はルーティングテーブル４０がインデックス情報を含むことによって、置換された異なるルーティングテーブル４０に対応して受信した情報を管理し、中継する情報を作成することができる。
【００７９】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００８０】
３  中継装置
３０  ＣＰＵ
３５  フラッシュメモリ
３７，４０  ルーティングテーブル
３８  ルーティングプログラム
【図１】
0005696657.tif 000002
【図２】
0005696657.tif 000003
【図３】
0005696657.tif 000004
【図４】
0005696657.tif 000005
【図５】
0005696657.tif 000006
【図６】
0005696657.tif 000007
【図７】
0005696657.tif 000008
【図８】
0005696657.tif 000009
【図９】
0005696657.tif 000010