(57)【要約】【課題】複数のマスターノードのいずれかのマスターノードの時刻源の精度が劣化した場合におけるスレーブノードの時刻同期の精度低下を抑えること。【解決手段】自装置における時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を自装置との間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定部、を備えるスレーブノード。【選択図】図３
2015188152.tif 000002
【特許請求の範囲】
【請求項１】
自装置における時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を自装置との間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、前記条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定部、
を備えるスレーブノード。
【請求項２】
各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部をさらに備え、
前記決定部は、各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻のいずれかが、算出された前記平均値に所定の値を加減して得られる閾値の範囲外である場合に、閾値の範囲外となった時刻に関連するマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する、請求項１に記載のスレーブノード。
【請求項３】
各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部をさらに備え、
前記決定部は、各マスターノードにおける時刻同期処理時の所定のタイミングの時刻と、算出された前記平均値との差分値のいずれかが、所定の閾値の範囲外である場合に、閾値の範囲外となった時刻に関連するマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する、請求項１に記載のスレーブノード。
【請求項４】
他のスレーブノードに対して前記マスターノードの時刻源の精度の劣化を示す通知を送信する送信部をさらに備え、
前記送信部は、前記閾値の範囲外となった時刻に関連するマスターノードの劣化を示す通知を前記他のスレーブノードに送信する、請求項２又は３のいずれか１項に記載のスレーブノード。
【請求項５】
前記決定部は、他装置から前記マスターノードの時刻源の精度の劣化を示す通知が受信された場合に、受信された通知で示されるマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する、請求項１〜４のいずれか１項に記載のスレーブノード。
【請求項６】
各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部と、
他装置から前記マスターノードの時刻源の精度の劣化を示す通知を受信する受信部と、をさらに備え、
前記決定部は、所定の優先度に基づいて、前記通知により特定される、時刻源の精度が劣化しているマスターノード又は前記平均値に基づいて特定されるマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する、請求項１に記載のスレーブノード。
【請求項７】
複数のノードを制御する制御サーバであって、
各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部と、
各マスターノードにおける時刻同期処理時の所定のタイミングの時刻と、算出された前記平均値との差分値のいずれが、所定の閾値の範囲外である場合に、閾値の範囲外となった時刻に関連するマスターノードの時刻源の精度の劣化を示す通知を前記マスターノードに接続するスレーブノードに送信する送信部と、
を備える制御サーバ。
【請求項８】
スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を前記スレーブノードとの間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、前記条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定ステップ、
を有する時刻同期先決定方法。
【請求項９】
スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を前記スレーブノードとの間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、前記条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定ステップ、
をコンピュータに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻同期の技術に関する。
【背景技術】
【０００２】
近年、複数の基地局間で連係した動作を行うため、高精度な時刻同期が求められている。そこで、ネットワーク接続された複数の機器の時刻をマイクロ秒以下の精度で同期させる技術として、ＩＥＥＥ１５８８で定義されたＰＴＰ（Precision Time Protocol）が知られている（例えば、非特許文献１参照）。ＰＴＰでは、マスターノードとスレーブノードとの間で時刻情報を含むメッセージが定期的に交換される。スレーブノードは、マスターノード及びスレーブノードにおけるメッセージが送受信された時刻情報から、マスターノードに対するスレーブノードの時刻のずれ（Ｏｆｆｓｅｔ）を計算する。そして、スレーブノードは、計算したＯｆｆｓｅｔに基づいてスレーブノードの時刻を補正して、スレーブノードの時刻をマスターノードの時刻に同期させる。また、ＰＴＰでは、マスターノードの時刻源の品質を２５５段階でスレーブノードに通知することができ、同期確立によって期待される時刻同期精度の品質を２５５段階でスレーブノードに通知することができる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems，” IEEE Standard 1588-2008.
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、通常、マスターノードは、経年劣化による時刻源の品質の変化をモニターする機能を有さないため、マスターノードの時刻源の精度が緩やかに劣化した場合、時刻源の精度の劣化に気付くことができない。したがって、複数のマスターノードのいずれかのマスターノードの時刻源の精度が劣化した場合に、スレーブノードは複数のマスターノードのうち、時刻源の精度が劣化したマスターノードに同期してしまうおそれがある。このような場合、スレーブノードの時刻同期の精度が劣化してしまうという問題があった。このような問題は、ＰＴＰに限らず、時刻同期を行う全ての通信プロトコルに共通する問題である。
【０００５】
上記事情に鑑み、本発明は、複数のマスターノードのいずれかのマスターノードの時刻源の精度が劣化した場合におけるスレーブノードの時刻同期の精度低下を抑えることができる技術の提供を目的としている。
【課題を解決するための手段】
【０００６】
本発明の一態様は、自装置における時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を自装置との間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、前記条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定部、を備えるスレーブノードである。
【０００７】
本発明の一態様は、上記のスレーブノードであって、各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部をさらに備え、前記決定部は、各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻のいずれかが、算出された前記平均値に所定の値を加減して得られる閾値の範囲外である場合に、閾値の範囲外となった時刻に関連するマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する。
【０００８】
本発明の一態様は、上記のスレーブノードであって、各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部をさらに備え、前記決定部は、各マスターノードにおける時刻同期処理時の所定のタイミングの時刻と、算出された前記平均値との差分値のいずれかが、所定の閾値の範囲外である場合に、閾値の範囲外となった時刻に関連するマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する。
【０００９】
本発明の一態様は、上記のスレーブノードであって、前記決定部は、他のスレーブノードに対して前記マスターノードの時刻源の精度の劣化を示す通知を送信する送信部をさらに備え、前記送信部は、前記閾値の範囲外となった時刻に関連するマスターノードの劣化を示す通知を前記他のスレーブノードに送信する。
【００１０】
本発明の一態様は、上記のスレーブノードであって、前記決定部は、他装置から前記マスターノードの時刻源の精度の劣化を示す通知が受信された場合に、受信された通知で示されるマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する。
【００１１】
本発明の一態様は、上記のスレーブノードであって、各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部と、他装置から前記マスターノードの時刻源の精度の劣化を示す通知を受信する受信部と、をさらに備え、前記決定部は、所定の優先度に基づいて、前記通知により特定される、時刻源の精度が劣化しているマスターノード又は前記平均値に基づいて特定されるマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する。
【００１２】
本発明の一態様は、複数のノードを制御する制御サーバであって、各マスターノードとの間で行われる時刻同期処理時の所定のタイミングで取得される時刻の平均値を算出する算出部と、各マスターノードにおける時刻同期処理時の所定のタイミングの時刻と、算出された前記平均値との差分値のいずれが、所定の閾値の範囲外である場合に、閾値の範囲外となった時刻に関連するマスターノードの時刻源の精度の劣化を示す通知を前記マスターノードに接続するスレーブノードに送信する送信部と、を備える制御サーバである。
【００１３】
本発明の一態様は、スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を前記スレーブノードとの間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、前記条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定ステップ、を有する時刻同期先決定方法である。
【００１４】
本発明の一態様は、スレーブノードにおける時刻をマスターノードにおける時刻に同期させるための処理である時刻同期処理を前記スレーブノードとの間で行う複数のマスターノードのいずれかのマスターノードの時刻源の精度の劣化を示す条件が満たされた場合に、前記条件が満たされたマスターノードを除く他のマスターノードを自装置が同期するマスターノードに決定する決定ステップ、をコンピュータに実行させるためのコンピュータプログラムである。
【発明の効果】
【００１５】
本発明により、複数のマスターノードのいずれかのマスターノードの時刻源の精度が劣化した場合におけるスレーブノードの時刻同期の精度低下を抑えることが可能となる。
【図面の簡単な説明】
【００１６】
【図１】ＩＥＥＥ１５８８の時刻同期アルゴリズムによる通信シーケンスの動作を表すシーケンス図である。
【図２】本発明の時刻同期システム１００のシステム構成を示す図である。
【図３】マスターノード１０及びスレーブノード２０の概略ブロック図である。
【図４】判定処理の判定基準に関する概略図である。
【図５】本実施形態におけるスレーブノード２０の処理の流れを示すフローチャートである。
【図６】変形例における判定処理の判定基準に関する概略図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施形態を、図面を参照しながら説明する。
まず、図１を用いてＩＥＥＥ１５８８の時刻同期アルゴリズムについて説明する。図１は、ＩＥＥＥ１５８８の時刻同期アルゴリズムによる通信シーケンスの動作を表すシーケンス図である。図１では、マスターノードとスレーブノードとが双方向通信を行っており、スレーブノードが定期的にマスターノードの時刻にスレーブノードの時刻を同期させる。
【００１８】
マスターノードは、スレーブノードに対して定期的にＳｙｎｃメッセージを送信する（ステップＳ１００）。Ｓｙｎｃメッセージは、時刻同期の動作を開始するために送信されるメッセージである。マスターノードは、Ｓｙｎｃメッセージの送信時刻（以下、「Ｓｙｎｃ送信時刻」という。）Ｔｍ（０）を記録する（ステップＳ１０１）。次に、マスターノードは、スレーブノードに対して、Ｆｏｌｌｏｗ＿ｕｐメッセージを送信する（ステップＳ１０２）。この際、マスターノードは、Ｆｏｌｌｏｗ＿ｕｐメッセージの中に、Ｓｙｎｃ送信時刻Ｔｍ（０）を格納する。Ｆｏｌｌｏｗ＿ｕｐメッセージは、Ｓｙｎｃメッセージが送信された後に、Ｓｙｎｃ送信時刻Ｔｍ（０）の時刻情報を通知するために送信されるメッセージである。
【００１９】
スレーブノードは、Ｓｙｎｃメッセージを受信すると、この受信処理をトリガとしてＳｙｎｃメッセージの受信時刻（以下、「Ｓｙｎｃ受信時刻」という。）Ｔｓ（０）を記録する（ステップＳ１０３）。次に、スレーブノードはＦｏｌｌｏｗ＿ｕｐメッセージを受信し、Ｆｏｌｌｏｗ＿ｕｐメッセージ中に格納されるＳｙｎｃ送信時刻Ｔｍ（０）を抽出し記録する。次に、スレーブノードは、マスターノードに対して、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを送信する（ステップＳ１０４）。Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージは、スレーブノードがマスターノードから送信されるＦｏｌｌｏｗ＿ｕｐメッセージを受信した後に、マスターノードにＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを要求するために送信されるメッセージである。そして、スレーブノードは、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの送信時刻（以下、「Ｄｅｌａｙ送信時刻」という。）Ｔｓ（１）を記録する（ステップＳ１０５）。
【００２０】
マスターノードは、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信すると、この受信処理をトリガとしてＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの受信時刻（以下、「Ｄｅｌａｙ受信時刻」という。）Ｔｍ（１）を記録する（ステップＳ１０６）。次に、マスターノードは、スレーブノードに対してＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを送信する（ステップＳ１０７）。この際、マスターノードは、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージの中に、Ｄｅｌａｙ受信時刻Ｔｍ（１）を格納する。Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージは、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの応答として送信されるメッセージである。
【００２１】
スレーブノードは、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信すると、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ中に格納されるＤｅｌａｙ受信時刻Ｔｍ（１）を抽出し記録する。
スレーブノードは、Ｓｙｎｃ送信時刻Ｔｍ（０）、Ｓｙｎｃ受信時刻Ｔｓ（０）に基づいて、以下の式１によってマスターノードにおける時刻（以下、「マスター時刻」という。）とスレーブノードにおける時刻（以下、「スレーブ時刻」という。）との差分ＭＳ＿Ｄｉｆｆを算出する。
【数１】
2015188152.tif 000003
【００２２】
また、スレーブノードは、Ｄｅｌａｙ送信時刻Ｔｓ（１）、Ｄｅｌａｙ受信時刻Ｔｍ（１）に基づいて、以下の式２によってスレーブ時刻とマスター時刻との差分ＳＭ＿Ｄｉｆｆを求める。
【数２】
2015188152.tif 000004
【００２３】
式１のＭＳ＿Ｄｅｌａｙはマスターノードからスレーブノードへの伝送遅延を表し、式２のＳＭ＿Ｄｅｌａｙはスレーブノードからマスターノードへの伝送遅延を表し、式１及び式２のＯｆｆｓｅｔ（オフセット）はマスターノードに対するスレーブノードの時刻オフセット（進み）を表す。なお、伝送遅延ＭＳ＿Ｄｅｌａｙ及びＳＭ＿Ｄｅｌａｙは、マスターノードとスレーブノードとの間の伝播遅延と、マスターノードとスレーブノードとの間のネットワーク上の中継ノードで生じるキューイング遅延から構成される。
【００２４】
以上のように、マスターノードに対するスレーブノードの時刻のずれであるＯｆｆｓｅｔに関して、式１及び式２の２つの式が得られる。しかし、この２つの式には、Ｏｆｆｓｅｔの他にＭＳ＿Ｄｅｌａｙ及びＳＭ＿Ｄｅｌａｙという未知のパラメータが含まれている。したがって、３つの未知のパラメータに対し２つの式しか存在しないため、Ｏｆｆｓｅｔを算出することができない。そのため、ＩＥＥＥ１５８８では、マスターノードからスレーブノードへの伝送遅延ＭＳ＿Ｄｅｌａｙと、スレーブノードからマスターノードへの伝送遅延ＳＭ＿Ｄｅｌａｙとが等しく、いずれの値もＤｅｌａｙであると仮定して、上記の式１及び式２を以下の式３及び式４に変形する。
【００２５】
【数３】
2015188152.tif 000005
【数４】
2015188152.tif 000006
式３及び式４の連立方程式を解くことによって、以下の式５が導出される。
【数５】
2015188152.tif 000007
【００２６】
スレーブノードは、導出された式５に基づいてＯｆｆｓｅｔを算出する。スレーブノードは、算出したＯｆｆｓｅｔに基づいてスレーブ時刻を補正することによって、スレーブ時刻をマスター時刻に同期させる。以上が、ＩＥＥＥ１５８８に規定される時刻同期アルゴリズムである。なお、以下の説明では、上述した時刻同期アルゴリズムによる処理を時刻同期処理と称する。
【００２７】
図２は、本発明の時刻同期システム１００のシステム構成を示す図である。本発明の時刻同期システム１００は、複数のマスターノード１０−１〜１０−Ｍ（Ｍは２以上の整数）及び複数のスレーブノード２０−１〜２０−Ｎ（Ｎは２以上の整数）を備える。マスターノード１０−１〜１０−Ｍ及びスレーブノード２０−１〜２０−Ｎはそれぞれ、ネットワーク３０−１〜３０−Ｌ（Ｌは２以上の整数）を介して互いに通信可能に接続される。なお、以下の説明では、マスターノード１０−１〜１０−Ｍについて特に区別しない場合にはマスターノード１０と記載する。また、スレーブノード２０−１〜２０−Ｎについて特に区別しない場合にはスレーブノード２０と記載する。また、以下の説明では、ネットワーク３０−１〜３０−Ｌについて特に区別しない場合にはネットワーク３０と記載する。
【００２８】
マスターノード１０は、定期的にスレーブノード２０との間でＰＴＰメッセージ（制御メッセージ）を送受信する。ＰＴＰメッセージとは、時刻同期処理に使用される制御メッセージであり、例えばＡｎｎｏｕｎｃｅメッセージ、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージである。
スレーブノード２０は、マスターノード１０との間で時刻同期処理を行うことによって自装置の時刻をマスターノード１０の時刻に同期させる。
ネットワーク３０は、どのように構成されたネットワークでもよい。例えば、ネットワーク３０はＬＡＮ（Local Area Network）を用いて構成されてもよい。
以下、マスターノード１０及びスレーブノード２０の構成の詳細についてそれぞれ説明する。
【００２９】
図３は、マスターノード１０及びスレーブノード２０の概略ブロック図である。
まず、マスターノード１０の具体的な機能構成について説明する。マスターノード１０は、バスで接続されたＣＰＵ（Central Processing Unit）やメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、マスターノード１０は、マスタークロック生成部１０１、時計部１０２、パケット生成部１０３、通信部１０４を備える装置として機能する。なお、マスターノード１０の各機能の全て又は一部は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されてもよい。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されてもよい。
【００３０】
マスタークロック生成部１０１は、例えば、ＶＣＸＯ（Voltage controlled xtal oscillators）等の電圧可変型の水晶発振器等を用いて構成される。また、マスタークロック生成部１０１は、マスタークロックを生成する。具体的には、マスタークロック生成部１０１は、マスターノード１０における１秒の時間幅を決定する。なお、マスタークロック生成部１０１は、マスターノード１０の外部に存在してもよい。
【００３１】
時計部１０２は、マスタークロック生成部１０１が生成したマスタークロックに従い、マスター時刻を決定する。具体的には、時計部１０２は、マスターノード１０において何時何分何秒であるかを決める。時計部１０２は、マスター時刻の時刻情報をパケット生成部１０３に出力する。
【００３２】
パケット生成部１０３は、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを生成する。例えば、パケット生成部１０３は、定期的にＳｙｎｃメッセージを生成する。パケット生成部１０３は、通信部１０４を介してスレーブノード２０にＳｙｎｃメッセージを送信し、略同時に時計部１０２を参照してＳｙｎｃ送信時刻Ｔｍ（０）を記録する。また、例えば、パケット生成部１０３は、Ｓｙｎｃメッセージ送信後に、Ｓｙｎｃ送信時刻Ｔｍ（０）を格納したＦｏｌｌｏｗ＿ｕｐメッセージを生成する。パケット生成部１０３は、通信部１０４を介してスレーブノード２０にＦｏｌｌｏｗ＿ｕｐメッセージを送信する。
【００３３】
また、パケット生成部１０３は、通信部１０４によって受信されるＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージの受信時刻（Ｄｅｌａｙ受信時刻）Ｔｍ（１）を時計部１０２を参照して記録する。その後、パケット生成部１０３は、記録した受信時刻Ｔｍ（１）を格納したＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを生成し、通信部１０４を介してスレーブノード２０にＤｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを送信する。
【００３４】
通信部１０４は、スレーブノード２０との間で通信を行う。例えば、通信部１０４は、スレーブノード２０からＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを受信し、パケット生成部１０３に転送する。また、通信部１０４は、Ｓｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージをスレーブノード２０に送信する。
【００３５】
次に、スレーブノード２０の機能構成を説明する。
スレーブノード２０は、バスで接続されたＣＰＵやメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、スレーブノード２０は、通信部２０１、制御部２０２、同期処理部２０３、時計部２０４、算出部２０５、判定部２０６、決定部２０７を備える装置として機能する。なお、スレーブノード２０の各機能の全て又は一部は、ＡＳＩＣやＰＬＤやＦＰＧＡ等のハードウェアを用いて実現されてもよい。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されてもよい。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されてもよい。
【００３６】
通信部２０１は、各マスターノード１０との間で通信を行う。例えば、通信部２０１は、各マスターノード１０からＳｙｎｃメッセージ、Ｆｏｌｌｏｗ＿ｕｐメッセージ、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージを受信し、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを各マスターノード１０に送信する。
制御部２０２は、スレーブノード２０の各機能部を制御する。制御部２０２は、Ｆｏｌｌｏｗ＿ｕｐメッセージの受信後、Ｄｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを生成する。その後、制御部２０２は、生成したＤｅｌａｙ＿Ｒｅｑｕｅｓｔメッセージを通信部２０１に送信させ、略同時に時計部２０４を参照してＤｅｌａｙ送信時刻Ｔｓ（１）を記録する。また、制御部２０２は、Ｓｙｎｃメッセージが通信部２０１から転送された際にＳｙｎｃ受信時刻Ｔｓ（０）を記録する。また、制御部２０２は、Ｆｏｌｌｏｗ＿ｕｐメッセージ中に格納されているＳｙｎｃ送信時刻Ｔｍ（０）を抽出し記録する。また、制御部２０２は、Ｄｅｌａｙ＿Ｒｅｓｐｏｎｓｅメッセージ中に格納されているＤｅｌａｙ受信時刻Ｔｍ（１）を抽出し記録する。その後、制御部２０２は、各時刻情報（Ｓｙｎｃ送信時刻Ｔｍ（０）、Ｓｙｎｃ受信時刻Ｔｓ（０）、Ｄｅｌａｙ送信時刻Ｔｓ（１）、Ｄｅｌａｙ受信時刻Ｔｍ（１））に基づいてＯｆｆｓｅｔを算出する。そして、制御部２０２は、算出したＯｆｆｓｅｔに基づいてスレーブノード２０の時刻を補正する。つまり、制御部２０２は、算出したＯｆｆｓｅｔに基づいて時計部２０４の時刻を補正する。
【００３７】
また、制御部２０２は、時刻同期処理時の所定のタイミングの時刻（以下、「絶対時刻」という。）をマスターノード１０毎に取得する。所定のタイミングは、例えばＯｆｆｓｅｔが算出されたタイミングであってもよいし、スレーブノード２０の時刻が補正されたタイミングであってもよいし、その他のタイミングであってもよい。絶対時刻は、時、分、秒で表される。
【００３８】
同期処理部２０３は、スレーブノード２０における１秒の時間幅を決定する。具体的には、同期処理部２０３は、通信部２０１によって受信されたＳｙｎｃメッセージに基づいてスレーブクロックを生成することによって、スレーブノード２０における１秒の時間幅を決定する。生成されたスレーブクロックは、マスターノード１０のマスタークロックに同期される。同期処理部２０３は、自身のクロックから生成するタイムスタンプとマスターノード１０から受信したタイムスタンプとの差分を計算し、計算された差分を元に自身のクロックを調整できる構成であれば、どのような構成であってもよい。
時計部２０４は、同期処理部２０３によって生成されたスレーブクロックに従い、スレーブ時刻を決定する。具体的には、時計部２０４は、スレーブノード２０において何時何分何秒であるかを決める。時計部２０４は、スレーブ時刻の時刻情報を制御部２０２に出力する。
【００３９】
算出部２０５は、マスターノード１０毎に取得された絶対時刻の平均値を算出する。
判定部２０６は、算出部２０５によって算出された絶対時刻の平均値と、各マスターノード１０から取得された絶対時刻とに基づいて、時刻源の精度が劣化しているマスターノード１０が存在するか否か判定する。
【００４０】
決定部２０７は、判定結果に応じて複数のマスターノード１０の中から自装置が同期するマスターノード１０を決定する。具体的には、時刻源の精度が劣化しているマスターノード１０が存在すると判定された場合、決定部２０７は時刻源の精度が劣化していると判定されたマスターノード１０を除くマスターノード１０を、時刻源の精度が劣化していないマスターノード１０と判断して自装置が同期するマスターノード１０に決定する。一方、時刻源の精度が劣化しているマスターノード１０が存在しないと判定された場合、決定部２０７は全てのマスターノード１０を自装置が同期するマスターノード１０に決定する。決定部２０７は、決定結果を制御部２０２に出力する。
【００４１】
図４は、判定部２０６が行う判定処理の判定基準に関する概略図である。以下、図４を用いて、判定部２０６が行う判定処理について具体的に説明する。なお、図４では、１台のスレーブノード２０が時刻同期処理を行っているマスターノード１０の台数が３台である場合を例に説明する。
図４において、縦軸は絶対時刻（時、分、秒）を表し、横軸ｔは時間を表す。図４には、５つの遷移線が表されている。５つの遷移線は、遷移線３１、遷移線３２、遷移線３３、遷移線３４、遷移線３５である。遷移線３１〜３３は、スレーブノード２０が各マスターノード１０（図４では、３台）との時刻同期処理時の所定のタイミングで取得した絶対時刻の推移を表す。遷移線３４は、取得された絶対時刻の平均値Ｍに所定の値Ａを加算した上限値（Ｍ＋Ａ）の推移を表す。遷移線３５は、取得された絶対時刻の平均値Ｍを所定の値Ａだけ減算した下限値（Ｍ−Ａ）の推移を表す。
【００４２】
まず、図４（Ａ）について説明する。
図４（Ａ）に示されるように、遷移線３１〜３３のいずれもが、遷移線３４を超えていない、かつ、遷移線３５を下回っていない場合、判定部２０６は遷移線３１〜３３の全てが絶対時刻の平均値Ｍに所定の値Ａを加減した閾値の範囲内であると判定する。この場合、判定部２０６は、時刻源の精度が劣化しているマスターノード１０がないと判定する。
【００４３】
次に、図４（Ｂ）について説明する。
図４（Ｂ）に示されるように、遷移線３１が、遷移線３４で示される上限値（Ｍ＋Ａ）を超えている場合（円３６内）、遷移線３１で示される絶対時刻に関連するマスターノード１０の時刻源の精度が劣化しているおそれがある。このような時刻源の精度が劣化しているおそれのあるマスターノード１０を検知するため、判定部２０６は、各マスターノード１０との間で取得される絶対時刻のいずれかが、絶対時刻の平均値Ｍに所定の値Ａを加算した値（遷移線３４）を超えている場合、時刻源の精度が劣化しているマスターノード１０があると判定する。この場合、判定部２０６は、絶対時刻の平均値Ｍに所定の値Ａを加算した値（遷移線３４）を超えている絶対時刻に関連するマスターノード１０を、時刻源の精度が劣化しているマスターノード１０と判定する。
【００４４】
また、図４には図示していないが、判定部２０６は、各マスターノード１０との間で取得される絶対時刻のいずれかが、絶対時刻の平均値Ｍに所定の値Ａを減算した値（遷移線３５）を下回っている場合、時刻源の精度が劣化しているマスターノード１０があると判定する。この場合、判定部２０６は、絶対時刻の平均値Ｍに所定の値Ａを減算した値（遷移線３５）を下回っている絶対時刻に関連するマスターノード１０を、時刻源の精度が劣化しているマスターノード１０と判定する。
【００４５】
上述したように、各マスターノード１０との間で取得される絶対時刻のいずれもが、絶対時刻の平均値Ｍに所定の値Ａを加減した閾値の範囲内（遷移線３４を上限値として遷移線３５を下限値とした範囲内）である場合、判定部２０６は時刻源の精度が劣化しているマスターノード１０がないと判定する。一方、各マスターノード１０との間で取得される絶対時刻のいずれかが、絶対時刻の平均値Ｍに所定の値Ａを加減した閾値の範囲外（遷移線３４を上限値として遷移線３５を下限値とした範囲外）である場合、判定部２０６は時刻源の精度が劣化しているマスターノード１０があると判定する。
【００４６】
図５は、本実施形態におけるスレーブノード２０の処理の流れを示すフローチャートである。
スレーブノード２０は、自装置が同期するマスターノード１０との間で時刻同期処理を行う（ステップＳ２０１）。制御部２０２は、時刻同期処理時を行ったマスターノード１０との間で絶対時刻を取得する（ステップＳ２０２）。制御部２０２は、自装置が同期する全てのマスターノード１０との間で絶対時刻を取得したか否か判定する（ステップＳ２０３）。自装置が同期する全てのマスターノード１０との間で絶対時刻を取得していない場合（ステップＳ２０３−ＮＯ）、ステップＳ２０１以降の処理が繰り返し実行される。この場合、スレーブノード２０は、絶対時刻を取得していないマスターノード１０との間でＳ２０１以降の処理を実行する。
一方、自装置が同期する全てのマスターノード１０との間で絶対時刻を取得した場合（ステップＳ２０３−ＹＥＳ）、算出部２０５は取得された絶対時刻の平均値を算出する（ステップＳ２０４）。
【００４７】
判定部２０６は、時刻源の精度が劣化しているマスターノード１０があるか否か判定する（ステップＳ２０５）。具体的には、各マスターノード１０の絶対時刻のいずれかが、絶対時刻の平均値に所定の値を加減した閾値の範囲外である場合、判定部２０６は時刻源の精度が劣化しているマスターノード１０があると判定する。一方、各マスターノード１０の絶対時刻の全てが、絶対時刻の平均値に所定の値を加減した閾値の範囲内である場合、判定部２０６は時刻源の精度が劣化しているマスターノード１０がないと判定する。
【００４８】
時刻源の精度が劣化しているマスターノード１０がある場合（ステップＳ２０５−ＹＥＳ）、決定部２０７は時刻源の精度が劣化しているマスターノード１０を除くマスターノード１０を自装置が同期するマスターノード１０に決定する（ステップＳ２０７）。つまり、決定部２０７は、時刻源の精度が劣化していないマスターノード１０を自装置が同期するマスターノード１０に決定する。
一方、時刻源の精度が劣化しているマスターノード１０がない場合（ステップＳ２０５−ＮＯ）、決定部２０７は全てのマスターノードを自装置が同期するマスターノード１０に決定する（ステップＳ２０６）。
【００４９】
以上のように構成されたスレーブノード２０では、時刻源の精度が劣化しているおそれのあるマスターノード１０が特定される。通常、時刻源の精度が劣化していない複数のマスターノード１０間では、各マスターノード１０の時刻に大きな違いは見られない。したがって、スレーブノード２０が各マスターノード１０との間で時刻同期処理を行った時のある瞬間の絶対時刻においても大きな違いは見られない。そのため、各マスターノード１０との間で取得された絶対時刻のうち、各絶対時刻の平均値に所定の値を加減した閾値の範囲内に収まらない絶対時刻が存在する場合、範囲内に収まらない絶対時刻に関連するマスターノード１０の時刻源の精度が劣化しているおそれがある。そこで、スレーブノード２０が、時刻源の精度が劣化しているおそれがあると判定されたマスターノード１０を除くマスターノード１０と時刻同期するように自装置を制御する。つまり、スレーブノード２０は、時刻源の精度が劣化していないマスターノード１０と時刻同期処理を行うように制御する。したがって、スレーブノード２０が、時刻源の精度が劣化しているマスターノード１０との間で時刻同期処理を行ってしまうおそれがなくなる。そのため、複数のマスターノード１０のいずれかのマスターノード１０の時刻源の精度が劣化した場合におけるスレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【００５０】
＜変形例＞
１台のスレーブノード２０が上記判定処理を行う対象のマスターノード１０は３台以上であれば何台であってもよい。また、スレーブノード２０のそれぞれは、互いに異なる台数のマスターノード１０と時刻同期処理を行ってもよい。
【００５１】
また、複数のスレーブノード２０のうち、１台のスレーブノード２０が判定処理を行い、判定結果を他のスレーブノード２０に通知するように構成されてもよい。このように構成される場合、１台のスレーブノード２０が判定部２０６を備え、その他のスレーブノード２０が判定部２０６を備えないように構成される。以下、このように構成される場合における時刻同期システム１００の動作について説明する。
【００５２】
判定部２０６を備えるスレーブノード２０は、複数のマスターノード１０−１〜１０−Ｍとの間で時刻同期処理を行う。そして、判定部２０６を備えるスレーブノード２０は、各マスターノード１０−１〜１０−Ｍとの間で取得された各絶対時刻と、各絶対時刻の平均値とに基づいて判定処理を行う。判定処理の結果、時刻源の精度が劣化しているマスターノード１０が存在する場合、判定部２０６を備えるスレーブノード２０は他のスレーブノード２０（判定部２０６を備えないスレーブノード２０）に対して時刻源の精度が劣化しているマスターノード１０の情報（例えば、ＭＡＣアドレスなど）を通知する。
【００５３】
一方、時刻源の精度が劣化しているマスターノード１０が存在しない場合、判定部２０６を備えるスレーブノード２０は他のスレーブノード２０に対して全てのマスターノード１０の時刻源の精度が正常である旨の情報を通知する。
他のスレーブノード２０の決定部２０７は、判定部２０６を備えるスレーブノード２０から通知された情報に基づいて自装置が同期するマスターノード１０を決定する。例えば、他のスレーブノード２０の決定部２０７は、判定部２０６を備えるスレーブノード２０から通知された時刻源の精度が劣化しているマスターノード１０を除くマスターノード１０を、時刻源の精度が劣化していないマスターノード１０と判断して自装置が同期するマスターノード１０に決定する。
【００５４】
このように構成された時刻同期システム１００によれば、全てのスレーブノード２０が判定部２０６を備えている必要がない。つまり、最低１台のスレーブノード２０が判定部２０６を備えていればよい。そのため、製造コストを抑えることができる。また、判定部２０６を備えないスレーブノード２０では、判定処理を行う必要がないため、処理負荷を抑えることができる。さらに、他のスレーブノード２０は、時刻源の精度が劣化していないマスターノード１０と同期するように自装置を制御する。そのため、複数のマスターノード１０のいずれかのマスターノード１０の時刻源の精度が劣化した場合におけるスレーブノード２０の時刻同期の精度低下を抑えることが可能になる。
【００５５】
また、本発明の時刻同期システム１００は、制御サーバを備えるように構成されてもよい。制御サーバは、パーソナルコンピュータ等の情報処理装置を用いて構成され、全てのマスターノード１０及びスレーブノード２０の制御を行う。制御サーバは、スレーブノード２０と略同じ各機能部を有する。制御サーバは、通信部、制御部、同期処理部、時計部、算出部、判定部を備える。各機能部は、スレーブノード２０における同名の各機能部と略同様に機能する。以下、スレーブノード２０における同名の各機能部と異なる処理を行う機能部（通信部、制御部）について説明する。つまり、同期処理部、時計部、算出部、判定部は、スレーブノード２０における同名の各機能部と同様の処理を行う。
【００５６】
通信部は、スレーブノード２０における同名の機能部（通信部２０１）と同様の処理を行う。また、通信部は、時刻源の精度が劣化しているマスターノード１０の情報を、スレーブノード２０に通知する。
制御部は、スレーブノード２０における同名の機能部（制御部２０２）と同様の処理を行う。また、制御部は、判定部の判定結果において時刻源の精度が劣化しているマスターノード１０が存在すると判定された場合、時刻源の精度が劣化しているマスターノード１０の情報を通信部に出力する。
【００５７】
スレーブノード２０の決定部２０７は、通知された情報に基づいて自装置が同期するマスターノード１０を決定する。例えば、スレーブノード２０の決定部２０７は、制御サーバから通知された時刻源の精度が劣化しているマスターノード１０を除くマスターノード１０を、時刻源の精度が劣化していないマスターノード１０と判断して自装置が同期するマスターノード１０に決定する。つまり、スレーブノード２０の決定部２０７は、制御サーバから通知されたマスターノード１０の情報で示されるマスターノード１０を除くマスターノード１０を、時刻源の精度が劣化していないマスターノード１０と判断して自装置が同期するマスターノード１０に決定する。
【００５８】
このように構成された時刻同期システム１００によれば、全てのスレーブノード２０に判定部２０６を備える必要がない。そのため、製造コストを抑えることができる。さらに、制御サーバから判定結果が通知されるため、全てのスレーブノード２０は判定処理を行う必要がない。そのため、スレーブノード２０の処理負荷を軽減することができる。
【００５９】
また、スレーブノード２０は、以下のようにして自装置が同期するマスターノード１０を決定してもよい。具体的には、まず、スレーブノード２０は、他装置（他のスレーブノード２０又は制御サーバ）から時刻源の精度が劣化しているマスターノード１０の情報（例えば、ＭＡＣアドレスなど）を受信する。これにより、スレーブノード２０は、時刻源の精度が劣化しているマスターノード１０の情報を取得する。次に、スレーブノード２０は、複数のマスターノード１０−１〜１０−Ｍとの間で時刻同期処理を行うことによって取得された各絶対時刻と、各絶対時刻の平均値とに基づいて判定処理を行う。これにより、スレーブノード２０は、時刻源の精度が劣化しているマスターノード１０の情報を取得する。その後、スレーブノード２０の決定部２０７は、所定の優先度に基づいて、取得された情報のいずれかの情報で特定されるマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。つまり、スレーブノード２０は、受信された情報により特定されるマスターノード１０又は判定処理によって時刻源の精度が劣化していると特定されたマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。
【００６０】
所定の優先度は、例えば他装置の時刻源の品質を表すクロック品質（以下、「他装置クロック品質」という。）及び自装置の時刻源の品質を表すクロック品質（以下、「自装置クロック品質」という。）に基づいて決定される。より具体的には、他装置クロック品質が自装置クロック品質よりも高い場合、他装置から受信された情報が優先される。この場合、決定部２０７は、受信された情報により特定されるマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。一方、他装置クロック品質が自装置クロック品質よりも低い場合、自装置で行った判定処理によって取得された情報が優先される。この場合、決定部２０７は、判定処理によって時刻源の精度が劣化していると特定されたマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。
【００６１】
以上のように構成されたスレーブノード２０は、時刻源の品質が高い装置によって時刻源の精度が劣化していると特定されたマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。したがって、時刻源の精度が劣化していると特定されたマスターノード１０の時刻が劣化している可能性が高い。そのため、精度の高い同期が可能になる。
【００６２】
本実施形態では、スレーブノード２０が各マスターノード１０との時刻同期処理時の所定のタイミングで取得した絶対時刻が、取得した絶対時刻の平均値Ｍに所定の値Ａを加減した閾値の範囲内であるか否かに応じて時刻源の精度が劣化しているマスターノード１０を判定する構成を示したが、これに限定される必要はない。例えば、スレーブノード２０は、スレーブノード２０が各マスターノード１０との時刻同期処理時の所定のタイミングで取得した絶対時刻と、取得した絶対時刻の平均値Ｍとの差分値が、所定の値±Ａの範囲内であるか否かに応じて時刻源の精度が劣化しているマスターノード１０を判定するように構成されてもよい。以下、図６を用いて具体的に説明する。
【００６３】
図６は、判定部２０６が行う変形例における判定処理の判定基準に関する概略図である。なお、図６では、１台のスレーブノード２０が時刻同期処理を行っているマスターノード１０の台数が３台である場合を例に説明する。
図６において、縦軸は位相を表し、横軸ｔは時間を表す。位相は、スレーブノード２０が各マスターノード１０との時刻同期処理時の所定のタイミングで取得した絶対時刻と、取得した絶対時刻の平均値Ｍとの差分値（例えば、位相＝平均値Ｍ−各絶対時刻）で表される。また、図６に示される遷移線３７及び遷移線３８は、時刻源の精度が劣化しているマスターノード１０が存在すると判定する基準となる上限値Ａ及び下限値−Ａを表す。遷移線３９、遷移線４０及び遷移線４１は、スレーブノード２０が各マスターノード１０（図６では、３台）との時刻同期処理時の所定のタイミングで取得した絶対時刻と、取得した絶対時刻の平均値Ｍとの差分値の推移を表す。各マスターノード１０との時刻同期処理時の所定のタイミングで取得した絶対時刻と、取得した絶対時刻の平均値Ｍとの差分値（遷移線３９、遷移線４０及び遷移線４１）のいずれもが、所定の値±Ａの範囲内（遷移線３７を上限値として遷移線３８を下限値とした範囲内）である場合、判定部２０６は時刻源の精度が劣化しているマスターノード１０がないと判定する。この場合、決定部２０７は、全てのマスターノード１０を自装置が同期するマスターノード１０に決定する。
【００６４】
一方、各マスターノード１０との時刻同期処理時の所定のタイミングで取得した絶対時刻と、取得した絶対時刻の平均値Ｍとの差分値（遷移線３９、遷移線４０及び遷移線４１）のいずれかが、所定の値±Ａの範囲外（遷移線３７を上限値として遷移線３８を下限値とした範囲外）である場合、判定部２０６は時刻源の精度が劣化しているマスターノード１０があると判定する。この場合、決定部２０７は、時刻源の精度が劣化しているマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。すなわち、決定部２０７は、所定の値±Ａの範囲外である差分値に関連するマスターノード１０を除く他のマスターノード１０を自装置が同期するマスターノード１０に決定する。
【００６５】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００６６】
１０（１０−１〜１０−Ｍ）…マスターノード，  ２０（２０−１〜２０−Ｎ）…スレーブノード，  ３０（３０−１〜３０−Ｌ）…ネットワーク，  １０１…マスタークロック生成部，  １０２…時計部，  １０３…パケット生成部，  １０４…通信部，  ２０１…通信部，  ２０２…制御部，  ２０３…同期処理部，  ２０４…時計部，  ２０５…算出部，  ２０６…判定部，  ２０７…決定部
【図１】
2015188152.tif 000008
【図２】
2015188152.tif 000009
【図３】
2015188152.tif 000010
【図４】
2015188152.tif 000011
【図５】
2015188152.tif 000012
【図６】
2015188152.tif 000013