(57)【要約】【課題】通信の安全性を改善すること。【解決手段】第１通信ノードは、第２通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１誤り検出符号を計算する第１誤り検出符号演算部と、第２通信ノードへ、第１誤り検出符号と、データとを含むデータフレームを送信する制御を行う送信制御部とを有する。第２通信ノードは、第１通信ノードからのデータフレームを受信する通信モジュールと、該データフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２誤り検出符号を計算する第２の誤り検出符号演算部と、該第２誤り検出符号と、データフレームに含まれる第１誤り検出符号とが一致するか否かを判定する誤り検出部と、該誤り検出部による判定結果に基づいて、データフレームに含まれるデータに応じた処理を行う信号処理部とを有する。【選択図】図６
2013207600.tif 000002
【特許請求の範囲】
【請求項１】
通信システムに含まれる通信ノードであって、
他の通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算する第１の誤り検出符号演算部と、
前記他の通信ノードへ、前記第１の誤り検出符号演算部により計算された第１の誤り検出符号と、前記データとを含むデータフレームを送信する制御を行う送信制御部と
を有する、通信ノード。
【請求項２】
他の通信ノードからのデータフレームを受信する通信モジュールと、
該通信モジュールにより受信されたデータフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２の誤り検出符号を計算する第２の誤り検出符号演算部と、
該第２の誤り検出符号演算部により計算された第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定する誤り検出部と、
該誤り検出部による判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う信号処理部と
を有する、請求項１に記載の通信ノード。
【請求項３】
前記第２の誤り検出符号演算部により計算された第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致しない場合に、前記第２の誤り検出符号演算部は、前記カウンタ値を順次変更し、該カウンタ値をシードとして、第２の誤り検出符号を計算し、
前記誤り検出部は、該第２の誤り検出符号演算部により計算された第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定する、請求項２に記載の通信ノード。
【請求項４】
前記誤り検出部は、予め設定されるカウンタ値の範囲に含まれる全カウンタ値について計算された第２の誤り検出符号の全てが、前記データフレームに含まれる第１の誤り検出符号と一致しない場合に、前記通信モジュールにより受信されたデータフレームに含まれるデータに誤りが有ると判定する、請求項３に記載の通信ノード。
【請求項５】
予め設定されるカウンタ値の範囲に含まれる全カウンタ値について計算された第２の誤り検出符号に、前記データフレームに含まれる第１の誤り検出符号と一致するものがある場合に、前記信号処理部は、前記誤り検出部による判定結果に基づいて、前記データフレームの受信順序に誤りがあると判定する、請求項３又は４に記載の通信ノード。
【請求項６】
前記第２の誤り検出符号演算部は、前記通信モジュールにより受信されたデータフレームが初回に受信されたデータフレームである場合に、前記カウンタ値を順次変更し、該カウンタ値をシードとして、第２の誤り検出符号を計算し、
前記誤り検出部は、該第２の誤り検出符号演算部により計算された第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定する、請求項２ないし５のいずれか１項に記載の通信ノード。
【請求項７】
前記誤り検出部は、予め設定されるカウンタ値の範囲に含まれる全カウンタ値について計算された第２の誤り検出符号の全てが、前記データフレームに含まれる第１の誤り検出符号と一致しない場合に、前記通信モジュールにより受信されたデータフレームに含まれるデータに誤りが有ると判定する、請求項６に記載の通信ノード。
【請求項８】
通信システムに含まれる通信ノードであって、
他の通信ノードからのデータフレームを受信する通信モジュールと、
該通信モジュールにより受信されたデータフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、誤り検出符号を計算する誤り検出符号演算部と、
該誤り検出符号演算部により計算された誤り検出符号と、前記データフレームに含まれる誤り検出符号とが一致するか否かを判定する誤り検出部と、
該誤り検出部による判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う信号処理部と
を有する、通信ノード。
【請求項９】
複数の通信ノードを有する通信システムであって、
第１の通信ノードは、
第２の通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算する第１の誤り検出符号演算部と、
前記第２の通信ノードへ、前記第１の誤り検出符号演算部により計算された第１の誤り検出符号と、前記データとを含むデータフレームを送信する制御を行う送信制御部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信する通信モジュールと、
該通信モジュールにより受信されたデータフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２の誤り検出符号を計算する第２の誤り検出符号演算部と、
該第２の誤り検出符号演算部により計算された第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定する誤り検出部と、
該誤り検出部による判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う信号処理部と
を有する、通信システム。
【請求項１０】
複数の通信ノードを有する通信システムにおける通信方法であって、
第１の通信ノードは、
第２の通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算し、
前記第２の通信ノードへ、前記第１の誤り検出符号と、前記データとを含むデータフレームを送信する制御を行い、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信し、
該データフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２の誤り検出符号を計算し、
該第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定し、
該判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば、車両に搭載される通信システムに関する。
【背景技術】
【０００２】
車両には、該車両内の様々な制御を行うために車載ネットワークが構築されることが多い。車載ネットワークは、ＬＡＮに、多くの電子制御ユニット（ＥＣＵ：  Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）、センサ、アクチュエータ等が接続されることにより実現される。以下、車載ネットワークに接続される、電子制御ユニット、センサ、アクチュエータ等を通信ノードと呼ぶ。通信ノードは、車両内の様々な位置に設置される。通信ノード間は、通信線や電線により接続される。
【０００３】
通信ノードが、受信したデータが正しいか否かを確認する方法として、オートザー（ＡＵＴＯＳＡＲ：  Ａｕｔｏｍｏｔｉｖｅ  Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ａｒｃｈｉｔｅｃｔｕｒｅ）で検討されているＥ２Ｅプロトコルで提案されている方法がある。Ｅ２Ｅプロトコルで提案されている方法では、送信側は、データと同時に、ＣＲＣと、カウンタ値とを送信する。受信側は、ＣＲＣと、カウンタ値に基づいて、データの確からしさを確認する。
【０００４】
ＣＲＣ値に基づいて通信バスの短絡故障を判定することにより、通信バスが短絡故障しても、外部装置の誤動作を抑えることができる通信装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−１３００９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したように、受信したデータが正しいか否かを確認する方法として、Ｅ２Ｅプロトコルで提案されている方法がある。
【０００７】
ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）に、Ｅ２Ｅプロトコルで提案されている方法を適用する場合について説明する。
【０００８】
ＣＡＮには、「データフレーム」、「リモートフレーム」、「エラーフレーム」、「オーバーロードフレーム」と呼ばれる４種類の異なる情報を表すフレームが定義されている。ＣＡＮでは、データエリアのサイズは、８バイト以下に規定されている。
【０００９】
図１は、ＣＡＮに、Ｅ２Ｅプロトコルで提案されている方法を適用する場合のデータフレームの一例を示す。データフレームには、データフィールド、アービトレーション、コントロール、誤り検出符号、ＡＣＫフィールドが含まれる。図１では、アービトレーション、コントロール、ＡＣＫフィールドは省略される。
【００１０】
図１には、データフィールドと、誤り検出符号との和が８バイトである例が示される。ＣＲＣと、カウンタ値のサイズの和が２バイトである場合、８バイトのデータフィールドのうち、２バイトがＣＲＣと、カウンタ値により占有される。つまり、８バイトのうち、データの確からしさを確認するために２バイトが占有される。送信するデータに対して、データの確からしさを確認するためのデータの割合が多く、通信負荷が大きい。
【００１１】
通信負荷が大きいため、ＣＡＮに、Ｅ２Ｅプロトコルで提案されている方法を適用するには、ネットワーク全体のバス負荷を増大させなければならないかも知れない。さらに、データラインを増設することを検討しなければならないかもしれない。また、データレイアウトを見直さなければならないかも知れない。
【００１２】
本発明は、上述の点に鑑みてなされたものであり、通信の安全性を改善することを目的とする。
【課題を解決するための手段】
【００１３】
開示の一実施例の通信ノードは、
通信システムに含まれる通信ノードであって、
他の通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算する第１の誤り検出符号演算部と、
前記他の通信ノードへ、前記第１の誤り検出符号演算部により計算された第１の誤り検出符号と、前記データとを含むデータフレームを送信する制御を行う送信制御部と
を有する。
【００１４】
開示の一実施例の通信ノードは、
通信システムに含まれる通信ノードであって、
他の通信ノードからのデータフレームを受信する通信モジュールと、
該通信モジュールにより受信されたデータフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、誤り検出符号を計算する誤り検出符号演算部と、
該誤り検出符号演算部により計算された誤り検出符号と、前記データフレームに含まれる誤り検出符号とが一致するか否かを判定する誤り検出部と、
該誤り検出部による判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う信号処理部と
を有する。
【００１５】
開示の一実施例の通信システムは、
複数の通信ノードを有する通信システムであって、
第１の通信ノードは、
第２の通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算する第１の誤り検出符号演算部と、
前記第２の通信ノードへ、前記第１の誤り検出符号演算部により計算された第１の誤り検出符号と、前記データとを含むデータフレームを送信する制御を行う送信制御部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信する通信モジュールと、
該通信モジュールにより受信されたデータフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２の誤り検出符号を計算する第２の誤り検出符号演算部と、
該第２の誤り検出符号演算部により計算された第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定する誤り検出部と、
該誤り検出部による判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う信号処理部と
を有する。
【００１６】
開示の一実施例の通信方法は、
複数の通信ノードを有する通信システムにおける通信方法であって、
第１の通信ノードは、
第２の通信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算し、
前記第２の通信ノードへ、前記第１の誤り検出符号と、前記データとを含むデータフレームを送信する制御を行い、
前記第２の通信ノードは、
前記第１の通信ノードからのデータフレームを受信し、
該データフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２の誤り検出符号を計算し、
該第２の誤り検出符号と、前記データフレームに含まれる第１の誤り検出符号とが一致するか否かを判定し、
該判定結果に基づいて、前記データフレームに含まれるデータに応じた処理を行う。
【発明の効果】
【００１７】
開示の実施例によれば、通信の安全性を改善することができる。
【図面の簡単な説明】
【００１８】
【図１】データフレームの一例を示す図である。
【図２】通信システムの一実施例を示す図である。
【図３】通信システムの一実施例を示す図である。
【図４】データフレームの一実施例を示す図である。
【図５】通信ノードの一実施例を示す図である。
【図６】通信ノードの一実施例を示す機能ブロック図である。
【図７】通信ノードの動作の一実施例を示すフローチャートである。
【図８】通信ノードの動作の一実施例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００２０】
＜実施例＞
＜通信システム＞
図２は、通信システムの一実施例を示す。
【００２１】
通信システムは、複数の通信ノード１００ｎ（ｎは、ｎ＞０の整数）を有する。図２には、一例としてｎ＝４の場合について示される。ｎの値は、通信システムに含まれる通信ノードの数に応じて適宜変更可能である。また、通信システムに、各通信ノード１００ｎに接続される他の通信ノード（図示無し）が１又は複数含まれてもよい。他の通信ノードが複数含まれる場合、該他の通信ノードは、複数の通信ノード１００ｎのうち、最も近い位置に配置された通信ノードと接続されるのが好ましい。
【００２２】
通信ノード１００ｎは、電子制御ユニット（ＥＣＵ：  Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）等により実現されてもよい。他の通信ノードは、電子制御ユニットにより実現されてもよいし、センサ、アクチュエータ等により実現されてもよい。
【００２３】
具体的には、データバス１５０に、複数の通信ノード１００ｎが接続されることにより、車載ネットワークが構成される。該車載ネットワークには、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）が含まれる。ＣＡＮは、ＩＳＯ１５１１８によりハードウェア仕様と、ソフトウェア仕様が規定されている。該車載ネットワークには、ＬＩＮ（Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）が含まれてもよい。また、該車載ネットワークには、ＦｌｅｘＲａｙ（登録商標）に従って通信を行うものが含まれてもよい。
【００２４】
通信ノード１００ｎは、データバス１５０に接続される。通信ノード１００ｎは、例えば車両等の移動体に搭載される。通信システムの一実施例では、車両に搭載される。
【００２５】
図３は、車両に搭載される通信システムの一実施例を示す。図３には、車両に、図２に示される通信システムが搭載される例が示される。
【００２６】
通信システムの一実施例では、通信ノード１００ｎは、エンジン、駆動系、トランスミッション、ボディ等に搭載される。エンジン、駆動系、トランスミッション、ボディに関わらず、通信ノード１００ｎの搭載位置は適宜変更可能である。
【００２７】
図３に示される例では、通信ノード１００１は、ブレーキを制御するブレーキ電子制御ユニットであってもよい。通信ノード１００２は、エンジンを制御するエンジン電子制御ユニットであってもよい。通信ノード１００３は、メータを制御するメータ電子制御ユニットであってもよい。通信ノード１００４は、ドアの開閉を制御するドア電子制御ユニットであってもよい。ブレーキを制御する機能を有する電子制御ユニット、エンジンを制御する機能を有する電子制御ユニット、メータを制御する機能を有する電子制御ユニット、ドアの開閉を制御する機能を有する電子制御ユニット以外の制御ユニットが含まれてもよい。
【００２８】
通信システムの一実施例では、誤り検出符号を計算する際に、シード（Ｓｅｅｄ）と、送信するデータ（以下、「データ」という）とを利用する。具体的には、シードとして、カウンタのカウンタ値を利用する。カウンタのカウンタ値は、データの送信順序を表すものであってもよい。データの送信順序を表すものである場合、カウンタ値はデータ送信に伴って変化する。例えば、カウンタのカウンタ値は、データ送信に伴って変化する。通信システムの一実施例では、データ送信に伴って、カウンタ値が１増加する場合について説明する。具体的には、１フレーム送信される度に、カウンタ値が１増加する。カウンタ値の変化分については適宜設定可能である。
【００２９】
誤り検出符号として、巡回符号（ＣＲＣ：  Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）が利用されてもよいし、チェックサムが利用されてもよいし、ハッシュ関数が利用されてもよい。誤り検出符号は、データに符号誤り（エラー）が発生した場合に、該符号誤りを検出できるものであれば、巡回符号、チェックサム、ハッシュ関数に限られない。誤り検出符号等を用いることにより、通信システムの信頼性を確保できる。データに符号誤り（エラー）が発生した場合に、該符号誤りを検出し、誤り訂正できるものが利用されてもよい。
【００３０】
通信システムの一実施例では、誤り検出符号として、巡回符号が利用される場合について説明する。
【００３１】
データを送信する通信ノード（以下、「送信ノード」という）は、カウンタ値と、データとを利用して誤り検出符号を計算する。つまり、誤り検出符号をデータの送信順序を表すカウンタ値と、データとにより演算する。送信ノードは、該データと、該誤り検出符号とを含むデータフレームを送信する。
【００３２】
図４は、送信ノードにより送信されるデータフレームの一実施例を示す。データフレームには、データフィールド、アービトレーション、コントロール、誤り検出符号、ＡＣＫフィールドが含まれる。図４では、アービトレーション、コントロール、ＡＣＫフィールドは省略される。
【００３３】
図４に示されるデータフレームの一実施例では、データフィールドが７バイトであり、誤り検出符号が１バイトである。図１に示されるデータフレームと比較して、データフレームにカウンタ値が含まれていない。つまり、図１に示されるデータフレームと比較して、データフレームに含めることができるデータ量を増加させることができる。このため、通信負荷を低減できる。データフレームに含めることができるデータ量に対して、該データの確からしさを確認するための誤り検出符号の割合を減少させることができるためである。
【００３４】
データを受信する通信ノード（以下、「受信ノード」という）は、送信ノードからのデータフレームに含まれる誤り検出符号に基づいて、受信したデータフレームに含まれるデータが正しいか否か、該データの受信順序が正しいか否かを確認できる。
【００３５】
受信ノードは、誤り検出符号を計算する際に、シードと、受信したデータ（以下、「データ」という）とを利用する。具体的には、シードとして、カウンタのカウンタ値を利用する。カウンタのカウンタ値は、データの受信順序を表すものであってもよい。データの受信順序を表すものである場合、カウンタ値はデータの受信に伴って変化する。例えば、カウンタのカウンタ値は、データの受信に伴って変化する。通信システムの一実施例では、データの受信に伴って、カウンタ値が１増加する場合について説明する。具体的には、１フレーム受信される度に、カウンタ値が１増加する。カウンタ値の変化分については適宜設定可能である。データが正しいか否かを確認することにより、データ化けしているか否かを確認することができる。
【００３６】
誤り検出符号として、巡回符号が利用される場合、送信ノードでは、１バイトを巡回符号としてもよい。例えば、データフィールドと、誤り検出符号のために、８バイトが用意されている場合に、該８バイトのうち１バイトを巡回符号とするようにしてもよい。受信ノードでは、該巡回符号を利用して、受信したデータが正しいか否か、受信したデータの受信順序が正しいか否かを確認できる。送信ノードからのデータ異常及び送信順序の異常の両方又はいずれか一方が生じていた場合には、送信ノードからのデータに含まれる巡回符号の値と、送信ノードからのデータと受信順序に基づいて演算された巡回符号の値とは一致しない。このため、受信ノードは、巡回符号をチェックすることにより、送信ノードからのデータのデータ異常及び受信順序の異常の両方又はいずれか一方を検出できる。つまり、送信ノードにより、データフレームにカウンタ値を含めなくても、受信ノードに、送信ノードからのデータフレームに含まれるデータの順序が正しいか否かを確認させることができる。つまり、受信したデータフレームに含まれるデータが正しいか否か、該データの順序が正しいか否かを確認するためのデータ量を減少させることができる。従って、カウンタ値を格納するために用いていたフィールドをデータ送信に用いることができるため通信効率を向上させることができる。
【００３７】
受信ノードに、受信したデータが正しいか否か、該データの順序が正しいか否かを確認させることができるため、通信システムの機能の安全上、高いＡＳＩＬ（Ａｕｔｏｍｏｔｉｖｅ  Ｓａｆｅｔｙ  Ｉｎｔｅｇｒｉｔｙ  Ｌｅｖｅｌ）での通信の安全性を確保することが可能となる。
【００３８】
全てのシステムは、そのリスクに応じて、複数の安全尺度にクラス分けされる。この尺度は、ＩＳＯ  ＷＤ２６２６２では、ＡＳＩＬと呼ばれる。システムには、ＡＳＩＬに応じて、リスクの発生する可能性を低減するために、様々な手法の導入が要求される。送信側では、カウンタ値と、データとを利用して巡回符号を計算し、該データに該巡回符号を付加したデータフレームを送信する。また、受信側では、巡回符号に基づいて、誤り検出を行う。以上の手法を導入することにより、受信側では、受信したデータが正しいか否か、該データの受信順序が正しいか否かを確認できる。
【００３９】
通信ノード１００１、１００２、１００３、及び１００４は、ＡＳＫ方式により変調されたデータを送受信してよいし、ＯＦＤＭ方式により変調されたデータを送受信してもよい。他の通信方式により変調されたデータが送受信されてもよい。ＡＳＫ方式により変調されたデータが送受信されるか、ＯＦＤＭ方式により変調されたデータが送受信されるかは、通信ノード１００ｎが搭載される位置に応じて設定されてもよい。
【００４０】
＜通信ノード１００ｎ＞
通信ノード１００ｎは、当該通信ノード１００ｎに接続されている他の通信ノードとの間でデータを送受信する。
【００４１】
通信ノード１００ｎは、データと、カウンタ値とを利用して、誤り検出符号を計算する。通信ノード１００ｎは、該データと、該誤り検出符号とを含むデータフレームを作成する。通信ノード１００ｎは、データフレームを送信する。
【００４２】
また、通信ノード１００ｎは、当該通信ノード１００ｎに接続されている他の通信ノードからのデータフレームを受信する。通信ノード１００ｎは、他の通信ノードからのデータフレームに基づいて、誤り検出を行う。
【００４３】
通信ノード１００ｎは、誤り検出の結果、他の通信ノードからのデータフレームに含まれるデータに誤りが検出されなかった場合には、該データに従って処理を行うようにしてもよい。誤りが検出されなかった場合には、受信したデータフレームに含まれるデータが正しいとともに、送信順序も正しいと判定できるためである。
【００４４】
一方、通信ノード１００ｎは、誤り検出の結果、他の通信ノードからの送信データに誤りが検出された場合には、該送信データを破棄するようにしてもよいし、再送要求を行うようにしてもよい。
【００４５】
図５は、通信ノード１００ｎの一実施例を示す。図５には、主にハードウェア構成が示される。
【００４６】
通信ノード１００ｎは、マイクロプロセッサ（ＭＰＵ：  Ｍｉｃｒｏ−Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ)１０２を有する。ＭＰＵ１０２は、通信ノード１００ｎ全体の制御を行う。
【００４７】
通信ノード１００ｎは、通信モジュール１０４を有する。通信モジュール１０４は、他の通信ノードの通信モジュール１０４と、通信を行う。例えば、所定の通信プロトコルに従って通信を行う。通信モジュール１０４は、ＡＳＫ方式により変調を行うようにしてもよいし、ＯＦＤＭ方式により変調を行うようにしてもよい。また、通信モジュール１０４は、他の通信方式により変調を行うようにしてもよい。また、通信モジュール１０４はＡＳＫ方式により変調処理された信号の復調を行うようにしてもよいし、ＯＦＤＭ方式により変調処理された信号の復調を行うようにしてもよい。また、通信モジュール１０４は、他の通信方式により変調処理された信号の復調を行うようにしてもよい。
【００４８】
通信ノード１００ｎは、記憶部１０６を有する。記憶部１０６には、ＭＰＵ１０２に、通信ノード１００ｎとして機能させるためのプログラムが格納される。
【００４９】
ＭＰＵ１０２と、通信モジュール１０４と、記憶部１０６との間は、バス５０により互いに接続される。
【００５０】
＜通信ノード１００ｎの機能＞
図６は、通信ノード１００ｎの機能を示す。図６には、主に、ＭＰＵ１０２により実行される機能が示される。つまり、記憶部１０６に格納されたソフトウェア（プログラム）に従って、ＭＰＵ１０２が機能することにより、図６に示される機能が実行される。また、ＭＰＵ１０２に格納されたソフトウェア（ファームウェア）に従って、ＭＰＵ１０２が機能することにより、図６に示される機能が実行されるようにしてもよい。
【００５１】
ＭＰＵ１０２は、誤り検出符号演算部１０２２と、カウンタ１０２４と、送信制御部１０２６と、誤り検出部１０２８と、信号処理部１０３０として機能する。
【００５２】
以下、データフレームを送信する場合と、データフレームを受信する場合に分けて説明する。
【００５３】
通信ノード１００ｎが、データフレームを送信する機能と、データフレームを受信する機能の両方の機能を有していてもよい。また、通信ノード１００ｎが、データフレームを送信する機能、及びデータフレームを受信する機能のいずれか一方の機能を有してもよい。つまり、通信ノード１００ｎが、データフレームを送信する機能を有してもよい。また、通信ノード１００ｎがデータフレームを受信する機能を有してもよい。
【００５４】
＜データフレームを送信する場合＞
誤り検出符号演算部１０２２には、データが入力される。誤り検出符号演算部１０２２は、カウンタ１０２４から、送信順序を表すカウンタ値を取得し、該カウンタ値と、データとに基づいて、誤り検出符号を演算する。誤り検出符号演算部１０２２は、送信制御部１０２６へ、誤り検出符号（以下、「第１の誤り検出符号」という）を入力する。具体的には、誤り検出符号演算部１０２２は、カウンタ値をシード値として、該シード値と、予め設定される多項式に基づいて、巡回符号を算出する。
【００５５】
送信制御部１０２６は、誤り検出符号演算部１０２２と接続される。送信制御部１０２６には、データが入力される。送信制御部１０２６は、データと、誤り検出符号演算部１０２２からの第１の誤り検出符号とを含むデータフレームを作成する。該第１の誤り検出符号は、該データに基づいて演算されたものである。送信制御部１０２６は、通信モジュール１０４から、データフレームを送信する制御を行う。データフレームは、送信制御部１０２６による制御に従って、通信モジュール１０４から送信される。
【００５６】
＜データフレームを受信する場合＞
誤り検出符号演算部１０２２には、通信モジュール１０４から、他の通信ノード１００ｎからのデータフレームが入力される。誤り検出符号演算部１０２２は、カウンタ１０２４から受信順序を表すカウンタ値を取得し、該カウンタ値と、データフレームに含まれるデータとに基づいて、誤り検出符号を演算する。具体的には、誤り検出符号演算部１０２２は、カウンタ値をシード値として、該シード値と、予め設定される多項式に基づいて、誤り検出符号を算出する。誤り検出符号演算部１０２２は、誤り検出部１０２８へ、誤り検出符号（以下、「第２の誤り検出符号」という）を入力する。
【００５７】
カウンタ１０２４は、誤り検出符号演算部１０２２と接続される。カウンタ１０２４は、データフレームをカウントする。具体的には、他の通信ノードへデータフレームを送信する際に、カウンタ値を１増加させる。他の通信ノードへのデータフレーム毎に、カウンタ値が用意される。また、他の通信ノード１００ｎからデータフレームを受信した際に、カウンタ値を１増加させる。通信ノード１００ｎからのデータフレーム毎に、カウンタ値が用意される。また、カウンタ値が所定の値まで増加した場合には、リセットするようにしてもよい。つまり、カウンタ値の範囲が予め設定される。カウンタ値の範囲が予め設定されることにより、カウンタ値が無限大に増加することを防止できる。
【００５８】
通信システムの一実施例では、カウンタ値が０から１５まで増加し、１６となる際に０にリセットされる場合について説明する。どの値でリセットされるかは適宜設定可能である。カウンタ１０２４は、誤り検出符号演算部１０２２からのカウンタ値の要求に応じて、誤り検出符号演算部１０２２へ、カウンタ値を入力する。誤り検出符号演算部１０２２は、データフレームの送信の際、受信の際にカウンタ値を要求する。
【００５９】
誤り検出部１０２８は、通信モジュール１０４と、誤り検出符号演算部１０２２と接続される。誤り検出部１０２８には、通信モジュール１０４から、他の通信ノードからのデータフレームが入力される。誤り検出部１０２８は、通信モジュール１０４からのデータフレームに含まれる第１の誤り検出符号と、誤り検出符号演算部１０２２からの第２の誤り検出符号とが等しいか否か、換言すれば一致するか否かを判定する。
【００６０】
誤り検出部１０２８は、通信モジュール１０４からの送信データに含まれる第１の誤り検出符号と、誤り検出符号演算部１０２２からの第２の誤り検出符号とが等しい場合には、信号処理部１０３０に誤りが検出されなかったことを通知する。
【００６１】
一方、誤り検出部１０２８は、通信モジュール１０４からのデータに含まれる第１の誤り検出符号と、誤り検出符号演算部１０２２からの第２の誤り検出符号の演算結果とが等しくない場合には、誤り検出符号演算部１０２２へ、誤りが検出されたことを通知する。
【００６２】
誤り検出符号演算部１０２２は、誤り検出部１０２８から誤りが検出されたことが通知された場合、前回のカウンタ値とは異なるカウンタ値と、データフレームに含まれるデータとに基づいて、第２の誤り検出符号を演算する。誤り検出符号演算部１０２２は、誤り検出部１０２８へ、第２の誤り検出符号の演算結果を入力する。
【００６３】
誤り検出部１０２８は、再度、通信モジュール１０４からのデータフレームに含まれる第１の誤り検出符号と、誤り検出符号演算部１０２２からの第２の誤り検出符号とが等しいか否かを判定する。
【００６４】
誤り検出部１０２８は、通信モジュール１０４からのデータフレームに含まれる第１の誤り検出符号と、誤り検出符号演算部１０２２からの第２の誤り検出符号とが等しい場合には、信号処理部１０３０に誤りが検出されなかったことを通知する。この場合、受信したデータの順序が誤っていたと判定される。
【００６５】
一方、誤り検出部１０２８は、通信モジュール１０４からのデータフレームに含まれる第１の誤り検出符号と、誤り検出符号演算部１０２２からの第２の誤り検出符号とが等しくない場合には、誤り検出符号演算部１０２２へ、誤りが検出されたことを通知する。誤り検出符号演算部１０２２は、誤り検出部１０２８から誤りが検出されたことが通知された場合、再度同様の処理を行う。予め設定されるカウンタ値の範囲に含まれる全カウンタ値について計算された第２の誤り検出符号の全てが、第１の誤り検出符号と等しくない場合には、データに誤りがあると判定される。この場合、誤り検出部１０２８は、信号処理部１０３０へ、データに誤りがあることを通知する。
【００６６】
信号処理部１０３０は、通信モジュール１０４と、誤り検出部１０２８と接続される。信号処理部１０３０には、通信モジュール１０４から、他の通信ノードからのデータフレームが入力される。信号処理部１０３０は、誤り検出部１０２８から誤りが検出されなかったことを通知された場合には、通信モジュール１０４からのデータフレームに含まれるデータに従って処理する。
【００６７】
一方、信号処理部１０３０は、誤り検出部１０２８から誤りが検出されたことを通知された場合には、通信モジュール１０４からのデータフレームを破棄するようにしてもよいし、該データフレームを送信した第２の通信ノードに対して、再送を要求するようにしてもよい。
【００６８】
＜通信ノード１００ｎの動作（その１）＞
図７は、通信ノード１００ｎの動作の一実施例を示す。
【００６９】
図７には、通信ノード１００ｎにより、データフレームが送信される処理が示される。
【００７０】
ステップＳ７０２では、通信ノード１００ｎに、送信するデータが発生する。
【００７１】
ステップＳ７０４では、カウンタ１０２４は、送信順序を表すカウンタ値を増加させる。例えば、カウンタ１０２４は、カウンタ値を１増加させる。該１は一例であり、適宜設定変更可能である。但し、送信ノードのカウンタにおける増加量と、該送信ノードからのデータフレームを受信する受信ノードのカウンタにおける増加量とは等しい。
【００７２】
ステップＳ７０６では、誤り検出符号演算部１０２２は、ステップＳ７０２において発生したデータと、ステップＳ７０４において値を増加させたカウンタ値とに基づいて、誤り検出符号を演算する。具体的には、誤り検出符号演算部１０２２は、カウンタ値をシードとして、予め設定される多項式に基づいて、誤り検出符号を算出する。送信ノードの誤り検出符号演算部１０２２により利用される多項式と、該送信ノードからの送信データを受信する受信ノードの誤り検出符号演算部１０２２により利用される多項式とは等しい。
【００７３】
ステップＳ７０８では、送信制御部１０２６は、データと、ステップ７０６による演算により求められた誤り検出符号とを含むデータフレームを作成する。送信制御部１０２６は、データに、誤り検出符号を付加することにより、図４に示されるデータフレームを作成する。図４に示されるデータフレームでは、データは、データ１−データ７により表される。
【００７４】
ステップＳ７１０では、送信制御部１０２６は、ステップＳ７０８により作成されたデータフレームを送信する。送信制御部１０２６による制御により、通信モジュール１０４から他の通信ノードへ、データフレームが送信される。
【００７５】
＜通信ノード１００ｎの動作（その２）＞
図８は、通信ノード１００ｎの動作の一実施例を示す。
【００７６】
図８には、通信ノード１００ｎにより、他の通信ノードからのデータフレームが受信される処理が示される。
【００７７】
ステップＳ８０２では、他の通信ノード１００からのデータフレームを受信する。
【００７８】
ステップＳ８０４では、誤り検出符号演算部１０２２は、ステップＳ８０２により受信されたデータフレームが初回に受信されたものであるか否かを判定する。例えば、誤り検出符号演算部１０２２は、イグニッションがオンにされた後にデータフレームが最初に受信されたものであるか否かを判定する。
【００７９】
ステップＳ８０６では、データフレームが初回に受信されたものであると判定された場合、誤り検出符号演算部１０２２は、シード値を初期値に設定する。カウンタに前回の値が存在しないためである。例えば、誤り検出符号演算部１０２２は、シード値を零（初期値）に設定する。データフレームが初回に受信されたものである場合に、シード値を初期値に設定することにより、カウンタ値が不明である場合にも処理できる。
【００８０】
ステップＳ８０８では、誤り検出符号演算部１０２２は、データフレームに含まれるデータと、シード値とに基づいて、第２の誤り検出符号を演算する。具体的には、誤り検出符号演算部１０２２は、シード値と、予め設定される多項式に基づいて、巡回符号を算出する。
【００８１】
ステップＳ８１０では、誤り検出符号演算部１０２２は、シード値を増加させる。例えば、誤り検出符号演算部１０２２は、シード値を１増加させる。該１は一例であり、適宜変更可能である。但し、送信ノードの誤り検出符号演算部１０２２における増加量と、該送信ノードからのデータフレームを受信する受信ノードの誤り検出符号演算部１０２２における増加量とは等しい。
【００８２】
ステップＳ８１２では、誤り検出符号演算部１０２２は、ステップＳ８１０により増加させたシード値が１６より大きいか否かを判定する。シード値が１６より大きい場合には、リセットされるためである。
【００８３】
ステップＳ８１４では、ステップＳ８１２によりシード値が１６以下であると判定された場合、データフレームに含まれる第１の誤り検出符号と、ステップＳ８０８による演算により求められた第２の誤り検出符号とが一致するか否かが判定される。
【００８４】
ステップＳ８１６では、ステップＳ８１２によりシード値が１６より大きいと判定された場合、誤り検出部１０２８は、データフレームに含まれるデータに誤りが有ると判定する。この場合、信号処理部１０３０は、データフレームを破棄するようにしてもよいし、他のノードへ、再送要求を行うようにしてもよい。再送要求を行う場合、次回のデータフレームの受信の際にも、初回受信と同様のシーケンスが実行される。
【００８５】
ステップＳ８１８では、ステップＳ８１４によりデータフレームに含まれる第１の誤り検出符号と、ステップＳ８０８による演算により求められた第２の誤り検出符号とが一致すると判定された場合、信号処理部１０３０は、データフレームが初回に受信されたものであるか否かを判定する。
【００８６】
ステップＳ８２０では、ステップＳ８１８によりデータフレームが初回に受信されたものであると判定された場合、信号処理部１０３０は、データフレームに含まれるデータに基づいて処理を行う。
【００８７】
ステップＳ８２２では、誤り検出符号演算部１０２２は、次回のデータフレームの受信に備えるために、カウンタ値として、シード値を１減少させ（シード値−１）、カウンタ１０２４に設定する。ステップＳ８２２による処理の実行後、ステップＳ８０２に戻る。次回の受信以降、前回サーチしたカウンタ値を元にして、処理が実行される。具体的には、受信毎にカウンタがインクリメントされる。
【００８８】
一方、ステップＳ８１４により、データフレームに含まれる第１の誤り検出符号と、ステップＳ８０８による演算により求められた第２の誤り検出符号とが一致しないと判定された場合、ステップＳ８０８に戻る。ステップＳ８０８に戻ることにより、ステップＳ８１０により増加させたシード値を用いて、第２の誤り検出符号が演算され、同様の処理が行われる。
【００８９】
ステップＳ８２４では、ステップＳ８１８によりデータフレームが初回に受信されたものでないと判定された場合、誤り検出符号演算部１０２２は、次回のデータフレームの受信に備えるために、カウンタ値を１減少させ（シード値−１）、カウンタ１０２４に設定する。
【００９０】
ステップＳ８２６では、信号処理部１０３０は、データに順序誤りがあると判定する。例えば、信号処理部１０３０は、カウンタ異常及び受信順序異常の両方又はいずれか一方であると判定する。ステップＳ８２６による処理の実行後、ステップＳ８０２に戻る。
【００９１】
ステップＳ８２８では、ステップＳ８０４によりデータフレームが初回に受信されたものでないと判定した場合、カウンタ１０２４は、受信順序を表すカウンタ値を増加させる。例えば、カウンタ１０２４は、カウンタ値を１増加させる。該１は一例であり、適宜設定変更可能である。但し、送信ノードのカウンタにおける増加量と、該送信ノードからのデータフレームを受信する受信ノードのカウンタにおける増加量とは等しい。
【００９２】
ステップＳ８３０では、誤り検出符号演算部１０２２は、ステップＳ８０２において受信したデータフレームに含まれるデータと、ステップＳ８２８において値を増加させたカウンタ値とに基づいて、第２の誤り検出符号を演算する。具体的には、誤り検出符号演算部１０２２は、カウンタ値をシードとして、予め設定される多項式に基づいて、第２の誤り検出符号を算出する。送信ノードの誤り検出符号演算部１０２２により利用される多項式と、該送信ノードからのデータフレームを受信する受信ノードの誤り検出符号演算部１０２２により利用される多項式とは等しい。
【００９３】
ステップＳ８３２では、誤り検出部１０３０は、ステップＳ８０２により受信したデータフレームに含まれる第１の誤り検出符号と、ステップＳ８３０による演算により求められた第２の誤り検出符号とが一致するか否かが判定される。
【００９４】
ステップＳ８３４では、ステップＳ８０２により受信したデータフレームに含まれる第１の誤り検出符号と、ステップＳ８３０による演算により求められた第２の誤り検出符号とが一致すると判定された場合、信号処理部１０３０は、データフレームに含まれるデータに基づいて処理を行う。ステップＳ８３４による処理の実行後、ステップＳ８０２に戻る。次回の受信以降、前回サーチしたカウンタ値を元にして、処理が実行される。具体的には、受信毎にカウンタがインクリメントされる。
【００９５】
一方、ステップＳ８０２により受信したデータフレームに含まれる第１の誤り検出符号と、ステップＳ８３０による演算により求められた第２の誤り検出符号とが一致しないと判定された場合、ステップＳ８０６に遷移する。ステップＳ８０６に遷移することにより、ステップＳ８０６−Ｓ８２６の処理が実行される。つまり、シード値を変更して、第１の誤り検出符号と、第２の誤り検出符号の演算結果が一致するか否かが判定される。シード値が１５より大きくなっても一致しない場合、データフレームに含まれるデータに誤りが有ると判定される。
【００９６】
シード値が１５より大きくならずに一致した場合、カウンタ異常（受信順序異常）と判定される。
【００９７】
本実施例に係る通信システムによれば、送信ノードは、受信ノードへ送信するデータと、該データの送信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第１の誤り検出符号を計算し、第１の誤り検出符号と、前記データとを含むデータフレームを送信する。データフレームに、データの送信順序を表すカウンタ値を含めないため、データフレームで送信できるデータ量を増加させることができる。
【００９８】
受信ノードは、データフレームに含まれるデータと、該データの受信順序を表すカウンタ値とに基づいて、該カウンタ値をシードとして、第２の誤り検出符号を計算し、第１の誤り検出符号と一致するか否かを判定する。第１の誤り検出符号と、第２の誤り検出符号とが一致するか否かを判定することにより、データフレームに含まれるデータに誤りがあるか否か、受信順序が正しいか否かを判定できる。
【００９９】
以上、本発明は特定の実施例を参照しながら説明されてきたが、各実施例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に係る装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウェアで、ソフトウェアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【０１００】
５０  通信バス
１００ｎ（ｎは、ｎ＞０の整数）  通信ノード
１５０  通信バス
１０２  ＭＰＵ
１０４  通信モジュール
１０６  記憶部
１０２２  誤り検出符号演算部
１０２４  カウンタ
１０２６  送信制御部
１０２８  誤り検出部
１０３０  信号処理部
【図１】
2013207600.tif 000003
【図２】
2013207600.tif 000004
【図３】
2013207600.tif 000005
【図４】
2013207600.tif 000006
【図５】
2013207600.tif 000007
【図６】
2013207600.tif 000008
【図７】
2013207600.tif 000009
【図８】
2013207600.tif 000010