(57)【要約】【課題】受信側のノードでフレームの受信エラーを検出したときに、その旨を送信側のノードに確実に通知して、高い信頼性を確保できるようにする。【解決手段】ネットワーク上の各ノード１００のコミュニケーション・コントローラ１０２が、他ノードに割り当てられたスタティック・スロットでのフレーム受信時に受信エラーを検出した場合に、当該受信エラーとなったフレームの送信元ノードに割り当てられたダイナミック・スロットを用いて、受信エラーが検出されたことを示す診断結果フレームを送信し、また、自ノードに割り当てられたダイナミック・スロットで診断結果フレームを受信したときには、自ノードが送信したフレームに受信エラーが発生したと判定する。【選択図】図６
2008022071.tif 000002
【特許請求の範囲】
【請求項１】
一通信周期内に、１つのフレームを送信する時間区分であるスロットの長さが固定長とされた静的領域と、前記スロットの長さが可変長とされた動的領域とを有し、ネットワーク上の各ノードが、少なくとも前記静的領域において自ノードに割り当てられたスロット内で他ノードに転送すべきフレームを送信する時分割多重通信型の通信ネットワークシステムにおいて、
前記ネットワーク上の各ノードが、
前記静的領域において他ノードに割り当てられたスロット内のフレームを正常に受信できたか否かを判定する受信診断手段と、
前記受信診断手段により受信エラーが検出されたときに、受信エラーが検出されたことを示す診断結果フレームを、前記動的領域において前記受信エラーとなったフレームの送信元である他のノードに対して割り当てられたスロットを用いて送信する診断結果送信手段と、
前記動的領域において自ノードに割り当てられたスロット内で前記診断結果フレームを受信した場合に、自ノードが送信したフレームに受信エラーが発生したと判定する送信診断手段とを備えることを特徴とする通信ネットワークシステム。
【請求項２】
前記ネットワーク上の各ノードが自ノードに割り当てられたスロット内で送信する送信フレームは、ヘッダ部と送信データ部とエラーチェック部とからなるフレーム構造を有し、
前記診断結果フレームは、前記送信フレームのフレーム構造から送信データ部を除いたフレーム構造を有することを特徴とする請求項１に記載の通信ネットワークシステム。
【請求項３】
前記送信診断手段は、前記動的領域において自ノードに割り当てられたスロットの長さが前記診断結果フレームが送信された場合のスロットの長さと一致するか否かを判定して、その判定結果に基づいて、前記動的領域において自ノードに割り当てられたスロット内の信号が前記診断結果フレームであるかノイズであるかを判断することを特徴とする請求項１に記載の通信ネットワークシステム。
【請求項４】
前記送信診断手段は、前記動的領域において自ノードに割り当てられたスロット内の複数のタイミングで信号成分の有無を判定して、その判定結果に基づいて、前記動的領域において自ノードに割り当てられたスロット内の信号が前記診断結果フレームであるかノイズであるかを判断することを特徴とする請求項１に記載の通信ネットワークシステム。
【請求項５】
一通信周期内に、１つのフレームを送信する時間区分であるスロットの長さが固定長とされた静的領域と、前記スロットの長さが可変長とされた動的領域とを有し、ネットワーク上の各ノードが、少なくとも前記静的領域において自ノードに割り当てられたスロット内で他ノードに転送すべきフレームを送信する時分割多重通信型の通信ネットワークシステムにおいて、前記静的領域で送信されたフレームの受信エラーを受信側ノードから送信側ノードへと通知する受信エラー通知方法であって、
前記受信側ノードは、前記静的領域で送信されたフレームの受信エラーを検出したときに、受信エラーが検出されたことを示す診断結果フレームを、前記動的領域において前記受信エラーとなったフレームの送信元である送信側ノードに対して割り当てられたスロットを用いて送信し、
前記送信側ノードは、前記動的領域において自ノードに割り当てられたスロット内で前記診断結果フレームを受信した場合に、自ノードが送信したフレームに受信エラーが発生したと判定することを特徴とする受信エラー通知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時分割多重通信型の通信ネットワークシステム、及び、時分割多重通信型の通信ネットワークシステムにおける受信エラー通知方法に関する。
【背景技術】
【０００２】
車両に搭載される通信ネットワークシステムのプロトコルの１種として、ＦｌｅｘＲａｙ（Daimler Chrysler AGの登録商標）と呼ばれる通信プロトコルが知られている。このＦｌｅｘＲａｙは、高い信頼性を確保しながら最大１０Ｍｂｐｓ程度の通信速度を実現するものであり、車両走行に直接関わる部分の電子化制御（Ｘ−ｂｙ−ｗｉｒｅ）を実用化する上での重要な技術として注目されている。
【０００３】
ＦｌｅｘＲａｙでは、データ転送方式としてタイムトリガ方式を採用しており、ネットワーク上の各ノードのフレーム送信のタイミングが予めスケジューリングされる。ＦｌｅｘＲａｙの一通信周期はコミュニケーション・サイクルと呼ばれ、このコミュニケーション・サイクルには、１つのフレームを送信する時間区分であるスロットの長さが固定長とされた静的領域（スタティック・セグメント）と、スロットの長さが可変長とされた動的領域（ダイナミック・セグメント）とが定義されている。ＦｌｅｘＲａｙでは、ネットワーク上の各ノードが、ネットワーク内における共通の時間認識であるグローバルタイムに従って、各コミュニケーション・サイクル内の静的領域や動的領域において自ノードに割り当てられたスロットのタイミングを認識し、当該スロット内で、他ノードに転送すべきフレームを送信するようになっている。
【０００４】
以上のように、ＦｌｅｘＲａｙでは、ネットワーク上の各ノードが予めスケジューリングされた送信タイミングでフレームを送信するタイムトリガ方式を採用しているため、ノード間での送信フレームの衝突は想定されていない。このため、ＦｌｅｘＲａｙのフレーム・フォーマットには、車載用の通信ネットワークシステムのプロトコルとして広く普及しているＣＡＮ（Controller Area Network）のフレームで定義されているようなＡＣＫ情報は定義されておらず、ネットワーク上の各ノードは、フレームの受信エラーを送信側ノードに通知する機能を備えていない。なお、ＦｌｅｘＲａｙのフレーム・フォーマットについては、下記非特許文献１に詳細が記載されている。
【非特許文献１】「FlexRay Communication System Protocol Specification Version2.1 RevisionA」，２００５年１２月，ｐ．９０−９９
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、通信プロトコルとしてＦｌｅｘＲａｙを採用した通信ネットワークシステムにおいても、例えばノイズの発生などにより、あるノードが送信したフレームを他のノードが正常に受信できないことは生じうる。この場合、現状では、受信側のノードは正常に受信できなかったフレームを破棄してアプリケーションで使用しないという対策が取られるが、受信側ノードから送信側ノードに対して受信エラーが通知されないため、送信側ノードは、自ノードが送信したフレームが正常に受信されたかどうかを確認することができない。このため、例えば上述したＸ−ｂｙ−ｗｉｒｅのような高い信頼性の確保が必須とされるシステムを実現するという観点からは、必ずしも十分な信頼性が確保されているとは言い難く、改善が求められている。
【０００６】
本発明は、以上のような従来の実情に鑑みて創案されたものであって、受信側のノードでフレームの受信エラーを検出したときに、その旨を送信側のノードに確実に通知して、高い信頼性を確保することができる通信ネットワークシステム及び受信エラーの通知方法を提供することを目的としている。
【課題を解決するための手段】
【０００７】
本発明は、一通信周期内にスロットの長さが固定長とされた静的領域とスロットの長さが可変長とされた動的領域とを有し、ネットワーク上の各ノードが、少なくとも静的領域において自ノードに割り当てられたスロット内で他ノードに転送すべきフレームを送信する時分割多重通信型の通信ネットワークシステムを対象とする。このような時分割多重通信型の通信ネットワークシステムにおいて、本発明では、ネットワーク上の各ノードに、静的領域において他ノードに割り当てられたスロット内のフレームを正常に受信できたか否かを判定し、受信エラーが検出されたときには、受信エラーが検出されたことを示す診断結果フレームを、動的領域において受信エラーとなったフレームの送信元である他のノードに対して割り当てられたスロットを用いて送信するとともに、動的領域において自ノードに割り当てられたスロット内で診断結果フレームを受信した場合には、自ノードが送信したフレームに受信エラーが発生したと判定する機能を持たせることで、上述した課題を解決する。
【発明の効果】
【０００８】
本発明によれば、ネットワーク上のあるノードでフレームの受信エラーが検出されたときに、その旨の情報が、当該受信エラーとなったフレームの送信元のノードに対して確実に通知されるので、通信の信頼性を向上させることができる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の実施形態として、通信プロトコルにＦｌｅｘＲａｙを採用した車載用の通信ネットワークシステムに本発明を適用した例について、具体的に説明する。
【００１０】
［システム概要］
本実施形態の通信ネットワークシステムは、図１に示すように、ノード１〜１６がＦｌｅｘＲａｙバス２０に接続されて構成され、これらのノード１〜１６間でＦｌｅｘＲａｙプロトコルに従った通信を行って情報を共有する車載用のネットワークシステムである。なお、ＦｌｅｘＲａｙでは、通信に冗長性を持たせて信頼性を確保するために、チャンネルＡ，Ｂの２チャンネルでのデュアル通信をサポートしているが、本実施形態では、説明の簡単のために、１チャンネルのみでの通信を行うものとして説明する。
【００１１】
ＦｌｅｘＲａｙでのデータ転送の仕組みを図２に概略的に示す。ＦｌｅｘＲａｙでのデータ転送は、通信ネットワークシステムの稼動中に繰り返されるコミュニケーション・サイクル（通信周期）を単位として行われる。コミュニケーション・サイクルは、図２に示すように、スタティック・セグメント（静的領域）と、ダイナミック・セグメント（動的領域）と、シンボル・ウィンドウと、ネットワーク・アイドルタイムの４つのセグメントから構成される。
【００１２】
スタティック・セグメントは、フレームサイズ一定でデータ転送を行う期間であり、複数のスタティック・スロットから構成される。スタティック・スロットは、スタティック・セグメントにおいて１フレームを送信する時間区分（帯域）であり、全てのスタティック・スロットの時間は等しく、そのスロット内で送信されるフレームの長さも等しい。このスタティック・セグメントでは、ネットワーク上の各ノードが予め定められたスケジュールにのみ従って通信を行う。
【００１３】
ダイナミック・セグメントは、フレームサイズ可変でデータ転送を行う期間であり、複数のダイナミック・スロットから構成される。ダイナミック・スロットは、ダイナミック・セグメントにおいて１フレームを送信する時間区分であり、その長さは、ネットワーク上の各ノードの送信要求に従って変化させることが可能である。なお、このダイナミック・スロットの長さは、最小のスロット単位であるミニスロットの整数倍とされ、フレームを送信しないダイナミック・スロットの長さは１ミニスロット分の長さであり、フレームを送信するダイナミック・スロットの長さは、フレームが収まる数＋１個分のミニスロットの長さとなる。このダイナミック・セグメントでは、ネットワーク上の各ノードが優先度に従った通信を行うことが可能である。
【００１４】
シンボル・ウィンドウは、ネットワークのスタートアップ時やウェイクアップ時などに使用される領域であり、また、ネットワーク・アイドルタイムは、エラー訂正やクロック同期の同期補正量算出などで使用される領域である。なお、上述したコミュニケーション・サイクルにおけるダイナミック・セグメントとシンボル・ウィンドウは、オプションとして設定されるものであり、通信ネットワークシステムの構成や用途によっては不要とされる。
【００１５】
ＦｌｅｘＲａｙのフレーム・フォーマットを図３に概略的に示す。ＦｌｅｘＲａｙのフレームは、図３に示すように、ヘッダ・セグメント（５バイト）と、ペイロード・セグメント（０〜２５４バイト）と、トレイラ・セグメント（３バイト）の３つのセグメントで構成される。ヘッダ・セグメントには、送信するデータに関するヘッダ情報が格納され、ペイロード・セグメントには、データそのものが格納される。また、トレイラ・セグメントはフレーム全体でエラーがあるかどうかをチェックする機能を持ち、ヘッダ・セグメントとペイロード・セグメントをＣＲＣ（Cyclic Redundancy Check）にかけた結果が格納される。
【００１６】
本実施形態の通信ネットワークシステムでは、ネットワーク上の各ノード１〜１６が、上述したコミュニケーション・サイクルのスタティック・セグメントにおいて自ノードに割り当てられたスタティック・スロット内で、自ノードのアプリケーションデータを含む上述したフォーマットのフレームを送信する。また、ネットワーク上の各ノード１〜１６は、スタティック・セグメントの他ノードに割り当てられたスタティック・スロットで他ノードが送信したフレームを受信する。このとき、各ノード１〜１６は、他ノードから送信されたフレームを正常に受信できたか否かの判定（受信診断）を行い、正常に受信できたフレームのみを自ノードのアプリケーションで使用し、受信エラーが検出されたフレームは破棄する。
【００１７】
また、特に本実施形態の通信ネットワークシステムでは、ネットワーク上の各ノード１〜１６が、受信診断により他のノードから送信されたフレームの受信エラーを検出した場合には、上述したコミュニケーション・サイクルのダイナミック・セグメントにおいて、当該受信エラーとなったフレームの送信元である他のノードに割り当てられたダイナミック・スロットを用いて、受信エラーが検出されたことを示す診断結果フレームを送信する。また、ネットワーク上の各ノード１〜１６は、ダイナミック・セグメントの自ノードに割り当てられたダイナミック・スロット内で診断結果フレームを受信した場合に、自ノードが送信したフレームに受信エラーが発生したと判断する。つまり、本実施形態の通信ネットワークシステムでは、各ノード１〜１６間でデータ転送を行う単位であるコミュニケーション・サイクルのダイナミック・セグメントを診断結果フレームの送信期間として利用し、ネットワーク上のあるノードがフレームの受信エラーを検出したときに、当該フレームの送信元ノードに割り当てられたダイナミック・スロット内で診断結果フレームを送信することで、送信元ノードに対して受信エラーを通知するようにしている。なお、本実施形態では、コミュニケーション・サイクルのダイナミック・セグメントを診断結果フレームの送信期間としてのみ利用することを前提として説明するが、診断結果フレームだけでなく、通常のアプリケーションデータを含むフレームの送信も合わせて行う期間とすることも可能である。ただし、この場合には、受信エラーが生じたときにその旨を送信元ノードに確実に通知できるようにするために、診断結果フレーム送信の優先順位を通常のフレーム送信の優先順位よりも高く設定しておくことが望ましい。
【００１８】
通信ネットワークシステムの細かな通信諸元（ノード数や通信速度、コミュニケーション・サイクル長、スタティック・セグメント長、ダイナミック・セグメント長、スタティック・スロット数、スタティック・スロット長、ミニスロット数、ミニスロット長など）は、プロトコル仕様書で認められている範囲内においてシステム設計時に定められ、また、各ノードのスロット割り当てなどもシステム構成に応じて設計時に定められる。本実施形態の通信ネットワークシステムでは、ネットワーク上の各ノード１〜１６が図４（ａ）に示す通信諸元で通信を行うものとし、各ノード１〜１６のスロット割り当ては、図４（ｂ）のように定められているものとする。
【００１９】
［ノード構成］
次に、本実施形態の通信ネットワークシステムにおいて、ＦｌｅｘＲａｙバス２０に接続されたネットワーク上の各ノード１〜１６の構成について、より具体的に説明する。これら各ノード１〜１６は、後述するホストＣＰＵのアプリケーションレベルでの機能は各々異なるものの、通信に関しては、基本的に共通の構成、機能を有している。以下では、これらのノード１〜１６をノード１００と総称して説明する。
【００２０】
ノード１００のハード的な内部構成を図５に示す。ノード１００の内部には、図５に示すように、主要な構成要素として、ホストＣＰＵ１０１と、コミュニケーション・コントローラ１０２と、バス・ドライバ１０３とが設けられている。ホストＣＰＵ１０１は、ノード１００の全体を制御するコントローラであり、コミュニケーション・コントローラ１０２は、ノード１００の通信を制御するコントローラである。また、バス・ドライバ１０３は、ＦｌｅｘＲａｙバス２０とコミュニケーション・コントローラ１０２との間での物理的信号と論理的信号との信号変換を行うものである。なお、ＦｌｅｘＲａｙバス２０は、例えばＵＴＰ（Unshield Twisted Pair）ケーブルなどからなり、コネクタ１０４によりノード１００と接続され、ノード１００の内部において、受信時のノイズを除去するフィルタ１０５を介してバス・ドライバ１０３に接続されている。
【００２１】
コミュニケーション・コントローラ１０２の主要な機能構成を図６に示す。コミュニケーション・コントローラ１０２には、ソフトウェアで実現される主要な機能構成として、図６に示すように、コントローラ・ホスト・インターフェース部１１１、状態遷移処理部１１２、クロック同期・スタートアップ処理部１１３、送信処理部１１４、受信処理部１１５、受信診断処理部１１６、送信診断処理部１１７の各機能が設けられる。
【００２２】
コントローラ・ホスト・インターフェース部１１１は、ホストＣＰＵ１０１との間でのデータの送受信を制御するものであり、状態遷移処理部１１２は、ＦｌｅｘＲａｙプロトコルに従ったコミュニケーション・コントローラ１０２の状態遷移を制御するものである。また、クロック同期・スタートアップ処理部１１３は、通信起動時のシーケンス制御を行い、他のノードとの間での通信の同期をとるためのクロック同期処理を行う。
【００２３】
送信処理部１１４は、自ノードからのフレームの送信を制御するものである。具体的には、送信処理部１１４は、コミュニケーション・サイクルのスタティック・セグメントにおけるスタティック・スロットをカウントするスロット・カウンタを持ち、カウンタ値が自ノードに割り当てられているスロットＩＤの値と一致するタイミングで、ホストＣＰＵ１０１からのアプリケーションデータを、上述したフレーム・フォーマットに従った形式でバス・ドライバ１０３を介してＦｌｅｘＲａｙバス２０上に送出する。
【００２４】
また、送信処理部１１４は、受信診断処理部１１６による受信診断の結果、受信エラーが検出された場合には、コミュニケーション・サイクルのダイナミック・セグメントで受信エラーとなったフレームの送信元ノードに割り当てられたダイナミック・スロットを用い、受信エラーが検出されたことを示す診断結果フレームをＦｌｅｘＲａｙバス２０上に送出する処理を行う。なお、受信エラーとなったフレームの送信元ノードに割り当てられたダイナミック・スロットの識別は、例えば、ダイナミック・セグメントにおいてミニスロット長（本実施形態では１０μｓ）に亘ってフレームの開始を示すフレーム・スタート・シーケンスが検出されない場合、ミニスロット長が経過した時点で１つのダイナミック・スロットが終了したものと判定し、また、フレーム・スタート・シーケンスが検出された（フレームを受信した）場合は、その後のフレーム終了を示すフレーム・エンド・シーケンスが検出されてからマージンとして定めた１ミニスロット分の時間が経過した時点で１つのダイナミック・スロットが終了したものと判定し、これらダイナミック・スロットの経過をカウントして送信元ノードに割り当てられているダイナミック・スロットのスロットＩＤと照合するといった手法で実現できる。
【００２５】
送信処理部１１４が送信する診断結果フレームは、例えば図３に示したフレーム・フォーマットを基準とし、図７に示すように、このフレーム・フォーマットで規定されているペイロード・セグメント（アプリケーションデータが格納される送信データ部）を除いて、ヘッダ・セグメント（ヘッダ部）とトレイラ・セグメント（エラーチェック部）のみを有する形式とすることが望ましい。診断結果フレームの形式を以上のような形式とすることにより、コミュニケーション・コントローラ１０２の送信処理部１１４のロジックを大きく変更することなく、通常のＦｌｅｘＲａｙフレームの送信と同様の処理で診断結果フレームを送信することが可能となり、また、診断結果フレームのフレーム長を最小限にして、通信負荷の削減を図ることが可能となる。
【００２６】
受信処理部１１５は、ネットワーク上の他ノードからのフレームの受信を制御するものである。具体的には、受信処理部１１５は、コミュニケーション・サイクルのスタティック・セグメントにおいてネットワーク上の他ノードに割り当てられているスタティック・スロット内のフレームを受信し、フレーム内に含まれる他ノードのアプリケーションデータを抽出して、コントローラ・ホスト・インターフェース部１１１からホストＣＰＵ１０１へと転送する。また、受信処理部１１５は、コミュニケーション・サイクルのダイナミック・セグメントにおいて自ノードに割り当てられたダイナミック・スロット内で上述した診断結果フレームを受信する処理も行う。
【００２７】
受信診断処理部１１６は、スタティック・スロット内で他ノードから送信されたフレームを受信処理部１１５で正常に受信できたか否かを診断するものである。具体的には、受信診断処理部１１６は、受信処理部１１５がフレームを受信した際に得られる図８に示すような受信ステータス（ValidFrame，SyntaxError，ContentError，Bviolation）をもとに他ノードからのフレームの受信診断を行い、ValidFrame＝１、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０の場合のみフレームを正常に受信したと判定し、それ以外の場合は受信エラーと判定する。そして、受信診断処理部１１６は、受信エラーが発生していると判定した場合には、コントローラ・ホスト・インターフェース部１１１を介してホストＣＰＵ１０１へ受信ステータスを通知するとともに、送信処理部１１４に受信エラーが検出されたことを通知する。
【００２８】
送信診断処理部１１７は、受信処理部１１５により自ノードに割り当てられたダイナミック・スロット内で他ノードからの診断結果フレームが受信されたか否かにより、送信処理部１１４により自ノードに割り当てられたスタティック・スロット内で送信したアプリケーションデータを含むフレームが、他のノードで正常に受信されたか否かを診断するものである。この送信診断処理部１１７による診断は、例えば、受信処理部１１５が診断結果フレームを受信する際に得られる上述した受信ステータスをもとに実施することができる。すなわち、受信処理部１１５が自ノードに割り当てられたダイナミック・スロット内で診断結果フレームを受信しようとしたときに、当該ダイナミック・スロット内に他ノードからの診断結果フレームが含まれていなければ、そのときの受信ステータスは、ValidFrame＝０、SyntaxError＝０、ContentError＝０、Bviolation＝０となる。したがって、送信診断処理部１１７は、受信処理部１１５が診断結果フレームを受信する際に得られる受信ステータスが、ValidFrame＝０、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０となっていれば、自ノードに割り当てられたダイナミック・スロットでは他ノードからの診断結果フレームが送信されておらず、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームは、他ノードにより正常に受信されたと判定することができる。
【００２９】
また、受信処理部１１５が診断結果フレームを受信する際に得られる受信ステータスが、ValidFrame＝１、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０となっていれば、他ノードからの診断結果フレームが受信処理部１１５により正常に受信されたことを示しているので、この場合には、送信診断処理部１１７は、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームが、ネットワーク上のいずれか１つの他ノードで正常に受信されず、この他ノードで受信エラーが発生したものと判定することができる。
【００３０】
また、受信処理部１１５が診断結果フレームを受信する際に得られる受信ステータスが上述した２つのパターン以外となっている場合は、受信処理部１１５による診断結果フレームの受信に異常が生じていると判定できる。この診断結果フレームの受信エラーの要因としては、自ノードに割り当てられたダイナミック・スロット内で複数の他ノードから送信された診断結果フレームが競合している場合と、自ノードに割り当てられたダイナミック・スロット内で発生したノイズをデータとして受信した場合とが考えられる。ここで、診断結果フレームの競合による受信エラーは、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームが、ネットワーク上の複数の他ノードで正常に受信されず、これら複数の他ノードから同時に診断結果フレームが送信された場合に発生するものである。一方、ノイズの影響による受信エラーは、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームは他ノードで正常に受信され、他ノードからの診断結果フレームは送信されていないが、自ノードに割り当てられたダイナミック・スロット内で発生したノイズを受信処理部１１５がデータとして受信した場合に発生するものである。したがって、送信診断処理部１１７は、受信処理部１１５が診断結果フレームを受信する際に得られる受信ステータスが診断結果フレームの受信エラーを示すものである場合には、その受信エラーが、診断結果フレームの競合によるものであるのか、ノイズの影響によるものであるのかを識別する必要がある。
【００３１】
そこで、送信診断処理部１１７は、例えば以下の手法により、診断結果フレームの受信エラーが、診断結果フレームの競合によるものであるのか、或いはノイズの影響によるものであるのかを識別する。すなわち、送信診断処理部１１７は、まず、自ノードに割り当てられたダイナミック・スロットが開始されてから次のダイナミック・スロットが開始されるまでのスロット長を検出し、自ノードに割り当てられたダイナミック・スロットのスロット長が、診断結果フレームを送信する場合のダイナミック・スロットのスロット長と同じ長さとなっているかを判定する。診断結果フレームの長さは図７に例示したように予め定められており、ダイナミック・スロットの長さは診断結果フレームが収まる数＋１個分のミニスロットの長さとなるので、診断結果フレームを送信する場合のダイナミック・スロットのスロット長は一定である。送信診断処理部１１７は、この診断結果フレームを送信する場合のダイナミック・スロットのスロット長を記憶しておき、自ノードに割り当てられたダイナミック・スロットのスロット長と、診断結果フレームを送信する場合のダイナミック・スロットのスロット長とを比較して、これらが同じ長さとなっていなければ、自ノードに割り当てられたダイナミック・スロット内で診断結果フレームは送信されておらず、ノイズを受信したものと判定する。
【００３２】
また、短時間の間に複数回のノイズが発生した場合には、自ノードに割り当てられたダイナミック・スロット内で診断結果フレームが送信されていなくても、そのスロット長が診断結果フレームを送信する場合のダイナミック・スロットのスロット長と同じ長さとなることも考えられる。そこで、このような場合には、図９（ａ），（ｂ）に示すように、自ノードに割り当てられたダイナミック・スロット内の複数のタイミング、具体的には、例えばダイナミック・スロット内のミニスロットの境界となるタイミング（本実施形態では１０μｓ）ごとにＦｌｅｘＲａｙバス２０のバス状態をサンプリングして信号成分の有無を判定し、ダイナミック・スロット内のデータが診断結果フレームに相当する長さで連続しているか否かを推定することにより、自ノードに割り当てられたダイナミック・スロット内のデータがノイズであるのか、或いは診断結果フレームであるのかを判定する。
【００３３】
送信診断処理部１１７は、以上の手法により自ノードに割り当てられたダイナミック・スロット内のデータがノイズであるのか、或いは診断結果フレームであるのかを判定することで、診断結果フレームの受信エラーが、診断結果フレームの競合によるものであるのか、或いはノイズの影響によるものであるのかを識別することが可能となる。
【００３４】
送信診断処理部１１７は、以上の送信診断の結果、送信処理部１１４により自ノードに割り当てられたスタティック・スロット内で送信したアプリケーションデータを含むフレームが、他のノードで正常に受信されずに受信エラーが発生したと判定した場合には、その旨の情報を、コントローラ・ホスト・インターフェース部１１１を介してホストＣＰＵ１０１に通知する。
【００３５】
［ノードの動作］
次に、本実施形態の通信ネットワークシステムにおける各ノード１００の動作について説明する。図１０は、コミュニケーション・サイクルごとに、ノード１００のコミュニケーション・コントローラ１０２により実行される一連の処理の流れを示すフローチャートである。
【００３６】
コミュニケーション・サイクルの開始が検出されて図１０のフローが開始されると、ノード１００のコミュニケーション・コントローラ１０２は、まず、ステップＳ１０１において、スタティック・セグメント内のスタティック・スロットを認識し、ステップＳ１０２において、ステップＳ１０１で認識したスタティック・スロットが自ノードに割り当てられたスロットか、或いは他ノードに割り当てられたスロットかを判定する。そして、ステップＳ１０１で認識したスタティック・スロットが自ノードに割り当てられたスロットであれば、コミュニケーション・コントローラ１０２は、ステップＳ１０３において、当該スタティック・スロット内で、ホストＣＰＵ１０１で作成されたアプリケーションデータを含むフレームを、バス・ドライバ１０３からＦｌｅｘＲａｙバス２０上へと送出する処理を行う。一方、ステップＳ１０１で認識したスタティック・スロットが他ノードに割り当てられたスロットであれば、コミュニケーション・コントローラ１０２は、ステップＳ１０４において、当該スタティック・スロット内で他ノードから送信されたフレームを、バス・ドライバ１０３を介して受信する処理を行い、また、ステップＳ１０５において、ステップＳ１０４でのフレーム受信が正常に行われたかどうかの受信診断を行う。
【００３７】
コミュニケーション・コントローラ１０２は、以上のステップＳ１０１〜ステップＳ１０５の処理を、スタティック・セグメントの終了が検出されるまで繰り返し、ステップＳ１０６においてスタティック・セグメントが終了したと判定された段階で、ステップＳ１０７へと処理を移行する。
【００３８】
スタティック・セグメントが終了してステップＳ１０７に進むと、コミュニケーション・コントローラ１０２は、このステップＳ１０７において、スタティック・セグメントで他ノードから送信されたフレームを受信した際の受信診断（ステップＳ１０５の受信診断）の結果として、受信エラーが検出されているか否かを確認する。すなわち、スタティック・セグメントで他ノードから送信されたフレームを全て正常に受信した場合と、何れかの他ノードから送信されたフレームの受信時に受信エラーを検出した場合とで、ダイナミック・セグメントでの処理が異なるため、コミュニケーション・コントローラ１０２は、ステップＳ１０７で受信診断の結果を確認して、受信エラーが検出されているか否かにより、以降の処理を分岐している。
【００３９】
スタティック・セグメントでのフレーム受信の際の受信診断で受信エラーを検出している場合、コミュニケーション・コントローラ１０２は、ステップＳ１０８において、ダイナミック・セグメント内のダイナミック・スロットを認識し、ステップＳ１０９において、ステップＳ１０８で認識したダイナミック・スロットが自ノードに割り当てられたスロットか否かを判定する。そして、ステップＳ１０８で認識したダイナミック・スロットが自ノードに割り当てられたスロットであれば、コミュニケーション・コントローラ１０２は、ステップＳ１１０において、当該ダイナミック・スロット内で他ノードから診断結果フレームが送信されているか否かを確認することで、ステップＳ１０３で自ノードが送信したフレームが他ノードで受信エラーとなったかどうかの送信診断を行う。
【００４０】
また、ステップＳ１０８で認識したダイナミック・スロットが自ノードに割り当てられたスロットでない場合、コミュニケーション・コントローラ１０２は、ステップＳ１１１において、ステップＳ１０８で認識したダイナミック・スロットが、ステップＳ１０５での受信診断で受信エラーを検出したフレームの送信元ノードに割り当てられたスロットか否かを判定する。そして、ステップＳ１０８で認識したダイナミック・スロットが受信エラーを検出したフレームの送信元ノードに割り当てられたスロットであれば、コミュニケーション・コントローラ１０２は、ステップＳ１１２において、当該ダイナミック・スロット内で、受信エラーが検出されたことを示す診断結果フレームを、バス・ドライバ１０３からＦｌｅｘＲａｙバス２０上へと送出する処理を行う。
【００４１】
スタティック・セグメントでのフレーム受信の際の受信診断で受信エラーを検出している場合、コミュニケーション・コントローラ１０２は、以上のステップＳ１０８〜ステップＳ１１２の処理を、ダイナミック・セグメントの終了が検出されるまで繰り返し、ステップＳ１１３においてダイナミック・セグメントが終了したと判定された段階で、一連の処理を終了する。
【００４２】
一方、スタティック・セグメントでのフレーム受信の際の受信診断で受信エラーを検出していない場合には、コミュニケーション・コントローラ１０２は、ステップＳ１１４において、ダイナミック・セグメント内のダイナミック・スロットを認識し、ステップＳ１１５において、ステップＳ１１４で認識したダイナミック・スロットが自ノードに割り当てられたスロットか否かを判定する。そして、ステップＳ１１４で認識したダイナミック・スロットが自ノードに割り当てられたスロットであれば、コミュニケーション・コントローラ１０２は、ステップＳ１１６において、当該ダイナミック・スロット内で他ノードから診断結果フレームが送信されているか否かを確認することで、ステップＳ１０３で自ノードが送信したフレームが他ノードで受信エラーとなったかどうかの送信診断を行う。
【００４３】
スタティック・セグメントでのフレーム受信の際の受信診断で受信エラーを検出していない場合は、コミュニケーション・コントローラ１０２は、以上のステップＳ１１４〜ステップＳ１１６の処理を、ダイナミック・セグメントの終了が検出されるまで繰り返し、ステップＳ１１７においてダイナミック・セグメントが終了したと判定された段階で、一連の処理を終了する。
【００４４】
図１０のステップＳ１０５で実施される受信診断の具体的な処理手順を図１１に示す。ノード１００のコミュニケーション・コントローラ１０２は、受信診断処理を行う場合、図１１に示すように、まずステップＳ２０１において、図１０のステップＳ１０４でのフレーム受信の際の受信ステータス（ValidFrame，SyntaxError，ContentError，Bviolation）を取得する。そして、コミュニケーション・コントローラ１０２は、ステップＳ２０２において、ステップＳ２０１で取得した受信ステータスが、ValidFrame＝１、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０となっているか否かを確認し、受信ステータスが上記のようになっていればステップＳ１０４でのフレーム受信が正常に行われたと判定し（ステップＳ２０３）、受信ステータスが上記以外の場合にはステップＳ１０４でのフレーム受信の際に受信エラーが発生していると判定する（ステップＳ２０４）。
【００４５】
図１０のステップＳ１１０またはステップＳ１１６で実施される送信診断の具体的な処理手順を図１２に示す。また、自ノードに割り当てられたダイナミック・スロット内で診断結果フレームを受信しようとしたときにＦｌｅｘＲａｙバス２０上で実際に生じている現象の具体例（ケース１〜ケース６）と送信診断による判定結果との関係を図１３に示す。
【００４６】
ノード１００のコミュニケーション・コントローラ１０２は、送信診断処理を行う場合、図１２に示すように、まずステップＳ３０１において、自ノードに割り当てられたダイナミック・スロット内で診断結果フレームを受信しようとしたときの受信ステータス（ValidFrame，SyntaxError，ContentError，Bviolation）を取得するとともに、自ノードに割り当てられたダイナミック・スロットのスロット長と、当該ダイナミック・スロット内のミニスロット境界ごとのバス状態のサンプリング結果とを取得する。
【００４７】
次に、コミュニケーション・コントローラ１０２は、ステップＳ３０２において、ステップＳ３０１で取得した受信ステータスが、ValidFrame＝０、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０となっているか否かを確認する。ここで、受信ステータスが上記のようになっていれば、自ノードに割り当てられたダイナミック・スロット内で他ノードからの診断結果フレームが送信されていないことを示しているので、コミュニケーション・コントローラ１０２は、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームは、他ノードにより正常に受信されていると判定する（ステップＳ３０６、図１３のケース１）。
【００４８】
一方、ステップＳ３０１で取得した受信ステータスが、ValidFrame＝０、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０となっていなければ、コミュニケーション・コントローラ１０２は、ステップＳ３０３において、ステップＳ３０１で取得した受信ステータスが、ValidFrame＝１、且つ、SyntaxError＝０、且つ、ContentError＝０、且つ、Bviolation＝０となっているか否かを確認する。ここで、受信ステータスが上記のようになっていれば、自ノードに割り当てられたダイナミック・スロット内で他ノードからの診断結果フレームが正常に受信されたことを示しているので、コミュニケーション・コントローラ１０２は、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームが他ノードの何れかで正常に受信されず、受信エラーが発生したものと判定する（ステップＳ３０７、図１３のケース２）。
【００４９】
ステップＳ３０１で取得した受信ステータスが以上の２つのパターン以外の場合には、コミュニケーション・コントローラ１０２は、次のステップＳ３０４において、ステップＳ３０１で取得したスロット長が診断結果フレームを送信する場合のダイナミック・スロットのスロット長（診断スロット長）と同じ長さとなっているか否かを確認する。ここで、自ノードに割り当てられたダイナミック・スロットのスロット長が診断スロット長と異なる長さであれば、自ノードに割り当てられたダイナミック・スロット内でノイズを受信していることを示しているので、コミュニケーション・コントローラ１０２は、当該ダイナミック・スロット内で他ノードからの診断結果フレームは送信されておらず、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームは、他ノードにより正常に受信されたものと判定する（ステップＳ３０６、図１３のケース３，４）。
【００５０】
ステップＳ３０１で取得したスロット長が診断スロット長と同じ長さとなっている場合には、コミュニケーション・コントローラ１０２は、次のステップＳ３０４において、ステップＳ３０１で取得したバス状態のサンプリング結果が、診断結果フレームのフレーム長に相当する期間に亘って連続してアクティブとなっているか否かを確認する。ここで、バス状態のサンプリング結果が診断結果フレームのフレーム長に相当する期間に亘って連続してアクティブとなっていなければ、自ノードに割り当てられたダイナミック・スロット内で断続的に発生した複数のノイズを受信していることを示しているので、コミュニケーション・コントローラ１０２は、当該ダイナミック・スロット内で他ノードからの診断結果フレームは送信されておらず、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームは、他ノードにより正常に受信されたと判定する（ステップＳ３０６、図１３のケース５）。一方、バス状態のサンプリング結果が診断結果フレームのフレーム長に相当する期間に亘って連続してアクティブとなっていれば、自ノードに割り当てられたダイナミック・スロット内で複数の他ノードからの診断結果フレームが送信され、これら診断結果フレームの競合が生じていることを示しているので、コミュニケーション・コントローラ１０２は、自ノードに割り当てられたスタティック・スロットで送信したアプリケーションデータを含むフレームが他ノードの何れかで正常に受信されず、受信エラーが発生したものと判定する（ステップＳ３０７、図１３のケース６）。
【００５１】
［実施形態の効果］
以上、具体的な例を挙げながら詳細に説明したように、本実施形態の通信ネットワークシステムでは、ネットワーク上の各ノード１００のコミュニケーション・コントローラ１０２が、他ノードに割り当てられたスタティック・スロットでのフレーム受信時に受信エラーを検出した場合に、当該受信エラーとなったフレームの送信元ノードに割り当てられたダイナミック・スロットを用いて、受信エラーが検出されたことを示す診断結果フレームを送信し、また、自ノードに割り当てられたダイナミック・スロットで診断結果フレームを受信したときには、自ノードが送信したフレームに受信エラーが発生したと判定するようにしている。したがって、本実施形態の通信ネットワークシステムでは、ネットワーク上のあるノードでフレームの受信エラーが検出されたときに、その旨の情報を、当該受信エラーとなったフレームの送信元ノードに確実に通知することができ、通信の信頼性を向上させることができる。
【００５２】
また、本実施形態の通信ネットワークシステムでは、受信エラーが発生したことを示す診断結果フレームを、アプリケーションデータを含む通常のＦｌｅｘＲａｙフレームのフォーマットをもとに、この通常のＦｌｅｘＲａｙフレームからアプリケーションデータの部分を除いた構造のフレームとしているので、コミュニケーション・コントローラ１０２の送信処理部１１４のロジックを大きく変更することなく、通常のＦｌｅｘＲａｙフレームの送信と同様の処理で診断結果フレームを送信することが可能となり、また、診断結果フレームのフレーム長を最小限にして、通信負荷の削減を図ることが可能となる。
【００５３】
また、本実施形態の通信ネットワークシステムでは、ネットワーク上の各ノード１００のコミュニケーション・コントローラ１０２が、自ノードに割り当てられたダイナミック・スロットで何らかの信号成分を受信したときに、自ノードに割り当てられたダイナミック・スロットのスロット長が、診断結果フレームを送信する場合のスロット長と同じ長さとなっているか否か、さらには、自ノードに割り当てられたダイナミック・スロット内の複数のタイミングでサンプリングしたバス状態が、診断結果フレームに相当する期間に亘り連続的にアクティブとなっているか否かにより、自ノードに割り当てられたダイナミック・スロットで受信した信号成分が診断結果フレームであるのか、或いはノイズであるのかを識別するようにしているので、ノイズを診断結果フレームであると認識してしまうことによる誤判定を有効に防止することができる。
【００５４】
なお、以上説明した通信ネットワークシステムは本発明の一適用例を例示したものであり、本発明の技術的範囲は、以上の説明で開示した内容に限定されるものではなく、これらの開示から容易に導き得る様々な代替技術も含まれることは勿論である。例えば、上述した通信ネットワークシステムでは、ネットワークトポロジとしてバス型を採用しているが、バス型以外にもスター型やバス型とスター型とのハイブリッドなど、様々なトポロジが採用可能である。また、本発明は、通信プロトコルにＦｌｅｘＲａｙプロトコルを採用した通信ネットワークシステムに限らず、ＦｌｅｘＲａｙのコミュニケーション・サイクルと同様の通信周期で通信を行う他のプロトコルを採用した通信ネットワークシステムに対しても、有効に適用可能である。
【図面の簡単な説明】
【００５５】
【図１】本発明を適用した通信ネットワークシステムの全体構成を示す図である。
【図２】ＦｌｅｘＲａｙプロトコルにおけるデータ転送の仕組みを説明する図である。
【図３】ＦｌｅｘＲａｙプロトコルにおけるフレーム・フォーマットを示す図である。
【図４】本発明を適用した通信ネットワークシステムの設計情報を示す図であり、（ａ）は設計時に定められた通信諸元を示す図、（ｂ）は設計時に定められた各ノードに対するスロットの割り当てを示す図である。
【図５】ネットワークのノードとして接続される各ノードのハード的な内部構成を示す図である。
【図６】各ノードが備えるコミュニケーション・コントローラの機能ブロック図である。
【図７】診断結果フレームのフレーム構造を示す図である。
【図８】フレームを受信した際に得られる受信ステータスの内容を説明する図である。
【図９】ダイナミック・スロット内の複数のタイミングでバス状態をサンプリングする様子を示す図であり、（ａ）は１つのダイナミック・スロット内で複数の診断結果フレームが競合している場合のサンプリング結果を示す図、（ｂ）は１つのダイナミック・スロット内で複数のノイズが断続的に発生している場合のサンプリング結果を示す図である。
【図１０】本発明を適用した通信ネットワークシステムにおいて、コミュニケーション・サイクルごとにノードのコミュニケーション・コントローラにより実行される一連の処理の流れを示すフローチャートである。
【図１１】図１０のステップＳ１０５で実施される受信診断の具体的な処理手順を示すフローチャートである。
【図１２】図１０のステップＳ１１０またはステップＳ１１６で実施される送信診断の具体的な処理手順を示すフローチャートである。
【図１３】自ノードに割り当てられたダイナミック・スロット内で診断結果フレームを受信しようとしたときにＦｌｅｘＲａｙバス上で実際に生じている現象の具体例と送信診断による判定結果との関係を示す図である。
【符号の説明】
【００５６】
１〜１６  ノード
２０  ＦｌｅｘＲａｙバス
１００  ノード
１０１  ホストＣＰＵ
１０２  コミュニケーション・コントローラ
１０３  バス・ドライバ
１１４  送信処理部
１１５  受信処理部
１１６  受信診断処理部
１１７  送信診断処理部
【図１】
2008022071.tif 000003
【図２】
2008022071.tif 000004
【図３】
2008022071.tif 000005
【図４】
2008022071.tif 000006
【図５】
2008022071.tif 000007
【図６】
2008022071.tif 000008
【図７】
2008022071.tif 000009
【図８】
2008022071.tif 000010
【図９】
2008022071.tif 000011
【図１０】
2008022071.tif 000012
【図１１】
2008022071.tif 000013
【図１２】
2008022071.tif 000014
【図１３】
2008022071.tif 000015