(57)【特許請求の範囲】
【請求項１】
タイムトリガ方式で通信を行う第１の通信機器から第１のデータを受信する第１の受信部と、
トークンパッシング方式で通信を行う第２の通信機器から第２のデータとトークンとを受信する第２の受信部と、
前記第２のデータを前記第１の通信機器に送信する第１の送信部と、
前記トークンを保持している際に前記第１のデータを前記第２の通信機器に送信する第２の送信部と、
前記第２の送信部が前記トークンを保持している際に前記第１の受信部が前記第１のデータを受信した場合に、前記第１のデータの受信から前記第２の受信部による前記トークンの次の受信までの時間を基準時間として取得する基準時間管理部と、
前記基準時間以上であって前記トークンの許容保持時間未満の通信周期にて前記第１の受信部に前記第１のデータの受信を繰り返し行わせ、前記通信周期にて前記第１の送信部に前記第２のデータの送信を繰り返し行わせ、前記第２の受信部による前記トークンの受信の度に、前記許容保持時間の範囲内で前記第２の送信部が前記第２の通信機器に前記第１のデータを送信するまで前記第２の送信部に前記トークンを保持させる通信制御部とを有する中継装置。
【請求項２】
前記基準時間管理部は、
前記基準時間を前記第１の通信機器に通知し、
前記通信制御部は、
前記第１の通信機器から、前記第１の通信機器にて決定された前記通信周期を通知され、前記第１の通信機器から通知された前記通信周期にて前記第１の受信部に前記第１のデータの受信を繰り返し行わせ、前記第１の通信機器から通知された前記通信周期にて前記第１の送信部に前記第２のデータの送信を繰り返し行わせる請求項１に記載の中継装置。
【請求項３】
前記通信制御部は、
前記基準時間管理部により前記基準時間が取得されるまでは、
前記第１の受信部に、前記第１の通信機器から任意の送信周期で送信された前記第１のデータを受信させ、
前記第２の受信部による前記トークンの受信の度に、前記許容保持時間以内のランダム時間の範囲内で前記第２の送信部が前記第２の通信機器に前記第１のデータを送信するまで前記第２の送信部に前記トークンを保持させる請求項１に記載の中継装置。
【請求項４】
タイムトリガ方式で通信を行う第１の通信機器から第１のデータを受信する第１の受信部と、
トークンパッシング方式で通信を行う第２の通信機器から第２のデータとトークンとを受信する第２の受信部と、
前記第２のデータを前記第１の通信機器に送信する第１の送信部と、
前記トークンを保持している際に前記第１のデータを前記第２の通信機器に送信する第２の送信部とを有するコンピュータが、
前記第２の送信部が前記トークンを保持している際に前記第１の受信部が前記第１のデータを受信した場合に、前記第１のデータの受信から前記第２の受信部による前記トークンの次の受信までの時間を基準時間として取得し、
前記基準時間以上であって前記トークンの許容保持時間未満の通信周期にて前記第１の受信部に前記第１のデータの受信を繰り返し行わせ、前記通信周期にて前記第１の送信部に前記第２のデータの送信を繰り返し行わせ、前記第２の受信部による前記トークンの受信の度に、前記許容保持時間の範囲内で前記第２の送信部が前記第２の通信機器に前記第１のデータを送信するまで前記第２の送信部に前記トークンを保持させる中継方法。
【請求項５】
タイムトリガ方式で通信を行う第１の通信機器から第１のデータを受信する第１の受信部と、
トークンパッシング方式で通信を行う第２の通信機器から第２のデータとトークンとを受信する第２の受信部と、
前記第２のデータを前記第１の通信機器に送信する第１の送信部と、
前記トークンを保持している際に前記第１のデータを前記第２の通信機器に送信する第２の送信部とを有するコンピュータに、
前記第２の送信部が前記トークンを保持している際に前記第１の受信部が前記第１のデータを受信した場合に、前記第１のデータの受信から前記第２の受信部による前記トークンの次の受信までの時間を基準時間として取得する基準時間管理処理と、
前記基準時間以上であって前記トークンの許容保持時間未満の通信周期にて前記第１の受信部に前記第１のデータの受信を繰り返し行わせ、前記通信周期にて前記第１の送信部に前記第２のデータの送信を繰り返し行わせ、前記第２の受信部による前記トークンの受信の度に、前記許容保持時間の範囲内で前記第２の送信部が前記第２の通信機器に前記第１のデータを送信するまで前記第２の送信部に前記トークンを保持させる通信制御処理を実行させる中継プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを中継する技術に関する。
【背景技術】
【０００２】
ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）ネットワークシステムでは、定周期通信が行われる。定周期通信では、ノードの制御のために決められた通信周期ごとに通信が行われる。定周期通信の方法としては、タイムトリガ方式とトークンパッシング方式がある。タイムトリガ方式では、ノードごとに予めスケジューリングされた送信間隔でデータの送信が行われる。また、トークンパッシング方式では、複数のノードの各々にトークンが順番に渡されていき、トークンを取得したノードのみがデータの送信権を取得する。そして、送信権を有するノードのみがデータの送信を行う。
タイムトリガ方式で通信を行うネットワークとトークンパッシング方式で通信を行うネットワークとを中継する中継装置は、タイムトリガ方式で通信を行うネットワークとの通信インタフェースと、トークンパッシング方式で通信を行うネットワークとの通信インタフェースを持つ。そして、中継装置は、一方の通信インタフェースでタイムトリガ方式の通信を行い、他方の通信インタフェースでトークンパッシング方式の通信を行う。【０００３】
特許文献１では、タイムトリガ方式で通信を行うネットワークとイベントドリブン方式で通信を行うネットワークとの間で通信を中継する際に、中継遅延を抑制する方式が記載されている。
特許文献１では、具体的には、タイムトリガ方式のノードから定期的に送信される優先度の高い同期フレームをイベントドリブン方式のノードが受信する。そして、イベントドリブン方式のノードは、同期フレームの受信タイミングでデータを送信する。このようにすることで、イベントドリブン方式のノードからのデータの送信間隔がほぼ一定になる。そして、このイベントドリブン方式のノードの送信間隔に基づき、中継装置にデータ送信間隔が設定され、中継遅延が抑制される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１０９４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載された方式を、タイムトリガ方式のネットワークとトークンパッシング方式のネットワークとを中継する中継装置に適用する場合を考える。
トークンパッシング方式では、中継装置は、トークンを保持している間しか、タイムトリガ方式のノードからのデータをトークンパッシング方式のノードに送信することができない。タイムトリガ方式のノードでは、中継装置がトークンを保持しているタイミングを把握することができない。このため、中継装置がトークンを保持しているタイミングに合わせてタイムトリガ方式のノードが中継装置にデータを送信することは困難である。
また、中継装置は、タイムトリガ方式での送信タイミングが到来した時しか、トークンパッシング方式のノードからのデータをタイムトリガ方式のノードにデータを送信することができない。また、前述したように、トークンパッシング方式のノードでは、トークンを保持している間しかデータを送信することができない。このため、中継装置がタイムトリガ方式のノードにデータを送信するタイミングに合わせてトークンパッシング方式のノードが中継装置にデータを送信することは困難である。
また、仮に、中継装置がトークンを保持しているタイミングに合わせてタイムトリガ方式のノードが中継装置にデータを送信でき、また、中継装置がタイムトリガ方式のノードにデータを送信するタイミングに合わせてトークンパッシング方式のノードが中継装置にデータを送信できる場合でも、トークンパッシング方式のネットワークで一時的な遅延が発生すると中継遅延が発生する。つまり、タイムトリガ方式のノードの通信タイミングとトークンパッシング方式のノードの通信タイミングとの間にずれが発生する。そして、通信タイミングの間にずれが発生した場合は、タイムトリガ方式のネットワークにおいてサイクルタイム（通信周期）が変更されない限り中継遅延が残る。【０００６】
トークンパッシング方式のネットワークで一時的な遅延が発生した場合の中継遅延を、図８を参照して説明する。【０００７】
図８において、ノード１（２０１）は、タイムトリガ方式に対応した通信機器である。ノード２（２０２）は、トークンパッシング方式に対応した通信機器である。中継装置２００は、ノード１（２０１）とノード２（２０２）との間の通信を中継する。
また、中継装置２００のＩ／Ｆ１は、タイムトリガ方式に対応した通信インタフェースである。また、中継装置２００のＩ／Ｆ２は、トークンパッシング方式に対応した通信インタフェースである。【０００８】
ノード２（２０２）は、トークンを保持している間にデータ８０１を中継装置２００に送信する。中継装置２００は、データ８０１を受信する。そして、中継装置２００は、タイムトリガ方式における送信タイミングが到来した際に、データ８０１をデータ８０２としてノード１（２０１）に送信する。この段階では、中継装置２００におけるデータ８０１の受信とデータ８０２の送信の間には遅延がほとんどない。
ノード１（２０１）は、送信タイミングになると、データ８０３を中継装置２００に送信する。中継装置２００は、トークンを保持しているので、データ８０３をデータ８０４としてノード２（２０２）に送信する。この段階では、中継装置２００におけるデータ８０３の受信とデータ８０４の送信の間には遅延がほとんどない。
このように、この段階では、中継装置２００がノード１（２０１）にデータを送信するタイミングに合わせてノード２（２０２）が中継装置２００にデータを送信できている。また、中継装置２００がトークンを保持しているタイミングに合わせてノード１（２０１）が中継装置２００にデータを送信できている。【０００９】
ここで、トークンパッシング方式のネットワークに一時的に遅延が発生したとする。
この遅延により、中継装置２００におけるノード２（２０２）からのデータの受信タイミングとノード１（２０１）へのデータの送信タイミングとがずれる。このため、中継装置２００からノード１（２０１）への送信タイミング（データ８０５の送信タイミング）にはデータ８０６は中継装置２００に届いていない。従って、中継装置２００は、データ８０６は送信できず、データ８０１をデータ８０５としてノード１（２０１）に送信する。
中継装置２００は、データ８０６を受信し、ノード１（２０１）への次の送信タイミングにデータ８０６をデータ８０７としてノード１（２０１）に送信する。このため、中継装置２００において約一周期の中継遅延が発生する（符号８０８）。つまり、中継装置２００では、データ８０６の受信からデータ８０７の送信までの間に、タイムトリガ方式での送信間隔と同程度の遅延が発生している。そして、タイムトリガ方式でのサイクルタイム（通信周期）を変更しないと、以降も、この遅延が維持される（符号８０９）。
また、トークンパッシング方式のネットワークでの遅延により、中継装置２００におけるノード１（２０１）からのデータの受信タイミングとトークンを保持している時間とがずれる。具体的には、ノード１（２０１）からデータ８１０が中継装置２００に届いた際には、中継装置２００はトークンを既に手放している。中継装置２００は、次にトークンを取得した後に、データ８１０をデータ８１１としてノード２（２０２）に送信する。つまり、中継装置２００では、データ８１０の受信からデータ８１１の送信までの間に、トークンの受信周期と同程度の遅延が発生している（符号８１２）。そして、タイムトリガ方式でのサイクルタイム（通信周期）を変更しないと、以降も、この遅延が維持される（符号８０９）。【００１０】
本発明では、このような課題を解決することを主な目的とする。より具体的には、本発明は、タイムトリガ方式で通信を行う第１の通信機器と、トークンパッシング方式で通信を行う第２の通信機器との間で通信を中継する場合に、トークンパッシング方式で通信を行うネットワークで通信遅延が発生しても、第１の通信機器が通信周期を変更することなく中継遅延を抑制できる構成を得ることを主な目的とする。
【課題を解決するための手段】
【００１１】
本発明に係る中継装置は、
タイムトリガ方式で通信を行う第１の通信機器から第１のデータを受信する第１の受信部と、
トークンパッシング方式で通信を行う第２の通信機器から第２のデータとトークンとを受信する第２の受信部と、
前記第２のデータを前記第１の通信機器に送信する第１の送信部と、
前記トークンを保持している際に前記第１のデータを前記第２の通信機器に送信する第２の送信部と、
前記第２の送信部が前記トークンを保持している際に前記第１の受信部が前記第１のデータを受信した場合に、前記第１のデータの受信から前記第２の受信部による前記トークンの次の受信までの時間を基準時間として取得する基準時間管理部と、
前記基準時間以上であって前記トークンの許容保持時間未満の通信周期にて前記第１の受信部に前記第１のデータの受信を繰り返し行わせ、前記通信周期にて前記第１の送信部に前記第２のデータの送信を繰り返し行わせ、前記第２の受信部による前記トークンの受信の度に、前記許容保持時間の範囲内で前記第２の送信部が前記第２の通信機器に前記第１のデータを送信するまで前記第２の送信部に前記トークンを保持させる通信制御部とを有する。
【発明の効果】
【００１２】
本発明では、中継装置が、トークンの受信の度に、許容保持時間の範囲内で第２の通信機器に第１のデータを送信するまでトークンを保持する。このため、本発明によれば、トークンパッシング方式で通信を行うネットワークで通信遅延が発生しても、第１の通信機器が通信周期を変更することなく中継遅延を抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１に係る中継装置のハードウェア構成例を示す図。
【図２】実施の形態１に係る中継装置の機能構成例を示す図。
【図３】実施の形態１に係るサイクルタイムの設定のための通信シーケンスを示す図。
【図４】実施の形態１に係るサイクルタイムの設定のための通信シーケンスを示す図。
【図５】実施の形態１に係るトークンパッシング方式のネットワークで一時的な遅延が発生した場合の通信シーケンスを示す図。
【図６】実施の形態１に係る中継装置の動作例を示すフローチャート図。
【図７】実施の形態１に係る中継装置の動作例を示すフローチャート図。
【図８】トークンパッシング方式のネットワークで一時的な遅延が発生した場合の中継遅延を示す図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分または相当する部分を示す。
【００１５】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１は、本実施の形態に係る中継装置１００のハードウェア構成例を示す。
また、図２は、本実施の形態に係る中継装置１００の機能構成例を示す。
先ず、図１を参照して、中継装置１００のハードウェア構成例を説明する。
【００１６】
中継装置１００は、ハードウェアとして、プロセッサ１００１、記憶装置１００２及び通信装置１００３を備えるコンピュータである。
記憶装置１００２には、図２に示す通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の機能を実現するプログラムが記憶されている。
そして、プロセッサ１００１がこれらプログラムを実行して、通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の動作を行う。
図２では、プロセッサ１００１が通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の機能を実現するプログラムを実行している状態を模式的に表している。
通信装置１００３は、図２に示すように第１の通信インタフェース１１０８と第２の通信インタフェース１１０９とを備える。第１の通信インタフェース１１０８は、タイムトリガ方式のネットワークとのインタフェースである。第２の通信インタフェース１１０９は、トークンパッシング方式のネットワークとのインタフェースである。なお、図面では、第１の通信インタフェース１１０８は、Ｉ／Ｆ１とも表記し、第２の通信インタフェース１１０９は、Ｉ／Ｆ２とも表記する。
中継装置１００で行われる動作は中継方法及び中継プログラムに相当する。
【００１７】
次に、図２を参照して、中継装置１００の機能構成例を説明する。
【００１８】
共有メモリ１１０１では、データが保存される。
共有メモリ１１０１では、例えば、タイムトリガ方式のノードから受信されたデータ、換言すればトークンパッシング方式のノードに送信予定のデータが保存される。また、共有メモリ１１０１では、例えば、トークンパッシング方式のノードから受信されたデータ、換言すればタイムトリガ方式のノードに送信予定のデータが保存される。
共有メモリ１１０１は、図１に示す記憶装置１００２により実現される。
【００１９】
第１の受信部１１０４は、第１の通信インタフェース１１０８を介して、タイムトリガ方式のノードからデータを受信する。
より具体的には、第１の受信部１１０４は、タイムトリガ方式で通信を行うノード１（１０１）（図３）からデータを受信する。第１の受信部１１０４が受信するデータは第１のデータともいう。
【００２０】
第２の受信部１１０６は、第２の通信インタフェース１１０９を介して、トークンパッシング方式のノードからデータを受信する。
より具体的には、第２の受信部１１０６は、トークンパッシング方式で通信を行うノード２（１０２）（図３）からデータを受信する。第２の受信部１１０６が受信するデータは第２のデータともいう。また、第２の受信部１１０６は、ノード２（１０２）からトークンを受信する。
【００２１】
第１の送信部１１０５は、第１の通信インタフェース１１０８を介して、タイムトリガ方式のノードにデータを送信する。
より具体的には、第１の送信部１１０５は、第２の受信部１１０６により受信されたデータ（第２のデータ）をノード１（１０１）に送信する。
【００２２】
第２の送信部１１０７は、第２の通信インタフェース１１０９を介して、トークンパッシング方式のノードにデータを送信する。
より具体的には、第２の送信部１１０７は、トークンを保持している際に、第１の受信部１１０４により受信されたデータ（第１のデータ）をノード２（１０２）に送信する。また、第２の送信部１１０７は、トークンをノード２（１０２）に送信する。
【００２３】
基準時間管理部１１０３は、第２の送信部１１０７がトークンを保持している際に第１の受信部１１０４がノード１（１０１）から第１のデータを受信した場合に、第１の受信部１１０４が第１のデータを受信してから第２の受信部１１０６がトークンを次に受信するまでの時間を基準時間として取得する。より具体的には、基準時間管理部１１０３は、第１の受信部１１０４が第１のデータを受信してから第２の受信部１１０６がトークンを次に受信するまでの時間を基準時間として計測する。そして、基準時間管理部１１０３は、計測した基準時間を第１の送信部１１０５を介してノード１（１０１）に通知する。以下では、基準時間管理部１１０３が基準時間を計測する例を説明するが、外部装置が基準時間の計測を行い、基準時間管理部１１０３は、計測された基準時間の値を外部装置から取得するようにしてもよい。
なお、基準時間管理部１１０３により行われる動作は基準時間管理処理に相当する。
【００２４】
通信制御部１１０２は、第１の受信部１１０４を介して、ノード１（１０１）から、ノード１（１０１）で決定されたサイクルタイムを通知される。サイクルタイムは、基準時間以上であってトークンの許容保持時間未満の通信周期である。
サイクルタイムは、ノード１（１０１）が中継装置１００にデータを送信する周期（中継装置１００がノード１（１０１）からデータを受信する周期）である。また、サイクルタイムは、中継装置１００がノード１（１０１）にデータを送信する周期（ノード１（１０１）が中継装置１００からデータを受信する周期）である。つまり、ノード１（１０１）はサイクルタイムごとに中継装置１００にデータを送信し、また、中継装置１００はサイクルタイムごとにノード１（１０１）からデータを受信する。また、中継装置１００はサイクルタイムごとにノード１（１０１）にデータを送信し、また、ノード１（１０１）はサイクルタイムごとに中継装置１００からデータを受信する。
このため、ノード１（１０１）からサイクルタイムが通知された後は、通信制御部１１０２は、通知されたサイクルタイムにて第１の受信部１１０４に第１のデータの受信を繰り返し行わせる。また、通信制御部１１０２は、通知されたサイクルタイムにて第１の送信部１１０５に第２のデータの送信を繰り返し行わせる。また、通信制御部１１０２は、第２の受信部１１０６がトークンを受信する度に、許容保持時間の範囲内で第２の送信部１１０７が第１のデータをノード２（１０２）に送信するまで第２の送信部１１０７にトークンを保持させる。
許容保持時間は、中継装置１００においてトークンを保持し続けられる最大の時間である。中継装置１００が許容保持時間よりも長くトークンを保持しているとエラーが発生する。
また、ノード１（１０１）からサイクルタイムが通知される前は、通信制御部１１０２は、第１の受信部１１０４に、ノード１（１０１）から任意の送信周期で送信された第１のデータを受信させる。また、ノード１（１０１）からサイクルタイムが通知される前は、通信制御部１１０２は、第２の受信部１１０６によるトークンの受信の度に、許容保持時間以内のランダム時間の範囲内で第２の送信部１１０７が第１のデータをノード２（１０２）に送信するまで第２の送信部１１０７にトークンを保持させる。
【００２５】
また、一般的なトークンパッシング方式のＦＡネットワークには、通信遅延の許容時間（以下、許容遅延時間という）が設定されており、ノード２（１０２）から許容遅延時間を超えてもデータ及びトークンを受信できない場合もエラーが発生する。
通信制御部１１０２は、許容遅延時間の管理も行っている。許容遅延時間内にノード２（１０２）からデータ及びトークンを受信できない場合は、ノード２（１０２）にデータ及びトークンの送信命令を行う。
なお、通信制御部１１０２で行われる動作は、通信制御処理に相当する。
【００２６】
＊＊＊動作の説明＊＊＊
次に、図３、図４及び図５を用いて、本実施の形態に係る中継装置１００とノード１（１０１）とノード２（１０２）との間の通信シーケンスを説明する。
なお、図３及び図４は、サイクルタイム設定のための通信シーケンスを示す。図５は、トークンパッシング方式のネットワークにおいて一時的な遅延が発生した場合の通信シーケンスを示す。
また、図３、図４及び図５において、ノード１（１０１）はタイムトリガ方式に対応した通信機器であり、第１の通信機器に相当する。また、ノード２（１０２）はトークンパッシング方式に対応した通信機器であり、第２の通信機器に相当する。
図３、図４及び図５では、タイムトリガ方式のネットワークにはノード１（１０１）のみが図示されているが、ノード１（１０１）以外にもタイムトリガ方式に対応したノードが存在しているものとする。同様に、図３、図４及び図５では、トークンパッシング方式のネットワークにはノード２（１０２）のみが図示されているが、ノード２（１０２）以外にもトークンパッシング方式に対応したノードが存在しているものとする。
【００２７】
［通信シーケンス１（図３、図４）：サイクルタイムの設定］
図３及び図４では、中継装置１００が、基準時間を測定し、基準時間に基づいたサイクルタイム（通信周期）を採用して、中継装置１００における中継遅延を抑制する手順を示す。
なお、以下に示す（１）−（１０）は、図３及び図４に示す（１）−（１０）に対応している。
【００２８】
（１）中継装置１００はノード２（１０２）からトークンを受信した場合は、ノード１（１０１）からデータを受信し、受信したデータをノード２（１０２）に送信するまで、許容保持時間の範囲内でトークンを保持する。
なお、この段階（基準時間を計測する前の段階）では、通信制御部１１０２は、トークン保持時間を許容保持時間未満の範囲でランダムに決定する。トークン保持時間は、第２の送信部１１０７がトークンを保持する時間である。トークン保持時間が固定時間であると、トークン保持時間外の時間が固定化される。トークン保持時間外の時間が固定化されると、中継装置１００がノード１（１０１）からデータを受信するタイミングが常にトークン保持時間以外の時間になる可能性がある。このような事態を回避するために、通信制御部１１０２は、トークン保持時間をランダムに決定する。
一方、サイクルタイム設定後は、通信制御部１１０２は、第２の送信部１１０７のトークン保持時間を許容保持時間に固定化する。
以下、ランダム時間である、サイクルタイム設定前に用いるトークン保持時間をトークン保持時間（ランダム）と表記する。また、サイクルタイム設定後に用いるトークン保持時間、すなわち許容保持時間をトークン保持時間（固定）と表記する。
【００２９】
（２）中継装置１００は、トークン保持時間（ランダム）内にノード１（１０１）からデータを受信しない場合は、受信済みのデータをノード２（１０２）に送信する。つまり、中継装置１００は、ノード１（１０１）から受信済みのデータを、データ３０１としてノード２（１０２）に送信する。更に、中継装置１００は、トークンをノード２（１０２）に送信する。
【００３０】
（３）ノード１（１０１）は、任意のサイクルタイムでデータを中継装置１００に送信する。なお、データ３０２及びデータ３０３は中継装置１００の共有メモリ１１０１においてデータ３０４により上書きされてしまう。このため、データ３０２及びデータ３０３は、ノード２（１０２）には送信されない。データ３０４のみがデータ３０５としてノード２（１０２）に送信される。
【００３１】
（４）中継装置１００は、トークン保持時間（ランダム）内にノード１（１０１）からデータを受信した場合は、ノード２（１０２）にデータを送信する。具体的には、中継装置１００は、データ３０４をデータ３０５としてノード２（１０２）に送信する。更に、中継装置１００はトークン３０６をノード２（１０２）に送信する。また、中継装置１００は、ノード１（１０１）からデータ３０４を受信してから、次にノード２（１０２）からトークン３０７を受信するまでの時間（基準時間）を計測する。この基準時間の計測は、基準時間管理部１１０３により行われる。
【００３２】
（５）中継装置１００は、計測した基準時間をノード１（１０１）に通知する。
【００３３】
（６）ノード１（１０１）は、中継装置１００から通知された基準時間をサイクルタイム（通信周期）として中継装置１００に設定する。
本実施の形態では、ノード１（１０１）は中継装置１００のマスタ装置として機能する。このため、中継装置１００はノード１（１０１）に基準時間を通知し、ノード１（１０１）が中継装置１００にサイクルタイムを設定する。ノード１（１０１）が中継装置１００のマスタ装置でなければ、中継装置１００がサイクルタイムを決定してもよい。
ノード１（１０１）が中継装置１００にデータを送信する周期及び中継装置１００がノード１（１０１）にデータを送信する周期にジッタが含まれる場合は、ノード１（１０１）は、基準時間にジッタを加算してサイクルタイムを決定してもよい。また、中継装置１００がノード２（１０２）からトークンを受信する周期にジッタが含まれる場合にも、ノード１（１０１）は、基準時間にジッタを加算してサイクルタイムを決定してもよい。前述したように、サイクルタイムは、トークンの許容保持時間未満であれば、基準時間以上であってもよい。図３では、ノード１（１０１）は、基準時間をサイクルタイムとして中継装置１００に設定している。
【００３４】
（７）ノード１（１０１）は、基準時間のサイクルタイムで中継装置１００にデータを送信する。
【００３５】
（８）中継装置１００は、トークン保持時間（ランダム）内にノード１（１０１）からデータを受信した場合は、ノード２（１０２）にデータを送信する。また、中継装置１００は、トークンをノード２（１０２）に送信する。
また、中継装置１００では、サイクルタイムが設定された後に中継装置１００がノード１（１０１）からデータを受信した際に、トークン保持時間（固定）が設定される。
トークン保持時間（固定）は、前述のように、トークンの許容保持時間である。
以降、中継装置１００は、ノード２（１０２）からトークンを受信する度に、トークン保持時間（固定）の範囲内で、ノード１（１０１）からのデータをノード２（１０２）に送信するまでトークンを保持する。
図４の例では、中継装置１００は、トークン４００を受信するとトークン保持時間（固定）の計測を開始する。ここでは、中継装置１００は、トークン保持時間（固定）内にデータ４０３をノード１（１０１）から受信し、受信したデータ４０３をデータ４０４としてノード２（１０２）に送信する。データ４０４をノード２（１０２）に送信したので、中継装置１００は、トークン４０５をノード２（１０２）に送信する。
【００３６】
（９）中継装置１００は、基準時間のサイクルタイムで、データをノード１（１０１）に送信する。
（１０）以降は、ノード１（１０１）と中継装置１００とが基準時間のサイクルタイムで通信を繰り返す。つまり、ノード１（１０１）は、基準時間のサイクルタイムで中継装置１００に繰り返しデータを送信する。また、中継装置１００は、基準時間のサイクルタイムでノード１（１０１）に繰り返しデータを送信する。
以上の手順により、中継装置１００における中継遅延を抑制することができる。
例えば、中継装置１００は、ノード１（１０１）へのデータ送信タイミングの直前にデータ４０１を受信する。このため、中継装置１００は、データ４０１を遅延なくデータ４０２としてノード１（１０１）に送信することができる。
また、中継装置１００は、トークン４００の受信タイミングの直後にデータ４０３をノード１（１０１）から受信する。このため、中継装置１００は、データ４０３を遅延なくデータ４０４としてノード２（１０２）に送信することができる。中継装置１００は、データ４０４をノード２（１０２）に送信すると、トークン保持時間（固定）が終了していなくても、トークン４０５をノード２（１０２）に送信する。
【００３７】
［通信シーケンス２（図５）一時的な遅延の発生時］
前述したように、中継装置１００はノード２（１０２）から受信したトークンを、トークン保持時間（固定）の範囲内で、ノード１（１０１）からのデータをノード２（１０２）に送信するまで保持する。このようにすることで、トークンパッシング方式のネットワークで一時的な遅延が発生した場合でも、中継装置１００におけるデータ送受信のタイミングとトークンの送受信のタイミングが一時的な遅延の発生前の状態に戻る。このため、タイムトリガ方式のサイクルタイムを変更せずに中継遅延を抑制することが可能である。
なお、以下の（１１）−（１４）は、図５の（１１）−（１４）に対応している。
【００３８】
（１１）ノード１（１０１）及び中継装置１００は、図３及び図４に示した手順にて、適切なサイクルタイムを設定していることを前提とする。
（１２）トークンパッシング方式のネットワークで一時的な遅延が発生する。
（１３）中継装置１００は、ノード２（１０２）から受信したトークンを、ノード１（１０１）からデータを受信し、受信したデータをノード２（１０２）に送信するまで、トークン保持時間（固定）の範囲内で保持する。そして、中継装置１００は、トークン保持時間（固定）内にノード１（１０１）からデータを受信したため、受信したデータをノード２（１０２）に送信する。更に、中継装置１００はトークンをノード２（１０２）に送信する。
（１４）中継装置１００が、上記の（１３）においてノード１（１０１）からデータを受信し、受信したデータをノード２（１０２）に送信するまでトークンを保持することにより、中継装置１００は、トークンパッシング方式のネットワークにおける一時的な遅延により発生した通信タイミングのずれを吸収することができる。このため、中継装置１００は、タイムトリガ方式のネットワークでのサイクルタイムを変更せずに中継遅延を抑制することができる。
【００３９】
トークンパッシング方式のネットワークにおいて一時的な遅延が発生する前は、中継装置１００は、ノード１（１０１）へのデータ送信タイミングの直前にデータ５０１を受信する。このため、中継装置１００は、データ５０１を遅延なくデータ５０２としてノード１（１０１）に送信することができる。
また、中継装置１００は、トークン５００の受信の直後にデータ５０３をノード１（１０１）から受信するため、中継装置１００は、データ５０３を遅延なくデータ５０４としてノード２（１０２）に送信することができる。
トークンパッシング方式のネットワークにおいて一時的な遅延が発生したために、中継装置１００におけるノード２（１０２）からのデータの受信タイミングとノード１（１０１）へのデータの送信タイミングとがずれる。このため、中継装置１００からノード１（１０１）への送信タイミング（データ５０７の送信タイミング）にはデータ５０６は中継装置１００に届いていない。従って、中継装置１００は、データ５０７の送信タイミングでは、ノード１（１０１）にデータ５０６を送信することができない。中継装置１００は、過去に受信済みのデータ５０１をデータ５０７としてノード１（１０１）に送信する。
中継装置１００は、データ５０６を受信し、ノード１（１０１）への次の送信タイミングにデータ５０６をデータ５０８としてノード１（１０１）に送信する。このため、トークンパッシング方式のネットワークでの遅延により、ノード１（１０１）へのデータ送信において遅延が発生する。
更に、中継装置１００は、ノード１（１０１）からデータ５０９を受信し、データ５０９をデータ５１０としてノード２（１０２）に送信する。中継装置１００は、データ５０９の受信及びデータ５１０の送信までトークンを保持しているため、中継遅延なしにデータ５１０をノード２（１０２）に送信することができる。図８の例では、中継装置２００は、データ８１０を受信したときにトークンを保持していないため、次にトークンを受信した後に、データ８１０をデータ８１１としてノード２（２０２）に送信する。このため、図８の例では、中継装置２００において中継遅延が発生する。本実施の形態では、中継装置１００は、許容保持範囲内でトークンを保持するので、データ５０９の受信時にトークンが存在しており、データ５１０を送信することができる。
データ５１０とトークン５１１との関係（送信間隔）は、図４のデータ４０４とトークン４０５との関係（送信間隔）と同じである。
このため、図４のデータ４０６とデータ４０７との関係と同様に、図５のデータ５１２は中継遅延なくデータ５１３としてノード１（１０１）に送信される。また、図４のデータ４０８とデータ４０９との関係と同様に、図５のデータ５１４は中継遅延なくデータ５１５としてノード２（１０２）に送信される。
【００４０】
次に、図６及び図７を参照して、中継装置１００の動作例を説明する。
図６は、基準時間の計測、サイクルタイムの設定、及びノード１（１０１）とのデータ送受信に関する手順を示す。
図７は、ノード２（１０２）とのデータ送受信、及びトークンの送受信に関する手順を示す。
図６に示すフローと図７に示すフローは並行して行われる。
先ず、図６に示すフローを説明する。
【００４１】
ステップＦ１０００では、通信制御部１１０２が、第１の受信部１１０４がノード１（１０１）からデータを受信したかどうかを判定する。第１の受信部１１０４は、ノード１（１０１）からデータを受信した場合には、通信制御部１１０２にノード１（１０１）からデータを受信したことを通知する。これにより、通信制御部１１０２は、第１の受信部１１０４がノード１（１０１）からデータを受信したかどうかを判定することができる。また、第１の受信部１１０４はノード１（１０１）から受信したデータを共有メモリ１１０１に格納する。
第１の受信部１１０４がノード１（１０１）からのデータを受信している場合は、ステップＦ１００１が行われる。
【００４２】
ステップＦ１００１では、通信制御部１１０２が、第２の送信部１１０７がトークンを保持しているかどうかを判定する。第２の受信部１１０６は、ノード２（１０２）からトークンを受信した場合に、通信制御部１１０２にノード２（１０２）からトークンを受信したことを通知する。また、後述するステップＦ２００７で説明するように、トークンをノード２（１０２）に送信するタイミングが到来すると通信制御部１１０２は第２の送信部１１０７にトークンをノード２（１０２）に送信するよう指示する。通信制御部１１０２は、第２の受信部１１０６からトークンを受信した旨が通知された後、第２の送信部１１０７にトークンの送信を指示していない場合に、第２の送信部１１０７がトークンを保持していると判定する。
第２の送信部１１０７がトークンを保持している場合は、ステップＦ１００２で、基準時間管理部１１０３が基準時間の計測を開始する。つまり、通信制御部１１０２は、第２の送信部１１０７がトークンを保持していると判定した場合には、基準時間管理部１１０３に基準時間の計測を指示する。
【００４３】
ステップＦ１００３では、通信制御部１１０２が、第２の受信部１１０６がトークンを受信したかどうかを判定する。第２の受信部１１０６がトークンを受信した場合は、ステップＦ１００４で、基準時間管理部１１０３が基準時間の計測を終了する。そして、ステップＦ１００５で、基準時間管理部１１０３が第１の送信部１１０５を介して、計測した基準時間をノード１（１０１）に通知する。前述したように、第２の送信部１１０７は、ノード２（１０２）からトークンを受信した場合には、通信制御部１１０２にノード２（１０２）からトークンを受信した旨を通知する。また、通信制御部１１０２は、第２の送信部１１０７からトークンを受信した旨が通知された場合は、基準時間管理部１１０３に基準時間の計測を終了するよう指示する。そして、基準時間管理部１１０３は、計測した基準時間を通知するデータを生成し、生成したデータを第１の送信部１１０５を介してノード１（１０１）に送信する。
【００４４】
ステップＦ１００６では、通信制御部１１０２が、ノード１（１０１）からサイクルタイムを設定されたかどうかを判定する。具体的には、第１の受信部１１０４が、ノード１（１０１）からサイクルタイムを通知するデータを受信した場合に、受信したデータを通信制御部１１０２に出力する。通信制御部１１０２は、当該データからサイクルタイムの値を抽出し、抽出したサイクルタイムの値を例えばプロセッサ１００１のレジスタに格納する。
【００４５】
ステップＦ１００６でサイクルタイムが設定された場合は、ステップＦ１００７で、通信制御部１１０２が、サイクルタイムが経過したか否かを判定する。通信制御部１１０２は例えばタイマを用いた計測を行ってサイクルタイムが経過したか否かを判定する。
サイクルタイムが経過した場合は、ステップＦ１１０８で、通信制御部１１０２が第１の送信部１１０５にノード１（１０１）へのデータ送信を指示し、第１の送信部１１０５がノード１（１０１）にデータを送信する。
より具体的には、第１の送信部１１０５は共有メモリ１１０１からノード２（１０２）からのデータを読み出し、読み出したデータをノード１（１０１）に送信する。
【００４６】
次に、図７に示すフローを説明する。
【００４７】
ステップＦ２０００では、通信制御部１１０２が、第２の受信部１１０６がノード２（１０２）からトークンを受信したかどうかを判定する。前述したように、第２の受信部１１０６はトークンを受信した場合に通信制御部１１０２にトークンを受信した旨を通知する。通信制御部１１０２は、第２の受信部１１０６がトークンを受信したと判定した場合に、第２の受信部１１０６にトークンを第２の送信部１１０７に出力するよう指示し、第２の受信部１１０６は第２の送信部１１０７にトークンを出力する。また、通信制御部１１０２は、第２の送信部１１０７にトークン保持するよう指示する。
第２の送信部１１０７は、ステップＦ２００１で、トークンを保持する。
【００４８】
ステップＦ２００２では、通信制御部１１０２が、サイクルタイムが設定されているかどうかを判定する。つまり、通信制御部１１０２は、図６のステップＦ１００６の処理を行ったか否かを判定する。
サイクルタイムが設定されていない場合は、通信制御部１１０２は、許容保持時間内のランダム時間をトークン保持時間（ランダム）としてタイマに設定する。そして、通信制御部１１０２は、ステップＦ２００３において、第２の受信部１１０６がトークンを受信してからの経過時間がトークン保持時間（ランダム）を超えたか否かを判定する。また、サイクルタイムが設定されている場合は、通信制御部１１０２は、許容保持時間をトークン保持時間（固定時間）としてタイマに設定する。そして、ステップＦ２００４において、通信制御部１１０２は、第２の受信部１１０６がトークンを受信してからの経過時間がトークン保持時間（固定時間）を超えたか否かを判定する。
【００４９】
第２の受信部１１０６がトークンを受信してからの経過時間がトークン保持時間（ランダム時間）を超えていない場合は、ステップＦ２００５において、通信制御部１１０２が、第１の受信部１１０４がノード１（１０１）からデータを受信したかどうかを判定する。
また、第２の受信部１１０６がトークンを受信してからの経過時間がトークン保持時間（固定時間）を超えていない場合も同様に、ステップＦ２００５において、通信制御部１１０２が、第１の受信部１１０４がノード１（１０１）からデータを受信したかどうかを判定する。
【００５０】
ステップＦ２００５において第１の受信部１１０４がノード１（１０１）からデータを受信している場合は、通信制御部１１０２は、第２の送信部１１０７に、ノード１（１０１）からのデータをノード２（１０２）に送信するよう指示する。そして、ステップＦ２００６で、第２の送信部１１０７がノード２（１０２）にノード１（１０１）からのデータを送信する。より具体的には、第１の受信部１１０４がノード１（１０１）からのデータを共有メモリ１１０１に格納し、第２の送信部１１０７が共有メモリ１１０１からノード１（１０１）からのデータを読み出す。そして、第２の送信部１１０７が、読み出したノード１（１０１）からのデータをノード２（１０２）に送信する。
【００５１】
また、通信制御部１１０２は、第２の送信部１１０７にトークンをノード２（１０２）に送信するよう指示する。第２の送信部１１０７は、ステップＦ２００７で、ノード２（１０２）にトークンを送信する。
【００５２】
また、ステップＦ２００３において、第２の受信部１１０６がトークンを受信してからの経過時間がトークン保持時間（ランダム時間）を超えた場合には、通信制御部１１０２は、第２の送信部１１０７に、ノード１（１０１）からのデータをノード２（１０２）に送信するよう指示する。そして、ステップＦ２００６で、第２の送信部１１０７がノード２（１０２）にノード１（１０１）からのデータを送信する。より具体的には、第２の送信部１１０７が共有メモリ１１０１からノード１（１０１）からのデータ（ノード１（１０１）から前回送信されたデータ）を読み出す。そして、第２の送信部１１０７が、読み出したノード１（１０１）からのデータをノード２（１０２）に送信する。
また、ステップＦ２００４において、第２の受信部１１０６がトークンを受信してからの経過時間がトークン保持時間（固定時間）を超えた場合も、通信制御部１１０２は、第２の送信部１１０７に、ノード１（１０１）からのデータをノード２（１０２）に送信するよう指示する。そして、ステップＦ２００６で、第２の送信部１１０７がノード２（１０２）にノード１（１０１）からのデータを送信する。より具体的には、第２の送信部１１０７が共有メモリ１１０１からノード１（１０１）からのデータ（ノード１（１０１）から前回送信されたデータ）を読み出す。そして、第２の送信部１１０７が、読み出したノード１（１０１）からのデータをノード２（１０２）に送信する。
その後、通信制御部１１０２が第２の送信部１１０７にトークンをノード２（１０２）に送信するよう指示する。第２の送信部１１０７は、ステップＦ２００７で、ノード２（１０２）にトークンを送信する。
【００５３】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態に係る中継装置は、基準時間以上であって許容保持時間未満のサイクルタイムにて第１のデータの受信を繰り返し行い、前記サイクルタイムにて第２のデータの送信を繰り返し行う。また、本実施の形態に係る中継装置は、トークンの受信の度に、許容保持時間の範囲内でトークンパッシング方式の通信機器に第１のデータを送信するまでトークンを保持する。
このため、本実施の形態によれば、適切なサイクルタイムを設定することができ、中継遅延を抑制することができる。
また、トークンパッシング方式のネットワークで一時的な遅延が発生した場合でも、タイムトリガ方式のネットワークのサイクルタイムを変更せずに中継遅延を抑制することができる。
【００５４】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、中継装置１００のハードウェア構成の補足説明を行う。
図１に示すプロセッサ１００１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ１００１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図１に示す記憶装置１００２は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図１に示す通信装置１００３は、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
通信装置１００３は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００５５】
また、記憶装置１００２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ１００１により実行される。
プロセッサ１００１はＯＳの少なくとも一部を実行しながら、通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の機能を実現するプログラムを実行する。
プロセッサ１００１がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
また、通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の処理の結果を示す情報やデータや信号値や変数値が、記憶装置１００２、プロセッサ１００１内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００５６】
また、通信制御部１１０２、基準時間管理部１１０３、第１の受信部１１０４、第１の送信部１１０５、第２の受信部１１０６及び第２の送信部１１０７の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、中継装置１００は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった電子回路により実現されてもよい。
なお、プロセッサ及び上記の電子回路を総称してプロセッシングサーキットリーともいう。
【符号の説明】
【００５７】
１００  中継装置、１０１  ノード１、１０２  ノード２、１００１  プロセッサ、１００２  記憶装置、１００３  通信装置、１１０１  共有メモリ、１１０２  通信制御部、１１０３  基準時間管理部、１１０４  第１の受信部、１１０５  第１の送信部、１１０６  第２の受信部、１１０７  第２の送信部、１１０８  第１の通信インタフェース、１１０９  第２の通信インタフェース、２００  中継装置、２０１  ノード１、２０２  ノード２。
【図１】
0006472584.tif 000002
【図２】
0006472584.tif 000003
【図３】
0006472584.tif 000004
【図４】
0006472584.tif 000005
【図５】
0006472584.tif 000006
【図６】
0006472584.tif 000007
【図７】
0006472584.tif 000008
【図８】
0006472584.tif 000009