(57)【要約】【課題】マルチマスタ方式の通信システムとして、マスタースレーブ方式の通信システムを動作させること。【解決手段】通信バスを介して接続されたスレーブノードとの間で、通信を行う通信ノードは、スレーブノードとの間で送受信されるメッセージフレーム間の時間間隔を設定する時間間隔設定部と、スレーブノードとの間で通信を行う他の通信ノードにより送受信されるメッセージフレームの終了を検出する終了検出部と、メッセージフレームが終了したことが検出されてから、メッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定部と、メッセージフレーム間の時間間隔が経過したと判定されるまでの間に、通信バスが他の通信ノードに占有されているかを判定するバス占有判定部と、通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御部とを有する。【選択図】図６
2013012914.tif 000002
【特許請求の範囲】
【請求項１】
通信バスを介して接続されたスレーブノードとの間で、通信を行う通信ノードであって、
スレーブノードとの間で送受信されるべきメッセージフレーム間の時間間隔を設定するメッセージフレーム時間間隔設定部と、
前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送受信されるべきメッセージフレームの終了を検出するメッセージフレーム終了検出部と、
前記メッセージフレーム終了検出部によりメッセージフレームが終了したことが検出されてから、前記メッセージフレーム時間間隔設定部により設定されるべきメッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定部と、
前記時間間隔経過判定部によりメッセージフレーム間の時間間隔が経過したと判定されるまでの間に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第１のバス占有判定部と、
該第１のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御部と
を有する、通信ノード。
【請求項２】
請求項１に記載の通信ノードにおいて、
前記メッセージフレーム時間間隔設定部は、前記メッセージフレーム間の時間間隔として、乱数に基づいて生成されるべき値を設定する、通信ノード。
【請求項３】
請求項１に記載の通信ノードにおいて、
前記メッセージフレーム時間間隔設定部は、前記メッセージフレーム間の時間間隔として、固定された値を設定する、通信ノード。
【請求項４】
請求項３に記載の通信ノードにおいて、
前記メッセージフレームに含まれるべきブレークフィールド長を設定するブレークフィールド長設定部と、
該ブレークフィールド長設定部により設定されるべきブレークフィールド長に従って、ブレークフィールドを送信する制御を行うブレークフィールド送信制御部と、
前記ブレークフィールド送信制御部によりブレークフィールドの送信が終了したと判定された際に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第２のバス占有判定部と
を有し、
前記メッセージフレーム送信制御部は、前記第２のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームの送信を継続する制御を行う、通信ノード。
【請求項５】
請求項１に記載の通信ノードにおいて、
前記メッセージフレーム終了検出部は、前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送信されるべきブレークフィールドの立ち上がりからの経過時間に基づいて、メッセージフレームの終了を検出する、通信ノード。
【請求項６】
請求項１に記載の通信ノードにおいて、
前記第１のバス占有判定部は、前記時間間隔経過判定部によりメッセージフレーム間の時間間隔が経過したと判定されるまでの間に、前記通信バスがドミナント状態であることが検出された場合に、該通信バスが他の通信ノードに占有されていると判定する、通信ノード。
【請求項７】
請求項４に記載の通信ノードにおいて、
前記第２のバス占有判定部は、前記ブレークフィールド送信制御部によりブレークフィールドの送信が終了したと判定された際に、前記通信バスがドミナント状態であることが検出された場合に、該通信バスが他の通信ノードに占有されていると判定する、通信ノード。
【請求項８】
スレーブノードと、該スレーブノードと通信バスを介して接続された通信ノードとを有する通信システムであって、
通信ノードは、
スレーブノードとの間で送受信されるべきメッセージフレーム間の時間間隔を設定するメッセージフレーム時間間隔設定部と、
前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送受信されるべきメッセージフレームの終了を検出するメッセージフレーム終了検出部と、
前記メッセージフレーム終了検出部によりメッセージフレームが終了したことが検出されてから、前記メッセージフレーム時間間隔設定部により設定されるべきメッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定部と、
前記時間間隔経過判定部によりメッセージフレーム間の時間間隔が経過したと判定されるまでの間際に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第１のバス占有判定部と、
該第１のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御部と
を有する、通信システム。
【請求項９】
請求項８に記載の通信システムにおいて、
前記メッセージフレームに含まれるべきブレークフィールド長を設定するブレークフィールド長設定部と、
該ブレークフィールド長設定部により設定されるべきブレークフィールド長に従って、ブレークフィールドを送信する制御を行うブレークフィールド送信制御部と、
前記ブレークフィールド送信制御部によりブレークフィールドの送信が終了したと判定された際に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第２のバス占有判定部と
を有し、
前記メッセージフレーム送信制御部は、前記第２のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームの送信を継続する制御を行う、通信システム。
【請求項１０】
通信バスを介して接続されたスレーブノードとの間で、通信を行う通信ノードにおける通信方法であって、
スレーブノードとの間で送受信されるべきメッセージフレーム間の時間間隔を設定するメッセージフレーム時間間隔設定ステップと、
前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送受信されるべきメッセージフレームの終了を検出するメッセージフレーム終了検出ステップと、
前記メッセージフレーム終了検出ステップによりメッセージフレームが終了したことが検出されてから、前記メッセージフレーム時間間隔設定ステップにより設定されるべきメッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定ステップと、
前記時間間隔経過判定ステップによりメッセージフレーム間の時間間隔が経過したと判定されるまでの間に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第１のバス占有判定ステップと、
該第１のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御ステップと
を有する、通信方法。
【請求項１１】
請求項１０に記載の通信方法において、
前記メッセージフレームに含まれるべきブレークフィールド長を設定するブレークフィールド長設定ステップと、
該ブレークフィールド長設定ステップにより設定されるべきブレークフィールド長に従って、ブレークフィールドを送信する制御を行うブレークフィールド送信制御ステップと、
前記ブレークフィールド送信制御ステップによりブレークフィールドの送信が終了したと判定された際に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第２のバス占有判定ステップと
を有し、
前記メッセージフレーム送信制御ステップは、前記第２のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームの送信を継続する制御を行う、通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムに関する。
【背景技術】
【０００２】
車両には、１又は複数の通信システムが搭載されている。車両の主にボデー系に使用される車載ＬＡＮの通信プロトコルとして、ローカルインターコネクトネットワーク（ＬＩＮ：  Ｌｏｃａｌ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｎｅｔｗｏｒｋ）が知られている。
【０００３】
ＬＩＮには、マスターとなる通信ノードと、スレーブとなる通信ノードが含まれる。マスターとなる通信ノードは、ネットワークの通信タイミング等を制御する。ＬＩＮでは、１つの通信ノードがマスターとなる。
【０００４】
ＬＩＮに関して、マスタースレーブ方式を維持しながら、複数の通信ノードをマスターの候補とできる技術が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２８７９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
既存のＬＩＮクラスタに、新たに自発的に通信を行う通信ノードを追加できない。新たに通信ノードを追加するためには、該追加される通信ノードを制御するための通信スケジュールを設計したり、既存のＬＩＮクラスタに含まれる通信ノードを制御するための通信スケジュールを再設計したりする必要がある。
【０００７】
また、動作が保証されている独立したＬＩＮクラスタが複数ある場合に、これらのＬＩＮクラスタを１つのＬＩＮクラスタとして結合できない。
【０００８】
また、通信制御における通信ノード間の主従関係と、実際に通信制御を行う際の主従関係とを一致させようとする場合に、設計に制約がでる。
【０００９】
ＬＩＮは、マスタースレーブ方式を採用しているため、複数のマスターノードを１つのネットワークに配置できない。
【００１０】
仮に、１つのネットワークに、複数のマスターノードを配置した場合について説明する。
【００１１】
図１は、１つのＬＩＮに複数のマスターノードを配置した場合に、各マスターノードにより独立してスケジューリングが実行された場合の一例を示す。図１には、１つのＬＩＮに、Ｎ（Ｎは、Ｎ＞１の整数）個のマスターノードが配置される場合について示される。Ｎ個のマスターノードは、同一の通信バスに接続される。また、Ｎ個のマスターノードは独立に動作する。
【００１２】
マスターノード１により、通信バス上に、メッセージ１（Ｍ１）を送信するためのスケジューリングが行われる。該メッセージは複数のフレームを含み、各フレームはＩＤ１、ＩＤ２、ＩＤ３、ＩＤ４により表される。マスターノード２により、通信バス上に、メッセージ２（Ｍ２）を送信するためのスケジューリングが行われる。該メッセージは複数のフレームを含み、各フレームはＩＤ１、ＩＤ２、ＩＤ３、ＩＤ４により表される。マスターノードＮにより、通信バス上に、メッセージＮ（ＭＮ）を送信するためのスケジューリングが行われる。該メッセージは複数のフレームを含み、各フレームはＩＤ１、ＩＤ２、ＩＤ３、ＩＤ４により表される。
【００１３】
マスターノード２によるスケジューリングによりメッセージ２のＩＤ１が送信される時間は、マスターノード１によるスケジューリングにより、通信バス上に、メッセージ１のＩＤ１が送信されている。通信バス上に、メッセージ１のＩＤ１が送信されているため、通信バス上で、複数のメッセージが重複してスケジューリングされている。この状態で、マスターノード２によるスケジューリングに従って、メッセージ２のＩＤ１が送信された場合、メッセージ２のＩＤ１は、メッセージ１のＩＤ１と衝突する。
【００１４】
また、マスターノード２によるスケジューリングにより、メッセージ２のＩＤ２が送信される時間は、マスターノード１によるスケジューリングにより、通信バス上に、メッセージ１のＩＤ３が送信されている。通信バス上に、メッセージ１のＩＤ３が送信されているため、通信バス上で、複数のメッセージが重複してスケジューリングされている。この状態で、マスターノード２によるスケジューリングに従って、メッセージ２のＩＤ２が送信された場合、メッセージ２のＩＤ２は、メッセージ１のＩＤ３と衝突する。
【００１５】
また、マスターノード２によるスケジューリングにより、メッセージ２のＩＤ３が送信される時間は、メッセージが送信される時間としてスケジューリングされていない。通信バス上に、メッセージが送信されていないため、マスターノード２によるスケジューリングに従って、メッセージ２のＩＤ３が送信される。
【００１６】
また、マスターノード２によるスケジューリングにより、メッセージ２のＩＤ４が送信される時間は、マスターノードＮによるスケジューリングにより、通信バス上に、メッセージＮのＩＤ４が送信されている。通信バス上に、メッセージＮのＩＤ４が送信されているため、通信バス上で、複数のメッセージが重複してスケジューリングされている。この状態で、マスターノード２によるスケジューリングに従って、メッセージ２のＩＤ４が送信された場合、メッセージ２のＩＤ４は、メッセージＮのＩＤ４と衝突する。
【００１７】
また、マスターノードＮによるスケジューリングにより、メッセージＮのＩＤ１が送信される時間は、マスターノード１によるスケジューリングにより、通信バス上に、メッセージ１のＩＤ２が送信されている。通信バス上に、メッセージ１のＩＤ２が送信されているため、通信バス上で、複数のメッセージが重複してスケジューリングされている。この状態で、マスターノードＮによるスケジューリングに従って、メッセージＮのＩＤ１が送信された場合、メッセージＮのＩＤ１は、メッセージ１のＩＤ２と衝突する。
【００１８】
また、マスターノードＮによるスケジューリングにより、メッセージＮのＩＤ２が送信される時間は、マスターノード１によるスケジューリングにより、通信バス上に、メッセージ１のＩＤ３が送信されている。通信バス上に、メッセージ１のＩＤ３が送信されているため、通信バス上で、複数のメッセージが重複してスケジューリングされている。この状態で、マスターノードＮによるスケジューリングに従って、メッセージＮのＩＤ２が送信された場合、メッセージＮのＩＤ２は、メッセージ１のＩＤ３と衝突する。
【００１９】
また、マスターノードＮによるスケジューリングにより、メッセージＮのＩＤ３が送信される時間は、マスターノード２によるスケジューリングにより、通信バス上に、メッセージ２のＩＤ３が送信されている。通信バス上に、メッセージ２のＩＤ３が送信されているため、通信バス上で、複数のメッセージが重複してスケジューリングされている。この状態で、マスターノードＮによるスケジューリングに従って、メッセージＮのＩＤ３が送信された場合、メッセージＮのＩＤ３は、メッセージ２のＩＤ３と衝突する。
【００２０】
また、マスターノードＮによるスケジューリングにより、メッセージＮのＩＤ４が送信される時間は、メッセージが送信される時間としてスケジューリングされていない。通信バス上に、メッセージが送信されていないため、マスターノードＮによるスケジューリングに従って、メッセージＮのＩＤ４が送信される。
【００２１】
以上のように、マスタースレーブ方式が採用されている通信システムに、複数のマスターノードを配置した場合には、メッセージの衝突が生じることがある。
【００２２】
本発明は、上述の点に鑑みてなされたものであり、マルチマスタ方式の通信システムとして、マスタースレーブ方式の通信システムを動作させることを目的とする。
【課題を解決するための手段】
【００２３】
開示の一実施例の通信ノードは、
通信バスを介して接続されたスレーブノードとの間で、通信を行う通信ノードであって、
スレーブノードとの間で送受信されるべきメッセージフレーム間の時間間隔を設定するメッセージフレーム時間間隔設定部と、
前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送受信されるべきメッセージフレームの終了を検出するメッセージフレーム終了検出部と、
前記メッセージフレーム終了検出部によりメッセージフレームが終了したことが検出されてから、前記メッセージフレーム時間間隔設定部により設定されるべきメッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定部と、
前記時間間隔経過判定部によりメッセージフレーム間の時間間隔が経過したと判定されるまでの間に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第１のバス占有判定部と、
該第１のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御部と
を有する。
【００２４】
開示の一実施例の通信システムは、
スレーブノードと、該スレーブノードと通信バスを介して接続された通信ノードとを有する通信システムであって、
通信ノードは、
スレーブノードとの間で送受信されるべきメッセージフレーム間の時間間隔を設定するメッセージフレーム時間間隔設定部と、
前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送受信されるべきメッセージフレームの終了を検出するメッセージフレーム終了検出部と、
前記メッセージフレーム終了検出部によりメッセージフレームが終了したことが検出されてから、前記メッセージフレーム時間間隔設定部により設定されるべきメッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定部と、
前記時間間隔経過判定部によりメッセージフレーム間の時間間隔が経過したと判定されるまでの間に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第１のバス占有判定部と、
該第１のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御部と
を有する。
【００２５】
開示の一実施例の通信方法は、
通信バスを介して接続されたスレーブノードとの間で、通信を行う通信ノードにおける通信方法であって、
スレーブノードとの間で送受信されるべきメッセージフレーム間の時間間隔を設定するメッセージフレーム時間間隔設定ステップと、
前記通信バスを介してスレーブノードとの間で通信を行う他の通信ノードにより送受信されるべきメッセージフレームの終了を検出するメッセージフレーム終了検出ステップと、
前記メッセージフレーム終了検出ステップによりメッセージフレームが終了したことが検出されてから、前記メッセージフレーム時間間隔設定ステップにより設定されるべきメッセージフレーム間の時間間隔が経過したかどうかを判定する時間間隔経過判定ステップと、
前記時間間隔経過判定ステップによりメッセージフレーム間の時間間隔が経過したと判定されるまでの間に、前記通信バスが他の通信ノードに占有されているかどうかを判定する第１のバス占有判定ステップと、
該第１のバス占有判定部により前記通信バスが他の通信ノードに占有されていないと判定された場合に、メッセージフレームを送信する制御を行うメッセージフレーム送信制御ステップと
を有する。
【発明の効果】
【００２６】
開示の実施例によれば、マルチマスタ方式の通信システムとして、マスタースレーブ方式の通信システムを動作させることができる。
【図面の簡単な説明】
【００２７】
【図１】同一バス上に接続された複数のマスターノードによるスケジューリングの一例を示す図である。
【図２】通信システムの一実施例を示す図である。
【図３】フレームフォーマットの一例を示す図である。
【図４】マスターノードの一実施例（その１）を示す図である。
【図５】バスアービトレーションの一実施例を示す図である。
【図６】マスターノードの一実施例を示す機能ブロック図である。
【図７】アービトレーション処理の一実施例を示す図である。
【図８】アービトレーション処理の一実施例を示す図である。
【図９】マスターノードの動作の一実施例を示すフローチャートである。
【図１０】バスアービトレーションの一実施例（その２）を示す図である。
【図１１】マスターノードの一実施例を示す機能ブロック図である。
【図１２】アービトレーション処理の一実施例を示す図である。
【図１３】アービトレーション処理の一実施例を示す図である。
【図１４】マスターノードの動作の一実施例を示すフローチャートである。
【発明を実施するための形態】
【００２８】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００２９】
＜第１の実施例＞
＜通信システム＞
図２は、通信システムの一実施例を示す。
【００３０】
本通信システムは、複数の通信ノードを有する。本通信システムは、単線ネットワークであってもよい。該複数の通信ノードによりクラスタが構成されてもよい。
【００３１】
複数の通信ノードには、マスターノード１００ｌ（ｌは、ｌ＞１の整数）と、スレーブノード２００ｍ（ｍは、ｍ＞１の整数）とが含まれる。
【００３２】
マスターノード１００１−マスターノード１００ｌは、メッセージを送信すべきタイミングを制御する。具体的には、マスターノード１００１−マスターノード１００ｌは、メッセージに含まれるヘッダーを送信すべきタイミングをスケジューリングする。該スケジューリングの際に、送信すべきメッセージのＩＤ、送信の順番、送信する時間間隔などが設定される。
【００３３】
マスターノード１００１−マスターノード１００ｌ、スレーブノード２００１−スレーブノード２００ｍは、通信バス３００を介して有線接続される。マスターノード１００１−マスターノード１００ｌと、スレーブノード２００１−スレーブノード２００ｍとの間は、通信バス３００を介して所定の通信プロトコルに従って通信を行う。具体的には、ＬＩＮに従って通信を行う。
【００３４】
通信バス３００を流れる信号は、２つの論理レベルのどちらかの状態を有する。該２つの論理レベルの状態は、「ドミナント（dominant）」と、「リセッシブ（recessive）」と呼ばれる。ドミナントは、グラウンド電位に近い、論理レベル０の状態である。リセッシブは、バッテリの＋（プラス）端子の電位に近い、論理レベル１の状態である。
【００３５】
マスターノード１００１−マスターノード１００ｌは、所定のフレームフォーマットに従ってメッセージを送信する。
【００３６】
＜フレームフォーマット＞
図３は、マスターノード１００１−マスターノード１００ｌと、スレーブノード２００１−スレーブノード２００ｍとの間で送受信されるフレームフォーマットの一例を示す。
【００３７】
フレームは、ヘッダーと、レスポンスを含む。ヘッダーはマスターノードから送信され、レスポンスはスレーブノードから送信される。
【００３８】
ヘッダーには、ブレークフィールド（Ｂｒｅａｋ  ｆｉｅｌｄ）と、シンクフィールド（Ｓｙｎｃ  ｆｉｅｌｄ）と、プロテクテッドアイデンティファイアーフィールド（Ｐｒｏｔｅｃｔｅｄ  ｉｄｅｎｔｉｆｉｅｒ  ｆｉｅｌｄ）とが含まれる。
【００３９】
ブレークフィールドは、クラスタの全スレーブノードに、フレームの開始を通知するためのフィールドである。ブレークフィールドのドミナント継続時間は「ｔＢｒｅａｋ」により表される。例えば、該ブレークフィールドのドミナント継続時間は、１３ビット長以上である。本実施例では、各マスターノードのブレークフィールドのドミナント継続時間は、固定長であり、略同一である。該ブレークフィールドのドミナント継続時間は、優先制御に使用される。
【００４０】
シンクフィールドは、クラスタに含まれる通信ノード間のクロック誤差の補正に使用される。
【００４１】
プロテクテッドアイデンティファイアーフィールドは、フレームの識別番号を表す６ビット（０〜５ビット）のフレームＩＤと、２ビット（６、７ビット）のパリティの合計８ビットで構成される。
【００４２】
レスポンスには、データフィールド（Ｄａｔａ  Ｆｉｅｌｄ）と、チェックサム（Ｃｈｅｃｋｓｕｍ）が含まれる。データフィールドと、チェックサムは、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）フレームで送信される。データフィールドは、１個であってもよいし、複数であってもよい。各データフィールドには、最大８バイトのデータを格納できる。チェックサムは、データを正確に受信できたかどうかを判断する際に使用される。具体的には、チェックサムには、各データの値の総和を反転した値が格納される。
【００４３】
シンクフィールド長と、プロテクテッドアイデンティファイアーフィールド長と、データフィールド長の合計は「ｔＦｒａｍｅ_Ｓｌｏｔ」により表される。具体的には、「ｔＦｒａｍｅ_Ｓｌｏｔ」は、ブレークフィールドの立ち上がりエッジ（ｒｉｓｉｎｇ  ｅｄｇｅ）を基点とする。以下、「ｔＦｒａｍｅ_Ｓｌｏｔ」により表されるシンクフィールド長と、プロテクテッドアイデンティファイアーフィールド長と、データフィールド長の合計を「フレームスロット長」という。
【００４４】
また、隣接するフレーム間には、フレーム間間隔（Ｉｎｔｅｒ−ｆｒａｍｅ  ｓｐａｃｅ）が設定される。
【００４５】
また、図３に示される例では、ジッター（ｊｉｔｔｅｒ）が示される。ジッターは、時間軸方向での信号波形の揺らぎを表す。本実施例では、該ジッターを利用してバスアービトレーション制御が行われる。該ジッター長をアービトレイションインターフレームスペース（ＡＩＦＳ：  Ａｒｂｉｔｒａｔｉｏｎ  Ｉｎｔｅｒ  Ｆｒａｍｅ  Ｓｐａｃｅ）長（以下、「ＡＩＦＳ長」という）と呼ぶ。
【００４６】
また、ブレークフィールドからチェックサムまでの時間の合計は「ＴＦｒａｍｅ＿Ｍａｘｉｍｕｍ」により表される。具体的には、「ＴＦｒａｍｅ＿Ｍａｘｉｍｕｍ」は、ブレークフィールドの立ち上がりエッジ（ｒｉｓｉｎｇ  ｅｄｇｅ）を基点とする。
【００４７】
＜マスターノード＞
図４は、マスターノードを示す。マスターノード１００１−マスターノード１００ｌは略同一の構成であるため、代表してマスターノード１００ｌについて説明する。
【００４８】
マスターノード１００ｌは、マイクロコントローラユニット（ＭＣＵ：  Ｍｉｃｒｏ−Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１０２ｌと、トランシーバ１０６ｌとを有する。
【００４９】
ＭＣＵ１０２ｌには、１又は複数のマイコンが含まれる。マイコンの代わりにＣＰＵが含まれてもよいし、ＭＣＵとＣＰＵとが混在していてもよい。さらに、ＭＣＵ１０２ｌには、通信装置１０４ｌが含まれる。通信装置１０４ｌはトランシーバ１０６ｌとの間で、シリアル通信を行う。具体的には、該通信装置１０４ｌは、ＵＡＲＴであってもよい。
【００５０】
トランシーバ１０６ｌは、ＭＣＵ１０２ｌ、通信バス３００と接続される。トランシーバ１０６ｌは、ＭＣＵ１０２ｌから入力されたデータを通信バス３００に送信し、通信バス３００からのデータをＭＣＵ１０２ｌに入力する。
【００５１】
＜マスターノードの機能＞
マスターノード１００ｌは、他のマスターノードが、メッセージ送出中である場合には、次のフレームまで待機する。具体的には、他のマスターノードにより送信されるべきメッセージに含まれるブレークフィールドの立ち上がりエッジを基点とする、フレームスロット長の経過を基点として、マスターノード１００ｌは、送信しようとするフレームの保護識別子（ＰＩＤ：  Ｐｒｏｔｅｃｔｅｄ  ｉｄｅｎｔｉｆｉｅｒ）に対応したＡＩＦＳ長の計測を行う。マスターノード１００ｌは、ＡＩＦＳ長が経過した場合にブレークフィールドの送出を行う。
【００５２】
当該マスターノード１００ｌの他にメッセージを送信しようとするマスターノードがいる場合には、当該マスターノード１００ｌのＡＩＦＳ長が先に経過した場合には、当該マスターノード１００ｌは、ブレークフィールドの送出を行うことにより通信バスを占有できる。
【００５３】
一方、他のマスターノードのＡＩＦＳ長が先に経過した場合には、当該マスターノード１００ｌは次のフレームまで待機する。この場合、当該マスターノード１００ｌは、通信バス３００の状態がドミナント状態になったことにより、他のマスターノードにより、通信バス３００を占有されたことを検出できる。
【００５４】
図５は、バスアービトレーションの一実施例を示す。
【００５５】
図５に示される例では、３個のマスターノード（マスターノード１００１、１００２、及び１００３）におけるバスアービトレーションの例を示す。２個の場合、４個以上のマスターノードの場合においても同様である。
【００５６】
図５に示される例では、マスターノード１００１はメッセージ送出中である。この状態で、マスターノード１００２、マスターノード１００３に、送信すべきデータが発生する。
【００５７】
マスターノード１００２、マスターノード１００３は、マスターノード１００１によりデータが送出されているので、次のフレームまで待機する。
【００５８】
マスターノード１００２、マスターノード１００３は、マスターノード１００１のブレークフィールドの立ち上がりを基点としたフレームスロット長が経過するまで待機する。マスターノード１００２、マスターノード１００３は、マスターノード１００１のフレームスロット長の経過を基点として、次のフレームのＰＩＤに対応したＡＩＦＳ長を計測する。具体的には、マスターノード１００２は、マスターノード１００２により送信されるべき次のフレームのＰＩＤに対応したＡＩＦＳ長を計測する。マスターノード１００３は、マスターノード１００３により送信されるべき次のフレームのＰＩＤに対応したＡＩＦＳ長を計測する。
【００５９】
図５には、マスターノード１００２により設定されたＡＩＦＳ長の方が、マスターノード１００３により設定されたＡＩＦＳ長よりも短い時間である例が示される。つまり、マスターノード１００２により設定されたＡＩＦＳ長の方が先に満了する。この場合、マスターノード１００２は、ブレークフィールドを送出し、バスを占有する。
【００６０】
図６は、マスターノード１００ｌを示す機能ブロック図である。図６には、本実施例に関する部分について主に説明される。従って、スレーブノードとしての機能や、診断機能等については省略される。
【００６１】
マスターノード１００ｌは、マスター機能部１１０を有する。マスター機能部１１０は、インターフレームスペース長設定部１１２と、フレームスロット計測部１１４と、インターフレームスペース計測部１１６と、ブレークフィールド送信制御部１１８と、バスアービトレーション判定部１２０と、フレーム送信制御部１２２とを有する。ＭＣＵ１０２ｌが、所定のプログラムに従って機能することにより、マスター機能部１１０として機能するようにしてもよい。該所定のプログラムは、ＭＣＵ１０２ｌに格納されていてもよい。
【００６２】
インターフレームスペース長設定部１１２は、送信すべきデータが発生し、かつ他のマスターノードにより通信バス３００が占有されている場合に、機能する。インターフレームスペース設定部１１２は、通信バス３００がドミナント状態である場合に、他のマスターノードにより通信バス３００が占有されていると判定してもよい。インターフレームスペース長設定部１１２は、通信バス３００を占有している他のマスターノードにより送信されるべきブレークフィールドの立ち上がりを基点としたフレームスロット長の経過後に計測すべきＡＩＦＳ長を設定する。該ＡＩＦＳ長は、フレーム毎に設定されてもよいし、ＰＩＤ毎に設定されてもよい。
【００６３】
＜ＡＩＦＳ長の設定方法（その１）＞
インターフレームスペース長設定部１１２は、乱数を発生させることにより、ＡＩＦＳ長を設定するようにしてもよい。具体的には、式（１）に従って設定する。
【００６４】
ｔＡＩＦＳ＝ＴＵｎｉｔ×Ｔｒｕｎｃ（１＋ｎＰｒｉｏｒｉｔｙ×Ｒｎｄ（ｓｅｅｄ））      （１）
式（１）において、「ｔＡＩＦＳ」はＡＩＦＳ長を表す。「ＴＵｎｉｔ」はクロック誤差及びバスの状態認識における遅延（ｄｅｌａｙ）に基づいて、ｔＡＩＦＳの時間差を認識できる最小時間を表す。「ｎＰｒｉｏｒｉｔｙ」は優先（Ｐｒｉｏｒｉｔｙ）レベルの個数を表す。「ｎＰｒｉｏｒｉｔｙ」は１以上の整数である。Ｔｒｕｎｃ（独立変数（ａｒｇｕｍｅｎｔ））は小数点以下切り捨てによる整数化関数を表す。「Ｒｎｄ（ｓｅｅｄ）」は乱数発生関数を表す。Ｒｎｄ（ｓｅｅｄ）は０以上１未満の一様分布乱数を生成する。マスターノード毎に、異なるｓｅｅｄを与えることにより、異なる系列の乱数を発生させる。
【００６５】
乱数によりＡＩＦＳ長を発生させることにより、通信バス３００の占有権を各マスターノード間で分散させることができる。
【００６６】
＜ＡＩＦＳ長の設定方法（その２）＞
インターフレームスペース長設定部１１２は、ＡＩＦＳ長に、固定値を設定するようにしてもよい。具体的には、式（２）に従って設定する。
【００６７】
ｔＡＩＦＳ＝ＴＵｎｉｔ×ｎ      （２）
式（２）において、「ｔＡＩＦＳ」はＡＩＦＳ長を表す。「ＴＵｎｉｔ」はクロック誤差及びバスの状態認識における遅延（ｄｅｌａｙ）に基づいて、ｔＡＩＦＳの時間差を認識できる最小時間を表す。「ｎ」は、１、２、３、・・・の自然数を表す。「ｎ」は、ＰＩＤ毎に異なる値が設定される
ＡＩＦＳ長に、固定値を設定することにより、特定フレームに通信バスの占有権を与えることができる。
【００６８】
インターフレームスペース長設定部１１２は、インターフレームスペース計測部１１４に、ＡＩＦＳ長を表す情報を入力する。
【００６９】
フレームスロット計測部１１４は、トランシーバ１０６ｌと接続される。フレームスロット計測部１１４は、トランシーバ１０６ｌを介して、通信バス３００の状態をモニターする。フレームスロット計測部１１４は、当該マスターノード１００ｌに送信すべきデータが発生した際の通信バス３００の状態がドミナント状態である場合、該通信バス３００の状態がリセッシブ状態となるまでモニターし続ける。フレームスロット計測部１１４は、該通信バス３００の状態がリセッシブ状態となる際に、フレームスロット長を計測するタイマー（以下、「フレームスロット長計測タイマー」という）を起動する。具体的には、フレームスロット計測部１１４は、通信バス３００を占有する他のマスターノードによりブレークフィールドの送信が終了することにより通信バス３００の状態がドミナント状態からリセッシブ状態へとなる立ち上がりのエッジが検出された際に、該フレームスロット長計測タイマーを起動する。フレームスロット計測部１１４は、該フレームスロット長計測タイマーが満了すると、インターフレームスペース計測部１１６に、フレームスロット長計測タイマーが満了したことを表す情報を入力する。
【００７０】
インターフレームスペース計測部１１６は、インターフレームスペース長設定部１１２、フレームスロット計測部１１４と接続される。インターフレームスペース計測部１１６は、フレームスロット計測部１１４によりフレームスロット長計測タイマーが満了したことを表す情報が入力された際に、インターフレームスペース長設定部１１２により入力されるべきＡＩＦＳ長を表す情報に従って、ＡＩＦＳ長を計測するためのタイマー（以下、「ＡＩＦＳ長計測タイマー」という）を起動する。インターフレームスペース計測部１１６は、ＡＩＦＳ長計測タイマーが満了した際に、ブレークフィールド送信制御部１１８に、ＡＩＦＳ長計測タイマーが満了したことを表す情報を入力する。
【００７１】
また、インターフレームスペース計測部１１６は、バスアービトレーション判定部１２０による命令に従って、ＡＩＦＳ長計測タイマーを終了する。ＡＩＦＳ長計測タイマーを終了した場合、フレームスロット計測部１１４によりフレームスロット長計測タイマーが満了したことを表す情報が入力された際に、ＡＩＦＳ長を表す情報に従って、ＡＩＦＳ長計測タイマーを再度起動する。
【００７２】
ブレークフィールド送信制御部１１８は、インターフレームスペース計測部１１６、トランシーバ１０６ｌと接続される。ブレークフィールド送信制御部１１８は、インターフレームスペース計測部１１６から入力されるべき、ＡＩＦＳ長計測タイマーが満了したことを表す情報に従って、ブレークフィールドを生成する。ＡＩＦＳ長計測タイマーが満了したことにより、他のマスターノードにより通信バス３００が占有されていない判定されるためである。ブレークフィールド送信制御部１１８は、トランシーバ１０６ｌを介して、ブレークフィールドを送信する。ブレークフィールド送信制御部１１８は、バスアービトレーション判定部１２０に、ブレークフィールドの送信を開始したことを表す情報を入力する。また、ブレークフィールド送信制御部１１８は、ブレークフィールドを送信する際に、ブレークフィールドを送信すべき時間を計測するためのタイマー（以下、「ブレークフィールド送信時間計測タイマー」という）を起動する。ブレークフィールド送信制御部１１８は、ブレークフィールド送信時間計測タイマーが満了した場合に、ブレークフィールドの送信を終了する。ブレークフィールド送信制御部１１８は、ブレークフィールドの送信を終了した際に、バスアービトレーション判定部１２０に、ブレークフィールドの送信を終了したことを表す情報を入力する。
【００７３】
バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８、トランシーバ１０６ｌ、インターフレームスペース計測部１１６と接続される。バスアービトレーション判定部１２０は、トランシーバ１０６ｌを介して、通信バス３００をモニターする。バスアービトレーション判定部１２０は、当該マスターノード１００ｌが通信バス３００を占有できるかどうかを判定する。
【００７４】
＜当該マスターノードにより通信バスを占有できると判定される場合＞
図７は、当該マスターノード１００ｌにより通信バス３００を占有できると判定される場合のバスアービトレーション判定部１２０によりモニターされるべき通信バス３００の状態を表す。
【００７５】
バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８から、ブレークフィールドの送信を開始したことを表す情報入力された場合に、当該マスターノード１００ｌにより通信バス３００を占有できると判定する。
【００７６】
ブレークフィールド送信制御部１１８によりブレークフィードを送信する制御が行われたことにより通信バス３００はドミナント状態に変化する。該ブレークフィールドが送信されたことにより、バスアービトレーション判定部１２０により通信バス３００がドミナント状態に変化したことが検出される。
【００７７】
バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８によりブレークフィールドの送信を終了したことを表す情報が入力された際に、フレーム送信制御部１２２に、ブレークフィールドの送信を終了したことを表す情報を入力する。
【００７８】
＜当該マスターノードにより通信バスを占有できないと判定される場合＞
図８は、当該マスターノード１００ｌにより通信バス３００を占有できないと判定される場合のバスアービトレーション判定部１２０によりモニターされるべき通信バス３００の状態を表す。バスアービトレーション判定部１２０は、定期的又は不定期的に、通信バス３００の状態をモニターする。
【００７９】
インターフレームスペース計測部１１６によりＡＩＦＳ長計測タイマーが起動され、該ＡＩＦＳ長計測タイマーが起動中であるにもかかわらず、バスアービトレーション判定部１２０により、通信バス３００の状態がドミナント状態に変化したことが検出された場合に、当該マスターノード１００ｌにより通信バスを占有できないと判定する。他のマスターノードによりブレークフィールドが送信されたと判定できるためである。この場合、バスアービトレーション判定部１２０は、インターフレームスペース計測部１１６に、ＡＩＦＳ長計測タイマーを終了するように命令する。
【００８０】
フレーム送信制御部１２２は、バスアービトレーション判定部１２０と接続される。フレーム送信制御部１２２は、バスアービトレーション判定部１２０から、当該マスターノード１００ｌにより通信バスを占有できることを表す情報が入力された場合に、フレームを送信するための制御を行う。具体的には、フレーム送信制御部１２２は、バスアービトレーション判定部１２０から、ブレークフィールドの送信を終了したことを表す情報が入力された後に、ヘッダーを送信するための制御を行う。
【００８１】
＜マスターノードの動作＞
図９は、マスターノード１００ｌの動作の一実施例を示す。図９には、マスターノード１００ｌに送信すべきメッセージが発生した際に、他のマスターノードにより通信バス３００が占有されている場合の例が示される。
【００８２】
マスターノード１００ｌは、上位から、メッセージ送信要求を受信する（ステップＳ９０２）。該上位は、他のネットワークであってもよい。
【００８３】
マスターノード１００ｌは、ＡＩＦＳ長を設定する（ステップＳ９０４）。つまり、インターフレームスペース長設定部１１２は、ＡＩＦＳ長を設定する。
【００８４】
マスターノード１００ｌは、フレームスロット長を計測する（ステップＳ９０６）。つまり、フレームスロット計測部１１４は、フレームスロット長計測タイマーを起動し、通信バス３００を占有している他のマスターノードにより送信されるべきブレークフィールドの立ち上がりから、フレームスロット長を計測する。
【００８５】
マスターノード１００ｌは、フレームスロット長計測タイマーが満了したかどうかを判定する（ステップＳ９０８）。つまり、フレームスロット長計測部１１４は、フレームスロット長計測タイマーが満了したかどうかを判定する。
【００８６】
フレームスロット長計測タイマーが満了していないと判定された場合（ステップＳ９０８：ＮＯ）、ステップＳ９０８に戻る。フレームスロット長計測タイマーが満了するまで継続される。
【００８７】
フレームスロット長計測タイマーが満了していると判定された場合（ステップＳ９０８：ＹＥＳ）、マスターノード１００ｌは、ＡＩＦＳ長を計測する（ステップＳ９１０）。つまり、インターフレームスペース長計測部１１６は、ＡＩＦＳ長計測タイマーを起動し、フレームスロット長の終了を基点として、ＡＩＦＳ長を計測する。
【００８８】
マスターノード１００ｌは、ＡＩＦＳ長計測タイマーが満了したかどうかを判定する（ステップＳ９１２）。つまり、インターフレームスペース計測部１１６は、ＡＩＦＳ長計測タイマーが満了したかどうかを判定する。
【００８９】
ＡＩＦＳ長計測タイマーが満了したと判定された場合（ステップＳ９１２：ＹＥＳ）、マスターノード１００ｌは、ブレークフィールドを送信する（ステップＳ９１４）。つまり、ブレークフィールド送信制御部１１８は、インターフレームスペース計測部１１６により通知されるべきＡＩＦＳ長計測タイマーが満了したことを表す情報に従って、ブレークフィールドを送信する。この場合、バスアービトレーション判定部１２０により当該マスターフレーム１００ｌにより、通信バス３００の占有ができると判定される。
【００９０】
マスターノード１００ｌは、フレームを送信する（ステップＳ９１６）。つまり、フレーム送信制御部１２２は、ヘッダーを送信するための制御を行う。
【００９１】
ステップＳ９１２により、ＡＩＦＳ長計測タイマーが満了したと判定されない場合（ステップＳ９１２：ＮＯ）、マスターノード１００ｌは、通信バス３００の状態がドミナントであるかどうかを判定する（ステップＳ９１８）。つまり、バスアービトレーション判定部１２０は、通信バス３００の状態をモニターし、ブレークフィールド送信制御部１１８によりブレークフィールドの送信を終了したことを表す情報が入力される前に、通信バス３００の状態がドミナント状態となったかどうかを判定する。
【００９２】
通信バス３００の状態がドミナント状態となったと判定されない場合（ステップＳ９１８：ＮＯ）、ステップＳ９１２に戻る。ＡＩＦＳ長計測タイマーが満了するまで継続される。
【００９３】
通信バス３００の状態がドミナント状態となったと判定された場合（ステップＳ９１８：ＮＯ）、ステップＳ９０６に戻る。通信バス３００の状態がドミナント状態となったと判定された場合には、当該マスターノード１００ｌと同様に送信すべきメッセージが発生した他のマスターノードによりブレークフィールドが送信されたと判定される。このため、メッセージを送信するためには、次のフレームまで待機する必要がある。
【００９４】
本実施例によれば、複数のマスターノード間で、衝突を検知して、送信を実施したり、送信を保留したりすることができる。このため、シングルタスクの通信網であっても、複数のノードをマスターノードとして利用できる。つまり、マルチタスクを実施できる。
【００９５】
具体的には、ＡＩＦＳ長を制御することにより、通信バスを占有するマスターノードを決定するためのアービトレーションを実現できる。アービトレーションを実現できるため、マスタースレーブ方式の通信システムをマルチマスタ方式の通信システムとして動作させることができる。この場合、マスターノードのハードウェアの変更は必要ない。このため、コストを増加させずに、通信スケジュールの設計の自由度を向上させることができる。
【００９６】
＜第２の実施例＞
＜通信システム＞
本通信システムは、図２を参照して説明した通信システムと略同一である。
【００９７】
＜マスターノード＞
マスターノード１００１−１００ｌは、図４を参照して説明したマスターノードと略同一の構成である。
【００９８】
＜マスターノードの機能＞
マスターノード１００ｌは、当該マスターノード１００ｌに送信すべきメッセージが発生した際に、他のマスターノードにより通信バス３００が占有され、メッセージ送出中である場合には、次のフレームまで待機する。具体的には、通信バス３００を占有している他のマスターノードのブレークフィールドの立ち上がりを基点とするフレームスロット長の経過を基点として、マスターノード１００ｌは、送信しようとするフレームの保護識別子（ＰＩＤ：  Ｐｒｏｔｅｃｔｅｄ  ｉｄｅｎｔｉｆｉｅｒ）に対応したＡＩＦＳ長の計測を行う。ＡＩＦＳ長の計測が終了すると、マスターノード１００ｌは、ブレークフィールドを送信する。
【００９９】
当該マスターノード１００ｌの他にメッセージを送信しようとするマスターノードがいる場合には、当該マスターノード１００ｌのブレークフィールドの送出期間が長い場合には、当該マスターノード１００ｌは通信バス３００を占有できる。一方、他のマスターノードのブレークフィールドの送出期間が長い場合には、当該マスターノード１００ｌは次のフレームまで待機する。
【０１００】
図１０は、バスアービトレーションの一実施例を示す。
【０１０１】
図１０に示される例では、３個のマスターノード（マスターノード１００１、１００２、及び１００３）におけるバスアービトレーションの例を示す。２個の場合、４個以上のマスターノードの場合においても同様である。
【０１０２】
図１０に示される例では、マスターノード１００１はメッセージ送出中である。この状態で、マスターノード１００２、マスターノード１００３に、送信すべきデータが発生する。
【０１０３】
マスターノード１００２、マスターノード１００３は、マスターノード１００１によりデータが送出されているので、次のフレームまで待機する。
【０１０４】
マスターノード１００２、マスターノード１００３は、マスターノード１００１のブレークフィールドの立ち上がりを基点とする、フレームスロット長が経過するまで待機する。マスターノード１００２、マスターノード１００３は、マスターノード１００１のフレームスロット長の経過を基点として、次のフレームのＰＩＤに対応したＡＩＦＳ長を計測する。具体的には、マスターノード１００２は、マスターノード１００２により送信されるべき次のフレームのＰＩＤに対応したＡＩＦＳ長を計測する。マスターノード１００３は、マスターノード１００３により送信されるべき次のフレームのＰＩＤに対応したＡＩＦＳ長を計測する。
【０１０５】
図１０には、マスターノード１００２により設定されたＡＩＦＳ長と、マスターノード１００３により設定されたＡＩＦＳ長とが略同一の時間である例が示される。つまり、マスターノード１００２により設定されたＡＩＦＳ長の満了と、マスターノード１００３により設定されたＡＩＦＳ長の満了とは略同一のタイミングである。
【０１０６】
例えば、ＡＩＦＳ長は、上述した第１の実施例と同様の方法により設定されてもよい。この場合、送信すべきメッセージが発生したマスターノード間で、ＡＩＦＳ長が同じ値となる場合もある。特に、ＡＩＦＳ長として、固定値が設定される場合には、同じ値となる確率が高いと想定される。このような場合に、送信すべきメッセージが発生したマスターノード間で、ブレークフィールド長を異ならせることにより、バスアービトレーションを行うことができる。
【０１０７】
また、例えば、ＡＩＦＳ長は、固定値が設定されてもよい。該固定値は、フレームのＰＩＤに基づいて設定された値であってもよい。
【０１０８】
ＡＩＦＳ長が経過したマスターノード１００２、マスターノード１００３は、ブレークフィールドを送出する。
【０１０９】
図１０には、マスターノード１００２により送出されるブレークフィールドの送信時間の方が、マスターノード１００３により送信されるブレークフィールドの送信時間よりも長い時間である例が示される。この場合、マスターノード１００２はバスを占有する。
【０１１０】
図１１は、マスターノード１００ｌを示す機能ブロック図である。図１１には、本実施例に関する部分について主に説明される。従って、スレーブノードとしての機能や、診断機能等については省略される。
【０１１１】
マスターノード１００ｌは、マスター機能部１１０を有する。マスター機能部１１０は、インターフレームスペース長設定部１１２と、フレームスロット計測部１１４と、インターフレームスペース計測部１１６と、ブレークフィールド送信制御部１１８と、バスアービトレーション判定部１２０と、フレーム送信制御部１２２と、ブレークフィールド長設定部１２４とを有する。ＭＣＵ１０２ｌが、所定のプログラムに従って機能することにより、マスター機能部１１０として機能するようにしてもよい。該所定のプログラムは、ＭＣＵ１０２ｌに格納されたものであってもよい。
【０１１２】
インターフレームスペース長設定部１１２、フレームスロット計測部１１４、インターフレームスペース計測部１１６、及びフレーム送信制御部１２２については、図６を参照して説明したマスターノード１００ｌと同様である。
【０１１３】
ブレークフィールド長設定部１２４は、ブレークフィールド送信制御部１１８と接続される。ブレークフィールド長設定部１２４は、ブレークフィールド長「ｔＢｒｅａｋ」を設定する。具体的には、ブレークフィールド長設定部１２４は、式（３）に従って、ブレークフィールド長を設定してもよい。
【０１１４】
ｔＢｒｅａｋ＝Ｔ１３ｂｉｔ＋ＴＵｎｉｔ×Ｔｒｕｎｃ（１＋ｍＰｒｉｏｒｉｔｙ×Ｒｎｄ（ｓｅｅｄ））（３）
式（３）において、「ｔＢｒｅａｋ」はブレークフィールド長を表す。「Ｔ１３ｂｉｔ」は、１３ビットビット幅を表す。「ＴＵｎｉｔ」はクロック誤差及び通信バスの状態認識における遅延（ｄｅｌａｙ）に基づいて、ｔＡＩＦＳの時間差を認識できる最小時間を表す。「ｍＰｒｉｏｒｉｔｙ」は優先（Ｐｒｉｏｒｉｔｙ）レベルの個数を表す。「ｍＰｒｉｏｒｉｔｙ」は１以上の整数である。「ｍＰｒｉｏｒｉｔｙ」の値は、存在する優先レベルの個数に一致させる必要はない。「ｍＰｒｉｏｒｉｔｙ」の値を小さくすると、ブレークフィールドの衝突検出に失敗する確率が上がる。一方、「ｍＰｒｉｏｒｉｔｙ」の値を大きくすることにより、ブレークフィールドの衝突解除の成功率を１００％に近づけることができる。Ｔｒｕｎｃ（独立変数（ａｒｇｕｍｅｎｔ））は小数点以下切り捨てによる整数化関数を表す。「Ｒｎｄ（ｓｅｅｄ）」は乱数発生関数を表す。Ｒｎｄ（ｓｅｅｄ）は０以上１未満の一様分布乱数を生成する。マスターノード毎に、異なるｓｅｅｄを与えることにより、異なる系列の乱数を発生させる。ブレークフィールド長設定部１２４は、ブレークフィールド送信制御部１１８に、ブレークフィールド長を表す情報を入力する。
【０１１５】
ブレークフィールド送信制御部１１８は、インターフレームスペース計測部１１６、ブレークフィールド長設定部１２４、トランシーバ１０６ｌと接続される。ブレークフィールド送信制御部１１８は、インターフレームスペース計測部１１６から入力されるべき、ＡＩＦＳ長計測タイマーが満了したことを表す情報に従って、ブレークフィールド長設定部１２４により入力されるべきブレークフィールド長に従って、ブレークフィールドを生成する。ブレークフィールド送信制御部１１８は、トランシーバ１０６ｌを介して、ブレークフィールドを送信する。ブレークフィールド送信制御部１１８は、バスアービトレーション判定部１２０に、ブレークフィールドの送信を開始したことを表す情報を入力する。また、ブレークフィールド送信制御部１１８は、ブレークフィールドを送信する際に、ブレークフィールド送信時間計測タイマーを起動する。ブレークフィールド送信制御部１１８は、ブレークフィールド送信時間計測タイマーが満了した場合に、ブレークフィールドの送信を終了する。ブレークフィールド送信制御部１１８は、ブレークフィールドの送信を終了した際に、バスアービトレーション判定部１２０に、ブレークフィールドの送信を終了したことを表す情報を入力する。
【０１１６】
バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８、トランシーバ１０６ｌ、インターフレームスペース計測部１１６と接続される。バスアービトレーション判定部１２０は、トランシーバ１０６ｌを介して、通信バス３００をモニターする。バスアービトレーション判定部１２０は、当該マスターノード１００ｌが通信バスを占有できるかどうかを判定する。
【０１１７】
＜当該マスターノードにより通信バスを占有できると判定される場合＞
図１２は、当該マスターノード１００ｌにより通信バス３００が占有されると判定される場合のバスアービトレーション判定部１２０によりモニターされるべき通信バス３００の状態を表す。
【０１１８】
ブレークフィールド送信制御部１１８によりブレークフィードを送信する制御が行われたことにより通信バス３００はドミナント状態に変化する。該ブレークフィールドが送信されたことにより、バスアービトレーション判定部１２０により通信バス３００がドミナント状態に変化したことが検出される。
【０１１９】
バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８によりブレークフィールドの送信を終了したことを表す情報が入力された際に、通信バス３００がリセッシブ状態となったかどうかを判定する。バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８によりブレークフィールドの送信を終了したことを表す情報が入力された際に、通信バス３００がリセッシブ状態となったと判定された場合に、当該マスターノード１００ｌにより通信バス３００を占有できると判定する。この場合、バスアービトレーション判定部１２０は、フレーム送信制御部１２２に、当該マスターノード１００ｌにより通信バス３００を占有できることを表す情報を入力する。
【０１２０】
＜当該マスターノードにより通信バスを占有できないと判定される場合＞
図１３は、当該マスターノード１００ｌにより通信バス３００を占有できないと判定される場合のバスアービトレーション判定部１２０によりモニターされるべき通信バス３００の状態を表す。
【０１２１】
ブレークフィールド送信制御部１１８によりブレークフィードを送信する制御が行われたことにより通信バス３００はドミナント状態に変化する。該ブレークフィールドが送信されたことにより、バスアービトレーション判定部１２０により通信バス３００がドミナント状態に変化したことが検出される。
【０１２２】
バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８によりブレークフィールドの送信を終了したことを表す情報が入力された際に、通信バス３００がリセッシブ状態となったかどうかを判定する。バスアービトレーション判定部１２０は、ブレークフィールド送信制御部１１８によりブレークフィールドの送信を終了したことを表す情報が入力された際に、通信バス３００がリセッシブ状態となったと判定されない場合、つまりドミナント状態のままであると判定された場合に、当該マスターノード１００ｌにより通信バスを占有できないと判定する。他のマスターノードにより通信バス３００が占有されたと判定できるためである。この場合、バスアービトレーション判定部１２０は、インターフレームスペース計測部１１６に、ＡＩＦＳ長計測タイマーを終了するように命令する。
【０１２３】
＜マスターノードの動作＞
図１４は、マスターノード１００ｌの動作の一実施例を示す。
【０１２４】
図１４のステップＳ１４０２−Ｓ１４１０は、図９のステップＳ９０２−Ｓ９１０と同様であるため、説明を省略する。
【０１２５】
マスターノード１００ｌは、ＡＩＦＳ長計測タイマーが満了したかどうかを判定する（ステップＳ１４１２）。つまり、インターフレームスペース計測部１１６は、ＡＩＦＳ長計測タイマーが満了したかどうかを判定する。
【０１２６】
ＡＩＦＳ長計測タイマーが満了したと判定された場合（ステップＳ１４１２：ＹＥＳ）、マスターノード１００ｌは、ブレークフィールド長を設定する（ステップＳ１４１４）。つまり、ブレークフィールド長設定部１２４は、ブレークフィールド長を設定する。
【０１２７】
ＡＩＦＳ長計測タイマーが満了したと判定されない場合（ステップＳ１４１２：ＮＯ）、ステップＳ１４１２に戻る。ＡＩＦＳタイマーが満了するまで継続される。
【０１２８】
マスターノード１００ｌは、ブレークフィールド長を計測する（ステップＳ１４１６）。つまり、ブレークフィールド送信制御部１１８は、ブレークフィールド長計測タイマーを起動し、ブレークフィールドの送信期間を計測する。
【０１２９】
マスターノード１００ｌは、ブレークフィールド長計測タイマーが満了したかどうかを判定する（ステップＳ１４１８）。つまり、ブレークフィールド送信制御部１１８は、ブレークフィールド長計測タイマーが満了したかどうかを判定する。
【０１３０】
ブレークフィールド長計測タイマーが満了していないと判定された場合（ステップＳ１４１８：ＮＯ）、ステップＳ１４１８に戻る。ブレークフィールド長計測タイマーが満了するまで継続される。
【０１３１】
ブレークフィールド長計測タイマーが満了していると判定された場合（ステップＳ１４１８：ＹＥＳ）、マスターノード１００ｌは、通信バス３００の状態がリセッシブ状態であるかどうかを判定する（ステップＳ１４２０）。つまり、バスアービトレーション判定部１２０は、通信バス３００の状態をモニターし、ブレークフィールド送信制御部１１８からブレークフィールドの送信を終了したことを表す情報が入力された際に、通信バス３００の状態がリセッシブ状態となったかどうかを判定する。
【０１３２】
通信バス３００の状態がリセッシブ状態となったと判定されない場合（ステップＳ１４２０：ＮＯ）、ステップＳ１４０６に戻る。通信バス３００の状態がリセッシブ状態となったと判定されない場合には、他のマスターノードにより通信バス３００が占有されたと判定できるため、メッセージを送信するには、次のフレームまで待機する必要があるからである。
【０１３３】
通信バス３００の状態がドミナント状態となったと判定された場合（ステップＳ１４２０：ＹＥＳ）、マスターノード１００ｌは、フレームを送信する（ステップＳ１４２２）。つまり、フレーム送信制御部１２２は、ヘッダーを送信するための制御を行う。
【０１３４】
インターフレームスペース長を固定値に設定した場合には、優先的にバスの占有権が付与されることになり、マルチタスク化とはならない。本実施例によれば、このような場合でも、インターフレームスペース時間に続くフィールド、つまりブレークフィールドでバスの占有権を振分けることができる。このため、複数のノードをマスターノードとして利用でき、マルチタスクを実施できる。
【０１３５】
具体的には、ブレークフィールド長を制御することにより、通信バスを占有するマスターノードを決定するためのアービトレーションを実現できる。アービトレーションを実現できるため、マスタースレーブ方式の通信システムをマルチマスタ方式の通信システムとして動作させることができる。この場合、マスターノードのハードウェアの変更は必要ない。このため、コストを増加させずに、通信スケジュールの設計の自由度を向上させることができる。
【０１３６】
以上、本発明は特定の実施例及び変形例を参照しながら説明されてきたが、各実施例及び変形例は単なる例示に過ぎず、当業者は様々な変形例、修正例、代替例、置換例等を理解するであろう。説明の便宜上、本発明の実施例に従った装置は機能的なブロック図を用いて説明されたが、そのような装置はハードウェアで、ソフトウエアで又はそれらの組み合わせで実現されてもよい。本発明は上記実施例に限定されず、本発明の精神から逸脱することなく、様々な変形例、修正例、代替例、置換例等が包含される。
【符号の説明】
【０１３７】
１００ｌ（ｌは、ｌ＞１の整数）  マスターノード
１０２ｌ（ｌは、ｌ＞１の整数）  ＭＣＵ
１０４ｌ（ｌは、ｌ＞１の整数）  通信装置
１０６ｌ（ｌは、ｌ＞１の整数）  トランシーバ
１１２  インターフレームスペース長設定部
１１４  フレームスロット計測部
１１６  インターフレームスペース計測部
１１８  ブレークフィールド送信制御部
１２０  バスアービトレーション判定部
１２２  フレーム送信制御部
１２４  ブレークフィールド長設定部
２００ｍ（ｍは、ｌ＞１の整数）  スレーブノード
３００  通信バス
【図１】
2013012914.tif 000003
【図２】
2013012914.tif 000004
【図３】
2013012914.tif 000005
【図４】
2013012914.tif 000006
【図５】
2013012914.tif 000007
【図６】
2013012914.tif 000008
【図７】
2013012914.tif 000009
【図８】
2013012914.tif 000010
【図９】
2013012914.tif 000011
【図１０】
2013012914.tif 000012
【図１１】
2013012914.tif 000013
【図１２】
2013012914.tif 000014
【図１３】
2013012914.tif 000015
【図１４】
2013012914.tif 000016