(57)【要約】      （修正有）【課題】マスタノードが故障した場合に、スレーブノードの１つをマスタノードとして機能させる。【解決手段】第１の通信ノードと、該第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の第２の通信ノード２００１とを有する通信システムは、第２の通信ノードに、該第２の通信ノードの処理負荷を問い合わせる処理を行う第１の負荷共有処理部を有する第１の通信ノードと、第１の通信ノードからの処理負荷の問い合わせに応じて、自第２の通信ノードの処理負荷を応答する応答処理部２０３２と、他の第２の通信ノードからの処理負荷を蓄積する第２の負荷共有処理部２０２４と、第１の通信ノードが故障したことが検知された場合に、自第２の通信ノードの処理負荷と他の第２の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定するマスタ故障監視部２０２６とを有する第２の通信ノードとを有する。【選択図】図５
2014154998.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信ノードと、該第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記第２の通信ノードに、該第２の通信ノードの処理負荷を問い合わせる処理を行う第１の負荷共有処理部
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自第２の通信ノードの処理負荷を応答する応答処理部と、
他の第２の通信ノードからの処理負荷を蓄積する第２の負荷共有処理部と、
前記第１の通信ノードが故障したことが検知された場合に、前記自第２の通信ノードの処理負荷と前記他の第２の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定するマスタ監視部と
を有する、通信システム。
【請求項２】
前記第１の通信ノードと前記複数の第２の通信ノードは、ネットワークを介して接続され、
前記複数の第２の通信ノードは、
ネットワークから受信したヘッダに基づいて、スケジュール情報を蓄積するスケジュール蓄積部
を有し、
前記マスタ監視部によりスケジュール管理を代替すると判定された場合に、前記スケジュール蓄積部は、蓄積したスケジュール情報に基づいて、スケジュール管理を実行する、請求項１に記載の通信システム。
【請求項３】
前記第１の通信ノードは、
自第１の通信ノードの異常を検知した場合に、前記第１の負荷共有処理部は、前記第２の通信ノードに、該第２の通信ノードの処理負荷を問い合わせる処理を行う、請求項１又は２に記載の通信システム。
【請求項４】
スリープ状態へ遷移した後に、データの送信要求を送信し、且つ該スリープ状態が解除されない場合、前記マスタ監視部は、前記第１の通信ノードが故障したと判定する、請求項１ないし３のいずれか１項に記載の通信システム。
【請求項５】
第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の通信ノードのうちの１つの通信ノードであって、
前記第１の通信ノードにより前記複数の通信ノードに処理負荷を問い合わせる処理が行われ、
前記通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自通信ノードの処理負荷を応答する応答処理部と、
他の通信ノードからの処理負荷を蓄積する第２の負荷共有処理部と、
前記第１の通信ノードが故障したことが検知された場合に、前記自通信ノードの処理負荷と前記他の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定するマスタ監視部と
を有する、通信ノード。
【請求項６】
第１の通信ノードと、該第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記第２の通信ノードに、該第２の通信ノードの処理負荷を問い合わせる処理を行い、
前記第２の通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自第２の通信ノードの処理負荷を応答し、
他の第２の通信ノードからの処理負荷を蓄積し、
前記第１の通信ノードが故障したことが検知された場合に、前記自第２の通信ノードの処理負荷と前記他の第２の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定する、通信方法。
【請求項７】
第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の通信ノードのうちの１つの通信ノードにおける通信方法であって、
前記第１の通信ノードにより前記複数の通信ノードに処理負荷を問い合わせる処理が行われ、
前記通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自通信ノードの処理負荷を応答し、
他の通信ノードからの処理負荷を蓄積し、
前記第１の通信ノードが故障したことが検知された場合に、前記自通信ノードの処理負荷と他の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定する、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。
【背景技術】
【０００２】
車両には、該車両内の様々な制御を行うために車載ネットワークが構成されることが多い。車載ネットワークは、LANに、多くの電子制御ユニット(ECU: Electronic Control Unit)、センサ、アクチュエータ等が接続されることにより実現される。以下、車載ネットワークに接続される、電子制御ユニット、センサ、アクチュエータ等を通信ノードと呼ぶ。該通信ノードは、車両内の様々な位置に設置される。通信ノード間は、通信線や電線により接続される。
【０００３】
例えば、データバスに、複数の通信ノードが接続されることにより、車載ネットワークが構成される。該車載ネットワークには、LIN(Local Interconnect Network)、CAN(Controller Area Network)が含まれる。また、該車載ネットワークには、 FlexRay（登録商標）に従って通信を行うものが含まれてもよい。
【０００４】
例えば、LINは、ドアミラー、パワーシート、サンルーフ、ドアロック、エアコン、照明等に使用される。LINに従って通信を行う車載ネットワークでは、マスタスレーブ方式が採用される。マスタスレーブ方式では、車載ネットワークに含まれる通信ノードのうち、１つの通信ノードがマスタノードとされ、他の通信ノードはスレーブノードとされる。マスタノードは、スレーブノードの通信スケジュールを管理する。スレーブノードは、マスタノードの要求に従いレスポンスを返す。
【０００５】
LINに従って通信を行う複数のノードのうち、正規のマスタノードに異常が検出された場合に、代替のマスタノードの候補となるスレーブノードをマスタノードに切替える技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１３６２８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
マスタノードが故障した場合には、通信を継続することができない。
【０００８】
仮に、代替のマスタノードの候補となるスレーブノードをマスタノードに切替える技術を適用したとしても、マスタノードが故障した場合には切替えることができない。スレーブノードは、マスタノードの指示に従ってマスタノードとして通信を行うように設定されているためである。
【０００９】
本発明は、マスタノードが故障した場合に、スレーブノードの１つをマスタノードとして機能させることを目的とする。
【課題を解決するための手段】
【００１０】
開示の一実施例の通信システムは、
第１の通信ノードと、該第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記第２の通信ノードに、該第２の通信ノードの処理負荷を問い合わせる処理を行う第１の負荷共有処理部
を有し、
前記第２の通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自第２の通信ノードの処理負荷を応答する応答処理部と、
他の第２の通信ノードからの処理負荷を蓄積する第２の負荷共有処理部と、
前記第１の通信ノードが故障したことが検知された場合に、前記自第２の通信ノードの処理負荷と前記他の第２の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定するマスタ監視部と
を有する。
【００１１】
開示の一実施例の通信ノードは、
第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の通信ノードのうちの１つの通信ノードであって、
前記第１の通信ノードにより前記複数の通信ノードに処理負荷を問い合わせる処理が行われ、
前記通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自通信ノードの処理負荷を応答する応答処理部と、
他の通信ノードからの処理負荷を蓄積する第２の負荷共有処理部と、
前記第１の通信ノードが故障したことが検知された場合に、前記自通信ノードの処理負荷と他の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定するマスタ監視部と
を有する。
【００１２】
開示の通信方法は、
第１の通信ノードと、該第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記第２の通信ノードに、該第２の通信ノードの処理負荷を問い合わせる処理を行い、
前記第２の通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自第２の通信ノードの処理負荷を応答し、
他の第２の通信ノードからの処理負荷を蓄積し、
前記第１の通信ノードが故障したことが検知された場合に、前記自第２の通信ノードの処理負荷と他の第２の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定する。
【００１３】
開示の通信方法は、
第１の通信ノードにより管理されるスケジュールに従って通信を行う複数の通信ノードのうちの１つの通信ノードにおける通信方法であって、
前記第１の通信ノードにより前記複数の通信ノードに処理負荷を問い合わせる処理が行われ、
前記通信ノードは、
前記第１の通信ノードからの処理負荷の問い合わせに応じて、自通信ノードの処理負荷を応答し、
他の通信ノードからの処理負荷を蓄積し、
前記第１の通信ノードが故障したことが検知された場合に、前記自通信ノードの処理負荷と他の通信ノードの処理負荷とに基づいて、スケジュールの管理を代替するか否かを判定する。
【発明の効果】
【００１４】
開示の実施例によれば、マスタノードが故障した場合に、スレーブノードの１つをマスタノードとして機能させることができる。
【図面の簡単な説明】
【００１５】
【図１】通信システムの一実施例を示す図である。
【図２】第１の通信ノードの一実施例を示す図である。
【図３】第１の通信ノードの一実施例を示す機能ブロック図である。
【図４】第２の通信ノードの一実施例を示す図である。
【図５】第２の通信ノードの一実施例を示す機能ブロック図である。
【図６】通信システムの動作の一実施例を示す図である。
【図７】トークンに含まれる情報の一実施例を示す図である。
【図８】通信システムの動作の一実施例を示すフローチャートである。
【図９】通信システムの動作の一実施例を示すフローチャートである。
【図１０】通信システムの動作の一実施例を示すフローチャートである。
【図１１】通信システムの動作の一実施例を示すフローチャートである。
【発明を実施するための形態】
【００１６】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１７】
＜実施例＞
＜通信システム＞
図１は、通信システムの一実施例を示す。
【００１８】
通信システムは、第１の通信ノード１００と第２の通信ノード２００１〜２００ｎ（ｎは、ｎ＞１の整数）とを有する。図１には、一例としてｎ＝３の場合について示す。ｎの値は適宜変更可能である。第１の通信ノード１００と、第２の通信ノード２００１〜２００ｎとの間は、バス１５０により有線接続される。
【００１９】
第１の通信ノード１００は、電子制御ユニット等により実現されてもよい。また、第１の通信ノード１００に、センサ、アクチュエータ等が含まれてもよい。第２の通信ノード２００１〜２００ｎは、電子制御ユニットにより実現されてもよいし、センサ、アクチュエータ等により実現されてもよい。例えば、第１の通信ノード１００にエアコンの制御機能が含まれ、第２の通信ノード２００１〜２００ｎに温度センサ等が含まれてもよい。
【００２０】
また、第１の通信ノード１００に複数のシステムが内蔵されている場合もある。例えば、第１の通信ノード１００が、他の第１の通信ノード（図示無し）との間で通信を行うようにしてもよい。また、第１の通信ノード１００が、システムの制御を実行してもよい。
【００２１】
第１の通信ノード１００、第２の通信ノード２００１〜２００ｎは、例えば車両等の移動体に搭載される。通信システムの一実施例では、車両に搭載される。通信システムは、センサ、アクチュエータ等のボディ制御に適用されてもよい。
【００２２】
第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００のスケジュール管理に従って通信を行う。つまり、特定の通信ノードが、通信バス上のデータ送信タイミングを制御する。特定の通信ノードが通信バス上のデータ送信タイミングを制御する方式には、マスタスレーブ方式が含まれる。通信システムの一実施例は、マスタスレーブ方式が適用される場合について説明する。例えば、第１の通信ノード１００はマスタノードとして機能し、第２の通信ノード２００１〜２００ｎはスレーブノードとして機能する。
【００２３】
マスタスレーブ方式が適用される通信システムには、LINが含まれる。従って、通信システムの一実施例は、LINが適用される場合について説明する。LINに限らず、特定の通信ノードが通信バス上のデータ送信タイミングを制御する通信システムに適用できる。
【００２４】
通信システムの一実施例では、第１の通信ノード１００は、スケジュールに従って、データ送信を要求するための送信要求（ヘッダ）を送信する。スケジュールは、予め設定されてもよい。また、第１の通信ノード１００がデータ（レスポンス）を送信することもある。例えば、第１の通信ノード１００は、第２の通信ノード２００１宛の送信要求を送信し、該送信要求を送信した後に、第２の通信ノード２００２宛の第２の送信要求を送信するようにしてもよい。つまり、第１の通信ノード１００は、第２の通信ノード毎に順次送信要求を送信するのが好ましい。
【００２５】
第１の通信ノード１００は、送信要求に応じて第２の通信ノード２００１により送信されたデータ（レスポンス）を格納する。また、第２の通信ノード２００２及び２００３は、第２の通信ノード２００１により送信されたデータを格納するとともに解析し、スケジューリング情報を蓄積する。
【００２６】
第１の通信ノード１００は、自第１の通信ノード１００が故障した場合、第２の通信ノード２００１〜２００ｎ間で、負荷情報を共有する処理が実行される。第１の通信ノード１００は、自第１の通信ノード１００が故障した場合、通信が可能であるか否かを判断する。通信が可能であると判断した場合、第１の通信ノード１００は、第２の通信ノード２００１〜２００ｎへ順次、負荷を問い合わせるヘッダ（以下、「負荷問い合わせヘッダ」という）を送信する。
【００２７】
第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００、他の第２の通信ノードから送信されたヘッダを解析する。第２の通信ノード２００１〜２００ｎは、ヘッダの解析結果に基づいて、スケジュール情報を蓄積する。スケジュール情報には、第１の通信ノード１００のＩＤ、第２の通信ノード２００１〜２００ｎのＩＤ、第１の通信ノード１００、第２の通信ノード２００１〜２００ｎの送信周期等が含まれるのが好ましい。
【００２８】
第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００が故障しているか否かを判断する。第２の通信ノード２００１〜２００ｎは、スリープ状態であり、且つウェイクアップ要求を送信しても、スリープ状態が解除されない場合に、第１の通信ノード１００が故障していると判断するのが好ましい。また、第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００からの負荷問い合わせヘッダを受信した場合に第１の通信ノード１００が故障していると判断するようにしてもよい。第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００からの負荷問い合わせヘッダへ応答する。第２の通信ノード２００１〜２００ｎは、バス１５０へ、負荷情報を含むレスポンスを送信する。第２の通信ノード２００１〜２００ｎは、他の第２の通信ノードからのレスポンスを受信し、該レスポンスに含まれる負荷情報を蓄積する。
【００２９】
第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００が故障したと判断した場合に、自第２の通信ノードの負荷と他の第２の通信ノードの負荷に基づいて、自第２の通信ノードが代理のマスタノードとして機能するか否かを判断する。第２の通信ノードは、自第２の通信ノードの負荷と他の第２の通信ノードの負荷に基づいて、自第２の通信ノードの負荷が一番低い場合に、自第２の通信ノードが代理のマスタノードとして機能すると判断するのが好ましい。マスタノードとして機能する場合、負荷がさらに増大する場合があるためである。代理のマスタノードとして機能する第２の通信ノードは、蓄積したスケジュール情報に従って、マスタノードとして機能する。
【００３０】
＜第１の通信ノード１００＞
図２は、第１の通信ノード１００の一実施例を示す。図２には、主に、第１の通信ノード１００のハードウエア構成が示される。
【００３１】
第１の通信ノード１００は、マイクロコントローラ(Micro-Control Unit)１０２と、トランシーバ１０６とを備える。図２には、一例として、第１の通信ノード１００が、マイクロコントローラ１０２、トランシーバ１０６を１個ずつ有する場合について説明する。第１の通信ノード１００が複数のコントローラを有するようにしてもよい。また、第１の通信ノード１００が複数のトランシーバ１０６を有するようにしてもよい。
【００３２】
マイクロコントローラ１０２は、通信装置１０４を有する。マイクロコントローラ１０２は、トランシーバ１０６を介して、バス１５０と接続される。マイクロコントローラ１０２は、第２の通信ノード２００１〜２００ｎがデータを送信するタイミングを制御する。マイクロコントローラ１０２は、予め設定されたタイミングで、バス１５０に送信要求を送信する制御を実行する。この送信要求は、「ヘッダ」と呼ばれる。また、この送信要求は、「トークン」と呼ばれてもよい。
【００３３】
通信装置１０４は、トランシーバ１０６を介して、送信要求を送信する。通信装置１０４は、シリアル通信を実行するようにしてもよい。通信装置１０４の一実施例は、UART（Universal Asynchronous Receiver/Transmitter）が適用される。
【００３４】
トランシーバ１０６は、バス１５０に、通信装置１０４からの送信要求を送信する。また、トランシーバ１０６は、第２の通信ノード２００ｎからのデータを受信し、通信装置１０４に入力する。
【００３５】
＜第１の通信ノード１００の機能＞
第１の通信ノード１００の機能の一実施例について説明する。
【００３６】
図３は、第１の通信ノード１００の機能の一実施例を示す。この機能ブロック図により表される機能は、マイクロコントローラ１０２、通信装置１０４、トランシーバ１０６により実行される。
【００３７】
マイクロコントローラ１０２は、アプリケーション１０２２に従って処理を行う。マイクロコントローラ１０２は、スケジュール管理部１０２４と、応答処理部１０２６と、第１の負荷共有処理部１０２８として機能する。
【００３８】
アプリケーション１０２２は、第２の通信ノード２００１〜２００ｎからのレスポンスが自第１の通信ノード１００を宛先とするものである場合、該レスポンスに含まれるデータを展開する。アプリケーション１０２２は、通信に先だって、通信装置１０４に送信するデータを書き込む。
【００３９】
スケジュール管理部１０２４は、通信装置１０４と接続される。スケジュール管理部１０２４は、スケジュール管理を実行する。スケジュールは、予め設定されてもよい。例えば、スケジュール管理部１０２４は、スケジュールに従って、予め設定されたタイミングでバス１５０に送信要求を送信するために、通信装置１０４に送信要求を送信する制御を実行する。スケジュール管理部１０２４は、通信装置１０４にヘッダの送信指示を行う。送信指示には、第２の通信ノード２００１〜２００ｎへデータの送信を要求するものと、自第１の通信ノード１００からデータを送信する際に送信するものとが含まれる。
【００４０】
応答処理部１０２６は、第２の通信ノード２００１〜２００ｎからのヘッダへの応答処理を行う。ヘッダは、通信装置１０４から入力される。応答処理部１０２６は、ヘッダに含まれるＩＤ(PID)に基づいて、応答するか否かを判定する。応答処理部１０２６は、応答すると判定した場合、通信装置１０４に応答指示を行う。
【００４１】
第１の負荷共有処理部１０２８は、第２の通信ノード２００１〜２００ｎ間で、負荷情報を共有する処理を行う。第１の負荷共有処理部１０２８は、自第１の通信ノード１００に故障が発生した場合に、第２の通信ノード２００１〜２００ｎ間で、負荷情報を共有する処理を行うのが好ましい。第１の負荷共有処理部１０２８は、自第１の通信ノード１００に故障が発生した場合に、負荷を問い合わせる処理を行う。第１の負荷共有処理部１０２８は、通信装置１０４に、負荷問い合わせヘッダを送信させる処理を行う。
【００４２】
通信装置１０４は、第１の送信ヘッダ格納部１０４２、第１の送信レスポンス格納部１０４４、第１の受信ヘッダ格納部１０４６、第１の受信レスポンス格納部１０４８を有する。
【００４３】
第１の送信ヘッダ格納部１０４２は、第１の通信ノード１００から送信するヘッダを一時的に格納する。スケジュール管理部１０２４からの指示に従って、第１の送信ヘッダ格納部１０４２は、トランシーバ１０６から、一時的に格納したヘッダを送信する。
【００４４】
また、第１の送信ヘッダ格納部１０４２は、負荷問い合わせヘッダを一時的に格納する。第１の負荷共有処理部１０２８からの指示に従って、第１の送信ヘッダ格納部１０４２は、トランシーバ１０６から、一時的に格納した負荷問い合わせヘッダを送信する。
【００４５】
第１の送信レスポンス格納部１０４４は、第１の通信ノード１００から送信するレスポンスを一時的に格納する。レスポンスは、アプリケーション１０２２から入力される。応答処理部１０２６からの指示に従って、第１の送信レスポンス格納部１０４４は、トランシーバ１０６から、一時的に格納したレスポンスを送信する。
【００４６】
第１の受信ヘッダ格納部１０４６は、トランシーバ１０６からのヘッダを格納する。第１の受信ヘッダ格納部１０４６は、トランシーバ１０６からヘッダが入力された際に、応答処理部１０２６に、ヘッダが受信されたことを通知する。
【００４７】
第１の受信レスポンス格納部１０４８は、トランシーバ１０６からのレスポンスを格納する。第１の受信レスポンス格納部１０４８は、アプリケーション１０２２に、レスポンスを入力する。
【００４８】
トランシーバ１０６は、トランシーバ１０６２と、受信処理部１０６４と、送信処理部１０６６とを有する。
【００４９】
トランシーバ１０６２は、バス１５０を伝送する信号を送受信する。トランシーバ１０６２は、バス１５０に送信処理部１０６６からのヘッダ、レスポンスを送信する。トランシーバ１０６２は、受信処理部１０６４にバス１５０からのヘッダ、レスポンスを入力する。
【００５０】
受信処理部１０６４は、第１の受信ヘッダ格納部１０４６にトランシーバ１０６２からのヘッダを入力する。受信処理部１０６４は、第１の受信レスポンス格納部１０４８にトランシーバ１０６２からのヘッダを入力する。
【００５１】
送信処理部１０６６は、トランシーバ１０６２に第１の送信ヘッダ格納部１０４２からのヘッダを入力する。送信処理部１０６６は、トランシーバ１０６２に第１の送信レスポンス格納部１０４４からのレスポンスを入力する。
【００５２】
＜第２の通信ノード２００ｎ＞
図４は、第２の通信ノード２００１の一実施例を示す。図４には、主に、第２の通信ノード２００１のハードウエア構成が示される。第２の通信ノード２００２−第２の通信ノード２００ｎは、第２の通信ノード２００１と略同一である。図４には、一例として、第２の通信ノード２００１が、マイクロコントローラ２０２、トランシーバ２０６を１個ずつ有する場合について説明する。第２の通信ノード２００１が複数のコントローラを有するようにしてもよい。また、第２の通信ノード２００１が複数のトランシーバ２０６を有するようにしてもよい。
【００５３】
第２の通信ノード２００１は、マイクロコントローラ２０２と、トランシーバ２０６とを備える。
【００５４】
マイクロコントローラ２０２は、通信装置２０４を有する。マイクロコントローラ２０２は、トランシーバ２０６を介して、バス１５０と接続される。
【００５５】
マイクロコントローラ２０２は、第１の通信ノード１００により制御される送信タイミングに従って、データを送信する制御を実行する。例えば、マイクロコントローラ２０２は、第１の通信ノード１００により制御される送信タイミングに従って、通信装置２０４からデータを送信する制御を実行する。
【００５６】
マイクロコントローラ２０２は、第１の通信ノード１００から送信されたデータ、他の第２の通信ノードから送信されたデータを一時的に格納する制御を実行する。例えば、マイクロコントローラ２０２は、第１の通信ノード１００、他の第２の通信ノードから送信され、通信装置２０４に入力されたデータを一時的に格納する。マイクロコントローラ２０２は、一時的に格納したデータを解析し、スケジューリング情報を蓄積する。
【００５７】
マイクロコントローラ２０２は、予め設定されたタイミングで第１の通信ノード１００により送信されるヘッダに応答して、レスポンスを送信する制御を実行する。例えば、マイクロコントローラ２０２は、予め設定されたタイミングで第１の通信ノード１００により送信されるヘッダに応答して、通信装置２０４を介して、レスポンス（データ）を送信する制御を実行する。
【００５８】
マイクロコントローラ２０２は、第１の通信ノード１００から送信された負荷問い合わせヘッダに応答して、レスポンスを送信する制御を実行する。該レスポンスには、負荷情報が含まれる。
【００５９】
通信装置２０４は、トランシーバ２０６を介して、データを送信する。通信装置２０４は、シリアル通信を実行するようにしてもよい。通信装置２０４の一実施例は、UARTが適用される。
【００６０】
トランシーバ２０６は、バス１５０に、通信装置２０４からのデータを送信する。また、トランシーバ２０６は、第１の通信ノード１００からのヘッダを受信し、通信装置２０４に入力する。
【００６１】
＜第２の通信ノード２００１の機能＞
第２の通信ノード２００１の機能の一実施例について説明する。第２の通信ノード２００２−２００ｎの機能は、第２の通信ノード２００１の機能と略同一である。
【００６２】
図５は、第２の通信ノード２００１の機能の一実施例を示す機能ブロック図である。この機能ブロック図により表される機能は、マイクロコントローラ２０２、通信装置２０４、トランシーバ２０６により実行される。
【００６３】
マイクロコントローラ２０２は、アプリケーション２０２２に従って処理を行う。マイクロコントローラ２０２は、第２の負荷共有処理部２０２４と、マスタ故障監視部２０２６と、負荷計測部２０２８と、スケジュール蓄積部２０３０と、応答処理部２０３２として機能する。
【００６４】
アプリケーション２０２２は、他の第２の通信ノードからのレスポンスが自第２の通信ノードを宛先とするものである場合、該レスポンスに含まれるデータを展開する。アプリケーション２０２２は、通信に先だって、通信装置２０４に送信するデータを書き込む。
【００６５】
第２の負荷共有処理部２０２４は、他の第２の通信ノード間で、負荷情報を共有する処理を行う。第２の負荷共有処理部２０２４は、第１の通信ノード１００に故障が発生した場合に、負荷情報を共有する処理を行うのが好ましい。第２の負荷共有処理部２０２４は、第１の通信ノード１００に故障が発生した場合に、該第１の通信ノード１００から送信される負荷問い合わせヘッダへの応答として、他の第２の通信ノードから送信される負荷情報を取得する。第２の負荷共有処理部２０２４は、マスタ故障監視部２０２６に、負荷情報を入力する。
【００６６】
マスタ故障監視部２０２６は、第２の負荷共有処理部２０２４と接続される。マスタ故障監視部２０２６は、第１の通信ノード１００が故障したか否かを判断する。マスタ故障監視部２０２６は、自第２の通信ノードに、負荷問い合わせヘッダが受信されたことにより第１の通信ノード１００が故障したと判断するのが好ましい。マスタ故障監視部２０２６は、負荷問い合わせヘッダが入力されることにより第１の通信ノード１００が故障したと判断した後、第２の負荷共有処理部２０２４からの負荷情報に基づいて、自第２の通信ノードが代理のマスタノードとして機能するか否かを判定する。マスタ故障監視部２０２６は、代理のマスタノードとして機能すると判定した場合、スケジュール蓄積部２０３０に、代理のマスタノードとして機能する指示を行う。
【００６７】
負荷計測部２０２８は、自第２の通信ノードの処理負荷を計測する。負荷計測部２０２８は、マイクロコントローラ２０２のＣＰＵの処理負荷を計測するのが好ましい。また、負荷計測部２０２８は、自第２の通信ノードのメモリ（図示なし）の使用率を計測するようにしてもよい。負荷計測部２０２８は、通信装置２０４に、負荷情報を入力する。
【００６８】
スケジュール蓄積部２０３０は、マスタ故障監視部２０２６、応答処理部２０３２と接続される。スケジュール蓄積部２０３０には、応答処理部２０３２から、自第２の通信ノードに受信されたヘッダが入力される。スケジュール蓄積部２０３０は、応答処理部２０３２からのヘッダに基づいて、スケジュール情報を蓄積する。応答処理部２０３２は、マスタ故障監視部２０２６からの代理のマスタノードとして機能する指示に従って、スケジュール管理を行う。
【００６９】
応答処理部２０３２は、通信装置２０４と、マスタ故障監視部２０２６と、スケジュール蓄積部２０３０と接続される。応答処理部２０３２には、通信装置２０４から、ヘッダが受信されたことが通知される。応答処理部２０３２は、マスタ故障監視部２０２６、スケジュール蓄積部２０３０に、通信装置２０４からヘッダが受信されたことを通知する。
【００７０】
通信装置１０４は、第２の送信ヘッダ格納部２０４２、第２の送信レスポンス格納部２０４４、第２の受信ヘッダ格納部２０４６、第２の受信レスポンス格納部２０４８を有する。
【００７１】
第２の送信ヘッダ格納部２０４２は、自第２の通信ノードから送信するヘッダを一時的に格納する。スケジュール蓄積部２０３０からの指示に従って、第２の送信ヘッダ格納部２０４２は、トランシーバ２０６から、一時的に格納したヘッダを送信する。自第２の通信ノードがマスタノードとして機能する場合に、スケジュール蓄積部２０３０は、第２の送信ヘッダ格納部２０４２にヘッダを送信するように指示するのが好ましい。
【００７２】
第２の送信レスポンス格納部２０４４は、自第２の通信ノードから送信するレスポンスを一時的に格納する。レスポンスは、アプリケーション２０２２から入力される。第２の送信レスポンス格納部２０４４に格納されたレスポンスは、応答処理部２０３２による指示により送信される。
【００７３】
第２の送信レスポンス格納部２０４４は、自第２の通信ノードから送信するレスポンスを一時的に格納する。レスポンスは、負荷計測部２０２８から入力される処理負荷が含まれる。第２の送信レスポンス格納部２０４４に格納されたレスポンスは、応答処理部２０３２による指示により送信される。
【００７４】
第２の受信ヘッダ格納部２０４６は、トランシーバ２０６からのヘッダを格納する。第２の受信ヘッダ格納部２０４６は、トランシーバ２０６からヘッダが入力された際に、応答処理部２０３２に、ヘッダが受信されたことを通知する。
【００７５】
第２の受信レスポンス格納部２０４８は、トランシーバ２０６からのレスポンスを格納する。第２の受信レスポンス格納部２０４８は、アプリケーション２０２２に、レスポンスを入力する。
【００７６】
トランシーバ２０６は、トランシーバ２０６２と、受信処理部２０６４と、送信処理部２０６６とを有する。
【００７７】
トランシーバ２０６２は、バス１５０を伝送する信号を送受信する。トランシーバ２０６２は、バス１５０に送信処理部２０６６からのヘッダ、レスポンスを送信する。トランシーバ２０６２は、受信処理部２０６４にバス１５０からのヘッダ、レスポンスを入力する。
【００７８】
受信処理部２０６４は、第２の受信ヘッダ格納部２０４６にトランシーバ２０６２からのヘッダを入力する。受信処理部２０６４は、第２の受信レスポンス格納部２０４８にトランシーバ２０６２からのヘッダを入力する。
【００７９】
送信処理部２０６６は、トランシーバ２０６２に第２の送信ヘッダ格納部２０４２からのヘッダを入力する。送信処理部２０６６は、トランシーバ２０６２に第２の送信レスポンス格納部２０４４からのレスポンスを入力する。
【００８０】
＜通信システムの動作＞
（１）第１の通信ノード１００がマスタとして機能しており、該第１の通信ノード１００が故障し、第２の通信ノード２００１が代理のマスタノードとして機能する場合の動作について説明する。
【００８１】
図６は、通信システムの動作の一実施例を示す。図６において、横軸は時間である。図６には、故障した第１の通信ノード１００により負荷問い合わせヘッダが送信され、該負荷問い合わせヘッダに対する応答を第２の通信装置間で共有する動作が示される。各第２の通信ノードは、自第２の通信ノードの負荷と他の第２の通信ノードの負荷に基づいて、自第２の通信ノードが代理のマスタノードとして機能するか否かを判断する。
【００８２】
第１の通信ノード１００に故障が発生する。
【００８３】
ステップＳ６０２では、第１の通信ノード１００は、第２の通信ノード２００１に負荷を問い合わせる負荷問い合わせトークンＡを送信する。例えば、第１の負荷共有処理部１０２８は、第１の送信ヘッダ格納部１０４２に、負荷問い合わせヘッダＡを入力する。ヘッダＡには、レスポンスの内容と該レスポンスの送信を要求する通信ノードの識別子（ＩＤ）を含む情報が含まれる。例えば、レスポンスの内容と該レスポンスの送信を要求する通信ノードの識別子（ＩＤ）を含む情報は、ＰＩＤ(Protected ID)と呼ばれる。
【００８４】
図７は、ヘッダに含まれるＰＩＤの一実施例を示す。
【００８５】
例えば、第１の通信ノード１００からＰＩＤが「１」であるヘッダが送信される。該ヘッダを受信した第２の通信ノード２００１は、第１の通信ノード１００にセンサ情報を送信する。
【００８６】
第１の通信ノード１００からＰＩＤが「２」であるヘッダが送信される。該ヘッダを受信した第２の通信ノード２００２は、第１の通信ノード１００にアクチュエータ状態を送信する。
【００８７】
第１の通信ノード１００からＰＩＤが「３」であるヘッダが送信される。該ヘッダを受信した第２の通信ノード２００３は、第１の通信ノード１００に認識結果を送信する。
【００８８】
第１の通信ノード１００からＰＩＤが「１０１」であるヘッダが送信される。該ヘッダを受信した第２の通信ノード２００１は、第１の通信ノード１００に自第２の通信ノード２００１の処理負荷情報を送信する。第２の通信ノード２００１から送信される第２の通信ノード２００１の処理負荷情報は、他の第２の通信ノードにも受信される。
【００８９】
第１の通信ノード１００からＰＩＤが「１０２」であるヘッダが送信される。該ヘッダを受信した第２の通信ノード２００２は、第１の通信ノード１００に自第２の通信ノード２００２の処理負荷情報を送信する。第２の通信ノード２００２から送信される第２の通信ノード２００２の処理負荷情報は、他の第２の通信ノードにも受信される。
【００９０】
第１の通信ノード１００からＰＩＤが「１０３」であるヘッダが送信される。該ヘッダを受信した第２の通信ノード２００３は、第１の通信ノード１００に自第２の通信ノード２００３の処理負荷情報を送信する。第２の通信ノード２００３から送信される第２の通信ノード２００３の処理負荷情報は、他の第２の通信ノードにも受信される。
【００９１】
ステップＳ６０２では、第１の通信ノード１００は、ＰＩＤが「１０１」であるヘッダＡを送信する。バス１５０には、ヘッダＡが送信される。ヘッダはトークンと呼ばれることもある。
【００９２】
第１の通信ノード１００により送信されたヘッダＡは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、ヘッダＡに含まれるＰＩＤを参照し、自第２の通信ノードに該当するか否かを判定する。ここでは、ヘッダＡに、「１０１」が含まれるので、第２の通信ノード２００１は、データ（レスポンス）を送信する。例えば、第２の通信ノード２００１の応答処理部２０３２は、負荷計測部２０２８により計測された処理負荷情報を送信する処理を実行する。
【００９３】
第２の通信ノード２００１から送信されたデータ(第２の通信ノード２００１の負荷情報ｘｘ％)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第２の通信ノード２００１からのデータが受信されたことを確認する。
【００９４】
さらに、第２の通信ノード２００１から送信されたデータ(第２の通信ノード２００１の負荷情報ｘｘ％)は、第２の通信ノード２００２、２００３に受信される。第２の通信ノード２００２、２００３は、第２の負荷共有処理部２０２４に、第２の通信ノード２００１からのデータに含まれる第２の通信ノード２００１の負荷情報を格納する。
【００９５】
ステップＳ６０４では、第１の通信ノード１００は、ＰＩＤが「１０２」であるヘッダＢを送信する。バス１５０には、ヘッダＢが送信される。
【００９６】
第１の通信ノード１００により送信されたヘッダＢは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、ヘッダＢに含まれるＰＩＤを参照し、自第２の通信ノードに該当するか否かを判定する。ここでは、ヘッダＢに、「１０２」が含まれるので、第２の通信ノード２００２は、データ（レスポンス）を送信する。例えば、第２の通信ノード２００２の応答処理部２０３２は、負荷計測部２０２８により計測された処理負荷情報を送信する処理を実行する。
【００９７】
第２の通信ノード２００２から送信されたデータ(第２の通信ノード２００２の負荷情報ｙｙ％)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第２の通信ノード２００２からのデータが受信されたことを確認する。
【００９８】
さらに、第２の通信ノード２００２から送信されたデータ(第２の通信ノード２００２の負荷情報ｙｙ％)は、第２の通信ノード２００１、２００３に受信される。第２の通信ノード２００１、２００３は、第２の負荷共有処理部２０２４に、第２の通信ノード２００２からのデータに含まれる第２の通信ノード２００２の負荷情報を格納する。
【００９９】
ステップＳ６０６では、第１の通信ノード１００は、ＰＩＤが「１０３」であるヘッダＣを送信する。バス１５０には、ヘッダＣが送信される。
【０１００】
ステップＳ６０６では、第１の通信ノード１００により送信されたヘッダＣは、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、ヘッダＣに含まれるＰＩＤを参照し、自第２の通信ノードに該当するか否かを判定する。ここでは、ヘッダＣに、「１０３」が含まれるので、第２の通信ノード２００３は、データ（レスポンス）を送信する。例えば、第２の通信ノード２００３の応答処理部２０３２は、負荷計測部２０２８により計測された処理負荷情報を送信する処理を実行する。
【０１０１】
第２の通信ノード２００３から送信されたデータ(第２の通信ノード２００３の処理負荷情報ｚｚ％)は、第１の通信ノード１００に受信される。第１の通信ノード１００は、第２の通信ノード２００３からのデータが受信されたことを確認する。
【０１０２】
さらに、第２の通信ノード２００３から送信されたデータ(第２の通信ノード２００３の負荷情報ｚｚ％)は、第２の通信ノード２００１、２００２に受信される。第２の通信ノード２００１、２００２は、第２の負荷共有処理部２０２４に、第２の通信ノード２００３からのデータに含まれる第２の通信ノード２００３の処理負荷情報を格納する。
【０１０３】
第２の通信ノード２００３からのデータに含まれる第２の通信ノード２００３の負荷情報が、第２の通信ノード２００１、２００２に格納された後、第１の通信ノード１００、第２の通信ノード２００１、２００２及び２００３はスリープ状態に遷移する。つまり、第１の通信ノード１００、第２の通信ノード２００１、２００２及び２００３は、無通信状態となる。
【０１０４】
この無通信の間に、第２の通信ノード２００１、２００２及び２００３のマスタ故障監視部２０２６は、第２の負荷共有処理部２０２４から、他の第２の通信ノードの処理負荷情報を取得し、自第２の通信ノードの処理負荷と比較するのが好ましい。マスタ故障監視部２０２６は、自第２の通信ノードの処理負荷が一番低いか否かを判定する。
【０１０５】
通信システムの一実施例では、第２の通信ノード２００１の処理負荷が一番低いと判定される。
【０１０６】
第２の通信ノード２００１のマスタ故障監視部２０２６は、スケジュール蓄積部２０３０に、代理のマスタノードとして機能するように指示する。スケジュール蓄積部２０３０は、マスタ故障監視部２０２６からの指示に従って、スケジュール管理を実行する。
【０１０７】
ステップＳ６０８では、第１の通信ノード１００は、ＰＩＤが「２」であるヘッダ１を送信する。バス１５０には、ヘッダ１が送信される。
【０１０８】
第１の通信ノード１００により送信されたヘッダ１は、第２の通信ノード２００１−２００３に受信される。第２の通信ノード２００１−２００３は、ヘッダ１に含まれるＰＩＤを参照し、自第２の通信ノードに該当するか否かを判定する。ここでは、ヘッダ１に、「２」が含まれるので、第２の通信ノード２００２は、データ（レスポンス）を送信する。例えば、第２の通信ノード２００２の応答処理部２０３２は、第２の送信レスポンス格納部２０４４に格納されたデータを送信する処理を実行する。
【０１０９】
第２の通信ノード２００２から送信されたデータは、第２の通信ノード２００１に受信される。
【０１１０】
＜第２の通信ノード２００１〜２００ｎの動作（その１）＞
図８は、第２の通信ノード２００１〜２００ｎの動作の一実施例を示す。図８は、主に、第１の通信ノード１００が故障する前の動作が示される。
【０１１１】
ステップＳ８０２では、第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００からのヘッダを受信する。つまり、第１の通信ノード１００からのヘッダは、バス１５０を介して、トランシーバ２０６２から、受信処理部２０６４に入力される。
【０１１２】
ステップＳ８０４では、第２の通信ノード２００１〜２００ｎは、ヘッダを蓄積し、解析する。つまり、ヘッダは、第２の受信ヘッダ格納部２０４６を介して、応答処理部２０３２に入力される。応答処理部２０３２は、マスタ故障監視部２０２６、スケジュール蓄積部２０３０に、ヘッダを入力する。
【０１１３】
ステップＳ８０６では、第２の通信ノード２００１〜２００ｎは、スケジュール情報を蓄積する。つまり、スケジュール蓄積部２０３０は、ヘッダに含まれるＰＩＤに基づいて、ＰＩＤ毎の送信周期等のスケジュール情報を蓄積する。
【０１１４】
ステップＳ８０８では、第２の通信ノード２００１〜２００ｎは、第１の通信ノード１００が故障しているか否かを判断する。つまり、マスタ故障監視部２０２６は、応答処理部２０３２からのヘッダに基づいて、第１の通信ノード１００が故障しているか否かを判断する。ここでは、第１の通信ノード１００が故障する前の動作であるため、第１の通信ノードは故障していないと判断される。
【０１１５】
ステップＳ８１０では、第２の通信ノード２００１〜２００ｎは、ヘッダが自第２の通信ノード宛である場合、レスポンスを送信する。
【０１１６】
＜第１の通信ノード１００の動作（その１）＞
図９は、第１の通信ノード１００の動作の一実施例を示す。図９は、主に、第１の通信ノード１００に故障が発生した際の動作が示される。
【０１１７】
ステップＳ９０２では、第１の通信ノード１００に故障が発生する。
【０１１８】
ステップＳ９０４では、第１の通信ノード１００は、通信が可能であるか否かを判断する。つまり、第１の負荷共有処理部１０２８は、故障の事象に基づいて、通信が可能であるか否かを判定する。通信が可能でない場合、終了する。
【０１１９】
ステップＳ９０６では、ステップＳ９０４で通信が可能であると判定された場合、第１の通信ノード１００は、第２の通信ノードに処理負荷を問い合わせる。つまり、第１の負荷共有処理部１０２８は、負荷問い合わせヘッダを作成し、第１の送信ヘッダ格納部１０４２に入力する。第１の送信ヘッダ格納部１０４２に格納された負荷問い合わせヘッダは、送信処理部１０６６を介して、トランシーバ１０６２から送信される。
【０１２０】
ステップＳ９０８では、第１の通信ノード１００は、全ての第２の通信ノードへの処理負荷問い合わせが終了したか否かを判定する。つまり、第１の負荷共有処理部１０２８は、第１の通信ノード１００と通信可能な第２の通信ノードの全てに負荷問い合わせが終了したか否かを判定する。第１の通信ノード１００と通信可能な第２の通信ノードの全てに負荷問い合わせが終了していない場合、ステップＳ９０６に戻る。
【０１２１】
ステップＳ９１０では、ステップＳ９０８で第１の通信ノード１００と通信可能な第２の通信ノードの全てに負荷問い合わせが終了したと判定された場合、通信を終了する。つまり、プロトコルに従って、ネットワークはスリープ状態に遷移する。スリープ状態では、通信は行われない。
【０１２２】
＜第２の通信ノード２００１〜２００ｎの動作（その２）＞
図１０は、第２の通信ノード２００１〜２００ｎの動作の一実施例を示す。図１０は、主に、第１の通信ノード１００に故障が発生した後の第２の通信ノード２００１〜２００ｎの動作が示される。
【０１２３】
ステップＳ１００２では、第２の通信ノード２００１〜２００ｎは、順次負荷問い合わせヘッダを受信する。第１の通信ノード１００からの負荷問い合わせヘッダは、第２の通信ノード２００１〜２００ｎのそれぞれのトランシーバ２０６２から、受信処理部２０６４に入力される。
【０１２４】
ステップＳ１００４では、第２の通信ノード２００１〜２００ｎの各々は、負荷問い合わせヘッダが自第２の通信ノード宛であるか否かを判断する。つまり、応答処理部２０３２は、第２のヘッダ格納部２０４６に格納された負荷問い合わせヘッダに含まれるＰＩＤに基づいて、自第２の通信ノード宛であるか否かを判定する。
【０１２５】
ステップＳ１００６では、ステップＳ１００４で自第２の通信ノード宛であると判断した場合、第２の通信ノード２００１〜２００ｎのうちの１つは、処理負荷情報を含むレスポンスを送信する。つまり、応答処理部２０３２は、第２の送信レスポンス格納部２０４４に格納される負荷計測部２０２８により計測された自第２の通信ノードの処理負荷情報を送信する処理を行う。自第２の通信ノードの処理負荷情報を送信する処理を行った後、ステップＳ１００２に戻る。
【０１２６】
ステップＳ１００８では、第２の通信ノード２００１〜２００ｎのうち、ステップＳ１００４で自第２の通信ノード宛でないと判断した第２の通信ノードは、他の第２の通信ノードにより送信されたレスポンスを受信する。つまり、他の第２の通信ノードにより送信されたレスポンスは、ステップＳ１００４で自第２の通信ノード宛でないと判断した第２の通信ノードのトランシーバ２０６２から、受信処理部２０６４に入力される。
【０１２７】
ステップＳ１０１０では、第２の通信ノード２００１〜２００ｎは、処理負荷情報を蓄積する。つまり、第２の負荷共有処理部２０２４は、第２の送信レスポンス格納部２０４８に格納されるレスポンスに含まれる処理負荷情報を蓄積する。
【０１２８】
ステップＳ１０１２では、第２の通信ノード２００１〜２００ｎは、全ての第２の通信ノードからの処理負荷情報を蓄積したか否かを判定する。つまり、第２の負荷共有処理部２０２４は、全ての第２の通信ノードからの処理負荷情報を蓄積したか否かを判定する。全ての第２の通信ノードからの処理負荷情報を蓄積していないと判定した場合、ステップＳ１００８に戻る。
【０１２９】
ステップＳ１０１４では、ステップＳ１０１２で、全ての第２の通信ノードからの処理負荷情報を蓄積したと判定した場合、第２の通信ノード２００１〜２００ｎは、自第２の通信ノードが代理のマスタノードとして機能するか否かを判定する。つまり、マスタ故障監視部２０２６は、第２の負荷共有処理部２０２４から処理負荷情報を取得し、代理のマスタノードとして機能するか否かを判定する。例えば、自第２の通信ノードの処理負荷が他の第２の通信ノードの処理負荷よりも低い場合に、代理のマスタノードとして機能すると判定するのが好ましい。
【０１３０】
ステップＳ１０１６では、ステップＳ１０１４において自第２の通信ノードが代理のマスタノードとして機能すると判定した第２の通信ノードは、マスタノードとして機能する。つまり、ステップＳ１０１４において自第２の通信ノードが代理のマスタノードとして機能すると判定した場合、マスタ故障監視部２０２６は、スケジュール蓄積部２０３０に代理マスタノードとして機能する指示を行う。スケジュール蓄積部２０３０は、蓄積したスケジュール情報に基づいて、スケジュール管理を実行する。
【０１３１】
ステップＳ１０１８は、ステップＳ１０１４において自第２の通信ノードが代理のマスタノードとして機能しないと判定した第２の通信ノードは、スレーブノードとして機能し続ける。
【０１３２】
＜第２の通信ノード２００１〜２００ｎの動作（その３）＞
例えば、通信システムの一実施例が適用されるLINでは、所定の期間通信が無い場合には、スリープ状態へと遷移する。スリープ状態に遷移した後、スレーブノードからマスタノードへのウェイクアップ要求により、スリープ状態が解除され、スタンバイ状態へと遷移する。スタンバイ状態へ遷移することにより、通信が再開される。
【０１３３】
マスタノードが故障している場合には、所定の期間通信が無くスリープ状態へと遷移した後に、スレーブノードからマスタノードへウェイクアップ要求が送信されても、該ウェイクアップ要求にマスタノードが応答できないため、スリープ状態が解除されないため、通信が再開されない。
【０１３４】
通信システムの一実施例では、スリープ状態へと遷移した後に、スレーブノードからマスタノードへウェイクアップ要求が送信されても、該ウェイクアップ要求にマスタノードが応答しない場合に、マスタノードが故障していると判定する。
【０１３５】
図１１は、第２の通信ノード２００１〜２００ｎの動作の一実施例を示す。図１１には、第２の通信ノード２００１〜２００ｎが、第１の通信ノード１００に故障が発生したか否かを判断する処理が示される。
【０１３６】
ステップＳ１１０２では、第２の通信ノード２００１〜２００ｎは、無通信状態が所定の期間継続したか否かを判定する。例えば、第１の通信ノード１００が故障している場合には、無通信状態が所定の期間継続するため、スリープ状態へ遷移する。
【０１３７】
無通信状態が所定の期間継続していない場合には、終了する。この場合、通信状態が継続しているため、第１の通信ノード１００は故障していないと判定される。
【０１３８】
ステップＳ１１０４では、ステップＳ１１０２において無通信状態が所定の期間継続したと判定された場合、第２の通信ノード２００１〜２００ｎは送信データがあるか否かを判定する。つまり、アプリケーション２０２２は、送信データがあるか否かを判定する。送信データがない場合には、終了する。
【０１３９】
ステップＳ１１０６では、ステップＳ１１０４において送信データがあると判定した第２の通信ノードはウェイクアップ要求を実行する。つまり、アプリケーション２０２２によりウェイクアップ要求が作成され、該ウェイクアップ要求は、通信装置２０４を介して、トランシーバ２０６から送信される。
【０１４０】
ステップＳ１１０８では、第２の通信ノード２００１〜２００ｎはウェイクアップが完了したか否かを判定する。例えば、マスタ故障監視部２０２６は、送信データがあると判定した第２の通信ノードからウェイクアップ要求が送信された後に、第１の通信ノード１００がウェイクアップしたか否かを判定することにより、ウェイクアップが完了したか否かを判定する。マスタ故障監視部２０２６は、第１の通信ノード１００がウェイクアップした場合に、ウェイクアップが完了したと判定するのが好ましい。ウェイクアップが完了した場合、終了する。この場合、第１の通信ノード１００は故障していないと判定される。
【０１４１】
ステップＳ１１１０では、ステップＳ１１０８においてウェイクアップが完了しないと判定された場合、第２の通信ノード２００１〜２００ｎは、自第２の通信ノードが代理のマスタノードとして機能するか否かを判定する代理マスタ処理を実行する。つまり、第２の通信ノード２００１〜２００ｎのうち、処理負荷が一番低い第２の通信ノードが代理のマスタノードとして機能する。代理のマスタノードとして機能する第２の通信ノードのマスタ監視部２０２６は、スケジュール蓄積部２０３０に代理マスタノードとして機能する指示を実行する。スケジュール蓄積部２０３０は、マスタ故障監視部２０２６からの指示に従って、スケジュール管理を実行する。
【０１４２】
ステップＳ１１１０において、第２の通信ノード２００１〜２００ｎのうち、処理負荷が一番低い第２の通信ノードが複数ある場合には、マスタ監視部２０２６は、自第２の通信ノードのＰＩＤと、他の第２の通信ノードのＰＩＤに基づいて、代理のマスタノードとして機能するか否かを判定するようにしてもよい。例えば、第２の通信ノードは、自第２の通信ノードのＰＩＤの値が一番小さい場合に、代理のマスタノードとして機能すると判定する。また、処理負荷が一番低い第２の通信ノードが複数ある場合に、代理のマスタノードとして機能する第２の通信ノードの優先順位を予め設定し、該設定に従って代理のマスタノードとして機能するか否かを判定するようにしてもよい。
【０１４３】
上述した実施例において、第１の通信ノード１００からの処理負荷の問い合わせは、自第１の通信ノード１００に故障が発生した場合以外に実行されてもよい。例えば、第２の通信ノード２００１〜２００ｎの処理負荷が変化する可能性が高いと想定される事象が発生した場合に実行されるのが好ましい。具体的には、シフト変化、ドアの開閉が実行された場合に行われるのが好ましい。
【０１４４】
また、第２の通信ノード２００１〜２００ｎにスケジューリング情報を予め実装するようにしてもよい。このようにすることにより、第２の通信ノード２００１〜２００ｎが、第１の通信ノード１００、他の第２の通信ノードからヘッダに基づいて、スケジュール情報を蓄積する処理を削減できる。
【０１４５】
また、第２の通信ノード２００１〜２００ｎから代理のマスタノードとして機能するものを予め設定した優先順位に従って決定するようにしてもよい。
【０１４６】
通信システムの一実施例によれば、通信バス上のデータ送信タイミングを制御する特定の通信ノードが故障した際に、他の通信ノードの１つが該特定の通信ノードの代わりに送信タイミングを制御する。このため、通信バス上のデータ送信タイミングを制御する特定の通信ノードが故障した場合でも、他の通信ノード間で通信を継続することができる。
【０１４７】
また、特定の通信ノードの代わりに送信タイミングを制御する通信ノードを処理負荷に基づいて決定することにより、処理負荷に余裕のある通信ノードが送信タイミングを制御する通信ノードとして機能する。このため、特定の通信ノードの代わりに送信タイミングを制御する通信ノードの処理負荷が過大となるのを防止できる。
【０１４８】
また、通信バス上のデータ送信タイミングを制御する特定の通信ノードが故障した際に、リアルタイムに、該特定の通信ノードの代わりに送信タイミングを制御する他の通信ノードを選択することができる。
【０１４９】
以上、本発明は特定の実施例及び変形例を参照しながら説明されてきたが、各実施例及び変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウエアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【０１５０】
１００  第１の通信ノード
１０２  マイクロコントローラ
１０４  通信装置
１０６  トランシーバ
１５０  バス
２００１〜２００ｎ（ｎは、ｎ＞１の整数）  第２の通信ノード
２０２  マイクロコントローラ
２０４  通信装置
２０６  トランシーバ
１０２２  アプリケーション
１０２４  スケジュール管理部
１０２６  応答処理部
１０２８  第１の負荷共有処理部
２０２２  アプリケーション
２０２４  第２の負荷共有処理部
２０２６  マスタ故障監視部
２０２８  負荷計測部
２０３０  スケジュール蓄積部
２０３２  応答処理部
【図１】
2014154998.tif 000003
【図２】
2014154998.tif 000004
【図３】
2014154998.tif 000005
【図４】
2014154998.tif 000006
【図５】
2014154998.tif 000007
【図６】
2014154998.tif 000008
【図７】
2014154998.tif 000009
【図８】
2014154998.tif 000010
【図９】
2014154998.tif 000011
【図１０】
2014154998.tif 000012
【図１１】
2014154998.tif 000013