以下に、本発明にかかる時刻同期方法、通信システムおよび通信装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、本発明にかかる通信システムの実施の形態1の構成例を示す図である。図1に示すように、本実施の形態の通信システムはリングネットワークを構成し、リング状に接続されたマスタノード1とスレーブノード(通信装置)2〜6とを備える。
また、マスタノード1およびスレーブノード2〜6は、それぞれ隣接ノード間のリンクを終端する2つのポートを備える。具体的には、マスタノード1は、ポート11aおよびポート11bを備え、スレーブノードiは、ポート1ia(i=2,…,6)およびポート1ibを備える。
なお、図1の構成例ではスレーブノードの数を5つとしているが、スレーブノードの数はこれに限定されず、1以上の任意のノード数とすることができる。また、マスタノード1はリングネットワーク内の任意の1ノードとし、図1に示したマスタノード1以外の他のスレーブノード2〜6がマスタノードになることも可能であるとする。
図2は、マスタノード1の機能構成例を示す図である。また、図3は、スレーブノード2の機能構成例を示す図である。なお、図2および図3では、本実施の形態の時刻同期に関連する構成要素を示しており、それ以外の構成要素は図示を省略している。スレーブノード3〜6の構成はスレーブノード2の構成と同様である。ただし、ポートについては、図1で説明したように、スレーブノードiは、ポート1iaおよびポート1ibを備えるとする。また、上述のとおり、スレーブノード2〜6がマスタノードとなることが可能なようにスレーブノード2はマスタノード1と同様の機能を有し、マスタノード1は、スレーブノード2と同様の機能を有するとする。以降では、マスタノード1をマスタノードとする場合について説明する。
マスタノード1は、例えばGPS(Global Positioning System)等を用いたグランドマスタクロックに接続する等の方法により、時刻同期を行うための基準となる高精度な時刻を持つ装置である。図2に示すように、マスタノード1は、ポート11a,11bと、時刻同期用フレーム送信処理部21a,21bと、時刻同期用フレーム受信処理部22a,22bと、時刻同期管理部23と、を備える。時刻同期用フレーム送信処理部21a,21bは、ポート11a,11bから時刻同期を行うためのフレームである時刻同期用フレームを送信する。時刻同期用フレーム受信処理部22a,22bは、ポート11a,11bで受信した時刻同期用フレームを終端し、時刻同期に必要な情報を抽出し、時刻同期管理部23に通知する。時刻同期管理部23は、リング内の全ノードの時刻同期を行うために必要なシーケンス番号や時刻同期状態を管理し、時刻同期用フレームを送信するタイミングや受信時の処理等を行う。
スレーブノード2は、自ノードの時刻をマスタノード1の時刻に同期させる機能を有するノードであり、図3に示すように、ポート12a、12bと、時刻同期用フレーム送信処理部31a、31bと、時刻同期用フレーム受信処理部32a,32bと、時刻同期処理部33と、遅延制御部(図3では遅延と略す)34と、を備える。
時刻同期用フレーム受信処理部32a、32bは、ポート12a、12bで受信したフレームのエラーチェックを行うことにより、フレームの有効/無効を検出する機能や時刻同期に必要な情報の抽出を行い、時刻同期処理部33に通知する。また、時刻同期用フレーム送信処理部31a,31bは、反対側のポート(時刻同期用フレーム送信処理部31aの場合はポート12b,時刻同期用フレーム送信処理部31bの場合はポート12a)で受信した時刻同期用フレームまたは時刻同期処理部33より指示されて時刻同期用フレームを転送する。時刻同期処理部33は、自ノードの時刻や自ノードの時刻同期状態等の自ノードの時刻同期を行う際に必要な情報を保持し、時刻同期用フレームより抽出された情報を基に時刻同期を行う。遅延制御部34は、ポート12a、12bで受信したフレームを反対側のポート12b,12aに転送する際に固定時間遅延させる処理を行う。この固定時間の遅延とはノード内遅延であり、ノード内でフレームのヘッダに格納されているフレーム種別やフレームの出力先、及びフレーム優先度等情報を認識し、それに基づいてフレームを処理することが可能な時間とする。また、固定遅延時間は、全ノードの時刻同期完了時間の短縮のためには、短い方が望ましいが、受信したフレームの先頭から最後までを伝送するためにかかる時間(フレーム長)より長い時間である場合でも、本方式の同期時刻が正常に行える範囲内の時間であればよいものとする。
図4は、マスタノード1の時刻同期管理部23及びスレーブノード2の時刻同期処理部33が、それぞれ保持および管理する時刻同期情報の構成例を示す図である。時刻同期情報は、マスタノード情報と、時刻同期周期情報と、時刻情報と、時刻同期末端ノード情報と、時刻同期シーケンス番号情報と、時刻同期優先ポート情報と、時刻同期ポート情報と、時刻同期状態情報と、受信時刻T2情報と、送信時刻T1情報と、送信時刻T3情報と、受信時刻T4情報と、で構成される。なお、スレーブノード3〜6もスレーブノード2と同様に時刻同期情報を管理する。また、時刻同期ポート情報、時刻同期状態情報、受信時刻T2情報、送信時刻T1情報、送信時刻T3情報および受信時刻T4情報は、それぞれポートA用(ポート11a,12a等)とポートB用(ポート11b,12b等)で構成される。
マスタノード情報は、自ノードがマスタノードかスレーブノードかを識別するために使用する情報である。時刻同期周期情報は、マスタノード1において設定される情報であり、時刻同期を行う周期を示す。時刻情報は、マスタノード1ではリングネットワーク内の基準となる時刻、を示す。また時刻情報は、スレーブノード2では自ノードが管理する時刻であり、時刻同期を行う対象となる時刻を示す。
時刻同期末端ノード情報は、自ノードが、時刻同期を行う際に時刻同期に必要な情報を格納した時刻同期用フレームを終端する時刻同期末端ノードであることを識別するために使用する情報である。時刻同期シーケンス番号情報は、時刻同期を正常に行うためにマスタノード1により管理されるシーケンス番号であり、各スレーブノードが時刻同期を行う際に保持するシーケンス番号である。時刻同期優先ポート情報は、スレーブノード2が、時刻同期を行うフレームをポート12a,12bで同時に受信した場合に、どちらのポートから受信したフレームの情報を有効とするか予め設定しておくために使用する情報である。
また、時刻同期ポート情報は、スレーブノード2が、自ノードの2つのポートのうち、時刻同期用フレームにより時刻同期に関する情報を得るポートを示す情報である。時刻同期状態情報は、時刻同期シーケンス番号情報が示すシーケンス番号に対応する時刻同期シーケンスの動作の進行状態を示す情報である。受信時刻T2情報は、スレーブノード2が、マスタノード1から送信された時刻同期用フレームを受信した受信時刻T2を示す情報である。
また、送信時刻T1情報は、スレーブノード2が、受信時刻T2で受信した時刻同期用フレームがマスタノード1から送信された送信時刻T1を示す情報である。送信時刻T3情報は、時刻同期末端ノード(時刻同期シーケンスの末端となるノード)から送信された時刻同期用フレームをスレーブノード2が受信して転送する際に、当該時刻同期用フレームを受信したポートと反対側のポートからフレームを送信した送信時刻T3を示す情報である。受信時刻T4情報は、時刻同期末端ノードから送信された時刻同期用フレームをマスタノード1が受信した時刻を示す情報である。なお、図4の構成例は一例であり、同等の情報を保持していれば、情報の順序や形式等は図4の例に限定されない。
図5は、時刻同期を行うために使用する時刻同期用フレームに格納する情報の一例を示す図である。図5に示すように、時刻同期用フレームには、マスタノード発信と、時刻同期末端ノード発信と、時刻同期シーケンス番号と、時刻同期メッセージタイプと、の情報が格納される。マスタノード発信としては、フレームの送信元がマスタノードであるかどうかを識別する情報を格納する。時刻同期末端ノード発信としては、フレームの送信元が時刻同期末端ノードであるかどうかを識別する情報を格納する。時刻同期シーケンス番号としては、転送する時刻同期用フレームの時刻同期シーケンス番号情報を格納する。時刻同期メッセージタイプとしては、時刻同期の動作の進行状態を識別するために転送しているフレームのメッセージタイプを示す情報を格納する。
なお、図5では、送信時刻T1と、受信時刻T4と、が時刻同期用フレームに格納される例を示しているが、ここに格納される時刻は、時刻同期メッセージタイプにより異なる。
次に、本実施の形態の時刻同期動作(時刻同期シーケンス)について説明する。本実施の形態では、時刻同期方式としてIEEE1588で規定されたプロトコルを用いる例を説明するが、用いるプロトコルはこれに限らない。また、本実施の形態では、1:N通信により時刻同期を行う。すなわち、マスタノード1から送信された時刻同期用フレームを各スレーブノードが転送し、時刻同期用フレームを終端する時刻同期末端ノードまで時刻同期用フレームが到着する。時刻同期末端ノードは、時刻同期用フレームを送信し、各スレーブノードが転送することによりマスタノード1に時刻同期用フレームが到着する。各スレーブノード(時刻同期末端ノード)は、時刻同期用フレームの送信または受信時刻と、時刻同期用フレームに格納されたマスタノード1における時刻同期用フレームの送信または受信時刻と、に基づいて時刻同期処理を実施する。
このようにマスタノードと時刻同期末端ノード間のネットワーク伝搬遅延時間を等しいと仮定して、両ノードから双方向にフレームを転送してスレーブノードにおいて基準とする時刻と自ノードの時刻との差を求めることにより時刻同期を行う時刻同期方式のプロトコルであればどのプロトコルでも適用可能である。
従来の時刻同期方法では、リングネットワーク内で上述の1:N通信により時刻同期を行う場合、マスタノードが時刻同期末端ノードとして機能する。この場合、全スレーブノードはリングネットワーク内で転送される同一の時刻同期用フレームを用いて時刻同期処理を行うため、ノード台数が多いと、時刻同期精度が悪く、全ノードの時刻同期完了時間が長いという問題がある。本実施の形態では、マスタノード1が両ポートから時刻同期用フレームを送信し、スレーブノード2〜6のうちの1つのノードまたは隣接する2つのノードが、受信した時刻同期用フレームに基づいて自ノードを時刻同期末端ノードとして設定することにより、1つの時刻同期用フレームを用いて時刻同期処理を実施するノード数を低減する。
図6および図7は、本実施の形態の時刻同期シーケンスの一例を示すチャート図である。また、図8は、マスタノード1の時刻同期処理手順の一例を示すフローチャートである。図9〜図12は、スレーブノード2〜6が各時刻同期用フレームを受信した場合の処理手順の一例を示すフローチャートである。図6の例では、スレーブノードが4つ(スレーブノード2,3,5,6)の構成の場合を示し、図7はスレーブノード5つ(スレーブノード2〜6)の構成の場合を示している。なお、図6および図7では、マスタノード1を時刻マスタ1と記載し、スレーブノード2〜6を時刻スレーブ2〜6として記載している。以下の説明では、同様のシーケンス図では、マスタノード1を時刻マスタ1と記載し、スレーブノード2〜6を時刻スレーブ2〜6として記載する。
図6〜12を用いて本実施の形態の時刻同期処理を説明する。まず、図8を用いてマスタノード1の時刻同期処理手順を説明する。マスタノード1の時刻同期管理部23は、時刻同期シーケンスを開始すると、タイマによる経過時間の計測を開始し、タイマが時刻同期周期を満了したか(経過時間が時刻同期周期になったか)否かを判断する(ステップS71)。タイマが満了していない場合(ステップS71 No)には、ステップS71を繰り返す。
タイマが満了した場合(ステップS71 Yes)、時刻同期管理部23は、タイマの時刻同期周期カウンタをクリアし新たに経過時間の計測を開始し、時刻同期情報の時刻同期シーケンス番号情報を更新し(1加算する)、両ポートの時刻同期状態情報を時刻同期用フレームを未送信であることを示す値(ここでは例えば“0000(b)”とする)に設定する(ステップS72)。
次に、時刻同期管理部23は、タイマがフレーム送信周期を満了したか(経過時間がフレーム送信周期になったか)否かを判断する(ステップS73)。タイマが満了していない場合(ステップS73 No)には、ステップS73を繰り返す。
タイマがフレーム送信周期を満了した場合(ステップS73 Yes)、両ポートからSyncフレームを送信する(ステップS74)。このとき、Syncフレームには、時刻同期シーケンス番号情報として保持されている時刻同期シーケンス番号を格納して送信する。なお、Syncフレーム(同期フレーム)は各ノードが自ノードで管理している時刻における受信時刻を計測するために送信されるフレームである。
時刻同期管理部23は、また、送信時の障害状態と各ポートにおけるSyncフレームの送信時刻T1を取得して、送信時刻T1情報として保持し、両ポートの時刻同期状態情報をSyncフレーム送信済を示す値(ここでは例えば“0001(b)”とする)に設定する(ステップS75)。
次に、時刻同期管理部23は、タイマがフレーム送信周期を満了したか(経過時間がフレーム送信周期になったか)否かを判断する(ステップS76)。タイマが満了していない場合(ステップS76 No)には、ステップS76を繰り返す。
タイマがフレーム送信周期を満了した場合(ステップS76 Yes)、両ポートからSyncフレームの送信時刻T1を格納した時刻同期用フレームの一種であるFollow_upフレームを送信し、両ポートの時刻同期状態情報をFollow_upフレーム送信済を示す値(ここでは例えば“0010(b)”とする)に設定する(ステップS77)。なお、Follow_upフレームは、マスタノード1におけるSyncフレームの送信時刻(送信時刻T1)を通知するための送信時刻通知フレームである。
次に、時刻同期管理部23は、両ポートからDelay_Req.フレームを受信したか否かを判断する(ステップS78)。両ポートからDelay_Req.フレームを受信していない場合(ステップS78 No)は、ステップS78を繰り返す。なお、Delay_Req.フレーム(遅延要求フレーム)は、時刻同期用フレームの一種であり、後述するように時刻同期末端ノードから送信されるフレームである。
両ポートからDelay_Req.フレームを受信した場合(ステップS78 Yes)は、時刻同期管理部23は、各ポートがそれぞれDelay_Req.フレームを受信した時刻を受信時刻T4情報として保持し、また時刻同期状態情報をDelay_Req.フレーム受信済みの値(ここでは例えば“0100(b)”とする)に設定する(ステップS79)。
次に、時刻同期管理部23は、タイマがフレーム送信周期を満了したか(経過時間がフレーム送信周期になったか)否かを判断する(ステップS7A)。タイマが満了していない場合(ステップS7A No)には、ステップS7Aを繰り返す。
タイマがフレーム送信周期を満了した場合(ステップS7A Yes)、両ポートからそれぞれのポートでDelay_Req.フレームを受信した時刻(受信時刻T4)を格納した時刻同期用フレームの一種であるDelay_Res.フレームを送信し、両ポートの時刻同期状態情報をDelay_Res.フレーム送信済を示す値(ここでは例えば“1000(b)”とする)に設定し(ステップS7B)、処理を終了する。なお、Delay_Res.フレームは、マスタノード1におけるDelay_Req.フレームの受信時刻を通知するための受信時刻通知フレームである。
なお、マスタノード1からのSyncフレームの送信タイミングは、時刻同期周期タイマが満了すれば、フレーム送信周期タイマに関係なく任意のタイミングで送信してもよい。また、Follow_upフレームの送信タイミングは、Syncフレームを送信後であれば、任意のタイミングで送信してもよい。また、Delay_Res.フレームの送信タイミングもDelay_Req.フレームを受信後であれば、任意のタイミングで送信してもよい。
次に、図6に示したシーケンスを説明する。図8のステップS74で示したように、マスタノード1の時刻同期管理部23は、IEEE1588に準拠した時刻同期用フレームの1種であるSyncフレームを生成し、両ポート11a,11bからそれぞれ送信する。この際、各ポートからのフレームの送信時刻T1L,T1Rをそれぞれ取得して、送信時刻T1Lおよび送信時刻T1Rを時刻同期情報の送信時刻T1情報として保持する(S11a、S11b)。両ポートから送信される時刻同期用フレームには同一の時刻同期シーケンス番号が格納される。
ここでは、送信時刻T1Lについては図1の構成例の左回りの方向に送信した(すなわち、ポート11aから送信した)送信時刻とし、右回りの方向に送信した(ポート11bから送信した)送信時刻をT1Rとする。この場合、ポートA用の情報が送信時刻T1Lとなり、ポートB用の情報が送信時刻T1Rとなる。
マスタノード1の両ポートから送信されたSyncフレームは、隣接ノードであるスレーブノード6,2に伝送される(S12a、S12b)。スレーブノード2,6は、自ノードのポートでSyncフレームを受信した受信時刻T2(T2L,T2R)を取得し、時刻同期情報の受信時刻T2情報として保持する(ステップS13a,13b)。なお、この例では、例えば、スレーブノード2〜6が、ポート12b〜16bでSyncフレームを受信した時刻を受信時刻T2Lとし、スレーブノード2〜6が、ポート12a〜16aでSyncフレームを受信した時刻を受信時刻T2Rとする。すなわち、受信時刻T2情報のうちポートA(ポート12a〜16a)用の情報として受信時刻T2Rが格納され、ポートB(ポート12b〜16b)用の情報として受信時刻T2Lが格納される。なお、本実施の形態では、各スレーブノード2〜6では、ポートAとポートBのうち時刻同期ポートとして設定されている方のポートの受信時刻(T2LまたはT2R)が格納される。
ここで、図9を用いてスレーブノード2がSyncフレームを受信した場合の動作を説明する。図9に示すように、スレーブノード2〜6の時刻同期処理部33は、ポート12aおよび時刻同期用フレーム受信処理部32a、またはポート12bおよび時刻同期用フレーム受信処理部32b経由でSyncフレームを受信すると、受信したフレームがFCS(Frame Check Sequence)エラー等により無効であるか否かを判断する(ステップS80)。フレームが無効でないと判断した場合(ステップS80 No)、時刻同期処理部33は、受信したフレームに格納された時刻同期シーケンス番号が新規時刻同期シーケンス番号であるか否か(時刻同期情報に格納済みの時刻同期シーケンス番号でないか否か)を判断する(ステップS81)。
新規時刻同期シーケンス番号であると判断した場合(ステップS81 Yes)、時刻同期処理部33は、両ポート同時にSyncフレームを受信したか否かを判断する(ステップS82)。両ポート同時にSyncフレームを受信していないと判断した場合(ステップS82 No)、時刻同期処理部33は、受信したSyncフレームに格納された時刻同期シーケンス番号と当該フレームを受信したポートにおける受信時刻T2(時刻同期情報の受信時刻T2情報)として保持し、また、時刻同期情報の両ポートの時刻同期状態情報を、Syncフレーム受信済を示す値(ここでは例えば“0001(b)”とする)に設定し、受信したポートの時刻同期ポート情報を時刻同期ポートに設定したことを示す値(ここでは例えば“1”とする)に設定する(ステップS85)。
そして、時刻同期処理部33は、受信したSyncフレームを固定時間遅延させて転送するよう遅延制御部34へ指示し、遅延制御部34はSyncフレームを固定時間遅延させた後、受信したポートと反対側のポートから転送し(ステップS87)、処理を終了する。
一方、ステップS82で、両ポート同時にSyncフレームを受信したと判断した場合(ステップS82 Yes)、時刻同期処理部33は、Syncフレームに格納されている時刻同期シーケンス番号を時刻同期シーケンス番号情報として保持し、時刻同期情報の時刻同期優先ポート情報を参照して時刻優先ポートとして設定されているポートにおけるSyncフレームの受信時刻T2を取得して保持し、時刻同期情報の両ポートの時刻同期状態情報をSyncフレーム送信済を示す値に設定し、同期優先ポートの時刻同期ポート情報を時刻同期ポートに設定したことを示す値に設定する(ステップS83)。なお、時刻同期優先ポート情報には、予め2つのポートのうちどちらを時刻同期優先ポートとするかの情報が格納されているとする。
次に、時刻同期処理部33は、時刻同期情報の時刻同期末端ノード情報を自ノードが時刻同期の末端ノードであることを示す値(ここでは例えば“1”とする)に設定する(ステップS86)。次に、時刻同期処理部33は、遅延させる固定時間がフレーム長より大きいか否かを判断し(ステップS88)、遅延制御部34で遅延させる固定時間がフレーム長より大きい場合(ステップS88 Yes)には、時刻同期処理部33は、当該Syncフレームを破棄する(ステップS80a)。
遅延制御部34で遅延させる固定時間がフレーム長以下の場合(ステップS88 No)には、時刻同期処理部33は、FCSの格納領域に正しいFCS値と異なる値を格納したSyncフレーム(FCSエラーフレーム)を生成し、遅延制御部34へ生成したフレームを固定時間遅延させた後に、受信したポートと反対側のポートに送信するよう指示し、遅延制御部34は指示に基づいて遅延させたフレームを送信する(ステップS89)。なお、ステップS89で送信するフレームは、無効なフレームと判別されるフレームであればよく、FCSエラーフレームでなくてもよい。また、両側のポートで同時にSyncフレームを受信した場合には、ステップS89では両側のポートからFCSエラーフレームが送信されることになる。
また、ステップS81で、新規時刻同期シーケンス番号でないと判断した場合(ステップS81 No)、時刻同期処理部33は、時刻同期情報の時刻同期ポート情報を参照し、Syncフレームを受信したポートと反対側のポートが時刻同期ポートに設定されているか否かを判断する(ステップS84)。反対側のポートが時刻同期ポートに設定されている場合(ステップS84 Yes)はステップS86へ進み、反対側のポートが時刻同期ポートに設定されていない場合(ステップS84 No)はステップS88へ進む。
また、ステップS80で、フレームが無効であると判断した場合(ステップS80 Yes)、時刻同期処理部33は、ステップS88へ進む。なお、スレーブノード3〜6も上述のスレーブノード2と同様の処理を実施する。
以上の処理により、マスタノード1から送信されたSyncフレームをリング内の全スレーブノード2〜6は2つのポートのうちの早く受信した方のポートを時刻同期ポートとして設定し、時刻同期ポートにおける受信時刻T2を保持する。そして、リングネットワーク内の両ポート同時にSyncフレームを受信したスレーブノードまたは時刻同期ポートとして設定のポートと反対側のポートから正常なSyncフレームを受信したスレーブノードを時刻同期末端ノードとして設定するようにした。また、時刻同期末端ノードは、受信したSyncフレームを無効なフレームとしてから転送するようにした。これにより、短い時間で全スレーブノードがSyncフレームを受信することが可能となる。
図6を用いた説明に戻る。スレーブノード2,6は、受信したSyncフレームを、受信したポートと反対側のポートから隣接ノードへ転送する(ステップS14a,S14b)。この場合、スレーブノード2,6は、Syncフレームを両ポートで同時に受信しておらず、また同一の時刻同期シーケンス番号のSyncフレームを受信済みでないから、図9のステップS85およびステップS87を実施することによりSyncフレームを転送する。
スレーブノード2,6からSyncフレームを受信したスレーブノード3,5は、スレーブノード2,6と同様に、Syncフレームを受信した受信時刻T2(T2L,T2R)を受信時刻T2情報として保持し(ステップS15a,15b)、受信したポートと反対側からSyncフレームを転送する(ステップS16a,16b)。この場合も、スレーブノード3,5は、Syncフレームを両ポートで同時に受信しておらず、また同一の時刻同期シーケンス番号のSyncフレームを受信済みでないから、図9のステップS85およびステップS87を実施することによりSyncフレームを転送する。
次に、スレーブノード3からSyncフレームを受信したスレーブノード5、およびスレーブノード5からSyncフレームを受信したスレーブノード3は、同一の時刻同期シーケンス番号のSyncフレームを既に受信済みであるため、ステップS84、S86、ステップS88およびステップS89により、受信時刻T2情報は保持せず、SyncフレームをFCSエラーフレームとして、受信したポートと反対側のポートから転送する(ステップS17a,17b)。
FCSエラーフレームを受信したスレーブノード2,6は、図9のS88およびS89により、SyncフレームをFCSエラーフレームとして、受信したポートと反対側のポートから転送する(ステップS18a,18b)。
次に、マスタノード1は、図8のステップS77に示したように、Syncフレームの送信時刻T1(T1L,T1R)を格納したFollow_upフレームを生成し(ステップS20a,20b)、各ポートから送信する(ステップ21a,21b)。この例では、送信時刻T1Lを格納したFollow_upフレームをポート11aから送信し、送信時刻T1Rを格納したFollow_upフレームをポート11bから送信する。また、マスタノード1は、Follow_upフレームには時刻同期情報として保持している時刻同期シーケンス番号を格納して送信する。
ここで、スレーブノード2におけるFollow_upフレームを受信した場合の動作について図10を用いて説明する。図10は、Follow_upフレームを受信した場合のスレーブノード2の処理手順の一例を示すフローチャートである。スレーブノード2はFollow_upフレームを受信すると、時刻同期処理部33が、受信したフレームに格納された時刻同期シーケンス番号が保持している時刻同期シーケンス番号情報と一致するか否かを判断する(ステップS91)。一致しない場合(ステップS91 No)には、処理を終了する。
受信したフレームに格納された時刻同期シーケンス番号が保持している時刻同期シーケンス番号情報と一致した場合(ステップS91 Yes)、時刻同期処理部33は、当該フレームを受信したポートの時刻同期状態情報がSyncフレーム受信状態を示す値であるか否かを判断する(ステップS92)。当該フレームを受信したポートの時刻同期状態情報がSyncフレーム受信状態を示す値でない場合(ステップS92 No)、処理を終了する。
当該フレームを受信したポートの時刻同期状態情報がSyncフレーム受信状態を示す値である場合(ステップS92 Yes)、時刻同期処理部33は、時刻同期ポート情報を参照し、当該フレームを受信したポートが時刻同期ポートに設定されているか否かを判断する(ステップS93)。
当該フレームを受信したポートが時刻同期ポートに設定されている場合、受信したFollow_upフレームに格納された送信時刻T1を受信したポートの送信時刻T1情報として保持する(ステップS94)。そして、時刻同期処理部33は、当該フレーム受信したポートに対応する時刻同期状態情報をFollow_upフレーム受信済状態を示す値(ここでは例えば“0010(b)”とする)に設定し、受信したポートと反対側のポートからFollow_upフレームを転送する(ステップS95)。なお、このとき、遅延制御部34にて固定時間遅延させた後にFollow_upフレームを転送する。
また、ステップS93で、当該フレームを受信したポートが時刻同期ポートに設定されていない場合(ステップS93 No)は、ステップS95へ進む。
ステップS95の後、時刻同期処理部33は、時刻同期末端ノード情報を参照し、自ノードが時刻同期末端ノードであるか否かを判断する(ステップS96)。時刻同期末端ノードでない場合(ステップS96 No)には処理を終了する。
時刻同期末端ノードである場合(ステップS96 Yes)、時刻同期処理部33は、Follow_upフレームを受信したポートの時刻同期状態情報をDelay_Req.フレーム送信済を示す値(ここでは例えば“0100(b)”とする)を格納し、受信したポートからDelay_Req.フレームを送信し、送信した時刻を送信時刻T3情報として保持し(ステップS97)、処理を終了する。なお、このDelay_Req.フレームには、時刻同期シーケンス番号として時刻同期シーケンス番号情報に格納されている値を設定し、時刻同期メッセージタイプにはDelay_Req.フレームであることを示す値を格納する。スレーブノード3〜6もスレーブノード2と同様の動作を実施する。
図6を用いた説明に戻る。マスタノード1からFollow_upフレームを受信したスレーブノード6,2は、図10のステップS94に示したようにフレームに格納された送信時刻T1(T1LまたはT1R)を保持し(ステップS22a,ステップS22b)、Follow_upフレームを隣接ノードへ転送する(ステップS23a,ステップS23b)。
スレーブノード6,2からFollow_upフレームを受信したスレーブノード5,3は、スレーブノード6,2と同様に、送信時刻T1(T1LまたはT1R)を保持し(ステップS24a,ステップS24b)、Follow_upフレームを隣接ノードへ転送する(ステップS25a,ステップS25b)。
以降、順次Follow_upフレームを隣接ノードへ転送される(ステップS26a,ステップS26b,ステップS27a,ステップS27b)が、Follow_upフレームを受信したポートが時刻同期ポートとして設定されていないスレーブノードでは送信時刻T1(T1LまたはT1R)を保持しない。
時刻同期末端ノードであるスレーブノード5,3は、スレーブノード6,2から転送されたFollow_upフレームをに基づいて、図10のステップS97に示したように、Delay_Req.フレームを生成してFollow_upフレームを受信したポートから送信し(ステップS32a,ステップS32b)、送信時刻T3(T3LまたはT3R)を保持する(ステップS31a,S31b)。なお、ここでは、マスタノード1の左回りの時刻同期用フレームにより保持される送信時刻を送信時刻T3Lとし、右回りの時刻同期用フレームにより保持される送信時刻を送信時刻T3Rとする。また、時刻同期末端ノードであるスレーブノード5,3は、逆方向(スレーブノード3,5から)からもFollow_upフレームを受信しているため、当該Follow_upフレームを受信したポートと反対側のポートからDelay_Req.フレームを送信する(ステップS36a,S36b)。
以上のようにして、マスタノード1から送信されたFollow_upフレームをリング内の全スレーブノードが時刻同期ポートにおいて受信し、マスタノード1がSyncフレームを送信した送信時刻T1を保持することができる。更に、時刻同期末端ノードより、Follow_upフレームを受信したポートからDelay_Req.フレームを送信することにより、逆方向の遅延時間の計測を可能とする。
ここでDelay_Req.フレームを受信した場合のスレーブノード2の動作について図11を用いて説明する。図11は、Delay_Req.フレームを受信した場合のスレーブノード2の動作を示している。スレーブノード2の時刻同期処理部33は、Delay_Req.フレームを受信すると、受信したDelay_Req.フレームに格納された時刻同期シーケンス番号と保持している時刻同期シーケンス番号情報が一致するか否かを判断する(ステップS101)。
時刻同期シーケンス番号と保持している時刻同期シーケンス番号情報が一致しない場合(ステップS101 No)は、ステップS107へ進む。時刻同期シーケンス番号と保持している時刻同期シーケンス番号情報が一致した場合(ステップS101 Yes)、時刻同期ポート情報を参照し、Delay_Req.フレームを受信したポート(受信ポート)と反対側のポートが時刻同期ポートであるか否かを判断する(ステップS102)。
受信ポートと反対側のポートが時刻同期ポートである場合(ステップS102 Yes)、時刻同期処理部33は、時刻同期末端ノード情報を参照して自ノードが時刻同期末端ノードであるか否かを判断する(ステップS103)。
また、Delay_Req.フレームを受信したポート(受信ポート)と反対側のポートが時刻同期ポートでない場合(ステップS102 No)、ステップS107へ進む。
自ノードが時刻同期末端ノードでない場合(ステップS103 No)、時刻同期処理部33は、受信ポートと反対側のポートの時刻同期状態情報がFollow_upフレーム受信済状態を示す値(例えば0010(b))であるか否かを判断する(ステップS104)。受信ポートと反対側のポートの時刻同期ポート情報がFollow_upフレーム受信済状態を示す値でない場合(ステップS104 No)、ステップS107へ進む。
受信ポートと反対側のポートの時刻同期ポート情報がFollow_upフレーム受信済状態を示す値である場合(ステップS104 Yes)、遅延制御部34が固定時間遅延させた後に、受信ポートと反対側のポートにDelay_Req.フレームを転送し(ステップS106)、処理を終了する。また、ステップS106では、Delay_Req.フレームを送信した送信時刻T3を送信時刻T3情報として保持し、送信したポートの時刻同期状態情報をDelay_Req.フレーム送信済を示す値(ここでは例えば“0100(b)”とする)に設定する。
また、ステップS103で、自ノードが時刻同期末端ノードであると判断した場合(ステップS103 Yes)、時刻同期処理部33は、遅延制御部34で遅延させる固定時間がフレーム長以下の場合は遅延制御部34で固定時間の遅延をさせた後、受信ポートと反対側のポートにFCSエラーとしたDelay_Req.フレームを送信し(ステップS105)、処理を終了する。なお、遅延制御部34で遅延させる固定時間がフレーム長以上の場合は当該フレームを破棄する。
ステップS107では、遅延制御部33が固定時間遅延させた後、受信したDelay_Req.フレームを受信ポートと反対側のポートから送信することにより隣接ノードにフレームを転送する(ステップS107)。スレーブノード3〜6の動作もスレーブノード2の動作と同様である。
図6を用いた説明に戻る。スレーブノード5,3からDelay_Req.フレームを受信したスレーブノード6,2は、図11のステップS106に示したように、Delay_Req.フレームを送信した送信時刻T3(T3L,T3R)を保持し(ステップS33a,33b)、受信ポートと反対側のポートにDelay_Req.フレームを転送する(ステップS34a,34b)。
マスタノード1は、図8のステップS79に示したように、各ポートでDelay_Req.フレームを受信した受信時刻T4(T4L,T4R)を受信時刻T4情報として保持する(ステップS35a,35b)。そして、マスタノード1は、図8のステップS7Bに示したように、各ポートに対応する受信時刻T4(T4LまたはT4R)情報を格納したDelay_Res.フレームを生成し(ステップS40a,40b)、各ポートから送信する(ステップS41a,S41b)。
以上のようにして、時刻同期末端ノードから送信されたDelay_Req.フレームをリングネットワーク内の時刻同期末端ノード以外のスレーブノードが時刻同期ポートと反対側のポートで受信し、時刻同期ポートから送信することにより、各スレーブノードにおいて、Delay_Req.フレームを送信した送信時刻T3を保持することができる(S33a,S33b)。また、マスタノード1がDelay_Req.フレームを受信した場合は、時刻同期管理部23で管理している受信したポートの時刻同期状態情報をDelay_Req.フレームの受信済みを示す値に設定し、フレームの受信時刻T4を保持する(S35a,S35b)。
ここでDelay_Res.フレームを受信した場合のスレーブノード2の動作について図12を用いて説明する。図12は、Delay_Res.フレームを受信した場合のスレーブノード2の動作を示している。スレーブノード2の時刻同期処理部33は、Delay_Res.フレームを受信すると、受信したDelay_Res.フレームに格納された時刻同期シーケンス番号と保持している時刻同期シーケンス番号情報が一致するか否かを判断する(ステップS111)。
時刻同期シーケンス番号と保持している時刻同期シーケンス番号情報が一致しない場合(ステップS111 No)は、ステップS116へ進む。時刻同期シーケンス番号と保持している時刻同期シーケンス番号情報が一致した場合(ステップS111 Yes)、時刻同期ポート情報を参照し、Delay_Req.フレームを受信したポート(受信ポート)が時刻同期ポートであるか否かを判断する(ステップS112)。
受信ポートが時刻同期ポートである場合(ステップS112 Yes)、時刻同期処理部33は、時刻同期情報がDelay_Req.フレーム受信状態を示す値(例えば0100(b))であるか否かを判断する(ステップS113)。
時刻同期情報がDelay_Req.フレーム受信状態を示す値である場合(ステップS113 Yes)、Delay_Res.フレームに格納された受信時刻T4を受信時刻T4情報として保持し、時刻同期状態情報にDelay_Res.フレーム受信状態を示す値(ここでは例えば“1000(b)”とする)を設定し、受信ポートを反対側のポートからDelay_Res.フレームを転送する(ステップS114)。なお、フレームの転送の際には、遅延制御部34が固定時間遅延させてから転送する。
そして、時刻同期処理部33は、保持している時刻同期情報に基づいて後述する時刻演算、時刻補正の処理を実施し、実施後に両ポートの時刻同期状態情報を初期状態(ここでは例えば“0000(b)”とする)に設定し、時刻同期ポート情報、時刻同期末端ノード情報をクリア(初期値に設定)し(ステップS115)、処理を終了する。
なお、ステップS111でシーケンス番号が一致しない場合(ステップS111 No)、ステップS112で受信ポートが時刻同期ポートでない場合(ステップS112 No)、およびステップS113で時刻同期状態情報がDelay_Req.フレーム受信状態を示す値でない場合(ステップS113 No)には、時刻同期状態情報にDelay_Res.フレーム受信状態を示す値を設定し、受信ポートと反対側のポートからDelay_Res.フレームを転送し(ステップS116)、処理を終了する。なお、フレームの転送の際には、遅延制御部34が固定時間遅延させてから転送する。スレーブノード3〜6の動作は、スレーブノード2の動作と同様である。
図6を用いた説明に戻る。Delay_Res.フレームを受信したスレーブノード6,2は、図12のステップS114に示したように、Delay_Res.フレームに格納された受信時刻T4(T4L,T4R)を保持し(ステップS42a,S42b)、Delay_Res.フレームを受信ポートと反対側から転送する(ステップS43a,S43b)。
Delay_Res.フレームを受信したスレーブノード5,3は、スレーブノード6,2と同様に、Delay_Res.フレームに格納された受信時刻T4(T4L,T4R)を保持し(ステップS44a,S44b)、Delay_Res.フレームを受信ポートと反対側から転送する(ステップS45a,S45b)。
スレーブノード6,2からDelay_Res.フレームを受信したスレーブノード5,3は、時刻同期ポートからの受信ではないため、ステップS116により、Delay_Res.フレームに格納された受信時刻T4(T4L,T4R)を保持せずに、Delay_Res.フレームを受信ポートと反対側から転送する(ステップS46a,46b)。その後、Delay_Res.フレームを受信したスレーブノード2,6も同様にDelay_Res.フレームを受信ポートと反対側から転送する(ステップS47a,47b)。
以上のようにして、マスタノード1から送信されたDelay_Res.フレームをリングネットワーク内の全スレーブノードが時刻同期ポートにおいて受信することにより、全スレーブノードがマスタノード1でのDelay_Req.フレーム受信時刻T4を保持することができる。
次に、図7に示したシーケンスについて説明する。図7では、図6の例とスレーブノードの数が異なっている。図6の例では、マスタノード1から送信されるSyncフレームの方向ごとに、スレーブノード5およびスレーブノード3がそれぞれ時刻同期末端ノードとして設定されたが、図7の例ではスレーブノード4が両方向の時刻同期末端ノードとして設定される。
以下、図6の例と異なる部分を説明する。ステップS11a〜ステップS16a,ステップS11b〜ステップS16bは、図6の例と同様である。スレーブノード4は、ステップS16a,ステップS16bでそれぞれ転送されたSyncフレームを両ポート同時に受信する。そして、スレーブノード4は、Syncフレームを受信した受信時刻T2を受信時刻T2情報として保持する(ステップS51b)。スレーブノード4は、このSyncフレームを受信すると、図9のステップS83に示したように、両ポートを時刻同期ポートとしてなお、この場合、同時に受信しているため、両ポートの受信時刻は同一であるため、両ポートの受信時刻T2R,T2Lのうちどちらか同期優先ポートとして予め設定されている方の時刻を保持する。図7ではT2Rを保持した例を示している。
また、スレーブノード4は、Syncフレームを受信したポートと反対側のポートからFCSエラーとしたSyncフレームを転送する(ステップS52a,52b)。以降、このFCSエラーとしたSyncフレームが各ノードで転送される(ステップS53a,S54a,S53b,S54b)。
次に、図6の例と同様にステップS20a〜ステップS25a,ステップS20b〜ステップS25bが実施される。スレーブノード4は、ステップS25a,ステップS25bでそれぞれ転送されたFollow_upフレームを両ポート同時に受信し、時刻同期ポートで受信したフレームに格納された送信時刻T1Rを送信時刻T1情報として保持する(ステップS55b)。以降、Follow_upフレームが各ノードで転送される(ステップS57a,S58a,S57b,S58b)。
次に、時刻同期末端ノードであるスレーブノード4は、両ポートから受信したそれぞれのFollow_upフレームに対応してDelay_Req.フレームを、受信したポートと反対側のポートからそれぞれ送信し(ステップS60a,60b)、時刻同期ポートでDelay_Req.フレームを送信した送信時刻T3Rを送信時刻T3情報として保持する(ステップS59b)。
以降、図6の例と同様にステップS31a〜ステップS35a,ステップS31b〜ステップS35b,ステップS40a〜ステップS45a,ステップS40b〜ステップS45bが実施される。ただし、ステップS31a,31bでは、時刻スレーブ5,3は自ノードが時刻同期末端ノードではないため、受信したDelay_Req.フレームを送信した送信時刻T3L,T3Rを保持する。
スレーブノード4は、ステップS45a,ステップS45bで転送されたDelay_Res.フレームを受信すると、時刻同期ポートで受信したDelay_Res.フレームに格納された受信時刻T4Rを送信時刻T4情報として保持する(ステップS61b)。以降、Delay_Res.フレームは各ノードで転送される(ステップS62a〜S64a,S62b〜S64b)。
上記動作により各スレーブノードでは、マスタノード1でのSyncフレームの送信時刻T1(マスタ時刻)およびDelay_Req.フレームの受信時刻T4(マスタ時刻)と、自ノードでのSyncフレームの受信時刻T2(自身の時刻)およびDelay_Req.フレームの送信時刻T3(自身の時刻)を保持していることになる。これらの送受信時刻T1〜T4から各スレーブノードで管理している時刻を補正する(同期させる)方法(時刻演算、時刻補正の処理)について説明する。
受信時刻T2と送信時刻T1の差には、マスタ時刻(マスタノード1の基準時刻)と自ノードの時刻との時差ΔTに加え、マスタノード1から自ノードまでの伝播遅延TNが含まれている。すなわち、T2−T1=ΔT+TNである。
一方、受信時刻T4と送信時刻T3の差には、−ΔTに加え、自ノードからマスタノード1への伝播遅延TN´が含まれている。IEEE1588では、往路と復路の伝播遅延は同一として扱っており、ここでも伝播遅延TN´=TNとする。したがって、T4−T3=−ΔT+TNである。
各スレーブノード2〜6は、以上の関係を用いて、ΔTとTNを算出することにより、ΔTを用いて自身の時刻をマスタ時刻に同期させる。このようにしてリングネットワーク内の全ノードにおいて時刻同期を行うことができる。
このように本実施の形態では、マスタノード1とリングネットワーク内の全スレーブノード2〜6との間で時刻同期を行う際に、マスタノード1の両側のポートから時刻同期用フレームを送信し、各スレーブノードが新たな時刻同期シーケンス番号が格納されたSyncフレームを受信した場合に受信したポートを時刻同期ポートとして設定する(スレーブノード2〜6がマスタノード1から同時に送信されたSyncフレームを受信した2つのポートのうちの早く受信した方のポートを時刻同期ポートとして設定する)。そして、両ポート同時にSyncフレームを受信した場合、または受信済みのSyncフレームと同一の時刻同期シーケンス番号が格納されたSyncフレームを受信したポートと反対側のポートが時刻同期ポートとして既に設定されている場合に、自ノードを時刻同期末端ノードとして設定するようにした。また、時刻同期末端ノードとして設定されたスレーブノード2〜6は、受信したSyncフレームを無効なフレームとして受信ポートと反対側から転送するようにした。これにより、従来に比べて、同一の時刻同期用フレームを用いて時刻同期を実施するノードの数が減少するため、時刻同期精度を向上させ、かつ時刻同期完了時間を短縮することができる。
実施の形態2.
図13および図14は、本発明にかかる通信システムの実施の形態2の時刻同期シーケンスの一例を示すチャート図である。図13は、図6と同様にスレーブノード2,3,5,6を備える構成例の場合のシーケンス例であり、図14は、図7と同様にスレーブノード2,3,4,5,6を備える構成例の場合のシーケンス例である。本実施の形態の通信システムの構成は実施の形態1と同様である。本実施の形態のマスタノード1およびスレーブノード2〜6の構成は、実施の形態1と同様である。また、本実施の形態のマスタノード1およびスレーブノード2〜6は、実施の形態1と同様の構成の時刻同期情報を保持する。
実施の形態1.では、マスタノード1からスレーブノード2〜6にSyncフレームの送信時刻T1およびDelay_Req.フレームの受信時刻T4をFollow_upフレームとDelay_Res.フレームの2つのフレームを用いて通知した。本実施の形態では、SyncフレームおよびDelay_Req.フレームの送受信後に、送信時刻T1および受信時刻T4をDelay_Req.フレームに格納して、マスタノード1の両ポートより送信する。
図13および図14に示すように、マスタノード1は、Follow_upフレームを送信しない。また、時刻同期末端ノードは、自ノードが時刻同期末端ノードであると認識すると、Syncフレームを受信したポートへDelay_Req.フレームを送信する(ステップS31a,S36a,S31b,S36b)。また、ステップS11a,S11bでは、マスタノード1は、実施の形態1と同様にSyncフレームの送信時刻T1R,T1Lを送信時刻T1情報として保持する(ステップS11a,S11b)。本実施の形態ではFollow_upフレームを送信しないため、ステップS40a,bでマスタノード1がDelay_Res.フレームを生成する際に、送信時刻T1R,T1LをDelay_Res.フレームへ格納する。これら以外の時刻同期シーケンスは、実施の形態1と同様である。
図15は、本実施の形態のマスタノード1の時刻同期処理手順の一例を示すフローチャートである。Follow_upフレームを送信せず(ステップS76,S77を実施せず)、ステップS7Bの代わりにステップS7Cを実施する以外は、図8で説明した実施の形態1の処理と同様である。
ステップS7Cでは、マスタノード1は、Delay_Res.フレームにDelay_Req.フレームを受信した受信時刻T4だけでなく送信時刻T1についても格納して送信し、各ポートの時刻同期状態情報をDelay_Res.フレーム送信済みを示す値に設定する(ステップS7C)。
図16は、本実施の形態のスレーブノード2のSyncフレーム受信時の処理手順の一例を示すフローチャートである。本実施の形態では、ステップS86の後に、スレーブノード2の時刻同期処理部33は、Syncフレームを受信したポートの時刻同期状態情報をDelay_Req.フレーム送信済を示す値を格納し、受信したポートからDelay_Req.フレームを送信し、送信した時刻を送信時刻T3情報として保持し(ステップS8A)、ステップS89へ進む。なお、このDelay_Req.フレームには、時刻同期シーケンス番号として時刻同期シーケンス番号情報に格納されている値を設定し、時刻同期メッセージタイプにはDelay_Req.フレームであることを示す値を格納する。以上述べた以外のスレーブノード2のSyncフレーム受信時の処理は、実施の形態1と同様である。
図17は、本実施の形態のスレーブノード2のDelay_Req.フレーム受信時の処理手順の一例を示すフローチャートである。実施の形態1のステップS104の判断の代わりに、本実施の形態では、時刻同期処理部33は、時刻同期情報がSyncフレームを受信済の状態を示す値(0001(b))であるか否かを判断する(ステップS108)。そして、時刻同期情報がSyncフレームを受信済の状態を示す値である場合(ステップS108 Yes)は、ステップS106へ進み、時刻同期情報がSyncフレームを受信済の状態を示す値でない場合(ステップS108 No)は、ステップS107へ進む。以上述べた以外のスレーブノード2のDelay_Req.フレーム受信時の処理は、実施の形態1と同様である。
図18は、本実施の形態のスレーブノード2のDelay_Res.フレーム受信時の処理手順の一例を示すフローチャートである。本実施の形態のDelay_Res.フレーム受信時の処理は、実施の形態1のステップS114の代わりにステップS116を実施する以外は、実施の形態1のDelay_Res.フレーム受信時の処理と同様である。
ステップS116では、受信したDelay_Res.フレームに格納されたSyncフレームの送信時刻T1およびDelay_Req.フレーム受信時刻T4を、それぞれ受信時刻T1情報,送信時刻T4情報として保持し、時刻同期状態情報をDelay_Res.フレームを受信済みを示す値に設定し、受信ポートの反対側のポートからDelay_Res.フレームを転送する(ステップS116)。
スレーブノード3〜6の動作は、スレーブノード2の動作と同様である。以上の動作により、各スレーブノード2〜6は、受信時刻T4、送信時刻T1、受信時刻T2、送信時刻T3を保持することができる。したがって、実施の形態1と同様に、時刻演算、時刻補正の処理を実施することができる。
このように、本実施の形態では、マスタノード1がFollow_upフレームを送信せず、Delay_Res.フレームにSynフレームの送信時刻T1およびDelay_Req.フレーム受信時刻T4を格納するようにした。このため、実施の形態1と同様の効果が得られるとともに、実施の形態1に比べより時刻同期に用いるリソースを低減し、全スレーブノードに対する時刻同期完了時間を短くすることができる。
実施の形態3.
図19および図20は、本発明にかかる通信システムの実施の形態3の時刻同期シーケンスの一例を示すチャート図である。図19は、図6と同様にスレーブノード2,3,5,6を備える構成例の場合のシーケンス例であり、図20は、図7と同様にスレーブノード2,3,4,5,6を備える構成例の場合のシーケンス例である。本実施の形態の通信システムの構成は実施の形態1と同様である。本実施の形態のマスタノード1およびスレーブノード2〜6の構成は、実施の形態1と同様である。また、本実施の形態のマスタノード1およびスレーブノード2〜6は、実施の形態1と同様の構成の時刻同期情報を保持する。
実施の形態1では、マスタノード1の両ポートからリングネットワーク内のスレーブノード2〜6にSyncフレームを送信し、受信したSyncフレームに基づいてスレーブノード2〜6は自ノードが時刻同期末端ノードであるか否かを判断していた。本実施の形態では、SyncフレームではなくFollow_upフレームに基づいて、スレーブノード2〜6は自ノードが時刻同期末端ノードであるか否かを判断する。
マスタノード1の時刻同期処理手順は実施の形態1と同様である。図19に示すように、マスタノード1は実施の形態1と同様に、Syncフレームを両ポートから送信する(ステップS11a,S11b)。
図21は、本実施の形態のスレーブノード2のSyncフレームの受信時の処理手順の一例を示すフローチャートである。スレーブノード2の時刻同期処理部33は、受信したフレームに格納された時刻同期シーケンス番号が新規シーケンス番号か否かを判断する(ステップS131)。
新規シーケンス番号である場合(ステップS131 Yes)、時刻同期処理部33は、受信したSyncフレームに格納された時刻同期シーケンス番号と当該フレームを受信したポートにおける受信時刻T2(時刻同期情報の受信時刻T2情報)として保持し、時刻同期情報の両ポートの時刻同期状態情報を、Syncフレーム受信済を示す値(ここでは例えば“0001(b)”とする)に設定する(ステップS132)。そして、遅延制御部34により固定時間遅延させた後、受信ポートと反対側のポートにSyncフレームを転送し(ステップS133)、処理を終了する。
新規シーケンス番号でない場合(ステップS131 No)、時刻同期処理部33は、時刻同期状態情報を参照し、受信ポートと反対側のポートで既にSyncフレームを受信済みであるか否かを判断する(ステップS134)。受信ポートと反対側のポートで既にSyncフレームを受信済みの場合(ステップS134 Yes)、ステップS132に進む。
受信ポートと反対側のポートで既にSyncフレームを受信済みでない場合(ステップS134 No)、ステップ89と同様のステップS135を実施する(ステップS135)。ステップS88,ステップS80aについては、実施の形態1と同様である。スレーブノード3〜6の動作はスレーブ2の動作と同様である。
図19の説明に戻る。Syncフレームを受信したスレーブノード6,2は、上述のSyncフレームの受信処理手順を実施し(ステップS121a,ステップS121b)、Syncフレームがスレーブノード5,3へ転送される(ステップS14a,S14b)。スレーブノード5,3も、上述のSyncフレームの受信処理手順を実施し(ステップS122a,ステップS122b)、Syncフレームがスレーブノード5,3へ転送される(ステップS16a,S16b)。
Syncフレームを受信したスレーブノード5,3は、受信したSyncフレームをスレーブノード3,5へ転送する(ステップS17a,S17b)。同様にSyncフレームを受信したスレーブノード6,2は、受信したSyncフレームをマスタノード1へ転送する(ステップS18a,S18b)。
マスタノード1は、実施の形態1と同様のFollow_upフレームを両ポートから送信する(ステップS21a,S21b)。
図22は、本実施の形態のスレーブノード2のFollow_upフレームの受信時の処理手順の一例を示すフローチャートである。スレーブノード2は、受信したFollow_upフレームがFCSエラーである等無効なフレームであるか否かを判断する(ステップS150)。無効なフレームでない場合(ステップS150 No)、受信したFollow_upフレームに格納された時刻同期シーケンス番号が時刻同期シーケンス番号情報として保持されている値と一致するか否か判断する(ステップS151)。シーケンス番号が一致する場合(ステップS151 Yes)、時刻同期処理部33は、時刻同期状態情報を参照し受信ポートの時刻同期状態がSyncフレーム受信済みを示す値か否かを判断する(ステップS152)。
受信ポートの時刻同期状態がSyncフレーム受信済みを示す値である場合、両ポート同時にFollow_upフレームを受信したか否かを判断する(ステップS153)。両ポート同時にFollow_upフレームを受信していない場合(ステップS153 No)、受信したFollow_upフレームに格納された送信時刻T1を送信時刻T1情報として保持し、受信ポートの時刻同期状態情報をFollow_upフレームを受信済みを示す値(ここでは例えば“0010(b)”とする)に設定し、受信ポートの時刻同期ポート情報を時刻同期ポートであることを示す値(ここでは例えば“1”とする)に設定する(ステップS154)。そして、固定時間遅延させた後、受信ポートの反対側のポートからFollow_upフレームを転送し(ステップS155)、処理を終了する。
ステップS153で、両ポート同時に受信した場合(ステップS153 Yes)、同期優先ポートとして設定されているポートから受信したFollow_upフレームに格納されている送信時刻T1を送信時刻T1情報として保持し、両ポートの時刻同期状態情報をFollow_upフレームを受信済みを示す値に設定し、同期優先ポートの時刻同期ポート情報を時刻同期ポートであることを示す値に設定する(ステップS158)。そして、時刻同期末端ノード情報を時刻同期末端ノードであることを示す値(ここでは例えば“1”とする)に設定する(ステップS159)。
次に、受信ポートから受信したFollow_upフレームと同一の時刻同期シーケンス番号を格納したDelay_Req.フレームを送信し、フレームの送信時刻T3を送信時刻T3情報として保持する(ステップS160)。次に、時刻同期処理部33は、遅延させる固定時間がフレーム長より大きいか否かを判断し(ステップS161)、遅延制御部34で遅延させる固定時間がフレーム長より大きい場合(ステップS161 Yes)には、時刻同期処理部33は、当該Syncフレームを破棄する(ステップS162)。遅延制御部34で遅延させる固定時間がフレーム長以下の場合(ステップS161 No)、固定時間遅延させた後、受信ポートの反対側のポートからFCSをエラーにする等の無効な(FSCエラーとした)フレームとしたFollow_upフレームを転送し(ステップS163)、処理を終了する。
ステップS152で受信ポートの時刻同期状態がSyncフレーム受信済みを示す値でない場合(ステップS152 No)、時刻同期ポート情報を参照し、受信ポートの反対側のポートが時刻同期ポートとして設定されているか否かを判断する(ステップS156)。反対側のポートが時刻同期ポートとして設定されている場合(ステップS156 Yes)、受信ポートの時刻同期状態情報をDelay_Req.フレーム受信済みの値(ここでは例えば“0100(b)”とする)に設定し(ステップS157)、ステップS159へ進む。
ステップS151でシーケンス番号が一致しない場合(ステップS151 No)、およびステップS156で反対側のポートが時刻同期ポートとして設定されていない場合(ステップS156 No)、ステップS161へ進む。
ステップS150で無効なフレームであると判断した場合(ステップS150 Yes)、ステップS161へ進む。
図19の説明に戻る。Follow_upフレームを受信したスレーブノード2,6は、上述のFollow_upフレームの受信処理手順を実施し(ステップS123a,ステップS123b)、Follow_upフレームがスレーブノード5,3へ転送される(ステップS23a,S23b)。スレーブノード5,3も、上述のFollow_upフレームの受信処理手順を実施し(ステップS124a,ステップS124b)、Follow_upフレームがスレーブノード5,3へ転送される(ステップS25a,S25b)。
スレーブノード5,3は、ステップS25a,S25bで転送されたFollow_upフレームに基づいて、自ノードが時刻同期末端ノードであると認識し(図22のステップS159)、受信ポートと反対側のポートにFCSエラーとしたFollow_upフレームを転送する(ステップS26a,S26b:図22のステップS161)。FCSエラーとしたFollow_upフレームを受信したスレーブノード2,6は、FCSエラーとしたFollow_upフレームを転送する(ステップS27a,S27b)。ステップS31a,S31b以降は実施の形態1と同様である(Delay_Req.フレームを受信した場合およびDelay_Res.フレームを受信した場合のスレーブノード2〜6の動作は実施の形態1と同様である)。
図20の例では、図19の例と同様に、ステップS11a,S121a,S14a,S122a,16a,S11b,S121b,S14b,S122b,16bが実施される。そして、時刻スレーブ4がステップS16a,S16bで転送されたSyncフレームを同時に受信し、上述のSyncフレームの受信処理手順を実施する(ステップS125b)。本実施の形態では、この時点では時刻スレーブ4は時刻同期末端ノードに設定されない。
次に、図19の例と同様に、ステップS20a,S21a,S123a,S23a,S1124a,S25a,S20b,21b,S123b,S23b,S124b,S25bが実施される。そして、時刻スレーブ4がステップS25a,S25bで転送されたFollow_upを同時に受信し、上述のFollow_upフレームの受信処理手順を実施する(ステップS126)。時刻スレーブ4は自ノードを時刻同期末端ノードとして設定しFCSエラーとしたFollow_upフレームを受信ポートと反対側のポートから転送する(ステップS127a,S127b)。ステップS26a,S26b,ステップS27a,S27bは、図19の例と同様である。ステップS30a,30b以降は、実施の形態1の図7の例と同様である。
このように本実施の形態では、各スレーブノードは、Syncフレームの代わりにFollow_upフレームの受信状態に基づいて、自ノードが時刻同期末端ノードであるか否かを設定するようにした。そのため、実施の形態1と同様の効果を得ることができる。
実施の形態4.
図23は、本発明にかかる通信システムの実施の形態4の構成例を示す図である。図23に示すように、本実施の形態の通信システムはリングネットワークを構成し、リング状に接続されたマスタノード41とスレーブノード42〜46とを備える。なお、スレーブノード数については、任意のノード数とし、図23に示したノード数に限定されない。
また、マスタノード41およびスレーブノード42〜46は、それぞれ隣接ノード間のリンクを終端する2つのポートを備える。具体的には、マスタノード1は、ポート11aおよびポート11bを備え、スレーブノード4iは、ポート1ia(i=2,…,6)およびポート1ibを備える。
図24は、本実施の形態のマスタノード41の機能構成例を示す図である。本実施の形態のマスタノード41の構成は、警報処理部(障害検出部)24を追加する以外は実施の形態1のマスタノード1と同様である。
図25は、本実施の形態のスレーブノード42の機能構成例を示す図である。本実施の形態のスレーブノード42の構成は、警報処理部35を追加する以外は実施の形態1のスレーブノード2と同様である。スレーブノード43〜46の構成は、スレーブノード42と同様である。
警報処理部24および警報処理部35は、自ノードの両ポートの障害状態を監視し、時刻同期管理部23または時刻同期処理部33へ通知する機能を有する。
図23に示すように、リングネットワーク内に障害50が発生したとする。なお、障害50の発生位置は一例であり、図23の位置に限定されない。他のリンクやノード等で障害が発生する場合もある。
図26は、本実施の形態の時刻同期情報の構成例を示す図である。マスタノード41の時刻同期管理部23、およびスレーブノード42〜46の時刻同期処理部33は、図26に例示した時刻同期情報を管理する。本実施の形態の時刻同期情報は、実施の形態1の時刻同期情報に障害状態情報が追加している。
図27は、本実施の形態の時刻同期シーケンスの一例を示すチャート図である。図27ではマスタノード41を時刻マスタ41、スレーブノード42〜46を時刻スレーブ42〜46として記載している。ステップS11a〜S16a,ステップS11b〜S15bは、実施の形態1と同様である。
ここで本実施の形態のマスタノード41の時刻同期処理手順とスレーブノード42のSyncフレームの受信処理手順について説明する。図28は、本実施の形態のマスタノード41の時刻同期処理手順の一例を示すフローチャートである。図29は、本実施の形態のスレーブノード42の受信処理手順の一例を示すフローチャートである。
図28に示すように、マスタノード41は、実施の形態1と同様にステップS71〜ステップS73を実施する。そして、ステップS73でフレーム送信周期タイマが満了したと判断した場合(ステップS73 Yes)、警報処理部24は、リングネットワーク内に障害がないか否かを判断する(ステップS171)。リングネットワーク内に障害があるか否かの判断はどのような方法で行ってもよいが、例えば、定期的に送信される管理フレーム等が所定の時間以上未着である場合等に障害が発生したと判断する。
リングネットワーク内に障害がないと判断した場合(ステップS171 Yes)、実施の形態1と同様にステップS74,S75を実施する。ただし、ステップS75では、Syncフレーム送信時の障害状態を障害状態情報として保持する。次に、警報処理部24は、障害状態が変化したか否かを判断する(ステップS174)。具体的には、その時点での障害状態が障害状態情報に格納されている状態と異なるか否かを判断する。障害状態が変化した場合(ステップS174 Yes)にはステップS72に戻る。
ステップS174で障害状態が変化していない場合(ステップS174 No)、実施の形態1と同様にステップS76,S77を実施する。次に、警報処理部24は、障害状態が変化したか否かを判断し(ステップS175)、変化した場合(ステップS175 Yes)にはステップS72に戻る。
ステップS175で障害状態が変化していない場合(ステップS175 No)、実施の形態1と同様にステップS78,S79を実施する。次に、警報処理部24は、障害状態が変化したか否かを判断し(ステップS176)、変化した場合(ステップS176 Yes)にはステップS72に戻る。
ステップS176で障害状態が変化していない場合(ステップS176 No)、実施の形態1と同様にステップS7A,S7Bを実施し、処理を終了する。
ステップS171でリングネットワーク内に障害があると判断した場合(ステップS171 No)、警報処理部24は、自ノード(マスタノード41)のポートで障害を検出したか否かを判断する(ステップS172)。自ノードのポートで障害を検出した場合(ステップS172 Yes)は、障害を検出していない方のポートからSyncフレームを送信し(ステップS173)、ステップS75へ進む。自ノードのポートで障害を検出していない場合(ステップS172 No)は、ステップS74へ進む。
次に、スレーブノード42のSyncフレームの受信処理手順を説明する。図29に示すように、本実施の形態のスレーブノード42のSyncフレームの受信処理手順は、ステップS85とステップS87の間にステップS181を追加する以外は、実施の形態1と同様である。ステップS181では、警報処理部35が、Syncフレームを受信したポートと反対側のポートに障害を検出したか否かを判断し(ステップS181)、障害を検出していない場合(ステップS181 No)はステップS87へ進み、障害を検出した場合(ステップS181 yes)はステップS86へ進む。
図27の説明に戻る。この例では、図23に示したようにスレーブノード43とスレーブノード44の間のリンクに障害50が発生しているとする。スレーブノード44,43は、ステップS16aで転送されたSyncフレームを受信すると、上述のSyncフレームの受信処理を実施し(ステップS191a,S191b)、当該受信処理においてポート14aの障害を検出し(図29のステップS181 Yes)、時刻同期末端ノードに設定する(図29のステップS86)。
以降、実施の形態1と同様にステップS20a〜S25a,S20b〜S24bが実施される。スレーブノード44,43は、実施の形態1と同様にFollow_upフレームの受信処理を実施し(ステップS192a,S192b)、自ノードが時刻同期末端ノードであるためDelay_Req.フレームを送信し(ステップS194a,S194b)、当該フレームの送信時刻T3を保持する(ステップS193a,S193b)。
以降、実施の形態1と同様にステップS31a〜S35a,S40a〜S45a,S31b〜S35b,S40b〜S44bが実施される。そして、スレーブノード44,43は、実施の形態1と同様にDelay_Res.フレームの受信処理を実施する(ステップS195a)。
以上述べた以外の本実施の形態の動作は、実施の形態1と同様である。なお、本実施の形態では、実施の形態1の時刻同期シーケンスを実施する例を説明したが、実施の形態2または実施の形態3の時刻同期シーケンスを実施する場合に、本実施の形態の障害検出時の処理を追加してもよい。
このように本実施の形態では、リングネットワーク内で時刻同期処理中に障害状態が変化した場合(時刻同期処理中に障害が発生した場合あるいはリングネットワーク内で時刻同期中に障害が解除された場合)には、マスタノード41は、時刻同期をやり直す(Syncフレームを送信し直し)。これにより、障害状態が変化した場合に時刻同期末端ノードを変更することができる。このため、実施の形態1と同様の効果が得られるとともに、リングネットワーク内で障害状態が変化しても、短時間で全スレーブノードに対する時刻同期を行うことが可能である。
以上の実施の形態1〜4において使用する時刻同期用フレームは、例えばEthernetのR−APSフレームやRPRのTPフレームなど、他の用途に使用するフレームに時刻同期に必要な情報(例えば図5に示した情報)を追加して使用することも可能である。また、実施の形態1〜4のリングネットワークにおける時刻同期方式は、物理的にメッシュネットワークを構成しているが論理的にリングネットワークである場合にも適用可能である。なお、本実施の形態1〜4において、実施例としてSyncフレームやFollow_upフレーム等のIEEE1588,IEEE802.1ASにおいて使用する時刻同期用フレームの名称を付与しているが、時刻同期用に用いるフレームであれば、同様に時刻同期末端ノードの設定に用いることができ、用いるフレーム名称はこれらに限定されない。