説明

クロック同期装置、クロック同期方法

【課題】IEEE1588の規格で定められているPTPを用いてクロック同期をとる場合には同期用パケットがネットワーク上に頻繁にマルチキャストで送信されることにより、ネットワーク全体のトラフィックが増加するという問題が生じていた。、
【解決手段】本発明のクロック同期装置は、クロック変動に関する情報であるクロック変動情報を受信する受信手段と、クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、同期用パケットを生成する生成手段と、生成した同期用パケットを、決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、を具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明はクロック同期装置及びクロック同期方法に関し、特に同期用通信の調整機能を有するクロック同期装置及びクロック同期方法に関する。
【背景技術】
【0002】
ネットワークにつながるノード間で時刻の同期をとる方式の代表的なものとして、IEEE1588の規格で定められているPrecision Timer Protocol(以下PTPと称す)を用いる方式がある。当該PTPを用いた同期方法は、非特許文献1に具体的に開示されている。
【0003】
PTPでは、各スレーブは、自分の時計の針が進む速さ(内部タイマのカウントアップ・スピード)をマスタに合わせるため、Phase Change Rate(位相変化率、以下Driftと称す)と呼ばれる手法を用いる。図10に、上記PTPにおけるDrift調整手順を示す。
【0004】
まず、マスタが同期用パケット1(以下、Syncと称す)を各スレーブへマルチキャストで送信し、送信した時間(t0k)を記憶する(1)。 各スレーブは、Syncを受信した時間(t1k)を記憶する(2)。マスタが同期用パケット2(以下、Follow_upと称す)に、t0kをのせて各スレーブにマルチキャストで送信する(3)。各スレーブは、受信したFollow_upパケット内に含まれるt0kを取得する(4)。マスタが一定間隔を空けてSyncを再度送信し、送信した時間(t0k+1)を記憶する(5)。各スレーブは、Syncを受信した時間(t1k+1)を記憶する(6)。マスタがFollow_upにt0k+1をのせて再送信する(7)。各スレーブは、受信したFollow_upパケット内に含まれるt0k+1を取得する(8)。
【0005】
図11に、ネッワークにつながるマスタと各スレーブとの同期用パケットの流れを示す。マスタから全スレーブへ、同期用パケット(Sync、Follow_up)がマルチキャストで送信される。
【0006】
各スレーブは、上記手順により取得したt0k、t0k+1、t1k、t1k+1の4値からDrift = (Δ1-Δ0)/Δ0 を算出する。ここで、Δ0=t0k+1 − t0kであり、Δ1=t1k+1 − t1k である。各スレーブはDrift値が0になるよう自分の内部タイマを調整する。
【0007】
なお、各スレーブの内部タイマの調整方法について、物理的に変動する発振器を制御することはできないため、実際には、内部タイマのカウント値を一定時間毎に調整する。例えば、Drift値を算出した結果、Drift=0.1の場合には、当該スレーブは、内部タイマが10カウントアップする毎にカウント値を−1する(時計の針を巻き戻す)。また、Drift=-0.1の場合には当該スレーブは、タイマが10カウントアップする毎にカウント値を+1する(時計の針を進める)。
【先行技術文献】
【非特許文献】
【0008】
【非特許文献1】「IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems」 IEEE Std 1588.-2008
【発明の概要】
【発明が解決しようとする課題】
【0009】
上記非特許文献1で規定されているPTPの場合、同期用パケット(Sync、Follow_up)の送信間隔は、各スレーブのクロック変動、およびシステムに要求される同期精度に基づいて、0.125、0.25、0.5、1、2、8、16、64秒のいずれかから予め選択される。このため、クロック変動が大きいスレーブが1台でもあれば、ワーストケースで125ms毎にマスタからマルチキャストで全スレーブへ同期用パケットが送信されることになる。
【0010】
従って、同期用パケットがネットワーク上に頻繁にマルチキャストで送信されることにより、ネットワーク全体のトラフィックが増加するという問題が生じていた。
【課題を解決するための手段】
【0011】
本発明のクロック同期装置は、クロック変動に関する情報であるクロック変動情報を受信する受信手段と、前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、同期用パケットを生成する生成手段と、前記生成した同期用パケットを、前記決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、を具備する。当該構成により、スレーブ側でのクロック変動に応じて適切に同期用パケットの送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【0012】
また、本発明のクロック同期装置は、同期用パケットを受信する受信手段と、前記受信手段で受信した同期用パケットの受信タイミングを検出する検出手段と、前記受信された同期用パケットに含まれる送信タイミング情報と、前記検出された受信タイミングとに基づいて、ドリフト値を計算する計算手段と、前記ドリフト値に基づいてクロック変動に関する情報を算出する算出手段と、前記算出されたクロック変動に関する情報を含めてパケットを生成する生成手段と、前記生成されたパケットを送信する送信手段と、を具備する。当該構成により、自装置のクロック変動に関する情報をフィードバックすることで、マスタ側では適切な同期用パケット送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【0013】
また、本発明のクロック同期方法は、クロック変動に関する情報であるクロック変動情報を受信し、前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定し、同期用パケットを生成し、前記生成した同期用パケットを、前記決定した送信間隔で前記クロック変動情報の送信元へ送信する。当該クロック同期方法によれば、スレーブ側でのクロック変動に応じて適切に同期用パケットの送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【0014】
また、本発明のクロック同期方法は、同期用パケットを受信し、前記受信した同期用パケットの受信タイミングを検出し、前記受信した同期用パケットに含まれる送信タイミング情報と前記検出した受信タイミングとに基づいてドリフト値を計算し、前記ドリフト値に基づいてクロック変動に関する情報を算出し、前記算出したクロック変動に関する情報を含めてパケットを生成し、前記生成したパケットを送信する。当該クロック同期方法によれば、クロック変動に関する情報をフィードバックすることで、マスタ側で適切な同期用パケット送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【発明の効果】
【0015】
本発明によれば、同期用パケットがネットワーク上に頻繁にマルチキャストで送信されることを抑制することができるため、ネットワーク全体のトラフィックを軽減することができる。
【図面の簡単な説明】
【0016】
【図1】実施の形態1にかかるマスタ装置のブロック図である。
【図2】実施の形態1にかかるスレーブ装置のブロック図である。
【図3】実施の形態1にかかるクロック同期方法のシーケンス図である。
【図4】実施の形態1にかかる同期用パケットの流れを示した概念図である。
【図5】実施の形態1にかかる同期用パケットの流れを示した概念図である。
【図6】実施の形態1にかかるクロック変動量と同期用通信タイミングとの関係を示した概念図である。
【図7】実施の形態1にかかるクロック変動量と同期用通信タイミングとの関係を示した概念図である。
【図8】実施の形態2にかかるスレーブ装置のブロック図である。
【図9】実施の形態2にかかるマスタ装置のブロック図である。
【図10】背景技術にかかるクロック同期方法のシーケンス図である。
【図11】背景技術にかかる同期用パケットの流れを示した概念図である。
【発明を実施するための形態】
【0017】
まず、本発明の概要について説明する。本発明のシステムでは、マスタとスレーブがネットワークで接続されている。マスタは、同期用パケットを送信し、スレーブは、受信した同期用パケットに基づいて内部タイマを調整する。さらに、本発明のシステムでは、スレーブは自分のクロック変動を把握し、当該クロック変動に関する情報(以下、クロック変動情報と称す)をマスタへ通知する。マスタは、受信した当該クロック変動情報に基づいて、適切な同期通信方法(送信アドレス、通信間隔等)を動的に選択した上で同期用パケットをスレーブに送信する。当該構成により、ネットワークのトラフィックを軽減し、また、各スレーブのCPU負荷を軽減することができる。以下、本発明の実施の形態について具体的に説明する。
【0018】
(実施の形態1)
以下、図面を参照して本発明の実施の形態について説明する。図1に、本実施の形態1にかかる同期システムを構成するマスタ装置100のブロック図を示す。
【0019】
マスタ装置100は、パケット受信部110と、送信間隔制御部120と、送信アドレス制御部130と、発振器140と、内部タイマ150と、送信タイミング検出部160と、パケット生成部170と、パケット送信部180と、から構成される。
【0020】
パケット受信部110は、各スレーブから送信されるクロック変動に関する情報を含むパケットを受信する。ここで、クロック変動に関する情報とは、例えばクロック変動量などがある。以下、受信するクロック変動に関する情報はクロック変動量であるとして説明する。
【0021】
パケット受信部110は、受信した上記パケットに含まれるクロック変動量を、送信間隔制御部120及び送信アドレス制御部130へ出力する。また、パケット受信部110は、当該クロック変動量の送信元スレーブを特定するために、受信した上記パケットの送信元アドレスも合わせて送信間隔制御部120及び送信アドレス制御部130へ出力する。
【0022】
送信間隔制御部120は、パケット受信部110から入力した上記クロック変動量に基づいて、当該情報の送信元であるスレーブに対する同期用パケットの送信間隔を決定する。同期用パケットの送信間隔としては、予め複数の送信間隔が定められている。送信間隔制御部120は、入力した上記クロック変動に関する情報に基づいて、上記定められている送信間隔の中から適切な送信間隔を選択することで、同期用パケットの送信間隔を決定する。例えば、入力したクロック変動量が所定の基準値よりも大きい場合には、送信間隔制御部120は、同期用パケットの送信間隔を短く設定する。
【0023】
送信アドレス制御部130は、パケット受信部110から入力した上記クロック変動量に基づいて、当該クロック変動量の送信元であるスレーブに対する同期用パケットの送信方式(マルチキャストかユニキャスト)を選択する。例えば、入力したクロック変動量が所定の基準値よりも大きい場合には、送信アドレス制御部130は、当該クロック変動量の送信元に対する同期用パケットの送信方式としてユニキャストを選択する。送信アドレス制御部130は、選択した送信方式を送信アドレス情報としてパケット生成部170へ出力する。
【0024】
発振器140は、内部タイマ150のソースクロックを生成する発振器であり、一定の周波数を有するクロック信号を発生させて内部タイマ150に出力する。発振器140は、例えばインダクタンスとキャパシタを組み合わせたLC発振器や、抵抗とキャパシタを組み合わせたRC発振器、水晶を用いた水晶発振器などで構成される。
【0025】
内部タイマ150は、発振器140からクロック信号を入力し、当該クロック信号をカウントしてカウント値を生成する。生成したカウント値は、送信タイミング検出部160に出力される。
【0026】
送信タイミング検出部160は、パケット送信部180から送信される同期用パケットの送信タイミングを検出する。より具体的には、パケット送信部180が送信する同期用パケットのうち、Syncパケットの送信タイミングを検出する。送信タイミング検出部160は、内部タイマ150よりカウント値を入力し、パケット送信部180がSyncパケットを送信した時点におけるカウント値を求める。送信タイミング検出部160は、当該求めたカウント値を同期用パケットの送信タイミングを示す送信タイミング情報としてパケット生成部170へ出力する。
【0027】
パケット生成部170は、同期用パケットを生成する。同期用パケットにはSyncパケットとFollow_upパケットの2種類のパケットを生成する。Syncパケットは、マスタとスレーブにおけるクロックのずれを検出するために送信される検出用パケットであり、ヘッダに当該パケットがSyncパケットであることを示す識別子が付されている。一方、Follow_upパケットは、Syncパケットの後に生成されるパケットであり、Follow_upパケットは、当該Syncパケットがパケット送信部180から送信された送信タイミングに関する情報を含む。パケット生成部170は、送信タイミング検出部160から出力される送信タイミング情報を入力し、当該送信タイミング情報を格納してFollow_upパケットを生成する。パケット生成部170は、送信アドレス制御部130で選択された送信方法に基づいて、パケットの送信先アドレスをユニキャストアドレス又はマルチキャストアドレスのいずれかから選択して同期用パケットを生成し、生成した同期用パケットをパケット送信部180に出力する。
【0028】
パケット送信部180は、送信間隔制御部120から指定される送信間隔で、パケット生成部170から入力した同期用パケットを各スレーブへ送信する。この時、同期用パケットの送信先アドレスがユニキャストアドレスであれば、当該同期用パケットは、ユニキャスト方式でパケット送信部180より送信される。一方、同期用パケットの送信先アドレスがマルチキャストアドレスであれば、当該同期用パケットはマルチキャスト方式でパケット送信部180より送信される。
【0029】
次に、本実施の形態1にかかる同期システムを構成するスレーブ装置200について説明する。図2に、当該スレーブ装置200のブロック図を示す。
【0030】
スレーブ装置200は、パケット受信部210と、発振器220と、内部タイマ230と、受信タイミング検出部240と、Drift値計算部250と、タイマ補正部260と、クロック変動量算出部270と、パケット生成部280と、パケット送信部290と、から構成される。
【0031】
パケット受信部210は、マスタから同期用パケット(Syncパケット、Follow_upパケット)を受信する。パケット受信部210は、受信した同期用パケットのうち、Follow_upパケットに含まれるFollow_up情報をDrift値計算部250へ出力する。ここでFollow_up情報には、当該Follow_upパケットを受信するに先だって受信したSyncパケットのマスタ側での送信タイミングに関する情報が含まれている。
【0032】
発振器220は、内部タイマ230のソースクロックを生成する発振器であり、一定の周波数を有するクロック信号を発生させて内部タイマ230に出力する。発振器220は、マスタ装置が有する発振器140と同様、インダクタンスとキャパシタを組み合わせたLC発振器や、抵抗とキャパシタを組み合わせたRC発振器、水晶を用いた水晶発振器などで構成される。
【0033】
内部タイマ230は、発振器220からクロック信号を入力し、当該クロック信号をカウントしてカウント値を生成する。また、内部タイマ230は、後述するタイマ補正部260からタイマ補正信号を入力し、当該タイマ補正信号に基づいて上記カウント値の補正を行う。例えば、タイマ補正信号が、タイマのカウント値をnカウント進める内容の信号であったならば、内部タイマ230は、クロック信号をカウントすることで生成したカウント値をnカウント進める補正を行う。一方、タイマ補正信号が、タイマのカウント値をmカウント戻す内容の信号であったならば、内部タイマ230は、クロック信号をカウントすることで生成したカウント値をmカウント戻す補正を行う。内部タイマ230は、補正後のカウント値を受信タイミング検出部240へ出力する。
【0034】
受信タイミング検出部240は、パケット受信部210で受信された同期用パケットの受信タイミングを検出する。より具体的には、受信タイミング検出部240は、パケット受信部210で受信される同期用パケットのうちSyncパケットの受信タイミングを検出する。受信タイミング検出部240は、内部タイマ150より補正済みカウント値を入力し、パケット受信部210がSyncパケットを受信した時点におけるカウント値を求める。受信タイミング検出部240は、当該求めたカウント値を同期用パケットの受信タイミングを示す受信タイミング情報としてDrift値計算部250へ出力する。
【0035】
Drift値計算部250は、パケット受信部210より入力したFollow_up情報と、受信タイミング検出部240より入力した受信タイミング情報と、に基づいてDrift値を計算する。当該Drift値計算部250におけるDrift値の計算方法は、背景技術と同一の計算方法を採用することができる。すなわち、以下の手順によりDrift値を求めることができる。
【0036】
Drift値計算部250は、パケット受信部210がSyncパケットを受信した時間(t1k)を取得する(1)。当該t1kは、受信タイミング検出部240より、受信タイミング情報と言う形でDrift値計算部250へ入力される。
【0037】
次に、Drift値計算部250は、マスタ装置が上記Syncパケットを送信した時間(t0k)を取得する(2)。当該t0kは、パケット受信部210が受信したFollow_upパケット内にFollow_up情報と言う形で含まれており、パケット受信部210よりDrift値計算部250へ入力される。
【0038】
次に、Drift値計算部250は、パケット受信部210がSyncパケットを再度受信した時間(t1k+1)を取得する(3)。当該t1k+1は、上記t1kと同様、受信タイミング検出部240で求められて、Drift値計算部250へ入力される。
【0039】
次に、Drift値計算部250は、パケット受信部210が再度受信したFollow_upパケット内に含まれる、マスタが上記Syncパケットを送信した時間(t0k+1)、を取得する(4)。当該t0k+1も上記t0kと同様、パケット受信部210が再度受信したFollow_upパケット内にFollow_up情報と言う形で含まれており、パケット受信部210よりDrift値計算部250へ入力される。
【0040】
Drift値計算部250は、上記取得したt0k、t0k+1、t1k、t1k+1の4値からDrift値 = (Δ1-Δ0)/Δ0を算出する。ここで、Δ0=t0k+1 − t0kであり、Δ1=t1k+1 − t1k である。求められたDrift値は、タイマ補正部260及びクロック変動量算出部270へ出力される。
【0041】
タイマ補正部260は、Drift値計算部250から出力されたDrift値に基づいて、タイマ補正信号を生成し、内部タイマ230へ出力する。例えば、Drift値計算部250において上記計算方法で計算されたDrift値が、0.1の場合には、タイマ補正部260は、10カウントアップする毎にカウント値を−1させるタイマ補正信号を生成して内部タイマ230へ出力する。また、Drift値が−0.1の場合には、タイマ補正部260は、10カウントアップする毎にカウント値を+1させるタイマ補正信号を生成して内部タイマ230へ出力する。内部タイマ230では、上述したように当該タイマ補正信号に基づいてカウント値の補正が行われる。
【0042】
クロック変動量算出部270は、Drift値計算部250より出力されたDrift値を入力し、Drift値の変化を観察して自身のスレーブ装置におけるクロックの変動量を算出する。クロック変動量算出部270は、算出したクロック変動量をパケット生成部280へ出力する。
【0043】
パケット生成部280は、クロック変動量算出部270より出力されたクロック変動量を含めてパケットを生成する。パケット生成部280は、当該パケットの送信先アドレスをマスタ装置のアドレスに、送信元アドレスを自装置のアドレスに設定してパケットを生成する。パケット生成部280は、生成したパケットをパケット送信部290へ出力する。
【0044】
パケット送信部290は、パケット生成部280より出力されたパケットをマスタ装置へ送信する。
【0045】
このように、スレーブ装置200は、自身のクロック変動量をマスタへ通知するフィードバック機能を有する。
【0046】
次に、本発明の同期システムの動作について説明する。図3は、本発明の同期システムの動作の流れを示したシーケンス図である。
【0047】
まず、マスタから各スレーブへ同期用パケット(Syncパケット、Follow_upパケット)をマルチキャストで送信する(ステップ001)。なお、この段階では、マスタは、各スレーブにおけるDrift変動の緩急に関してなんら情報を有していないため、マスタは、同期用パケットを比較的短い間隔でマルチキャストする。
【0048】
各スレーブは、上記送信される同期用パケットに基づいてDrift値を計算し、内部タイマの調整をおこなうと共に、クロック変動量を算出する(ステップ002)。具体的には、各スレーブ内に配置されたクロック変動量算出部は、一定期間のDrift値の最小値(min)と最大値(max)からクロック変動量を算出する。ここで、クロック変動量算出部がDrift値を比較する期間の長さについては、予めシステムで定められていても良いし、どれだけの長さの期間についてDrift値を比較するかに関する情報がマスタから各スレーブに対して通知される構成であっても良い。
【0049】
各スレーブは、クロック変動量算出部で求めた自身のクロック変動量をマスタへ通知する(ステップ003)。
【0050】
マスタは、各スレーブから通知されたクロック変動量に基づいて、スレーブ毎に同期用パケットに関する適切な送信方法(マルチキャストかユニキャスト)および送信間隔を選択する(ステップ004)。
【0051】
マスタは、ステップ004で選択した送信方法と送信間隔で同期用通信を行う(ステップ005)。
【0052】
上記シーケンスにおけるパケットの流れを、図4及び図5に示すネットワーク・トポロジーを用いて概念的に示す。図4に示すネットワークには、マスタ300と、スレーブ310〜340の4つのスレーブが接続されている。
【0053】
図4において、マスタ300は、スレーブ310〜340にマルチキャストで同期用パケット(Syncパケット、Follow_upパケット)を送信する(1)。各スレーブは、受信した同期用パケットを用いて各々のクロック変動を求め、マスタへ通知する(2)。
【0054】
ここで、スレーブ340は、クロック変動が大きく、スレーブ310〜330はクロック変動が小さかったとする。この時、マスタ300内の送信アドレス制御部は、各スレーブから通知されたクロック変動量に基づいて、スレーブ310宛ての同期用パケットをユニキャストで、一方、スレーブ310〜330宛ての同期用パケットをマルチキャストで送信すると決定する。また、マスタ内の送信間隔制御部は、スレーブ340宛ての同期用パケットを0.125秒間隔で、一方、スレーブ310〜330宛ての同期用パケットを64秒間隔で送信すると決定する。マスタ内のパケット送信部は、図5に示すように、送信アドレス制御部及び送信間隔制御部で決定されたこれらの内容に基づいて同期用パケットを各スレーブへ送信する。
【0055】
上記手順によって同期用パケットが送信されることにより、ネットワーク全体としてのトラフィックを軽減することができる。すなわち、図5のように、スレーブ340が接続されている経路3へは125ms毎に頻繁に同期用パケットが流れるが、経路1、2へは64秒毎にしか流れない。従って、従来技術の場合と比べて、経路1、経路2へ流れる同期用パケットの送信量の削減が達成されている。
【0056】
一般的に、Drift値の変動が激しいノードにおいては、同期通信の間隔を狭く保たないと変化に追従できず同期精度を満たせなくなる。通常、マスタのクロックは高精度であり、Drift = (Δ1-Δ0)/Δ0で定義されることから、一定期間の連続するDrift値のmin、maxの差をクロック変動量として扱うことができる。
【0057】
図6と図7に、Drift値の変動が急である場合と緩やかである場合とについて、それぞれ、必要となる同期用通信の頻度を模式的に示す。
【0058】
図6のように、クロック変動量(Driftの変化量)が大きいノードについては、同期通信の間隔を狭く保たないと変化に追従できず同期精度を満たせなくなる。一方、図7のように、クロック変動量が小さいノードについては、同期開始後一定期間は短い間隔で同期をとり、Drift値の変動が緩やかであることを確認した後に、途中から同期通信間隔を広くすることができる。このように同期通信間隔を変更しても同期精度への影響は少ない。なお、ここで言う同期通信間隔とは同期用パケットの送信間隔のことである。
【0059】
以上のように、本発明の同期システムにおいて、マスタ装置は、クロック変動に関する情報であるクロック変動情報を受信する受信手段と、前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、同期用パケットを生成する生成手段と、前記生成した同期用パケットを、前記決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、を具備する。また、スレーブ装置は、同期用パケットを受信する受信手段と、前記受信手段で受信した同期用パケットの受信タイミングを検出する検出手段と、前記受信された同期用パケットに含まれる送信タイミング情報と、前記検出された受信タイミングとに基づいて、ドリフト値を計算する計算手段と、前記ドリフト値に基づいてクロック変動に関する情報を算出する算出手段と、前記算出されたクロック変動に関する情報を含めてパケットを生成する生成手段と、前記生成されたパケットを送信する送信手段と、を具備する。このように構成することで、ネットワーク全体の同期用パケットのトラフィックを軽減することができる。
【0060】
また、各スレーブ装置では、同期用パケット受信時、受信パケット解析、Drift値計算、内部タイマ補正の処理をソフトウェアで実行する。ワークストケースでは、125ms毎に本処理が実行されるため、例えば処理時間が10msの場合、CPUが常に8%(=10ms/125ms)占有される。また、処理中は、パケット送受信要求への応答が保留されるため、通信のリアルタイム性が損なわれる。これに対し、同期間隔を125msから64秒したスレーブ装置では、CPU占有率は約0.01%(10ms/64秒)となり大幅に軽減される上、通信のリアルタイム性も向上する。
【0061】
また、上記説明では、クロック変動量の大きいスレーブに対してユニキャストで同期用パケットを送信する場合について説明したがこれに限るものではない。例えば、当該スレーブの属するドメインにクロック変動量の小さい他のスレーブが存在する場合は、マルチキャストとユニキャストを混ぜて送信する構成であっても良い。すなわち、クロック変動量の小さいスレーブに合わせて、これらの装置が属しているドメインにマルチキャストで同期用パケットを送信する。そして、当該マルチキャストによる送信間隔を埋める形でクロック変動量の大きいスレーブにユニキャストで個別に同期用パケットを送信する。クロック変動量の小さいスレーブは、少ない頻度でマルチキャスト送信される同期用パケットを用いてタイマ補正を行うため、CPUの処理負荷を小さくすることができる。また、クロック変動量の大きいスレーブは、マルチキャスト及びユニキャストで送信される同期用パケットの両方を用いてタイマ補正を行うため、適切にタイマ補正を行うことができる。
【0062】
また、マスタは、各スレーブから送信されるDrift値に基づいて、当該スレーブがクロック変動量を算出してフィードバック送信する頻度を求め、スレーブに通知する構成を更に備えていても良い。このように構成することで各スレーブからマスタに対するDrift値の通知頻度を適切に調節することができ、トラフィックを低減することができる。
【0063】
(実施の形態2)
本実施の形態2における同期システムでは、実施の形態1において各スレーブが行っていたクロック変動量算出機能をマスタ側へ移行することで、スレーブ側の構成を単純化している。以下、図面を用いて説明する。
【0064】
図8及び図9にそれぞれ本実施の形態2の発明のスレーブ装置400及びマスタ装置500の構成を示す。なお、図1、図2の構成要素と同一機能ブロックについては一部説明を省略する。
【0065】
スレーブ装置400は、パケット受信部210と、発振器220と、内部タイマ230と、受信タイミング検出部240と、Drift値計算部250と、タイマ補正部260と、パケット生成部480と、パケット送信部290と、から構成される。
【0066】
パケット生成部480は、Drift値計算部250で求められたDrift値を入力し、当該Drift値を含めてパケットを生成する。パケットの送信先アドレスはマスタ装置のアドレスとなる。パケット生成部280は、生成したパケットをパケット送信部290へ出力する。パケット送信部290は、パケット生成部480より入力したパケットをマスタ装置500へ送信する。なお、その他のブロックは図2のスレーブ装置200のブロックと同一であるため説明を省略する。
【0067】
次に、マスタ装置500について説明する。マスタ装置500は、パケット受信部510と、クロック変動量算出部590と、送信間隔制御部120と、送信アドレス制御部130と、発振器140と、内部タイマ150と、送信タイミング検出部160と、パケット生成部170とパケット送信部180と、から構成される。
【0068】
パケット受信部510は、各スレーブから送信されるクロック変動に関する情報を含むパケットを受信する。ここで、クロック変動に関する情報には各スレーブ装置で求められたDrift値が含まれる。パケット受信部510で受信された上記パケットに含まれるクロック変動に関する情報は、クロック変動量算出部590へ出力される。また、パケット受信部510は、受信したパケットの送信元アドレスから当該Drift値を送信したスレーブ装置を特定し、当該送信元アドレスもクロック変動量算出部590へ出力する。
【0069】
クロック変動量算出部590は、パケット受信部510から出力されたDrift値に基づいて各スレーブ装置におけるクロック変動量を算出する。より具体的には、パケット受信部510より出力されるDrift値を、パケット受信部510より出力される当該drift値の送信元アドレスに基づいて、スレーブ装置毎に管理する。クロック変動量算出部590は、入力したDrift値の変化を観察してスレーブ装置毎にクロックの変動量を算出する。例えば、クロック変動量算出部590は、一定期間のDrift値の最大値と最小値の差分を求め、その大きさからクロック変動量を算出する。算出されたクロック変動量は、送信間隔制御部120及び送信アドレス制御部130へ出力される。なお、その他のブロックは図1のマスタ装置のブロックと同一であるため説明を省略する。
【0070】
以上説明したように、本実施の形態2における同期システムではマスタ装置が各スレーブ装置のクロック変動量を算出し、各スレーブ装置に対する同期用パケットの送信間隔や送信方法を決定する。マスタ装置に比較的処理能力の高いプロセッサを搭載できる場合には、このように構成されていても良い。
【0071】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、スレーブ装置の受信タイミング検出部で検出された同期用パケットの受信タイミングをクロック変動に関する情報としてパケットに含めてマスタ装置へフィードバックし、マスタ装置が、クロック変動量を求める構成であっても良い。この場合、マスタ装置内のパケット受信部で受信されたパケットに含まれる上記受信タイミングは、別途設けられたDrift値計算部に入力され、マスタ装置内で各スレーブ装置のDrift値が計算される。計算されたDrift値は、別途設けられたクロック変動量算出部に入力され、クロック変動量が求められる。このように構成されていても良い。また上記Drift値計算部は、求めたDrift値をパケット生成部へ出力し、パケット生成部は当該Drift値を含めてタイマ補正用パケットを生成する構成であっても良い。スレーブ装置は、マスタ装置から送信される上記タイマ補正用パケットに含まれるDrift値に基づいて内部タイマを調節する構成とすれば、各スレーブにDrift値計算部を設けなくてもよい。
【0072】
なお、上記説明では、同期用パケットをマルチキャストで送信する場合について説明したが、ドメインを超えて送信したい場合にはブロードキャストで送信することも可能である。
【0073】
また、マスタとスレーブは有線で接続されていても良いし、無線で接続されていても良い。
【0074】
また、上記で説明したマスタ装置及びスレーブ装置における各処理は、プログラムを用いてソフトウェア的に実行される構成であっても良い。なお、上記プログラムは、コンピュータ・システムがアクセス可能な様々な種類の記憶媒体に格納することが可能である。また、このプログラムは、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、CD−ROM、DVD、ROMカートリッジ、バッテリバックアップ付きRAMメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性RAMカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれ、インターネットも含まれる。
【符号の説明】
【0075】
100 マスタ装置
110 パケット受信部
120 送信間隔制御部
130 送信アドレス制御部
140 発振器
150 内部タイマ
160 送信タイミング検出部
170 パケット生成部
180 パケット送信部
200 スレーブ装置
210 パケット受信部
220 発振器
230 内部タイマ
240 受信タイミング検出部
250 値計算部
260 タイマ補正部
270 クロック変動量算出部
280 パケット生成部
290 パケット送信部
300 マスタ
310〜340 スレーブ
400 スレーブ装置
480 パケット生成部
500 マスタ装置
510 パケット受信部
590 クロック変動量算出部

