(57)【特許請求の範囲】
【請求項１】
第１の伝送路及び第２の伝送路それぞれがマスタノード及び複数のスレーブノードをデイジーチェーン接続し、該デイジーチェーン接続された両端のノードそれぞれで前記第１の伝送路と前記第２の伝送路とを接続してリング状の伝送路を構成し、
何れかのノードが、隣接するノードとの間での通信が不可となる異常状態を検出したときに前記第１の伝送路と前記第２の伝送路とを接続してループバックし、前記異常状態の復旧が検出されたときに前記ループバックを解除して前記ループバックにより前記マスタノードから切り離されたスレーブノードを前記マスタノードに再接続するネットワークシステムにおいて、
前記マスタノードは、所定のメッセージが前記第１の伝送路を介して前記スレーブノードに到達したときの前記スレーブノードが有するタイマが示す第１タイマ値と、前記所定のメッセージが前記第２の伝送路を介して前記スレーブノードに到達したときの前記タイマが示す第２タイマ値と、を収集するためのタイマ値収集メッセージを周回させ、
このタイマ値収集メッセージによって収集された前記第１タイマ値及び前記第２タイマ値と、前記所定のメッセージが前記第１の伝送路及び前記第２の伝送路のそれぞれを介して前記マスタノードに到達したときの前記マスタノードが有するタイマが示すマスタ到達時タイマ値と、前記伝送路に接続されたノードの配置位置とに基づき、隣接するノード間それぞれにおける前記メッセージの伝送時間をノード間伝送時間として算出し、さらに当該ノード間伝送時間を用いて前記スレーブノードと自ノードとの間の伝送遅延時間を算出し、当該伝送遅延時間と自ノードの前記タイマのタイマ値であるマスタタイマ値とを前記スレーブノードに送信して前記スレーブノードのタイマ値の同期化を図るシステム同期部と、
当該システム同期部により前記ノード間伝送時間が算出された時の前記ノードの配置位置を同期演算時システム構成とし、前記ノード間伝送時間を前記同期演算時システム構成と対応付けて同期時情報として記憶領域に格納する同期時情報保存手段と、
前記システム同期部によるノード間のタイマ値の同期化後、何れかのノードがループバック状態に変化したとき、前記記憶領域に保持された前記同期時情報を利用して前記スレーブノードのタイマ値の再同期を図る第１のシステム再同期手段と、を有し、
前記スレーブノードは、前記マスタノードから前記マスタタイマ値及び前記伝送遅延時間を獲得したとき、当該マスタタイマ値と前記伝送遅延時間との和を自ノードの現在のタイマ値として更新設定するタイマ値同期手段を備えることを特徴とするネットワークシステム。
【請求項２】
前記マスタノードは、前記システム同期部によるノード間のタイマ値の同期化後に前記各スレーブノードでの前記ループバック状態の有無を獲得するためのループバック状態読み出しメッセージを各スレーブノードに周回させるループバック状態読み出し手段を有し、
前記スレーブノードは、前記ループバック状態読み出しメッセージを受信したとき、当該ループバック状態読み出しメッセージに自ノードにおけるループバック状態の有無を示すループバック情報を付加するループバック状態付加手段を備え、
前記第１のシステム再同期手段は、
前記各スレーブノードを周回した前記ループバック状態読み出しメッセージに基づき、各ノードがループバック状態に変化したか否かを監視することを特徴とする請求項１記載のネットワークシステム。
【請求項３】
前記マスタノードは、
前記第１のシステム再同期手段による前記タイマ値の再同期後、何れかのノードがループバック状態から復旧したとき前記システム同期部を作動させて前記ノード間でのタイマ値の再同期を図る第２のシステム再同期手段を備えることを特徴とする請求項２記載のネットワークシステム。
【請求項４】
前記第１のシステム再同期手段は、
前記ループバック状態に変化したノードと、前記同期時情報として保持する前記同期演算時システム構成とから現在のシステム構成を検出し、
前記同期時情報のうちの、現在のシステム構成に対応する前記ノード間伝送時間を利用して現在のシステム構成における前記伝送遅延時間を演算し、
当該伝送遅延時間と前記マスタタイマ値とを前記スレーブノードに送信して前記スレーブノードのタイマ値の再同期を図ることを特徴とする請求項１から請求項３の何れか１項に記載のネットワークシステム。
【請求項５】
前記システム同期部は、
前記第１タイマ値及び前記第２タイマ値と、前記マスタ到達時タイマ値と、前記ノードの配置位置とに基づき、一のノードが前記所定のメッセージを一方の伝送路から受信した時点から他方の伝送路から受信するまでの所要時間を受信経過時間として算出し、
第１のノードにおける前記受信経過時間と第２のノードにおける前記受信経過時間との差分の絶対値から、前記第１のノード及び前記第２のノードのうちの上流側のノードにおける前記所定のメッセージに対するメッセージ判定処理時間を減算し、この減算結果の１／２を前記第１のノード及び前記第２のノード間における前記ノード間伝送時間とし、
前記マスタノードとこの下流に隣接するノードとの間の前記ノード間伝送時間を演算するときには、前記所定のメッセージが前記リング状の伝送路を一周するのに要する一周時間から前記マスタノードにおける前記受信経過時間を減算し、この減算結果をノード間伝送時間演算時のマスタノードにおける受信経過時間として用いることを特徴とする請求項１から請求項４の何れか１項に記載のネットワークシステム。
【請求項６】
前記システム同期部は、
前記マスタノードから前記伝送遅延時間の算出対象であるターゲットノードまでの間の、隣接するノード間それぞれの前記ノード間伝送時間の和と、前記マスタノードと前記ターゲットノードとの間に介在するノードにおける前記所定のメッセージに対するメッセージ判定処理時間の和との総和を、前記マスタノードと前記ターゲットノードとの間の伝送遅延時間とすることを特徴とする請求項５記載のネットワークシステム。
【請求項７】
前記スレーブノード及び前記マスタノードのそれぞれは、前記第１タイマ値及び前記第２タイマ値、または前記マスタ到達時タイマ値と共に、前記所定のメッセージを前記第１の伝送路及び前記第２の伝送路の何れから受信したかを表す受信情報を、前記タイマ値収集メッセージの予め設定された領域に付加し、
前記システム同期部は、前記タイマ値収集メッセージに付加された前記受信情報の並び順に基づいて前記各ノードの配置位置を検出することを特徴とする請求項１から請求項６の何れか１項に記載のネットワークシステム。
【請求項８】
前記タイマ値収集メッセージは、タイマ値付加用のデータ部が空の状態で前記マスタノードにより送信され、
前記スレーブノードは前記タイマ値収集メッセージを受信すると、前記第１タイマ値及び前記第２タイマ値を前記データ部に付加して送信し、
前記マスタノードは、前記スレーブノードを経由して周回された前記タイマ値収集メッセージを受信した後、前記伝送路から前記タイマ値収集メッセージを削除することを特徴とする請求項１から請求項７の何れか１項に記載のネットワークシステム。
【請求項９】
前記マスタノードは、前記システム同期部によるノード間のタイマ値の同期化後、前記マスタタイマ値を定期的に送信し、
前記タイマ値同期手段は、前記マスタタイマ値を受信する毎に、自ノードの前記タイマのタイマ値を更新設定することを特徴とする請求項１から請求項８の何れか１項に記載のネットワークシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のノードをデイジーチェーン接続し、且つ両端のノードで回線を折り返すことによりリング状の伝送経路を形成するようにしたネットワークシステムに関する。
【背景技術】
【０００２】
従来、ネットワークにおけるタイマ同期方式として、ＮＴＰ(Network Time Protocol)、或いはＩＥＥＥ１５８８規格等が知られている。
図２０は、ＮＴＰの概要を示したものである。
このＮＴＰは、インターネット等で使用されるプロトコルであって、標準時刻を有するサーバ８１に対し、クライアント８２から時刻通知のメッセージを送信し、サーバ８１側がこれに対して自身の時刻を添付して応答することにより、クライアント８２が自身の時刻を補正するものである。
【０００３】
つまり、クライアント８２は、時刻通知のメッセージを送信した時点から、サーバ８１側の時刻が付加された応答メッセージを受信するまでの応答時間を記録しておき、メッセージが、往路及び復路とも同一経路を通ることを前提として、応答メッセージに付加されたサーバ８１側の時刻を応答時間で補正し、これを応答メッセージ受信時のクライアント８２の現在時刻として自身の時計を修正するようにしている。
【０００４】
例えば、クライアント８２が時刻通知のメッセージを送信した時刻を“ＴＡ”、クライアント８２がサーバ８１側から応答メッセージを受信するまでの応答時間を“２Δ”、サーバ８１側からの応答メッセージに付加されているサーバ８１側の時刻をＴＢとすると、サーバ８１側から応答メッセージを受信した時刻は“ＴＡ＋２Δ”で表すことができ、これはすなわち、“ＴＢ＋Δ”となる。したがって、クライアント８２は現在時刻を、“ＴＢ＋Δ”として設定する。
【０００５】
また、ＩＥＥＥ１５８８規格においても、マスタとスレーブとの間の伝送遅延距離が往路及び復路とも同一であることを前提として、ハードウェアベースでの時間取得、設定機能を用いてＮＴＰより精度の高い同期を実現している。
また、このように、メッセージの往路及び復路の伝送経路が同一であることを利用して同期を行なう方法として、マスタ装置が時刻送信要求元の端末装置に現在時刻を通知し、現在時刻の通知を行なった時点から、その応答を受信するまでの所要時間をマスタ装置で検出し、その往復時間の１／２相当を片道の伝送遅延時間とし、これを現在時刻に加算して他の端末装置に通知し、これを端末装置が現在時刻として設定するようにしたもの（例えば、特許文献１参照）が提案されている。
【０００６】
また、マスタ装置のＧＰＳが正常である間は、メッセージの往路及び復路の伝送経路が同一であることを利用して同期を行い、マスタ装置のＧＰＳも異常となったときには、マスタ装置の現在時刻を一斉同報により他の端末装置に送信し、且つ端末装置がこれを現在時刻として設定することにより、同期を図るようにしたもの（例えば、特許文献２参照）等も提案されている。
【０００７】
さらに、リング型ネットワークシステムにおいて、各局をメインルート及びサブルートからなる二重ループ伝送路により結合し、メインルートとサブルートとで互いに逆方向にメッセージを流すことにより、ターゲットとする局までのメインルート及びサブルートによるメッセージの到達時間差を検出し、この到達時間差をもとに、時刻同期を行なう方法等も提案されている（例えば、特許文献３参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１０−２８１１９号公報
【特許文献２】特開２００６−７１４４１号公報
【特許文献３】特開平６−２１４０６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、図２１（ａ）に示すように、複数のノードＡ〜Ｅがリング状の回線Ｌに接続されたリング型ネットワークシステムにおいては、ノード“Ａ”から送出されたメッセージは、例えば時計周りに伝送路上を巡回する。
例えば図２１（ｂ）に示すように、ノード“Ａ”をマスタとしたとき、時刻“ＴｉｍｅＡ”でマスタノード“Ａ”がブロードキャスト通信によりマスタノード“Ａ”におけるタイマ値を各ノードに通知し、これによりネットワークシステム内でのタイマの同期を図ったとしても、ノード“Ａ”から送出されたメッセージは、ノード“Ｂ”、ノード“Ｃ”、ノード“Ｄ”、ノード“Ｅ”を経てノード“Ａ”に伝達されることになる。このため、例えばノード“Ｂ”とノード“Ｅ”とでは、マスタノード“Ａ”との間のメッセージの伝送距離が異なるため、ノード“Ｂ”がメッセージを受信するタイミングに比較してノード“Ｅ”がメッセージを受信するタイミングは遅れることになる。
【００１０】
つまり、時刻“ＴｉｍｅＡ”でノード“Ａ”が送信したメッセージを各ノードが受信するまでの所要時間を伝送遅延時間としたとき、ノード“Ｂ”における伝送遅延時間“ＴAB”は、ノード“Ａ”とノード“Ｂ”との間の伝送に要する所要時間相当であるのに対し、ノード“Ｅ”での伝送遅延時間“ＴAE”は、メッセージが回線Ｌを介してノード“Ｅ”まで伝送されるのに要する伝送に伴う所要時間とノード“Ａ”及びノードＥ”間に介在するノードがメッセージを受信してからこれを送信するまでの中継に要する所要時間を、介在するノード毎に加算した値との和となる。
【００１１】
このため、リング型ネットワークシステムにおいて同期を行なう場合、例えば、ブロードキャスト通信を用いてノード“Ａ”の時刻を各ノードに伝達したとしても、上述のように、メッセージの送信元であるノード“Ａ”に近い上流側のノードと、ノード“Ａ”から比較的遠い下流側のノードとでは、メッセージを受信する時刻が異なってしまう。
各ノードでは、メッセージを受信した時点で、通知されたノード“Ａ”の時刻を現在時刻としてタイマ値を更新設定しているため、メッセージの受信タイミングが異なると、結果的に各ノードにおけるタイマ値も異なることになり、その分だけ同期精度が低下することになる。
【００１２】
各ノードにおいてタイマ値に同期して実行される処理が、ネットワークにおけるメッセージの一巡時間よりも十分に大きなオーダでの時間差で行なわれたとしても許容されるのであれば問題ないが、例えば、メッセージを受信する毎にノード間で同期して処理を行なうようなシステムにおいては、上流側ノードと、下流側のノードとの間でメッセージ受信時の時刻に差がありこれに基づきタイマ値を更新設定した場合には、問題となる。
【００１３】
例えば、図２１（ａ）に示すようなネットワークシステムに対して、ＮＴＰ、ＩＥＥＥ１５８８規格、特許文献１或いは特許文献２等といった、メッセージが、往路及び復路とも同一経路を通ることを前提とした、時刻同期方式を適用する場合を考える。この場合、リング型ネットワークシステムは、図２１（ｂ）に示すように、メッセージはリング状の回線を一方向に周回して伝送されるため、例えばノード“Ａ”からノード“Ｄ”までの伝送経路と、ノード“Ｄ”からノード“Ａ”までの伝送経路とは異なり、すなわち伝送距離が異なる。このため、メッセージが、往路及び復路とも同一経路を通ることを前提とした、時刻同期方式を適用したとしても十分な精度を得ることはできない。
図２１（ａ）のような複数のノードが物理的にリング型に接続されたネットワークシステムの場合には、各ノードを二重ループ回線で接続しメインルート及びサブルートにおける逆方向に送信されるメッセージの到達時間差を用いることにより時刻同期を行なうことができる。
【００１４】
一方、リング型ネットワークとして、環状のケーブルに複数のノードを接続したネットワークシステムの他に、複数のノードをデイジーチェーン接続し、両端のノードで回線を折り返し、メッセージを往きと戻りとの２回中継することにより、論理的にリング型の伝送路を形成するようにしたネットワークシステムがある。このようなネットワークシステムは、物理的な接続は、ピアツーピアでノード間を１本のケーブルで接続するだけでよく、環状ケーブルを用いたリング型ネットワークシステムのように各ノードをリング状に配置しなくてよいため、ノードの配置位置等に制約を受けることが比較的少ない。また、デイジーチェーン接続されている場合であっても、論理的にリング状の伝送路を形成することによって、一括データ収集及び一括データ配信のプロトコルを容易に実現することができる等といった特徴がある。
【００１５】
このような論理的にリング型の伝送路を形成するネットワークシステムにおいて、メインルート及びサブルートにおけるメッセージの到達時間差を用いることにより時刻同期を行なう場合には、回線を二重にする必要があり、すなわち、往路の伝送線及び復路の伝送線を２組用意せねばならず、ケーブルコスト、対ノイズ性等の問題もある。
また、そもそも、メインルート及びサブルートを設ける時刻同期方法においては、時刻同期のためにメインルート及びサブルートで等しくメッセージを処理できねばならず、ネットワーク処理回路が冗長な回路となってしまう。
そこで、この発明は、上記従来の未解決の問題点に着目してなされたものであり、デイジーチェーン接続され論理的にリング型の伝送路が形成されるネットワークシステムにおいて、各ノード間における同期を容易且つ高精度に行なうことの可能なネットワークシステムを提供することを目的としている。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明の請求項１に係るネットワークシステムは、第１の伝送路及び第２の伝送路それぞれがマスタノード及び複数のスレーブノードをデイジーチェーン接続し、該デイジーチェーン接続された両端のノードそれぞれで前記第１の伝送路と前記第２の伝送路とを接続してリング状の伝送路を構成し、何れかのノードが、隣接するノードとの間での通信が不可となる異常状態を検出したときに前記第１の伝送路と前記第２の伝送路とを接続してループバックし、前記異常状態の復旧が検出されたときに前記ループバックを解除して前記ループバックにより前記マスタノードから切り離されたスレーブノードを前記マスタノードに再接続するネットワークシステムにおいて、前記マスタノードは、所定のメッセージが前記第１の伝送路を介して前記スレーブノードに到達したときの前記スレーブノードが有するタイマが示す第１タイマ値と、前記所定のメッセージが前記第２の伝送路を介して前記スレーブノードに到達したときの前記タイマが示す第２タイマ値と、を収集するためのタイマ値収集メッセージを周回させ、このタイマ値収集メッセージによって収集された前記第１タイマ値及び前記第２タイマ値と、前記所定のメッセージが前記第１の伝送路及び前記第２の伝送路のそれぞれを介して前記マスタノードに到達したときの前記マスタノードが有するタイマが示すマスタ到達時タイマ値と、前記伝送路に接続されたノードの配置位置とに基づき、隣接するノード間それぞれにおける前記メッセージの伝送時間をノード間伝送時間として算出し、さらに当該ノード間伝送時間を用いて前記スレーブノードと自ノードとの間の伝送遅延時間を算出し、当該伝送遅延時間と自ノードの前記タイマのタイマ値であるマスタタイマ値とを前記スレーブノードに送信して前記スレーブノードのタイマ値の同期化を図るシステム同期部と、当該システム同期部により前記ノード間伝送時間が算出された時の前記ノードの配置位置を同期演算時システム構成とし、前記ノード間伝送時間を前記同期演算時システム構成と対応付けて同期時情報として記憶領域に格納する同期時情報保存手段と、前記システム同期部によるノード間のタイマ値の同期化後、何れかのノードがループバック状態に変化したとき、前記記憶領域に保持された前記同期時情報を利用して前記スレーブノードのタイマ値の再同期を図る第１のシステム再同期手段と、を有し、前記スレーブノードは、前記マスタノードから前記マスタタイマ値及び前記伝送遅延時間を獲得したとき、当該マスタタイマ値と前記伝送遅延時間との和を自ノードの現在のタイマ値として更新設定するタイマ値同期手段を備えることを特徴とする。
【００１７】
また、請求項２に係るネットワークシステムは、前記マスタノードは、前記システム同期部によるノード間のタイマ値の同期化後に前記各スレーブノードでの前記ループバック状態の有無を獲得するためのループバック状態読み出しメッセージを各スレーブノードに周回させるループバック状態読み出し手段を有し、前記スレーブノードは、前記ループバック状態読み出しメッセージを受信したとき、当該ループバック状態読み出しメッセージに自ノードにおけるループバック状態の有無を示すループバック情報を付加するループバック状態付加手段を備え、前記第１のシステム再同期手段は、前記各スレーブノードを周回した前記ループバック状態読み出しメッセージに基づき、各ノードがループバック状態に変化したか否かを監視することを特徴としている。
【００１８】
また、請求項３に係るネットワークシステムは、前記マスタノードは、前記第１のシステム再同期手段による前記タイマ値の再同期後、何れかのノードがループバック状態から復旧したとき前記システム同期部を作動させて前記ノード間でのタイマ値の再同期を図る第２のシステム再同期手段を備えることを特徴としている。
さらに、請求項４に係るネットワークシステムは、前記第１のシステム再同期手段は、前記ループバック状態に変化したノードと、前記同期時情報として保持する前記同期演算時システム構成とから現在のシステム構成を検出し、前記同期時情報のうちの、現在のシステム構成に対応する前記ノード間伝送時間を利用して現在のシステム構成における前記伝送遅延時間を演算し、当該伝送遅延時間と前記マスタタイマ値とを前記スレーブノードに送信して前記スレーブノードのタイマ値の再同期を図ることを特徴としている。
【００１９】
さらにまた、請求項５に係るネットワークシステムは、前記システム同期部は、前記第１タイマ値及び前記第２タイマ値と、前記マスタ到達時タイマ値と、前記ノードの配置位置とに基づき、一のノードが前記所定のメッセージを一方の伝送路から受信した時点から他方の伝送路から受信するまでの所要時間を受信経過時間として算出し、第１のノードにおける前記受信経過時間と第２のノードにおける前記受信経過時間との差分の絶対値から、前記第１のノード及び前記第２のノードのうちの上流側のノードにおける前記所定のメッセージに対するメッセージ判定処理時間を減算し、この減算結果の１／２を前記第１のノード及び前記第２のノード間における前記ノード間伝送時間とし、前記マスタノードとこの下流に隣接するノードとの間の前記ノード間伝送時間を演算するときには、前記所定のメッセージが前記リング状の伝送路を一周するのに要する一周時間から前記マスタノードにおける前記受信経過時間を減算し、この減算結果をノード間伝送時間演算時のマスタノードにおける受信経過時間として用いることを特徴としている。
【００２０】
またさらに、請求項６に係るネットワークシステムは、前記システム同期部は、前記マスタノードから前記伝送遅延時間の算出対象であるターゲットノードまでの間の、隣接するノード間それぞれの前記ノード間伝送時間の和と、前記マスタノードと前記ターゲットノードとの間に介在するノードにおける前記所定のメッセージに対するメッセージ判定処理時間の和との総和を、前記マスタノードと前記ターゲットノードとの間の伝送遅延時間とすることを特徴としている。
【００２１】
また、請求項７に係るネットワークシステムは、前記スレーブノード及び前記マスタノードのそれぞれは、前記第１タイマ値及び前記第２タイマ値、または前記マスタ到達時タイマ値と共に、前記所定のメッセージを前記第１の伝送路及び前記第２の伝送路の何れから受信したかを表す受信情報を、前記タイマ値収集メッセージの予め設定された領域に付加し、前記システム同期部は、前記タイマ値収集メッセージに付加された前記受信情報の並び順に基づいて前記各ノードの配置位置を検出することを特徴としている。
【００２２】
さらに、請求項８に係るネットワークシステムは、前記タイマ値収集メッセージは、タイマ値付加用のデータ部が空の状態で前記マスタノードにより送信され、前記スレーブノードは前記タイマ値収集メッセージを受信すると、前記第１タイマ値及び前記第２タイマ値を前記データ部に付加して送信し、前記マスタノードは、前記スレーブノードを経由して周回された前記タイマ値収集メッセージを受信した後、前記伝送路から前記タイマ値収集メッセージを削除することを特徴としている。
また、請求項９に係るネットワークシステムは、前記マスタノードは、前記システム同期部によるノード間のタイマ値の同期化後、前記マスタタイマ値を定期的に送信し、前記タイマ値同期手段は、前記マスタタイマ値を受信する毎に、自ノードの前記タイマのタイマ値を更新設定することを特徴としている。
【発明の効果】
【００２３】
本発明によれば、各スレーブノードにおける、所定のメッセージを第１の伝送路から受信した時点でのスレーブノードのタイマの第１タイマ値と第２の伝送路から受信した時点での第２タイマ値とをマスタノードで収集する。そして、収集した第１タイマ値及び第２タイマ値と、マスタノードが前記所定のメッセージを第１の伝送路、第２の伝送路のそれぞれから受信した時点でのマスタノードのタイマのタイマ値であるマスタ到達時タイマ値と、各ノードの配置位置とをもとに、マスタノードが、隣接するノード間での前記所定のメッセージの伝送時間をノード間伝送時間として演算し、このノード間伝送時間を利用してマスタノードとスレーブノードとの間の伝送遅延時間を演算する。そして、この伝送遅延時間とマスタノードのマスタタイマ値とをマスタノードがスレーブノードに通知し、各スレーブノードが、マスタタイマ値と通知された伝送遅延時間とを獲得したとき、マスタタイマ値と通知された伝送遅延時間との和を各スレーブノードでのタイマ値として更新設定するため、ノード間におけるタイマ値を的確に同期させることができる。
【００２４】
さらにマスタノードでは、何れかのノードがループバック状態となったとき、すなわち何れかのノードが切り離されたときには、先にノード間伝送時間を演算した際に記憶しておいたノード間伝送時間を含む同期時情報を用いて、スレーブノードのタイマ値の再同期を図るため、ノード間伝送時間の演算に要する所要時間相当だけタイマ値の再同期に要する所要時間を短縮することができる。よって、より早い段階でノード間でのタイマ値を同期させることができる。
【図面の簡単な説明】
【００２５】
【図１】本発明を適用したネットワークシステムの一例を示す構成図である。
【図２】（ａ）は本発明の接続状態を表す説明図、（ｂ）は論理的な接続状態を表す説明図である。
【図３】ノードの概略構成を示すブロック図である。
【図４】ノードの動作説明に供する説明図である。
【図５】マスタノードで実行されるシステム同期処理の処理手順の一例を示すフローチャートである。
【図６】スレーブノードで実行される同期化処理の処理手順の一例を示すフローチャートである。
【図７】マスタノードで実行されるシステム再同期処理の処理手順の一例を示すフローチャートである。
【図８】スレーブノードで実行されるループバック状態付加処理の処理手順の一例を示すフローチャートである。
【図９】ループバック状態読み出しメッセージに付加される情報の一例である。
【図１０】本発明の動作説明に供する説明図である。
【図１１】タイマ値収集メッセージで収集されたタイマ情報の一例である。
【図１２】伝送遅延時間の演算方法を説明するための説明図である。
【図１３】本発明の動作説明に供する説明図である。
【図１４】本発明の動作説明に供する説明図である。
【図１５】本発明の動作説明に供する説明図である。
【図１６】本発明の動作説明に供する説明図である。
【図１７】本発明の動作説明に供する説明図である。
【図１８】本発明の動作説明に供する説明図である。
【図１９】本発明の動作説明に供する説明図である。
【図２０】ＮＴＰによる同期方式を説明するための説明図である。
【図２１】リング型ネットワークのブロードキャスト通信を用いた同期方法を説明するための説明図である。
【発明を実施するための形態】
【００２６】
以下、本発明の実施の形態を説明する。
図１は、本発明を適用したネットワークシステムの一例を示す構成図である。
このネットワークシステムは、例えば、ノード“Ａ”〜ノード“Ｅ”の５つのノードを備えて構成され、ノード“Ａ”がマスタとして動作する。
各ノードは、ノード“Ｅ”、ノード“Ａ”、ノード“Ｂ”、ノード“Ｃ”、ノード“Ｄ”の順にデイジーチェーン接続され、隣接するノード間は、それぞれ１対１にピアツーピアで接続される。すなわち、ノード“Ｅ”及びノード“Ａ”間は、ケーブルＬ１で接続され、ノード“Ａ”及びノード“Ｂ”間はケーブルＬ２で接続され、ノード“Ｂ”及びノード“Ｃ”間はケーブルＬ３で接続され、ノード“Ｃ”及びノード“Ｄ”間はケーブルＬ４で接続される。
【００２７】
各ノードは、第１の接続端子１１と第２の接続端子１２との２つのケーブル接続口を備え、一方のノードの第１の接続端子１１と他方のノードの第２の接続端子１２とを対応させて接続される。すなわち、ノード“Ｅ”の第２の接続端子１２とケーブルＬ１の一端とを接続し、ノード“Ａ”の第１の接続端子１１とケーブルＬ１の他端とを接続することによりノード“Ｅ”とノード“Ａ”とをピアツーピア接続する。同様にノード“Ａ”の第２の接続端子１２及びノード“Ｂ”の第１の接続端子１１間、ノード“Ｂ”の第２の接続端子１２及びノード“Ｃ”の第１の接続端子１１間、ノード“Ｃ”の第２の接続端子１２及びノード“Ｄ”の第１の接続端子１１間を接続することにより、隣接するノード間がピアツーピアで接続されたネットワークシステムが形成される。
【００２８】
各ケーブルＬｎ（ｎ＝１〜４）は、図２（ａ）に示すように、第１の配線Ｌ11と当該第１の配線Ｌ11と同一長さの第２の配線Ｌ22とを有する。
各ノードは、図２（ａ）に示すように、ケーブルＬｎ及びケーブルＬｎ＋１の第１の配線Ｌ11どうし、及び第２の配線Ｌ22どうしを、ノードを介して接続する。また、端部のノードであって、一方の接続端子１１又は１２のみにケーブルＬｎが接続されているノード“Ｄ”又は“Ｅ”は、接続されたケーブルＬｎの第１の配線Ｌ11と第２の配線Ｌ22とを内部で接続する。すなわち、ノード“Ｄ”は、ケーブルＬ４の第１の配線Ｌ11と第２の配線Ｌ22とを接続する。また、ノード“Ｅ”は、ケーブルＬ１の第１の配線Ｌ11と第２の配線Ｌ22とを接続する。
【００２９】
これによって、図２（ａ）に示すように、各ノード“Ａ”〜“Ｃ”を介して接続された一連の第１の配線Ｌ11と、一連の第２の配線Ｌ22とが、端部のノード“Ｄ”及び“Ｅ”で接続されて、各ケーブルＬｎの第１の配線Ｌ11と第２の配線Ｌ22とからなるリング状の伝送路を形成している。その結果、図２（ｂ）に示すように、論理的にリング状に接続されたリング型ネットワークを構成している。
なお、図２（ａ）において、１３は処理部である。この処理部１３は、ケーブルＬｎを介して伝送されるメッセージの送受信処理及び受信した自ノード宛のメッセージにしたがって所定の演算を行なう等のメッセージ処理を行なう。
【００３０】
図３は、各ノードの構成の一例を示したものである。
図３に示すように、各ノードは、ケーブルＬｎが接続される第１の接続端子１１及び第２の接続端子１２と、処理部１３と、ラッチ回路１５及び１６と、タイマ１７と、切り替え回路１８と、を備える。
ラッチ回路１５は、第１の接続端子１１に接続される第１の配線Ｌ11から伝送メッセージを入力すると共に、伝送メッセージを切り替え回路１８に出力する。
そして、ラッチ回路１５は、伝送メッセージの予め設定された特定領域を参照し、この特定領域のデータが予め設定した特定情報であるとき、タイマ１７のタイマ値をラッチすると共に、第１のタイマ値有効フラグＦ１を“１”とし、第１のタイマ値有効フラグＦ１とラッチタイマ値とを処理部１３に出力する。伝送メッセージの特定領域のデータが前記特定情報でないときにはタイマ値のラッチは行なわない。
【００３１】
一方、ラッチ回路１６は、第２の接続端子１２に接続される第２の配線Ｌ22からの伝送メッセージを入力すると共に、伝送メッセージを切り替え回路１８に出力する。
そして、ラッチ回路１６は、伝送メッセージの予め設定された前記特定領域を参照し、この特定領域のデータが前記特定情報であるとき、タイマ１７のタイマ値をラッチし、第２のタイマ値有効フラグＦ２を“１”とし、第２のタイマ値有効フラグＦ２とラッチタイマ値とを処理部１３に出力する。伝送メッセージの前記特定領域のデータが特定情報でないときにはタイマ値のラッチは行なわない。
【００３２】
これらラッチ回路１５及び１６は、上述のように特定のメッセージを受信したかを監視し、受信したときにタイマ１７のタイマ値を獲得し、タイマ値及びタイマ値有効フラグを“１”として通知するだけの回路である。したがって、これらラッチ回路１５及び１６を追加したとしても、メッセージの伝送に影響を与えるものではない。また、処理部１３と無関係にタイマ値のラッチのみを行なうため回路全体に対する影響も小さい。
【００３３】
タイマ１７は、水晶振動子を含んで構成され、タイマ値をラッチ回路１５及び１６に出力する。
切り替え回路１８は、自ノードが、端部のノードであるか否かに応じて、処理部１３、ラッチ回路１５及び１６、第１の接続端子１１、第２の接続端子１２との間で接続先を切り替える。なお、自ノードが端部のノードであるか否かは、例えば、各ノードにおいて、第１の接続端子１１と第２の接続端子１２との何れか一方のみにケーブルが接続されている状態であるか否かを、例えば電気的に未接続状態であるか否かを検出すること等により検出すればよい。また、切り替え回路１８における切り替えは、ソフトウェア的に切り替えるようにしてもよく、また物理的に接続先を切り替えるように構成してもよい。
【００３４】
そして、切り替え回路１８は、自ノードが端部に位置していないとき、すなわちノード間に接続された中間ノードである場合には、図４（ａ）に示すように、ラッチ回路１５からの伝送メッセージをそのまま処理部１３に伝達し、処理部１３からの伝送メッセージを第２の接続端子１２の第１の配線Ｌ11に送出する。
また、切り替え回路１８は、ラッチ回路１６からの伝送メッセージをそのまま第１の接続端子１１の第２の配線Ｌ22に送出する。
【００３５】
一方、自ノードが右端のノードである場合、すなわち、図１において、ノード“Ｄ”である場合には、第２の接続端子１２には、ケーブルＬｎが接続されないため、切り替え回路１８は、図４（ｂ）に示すように、ラッチ回路１５からの伝送メッセージを処理部１３に伝達し、処理部１３からの伝送メッセージを第１の接続端子１１の第２の配線Ｌ22に送出する。
同様に、自ノードが左端のノードである場合、すなわち、図１において、ノード“Ｅ”である場合には、第１の接続端子１１には、ケーブルＬｎが接続されていないため、切り替え回路１８は、図４（ｃ）に示すように、ラッチ回路１６からの伝送メッセージをそのまま処理部１３に伝達し、処理部１３からの伝送メッセージを第２の接続端子１２の第１の配線Ｌ11に送出する。
【００３６】
そして、処理部１３は、切り替え回路１８を介して受信した伝送メッセージに基づき前記送受信処理及びメッセージ処理等を行ない、必要に応じて伝送メッセージを生成しこれを切り替え回路１８に出力する。また、処理部１３は、隣接するノードとの通信状態を監視し、断線または隣接するノード自体の異常等の要因のために、隣接するノードとの通信が不可となる通信系統の異常状態を検出したときには、ループバックを行ってこのノードをネットワークシステムから切り離す。これによりマスタノードとこのマスタノードと接続状態にある他のノード（以後、スレーブノードともいう）との間で通信を継続する。また、隣接するノードの異常状態の復旧を検出したときにはループバックを解除し、このループバックによりネットワークシステムから切り離されたスレーブノードをマスタノードに再接続する。
【００３７】
また、処理部１３は、ラッチ回路１５及び１６からの第１のタイマ値有効フラグＦ１及びラッチタイマ値、第２のタイマ値有効フラグＦ２及びラッチタイマ値を入力する。
そして、自ノードがマスタノードであるときには、システム同期処理を実行して各ノードからラッチタイマ値を収集し、これに基づきノード間でのタイマ値の同期を図る。また、自ノードがマスタノードであるときにはシステム再同期処理を実行し、具体的には自ノードを含む各ノードがループバック状態にあるか否かを監視し、何れかのノードのループバック状態が変化したとき、すなわち何れかのノードがループバック状態となったとき或いはループバック状態を解除したときには、再度ネットワークシステムのノード間におけるタイマ値の同期を図る。つまり、何れかのノードがループバック状態となること或いはループバック状態を解除することによりネットワークシステムのシステム構成が変化することから、マスタノード及びこれと接続されるスレーブノードとからなる新たなシステム構成においてノード間のタイマ値の同期化を図る。なお、ここでいうシステム構成とは、マスタノードと、このマスタノードと接続状態にあるスレーブノードとからなるシステムをいい、すなわちネットワークシステムにおいて、実質的に動作可能なノードから構成されるシステムのことをいう。
【００３８】
一方、自ノードがマスタノードでないとき、つまりスレーブノードであるときには、マスタノードからタイマラッチ指示メッセージを受信したときに同期化処理を実行し、マスタノードからの指示にしたがって、マスタノードとの間のタイマ値の同期化を図る。また、スレーブノードであるときには、ループバック状態付加処理を行い、自ノードがループバック状態にあるか否かを、マスタノードに通知する。
【００３９】
次に、マスタノードで実行されるシステム同期処理及びスレーブノードで実行される同期化処理の処理手順を、図５及び図６を伴って説明する。なお、図５はマスタノードでのシステム同期処理、図６はスレーブノードでの同期化処理の処理手順の一例を示すフローチャートである。
マスタノードでは、このシステム同期処理を予め設定したタイミングで実行する。例えば、起動時、或いは予め設定された定周期で実行する。
【００４０】
マスタノードでは、図５に示すように、まず、ステップＳ１で、各ノードに対してタイマ１７のラッチを指示するタイマラッチ指示メッセージを送信する。このとき、マスタノードは、タイマラッチ指示メッセージを、各ノード宛にブロードキャスト通信により送信する。また、マスタノードでは、タイマラッチ指示メッセージの予め設定した領域に、このメッセージがタイマラッチ指示メッセージであることを特定するための特定情報を設定して送信する。
【００４１】
スレーブノードでは、タイマラッチ指示メッセージを受信すると、ラッチ回路１５又は１６で、タイマラッチ指示メッセージの予め設定された特定領域のデータが所定の特定情報であるか否かを判断する。このとき、ラッチ回路１５及び１６には、参照すべき特定領域及び特定情報として、マスタノードから送信される前記タイマラッチ指示メッセージの、当該メッセージがタイマラッチ指示メッセージであることを特定する特定情報が格納されている領域と、前記タイマラッチ指示メッセージであることを特定する特定情報とを設定しておく。
【００４２】
ラッチ回路１５又は１６は、受信したメッセージの特定領域を参照し、そのデータがタイマラッチ指示メッセージであることを特定する特定情報と一致するとき、受信したメッセージはタイマラッチ指示メッセージであると認識し、この時点におけるタイマ１７のタイマ値をラッチする。そして、ラッチ回路１５でタイマ値をラッチしたときには第１のタイマ値有効フラグＦ１を“１”、ラッチ回路１６でタイマ値をラッチしたときには第２のタイマ値有効フラグＦ２を“１”、として、タイマ値有効フラグとラッチタイマ値とを対応付けて処理部１３に出力する。
【００４３】
このとき、図２（ａ）に示すように、第１の配線Ｌ11を介して伝送されるタイマラッチ指示メッセージは、端部のノードで折り返されて第２の配線Ｌ22を介して伝送されるため、ノード間に配置されたスレーブノードでは、第１の配線Ｌ11からタイマラッチ指示メッセージを受信した後、再度第２の配線Ｌ22から同一のタイマラッチ指示メッセージを受信することになる。
このため、ノード間に配置されたスレーブノードでは、ラッチ回路１５及び１６のそれぞれによりタイマ値がラッチされることになる。
一方、端部に配置されたスレーブノードでは、内部で折り返しているため、タイマラッチ指示メッセージは、ラッチ回路１５及び１６の何れか一方のみにより検出され、タイマ値がラッチされることになる。
【００４４】
スレーブノードの処理部１３では、タイマラッチ指示メッセージを受信し、これに伴いラッチ回路１５、１６から、ラッチタイマ値及びタイマ値有効フラグを入力すると、これら情報を所定の記憶領域に保持する（図６ステップＳ１１）。
マスタノードでは、各ノードを周回したタイマラッチ指示メッセージを受信するとこれを伝送路から削除し、次に、タイマ値収集メッセージを送信し、各ノードに対して、各ノードでラッチしたタイマ情報の付加を指示する（図５ステップＳ２）。
【００４５】
スレーブノードでは、タイマ値収集メッセージを受信すると、図６のステップＳ１２に移行し、ラッチ回路１５及び１６の両方又は何れかから通知されたタイマ値有効フラグ及びラッチタイマ値をタイマ情報とし、これをタイマ値収集メッセージの予め設定された領域に、その領域の先頭から順に格納する。前記タイマ値収集メッセージには、例えば、各ノードがタイマ情報を付加するための領域として、タイマ値付加用のデータ部が空領域として確保されており、このデータ部に、各ノードがそのタイマ情報を順次格納するように構成されている。
前述のように、ノード間に位置するノードでは、往路と復路との２回、同一のタイマラッチ指示メッセージを受信するため、タイマ情報は、往き時におけるタイマ値有効フラグ及びラッチタイマ値と、戻り時におけるタイマ値有効フラグ及びラッチタイマ値とで構成される。
【００４６】
一方、右端又は左端に位置するノードでは、往路又は復路の何れか一回のみタイマラッチ指示メッセージを受信する。このため、右端又は左端のノードでは、ラッチ回路１５又は１６の何れか一方でのみタイマ値をラッチする。処理部１３では、ラッチ回路１５からラッチタイマ値を受信しなかったときには第１のタイマ値有効フラグＦ１を“０”とし、ラッチ回路１６からラッチタイマ値を受信しなかったときには第２のタイマ値有効フラグＦ２を“０”とする。そして、“０”に設定されたタイマ値有効フラグと、ラッチ回路１５又は１６から通知されたラッチタイマ値及びこれに対応する“１”に設定されたタイマ値有効フラグと、をタイマ情報として格納する。
【００４７】
そして、自ノードにおけるタイマ情報を格納した後、これを次ノードに送出する。
各スレーブノードがこの処理を行なうことにより、各ノードにおけるタイマ情報が、タイマ値収集メッセージの所定の領域に格納され、且つ経由したスレーブノードの並び順に、各ノードにおけるタイマ情報が格納されることになる。
マスタノードは、各スレーブノードを周回したタイマ値収集用メッセージを受信するとこれを回収する。そして、タイマ値収集用メッセージの各スレーブノードが格納したタイマ情報の最後に、自ノードにおけるタイマ情報を格納する（図５ステップＳ３）。
【００４８】
マスタノードは、続いて、各スレーブノード及び自ノードにおけるタイマ情報に基づき、マスタノードから送信したタイマラッチ指示メッセージが各スレーブノードに到達するまでの所要時間である伝送遅延時間を、到達先のノード毎にそれぞれ算出する（図５ステップＳ４）。この算出方法は後述する。
そして、ステップＳ４での伝送遅延時間の演算処理過程で検出した、後述のネットワークシステムを構成するノード及びその配置位置を含むシステム構成を同期演算時システム構成として所定の記憶領域に記憶すると共に、同様に伝送遅延時間の演算処理過程で演算したノード間におけるメッセージ伝送時間を、ノード間伝送時間として所定の記憶領域に記憶する（ステップＳ４ａ）。
【００４９】
マスタノードは、ノードごとに伝送遅延時間を算出すると算出した伝送遅延時間を各ノードに通知するための伝送遅延時間設定メッセージを各ノード宛に送出する（図５ステップＳ５）。
スレーブノードは、伝送遅延時間設定メッセージを受信すると、自ノードの伝送遅延時間を獲得する（図６ステップＳ１３）。
マスタノードは、各ノードを周回して戻ってきた伝送遅延時間設定メッセージを伝送路上から削除する。そして、現時点におけるタイマ１７のタイマ値を獲得し、これをマスタタイマ値とし、このマスタタイマ値を伝送するためのマスタタイマ値配布メッセージを生成し、これを各ノード宛にブロードキャストにより送信する（図５ステップＳ６）。そして、システム同期処理を終了する。
【００５０】
スレーブノードは、マスタタイマ値配布メッセージをブロードキャストにより受信すると、受信したマスタタイマ値配布メッセージからマスタタイマ値を獲得し、獲得したマスタタイマ値と、先に伝送遅延時間設定メッセージから獲得した自ノードの伝送遅延時間とを加算し、これを現時点におけるタイマ値として自ノードのタイマ１７のタイマ値を更新設定する（図６ステップＳ１４）。そして、処理部１３では、同期化処理を終了する。
【００５１】
次に、マスタノードで実行されるシステム再同期処理及び、スレーブノードで実行されるループバック状態付加処理を、図７及び図８を伴って説明する。図７はシステム再同期処理の処理手順の一例を示すフローチャート、図８はループバック状態付加処理の処理手順の一例を示すフローチャートである。
マスタノードでは、図５のシステム同期処理を実行した後、予め設定した定周期で図７に示すシステム再同期処理を実行する。
【００５２】
なお、後述のように、マスタノードでは、図７のシステム再同期処理によって収集するスレーブノードのループバック状態に基づき再度システム同期処理を実行するか否かを判断しているため、システム再同期処理の実行周期が長いときほど、ノード間のタイマ値が不同期となる期間が長くなる。したがって、ネットワークシステムの運用状況などから決定される、ノード間のタイマ値が不同期となる許容期間を考慮して、システム再同期処理の実行周期を決定すればよい。
【００５３】
マスタノードでは、まず、ステップＳ２１でループバック状態読み出しメッセージを各スレーブノード宛に発行する。
各スレーブノードは、ループバック状態読み出しメッセージを受信すると（図８ステップＳ３１）、自ノードのループバック状態を、ループバック状態読み出しメッセージの所定の領域に付加して次ノードに送出する（図８のステップＳ３２）。ここで、各ノードは、図４（ｂ）に示すように、第１の接続端子１１側（以後、Ａ系という）でループバックして自ノードが右端のノードとなる場合と、図４（ｃ）に示すように、第２の接続端子１２側（以後、Ｂ系という）でループバックして自ノードが左端のノードとなる場合とがある。
【００５４】
したがって、スレーブノードは、自ノードの局番と、自ノードのＡ系のループバック状態及びＢ系のループバック状態と、を、ループバック状態読み出しメッセージに付加する。この処理を各スレーブノードが実行することにより、例えば図９（ａ）に示すように、各ノードにおけるＡ系のループバック状態、Ｂ系のループバック状態が、各ノードの局番と対応付けられて、ループバック状態読み出しメッセージの所定の領域に格納されることになる。
【００５５】
マスタノードは、各スレーブノードを周回したループバック状態読み出しメッセージを受信すると、これを回収する（図７ステップＳ２２）。そして、マスタノードは、各ノードのループバック状態及び自ノードの現在のループバック状態と、予め所定の記憶領域に記憶している、前回の処理周期における各ノードのループバック状態とを比較し、各ノードのループバック状態に変化があるか否かを判断する（図７ステップＳ２３）。
そして、各ノードのループバック状態に変化がなければそのまま処理を終了するが、各ノードのループバック状態に変化があればステップＳ２４に移行し、各ノードのループバック状態を所定の記憶領域に記憶する。
【００５６】
次いでマスタノードは、ループバック状態の変化に伴い、ネットワークシステムを構成するノードが減少したかどうか、つまり、ネットワークシステムを構成するノードがループバックにより切り離されることによって、ノードが減少したか否かを判断する（ステップＳ２５）。具体的にはループバック状態が変化したノードがループバック状態無しの状態からループバック状態有りの状態に変化したかどうかを判断し、ループバック状態無しからループバック状態有りに変化したときにはループバック状態となったノードの先に接続されていたノードが切り離され、結果的にノードが減少したと判断する。
【００５７】
一方、ループバック状態の変化に伴いノードが増加したときには、ステップＳ２６に移行し、再度、前述の図５に示すシステム同期処理を実行する。
つまり、ループバック状態に変化が生じノードが増加した状態とは、何れかのノードがループバック状態から復旧した状態であって、このループバック状態にあったノードにより切り離されたノードが再接続された状態、切り離されたノード及びその先に別ノードが新たに接続された状態、或いは新たに別のノードが接続された状態等が考えられ、システム同期時におけるネットワークシステムのシステム構成とは異なっている可能性がある。このため、再度システム同期処理を実行する。
【００５８】
一方、ステップＳ２５で、何れかのノードが切り離されノードが減少したと判断されるときには、ステップＳ２７に移行し、予め記憶していたノード間伝送時間を利用して現ネットワークシステムにおけるノード間のタイマ値の同期化を図る。
つまり、ノードが減少したことにより新たに形成されるネットワークシステムは、ループバック状態となる前のシステム構成の一部から形成されることになるため、新たに形成されるネットワークシステムにおけるノード間伝送時間は、ループバック状態となる前の、対応するシステム構成部分のノード間伝送時間と同等であって、この部分のノード間伝送時間は、先に図５に示すシステム同期処理を実行した際に既に演算されている。したがって、この既に演算されたノード間伝送時間を流用して現ネットワークシステムにおけるマスタノードと各スレーブノードとの間の伝送遅延時間を演算することにより、伝送遅延時間の演算に要する所要時間の短縮を図る。
【００５９】
すなわち前記ステップＳ２７では、所定の記憶領域に記憶している各ノードのループバック状態と、前記システム同期処理において獲得した同期演算時システム構成とを読み出し、これらに基づき、現時点でのシステム構成、すなわち現時点でマスタノードと接続状態にあるスレーブノードの配置位置及び構成を検出する。
次いで、前記システム同期処理において検出し、予め記憶領域に記憶しているノード間における伝送時間（ノード間伝送時間）を読み出し（ステップＳ２８）、これを用いて現時点でのシステム構成におけるマスタノード及びスレーブノード間の伝送遅延時間を前記システム同期処理におけるステップＳ４での伝送遅延時間の演算方法と同様の手順で演算する（ステップＳ２９）。
【００６０】
次いで、前記システム同期処理のステップＳ５及びステップＳ６の処理と同様の手順で、演算した伝送遅延時間を、各ノードに通知するための伝送遅延時間設定メッセージを各ノード宛に送信し（ステップＳ３０）、各ノードを周回した伝送遅延時間設定メッセージが戻ってきたときこれを伝送路上から削除し、現時点におけるタイマ１７のタイマ値をマスタタイマ値としてマスタタイマ値配布メッセージを生成し、このマスタタイマ値配布メッセージを各ノード宛にブロードキャストにより送信する（ステップＳ３１）。そして、システム再同期化処理を終了する。
【００６１】
次に、上記実施の形態の動作を説明する。
今、図１に示すノード“Ａ”〜“Ｅ”からなる論理的なリング型ネットワークシステムが構成されたネットワークシステムにおいて、各ノードのタイマ値の同期を行なうものとする。
マスタノード“Ａ”では、まず、タイマラッチ指示メッセージを各ノード宛にブロードキャストで送信し（図５ステップＳ１）、次に、各ノードでのタイマ情報の付加を指示するタイマ値収集メッセージを各ノード宛に送信する（図５ステップＳ２）。
【００６２】
このネットワークシステムは、論理的なリング型ネットワークを構成しているため、各スレーブノードでは、タイマラッチ指示メッセージを、第１の配線側Ｌ11と第２の配線側Ｌ22との両方から入力し、且つ端部のノードでは、タイマラッチ指示メッセージをそのノード内で折り返しているため、第１の配線Ｌ11側又は第２の配線Ｌ22側との何れか一方から入力することになる。
【００６３】
したがって、マスタノード“Ａ”がタイマラッチ指示メッセージを送出してからの経過時間は、図１０のように表されることになる。なお、図１０において縦軸は経過時間、横軸はネットワークシステム上におけるタイマラッチ指示メッセージの伝達状況を表す。
また、各スレーブノードではタイマラッチ指示メッセージを受信すると、図１１に示すように、ラッチ回路１５、１６のうち、タイマ値をラッチしたラッチ回路に対応するタイマ値有効フラグを“１”とし、ラッチ回路１５、１６でタイマラッチ指示メッセージを受信した時点におけるタイマ１７のタイマ値と、第１、第２のタイマ値有効フラグとを処理部１３に通知し、処理部１３では、通知されたタイマ値有効フラグとラッチタイマ値とを対応付けて記憶する（図６ステップＳ１１）。
【００６４】
続いて、スレーブノードでは、ラッチ回路１５又は１６から獲得したラッチタイマ値及びタイマ値有効フラグからなるタイマ情報を、タイマ値収集メッセージの所定の領域に順次格納する（図６ステップＳ１２）。
このため、マスタノード“Ａ”に戻ってきたタイマ値収集メッセージには、各ノードのタイマ情報が各ノードの配置順に格納されている。
例えば、各ノードがラッチ回路１５でラッチしたラッチタイマ値をＴＡ１〜ＴＥ１とし、ラッチ回路１６でタイマ値をラッチしたタイミングをＴＡ２〜ＴＥ２とすると、図１１に示すように、タイマラッチ指示メッセージには、ノードの並び順に各ノードを特定する局番とタイマ情報とが対応付けられて格納され、タイマ情報としてタイマ値有効フラグとラッチタイマ値とが格納される。
【００６５】
ノード“Ｂ”は、ノードとノードとの間に配置されたノードであって、ラッチ回路１５及び１６の両方によりタイマラッチ指示メッセージが検出されるため、ラッチ回路１５でラッチしたラッチタイマ値ＴＢ１及び第１のタイマ値有効フラグＦ１＝“１”と、ラッチ回路１６でラッチしたラッチタイマ値ＴＢ２及び第２のタイマ値有効フラグ値Ｆ２＝“１”とが格納され、同様に、ノード“Ｃ”、また、ノード“Ａ”においても、それぞれラッチ回路１５及び１６によるラッチタイマ値と、第１のタイマ値有効フラグＦ１＝“１”及び第２のタイマ値有効フラグＦ２＝“１”と、が格納される。
【００６６】
一方、ノード“Ｄ”は右端のノードであり、ラッチ回路１５でのみタイマ値がラッチされるため、ラッチタイマ値ＴＤ１と第１のタイマ値有効フラグＦ１＝“１”とが格納され、ラッチ回路１６による第２のタイマ値有効フラグＦ２は“０”として格納される。
同様に、ノード“Ｅ”は左端のノードであり、ラッチ回路１６でのみタイマ値がラッチされるため、ラッチタイマ値ＴＥ２と第２のタイマ値有効フラグＦ２＝“１”とが格納され、ラッチ回路１５による第１のタイマ値有効フラグＦ１は“０”として設定される。
【００６７】
したがって、各ノードを周回したタイマ値収集メッセージを参照することにより、タイマ値有効フラグの一方が“０”であるノードは端部のノードであると判断することができる。そして、第１のタイマ値有効フラグＦ１が“０”の場合には、第１の接続端子１１にケーブルＬｎが接続されていないことを意味するため、左端のノードであると判断することができる。同様に、第２のタイマ値有効フラグＦ２が“０”の場合には、第２の接続端子１２にケーブルＬｎが接続されていないことを意味するため、右端のノードであると判断することができる。
【００６８】
このため、マスタノード“Ａ”では、図１１のタイマ値収集メッセージに格納された各ノードのタイマ情報の格納順及びタイマ値有効フラグが“０”であるか否かに基づき、マスタノード“Ａ”から、ノード“Ｂ”、“Ｃ”、“Ｄ”、“Ｅ”、“Ａ”の並びでリング型のネットワークが形成され、且つノード“Ｄ”が右端のノード、ノード“Ｅ”が左端のノードであることを認識することができ、すなわち、図１に示す並び順で各ノードが接続されていることを認識することができる。
【００６９】
そして、マスタノード“Ａ”では、図１１に示す、各ノードにおけるタイマ情報を獲得すると、これに基づき各ノードの配置順を検出し、これに基づき伝送遅延時間を演算する（図５ステップＳ４）。
ここで、この時点では、各ノード間においてタイマ値の同期はとられていないため、それぞれのノードにおけるタイマ値の間に何ら相関関係はない。
【００７０】
しかしながら、同一ノード内のタイマ値、例えば、ＴＢ１とＴＢ２とは、同一のタイマ１７の値をラッチしているため、このタイマ値ＴＢ１とＴＢ２との差分は、ノード“Ｂ”において、ラッチタイマ指示メッセージを上流側から受信した時点から同一のメッセージが下流側から戻ってくるまでの所要時間（以下、受信経過時間いう。）を表している。
ネットワークシステム上の、各ノードにおける受信経過時間どうしは比較可能なデータであり、例えばノード“Ｂ”における受信経過時間ΔＴＢと、ノード“Ｃ”における受信経過時間ΔＴＣとは比較することができる。
【００７１】
ノード“Ｂ”における受信経過時間ΔＴＢとノード“Ｃ”における受信経過時間ΔＴＣとの差分ＤＩＦＦBC（＝ΔＴＢ−ΔＴＣ）は、図１０及び図１２に示すように、「ノード“Ｂ”が上流からメッセージを受信してから、このメッセージがノード“Ｃ”に到達するまで（図１２中の太線ｍ１部分）の所要時間」と「ノード“Ｃ”が下流からメッセージを受信してからこのメッセージがノード“Ｂ”に到達するまで（図１２中の太線ｍ２部分）の所要時間」との和に相当することになる。
したがって、差分ＤＩＦＦBCは次式（１）で表すことができる。
ＤＩＦＦBC＝（ＴＢ２−ＴＢ１）−（ＴＣ２−ＴＣ１）            ……（１）
【００７２】
また、差分ＤＩＦＦBCは、図１０に示すように、ノード“Ｂ”−“Ｃ”間のケーブルＬ３におけるノード間伝送時間と、ノード“Ｂ”にメッセージが到達してからメッセージが送出されるまでの所要時間、すなわち、メッセージの中継及びメッセージを受信するか否かの判定に要する時間（以下、メッセージ判定処理時間という。）と、ノード“Ｃ”に下流側からメッセージが到達してからノード“Ｃ”がこれを中継してメッセージが送出されるまでの所要時間（以下、中継処理時間という。）との和で表すことができる。
【００７３】
ここで、ノード“Ｂ”のメッセージ判定処理時間をＴαとし、ノード“Ｂ”−“Ｃ”間におけるケーブルＬ３におけるノード間伝送時間をＬBCとし、ノード“Ｃ”での中継処理時間は差分ＤＩＦＦBCに比較して十分小さいものとすると、差分ＤＩＦＦBCは略次式（２）で表すことができる。つまり、ケーブルＬ３は、第１の配線Ｌ11と第２の配線Ｌ22とが同一長さであるため、第１の配線Ｌ11と第２の配線Ｌ22とでノード間伝送時間は同一とみなすことができる。したがって、次式（２）が成り立つ。
ＤＩＦＦBC＝２×ＬBC＋Ｔα            ……（２）
【００７４】
したがって（１）及び（２）式から、隣接するノード“Ｂ”−“Ｃ”間のケーブルＬ３におけるノード間伝送時間ＬBCは、次式（３）で表すことができる。
ＬBC＝｛（ＴＢ２−ＴＢ１）−（ＴＣ２−ＴＣ１）−Ｔα｝／２    ……（３）
隣接するノード“Ｃ”−“Ｄ”間のケーブルＬ４におけるノード間伝送時間ＬCDも、前記式（３）と同様の手順で算出することができる。
また、以上の例では、マスタノード“Ａ”よりも右側に配置されたノードにおいて、隣接するノード間のノード間伝送時間を算出しているが、左側に配置されたノードの場合も同様の手順で算出することができる。
【００７５】
ただし、マスタノード“Ａ”とこれに隣接するノードとの間のノード間伝送時間は、マスタノード“Ａ”がラッチタイマ指示メッセージを上流側から受信した時点から同一のメッセージが下流側から戻ってくるまでの所要時間である左側受信経過時間と、マスタノード“Ａ”がラッチタイマ指示メッセージを下流側に送出した時点から同一のメッセージが下流側から戻ってくるまでの所要時間である右側受信経過時間と、を用いて算出する。
【００７６】
前記左側受信経過時間は、マスタノード“Ａ”におけるタイマ値ＴＡ１及びＴＡ２の差分「ＴＡ２−ＴＡ１」で算出することができる。また、右側受信経過間は、マスタノード“Ａ”がラッチタイマ指示メッセージを下流側に送出した時点から、論理的なリング型の伝送経路を一周してマスタノード“Ａ”に戻りこれに対するマスタノード“Ａ”での処理が終了するまでの所要時間（以後、メッセージ一周時間という）をＴとしたとき、「Ｔ−（ＴＡ２−ＴＡ１）」で表すことができる。
【００７７】
なお、メッセージ一周時間は、マスタノード“Ａ”の処理部１３において計測すればよく、処理部１３からラッチタイマ指示メッセージを下流側に送出した時点を開始時点、ラッチタイマ指示メッセージが論理的なリング型の伝送経路を一周してマスタノードに戻り、これに対するマスタノード“Ａ”での処理が終了した時点を終了時点として開始時点から終了時点までの所要時間を演算すればよい。
【００７８】
そして、マスタノード“Ａ”と隣接するスレーブノード“Ｂ”との間のノード間伝送時間を演算するときには、右側受信経過時間「Ｔ−（ＴＡ２−ＴＡ１）」と、ノード“Ｂ”における受信経過時間とに基づき上記（３）式と同様の手順で算出する。また、マスタノード“Ａ”とノード“Ｅ”との間のノード間伝送時間を演算するときには、左側受信経過時間「ＴＡ２−ＴＡ１」とノード“Ｅ”における受信経過時間とに基づき上記（３）式と同様の手順で算出する。
【００７９】
このようにして、ノード“Ａ”−“Ｂ”間、ノード“Ｂ”−“Ｃ”間、ノード“Ｃ”−“Ｄ”間、ノード“Ｅ”−“Ａ”間についてそれぞれノード間伝送時間を算出したならば、これらに基づき、マスタノード“Ａ”と各ノードとの間の伝送遅延時間を算出する。
具体的には、マスタノード“Ａ”とターゲットノードとの間に介在する各ケーブルのノード間伝送時間及び介在するノードにおける処理時間との和を算出しこれをターゲットノードまでの伝送遅延時間とする。
【００８０】
例えば、ターゲットノードを“Ｃ”とする。ネットワークシステムにおける各ノードの配置位置は、タイマ値収集メッセージに付加された各ノードにおけるラッチ情報の並び順から把握することができる。
図１に示すように、マスタノード“Ａ”とターゲットノード“Ｃ”との間にはノード“Ｂ”が介在する。このため、伝送遅延時間は、ノード“Ａ”−“Ｂ”間のケーブルＬ２におけるノード間伝送時間と、ノード“Ｂ”におけるメッセージ判定処理時間と、ノード“Ｂ”−“Ｃ”間のケーブルＬ３におけるノード間伝送時間と、の和で表されることがわかる。
【００８１】
ここで、各ノードにおける処理部１３の演算処理性能が同一であるものとすると、各ノードにおけるメッセージ判定処理時間は同等とみなすことができるため、“Ｔα”として表すことができる。
したがって、マスタノード“Ａ”からターゲットノードまでの間の伝送遅延時間は、マスタノード“Ａ”からターゲットノードまでの間に介在する各ケーブルにおけるノード間伝送時間と、マスタノード“Ａ”からターゲットノードまでの間に介在するノードの数×メッセージ判定処理時間“Ｔα”との和から算出することができる。
【００８２】
つまり、マスタノード“Ａ”とノード“Ｃ”との間の伝送遅延時間は、ノード“Ａ”−Ｃ”間のケーブルＬ２におけるノード間伝送時間と、ノード“Ｂ”−“Ｃ”間のケーブルＬ３におけるノード間伝送時間と、ノードの数（この場合“１”）×Ｔαとの和で表すことができる。
なお、ノードにおけるメッセージ判定処理時間Ｔαは、予め実測しておくこと、或いは、設計時に、メッセージの中継及び受信するか否かの判定に要する所要時間を論理的に算出しておくこと等により予め設定しておけばよい。
【００８３】
マスタノード“Ａ”では、このようにしてマスタノード“Ａ”から各ターゲットノードまでの伝送遅延時間を算出すると、伝送遅延時間の演算過程で検出したネットワークシステムのシステム構成を同期演算時システム構成とし、ノード間におけるメッセージの伝送時間をノード間伝送時間として所定の記憶領域に記憶する（ステップＳ４ａ）。そして、各ターゲットノードと算出した伝送遅延時間とを対応付け、この伝送遅延時間を各ノードに伝達するための伝送遅延時間設定メッセージを生成し、これを各ノード宛に送信する（図５ステップＳ５）。
【００８４】
各スレーブノードでは、伝送遅延時間設定メッセージを受信すると、自ノードの伝送遅延時間を獲得し、これを所定の記憶領域に保存する（図６ステップＳ１３）。
マスタノードでは、各ノードを周回した伝送遅延時間設定メッセージを受信すると、これを伝送路上から削除する。そして、現時点におけるタイマ１７のタイマ値を獲得し、これを各ノードに伝達するためのマスタタイマ値配布メッセージを生成し、このマスタタイマ値配布メッセージをブロードキャストで各ノード宛に送信する（図５ステップＳ６）。
【００８５】
各スレーブノードでは、マスタタイマ値配布メッセージを獲得すると、マスタタイマ値を獲得し、先に受信した自ノードにおける伝送遅延時間とマスタタイマ値とを加算し、これを現時点におけるタイマ１７のタイマ値として更新設定する（図５ステップＳ６）。
例えば、図１３に示すように、各ノードの伝送遅延時間が、ノード“Ｂ”は“１５”、ノード“Ｃ”は“２０”、ノード“Ｄ”は“３０”、ノード“Ｅ”は“５５”、ノード“Ａ”は“０”として通知されたものとする。
マスタノード“Ａ”からマスタタイマ値として“５０００”が通知されたとすると、図１４に示すように、ノード“Ｂ”は、タイマ１７のタイマ値を“５０１５”に更新設定する。同様に、ノード“Ｃ”は“５０２０”、ノード“Ｄ”は“５０３０”、ノード“Ｅ”は“５０５５”として設定する。
【００８６】
ここで、マスタノード“Ａ”のタイマ値が“５０００”であったとしても、マスタタイマ値通知メッセージがノード“Ｂ”に伝達されるまでには伝送遅延時間“１５”を要し、マスタタイマ値通知メッセージが実際にノード“Ｂ”に伝達された時点では、マスタノードのタイマ値は“５０１５”となっている。したがって、マスタタイマ値“５０００”と伝送遅延時間“１５”とを加算した“５０１５”をノード“Ｂ”におけるタイマ値と設定することにより、マスタノード“Ａ”のタイマ値と、ノード“Ｂ”のタイマ値とを“５０１５”で同期させることができる。
【００８７】
つまり、伝送遅延時間は、マスタノード“Ａ”から送信されたタイマラッチ指示メッセージが各ノードに伝達されるまでの所要時間である。したがって、通知されたマスタタイマ値と、伝送遅延時間との和を各ノードにおけるタイマ値として設定することにより、各ノードでは、マスタノードから各ノードにメッセージが伝送されるまでの所要時間を考慮して自ノードにおけるタイマ値を更新設定しているため、各ノードを高精度に同期させることができる。
【００８８】
また、先に通知された伝送遅延時間は、ブロードキャスト通信によりタイマラッチ指示メッセージを送信したときの各ノードにおけるタイマラッチ指示メッセージの送受信タイミングに基づき算出された値である。そして、マスタタイマ値配布メッセージもブロードキャストにより送信されているため、このマスタタイマ値配布メッセージがマスタノードから送信されてから各ノードに伝達されるまでの所要時間は、タイマラッチ指示メッセージがマスタノードから送信されてから各ノードに伝達されるまでの所要時間と同等である。したがって、タイマラッチ指示メッセージの各ノードにおける送受信タイミングに基づき各ノードにおけるタイマ値を更新設定することによって、同等の条件で算出された伝送遅延時間に基づきタイマ値を更新設定することになり、より高精度に同期させることができる。
【００８９】
また、上記実施の形態においては、伝送遅延時間を前記（２）式に基づいて算出しており、前記（２）式では、ノード“Ｂ”からノード“Ｃ”への伝送経路とノード“Ｃ”からノード“Ｂ”への伝送経路とが同一という前提で演算を行なっている。前述のように、ノード“Ｂ”からノード“Ｃ”へのメッセージの伝送は、第１の配線Ｌ11により行い、ノード“Ｃ”からノード“Ｂ”へのメッセージの伝送は第２の配線Ｌ22により行い、第１の配線Ｌ11と第２の配線Ｌ22とは同一の長さを有するため、そのノード間伝送時間は同等とみなすことができる。
【００９０】
したがって、伝送メッセージの論理的な伝送経路は、ノード“Ｃ”からノード“Ｂ”へ伝送する場合には、ノード“Ｃ”、ノード“Ｄ”、ノード“Ｅ”、ノード“Ａ”、ノード“Ｂ“となり、ノード“Ｂ”からノード“Ｃ”への伝送メッセージの伝送経路とは異なるが、この実施の形態においては、ノード“Ｂ”からノード“Ｃ”へ及びノード“Ｃ”からノード“Ｂ”への物理的な伝送路における伝送時間を演算しており、ノード“Ｂ”からノード“Ｃ”への伝送路である第１の配線Ｌ11とノード“Ｃ”からノード“Ｂ”への伝送路である第２の配線Ｌ22との長さは同一であってそのノード間伝送時間は同等であるため、ノード“Ｂ”からノード“Ｃ”への伝送経路とノード“Ｃ”からノード“Ｂ”への伝送経路とが同一という前提で伝送遅延時間の演算を行なったとしても、的確に伝送遅延時間を演算することができる。
【００９１】
今、例えば図１５に示すように、ある時点におけるマスタノード“Ａ”のタイマ値が“１００”、スレーブノード“Ｂ”のタイマ値は“７７”、スレーブノード“Ｃ”のタイマ値は“８０”、スレーブノード“Ｄ”のタイマ値は“２”、スレーブノード“Ｅ”のタイマ値は“１１”であるものとする。この状態では、各ノードのタイマ値が異なるため同期をとることができない。
【００９２】
ここで、図１５に示すように、マスタノード“Ａ”とスレーブノード“Ｂ”間の伝送遅延時間が“１”、同様に、マスタノード“Ａとスレーブノード“Ｃ”間が“３”、マスタノード“Ａとスレーブノード“Ｄ”間が“４”、マスタノード“Ａとスレーブノード“Ｅ”間が“９”とする。マスタノードがタイマ値“１００”の時点でこのタイマ値“１００”をマスタタイマ値としてブロードキャストにより各ノード宛に送信すると、マスタノード“Ａ”及びスレーブノード“Ｂ”間の伝送遅延時間は“１”であるため、スレーブノード“Ｂ”は、そのタイマ値が“７８”の時点で、マスタタイマ値“１００”を受信する。このため、スレーブノード“Ｂ”は、受信したマスタタイマ値“１００”に、マスタノード“Ａ”とスレーブノード“Ｂ”間の伝送遅延時間“１”を加算し、スレーブノード“Ｂ”のタイマ値を“１０１”に更新設定する。これにより、図１５に示すように、マスタノード“Ａ”のタイマ値が“１０１”の時点において、スレーブノード“Ｂ”のタイマ値は“１０１”となり、すなわちマスタノード“Ａ”とスレーブノード“Ｂ”のタイマ値との同期がとれたことになる。
【００９３】
同様に、スレーブノード“Ｃ”、“Ｄ”及び“Ｅ”においても処理を行うことによって、スレーブノード“Ｃ”はマスタノード“Ａ”のタイマ値が“１０３”の時点でマスタタイマ値“１００”を受信してスレーブノード“Ｃ”のタイマ値を“８３”から“１０３”に更新し、スレーブノード“Ｄ”はマスタノード“Ａ”のタイマ値が“１０４”の時点でマスタタイマ値“１００”を受信してスレーブノード“Ｄ”のタイマ値を“６”から“１０４”に更新し、スレーブノード“Ｅ”はマスタノード“Ａのタイマ値が“１０９”の時点でマスタタイマ値“１００”を受信してスレーブノード“Ｅ”のタイマ値を“２０”から“１０９”に更新設定する。
このため、マスタタイマ値“１００”が全てのスレーブノードに到達した時点、すなわちマスタノード“Ａ”のタイマ値が“１０９”の時点で、マスタノード“Ａ”及び各スレーブノード“Ｂ”〜“Ｅ”の各タイマ値が全て“１０９”となり、全てのノードでタイマ値の同期がとれたことになる。
【００９４】
各ノードは、このようにノード間でのタイマ値の同期化が図られた状態でノード間での通信処理を行うと共に、隣接ノードとの間の通信状態を監視し通信異常を検出したときにはループバック状態となって該当する隣接ノードをネットワークから切り離す。また、マスタノード“Ａ”は、図７に示すシステム再同期処理を開始して、定周期でループバック状態読み出しメッセージを各スレーブノード宛に送信し、各スレーブノードは自ノードのループバック状態の有り／無しをループバック状態読み出しメッセージに付加する。マスタノード“Ａ”は、ループバック状態読み出しメッセージに付加された各スレーブノードのループバック状態及び自ノードのループバック状態に基づき各ノードのループバック状態の変化を監視し、ループバック状態が変化していないときには、そのまま処理を終了する。
【００９５】
したがって、図１の構成を有するネットワークシステムにおいて、全てのノードが正常に動作しているときには、図９（ａ）に示すように、端部のノードであるスレーブノード“Ｄ”のＢ系及びスレーブノード“Ｅ”のＡ系はループバック有りとして通知され、その他のスレーブノードではループバック無しとして通知される。
この状態から図１６（ａ）、（ｂ）に示すように、スレーブノード“Ｃ”とスレーブノード“Ｄ”間に通信異常が発生すると、スレーブノード“Ｃ”はこれを検出し、Ａ系側をループバック状態に切り替え、ネットワークからスレーブノード“Ｄ”を切り離す。
これによって、マスタノード“Ａ”、スレーブノード“Ｂ”、“Ｃ”、“Ｅ”からなるネットワークシステムが再構成され、図１６（ｂ）に示すように、マスタノード“Ａ”、スレーブノード“Ｂ”、“Ｃ”、“Ｅ”が論理的にリング状に接続されたネットワークシステムが構成される。
【００９６】
そして、マスタノード“Ａ”から次の処理周期のタイミングでループバック状態読み出しメッセージが発行されると（図７ステップＳ２１）、スレーブノード“Ｃ”では、図９（ｂ）に示すように、“Ｂ系でループバック状態有り”として通知する。このため、マスタノードでは、各ノードを周回したループバック状態読み出しメッセージに付加されたループバック状態有無の情報と、予め記憶している前回処理実行時のループバック状態の有無の情報とを比較することで、スレーブノード“Ｃ”のループバック状態に変化があったことを検出する（ステップＳ２２、Ｓ２３）。このため、マスタノードでは、通知されたループバック状態有無の情報を所定の記憶領域に更新記憶し（ステップＳ２４）、この場合、スレーブノード“Ｃ”が“ループバック状態無し”から“ループバック状態有り”に変化したため、ノードが切り離されノードが減少したと判断し（ステップＳ２５）、ループバック状態となったノードと、所定の記憶領域に記憶している同期演算時システム構成と、に基づき、現時点でのシステム構成を検出する（ステップＳ２７）。
【００９７】
この場合、同期演算時システム構成は、図１７に示すように、スレーブノード“Ｅ”、マスタノード“Ａ”、スレーブノード“Ｂ”、スレーブノード“Ｃ”、スレーブノード“Ｄ”がこの順に接続されたシステム構成であり、現時点でスレーブノード“Ｃ”がループバックしている状態であるため、スレーブノード“Ｄ”が切り離されたことを認識し、現時点におけるシステム構成は、スレーブノード“Ｅ”、マスタノード“Ａ”、スレーブノード“Ｂ”、スレーブノード“Ｃ”がこの順に接続された構成であり、その論理的な構成は図１６（ａ）に示す構成であることを認識する。
【００９８】
そして、所定の記憶領域に記憶しているシステム起動時にシステム同期処理で演算したノード間伝送時間を読み出し、そこからステップＳ２７で検出した現時点におけるシステム構成に含まれる各ノード間のノード間伝送時間を獲得し、獲得したノード間伝送時間と、ノードでのメッセージ判定処理時間Ｔαとから、前記システム同期処理における伝送遅延時間の算出方法（ステップＳ４）と同様の手順で、現時点のシステム構成に含まれるマスタノードとスレーブノードとの間の伝送遅延時間を演算する（ステップＳ２９）。
【００９９】
すなわち、現時点におけるシステム構成は図１６（ａ）に示す構成であるため、マスタノード“Ａ”及びスレーブノード“Ｂ”間、スレーブノード“Ｂ”及び“Ｃ”間、さらにスレーブノード“Ｅ”及びマスタノード“Ａ”間におけるノード間伝送時間を利用し、マスタノード“Ａ”と、スレーブノード“Ｂ”、“Ｃ”、“Ｅ”それぞれとの間の伝送遅延時間を演算する。
【０１００】
つまり、システム同期時におけるシステム構成は図１７（ａ）に示す構成を備える。図１７（ａ）において、隣接するノード間の伝送時間（ノード間伝送時間）として例えば図１７（ｂ）が記憶領域に記憶されているものとする。
なお、図１７（ｂ）において、“行”とは、メッセージを１回目に送信する場合を意味し、“帰”とは、同一メッセージを２回目に送信する場合を意味する。また、伝送遅延時間は、マスタノードとスレーブノードとの間の伝送遅延時間を表しているが、ここでは、簡単のために各ノードにおけるメッセージ判定処理時間Ｔαは零としている。
【０１０１】
前述のように、ノード間伝送時間は、第１の配線Ｌ11と第２の配線Ｌ22とで同一であるため、各ノード間伝送時間は、“行”と“帰”とで同一となる。そして、伝送遅延時間は、マスタノードとターゲットノードとの間に存在するケーブルにおけるノード間伝送時間と各ノードにおけるメッセージ判定処理時間との和で表される。このため、各ノード間伝送時間が、図１７（ｂ）に示すように、マスタノード“Ａ”及びスレーブノード“Ｂ”間は“１”、スレーブノード“Ｂ”及びスレーブノード“Ｃ”間は“２”、スレーブノード“Ｃ”及びスレーブノード“Ｄ”間は“１”、マスタノード“Ａ”及びスレーブノード“Ｅ”間は“１”として演算された場合には、メッセージ判定処理時間Ｔαを零とすると、マスタノードと各スレーブノードとの間の伝送遅延時間は、マスタノード“Ａ”及びスレーブノード“Ｂ”間は“１”、マスタノード“Ａ”及びスレーブノード“Ｃ”間は、マスタノード“Ａ”及びスレーブノード“Ｂ”間のノード間伝送時間“１”と、スレーブノード“Ｂ”及びスレーブノード“Ｃ”間のノード間伝送時間“２”との和、すなわち“３”となる。
【０１０２】
同様に、マスタノード“Ａ”及びスレーブノード“Ｄ”間は、マスタノード“Ａ”及びスレーブノード“Ｂ”間、スレーブノード“Ｃ”及びスレーブノード“Ｄ”間のノード間伝送時間“１”、“２”、“１”の和すなわち“４”となる。
さらに、マスタノード“Ａ”及びスレーブノード“Ｅ”間は、マスタノード“Ａ”及びスレーブノード“Ｂ”間、スレーブノード“Ｃ”及びスレーブノード“Ｄ”間、スレーブノード“Ｄ”及びスレーブノード“Ｃ”間、スレーブノード“Ｃ”及びスレーブノード“Ｂ”間、スレーブノード“Ｂ”及びマスタノード“Ａ”間、マスタノード“Ａ”及びスレーブノード“Ｅ”間のそれぞれのノード間伝送時間の和、すなわち、“１＋２＋１＋１＋２＋１＋１＝９”となる。
【０１０３】
一方、図１６（ａ）に示すように、スレーブノード“Ｃ”がループバック状態となったときには、スレーブノード“Ｅ”−マスタノード“Ａ”−スレーブノード“Ｂ”−スレーブノード“Ｃ”というシステム構成であるため、記憶領域に記憶されているノード間伝送時間のうち、マスタノード“Ａ”及びスレーブノード“Ｂ”間、スレーブノード“Ｂ”及びスレーブノード“Ｃ”間、スレーブノード“Ｃ”及びスレーブノード“Ｄ”間のノード間伝送時間を用いて伝送遅延時間の演算が行われる。すなわち、メッセージ判定処理時間Ｔαを零とすると、図１８に示すようにマスタノード“Ａ”及びスレーブノード“Ｂ”間は“１”、マスタノード“Ａ”及びスレーブノード“Ｃ”間は、マスタノード“Ａ”及びスレーブノード“Ｂ”間のノード間伝送時間“１”と、スレーブノード“Ｂ”及びスレーブノード“Ｃ”間のノード間伝送時間“２”との和、すなわち“３”となる。
【０１０４】
そして、スレーブノード“Ｄ”はシステムから切り離されているため、次にマスタノード“Ａ”及びスレーブノード“Ｅ”間の伝送遅延時間を演算する。この場合、マスタノード“Ａ”から送信されたメッセージは、スレーブノード“Ａ”、“Ｂ”、“Ｃ”、“Ｂ”、マスタノード“Ａ”、スレーブノード“Ｅ”の順に伝達されるため、マスタノード“Ａ”及びスレーブノード“Ｅ”間の伝送遅延時間は、マスタノード“Ａ”及びスレーブノード“Ｂ”間、スレーブノード“Ｂ”及びスレーブノード“Ｃ”間、スレーブノード“Ｃ”及びスレーブノード“Ｂ”間、スレーブノード“Ｂ”及びスレーブノード“Ａ”間、スレーブノード“Ａ”及びスレーブノード“Ｅ”間、のノード間伝送時間の和、すなわち、“１＋２＋２＋１＋１＝７”となる。
【０１０５】
そして、このようにして演算した伝送遅延時間を、伝送遅延時間設定メッセージを用いて各スレーブノード“Ｂ”、“Ｃ”、“Ｅ”に通知し（ステップＳ３０）、次いでマスタタイマ値配布メッセージをブロードキャストで送信して、マスタタイマ値を各スレーブノードに通知する（ステップＳ３１）。
このため、例えば、この時点における各ノードのタイマ値が、図１９（ａ）に示すように、マスタノード“Ａ”は“２００”、スレーブノード“Ｂ”、“Ｃ”、“Ｅ”はそれぞれ“１７７”、“１８０”、“１１１”であった場合には、スレーブノード“Ｂ”では、伝送遅延時間“１”が経過したタイマ値が“１７８”である時点でマスタタイマ値“２００”を受信するため、タイマ値を“１７８”に替えて“２０１”に更新設定する。
【０１０６】
同様に、スレーブノード“Ｂ”では伝送遅延時間が“３”であるため、タイマ値が“１８３”の時点でタイマ値を“２０３”に更新設定し、スレーブノード“Ｅ”では伝送遅延時間が“７”であるため、タイマ値が“１１８”の時点でタイマ値を“２０７”に更新設定する。
このため、図１９（ａ）に示すように、マスタタイマ値が“２０７”の時点でこれらマスタノード“Ａ”と各スレーブノードとの間のタイマ値の同期がとられたことになる。
【０１０７】
そして、この状態から、スレーブノード“Ｄ”が故障等から復旧し、スレーブノード“Ｃ”がループバックを解除すると、スレーブノード“Ｃ”は“ループバック状態無し”としてループバック状態読み出しメッセージに付加するため、マスタノード“Ａ”では、スレーブノード“Ｃ”のループバック状態が変化したことを検出する。この場合、スレーブノード“Ｃ”は、“ループバック状態有り”から“ループバック状態無し”に変化し、ノードが増加するため、図７のステップＳ２５からステップＳ２６に移行し、図５に示すシステム同期処理を再度実行する。
【０１０８】
ここで、図１９（ｂ）に示すように、スレーブノード“Ｃ”がループバック状態である間、マスタノード“Ａ”及びスレーブノード“Ｂ”、“Ｃ”、“Ｅ”は、既にタイマ値の同期化が図られているため、水晶振動子の誤差によるタイマ値のずれなど多少の誤差はあるもののこれらノード間のタイマ値は同期がとれているが、スレーブノード“Ｄ”は、システムから切り離されていたため、マスタノード“Ａ”及びスレーブノード“Ｂ”、“Ｃ”、“Ｅ”とはタイマ値の同期がとれていない。
【０１０９】
しかしながら、スレーブノード“Ｃ”が“ループバック状態有り”から“ループバック状態無し”に変化しノードが増加したと判断される時点で再度システム同期処理を実行し、現時点におけるシステム構成を把握し、このシステム構成における伝送遅延時間を演算して、ノード間での同期化を図ることによって、マスタノード“Ａ”から切り離されていたスレーブノード“Ｄ”と、他のノードとのタイマ値の同期を図ることができる。
【０１１０】
また、前述のように、タイマ１７は、水晶振動子を含んで構成されている。このため、起動時等に、システム同期処理を実行することによってノード間でタイマ値の同期を図ったとしても、水晶振動子の誤差によりノード間でタイマ値にずれが生じる可能性があり、このずれが大きくなるとシステム停止等、システム全体に影響を与える可能性がある。このため、マスタノード“Ａ”、スレーブノード“Ｂ”、“Ｃ”、“Ｅ”は、既にノード間でタイマ値の同期がとられているため、本来、これらノードのタイマ値は同等程度の値を示すはずであるが、図１９（ａ）や図１９（ｂ）に示すようにタイマ値にずれが生じることがある。
【０１１１】
しかしながら、マスタノード“Ａ”において各スレーブノードのループバック状態の変化を監視し、ループバック状態が変化するタイミングで、再度伝送遅延時間の演算を行っているため、この時点で、水晶振動子の誤差によるノード間でのタイマ値のずれをも除去することができる。
また、上述のように、図７のシステム再同期処理においては、ループバック状態が変化したときに、ノードの切り離しに伴いノードが減少したか、又はノードが増加したかを判断し、ノードが減少したときには、図５に示すシステム同期処理を再度行うのではなく、起動時等に演算した同期演算時システム構成におけるノード間伝送時間を用いて、各スレーブノードに対する伝送遅延時間を演算している。
【０１１２】
つまり既に演算されたノード間伝送時間を用いて伝送遅延時間を演算することによって、ノード間伝送時間の演算に要する所要時間相当だけ、伝送遅延時間の演算に要する所要時間を短縮することができる。これはすなわち、ノード間のタイマ値をより早い段階で同期化させることができることになる。
また、ループバック状態が変化したタイミングで再度同期化を図っているため、水晶振動子の誤差によるノード間でのタイマ値のずれをこの時点で除去することができる。したがって、図５のシステム同期処理を定期的に実行することにより、水晶振動子の誤差によるタイマ値のずれを除去すると共に、ループバック状態が変化したタイミングでも水晶振動子の誤差によるタイマ値のずれを除去することができる。このため、水晶振動子の誤差によるタイマ値のずれを頻繁に除去することができ、結果的に、ノード間でのタイマ値を精度よく同期させることができる。
特に、ノード間のタイマ値の同期精度として、マイクロ秒、ミリ秒の単位での精度を要求するシステムにおいては、頻繁にタイマ値の同期化を図り、水晶振動子の影響を抑制する必要がある。
【０１１３】
上述のように、何れかのノードのループバック状態が変化したタイミングでシステム同期処理を実行するように構成し、何れかのノードがループバック状態から復旧した場合など、マスタノード“Ａ”と接続状態になかったためにマスタノード“Ａ”とのタイマ値の同期が図られていないスレーブノードが新たに追加される状態となった場合だけでなく、マスタノード“Ａ”と接続状態にあって既にマスタノード“Ａ”とのタイマ値の同期が図られている場合であっても、システム同期処理を実行するようにしているため、単にシステム構成の変化に伴いノード間のタイマ値が不同期となることを解消するだけでなく、水晶振動子の影響によるノード間のタイマ値のずれをも解消することができ、ノード間でのタイマ値の同期精度をより向上させることができる。
【０１１４】
なお、上記実施の形態においては、端部のノード“Ｄ”、ノード“Ｅ”では、ノード内部で回線を折り返してリング型の伝送路を構成する場合について説明したが、これに限るものではない。例えば、折り返し用に、ケーブルＬｎが接続されない側の接続端子１１又は１２に、第１の配線Ｌ11側と第２の配線Ｌ22側とを単に接続するための折り返し用ケーブルを挿しておくことにより、リング型の伝送路を構成するようにしてもよい。この場合、端部のノードから送信された伝送メッセージは、折り返し用ケーブルを経由して再度端部のノードで受信されるため、ラッチ回路１５又は１６で検出され、タイマ値がラッチされることになる。このため、マスタノードでは、タイマ値有効フラグからは、端部のノードがどれであるかを認識することができない。
【０１１５】
そのため、折り返し用ケーブルを用いて折り返しを行なった場合には、端部のノードにおいてスイッチ操作を行なうことにより端部のノードに対して端部のノードであることを認識させ、端部のノードにおいて、自ノードのタイマ情報として、端部のノードであることを付加して送信するようにすれば、マスタノードでは、タイマ情報から端部のノードが何れのノードであるかを容易に認識することができる。
【０１１６】
或いは、折り返し用ケーブルを用いて折り返しを行なった場合には、ラッチ回路１５でラッチしたタイマ値と、ラッチ回路１６でラッチしたタイマ値との差、すなわち、受信経過時間は折り返し用ケーブルにおける伝送時間相当の長さとなり、ノード間のノードにおける受信経過時間に比較して短い。したがって、受信経過時間が、折り返し用ケーブルによる折り返しが行なわれているとみなされるしきい値よりも短いかどうかに基づき、端部のノードであるか否かを判断するようにしてもよい。
【０１１７】
また、上記実施の形態においては、ノード“Ａ”からノード“Ｅ”の５つのノードを有するネットワークシステムを構成した場合について説明したが、これに限らず、複数のノードからなるネットワークシステムであれば適用することができる。
また、上記実施の形態においては、ケーブルが接続されているか否かを検出することにより、端部のノードであるか否かを検出する場合について説明したが、これに限るものではない。例えば、端部のノードにおいてオペレータがスイッチ操作等を行なうことにより、端部のノードとして設定するように構成することもできる。また、このオペレータのスイッチ操作により、切り替え回路１８の接続先が物理的に切り替わるように構成してもよい。
【０１１８】
また、上記実施の形態においては、マスタノードでシステム同期処理が実行されたときに、マスタノードのタイマのタイマ値をスレーブノードに通知してタイマ値を同期させる場合について説明したがこれに限るものではない。
例えば、スレーブノードでは、システム同期処理が行なわれたときに通知された各ノードにおける伝送遅延時間を記憶しておく。そして、マスタノードでは、一旦システム同期処理を行なった後は、マスタタイマ値配布メッセージのみを定期的に送信し、このマスタタイマ値配布メッセージを受信したスレーブノードが、記憶している伝送遅延時間と通知されたマスタタイマ値とから自ノードのタイマのタイマ値を更新設定することにより、定期的に、タイマ値の同期を図るようにしてもよい。
【０１１９】
このように、システム同期処理全体を定期的に行なうのではなく、マスタタイマ値の送信及びスレーブノードでのタイマ値の更新設定のみを定期的に実行する場合であっても、ネットワークシステムにおけるタイマ値の同期を的確に行なうことができる。
また、上記実施の形態においては、マスタノードがタイマラッチ指示メッセージを送信する場合について説明したが、これに限るものではない。つまり、ある伝送メッセージを、ラッチ回路１５で受信するタイミングと、同一の伝送メッセージをラッチ回路１６で受信するタイミングとがわかればよい。このため、各ノードが、マスタノードに限らず他のノードが送信する任意の伝送メッセージをタイマラッチ指示メッセージとみなし、任意の伝送メッセージをラッチ回路１５及び１６で受信した時点におけるタイマ値をラッチするように構成してもよい。
【０１２０】
そして、マスタノードがタイマ値収集メッセージを定期的に、或いはイベント的に送信して、各ノードが保持する最新のタイマ情報を収集しこれと、任意の伝送メッセージの一周時間とを用いて伝送遅延時間を演算し、最新の伝送遅延時間に基づき各ノードがタイマの同期を行なうようにしてもよい。
また、上記実施の形態において、ラッチ回路１５及びラッチ回路１６は、タイマラッチ指示メッセージを受信するときにのみ、動作可能な状態となっていればよい。したがって、例えば、マスタノードがタイマラッチ指示メッセージを送信するタイミングが、システム起動時及びその後定期的に等、予め決まっている場合には、スレーブノード側でこれに合わせてラッチ回路１５及び１６を動作可能な状態にし、一旦同期を行なった後、ラッチ回路１５及び１６を休止状態に切り替え、その後、定期的に行なわれる同期のタイミングに合わせて、ラッチ回路１５及び１６を動作可能な状態に切り替えることにより消費電力の削減を図るようにしてもよい。
【０１２１】
また、タイマラッチ指示メッセージは、一方のラッチ回路で受信された後、他方のラッチ回路で受信されるため、タイマラッチ指示メッセージを先に受信するラッチ回路は常時動作可能状態とし、後に受信するラッチ回路は、先に受信するラッチ回路でタイマラッチ指示メッセージを受信したときに動作可能な状態に切り替え、タイマ値をラッチして処理部１３に通知した後、再度休止状態に切り替えるように構成してもよい。この場合には、後に受信するラッチ回路の消費電力の削減を図ることができる。
【０１２２】
また、各ノードが、任意のメッセージをタイマラッチ指示メッセージとみなしてタイマ値をラッチするように構成した場合には、各ノードがタイマ値をラッチするタイミングに合わせてラッチ回路１５及び１６を動作可能状態に切り替え、それ以外のときにはラッチ回路１５及び１６を休止状態に切り替えるように構成してもよい。
ここで、上記実施の形態において、図５のステップＳ１からステップＳ６の処理がシステム同期部に対応し、ステップＳ４ａの処理が同期時情報保存手段に対応し、図７のステップＳ２３〜Ｓ２５、ステップＳ２７〜Ｓ３１の処理が第１のシステム再同期手段に対応し、図６のステップＳ１４の処理がタイマ値同期手段に対応している。
【０１２３】
また、図７のステップＳ２１及びＳ２２の処理がループバック状態読み出し手段に対応し、図８のステップＳ３１及びステップＳ３２の処理がループバック状態付加手段に対応し、図７のステップＳ２３〜Ｓ２５、ステップＳ２６の処理が第２のシステム再同期手段に対応している。
また、図５のステップＳ３の処理で、マスタノードがタイマ情報としてタイマ値収集用メッセージに格納するラッチ回路１５又は１６から通知されたラッチタイマ値がマスタ到達時タイマ値に対応している。
【符号の説明】
【０１２４】
１１  第１の接続端子
１２  第２の接続端子
１３  処理部
１５、１６  ラッチ回路
１７  タイマ
Ｌ１〜Ｌ４  ケーブル
Ｌ11  第１の配線
Ｌ22  第２の配線
Ｔ  メッセージ一周時間
【図１】
0005482534.tif 000002
【図２】
0005482534.tif 000003
【図３】
0005482534.tif 000004
【図４】
0005482534.tif 000005
【図５】
0005482534.tif 000006
【図６】
0005482534.tif 000007
【図７】
0005482534.tif 000008
【図８】
0005482534.tif 000009
【図９】
0005482534.tif 000010
【図１０】
0005482534.tif 000011
【図１１】
0005482534.tif 000012
【図１２】
0005482534.tif 000013
【図１３】
0005482534.tif 000014
【図１４】
0005482534.tif 000015
【図１５】
0005482534.tif 000016
【図１６】
0005482534.tif 000017
【図１７】
0005482534.tif 000018
【図１８】
0005482534.tif 000019
【図１９】
0005482534.tif 000020
【図２０】
0005482534.tif 000021
【図２１】
0005482534.tif 000022