(57)【要約】【課題】ネットワーク中継装置を用いたネットワーク構成に利用でき、システムで送受信する情報量を低下させることなく、ネットワークで接続された他の通信制御装置と時刻を同期することが可能な通信制御装置を提供する。【解決手段】ネットワークを介して複数の通信制御装置と接続され、少なくとも要求パケットと応答パケットとで構成される通信を用いた時刻同期手順を用いて複数の通信制御装置と時刻同期し、複数の通信制御装置からの要求パケットの受信間隔を測定する受信間隔測定部１３４と、受信間隔測定部１３４が測定した要求パケットの受信間隔に基づいて、複数の通信制御装置のうち任意の通信制御装置からの要求パケットの衝突を検知するキューイング発生判定部１３５とを備え、キューイング発生判定部１３５の検知結果にしたがって、要求パケットを送信した通信制御装置へ応答パケットを送信するか否かを決定する。【選択図】図３
2014078781.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して複数の通信制御装置と接続され、少なくとも要求パケットと応答パケットとで構成される通信を用いた時刻同期手順を用いて前記複数の通信制御装置と時刻同期し、
前記複数の通信制御装置からの要求パケットの受信間隔を測定する受信間隔測定部と、
前記受信間隔測定部が測定した要求パケットの受信間隔に基づいて、前記複数の通信制御装置のうち任意の通信制御装置からの要求パケットの衝突を検知するキューイング発生判定部とを備え、
前記キューイング発生判定部の検知結果にしたがって、要求パケットを送信した前記通信制御装置へ応答パケットを送信するか否かを決定することを特徴とする通信制御装置。
【請求項２】
前記キューイング発生判定部は、前記受信間隔測定部が測定した要求パケットの受信間隔が、前記ネットワークで規定されるパケット間隔を少なくとも用いて算出した要求パケットの受信間隔以上の場合に、要求パケットの衝突がないと判断する請求項１記載の通信制御装置。
【請求項３】
前記キューイング発生判定部が要求パケットの衝突がないと判断した場合に、この要求パケットを送信した前記通信制御装置へ、応答パケットを送信する請求項１記載の通信制御装置。
【請求項４】
前記キューイング発生判定部が要求パケットの衝突を検知した場合に、前記複数の通信制御装置のうち、この要求パケットを送信した前記通信制御装置へ、時刻同期を要求するための再要求パケットを送信する請求項１記載の通信制御装置。
【請求項５】
要求パケットを予め定めた所定の時間内に受信しなかった場合は、前記複数の通信制御装置へ、時刻同期を要求するための再要求パケットを送信する請求項１記載の通信制御装置。
【請求項６】
前記キューイング発生判定部が要求パケットの衝突を検知した場合に、少なくとも、この要求パケットを送信した前記通信制御装置へ、時刻同期を要求するための再要求パケットを送信する請求項１記載の通信制御装置。
【請求項７】
前記受信間隔測定部が時刻同期を要求するための再要求パケットを前記複数の通信制御装置に送信した後、前記通信制御装置が前記複数の通信制御装置からの要求パケットを最初に受信するまでの時間が予め定めた所定時間を超えた場合に、前記キューイング発生判定部は、要求パケットが衝突したと判定する請求項１記載の通信制御装置。
【請求項８】
前記キューイング発生判定部が検知した要求パケットの衝突の回数に応じて、時刻同期を要求するための再要求パケットを送信するまでの時間を変更する請求項１記載の通信制御装置。
【請求項９】
前記複数の通信制御装置をグループにわけるグループ構成部をさらに備え、
前記キューイング発生判定部の検知結果にしたがって、前記グループ構成部がわけたグループに対して要求パケットを送信するか否かを決定する請求項１記載の通信制御装置。
【請求項１０】
前記グループ構成部は、前記複数の通信制御装置との通信遅延に基づいて、前記複数の通信制御装置をグループにわける請求項９記載の通信制御装置。
【請求項１１】
前記グループ構成部は、応答パケットの送信回数、前記複数の通信制御装置との時刻同期の成功回数、前記複数の通信制御装置との時刻同期の失敗回数、及び前記複数の通信制御装置との時刻同期が成立してからの経過時間のうち、いずれか１つ又は複数に基づいて、前記複数の通信制御装置をグループにわける請求項９記載の通信制御装置。
【請求項１２】
前記ネットワークの構成情報を保持するネットワーク構成情報記憶部をさらに備え、
前記グループ構成部は、前記ネットワーク構成情報記憶部が保持する前記ネットワークの構成情報に基づいて、前記複数の通信制御装置をグループにわける請求項９記載の通信制御装置。
【請求項１３】
前記ネットワーク構成情報記憶部が保持する前記ネットワークの構成情報は、前記ネットワークを構成する装置の数、前記装置の情報、ネットワークトポロジ、前記装置までのホップ数、前記装置までの通信遅延、前記ネットワークを構成する中継装置の性能、前記ネットワークの通信性能、及びネットワークメディアのうち、いずれか１つ又は複数である請求項１２記載の通信制御装置。
【請求項１４】
前記グループ構成部は、前記複数の通信制御装置との応答パケットの送信履歴に基づいて、前記複数の通信制御装置をグループにわける請求項９記載の通信制御装置。
【請求項１５】
前記グループ構成部は、時刻同期ができなかった前記複数の通信制御装置の数が予め定めた所定数以下の場合、この時刻同期ができなかった前記複数の通信制御装置の中から予め定めた所定数の通信制御装置を選択することで、前記複数の通信制御装置をグループにわける請求項９記載の通信制御装置。
【請求項１６】
前記複数の通信制御装置のうち、前記要求パケットを送信した前記通信制御装置は、時刻同期を要求するための再要求パケットを受信した後、予め定めた所定の時間内に、他の前記通信制御装置と通信する請求項４記載の通信制御装置。
【請求項１７】
ネットワーク中継装置内でのパケットの滞留時間を前記パケットに格納するネットワーク中継装置を用いたネットワーク構成に用いられ、
前記キューイング発生判定部は、
前記ネットワーク中継装置を経由して連続して受信した第一の要求パケットと第二の要求パケットについて、第一の要求パケットを送信した第一の通信制御装置と第二の要求パケットを送信した第二の通信制御装置とが前記ネットワーク中継装置までの通信経路を共有せず、且つ第一の要求パケットに衝突がないと判断した場合に、第二の要求パケットは衝突がないと判断する請求項１記載の通信制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散制御システムに使用される通信制御装置に関する。
【背景技術】
【０００２】
分散された複数の通信制御装置から構成される制御システムにおいては、制御を実現するアプリケーションに応じて、通信制御装置間の時刻を同期することが求められる場合がある。ネットワークで接続された分散制御システムの場合は、ネットワークを介した時刻同期用パケットの送受信によって、時刻を同期することができる。
【０００３】
ネットワークを用いた時刻同期方式として、ＮＴＰ（Network Time Protocol）、ＳＮＴＰ（Simple Network Time Protocol）、ＩＥＥＥ１５８８等が挙げられる。
【０００４】
ここで、図１４、図１５を用いて、ＩＥＥＥ１５８８の時刻同期プロトコルの実行手順を説明する。ＩＥＥＥ１５８８は、マスタ−スレーブ構成に適用される。
【０００５】
図１４は、ＩＥＥＥ１５８８の時刻同期プロトコルの実行手順を説明する図である。図１５は、ＩＥＥＥ１５８８におけるマスタとスレーブとの間のメッセージのやりとりを示す図である。
【０００６】
はじめに、マスタは、スレーブにＳｙｎｃメッセージを送信する（Ｓ０６０）。
【０００７】
このとき、マスタは、Ｓｙｎｃメッセージの送信時刻ｔ１を記録する（Ｓ０６１）。
【０００８】
スレーブは、Ｓｙｎｃメッセージを受信すると、その受信時刻ｔ２を記録する（Ｓ０６２）。
【０００９】
マスタは、次のいずれかの方法で、Ｓｙｎｃメッセージの送信時刻ｔ１をスレーブに通知する（Ｓ０６３）。１つは、Ｓｙｎｃメッセージに送信時刻ｔ１の情報を乗せる方法である。もう１つは、Ｓｙｎｃメッセージに続くＦｏｌｌｏｗ＿Ｕｐメッセージに送信時刻ｔ１の情報を乗せる方法である。
【００１０】
続いて、スレーブは、マスタにＤｅｌａｙ＿Ｒｅｑメッセージを送信する（Ｓ０６４）。
【００１１】
このとき、スレーブはＤｅｌａｙ＿Ｒｅｑメッセージの送信時刻ｔ３を記録する（Ｓ０６５）。
【００１２】
マスタは、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、その受信時刻ｔ４を記録する（Ｓ０６６）。
【００１３】
そして、マスタは、Ｄｅｌａｙ＿Ｒｅｓｐメッセージに、Ｄｅｌａｙ＿Ｒｅｑメッセージの受信時刻ｔ４の情報を乗せ、受信時刻ｔ４をスレーブに通知する（Ｓ０６７）。
【００１４】
Ｄｅｌａｙ＿Ｒｅｓｐメッセージを受信したスレーブは、時刻ｔ１、ｔ２、ｔ３、ｔ４から、マスタとスレーブ間の通信遅延と時刻の差分を計算する（Ｓ０６８）。
【００１５】
通信遅延の計算には、マスタとスレーブ間の通信遅延が往路と復路で等しいという前提がある。従って、片道の通信遅延ｔｄは、式（１）で表わされる。
ｔｄ＝（（ｔ４−ｔ３）＋（ｔ２−ｔ１））／２        （１）
また、マスタとスレーブの時刻の差分ｔｄｉｆｆは、式（２）で表わされる。
ｔｄｉｆｆ＝（（ｔ４−ｔ３）−（ｔ２−ｔ１））／２        （２）
スレーブは、このｔｄｉｆｆを用いて、マスタと時刻を同期する。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２０１０−７４６００号公報
【非特許文献】
【００１７】
【非特許文献１】IEEE1588-2008, “IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems”
【発明の概要】
【発明が解決しようとする課題】
【００１８】
ネットワークが、ネットワークスイッチ等の中継装置を用いて構成されていると、時刻の同期精度が低下する。ＩＥＥＥ１５８８では、時刻同期用パケットのマスタとスレーブ間の往復の遅延が等しいか、又は往復の遅延に時間差がある場合でもその時間差が既知であるという前提に基づいている。
【００１９】
また、分散制御システムのように、複数の通信制御装置間でネットワークを共有する場合、ネットワークスイッチ等の中継装置内で時刻同期用パケットがキューイングされ、往復の遅延の時間差にゆらぎが生じるという課題がある。すなわち、時刻同期用パケットの遅延が往復で異なり、往復の遅延の時間差が未知であるため、ＩＥＥＥ１５８８の前提が崩れる。
【００２０】
非特許文献１は、ｅｎｄ−ｔｏ−ｅｎｄ  ＴＣ（Transparent Clock）やｐｅｅｒ−ｔｏ−ｐｅｅｒ  ＴＣという仕組みを用いて、ネットワークデバイス内でのパケットの転送遅延を計測することができる。この計測した転送遅延をパケット内のデータに反映することで、往復の通信遅延の差を算出することができる。しかし、この方法を利用するには、ｅｎｄ−ｔｏ−ｅｎｄ  ＴＣやｐｅｅｒ−ｔｏ−ｐｅｅｒ  ＴＣの仕組みに対応したネットワークデバイスが必要である。このようなネットワークデバイスは、コストが高く、入手が容易でないため利用しづらいという課題がある。
【００２１】
また、特許文献１は、複数の遅延推定用パケットを所定の送信間隔で送信し、これらを受信した間隔と所定の送信間隔とを比較することで、ネットワークデバイス中のキューイング遅延を推定する。しかし、この方法では、マスタとスレーブの両方で時刻同期プロトコルを実行するので、マスタとスレーブの両方に標準規格に準拠した通信制御装置を用いることができない。このため、システムを標準規格に準拠した通信制御装置で構成することが困難となる。また、遅延推定用パケットを送信するため、時刻を同期するために用いるパケット以外のパケットの送受信量が少なくなり、システムで送受信する情報量が低下するという課題がある。
【００２２】
本発明は、ネットワーク中継装置を用いたネットワーク構成に利用でき、システムで送受信する情報量を低下させることなく、ネットワークで接続された他の通信制御装置と時刻を同期することが可能な通信制御装置を提供することを目的とする。
【課題を解決するための手段】
【００２３】
上記課題を解決するために、本発明による通信制御装置は、次のような特徴を有する。ネットワークを介して複数の通信制御装置と接続され、少なくとも要求パケットと応答パケットとで構成される通信を用いた時刻同期手順を用いて前記複数の通信制御装置と時刻同期し、前記複数の通信制御装置からの要求パケットの受信間隔を測定する受信間隔測定部と、前記受信間隔測定部が測定した要求パケットの受信間隔に基づいて、前記複数の通信制御装置のうち任意の通信制御装置からの要求パケットの衝突を検知するキューイング発生判定部とを備え、前記キューイング発生判定部の検知結果にしたがって、要求パケットを送信した前記通信制御装置へ応答パケットを送信するか否かを決定する。
【発明の効果】
【００２４】
本発明による通信制御装置は、ネットワーク中継装置を用いたネットワーク構成に利用でき、システムで送受信する情報量を低下させることなく、ネットワークで接続された他の通信制御装置と時刻を同期することが可能である。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施例による通信制御装置を用いて構成する分散制御システムの例を示す図である。
【図２】本発明の実施例による通信制御装置のハードウェア構成を示す図である。
【図３】実施例１による通信制御装置の機能構成を示す図である。
【図４】パケットがネットワーク中継装置で衝突した場合の動作を示す図である。
【図５】実施例１における通信装置の機能構成を示す図である。
【図６】実施例１による通信制御装置の時刻同期処理の手順を説明する図である。
【図７】実施例２による通信制御装置の機能構成を示す図である。
【図８】実施例２によるグループ構成部を備える通信制御装置の時刻同期処理の手順を説明する図である。
【図９】実施例２によるＩＥＥＥ１５８８規格のドメインを用いた通信装置の機能構成を示す図である。
【図１０】遅延情報を基に、通信装置のグループを構成する例を示す図である。
【図１１】時刻同期プロトコル以外のパケットが通信制御装置宛ではない場合の通信フローの例を示す図である。
【図１２】実施例３における通信装置の機能構成を示す図である。
【図１３】実施例３における通信装置の動作を示すフローチャートである。
【図１４】ＩＥＥＥ１５８８の時刻同期プロトコルの実行手順を説明する図である。
【図１５】ＩＥＥＥ１５８８におけるマスタとスレーブとの間のメッセージのやりとりを示す図である。
【図１６】時刻同期制御装置を用いた分散制御システムの例を示す図である。
【図１７】時刻同期制御装置の機能構成を示す図である。
【図１８】実施例４におけるネットワーク中継装置の機能構成を示す図である。
【図１９】実施例５における分散制御システムの構成を示す図である。
【図２０】実施例６における分散制御システムの構成を示す図である。
【図２１】実施例７における分散制御システムの構成を示す図である。
【図２２】時刻同期手順以外の通信フローが、通信制御装置から通信装置へ送信された時刻同期用パケットと衝突する場合の通信フローの例を示す図である。
【図２３】時刻同期に関係のない通信フローが存在する場合の通信フローの例を示す図である。
【図２４】マスタとスレーブとの間のメッセージのやりとりを示す図である。
【発明を実施するための形態】
【００２６】
本発明による通信制御装置の実施例を、図面を用いて説明する。本発明による通信制御装置は、分散制御システムを構成し、ネットワーク中継装置を介して他の通信制御装置と接続される。以下の実施例では、着目している通信制御装置と区別するために、他の通信制御装置を便宜上「通信装置」と称する。ＩＥＥＥ１５８８のようにマスタ−スレーブ構成をとる場合、通信制御装置がマスタとなり、通信装置がスレーブとなる。ＮＴＰのようにサーバ−クライアント構成をとる場合、通信制御装置がサーバとなり、通信装置がクライアントとなる。本発明による通信制御装置は、マスタ−スレーブ構成ではサーバにもクライアントにもなることができ、サーバ−クライアント構成ではサーバにもクライアントにもなることができる。
【００２７】
本発明による通信制御装置は、少なくとも要求パケットと応答パケットとで構成される通信を用いた時刻同期手順を用いて、他の通信制御装置と時刻同期する。時刻同期を行うときには、他の通信制御装置からの要求パケットの衝突を検知し、検知結果に基づいて、要求パケットを送信した通信制御装置へ応答パケットを送信するか否かを決定する。
【００２８】
なお、以下の実施例では、時刻同期プロトコルとしてＩＥＥＥ１５８８を実行するものとして説明する。以下の実施例で、スレーブの時刻をマスタに同期させる場合には、ＩＥＥＥ１５８８のＤｅｌａｙ＿Ｒｅｑメッセージは、スレーブがマスタに時刻同期を要求するメッセージであり、Ｄｅｌａｙ＿Ｒｅｓｐメッセージは、マスタがスレーブに応答するメッセージである。従って、Ｄｅｌａｙ＿Ｒｅｑメッセージのパケットが要求パケットとなり、Ｄｅｌａｙ＿Ｒｅｓｐメッセージのパケットが応答パケットとなる。Ｓｙｎｃメッセージのパケットは、時刻同期を要求するための要求パケット、すなわち再要求パケットとなる。
【００２９】
本発明では、時刻同期プロトコルとして、ＮＴＰ又はＳＮＴＰを実行してもよい。例えば、ＮＴＰ又はＳＮＴＰを実行する場合には、クライアントからの要求に対してサーバが応答する。すなわち、クライアントが要求パケットをサーバに送信し、サーバは応答パケットをクライアントに送信する。
【実施例１】
【００３０】
図１は、本実施例による通信制御装置１２０を用いて構成する分散制御システムの例を示す図である。分散制御システムは、通信制御装置１２０、通信装置１２３、ネットワーク１２２、及びネットワーク中継装置１２１から構成される。通信制御装置１２０と通信装置１２３、及び通信装置１２３同士は、ネットワーク１２２とネットワーク中継装置１２１を介して接続され、互いに通信する。
【００３１】
ネットワーク中継装置１２１の例としては、ネットワークスイッチ、ルータ、ゲートウェイ、及びＯｐｅｎＦｌｏｗにおけるＯｐｅｎＦｌｏｗスイッチ等が挙げられる。ネットワーク１２２の例としては、ＩＥＥＥ８０２．３、各種産業用ネットワーク、ＩＥＣ６１７８４、及びＩＥＣ６１１５８等が挙げられる。
【００３２】
図２は、本実施例による通信制御装置１２０のハードウェア構成を示す図である。通信制御装置１２０は、ＣＰＵ１０１、送受信機ＩＣ１０２、メモリ１０８、不揮発性記憶媒体１０９、及びバス１１０を備える。
【００３３】
ＣＰＵ１０１は、不揮発性記憶媒体１０９からプログラムをメモリ１０８に転送し、このプログラムを実行する。実行するプログラムとしては、オペレーティングシステム（以下「ＯＳ」と称す）や、ＯＳ上で動作するアプリケーションプログラムを例示できる。
【００３４】
送受信機ＩＣ１０２は、ネットワーク１２２との通信機能を有する。送受信機ＩＣ１０２は、ＣＰＵ１０１が実行するプログラムから通信要求を受け取り、ネットワーク１２２に対して通信する。送受信機ＩＣ１０２としては、ＩＥＥＥ８０２．３規格のＭＡＣ（Media Access Control）チップ、ＰＨＹ（物理層）チップ、ＭＡＣとＰＨＹの複合チップ、ＦＰＧＡ、ＣＰＬＤ、ＡＳＩＣ、及びゲートアレイといったＩＣを例示できる。なお、送受信機ＩＣ１０２は、ＣＰＵ１０１や、コンピュータ内部の情報経路を制御するチップセットに含まれていてもよい。
【００３５】
メモリ１０８は、ＣＰＵ１０１が動作するための一時的な記憶領域であり、例えば、不揮発性記憶媒体１０９から転送されたＯＳやアプリケーションプログラムを格納する。
【００３６】
不揮発性記憶媒体１０９は、情報の記憶媒体であり、ＯＳ、アプリケーションプログラム、デバイスドライバ、及びＣＰＵ１０１を動作させるためのプログラムを保存し、プログラムの実行結果も保存する。不揮発性記憶媒体１０９としては、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）、及びフラッシュメモリを例示できる。また、不揮発性記憶媒体１０９には、取り外しが容易な外部記憶媒体を用いてもよい。このような外部記憶媒体としては、例えば、フレキシブルディスク（ＦＤ）、ＣＤやＤＶＤなどの光ディスク、ＵＳＢメモリやコンパクトフラッシュ（登録商標）などのフラッシュメモリを利用することができる。
【００３７】
バス１１０は、ＣＰＵ１０１、送受信機ＩＣ１０２、メモリ１０８、及び不揮発性記憶媒体１０９を接続する。バス１１０としては、ＰＣＩバス、ＩＳＡバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、システムバス、及びメモリバスを例示できる。
【００３８】
（通信制御装置の各機能の説明）
図３は、本発明の実施例１による通信制御装置１２０の機能構成を示す図である。通信制御装置１２０は、時刻同期処理部１３０、通信部１３１、受信間隔測定部１３４、及びキューイング発生判定部１３５を備える。
【００３９】
時刻同期処理部１３０は、時刻同期を実行する。実行する時刻同期プロトコルとしては、ＩＥＥＥ１５８８、ＮＴＰ、及びＳＮＴＰが挙げられる。上述したように、本実施例では、時刻同期プロトコルとしてＩＥＥＥ１５８８を実行するものとして説明する。ただし、ＮＴＰ、又はＳＮＴＰを時刻同期プロトコルとして実行してもよい。
【００４０】
時刻同期処理部１３０は、ＣＰＵ１０１が実行するソフトウェアで実現してもよいし、送受信機ＩＣ１０２をＦＰＧＡやＣＰＬＤで構成した場合のハードウェア論理として実現してもよい。又は、ＣＰＵ１０１が実行するソフトウェアと送受信機ＩＣ１０２のハードウェア論理との両方で構成してもよい。この場合には、例えば、パケットの送信時刻と受信時刻の計測、又はパケットフォーマットの生成を、送受信機ＩＣ１０２で処理することができる。
【００４１】
通信部１３１は、送信部１３２と受信部１３３とを備え、時刻同期プロトコルにおける所定のパケットを送受信する。送信部１３２は、時刻同期プロトコルにおける所定のパケットを送信する。受信部１３３は、時刻同期プロトコルにおける所定のパケットを受信する。通信部１３１、送信部１３２、及び受信部１３３は、送受信機ＩＣ１０２による実現を例示できる。
【００４２】
受信間隔測定部１３４は、通信部１３１の受信部１３３で受信したパケットの受信間隔を測定する。受信間隔を測定するために、受信間隔測定部１３４は、受信部１３３がパケットを受信する時刻を計測する機能を有する。パケットの受信間隔は、受信部１３３が続けて受信した任意の２つのパケットの受信時刻の差分を計算することで測定してもよい。ＩＥＥＥ１５８８の規格に従う場合は、受信部１３３が受信した２つの時刻同期用パケット（例えば、Ｄｅｌａｙ＿Ｒｅｑメッセージ）の受信時刻の差分を計算することで、パケットの受信間隔を測定してもよい。
【００４３】
受信間隔測定部１３４は、ＣＰＵ１０１が実行するソフトウェアで実現してもよいし、送受信機ＩＣ１０２でハードウェアとして実現してもよい。又は、ＣＰＵ１０１が実行するソフトウェアと送受信機ＩＣ１０２との組み合わせで実現してもよい。この場合には、例えば、送受信機ＩＣ１０２がパケットの受信時刻を計測し、ＣＰＵ１０１が実行するソフトウェアが受信時刻の差分を求めることで、受信間隔を算出してもよい。この場合、送受信機ＩＣ１０２は、受信間隔を算出するための情報をＣＰＵ１０１に開示する。この情報は、送受信機ＩＣ１０２のレジスタを用いて保持してもよいし、送受信機ＩＣ１０２がメモリ１０８の所定の領域に書き込んでもよい。
【００４４】
キューイング発生判定部１３５は、ネットワーク中継装置１２１内のパケットバッファで時刻同期用パケットがキューイングしたかどうかを判定する。以下、ネットワーク中継装置１２１内のパケットバッファでパケットがキューイングして待ち時間が発生することを「衝突」と称する。
【００４５】
パケットが衝突したかどうかは、受信間隔測定部１３４で計測した実際のパケットの受信間隔Ｔと、パケットの通信処理時間Ｔｐ、フレーム間ギャップＩＦＧ、及びネットワーク中継装置１２１の通信処理時間Ｔｓのうちの１つ又は複数の値を用いて算出した受信間隔Ｔｒとを比較することで、判定する。受信間隔Ｔｒは、パケットサイズと装置構成とから求められる値である。
【００４６】
任意のパケットの通信処理時間Ｔｐは、式（３）で求まる。
Ｔｐ＝Ｓｐ×８［ｂｉｔ／Ｂ］／Ｔｈ          （３）
ここで、Ｓｐはパケットサイズ（単位Ｂ）、Ｔｈは通信スループットである。例えば、６４Ｂのパケットを１００ＭｂｐｓのＩＥＥＥ８０２．３規格によるネットワーク上で送信した場合の通信処理時間Ｔｐは、Ｔｐ＝６４［Ｂ］×８［ｂｉｔ／Ｂ］／１００［Ｍｂｐｓ］＝５．１２［μｓ］となる。
【００４７】
フレーム間ギャップＩＦＧは、ネットワークで規定されるパケット間隔である。ＩＥＥＥ８０２．３規格は、フレームを通信経路上に送信後、後続のフレームを送信するまでの間隔をフレーム間ギャップ（Inter frame Gap、ＩＦＧ）として規定している。フレーム間ギャップは、９６ｂｉｔ時間と規定されており、式（４）でフレーム間ギャップＩＦＧを求めることができる。
ＩＦＧ＝９６［ｂｉｔ］／Ｔｈ          （４）
例えば、１００ＭｂｐｓのＩＥＥＥ８０２．３規格によるネットワークでは、ＩＦＧ＝９６［ｂｉｔ］／１００［Ｍｂｐｓ］＝０．９６［μｓ］である。
【００４８】
ネットワーク中継装置１２１の処理時間Ｔｓは、個々のネットワーク中継装置１２１の処理内容に依存する。ネットワーク中継装置１２１の処理内容としては、宛先ポート情報の抽出や、ネットワーク中継装置１２１内でのパケットの転送処理を例示できる。ネットワーク中継装置１２１の処理時間Ｔｓは、ネットワーク中継装置１２１のデータシートやマニュアルに記載されている値を用いてもよく、ネットワーク中継装置１２１の転送遅延を実験的に計測して求めた値を用いてもよい。
【００４９】
実験的にネットワーク中継装置１２１の転送遅延を計測する方法例としては、ある通信端末に２台の通信ポートを設けて、片方の通信ポートからテストパケットを送信後に、ネットワーク中継装置１２１を経由して、他方の通信ポートで受信させる。この時の通信遅延（例えば、パケットの先端を受信した時刻から、次のパケットの先端を送信した時刻を引く）から、式（３）によるパケットの通信処理時間Ｔｐを引いた値が、ネットワーク中継装置１２１の処理時間Ｔｓとなる。
【００５０】
ネットワーク中継装置１２１の通信処理時間Ｔｓは、パケットサイズに比例する処理部分、着目しているパケットの前後にパケットが存在するか否か、及び管理する通信経路の情報量によって変化する可能性があるため、様々に条件を変えて、推定する必要がある。ネットワーク中継装置１２１の処理時間Ｔｓを推定する方法の一例を、式（５）に示す。
Ｔｓ＝Ａ＋ｋＳｐ＋Ｂ＋ｍＣ        （５）
Ａは、パケット転送時にかかる固定の遅延を表す値であり、ｋは、パケットサイズＳｐに対する比例定数である。Ｂは、ネットワーク中継装置１２１のパケットバッファ中において、着目しているパケットの前にパケットが存在する場合の遅延を表す値である。Ｃは、通信経路の情報量、ｍは通信経路の情報量Ｃに対する比例定数である。
【００５１】
また、通信制御装置１２０と通信装置１２３の間に複数のネットワーク中継装置１２１がある場合、処理時間Ｔｓには、通信制御装置１２０に隣接したネットワーク中継装置１２１のＴｓや、通信経路上のネットワーク中継装置１２１のＴｓの合計値又は最大値を用いることが例示できる。
【００５２】
図４は、パケットがネットワーク中継装置１２１で衝突した場合の動作を示す図である。バッファ１４２は、ネットワーク中継装置１２１中のパケット用のバッファである。バッファ１４２は、Ｆｉｒｓｔ−ｉｎ  Ｆｉｒｓｔ−ｏｕｔ（ＦＩＦＯ）型のデータ構造とする。今、パケット１４０を送信処理中で、パケット１４１がパケット１４０に続いて、バッファ１４２内にキューイングされているとする。この時、パケット１４１は、バッファ１４２内で先行するパケット１４０によって送信が遅延され、待ち時間が発生している。すなわち、パケット１４１は、バッファ１４２内でパケット１４０と衝突している。
【００５３】
この時、図４で示す出力側に通信制御装置１２０が接続しているとする。通信制御装置１２０におけるパケット１４０とパケット１４１の受信間隔を見ることで、パケット１４１がパケット１４０と衝突していることを判定することができる。すなわち、パケット１４１とパケット１４０が衝突していれば、パケット１４０に係わる通信処理時間だけ、通信制御装置１２０がパケット１４１を受信する処理が遅延する。
【００５４】
パケットの先端を受信した時刻で判定すれば、衝突が発生している場合には、パケット１４０とパケット１４１の受信間隔Ｔｒは、式（６）で求められる。
Ｔｒ＝Ｔｐ＋ＩＦＧ＋Ｔｓ        （６）
ここで、パケットの通信処理時間Ｔｐは式（３）、フレーム間ギャップＩＦＧは式（４）、ネットワーク中継装置１２１の処理時間Ｔｓは式（５）で、それぞれ求めることができる。
【００５５】
又は、パケット１４０とパケット１４１の受信間隔Ｔｒは、ネットワーク中継装置１２１の処理時間Ｔｓを省略して、式（７）で求めてもよい。ネットワーク中継装置１２１の処理時間Ｔｓは、ネットワーク中継装置１２１の構成に応じて省略することができる。
Ｔｒ＝Ｔｐ＋ＩＦＧ        （７）
又は、パケットの後端を受信した時刻と次のパケットの先端を受信した時刻とを用いて判定すれば、衝突が発生している場合には、パケット１４０とパケット１４１の受信間隔Ｔｒは、式（８）又は式（９）で求められる。
Ｔｒ＝ＩＦＧ＋Ｔｓ        （８）
Ｔｒ＝ＩＦＧ              （９）
式（９）では、ネットワーク中継装置１２１の処理時間Ｔｓを省略している。
【００５６】
パケット１４１がパケット１４０と衝突していれば、ネットワーク上のパケットの量が多く、パケットの受信間隔が短くなる。衝突していなければ、ネットワーク上のパケットの量が少なくて、パケットの受信間隔が長くなる。このため、パケット１４１がパケット１４０と衝突していなければ、実際のパケットの受信間隔Ｔは、式（６）、式（７）、式（８）、又は式（９）で求めた受信間隔Ｔｒよりも長くなるはずである。従って、マージン（余裕度）をαとして、実際の受信間隔Ｔが式（１０）を満たすとき、パケット１４１は衝突していないと判定する。
Ｔ＞Ｔｒ＋α            （１０）
マージンαは、任意の値（正の数値または零）とすることができ、予め定めておく。
【００５７】
（通信装置の機能構成）
図５は、本実施例による通信装置１２３の機能構成を示す図である。通信装置１２３は、時刻同期処理部１３０と通信部１３１を備える。
【００５８】
時刻同期処理部１３０は、通信制御装置１２０との間で時刻同期プロトコルを実行し、通信装置１２３の時刻を通信制御装置１２０の時刻と同期させる。時刻同期方式としては、ＮＴＰ、ＳＮＴＰ、又はＩＥＥＥ１５８８を用いることができる。ＩＥＥＥ１５８８のようにマスタ−スレーブ構成をとる場合、通信制御装置１２０がマスタとなり、通信装置１２３がスレーブとなる。
【００５９】
スレーブである通信装置１２３の時刻同期処理部１３０は、Ｄｅｌａｙ＿Ｒｅｓｐメッセージの受信後に、マスタとスレーブ間の通信遅延ｔｄと時刻の差分ｔｄｉｆｆを式（１）と式（２）を用いて計算する（図１４のＳ０６８）。そして、時刻同期処理部１３０は、Ｓｙｎｃメッセージ又はＦｏｌｌｏｗ＿Ｕｐメッセージを受信したときに、マスタとスレーブ間の通信遅延ｔｄと時刻の差分ｔｄｉｆｆを用いて、通信装置１２３の時刻を通信制御装置１２０の時刻と同期させる。
【００６０】
通信部１３１は、送信部１３２と受信部１３３とを備え、時刻同期プロトコルにおける所定のパケットを送受信する。送信部１３２と受信部１３３の機能は、通信制御装置１２０の通信部１３１と同じなので、説明を省略する。
【００６１】
図６は、通信制御装置１２０の時刻同期処理の手順を説明する図である。上述したように本実施例では時刻同期プロトコルとしてＩＥＥＥ１５８８を実行するとしているので、図６には、ＩＥＥＥ１５８８プロトコルを実行する場合の通信制御装置１２０の動作を示す。また、本実施例では、上述したように、通信制御装置１２０がＩＥＥＥ１５８８プロトコルにおけるマスタとなる。
【００６２】
はじめに、通信制御装置１２０は、ＩＥＥＥ１５８８のマスタとなる（Ｓ００１）。ＩＥＥＥ１５８８では、Best Master Clock（以下、「ＢＭＣ」と称する）アルゴリズムにしたがって、通信制御装置１２０と各通信装置１２３間で情報（Ａｎｎｏｕｎｃｅメッセージ）をやりとりし、この情報の内容によって、マスタとなるかスレーブとなるかを決定する。本実施例では、通信制御装置１２０がマスタとなるように、予め通信制御装置１２０と各通信装置１２３のパラメータを設定しておく。通信制御装置１２０をマスタとする方法には、例えば、通信制御装置１２０がマスタとなるようにＡｎｎｏｕｎｃｅメッセージをやりとりする情報の優先度を上げる方法がある。
【００６３】
又は、ＢＭＣアルゴリズムにおけるパラメータを特別に設定せずに、通信装置１２３の構成を通信制御装置１２０と同様にしてもよい。この場合、ＢＭＣアルゴリズムを実行した結果、マスタとなった装置を便宜上、通信制御装置１２０とし、スレーブとなった装置を通信装置１２３とする。
【００６４】
次に、時刻同期処理部１３０は、ＩＥＥＥ１５８８のプロトコルに従い、Ｓｙｎｃメッセージをマルチキャストで通信装置１２３に送信する（Ｓ００２）。なお、ＩＥＥＥ１５８８の仕様では、Ｓｙｎｃメッセージの送信後にＦｏｌｌｏｗ＿Ｕｐメッセージを送信するｔｗｏ  ｓｔｅｐモードが定義されている。本実施例では、Ｓｙｎｃメッセージのみを送信するｏｎｅ  ｓｔｅｐモードを想定して説明するが、本実施例の効果は、ｔｗｏ  ｓｔｅｐモードでもｏｎｅ  ｓｔｅｐモードと同様に得られる。
【００６５】
次に、時刻同期処理部１３０は、パケット（Ｄｅｌａｙ＿Ｒｅｑメッセージ）の受信を待機する（Ｓ００３）。
【００６６】
Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、通信制御装置１２０の受信間隔測定部１３４は、直前に受信したパケットとの受信間隔を測定する（Ｓ００４）。なお、Ｄｅｌａｙ＿Ｒｅｑメッセージが最初に受信したパケットである場合は、直前に受信したパケットとの受信間隔を計測できない。このため、この場合には、受信間隔を０とし、キューイング発生判定部１３５は衝突が発生していないと判定する。
【００６７】
次に、通信制御装置１２０のキューイング発生判定部１３５は、パケットの衝突が発生したかを判定する（Ｓ００５）。
【００６８】
Ｓ００５でパケットの衝突が発生したと判定した場合は、通信制御装置１２０の時刻同期処理部１３０は、衝突が発生したパケットの通信相手をメモリ１０８に記憶する（Ｓ００６）。通信相手は、例えば、ＩＰアドレス、又はＩＥＥＥ１５８８上の識別可能な識別子（クロック識別子及びドメインなど）により記憶することができる。
【００６９】
Ｓ００５でパケットの衝突が発生していないと判定した場合は、時刻同期処理部１３０は、Ｄｅｌａｙ＿Ｒｅｓｐメッセージを送信し、時刻同期プロトコルを継続する（Ｓ００７）。
【００７０】
Ｓ００６又はＳ００７の後、時刻同期処理部１３０は、全ての通信相手からパケットを受信したかを判定する（Ｓ００８）。全ての通信相手からパケットを受信していなければ、Ｓ００３でパケット（Ｄｅｌａｙ＿Ｒｅｑメッセージ）の受信を待機する。
【００７１】
Ｓ００８で、全ての通信相手からパケットを受信したと判定すれば、時刻同期処理部１３０は、衝突が発生した通信相手があるか（Ｓ００６で記憶した通信相手があるか）を判定する（Ｓ００９）。なお、途中でパケットロスが発生することを考慮し、パケットを受信せずに予め定めた所定の時間が経過した場合に、Ｓ０１０へ進んでもよい。
【００７２】
Ｓ００９で、パケットが衝突した通信相手があれば、ネットワーク中継装置１２１内でキューイングによる遅延が発生したこととなる。この場合は、通信制御装置１２０は、時刻同期プロトコル手順を再実行する。
【００７３】
この時、最初に送信したＳｙｎｃメッセージと同様にマルチキャストメッセージを送信すると、再び全ての通信装置１２３が返信することとなる。これは、再度ネットワーク中継装置１２１内でパケットが衝突する可能性があるため、望ましくない。従って、パケットが衝突したと判定された通信相手とのみ通信をする必要がある。この通信を実現する方法の例としては、特定の通信相手とのみ通信するユニキャスト通信、別のマルチキャストアドレスを定義して利用する通信、ＶＬＡＮ機能に対応したネットワーク中継装置１２１を用いてＶＬＡＮによるグルーピングを利用する通信が挙げられる。
【００７４】
これらのうちのいずれかの通信方法を利用して、パケットが衝突したと判定された通信相手とのみ通信をするように、時刻同期処理部１３０は、通信相手の宛先を変更する（Ｓ０１０）。それから、時刻同期処理部１３０は、パケットが衝突したと判定された通信相手に再度Ｓｙｎｃメッセージを送信して、時刻同期プロトコルを再実行する（Ｓ００２）。
【００７５】
Ｓ００９で、パケットが衝突した通信相手がなければ、時刻同期処理部１３０は、パケットが衝突した通信相手の記録をクリアする（Ｓ０１１）。
【００７６】
次に、時刻同期処理部１３０は、終了条件を満足したかどうかを判定する（Ｓ０１２）。終了条件は、例えば、ユーザやシステム管理者が明示的に指示したときに終了するものとしてもよいし、システム稼働後の経過時間や時刻同期プロトコルの実行回数を用いて設定してもよい。終了条件を満足していれば、通信制御装置１２０は時刻同期処理を終了する。
【００７７】
終了条件を満足していなければ、通信制御装置１２０は、予め定めた所定の時間だけ待機し（Ｓ０１３）、時刻同期プロトコルを再度実行する（Ｓ００２）。
【００７８】
なお、図６に示した手順では、パケットが衝突したと判定された通信相手に対して時刻同期プロトコルを再実行したが、再実行しなくてもよい。再実行しない場合は、通信制御装置１２０は、通信装置１２３との時刻同期が失敗したとして、所定の処理をとる。このような所定の処理の例としては、予め定めた所定の宛先に時刻同期が失敗したことと対象の通信装置１２３の識別子とを通知すること、及び所定の表示手段（例えば、通信制御装置１２０に接続されたモニタ、通信制御装置１２０に備えられたＬＥＤランプ、又は通信制御装置１２０が発するアラーム音）によって、時刻同期が失敗したことを外部に通知することが挙げられる。
【００７９】
また、Ｓｙｎｃメッセージを送信してから、最初のＤｅｌａｙ＿Ｒｅｑメッセージを受信するまでの時間を計測し、この時間が予め定めた所定時間を超えた場合に最初のＤｅｌａｙ＿Ｒｅｑメッセージのパケットに衝突が発生したと判定し、このＤｅｌａｙ＿Ｒｅｑメッセージの送信相手と再度、時刻同期プロトコルを実行してもよい。所定時間は、他の通信フローを発生させずに、実験的にＤｅｌａｙ＿Ｒｅｑメッセージを受信するまでの時間を計測して定めてもよい。
【００８０】
また、Ｓ０１３における待機時間は、Ｓ００２でＳｙｎｃメッセージを送信するタイミングが所定の周期となるように決定してもよいし、一定値でなく毎回変更してもよい。例えば、Ｓ０１３における待機時間は、キューイング発生判定部１３５が検知したＤｅｌａｙ＿Ｒｅｑメッセージのパケットの衝突の回数に応じて毎回変更してもよい。Ｓ０１０からＳ００２へ遷移した回数が多ければ（すなわち、パケットの衝突の回数が多ければ）、はじめに時刻同期した通信装置１２３は、次に同期するまでの時間が長くなり、同期せずに処理を実行する時間が長くなるため、なるべく早く時刻同期手順を実行した方がよい。Ｓ０１０からＳ００２へ遷移した回数が少なければ、各通信装置１２３は比較的精度が高く同期されていると考えられ、待機時間を長めに設定してもよい。
【００８１】
以上説明したように、本実施例による通信制御装置１２０は、ネットワーク中継装置１２１を用いたネットワーク構成に利用でき、時刻同期プロトコルの応答メッセージの受信間隔によって、ネットワーク中継装置内でのパケットの衝突の有無を判定することができる。
【００８２】
パケットの衝突が発生した場合は、時刻同期手順を再実行し、パケットの衝突が発生しなかった場合は、そのまま時刻同期プロトコルを継続する。ネットワーク中継装置１２１を用いたネットワーク構成においても、時刻同期プロトコルを実現することができる。従って、ネットワークを共有した複数の通信装置間で時刻を同期させたシステムを構築することができる。また、ネットワーク中継装置を介してネットワークを中継し、延長することで、大規模な時刻同期システムを構築することができる。さらに、本実施例によれば、ＩＥＥＥ１５８８規格に準拠する通信装置１２３を用いて時刻同期システムを構成することができ、特殊な構成を有する通信装置１２３を必要としない。
【実施例２】
【００８３】
実施例２では、通信制御装置１２０は、グループ構成部をさらに備え、通信装置１２３の時刻同期用パケットが衝突する確率を低減するために、複数の通信装置１２３をまとめたグループを活用して、時刻同期プロトコルを実行する。実施例２で用いる図面において、実施例１と同一の符号は、特に断りのない限り、実施例１で説明した機能や要素等と同一であるので、説明を省略する。
【００８４】
図７は、本発明の実施例２による通信制御装置１２０の機能構成を示す図である。実施例２による通信制御装置１２０は、図３に示した実施例１による通信制御装置１２０の構成要素を備え、さらにグループ構成部１５０とネットワーク構成情報記憶部１５１とを備える。
【００８５】
グループ構成部１５０は、ネットワーク構成の情報を基に、複数の通信装置１２３をグループにわけ、通信装置１２３のグループに識別子を付する。そして、Ｄｅｌａｙ＿Ｒｅｓｐメッセージの送信回数や各通信装置１２３との時刻同期の成否状況等に応じて、通信装置１２３のグループを時刻同期処理部１３０に通知する。例えば、時刻同期の成否状況として、時刻同期の成功回数や失敗回数、又は最後に時刻同期が成立してからの経過時間を基に、通信装置１２３のグループを時刻同期処理部１３０に通知する。
【００８６】
ネットワーク構成情報記憶部１５１は、グループ構成部１５０が通信装置１２３をグルーピングするために利用するネットワーク構成の情報を記憶する。ネットワーク構成の情報としては、ネットワークを構成する装置数、これらの装置に関する情報（装置を構成する部品の性能等）、ネットワークトポロジ、各装置までのホップ数、及び計測した各装置までの通信遅延を例示できる。
【００８７】
図８は、グループ構成部１５０を備える通信制御装置１２０の時刻同期処理の手順を説明する図である。図６に示した実施例１による通信制御装置１２０の時刻同期処理の手順との違いは、Ｓｙｎｃメッセージの送信対象となるグループを決定する手順Ｓ０２０が加わったことである。また、通信相手の宛先を変更する手順Ｓ０１０がなく、Ｓ００９の後で予め定めた所定の時間だけ待機して（Ｓ０１３）、Ｓ０２０を再度実行する点も異なる。
【００８８】
Ｓ０２０において、時刻同期処理部１３０は、送信対象となる通信装置１２３のグループをグループ構成部１５０に問い合わせる。問い合わせを受けたグループ構成部１５０は、送信対象となるグループの識別子を時刻同期処理部１３０に通知する。グループ構成部１５０は、グループの識別子ではなく、１つ又は複数の通信装置１２３の識別子を通知してもよい。例えば、通信制御装置１２０の通信相手となる通信装置１２３が少数（例えば、１つ）である場合は、少数の通信装置１２３をグルーピングしてグループを定義するよりは、通信装置１２３の識別子を通知する方がよい。
【００８９】
続くＳ００２では、時刻同期処理部１３０は、Ｓ０２０でグループ構成部１５０から通知されたグループの識別子（又は通信装置１２３の識別子）を用いて、送信対象のグループにＳｙｎｃメッセージを送信する。
【００９０】
グループの識別子を表現する方法の例としては、ＩＥＥＥ１５８８で定義されるドメイン、ＩＥＥＥ８０２．１ＱにおけるＶＬＡＮ、又はＩＰ（Internet Protocol）やＩＥＥＥ８０２．３やその他の通信プロトコルで定義されるマルチキャストアドレスを用いる方法が挙げられる。その他、ネットワーク上での通信プロトコルに基づいて複数の通信端末間と通信可能な方法であればよい。
【００９１】
図９は、ＩＥＥＥ１５８８規格のドメインを用いた通信装置１２３の機能構成を示す図である。実施例２における通信装置１２３は、図５に示した実施例１における通信装置１２３の構成要素を備え、さらに同期時刻選択部１６１を備える。ＩＥＥＥ１５８８では、ドメインを用いてプロトコル上の操作やタイムスケールを独立して定義可能である。本実施例では、通信装置１２３内でドメインごとに同期時刻を管理する。このため、同期時刻選択部１６１は、複数の同期時刻１６０から１つを選択する。
【００９２】
同期時刻選択部１６１が同期時刻１６０を選択する基準は、同期時刻１６０の識別子、同期時刻プロトコルの実行状況、又は該当するドメインのＩＥＥＥ１５８８のマスタの属性（時刻精度等）とすることができる。例えば、同期時刻プロトコルの実行頻度の多いドメインの同期時刻１６０、又はマスタの時刻精度が最も高いドメインの同期時刻１６０を選択することができる。
【００９３】
１つの通信装置１２３内にドメインを多重化して通信制御装置１２０と通信する方法は、ネットワーク中継装置１２１の経路制御情報で構成する（例えば、ドメインごとに経路を切り替える）方法でもよいし、通信装置１２３内でＩＥＥＥ１５８８パケット上のドメイン番号を識別する方法でもよい。
【００９４】
ＩＥＥＥ８０２．１ＱにおけるＶＬＡＮを用いてグループを識別する方法を説明する。複数の通信装置１２３のうちの１つ又は複数と通信制御装置１２０とによって構成するＶＬＡＮを、定義するグループの数だけ定義する。
【００９５】
時刻同期処理部１３０は、図８に示したＳ００２において、Ｓ０２０でグループ構成部１５０から通知されたＶＬＡＮの識別子（ＶＩＤ）をＶＬＡＮ用のタグに設定して、Ｓｙｎｃメッセージを送信する。
【００９６】
この場合、ネットワーク中継装置１２１には、ＶＬＡＮ機能に対応したものを用いる。加えて、図８の手順を実行する前に、予め、各ネットワーク中継装置１２１にＶＬＡＮのグルーピングを設定する。
【００９７】
又は、ＩＰやＩＥＥＥ８０２．３におけるマルチキャストアドレスを用いてグループを構成してもよい。この場合には、グループごとにマルチキャストアドレスを定義し、マルチキャストアドレスを実現する上で必要な設定を、ＩＧＭＰ（Internet Group Management Protocol）等を用いて、ネットワーク中継装置１２１、通信装置１２３、及び通信制御装置１２０に対して実施する。
【００９８】
次に、グループ構成部１５０におけるグループ構成方法の例について説明する。グループ構成は、なるべくネットワーク中のネットワーク中継装置１２１内におけるパケットの衝突確率が低くなることが望ましい。
【００９９】
例えば、通信制御装置１２０とネットワーク中継装置１２１間の通信遅延や、通信制御装置１２０と各通信装置１２３間の通信遅延を基準に、グループを構成する方法を用いることができる。事前のシステム構築の準備段階において、通信制御装置１２０と各通信装置１２３間で、１対１でＩＥＥＥ１５８８等の時刻同期プロトコルを実行すれば、既に述べた図１５に示す手順で通信遅延を求めることができる。
【０１００】
又は、ネットワークの構成に基づいてグループを構成してもよい。例えば、通信制御装置１２０と通信装置１２３との間にあるネットワーク中継装置１２１の数や性能、ネットワーク中継装置１２１間の通信性能、ネットワークの通信性能、又はネットワークメディアに基づいて、グループを構成することができる。ネットワーク中継装置１２１間の通信性能の例としては、ＩＥＥＥ８０２．３の通信スループット（１０Ｍｂｐｓ、１００Ｍｂｐｓ、又は１Ｇｂｐｓ等）、有線通信か無線通信かという通信媒体の種類、及び通信規格の種類が挙げられる。
【０１０１】
上記のように、遅延情報やネットワークの構成に基づき、各通信装置１２３をグルーピングするための指標を求めることができる。この指標に基づき、予め定めた所定のグループ数になり、かつ、同じ指標を持つ通信装置１２３が異なるグループにわかれるように、通信装置１２３のグループを構成すればよい。例えば、同じ通信遅延時間を持つ通信装置１２３が異なるグループにわかれるように、通信装置１２３のグループを構成する。
【０１０２】
図１０は、遅延情報を基に、通信装置のグループを構成する例を示す図である。図１０に示す分散制御システムでは、通信制御装置１２０と６個の通信装置１２３ａ〜１２３ｆが、ネットワーク中継装置１２１を介してネットワーク１２２に接続されている。
【０１０３】
各通信装置１２３ａ〜１２３ｆと通信制御装置１２０との通信遅延時間を、各々１ｍｓ、２ｍｓ、２ｍｓ、３ｍｓ、３ｍｓ、及び３ｍｓとする。通信装置を通信装置に付けた符号１２３ａ〜１２３ｆで表し、グループ数を３とすると、通信装置のグループ構成の一例は、（１２３ａ，１２３ｃ，１２３ｄ）、（１２３ｂ、１２３ｅ）、及び（１２３ｆ）である。グループ数を２とすると、グループ構成の一例は、（１２３ａ，１２３ｃ，１２３ｄ）、及び（１２３ｂ，１２３ｅ，１２３ｆ）である。ただし、この場合には、通信装置１２３ｄと通信装置１２３ｅは、返信パケットが衝突する確率が高まり、一方に対して再同期手順を実行することが予想される。
【０１０４】
また、グループ構成の別の方法としては、前回の通信結果やＤｅｌａｙ＿Ｒｅｓｐメッセージの送信履歴に基づいてグループを構成してもよい。例えば、前回の時刻同期手順において時刻同期用パケットが衝突したと判定した通信装置１２３を時系列順に並べた列を作り、この列から通信装置１２３を１つおきに選択する方法がある。又は、前回の時刻同期手順の結果、時刻同期ができなかった残りの通信装置１２３の数が予め定めた所定数以下の場合、この残りの通信装置１２３の中から予め定めた所定数の通信装置１２３を選択してグルーピングする方法でもよい。システムが対応可能であれば、通信装置１２３ごとに同期処理を実行した方が容易だからである。
【０１０５】
又は、図１０を用いて例示した遅延情報に基づいてグループを構成する方法と、前回の時刻同期手順の結果に基づいてグループを構成する方法とを組み合わせてもよい。例えば、図１０を用いて例示したグループ構成方法で構成したグループ候補から、前回の結果に基づいて構成したグループにおける通信装置１２３群を全て含んだグループを、時刻同期処理部１３０に通知してもよい。この方法では、例えば、時刻同期ができなかった通信装置が通信装置１２３ｂ、１２３ｆであり、既に時刻同期が成立した通信装置が通信装置１２３ｅである場合であっても、（１２３ｂ，１２３ｅ，１２３ｆ）のグループを通知することができる。
【０１０６】
通信装置１２３のグループを構成する（通信装置１２３をグルーピングする）タイミングは、時刻同期通信やシステムアプリケーションに関する実稼働時前の準備段階でもよいし、システム稼働中に入手可能な情報に応じて決める動的なタイミングでもよい。
【０１０７】
なお、時刻同期手順以外の通信フローが存在する場合、各パケットの受信間隔が変化する可能性がある。この場合は、時刻同期手順以外の通信フローに関する情報をネットワーク構成情報記憶部１５１で保持することにより、キューイング発生判定部１１５は、ネットワーク中継装置１２１内のパケットの衝突を判定することができる。
【０１０８】
時刻同期プロトコル以外のパケットが通信制御装置１２０宛である場合は、時刻同期プロトコル以外のパケットと時刻同期用のパケットとの受信間隔を求める際には、式（３）と式（５）において、パケットサイズＳｐを時刻同期プロトコル以外のパケットのパケットサイズとする。式（８）と式（９）のように、パケットの後端を受信した時刻と次のパケットの先端を受信した時刻とを用いて受信間隔を求める場合は、データサイズに影響はない。
【０１０９】
図１１は、時刻同期プロトコル以外のパケットが通信制御装置１２０宛ではない場合の通信フローの例を示す図である。図１１に示すように、通信装置１２３ｂから通信制御装置１２０へ時刻同期プロトコルの通信フロー１７０があり、通信装置１２３ｃから通信装置１２３ａへ時刻同期プロトコル以外の通信フロー１７１があるとする。さらに、通信制御装置１２０と通信装置１２３ａは、時刻が同期しているものとする。なお、図１１では、ネットワーク中継装置に１２１ａ、１２１ｂと異なる符号を付けている。
【０１１０】
通信フロー１７０のパケットは、ネットワーク中継装置１２１ａ、１２１ｂにおいて、通信フロー１７１のパケットと衝突する可能性がある。このパケットの衝突によって、通信フロー１７０のパケットがネットワーク中継装置１２１ａ、１２１ｂでどれだけ遅延したかを推定することは、従来技術では難しいが、本実施例では可能である。この遅延の推定は、通信装置１２３ａと通信制御装置１２０を同期させた上で、通信装置１２３ａにおける通信フロー１７１のパケットの受信時刻を取得することにより、可能である。
【０１１１】
通信制御装置１２０は、通信フロー１７０のパケットを受信した際に、通信装置１２３ａに対して、通信フロー１７１のパケットを受信していないかを問い合わせる。受信している場合は、受信時刻を問い合わせる。通信装置１２３ａが通信フロー１７１のパケットを受信しており、このパケットの受信時刻と通信制御装置１２０における時刻同期用パケットの受信時刻との差を式（１０）の受信間隔Ｔとしたときに、この受信間隔Ｔが式（１０）を満たす場合には、衝突が発生したとして時刻同期手順を再実行する。
【０１１２】
このように、パケットを受信するのが異なる装置（通信制御装置１２０と通信装置１２３ａ）であっても、異なる装置間での２つのパケットの受信間隔を求めて、衝突が発生したか否かを推定することが可能である。
【０１１３】
なお、通信制御装置１２０が通信装置１２３ａに問い合わせを実行する条件は、時刻同期用パケットを受信したときであり、受信したときの毎回でもよいし、受信したときのうち前のパケットとの受信間隔が予め定めた所定値よりも大きい場合でもよい。又は、時刻同期用パケット中の時刻情報を基に、問い合わせを実行するか否かを判断してもよい。通信装置１２３と通信制御装置１２０が同期された後であれば、通信制御装置１２０においても同期対象との通信遅延を推定することができ、現在までの平均値よりも推定した値が大きい場合は、通信フロー１７１との衝突が発生したと考えられる。このとき、ネットワーク構成情報記憶部１５１は、通信装置１２３宛の通信フローのパケットサイズ、通信フロー１７１のパケットサイズ、及び通信装置１２３の接続関係等の情報を保持することができる。
【０１１４】
図２２は、時刻同期手順以外の通信フローが通信装置１２３間で発生し、通信制御装置１２０から通信装置１２３へ送信された時刻同期用パケット（Ｓｙｎｃメッセージ）と衝突する場合の通信フローの例を示す図である。図２２では、通信装置１２３ｃから通信装置１２３ｂへの通信フロー１７１と、通信制御装置１２０から通信装置１２３ｂへの時刻同期プロトコルの通信フロー１７０とが存在する。
【０１１５】
このような場合、時刻同期プロトコルの通信フロー１７０のＳｙｎｃメッセージが、ネットワーク中継装置１２１ａ、１２１ｂ内で、通信フロー１７１のパケットと衝突する可能性があり、時刻同期プロトコルの通信フロー１７０は往路と復路での通信遅延が等しくなるとは限らない。このような場合には、例えば、通信装置１２３ｃが、Ｓｙｎｃメッセージを受信した後、予め定めた所定の時間内に、通信フロー１７１のパケットを通信装置１２３ｂへ送信すればよい。このようにすれば、ネットワーク中継装置１２１内でのパケットの衝突を回避することができる。
【０１１６】
また、時刻同期手順以外の通信フローが存在する場合の対策として、後述する実施例６で説明するＴＣ（ＩＥＥＥ１５８８規格で定義されるTransparent Clock）を、他の通信フロー１７１が流れる部分に導入する方法もある。
【０１１７】
以上説明したように、通信制御装置１２０がグループ構成部１５０を備えて通信装置１２３のグループを構成することで、パケットの衝突確率を低減させて、ネットワーク中継装置１２１を用いた構成でも時刻同期を実行することができる。
【実施例３】
【０１１８】
実施例３は、実施例１、２において、通信装置１２３を工夫した実施例である。実施例３で用いる図面において、実施例１、２と同一の符号は、特に断りのない限り、実施例１、２で説明した機能や要素等と同一であるので、説明を省略する。
【０１１９】
図１２は、実施例３における通信装置１２３の機能構成を示す図である。実施例３における通信装置１２３は、図５に示した実施例１における通信装置１２３の構成要素を備え、さらに時刻同期実行制御部１８０を備える。
【０１２０】
時刻同期実行制御部１８０は、時刻同期処理部１３０のパケットの送信タイミングを制御する。送信タイミングは、通信制御装置１２０から通知される情報に基づいて制御してもよいし、時刻同期処理部１３０の動作に基づいて制御してもよい。
【０１２１】
図１３は、通信装置１２３の動作を示すフローチャートである。
【０１２２】
はじめに、Ｓｙｎｃメッセージを受信するまで待機する（Ｓ０３０）。
【０１２３】
Ｓｙｎｃメッセージを受信したら、Ｓｙｎｃメッセージの受信時刻ｔ２を計測して記憶する（Ｓ０３１）。
【０１２４】
次に、時刻同期実行制御部１８０は、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信タイミングを制御する（Ｓ０３２）。具体的には、予め定めた所定時間だけ待機する。
【０１２５】
所定時間の経過後に、Ｄｅｌａｙ＿Ｒｅｑメッセージを通信制御装置１２０に送信する（Ｓ０３３）。
【０１２６】
次に、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信時刻ｔ３を計測して記録する（Ｓ０３４）。
【０１２７】
次に、時刻同期用パケットを受信するまで待機する（Ｓ０３５）。
【０１２８】
時刻同期用パケットを受信したら、受信したパケットがＳｙｎｃメッセージかどうかを判定する（Ｓ０３６）。Ｓｙｎｃメッセージであれば、通信制御装置１２０が時刻同期手順を再実行したと判断して、Ｓ０３１〜Ｓ０３５の手順を実行する。
【０１２９】
Ｓ０３６において、受信した時刻同期用パケットがＳｙｎｃメッセージでなければ、同期処理を実行する（Ｓ０３７）。同期処理手順は、既に述べた図１５に示す通りである。すなわち、図１３に記載していないＳｙｎｃメッセージ又はＦｏｌｌｏｗ＿Ｕｐメッセージの中の時刻ｔ１（マスタの送信時刻）と、Ｄｅｌａｙ＿Ｒｅｓｐメッセージの中の時刻ｔ４（マスタにおけるＤｅｌａｙ＿Ｒｅｑメッセージの受信時刻）と、上記の時刻ｔ２、ｔ３とを用いて、通信制御装置１２０と時刻を同期する。
【０１３０】
本実施例における通信装置１２３は、時刻同期実行制御部１８０により、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信タイミングを制御できること（Ｓ０３２）が特徴である。すなわち、時刻同期実行制御部１８０は、Ｓｙｎｃメッセージを受信してからＤｅｌａｙ＿Ｒｅｑメッセージを送信するまでの待機時間を制御できる。この特徴を用いて、他の通信装置１２３の時刻同期用パケットの衝突確率を低減することができる。
【０１３１】
Ｄｅｌａｙ＿Ｒｅｑメッセージを送信するまでの待機時間は、通信制御装置１２０が通知する情報に基づいて通信装置１２３が決定してもよいし、通信装置１２３が通信制御装置１２０に依らずに決定してもよい。
【０１３２】
通信制御装置１２０は、Ｄｅｌａｙ＿Ｒｅｑメッセージの受信間隔によって、時刻同期実行制御部１８０の待機時間を制御することができる。例えば、通信制御装置１２０は、Ｄｅｌａｙ＿Ｒｅｑメッセージの受信間隔からパケットが衝突したと判定すれば、パケットが衝突した通信装置１２３の待機時間を、予め定めた所定時間だけ長くすることや短くすることができる。
【０１３３】
また、通信制御装置１２０は、ＩＥＥＥ１５８８の仕様によって、時刻同期実行制御部１８０の待機時間を制御することができる。ＩＥＥＥ１５８８では、スレーブのＤｅｌａｙ＿Ｒｅｑメッセージの送信周期を、マスタのＳｙｎｃメッセージの送信周期を基に制御することができる。具体的には、マスタがＳｙｎｃメッセージを送信する所定の周期に１度、スレーブがＤｅｌａｙ＿Ｒｅｑメッセージを送信する。この仕様を活用し、例えば、通信制御装置１２０がパケットが衝突したと判定すれば、パケットが衝突した通信装置１２３のＤｅｌａｙ＿Ｒｅｑメッセージの送信頻度を上げることや下げることで、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信タイミングを制御する。
【０１３４】
また、通信装置１２３は、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信後にＳｙｎｃメッセージを受信すれば、通信制御装置１２０がパケットが衝突したと判断して時刻同期手順を再実行したものと推定できる。従って、Ｄｅｌａｙ＿Ｒｅｑメッセージの送信後にＳｙｎｃメッセージを受信した際に、時刻同期実行制御部１８０の待機時間を予め定めた所定の時間だけ長くすることや短くする方法もある。又は、通信制御装置１２０は、パケットの衝突を検知したことを、明示的に通信装置１２３へ通知してもよい。
【０１３５】
なお、全ての通信装置１２３が本実施例の時刻同期実行制御部１８０を備えている必要はなく、少なくとも一部の通信装置１２３が時刻同期実行制御部１８０を備えていれば、その効果を享受できる。また、この場合、時刻同期実行制御部１８０を備えた通信装置１２３の識別子をネットワーク構成情報記憶部１５１で保持してもよい。通信制御装置１２０は、ネットワーク構成情報記憶部１５１に保持された通信装置１２３の識別子を用いて時刻同期実行制御部１８０を備えた通信装置１２３を判別し、この通信装置１２３の時刻同期実行制御部１８０に対して、待機時間の指令を送信することができる。
【０１３６】
また、通信装置１２３が送信するＤｅｌａｙ＿Ｒｅｑメッセージの中に、通信制御装置１２０が時刻同期を再実行する際に送信するＳｙｎｃメッセージに必要な情報を埋め込むことができる。このような情報の例としては、Ｓｙｎｃメッセージの宛先に係わる通信装置１２３の識別子や、図８のＳ０２０で決定する送信対象のグループについての情報が挙げられる。例えば、通信装置１２３が送信するＤｅｌａｙ＿Ｒｅｑメッセージの中に、この通信装置１２３が属するＩＥＥＥ１５８８仕様のドメイン情報を乗せ、通信制御装置１２０は、この通信装置１２３からのパケットが衝突したと判断すると、Ｄｅｌａｙ＿Ｒｅｑメッセージに乗せられたドメイン情報を利用して、再度、Ｓｙｎｃメッセージを送信することができる。この方法では、通信制御装置１２０は、グループ構成部１５０に送信対象のグループを問い合わせる必要がないため、短時間でＳｙｎｃメッセージを送信することができる。この場合、通信制御装置１２０は、予め通信装置１２３にドメイン情報等のグループ構成情報を通知しておいてもよい。
【０１３７】
通信装置１２３のＤｅｌａｙ＿Ｒｅｑメッセージの送信タイミングは、他の通信装置１２３が制御することもでき、また、自身又は他の通信装置１２３に限らず、専用の装置やネットワーク中継装置１２１が制御することもできる。以下では、説明の便宜上、通信装置１２３の時刻同期用パケットの送信タイミングを制御する装置を、「時刻同期制御装置１９０」と称して説明する。
【０１３８】
図１６は、時刻同期制御装置１９０を用いた分散制御システムの例を示す図である。時刻同期制御装置１９０は、ネットワーク１２２を介して、通信制御装置１２０と通信装置１２３ａ〜１２３ｄに接続されている。
【０１３９】
図１７は、時刻同期制御装置１９０の機能構成を示す図である。時刻同期制御装置１９０は、図３に示した通信部１３１と、図７に示したネットワーク構成情報記憶部１５１と、図１２に示した時刻同期実行制御部１８０とを備える。時刻同期制御装置１９０は、ネットワーク上のパケットを監視し、時刻同期用パケットが衝突して時刻同期手順を実行している通信装置１２３を検知すれば、この通信装置１２３がＤｅｌａｙ＿Ｒｅｑメッセージを送信するのを、予め定めた所定の時間だけ遅らせたり早めたりする。又は、通信制御装置１２０は、時刻同期用パケットが衝突したことを、明示的に時刻同期制御装置１９０に通知してもよい。
【０１４０】
パケットの監視は、通信部１３１の受信部１３３をプロミスキャスモードに設定するなどして、ネットワーク上のパケットを受信することで実行する。時刻同期制御装置１９０は、通信装置１２３がＤｅｌａｙ＿Ｒｅｑメッセージを送信したのを確認した後に、同じ通信装置１２３宛にＳｙｎｃメッセージが送信されたのを確認した場合には、通信制御装置１２０がパケットが衝突したと判断して時刻同期手順を再実行したものと推定し、時刻同期用パケットの衝突が発生したと判定する。
【０１４１】
他の通信装置１２３のＤｅｌａｙ＿Ｒｅｑメッセージの送信タイミングを制御する方法の例には、ＩＥＥＥ８０２．３におけるＰＡＵＳＥフレームを用いて、予め定めた所定の時間だけ、他の通信装置１２３の送信を停止する方法や、専用のプロトコルを用いる方法が挙げられる。専用のプロトコルを用いる場合は、通信相手の情報と、送信タイミングを制御するための時間情報（待機時間、又は送信する時刻等）を少なくとも用いる。又は、専用プロトコルのパケットを受信した時点で送信してもよい。この場合、通信装置１２３は、この専用プロトコルのパケットを受信するまでは送信処理を実行しないように構成してもよい。
【０１４２】
時刻同期制御装置１９０は、全ての通信装置１２３を制御する必要はなく、一部の通信装置１２３を制御してもよい。
【０１４３】
なお、複数の通信装置１２３のＤｅｌａｙ＿Ｒｅｑメッセージの送信タイミングを制御する場合には、通信装置１２３の属性や、現在までの同期手順結果に基づいて制御することもできる。例えば、通信装置１２３のそれぞれに優先度を設定しておき、優先度に応じて通信装置１２３の待機時間を設定することができる。又は、現在までの時刻同期手順におけるパケットの衝突頻度や、通信装置１２３の備えるクロックの精度に応じて、待機時間を調整することができる。パケットの衝突頻度に応じて待機時間を調整する場合には、例えば、衝突していない通信装置１２３ほど、待機時間を短く設定する。クロックの精度に応じて待機時間を調整する場合には、例えば、クロック精度の高い通信装置１２３ほど、待機時間を短く設定する。Ｄｅｌａｙ＿Ｒｅｑメッセージの送信タイミングを制御するのに必要な情報は、時刻同期制御装置１９０内のネットワーク構成情報記憶部１５１で管理され、保持される。
【０１４４】
以上説明したように、本実施例でも、ネットワーク中継装置１２１を用いた分散制御システムにおいて、時刻同期をすることができる。さらに、通信装置１２３でパケットの送信タイミングを制御することにより、パケットが衝突する確率を低減するとともに、分散処理によって通信制御装置１２０の計算や制御に係わる負荷も低減することができる。
【実施例４】
【０１４５】
実施例４は、ネットワーク中継装置１２１において、パケットの処理時間を一定値とすることで、パケットの衝突による往復の通信遅延の差を低減する実施例である。実施例４で用いる図面において、実施例１〜３と同一の符号は、特に断りのない限り、実施例１〜３で説明した機能や要素等と同一であるので、説明を省略する。
【０１４６】
ネットワーク中継装置１２１内で時刻同期用パケットがキューイングされると、時刻同期用パケットは、往路と復路とで遅延時間が異なり、通信遅延に差が発生する。本実施例では、必要に応じて処理遅延を大きくとり、時刻同期用パケットの往復の遅延の差を低減する。ただし、システムの通信性能を向上させるためには、ネットワーク中継装置１２１内での時刻同期用パケットの待機時間を短くすることが望ましい。そこで、本実施例では、通信制御装置１２０等によるパケットの衝突判定結果を用いて、待機時間を短くする。
【０１４７】
図１８は、本実施例におけるネットワーク中継装置１２１の機能構成を示す図である。ネットワーク中継装置１２１は、パケット識別部２００、経路制御部２０１、バッファ２０２、図４に示したバッファ１４２、図１２に示した時刻同期実行制御部１８０、及び計時部２０３を備える。経路制御部２０１には、入力側に３つのバッファ１４２（入力バッファ）が接続され、出力側に３つのバッファ１４２（出力バッファ）が接続される。
【０１４８】
パケット識別部２００は、予め設定されたパケットの特徴に基づいて、パケットの種類を識別する。経路制御部２０１は、パケットに格納された情報から出力先のバッファ１４２を選択して、パケットを転送する。バッファ２０２は、パケットを保持する。
【０１４９】
計時部２０３は、時刻を測定する。パケット識別部２００、経路制御部２０１、及び時刻同期実行制御部１８０は、計時部２０３から時刻を取得することができる。なお、図１８において、計時部２０３と他の部（パケット識別部２００、経路制御部２０１、及び時刻同期実行制御部１８０）との関係を示す線は、図示を省略している。
【０１５０】
本実施例におけるネットワーク中継装置１２１の動作手順について説明する。はじめに、パケット識別部２００に、識別するパケットの特徴を設定する。識別するパケットの特徴は、通信制御装置１２０又は通信装置１２３からネットワーク１２２を経由して設定してもよいし、ネットワーク中継装置１２１に対して直接設定してもよい。ネットワーク中継装置１２１に対して直接設定する場合には、図１８に示さない入力手段が必要である。設定する情報は、通信制御装置１２０と通信装置１２３間の通信フローを識別する情報であり、送信元アドレスと送信先アドレス、ＩＥＥＥ１５８８におけるドメイン、ＶＬＡＮの識別子、及びマルチキャストアドレスが例示できる。
【０１５１】
ネットワーク中継装置１２１のバッファ１４２（入力バッファ）にパケットが入力すると、パケット識別部２００は、このパケットの特徴が予め設定された特徴に一致するかを判別する。一致した場合は、パケット識別部２００は、経路制御部２０１と時刻同期実行制御部１８０に、一致したことと一致した条件（特徴）とを通知する。同時に、パケット識別部２００は、バッファ１４２にパケットが入力した時刻Ｔｉｎを計時部２０３から取得し、時刻Ｔｉｎを経路制御部２０１に通知する。
【０１５２】
経路制御部２０１は、パケット識別部２００からの通知を受信すると、パケットをバッファ１４２（出力バッファ）に転送せずに、バッファ２０２に転送する。バッファ２０２へ転送したパケットをパケット１４１ａとする。また、パケット１４１ａを転送すべき出力バッファをバッファ１４２ａとする。
【０１５３】
パケット１４１ａをバッファ２０２で保持する時間は、他のパケットによる遅延時間を考慮して決定する必要がある。他のパケットによる遅延時間とは、バッファ１４２に先行して存在するパケットと、パケット１４１ａ受信後にバッファ１４２へ転送したパケットとの通信処理時間である。
【０１５４】
パケットをバッファ２０２に転送後、経路制御部２０１は、バッファ１４２ａに存在するパケットの数とデータサイズ、及びパケット１４１ａ受信後にバッファ１４２ａへ転送したパケットの数とデータサイズを、時刻同期実行制御部１８０へ通知する。
【０１５５】
時刻同期実行制御部１８０は、これらの通知された情報を基に、これらのパケットによる通信処理時間ｄを計算し、目標出力時刻Ｔｏｕｔまでの残り時間Ｒから通信処理時間ｄを減算して、待機時間Ｔｗを算出する。すなわち、待機時間Ｔｗは、式（１１）で求めることができる。目標出力時刻Ｔｏｕｔは、時刻Ｔｉｎに予め定めた滞留時間αを加えることで求められる。滞留時間αは、固定した値としてもよいし、パケットの往復ごとに変えてもよい。
Ｔｗ＝Ｒ−ｄ          （１１）
残り時間Ｒは、現在時刻から目標出力時刻Ｔｏｕｔまでの時間（Ｒ＝Ｔｏｕｔ−（現在時刻））である。現在時刻は、計時部２０３から取得可能である。通信処理時間ｄは、例えば式（３）で求めることができる。
【０１５６】
時刻同期実行制御部１８０は、算出した待機時間Ｔｗを経路制御部２０１に通知する。なお、後続のパケットを受信するたびに通信処理時間ｄが変わるため、その都度、時刻同期実行制御部１８０は、待機時間Ｔｗを計算し、経路制御部２０１に通知する。
【０１５７】
経路制御部２０１は、現在時刻から待機時間Ｔｗが経過したら、パケット１４１ａをバッファ１４２ａへ転送する。
【０１５８】
ここで考慮すべきことは、ある後続のパケットをバッファ１４２ａへ転送する場合に、パケット１４１ａを保持すべき残り時間を経過してしまう可能性があることである。例えば、パケット１４１ａをあと５０μｓ保持する必要があり、後続のパケットの処理時間が６０μｓであるような場合である。このような場合には、後続のパケットをバッファ１４２ａへ転送すると、ネットワーク中継装置１２１での滞留時間αを一定にできない。このため、このような後続のパケットに対しては、バッファ１４２ａへ転送せずに、パケット１４１ａを転送するまで保持（ブロック）することを、対処法として例示できる。
【０１５９】
その後、経路制御部２０１は、時刻同期実行制御部１８０から通知された待機時間Ｔｗだけ、パケットをバッファ２０２に保持し、待機時間Ｔｗの経過後に、出力先にしたがってパケットをバッファ１４２に出力する。経路制御部２０１は、パケットをバッファ１４２に出力する時間を決定するために、計時部２０３を用いる。
【０１６０】
経路制御部２０１がパケットを出力する時間を決定してバッファ１４２に出力する方法の例としては、計時部２０３から取得した時刻Ｔｉｎに上述の待機時間を加えて時刻Ｔｏｕｔを求め、時刻Ｔｏｕｔに計時部２０３から経路制御部２０１に待機時間Ｔｗが経過したことを通知する方法がある。又は、待機時間Ｔｗが経過するまでの時刻を、経路制御部２０１が計時部２０３から予め定めた所定の間隔で取得してもよい。
【０１６１】
滞留時間αの時刻同期実行制御部１８０への設定方法の例としては、パケットの衝突を検知した通信制御装置１２０からネットワーク１２２を介して、待機時間Ｔｗを時刻同期実行制御部１８０に通知する方法が挙げられる。又は、時刻同期実行制御部１８０がネットワーク中継装置１２１内を流れるパケットを監視し、Ｄｅｌａｙ＿Ｒｅｑメッセージが流れた後にＳｙｎｃメッセージが逆向きに流れた通信の組み合わせに対して、予め定めた所定の時間を長く又は短くすることで、設定する方法もある。
【０１６２】
なお、ネットワーク中継装置１２１は、滞留時間α又は待機時間Ｔｗを外部から取得できるように構成してもよい。滞留時間α又は待機時間Ｔｗは、ネットワーク中継装置１２１に何らかの接続手段を設けることで取得してもよい。また、ネットワーク中継装置１２１は、ネットワーク１２２を用いて通信により、滞留時間α又は待機時間Ｔｗを外部へ伝送してもよい。例えば、所定のパケットフォーマットを認識すると、そのパケット内に滞留時間α又は待機時間Ｔｗを格納する。システム管理者は、これらの情報を用いて、滞留時間α又は待機時間Ｔｗが特に長い場合に、システムへの影響を考慮し、システムやネットワークの構成を変更することができる。
【０１６３】
通信フローの識別には、パケット識別部２００を用いることができる。
【０１６４】
以上説明したように、本実施例によれば、ネットワーク中継装置１２１での衝突による遅延差を低減させて時刻同期が可能な分散制御システムを構築することができる。また、ネットワーク中継装置１２１の待機時間を最適化することで、ネットワーク全体の通信性能の低下を低減することができる。
【実施例５】
【０１６５】
実施例５は、通信制御装置１２０と通信装置１２３間のネットワーク中継装置１２１を通る経路が複数存在するとき、通信経路を変更することでパケットの衝突の確率を低減する方法を示す実施例である。実施例５で用いる図面において、実施例１〜４と同一の符号は、特に断りのない限り、実施例１〜４で説明した機能や要素等と同一であるので、説明を省略する。
【０１６６】
図１９は、本実施例における分散制御システムの構成を示す図である。図１９の分散制御システムでは、通信制御装置１２０と、２台の通信装置１２３ａ、１２３ｂと、４台のネットワーク中継装置１２１が、ネットワーク１２２を介して接続されている。
【０１６７】
通信装置１２３ａと通信制御装置１２０との通信経路は、経路２１０ａと経路２１０ｂの２つである。また、通信装置１２３ｂと通信制御装置１２０との通信経路も、経路２１０ａと経路２１０ｂの２つである。このとき、通信装置１２３ａと通信装置１２３ｂで、通信経路２１０ａと通信経路２１０ｂを使いわければ、ネットワーク中継装置１２１内でパケットが衝突する確率を低減することができる。
【０１６８】
これは、静的ルーティング、専用のルーティングプロトコル、又はＭＰＬＳ（Multi-Protocol Label Switching）等を用いることで実現できる。また、経路ごとにグループ識別子（マルチキャストアドレス等）を使いわけてもよい。又は、ＯｐｅｎＦｌｏｗプロトコルにおけるコントローラにおいて、宛先を区別して転送先ポートを使いわけるルールを設定して実現してもよい。
【０１６９】
また、ＳｙｎｃメッセージとＤｅｌａｙ＿Ｒｅｑメッセージとで、すなわち往路と復路とで、経路を変更してもよい。例えば、通信制御装置１２０から通信装置１２３ａにＳｙｎｃメッセージを送信するときは通信経路２１０ａを利用し、通信装置１２３ａから通信制御装置１２０にＤｅｌａｙ＿Ｒｅｑメッセージを送信するときは、通信経路２１０ｂを利用してもよい。このとき、通信経路２１０ａと通信経路２１０ｂでの通信遅延は、試験的に求める等により取得し、同期計算時に利用する。
【０１７０】
通信経路２１０ａと通信経路２１０ｂは、通信制御装置１２０のパケットの衝突の判定結果に基づいて、使いわけることができる。例えば、パケットが衝突したと通信制御装置１２０が判定した場合には、対象の通信装置１２３ａを異なるグループとして、別の通信経路を利用するようにネットワークを設定することができる。
【０１７１】
本実施例には、ネットワーク中継装置１２１を用いて、時刻同期システムを構築できるという効果がある。
【実施例６】
【０１７２】
実施例６は、ＩＥＥＥ１５８８規格で定義されるTransparent Clock（以下、「ＴＣ」と略記する）と、ＴＣではないネットワーク中継装置１２１を混載してネットワークを構成する実施例である。実施例６で用いる図面において、実施例１〜５と同一の符号は、特に断りのない限り、実施例１〜５で説明した機能や要素等と同一であるので、説明を省略する。
【０１７３】
ＴＣは、ネットワーク中継装置１２１中の処理遅延を、各パケットに格納する。このパケットを受け取った通信装置１２３は、この処理遅延についての情報を用いて、往復の遅延の差を求めることができる。
【０１７４】
図２０は、本実施例における分散制御システムの構成を示す図である。図２０の分散制御システムでは、通信制御装置１２０と、３台の通信装置１２３ａ〜１２３ｃと、ネットワーク中継装置１２１と、ＴＣ２２０が、ネットワーク１２２を介して接続されている。
【０１７５】
通信装置１２３ａ〜１２３ｃのそれぞれからのＤｅｌａｙ＿Ｒｅｑメッセージの送信に着目すると、ＴＣ２２０では通信フロー２２１ｂと通信フロー２２１ｃのパケットが衝突する可能性があり、ネットワーク中継装置１２１では通信フロー２２１ａ、通信フロー２２１ｂ、及び通信フロー２２１ｃが衝突する可能性がある。
【０１７６】
ただし、ＴＣ２２０内でパケットが衝突しても、衝突によって生じた遅延のゆらぎは、ＴＣの機能により補正することができる。一方で、ネットワーク中継装置１２１では、遅延のゆらぎの補正が困難である。
【０１７７】
本実施例では、通信制御装置１２０が、通信フロー２２１ａ〜２２１ｃのパケットの受信間隔を測定し、式（１０）によってパケットが衝突したかどうかを判定する。
【０１７８】
このとき、通信フロー２２１ａの時刻同期用パケットを受信した後に、通信フロー２２１ｂと通信フロー２２１ｃの一方又は両方のパケットを受信し、これらのパケットの受信間隔によって、パケットが衝突したと判定した場合は、通信フロー２２１ａのパケットと衝突した通信フローのパケットを送信した通信装置に対して、時刻同期処理を再実行する。
【０１７９】
同様に、通信フロー２２１ｂと通信フロー２２１ｃの一方又は両方のパケットを受信した後に、通信フロー２２１ａのパケットを受信し、通信フロー２２１ａのパケットが衝突したと判定した場合も、時刻同期処理を再実行する。これは、ネットワーク中継装置１２１内で、通信フロー２２１ａのパケットと、通信フロー２２１ｂと通信フロー２２１ｃの少なくとも一方のパケットとが衝突したと推定されるためである。
【０１８０】
一方で、通信フロー２２１ｂのパケットと通信フロー２２１ｃのパケットとが衝突した場合は、ＴＣ２２０の機能により、同期処理を再実行する必要がない。ＴＣ２２０の機能によってＴＣ２２０内での通信遅延を取得できるため、これらのパケットが衝突したとしても、ＴＣ２２０内の通信遅延を基に補正が可能である。通信フロー２２１ｂと通信フロー２２１ｃにおける時刻同期用パケットは、パケット内にＴＣ２２０内の通信遅延が格納される。
【０１８１】
図２４は、マスタとスレーブとの間のメッセージのやりとりを示す図であり、図１５と同じ図である。ただし、図２４には、往路（Ｓｙｎｃメッセージ）のパケットに格納された通信遅延Ｔｔｃｇと、復路（Ｄｅｌａｙ＿Ｒｅｑメッセージ）のパケットに格納された通信遅延Ｔｔｃｒと、片道の通信遅延ｔｄとが示されている。
【０１８２】
片道の通信遅延ｔｄと時刻の差分ｔｄｉｆｆは、図１４、図１５にも示した時刻ｔ１、ｔ２、ｔ３、ｔ４を用いて、式（１２）と式（１３）で表わされる。
ｔｄ＝（（ｔ４−ｔ１）−（ｔ３−ｔ２）−Ｔｔｃｒ−Ｔｔｃｇ）／２    （１２）
ｔｄｉｆｆ
＝（（ｔ４−（Ｔｔｃｒ−Ｔｔｃｇ）＋ｔ１）―（ｔ３＋ｔ２））／２  （１３）
このとき、通信遅延ｔｄは、ＴＣ２２０の通信遅延を除いた値となる。
【０１８３】
Ｓｙｎｃメッセージを送信する際には、マルチキャストで衝突がないとすれば、（Ｔｔｃｒ−Ｔｔｃｇ）がＴＣ２２０内での衝突によって生じた遅延とすることができる。
【０１８４】
このとき、ネットワーク構成情報記憶部１５１は、ＴＣ２２０、ネットワーク中継装置１２１、及び通信装置１２３の接続順等のネットワーク構成情報を保持して、上記したパケットの衝突の判定に利用する。
【０１８５】
図２３は、時刻同期に関係のない通信フローが存在する場合の通信フローの例を示す図である。図２３には、２台のＴＣ（ＴＣ２２０ａとＴＣ２２０ｂ）が存在する。図２３に示すように、時刻同期用パケットの通信フロー１７０ａ及び１７０ｂが、通信装置１２３ａ及び１２３ｂから通信制御装置１２０へそれぞれ存在する。さらに、時刻同期に関係のない通信フロー１７１が、通信装置１２３ｃから通信装置１２３ｄに存在する。
【０１８６】
通信フロー１７１のパケットは、ＴＣ２２０ａ、２２０ｂ内で、時刻同期フロー１７０ａ又は１７０ｂのパケットと衝突する可能性がある。通信制御装置１２０からは、通信フロー１７１が時刻同期フロー１７０ａ又は１７０ｂに与える影響を検出できないため、通常は時刻同期が困難となる。
【０１８７】
しかし、図２３に示すように、時刻同期に関係のない通信フローが流入する部分にＴＣ２２０ａとＴＣ２２０ｂを設けることで、ＴＣ２２０ａとＴＣ２２０ｂ内での遅延情報を時刻同期用パケットに格納することができる。このため、ＴＣ２２０内での衝突を考慮する必要がなく、ネットワーク中継装置１２１内での衝突のみを、上記の実施例で述べた方法によって判定すればよい。
【０１８８】
従って、通信制御装置１２０は、通信フロー１７０ａ、１７０ｂの時刻同期用パケットの受信間隔を測定し、衝突していないと判定した場合は、時刻同期プロトコルを継続すればよい。通信装置１２３ａ、１２３ｂは、式（１２）と式（１３）を用いて、通信制御装置１２０と同期すればよい。
【０１８９】
本実施例によれば、ＴＣを用いることにより、時刻同期処理の再実行によるオーバーヘッドを低減することができる。さらに、システムには部分的にＴＣを導入すればよいので、専用装置であるＴＣの導入数は少なくてよいという効果もある。
【実施例７】
【０１９０】
実施例７は、ＩＥＥＥ１５８８のマスタとなる通信制御装置１２０を変更することにより、衝突確率を低減する実施例である。ＩＥＥＥ１５８８では、分散制御システムを構成する通信制御装置のうち１つがマスタとなる（図６のＳ００１を参照）が、本実施例では、マスタとなる通信制御装置を他の通信制御装置に変更する。実施例７で用いる図面において、実施例１〜６と同一の符号は、特に断りのない限り、実施例１〜６で説明した機能や要素等と同一であるので、説明を省略する。
【０１９１】
図２１は、本実施例における分散制御システムの構成を示す図である。図２１に示すシステムでは、時刻同期プロトコルを実行する装置として、通信制御装置１２０ａ〜１２０ｅを備える。通信制御装置１２０ａ〜１２０ｅは、いずれも図３又は図７に示した構成を持ち、ネットワーク中継装置１２１ａ、１２１ｂ、１２１ｃを介して接続されている。本実施例では、ＩＥＥＥ１５８８におけるマスタの役割を通信制御装置１２０ａ〜１２０ｅ間で移動させる。すなわち、マスタである通信制御装置をスレーブにし、スレーブである通信制御装置のうちの１つをマスタにする。なお、分散制御システムに接続されている装置の全てが通信制御装置１２０である必要はない（すなわち、分散制御システムに接続されている装置の全てがマスタの機能を備える必要はない）。
【０１９２】
以下、マスタとなる通信制御装置を他の通信制御装置に変更する手順を説明する。
【０１９３】
はじめに通信制御装置１２０ｃがマスタであるとし、図６の手順で同期処理を実行する。通信制御装置１２０ａ、１２０ｂ、１２０ｄ、及び１２０ｅは、経由するネットワーク中継装置の数（マスタである通信制御装置１２０ｃとの間にあるネットワーク中継装置の数）が、いずれも２である。このため、ネットワーク中継装置１２１ａ〜１２１ｃの処理性能や通信経路の条件が同程度であれば、全ての返信タイミングが重なるとネットワーク中継装置１２１ｂで通信制御装置１２０ａ、１２０ｂ、１２０ｄ、１２０ｅからの４つのパケットが衝突する可能性がある。
【０１９４】
本実施例では、通信制御装置１２０ｃがこの衝突を検知した際に、マスタを通信制御装置１２０ａに変更する。マスタが通信制御装置１２０ａになれば、スレーブとなる残りの通信制御装置１２０ｂ〜１２０ｅにおいて、経由するネットワーク中継装置の数（マスタである通信制御装置１２０ａとの間にあるネットワーク中継装置の数）が分散し、パケットの衝突確率を低減することができる。
【０１９５】
マスタを変更する方法は、少なくとも変更後の通信制御装置１２０を識別する専用のプロトコルを用いる方法でもよいし、ＩＥＥＥ１５８８のBest Master Clock（以下、「ＢＭＣ」と称する）アルゴリズムにおいて、マスタを決めるために判定される指標値を通信制御装置１２０ａ〜１２０ｅ間で意図的に調整する方法でもよい。ＢＭＣでは、ユーザが定義可能なパラメータがあり、これを利用することができる。このユーザ定義可能なパラメータを、専用のプロトコルを用いて、通信制御装置１２０ａ〜１２０ｅ間で交換する方法を用いることもできる。
【０１９６】
新しいマスタの選択方法は、例えば、通信制御装置１２０ａ〜１２０ｅにおいて、指標値を設定して算出し、この指標値が最も高い通信制御装置を選ぶ方法を挙げることができる。指標値の算出方法には、通信制御装置１２０ａ〜１２０ｅ間のネットワーク中継装置の数、通信遅延、通信帯域、又はクロックの精度を用いることを例示できる。例えば、通信制御装置１２０ａ〜１２０ｅ間のネットワーク中継装置の数の分散を求め、分散が最も大きい通信制御装置をマスタに選択する方法を用いることができる。
【０１９７】
また、ＳＴＰ（Spanning Tree Protocol）、ＲＳＴＰ（Rapid Spanning Tree Protocol）、又は通信経路の障害等によってトポロジが変化した場合に、マスタを変更してもよい。
【０１９８】
本実施例によれば、マスタを変更することにより、時刻同期を再実行するオーバーヘッドを低減することができ、ネットワーク中継装置を用いた分散制御システムで時刻同期を実行することができる。
【０１９９】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０２００】
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル、測定情報、算出情報等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid State Drive）等の記録装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に置くことができる。
【０２０１】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【符号の説明】
【０２０２】
１０１…ＣＰＵ、１０２…送受信機ＩＣ、１０８…メモリ、１０９…不揮発性記憶媒体、１１０…バス、１２０、１２０ａ〜１２０ｅ…通信制御装置、１２１、１２１ａ、１２１ｂ、１２１ｃ…ネットワーク中継装置、１２２…ネットワーク、１２３、１２３ａ〜１２３ｆ…通信装置、１３０…時刻同期処理部、１３１…通信部、１３２…送信部、１３３…受信部、１３４…受信間隔測定部、１３５…キューイング発生判定部、１４０、１４１…パケット、１４２…バッファ、１５０…グループ構成部、１５１…ネットワーク構成情報記憶部、１６０…同期時刻、１６１…同期時刻選択部、１７０、１７０ａ、１７０ｂ、１７１…通信フロー、１８０…時刻同期実行制御部、１９０…時刻同期制御装置、２００…パケット識別部、２０１…経路制御部、２０２…バッファ、２０３…計時部、２１０ａ、２１０ｂ…通信経路、２２０、２２０ａ、２２０ｂ…ＴＣ（Transparent Clock）、２２１ａ、２２１ｂ、２２１ｃ…通信フロー。
【図１】
2014078781.tif 000003
【図２】
2014078781.tif 000004
【図３】
2014078781.tif 000005
【図４】
2014078781.tif 000006
【図５】
2014078781.tif 000007
【図６】
2014078781.tif 000008
【図７】
2014078781.tif 000009
【図８】
2014078781.tif 000010
【図９】
2014078781.tif 000011
【図１０】
2014078781.tif 000012
【図１１】
2014078781.tif 000013
【図１２】
2014078781.tif 000014
【図１３】
2014078781.tif 000015
【図１４】
2014078781.tif 000016
【図１５】
2014078781.tif 000017
【図１６】
2014078781.tif 000018
【図１７】
2014078781.tif 000019
【図１８】
2014078781.tif 000020
【図１９】
2014078781.tif 000021
【図２０】
2014078781.tif 000022
【図２１】
2014078781.tif 000023
【図２２】
2014078781.tif 000024
【図２３】
2014078781.tif 000025
【図２４】
2014078781.tif 000026