(57)【要約】  時刻同期装置（３００）において、受信部（３１０）は、マスタ装置（２００）から第１データ（４０１）を受信する。その後、送信部（３２０）は、マスタ装置（２００）に第２データ（４０２）を送信する。補正部（３４０）は、ソフトウェアクロックであるスレーブクロック（３０１）を用いて記録された第１データ（４０１）の受信時刻と第２データ（４０２）の送信時刻とを補正する。同期部（３５０）は、少なくともマスタ装置（２００）から通知される第１データ（４０１）の送信時刻と補正部（３４０）により補正された第１データ（４０１）の受信時刻と補正部（３４０）により補正された第２データ（４０２）の送信時刻とマスタ装置（２００）から通知される第２データ（４０２）の受信時刻とから、マスタクロック（２０１）とスレーブクロック（３０１）との時刻のずれであるオフセット（４０５）を計算する。
2016199196.tif 000002
【特許請求の範囲】
【請求項１】
マスタクロックを有するマスタ装置から第１データを受信する受信部と、
前記受信部により前記第１データが受信された後に、前記マスタ装置に第２データを送信する送信部と、
ソフトウェアクロックであるスレーブクロックを用いて、前記受信部での前記第１データの受信時刻と前記送信部での前記第２データの送信時刻とを記録する記録部と、
前記記録部により記録された前記第１データの受信時刻と前記第２データの送信時刻とを補正する補正部と、
少なくとも前記マスタ装置から通知される前記マスタ装置での前記第１データの送信時刻と前記補正部により補正された前記第１データの受信時刻と前記補正部により補正された前記第２データの送信時刻と前記マスタ装置から通知される前記マスタ装置での前記第２データの受信時刻とから、前記マスタクロックと前記スレーブクロックとの時刻のずれであるオフセットを計算する同期部と
を備える時刻同期装置。
【請求項２】
前記受信部は、前記マスタ装置から前記第１データを繰り返し受信し、
前記記録部は、前記受信部により前記第１データが受信される度に、前記受信部での前記第１データの受信時刻を記録し、
前記補正部は、前記記録部により前記第１データの受信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、前記記録部により記録された前記第１データの受信時刻の補正値を計算し、
前記同期部は、前記オフセットを計算する際に、前記補正部により計算された前記第１データの受信時刻の補正値を前記第１データの受信時刻として用いる請求項１に記載の時刻同期装置。
【請求項３】
前記送信部は、前記受信部により前記第１データが受信される度に、前記マスタ装置に前記第２データを送信し、
前記記録部は、前記送信部により前記第２データが送信される度に、前記送信部での前記第２データの送信時刻を記録し、
前記補正部は、前記記録部により前記第２データの送信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、前記記録部により記録された前記第２データの送信時刻の補正値を計算し、
前記同期部は、前記オフセットを計算する際に、前記補正部により計算された前記第２データの送信時刻の補正値を前記第２データの送信時刻として用いる請求項２に記載の時刻同期装置。
【請求項４】
前記同期部は、前記受信部により前記第１データが受信される度に、前記オフセットを計算し、前記オフセットの複数の計算値を蓄積し、蓄積した複数の計算値の統計処理を行い、前記統計処理の結果に応じて、前記スレーブクロックの時刻を調整する請求項２又は３に記載の時刻同期装置。
【請求項５】
前記同期部は、蓄積した複数の計算値の平均を前記統計処理の結果として用いて、前記スレーブクロックの時刻を調整する請求項４に記載の時刻同期装置。
【請求項６】
前記受信部は、前記マスタ装置から、前記マスタ装置での前記第１データの送信時刻を通知するための第３データと前記マスタ装置での前記第２データの受信時刻を通知するための第４データとを受信し、
前記同期部は、前記オフセットを計算する際に、前記受信部により受信された前記第３データと前記第４データとを参照する請求項１から５のいずれか１項に記載の時刻同期装置。
【請求項７】
前記同期部は、前記マスタ装置で記録された前記第１データの送信時刻と前記マスタ装置で補正された前記第１データの送信時刻と前記記録部により記録された前記第１データの受信時刻と前記補正部により補正された前記第１データの受信時刻と前記記録部により記録された前記第２データの送信時刻と前記補正部により補正された前記第２データの送信時刻と前記マスタ装置で記録された前記第２データの受信時刻と前記マスタ装置で補正された前記第２データの受信時刻とから、前記オフセットを計算する請求項１から６のいずれか１項に記載の時刻同期装置。
【請求項８】
前記同期部は、前記マスタ装置で記録された前記第１データの送信時刻と前記マスタ装置で補正された前記第１データの送信時刻との合計と、前記記録部により記録された前記第１データの受信時刻と前記補正部により補正された前記第１データの受信時刻との合計との差、及び、前記記録部により記録された前記第２データの送信時刻と前記補正部により補正された前記第２データの送信時刻との合計と、前記マスタ装置で記録された前記第２データの受信時刻と前記マスタ装置で補正された前記第２データの受信時刻との合計との差から、前記オフセットを計算する請求項７に記載の時刻同期装置。
【請求項９】
請求項１から８のいずれか１項に記載の時刻同期装置と、
ソフトウェアクロックであるマスタクロックを用いて、前記第１データの送信時刻と前記第２データの受信時刻とを記録し、記録した前記第１データの送信時刻と前記第２データの受信時刻とを補正し、前記時刻同期装置に、少なくとも補正した前記第１データの送信時刻と前記第２データの受信時刻とを通知するマスタ装置と
を備える時刻同期システム。
【請求項１０】
前記マスタ装置は、前記時刻同期装置に、さらに、記録した前記第１データの送信時刻と前記第２データの受信時刻とを通知する請求項９に記載の時刻同期システム。
【請求項１１】
マスタクロックを有するマスタ装置が、第１データを送信し、
ソフトウェアクロックであるスレーブクロックを有する時刻同期装置が、前記第１データを受信し、
前記時刻同期装置が、前記第１データを受信した後に、第２データを送信し、
前記マスタ装置が、前記第２データを受信し、
前記マスタ装置が、前記第１データの送信時刻と前記第２データの受信時刻とを通知し、
前記時刻同期装置が、前記スレーブクロックを用いて、前記第１データの受信時刻と前記第２データの送信時刻とを記録し、記録した前記第１データの受信時刻と前記第２データの送信時刻とを補正し、少なくとも前記マスタ装置から通知された前記第１データの送信時刻と補正した前記第１データの受信時刻と補正した前記第２データの送信時刻と前記マスタ装置から通知された前記第２データの受信時刻とから、前記マスタクロックと前記スレーブクロックとの時刻のずれであるオフセットを計算する時刻同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、時刻同期装置及び時刻同期システム及び時刻同期方法に関するものである。
【背景技術】
【０００２】
ＰＡ（Ｐｒｏｃｅｓｓ・Ａｕｔｏｍａｔｉｏｎ）分野において、クローズドネットワーク構成からオープンネットワーク構成へのシフト、及び、新たな情報技術の適用等により、広域的なスマート通信を実現することが推進されている。具体例として、スマートグリッドが挙げられる。多数のデバイスの計測及び制御において、イベント同期とデータ相関とを簡易化するために、高精度な時刻同期が求められている。【０００３】
クローズドネットワーク構成では、数十台といった比較的少数のデバイスの時刻が独自の時刻同期方式を利用して同期される。時刻同期精度は、マイクロ秒単位である。時刻同期精度を高めるため、時刻同期方式は、主にハードウェアベースで実装される。【０００４】
オープンネットワーク構成で利用可能な時刻同期方式として、ＩＥＥＥ（Ｉｎｓｔｉｔｕｔｅ・ｏｆ・Ｅｌｅｃｔｒｉｃａｌ・ａｎｄ・Ｅｌｅｃｔｒｏｎｉｃｓ・Ｅｎｇｉｎｅｅｒｓ）は、イーサネット（登録商標）を利用した時刻同期規格ＩＥＥＥ１５８８を策定している。ＩＥＥＥ１５８８では、ネットワークを介して時刻を記録した同期フレームを送受信することで時刻を同期する方法が定められている。ＩＥＥＥ１５８８の実装は、ハードウェアベース実装とソフトウェアベース実装との２種類に分かれる。【０００５】
ハードウェアベース実装では、ＯＳＩ（Ｏｐｅｎ・Ｓｙｓｔｅｍｓ・Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルの物理層の処理を行うＰＨＹのハードウェアタイムスタンプ機能を用いて時刻が記録される（例えば、特許文献１参照）。よって、時刻送信側は、ＰＨＹが同期フレームを送信するときのタイムスタンプを送信時刻として記録し、記録した送信時刻を送信する。同様に、時刻受信側は、ＰＨＹが同期フレームを受信したときのタイムスタンプを受信時刻として記録し、記録した受信時刻をアプリケーションプログラムで利用する。時刻同期精度は、理論上は１ナノ秒であるが、実際には最高１００ナノ秒程度である。【０００６】
ソフトウェアベース実装では、ＯＳＩ参照モデルのアプリケーション層の処理を行うアプリケーションプログラムのソフトウェアタイムスタンプ機能を用いて時刻が記録される。よって、時刻送信側は、アプリケーションプログラムが下位処理に同期フレームの送信を指示したときのタイムスタンプを送信時刻として記録し、記録した送信時刻を送信する。同様に、時刻受信側は、アプリケーションプログラムが下位処理から同期フレームの受信を通知されたときのタイムスタンプを受信時刻として記録し、記録した受信時刻をアプリケーションプログラムで利用する。時刻同期精度は、最悪の場合１００ミリ秒程度まで劣化する。なお、ソフトウェアベース実装の時刻同期精度は、アプリケーションプログラムが動作するＯＳ（Ｏｐｅｒａｔｉｎｇ・Ｓｙｓｔｅｍ）、及び、通信機能の階層構造によって大幅に変動する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２５６９６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
システムをクローズドネットワーク構成からオープンネットワーク構成に変更する際には、そのシステムを別のシステムと接続することになる。資産流用の観点から、システム内部での時刻同期には既存の時刻同期方式を継続して利用し、システム外部との時刻同期にはＩＥＥＥ１５８８を利用することが考えられる。しかし、その場合、既存の時刻同期方式とＩＥＥＥ１５８８との両方に対応する端末が必要である。ＩＥＥＥ１５８８を新たに導入する場合、ハードウェアベース実装を採用すれば、高い時刻同期精度が得られるが、膨大なコストがかかる。したがって、コスト節約の観点から、ソフトウェアベース実装を採用することが望まれる。【０００９】
本発明は、ソフトウェアベース実装による時刻同期方式の時刻同期精度を向上させることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一の態様に係る時刻同期装置は、
マスタクロックを有するマスタ装置から第１データを受信する受信部と、
前記受信部により前記第１データが受信された後に、前記マスタ装置に第２データを送信する送信部と、
ソフトウェアクロックであるスレーブクロックを用いて、前記受信部での前記第１データの受信時刻と前記送信部での前記第２データの送信時刻とを記録する記録部と、
前記記録部により記録された前記第１データの受信時刻と前記第２データの送信時刻とを補正する補正部と、
少なくとも前記マスタ装置から通知される前記マスタ装置での前記第１データの送信時刻と前記補正部により補正された前記第１データの受信時刻と前記補正部により補正された前記第２データの送信時刻と前記マスタ装置から通知される前記マスタ装置での前記第２データの受信時刻とから、前記マスタクロックと前記スレーブクロックとの時刻のずれであるオフセットを計算する同期部とを備える。
【発明の効果】
【００１１】
本発明では、ソフトウェアクロックを用いて記録される時刻が補正されるため、ソフトウェアベース実装による時刻同期方式の時刻同期精度が向上する。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る時刻同期システムの構成例を示す図。
【図２】実施の形態１に係るマスタ装置及び時刻同期装置の構成を示すブロック図。
【図３】実施の形態１に係る時刻同期システムの動作を示すフローチャート。
【図４】実施の形態１に係る時刻同期システムの動作を示すフローチャート。
【図５】実施の形態１に係る時刻同期システムの動作を示すフローチャート。
【図６】実施の形態１に係るマスタ装置及び時刻同期装置の実装例を示すブロック図。
【図７】実施の形態１に係るマスタ装置及び時刻同期装置の間の通信手順を示すシーケンス図。
【図８】実施の形態２に係る時刻同期システムの構成例を示す図。
【図９】実施の形態３に係る時刻同期システムの構成例を示す図。
【図１０】本発明の実施の形態に係る時刻同期装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１３】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一又は相当する部分には、同一符号を付している。実施の形態の説明において、同一又は相当する部分については、その説明を適宜省略又は簡略化する。
【００１４】
実施の形態１．
従来のソフトウェアベース実装による時刻同期方式には、前述したような時刻同期精度の劣化という課題がある。この課題の要因は、ソフトウェアタイムスタンプの揺らぎ、及び、時刻同期が実装される端末の内部処理遅延の非対称性である。本実施の形態では、時刻の記録値を補正することで、これらの要因の少なくとも一部を除去又は抑制する。
【００１５】
本実施の形態は、複数台のデバイスが存在する分散システムにおける時刻同期をソフトウェアベース実装により実現するものである。本実施の形態に係るソフトウェアベース実装による時刻同期方式では、ＩＥＥＥ１５８８の原理が利用される。この時刻同期方式は、分散システムに存在する任意の端末に実装可能である。端末にインストールされるＯＳは、リアルタイムＯＳである。時刻送信側の端末は、マスタである。時刻受信側の端末は、スレーブであり、時刻同期を実施する端末である。
【００１６】
以下、本実施の形態に係るシステムの構成、本実施の形態に係るシステムの動作、本実施の形態の効果を順番に説明する。
【００１７】
＊＊＊構成の説明＊＊＊
図１を参照して、本実施の形態に係るシステムである時刻同期システム１００の構成例を説明する。
【００１８】
時刻同期システム１００は、分散システムである。時刻同期システム１００は、１台のＧＭ１１０（Ｇｒａｎｄ・Ｍａｓｔｅｒ）と、複数台のＰＬＣ１２０（Ｐｒｏｇｒａｍｍａｂｌｅ・Ｌｏｇｉｃ・Ｃｏｎｔｒｏｌｌｅｒ）と、複数台のフィールドデバイス１３０とを備える。
【００１９】
本例では、ツリー型のネットワークトポロジーが採用されている。ＧＭ１１０がルートになっており、ルートの下位ノードとして少なくとも３台のＰＬＣ１２０がＧＭ１１０に接続されている。さらに下位のノードとして少なくとも１台のＰＬＣ１２０又は少なくとも３台のフィールドデバイス１３０が接続され、サブネットワークが構成されている。
【００２０】
ＧＭ１１０は、時刻基準を提供する。ＧＭ１１０と、ＧＭ１１０に接続されたＰＬＣ１２０との間の時刻同期には、第１時刻同期方式１０１が適用される。第１時刻同期方式１０１は、本実施の形態に係るソフトウェアベース実装による時刻同期方式であり、ＩＥＥＥ１５８８の原理を利用したものである。第１時刻同期方式１０１による時刻同期の手順については後述する。
【００２１】
各サブネットワーク内部の時刻同期には、第２時刻同期方式１０２が適用される。第２時刻同期方式１０２は、各サブネットワークの独自の時刻同期方式である。第２時刻同期方式１０２による時刻同期の手順については、任意の手順を適用できるため、説明を省略する。
【００２２】
ＧＭ１１０に接続されたＰＬＣ１２０は、各サブネットワークの第２時刻同期方式１０２に対応するとともに、第１時刻同期方式１０１に対応する。
【００２３】
なお、ＧＭ１１０に接続されたＰＬＣ１２０の台数、及び、各サブネットワークの構成は、適宜変更することができる。ＰＬＣ１２０は、ＮＣ（Ｎｕｍｅｒｉｃａｌ・Ｃｏｎｔｒｏｌｌｅｒ）等、他の種類の機器に置き換えられてもよい。
【００２４】
図２を参照して、本実施の形態に係るマスタ装置２００及び時刻同期装置３００の構成を説明する。
【００２５】
マスタ装置２００は、マスタクロック２０１を有する。マスタクロック２０１は、ハードウェアクロックではなく、ソフトウェアクロックである。ハードウェアクロックとは、ハードウェアに搭載される時計のことである。ハードウェアクロックは、ハードウェアタイムスタンプ機能に利用される。ソフトウェアクロックとは、ソフトウェアによって管理される時計のことである。ソフトウェアクロックは、ソフトウェアタイムスタンプ機能に利用される。
【００２６】
マスタ装置２００は、送信部２１０と、受信部２２０と、記録部２３０と、補正部２４０とを備える。
【００２７】
図１に示したＧＭ１１０は、第１時刻同期方式１０１における時刻送信側の端末であり、マスタ装置２００に相当する。
【００２８】
時刻同期装置３００は、スレーブクロック３０１を有する。スレーブクロック３０１は、マスタクロック２０１と同じように、ハードウェアクロックではなく、ソフトウェアクロックである。
【００２９】
時刻同期装置３００は、受信部３１０と、送信部３２０と、記録部３３０と、補正部３４０と、同期部３５０とを備える。
【００３０】
図１に示した、ＧＭ１１０に接続されたＰＬＣ１２０は、第１時刻同期方式１０１における時刻受信側の端末であり、時刻同期装置３００に相当する。
【００３１】
マスタ装置２００と時刻同期装置３００は、以下に説明する第１時刻同期方式１０１の通信手順に沿って、ネットワーク４００を介して互いにデータを送受信する。これにより、時刻同期装置３００が、スレーブクロック３０１の時刻をマスタクロック２０１の時刻に合わせることができる。
【００３２】
マスタ装置２００の送信部２１０は、時刻同期装置３００に第１データ４０１を送信する。
【００３３】
時刻同期装置３００の受信部３１０は、マスタ装置２００から第１データ４０１を受信する。
【００３４】
時刻同期装置３００の送信部３２０は、受信部３１０により第１データ４０１が受信された後に、マスタ装置２００に第２データ４０２を送信する。
【００３５】
マスタ装置２００の受信部２２０は、時刻同期装置３００から第２データ４０２を受信する。
【００３６】
マスタ装置２００の記録部２３０は、マスタクロック２０１を用いて、送信部２１０での第１データ４０１の送信時刻と受信部２２０での第２データ４０２の受信時刻とを記録する。
【００３７】
マスタ装置２００の補正部２４０は、記録部２３０により記録された第１データ４０１の送信時刻と第２データ４０２の受信時刻とを補正する。
【００３８】
マスタ装置２００の送信部２１０は、時刻同期装置３００に、少なくとも補正部２４０により補正された第１データ４０１の送信時刻を通知するための第３データ４０３と少なくとも補正部２４０により補正された第２データ４０２の受信時刻を通知するための第４データ４０４とを送信する。これにより、送信部２１０は、時刻同期装置３００に、少なくとも補正部２４０により補正された第１データ４０１の送信時刻と第２データ４０２の受信時刻とを通知する。
【００３９】
時刻同期装置３００の受信部３１０は、マスタ装置２００から第３データ４０３と第４データ４０４とを受信する。
【００４０】
時刻同期装置３００の記録部３３０は、スレーブクロック３０１を用いて、受信部３１０での第１データ４０１の受信時刻と送信部３２０での第２データ４０２の送信時刻とを記録する。
【００４１】
時刻同期装置３００の補正部３４０は、記録部３３０により記録された第１データ４０１の受信時刻と第２データ４０２の送信時刻とを補正する。
【００４２】
時刻同期装置３００の同期部３５０は、少なくともマスタ装置２００から通知されるマスタ装置２００での第１データ４０１の送信時刻と補正部３４０により補正された第１データ４０１の受信時刻と補正部３４０により補正された第２データ４０２の送信時刻とマスタ装置２００から通知されるマスタ装置２００での第２データ４０２の受信時刻とから、オフセット４０５を計算する。オフセット４０５は、マスタクロック２０１とスレーブクロック３０１との時刻のずれである。同期部３５０は、オフセット４０５を計算する際に、受信部３１０により受信された第３データ４０３と第４データ４０４とを参照する。即ち、同期部３５０は、受信部３１０により受信された第３データ４０３から、マスタ装置２００での第１データ４０１の送信時刻を得る。同期部３５０は、受信部３１０により受信された第４データ４０４から、マスタ装置２００での第２データ４０２の受信時刻を得る。
【００４３】
本実施の形態において、第３データ４０３は、マスタ装置２００の補正部２４０により補正された第１データ４０１の送信時刻だけでなく、マスタ装置２００の記録部２３０により記録された第１データ４０１の送信時刻も通知するためのデータである。第４データ４０４は、補正部２４０により補正された第２データ４０２の受信時刻だけでなく、記録部２３０により記録された第２データ４０２の受信時刻も通知するためのデータである。即ち、本実施の形態では、マスタ装置２００の送信部２１０が、時刻同期装置３００に、さらに、記録部２３０により記録された第１データ４０１の送信時刻と第２データ４０２の受信時刻とを通知する。このため、時刻同期装置３００の同期部３５０は、オフセット４０５を計算する際に、マスタ装置２００の記録部２３０により記録された第１データ４０１の送信時刻とマスタ装置２００の補正部２４０により補正された第１データ４０１の送信時刻との両方を、マスタ装置２００から通知されるマスタ装置２００での第１データ４０１の送信時刻として用いる。また、時刻同期装置３００の同期部３５０は、オフセット４０５を計算する際に、マスタ装置２００の記録部２３０により記録された第２データ４０２の受信時刻とマスタ装置２００の補正部２４０により補正された第２データ４０２の受信時刻との両方を、マスタ装置２００から通知されるマスタ装置２００での第２データ４０２の受信時刻として用いる。
【００４４】
本実施の形態において、同期部３５０は、オフセット４０５を計算する際に、補正部３４０により補正された第１データ４０１の受信時刻だけでなく、記録部３３０により記録された第１データ４０１の受信時刻も用いる。また、同期部３５０は、オフセット４０５を計算する際に、補正部３４０により補正された第２データ４０２の送信時刻だけでなく、記録部３３０により記録された第２データ４０２の送信時刻も用いる。
【００４５】
つまり、本実施の形態では、同期部３５０が、マスタ装置２００で記録された第１データ４０１の送信時刻とマスタ装置２００で補正された第１データ４０１の送信時刻と記録部３３０により記録された第１データ４０１の受信時刻と補正部３４０により補正された第１データ４０１の受信時刻と記録部３３０により記録された第２データ４０２の送信時刻と補正部３４０により補正された第２データ４０２の送信時刻とマスタ装置２００で記録された第２データ４０２の受信時刻とマスタ装置２００で補正された第２データ４０２の受信時刻とから、オフセット４０５を計算する。
【００４６】
具体的には、同期部３５０は、マスタ装置２００で記録された第１データ４０１の送信時刻とマスタ装置２００で補正された第１データ４０１の送信時刻との合計と、記録部３３０により記録された第１データ４０１の受信時刻と補正部３４０により補正された第１データ４０１の受信時刻との合計との差、及び、記録部３３０により記録された第２データ４０２の送信時刻と補正部３４０により補正された第２データ４０２の送信時刻との合計と、マスタ装置２００で記録された第２データ４０２の受信時刻とマスタ装置２００で補正された第２データ４０２の受信時刻との合計との差から、オフセット４０５を計算する。
【００４７】
なお、第３データ４０３は、マスタ装置２００の記録部２３０により記録された第１データ４０１の送信時刻のみを通知するためのデータであってもよい。第４データ４０４は、記録部２３０により記録された第２データ４０２の受信時刻のみを通知するためのデータであってもよい。よって、マスタ装置２００は、補正部２４０を備えなくてもよい。
【００４８】
マスタ装置２００が補正部２４０を備えないか、又は、補正部２４０が記録部２３０により記録された第１データ４０１の送信時刻を補正しない場合、時刻同期装置３００の補正部３４０は、マスタ装置２００から通知されるマスタ装置２００での第１データ４０１の送信時刻を補正してもよい。その場合、時刻同期装置３００の同期部３５０は、オフセット４０５を計算する際に、マスタ装置２００から通知されるマスタ装置２００での第１データ４０１の送信時刻とともに、補正部３４０により補正された第１データ４０１の送信時刻を用いることができる。
【００４９】
マスタ装置２００が補正部２４０を備えないか、又は、補正部２４０が記録部２３０により記録された第２データ４０２の受信時刻を補正しない場合、時刻同期装置３００の補正部３４０は、マスタ装置２００から通知されるマスタ装置２００での第２データ４０２の受信時刻を補正してもよい。その場合、時刻同期装置３００の同期部３５０は、オフセット４０５を計算する際に、マスタ装置２００から通知されるマスタ装置２００での第２データ４０２の受信時刻とともに、補正部３４０により補正された第２データ４０２の受信時刻を用いることができる。
【００５０】
＊＊＊動作の説明＊＊＊
図３及び図４及び図５を参照して、時刻同期システム１００の動作を説明する。時刻同期システム１００の動作は、本実施の形態に係る時刻同期方法に相当する。
【００５１】
図３は、第１データ４０１の送受信に関連する動作を示している。本実施の形態では、第１データ４０１の送受信が繰り返される。
【００５２】
ステップＳ１１において、マスタ装置２００の送信部２１０は、時刻同期装置３００に第１データ４０１を繰り返し送信する。
【００５３】
ステップＳ１２において、時刻同期装置３００の受信部３１０は、マスタ装置２００から第１データ４０１を繰り返し受信する。
【００５４】
ステップＳ１３において、マスタ装置２００の記録部２３０は、送信部２１０により第１データ４０１が送信される度に、マスタクロック２０１を用いて、送信部２１０での第１データ４０１の送信時刻を記録する。
【００５５】
ステップＳ１４において、マスタ装置２００の補正部２４０は、記録部２３０により第１データ４０１の送信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、記録部２３０により記録された第１データ４０１の送信時刻の補正値を計算する。
【００５６】
ステップＳ１５において、マスタ装置２００の送信部２１０は、時刻同期装置３００に、補正部２４０により計算された第１データ４０１の送信時刻の補正値を通知するためのデータを第３データ４０３として送信する。
【００５７】
ステップＳ１６において、時刻同期装置３００の受信部３１０は、マスタ装置２００から第３データ４０３を繰り返し受信する。
【００５８】
ステップＳ１７において、時刻同期装置３００の記録部３３０は、受信部３１０により第１データ４０１が受信される度に、スレーブクロック３０１を用いて、受信部３１０での第１データ４０１の受信時刻を記録する。
【００５９】
ステップＳ１８において、時刻同期装置３００の補正部３４０は、記録部３３０により第１データ４０１の受信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、記録部３３０により記録された第１データ４０１の受信時刻の補正値を計算する。
【００６０】
後述するように、時刻同期装置３００の同期部３５０は、オフセット４０５を計算する際に、補正部３４０により計算された第１データ４０１の受信時刻の補正値を第１データ４０１の受信時刻として用いる。
【００６１】
図４は、第２データ４０２の送受信に関連する動作を示している。本実施の形態では、第２データ４０２の送受信も繰り返される。
【００６２】
ステップＳ２１において、時刻同期装置３００の送信部３２０は、受信部３１０により第１データ４０１が受信される度に、マスタ装置２００に第２データ４０２を送信する。
【００６３】
ステップＳ２２において、マスタ装置２００の受信部２２０は、時刻同期装置３００から第２データ４０２を繰り返し受信する。
【００６４】
ステップＳ２３において、マスタ装置２００の記録部２３０は、受信部２２０により第２データ４０２が受信される度に、マスタクロック２０１を用いて、受信部２２０での第２データ４０２の受信時刻を記録する。
【００６５】
ステップＳ２４において、マスタ装置２００の補正部２４０は、記録部２３０により第２データ４０２の受信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、記録部２３０により記録された第２データ４０２の受信時刻の補正値を計算する。
【００６６】
ステップＳ２５において、マスタ装置２００の送信部２１０は、時刻同期装置３００に、補正部２４０により計算された第２データ４０２の受信時刻の補正値を通知するためのデータを第４データ４０４として送信する。
【００６７】
ステップＳ２６において、時刻同期装置３００の受信部３１０は、マスタ装置２００から第４データ４０４を繰り返し受信する。
【００６８】
ステップＳ２７において、時刻同期装置３００の記録部３３０は、送信部３２０により第２データ４０２が送信される度に、スレーブクロック３０１を用いて、送信部３２０での第２データ４０２の送信時刻を記録する。
【００６９】
ステップＳ２８において、時刻同期装置３００の補正部３４０は、記録部３３０により第２データ４０２の送信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、記録部３３０により記録された第２データ４０２の送信時刻の補正値を計算する。
【００７０】
後述するように、時刻同期装置３００の同期部３５０は、オフセット４０５を計算する際に、補正部３４０により計算された第２データ４０２の送信時刻の補正値を第２データ４０２の送信時刻として用いる。
【００７１】
本実施の形態では、上記のように、第１データ４０１と第２データ４０２と第３データ４０３と第４データ４０４とを１つずつ順番に送受信する通信手順が繰り返される。
【００７２】
図５は、オフセット４０５を計算する動作を示している。
【００７３】
ステップＳ３１において、時刻同期装置３００の同期部３５０は、受信部２２０により第１データ４０１が受信される度に、オフセット４０５を計算する。即ち、同期部３５０は、１回の通信手順につき、１つのオフセット４０５を計算する。
【００７４】
ステップＳ３２において、時刻同期装置３００の同期部３５０は、オフセット４０５の複数の計算値を蓄積する。即ち、同期部３５０は、２回以上の通信手順に対応する２つ以上のオフセット４０５を蓄積する。
【００７５】
ステップＳ３３において、時刻同期装置３００の同期部３５０は、蓄積した複数の計算値の統計処理を行う。同期部３５０は、その統計処理の結果に応じて、スレーブクロック３０１の時刻を調整する。具体的には、同期部３５０は、蓄積した複数の計算値の平均を統計処理の結果として用いて、スレーブクロック３０１の時刻を調整する。これにより、マスタクロック２０１の時刻とスレーブクロック３０１の時刻とが同期する。
【００７６】
本実施の形態では、前述したように、ＩＥＥＥ１５８８の原理が利用される。即ち、第１データ４０１と第２データ４０２と第３データ４０３と第４データ４０４とが同期フレームとして送受信される。具体的には、第１データ４０１がＳｙｎｃメッセージとして送受信され、第２データ４０２がＦｏｌｌｏｗ＿Ｕｐメッセージとして送受信され、第３データ４０３がＤｅｌａｙ＿Ｒｅｑメッセージとして送受信され、第４データ４０４がＤｅｌａｙ＿Ｒｅｓｐメッセージとして送受信される。
【００７７】
マスタ装置２００と時刻同期装置３００との間の片道の遅延が往復の遅延の半分であると仮定すれば、記録部３３０により記録された第１データ４０１の受信時刻と補正部３４０により補正された第１データ４０１の受信時刻との合計から、第３データ４０３によって通知された、マスタ装置２００で記録された第１データ４０１の送信時刻とマスタ装置２００で補正された第１データ４０１の送信時刻との合計を引いた値と、第４データ４０４によって通知された、マスタ装置２００で記録された第２データ４０２の受信時刻とマスタ装置２００で補正された第２データ４０２の受信時刻との合計から、記録部３３０により記録された第２データ４０２の送信時刻と補正部３４０により補正された第２データ４０２の送信時刻との合計を引いた値との合計を４で割った値が、片道の遅延になる。そして、記録部３３０により記録された第１データ４０１の受信時刻と補正部３４０により補正された第１データ４０１の受信時刻との合計から、マスタ装置２００で記録された第１データ４０１の送信時刻とマスタ装置２００で補正された第１データ４０１の送信時刻との合計を引いた値を２で割った値と、マスタ装置２００で記録された第２データ４０２の受信時刻とマスタ装置２００で補正された第２データ４０２の受信時刻との合計から、記録部３３０により記録された第２データ４０２の送信時刻と補正部３４０により補正された第２データ４０２の送信時刻との合計を引いた値を２で割った値とのいずれか一方から、片道の遅延を引いた値が、オフセット４０５になる。
【００７８】
即ち、オフセット４０５をＴ＿ｏｆｆｓｅｔ、マスタ装置２００の記録部２３０により記録された第１データ４０１の送信時刻をＴ＿ｍ１、Ｔ＿ｍ１の補正値をＴ＿ｍ１’、時刻同期装置３００の記録部３３０により記録された第１データ４０１の受信時刻をＴ＿ｓ１、Ｔ＿ｓ１の補正値をＴ＿ｓ１’、時刻同期装置３００の記録部３３０により記録された第２データ４０２の送信時刻をＴ＿ｓ２、Ｔ＿ｓ２の補正値をＴ＿ｓ２’、マスタ装置２００の記録部２３０により記録された第２データ４０２の受信時刻をＴ＿ｍ２、Ｔ＿ｍ２の補正値をＴ＿ｍ２’としたとき、Ｔ＿ｏｆｆｓｅｔ＝（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））／２−（（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））＋（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’）））／４＝（（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））−（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’）））／４、又は、Ｔ＿ｏｆｆｓｅｔ＝（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’））／２−（（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））＋（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’）））／４＝−（（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））−（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’）））／４となる。ステップＳ３１では、このような計算式を用いてオフセット４０５を求めることができる。
【００７９】
なお、補正部３４０により補正された第１データ４０１の受信時刻から、第３データ４０３によって通知された第１データ４０１の送信時刻を引いた値と、第４データ４０４によって通知された第２データ４０２の受信時刻から、補正部３４０により補正された第２データ４０２の送信時刻を引いた値との合計を２で割った値が、片道の遅延になるとみなしてもよい。この場合、補正部３４０により補正された第１データ４０１の受信時刻から、第３データ４０３によって通知された第１データ４０１の送信時刻を引いた値と、第４データ４０４によって通知された第２データ４０２の受信時刻から、補正部３４０により補正された第２データ４０２の送信時刻を引いた値とのいずれか一方から、片道の遅延を引いた値が、オフセット４０５になる。
【００８０】
即ち、ステップＳ３１では、Ｔ＿ｏｆｆｓｅｔ＝（Ｔ＿ｓ１’−Ｔ＿ｍ１’）−（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）＋（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２＝（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）−（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２、又は、Ｔ＿ｏｆｆｓｅｔ＝（Ｔ＿ｍ２’−Ｔ＿ｓ２’）−（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）＋（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２＝−（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）＋（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２という計算式を用いてオフセット４０５を求めてもよい。
【００８１】
図６を参照して、マスタ装置２００及び時刻同期装置３００の実装例を説明する。
【００８２】
時刻同期装置３００の受信部３１０及び送信部３２０の機能は、ＰＨＹ３０２及びＭＡＣ３０３（Ｍｅｄｉａ・Ａｃｃｅｓｓ・Ｃｏｎｔｒｏｌ）に実装される。ＰＨＹ３０２及びＭＡＣ３０３は、時刻同期装置３００に内蔵されるハードウェアである。具体的には、ＰＨＹ３０２は、ＯＳＩ参照モデルの物理層の処理を行うチップであり、ＭＡＣ３０３は、ＯＳＩ参照モデルのデータリンク層の処理を行うチップである。なお、ＰＨＹ３０２及びＭＡＣ３０３は、同じチップに統合されていてもよい。
【００８３】
同じように、マスタ装置２００の送信部２１０及び受信部２２０の機能も、ＰＨＹ２０２及びＭＡＣ２０３に実装される。ＰＨＹ２０２は、物理層の処理を行うチップであり、ＭＡＣ２０３は、データリンク層の処理を行うチップである。
【００８４】
時刻同期装置３００の記録部３３０の機能は、ＭＡＣドライバ３０４に実装される。ＭＡＣドライバ３０４は、時刻同期装置３００に搭載されるソフトウェアである。具体的には、ＭＡＣドライバ３０４は、ＭＡＣ３０３を制御及び操作するためにＯＳ３０５によって利用されるミドルウェアである。ＭＡＣドライバ３０４は、スレーブクロック３０１を用いてタイムスタンプを生成するソフトウェアタイムスタンプ機能を有する。
【００８５】
同じように、マスタ装置２００の記録部２３０の機能も、ＭＡＣドライバ２０４に実装される。ＭＡＣドライバ２０４は、ＭＡＣ２０３を制御及び操作するためにＯＳ２０５によって利用されるミドルウェアである。ＭＡＣドライバ２０４は、マスタクロック２０１を用いてタイムスタンプを生成するソフトウェアタイムスタンプ機能を有する。
【００８６】
時刻同期装置３００の補正部３４０及び同期部３５０の機能は、時刻同期アプリケーション３０６に実装される。時刻同期アプリケーション３０６は、時刻同期装置３００に搭載されるソフトウェアである。具体的には、時刻同期アプリケーション３０６は、他のアプリケーション３０７とともにＯＳ３０５の上で動作するアプリケーションプログラムである。時刻同期アプリケーション３０６は、ＭＡＣドライバ３０４により生成されるタイムスタンプの揺らぎを補正するための補正テーブル３０８を管理する。
【００８７】
同じように、マスタ装置２００の補正部２４０の機能も、時刻同期アプリケーション２０６に実装される。時刻同期アプリケーション２０６は、他のアプリケーション２０７とともにＯＳ２０５の上で動作するアプリケーションプログラムである。時刻同期アプリケーション２０６は、ＭＡＣドライバ２０４により生成されるタイムスタンプの揺らぎを補正するための補正テーブル２０８を管理する。
【００８８】
時刻を送信するマスタ装置２００と、時刻を同期させる時刻同期装置３００は、時刻同期に関して、同一の階層構造を持つ。この階層構造は、ＯＳ２０５，３０５及び時刻同期アプリケーション２０６，３０６に対応するアプリケーション層、ＭＡＣドライバ２０４，３０４及びＭＡＣ２０３，３０３に対応するデータリンク層、ＰＨＹ２０２，３０２に対応する物理層という３層構造である。このように、本実施の形態に係る時刻同期プロトコルでは、アプリケーション層から、ＯＳＩ参照モデルのトランスポート層及びネットワーク層を介さず、データリンク層が直接アクセスされる。
【００８９】
図７を参照して、図６に示した例におけるマスタ装置２００及び時刻同期装置３００の動作を説明する。
【００９０】
マスタ装置２００が同期フレームとしてＳｙｎｃメッセージを送信するステップＳ４１において、時刻同期アプリケーション２０６は、Ｓｙｎｃメッセージである同期フレームを生成する。時刻同期アプリケーション２０６は、この同期フレームには時刻を格納しない。ＯＳ２０５は、時刻同期アプリケーション２０６で同期フレームが生成されたことを検知すると、優先割り込みを起動し、この同期フレームを他のフレームよりも先にＭＡＣドライバ２０４に入力する。ＭＡＣドライバ２０４は、同期フレームが入力された時点でソフトウェアタイムスタンプを生成することで、同期フレームの送信時刻Ｔ＿ｍ１を記録する。その後、ＭＡＣドライバ２０４は、ＭＡＣ２０３に同期フレームを入力する。ＭＡＣ２０３は、ＰＨＹ２０２より同期フレームを送信する。ＭＡＣドライバ２０４は、記録した送信時刻Ｔ＿ｍ１を時刻同期アプリケーション２０６にフィードバックする。時刻同期アプリケーション２０６は、ＭＡＣドライバ２０４よりフィードバックされた送信時刻Ｔ＿ｍ１を補正テーブル２０８の１行目の空いている列のうち最初の列に格納する。時刻同期アプリケーション２０６は、正規分布に従う乱数を生成し、生成した乱数を補正テーブル２０８の２行目の同じ列に格納する。時刻同期アプリケーション２０６は、補正テーブル２０８の１行目に格納した送信時刻Ｔ＿ｍ１から、補正テーブル２０８の２行目に格納した乱数を引くことで、送信時刻Ｔ＿ｍ１の揺らぎを補正する。時刻同期アプリケーション２０６は、補正済の送信時刻Ｔ＿ｍ１’を補正テーブル２０８の３行目の同じ列に格納する。なお、送信時刻Ｔ＿ｍ１は、送信時刻Ｔ＿ｍ１から乱数を引く代わりに、送信時刻Ｔ＿ｍ１に乱数を足す等、他の方法で補正されてもよい。また、送信時刻Ｔ＿ｍ１、乱数、補正済の送信時刻Ｔ＿ｍ１’を補正テーブル２０８の何行目の何列目に格納するかは適宜変更することができる。
【００９１】
時刻同期装置３００が同期フレームとしてＳｙｎｃメッセージを受信するステップＳ５１において、ＰＨＹ３０２は、マスタ装置２００から同期フレームを受信する。ＰＨＹ３０２は、受信した同期フレームをＭＡＣ３０３に入力する。ＭＡＣドライバ３０４は、ＭＡＣ３０３に同期フレームが入力されたことを検知した時点でソフトウェアタイムスタンプを生成することで、同期フレームの受信時刻Ｔ＿ｓ１を記録する。その後、ＭＡＣドライバ３０４は、記録した受信時刻Ｔ＿ｓ１を時刻同期アプリケーション３０６に即座に入力する。時刻同期アプリケーション３０６は、ＭＡＣドライバ３０４より入力された受信時刻Ｔ＿ｓ１を補正テーブル３０８の１行目の空いている列のうち最初の列に格納する。時刻同期アプリケーション３０６は、正規分布に従う乱数を生成し、生成した乱数を補正テーブル３０８の２行目の同じ列に格納する。時刻同期アプリケーション３０６は、補正テーブル３０８の１行目に格納した受信時刻Ｔ＿ｓ１から、補正テーブル３０８の２行目に格納した乱数を引くことで、受信時刻Ｔ＿ｓ１の揺らぎを補正する。時刻同期アプリケーション３０６は、補正済の受信時刻Ｔ＿ｓ１’を補正テーブル３０８の３行目の同じ列に格納する。なお、受信時刻Ｔ＿ｓ１は、受信時刻Ｔ＿ｓ１から乱数を引く代わりに、受信時刻Ｔ＿ｓ１に乱数を足す等、他の方法で補正されてもよい。また、受信時刻Ｔ＿ｓ１、乱数、補正済の受信時刻Ｔ＿ｓ１’を補正テーブル３０８の何行目の何列目に格納するかは適宜変更することができる。
【００９２】
マスタ装置２００が同期フレームとしてＦｏｌｌｏｗ＿Ｕｐメッセージを送信するステップＳ４２において、時刻同期アプリケーション２０６は、Ｆｏｌｌｏｗ＿Ｕｐメッセージである同期フレームを生成する。時刻同期アプリケーション２０６は、この同期フレームに、補正テーブル２０８の１行目及び３行目に格納した補正前及び補正済の送信時刻Ｔ＿ｍ１，Ｔ＿ｍ１’の組のうち最後の列に格納した補正前及び補正済の送信時刻Ｔ＿ｍ１，Ｔ＿ｍ１’の組、即ち、直前のＳｙｎｃメッセージの補正前及び補正済の送信時刻Ｔ＿ｍ１，Ｔ＿ｍ１’を格納する。ＯＳ２０５は、時刻同期アプリケーション２０６で同期フレームが生成されたことを検知すると、優先割り込みを起動し、この同期フレームを他のフレームよりも先にＭＡＣドライバ２０４に入力する。ＭＡＣドライバ２０４は、同期フレームが入力された時点でソフトウェアタイムスタンプを生成する。しかし、ＭＡＣドライバ２０４は、同期フレームがＦｏｌｌｏｗ＿Ｕｐメッセージであることを検知し、生成したタイムスタンプをバッファ等に一定時間保持するだけで時刻同期アプリケーション２０６にはフィードバックしない。その後、ＭＡＣドライバ２０４は、ＭＡＣ２０３に同期フレームを入力する。ＭＡＣ２０３は、ＰＨＹ２０２より同期フレームを送信する。
【００９３】
時刻同期装置３００が同期フレームとしてＦｏｌｌｏｗ＿Ｕｐメッセージを受信するステップＳ５２において、ＰＨＹ３０２は、マスタ装置２００から同期フレームを受信する。ＰＨＹ３０２は、受信した同期フレームをＭＡＣ３０３に入力する。ＭＡＣドライバ３０４は、ＭＡＣ３０３に同期フレームが入力されたことを検知した時点でソフトウェアタイムスタンプを生成する。しかし、ＭＡＣドライバ３０４は、同期フレームがＦｏｌｌｏｗ＿Ｕｐメッセージであることを検知し、生成したタイムスタンプをバッファ等に一定時間保持するだけで時刻同期アプリケーション３０６には入力しない。その後、ＭＡＣドライバ３０４は、同期フレームを、ＯＳ３０５を介して時刻同期アプリケーション３０６に入力する。時刻同期アプリケーション３０６は、ＭＡＣドライバ３０４より入力された同期フレームがＦｏｌｌｏｗ＿Ｕｐメッセージであることを検知し、同期フレームに格納された補正前及び補正済の送信時刻Ｔ＿ｍ１，Ｔ＿ｍ１’を抽出する。
【００９４】
時刻同期装置３００が同期フレームとしてＤｅｌａｙ＿Ｒｅｑメッセージを送信するステップＳ５３において、時刻同期アプリケーション３０６は、Ｄｅｌａｙ＿Ｒｅｑメッセージである同期フレームを生成する。時刻同期アプリケーション３０６は、この同期フレームには時刻を格納しない。ＯＳ３０５は、時刻同期アプリケーション３０６で同期フレームが生成されたことを検知すると、優先割り込みを起動し、この同期フレームを他のフレームよりも先にＭＡＣドライバ３０４に入力する。ＭＡＣドライバ３０４は、同期フレームが入力された時点でソフトウェアタイムスタンプを生成することで、同期フレームの送信時刻Ｔ＿ｓ２を記録する。その後、ＭＡＣドライバ３０４は、ＭＡＣ３０３に同期フレームを入力する。ＭＡＣ３０３は、ＰＨＹ３０２より同期フレームを送信する。ＭＡＣドライバ３０４は、記録した送信時刻Ｔ＿ｓ２を時刻同期アプリケーション３０６にフィードバックする。時刻同期アプリケーション３０６は、ＭＡＣドライバ３０４よりフィードバックされた送信時刻Ｔ＿ｓ２を補正テーブル３０８の４行目の空いている列のうち最初の列に格納する。時刻同期アプリケーション３０６は、正規分布に従う乱数を生成し、生成した乱数を補正テーブル３０８の５行目の同じ列に格納する。時刻同期アプリケーション３０６は、補正テーブル３０８の４行目に格納した送信時刻Ｔ＿ｓ２から、補正テーブル３０８の５行目に格納した乱数を引くことで、送信時刻Ｔ＿ｓ２の揺らぎを補正する。時刻同期アプリケーション３０６は、補正済の送信時刻Ｔ＿ｓ２’を補正テーブル３０８の６行目の同じ列に格納する。なお、送信時刻Ｔ＿ｓ２は、送信時刻Ｔ＿ｓ２から乱数を引く代わりに、送信時刻Ｔ＿ｓ２に乱数を足す等、他の方法で補正されてもよい。また、送信時刻Ｔ＿ｓ２、乱数、補正済の送信時刻Ｔ＿ｓ２’を補正テーブル３０８の何行目の何列目に格納するかは適宜変更することができる。
【００９５】
マスタ装置２００が同期フレームとしてＤｅｌａｙ＿Ｒｅｑメッセージを受信するステップＳ４３において、ＰＨＹ２０２は、時刻同期装置３００から同期フレームを受信する。ＰＨＹ２０２は、受信した同期フレームをＭＡＣ２０３に入力する。ＭＡＣドライバ２０４は、ＭＡＣ２０３に同期フレームが入力されたことを検知した時点でソフトウェアタイムスタンプを生成することで、同期フレームの受信時刻Ｔ＿ｍ２を記録する。その後、ＭＡＣドライバ２０４は、記録した受信時刻Ｔ＿ｍ２を時刻同期アプリケーション２０６に即座に入力する。時刻同期アプリケーション２０６は、ＭＡＣドライバ２０４より入力された受信時刻Ｔ＿ｍ２を補正テーブル２０８の４行目の空いている列のうち最初の列に格納する。時刻同期アプリケーション２０６は、正規分布に従う乱数を生成し、生成した乱数を補正テーブル２０８の５行目の同じ列に格納する。時刻同期アプリケーション２０６は、補正テーブル２０８の４行目に格納した受信時刻Ｔ＿ｍ２から、補正テーブル２０８の５行目に格納した乱数を引くことで、受信時刻Ｔ＿ｍ２の揺らぎを補正する。時刻同期アプリケーション２０６は、補正済の受信時刻Ｔ＿ｍ２’を補正テーブル２０８の６行目の同じ列に格納する。なお、受信時刻Ｔ＿ｍ２は、受信時刻Ｔ＿ｍ２から乱数を引く代わりに、受信時刻Ｔ＿ｍ２に乱数を足す等、他の方法で補正されてもよい。また、受信時刻Ｔ＿ｍ２、乱数、補正済の受信時刻Ｔ＿ｍ２’を補正テーブル２０８の何行目の何列目に格納するかは適宜変更することができる。
【００９６】
マスタ装置２００が同期フレームとしてＤｅｌａｙ＿Ｒｅｓｐメッセージを送信するステップＳ４４において、時刻同期アプリケーション２０６は、Ｄｅｌａｙ＿Ｒｅｓｐメッセージである同期フレームを生成する。時刻同期アプリケーション２０６は、この同期フレームに、補正テーブル２０８の４行目及び６行目に格納した補正前及び補正済の受信時刻Ｔ＿ｍ１，Ｔ＿ｍ２’の組のうち最後の列に格納した補正前及び補正済の受信時刻Ｔ＿ｍ１，Ｔ＿ｍ２’の組、即ち、直前のＤｅｌａｙ＿Ｒｅｑメッセージの補正前及び補正済の受信時刻Ｔ＿ｍ１，Ｔ＿ｍ２’を格納する。ＯＳ２０５は、時刻同期アプリケーション２０６で同期フレームが生成されたことを検知すると、優先割り込みを起動し、この同期フレームを他のフレームよりも先にＭＡＣドライバ２０４に入力する。ＭＡＣドライバ２０４は、同期フレームが入力された時点でソフトウェアタイムスタンプを生成する。しかし、ＭＡＣドライバ２０４は、同期フレームがＤｅｌａｙ＿Ｒｅｓｐメッセージであることを検知し、生成したタイムスタンプをバッファ等に一定時間保持するだけで時刻同期アプリケーション２０６にはフィードバックしない。その後、ＭＡＣドライバ２０４は、ＭＡＣ２０３に同期フレームを入力する。ＭＡＣ２０３は、ＰＨＹ２０２より同期フレームを送信する。
【００９７】
時刻同期装置３００が同期フレームとしてＤｅｌａｙ＿Ｒｅｓｐメッセージを受信するステップＳ５４において、ＰＨＹ３０２は、マスタ装置２００から同期フレームを受信する。ＰＨＹ３０２は、受信した同期フレームをＭＡＣ３０３に入力する。ＭＡＣドライバ３０４は、ＭＡＣ３０３に同期フレームが入力されたことを検知した時点でソフトウェアタイムスタンプを生成する。しかし、ＭＡＣドライバ３０４は、同期フレームがＤｅｌａｙ＿Ｒｅｓｐメッセージであることを検知し、生成したタイムスタンプをバッファ等に一定時間保持するだけで時刻同期アプリケーション３０６には入力しない。その後、ＭＡＣドライバ３０４は、同期フレームを、ＯＳ３０５を介して時刻同期アプリケーション３０６に入力する。時刻同期アプリケーション３０６は、ＭＡＣドライバ３０４より入力された同期フレームがＤｅｌａｙ＿Ｒｅｓｐメッセージであることを検知し、同期フレームに格納された補正前及び補正済の受信時刻Ｔ＿ｍ１，Ｔ＿ｍ２’を抽出する。
【００９８】
ステップＳ５４の後、時刻同期アプリケーション３０６は、ステップＳ５１で補正テーブル３０８の１行目及び３行目に格納した補正前及び補正済の受信時刻Ｔ＿ｓ１，Ｔ＿ｓ１’と、ステップＳ５２で抽出した補正前及び補正済の送信時刻Ｔ＿ｍ１，Ｔ＿ｍ１’と、ステップＳ５３で補正テーブル３０８の４行目及び６行目に格納した補正前及び補正済の送信時刻Ｔ＿ｓ２，Ｔ＿ｓ２’と、ステップＳ５４で抽出した補正前及び補正済の受信時刻Ｔ＿ｍ２，Ｔ＿ｍ２’とを用いて、オフセット４０５を計算する。計算式としては、前述したように、Ｔ＿ｏｆｆｓｅｔ＝（（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））−（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’）））／４、又は、Ｔ＿ｏｆｆｓｅｔ＝−（（（Ｔ＿ｓ１＋Ｔ＿ｓ１’）−（Ｔ＿ｍ１＋Ｔ＿ｍ１’））−（（Ｔ＿ｍ２＋Ｔ＿ｍ２’）−（Ｔ＿ｓ２＋Ｔ＿ｓ２’）））／４を用いることができるが、他の式が用いられてもよい。
【００９９】
以降、ステップＳ４１からステップＳ４４までの手順とステップＳ５１からステップＳ５４までの手順とが繰り返し実行される。
【０１００】
＊＊＊効果の説明＊＊＊
本実施の形態では、ソフトウェアクロックを用いて記録される時刻が補正されるため、ソフトウェアベース実装による時刻同期方式の時刻同期精度が向上する。
【０１０１】
実施の形態２．
本実施の形態について、主に実施の形態１との差異を説明する。
【０１０２】
図８を参照して、本実施の形態に係る時刻同期システム１００の構成例を説明する。
【０１０３】
本例では、図１に示した例と同じツリー型のネットワークトポロジーが採用されている。
【０１０４】
実施の形態１では、全てのサブネットワーク内部の時刻同期に第２時刻同期方式１０２が適用されるが、本実施の形態では、一部のサブネットワーク内部の時刻同期に第１時刻同期方式１０１が適用される。
【０１０５】
したがって、ＧＭ１１０に接続されたＰＬＣ１２０のうち、一部のＰＬＣ１２０は、第１時刻同期方式１０１における時刻送信側の端末でもあり、マスタ装置２００及び時刻同期装置３００の両方に相当する。また、その一部のＰＬＣ１２０に接続されたフィールドデバイス１３０は、第１時刻同期方式１０１における時刻受信側の端末であり、時刻同期装置３００に相当する。
【０１０６】
本実施の形態に係るマスタ装置２００及び時刻同期装置３００の構成及び動作については、実施の形態１のものと同じである。
【０１０７】
実施の形態３．
本実施の形態について、主に実施の形態１との差異を説明する。
【０１０８】
図９を参照して、本実施の形態に係る時刻同期システム１００の構成例を説明する。
【０１０９】
本例では、ライン型のネットワークトポロジーが部分的に採用されている。ＧＭ１１０に３台のＰＬＣ１２０が直列に接続されている。これら３台のＰＬＣ１２０の下位には、少なくとも１台のＰＬＣ１２０又は少なくとも２台のフィールドデバイス１３０が接続され、ツリー型のサブネットワークが構成されている。
【０１１０】
ＧＭ１１０と、ＧＭ１１０に直列に接続されたＰＬＣ１２０との間の時刻同期には、第１時刻同期方式１０１が適用される。ＧＭ１１０に直列に接続されたＰＬＣ１２０同士の時刻同期にも、第１時刻同期方式１０１が適用される。
【０１１１】
したがって、ＧＭ１１０に直列に接続されたＰＬＣ１２０のうち、中間の２台のＰＬＣ１２０は、第１時刻同期方式１０１における時刻送信側の端末でもあり、マスタ装置２００及び時刻同期装置３００の両方に相当する。このように、本実施の形態は、マスタ機能をＧＭ１１０と２台のＰＬＣ１２０とに分散した形態になっている。
【０１１２】
なお、ＧＭ１１０に直列に接続されたＰＬＣ１２０のうち、中間の２台のＰＬＣ１２０は、第１時刻同期方式１０１における時刻送信側の端末にならずに、ＧＭ１１０と他のＰＬＣ１２０との間で送受信される同期フレームを単に転送するだけでもよい。その場合、中間の２台のＰＬＣ１２０は、時刻同期装置３００のみに相当する。このように、本実施の形態は、マスタ機能をＧＭ１１０に集約した形態に変更することができる。
【０１１３】
本実施の形態に係るマスタ装置２００及び時刻同期装置３００の構成及び動作については、実施の形態１のものと同じである。
【０１１４】
以下では、図１０を参照して、本発明の実施の形態に係る時刻同期装置３００のハードウェア構成例を説明する。
【０１１５】
時刻同期装置３００は、コンピュータである。時刻同期装置３００は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。入力インタフェース９０５は、入力装置９０７に接続されている。ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【０１１６】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）である。プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ・Ｓｉｇｎａｌ・Ｐｒｏｃｅｓｓｏｒ）、又は、ＧＰＵ（Ｇｒａｐｈｉｃｓ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ）である。
【０１１７】
補助記憶装置９０２は、ＲＯＭ（Ｒｅａｄ・Ｏｎｌｙ・Ｍｅｍｏｒｙ）、フラッシュメモリ、又は、ＨＤＤ（Ｈａｒｄ・Ｄｉｓｋ・Ｄｒｉｖｅ）等の記録媒体である。
【０１１８】
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ・Ａｃｃｅｓｓ・Ｍｅｍｏｒｙ）である。
【０１１９】
通信装置９０４は、データを受信するレシーバ９２１及びデータを送信するトランスミッタ９２２を含む。通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ・Ｉｎｔｅｒｆａｃｅ・Ｃａｒｄ）である。
【０１２０】
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ・Ｓｅｒｉａｌ・Ｂｕｓ）端子である。
【０１２１】
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ・Ｄｅｆｉｎｉｔｉｏｎ・Ｍｕｌｔｉｍｅｄｉａ・Ｉｎｔｅｒｆａｃｅ）端子である。
【０１２２】
入力装置９０７は、例えば、マウス、タッチペン、キーボード、又は、タッチパネルである。
【０１２３】
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ・Ｃｒｙｓｔａｌ・Ｄｉｓｐｌａｙ）である。
【０１２４】
補助記憶装置９０２には、受信部３１０、送信部３２０、記録部３３０、補正部３４０、同期部３５０といった「部」の機能を実現するプログラムが記憶されている。このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。補助記憶装置９０２には、ＯＳも記憶されている。ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
【０１２５】
図１０では、１つのプロセッサ９０１が示されているが、時刻同期装置３００が複数のプロセッサ９０１を備えていてもよい。そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【０１２６】
「部」の処理の結果を示す情報やデータや信号値や変数値は、補助記憶装置９０２、メモリ９０３、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【０１２７】
「部」を「サーキットリ」で提供してもよい。また、「部」を「回路」又は「工程」又は「手順」又は「処理」に読み替えてもよい。「回路」及び「サーキットリ」は、プロセッサ９０１だけでなく、ロジックＩＣ、ＧＡ（Ｇａｔｅ・Ａｒｒａｙ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ・Ｓｐｅｃｉｆｉｃ・Ｉｎｔｅｇｒａｔｅｄ・Ｃｉｒｃｕｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ・Ｇａｔｅ・Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【０１２８】
なお、図１０に示したハードウェア構成は、本発明の実施の形態に係るマスタ装置２００にも適用することができる。
【０１２９】
以上、本発明の実施の形態について説明したが、これらの実施の形態のうち、いくつかを組み合わせて実施しても構わない。或いは、これらの実施の形態のうち、いずれか１つ又はいくつかを部分的に実施しても構わない。例えば、これらの実施の形態の説明において「部」として説明するもののうち、いずれか１つのみを採用してもよいし、いくつかの任意の組み合わせを採用してもよい。なお、本発明は、これらの実施の形態に限定されるものではなく、必要に応じて種々の変更が可能である。
【符号の説明】
【０１３０】
１００  時刻同期システム、１０１  第１時刻同期方式、１０２  第２時刻同期方式、１１０  ＧＭ、１２０  ＰＬＣ、１３０  フィールドデバイス、２００  マスタ装置、２０１  マスタクロック、２０２  ＰＨＹ、２０３  ＭＡＣ、２０４  ＭＡＣドライバ、２０５  ＯＳ、２０６  時刻同期アプリケーション、２０７  他のアプリケーション、２０８  補正テーブル、２１０  送信部、２２０  受信部、２３０  記録部、２４０  補正部、３００  時刻同期装置、３０１  スレーブクロック、３０２  ＰＨＹ、３０３  ＭＡＣ、３０４  ＭＡＣドライバ、３０５  ＯＳ、３０６  時刻同期アプリケーション、３０７  他のアプリケーション、３０８  補正テーブル、３１０  受信部、３２０  送信部、３３０  記録部、３４０  補正部、３５０  同期部、４００  ネットワーク、４０１  第１データ、４０２  第２データ、４０３  第３データ、４０４  第４データ、４０５  オフセット、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０５  入力インタフェース、９０６  ディスプレイインタフェース、９０７  入力装置、９０８  ディスプレイ、９１０  信号線、９１１  ケーブル、９１２  ケーブル、９２１  レシーバ、９２２  トランスミッタ。
【図１】
2016199196.tif 000003
【図２】
2016199196.tif 000004
【図３】
2016199196.tif 000005
【図４】
2016199196.tif 000006
【図５】
2016199196.tif 000007
【図６】
2016199196.tif 000008
【図７】
2016199196.tif 000009
【図８】
2016199196.tif 000010
【図９】
2016199196.tif 000011
【図１０】
2016199196.tif 000012
【手続補正書】
【提出日】平成29年3月16日(2017.3.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マスタクロックを有するマスタ装置から第１データを受信する受信部と、
前記受信部により前記第１データが受信された後に、前記マスタ装置に第２データを送信する送信部と、
ソフトウェアクロックであるスレーブクロックを用いて、前記受信部での前記第１データの受信時刻と前記送信部での前記第２データの送信時刻とを記録する記録部と、
前記記録部により記録された前記第１データの受信時刻と前記第２データの送信時刻とを補正する補正部と、
前記マスタ装置から通知される前記マスタ装置で記録された前記第１データの送信時刻と前記マスタ装置で補正された前記第１データの送信時刻との合計と、前記記録部により記録された前記第１データの受信時刻と前記補正部により補正された前記第１データの受信時刻との合計との差、及び、前記記録部により記録された前記第２データの送信時刻と前記補正部により補正された前記第２データの送信時刻との合計と、前記マスタ装置から通知される前記マスタ装置で記録された前記第２データの受信時刻と前記マスタ装置で補正された前記第２データの受信時刻との合計との差から、前記マスタクロックと前記スレーブクロックとの時刻のずれであるオフセットを計算する同期部と
を備える時刻同期装置。
【請求項２】
前記受信部は、前記マスタ装置から前記第１データを繰り返し受信し、
前記記録部は、前記受信部により前記第１データが受信される度に、前記受信部での前記第１データの受信時刻を記録し、
前記補正部は、前記記録部により前記第１データの受信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、前記記録部により記録された前記第１データの受信時刻の補正値を計算し、
前記同期部は、前記オフセットを計算する際に、前記補正部により計算された前記第１データの受信時刻の補正値を前記第１データの受信時刻として用いる請求項１に記載の時刻同期装置。
【請求項３】
前記送信部は、前記受信部により前記第１データが受信される度に、前記マスタ装置に前記第２データを送信し、
前記記録部は、前記送信部により前記第２データが送信される度に、前記送信部での前記第２データの送信時刻を記録し、
前記補正部は、前記記録部により前記第２データの送信時刻が記録される度に、乱数を生成し、生成した乱数を用いて、前記記録部により記録された前記第２データの送信時刻の補正値を計算し、
前記同期部は、前記オフセットを計算する際に、前記補正部により計算された前記第２データの送信時刻の補正値を前記第２データの送信時刻として用いる請求項２に記載の時刻同期装置。
【請求項４】
前記同期部は、前記受信部により前記第１データが受信される度に、前記オフセットを計算し、前記オフセットの複数の計算値を蓄積し、蓄積した複数の計算値の統計処理を行い、前記統計処理の結果に応じて、前記スレーブクロックの時刻を調整する請求項２又は３に記載の時刻同期装置。
【請求項５】
前記同期部は、蓄積した複数の計算値の平均を前記統計処理の結果として用いて、前記スレーブクロックの時刻を調整する請求項４に記載の時刻同期装置。
【請求項６】
前記受信部は、前記マスタ装置から、前記マスタ装置での前記第１データの送信時刻を通知するための第３データと前記マスタ装置での前記第２データの受信時刻を通知するための第４データとを受信し、
前記同期部は、前記オフセットを計算する際に、前記受信部により受信された前記第３データと前記第４データとを参照する請求項１から５のいずれか１項に記載の時刻同期装置。
【請求項７】
請求項１から６のいずれか１項に記載の時刻同期装置と、
ソフトウェアクロックであるマスタクロックを用いて、前記第１データの送信時刻と前記第２データの受信時刻とを記録し、記録した前記第１データの送信時刻と前記第２データの受信時刻とを補正し、前記時刻同期装置に、記録した前記第１データの送信時刻と前記第２データの受信時刻と、補正した前記第１データの送信時刻と前記第２データの受信時刻とを通知するマスタ装置と
を備える時刻同期システム。
【請求項８】
マスタクロックを有するマスタ装置が、第１データを送信し、
ソフトウェアクロックであるスレーブクロックを有する時刻同期装置が、前記第１データを受信し、
前記時刻同期装置が、前記第１データを受信した後に、第２データを送信し、
前記マスタ装置が、前記第２データを受信し、
前記マスタ装置が、マスタクロックを用いて、前記第１データの送信時刻と前記第２データの受信時刻とを記録し、記録した前記第１データの送信時刻と前記第２データの受信時刻とを補正し、記録した前記第１データの送信時刻と前記第２データの受信時刻と、補正した前記第１データの送信時刻と前記第２データの受信時刻とを通知し、
前記時刻同期装置が、前記スレーブクロックを用いて、前記第１データの受信時刻と前記第２データの送信時刻とを記録し、記録した前記第１データの受信時刻と前記第２データの送信時刻とを補正し、前記マスタ装置から通知された前記マスタ装置で記録された前記第１データの送信時刻と前記マスタ装置で補正された前記第１データの送信時刻との合計と、記録した前記第１データの受信時刻と補正した前記第１データの受信時刻との合計との差、及び、記録した前記第２データの送信時刻と補正した前記第２データの送信時刻との合計と、前記マスタ装置から通知された前記マスタ装置で記録された前記第２データの受信時刻と前記マスタ装置で補正された前記第２データの受信時刻との合計との差から、前記マスタクロックと前記スレーブクロックとの時刻のずれであるオフセットを計算する時刻同期方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００７３
【補正方法】変更
【補正の内容】
【００７３】
ステップＳ３１において、時刻同期装置３００の同期部３５０は、受信部３１０により第１データ４０１が受信される度に、オフセット４０５を計算する。即ち、同期部３５０は、１回の通信手順につき、１つのオフセット４０５を計算する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８０
【補正方法】変更
【補正の内容】
【００８０】
即ち、ステップＳ３１では、Ｔ＿ｏｆｆｓｅｔ＝（Ｔ＿ｓ１’−Ｔ＿ｍ１’）−（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）＋（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２＝（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）−（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２、又は、Ｔ＿ｏｆｆｓｅｔ＝（Ｔ＿ｍ２’−Ｔ＿ｓ２’）−（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）＋（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２＝−（（Ｔ＿ｓ１’−Ｔ＿ｍ１’）−（Ｔ＿ｍ２’−Ｔ＿ｓ２’））／２という計算式を用いてオフセット４０５を求めてもよい。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００９６
【補正方法】変更
【補正の内容】
【００９６】
マスタ装置２００が同期フレームとしてＤｅｌａｙ＿Ｒｅｓｐメッセージを送信するステップＳ４４において、時刻同期アプリケーション２０６は、Ｄｅｌａｙ＿Ｒｅｓｐメッセージである同期フレームを生成する。時刻同期アプリケーション２０６は、この同期フレームに、補正テーブル２０８の４行目及び６行目に格納した補正前及び補正済の受信時刻Ｔ＿ｍ２，Ｔ＿ｍ２’の組のうち最後の列に格納した補正前及び補正済の受信時刻Ｔ＿ｍ２，Ｔ＿ｍ２’の組、即ち、直前のＤｅｌａｙ＿Ｒｅｑメッセージの補正前及び補正済の受信時刻Ｔ＿ｍ２，Ｔ＿ｍ２’を格納する。ＯＳ２０５は、時刻同期アプリケーション２０６で同期フレームが生成されたことを検知すると、優先割り込みを起動し、この同期フレームを他のフレームよりも先にＭＡＣドライバ２０４に入力する。ＭＡＣドライバ２０４は、同期フレームが入力された時点でソフトウェアタイムスタンプを生成する。しかし、ＭＡＣドライバ２０４は、同期フレームがＤｅｌａｙ＿Ｒｅｓｐメッセージであることを検知し、生成したタイムスタンプをバッファ等に一定時間保持するだけで時刻同期アプリケーション２０６にはフィードバックしない。その後、ＭＡＣドライバ２０４は、ＭＡＣ２０３に同期フレームを入力する。ＭＡＣ２０３は、ＰＨＹ２０２より同期フレームを送信する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００９７
【補正方法】変更
【補正の内容】
【００９７】
時刻同期装置３００が同期フレームとしてＤｅｌａｙ＿Ｒｅｓｐメッセージを受信するステップＳ５４において、ＰＨＹ３０２は、マスタ装置２００から同期フレームを受信する。ＰＨＹ３０２は、受信した同期フレームをＭＡＣ３０３に入力する。ＭＡＣドライバ３０４は、ＭＡＣ３０３に同期フレームが入力されたことを検知した時点でソフトウェアタイムスタンプを生成する。しかし、ＭＡＣドライバ３０４は、同期フレームがＤｅｌａｙ＿Ｒｅｓｐメッセージであることを検知し、生成したタイムスタンプをバッファ等に一定時間保持するだけで時刻同期アプリケーション３０６には入力しない。その後、ＭＡＣドライバ３０４は、同期フレームを、ＯＳ３０５を介して時刻同期アプリケーション３０６に入力する。時刻同期アプリケーション３０６は、ＭＡＣドライバ３０４より入力された同期フレームがＤｅｌａｙ＿Ｒｅｓｐメッセージであることを検知し、同期フレームに格納された補正前及び補正済の受信時刻Ｔ＿ｍ２，Ｔ＿ｍ２’を抽出する。
【国際調査報告】
2016199196.tif 000013
2016199196.tif 000014
2016199196.tif 000015
2016199196.tif 000016