(57)【要約】【課題】通信エラーの検出精度を向上させること。【解決手段】送信要求を送信する制御を行うスケジュール部と、送信要求によりデータの送信を要求された第２通信ノードから送信された第１データを格納する第１データバッファと、次の送信要求によりデータの送信を要求された第２通信ノードから送信された第２データに含まれる第１データと、第１データバッファに格納された第１データとが一致するか否かを判定するデータ照合部とを有する第１通信ノードと、第１通信ノードからの送信要求が自ノードへのデータの送信要求でない場合に、他の第２通信ノードにより送信された第１データを格納する第２データバッファと、第１通信ノードからの次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、第２データバッファに格納された第１データとを含む第２データを送信する制御を行う送信制御部とを有する第２通信ノードとを有する。【選択図】図３
2014099698.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
データの送信要求を送信する制御を実行するスケジュール部と、
前記送信要求によりデータの送信を要求された第２の通信ノードから送信された第１のデータを格納する第１のデータバッファと、
前記送信要求の次の送信要求によりデータの送信を要求された第２の通信ノードから送信された第２のデータに含まれる第１のデータと、前記第１のデータバッファに格納された第１のデータとが一致するか否かを判定するデータ照合部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからの前記送信要求が自ノードへのデータの送信要求でない場合に、他の第２の通信ノードにより送信された第１のデータを格納する第２のデータバッファと、
前記第１の通信ノードからの前記次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、前記第２のデータバッファに格納された第１のデータとを含む第２のデータを送信する制御を実行する送信制御部と
を有する、通信システム。
【請求項２】
前記第１の通信ノードは、
前記第１の通信ノードからデータを送信する際に、前記スケジュール部は、前記第１の通信ノードからデータを送信する送信要求を複数回送信する制御を実行し、
前記スケジュール部による制御により複数回送信される送信要求に応じて、該複数回データを送信する制御を実行する送信制御部
を有し、
第２の通信ノードは、
前記第１の通信ノードから送信されたデータと、該データが送信される前に、前記第２のデータバッファに格納された前記第１の通信ノードから送信されたデータとが一致するか否かを判定するデータ照合部
を有し、
前記第２のデータバッファは、前記第１の通信ノードにより送信されたデータを格納する、請求項１に記載の通信システム。
【請求項３】
前記第１の通信ノードは、
前記第１の通信ノードからデータを送信する際に、前記スケジュール部は、前記第２の通信ノードにダミーデータを要求する送信要求を送信する制御を実行した後に、前記第１の通信ノードからデータを送信する送信要求を送信する制御を実行し、
前記第１の通信ノードからデータを送信する送信要求に従って、ダミーデータを含むデータを送信する制御を実行する送信制御部
を有する、請求項１に記載の通信システム。
【請求項４】
データの送信要求を送信する制御を実行するスケジュール部と、
前記送信要求によりデータの送信を要求された第２の通信ノードから送信された第１のデータを格納するデータバッファと、
前記送信要求の次の送信要求によりデータの送信を要求された第２の通信ノードから送信された第２のデータに含まれる第１のデータと、前記第１のデータバッファに格納された第１のデータとが一致するか否かを判定するデータ照合部と
を有する、通信ノード。
【請求項５】
前記通信ノードからデータを送信する際に、前記スケジュール部は、前記通信ノードからデータを送信する送信要求を複数回送信する制御を実行し、
前記スケジュール部による制御により複数回送信される送信要求に応じて、該複数回データを送信する制御を実行する送信制御部
を有する、請求項４に記載の通信ノード。
【請求項６】
前記通信ノードからデータを送信する際に、前記スケジュール部は、前記第２の通信ノードにダミーデータを要求する送信要求を送信する制御を実行した後に、前記第１の通信ノードからデータを送信する送信要求を送信する制御を実行し、
前記通信ノードからデータを送信する送信要求に従って、ダミーデータを含むデータを送信する制御を実行する送信制御部
を有する、請求項４に記載の通信システム。
【請求項７】
第１の通信ノードからの送信要求が自ノードへのデータの送信要求でない場合に、第２の通信ノードにより送信された第１のデータを格納するデータバッファと、
前記第１の通信ノードからの前記送信要求の次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、前記第２のデータバッファに格納された第１のデータとを含む第２のデータを送信する制御を実行する送信制御部と
を有する、通信ノード。
【請求項８】
前記送信制御部は、前記送信要求が初回に送信されたものであり、且つ自ノードへのデータの送信要求である場合に、該送信要求により要求された第１のデータと、ダミーデータとを含む第２のデータを送信する制御を実行する、請求項７に記載の通信ノード。
【請求項９】
前記第１の通信ノードから送信されたデータと、該データが送信される前に、前記データバッファに格納された前記第１の通信ノードから送信されたデータとが一致するか否かを判定するデータ照合部
を有し、
前記データバッファは、前記第１の通信ノードにより送信されたデータを格納する、請求項７又は８に記載の通信ノード。
【請求項１０】
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
データの送信要求を送信する制御を実行するスケジュールステップと、
前記送信要求の次の送信要求によりデータの送信を要求された第２の通信ノードから送信された第２のデータに含まれる第１のデータと、前記送信要求によりデータの送信を要求された第２の通信ノードから送信された第１のデータを格納する前記第１のデータバッファに格納された第１のデータとが一致するか否かを判定するデータ照合ステップと
を有し、
前記第２の通信ノードは、
第２のデータバッファと、
前記第１の通信ノードからの前記次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、前記第１の通信ノードからの前記送信要求が自ノードへのデータの送信要求でない場合に、他の第２の通信ノードにより送信された第１のデータを格納する第２のデータバッファに格納された第１のデータとを含む第２のデータを送信する制御を実行する送信制御ステップと
を有する、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。
【背景技術】
【０００２】
車両には、該車両内の様々な制御を行うために車載ネットワークが構成されることが多い。車載ネットワークは、LANに、多くの電子制御ユニット(ECU: Electronic Control Unit)、センサ、アクチュエータ等が接続されることにより実現される。以下、車載ネットワークに接続される、電子制御ユニット、センサ、アクチュエータ等を通信ノードと呼ぶ。該通信ノードは、車両内の様々な位置に設置される。通信ノード間は、通信線や電線により接続される。
【０００３】
例えば、データバスに、複数の通信ノードが接続されることにより、車載ネットワークが構成される。該車載ネットワークには、CAN(Controller Area Network)、LIN(Local Interconnect Network)が含まれる。また、該車載ネットワークには、 FlexRay（登録商標）に従って通信を行うものが含まれてもよい。
【０００４】
例えば、LINは、ドアミラー、パワーシート、サンルーフ、ドアロック、エアコン、照明等に使用される。LINに従って通信を行う車載ネットワークでは、マスタスレーブ方式が採用される。マスタスレーブ方式では、車載ネットワークに含まれる通信ノードのうち、１つの通信ノードがマスタノードとされ、他の通信ノードはスレーブノードとされる。車両には、複数の車載ネットワークが含まれてもよい。マスタノードは、スレーブノードの通信スケジュールを管理する。スレーブノードは、マスタノードの要求に従いレスポンスを返す。
【０００５】
LINに従って通信を行う車載ネットワークでは、パリティ、チェックサム等で、データの誤りが検出されることがある。
【０００６】
送信側は、受信側に、２回、同一のデータを送信し、受信側は、送信側から、２回送信されたデータが一致するか否かにより、通信異常であるか否かを判定する通信システムが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１０−２４３００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところで、機能安全規格が注目されている。機能安全では、安全を確保するための機能的な工夫を行い、許容できるレベルの安全を確保する。機能安全が導入される際には、故障率や、故障検出率が定量的に求められる場合がある。
【０００９】
仮に、機能的な工夫として、CRCや、パリティを導入し、且つCANを適用した例では、バス以外で生じる故障を含めた故障検出率を99.9％以上にするのは難しい。99.9％以上の故障検出率を確保する一方法として、バスを２重化する方法がある。しかし、バスを２重化するには、現状のネットワークの構成を大きく変えることになるため、好ましくない。さらに、バスを２重化するには、コスト増になるため好ましくない。
【００１０】
また、再送により、許容できるレベルの安全を確保できる場合がある。しかし、再送を適用するには、アプリケーションと通信ソフトウェアとが同期している必要があり、アプリケーションと通信ソフトウェアとが非同期で動作する場合には適用できない。アプリケーションは、通信ソフトウェアに、最新のデータを転送するため、同じデータを送信することはできないためである。
【００１１】
本発明は、上述の点に鑑みてなされたものであり、通信エラーの検出精度を向上させることである。
【課題を解決するための手段】
【００１２】
開示の一実施例の通信システムは、
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
データの送信要求を送信する制御を実行するスケジュール部と、
前記送信要求によりデータの送信を要求された第２の通信ノードから送信された第１のデータを格納する第１のデータバッファと、
前記送信要求の次の送信要求によりデータの送信を要求された第２の通信ノードから送信された第２のデータに含まれる第１のデータと、前記第１のデータバッファに格納された第１のデータとが一致するか否かを判定するデータ照合部と
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからの前記送信要求が自ノードへのデータの送信要求でない場合に、他の第２の通信ノードにより送信された第１のデータを格納する第２のデータバッファと、
前記第１の通信ノードからの前記次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、前記第２のデータバッファに格納された第１のデータとを含む第２のデータを送信する制御を実行する送信制御部と
を有する。
【００１３】
開示の一実施例の通信ノードは、
データの送信要求を送信する制御を実行するスケジュール部と、
前記送信要求によりデータの送信を要求された第２の通信ノードから送信された第１のデータを格納するデータバッファと、
前記送信要求の次の送信要求によりデータの送信を要求された第２の通信ノードから送信された第２のデータに含まれる第１のデータと、前記第１のデータバッファに格納された第１のデータとが一致するか否かを判定するデータ照合部と
を有する。
【００１４】
開示の一実施例の通信ノードは、
第１の通信ノードからの送信要求が自ノードへのデータの送信要求でない場合に、第２の通信ノードにより送信された第１のデータを格納するデータバッファと、
前記第１の通信ノードからの前記送信要求の次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、前記第２のデータバッファに格納された第１のデータとを含む第２のデータを送信する制御を実行する送信制御部と
を有する。
【００１５】
開示の一実施例の通信方法は、
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
データの送信要求を送信する制御を実行するスケジュールステップと、
前記送信要求の次の送信要求によりデータの送信を要求された第２の通信ノードから送信された第２のデータに含まれる第１のデータと、前記送信要求によりデータの送信を要求された第２の通信ノードから送信された第１のデータを格納する前記第１のデータバッファに格納された第１のデータとが一致するか否かを判定するデータ照合ステップと
を有し、
前記第２の通信ノードは、
第２のデータバッファと、
前記第１の通信ノードからの前記次の送信要求が自ノードへのデータの送信要求である場合に、該次の送信要求により要求されたデータと、前記第１の通信ノードからの前記送信要求が自ノードへのデータの送信要求でない場合に、他の第２の通信ノードにより送信された第１のデータを格納する第２のデータバッファに格納された第１のデータとを含む第２のデータを送信する制御を実行する送信制御ステップと
を有する。
【発明の効果】
【００１６】
開示の実施例によれば、通信エラーの検出精度を向上させることができる。
【図面の簡単な説明】
【００１７】
【図１】通信システムの一実施例を示す図である。
【図２】第１の通信ノードの一実施例を示す図である。
【図３】第１の通信ノードの一実施例を示す機能ブロック図である。
【図４】第２の通信ノードの一実施例を示す図である。
【図５】第２の通信ノードの一実施例を示す機能ブロック図である。
【図６】通信システムの動作の一実施例を示す図である。
【図７】通信システムの動作の一実施例を示す図である。
【図８】通信システムの動作の一実施例を示すフローチャートである。
【図９】通信システムの動作の一実施例を示すフローチャートである。
【図１０】通信システムの動作の一実施例を示す図である。
【図１１】通信システムの動作の一実施例を示すフローチャートである。
【図１２】通信システムの動作の一実施例を示すフローチャートである。
【図１３】第２の通信ノードの一変形例を示す機能ブロック図である。
【図１４】通信システムの動作の一変形例を示す図である。
【図１５】通信システムの動作の一変形例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１９】
＜実施例＞
＜通信システム＞
図１は、通信システムの一実施例を示す。
【００２０】
通信システムは、第１の通信ノード１００と、第２の通信ノード２００ｎ（ｎは、ｎ＞０の整数）とを有する。図１には、一例としてｎ＝３の場合について示す。ｎの値は適宜変更可能である。第１の通信ノード１００と、第２の通信ノード２００ｎとの間は、バス１５０により有線接続される。第１の通信ノード１００は、電子制御ユニット等により実現されてもよい。また、第１の通信ノード１００に、センサ、アクチュエータ等が含まれてもよい。第２の通信ノード２００ｎは、電子制御ユニットにより実現されてもよいし、センサ、アクチュエータ等により実現されてもよい。例えば、第１の通信ノード１００にエアコンの制御機能が含まれ、第２の通信ノードに温度センサ等が含まれてもよい。
【００２１】
また、第１の通信ノード１００に複数のシステムが内蔵されている場合もある。例えば、第１の通信ノード１００が、他の第１の通信ノード（図示無し）との間で通信を行うようにしてもよい。また、第１の通信ノード１００が、システムの制御を実行してもよい。
【００２２】
第１の通信ノード１００、第２の通信ノード２００ｎは、例えば車両等の移動体に搭載される。通信システムの一実施例では、車両に搭載される。通信システムは、センサ、アクチュエータ等のボディ制御に適用されてもよい。
【００２３】
第２の通信ノード２００ｎは、第１の通信ノード１００に従って通信を行う。つまり、通信システムの一実施例は、マスタスレーブ方式が適用される。第１の通信ノード１００はマスタノードとして機能し、第２の通信ノード２００ｎはスレーブノードとして機能する。
【００２４】
マスタスレーブ方式が適用される通信システムには、LINが含まれる。従って、通信システムの一実施例は、LINが適用される場合について説明する。LINに限らず、マスタスレーブ方式が適用される通信システムに適用できる。
【００２５】
通信システムの一実施例では、第１の通信ノード１００は、スケジュールに従って、データ送信を要求するための送信要求を送信する。スケジュールは、予め設定されてもよい。例えば、第１の通信ノード１００は、第２の通信ノード２００１にデータを要求する第１の送信要求を送信し、該第１の送信要求を送信した後に、第２の通信ノード２００２にデータを要求する第２の送信要求を送信するようにしてもよい。また、第１の通信ノード１００がデータ（レスポンス）を送信することもある。
【００２６】
第１の通信ノード１００は、送信要求に応じて第２の通信ノード２００１により送信されたデータ（レスポンス）を格納する。
【００２７】
第２の通信ノード２００１は、第１の通信ノード１００からの第１送信要求が自ノードにデータを要求するものであるので、第１の通信ノード１００へ、第１のデータを送信する。第２の通信ノード２００２、第２の通信ノード２００３は、第２の通信ノード２００１から送信された第１のデータを格納する。
【００２８】
その後、第２の通信ノード２００２は、第１の通信ノード１００からの第２の送信要求が自ノードにデータを要求するものであるので、第１の通信ノード１００へ、第２のデータとともに、格納している第１のデータを送信する。
【００２９】
第１の通信ノード１００は、第２の通信ノード２００２からのデータを受信する。第１の通信ノード１００は、第２の通信ノード２００２からのデータに含まれる第１のデータと、格納している第１のデータとを照合する。第１の通信ノード１００は、照合の結果に応じて、一致する場合には通信エラー（異常）が発生していないと判定し、一致しない場合には通信エラーが発生したと判定する。
【００３０】
＜第１の通信ノード１００＞
図２は、第１の通信ノード１００の一実施例を示す。図２には、主に、第１の通信ノード１００のハードウエア構成が示される。
【００３１】
第１の通信ノード１００は、マイクロコントローラ(Micro-Control Unit)１０２と、トランシーバ１０６とを備える。
【００３２】
マイクロコントローラ１０２は、通信装置１０４を有する。マイクロコントローラ１０２は、トランシーバ１０６を介して、バス１５０と接続される。マイクロコントローラ１０２は、自第１の通信ノード１００、第２の通信ノード２００ｎがデータを送信するタイミングを制御する。マイクロコントローラ１０２は、予め設定されたタイミングで、バス１５０に送信要求を送信する制御を実行する。この送信要求は、「トークン」と呼ばれてもよいし、「ヘッダ」と呼ばれてもよい。マイクロコントローラ１０２は、送信要求に対する応答として受信したデータと、該データを受信する前に受信したデータとに基づいて、通信エラーが発生したか否かを判定する。また、マイクロコントローラ１０２は、データを送信する制御を実行する。
【００３３】
通信装置１０４は、トランシーバ１０６を介して、送信要求、データを送信する。通信装置１０４は、シリアル通信を実行するようにしてもよい。通信装置１０４の一実施例は、UART（Universal Asynchronous Receiver/Transmitter）が適用される。
【００３４】
トランシーバ１０６は、バス１５０に、通信装置１０４からの送信要求、データを送信する。また、トランシーバ１０６は、第２の通信ノード２００ｎからのデータを受信し、通信装置１０４に入力する。
【００３５】
＜第１の通信ノード１００の機能＞
第１の通信ノード１００の機能の一実施例について説明する。
【００３６】
図３は、第１の通信ノード１００の機能の一実施例を示す機能ブロック図である。この機能ブロック図により表される機能は、主に、マイクロコントローラ１０２により実行される。例えば、マイクロコントローラ１０２が、ファームウェア等のプログラムに従って動作することにより実行されてもよい。
【００３７】
マイクロコントローラ１０２は、スケジュール部１０２２と、通信制御部１０２４と、データ照合部１０３０と、制御部１０３２として機能する。また、マイクロコントローラ１０２は、第１のデータバッファ１０２８と、第２のデータバッファ１０２６とを備える。第１のデータバッファ１０２８と、第２のデータバッファ１０２６とが同一のハードウェアにより実現されてもよいし、異なるハードウェアにより実現されてもよい。
【００３８】
スケジュール部１０２２は、通信装置１０４と接続される。スケジュール部１０２２は、スケジュール管理を実行する。スケジュールは、予め設定されてもよい。例えば、スケジュール部１０２２は、スケジュールに従って、予め設定されたタイミングでバス１５０に送信要求を送信するために、通信装置１０４に送信要求を送信する制御を実行する。送信要求には、第２の通信ノード２００ｎへデータの送信を要求するものと、自第１の通信ノード１００からデータを送信する際に送信するものとが含まれる。
【００３９】
第２のデータバッファ１０２６は、第１の通信ノード１００で発生したデータを格納する。第１の通信ノード１００で発生したデータには、例えば、ドアライトが点灯しているか否かを表すデータ、ドアが開いているか否かを表すデータ、シートの位置を表すデータ、ウインドウの位置を表すデータ、ミラー位置を表すデータ等が含まれてもよい。
【００４０】
通信制御部１０２４は、通信装置１０４と、スケジュール部１０２２と、第２のデータバッファ１０２６と接続される。通信制御部１０２４は、スケジュール部１０２２によるスケジュールに従って、第２のデータバッファ１０２６に格納されたデータを送信する制御を実行する。例えば、通信制御部１０２４は、スケジュール部１０２２により自第１の通信ノード１００からデータを送信することを示す送信要求を送信する制御が実行された場合に、第２のデータバッファ１０２６に格納されたデータとともに、第１のデータバッファ１０２８に格納されているデータを送信する制御を実行する。
【００４１】
第１のデータバッファ１０２８は、通信装置１０４と、通信制御部１０２４と接続される。第１のデータバッファ１０２８は、通信装置１０４からのデータを一時的に格納する。例えば、第１のデータバッファ１０２８は、送信要求に対する応答（レスポンス）として、第２の通信ノード２００１により送信された第１のデータを一時的に格納する。
【００４２】
データ照合部１０３０は、通信装置１０４と、第１のデータバッファ１０２８と接続される。データ照合部１０３０は、第２の通信ノード２００２により第２のデータとともに送信された第１のデータと、第１のデータバッファ１０２８に格納されている第１のデータとを照合する。データ照合部１０３０は、照合の結果一致する場合には、通信エラーが発生していないと判定する。この場合、データ照合部１０３０は、制御部１０３２に、通信エラーが発生していないことを通知する。データ照合部１０３０は、照合の結果一致しない場合には、通信エラーが発生したと判定する。この場合、データ照合部１０３０は、第１のデータバッファ１０２８に格納された第１のデータを破棄するようにしてもよい。
【００４３】
制御部１０３２は、第１のデータバッファ１０２８と、データ照合部１０３０と接続される。制御部１０３２は、データ照合部１０３０から、通信エラーが発生していないことが通知された場合、第１のデータバッファ１０２８に格納されている第１のデータを取得し、所定の制御を行う。
【００４４】
＜第２の通信ノード２００ｎ＞
図４は、第２の通信ノード２００１の一実施例を示す。図４には、主に、第２の通信ノード２００１のハードウェア構成が示される。第２の通信ノード２００２−第２の通信ノード２００ｎは、第２の通信ノード２００１と略同一である。
【００４５】
第２の通信ノード２００１は、マイクロコントローラ２０２と、トランシーバ２０６とを備える。
【００４６】
マイクロコントローラ２０２は、通信装置２０４を有する。マイクロコントローラ２０２は、トランシーバ２０６を介して、バス１５０と接続される。
【００４７】
マイクロコントローラ２０２は、第１の通信ノード１００により制御される送信タイミングに従って、データを送信する制御を実行する。例えば、マイクロコントローラ２０２は、第１の通信ノード１００により送信される送信要求が自第２の通信ノード２００１にデータを要求するものである場合、通信装置２０４からデータを送信する制御を実行する。
【００４８】
マイクロコントローラ２０２は、第１の通信ノード１００から送信されたデータ、他の第２の通信ノードから送信されたデータを一時的に格納する制御を実行する。例えば、マイクロコントローラ２０２は、第１の通信ノード１００、第２の通信ノード２００２、第２の通信ノード２００３から送信され、通信装置２０４に入力された第１のデータを一時的に格納する。
【００４９】
通信装置２０４は、トランシーバ２０６を介して、データを送信する。また、通信装置２０４は、トランシーバ２０６からのデータをマイクロコントローラ２０２へ入力する。通信装置２０４は、シリアル通信を実行するようにしてもよい。通信装置２０４の一実施例は、UARTが適用される。
【００５０】
トランシーバ２０６は、バス１５０に、通信装置２０４からのデータを送信する。また、トランシーバ２０６は、第１の通信ノード１００からの送信要求を受信し、通信装置２０４に入力する。また、トランシーバ２０６は、通信ノード１００、通信ノード２００２、通信ノード２００３からのデータを受信する。また、トランシーバ２０６は、通信装置２０４に、通信ノード１００、通信ノード２００２、通信ノード２００３からのデータを入力する。
【００５１】
＜第２の通信ノード２００１の機能＞
第２の通信ノード２００１の機能の一実施例について説明する。第２の通信ノード２００２−２００ｎの機能は、第２の通信ノード２００１の機能と略同一である。
【００５２】
図５は、第２の通信ノード２００１の機能の一実施例を示す機能ブロック図である。この機能ブロック図により表される機能は、主に、マイクロコントローラ２０２により実行される。例えば、マイクロコントローラ２０２が、ファームウェア等のプログラムに従って動作することにより実行されてもよい。
【００５３】
マイクロコントローラ２０２は、通信制御部２０２６として機能する。また、マイクロコントローラ２０２は、第１のデータバッファ２０２２と、第２のデータバッファ２０２４とを備える。第１のデータバッファ２０２２と、第２のデータバッファ２０２４とが同一のハードウェアにより実現されてもよいし、異なるハードウェアにより実現されてもよい。
【００５４】
第１のデータバッファ２０２２は、通信装置２０４と接続される。第１のデータバッファ２０２２は、第１の通信ノード１００、他の第２の通信ノード２００２−２００ｎにより送信されたデータを格納する。
【００５５】
第２のデータバッファ２０２４は、第２の通信ノード２００１において発生したデータを格納する。第２の通信ノード２００１において発生したデータには、例えば、ドアライトが点灯しているか否かを表すデータ、ドアが開いているか否かを表すデータ、シートの位置を表すデータ、ウインドウの位置を表すデータ、ミラー位置を表すデータ等が含まれる。
【００５６】
通信制御部２０２６は、通信装置２０４と、第１のデータバッファ２０２２と、第２のデータバッファ２０２４と接続される。通信制御部２０２６は、第１の通信ノード１００からの送信要求に応じて、第２のデータバッファ２０２４に格納されたデータを送信する制御を実行する。例えば、通信制御部２０２６は、第１の通信ノード１００からの送信要求が自第２の通信ノード２００１にデータを要求するものであるか否かを判定する。通信制御部２０２６は、送信要求が自第２の通信ノード２００１にデータを要求するものである場合、第２のデータバッファ２０２４に格納されたデータとともに、第１のデータバッファに格納されているデータを送信する制御を実行する。
【００５７】
＜通信システムの動作＞
図６は、通信システムの動作の一実施例を示す。図６には、主に第１の通信ノード１００のスケジュール部１０２２と、第１のデータバッファ１０２８と、データ照合部１０３０の動作が示される。また、図６には、主に、第２の通信ノード２００ｎの動作が示される。
【００５８】
第１の通信ノード１００において、スケジュール部１０２２の処理は、マスタータスク６０２と呼ばれる。スケジュール部１０２２では、スケジュール６０４に従って、マスタータスク６０２を実行する。
【００５９】
また、第１の通信ノード１００の第１のデータバッファ１０２８には、第２の通信ノード２００１からの第３のデータ６１２と、第２の通信ノード２００２からの第５のデータ６１４が格納される。
【００６０】
データ照合部１０３０は、第１のデータバッファ１０２８に格納されている第３のデータ６１２と、第２の通信ノード２００１以外から受信した第３´のデータ６１６とを照合する。
【００６１】
また、データ照合部１０３０は、第１のデータバッファ１０２８に格納されている第５のデータ６１４を、第２の通信ノード２００３以外から受信した第５´のデータ６１８と照合する。
【００６２】
また、第１の通信ノード１００は、スレーブノードとして動作するようにしてもよい。この場合、第１の通信ノード１００は、第１のスレーブタスク６０６を実行する。例えば、第１の通信ノード１００は、第１のスレーブタスク６０６を実行する際に、第１の通信ノード１００のマスタノード(図示無し)に、第１のデータ６０８、第２のデータ６１０を送信する。
【００６３】
第２の通信ノード２００１において、通信制御部２０２６の処理は、第２のスレーブタスク６２４と呼ばれる。通信制御部２０２６は、第２のスレーブタスク６２４を実行する。
【００６４】
第２の通信ノード２００１の第２のデータバッファ２０２４には、第３のデータ６１２と、第４のデータ６１６が格納される。
【００６５】
通信制御部２０２６は、第２のスレーブタスク６２４を実行する際に、第３のデータ６１２と、第４のデータ６１６を送信する制御を実行する。
【００６６】
第２の通信ノード２００２において、通信制御部２０２６の処理は、第３のスレーブタスク６２６と呼ばれる。通信制御部２０２６は、第３のスレーブタスク６２６を実行する。
【００６７】
第２の通信ノード２００２の第２のデータバッファ２０２４には、第５のデータ６１４と、第６のデータ６１８が格納される。
【００６８】
通信制御部２０２６は、第３のスレーブタスク６２６を実行する際に、第５のデータ６１４と、第６のデータ６１８を送信する制御を実行する。
【００６９】
第２の通信ノード２００３において、通信制御部２０２６は、第４のスレーブタスク６２８と呼ばれる。通信制御部２０２６の処理は、第４のスレーブタスク６２８を実行する。
【００７０】
第２の通信ノード２００３の第２のデータバッファ２０２４には、第７のデータ６２０と、第８のデータ６２２が格納される。
【００７１】
通信制御部２０２６は、第４のスレーブタスク６２８を実行する際に、第７のデータ６２０と、第８のデータ６２２を送信する制御を実行する。
【００７２】
＜通信システムの動作＞
（１）第１の通信ノード１００が送信要求を送信し、該第１の通信ノード１００が該送信要求によりデータを要求された第２の通信ノード２００ｎから応答（レスポンス）を受信する動作
図７は、通信システムの動作の一実施例を示す。図７には、主に第１の通信ノード１００が、第２の通信ノード２００ｎからの応答（レスポンス）を受信する際の動作が示される。図７において、横軸は時間である。
【００７３】
ステップＳ７０２では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データの送信を要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００１の識別子が含まれる。バス１５０には、ヘッダが送信される。ヘッダはトークンと呼ばれることもある。
【００７４】
ステップＳ７０４では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第２の通信ノード２００１の識別子が含まれるので、第２の通信ノード２００１は、データ（レスポンス）を送信する。例えば、第２の通信ノード２００１の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外の部分では、ダミー(Dummy)データを含める。ダミーデータは、通信システムにおいて予め設定された既知のデータであるのが好ましい。通信制御部２０２６は、初回の送信の際に、レスポンスのサイズのデータを送信するサイズ以外の部分に、ダミーデータを含める。例えば、通信制御部２０２６は、第１のデータバッファ２０２２にデータが格納されていない場合に、ダミーデータを含めるのが好ましい。ここでは、第２の通信ノード２００１の通信制御部２０２６は、第２のデータバッファ２０２４に格納される第３のデータ６１２を送信する制御を実行する。
【００７５】
第２の通信ノード２００１から送信されたデータ(第３のデータ６１２、ダミーデータ)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００１からのデータに含まれる第３のデータ６１２を格納する。以下、第１のデータバッファ１０２８に格納されるデータは、「ミラーデータ」とも呼ばれる。
【００７６】
さらに、第２の通信ノード２００１から送信されたデータ(第３のデータ６１２、ダミーデータ)は、第２の通信ノード２００２及び２００３に受信される。第２の通信ノード２００２及び２００３は、第１のデータバッファ２０２２に、第２の通信ノード２００１からのデータに含まれる第３のデータ６１２を格納する。
【００７７】
ステップＳ７０６では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データを要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００２の識別子が含まれる。バス１５０には、ヘッダが送信される。
【００７８】
ステップＳ７０８では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第２の通信ノード２００２の識別子が含まれるので、第２の通信ノード２００２は、データを送信する。例えば、第２の通信ノード２００２の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外の部分には、第１のデータバッファ２０２２に格納されているデータを含める。ここでは、第２の通信ノード２００２の通信制御部２０２６は、第２のデータバッファ２０２４に格納される第５のデータ６１４と、第１のデータバッファ２０２２に格納されている第３のデータ６１２を送信する制御を実行する。
【００７９】
第２の通信ノード２００２から送信されたデータ(第５のデータ６１４、第３のデータ６１２)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に格納されている第３のデータ６１２と、第２の通信ノード２００２からの第３のデータ（「第３´のデータ６１６」という）とが一致するか否を判定する。例えば、データ照合部１０３０は、第１のデータバッファ１０２８に格納されている第３のデータ６１２と、第２の通信ノード２００２からの第３´のデータ６１６とが一致するか否を判定する。
【００８０】
第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００１からのデータに含まれる第５のデータ６１４を格納する。第５のデータ６１４に、第３のデータ６１２が更新されるのが好ましい。第５のデータ６１４に、第３のデータ６１２が上書きされてもよい。さらに、第２の通信ノード２００２から送信されたデータ(第５のデータ６１４、第３のデータ６１２)は、第２の通信ノード２００１、２００３に受信される。第２の通信ノード２００１、２００３は、第１のデータバッファ２０２２に、第２の通信ノード２００２からのデータに含まれる第５のデータ６１４を格納する。第５のデータ６１４に、第３のデータ６１２が更新されるのが好ましい。第５のデータ６１４に、第３のデータ６１２が上書きされてもよい。
【００８１】
ステップＳ７１０では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データを要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００３の識別子が含まれる。バス１５０には、ヘッダが送信される。
【００８２】
ステップＳ７１２では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第２の通信ノード２００３の識別子が含まれるので、第２の通信ノード２００３は、データを送信する。例えば、第２の通信ノード２００３の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外の部分には、第１のデータバッファ２０２２に格納されているデータを含める。ここでは、第２の通信ノード２００３の通信制御部２０２６は、第２のデータバッファ２０２４に格納される第７のデータ６２０と、第１のデータバッファ２０２２に格納されている第５のデータ６１４を送信する制御を実行する。
【００８３】
第２の通信ノード２００３から送信されたデータ(第７のデータ６２０、第５のデータ６１４)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に格納されている第５のデータ６１４と、第２の通信ノード２００２からの第５のデータ（「第５´のデータ６１８」という）とが一致するか否を判定する。例えば、データ照合部１０３０は、第１のデータバッファ１０２８に格納されている第５のデータと、第２の通信ノード２００２からの第５´のデータ６１８とが一致するか否を判定する。
【００８４】
第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００３からのデータに含まれる第７のデータ６２０を格納する。第７のデータ６２０に、第５のデータ６１４が更新されるのが好ましい。第７のデータ６２０に、第５のデータ６１４が上書きされてもよい。さらに、第２の通信ノード２００３から送信されたデータ(第７のデータ６２０、第５のデータ６１４)は、第２の通信ノード２００１、２００２に受信される。第２の通信ノード２００１、２００２は、第１のデータバッファ２０２２に、第２の通信ノード２００３からのデータに含まれる第７のデータ６２０を格納する。第７のデータ６２０に、第５のデータ６１４が更新されるのが好ましい。第７のデータ６２０に、第５のデータ６１４が上書きされてもよい。
【００８５】
図８は、第１の通信ノード１００の動作の一実施例を示す。図８には、主に、図７のステップＳ７０２、Ｓ７０６、Ｓ７１０の処理が示される。図７のステップＳ７０２、Ｓ７０６、Ｓ７１０の処理は、主に通信制御部１０２４により実行される。
【００８６】
ステップＳ８０２では、第１の通信ノード１００は、アプリケーションに従って処理を実行する。
【００８７】
ステップＳ８０４では、第１の通信ノード１００は、アプリケーションからの送信要求がある否かを判定する。
【００８８】
ステップＳ８０６では、アプリケーションからの送信要求があると判定した場合、第１の通信ノード１００は、ヘッダフレームの送信を許可する状態であるか否かを判定する。
【００８９】
ステップＳ８０８では、ヘッダフレームの送信を許可する状態であると判定した場合、第１の通信ノード１００は、ヘッダフレームの送信を禁止する状態に設定する。
【００９０】
ステップＳ８１０では、第１の通信ノード１００は、ＳｙｎｃＢｒｅａｋを出力する。
【００９１】
ステップＳ８０４において、アプリケーションからの送信要求がないと判定した場合、又はステップＳ８０６において、ヘッダフレームの送信を許可する状態でないと判定した場合、最初に戻る。つまり、ステップＳ８０２に遷移する。
【００９２】
図９は、第１の通信ノード１００の動作の一実施例を示す。図９には、主に、図７のステップＳ７０６−Ｓ７０８の処理が示される。図７のステップＳ７０６−Ｓ７１０の処理は、主にスケジュール部１０２２、通信制御部１０２４、データ照合部１０３０により実行される。
【００９３】
ステップＳ９０２では、第１の通信ノード１００は、エラー割込みが発生したか否かを判定する。
【００９４】
ステップＳ９０４では、ステップＳ９０２でエラー割込みが発生したと判定された場合、第１の通信ノード１００は、ヘッダフレームの送信を許可する状態に設定する。
【００９５】
ステップＳ９０６では、第１の通信ノード１００は、エラー処理を実行する。
【００９６】
ステップＳ９０８では、ステップＳ９０２でエラー割込みが発生しないと判定された場合、第１の通信ノード１００は、受信割込みが発生したか否かを判定する。
【００９７】
ステップＳ９１０では、ステップＳ９０８で受信割込みが発生したと判定された場合、第１の通信ノード１００は、データを保存する。
【００９８】
ステップＳ９１２では、第１の通信ノード１００は、次回のミラーデータが存在するか否かを判定する。
【００９９】
ステップＳ９１４では、ステップＳ９１２で次回のミラーデータが存在すると判定された場合、第１の通信ノード１００は、該次回のミラーデータを保存する。図７のステップＳ７０８では、第１の通信ノード１００は、第５のデータを保存する。
【０１００】
ステップＳ９１６では、ステップＳ９１２で次回のミラーデータが存在しないと判定された場合、又はステップＳ９１４で次回のミラーデータを保存した後、第１の通信ノード１００は、レスポンスフレームの受信が完了したか否かを判定する。
【０１０１】
ステップＳ９１８では、ステップＳ９１６でレスポンスフレームの受信が完了したと判定された場合、第１の通信ノード１００は、チェックサムがＯＫであるか否かを判定する。
【０１０２】
ステップＳ９２０では、ステップＳ９１８でチェックサムがＯＫであると判定された場合、第１の通信ノード１００は、ミラーデータとデータは一致するか否かを判定する。ここでは、第１の通信ノード１００は、第１のデータバッファ１０２８に格納されている第３のデータ６１２（ミラーデータ）と、第２の通信ノード２００２からの第３´のデータ６１６（データ）とが一致するか否を判定する。
【０１０３】
ステップＳ９２２では、ステップＳ９２０でミラーデータとデータが一致すると判定された場合、第１の通信ノード１００は、アプリにデータを通知する。
【０１０４】
ステップＳ９１８でチャックサムがＯＫでないと判定された場合又はステップＳ９２０でミラーデータとデータが一致しないと判定された場合、ステップＳ９０４へ遷移する。
【０１０５】
ステップＳ９２４では、ステップＳ９１６でレスポンスフレームの受信が完了しない場合、第１の通信ノード１００は、受信データをカウントする。
【０１０６】
ステップＳ９０６、Ｓ９２２、Ｓ９２４の処理の終了後、ステップＳ９０２に戻る。
【０１０７】
（２）第１の通信ノード１００がデータ（レスポンス）を送信する動作
図１０は、通信システムの動作の一実施例を示す。図１０には、第１の通信ノード１００がデータ（レスポンス）を送信する際の動作が含まれる。図１０において、横軸は時間である。
【０１０８】
ステップＳ１００２−Ｓ１００４は、図７を参照して説明したステップＳ７０２−Ｓ７０４と略同一である。
【０１０９】
ステップＳ１００６では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データを要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００３の識別子が含まれる。バス１５０には、ヘッダが送信される。
【０１１０】
ステップＳ１００８では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに第２の通信ノード２００３の識別子が含まれるので、第２の通信ノード２００３はデータを送信する。例えば、第２の通信ノード２００３の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外には、第１のデータバッファ２０２２に格納されているデータを含める。ここでは、第２の通信ノード２００３の通信制御部２０２６は、トークンにより要求されたダミーデータと、第１のデータバッファ２０２２に格納されている第３のデータ６１２を送信する制御を実行する。ダミーデータは、通信システムにおいて予め設定された既知のデータであるのが好ましい。
【０１１１】
第２の通信ノード２００３から送信されたデータ(ダミーデータ、第３のデータ６１２)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に格納されている第３のデータ６１２と、第２の通信ノード２００３からの第３´のデータ６１６とが一致するか否を判定する。第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００３からのデータに含まれるダミーデータを格納する。ダミーデータに、第３のデータ６１２が更新されるのが好ましい。ダミーデータに、第３のデータ６１２が上書きされてもよい。さらに、第２の通信ノード２００３から送信されたデータ(ダミーデータ、第３のデータ)は、第２の通信ノード２００１、２００２に受信される。第２の通信ノード２００１、２００２は、第１のデータバッファ２０２２に、第２の通信ノード２００３からのデータに含まれるダミーデータを格納する。ダミーデータに、第３のデータ６１２が更新されるのが好ましい。ダミーデータに、第３のデータ６１２が上書きされてもよい。
【０１１２】
ステップＳ１０１０では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、第１の通信ノード１００からデータを送信することを要求する情報が含まれる。バス１５０には、ヘッダが送信される。
【０１１３】
ステップＳ１０１２では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第１の通信ノード１００からデータを送信することを要求する情報が含まれるので、第２の通信ノード２００１−２００３は、データを送信しない。
【０１１４】
第１の通信ノード１００は、データを送信する。例えば、第１の通信ノード１００の通信制御部１０２４は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部１０２４は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部１０２４は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部１０２４は、レスポンスのサイズのうち、データを送信するサイズ以外には、第１のデータバッファ１０２８に格納されているデータを含める。ここでは、第１の通信ノード１００の通信制御部１０２４は、第１のデータバッファ１０２８に格納されているダミーデータと、第２のデータバッファ１０２６に格納されている第１のデータ６０８を送信する制御を実行する。
【０１１５】
第１の通信ノード１００から送信されたデータ(第１のデータ６０８、ダミーデータ)は、第２の通信ノード２００１−２００２に受信される。第２の通信ノード２００１−２００２は、第１のデータバッファ２０２２に、第１の通信ノード１００からのデータに含まれる第１のデータ６０８を格納する。第１のデータ６０８に、ダミーデータが更新されるのが好ましい。第１のデータ６０８に、ダミーデータが上書きされてもよい。
【０１１６】
ステップＳ１０１４では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データを要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００２の識別子が含まれる。バス１５０には、ヘッダが送信される。
【０１１７】
ステップＳ１０１６では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第２の通信ノード２００２の識別子が含まれるので、第２の通信ノード２００２は、データを送信する。例えば、第２の通信ノード２００２の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外には、第１のデータバッファ２０２２に格納されているデータを含める。ここでは、第２の通信ノード２００２の通信制御部２０２６は、第２のデータバッファ２０２４に格納される第５のデータ６１４と、第１のデータバッファ２０２２に格納されている第１のデータ６０８を送信する制御を実行する。
【０１１８】
第２の通信ノード２００２から送信されたデータ(第５のデータ６１４、第１のデータ６０８)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に格納されている第１のデータ６０８と、第２の通信ノード２００２からの第１のデータ６０８とが一致するか否を判定する。第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００２からのデータに含まれる第５のデータ６１４を格納する。第５のデータ６１４に、第１のデータ６０８が更新されるのが好ましい。第５のデータ６１４に、第１のデータ６０８が上書きされてもよい。さらに、第２の通信ノード２００２から送信されたデータ(第５のデータ６１４、第１のデータ６０８)は、第２の通信ノード２００１、２００２に受信される。第２の通信ノード２００１、２００２は、第１のデータバッファ２０２２に、第２の通信ノード２００３からのデータに含まれる第５のデータ６１４を格納する。第５のデータ６１４に、第１のデータ６０８が更新されるのが好ましい。第５のデータ６１４に、第１のデータ６０８が上書きされてもよい。
【０１１９】
図１１は、第１の通信ノード１００の動作の一実施例を示す。図１１には、主に、図１０のステップＳ１０１２の処理が示される。ステップＳ１０１２の処理は、主に、スケジュール部１０２２、送信制御部１０２４、データ照合部１０３０により実行される。
【０１２０】
ステップＳ１１０２では、図９のステップＳ９０８において、受信割込みが発生しないと判定された場合、第１の通信ノード１００は、送信割込みが発生したか否かを判定する。
【０１２１】
ステップＳ１１０４では、ステップＳ１１０２において送信割込みが発生したと判定された場合、第１の通信ノード１００は、送信割込みがレスポンスであるかヘッダであるかを判定する。
【０１２２】
ステップＳ１１０６では、ステップＳ１１０４においてヘッダであると判定された場合、第１の通信ノード１００は、ＩＤフィールドを送信する。
【０１２３】
ステップＳ１１０８では、第１の通信ノード１００は、ＩＤフィールドに含まれるＩＤを判定する。ＩＤが自第１の通信ノード１００である場合にはレスポンスを送信すると判定し、ＩＤが自第１の通信ノード１００でない場合にはレスポンスを受信すると判定する。
【０１２４】
ステップＳ１１１０では、ステップＳ１１０８においてレスポンスを送信すると判定した場合、第１の通信ノード１００は、送信カウンタをセットする。
【０１２５】
ステップＳ１１１２では、第１の通信ノード１００は、アプリの送信データをセットする。
【０１２６】
ステップＳ１１１４では、ステップＳ１１０８においてレスポンスを受信すると判定した場合、第１の通信ノード１００は、受信カウンタをセットする。
【０１２７】
ステップＳ１１１６では、第１の通信ノード１００は、ＩＤを保存する。第１の通信ノード１００は、受信したデータを判別する際に、保存したＩＤを使用する。
【０１２８】
ステップＳ１１１８では、第１の通信ノード１００は、送信終了の割込みを許可する。
【０１２９】
ステップＳ１１２０では、ステップＳ１１０４においてレスポンスであると判定された場合、第１の通信ノード１００は、データフィールドの送信が完了したか否かを判定する。ここで、データフィールドは、ミラーデータを含まないものであるのが好ましい。
【０１３０】
ステップＳ１１２２では、ステップＳ１１２０においてデータフィールドの送信が完了したと判定された場合、第１の通信ノード１００は、データフィールドの送信が完了したか否かを判定する。ここで、データフィールドは、ミラーデータを含むものであるのが好ましい。
【０１３１】
ステップＳ１１２４では、ステップＳ１１２２においてデータフィールドの送信が完了したと判定された場合、第１の通信ノード１００は、チェックサムフィールドを送信する。
【０１３２】
ステップＳ１１２６では、ステップＳ１１２０においてデータフィールドの送信が完了していないと判定された場合、第１の通信ノード１００は、次のデータを送信する。
【０１３３】
ステップＳ１１２８では、ステップＳ１１２２においてデータフィールドの送信が完了していないと判定された場合、第１の通信ノード１００は、次のデータを送信する。ここで、次のデータは、ミラーデータである。
【０１３４】
ステップＳ１１３０では、ステップＳ１１２６において次のデータを送信した後、又はステップＳ１１２８において次のデータを送信した後、第１の通信ノード１００は、送信データのチェックサムを演算する。
【０１３５】
ステップＳ１１３２では、第１の通信ノード１００は、送信データをカウントする。
【０１３６】
ステップＳ１１３４では、ステップＳ１１０２において送信割込みが発生しないと判定された場合、第１の通信ノード１００は、送信完了割込みが発生したか否かを判定する。
【０１３７】
ステップＳ１１３６では、ステップＳ１１３４において送信完了割込みが発生したと判定された場合、第１の通信ノード１００は、レスポンスであるかヘッダであるかを判定する。
【０１３８】
ステップＳ１１３８では、ステップＳ１１３６においてレスポンスであると判定した場合、第１の通信ノード１００は、レスポンスを受信する準備をする。つまり、第１の通信ノード１００は、受信割込みを許可する。
【０１３９】
ステップＳ１１４０では、ステップＳ１１３４において送信完了割込みが発生しないと判定された場合、第１の通信ノード１００は、不正割り込み処理を実行する。
【０１４０】
ステップＳ１１４２では、ステップＳ１１３６においてヘッダであると判定された場合、第１の通信ノード１００は、送信終了の割込みを禁止する。
【０１４１】
ステップＳ１１４４では、第１の通信ノード１００は、ヘッダフレームの送信を許可する状態に設定する。
【０１４２】
ステップＳ１１１２、Ｓ１１１８、Ｓ１１２４、Ｓ１１３２、Ｓ１１３８、Ｓ１１４４、又はＳ１１４０の処理の終了後、図９のステップＳ９０２へ戻る。
【０１４３】
（２）第２の通信ノード２００ｎが、応答（レスポンス）を送信する動作
第２の通信ノード２００ｎが、応答（レスポンス）を送信する際の動作は、図７と略同一である。
【０１４４】
図１２は、第２の通信ノード２００ｎの動作の一実施例を示す。図１２には、主に、図７のステップＳ７０６−Ｓ７０８の処理が示される。
【０１４５】
ステップＳ１２０２では、第２の通信ノード２００ｎは、エラー割込みが発生したか否かを判定する。
【０１４６】
ステップＳ１２０４では、ステップＳ１２０２でエラー割込みが発生したと判定された場合、第２の通信ノード２００ｎは、エラー処理を実行する。
【０１４７】
ステップＳ１２０６では、第２の通信ノード２００ｎは、ＳｙｎｃＢｒｅａｋを検出する準備をする。
【０１４８】
ステップＳ１２０８では、ステップＳ１２０２でエラー割込みが発生しないと判定された場合、第２の通信ノード２００ｎは、受信割込みが発生したか否かを判定する。
【０１４９】
ステップＳ１２１０では、ステップＳ１２０８で受信割込みが発生したと判定された場合、第２の通信ノード２００ｎは、ＳｙｎｃＦｉｅｌｄを受信したか否かを判定する。
【０１５０】
ステップＳ１２１２では、ステップＳ１２１０でＳｙｎｃＢｒｅａｋを受信しないと判定した場合、第２の通信ノード２００ｎは、ＩＤフィールドを受信したか否かを判定する。
【０１５１】
ステップＳ１２１４では、ステップＳ１２１２でＩＤフィールドを受信したと判定された場合、ＩＤを保存する。第２の通信ノード２００ｎは、保存したＩＤをデータの判別に使用する。
【０１５２】
ステップＳ１２１６では、第２の通信ノード２００ｎは、ＩＤフィールドに含まれるＩＤを判定する。ＩＤが自第２の通信ノード２００ｎである場合にはレスポンスを送信すると判定し、ＩＤが自第２の通信ノード２００ｎでない場合にはレスポンスを受信すると判定する。
【０１５３】
ステップＳ１２１８では、ステップＳ１２１６においてレスポンスを送信すると判定された場合、第２の通信ノード２００ｎは、送信カウンタをセットする。
【０１５４】
ステップＳ１２２０では、第２の通信ノード２００ｎは、アプリの送信データをセットする。
【０１５５】
ステップＳ１２２２では、第２の通信ノード２００ｎは、送信データのチェックサムを演算する。
【０１５６】
ステップＳ１２２４では、第２の通信ノード２００ｎは、１バイト目のデータを送信する。
【０１５７】
ステップＳ１２２６では、ステップＳ１２１６においてレスポンスを受信すると判定した場合、第２の通信ノード２００ｎは、受信データを一時的に保存する。
【０１５８】
ステップＳ１２２８では、第２の通信ノード２００ｎは、受信カウンタをセットする。
【０１５９】
ステップＳ１２３０では、第２の通信ノード２００ｎは、受信データのチェックサムを演算する。
【０１６０】
ステップＳ１２３２では、ステップＳ１２１２でＩＤフィールドを受信していないと判定した場合、第２の通信ノード２００ｎは、ＩＤを判定する。ＩＤが自第２の通信ノード２００ｎである場合にはレスポンスを送信すると判定し、ＩＤが自第２の通信ノード２００ｎでない場合にはレスポンスを受信すると判定する。
【０１６１】
ステップＳ１２３４では、ステップＳ１２３２においてレスポンスを送信すると判定した場合、第２の通信ノード２００ｎは、データフィールドの送信が完了したか否かを判定する。ここで、データフィールドは、ミラーデータを含まないものであるのが好ましい。
【０１６２】
ステップＳ１２３６では、ステップＳ１２３４においてデータフィールドの送信が完了したと判定された場合、第２の通信ノード２００ｎは、データフィールドの送信が完了したか否かを判定する。ここで、データフィールドは、ミラーデータを含むものであるのが好ましい。
【０１６３】
ステップＳ１２３８では、ステップＳ１１３６においてデータフィールドの送信が完了したと判定された場合、第２の通信ノード２００ｎは、チェックサムフィールドを送信する。
【０１６４】
ステップＳ１２４０では、第２の通信ノード２００ｎは、ミラーデータを保存する。
【０１６５】
ステップＳ１２４２では、第２の通信ノード２００ｎは、ＳｙｎｃＢｒｅａｋを検出する準備を行う。
【０１６６】
ステップＳ１２４４では、ステップＳ１２３４においてデータフィールドの送信が完了していないと判定された場合、第２の通信ノード２００ｎは、次のデータを送信する。
【０１６７】
ステップＳ１２４６では、ステップＳ１２３６においてデータフィールドの送信が完了していないと判定された場合、第２の通信ノード２００ｎは、次のデータを送信する。ここで、次のデータは、ミラーデータである。
【０１６８】
ステップＳ１２４８では、ステップＳ１２４４において次のデータを送信した後、又はステップＳ１２４６において次のデータを送信した後、第２の通信ノード２００ｎは、送信データのチェックサムを演算する。
【０１６９】
ステップＳ１２５０では、第２の通信ノード２００ｎは、送信データをカウントする。
【０１７０】
通信システムの一実施例によれば、複数の通信ノードが接続されることにより通信ネットワークが構成される。ある通信ノードから他の通信ノードにデータの送信要求が出力されると、該送信要求の対象である被通信ノードがデータを送信する。被通信ノード以外の通信ノードは、被通信ノードにより送信されたデータを受信し、記憶する。ある通信ノードから他の通信ノードに次の送信要求が出力されると、該次の送信要求の対象である被通信ノードは、要求されたデータと前回記憶したデータとを併せて送信する。ある通信ノードは、該被通信ノードからの前回記憶したデータと自ノードに記憶したデータとを比較し、一致しない場合には通信エラーと判定する。送信要求の対象である通信ノードが、要求されたデータと前回記憶したデータとを一緒に送信することにより、送信要求に応じて送信を行うことができるとともに、通信エラーを検知できる。
【０１７１】
具体的には、第２の通信ノードにより送信されたデータと該データに対応し且つ該データを送信した第２の通信ノードと異なる他の第２の通信ノードから前回受信したデータとが照合されることにより、第１の通信ノードは、通信エラーを検知できる。換言すれば、第１の通信ノードは、該第１の通信ノードに格納したデータと、該データに対応し且つ格納したデータを送信した第２の通信ノードと異なる他の第２の通信ノードからのデータとが一致するか否かを判定することにより、一致しない場合には通信エラーと判定する。このようにすることにより、第１の通信ノードと第２の通信ノードとの間で、送受信されるデータの冗長性を確保できる。
【０１７２】
また、マスタ側が再送要求を行い、２回データを受信し、比較する場合と比較して、再送要求の送信を減少させることができる。さらに、再送により許容できるレベルの安全を確保する際には、アプリケーションと通信ソフトウェアとが同期している必要がある。通信システムの一実施例では、異なる通信ノードから送信されたデータが比較されるため、アプリケーションと、通信ソフトウェア等の通信部分の同期を考慮せずにシステムを構築できる。また、再送要求が送信されないため、バスへの負荷を抑えた状態で、受信したデータの信頼性を向上させることができる。
【０１７３】
上述した実施例において、同じ通信ノードから同じフレームを送信しないように設定するのが好ましい。同じ第２の通信ノードに連続して送信要求を行う場合には、ソフトウェアで、通信部分とアプリケーション部分のＩＦに待ちを入れることにより対応できる。
【０１７４】
＜変形例＞
通信システムの一変形例は、上述した実施例と第２の通信システム２００ｎの機能が異なる。
【０１７５】
通信システムの一変形例では、第１の通信ノード１００がレスポンスを送信する場合には、同じデータを２回送信する。第２の通信ノード２００ｎは、第１の通信ノード１００により２回送信されたデータが一致するか否かにより、通信エラーが発生したか否かを判定する。
【０１７６】
第２の通信ノード２００１のハードウェア構成は、図４を略同一である。
【０１７７】
図１３は、第２の通信ノード２００１の機能の一変形例を示す機能ブロック図である。この機能ブロック図により表される機能は、主に、マイクロコントローラ２０２により実行される。
【０１７８】
第２の通信ノード２００１の機能は、図５を参照して説明した機能ブロック図に、データ照合部２０２８を有するようにしたものである。データ照合部２０２８は、通信装置２０４と、第１のデータバッファ２０２２と接続される。
【０１７９】
第１のデータバッファ２０２２は、第１の通信ノード１００、他の第２の通信ノード２００２−２００ｎにより送信されたデータを格納する。第１のデータバッファ２０２２は、第１の通信ノード１００により送信されたデータを格納する領域と、他の第２の通信ノード２００２−２００ｎにより送信されたデータを格納する領域とを有するのが好ましい。
【０１８０】
第２のデータバッファ２０２４は、第２の通信ノード２００１において発生したデータを格納する。第２の通信ノード２００１において発生したデータには、例えば、ドアライトが点灯しているか否かを表すデータ、ドアが開いているか否かを表すデータ、シートの位置を表すデータ、ウインドウの位置を表すデータ、ミラー位置を表すデータ等が含まれる。
【０１８１】
通信制御部２０２６は、第１のデータバッファ２０２２と、第２のデータバッファ２０２４と接続される。通信制御部２０２６は、第１の通信ノード１００からの送信要求に応じて、第２のデータバッファ２０２４に格納されたデータを送信する制御を実行する。例えば、通信制御部２０２６は、第１の通信ノード１００からの送信要求が自第２の通信ノード２００１にデータを要求するものであるか否かを判定する。通信制御部２０２６は、送信要求が自第２の通信ノード２００１にデータを要求するものである場合、第２のデータバッファ２０２４に格納されたデータとともに、第１のデータバッファに格納されているデータを送信する制御を実行する。
【０１８２】
データ照合部２０２８は、第１の通信ノード１００により送信されたデータと、該データが送信される前に第１の通信ノード１００により送信され、且つ第１のデータバッファ２０２２に格納されているデータとを照合する。データ照合部１０３０は、照合の結果一致する場合には、通信エラーが発生していないと判定する。この場合、データ照合部２０２２は、通信エラーが発生していないことを通知するようにしてもよい。データ照合部２０２２は、照合の結果一致しない場合には、通信エラーが発生したと判定する。この場合、データ照合部２０２２は、第１のデータバッファ１０２８に格納されたデータを破棄するようにしてもよい。
【０１８３】
＜通信システムの動作＞
（１）第１の通信ノード１００がレスポンスを送信し、該レスポンスに基づいて、第２の通信ノード２００ｎが通信エラーであるか否かを判定する動作
図１４は、通信システムの動作の一実施例を示す。図１４には、主に第１の通信ノード１００によりレスポンスが送信される際の動作が示される。図１４において、横軸は時間である。
【０１８４】
ステップＳ１４０２では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データの送信を要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００１の識別子が含まれる。バス１５０には、ヘッダが送信される。ヘッダはトークンと呼ばれることもある。
【０１８５】
ステップＳ１４０４では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第２の通信ノード２００１の識別子が含まれるので、第２の通信ノード２００１は、データ（レスポンス）を送信する。例えば、第２の通信ノード２００１の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外には、ダミーデータを含める。ダミーのデータは、通信システムにおいて予め設定されてもよい。通信制御部２０２６は、初回の送信の際に、レスポンスのサイズのデータを送信するサイズ以外の部分に、ダミーデータを含める。例えば、通信制御部２０２６は、第１のデータバッファ２０２２にデータが格納されていない場合に、ダミーデータを含めるのが好ましい。ここでは、第２の通信ノード２００１の通信制御部２０２６は、第２のデータバッファ２０２４に格納される第３のデータ６１２を送信する制御を実行する。
【０１８６】
第２の通信ノード２００１から送信されたデータ(第３のデータ６１２、ダミーデータ)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００１からのデータに含まれる第３のデータ６１２を格納する。さらに、第２の通信ノード２００１から送信されたデータ(第３のデータ６１２、ダミーデータ)は、第２の通信ノード２００２、２００３に受信される。第２の通信ノード２００２、２００３は、第１のデータバッファ２０２２に、第２の通信ノード２００１からのデータに含まれる第３のデータ６１２を格納する。例えば、第２の通信ノード２００２、２００３は、第１のデータバッファ２０２２の他の第２の通信ノード２００２−２００ｎにより送信されたデータを格納する領域に、第２の通信ノード２００１からのデータに含まれる第３のデータ６１２を格納するのが好ましい。
【０１８７】
ステップＳ１４０６では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、第１の通信ノード１００からデータを送信することを要求する情報が含まれる。バス１５０には、ヘッダが送信される。
【０１８８】
ステップＳ１４０８では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第１の通信ノード１００からデータを送信することを要求する情報が含まれるので、第２の通信ノード２００１−２００３は、データを送信しない。
【０１８９】
第１の通信ノード１００は、データを送信する。例えば、第１の通信ノード１００の通信制御部１０２４は、レスポンスのサイズ以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部１０２４は、レスポンスのサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部１０２４は、レスポンスのサイズとして８ビットが設定されている場合には、８ビットでデータを送信する制御を実行する。ここでは、第１の通信ノード１００の通信制御部１０２４は、第２のデータバッファ１０２６に格納されている第１のデータ６０８と、第２のデータ６１０を送信する制御を実行する。
【０１９０】
第１の通信ノード１００から送信されたデータ(第１のデータ６０８、第２のデータ６１０)は、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、第１のデータバッファ２０２２に、第１の通信ノード１００からのデータ(第１のデータ６０８、第２のデータ６１０)を格納する。第２の通信ノード２００１−２００３は、第１のデータバッファ２０２２の第１の通信ノード１００により送信されたデータを格納する領域に、第１の通信ノード１００からのデータ(第１のデータ６０８、第２のデータ６１０)を格納するのが好ましい。
【０１９１】
ステップＳ１４１０では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、第１の通信ノード１００からデータを送信することを要求する情報が含まれる。バス１５０には、ヘッダが送信される。
【０１９２】
ステップＳ１４１２では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第１の通信ノード１００からデータを送信することを要求する情報が含まれるので、第２の通信ノード２００１−２００３は、データを送信しない。
【０１９３】
第１の通信ノード１００は、データを送信する。例えば、第１の通信ノード１００の通信制御部１０２４は、レスポンスのサイズ以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部１０２４は、レスポンスのサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部１０２４は、レスポンスのサイズとして８ビットが設定されている場合には、８ビットでデータを送信する制御を実行する。ここでは、第１の通信ノード１００の通信制御部１０２４は、第２のデータバッファ１０２６に格納されている第１のデータ６０８と、第２のデータ６１０を送信する制御を実行する。
【０１９４】
第１の通信ノード１００から送信されたデータ(第１のデータ６０８、第２のデータ６１０)は、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、第１のデータバッファ２０２２に格納されている第１のデータ６０８、第２のデータ６１０と、第１の通信ノード１００からの第１のデータ６０８、第２のデータ６１０とが一致するか否を判定する。
【０１９５】
ステップＳ１４１４では、第１の通信ノード１００は、トークンを送信する。例えば、スケジュール部１０２２は、スケジュール６０４に従ってマスタータスク６０２を実行するために、トークンを送信する制御を実行する。トークンには、データを要求する通信ノードの識別子（ＩＤ）が含まれる。通信システムの一実施例では、トークンに、第２の通信ノード２００２の識別子が含まれる。バス１５０には、ヘッダが送信される。
【０１９６】
ステップＳ１４１６では、第１の通信ノード１００により送信されたトークンは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、トークンに含まれる通信ノードの識別子を参照し、自ノードに該当するか否かを判定する。ここでは、トークンに、第２の通信ノード２００２の識別子が含まれるので、第２の通信ノード２００２は、データを送信する。例えば、第２の通信ノード２００２の通信制御部２０２６は、レスポンスのサイズの半分以下のサイズで、データを送信する制御を実行する。データの伝送効率を高める観点からは、通信制御部２０２６は、レスポンスのサイズの半分のサイズで、データを送信する制御を実行するのが好ましい。例えば、通信制御部２０２６は、レスポンスのサイズとして８ビットが設定されている場合には、４ビットでデータを送信する制御を実行する。通信制御部２０２６は、レスポンスのサイズのうち、データを送信するサイズ以外には、第１のデータバッファ２０２２に格納されているデータを含める。ここでは、第２の通信ノード２００２の通信制御部２０２６は、第２のデータバッファ２０２４に格納される第５のデータ６１４と、第１のデータバッファ２０２２に格納されている第３のデータ６１２を送信する制御を実行する。
【０１９７】
第２の通信ノード２００２から送信されたデータ(第５のデータ６１４、第３のデータ６１２)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第１のデータバッファ１０２８に格納されている第３のデータ６１２と、第２の通信ノード２００２からの第３´のデータ６１６とが一致するか否を判定する。第１の通信ノード１００は、第１のデータバッファ１０２８に、第２の通信ノード２００２からのデータに含まれる第５のデータ６１４を格納する。第５のデータ６１４に、第３のデータ６１２が更新されるのが好ましい。第５のデータ６１４に、第３のデータ６１２が上書きされてもよい。さらに、第２の通信ノード２００２から送信されたデータ(第５のデータ６１４、第３のデータ６１２)は、第２の通信ノード２００１、２００２に受信される。第２の通信ノード２００１、２００２は、第１のデータバッファ２０２２に、第２の通信ノード２００３からのデータに含まれる第５のデータ６１４を格納する。第１のデータバッファ２０２２の他の第２の通信ノード２００２−２００ｎにより送信されたデータを格納する領域において、第５のデータ６１４に、第３のデータ６１２が更新されるのが好ましい。第５のデータ６１４に、第３のデータ６１２が上書きされてもよい。
【０１９８】
図１５は、第２の通信ノード２００ｎの動作の一実施例を示す。図１５には、第２の通信ノード２００ｎが、第１の通信ノード１００からのデータを受信する際の動作が示される。つまり、図１４のステップＳ１４０６−Ｓ１４１２の動作が示される。
【０１９９】
ステップＳ１５０２では、図１２のステップＳ１２３２においてレスポンスを受信すると判定された場合、第２の通信ノード２００ｎは、データを保存する。
【０２００】
ステップＳ１５０４では、第２の通信ノード２００ｎは、次回のミラーデータが存在するか否かを判定する。
【０２０１】
ステップＳ１５０６では、ステップＳ１５０４で次回のミラーデータが存在すると判定された場合、第２の通信ノード２００ｎは、該次回のミラーデータを保存する。
【０２０２】
ステップＳ１５０８では、ステップＳ１５０４で次回のミラーデータが存在しないと判定された場合、又はステップＳ１５０６で次回のミラーデータを保存した後、第２の通信ノード２００ｎは、レスポンスフレームの受信が完了したか否かを判定する。
【０２０３】
ステップＳ１５１０では、ステップＳ１５０８でレスポンスフレームの受信が完了したと判定された場合、第２の通信ノード２００ｎは、チェックサムがＯＫであるか否かを判定する。
【０２０４】
ステップＳ１５１２では、ステップＳ１５１０でチェックサムがＯＫであると判定された場合、第２の通信ノード２００ｎは、ミラーデータとデータは一致するか否かを判定する。
【０２０５】
ステップＳ１５１４では、ステップＳ１５１２でミラーデータとデータが一致すると判定された場合、第２の通信ノード２００ｎは、アプリにデータを通知する。
【０２０６】
ステップＳ１５１６では、ステップＳ１５０８でレスポンスフレームの受信が完了していないと判定された場合、第２の通信ノード２００ｎは、受信データをカウントする。
【０２０７】
ステップＳ１５１８では、第２の通信ノード２００ｎは、受信データのチェックサムを演算する。
【０２０８】
ステップＳ１５２０では、ステップＳ１５１０でチェックサムがＯＫでないと判定された場合、又はステップＳ１５１２でミラーデータとデータが一致しないと判定された場合第２の通信ノード２００ｎは、エラー処理を実行する。
【０２０９】
ステップＳ１５２２では、第２の通信ノード２００ｎは、ＳｙｎｃＢｒｅａｋの検出の準備をする。
【０２１０】
ステップＳ１５１４、Ｓ１５２２、又はＳ１５１８の処理の終了後、ステップＳ１２０２に戻る。
【０２１１】
通信システムの一変形例によれば、複数の通信ノードが接続されることにより通信ネットワークが構成される。ある通信ノードは、他の通信ノードにデータを送信するための送信要求を出力し、データを送信する。ある通信ノード以外の通信ノードは、ある通信ノードにより送信されたデータを受信し、記憶する。さらに、ある通信ノードは、他の通信ノードにデータを送信するための次の送信要求を出力し、同様のデータを送信する。ある通信ノード以外の他の通信ノードは、ある通信ノードから送信された送信要求に対応するデータと次の送信要求に対応するデータとを比較し、一致しない場合には通信エラーと判定する。このようにすることにより、マスタである通信ノードからデータを送信する場合でも、スレーブである通信ノードにより通信エラーを検出できる。また、第１の通信ノードと第２の通信ノードとの間で、送受信されるデータの冗長性を確保できる。
【０２１２】
以上、本発明は特定の実施例及び変形例を参照しながら説明されてきたが、各実施例及び変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウエアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【０２１３】
１００  第１の通信ノード
１０２  マイクロコントローラ
１０４  通信装置
１０６  トランシーバ
１５０  バス
２００ｎ（ｎは、ｎ＞０の整数）  第２の通信ノード
２０２  マイクロコントローラ
２０４  通信装置
２０６  トランシーバ
１０２２  スケジュール部
１０２４  通信制御部
１０２６  第２のデータバッファ
１０２８  第１のデータバッファ
１０３０  データ照合部
１０３２  制御部
２０２２  第１のデータバッファ
２０２４  第２のデータバッファ
２０２６  通信制御部
２０２８  データ照合部
【図１】
2014099698.tif 000003
【図２】
2014099698.tif 000004
【図３】
2014099698.tif 000005
【図４】
2014099698.tif 000006
【図５】
2014099698.tif 000007
【図６】
2014099698.tif 000008
【図７】
2014099698.tif 000009
【図８】
2014099698.tif 000010
【図９】
2014099698.tif 000011
【図１０】
2014099698.tif 000012
【図１１】
2014099698.tif 000013
【図１２】
2014099698.tif 000014
【図１３】
2014099698.tif 000015
【図１４】
2014099698.tif 000016
【図１５】
2014099698.tif 000017