(57)【特許請求の範囲】
【請求項１】
複数の時刻サーバと一台以上の転送装置で構成されたネットワークを介して接続される通信装置であって、
前記時刻サーバが計時した時刻を示す時刻情報と、ネットワークの識別子とを含むメッセージを受信し、前記メッセージが受信されたときの受信時刻を取得するネットワークコントローラと、
前記メッセージに含まれる前記識別子が、複数の前記時刻サーバのいずれかが属すネットワークの識別子に一致しない場合に前記メッセージを破棄するネットワーク処理部と、
前記ネットワークの識別子が一致する場合は、前記メッセージに含まれる前記時刻情報及び前記受信時刻を用いて時刻誤差を計算し、第１時刻サーバに対する異常の有無を検知し、前記第１時刻サーバに異常があることを検知した場合、第２時刻サーバが属すネットワークの識別子を含むメッセージを用いて計算した前記時刻誤差を出力するプロトコル処理部と、
前記時刻誤差を用いて、操作量を計算するサーボと、
前記操作量に基づいて、クロックレートを変更するクロックとを備え、
前記プロトコル処理部は、
前記第１時刻サーバに対して異常がないことを検知した場合、受信した前記メッセージを用いて計算した前記時刻誤差を出力し、
前記メッセージに含まれる前記識別子が第２時刻サーバが属すネットワークの識別子に付与されたものである場合且つ前記第１時刻サーバに対して異常がないことを検知した場合、前記メッセージを用いて計算した前記時刻誤差を記憶部に記憶させ、
前記メッセージに含まれる前記識別子が前記第１時刻サーバが属すネットワークに付与されたものである場合且つ前記第１時刻サーバに対して異常がないことを検知した場合、前記メッセージを用いて計算した前記時刻誤差を出力し、
前記メッセージに含まれる前記識別子が前記第２時刻サーバが属すネットワークに付与されたものである場合且つ前記第１時刻サーバに対して異常があることを検知した場合、前記メッセージを用いて計算した前記時刻誤差を出力し、
前記メッセージに含まれる前記識別子が前記第１時刻サーバが属すネットワークに付与されたものである場合且つ前記第１時刻サーバに対して異常があることを検知した場合、前記記憶部に記憶された前記時刻誤差を用いて計算した推定時刻誤差を出力する
ことを特徴とする通信装置。
【請求項２】
前記プロトコル処理部は、
前記第１時刻サーバに対して異常を検知した後に、前記第１時刻サーバが属すネットワークの識別子に付与された前記識別子を含む新たな前記メッセージを受信した場合、前記メッセージを用いて計算した前記時刻誤差及び過去に受信した前記メッセージを用いて計算した前記時刻誤差を用いて、前記第１時刻サーバの計時する時刻が正常且つ安定しているか否かを検知し、
前記第１時刻サーバの計時する時刻が異常又は安定していないことを検知した場合、前記第２時刻サーバが属すネットワークの前記識別子を含むメッセージを用いて計算した前記時刻誤差を出力し、
前記第１時刻サーバの計時する時刻が正常且つ安定していることを検知した場合、前記第１時刻サーバが属す前記識別子を含むメッセージを用いて計算した前記時刻誤差を出力する
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
請求項２に記載の通信装置と、
複数の時刻サーバと前記通信装置との接続を中継する一台以上の転送装置で構成されたネットワークを備え、
前記第１時刻サーバに接続された転送装置は、前記第１時刻サーバから送信された前記時刻情報を含む第１メッセージを受信した場合、前記第１時刻サーバが属すネットワークに付与された前記識別子を含むヘッダを前記第１メッセージに付加した第２メッセージを転送し、
前記第２時刻サーバに接続された転送装置は、前記第２時刻サーバから送信された前記時刻情報を含む第３メッセージを受信した場合、当該時刻サーバが属すネットワークに付与された前記識別子を含むヘッダを前記第３メッセージに付加した第４メッセージを転送し、
前記通信装置に接続された転送装置は、前記ネットワークを介して受信した前記第２メッセージを前記通信装置に転送し、前記ネットワークを介して受信した前記第４メッセージを前記通信装置に転送する
ことを特徴とする時刻同期システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置及び時刻同期システムに関するものである。
【背景技術】
【０００２】
従来より、通信装置が時刻サーバと通信して、時刻サーバと時刻を同期させる技術がある。非特許文献１には、例えばLocal  Area  Network(LAN)内において、高精度で時刻を同期させるプロトコル仕様IEEE１５８８−２００８(以下、IEEE１５８８と記述)が開示されている。この技術では、IEEE１５８８に準拠した時刻サーバがマルチキャストで広告する時刻と、時刻サーバと通信装置との間の通信遅延を利用して、通信装置は時刻を時刻サーバの時刻に同期させる。また、複数の時刻サーバが通信可能な同一ネットワーク上に存在する場合、優先度が最も高い時刻サーバのみが時刻を広告する。また、非特許文献１には、複数の時刻サーバが時刻を広告する方法も開示されている。その方法はAlternate  masteroptionと呼ばれている。この方法では、通信装置は複数のAlterna  master  option機能を搭載した時刻サーバから時刻を定期的に受信することで、いずれかの時刻サーバに異常が起きたときでも、通信装置はその他の時刻サーバから時刻を受信できる。このため、通信装置は時刻精度を維持することができる。【０００３】
しかしながら、IEEE１５８８では、同一ドメイン内の全ての時刻サーバが折衝することでそれぞれの時刻サーバの内部状態を決定し、内部状態に応じてメッセージの送受信処理を変更する。そこで、ある時刻サーバの挙動が他の時刻サーバに影響する。例えば、ある時刻サーバが異常を起こし、時刻サーバの優先度を示すパラメータが管理者の意図しない値に設定されたAnnounceメッセージを送信した場合、他の時刻サーバは時刻の広告を一時的に中止する可能性がある。また、時刻サーバの復旧時やメンテナンス時に、ネットワークへ新たに接続する時刻サーバの設定を間違った場合、同様に他の時刻サーバは時刻の広告を一時的に中止する可能性がある。そのため、通信装置の時刻は、時刻サーバから時刻を受信できない間にずれるという問題がある。【０００４】
非特許文献２には、２つのネットワークそれぞれに１台ずつ時刻サーバを接続し、２つのネットワークの両方に通信装置を接続することで、時刻サーバを冗長化する時刻同期システムが開示されている。非特許文献２において、Grandmasterは時刻サーバであり、Ordinary  clockは通信装置である。各ネットワークに接続された２つの時刻サーバのうち一方を主時刻サーバとし、他方を副時刻サーバとする。通信装置は主時刻サーバと時刻を同期させ、主時刻サーバと通信不可能になったとき、時刻を同期させる時刻サーバを副時刻サーバへ切り替える。このように通信経路及び時刻サーバを冗長化することで、時刻同期システムの信頼性を向上させている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】IEEEE１５８８−２００８  Std.
【非特許文献２】Sven  Meier  and  Hans  Weibel,“IEEE  1588  applied  in  the  environment  ofhigh  availability  LANs,”  2007  Proceedings  on  International  IEEE  Symposiumon  Precision  Clock  Synchronization  (ISPCS),  pp.100-104,  Oct  2007.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、非特許文献２の技術では、同一ネットワーク上に複数の時刻サーバを設置して冗長化した場合、時刻サーバの異常時や復旧時に通信装置の時刻精度を維持できない恐れがあった。【０００７】
本発明は、上記に鑑みてなされたものであって、同一ネットワーク上に複数の時刻サーバを設置して冗長化した場合、時刻サーバの異常時や復旧時に時刻精度を維持可能な通信装置及び時刻同期システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、複数の時刻サーバと一台以上の転送装置で構成されたネットワークを介して接続される通信装置であって、前記時刻サーバが計時した時刻を示す時刻情報と、ネットワークの識別子とを含むメッセージを受信し、前記メッセージが受信されたときの受信時刻を取得するネットワークコントローラと、前記メッセージに含まれる前記識別子が、複数の前記時刻サーバのいずれかが属すネットワークの識別子に一致しない場合に前記メッセージを破棄するネットワーク処理部と、前記ネットワークの識別子が一致する場合は、前記メッセージに含まれる前記時刻情報及び前記受信時刻を用いて時刻誤差を計算し、第１時刻サーバに対する異常の有無を検知し、前記第１時刻サーバに異常があることを検知した場合、第２時刻サーバが属すネットワークの識別子を含むメッセージを用いて計算した前記時刻誤差を出力するプロトコル処理部と、前記時刻誤差を用いて、操作量を計算するサーボと、前記操作量に基づいて、クロックレートを変更するクロックとを備え、前記プロトコル処理部は、前記第１時刻サーバに対して異常がないことを検知した場合、受信した前記メッセージを用いて計算した前記時刻誤差を出力し、前記メッセージに含まれる前記識別子が第２時刻サーバが属すネットワークの識別子に付与されたものである場合且つ前記第１時刻サーバに対して異常がないことを検知した場合、前記メッセージを用いて計算した前記時刻誤差を記憶部に記憶させ、前記メッセージに含まれる前記識別子が前記第１時刻サーバが属すネットワークに付与されたものである場合且つ前記第１時刻サーバに対して異常がないことを検知した場合、前記メッセージを用いて計算した前記時刻誤差を出力し、前記メッセージに含まれる前記識別子が前記第２時刻サーバが属すネットワークに付与されたものである場合且つ前記第１時刻サーバに対して異常があることを検知した場合、前記メッセージを用いて計算した前記時刻誤差を出力し、前記メッセージに含まれる前記識別子が前記第１時刻サーバが属すネットワークに付与されたものである場合且つ前記第１時刻サーバに対して異常があることを検知した場合、前記記憶部に記憶された前記時刻誤差を用いて計算した推定時刻誤差を出力することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、同一ネットワーク上に複数の時刻サーバを設置して冗長化した場合、時刻サーバの異常時や復旧時に通信装置の時刻精度を維持することができる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態の時刻同期システムの構成を例示する図。
【図２】Announceメッセージを例示する図。
【図３】Syncメッセージを例示する図。
【図４】VLANヘッダを付加したAnnounceメッセージを例示する図。
【図５】VLANヘッダを付加したSyncメッセージを例示する図。
【図６】時刻同期システムの適用例を示す図。
【図７】時刻同期通信処理の手順を示すフローチャート。
【図８】時刻同期処理の手順を示すフローチャート。
【図９】第２の実施の形態の時刻同期処理の手順を示すフローチャート。
【図１０】第３の実施の形態の時刻同期処理の手順を示すフローチャート。
【図１１】第４の実施の形態の時刻同期システムの構成を例示する図。
【図１２】補正データを例示する図。
【図１３】時刻同期処理の手順を示すフローチャート。
【図１４】第５の実施の形態の時刻同期処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる通信装置及び時刻同期システムの実施の形態を詳細に説明する。
【００１２】
[第１の実施の形態]
図１は、時刻同期システムの構成を例示する図である。同図に示されるように、時刻同期システムは、時刻サーバ１０１、スイッチ１０２、スイッチ１０３、時刻サーバ１０４、ネットワーク１０５及び通信装置１０６を備え、２つの時刻サーバ１０１，１０４が、同一のネットワーク１０５に接続される構成である。時刻同期システムでは、例えば８０２．１Qに準拠したVLANを用いて、通信装置１０６が時刻サーバ１０１又は１０４と時刻を同期させる。時刻サーバ１０１，１０４は時刻を広告するサーバであり、例えばIEEE１５８８等の時刻同期プロトコル機能を搭載したサーバである。但し、IEEE１５８８のAlternate  master  option機能を搭載していなくても良い。時刻サーバ１０１，１０４には、各々異なるVLAN  IDが付与されている。また、ここでは、時刻サーバ１０１を主時刻サーバとし、時刻サーバ１０４を副時刻サーバとする。時刻サーバ１０１はスイッチ１０２を介してネットワーク１０５に接続され、時刻サーバ１０４はスイッチ１０３を介してネットワーク１０５に接続される。通信装置１０６は、スイッチ１１４を介してネットワーク１０５に接続される。ネットワーク１０５は、例えばEthernet（登録商標）（イーサネット（登録商標））、FDDI、PLC、無線LAN、WiMAX、Jigbee、LTE、CAN、Profinetである。ここではネットワーク１０５はイーサネット（登録商標）であるとする。スイッチ１０２，１０３，１１４は、例えばイーサネット（登録商標）スイッチ機能を搭載した転送装置である。通信装置１０６、スイッチ１１４、スイッチ１０２及びスイッチ１０３はそれぞれ、IEEE１５８８で規定されるPeer  to  peer  delay  mechanismと呼ばれる方法で、隣接するIEEE１５８８との間の通信遅延を測定するものとする。
【００１３】
次に、時刻サーバ１０１、スイッチ１０２、スイッチ１０３、時刻サーバ１０４、ネットワーク１０５及び通信装置１０６の各構成について説明する。時刻サーバ１０１は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージをスイッチ１０２から受信すると、マルチキャストアドレスを宛先とし、時刻サーバ１０１がPDelay_Reqメッセージを受信したときの受信時刻であるタイムスタンプと、PDelay_Responseメッセージを送信したときの送信時刻であるタイムスタンプとを含むPDelay_Responseメッセージを送信する。また、時刻サーバ１０１は、定期的に、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットしたAnnounceメッセージを送信すると共に、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットした、その送信時刻を示す時刻情報を含むSyncメッセージを送信する。Announceメッセージ及びSyncメッセージは、IEEE１５８８が規定するメッセージである。図２は、Announceメッセージを例示する図である。図３は、Syncメッセージを例示する図である。図３に例示されるように、Syncメッセージには、時刻サーバ１０１が計時した時刻であり、Syncメッセージの送信時刻を示す時刻情報が含まれる。また、Syncメッセージには、Correctionフィールドが含まれている。Correctionフィールドには、時刻を訂正するための初期値がセットされており、Syncメッセージの転送処理時間及び時刻サーバ１０１との間の通信遅延の値が後述するスイッチ１０２により加算されて再セットされる。
【００１４】
時刻サーバ１０４は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージをスイッチ１０３から受信すると、マルチキャストアドレスを宛先とし、時刻サーバ１０４がPDelay_Reqメッセージを受信したときの受信時刻であるタイムスタンプと、PDelay_Responseメッセージを送信したときの送信時刻であるタイムスタンプとを含むPDelay_Responseメッセージを送信する。また、時刻サーバ１０４は時刻サーバ１０１と同様に、定期的に、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットしたAnnounceメッセージを送信すると共に、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットした、その送信時刻を示す時刻情報を含むSyncメッセージを送信する。Announceメッセージ及びSyncメッセージは、図２〜３に各々例示されるものと同様である。尚、Syncメッセージに含まれるCorrectionフィールドには、Syncメッセージの転送処理時間及び時刻サーバ１０４との間の通信遅延の値が後述するスイッチ１０３により加算されて再セットされる。
【００１５】
スイッチ１０２は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを送信し、これに対して、マルチキャストアドレスを宛先としたPDelay_Responseメッセージを時刻サーバ１０１から受信すると、PDelay_Responseメッセージに含まれるタイムスタンプを利用して、時刻サーバ１０１との間の通信遅延を測定する。また、スイッチ１０２は、時刻サーバ１０１から送信されたAnnounceメッセージやSyncメッセージを受信すると、時刻サーバ１０１に付与されたVLAN  IDを含むVLANヘッダをAnnounceメッセージやSyncメッセージに各々付加して、これらを各々ネットワーク１０５へ転送する。このとき、Syncメッセージについては、スイッチ１０２は、Syncメッセージの転送処理時間、及び時刻サーバ１０１との間の通信遅延の値を、SyncメッセージのCorrectionフィールドの値に加算した値を、SyncメッセージのCorrectionフィールドにセットしてネットワーク１０５へ転送する。VLANヘッダは、例えば８０２．１Qに準拠したタグである。図４は、VLANヘッダを付加したAnnounceメッセージを例示する図である。同図に例示されるように、図２に例示されたAnnounceメッセージに対して、VLAN  IDを含むVLANヘッダが付加されている。図５は、VLANヘッダを付加したSyncメッセージを例示する図である。同図に例示されるように、図３に例示されたSyncメッセージに対して、VLAN  IDを含むVLANヘッダが付加されている。
【００１６】
また、スイッチ１０２は、ネットワーク１０５にマルチキャストで送信されたAnnounceメッセージやSyncメッセージを受信すると、これらのメッセージにVLANヘッダが付加されている場合、当該VLANヘッダに含まれるVLAN  IDを参照して、当該VLAN  IDが時刻サーバ１０１に付与されたものか否かを判断する。当該VLAN  IDが時刻サーバ１０１に付与されたものである場合、スイッチ１０２は、当該メッセージからVLANヘッダを除去して時刻サーバ１０１へ転送する。例えば、スイッチ１０２は、図４に例示されるAnnounceメッセージからVLANヘッダを除去して、図２に例示されるAnnounceメッセージを時刻サーバ１０１へ転送し、図５に例示されるSyncメッセージからVLANヘッダを除去して、図３に例示されるSyncメッセージを時刻サーバ１０１へ転送する。一方、受信したAnnounceメッセージやSyncメッセージに付加されたVLANヘッダに含まれるVLAN  IDが時刻サーバ１０１に付与されたものではない場合、スイッチ１０２は、当該メッセージを時刻サーバ１０１へ転送しない。例えば、時刻サーバ１０４から後述するスイッチ１０３を介して転送されたAnnounceメッセージやSyncメッセージがこの場合に該当する。
【００１７】
スイッチ１０３は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを送信し、これに対して、マルチキャストアドレスを宛先としたPDelay_Responseメッセージを時刻サーバ１０４から受信すると、PDelay_Responseメッセージに含まれるタイムスタンプを利用して、時刻サーバ１０４との間の通信遅延を測定する。また、スイッチ１０３は、時刻サーバ１０４から送信されたAnnounceメッセージやSyncメッセージを受信すると、時刻サーバ１０４に付与されたVLAN  IDを含むVLANヘッダをAnnounceメッセージやSyncメッセージに各々付加して、これらを各々ネットワーク１０５へ転送する。このとき、Syncメッセージについては、スイッチ１０２は、Syncメッセージの転送処理時間、及び時刻サーバ１０１との間の通信遅延の値を、SyncメッセージのCorrectionフィールドの値に加算した値を、SyncメッセージのCorrectionフィールドにセットしてネットワーク１０５へ転送する。VLANヘッダを付加したメッセージは、図４〜５に例示されるものと同様である。
【００１８】
また、スイッチ１０３は、ネットワーク１０５にマルチキャストで送信されたAnnounceメッセージやSyncメッセージを受信すると、これらのメッセージにVLANヘッダが付加されている場合、当該VLANヘッダに含まれるVLAN  IDを参照して、当該VLAN  IDが時刻サーバ１０４に付与されたものか否かを判断する。当該VLAN  IDが時刻サーバ１０４に付与されたものである場合、当該メッセージからVLANヘッダを除去して時刻サーバ１０４へ転送し、当該VLAN  IDが時刻サーバ１０４に付与されたものではない場合、当該メッセージを時刻サーバ１０４へ転送しない。例えば、時刻サーバ１０１からスイッチ１０２を介して転送されたAnnounceメッセージやSyncメッセージがこの場合に該当する。
【００１９】
スイッチ１１４は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを通信装置１０６から受信すると、マルチキャストアドレスを宛先とし、スイッチ１１４がPDelay_Reqメッセージを受信したときの受信時刻であるタイムスタンプと、PDelay_Responseメッセージを送信したときの送信時刻であるタイムスタンプとを含むPDelay_Responseメッセージを送信する。また、スイッチ１１４は、時刻サーバ１０１，１０４からネットワーク１０５を介してAnnounceメッセージやSyncメッセージを受信すると、VLANヘッダを除去せず通信装置１０６へ転送する。また、スイッチ１１４は、通信装置１０６から時刻サーバ１０１のVLAN  IDを含むVLANヘッダが付加されたAnnounceメッセージやSyncメッセージ又は時刻サーバ１０４のVLAN  IDを含むVLANヘッダが付加されたAnnounceメッセージやSyncメッセージをそのままネットワーク１０５へ転送する。
【００２０】
通信装置１０６は、ネットワークインタフェース１０７、ネットワークコントローラ１０８、ネットワーク処理部１０９、プロトコル処理部１１０、サーボ１１１、クロック１１２、記憶部１１３及びアプリケーション１１５を備える。ネットワークインタフェース１０７は、ネットワーク１０５の通信方式に対応した通信インタフェースであり、通信装置１０６とネットワーク１０５との通信を制御する。ここでは、ネットワークインタフェース１０７は、イーサネット（登録商標）の通信方式に対応した通信インタフェースであるとする。
【００２１】
ネットワークコントローラ１０８は、時刻サーバ１０１又は時刻サーバ１０４にメッセージを送信したときの送信時刻をタイムスタンプとして取得し、時刻サーバ１０１又は時刻サーバ１０４からSyncメッセージを受信したときの受信時刻をタイムスタンプとして取得する。ネットワーク処理部１０９は、ネットワークインタフェース１０７が対応する通信方式に応じた処理を実行する。ネットワーク処理部１０９は、時刻サーバ１０１から受信したSyncメッセージに付加されたVLANヘッダに含まれるVLAN  IDが時刻サーバ１０１又は時刻サーバ１０４に付与されたものである場合、当該Syncメッセージ及び当該Syncメッセージを受信したときの受信時刻であるタイムスタンプをプロトコル処理部１１０に送り、当該VLAN  IDが時刻サーバ１０１又は時刻サーバ１０４に付与されたものではない場合、当該Syncメッセージを破棄する。また、ネットワーク処理部１０９は、時刻サーバ１０１又は時刻サーバ１０４に送信するメッセージに、各々に付与されたVLAN  IDを含むVLANヘッダを付加する。
【００２２】
プロトコル処理部１１０は、IEEE1588などの時刻同期プロトコルに従った処理を実行する。プロトコル処理部１１０は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを送信し、これに対して、マルチキャストアドレスを宛先としたPDelay_Responseメッセージをスイッチ１１４から受信すると、PDelay_Responseメッセージに含まれるタイムスタンプを利用して、スイッチ１１４との間の通信遅延を測定する。また、プロトコル処理部１１０は、時刻サーバ１０１から送信されたSyncメッセージ及びタイムスタンプをネットワーク処理部１０９から受け取ると、当該Syncメッセージに含まれる時刻情報及びタイムスタンプを用いて、時刻サーバ１０１との間の時刻誤差を計算し、時刻サーバ１０１に対する異常がないことを検知した場合、計算した時刻誤差をサーボ１１１に出力する。時刻サーバ１０１に対する異常の有無を検知する方法については後述する。また、プロトコル処理部１１０は、時刻サーバ１０４から送信されたSyncメッセージ及びタイムスタンプをネットワーク処理部１０９から受け取ると、当該Syncメッセージに含まれる時刻情報及びタイムスタンプを用いて、時刻サーバ１０４との間の時刻誤差を計算し、時刻サーバ１０１に対して異常がないことを検知した場合、計算した時刻誤差を記憶部１１３に記憶させ、時刻サーバ１０１に対して異常があることを検知した場合、計算した時刻誤差をサーボ１１１に出力する。
【００２３】
サーボ１１１は、例えばデジタルフィルタやPID制御で構成された制御部であり、プロトコル処理部１１０が出力した時刻誤差を用いて操作量を計算して、これをクロック１１２へ出力する。例えば、クロック１１２が電圧制御水晶発振器の場合、操作量は、電圧である。クロック１１２がAdder  Based  Clockの場合、操作量は、クロック１１２のカウンタを増加させるタイミングの間の周波数とカウンタの増加量とである。クロック１１２は例えば電圧制御水晶発振器またはAdder  Based  Clockであり、時刻を計時する。クロック１１２は、サーボ１１１から出力された操作量に応じてクロックレートを変更する。
【００２４】
記憶部１１３は、例えばレジスタやRAMにより構成され、プロトコル処理部１１０の制御の下、プロトコル処理部１１０が計算した時刻誤差を記憶する。また、記憶部１１３は、時刻サーバ１０１，１０４について、IEEE１５８８が規定する優先度を予め記憶する。記憶部１１３に記憶される時刻サーバ１０１の優先度は時刻サーバ１０４の優先度より高いものとする。アプリケーション１１５は、クロック１１２が計時した現在時刻を参照するアプリケーションプログラムである。
【００２５】
以上のような構成の時刻同期システムでは、同一ネットワーク１０５上の２つの時刻サーバ１０１，１０４に対して各々異なるVLAN  IDを付与する。スイッチ１０２は、時刻サーバ１０１から送信されたAnnounceメッセージやSyncメッセージに対して時刻サーバ１０１に付与されたVLAN  IDを含むVLANヘッダを付加する。また、スイッチ１０２は、時刻サーバ１０４のVLAN  IDを含むVANヘッダが付加されたAnnounceメッセージやSyncメッセージを時刻サーバ１０１に転送しないようにする。また、スイッチ１０３は、時刻サーバ１０４から送信されたAnnounceメッセージやSyncメッセージに対して時刻サーバ１０４に付与されたVLAN  IDを含むVLANヘッダを付加する。また、スイッチ１０３は、時刻サーバ１０１のVLAN  IDを含むVLANヘッダが付加されたAnnounceメッセージやSyncメッセージを時刻サーバ１０４に転送しないようにする。これにより、時刻サーバ１０１，１０４が互いに通信できないようにする。一方、通信装置１０６は、AnnounceメッセージやSyncメッセージに付加されたVLANヘッダが時刻サーバ１０１，１０４のいずれに付与されたVLAN  IDを含んでいてもそのまま受信する。上述したように時刻サーバ１０１を主時刻サーバとしているので、通信装置１０６は、時刻サーバ１０１が正常である場合には、時刻サーバ１０１から送信されたSyncメッセージを用いて、時刻サーバ１０１に時刻を同期させるが、時刻サーバ１０１に対する異常を検知した場合、時刻を同期させる対象を時刻サーバ１０４に切替えて、時刻サーバ１０４から送信されたSyncメッセージを用いて、時刻サーバ１０４に時刻を同期させる。このような時刻同期システムは、例えば図６に示すような分散電力制御ネットワークや、変電所、工場、列車といった産業用ネットワーク及び家庭ネットワークに適用可能である。
【００２６】
次に、本実施の形態にかかる時刻同期システムで行う時刻同期通信処理の手順について図７を用いて説明する。通信装置１０６は、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを送信する（ステップＳ１）。スイッチ１１４はPDelay_Reqメッセージを受信すると、マルチキャストアドレスを宛先としたPDelay_Responseメッセージを送信する（ステップＳ２）。通信装置１０６は、PDelay_Responseメッセージに含まれるタイムスタンプを利用して、スイッチ１１４との間の通信遅延を測定する。
【００２７】
スイッチ１０３も通信装置１０６と同様に、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを送信する（ステップＳ３）。時刻サーバ１０４はPDelay_Reqメッセージを受信すると、マルチキャストアドレスを宛先としたPDelay_Responseメッセージを送信する（ステップＳ４）。スイッチ１０３はPDelay_Responseメッセージに含まれるタイムスタンプを利用して、時刻サーバ１０４との間の通信遅延を測定する。また、スイッチ１０２も通信装置１０６と同様に、マルチキャストアドレスを宛先としたPDelay_Reqメッセージを送信する（ステップＳ９）。時刻サーバ１０１はPDelay_Reqメッセージを受信すると、マルチキャストアドレスを宛先としたPDelay_Responseメッセージを送信する（ステップＳ１０）。スイッチ１０２はPDelay_Responseメッセージに含まれるタイムスタンプを利用して、時刻サーバ１０１との間の通信遅延を測定する。
【００２８】
時刻サーバ１０１は、定期的に、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットしたAnnounceメッセージを送信すると共に（ステップＳ５，Ｓ１１）、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットした、時刻情報を含むSyncメッセージを送信する（ステップＳ６，Ｓ１２）。ステップＳ５で送信されたAnnounceメッセージをスイッチ１０２が時刻サーバ１０１から受信すると、図２に例示されるように、時刻サーバ１０１のVLAN  IDを含むVLANヘッダをAnnounceメッセージに付加して、ネットワーク１０５へ転送する。このAnnounceメッセージをスイッチ１１４がネットワーク１０５を介して受信すると、VLANヘッダを除去せずAnnounceメッセージを通信装置１０６へ転送する。
【００２９】
また、時刻サーバ１０１がステップＳ６で送信したSyncメッセージをスイッチ１０２は受信すると、時刻サーバ１０１のVLAN  IDを含むVLANヘッダをSyncメッセージに付加し、更に、Syncメッセージの転送処理時間、及び時刻サーバ１０１との間の通信遅延の値を、SyncメッセージのCorrectionフィールドの値に加算した値を、SyncメッセージのCorrectionフィールドにセットする。このSyncメッセージをスイッチ１０２はネットワーク１０５へ転送する。このSyncメッセージをスイッチ１１４がネットワーク１０５を介して受信すると、VLANヘッダを除去せずSyncメッセージを通信装置１０６へ転送する。
【００３０】
尚、時刻サーバ１０１がステップＳ１１で送信したAnnounceメッセージ及びステップＳ１２で送信したSyncメッセージは、なんらかの異常の発生により、スイッチ１０２に受信されないことが、図７において例示されている。
【００３１】
通信装置１０６は、時刻サーバ１０１がステップＳ６で送信したSyncメッセージを、ネットワーク１０５、スイッチ１０２及びスイッチ１１４を介して受信すると、時刻同期処理を行う（ステップＳ２０）。この時刻同期処理の詳細な手順については後述する。
【００３２】
一方、時刻サーバ１０４も時刻サーバ１０１と同様に、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットしたAnnounceメッセージを送信すると共に（ステップＳ７，Ｓ１３）、Ethernet（登録商標）ヘッダの宛先アドレスにマルチキャストアドレスをセットした、時刻情報を含むSyncメッセージを送信する（ステップＳ８，Ｓ１４）。時刻サーバ１０４がステップＳ７又はＳ１３で送信したAnnounceメッセージをスイッチ１０３が時刻サーバ１０４から受信すると、時刻サーバ１０４のVLAN  IDを含むVLANヘッダをAnnounceメッセージに付加して、ネットワーク１０５へ転送する。このAnnounceメッセージをスイッチ１１４がネットワーク１０５を介して受信すると、VLANヘッダを除去せずAnnounceメッセージを通信装置１０６へ転送する。また、時刻サーバ１０４がステップＳ８又はＳ１４で送信したSyncメッセージをスイッチ１０３は受信すると、時刻サーバ１０４のVLAN  IDを含むVLANヘッダをSyncメッセージに付加し、更に、Syncメッセージの転送処理時間、及び時刻サーバ１０４との間の通信遅延の値を、SyncメッセージのCorrectionフィールドの値に加算した値を、SyncメッセージのCorrectionフィールドにセットする。このSyncメッセージをスイッチ１０３はネットワーク１０５へ転送する。このSyncメッセージをスイッチ１１４がネットワーク１０５を介して受信すると、VLANヘッダを除去せずSyncメッセージを通信装置１０６へ転送する。
【００３３】
通信装置１０６は、時刻サーバ１０４がステップＳ８で送信したSyncメッセージを、ネットワーク１０５、スイッチ１０３及びスイッチ１１４を介して受信すると、時刻同期処理を行う（ステップＳ２１）。また、通信装置１０６は、時刻サーバ１０４がステップＳ１４で送信したSyncメッセージを、ネットワーク１０５、スイッチ１０３及びスイッチ１１４を介して受信した場合も同様に、時刻同期処理を行う（ステップＳ２２）。
【００３４】
尚、Announceメッセージ及びSyncメッセージはマルチキャストで送信されるため、スイッチ１０３が転送したこれらのメッセージをスイッチ１０２が受信する可能性がある。しかし、これらのメッセージにはVLANヘッダが付加されているため、スイッチ１０２は、当該VLANヘッダに含まれるVLAN  IDを参照して、当該VLAN  IDが時刻サーバ１０４に付与されたものである場合、当該メッセージからVLANヘッダを除去して時刻サーバ１０４へ転送し、当該VLAN  IDが時刻サーバ１０１に付与されたものではない場合、当該メッセージを時刻サーバ１０１へ転送しない。同様に、スイッチ１０２が転送したAnnounceメッセージ及びSyncメッセージをスイッチ１０３が受信する可能性がある。スイッチ１０３は、これらのメッセージに付加されたVLANヘッダに含まれるVLAN  IDを参照して、当該VLAN  IDが時刻サーバ１０４に付与されたものである場合、当該メッセージからVLANヘッダを除去して時刻サーバ１０４へ転送し、当該VLAN  IDが時刻サーバ１０４に付与されたものではない場合、当該メッセージを時刻サーバ１０４へ転送しない。
【００３５】
以上のようにスイッチ１０２，１０３を構成することで、時刻サーバ１０１及び時刻サーバ１０４は互いのメッセージを受信することがないため、一方の時刻サーバの異常が他方の時刻サーバへ影響することを防ぐことができる。また、IEEE１５８８が規定するとおり、時刻サーバ１０１及び時刻サーバ１０４は通信可能な時刻サーバの中で最も優先度が高い時刻サーバとなるため、時刻サーバ１０１及び時刻サーバ１０４は両方ともAnnounceメッセージ及びSyncメッセージを広告可能となる。
【００３６】
次に、本実施の形態にかかる通信装置１０６の行う時刻同期処理の手順について図８を用いて説明する。ここでは、通信装置１０６は、時刻サーバ１０１又は時刻サーバ１０４から定期的に送信されるSyncメッセージを受信した後の処理の手順について説明する。通信装置１０６のネットワークインタフェース１０７は、受信したSyncメッセージをネットワークコントローラ１０８へ送り、ネットワークコントローラ１０８はSyncメッセージを受信した受信時刻をタイムスタンプとして取得する（ステップＳ２１）。このタイムスタンプは、クロック１１２を用いて計測した値である。そしてネットワークコントローラ１０８は、タイムスタンプ及びSyncメッセージをネットワーク処理部１０９へ送る。ネットワーク処理部１０９は、タイムスタンプ及びSyncメッセージを受け取ると、Syncメッセージに付加されたEthernet（登録商標）ヘッダを処理した後、Syncメッセージに付加されたVLANヘッダに含まれるVLAN  IDを検証する。VLAN  IDが時刻サーバ１０１または１０４に付与されたものではない場合、ネットワーク処理部１０９は、Syncメッセージを破棄する。一方、VLAN  IDが時刻サーバ１０１または１０４に付与されたものである場合、ネットワーク処理部１０９は、プロトコル処理部１１０へSyncメッセージ及びタイムスタンプを送る（ステップＳ２２）。尚、ネットワーク処理部１０９はEthernet（登録商標）ヘッダおよびVLAN  IDを除去したSyncメッセージをプロトコル処理部１１０へ送っても良い。
【００３７】
次に、プロトコル処理部１１０は、Syncメッセージ及びタイムスタンプを受け取ると、タイムスタンプ、Syncメッセージに含まれる時刻情報、通信装置１０６とスイッチ１１４との間の通信遅延時間及びIEEE１５８８で規定された方法を用いて、Syncメッセージを送信した時刻サーバとの時刻誤差を計算する（ステップＳ２３）。また、プロトコル処理部１１０は、Syncメッセージに付加されたVLANヘッダに含まれるVLAN  IDが、主時刻サーバである時刻サーバ１０１に付与されたものか時刻サーバ１０４に付与されたものかを判断する（ステップＳ２４）。VLAN  IDが時刻サーバ１０１に付与されたものである場合（ステップＳ２４：ＹＥＳ）、プロトコル処理部１１０は、時刻サーバ１０１に対する異常の有無を検知する（ステップＳ２５）。
【００３８】
時刻サーバ１０１に対して異常がある場合とは、例えば、図７に例示したステップＳ１１で時刻サーバ１０１が送信したAnnounceメッセージを通信装置１０６が受信できない場合や、ステップＳ１２で時刻サーバ１０１が送信したSyncメッセージを通信装置１０６が受信できない場合である。即ち、通信装置１０６が時刻サーバ１０１からAnnounceメッセージを過去に受信してから予め決められた時間経っても次のAnnounceメッセージを受信できない場合、または、時刻サーバ１０１からSyncメッセージを過去受信してから予め決められた時間経過しても次のSyncメッセージを受信できない場合である。また、時刻サーバ１０１の計時する時刻に異常を発見した場合も、時刻サーバ１０１に対して異常がある場合である。具体的には例えば、ステップＳ２３で計算した時刻誤差が、過去に計算した時刻誤差の一定倍数以上（例えば３倍）になった場合や、過去の時刻誤差の時系列データを用いて回帰直線を求め、その傾きが「0」から一定数以上大きくなった場合である。このような時刻の異常の有無を検知する場合には、プロトコル処理部１１０は、時刻サーバ１０１に対して計算した時刻誤差を記憶部１１３に記憶させるようにする。
【００３９】
図８の説明に戻る。そして、時刻サーバ１０１に対して異常がないことを検知した場合（ステップＳ２５：ＮＯ）、プロトコル処理部１１０は、ステップＳ２３で計算した時刻誤差をサーボ１１１へ出力する。この時刻誤差は、時刻サーバ１０１との時刻誤差である。サーボ１１１は入力された時刻誤差を用いてクロック１１２への操作量を計算し、操作量をクロック１１２へ出力する（ステップＳ２８）。例えば、サーボ１１１はPID制御を用いて操作量を計算する。クロック１１２は、入力された操作量に応じてクロックレートを変更する（ステップＳ３２）。
【００４０】
一方、VLAN  IDが時刻サーバ１０４に付与されたものである場合も（ステップＳ２４：ＮＯ）、プロトコル処理部１１０は、時刻サーバ１０１に対する異常の有無を検知する（ステップＳ２９）。そして、時刻サーバ１０１に対して異常がないことを検知した場合（ステップＳ２９：ＮＯ）、プロトコル処理部１１０は、ステップＳ２３で計算した時刻誤差及びSyncメッセージを記憶部１１３に記憶させる（ステップＳ３１）。この時刻誤差は、時刻サーバ１０４との時刻誤差である。そしてプロトコル処理部１１０は処理を終了する。時刻サーバ１０１に対して異常があることを検知した場合には（ステップＳ２９：ＹＥＳ）、プロトコル処理部１１０は、ステップＳ２３で計算した時刻誤差をサーボ１１１へ出力する。この時刻誤差は、時刻サーバ１０４との時刻誤差である。サーボ１１１は入力された時刻誤差を用いてクロック１１２への操作量を計算し、操作量をクロック１１２へ出力する（ステップＳ３０）。その後ステップＳ３２に進む。
【００４１】
また、ステップＳ２５で、時刻サーバ１０１に対して異常があることを検知した場合（ステップＳ２５：ＹＥＳ）、プロトコル処理部１１０は、ステップＳ３１で記憶部１１３に記憶させた時刻サーバ１０４との時刻誤差及びSyncメッセージに含まれる時刻情報を用いて、現在の時刻誤差として推定される時刻誤差を再計算する（ステップＳ２６）。例えば、プロトコル処理部１１０は、記憶部１１３に記憶させた時刻サーバ１０４との時刻誤差を推定時刻誤差とする。または、プロトコル処理部１１０は、前回時刻サーバ１０４からSyncメッセージを受信した時刻をT１、現在の時刻をT2、記憶部１１３に記憶させた時刻サーバ１０４との時刻誤差をEとし、（T2−T1）、Eおよびあらかじめ設定された値をかけた値を推定時刻誤差とする。そして、プロトコル処理部１１０は、再計算した時刻誤差をサーボ１１１へ出力する。サーボ１１１は入力された時刻誤差を用いてクロック１１２への操作量を計算し、操作量をクロック１１２へ出力する（ステップＳ２７）。その後ステップＳ３２に進む。
【００４２】
以上の時刻同期処理を通信装置１０６は時刻サーバ１０１，１０４からSyncメッセージを受信する度に行うことで、サーボ１１１に時刻誤差を出力する時間間隔がある一定以上にならないようにすることができ、クロック１１２のクロックレートを間断なく調節することができる。具体的には、通信装置１０６は、時刻サーバ１０１からのSyncメッセージを定期的に受信できなくなった場合や、時刻サーバ１０１の時刻に異常を検知した場合に、クロック１１２のクロックレートの調節に、時刻サーバ１０１から受信したSyncメッセージを用いず、時刻サーバ１０４から最近受信したSyncメッセージを用いることで、通信装置１０６の時刻のずれを解消させることができる。即ち、時刻サーバ１０１または時刻サーバ１０４いずれかのSyncメッセージから得られた時刻誤差を常にサーボ１１１に出力するので、時刻サーバ１０１の異常時であっても時刻サーバ１０４が正常であればこの時刻に合わせることができるため、通信装置１０６の時刻のずれを解消させることができる。従って、同一ネットワーク上に複数の時刻サーバを設置して冗長化した場合、時刻サーバの異常時に通信装置の時刻精度を維持することが可能になる。
【００４３】
[第２の実施の形態]
次に、通信装置及び時刻同期システムの第２の実施の形態について説明する。なお、上述の第１の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００４４】
本実施の形態においては、通信装置１０６のプロトコル処理部１１０は、上述した時刻同期処理の際に、時刻サーバ１０１の正常時及び時刻サーバ１０４の正常時において、Syncメッセージの送信元の時刻サーバが主時刻サーバであるか副時刻サーバであるかに関わらず、Syncメッセージを用いて時刻誤差を計算して、サーボ１１１へ出力する。一方、プロトコル処理部１１０は、Syncメッセージの送信元の時刻サーバに対して異常があると検知した場合及び異常があると過去に検知した場合、Syncメッセージを用いた時刻誤差の計算を行わず、時刻同期処理を終了する。つまり、プロトコル処理部１１０は、異常を検知されていない時刻サーバから受信したSyncメッセージだけを用いて時刻誤差を計算し、サーボ１１１へ出力する。また、Syncメッセージの送信元の時刻サーバに対して異常があると検知した場合、プロトコル処理部１１０は、当該時刻サーバが時刻サーバ１０１，１０４のいずれであるかを示すと共に、当該時刻サーバに対して異常があることを示す異常検知データを記憶部１１３に記憶させる。プロトコル処理部１１０は、この異常検知データを参照することにより、Syncメッセージの送信元の時刻サーバに対して異常があると過去に検知したか否かを判断することができる。その他の通信装置１０６の構成及び時刻同期システムの構成については上述の第１の実施の形態と同様である。
【００４５】
次に、本実施の形態にかかる通信装置１０６が行う時刻同期処理の手順について図９を用いて説明する。尚、時刻同期システムで行う時刻同期通信処理の手順は図７を用いて上述の第１の実施の形態で説明した通りである。通信装置１０６は、時刻サーバ１０１又は時刻サーバ１０４から定期的に送信されるSyncメッセージを受信した後、時刻同期処理を行う。ステップＳ２１〜Ｓ２３の処理は上述の第１の実施の形態と同様である。ステップＳ４０では、通信装置１０６のプロトコル処理部１１０は、Syncメッセージの送信元の時刻サーバに対して異常の有無、及び異常があると過去に検知したか否かを判断する。時刻サーバに対して異常の有無を検知する方法は、例えば、上述の第１の実施の形態で説明した時刻サーバの時刻の異常の有無を検知する方法と同様である。Syncメッセージの送信元の時刻サーバに対して異常があると過去に検知したか否かの判断は、プロトコル処理部１１０は、当該時刻サーバに対して異常があると示す異常検知データが記憶部１１３に記憶されているか否かを判断することにより行う。
【００４６】
プロトコル処理部１１０は、Syncメッセージの送信元の時刻サーバに対して異常を検知せず、かつ異常があると過去に検知していないと判断した場合（ステップＳ４０：ＮＯ）、上述のステップＳ２８，Ｓ３０と同様にして、ステップＳ２３で計算した時刻誤差をサーボ１１１へ出力する。サーボ１１１は入力された時刻誤差を用いてクロック１１２への操作量を計算し、操作量をクロック１１２へ出力する（ステップＳ４１）。その後のステップＳ３２は上述の第１の実施の形態と同様である。
【００４７】
一方、プロトコル処理部１１０は、Syncメッセージの送信元の時刻サーバに対して異常があることを検知した場合（ステップＳ４０：ＹＥＳ）、当該時刻サーバが時刻サーバ１０１，１０４のいずれであるかを示すと共に、当該時刻サーバに対して異常があることを示す異常検知データを記憶部１１３に記憶させて、時刻同期処理を終了する。また、プロトコル処理部１１０は、異常があると過去に検知したと判断した場合も（ステップＳ４０：ＹＥＳ）、同様に、時刻同期処理を終了する。
【００４８】
以上の時刻同期処理を通信装置１０６は時刻サーバ１０１，１０４からSyncメッセージを受信する度に行う。このような処理では、通信装置１０６は、Syncメッセージの送信元に時刻サーバが主時刻サーバか副時刻サーバかに関わらず、かつSyncメッセージの送信元の時刻サーバに対して異常を検知しない限り、受信したSyncメッセージを利用してクロック１１２のクロックレートを調節する。そして、時刻サーバ１０１又は時刻サーバ１０４の異常を検知した後は、通信装置１０６は、正常な時刻サーバから受信したSyncメッセージのみをクロック１１２の調節に利用する。
【００４９】
以上のような構成によれば、通信装置１０６は、時刻サーバ１０１の時刻に異常があった場合又は時刻サーバ１０１からSyncメッセージを受信できなくなった場合でも、時刻サーバ１０４からのSyncメッセージを利用してクロック１１２のクロックレートを間断なく調節することができる。また、第１の実施形態と同様に、VLANを利用することで、時刻サーバ１０１及び時刻サーバ１０４は互いに通信できないため、一方の異常がもう一方へ影響することを防ぐことができる。また、正常時に時刻サーバ１０１及び時刻サーバ１０４から受信したSyncメッセージ両方を利用してクロック１１２のクロックレートを調節するため、クロック１１２を調節する間隔は第１の実施形態よりも短くなる。このため、本実施の形態においては、通信装置１０６の時刻精度をより良く維持することが可能になる。
【００５０】
[第３の実施の形態]
次に、通信装置及び時刻同期システムの第３の実施の形態について説明する。なお、上述の第１の実施の形態又は第２の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００５１】
上述の第１の実施の形態においては、主時刻サーバである時刻サーバ１０１に対して異常があった場合、時刻を同期させる対象を副時刻サーバである時刻サーバ１０４に切り替える構成について説明した。本実施の形態においては、時刻を同期させる対象を副時刻サーバである時刻サーバ１０４に切り替えた後、時刻を同期させる対象を時刻サーバ１０１に復帰させる構成について説明する。本実施の形態においては、通信装置１０６が時刻サーバ１０１に対して異常があることを検知した後、時刻サーバ１０１をオペレータが復旧してスイッチ１０２に接続させ、時刻サーバ１０１がAnnounceメッセージ及びSyncメッセージを送信し始めた時に、通信装置１０６のネットワークインタフェース１０７は、これらを受信する。これらを受信したときに実現されるネットワークインタフェース１０７及びネットワークコントローラ１０８の各機能については上述の第１の実施の形態と同様である。プロトコル処理部１１０は、時刻サーバ１０１から送信されたSyncメッセージを用いて、時刻誤差を計算するが、時刻サーバ１０１の時刻が正常且つ安定した場合に、時刻を同期させる対象を時刻サーバ１０１に復帰させ、計算した時刻誤差をサーボ１１１に出力する。一方、時刻サーバ１０１の時刻が異常又は正常であっても安定していない場合、プロトコル処理部１１０は、時刻を同期させる対象を時刻サーバ１０１に復帰させず、計算した時刻誤差を記憶部１１３に記憶させる。その他の通信装置１０６の構成及び時刻同期システムの構成については上述の第１の実施の形態と同様である。
【００５２】
次に、本実施の形態にかかる通信装置１０６が行う時刻同期処理の手順について図１０を用いて説明する。尚、時刻同期システムで行う時刻同期通信処理の手順は図７を用いて上述の第１の実施の形態で説明した通りである。図１０においては、通信装置１０６が、時刻を同期させる対象を主時刻サーバである時刻サーバ１０１から副時刻サーバである時刻サーバ１０４に切り替え、時刻サーバ１０４から受信したSyncメッセージを利用して時刻を同期させている場合に、時刻サーバ１０１からSyncメッセージを受信した後の手順について示されている。ステップＳ２１〜Ｓ２３の処理は上述の第１の実施の形態と同様である。ステップＳ５０では、プロトコル処理部１１０は、ステップＳ２３で計算した時刻サーバ１０１の時刻が正常且つ安定しているかを検知する。時刻サーバ１０１の時刻の異常の有無を検知する方法は、上述の第１の実施の形態と同様である。時刻サーバ１０１の時刻が正常且つ安定している場合とは、例えば、ステップＳ２３で計算した時刻サーバ１０１との時刻誤差及び過去の一定期間において計算されて記憶部１１３に記憶された時刻サーバ１０１との時刻誤差が、所定値以下（例えば、１μ秒）である場合である。
【００５３】
プロトコル処理部１１０は、時刻サーバ１０１の時刻が正常且つ安定していると検知した場合（ステップＳ５０：ＹＥＳ）、ステップＳ２３で計算した時刻誤差をサーボ１１１へ出力する。サーボ１１１は入力された時刻誤差を用いてクロック１１２への操作量を計算し、操作量をクロック１１２へ出力する（ステップＳ５１）。その後のステップＳ３２は上述の第１の実施の形態と同様である。一方、プロトコル処理部１１０は、時刻サーバ１０１の時刻が異常又は正常であっても安定していないと検知した場合（ステップＳ５０：ＮＯ）、ステップＳ２３で計算した時刻誤差を記憶部１１３に記憶させる（ステップＳ５２）。この時刻誤差は、次回以降のステップＳ５０の検知に用いられる。
【００５４】
以上のように、本実施の形態においては、通信装置１０６は、時刻サーバ１０１からSyncメッセージを受信しても、時刻を同期させる対象を時刻サーバ１０４から時刻サーバ１０１へ直ちに切替えるのではなく、一定期間、時刻サーバ１０１から受信したSyncメッセージを用いて計算された時刻誤差を検証して、時刻サーバ１０１の時刻が正常且つ安定していると検知した場合に、時刻を同期させる対象を時刻サーバ１０１へ切替える。このような構成によれば、復旧した時刻サーバ１０１の時刻に異常があった場合でも、その異常の影響を受けることなく、通信装置１０６の時刻精度を維持することができる。また、第１の実施形態と同様に、VLANを利用することで、時刻サーバ１０１及び時刻サーバ１０４は互いに通信できないため、一方の異常がもう一方へ影響することを防ぐことができる。
【００５５】
なお、通信装置１０６は、時刻サーバ１０１の時刻が正常且つ安定していることを検知した以降は、図８や図９にその手順を示した時刻同期処理を行うようにしても良い。
【００５６】
[第４の実施の形態]
次に、通信装置及び時刻同期システムの第４の実施の形態について説明する。なお、上述の第１の実施の形態乃至第３の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。
【００５７】
上述の実施の形態においては、クロック１１２は、クロックレートを変更できる発振器であるとした。本実施の形態においては、クロックとして、クロックレートを変更できない発振器を用いる。このようなクロックを用いると、クロックの時刻スピードが時刻サーバ１０１又は時刻サーバ１０４と異なる場合、そのクロックカウンタは時刻サーバ１０１又は時刻サーバ１０４の時刻から徐々に離れていくことになる。図１１は、本実施の形態にかかる時刻同期システムの構成を例示する図である。同図に示されるように、本実施の形態に係る時刻同期システムでは、通信装置１０６は、図１に例示したクロック１１２の代わりにクロック９１２を備え、サーボ１１１の代わりにサーボ９１１を備え、アプリケーション１１５の代わりにアプリケーション９１５を備える。
【００５８】
尚、本実施の形態においては、プロトコル処理部１１０は、時刻サーバ１０１に対する異常の有無を検知しない。代わりに、サーボ９１１は、時刻サーバ１０１の時刻の異常の有無及びクロックレートの異常の有無を検知する。また、サーボ９１１は、時刻サーバ１０１から受信されたSyncメッセージを用いて補正データを計算し、時刻サーバ１０４から受信されたSyncメッセージを用いて補正データを計算し、計算した補正データをそれぞれ記憶部１１３に記憶させる。図１２は、補正データを例示する図である。同図に例示されるように、補正データは、Syncメッセージ受信時の時刻サーバにおける時刻（Syncメッセージに含まれるSyncメッセージの送信時刻にSyncメッセージのCorrectionフィールの値を加え、通信装置１０６とスイッチ１１４の間の通信遅延時間を減じた値）、Syncメッセージ受信時のクロック９１２のクロックカウンタ、及びSyncメッセージ受信時における時刻サーバに対するクロック９１２のクロックレートの違いによる１秒あたりの時刻誤差を対応付けて示すものである。
【００５９】
また、サーボ９１１は、クロック９１２へ操作量を出力するのではなく、アプリケーション９１５からの要求に応じて、クロック９１２からクロックカウンタを取得し、記憶部１１３に記憶された後述の参照サーバ値によって示される時刻サーバに対する補正データを用いて現在時刻を計算して、これをアプリケーション９１５へ出力する。例えば、クロック９１２が２５MHzの水晶発振器の場合、サーボ９１１は以下の式１により現在時刻を計算する。
現在時刻(秒)＝  Syncメッセージ受信時の時刻サーバにおける時刻+(クロックカウンタ-Syncメッセージ受信時のクロックカウンタ)/25/1000000*(1+クロックレートの違いによる1秒当りの時刻誤差[n秒]/1000000000)・・・（式１）
【００６０】
つまり、本実施の形態においては、通信装置１０６は、クロック９１２のクロックレートを調節するのではなく、現在時刻を必要とするときにクロック９１２のクロックカウンタを読み取り現在時刻へ変換する。このため、サーボ９１１は、クロックカウンタから現在時刻への変換に必要な補正データを、Syncメッセージを受信する度に計算して、当該補正データを記憶部１１３へ記憶させる。
【００６１】
また、サーボ９１１は、時刻サーバ１０１又は時刻サーバ１０４のいずれに対する補正データを用いるかを示す値（参照サーバ値という）を記憶部１１３に記憶する。具体的には、サーボ９１１は、時刻サーバ１０１の時刻に異常がある又はクロックレートが異常であることを検知した場合、時刻サーバ１０４に対する補正データを用いることを示すよう参照サーバ値を記憶部１１３において更新する。また、サーボ９１１は、時刻サーバ１０４の時刻に異常がある又はクロックレートが異常であることを検知した場合、副時刻サーバである時刻サーバ１０４が異常であることを示す値（副時刻サーバ異常値という）を記憶部１１３に記憶させる。
【００６２】
記憶部１１３は、時刻サーバ１０１に対する補正データおよび時刻サーバ１０４に対する補正データと、参照サーバ値と、副時刻サーバ異常値とを記憶する。アプリケーション９１５は、クロック９１２ではなく、サーボ９１１から現在時刻を取得する。その他の通信装置１０６の構成及び時刻同期システムの構成については上述の第１の実施の形態と同様である。
【００６３】
次に、本実施の形態にかかる通信装置１０６が行う時刻同期処理の手順について図１３を用いて説明する。尚、時刻同期システムで行う時刻同期通信処理の手順は図７を用いて上述の第１の実施の形態で説明した通りである。通信装置１０６は、時刻サーバ１０１又は時刻サーバ１０４から定期的に送信されるSyncメッセージを受信した後、時刻同期処理を行う。ステップＳ２１〜Ｓ２２の処理は上述の第１の実施の形態と同様である。ステップＳ２３では、通信装置１０６のプロトコル処理部１１０は、Syncメッセージ及びタイムスタンプを受け取ると、Syncメッセージを送信した時刻サーバとの時刻誤差を計算するが、このとき、本実施の形態では、タイムスタンプと、記憶部１１３に記憶された参照サーバ値によって示される時刻サーバに対する補正データとを用いて、Syncメッセージ受信時刻を計算し、当該受信時刻、Syncメッセージに含まれる時刻情報、通信装置１０６とスイッチ１１４との間の通信遅延時間及びIEEE１５８８で規定された方法を用いて、時刻サーバとの時刻誤差を計算する。尚、Syncメッセージを送信した時刻サーバと、参照サーバ値によって示される時刻サーバとは必ずしも同じではない。そして、プロトコル処理部１１０は、計算した時刻誤差をサーボ９１１へ出力する。
【００６４】
サーボ９１１は、時刻誤差を入力とするPID制御を用いてクロック９１２のクロックレートを計算する（ステップＳ６０）。そして、サーボ９１１は、計算したクロックレートを用いて、クロックレートの違いによる１秒当たりの時刻誤差を計算し、この値を、記憶部１１３に記憶された補正データであって、Syncメッセージを送信した時刻サーバに対する補正データにおいて更新する。また、サーボ９１１は、当該補正データにおける、Syncメッセージ受信時の時刻サーバにおける時刻及びSyncメッセージ受信時のクロック９１２のクロックカウンタを更新する（ステップＳ６１）。また、ステップＳ２４では、プロトコル処理部１１０は、Syncメッセージに付加されたVLANヘッダに含まれるVLAN  IDが、主時刻サーバである時刻サーバ１０１に付与されたものか時刻サーバ１０４に付与されたものかを判断して、その判断結果をサーボ９１１に出力する。VLAN  IDが時刻サーバ１０１に付与されたものであると判断された場合（ステップＳ２４：ＹＥＳ）、サーボ９１１は時刻サーバ１０１の時刻の異常の有無及びクロックレートが異常であるか否かを検知する（ステップＳ６２）。サーボ９１１が時刻サーバ１０１の時刻の有無を検知する方法は、例えば、上述の第１の実施の形態でプロトコル処理部１１０が行ったものと同様である。クロックレートが異常である場合とは、例えば、ステップＳ６０で計算したクロックレートと、時刻サーバ１０４に対するクロックレートとの差または比が予め設定された値以上である場合である。なお、ステップS62において、サーボ９１１は時刻サーバ１０４に対する補正データにおける、クロックレートの違いによる1秒当りの時刻誤差を用いてクロックレートを計算する。
【００６５】
そして、サーボ９１１は、時刻サーバ１０１の時刻に異常がない及びクロックレートが異常でないことを検知した場合（ステップＳ６２：ＮＯ）、時刻同期処理を終了する。一方、サーボ９１１は、時刻サーバ１０１の時刻に異常がある又はクロックレートが異常であることを検知した場合（ステップＳ６２：ＹＥＳ）、時刻サーバ１０４に対する補正データを用いることを示すよう参照サーバ値を記憶部１１３において更新し（ステップＳ６３）、時刻同期処理を終了する。
【００６６】
また、ステップＳ２４で、VLAN  IDが時刻サーバ１０４に付与されたものであると判断された場合も（ステップＳ２４：ＮＯ）、サーボ９１１は、ステップＳ６２と同様にして、時刻サーバ１０４の時刻の異常の有無及びクロックレートが異常であるか否かを検知する（ステップＳ６４）。そして、サーボ９１１は、時刻サーバ１０４の時刻に異常がない及びクロックレートが異常でないことを検知した場合（ステップＳ６４：ＮＯ）、時刻同期処理を終了する。一方、サーボ９１１は、時刻サーバ１０４の時刻に異常がある又はクロックレートが異常であることを検知した場合（ステップＳ６４：ＹＥＳ）、副時刻サーバである時刻サーバ１０４が異常であることを示す副時刻サーバ異常値を記憶部１１３に記憶させ（ステップＳ６５）、時刻同期処理を終了する。
【００６７】
以上の時刻同期処理を通信装置１０６は時刻サーバ１０１，１０４からSyncメッセージを受信する度に行う。尚、プロトコル処理部１１０は、所定時間以上経っても時刻サーバ１０１からAnnounceメッセージまたはSyncメッセージを受信できない場合、時刻サーバ１０４に対する補正データを用いることを示すよう参照サーバ値を記憶部１１３において更新するようにしても良い。また、時刻サーバ１０４の時刻が異常であることが検知され、副時刻サーバ異常値が記憶部１１３に記憶されている場合に、時刻サーバ１０１からSyncメッセージが受信された場合、サーボ９１１は、ステップＳ６２で、時刻サーバ１０１に対して異常があると検知した場合、ステップＳ６３を行わないようにしても良い。
【００６８】
以上のような構成によれば、クロック９１２がクロックレートを変更できるものでなくても、通信装置１０６は、時刻サーバ１０１の時刻に異常がある場合、又は時刻サーバ１０１から定期的にSyncメッセージを受信できなくなった場合に、時刻誤差の計算に用いる補正データを時刻サーバ１０４に対する補正データに切替えることで、アプリケーション９１５が取得する時刻の精度を維持することが可能になる。また、第１の実施形態と同様に、VLANを利用することで、時刻サーバ１０１及び時刻サーバ１０４は互いに通信できないため、一方の異常がもう一方へ影響することを防ぐことができる。更に、時刻サーバ１０１の時刻に異常が起こっても、時刻サーバ１０４に対する補正データに影響がないため、通信装置１０６は時刻精度を正常な状態に瞬時に戻すことができる。
【００６９】
[第５の実施の形態]
次に、通信装置及び時刻同期システムの第５の実施の形態について説明する。なお、上述の第１の実施の形態乃至第４の実施の形態と共通する部分については、同一の符号を使用して説明したり、説明を省略したりする。本実施の形態にかかる通信装置１０６の構成及び時刻同期システムの構成は、第４の実施の形態と同様である。第４の実施の形態においては、主時刻サーバである時刻サーバ１０１に対して異常があった場合、時刻誤差の計算に用いる補正データを副時刻サーバである時刻サーバ１０４に対する補正データに切り替える構成について説明した。本実施の形態においては、時刻誤差の計算に用いる補正データを時刻サーバ１０４に対する補正データに切り替えた後、時刻サーバ１０１に対する補正データに復帰させる構成について説明する。
【００７０】
本実施の形態においては、通信装置１０６が時刻サーバ１０１に対して異常があることを検知した後、時刻サーバ１０１をオペレータが復旧してスイッチ１０２に接続させ、時刻サーバ１０１がAnnounceメッセージ及びSyncメッセージを送信し始めた時に、通信装置１０６のネットワークインタフェース１０７は、これらを受信する。これらを受信したときに実現されるネットワークインタフェース１０７及びネットワークコントローラ１０８の各機能については上述の第１の実施の形態と同様である。プロトコル処理部１１０は、時刻サーバ１０１から送信されたSyncメッセージを用いて時刻誤差を計算し、これを用いてサーボ９１１はクロックレートを計算するが、時刻サーバ１０１の時刻が正常且つクロックレートが安定した場合に、時刻サーバ１０１に対する補正データを用いることを示すよう参照サーバ値を記憶部１１３において更新する。一方、時刻サーバ１０１の時刻が異常又は正常であってもクロックレートが安定していない場合、サーボ９１１は、参照サーバ値を更新しない。その他の通信装置１０６の構成及び時刻同期システムの構成については上述の第１の実施の形態と同様である。
【００７１】
次に、本実施の形態にかかる通信装置１０６が行う時刻同期処理の手順について図１４を用いて説明する。尚、時刻同期システムで行う時刻同期通信処理の手順は図７を用いて上述の第１の実施の形態で説明した通りである。図１４においては、通信装置１０６が、時刻誤差の計算に用いる補正データを時刻サーバ１０４に対する補正データに切り替え、時刻サーバ１０４から受信したSyncメッセージを利用して時刻を同期させている場合に、時刻サーバ１０１からSyncメッセージを受信した後の手順について示されている。ステップＳ２１〜Ｓ２３の処理は上述の第１の実施の形態と同様である。ステップＳ６０〜Ｓ６１の処理は上述の第４の実施の形態と同様である。ステップＳ７０では、サーボ９１１は、時刻サーバ１０１の時刻が正常且つクロックレートが安定しているか否かを検知する。時刻サーバ１０１の時刻が正常である場合とは、例えば、時刻サーバ１０１から受信したSyncメッセージを用いて計算した、過去一定回数の時刻誤差が連続して設定された値以内である場合である。クロックレートが安定している場合とは、例えば、過去一定回数の時刻サーバ１０１に対するクロックレート全てに対して、記憶部１１３に記憶された時刻サーバ１０４に対するクロックレートとの差または比が、設定された値以内である場合である。
【００７２】
そして、サーボ９１１は、時刻サーバ１０１の時刻が正常且つクロックレートが安定していることを検知した場合（ステップＳ７０：ＹＥＳ）、参照サーバ値が時刻サーバ１０１を示すように参照サーバ値を記憶部１１３において更新する（ステップＳ７１）。サーボ９１１は、時刻サーバ１０１の時刻が異常又はクロックレートが安定していないことを検知した場合（ステップＳ７０：ＮＯ）、時刻同期処理を終了する。
【００７３】
以上のような構成によれば、クロック９１２がクロックレートを変更できるものでなくても、通信装置１０６は、復旧した時刻サーバ１０１の時刻に異常がある場合やクロックレートが安定していない場合でも、時刻誤差の計算に時刻サーバ１０４に対する補正データを用いることで、時刻サーバ１０１の時刻の異常の影響を受けることなく、通信装置１０６の時刻精度を維持することができる。また、第１の実施形態と同様に、VLANを利用することで、時刻サーバ１０１及び時刻サーバ１０４は互いに通信できないため、一方の異常がもう一方へ影響することを防ぐことができる。
【００７４】
なお、通信装置１０６は、時刻サーバ１０１の時刻が正常且つクロックレートが安定していることを検知した以降は、図１３にその手順を示した時刻同期処理を行うようにしても良い。
【００７５】
[変形例]
なお、本発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、前記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。また、以下に例示するような種々の変形が可能である。
【００７６】
上述した各実施の形態において、通信装置１０６で実行される各種プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また当該各種プログラムを、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録してコンピュータプログラムプロダクトとして提供するように構成しても良い。
【００７７】
上述した第１の実施の形態乃至第３の実施の形態において、時刻サーバ１０１，１０４は、各々異なるスイッチ１０２，１０３を介してネットワーク１０５に接続したが、同一のスイッチを介してネットワーク１０５に接続しても良い。また、時刻サーバ１０１、時刻サーバ１０４及び通信装置１０６は、同一のスイッチを介してネットワーク１０５に接続しても良い。この場合も、上述の当該実施の形態と同様にして、時刻サーバ１０１，１０４はそれぞれVLANヘッダが付加されていないメッセージを送受信し、通信装置１０６は時刻サーバ１０１及び時刻サーバ１０４と通信する際は、各々に付与されたVLAN  IDを含むVLANヘッダを付加したメッセージを送受信すれば良い。
【００７８】
上述した第１の実施の形態乃至第３の実施の形態において、クロック１１２は、クロックレートを変更できる発振器であれば、水晶発振器やAdder  Based  Clockに限らない。
【００７９】
上述した第１の実施の形態乃至第５の実施の形態においては、IEEE１５８８が規定するように、スイッチ１０２、スイッチ１０３及びスイッチ１１４は、Syncメッセージを受信してから転送を完了するまでの時間を保持しても良い。そして、時刻サーバ１０１,１０４はSyncメッセージ送信直後にSyncメッセージの送信時刻を示す時刻情報を含むFollow_Upメッセージを送信しても良い。また、スイッチ１０２、スイッチ１０３、スイッチ１１４はFollow_UpメッセージにSyncメッセージの転送処理時間および隣接するIEEE１５８８機器までの通信遅延をFollow_UpメッセージのCorrectionフィールドにセットされた値に加算した値を、Follow_UpメッセージのCorrectionフィールドにセットするようにしても良い。その場合、通信装置１０６のプロトコル処理部１１０は、Syncメッセージに加えてFollow_Upメッセージにセットされた、Syncメッセージの送信時刻を示す時刻情報およびCorrectionフィールドの値を用いて、時刻サーバ１０１または時刻サーバ１０４との時刻誤差を計算する。
【００８０】
上述した第１の実施の形態乃至第５の実施の形態においては、通信装置１０６、スイッチ１１４、スイッチ１０２、スイッチ１０３はPeer  to  peer  delay  mechanismで隣接するIEEE１５８８との間の通信遅延を測定しなくても良い。その場合、通信装置１０６はIEEE１５８８に規定されたEnd  to  End  delay  mechanismを用いて通信装置１０６と時刻サーバ１０１との間の通信遅延、および通信装置１０６と時刻サーバ１０４との間の通信遅延を測定する。そしてスイッチ１１４、スイッチ１０２、およびスイッチ１０３はSyncメッセージを受信すると、Syncメッセージの転送処理時間のみをSyncメッセージのCorrectionフィールドにセットされた値に加算し、SyncメッセージのCorrectionフィールドにセットする。
【００８１】
End  to  End  delay  mechanismに加えてFollow_Upメッセージを用いる場合、スイッチ１１４、スイッチ１０２およびスイッチ１０３はSyncメッセージの代わりにFollow_UpメッセージのCorrectionフィールドにSyncメッセージの転送処理時間のみをFollow_UpメッセージのCorrectionフィールドの値に加えてFollow_UpメッセージのCorrectionフィールドにセットする。
【００８２】
上述した第１の実施の形態乃至第５の実施の形態においては、図８〜１０のステップＳ２３において、プロトコル処理部１１０は、時刻サーバ１０１から過去に受信したSyncメッセージに含まれる時刻情報を用いて、時刻スピードの違いであるスキューを計算し、サーボ１１１へ出力しても良い。この場合、プロトコル処理部１１０は、時刻サーバ１０１に対してステップＳ２３で計算したスキューを記憶部１１３に記憶させる。また、ステップＳ２７，Ｓ２８，Ｓ３０では、サーボ１１１はスキューを用いて操作量を計算する。また、ステップＳ３１では、プロトコル処理部１１０は、時刻サーバ１０４に対するスキューを記憶部１１３に記憶させる。
【００８３】
上述した第１の実施の形態乃至第３の実施の形態においては、時刻サーバ１０１，１０４の他に新たな時刻サーバをEthernet（登録商標）スイッチを介してネットワーク１０５へ接続しても良い。この場合、通信装置１０６は、時刻サーバ１０１又は時刻サーバ１０４が正常のときに新たな時刻サーバからSyncメッセージを受信すると、ステップＳ３１の処理を行う。そして、時刻サーバ１０１のみに対して異常があった場合、時刻サーバ１０４からSyncメッセージを受信すると、通信装置１０６はＳ３０，Ｓ３２の処理を行う。さらに、時刻サーバ１０１及び時刻サーバ１０４の両方に対して異常があった場合、新たな時刻サーバからSyncメッセージを受信すると、通信装置１０６はステップＳ２６〜２７，Ｓ３２の処理を行う。
【００８４】
また、この場合、通信装置１０６は、全ての時刻サーバが正常であると判断し、且つ時刻サーバ１０１、時刻サーバ１０４、又は新たな時刻サーバからSyncメッセージを受信した時、ステップＳ２３において計算した時刻誤差について、いずれかの時刻サーバとの時刻誤差が他の二台の時刻サーバの時刻誤差よりも大きく離れている場合（例えば、2μ秒など）、その時刻サーバに対して異常があると検知しても良い。このように、時刻サーバを３台時刻同期システムに設置することで、時刻の異常がある時刻サーバを多数決により特定することができる。
【００８５】
上述した第４の実施の形態又は第５の実施の形態においても、時刻サーバ１０１，１０４の他に新たな時刻サーバをEthernet（登録商標）スイッチを介してネットワーク１０５へ接続しても良い。この場合、サーボ９１１は、それぞれの時刻サーバに対する補正データを記憶部１１３に記憶させる。そして、サーボ９１１は、時刻サーバ１０１、時刻サーバ１０４、新たな時刻サーバの順に優先度が高いとして、正常な時刻サーバを示す参照サーバ値を記憶部１１３に記憶させる。このような構成によっても、時刻の異常がある時刻サーバを多数決により特定することができる。
【００８６】
上述した第３の実施の形態又は第５の実施の形態においては、通信装置１０６のプロトコル処理部１１０は、時刻を同期させる対象を時刻サーバ１０４から時刻サーバ１０１に自動的に切替えるのではなく、オペレータからの指示があった場合に切替えても良い。例えば、通信装置１０６は、情報を表示するディスプレイ等の出力部とオペレータからの操作が入力されるスイッチ等の操作入力部を備え、ステップＳ５０で、プロトコル処理部１１０が、時刻サーバ１０１の時刻が正常且つ安定していることを検知した場合、切替え準備が調った旨を示すメッセージを出力部に表示させ、入力部を介してオペレータからの操作入力があったときに、時刻を同期させる対象を時刻サーバ１０４から時刻サーバ１０１に切替えても良い。また、出力部としては、切替え準備が調った旨を示すメッセージを表示するものではなく、遠隔に設置されたオペレーションセンタへネットワーク１０５を介して当該メッセージを送信するものであっても良い。
【００８７】
第５の実施の形態においても同様に、通信装置１０６のサーボ９１１は、時刻誤差の計算に用いる補正データを、時刻サーバ１０１に対する補正データに自動的に切替えるのではなく、オペレータからの指示があった場合に切替えても良い。この場合も、例えば、通信装置１０６は、ディスプレイ等の出力部とスイッチ等の操作入力部を備え、ステップＳ７０で、サーボ９１１が、時刻サーバ１０１の時刻が正常且つクロックレートが安定していることを検知した場合、切替え準備が調った旨を示すメッセージを出力部に表示させ、入力部を介してオペレータからの操作入力があったときに、時刻誤差の計算に用いる補正データを、時刻サーバ１０１に対する補正データに切替えても良い。この切り替え時に、例えば、サーボ９１１が、時刻サーバ１０１に対する補正データを用いることを示すよう参照サーバ値を記憶部１１３において更新する。また、出力部としては、切替え準備が調った旨を示すメッセージをオペレーションセンタへネットワーク１０５を介して送信するものであっても良い。
【符号の説明】
【００８８】
１０１，１０４  時刻サーバ
１０２，１０３，１１４  スイッチ
１０５  ネットワーク
１０６  通信装置
１０７  ネットワークインタフェース
１０８  ネットワークコントローラ
１０９  ネットワーク処理部
１１０  プロトコル処理部
１１１，９１１  サーボ
１１２，９１２  クロック
１１３  記憶部
１１５，９１５  アプリケーション
【図１】
0005450656.tif 000002
【図２】
0005450656.tif 000003
【図３】
0005450656.tif 000004
【図４】
0005450656.tif 000005
【図５】
0005450656.tif 000006
【図６】
0005450656.tif 000007
【図７】
0005450656.tif 000008
【図８】
0005450656.tif 000009
【図９】
0005450656.tif 000010
【図１０】
0005450656.tif 000011
【図１１】
0005450656.tif 000012
【図１２】
0005450656.tif 000013
【図１３】
0005450656.tif 000014
【図１４】
0005450656.tif 000015