(57)【要約】【課題】IEEE1588の規格で定められているＰＴＰを用いてクロック同期をとる場合には同期用パケットがネットワーク上に頻繁にマルチキャストで送信されることにより、ネットワーク全体のトラフィックが増加するという問題が生じていた。、  【解決手段】本発明のクロック同期装置は、クロック変動に関する情報であるクロック変動情報を受信する受信手段と、クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、同期用パケットを生成する生成手段と、生成した同期用パケットを、決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、を具備する。【選択図】図１
2012204912.tif 000002
【特許請求の範囲】
【請求項１】
クロック変動に関する情報であるクロック変動情報を受信する受信手段と、
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、
同期用パケットを生成する生成手段と、
前記生成した同期用パケットを、前記決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、
を具備するクロック同期装置。
【請求項２】
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信方式としてマルチキャスト又はユニキャストのいずれかを選択する選択手段を更に具備し、
前記生成手段は、前記選択手段で選択された送信方式に従って同期用パケットを生成し、
前記送信手段は、前記選択手段で選択された送信方式に従って前記同期用パケットを送信する、
請求項１に記載のクロック同期装置。
【請求項３】
前記決定手段は、クロック変動情報に含まれるクロック変動量が大きいほど、予め定められている送信間隔の候補の中から短い送信間隔を選択することで、前記同期用パケットの送信間隔を決定する、
請求項１に記載のクロック同期装置。
【請求項４】
前記生成手段は、同期用パケットとしてSyncパケットとFollow_upパケットの２種類のパケットを生成する、
請求項１乃至請求項３のいずれかに記載のクロック同期装置。
【請求項５】
前記Syncパケットの送信タイミングを検出する検出手段を更に具備し、
前記生成手段は、前記検出された送信タイミングに関する情報を含めて前記Follow_upパケットを生成する、
請求項４に記載のクロック同期装置。
【請求項６】
クロック信号を発生させる発振手段と、
前記クロック信号を計数してカウント値を求め、前記検出手段に前記カウント値を出力するカウント手段と、
を更に具備し、
前記検出手段は、前記カウント手段から前記カウント値を入力し、前記送信手段が前記Syncパケットを送信した時点におけるカウント値を求めて前記生成手段に出力し、
前記生成手段は、前記検出手段から出力されたカウント値を含めて前記Follow_upパケットを生成する、
請求項５に記載のクロック同期装置。
【請求項７】
同期用パケットを受信する受信手段と、
前記受信手段で受信した同期用パケットの受信タイミングを検出する検出手段と、
前記受信された同期用パケットに含まれる送信タイミング情報と、前記検出された受信タイミングとに基づいて、ドリフト値を計算する計算手段と、
前記ドリフト値に基づいてクロック変動に関する情報を算出する算出手段と、
前記算出されたクロック変動に関する情報を含めてパケットを生成する生成手段と、
前記生成されたパケットを送信する送信手段と、
を具備するクロック同期装置。
【請求項８】
前記検出手段は、同期用パケットのうち、Syncパケットの受信タイミングを検出し、
前記計算手段は、同期用パケットのうち、Follow_upパケットに含まれる前記Syncパケットの送信タイミングを示す送信タイミング情報と、前記検出されたSyncパケットの受信タイミングとに基づいてドリフト値を計算する、
請求項７に記載のクロック同期装置。
【請求項９】
前記算出手段は、所定の期間における前記ドリフト値の最大値と最小値の差分を前記クロック変動に関する情報として算出する、
請求項７又は請求項８のいずれかに記載のクロック同期装置。
【請求項１０】
クロック信号を発生させる発振手段と、
前記クロック信号を計数してカウント値を求め、前記検出手段に前記カウント値を出力するカウント手段と、
前記計算されたドリフト値に基づいて前記カウント手段のカウント値を調節する調節手段と、
を更に具備し、
前記検出手段は、前記カウント手段から前記カウント値を入力し、前記受信手段が前記Syncパケットを受信した時点におけるカウント値を前記受信タイミングとして前記計算手段に出力する、
請求項８に記載のクロック同期装置。
【請求項１１】
クロック変動に関する情報であるクロック変動情報を受信し、
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定し、
同期用パケットを生成し、
前記生成した同期用パケットを、前記決定した送信間隔で前記クロック変動情報の送信元へ送信する、
クロック同期方法。
【請求項１２】
前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信方式としてマルチキャスト又はユニキャストのいずれかを選択し、
前記選択した送信方式に従って同期用パケットを生成し、
前記生成した同期用パケットを前記選択した送信方式に従って送信する、
請求項１１に記載のクロック同期方法。
【請求項１３】
同期用パケットを受信し、
前記受信した同期用パケットの受信タイミングを検出し、
前記受信した同期用パケットに含まれる送信タイミング情報と前記検出した受信タイミングとに基づいてドリフト値を計算し、
前記ドリフト値に基づいてクロック変動に関する情報を算出し、
前記算出したクロック変動に関する情報を含めてパケットを生成し、
前記生成したパケットを送信する、
クロック同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクロック同期装置及びクロック同期方法に関し、特に同期用通信の調整機能を有するクロック同期装置及びクロック同期方法に関する。
【背景技術】
【０００２】
ネットワークにつながるノード間で時刻の同期をとる方式の代表的なものとして、IEEE1588の規格で定められているPrecision Timer Protocol（以下ＰＴＰと称す）を用いる方式がある。当該ＰＴＰを用いた同期方法は、非特許文献１に具体的に開示されている。
【０００３】
ＰＴＰでは、各スレーブは、自分の時計の針が進む速さ（内部タイマのカウントアップ・スピード）をマスタに合わせるため、Phase Change Rate(位相変化率、以下Driftと称す)と呼ばれる手法を用いる。図１０に、上記ＰＴＰにおけるDrift調整手順を示す。
【０００４】
まず、マスタが同期用パケット１(以下、Syncと称す)を各スレーブへマルチキャストで送信し、送信した時間(t0k)を記憶する（１）。 各スレーブは、Syncを受信した時間（t1k）を記憶する（２）。マスタが同期用パケット２（以下、Follow_upと称す）に、t0kをのせて各スレーブにマルチキャストで送信する（３）。各スレーブは、受信したFollow_upパケット内に含まれるt0kを取得する（４）。マスタが一定間隔を空けてSyncを再度送信し、送信した時間(t0k+1)を記憶する（５）。各スレーブは、Syncを受信した時間（t1k+1）を記憶する（６）。マスタがFollow_upにt0k+1をのせて再送信する（７）。各スレーブは、受信したFollow_upパケット内に含まれるt0k+1を取得する（８）。
【０００５】
図１１に、ネッワークにつながるマスタと各スレーブとの同期用パケットの流れを示す。マスタから全スレーブへ、同期用パケット（Sync、Follow_up）がマルチキャストで送信される。
【０００６】
各スレーブは、上記手順により取得したt0k、t0k+1、t1k、t1k+1の４値からDrift = (Δ１-Δ０)／Δ０  を算出する。ここで、Δ０＝t0k+1 − t0kであり、Δ１＝t1k+1 − t1k  である。各スレーブはDrift値が０になるよう自分の内部タイマを調整する。
【０００７】
なお、各スレーブの内部タイマの調整方法について、物理的に変動する発振器を制御することはできないため、実際には、内部タイマのカウント値を一定時間毎に調整する。例えば、Drift値を算出した結果、Drift=0.1の場合には、当該スレーブは、内部タイマが１０カウントアップする毎にカウント値を−１する(時計の針を巻き戻す）。また、Drift=-0.1の場合には当該スレーブは、タイマが１０カウントアップする毎にカウント値を＋１する（時計の針を進める）。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】「IEEE Standard for a Precision Clock Synchronization Protocol for Networked Measurement and Control Systems」  IEEE Std 1588.-2008
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記非特許文献１で規定されているＰＴＰの場合、同期用パケット(Sync、Follow_up)の送信間隔は、各スレーブのクロック変動、およびシステムに要求される同期精度に基づいて、0.125、0.25、0.5、1、2、8、16、64秒のいずれかから予め選択される。このため、クロック変動が大きいスレーブが１台でもあれば、ワーストケースで125ms毎にマスタからマルチキャストで全スレーブへ同期用パケットが送信されることになる。
【００１０】
従って、同期用パケットがネットワーク上に頻繁にマルチキャストで送信されることにより、ネットワーク全体のトラフィックが増加するという問題が生じていた。
【課題を解決するための手段】
【００１１】
本発明のクロック同期装置は、クロック変動に関する情報であるクロック変動情報を受信する受信手段と、前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、同期用パケットを生成する生成手段と、前記生成した同期用パケットを、前記決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、を具備する。当該構成により、スレーブ側でのクロック変動に応じて適切に同期用パケットの送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【００１２】
また、本発明のクロック同期装置は、同期用パケットを受信する受信手段と、前記受信手段で受信した同期用パケットの受信タイミングを検出する検出手段と、前記受信された同期用パケットに含まれる送信タイミング情報と、前記検出された受信タイミングとに基づいて、ドリフト値を計算する計算手段と、前記ドリフト値に基づいてクロック変動に関する情報を算出する算出手段と、前記算出されたクロック変動に関する情報を含めてパケットを生成する生成手段と、前記生成されたパケットを送信する送信手段と、を具備する。当該構成により、自装置のクロック変動に関する情報をフィードバックすることで、マスタ側では適切な同期用パケット送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【００１３】
また、本発明のクロック同期方法は、クロック変動に関する情報であるクロック変動情報を受信し、前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定し、同期用パケットを生成し、前記生成した同期用パケットを、前記決定した送信間隔で前記クロック変動情報の送信元へ送信する。当該クロック同期方法によれば、スレーブ側でのクロック変動に応じて適切に同期用パケットの送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【００１４】
また、本発明のクロック同期方法は、同期用パケットを受信し、前記受信した同期用パケットの受信タイミングを検出し、前記受信した同期用パケットに含まれる送信タイミング情報と前記検出した受信タイミングとに基づいてドリフト値を計算し、前記ドリフト値に基づいてクロック変動に関する情報を算出し、前記算出したクロック変動に関する情報を含めてパケットを生成し、前記生成したパケットを送信する。当該クロック同期方法によれば、クロック変動に関する情報をフィードバックすることで、マスタ側で適切な同期用パケット送信間隔を決定することができ、ネットワークに流れる同期用パケットの量を軽減することができる。
【発明の効果】
【００１５】
本発明によれば、同期用パケットがネットワーク上に頻繁にマルチキャストで送信されることを抑制することができるため、ネットワーク全体のトラフィックを軽減することができる。
【図面の簡単な説明】
【００１６】
【図１】実施の形態１にかかるマスタ装置のブロック図である。
【図２】実施の形態１にかかるスレーブ装置のブロック図である。
【図３】実施の形態１にかかるクロック同期方法のシーケンス図である。
【図４】実施の形態１にかかる同期用パケットの流れを示した概念図である。
【図５】実施の形態１にかかる同期用パケットの流れを示した概念図である。
【図６】実施の形態１にかかるクロック変動量と同期用通信タイミングとの関係を示した概念図である。
【図７】実施の形態１にかかるクロック変動量と同期用通信タイミングとの関係を示した概念図である。
【図８】実施の形態２にかかるスレーブ装置のブロック図である。
【図９】実施の形態２にかかるマスタ装置のブロック図である。
【図１０】背景技術にかかるクロック同期方法のシーケンス図である。
【図１１】背景技術にかかる同期用パケットの流れを示した概念図である。
【発明を実施するための形態】
【００１７】
まず、本発明の概要について説明する。本発明のシステムでは、マスタとスレーブがネットワークで接続されている。マスタは、同期用パケットを送信し、スレーブは、受信した同期用パケットに基づいて内部タイマを調整する。さらに、本発明のシステムでは、スレーブは自分のクロック変動を把握し、当該クロック変動に関する情報（以下、クロック変動情報と称す）をマスタへ通知する。マスタは、受信した当該クロック変動情報に基づいて、適切な同期通信方法（送信アドレス、通信間隔等）を動的に選択した上で同期用パケットをスレーブに送信する。当該構成により、ネットワークのトラフィックを軽減し、また、各スレーブのCPU負荷を軽減することができる。以下、本発明の実施の形態について具体的に説明する。
【００１８】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１に、本実施の形態１にかかる同期システムを構成するマスタ装置１００のブロック図を示す。
【００１９】
マスタ装置１００は、パケット受信部１１０と、送信間隔制御部１２０と、送信アドレス制御部１３０と、発振器１４０と、内部タイマ１５０と、送信タイミング検出部１６０と、パケット生成部１７０と、パケット送信部１８０と、から構成される。
【００２０】
パケット受信部１１０は、各スレーブから送信されるクロック変動に関する情報を含むパケットを受信する。ここで、クロック変動に関する情報とは、例えばクロック変動量などがある。以下、受信するクロック変動に関する情報はクロック変動量であるとして説明する。
【００２１】
パケット受信部１１０は、受信した上記パケットに含まれるクロック変動量を、送信間隔制御部１２０及び送信アドレス制御部１３０へ出力する。また、パケット受信部１１０は、当該クロック変動量の送信元スレーブを特定するために、受信した上記パケットの送信元アドレスも合わせて送信間隔制御部１２０及び送信アドレス制御部１３０へ出力する。
【００２２】
送信間隔制御部１２０は、パケット受信部１１０から入力した上記クロック変動量に基づいて、当該情報の送信元であるスレーブに対する同期用パケットの送信間隔を決定する。同期用パケットの送信間隔としては、予め複数の送信間隔が定められている。送信間隔制御部１２０は、入力した上記クロック変動に関する情報に基づいて、上記定められている送信間隔の中から適切な送信間隔を選択することで、同期用パケットの送信間隔を決定する。例えば、入力したクロック変動量が所定の基準値よりも大きい場合には、送信間隔制御部１２０は、同期用パケットの送信間隔を短く設定する。
【００２３】
送信アドレス制御部１３０は、パケット受信部１１０から入力した上記クロック変動量に基づいて、当該クロック変動量の送信元であるスレーブに対する同期用パケットの送信方式（マルチキャストかユニキャスト）を選択する。例えば、入力したクロック変動量が所定の基準値よりも大きい場合には、送信アドレス制御部１３０は、当該クロック変動量の送信元に対する同期用パケットの送信方式としてユニキャストを選択する。送信アドレス制御部１３０は、選択した送信方式を送信アドレス情報としてパケット生成部１７０へ出力する。
【００２４】
発振器１４０は、内部タイマ１５０のソースクロックを生成する発振器であり、一定の周波数を有するクロック信号を発生させて内部タイマ１５０に出力する。発振器１４０は、例えばインダクタンスとキャパシタを組み合わせたＬＣ発振器や、抵抗とキャパシタを組み合わせたＲＣ発振器、水晶を用いた水晶発振器などで構成される。
【００２５】
内部タイマ１５０は、発振器１４０からクロック信号を入力し、当該クロック信号をカウントしてカウント値を生成する。生成したカウント値は、送信タイミング検出部１６０に出力される。
【００２６】
送信タイミング検出部１６０は、パケット送信部１８０から送信される同期用パケットの送信タイミングを検出する。より具体的には、パケット送信部１８０が送信する同期用パケットのうち、Syncパケットの送信タイミングを検出する。送信タイミング検出部１６０は、内部タイマ１５０よりカウント値を入力し、パケット送信部１８０がSyncパケットを送信した時点におけるカウント値を求める。送信タイミング検出部１６０は、当該求めたカウント値を同期用パケットの送信タイミングを示す送信タイミング情報としてパケット生成部１７０へ出力する。
【００２７】
パケット生成部１７０は、同期用パケットを生成する。同期用パケットにはSyncパケットとFollow_upパケットの２種類のパケットを生成する。Syncパケットは、マスタとスレーブにおけるクロックのずれを検出するために送信される検出用パケットであり、ヘッダに当該パケットがSyncパケットであることを示す識別子が付されている。一方、Follow_upパケットは、Syncパケットの後に生成されるパケットであり、Follow_upパケットは、当該Syncパケットがパケット送信部１８０から送信された送信タイミングに関する情報を含む。パケット生成部１７０は、送信タイミング検出部１６０から出力される送信タイミング情報を入力し、当該送信タイミング情報を格納してFollow_upパケットを生成する。パケット生成部１７０は、送信アドレス制御部１３０で選択された送信方法に基づいて、パケットの送信先アドレスをユニキャストアドレス又はマルチキャストアドレスのいずれかから選択して同期用パケットを生成し、生成した同期用パケットをパケット送信部１８０に出力する。
【００２８】
パケット送信部１８０は、送信間隔制御部１２０から指定される送信間隔で、パケット生成部１７０から入力した同期用パケットを各スレーブへ送信する。この時、同期用パケットの送信先アドレスがユニキャストアドレスであれば、当該同期用パケットは、ユニキャスト方式でパケット送信部１８０より送信される。一方、同期用パケットの送信先アドレスがマルチキャストアドレスであれば、当該同期用パケットはマルチキャスト方式でパケット送信部１８０より送信される。
【００２９】
次に、本実施の形態１にかかる同期システムを構成するスレーブ装置２００について説明する。図２に、当該スレーブ装置２００のブロック図を示す。
【００３０】
スレーブ装置２００は、パケット受信部２１０と、発振器２２０と、内部タイマ２３０と、受信タイミング検出部２４０と、Drift値計算部２５０と、タイマ補正部２６０と、クロック変動量算出部２７０と、パケット生成部２８０と、パケット送信部２９０と、から構成される。
【００３１】
パケット受信部２１０は、マスタから同期用パケット(Syncパケット、Follow_upパケット)を受信する。パケット受信部２１０は、受信した同期用パケットのうち、Follow_upパケットに含まれるFollow_up情報をDrift値計算部２５０へ出力する。ここでFollow_up情報には、当該Follow_upパケットを受信するに先だって受信したSyncパケットのマスタ側での送信タイミングに関する情報が含まれている。
【００３２】
発振器２２０は、内部タイマ２３０のソースクロックを生成する発振器であり、一定の周波数を有するクロック信号を発生させて内部タイマ２３０に出力する。発振器２２０は、マスタ装置が有する発振器１４０と同様、インダクタンスとキャパシタを組み合わせたＬＣ発振器や、抵抗とキャパシタを組み合わせたＲＣ発振器、水晶を用いた水晶発振器などで構成される。
【００３３】
内部タイマ２３０は、発振器２２０からクロック信号を入力し、当該クロック信号をカウントしてカウント値を生成する。また、内部タイマ２３０は、後述するタイマ補正部２６０からタイマ補正信号を入力し、当該タイマ補正信号に基づいて上記カウント値の補正を行う。例えば、タイマ補正信号が、タイマのカウント値をｎカウント進める内容の信号であったならば、内部タイマ２３０は、クロック信号をカウントすることで生成したカウント値をｎカウント進める補正を行う。一方、タイマ補正信号が、タイマのカウント値をｍカウント戻す内容の信号であったならば、内部タイマ２３０は、クロック信号をカウントすることで生成したカウント値をｍカウント戻す補正を行う。内部タイマ２３０は、補正後のカウント値を受信タイミング検出部２４０へ出力する。
【００３４】
受信タイミング検出部２４０は、パケット受信部２１０で受信された同期用パケットの受信タイミングを検出する。より具体的には、受信タイミング検出部２４０は、パケット受信部２１０で受信される同期用パケットのうちSyncパケットの受信タイミングを検出する。受信タイミング検出部２４０は、内部タイマ１５０より補正済みカウント値を入力し、パケット受信部２１０がSyncパケットを受信した時点におけるカウント値を求める。受信タイミング検出部２４０は、当該求めたカウント値を同期用パケットの受信タイミングを示す受信タイミング情報としてDrift値計算部２５０へ出力する。
【００３５】
Drift値計算部２５０は、パケット受信部２１０より入力したFollow_up情報と、受信タイミング検出部２４０より入力した受信タイミング情報と、に基づいてDrift値を計算する。当該Drift値計算部２５０におけるDrift値の計算方法は、背景技術と同一の計算方法を採用することができる。すなわち、以下の手順によりDrift値を求めることができる。
【００３６】
Drift値計算部２５０は、パケット受信部２１０がSyncパケットを受信した時間（t1k）を取得する（１）。当該t1kは、受信タイミング検出部２４０より、受信タイミング情報と言う形でDrift値計算部２５０へ入力される。
【００３７】
次に、Drift値計算部２５０は、マスタ装置が上記Syncパケットを送信した時間（t0k）を取得する（２）。当該t0kは、パケット受信部２１０が受信したFollow_upパケット内にFollow_up情報と言う形で含まれており、パケット受信部２１０よりDrift値計算部２５０へ入力される。
【００３８】
次に、Drift値計算部２５０は、パケット受信部２１０がSyncパケットを再度受信した時間（t1k+1）を取得する（３）。当該t1k+1は、上記t1kと同様、受信タイミング検出部２４０で求められて、Drift値計算部２５０へ入力される。
【００３９】
次に、Drift値計算部２５０は、パケット受信部２１０が再度受信したFollow_upパケット内に含まれる、マスタが上記Syncパケットを送信した時間（t0k+1）、を取得する（４）。当該t0k+1も上記t0kと同様、パケット受信部２１０が再度受信したFollow_upパケット内にFollow_up情報と言う形で含まれており、パケット受信部２１０よりDrift値計算部２５０へ入力される。
【００４０】
Drift値計算部２５０は、上記取得したt0k、t0k+1、t1k、t1k+1の４値からDrift値 = (Δ１-Δ０)／Δ０を算出する。ここで、Δ０＝t0k+1 − t0kであり、Δ１＝t1k+1 − t1k  である。求められたDrift値は、タイマ補正部２６０及びクロック変動量算出部２７０へ出力される。
【００４１】
タイマ補正部２６０は、Drift値計算部２５０から出力されたDrift値に基づいて、タイマ補正信号を生成し、内部タイマ２３０へ出力する。例えば、Drift値計算部２５０において上記計算方法で計算されたDrift値が、０．１の場合には、タイマ補正部２６０は、１０カウントアップする毎にカウント値を−１させるタイマ補正信号を生成して内部タイマ２３０へ出力する。また、Drift値が−０．１の場合には、タイマ補正部２６０は、１０カウントアップする毎にカウント値を＋１させるタイマ補正信号を生成して内部タイマ２３０へ出力する。内部タイマ２３０では、上述したように当該タイマ補正信号に基づいてカウント値の補正が行われる。
【００４２】
クロック変動量算出部２７０は、Drift値計算部２５０より出力されたDrift値を入力し、Drift値の変化を観察して自身のスレーブ装置におけるクロックの変動量を算出する。クロック変動量算出部２７０は、算出したクロック変動量をパケット生成部２８０へ出力する。
【００４３】
パケット生成部２８０は、クロック変動量算出部２７０より出力されたクロック変動量を含めてパケットを生成する。パケット生成部２８０は、当該パケットの送信先アドレスをマスタ装置のアドレスに、送信元アドレスを自装置のアドレスに設定してパケットを生成する。パケット生成部２８０は、生成したパケットをパケット送信部２９０へ出力する。
【００４４】
パケット送信部２９０は、パケット生成部２８０より出力されたパケットをマスタ装置へ送信する。
【００４５】
このように、スレーブ装置２００は、自身のクロック変動量をマスタへ通知するフィードバック機能を有する。
【００４６】
次に、本発明の同期システムの動作について説明する。図３は、本発明の同期システムの動作の流れを示したシーケンス図である。
【００４７】
まず、マスタから各スレーブへ同期用パケット(Syncパケット、Follow_upパケット)をマルチキャストで送信する（ステップ００１）。なお、この段階では、マスタは、各スレーブにおけるDrift変動の緩急に関してなんら情報を有していないため、マスタは、同期用パケットを比較的短い間隔でマルチキャストする。
【００４８】
各スレーブは、上記送信される同期用パケットに基づいてDrift値を計算し、内部タイマの調整をおこなうと共に、クロック変動量を算出する（ステップ００２）。具体的には、各スレーブ内に配置されたクロック変動量算出部は、一定期間のDrift値の最小値（min）と最大値（max）からクロック変動量を算出する。ここで、クロック変動量算出部がDrift値を比較する期間の長さについては、予めシステムで定められていても良いし、どれだけの長さの期間についてDrift値を比較するかに関する情報がマスタから各スレーブに対して通知される構成であっても良い。
【００４９】
各スレーブは、クロック変動量算出部で求めた自身のクロック変動量をマスタへ通知する（ステップ００３）。
【００５０】
マスタは、各スレーブから通知されたクロック変動量に基づいて、スレーブ毎に同期用パケットに関する適切な送信方法（マルチキャストかユニキャスト）および送信間隔を選択する（ステップ００４）。
【００５１】
マスタは、ステップ００４で選択した送信方法と送信間隔で同期用通信を行う（ステップ００５）。
【００５２】
上記シーケンスにおけるパケットの流れを、図４及び図５に示すネットワーク・トポロジーを用いて概念的に示す。図４に示すネットワークには、マスタ３００と、スレーブ３１０〜３４０の４つのスレーブが接続されている。
【００５３】
図４において、マスタ３００は、スレーブ３１０〜３４０にマルチキャストで同期用パケット（Syncパケット、Follow_upパケット）を送信する（１）。各スレーブは、受信した同期用パケットを用いて各々のクロック変動を求め、マスタへ通知する（２）。
【００５４】
ここで、スレーブ３４０は、クロック変動が大きく、スレーブ３１０〜３３０はクロック変動が小さかったとする。この時、マスタ３００内の送信アドレス制御部は、各スレーブから通知されたクロック変動量に基づいて、スレーブ３１０宛ての同期用パケットをユニキャストで、一方、スレーブ３１０〜３３０宛ての同期用パケットをマルチキャストで送信すると決定する。また、マスタ内の送信間隔制御部は、スレーブ３４０宛ての同期用パケットを０．１２５秒間隔で、一方、スレーブ３１０〜３３０宛ての同期用パケットを６４秒間隔で送信すると決定する。マスタ内のパケット送信部は、図５に示すように、送信アドレス制御部及び送信間隔制御部で決定されたこれらの内容に基づいて同期用パケットを各スレーブへ送信する。
【００５５】
上記手順によって同期用パケットが送信されることにより、ネットワーク全体としてのトラフィックを軽減することができる。すなわち、図５のように、スレーブ３４０が接続されている経路３へは１２５ｍｓ毎に頻繁に同期用パケットが流れるが、経路１、２へは６４秒毎にしか流れない。従って、従来技術の場合と比べて、経路１、経路２へ流れる同期用パケットの送信量の削減が達成されている。
【００５６】
一般的に、Drift値の変動が激しいノードにおいては、同期通信の間隔を狭く保たないと変化に追従できず同期精度を満たせなくなる。通常、マスタのクロックは高精度であり、Drift = (Δ1-Δ0)/Δ0で定義されることから、一定期間の連続するDrift値のｍｉｎ、ｍａｘの差をクロック変動量として扱うことができる。
【００５７】
図６と図７に、Drift値の変動が急である場合と緩やかである場合とについて、それぞれ、必要となる同期用通信の頻度を模式的に示す。
【００５８】
図６のように、クロック変動量（Driftの変化量）が大きいノードについては、同期通信の間隔を狭く保たないと変化に追従できず同期精度を満たせなくなる。一方、図７のように、クロック変動量が小さいノードについては、同期開始後一定期間は短い間隔で同期をとり、Drift値の変動が緩やかであることを確認した後に、途中から同期通信間隔を広くすることができる。このように同期通信間隔を変更しても同期精度への影響は少ない。なお、ここで言う同期通信間隔とは同期用パケットの送信間隔のことである。
【００５９】
以上のように、本発明の同期システムにおいて、マスタ装置は、クロック変動に関する情報であるクロック変動情報を受信する受信手段と、前記クロック変動情報に基づいて、前記クロック変動情報の送信元へ送信する同期用パケットの送信間隔を決定する決定手段と、同期用パケットを生成する生成手段と、前記生成した同期用パケットを、前記決定された送信間隔で前記クロック変動情報の送信元へ送信する送信手段と、を具備する。また、スレーブ装置は、同期用パケットを受信する受信手段と、前記受信手段で受信した同期用パケットの受信タイミングを検出する検出手段と、前記受信された同期用パケットに含まれる送信タイミング情報と、前記検出された受信タイミングとに基づいて、ドリフト値を計算する計算手段と、前記ドリフト値に基づいてクロック変動に関する情報を算出する算出手段と、前記算出されたクロック変動に関する情報を含めてパケットを生成する生成手段と、前記生成されたパケットを送信する送信手段と、を具備する。このように構成することで、ネットワーク全体の同期用パケットのトラフィックを軽減することができる。
【００６０】
また、各スレーブ装置では、同期用パケット受信時、受信パケット解析、Drift値計算、内部タイマ補正の処理をソフトウェアで実行する。ワークストケースでは、125ms毎に本処理が実行されるため、例えば処理時間が10msの場合、CPUが常に８％(=10ms/125ms)占有される。また、処理中は、パケット送受信要求への応答が保留されるため、通信のリアルタイム性が損なわれる。これに対し、同期間隔を125msから64秒したスレーブ装置では、CPU占有率は約0.01%（10ms/64秒）となり大幅に軽減される上、通信のリアルタイム性も向上する。
【００６１】
また、上記説明では、クロック変動量の大きいスレーブに対してユニキャストで同期用パケットを送信する場合について説明したがこれに限るものではない。例えば、当該スレーブの属するドメインにクロック変動量の小さい他のスレーブが存在する場合は、マルチキャストとユニキャストを混ぜて送信する構成であっても良い。すなわち、クロック変動量の小さいスレーブに合わせて、これらの装置が属しているドメインにマルチキャストで同期用パケットを送信する。そして、当該マルチキャストによる送信間隔を埋める形でクロック変動量の大きいスレーブにユニキャストで個別に同期用パケットを送信する。クロック変動量の小さいスレーブは、少ない頻度でマルチキャスト送信される同期用パケットを用いてタイマ補正を行うため、ＣＰＵの処理負荷を小さくすることができる。また、クロック変動量の大きいスレーブは、マルチキャスト及びユニキャストで送信される同期用パケットの両方を用いてタイマ補正を行うため、適切にタイマ補正を行うことができる。
【００６２】
また、マスタは、各スレーブから送信されるDrift値に基づいて、当該スレーブがクロック変動量を算出してフィードバック送信する頻度を求め、スレーブに通知する構成を更に備えていても良い。このように構成することで各スレーブからマスタに対するDrift値の通知頻度を適切に調節することができ、トラフィックを低減することができる。
【００６３】
（実施の形態２）
本実施の形態２における同期システムでは、実施の形態１において各スレーブが行っていたクロック変動量算出機能をマスタ側へ移行することで、スレーブ側の構成を単純化している。以下、図面を用いて説明する。
【００６４】
図８及び図９にそれぞれ本実施の形態２の発明のスレーブ装置４００及びマスタ装置５００の構成を示す。なお、図１、図２の構成要素と同一機能ブロックについては一部説明を省略する。
【００６５】
スレーブ装置４００は、パケット受信部２１０と、発振器２２０と、内部タイマ２３０と、受信タイミング検出部２４０と、Drift値計算部２５０と、タイマ補正部２６０と、パケット生成部４８０と、パケット送信部２９０と、から構成される。
【００６６】
パケット生成部４８０は、Drift値計算部２５０で求められたDrift値を入力し、当該Drift値を含めてパケットを生成する。パケットの送信先アドレスはマスタ装置のアドレスとなる。パケット生成部２８０は、生成したパケットをパケット送信部２９０へ出力する。パケット送信部２９０は、パケット生成部４８０より入力したパケットをマスタ装置５００へ送信する。なお、その他のブロックは図２のスレーブ装置２００のブロックと同一であるため説明を省略する。
【００６７】
次に、マスタ装置５００について説明する。マスタ装置５００は、パケット受信部５１０と、クロック変動量算出部５９０と、送信間隔制御部１２０と、送信アドレス制御部１３０と、発振器１４０と、内部タイマ１５０と、送信タイミング検出部１６０と、パケット生成部１７０とパケット送信部１８０と、から構成される。
【００６８】
パケット受信部５１０は、各スレーブから送信されるクロック変動に関する情報を含むパケットを受信する。ここで、クロック変動に関する情報には各スレーブ装置で求められたDrift値が含まれる。パケット受信部５１０で受信された上記パケットに含まれるクロック変動に関する情報は、クロック変動量算出部５９０へ出力される。また、パケット受信部５１０は、受信したパケットの送信元アドレスから当該Drift値を送信したスレーブ装置を特定し、当該送信元アドレスもクロック変動量算出部５９０へ出力する。
【００６９】
クロック変動量算出部５９０は、パケット受信部５１０から出力されたDrift値に基づいて各スレーブ装置におけるクロック変動量を算出する。より具体的には、パケット受信部５１０より出力されるDrift値を、パケット受信部５１０より出力される当該drift値の送信元アドレスに基づいて、スレーブ装置毎に管理する。クロック変動量算出部５９０は、入力したDrift値の変化を観察してスレーブ装置毎にクロックの変動量を算出する。例えば、クロック変動量算出部５９０は、一定期間のDrift値の最大値と最小値の差分を求め、その大きさからクロック変動量を算出する。算出されたクロック変動量は、送信間隔制御部１２０及び送信アドレス制御部１３０へ出力される。なお、その他のブロックは図１のマスタ装置のブロックと同一であるため説明を省略する。
【００７０】
以上説明したように、本実施の形態２における同期システムではマスタ装置が各スレーブ装置のクロック変動量を算出し、各スレーブ装置に対する同期用パケットの送信間隔や送信方法を決定する。マスタ装置に比較的処理能力の高いプロセッサを搭載できる場合には、このように構成されていても良い。
【００７１】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、スレーブ装置の受信タイミング検出部で検出された同期用パケットの受信タイミングをクロック変動に関する情報としてパケットに含めてマスタ装置へフィードバックし、マスタ装置が、クロック変動量を求める構成であっても良い。この場合、マスタ装置内のパケット受信部で受信されたパケットに含まれる上記受信タイミングは、別途設けられたDrift値計算部に入力され、マスタ装置内で各スレーブ装置のDrift値が計算される。計算されたDrift値は、別途設けられたクロック変動量算出部に入力され、クロック変動量が求められる。このように構成されていても良い。また上記Drift値計算部は、求めたDrift値をパケット生成部へ出力し、パケット生成部は当該Drift値を含めてタイマ補正用パケットを生成する構成であっても良い。スレーブ装置は、マスタ装置から送信される上記タイマ補正用パケットに含まれるDrift値に基づいて内部タイマを調節する構成とすれば、各スレーブにDrift値計算部を設けなくてもよい。
【００７２】
なお、上記説明では、同期用パケットをマルチキャストで送信する場合について説明したが、ドメインを超えて送信したい場合にはブロードキャストで送信することも可能である。
【００７３】
また、マスタとスレーブは有線で接続されていても良いし、無線で接続されていても良い。
【００７４】
また、上記で説明したマスタ装置及びスレーブ装置における各処理は、プログラムを用いてソフトウェア的に実行される構成であっても良い。なお、上記プログラムは、コンピュータ・システムがアクセス可能な様々な種類の記憶媒体に格納することが可能である。また、このプログラムは、通信媒体を介して伝達されることが可能である。ここで、記憶媒体には、例えば、フレキシブルディスク、ハードディスク、磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＯＭカートリッジ、バッテリバックアップ付きＲＡＭメモリカートリッジ、フラッシュメモリカートリッジ、不揮発性ＲＡＭカートリッジ等が含まれる。また、通信媒体には、電話回線等の有線通信媒体、マイクロ波回線等の無線通信媒体等が含まれ、インターネットも含まれる。
【符号の説明】
【００７５】
１００     マスタ装置
１１０     パケット受信部
１２０     送信間隔制御部
１３０     送信アドレス制御部
１４０     発振器
１５０     内部タイマ
１６０     送信タイミング検出部
１７０     パケット生成部
１８０     パケット送信部
２００     スレーブ装置
２１０     パケット受信部
２２０     発振器
２３０     内部タイマ
２４０     受信タイミング検出部
２５０     値計算部
２６０     タイマ補正部
２７０     クロック変動量算出部
２８０     パケット生成部
２９０     パケット送信部
３００    マスタ
３１０〜３４０    スレーブ
４００      スレーブ装置
４８０      パケット生成部
５００      マスタ装置
５１０      パケット受信部
５９０      クロック変動量算出部
【図１】
2012204912.tif 000003
【図２】
2012204912.tif 000004
【図３】
2012204912.tif 000005
【図４】
2012204912.tif 000006
【図５】
2012204912.tif 000007
【図６】
2012204912.tif 000008
【図７】
2012204912.tif 000009
【図８】
2012204912.tif 000010
【図９】
2012204912.tif 000011
【図１０】
2012204912.tif 000012
【図１１】
2012204912.tif 000013