(57)【特許請求の範囲】
【請求項１】
中継遅延が一定でない中継装置を介して接続されるマスタ装置とスレーブ装置とを有し、
前記マスタ装置は、
フリーランカウンタであるマスタカウンタと、
時刻同期のための時刻同期フレームを送信するタイミングで、現在時刻を前記時刻同期フレームの送信時刻として取得し、前記マスタカウンタのカウント値を送信カウント値として取得し、前記送信時刻と前記送信カウント値とを前記時刻同期フレームに格納し、前記時刻同期フレームを前記スレーブ装置に送信する送信部とを有し、
前記スレーブ装置は、
前記マスタカウンタから独立したフリーランカウンタであるスレーブカウンタと、
前記時刻同期フレームを受信する受信部と、
前記時刻同期フレームの受信時刻と、前記受信時刻における前記スレーブカウンタのカウント値である受信カウント値とを取得する取得部と、
前記送信時刻と前記受信時刻と、前記送信カウント値と前記受信カウント値との差である送受信カウント差と、過去の計測から得られた伝搬遅延の値である計測伝搬遅延値と、前記計測伝搬遅延値に対応する前記マスタカウンタのカウント値と前記スレーブカウンタのカウント値とから求められる遅延カウント差とを用いて、前記スレーブ装置の時刻を補正する時刻補正部とを有し、
前記時刻補正部は、
前記送受信カウント差と前記遅延カウント差とに基づき、前記時刻同期フレームの中継の際の前記中継装置による中継遅延の値と前記計測伝搬遅延値に含まれる中継遅延の値との差を中継遅延差として算出し、
算出した前記中継遅延差と前記計測伝搬遅延値とを用いて、前記時刻同期フレームの送信での伝搬遅延の値を算出し、
算出した前記時刻同期フレームの送信での伝搬遅延の値と前記送信時刻と前記受信時刻とを用いて、前記マスタ装置の時刻と前記スレーブ装置の時刻との差をオフセット値として算出し、
算出した前記オフセット値を用いて、前記スレーブ装置の時刻を補正する通信システム。
【請求項２】
前記時刻補正部は、
前記送受信カウント差と前記遅延カウント差と、前記マスタ装置のクロック周波数と前記スレーブ装置のクロック周波数とに基づき、前記中継遅延差を算出する請求項１に記載の通信システム。
【請求項３】
前記時刻補正部は、
前記計測伝搬遅延値として、過去の複数の計測において得られた複数の伝搬遅延の値の平均値を用いて、前記スレーブ装置の時刻を補正する請求項１に記載の通信システム。
【請求項４】
前記時刻補正部は、
前記マスタ装置との間でフレームを送受信して計測された前記複数の伝搬遅延の値の平均値を、前記計測伝搬遅延値として用いる請求項３に記載の通信システム。
【請求項５】
フリーランカウンタであるマスタカウンタを有し、時刻同期のための時刻同期フレームを送信するタイミングで、現在時刻を前記時刻同期フレームの送信時刻として取得し、前記マスタカウンタのカウント値を送信カウント値として取得し、前記送信時刻と前記送信カウント値とを前記時刻同期フレームに格納し、前記送信時刻と前記送信カウント値とが格納された前記時刻同期フレームを送信するマスタ装置と、
中継遅延が一定でない中継装置を介して、接続されているスレーブ装置であって、
前記マスタカウンタから独立したフリーランカウンタであるスレーブカウンタと、
前記マスタ装置から送信された前記時刻同期フレームを受信する受信部と、
前記時刻同期フレームの受信時刻と、前記受信時刻における前記スレーブカウンタのカウント値である受信カウント値とを取得する取得部と、
前記送信時刻と前記受信時刻と、前記送信カウント値と前記受信カウント値との差である送受信カウント差と、過去の計測から得られた伝搬遅延の値である計測伝搬遅延値と、前記計測伝搬遅延値に対応する前記マスタカウンタのカウント値と前記スレーブカウンタのカウント値とから求められる遅延カウント差とを用いて、前記スレーブ装置の時刻を補正する時刻補正部とを有し、
前記時刻補正部は、
前記送受信カウント差と前記遅延カウント差とに基づき、前記時刻同期フレームの中継の際の前記中継装置による中継遅延の値と前記計測伝搬遅延値に含まれる中継遅延の値との差を中継遅延差として算出し、
算出した前記中継遅延差と前記計測伝搬遅延値とを用いて、前記時刻同期フレームの送信での伝搬遅延の値を算出し、
算出した前記時刻同期フレームの送信での伝搬遅延の値と前記送信時刻と前記受信時刻とを用いて、前記マスタ装置の時刻と前記スレーブ装置の時刻との差をオフセット値として算出し、
算出した前記オフセット値を用いて、前記スレーブ装置の時刻を補正するスレーブ装置。
【請求項６】
前記時刻補正部は、
前記送受信カウント差と前記遅延カウント差と、前記マスタ装置のクロック周波数と前記スレーブ装置のクロック周波数とに基づき、前記中継遅延差を算出する請求項５に記載のスレーブ装置。
【請求項７】
前記時刻補正部は、
前記計測伝搬遅延値として、過去の複数の計測において得られた複数の伝搬遅延の値の平均値を用いて、前記スレーブ装置の時刻を補正する請求項５に記載のスレーブ装置。
【請求項８】
前記時刻補正部は、
前記マスタ装置との間でフレームを送受信して計測された前記複数の伝搬遅延の値の平均値を、前記計測伝搬遅延値として用いる請求項７に記載のスレーブ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタ装置とスレーブ装置とが含まれる通信システムに関する。
【背景技術】
【０００２】
近年、ＩＥＥＥ１５８８またはＩＥＥＥ８０２．１ＡＳといった時刻同期プロトコルが搭載されたネットワーク装置が普及しつつある。
ＩＥＥＥ１５８８及びＩＥＥＥ８０２．１ＡＳでは、時刻源となるマスタ装置（以下、グランドマスタ装置ともいう）がスレーブ装置に時刻情報が格納されたＳｙｎｃフレームを送信する。そして、スレーブ装置はＳｙｎｃフレームを受信するとＳｙｎｃフレームからマスタ装置の時刻情報を取得する。そして、スレーブ装置は、スレーブ装置の時刻を補正する。これにより。スレーブ装置はマスタ装置に同期することができる。
以下、ＩＥＥＥ１５８８のプロトコルを図１４を用いて説明する。なお、以下の（１）〜（９）は図１４の（１）〜（９）に対応する。【０００３】
（１）グランドマスタ装置（ＧＭ）はＳｙｎｃフレームの送信に際して送信時刻のタイムスタンプｔ１（以下、単に送信時刻ｔ１という）を取得し、Ｓｙｎｃフレームに送信時刻ｔ１を格納する。そして、グランドマスタ装置（ＧＭ）は送信時刻ｔ１が格納されたＳｙｎｃフレームをスレーブ装置（Ｓ１）に送信する。図１４では、送信時刻ｔ１が格納されたＳｙｎｃフレームをＳｙｎｃ（ｔ１）と表記している。
（２）スレーブ装置（Ｓ１）はグランドマスタ装置（ＧＭ）からＳｙｎｃフレームを受信すると、Ｓｙｎｃフレームの受信時刻のタイムスタンプｔ２（以下、単に受信時刻ｔ２という）を取得し、受信時刻ｔ２を保持する。また、スレーブ装置（Ｓ１）はＳｙｎｃフレームに格納された送信時刻ｔ１を抽出し、送信時刻ｔ１を保持する。
（３）スレーブ装置（Ｓ１）はグランドマスタ装置（ＧＭ）に伝搬遅延計測要求フレームであるＤｅｌａｙＲｅｑフレームを送信する。この時、スレーブ装置（Ｓ１）は、ＤｅｌａｙＲｅｑフレームの送信時刻のタイムスタンプｔ３（以下、単に送信時刻ｔ３という）を取得し、送信時刻ｔ３を保持する。
（４）グランドマスタ装置（ＧＭ）はスレーブ装置（Ｓ１）からＤｅｌａｙＲｅｑフレームを受信する。また、グランドマスタ装置（ＧＭ）はＤｅｌａｙＲｅｑフレームの受信時刻のタイムスタンプｔ４（以下、単に受信時刻ｔ４という）を取得し、受信時刻ｔ４を保持する。
（５）グランドマスタ装置（ＧＭ）は受信時刻ｔ４を伝搬遅延計測応答フレームであるＤｅｌａｙＲｅｓｐフレームに格納し、受信時刻ｔ４が格納されたＤｅｌａｙＲｅｓｐフレームをスレーブ装置（Ｓ１）に送信する。図１４では、受信時刻ｔ４が格納されたＤｅｌａｙＲｅｓｐフレームをＤｅｌａｙＲｅｓｐ（ｔ４）と表記している。
（６）スレーブ装置（Ｓ１）はＤｅｌａｙＲｅｓｐフレームに格納された受信時刻ｔ４を抽出し、受信時刻ｔ４を保持する。
（７）スレーブ装置（Ｓ１）は保持している送信時刻ｔ１、受信時刻ｔ２、送信時刻ｔ３及び受信時刻ｔ４を用いてグランドマスタ装置（ＧＭ）とスレーブ装置（Ｓ１）との間の伝搬遅延時間を以下にて算出する。
伝搬遅延時間：Ｄ＝｛（ｔ４−ｔ１）＋（ｔ２−ｔ３）｝／２
（８）グランドマスタ装置（ＧＭ）はある時刻で、送信開始時刻のタイムスタンプｔ＿ｔｘ（以下、単に送信開始時刻ｔ＿ｔｘという）を取得し、送信開始時刻ｔ＿ｔｘをＳｙｎｃフレームに格納してスレーブ装置（Ｓ１）に送信する。図１４では、送信開始時刻ｔ＿ｔｘが格納されたＳｙｎｃフレームをＳｙｎｃ（ｔ＿ｔｘ）と表記している。
（９）スレーブ装置（Ｓ１）はＳｙｎｃ（ｔ＿ｔｘ）を受信するとＳｙｎｃ（ｔ＿ｔｘ）の受信時刻のタイムスタンプｔ＿ｒｘ（以下、単に受信時刻ｔ＿ｒｘという）を取得し、受信時刻ｔ＿ｒｘを保持する。更に、スレーブ装置（Ｓ１）は保持している送信開始時刻ｔ＿ｔｘ、受信時刻ｔ＿ｒｘ、及び上記の（７）で算出した伝搬遅延時間Ｄから、以下にて、グランドマスタ装置（ＧＭ）とスレーブ装置（Ｓ１）との時刻差を算出し、算出した時刻差を用いてスレーブ装置（Ｓ１）の時刻を補正する。
グランドマスタ装置（ＧＭ）との時刻差：Ｏｆｆｓｅｔ＝ｔ＿ｔｘ＋Ｄ−ｔ＿ｒｘ【０００４】
これらの時刻同期プロトコルは、ＦＡ（Ｆａｃｔｏｒｙ  Ａｕｔｏｍａｔｉｏｎ）システム内の装置間の時刻同期に適用されている。装置間で時刻同期を実施することで、短い通信周期のリアルタイム通信を実現することが可能になり、更に、異なる複数の通信プロトコルを時分割で混在させることが可能になる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２６２２９２号公報
【非特許文献】
【０００６】
【非特許文献１】ＩＥＥＥ  Ｓｔｄ  １５８８
【非特許文献２】ＩＥＥＥ  Ｓｔｄ  ８０２．１ＡＳ
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ＩＥＥＥ１５８８またはＩＥＥＥ８０２．１ＡＳでは、伝搬遅延が定期的に計測され、装置間での伝搬遅延時間が定期的に更新される。したがって、ＩＥＥＥ１５８８またはＩＥＥＥ８０２．１ＡＳでは、Ｓｙｎｃフレームの送信とは別のタイミングで計測された伝搬遅延時間を使用して時刻補正が実施される。このとき、Ｓｙｎｃフレームの送信時に計測された伝搬遅延時間が別のタイミングで計測された伝搬遅延時間と大きく異なる場合がある。この場合は、スレーブ装置（Ｓ１）は時刻補正を正確にできないため、スレーブ装置（Ｓ１）とグランドマスタ装置（ＧＭ）との間に同期ずれが生じる。【０００８】
このような同期ずれは、例えば、図１５のように時刻同期プロトコルを用いた時刻同期が行われるネットワークに時刻同期非対応のスイッチングハブ（以下、汎用ハブ（ＨＵＢ）という）が混在する場合に発生する。
ネットワークに汎用ハブ（ＨＵＢ）が混在している場合は、汎用ハブ（ＨＵＢ）のファームウェアの処理時間の揺らぎ、送信待ちにより、汎用ハブ（ＨＵＢ）での中継遅延時間が一定とならない。このため、スレーブ装置（Ｓ１）は正確に伝搬遅延時間を計測することができない。この結果、汎用ハブ（ＨＵＢ）を介してグランドマスタ装置（ＧＭ）接続されたスレーブ装置（Ｓ１）はグランドマスタ装置（ＧＭ）との時刻差を正確に算出することができない。【０００９】
特許文献１の技術では、伝搬遅延が揺らぐ場合に、複数回の伝搬遅延計測を行い、最も通信時間が短い通信を伝搬遅延の揺らぎがない通信と仮定する。そして、特許文献１の技術では、伝搬遅延の揺らぎがないと仮定した通信での伝搬遅延計測値を用いて時刻同期を行う。
しかしながら、この方式では、図１５のように、汎用ハブ（ＨＢＵ）での中継時間の揺らぎにより、グランドマスタ装置（ＧＭ）がＳｙｎｃフレームを送信し、スレーブ装置（Ｓ１）がＳｙｎｃフレームを受信するまでの伝搬遅延時間が予め算出した伝搬遅延時間の平均値と大幅に異なる場合がある。この場合には、スレーブ装置（Ｓ１）が補正した時刻はグランドマスタ装置（ＧＭ）の時刻から大幅にずれる。
以下、図１６を用いて、従来の時刻同期方式の課題を説明する。なお、以下の（１）〜（６）は、図１６の（１）〜（６）に対応する。【００１０】
（１）グランドマスタ装置（ＧＭ）とスレーブ装置（Ｓ１）はＳｙｎｃフレーム、ＤｅｌａｙＲｅｑフレーム及びＤｅｌａｙＲｅｓｐフレームを複数交換し、伝搬遅延時間を算出する。（図１６では、当該シーケンスの図示は省略している）。ここで、最小伝搬遅延時間はＤ＿ｍｉｎ＝３と算出されたとする。また、このときの汎用ハブ（ＨＵＢ）の中継遅延時間はＲＴ＿ｍｉｎ＝１であるとする。
（２）グランドマスタ装置（ＧＭ）は、時刻１１でタイムスタンプｔ＿ｓｙｎｃ（＝１１）をＳｙｎｃフレームに格納し、ｔ＿ｓｙｎｃ（＝１１）が格納されたＳｙｎｃフレームをスレーブ装置（Ｓ１）に送信する。
（３）汎用ハブ（ＨＵＢ）でＳｙｎｃフレームを中継したときの中継遅延時間は３（ＲＴ＝３）であるとする。
（４）スレーブ装置（Ｓ１）は、時刻ｔ＿ｒｘ＝１０でＳｙｎｃフレームを受信する。また、スレーブ装置（Ｓ１）は、タイムスタンプｔ＿ｒｘ（＝１０）を取得する。
（５）スレーブ装置（Ｓ１）は、タイムスタンプｔ＿ｓｙｎｃ（＝１１）、タイムスタンプｔ＿ｒｘ（＝１０）及び最小伝搬遅延時間Ｄ＿ｍｉｎ（＝３）を使用してグランドマスタ装置（ＧＭ）との時刻差（Ｏｆｆｓｅｔ＿ＧＭ）を以下にて算出する。
Ｏｆｆｓｅｔ＿ＧＭ＝ｔ＿ｓｙｎｃ＋Ｄ＿ｍｉｎ−ｔ＿ｒｘ
＝１１＋３−１０＝４
（６）スレーブ装置（Ｓ１）は、時刻１１で以下にてスレーブ装置（Ｓ１）の時刻補正を行う。
Ｔｉｍｅ＿ｃ＝Ｔｉｍｅ＋Ｏｆｆｓｅｔ＿ＧＭ＝１１＋４＝１５【００１１】
以上の手順において、グランドマスタ装置（ＧＭ）がｔ＿ｓｙｎｃ（＝１１）が格納されたＳｙｎｃフレームを送信してから、スレーブ装置（Ｓ１）が受信するまでの実際の時間はＤ＿ｔｒｕｅ＝５である。また、スレーブ装置（Ｓ１）が時刻補正したときのグランドマスタ装置（ＧＭ）の時刻は１７である。よって、スレーブ装置（Ｓ１）の時刻とグランドマスタ装置（ＧＭ）の時刻との間には２の誤差が生じる。
このように、従来の時刻同期方式によれば、中継装置である汎用ハブ（ＨＵＢ）の中継遅延が一定でない場合は、正確な時刻同期を実現することができないという課題がある。【００１２】
本発明は、このような課題を解決することを主な目的とする。より具体的には、本発明は、中継装置の中継遅延が一定でない場合にも、正確な時刻同期を実現することを主な目的とする。
【課題を解決するための手段】
【００１３】
本実施の形態に係る通信システムは、
中継遅延が一定でない中継装置を介して接続されるマスタ装置とスレーブ装置とを有し、
前記マスタ装置は、
フリーランカウンタであるマスタカウンタと、
時刻同期のための時刻同期フレームを送信するタイミングで、現在時刻を前記時刻同期フレームの送信時刻として取得し、前記マスタカウンタのカウント値を送信カウント値として取得し、前記送信時刻と前記送信カウント値とを前記時刻同期フレームに格納し、前記時刻同期フレームを前記スレーブ装置に送信する送信部とを有し、
前記スレーブ装置は、
フリーランカウンタであるスレーブカウンタと、
前記時刻同期フレームを受信する受信部と、
前記時刻同期フレームの受信時刻と、前記受信時刻における前記スレーブカウンタのカウント値である受信カウント値とを取得する取得部と、
前記送信時刻と前記送信カウント値と前記受信時刻と前記受信カウント値と、過去の計測から得られた伝搬遅延の値である計測伝搬遅延値と、前記計測伝搬遅延値に対応する前記マスタカウンタのカウント値と前記スレーブカウンタのカウント値とから求められる遅延カウント差とを用いて、前記スレーブ装置の時刻を補正する時刻補正部とを有する。
【発明の効果】
【００１４】
本発明によれば、中継装置の中継遅延が一定でない場合にも、正確な時刻同期を実現することができる。
【図面の簡単な説明】
【００１５】
【図１】実施の形態１に係る通信システムの動作概要を示す図。
【図２】実施の形態１に係る時刻同期シーケンスの例を示す図。
【図３】実施の形態１に係るグランドマスタ装置（ＧＭ）のハードウェア構成例を示す図。
【図４】実施の形態１に係るグランドマスタ装置（ＧＭ）の機能構成例を示す図。
【図５】実施の形態１に係るスレーブ装置（Ｓ１）のハードウェア構成例を示す図。
【図６】実施の形態１に係るスレーブ装置（Ｓ１）の機能構成例を示す図。
【図７】実施の形態１に係るカウントアップ及び時刻計測フローを示すフローチャート。
【図８】実施の形態１に係るＤｅｌａｙＲｅｑフレームの送信フローを示すフローチャート。
【図９】実施の形態１に係るＤｅｌａｙＲｅｑフレームの受信フロー及びＤｅｌａｙＲｅｓｐフレームの送信フローを示すフローチャート。
【図１０】実施の形態１に係るＤｅｌａｙＲｅｓｐフレームの受信フローを示すフローチャート。
【図１１】実施の形態１に係るＳｙｎｃフレームの送信フローを示すフローチャート。
【図１２】実施の形態１に係るＳｙｎｃフレームの受信フローを示すフローチャート。
【図１３】実施の形態１に係る時刻補正フローを示すフローチャート。
【図１４】ＩＥＥＥ１５８８における時刻同期シーケンスを示す図。
【図１５】従来の時刻同期方式の課題を示す図。
【図１６】従来の時刻同期方式の課題を示す図。
【発明を実施するための形態】
【００１６】
以下、本発明の実施の形態について、図を用いて説明する。以下の実施の形態の説明及び図面において、同一の符号を付したものは、同一の部分又は相当する部分を示す。
【００１７】
実施の形態１．
＊＊＊概要の説明＊＊＊
図１は、本実施の形態に係る通信システムの動作概要を示す。
本実施の形態に係る通信システムは、グランドマスタ装置（ＧＭ）１０、スレーブ装置（Ｓ１）２０及び汎用ハブ（ＨＵＢ）３０で構成される。
グランドマスタ装置（ＧＭ）１０は、マスタ装置である。スレーブ装置（Ｓ１）２０はスレーブ装置である。汎用ハブ（ＨＵＢ）３０は中継装置である。
グランドマスタ装置（ＧＭ）１０とスレーブ装置（Ｓ１）２０は汎用ハブ（ＨＵＢ）３０を介して接続されている。
汎用ハブ（ＨＵＢ）３０は、時刻同期非対応のスイッチングハブであり、図１５及び図１６で示した汎用ハブ（ＨＵＢ）と同じである。つまり、汎用ハブ（ＨＵＢ）３０の中継遅延は一定ではない。図１では、汎用ハブ（ＨＵＢ）３０の中継遅延が、ＩＥＥＥ１５８８またはＩＥＥＥ８０２．１ＡＳで得られた平均中継遅延から＋Δだけ変動していることが示されている。このため、ＩＥＥＥ１５８８またはＩＥＥＥ８０２．１ＡＳで得られた平均時間差（Ｏｆｆｓｅｔ  ａｖｅ）に中継遅延の変動幅＋Δを加算して、オフセット値（Ｏｆｆｓｅｔ（Ｎ））を得る必要がある。
【００１８】
本実施の形態では、グランドマスタ装置（ＧＭ）１０及びスレーブ装置（Ｓ１）２０はともに、時間を計測するフリーランカウンタと、フリーランカウンタが刻む時間を基に時刻を計測する時計をそれぞれ保持する。以下、グランドマスタ装置（ＧＭ）１０が保持するフリーランカウンタはマスタカウンタという。また、スレーブ装置（Ｓ１）２０が保持するフリーランカウンタはスレーブカウンタという。また、グランドマスタ装置（ＧＭ）１０が保持する時計をマスタ時計という。また、スレーブ装置（Ｓ１）２０が保持する時計をスレーブ時計という。
また、スレーブ装置（Ｓ１）２０は、グランドマスタ装置（ＧＭ）１０から時刻が配信されるとスレーブ時計の値を補正する。
マスタカウンタはグランドマスタ装置（ＧＭ）１０の起動直後にカウントアップを開始する。同様に、スレーブカウンタはスレーブ装置（Ｓ１）２０の起動直後にカウントアップを開始する。マスタカウンタ及びスレーブカウンタは通信プロトコルによってカウンタ値は変更されない。グランドマスタ装置（ＧＭ）１０がリセットされるとマスタカウンタもリセットされる。スレーブ装置（Ｓ１）２０がリセットされるとスレーブカウンタもリセットされる。
グランドマスタ装置（ＧＭ）１０は、時刻同期フレームであるＳｙｎｃフレームをスレーブ装置（Ｓ１）２０に送信する。グランドマスタ装置（ＧＭ）１０はＳｙｎｃフレームの送信時にマスタカウンタのカウント値とマスタ時計の値を取得し、取得したマスタカウンタのカウント値とマスタ時計の値をＳｙｎｃフレームに格納する。そして、マスタカウンタのカウント値とマスタ時計の値が格納されたＳｙｎｃフレームをスレーブ装置（Ｓ１）２０に送信する。図１では、マスタカウンタのカウント値として「ｔ３（ｎ）」がＳｙｎｃフレームに格納され、マスタ時計の値として「ｔ  ｓｙｎｃ（Ｎ）」がＳｙｎｃフレームに格納されている。また、スレーブ装置（Ｓ１）２０は、Ｓｙｎｃフレームの受信時にスレーブカウンタのカウント値とスレーブ時計の値を取得する。図１では、スレーブ装置（Ｓ１）２０がスレーブカウンタのカウント値として「ｔ４（Ｎ）」を取得し、スレーブ時計の値として「ｔ  ｒｘ（Ｎ）」を取得している。
このように、本実施の形態に係る時刻同期フレームであるＳｙｎｃフレームには、マスタカウンタのカウント値が含まれており、図１６に示すＳｙｎｃフレームとは異なる。
また、図１では図示を省略しているが、図１６と同様に、スレーブ装置（Ｓ１）２０は伝搬遅延計測要求であるＤｅｌａｙＲｅｑフレームをグランドマスタ装置（ＧＭ）１０に送信する。スレーブ装置（Ｓ１）２０は、ＤｅｌａｙＲｅｑフレームの送信時点のスレーブカウンタのカウント値とスレーブ時計の値を保持する。グランドマスタ装置（ＧＭ）１０はＤｅｌａｙＲｅｑフレームの受信時点のマスタカウンタのカウント値とマスタ時計の値を保持する。また、グランドマスタ装置（ＧＭ）１０は、伝搬遅延計測応答であるＤｅｌａｙＲｅｓｐフレームをスレーブ装置（Ｓ１）２０に送信する。グランドマスタ装置（ＧＭ）１０は、ＤｅｌａｙＲｅｓｐフレームの送信時点のマスタカウンタのカウント値とマスタ時計の値をＤｅｌａｙＲｅｓｐフレームに格納する。スレーブ装置（Ｓ１）２０は、ＤｅｌａｙＲｅｓｐフレームの受信時点のスレーブカウンタのカウント値とスレーブ時計の値を保持する。また、スレーブ装置（Ｓ１）２０は、ＤｅｌａｙＲｅｓｐフレームに格納されたマスタカウンタのカウント値とマスタ時計の値を保持する。
このように、本実施の形態では、ＤｅｌａｙＲｅｑフレーム及びＤｅｌａｙＲｅｓｐフレームも図１６に示すＤｅｌａｙＲｅｑフレーム及びＤｅｌａｙＲｅｓｐフレームとは異なる。
【００１９】
次に、図２を参照して、本実施の形態に係る時刻同期シーケンスを説明する。
なお、以下の（１）〜（５）は図２の（１）〜（５）に対応する。
【００２０】
（１）スレーブ装置（Ｓ１）２０は、グランドマスタ装置（ＧＭ）１０との伝搬遅延計測（図１６の（１）〜（６）の手順）を繰り返し実施する。但し、図２において送受信されるＤｅｌａｙＲｅｑフレーム及びＤｅｌａｙＲｅｓｐフレームは、前述したように、図１６に示すＤｅｌａｙＲｅｑフレーム及びＤｅｌａｙＲｅｓｐフレームとは異なる。
スレーブ装置（Ｓ１）２０は、伝搬遅延計測において、伝搬遅延時間とスレーブカウンタのカウント値とマスタカウンタのカウント値との差を計測する。そして、スレーブ装置（Ｓ１）２０は、過去の複数の伝搬遅延計測から、グランドマスタ装置（ＧＭ）１０とスレーブ装置（Ｓ１）２０との間の伝搬遅延時間の平均値（以下、平均伝搬遅延Ｄ＿ａｖｅという）を得る。また、スレーブ装置（Ｓ１）２０は、過去の複数の伝搬遅延計測から、スレーブカウンタのカウント値とマスタカウンタのカウント値の差の平均値（以下、平均カウント差Ｃ＿ａｖｅという）を得る。
ここでは、以下の平均伝搬遅延Ｄ＿ａｖｅと平均カウント差Ｃ＿ａｖｅが得られたとする。なお、平均伝搬遅延Ｄ＿ａｖｅは、過去の伝搬遅延計測から得られた伝搬遅延の値であり、計測伝搬遅延値に相当する。また、平均カウント差Ｃ＿ａｖｅは、平均伝搬遅延Ｄ＿ａｖｅに対応するマスタカウンタのカウント値とスレーブカウンタのカウント値との間の差であり、遅延カウント差に相当する。
【００２１】
【数１】
0006351889.tif 000002
【００２２】
なお、ＲＣＧＭ＿Ｓ１は、グランドマスタ装置（ＧＭ）１０のクロック周波数とスレーブ装置（Ｓ１）２０のクロック周波数との比率である。
本実施の形態では、計算を単純にするために、スレーブ装置（Ｓ１）２０とグランドマスタ装置（ＧＭ）１０との間のクロック周波数偏差は無視できるほど小さいものとし、ＲＣＧＭ＿Ｓ１＝１と仮定する。クロック比の算出方法は、ＩＥＥＥ８０２．１ＡＳのものと同じであるため、ここではクロック比の算出方法の説明は省略する。また、グランドマスタ装置（ＧＭ）１０のクロック周波数を１と仮定する。
【００２３】
（２）グランドマスタ装置（ＧＭ）１０は、マスタ時計のタイムスタンプＴ＿ｓｙｎｃ＝１１とマスタカウンタのタイムスタンプｔ３＝１をＳｙｎｃフレームに格納し、Ｓｙｎｃフレームをスレーブ装置（Ｓ１）２０に送信する。前述したように、ＩＥＥＥ１５８８及びＩＥＥＥ８０２．１ＡＳでは、Ｓｙｎｃフレームに格納されるタイムスタンプはマスタ時計のタイムスタンプＴ＿ｓｙｎｃのみであり、マスタカウンタのタイムスタンプｔ３はＳｙｎｃフレームに格納されない。このように、本実施の形態に係るＳｙｎｃフレームはマスタカウンタのタイムスタンプｔ３が格納される点で、ＩＥＥＥ１５８８及びＩＥＥＥ８０２．１ＡＳのＳｙｎｃフレームとは異なる。
なお、以下では、Ｓｙｎｃフレームに格納されるマスタ時計のタイムスタンプＴ＿ｓｙｎｃを送信時刻Ｔ＿ｓｙｎｃともいう。また、Ｓｙｎｃフレームに格納されるマスタカウンタのタイムスタンプｔ３を送信カウント値ｔ３ともいう。
【００２４】
（３）スレーブ装置（Ｓ１）２０は、Ｓｙｎｃフレームを受信する。また、スレーブ装置（Ｓ１）２０は、Ｓｙｎｃフレームの受信時点のスレーブ時計のタイムスタンプＴ＿ＲＸ＝２６とスレーブカウンタのタイムスタンプｔ４＝９を保持する。
なお、以下では、Ｓｙｎｃフレームの受信時点でのスレーブ時計のタイムスタンプＴ＿ＲＸを受信時刻Ｔ＿ＲＸともいう。また、Ｓｙｎｃフレームの受信時点でのスレーブカウンタのタイムスタンプｔ４を受信カウント値ｔ４ともいう。
【００２５】
（４）スレーブ装置（Ｓ１）２０は、Ｓｙｎｃフレームの伝搬遅延を以下にて算出する。
（ａ）まず、スレーブ装置（Ｓ１）２０は、送信カウント値ｔ３（＝１）と受信カウント値ｔ４（＝９）との差から平均カウント差Ｃ＿ａｖｅ（＝６）を減算して、中継遅延差Δを得る。なお、中継遅延差Δは、Ｓｙｎｃフレームの中継の際の汎用ハブ（ＨＵＢ）３０による中継遅延の値と平均伝搬遅延Ｄ＿ａｖｅに含まれる中継遅延の値との差である。
Δ＝ｔ４×ＲＣＧＭ＿Ｓ１−ｔ３−Ｃ＿ａｖｅ＝（９−１−６）＝２  式３
（ｂ）次に、スレーブ装置（Ｓ１）２０は、Ｓｙｎｃフレームの送信での伝搬遅延Ｄ＿ｔｒｕｅを以下にて算出する。
Ｄ＿ｔｒｕｅ＝Ｄ＿ａｖｅ＋Δ＊１／グランドマスタ装置のクロック周波数＝３＋２＝５        式４
【００２６】
（５）スレーブ装置（Ｓ１）２０は、マスタ時計とスレーブ時計との時刻差をＯｆｆｓｅｔ（Ｎ）として算出し、Ｏｆｆｓｅｔ（Ｎ）の値を用いて、スレーブ時計の時刻を補正する。
（ａ）スレーブ装置（Ｓ１）２０は、送信時刻Ｔ＿ｓｙｎｃ（＝１１）と、伝搬遅延Ｄ＿ｔｒｕｅ（＝５）と、受信時刻Ｔ＿ＲＸ（＝２６）を用いて、以下に示すようにＯｆｆｓｅｔ（Ｎ）を算出する。
Ｏｆｆｓｅｔ（Ｎ）＝Ｔ＿ｓｙｎｃ＋Ｄ＿ｔｒｕｅ−Ｔ＿ＲＸ
＝（１１＋５−２６）＝−１０        式５
（ｂ）また、スレーブ装置（Ｓ１）２０は、Ｏｆｆｓｅｔ（Ｎ）の値を用いて時刻２７のタイミングでスレーブ時計の時刻を以下にて補正する。
２７＋Ｏｆｆｓｅｔ（Ｎ）＝２７−１０＝１７        式６
以上の処理により、グランドマスタ装置（ＧＭ）１０のマスタ時計の時刻とスレーブ装置（Ｓ１）２０のスレーブ時計の時刻が同期する。
【００２７】
＊＊＊構成の説明＊＊＊
図３は、本実施の形態に係るグランドマスタ装置（ＧＭ）１０のハードウェア構成例を示す。
図４は、本実施の形態に係るグランドマスタ装置（ＧＭ）１０の機能構成例を示す。
本実施の形態に係るグランドマスタ装置（ＧＭ）１０は、コンピュータである。
【００２８】
図３に示すように、グランドマスタ装置（ＧＭ）１０は、ハードウェアとして、入力インタフェース１０１、プロセッサ１０２、補助記憶装置１０３、メモリ１０４、出力インタフェース１０５、ネットワークインタフェース１１１、ネットワークインタフェース１１２、ネットワークポート１１３及びネットワークポート１１４を備える。
また、図４に示すように、グランドマスタ装置（ＧＭ）１０は、機能構成として、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５を備える。
補助記憶装置１０３には、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の機能を実現するプログラムが記憶されている。
これらプログラムは補助記憶装置１０３からメモリ１０４にロードされる。また、プロセッサ１０２がこれらプログラムをメモリ１０４から読み出し、これらプログラムを実行する。そして、プロセッサ１０２は、後述する制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の動作を行う。
図３では、プロセッサ１０２が、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の機能を実現するプログラムを実行している状態を模式的に表している。
入力インタフェース１０１は、グランドマスタ装置（ＧＭ）１０のユーザが各種指示を入力するために用いられる。
また、メモリ１０４には、前述の送信時刻、送信カウント値等が格納される。
出力インタフェース１０５は、グランドマスタ装置（ＧＭ）１０の外部記憶媒体にデータを出力するために用いられる。
ネットワークインタフェース１１１は、ネットワークポート１１３と時刻管理部１０７、時間計測部１０８又はデータ調停部１１０との間のフレームの転送を制御する。
ネットワークインタフェース１１２は、ネットワークポート１１４と時刻管理部１０７、時間計測部１０８又はデータ調停部１１０との間のフレームの転送を制御する。
ネットワークポート１１３及びネットワークポート１１４は、ネットワークとの物理的な接続口である。
【００２９】
図４において、制御部１０６は、グランドマスタ装置（ＧＭ）１０の全体の制御を行う。
具体的には、制御部１０６は、受信部１１５がＤｅｌａｙＲｅｑフレームを受信した際に、ＤｅｌａｙＲｅｑフレームの受信を時刻管理部１０７及び時間計測部１０８に通知する。
また、制御部１０６は、ＤｅｌａｙＲｅｓｐフレームの送信を時刻管理部１０７、時間計測部１０８及び送信部１０９に指示する。
制御部１０６は、受信部１１５によりＤｅｌａｙＲｅｑフレームの受信が通知された場合に、時刻管理部１０７、時間計測部１０８及び送信部１０９にＤｅｌａｙＲｅｓｐフレームの送信を指示する。
また、制御部１０６は、Ｓｙｎｃフレームの送信を、時刻管理部１０７、時間計測部１０８及び送信部１０９に指示する。制御部１０６は、伝搬遅延計測（図１６の（１）〜（６）の手順）の実施回数が設定値を超えた場合に、時刻管理部１０７、時間計測部１０８及び送信部１０９にＳｙｎｃフレームの送信を指示する。なお、制御部１０６は、Ｓｙｎｃフレームの送信周期をカウントし、指定された周期で時刻管理部１０７、時間計測部１０８及び送信部１０９にＳｙｎｃフレームの送信を指示する。
【００３０】
時刻管理部１０７は、マスタ時計として動作する。具体的には、時刻管理部１０７は、時刻情報を保持する。時刻管理部１０７は、時間計測部１０８よりマスタカウンタ１０８０のカウントアップが通知されると時刻情報を更新する。時刻管理部１０７は、時間計測部１０８からカウントアップが通知される度にナノ秒オーダで時刻を更新する。
例えば、マスタカウンタ１０８０の動作クロックが１２５ＭＨｚの場合は、マスタカウンタ１０８０のカウントアップごとに、時刻管理部１０７は、８ナノ秒（１／１２５ＭＨｚ＝８ｎｓ）単位で時刻を更新する。
また、時刻管理部１０７は、制御部１０６からＤｅｌａｙＲｅｑフレームの受信が通知された場合に、現在時刻を取得し、取得した現在時刻をメモリ１０４に格納する。
また、時刻管理部１０７は、制御部１０６からＤｅｌａｙＲｅｓｐフレームの送信が指示された際に現在時刻を取得し、取得した現在時刻を送信部１０９に通知する。
また、時刻管理部１０７は、制御部１０６からＳｙｎｃフレームの送信が指示された際に現在時刻を取得し、取得した現在時刻を送信部１０９に通知する。
【００３１】
時間計測部１０８は、フリーランカウンタであるマスタカウンタ１０８０を有する。マスタカウンタ１０８０はグランドマスタ装置（ＧＭ）１０の起動時にカウントアップを開始する。また、マスタカウンタ１０８０の値はグランドマスタ装置（ＧＭ）１０の停止時にリセットされる。
時間計測部１０８は、マスタカウンタ１０８０がカウントアップする度に、時刻管理部１０７にマスタカウンタ１０８０のカウントアップを通知する。
また、時間計測部１０８は、制御部１０６からＤｅｌａｙＲｅｑフレームの受信が通知された場合に、マスタカウンタ１０８０の現在のカウント値を取得し、取得したカウント値をメモリ１０４に格納する。
また、時間計測部１０８は、制御部１０６からＤｅｌａｙＲｅｓｐフレームの送信が指示された際にマスタカウンタ１０８０の現在のカウント値を取得し、取得したカウント値を送信部１０９に通知する。
また、時間計測部１０８は、制御部１０６からＳｙｎｃフレームの送信が指示された際にマスタカウンタ１０８０の現在のカウント値を取得し、取得したカウント値を送信部１０９に通知する。
【００３２】
送信部１０９は、制御部１０６からＤｅｌａｙＲｅｓｐフレームの送信が指示された場合に、ＤｅｌａｙＲｅｓｐフレームを生成する。また、送信部１０９は、時刻管理部１０７から通知された現在時刻をＤｅｌａｙＲｅｓｐフレームに格納する。更に、送信部１０９は、時間計測部１０８から通知された現在のカウント値をＤｅｌａｙＲｅｓｐフレームに格納する。そして、送信部１０９は、現在時刻と現在のカウント値が格納されたＤｅｌａｙＲｅｓｐフレームをスレーブ装置（Ｓ１）２０に送信する。より具体的には、送信部１０９は、ＤｅｌａｙＲｅｓｐフレームをデータ調停部１１０に出力する。
また、送信部１０９は、制御部１０６からＳｙｎｃフレームの送信が指示された場合に、Ｓｙｎｃフレームを生成する。また、送信部１０９は、時刻管理部１０７から通知された現在時刻をＳｙｎｃフレームに格納する。更に、送信部１０９は、時間計測部１０８から通知された現在のカウント値をＳｙｎｃフレームに格納する。そして、送信部１０９は、現在時刻と現在のカウント値が格納されたＳｙｎｃフレームをスレーブ装置（Ｓ１）２０に送信する。より具体的には、送信部１０９は、Ｓｙｎｃフレームをデータ調停部１１０に出力する。
なお、Ｓｙｎｃフレームに格納される現在時刻は前述の送信時刻である。また、Ｓｙｎｃフレームに格納される現在のカウント値は前述の送信カウント値である。
【００３３】
データ調停部１１０は、ネットワークインタフェース１１１又はネットワークインタフェース１１２で受信された通信フレームについて、メッセージ種別の判定、正常であるか否かの判定、宛先の判定を行う。
そして、データ調停部１１０は、受信された通信フレームがグランドマスタ装置（ＧＭ）１０宛ての通信フレームである場合は、データ調停部１１０は、当該通信フレームを受信部１１５に転送する。例えば、データ調停部１１０は、受信された通信フレームがＤｅｌａｙＲｅｑフレームであれば、ＤｅｌａｙＲｅｑフレームを受信部１１５に転送する。
一方、受信された通信フレームが他の装置宛ての通信フレームである場合は、データ調停部１１０は、中継処理を行う。
また、データ調停部１１０は、送信部１０９から出力されたＤｅｌａｙＲｅｓｐフレーム及びＳｙｎｃフレームを、ネットワークインタフェース１１１又はネットワークインタフェース１１２に出力する。
【００３４】
受信部１１５は、スレーブ装置（Ｓ１）２０から送信されたＤｅｌａｙＲｅｑフレームを受信する。つまり、受信部１１５は、データ調停部１１０から転送されたＤｅｌａｙＲｅｑフレームを受信する。
また、受信部１１５は、ＤｅｌａｙＲｅｑフレームを受信した場合に、制御部１０６にＤｅｌａｙＲｅｑフレームの受信を通知する。
【００３５】
図４のネットワークインタフェース１１１、ネットワークインタフェース１１２、ネットワークポート１１３及びネットワークポート１１４は、図３に示したものと同じである。
【００３６】
図５は、本実施の形態に係るスレーブ装置（Ｓ１）２０のハードウェア構成例を示す。
図６は、本実施の形態に係るスレーブ装置（Ｓ１）２０の機能構成例を示す。
本実施の形態に係るスレーブ装置（Ｓ１）２０は、コンピュータである。
【００３７】
図５に示すように、スレーブ装置（Ｓ１）２０は、ハードウェアとして、入力インタフェース２０１、プロセッサ２０２、補助記憶装置２０３、メモリ２０４、出力インタフェース２０５、ネットワークインタフェース２１１、ネットワークインタフェース２１２、ネットワークポート２１３及びネットワークポート２１４を備える。
また、図６に示すように、スレーブ装置（Ｓ１）２０は、機能構成として、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５を備える。
補助記憶装置２０３には、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の機能を実現するプログラムが記憶されている。
これらプログラムは補助記憶装置２０３からメモリ２０４にロードされる。また、プロセッサ２０２がこれらプログラムをメモリ２０４から読み出し、これらプログラムを実行する。そして、プロセッサ２０２は、後述する制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の動作を行う。
図５では、プロセッサ２０２が、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の機能を実現するプログラムを実行している状態を模式的に表している。
入力インタフェース２０１は、スレーブ装置（Ｓ１）２０のユーザが各種指示を入力するために用いられる。
また、メモリ２０４には、前述の送信時刻、送信カウント値、受信時刻、受信カウント値、平均カウント差Ｃ＿ａｖｅ、平均伝搬遅延Ｄ＿ａｖｅ等が格納される。
出力インタフェース２０５は、スレーブ装置（Ｓ１）２０の外部記憶媒体にデータを出力するために用いられる。
ネットワークインタフェース２１１は、ネットワークポート２１３と時刻管理部２０７、時間計測部２０８又はデータ調停部２１０との間のフレームの転送を制御する。
ネットワークインタフェース２１２は、ネットワークポート２１４と時刻管理部２０７、時間計測部２０８又はデータ調停部２１０との間のフレームの転送を制御する。
ネットワークポート２１３及びネットワークポート２１４は、ネットワークとの物理的な接続口である。
【００３８】
図６において、制御部２０６は、スレーブ装置（Ｓ１）２０の全体の制御を行う。
具体的には、制御部２０６は、ＤｅｌａｙＲｅｑフレームの送信を送信部２０９に指示する。また、制御部２０６は、ＤｅｌａｙＲｅｑフレームの送信を時刻管理部２０７及び時間計測部２０８に通知する。
また、制御部２０６は、受信部２１５がＤｅｌａｙＲｅｓｐフレームを受信した際に、ＤｅｌａｙＲｅｓｐフレームの受信を時刻管理部２０７及び時間計測部２０８に通知する。
更に、制御部２０６は、受信部２１５がＳｙｎｃフレームを受信した際に、Ｓｙｎｃフレームの受信を時刻管理部２０７及び時間計測部２０８に通知する。
また、制御部２０６は、時刻管理部２０７に時刻補正の指示を行う。
【００３９】
時刻管理部２０７は、スレーブ時計として動作する。具体的には、時刻管理部２０７は、時刻情報を保持する。時刻管理部２０７は、時間計測部２０８よりスレーブカウンタ２０８０のカウントアップが通知されると時刻情報を更新する。時刻管理部２０７は、時間計測部２０８からカウントアップが通知される度にナノ秒オーダで時刻を更新する。
例えば、スレーブカウンタ２０８０の動作クロックが１２５ＭＨｚの場合は、スレーブカウンタ２０８０のカウントアップごとに、時刻管理部２０７は、８ナノ秒（１／１２５ＭＨｚ＝８ｎｓ）単位で時刻を更新する。
また、時刻管理部２０７は、制御部２０６からＤｅｌａｙＲｅｑフレームの送信が通知された際に現在時刻を取得し、取得した現在時刻をメモリ２０４に格納する。
更に、時刻管理部２０７は、制御部２０６からＤｅｌａｙＲｅｓｐフレームの受信が通知された際に現在時刻を取得し、取得した現在時刻をメモリ２０４に格納する。
また、時刻管理部２０７は、制御部２０６からＳｙｎｃフレームの受信が通知された際に現在時刻を取得し、取得した現在時刻をメモリ２０４に格納する。Ｓｙｎｃフレームの受信時の現在時刻は前述の受信時刻である。
また、時刻管理部２０７は、制御部２０６から時刻補正が指示された場合に、スレーブ時計の時刻を補正する。
時刻管理部２０７は、受信部２１５により取得された送信時刻と送信カウント値と、時間計測部２０８により取得された受信カウント値と、受信時刻と、計測伝搬遅延値である平均伝搬遅延Ｄ＿ａｖｅと、遅延カウント差である平均カウント差Ｃ＿ａｖｅとを用いて、スレーブ時計の時刻を補正する。具体的には、時刻管理部２０７は、前述の式３に基づき中継遅延差Δを算出し、前述の式４に基づき伝搬遅延Ｄ＿ｔｒｕｅを算出する。また、時刻管理部２０７は、前述の式５に基づきＯｆｆｓｅｔ（Ｎ）を算出する。最終的に、時刻管理部２０７は前述の式６に基づきスレーブ時計の時刻を補正する。
時刻管理部２０７は取得部及び時刻補正部に相当する。
【００４０】
時間計測部２０８は、フリーランカウンタであるスレーブカウンタ２０８０を有する。スレーブカウンタ２０８０はスレーブ装置（Ｓ１）２０の起動時にカウントアップを開始する。また、スレーブカウンタ２０８０の値はスレーブ装置（Ｓ１）２０の停止時にリセットされる。
時間計測部２０８は、スレーブカウンタ２０８０がカウントアップする度に、時刻管理部２０７にスレーブカウンタ２０８０のカウントアップを通知する。
また、時間計測部２０８は、制御部２０６からＤｅｌａｙＲｅｑフレームの送信が通知された際にスレーブカウンタ２０８０の現在のカウント値を取得し、取得したカウント値をメモリ２０４に格納する。
更に、時間計測部２０８は、制御部２０６からＤｅｌａｙＲｅｓｐフレームの受信が通知された際にスレーブカウンタ２０８０の現在のカウント値を取得し、取得したカウント値をメモリ２０４に格納する。
また、時間計測部２０８は、制御部２０６からＳｙｎｃフレームの受信が通知された際にスレーブカウンタ２０８０の現在のカウント値を取得し、取得したカウント値をメモリ２０４に格納する。Ｓｙｎｃフレームの受信時のカウント値は前述の受信カウント値である。
時間計測部２０８は時刻管理部２０７とともに取得部に相当する。
【００４１】
送信部２０９は、制御部２０６からＤｅｌａｙＲｅｑフレームの送信が指示された場合に、ＤｅｌａｙＲｅｑフレームを生成する。そして、送信部２０９は、ＤｅｌａｙＲｅｑフレームをグランドマスタ装置（ＧＭ）１０に送信する。より具体的には、送信部２０９は、ＤｅｌａｙＲｅｑフレームをデータ調停部２１０に出力する。
【００４２】
データ調停部２１０は、ネットワークインタフェース２１１又はネットワークインタフェース２１２で受信された通信フレームについて、メッセージ種別の判定、正常であるか否かの判定、宛先の判定を行う。
そして、データ調停部２１０は、受信された通信フレームがスレーブ装置（Ｓ１）２０宛ての通信フレームである場合は、データ調停部２１０は、当該通信フレームを受信部２１５に転送する。例えば、データ調停部１１０は、受信された通信フレームがＤｅｌａｙＲｅｓｐフレームであれば、ＤｅｌａｙＲｅｓｐフレームを受信部１１５に転送する。また、データ調停部１１０は、受信された通信フレームがＳｙｎｃフレームであれば、Ｓｙｎｃフレームを受信部１１５に転送する。
一方、受信された通信フレームが他の装置宛ての通信フレームである場合は、データ調停部２１０は、中継処理を行う。
また、データ調停部２１０は、送信部２０９から出力されたＤｅｌａｙＲｅｑフレームを、ネットワークインタフェース２１１又はネットワークインタフェース２１２に出力する。
【００４３】
受信部２１５は、グランドマスタ装置（ＧＭ）１０から送信されたＤｅｌａｙＲｅｓｐフレームを受信する。つまり、受信部１１５は、データ調停部２１０から転送されたＤｅｌａｙＲｅｓｐフレームを受信する。受信部２１５は、受信したＤｅｌａｙＲｅｓｐフレームから、グランドマスタ装置（ＧＭ）１０により格納された時刻及びカウント値を取得する。そして、受信部２１５は、取得した時刻及びカウント値をメモリ２０４に格納する。
また、受信部２１５は、ＤｅｌａｙＲｅｓｐフレームを受信した場合に、制御部２０６にＤｅｌａｙＲｅｓｐフレームの受信を通知する。
更に、受信部２１５は、グランドマスタ装置（ＧＭ）１０から送信されたＳｙｎｃフレームを受信する。つまり、受信部１１５は、データ調停部２１０から転送されたＳｙｎｃフレームを受信する。受信部２１５は、受信したＳｙｎｃフレームから、グランドマスタ装置（ＧＭ）１０により格納された時刻（送信時刻）及びカウント値（送信カウント値）を取得する。そして、受信部２１５は、取得した送信時刻及び送信カウント値をメモリ２０４に格納する。
また、受信部２１５は、Ｓｙｎｃフレームを受信した場合に、制御部２０６にＳｙｎｃフレームの受信を通知する。
【００４４】
図６のネットワークインタフェース２１１、ネットワークインタフェース２１２、ネットワークポート２１３及びネットワークポート２１４は、図５に示したものと同じである。
【００４５】
＊＊＊動作の説明＊＊＊
図７はカウントアップ及び時刻計測フローを示す。
図７に示すカウントアップ及び時刻計測フローは、グランドマスタ装置（ＧＭ）１０及びスレーブ装置（Ｓ１）２０で共通に行われる。
【００４６】
グランドマスタ装置（ＧＭ）１０では、時間計測部１０８が、マスタカウンタ１０８０の動作クロックの立上りエッジを検出するまで待機し（ステップＳ１０１）、立上りエッジを検出したら（ステップＳ１０２でＹＥＳ）、マスタカウンタ１０８０をカウントアップする（ステップＳ１０３）。また、時間計測部１０８は、時刻管理部１０７にマスタカウンタ１０８０のカウントアップを通知し、時刻管理部１０７は時刻を更新する（ステップＳ１０３）。
前述したように、マスタカウンタ１０８０の動作クロックが１２５ＭＨｚの場合は、マスタカウンタ１０８０のカウントアップごとに、時刻管理部１０７は、８ナノ秒（１／１２５ＭＨｚ＝８ｎｓ）単位で時刻を更新する。
【００４７】
また、スレーブ装置（Ｓ１）２０では、時間計測部２０８が、スレーブカウンタ２０８０の動作クロックの立上りエッジを検出するまで待機し（ステップＳ１０１）、立上りエッジを検出したら（ステップＳ１０２でＹＥＳ）、スレーブカウンタ２０８０をカウントアップする（ステップＳ１０３）。また、時間計測部２０８は、時刻管理部２０７にスレーブカウンタ２０８０のカウントアップを通知し、時刻管理部２０７は時刻を更新する（ステップＳ１０３）。
前述したように、スレーブカウンタ２０８０の動作クロックが１２５ＭＨｚの場合は、スレーブカウンタ２０８０のカウントアップごとに、時刻管理部２０７は、８ナノ秒（１／１２５ＭＨｚ＝８ｎｓ）単位で時刻を更新する。
【００４８】
図８は、スレーブ装置（Ｓ１）２０によるＤｅｌａｙＲｅｑフレームの送信フローを示す。
【００４９】
制御部２０６は、ＤｅｌａｙＲｅｑフレームの送信タイミングが到来するのを待つ（ステップＳ２０１）。
ＤｅｌａｙＲｅｑフレームの送信タイミングが到来すると（ステップＳ２０２でＹＥＳ）、制御部２０６は送信部２０９にＤｅｌａｙＲｅｑフレームの送信を指示する。送信部２０９は、ＤｅｌａｙＲｅｑフレームをグランドマスタ装置（ＧＭ）１０に送信する（ステップＳ２０３）。
また、制御部２０６は、送信部２０９へのＤｅｌａｙＲｅｑフレームの送信指示に並行して時刻管理部２０７及び時間計測部２０８にＤｅｌａｙＲｅｑフレームの送信を通知する。時刻管理部２０７は、制御部２０６からの通知に基づき、現在時刻をＤｅｌａｙＲｅｑフレームの送信時刻として取得し、取得した現在時刻をメモリ２０４に格納する（ステップＳ２０４）。また、時間計測部２０８は、制御部２０６からの通知に基づき、スレーブカウンタ２０８０の現在のカウント値をＤｅｌａｙＲｅｑフレームの送信時のスレーブカウンタ２０８０のカウント値として取得し、取得したカウント値をメモリ２０４に格納する（ステップＳ２０４）。
【００５０】
図９は、グランドマスタ装置（ＧＭ）１０によるＤｅｌａｙＲｅｑフレームの受信フロー及びＤｅｌａｙＲｅｓｐフレームの送信フローを示す。
【００５１】
受信部１１５がＤｅｌａｙＲｅｑフレームの受信を待ち（ステップＳ３０１）、受信部１１５がＤｅｌａｙＲｅｑフレームを受信したら（ステップＳ３０２でＹＥＳ）、時刻管理部１０７がＤｅｌａｙＲｅｑフレームの受信時刻を取得する（ステップＳ３０３）。また、時間計測部１０８がＤｅｌａｙＲｅｑフレームの受信時のマスタカウンタ１０８０の値を取得する（ステップＳ３０３）。より具体的には、受信部１１５は制御部１０６にＤｅｌａｙＲｅｑフレームの受信を通知する。制御部１０６は時刻管理部１０７及び時間計測部１０８にＤｅｌａｙＲｅｑフレームの受信を通知する。時刻管理部１０７は制御部１０６からの通知に基づき、現在時刻を取得し、取得した現在時刻をメモリ１０４に格納する。また、時間計測部１０８は制御部１０６からの通知に基づき、現在のマスタカウンタ１０８０のカウント値を取得し、取得したカウント値をメモリ１０４に格納する。
また、送信部１０９がＤｅｌａｙＲｅｓｐフレームを生成する（ステップＳ３０４）。より具体的には、制御部１０６は時刻管理部１０７、時間計測部１０８及び送信部１０９にＤｅｌａｙＲｅｓｐフレームの送信を指示する。時刻管理部１０７は現在時刻を取得し、取得した現在時刻を送信部１０９に通知する。時間計測部１０８はマスタカウンタ１０８０の現在のカウント値を取得し、取得したカウント値を送信部１０９に通知する。送信部１０９は、ＤｅｌａｙＲｅｓｐフレームを生成し、生成したＤｅｌａｙＲｅｓｐフレームに、時刻管理部１０７から通知された時刻及び時間計測部１０８から通知されたカウント値を格納する。
そして、送信部１０９は、ステップＳ３０４で生成したＤｅｌａｙＲｅｓｐフレームをスレーブ装置（Ｓ１）２０に送信する（ステップＳ３０５）。
【００５２】
図１０は、スレーブ装置（Ｓ１）２０によるＤｅｌａｙＲｅｓｐフレームの受信フローを示す。
【００５３】
受信部２１５がＤｅｌａｙＲｅｓｐフレームの受信を待ち（ステップＳ４０１）、受信部２１５がＤｅｌａｙＲｅｓｐフレームを受信したら（ステップＳ４０２でＹＥＳ）、時刻管理部２０７がＤｅｌａｙＲｅｓｐフレームの受信時刻を取得する（ステップＳ４０３）。また、時間計測部２０８がＤｅｌａｙＲｅｓｐフレームの受信時のスレーブカウンタ２０８０の値を取得する（ステップＳ４０３）。より具体的には、受信部２１５は制御部２０６にＤｅｌａｙＲｅｓｐフレームの受信を通知する。制御部２０６は時刻管理部２０７及び時間計測部２０８にＤｅｌａｙＲｅｓｐフレームの受信を通知する。時刻管理部２０７は制御部２０６からの通知に基づき、現在時刻を取得し、取得した現在時刻をメモリ２０４に格納する。また、時間計測部２０８は制御部２０６からの通知に基づき、現在のスレーブカウンタ２０８０のカウント値を取得し、取得したカウント値をメモリ２０４に格納する。
また、受信部２１５は、ＤｅｌａｙＲｅｓｐフレームから、ＤｅｌａｙＲｅｓｐフレームの送信時刻とＤｅｌａｙＲｅｓｐフレームの送信時のマスタカウンタ１０８０の値を抽出する（ステップＳ４０４）。そして、受信部２１５は、抽出した送信時刻とマスタカウンタ１０８０の値をメモリ２０４に格納する。
なお、図１０では、ステップＳ４０３の後にステップＳ４０４が行われることになっているが、ステップＳ４０３とステップＳ４０４とが並行して行われてもよい。
【００５４】
図１１は、グランドマスタ装置（ＧＭ）１０によるＳｙｎｃフレームの送信フローを示す。
【００５５】
制御部１０６は、Ｓｙｎｃフレームの送信タイミングが到来するのを待つ（ステップＳ５０１）。
Ｓｙｎｃフレームの送信タイミングが到来すると（ステップＳ５０２でＹＥＳ）、制御部１０６は時刻管理部１０７、時間計測部１０８及び送信部１０９にＳｙｎｃフレームの送信を指示する。時刻管理部１０７は、現在時刻を取得し、取得した現在時刻を送信部１０９に通知する（ステップＳ５０３）。また、時間計測部１０８は、マスタカウンタ１０８０の現在のカウント値を取得し、取得したカウント値を送信部１０９に通知する（ステップＳ５０３）。
送信部１０９は、Ｓｙｎｃフレームを生成し、生成したＳｙｎｃフレームに、時刻管理部１０７から通知された時刻及び時間計測部１０８から通知されたカウント値を格納する（ステップＳ５０４）。
そして、送信部１０９は、Ｓｙｎｃフレームをスレーブ装置（Ｓ１）２０に送信する（ステップＳ５０５）。
【００５６】
図１２は、スレーブ装置（Ｓ１）２０によるＳｙｎｃフレームの受信フローを示す。
【００５７】
受信部２１５がＳｙｎｃフレームの受信を待ち（ステップＳ６０１）、受信部２１５がＳｙｎｃフレームを受信したら（ステップＳ６０２でＹＥＳ）、時刻管理部２０７がＳｙｎｃフレームの受信時刻を取得する（ステップＳ６０３）。また、時間計測部２０８がＳｙｎｃフレームの受信時のスレーブカウンタ２０８０の値（受信カウント値）を取得する（ステップＳ６０３）。より具体的には、受信部２１５は制御部２０６にＳｙｎｃフレームの受信を通知する。制御部２０６は時刻管理部２０７及び時間計測部２０８にＳｙｎｃフレームの受信を通知する。時刻管理部２０７は制御部２０６からの通知に基づき、現在時刻を取得し、取得した現在時刻をメモリ２０４に格納する。また、時間計測部２０８は制御部２０６からの通知に基づき、スレーブカウンタ２０８０の現在のカウント値を取得し、取得したカウント値をメモリ２０４に格納する。
また、受信部２１５は、Ｓｙｎｃフレームから、Ｓｙｎｃフレームの送信時刻とＳｙｎｃフレームの送信時のマスタカウンタ１０８０の値（送信カウント値）を抽出する（ステップＳ６０４）。そして、受信部２１５は、抽出した送信時刻とマスタカウンタ１０８０の値をメモリ２０４に格納する。
なお、図１２では、ステップＳ６０３の後にステップＳ６０４が行われることになっているが、ステップＳ６０３とステップＳ６０４とが並行して行われてもよい。
【００５８】
図１３は、スレーブ装置（Ｓ１）２０による時刻補正フローを示す。
【００５９】
時刻管理部２０７は、制御部２０６からの時刻補正の指示を待つ（ステップＳ７０１）。
制御部２０６から時刻補正が指示された場合（ステップＳ７０２でＹＥＳ）に、時刻管理部２０７は、メモリ２０４に平均伝搬遅延Ｄ＿ａｖｅと平均カウント差Ｃ＿ａｖｅとが存在するか否かを判定する（ステップＳ７０３）。
メモリ２０４に平均伝搬遅延Ｄ＿ａｖｅと平均カウント差Ｃ＿ａｖｅが存在していなければ（ステップＳ７０３でＮＯ）、処理はステップＳ７０１に戻る。
メモリ２０４に平均伝搬遅延Ｄ＿ａｖｅと平均カウント差Ｃ＿ａｖｅが存在していれば（ステップＳ７０３でＹＥＳ）、時刻管理部２０７は、中継遅延差Δを算出する（ステップＳ７０４）。具体的には、時刻管理部２０７は、前述の式３に従って、中継遅延差Δを算出する。
次に、時刻管理部２０７は、伝搬遅延Ｄ＿ｔｒｕｅを算出する（ステップＳ７０５）。具体的には、時刻管理部２０７は、前述の式４に従って、伝搬遅延Ｄ＿ｔｒｕｅを算出する。
次に、時刻管理部２０７は、Ｏｆｆｓｅｔ（Ｎ）を算出する（ステップＳ７０６）。具体的には、時刻管理部２０７は、前述の式５に従って、Ｏｆｆｓｅｔ（Ｎ）を算出する。
最後に、時刻管理部２０７は、Ｏｆｆｓｅｔ（Ｎ）を用いてスレーブ時計の時刻を補正する（ステップＳ７０７）。具体的には、時刻管理部２０７は、前述の式６に従って、時刻を補正する。
【００６０】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態によれば、伝送路での遅延時間の揺らぎにより発生するグランドマスタ装置（ＧＭ）１０とスレーブ装置（Ｓ１）２０との間の時刻差を補正することが可能である。つまり、本実施の形態によれば、時刻同期非対応のスイッチングハブをネットワークに混在させても、グランドマスタ装置（ＧＭ）１０とスレーブ装置（Ｓ１）２０との間で正確な時刻同期を実現することができる。
【００６１】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、ハードウェア構成の補足説明を行う。
図３に示すプロセッサ１０２及び図５に示すプロセッサ２０２は、それぞれ、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ１０２及びプロセッサ２０２は、それぞれ、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）等である。
図３に示すメモリ１０４及び図５に示すメモリ２０４は、それぞれ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
図３に示す補助記憶装置１０３及び図５に示す補助記憶装置２０３は、それぞれ、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等である。
図３に示すネットワークインタフェース１１１、ネットワークインタフェース１１２、図５に示すネットワークインタフェース２１１、ネットワークインタフェース２１２は、それぞれ、データを受信するレシーバー及びデータを送信するトランスミッターを含む。
ネットワークインタフェース１１１、ネットワークインタフェース１１２、ネットワークインタフェース２１１、ネットワークインタフェース２１２は、それぞれ、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００６２】
また、補助記憶装置１０３には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ１０２により実行される。
プロセッサ１０２はＯＳの少なくとも一部を実行しながら、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の機能を実現するプログラムを実行する。
プロセッサ１０２がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
【００６３】
また、補助記憶装置２０３には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がプロセッサ２０２により実行される。
プロセッサ２０２はＯＳの少なくとも一部を実行しながら、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の機能を実現するプログラムを実行する。
プロセッサ２０２がＯＳを実行することで、タスク管理、メモリ管理、ファイル管理、通信制御等が行われる。
【００６４】
また、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、補助記憶装置１０３、メモリ１０４、プロセッサ１０２内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００６５】
また、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の処理の結果を示す情報、データ、信号値及び変数値の少なくともいずれかが、補助記憶装置２０３、メモリ２０４、プロセッサ２０２内のレジスタ及びキャッシュメモリの少なくともいずれかに記憶される。
また、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の機能を実現するプログラムは、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤ等の可搬記憶媒体に記憶されてもよい。
【００６６】
また、制御部１０６、時刻管理部１０７、時間計測部１０８、送信部１０９、データ調停部１１０及び受信部１１５の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、グランドマスタ装置（ＧＭ）１０は、ロジックＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＡ（Ｇａｔｅ  Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった処理回路により実現されてもよい。
【００６７】
また、制御部２０６、時刻管理部２０７、時間計測部２０８、送信部２０９、データ調停部２１０及び受信部２１５の「部」を、「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。
また、スレーブ装置（Ｓ１）２０は、ロジックＩＣ、ＧＡ、ＡＳＩＣ、ＦＰＧＡといった処理回路により実現されてもよい。
【００６８】
なお、本明細書では、プロセッサと、メモリと、プロセッサとメモリの組合せと、処理回路との上位概念を、「プロセッシングサーキットリー」という。
つまり、プロセッサと、メモリと、プロセッサとメモリの組合せと、処理回路とは、それぞれ「プロセッシングサーキットリー」の具体例である。
【符号の説明】
【００６９】
１０  グランドマスタ装置（ＧＭ）、２０  スレーブ装置（Ｓ１）、３０  汎用ハブ（ＨＵＢ）、１０１  入力インタフェース、１０２  プロセッサ、１０３  補助記憶装置、１０４  メモリ、１０５  出力インタフェース、１０６  制御部、１０７  時刻管理部、１０８  時間計測部、１０９  送信部、１１０  データ調停部、１１１  ネットワークインタフェース、１１２  ネットワークインタフェース、１１３  ネットワークポート、１１４  ネットワークポート、１１５  受信部、２０１  入力インタフェース、２０２  プロセッサ、２０３  補助記憶装置、２０４  メモリ、２０５  出力インタフェース、２０６  制御部、２０７  時刻管理部、２０８  時間計測部、２０９  送信部、２１０  データ調停部、２１１  ネットワークインタフェース、２１２  ネットワークインタフェース、２１３  ネットワークポート、２１４  ネットワークポート、２１５  受信部、１０８０  マスタカウンタ、２０８０  スレーブカウンタ。
【要約】
グランドマスタ装置（ＧＭ）（１０）とスレーブ装置（Ｓ１）（２０）は、中継遅延が一定でない汎用ハブ（ＨＵＢ）（３０）を介して接続される。グランドマスタ装置（ＧＭ）（１０）は、時刻同期のためのＳｙｎｃフレームを送信するタイミングで、現在時刻をＳｙｎｃフレームの送信時刻として取得し、スレーブカウンタのカウント値を送信カウント値として取得し、送信時刻と送信カウント値とをＳｙｎｃフレームに格納し、Ｓｙｎｃフレームを送信する。スレーブ装置（Ｓ１）（２０）は、Ｓｙｎｃフレームを受信し、Ｓｙｎｃフレームの受信時刻と、当該受信時刻におけるスレーブカウンタのカウント値である受信カウント値とを取得し、送信時刻と送信カウント値と受信時刻と受信カウント値とを用いて、スレーブ装置（Ｓ１）（２０）の時刻を補正する。【図１】
0006351889.tif 000003
【図２】
0006351889.tif 000004
【図３】
0006351889.tif 000005
【図４】
0006351889.tif 000006
【図５】
0006351889.tif 000007
【図６】
0006351889.tif 000008
【図７】
0006351889.tif 000009
【図８】
0006351889.tif 000010
【図９】
0006351889.tif 000011
【図１０】
0006351889.tif 000012
【図１１】
0006351889.tif 000013
【図１２】
0006351889.tif 000014
【図１３】
0006351889.tif 000015
【図１４】
0006351889.tif 000016
【図１５】
0006351889.tif 000017
【図１６】
0006351889.tif 000018