(57)【特許請求の範囲】
【請求項１】
複数の通信装置が含まれる通信システムに含まれ、前記通信システム内でトークンパッシングを行う通信装置であって、
前記通信システムに含まれる他の通信装置から、当該他の通信装置がデータ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを受信する時刻通知フレーム受信部と、
トークンを受信し、トークンの受信から所定時間の経過後に、受信したトークンを送信するトークン送受信部と、
前記トークン送受信部によりトークンが受信されてから前記トークン送受信部によりトークンが送信されるまでの間に前記データ送信予定時刻が到来した場合に、トークンを有していない前記時刻通知フレームの送信元の通信装置にデータ送信権を付与する送信権付与フレームを、前記時刻通知フレームの送信元の通信装置に送信する送信権付与フレーム送信部とを有することを特徴とする通信装置。
【請求項２】
前記時刻通知フレーム受信部は、
２以上の他の通信装置から、各々の通信装置のデータ送信予定時刻を通知する２以上の時刻通知フレームを受信し、
前記送信権付与フレーム送信部は、
前記トークン送受信部によりトークンが受信されてから前記トークン送受信部によりトークンが送信されるまでの間に２以上のデータ送信予定時刻が到来した場合に、データ送信予定時刻の順に、２以上の送信権付与フレームを、対応する２以上の他の通信装置に送信することを特徴とする請求項１に記載の通信装置。
【請求項３】
前記時刻通知フレーム受信部は、
２以上の他の通信装置から、各々の通信装置のデータ送信予定時刻を通知する２以上の時刻通知フレームを受信し、
前記送信権付与フレーム送信部は、
前記トークン送受信部によりトークンが受信されてから前記トークン送受信部によりトークンが送信されるまでの間に２以上のデータ送信予定時刻が到来した場合に、データ送信権を付与する２以上の他の通信装置と当該２以上の他の通信装置間でのデータ送信の順序とが示された送信権付与フレームを、対応する２以上の他の通信装置に送信することを特徴とする請求項１に記載の通信装置。
【請求項４】
前記時刻通知フレーム受信部は、
前記送信権付与フレーム送信部により前記送信権付与フレームが送信された後に、前記送信権付与フレームの送信先の通信装置から、当該通信装置の次のデータ送信予定時刻を通知する時刻通知フレームを受信することを特徴とする請求項１に記載の通信装置。
【請求項５】
前記通信装置は、
トークンパッシングが行われるトークンリングネットワークに含まれる通信装置と、前記トークンリングネットワークに含まれない通信装置とが含まれる通信システムに含まれており、
前記時刻通知フレーム受信部は、
前記トークンリングネットワークに含まれる他の通信装置及び前記トークンリングネットワークに含まれない他の通信装置のいずれからも、前記時刻通知フレームを受信し、
前記送信権付与フレーム送信部は、
前記トークンリングネットワークに含まれる他の通信装置及び前記トークンリングネットワークに含まれない他の通信装置のいずれにも、前記送信権付与フレームを送信することを特徴とする請求項１に記載の通信装置。
【請求項６】
トークンパッシングが行われる、複数の通信装置で構成されるトークンリングネットワークが含まれる通信システムに含まれる通信装置であって、
データ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを、前記トークンリングネットワークに含まれる前記複数の通信装置の全てに送信する時刻通知フレーム送信部と、
前記トークンリングネットワークに含まれる前記複数の通信装置のうち、前記データ送信予定時刻が到来した際にトークンを有している通信装置から、データ送信権を付与する送信権付与フレームを受信する送信権付与フレーム受信部と、
前記送信権付与フレーム受信部により送信権付与フレームが受信された後に、データを送信するデータ送信部とを有することを特徴とする通信装置。
【請求項７】
前記時刻通知フレーム送信部は、
前記送信権付与フレーム受信部により送信権付与フレームが受信された後に、次のデータ送信予定時刻を通知する時刻通知フレームを前記トークンリングネットワークに含まれる複数の通信装置の全てに送信することを特徴とする請求項６に記載の通信装置。
【請求項８】
前記送信権付与フレーム受信部は、
前記データ送信予定時刻が到来した際にトークンを有している通信装置から、データ送信権が付与される２以上の通信装置と当該２以上の通信装置間でのデータ送信の順序とが示された送信権付与フレームを受信した場合であって、前記送信権付与フレームに示されるデータ送信の順序において先行する他の通信装置がある場合に、
データ送信の順序において先行する他の通信装置がデータ送信を終了した後に当該他の通信装置が前記通信システムに含まれる複数の通信装置の全てに送信した、当該他の通信装置の次のデータ送信予定時刻を通知する時刻通知フレームを受信して、当該他の通信装置のデータ送信が終了したことを確認し、
先行する全ての通信装置のデータ送信が終了したことを確認した際に、前記データ送信部にデータ送信を指示し、
前記データ送信部は、
前記送信権付与フレーム受信部によりデータ送信を指示された際に、データを送信し、
前記時刻通知フレーム送信部は、
前記データ送信部によりデータが送信された後に、次のデータ送信予定時刻を通知する時刻通知フレームを前記通信システムに含まれる複数の通信装置の全てに送信することを特徴とする請求項６に記載の通信装置。
【請求項９】
前記通信装置は、
前記トークンリングネットワークに含まれる通信装置であることを特徴とする請求項６に記載の通信装置。
【請求項１０】
前記通信装置は、
前記トークンリングネットワークに含まれない通信装置であることを特徴とする請求項６に記載の通信装置。
【請求項１１】
複数の通信装置が含まれる通信システムに含まれ、前記通信システム内でトークンパッシングを行う通信装置が、
前記通信システムに含まれる他の通信装置から、当該他の通信装置がデータ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを受信し、
トークンを有している間に前記データ送信予定時刻が到来した場合に、トークンを有していない前記時刻通知フレームの送信元の通信装置にデータ送信権を付与する送信権付与フレームを、前記時刻通知フレームの送信元の通信装置に送信することを特徴とする通信方法。
【請求項１２】
トークンパッシングが行われる、複数の通信装置で構成されるトークンリングネットワークが含まれる通信システムに含まれる通信装置が、
データ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを、前記トークンリングネットワークに含まれる前記複数の通信装置の全てに送信し、
前記トークンリングネットワークに含まれる前記複数の通信装置のうち、前記データ送信予定時刻が到来した際にトークンを有している通信装置から、データ送信権を付与する送信権付与フレームを受信し、
前記送信権付与フレームを受信した後に、データを送信することを特徴とする通信方法。
【請求項１３】
複数の通信装置が含まれる通信システムに含まれ、前記通信システム内でトークンパッシングを行う通信装置に、
前記通信システムに含まれる他の通信装置から、当該他の通信装置がデータ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを受信する時刻通知フレーム受信処理と、
トークンを受信し、トークンの受信から所定時間の経過後に、受信したトークンを送信するトークン送受信処理と、
前記トークン送受信処理によりトークンが受信されてから前記トークン送受信処理によりトークンが送信されるまでの間に前記データ送信予定時刻が到来した場合に、トークンを有していない前記時刻通知フレームの送信元の通信装置にデータ送信権を付与する送信権付与フレームを、前記時刻通知フレームの送信元の通信装置に送信する送信権付与フレーム送信処理とを実行させることを特徴とするプログラム。
【請求項１４】
トークンパッシングが行われる、複数の通信装置で構成されるトークンリングネットワークが含まれる通信システムに含まれる通信装置に、
データ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを、前記トークンリングネットワークに含まれる前記複数の通信装置の全てに送信する時刻通知フレーム送信処理と、
前記トークンリングネットワークに含まれる前記複数の通信装置のうち、前記データ送信予定時刻が到来した際にトークンを有している通信装置から、データ送信権を付与する送信権付与フレームを受信する送信権付与フレーム受信処理と、
前記送信権付与フレーム受信処理により送信権付与フレームが受信された後に、データを送信するデータ送信処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トークンパッシングが行われる通信システムに関する。
【背景技術】
【０００２】
従来システム（例えば、特許文献１に記載のシステム）では、トークンパッシング方式を採用し、トークンを管理するノードが、トークンを送信し、トークンを受け取ったノードが送信権利を得る。
送信権利を得たノードは自身の送信が完了した後、次のノードにトークンを渡す。
最後にトークンはトークンを管理しているノードに戻ってくる。
これら一連の動作を繰り返すことで、各ノードは他のノードにデータを送信することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開２００９／１４７７１４号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来のシステムでは、トークンを管理するノードが各ノードに定期的に送信権利を与える。
しかし、あるノードが、トークンの受信タイミングとは異なるタイミングでデータを送信する必要がある場合に、当該ノードは、トークンを保持していないので、送信が必要なタイミングでデータを送信することができない。
また、通信システム内にトークンパッシングに参加していないノードが存在し、当該ノードが他のノードにデータを送信する必要がある場合に、当該ノードは、トークンを受信することがないため、データを送信することができない。【０００５】
本発明は、これらの点に鑑み、トークンパッシングが行われる通信システムにおいて、トークンを保持していないノードであっても、データ送信が必要なタイミングにてデータを送信できるようにすることを主な目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る通信装置は、
複数の通信装置が含まれる通信システムに含まれ、前記通信システム内でトークンパッシングを行う通信装置であって、
前記通信システムに含まれる他の通信装置から、当該他の通信装置がデータ送信を予定している時刻をデータ送信予定時刻として通知する時刻通知フレームを受信する時刻通知フレーム受信部と、
トークンを受信し、トークンの受信から所定時間の経過後に、受信したトークンを送信するトークン送受信部と、
前記トークン送受信部によりトークンが受信されてから前記トークン送受信部によりトークンが送信されるまでの間に前記データ送信予定時刻が到来した場合に、トークンを有していない前記時刻通知フレームの送信元の通信装置にデータ送信権を付与する送信権付与フレームを、前記時刻通知フレームの送信元の通信装置に送信する送信権付与フレーム送信部とを有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、データ送信予定時刻が到来した際に、トークンを有している通信装置が、トークンを有していない通信装置に送信権付与フレームを送信する。
このため、トークンを有していない通信装置であっても、データ送信が必要なタイミングにて、データ送信権を得てデータを送信することができる。
【図面の簡単な説明】
【０００８】
【図１】実施の形態１に係る通信システムの構成例を示す図。
【図２】実施の形態１に係るマスタ装置、スレーブ装置及びＩＯ装置の動作例を示す図。
【図３】実施の形態１に係るマスタ装置及びスレーブ装置の構成例を示す図。
【図４】実施の形態１に係るＩＯ装置の構成例を示す図。
【図５】実施の形態１に係るマスタ装置、スレーブ装置及びＩＯ装置の動作例を示す図。
【図６】実施の形態１に係るマスタ装置及びスレーブ装置の動作例を示すフローチャート図。
【図７】実施の形態１に係るマスタ装置及びスレーブ装置の動作例を示すフローチャート図。
【図８】実施の形態１に係るＩＯ装置の動作例を示すフローチャート図。
【図９】実施の形態１に係るＩＯ装置の動作例を示すフローチャート図。
【図１０】実施の形態１に係るマスタ装置及びスレーブ装置の構成例を示す図。
【図１１】従来のマスタ装置、スレーブ装置及びＩＯ装置の動作例を示す図。
【図１２】実施の形態１及び２に係るマスタ装置、スレーブ装置及びＩＯ装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【０００９】
実施の形態１．
図１は、本実施の形態に係る通信システムの構成例を示す。
【００１０】
本実施の形態に係る通信システムは、マスタ装置１００、スレーブ装置（１）２００ａ、スレーブ装置（２）２００ｂ、スレーブ装置（３）２００ｃ、ＩＯ（ＩｎｐｕｔＯｕｔｐｕｔ）装置（１）３００ａ、ＩＯ装置（２）３００ｂが、ＨＵＢを介して接続されている。
以降、マスタ装置１００、スレーブ装置（１）２００ａ、スレーブ装置（２）２００ｂ、スレーブ装置（３）２００ｃ、ＩＯ装置（１）３００ａ、ＩＯ装置（２）３００ｂのそれぞれを、ノードともいう。
また、マスタ装置１００、スレーブ装置（１）２００ａ、スレーブ装置（２）２００ｂ、スレーブ装置（３）２００ｃ、ＩＯ装置（１）３００ａ、ＩＯ装置（２）３００ｂのそれぞれは、通信装置の例である。
【００１１】
マスタ装置１００、スレーブ装置（１）２００ａ、スレーブ装置（２）２００ｂ、スレーブ装置（３）２００ｃはトークンリングネットワークに属している。
つまり、マスタ装置１００、スレーブ装置（１）２００ａ、スレーブ装置（２）２００ｂ、スレーブ装置（３）２００ｃの間でトークンパッシングが行われる。
本実施の形態では、マスタ装置１００→スレーブ装置（１）２００ａ→スレーブ装置（２）２００ｂ→スレーブ装置（３）２００ｃ→マスタ装置１００の順でトークンが巡回するものとする。
スレーブ装置（１）２００ａ、スレーブ装置（２）２００ｂ、スレーブ装置（３）２００ｃを区別する必要がないときには、以下、スレーブ装置２００と総称する。
【００１２】
ＩＯ装置（１）３００ａ及びＩＯ装置（２）３００ｂは、トークンリングネットワークに属していない。
このため、ＩＯ装置（１）３００ａ及びＩＯ装置（２）３００ｂは、トークンを受信することがない。
なお、ＩＯ装置（１）３００ａ及びＩＯ装置（２）３００ｂを区別する必要がないときには、以下、ＩＯ装置３００と総称する。
【００１３】
ここで、従来のシステムでの動作例を図１１を参照して説明する。
【００１４】
トークン（ｔｏｋｅｎフレーム）を管理するマスタ装置１００が、トークンを送信し、トークンを受け取ったスレーブ装置２００が送信権利を得る。
送信権利を得たスレーブ装置２００は、自身の送信を処理する。
図１１では、スレーブ装置２００は、定期的なデータフレーム（ｃｙｃｌｉｃフレーム）を送信している。
スレーブ装置２００は、自身のデータフレームの送信が完了した後、次のスレーブ装置２００にトークンを渡す。
最後にトークンはトークンを管理しているマスタ装置１００に戻ってくる。
マスタ装置１００がトークンを受信してから、次にトークンを受信するまでの時間をリンクスキャン時間という。
【００１５】
図１１に示したように、従来のシステムでは、トークンを管理するマスタ装置１００が各スレーブ装置２００にデータ送信権を与える。
しかし、例えば、トークンパッシングに参加していないＩＯ装置３００が、マスタ装置１００及びスレーブ装置２００にデータを送信する必要がある場合に、ＩＯ装置３００は、トークンを受信しないため、データを送信することができない。
また、例えば、あるスレーブ装置２００が、トークンの受信タイミングとは異なるタイミングでデータを送信する必要がある場合に、当該スレーブ装置２００は、そのタイミングではトークンを保持していないので、データを送信することができない。
また、ＩＯ装置３００をトークンパッシングに参加させた場合でも、ＩＯ装置３００がトークンの受信タイミングとは異なるタイミングでデータを送信する必要がある場合に、当該ＩＯ装置３００は、そのタイミングではトークンを保持していないので、データを送信することができない。
【００１６】
これらの課題に対して、特定のスレーブ装置２００又はトークンパッシングに参加したＩＯ装置３００に対して頻繁にトークンが渡されるようにトークンの巡回ルートを変更することも考えられる。
しかし、データ送信の必要性がランダムに発生する場合は、トークンの巡回ルートの変更により、頻繁にトークンが渡るスレーブ装置２００又はＩＯ装置３００を固定することは合理的ではない。
また、特定のスレーブ装置２００又はＩＯ装置３００に頻繁にトークンが渡るようにすると、各ノードから見るとトークンの渡し先が複数になるので、トークンの渡し先を選択する仕組みが必要であり、処理が煩雑である。
【００１７】
本実施の形態では、トークンの巡回ルートを変更することなく、トークンリングネットワークに属していないＩＯ装置３００が、データ送信を行えるようにする仕組みを説明する。
また、トークンの巡回ルートを変更することなく、スレーブ装置２００が、トークンを保持していないタイミングでもデータ送信が行えるようにする仕組みを説明する。
【００１８】
本実施の形態では、マスタ装置１００が、特定のＩＯ装置３００を選択し、選択されたＩＯ装置３００が、データ送信を予定している時刻（以下、データ送信予定時刻という）を通知する時刻通知フレームを、マスタ装置１００及び全てのスレーブ装置２００に送信する。
マスタ装置１００及び各スレーブ装置２００は、データ送信予定時刻についてのタイマ設定を行う。
そして、マスタ装置１００及び各スレーブ装置２００は、トークンを保持している間、つまり、トークンを受信してから他のノードにトークンを送信するまでの間にデータ送信予定時刻が到来した場合に、時刻通知フレームの送信元のＩＯ装置３００に、データ送信権を付与する送信権付与フレームを送信する。
送信権付与フレームを受信したＩＯ装置３００は、送信すべきデータを含むフレームを、いずれかのノードに送信する。
また、ここでは、ＩＯ装置３００が時刻通知フレームを送信し、トークンを保持するノードがＩＯ装置３００に送信権付与フレームを送信する例を述べたが、マスタ装置１００又はスレーブ装置２００が時刻通知フレームを送信し、トークンを保持するノードがマスタ装置１００又はスレーブ装置２００に送信権付与フレームを送信するようにしてもよい。
【００１９】
次に、本実施の形態に係る動作例を図２を参照して詳細に説明する。
図２では、ＩＯ装置３００からの要求に基づき、ＩＯ装置３００にデータ送信権を付与する例を説明する。
【００２０】
先ず、初期化手順として、マスタ装置１００は、毎リンクスキャン、トークンを保持している間、ＩＯ装置３００を受け入れるために、一定長のＩＯ送信自由ウィンドウを生成する。
さらに、マスタ装置１００は、ＩＯ送信自由ウィンドウの先頭にて、ＩＯ装置３００を探索するためのフレーム（ＮｅｓｔｅｄＴｅｓｔＤａｔａフレーム）をブロード送信する。
データ送信を予定しているＩＯ装置は、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームに応答するフレーム（ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレーム）をユニキャスト送信でマスタ装置１００に返す。
同時に複数のＩＯ装置３００がデータ送信を予定している場合は、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームは複数返される。
マスタ装置１００は、ＩＯ装置３００を一つ選択（図２の例では、ＩＯ装置（１）３００ａを選択）し、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームに応答するフレーム（ＮｅｓｔｅｄＳｅｔｕｐフレーム）を、選択したＩＯ装置（１）３００ａにユニキャストで送信する。
なお選択に漏れたＩＯ装置（２）３００ｂは、次のリンクスキャン時間におけるＮｅｓｔｅｄＴｅｓｔＤａｔａフレームの受信を待つ。
ＮｅｓｔｅｄＳｅｔｕｐフレームを受信したＩＯ装置（１）３００ａは、ＮｅｓｔｅｄＳｅｔｕｐフレームに応答するフレーム（ＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレーム）をユニキャストでマスタ装置１００に送信する。
ここまでの手順で、ＩＯ装置（１）３００ａには、データ送信権の付与が予約されたことになる。
次に、ＩＯ装置（１）３００ａは、送信機会要求フレーム（ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレーム）をブロードキャストで送信する。
このＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームには、次回の送信開始時刻、つまり、データ送信予定時刻が含まれている。
ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームは、時刻通知フレームの例に相当する。
ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信したマスタ装置１００及び全スレーブ装置２００は、自身の内部にＩＯ装置ごとの「送信待ちタイマ」を生成し、カウントダウンを開始する。
【００２１】
マスタ装置１００及びスレーブ装置２００の各局は、毎リンクスキャン、トークンを保持している際に、ＩＯ送信自由ウィンドウの生成の要否を判定する。
マスタ装置１００及びスレーブ装置２００の各局は、もし自身の内部の送信待ちタイマのうち、タイムアウトしたものがあれば、それは該当するＩＯ装置３００が要求した送信機会（データ送信予定時刻）となったことを意味するので、そのＩＯ装置３００のためにＩＯ送信自由ウィンドウを生成する。
あるノード（マスタ装置１００又はスレーブ装置２００）がトークンを保持している間に、複数のタイマがタイムアウトする（複数のＩＯ装置３００のデータ送信予定時刻が到来する）場合があるが、この場合の処理は後述する。
また、逆に、あるノード（マスタ装置１００又はスレーブ装置２００）がトークンを保持している間に、タイムアウトしたタイマがなければ、当該ノードは、ＩＯ送信自由ウィンドウを生成せずに、次のノードにトークンを渡す。
【００２２】
ＩＯ送信自由ウィンドウを生成したノード（図２の例では、スレーブ装置（３）２００ｃ）は、その対象となったＩＯ装置３００（図２の例では、ＩＯ装置（１）３００ａ）に対してポーリングを行う。
ポーリングは、以下の３つの動作で構成される。
なお、以下では、図２の例に従い、スレーブ装置（３）２００ｃとＩＯ装置（１）３００ａとの間でのフレームの送受信を説明する。
【００２３】
まず、スレーブ装置（３）２００ｃが、ＩＯ装置（１）３００ａに対して、送信許可フレーム（ＳｅｎｄＰｅｒｍｉｔフレーム）を送信する。
ＳｅｎｄＰｅｒｍｉｔフレームは、スレーブ装置（３）２００ｃがＩＯ装置（１）３００ａにデータ送信権を付与するフレームであり、送信権付与フレームの例に相当する。
次に、ＳｅｎｄＰｅｒｍｉｔフレームを受信したＩＯ装置（１）３００ａは、自身のデータフレーム（ＩＯ  Ｄａｔａフレーム）の送信を行う。
ＩＯ  Ｄａｔａフレームは通常、ユニキャストで送信される。
次に、ＩＯ装置（１）３００ａは、送信機会要求フレーム（ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレーム）をブロードキャストで送信する。
このＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームには、次回の送信開始時刻、つまり、次回のデータ送信予定時刻が含まれている。
これは初期化手順においてＩＯ装置（１）３００ａから送信されたＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームと同じフレームである。
ＩＯ装置（１）３００ａからのＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信したマスタ装置１００及びスレーブ装置２００の各局は、送信待ちタイマをリセットする（すなわち、次回のデータ送信予定時刻に対してタイマをセットする）。
これにより、次回の送信機会までのカウントダウンが開始される。
スレーブ装置（３）２００ｃは、自身のｃｙｃｌｉｃフレームの送信が完了し、また、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信したら、次のノードにトークンを渡す。
なお、タイムアウトによる（データ送信予定時刻の到来による）ＩＯ送信自由ウィンドウの生成、当該ＩＯ送信自由ウィンドウにおけるフレームの送受信を、初期化手順に対比させて通常手順という。
【００２４】
本実施の形態では、トークンを保持している間にＩＯ装置３００のデータ送信予定時刻が到来したノードのみがＳｅｎｄＰｅｒｍｉｔフレームを送信するため、１つのＩＯ装置３００に、同時期に複数のノードが、送信機会を与えてしまう誤作動を防ぐことができる。
【００２５】
次に、１つのノードにおいて、複数のＩＯ装置３００にポーリングを行う場合の手順を図５に示す。
【００２６】
図５の例では、スレーブ装置（３）２００ｃがトークンを保持している間に、ＩＯ装置（１）３００ａとＩＯ装置（２）３００ｂのデータ送信予定時刻が到来した場合を示している。
データ送信予定時刻が到来したＩＯ装置３００が複数ある場合も同様に、マスタ装置１００又はスレーブ装置２００は、ＩＯ送信自由ウィンドウを生成し、ＳｅｎｄＰｅｒｍｉｔフレームの送信を行う。
つまり、ＩＯ送信自由ウィンドウを生成したスレーブ装置（３）２００ｃは、ＩＯ装置（１）３００ａとＩＯ装置（２）３００ｂそれぞれにＳｅｎｄＰｅｒｍｉｔフレームを送信して、送信機会を与える。
ＩＯ装置（１）３００ａとＩＯ装置（２）３００ｂは送信機会を与えられて、自身のＩＯ  Ｄａｔａフレームの送信を行った後、それぞれＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームをブロードキャストで送信する。
【００２７】
なお、図１及び図５では、マスタ装置１００が、初期化手順として、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームの送信、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの受信、ＩＯ装置３００の選択、ＮｅｓｔｅｄＳｅｔｕｐフレームの送信、ＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームの受信を行う例を説明したが、初期化手順の各動作をスレーブ装置２００が行ってもよい。
【００２８】
次に、本実施の形態に係るマスタ装置１００、スレーブ装置２００及びＩＯ装置３００の構成例を説明する。
先ず、図３を参照して、マスタ装置１００及びスレーブ装置２００の構成例を説明する。
以下では、マスタ装置１００の構成例として説明するが、スレーブ装置２００の構成も同じである。
【００２９】
通信部１０１は、トークンの送信元のノードからトークンを受信し、トークンの受信から所定時間の経過後に、トークンの送信先のノードにトークンを送信する。
また、通信部１０１は、トークンを保持している際にｃｙｃｌｉｃフレームを送信し、また、他ノードから送信されたｃｙｃｌｉｃフレームを受信する。
また、通信部１０１は、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームの送信、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの受信、ＮｅｓｔｅｄＳｅｔｕｐフレームの送信、ＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームの受信、ＳｅｎｄＰｅｒｍｉｔフレームの送信、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームの受信も行う。
通信部１０１は、トークン送受信部、時刻通知フレーム受信部、送信権付与フレーム送信部の例に相当する。
【００３０】
送受信制御部１０２は、トークンの送受信、ｃｙｃｌｉｃフレームの生成及び送受信を制御する。
また、送受信制御部１０２は、トークンを受信した際に、後述するＩＯ送信自由ウィンドウ制御部１０３の送信権管理部１０４に、トークンを受信した旨を通知する。
また、送受信制御部１０２は、トークンを送信する際に、送信権管理部１０４に、トークンを送信する旨を通知する。
【００３１】
ＩＯ送信自由ウィンドウ制御部１０３は、ＩＯ送信自由ウィンドウに関する制御を行う。
ＩＯ送信自由ウィンドウ制御部１０３は、送信権管理部１０４と、ＩＯ装置３００ごとのレジスタ１０５と、タイマ１１１で構成される。
送信権管理部１０４は、送信権付与フレーム送信部の例に相当する。
【００３２】
送信権管理部１０４は、ＩＯ送信自由ウィンドウの生成の要否を判断し、ＩＯ送信自由ウィンドウの生成が必要な場合にＩＯ送信自由ウィンドウを生成する。
また、送信権管理部１０４は、初期化手順のＩＯ送信自由ウィンドウを生成した場合に、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームの生成及び送信制御、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの受信制御、ＩＯ装置３００の選択、ＮｅｓｔｅｄＳｅｔｕｐフレームの生成及び送信制御、ＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームの受信制御を行う。
また、送信権管理部１０４は、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームの受信制御、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに含まれているデータ送信予定時刻のタイマ設定、データ送信予定時刻の到来の検出を行う。
更に、送信権管理部１０４は、通常手順のＩＯ送信自由ウィンドウ（図２のスレーブ装置（３）２００ｃによるＩＯ送信自由ウィンドウに相当）を生成する場合に、ＳｅｎｄＰｅｒｍｉｔフレームの生成及び送信制御、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームの受信制御、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに含まれているデータ送信予定時刻のタイマ設定を行う。
【００３３】
送信権管理部１０４は、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信すると、レジスタ１０５に、データ送信予定時刻に相当するタイマカウント値を設定し、タイマ１１１の計時に同期してレジスタ１０５のタイマカウント値をデクリメントして、データ送信予定時刻の到来を検出する。
例えば、ＩＯ装置（１）３００ａからのＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに示されるデータ送信予定時刻が現在時刻から１０秒後であれば、送信権管理部１０４は、ＩＯ装置（１）３００ａ用のレジスタ１０５にタイマカウント値「１０」を設定し、タイマ１１１が１秒を計時する度に、レジスタ１０５のタイマカウント値をデクリメントする。
そして、レジスタ１０５のタイマカウント値が「０」となった際に、送信権管理部１０４は、ＩＯ装置（１）３００ａのデータ送信予定時刻が到来したと判断する。
前述のように、送信権管理部１０４は、送受信制御部１０２から、トークンを受信した旨及びトークンを送信する旨を通知される。
送信権管理部１０４は、トークンの受信からトークンの送信までの間に、タイマカウント値が「０」になった場合は、通常手順のＩＯ送信自由ウィンドウを生成し、ＳｅｎｄＰｅｒｍｉｔフレームを生成し、通信部１０１を介してＳｅｎｄＰｅｒｍｉｔフレームを送信する。
なお、送信権管理部１０４がデータ送信予定時刻の到来を検出する方法は、どのようなものでもよく、上述の方法に限らない。
また、送信権管理部１０４は、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに示されるデータ送信予定時刻に基づくタイマ設定が完了した際に、送受信制御部１０２にタイマ設定が完了した旨を通知する。
これにより、送受信制御部１０２は、トークンを次のノードに送信することができる。
【００３４】
また、図３において、１０７〜１１０は、通信部１０１、送受信制御部１０２及びＩＯ送信自由ウィンドウ制御部１０３が通信するためのデータ信号線である。
【００３５】
次に、本実施の形態に係るＩＯ装置３００の構成例を図４に示す。
【００３６】
通信部３０１は、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームの受信、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの送信、ＮｅｓｔｅｄＳｅｔｕｐフレームの受信、ＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームの送信、ＳｅｎｄＰｅｒｍｉｔフレームの受信、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームの送信を行う。
また、通信部３０１は、ＳｅｎｄＰｅｒｍｉｔフレームを受信した際に、ＩＯ  Ｄａｔａフレームの送信も行う。
通信部３０１は、時刻通知フレーム送信部、送信権付与フレーム受信部、データ送信部の例に相当する。
【００３７】
データ送受信管理部３０２は、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームの受信制御、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの生成及び送信制御、ＮｅｓｔｅｄＳｅｔｕｐフレームの受信制御、ＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームの生成及び送信制御、ＳｅｎｄＰｅｒｍｉｔフレームの受信制御、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームの生成及び送信制御を行う。
また、データ送受信管理部３０２は、ＳｅｎｄＰｅｒｍｉｔフレームを受信した際に、ＩＯ  Ｄａｔａフレームの生成及び送信制御も行う。
データ送受信管理部３０２は、タイマ３０３を用いてデータ送信予定時刻を導出し、データ送信予定時刻が示されるＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを生成する。
データ送受信管理部３０２も、時刻通知フレーム送信部、送信権付与フレーム受信部、データ送信部の例に相当する。
【００３８】
次に、本実施の形態に係るマスタ装置１００、スレーブ装置２００及びＩＯ装置３００の動作例をフローチャートを用いて説明する。
図６は、初期化手順の際のマスタ装置１００及びスレーブ装置２００の動作例を示すフローチャートである。
図７は、通常手順の際のマスタ装置１００及びスレーブ装置２００の動作例を示すフローチャートである。
図８は、初期化手順の際のＩＯ装置３００の動作例を示すフローチャートである。
図９は、通常手順の際のＩＯ装置３００の動作例を示すフローチャートである。
【００３９】
先ず、図６に従って、初期化手順の際のマスタ装置１００及びスレーブ装置２００の動作例を説明する。
なお、図６のＳ６０１でＹＥＳとなり、Ｓ６０２〜Ｓ６０９に至るフローはマスタ装置１００の動作例を示す。
一方、図６のＳ６０１でＮＯとなりＳ６１０及びＳ６０９に至るフローはスレーブ装置２００の動作例を示す。
なお、マスタ装置１００ではなく、特定のスレーブ装置２００が初期化手順のＩＯ送信自由ウィンドウを生成する場合は、当該特定のスレーブ装置２００が、Ｓ６０１でＹＥＳとなり、Ｓ６０２〜Ｓ６０９に至るフローの動作を行い、マスタ装置１００が、Ｓ６０１でＮＯとなりＳ６１０及びＳ６０９に至るフローの動作を行う。
以下では、マスタ装置１００が、Ｓ６０１でＹＥＳとなり、Ｓ６０２〜Ｓ６０９に至るフローの動作を行い、全スレーブ装置２００が、Ｓ６０１でＮＯとなりＳ６１０及びＳ６０９に至るフローの動作を行うものとして説明を進める。
【００４０】
マスタ装置１００では、通信部１０１がトークンを受信すると（Ｓ６０１でＹＥＳ）、送受信制御部１０２が送信権管理部１０４にトークンを受信した旨を通知し、送信権管理部１０４がＩＯ送信自由ウィンドウを生成し、ＮｅｓｔｅｄＴｅｓｔＤａｔａフレームを生成し、通信部１０１がＮｅｓｔｅｄＴｅｓｔＤａｔａフレームを全てのＩＯ装置３００に送信する（Ｓ６０２）。
また、Ｓ６０２の処理と並行して、送受信制御部１０２は、通信部１０１を介してｃｙｃｌｉｃフレームを送信する。
【００４１】
次に、通信部１０１が複数のＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームを受信している場合（Ｓ６０３及びＳ６０４でＹＥＳ）は、送信権管理部１０４が、ＮｅｓｔｅｄＳｅｔｕｐフレームを送信するＩＯ装置３００を選択し（Ｓ６０５）、選択したＩＯ装置３００宛てのＮｅｓｔｅｄＳｅｔｕｐフレームを生成する。
ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームには、送信元のＩＯ装置３００のＩＤ（Ｉｄｅｎｔｉｆｉｅｒ）が含まれており、送信権管理部１０４は、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの送信元のＩＯ装置３００を識別することができる。
なお、ＩＯ装置３００の選択方法（選択基準）はどのようなものでもよい。
また、通信部１０１が受信したＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの数が１つである場合（Ｓ６０３でＹＥＳ、Ｓ６０４でＮＯ）は、送信権管理部１０４は、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームの送信元のＩＯ装置３００宛てのＮｅｓｔｅｄＳｅｔｕｐフレームを生成する。
そして、通信部１０１が、ＮｅｓｔｅｄＳｅｔｕｐフレームをＩＯ装置３００にユニキャストで送信する（Ｓ６０６）。
次に、通信部１０１が、ＩＯ装置３００からＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームを受信し（Ｓ６０７）、更に、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信する（Ｓ６０８）。
次に、送信権管理部１０４が、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに示されるデータ送信予定時刻に基づいてタイマ設定を行う（Ｓ６０９）。
タイマ設定は、例えば、前述したように、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームの送信元のＩＯ装置３００に対応するレジスタ１０５にデータ送信予定時刻に相当するタイマカウント値を設定する方法が考えられる。
タイマ設定が完了すると、送信権管理部１０４は、ＩＯ送信自由ウィンドウを終了し、また、送受信制御部１０２にタイマ設定が完了した旨を通知する。
送受信制御部１０２は、ｃｙｃｌｉｃフレームの送信が完了していれば、トークンを次のノードに送信する。
【００４２】
一方、Ｓ６０３において、通信部１０１がＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームを受信しない場合（Ｓ６０３でＮＯ）は、送信権管理部１０４は、送受信制御部１０２にＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームを受信しなかった旨を通知する。
送受信制御部１０２は、ｃｙｃｌｉｃフレームの送信が完了していれば、トークンを次のノードに送信する。
【００４３】
スレーブ装置２００では、トークンを保持していないときに、通信部１０１がＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信し（Ｓ６０１でＮＯ、Ｓ６１０でＹＥＳ）、送信権管理部１０４が、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに示されるデータ送信予定時刻に基づいてタイマ設定を行う（Ｓ６０９）。
【００４４】
次に、図７に従って、通常手順の際のマスタ装置１００及びスレーブ装置２００の動作例を説明する。
【００４５】
通信部１０１がトークンを受信すると（Ｓ７０１でＹＥＳ）、送受信制御部１０２が送信権管理部１０４にトークンを受信した旨を通知し、送信権管理部１０４が、いずれかのＩＯ装置３００についてタイムアウトが発生したか否か、つまり、いずれかのＩＯ装置３００のデータ送信予定時刻が到来したか否かを判断する（Ｓ７０２）。
また、Ｓ７０２の処理と並行して、送受信制御部１０２は、通信部１０１を介してｃｙｃｌｉｃフレームを送信する。
【００４６】
タイムアウトが発生していない場合は、送信権管理部１０４はトークンが次のノードに送信されるか否かを判断する（Ｓ７０６）。
つまり、送受信制御部１０２からトークンを送信する旨が通知されれば、Ｓ７０６の判定がＹＥＳとなり、送受信制御部１０２からトークンを送信する旨の通知がなければ、Ｓ７０６の判定はＮＯとなる。
Ｓ７０６でＹＥＳの場合は、ＩＯ送信自由ウィンドウが生成されることなく、通信部１０１からトークンが次のノードに送信される（Ｓ７０７）。
Ｓ７０６でＮＯの場合は、引き続き、いずれかのＩＯ装置３００でタイムアウトが発生するか否かの判断が行われる（Ｓ７０２）。
【００４７】
タイムアウトが発生した場合（Ｓ７０２でＹＥＳ）、すなわち、いずれかのＩＯ装置３００のデータ送信予定時刻が到来した場合は、送信権管理部１０４は、ＩＯ送信自由ウィンドウを生成し、タイムアウトが発生したＩＯ装置３００宛てのＳｅｎｄＰｅｒｍｉｔフレームを生成し、通信部１０１を介してＩＯ装置３００にＳｅｎｄＰｅｒｍｉｔフレームを送信する（Ｓ７０３）。
次に、通信部１０１が、ＳｅｎｄＰｅｒｍｉｔフレームの送信先のＩＯ装置３００からＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信した場合（Ｓ７０４でＹＥＳ）に、送信権管理部１０４が、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに示されるデータ送信予定時刻に基づいてタイマ設定を行う（Ｓ７０５）。
タイマ設定が完了すると、送信権管理部１０４は、ＩＯ送信自由ウィンドウを終了し、また、送受信制御部１０２にタイマ設定が完了した旨を通知する。
送受信制御部１０２は、ｃｙｃｌｉｃフレームの送信が完了していれば、トークンを次のノードに送信する（Ｓ７０６、Ｓ７０７）。
【００４８】
一方、Ｓ７０４において、通信部１０１がＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信しない場合（Ｓ７０４でＮＯ）は、送信権管理部１０４は、送受信制御部１０２にＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信しなかった旨を通知する。
送受信制御部１０２は、ｃｙｃｌｉｃフレームの送信が完了していれば、トークンを次のノードに送信する（Ｓ７０６、Ｓ７０７）。
【００４９】
また、トークンを保持していないときに、通信部１０１がＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信した場合（Ｓ７０１でＮＯ、Ｓ７０８でＹＥＳ）に、送信権管理部１０４が、ＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームに示されるデータ送信予定時刻に基づいてタイマ設定を行う（Ｓ７０９）。
【００５０】
次に、図８に従って、初期化手順の際のＩＯ装置３００の動作例を説明する。
【００５１】
ＩＯ装置３００では、通信部３０１がＮｅｓｔｅｄＴｅｓｔＤａｔａフレームを受信すると（Ｓ８０１でＹＥＳ）、データ送受信管理部３０２がＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームを生成し、通信部３０１がＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームを送信する（Ｓ８０２）。
前述したように、ＮｅｓｔｅｄＴｅｓｔＤａｔａＡｃｋフレームにはＩＯ装置３００のＩＤが含まれる。
【００５２】
次に、通信部３０１がＮｅｓｔｅｄＳｅｔｕｐフレームを受信した場合（Ｓ８０３でＹＥＳ）に、データ送受信管理部３０２はＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームを生成し、通信部３０１がＮｅｓｔｅｄＳｅｔｕｐＡｃｋフレームを送信する（Ｓ８０４）。
更に、データ送受信管理部３０２は、データ送信予定時刻を導出し、導出したデータ送信予定時刻が示されるＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを生成し、通信部３０１がＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームをブロードキャストで送信する（Ｓ８０５）。
【００５３】
次に、図９に従って、通常手順の際のＩＯ装置３００の動作例を説明する。
【００５４】
通信部３０１がＳｅｎｄＰｅｒｍｉｔフレームを受信すると（Ｓ９０１）、データ送受信管理部３０２がＩＯ  Ｄａｔａフレームを生成し、通信部３０１がＩＯ  Ｄａｔａフレームを送信する（Ｓ９０２）。
更に、次にＩＯ  Ｄａｔａフレームを送信する予定がある場合は、データ送受信管理部３０２がデータ送信予定時刻を導出し、導出したデータ送信予定時刻が示されるＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを生成し、通信部３０１がＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームをブロードキャストで送信する（Ｓ９０３）。
【００５５】
なお、以上では、トークンリングネットワークに属していないＩＯ装置３００にＳｅｎｄＰｅｒｍｉｔフレームを送信してデータ送信権を与える例を中心に説明を進めた。
これに対し、トークンリングネットワークに属しているマスタ装置１００又はスレーブ装置２００にＳｅｎｄＰｅｒｍｉｔフレームを送信してデータ送信権を与えるようにしてもよい。
つまり、トークンによる送信機会に加えて更なる送信機会が与えられるように、マスタ装置１００又はスレーブ装置２００にＳｅｎｄＰｅｒｍｉｔフレームを送信して、データ送信権を与えるようにしてもよい。
この場合は、マスタ装置１００又はスレーブ装置２００は、図８及び図９に示した動作を行うことになる。
また、図８及び図９に示した動作を行う場合には、図１０に示すように、マスタ装置１００又はスレーブ装置２００の通信部１０１及び送受信制御部１０２は、時刻通知フレーム送信部、送信権付与フレーム受信部、データ送信部の例に相当する。
【００５６】
以上、本実施の形態によれば、トークンパッシング方式でありながら、周期的なＩＯ送信を実現することができる。
【００５７】
実施の形態２．
実施の形態１では、ＩＯ送信自由ウィンドウの中で、ＩＯ送信自由ウィンドウを生成したノードから、データ送信予定時刻が到来した各ＩＯ装置３００に対してポーリングを行っている。
つまり、実施の形態１では、データ送信予定時刻が到来したＩＯ装置３００が複数ある場合には、ＩＯ装置３００ごとに個別のＳｅｎｄＰｅｒｍｉｔフレームを生成し、ＩＯ装置３００ごとにＳｅｎｄＰｅｒｍｉｔフレームを送信している。
これに対し、複数のＩＯ装置３００に共通に用いられる１つのＳｅｎｄＰｅｒｍｉｔフレームを生成し、１つのＳｅｎｄＰｅｒｍｉｔフレームを各ＩＯ装置３００にマルチキャスト送信するようにしてもよい。
【００５８】
本実施の形態に係るＳｅｎｄＰｅｒｍｉｔフレームには送信機会を与えるＩＯ装置３００の順番リストが含まれている。
順番リストによってＩＯ送信自由ウィンドウ内での相対的な送信順序を各ＩＯ装置３００に通知することができ、各ＩＯ装置３００は、互いにＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームが送信されたことを監視することで送信機会を得ることができる。
【００５９】
つまり、本実施の形態では、各ＩＯ装置３００において、データ送受信管理部３０２は、ＳｅｎｄＰｅｒｍｉｔフレームに含まれる順番リストを参照して、自装置がＩＯ  Ｄａｔａフレームを送信する順番を確認する。
そして、データ送受信管理部３０２は、順番リストにおいて先行するＩＯ装置３００からブロードキャスト送信されるＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを受信した際に、先行するＩＯ装置３００からのＩＯ  Ｄａｔａフレームの送信が終了したことを確認する。
また、データ送受信管理部３０２は、先行する全てのＩＯ装置３００からのＩＯ  Ｄａｔａフレームの送信が終了したことを確認した際に、自装置の順番が到来したと判断し、通信部３０１からＩＯ  Ｄａｔａフレームを送信する。
その後、データ送受信管理部３０２は、通信部３０１からＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを送信する。
【００６０】
このように、本実施の形態では、複数のＩＯ装置３００に共通に用いられる１つのＳｅｎｄＰｅｒｍｉｔフレームを生成し、１つのＳｅｎｄＰｅｒｍｉｔフレームを各ＩＯ装置３００に送信するため、実施の形態１に比べて、ＳｅｎｄＰｅｒｍｉｔフレーム生成の際の処理量を低減することができる。
【００６１】
最後に、実施の形態１及び２に示したマスタ装置１００、スレーブ装置２００、ＩＯ装置３００（以下、これらをまとめて「マスタ装置１００」等という）のハードウェア構成例について説明する。
図１２は、実施の形態１及び２に示すマスタ装置１００等のハードウェア資源の一例を示す図である。
なお、図１２の構成は、あくまでもマスタ装置１００等のハードウェア構成の一例を示すものであり、マスタ装置１００等のハードウェア構成は図１２に記載の構成に限らず、他の構成であってもよい。
また、マスタ装置１００、スレーブ装置２００、ＩＯ装置３００の各々のハードウェア構成が相違していてもよい。
【００６２】
図１２において、マスタ装置１００等は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。
ＣＰＵ９１１は、バス９１２を介して、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）９１３、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）９１４、通信ボード９１５、表示装置９０１、キーボード９０２、マウス９０３、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。
更に、ＣＰＵ９１１は、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７と接続していてもよい。また、磁気ディスク装置９２０の代わりに、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、光ディスク装置、メモリカード（登録商標）読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記録媒体は、不揮発性メモリの一例である。これらは、記憶装置の一例である。
通信ボード９１５、キーボード９０２、マウス９０３、スキャナ装置９０７などは、入力装置の一例である。
また、通信ボード９１５、表示装置９０１、プリンタ装置９０６などは、出力装置の一例である。
【００６３】
通信ボード９１５は、図１に示すように、ネットワークに接続されている。
例えば、通信ボード９１５は、ＬＡＮ（ローカルエリアネットワーク）、インターネット、ＷＡＮ（ワイドエリアネットワーク）、ＳＡＮ（ストレージエリアネットワーク）などに接続されている。
【００６４】
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。
プログラム群９２３のプログラムは、ＣＰＵ９１１がオペレーティングシステム９２１、ウィンドウシステム９２２を利用しながら実行する。
【００６５】
また、ＲＡＭ９１４には、ＣＰＵ９１１に実行させるオペレーティングシステム９２１のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。
また、ＲＡＭ９１４には、ＣＰＵ９１１による処理に必要な各種データが格納される。
【００６６】
また、ＲＯＭ９１３には、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）プログラムが格納され、磁気ディスク装置９２０にはブートプログラムが格納されている。
マスタ装置１００等の起動時には、ＲＯＭ９１３のＢＩＯＳプログラム及び磁気ディスク装置９２０のブートプログラムが実行され、ＢＩＯＳプログラム及びブートプログラムによりオペレーティングシステム９２１が起動される。
【００６７】
上記プログラム群９２３には、実施の形態１及び２の説明において「〜部」として説明している機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
【００６８】
ファイル群９２４には、実施の形態１及び２の説明において、「〜の判断」、「〜の判定」、「〜の比較」、「〜の設定」、「〜の導出」、「〜の選択」、「〜の生成」、「〜の受信」等として説明している処理の結果を示す情報やデータや信号値や変数値や暗号鍵・復号鍵や乱数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。
「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。
ディスクやメモリなどの記録媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出される。
そして、読み出された情報やデータや信号値や変数値やパラメータは、抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示などのＣＰＵの動作に用いられる。
抽出・検索・参照・比較・演算・計算・処理・編集・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリ、レジスタ、キャッシュメモリ、バッファメモリ等に一時的に記憶される。
また、実施の形態１及び２で説明しているフローチャートの矢印の部分は主としてデータや信号の入出力を示す。
データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ等の記録媒体に記録される。
また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００６９】
また、実施の形態１及び２の説明において「〜部」として説明しているものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。
すなわち、実施の形態１及び２で説明したフローチャートに示すステップ、手順、処理により、本発明に係る「通信方法」を実現することができる。
また、「〜部」として説明しているものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。
或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。
プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。
すなわち、プログラムは、実施の形態１及び２の「〜部」としてコンピュータを機能させるものである。あるいは、実施の形態１及び２の「〜部」の手順や方法をコンピュータに実行させるものである。
【００７０】
このように、実施の形態１及び２に示すマスタ装置１００等は、処理装置たるＣＰＵ、記憶装置たるメモリ、磁気ディスク等、入力装置たるキーボード、マウス、通信ボード等、出力装置たる表示装置、通信ボード等を備えるコンピュータである。
そして、上記したように「〜部」として示された機能をこれら処理装置、記憶装置、入力装置、出力装置を用いて実現するものである。
【符号の説明】
【００７１】
１００  マスタ装置、１０１  通信部、１０２  送受信制御部、１０３  ＩＯ送信自由ウィンドウ制御部、１０４  送信権管理部、１０５  レジスタ、１１１  タイマ、２００  スレーブ装置、３００  ＩＯ装置、３０１  通信部、３０２  データ送受信管理部、３０３  タイマ。
【要約】
マスタ装置１００及びスレーブ装置２００はトークンパッシングに参加しており、ＩＯ装置３００はトークンパッシングに参加していない。ＩＯ装置３００がデータ送信を予定している時刻をデータ送信予定時刻として通知するＳｅｎｄＰｅｒｍｉｔＲｅｑｕｅｓｔフレームを、ＩＯ装置３００がマスタ装置１００及びスレーブ装置２００に送信する。マスタ装置１００及びスレーブ装置２００は、トークンを保持している間にデータ送信予定時刻が到来した場合に、ＩＯ装置３００にデータ送信権を付与するＳｅｎｄＰｅｒｍｉｔフレームをＩＯ装置３００に送信し、ＳｅｎｄＰｅｒｍｉｔフレームを受信したＩＯ装置３００は、ＩＯ  Ｄａｔａフレームを送信する。【図１】
0005404975.tif 000002
【図２】
0005404975.tif 000003
【図３】
0005404975.tif 000004
【図４】
0005404975.tif 000005
【図５】
0005404975.tif 000006
【図６】
0005404975.tif 000007
【図７】
0005404975.tif 000008
【図８】
0005404975.tif 000009
【図９】
0005404975.tif 000010
【図１０】
0005404975.tif 000011
【図１１】
0005404975.tif 000012
【図１２】
0005404975.tif 000013