(57)【特許請求の範囲】
【請求項１】
メッセージを一意に識別するメッセージＩＤのうち、ＣＡＮバスを介した第１の他のＣＡＮ（Control  Area  Network）通信ユニットからの受信メッセージの受信メッセージＩＤ及び該受信メッセージＩＤに応じた処理内容と、前記ＣＡＮバスを介した第２の他のＣＡＮ通信ユニットへの送信メッセージの送信メッセージＩＤ及び該送信メッセージＩＤに応じた処理内容とを対応付けて格納するメッセージテーブルと、
前記第１の他のＣＡＮ通信ユニットから前記受信メッセージを受信した際に、該受信メッセージが前記メッセージテーブルに格納されている場合、該受信メッセージの受信メッセージＩＤに応じた処理内容を実行後、前記メッセージテーブルにおいて該受信メッセージＩＤと対応する送信メッセージＩＤに応じた処理内容を実行し、該送信メッセージＩＤを付与した前記送信メッセージを前記第２の他のＣＡＮ通信ユニットへ前記ＣＡＮバスを介して送出し、該受信メッセージが前記メッセージテーブルに格納されていない場合、該受信メッセージを破棄する処理部と
を備えることを特徴とするＣＡＮ通信ユニット。
【請求項２】
データを記憶する記憶部
をさらに備え、
前記処理部は、第１の他のＣＡＮ通信ユニットから前記受信メッセージを受信した際に、該受信メッセージが前記メッセージテーブルに格納されている場合、該受信メッセージの受信メッセージＩＤに応じて前記記憶部からデータを取得後、該受信メッセージＩＤと対応する送信メッセージＩＤを付与した前記送信メッセージに該データを埋め込んで第２の他のＣＡＮ通信ユニットへ前記ＣＡＮバスを介して送出する
ことを特徴とする請求項１に記載のＣＡＮ通信ユニット。
【請求項３】
前記処理部は、前記送信メッセージを他のＣＡＮ通信ユニットへ前記ＣＡＮバスを介して送出する際に、該送信メッセージの優先度又は前記ＣＡＮバスのトラヒックに応じて該送信メッセージの送信メッセージＩＤを変更して送信する
ことを特徴とする請求項１又は２に記載のＣＡＮ通信ユニット。
【請求項４】
コンピュータに、
ＣＡＮバスを介した第１の他のＣＡＮ（Control  Area  Network）通信ユニットから受信メッセージを受信し、
前記受信メッセージを受信した際に、メッセージを一意に識別するメッセージＩＤのうち、前記受信メッセージの受信メッセージＩＤ及び該受信メッセージＩＤに応じた処理内容と、前記ＣＡＮバスを介した第２の他のＣＡＮ通信ユニットへの送信メッセージの送信メッセージＩＤ及び該送信メッセージＩＤに応じた処理内容とを対応付けて格納するメッセージテーブルを参照し、該受信メッセージが前記メッセージテーブルに格納されている場合、該受信メッセージの受信メッセージＩＤに応じた処理内容を実行後、前記メッセージテーブルにおいて該受信メッセージＩＤと対応する送信メッセージＩＤに応じた処理内容を実行し、該送信メッセージＩＤを付与した前記送信メッセージを前記第２の他のＣＡＮ通信ユニットへ前記ＣＡＮバスを介して送出し、
前記受信メッセージを受信した際に、該受信メッセージが前記メッセージテーブルに格納されていない場合、該受信メッセージを破棄する
処理を実行させるＣＡＮ通信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＡＮ通信ユニット及びＣＡＮ通信プログラムに関する。
【背景技術】
【０００２】
ＣＡＮ（Control  Area  Network）は、シンプルなネットワーク構成のため、低コストで構築できるネットワークである。さらには、ＣＡＮ通信は、故障検出機能が優れており、信頼性が高い通信方式として知られている。
【０００３】
例えば、車載される複数のＥＣＵ（Electronic  Control  Unit）を、グループ毎のＣＡＮバスに接続し、２つのＣＡＮバス間を中継装置により接続するＣＡＮがある。このＣＡＮにおいて、１つのＣＡＮバスから受信した情報を、その情報が有する識別情報に従って、指定された中継装置へ転送する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１３５４３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、ＣＡＮにおいて、データの要否を判定するノードと、データを有するノードと、データを処理に用いるノードとが異なる場合がある。この場合に、上記技術では、先ず、データの要否を判定するノードが、判定結果に従って、データを有するノードからデータを取得する。その後、データの要否を判定するノードが、取得したデータを、データを処理に用いるノードへ送信する、というデータのやりとりにより、ＣＡＮバスのトラヒック増大を招くという問題がある。
【０００６】
上述の問題に鑑み、実施形態の一例は、ＣＡＮバスのトラヒックを抑制することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態の一例に係るＣＡＮ通信ユニット及びＣＡＮ通信プログラムは、例えば、メッセージを一意に識別するメッセージＩＤのうち、ＣＡＮバスを介した第１の他のＣＡＮ（Control  Area  Network）通信ユニットからの受信メッセージの受信メッセージＩＤ及び受信メッセージＩＤに応じた処理内容と、ＣＡＮバスを介した第２の他のＣＡＮ通信ユニットへの送信メッセージの送信メッセージＩＤ及び送信メッセージＩＤに応じた処理内容とを対応付けて格納するメッセージテーブルを有する。そして、第１の他のＣＡＮ通信ユニットから受信メッセージを受信した際に、受信メッセージがメッセージテーブルに格納されている場合、受信メッセージの受信メッセージＩＤに応じた処理内容を実行後、メッセージテーブルにおいて受信メッセージＩＤと対応する送信メッセージＩＤに応じた処理内容を実行し、送信メッセージＩＤを付与した送信メッセージを第２の他のＣＡＮ通信ユニットへＣＡＮバスを介して送出し、受信メッセージがメッセージテーブルに格納されていない場合、受信メッセージを破棄する。
【発明の効果】
【０００８】
実施形態の一例によれば、ＣＡＮバスのトラヒックを抑制できる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施形態に係るＣＡＮの一例を示すブロック図である。
【図２】図２は、実施形態に係るＣＡＮにおけるメッセージＩＤの一例を示す図である。
【図３】図３は、実施形態に係るノードＡが有する受信メッセージＩＤテーブル及び送信メッセージＩＤテーブルの一例を示す図である。
【図４】図４は、実施形態に係るノードＺが有するメッセージＩＤテーブルの一例を示す図である。
【図５】図５は、実施形態に係るノードＢが有する受信メッセージＩＤテーブル及び送信メッセージＩＤテーブルの一例を示す図である。
【図６】図６は、実施形態に係るＣＡＮにおける通信処理を示すシーケンス図である。
【図７】図７は、実施形態の効果を示す説明図である。
【図８】図８は、実施形態の他の形態に係るＣＡＮにおける通信処理を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
以下に、実施形態の一例にかかるＣＡＮ通信ユニット及びＣＡＮ通信プログラムを図面に基づいて説明する。なお、以下の実施形態は、一例を示すに過ぎず、開示技術を限定するものではない。以下の実施形態は、矛盾しない範囲で適宜組合せることができる。
【００１１】
［実施形態］
（実施形態に係るＣＡＮ）
図１は、実施形態に係るＣＡＮの一例を示すブロック図である。実施形態に係るＣＡＮ（Control  Area  Network）１は、ノードＡ＿１０Ａ、ノードＺ＿１０Ｚ、ノードＢ＿１０Ｂを有する。ＣＡＮ１において、ノードＡ＿１０Ａ、ノードＺ＿１０Ｚ、ノードＢ＿１０Ｂは、ＣＡＮバス２を介して接続される。ＣＡＮバス２は、Ｉ２Ｃ（Inter-Integrated  Circuit、登録商標）等の２線バスや、ＳＰＩ（Serial  Peripheral  Interface、登録商標）等の３線バスを用いることができる。
【００１２】
例えば、ノードＡ＿１０Ａは、ノードＺ＿１０Ｚが保持するデータの要否を判定するノードである。また、ノードＺ＿１０Ｚは、データを保持するノードである。また、ノードＢ＿１０Ｂは、ノードＡ＿１０Ａの判定により必要と判定された、ノードＺ＿１０Ｚが保持するデータを受信し、データ処理を実行するノードである。
【００１３】
なお、各ノードは、それぞれＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro-Processing  Unit）等の処理部、ＣＡＮプロトコルに規定される通信調停やエラー検出等の基本機能に関する処理を実行するＣＡＮコントローラを有する。各ノードは、各処理部により処理を実行し、ＣＡＮコントローラによりＣＡＮ通信が制御される。また、図示は省略しているが、ノードは、温度センサやパルスセンサ等の各種センシングを実行するセンサ、表示や各種動作又は各種制御等のアクチュエーションを実行するアクチュエータ等の各種モジュールを含む。なお、図１に示す各ノードの数は、一例を示すに過ぎない。
【００１４】
（実施形態に係るＣＡＮにおけるメッセージＩＤの一例）
図２は、実施形態に係るＣＡＮにおけるメッセージＩＤの一例を示す図である。図２の一覧に示す「メッセージＩＤ」はＣＡＮ１内でユニークな識別子であり、「メッセージＩＤ」「処理内容」「受信ノード」の対応付けは、ＣＡＮ１において一意である。例えば、ＣＡＮ１において、「メッセージＩＤ」“＃１”及び“＃２”のメッセージは、「受信ノード」“ノードＺ”に対する「処理内容」“データ要求”を行うメッセージである。また、例えば、ＣＡＮ１において、「メッセージＩＤ」“＃３”のメッセージは、「受信ノード」“ノードＢ”に対する「処理内容」“データ送信”を行うメッセージであり、このメッセージを受信した「受信ノード」“ノードＢ”が「処理内容」“データ受信”を行うメッセージである。また、例えば、ＣＡＮ１において、「メッセージＩＤ」“＃４”のメッセージは、「受信ノード」“ノードＡ”に対する「処理内容」“データ送信”を行うメッセージであり、このメッセージを受信した「受信ノード」“ノードＡ”が「処理内容」“データ受信”を行うメッセージである。
【００１５】
（実施形態に係るノードＡ）
ノードＡ＿１０Ａは、メッセージＩＤテーブル１１Ａ、処理部１２Ａ、ＣＡＮコントローラ１３Ａを有する。メッセージＩＤテーブル１１Ａは、受信メッセージＩＤテーブル１１Ａ−１、送信メッセージＩＤテーブル１１Ａ−２を含む。受信メッセージＩＤテーブル１１Ａ−１、送信メッセージＩＤテーブル１１Ａ−２は、ＥＰＲＯＭ（Erasable  Programmable  Read  Only  Memory）、ＦＬＡＳＨ  ＲＯＭ（Read  Only  Memory）等の、図示しない不揮発性記憶デバイスに格納される。受信メッセージＩＤテーブル１１Ａ−１、送信メッセージＩＤテーブル１１Ａ−２は、ノードＡ＿１０Ａの電源投入時等に、処理部１２Ａがアクセス可能な、図示しないＲＡＭ（Random  Access  Memory）等の揮発性の記憶領域へ展開される。
【００１６】
図３は、実施形態に係るノードＡが有する受信メッセージＩＤテーブル及び送信メッセージＩＤテーブルの一例を示す図である。例えば、図３の（ａ）に示すように、受信メッセージＩＤテーブル１１Ａ−１は、「受信メッセージＩＤ」「処理内容」「受信ノード」を対応付けて格納する。「受信メッセージＩＤ」は、ＣＡＮ１内でユニークな識別子である。例えば、処理部１２Ａは、ＣＡＮコントローラ１３Ａを介して「受信メッセージＩＤ」“＃４”のメッセージをＣＡＮバス２から受信した場合に、「処理内容」“データ受信”の処理を実行する。
【００１７】
例えば、処理部１２Ａは、ＣＡＮコントローラ１３Ａを介してＣＡＮバス２から「受信メッセージＩＤ」“＃４”のメッセージを有するデータフレームを受信した場合に、「処理内容」“データ受信”に応じて、受信したデータフレームからデータを抽出する。そして、処理部１２Ａは、抽出したデータに対して所定の処理を行う。
【００１８】
なお、ＣＡＮ通信フレームは、「ＲＴＲ（Remote  Transmission  Request）フィールド」に“１”が格納されている場合には、他のノードへの要求を送信するリモートフレームである。また、ＣＡＮ通信フレームは、「ＲＴＲフィールド」に“０”が格納されている場合には、他のノードからの要求に応答してデータを送信するデータフレームである。
【００１９】
また、例えば、図３の（ｂ）に示すように、送信メッセージＩＤテーブル１１Ａ−２は、「送信メッセージＩＤ」「処理内容」「受信ノード」を対応付けて格納する。「送信メッセージＩＤ」は、ＣＡＮ１内でユニークな識別子である。例えば、処理部１２Ａは、「送信メッセージＩＤ」“＃１”が入力された場合には、「送信メッセージＩＤ」“＃１”を埋め込んだ「処理内容」“データ要求”のリモートフレームを、「受信ノード」“ノードＺ”を宛先としてＣＡＮコントローラ１３Ａを介してＣＡＮバス２へ送出する。
【００２０】
また、例えば、処理部１２Ａは、「送信メッセージＩＤ」“＃２”が入力された場合には、「送信メッセージＩＤ」“＃２”を埋め込んだ「処理内容」“データ要求”のリモートフレームを、「受信ノード」“ノードＺ”を宛先としてＣＡＮコントローラ１３Ａを介してＣＡＮバス２へ送出する。
【００２１】
また、例えば、処理部１２Ａは、「送信メッセージＩＤ」“＃３”が入力された場合には、「送信メッセージＩＤ」“＃３”を埋め込んだ「処理内容」“データ送信”のデータフレームを、「受信ノード」“ノードＢ”を宛先としてＣＡＮコントローラ１３Ａを介してＣＡＮバス２へ送出する。なお、「送信メッセージＩＤ」“＃３”を埋め込んだ「処理内容」“データ送信”のデータフレームは、ノードＺ＿１０Ｚから取得したデータ又はノードＡ＿１０Ａ内において取得したデータである。
【００２２】
（実施形態に係るノードＺ）
ノードＺ＿１０Ｚは、メッセージＩＤテーブル１１Ｚ、処理部１２Ｚ、ＣＡＮコントローラ１３Ｚ、ノード間で送受信されるデータを格納する記憶部１４Ｚを有する。メッセージＩＤテーブル１１Ｚは、ＥＰＲＯＭ、ＦＬＡＳＨ  ＲＯＭ等の、図示しない不揮発性記憶デバイスに格納される。メッセージＩＤテーブルＺ１１は、ノードＺ＿１０Ｚの電源投入時等に、処理部１２Ｚがアクセス可能な、図示しないＲＡＭ等の揮発性の記憶領域へ展開される。
【００２３】
図４に示すように、メッセージＩＤテーブル１１Ｚは、「行Ｎｏ．」「受信メッセージＩＤ」「処理内容」「受信ノード」と、「送信メッセージＩＤ」「処理内容」「受信ノード」とを対応付けて格納する。「行Ｎｏ．」は、メッセージＩＤテーブル１１Ｚにおける各行を識別する番号である。
【００２４】
「受信メッセージＩＤ」は、ＣＡＮ１内でユニークな識別子である。例えば、処理部１２Ｚは、ＣＡＮコントローラ１３Ｚを介して「受信メッセージＩＤ」“＃１”のリモートフレームをＣＡＮバス２から受信した場合に、「送信メッセージＩＤ」“＃４”を埋め込んだ「処理内容」“データ送信”のデータフレームを、「受信ノード」“ノードＡ”を宛先としてＣＡＮコントローラ１３Ｚを介してＣＡＮバス２へ送出する。なお、「送信メッセージＩＤ」“＃４”を埋め込んだデータフレームは、「受信メッセージＩＤ」“＃１”のリモートフレームの「処理内容」“データ要求”に応じて記憶部１４Ｚから読み出したデータを含む。
【００２５】
また、例えば、処理部１２Ｚは、ＣＡＮコントローラ１３Ｚを介して「受信メッセージＩＤ」“＃２”のリモートフレームをＣＡＮバス２から受信した場合に、「送信メッセージＩＤ」“＃３”を埋め込んだ「処理内容」“データ送信”のデータフレームを、「受信ノード」“ノードＢ”を宛先としてＣＡＮコントローラ１３Ｚを介してＣＡＮバス２へ送出する。なお、「送信メッセージＩＤ」“＃３”を埋め込んだデータフレームは、「受信メッセージＩＤ」“＃２”のリモートフレームの「処理内容」“データ要求”に応じて記憶部１４Ｚから読み出したデータを含む。
【００２６】
このように「受信メッセージＩＤ」を対応する「送信メッセージＩＤ」へ変換することにより、例えば、ノードＡ＿１０Ａからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＡ＿１０Ａへ送信し、ノードＡ＿１０ＡがデータをノードＢ＿１０Ｂへ送信するという送受信処理を、ノードＡ＿１０Ａからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＢ＿１０Ｂへ直接送信することができる。また、例えば、ノードＢ＿１０Ｂからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＢ＿１０Ｂへ送信し、ノードＢ＿１０ＢがデータをノードＡ＿１０Ａへ送信するという送受信処理を、ノードＢ＿１０Ｂからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＡ＿１０Ａへ直接送信することができる。
【００２７】
（実施形態に係るノードＢ）
ノードＢ＿１０Ｂは、メッセージＩＤテーブル１１Ｂ、処理部１２Ｂ、ＣＡＮコントローラ１３Ｂを有する。メッセージＩＤテーブル１１Ｂは、受信メッセージＩＤテーブル１１Ｂ−１、送信メッセージＩＤテーブル１１Ｂ−２を含む。受信メッセージＩＤテーブル１１Ｂ−１、送信メッセージＩＤテーブル１１Ｂ−２は、ＥＰＲＯＭ、ＦＬＡＳＨ  ＲＯＭ等の、図示しない不揮発性記憶デバイスに格納される。受信メッセージＩＤテーブル１１Ｂ−１、送信メッセージＩＤテーブル１１Ｂ−２は、ノードＢ＿１０Ｂの電源投入時等に、処理部１２Ｂがアクセス可能な、図示しないＲＡＭ等の揮発性の記憶領域へ展開される。
【００２８】
図５は、実施形態に係るノードＢが有する受信メッセージＩＤテーブル及び送信メッセージＩＤテーブルの一例を示す図である。例えば、図５の（ａ）に示すように、受信メッセージＩＤテーブル１１Ｂ−１は、「受信メッセージＩＤ」「処理内容」「受信ノード」を対応付けて格納する。「受信メッセージＩＤ」は、ＣＡＮ１内でユニークな識別子である。例えば、処理部１２Ｂは、ＣＡＮコントローラ１３Ａを介して「受信メッセージＩＤ」“＃３”のメッセージをＣＡＮバス２から受信した場合に、「処理内容」“データ受信”の処理を実行する。
【００２９】
例えば、処理部１２Ｂは、ＣＡＮコントローラ１３Ｂを介してＣＡＮバス２から「受信メッセージＩＤ」“＃３”のメッセージを有するデータフレームを受信した場合に、「処理内容」“データ受信”に応じて、受信したデータフレームからデータを抽出する。そして、処理部１２Ｂは、抽出したデータに対して所定の処理を行う。
【００３０】
また、例えば、図５の（ｂ）に示すように、送信メッセージＩＤテーブル１１Ｂ−２は、「送信メッセージＩＤ」「処理内容」「受信ノード」を対応付けて格納する。「送信メッセージＩＤ」は、ＣＡＮ１内でユニークな識別子である。例えば、処理部１２Ｂは、「送信メッセージＩＤ」“＃１”が入力された場合には、「送信メッセージＩＤ」“＃１”を埋め込んだ「処理内容」“データ要求”のリモートフレームを、「受信ノード」“ノードＺ”を宛先としてＣＡＮコントローラ１３Ａを介してＣＡＮバス２へ送出する。
【００３１】
また、例えば、処理部１２Ｂは、「送信メッセージＩＤ」“＃２”が入力された場合には、「送信メッセージＩＤ」“＃２”を埋め込んだ「処理内容」“データ要求”のリモートフレームを、「受信ノード」“ノードＺ”を宛先としてＣＡＮコントローラ１３Ｂを介してＣＡＮバス２へ送出する。
【００３２】
また、例えば、処理部１２Ｂは、「送信メッセージＩＤ」“＃４”が入力された場合には、「送信メッセージＩＤ」“＃４”を埋め込んだ「処理内容」“データ送信”のデータフレームを、「受信ノード」“ノードＡ”を宛先としてＣＡＮコントローラ１３Ａを介してＣＡＮバス２へ送出する。なお、「送信メッセージＩＤ」“＃４”を埋め込んだ「処理内容」“データ送信”のデータフレームは、ノードＺ＿１０Ｚから取得したデータ又はノードＢ＿１０Ｂ内において取得したデータである。
【００３３】
（実施形態に係るＣＡＮにおける通信処理）
図６は、実施形態に係るＣＡＮにおける通信処理を示すシーケンス図である。図６において、「受信メッセージＩＤ」は、図２〜図５に示したものと同一とする。
【００３４】
先ず、ステップＳ１１において、ノードＡ＿１０Ａは、データ要求メッセージを、ＣＡＮコントローラ１３Ａを介してＣＡＮバス２へ送出する。ここでのデータ要求メッセージの「メッセージＩＤ」は、“＃１”又は“＃２”であるとする。ＣＡＮ通信の規格上、ステップＳ１１において送出されたデータ要求メッセージは、ノードＺ＿１０Ｚ及びノードＢ＿１０Ｂへ送達する。しかし、ノードＢ＿１０Ｂは、ステップＳ１１において送出されたデータ要求メッセージの対象外であるので、ノードＢ＿１０Ｂにおいてデータ要求メッセージは破棄される。
【００３５】
次に、ステップＳ１２において、ノードＺ＿１０Ｚの処理部１２Ｚは、受信したデータ要求メッセージから「メッセージＩＤ」を抽出し、抽出した「メッセージＩＤ」がメッセージＩＤテーブル１１Ｚに存在するか否かを判定する。処理部１２Ｚは、ステップＳ１２で抽出した「メッセージＩＤ」がメッセージＩＤテーブル１１Ｚに存在する場合に（ステップＳ１２：Ｙｅｓ）、ステップＳ１３へ処理を移す。一方、処理部１２Ｚは、ステップＳ１２で抽出した「受信メッセージＩＤ」がメッセージテーブル１１Ｚに存在しない場合に（ステップＳ１２：Ｎｏ）、ステップＳ１８へ処理を移す。なお、ステップＳ１８では、処理部１２Ｚは、ステップＳ１２で受信したデータ要求メッセージを破棄する。
【００３６】
ステップＳ１３では、処理部１２Ｚは、ステップＳ１２で抽出した「メッセージＩＤ」がメッセージＩＤテーブル１１Ｚの「行Ｎｏ．」“１”に該当するか否かを判定する。処理部１２Ｚは、ステップＳ１２で抽出した「メッセージＩＤ」がメッセージＩＤテーブル１１Ｚの「行Ｎｏ．」“１”に該当する場合に（ステップＳ１３：Ｙｅｓ）、ステップＳ１４へ処理を移す。一方、処理部１２Ｚは、ステップＳ１２で抽出した「メッセージＩＤ」がメッセージＩＤテーブル１１Ｚの「行Ｎｏ．」“１”に該当しない場合に（ステップＳ１３：Ｎｏ）、ステップＳ１６へ処理を移す。
【００３７】
ステップＳ１４では、処理部１２Ｚは、メッセージＩＤテーブル１１Ｚにおいて、ステップＳ１２で抽出した「受信メッセージＩＤ」“＃１”と対応する「処理内容」を実行し、対応する「送信メッセージＩＤ」“＃４”を設定したメッセージ（データフレーム）を生成する。続いて、ステップＳ１５では、処理部１２Ｚは、ＣＡＮコントローラ１３Ｚを介して、ステップＳ１４で生成したメッセージ（データフレーム）をＣＡＮバス２へ送出する。なお、ＣＡＮ通信の規格上、ステップＳ１５において送出されたメッセージ（データフレーム）は、ノードＡ＿１０Ａ及びノードＢ＿１０Ｂへ送達する。しかし、ノードＢ＿１０Ｂは、ステップＳ１５において送出されたメッセージ（データフレーム）の対象外であるので、ノードＢ＿１０Ｂにおいてメッセージ（データフレーム）は破棄される。
【００３８】
なお、ステップＳ１１→ステップＳ１２：Ｙｅｓ→ステップＳ１３：Ｙｅｓ→ステップＳ１４→ステップＳ１５の処理の流れとなるのは、例えば、ステップＳ１１において、ノードＡ＿１０Ａから「メッセージＩＤ」“＃１”のメッセージが送出された場合である。すなわち、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚへ要求したデータを、自身が受信する場合である。
【００３９】
一方、ステップＳ１６では、処理部１２Ｚは、メッセージＩＤテーブル１１Ｚにおいて、ステップＳ１２で抽出した「受信メッセージＩＤ」“＃２”と対応する「処理内容」を実行し、対応する「送信メッセージＩＤ」“＃３”を設定したメッセージ（データフレーム）を生成する。続いて、ステップＳ１７では、処理部１２Ｚは、ＣＡＮコントローラ１３Ｚを介して、ステップＳ１６で生成したメッセージ（データフレーム）をＣＡＮバス２へ送出する。なお、ＣＡＮ通信の規格上、ステップＳ１７において送出されたメッセージ（データフレーム）は、ノードＡ＿１０Ａ及びノードＢ＿１０Ｂへ送達する。しかし、ノードＡ＿１０Ａは、ステップＳ１７において送出されたメッセージ（データフレーム）の対象外であるので、ノードＡ＿１０Ａにおいてメッセージ（データフレーム）は破棄される。
【００４０】
なお、ステップＳ１１→ステップＳ１２：Ｙｅｓ→ステップＳ１３：Ｎｏ→ステップＳ１６→ステップＳ１７の処理の流れとなるのは、例えば、ステップＳ１１において、ノードＡ＿１０Ａから「メッセージＩＤ」“＃２”のメッセージが送出された場合である。すなわち、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚへ要求したデータを、ノードＢ＿１０Ｂへ直接送信する場合である。
【００４１】
（実施形態による効果）
図７は、実施形態の効果を示す説明図である。図７の（ａ）に示す従来技術は、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚ−１に記憶されるデータをノードＢ＿１０Ｂへ受け渡すために、次の処理を実行する。すなわち、先ず、ノードＡ＿１０Ａが、データ要求メッセージをノードＺ＿１０Ｚ−１へ、ＣＡＮバス２を介して送出する（ステップＳ１ａ）。次に、ノードＡ＿１０Ａからデータ要求メッセージを受信したノードＺ＿１０Ｚ−１が、データ要求に対応する応答データをノードＡ＿１０Ａへ、ＣＡＮバス２を介して送出する（ステップＳ２ａ）。そして、応答データをノードＺ＿１０Ｚ−１から受信したノードＡ＿１０Ａが、応答データをノードＢ＿１０ＢへＣＡＮバス２を介して送出する（ステップＳ３ａ）。すなわち、従来技術は、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚ−１に記憶されるデータをノードＢ＿１０Ｂへ受け渡すために、ステップＳ１ａ〜ステップＳ３ａの３ステップにわたりＣＡＮバス２を使用する。
【００４２】
一方、図７の（ｂ）に示す実施形態の一例は、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚに記憶されるデータをノードＢ＿１０Ｂへ受け渡すために、次の処理を実行する。すなわち、先ず、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚへデータ要求メッセージを送出する（ステップＳ１ｂ）。そして、データ要求メッセージを受信したノードＺ＿１０Ｚが、データ要求メッセージの「メッセージＩＤ」を、データ要求メッセージに対する応答データをノードＢ＿１０Ｂで処理できる「メッセージＩＤ」へ変換する。そして、ノードＺ＿１０Ｚが、応答データをノードＢ＿１０Ｂへ送出する（ステップＳ２ｂ）。すなわち、実施形態の一例は、ノードＡ＿１０Ａが、ノードＺ＿１０Ｚに記憶されるデータをノードＢ＿１０Ｂへ受け渡すために、ステップＳ１ｂ〜ステップＳ２ｂの２ステップにわたりＣＡＮバス２を使用する。このため、実施形態の一例は、ＣＡＮバス２を使用する時間を短縮し、ＣＡＮバス２のトラヒックを削減し、ＣＡＮバス２の利用効率を向上させることができる。そして、実施形態の一例は、ＣＡＮシステムの負荷を軽減できる。
【００４３】
［実施形態の他の形態］
（１）ＣＡＮにおける通信処理について
図８は、実施形態の他の形態に係るＣＡＮにおける通信処理を示すシーケンス図である。実施形態の他の形態に係るＣＡＮにおける通信処理は、実施形態に係るＣＡＮにおける通信処理におけるステップＳ１３：Ｎｏと、ステップＳ１６との間に、ステップＳ１３ａを実行する点が異なる。ステップＳ１３：Ｎｏの場合、ステップＳ１３ａでは、ノードＺ＿１０Ｚの処理部１２Ｚは、ノードＡ＿１０Ａ宛としてデータを送出するか否かを判定する。処理部１２Ｚは、ノードＡ＿１０Ａ宛としてデータを送出する場合（ステップＳ１３ａ：Ｙｅｓ）、ステップＳ１４へ処理を移す。一方、処理部１２Ｚは、ノードＢ＿１０Ｂ宛としてデータを送出する場合（ステップＳ１３ａ：Ｎｏ）、ステップＳ１６へ処理を移す。
【００４４】
ここで、ステップＳ１３：Ｎｏは、ノードＡ＿１０Ａからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＡ＿１０Ａ宛へ送信し、ノードＡ＿１０ＡがデータをノードＢ＿１０Ｂ宛へ送信する代わりに、ノードＡ＿１０Ａからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＢ＿１０Ｂ宛へ直接送信する場合である。しかし、処理部１２Ｚは、例えば、「メッセージＩＤ」から判定できるメッセージの優先順位が高く、より優先して送出されるべきメッセージが他に存在する場合に、ノードＡ＿１０Ａからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＢ＿１０Ｂ宛へ直接送信するとの判定結果にかかわらず、優先して送出されるべきメッセージを送出し、当該データをノードＡ＿１０Ａ宛へ送信してもよい。すなわち、ステップＳ１３ａの判定処理時に、ノードＢ＿１０Ｂ宛へ送出するメッセージが複数あり、ステップＳ１１のデータ要求メッセージに応じて送出されるデータよりも優先順位が高いメッセージが存在する場合がある。このとき、優先順位が高いメッセージが先に送出される。このため、ステップＳ１１のデータ要求メッセージに応じて送出されるデータは、優先順位が低いため、ステップＳ１３ａ：Ｙｅｓ→ステップＳ１４→ステップＳ１５の処理を経て、ノードＡ＿１０Ａ宛として送出され、ノードＡ＿１０Ａを経由してノードＢ＿１０Ｂ宛へ送出される。
【００４５】
また、例えば、ステップＳ１３ａの判定処理時に、ノードＺ＿１０ＺからノードＢ＿１０Ｂ宛へのトラヒックが輻輳状態であり、ノードＺ＿１０ＺからノードＡ＿１０Ａへのトラヒックに空きがある場合がある。このとき、ステップＳ１１のデータ要求メッセージに応じて送出されるデータは、トラヒックの輻輳を回避して、ステップＳ１３ａ：Ｙｅｓ→ステップＳ１４→ステップＳ１５の処理を経て、ノードＡ＿１０Ａ宛として送出され、ノードＡ＿１０Ａを経由してノードＢ＿１０Ｂ宛へ送出される。
【００４６】
例えば、送出するメッセージの「メッセージＩＤ」に“＃３”を設定することに代えて“＃４”を設定することで、ノードＢ＿１０Ｂ宛のメッセージをノードＡ＿１０Ａ宛とすることができる（図４参照）。このように、ステップＳ１３におけるノードＡ＿１０Ａからの要求に応じてノードＺ＿１０Ｚが記憶部１４Ｚからデータを読み出してノードＢ＿１０Ｂ宛へ直接送信するとの判定結果にかかわらず、ステップＳ１３ａにおいてノードＡ＿１０Ａ宛へ送信するとすることにより、メッセージの優先順位やＣＡＮバス２のトラヒックに応じて、データが目的の宛先であるノードＢ＿１０Ｂへより迅速に到達する場合がある。
【００４７】
（２）リモートフレーム及びデータフレームについて
上記の実施形態では、データを要求するフレームをリモートフレームとし、リモートフレームに応答してデータを送信するフレームをデータフレームとした。しかし、開示技術は、これに限られず、データフレームでデータを要求し、データフレームでデータ要求に応答してデータを送信するとしてもよい。例えば、データフレームのデータフィールドにデータが格納されていないデータフレームを、データを要求するフレームとし、データフィールドにデータが格納されているデータフレームを、データを送信するフレームとしてもよい。
【００４８】
（３）メッセージＩＤテーブル１４Ｚをもとに送信メッセージＩＤを設定する点について
上記の実施形態では、ノードＺ＿１０Ｚに記憶されるデータをノードＡ＿１０Ａの指示のもとに、ノードＢ＿１０Ｂへ受け渡す際に、ノードＡ＿１０Ａを経由させずにデータをノードＢ＿１０Ｂへデータを送信するよう送信メッセージＩＤを設定するとした。しかし、送信メッセージＩＤの設定は、データの間接受け渡しから直接受け渡しへの変更に係るものに限らず、各ノードにおける処理一般に適用可能である。例えば、ノードＡ＿１０Ａの指示のもとに、ノードＺ＿１０Ｚ及びノードＢ＿１０Ｂが互いに連携して処理を行い、ノードＺ＿１０Ｚ及びノードＢ＿１０ＢからノードＡ＿１０Ａへ各処理結果を返し、ノードＡ＿１０Ａは、ノードＺ＿１０Ｚ及びノードＢ＿１０Ｂからの各処理結果に応じて、次処理をノードＺ＿１０Ｚ及びノードＢ＿１０Ｂへ指示する場合がある。このような場合に、ノードＺ＿１０Ｚ及びノードＢ＿１０Ｂは、各処理結果をノードＡ＿１０Ａへ返さず、ノードＺ＿１０Ｚ及びノードＢ＿１０Ｂ間で処理結果を授受することにより、処理を完結させるようにすることも可能である。
【００４９】
すなわち、処理の始点となる始点ノードから処理の終点となる終点ノードとの間に、中間の処理を担う中間ノードが存在する場合がある。この場合に、実施形態は、始点ノードから中間ノードへ送信されたメッセージＩＤを、中間ノードが保持するメッセージＩＤテーブルの記述内容に従って設定変更する。これにより、始点ノード及び中間ノード間、もしくは、中間ノード及び終点ノード間におけるメッセージのやりとりを省略できる場合に、実施形態は広く適用可能である。
【００５０】
上記の実施形態に係るノードＡ＿１０Ａ、ノードＺ＿１０Ｚ、ノードＢ＿１０Ｂの各部は、メモリ等の記憶装置と協働するＣＰＵやＭＰＵ、あるいは、ＦＰＧＡやＡＳＩＣ等の処理装置がＣＡＮ通信プログラムを実行することにより、実現される。ＦＰＧＡは、Field-Programmable  Gate  Arrayである。ＡＳＩＣは、Application  Specific  Integrated  Circuitである。そして、上記の実施形態に係るノードＡ＿１０Ａ、ノードＺ＿１０Ｚ、ノードＢ＿１０Ｂの各部は、処理負荷や回路設計に応じて、適宜統合又は分散してもよい。また、上記の実施形態に係るノードＡ＿１０Ａ、ノードＺ＿１０Ｚ、ノードＢ＿１０Ｂの各部を適宜、組合せ、代替、省略して構成したＣＡＮ通信ユニットも、開示技術にかかるＣＡＮ通信ユニットに含まれる。
【符号の説明】
【００５１】
１  ＣＡＮ
２  ＣＡＮバス
１０Ａ  ノードＡ
１０Ｚ  ノードＺ
１０Ｂ  ノードＢ
１１Ａ−１、１１Ｂ−１  受信メッセージＩＤテーブル
１１Ｂ−２、１１Ｂ−２  送信メッセージＩＤテーブル
１１Ｚ  メッセージＩＤテーブル
１２Ａ、１２Ｚ、１２Ｂ  処理部
１３Ａ、１３Ｚ、１３Ｂ  ＣＡＮコントローラ
１４Ｚ  記憶部
【図１】
0006276738.tif 000002
【図２】
0006276738.tif 000003
【図３】
0006276738.tif 000004
【図４】
0006276738.tif 000005
【図５】
0006276738.tif 000006
【図６】
0006276738.tif 000007
【図７】
0006276738.tif 000008
【図８】
0006276738.tif 000009