(57)【要約】      （修正有）【課題】誤差の大きいＯｆｆｓｅｔ値で時刻を補正してしまわず、スレーブノードの時刻同期の精度低下を抑えるえることができる技術を提供する。【解決手段】スレーブノード２０は、スレーブノードにおける時刻を、マスターノード１０における時刻に同期させるための処理である、時刻同期処理に使用される制御メッセージを、複数のマスターノードとの間で送受信する通信部２０１と、通信部が制御メッセージを送受信した際に取得される時刻情報に基づいて自装置の時刻を補正する時刻補正部２０６と、を備える。【選択図】図２
2015188159.tif 000002
【特許請求の範囲】
【請求項１】
スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理に使用される制御メッセージを複数のマスターノードとの間で送受信する通信部と、
前記通信部が前記制御メッセージを送受信した際に取得される時刻情報に基づいて自装置の時刻を補正する時刻補正部と、
を備えるスレーブノード。
【請求項２】
取得される時刻情報に基づいて各マスターノードの時刻と自装置の時刻との時刻差の統計値を算出する算出部をさらに備え、
前記時刻補正部は、算出された前記統計値に基づいて自装置の時刻を補正する、請求項１に記載のスレーブノード。
【請求項３】
前記算出部は、所定の期間の間に取得された前記時刻情報に基づいて、前記所定の期間におけるマスターノードの時刻と自装置の時刻との時刻差の統計値である第１の統計値を前記マスターノード毎に算出し、算出した前記マスターノード毎の第１の統計値に基づいて、各マスターノードの時刻と自装置の時刻との時刻差の統計値である第２の統計値を算出する、請求項２に記載のスレーブノード。
【請求項４】
前記通信部は、前記時刻同期処理時に各マスターノードの時刻源の品質を表す値を含む前記制御メッセージをさらに受信し、
前記算出部は、取得された前記時刻情報に基づいてマスターノードの時刻と自装置の時刻との時刻差を前記マスターノード毎に算出し、算出した前記マスターノード毎の前記時刻差に対し、受信された前記制御メッセージに含まれる前記時刻源の品質を表す値で重み付けした後に、重み付けされた前記マスターノード毎の前記時刻差に基づいて前記統計値を算出する、請求項２に記載のスレーブノード。
【請求項５】
前記通信部は、前記時刻同期処理時に各マスターノードの時刻源の品質を表す値を含む前記制御メッセージをさらに受信し、
前記算出部は、所定の期間の間に取得された前記時刻情報に基づいて、前記所定の期間におけるマスターノードの時刻と自装置の時刻との時刻差の統計値である第１の統計値を前記マスターノード毎に算出し、算出した前記マスターノード毎の第１の統計値に対し、受信された前記制御メッセージに含まれる前記時刻源の品質を表す値で重み付けした後に、重み付けされた前記第１の統計値に基づいて、各マスターノードの時刻と自装置の時刻との時刻差の統計値である第２の統計値を算出する、請求項２に記載のスレーブノード。
【請求項６】
前記算出部は、所定の期間の間に取得された前記時刻情報に基づいて、前記所定の期間におけるマスターノードの時刻と自装置の時刻との時刻差の統計値である第１の統計値を前記マスターノード毎に算出し、算出した前記マスターノード毎の第１の統計値に対し、所定の期間における前記マスターノード毎の時刻差の分散値で重み付けした後に、重み付けされた前記第１の統計値に基づいて、各マスターノードの時刻と自装置の時刻との時刻差の統計値である第２の統計値を算出する、請求項２に記載のスレーブノード。
【請求項７】
スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理に使用される制御メッセージを複数のマスターノードとの間で送受信する通信ステップと、
前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報に基づいて前記スレーブノードの時刻を補正する時刻補正ステップと、
を有する時刻同期方法。
【請求項８】
スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理に使用される制御メッセージを複数のマスターノードとの間で送受信する通信ステップと、
前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報に基づいて前記スレーブノードの時刻を補正する時刻補正ステップと、
をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻同期の技術に関する。
【背景技術】
【０００２】
近年、複数の基地局間で連係した動作を行うため、高精度な時刻同期が求められている。そこで、ネットワーク接続された複数の機器の時刻をマイクロ秒以下の精度で同期させる技術として、ＩＥＥＥ１５８８で定義されたＰＴＰ（Precision Time Protocol）が知られている（例えば、非特許文献１参照）。ＰＴＰでは、マスターノードとスレーブノードとの間で時刻情報を含むメッセージが定期的に交換される。スレーブノードは、マスターノード及びスレーブノードにおけるメッセージが送受信された時刻情報から、マスターノードに対するスレーブノードの時刻のずれ（Ｏｆｆｓｅｔ）を計算する。そして、スレーブノードは、計算したＯｆｆｓｅｔに基づいてスレーブノードの時刻を補正して、スレーブノードの時刻をマスターノードの時刻に同期させる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems，” IEEE Standard 1588-2008.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述したＰＴＰでは、マスターノードからスレーブノードへの遅延時間と、スレーブノードからマスターノードへの遅延時間とが等しいことを前提として時刻同期が行われる。しかしながら、一般的なネットワークでは、マスターノードとスレーブノードとがルータ等の中継装置を介して接続されることが多いため、中継装置内のキューイング遅延等の影響によりマスターノードとスレーブノードとの間の遅延時間に揺らぎが生じてしまう。このような場合、スレーブノードの時刻を補正する際に求められるＯｆｆｓｅｔの値には誤差が含まれる。つまり、中継装置内のキューイング遅延等の影響が大きい場合、求められるＯｆｆｓｅｔの値に含まれる誤差も大きくなってしまう。したがって、スレーブノードは、誤差の大きいＯｆｆｓｅｔの値でスレーブノードの時刻を補正してしまうおそれがあった。このような問題が発生すると、スレーブノードの時刻同期の精度が劣化してしまう。このような問題は、ＰＴＰに限らず、時刻同期を行う全ての通信プロトコルに共通する問題である。
【０００５】
上記事情に鑑み、本発明は、スレーブノードの時刻同期の精度低下を抑えることができる技術の提供を目的としている。
【課題を解決するための手段】
【０００６】
本発明の一態様は、スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理に使用される制御メッセージを複数のマスターノードとの間で送受信する通信部と、前記通信部が前記制御メッセージを送受信した際に取得される時刻情報に基づいて自装置の時刻を補正する時刻補正部と、を備えるスレーブノードである。
【０００７】
本発明の一態様は、上記のスレーブノードであって、取得される時刻情報に基づいて各マスターノードの時刻と自装置の時刻との時刻差の統計値を算出する算出部をさらに備え、前記時刻補正部は、算出された前記統計値に基づいて自装置の時刻を補正する。
【０００８】
本発明の一態様は、上記のスレーブノードであって、前記算出部は、所定の期間の間に取得された前記時刻情報に基づいて、前記所定の期間におけるマスターノードの時刻と自装置の時刻との時刻差の統計値である第１の統計値を前記マスターノード毎に算出し、算出した前記マスターノード毎の第１の統計値に基づいて、各マスターノードの時刻と自装置の時刻との時刻差の統計値である第２の統計値を算出する。
【０００９】
本発明の一態様は、上記のスレーブノードであって、前記通信部は、前記時刻同期処理時に各マスターノードの時刻源の品質を表す値を含む前記制御メッセージをさらに受信し、前記算出部は、取得された前記時刻情報に基づいてマスターノードの時刻と自装置の時刻との時刻差を前記マスターノード毎に算出し、算出した前記マスターノード毎の前記時刻差に対し、受信された前記制御メッセージに含まれる前記時刻源の品質を表す値で重み付けした後に、重み付けされた前記マスターノード毎の前記時刻差に基づいて前記統計値を算出する。
【００１０】
本発明の一態様は、上記のスレーブノードであって、前記通信部は、前記時刻同期処理時に各マスターノードの時刻源の品質を表す値を含む前記制御メッセージをさらに受信し、前記算出部は、所定の期間の間に取得された前記時刻情報に基づいて、前記所定の期間におけるマスターノードの時刻と自装置の時刻との時刻差の統計値である第１の統計値を前記マスターノード毎に算出し、算出した前記マスターノード毎の第１の統計値に対し、受信された前記制御メッセージに含まれる前記時刻源の品質を表す値で重み付けした後に、重み付けされた前記第１の統計値に基づいて、各マスターノードの時刻と自装置の時刻との時刻差の統計値である第２の統計値を算出する。
【００１１】
本発明の一態様は、上記のスレーブノードであって、前記算出部は、所定の期間の間に取得された前記時刻情報に基づいて、前記所定の期間におけるマスターノードの時刻と自装置の時刻との時刻差の統計値である第１の統計値を前記マスターノード毎に算出し、算出した前記マスターノード毎の第１の統計値に対し、所定の期間における前記マスターノード毎の時刻差の分散値で重み付けした後に、重み付けされた前記第１の統計値に基づいて、各マスターノードの時刻と自装置の時刻との時刻差の統計値である第２の統計値を算出する。
【００１２】
本発明の一態様は、スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理に使用される制御メッセージを複数のマスターノードとの間で送受信する通信ステップと、前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報に基づいて前記スレーブノードの時刻を補正する時刻補正ステップと、を有する時刻同期方法である。
【００１３】
本発明の一態様は、スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理に使用される制御メッセージを複数のマスターノードとの間で送受信する通信ステップと、前記通信ステップによって前記制御メッセージを送受信した際に取得される時刻情報に基づいて前記スレーブノードの時刻を補正する時刻補正ステップと、をコンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【００１４】
本発明により、スレーブノードの時刻同期の精度低下を抑えることが可能となる。
【図面の簡単な説明】
【００１５】
【図１】本発明の時刻同期システム１００のシステム構成を示す図である。
【図２】マスターノード１０及びスレーブノード２０の概略ブロック図である。
【図３】本発明の第１動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。
【図４】本発明の第１動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。
【図５】本発明の第２動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。
【図６】本発明の第２動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。
【図７】本発明の第３動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。
【図８】本発明の第３動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。
【図９】本発明の第４動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。
【図１０】本発明の第４動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。
【図１１】本発明の第５動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。
【図１２】所定の期間Ｔ０の間に算出されたマスターノード１０毎のノード間時刻差の推移を表す図である。
【図１３】本発明の第５動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１６】
以下、本発明の一実施形態を、図面を参照しながら説明する。
図１は、本発明の時刻同期システム１００のシステム構成を示す図である。本発明の時刻同期システム１００は、マスターノード１０（１０−１及び１０−２）及びスレーブノード２０を備える。マスターノード１０−１及びスレーブノード２０は、ネットワーク３０−１を介して互いに通信可能に接続される。マスターノード１０−２及びスレーブノード２０は、ネットワーク３０−２を介して互いに通信可能に接続される。図１では、時刻同期システム１００が２台のマスターノード１０を備える構成を示しているが、時刻同期システム１００は３台以上のマスターノード１０を備えるように構成されてもよい。また、図１では、時刻同期システム１００が１台のスレーブノード２０を備える構成を示しているが、時刻同期システム１００は２台以上のスレーブノード２０を備えるように構成されてもよい。
【００１７】
マスターノード１０は、定期的にスレーブノード２０との間でＰＴＰメッセージ（制御メッセージ）を送受信する。ＰＴＰメッセージとは、時刻同期処理に使用される制御メッセージ（制御パケット）であり、例えばＡｎｎｏｕｎｃｅメッセージ、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージである。時刻同期処理とは、スレーブノード２０における時刻をマスターノード１０における時刻に同期させるための処理である。
【００１８】
Ａｎｎｏｕｎｃｅメッセージは、自装置の状態情報を他の装置に通知するためのメッセージである。例えば、Ａｎｎｏｕｎｃｅメッセージには、マスターノード１０の時刻源の品質を表すＣｌｏｃｋｃｌａｓｓ情報（以下、「品質情報」という。）が含まれる。Ｃｌｏｃｋｃｌａｓｓ情報は、１〜２５５までの２５５段階でマスターノード１０の時刻源の品質を表す情報であり、数字が小さいほど時刻源の品質が良いことを表す。つまり、Ｃｌｏｃｋｃｌａｓｓ情報が“１”である場合にはマスターノード１０の時刻源の品質が最も良いことを表し、Ｃｌｏｃｋｃｌａｓｓ情報が“２５５”である場合にはマスターノード１０の時刻源の品質が最も悪いことを表す。
【００１９】
Ｓｙｎｃメッセージは、時刻同期化の動作を開始するために送信されるメッセージである。Ｆｏｌｌｏｗ＿ｕｐメッセージは、Ｓｙｎｃメッセージが送信された後に、Ｓｙｎｃメッセージの送信時刻の時刻情報を通知するために送信されるメッセージである。Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージは、スレーブノード２０がマスターノード１０から送信されるＦｏｌｌｏｗ＿ｕｐメッセージを受信した後に、マスターノード１０にＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを要求するために送信されるメッセージである。Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージは、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの応答として送信されるメッセージである。
【００２０】
スレーブノード２０は、各マスターノード１０との間でＰＴＰメッセージを送受信した際に得られる時刻情報に基づいて、自装置（スレーブノード２０）の時刻（以下、「スレーブ時刻」という。）を補正する。
ネットワーク３０−１は、どのように構成されたネットワークでもよい。例えば、ネットワーク３０−１はＬＡＮ（Local Area Network）を用いて構成されてもよい。
ネットワーク３０−２は、どのように構成されたネットワークでもよい。例えば、ネットワーク３０−２はＬＡＮを用いて構成されてもよい。
【００２１】
図２は、マスターノード１０及びスレーブノード２０の概略ブロック図である。
まず、マスターノード１０の具体的な機能構成について説明する。マスターノード１０は、バスで接続されたＣＰＵ（Central Processing Unit）やメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、マスターノード１０は、マスタークロック生成部１０１、時計部１０２、パケット生成部１０３、通信部１０４を備える装置として機能する。なお、マスターノード１０の各機能の全て又は一部は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されてもよい。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されてもよい。
【００２２】
マスタークロック生成部１０１は、例えば、ＶＣＸＯ（Voltage controlled xtal oscillators）等の電圧可変型の水晶発振器等を用いて構成される。また、マスタークロック生成部１０１は、マスタークロックを生成する。具体的には、マスタークロック生成部１０１は、マスターノード１０における１秒の時間幅を決定する。なお、マスタークロック生成部１０１は、マスターノード１０の外部に存在してもよい。
【００２３】
時計部１０２は、マスタークロック生成部１０１が生成したマスタークロックに従い、マスター時刻を決定する。具体的には、時計部１０２は、マスターノード１０において何時何分何秒であるかを決める。時計部１０２は、マスター時刻の時刻情報をパケット生成部１０３に出力する。
【００２４】
パケット生成部１０３は、各種パケットを生成する。パケット生成部１０３が生成するパケットは、例えばＡｎｎｏｕｎｃｅメッセージ、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージなどである。パケット生成部１０３は、Ａｎｎｏｕｎｃｅメッセージを生成する際、マスターノード１０の時刻源の品質情報を付加する。パケット生成部１０３は、定期的にＳｙｎｃメッセージを生成する。パケット生成部１０３は、通信部１０４を介してスレーブノード２０にＳｙｎｃメッセージを送信し、略同時に時計部１０２を参照してＳｙｎｃメッセージの送信時刻（以下、「Ｓｙｎｃ送信時刻」という。）Ｔ１ｋ（ｋは１以上の整数）を記録する。また、例えば、パケット生成部１０３は、Ｓｙｎｃメッセージ送信後に、Ｓｙｎｃ送信時刻Ｔ１ｋを格納したＦｏｌｌｏｗ＿ｕｐメッセージを生成する。パケット生成部１０３は、通信部１０４を介してスレーブノード２０にＦｏｌｌｏｗ＿ｕｐメッセージを送信する。
【００２５】
また、パケット生成部１０３は、通信部１０４によって受信されるＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの受信時刻（以下、「Ｄｅｌａｙ受信時刻」という。）Ｔ４ｋを、時計部１０２を参照して記録する。その後、パケット生成部１０３は、記録したＤｅｌａｙ受信時刻Ｔ４ｋを格納したＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを生成し、通信部１０４を介してスレーブノード２０にＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを送信する。
【００２６】
通信部１０４は、スレーブノード２０との間でＰＴＰメッセージの送受信を行う。例えば、通信部１０４は、スレーブノード２０からＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信し、パケット生成部１０３に転送する。また、例えば通信部１０４は、Ａｎｎｏｕｎｃｅメッセージ、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージをスレーブノード２０に送信する。
【００２７】
次に、スレーブノード２０の機能構成を説明する。
スレーブノード２０は、バスで接続されたＣＰＵやメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、スレーブノード２０は、通信部２０１、制御部２０２、同期処理部２０３、時計部２０４、算出部２０５、時刻補正部２０６を備える装置として機能する。なお、スレーブノード２０の各機能の全て又は一部は、ＡＳＩＣやＰＬＤやＦＰＧＡ等のハードウェアを用いて実現されてもよい。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されてもよい。
【００２８】
通信部２０１は、各マスターノード１０との間でＰＴＰメッセージの送受信を行う。例えば、通信部２０１は、Ａｎｎｏｕｎｃｅメッセージ、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを各マスターノード１０から受信する。また、例えば、通信部２０１は、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを各マスターノード１０に送信する。
【００２９】
制御部２０２は、スレーブノード２０の各機能部を制御する。制御部２０２は、Ａｎｎｏｕｎｃｅメッセージ中に格納されているマスターノード１０の時刻源の品質情報を抽出する。制御部２０２は、Ｆｏｌｌｏｗ＿ｕｐメッセージの受信後、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを生成する。その後、制御部２０２は、生成したＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを通信部２０１に送信させ、略同時に時計部２０４を参照してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信時刻（以下、「Ｄｅｌａｙ送信時刻」という。）Ｔ３ｋを記録する。また、制御部２０２は、Ｓｙｎｃメッセージが通信部２０１から転送された際にＳｙｎｃメッセージの受信時刻（以下、「Ｓｙｎｃ受信時刻」という。）Ｔ２ｋを記録する。また、制御部２０２は、Ｆｏｌｌｏｗ＿ｕｐメッセージ中に格納されているＳｙｎｃ送信時刻Ｔ１ｋを抽出し記録する。また、制御部２０２は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ中に格納されているＤｅｌａｙ受信時刻Ｔ４ｋを抽出し記録する。
【００３０】
同期処理部２０３は、スレーブノード２０における１秒の時間幅を決定する。具体的には、同期処理部２０３は、通信部２０１によって受信されたＳｙｎｃメッセージに基づいてスレーブクロックを生成することによって、スレーブノード２０における１秒の時間幅を決定する。生成されたスレーブクロックは、マスターノード１０のマスタークロックに同期される。同期処理部２０３は、自身のクロックから生成するタイムスタンプとマスターノード１０から受信したタイムスタンプとの差分を計算し、計算された差分を元に自身のクロックを調整できる構成であれば、どのような構成であってもよい。
時計部２０４は、同期処理部２０３によって生成されたスレーブクロックに従い、スレーブ時刻を決定する。具体的には、時計部２０４は、スレーブノード２０において何時何分何秒であるかを決める。時計部２０４は、スレーブ時刻の時刻情報を制御部２０２に出力する。
【００３１】
算出部２０５は、通信部２０１がＰＴＰメッセージを送受信した際に取得される時刻情報に基づいて、各マスターノード１０それぞれのマスター時刻とスレーブ時刻との時刻差の統計値を算出する。統計値は、例えば、平均値、最大値、最小値、最頻値などである。なお、以下の説明では、統計値の具体例として平均値を例に説明する。以下、算出部２０５の動作について説明する。スレーブノード２０は、マスターノード１０のマスター時刻と、スレーブ時刻との時刻差（以下、「ノード間時刻差」という。）を、接続しているマスターノード１０毎に算出する。そして、スレーブノード２０は、算出したマスターノード１０毎のノード間時刻差に基づいて、ノード間時刻差の平均値（以下、「時刻差平均値」という。）を算出する。
以上で、算出部２０５の動作についての説明を終了する。
時刻補正部２０６は、算出部２０５によって算出された時刻差平均値に基づいてスレーブ時刻を補正する。
以下、本発明の時刻同期システム１００の具体的な動作例（第１動作例〜第５動作例）について説明する。
【００３２】
［第１動作例］
図３は、本発明の第１動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。なお、図３の説明では、マスターノード１０の台数が２台（マスターノード１０−１、マスターノード１０−２）であり、スレーブノード２０の台数が１台である場合を例に説明する。
マスターノード１０−１は、スレーブノード２０に対して定期的にＳｙｎｃメッセージを送信する（ステップＳ１０１）。マスターノード１０−１は、Ｓｙｎｃ送信時刻Ｔ１１を記録する（ステップＳ１０２）。次に、マスターノード１０−１は、スレーブノード２０に対して、Ｆｏｌｌｏｗ＿ｕｐメッセージを送信する（ステップＳ１０３）。この際、マスターノード１０−１は、Ｆｏｌｌｏｗ＿ｕｐメッセージの中に、Ｓｙｎｃ送信時刻Ｔ１１を格納する。
【００３３】
スレーブノード２０は、マスターノード１０−１から送信されたＳｙｎｃメッセージを受信すると、この受信処理をトリガとしてＳｙｎｃ受信時刻Ｔ２１を記録する（ステップＳ１０４）。次に、スレーブノード２０は、マスターノード１０−１から送信されたＦｏｌｌｏｗ＿ｕｐメッセージを受信し、Ｆｏｌｌｏｗ＿ｕｐメッセージ中に格納されるＳｙｎｃ送信時刻Ｔ１１を抽出し記録する。
【００３４】
マスターノード１０−２は、スレーブノード２０に対して定期的にＳｙｎｃメッセージを送信する（ステップＳ１０５）。マスターノード１０−１は、Ｓｙｎｃ送信時刻Ｔ１２を記録する（ステップＳ１０６）。次に、マスターノード１０−２は、スレーブノード２０に対して、Ｆｏｌｌｏｗ＿ｕｐメッセージを送信する（ステップＳ１０７）。この際、マスターノード１０−２は、Ｆｏｌｌｏｗ＿ｕｐメッセージの中に、Ｓｙｎｃ送信時刻Ｔ１２を格納する。
【００３５】
スレーブノード２０は、マスターノード１０−２から送信されたＳｙｎｃメッセージを受信すると、この受信処理をトリガとしてＳｙｎｃ受信時刻Ｔ２２を記録する（ステップＳ１０８）。次に、スレーブノード２０は、マスターノード１０−２から送信されたＦｏｌｌｏｗ＿ｕｐメッセージを受信し、Ｆｏｌｌｏｗ＿ｕｐメッセージ中に格納されるＳｙｎｃ送信時刻Ｔ１２を抽出し記録する。
【００３６】
次に、スレーブノード２０は、マスターノード１０−１に対して、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを送信する（ステップＳ１０９）。そして、スレーブノード２０は、Ｄｅｌａｙ送信時刻Ｔ３１を記録する（ステップＳ１１０）。マスターノード１０−１は、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信すると、この受信処理をトリガとしてＤｅｌａｙ受信時刻Ｔ４１を記録する（ステップＳ１１１）。
【００３７】
また、スレーブノード２０は、マスターノード１０−２に対して、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを送信する（ステップＳ１１２）。そして、スレーブノード２０は、Ｄｅｌａｙ送信時刻Ｔ３２を記録する（ステップＳ１１３）。マスターノード１０−２は、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信すると、この受信処理をトリガとしてＤｅｌａｙ受信時刻Ｔ４２を記録する（ステップＳ１１４）。
【００３８】
次に、マスターノード１０−１は、スレーブノード２０に対してＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを送信する（ステップＳ１１５）。この際、マスターノード１０−１は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージの中に、Ｄｅｌａｙ受信時刻Ｔ４１を格納する。スレーブノード２０は、マスターノード１０−１から送信されたＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信すると、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ中に格納されるＤｅｌａｙ受信時刻Ｔ４１を抽出し記録する。
【００３９】
マスターノード１０−２は、スレーブノード２０に対してＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを送信する（ステップＳ１１６）。この際、マスターノード１０−２は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージの中に、Ｄｅｌａｙ受信時刻Ｔ４２を格納する。スレーブノード２０は、マスターノード１０−２から送信されたＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信すると、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ中に格納されるＤｅｌａｙ受信時刻Ｔ４２を抽出し記録する。
【００４０】
スレーブノード２０は、上述した処理によりマスターノード１０−１及び１０−２との間で各時刻情報（Ｓｙｎｃ送信時刻Ｔ１１及びＴ１２、Ｓｙｎｃ受信時刻Ｔ２１及びＴ２２、Ｄｅｌａｙ送信時刻Ｔ３１及びＴ３２、Ｄｅｌａｙ受信時刻Ｔ４１及びＴ４２）を取得する。スレーブノード２０は、取得した各時刻情報に基づいて時刻差平均値ａｖｅを算出する（ステップＳ１１７）。時刻差平均値ａｖｅは、例えば以下の式１に基づいて算出される。
【数１】
2015188159.tif 000003
スレーブノード２０は、算出した時刻差平均値ａｖｅに基づいてスレーブ時刻を補正する（ステップＳ１１８）。
【００４１】
上述した処理によってスレーブノード２０の時刻が補正される。時刻同期処理では、上述したように、スレーブノード２０とマスターノード１０との間で時刻同期に関わる一連のやり取りが行われる。時刻同期に関わる一連のやり取りとは、スレーブノード２０とマスターノード１０との間で、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ及びＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージの送受信が行われることを表す。
【００４２】
図４は、本発明の第１動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。
スレーブノード２０の通信部２０１は、マスターノード１０から送信されるＳｙｎｃメッセージを受信する（ステップＳ２０１）。通信部２０１は、マスターノード１０からＳｙｎｃメッセージを受信すると、受信したＳｙｎｃメッセージを制御部２０２に転送する。制御部２０２は、Ｓｙｎｃメッセージが転送されると、時計部２０４を参照してＳｙｎｃ受信時刻Ｔ２ｋを記録する。
【００４３】
次に、通信部２０１は、マスターノード１０から送信されるＦｏｌｌｏｗ＿ｕｐメッセージを受信する（ステップＳ２０２）。通信部２０１は、マスターノード１０からＦｏｌｌｏｗ＿ｕｐメッセージを受信すると、受信したＦｏｌｌｏｗ＿ｕｐメッセージを制御部２０２に転送する。制御部２０２は、Ｆｏｌｌｏｗ＿ｕｐメッセージ中に格納されているＳｙｎｃ送信時刻Ｔ１ｋを抽出し記録する。
【００４４】
その後、制御部２０２は、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを生成し、通信部２０１を介してＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージをマスターノード１０に送信する（ステップＳ２０３）。この際、制御部２０２は、時計部２０４を参照してＤｅｌａｙ送信時刻Ｔ３ｋを記録する（ステップＳ２０４）。その後、通信部２０１は、マスターノード１０から送信されるＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信する（ステップＳ２０５）。通信部２０１は、マスターノード１０からＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ受信すると、受信したＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを制御部２０２に転送する。制御部２０２は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ中に格納されているＤｅｌａｙ受信時刻Ｔ４ｋを抽出し記録する。
【００４５】
制御部２０２は、接続している全てのマスターノード１０との間で時刻情報を取得したか否か判定する（ステップＳ２０６）。接続している全てのマスターノード１０との間で時刻情報を取得していない場合（ステップＳ２０６−ＮＯ）、スレーブノード２０はステップＳ２０１以降の処理を繰り返し実行する。
一方、接続している全てのマスターノード１０との間で時刻情報を取得した場合（ステップＳ２０６−ＹＥＳ）、制御部２０２は記録している、各マスターノード１０との間で取得した各時刻情報（Ｓｙｎｃ送信時刻Ｔ１ｋ、Ｓｙｎｃ受信時刻Ｔ２ｋ、Ｄｅｌａｙ送信時刻Ｔ３ｋ、Ｄｅｌａｙ受信時刻Ｔ４ｋ）を算出部２０５に出力する。
【００４６】
算出部２０５は、制御部２０２から出力された各時刻情報に基づいて時刻差平均値ａｖｅを算出する（ステップＳ２０７）。時刻補正部２０６は、算出された時刻差平均値ａｖｅに基づいてスレーブ時刻を補正する（ステップＳ２０８）。
【００４７】
以上のように構成されたスレーブノード２０によれば、中継装置内のキューイング遅延等の影響によりマスターノード１０とスレーブノード２０との間の遅延時間に揺らぎが生じた場合であっても、正しい時刻から大きくずれた時刻でスレーブノード２０の時刻が補正されるおそれが軽減される。具体的には、複数のマスターノード１０との間でそれぞれ取得された時刻情報に基づいて算出される、ノード間時刻差の平均値でスレーブ時刻が補正される。このように、スレーブ時刻と、他のマスターノード１０のマスター時刻との時刻差も含めた平均値でスレーブ時刻が補正されることにより、正しい時刻から大きくずれた値でスレーブ時刻が補正されてしまうおそれを軽減することができる。そのため、スレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【００４８】
＜変形例＞
本動作例では、マスターノード１０の台数が２台である場合の時刻差平均値ａｖｅを算出する式（式１）を示したが、マスターノード１０の台数が３台以上である場合には、算出部２０５は以下の式２に基づいて時刻差平均値ａｖｅを算出する。
【数２】
2015188159.tif 000004
式２のｎは、スレーブノード２０が接続しているマスターノード１０の台数を表す。
【００４９】
また、本動作例では、スレーブノード２０が、接続している全てのマスターノード１０との間で各時刻情報を取得した後、つまり、全てのマスターノード１０との間で時刻同期に関わる一連のやり取りが１回行われた後に時刻差平均値ａｖｅを算出する構成を示したが、これに限定される必要はない。例えば、以下のような処理が行なわれてもよい。スレーブノード２０は、接続しているマスターノード１０毎に、時刻同期に関わる一連のやり取りが行われた後に、時刻同期に関わる一連のやり取りが行われたマスターノード１０と、スレーブノード２０とのノード間時刻差を算出する。スレーブノード２０は、この処理を繰り返し実行し、接続しているマスターノード１０毎のノード間時刻差をそれぞれ算出した後に、算出したノード間時刻差に基づいて時刻差平均値ａｖｅを算出する。以下、具体例を挙げて説明する。
【００５０】
スレーブノード２０が複数台（例えば、２台）のマスターノード１０と接続している場合、スレーブノード２０は複数台のマスターノード１０それぞれとの間でＰＴＰメッセージを送受信する。スレーブノード２０が、マスターノード１０−１との間で各時刻情報（Ｓｙｎｃ送信時刻Ｔ１１、Ｓｙｎｃ受信時刻Ｔ２１、Ｄｅｌａｙ送信時刻Ｔ３１、Ｄｅｌａｙ受信時刻Ｔ４１）を全て取得すると、スレーブノード２０は以下の式３に基づいてマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１を算出する。
【数３】
2015188159.tif 000005
【００５１】
同様に、スレーブノード２０が、マスターノード１０−２との間で各時刻情報（Ｓｙｎｃ送信時刻Ｔ１２、Ｓｙｎｃ受信時刻Ｔ２２、Ｄｅｌａｙ送信時刻Ｔ３２、Ｄｅｌａｙ受信時刻Ｔ４２）を全て取得すると、スレーブノード２０は以下の式４に基づいてマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２を算出する。
【数４】
2015188159.tif 000006
【００５２】
上述した処理により、スレーブノード２０は、接続している全てのマスターノード１０とのノード間時刻差を算出する。スレーブノード２０が、全てのマスターノード１０とのノード間時刻差を算出すると、スレーブノード２０は算出した全てのノード間時刻差に基づいて時刻差平均値ａｖｅを算出する。スレーブノード２０は、例えば以下の式５に基づいて時刻差平均値ａｖｅを算出する。
【数５】
2015188159.tif 000007
【００５３】
［第２動作例］
図５は、本発明の第２動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。なお、図５の説明では、マスターノード１０の台数が２台（マスターノード１０−１、マスターノード１０−２）であり、スレーブノード２０の台数が１台である場合を例に説明する。また、図３と同様の処理については、図５において図３と同様の符号を付して説明を省略する。
【００５４】
図５に示されるように、第２動作例における時刻同期処理の通信シーケンスでは、所定の期間Ｔ０の間、ステップＳ１０１からステップＳ１１６までの処理が繰り返し実行される。つまり、マスターノード１０−１とスレーブノード２０との間、及び、マスターノード１０−２とスレーブノード２０との間で、所定の期間Ｔ０の間、時刻同期に関わる一連のやり取りが行われる。スレーブノード２０が、マスターノード１０−１及び１０−２との間で時刻同期に関わる一連のやり取りを行う回数は、例えば以下の式６及び７に基づいて算出される。
【数６】
2015188159.tif 000008
【数７】
2015188159.tif 000009
【００５５】
式６のｘは、所定の期間Ｔ０の間にスレーブノード２０がマスターノード１０−１との間で時刻同期に関わる一連のやり取りを行う回数を表し、Ｘはスレーブノード２０とマスターノード１０−１との間で時刻同期に関わる一連のやり取りを行う周期を表す。式７のｙは、所定の期間Ｔ０の間にスレーブノード２０がマスターノード１０−２との間で時刻同期に関わる一連のやり取りを行う回数を表し、Ｙはスレーブノード２０とマスターノード１０−２との間で時刻同期に関わる一連のやり取りを行う周期を表す。なお、所定の期間Ｔ０の間にスレーブノード２０が各マスターノード１０との間で時刻同期に関わる一連のやり取りを行う回数は、全てのマスターノード１０で同じ回数であってもよいし、マスターノード１０毎に予め決められていてもよい。
【００５６】
スレーブノード２０は、マスターノード１０毎に算出された回数に応じた回数で、各マスターノード１０との間で時刻同期に関わる一連のやり取りを行う。これにより、スレーブノード２０は、所定の期間Ｔ０における時刻情報をマスターノード１０毎に取得する。所定の期間Ｔ０が経過すると、スレーブノード２０は所定の期間Ｔ０の間に取得したマスターノード１０毎の時刻情報に基づいて、所定の期間Ｔ０におけるノード間時刻差の平均値（以下、「期間平均値」という。）（第１の統計値）をマスターノード１０毎に算出する（ステップＳ３０１）。例えば、マスターノード１０−１とスレーブノード２０との期間平均値Ｍ１は、以下の式８に基づいて算出される。また、例えば、マスターノード１０−２とスレーブノード２０との期間平均値Ｍ２は、以下の式９に基づいて算出される。
【数８】
2015188159.tif 000010
【数９】
2015188159.tif 000011
【００５７】
式８及び式９の（ｌ）は、所定の期間Ｔ０の間に各時刻情報が取得された時点の時刻同期に関わる一連のやり取りの回数を表す。つまり、１回目の時刻同期に関わる一連のやり取りにおいて取得された時刻情報は（ｌ）の値が（１）となる。その後、スレーブノード２０は、マスターノード１０毎に算出した期間平均値Ｍ１及びＭ２に基づいて時刻差平均値ａｖｅ１（第２の統計値）を算出する（ステップＳ３０２）。時刻差平均値ａｖｅ１は、例えば以下の式１０に基づいて算出される。
【数１０】
2015188159.tif 000012
スレーブノード２０は、算出した時刻差平均値ａｖｅ１に基づいてスレーブ時刻を補正する（ステップＳ３０３）。
上述した処理によってスレーブノード２０の時刻が補正される。
【００５８】
図６は、本発明の第２動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。また、図４と同様の処理については、図６において図４と同様の符号を付して説明を省略する。
ステップＳ２０６までの処理が終了し、ステップＳ２０６において、全てのマスターノード１０との間で時刻情報が取得された場合（ステップＳ２０６−ＹＥＳ）、制御部２０２は所定の期間Ｔ０が経過したか否か判定する（ステップＳ４０１）。所定の期間Ｔ０が経過していない場合（ステップＳ４０１−ＮＯ）、スレーブノード２０はステップＳ２０１以降の処理を繰り返し実行する。
【００５９】
一方、所定の期間Ｔ０が経過した場合（ステップＳ４０１−ＹＥＳ）、算出部２０５は所定の期間Ｔ０の間に取得された時刻情報に基づいてマスターノード１０毎の期間平均値を算出する（ステップＳ４０２）。その後、算出部２０５は、算出したマスターノード１０毎の期間平均値に基づいて時刻差平均値ａｖｅ１を算出する（ステップＳ４０３）。時刻補正部２０６は、算出された時刻差平均値ａｖｅ１に基づいてスレーブ時刻を補正する（ステップＳ４０４）。
【００６０】
以上のように構成されたスレーブノード２０によれば、中継装置内のキューイング遅延等の影響によりマスターノード１０とスレーブノード２０との間の遅延時間に揺らぎが生じた場合であっても、正しい時刻から大きくずれた時刻でスレーブノード２０の時刻が補正されるおそれが軽減される。具体的には、所定の期間Ｔ０の間に複数のマスターノード１０との間でそれぞれ取得された複数の時刻情報に基づいて算出されるマスターノード１０毎の期間平均値の平均値でスレーブ時刻が補正される。したがって、時刻同期に関わる一連のやり取りが１回行われた際に取得された時刻情報により算出される、スレーブ時刻と各マスターノードそれぞれのマスター時刻との時刻差の平均値でスレーブ時刻が補正されるよりも正しい時刻に近い時刻で補正することができる。そのため、スレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【００６１】
＜変形例＞
本動作例では、マスターノード１０の台数が２台である場合の時刻差平均値ａｖｅ１を算出する式（式１０）を示したが、マスターノード１０の台数が３台以上である場合には、算出部２０５は以下の式１１に基づいて時刻差平均値ａｖｅ１を算出する。
【数１１】
2015188159.tif 000013
式１１のｎは、スレーブノード２０が接続しているマスターノード１０の台数を表す。
【００６２】
また、本動作例では、スレーブノード２０が、所定の期間Ｔ０の間に取得した時刻情報を全て記憶し、所定の期間Ｔ０経過後に期間平均値及び時刻差平均値ａｖｅ１を算出する構成を示したが、これに限定される必要はない。例えば、以下のような処理が行なわれてもよい。スレーブノード２０は、接続しているマスターノード１０毎に、時刻同期に関わる一連のやり取りが行われた後に、時刻同期に関わる一連のやり取りが行われたマスターノード１０と、スレーブノード２０とのノード間時刻差を算出する。スレーブノード２０は、この処理を所定の期間Ｔ０の間、繰り返し実行し、所定の期間Ｔ０におけるノード間時刻差をマスターノード１０毎に算出する。所定の期間Ｔ０経過後、スレーブノード２０は、所定の期間Ｔ０の間に算出したマスターノード１０毎のノード間時刻差に基づいて、期間平均値をマスターノード１０毎に算出する。そして、スレーブノード２０は、算出したマスターノード１０毎の期間平均値に基づいて時刻差平均値ａｖｅ１を算出する。以下、具体例を挙げて説明する。
【００６３】
スレーブノード２０が複数台（例えば、２台）のマスターノード１０と接続している場合、スレーブノード２０は複数台のマスターノード１０それぞれとの間でＰＴＰメッセージを送受信する。スレーブノード２０が、マスターノード１０−１との間で各時刻情報を全て取得すると、スレーブノード２０は以下の式１２に基づいてマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１（ｌ）を算出する。
【数１２】
2015188159.tif 000014
【００６４】
同様に、スレーブノード２０が、マスターノード１０−２との間で各時刻情報を全て取得すると、スレーブノード２０は以下の式１３に基づいてマスターノード１０−２とスレーブノード２０との時刻差ｍ２（ｌ）を算出する。
【数１３】
2015188159.tif 000015
【００６５】
上述した処理により、スレーブノード２０は、所定の期間Ｔ０の間、接続している全てのマスターノード１０とのノード間時刻差ｍｋ（ｌ）を算出する。所定の期間Ｔ０経過後、スレーブノード２０は所定の期間Ｔ０の間に算出したノード間時刻差ｍｋ（ｌ）に基づいて、期間平均値Ｍｋをマスターノード１０毎に算出する。例えば、スレーブノード２０は、所定の期間Ｔ０の間におけるマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１（ｌ）の期間平均値Ｍ１を以下の式１４に基づいて算出する。また、例えば、スレーブノード２０は、所定の期間Ｔ０の間におけるマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２（ｌ）の期間平均値Ｍ２を以下の式１５に基づいて算出する。
【数１４】
2015188159.tif 000016
【数１５】
2015188159.tif 000017
その後、算出部２０５は、算出した期間平均値Ｍ１及びＭ２に基づいて時刻差平均値ａｖｅ１を上記式１０に基づいて算出する。
【００６６】
［第３動作例］
図７は、本発明の第３動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。なお、図７の説明では、マスターノード１０の台数が２台（マスターノード１０−１、マスターノード１０−２）であり、スレーブノード２０の台数が１台である場合を例に説明する。また、図３と同様の処理については、図７において図３と同様の符号を付して説明を省略する。
【００６７】
マスターノード１０−１は、定期的にスレーブノード２０に対して、Ａｎｎｏｕｎｃｅメッセージを送信する（ステップＳ５０１）。この際、マスターノード１０−１は、Ａｎｎｏｕｎｃｅメッセージの中に、マスターノード１０−１の時刻源の品質情報を格納する。スレーブノード２０は、マスターノード１０−１から送信されたＡｎｎｏｕｎｃｅメッセージを受信し、Ａｎｎｏｕｎｃｅメッセージ中に格納される品質情報を抽出し保持する。
【００６８】
また、マスターノード１０−２は、定期的にスレーブノード２０に対して、Ａｎｎｏｕｎｃｅメッセージを送信する（ステップＳ５０２）。この際、マスターノード１０−２は、Ａｎｎｏｕｎｃｅメッセージの中に、マスターノード１０−２の時刻源の品質情報を格納する。スレーブノード２０は、マスターノード１０−２から送信されたＡｎｎｏｕｎｃｅメッセージを受信し、Ａｎｎｏｕｎｃｅメッセージ中に格納される品質情報を抽出し保持する。その後、ステップＳ１０１〜ステップＳ１１６までの処理が実行される。
【００６９】
第３動作例におけるスレーブノード２０は、上述した処理（ステップＳ５０１〜ステップＳ１１６までの処理）によりマスターノード１０−１及び１０−２との間で品質情報及び時刻情報（Ｓｙｎｃ送信時刻Ｔ１１及びＴ１２、Ｓｙｎｃ受信時刻Ｔ２１及びＴ２２、Ｄｅｌａｙ送信時刻Ｔ３１及びＴ３２、Ｄｅｌａｙ受信時刻Ｔ４１及びＴ４２）を取得する。スレーブノード２０は、品質情報と各時刻情報とに基づいて時刻差平均値ａｖｅ２を算出する（ステップＳ５０３）。時刻差平均値ａｖｅ２は、例えば以下の式１６に基づいて算出される。
【数１６】
2015188159.tif 000018
【００７０】
式１６のａはマスターノード１０−１の時刻源の品質を表し、ｂはマスターノード１０−２の時刻源の品質を表す。スレーブノード２０は、算出した時刻差平均値ａｖｅ２に基づいてスレーブ時刻を補正する（ステップＳ５０４）。
上述した処理によってスレーブノード２０の時刻が補正される。
【００７１】
図８は、本発明の第３動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。また、図４と同様の処理については、図８において図４と同様の符号を付して説明を省略する。
スレーブノード２０の通信部２０１は、マスターノード１０から送信されるＡｎｎｏｕｎｃｅメッセージを受信する（ステップＳ６０１）。通信部２０１は、マスターノード１０からＡｎｎｏｕｎｃｅメッセージを受信すると、受信したＡｎｎｏｕｎｃｅメッセージを制御部２０２に転送する。制御部２０２は、Ａｎｎｏｕｎｃｅメッセージ中に格納されている品質情報を抽出し保持する。
【００７２】
その後、ステップＳ２０１〜ステップＳ２０５までの処理が実行されると、制御部２０２は接続している全てのマスターノード１０との間で品質情報及び時刻情報を取得したか否か判定する（ステップＳ６０２）。全てのマスターノード１０との間で品質情報及び時刻情報を取得していない場合（ステップＳ６０２−ＮＯ）、スレーブノード２０はステップＳ６０１以降の処理を繰り返し実行する。
【００７３】
一方、全てのマスターノード１０との間で品質情報及び時刻情報を取得した場合（ステップＳ６０２−ＹＥＳ）、制御部２０２は記録している、各マスターノード１０との間で取得した品質情報及び各時刻情報（Ｓｙｎｃ送信時刻Ｔ１ｋ、Ｓｙｎｃ受信時刻Ｔ２ｋ、Ｄｅｌａｙ送信時刻Ｔ３ｋ、Ｄｅｌａｙ受信時刻Ｔ４ｋ）を算出部２０５に出力する。
算出部２０５は、制御部２０２から出力された品質情報及び各時刻情報に基づいて時刻差平均値ａｖｅ２を算出する（ステップＳ６０３）。時刻補正部２０６は、算出された時刻差平均値ａｖｅ２に基づいてスレーブ時刻を補正する（ステップＳ６０４）。
【００７４】
以上のように構成されたスレーブノード２０によれば、中継装置内のキューイング遅延等の影響によりマスターノード１０とスレーブノード２０との間の遅延時間に揺らぎが生じた場合であっても、正しい時刻から大きくずれた時刻でスレーブノード２０の時刻が補正されるおそれが軽減される。具体的には、複数のマスターノード１０との間でそれぞれ取得された時刻情報に基づいて算出される、スレーブ時刻と各マスターノード１０それぞれのマスター時刻との時刻差の平均値を各マスターノード１０の時刻源の品質で重み付けした値の平均値でスレーブ時刻が補正される。したがって、より精度の高い同期を実現できる可能性を向上させることができる。例えば、マスターノード１０の時刻源の品質は劣化するおそれがあるため、品質の高いものを重く時刻差平均値の算出に組み込むことで、より精度の高い同期が実現される。そのため、スレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【００７５】
＜変形例＞
本動作例では、マスターノード１０の台数が２台である場合の時刻差平均値ａｖｅ２を算出する式（式１６）を示したが、マスターノード１０の台数が３台以上（例えば、ｎ台）である場合には、算出部２０５は以下の式１７に基づいて時刻差平均値ａｖｅ２を算出する。
【数１７】
2015188159.tif 000019
式１７のαｋは、マスターノード１０の時刻源の品質を表し、ここではマスターノード１０の時刻源の品質が高い場合、αｋの値は小さくなると定義している。算出部２０５は、ノード間時刻差の値が小さい順に、マスターノード１０の時刻源の品質が高い値を順番に重みづけの値として割り当ててもよいし、その他の順番でマスターノード１０の時刻源の品質を重みづけの値として割り当ててもよい。
【００７６】
本動作例では、マスターノード１０の時刻源の品質が固定値である場合を例に説明したが、マスターノード１０の時刻源の品質は時間に応じて変化してもよい。
また、本動作例では、スレーブノード２０が、接続している全てのマスターノード１０との間で品質情報及び各時刻情報を取得した後、つまり、全てのマスターノード１０との間で品質情報が取得され、かつ、時刻同期に関わる一連のやり取りが１回行われた後に時刻差平均値ａｖｅ２を算出する構成を示したが、これに限定される必要はない。例えば、以下のような処理が行なわれてもよい。スレーブノード２０は、接続しているマスターノード１０毎に、Ａｎｎｏｕｎｃｅメッセージを受信し、受信したＡｎｎｏｕｎｃｅメッセージからマスターノード１０毎の時刻源の品質情報を取得する。また、スレーブノード２０は、接続しているマスターノード１０毎に、時刻同期に関わる一連のやり取りが行われた後に、時刻同期に関わる一連のやり取りが行われたマスターノード１０と、スレーブノードとのノード間時刻差を算出する。スレーブノード２０は、この処理を繰り返し実行し、接続しているマスターノード１０毎のノード間時刻差をそれぞれ算出した後に、算出した各ノード間時刻差と取得した品質情報とに基づいて時刻差平均値ａｖｅ２を算出する。以下、具体例を挙げて説明する。
【００７７】
スレーブノード２０が複数台（例えば、２台）のマスターノード１０と接続している場合、スレーブノード２０は複数台のマスターノード１０それぞれとの間でＰＴＰメッセージを送受信する。スレーブノード２０が、マスターノード１０−１との間で時刻源の品質情報（例えば、ａ及びｂ）及び各時刻情報を全て取得すると、スレーブノード２０は上記式３に基づいてマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１を算出する。
同様に、スレーブノード２０が、マスターノード１０−２との間で時刻源の品質情報及び各時刻情報を全て取得すると、スレーブノード２０は上記式４に基づいてマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２を算出する。
【００７８】
上述した処理により、スレーブノード２０は、接続している全てのマスターノード１０とのノード間時刻差を算出する。スレーブノード２０が、全てのマスターノード１０とのノード間時刻差を算出すると、スレーブノード２０は算出した全てのノード間時刻差と、各マスターノード１０の品質情報（例えば、ａ及びｂ）とに基づいて時刻差平均値ａｖｅ２を算出する。スレーブノード２０は、例えば以下の式１８に基づいて時刻差平均値ａｖｅ２を算出する。
【数１８】
2015188159.tif 000020
【００７９】
［第４動作例］
図９は、本発明の第４動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。なお、図９の説明では、マスターノード１０の台数が２台（マスターノード１０−１、マスターノード１０−２）であり、スレーブノード２０の台数が１台である場合を例に説明する。また、図７と同様の処理については、図９において図７と同様の符号を付して説明を省略する。
【００８０】
図９に示されるように、第４動作例における時刻同期処理の通信シーケンスでは、スレーブノード２０がマスターノード１０−１及び１０−２からＡｎｎｏｕｎｃｅメッセージをそれぞれ受信した後、所定の期間Ｔ０の間、ステップＳ１０１からステップＳ１１６までの処理が繰り返し実行される。つまり、マスターノード１０−１とスレーブノード２０との間、及び、マスターノード１０−２とスレーブノード２０との間で、所定の期間Ｔ０の間、時刻同期に関わる一連のやり取りが行われる。スレーブノード２０が、マスターノード１０−１及び１０−２との間で時刻同期に関わる一連のやり取りを行う回数は、例えば上記式６及び７に基づいて算出される。なお、所定の期間Ｔ０の間にスレーブノード２０が各マスターノード１０との間で時刻同期に関わる一連のやり取りを行う回数は、全てのマスターノード１０で同じ回数であってもよいし、マスターノード１０毎に予め決められていてもよい。
【００８１】
スレーブノード２０は、マスターノード１０毎に算出された回数に応じた回数で、各マスターノード１０との間で時刻同期に関わる一連のやり取りを行う。これにより、スレーブノード２０は、所定の期間Ｔ０における時刻情報をマスターノード１０毎に取得する。所定の期間Ｔ０が経過すると、スレーブノード２０は所定の期間Ｔ０の間に取得したマスターノード１０毎の時刻情報に基づいて、所定の期間Ｔ０における期間平均値をマスターノード１０毎に算出する（ステップＳ７０１）。例えば、マスターノード１０−１とスレーブノード２０との期間平均値Ｍ１は、上記式８に基づいて算出される。また、例えば、マスターノード１０−２とスレーブノード２０との期間平均値Ｍ２は、上記式９に基づいて算出される。
【００８２】
その後、スレーブノード２０は、マスターノード１０毎に算出した期間平均値Ｍ１及びＭ２と、マスターノード１０−１及び１０−２から取得した各マスターノード１０の品質情報とに基づいて時刻差平均値ａｖｅ３を算出する（ステップＳ７０２）。時刻差平均値ａｖｅ３は、例えば以下の式１９に基づいて算出される。
【数１９】
2015188159.tif 000021
スレーブノード２０は、算出した時刻差平均値ａｖｅ３に基づいてスレーブ時刻を補正する（ステップＳ７０３）。
上述した処理によってスレーブノード２０の時刻が補正される。
【００８３】
図１０は、本発明の第４動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。また、図８と同様の処理については、図１０において図８と同様の符号を付して説明を省略する。
ステップＳ６０２までの処理が終了し、ステップＳ６０２において、全てのマスターノード１０との間で品質情報及び時刻情報が取得された場合（ステップＳ６０２−ＹＥＳ）、制御部２０２は所定の期間Ｔ０が経過したか否か判定する（ステップＳ８０１）。所定の期間Ｔ０が経過していない場合（ステップＳ８０１−ＮＯ）、スレーブノード２０はステップＳ２０１以降の処理を繰り返し実行する。
【００８４】
一方、所定の期間Ｔ０が経過した場合（ステップＳ８０１−ＹＥＳ）、算出部２０５は所定の期間Ｔ０の間に取得された時刻情報に基づいてマスターノード１０毎の期間平均値を算出する（ステップＳ８０２）。その後、算出部２０５は、算出したマスターノード１０毎の期間平均値と、各マスターノード１０の品質情報とに基づいて時刻差平均値ａｖｅ３を算出する（ステップＳ８０３）。時刻補正部２０６は、算出された時刻差平均値ａｖｅ３に基づいてスレーブ時刻を補正する（ステップＳ８０４）。
【００８５】
以上のように構成されたスレーブノード２０によれば、中継装置内のキューイング遅延等の影響によりマスターノード１０とスレーブノード２０との間の遅延時間に揺らぎが生じた場合であっても、正しい時刻から大きくずれた時刻でスレーブノード２０の時刻が補正されるおそれが軽減される。具体的には、所定の期間Ｔ０の間に複数のマスターノード１０との間でそれぞれ取得された複数の時刻情報に基づいて算出されるマスターノード１０毎の期間平均値の平均値を各マスターノード１０の時刻源の品質で重み付けした値の平均値でスレーブ時刻が補正される。したがって、より精度の高い同期が実現できる可能性を向上させることができる。例えば、マスターノード１０の時刻源の品質は劣化するおそれがあるため、品質の高いものを重く時刻差平均値の算出に組み込むことで、より精度の高い同期が実現される。そのため、スレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【００８６】
＜変形例＞
本動作例では、マスターノード１０の台数が２台である場合の時刻差平均値ａｖｅ３を算出する式（式１９）を示したが、マスターノード１０の台数が３台以上である場合には、算出部２０５は上記式１７の時間間隔Ｔ０における平均で表される式に基づいて時刻差平均値ａｖｅ３を算出する。
【００８７】
また、本動作例では、スレーブノード２０が、所定の期間Ｔ０の間に取得した時刻情報を全て記憶し、所定の期間Ｔ０経過後に期間平均値及び時刻差平均値ａｖｅ３を算出する構成を示したが、これに限定される必要はない。例えば、以下のような処理が行なわれてもよい。スレーブノード２０は、接続しているマスターノード１０毎に、時刻同期に関わる一連のやり取りが行われた後に、時刻同期に関わる一連のやり取りが行われたマスターノード１０と、スレーブノード２０とのノード間時刻差を算出する。スレーブノード２０は、この処理を所定の期間Ｔ０の間、繰り返し実行し、所定の期間Ｔ０におけるノード間時刻差をマスターノード１０毎に算出する。所定の期間Ｔ０経過後、スレーブノード２０は、所定の期間Ｔ０の間に算出したマスターノード１０毎のノード間時刻差に基づいて、期間平均値をマスターノード１０毎に算出する。そして、スレーブノード２０は、算出したマスターノード１０毎の期間平均値と、各マスターノード１０の時刻源の品質情報とに基づいて時刻差平均値ａｖｅ３を算出する。以下、具体例を挙げて説明する。
【００８８】
スレーブノード２０が複数台（例えば、２台）のマスターノード１０と接続している場合、スレーブノード２０は複数台のマスターノード１０それぞれとの間でＰＴＰメッセージを送受信する。これにより、スレーブノード２０は、各マスターノード１０の品質情報（例えば、ａ及びｂ）及び時刻情報を取得する。スレーブノード２０が、マスターノード１０−１との間で各時刻情報を全て取得すると、スレーブノード２０は上記式１２に基づいてマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１（ｌ）を算出する。
同様に、スレーブノード２０が、マスターノード１０−２との間で各時刻情報を全て取得すると、スレーブノード２０は上記式１３に基づいてマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２（ｌ）を算出する。
【００８９】
上述した処理により、スレーブノード２０は、所定の期間Ｔ０の間、接続している全てのマスターノード１０とのノード間時刻差ｍｋ（ｌ）を算出する。所定の期間Ｔ０経過後、スレーブノード２０は所定の期間Ｔ０の間に算出したノード間時刻差に基づいて、期間平均値Ｍｋをマスターノード１０毎に算出する。例えば、スレーブノード２０は、所定の期間Ｔ０の間におけるマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１（ｌ）の期間平均値Ｍ１を上記式１４に基づいて算出する。スレーブノード２０は、所定の期間Ｔ０の間におけるマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２（ｌ）の期間平均値Ｍ２を上記式１５に基づいて算出する。
その後、算出部２０５は、算出した各期間平均値Ｍ１及びＭ２と、品質情報（例えば、ａ及びｂ）とに基づいて時刻差平均値ａｖｅ３を上記式１９に基づいて算出する。
【００９０】
［第５動作例］
図１１は、本発明の第５動作例における時刻同期処理の通信シーケンスの動作例を表すシーケンス図である。なお、図１１の説明では、マスターノード１０の台数が２台（マスターノード１０−１、マスターノード１０−２）であり、スレーブノード２０の台数が１台である場合を例に説明する。また、図５と同様の処理については、図１１において図５と同様の符号を付して説明を省略する。
【００９１】
図１１に示されるように、第５動作例における時刻同期処理の通信シーケンスでは、所定の期間Ｔ０の間、ステップＳ１０１からステップＳ１１６までの処理が繰り返し実行される。つまり、マスターノード１０−１とスレーブノード２０との間、及び、マスターノード１０−２とスレーブノード２０との間で、所定の期間Ｔ０の間、時刻同期に関わる一連のやり取りが行われる。スレーブノード２０が、マスターノード１０−１及び１０−２との間で時刻同期に関わる一連のやり取りを行う回数は、例えば上記式６及び７に基づいて算出される。なお、所定の期間Ｔ０の間にスレーブノード２０が各マスターノード１０との間で時刻同期に関わる一連のやり取りを行う回数は、全てのマスターノード１０で同じ回数であってもよいし、マスターノード１０毎に予め決められていてもよい。
【００９２】
スレーブノード２０は、マスターノード１０毎に算出された回数に応じた回数で、各マスターノード１０との間で時刻同期に関わる一連のやり取りを行う。これにより、スレーブノード２０は、所定の期間Ｔ０における時刻情報をマスターノード１０毎に取得する。所定の期間Ｔ０が経過すると、スレーブノード２０は所定の期間Ｔ０の間に取得したマスターノード１０毎の時刻情報に基づいて、所定の期間Ｔ０におけるマスターノード１０毎の期間平均値を算出する（ステップＳ９０１）。例えば、マスターノード１０−１とスレーブノード２０との期間平均値Ｍ１は、上記式８に基づいて算出される。また、例えば、マスターノード１０−２とスレーブノード２０との期間平均値Ｍ２は、上記式９に基づいて算出される。
【００９３】
その後、スレーブノード２０は、マスターノード１０毎に算出した期間平均値Ｍｋ（Ｍ１及びＭ２）と、所定の期間Ｔ０の間に行われた時刻同期に関わる一連のやり取り毎のノード間時刻差ｍｋ（ｌ）とに基づいて、所定の期間Ｔ０におけるノード間時刻差ｍｋ（ｌ）の分散値Ｖｋをマスターノード１０毎に算出する（ステップＳ９０２）。例えば、マスターノード１０−１とスレーブノード２０との所定の期間Ｔ０におけるノード間時刻差ｍ１（ｌ）の分散値Ｖ１は、以下の式２０に基づいて算出される。また、例えば、マスターノード１０−２とスレーブノード２０との所定の期間Ｔ０の間におけるノード間時刻差ｍ２（ｌ）の分散値Ｖ２は、以下の式２１に基づいて算出される。
【数２０】
2015188159.tif 000022
【数２１】
2015188159.tif 000023
【００９４】
式２０のｘは、所定の期間Ｔ０の間にスレーブノード２０がマスターノード１０−１との間で時刻同期に関わる一連のやり取りを行う回数を表す。式２１のｙは、所定の期間Ｔ０の間にスレーブノード２０がマスターノード１０−２との間で時刻同期に関わる一連のやり取りを行う回数を表す。式２０及び式２１の（ｌ）は、所定の期間Ｔ０の間に各時刻情報が取得された時点の時刻同期に関わる一連のやり取りの回数を表す。
【００９５】
その後、スレーブノード２０は、マスターノード１０毎に算出した分散値Ｖｋ（Ｖ１及びＶ２）と、期間平均値Ｍｋ（Ｍ１及びＭ２）とに基づいて時刻差平均値ａｖｅ４を算出する（ステップＳ９０３）。時刻差平均値ａｖｅ４は、例えば以下の式２２に基づいて算出される。
【数２２】
2015188159.tif 000024
スレーブノード２０は、算出した時刻差平均値ａｖｅ４に基づいてスレーブ時刻を補正する（ステップＳ９０４）。
上述した処理によってスレーブノード２０の時刻が補正される。
【００９６】
図１２は、所定の期間Ｔ０の間に算出されたマスターノード１０毎のノード間時刻差の推移を表す図である。
図１２において、縦軸はノード間時刻差ｍｋを表し、横軸ｔは時間を表す。点線４１は、所定の期間Ｔ０の間におけるマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１の推移を表す。長鎖線４２は、所定の期間Ｔ０の間におけるマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ２の推移を表す。矢印４３は、マスターノード１０−１とスレーブノード２０との間で時刻同期に関わる一連のやり取りが行われたタイミングを表す。つまり、矢印４３で示される時間にマスターノード１０−１とスレーブノード２０との間のノード間時刻差ｍ１が算出されている。矢印４４は、マスターノード１０−２とスレーブノード２０との間で時刻同期に関わる一連のやり取りが行われたタイミングを表す。つまり、矢印４４で示される時間にマスターノード１０−２とスレーブノード２０との間のノード間時刻差ｍ２が算出されている。
【００９７】
図１２では、所定の期間Ｔ０の間に、マスターノード１０−１とスレーブノード２０との間で時刻同期に関わる一連のやり取りが３回行われ、マスターノード１０−２とスレーブノード２０との間で時刻同期に関わる一連のやり取りが２回行われたことが示されている。
スレーブノード２０は、各タイミングで算出されたノード間時刻差ｍｋと、所定の期間Ｔ０における期間平均値Ｍｋとに基づいてノード間時刻差ｍｋの分散値Ｖｋを算出する。
【００９８】
図１３は、本発明の第５動作例におけるスレーブノード２０の処理の流れを示すフローチャートである。また、図６と同様の処理については、図１３において図６と同様の符号を付して説明を省略する。
ステップＳ４０１までの処理が終了し、ステップＳ４０１において、所定の期間Ｔ０が経過した場合（ステップＳ４０１−ＹＥＳ）、算出部２０５は所定の期間Ｔ０の間に取得された時刻情報に基づいて期間平均値をマスターノード１０毎に算出する（ステップＳ１００１）。算出部２０５は、算出されたマスターノード１０毎の期間平均値と、所定の期間Ｔ０の間に行われた時刻同期に関わる一連のやり取り毎のノード間時刻差とに基づいて分散値をマスターノード１０毎に算出する（ステップＳ１００２）。算出部２０５は、マスターノード１０毎の期間平均値と、マスターノード１０毎の分散値とに基づいて時刻差平均値ａｖｅ４を算出する（ステップＳ１００３）。時刻補正部２０６は、算出された時刻差平均値ａｖｅ２に基づいてスレーブ時刻を補正する（ステップＳ１００４）。
【００９９】
以上のように構成されたスレーブノード２０によれば、中継装置内のキューイング遅延等の影響によりマスターノード１０とスレーブノード２０との間の遅延時間に揺らぎが生じた場合であっても、正しい時刻から大きくずれた時刻でスレーブノード２０の時刻が補正されるおそれが軽減される。具体的には、所定の期間Ｔ０の間に複数のマスターノード１０との間でそれぞれ取得された複数の時刻情報に基づいて算出されるマスターノード１０毎の期間平均値と、所定の期間Ｔ０の間で行われる時刻同期に関わる一連のやり取り毎の時刻差とに基づいて、分散値が算出される。そして、算出された分散値とマスターノード１０毎の期間平均値とに基づいて算出された平均値でスレーブ時刻が補正される。したがって、より精度の高い同期が実現できる可能性を向上させることができる。例えば、ネットワークの揺らぎにより同期する時刻の精度は劣化するおそれがあるため、揺らぎの小さいものを重く時刻差平均値の算出に組み込むことで、より精度の高い同期が実現される。そのため、スレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【０１００】
＜変形例＞
本動作例では、マスターノード１０の台数が２台である場合の時刻差平均値ａｖｅ４を算出する式（式２２）を示したが、マスターノード１０の台数が３台以上である場合には、算出部２０５は以下の式２３に基づいて時刻差平均値ａｖｅ４を算出する。
【数２３】
2015188159.tif 000025
式２３のβｋは、分散値の逆数（１／Ｖｋ）を表す。算出部２０５は、期間平均値Ｍｋの値が小さい順に、分散値の逆数βｋが高い値を順番に重みづけの値として割り当ててもよいし、その他の順番で分散値の逆数βｋを重みづけの値として割り当ててもよい。
【０１０１】
分散値に代えて、分散値の平方根であるσｋが重み付けの値として用いられてもよい。このように構成される場合、算出部２０５は以下の式２４に基づいて時刻差平均値ａｖｅ４を算出する。
【数２４】
2015188159.tif 000026
【０１０２】
また、本動作例では、スレーブノード２０が、所定の期間Ｔ０の間に取得した時刻情報を全て記憶し、所定の期間Ｔ０経過後に期間平均値及び時刻差平均値ａｖｅ４を算出する構成を示したが、これに限定される必要はない。例えば、以下のような処理が行なわれてもよい。スレーブノード２０は、接続しているマスターノード１０毎に、時刻同期に関わる一連のやり取りが行われた後に、時刻同期に関わる一連のやり取りが行われたマスターノード１０と、スレーブノード２０とのノード間時刻差を算出する。スレーブノード２０は、この処理を所定の期間Ｔ０の間、繰り返し実行し、所定の期間Ｔ０におけるノード間時刻差をマスターノード１０毎に算出する。所定の期間Ｔ０経過後、スレーブノード２０は、所定の期間Ｔ０の間に算出したマスターノード１０毎のノード間時刻差と、所定の期間Ｔ０におけるマスターノード毎の期間平均値とに基づいて、ノード間時刻差の分散値をマスターノード毎に算出する。スレーブノード２０は、マスターノード１０毎に算出された分散値と、マスターノード毎の期間平均値とに基づいて時刻差平均値ａｖｅ４を算出する。以下、具体例を挙げて説明する。
【０１０３】
スレーブノード２０が複数台（例えば、２台）のマスターノード１０と接続している場合、スレーブノード２０は複数台のマスターノード１０それぞれとの間でＰＴＰメッセージを送受信する。スレーブノード２０が、マスターノード１０−１との間で各時刻情報を全て取得すると、スレーブノード２０は上記式１２に基づいてマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１（ｌ）を算出する。
同様に、スレーブノード２０が、マスターノード１０−２との間で各時刻情報を全て取得すると、スレーブノード２０は上記式１３に基づいてマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２（ｌ）を算出する。
【０１０４】
上述した処理により、スレーブノード２０は、所定の期間Ｔ０の間、接続している全てのマスターノード１０とのノード間時刻差ｍｋ（ｌ）を算出する。所定の期間Ｔ０経過後、スレーブノード２０は所定の期間Ｔ０の間に算出したノード間時刻差ｍｋ（ｌ）に基づいて、期間平均値Ｍｋをマスターノード１０毎に算出する。例えば、スレーブノード２０は、所定の期間Ｔ０の間におけるマスターノード１０−１とスレーブノード２０とのノード間時刻差ｍ１（ｌ）の期間平均値Ｍ１を上記式１４に基づいて算出する。また、例えば、スレーブノード２０は、所定の期間Ｔ０の間におけるマスターノード１０−２とスレーブノード２０とのノード間時刻差ｍ２（ｌ）の期間平均値Ｍ２を上記式１５に基づいて算出する。
【０１０５】
その後、スレーブノード２０は、所定の期間Ｔ０の間に算出したマスターノード１０毎のノード間時刻差と、算出した所定の期間Ｔ０における期間平均値とに基づいてノード間時刻差の分散値Ｖｋをマスターノード毎に算出する。マスターノード１０毎に算出された分散値Ｖｋと、マスターノード毎の期間平均値とに基づいて時刻差平均値ａｖｅ４を上記式２２に基づいて算出する。
【０１０６】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１０７】
１０（１０−１〜１０−２）…マスターノード，  ２０…スレーブノード，  ３０（３０−１〜３０−２）…ネットワーク，  １０１…マスタークロック生成部，  １０２…時計部，  １０３…パケット生成部，  １０４…通信部、  ２０１…通信部，  ２０２、…制御部，  ２０３…同期処理部，  ２０４…時計部，  ２０５…算出部，  ２０６…時刻補正部
【図１】
2015188159.tif 000027
【図２】
2015188159.tif 000028
【図３】
2015188159.tif 000029
【図４】
2015188159.tif 000030
【図５】
2015188159.tif 000031
【図６】
2015188159.tif 000032
【図７】
2015188159.tif 000033
【図８】
2015188159.tif 000034
【図９】
2015188159.tif 000035
【図１０】
2015188159.tif 000036
【図１１】
2015188159.tif 000037
【図１２】
2015188159.tif 000038
【図１３】
2015188159.tif 000039