(57)【要約】【課題】既存の同期プロトコルを利用して時刻マスタ機能を冗長化し、時刻同期機能を高信頼化する。【解決手段】ネットワークを介して接続された１または２以上の通信装置と同期パケットを送受信して時刻同期する通信制御装置は、第１の通信装置の第１の同期パケットを観測して得られたパラメータを保存するパラメータ保存部と、前記第１の通信装置の異常が検知された場合に、前記パラメータ及び前記通信制御装置自身の時刻情報をもとに第２の同期パケットを生成するパケット生成部と、前記第２の同期パケットを前記通信装置に送信する通信部とを備える。【選択図】図１
2014183386.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して接続された１または２以上の通信装置と同期パケットを送受信して時刻同期する通信制御装置であって、
第１の通信装置の第１の同期パケットを観測して得られたパラメータを保存するパラメータ保存部と、
前記第１の通信装置の異常が検知された場合に、前記パラメータ及び前記通信制御装置自身の時刻情報をもとに第２の同期パケットを生成するパケット生成部と、
前記第２の同期パケットを前記通信装置に送信する通信部と
を備えることを特徴とする、通信制御装置。
【請求項２】
前記第１の同期パケットを観測して得られたパラメータは、前記第１の通信装置を識別する識別情報または、前記第１の同期パケットのシーケンス番号のいずれかを含む
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項３】
前記パケット生成部は、
前記第１の通信装置の同期した時刻情報をもとに前記第２の同期パケットの時刻情報を生成する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項４】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部は、
前記第１の同期パケットに含まれる時刻情報が０である場合に、前記第１の通信装置に障害が発生していると判定し、前記第１の通信装置の異常を検知する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項５】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部は、
前記第１の同期パケット群の受信間隔と、前記第１の同期パケット群に含まれる時刻情報の間隔をもとに、前記第１の通信装置の異常を検知する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項６】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部は、
前記第１の同期パケット群の受信間隔が、前記第１の同期パケット群に含まれる時刻情報の間隔よりも所定の値大きい場合に、前記第１の通信装置の異常を検知する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項７】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部は、
前記第１の同期パケットに含まれる前記パラメータが、所定の期待値と異なる場合に、前記第１の通信装置の異常を検知する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項８】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部は、
前記第１の同期パケットを所定期間受信しなかった場合に、前記第１の通信装置の異常を検知する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項９】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部は、
前記通信部による前記第１の通信装置との通信結果に基づいて、前記他の通信装置の異常を検知する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１０】
前記障害判定部は、
前記通信部による前記第１の通信装置との通信結果により、前記第１の通信装置からの返信がない場合に、前記他の通信装置の異常を検知する
ことを特徴とする、請求項９に記載の通信制御装置。
【請求項１１】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部により前記第１の通信装置の異常が検知された場合に、
前記通信部は、前記第１のパケットを送信不可とする
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１２】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部により異常が検知された前記第１の通信装置が正常状態となったと判定された場合に、
前記通信部は、前記第２のパケットの送信を停止する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１３】
前記第１の通信装置に障害が発生しているかを判定する障害判定部を備え、
前記障害判定部により前記第１の通信装置の異常が検知された場合に、
前記通信部は、前記第１の通信装置に代わって前記第１の通信装置の時刻の属性情報を送信する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１４】
前記通信部は、
前記第２の同期パケットを所定の周期で送信する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１５】
前記パケット生成部は、
前記通信制御装置が前記第２の同期パケットを生成したことを示す生成情報を前記第２の同期パケットに含める
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１６】
前記パケット生成部は、
前記第２の同期パケットに前記通信制御装置を識別する識別情報を前記第２の同期パケットに含める
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１７】
前記通信制御装置は、他の複数の通信制御装置とネットワークを介して接続され、
前記パケット生成部は、
前記他の複数の通信制御装置のうちいずれかの通信制御装置が前記第１の同期パケットを生成した場合に、前記第２の同期パケットを生成しない
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１８】
前記他の複数の通信制御装置に優先度が設定されている場合に、
前記通信部は、前記設定された優先度が最も高い場合に、前記第２の同期パケットを送信する
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項１９】
前記通信部は、前記設定された優先度に基づいて、前記第２の同期パケットを時分割に送信する
ことを特徴とする、請求項１８に記載の通信制御装置。
【請求項２０】
ネットワーク中継装置を備え、
前記通信部は、前記ネットワーク中継装置を設定して、前記第１のパケットを通信不可とする
ことを特徴とする、請求項１に記載の通信制御装置。
【請求項２１】
少なくとも２つの通信装置がネットワークを介して時刻同期する通信システムであって、
一の通信装置の第１の同期パケットを観測してパラメータを保存し、
前記一の通信装置の異常が検知された場合に、他の通信装置が、前記パラメータ及び前記他の通信装置の時刻情報をもとに第２の同期パケットを生成し、
前記他の通信装置が前記第２の同期パケットを送信する
ことを特徴とする、通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置及び通信システムに関し、通信装置間の時刻を同期させる通信制御装置及び通信システムに適用して好適なるものである。
【背景技術】
【０００２】
分散されて構成される制御システムにおいては、実現するアプリケーションに応じて、接続端末間の時刻を同期することが求められる場合がある。ネットワークで接続された分散制御システムの場合は、ネットワークを介した時刻同期パケットの送受信によって、時刻を同期することができる。
【０００３】
例えば、産業用製造装置の場合、ロボットアーム、チップマウンタ、工作機械テーブル等の制御対象を複数のサーボモータで動作をさせる。これらの制御対象に所望の動作をさせるためには、制御対象の複数のサーボモータを同期して制御する必要がある。その他、時刻同期の応用としては、計測、測定の分野や、マルチメディア、無線通信等の基地局、電力系統の分野などが挙げられる。
【０００４】
ネットワークを用いた時刻同期方式としては、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）、ＳＮＴＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）、ＩＥＣ６１１５８、ＩＥＣ６１７８４−２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２（以下、ＥｔｈｅｒＣＡＴ（登録商標）とする）、ＩＥＥＥ１５８８等の同期プロトコルが挙げられる。
【０００５】
上記の同期プロトコルを利用して、ネットワーク上で時刻情報パケットを送受信し、通信装置間の通信遅延を計測することで、通信装置間の時刻を同期させることができる。時刻を同期させる際には、ネットワーク上で、基準となる時刻情報を提供する通信装置（以下、時刻マスタとする）を決定し、残りの通信装置（以下、時刻スレーブとする）を時刻マスタに同期させる。なお、時刻マスタ、時刻スレーブは固定的な機能ではなく、時刻同期の際の役割であるため、時刻同期プロトコルによって、各通信装置が動的に時刻マスタ、時刻スレーブのいずれにもなりうる。
【０００６】
高可用性が求められる高信頼な制御システムにおいては、時刻マスタの障害によるシステム停止を防止することが求められる。一般的な対策としては、時刻マスタの二重化等の多重化が挙げられる。例えば、ＩＥＥＥ１５８８では、時刻マスタの障害時に他の通信装置が代替することができる。しかし、時刻マスタの障害を検出するまでに所定のタイムアウト期間を待機しなければならず、その間、通信装置間の同期処理が実行されない。さらに、時刻マスタが冗長化されていても、時刻スレーブが、時刻同期のための制御パラメータを初期化することによる過渡的な誤差が生じる可能性がある。
【０００７】
このように、制御システムの高信頼化のために時刻マスタを冗長化した場合、時刻マスタの切り替り時において、同期精度が悪化するという問題があった。そこで、特許文献１では、複数の時刻マスタを同時に機能させ、時刻スレーブでは、複数の時刻マスタからの時刻情報と、各時刻マスタまでの通信遅延を所定の方法で組み合わせて同期することにより、一つの時刻マスタの障害による影響を低減する技術が開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−２３６５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかし、上記特許文献１では、複数の時刻マスタが同時に機能するために、時刻同期用のパケットによる通信量が増大し、制御システムでの有効な通信帯域を低下させるという問題があった。さらに、一般的な時刻同期プロトコルでは、このような動作は規定されておらず、これらの規格に準拠した端末装置でのシステム構成が困難であった。
【００１０】
本発明は以上の点を考慮してなされたもので、既存の同期プロトコルを利用して時刻マスタ機能を冗長化し、時刻同期機能を高信頼化することが可能な通信制御装置及び通信システムを提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するために本発明においては、ネットワークを介して接続された１または２以上の通信装置と同期パケットを送受信して時刻同期する通信制御装置であって、第１の通信装置の第１の同期パケットを観測して得られたパラメータを保存するパラメータ保存部と、前記第１の通信装置の異常が検知された場合に、前記パラメータ及び前記通信制御装置自身の時刻情報をもとに第２の同期パケットを生成するパケット生成部と、前記第２の同期パケットを前記通信装置に送信する通信部とを備えることを特徴とする、通信制御装置が提供される。
【００１２】
かかる構成によれば、通信制御装置は、時刻マスタとして振る舞う通信装置の同期パケットを観測して得られたパラメータを保存して、該通信装置の異常が検知された場合に、保存したパラメータ及び通信制御装置自身の時刻情報をもとに同期パケットを生成して、他の通信装置に送信する。これにより、時刻情報を提供するマスタ機能を冗長化し、さらにマスタ切り替り時の過渡的な同期精度の低下を防止することができる。
【発明の効果】
【００１３】
本発明によれば、既存の同期プロトコルを利用して時刻マスタ機能を冗長化し、時刻同期機能を高信頼化することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態にかかる通信システムの構成を示すブロック図である。
【図２】同実施形態にかかる通信制御装置の構成を示すブロック図である。
【図３】同実施形態にかかる通信制御部の構成を示すブロック図である。
【図４】同実施形態にかかる通信装置間の通信遅延を説明する概念図である。
【図５】同実施形態にかかるＥｔｈｅｒＣＡＴのパケット構成を示す概念図である。
【図６】同実施形態にかかる通信制御装置の機能構成を示すブロック図である。
【図７】同実施形態にかかる通信制御装置の動作を示すフローチャートである。
【図８】同実施形態にかかる通信経路の変更を示す概念図である。
【図９】同実施形態にかかる通信経路の変更を示す概念図である。
【図１０】本発明の第２の実施形態にかかる通信システムの構成を示すブロック図である。
【図１１】同実施形態にかかる通信制御装置の構成を示すブロック図である。
【図１２】同実施形態にかかる通信制御装置の機能構成を示すブロック図である。
【図１３】同実施形態にかかる時刻同期プロトコルの実行手順を示すブロック図である。
【図１４】同実施形態にかかるマスタとスレーブとの間のメッセージ送受信を示すブロック図である。
【図１５】同実施形態にかかる通信制御装置の動作を示すフローチャートである。
【図１６】同実施形態にかかるＩＥＥＥ１５８８のヘッダフォーマットを示す概念図である。
【図１７】同実施形態にかかる通信制御装置のパケット送信を説明する概念図である。
【図１８】本発明の第３の実施形態にかかる通信システムの構成を示すブロック図である。
【図１９】同実施形態にかかるＢＣの構成を示すブロック図である。
【図２０】同実施形態にかかるＢＣの機能構成を示すブロック図である。
【発明を実施するための形態】
【００１５】
以下図面について、本発明の一実施の形態を詳述する。
【００１６】
（１）第１の実施の形態
（１−１）ハードウェア構成
（１−１−１）通信システムの構成
まず、図１を参照して、通信システムの構成について説明する。図１に示すように、通信システムは、制御用計算機１２０と、複数の通信装置１２１ａ、１２１ｂ、１２１ｃ（以降、通信装置１２１ａ〜１２１ｃを通信装置１２１と総称して説明する場合もある。）と、通信制御装置１２３とから構成される。通信制御装置、制御用計算機１２０及び通信装置１２１は、ネットワーク１２２を介して通信可能に接続されている。
【００１７】
なお、本実施の形態では、通信制御装置１２３、制御用計算機１２０及び通信装置１２１は、ＥｔｈｅｒＣＡＴを利用して通信しているとして説明する。なお、本発明の効果はＥｔｈｅｒＣＡＴに限定されるものではなく、同様の通信方式に有効である。本実施の形態は、ＥｔｈｅｒＣＡＴを例に、発明の効果を述べる。
【００１８】
制御用計算機１２０は、ＥｔｈｅｒＣＡＴのマスタ装置であり、通信制御装置１２３及び通信装置１２１に対して、通信パケットを送受信することにより、制御指令値の伝送、計測値の取得や各種設定を実行する。
【００１９】
通信装置１２１は、ＥｔｈｅｒＣＡＴのスレーブ装置であり、制御用計算機１２０の制御指令に基づく各種処理を実行したり、実行結果に伴う計測値を更新したりする。
【００２０】
通信制御装置１２３は、通信装置１２１と同様にＥｔｈｅｒＣＡＴのスレーブ装置として振る舞う。一方で、本発明の通信制御装置として機能し、時刻マスタの冗長化機能を有する。時刻マスタの冗長化機能については後で詳細に説明する。
【００２１】
（１−１−２）通信制御装置のハードウェア構成
次に、図２を参照して、通信制御装置１２３のハードウェア構成について説明する。図２に示すように、通信制御装置１２３は、ＣＰＵ１０１、ＰＨＹ１０４、メモリ１０８、不揮発性記憶媒体１０９、バス１１０及び通信制御部１１１などから構成される。
【００２２】
ＣＰＵ１０１は、演算処理装置および制御装置として機能し、不揮発性記憶媒体１０９に格納されているプログラムをメモリ１０８に転送して各種処理を実行させる。実行処理プログラムとしては、オペレーティングシステム（以下、ＯＳと称す）やＯＳ上で動作するアプリケーションプログラムなどが例示される。また、ＣＰＵ１０１上で動作するプログラムは、通信制御部１１１の動作設定を行ったり、状態情報を取得したりする。
【００２３】
ＰＨＹ１０４は、ネットワーク１２２との通信機能を備えた送受信機ＩＣである。ＰＨＹ１０４の提供する通信規格としては、ＩＥＥＥ８０２．３のＰＨＹ（物理層）チップが例示される。なお、図２では、ＰＨＹ１０４と通信制御部１１１が接続している構成としているため、ＩＥＥＥ８０２．３のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層の処理は通信制御部１１１に含まれる。ただし、ＭＡＣ機能を提供するＩＣを通信制御部１１１とＰＨＹ１０４間に配置する構成や、ＭＡＣ機能を提供するＩＣとＰＨＹ１０４を組み合わせた通信用ＩＣと通信制御部１１１を接続する構成としてもよい。また、ＰＨＹ１０４は、通信制御部１１１に含まれていてもよい。また、図２では、４つのＰＨＹ１０４を示しているが、ＰＨＹ１０４は、通信制御部１１１が対応する通信ポート数と同数で構成される。
【００２４】
メモリ１０８は、ＣＰＵ１０１が動作するための一時的な記憶領域であり、不揮発性記憶媒体１０９から転送されたＯＳや、アプリケーションプログラムなどが格納される。
【００２５】
不揮発性記憶媒体１０９は、各種情報を記憶するための記憶媒体であって、ＯＳ、アプリケーション、デバイスドライバ等や、ＣＰＵ１０１を動作させるためのプログラムが保存されたり、プログラムの実行結果が保存されたりする。不揮発性記憶媒体１０９としては、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）、フラッシュメモリなどが例示される。また、取り外しが容易な外部記憶媒体として、フロッピー（登録商標）ディスク（ＦＤ）、ＣＤ、ＤＶＤ、ブルーレイ（登録商標）、ＵＳＢメモリ、コンパクトフラッシュ（登録商標）等を利用してもよい。
【００２６】
バス１１０は、ＣＰＵ１０１、通信制御部１１１、メモリ１０８、不揮発性記憶媒体１０９を相互に接続する。バス１１０としては、ＰＣＩバス、ＩＳＡバス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、システムバスまたはメモリバスなどが例示される。
【００２７】
通信制御部１１１は、ＥｔｈｅｒＣＡＴの通信機能を提供するＩＣである。図３を参照して、通信制御部１１１のハードウェア構成について説明する。
【００２８】
図３に示すように、ＬＡＮ１０２ａ〜ｄ（以降、ＬＡＮ１０２ａ〜ｄをＬＡＮ１０２と総称して説明する場合もある）は、ネットワーク１２２と送受信するための送受信機ＩＣである。ＬＡＮ１０２は、ネットワーク１２２を介して受信したパケットをＥＰＵ（EtherCAT Processor UNIT）１０３や他のＬＡＮ１０２へ伝送したり、ＥＰＵ１０３や他のＬＡＮ１０２から伝送されたパケットをネットワーク１２２へ送信したりする。
【００２９】
ＬＡＮ１０２としては、ＩＥＥＥ ８０２．３規格のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）チップ、ＰＨＹ（物理層）チップ、ＭＡＣとＰＨＹの複合チップ、ＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）、ＡＳＩＣ（Application Specific Integrated Circuit）、ゲートアレイ等のＩＣを例示できる。なお、ＬＡＮ１０２は、ＥＰＵ１０３に含まれていてもよい。図３では、４つのＬＡＮ１０２を示しているが、かかる例に限定されず、複数のＬＡＮ１０２を備えていてもよい。
【００３０】
ＥＰＵ１０３は、ＥｔｈｅｒＣＡＴ仕様に準拠して、通信処理を実行するＩＣである。具体的に、ＥＰＵ１０３は、ＥｔｈｅｒＣＡＴ規格に従い、受信したパケットを解析し、必要なパラメータを抽出したり、パラメータにしたがった処理を実行したり、パケットへの所定情報の書込みを実行したりする。ＥＰＵ１０３としては、ＣＰＵ、ＦＰＧＡ、ＣＰＬＤ、ＡＳＩＣまたはゲートアレイなどのＩＣが例示される。
【００３１】
ループバック機能部１１２は、接続するＬＡＮ１０２における通信の確立状況、あるいは設定に応じて、パケットの転送先をＬＡＮ１０２が接続するネットワークか、あるいは隣接するループバック機能部１１２とする。
【００３２】
（１−２）ＥｔｈｅｒＣＡＴの時刻同期機能
次に、図４を参照して、ＥｔｈｅｒＣＡＴにおける時刻同期の仕組みについて説明する。
【００３３】
ＥｔｈｅｒＣＡＴの時刻同期機能は、スレーブ間の通信遅延計測、各スレーブの時計のオフセット補償、各スレーブが有する時計の進み具合のドリフト補償という３段階で構成されている。このうち、各スレーブ間の通信遅延の計測は、図４に示すアルゴリズムを基本としている。図４では、通信装置１２１ａはスレーブＡとして、通信装置１２１ｂはスレーブＢとして、通信装置１２１ｃはスレーブＣとして振る舞うとして以下説明する。
【００３４】
図４は、ＥｔｈｅｒＣＡＴのスレーブＡ、Ｂ、Ｃの各通信装置１２１において、パケットの通信経路と各スレーブの各ポートでの受信時刻を示している。ＥＰＵ１０３（図中ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｏｒ  Ｕｎｉｔと表記）は、上記したように、ＥｔｈｅｒＣＡＴ仕様に準拠して、通信処理を実行するＩＣである。
【００３５】
図４のＴａ、Ｔｂ、Ｔｃ、Ｔｄ及びＴｅは、時刻同期用の所定のパケット（時刻同期用パケット１とする）の各ポートにおける受信時刻で、ｔｄｉｆｆＡＢ、ｔｄｉｆｆＢＣ、ｔｄｉｆｆＣＢ及びｔｄｉｆｆＢＡはスレーブ間の通信遅延を示す。例えば、ｔｄｉｆｆＡＢは、スレーブＡとスレーブＢ間の通信遅延を示す。ｔｐは、ＥＰＵ１０３の処理時間を示す。ＴＡＰ、ＴＢＰ及びＴＣＰは、各スレーブＡ、Ｂ、ＣのＥＰＵ１０３における受信時刻である。
【００３６】
ここで、スレーブＡに着目した場合、Ｔａ及びＴｅは同じ通信装置１２１ａ上のクロックで計測しているが、通信装置１２１ｂとは、クロックのオフセットやドリフトが異なるため、Ｔｂ及びＴｄとそのまま比較することはできない。
【００３７】
図４のＴａ〜Ｔｅが計測可能で、ｔｐが既知であるとした場合、スレーブＣとスレーブＢ間の通信遅延ｔｄｉｆｆＢＣは、数式（１）で算出できる。
【００３８】
ｔｄｉｆｆＢＣ  ＝（Ｔｄ−Ｔｂ）÷２  ・・・（１）
【００３９】
ただし、ｔｄｉｆｆＢＣとｔｄｉｆｆＣＢは等しいとする。なお、ＥｔｈｅｒＣＡＴスレーブのプロセッサユニットは同種のものを利用していると仮定している。もし、プロセッサユニットが異なる場合は、ｔｐの違いを考慮する必要がある。
【００４０】
また、スレーブＢとスレーブＡ間の通信遅延ｔｄｉｆｆＡＢは、数式（２）及び（３）で求められる。
【００４１】
ｔｄｉｆｆＡＢ  ＝（（Ｔｅ−Ｔａ）−（Ｔｄ−Ｔｂ）−ｔｐ）÷２＋ｔｐ・・・(２)
ｔｄｉｆｆＢＡ  ＝ｔｄｉｆｆＡＢ−ｔｐ  ・・・（３）
【００４２】
なお、時刻同期機能に対応していないＥｔｈｅｒＣＡＴスレーブは、単なる通信経路と見なされる。すなわち、時刻同期機能に対応していないＥｔｈｅｒＣＡＴスレーブに対しては、予め設定された固定の通信遅延でパケットを転送する必要がある。
【００４３】
このように時刻同期機能を実現する場合には、時刻同期用のパケットをリングネットワークで周回させる必要がある。すなわち、あるスレーブにおいて往路と復路におけるパケットの受信時刻をもとに通信遅延を計算する必要がある。
【００４４】
このように、スレーブ間の通信遅延を求めた後、これらの通信遅延を積算して、各スレーブと基準時刻を有するスレーブ間の通信遅延を求めることができる。例えば、図４でスレーブＡを基準とする場合、スレーブＡとスレーブＢ間の通信遅延は、ｔｄｉｆｆＡＢとなり、スレーブＡとスレーブＣ間の通信遅延ｔｄｉｆｆＡＣは、数式（４）で求められる。
【００４５】
ｔｄｉｆｆＡＣ＝ｔｄｉｆｆＡＢ＋ｔｄｉｆｆＢＣ・・・(４)
【００４６】
これらの通信遅延を用いて、マスタは基準時刻となるスレーブＡのＴＡＰを、その他のスレーブに通知する。各スレーブは、各スレーブ自身のＥＰＵ１０３の受信時刻を用いて、基準時刻となるスレーブＡとの時刻のオフセットを計算することができる。例えば、スレーブＢにおけるスレーブＡとの時刻のオフセットＯｆｆｓｅｔＢは数式（５）で求められる。
【００４７】
ＯｆｆｓｅｔＢ＝ＴＡＰ−ＴＢＰ・・・（５）
【００４８】
各スレーブは、スレーブＡとの通信遅延と、時刻のオフセットを用いて、自己の時刻を基準時刻と同期させることができる。
【００４９】
ＥｔｈｅｒＣＡＴにおいては、時刻同期に対応したスレーブの中で、マスタに最も近い（ホップ数の小さい）スレーブの時刻を基準時刻とする。図１では、通信装置１２１ａを時刻マスタとしている。
【００５０】
次に、図５を参照して、ＥｔｈｅｒＣＡＴのパケット構成について説明する。ＥｔｈｅｒＣＡＴの通信内容は、Ｅｔｈｅｒｎｅｔ（登録商標）フレーム２００のデータ領域２０２に格納される。ＥｔｈｅｒＣＡＴにおける、Ｅｔｈｅｒｎｅｔ（登録商標）ヘッダ２０１のＴｙｐｅフィールドは０ｘ８８Ａ４である。データが正しいか否かをＦＣＳ(Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ)２０３を用いて検査する。
【００５１】
ＥｔｈｅｒＣＡＴのデータ構造は、ＥｔｈｅｒＣＡＴヘッダ２０４と、ひとつ、または複数のＥｔｈｅｒＣＡＴテレグラム２０５で構成される。ＥｔｈｅｒＣＡＴテレグラム２０５は、テレグラムヘッダ２０６、テレグラムデータ２０７、ワーキングカウンタ２０８（ＷＫＣ）から構成される。ワーキングカウンタ２０８は、そのテレグラムを処理すべきスレーブで正しく処理されるたびに、スレーブによって所定の数だけカウントアップされるフィールドである。
【００５２】
コマンド２２０は、ＥｔｈｅｒＣＡＴ仕様におけるコマンドを示す。識別子２２１は、データグラムの識別子である。アドレス２２２は、ＥｔｈｅｒＣＡＴ仕様におけるアドレスである。データサイズ２２３は、データ２０７のサイズである。Ｃ２２５は、フレームが巡回していることを示す。Ｍ２２６は、後続のテレグラムが存在することを示す。ＩＲＱ２２７は、スレーブからの所定事象の発生を制御用計算機１２０に通知するために用いられる。
【００５３】
（１−３）通信制御装置の機能構成
次に、図６を参照して通信制御装置１２３の機能構成について説明する。図６に示すように、通信制御装置１２３は、パラメータ保存部１３０、通信部１３１ａ、１３１ｂ（以降、通信部１３１と総称して説明する場合もある）、時刻マスタ障害判定部１３２及び時刻配信パケット更新部１３３などを備える。
【００５４】
パラメータ保存部１３０は、時刻同期処理に必要なパラメータを保存する機能を有する。これらのパラメータは、通信部１３１によって受信したパケット上のデータそのものであってもよいし、該データをもとに変形、あるいは所定の方法で算出したパラメータであってもよい。パラメータ保存部１３０が保存するパラメータとしては、例えば、時刻マスタとの通信遅延や、時刻マスタの時刻との誤差などを例示できる。パラメータ保存部１３０は、ＥＰＵ１０３、メモリ１０８、不揮発性記憶媒体１０９、ＣＰＵ１０１上で動作するＯＳのいずれか、または複数によって構成される。
【００５５】
通信部１３１は、パケットを送受信する機能を有する。通信部１３１は、ＬＡＮ１０２、あるいは通信機能の一部がＥＰＵ１０３に含まれる場合は、ＬＡＮ１０２とＥＰＵ１０３で構成される。図６では、２つの通信部１３１を示しているが、通信部１３１ａはＬＡＮ１０２ａ、通信部１３１ｂはＬＡＮ１０２ｂに相当する。
【００５６】
時刻マスタ障害判定部１３２は、通信部１３１で送受信されるパケットに含まれるデータや、送受信のタイミング等によって、時刻マスタの障害を判定する機能を有する。時刻マスタ障害判定部１３２は、ＥＰＵ１０３、ＣＰＵ１０１上で動作するソフトウェアプログラムのいずれか、または複数によって構成される。
【００５７】
時刻配信パケット更新部１３３は、時刻マスタ障害判定部１３２が時刻マスタの障害を検知した場合に、時刻配信パケット内のデータを更新すること等により、時刻マスタを代替する機能を有する。時刻配信パケット更新部１３３は、ＥＰＵ１０３、ＣＰＵ１０１上で動作するソフトウェアプログラムのいずれか、または複数によって構成される。
【００５８】
なお、別途、バス１１０上にＦＰＧＡ、ＣＰＬＤ、ＡＳＩＣ等のＩＣを設けて、パラメータ保存部１３０、時刻マスタ障害判定部１３２、時刻配信パケット更新部１３３のいずれか、または複数を構成してもよい。
【００５９】
（１−４）通信制御装置の動作の詳細
次に、図７を参照して、通信制御装置１２３の動作の詳細を説明する。図７に示すように、通信制御装置１２３は、時刻情報の配信パケットを受信するまで待機する（Ｓ００１）。なお、時刻情報の配信パケット以外のパケットは、通信装置１２１と同様に、通常のＥｔｈｅｒＣＡＴスレーブとして処理する。
【００６０】
ステップＳ００１において、時刻情報の配信パケットを受信したと判定されると、時刻マスタ障害判定部１３２は、時刻マスタが異常かを判定する（Ｓ００２）。上記したように、時刻マスタ障害判定部１３２は、ステップＳ００１で受信した配信パケットに含まれるデータや、送受信のタイミングによって、時刻マスタが障害かを判定する。
【００６１】
ステップＳ００２において、時刻マスタが異常であると判定された場合には、パラメータ保存部１３０が必要なパラメータを保存しているかを判定する（Ｓ００３）。具体的に、パラメータ保存部１３０が保存するパラメータとは、時刻マスタとの通信遅延、時刻マスタとの時刻誤差である。これらのパラメータは、ＥｔｈｅｒＣＡＴの時刻同期手順において、制御用計算機１２０による初期手順で設定される。すなわち、パラメータ保存部１３０に必要なパラメータが保存されている場合には、時刻マスタである通信装置１２１ａと通信制御装置１２３との時刻が同期されており、通信制御装置１２３が通信装置１２１ａに代わって時刻マスタとして振る舞うことができることを意味している。
【００６２】
パラメータ保存部１３０は、これらのパラメータが０ではないことから、必要なパラメータを保存していると判定してもよい。また、制御用計算機１２０からのパケットにおいて、遅延時刻、時刻誤差を保持するレジスタへのアクセスがあった場合に、これらのパラメータの更新があったとして、パラメータを保存していると判定してもよい。なお、これらのパラメータが０となるのは、時刻スレーブとして振る舞う通信装置のみである。
【００６３】
次に、Ｓ００３において、パラメータ保存部１３０が必要なパラメータを保存していると判定された場合には、時刻配信パケット更新部１３３は、配信する時刻情報を更新する（Ｓ００４）。このときに、更新する時刻情報は、通信制御装置１２３自身の時刻と、パラメータ保存部１３０で保持したパラメータをもとに決定する。具体的には数式（６）で求められる。
【００６４】
Ｔ＝Ｌ−ｄ＋Ｏ・・・（６）
【００６５】
ここで、Ｔは更新した時刻情報、Ｌは通信制御装置１２３自身の時刻、ｄは時刻マスタと通信制御装置１２３間の通信遅延、Ｏは時刻マスタと通信制御装置１２３の時刻誤差である。
【００６６】
また、通信制御装置１２３が時刻マスタに同期している時刻Ｓを用いて、数式（７）で計算してもよい。
【００６７】
Ｔ＝Ｓ−d・・・（７）
【００６８】
なお、更新時刻Ｔを通信制御装置１２３自身の時刻Ｌとしてもよいが、もとの時刻マスタを代替し、過渡的な同期精度の低下を防止するためには、数式（６）または数式（７）による更新をするとよい。
【００６９】
ステップＳ００４を実行した後、通信部１３１ｂを用いてパケットを後段の通信装置１２１に転送する（Ｓ００６）。
【００７０】
一方、ステップＳ００２において、時刻マスタが異常ではない、すなわち時刻マスタが障害を起こしていないと判定された場合には、通常のスレーブ同様にパケットを処理する（Ｓ００５）。また、Ｓ００３において、パラメータ保存部１３０に必要なパラメータを保存していないと判定された場合にも、通常のスレーブ同様にパケットを処理する（Ｓ００５）。その後、通信部１３１ｂを用いてパケットを後段の通信装置１２１に転送する（Ｓ００６）。
【００７１】
次に、ステップＳ００２における時刻マスタ障害判定部１３２による時刻マスタの障害判定方法について説明する。
【００７２】
ＥｔｈｅｒＣＡＴでは、制御用計算機１２０が送信するパケットによる所定アドレスへのアクセスにより、時刻マスタが自身の時刻情報をパケットに格納する。この時刻マスタの機能が正常に動作していなければ、通信制御装置１２３が受信するパケットの該当領域には異常な値が書き込まれる。異常な値としては、例えば０を例示できる。時刻マスタが正常であっても偶然に時刻情報として０となる場合がある。この場合に時刻マスタ障害判定部１３２が時刻マスタを異常と誤判定するが、図７のステップＳ００４において、時刻マスタに同期した時刻に更新するため、同期精度は維持される。
【００７３】
また、時刻配信パケットの受信間隔を通信制御装置１２３自身の時刻で計測し、時刻配信パケットに格納されている時刻情報の差分と比較することにより、時刻マスタの異常を判定してもよい。この判定基準を数式（８）で示す。
【００７４】
｜（Ｌi+1  −  Ｌi）−（Ｔi+1  −  Ｔi）｜  ＞  α・・・（８）
【００７５】
ここで、Ｌiはi番目に受信した時の通信制御装置１２３の時刻であり、Ｔiはi番目に受信した時刻配信パケットに格納された時刻情報であり、αは異常と判定する閾値である。αは、時刻の進み具合の誤差に基づいて決定することが示される。例えば、時刻の進み具合の誤差から考えられる最大誤差以上とすることが示される。
【００７６】
上記数式（８）は、連続して受信した時刻配信パケットを用いて判断しているが、数式（８）の条件を所定回数連続して満足した場合に異常と判定することや、数式（８）の（Ｌi+1  −  Ｌi）−（Ｔi+1  −  Ｔi）を所定回数計測して算出される統計値（平均値、分散、積分値、合計値等）と所定の閾値を比較することで、時刻マスタを異常と判定してもよい。
【００７７】
これらの受信間隔に基づいて判定可能な異常の原因は、時刻マスタ自身の時刻の異常の他に、図８に示すように通信経路の変更による通信遅延の変化が含まれる。図８では、通信装置１２１ａが時刻マスタであるとする。通信装置１２１ａと通信制御装置１２３間の通信経路に異常が発生したとし、制御用計算機１２０からのパケットは通信装置１２１ａを経由後、制御用計算機１２０に戻るとする。
【００７８】
上記したように、ＥｔｈｅｒＣＡＴのバケットには、各スレーブが処理した場合に所定の値が足されるカウンタ部分（ワーキングカウンタ２０８）が設けられている。制御用計算機１２０は、パケット上のカウンタが、全スレーブ数に基づく期待値と異なる場合に経路上の異常を検知する。また、パケットを送信した通信ポート（図８の通信ポート１）で該パケット受信したことで、経路上の異常を検知してもよい。
【００７９】
上記方法による経路上の異常を判定した制御用計算機１２０は、代替通信ポート（図８の通信ポート２）からパケットを送信する。なお、制御用計算機１２０は、通信経路の異常を判断せずに、両方の通信ポートから同じパケットを送信してもよい。
【００８０】
このようにして、時刻配信パケットは、通信装置１２１ａでパケットを受信後、再び、制御用計算機１２０に戻り、その後、通信制御装置１２３に転送される。この場合、通信装置１２１ａで受信してから通信制御装置１２３で受信するまでの通信遅延が正常時よりも長くなるため、上記数式（８）等によって、時刻情報の異常を判定することができる。
【００８１】
また、時刻マスタ障害判定部１３２が、時刻マスタである通信装置１２１ａの異常を検知することができた場合には、自身の時刻と時刻マスタの情報から時刻情報を修正することができる（図７のステップＳ００４）。これにより、他の通信装置１２１の時刻精度が低下することを防ぐことができる。
【００８２】
また、図９に示すように時刻マスタである通信装置１２１ａ自身が障害でダウンする場合も考えられる。通信装置１２１ａ自身の障害は、通信装置１２１ａの両端の通信経路の異常も含まれる。この場合、時刻配信パケットは通信装置１２１ａを経由しないため、パケット上の時刻情報、ならびにワーキングカウンタ２０８の値は０となる。したがって、パケット上の時刻情報、ならびにワーキングカウンタ２０８の値が０の場合に、時刻マスタが異常であると判定することができる。
【００８３】
また、ＥｔｈｅｒＣＡＴのオートインクリメントアドレスを用いて時刻マスタの異常を判定してもよい。オートインクリメントアドレスは、各スレーブがパケットを処理するごとにアドレス値を１ずつインクリメントし、受信した際のアドレス値が０であれば、そのデータグラムが自身に対するパケットと判定するアドレス体系である。データグラムはＥｔｈｅｒＣＡＴパケットの構成単位であって、上記したデータ２０７である。時刻配信パケットでは、ＡＲＭＷコマンド（Ａｕｔｏ  Ｉｎｃｒｅｍｅｎｔ  Ｒｅａｄ  Ｍｕｌｔｉｐｌｅ  Ｗｒｉｔｅ）というオートインクリメントアドレスを用いたデータグラムによって時刻情報を配信する。
【００８４】
図９のように、時刻配信パケットが通信装置１２１ａを経由しない場合、ＡＲＭＷコマンドのオートインクリメントアドレスは、１をインクリメントされずに通信制御装置１２３に転送される。したがって、通信制御装置１２３は時刻配信パケット記載のオートインクリメントアドレスを確認することにより、時刻マスタの異常を判定することができる。
【００８５】
正常時であれば、通信制御装置１２３が通信装置１２１ａの隣のノードの場合、受信するパケットのオートインクリメントアドレスは１となる（通信装置１２１ａが０）。通信制御装置１２３と通信装置１２１ａ間のホップ数をＮ（隣接する場合は１）として、受信したパケットのオートインクリメントアドレスがＮでなければ、時刻マスタの異常と判定する。なお、時刻マスタ障害判定部１３２は時刻マスタである通信装置１２１ａと通信制御装置１２３間のホップ数Ｎを、時刻同期の初期手順で受信したパケットのオートインクリメントアドレスから取得し、パラメータ保存部１３０に保持している。
【００８６】
オートインクリメントアドレスが期待値Ｎでなかった場合、時刻配信パケット更新部１３３は、図７のＳ００４の手順で時刻情報を更新する。さらに、該データグラムのオートインクリメントアドレスを数式（９）で求めた値に更新し、次の通信装置１２１に転送する。
【００８７】
ＡｕｔｏＡｄｄｒ＝Ｎ＋１・・・（９）
【００８８】
ここで、ＡｕｔｏＡｄｄｒはオートインクリメントアドレスである。
【００８９】
その他、時刻配信パケットを所定期間受信しなかった場合に、時刻マスタ障害判定部１３２は、時刻マスタを異常と判定してもよい。この所定期間の観測は、時刻同期手順の初期手順から開始してもよいし、時刻配信パケットを受信後に開始してもよい。また、時刻配信パケットの受信間隔の観測の開始を指示する所定のパケットを受信した後に、時刻配信パケットの受信間隔の観測を開始してもよい。また、通信制御装置１２３自身に所定の入力手段（キーボード、スイッチ、マイク等）を設けて、所定の信号を入力後に時刻配信パケットの受信間隔の観測を開始してもよい。
【００９０】
また、異常判定する時刻配信パケットの受信間隔の閾値は、予め、固定値を設定してもよいし、制御用計算機１２０から所定のフォーマットのパケットを受信して設定するようにしてもよい。また、通信制御装置１２３に設けた入力手段からの入力に応じて閾値を設定してもよい。また、受信間隔の閾値は、水晶振動子等の物理的な特性で決定される通信制御装置１２３自身の時刻の精度と、システムの要求する同期精度によって決定してもよい。すなわち、同期精度を実行しない期間でずれる精度誤差が、要求する同期精度より低下しないように実行周期を決定する。
【００９１】
例えば、１秒間の同期処理を実行せずにＦ（時間）の同期精度誤差が生じる通信装置を用い、要求同期精度がＰの場合、数式（１０）より、同期処理を実行すべき周期Ｑが求まる。
【００９２】
Ｑ＝１［単位：秒］×Ｐ／Ｆ・・・（１０）
【００９３】
例えば、Ｆ＝１００マイクロ秒、Ｐ＝１マイクロ秒であれば、Ｑ＝１×1／１００＝１０ミリ秒となる。
【００９４】
上記数式（１０）により算出される周期Ｑは、制御用計算機１２０の時刻配信パケットの送信間隔について適用してもよい。この送信間隔は、ネットワーク１２２上の通信装置１２１、通信制御装置１２３の中で最も条件の厳しいノードにあわせる必要がある。
【００９５】
上記のように、時刻マスタ障害判定部１３２が時刻マスタの異常を検知した場合には、時刻配信パケットを受信することができないため、図７に示す手順を適用することができない。このような場合、通信制御装置１２３自身が時刻配信パケットを生成して、送信するようにしてもよい。このとき、時刻情報は、上記数式（６）または数式（７）のいずれかによって算出することができる。
【００９６】
また、オートインクリメントアドレスを用いる場合は、次の通信装置１２１に転送するデータグラムのオートインクリメントアドレスを数式（９）によって算出することができる。また、通信制御装置１２３が時刻配信パケットを送信するタイミングは、時刻マスタ障害判定部１３２が時刻マスタの異常を判定したタイミングでもよいし、所定の周期で送信してもよい。このときの周期は、上記数式（１０）に基づいて決定してもよい。
【００９７】
また、本発明を適用した通信制御装置１２３を複数用いて、多段で構成してもよい。この場合、パケット上の時刻情報は、時刻マスタ障害判定部１３２が時刻マスタを異常と判定した通信制御装置１２３のうち、最後に時刻配信パケットを処理した通信制御装置１２３による時刻情報に更新される。
【００９８】
または、通信制御装置１２３が時刻情報を更新したことをパケットに記録し、後段の通信制御装置１２３は、その記録を見て、時刻情報の更新処理を制御するようにしてもよい。
【００９９】
パケット上への更新処理の有無の記録方法としては、ＥｔｈｅｒＣＡＴパケットのデータグラムのヘッダ上の項目（例えば、ＩＲＱ：Ｉｎｔｅｒｒｕｐｔ  ＲｅＱｕｅｓｔ）を用いてもよいし、該情報を示す所定のデータグラムを付加してもよい。
【０１００】
また、それらの記録の表現方法により、どの通信制御装置１２３が更新処理を実行したかを示すことができ、それをもとに、後段の通信制御装置１２３の制御を変更することができる。例えば、データグラムのヘッダのＩＲＱを用いる場合は、ビット位置と通信制御装置１２３の識別情報とを対応づけるようにしてもよい。
【０１０１】
また、後段の通信制御装置１２３は、すでに更新処理を実行した通信制御装置１２３があれば、更新処理を実行しないようにしてもよい。また、複数の通信制御装置１２３の間で優先度を設定して、その優先度に基づいて更新処理の適用可否を決定してもよい。例えば、各通信制御装置１２３は、自身よりも優先度が高い通信制御装置１２３が時刻情報を更新している場合には自身の時刻情報を更新せず、自身よりも優先度の低い通信制御装置１２３が時刻情報を更新している場合には自身の時刻情報を更新するようにしてもよい。
【０１０２】
該優先度は、通信制御装置１２３の時刻精度や計算機機能に基づいて決定してもよい。計算機機能としては、ＣＰＵ１０１の性能や、メモリ１０８、不揮発性記憶媒体１０９の容量、スループットなどが挙げられる。また、該優先度は、ネットワーク上における位置、通信帯域、単位時間あたりの通信量、通信遅延、通信媒体等をもとに算出した統計値（平均値、最小値、最大値、分散等）に基づいて決定してもよい。
【０１０３】
（１−５）本実施の形態の効果
以上のように、本実施の形態によれば、通信制御装置１２３は、時刻マスタとして振る舞う通信装置１２１の同期パケットを観測して得られたパラメータを保存して、該通信装置１２１の異常が検知された場合に、保存したパラメータ及び通信制御装置１２３自身の時刻情報をもとに同期パケットを生成して、他の通信装置に送信する。これにより、時刻情報を提供するマスタ機能を冗長化し、さらにマスタ切り替り時の過渡的な同期精度の低下を防止することができる。
【０１０４】
（２）第２の実施の形態
本実施の形態は、時刻同期プロトコルにＩＥＥＥ１５８８を利用した場合について説明する。本実施の形態で使用する符号は、特に断りのない限り、第１の実施の形態で説明した機能や要素等と同一であることを意味する。なお、以下では、上記した第1の実施の形態と同様の構成については詳細な説明は省略し、第１の実施の形態と異なる構成について特に詳細に説明する。
【０１０５】
（２−１）ハードウェア構成
（２−１−１）通信システムの構成
図１０に本実施の形態の通信システムの構成を示す。図１０に示すように、通信制御装置１４０は、ＩＥＥＥ１５８８の機能を備え、ネットワーク１４２を介して、他の通信装置１４１と通信する。
【０１０６】
通信装置１４１は、通信制御装置１４０と同様に、ＩＥＥＥ１５８８の機能を備え、ネットワーク１４２を介して、他の通信装置１４１、通信制御装置１４０と通信する。ネットワーク１４２としては、ＩＥＥＥ８０２．３や各種産業用ネットワークが例示される。
【０１０７】
ネットワーク１４２は、ブロードキャストドメインとし、ある通信制御装置１４０、通信装置１４１から送信されるブロードキャストパケット、マルチキャストパケットは、ネットワーク１４２に接続される各通信制御装置１４０、通信装置１４１に転送される。また、ネットワーク１４２は、ネットワークスイッチ、ブリッジ、ルータ、ＩＥＥＥ１５８８のＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）、ＯｐｅｎＦｌｏｗスイッチ等の各種ネットワーク中継装置が含まれていてもよい。
【０１０８】
（２−１−２）通信制御装置のハードウェア構成
次に、図１１を参照して、通信制御装置１４０のハードウェア構成について説明する。図１１に示すように、通信制御装置１４０は、ＣＰＵ１０１、ＬＡＮ１０２、ＰＨＹ１０４、メモリ１０８、不揮発性記憶媒体１０９及びバス１１０などから構成される。ＣＰＵ１０１、ＬＡＮ１０２、ＰＨＹ１０４、メモリ１０８、不揮発性記憶媒体１０９及びバス１１０は、第１の実施の形態と同様のため、詳細な説明は省略する。
【０１０９】
（２−２）通信制御装置の機能構成
次に、図１２を参照して通信制御装置１４０の機能構成について説明する。図１２に示すように、通信制御装置１４０は、パラメータ保存部１３０、通信部１３１、時刻マスタ異常判定部１５０、時刻マスタパラメータ動的抽出部１５１及び時刻マスタ代替部１５２から構成される。パラメータ保存部１３０及び通信部１３１は、第１の実施の形態と同様の機能を有するため、詳細な説明は省略する。
【０１１０】
時刻マスタ異常判定部１５０は、通信部１３１で送受信されるパケットに含まれるデータや、送受信のタイミング等によって、時刻マスタの異常を判定する機能を有する。時刻マスタ異常判定部１５０は、ＣＰＵ１０１上で動作するソフトウェアプログラムによって構成される。
【０１１１】
時刻マスタパラメータ動的抽出部１５１は、ＩＥＥＥ１５８８において、時刻マスタとして振る舞う通信装置１４１から受信したパケット上のパラメータを抽出し、パラメータ保存部１３０に保存する機能を有する。
【０１１２】
時刻マスタ代替部１５２は、時刻マスタ異常判定部１５０が時刻マスタの異常を判定した場合に、時刻マスタ機能を代替する機能を有する。
【０１１３】
（２−３）ＩＥＥＥ１５８８の時刻同期
ここで、図１３を参照して、ＩＥＥＥ１５８８の時刻同期プロトコルの実行手順について説明する。ＩＥＥＥ１５８８においては、通信装置１４１がマスタ−スレーブ構成をとる。図１４に、ＩＥＥＥ１５８８におけるマスタとスレーブとの間のメッセージの送受信を示す。
【０１１４】
図１３に示すように、はじめにマスタは、スレーブにＳｙｎｃメッセージを送信する（Ｓ０６０）。このとき、マスタはＳｙｎｃメッセージの送信時刻ｔ１を記録する（Ｓ０６１）。そして、スレーブは、Ｓｙｎｃメッセージを受信すると、その受信時刻ｔ２を記録する（Ｓ０６２）。
【０１１５】
そして、マスタは次のいずれかの手段でｔ１をスレーブに通知する（Ｓ０６３）。第１の手段は、Ｓｙｎｃメッセージにｔ１の情報をのせる方法である。第２の手段は、Ｓｙｎｃメッセージに続くＦｏｌｌｏｗ＿Ｕｐメッセージにｔ１の情報をのせる方法である。
【０１１６】
続いて、スレーブは、マスタにＤｅｌａｙ＿Ｒｅｑメッセージを送信する（Ｓ０６４）。このとき、スレーブはＤｅｌａｙ＿Ｒｅｑメッセージの送信時刻ｔ３を記録する（Ｓ０６５）。マスタは、Ｄｅｌａｙ＿Ｒｅｑメッセージを受信すると、その受信時刻ｔ４を記録する（Ｓ０６６）。
【０１１７】
そして、マスタはＤｅｌａｙ＿Ｒｅｓｐメッセージにｔ４の情報をのせ、ｔ４をスレーブに通知する（Ｓ０６７）。Ｄｅｌａｙ＿Ｒｅｓｐメッセージを受信したスレーブは、ｔ１、ｔ２、ｔ３及びｔ４から、マスタとスレーブとの間の通信遅延及び時刻の差分を計算する（Ｓ０６８）。
【０１１８】
通信遅延の計算には、マスタとスレーブとの間の通信遅延が往復路で等しいことを前提としている。したがって、片道の通信遅延ｔｄは、数式（１１）で算出される。
【０１１９】
ｔｄ＝（（ｔ４−ｔ３）＋（ｔ２−ｔ１））／２・・・（１１）
【０１２０】
また、マスタとスレーブの時刻の差分ｔｄｉｆｆは、数式（１２）で算出される。
【０１２１】
ｔｄｉｆｆ＝｛（ｔ４−ｔ３）−（ｔ２−ｔ１）｝／２・・・（１２）
【０１２２】
上記数式（１２）で算出されたｔｄｉｆｆを用いて、マスタ及びスレーブは時刻を同期することができる。
【０１２３】
（２−４）通信制御装置の動作の詳細
次に、図１５を参照して、本実施の形態にかかる通信制御装置１４０の動作の詳細を説明する。
【０１２４】
ＩＥＥＥ １５８８では、ＢＭＣ（Ｂｅｓｔ  Ｍａｓｔｅｒ  Ｃｌｏｃｋ）アルゴリズム、あるいは静的な設定により、各通信制御装置１４０及び通信装置１４１の各ポートにおいて、上記したマスタ及びスレーブの役割を決定する。このとき、通信制御装置１４０は、時刻マスタの障害時に、時刻マスタの代替機能を達成することとするため、スレーブとなるものとする。以下では、説明の便宜上、通信装置１４１ａをマスタとなるものとする。マスタとなった通信装置１４１ａは、定期的に、Ｓｙｎｃパケットをネットワーク１４２に対してマルチキャスト送信する。
【０１２５】
まず、時刻マスタ異常判定部１５０は、時刻マスタが正常かを判定する（Ｓ０１０）。ステップＳ０１０において、時刻マスタが正常であると判定された場合には、通信制御装置１４０は、パケットの受信を待機し（Ｓ０１１）、受信したパケットがＳｙｎｃであるか判定する（Ｓ０１２）。
【０１２６】
ステップＳ０１２において、受信したパケットがＳｙｎｃであると判定された場合には、通信制御装置１４０は、マスタとして認識した通信装置１４１ａの識別子とシーケンスＩＤ、ドメイン番号を記録し（Ｓ０１３）、通常のスレーブと同様にＳｙｎｃパケットの受信時刻を記録する（Ｓ０１４）。
【０１２７】
ここで、通信制御装置１４０が記録するパラメータについて説明するため、図１６を参照して、ＩＥＥＥ１５８８のヘッダフォーマットについて説明する。
【０１２８】
図１６に示すように、通信装置１４１ａの識別子は、ｓｏｕｒｃｅＰｏｒｔＩｄｅｎｔｉｔｙ１６８であり、シーケンス番号はｓｅｑｕｅｎｃｅＩｄ１６９であり、ドメイン番号はｄｏｍａｉｎＮｕｍｂｅｒ１６５である。
【０１２９】
通信制御装置１４０では、Ｓｙｎｃパケットを受信するたびに、時刻マスタパラメータ動的抽出部１５１がこれらのパラメータを抽出し、パラメータ保存部１３０に保存する。
【０１３０】
図１５のステップＳ０１０において、時刻マスタ異常判定部１５０が時刻マスタ機能の異常を検知した場合（Ｓ０１０のＮ）、時刻マスタ代替部１５２は、パラメータ保存部１３０に保存されたパラメータを用いて、Ｓｙｎｃパケットを生成し（Ｓ０１５）、以降、マスタ機能を代替する（Ｓ０１６）。
【０１３１】
具体的には、ステップＳ０１５において、パラメータ保存部１３０に保存したｓｏｕｒｃｅＰｏｒｔＩｄｅｎｔｉｔｙ１６８とｄｏｍａｉｎＮｕｍｂｅｒ１６５を用いてＳｙｎｃパケットが生成される。また、ＩＥＥＥ１５８８ではｓｅｑｕｅｎｃｅＩｄ１６９は１ずつインクリメントした数字でなければならないため、時刻マスタパラメータ動的抽出部１５１が最後に抽出してパラメータ保存部１３０に保存したｓｅｑｕｅｎｃｅＩｄ１６９の値に１を足した値を用いてＳｙｎｃパケットを生成する。
【０１３２】
図１５に示す処理は、定期的に実行してもよいし、時刻マスタ異常判定部１５０が、時刻マスタの判定状態を変更したタイミングで実行してもよい。
【０１３３】
次に、時刻マスタ異常判定部１５０の判定基準について説明する。時刻マスタ異常判定部１５０が時刻マスタを異常と判定する一つの基準は、ＩＥＥＥ１５８８で規定されている、Ａｎｎｏｕｎｃｅメーセージを所定周期受信しなかったタイムアウトによって異常と判定してもよい。ただし、この方法は他の通信装置１４１（スレーブ）でも同様にタイムアウトが発生し、同期用の制御パラメータを初期化し、過渡的な精度低下が発生する可能性がある。
【０１３４】
したがって、Ａｎｎｏｕｎｃｅメッセージのタイムアウトではなく、Ｓｙｎｃパケットを所定期間、あるいは所定周期受信しなかった場合、あるいは所定期間あたりの受信数が所定の閾値以下の場合に異常と判定するようにしてもよい。
【０１３５】
または、通信制御装置１４０から、時刻マスタである通信装置１４１ａにＰｉｎｇ等のパケットを通信し、返信がなかった場合、または所定回数連続して受信がなかった場合、または所定期間中の変換回数が所定の閾値以下の場合に異常と判定してもよい。
【０１３６】
また、上記数式（８）と同様に、時刻配信パケット（Ｓｙｎｃ）の受信間隔と、時刻配信パケット上の時刻情報の差分をもとに時刻マスタの異常を判定してもよい。数式（８）は連続して受信した時刻配信パケットを用いて判断しているが、数式（８）の条件を所定回数連続して満足した場合や、（式８）の（Ｌi+1  −  Ｌi）−（Ｔi+1  −  Ｔi）を所定回数計測して算出される統計値（平均値、分散、積分値、合計値等）と所定の閾値を比較することで、時刻マスタを異常と判定してもよい。
【０１３７】
ただし、数式（８）に基づいて判定する場合は通信制御装置１４０自身の時刻が異常となっている場合もありうる。そのような場合を防止するため、通信制御装置１４０を多重化し、それぞれの通信制御装置１４０の判定結果をネットワーク１４２にブロードキャスト、あるいは通信制御装置１４０のグループを含めたマルチキャストグループにマルチキャストするようにしてもよい。ブロードキャストまたはマルチキャストされるパケットには、少なくとも判定結果が含まれ、判定した通信制御装置１４０の識別子が含められてもよい。
【０１３８】
また、通信制御装置１４０ごとに優先度（重み付け）を付与し、該優先度に応じた度合いを点数化して、該パケットに含めてもよい。この優先度は、各通信制御装置１４０の信頼性設計の度合い（ソフトウェアやハードウェアの冗長度、故障率の組み合わせ等）に基づいて決定してもよい。また、通信制御装置１４０の（ＣＰＵ１０１の性能、メモリ１０８、不揮発性記憶媒体１０９の容量、スループットなどの計算機性能に基づいて決定してもよい。また、ネットワーク１４２中の位置、時刻マスタまでのホップ数、通信遅延、通信帯域、通信媒体をもとに算出した統計値（平均値、最小値、最大値、分散等）に基づいて決定してもよい。また、通信制御装置１４０が判定した異常要因に点数に反映してもよい。
【０１３９】
該パケットを受信した通信制御装置１４０は、上記の点数が所定の閾値よりも大きい場合、あるいは所定の通信制御装置１４０が異常と判定した場合、時刻マスタを異常と判定する。
【０１４０】
上記による時刻マスタの異常判定の場合、通信装置１４１ａは同期パケットを継続して送信し得る。各通信装置１４１、通信制御装置１４０が複数の同期パケット（Ｓｙｎｃ）を受信することを防止するため、通信制御装置１４０が通信装置１４１ａの送信を停止するように構成してもよい。例えば、同期パケットの送信を停止するｍａｎａｇｅｍｅｎｔメッセージや独自のＴＬＶ（Ｔａｇ  Ｌｅｎｇｔｈ  Ｖａｌｕｅ）メッセージを通信装置１４１ａに送信する。これらのメッセージには、少なくとも同期パケットの送信を停止する内容を含めるようにしてもよい。
【０１４１】
また、ＳＮＭＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｍａｎａｇｅｍｅｎｔ  Ｐｒｏｔｏｃｏｌ）や、ＶＬＡＮ、ＩＥＥＥ８０２．１Ｑ等の機能を備えたネットワーク中継装置を用いて（図示なし）、通信装置１４１ａを送信不可とするようにネットワーク中継装置を設定してもよい。また、該ネットワーク中継装置を用いて、時刻配信パケット（Ｓｙｎｃ）のみをフィルタし、他の通信装置に転送しないように設定してもよい。
【０１４２】
同様に、複数の通信制御装置１４０を用いて、複数の通信制御装置１４０が時刻マスタの異常を検知した場合、複数の同期パケット（Ｓｙｎｃ）が送信される可能性がある。
このような場合を防止するため、上記したように、複数の通信制御装置１４０に優先度を設け、最も優先度の高い通信制御装置１４０のみが同期パケットを送信するようにしてもよい。または、優先度の最も高い通信制御装置１４０がネットワーク中継装置を設定し、他の通信制御装置１４０が時刻配信パケット（Ｓｙｎｃ）を送信できないように設定してもよい。このとき、優先度の判定基準として、異常を判定した時刻の早さが考えられ、最も早く時刻マスタの異常を判定した通信制御装置１４０に最も高い優先度を与えてもよい。
【０１４３】
または、Ｓｙｎｃの送信周期、あるいはＡｎｎｏｕｎｃｅメッセージの送信周期等に基づく所定周期内で、架空のタイムスロットを各通信制御装置１４０に割り当てる方法が例示される。具体的には、各通信制御装置１４０が時刻マスタの異常を判定した際に、自身が割り当てられたタイムスロットよりも前のタイムスロットで、他の通信制御装置１４０が同期パケットを送信していれば、自身は、同期パケットを送信しない。また、他の通信制御装置１４０が同期パケットを送信していない場合は、自身が同期パケットを送信するようにしてもよい。
【０１４４】
次に、図１７を参照して、通信制御装置１４０ａ〜ｄを用いた場合の動作について説明する。通信制御装置１４０ｄに着目した場合、図１７(ａ）では、通信制御装置１４０ｂがＳｙｎｃパケットを送信しているため、通信制御装置１４０ｄ自身は時刻マスタの異常を判定したとしても同期パケットを送信しない。
【０１４５】
一方、図１７（ｂ）の場合は、通信制御装置１４０ｄより前に他の通信制御装置１４０がＳｙｎｃパケットを送信していないため、通信制御装置１４０ｄが時刻マスタを異常と判定した場合は、通信制御装置１４０ｄがＳｙｎｃパケットを送信する。
【０１４６】
なお、タイムスロットの割り当てには、上記した優先度を用いてもよい。また、優先度の決定には動的な基準も含まれるため、図１７に示すタイムスロットは動的に構成し、各通信制御装置１４０に割り当てたタイムスロットを通信してもよい。このようなタイムスロットは、通信制御装置１４０のいずれかが実行してもよいし、専用の通信装置１４１が実行してもよい。
【０１４７】
なお、各通信制御装置１４０は、ＩＥＥＥ１５８８等の時刻同期プロトコルによって同期しているため、図１７に示すような同期は、任意のタイミングで開始することができる。したがって、タイムスロットの割り当てを実行する通信装置は、周期の開始時、あるいは、周期の長さを各通信制御装置１４０に通知する。
【０１４８】
また、通信制御装置１４０は、図１５のステップＳ０１３において、通信装置１４１ａ（時刻マスタ）の必要なパラメータを保存した後、常に所定周期でＳｙｎｃパケットを送信してもよい。このような場合、２つの同一のＳｙｎｃパケットを受信した通信装置１４１は、２つのパケットを両方用いてもよいし、片方のみ（例えば、後着廃棄）を用いてもよい。
【０１４９】
また、時刻マスタを異常と判定した後に、再び時刻マスタを正常と判定する場合がある。そのような場合、通信制御装置１４０は、自身の同期パケットの送信を停止してもよいし、継続して同期パケットを送信してもよい。また、時刻マスタ異常判定部１５０が時刻マスタを正常と判定している間に、時刻マスタに同期してもよい。このように構成することにより、時刻マスタが異常となり、通信制御装置１４０が代替した場合であっても、同期精度の低下を阻止することができる。
【０１５０】
また、通信制御装置１４０は図１２に示す機能構成を有するが、通信部１３１と組み合わせて、時刻マスタ異常判定部１５０、時刻マスタパラメータ保存部１５１、パラメータ保存部１３０、時刻マスタ代替部１５２のいずれか、または複数を、別の通信装置として構成してもよい。この場合、機能部間の関係や、要求、情報の通知は、ネットワーク１４２と、ネットワーク１４２上のパケットとなって実現される。例えば、時刻マスタ異常判定部１５０の判定結果は、所定のパケットフォーマットとなって、時刻マスタ代替部１５２となる通信装置に転送される。
【０１５１】
上記したように構成し、例えば、時刻マスタ異常判定部１５０を複数配置することで、時刻マスタの異常検知率、精度を向上させたり、部分的な機能を専用の高性能装置、あるいは低性能装置に実装させたりすることができ、性能とコストの最適化を調整することができる。
【０１５２】
また、複数階層のブロードキャストドメインで構成する場合も、ドメインをまたいで時刻マスタを代替することができる。この場合、各機能部を表す通信装置をドメインごとに管理する。
【０１５３】
また、通信制御装置１４０は、通信装置１４１ａ（時刻マスタ）が配信していたＡｎｎｏｕｎｃｅメッセージを、時刻マスタの代わりに送信してもよい。この場合、時刻マスタ異常判定部１５０が時刻マスタを正常と判定している間に、通信装置１４１ａより配信されていたＡｎｎｏｕｎｃｅメッセージを解析し、必要なパラメータをパラメータ保存部１３０に保存してもよい。
【０１５４】
なお、通信制御装置１４０にＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）を接続し、ＧＰＳの時刻を同期させる時刻の基準としてもよい。また、ネットワーク１４２は任意のトポロジの適用が可能であり、ライントポロジ、スタートポロジやリングトポロジでもよい。リングトポロジの場合は、ＩＥＣ６２４３９−３のＨＳＲ（Ｈｉｇｈ  Ａｖａｉｌａｂｉｌｉｔｙ  Ｓｅａｍｌｅｓｓ  Ｒｅｄｕｎｄａｎｃｙ）の適用が例示される。
【０１５５】
（２−５）本実施の形態の効果
以上のように、本実施の形態によれば、通信制御装置１４０を用いて、時刻マスタ機能を冗長化して、時刻同期機能を高信頼化することができる。さらに、時刻マスタの異常を検知して時刻マスタを代替することにより、過渡的な同期精度低下を防止することができる。さらに、動的に時刻マスタが変更する場であっても、時刻マスタ機能を冗長化することができ、通信制御装置１４０を多重化することにより、代替機能の信頼性を向上させることもできる。
【０１５６】
（３）第３の実施の形態
本実施の形態では、時刻同期プロトコルＩＥＥＥ１５８８のＢｏｕｎｄａｒｙ  Ｃｌｏｃｋ（以下、ＢＣと称して説明する）を用いて、ＩＥＥＥ１５８８のマスタ、スレーブが複数階層にまたがる場合について説明する。本実施の形態に使用する符号は、特に断りのない限り、上記した第１の実施の形態及び第２の実施の形態で説明した機能や要素等と同一であることを意味する。
【０１５７】
（３−１）ハードウェア構成
（３−１−１）通信システムの構成
図１８に、本実施の形態のＢＣ１８０を用いたシステム構成を示す。図１８では、通信装置１４１ａがグランドマスタ（ＩＥＥＥ１５８８のマスタ、スレーブ階層の最上位のマスタ）であるとする。
【０１５８】
ＢＣ１８０は、ＩＥＥＥ１５８８のＢＣの機能を有し、各通信ポートにＢＭＣアルゴリズム、またはＢＭＣアルゴリズム相当によって、ＩＥＥＥ１５８８のマスタ、スレーブ等の状態を決定し、時刻同期パケットを通信する。
【０１５９】
ネットワーク中継装置１８１は、ネットワークスイッチ、ブリッジ、ルータ、ＩＥＥＥ１５８８のＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）、ＩＥＥＥ１５８８のＢＣ、ＯｐｅｎＦｌｏｗスイッチ等の各種ネットワーク中継装置である。なお、本実施の形態にかかるＢＣ１８０を用いてもよい。
【０１６０】
（３−１−２）Ｂｏｕｎｄａｒｙ  Ｃｌｏｃｋのハードウェア構成
次に、図１９を参照して、ＢＣ１８０のハードウェア構成について説明する。図１９に示すように、ＢＣ１８０は、ＣＰＵ１０１、ＰＨＹ１０４、メモリ１０８、不揮発性記憶媒体１０９、バス１１０及び経路制御ＩＣ１９０などから構成される。ＣＰＵ１０１、ＰＨＹ１０４、メモリ１０８、不揮発性記憶媒体１０９及びバス１１０は、第１の実施の形態と同様のため、詳細な説明は省略する。
【０１６１】
経路制御ＩＣ１９０は、ネットワークパケットの転送、中継機能を有するとともに、ＩＥＥＥ１５８８のＢＣ機能を備え、通信ポートごとの状態決定、時刻同期パケットの送受信、タイムスタンプの取得、設定などを実行する。また、ＰＨＹ１０４の数は、ＢＣ１８０が備える通信ポートの数だけ必要である。
【０１６２】
（３−２）Ｂｏｕｎｄａｒｙ  Ｃｌｏｃｋの機能構成
次に、図２０を参照して、ＢＣ１８０の機能構成について説明する。図２０に示すように、ＢＣ１８０は、パラメータ保存部１３０、通信部１３１、時刻マスタ異常判定部１５０、時刻マスタパラメータ動的抽出部１５１及び時刻マスタ代替部１５２などから構成される。
【０１６３】
パラメータ保存部１３０及び通信部１３１は、第１の実施の形態と同様の機能を有するため、詳細な説明は省略する。なお、通信部１３１は、図１９のＰＨＹ１０４の数と同数である。
【０１６４】
ＢＣ１８０では、ＢＭＣまたはＢＭＣ相当のアルゴリズムにより、ある一つの通信ポートがスレーブとなり、他の通信ポートはマスタとなる。通信部１３１のうち、グランドマスタ通信装置１４１ａと接続する通信部１３１がスレーブポートとなる。
【０１６５】
時刻マスタパラメータ動的抽出部１５１は、該通信部１３１から受信するマスタのパケットから必要なパラメータを抽出して、パラメータ保存部１３０に依存する。
【０１６６】
時刻マスタ異常判定部１５０が、通信装置１４１ａを異常と判定した場合、ＢＭＣアルゴリズムの再実行により、グランドマスタが他の通信装置となって、過渡的な時刻精度の悪化が発生する可能性がある。そのような場合を防ぐため、時刻マスタ代替部１５２は、通信装置１４１ａが正常である場合と同様のＡｎｎｏｕｎｃｅパケットを生成し、通信部１３１から送信する。また、通信装置１４１ａと同期していた自身の時刻をもとに各ポートのマスタ処理を継続する。
【０１６７】
（３−３）本実施の形態の効果
以上のように、本実施の形態によれば、ＢＣ１８０を複数用いて、ＩＥＥＥ１５８８のネットワークを階層化した場合であっても、時刻マスタ機能を冗長化して、高信頼化することが可能となる。
【符号の説明】
【０１６８】
１２０    制御用計算機
１２１    通信装置
１２３    通信制御装置
１０１    ＣＰＵ
１０４    ＰＨＹ
１０８    メモリ
１０９    不揮発性記憶媒体
１１０    バス
１１１    通信制御部
１３０    パラメータ保存部
１３１    通信部
１３２    時刻マスタ障害判定部
１３３    時刻配信パケット更新部
【図１】
2014183386.tif 000003
【図２】
2014183386.tif 000004
【図３】
2014183386.tif 000005
【図４】
2014183386.tif 000006
【図５】
2014183386.tif 000007
【図６】
2014183386.tif 000008
【図７】
2014183386.tif 000009
【図８】
2014183386.tif 000010
【図９】
2014183386.tif 000011
【図１０】
2014183386.tif 000012
【図１１】
2014183386.tif 000013
【図１２】
2014183386.tif 000014
【図１３】
2014183386.tif 000015
【図１４】
2014183386.tif 000016
【図１５】
2014183386.tif 000017
【図１６】
2014183386.tif 000018
【図１７】
2014183386.tif 000019
【図１８】
2014183386.tif 000020
【図１９】
2014183386.tif 000021
【図２０】
2014183386.tif 000022