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