(57)【要約】【課題】車両の挙動を制御する制御装置間で送受信されるデータの中継を行うゲートウェイ装置に生じる異常を効率良くかつ即時的に検出できる検出装置及び検出方法を提供する。【解決手段】  車両の挙動を制御する制御装置が送信するデータを中継するゲートウェイ装置が受信するデータと、ゲートウェイ装置が送信して中継したデータとを受信する受信手段と、受信手段が受信したデータであると共にゲートウェイ装置が受信するデータの数とゲートウェイ装置が送信したデータの数との差異が所定の値を超えた場合に、ゲートウェイ装置に異常が生じたとして異常を検出する検出手段とを備える。この構成によれば、ゲートウェイ装置が受信するデータの数と中継したデータの数との差異が所定の値を超える場合に、ゲートウェイ装置に生じた異常を検出するため、即時的かつ効率的に異常を検出できる。【選択図】図５
2010251831.tif 000002
【特許請求の範囲】
【請求項１】
車両の挙動を制御する制御装置が送信するデータを中継するゲートウェイ装置が受信するデータと、前記ゲートウェイ装置が送信して中継した前記データとを受信する受信手段と、
前記受信手段が受信したデータの数であると共に前記ゲートウェイ装置が受信するデータの数と前記ゲートウェイ装置が送信したデータの数との差異が所定の値を超えた場合に、前記ゲートウェイ装置に異常が生じたとして前記異常を検出する検出手段とを備えることを特徴とする検出装置。
【請求項２】
前記ゲートウェイ装置は、前記データを受信するために少なくとも１つの経路を用いると共に、受信した前記データを送信するために少なくとも２以上の他の前記経路を用い、
前記経路を用いて前記データを送信した前記制御装置を識別する識別情報と、前記データを他の制御装置へ中継するために前記ゲートウェイ装置が用いる２以上の前記経路とを関連付けて記憶する記憶手段と、
前記受信手段が受信したデータから、前記データを送信した前記制御装置を識別する識別情報を抽出する抽出手段と、
前記抽出手段が前記データから抽出した識別情報と前記記憶手段が関連付けて記憶した２以上の経路を検索する経路検索手段とを更に備え、
前記検出手段は、前記経路検索手段が検索した２以上の経路へ前記ゲートウェイ装置が送信したデータの数と、前記ゲートウェイ装置が受信するデータの数との差異に基づいて、前記経路毎に生じる異常を検出することを特徴とする請求項１に記載の検出装置
【請求項３】
前記記憶手段は、前記受信手段が受信したデータであると共に前記ゲートウェイ装置が受信するデータを、記憶した順序が遅い順に所定の数だけ記憶し、
前記受信手段が受信したデータであると共に前記ゲートウェイ装置が送信したデータの数に基づいて、前記記憶手段が記憶するデータから前記ゲートウェイ装置が送信して中継したデータを検索するデータ検索手段を更に備え、
前記検出手段は、前記受信手段が受信したデータであると共に前記ゲートウェイ装置が送信したデータと、前記データ検索手段が検索したデータとが相違する場合に、前記異常を検出することを特徴とする請求項１又は２に記載の検出装置。
【請求項４】
前記検出手段は、前記異常を検出した場合に、前記異常の原因を解析するために用いる前記受信手段が受信したデータに関する情報を前記記憶手段に保存することを特徴とする請求項１から３のいずれかに記載の検出装置。
【請求項５】
車両の挙動を制御する制御装置が送信するデータを中継するゲートウェイ装置が受信するデータと、前記ゲートウェイ装置が送信して中継した前記データとを受信する受信ステップと、
前記受信ステップで受信したデータであると共に前記ゲートウェイ装置が受信するデータの数と前記ゲートウェイ装置が送信したデータの数との差異が所定の値を超えた場合に、前記ゲートウェイ装置に異常が生じたとして前記異常を検出する検出ステップとを備えることを特徴とする検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両の挙動を制御する制御装置間で送受信されるデータの中継を行うゲートウェイ装置に生じる異常を検出する検出装置及び検出方法に関する。
【背景技術】
【０００２】
従来より、中継先のネットワークにおいて使用される送信方法にデータを変換して中継する電子制御ユニットの検査方法であって、電子制御ユニットが有するゲートウェイ機能を検査する検査時間を短縮できる検査方法が知られている（例えば、特許文献１）。
【０００３】
この方法は、第１のネットワークに接続される端子と第２のネットワークに接続される端子とを有し、第１および第２のネットワーク間でデータを中継するゲートウェイ機能を持った電子制御ユニットの検査方法である。またこの方法は、同じネットワークが接続される端子同士を接続して複数の電子制御ユニットを直列に接続し、直列接続の一端から検査用のデータを送信データとして送信する。更にこの方法は、直列接続の他端において複数の電子制御ユニットを中継してきた検査用のデータを受信データとして受信し、受信データと送信データとを確認することによりゲートウェイ機能を検査する。
【０００４】
【特許文献１】特開２００６−２２８０９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで上記のような電子制御ユニットの検査方法では、データを中継する経路毎に中継するデータ及び中継されたデータを計測した後に、事後的に、計測して得たデータを解析することで、データの中継漏れ、中継における遅延、及び中継におけるデータの化けを検査していた。
【０００６】
よって、中継先となるネットワークの数が増加するに伴ってデータを中継する経路の数が増加するため、中継経路毎に計測して得たデータを検査するために要する検査時間が増加するという問題があった。
【０００７】
本発明は、上記問題に鑑みて成されたものであり、その目的とするところは、車両の挙動を制御する制御装置間で送受信されるデータの中継を行うゲートウェイ装置に生じる異常を効率良くかつ即時的に検出できる検出装置及び検出方法を提供することにある。
【課題を解決するための手段】
【０００８】
本発明に係る検出装置は、車両の挙動を制御する制御装置が送信するデータを中継するゲートウェイ装置が受信するデータと、ゲートウェイ装置が送信して中継したデータとを受信する受信手段と、受信手段が受信したデータの数であると共にゲートウェイ装置が受信するデータの数とゲートウェイ装置が送信したデータの数との差異が所定の値を超えた場合に、ゲートウェイ装置に異常が生じたとして異常を検出する検出手段とを備えることを特徴としている。
【０００９】
上記構成において、ゲートウェイ装置は、データを受信するために少なくとも１つの経路を用いると共に、受信したデータを送信するために少なくとも２以上の他の経路を用い、経路を用いてデータを送信した制御装置を識別する識別情報と、データを他の制御装置へ中継するためにゲートウェイ装置が用いる２以上の経路とを関連付けて記憶する記憶手段と、受信手段が受信したデータから、データを送信した制御装置を識別する識別情報を抽出する抽出手段と、抽出手段がデータから抽出した識別情報と記憶手段が関連付けて記憶した２以上の経路を検索する経路検索手段とを更に備え、検出手段は、経路検索手段が検索した２以上の経路へゲートウェイ装置が送信したデータの数と、ゲートウェイ装置が受信するデータの数との差異に基づいて、経路毎に生じる異常を検出する構成を採用できる。
【００１０】
上記構成において、記憶手段は、受信手段が受信したデータであると共にゲートウェイ装置が受信するデータを、記憶した順序が遅い順に所定の数だけ記憶し、受信手段が受信したデータであると共にゲートウェイ装置が送信したデータの数に基づいて、記憶手段が記憶するデータからゲートウェイ装置が送信して中継したデータを検索するデータ検索手段を更に備え、検出手段は、受信手段が受信したデータであると共にゲートウェイ装置が送信したデータと、データ検索手段が検索したデータとが相違する場合に、異常を検出する構成を採用できる。
【００１１】
上記構成において、検出手段は、異常を検出した場合に、異常の原因を解析するために用いる受信手段が受信したデータに関する情報を記憶手段に保存する構成を採用できる。
【００１２】
本発明に係る検出方法は、車両の挙動を制御する制御装置が送信するデータを中継するゲートウェイ装置が受信するデータと、ゲートウェイ装置が送信して中継したデータとを受信する受信ステップと、受信ステップで受信したデータであると共にゲートウェイ装置が受信するデータの数とゲートウェイ装置が送信したデータの数との差異が所定の値を超えた場合に、ゲートウェイ装置に異常が生じたとして異常を検出する検出ステップとを備えることを特徴としている。
【発明の効果】
【００１３】
請求項１の構成によれば、ゲートウェイ装置が受信するデータの数と中継したデータの数との差異が所定の値を超える場合に、ゲートウェイ装置に生じた異常を検出するため、即時的かつ効率的に異常を検出できる。
【００１４】
請求項２の構成によれば、データを中継するためにゲートウェイ装置が２以上の経路を使用しても、データを中継するために用いる経路毎に、経路に生じる異常を即時的かつ効率的に検出できる。
【００１５】
請求項３の構成によれば、ゲートウェイ装置が送信したデータの異常を検出するために用いるデータを、記憶した順序が遅い順に所定の数だけ記憶するため、効率的に異常を検出できる。
【００１６】
請求項４の構成によれば、異常を検出した場合に異常の原因を解析するために用いる情報を保存するため、効率的に情報を保存できる。
【００１７】
請求項５の構成によれば、ゲートウェイ装置が受信するデータの数と中継したデータの数との差異が所定の値を超える場合に、ゲートウェイ装置に生じた異常を検出するため、即時的かつ効率的に異常を検出できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の検出装置を備える検出システムの一実施形態を示す構成図である。
【図２】ゲートウェイ装置を搭載した車両の一例を表す図である。
【図３】車両に搭載されたゲートウェイ装置のハードウェア構成の一例を表す図である。
【図４】検出装置の一構成例を表す図である。
【図５】マザーボードの一構成例を表す機能ブロック図である。
【図６】マザーボードのハードウェア構成の一例を表す図である。
【図７】抽出部が実行する抽出処理の一例を表すフローチャートである。
【図８】記憶部が構成するリングバッファの一例を表す図である。
【図９】記憶部が記憶するルーティングマップの一例を表す図である。
【図１０】データ登録部が実行するデータ登録処理の一例を表すフローチャートである。
【図１１】経路検索部が実行する経路検索処理の一例を表すフローチャートである。
【図１２】データ検索部が実行するデータ検索処理の一例を表すフローチャートである。
【図１３】実検出部が実行する第１の実検出処理の一例を表すフローチャートである。
【図１４】実検出部が実行する第２の実検出処理の一例を表すフローチャートである。
【図１５】マザーボードが実行する検出処理の一例を表すフローチャートである。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の最良の実施形態について、添付図面を参照しつつ説明する。
【実施例１】
【００２０】
図１は、本発明の検出装置を備える検出システムの一実施形態を示す構成図である。
【００２１】
図１に示す検出システム１０は、通信網１００、ゲートウェイ装置１０００、検出装置２０００、及び解析装置３０００を備える。
【００２２】
通信網１００は、例えば、ＬＡＮ（Local Area Network ）、ＷＡＮ（Wide Area Network）、ＭＡＮ（Metropolitan Area Network）、又は公衆回線網で構成され、検出装置２０００と解析装置３０００とを通信可能に接続する。
【００２３】
ゲートウェイ装置１０００は、例えば、ゲートウェイＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ：電子制御 ユニット）で構成され、検出装置２０００に接続している。
【００２４】
ゲートウェイ装置１０００は、ゲートウェイ装置１０００の検査時において、検出システム１０を構成して検出装置２０００に接続する。しかし、ゲートウェイ装置１０００は、通常の使用時において、検出装置２０００に接続しない。ゲートウェイ装置１０００は、通常の使用時（検査時を含めても良い）において、車両に搭載されて車両の挙動を制御する制御装置が送信するデータを中継する。
【００２５】
ここで図２を参照して、ゲートウェイ装置１０００を搭載した車両について説明する。図２は、ゲートウェイ装置１０００を搭載した車両の一例を表す図である。
【００２６】
図２に示すゲートウェイ装置１０００を搭載した車両１は、例えば、乗用車、バス、及びトラック等の自動車で構成される。尚、本実施例では、車両１が自動車で構成されるとして説明を行うが、これに限定される訳ではなく、原動機付自転車、軽車両、及びトロリーバス、並びに戦車及び装甲車等の軍用車両で構成される実施例を採用できる。
【００２７】
車両１は、図１に示すゲートウェイ装置１０００及びＥＣＵ（Electronic Control Unit）２１１、２２１、及び２３１、並びに図示を省略するが、ＥＣＵ２１２、２１３、２２２、２２３、２３２、及び２３３を備える。
【００２８】
ゲートウェイ装置１０００について説明する前に、ＥＣＵ２１１から２３３について説明する。
【００２９】
ＥＣＵ２１１から２３３は、例えば、電子制御装置（Electric Control Unit）で構成され、車両１の挙動を制御する。本実施例では、ＥＣＵ２１１から２３３は、車両１が備えるエンジンの点火装置（ignition）の点火タイミングを制御することで、車両１の挙動を制御するとして説明を行うが、これに限定される訳ではない。
【００３０】
ここで、車両１の挙動は、広く車両１の動きをいう。車両１の動きは、例えば、車両１の速度及び加速度の変化、車両１の進行方向及びヨーイングの変化、並びに車両１に加わる加重の変化を含むだけでなく、車両１が備えるエアバッグの動作、ドアの開閉、オーディオの動作、及びナビゲーションの動作を含む。
【００３１】
ＥＣＵ２１１から２３３は、図示を省略するが、異なる通信方式又は通信速度で通信する通信網（つまり、ネットワーク）を介してゲートウェイ装置１０００と接続する。本実施例においては、ＥＣＵ２１１から２３３は、ＣＡＮプロトコルを用いてゲートウェイ装置１０００と通信を行うとして説明するが、これに限定される訳ではなく、例えば、ＥＣＵ２１１から２３３は、ＬＩＮ（Local Interconnect Network）プロトコルを用いて通信する構成を採用できる。
【００３２】
ゲートウェイ装置１０００は、車両１の挙動を制御するＥＣＵ２１１から２３３間で、送受信されるデータを中継する。具体的には、ゲートウェイ装置１０００は、ＥＣＵ２１１から２３３のいずれか１つからデータを受信し、受信したデータを中継する中継先の通信網で使用される通信速度及び通信方式に従って変換した後に中継する。
【００３３】
尚、ゲートウェイ装置１０００がデータを中継するために、一度に受信又は送信するデータをフレームデータという。本実施例では、フレームデータは、例えば、ＣＡＮ（Controller Area Network）プロトコルに従った枠となる所定のデータから開始する所定の長さを有するデータであるとして説明するが、これに限定される訳ではない。
【００３４】
ここで図３を参照して、車両１に搭載されたゲートウェイ装置１０００のハードウェア構成の一例について説明する。図３は、車両１に搭載されたゲートウェイ装置１０００のハードウェア構成の一例を表す図である。
【００３５】
ゲートウェイ装置１０００は、ＣＡＮコントローラ１１１０から１１３０、ＣＡＮインタフェース部１２００、ハードウェア処理部１３００（以下、ハードマクロともいう）、及びソフトウェア処理部１４００で構成される。
【００３６】
尚、本実施例において、ゲートウェイ装置１０００は、３つのＣＡＮコントローラ１１１０から１１３０で構成されるとして説明するが、この数に限定される訳ではなく、ＣＡＮコントローラの数が複数であればよい。
【００３７】
また、ＣＡＮコントローラ１１１０から１１３０は、それぞれ同様の接続、構成、及び機能を有するため、以下単に、ＣＡＮコントローラ１１１０について説明を行う。
【００３８】
ＣＡＮコントローラ１１１０は、ＣＡＮバスＢＣ１０を介してＥＣＵ２１１から２１３に接続し、かつＣＡＮインタフェース部１２００に接続している。ＣＡＮコントローラ１１１０は、ＣＡＮプロトコルに従って、ＥＣＵ２１１から２１３が送信したフレームデータを受信すると共に、中継の対象とする他のＣＡＮコントローラ１１２０又は１１３０が受信したフレームデータを中継先のＥＣＵ２１１から２１３へ送信する。
【００３９】
尚、フレームデータをＥＣＵ２１１から２１３へ中継するために用いる経路をチャネルという。チャネルは、ＣＡＮコントローラ１１１０ないし１１３０とＣＡＮバスＢＣ１０ないし３０と結ぶ伝送路をいう。
【００４０】
本実施例では、ＣＡＮコントローラ１１１０とＣＡＮバスＢＣ１０とを結ぶ伝送路をチャネルＣＨ１とし、ＣＡＮコントローラ１１２０とＣＡＮバスＢＣ２０とを結ぶ伝送路をチャネルＣＨ２とし、ＣＡＮコントローラ１１３０とＣＡＮバスＢＣ３０とを結ぶ伝送路をチャネルＣＨ３とする。
【００４１】
尚、ＣＡＮバスＢＣ１０には、ＥＣＵ２１１から２１３が接続し、ＣＡＮバスＢＣ２０には、ＥＣＵ２２１から２２３が接続し、ＣＡＮバスＢＣ３０には、ＥＣＵ２３１から２３３が接続する。
【００４２】
ＣＡＮインタフェース部１２００は、ＣＡＮコントローラ１１１０から１１３０及びハードウェア処理部１３００に接続している。ＣＡＮインタフェース部１２００は、ＣＡＮコントローラ１１１０から１１３０とＣＡＮインタフェース部１２００との間でデータ転送を可能とするバスＢ１０から１２と、ＣＡＮインタフェース部１２００とハードウェア処理部１３００及びソフトウェア処理部１４００との間でデータ転送を可能とするバスＢ２とのインタフェースを提供する。
【００４３】
尚、ＣＡＮインタフェース部１２００、ハードウェア処理部１３００、及びソフトウェア処理部１４００は、バスＢ２を介して互いにデータ転送が可能なように接続している。
【００４４】
ハードウェア処理部１３００は、ハードウェア処理を実行することで、ＣＡＮコントローラ１１１０から１１３０が受信したフレームデータを中継するための経路（以下単に、中継経路という）を検索すると共に、検索した経路にフレームデータを送信するＣＡＮコントローラへフレームデータを出力する。
【００４５】
尚、ハードウェア処理部１３００は、例えば、ハードウェア回路で構成される。ハードウェア処理部１３００は、フレームデータを送信したＥＣＵ２１１から２３３を識別する識別情報（以下単に、ＩＤという）をフレームデータから取得した後に、取得したＩＤに基づいてフレームデータを中継するための経路を検索する。
【００４６】
ここで、ハードウェア処理部１３００は、ＣＡＮコントローラ１１１０から１１３０が受信した一部のフレームデータについて中継経路を検索して中継する。また、ＣＡＮコントローラ１１１０から１１３０が受信したフレームデータの他部については、ソフトウェア処理部１４００が中継する。
【００４７】
尚、フレームデータの一部には、中継を必要としないフレームデータが存在するため、ハードウェア処理部１３００及びソフトウェア処理部１４００は、そのようなフレームデータを破棄する。
【００４８】
ソフトウェア処理部１４００は、ソフトウェア処理を実行することで、ハードウェア処理部１３００からフレームデータを取得した後に、中継経路にフレームデータを送信するＣＡＮコントローラへフレームデータを出力して、フレームデータを中継する。
【００４９】
尚、ソフトウェア処理部１４００は、ＮＭ（Network Management）フレームのフレームデータを中継する。尚、ＮＭフレームとは、ＣＡＮプロトコルを用いて通信を行う通信網に接続する装置の状態を表すフレームデータであり、かつネットワークの管理に用いられるフレームデータをいう。
【００５０】
ここで、ハードウェア処理部１３００及びソフトウェア処理部１４００は、同じＩＤを有するフレームデータに関し、データを受信した順番を変えることなく受信したデータを中継する。
【００５１】
ソフトウェア処理部１４００は、例えば、ＣＰＵ（Central Processing Unit）等の演算部１４１０、例えば、フラッシュ・メモリ等の記憶部１４２０、及び割込制御部１４３０で構成され、演算部１４１０、記憶部１４２０、及び割込制御部１４３０は、それぞれバスによってデータの授受が可能なように接続している。
【００５２】
ソフトウェア処理部１４００は、記憶部１４２０に格納したプログラムを演算部１４１０が読み、読込んだプログラムに従って演算部１４１０が演算を行うことで上記の機能を実現する。
【００５３】
また、割込制御部１４３０は、プログラムに従った演算を行う演算部１４１０に対して、ハードウェア処理部１３００等の他のハードウェアを制御するための演算等を割込んで実行することを要求する割込信号の入出力を制御する。
【００５４】
ここで図１に戻り、検出システム１０の構成について引き続き説明を行う。
【００５５】
検出装置２０００は、例えば、パーソナルコンピュータで構成され、ゲートウェイ装置１０００及び通信網１００に接続している。検出装置２０００は、後述する検出処理を実行することで、ゲートウェイ装置１０００に生じた異常を検出する。
【００５６】
ここで図４を参照して、検出装置２０００の構成について説明する。図４は、検出装置２０００の一構成例を表す図である。
【００５７】
図４に示す検出装置２０００は、ベースボード２１００から２３００及びマザーボード２９００で構成される。
【００５８】
ベースボード２１００は、ゲートウェイ装置１０００及びマザーボード２９００に接続している。ベースボード２１００は、ＣＰＵ（Central Processing Unit）等の演算部と、図示を省略するが、ＲＯＭ（read Only Memory）又はＲＡＭ（Random Access Memory）等の記憶部とを内蔵したＬＳＩ（Large Scale Integration）で構成される３つのマイクロコンピュータ（以下単に、マイコンという）を備える。ベースボード２１００が備える３つのマイコンは、それぞれ演算部２１０１から２１０３を備える。
【００５９】
演算部２１０１から２１０３の接続、構成、及び機能はそれぞれ同様であるため、演算部２１０１について主に説明する。
【００６０】
演算部２１０１は、例えば、ＰＣＩ（Peripheral Component Interconnect）バス等のバスＢＰ１を介してマザーボード２９００に接続する。また、演算部２１０１は、チャネルＣＨ１及びＣＨ２を構成するＣＡＮバスＢＣ１及び２を介してゲートウェイ装置１０００に接続する。
【００６１】
演算部２１０１は、記憶部に格納したプログラムを読み込み、読込んだプログラムに従って演算を行うことで、中継データ送信機能を実現する。ここで、中継データ送信機能とは、ゲートウェイ装置１０００が中継するフレームデータをＣＡＮプロトコルに従って送信する機能をいう。尚、演算部２１０１が送信するフレームデータについては後述する。
【００６２】
尚、演算部２１０２はチャネルＣＨ３及びＣＨ４を構成するＣＡＮバスＢＣ３及びＢＣ４を介してフレームデータを送信し、演算部２１０３はチャネルＣＨ５及びＣＨ６を構成するＣＡＮバスＢＣ５及びＢＣ６を介してフレームデータを送信する。
【００６３】
ベースボード２２００の接続及び構成は、ベースボード２１００とほぼ同様であるため、以下主に、相違点について説明する。
【００６４】
ベースボード２２００が備えるマイコンは、それぞれＣＰＵ等の演算部２２０１から２２０３、及び図示を省略するが、ＲＡＭ等の記憶部を内蔵したＬＳＩで構成される。演算部２２０１から２２０３の接続、構成、及び機能はそれぞれ同様であるため、演算部２２０１について主に説明する。
【００６５】
演算部２２０１は、例えば、ワイヤハーネスによりＣＡＮバス１及び２に接続するバスＢＨ２１及び２２を介してゲートウェイ装置１０００に接続する。
【００６６】
演算部２２０１は、記憶部が格納するプログラムを実行することで、非中継データ送信機能を実現する。ここで、非中継データ送信機能とは、ゲートウェイ装置１０００が中継しないフレームデータをＣＡＮプロトコルに従って送信する機能をいう。尚、演算部２２０１が送信するフレームデータについては後述する。
【００６７】
尚、演算部２２０２はチャネルＣＨ３及び４を構成するＣＡＮバスＢＣ３及び４を介してフレームデータを送信し、演算部２２０３はチャネルＣＨ５及び６を構成するＣＡＮバスＢＣ５及び６を介してフレームデータを送信する。
【００６８】
ベースボード２３００の接続及び構成は、ベースボード２１００とほぼ同様であるため、以下主に、相違点について説明する。
【００６９】
ベースボード２３００が備えるマイコンは、それぞれＣＰＵ等の演算部２３０１から２２０３、及び図示を省略するが、ＲＡＭ等の記憶部を内蔵したＬＳＩで構成される。演算部２３０１から２３０３の接続、構成、及び機能はそれぞれ同様であるため、演算部２３０１について主に説明する。
【００７０】
演算部２３０１は、ベースボード２２００が備える演算部２２０１と同様に、例えば、ワイヤハーネスによりＣＡＮバス１及び２に接続するバスＢＨ３１及び３２を介してゲートウェイ装置１０００に接続する。
【００７１】
演算部２３０１は、記憶部が格納するプログラムが表すデータ受信処理を実行することで、データ受信機能を実現する。ここで、データ受信処理とは、車両１の挙動を制御する制御装置であるＥＣＵが送信するデータを中継するゲートウェイ装置１０００が受信するデータと、ゲートウェイ装置１０００が送信して中継したデータとをＣＡＮプロトコルに従って受信すると共に、受信したデータの受信時刻（つまり、タイムスタンプ）を取得する処理をいう。尚、演算部２３０１が受信するフレームデータについては後述する。
【００７２】
尚、演算部２３０２はチャネルＣＨ３及び４を構成するＣＡＮバスＢＣ３及び４を介してフレームデータを送信し、演算部２３０３はチャネルＣＨ５及び６を構成するＣＡＮバスＢＣ５及び６を介してフレームデータを受信する。
【００７３】
ここで表１を参照して、演算部２１０１から２３０３が送信又は受信するデータについて説明する。表１は、演算部２１０１から２３０３が送信又は受信するデータの一例を示す表である。
【００７４】
【表１】
2010251831.tif 000003
【００７５】
表１は、主体フィールド、機能フィールド、ＣＨフィールド、及びＩＤフィールドを有する。主体フィールドは、データを送信又は受信する主体を表す情報を保存する。機能フィールドは、同一レコードが保存する情報で表される主体が有する機能を表す情報を保存する。
【００７６】
ＣＨフィールドは、同一レコードが保存する情報で表される主体がデータを送信する又は受信するために用いるチャネルを表す情報を保存する。ＩＤフィールドは、同一レコードが保存する情報で表される主体が送信する又は受信するデータのＩＤを保存する。
【００７７】
尚、演算部２１０１から２３０３が送信又は受信するデータのＩＤは、車両１にゲートウェイ装置１０００が搭載された場合に、ゲートウェイ装置１０００がＥＣＵ２１１から２３３から受信するデータが有するＩＤである。
【００７８】
つまり、ＩＤフィールドに保存されたＩＤは、車両１に搭載されたゲートウェイ装置１０００へデータを送信するＥＣＵ２１１から２３３のいずれかを識別する識別情報である。
【００７９】
ここで、具体的に説明すると、演算部２１０１は、中継データ送信機能を提供することで、「Ａ」のＩＤを有するフレームデータをチャネル「１」を用いてゲートウェイ装置１０００に送信する。また、演算部２１０１は、「Ｂ」のＩＤを有するフレームデータをチャネル「２」を用いてゲートウェイ装置１０００に送信する。
【００８０】
更に、演算部２２０１は、非中継データ送信機能を提供することで、「Ｕ」のＩＤを有するフレームデータをチャネル「１」を用いてゲートウェイ装置１０００に送信する。また、演算部２１０１は、「Ｖ」のＩＤを有するフレームデータをチャネル「２」を用いてゲートウェイ装置１０００に送信する。
【００８１】
ここで、演算部２３０１が受信するデータについて説明する前に、表２を参照して、ゲートウェイ装置１０００がフレームデータを中継するために用いる経路について説明する。表２は、ゲートウェイ装置１０００がフレームデータを中継するために用いる経路の一例を示す表である。
【００８２】
【表２】
2010251831.tif 000004
【００８３】
表２は、ＩＤフィールド、受信ＣＨフィールド、及び中継ＣＨフィールドを有する。ＩＤフィールドは、ゲートウェイ装置１０００が中継するフレームデータのＩＤを保存する。
【００８４】
受信ＣＨフィールドは、同一レコードが保存するＩＤを有するデータをゲートウェイ装置１０００が受信するチャネルを表す情報を保存する。中継ＣＨフィールドは、同一レコードが保存するＩＤを有するデータをゲートウェイ装置１０００が中継する中継経路であるチャネルを表す情報を保存する。
【００８５】
ここで表１に戻って具体的に説明すると、ゲートウェイ装置１０００は、演算部２１０１から２１０３が送信する「Ａ」から「Ｆ」のＩＤを有するフレームデータを中継する。
【００８６】
一方で、ゲートウェイ装置１０００は、演算部２２０１から２２０３が送信する「Ｕ」から「Ｚ」のＩＤを有するフレームデータを中継しない。
【００８７】
尚、ゲートウェイ装置１０００が中継する前後で、フレームデータのＩＤは変化しない。しかし、ゲートウェイ装置１０００が受信したデータのＩＤに対して「’」を付加したＩＤを用いて、ゲートウェイ装置１０００が中継したフレームデータであることを表して、以下の説明を行う。
【００８８】
ここで、ゲートウェイ装置１０００は、「Ｂ」のＩＤを有するフレームデータを「２」チャネルを用いて受信した後に、「１」チャネルを用いて送信して中継する。また、ゲートウェイ装置１０００は、「Ｃ」のＩＤを有するフレームデータを「３」チャネルを用いて受信した後に、「１」チャネル及び「２」チャネルを用いて送信して中継する。
【００８９】
よって次に、「１」チャネル及び「２」チャネルを用いて演算部２３０１が受信するフレームデータについて説明する。
【００９０】
先ず、「１」チャネルを用いて演算部２３０１が受信するフレームデータについて説明する。演算部２３０１は、ゲートウェイ装置１０００が演算部２１０１から受信する「Ａ」のＩＤを有するデータ、演算部２２０１から受信する「Ｕ」のＩＤを有するデータ、及びゲートウェイ装置１０００が「２」及び「３」チャネルから受信した後に「１」チャネルへ中継する「Ｂ’」及び「Ｃ’」のＩＤを有するデータを受信する。
【００９１】
次に、「２」チャネルを用いて演算部２３０１が受信するフレームデータについて説明する。演算部２３０１は、同様に、ゲートウェイ装置１０００が受信する「Ｂ」及び「Ｖ」のＩＤを有するフレームデータ、並びにゲートウェイ装置１０００が中継した「Ｃ’」のＩＤを有するフレームデータを受信する。
【００９２】
ここで、図４に戻り、検出装置２０００の構成について引き続き説明を行う。
【００９３】
マザーボード２９００は、バスＢＰ１から３を介してベースボード２１００から２３００に接続する。また、図示を省略するが、例えば、ネットワークボード等の通信網１００を介して解析装置３０００と情報の通信を行う通信機能を有するボードに接続する。
【００９４】
マザーボード２９００は、後述する検出処理を実行することで、ゲートウェイ装置１０００に生じた異常を検出する。
【００９５】
ここで、図５を参照して、マザーボード２９００の構成について説明する。図５は、マザーボード２９００の一構成例を表す機能ブロック図である。
【００９６】
マザーボード２９００は、抽出部２９１０、記憶部２９２０、データ登録部２９３０、経路検索部２９４０、データ検索部２９５０、及び実検出部２９６０で構成される。
【００９７】
抽出部２９１０、記憶部２９２０、データ登録部２９３０、経路検索部２９４０、データ検索部２９５０、及び実検出部２９６０が有する機能は、マザーボード２９００が実行するソフトウェア制御により実現される。
【００９８】
ここで、図６を参照して、ソフトウェア制御を実行するためのマザーボード２９００のハードウェア構成について説明する。図６は、ソフトウェア制御を実現するためのマザーボード２９００のハードウェア構成の一例を表す図である。
【００９９】
マザーボード２９００は、例えば、ＣＰＵ（Central Processing Unit）等の演算部２９０１、ＥＰＲＯＭ（Erasable Programmable Read-Only Memory）又はＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory）等の読み出し専用メモリであるＲＯＭ（Read-Only Memory ）２９０２、ＤＲＡＭ（Dynamic  RAM）又はＳＲＡＭ（Static  RAM）等の揮発性メモリ及びＮＶＲＡＭ（Non Volatile RAM）等の不揮発性メモリで構成されるＲＡＭ（Random Access Memory）２９０３を搭載している。また、演算部２９０１、ＲＯＭ２９０２、及びＲＡＭ２９０３は互いにバス２９０５によって接続している。
【０１００】
ソフトウェア制御は、ＲＯＭ２９０２に格納したプログラムを演算部２９０１が読込み、読込んだプログラムに従って演算部２９０１が演算を行うことにより上記各部の機能を実現する。なお、ＲＡＭ２９０３には、演算結果のデータが書き込まれ、特にＮＶＲＡＭには、電源オフ時にバックアップが必要なデータが保存される。
【０１０１】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１０２】
抽出部２９１０は、ベースボード２３００が備える演算部２３０１から２３０３等により実現されるデータ受信機能を提供するデータ受信部２３１０から２３３０に接続する。また、抽出部２９１０は、データ登録部２９３０、経路検索部２９４０、データ検索部２９５０、及び実検出部２９６０に接続する。
【０１０３】
抽出部２９１０は、後述する抽出処理を演算部２９０１が実行することで実現される。抽出部２９１０は、データ受信部２３１０から２３３０が受信したデータから、ＥＣＵ２１１から２３３を識別する識別情報であるＩＤを抽出する。
【０１０４】
ここで、図７を参照して、抽出部２９１０が実行する抽出処理について説明する。図７は、抽出部２９１０が実行する抽出処理の一例を表すフローチャートである。
【０１０５】
先ず、抽出部２９１０は、データ受信部２３１０から２３３０からフレームデータ及びフレームデータを受信したチャネルを取得する（ステップＳＴ０００１）。次に、抽出部２９１０は、フレームデータの受信時刻を取得する（ステップＳＴ０００２）。
【０１０６】
尚、本実施例において、抽出部２９１０は、データ受信部２３１０から２３３０から受信時刻を取得する構成を採用するが、これに限定される訳ではなく、システム時刻を参照して受信時刻を取得する構成を採用できる。
【０１０７】
その後、抽出部２９１０は、例えば、フレームデータのフレームフォーマットに基づいて、フレームデータから識別情報であるＩＤを取得する（ステップＳＴ０００３）。
【０１０８】
次に、抽出部２９１０は、データ登録部２９３０へ、フレームデータ、フレームデータのＩＤ及び受信時刻を出力する（ステップＳＴ０００４）。その後、抽出部２９１０は、経路検索部２９４０へ取得したＩＤを出力する（ステップＳＴ０００５）。
【０１０９】
次に、抽出部２９１０は、データ検索部２９５０へ取得したＩＤ及びチャネルを出力する（ステップＳＴ０００６）。
【０１１０】
その後、抽出部２９１０は、実検出部２９６０へ、フレームデータ、フレームデータのＩＤ及び受信時刻を出力する（ステップＳＴ０００７）。次に、抽出部２９１０は、抽出処理の実行を終了する。
【０１１１】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１１２】
記憶部２９２０は、データ登録部２９３０、経路検索部２９４０、データ検索部２９５０、実検出部２９６０に接続する。
【０１１３】
記憶部２９２０は、データ受信部２３１０から２３３０が受信したデータであると共にゲートウェイ装置１０００が受信するデータを、記憶した順序が遅い順に所定の数だけ記憶するリングバッファを構成する。
【０１１４】
ここで図８を参照して、記憶部２９２０が構成するリングバッファについて説明する。図８は、記憶部２９２０が構成するリングバッファの一例を表す図である。
【０１１５】
図８（ａ）に示すリングバッファ２９２１ｉは、ゲートウェイ装置１０００が受信する「ｉ」のＩＤを有するフレームデータに関する検証データを記憶するためのバッファである。つまり、記憶部２９２０は、ＩＤ毎にリングバッファを構成する。
【０１１６】
ここで、検証データとは、ゲートウェイ装置１０００が中継したフレームデータに異常が生じているか否かを検証するために用いるデータをいう。具体的には、検証データは、中継の対象とするフレームデータを受信した受信時刻、並びにフレームデータを構成するＤＬＣ（Data Length code）、及びＤＬＣがフィールド長を表すデータフィールドのデータを含む。
【０１１７】
本実施例において、リングバッファ２９２１ｉは検証データを記憶するとして説明したが、これに限定される訳ではなく、リングバッファ２９２１ｉはフレームデータそのものとフレームデータの受信時刻とを保存する構成を採用できる。
【０１１８】
ここで、リングバッファ２９２１ｉは、所定数の要素を有する静的な配列で構成される。配列は、配列の最初の要素から順に（つまり、バッファの先頭の位置から順に）検証データを格納する。また、配列の最後の要素にフレームデータを格納した後には、再度、配列の最初の要素から順に検証データを格納することで、リングバッファ２９２１ｉを構成する。
【０１１９】
この構成によれば、ゲートウェイ装置が送信したデータの異常を検出するために用いるデータを、記憶した順序が遅い順に所定の数だけ記憶するため、効率的に異常を検出できる。
【０１２０】
次に、図８（ｂ）を参照して、記憶部２９２０が構成するリングバッファの位置を指し示すポインタについて説明する。
【０１２１】
記憶部２９２０は、データ受信部２３１０から２３３０が受信したデータであると共にゲートウェイ装置１０００が受信するデータの数を表すポインタＷｐと、ゲートウェイ装置１０００が送信したデータの数を表すポインタＷｐｎとを記憶する。
【０１２２】
ポインタＷｐは、次に検証データを格納するリングバッファ２９２１ｉ上の位置を指し示す。つまり、記憶部２９２０は、ＩＤ毎に構成するリングバッファに対して１つのポインタＷｐを関連付けて記憶する。
【０１２３】
ここで、ポインタＷｐは、リングバッファ２９２１ｉがデータを格納する度にインクリメントされる。また、リングバッファ２９２１ｉを構成する配列の最後の要素にデータを格納した後には、配列の最初の要素を指し示すように初期化される。
【０１２４】
よって、ポインタＷｐは、配列の要素を示す添え字と同様に、リングバッファ２９２１ｉが格納するデータの数を表すといえる。つまり、ポインタＷｐは、データ受信部２３１０から２３３０が受信したデータであると共にゲートウェイ装置１０００が受信するデータの数を表す。
【０１２５】
尚、厳密には、ポインタＷｐは、配列の最後の要素を示した後に最初の要素を示すように初期化されるため、ポインタＷｐが最初の要素を示すように初期化した回数を示すカウンタ（つまり、ループカウンタ）と共に使用されることで、より正確に、ゲートウェイ装置１０００が受信するデータの数を表すことができる。
【０１２６】
次に、ポインタＲｐｎについて説明する。
ポインタＲｐｎは、次にゲートウェイ装置１０００が「ｎ」チャネルに送信して中継するフレームデータに関する検証データのリングバッファ２９２１ｉ上の位置を指し示す。
【０１２７】
つまり、記憶部２９２０は、ＩＤ毎に構成するリングバッファに対して、リングバッファが格納するデータのＩＤで定まる中継経路の数のポインタＲｐｎを関連付けて記憶する。
【０１２８】
つまり、記憶部２９２０は、ゲートウェイ装置１０００が送信したデータの数を表すポインタＲｐｎを、後述する経路検索部２９４０が検索する経路と関連付けて記憶する。
【０１２９】
図８（ａ）を再度参照して具体的に説明すると、ポインタＲｐ１は、ゲートウェイ装置１０００が「１」チャネルに中継するフレームデータであって、検出装置２０００がｍ番目に受信して記憶した「ｉ」のＩＤを有するフレームデータに関する検証データのリングバッファ２９２１ｉにおける格納位置を指し示す。
【０１３０】
同様に、ポインタＲｐ２は、「２」チャネルに中継するフレームデータに関する検証データのリングバッファ２９２１ｉにおける格納位置を指し示す。
【０１３１】
ここで、ポインタＲｐｎは、データ受信部２３１０から２３３０のいずれかが、「ｎ」チャネルにゲートウェイ装置１０００が中継した「ｉ」のＩＤを有するフレームデータを受信する度にインクリメントされる。
【０１３２】
また、ポインタＲｐｎは、リングバッファ２９２１ｉを構成する配列の最後の要素を指し示した後に、配列の最初の要素を指し示すように初期化される。
【０１３３】
よって、ポインタＲｐｎは、配列の要素を示す添え字と同様に、データ受信部２３１０から２３３０が受信したデータであると共にゲートウェイ装置１０００が送信したデータの数を表す。
【０１３４】
尚、厳密には、ポインタＷｐと同様に、ポインタＲｐｎは、配列の最後の要素を示した後に最初の要素を示すように初期化される。よって、ポインタＲｐｎを初期化した回数を示すループカウンタと共に使用されることで、より正確に、ゲートウェイ装置１０００が中継したデータの数を表すことができる。
【０１３５】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１３６】
記憶部２９２０は、後述する経路検索部２９４０がフレームデータの中継経路を検索するために用いるルーティングマップを記憶する。
【０１３７】
ここで図９を参照して、記憶部２９２０が記憶するルーティングマップの一例について説明を行う。図９は、記憶部２９２０が記憶するルーティングマップの一例を表す図である。
【０１３８】
図９に示す第１のルーティングマップＴＭ１及び第２のルーティングマップＴＭ２は、静的な配列で構成される。本実施例において、ＩＤは、値「0h」から「7FFh」の値の整数であるため、第１のルーティングマップＴＭ１及び第２のルーティングマップＴＭ２は、配列の添え字をＩＤとして定まる配列の要素に、その値のＩＤを有するデータの受信元のチャネル（以下単に、受信チャネルという）及び中継先のチャネル（以下単に、中継チャネルという）を表す情報を格納する。
【０１３９】
具体的には、表２に示すように、第１のルーティングマップＴＭ１の「Ｃ＋１」番目の要素は、１０進数表記で「３」を表す「0000 0011b」を格納する。これは、値「0h」から「7FFh」の値の整数である「Ｃ」のＩＤを有するフレームデータを、ゲートウェイ装置１０００が「３」チャネルを用いて受信するためである。
【０１４０】
尚、本実施例において、配列の添え字は値「0」から開始するとして説明する。
【０１４１】
また、表２に示すように、「Ｃ」のＩＤを有するフレームデータは、ゲートウェイ装置１０００が「１」チャネル及び「２」チャネルを用いて中継するため、第２のルーティングマップＴＭ２の「Ｃ＋１」番目の要素は、「0000 0011b」を格納する。
【０１４２】
つまり、第２のルーティングマップＴＭ２の要素の値は、最下位のビット（本実施例においては０番のビットであるとする）と１番のビットが値「1」であるビット列「0000 0011b」によって、最も番号が小さいチャネル「１」及び「２」を用いてゲートウェイ装置１０００がデータを中継することを表す。
【０１４３】
つまり、第２のルーティングマップＴＭ２の要素は、０番のビットから５番のビットの値によって、チャネル「１」から「６」をゲートウェイ装置１０００が中継に用いるか否かを表す。
【０１４４】
尚、検出装置２０００は、「ｎ」チャネルを用いてゲートウェイ装置１０００がデータを中継するか否かを、データのＩＤに基づいて取得した第２のルーティングマップＴＭ２の要素と、第ｎ番のビットのみを値「1」としたマスク値ＣｈＮｕｍとのビット毎のＡＮＤ演算の結果値によって判断する。
【０１４５】
つまり、検出装置２０００は、結果値が値「0」である場合には「ｎ」チャネルを用いてゲートウェイ装置１０００がデータを中継しないと判断し、かつ結果値が値「0」でない場合には「ｎ」チャネルを用いて中継すると判断する。
【０１４６】
具体的には、検出装置２０００は、「2」チャネルを用いてゲートウェイ装置１０００がデータを中継するか否かを、データのＩＤに基づいて取得した第２のルーティングマップＴＭ２の要素「0000 0011b」と、第２番のビットのみを値「1」としたマスク値ＣｈＮｕｍ「0000 0010b」とのビット毎のＡＮＤ演算の結果値「0000 0010b」によって判断する。
【０１４７】
つまり、検出装置２０００は、結果値が値「0000 0010b」であって「0000 0000b」でないため、ゲートウェイ装置１０００は「２」チャネルを用いてデータを中継すると判断する。
【０１４８】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１４９】
データ登録部２９３０は、抽出部２９１０及び記憶部２９２０に接続する。データ登録部２９３０は、演算部２９０１が後述するデータ登録処理を実行することで実現される。データ登録部２９３０は、ゲートウェイ装置１０００が受信するフレームデータの検証データを、記憶部２９２０が構成するリングバッファに登録する。
【０１５０】
ここで図１０を参照して、データ登録部２９３０が実行するデータ登録処理について説明する。図１０は、データ登録部２９３０が実行するデータ登録処理の一例を表すフローチャートである。
【０１５１】
先ず、データ登録部２９３０は、抽出部２９１０から、ゲートウェイ装置１０００が受信するフレームデータ、フレームデータのＩＤ及び検出装置２０００がフレームデータを受信した受信時刻を取得する（ステップＳＴ０１０１）。
【０１５２】
次に、データ登録部２９３０は、フレームデータから、フレームフォーマットに基づいて、ＤＬＣ及びＤＬＣがデータ長を表すデータフィールドを抽出する（ステップＳＴ０１０２）。
【０１５３】
その後、データ登録部２９３０は、フレームデータの受信時刻、ＤＬＣ及びデータフィールドを関連付けて検証データを生成する（ステップＳＴ０１０３）。次に、記憶部２９２０から、取得したＩＤに対応するポインタ Ｗｐ の値を取得する（ステップＳＴ０１０４）。
【０１５４】
その後、データ登録部２９３０は、ポインタ Ｗｐ の値が指し示すリングバッファの位置に検証データを保存する（ステップＳＴ０１０５）。次に、データ登録部２９３０は、データ登録処理の実行を終了する。
【０１５５】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１５６】
経路検索部２９４０は、抽出部２９１０及び記憶部２９２０に接続する。経路検索部２９４０は、演算部２９０１が後述する経路検索処理を実行することで実現される。経路検索部２９４０は、抽出部２９１０がデータから抽出した識別情報であるＩＤに基づいて、制御装置であるＥＣＵ２１１から２３３へデータを中継するためにゲートウェイ装置１０００が用いる経路を検索する。
【０１５７】
ここで図１１を参照して、経路検索部２９４０が実行する経路検索処理について説明する。図１１は、経路検索部２９４０が実行する経路検索処理の一例を表すフローチャートである。
【０１５８】
先ず、経路検索部２９４０は、抽出部２９１０から、ゲートウェイ装置１０００が受信する又は中継したフレームデータのＩＤを取得する（ステップＳＴ０２０１）。次に、経路検索部２９４０は、記憶部２９２０が記憶する第１のルーティングマップＴＭ１のＩＤ＋１番目の配列要素を取得する（ステップＳＴ０２０２）。
【０１５９】
その後、経路検索部２９４０は、取得した配列要素から、受信チャネルを取得する（ステップＳＴ０２０３）。次に、経路検索部２９４０は、記憶部２９２０が記憶する第２のルーティングマップＴＭ２のＩＤ＋１番目の配列要素を取得する（ステップＳＴ０２０４）。
【０１６０】
その後、経路検索部２９４０は、取得した配列要素から、中継チャネルを取得する（ステップＳＴ０２０５）。次に、経路検索部２９４０は、経路検索処理の実行を終了する。
【０１６１】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１６２】
データ検索部２９５０は、抽出部２９１０、記憶部２９２０、及び実検出部２９６０に接続する。データ検索部２９５０は、演算部２９０１が後述するデータ検索処理を実行することで実現される。データ検索部２９５０は、ゲートウェイ装置１０００が送信したデータの数に基づいて、記憶部２９２０が記憶するデータからゲートウェイ装置１０００が送信して中継したデータを検索する。
【０１６３】
ここで図１２を参照して、データ検索部２９５０が実行するデータ検索処理について説明する。図１２は、データ検索部２９５０が実行するデータ検索処理の一例を表すフローチャートである。
【０１６４】
先ず、データ検索部２９５０は、抽出部２９１０から、ゲートウェイ装置１０００が中継したフレームデータのＩＤ及びフレームデータをデータ受信部２３１０から２３３０のいずれかが受信したチャネルを取得する（ステップＳＴ０３０１）。
【０１６５】
次に、データ検索部２９５０は、記憶部２９２０から、取得したＩＤとチャネルに関連付けたのポインタ Ｒｐｎ の値を取得する（ステップＳＴ０３０２）。その後、データ検索部２９５０は、ポインタ Ｒｐｎ の値が表す記憶部２９２０のリングバッファ上の位置から、検証データを取得する（ステップＳＴ０３０３）。
【０１６６】
次に、データ検索部２９５０は、実検出部２９６０へ検証データを出力する（ステップＳＴ０３０５）。その後、データ検索部２９５０は、データ検索処理の実行を終了する。
【０１６７】
ここで図５に戻り、マザーボード２９００の構成について引き続き説明を行う。
【０１６８】
実検出部２９６０は、抽出部２９１０、記憶部２９２０、及びデータ検索部２９５０に接続する。実検出部２９６０は、後述する第１の実検出処理を実行することで、記憶部２９２０が記憶するデータの数の差異が所定の値を超えた場合に、ゲートウェイ装置１０００に異常が生じたとして異常を検出する。
【０１６９】
特に、実検出部２９６０は、第１の実検出処理を実行することで、経路検索部２９４０が検索した経路と関連付けて記憶部２９２０が記憶したデータの数と、ゲートウェイ装置１０００が受信するデータの数との差異に基づいて、経路に生じる異常を検出する。
【０１７０】
また、実検出部２９６０は、後述する第２の実検出処理を実行することで、データ受信部２３１０から２３３０が受信したデータであると共にゲートウェイ装置１０００が送信したデータと、データ検索部２９５０が検索したデータとが相違する場合に、異常を検出する。
【０１７１】
更に、実検出部２９６０は、第１の実検出処理及び第２の実検出処理を実行することで異常を検出した場合に、異常の原因を解析するために用いるデータ受信部２３１０から２３３０が受信したデータに関する情報を記憶部２９２０に保存する。
【０１７２】
ここで図１３を参照して、実検出部２９６０が実行する第１の実検出処理について説明する。図１３は、実検出部２９６０が実行する第１の実検出処理の一例を表すフローチャートである。
【０１７３】
先ず、実検出部２９６０は、抽出部２９１０から、ゲートウェイ装置１０００が受信するフレームデータのＩＤを取得する（ステップＳＴ０４０１）。次に、実検出部２９６０は、記憶部２９２０に、取得したＩＤに対応する未処理のポインタ Ｒｐｎ が存在するか否かを判断する（ステップＳＴ０４０２）。その後、実検出部２９６０は、未処理のポインタ Ｒｐｎ が存在すると判断する場合はステップＳＴ０４０３の処理を、そうでない場合には第１の実検出処理の実行を終了する。
【０１７４】
ステップＳＴ０４０２において、実検出部２９６０は、未処理のポインタ Ｒｐｎ が存在すると判断した場合には、未処理のポインタの内１つを処理対象ポインタ Ｒｐｎ＊ とする（ステップＳＴ０４０３）。
【０１７５】
次に、実検出部２９６０は、取得したＩＤを有するフレームデータの検証データを格納するバッファの位置を指し示すポインタ Ｗｐ の値と、処理対象ポインタ Ｒｐｎ＊ の値とを記憶部２９２０から取得した後に、ポインタ Ｗｐ の値と Ｒｐｎ＊ の値との差異が所定の間隔を超えるか否かを判断する（ステップＳＴ０４０４）。 
【０１７６】
尚、ポインタ Ｗｐ の値と Ｒｐｎ＊ の値との差異は、データ受信部２３１０から２３３０が受信したデータであると共にゲートウェイ装置１０００が受信するデータの数とゲートウェイ装置１０００が送信したデータの数との差異を表す。
【０１７７】
実検出部２９６０は、差異が所定の間隔を超えると判断する場合にはステップＳＴ０４０５の処理を実行し、そうでない場合にはステップＳＴ０４０２に戻り上記処理を繰り返す。
【０１７８】
ステップＳＴ０４０４において、実検出部２９６０は、差異が所定の間隔を超えると判断した場合には、フレームデータの中継漏れがゲートウェイ装置１０００に発生したと判断して異常を検出する（ステップＳＴ０４０５）。
【０１７９】
この構成によれば、ゲートウェイ装置１０００が受信するデータの数と中継したデータの数との差異が所定の値を超える場合に、ゲートウェイ装置１０００に生じた異常を検出するため、即時的かつ効率的に異常を検出できる。
【０１８０】
尚、ステップＳＴ０４０４で用いる所定の間隔は、単なるフレームデータの中継遅延でないと判断するために十分な間隔であるとする。この所定の間隔は、いわゆる当業者に期待し得る程度の簡単な実験等により定めることができる。
【０１８１】
尚、中継漏れとは、ゲートウェイ装置１０００が中継するフレームデータを受信したにも関わらず、そのデータを中継しないことをいう。
【０１８２】
また、中継遅延とは、ゲートウェイ装置１０００の通常の使用状態においてフレームデータを中継するために要する時間を過ぎてから、ゲートウェイ装置１０００がフレームデータを中継することをいう。
【０１８３】
この中継漏れは、主に、ゲートウェイ装置１０００がフレームデータを中継するために用いるＣＡＮバスのいずれかが断線する等の経路に発生した異常によって生じる。
【０１８４】
この構成によれば、データを中継するためにゲートウェイ装置が２以上の経路を使用しても、データを中継するために用いる経路毎に、即時的かつ効率的に異常を検出できる。
【０１８５】
その後、実検出部２９６０は、計測ログを記憶部２９２０に保存する（ステップＳＴ０４０６）。次に、実検出部２９６０は、ステップＳＴ０４０２に戻り上記処理を繰り返す。
【０１８６】
尚、計測ログとは、検出装置２０００に接続する解析装置３０００が、異常の原因を解析するために用いるデータであって、データ受信部２３１０から２３３０が受信したデータに関する情報をいう。
【０１８７】
具体的には、計測ログには、記憶部２９２０がリングバッファに記憶している検証データ、並びにリングバッファ上の位置を指し示すポインタＷｐ及びＲｐｎの値を含む。
【０１８８】
この構成によれば、異常を検出した場合に異常の原因を解析するために用いる情報を保存するため、効率的に情報を保存できる。
【０１８９】
次に、図１４を参照して、実検出部２９６０が実行する第２の実検出処理について説明する。図１４は、実検出部２９６０が実行する第２の実検出処理の一例を表すフローチャートである。
【０１９０】
先ず、実検出部２９６０は、抽出部２９１０から、ゲートウェイ装置１０００が中継したフレームデータと、検出装置２０００がデータを受信した受信時刻を取得する（ステップＳＴ０５０１）。次に、実検出部２９６０は、データ検索部２９５０から、リングバッファに保存した検証データを取得する（ステップＳＴ０５０２）。
【０１９１】
その後、実検出部２９６０は、ステップＳＴ０５０１で取得したフレームデータのデータフィールドのデータと、ステップＳＴ０５０２で取得した検証データのデータフィールドのデータとが一致するか否かを判断する（ステップＳＴ０５０３）。実検出部２９６０は、データが一致すると判断する場合にはステップＳＴ０５０４の処理を実行し、そうでない場合にはステップＳＴ０５０８の処理を実行する。
【０１９２】
ステップＳＴ０５０３において、実検出部２９６０は、データが一致すると判断した場合には、ステップＳＴ０５０２で取得した検証データを構成する受信時刻から、ステップＳＴ０５０１で取得した受信時刻を減算することで、中継時間を算出する（ステップＳＴ０５０４）。
【０１９３】
つまり、実検出部２９６０は、ゲートウェイ装置１０００が受信するデータを検出装置２０００が受信した受信時刻と、ゲートウェイ装置１０００が送信したデータを検出装置２０００が受信した受信時刻とに基づいて中継時間を算出する。
【０１９４】
次に、実検出部２９６０は、中継時間が所定の時間を超えるか否かを判断する（ステップＳＴ０５０５）。実検出部２９６０は、中継時間が所定の時間を超えると判断する場合にはステップＳＴ０５０６の処理を、そうでない場合には第２の実検出処理の実行を終了する。
【０１９５】
ステップＳＴ０５０５において、中継時間が所定の時間を超えると判断した場合には、実検出部２９６０は、中継遅延が発生したと判断して異常を検出する（ステップＳＴ０５０６）。
【０１９６】
尚、ステップＳＴ０５０５において用いる所定の時刻は、ゲートウェイ装置１０００がフレームデータを中継するために要する通常の時刻よりも長い。また、この所定の時刻の具体的かつ適切な時間長を、いわゆる当業者は、当業者に期待し得る程度の簡単な実験等により定めることができる。
【０１９７】
次に、実検出部２９６０は、計測ログを記憶部２９２０に保存する（ステップＳＴ０５０７）。その後、実検出部２９６０は、第２の実検出処理の実行を終了する。
【０１９８】
ステップＳＴ０５０３において、実検出部２９６０は、データが一致しないと判断した場合には、データ化けが発生したと判断して異常を検出する（ステップＳＴ０５０８）。
【０１９９】
尚、データ化けとは、フレームデータを構成するデータフィールドのデータが、ゲートウェイ装置１０００の中継前後で変化したことをいう。
【０２００】
この構成によれば、ゲートウェイ装置１０００が送信したデータの異常を検出するために用いるデータを、記憶した順序が遅い順に所定の数だけ記憶したバッファから検索するため、効率的に異常を検出できる。
【０２０１】
次に、実検出部２９６０は、計測ログを記憶部２９２０に保存する（ステップＳＴ０５０９）。その後、実検出部２９６０は、第２の実検出処理の実行を終了する。
【０２０２】
次に、図１５を参照して、マザーボード２９００が実行する検出処理について説明する。図１５は、マザーボード２９００が実行する検出処理の一例を表すフローチャートである。
【０２０３】
先ず、マザーボード２９００は、上記の抽出処理を実行して、ベースボート２３００からフレームデータを取得すると共に、フレームデータから識別情報であるＩＤを抽出する（ステップＳＴ０６０１）。次に、マザーボード２９００は、抽出したＩＤに基づいてフレームデータの受信経路及び中継経路を検索する経路検索処理を実行する（ステップＳＴ０６０２）。
【０２０４】
次に、マザーボード２９００は、取得したフレームデータが、ゲートウェイ装置１０００が受信するデータであるか否かを判断する（ステップＳＴ０６０３）。マザーボード２９００は、フレームデータが、ゲートウェイ装置１０００が受信するデータであると判断する場合にはステップＳＴ０６０４の処理を、そうでない場合にはステップＳＴ０６０７の処理を実行する。
【０２０５】
尚、ゲートウェイ装置１０００が受信するデータが有するＩＤを、以下単に、中継元ＩＤという。
【０２０６】
ここで、マザーボード２９００は、データ受信部２３１０から２３３０のいずれかがフレームデータを取得した経路（つまり、チャネル）が、経路検索処理を実行することで検索した受信経路（つまり、受信チャネル）と一致する場合に、そのフレームデータをゲートウェイ装置１０００が受信するデータであると判断する。
【０２０７】
ステップＳＴ０６０３において、ゲートウェイ装置１０００が受信するデータであると判断した場合に、マザーボード２９００は、上記のデータ登録処理を実行して、フレームデータに関する検証データをリングバッファに保存する（ステップＳＴ０６０４）。次に、マザーボード２９００は、データを保存したリングバッファ上の位置を指し示すポインタ Ｗｐ の値を１だけインクリメントする（ステップＳＴ０６０５）。
【０２０８】
その後、マザーボード２９００は、上記の第１の実検出処理を実行することで、中継漏れを検出する（ステップＳＴ０６０６）。その後、マザーボード２９００は、検出処理の実行を終了する。
【０２０９】
ステップＳＴ０６０３において、ゲートウェイ装置１０００が受信するデータでないと判断した場合には、マザーボード２９００は、ゲートウェイ装置１０００が中継したデータであるか否かを判断する（ステップＳＴ０６０７）。マザーボード２９００は、ゲートウェイ装置１０００が中継したデータであると判断する場合にはステップＳＴ０６０８の処理を、そうでない場合には検出処理の実行を終了する。
【０２１０】
尚、ゲートウェイ装置１０００が中継したデータが有するＩＤを、以下単に、中継先ＩＤという。
【０２１１】
また、マザーボード２９００は、データ受信部２３１０から２３３０のいずれかがフレームデータを取得した経路（つまり、チャネル）が、経路検索処理を実行することで検索した中継経路と一致する場合に、フレームデータをゲートウェイ装置１０００が中継したデータであると判断する。
【０２１２】
ステップＳＴ０６０７において、ゲートウェイ装置１０００が中継したデータであると判断した場合には、上記のデータ検索処理を実行して、ゲートウェイ装置１０００が中継する対象としたフレームデータの検証データをリングバッファから検索する（ステップＳＴ０６０８）。
【０２１３】
次に、マザーボード２９００は、上記の第２の実検出処理を実行することで、検索したデータと中継されたフレームデータの検証データとを比較して、データ化け等を検出する（ステップＳＴ０６０９）。
【０２１４】
その後、マザーボード２９００は、受信したデータのチャネルに対応するポインタ Ｒｐｎ の値を１だけインクリメントする（ステップＳＴ０６１０）。その後、マザーボード２９００は、検出処理の実行を終了する。
【０２１５】
尚、マザーボード２９００は、通信機能を有するボードに対して記憶部２９２０が記憶する計測ログを出力する機能をも有する。通信機能を有するボードは、出力された計測ログを通信網１００を介して解析装置３０００へ送信する。
【０２１６】
ここで図１に戻り、検出システム１０の構成について引き続き説明する。
【０２１７】
解析装置３０００は、例えば、パーソナルコンピュータで構成され、通信網１００を介して検出装置２０００に接続する。解析装置３０００は、解析処理を実行することで、検出装置２０００から計測ログを取得した後に、取得したログに基づいてゲートウェイ装置１０００に生じた異常を解析する。
【０２１８】
本実施例においては、データ受信部２３１０から２３３０が受信手段の一例に相当し、抽出部２９１０が抽出手段の一例に相当し、記憶部２９２０が記憶手段の一例に相当する。また、経路検索部２９４０が経路検索手段の一例に相当し、データ検索部２９５０がデータ検索手段の一例に相当し、実検出部２９６０が検出手段の一例に相当する。
【０２１９】
また本実施例においては、データ受信部２３１０から２３３０が実行するデータ受信処理が受信ステップの一例に相当し、実検出部２９６０が実行する第１の実検出処理が検出ステップの一例に相当する。
【０２２０】
ゲートウェイ装置１０００、検出装置２０００、及び解析装置３０００は、演算部がＲＯＭ及びＲＡＭの少なくともひとつに格納されたプログラムを実行することによって実現される。また、このプログラムは、磁気ディスクや光ディスク、半導体メモリ、その他の記録媒体に格納して配布したり、ネットワークを介して配信したりすることにより提供できる。
【０２２１】
ゲートウェイ装置１０００、検出装置２０００、及び解析装置３０００がソフトウェア処理を実行することで実現する機能の一部又は全部は、ハードウェア回路を用いて実現することができる。逆に、ゲートウェイ装置１０００、検出装置２０００、及び解析装置３０００がハードウェア回路を用いて実現する機能の一部又は全部は、ソフトウェア処理を実行することで実現することができる。
【０２２２】
本発明の検出方法は、検出装置２０００を用いて実施することができる。
【０２２３】
以上本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形、変更が可能である。
【符号の説明】
【０２２４】
１…車両                          １０…検出システム              
１００…通信網                    ２１１〜２１３…ＥＣＵ          
２２１〜２２３…ＥＣＵ            ２３１〜２３３…ＥＣＵ          
１０００…ゲートウェイ装置        
１１１０〜１１３０…ＣＡＮコントローラ
１２００…ＣＡＮインタフェース部  １３００…ハードウェア処理部      
１４００…ソフトウェア処理部      １４１０…演算部                  
１４２０…記憶部                  １４３０…割込制御部              
２０００…検出装置                ２１００〜２３００…ベースボード  
２１０１〜２１０３…演算部        ２２０１〜２２０３…演算部        
２３０１〜２３０３…演算部        
２３１０〜２３３０…データ受信部（受信手段）
２９００…マザーボード            ２９０１…演算部                  
２９０２…ＲＯＭ                  ２９０３…ＲＡＭ                  
２９０５…バス                    ２９１０…抽出部（抽出手段）      
２９２０…記憶部（記憶手段）      ２９２１ｉ…リングバッファ        
２９３０…データ登録部            ２９４０…経路検索部（経路検索手段）
２９５０…データ検索部（データ検索手段）
２９６０…実検出部（検出手段）    ３０００…解析装置                
Ｂ…バス                          ＢＣ…ＣＡＮバス                  
ＢＨ…バス                        ＢＰ…ＰＣＩバス                  
ＣＨ１〜３…チャンネル１〜３      ＴＭ１…第１のルーティングマップ  
ＴＭ２…第２のルーティングマップ  
【図１】
2010251831.tif 000005
【図２】
2010251831.tif 000006
【図３】
2010251831.tif 000007
【図４】
2010251831.tif 000008
【図５】
2010251831.tif 000009
【図６】
2010251831.tif 000010
【図７】
2010251831.tif 000011
【図８】
2010251831.tif 000012
【図９】
2010251831.tif 000013
【図１０】
2010251831.tif 000014
【図１１】
2010251831.tif 000015
【図１２】
2010251831.tif 000016
【図１３】
2010251831.tif 000017
【図１４】
2010251831.tif 000018
【図１５】
2010251831.tif 000019