(57)【要約】【課題】不要な補正処理を抑えつつ、時刻同期の精度を向上すること。【解決手段】双方向通信を行うマスターノードとスレーブノードとを備え、スレーブノードにおける時刻をマスターノードにおける時刻に同期させる時刻同期システムであって、マスターノードは、スレーブノードと制御メッセージの送受信を行う通信部を備え、スレーブノードは、マスターノードと制御メッセージの送受信を行う通信部と、通信部が受信した制御メッセージを蓄積するバッファと、バッファのメモリ量が変化した場合に自装置の時刻を補正し、バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正部と、を備える時刻同期システム。【選択図】図２
2014171028.tif 000002
【特許請求の範囲】
【請求項１】
双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムであって、
前記マスターノードは、
前記スレーブノードと制御メッセージの送受信を行う通信部を備え、
前記スレーブノードは、
前記マスターノードと制御メッセージの送受信を行う通信部と、
前記通信部が受信した前記制御メッセージを蓄積するバッファと、
前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正部と、
を備える時刻同期システム。
【請求項２】
前記バッファのメモリ量に変化があったか否かを監視する周波数同期監視部を更に備え、
前記時刻補正部は、前記周波数同期監視部によって前記バッファのメモリ量に変化があったと判定された場合に自装置の時刻を補正する請求項１に記載の時刻同期システム。
【請求項３】
双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムが行う時刻同期方法であって、
前記マスターノードが、
前記スレーブノードと制御メッセージの送受信を行う通信ステップと、
前記スレーブノードが、
前記マスターノードと制御メッセージの送受信を行う通信ステップと、
前記通信ステップによって受信された前記制御メッセージをバッファに蓄積する記憶ステップと、
前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正ステップと、
を有する時刻同期方法。
【請求項４】
マスターノードに対して時刻同期を行うスレーブノードであって、
前記マスターノードと制御メッセージの送受信を行う通信部と、
前記通信部が受信した前記制御メッセージを蓄積するバッファと、
前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正部と、
を備えるスレーブノード。
【請求項５】
双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムとして、前記マスターノードに相当する第一のコンピュータ及び前記スレーブノードに相当する第二のコンピュータを動作させるためのコンピュータプログラムであって、
前記第一のコンピュータに対し、
前記スレーブノードと制御メッセージの送受信を行う通信ステップを実行させ、
前記第二のコンピュータに対し、
前記マスターノードと制御メッセージの送受信を行う通信ステップと、
前記通信ステップによって受信された前記制御メッセージをバッファに蓄積する記憶ステップと、
前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正ステップと、
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻同期の技術に関する。
【背景技術】
【０００２】
従来、ネットワーク接続された複数の機器の時刻をマイクロ秒以下の精度で同期させる技術として、ＩＥＥＥ１５８８で定義されたＰＴＰ（Precision Time Protocol）が知られている（例えば、非特許文献１参照）。ＰＴＰでは、マスターノードとスレーブノードとの間で時刻情報を含むメッセージが定期的に交換される。スレーブノードは、マスターノード及びスレーブノードにおけるメッセージが送受信された時刻情報から、マスターノードに対するスレーブノードの時刻のずれ（Offset）を計算する。そして、スレーブノードは、計算したOffsetに基づいてスレーブノードの時刻を補正して、スレーブノードの時刻をマスターノードの時刻に同期させる。
【０００３】
上述したＰＴＰによる時刻同期化の動作では、スレーブノードの時刻が補正された時点においてはマスターノードの時刻とスレーブノードの時刻とが一致（同期）する。しかし、非特許文献１では、マスターノードの時刻とスレーブノードの時刻との間に時刻差が発生する要因であるクロックの周波数補正を行っていない。そのため、スレーブノードの時刻補正後、時間の経過とともに、マスターノードの時刻とスレーブノードの時刻との間の時刻差が再び大きくなってしまうおそれがあった。このような問題に対して特許文献１のような技術が提案されている。特許文献１の技術では、スレーブノードの時刻補正及びクロックの周波数補正を繰り返し実行することによって継続的にスレーブノードの時刻をマスターノードの時刻に同期させることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１９７３２０号公報
【非特許文献】
【０００５】
【非特許文献１】“IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems，” IEEE Standard 1588-2008.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の技術では、スレーブノードの時刻を補正する必要が無い場合であってもスレーブノードの時刻補正及び周波数補正が行われる。例えば、スレーブノードの時刻補正が行われ、マスターノードの時刻とスレーブノードの時刻とが同期している場合、マスターノードとスレーブノードとの周波数同期が行われると、マスターノードの時刻及びスレーブノードの時刻の進み方は一定になる。したがって、スレーブノードの時刻を継続的に補正する必要が無い。しかし、特許文献１の技術では、スレーブノードの時刻補正及び周波数補正が継続的に行われ、不要な補正処理が行われてしまう。そのため、スレーブノードの処理に影響を及ぼしてしまうおそれがあった。
【０００７】
上記事情に鑑み、本発明は、不要な時刻補正処理を抑えつつ、時刻同期の精度を向上させる技術の提供を目的としている。
【課題を解決するための手段】
【０００８】
本発明の一態様は、双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムであって、前記マスターノードは、前記スレーブノードと制御メッセージの送受信を行う通信部を備え、前記スレーブノードは、前記マスターノードと制御メッセージの送受信を行う通信部と、前記通信部が受信した前記制御メッセージを蓄積するバッファと、前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正部と、を備える時刻同期システムである。
【０００９】
本発明の一態様は、上記の時刻同期システムであって、前記バッファのメモリ量に変化があったか否かを監視する周波数同期監視部を更に備え、前記時刻補正部は、前記周波数同期監視部によって前記バッファのメモリ量に変化があったと判定された場合に自装置の時刻を補正する。
【００１０】
本発明の一態様は、双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムが行う時刻同期方法であって、前記マスターノードが、前記スレーブノードと制御メッセージの送受信を行う通信ステップと、前記スレーブノードが、前記マスターノードと制御メッセージの送受信を行う通信ステップと、前記通信ステップによって受信された前記制御メッセージをバッファに蓄積する記憶ステップと、前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正ステップと、を有する時刻同期方法である。
【００１１】
本発明の一態様は、マスターノードに対して時刻同期を行うスレーブノードであって、前記マスターノードと制御メッセージの送受信を行う通信部と、前記通信部が受信した前記制御メッセージを蓄積するバッファと、前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正部と、を備えるスレーブノードである。
【００１２】
本発明の一態様は、双方向通信を行うマスターノードとスレーブノードとを備え、前記スレーブノードにおける時刻を前記マスターノードにおける時刻に同期させる時刻同期システムとして、前記マスターノードに相当する第一のコンピュータ及び前記スレーブノードに相当する第二のコンピュータを動作させるためのコンピュータプログラムであって、前記第一のコンピュータに対し、前記スレーブノードと制御メッセージの送受信を行う通信ステップを実行させ、前記第二のコンピュータに対し、前記マスターノードと制御メッセージの送受信を行う通信ステップと、前記通信ステップによって受信された前記制御メッセージをバッファに蓄積する記憶ステップと、前記バッファのメモリ量が変化した場合に自装置の時刻を補正し、前記バッファのメモリ量が変化しなかった場合に自装置の時刻を補正しない時刻補正ステップと、を実行させるためのコンピュータプログラムである。
【発明の効果】
【００１３】
本発明により、不要な補正処理を抑えつつ、時刻同期の精度を向上させることが可能となる。
【図面の簡単な説明】
【００１４】
【図１】ＩＥＥＥ１５８８の時刻同期アルゴリズムによる通信シーケンスの動作を表すシーケンス図である。
【図２】マスターノード１０及びスレーブノード２０の機能構成を表す概略ブロック図である。
【図３】本実施形態におけるスレーブノード２０による時刻同期処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態を、図面を参照しながら説明する。
まず、図１を用いてＩＥＥＥ１５８８の時刻同期アルゴリズムについて説明する。図１は、ＩＥＥＥ１５８８の時刻同期アルゴリズムによる通信シーケンスの動作を表すシーケンス図である。図１では、マスターノード１０とスレーブノード２０とが双方向通信を行っており、スレーブノード２０が定期的にマスターノード１０の時刻にスレーブノード２０の時刻を同期させる。
【００１６】
マスターノード１０は、スレーブノード２０に対して、定期的にSyncメッセージを送信する（ステップＳ１００）。マスターノード１０は、Syncメッセージの送信時刻（以下、「Sync送信時刻」という。）Tm(0)を記録する（ステップＳ１０１）。次に、マスターノード１０は、スレーブノード２０に対して、Follow_upメッセージを送信する（ステップＳ１０２）。この際、マスターノード１０は、Follow_upメッセージの中に、Sync送信時刻Tm(0)を格納する。
【００１７】
スレーブノード２０は、Syncメッセージを受信すると、この受信処理をトリガとしてSyncメッセージの受信時刻（以下、「Sync受信時刻」という。）Ts(0)を記録する（ステップＳ１０３）。次に、スレーブノード２０はFollow_upメッセージを受信し、Follow_upメッセージ中に格納されるSync送信時刻Tm(0)を抽出し記録する。次に、スレーブノード２０は、マスターノード１０に対して、Delay_Requestメッセージを送信する（ステップＳ１０４）。そして、スレーブノード２０は、Delay_Requestメッセージの送信時刻（以下、「Delay送信時刻」という。）Ts(1)を記録する（ステップＳ１０５）。
【００１８】
マスターノード１０は、Delay_Requestメッセージを受信すると、この受信処理をトリガとしてDelay_Requestメッセージの受信時刻（以下、「Delay受信時刻」という。）Tm(1)を記録する（ステップＳ１０６）。次に、マスターノード１０は、スレーブノード２０に対してDelay_Responseメッセージを送信する（ステップＳ１０７）。この際、マスターノード１０は、Delay_Responseメッセージの中に、Delay受信時刻Tm(1)を格納する。
【００１９】
スレーブノード２０は、Delay_Responseメッセージを受信すると、Delay_Responseメッセージ中に格納されるDelay受信時刻Tm(1)を抽出し記録する。
スレーブノード２０は、Sync送信時刻Tm(0)、Sync受信時刻Ts(0)に基づいて、以下の式１によってマスターノード１０における時刻（以下、「マスター時刻」という。）とスレーブノード２０における時刻（以下、「スレーブ時刻」という。）との差分MS_Diffを算出する。
【数１】
2014171028.tif 000003
【００２０】
また、スレーブノード２０は、Delay送信時刻Ts(1)、Delay受信時刻Tm(1)に基づいて、以下の式２によってスレーブ時刻とマスター時刻との差分SM_Diffを求める。
【数２】
2014171028.tif 000004
【００２１】
式１のMS_Delayはマスターノード１０からスレーブノード２０への伝送遅延を表し、式２のSM_Delayはスレーブノード２０からマスターノード１０への伝送遅延を表し、式１及び式２のOffsetはマスターノード１０に対するスレーブノード２０の時刻オフセット（進み）を表す。なお、伝送遅延MS_Delay及びSM_Delayは、マスターノード１０とスレーブノード２０との間の伝播遅延と、マスターノード１０とスレーブノード２０との間のネットワーク上の中継ノードで生じるキューイング遅延から構成される。
【００２２】
以上のように、マスターノード１０に対するスレーブノード２０の時刻のずれであるOffsetに関して、式１及び式２の二つの式が得られる。しかし、この二つの式には、Offsetの他にMS_Delay及びSM_Delayという未知のパラメータが含まれている。したがって、三つの未知のパラメータに対し二つの式しか存在しないため、Offsetを算出することができない。そのため、ＩＥＥＥ１５８８では、マスターノード１０からスレーブノード２０への伝送遅延MS_Delayと、スレーブノード２０からマスターノード１０への伝送遅延SM_Delayとが等しく、いずれの値もDelayであると仮定して、上記の式１及び式２を以下の式３及び式４に変形する。
【００２３】
【数３】
2014171028.tif 000005
【数４】
2014171028.tif 000006
式３及び式４の連立方程式を解くことによって、以下の式５が導出される。
【数５】
2014171028.tif 000007
【００２４】
スレーブノード２０は、導出された式５に基づいてOffsetを算出する。スレーブノード２０は、算出したOffsetに基づいてスレーブ時刻を補正することによって、スレーブ時刻をマスター時刻に同期させる。以上が、ＩＥＥＥ１５８８に規定される時刻同期アルゴリズムである。
【００２５】
図２は、マスターノード１０及びスレーブノード２０の機能構成を表す概略ブロック図である。まず、マスターノード１０の機能構成を説明する。
マスターノード１０は、バスで接続されたＣＰＵ（Central Processing Unit）やメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、マスターノード１０は、マスタークロック生成部１１、時計部１２、パケット生成部１３、通信部１４を備える装置として機能する。なお、マスターノード１０の各機能の全て又は一部は、ＡＳＩＣ（Application Specific Integrated Circuit）やＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されても良い。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されても良い。
【００２６】
マスタークロック生成部１１は、例えば、ＶＣＸＯ（Voltage controlled xtal oscillators）等の電圧可変型の水晶発振器等を用いて構成される。また、マスタークロック生成部１１は、マスタークロックを生成する。具体的には、マスタークロック生成部１１は、マスターノード１０における１秒の時間幅を決定する。なお、マスタークロック生成部１１は、マスターノード１０の外部に存在しても良い。
【００２７】
時計部１２は、マスタークロック生成部１１が生成したマスタークロックに従い、マスター時刻を決定する。具体的には、時計部１２は、マスターノード１０において何時何分何秒であるかを決める。時計部１２は、マスター時刻の時刻情報をパケット生成部１３に出力する。
【００２８】
パケット生成部１３は、ＰＴＰメッセージを生成する。ＰＴＰメッセージ（制御メッセージ）とは、具体的には、Syncメッセージ、Follow_upメッセージ、Delay_Responseメッセージである。Syncメッセージは、時刻同期化の動作を開始するために送信されるメッセージである。Follow_upメッセージは、Syncメッセージが送信された後に、Sync送信時刻Tm(0)の時刻情報を通知するために送信されるメッセージである。Delay_Responseメッセージは、マスターノード１０がスレーブノード２０から送信されるＰＴＰメッセージに応答するために送信されるメッセージである。
【００２９】
パケット生成部１３は、定期的に通信部１４を介してSyncメッセージをスレーブノード２０に送信し、同時に時計部１２を参照してSync送信時刻Tm(0)を記録する。また、パケット生成部１３は、Syncメッセージ送信後に、Sync送信時刻Tm(0)を格納したFollow_upメッセージを生成する。パケット生成部１３は、通信部１４を介してスレーブノード２０にFollow_upメッセージを送信する。
【００３０】
また、パケット生成部１３は、通信部１４によって受信されるDelay_Requestメッセージの受信時刻（Delay受信時刻）Tm(1)を格納したDelay_Responseメッセージを生成する。パケット生成部１３は、通信部１４を介してスレーブノード２０にDelay_Responseメッセージを送信する。
通信部１４は、スレーブノード２０との間で通信を行う。例えば、通信部１４は、スレーブノード２０からDelay_Requestメッセージを受信し、パケット生成部１３に転送する。また、通信部１４は、Syncメッセージ、Follow_upメッセージ、Delay_Responseメッセージをスレーブノード２０に送信する。
【００３１】
次に、スレーブノード２０の機能構成を説明する。
スレーブノード２０は、バスで接続されたＣＰＵやメモリや補助記憶装置などを備え、時刻同期用プログラムを実行する。時刻同期用プログラムの実行によって、スレーブノード２０は、通信部２１、制御部２２、ＰＬＬ（Phase Lock Loop）部２３、時計部２４、バッファメモリ２５、周波数同期監視部２６、演算部２７、時刻補正部２８を備える装置として機能する。また、ＰＬＬ部２３は、位相比較器３０、ＬＰＦ（Low-pass filter）３１、ＰＩ（Proportional Integral）制御器３２、ＶＣＯ（voltage controlled oscillator）３３、カウンタ３４として機能する。なお、スレーブノード２０の各機能の全て又は一部は、ＡＳＩＣやＰＬＤやＦＰＧＡ等のハードウェアを用いて実現されても良い。また、時刻同期用プログラムは、コンピュータ読み取り可能な記録媒体に記録されても良い。コンピュータ読み取り可能な記録媒体とは、例えばフレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置である。また、時刻同期用プログラムは、電気通信回線を介して送受信されても良い。
【００３２】
通信部２１は、マスターノード１０との間で通信を行う。例えば、通信部２１は、マスターノード１０からSyncメッセージ、Follow_upメッセージ、Delay_Responseメッセージを受信し、バッファメモリ２５に転送する。また、通信部２１は、Delay_Requestメッセージをマスターノード１０に送信する。
【００３３】
制御部２２は、スレーブノード２０の各機能部を制御する。また、制御部２２は、Delay_Requestメッセージ（制御メッセージ）を生成し、バッファメモリ２５及び通信部２１を介してマスターノード１０にDelay_Requestメッセージを送信する。この際、制御部２２は、時計部２４を参照してDelay送信時刻Ts(1)を記録する。Delay_Requestメッセージは、通信部２１がマスターノード１０から送信されるFollow_upメッセージを受信した後に、マスターノード１０にDelay_Responseメッセージを要求するために送信されるメッセージである。
【００３４】
また、制御部２２は、バッファメモリ２５からSyncメッセージが転送された際に時計部２４を参照してSync受信時刻Ts(0)を記録する。また、制御部２２は、転送されたSyncメッセージをＰＬＬ部２３に出力する。また、制御部２２は、Follow_upメッセージ中に格納されているSync送信時刻Tm(0)を抽出し記録する。また、制御部２２は、Delay_Responseメッセージ中に格納されているDelay受信時刻Tm(1)を抽出し記録する。その後、制御部２２は、各時刻情報（Sync送信時刻Tm(0)、Sync受信時刻Ts(0)、Delay送信時刻Ts(1)、Delay受信時刻Tm(1)）を演算部２７に出力する。
【００３５】
ＰＬＬ部２３は、マスターノード１０から送信されたSyncメッセージのパケットに基づいてスレーブクロックを生成する。以下、ＰＬＬ部２３の具体的な構成例について説明する。
【００３６】
位相比較器３０は、制御部２２から出力されたSyncメッセージパケットに格納される受信タイムスタンプと、カウンタ３４で生成されるタイムスタンプとの差分信号を計算する。そして、位相比較器３０は、計算結果を表す差分信号をＬＰＦ３１に出力する。
【００３７】
ＬＰＦ３１は、位相比較器３０から出力された差分信号を平準化し、ジッタやノイズを抑圧し、ＰＩ制御器３２に出力する。
ＰＩ制御器３２は、平準化された差分信号が最終的にゼロとなるような制御信号を生成し、ＶＣＯ３３に出力する。
【００３８】
ＶＣＯ３３は、ＰＩ制御器３２から出力された制御信号によって決定される周波数のクロック（スレーブクロック）を生成し、カウンタ３４に出力する。
カウンタ３４は、ＶＣＯ３３によって生成されたスレーブクロックを元にタイムスタンプを生成し、位相比較器３０に転送する。
【００３９】
以上説明したＰＬＬ部２３の動作によって、ＶＣＯ３３によって生成されるスレーブノード２０のスレーブクロックは、マスターノード１０のマスタークロックに同期される。なお、上述したＰＬＬ部２３の構成は一例に過ぎない。即ち、ＰＬＬ部２３は、自身のクロックから生成するタイムスタンプとマスターノード１０から受信したタイムスタンプとの差分を計算し、計算された差分を元に自身のクロックを調整できる構成であれば、どのような構成であっても良い。
【００４０】
時計部２４は、ＶＣＯ３３によって生成されるスレーブクロックに従い、スレーブノード２０のスレーブ時刻を決定する。具体的には、時計部２４は、スレーブノード２０において何時何分何秒であるかを決める。時計部２４は、スレーブ時刻の時刻情報を制御部２２に出力する。
【００４１】
バッファメモリ２５は、通信部２１から受信パケット（Syncメッセージ、Follow_upメッセージ、Delay_Responseメッセージの各パケット）が転送されると、受信パケットを蓄積する。バッファメモリ２５は、蓄積された受信パケットを、所定のタイミングで制御部２２へ転送する。また、バッファメモリ２５は、制御部２２から送信パケット（delay_Requestメッセージのパケット）が転送されると、送信パケットを蓄積する。バッファメモリ２５は、蓄積された送信パケットを、所定のタイミングで通信部２１へ転送する。マスターノード１０とスレーブノード２０とが周波数同期している場合、バッファメモリ２５に受信パケットが蓄積されるタイミングと、バッファメモリ２５から受信パケットが転送されるタイミングとが略一致する。そのため、バッファメモリ２５において受信パケットが占めるメモリ量は一定となる。
【００４２】
周波数同期監視部２６は、バッファメモリ２５を参照することによってバッファメモリ２５のメモリ量に変化があったか否かを監視する。周波数同期監視部２６が監視するメモリ量とは、受信パケットのバッファリングに使用されている容量である。変化があったか否かは、例えば予め設定されている閾値を用いて判断されても良い。すなわち、周波数同期監視部２６は、メモリ量の変化量が閾値を超えた場合に、メモリ量に変化があったと判断しても良い。
バッファメモリ２５のメモリ量に変化があった場合、周波数同期監視部２６は時計部２４のスレーブ時刻を補正するように演算部２７に指示する。一方、バッファメモリ２５のメモリ量に変化がなかった場合、周波数同期監視部２６は時計部２４のスレーブ時刻の補正は必要ないと判定する。
【００４３】
演算部２７は、周波数同期監視部２６からの指示に基づいてOffsetを算出する。例えば、演算部２７は、制御部２２から出力された各時刻情報を用いてOffsetを算出する。
時刻補正部２８は、演算部２７が算出したOffsetの値を用いて時計部２４のスレーブ時刻を補正する。時刻補正部２８のこの処理によって、スレーブノード２０の時計部２４のスレーブ時刻は、マスターノード１０の時計部１２のマスター時刻に同期する。
【００４４】
図３は、本実施形態におけるスレーブノード２０による時刻同期処理の流れを示すフローチャートである。
スレーブノード２０の通信部２１は、マスターノード１０から送信されるSyncメッセージを受信する（ステップＳ２０１）。具体的には、通信部２１は、マスターノード１０からSyncメッセージを受信し、受信したSyncメッセージをバッファメモリ２５に転送する。制御部２２は、バッファメモリ２５からSyncメッセージを受けると、時計部２４を参照してSync受信時刻Ts(0)を記録する。
【００４５】
次に、通信部２１は、マスターノード１０から送信されるFollow_upメッセージを受信する（ステップＳ２０２）。具体的には、通信部２１は、マスターノード１０からFollow_upメッセージを受信し、受信したFollow_upメッセージを制御部２２に転送する。制御部２２は、Follow_upメッセージ中に格納されているSync送信時刻Tm(0)を抽出し記録する。
【００４６】
制御部２２は、Delay_Requestメッセージを生成し、通信部２１を介してマスターノード１０にDelay_Requestメッセージを送信する（ステップＳ２０３）。この際、制御部２２は、時計部２４を参照してDelay送信時刻Ts(1)を記録する（ステップＳ２０４）。その後、通信部２１は、マスターノード１０から送信されるDelay_Responseメッセージを受信する（ステップＳ２０５）。
【００４７】
具体的には、通信部２１は、マスターノード１０からDelay_Responseメッセージ受信し、受信したDelay_Responseメッセージを制御部２２に転送する。制御部２２は、Delay_Responseメッセージ中に格納されているDelay受信時刻Tm(1)を抽出し記録する。制御部２２は、記録している各時刻情報（Sync送信時刻Tm(0)、Sync受信時刻Ts(0)、Delay送信時刻Ts(1)、Delay受信時刻Tm(1)）を演算部２７に出力する。
【００４８】
周波数同期監視部２６は、バッファメモリ２５のメモリ量に変化があったか否かを判定する（ステップＳ２０６）。バッファメモリ２５のメモリ量に変化があった場合（ステップＳ２０６−ＹＥＳ）、周波数同期監視部２６は時計部２４のスレーブ時刻の補正が必要であると判定する。その後、周波数同期監視部２６は、時計部２４のスレーブ時刻を補正するように演算部２７に指示する。
【００４９】
演算部２７は、制御部２２から出力された各時刻情報を用いてOffsetを算出する（ステップＳ２０７）。演算部２７は、算出したOffsetを時刻補正部２８に出力する。
時刻補正部２８は、演算部２７が出力したOffsetの値を用いて時計部２４のスレーブ時刻を補正する。具体的には、以下のように時計部２４のスレーブ時刻を補正する。補正前の時計部２４のスレーブ時刻は、マスターノード１０の時計部１２のマスター時刻にOffsetの値が加わった時刻である。そのため、時刻補正部２８は、補正前の時計部２４のスレーブ時刻を、Offsetの値だけ減算した時刻となるように補正する（ステップＳ２０８）。その後、図４の処理が終了する。
【００５０】
また、バッファメモリ２５のメモリ量に変化がなかった場合（ステップＳ２０６−ＮＯ）、周波数同期監視部２６は時計部２４のスレーブ時刻の補正が必要ないと判定し、処理を終了する。
【００５１】
以上のように構成されたスレーブノード２０によれば、バッファメモリ２５のメモリ量に基づいてマスターノード１０とスレーブノード２０との周波数同期の同期はずれが起こったか否かを判定する。そして、マスターノード１０とスレーブノード２０との間で周波数の同期はずれが起こった場合にのみスレーブノード２０のスレーブ時刻の補正が行われる。即ち、マスターノード１０とスレーブノード２０とが周波数同期している場合には、スレーブノード２０のスレーブ時刻の補正が行われない。そのため、不要な補正処理を抑えつつ、時刻同期の精度を向上することが可能となる。
【００５２】
＜変形例＞
一台のマスターノード１０に対してスレーブノード２０が複数台で接続して構成されても良い。
また、本実施例では、マスターノード１０とスレーブノード２０との間で送受信されるメッセージとしてＰＴＰメッセージを示したが、これに限定される必要はない。例えば、ＮＴＰ（Network Time Protocol）メッセージやＳＮＴＰ（Simple Network Time Protocol）メッセージなどのメッセージが用いられても良いし、その他のメッセージが用いられても良い。
また、スレーブノード２０の周波数同期の方法は、上記の方法に限定される必要はない。例えば、スレーブノード２０は、外部から入力される信号に基づいて周波数同期を行っても良い。外部から入力される信号の具体例として、ＧＰＳ（Global Positioning System）信号や周波数網の主発信機から供給される信号などがある。
【００５３】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００５４】
１０…マスターノード，  ２０…スレーブノード，  １１…マスタークロック生成部，  １２…時計部，  １３…パケット生成部，  １４…通信部，  ２１…通信部，  ２２…制御部，  ２３…ＰＬＬ部，  ２４…時計部，  ２５…バッファメモリ（バッファ），  ２６…周波数同期監視部，  ２７…演算部，  ２８…時刻補正部，  ３０…位相比較器，  ３１…ＬＰＦ，  ３２…ＰＩ制御器，  ３３…ＶＣＯ，  ３４…カウンタ
【図１】
2014171028.tif 000008
【図２】
2014171028.tif 000009
【図３】
2014171028.tif 000010