(57)【要約】【課題】ゲートウェイ装置に宛てて送信されたデータを効率的に蓄積できるゲートウェイ装置及び方法を提供する。【解決手段】車両の制御を行う制御装置との間で通信路を介して送受信するデータを、ハードウェア回路を用いて通信する２以上の通信部と、通信部が受信したデータをソフトウェア処理するソフトウェア処理部と、通信部が通信路を介して制御装置へ送信するデータを蓄積する蓄積部とを備えるゲートウェイ装置において、制御装置が送信するデータは、他の制御装置へ中継する中継データと、ソフトウェア処理部が処理する処理データとを含み、ソフトウェア処理部は、通信部が中継データを送信しない通信路に関する蓄積部が処理データを蓄積するように設定すると共に、設定した蓄積部が蓄積する処理データをソフトウェア処理する。この構成によれば、使用しない蓄積部に処理データを効率的に蓄積できる。【選択図】図３
2010251837.tif 000002
【特許請求の範囲】
【請求項１】
車両の制御を行う制御装置との間で通信路を介して送受信するデータを通信する２以上の通信コントローラと、前記通信コントローラが受信したデータをソフトウェア処理するソフトウェア処理部と、前記通信コントローラが前記通信路を介して前記制御装置へ送信するデータを蓄積する蓄積部とを備えるゲートウェイ装置において、
前記通信コントローラが前記制御装置から受信するデータは、他の前記制御装置への中継を要する中継データを含み、
前記ソフトウェア処理部は、前記通信コントローラが受信するデータの種類に基づいて前記通信コントローラが前記中継データを送信しない通信路を検出すると共に、検出した前記通信路に関する蓄積部が前記データを蓄積するように設定することを特徴とするゲートウェイ装置。
【請求項２】
前記制御装置が送信するデータは、前記ソフトウェア処理部の処理を要する処理データを更に含み、
前記中継データを識別する情報と、前記中継データの中継に用いる通信路を識別する情報とを関連付けて記憶する第１記憶部と、
前記処理データを識別する情報と、前記処理データを蓄積するように前記ソフトウェア処理部が設定した蓄積部に関する前記通信路を識別する情報とを関連付けて記憶する第２記憶部と、
前記通信コントローラが受信したデータを識別する情報に基づいて前記第１記憶部及び前記第２記憶部が記憶する情報が識別する通信路を検索すると共に、検索した前記通信路に関する蓄積部へ前記データを転送するハードウェアで構成されるハードウェア転送部とを更に備え、
前記ソフトウェア処理部は、前記第１記憶部が記憶する情報を変更した場合、及び前記第２記憶部が情報を記憶していない場合の１つ以上の場合に、前記第１記憶部が記憶する情報が識別する通信路ではない通信路を、前記中継データを送信しない通信路として検出すると共に、検出した前記通信路に関連した前記蓄積部が前記処理データを蓄積するように設定することを特徴とする請求項１に記載のゲートウェイ装置。
【請求項３】
車両の制御を行う制御装置との間で通信路を介して送受信するデータを、通信コントローラを用いて通信する通信ステップと、前記通信ステップで受信したデータをソフトウェア処理するソフトウェア処理ステップと、前記通信ステップで前記通信路を介して前記制御装置へ送信するデータを蓄積部へ蓄積する蓄積ステップとを備えるゲートウェイ方法において、
前記通信ステップで前記制御装置から受信するデータは、他の前記制御装置への中継を要する中継データを含み、
前記ソフトウェア処理ステップは、前記通信ステップで受信するデータの種類に基づいて前記通信ステップで前記中継データを送信しない通信路を検出すると共に、検出した前記通信路に関する前記蓄積部が前記蓄積ステップにおいて前記データを蓄積するように設定することを特徴とするゲートウェイ方法。
【請求項４】
前記通信コントローラが受信したデータを前記データの種類に基づいて定まる前記蓄積部へ転送するハードウェアで構成されるハードウェア転送部を更に備え、
前記ソフトウェア処理部は、前記通信コントローラが受信したデータを、前記データの種類に基づいて定まる蓄積部と、検出した前記通信路に関する蓄積部とに複製して転送するよう前記ハードウェア転送部を設定すると共に、前記データ種類に基づいて定まる蓄積部が蓄積するデータと、検出した前記通信路に関する蓄積部が蓄積するデータとを比較することで、前記データを検査するソフトウェア処理を更に実行することを特徴とする請求項１に記載のゲートウェイ装置。
【請求項５】
前記通信ステップで受信したデータを前記データの種類に基づいて定まる前記蓄積部へハードウェアを用いて転送するハードウェア転送ステップを更に備え、
前記ソフトウェア処理ステップは、前記通信ステップで受信したデータを、前記データの種類に基づいて定まる蓄積部と、検出した前記通信路に関する蓄積部とに複製して転送するよう前記ハードウェア転送ステップで用いるハードウェアを設定すると共に、前記データ種類に基づいて定まる蓄積部が蓄積するデータと、検出した前記通信路に関する蓄積部が蓄積するデータとを比較することで、前記データを検査するソフトウェア処理を更に実行することを特徴とする請求項４に記載のゲートウェイ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両の挙動を制御する制御装置間で送受信されるデータの中継を行うゲートウェイ装置及びゲートウェイ方法に関する。
【背景技術】
【０００２】
近年、車両には、エンジンを制御するエンジン制御装置、ドアの開閉を制御するボデー制御装置、及びオーディオを制御するオーディオ制御装置等といった複数の制御装置（ＥＣＵ：Electronic
Control Unit）が搭載されている。これら複数の制御装置は、接続されたネットワークを介して相互に通信可能に接続している。このため、複数のネットワークを介して制御装置がデータ通信するためには、ネットワークの中継地点においてデータを中継するゲートウェイ装置が必要となる。ここで、近年、制御装置間で送受信されるデータ量が増加するだけでなく、車両に搭載される制御装置の数が増加する傾向にある。この傾向によって、ゲートウェイ装置が制御装置の接続するネットワークへデータを中継するためにバスを占有する割合（つまり、バス占有率）の増加が生じた。このバス占有率の増加により、ゲートウェイ装置によるデータ中継の遅延及びデータ中継の失敗が発生するという問題が生じた。
【０００３】
このため、データ中継時のバス占有率を軽減できるゲートウェイ装置が知られるに至った（例えば、特許文献１）。このゲートウェイ装置は、通信バスを介して受信したデータの宛先となる端末を検知する宛先検知手段と、複数の通信バスのうち、宛先検知手段が検知した端末が接続している通信バスにのみ、受信したデータを送出することを特徴としている。
【０００４】
ここで、上記のゲートウェイ装置は、データの中継をソフトウェア処理によって実現するため、データの中継速度が十分に向上しない。このため、データの中継をハードウェア処理によって実現するゲートウェイ装置が知られるに至った。また、近年、車両に搭載される装置数が増加したため、例えば、装置の開発又は故障診断に用いる各装置の状態を表す情報を効率的に取得する必要が生じていた。このため、ネットワークを介して各装置へ送信した要求データに対する各装置の応答データに基づいて、各装置の状態を表す情報を取得する状態取得方法が知られるに至った。また同時に、データの中継をハードウェア処理によって実現すると共に、要求データに応答した応答データの返信をソフトウェア処理によって実現するゲートウェイ装置が知られるに至った。更に、中継するデータが、例えば、データ化け等により破壊又は変化しているか否かを検査するために、偶奇パリティを用いたパリティチェックを行うゲートウェイ装置が知られるに至った。
【０００５】
【特許文献１】特開２００３−２６４５７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、上記要求データが応答を要求する装置は、ゲートウェイ装置のデータ中継先である制御装置のみならず、ゲートウェイ装置自身をも含む。また、ネットワークを介して通信されるデータは、上記の要求データのみならず、ゲートウェイ装置が実行するアプリケーションの処理に用いるアプリケーションデータをも含む。よって、上記のゲートウェイ装置は、受信したデータが、他の制御装置を宛先とするデータであるか、ゲートウェイ装置自身を宛先とするデータであるか、又は破棄するデータであるかを検知する必要がある。ここで、データ中継をハードウェア処理で実現すると共に、要求データに対する返信をソフトウェア処理で実現する上記のゲートウェイ装置が、更に、データの宛先の検知をハードウェア処理で実現する構成を採用できる。しかし、この構成では、宛先がゲートウェイ自身であると検知したデータを一時的に蓄積する蓄積手段を更に追加する必要があり、既存の蓄積手段を効率的に使用できないという問題があった。つまり、上記のゲートウェイ装置には、処理速度の異なるハードウェアとソフトウェアとの間で受渡されるデータを一時的に蓄積することで緩衝装置の役割を果たすハードウェアバッファを追加する必要があった。また、上記ゲートウェイ装置の様に、ハードウェア処理で中継先を検知する装置は、検知した中継先毎にデータを蓄積する構成を有するが、ゲートウェイ装置自身を宛先とするデータを蓄積する構成を有さない。このため、上記ゲートウェイ装置は、受信したデータの宛先がゲートウェイ装置自身であるか否かの検知をソフトウェア処理で実現する必要がある。このため、上記ゲートウェイ装置には、ハードウェア処理で中継先を検知することで確保したＣＰＵ（Central
Processing Unit）資源が浪費されるという問題があった。
【０００７】
更に、上記のパリティチェックを行うゲートウェイ装置では、データの処理過程で生じるデータの破壊又は変化を、ミラーリング検査に比べて精度良く検出できないという問題があった。つまり例えば、偶奇パリティチェックを行うゲートウェイ装置では、奇数個のビット化けの発生を検出できるが、偶数個のビット化けを検出できないという問題があった。
【０００８】
そこで、本発明の目的とするところは、ゲートウェイ装置に宛てて送信されたデータを効率的に蓄積できるゲートウェイ装置及びゲートウェイ方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係るゲートウェイ装置は、車両の制御を行う制御装置との間で通信路を介して送受信するデータを通信する２以上の通信コントローラと、通信コントローラが受信したデータをソフトウェア処理するソフトウェア処理部と、通信コントローラが通信路を介して制御装置へ送信するデータを蓄積する蓄積部とを備えるゲートウェイ装置において、通信コントローラが制御装置から受信するデータは、他の制御装置への中継を要する中継データを含み、ソフトウェア処理部は、受信部が受信するデータの種類に基づいて通信コントローラが中継データを送信しない通信路を検出すると共に、検出した通信路に関する蓄積部がデータを蓄積するように設定することを特徴としている。
この構成によれば、中継データを通信路へ中継しないために使用しない蓄積部にソフトウェア処理の対象とするデータを効率的に蓄積できる。
【００１０】
上記構成において、制御装置が送信するデータは、ソフトウェア処理部の処理を要する処理データを更に含み、ソフトウェア処理部は、処理データの種類毎に、検出した前記通信路に関する蓄積部が処理データを蓄積するように設定すると共に、設定した蓄積部が蓄積する処理データをソフトウェア処理する構成を採用できる。
この構成によれば、中継データを通信路へ中継しないために使用しない蓄積部に、ゲートウェイ装置に宛てて送信された処理データを種類に基づいて効率的に蓄積できる。
【００１１】
上記構成において、中継データを識別する情報と、中継データの中継に用いる通信路を識別する情報とを関連付けて記憶する第１記憶部と、処理データを識別する情報と、処理データを蓄積するようにソフトウェア処理部が設定した蓄積部に関する通信路を識別する情報とを関連付けて記憶する第２記憶部と、通信コントローラが受信したデータを識別する情報に基づいて第１記憶部及び第２記憶部が記憶する情報が識別する通信路を検索すると共に、検索した通信路に関する蓄積部へデータを転送するハードウェア構成されるハードウェア転送部とを更に備え、ソフトウェア処理部は、第１記憶部が記憶する情報を変更した場合、及び第２記憶部が情報を記憶していない場合の１つ以上の場合に、第１記憶部が記憶する情報が識別する通信路ではない通信路を、中継データを送信しない通信路として検出すると共に、検出した通信路に関連した蓄積部が処理データを蓄積するように設定する構成を採用できる。
この構成によれば、通信コントローラによってデータの中継に用いられる通信路の構成及び通信路に接続する制御装置を表す第１記憶部の情報のいずれか１つ以上を変更しても、中継データを送信しない通信路に関する蓄積部が処理データを蓄積するように容易に設定できる。
【００１２】
上記構成において、ソフトウェア処理部は、通信コントローラが受信した処理データの量及び種類のいずれか１つ以上を監視すると共に、監視する処理データの量及び種類のいずれか１つ以上が変化した場合に、前記中継データを送信しない通信路に関連した蓄積部が処理データを蓄積するように再設定する構成を採用できる。
この構成によれば、通信コントローラが受信するデータの量及び種類が変化した場合であっても、中継データを送信しない通信路に関する蓄積部が処理データを蓄積するように容易に設定できる。
【００１３】
上記構成において、処理データは、ソフトウェア処理部がアプリケーションの実行に用いるアプリケーションデータ、故障の診断に用いる情報を収集するソフトウェア処理の実行に用いるダイアグデータ、及びソフトウェア処理部が蓄積部の蓄積するデータを測定及び調整するソフトウェア処理の実行に用いるキャリブレーションデータのいずれか１つ以上である構成を採用できる。
この構成によれば、ソフトウェア処理に用いるアプリケーションデータ、ダイアグデータ、及びキャリブレーションデータのいずれか１つ以上を、使用しない蓄積部へ効率的に蓄積できるため、これらのデータに基づいたソフトウェア処理を効率的に実行できる。
【００１４】
上記構成において、ソフトウェア処理部は、通信コントローラが中継データを全ての通信路に対して送信する場合には、データの種類を識別する情報に基づいて通信コントローラが受信したデータから処理データを検索すると共に、検索した処理データをソフトウェア処理する構成を採用できる。
この構成によれば、全ての通信路へ中継データを中継するために全ての蓄積部を使用する場合であっても、蓄積部へ処理データを蓄積することなく、通信コントローラから処理データを取得してソフトウェア処理できる。
【００１５】
上記構成において、通信コントローラが受信したデータをデータの種類に基づいて定まる蓄積部へ転送するハードウェアで構成されるハードウェア転送部を更に備え、ソフトウェア処理部は、通信コントローラが受信したデータを、データの種類に基づいて定まる蓄積部と、検出した通信路に関する蓄積部とに複製して転送するようハードウェア転送部を設定すると共に、データ種類に基づいて定まる蓄積部が蓄積するデータと、検出した通信路に関する蓄積部が蓄積するデータとを比較することで、データを検査するソフトウェア処理を更に実行する構成を採用できる。
この構成によれば、検査の対象とするデータと、検査の対象とするデータを複製したデータとを比較してデータの異常を検出するため、データに生じるデータ化けを精度良く検出できる。
【００１６】
上記構成において、中継データを識別する情報と、中継データの中継に用いる通信路を識別する情報とを関連付けて記憶する第１記憶部と、ソフトウェア処理部の検査が必要な検査データを識別する情報と、検査データを蓄積するようにソフトウェア処理部が設定した蓄積部に関する通信路を識別する情報とを関連付けて記憶する第２記憶部とを更に備え、ハードウェア中継部は、通信部が受信したデータを識別する情報に基づいて第１記憶部及び第２記憶部が記憶する情報が識別する通信路を検索すると共に、検索した通信路に関する蓄積部へデータを転送し、ソフトウェア処理部は、第１記憶部が記憶する情報を変更した場合、及び第２記憶部が情報を記憶していない場合の１つ以上の場合に、第１記憶部が記憶する情報が識別する通信路ではない通信路を、前記中継データを送信しない通信路として検出すると共に、検出した前記通信路に関連した蓄積部が検査データを蓄積するように設定する構成を採用できる。
この構成によれば、通信コントローラによってデータの中継に用いられる通信路の構成及び通信路に接続する制御装置を表す第１記憶部の情報のいずれか１つ以上を変更しても、中継データを送信しない通信路に関する蓄積部が検査データを蓄積するように容易に設定できる。
【００１７】
上記構成において、検査データを識別する情報は、検査データの種類及び検査データの中継に用いる通信路のいずれか１つ以上と、他のデータよりも優先的に検査を行う必要性を表す優先度とを関連付けた情報であり、ソフトウェア処理部は、優先度に基づいて定めるデータを検査する構成を採用できる。
この構成によれば、優先度に基づいて検査を行うデータを効率的に定めるため、効率良くデータを検査できる。
【００１８】
本発明に係るゲートウェイ方法は、車両の制御を行う制御装置との間で通信路を介して送受信するデータを、通信コントローラを用いて通信する通信ステップと、通信ステップで受信したデータをソフトウェア処理するソフトウェア処理ステップと、通信ステップで通信路を介して制御装置へ送信するデータを蓄積部へ蓄積する蓄積ステップとを備えるゲートウェイ方法において、通信ステップで制御装置から受信するデータは、他の制御装置への中継を要する中継データと、ソフトウェア処理部の処理を要する処理データとを含み、ソフトウェア処理ステップは、通信ステップで受信するデータの種類に基づいて、通信ステップで中継データを送信しない通信路に関する蓄積部が蓄積ステップにおいて処理データを蓄積するように設定することを特徴としている。
この構成によれば、中継データを通信路へ中継しないために使用しない蓄積部に、ゲートウェイ装置に宛てて送信された処理データを種類に基づいて効率的に蓄積できる。
【発明の効果】
【００１９】
本明細書開示のゲートウェイ装置及びゲートウェイ方法によれば、ゲートウェイ装置に宛てて送信されたデータを効率的に蓄積できる。
【図面の簡単な説明】
【００２０】
【図１】本発明のゲートウェイ装置で構成されるゲートウェイシステムの一実施形態を示す構成図である。
【図２】ゲートウェイ装置の一構成例を表すハードウェア構成図である。
【図３】ハードウェア中継部の一構成例を表すハードウェア構成図である。
【図４】通信仕様の一部を表す図である。
【図５】通信仕様の他部を表す図である。
【図６】通信仕様の他部を表す図である。
【図７】第１ルーティングマップが記憶するテーブルの一例を表す図である。
【図８】第２ルーティングマップが記憶するテーブルの一例を表す図である。
【図９】ソフトウェア処理部が実行する生成処理の一例を表すフローチャートである。
【図１０】ソフトウェア処理部が実行する追加処理の一例を表すフローチャートである。
【図１１】ソフトウェア処理部が実行する検査処理の一例を表すフローチャートである。
【図１２】ソフトウェア処理部が実行する設定処理の一例を表すフローチャートである。
【図１３】実施例１において、ソフトウェア処理部が実行するＦＩＦＯ０設定処理の一例を表すフローチャートである。
【図１４】実施例１において、ソフトウェア処理部が実行するＦＩＦＯ１設定処理の一例を表すフローチャートである。
【図１５】実施例１において、ソフトウェア処理部が実行する後処理の一例を表すフローチャートの一部である。
【図１６】実施例１において、ソフトウェア処理部が実行する後処理の一例を表すフローチャートの他部である。
【図１７】ソフトウェア処理部の一構成例を、中継フレームを取り扱う機能に基づいて表す機能ブロック図である。
【図１８】ソフトウェア処理部の一構成例を、ＧＷ宛てフレームを取り扱う機能に基づいて表す機能ブロック図である。
【図１９】ソフトウェア処理部の一構成例を、ＮＭフレームを取り扱う機能に基づいて表す機能ブロック図である。
【図２０】実施例１において、ゲートウェイ装置が実行する初期化処理の一例を表すフローチャートである。
【図２１】実施例６におけるゲートウェイ装置の一構成例を表す図である。
【図２２】実施例６において、ゲートウェイ装置が実行する初期化処理の一例を表すフローチャートである。
【発明を実施するための最良の形態】
【００２１】
以下、本発明の最良の実施形態について、添付図面を参照しつつ説明する。
【実施例１】
【００２２】
図１は、本発明のゲートウェイ装置で構成されるゲートウェイシステムの一実施形態を示す構成図である。
【００２３】
図１に示すゲートウェイシステムＳは、例えば、乗用車、バス、及びトラック等の自動車である車両に搭載される。尚、車両は、原動機付自転車、軽車両、及びトロリーバス、軍用車両、及び鉄道車両を含む。また、ゲートウェイシステムＳは、船舶、航空機、並びに人工衛星、宇宙探査機、及び宇宙ステーション等の宇宙機に搭載される構成を採用できる。また更に、ゲートウェイシステムＳは、車両又は船舶等に搭載されずに使用される構成を採用できる。
【００２４】
ゲートウェイシステムＳは、ＣＡＮバスＢＣ０からＢＣ３、ＥＣＵ（Electronic Control Unit）１から４３、故障診断装置１００、及びゲートウェイ装置２００で構成される。尚、図１は、ＥＣＵ３から１４、１８から２７、及び３４から４３の表示を省略している。
ＣＡＮバスＢＣ０は、ＥＣＵ１から１４、故障診断装置１００、及びゲートウェイ装置２００とをＣＡＮ（Controller Area Network）プロトコルを用いて通信可能に接続するバスである。また、ＣＡＮバスＢＣ１はＥＣＵ１５から２７及びゲートウェイ装置２００を、ＣＡＮバスＢＣ２はＥＣＵ２８から３０及びゲートウェイ装置２００を、ＣＡＮバスＢＣ３はＥＣＵ３１から４３及びゲートウェイ装置２００を、同様に通信可能に接続する。尚、ＣＡＮバスは、ＬＩＮ（Local
Interconnect Network）プロトコルを用いて通信する構成を採用できる。
【００２５】
ＥＣＵ１から４３は、車両の挙動を制御する制御装置である。ＥＣＵ１から４３は、車両の挙動を制御するためのフレームデータ（以下単に、制御フレームという）、及び接続するネットワークを管理するためのフレームデータ（以下単に、ＮＭ（Network
Management）という）を送信する。本実施例では、ＥＣＵ１から４３は、ゲートウェイ装置２００がフレームを中継するネットワークに接続された各ＥＣＵが同期してスリープするようＮＭフレームを通信して管理するとして説明を行うが、これに限定される訳ではない。
【００２６】
尚、フレームデータとは、ゲートウェイ装置２００がデータを中継するために、一度に受信又は送信するデータをいう。本実施例では、フレームデータは、例えば、ＣＡＮプロトコルに従った枠となる所定のデータから開始する所定の長さを有するデータであるとして説明するが、これに限定される訳ではない。
ここで、車両の挙動は、広く車両の動きをいう。車両の動きは、例えば、車両の速度及び加速度の変化、車両の進行方向及びヨーイングの変化、並びに車両に加わる加重の変化を含むだけでなく、車両が備えるエアバッグの動作、ドアの開閉、オーディオの動作、及びナビゲーションの動作を含む。
【００２７】
故障診断装置１００は、ＣＡＮバスＢＣ０を介して直接的又は間接的に接続するＥＣＵ１から４３及びゲートウェイ装置２００の故障診断を行う。具体的には、故障診断装置１００は、ＥＣＵ１から４３及びゲートウェイ装置２００に対して故障診断に用いるフレームデータ（以下単に、ダイアグフレームという）を送信する。また、ダイアグフレームは、フレームの宛先としたＥＣＵ１から４３若しくはゲートウェイ装置２００の故障診断に用いる情報又は故障診断の結果を故障診断装置１００へ返信するように求める要求を表すとして説明するが、これに限定される訳ではない。更に、故障診断に用いる情報は、故障診断の対象とする装置（以下単に、対象装置という）の状態を表す情報を含むとして説明するが、これに限定される訳ではない。例えば、故障診断に用いる情報は、対象装置が用いる環境設定を表す情報を含む構成を採用できる。更に、対象装置の状態を表す情報は、例えば、対象装置の使用期間等の経年劣化を表す情報を含む。
また更に、故障診断装置１００は、ＥＣＵ１から４３及びゲートウェイ装置２００が記憶するデータの調整（キャリブレーション）及び測定を行う。具体的には、故障診断装置１００は、ＥＣＵ１から４３及びゲートウェイ装置に対してＣＣＰ（CAN
Calibration Protocol）フレームデータ（以下単に、ＣＣＰフレームという）を送信する。
【００２８】
ゲートウェイ装置２００は、４本のバスＢＣ０からＢＣ３と接続する。つまり、ゲートウェイ装置２００は、異なる４つのネットワークに接続するＥＣＵ１から４３及び故障診断装置１００に接続する。ゲートウェイ装置２００は、中継機能と応答機能と実行機能とを発揮する。ゲートウェイ装置２００が発揮する中継機能は、あるネットワークに接続された装置が送信したフレームを受信すると共に、受信したフレームを中継先のネットワークに接続する装置へ送信して中継する機能をいう。ゲートウェイ装置２００が発揮する応答機能とは、ゲートウェイ装置２００へ宛てて送信されたダイアグフレーム又はＣＣＰフレームを受信すると共に、受信したフレームの要求に応じて所定のフレームを故障診断装置１００へ返信する機能をいう。ゲートウェイ装置２００が発揮する実行機能とは、ゲートウェイ装置２００へ宛てて送信されたフレームに対してアプリケーションが表すソフトウェア処理を実行する機能をいう。尚、ゲートウェイ装置２００が実行するアプリケーションは、ダイアグアプリケーション、ＣＣＰアプリケーション、及び一般アプリケーションに類別される。
【００２９】
ダイアグアプリケーションは、ダイアグフレームの求めに応じて、故障診断に用いる情報を収集した後に、収集した情報を故障診断装置１００へ返信する処理を表すアプリケーションである。また、ダイアグアプリケーションは、収集した情報に基づいて行った故障診断の結果を返信するアプリケーションであっても良い。ＣＣＰアプリケーションは、ＣＣＰフレームに応じて、ゲートウェイ装置２００が記憶するデータの調整及び測定をする処理を表すアプリケーションである。一般アプリケーションは、ダイアグアプリケーション及びＣＣＰアプリケーション以外のアプリケーションをいう。また、一般アプリケーションが表すソフトウェア処理の対象とするフレームを、以下単に、アプリケーションフレームという。
【００３０】
ここで、図２を参照して、ゲートウェイ装置２００の構成について説明する。図２は、ゲートウェイ装置２００の一構成例を表すハードウェア構成図である。
図２に示すゲートウェイ装置２００は、ＣＡＮコントローラ２１０から２１５、ＣＡＮインタフェース部２２０、ハードウェア中継部２３０（以下、ハードマクロともいう）、及びソフトウェア処理部２４０で構成される。
ＣＡＮコントローラ２１０から２１５は、ハードウェア回路で構成される。ここで、ＣＡＮコントローラ２１０ないし２１３は、ＣＡＮバスＢＣ０ないしＢＣ３とそれぞれ接続する。しかし、ＣＡＮコントローラ２１４及び２１５はＣＡＮバスと接続せず、フレームを通信することがない。尚、ＣＡＮコントローラ２１０ないし２１３とそれぞれＣＡＮバスＢＣ０ないし３とを結ぶ通信路をチャネルという。本実施例では、ＣＡＮコントローラ２１０とＣＡＮバスＢＣ０とを結ぶ通信路をチャネルＣＨ０とし、順次同様に、チャネルＣＨ１からＣＨ３までを定義する。本実施例において、ゲートウェイ装置２００は、６つのＣＡＮコントローラ２１０から２１５で構成されるとして説明するが、この数に限定される訳ではなく、ＣＡＮコントローラの数が複数であればよい。また、ＣＡＮコントローラ２１０から２１５は、それぞれ同様の接続、構成、及び機能を有するため、以下単に、ＣＡＮコントローラ２１０についてのみ説明を行う。
【００３１】
ＣＡＮコントローラ２１０は、受信処理を実行することで、ＣＡＮバスＢＣ０に接続するＥＣＵ１から１４及び故障診断装置１００のいずれかが送信したフレームを、ＣＡＮバスＢＣ０を介して受信する。次に、ＣＡＮコントローラ２１０は、受信したフレームをハードウェア中継部２３０又はソフトウェア処理部２４０へ出力する。また、ＣＡＮコントローラ２１０は、送信処理を実行することで、ハードウェア中継部２３０又はソフトウェア中継部１４１０からフレームを取得する。次に、ＣＡＮコントローラ２１０は、取得したフレームをＣＡＮバスＢＣ０に接続するＥＣＵ１から１４及び故障診断装置１００のいずれか１つ以上へ送信する。
【００３２】
ここで、ＣＡＮコントローラ２１０ないし２１３が受信するフレームについて説明する。ＣＡＮコントローラ２１０ないし２１３が受信するフレームは、ＮＭフレーム、制御フレーム、ダイアグフレーム、ＣＣＰフレーム、及びアプリケーションフレームを含む。また、ＣＡＮコントローラ２１０ないし２１３が受信するフレームは、ゲートウェイ装置２００へ宛てたフレームと、ゲートウェイ装置２００以外の装置（つまり、ＥＣＵ１から４３及び故障診断装置１００）へ宛てたフレームとに類別される。ゲートウェイ装置２００以外の装置へ宛てたフレームは、ゲートウェイ装置２００が宛先の装置へ中継するフレームデータ（以下単に、中継フレーム又は中継データという）である。ゲートウェイ装置２００へ宛てたフレーム（以下単に、ＧＷ宛てフレーム又は処理データという）は、ゲートウェイ装置２００がソフトウェア処理に用いるフレームデータである。尚、ＣＡＮコントローラ２１０ないし２１３が受信するフレームは、中継データであり、かつ処理データであっても構わない。
【００３３】
次に、図３を参照して、ＣＡＮコントローラ２１０のハードウェア構成の一例について説明を行う。図３は、ＣＡＮコントローラ等の一構成例を表すハードウェア構成図である。尚、図３は、ＣＡＮコントローラ２１２及び２１３の図示を省略している。
ＣＡＮコントローラ２１０は、例えば、ＲＡＭ（Random Access Memory）で構成されるバッファを有する。ＣＡＮコントローラ２１０が有するバッファは、複数のメッセージボックスとして使用される。１つのメッセージボックスは、１つのデータフレームを蓄積する領域である。メッセージボックスは、フレームの受信に用いる受信用メッセージボックス２１０ａと送信に用いる送信用メッセージボックス２１０ｂとに種別される。
【００３４】
ここで、図２に戻り、ゲートウェイ装置２００の構成について引き続き説明を行う。
ＣＡＮインタフェース部２２０は、ＣＡＮコントローラ２１０から２１５とＣＡＮインタフェース部２２０との間でそれぞれデータ転送を可能とするバスＢ０から５と、ＣＡＮインタフェース部２２０とハードウェア中継部２３０及びソフトウェア処理部２４０との間でデータ転送を可能とするバスＢＩとのインタフェースを提供する。尚、ＣＡＮインタフェース部２２０、ハードウェア中継部２３０、及びソフトウェア処理部２４０は、バスＢＩを介して互いにデータ転送が可能なように接続している。
【００３５】
ハードウェア中継部２３０は、ハードウェア回路で構成される。ハードウェア中継部２３０は、ハードウェア中継処理を実行することで、中継データをソフトウェア処理部２４０へ中継する中継機能を実現する。
【００３６】
ここで、再度、図３を参照して、ハードウェア中継部２３０のハードウェア構成について説明する。
ハードウェア中継部２３０は、検索エンジン部２３１、第１ルーティングマップ２３２ａ、第２ルーティングマップ２３２ｂ、及び送信バッファ２３３で構成される。尚、送信バッファ２３３、第１ルーティングマップ２３２ａ、第２ルーティングマップ２３２ｂ、及び検索エンジン部２３１の順に説明する。
【００３７】
送信バッファ２３３は、例えば、ＲＡＭ及びレジスタで構成される。送信バッファ２３３を構成するＲＡＭのメモリ領域は、フレームを蓄積する送信ＦＩＦＯ＿０ ３００ａ、３１０ａ、３２０ａ、３３０ａ、３４０ａ、及び３５０ａ、並びに送信ＦＩＦＯ＿１
３０１ａ、３１１ａ、３２１ａ、３３１ａ、３４１ａ、及び３５１ａを構成する。また、送信バッファ２３３を構成するレジスタは、送信ＦＩＦＯ＿０ ３００ａから３５０ａ及び送信ＦＩＦＯ＿１
３０１ａから３５１ａに保存されたデータ数を表すメッセージカウンタ３００ｂから３５０ｂ、並びに３０１ｂから３５１ｂを保存する。尚、図３は、送信ＦＩＦＯ３２０ａから３５１ａ、及びメッセージカウンタ３２０ｂから３５１ｂの図示を省略している。ここで、送信ＦＩＦＯ３００ａ及び３０１ａは、デフォルトで、チャネルＣＨ０へ中継されるフレームを蓄積し、送信ＦＩＦＯ３１０ａ及び３１１ａは、チャネルＣＨ１へ中継されるフレームを蓄積する。同様に、送信ＦＩＦＯ３２０ａから３５１ａは、チャネルＣＨ２からＣＨ５へ中継されるフレームを蓄積する。また、送信ＦＩＦＯ＿０
３００ａから３５０ａは、デフォルトで、制御フレームを蓄積する。更に、送信ＦＩＦＯ＿１ ３０１ａから３５１ａは、デフォルトで、ダイアグフレーム及びＣＣＰフレームを蓄積する。
【００３８】
ここで、ＣＡＮコントローラ２１４及び２１５はＣＡＮバスと接続しないため、チャネルＣＨ４及びＣＨ５が中継フレームの送信に用いられない。また、ＣＡＮバスに接続するＥＣＵの通信仕様によっては、チャネルＣＨ０からＣＨ３の１つ以上が中継フレームの送信に用いられない場合が生じる。そこで、本件発明のゲートウェイ装置２００は、フレームの送信に用いられないチャネルに関する送信ＦＩＦＯ＿０又は送信ＦＩＦＯ＿１がＧＷ宛てフレームを蓄積するようソフトウェア処理部２４０を用いて設定する。
【００３９】
第１ルーティングマップ２３２ａは、例えば、ＲＯＭで構成される。第１ルーティングマップ２３２ａは、中継フレームを識別する識別情報（つまり、ＣＡＮＩＤ）と、フレームの中継先のチャネルＣＨとを関連付けて記憶する。また、第１ルーティングマップ２３２ａは、識別情報と、識別情報が識別するフレームが例えば、データ化けにより破壊又は変更されているか否か検査するためのパリティを記憶する。第１ルーティングマップ２３２ａが記憶する情報は、ゲートウェイ装置２００を製造する場合、ゲートウェイ装置２００の故障を修理する場合、又はゲートウェイ装置２００を搭載した車両の使用者が、例えば、オーディオ機器等のアクセサリとアクセサリを制御するＥＣＵとを追加することでゲートウェイ装置２００による中継を要するフレームを送信するＥＣＵを車両に追加した場合等に、整備士等によって書き換えられる。書き換えられる情報は、ゲートウェイシステムＳを構成する装置により行われる通信の仕様を表す通信仕様書に基づいて定まる。尚、書き換えられた第１ルーティングマップ２３２ａが記憶する情報は、ソフトウェア処理部２４０によって参照される。
【００４０】
ここで、第１ルーティングマップ２３２ａが記憶する情報について説明する前に、図４から６を参照して、第１ルーティングマップ２３２ａが記憶する情報を定める通信仕様について説明する。図４から６は、ゲートウェイシステムＳを構成する装置の通信仕様の一例を表す図である。図４から６に示すテーブルは、通信仕様書Ｄに記載されたテーブルである。通信仕様書Ｄは、例えば、ドキュメントファイル等でゲートウェイシステムＳの通信仕様を表す。尚、ゲートウェイ装置２００は、この通信仕様書Ｄを表す電子ファイルを記憶する訳ではない。図４に示すテーブルは、フレーム情報フィールドとチャネル０フィールドとを有する。フレーム情報フィールドは、フレームの特徴を表す情報を保存するフィールドである。具体的には、フレーム情報フィールドは、ＣＡＮＩＤフィールド、ＤＬＣフィールド、及び送信周期フィールドで構成される。ＣＡＮＩＤフィールドは、例えば、ＣＡＮＩＤ等のフレームを識別する識別情報を保存する。ＤＬＣフィールドは、例えば、ＤＬＣ（Data
Length code）等といった、同一行（つまり、エントリ）の識別情報で識別されるフレームの長さを表すコード長を保存する。送信周期フィールドは、同様に、フレームの送信周期を表す情報を保存する。チャネル０フィールドは、チャネル０を用いてＥＣＵ１から１４、故障診断装置１００、及びゲートウェイ装置２００がフレーム送信、受信、又は中継のいずれを行うかを表す情報を保存する。
【００４１】
具体的には、図４は、ＣＡＮＩＤ「100」で識別されるフレームのＤＬＣが「8bit」であり、送信周期が「50ms」であることを表す。また、図４は、ＣＡＮＩＤ「100」で識別されるフレームをＥＣＵ１が送信し、ＥＣＵ６及びＥＣＵ１２が受信し、ゲートウェイ装置２００が受信も中継もしないことを表す。ＣＡＮＩＤ「710」で識別されるフレームも同様に、ゲートウェイ装置２００が受信も中継もしないフレームである。
また、図４は、ＣＡＮＩＤ「500」、「700」、「701」、「750」、及び「780」で識別されるフレームは、ＧＷ宛てフレームであることを表す。特に、これらのフレームの内で、ＣＡＮＩＤ「500」及び「700」で識別されるフレームは、後述するように中継フレームでもある。尚、上記以外のＣＡＮＩＤで識別されるフレームは、中継フレームであるが、ＧＷ宛てフレームではない。
【００４２】
尚、図６及び図７に示すテーブルは、図５に示したテーブルとは異なり、チャネル１からチャネル３フィールドを有する。具体的には、ＣＡＮＩＤ「500」で識別されるフレームは、ゲートウェイ装置２００によって中継され、チャネル２を用いてＥＣＵ２９に送信され、かつチャネル３を用いてＥＣＵ３２及び４０に送信されることを表す。また、ＣＡＮＩＤ「702」で識別されるフレームは、ゲートウェイ装置２００によって中継され、チャネル２を用いてＥＣＵ１５からＥＣＵ２７に送信されることを表す。
【００４３】
次に、図７を参照して、第１ルーティングマップ２３２ａが記憶する情報について説明を行う。図７は、第１ルーティングマップ２３２ａが記憶するテーブルの一例を表す図である。
第１ルーティングマップ２３２ａは、ＣＡＮＩＤフィールド、中継元チャネルフィールド、中継先チャネルフィールド、送信ＦＩＦＯフィールド、及びデータラベルフィールドを有する。ＣＡＮＩＤフィールドは、通信仕様書ＤのＣＡＮＩＤフィールドと同様である。中継元チャネルフィールドは、同一行の識別情報が識別するフレームの中継元チャネルを表す情報を保存する。中継先チャネルフィールドは、同様に、フレームの中継先チャネルを表す情報を保存する。
具体的には、ＣＡＮＩＤ「500」で識別されるフレームは、中継元チャネルがチャネル「0」であり、中継先チャネルがチャネル「2」及び「3」であることを表す。また、ＣＡＮＩＤ「702」で識別されるフレームは、中継元チャネルがチャネル「0」であり、中継先チャネルがチャネル「1」であることを表す。
また、送信ＦＩＦＯフィールドは、同一行に保存したＣＡＮＩＤが識別するフレームを蓄積する送信ＦＩＦＯの種類を識別する情報を保存する。具体的には、数字「0」で送信ＦＩＦＩＯ＿０を表し、数字「1」で送信ＦＩＦＩＯ＿１を表す。データラベルフィールドは、同一行に保存したＣＡＮＩＤが識別するフレームの種類を表すデータラベルを保存する。
【００４４】
ここで、図３に戻り、引き続きゲートウェイ装置２００の構成について説明する。
第２ルーティングマップ２３２ｂは、例えば、ＲＡＭで構成される。第２ルーティングマップ２３２ｂは、ソフトウェア処理部２４０が書き込む情報を記憶する。
ここで、図８を参照して、第２ルーティングマップ２３２ｂが記憶する情報について説明を行う。図８は、第２ルーティングマップ２３２ｂが記憶するテーブルの一例を表す図である。
第２ルーティングマップ２３２ｂは、図７に示す第１ルーティングマップ２３２ａと同じフィールドを有する。第２ルーティングマップ２３２ｂは、第１ルーティングマップ２３２ａが記憶する情報と同じを記憶する。更に、第２ルーティングマップ２３２ｂは、ＧＷ宛てフレームを識別する情報と、中継フレームを送信しないチャネルであって、ＧＷ宛てフレームを蓄積するようにソフトウェア処理部２４０が設定した送信ＦＩＦＯに関するチャネルを識別する情報とを関連付けて記憶する。
具体例を挙げて説明すると、図８に示す第２ルーティングマップ２３２ｂは、図４から図６を参照して説明したＧＷ宛てフレームを識別する情報「500」、「700」、「701」、「750」、及び「780」を、中継フレームを送信しないチャネルＣＨ４及びＣＨ５を識別する情報と、ＧＷ宛てフレームを蓄積する送信ＦＩＦＯの種類を表す情報とに関連付けて記憶する。
【００４５】
再度、図３に戻り、ゲートウェイ装置２００の構成について引き続き説明する。
検索エンジン部２３１は、ＣＡＮインタフェース部２２０、第２ルーティングマップ２３２ｂ、及び送信バッファ２３３に接続している。検索エンジン部２３１は、後述する検索処理を実行することで、フレームを識別する識別情報に基づいて中継先のチャネルＣＨを検索する。
ここで、検索エンジン部２３１が実行する検索処理の一例について説明する。尚、検索エンジン部２３１は、ＣＡＮコントローラ２１０ないし２１３から、フレームを受信したことを表す割込信号（以下単に、受信割込信号という）を受信した場合に検索処理を実行する。
先ず、検索エンジン部２３１は、ＣＡＮインタフェース部２２０を介して、ＣＡＮコントローラ２１０ないし２１３から中継フレームを取得する。次に、検索エンジン部２３１は、取得したフレームの識別情報に基づいて、第２ルーティングマップが記憶するパリティ、並びに中継先チャネルＣＨを識別する情報及び送信ＦＩＦＯの種類を表す情報を検索する。検索エンジン部２３１は、パリティに基づいて取得したフレームのデータ化けの有無を検査し、データ化けを検出した場合には取得したフレームを破棄する。データ化けを検出しない場合には、検索エンジン部２３１は、検索した情報が識別するチャネルＣＨの送信ＦＩＦＯへフレームを転送する。尚、検索エンジン部２３１は、フレームを転送した送信ＦＩＦＯに関連付けられたメッセージカウンタをインクリメントする。その後、検索エンジン部２３１は、検索処理の実行を終了する。
【００４６】
ここで、図２に戻り、ゲートウェイ装置２００の構成について引き続き説明を行う。
ソフトウェア処理部２４０は、ソフトウェア処理を行う。ソフトウェア処理部２４０は、例えば、ＣＰＵ（Central Processing Unit）等の実行部２４１、例えば、フラッシュ・メモリ等の記憶部２４２、及び割込制御部２４３で構成され、実行部２４１、記憶部２４２、及び割込制御部２４３は、それぞれバスによってデータの授受が可能なように接続している。ソフトウェア処理部２４０は、記憶部２４２に格納したプログラムを実行部２４１が読み、読込んだプログラムに従って実行部２４１が演算を行うことで後述する各部の機能を実現する。また、割込制御部２４３は、プログラムに従った演算を行う実行部２４１に対して、ＣＡＮコントローラ２１０から２１５及びハードウェア中継部２３０等のハードウェアを制御するための演算を割込んで実行することを要求する割込信号の入出力を制御する。
【００４７】
ここで、ソフトウェア処理部２４０が有する機能について説明する。
ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂを生成する生成機能を有する。ここで、図９を参照して、生成機能を実現するためにソフトウェア処理部２４０が実行する生成処理について説明する。図９（ａ）は、ソフトウェア処理部２４０が実行する生成処理の一例を表すフローチャートである。尚、ソフトウェア処理部２４０が生成処理を実行するタイミングについては、実施例２から５において詳細に説明する。
【００４８】
先ず、ソフトウェア処理部２４０は、変数を初期化する変数初期化処理を実行する（ステップＳ０１）。変数初期化処理は、図９（ｂ）に示すように、チャネルＣＨ０からＣＨ５毎に送信ＦＩＦＯの２つの種類に対応して設けたフラグ変数を値「OFF」に初期化する処理である。このフラグ変数は、チャネル毎に設けた２種類の送信ＦＩＦＯが中継フレームを蓄積する場合に、値「ON」を保持するフラグである。次に、ソフトウェア処理部２４０は、第１ルーティングマップ２３２ａから、未処理の中継情報を１行（エントリ）分だけ読み出す（ステップＳ０２）。尚、中継情報は、エントリが保存するフレームの中継に用いる情報をいう。その後、ソフトウェア処理部２４０は、読み出した情報を第２ルーティングマップ２３２ｂへ追加する追加処理を実行する（ステップＳ０３）。次に、ソフトウェア処理部２４０は、読み出した中継情報に従って中継フレームを中継した場合に使用するチャネルを検査する検査処理を実行する（ステップＳ０４）。その後、ソフトウェア処理部２４０は、第１ルーティングマップ２３２ａから全行を読み出したか否かを判断する（ステップＳ０５）。ソフトウェア処理部２４０は、全行を読み出したと判断する場合にはステップＳ０６の処理を実行し、そうでない場合にはステップＳ０２に戻り上記処理を繰り返す。
【００４９】
ステップＳ０５において、第１ルーティングマップ２３２ａから全行を読みだしたと判断した場合には、ソフトウェア処理部２４０は、設定処理を実行する（ステップＳ０６）。尚、設定処理は、ステップＳ０４で実行した検査処理の結果、使用しないと判断したチャネルに関する送信ＦＩＦＯがＧＷ宛てフレームを蓄積するように設定する処理をいう。その後、ソフトウェア処理部２４０は、後処理を実行する（ステップＳ０７）。次に、ソフトウェア処理部２４０は、生成処理の実行を終了する。尚、後処理は、検査処理において全てのチャネルを使用すると判断した場合に、所定のチャネルに関する送信ＦＩＦＯがＧＷ宛てフレームを蓄積するよう設定する処理をいう。
【００５０】
次に、図１０を参照して、ソフトウェア処理部２４０が実行する追加処理について説明する。図１０は、ソフトウェア処理部２４０が実行する追加処理の一例を表すフローチャートである。
先ず、ソフトウェア処理部２４０は、読み出した中継情報からフレームを識別する識別情報（つまり、ＣＡＮＩＤ）を取得する（ステップＳ１１）。次に、ソフトウェア処理部２４０は、中継情報からフレームの受信チャネルを取得する（ステップＳ１２）。その後、ソフトウェア処理部２４０は、中継情報から送信チャネルを取得する（ステップＳ１３）。次に、ソフトウェア処理部２４０は、中継情報からフレームを蓄積する送信ＦＩＦＯの種類を識別する情報を取得する（ステップＳ１４）。その後、ソフトウェア処理部２４０は、取得したＣＡＮＩＤが中継のみを必要とするフレーム（つまり、ＧＷ宛てフレームであって、中継フレームではない）であるか否かを判断する（ステップＳ１５）。ソフトウェア処理部２４０は、中継のみを必要とするフレームであると判断する場合にはステップＳ２０の処理を、そうでない場合にはステップＳ１６の処理を実行する。
【００５１】
ステップＳ１５において、ソフトウェア処理部２４０は、中継のみを必要とするフレームでないと判断した場合には、ＣＡＮＩＤの種類がＧＷ宛てのＣＣＰフレームであるか、ＧＷ宛てのダイアグフレームであるか、ＧＷ宛てのアプリケーションフレームであるかを判断する（ステップＳ１６）。ソフトウェア処理部２４０は、ＣＡＮＩＤの種類がＧＷ宛てのＣＣＰフレームであると判断する場合にはステップＳ１７の処理を、ＧＷ宛てのアプリケーションフレームであると判断する場合にはステップＳ１８の処理を、ＧＷ宛てのダイアグフレームであると判断する場合にはステップＳ１９の処理を実行する。
【００５２】
ステップＳ１６において、ソフトウェア処理部２４０は、ＣＡＮＩＤの種類がＧＷ宛てのＣＣＰフレームであると判断した場合には、中継情報のデータラベルにＧＷ宛てＣＣＰフレームを表す値のデータラベルを設定する（ステップＳ１７）。ステップＳ１６において、ソフトウェア処理部２４０は、ＣＡＮＩＤの種類がＧＷ宛てのアプリケーションフレームであると判断した場合には、ＧＷ宛てのアプリケーションフレームを表す値のデータラベルを設定する（ステップＳ１８）。ステップＳ１６において、ソフトウェア処理部２４０は、ＣＡＮＩＤの種類がＧＷ宛てのダイアグフレームであると判断した場合には、ＧＷ宛てのダイアグフレームを表す値のデータラベルを設定する（ステップＳ１９）。
【００５３】
ステップＳ１５において、中継のみを必要とするフレームであると判断した場合、又はステップＳ１７からＳ１９のいずれかの処理を実行した後には、ソフトウェア処理部２４０は、中継情報を第２のルーティングマップへ追加する（ステップＳ２０）。その後、ソフトウェア処理部２４０は、追加処理の実行を終了する。
【００５４】
次に、図１１を参照して、ソフトウェア処理部２４０が実行する検査処理について説明する。図１１は、ソフトウェア処理部２４０が実行する検査処理の一例を表すフローチャートである。
先ず、ソフトウェア処理部２４０は、チャネルの番号を表す変数ｃｈに値「0」を代入して初期化する（ステップＳ２１）。次に、ソフトウェア処理部２４０は、変数ｃｈがゲートウェイ装置２００の使用できるチャネルの最大の番号「5」以下であるか否かを判断する（ステップＳ２２）。ソフトウェア処理部２４０は、変数ｃｈが「5」以下であると判断する場合にはステップＳ２３の処理を実行し、そうでない場合には検査処理の実行を終了する。
【００５５】
ステップＳ２２において、変数ｃｈが「5」以下であると判断した場合には、ソフトウェア処理部２４０は、変数ｃｈで表されるチャネルが図１０のステップＳ１３で中継情報から取得した送信チャネルであるか否かを判断する（ステップＳ２３）。ソフトウェア処理部２４０は、変数ｃｈが表すチャネルが送信チャネルであると判断する場合にはステップＳ２４の処理を実行し、そうでない場合にはステップＳ２７の処理を実行する。
ステップＳ２３において、変数ｃｈで表されるチャネルが送信チャネルであると判断した場合には、ソフトウェア処理部２４０は、中継情報から取得した送信ＦＩＦＯの種類を表す情報が送信ＦＩＦＯ＿０を表す値「0」であるか否かを判断する（ステップＳ２４）。ソフトウェア処理部２４０は、送信ＦＩＦＯの種類を表す情報が値「0」であると判断する場合にはステップＳ２５の処理を、そうでない場合にはステップＳ２６の処理を実行する。
ステップＳ２３において、送信ＦＩＦＯの種類を表す情報が値「0」であると判断した場合には、ソフトウェア処理部２４０は、変数ｃｈが表すチャネルのＦＩＦＯ＿０に対応したフラグ変数の値を「ON」とする（ステップＳ２５）。
ステップＳ２３において、送信ＦＩＦＯの種類を表す情報が値「0」でないと判断した場合には、ソフトウェア処理部２４０は、変数ｃｈが表すチャネルのＦＩＦＯ＿１に対応したフラグ変数の値を「ON」とする（ステップＳ２６）。
【００５６】
ステップＳ２３において、変数ｃｈが表すチャネルが送信チャネルでないと判断した場合、又はステップＳ２５若しくはステップＳ２６を実行した後に、ソフトウェア処理部２４０は、変数ｃｈの値を「1」だけインクリメントする（ステップＳ２７）。その後、ソフトウェア処理部２４０は、ステップＳ２２に戻り上記処理を繰り返す。
【００５７】
次に、図１２を参照して、ソフトウェア処理部２４０が実行する設定処理について説明する。図１２は、ソフトウェア処理部２４０が実行する設定処理の一例を表すフローチャートである。
先ず、ソフトウェア処理部２４０は、ＧＷ宛ダイアグ完了フラグ、ＧＷ宛ＣＣＰ完了フラグ、及びＧＷアプリ宛完了フラグの値を「OFF」として初期化する（ステップＳ３１）。尚、ＧＷ宛ダイアグ完了フラグ、ＧＷ宛ＣＣＰ完了フラグ、及びＧＷアプリ宛完了フラグは、ＧＷ宛てのダイアグフレーム、ＣＣＰフレーム、及びアプリケーションフレームを格納する送信ＦＩＦＯの設定を完了した場合に値「ON」を保存するフラグである。次に、ソフトウェア処理部２４０は、チャネルの番号を表す変数ｃｈに値「0」を代入して初期化する（ステップＳ３２）。その後、ソフトウェア処理部２４０は、変数ｃｈの値がチャネルの最大番号「5」以下であるか否かを判断する（ステップＳ３３）。ソフトウェア処理部２４０は、変数ｃｈの値が「5」以下であると判断する場合にはステップＳ３４の処理を、そうでない場合には設定処理の実行を終了する。
【００５８】
ステップＳ３３において、変数ｃｈの値が「5」以下であると判断した場合には、ソフトウェア処理部２４０は、ＦＩＦＯ０設定処理を実行する（ステップＳ３４）。尚、ＦＩＦＯ０設定処理は、使用しないと判断したチャネルに関する送信ＦＩＦＯ＿０がＧＷ宛てフレームを蓄積するように設定する処理である。その後、ソフトウェア処理部２４０は、ＦＩＦＯ１設定処理を実行する（ステップＳ３５）。ＦＩＦＯ１設定処理は、ＦＩＦＯ０設定処理と同様に、送信ＦＩＦＯ＿１を設定する処理である。次に、ソフトウェア処理部２４０は、変数ｃｈの値を「1」だけインクリメントする（ステップＳ３６）。その後、ソフトウェア処理部２４０は、ステップＳ３３に戻り上記処理を繰り返す。
【００５９】
次に、図１３を参照して、ソフトウェア処理部２４０が実行するＦＩＦＯ０設定処理について説明する。図１３は、ソフトウェア処理部２４０が実行するＦＩＦＯ０設定処理の一例を表すフローチャートである。
先ず、ソフトウェア処理部２４０は、図１２の設定処理で用いた変数ｃｈが表すチャネルの送信ＦＩＦＯ＿０に対応したフラグ変数の値が「ON」であるか否かを判断する（ステップＳ４１）。つまり、ソフトウェア処理部２４０は、変数ｃｈが表すチャネルの送信ＦＩＦＯ＿０を中継フレームの蓄積に用いるか否かを判断する。ソフトウェア処理部２４０は、フラグ変数の値が「ON」であると判断する場合にはＦＩＦＯ０設定処理の実行を終了し、そうでない場合にはステップＳ４２の処理を実行する。
ステップＳ４１において、フラグ変数の値が「ON」でない（つまり、「OFF」である）と判断した場合には、ソフトウェア処理部２４０は、ＧＷアプリ宛完了フラグの値が「OFF」であるか否かを判断する（ステップＳ４２）。つまり、ＧＷ宛てのアプリケーションフレームを、使用しないチャネルに関する送信ＦＩＦＯ＿０が蓄積するように既に設定したか否かを判断する。ソフトウェア処理部２４０は、ＧＷアプリ宛完了フラグの値が「OFF」であると判断する場合にはステップＳ４３の処理を、そうでない場合にはＦＩＦＯ０設定処理の実行を終了する。
【００６０】
ステップＳ４２において、ＧＷアプリ宛完了フラグの値が「OFF」であると判断した場合には、ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂからＧＷ宛てのアプリケーションフレームを表すデータラベルが設定された全ての行（つまり、エントリ）を検索する（ステップＳ４３）。次に、ソフトウェア処理部２４０は、検索した行の変数ｃｈが表す送信チャネルフィールドの値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「0」とする（ステップＳ４４）。つまり、ソフトウェア処理部２４０は、変数ｃｈが表すチャネルの送信ＦＩＦＯ＿０がＧＷ宛てのアプリケーションフレームを蓄積するように設定する。その後、ソフトウェア処理部２４０は、ＧＷアプリ宛完了フラグの値を「ON」とする（ステップＳ４５）。次に、ソフトウェア処理部２４０は、ＦＩＦＯ０設定処理の実行を終了する。
【００６１】
次に、図１４を参照して、ソフトウェア処理部２４０が実行するＦＩＦＯ１設定処理について説明する。図１４は、ソフトウェア処理部２４０が実行するＦＩＦＯ１設定処理の一例を表すフローチャートである。
【００６２】
先ず、ソフトウェア処理部２４０は、図１２の設定処理で用いた変数ｃｈが表すチャネルの送信ＦＩＦＯ＿１に対応したフラグ変数の値が「ON」であるか否かを判断する（ステップＳ５１）。尚、ステップＳ５１の処理は、図１４のステップＳ４１と同様であるため説明を省略する。ソフトウェア処理部２４０は、フラグ変数の値が「ON」であると判断する場合にはＦＩＦＯ１設定処理の実行を終了し、そうでない場合にはステップＳ５２の処理を実行する。
ステップＳ５１において、フラグ変数の値が「ON」でない（つまり、「OFF」である）と判断した場合には、ソフトウェア処理部２４０は、ＧＷ宛ダイアグ完了フラグの値が「OFF」であるか否かを判断する（ステップＳ５２）。尚、ステップＳ５２の処理は、図１３のステップＳ４２の処理と同様なので説明を省略する。ソフトウェア処理部２４０は、ＧＷ宛ダイアグ完了フラグの値が「OFF」であると判断する場合にはステップＳ５３の処理を、そうでない場合にはステップＳ５６の処理を実行する。
【００６３】
ステップＳ５２において、ＧＷ宛ダイアグ完了フラグの値が「OFF」であると判断した場合には、ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂからＧＷ宛てのダイアグフレームを表すデータラベルが設定された全ての行を検索する（ステップＳ５３）。次に、ソフトウェア処理部２４０は、検索した行の変数ｃｈが表す送信チャネルフィールドの値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「1」とする（ステップＳ５４）。つまり、ソフトウェア処理部２４０は、変数ｃｈが表すチャネルの送信ＦＩＦＯ＿１がＧＷ宛てのダイアグフレームを蓄積するように設定する。その後、ソフトウェア処理部２４０は、ＧＷ宛ダイアグ完了フラグの値を「ON」とする（ステップＳ５５）。次に、ソフトウェア処理部２４０は、ＦＩＦＯ１設定処理の実行を終了する。
【００６４】
ステップＳ５２において、フラグ変数の値が「OFF」でない（つまり、「ON」である）と判断した場合には、ソフトウェア処理部２４０は、ＧＷ宛ＣＣＰ完了フラグの値が「OFF」であるか否かを判断する（ステップＳ５６）。尚、ステップＳ５６の処理は、図１３のステップＳ４２と同様であるため説明を省略する。ソフトウェア処理部２４０は、ＧＷ宛ＣＣＰ完了フラグの値が「OFF」であると判断する場合にはステップＳ５７の処理を、そうでない場合にはＦＩＦＯ１設定処理の実行を終了する。
ステップＳ５６において、ＧＷ宛ダイアグ完了フラグの値が「OFF」であると判断した場合には、ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂからＧＷ宛てのＣＣＰフレームを表すデータラベルが設定された全ての行を検索する（ステップＳ５７）。次に、ソフトウェア処理部２４０は、検索した行の変数ｃｈが表す送信チャネルフィールドの値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「1」とする（ステップＳ５８）その後、ソフトウェア処理部２４０は、ＧＷ宛ＣＣＰ完了フラグの値を「ON」とする（ステップＳ５９）。その後、ソフトウェア処理部２４０は、ＦＩＦＯ１設定処理の実行を終了する。
【００６５】
この構成によれば、中継データを通信路へ中継しないために使用しない蓄積部（つまり、送信ＦＩＦＯ）に、ゲートウェイ装置２００に宛てて送信された処理データを種類に基づいて効率的に蓄積できる。またこの構成によれば、宛先がゲートウェイ宛てのフレームを一時的に蓄積する蓄積部を更に追加することなく、フレームの宛先の検知をハードウェア処理で実現できる。つまり、ゲートウェイ宛てフレームを蓄積するために既存の蓄積部を効率的に使用できる。
【００６６】
次に、図１５及び図１６を参照して、ソフトウェア処理部２４０が実行する後処理について説明する。図１５は、ソフトウェア処理部２４０が実行する後処理の一例を表すフローチャートの一部であり、図１６は、ソフトウェア処理部２４０が実行する後処理の一例を表すフローチャートの他部である。
先ず、ソフトウェア処理部２４０は、ＧＷアプリ宛完了フラグの値が「OFF」であるか否かを判断する（ステップＳ６１）。ソフトウェア処理部２４０は、ＧＷ宛完了フラグの値が「OFF」であると判断する場合にはステップＳ６２の処理を、そうでない場合にはステップＳ６４の処理を実行する。
ステップＳ６１において、ＧＷアプリ宛完了フラグの値が「OFF」であると判断した場合には、ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂからＧＷ宛てのアプリケーションフレームを表すデータラベルが設定された全ての行を検索する（ステップＳ６２）。次に、ソフトウェア処理部２４０は、検索した行の送信チャネルＣＨ０のフィールド値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「0」とする（ステップＳ６３）。
【００６７】
ステップＳ６１において、ＧＷアプリ宛完了フラグの値が「OFF」でない（つまり、「ON」である）と判断した場合、又はステップＳ６３を実行した後に、ソフトウェア処理部２４０は、ＧＷ宛ダイアグ完了フラグの値が「OFF」であるか否かを判断する（ステップＳ６４）。ソフトウェア処理部２４０は、ＧＷ宛ダイアグ完了フラグの値が「OFF」であると判断する場合にはステップＳ６５の処理を、そうでない場合にはステップＳ６７の処理を実行する。
ステップＳ６４において、ＧＷ宛ダイアグ完了フラグの値が「OFF」であると判断した場合には、ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂからＧＷ宛てのダイアグフレームを表すデータラベルが設定された全ての行を検索する（ステップＳ６５）。次に、ソフトウェア処理部２４０は、検索した行の送信チャネルＣＨ０のフィールド値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「1」とする（ステップＳ６６）。
【００６８】
ステップＳ６４において、ＧＷ宛ダイアグ完了フラグの値が「OFF」でない（つまり、「ON」である）と判断した場合、又はステップＳ６６を実行した後に、ソフトウェア処理部２４０は、ＧＷ宛ＣＣＰ完了フラグの値が「OFF」であるか否かを判断する（ステップＳ６７）。ソフトウェア処理部２４０は、ＧＷ宛ＣＣＰ完了フラグの値が「OFF」であると判断する場合にはステップＳ６８の処理を、そうでない場合には後処理の実行を終了する。
ステップＳ６７において、ＧＷ宛ＣＣＰ完了フラグの値が「OFF」であると判断した場合には、ソフトウェア処理部２４０は、第２ルーティングマップ２３２ｂからＧＷ宛てのＣＣＰフレームを表すデータラベルが設定された全ての行を検索する（ステップＳ６８）。次に、ソフトウェア処理部２４０は、検索した行の送信チャネルＣＨ０のフィールド値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「1」とする（ステップＳ６９）。その後、ソフトウェア処理部２４０は、後処理の実行を終了する。
【００６９】
次に、図１７を参照して、ソフトウェア処理部２４０が有する機能について引き続き説明を行う。図１７は、ソフトウェア処理部２４０の一構成例を、中継フレームを取り扱う機能に基づいて表す機能ブロック図である。
図１７に示すように、ソフトウェア処理部２４０は、イベント系優先ＦＩＦＯ４００ａ、イベント系一般ＦＩＦＯ４００ｂ、状態系ＩＤ毎優先バッファ４００ｃ、状態系ＩＤ毎一般バッファ４００ｄ、ＣＣＰ用ＦＩＦＯ４０１ａ、ダイアグ用ＦＩＦＯ４０１ｂ、優先フレーム送信部４００ｅ、一般フレーム送信部４００ｆ、ＣＣＰフレーム送信部４０１ｃ、ダイアグフレーム送信部４０１ｄ、及びハンドリング部４０９で構成される。尚、優先フレーム送信部４００ｅ、一般フレーム送信部４００ｆ、ＣＣＰフレーム送信部４０１ｃ、ダイアグフレーム送信部４０１ｄ、及びハンドリング部４０９が有する機能は、ソフトウェア処理部２４０がそれぞれ所定のソフトウェア処理を実行することで実現される。
【００７０】
イベント系優先ＦＩＦＯ４００ａは、記憶部２４２で構成される。イベント系優先ＦＩＦＯ４００ａは、送信ＦＩＦＯ＿０ ３００ａが蓄積したイベント系優先フレームを蓄積する機能を有する。イベント系優先ＦＩＦＯ４００ａは、蓄積するフレームを先入れ先出しする。尚、イベント系優先フレームとは、イベント系フレームであり、かつ優先フレームであるフレームをいう。イベント系フレームは、例えば、車両の乗員が窓を閉める又はエアコンのスイッチを入れる等の所定の操作を行った、又は車両が所定の状態に陥った（つまり、所定のイベントが発生した）場合に送信されるフレームをいう。また、優先フレームとは、他のフレームよりも優先して中継する必要があるフレームをいい、一般フレームとは、他のフレームよりも優先して中継又はソフトウェア処理する必要がないフレームをいう。
イベント系一般ＦＩＦＯ４００ｂは、イベント系優先ＦＩＦＯ４００ａと同様であるため、主に相違点について説明する。イベント系一般ＦＩＦＯ４００ｂは、送信ＦＩＦＯ＿０
３００ａが蓄積したイベント系一般フレームを蓄積する機能を有する。
【００７１】
状態系ＩＤ毎優先バッファ４００ｃは、記憶部２４２で構成される。状態系ＩＤ毎優先バッファ４００ｃは、送信ＦＩＦＯ＿０ ３００ａが蓄積した状態系優先フレームを蓄積する機能を有する。尚、状態系優先フレームとは、状態系フレームであり、かつ優先フレームであるフレームをいう。状態系フレームとは、車両の制御のために定期的に送信されるフレームであり、例えば、車両の速度又は車両が搭載するエンジンの回転数等といった車両の状態を表すフレームをいう。
状態系一般ＦＩＦＯ４００ｄは、状態系優先ＦＩＦＯ４００ｃと同様であるため、主に相違点について説明する。状態系一般ＦＩＦＯ４００ｄは、送信ＦＩＦＯ＿０ ３００ａが蓄積した状態系一般フレームを蓄積する機能を有する。
優先フレーム送信部４００ｅは、イベント系優先ＦＩＦＯ４００ａ及び状態系優先ＦＩＦＯ４００ｃが蓄積する優先フレームをハンドリング部４０９へ送信する機能を有する。
一般フレーム送信部４００ｆは、イベント系一般ＦＩＦＯ４００ｂ及び状態系一般ＦＩＦＯ４００ｄが蓄積する一般フレームをハンドリング部４０９へ送信する機能を有する。
【００７２】
ＣＣＰ用ＦＩＦＯ４０１ａは、記憶部２４２で構成される。ＣＣＰ用ＦＩＦＯ４０１ａは、送信ＦＩＦＯ＿１ ３０１ａが蓄積したＣＣＰフレームを蓄積する機能を有する。ＣＣＰ用ＦＩＦＯ４０１ａは、蓄積するフレームを先入れ先出しする。
ダイアグ用ＦＩＦＯ４０１ｂは、記憶部２４２で構成される。ダイアグ用ＦＩＦＯ４０１ｂは、送信ＦＩＦＯ＿１ ３０１ａが蓄積した中継フレームのダイアグフレームを蓄積する機能を有する。ダイアグ用ＦＩＦＯ４０１ｂは、蓄積するフレームを先入れ先出しする。
ＣＣＰフレーム送信部４０１ｃは、優先フレーム送信部４００ｅと同様であるため、以下主に相違点について説明する。ＣＣＰフレーム送信部４０１ｃは、ＣＣＰ用ＦＩＦＯ４０１ａが蓄積するフレームをハンドリング部４０９へ送信する機能を有する。
ダイアグフレーム送信部４０１ｄは、優先フレーム送信部４００ｅと同様であるため、以下主に相違点について説明する。ダイアグフレーム送信部４０１ｄは、ダイアグ用ＦＩＦＯ４０１ｂが蓄積するフレームをハンドリング部４０９へ送信する機能を有する。
【００７３】
ハンドリング部４０９は、ハンドリング機能を有する。ハンドリング機能は、優先フレーム送信部４００ｅ、一般フレーム送信部４００ｆ、ＣＣＰフレーム送信部４０１ｃ、及びダイアグフレーム送信部４０１ｄからフレームを受信する機能と、受信したフレームの優先順位に基づいて、ＣＡＮインタフェース部２２０を介してＣＡＮコントローラ２１０へフレームを送信する機能とで構成される。
【００７４】
尚、図１７は、ソフトウェア処理部２４０が有する機能の内で、チャネルＣＨ０に関する送信ＦＩＦＯが蓄積するフレームを、チャネルＣＨ０へフレームを送信するＣＡＮコントローラ２１０に対して中継する機能のみを図示する。しかし、これに限定される訳ではなく、ソフトウェア処理部２４０は、チャネルＣＨ１から３に関する送信ＦＩＦＯが蓄積するフレームを、チャネルＣＨ１から３へフレームを送信するＣＡＮコントローラ２１１から２１３に中継する機能をも有する。
【００７５】
次に、図１８を参照して、ソフトウェア処理部２４０が有する機能について、引き続き説明を行う。図１８は、ソフトウェア処理部２４０の一構成例を、ＧＷ宛てフレームを取り扱う機能に基づいて表す機能ブロック図である。
図１８に示すように、ソフトウェア処理部２４０は、ダイアグ通信部４４１ａ、ダイアグアプリ実行部４４１ｂ、アプリ実行部４５０ａ、ＣＣＰ通信部４５１ａ、ＣＣＰアプリ実行部４５１ｂ、及びハンドリング部４０９から４５９で構成される。尚、ダイアグ通信部４４１ａないしハンドリング部４０９から４５９が有する機能は、ソフトウェア処理部２４０が所定の処理を実行することで実現される。
【００７６】
ダイアグ通信部４４１ａは、ソフトウェア処理部２４０が設定処理を実行することでＧＷ宛てのダイアグフレームを蓄積するよう設定された送信ＦＩＦＯ＿１ ３４１ａが蓄積するダイアグフレームを、ダイアグアプリ実行部４４１ｂへ送信する機能を有する。
ダイアグアプリ実行部４４１ｂは、記憶部２４２が記憶するダイアグアプリケーションを実行する機能を有する。ダイアグアプリケーションは、ダイアグフレームの要求に対して応答する処理を表す。よって、ダイアグアプリ実行部４４１ｂは、ダイアグフレームに対する応答機能を有するといえる。具体的には、ダイアグアプリ実行部４４１ｂは、ダイアグ通信部４４１ａから受信したダイアグフレームの求めに応じて故障診断に用いる情報を収集すると共に、収集した情報（又は収集した情報に基づいて行った故障診断の結果）を表す応答フレームをハンドリング部４０９へ出力する。尚、ハンドリング部４０９は、応答フレームを故障診断装置１００へチャネルＣＨ０を用いて送信する。
【００７７】
アプリ実行部４５０ａは、記憶部２４２が記憶する一般アプリケーションを実行する実行機能を有する。アプリ実行部４５０ａは、ＧＷ宛てのアプリケーションフレームを蓄積するよう設定されたＦＩＦＯ＿０
３５０ａが蓄積するアプリケーションフレームを用いて一般アプリケーションが表す処理を実行する。次に、アプリ実行部４５０ａは、処理を実行した所定のフレームをハンドリング部４０９から４５９へ出力する。
ＣＣＰ通信部４５１ａは、ＧＷ宛てのＣＣＰフレームを蓄積するよう設定された送信ＦＩＦＯ＿１ ３５１ａが蓄積するフレームをＣＣＰアプリ実行部４５１ｂへ送信する機能を有する。
尚、ソフトウェア処理部２４０は、フレーム処理経路変更処理を実行することで、ダイアグ通信部４４１ａ、アプリ実行部４５０ａ、及びＣＣＰ通信部４５１ａ（以下、ダイアグ通信部４４１ａ等という）とそれぞれ接続する送信ＦＩＦＯを変更又は設定する。尚、ダイアグ通信部４４１ａ等とそれぞれ接続する送信ＦＩＦＯは、生成処理の実行により定まる。
【００７８】
ＣＣＰアプリ実行部４５１ｂは、記憶部２４２が記憶するＣＣＰアプリケーションを実行する機能を有する。ＣＣＰアプリケーションは、ＣＣＰフレームの要求に対して応答する処理を表す。よって、ＣＣＰアプリ実行部４５１ｂは、ＣＣＰフレームに対する応答機能を有するといえる。ＣＣＰアプリ実行部４５１ｂは、ＣＣＰ通信部４５１ａから受信したＣＣＰフレームの求めに応じてゲートウェイ装置２００が記憶するデータの測定及び調整をすると共に、測定した情報等を表す応答フレームをハンドリング部４０９へ出力する。
【００７９】
ハンドリング部４０９は、図１７のハンドリング部４０９と同一の部である。ハンドリング部４０９は、ダイアグアプリ実行部４４１ｂ及びＣＣＰアプリ実行部４５１ｂ等が出力したフレームを、ＣＡＮインタフェース部２２０を介してＣＡＮコントローラ２１０へ送信する。ハンドリング部４１９から４５９は、ハンドリング部４０９と同様であるため、以下主に相違点について説明する。ハンドリング部４１９から４５９は、アプリ実行部４５０ａが出力するフレームを、ＣＡＮインタフェース部２２０を介してＣＡＮコントローラ２１１から２１５へ送信する。
【００８０】
次に、図１９を参照して、ソフトウェア処理部２４０が有する機能について、引き続き説明を行う。図１９は、ソフトウェア処理部２４０の一構成例を、ＮＭフレームを取り扱う機能に基づいて表す機能ブロック図である。
ソフトウェア処理部２４０は、ＮＭ用ＦＩＦＯ４９０ａから４９５ａ、ＮＭ処理部４９０ｂから４９５ｂ、協調ＮＭ処理部４９０ｃから４９５ｃ、及びＮＭ送信部４９０ｄから４９５ｄで構成される。尚、ＮＭ処理部４９０ｂから４９５ｄの有する機能は、ソフトウェア処理部２４０がそれぞれ所定の処理を実行することで実現される。
ＮＭ用ＦＩＦＯ４９０ａから４９５ａは、記憶部２４２で構成される。ＮＭ用ＦＩＦＯ４９０ａから４９５ａは、それぞれＣＡＮインタフェース部２２０を介して接続するＣＡＮコントローラ２１０から２１５が受信したＮＭフレームを蓄積する機能を有する。ＮＭ用ＦＩＦＯ４９０ａから４９５ａは、蓄積するフレームを先入れ先出しする。
【００８１】
ＮＭ処理部４９０ｂから４９５ｂは、それぞれＮＭ処理を実行することで、ＮＭ用ＦＩＦＯ４９０ａから４９５ａが蓄積するＮＭフレームをそれぞれ取得する。次に、ＮＭ処理部４９０ｂから４９５ｂは、取得したＮＭフレームに基づいて、それぞれチャネルＣＨ０からＣＨ５に接続するＥＣＵと同期してゲートウェイ装置２００をスリープさせる機能を実現する。尚、ＮＭ処理部４９０ｂから４９５ｂは、ＮＭフレームをそれぞれ協調ＮＭ処理部４９０ｃから４９５ｃへ出力する。
協調ＮＭ処理部４９０ｃから４９５ｃは、それぞれ協調ＮＭ処理を実行することで、ＮＭ処理部４９０ｂないし４９５ｂからＮＭフレームを取得する。次に、協調ＮＭ処理部４９０ｃから４９５ｃは、取得したＮＭフレームに基づいて、ゲートウェイ装置２００に接続するチャネルＣＨ０からＣＨ４と接続するＥＣＵ１から４３と協調してゲートウェイ装置２００をスリープさせる機能を有する。尚、協調ＮＭ処理部４９０ｃから４９５ｃは、ＮＭフレームをＮＭ送信部４９０ｄから４９５ｄへ出力する。
ＮＭ送信部４９０ｄから４９５ｄは、それぞれ協調ＮＭ処理部４９０ｃないし４９５ｃから取得するＮＭフレームを、ＣＡＮインタフェース部２２０を介してＣＡＮコントローラ２１０から２１５へそれぞれ送信する機能を有する。
【００８２】
ここで、図２０を参照して、ゲートウェイ装置２００が第２ルーティングマップ２３２ｂを生成することに伴って実行する初期化処理について説明する。図２０は、ゲートウェイ装置２００が実行する初期化処理の一例を表すフローチャートである。
先ず、ゲートウェイ装置２００は、実行部２４１を初期化するＣＰＵ初期化処理を実行する（ステップＳ７１）。次に、ゲートウェイ装置２００は、図９を参照して説明した生成処理を実行する（ステップＳ７２）。その後、ゲートウェイ装置２００は、上記のフレーム処理経路変更処理を実行する（ステップＳ７３）。次に、ゲートウェイ装置２００は、ハードウェア中継部２３０を初期化する中継機能初期化処理を実行する（ステップＳ７４）。その後、ゲートウェイ装置２００は、初期化処理の実行を終了する。
【００８３】
尚、本実施例においては、ＥＣＵ１から４３が制御装置に相当し、チャネルＣＨ０から５が通信路に相当し、ＣＡＮコントローラ２１０から２１５が通信コントローラに相当し、送信ＦＩＦＯ＿０
３００ａから３５０ａ及び送信ＦＩＦＯ＿１ ３０１ａから３５１ａが蓄積部に相当し、第１ルーティングマップ２３２ａが第１記憶部に相当し、第２ルーティングマップ２３２ｂが第２記憶部に相当し、検索エンジン部２３１が検索部に相当する。
【実施例２】
【００８４】
第２の実施例においては、第１ルーティングマップが記憶する情報を変更した場合、及び第２ルーティングマップが情報を記憶していない場合の１つ以上の場合に、第２ルーティングマップが記憶する情報を生成するゲートウェイ装置について説明する。尚、実施例２で説明する不図示のゲートウェイ装置３００は、実施例１とほぼ同様の構成であるため、以下主に、相違点について説明する。
【００８５】
ゲートウェイ装置３００を構成する不図示のソフトウェア処理部３４０は、後述する検出処理を実行することで、第１ルーティングマップ３３２ａが記憶する情報の変更、又は第２ルーティングマップ３３２ｂが記憶する情報のクリアを検出する機能を実現する。尚、第１ルーティングマップ３３２ａが記憶する情報の変更を検出する機能は、ソフトウェア処理部３４０が後述する第１検出処理を実行することで実現される。また、第２ルーティングマップ３３２ｂが記憶する情報のクリアを検出する機能は、ソフトウェア処理部３４０が後述する第２検出処理を実行することで実現される。
【００８６】
ここで、ソフトウェア処理部３４０が実行する第１検出処理の一例について説明を行う。尚、本実施例においては、ソフトウェア処理部３４０は、定周期で第１検出処理及び第２検出処理を実行するとして説明するが、これに限定される訳ではなく、ゲートウェイ装置３００が起動する場合に実行する構成を採用できる。
先ず、ソフトウェア処理部３４０は、第１ルーティングマップ３３２ａの行毎に（つまり、エントリ毎に）、パリティを算出する。次に、前回に参照した第１ルーティングマップ３３２ａの行毎に算出したパリティと比較を行う。その後、パリティが相違する行が存在する場合には、ソフトウェア処理部３４０は、第１ルーティングマップ３３２ａが記憶する情報の変更を検出し、そうでない場合には変更を検出しない。次に、ソフトウェア処理部３４０は、今回算出したパリティを記憶部３４２に保存する。その後、ソフトウェア処理部３４０は、第１検出処理の実行を終了する。
【００８７】
次に、ソフトウェア処理部３４０が実行する第２検出処理の一例について説明を行う。
先ず、ソフトウェア処理部３４０は、第２ルーティングマップ３３２ｂが情報を記憶するか否かを判断する。ソフトウェア処理部３４０は、第２ルーティングマップ３３２ｂが情報を記憶する場合に情報のクリアを検出せず、情報を記憶しない場合に情報のクリアを検出する。その後、ソフトウェア処理部３４０は、第２検出処理の実行を終了する。
【００８８】
この構成によれば、ゲートウェイ装置３００が用いるチャネルの構成及びチャネルを用いるＥＣＵの構成が変化した場合であっても、第１ルーティングマップ３３２ａが記憶する情報を変更、又は第２ルーティングマップ３３２ｂが記憶する情報をクリアするだけで、第２ルーティングマップ３３２ｂが記憶する情報を容易に生成できる。具体例を挙げて説明すると、例えば、ゲートウェイ装置３００の出荷後に、車両の所有者の趣向によって車両に新たなアクセサリ機器及びアクセサリ機器を制御するＥＣＵを追加した場合でも、第１ルーティングマップ３３２ａが記憶するチャネル構成等を変更することで、第２ルーティングマップ３３２ｂが記憶する情報を容易に生成できる。つまり、車両に搭載するＥＣＵをネットワークに対して抜き差した場合であっても、第２ルーティングマップ３３２ｂが記憶する情報を容易に生成できる。
【実施例３】
【００８９】
第３の実施例においては、ＣＡＮコントローラが受信したＧＷ宛てフレームの量及び種類のいずれか１つ以上が変化した場合に、第２ルーティングマップが記憶する情報を生成する不図示のゲートウェイ装置４００について説明する。尚、実施例３で説明するゲートウェイ装置４００は、実施例１とほぼ同様の構成であるため、以下主に、相違点について説明する。
ゲートウェイ装置４００を構成する不図示のソフトウェア処理部４４０は、後述する監視処理を実行することで、ＣＡＮコントローラ４１０から４１３が受信するＧＷ宛てフレームの量及び種類のいずれか１つ以上の変化を監視する機能を実現する。
【００９０】
ここで、ソフトウェア処理部４４０が実行する監視処理の一例について説明を行う。尚、本実施例においては、ソフトウェア処理部４４０は、定周期で監視処理を実行するとして説明するが、これに限定される訳ではない。
先ず、ソフトウェア処理部４４０は、ＣＡＮコントローラ４１０から４１３が受信して受信バッファのメッセージボックスに蓄積するフレームのデータラベル（又はＣＡＮＩＤ）に基づいてＧＷ宛てフレームを検索する。次に、ソフトウェア処理部４４０は、フレームの種類毎に、検索したフレームの量を算出する。その後、ソフトウェア処理部４４０は、前回に算出したフレームの量との差異を算出して、ＧＷ宛てフレームの量及び種類の変化を監視する。ソフトウェア処理部４４０は、例えば、算出した差異が所定の閾値を超えた場合に、ＧＷ宛てフレームの量及び種類の変化が生じたと判断し、そうでない場合には変化が生じないと判断する。次に、ソフトウェア処理部４４０は、今回算出した量をフレームの種類毎に記憶部４２４へ保存する。その後、ソフトウェア処理部４４０は、監視処理の実行を終了する。
【００９１】
この構成によれば、ＣＡＮコントローラ４１０から４１３が受信するデータの量及び種類の変化を監視することで、ゲートウェイ装置４００が用いるチャネル構成及びチャネルを用いるＥＣＵ構成の変化を監視できる。また、この構成によれば、ＣＡＮコントローラ４１０から４１３が受信するデータの量及び種類が変化した場合であっても、中継フレームを送信しないチャネルに関する蓄積部がＧＷ宛てフレームを蓄積するよう容易に設定できる。尚、本実施例において、ソフトウェア処理部４４０は、ＣＡＮコントローラ４１０から４１５が所定時間内に受信したフレームを識別する情報（つまり、ＣＡＮＩＤ）に基づいて、フレームを送信するＥＣＵがネットワークに接続しているか否かを検出する構成を採用できる。この構成において、ソフトウェア処理部４４０は、接続を検出したＥＣＵへ中継フレームを送受信するために用いるチャネル以外のチャネルに関する送信ＦＩＦＯがＧＷ宛てのフレームを蓄積するよう設定する構成を採用できる。この構成によれば、接続を検出したＥＣＵへ中継フレームを送信するために用いるチャネル以外のチャネルに関する送信ＦＩＦＯにＧＷ宛てフレームを効率的に蓄積できる。
【実施例４】
【００９２】
第４の実施例においては、ＣＡＮコントローラが中継フレームを全てのチャネルに対して送信する場合に、ソフトウェア処理部がハードウェア中継部（ハードマクロ）を介さずに、ＧＷ宛てフレームをＣＡＮコントローラから直接に受信するゲートウェイ装置について説明する。尚、実施例４で説明する不図示のゲートウェイ装置５００は、実施例１とほぼ同様の構成であるため、以下主に、相違点について説明する。
【００９３】
先ず、実施例４において、ゲートウェイ装置５００を構成する不図示のソフトウェア処理部５４０が実行する後処理について説明する。
先ず、ソフトウェア処理部５４０は、ＧＷアプリ宛完了フラグ、ＧＷ宛ダイアグ完了フラグ、又はＧＷ宛ＣＣＰ完了フラグが値「OFF」であると判断すると、ＣＡＮコントローラ５１０ないし５１５からＧＷ宛てのアプリケーションフレーム、ＧＷ宛てのダイアグフレーム、又はＧＷ宛てのＣＣＰフレームを直接的に取得するよう不図示のアプリ実行部、ダイアグ通信部、又はＣＣＰ通信部を設定する。その後、ソフトウェア処理部５４０は、後処理の実行を終了する。
【００９４】
この構成によれば、全てのチャネルへ中継フレームを中継するために全ての送信ＦＩＦＯを使用する場合であっても、送信ＦＩＦＯへＧＷ宛てフレームを蓄積することなく、ＣＡＮコントローラ５１０ないし５１５からＧＷ宛てフレームを取得してソフトウェア処理できる。
【００９５】
尚、不図示の第１ルーティングマップ５３２ａは、更に、フレームを識別する識別情報（つまり、ＣＡＮＩＤ）と、フレームを送信する送信周期（つまり、ゲートウェイ装置５００の受信頻度）を表す情報とを関連付けて記憶する構成を採用できる。この構成において、ゲートウェイ装置５００は、第１ルーティングマップ５３２ａが記憶する情報が表す受信頻度、又はデータラベルが表すフレームを処理する優先度に基づいて、ＧＷ宛てのダイアグフレーム、ＣＣＰフレーム、及びアプリケーションフレームのいずれか１つ以上をソフトウェア処理部５４０がハードウェア中継部５３０を介さずにＣＡＮコントローラ５１０ないし５１５から直接に受信するように設定する構成を採用できる。また、ソフトウェア処理部５４０がそれら以外のＧＷ宛てのフレームを、ハードウェア中継部５３０を介して受信するように設定する構成を採用できる。特に、ハードウェア中継部５３０のＧＷ宛てフレームを中継する時間が、ソフトウェア処理部５４０のＧＷ宛てフレームを受信する時間よりも長い場合には、受信頻度が高いフレーム又は優先度が高いフレームを、ソフトウェア処理部がＣＡＮコントローラ５１０ないし５１５から直接に受信する構成を採用できる。尚、逆の場合には、受信頻度が高いフレーム又は優先度が高いフレームを、ソフトウェア処理部がハードウェア中継部５３０を介して受信する構成を採用できる。尚、ハードウェア中継部５３０のＧＷ宛てフレームを中継する時間は、ハードウェア中継部５３０がＣＡＮコントローラ５１０ないし５１３から送信ＦＩＦＯへＧＷ宛てフレームを中継するために要する時間をいう。また、ソフトウェア処理部５４０のＧＷ宛てフレームを受信する時間は、ソフトウェア処理部５４０がＣＡＮコントローラ５１０ないし５１３の受信したフレームから、ＧＷ宛てフレームを検索した後に、検索したフレームを受信するために要する時間をいう。
【００９６】
この構成によれば、フレームの受信頻度及び優先度のいずれか１つ以上に基づいて、ソフトウェア処理部５４０がＣＡＮコントローラ５１０ないし５１３からＧＷ宛てフレームを受信するか、ハードウェア中継部５３０を介して受信するかを定めるため、ＧＷ宛てフレームの受信において遅延の発生を防止できる。
【実施例５】
【００９７】
第５の実施例においては、ゲートウェイ装置が新たにインストールしたアプリケーションの実行に用いるフレームを、他のフレームとは別の送信ＦＩＦＯが蓄積するよう設定できるゲートウェイ装置について説明する。尚、実施例５で説明する不図示のゲートウェイ装置６００は、実施例１とほぼ同様の構成であるため、以下主に、相違点について説明する。
ゲートウェイ装置６００を構成する不図示のソフトウェア処理部６４０は、検出処理を実行することで、例えば、インタネットを介して新規の一般アプリケーション（以下単に、新規アプリケーションという）をインストールしたことを検出する機能を実現する。
【００９８】
ここで、ソフトウェア処理部６４０が実行する初期化処理を構成する設定処理の一例について説明する。実施例５において、ソフトウェア処理部６４０が実行する設定処理は、実施例１で図１２を参照して説明した設定処理とほぼ同様であるため、以下主に、相違点について説明する。
先ず、ソフトウェア処理部６４０は、ＧＷ宛ダイアグ完了フラグ、ＧＷ宛ＣＣＰ完了フラグ、及びＧＷアプリ宛完了フラグのみならず、ＧＷ新規アプリ宛完了フラグの値を「OFF」として初期化する。ＧＷ新規アプリ宛完了フラグは、ＧＷ宛てのアプリケーションフレームを格納する送信ＦＩＦＯの設定を完了したことを表すフラグである。次に、ソフトウェア処理部６４０は、図１２のステップＳ３２からステップＳ３６の処理を実行した後に、設定処理の実行を終了する。
【００９９】
次に、ソフトウェア処理部６４０が実行するＦＩＦＯ０設定処理の一例について説明する。実施例５において、ソフトウェア処理部６４０が実行するＦＩＦＯ０設定処理は、実施例１で図１３を参照して説明したＦＩＦＯ０設定処理とほぼ同様であるため、以下主に、相違点について説明する。
ステップＳ４２において、ＧＷアプリ宛完了フラグの値が「OFF」でない（つまり、「ON」である）と判断した場合には、ソフトウェア処理部６４０は、ＧＷ新規アプリ宛完了フラグの値が「OFF」であるか否かを判断する。ソフトウェア処理部６４０は、ＧＷ新規アプリ宛完了フラグの値が「OFF」でない（つまり、「ON」である）と判断した場合には、ＦＩＦＯ０設定処理の実行を終了し、そうでない場合には、第２ルーティングマップ２３２ｂからＧＷ宛ての新規アプリフレームを表すデータラベル又はＣＡＮＩＤが設定された全ての行（つまり、エントリ）を検索する。尚、新規アプリフレームは、新規アプリケーションの実行に用いるフレームをいう。次に、ソフトウェア処理部６４０は、検索した行の変数ｃｈが表す送信チャネルフィールドの値を「1」とし、かつ送信ＦＩＦＯフィールドの値を「0」とする。その後、ソフトウェア処理部６４０は、ＦＩＦＯ０設定処理の実行を終了する。
【０１００】
この構成によれば、ゲートウェイ装置６００がアプリケーションを新規に追加した場合でも、新たに追加したアプリケーションの実行に用いるフレームを、他のアプリケーションの実行に用いるフレームとは別の送信ＦＩＦＯが保存するよう設定できる。よって、例えば、ゲートウェイ装置６００を工場出荷した後に、新たなアプリケーションをインストールした場合であっても、既にインストールされたアプリケーションの実行を妨げることなく、新規アプリフレームを未使用の送信ＦＩＦＯに蓄積するよう設定できる。
【実施例６】
【０１０１】
第６の実施例においては、受信したデータに対してミラーチェックを行うゲートウェイ装置について説明する。尚、ミラーチェックとは、検査を必要とする検査データと、検査データを予め複製した複製データとを比較することで、検査データの破壊及び変化のいずれか１つ以上の発生を検査することをいう。また、検査データは、実施例１で説明した中継データ及び処理データのいずれか１つ以上であっても構わない。尚、実施例６で説明するゲートウェイ装置は、実施例１から５とほぼ同様の構成であるため、以下主に、実施例１との相違点について説明する。
【０１０２】
先ず、図２１を参照して、実施例６におけるゲートウェイ装置７００の構成について概説する。図２１は、実施例６におけるゲートウェイ装置７００の一構成例について概説するための図である。
図２６に示すゲートウェイ装置７００は、ＣＡＮコントローラが中継データの送信に使用しない（つまり、未使用の）チャネルＣＨ１（つまり、空きチャネル）に転送するデータを蓄積する送信ＦＩＦＯ３１０ａを有する。ここで、従来のゲートウェイ装置は、未使用の送信ＦＩＦＯ３１０ａ及びＣＡＮコントローラ７１１をチャネルＣＨ１へのデータ中継に使用しない。しかし、本発明に係るゲートウェイ装置７００は、チャネルＣＨ０へ中継する中継データを複製した複製データを送信ＦＩＦＯ３１０ａに蓄積する点で異なる。また、ゲートウェイ装置７００は、チャネルＣＨ０へ中継する中継データを送信ＦＩＦＯ３００ａから読み出す場合に、送信ＦＩＦＯ３１０ａが蓄積した複製データをも読み出すと共に、読み出した中継データと複製データとを比較してミラーチェックを行う点で従来のゲートウェイ装置と異なる。ゲートウェイ装置７００は、ミラーチェックにより、例えば、中継データの破壊又は変化等のデータ化けを検出した場合には、異常の生じた中継データを破棄する。尚、ゲートウェイ装置７００は、検出した異常の通知、又は異常に関するダイアグ記録をする構成を採用できる。
【０１０３】
この構成によれば、検査の対象とするデータと、検査の対象とするデータを複製したデータとを比較してデータの異常を検出するため、データに生じるデータ化けを精度良く検出できる。また例えば、偶奇パリティチェックを行う場合と比べて、偶数個のビット化けをも検出できる。またこの構成によれば、データ化けを検出したデータを破棄するため、データ化したデータを中継することで車両を危険な状態又は故障した状態に陥らせることを防止できる（フェールセーフ）。
【０１０４】
ゲートウェイ装置７００は、実施例１と同様に不図示のソフトウェア処理部７４０等で構成される。ソフトウェア処理部７４０は、実施例１と同様のタイミングで、同様の初期化処理を実行する。ソフトウェア処理部７４０が実行する初期化処理は、実施例１で説明した図２０の初期化処理と同様に、ＣＰＵ初期化処理、生成処理、フレーム処理経路変更処理、及び中継機能初期化処理を順に実行する処理である。
【０１０５】
ここで図２２を参照して、ゲートウェイ装置７００が実行する初期化処理について概説した後に、ソフトウェア処理部７４０が実行する初期化処理を構成する上記各処理について説明を行う。図２２は、実施例６において、ゲートウェイ装置７００が実行する初期化処理の一例を表すフローチャートである。
先ず、ゲートウェイ装置７００は、実施例１と同様にＣＰＵ初期化処理を実行する（ステップＳ８１）。次に、ゲートウェイ装置７００は、第１ルーティングマップを読み出す（ステップＳ８２）。その後、ゲートウェイ装置７００は、優先度情報テーブルファイルを参照する。尚、優先度情報テーブルファイルは、他のデータよりも優先的に検査データの検査を行う必要性を表す優先度を保存するテーブルである。次に、ゲートウェイ装置７００は、第１ルーティングマップから空きチャネルを検出する（ステップＳ８４）。その後、ゲートウェイ装置７００は、複製データを空きチャネルへ転送するよう第１ルーティングマップを書換える（ステップＳ８５）。次に、ゲートウェイ装置７００は、書換えたマップを第２ルーティングマップとする（ステップＳ８５）。その後、ゲートウェイ装置７００は、初期化処理の実行を終了する。
【０１０６】
次に、ソフトウェア処理部７４０が実行する生成処理の一例について説明を行う。ソフトウェア処理部７４０が実行する生成処理は、実施例１と異なり、処理データではなく検査の必要な検査データを中継データの送信に用いられない通信路に蓄積するよう設定した第２ルーティングマップを、第１ルーティングマップが記憶する情報を用いて生成する処理である。また、ソフトウェア処理部７４０は、検査データを識別する情報を用いて第２ルーティングマップを生成する。ここで、検査データを識別する情報は、検査データの種類及び検査データの中継に用いるチャネルのいずれか１つ以上と、検査データの優先度とを関連付けた情報である。具体的には、検査データを識別する情報は、検査データのＩＤと優先度とを関連付けた情報、又は検査データの中継に用いるチャネルと優先度とを関連付けた情報をいう。例えば、ソフトウェア処理部７４０は、検出した中継に用いない送信ＦＩＦＯの数よりも検査データの種類の方が多い場合には、検査データのＩＤに関連付けた優先度が高いデータの複製データを優先して、未使用の送信ＦＩＦＯに転送するよう第２ルーティングマップを設定する。また、例えば、ソフトウェア処理部７４０は、検出した送信ＦＩＦＯの数よりも検査データの種類の方が多い場合には、検査データの中継に用いるチャネルに関連付けた優先度が高いデータの複製データを優先して第２ルーティングマップを設定する。尚、優先度によって検査データを識別する情報は、第１ルーティングマップ、又は新規の（つまり、別の）テーブルファイルである優先度情報テーブルファイルに保存される。尚、第２ルーティングマップを生成するタイミングについては、実施例１から５で説明したタイミングと同様であるので説明を省略する。
【０１０７】
この構成によれば、ＣＡＮコントローラがデータの中継に用いる通信路の構成及び通信路に接続する制御装置を表す第１ルーティングマップが記憶する情報を変更しても、中継データを送信しない通信路に関する送信ＦＩＦＯが検査データを蓄積するように容易に設定できる。またこの構成によれば、優先度に基づいて検査を行うデータを効率的に定めて効率良くデータを検査できる。つまり、優先度に基づく所定の種類のデータ、又は優先度に基づく所定のチャネルのデータのみをミラーリングチェックできる。
【０１０８】
次に、ソフトウェア処理部７４０が実行する初期化処理を構成するフレーム処理経路変更処理について説明を行う。
ソフトウェア処理部７４０が実行するフレーム処理経路変更処理は、実施例１と異なり、不図示の優先フレーム送信部及び一般フレーム送信部が中継フレームを取得する送信ＦＩＦＯだけでなく、取得する中継フレームの複製フレームを蓄積する送信ＦＩＦＯをも、優先フレーム送信部及び一般フレーム送信部がフレームを取得する送信ＦＩＦＯとして設定する処理である。
【０１０９】
ゲートウェイ装置２００から７００が備えるソフトウェア処理部２４０から７４０が実行する処理を表すプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供できる。更に、ゲートウェイ装置２００から７００がソフトウェア処理を実行することで実現する機能の一部又は全部は、ハードウェア回路を用いて実現することができる。また逆に、ゲートウェイ装置２００から７００がハードウェア回路を用いて実現する機能の一部又は全部は、ソフトウェア処理を実行することで実現することができる。
【０１１０】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【符号の説明】
【０１１１】
１〜４３…ＥＣＵ                      １００…故障診断装置                  
２００…ゲートウェイ装置              ２４０…ソフトウェア処理部            
２１０〜２１５…ＣＡＮコントローラ（通信コントローラ）
２３０…ハードウェア中継部（ハードマクロ）
２３２ａ…第１ルーティングマップ（第１記憶部）
２３２ｂ…第２ルーティングマップ（第２記憶部）
３００ａ〜３５０ａ…送信ＦＩＦＯ＿０  （蓄積部）
３０１ａ〜３５１ａ…送信ＦＩＦＯ＿１  （蓄積部）
ＣＨ０〜３…チャンネル０〜３（通信網）
Ｄ…通信仕様書                        Ｓ…ゲートウェイシステム              
【図１】
2010251837.tif 000003
【図２】
2010251837.tif 000004
【図３】
2010251837.tif 000005
【図４】
2010251837.tif 000006
【図５】
2010251837.tif 000007
【図６】
2010251837.tif 000008
【図７】
2010251837.tif 000009
【図８】
2010251837.tif 000010
【図９】
2010251837.tif 000011
【図１０】
2010251837.tif 000012
【図１１】
2010251837.tif 000013
【図１２】
2010251837.tif 000014
【図１３】
2010251837.tif 000015
【図１４】
2010251837.tif 000016
【図１５】
2010251837.tif 000017
【図１６】
2010251837.tif 000018
【図１７】
2010251837.tif 000019
【図１８】
2010251837.tif 000020
【図１９】
2010251837.tif 000021
【図２０】
2010251837.tif 000022
【図２１】
2010251837.tif 000023
【図２２】
2010251837.tif 000024