(57)【要約】【課題】あるスレーブノードのスケジューリングの変更が他のスレーブノードへ及ぼす影響を低減させるること。【解決手段】第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムの第１の通信ノードは、複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当てるスケジューリング部と、該スケジューリング部により割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部とを有する。【選択図】図４
2014171010.tif 000002
【特許請求の範囲】
【請求項１】
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当てるスケジューリング部と、
該スケジューリング部により割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部と
を有する、通信システム。
【請求項２】
前記スケジューリング部は、前記第２の通信ノードへのメッセージを変更する際に、該変更したメッセージを該第２の通信ノードに設定されたスロットに割り当てる、請求項１に記載の通信システム。
【請求項３】
前記スケジューリング部は、前記第２の通信ノードへのメッセージを再送する際に、該再送するメッセージを該第２の通信ノードに設定されたスロットに割り当てる、請求項１に記載の通信システム。
【請求項４】
前記スケジューリング部は、前記第２の通信ノードへのメッセージの割込みが発生した際に、該メッセージを該第２の通信ノードに設定されたスロットに割り当てる、請求項１に記載の通信システム。
【請求項５】
前記スケジューリング部は、前記第１の通信ノードの状態が遷移し、該状態の遷移に伴って、前記第２の通信ノードへのメッセージを変更する際に、該変更したメッセージを該第２の通信ノードに設定されたスロットに割り当てる、請求項１に記載の通信システム。
【請求項６】
前記スケジューリング部は、前記第２の通信ノードへのメッセージに通信エラーが発生した場合に、エラー状態を通知するメッセージを該第２の通信ノードに設定されたスロットに割り当てる、請求項１に記載の通信システム。
【請求項７】
前記スケジューリング部は、前記第２の通信ノードへのメッセージに通信エラーが発生した場合に、通信を終了することを通知するメッセージを該第２の通信ノードに設定されたスロットに割り当てる、請求項１に記載の通信システム。
【請求項８】
複数の第２の通信ノードと通信を行う通信ノードであって、
前記複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当てるスケジューリング部と、
該スケジューリング部により割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部と
を有する、通信ノード。
【請求項９】
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当て、
該により割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部と
を有する、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。
【背景技術】
【０００２】
車両には、該車両内の様々な制御を行うために車載ネットワークが構成されることが多い。車載ネットワークは、LANに、多くの電子制御ユニット(ECU: Electronic Control Unit)、センサ、アクチュエータ等が接続されることにより実現される。以下、車載ネットワークに接続される、電子制御ユニット、センサ、アクチュエータ等を通信ノードと呼ぶ。該通信ノードは、車両内の様々な位置に設置される。通信ノード間は、通信線や電線により接続される。
【０００３】
例えば、データバスに、複数の通信ノードが接続されることにより、車載ネットワークが構成される。該車載ネットワークには、CAN(Controller Area Network)、LIN(Local Interconnect Network)が含まれる。また、該車載ネットワークには、 FlexRay（登録商標）に従って通信を行うものが含まれてもよい。
【０００４】
例えば、LINは、ドアミラー、パワーシート、サンルーフ、ドアロック、エアコン、照明等に使用される。LINに従って通信を行う車載ネットワークでは、マスタスレーブ方式が採用される。マスタスレーブ方式では、車載ネットワークに含まれる通信ノードのうち、１つの通信ノードがマスターノードとされ、他の通信ノードはスレーブノードとされる。マスターノードは、スレーブノードの通信スケジュールを管理する。スレーブノードは、マスターノードの要求に従いレスポンスを返す。
【０００５】
LINに従って通信を行う車載ネットワークでは、パリティ、チェックサム等で、データの誤りが検出されることがある。
【０００６】
運転状況に応じて、通信スケジュールテーブルの内容を任意に変更するとともに、通信フレームの送受信タイミングを任意に変更する技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１０−２６８０６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
例えば、LINでは、独特でかつ複雑なスケジューリングを要求するスレーブノードを有するものが多い。このため、各スレーブノードの要求に応じてスケジューリングするのは困難である。
【０００９】
例えば、あるスレーブノードで発生した通信エラーにより該あるスレーブノードのスケジューリングが変更された場合、該スケジューリングの変更が他のスレーブノードのスケジューリングに影響を及ぼすおそれがある。スケジューリングの変更の影響を受けた他の通信ノードは、スケジューリングに従って、動作できない場合がある。
【００１０】
本発明は、あるスレーブノードのスケジューリングの変更が他のスレーブノードへ及ぼす影響を低減させることである。
【課題を解決するための手段】
【００１１】
開示の一実施例の通信システムは、
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムであって、
前記第１の通信ノードは、
前記複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当てるスケジューリング部と、
該スケジューリング部により割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部と
を有する。
【００１２】
開示の一実施例の通信ノードは、
複数の第２の通信ノードと通信を行う通信ノードであって、
前記複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当てるスケジューリング部と、
該スケジューリング部により割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部と
を有する。
【００１３】
開示の一実施例の通信方法は、
第１の通信ノードと、該第１の通信ノードと通信を行う複数の第２の通信ノードとを有する通信システムにおける通信方法であって、
前記第１の通信ノードは、
前記複数の第２の通信ノードの各々へ設定されたスロットに基づいて、第２の通信ノードへのメッセージを該第２の通信ノードに設定されたスロットに割り当て、
該割り当てたスロットで、前記第２の通信ノードへメッセージを送信する送信部と
を有する。
【発明の効果】
【００１４】
開示の実施例によれば、あるスレーブノードのスケジューリングの変更が他のスレーブノードへ及ぼす影響を低減させることができる。
【図面の簡単な説明】
【００１５】
【図１】通信システムの一実施例を示す図である。
【図２】フレームフォーマットの一実施例を示す図である。
【図３】マスターノードの一実施例を示す図である。
【図４】マスターノードの一実施例を示す機能ブロック図である。
【図５】スケジューリングの一実施例（その１）を示す図である。
【図６】通信システムの動作の一実施例（その１）を示すフローチャートである。
【図７】スケジューリングの一実施例（その２）を示す図である。
【図８】通信システムの動作の一実施例（その２）を示すフローチャートである。
【図９】スケジューリングの一実施例（その３）を示す図である。
【図１０】通信システムの動作の一実施例（その３）を示すフローチャートである。
【図１１】スケジューリングの一実施例（その４）を示す図である。
【図１２】通信システムの動作の一実施例（その４）を示すフローチャートである。
【図１３】スケジューリングの一実施例（その５）を示す図である。
【図１４】通信システムの動作の一実施例（その５）を示すフローチャートである。
【図１５】スケジューリングの一実施例（その６）を示す図である。
【図１６】通信システムの動作の一実施例（その６）を示すフローチャートである。
【発明を実施するための形態】
【００１６】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。以下で説明する実施例は一例に過ぎず、本発明が適用される実施の形態は、以下の実施例に限られない。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００１７】
＜実施例＞
＜通信システム＞
図１は、通信システムの一実施例を示す。
【００１８】
通信システムは、複数の通信ノードを有する。通信システムは、単線ネットワークであってもよい。複数の通信ノードによりクラスタが構成されてもよい。
【００１９】
複数の通信ノードには、マスターノード１００と、スレーブノード２００１−スレーブノード２００ｎ（ｎは、ｎ＞１の整数）とが含まれる。
【００２０】
通信システムでは、特定の通信ノードが、通信バス上のデータ送信タイミングを制御する。特定の通信ノードが通信バス上のデータ送信タイミングを制御する方式には、マスタスレーブ方式が含まれる。通信システムの一実施例は、マスタスレーブ方式が適用される場合について説明する。
【００２１】
マスタスレーブ方式が適用される通信システムには、LINが含まれる。従って、通信システムの一実施例は、LINが適用される場合について説明する。LINに限らず、特定の通信ノードが通信バス上のデータ送信タイミングを制御する通信システムに適用できる。
【００２２】
マスターノード１００は、メッセージを送信するタイミングを制御する。マスターノード１００は、メッセージに含まれるヘッダーを送信するタイミングをスケジューリングする。スケジューリングの際に、送信するメッセージのID（識別子）、送信の順番、送信する時間間隔等が設定されるのが好ましい。
【００２３】
マスターノード１００、スレーブノード２００１−スレーブノード２００ｎは、通信バス３００を介して有線接続される。マスターノード１００とスレーブノード２００１−スレーブノード２００ｎとの間で、通信バス３００を介して所定の通信プロトコルに従って通信が行われる。具体的には、LINに従って通信が行われる。
【００２４】
通信バス３００を流れる信号は、２つの論理レベルのどちらかの状態を有する。該２つの論理レベルの状態は、「ドミナント（dominant）」と、「リセッシブ（recessive）」と呼ばれる。ドミナントは、グラウンド電位に近い、論理レベル０の状態である。リセッシブは、バッテリの＋（プラス）端子の電位に近い、論理レベル１の状態である。
【００２５】
マスターノード１００は、所定のフレームフォーマットに従ってメッセージを送信する。
【００２６】
＜フレームフォーマット＞
図２は、マスターノード１００とスレーブノード２００１−スレーブノード２００ｎとの間で送受信されるフレームフォーマットの一実施例を示す。
【００２７】
フレームは、ヘッダーと、レスポンスを含む。ヘッダーはマスターノード１００から送信され、レスポンスはスレーブノード２００１−スレーブノード２００ｎのいずれかから送信される。
【００２８】
ヘッダーには、ブレークフィールド(Break field)と、シンクフィールド(Sync field)と、プロテクテッドアイデンティファイアーフィールド(Protected identifier field)とが含まれる。
【００２９】
ブレークフィールドは、クラスタの全スレーブノードに、フレームの開始を通知するためのフィールドである。ブレークフィールドのドミナント継続時間は、１３ビット長以上であるのが好ましい。
【００３０】
シンクフィールドは、クラスタに含まれる通信ノード間のクロック誤差の補正に使用される。
【００３１】
プロテクテッドアイデンティファイアーフィールドは、フレームの識別番号を表す６ビット（０〜５ビット）のフレームＩＤと、２ビット（６、７ビット）のパリティの合計８ビットで構成されるのが好ましい。
【００３２】
レスポンスには、データフィールド(Data Field)と、チェックサム(Checksum)が含まれるのが好ましい。データフィールドと、チェックサムは、UART(Universal Asynchronous Receiver/Transmitter)フレームで送信されるのが好ましい。データフィールドは、１個であってもよいし、複数であってもよい。各データフィールドには、最大８バイトのデータを格納できる。チェックサムは、データを正確に受信できたかどうかを判断する際に使用される。具体的には、チェックサムには、各データの値の総和を反転した値が格納される。
【００３３】
また、ヘッダーは４７ビット以下、レスポンスは１２６ビット以下であるのが好ましい。
【００３４】
また、隣接するフレーム間には、フレーム間間隔(Inter-frame space)（図示なし）が設定される。
【００３５】
＜マスターノード＞
図３は、マスターノード１００を示す。
【００３６】
マスターノード１００は、マイクロコントローラユニット(MCU: Micro-Control Unit)１０２と、トランシーバ１０６とを有する。
【００３７】
マイクロコントローラユニット１０２には、１又は複数のマイコンが含まれる。マイコンの代わりにＣＰＵが含まれてもよいし、マイコンとＣＰＵとが混在していてもよい。さらに、マイクロコントローラユニット１０２には、通信装置１０４が含まれる。通信装置１０４はトランシーバ１０６との間で、シリアル通信を行う。具体的には、該通信装置１０４は、ＵＡＲＴであってもよい。
【００３８】
トランシーバ１０６は、マイクロコントローラユニット１０２、通信バス３００と接続される。トランシーバ１０６は、マイクロコントローラユニット１０２から入力されたデータを通信バス３００に送信し、通信バス３００からのデータをマイクロコントローラユニット１０２に入力する。
【００３９】
マスターノード１００が複数のマイクロコントローラユニットを有するようにしてもよい。また、マスターノード１００が複数のトランシーバを有するようにしてもよい。
【００４０】
＜マスターノードの機能＞
マスターノード１００は、メッセージに含まれるヘッダーを送信するタイミングをスケジューリングする。マスターノード１００は、スケジューリングに従って、送信するメッセージに対応するメッセージＩＤを含むメッセージ（ヘッダー）を送信する。
【００４１】
図４は、マスターノード１００を示す機能ブロック図である。図４の機能ブロック図により表される機能は、主に、マイクロコントローラ１０２により実行される。つまり、マイクロコントローラ１０２は、マスター機能部１１０として機能する。
【００４２】
マイクロコントローラ１０２の内部に記憶されたアプリケーション（ファームウェア）に従ってマイクロコントローラ１０２により、マスター機能部１１０としての機能が実行されるのが好ましい。また、記憶部（図示無し）に記憶されたアプリケーションに従ってマイクロコントローラ１０２により、マスター機能部１１０としての機能が実行されてもよい。
【００４３】
マスターノード１００は、マスター機能部１１０として機能する。マスター機能部１１０は、スケジューリング部１１２と、メッセージ作成部１１４と、フレーム送信制御部１１６と、フレーム受信制御部１１８とを有する。
【００４４】
マイクロコントローラ１０２は、スケジューリング部１１２として機能する。スケジューリング部１１２は、スレーブノード２００１−スレーブノード２００ｎに割り当てるスロットの配分を設定する。スケジューリング部１１２は、スレーブノード２００１−スレーブノード２００ｎに割り当てるスロットの数の配分に従って各スレーブノードにスロットを割り当てる。スケジューリング部１１２は、各スレーブノードに連続するスロットを割り当てるのが好ましい。例えば、スレーブノード２００１−スレーブノード２００ｎに割り当てるスロットの数の配分に応じたスロットを順次割り当てる。スロットを割り当てるスレーブノードの順番は、予め設定されるのが好ましい。例えば、割り当てるスロットの数が少ない順に、スロットを割り当てるスレーブノードの順番が設定されてもよいし、割り当てるスロットの数が多い順に、スロットを割り当てるスレーブノードの順番が設定されてもよい。また、ランダムに、スロットを割り当てるスレーブノードの順番が設定されてもよい。
【００４５】
スケジューリング部１１２は、連続する各スロットに割り当てるスレーブノードを維持しつつスケジューリングを行う。
【００４６】
メッセージ作成部１１４は、スケジューリング部１１２と接続される。メッセージ作成部１１４は、スケジューリング部１１２によるスケジューリングに従って、送信するメッセージに対応するメッセージＩＤを含むメッセージを作成する。メッセージ作成部１１４は、フレーム送信制御部１１６にメッセージを入力する。つまり、メッセージ作成部１１４は、メッセージＩＤに基づいて、フレーム送信制御部１１６にブレークフィールド、シンクフィールド、プロテクテッドアイデンティファイアーフィールドを入力する。
【００４７】
フレーム送信制御部１１６は、メッセージ作成部１１４と接続される。フレーム送信制御部１１６は、メッセージ作成部１１４からのメッセージを送信する制御を実行する。
【００４８】
フレーム送信制御部１１６による送信制御により、メッセージは、トランシーバ１０６から送信される。
【００４９】
フレーム受信制御部１１８は、スケジューリング部１１２と接続される。フレーム受信制御部１１８は、メッセージに対するレスポンスを受信する制御を実行する。フレーム受信制御部１１８は、レスポンスの受信結果をスケジューリング部１１２に通知する。フレーム受信制御部１１８は、レスポンスの受信に関して、肯定応答又は否定応答をスケジューリング部１１２に通知するのが好ましい。
【００５０】
スケジューリング部１１２は、フレーム受信制御部１１８からのレスポンスの受信結果に応じて、再送制御などを行う。
【００５１】
＜スケジューリング例（その１）＞
図５は、マスターノード１００におけるスケジューリングの一実施例（その１）を示す。
【００５２】
図５には、一例として、マスターノード１００が、スレーブノード２００１とスレーブノード２００２をスケジューリングする場合について示す。スレーブノードが３台以上である場合についても同様である。
【００５３】
スケジューリング部１１２は、スレーブノード２００１とスレーブノード２００２に割り当てるスロットの数の配分を設定する。ここでは、スレーブノード２００１に割り当てるスロットの数とスレーブノード２００２に割り当てるスロットの数の配分が１対２である。スケジューリング部１１２は、スレーブノード２００１、スレーブノード２００２に割り当てるスロットの数の配分に従って各スレーブノードにスロットを順次割り当てる。スロットを順次割り当てる結果、図５（２）に示すように、スロット１T、4T、７T、・・・には、スレーブノード２００１が割り当てられる。スロット2T、3T、5T、6T、8T、9T、・・・には、スレーブノード２００２が割り当てられる。
【００５４】
図５（３）に示すように、スレーブノード２００１は、マスターノード１００からのメッセージをスロット1T、4T、７T、・・・により受信することができる。
【００５５】
図５（１）に示すように、スレーブノード２００２は、マスターノード１００からのメッセージをスロット2T、3T、5T、6T、8T、9T、・・・により受信することができる。
【００５６】
図６は、マスターノード１００におけるスケジューリング処理を示す。図６には、主に、スケジューリング部１１２による処理が示される。図６において、スレーブノード２００１は「Ａ」により表され、スレーブノード２００２は「Ｂ」により表される。
【００５７】
図５に示されるスケジューリングの一実施例において、スロット1T、2T、3Tには、それぞれスレーブノード２００１、スレーブノード２００２、スレーブノード２００２が割り当てられ、以降同様の割り当てが継続する。つまり、３スロットを１単位として、スレーブノードが割り当てられる。３スロットのうち、最初の１スロットにはスレーブノード２００１へのメッセージが割り当てられ、続く２スロットにはスレーブノード２００２へのメッセージが割り当てられる。図６に示されるフローチャートでは、１単位となる３スロットの各々をスロットＮｏという。つまり、３スロットのうち、最初の１スロットを「スロットＮｏ１」、次のスロットを「スロットＮｏ２」、最後のスロットを「スロットＮｏ３」という。また、１単位となるスロットの数の最大値を「スロットＭＡＸ」という。この場合、スロットＭＡＸは「３」となる。
【００５８】
また、各スロットに、スレーブノードへのメッセージを割り当てる処理をスケジューリングＮｏという。つまり、３スロットのうち、最初の１スロットにおいて、スレーブノード２００１へのスケジューリングＮｏ１によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ１によりメッセージが割り当てられ、最後のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ２によりメッセージが割り当てられる。また、スレーブノードへメッセージを割り当てるスケジューリングの数、つまりスケジューリングＮｏの最大値を「スケジューリングＭＡＸ」という。この場合、スレーブノード２００１へのスケジューリングのスケジューリングＭＡＸは「１」となり、スレーブノード２００２へのスケジューリングのスケジューリングＭＡＸは「２」となる。
【００５９】
図６は、あるスロットが送信された後に送信されるスロットにおける処理を示す。
【００６０】
ステップＳ６０２では、マスターノード１００は、スロットＮｏを増加させる。
【００６１】
ステップＳ６０４では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超えるか否かを判定する。ここでは、３スロットを１単位としているため、スロットＭＡＸは３となる。
【００６２】
ステップＳ６０６では、ステップＳ６０４においてスロットＮｏがスロットＭＡＸを超えると判定した場合、マスターノード１００は、スロットＮｏを１に設定する。
【００６３】
ステップＳ６０８では、ステップＳ６０４においてスロットＮｏがスロットＭＡＸを超えないと判断した場合、又はステップＳ６０６においてスロットＮｏを１に設定した後、マスターノード１００は、スロットがＡに割り当てるものであるか否かを判定する。
【００６４】
ステップＳ６１０では、ステップＳ６０８においてスロットがＡに割り当てるものであると判定した場合、マスターノード１００は、Ａへのメッセージを該スロットを割り当てるＡスケジューリングＮｏを増加させる。
【００６５】
ステップＳ６１２では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えるか否かを判定する。
【００６６】
ステップＳ６１４では、ステップＳ６１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＡスケジューリングＮｏを１に設定する。
【００６７】
ステップＳ６１６では、ステップＳ６１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えないと判定した場合、又はステップＳ６１４においてＡスケジューリングＮｏを１に設定した後、マスターノード１００は、ＡスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ａへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【００６８】
ステップＳ６１８では、ステップＳ６０８においてスロットがＡに割り当てるものでないと判定した場合、マスターノード１００は、Ｂへのメッセージを該スロットを割り当てるＢスケジューリングＮｏを増加させる。
【００６９】
ステップＳ６２０では、マスターノード１００は、ＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【００７０】
ステップＳ６２２では、ステップＳ６２０においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＢスケジューリングＮｏを１に設定する。
【００７１】
ステップＳ６２４では、ステップＳ６２０においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ６２２においてＢスケジューリングＮｏを１に設定した後、マスターノード１００は、ＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、Ｂへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【００７２】
ステップＳ６２６では、マスターノード１００は、ステップＳ６１６において選択されたフレーム又はステップＳ６２４において選択されたフレームを送信する。
【００７３】
スケジューリング例（その１）によれば、複数のスレーブノードに割り当てるスロットの配分に従って、各スレーブノードにスロットを割り当てる。各スレーブノードへ送信するメッセージは、スレーブノード毎に、該スレーブノードに割り当てられたスロットでスケジューリングされる。このように、各スレーブノードへ送信するメッセージが該スレーブノードに割り当てられたスロットの間でスケジューリングされることにより、あるスレーブノードのスケジューリングが他のスレーブノードのスケジューリングへ影響することはない。
【００７４】
＜スケジューリング例（その２）＞
図７は、マスターノード１００におけるスケジューリングの一実施例（その２）を示す。
【００７５】
図７には、＜スケジューリング例（その１）＞において、再送が生じた場合を示す。
【００７６】
＜スケジューリング例（その１）＞と同様に、マスターノード１００は、スレーブノード２００１とスレーブノード２００２をスケジューリングする。スレーブノードが３台以上である場合についても同様である。
【００７７】
スケジューリング部１１２は、スレーブノード２００１とスレーブノード２００２に割り当てるスロットの数の配分を設定する。ここでは、スレーブノード２００１に割り当てるスロットの数とスレーブノード２００２に割り当てるスロットの数の配分が１対２である。スケジューリング部１１２は、スレーブノード２００１、スレーブノード２００２に割り当てるスロットの数の配分に従って各スレーブノードにスロットを順次割り当てる。スロットを順次割り当てる結果、図７（２）に示すように、スロット１T、4T、７T、・・・には、スレーブノード２００１が割り当てられ、スロット2T、3T、5T、6T、8T、9T、・・・には、スレーブノード２００２が割り当てられる。
【００７８】
図７（３）に示すように、スレーブノード２００１は、マスターノード１００からのメッセージをスロット1T、4T、7T、・・・により受信することができる。
【００７９】
図７（１）に示すように、スレーブノード２００２は、マスターノード１００からのメッセージをスロット2T、3T、5T、6T、8T、9T、・・・により受信することができる。
【００８０】
図７に示される例では、マスターノード１００からスレーブノード２００２へスロット2Tで送信されたメッセージＢ１の再送が実行される。この場合、トランシーバ１０６を介して、スレーブノードからの否定応答がフレーム受信制御部１１８へ入力される。フレーム受信制御部１１８は、スケジューリング部１１２へ、否定応答（NACK）を入力する。マスターノード１００は、メッセージＢ１を再送する際、スレーブノード２００２へ割り当てたスロットのいずれかでメッセージＢ１を再送する。図７に示される例では、マスターノード１００は、スレーブノード２００２へ割り当てたスロットのうち、通信エラーが発生したスロット2Tの次のスロット3Tで、メッセージＢ１を再送する。
【００８１】
スレーブノード２００２へ送信されたメッセージＢ１の再送をスレーブノード２００２へ割り当てるスロットで行うことにより、スレーブノード２００１へ割り当てるスロットは変更されない。つまり、スレーブノード２００１へのスケジューリングへの影響はない。
【００８２】
メッセージＢ１の再送が行われることにより、マスターノード１００におけるスレーブノード２００２へのスケジューリングが変更される。しかし、スレーブノード２００２へ割り当てるスロットは変更されない。
【００８３】
図８は、マスターノード１００におけるスケジューリング処理を示す。図８において、スレーブノード２００１は「Ａ」により表され、スレーブノード２００２は「Ｂ」により表される。
【００８４】
図８は、あるスロットが送信された後における処理を示す。
【００８５】
ステップＳ８０２では、マスターノード１００は、スロットＮｏを増加させる。
【００８６】
ステップＳ８０４では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超えるか否かを判定する。ここでは、３スロットを１単位としているため、スロットＭＡＸは３となる。
【００８７】
ステップＳ８０６では、ステップＳ８０４においてスロットＮｏがスロットＭＡＸを超えると判定した場合、マスターノード１００は、スロットＮｏを１に設定する。
【００８８】
ステップＳ８０８では、ステップＳ８０４においてスロットＮｏがスロットＭＡＸを超えないと判断した場合、又はステップＳ８０６においてスロットＮｏを１に設定した後、マスターノード１００は、スロットがＡに割り当てるものであるか否かを判定する。
【００８９】
ステップＳ８１０では、ステップＳ８０８においてスロットがＡに割り当てるものであると判定した場合、マスターノード１００は、Ａへのメッセージに該スロットを割り当てるＡスケジューリングＮｏを増加させる。
【００９０】
ステップＳ８１２では、マスターノード１００は、ＡスケジューリングＮｏがＡへのメッセージにスロットを割り当てるＡスケジューリングＭＡＸを超えるか否かを判定する。
【００９１】
ステップＳ８１４では、ステップＳ８１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＡスケジューリングＮｏを１に設定する。
【００９２】
ステップＳ８１６では、ステップＳ８１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えないと判定した場合、又はステップＳ８１４においてＡスケジューリングＮｏを１に設定した後、マスターノード１００は、ＡスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ａへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【００９３】
ステップＳ８１８では、ステップＳ８０８においてスロットがＡに割り当てるものでないと判定した場合、マスターノード１００は、前回の送信が正常であるか否かを判定する。
【００９４】
ステップＳ８２０では、ステップＳ８１８において前回の送信が正常であると判定した場合、マスターノード１００は、Ｂへのメッセージに該スロットを割り当てるＢスケジューリングＮｏを増加させる。
【００９５】
ステップＳ８２２では、ステップＳ８２０においてＢスケジューリングＮｏを増加させた後、又はステップＳ８１８において前回の送信が正常でないと判定した場合、マスターノード１００は、ＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【００９６】
ステップＳ８２４では、ステップＳ８２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＢスケジューリングＮｏを１に設定する。
【００９７】
ステップＳ８２６では、ステップＳ８２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ８２４においてＢスケジューリングＮｏを１に設定した後、マスターノード１００は、ＢスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ｂへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【００９８】
ステップＳ８２８では、マスターノード１００は、ステップＳ８１６において選択されたフレーム又はステップＳ８２６において選択されたフレームを送信する。
【００９９】
スケジューリング例（その２）によれば、複数のスレーブノードに割り当てるスロットの配分に従って、各スレーブノードにスロットを割り当てる。各スレーブノードへ再送するメッセージは、再送の対象となるスレーブノードに割り当てられたスロットで再度スケジューリングされる。このように、各スレーブノードへ再送するメッセージが再送の対象となるスレーブノードに割り当てられたスロットの間で再度スケジューリングされることにより、あるスレーブノードの再送スケジューリングが他のスレーブノードのスケジューリングへ影響することはない。
【０１００】
＜スケジューリング例（その３）＞
図９は、マスターノード１００におけるスケジューリングの一実施例（その３）を示す。
【０１０１】
図９には、＜スケジューリング例（その１）＞において、割込みが生じた場合を示す。
【０１０２】
＜スケジューリング例（その１）＞と同様に、マスターノード１００は、スレーブノード２００１とスレーブノード２００２をスケジューリングする。スレーブノードが３台以上である場合についても同様である。
【０１０３】
スケジューリング部１１２は、スレーブノード２００１とスレーブノード２００２に割り当てるスロットの数の配分を設定する。ここでは、スレーブノード２００１に割り当てるスロットの数とスレーブノード２００２に割り当てるスロットの数の配分が１対２である。スケジューリング部１１２は、スレーブノード２００１、スレーブノード２００２に割り当てるスロットの数の配分に従って各スレーブノードにスロットを順次割り当てる。スロットを順次割り当てる結果、図９（２）に示すように、スロット１T、4T、７T、・・・には、スレーブノード２００１が割り当てられ、スロット2T、3T、5T、6T、8T、9T、・・・には、スレーブノード２００２が割り当てられる。
【０１０４】
図９（３）に示すように、スレーブノード２００１は、マスターノード１００からのメッセージをスロット1T、4T、７T、・・・により受信することができる。
【０１０５】
図９（１）に示すように、スレーブノード２００２は、マスターノード１００からのメッセージをスロット2T、3T、5T、6T、8T、9T、・・・により受信することができる。
【０１０６】
図９に示される例では、マスターノード１００からスレーブノード２００１へスロット4TでメッセージＢ１が送信された後に、スレーブノード２００２へのメッセージＢ１の送信要求の割込みが発生する。スレーブノード２００２への該メッセージＢ１の送信要求は、マスターノード１００からの送信に同期して発生する場合もあるし、非同期で発生する場合もある。マスターノード１００は、スレーブノード２００２へ割り当てるスロットのいずれかで該メッセージＢ１を送信する。図９に示される例では、マスターノード１００は、スレーブノード２００２へ割り当てるスロットのうち、スロット5Tで、メッセージＢ１を送信する。
【０１０７】
スレーブノード２００２へのメッセージＢ１の送信要求の割込み処理をスレーブノード２００２へ割り当てるスロットで行うことにより、スレーブノード２００１へ割り当てるスロットは変更されない。つまり、スレーブノード２００１へのスケジューリングへの影響はない。
【０１０８】
メッセージＢ１の送信要求の割込み処理が行われることにより、マスターノード１００におけるスレーブノード２００２へのスケジューリングが変更される。しかし、スレーブノード２００２へ割り当てるスロットは変更されない。
【０１０９】
図１０は、マスターノード１００におけるスケジューリング処理を示す。図１０において、スレーブノード２００１は「Ａ」により表され、スレーブノード２００２は「Ｂ」により表される。
【０１１０】
図１０は、あるスロットが送信された後における処理を示す。
【０１１１】
ステップＳ１００２では、マスターノード１００は、スロットＮｏを増加させる。
【０１１２】
ステップＳ１００４では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超えるか否かを判定する。ここでは、３スロットを１単位としているため、スロットＭＡＸは３となる。
【０１１３】
ステップＳ１００６では、ステップＳ１００４においてスロットＮｏがスロットＭＡＸを超えると判定した場合、マスターノード１００は、スロットＮｏを１に設定する。
【０１１４】
ステップＳ１００８では、ステップＳ１００４においてスロットＮｏがスロットＭＡＸを超えないと判断した場合、又はステップＳ１００６においてスロットＮｏを１に設定した後、マスターノード１００は、スロットがＡに割り当てるものであるか否かを判定する。
【０１１５】
ステップＳ１０１０では、ステップＳ１００８においてスロットがＡに割り当てるものであると判定した場合、マスターノード１００は、Ａへのメッセージを該スロットを割り当てるスケジューリングのＡスケジューリングＮｏを増加させる。
【０１１６】
ステップＳ１０１２では、マスターノード１００は、ＡスケジューリングＮｏがＡへのメッセージにスロットを割り当てるＡスケジューリングＭＡＸを超えるか否かを判定する。
【０１１７】
ステップＳ１０１４では、ステップＳ１０１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＡスケジューリングＮｏを１に設定する。
【０１１８】
ステップＳ１０１６では、ステップＳ１０１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えないと判定した場合、又はステップＳ１０１４においてＡスケジューリングＮｏを１に設定した後、マスターノード１００は、ＡスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ａへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１１９】
ステップＳ１０１８では、ステップＳ１００８においてスロットがＡに割り当てるものでないと判定した場合、マスターノード１００は、割込みフレームがあるか否かを判定する。
【０１２０】
ステップＳ１０２０では、ステップＳ１０１８において割込みフレームがないと判定した場合、マスターノード１００は、Ｂへのメッセージに該スロットを割り当てるＢスケジューリングＮｏを増加させる。
【０１２１】
ステップＳ１０２２では、ステップＳ１０２０においてＢスケジューリングＮｏを増加させた後、マスターノード１００は、ＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【０１２２】
ステップＳ１０２４では、ステップＳ１０２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＢスケジューリングＮｏを１に設定する。
【０１２３】
ステップＳ１０２６では、ステップＳ１０２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１０２４においてＢスケジューリングＮｏを１に設定した後、マスターノード１００は、ＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、Ｂへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１２４】
ステップＳ１０２８では、ステップＳ１０１８において割込みフレームがあると判定した場合、マスターノード１００は、割込みフレームを選択する。
【０１２５】
ステップＳ１０３０では、マスターノード１００は、ステップＳ１０１６において選択されたフレーム、ステップＳ１０２６において選択されたフレーム及びステップＳ１０２８において選択された割込みフレームのいずれかを送信する。
【０１２６】
スケジューリング例（その３）によれば、複数のスレーブノードに割り当てるスロットの配分に従って、各スレーブノードにスロットを割り当てる。あるスレーブノードへのメッセージの割込みが発生した場合、該メッセージは、該あるスレーブノードに割り当てられたスロットでスケジューリングされる。このように、あるスレーブノードへのメッセージの割込みが該あるスレーブノードに割り当てられたスロットの間でスケジューリングされることにより、あるスレーブノードへのメッセージの割込みが他のスレーブノードのスケジューリングへ影響することはない。
【０１２７】
＜スケジューリング例（その４）＞
図１１は、マスターノード１００におけるスケジューリングの一実施例（その３）を示す。
【０１２８】
図１１には、＜スケジューリング例（その１）＞において、スレーブノードの状態が変化した場合を示す。
【０１２９】
＜スケジューリング例（その１）＞と同様に、マスターノード１００は、スレーブノード２００１とスレーブノード２００２をスケジューリングする。スレーブノードが３台以上である場合についても同様である。
【０１３０】
スケジューリング部１１２は、スレーブノード２００１とスレーブノード２００２に割り当てるスロットの数の配分を設定する。ここでは、スレーブノード２００１に割り当てるスロットの数とスレーブノード２００２に割り当てるスロットの数の配分が１対３である。スケジューリング部１１２は、スレーブノード２００１、スレーブノード２００２に割り当てるスロットの数の配分に従って各スレーブノードにスロットを順次割り当てる。スロットを順次割り当てる結果、図１１（２）に示すように、スロット１T、5T、X1T、X5T、X9T・・・には、スレーブノード２００１が割り当てられ、スロット2T、3T、4T、6T、7T、X2T、X3T、X4T、X6T、X7T、X8T、X10T、X11T、X12T・・・には、スレーブノード２００２が割り当てられる。
【０１３１】
図１１（３）に示すように、スレーブノード２００１は、マスターノード１００からのメッセージをスロット1T、5T、X1T、X5T、X9T、・・・により受信することができる。
【０１３２】
図１１（１）に示すように、スレーブノード２００２は、マスターノード１００からのメッセージをスロット2T、3T、4T、6T、7T、X2T、X3T、X4T、X6T、X7T、X8T、X10T、X11T、X12T、・・・により受信することができる。
【０１３３】
図１１に示される例では、マスターノード１００からスレーブノード２００２へスロットX4TでメッセージＢ３が送信された後に、スレーブノード２００２の状態が状態Iから状態IIへと遷移する。通信システムの一実施例では、状態遷移をトリガーとして送信するメッセージが変更される。スレーブノード２００２からマスタノード１００へ、状態が変化したことが通知されるのが好ましい。
【０１３４】
図１１に示される例では、スレーブノード２００２の状態が状態Iから状態IIへと遷移することにより、マスターノード１００は、メッセージＢ１−メッセージＢ３からメッセージＢ４−メッセージＢ６へ、スレーブノード２００２へ送信するメッセージを変更する。
【０１３５】
マスターノード１００は、スレーブノード２００２へ送信するメッセージを変更しても、スレーブノード２００２へ割り当てたスロットで該変更されたメッセージをスケジューリングし、送信する。
【０１３６】
図１１に示される例では、マスターノード１００は、スレーブノード２００２が状態Ｉから状態ＩＩへ遷移した後、スケジューリングに従って、スレーブノード２００１にスロットX5Tで、メッセージＡ１を送信する。スレーブノード２００１にスロットX5TでメッセージＡ１を送信した後、マスターノード１００は、スレーブノード２００２にスロットX6T-スロットX8TでそれぞれメッセージＢ４−Ｂ６を送信する。スレーブノード２００２にスロットX6T-X8TでそれぞれメッセージＢ４−メッセージＢ６を送信した後、マスターノード１００は、スレーブノード２００１にスロットX9Tで、メッセージＡ１を送信する。スレーブノード２００１にスロットX9TでメッセージＡ１を送信した後、マスターノード１００は、スレーブノード２００２にスロットX10T-X12TでそれぞれメッセージＢ４−Ｂ６を送信する。
【０１３７】
スレーブノード２００２へのメッセージがメッセージＢ１−Ｂ３からメッセージＢ４−Ｂ６へ変更された場合に、メッセージＢ４−Ｂ６の送信をスレーブノード２００２へ割り当てるスロットで行うことにより、スレーブノード２００１へ割り当てるスロットは変更されない。つまり、スレーブノード２００１へのスケジューリングへの影響はない。
【０１３８】
スレーブノード２００２へのメッセージがメッセージＢ１−Ｂ３からメッセージＢ４−Ｂ６へ変更されることにより、マスターノード１００におけるスレーブノード２００２へのスケジューリングが変更される。しかし、スレーブノード２００２へ割り当てるスロットは変更されない。
【０１３９】
図１２は、マスターノード１００におけるスケジューリング処理を示す。図１２において、スレーブノード２００１は「Ａ」により表され、スレーブノード２００２は「Ｂ」により表される。
【０１４０】
図１２は、あるスロットが送信された後における処理を示す。
【０１４１】
図１２に示されるスケジューリングの一実施例において、スロット1T、２T、３T、4Tには、それぞれスレーブノード２００１、スレーブノード２００２、スレーブノード２００２、スレーブノード２００２が割り当てられ、以降同様の割り当てが継続する。つまり、４スロットを１単位として、スレーブノードが割り当てられる。４スロットのうち、最初の１スロットにはスレーブノード２００１へのメッセージが割り当てられ、続く３スロットにはスレーブノード２００２へのメッセージが割り当てられる。図１２に示されるフローチャートでは、１単位となる４スロットの各々をスロットＮｏにより表す。つまり、４スロットのうち、最初の１スロットを「スロットＮｏ１」、次のスロットを「スロットＮｏ２」、次のスロットを「スロットＮｏ３」、最後のスロットを「スロットＮｏ４」という。また、１単位となるスロットの数の最大値を「スロットＭＡＸ」という。この場合、スロットＭＡＸは「４」となる。
【０１４２】
また、各スロットに、スレーブノードへのメッセージを割り当てる処理をスケジューリングＮｏにより表す。つまり、４スロットのうち、最初の１スロットにおいて、スレーブノード２００１へのスケジューリングＮｏ１によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ１によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ２によりメッセージが割り当てられ、最後のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ３によりメッセージが割り当てられる。また、各スロットにおいて、スレーブノードへメッセージを割り当てるスケジューリングの数、つまりスケジューリングＮｏの最大値を「スケジューリングＭＡＸ」という。この場合、スレーブノード２００１へのスケジューリングのスケジューリングＭＡＸは「１」となり、スレーブノード２００２へのスケジューリングのスケジューリングＭＡＸは「３」となる。
【０１４３】
さらに、状態Iと状態IIとの間で、スレーブノード２００２へ送信するメッセージが異なる。図１２に示されるフローチャートでは、状態Iと状態IIとを区別して表す。状態Iでは、４スロットのうち、最初の１スロットにおいて、スレーブノード２００１への状態IスケジューリングＮｏ１によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２への状態IスケジューリングＮｏ２によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２への状態IスケジューリングＮｏ３によりメッセージが割り当てられ、最後のスロットにおいて、スレーブノード２００３への状態IスケジューリングＮｏ４によりメッセージが割り当てられる。
【０１４４】
状態IＩでは、４スロットのうち、最初の１スロットにおいて、スレーブノード２００１への状態IＩスケジューリングＮｏ１によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２への状態IＩスケジューリングＮｏ２によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２への状態IＩスケジューリングＮｏ３によりメッセージが割り当てられ、最後のスロットにおいて、スレーブノード２００３への状態IＩスケジューリングＮｏ４によりメッセージが割り当てられる。
【０１４５】
ステップＳ１２０２では、マスターノード１００は、スロットＮｏを増加させる。
【０１４６】
ステップＳ１２０４では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超えるか否かを判定する。ここでは、４スロットを１単位としているため、スロットＭＡＸは４となる。
【０１４７】
ステップＳ１２０６では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超える場合、スロットＮｏを１に設定する。
【０１４８】
ステップＳ１２０８では、マスターノード１００は、ステップＳ１２０４においてスロットＮｏがスロットＭＡＸを超えないと判断した場合、又はステップＳ１２０６においてスロットＮｏを１に設定した後、スロットがＡに割り当てるものであるか否かを判定する。
【０１４９】
ステップＳ１２１０では、ステップＳ１２０８においてスロットがＡに割り当てるものであると判定した場合、マスターノード１００は、Ａへのメッセージを該スロットを割り当てるＡスケジューリングＮｏを増加させる。
【０１５０】
ステップＳ１２１２では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えるか否かを判定する。
【０１５１】
ステップＳ１２１４では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超える場合、ＡスケジューリングＮｏを１に設定する。
【０１５２】
ステップＳ１２１６では、マスターノード１００は、ステップＳ１２１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１２１４においてＡスケジューリングＮｏを１に設定した後、ＡスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ａへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１５３】
ステップＳ１２１８では、ステップＳ１２０８においてスロットがＡに割り当てるものでないと判定した場合、マスターノード１００は、状態Ｉであるか否かを判定する。
【０１５４】
ステップＳ１２２０では、ステップＳ１２１８で状態Ｉであると判定した場合、マスターノード１００は、Ｂへのメッセージに該スロットを割り当てる状態ＩのＢスケジューリングＮｏを増加させる。
【０１５５】
ステップＳ１２２２では、ステップＳ１２２０において状態ＩのＢスケジューリングＮｏを増加させた後、マスターノード１００は、状態ＩのＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【０１５６】
ステップＳ１２２４では、ステップＳ１２２２において状態ＩのＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、状態ＩのＢスケジューリングＮｏを１に設定する。
【０１５７】
ステップＳ１２２６では、ステップＳ１２２２において状態ＩのＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１２２４において状態ＩのＢスケジューリングＮｏを１に設定した後、マスターノード１００は、状態ＩのＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、Ｂへの状態Ｉのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１５８】
ステップＳ１２２８では、ステップＳ１２１８で状態Ｉでないと判定した場合、マスターノード１００は、Ｂへのメッセージを該スロットを割り当てる状態ＩＩのＢスケジューリングＮｏを増加させる。
【０１５９】
ステップＳ１２３０では、ステップＳ１２２８において状態ＩＩのＢスケジューリングＮｏを増加させた後、マスターノード１００は、状態ＩＩのＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【０１６０】
ステップＳ１２３２では、ステップＳ１２３０において状態ＩＩのＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、状態ＩＩのＢスケジューリングＮｏを１に設定する。
【０１６１】
ステップＳ１２３４では、ステップＳ１２３０において状態ＩＩのＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１２３２において状態ＩＩのＢスケジューリングＮｏを１に設定した後、マスターノード１００は、状態ＩＩのＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、Ｂへの状態ＩＩのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１６２】
ステップＳ１２３６では、マスターノード１００は、ステップＳ１２１６において選択されたフレーム、ステップＳ１２２６において選択されたフレーム、及びステップＳ１２３４で選択されたフレームのいずれかを送信する。
【０１６３】
スケジューリング例（その４）によれば、複数のスレーブノードに割り当てるスロットの配分に従って、各スレーブノードにスロットを割り当てる。スレーブノードの状態が状態Ｉから状態ＩＩへ遷移することにより、マスターノード１００により送信されるメッセージが変更される。該変更されたメッセージは、各スレーブノードに割り当てられたスロットでスケジューリングされる。このように、状態が遷移し、送信するメッセージが変更される場合でも、各スレーブノードに割り当てられたスロットの間でスケジューリングされることにより、状態が遷移し、送信するメッセージが変更される場合でも、スレーブノード間のスケジューリングへ影響することはない。
【０１６４】
スレーブノードの状態が状態Ｉから状態ＩＩへ遷移する場合に限られず、マスターノードの状態が遷移する場合についても同様である。
【０１６５】
＜スケジューリング例（その５）＞
図１３は、マスターノード１００におけるスケジューリングの一実施例（その４）を示す。
【０１６６】
図１３には、＜スケジューリング例（その１）＞において、通信エラーが生じた場合を示す。
【０１６７】
＜スケジューリング例（その１）＞と同様に、マスターノード１００は、スレーブノード２００１とスレーブノード２００２をスケジューリングする。スレーブノードが３台以上である場合についても同様である。
【０１６８】
スケジューリング部１１２は、スレーブノード２００１とスレーブノード２００２に割り当てるスロットの数の配分を設定する。ここでは、スレーブノード２００１に割り当てるスロットの数とスレーブノード２００２に割り当てるスロットの数の配分が１対２である。スケジューリング部１１２は、スレーブノード２００１、スレーブノード２００２に割り当てるスロットの数の配分に従って各スレーブノードにスロットを順次割り当てる。スロットを順次割り当てる結果、図１３（２）に示すように、スロット１T、4T、７T、・・・には、スレーブノード２００１が割り当てられ、スロット2T、3T、5T、6T、8T、9T、・・・には、スレーブノード２００２が割り当てられる。
【０１６９】
図１３（３）に示すように、スレーブノード２００１は、マスターノード１００からのメッセージをスロット1T、4T、７T、・・・により受信することができる。
【０１７０】
図１３（１）に示すように、スレーブノード２００２は、マスターノード１００からのメッセージをスロット2T、3T、5T、6T、8T、9T、・・・により受信することができる。
【０１７１】
図１３に示される例では、マスターノード１００からスレーブノード２００２へスロット6Tで送信されたメッセージＢ２に通信エラーが発生する。マスターノード１００は、通信エラーが発生した場合、通常状態からエラー状態へ遷移する。マスターノード１００は、エラー状態へ遷移した場合、送信するメッセージを変更する。
【０１７２】
図１３に示される例では、マスターノード１００は、スレーブノード２００２へスロット6TでメッセージＢ２を送信する。該スロット6Tで送信するメッセージＢ２に通信エラーが発生する。通信エラーが発生したことにより、マスターノード１００は、通常状態からエラー状態へ遷移する。エラー状態へ遷移することにより、マスターノード１００は、送信するメッセージをメッセージＢ１、メッセージＢ２からメッセージＢ３、メッセージＢ４へ変更する。マスターノード１００は、スレーブノード２００２へ割り当てたスロットで、メッセージＢ３、メッセージＢ４を送信する。
【０１７３】
通信エラーにより変更されたメッセージＢ３、メッセージＢ４の送信をスレーブノード２００２へ割り当てたスロットで行うことにより、スレーブノード２００１へ割り当てるスロットは変更されない。つまり、スレーブノード２００１へのスケジューリングへの影響はない。
【０１７４】
通信エラーにより変更されたメッセージＢ３、メッセージＢ４の送信が行われることにより、マスターノード１００におけるスレーブノード２００２へのスケジューリングが変更される。しかし、スレーブノード２００２へ割り当てるスロットは変更されない。
【０１７５】
図１４は、マスターノード１００におけるスケジューリング処理を示す。図１４において、スレーブノード２００１は「Ａ」により表され、スレーブノード２００２は「Ｂ」により表される。
【０１７６】
図１４は、あるスロットが送信された後における処理を示す。
【０１７７】
ステップＳ１４０２では、マスターノード１００は、スロットＮｏを増加させる。
【０１７８】
ステップＳ１４０４では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超えるか否かを判定する。ここでは、３スロットを１単位としているため、スロットＭＡＸは３となる。
【０１７９】
ステップＳ１４０６では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超える場合、スロットＮｏを１に設定する。
【０１８０】
ステップＳ１４０８では、マスターノード１００は、ステップＳ１４０４においてスロットＮｏがスロットＭＡＸを超えないと判断した場合、又はステップＳ１４０６においてスロットＮｏを１に設定した後、スロットがＡに割り当てるものであるか否かを判定する。
【０１８１】
ステップＳ１４１０では、ステップＳ１４０８においてスロットがＡに割り当てるものであると判定した場合、マスターノード１００は、Ａへのメッセージを該スロットを割り当てるＡスケジューリングＮｏを増加させる。
【０１８２】
ステップＳ１４１２では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えるか否かを判定する。
【０１８３】
ステップＳ１４１４では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超える場合、ＡスケジューリングＮｏを１に設定する。
【０１８４】
ステップＳ１４１６では、マスターノード１００は、ステップＳ１４１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１４１４においてＡスケジューリングＮｏを１に設定した後、ＡスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ａへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１８５】
ステップＳ１４１８では、ステップＳ１４０８においてスロットがＡに割り当てるものでないと判定した場合、マスターノード１００は、前回の送信が正常であるか否かを判定する。
【０１８６】
ステップＳ１４２０では、ステップＳ１４１８において前回の送信が正常であると判定した場合、マスターノード１００は、通常状態を維持する。マスターノード１００は、Ｂへのメッセージに該スロットを割り当てるＢスケジューリングＮｏを増加させる。
【０１８７】
ステップＳ１４２２では、ステップＳ１４２０においてＢスケジューリングＮｏを増加させた後、マスターノード１００は、ＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【０１８８】
ステップＳ１４２４では、ステップＳ１４２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＢスケジューリングＮｏを１に設定する。
【０１８９】
ステップＳ１４２６では、ステップＳ１４２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１４２４においてＢスケジューリングＮｏを１に設定した後、マスターノード１００は、ＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、Ｂへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１９０】
ステップＳ１４２８では、ステップＳ１４１８において前回の送信が正常でないと判定した場合、マスターノード１００は、エラー状態へ遷移する。マスターノード１００は、Ｂへのメッセージにスロットを割り当てるエラー状態のＢスケジューリングＮｏを増加させる。
【０１９１】
ステップＳ１４３０では、ステップＳ１４２８においてエラー状態のＢスケジューリングＮｏを増加させた後、マスターノード１００は、エラー状態のＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【０１９２】
ステップＳ１４３２では、ステップＳ１４３０においてエラー状態のＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、エラー状態のＢスケジューリングＮｏを１に設定する。
【０１９３】
ステップＳ１４３４では、ステップＳ１４３２においてエラー状態のＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１４３２においてエラー状態のＢスケジューリングＮｏを１に設定した後、マスターノード１００は、エラー状態のＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、エラー状態のＢへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０１９４】
ステップＳ１４３６では、マスターノード１００は、ステップＳ１４１６において選択されたフレーム、ステップＳ１４２６において選択されたフレーム、及びステップＳ１４３４において選択されたフレームのいずれかを送信する。
【０１９５】
スケジューリング例（その５）によれば、複数のスレーブノードに割り当てるスロットの配分に従って、各スレーブノードにスロットを割り当てる。マスターノードからあるスレーブノードへ送信されたメッセージに通信エラーが発生する。通信エラーが発生した後、該通信エラーが発生したスレーブノードへのメッセージが変更される。該変更されたメッセージは、各スレーブノードに割り当てられたスロットでスケジューリングされる。このように、通信エラーが発生した後、該通信エラーが発生したスレーブノードへのメッセージが変更される場合でも、各スレーブノードに割り当てられたスロットの間でスケジューリングされることにより、通信エラーが発生したスレーブノードへのメッセージが変更される場合でも、スレーブノード間のスケジューリングへ影響することはない。
【０１９６】
＜スケジューリング例（その６）＞
図１５は、マスターノード１００におけるスケジューリングの一実施例（その５）を示す。
【０１９７】
図１５には、一例として、マスターノード１００が、スレーブノード２００１とスレーブノード２００２をスケジューリングする場合について示す。スレーブノードが３台以上である場合についても同様である。
【０１９８】
スケジューリング部１１２は、スレーブノード２００１とスレーブノード２００２に割り当てるスロットの数の配分を設定する。ここでは、スレーブノード２００１に割り当てるスロットの数とスレーブノード２００２に割り当てるスロットの数の配分が１対２である。スケジューリング部１１２は、スレーブノード２００１、スレーブノード２００２に割り当てるスロットの数の配分に従って各スレーブノードにスロットを順次割り当てる。スロットを順次割り当てる結果、図１５（２）に示すように、スロット１T、4T、７T、・・・には、スレーブノード２００１が割り当てられ、スロット2T、3T、5T、6T、8T、・・・には、スレーブノード２００１が割り当てられる。
【０１９９】
図１５（３）に示すように、スレーブノード２００１は、マスターノード１００からのメッセージをスロット1T、4T、７T、10T、・・・により受信することができる。
【０２００】
図１５（１）に示すように、スレーブノード２００２は、マスターノード１００からのメッセージをスロット2T、3T、5T、6T、8T、・・・により受信することができる。
【０２０１】
図１５に示される例では、マスターノード１００からスレーブノード２００２へスロット6Tで送信されたメッセージＢ２に通信エラーが発生する。マスターノード１００は、通信エラーが発生した場合、通信エラーが発生したスレーブノードに割り当てるスロットで、エラー停止命令フレームを送信する。マスターノード１００は、通信エラーが発生したスロットより後のスロットのうち、通信エラーが発生したスレーブノードに割り当てる最初のスロットでエラー停止命令フレームを送信するのが好ましい。マスターノード１００は、エラー停止命令フレームを送信した後、通信エラーが発生したスレーブノードに割り当てるスロットではメッセージを送信しない。
【０２０２】
図１５に示される例では、マスターノード１００は、スレーブノード２００２へ割り当てるスロット6TでメッセージＢ２を送信する。該スロット6Tで送信するメッセージＢ２に通信エラーが発生する。通信エラーが発生したことにより、マスターノード１００は、スレーブノード２００１へ割り当てるスロット7TでメッセージＡ１を送信した後、スレーブノード２００２へ割り当てるスロット8TでメッセージＢ３を送信する。メッセージＢ３は、エラー停止命令フレームである。
【０２０３】
エラー停止命令フレームの送信後、マスターノード１００は、スレーブノード２００２へ割り当てるスロット9T、11T、12T、・・・ではメッセージを送信しない。つまり、エラー停止命令フレームの送信後、マスターノード１００は、スレーブノード２００1へ割り当てるスロット10T、・・・でメッセージを送信する。
【０２０４】
スレーブノード２００２へ送信されたメッセージの送信エラーが生じた場合に、該スレーブノード２００２へ割り当てるスロットでの送信を停止することにより、スレーブノード２００１へ割り当てるスロットは変更されない。つまり、スレーブノード２００１へのスケジューリングへの影響はない。
【０２０５】
図１６は、マスターノード１００におけるスケジューリング処理を示す。図１６において、スレーブノード２００１は「Ａ」により表され、スレーブノード２００２は「Ｂ」により表される。
【０２０６】
図１６は、あるスロットが送信された後における処理を示す。
【０２０７】
図１５に示されるスケジューリングの一実施例において、スロット1T、２T、３Tには、それぞれスレーブノード２００１、スレーブノード２００２、スレーブノード２００２が割り当てられ、以降同様の割り当てが継続する。つまり、３スロットを１単位として、スレーブノードが割り当てられる。３スロットのうち、最初の１スロットにはスレーブノード２００１へのメッセージが割り当てられ、続く２スロットにはスレーブノード２００２へのメッセージが割り当てられる。図１６に示されるフローチャートでは、１単位となる３スロットの各々をスロットＮｏにより表す。つまり、３スロットのうち、最初の１スロットを「スロットＮｏ１」、次のスロットを「スロットＮｏ２」、最後のスロットを「スロットＮｏ３」という。また、１単位となるスロットの数の最大値を「スロットＭＡＸ」という。この場合、スロットＭＡＸは「３」となる。
【０２０８】
また、各スロットにおいて、スレーブノードへメッセージを割り当てる処理をスケジューリングＮｏにより表す。つまり、３スロットのうち、最初の１スロットにおいて、スレーブノード２００１へのスケジューリングＮｏ１によりメッセージが割り当てられ、次のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ１によりメッセージが割り当てられ、最後のスロットにおいて、スレーブノード２００２へのスケジューリングＮｏ２によりメッセージが割り当てられる。また、各スロットにおいて、スレーブノードへメッセージを割り当てるスケジューリングの数の最大値を「スケジューリングＭＡＸ」という。この場合、スレーブノード２００１へのスケジューリングのスケジューリングＭＡＸは「１」となり、スレーブノード２００２へのスケジューリングのスケジューリングＭＡＸは「２」となる。
【０２０９】
ステップＳ１６０２では、マスターノード１００は、スロットＮｏを増加させる。
【０２１０】
ステップＳ１６０４では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超えるか否かを判定する。ここでは、３スロットを１単位としているため、スロットＭＡＸは３となる。
【０２１１】
ステップＳ１６０６では、マスターノード１００は、スロットＮｏがスロットＭＡＸを超える場合、スロットＮｏを１に設定する。
【０２１２】
ステップＳ１６０８では、マスターノード１００は、ステップＳ１６０４においてスロットＮｏがスロットＭＡＸを超えないと判断した場合、又はステップＳ１６０６においてスロットＮｏを１に設定した後、スロットがＡに割り当てるものであるか否かを判定する。
【０２１３】
ステップＳ１６１０では、ステップＳ１６０８においてスロットがＡに割り当てるものであると判定した場合、マスターノード１００は、Ａへのメッセージに該スロットを割り当てるＡスケジューリングＮｏを増加させる。
【０２１４】
ステップＳ１６１２では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えるか否かを判定する。
【０２１５】
ステップＳ１６１４では、マスターノード１００は、ＡスケジューリングＮｏがＡスケジューリングＭＡＸを超える場合、ＡスケジューリングＮｏを１に設定する。
【０２１６】
ステップＳ１６１６では、マスターノード１００は、ステップＳ１６１２においてＡスケジューリングＮｏがＡスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１６１４においてＡスケジューリングＮｏを１に設定した後、ＡスケジューリングＮｏのフレームを選択する。つまり、マスターノード１００は、Ａへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０２１７】
ステップＳ１６１８では、ステップＳ１６０８においてスロットがＡに割り当てるものでないと判定した場合、マスターノード１００は、前回の送信が正常であるか否かを判定する。
【０２１８】
ステップＳ１６２０では、ステップＳ１６１８において前回の送信が正常であると判定した場合、マスターノード１００は、Ｂへのメッセージに該スロットを割り当てるＢスケジューリングＮｏを増加させる。
【０２１９】
ステップＳ１６２２では、ステップＳ１６２０においてＢスケジューリングＮｏを増加させた後、マスターノード１００は、ＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えるか否かを判定する。
【０２２０】
ステップＳ１６２４では、ステップＳ１６２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えると判定した場合、マスターノード１００は、ＢスケジューリングＮｏを１に設定する。
【０２２１】
ステップＳ１６２６では、ステップＳ１６２２においてＢスケジューリングＮｏがＢスケジューリングＭＡＸを超えないと判断した場合、又はステップＳ１６２４においてＢスケジューリングＮｏを１に設定した後、マスターノード１００は、ＢスケジューリングＮｏに該当するフレームを選択する。つまり、マスターノード１００は、Ｂへのメッセージをスロットに割り当て、該スロットを含むフレームを選択する。
【０２２２】
ステップＳ１６２８では、ステップＳ１６１８において前回の送信が正常でないと判定した場合、マスターノード１００は、エラー状態のスケジューリングに該当するフレーム、つまりエラー停止命令フレームを選択する。
【０２２３】
ステップＳ１６３０では、マスターノード１００は、ステップＳ１６１６において選択されたフレーム、ステップＳ１６２６において選択されたフレーム、及びステップＳ１６２８において選択されたフレームのいずれかを送信する。
【０２２４】
スケジューリング例（その６）によれば、複数のスレーブノードに割り当てるスロットの配分に従って、各スレーブノードにスロットを割り当てる。あるスレーブノードへ送信されたメッセージに通信エラーが生じた場合に、該スレーブノードへメッセージを送信することが停止される。通信エラーが生じたスレーブノードへの送信を停止する際に、他のスレーブノードへのメッセージの送信は停止されない。つまり、通信エラーが生じたスレーブノード以外の他のスレーブノードへのスケジューリングへの影響はない。
【０２２５】
従来、あるスレーブノードに通信エラーが生じ、該あるスレーブノードのスケジューリングが変更された場合、該あるスレーブノード以外の他のスレーブノードのスケジューリングへも影響していた。この場合、他のスレーブノードのスケジューリングの変更が該他のスレーブノードの要求を満たさないおそれがあった。従来では、通信ノードにコントローラを追加するなど、ハードウエアの構成を変更することにより対応を行っていた。
【０２２６】
通信システムの一実施例では、あるスレーブノードのスケジューリングが変更されても、他のスレーブノードのスケジューリングへの影響はないため、各スレーブノードの要求を満たすことができる。また、ハードウエアの構成を変更することなく、あるスレーブノードのスケジューリングの変更が、該あるスレーブノード以外の他のスレーブノードのスケジューリングへ影響することを低減できる。
【０２２７】
以上、本発明は特定の実施例及び変形例を参照しながら説明されてきたが、各実施例及び変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウエアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【０２２８】
１００  マスターノード
１０２  ＭＣＵ
１０４  通信装置
１０６  トランシーバ
１１０  マスター機能部
１１２  スケジューリング部
１１４  メッセージ作成部
１１６  フレーム送信制御部
１１８  フレーム受信制御部
２００ｎ（ｎは、ｎ＞０の整数）  スレーブノード
３００  通信バス
【図１】
2014171010.tif 000003
【図２】
2014171010.tif 000004
【図３】
2014171010.tif 000005
【図４】
2014171010.tif 000006
【図５】
2014171010.tif 000007
【図６】
2014171010.tif 000008
【図７】
2014171010.tif 000009
【図８】
2014171010.tif 000010
【図９】
2014171010.tif 000011
【図１０】
2014171010.tif 000012
【図１１】
2014171010.tif 000013
【図１２】
2014171010.tif 000014
【図１３】
2014171010.tif 000015
【図１４】
2014171010.tif 000016
【図１５】
2014171010.tif 000017
【図１６】
2014171010.tif 000018