(57)【要約】【課題】  経路冗長化により高信頼化が実現されるネットワークであっても、時刻同期が可能になること。【解決手段】  時刻情報を含む同期パケットの通信経路を構成するネットワークに接続されて同期パケットを送受信する１又は２以上の送受信手段と、送受信手段の受信した同期パケットを処理する処理手段と、を備え、処理手段は、同期パケットの宛先への通信経路として、第一の通信経路に対して冗長化された第二の通信経路を含む場合、第一の通信経路を同期パケットが通信する際の第一の通信遅延と、第二の通信経路を同期パケットが通信する際の第二の通信遅延との遅延変化分を基に同期パケットに属する前記時刻情報を補正する。【選択図】図１
2019153941.tif 000002
【特許請求の範囲】
【請求項１】
時刻情報を含む同期パケットの通信経路を構成するネットワークに接続されて前記同期パケットを送受信する１又は２以上の送受信手段と、
前記送受信手段の受信した前記同期パケットを処理する処理手段と、を備え、
前記処理手段は、
前記同期パケットの宛先への通信経路として、第一の通信経路に対して冗長化された第二の通信経路を含む場合、前記第一の通信経路を前記同期パケットが通信する際の第一の通信遅延と、前記第二の通信経路を前記同期パケットが通信する際の第二の通信遅延との遅延変化分を基に前記同期パケットに属する前記時刻情報を補正することを特徴とする通信制御装置。
【請求項２】
請求項１に記載の通信制御装置において、
前記処理手段は、
前記第二の通信経路における前記同期パケットに属する前記時刻情報を補正する際に、前記遅延変化分を前記第二の通信経路における前記同期パケットに属する前記時刻情報に加算することを特徴とする通信制御装置。
【請求項３】
請求項１に記載の通信制御装置において、
前記処理手段は、
前記第二の通信経路における前記同期パケットに、前記時刻情報としてタイムスタンプ又はコレクションフィールドが付加されている場合、前記時刻情報を補正する際に、前記遅延変化分を前記タイムスタンプ又は前記コレクションフィールドに加算することを特徴とする通信制御装置。
【請求項４】
請求項１に記載の通信制御装置において、
前記処理手段は、
前記送受信手段のうち前記第一の通信経路に接続される第一の送受信手段の受信した前記同期パケットを判別して経路異常と判定した場合、前記第一の送受信手段の受信した前記同期パケットに属する前記時刻情報を、前記遅延変化分を基に補正し、補正された前記時刻情報を含む前記同期パケットを前記第二の通信経路に接続される第二の送受信手段を介して前記第二の通信経路に送信することを特徴する通信制御装置。
【請求項５】
請求項４に記載の通信制御装置において、
前記処理手段は、
前記第一の送受信手段の送受信した第一の送受信情報または前記第二の送受信手段の送受信した第二の送受信情報のうち少なくも一方の送受信情報を前記同期パケットに記憶し、前記第一の送受信手段又は前記第二の送受信手段が前記同期パケットを受信した際に、記憶した前記送受信情報を基に、前記受信した同期パケットに対する処理として、前記同期パケットの受信、前記同期パケットの破棄、或いは前記同期パケットの転送のうち少なくとも一つの処理を実行することを特徴とする通信制御装置。
【請求項６】
請求項５に記載の通信制御装置において、
前記処理手段は、
前記第一の送受信手段が前記同期パケットを受信した際に、前記記憶した送受信情報の中に前記第二の送受信手段から前記同期パケットを送信済みであることを示す情報が存在しない場合、経路異常と判定し、前記第一の送受信手段が受信した前記同期パケットを前記第二の送受信手段を介して前記第二の通信経路に転送することを特徴とする通信制御装置。
【請求項７】
請求項４に記載の通信制御装置において、
前記処理手段は、
計時の要否と、前記第一の送受信手段での受信後の前記同期パケットの転送先と、前記第二の送受信手段での受信後の前記同期パケットの転送先と、前記第二の送受信手段による送信の要否をそれぞれ識別する識別子を前記同期パケットに関連づけて記憶し、前記第一の送受信手段又は前記第二の送受信手段が前記同期パケットを受信した際に、前記識別子に基づいて、前記同期パケットの受信、前記同期パケットの破棄或いは前記同期パケットの転送のうち少なくとも一つの処理を実行することを特徴とする通信制御装置。
【請求項８】
請求項４に記載の通信制御装置において、
前記処理手段は、
前記第一の送受信手段が前記第一の通信経路に前記同期パケットを送信する際に、前記第二の通信遅延を算出するための遅延情報となるデータグラムを前記同期パケットに付加することを特徴とする通信制御装置。
【請求項９】
請求項８に記載の通信制御装置において、
前記データグラムは、
前記処理手段が、前記同期パケットに付加される論理アドレスまたは設定済みアドレスへアクセスするデータグラムであることを特徴とする通信制御装置。
【請求項１０】
請求項４に記載の通信制御装置において、
前記処理手段は、
前記第一の送受信手段が前記第一の通信経路に送信した前記同期パケットを、前記第二の送受信手段が前記第二の通信経路から受信した第一の受信時刻を保持し、前記同期パケットを受信後に前記第二の送受信手段を介して前記同期パケットを前記第二の通信経路に送信し、その後、前記第一の送受信手段が前記第一の通信経路から前記同期パケットを受信する第二の受信時刻を保持し、前記第一の受信時刻と前記第二の受信時刻とを基に前記第二の通信遅延を算出することを特徴とする通信制御装置。
【請求項１１】
請求項４に記載の通信制御装置において、
前記処理手段は、
前記第二の送受信手段が前記第二の通信経路から前記同期パケットを受信した際に、受信した前記同期パケットに、前記第二の通信経路中に存在する通信対象の変更を示す変更情報が存在する場合、前記変更情報を基に前記時刻情報を補正するための補正量を示す前記遅延変化分を変更し、変更した前記遅延変化分を基に前記第二の送受信手段から前記同期パケットの宛先へ送信する前記同期パケットに属する前記時刻情報を補正することを特徴とする通信制御装置。
【請求項１２】
請求項４に記載の通信制御装置において、
前記処理手段は、
前記第一の送受信手段の受信した前記同期パケットに属する前記時刻情報と、前記時刻情報を補正するための補正量を示す前記遅延変化分に基づいて、前記処理手段が管理する時刻情報を前記同期パケットの送信元に同期させることを特徴とする通信制御装置。
【請求項１３】
請求項１に記載の通信制御装置において、
前記処理手段は、
前記送受信手段の通信対象の変更に伴って、前記同期パケットの通信経路が、前記第一の通信経路から前記第二の通信経路に変更され、前記第二の通信経路が前記ネットワーク上で動的に構成される場合、前記第一の通信経路における前記第一の通信遅延と前記第二の通信経路における前記第二の通信遅延とを基に前記遅延変化分を算出することを特徴とする通信制御装置。
【請求項１４】
時刻情報を含む同期パケットの通信経路を構成するネットワーク中に配置される複数のネットワーク中継装置と、前記複数のネットワーク中継装置の各々に接続されて前記同期パケットを通信する複数の通信装置と、を備え、
前記複数のネットワーク中継装置又は前記複数の通信装置のうち少なくとも一つは、
前記同期パケットを送受信する１又は２以上の送受信手段と、
前記送受信手段の受信した前記同期パケットを処理する処理手段と、を備え、
前記処理手段は、
前記同期パケットの宛先への通信経路として、第一の通信経路に対して冗長化された第二の通信経路を含む場合、前記第一の通信経路を前記同期パケットが通信する際の第一の通信遅延と、前記第二の通信経路を前記同期パケットが通信する際の第二の通信遅延との遅延変化分を基に前記同期パケットに属する前記時刻情報を補正することを特徴とする通信制御システム。
【請求項１５】
時刻情報を含む同期パケットの通信経路を構成するネットワーク中に配置される制御用計算機と、前記ネットワーク中に配置されて前記同期パケットを基に制御対象を制御する複数の被制御装置と、を備え、
前記制御用計算機又は前記複数の被制御装置のうち少なくとも一つは、
前記同期パケットを送受信する１又は２以上の送受信手段と、
前記送受信手段の受信した前記同期パケットを処理する処理手段と、を備え、
前記処理手段は、
前記同期パケットの宛先への通信経路として、第一の通信経路に対して冗長化された第二の通信経路を含む場合、前記第一の通信経路を前記同期パケットが通信する際の第一の通信遅延と、前記第二の通信経路を前記同期パケットが通信する際の第二の通信遅延との遅延変化分を基に前記同期パケットに属する前記時刻情報を補正することを特徴とする通信制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信制御装置及び通信制御システムに関する。
【背景技術】
【０００２】
制御システムとして、制御用計算機が、ネットワークを介して単一または複数の制御対象を制御する構成がある。このような制御システムにおいては、実現するアプリケーションに応じて、接続装置間の時刻を同期することが求められる場合がある。ネットワークで接続された分散制御システムの場合は、ネットワークを介した時刻同期パケットの送受信によって、時刻を同期することができる。
【０００３】
電力系統の監視制御装置や保護制御装置を例にとれば、電流差動保護方式では複数点での同時刻の電流値を比較して事故判定するため、時刻同期が求められる。地絡事故の発生箇所を特定する故障点標定装置においても同様である。産業用製造装置の場合、ロボットアーム、チップマウンタ、工作機械テーブル等の制御対象を複数のサーボモータで動作させる。制御対象に所望の動作をさせるためには、それらの複数のサーボモータを同期して制御する必要がある。この他にも、時刻同期の応用としては、計測、測定の分野や、マルチメディア、無線通信等の基地局がある。
【０００４】
ネットワークを用いた時刻同期方式として、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）、ＳＮＴＰ（Ｓｉｍｐｌｅ  Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）、ＩＥＣ６１１５８、ＩＥＣ６１７８４−２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２（以下、ＥｔｈｅｒＣＡＴ（登録商標）とする）、ＩＥＥＥ１５８８等が挙げられる。
【０００５】
これらのプロトコルに共通する点は、ネットワーク上で時刻情報パケットをやりとりすることで、通信装置間の通信遅延を計測し、時刻を同期するものである。このとき、ネットワーク上で、基準となる時刻情報を提供する通信装置（以下、時刻マスタとする）を決め、残りの通信装置（以下、時刻スレーブとする）が時刻マスタへ同期する。なお、時刻マスタ、時刻スレーブは役割であって、時刻同期プロトコルによって、通信装置は動的に時刻マスタ、時刻スレーブのいずれにもなりうる。
【０００６】
同時に、このようなネットワークで接続される制御システムは、制御処理を高信頼に実行するために通信経路の冗長化がなされることがある。特に異常発生時に制御処理が正しく実行されないことで多大な被害を及ぼす場合は、このような処置がなされる。通信経路の異常としては、通信ケーブルの断線や接触不良、コネクタ、ケーブルの脱離が例示される。
【０００７】
冗長化した経路の利用方法は、障害発生時に冗長経路を利用する方式と、冗長経路を常時用いる方式がある。
【０００８】
前者の一例としては、ＩＥＥＥ８０２．１７のＲＰＲ（Ｒｅｓｉｌｉｅｎｔ  Ｐａｃｋｅｔ  Ｒｉｎｇ）方式があり、後者の例としては、ＩＥＣ６２４３９−３におけるＨＳＲ（Ｈｉｇｈ  ａｖａｉｌａｂｉｌｉｔｙ  Ｓｅａｍｌｅｓｓ  Ｒｉｎｇ）、ＰＲＰ（Ｐａｒａｌｌｅｌ  Ｒｅｄｕｎｄａｎｃｙ  Ｐｒｏｔｏｃｏｌ）と呼ばれる方式がある。ＩＥＥＥ８０２．１７は、障害復帰時間が０ではないが、効率よくネットワーク回線の帯域を利用できる。一方、ＰＲＰとＨＳＲは、常時、冗長経路を利用するため、通信帯域の利用効率は下がるが、障害復帰時間が０である。障害復帰時間が０であるため、ＰＲＰ、ＨＳＲは制御システムに適している。ＲＰＲ、ＨＳＲは、ネットワークを構成するノードがリングトポロジを構成するリングネットワークである。
【０００９】
これらのネットワークは、製造装置、工作機械、プラントにおける制御装置（コントローラ）、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）、電力系統におけるＩＥＤ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｖｉｃｅ）や保護制御装置を含め、通信機器を接続するネットワークに適用可能である。
【００１０】
例えば、リアルタイムＥｔｈｅｒｎｅｔであるＥｔｈｅｒＣＡＴ（登録商標：ＩＥＣ６１７８４パート２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２）について説明する。ＥｔｈｅｒＣＡＴでは、制御用計算機であるマスタと制御対象に備え付けられるスレーブデバイス（以下、スレーブとする）でリングトポロジを構成する。一般に、スレーブでは２つのＥｔｈｅｒｎｅｔポートを有し、これを接続していくことでリングトポロジを構成する。加えて、マスタにＥｔｈｅｒｎｅｔの通信ポートを２つ持たせることで、リングトポロジへの接続を冗長化させる方式がとられる。物理的にＥｔｈｅｒＣＡＴマスタに２つの通信ポートを持たせた場合、冗長化の方法として２つの通信ポートの両方から同一のパケットを送信する。なお、時刻同期に関する技術として、特許文献１が挙げられ、ネットワークシステムに関する技術として、特許文献２が挙げられる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１２−０２３６５４号公報
【特許文献２】特開２０１５−１０３９７８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、一般に時刻同期と経路冗長化の両立は困難である。これは、ネットワークを用いた時刻同期プロトコルにおいて、通信遅延が特定の通信経路に依存する一方で、通信経路の冗長化は、経路異常発生時に代替経路を用いるため、通信経路の遅延が変化するためである。
【００１３】
特許文献１は、マスタを複数用意することで時刻同期システムを高信頼化している。全てのスレーブ装置において、マスタの優先度を決定する変更が必要であり、ＩＥＥＥ  １５８８等の標準規格準拠機器を用いる場合よりもシステム構築において高コストとなる。
【００１４】
特許文献２は、ＩＥＣ  ６２４３９−３に対して、中継装置を用いて通信経路を冗長化することが示されている。中継装置が時刻同期プロトコルに対応している場合や、中継装置の通過遅延が一定、あるいは同期の要求精度に対して極めて短いとみなせる場合は時刻同期が可能である。しかしながら、冗長経路を用いて、かつ、中継装置に汎用機器（ＩＥＥＥ  １５８８未対応）を用いた場合に変化する通信遅延が補正されないため、同期精度が低下する懸念がある。
【００１５】
本発明の目的は、経路冗長化により高信頼化が実現されるネットワークであっても、時刻同期が可能になる通信制御装置及び通信制御システムを提供することにある。
【課題を解決するための手段】
【００１６】
本発明は、上記課題を解決するために、時刻情報を含む同期パケットの通信経路を構成するネットワークの状況を監視し、前記同期パケットの通信経路として、少なくとも第一の通信経路に対して冗長化された第二の通信経路を含む場合、前記第一の通信経路を前記同期パケットが通信する際の第一の通信遅延と、前記第二の通信経路を前記同期パケットが通信する際の第二の通信遅延との遅延変化分を基に前記同期パケットに属する前記時刻情報を補正することを特徴とする。
【発明の効果】
【００１７】
本発明によれば、経路冗長化により高信頼化が実現されるネットワークであっても、時刻同期が可能になる通信制御装置及び通信制御システムを提供できる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第一実施例におけるシステム構成図である。
【図２】本発明の第一実施例でのハードウェア構成図である。
【図３】本発明の第一実施例を示す機能構成図である。
【図４】本発明の第一実施例におけるネットワーク中継装置の設定を示した説明図である。
【図５】本発明の第一実施例における通信装置の設定を示した説明図である。
【図６】本発明の第一実施例における実行手順を示したフローチャートである。
【図７】本発明の第一実施例における実行手順を示したフローチャートである。
【図８】本発明の第一実施例におけるネットワーク中継装置の設定を示した説明図である。
【図９】本発明の第一実施例におけるネットワーク中継装置の設定を示した説明図である。
【図１０】本発明の第一実施例の動作を示した説明図である。
【図１１】ＩＥＥＥ  １５８８メッセージを示した構成図である。
【図１２】本発明の第二実施例を用いたシステム構成図である。
【図１３】本発明の第二実施例でのハードウェア構成図である。
【図１４】本発明の第二実施例を示す機能構成図である。
【図１５】ＥｔｈｅｒＣＡＴスレーブのハードウェア構成図である。
【図１６】ＥｔｈｅｒＣＡＴのスレーブＩＣの機能構成図である。
【図１７】時刻同期における通信遅延の計測方法を示した説明図である。
【図１８】本発明の第二実施例におけるパケットの通信経路を示した説明図である。
【図１９】本発明の第二実施例におけるパケットの通信経路を示した説明図である。
【図２０】ＥｔｈｅｒＣＡＴフレームのフォーマットを示した構成図である。
【図２１】本発明の第二実施例におけるパケットへの識別子を示した説明図である。
【図２２】本発明の第二実施例の動作を示した図であって、（ａ）は、主ポートでの受信時の説明図、（ｂ）は、冗長ポートでの受信時の説明図である。
【図２３】本発明の第二実施例におけるパケットの通信経路を示した説明図である。
【図２４】本発明の第二実施例の動作を示した説明図である。
【図２５】本発明の第三実施例におけるパケットの通信経路を示した説明図である。
【図２６】本発明の第四実施例におけるシステム構成図である。
【図２７】本発明の第四実施例におけるパケットの通信経路を示した説明図である。
【図２８】本発明の第五実施例におけるシステム構成図である。
【発明を実施するための形態】
【００１９】
制御用ネットワークに接続された制御用計算機。
【実施例１】
【００２０】
（システム例）
本発明を適用した第一実施例におけるシステム構成を図１に示す。通信装置１２０ａ〜１２０ｌ（以下、通信装置１２０ａ〜１２０ｌを総称して通信装置１２０と称することがある。）は、ネットワーク１２２、ネットワーク中継装置１２１ａ〜１２１ｈ（以下、ネットワーク中継装置１２１ａ〜１２１ｈを総称してネットワーク中継装置１２１と称することがある。）を介して、他の通信装置１２０と接続し、通信する。
【００２１】
通信装置１２０は、ＩＥＣ６２４３９−３で定義されるＨＳＲノード（ＤＡＮＨ：Ｄｏｕｂｌｅ  ａｔｔａｃｈｅｄ  ｎｏｄｅ  ｉｍｐｌｅｍｅｎｔｉｎｇ  ＨＳＲ）を一例として、本発明の効果を説明する。
【００２２】
通信装置１２０は、ＨＳＲに対応した装置であり、他の通信装置１２０に対して、パケットを送受信することにより、制御指令値の伝送、計測値の取得や各種設定を実行する。
【００２３】
通信装置１２０は、電力系統の保護制御装置のように、各制御システム内のサンプリングデータや、制御指令、状態信号をやりとりすることが例示される。同一制御システム内のデータをパケット内に格納してもよい。
【００２４】
通信装置１２０として、専用コントローラ、産業用パソコン、制御用計算機、ＩＥＤ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｖｉｃｅ）、保護制御装置が例示される。
【００２５】
ネットワーク中継装置１２１は、ネットワーク１２２における中継装置であり、通信装置１２０やネットワーク中継装置１２１の通信する同期パケット（以下、パケットと称することもある。）を経路制御し、転送する。ネットワーク中継装置１２１として、Ｌ２スイッチ、Ｌ３スイッチを含むネットワークスイッチ、ブリッジ、ルータ、ＩＥＥＥ １５８８のＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）、ＢＣ（Ｂｏｕｎｄａｒｙ  Ｃｌｏｃｋ）、ＯｐｅｎＦｌｏｗスイッチ、ＩＥＣ  ６２４３９−３で定義されるＲｅｄＢｏｘ、ＱｕａｄＢｏｘ、光スイッチ、光合波器、光分波器等の各種ネットワーク中継装置が例示される。通信装置１２０とネットワーク中継装置１２１は、後述するように、いずれも、同期パケットを送受信する１又は２以上の送受信手段と、送受信手段の受信した同期パケットを処理する処理手段とを有する通信制御装置としての機能を有している。
【００２６】
ネットワーク１２２は、時刻情報を含む同期パケットの通信経路を構成するネットワークであって、通信装置１２０、ネットワーク中継装置１２１を接続するネットワークであり、ＩＥＥＥ  ８０２．３（Ｅｔｈｅｒｎｅｔ）、ＩＥＣ６１７８４、ＩＥＣ６１１５８で定義される制御用ネットワークを含む各種産業用ネットワーク、リングネットワーク、ＩＥＥＥ８０２．１７等を含む。
【００２７】
なお、図１では、ネットワーク中継装置１２１間に３つの通信装置１２０を接続しているが、異なる数でもよいし、各中継装置１２１間の通信装置１２０の数が拠点ごとに異なっていてもよい。例えば、ネットワーク中継装置１２１ａとネットワーク中継装置１２１ｈの間は、通信装置１２０が１台、ネットワーク中継装置１２１ｂとネットワーク中継装置１２１ｃの間が４台であってもよい。
【００２８】
また、図１では、リングネットワークを構成する通信装置１２０間を２つのネットワーク中継装置１２１で接続している（例えば、通信装置１２０ａと通信装置１２０ｃ間をネットワーク中継装置１２１ａとネットワーク中継装置１２１ｈで接続）が、ネットワーク中継装置１２１の数は一つでも、複数でもよい。
【００２９】
図１に示すシステム構成として、電力分野の監視制御・保護制御システムや、産業用機器、半導体製造装置、車載システム、建設機械や鉄道車両内の制御システム、鉄道地上信号システム、航空機内の制御システムなどの通信制御システムが例示される。あるいは、ネットワーク１２２を介して収集した情報をもとに、通信装置１２０あるいは、図示していないクラウドやコンピュータ上で人工知能にて解析し、制御システムの性能向上を図るＩｏＴ（Ｉｎｔｅｒｎｅｔ  ｏｆ  Ｔｈｉｎｇｓ）システムなどが例示される。
【００３０】
（ハード構成）
図２に通信装置１２０のハードウェア構成を示す。
【００３１】
通信装置１２０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、通信制御部１０２、複数の送受信機（以下、ＰＨＹと称することがある。）１０３、メモリ１０４、不揮発性記憶媒体１０５、バス１０６から構成される。ＣＰＵ１０１、須通信制御部１０２、メモリ１０４、不揮発性記憶媒体１０５は、処理手段に属する要素として構成され、複数のＰＨＹ１０３は、送受信手段に属する要素として構成される。
【００３２】
ＣＰＵ１０１は、不揮発性記憶媒体１０５からプログラムをメモリ１０４に転送して実行する。実行処理プログラムとしては、オペレーティングシステム（以下、ＯＳと称す）やＯＳ上で動作するアプリケーションプログラムが例示される。ＣＰＵ１０１上で動作するプログラムは、通信制御部１０２の動作設定や、状態情報を取得する。
【００３３】
通信制御部１０２は、ＩＥＣ６２４３９−３のＨＳＲの通信機能を提供するＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
【００３４】
ＰＨＹ１０３は、ネットワーク１２２との通信機能を実装した送受信機ＩＣである。ＰＨＹ１０３の提供する通信規格としてＩＥＥＥ ８０２．３のＰＨＹ（物理層）チップが例示される。なお、図２の構成では、ＰＨＹ１０３と通信制御部１０２が接続しているので、ＩＥＥＥ ８０２．３のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）層の処理は通信制御部１０２に含まれる。ただし、ＭＡＣ機能を提供するＩＣを通信制御部１０２とＰＨＹ１０３間に配置する構成や、ＭＡＣ機能を提供するＩＣとＰＨＹ１０３を組み合わせた通信用ＩＣと通信制御部１０２を接続する構成においても、本発明の効果は失われるものではない。なお、ＰＨＹ１０３は、通信制御部１０２に含まれていてもよい。
【００３５】
メモリ１０４は、ＣＰＵ１０１が動作するための一時的な記憶領域であり、不揮発性記憶媒体１０５から転送したＯＳ、アプリケーションプログラム等が格納される。また、図２の構成では、ＰＨＹ１０３を２つ示しているが、ＰＨＹ１０３の数は、通信制御部１０２が対応する通信ポート数と同じである。
【００３６】
不揮発性記憶媒体１０５は、情報の記憶媒体で、ＯＳ、アプリケーション、デバイスドライバ等や、ＣＰＵ１０１を動作させるためのプログラムの保存、プログラムの実行結果の保存に利用される。不揮発性記憶媒体１０５として、ハードディスクドライブ（ＨＤＤ）やソリッドステートドライブ（ＳＳＤ）、フラッシュメモリが例示される。また、取り外しが容易な外部記憶媒体として、フロッピーディスク（ＦＤ）、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｉｄｅｏ  Ｄｉｓｃ）、ブルーレイ（登録商標）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリ、コンパクトフラッシュ（登録商標）等の利用が例示される。
【００３７】
バス１０６は、ＣＰＵ１０１、通信制御部１０２、メモリ１０４、不揮発性記憶媒体１０５をそれぞれ接続する。バス１０６としては、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス、ＩＳＡ（Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、システムバス、メモリバス等が例示される。
【００３８】
（ＨＳＲ機能ブロックの構成）
通信制御部１０２の機能構成を図３に示す。
【００３９】
通信制御部１０２は、送信制御部１３０、受信制御部１３１、送信部１３２（１３２ａ、１３２ｂ）、受信部１３３（１３３ａ、１３３ｂ）、マルチプレクサ（ＭＵＸ）１３６（１３６ａ、１３６ｂ）、システム識別子１３７、システム識別子変換部１３８、ネットワーク中継装置設定部１３９、グループ位置識別子１４０を備え、送信制御部１３０がマルチプレクサ（ＭＵＸ）１３６（１３６ａ、１３６ｂ）及びバス１３４に接続され、受信制御部１３１がマルチプレクサ（ＭＵＸ）１３６（１３６ａ、１３６ｂ）と受信部１３３（１３３ａ、１３３ｂ）及バス１３５に接続され、マルチプレクサ（ＭＵＸ）１３６（１３６ａ、１３６ｂ）が送信部１３２ａ又は送信部１３２ｂに接続されている。この際、送信制御部１３０と受信制御部１３１が、時刻補正部として機能する。
【００４０】
送信制御部１３０は、バス１３４から通知されたデータ、あるいはパケットを加工し、送信部１３２ａ、送信部１３２ｂのいずれか、または両方へ送信する。送信制御部１３０の加工処理は、データからフレームを生成する処理や、データまたはパケットの複製、所定のタグを追加することや、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）などの異常診断データの計算と付加が例示される。
【００４１】
送信制御部１３０が付加するタグとして、ＩＥＣ６２４３９−３で定義されるＨＳＲタグ、ＰＲＰタグが例示される。
【００４２】
送信制御部１３０は、通信制御部１０２またはＣＰＵ１０１上のソフトウェアのいずれか、または両方で実装することが例示される。
【００４３】
受信制御部１３１は、受信部１３３ａ、受信部１３３ｂから受信したデータを加工し、所定の規則に従ってバス１３５、または送信部１３２ａ、送信部１３２ｂへ転送する。受信制御部１３１の加工処理としては、パケットに付加されたタグの除去やデータの抽出が例示される。
【００４４】
受信制御部１３１がパケットを転送する規則としては、パケットに付与された宛先アドレス、送信元アドレス、パケット種別、ＩＥＥＥ  ８０２．１Ｑで定義されるＶＬＡＮ（Ｖｉｒｔｕａｌ  Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）グループ、優先度、シーケンス番号などに基づくことが例示される。アドレス体系としては、ＩＥＥＥ  ８０２．３のＭＡＣアドレス、ＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）アドレスが例示される。例えば、ＩＥＣ６２４３９−３のＨＳＲでは、受信部１３３ａから受信したパケットの送信元ＭＡＣアドレスとシーケンス番号で判別されるパケットが最初の受信であれば、送信部１３２ｂへ転送し、２回目以降のパケットであれば破棄する。パケットの宛先アドレスがマルチキャスト、またはブロードキャストである場合は、他の通信ポートだけでなく、バス１３５へ転送する場合もあり得る。
【００４５】
受信制御部１３１は、処理したパケットの情報を一定期間記憶するために情報記憶手段を有し、処理したパケットの情報（例えば、送信元アドレス、シーケンス番号）を記憶する。
【００４６】
受信制御部１３１は、通信制御部１０２またはＣＰＵ１０１上のソフトウェアのいずれか、または両方で実装することが例示される。
【００４７】
送信部１３２は、ＰＨＹ１０３と接続して、ＰＨＹ１０３に対して、パケット、データを送信する機能部である。ＰＨＹ１０３で説明したとおり、送信部１３２がＭＡＣ機能を有することが例示され、通信制御部１０２で実装することが例示される。
【００４８】
受信部１３３は、ＰＨＹ１０３と接続して、ＰＨＹ１０３からパケット、データを受信する機能部である。ＰＨＹ１０３で説明したとおり、受信部１３３がＭＡＣ機能を有することが例示され、通信制御部１０２で実装することが例示される。
【００４９】
バス１３４は、通信装置１２０のバス１０６に接続し、バス１０６からデータを受信する。バス１３５は、バス１０６に接続し、バス１０６へデータを転送する。バス１３４、バス１３５を分離して記載しているが、これは論理的なデータの流れを示すためであって、物理的にバス１０６と同じである。送信部１３２、受信部１３３がバス１０６への接続機能を提供することが例示される。
【００５０】
マルチプレクサ（ＭＵＸ）１３６は、複数のデータ入力から、１つのデータ出力を生成する機能であって、複数入力から１入力を選択してもよいし、結合、あるいは多重化してもよい。
【００５１】
マルチプレクサ（ＭＵＸ）１３６は、通信制御部１０２で実装することが例示される。
【００５２】
システム識別子１３７は、通信装置１２０が所属するシステムの識別子である。
【００５３】
システム識別子変換部１３８は、システム識別子１３７をネットワークプロトコル上での識別子に変換する。これにより、システム識別子１３７は、数字、文字列といった種類の情報を設定でき、システム識別子変換部１３８により、ＶＬＡＮのＶＩＤ（仮想ＬＡＮ用タグのＶＬＡＮ識別子）、ＨＳＲタグのパス識別子（ＰａｔｈＩｄ）、プロトコルアドレス（ＩＰアドレス、ＩＥＥＥ  ８０２．３のＭＡＣアドレス等）のユニキャストアドレス、マルチキャストアドレス、ブロードキャストアドレスに変換することができる。
【００５４】
システム識別子変換部１３８は、通信制御部１０２またはＣＰＵ１０１上で動作するソフトウェアのいずれか、または両方で実装することが例示される。
【００５５】
ネットワーク中継装置設定部１３９は、システム識別子変換部１３８が作成したネットワークプロトコル上の識別子を用いて、ネットワーク中継装置１２１の論理ネットワーク構築に関して設定する。
【００５６】
図４では、通信装置１２０がネットワーク中継装置１２１に対して、タグＶＬＡＮを設定する。例えば、通信装置１２０ａは、４つの通信ポート１９０ａ〜１９０ｄ、通信ポート１９０ｅ〜１９０ｈを有するネットワーク中継装置１２１ｈ、１２１ａに対して、論理ネットワークに対する宛先ポートを設定する。例えば、ネットワーク中継装置１２１ｈにおいて、タグ１をある論理ネットワークに割り当て、タグ２を別の論理ネットワークに割り当てる。
【００５７】
なお、ネットワーク中継装置１２１における論理ネットワークの設定は、図３のネットワーク中継装置設定部１３９を用いずに、ネットワーク中継装置１２１の提供する設定手段を用いて設定してもよい。また、図４のネットワーク中継装置１２１の通信ポート１９０ａ〜１９０ｄ、１９０ｅ〜１９０ｈの数は、４つで例示しているが、４以外の数でも構わない。
【００５８】
ネットワーク中継装置設定部１３９は、通信制御部１０２またはＣＰＵ１０１上で動作するソフトウェアのいずれか、または両方で実装することが例示される。
【００５９】
なお、システム識別子１３７、システム識別子変換部１３８、ネットワーク中継装置設定部１３９を通信装置１２０の機能部として示したが、ＣＰＵ１０１におけるソフトウェアとして実装してもよい。その際、通信装置１２０内には、システム識別子変換部１３８の生成した識別子の保持手段をもうけることが例示され、システム識別子１３７、システム識別子変換部１３８となるソフトウェアはバス１０６経由で、該保持手段に識別子を設定することが例示される。
【００６０】
グループ位置識別子１４０は、通信装置１２０が位置する拠点を表す識別子である。例えば、図５におけるグループ位置２００ａといったグループ位置を表す。システム識別子１３７の情報として、グループ位置識別子１４０を含めることが例示される。例えば、グループ位置識別子１４０をシステム識別子１３７の一部とする。また、ネットワーク中継装置設定部１３９は、グループ位置識別子１４０を用いてネットワーク中継装置１２１を設定してもよい。
【００６１】
（動作手順）
通信装置１２０ａの送信に関する動作手順を図６に示す。
【００６２】
はじめに、ＣＰＵ１０１上で動作するアプリケーションが通信制御部１０２に対して、データを用意し、バス１０６、バス１３４を用いて、送信するデータを伝送する（Ｓ００１）。データを受け取った通信制御部１０２では、送信制御部１３０がデータを複製し（Ｓ００２）、複製したデータそれぞれに対して加工する（Ｓ００３）。送信制御部１３０が実行する加工は、ＨＳＲタグの付加や、ＶＬＡＮタグの付加、ＣＲＣの計算、付加、パケットへの成形が例示される。
【００６３】
送信制御部１３０で加工された各データは送信部１３２へ伝送され、送信部１３２、ＰＨＹ１０３を用いて、ネットワーク１２２へ送信される（Ｓ００４）。
【００６４】
パケットを受信した通信装置１２０における転送処理を図７に示す。
【００６５】
はじめに、通信制御部１０２に接続される受信部１３３（受信部１３３ａ、１３３ｂ）は、パケットを受信したか否かを判定し、パケットを受信するまで待機する（Ｓ０１０）。受信部１３３は、パケットを受信したら、受信パケットの識別子を保持し（Ｓ０１１）、受信したパケットを受信制御部１３１へ転送する（Ｓ０１２）。受信制御部１３１は、最初に受信したパケット（先着パケット）かどうかを判定する（Ｓ０１３）。先着パケットであれば、受信制御部１３１は、この通信装置１２０宛のパケットかどうかを判定する（Ｓ０１４）。Ｓ０１３で、先着パケットでなければ、受信制御部１３１は、受信したパケットを破棄する（Ｓ０１５）。
【００６６】
Ｓ０１４で、この通信装置１２０宛のパケットであれば、受信制御部１３１は、パケットを通信装置１２０で受信するために、バス１３５、バス１０６を用いて、パケットをＣＰＵ１０１に伝送する（Ｓ０１６）。Ｓ０１４で、この通信装置１２０宛のパケットでない場合、あるいはＳ０１６の処理後に、受信制御部１３１は、このパケットを転送すべきかどうかを判定する（Ｓ０１７）。パケットを転送すべきかどうかは、パケットの宛先がマルチキャストアドレスかブロードキャストアドレスである場合が例示される。
【００６７】
受信パケットが転送すべきパケットである場合、受信制御部１３１は、パケットを受信した通信ポート以外の通信ポートの送信部１３２（送信部１３２ａ又は１３２ｂ）からパケットを送信する（Ｓ０１８）。
【００６８】
なお、Ｓ０１３で、先着パケットかどうかを判定するために、受信制御部１３１は、処理したパケットの情報を一定期間記憶するために情報記憶手段を有し、処理したパケットの情報（例えば、送信元アドレス、シーケンス番号）を記憶する（図７のＳ０１１）。なお、ＨＳＲでは、該情報記憶手段において、一定期間後に記憶されている情報は消去される。そのため、同じ識別子を有するパケットであっても、該情報記憶手段に識別子が保持されていなければ、Ｓ０１３において、先着パケットであると判定する。
【００６９】
（パケット受信処理）
通信装置１２０におけるパケット受信処理は、図７と同様の手順をとり、Ｓ０１６における受信処理によって、パケットを受信する。
【００７０】
（システム識別子の利用）
送信制御部１３０は、図６のＳ００３のデータ加工処理において、システム識別子変換部１３８の生成した識別子を用いることができる。例えば、システム識別子変換部１３８の生成したＶＩＤを用いてＶＬＡＮタグを生成することやＥｔｈｅｒｎｅｔヘッダの宛先アドレスを設定することが例示される。
【００７１】
受信制御部１３１は、システム識別子変換部１３８の生成した識別子を用いて、受信、転送を制御することができる。例えば、受信パケットのＶＬＡＮタグのＶＩＤが、パケットを受信した通信装置１２０の所属するＶＩＤと異なれば、図７のＳ０１４の判断において、パケットを受信しないことが例示される。
【００７２】
（冗長経路の利用）
図１のネットワーク中継装置１２１ｈ、１２１ａ、通信装置１２０ａ、１２０ｂ、１２０ｃに着目して、ネットワーク中継装置１２１の設定例を図８に示す。図８におけるネットワーク中継装置１２１の設定は、転送先の宛先ポートを複数設定している。図８に示すようにタグ１を有するパケット１５０が、通信ポート１９０ａ〜１９０ｄを有するネットワーク中継装置１２１ｈに入力されると、ネットワーク中継装置１２１ｈから、パケット１５０の宛先となる宛先の通信装置１２０ａに対して、通信経路１６０、１６１、１６２を経由して、パケット１５０が伝送される。したがって、通信経路１６０、１６１、１６２のいずれかに障害が起きた場合であっても、パケット１５０が宛先の通信装置１２０に到達することができる。同様に、パケット１５０の宛先がネットワーク中継装置１２１ａの先に接続している場合も通信装置１２０ａ、１２０ｂ、１２０ｃを経由する３つの通信経路１６０、１６１、１６２を通って伝送することができる。
【００７３】
経路数（通信経路の数）の制御は、ポートベースＶＬＡＮとタグＶＬＡＮを組み合せて設定してもよい。
【００７４】
なお、転送経路の数（各タグに対する転送ポート）は、システムの重要性や、通信装置１２０の演算能力、計算機資源の性能によって決定してもよい。
【００７５】
（通信装置によるＶＩＤの変更）
あるいは、通信装置１２０がＶＬＡＮタグのＶＩＤを変更して経路数を制御してもよい。
【００７６】
図９は、各通信装置１２０において、ＶＬＡＮタグのＶＩＤを変更する処理を示す。例えば、通信装置１２０ａにおいて、ＶＬＡＮのＶＩＤを２に変更し、ネットワーク中継装置１２１ａにおいて、ＶＩＤが２であるパケットに対して、通信ポート１９０ｅ、１９０ｈに転送するように設定している。このような設定により、冗長化する経路数を制御することができる。
【００７７】
（所属システム、グループ位置に基づいた転送制御）
加えて、リングネットワーク内での位置情報を考慮したパケット転送制御を、図５を用いて説明する。
【００７８】
各通信装置１２０は、所属する制御システムの識別子（例、１、２、３）とともに、グループ位置（例、２００a、２００ｂ、２００ｃ、２００ｄ）を有する。制御システムの情報とグループ位置情報をパケット上に反映し、各通信装置１２０は該情報にしたがって転送制御することが例示される。
【００７９】
バケットへの制御システム情報とグループ位置情報の反映方法は、例えば、マルチキャストアドレス、ＶＬＡＮのＶＩＤ、ＨＳＲタグ、ＩＰアドレス、その他のプロトコルヘッダに反映することが例示される。例えば、ＨＳＲで利用可能なマルチキャストアドレスの範囲０１−１５−４Ｅ−００−０１−ＸＸのうち、最後の１オクテットのうち、上位４ビットをシステム識別子、下位４ビットをグループ位置とすることが例示される。例えば、０１−１５−４Ｅ−００−０１−１２は、制御システム１（１２の”１”）に所属し、グループ位置２００ｂ（グループ位置２００ａをＭＡＣアドレス１、グループ位置２００ｂをＭＡＣアドレス２に割り当てるとする。１２の“２”）に位置する通信装置１２０を表すとする。
【００８０】
通信装置１２０で受信したパケットから取得した制御システム情報、グループ位置情報と、経路制御ルール２２０を利用して制御する。
【００８１】
経路制御ルール２２０は、受信パケットから得られる制御システム情報、グループ位置情報と、パケットを受信した通信装置１２０の制御システム情報、グループ位置情報との比較による経路制御である。
【００８２】
制御システムが同じで、グループ位置が同じであれば、パケットを受信する。制御システムが同じで、グループ位置が異なれば、パケットを転送する。制御システムが異なり、グループ位置が同じであれば、パケットを転送する。制御システムが異なり、グループ位置が異なれば、パケットを転送する。このような設定であれば、冗長経路を利用し、高信頼化できる。
【００８３】
なお、送信制御部１３０や受信制御部１３１は、経路の状態に応じて、動的に経路制御ルール２２０を変更してもよい。例えば、受信パケット数が少ない場合は、通信量の増加を許容できるため、多経路にパケットを転送して高信頼を図ることができる。同様に通信装置１２０の処理負荷が低い場合は、転送処理による負荷の影響が低いと考えられるため、多経路にパケットを転送して高信頼を図ることができる。
【００８４】
これらの転送制御は通信装置１２０ごとに異なっていてもよい。
【００８５】
（時刻情報の補正）
ここで、図１０を用いて冗長経路を利用する場合の時刻の補正について述べる。
【００８６】
通信装置１２０ａに対する同期パケット（例えば、ＩＥＥＥ  １５８８のＳｙｎｃメッセージ）を対象とした場合、例えば、通信装置１２０ｌからネットワーク中継装置１２１ｈを介して通信装置１２０ａにパケット１５０を送信する場合、本来の通信経路１６０ではなく、通信装置１２０ｂを経由する場合は、冗長経路となる通信経路１６１を通るため、通信遅延が異なる。したがって、この遅延（遅延時間）を補正する必要がある。
【００８７】
通信装置１２０ｂ、通信装置１２０ａ及びネットワーク中継装置１２１ａがＩＥＥＥ  １５８８のｐｅｅｒ  ｄｅｌａｙメカニズムに対応している場合は、事前に接続経路における対向装置間の遅延を計測している（通信装置１２０ａとネットワーク中継装置１２１ｈ間、通信装置１２０ｂとネットワーク中継装置１２１ｈ間、通信装置１２０ａとネットワーク中継装置１２１ａ間、通信装置１２０ｂとネットワーク中継装置１２１ａ間の経路の遅延）。ＩＥＥＥ  １５８８のｐｅｅｒ  ｄｅｌａｙの時刻補正においては、事前に計測した遅延を入力経路とする装置が補正するため、例えば、通信装置１２０ａとネットワーク中継装置１２１ｈ間の経路遅延は通信装置１２０ａがＳｙｎｃメッセージを受信した際に、Ｓｙｎｃメッセージ上のｃｏｒｒｅｃｔｉｏｎ  ｆｉｅｌｄ（図１１のＩＥＥＥ  １５８８のパケットフォーマット中のｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄ１７８）を補正する。
【００８８】
（Ｃｏｒｒｅｃｔｉｏｎ  Ｆｉｅｌｄの補正）
なお、ネットワーク中継装置１２１がＩＥＥＥ  １５８８に対応しない場合について説明する。
【００８９】
このとき、本来、通信装置１２０ａへの通信経路は、通信装置１２０ｌからの通信経路２３１か、通信装置１２０ｋからの通信経路２３２、通信経路１６０があり得る。これが通信装置１２０ｂを経由する通信経路１６１となるため、その遅延を補正する必要がある。
【００９０】
このとき、遅延を補正する装置は、通信装置１２０ｂと通信装置１２０ａがあり得る。通信装置１２０ａが補正する場合は、通信経路２３１または通信経路２３２の遅延を通信装置１２０ａにて補正する場合である。
【００９１】
この場合は、通信装置１２０ａによる補正を考慮して、通信装置１２０ｂで通信経路１６１の遅延を補正する。
【００９２】
通信経路（第一の通信経路）１６０での遅延（第一の通信経路を同期パケットが通信する際の第一の通信遅延）をＤ１、通信経路（第二の通信経路）１６１での遅延（第二の通信経路を同期パケットが通信する際の第二の通信遅延）をＤ２とすると、通信装置１２０ｂでの補正遅延（遅延変化分）は、Ｄ２−Ｄ１となる。
【００９３】
パケット上の遅延補正対象はタイムスタンプ、またはｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄであり、通信装置１２０ｂにおける受信時のｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄをＣＦｏｌｄ、補正後のｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄをＣＦｎｅｗとすると、補正は以下の（１）式となる。
【００９４】
ＣＦｎｅｗ＝ＣＦｏｌｄ＋（Ｄ２−Ｄ１）  ・・・（１）
【００９５】
タイムスタンプを補正する場合、通信装置１２０ｂにおける受信時のタイムスタンプをＴＳｏｌｄ、補正後のタイムスタンプをＴＳｎｅｗとすると、補正は以下の（２）式となる。
【００９６】
ＴＳｎｅｗ＝ＴＳｏｌｄ＋（Ｄ２−Ｄ１）  ・・・（２）
【００９７】
このように補正すれば、通信装置１２０ａでは従来どおりの計算方法で同期することができる。
【００９８】
具体例を用いて説明する。
今、ネットワーク中継装置１２１ｈの出力ポートでＳｙｎｃメッセージを出力する瞬間を仮定する。このとき送信元が格納したタイムスタンプ（図１１のｏｒｉｇｉｎＴｉｍｅｓｔａｍｐ１８３）ＴＳが１０秒０００で、ｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄ（図１１のｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄ１７８）ＣＦｏｌｄが１０マイクロ秒であったとする。通信経路１６０の遅延Ｄ１を１０マイクロ秒、通信経路１６１の遅延Ｄ２を２０マイクロ秒とする。また、その瞬間の通信装置１２０ａの時刻Ｃａ１を１１秒１０マイクロ秒とする。
【００９９】
経路異常がなく、通信装置１２０ａが通信経路１６０を介して、Ｓｙｎｃメッセージを受信したとすると、通信装置１２０ａの時刻Ｃａ２は１１秒２０マイクロ秒（Ｃａ１＋Ｄ１）である。このとき、Ｓｙｎｃメッセージの送信元の時刻Ｃｓ２は１０秒２０マイクロ秒（ＴＳ＋ＣＦｏｌｄ＋Ｄ１）である。したがって、送信元の通信装置１２０と通信装置１２０ａの時刻オフセットＯｆｆｓｅｔは次の（３）式となる。
【０１００】
Ｏｆｆｓｅｔ  ＝  Ｃｓ２  −  Ｃａ２
＝  １０秒２０マイクロ秒  −  １１秒２０マイクロ秒
＝  −１秒              ・・・（３）
【０１０１】
したがって、通信装置１２０ａにおける同期時刻Ｃｒｅｆは通信装置１２０ａにおける時刻Ｃａと時刻オフセットＯｆｆｓｅｔを用いて、次の（４）式で求まる。
【０１０２】
Ｃｒｅｆ  ＝  Ｃａ  ＋  Ｏｆｆｓｅｔ        ・・・（４）
【０１０３】
通信経路１６０で経路異常が発生したとして、ｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄを補正する場合は、通信装置１２０ｂにて、次の（５）式を実行する。
【０１０４】
ＣＦｎｅｗ  ＝  ＣＦｏｌｄ  ＋（Ｄ２  −  Ｄ１）
＝  １０マイクロ秒  ＋  （２０マイクロ秒  ―  １０マイクロ秒）
＝  ２０マイクロ秒            ・・・（５）
【０１０５】
通信装置１２０ｂを経由した場合、通信装置１２０ａでＳｙｎｃメッセージを受信した時刻Ｃａ３は１１秒３０マイクロ秒（Ｃａ１＋Ｄ２）となる。
【０１０６】
このとき、Ｓｙｎｃメッセージの送信元の時刻Ｃｓ３は１０秒３０マイクロ秒（ＴＳ＋ＣＦｏｌｄ＋Ｄ２）である。通信装置１２０ａは、従来どおり、通信経路１６０の遅延Ｄ１を用いて、送信元の通信装置１２０の時刻を推定する。したがって、送信元の通信装置１２０と通信装置１２０ａの時刻オフセットＯｆｆｓｅｔは次の（６）式となる。
【０１０７】
Ｏｆｆｓｅｔ  ＝  Ｃｓ３  −  Ｃａ３
＝  １０秒３０マイクロ秒  −  １１秒３０マイクロ秒
＝  −１秒                ・・・（６）
【０１０８】
したがって、通信装置１２０ａは、自身が保持している遅延Ｄ１の情報をそのまま利用し、従来どおり、送信元の通信装置１２０との時刻同期を実行することができる。
【０１０９】
通信装置１２０ａではなく、通信装置１２０ｌまたは通信装置１２０ｋが通信経路２３１または通信経路２３２及び通信経路１６０の遅延を補正する場合は、同様に通信装置１２０ｂにて、（１）式または（２）式によってＤ２とＤ１との差分（遅延変化分）を基に、同期パケットに付加される時刻情報を補正することが例示される。
【０１１０】
以上の仕組みを実現するための構成を述べる。
通信装置１２０ａでｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄを補正する場合は、本来の通信経路と、その通信遅延を把握する必要がある。加えて、通信装置１２０ｂにおいては、どの通信装置１２０への通信であるか（今回の場合は通信装置１２０ａ）とその際の遅延（Ｄ２）が必要となる。
【０１１１】
送信元の通信装置１２０ｌ、通信装置１２０ｋの情報についてはパケット上に該通信装置１２０の識別子を格納する方法が例示される。これは通信装置１２０ｌ、通信装置１２０ｋの識別子でもよいし、通信装置１２０ｌまたは通信装置１２０ｋが所属するシステム識別子でもよい。なお、ＶＬＡＮを用いてシステム識別子を表現する場合は、パケット上のＶＬＡＮ  ＩＤをそのままシステム識別子として利用できない可能性があることに注意しなければならない。これは通信装置１２０ａ宛のパケットが通信装置１２０ｂを通るように、通信装置１２０ｌ、通信装置１２０ｋにおいても異なるグループの経路を通る場合があるためである。
【０１１２】
また、経路遅延Ｄ１、Ｄ２の計測は、ネットワーク中継装置１２１ａを介したＤｅｌａｙ  Ｒｅｑｕｅｓｔ  Ｒｅｓｐｏｎｓｅメカニズムやｐｅｅｒ  ｄｅｌａｙメカニズムなどを用いた遅延計測を実行することが例示される。これは制御システムの動作実行前に計測してもよいし、動作中に継続的に計測してもよい。
【０１１３】
なお、通信装置１２０ｂ内のパケットの滞留時間（転送時間）は、通信装置１２０ｂにて計測し、ｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄまたはタイムスタンプを補正することが例示される。なお、補正対象はＦｏｌｌｏｗ＿Ｕｐメッセージでもよい。
【０１１４】
また、隣接するネットワーク中継装置１２１間が複数の経路となるように構成してもよく（例えば、図１のネットワーク中継装置１２１ａとネットワーク中継装置１２１ｂを複数経路で接続する）、どの経路を通るかという情報をパケット上に含め、通信装置１２０ｂにおいて、利用する経路に応じた遅延を補正してもよい。補正の方法は、（１）式、（２）式と同様である。また通信装置１２０ではなく、ｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄまたはタイムスタンプの補正はネットワーク中継装置１２１が実行してもよい。
【０１１５】
以上のタイムスタンプまたはｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄの補正を含む、補正に係わる処理は受信制御部１３１または送信制御部１３０で実行することが例示される。
【０１１６】
なお、冗長経路を有する二重系ネットワークにおいて、経路異常後に冗長経路を利用する場合は、通信装置１２０において、事前あるいは動的に冗長経路上の通信遅延を計測しておき、冗長経路へ切り替え時に同期パケット上の時刻情報を、遅延変化分を用いて補正してもよい。
【０１１７】
これはネットワーク１２２上の一部の通信装置１２０が対応している状況でも構わない。この場合は、最終宛先ノードへの遅延を事前に計測しておく必要があるが、時刻の補正回数を削減できるため、補正処理時間にともなう同期誤差を低減でき、かつ、高速に転送できる。
【０１１８】
本実施例によれば、時刻同期と経路冗長化が両立するので、経路冗長化により高信頼化が実現されるネットワークであっても、時刻同期が可能になる。また、ＨＳＲ、ＰＲＰでは二重化までしか対応できないが、本実施例では、多重化したシステムの数だけの経路を利用することができ、より高信頼化できる。さらに、通信経路が冗長化されても、冗長化された通信経路中の通信装置やネットワーク中継装置で遅延変化分を基に同期パケットに属する時刻情報が補正され、同期パケットの受信側で遅延変化分を考慮して時刻情報を補正する必要がないので、受信側の通信装置が多くなる程、通信制御システム全体のコストを低減することができる。
【実施例２】
【０１１９】
図１２は、本発明を適用した制御用計算機２４０を用いて構成するシステム例である。
【０１２０】
制御用計算機２４０は、制御用ネットワーク２４２を介して、複数の被制御装置２４１（２４１ａ〜２４１ｄ）と接続し、各被制御装置２４１を制御する。制御用計算機２４０は、２つの通信ポートを有し、制御用ネットワーク２４２と接続する。制御用計算機２４０として、専用コントローラ、産業用パソコン、制御用計算機、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）、ＩＥＤ（Ｉｎｔｅｌｌｉｇｅｎｔ  Ｅｌｅｃｔｒｏｎｉｃ  Ｄｅｖｉｃｅ）、保護制御装置が例示される。
【０１２１】
被制御装置２４１は、制御用計算機２４０からの制御指令を受けて動作する。被制御装置２４１から動作情報を制御用計算機２４０へ提供してもよい。被制御装置２４１として、ＭＵ（Ｍｅｒｇｉｎｇ  Ｕｎｉｔ）、電力分野の主機（遮断器等）、インバータ、モータ、サーボアンプとサーボモータによる構成が例示される。なお、制御用計算機２４０と被制御装置２４１は、後述するように、いずれも、同期パケットを送受信する１又は２以上の送受信手段と、送受信手段の受信した同期パケットを処理する処理手段とを有する通信制御装置としての機能を有している。
【０１２２】
制御用ネットワーク２４２として、Ｅｔｈｅｒｎｅｔ（登録商標：ＩＥＥＥ８０２．３）、各種産業用ネットワーク、ＩＥＣ  ６１７８４、ＩＥＣ  ６１１５８、ＩＥＣ  ６１８５０（ＩＥＣ  ６１８５０−９０−３含む）、ＩＥＣ  ６２４３９、ＩＥＣ  ６１８５０−７−４２０、ＩＥＣ  ６０８７０−５−１０４、ＤＮＰ（Ｄｉｓｔｒｉｂｕｔｅｄ  Ｎｅｔｗｏｒｋ  Ｐｒｏｔｏｃｏｌ）３、ＩＥＣ  ６１９７０、ＩＥＥＥ  ８０２．１  ＡＶＢ、ＣＡＮ（Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ：登録商標)、ＤｅｖｉｃｅＮｅｔ、ＲＳ−２３２Ｃ、ＲＳ−４２２、ＲＳ−４８５、ＺｉｇＢｅｅ（登録商標）、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＩＥＥＥ  ８０２．１５、ＩＥＥＥ  ８０２．１、モバイル通信、ＯｐｅｎＡＤＲ、ＥＣＨＯＮＥＴ  Ｌｉｔｅ（登録商標）、ＯｐｅｎＦｌｏｗ（登録商標）等が例示される。
【０１２３】
図１３は、本発明を適用した制御用計算機２４０のハードウェア構成の一実施例である。
【０１２４】
制御用計算機２４０は、ＣＰＵ１０１、冗長化通信制御部２５０、ＰＨＹ１０３（１０３ａ、ＰＨＹ１０３ｂ）、メモリ１０４、不揮発性記憶媒体１０５、バス１０６を備えている。ＣＰＵ１０１、冗長化通信制御部２５０、メモリ１０４、不揮発性記憶媒体１０５は、処理手段に属する要素として構成され、ＰＨＹ１０３ａ、ＰＨＹ１０３ｂは、送受信手段に属する要素として構成される。
【０１２５】
冗長化通信制御部２５０は、ＣＰＵ１０１上で動作するプログラムから通信要求を受け取り、ＰＨＹ１０３（ＰＨＹ１０３ａ又は１０３ｂ）を用いて制御用ネットワーク２４２（２４２ａ又は２４２ｂ）に対して通信する。冗長化通信制御部２５０の実装例としては、ＦＰＧＡ、ＣＰＬＤ、ＡＳＩＣ、ゲートアレイ等のＩＣが例示される。なお、冗長化通信制御部２５０は、ＣＰＵ１０１に含まれていてもよい。
【０１２６】
（各機能部の説明）
図１４に本発明を適用した冗長化通信制御部２５０の機能構成図を示す。
【０１２７】
冗長化通信制御部２５０は、出力選択部２６０（出力選択部２６０ａ、２６０ｂ）、入力選択部２６１（入力選択部２６１ａ、２６１ｂ）、経路制御部２６２、時刻補正部２６３、バス２６４（バス２６４ａ、２６４ｂ、２６４ｃ、２６４ｄ、２６４ｅ）、計時部２６５、通信遅延記憶部２６６、送信部１３２（１３２ａ、１３２ｂ）、受信部１３３（１３３ａ、１３３ｂ）を備えている。
【０１２８】
説明の便宜上、送信部１３２ａと受信部１３３ａを主ポート、送信部１３２ｂと受信部１３３ｂを冗長ポートとして以下説明する。
【０１２９】
出力選択部２６０は、バス２６４ａからのデータ入力に対して、２つの出力のいずれに転送するかを決定する。これは、ＣＰＵ１０１上のソフトウェアから冗長化通信制御部２５０に対して設定してもよいし、出力先の通信経路の状態から判定してもよい。例えば、出力選択部２６０ａにおいて、送信部１３２ａがＰＨＹ１０３ａと接続し、制御用ネットワーク２４２ａとの通信が確立している場合は、データを送信部１３２ａへと出力し、制御用ネットワーク２４２ａにて何らかの異常があり、通信が確立していない場合は、データを入力選択部２６１ａへと出力することが例示される。
【０１３０】
入力選択部２６１は、２つのデータ入力に対して、どちらを出力するかを決定する。出力するデータ入力の選択は、ＣＰＵ１０１上のソフトウェアから冗長化通信制御部２５０に対して設定してもよいし、タイムスロット通信方式を採用して時間帯ごとに入力先を選択してもよい。選択されていない入力（データ）は廃棄してもよいし、バッファを用いて保持してもよい。バッファに保持されたデータは、該入力データが出力として選択された場合に出力してもよいし、所定時間経過で廃棄してもよい。またバッファが満杯になった場合には、新しい入力（データ）を廃棄してもよいし、古いデータから廃棄してもよい。また入力選択部２６１はバッファリングにともなう処理時間を計時、記憶しておくことが例示される。あるいはバッファリングにともなう処理時間をデータ内に含めてもよいし(例えば図１１のｃｏｒｒｅｃｔｉｏｎＦｉｅｌｄ１７８)、あるいはデータの前後のいずれかに付加してもよい。
【０１３１】
また、２つの入力（データ入力）が同時にあった場合は、事前に、あるいは冗長化通信制御部２５０に対して設定済みの入力を常に選択してもよいし、それぞれの入力データの内容に基づいて選択してもよい。選択されない入力は廃棄してもよいし、バッファを用いて保持してもよい。バッファに保持されたデータの扱いは上記と同様である。
【０１３２】
経路制御部２６２は、バス２６４ｃ、バス２６４ｅから入力されたデータをバス２６４ｂ、バス２６４ｄの一方もしくは両方に出力する。これは入力データの内容または制御用ネットワーク２４２との接続状態、バス１０６との接続状態に基づいて制御する。
【０１３３】
時刻補正部２６３は、経路制御部２６２から入力されたデータ上の時刻情報を補正する。
【０１３４】
バス２６４は、機能部、ハードウェア間を接続するバスである。バス２６４ａとバス２６４ｂは、バス１０６であるが、説明の便宜上、バス１０６と区別して示している。
【０１３５】
計時部２６５は、所定の事象の発生時または発生期間を計時する機能部である。実装として、タイマと、少なくとも所定事象を受けた時点のタイマ値の記憶手段から構成される。
【０１３６】
所定の事象とは、特定のパケット、データグラムの送信時、または受信時や、各機能部へのＥｔｈｅｒｎｅｔフレームまたはデータグラムの入力、出力等が例示される。
【０１３７】
通信遅延記憶部２６６は、通信遅延に異常が発生して、変更された通信経路にかかわる情報を記憶する。それは、通信遅延そのものであってもよいし、変更後の通信遅延を算出可能な値であってもよい。また、変更前の正常時の通信遅延を記憶していてもよい。
【０１３８】
（ＥｔｈｅｒＣＡＴでの時刻同期とスレーブ動作）
本発明は、冗長経路へパケットを転送する際の同期パケット上の時刻情報を補正することで、冗長経路の利用による高信頼化と時刻同期の両立を図る。本実施例においては、被制御装置２４１の動作が関係する。ＩＥＣ６１１５８、ＩＥＣ６１７８４パート２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２で定義されるＥｔｈｅｒＣＡＴ仕様に準拠した被制御装置２４１を例に説明する。ただし、本発明の効果はＥｔｈｅｒＣＡＴ仕様に限定されない。
【０１３９】
（被制御装置２４１の説明）
図１５に被制御装置２４１におけるハードウェア構成を示す。
【０１４０】
通信ハードウェア２７０は、ＣＰＵ１０１、複数のＰＨＹ１０３、不揮発性記憶媒体１０５、スレーブＩＣ２７１を備えている。ＣＰＵ１０１、複数のＰＨＹ１０３、不揮発性記憶媒体１０５、スレーブＩＣ２７１は、処理手段に属する要素として構成され、複数のＰＨＹ１０３は、送受信手段に属する要素として構成される。
【０１４１】
通信ハードウェア２７０は、被制御装置２４１における通信機能を実現する。実際の構成では、ＣＰＵ１０１に周辺デバイスが接続し、センサやアクチュエータを制御するが、本発明の効果に関して説明するため、周辺デバイスは図１５には図示していない。また、構成によっては、ＣＰＵ１０１を有せず、スレーブＩＣ２７１から直接、周辺デバイスに接続する構成であってもよい。また、ライントポロジを構成するため、通信機能であるＰＨＹ１０３を２つ有している。ただし、終端デバイスとして構成する場合は、ＰＨＹ１０３は１つでもよいし、パケットを周回させることができれば３つ以上であってもよい。図１６のスレーブＩＣ２７１は、４つのＰＨＹ１０３と接続可能な構成を示している。
【０１４２】
スレーブＩＣ２７１は、ＩＥＣ６１１５８、ＩＥＣ６１７８４パート２のＣｏｍｍｕｎｉｃａｔｉｏｎ  Ｐｒｏｆｉｌｅ  Ｆａｍｉｌｙ  １２で定義されるＥｔｈｅｒＣＡＴ仕様に準拠したスレーブ専用のＩＣである。
【０１４３】
（スレーブＩＣの説明）
スレーブＩＣ２７１の構成を図１６に示す。
【０１４４】
スレーブＩＣ２７１は、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０、４つの自動転送部２８１（２８１ａ〜２８１ｄ）、４つのループバック機能部２８２（２８２ａ〜２８２ｄ）を備えている。
【０１４５】
ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０は、ＥｔｈｅｒＣＡＴ仕様に準拠して、通信処理を実行するＩＣである。ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０は、所定の事象に関連して、計時する機能を有する。具体的には、所定のアドレスにアクセスする、所定のコマンドを受信した場合に、各通信ポートで受信した時刻を計時し、レジスタとして公開する。制御用計算機２４０は、該レジスタにアクセスして、これらの時刻を取得可能である。
【０１４６】
ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０は、バス２８３を介して、ＣＰＵ１０１、あるいは周辺デバイスと接続し、ＣＰＵ１０１、あるいは周辺デバイスへのＥｔｈｅｒＣＡＴに関する情報の通知、あるいはＣＰＵ１０１からＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０を設定するため、あるいは周辺デバイスの情報をＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０に通知するために用いられる。また、バス２８３上に割込み信号をもうけてもよい。割込みを通知する方向は、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０から対向装置（ＣＰＵ１０１または周辺デバイス）でも構わないし、対向装置からＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０でもよい。
【０１４７】
自動転送部２８１は、受信したパケットを、隣接する通信ポートへ転送する機能部である。転送方向は、図１６に示すとおり、スレーブＩＣ２７１内で一定になっている。
【０１４８】
ループバック機能部２８２は、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０からの設定とループバック機能部２８２が接続する通信経路の接続状態によって、通信ポートへパケットを送信するか、あるいは隣接するループバック機能部２８２へパケットを転送する機能部である。ループバック機能部２８２は、制御用計算機２４０から送信される通信内容にしたがって、ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０によって設定される。その設定内容の例として、接続している通信ポートの設定状態によってパケットの送信経路を切り替えるＡｕｔｏモードがある。Ａｕｔｏモードでは、通信ポートを介して隣接する制御用計算機２４０、あるいは被制御装置２４１と通信が確立している場合は、ループバック機能部２８２は通信ポートへパケットを送信する。あるいは、通信経路が接続していないか、通信経路中に異常、故障があり、隣接する制御用計算機２４０、あるいは被制御装置２４１と通信経路が確立していない場合は、ループバック機能部２８２は隣接するループバック機能部２８２へパケットを転送する。
【０１４９】
なお、ＥｔｈｅｒＣＡＴ仕様に限定せずに、被制御装置２４１は通信経路の異常に対して、パケットを制御用計算機２４０へ折り返す機能を有していれば、本発明の効果は失われない。すなわち、ＣＰＵ１０１が通信経路の異常を検知して、パケットを折り返す方法や、制御用計算機２４０が被制御装置２４１に対して、パケットを折り返すように設定してもよい。被制御装置２４１における通信経路の異常の判定方法は、ＩＥＥＥ８０２．３で規定されるＭＤＩ（Ｍａｎａｇｅｍｅｎｔ  Ｄａｔａ  Ｉｎｔｅｒｆａｃｅ）におけるＰＨＹ  ＩＣの状態レジスタのリンクステータスを用いる方法や、ＰＨＹ  ＩＣで一般的に用いられるＬＥＤ点灯用の出力信号を、ＣＰＵ１０１や、別途もうけるＦＰＧＡ、ＣＰＬＤ等（図示なし）で用いる方法が例示される。制御用計算機２４０における通信経路の異常の判定方法は、パケットを送信してから、受信する前に所定期間が経過したかどうかや、応答パケットがないこと、あるいは各被制御装置２４１が所定規則にしたがって操作（加減乗除など）するパラメータをパケット上に設け、応答パケットの該値を評価する方法（後述するワーキングカウンタを用いる方法等）が例示される。
【０１５０】
（スレーブの時刻同期機能）
また、被制御装置２４１における時刻同期機能について説明する。
【０１５１】
被制御装置２４１は、基準時刻に同期するための機能を具える。例えば、被制御装置２４１自身の管理する時刻（以下、ローカルクロックとする）と、基準時刻との差（以下、時刻オフセットとする）を保持し、ローカルクロックを基準時刻に同期する。あるいは、基準時刻を有する被制御装置２４１（制御用計算機２４０でもよい）と被制御装置２４１間の通信遅延を、時刻オフセットとは別に管理し、時刻オフセットとあわせて、ローカルクロックを基準時刻に同期してもよい。
【０１５２】
図１７を例に、これらの動作を説明する。スレーブＡのローカルクロックを基準時刻とし、スレーブＢが同期する場合を説明する。スレーブＢにおける時刻オフセットＯｆｆｓｅｔＢは以下の（７）式によって求める。
【０１５３】
ＯｆｆｓｅｔＢ  ＝  ＴＡＰ  −  ＴＢＰ    ・・・（７）
【０１５４】
スレーブＢとスレーブＡ間の通信遅延ｔｄｉｆｆＡＢと、時刻オフセットＯｆｆｓｅｔＢを用いて、スレーブＢのローカルクロックＣＢは、次の（８）式のように基準時刻ＣＡに同期させる。スレーブＢにおける同期時刻をＣｒｅｆＢとする。
【０１５５】
ＣｒｅｆＢ  ＝  ＣＢ  ＋  ＯｆｆｓｅｔＢ  −  ｔｄｉｆｆＡＢ    ・・・（８）
【０１５６】
通信遅延ｔｄｉｆｆＡＢは、スレーブＡとスレーブＢにおけるタイムスタンプＴａ、Ｔｂ、Ｔｄ、Ｔｅを用いて計算することができる（ｔｄｉｆｆＡＢ＝（（Ｔｅ−Ｔａ）―（Ｔｄ−Ｔｂ））／２）。これらのタイムスタンプＴａ、Ｔｂ、Ｔｄ、Ｔｅは、専用のデータグラムを受信した際に記録され、この専用データグラムは、例えば物理アドレス０ｘ０９００（ポート０における受信時刻レジスタ）に対する４ｂｙｔｅサイズのＢＷＲ（ブロードキャストライト）コマンドである。以降、このデータグラムをタイムスタンプ用データグラムとして説明する。
【０１５７】
スレーブ間の通信遅延を積算することで、基準時刻を提供する基準スレーブ（図１７のスレーブＡ）と、それ以外のスレーブとの通信遅延を求めることができ、スレーブごとに時刻オフセットを求めることで、ＥｔｈｅｒＣＡＴネットワークにおけるスレーブは基準スレーブに時刻同期することができる。
【０１５８】
なお、時刻オフセットや、通信遅延は複数回求めて最小値あるいは最大値を用いてもよいし、平均値や統計処理を施した数値を用いてもよい。
【０１５９】
また、基準時刻の計算においても（８）式による推定だけでなく、定期的に基準時刻を取得し、基準時刻を所定の数学モデルで近似する方法が例示される。
【０１６０】
加えて、各スレーブのローカルクロックの基準となる物理的な精度誤差（例えば、水晶振動子の誤差）から、一度同期をしたとしても、経時にしたがい同期精度は低下していく。
【０１６１】
これを防止するため、定期的に基準スレーブの基準時刻をスレーブ群に配信し、時刻同期する。この基準スレーブの時刻配信に用いられるデータグラムとして、物理アドレス０ｘ０９１０（システムタイムレジスタ）に対する８ｂｙｔｅサイズのＡＲＭＷ（オートインクリメントリード、マルチプルライト）コマンドあるいはＦＲＭＷ（Ｃｏｎｆｉｇｕｒｅｄ  Ｒｅａｄ  Ｍｕｌｔｉｐｌｅ  Ｗｒｉｔｅ）が例示される。これは指定のスレーブ（例えば基準スレーブ）に対してリード命令となり、それ以外のスレーブに対してライト命令となるコマンドである。このコマンドを用いて基準スレーブの基準時刻をリードし、基準スレーブ以外のスレーブに対して基準時刻を配信する。以降、基準時刻配信用のデータグラムを基準時刻配信用データグラムとして説明する。
【０１６２】
（ＥｔｈｅｒＣＡＴスレーブのタイムスタンプ）
ＥｔｈｅｒＣＡＴにおいては、スレーブ間の通信遅延を計算するために図１７で示す機能を有している。すなわち、所定のパケットの受信にともなって、各通信ポートでの受信時刻（Ｔａ、Ｔｂ、Ｔｃ、Ｔｄ、Ｔｅ）やＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０での受信時刻（ＴＡＰ、ＴＢＰ、ＴＣＰ）を計時する機能を具える。なお、スレーブ間の通信遅延を求めることができれば、被制御装置２４１が具えなければならない機能は上記の計時機能に限定されない。例えば、ＮＴＰ（Ｎｅｔｗｏｒｋ  Ｔｉｍｅ  Ｐｒｏｔｏｃｏｌ）やＩＥＥＥ１５８８のバウンダリクロック機能や、ｅｎｄ−ｔｏ−ｅｎｄ  ＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）、ｐｅｅｒ−ｔｏ―ｐｅｅｒ  ＴＣ（Ｔｒａｎｓｐａｒｅｎｔ  Ｃｌｏｃｋ）、あるいはそれらに類する機能を用いることが例示される。
【０１６３】
（動作シーケンス）
本実施例における動作を図１８（経路異常が発生していない場合）、図１９（経路異常が発生している場合）を用いて説明する。本実施例の動作を説明するため、冗長化通信制御部２５０における経路制御部２６２、時刻補正部２６３を中心に説明する。出力選択部２６０、入力選択部２６１については図示していない。送信部１３２はＴｘ、受信部１３３はＲｘとして図示している。
【０１６４】
図１８、図１９では、図１７に示す時刻同期プロトコルによって、各被制御装置２４１間の通信遅延は既知の状態とする。なお、被制御装置２４１ａがＥｔｈｅｒＣＡＴネットワーク全体の基準時刻を提供する基準スレーブとなる。
【０１６５】
また、冗長化通信制御部２５０の送信部１３２、受信部１３３あるいはＰＨＹ１０３において、タイムスタンプ用データグラムの送信時刻、受信時刻を計時部２６５にて計時し、図１７と同様の方法により、制御用計算機２４０と基準スレーブ間の通信遅延を算出することが例示される。この通信遅延を用いて、制御用計算機２４０自体を被制御装置２４１ａと同期できる。
【０１６６】
被制御装置２４１ｂに着目した場合、基準スレーブである被制御装置２４１ａとの通信遅延はｔＡＢであり、この値を制御用計算機２４０から設定されて被制御装置２４１ｂは自身に保持する。また、基準スレーブとの遅延として被制御装置２４１ｃはｔＡＢ＋ｔＢＣ、被制御装置２４１ｄはｔＡＢ＋ｔＢＣ＋ｔＣＤの値をそれぞれ保持する。
【０１６７】
ここで、被制御装置２４１ａと被制御装置２４１ｂ間の通信経路で異常が発生した場合（図１９）、被制御装置２４１ａは経路異常を検知して、冗長化通信制御部２５０へとパケットを折り返す。
【０１６８】
冗長化通信制御部２５０では、経路制御部２６２にて経路を制御し、冗長ポートの送信部１３２へと転送する。結果、パケットは、被制御装置２４１ｂ、被制御装置２４１ｃ、被制御装置２４１ｄと、順に転送され、全ての被制御装置２４１へと伝送される。
【０１６９】
このとき、被制御装置２４１ｂ、被制御装置２４１ｃ、被制御装置２４１ｄへは本来の経路（図１８）とは異なる経路を経由するため、基準時刻配信用データグラムで基準時刻を受信しても、誤って同期計算をする。そこで、時刻補正部２６３において、経路異常発生時の基準時刻配信用データグラム上の時刻を補正して、冗長ポートから送信する。具体的には、以下のように遅延が変化する。遅延が変化する箇所は被制御装置２４１ａと被制御装置２４１ｂ間であり、経路異常がない場合の遅延（第一の通信遅延）は、ｔＡＢである。経路異常が発生した場合は、被制御装置２４１ａと被制御装置２４１ｂ間の遅延（第二の通信遅延）Ｄｃｈは、Ｄｃｈ＝ｔＡｍ’＋ｔｍＤ＋ｔＤＣ＋ｔＣＢ＋ｔＢに変化する。
【０１７０】
したがって、遅延ｔＡＢと遅延Ｄｃｈとの差分である遅延変化分は、Ｄｃｈ―ｔＡＢとなり、時刻補正部２６３は、基準時刻配信用データグラム上の基準時刻Ｔｏｌｄを次の（９）式ように補正する。
【０１７１】
Ｔｎｅｗ  ＝  Ｔｏｌｄ  ＋  Ｄｃｈ  ―  ｔＡＢ        ・・・（９）
【０１７２】
具体例を用いて説明する。
今、Ｔｏｌｄが１０秒０００で、ｔＡＢが１０マイクロ秒であったとする。被制御装置２４１ｂが基準時刻配信用データグラムを受信した際の被制御装置２４１ｂのローカルクロックＣｂ１が１１秒１０マイクロ秒だったとする。
【０１７３】
経路異常がない状態では、被制御装置２４１ｂが基準時刻配信用データグラムを受信した際の基準スレーブの時刻Ｃａ１は１０秒１０マイクロ秒（Ｔｏｌｄ＋ｔＡＢ）である。したがって、被制御装置２４１ａと被制御装置２４１ｂの時刻オフセットＯｆｆｓｅｔは次の（１０）式となる。
【０１７４】
Ｏｆｆｓｅｔ  ＝  Ｃａ１  −  Ｃｂ１
＝  １０秒１０マイクロ秒  −  １１秒１０マイクロ秒
＝  −１秒              ・・・（１０）
【０１７５】
したがって、被制御装置２４１ｂにおける同期時刻Ｃｒｅｆは被制御装置２４１ｂにおけるローカルクロックＣｂと時刻オフセットＯｆｆｓｅｔを用いて次の（１１）式で求まる。
【０１７６】
Ｃｒｅｆ  ＝  Ｃｂ  ＋  Ｏｆｆｓｅｔ        ・・・（１１）
【０１７７】
経路異常が発生したとして、Ｔｏｌｄを補正する場合は、時刻補正部２６３にて、次の（１２）式を実行する。ここで、Ｄｃｈが５０マイクロ秒だったとする。
【０１７８】
Ｔｎｅｗ  ＝  Ｔｏｌｄ  ＋  Ｄｃｈ  −  ｔＡＢ
＝  １０秒０００  ＋  ５０マイクロ秒  ―  １０マイクロ秒
＝  １０秒４０マイクロ秒            ・・・（１２）
【０１７９】
経路異常の場合、被制御装置２４１ｂで基準時刻配信用データグラムを受信した際の被制御装置２４１ｂのローカルクロックＣｂ２は１１秒５０マイクロ秒（Ｃｂ１−ｔＡＢ＋Ｄｃｈ）となる。
【０１８０】
このとき、基準スレーブの時刻Ｃａ２は１０秒５０マイクロ秒（Ｔｏｌｄ＋Ｄｃｈ＝Ｔｎｅｗ＋ｔＡＢ）である。被制御装置２４１ｂは、従来どおり、基準スレーブとの遅延（第一の通信遅延）ｔＡＢを用いて、基準スレーブの時刻を推定する。したがって、被制御装置２４１ｂと被制御装置２４１ａの時刻オフセットＯｆｆｓｅｔは次の（１３）式となる。
【０１８１】
Ｏｆｆｓｅｔ  ＝  Ｃａ２  −  Ｃｂ２
＝  Ｔｎｅｗ  ＋  ｔＡＢ  −  Ｃｂ２
＝  １０秒４０マイクロ秒  ＋  １０マイクロ秒  −  １１秒５０マイクロ秒
＝  −１秒                ・・・（１３）
【０１８２】
したがって、被制御装置２４１ｂは、自身が保持している遅延ｔＡＢの情報をそのまま利用し、従来どおり、基準スレーブとの時刻同期を実行できる。つまり、経路異常箇所以降に位置するスレーブであっても、経路異常の発生を意識することなく、同期処理を実行できる。
【０１８３】
なお、遅延（第二の通信遅延）Dch＝ｔAm’＋ｔｍD＋ｔDC＋ｔCB＋ｔBの算出において、ｔＤＣ、ｔＣＢは、図１７に示す時刻同期プロトコルの過程で算出可能である。ｔAm’、ｔｍDは、前述のとおり、冗長化通信制御部２５０における遅延計測により算出可能である。ｔｍＤは、遅延の一部に冗長化通信制御部２５０内の遅延を含むが、計時部２６５で計測可能である。図１８と図１９でｔｍDの経路は異なるが、冗長化通信制御部２５０内部の遅延として等価としている。もし遅延が異なれば、その差を踏まえて補正する。ｔＢは、被制御装置２４１ｂ内の遅延であり、被制御装置２４１ｂまたはスレーブＩＣ２７１の仕様であり、既知である。
【０１８４】
また、入力選択部２６１でデータを出力するまでに遅延が生じる場合は、これを計測し、補正時刻の算出に反映してもよい。
【０１８５】
また、時刻補正に用いる遅延は継続的に計測してもよいし、システムの再稼働時、経路状態の変更等の所定事象の発生時に計測し直してもよい。
【０１８６】
（実現に必要な機能）
以上の仕組みを実現するためには、経路制御部２６２で経路を制御するための経路異常発生の判定と経路制御、時刻補正部２６３における遅延変化分を決定するための経路異常位置の特定が必要である。これらについて以下説明する。
【０１８７】
（経路異常の発生）
はじめに、冗長ポートからパケットを受信する前に、主ポートからパケットを受信したかどうかをみる方法が例示される。冗長ポートでパケットを受信せず、主ポートで受信した場合に、通信経路を異常と判定する。
【０１８８】
また、異常判定の方法として、全てのスレーブが処理すべきレジスタに対するＢＲＤ（Ｂｒｏａｄｃａｓｔ  Ｒｅａｄ）コマンドをＥｔｈｅｒＣＡＴフレームに付与し、そのワーキングカウンタを見る方法が例示される。ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値が、事前に設定した所定数よりも小さければ通信経路を異常と判定する。例えば、図１９の場合、主ポートで該コマンドを含むデータグラムを受信すると、被制御装置２４１ａのみがワーキングカウンタに１を足すため、受信したテレグラムのワーキングカウンタの値は１となっている。これは全スレーブ数４よりも小さいため、異常の発生及び異常の発生位置を特定できる。全スレーブ数は事前に通信遅延記憶部２６６等に記憶しておくことが例示される。これは、例えば、主ポートが同期パケットを受信した際に、記憶した送受信情報（ワーキングカウンタ）の中に冗長ポートから同期パケットを送信済みであることを示す情報が存在しない場合であり、経路異常と判定され、主ポートが受信した同期パケットは冗長ポートに転送される。
【０１８９】
これらの異常判定の方法は組み合わせて用いてもよい。いずれかの判定方法によって異常と判定した場合に異常と判定してもよいし（論理和）、両方の判定方法で異常と判定した場合に異常と判定してもよい（論理積）。
【０１９０】
なお、冗長ポートに接続する通信経路に異常がある場合、主ポートから送信されたパケットは冗長ポートで受信する前に主ポートで受信するが、ＢＲＤコマンドのワーキングカウンタの値は全スレーブ数と一致する。この場合、主ポートで受信したパケットは冗長ポートへ転送してもよいし、通信経路の異常をユーザやオペレータに通知して、パケットは冗長化通信制御部２５０内部に取り込んでもよい。
【０１９１】
（ＥｔｈｅｒＣＡＴフレームとWKCの説明）
ＥｔｈｅｒＣＡＴのパケット構成を図２０に示す。ＥｔｈｅｒＣＡＴの通信内容は、Ｅｔｈｅｒｎｅｔフレーム２９０のデータ領域２９２に格納される。ＥｔｈｅｒＣＡＴにおける、Ｅｔｈｅｒｎｅｔヘッダ２９１のＴｙｐｅフィールドは０ｘ８８Ａ４である。データが正しいかどうかをＦＣＳ（Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ）２９３を用いて検査する。
【０１９２】
ＥｔｈｅｒＣＡＴのデータ構造は、ＥｔｈｅｒＣＡＴヘッダ２９４と、ひとつ、または複数のデータグラム２９５で構成され、データグラム２９５は、データグラムヘッダ２９６、データ２９７、ワーキングカウンタ（ＷＫＣ）２９８から構成される。ワーキングカウンタ２９８は、そのデータグラム２９５を処理すべきスレーブで正しく処理されるたびに、スレーブによって所定の数だけカウントアップされるフィールドである。なお、データグラムヘッダ２９６には、コマンド２９９、インデックス（ｉｎｄｅｘ）３００、アドレス３０１、データサイズ３０２、予約３０３、Ｃ３０４、Ｍ３０５、ＩＲＱ３０６が含まれる。
【０１９３】
（通信経路異常の発生箇所の特定方法）
あるいは、各スレーブの各通信ポートのロストリンクカウンタレジスタを読み、非ゼロの値が取得された通信ポートが接続する通信経路が異常であると判定する。なお、ロストリンクカウンタレジスタは読み込みと同時に、書込みによってレジスタ値をクリアしてもよい。以上の方法によって、通信経路の異常が起きたと判定した位置を特定できる。これはＣＰＵ１０１上で動作するプログラム等に提示してもよい。
【０１９４】
（変化遅延を制御用計算機２４０で保持）
本発明を実現する上で、補正する遅延を算出する必要がある。補正する遅延は、経路異常の発生位置によって変わる。したがって、経路異常の発生位置を特定する必要がある。これは前記のとおり、ワーキングカウンタ２９８を用いる方法等が例示される。
【０１９５】
発生位置は、オートインクリメントアドレスを用いたコマンドを用いてもよい。被制御装置２４１は、オートインクリメントアドレスに対するコマンドを受信すると、アドレス値の一部をカウントアップするため、経路異常発生時に主ポートで受信したアドレス値と初期値を比較することで発生位置を特定することができる。被制御装置２４１によっては、ＭＡＣアドレスの一部をカウントアップする場合もあるため、オートインクリメントアドレスと同様の方法により、経路異常の発生位置を特定することができる。
【０１９６】
あるいは、スレーブごとに異なる値を所定アドレスに設定し、これを読むことで経路異常位置を特定する方法が例示される。例えば、被制御装置２４１の数だけのビットのデータを用意し、アクセスされた場合に被制御装置２４１ごとに異なるビットを１にする方法である。ビット０を最初の被制御装置２４１、ビット１を２番目の被制御装置２４１、ビット２を３番目の被制御装置２４１・・・、と設定する。経路異常の直前の被制御装置２４１がデータを設定するため、例えば、２番目と３番目の被制御装置２４１間の通信経路で異常が発生した場合、論理アドレスに対するリードコマンド（ＬＲＤ）で読み出した値は０ｘ０２（１ｂｙｔｅ、８台分の被制御装置２４１の場合）となり、ブロードキャストリードコマンドの場合、論理和となるので、読み出した値は０ｘ０３となる。
【０１９７】
なお、ビット単位で被制御装置２４１を割り当てるのではなく、各被制御装置２４１が所定の値（例えば、単純に順番）を返すようにしてもよい。この場合、ブロードキャストリードコマンドは論理和となるため、論理アドレスに対するリードコマンド（ＬＲＤ）が望ましい。
【０１９８】
発生位置を特定できれば、図１７、図１９の遅延計測の仕組みによって変化遅延を算出できるため、遅延計測時に経路異常の発生位置と、対応する変化遅延を通信遅延記憶部２６６に保持しておく。
【０１９９】
経路異常時に制御用計算機２４０でパケットを受信した際、ワーキングカウンタ等の手段から、発生位置を特定し、通信遅延記憶部２６６から、該当する変化遅延を取得して、時刻補正部２６３にて基準時刻配信用データグラム上の基準時刻を補正する。
【０２００】
（スレーブで変化遅延を保持する）
あるいは変化遅延に関する情報を被制御装置２４１に格納し、その値を用いてもよい。ＥｔｈｅｒＣＡＴでは、論理アドレスによるアドレス方法を用いることができる。論理アドレスとは、仮想上のアドレス空間であり、任意のスレーブの物理アドレスを対応付けることができる。各スレーブは論理アドレスへのアクセスコマンドを受信した場合、該当の論理アドレスが自身の物理アドレスに割り当てられているかを確認する。もし割り当てられていれば、該当の物理アドレスの情報に対してアクセスする（リードコマンドであればデータグラムに情報を載せ、ライトコマンドであれば該当の物理アドレスにデータを書き込む）。論理アドレスにアクセスすることで、対応付けられたスレーブの物理アドレスの情報にアクセスすることができる。
【０２０１】
（論理アドレスによる補正）
変化遅延の情報取得に論理アドレスの仕組みを用いることができる。
【０２０２】
同じ論理アドレスに対して、異なる物理アドレス（同じスレーブまたは異なるスレーブの物理アドレス）が対応付けられた場合、データグラム上のデータは最後にアクセスされた物理アドレスの情報に上書きされる。
【０２０３】
したがって、各スレーブに対して、所定の物理アドレス（スレーブによって異なっていてよい）に変化遅延情報を格納し、それらの物理アドレスを同一の論理アドレス（例えば０ｘ１００００）に対応付け、ＥｔｈｅｒＣＡＴフレーム上に該論理アドレスへアクセスするリードコマンド（Ｌｏｇｉｃａｌ  Ｒｅａｄ：ＬＲＤ）のデータグラムを格納することが例示される。
【０２０４】
このようにすれば、経路異常発生時に経路異常発生位置で折り返されてマスタで受信した論理アドレスリードコマンドのデータグラムのデータには、経路異常発生位置直前のスレーブ（図１９の被制御装置２４１ａ）が設定したデータが格納される。つまり、マスタは、経路異常発生位置に応じたデータ（変化遅延情報）を一つのデータグラムで取得することができる。スレーブの変化遅延情報を各スレーブに分散させて保持することで、マスタ内で記憶容量を減らすことができる。これにより、計算機資源に制約のある組み込み機器等でのマスタ装置の実現が可能となる。
【０２０５】
これを実現するため、事前に変化遅延情報を算出しておき、各被制御装置２４１に論理アドレスを設定し、変化遅延情報を記憶させておく。
【０２０６】
あるいは、スレーブの数だけデータグラムを付加し、各スレーブが該当するデータグラムに変化遅延情報を格納してもよい。
【０２０７】
なお、対応付けるデータ領域のサイズは変化遅延の最大値を表現可能なデータサイズに依存する。したがって、変化遅延の分解能や要求精度に依存する。例えば、時間分解能をナノ秒として変化遅延情報の最大値が６５５３５ナノ秒以下であれば１６ビット（２ｂｙｔｅ）で表現可能である。
【０２０８】
このデータは、時刻補正部２６３の実装に依存するため、時刻補正部２６３の処理内容と時間分解能等の処理方法が一致していればよい。
【０２０９】
また、ＥｔｈｅｒＣＡＴでの制御通信で論理アドレスを用いる場合は、それらの論理アドレス空間と連続するように変化遅延情報の物理アドレスを論理アドレス空間上に対応付けてもよい。このようにすれば、制御用途の論理アドレスアクセス用データグラムと、変化遅延情報の取得用データグラムをまとめられるため、ＥｔｈｅｒＣＡＴフレーム上のデータ利用効率が向上する。
【０２１０】
なお、論理アドレスのかわりに設定済み（ｃｏｎｆｉｇｕｒｅｄ）アドレスを用いてもよいし、専用のコマンドを定義してもよい。
【０２１１】
また、論理アドレスの代わりにブロードキャストアドレスの利用は困難である。これは、ブロードキャストアドレスへのリードが上書きではなく、論理和であるためである。
【０２１２】
（マスタの同期）
なお、制御用計算機２４０自身を基準スレーブに同期する場合は、基準時刻配信用データグラム上の基準時刻を変更していることに注意する必要がある。経路異常がない状態（図１８）では、冗長化通信制御部２５０が基準時刻配信用データグラムを受信した後、遅延ｔｍＡと、基準時刻配信用データグラム上の基準時刻Ｃａを用いて同期する。この関係を次の（１４）式に示す。
【０２１３】
Ｃｒｅｆ  ＝  Ｃａ  −  ｔｍＡ      ・・・（１４）
【０２１４】
このＣｒｅｆと、基準時刻配信用データグラムを主ポートで送信した時刻Ｃｍとの比較により時刻オフセットを求めて同期する。
【０２１５】
しかしながら、図１９の場合、時刻補正部２６３を経由後に基準時刻をＣａｎｅｗに変更しているため、次の（１５）式に示すように、差分Ｄを補正して同期する必要がある。
【０２１６】
Ｃｒｅｆ  ＝  Ｃａｎｅｗ  −  Ｄ  −  ｔｍＡ  ・・・（１５）
【０２１７】
（正常時の迂回経路遅延を用いた変化遅延の補正）
なお、各スレーブに格納する変化遅延情報は、基準時刻配信用データグラム上の基準時刻に加算する値そのもの（例えば（９）式のＤｃｈ−ｔＡＢ）を計算して求めてもよいし、制御用計算機２４０で計測可能な値に対する補正分としてもよい。一例を示せば、これは図１８のＴｍ−Ｔｓに対する差分である。
【０２１８】
（９）式等で用いた経路異常後の遅延（第二の通信遅延）Ｄｃｈの算出においては、被制御装置２４１の数が変化した場合や、各被制御装置２４１間の通信遅延を個別に計算しなければならないため、面倒である。そこで、経路異常発生後の経路遅延と図１８に示すＴｍ−Ｔｓまでの経路とその遅延で共通する部分が多いことを活かし、算出を容易にする。なお、Ｔｍは経路正常時の主ポートでのパケット受信時刻であり、Ｔｓは冗長ポートでの受信時刻であり、Ｔｍ−Ｔｓ含め、いずれも制御用計算機２４０において計測可能な時刻である。
【０２１９】
遅延Ｄｃｈ＝ｔＡｍ’＋ｔｍＤ＋ｔＤＣ＋ｔＣＢ＋ｔＢに対して、Ｔｍ−Ｔｓは以下の（１６）式の構成となる。
【０２２０】
Ｔｍ  −  Ｔｓ  ＝  ｔＡｍ  ＋  ｔＢＡ  ＋  ｔＣＢ  ＋  ｔＤＣ  
＋ｔｍＤ  ・・・（１６）
【０２２１】
したがって、変化遅延ＤｃｈとＴｍ−Ｔｓの差分は次の（１７）式となる。
【０２２２】
Ｄｃｈ−（Ｔｍ―Ｔｓ）＝ｔＡｍ’＋ｔｍＤ＋ｔＤＣ＋ｔＣＢ＋ｔＢ  
−（ｔＡｍ  ＋  ｔＢＡ  ＋  ｔＣＢ  ＋  ｔＤＣ  
＋  ｔｍＤ）
＝  ｔＡｍ’−ｔＡｍ＋ｔＢ―ｔＢＡ
＝  ｔｄｉｆｆＡ  ＋  ｔＢ  ―  ｔＢＡ  ・・・（１７）
【０２２３】
ここで、ｔｄｉｆｆＡは、被制御装置２４１ａにおけるＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０の経過遅延であり、仕様として既知である。なお、図１８と図１９のｔｍＤをそれぞれ等価としているが、異なる場合は差分を補正する。
【０２２４】
したがって、（１７）式の値を被制御装置２４１ｂに記憶しておけば、時刻補正部２６３にて、データグラム上の（１７）式の値と、事前に計測したＴｍ―Ｔｓの値を加算することで変化遅延（第二の通信遅延）Ｄｃｈを求めることができ、（９）式によって基準時刻配信用データグラムの基準時刻を補正できる。
【０２２５】
このようにすれば、個々のスレーブにおける設定値の算出が容易となり、場合によって設定値の最大を減らせるため、スレーブにおける記憶データ容量、論理アドレスの割り当てサイズを減らすことができる。
【０２２６】
（Ｔｍ、Ｔｓ計測の対象データグラム）
なお、ＴｍとＴｓは、同じパケット、データグラムに対して計時する必要がある。時刻補正部２６３による基準時刻の変更は、基準時刻配信用データグラムに対して実行するため、基準時刻配信用データグラムを対象とすることが例示されるが、それ以外のデータグラムやＥｔｈｅｒｎｅｔフレームを対象としてもよい。なお、計測遅延の誤差を低減するため、Ｅｔｈｅｒｎｅｔフレーム上の同一箇所を対象に計測することが望ましく、Ｅｔｈｅｒｎｅｔヘッダの先頭やプリアンブルの先頭、ＥｔｈｅｒＣＡＴヘッダの先頭などが例示される。
【０２２７】
なお、ＴｍとＴｓの計測対象パケットが同じかどうかを特定する必要がある。パケットを特定する方法としては、パケットへ所定の処理を加えることや、冗長化通信制御部２５０でパケットを識別するための情報を記憶する方法が例示される。
【０２２８】
パケットへ加える処理としては、パケット上の所定パラメータを所定値にすることや、シーケンス番号を設定する方法、特定のパラメータを設定する方法、スレーブの動作に影響を与えない情報領域をパケットへ付加する方法が例示される。具体的には、ＩＲＱ３０６の所定ビットを１にすることや、図２０に示すｉｎｄｅｘ３００を所定値にすること、存在しないアドレス３０１にアクセスするデータグラムを付加することや、コマンド２９９をＮＯＰ（Ｎｏ  Ｏｐｅｒａｔｉｏｎ）としたデータグラムを付加することが例示される。
【０２２９】
冗長化通信制御部２５０で情報を記憶する方法としては、パケットのデータグラムヘッダ２９６のパラメータ（コマンド２９９、ｉｎｄｅｘ３００、アドレス３０１等図２０参照）を記憶する方法や、データサイズ等のパケットにかかわる属性値を記憶する方法が例示される。
【０２３０】
あるいは、パケットを識別する必要のないようにパケットを１つずつ通信処理するようにしてもよい。このようにすれば、あるパケットを送信してから、受信するパケットは、送信したパケットと同じであることを保証できる。または、常時、パケットを１つずつ通信処理するのではなく、受信時刻Ｔｍ、Ｔｓを計測するために、所定回数のみ、パケットを１つずつ通信処理してもよい。所定回数は１回でもよいし、複数回でもよい。
【０２３１】
なお、差分Ｄ＝Ｔｍ−Ｔｓは、複数回求めて最小値あるいは最大値を用いてもよいし、平均値や統計処理を施した数値を用いてもよい。
【０２３２】
また、差分Ｄは、通信経路に異常が発生した時に、変更した通信遅延を求めるために必要であるが、別の方法で求めてもよい。例えば、各スレーブのＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０を経由しない通信遅延Ｐがわかっている場合は、通信遅延Ｐをスレーブ数分合計した値Ｄｐを差分Ｄとしてもよい。また、事前に制御用計算機２４０内の転送遅延を計測し、計測値をスレーブ数分合計した値Ｄｐに加えてもよい。
【０２３３】
なお、アプリケーションの実行開始時に、すでに通信経路異常が発生している場合は受信時刻Ｔｍ、Ｔｓを保持していないため、差分Ｄを算出できない。したがって、実行開始時にＣＰＵ１０１上のソフトウェアでユーザやオペレータに通知して、通信経路の異常発生箇所の特定や、被制御装置２４１の点検、通信ケーブルの交換、確認等が例示される。
【０２３４】
（パケット上のデータを用いた経路制御）
なお、制御用計算機２４０がどのようにパケットを経路制御したかをパケット上に記憶し、それを用いて経路制御部２６２においてパケットの経路を制御してもよい。
【０２３５】
これは、通信経路の一時的な障害や復帰による通信経路への変更に対応することを目的としている。例えば、経路異常を検知して冗長ポートへ転送して送信後に、再度冗長ポートで受信予定であったパケットが、経路異常が復旧し、主ポートで受信する場合である。このような場合に、パケット上に経路制御の履歴を示すことで適切にパケットを処理できる。
【０２３６】
（データグラム上の４ビットを用いた経路判定）
データグラム上の４ビットを用いる例を図２１に示す。なお、図２１に示すビット情報のパラメータを格納する領域として、ｉｎｄｅｘ３００、ＩＲＱ３０６、ＭＡＣアドレスの一部やＮＯＰなどの付加データグラムを利用してもよい。
【０２３７】
各ビットを図２１に示す意味づけとする。
つまり、ビット０は主ポートから送信した場合に１とする。ビット１は主ポートで受信した場合に１とする。ビット２は、冗長ポートから送信した場合に１とする。ビット３は冗長ポートで受信した場合に１とする。なお、主ポートからは必ず送信するとした場合はビット０を省略可能である。主ポートあるいは冗長ポートで受信後、上記ビットを確認し、該パケットの経路制御を実行する。
【０２３８】
図２２に主ポート、冗長ポートでの受信時の処理例を示す。図２２（ａ）は、主ポートでの受信時の処理であり、図２２（ｂ）は、冗長ポートでの受信時の処理である。なお、これらは受信時に図２１のビットを設定する前の経路制御例であるが、図２１のビットを設定後に経路制御してもよい。
【０２３９】
例えば、主ポートで受信した際にビット３−０が「０００１」である場合は、主ポートから送信後に経路異常で折り返しを想定し、冗長ポートで受信することなく、主ポートで受信したことを意味するため、図１９の状態である。この場合は、パケット処理内容は、冗長ポートへ転送するとなる。図１４の経路制御部２６２においては、バス２６４ｃで受信したパケットをバス２６４ｄに出力することを示す。
【０２４０】
なお、主ポートで受信した際の「０１１１」の場合は、冗長ポートへ転送後に経路復帰であることを想定し、冗長ポートで受信した際の「１１０１」の場合は、冗長ポートから送信後に経路異常を想定し、いずれも一時的な経路異常または復帰であるため、パケット処理内容は廃棄または冗長ポートから送信が考えられる。構成を容易にするためには破棄することが望ましい。
【０２４１】
これらの経路制御のマークは、先頭のデータグラムなどの一部のデータグラムでもよいし、全てのデータグラムに対して実施してもよい。なお、以上の処理はパケット内容を改変するため、送信時にはＣＲＣを再計算することが例示される。
【０２４２】
（ＭＡＣアドレスを用いた経路制御）
なお、Ｅｔｈｅｒｎｅｔフレームの先頭に近いデータを用いる方が、経路制御にともなうＥｔｈｅｒｎｅｔフレームのバッファリングを最小限にできるため、高速な経路制御処理及びバッファ容量の削減といった効果がある。
【０２４３】
したがって、宛先ＭＡＣアドレスの先頭１ｂｙｔｅを用いることが例示される。
【０２４４】
特にＥｔｈｅｒＣＡＴではスレーブとの通信においてＭＡＣアドレスを用いないため、ＭＡＣアドレスの利用が可能である。
【０２４５】
（経路制御の別実施例）
別の実施例を図１８、図１９、図２３、図２４に示す。
【０２４６】
この実施例は、データグラムの種類と、経由した経路に応じてパケット上の識別子を変更し、各部で処理する。識別子は、Ｅｔｈｅｒｎｅｔフレームヘッダの宛先ＭＡＣアドレス、ｉｎｄｅｘ３００、ＩＲＱ３０６、ＮＯＰなどの付加データグラム上のパラメータのいずれか、または複数を利用して表現することが例示される。図２４では、識別子としてＤＣ１、ＤＣ２、ＤＣ３、Ｎ１、Ｎ２を示しているが、具体的な値は相互に識別可能であれば、どのような値でも構わない。
【０２４７】
対象データグラムの区別としては、ＥｔｈｅｒＣＡＴの遅延計測の仕組み上、各スレーブの受信時刻の記憶に用いるタイムスタンプ用データグラムのみ、経路異常がない状態で周回する必要がある。
【０２４８】
したがって、送信部１３２ａから送信する際にタイムスタンプ用データグラムの識別子をＤＣ１とし、それ以外のデータグラムの識別子をＮ１とする。経路制御部２６２、時刻補正部２６３等で識別子の変更及び識別子に基づいたパケット処理を制御する。
【０２４９】
以下、タイムスタンプ用データグラム、それ以外の通常データグラムについて、経路異常がない場合と、経路異常がある場合の処理について説明する。
【０２５０】
タイムスタンプ用データグラムで経路異常がない場合は、受信部１３３ｂで受信され、図２４の入力選択部２６１の入力側Ａにて識別子をＤＣ１からＤＣ２に変更する。その後、時刻補正部２６３で識別子をＤＣ２からＤＣ３に変更して送信部１３２ｂから送信する。これは受信部１３３ａで受信されてバス２６４ｂを経由して制御用計算機２４０内部に受信される。これは図１８に示す経路を通過する。
【０２５１】
なお、時刻補正部２６３で識別子をＤＣ２からＤＣ３に変更せず、仮に受信部１３３ａから、経路制御部２６２内部の入力選択部２６１へ転送する際に識別子ＤＣ２のデータグラムを破棄し、同様に受信部１３３ａからバス２６４ｂへ転送する際に識別子ＤＣ２を通過するように構成してもよい。
【０２５２】
タイムスタンプ用データグラムで経路異常がある場合は、受信部１３３ａで受信される。このデータグラムは破棄すべきであるため、バス２６４ｂへの出力途中あるいは時刻補正部２６３にて破棄される。
【０２５３】
通常データグラムで経路異常がない場合は、受信部１３３ｂで受信され、バス２６４ｂに出力される。通常データグラムは全ての被制御装置２４１のＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０を経由すれば、冗長ポートから出力する必要が無いため、図２３の経路を通過し、冗長ポートで受信した後にパケットを内部に取り込む。
【０２５４】
通常データグラムで経路異常がある場合は、受信部１３３ａで受信され、時刻補正部２６３において、識別子をＮ１からＮ２に変更して送信部１３２ｂから送信される。これは受信部１３３ｂで受信されて、バス２６４ｂを経由して内部に取り込まれる。これは図１９の経路を通過する。なお、識別子としては、例えば、計時の要否（同期対象装置に計時されるか否か）と、主ポートでの受信後のパケットの転送先と、冗長ポートでの受信後のパケットの転送先と、冗長ポートによる送信の要否をそれぞれ識別する識別子が例示される。この際、被制御装置２４１では、各識別子を同期パケットに関連づけて記憶し、主ポート又は冗長ポートが同期パケットを受信した際に、識別子に基づいて、同期パケットの受信、同期パケットの破棄或いは同期パケットの転送のうち少なくとも一つの処理を実行する。
【０２５５】
以上の方法を用いれば、通信経路の一時的な障害や復帰によるパケットのネットワーク上での残存及び氾濫を防止することができる。
【０２５６】
（ステートマシンによる制御。パケットごとの判定ではない方法）
なお、経路制御部２６２の内部経路の切り替えは、受信パケットごとに異常の有無を判定して、切り替えてもよいし、図１８、図１９、図２３に示す経路構成を状態遷移で管理してもよい。状態間の遷移は、受信パケットの異常判定、正常判定に基づいて制御することが例示される。
【０２５７】
正常判定の方法として、主ポートから送信後に冗長ポートでパケットを受信し、その後、冗長ポートからパケットを送信後に主ポートでパケットを受信したかどうかのいずれか、または両方に該当する方法が例示される。対象データグラムの特定方法は前記のとおりである。
【０２５８】
あるいは正常判定の方法として、全てのスレーブが処理すべきレジスタに対するＢＲＤコマンドをＥｔｈｅｒＣＡＴフレームに付与し、そのワーキングカウンタを見る方法が例示される。ＥｔｈｅｒＣＡＴフレームのワーキングカウンタの値と、事前に設定した所定数と等しい場合に通信経路を正常と判定する。
【０２５９】
なお、経路の切り替えや異常判定、正常判定等の動作を、バス１０６を介してＣＰＵ１０１上で動作するプログラム等に通知してもよい。バス１０６の通信手段には割込み通知等の手段がある。この通知を受けたプログラムでは、通信経路上に異常が生じていること、あるいは正常に復帰したことをユーザやオペレータに通知することで、ユーザやオペレータは異常を復旧させるために通信ケーブルの置換等の対策の実施や、その対策の完了を確認することができる。
【０２６０】
なお、制御用計算機２４０は主ポート、冗長ポートの２つのポートを有するとして説明したが、本実施例で説明した主ポートと冗長ポートの組み合わせを複数分用意した複数ポートで構成してもよい。その場合、本実施例ではパケットが最後に通過するバス２６４ｂはバス１０６へと接続するとしたが、別の主ポートへの接続となる。なお、通信ポートが奇数の場合は、余りの１つのポートではライントポロジで被制御装置２４１を接続する構成が例示される。
【０２６１】
（効果）
本実施例によれば、通信経路に異常が発生したとしても、制御用計算機２４０は冗長経路を利用し、かつ、冗長経路を利用した場合の遅延の変化を基準時刻配信用データグラム上の基準時刻に反映することで、被制御装置２４１は経路異常の発生を意識することなく時刻同期を維持することができる。したがって、制御用途のリアルタイム通信において、経路冗長化による高信頼化と高精度な時刻同期を実現できる。
【０２６２】
また、パケット、データグラムの識別子、あるいは状態遷移を用いて経路制御することで、一時的な通信経路の変化によるパケットのネットワーク上での残存及び氾濫を防止することができる。さらに、定期的に基準スレーブの基準時刻をスレーブ群に配信し、時刻同期するようにしているので、各スレーブのローカルクロックの基準となる物理的な精度誤差から、一度同期をしたとしても、経時にしたがい同期精度が低下していくのを防止することができる。
【実施例３】
【０２６３】
第三実施例は、本発明を適用した制御用計算機２４０を用いたシステムであり、特に２ヶ所以上の通信経路の異常が発生する場合を想定する。なお、実施例に使用する符号は、特に断りのない限り、実施例１、実施例２で説明した機能や要素等と同一であることを意味する。
【０２６４】
２箇所以上の経路異常が生じた場合は、通信不通のスレーブが生じるため、制御システムを停止することが例示される。
【０２６５】
これは、ＥｔｈｅｒＣＡＴフレーム中に、全てのスレーブが反応してワーキングカウンタの値を増やすデータグラムを付加し、冗長ポートへの転送等を実施後の受信時（バス２６４ｂでバス１０６へ転送する際）において、既知の全スレーブ数より小さい場合に２箇所以上の経路異常と判定する。これは経路異常が１箇所であれば、本実施例による経路制御部２６２の経路切り替えにより、全ての被制御装置２４１のＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０へデータグラムが伝送されるためである。全てのスレーブが反応するデータグラムとしてはブロードキャストリードコマンドのデータグラムか、全てのスレーブに共通に設定した論理アドレスへのコマンド等が例示される。
【０２６６】
あるいは、残りのスレーブに対して通信を継続してもよい。
【０２６７】
本実施例により、１箇所目の経路異常の発生位置前のスレーブで折り返されたＥｔｈｅｒｎｅｔフレームは主ポートで受信し、基準スレーブによって設定された基準時刻配信用データグラム上の基準時刻を更新する。この補正値は前述のとおり、経路異常個所を一つと仮定しているため、２箇所目の経路異常後に通知されるスレーブとの遅延とは異なる。
【０２６８】
このような場合、２箇所目の経路異常を経由後に、マスタが冗長ポートで受信すると、前記のワーキングカウンタの値等を用いて、２箇所目の経路異常位置を特定することができる。すなわち、経路異常がない場合の遅延と、２箇所目の経路異常後の遅延の差分を計算し、補正値とすることが例示される。
【０２６９】
図２５を用いて説明する。図２５では、被制御装置２４１ａと被制御装置２４１ｂ間の通信経路、被制御装置２４１ｂと被制御装置２４１ｃ間の通信経路の２箇所で異常が発生している。基準スレーブである被制御装置２４１ａと被制御装置２４１ｃ間の遅延Ｄｃは、経路正常時ではｔＡＢ＋ｔＢＣである。これが図２５では被制御装置２４１ａと被制御装置２４１ｃ間の変化遅延Ｄｃ’はｔＡｍ’＋ｔｍＤ＋ｔＤＣ＋ｔＣに変化する。したがって、時刻補正部２６３はＤｃとＤｃ’の差分を考慮して基準時刻配信用データグラム上の基準時刻を補正する。
【０２７０】
これは２つの経路異常が同時に発生した場合であるが、順に経路異常が発生した場合は、段階的に補正する。例えば、図２５の状態になる前に図１９の状態になったとすると、図１９での被制御装置２４１ａと被制御装置２４１ｃ間の遅延Ｄｃｈは、ｔＡｍ’＋ｔｍＤ＋ｔＤＣ＋ｔＣＢ＋ｔＢ＋ｔＢＣである。したがって、図１９から図２５に変化した場合は、Ｄｃ’とＤｃｈの差分（遅延変化分）に基づいて基準時刻配信用データグラム上の基準時刻を補正する。例えば、冗長ポートで第二の通信経路中の被制御装置２４１ｂから同期パケットを受信した際に、受信した同期パケットに、第二の通信経路中に存在する通信対象の変更を示す変更情報（ワーキングカウンタの値が「３」から「２」に変更されたことを示す情報）が存在する場合、変更情報を基に時刻情報を補正するための補正量を示す遅延変化分を（Ｄｃｈ−ｔＡＢ）から、（Ｄｃ’−Ｄｃ）に変更し、変更した遅延変化分（Ｄｃ’−Ｄｃ）を基に、冗長ポートから同期パケットの宛先へ送信する同期パケットに属する時刻情報を補正する。なお、２つの経路異常が同時に発生した場合でも、同期パケットを冗長ポートから送信する前に遅延変化分を（Ｄｃｈ−ｔＡＢ）として時刻情報を補正し、その後、同期パケットを冗長ポートで受信した際に、遅延変化分を（Ｄｃ’−Ｄｃ）として時刻情報を補正することもできる。
【０２７１】
この補正値、あるいは補正値を算出可能な情報は、個々のスレーブごとに領域を定義し、データグラム上にのせてもよい。
【０２７２】
このようにすれば、２箇所以上の経路異常が発生した直後の通信によって、異常個所の位置を特定し、その次の通信から接続可能なスレーブの補正遅延を決定し、同期を維持することができる。
【０２７３】
なお、スレーブでの同期処理において、過去に配信された基準時刻情報を用いた統計処理を実行することで、２箇所以上の経路異常が発生した場合の同期精度低下の影響を低減できる。
【０２７４】
なお、３箇所以上の経路異常の場合は、２箇所の例において、冗長ポートに最も近い異常個所が２箇所目の異常と同じ扱いとなる。
【０２７５】
（効果）
本実施例によれば、通信経路異常が２箇所以上発生した場合でも、制御通信を継続できる被制御装置２４１に対しては時刻同期を維持できる。よって、本実施例により、経路冗長化によるリアルタイム通信の高信頼化と時刻同期を実現できる。
【実施例４】
【０２７６】
第四実施例は、冗長化中継ボックスに関するものであり、本発明を適用した中継装置３１０において、通信経路の冗長化と時刻同期を実現することを想定する。なお、実施例に使用する符号は、特に断りのない限り、実施例１、実施例２、実施例３で説明した機能や要素等と同一であることを意味する。
【０２７７】
図２６は、本発明を適用した中継装置３１０を用いて構成するシステム例である。
【０２７８】
中継装置３１０は、制御用計算機２４０と複数の被制御装置２４１ａ、２４１ｂ、２４１ｇとを結ぶ制御用ネットワーク２４２中にあって、制御用計算機２４０から送信されたパケットを、中継装置３１０以降に接続する被制御装置２４１ｃ、２４１ｄ、２４１ｅ、２４１ｆへ中継、転送する。なお、中継装置３１０は、通信経路３１１ａを介して被制御装置２４１ｂと、通信経路３１１ｂを介して被制御装置２４１ｃと、通信経路３１１ｃを介して被制御装置２４１ｆと、通信経路３１１ｄを介して被制御装置２４１ｇとそれぞれ接続している。
【０２７９】
中継装置３１０の機能構成を図２７に示す。
【０２８０】
なお、中継装置３１０自身がＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０を有していてもよい。例えば、バス２６４ａ上にＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ２８０を構成することが示される。
【０２８１】
（動的追加）
あるいは中継装置３１０以下に動的に被制御装置２４１を追加するようにしてもよい。
【０２８２】
図２６において、被制御装置２４１ｃ、被制御装置２４１ｄ、被制御装置２４１ｅ、被制御装置２４１ｆを後から追加する場合を考える。中継装置３１０は、制御用計算機２４０から送信されたパケットを、被制御装置２４１ｃへ転送せずに被制御装置２４１ｇへと転送し、独自に被制御装置２４１ｃ、被制御装置２４１ｄ、被制御装置２４１ｅ、被制御装置２４１ｆに対して同期プロトコルを実行し、遅延を計測する。このとき中継装置３１０自身は、基準スレーブ（図２６の被制御装置２４１ａ）との遅延を設定されていているため、この値を加算した遅延を被制御装置２４１ｃ、被制御装置２４１ｄ、被制御装置２４１ｅ、被制御装置２４１ｆに設定することで、これらの被制御装置２４１は、基準スレーブである被制御装置２４１ａとの遅延を設定される。これらの被制御装置２４１の時刻同期を完了した後、中継装置３１０は、制御用計算機２４０から送信されたパケットを被制御装置２４１ｃへ転送するように構成する。被制御装置２４１ｆから返送されたパケットを被制御装置２４１gへと転送するが、被制御装置２４１ｇとの遅延は変化しているため、被制御装置２４１ｇへと転送する際は、被制御装置２４１ｃ、被制御装置２４１ｄ、被制御装置２４１ｅ、被制御装置２４１ｆを経由する分の遅延に基づいて、基準時刻配信用データグラム上の基準時刻を補正する。
【０２８３】
例えば、中継装置３１０において、基準スレーブ（図２６の被制御装置２４１ａ）との遅延（第一の通信遅延）をＤ３１０ａとし、被制御装置２４１ｃ〜２４１ｆにおける遅延（第二の通信遅延）をＤ３１０ｂ＝ｔｍＡ＋ｔＣＤ＋ｔＤＥ＋ｔＥＦ＋ｔＦｍ＋ｔｍＦ＋ｔＦＥ＋ｔＥＤ＋ｔＤＣ＋ｔＣｍとした場合、中継装置３１０において、同期パケットを被制御装置２４１ｇに送信する前に、遅延変化分をＤ３１０ａ＋Ｄ３１０ｂとして、基準時刻配信用データグラム上の基準時刻を補正する。
【０２８４】
このようにすれば、動的な被制御装置２４１の追加を許容しつつ、被制御装置２４１ｇまでを含めて時刻同期することができる。
【０２８５】
（効果）
本実施例により、時刻同期と経路冗長化を両立しながら、制御ネットワークのトポロジの構成の自由度を増すことができ、通信制御システムの物理的制約にあわせて通信制御システムを構築できる。
【実施例５】
【０２８６】
第五実施例は、論理ネットワークに関するものであり、ループ接続を含むネットワーク上で、仮想的なネットワークを構築する場合の適用例である。なお、実施例に使用する符号は、特に断りのない限り、実施例１、実施例２、実施例３、実施例４で説明した機能や要素等と同一であることを意味する。
【０２８７】
図２８のネットワークにおいて、図２８（ａ）において実線で示す仮想ネットワークを構築しているとする。なお、ダッシュ線は物理的には結線されているが、通信装置３２０（通信装置３２０ａ〜３２０ｆ）における通信ポートをブロックする等して通信不可となっている通信経路３２１（３２１ｂｃ）を示す。今、通信経路３２１ｂｃで経路異常が発生し、通信装置３２０ｂが、通信装置３２０ｃ、通信装置３２０ｆとの通信ができなくなるとする。このとき、図２８（ｂ）において、通信経路３２１ｅｆを有効とし、通信経路を切り替えたとする。このとき、通信装置３２０ｂにおいて同期パケット（ＩＥＥＥ  １５８８のＳｙｎｃメッセージなど）を通信装置３２０ｃや通信装置３２０ｆに転送する場合に、図２８（ａ）の通信経路３２１ｂｃを経由する場合と、図２８（ｂ）の通信経路３２１ｂｅ、通信経路３２１ｅｆを経由する場合の遅延差（遅延変化分）で同期パケット上のタイムスタンプを補正することが例示される。
【０２８８】
この際、通信装置３２０ｂと通信装置３２０ｃとを結ぶ通信経路は、ネットワーク上において、各通信装置３２０に属する送受信部（送受信手段）の通信対象の変更に応じて動的に構成されることになる。この場合、通信装置３２０ｂにおける送受信手段の通信対象の変更に伴って、同期パケットの通信経路が、通信経路（第一の通信経路）３２１ｂｃから通信経路（第二の通信経路）３２１ｅ、３２１ｆ、３２１ｆに変更され、第二の通信経路がネットワーク上で動的に構成される場合、第一の通信経路における第一の通信遅延と第二の通信経路における第二の通信遅延とを基に遅延変換分を算出し、算出した遅延変化分を基に同期パケットの時刻情報を補正することができる。
【０２８９】
このような論理ネットワークの構築は、メッシュネットワーク、ＳＴＰ（Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ）、ＲＳＴＰ（Ｒａｐｉｄ  Ｓｐａｎｎｉｎｇ  Ｔｒｅｅ  Ｐｒｏｔｏｃｏｌ）、ＯｐｅｎＦｌｏｗ、ＳＤＮ（Ｓｏｆｔｗａｒｅ  Ｄｅｆｉｎｅｄ  Ｎｅｔｗｏｒｋ）等を含む。
【０２９０】
事前に通信装置３２０間の経路遅延をｐｉｎｇ（ＩＣＭＰ）やＩＥＥＥ  １５８８等の手段を用いて計測することが例示される。
【０２９１】
また、ＳＴＰ、ＲＳＴＰでツリートポロジを構築するためのパスコストを経路遅延としてＢＰＤＵ（Ｂｒｉｄｇｅ  Ｐｒｏｔｏｃｏｌ  Ｄａｔａ  Ｕｎｉｔ）上に含めてもよい。
【０２９２】
あるいは代替経路の選択において、通信遅延が同等となる経路を選択してもよい。
【０２９３】
本実施例によれば、ＳＴＰやＲＳＴＰを含む論理ネットワーク上で経路冗長化を図りながら、時刻同期できる。
【０２９４】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、通信制御装置としては、通信装置１２０、中継装置１２１、制御用計算機２４０、被制御装置２４１、中継装置３１０の中のいずれを用いても良い。上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０２９５】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば、集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Solid  State  Drive）等の記録装置、または、ＩＣ（Integrated  Circuit）カード、ＳＤ（Secure  Digital）メモリカード、ＤＶＤ（Digital  Versatile  Disc）等の記録媒体に記録して置くことができる。
【符号の説明】
【０２９６】
1０１…ＣＰＵ、１０２…通信制御部、１０３…ＰＨＹ、１０４…メモリ、１０５…不揮発性記憶媒体、１０６、１３４、１３５、２６４…バス、１２０、３２０…通信装置、１２１…ネットワーク中継装置、１２２…ネットワーク、１３０…送信制御部、１３１…受信制御部、１３２…送信部、１３３…受信部、１３６…MUX、１３７…システム識別子、１３８…システム識別子変換部、１３９…ネットワーク中継装置設定部、１４０…グループ位置識別子、１５０…パケット、１６０、１６１、２３１、２３２、３１１、３２１…通信経路、１７０…ＩＥＥＥ  １５８８ヘッダ、１７３…ｃｏｒｒｅｃｔｉｏｎ  Ｆｉｅｌｄ、１８３…ｏｒｉｇｉｎ  Ｔｉｍｅｓｔａｍｐ、１９０…通信ポート、２２０…経路制御ルール、２４０…制御用計算機、２４１…被制御装置、２４２…制御用ネットワーク、２５０…冗長化通信制御部、２６０…出力選択部、２６１…入力選択部、２６２…経路制御部、２６３…時刻補正部、２６５…計時部、２６６…通信遅延記憶部、２７０…通信ハードウェア、２７１…スレーブＩＣ、２８０…ＥｔｈｅｒＣＡＴ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ、２８１…自動転送部、２８２…ループバック機能部、２９０…Ｅｔｈｅｒｎｅｔフレーム、２９１…Ｅｔｈｅｒｎｅｔヘッダ、２９２…データ領域、２９３…Ｆｒａｍｅ  Ｃｈｅｃｋ  Ｓｅｑｕｅｎｃｅ、２９４…ＥｔｈｅｒＣＡＴヘッダ、２９５…データグラム、２９６…データグラムヘッダ、２９７…データ（データグラムデータ）、２９８…ワーキングカウンタ（ＷＫＣ）、２９９…コマンド、３００…ｉｎｄｅｘ、３０１…アドレス、３０２…データサイズ、３０３…予約、３０４…Ｃ、３０５…Ｍ、３０６…ＩＲＱ、３１０ … 中継装置
【図１】
2019153941.tif 000003
【図２】
2019153941.tif 000004
【図３】
2019153941.tif 000005
【図４】
2019153941.tif 000006
【図５】
2019153941.tif 000007
【図６】
2019153941.tif 000008
【図７】
2019153941.tif 000009
【図８】
2019153941.tif 000010
【図９】
2019153941.tif 000011
【図１０】
2019153941.tif 000012
【図１１】
2019153941.tif 000013
【図１２】
2019153941.tif 000014
【図１３】
2019153941.tif 000015
【図１４】
2019153941.tif 000016
【図１５】
2019153941.tif 000017
【図１６】
2019153941.tif 000018
【図１７】
2019153941.tif 000019
【図１８】
2019153941.tif 000020
【図１９】
2019153941.tif 000021
【図２０】
2019153941.tif 000022
【図２１】
2019153941.tif 000023
【図２２】
2019153941.tif 000024
【図２３】
2019153941.tif 000025
【図２４】
2019153941.tif 000026
【図２５】
2019153941.tif 000027
【図２６】
2019153941.tif 000028
【図２７】
2019153941.tif 000029
【図２８】
2019153941.tif 000030