【特許請求の範囲】
【請求項1】
クロック変動に関する情報であるクロック変動情報を受信する受信手段と、
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、
同期用パケットを生成する生成手段と、
前記生成した同期用パケットを、前記決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、
を具備するクロック同期装置。
【請求項2】
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信方式としてマルチキャスト又はユニキャストのいずれかを選択する選択手段を更に具備し、
前記生成手段は、前記選択手段で選択された送信方式に従って同期用パケットを生成し、
前記送信手段は、前記選択手段で選択された送信方式に従って前記同期用パケットを送信する、
請求項1に記載のクロック同期装置。
【請求項3】
前記決定手段は、クロック変動情報に含まれるクロック変動量が大きいほど、予め定められている送信間隔の候補の中から短い送信間隔を選択することで、前記同期用パケットの送信間隔を決定する、
請求項1に記載のクロック同期装置。
【請求項4】
前記生成手段は、同期用パケットとしてSyncパケットとFollow_upパケットの2種類のパケットを生成する、
請求項1乃至請求項3のいずれかに記載のクロック同期装置。
【請求項5】
前記Syncパケットの送信タイミングを検出する検出手段を更に具備し、
前記生成手段は、前記検出された送信タイミングに関する情報を含めて前記Follow_upパケットを生成する、
請求項4に記載のクロック同期装置。
【請求項6】
クロック信号を発生させる発振手段と、
前記クロック信号を計数してカウント値を求め、前記検出手段に前記カウント値を出力するカウント手段と、
を更に具備し、
前記検出手段は、前記カウント手段から前記カウント値を入力し、前記送信手段が前記Syncパケットを送信した時点におけるカウント値を求めて前記生成手段に出力し、
前記生成手段は、前記検出手段から出力されたカウント値を含めて前記Follow_upパケットを生成する、
請求項5に記載のクロック同期装置。
【請求項7】
同期用パケットを受信する受信手段と、
前記受信手段で受信した同期用パケットの受信タイミングを検出する検出手段と、
前記受信された同期用パケットに含まれる送信タイミング情報と、前記検出された受信タイミングとに基づいて、ドリフト値を計算する計算手段と、
前記ドリフト値に基づいてクロック変動に関する情報を算出する算出手段と、
前記算出されたクロック変動に関する情報を含めてパケットを生成する生成手段と、
前記生成されたパケットを送信する送信手段と、
を具備するクロック同期装置。
【請求項8】
前記検出手段は、同期用パケットのうち、Syncパケットの受信タイミングを検出し、
前記計算手段は、同期用パケットのうち、Follow_upパケットに含まれる前記Syncパケットの送信タイミングを示す送信タイミング情報と、前記検出されたSyncパケットの受信タイミングとに基づいてドリフト値を計算する、
請求項7に記載のクロック同期装置。
【請求項9】
前記算出手段は、所定の期間における前記ドリフト値の最大値と最小値の差分を前記クロック変動に関する情報として算出する、
請求項7又は請求項8のいずれかに記載のクロック同期装置。
【請求項10】
クロック信号を発生させる発振手段と、
前記クロック信号を計数してカウント値を求め、前記検出手段に前記カウント値を出力するカウント手段と、
前記計算されたドリフト値に基づいて前記カウント手段のカウント値を調節する調節手段と、
を更に具備し、
前記検出手段は、前記カウント手段から前記カウント値を入力し、前記受信手段が前記Syncパケットを受信した時点におけるカウント値を前記受信タイミングとして前記計算手段に出力する、
請求項8に記載のクロック同期装置。
【請求項11】
クロック変動に関する情報であるクロック変動情報を受信し、
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定し、
同期用パケットを生成し、
前記生成した同期用パケットを、前記決定した送信間隔で前記クロック変動情報の送信元へ送信する、
クロック同期方法。
【請求項12】
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信方式としてマルチキャスト又はユニキャストのいずれかを選択し、
前記選択した送信方式に従って同期用パケットを生成し、
前記生成した同期用パケットを前記選択した送信方式に従って送信する、
請求項11に記載のクロック同期方法。
【請求項13】
同期用パケットを受信し、
前記受信した同期用パケットの受信タイミングを検出し、
前記受信した同期用パケットに含まれる送信タイミング情報と前記検出した受信タイミングとに基づいてドリフト値を計算し、
前記ドリフト値に基づいてクロック変動に関する情報を算出し、
前記算出したクロック変動に関する情報を含めてパケットを生成し、
前記生成したパケットを送信する、
クロック同期方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate