(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0012】
以下、図面にしたがって本発明の実施の形態について説明する。但し、本発明の技術的範囲はこれらの実施の形態に限定されず、特許請求の範囲に記載された事項とその均等物まで及ぶものである。尚、図面が異なっても対応する部分には同一符号を付し、その説明を省略する。
【0013】
(実施の形態1)
(1)構 造
図1は、本実施の形態のノードシステム(クラスタ)2の構成図である。
図2は、本ノードシステムが有する複数のノード4の構成図である。
図3および4は、複数のノード4のフレーム送信方法を説明する図である。
【0014】
図1に示すように、本ノードシステム2は、複数のノード4と、この複数のノード4が接続された伝送路6とを有している。この複数のノード4は、
図2に示すように、それぞれコンピュータ7(例えば、マイクロコンピュータ)と、通信制御部8(communication controller)と、クロック発生器10を有している。
【0015】
クロック発生器10が発生するクロックは、例えば、コンピュータ7を介して、通信制御部14に供給される。コンピュータ7は、例えば、ブレーキペダルの位置センサや車輪の制動装置等の外部装置に接続されている。コンピュータ7は、外部装置の情報(例えば、ブレーキペダルの位置)を取得し、または外部装置(例えば、車輪の制動装置)を制御する。この時、複数のノード4は、夫々、通信制御部8により他のノードと情報を交換しながら、外部装置を制御する。
【0016】
通信制御部8は、
図2に示すように、メモリ12(例えば、レジスタまたはRAM(Random Access Memory))と制御部14とを有している。制御部14は、FPGA(Field-Programmable Gate Array)等の論理回路、あるいは当該制御部の機能を実現するようにプログラムされるCPU(Central Processing Unit)である。
【0017】
そして、通信制御部8は、
図3に示すように、連続的に繰り返されるサイクル16内においてクロック発生器10が所定数(例えば、1、2、4)のクロックを発生するごと
に生じるマイクロチックに基づいて割り当てられるスロット18でフレームを送出する。ここで、サイクルは、ノード内時刻の最上位の構成要素である。一方、マイクロチック(以下、μTと呼ぶ)は、ノード内時刻の最小単位である。
【0018】
また、通信制御部8は、サイクル16のサイクル長22(例えば、10,000μs)に対応するサイクルマイクロチック数の初期値(例えば、100,000)と、この初期値に対するレート補正値を管理する。このサイクルマイクロチック数(以下、サイクルμT数と呼ぶ)の初期値とレート補正値はメモリ12に記録される。ここで、サイクルサイクルμT数の初期値は、複数のノード4に共通するグローバル定数である。
【0019】
複数のノード4は、
図1に示すように、第1のノード4aと、第2のノード4bと、監視ノード4cとを有している。第1のノード4aは、
図4に示すように、第1のスロット18aで第1のフレーム20aを送出する。第2のノード4bは、第2のスロット18bで第2のフレーム20bを送出する。監視ノード4cは、第3のスロット18cで第3のフレーム20cを送出する。
【0020】
―第1のノード―
図5は、第1および第2のノード4a,4bの同期制御を説明するフローチャートである。
【0021】
第1のノード4aは、複数のノード4のサイクルが同期するように、第1のレート補正値(第1のノード4aが管理するレート補正値)を繰り返し補正する(S2→B1→S2)。ここで、複数のノードのサイクルが同期するとは、複数のノードそれぞれのサイクルの開始または終了が揃うことである。
【0022】
第1のノード4aは、更に、第1のレート補正値の絶対値が所定のレート補正限界値(例えば、2〜1923μT)を超える場合(S4→B2)には、第1のフレーム20aの送出を停止する(ステップS8)。一方、第1のレート補正値の絶対値が上記補正限界値以内の場合(S4→B1)には、第1のノード4aは、補正された第1のレート補正値に基づいて、第1のスロット18aで第1のフレーム20aを送出する(ステップS6)。ここで、レート補正限界値(>0)は、複数のノード4に共通するグローバル定数である。尚、レート補正値を補正することを、以後、レート補正と呼ぶ。
【0023】
―第2のノード―
第2のノード4bの同期方法は、第1のノード4aの同期方法と略同じである。
【0024】
すなわち、第2のノード4bは、複数のノード4のサイクルが同期するように、第2のレート補正値(第2のノード4bが管理するレート補正値)を繰り返し補正する(S2→B1→S2)。そして、第2のノード4bは、第2のレート補正値の絶対値が上記レート補正限界値を超える場合(S4→B2)には、第2のフレーム20bの送出を停止する(ステップS8)。一方、第2のレート補正値の絶対値が上記補正限界値以内の場合(S4→B1)には、第2のノード4aは、補正された第2のレート補正値に基づいて、第2のスロット18bで第2のフレーム20bを送出する(ステップS6)。
【0025】
―監視ノード―
監視ノード4cは、第1および第2のノード4a,4bと同様に、複数のノード4のサイクルが同期するように、第3のレート補正値(監視ノード4cが管理するレート補正値)を繰り返し補正しながら、第3のスロット18cで第3のフレーム20cを送出する。そして、監視ノード4cは、複数のノード4それぞれのサイクル長が連続して所定の回数(例えば、5回)以上、所定の幅(例えば、10μT)を有する範囲内にあると判定された場合に、サイクルμT数22を増加(または減少)させながら第3のスロット18cで第3のフレーム20cを送出する。
【0026】
このサイクル長22の変化に応答して、第1および第2のノード20aは、第1および第2のレート補正値を増加(または減少)させ、やがて第1および第2のフレーム20a,20bの送出を停止する。
【0027】
監視ノード4cは、第1および第2のフレーム20a,20bの受信が停止した時の(監視ノード4cの)サイクルμT数から上記レート補正限界値を減じ(または加えた)複数の還元サイクルμT数を求める。
【0028】
更に、監視ノード4cは、第1および第2のフレーム20a,20bの送出を停止した第1および第2のノード4a,4bに、第1および第2のフレーム20a,20bの送出と第1および第2のレート補正値の補正とを再開させる。そして、監視ノード4cは、上記還元サイクルμT数の中間数(複数の数値の最大値と最小値の間の値、例えば平均値)を、監視ノード4cのサイクルμT数として設定して、第3のスロット18cで第3のフレーム20cを繰り返し送出する。
【0029】
監視ノード4cのハードウェア構成は、第1および第2のノード4a,4bと略同じである。但し、監視ノード4cの制御部14は、上記機能を果たすように構成されている。また、監視ノード4cのメモリは、第1および第2のノード4a,4bのメモリには無い領域を有している。
【0030】
図6は、監視ノード4cのメモリ12aの構成図である。監視ノード4cのメモリ12aは、
図6に示すように、サイクルμT数の初期値を記録する第1のメモリ領域32aと、レート補正値を記録する第2のメモリ領域32bとを有している。監視ノード4cのメモリ12aは、更に、第1および第2のフレーム20a,20bの受信が停止した時のサイクルμT数を記録する第3のメモリ領域32cと、還元サイクルμT数の中間数を記録する第4のメモリ領域32dを有している。
【0031】
これら第1乃至第4のメモリ領域32a〜32dは、例えば、レジスタである。或いは、第1乃至第4のメモリ領域32a〜32dは、RAMに設けられた複数のメモリ領域である。尚、第1および第2のメモリ領域32a,32bは、第1および第2のノード4a,4bにも設けられる共通のメモリ領域である。
【0032】
(2)動 作
図7は、本ノードシステム2の動作を説明するフローチャートである。
図7に示すように、本ノードシステム2の動作は3つのフェーズに分けることができる。
図8は、フェーズAおよびBにおける各ノードのサイクル長の変化を説明する図である。横軸は、第1のノード4aのサイクル番号である。サイクル番号の初期値は0であり、サイクルが発生するごとに1つずつ増加する。縦軸は、サイクル長である。
図8には、第1および第2のノード4a,4bのサイクル長34a,34bと監視ノード4cのサイクル長34cが示されている。
【0033】
以下、各フェーズA〜Bにおける本ノードシステム2の動作を説明する。尚、特に断らない限り、以下に説明する動作は、各ノードの通信制御部8が行う動作である。他の実施の形態においても、同じである。
【0035】
【表1】
表1は、各ノード4a,4b,4cが有するクロック発生器10の周波数誤差の一例を示している。表1に示す例では、第1のノード4a、第2のノード4b、および監視ノード4cの周波数誤差は、夫々、0ppm、−3000ppm、および-500ppmである。第1のノード4aのクロック周波数は、例えば40MHzである。従って、クロックが4つ発生するごとにマイクロチックが生じる場合、第1のノード4aの1μTは、0.1μsに相当する。一方、第2のノード4bおよび監視ノード4cの1μTは、それぞれ0.1003μsおよび0.10005μsに相当する。
【0036】
フェーズAでは、
図7に示すように、まず各ノードが起動されS12a〜S12c)、その後互いに同期をとりながらフレームを送出する(S14a〜S14c)。
図9は、各ノードの起動ステップS12a〜S12cの手順を説明するフローチャートである。
【0037】
各ノードにパワーが供給されると、各ノードの通信制御部8は、それぞれのコンピュータ7により初期設定(コンフィグレーション)される(S22a〜22c)。
【0038】
【表2】
表2は、初期設定されたメモリ12内のサイクルμT数および初期設定されたレート補正値の一例である。表2の4行目には、各ノードのサイクル長(サイクル時間)の初期値も示されている。表2に示すように、サイクルμT数は全てのノードで同じ値(例えば、100,000μT)に初期設定される。また、レート補正値も、全て0μTに初期設定される。
【0039】
第1のノード4aには、例えば、外部スイッチ(図示せず)が接続されている。この外部スイッチが外部信号を生成すると、第1のノード4aは、この外部信号に応答して、ウェークアップする(S24a)。すると、第1のノード4aは、ウェークアップ信号36を送出する。
【0040】
ここで、ウェークアップとは、次のスタートアップ・ステップS28a〜S28c(通信準備ステップ)に入れる状態になることである。第2のノード4bおよび監視ノード4cは、監視ノード4cの送出するウェークアップ信号36に応答して、ウェークアップする(S24bおよびS24c)。
【0041】
第2のノード4bまたは監視ノード4cの少なくても一方がウェークアップすると、第1のノード4aは、スタートアップ・ステップに進む(S28a)。
【0042】
スタートアップ・ステップに進んだ第1のノード4aは、第1のフレーム20aをスタートアップ・フレームに設定して、連続する4つのサイクルで第1のフレーム20aを送出する。スタートアップ・フレームとは、他のノードがスタートアップに利用するフレームのことである。
【0043】
第1乃至第3のフレーム20a〜20cのヘッダセグメントには、スタートアップ・フレーム・インジケータが設けられている。スタートアップ・フレーム・インジケータが「1」に設定されたフレームが、スタートアップ・フレームである。このスタートアップ・フレーム・インジケータの値を検出して、第1および第2のノード4a,bは、受信したフレームがスターアップ・フレームか否か判断する。
【0044】
【表3】
表3は、スタートアップ期間の開始時と終了時におけるサイクルμT数とサイクル長の一例を示している。表3の2行目及び3行目には、スタートアップ・ステップ(S28a〜S28c)開始時と終了時点におけるサイクルμT数が示されている。表3の4行目と5行目には、2行目および3行目のサイクルμT数に対応するサイクル長が示されている。
【0045】
表3に示すように、第1のノード4aは、スタートアップ期間の間、サイクルμT数を、その初期値(例えば、1000,000)に維持する。尚、第1のノード4aは、上述したように、スタートアップ期間に、連続する4つのサイクルで第1のフレーム20a(スタートアップフレーム)を送出する。
【0046】
一方、第2のノード4bおよび監視ノード4cは、上記連続する4つのサイクルの最初の2サイクルで第1のフレーム20aを受信し、その受信時刻の差分を測定する。第2のノード4bおよび監視ノード4cは、最初の2サイクルに続く2サイクルで、それぞれのサイクル長が上記時間差に一致するように、それぞれのマイクロチック数を補正する(表3参照)。以上が、第2のノード4bおよび監視ノード4cのスタートアップ・ステップ(S28bおよびS28c)である。
【0047】
スタートアップ・ステップにより、第2のノード4bおよび監視ノード4cは、
図8のスタートアップ期間SUPに示すように、それぞれのサイクル長34b,34cを、第1のノード4aのサイクル長34aに略一致させる。更に、第2のノード4bおよび監視ノード4cは、それぞれのサイクルの開始時刻を、第1のノード4aのサイクル開始時刻に一致させる。
【0048】
起動ステップ(S12a〜S12c)が終了すると、各ノードは、同期ステップ(S14a〜S14c)に進む(
図7参照)。同期ステップでは、各ノードは、互いに同期をとりながらフレームを送出し、
図8に示すように、それぞれのサイクル長をサイクル長初期値の最大値と最小値の間の値42に収束させる。この間、各ノードは、それぞれのレート補正値を繰り返し補正する。
【0049】
図10は、各ノードのレート補正を説明するフローチャートである。
図11は、第1のノード4aのレート補正を説明するタイムチャートである。まず、第1のノード4aのレート補正動作を説明する。
【0050】
第1のノード4aは、
図11に示すように、第1のサイクル16aで受信される第1乃至第3のフレーム20a〜20cそれぞれに対するサイクル開始からの第1のマイクロチック数24a,24bを測定する(ステップS32)。尚、後述するように、第1のノード4aは、第1のフレーム20aに対するマイクロチック数は測定しない。また、受信されるフレームのサイクル開始からのマイクロチック数とは、サイクルの開示時点から当該フレームの受信時点までに発生するマイクロチックの数である。
【0051】
同様に、第1のノード4aは、第1のサイクル16aに続く第2のサイクル16bで受信される第1乃至第3のフレーム20a〜20cそれぞれに対するサイクル開始からの第2のマイクロチック数26a,24bを測定する(ステップS32)。
【0052】
ところで、本実施の形態の第1のノード4aは、自身が送信する第1のフレーム20aは受信しない。すなわち、第1のフレーム20aは、受信されるフレームではない。従って、第1のフレーム20aに対するマイクロチック数は測定されない。但し、以下の説明から明らかなように、第1のフレーム4aが第1のフレーム20aを受信して第1および第2のマイクロチック数を測定しても、レート補正動作の結果は略同じである。第2のノード4bおよび監視ノード4cについても、同様である。
【0053】
次に、第1のノード4aは、第1乃至第3のフレーム20a〜20cそれぞれに対する第1および第2のマイクロチック数の差分(以下、第1の差分と呼ぶ)を求め、その中間値(以下、第1の中間値と呼ぶ)を第1のレート補正値に加算する(ステップS34)。ここで、第1の中間値は、例えば、後述するフォール
ト・トレラント中間値(fault-tolerant midpoint)である。尚、監視ノード4cが、
図4のように、第3のスロット18cで第3のフレーム20aを一つだけ送出する場合、第1の中間値は、第1の差分の平均値を切り上げまたは切り下げた値が好ましい。
【0054】
第1のノード4aは、加算された第1のレート補正値が所定の減衰定数(例えば、5μT)以上の場合(S35→B32)には、加算された第1のレート補正値から上記減衰定数(>0)を減算して、第1のレート補正値を補正する(ステップS36)。減衰定数は、複数のノード4で共通に用いられるグローバル定数である。
【0055】
一方、加算された第1のレート補正値が上記減衰定数に対応する負の値(例えば、10に対する―10)以下の場合(S35→B34)には、第1のノード4aは、加算された前記第1のレート補正値に上記減衰定数を加算して、第1のレート補正値を補正する。また、加算された第1のレート補正値の絶対値が減衰定数より小さい場合(S35→B36)には、第1のノード4aは、第1のレート補正値を0に補正する(ステップS40)。最後に、第1のノード4aは、第2のメモリ領域32bのデータを、補正された第1のレート補正値で更新する(ステップS42)。
【0056】
上記レート補正動作が1回終了するごとに、第1のノード4aは、第2のサイクル16bに続く2つのサイクル(図示せず)で、第1のフレーム20aを送信する(
図5のステップS6)。これら後続する2サイクルのサイクルμT数は、メモリ12内の第1のメモリ領域32aに記録されたサイクルμT数の初期値に、第2のメモリ領域32b内の更新されたレート補正値を加えた値である。
【0057】
第1の中間値を第1のレート補正値に加えることにより、第1のノード4aのサイクル長と、第2のノード4bおよび監視ノード4cのサイクル長が近づく。一方、第1のレート補正値に減衰定数を加えまたは減ずることにより、第1のノードのサイクル長は、そのサイクル長の初期値に近づく。その結果、
図8に示すように、複数のノード4のサイクルは互いに同期し、それぞれのサイクル長22は、複数のノード4のサイクル長の最大値と最小値の間の値42に収束する(すなわち、それぞれサイクル長が、値42を中心とする所定の幅(例えば、減衰定数×2)を有する範囲内に入る。)。
【0058】
同様に、第2のノード4bは、第2のレート補正値を補正する。すなわち、第2のノード4bは、第1および第2のサイクル16a,16bに対応する第3および第4のサイクルで受信される第1乃至第3のフレーム20a〜20cの第3および第4のマイクロチック数を測定する。(ステップS32)。第2のノード4bは、この第3および第4のマイクロチック数の第2の差分の第2の中間値に基づいて、第2のレート補正値を補正する(ステップS34〜S40)。その後、第2のノード4bは、レート補正動作が1回終了するごとに、第4のサイクルに続く2つのサイクルで、第2のフレーム20bを送信する(ステップS42)。
【0059】
同様に、監視ノード4cも、フェーズAでは、第3のレート補正値を補正する。すなわち、監視ノード4cは、第1および第2のサイクル16a, 16bに対応する第5および第6のサイクルで受信される第1乃至第2のフレーム20a〜20cの第5および第6のマイクロチック数を測定する(ステップS32)。監視ノード4cは、この第5および第6のマイクロチック数の第3の差分の第3の中間値に基づいて、第3のレート補正値を補正する(ステップS34〜S40)。以後、監視ノード4cは、レート補正動作が1回終了するごとに、第6のサイクルに続く2つのサイクルで、第3のフレーム20cを送信する(ステップS42)。
【0060】
このようなレート補正動作が繰り返されることで、複数のノード4のサイクルは互いに同期し、それぞれのサイクル長が一定値に収束する(
図8参照)。
【0061】
【表4】
表4は、スタートアップ後の各ノードのサイクル長の推移を示している。表4の2行目および3行目には、レート補正開始時とサイクル長収束時の各ノードのサイクルμT数の一例が示されている。表4の4行目と5行目は、これらサイクルμT数に対応するサイクル長が示されている。
【0062】
表4の5行目に示すように、各ノードの収束時のサイクル長は、4行目に示すレート補正開始時のサイクル長(10,000μs)よりサイクル長初期値分布43(
図8参照)の中心44(10,166μs)に近づく。しかし、サイクル長初期値分布43の中心44と各ノードの収束時のサイクル長との隔たりは大きい(例えば、116μs=10,166μs−10,050μs)。
【0063】
図12は、表4に示した例におけるサイクル長のシミュレーション結果を説明する図である。横軸は、サイクル番号であり、縦軸はサイクル長である。シミュレーションに用いたサイクルμT数の初期値は、100,000μTである。減衰定数は、5μTである。
図12によれば、各ノードのサイクル長が、互いに引き付け合いながら、サイクル長の初期値分布の中心に向かって行く様子がよく分かる。
【0064】
図8のフェーズAにおけるサイクル長の変化は、
図12の概略図である。
図8に示すように、第2のノード4bのサイクル長初期値43と収束値42の間には大きな隔たり46がある。すなわち、第2のノード4bのレート補正値の絶対値(245μT=100,000μT−99,755μT)は、収束時でも小さくならない。
【0065】
このようにレート補正値の絶対値が大きいと、雑音等の僅かな擾乱でもレート補正値がレート補正限界値(例えば、301μT)を超えてしまい、第2のノード4bがフレームの送出を停止してしまう。これは、
図10に示すレート補正動作では、各ノードが、サイクル長初期値の分布を考慮せずに、サイクル長を収束させようとするためである。しかし、
図10のレート補正動作により、サイクル長初期値の分布を検出することは困難である。本実施の形態では、監視ノード4cが、フェーズBでサイクル長の初期値の分布を測定し、フェーズCで、第1および第2のノード4a,4bのサイクル長を、サイクル長の初期値分布の中心を含む一定の範囲内に収束させる。
【0066】
因みに、第1のマイクロチック数24a(
図11参照)は、例えば、第1のサイクル16aの開始から第2のフレーム20bの先頭ビットを受信するまでの間に生じるマイクロチック数を、第1のノード4aがカウントして得られる値である。しかし、伝送路6の構成によっては、第1のフレーム20aの先頭部分が欠けてしまうことがある。このようなシステムでは、第1のサイクル16aの開始から第2のフレーム20b内の時間基準点を受信するまでの間に生じるマイクロチック数を測定し、このマイクロチック数から所定のオフセット値を差し引いて、第1のマイクロチック数24aを求めることができる。上記オフセット値は、第2のノード4bが、第2のフレーム20bの送信を開始してから上記時間基準点を送出するまでに生じるマイクロチック数である。このオフセット値は、複数のノード4に共通するグローバル定数である。第2のノード4bおよび監視ノード4cについても、同様である。
【0067】
尚、本実施の形態の各ノードは、サイクルμT数に基づくマクロチック(macrotick)を用いて、フレームの送信時刻を管理する。
図13は、ノード内部の時間構成を説明する図である。
図13に示すように、マクロチック28(以下、MTと呼ぶ)は、マイクロチック30(μT)より上位の時間単位である。一サイクル38当たりのマクロチック(以下、サイクルMT数と呼ぶ)数は、複数のノード4に共通するグローバル定数である。
【0068】
1MT当たりのμT数は、サイクルμT数をサイクルMT数で割った値を切り上げて得られる値である。従って、1MT当たりのμT数は、サイクルμT数に応じて変化する値である。
【0069】
図14は、フレームの送信時刻を説明する図である。各スロット18のサイクル開始からのMT数39は、各ノードに共通のグローバル定数である。ここで、スロット18の開始からフレーム20が送信されるまでに生じるMT数40(以下、アクション・ポイント・オフセットと呼ぶ)は、各ノードに共通のグローバル定数である。
【0070】
従って、スロット18で受信されるフレーム20は、スロット18の開始時刻にアクション・ポイント・オフセット40に対応する時間を加えた時刻(以下、スロット・アクション・ポイントと呼ぶ)で受信されると期待される。
【0071】
第1および第2のサイクル16a,16bにおける、サイクル開始からのスロット・アクション・ポイントのμT数は等しい。従って、
図11を参照して説明した、第1乃至第3のフレームのサイクル開始からのμT数の差分は、第1乃至第3のフレームのスロット・アクション・ポイントからのμT数の差分に等しい。従って、スロット・アクション・ポイントを基準にしても、レート補正を行うことができる。
【0072】
―フェーズB―
フェーズBでは、監視ノード4cは、サイクル長の初期値の分布を測定する。監視ノード4cは、フェーズAの間各ノードのサイクル長の変化を監視し、各ノードのサイクル長が収束したと判定するとフェーズBに進む。
【0073】
監視ノード4cは、例えば、複数のノード4それぞれのサイクル長が、連続して所定の回数(例えば、5回)以上、所定の幅(例えば、減衰定数×2)を有する範囲(例えば、10,0045〜10,0055μT)内にある場合に、各ノードのサイクル長が収束したと判定する。すなわち、複数のノード4のサイクル長が全て、所定の幅を有するある範囲内で変動するようになった場合に、各ノードのサイクル長は、収束したと判定される。
【0074】
尚、監視ノード4cのサイクル長は、そのレート補正値(第3のレート補正値)とサイクルマイクロチック数の初期値から求めることができる。すなわち、サイクルμT数の初期値にレート補正値を加算してサイクルμT数を求め、このサイクルμT数を時間に換算することで、第1のノード4aのサイクル長を求めることができる。一方、第1のノード4aのサイクル長は、第1のフレーム20aに対する上記第1および第2のマイクロチック数μT1,T2と、監視ノード4cのサイクルμT数CμTから求めることができる。すなわち、これらの値を式(CμT+μT2−μT1)に代入して第1のフレーム20aの間隔を求め、この間隔を時間に換算することで、第1のノード4aのサイクル長を求めることができる。第2のノード4bのサイクル長も、同様に求められる。
【0075】
図15は、フェーズBにおける監視ノード4cの動作を説明するフローチャートである。
【0076】
第1および第2のノード4a,4bは、フェーズBの間も、
図5を参照して説明した同期制御を続ける。一方、監視ノード4cは、フェーズBに進むと、そのサイクルμT数を増加させながら、第3のスロット18cで第3のフレーム20cを送出する(S42→S44→B42→S42、
図7のステップS16)。
【0077】
すると、第1および第2のノード4a,4bは、第3のフレーム20cのサイクル開始からのマイクロチック数の増加に応答して、それぞれのレート補正値を逐次増加させる。第1および第2のノード4a,4bは、増加したレート補正値に基づいて第1および第2のフレーム20a,20bを送信し、レート補正値がレート補正限界値を超えた時点で第1および第2のフレーム20a,20bの送信を順次停止する(
図7のステップS18)。
【0078】
監視ノード4cは、
図15に示すように、第1および第2のノード4a,4bが第1および第2のフレームの送信を停止するまで、第3のフレーム20cの送信を続ける(ステップS48)。この間、監視ノード4cは、第1または第2のノード4a,4bが停止するごとに、その時点における監視ノード4cのサイクルμT数48a,48b(
図8参照)をメモリ12aの第3のメモリ領域32cに記録する(S46+B44+S50)。
【0079】
第1および第2のノード4a,4bが停止すると、監視ノード4cは、第1および第2のフレーム20a,20bの受信が停止した時の監視ノード4cのサイクルμT数を第3のメモリ領域32cから読み出す。監視ノード4cは、読み出したサイクルμT数からレート補正限界値を減じた複数の還元サイクルマイクロチック数(以下、還元サイクルμT数と呼ぶ)を求め、第4のメモリ領域32dに記録する。(
図15のステップS52、
図7のステップS20)。
【0080】
第1および第2のノード4a,4bは、監視ノード4cに追随してサイクル長を増加させる。従って、第1および第2のフレーム20a,20bが停止した時の監視ノード4cのサイクルμT数は、監視ノード4cの時間単位(すなわち、マイクロチック)で測定した、第1および第2のノード4a,4bのフレーム送信停止時のサイクル長である。従って、上記還元サイクルμT数は、第1および第2のノード4a,4bのサイクル長の初期値を監視ノード4cの時間単位(マイクロチック)で測定した時間である。すなわち、監視ノード4cによれば、サイクル長初期値の分布を測定することができる。尚、サイクルμT数の増加量は、減衰定数以下が好ましい。サイクルμT数の増加量が大きくなり過ぎると、第1および第2のノード4a,4bと監視ノード4cのサイクル長の差分が大きくなるからである。
【0081】
以上の例では、監視ノード4cは、サイクルμT数を増加させながら、第3のスロット18cで第3のフレーム20cを送出する。しかし、監視ノード4cは、サイクルμT数を減少させながら、第3のスロット18cで第3のフレーム20cを送出してもよい。その場合には、監視ノード4cは、第1および第2のフレーム20a,20bの受信が停止した時の監視ノード4cのサイクルμT数に、レート補正限界値を加えた還元サイクルμT数を求める。
【0082】
―フェーズC―
フェーズCでは、監視ノード4cは、第1および第2のノード4a,4bのサイクル長をサイクル長の初期分布の中心部に収束させる。
図16は、フェーズCにおける各ノードのサイクル長の変化を説明する図である。横軸は、再スタートアップ後のサイクル番号である。縦軸は、サイクル長である。
図17は、監視ノード4cのフェーズCにおける動作を説明するフローチャートである。
【0083】
監視ノード4cは、第1および第2のフレーム20a,20bの受信が停止すると、第3のフレーム20cの送信を一旦停止する。その後、監視ノード4cは、第2のメモリ領域32bにレート補正値の初期値0μTを再設定する。更に、監視ノード4cは、第3のメモリ領域32cに記録された還元サイクルμT数を読出し、この還元サイクルμT数の中間数(最大値と最小値の間の数)を求める。監視ノード4cは、求めた中間数をメモリ12aの第4のメモリ領域32dに記録する(すなわち、上記中間数をサイクルμT数として設定する。)。この中間数は、例えば、還元サイクルμT数の平均値を切り上げまたは切り下げて得られる値である。或いは、後述するように、上記中間数は、還元サイクルμT数のフォール
ト・トレラント中間値であってもよい。
【0084】
その後、監視ノード4cは、再スタート信号を送出すると共にレディ状態に入る。レディ状態とは、スタートアップ・フレームに応答して、スタートアップを開始する状態である。第2のノード4bは、監視ノード4cが送出する再スタートアップ信号に応答して、レディ状態に入る。
【0085】
一方、第1のノード4aは、再スタートアップ信号に応答して、連続する4つサイクルで第1のフレーム20aをスタートアップ・フレームとして送出する(すなわち、スタートアップ処理を再開する。)。その後、第1のノード4aは、レート補正を再開し、第1のスロット18cで第1のフレーム20c(スタートアップ・フレーム)を送出する。
【0086】
第2のノード4bおよび監視ノード4cは、第1のノード4aが送出するスタートアップ・フレームに応答して、スタートアップ処理を実行する。その後、第2のノード4bおよび監視ノード4cは、レート補正を再開し、第2のスロット18bおよび第3のスロット18cでそれぞれ第2のフレーム20bおよび第3のフレーム20cを送出する。
【0087】
すなわち、監視ノード4cは、第1および第2のフレームの送出を停止した第1および第2のノードに、第1および第2フレームの送出と第1および第2のレート補正値の補正とを再開させる(
図17のS62)。
【0088】
次に、監視ノード4cは、そのレート補正値(第3のレート補正値)の変化を監視し、第1および第2のノード4a,4bのサイクル長が収束したか否かを逐次判定する。そして、監視ノード4cは、第1および第2のノード4a,4bのサイクル長が収束したと判定すると、第4のメモリ領域32dに記録された還元サイクルμT数の中間数を、サイクルμT数として設定する。
【0089】
その後、監視ノード4cは、サイクルμT数として設定された、還元サイクルμT数の中間数に基づいて、第3のスロット18cで第3のフレーム20cを繰り返し送信する(S64、
図7のS22)。ここで、還元サイクルμT数の中間数は、上述したように、例えば、還元サイクルμT数の平均値を切り上げまたは切り下げて得られる値である。従って、監視ノード4cのサイクル長は、サイクル長分布43の中心48近傍に設定される(
図16参照)。
【0090】
第1および第2のノード4a,4bは、
図16の期間45に示すように、監視ノード4cが送出する第3のフレーム20cに応答して、それぞれのサイクル長34a,34bを監視ノード4cのサイクル長34c,47(すなわち、サイクル長分布43の中心48)の近傍に収束させる(
図7のS24)。従って、第1および第2のノード4a,4bのサイクル長初期値80a,80bと収束値42aの間隔が狭くなり、第1および第2のノード4a,4bが同期外れを起し難くなる。
【0091】
ところで、以上の例では、還元マイクロチック数の中間数は、還元マイクロチック数の平均値またはフォール
ト・トレラント中間値である。しかし、上記中間数は、還元サイクルμT数の最大値と最小値の間の平均値を、切り上げまたは切り下げて得られる値であって
もよい。或いは、上記中間数は、還元サイクルμT数(>4)の数に応じて、還元サイク
ルμT数の最大値および最小値から所定数のデータ(>1)を削除して残された還元サイ
クルμT数の、最大と最小値の間の数であってもよい。
【0092】
因みに、第1および第2のノード4a,4bは、
図2を参照して説明したように、それぞれコンピュータ7を有している。これらのコンピュータ7は、それぞれ外部装置を制御するための情報を生成する。第1および第2のノード4a,4bは、夫々、第1および第2のフレームの送出を再開した後に、第1および第2のフレーム20a,20bのペイロード・セグメントを用いて、生成された情報を送出する(
図7のS24)。一方、監視ノード4cのコンピュータは、このような情報を生成しない。すなわち、本実施の形態の監視ノード4cは、サイクル長の初期分布を測定し、第1および第2のノード4a,4bのサイクル長を制御する専用装置である。
【0093】
但し、監視ノード4cのコンピュータ7も情報を生成し、第1および第2のノード4a,4bに第1および第2のフレーム20a,20bの送信を再開された後に、当該情報を送出してもよい。この場合、監視ノード4cは、第4のスロットで送出される第4のフレームにより、コンピュータ7が生成する情報を送出することができる。
【0094】
(実施の形態2)
本実施の形態のノードシステムは、実施の形態1のノードシステム略同じ構成を有している。従って、実施の形態1と共通する部分については、説明を省略する。但し、本監視ノードのフェーズCにおける動作は、実施の形態1の監視ノードと異なっている。
【0095】
図18は、本監視ノードのフェーズCにおける動作を説明するフローチャートである。
図19は、本実施の形態のフェーズCにおける各ノードのサイクル長の変化を説明する図である。
【0096】
本ノードシステムでは、各ノードは、まず、実施の形態1で説明したフェーズAおよびBにおける動作を実行する。その後、本監視ノードは、第3のフレームの送信を一旦停止する。
【0097】
次に、本監視ノードは、第3のメモリ領域32cに記録された還元サイクルμT数を読出し、その中間数を求める。その後、監視ノード4cは、求めた中間数をサイクルμT数として、メモリ12aの第4のメモリ領域32dに設定する(S72)。
【0098】
本監視ノードは、更に、再スタートアップ信号を送信する(S74)。その後、監視ノードは、第3のフレームをスタートアップ・フレームに設定し、第3のスロット18cで第3のフレーム20cを送出する(S76)。
【0099】
すると、第1および第2のノード4a,4bは、監視ノード4cの送出するスタートアップ信号およびスタートアップ・フレームに応答して、サイクル長が監視ノードのサイクル長に一致するようにぞれぞれのレート補正値(第1および第2のレート補正値)を設定する(
図19の再スタートアップ期間RSUP参照)。
【0100】
その後、第1および第2のノード4a,4bは、第1および第2のフレーム20a,20bの送出と第1および第2のレート補正値の補正を再開する。従って、第1および第2のノード4a,4bのサイクル長は、
図19に示すように、再スタートアップ期間RSUの終了直後からサイクル長分布の中心48近傍に収束する。
【0101】
(実施の形態3)
本実施の形態のノードシステムは、実施の形態1のノードシステム略同じ構成を有している。従って、実施の形態1と共通する部分については、説明を省略する。但し、本監視ノードは、フェーズBにおいて、実施の形態1の監視ノードと一部異なった動作をする。
【0102】
図20は、本実施の形態の監視ノードのフェーズBにおける動作を説明するフローチャートである。尚、実施の形態1と同じ処理を行うステップには、
図15と同じ符号が付されている。
【0103】
本監視ノードは、実施の形態1の監視ノードと同様に、フェーズAの間各ノードのサイクル長を監視し、それぞれのノードのサイクル長が収束したと判定した場合に、フェーズBに進む。フェーズBにおける第1および第2のノードの動作は、実施の形態1の第1および第2のノード4a,4cと略同じである。
【0104】
フェーズBにおける本監視ノードの動作も、
図20に示すように、実施の形態1の監視ノードと略同じである。但し、本監視ノードは、サイクルの終了時を調整しながら第3のフレームを送出し(S82)、その後サイクルμT数を増加させる(S84)。
【0105】
図21は、このサイクル終了時の調整方法(ステップS82)を説明するフローチャートである。
図22は、サイクル終了時の調整方法を説明するタイムチャートである。
【0106】
本監視ノードは、
図22に示すように、まず第1のサイクル対(連続する一対のサイクル)50aの先のサイクル52aの第3のスロット(図示せず)で第3のフレーム20cを送出する(ステップS92)。次に、本監視ノードは、先のサイクル52aを所定数のマイクロチック数δ遅らせて終了させる(ステップS94)。
【0107】
その後、本監視ノードは、第1のサイクル対50aの後のサイクル52bの第3のスロットで第3のフレーム20cを送出する(ステップS96)。更に、本監視ノードは、後のサイク52bを上記マイクロチック数δ早めて終了させる(ステップS98)。
【0108】
そして、本監視ノードは、第1または第2のフレーム20a,20bの受信が停止していない場合は、サイクルμT数を増加させて、第1のサイクル対50aに続く第2のサイクル対50bで第3のフレームを送出する(
図20のS48→B82→S84→S82)。一方、第1または第2のフレーム20a,20bの受信が全て停止している場合は、本監視ノードは、第3のフレームの送出を停止し、還元サイクルμT数を求める(
図20のステップS52)。
【0109】
図22に示すように、先のサイク52aの終了時をδ遅らせると、第3のフレーム20cの送信間隔54はδ増加する。このため、第1および第2のノードからは、監視ノードのサイクル長がδ増加したように見える。従って、本実施の形態によれば、監視ノードのサイクル長を疑似的に増加させることができる。
【0110】
図23は、本実施の形態の監視ノードと実施の形態1の監視ノードとのサイクルの変化を比較するタイムチャートである。
図23の中段には、第1のノード4aのサイクルの時間変化が示されている。
図23の上段には、本監視ノードのサイクルの時間変化が示されている。
図23の下段には、実施の形態1における監視ノードのサイクルの時間変化が示されている。
図23のサイクルは、フェーズBに移行直後のサイクルである。
【0111】
上述したように、本監視ノードは、先のサイクル52aの終了時点をδ遅らせた後、後のサイクル52bの終了時点をδ早めて終了させる。従って、本監視ノードのサイクル対50aの終了時点56aは、第1のノード4aのサイクル対70aの終了時点56bと略同じになる。
【0112】
一方、実施の形態1の監視ノードは、フェーズBに移行すると、まずサイクルμT数を増加させて、第3のフレームを送出する。このため、
図23に示すように、実施の形態1の監視ノードのサイクル対90aの終了時点56cは、第1のノードのサイクル対70aの終了時点56bより遅くなる。このため、実施の形態1の監視ノードのサイクル対90aの終了時点56cと、第1のノード4aのサイクル対70aの終了時点56cとの間には、時間差58が生じる。
【0113】
この時間差58が大きくなると、種々の問題が生じる。
図23に示すように、実施の形態1の監視ノードの2番目のサイクル対90bは、第1のノード4aの2番目のサイクル対70bより遅れてスタートする。このため、時間差58が大きくなり過ぎると、実施の形態1の監視ノードがサイクル対90bで送出する第3のフレーム20cが、第1のノード4aの第3のスロット18cから食み出してしまい、通信エラーが発生する。
【0114】
このような問題に加え、第1のノード4aがオフセット補正を行う場合には、時間差58の拡大により、オフセット・エラーが発生し易くなる。
図24は、オフセット補正を説明するタイムチャートである。
図24の上段には、第1のノード4aのサイクルの時間変化が示されている。
図24の下段には、第1のノード4aで行われる処理の時系列が示されている。
【0115】
オフセット補正を行う場合には、スロット・アクション・ポイント(期待される受信タイミング)からフレームが実際に受信されるまでのμT数(以下、偏差と呼ぶ)を測定することが好ましい。このμT数の偏差に基づいて、オフセット補正およびレート補正が行われる。
【0116】
第1のノード4aは、
図24に示すように、第1のサイクル対70a内の先のサイクル72aの第1の測定期間64aで、第2のフレーム20bおよび第3のフレーム20cそれぞれに対する第1の偏差(すなわち、2つの偏差)を測定する。
【0117】
同様に、第1のノード4aは、第1のサイクル対70a内の後のサイクル72bの第2の測定期間64bで、第2のフレーム20bおよび第3のフレーム20cそれぞれに対する第2の偏差(すなわち、2つの偏差)を測定する。
【0118】
その後、第1のノード4aは、第1のサイクル対70a内の後のサイクル72bのネットワーク・アイドル時間66に設けられる第1の演算期間68で、第1および第2の偏差に基づいて第1のレート補正値を補正する。第1のノード4aは、この補正された第1のレート補正値に基づいて、第1のサイクル対70aに続く第2のサイクル対70bのサイクルμT数を設定する。尚、ネットワーク・アイドル時間とは、スロットが割り当てられていないサイクル内の最後の期間のことである。
【0119】
更に、第1のノード4aは、後のサイクル72bのネットワーク・アイドル時間66内の第2の演算期間70で、第2の偏差の中間数を求め、この中間数をオフセット補正値として設定する。そして、第1のノード4aは、後のサイクル72bの終了時を、このオフセット補正値分遅らせる。このオフセット補正は、第1のサイクル対70aの終了時点が、第2のノード4bおよび監視ノード4cのサイクル対の終了時点に近づくように作用する。第2のノード4bも、第1のノード4aと同様に、オフセット補正を行う。
【0120】
しかし、オフセット補正値の絶対値が大きくなり過ぎると(特に、オフセット補正値が負の場合)、ネットワーク・アイドル時間内で行われる演算処理に支障が生じる。そこで、オフセット補正値の絶対値がオフセット補正限界値を超えると、エラーカウンタのカウント数が一つ増加し、このカウント数が閾値を超えた時点で第1のノード4aは、フレームの送出を停止する。以下、オフセット補正値がオフセット補正限界値を超えることを、オフセット・エラーと呼ぶ。
【0121】
実施の形態1のように、監視ノードがサイクルμT数を増加させるだけの場合、監視ノードの第1のサイクル対90aの終了時点56cが、第1のノード4aの最初のサイクル対70aの終了時点56bより遅れる(
図23参照)。このため、第1のノード4aのサイクル対70aに続くサイクル対70b内における第3のフレーム20cの偏差が大きくなり、第1のノード4aでオフセットセラーが生じやすくなる。第2のノード4bでも、同様に、オフセット・エラーが発生しやすくなる。
【0122】
しかし、本実施の形態によれば、
図23に示すように、監視ノードのサイクル対50aの終了時点56aと、第1のノード4aのサイクル対70aの終了時点56bが略同じになるので、オフセット・エラーが起き難くなる。従って、第1のノード4aのフレームの送信が停止しし難くなる。第2のノード4bのフレームの送信も、同様に、停止しし難くなる。
【0123】
尚、監視ノードによるサイクルμT数の増加量は、δの1/2が好ましい。この場合、第1および第2のノード4a,4bのサイクル数の増加量が監視ノードのサイクルμT数の増加量に略等しくなり、最初のサイクル対50a,70a以降のサイクル対でも終了時点が揃いやすくなる。また、サイクルの終了時点を調整するμT数δは、減衰定数以下であることが好ましい。これにより、サイクル長分布の測定誤差が小さくなる。
【0124】
上述の例では、先のサイクル52aをμT数δ遅らせて終了させ、後のサイクル52bを上記μT数δ早めて終了させる。しかし、先のサイクル52aをμT数δ早めて終了させ、後のサイクル52bをμT数δ遅らせて終了させてもよい。この場合には、第1もサイクル対50aに続く第2もサイクル対50bのサイクルμT数を減少させる。
【0125】
(実施の形態4)
本実施の形態のノードシステムは、実施の形態1のノードシステム略同じ構成を有している。従って、実施の形態1と共通する部分については、説明を省略する。
【0126】
図25は、本実施の形態のノードシステム2aの構成を説明する図である。
図25に示すように、本ノードシステム2aは複数の第2のノード4bを有している。すなわち、本ノードシステム2aは、4つ以上のノードを有している。実施の形態1と同様に、本ノードシステムに含まれる各ノードは、受信される複数のフレームのサイクル開始からのマイクロチック数の差分を測定し、この差分の中間値に基づいてレート補正を行う。従って、本ノードシステム2の各ノードは、3つ以上のマイクロチック数の差分の中間値が求める。
【0127】
このように3つ以上のデータの中間値を求める場合、フォール
ト・トレラント中間値アルゴリズム(Fault-tolerant midpoint algorithm;以下、FTMアルゴリズムと呼ぶ)を用いることで、処理対象データのエラーを抑制することができる。
【0128】
図26は、FTMアルゴリズムを説明する図である。FTMアルゴリズムでは、まず処理対象のデータ74を、大きさの順にソーティングする(S102)。次に、処理対象のデータの数に応じて、所定数のデータk(例えば、2つ)を、ソーティングされたデータの最大値および最小値から順番に削除する(S104)。最後に、残されたデータの最大値と最小値を平均し、得られた平均値を切り上げまたは切り下げて中間値を求める(S106)。
【0129】
【表5】
表5は、FTMアルゴリズムで用いられるデータの削除数kの一例を示している。左側の列が、処理対象データの数である。右側の列が、データの削除数kである。表5に示すように、処理対象データの数が3つ以上の場合、削除数kは1つ以上になる。処理対象データの数が2つ以下の場合、削除数kは0である。
【0130】
次に、第1のノード4aが、FTMアルゴリズムを用いて、レート補正の中間値を求める手順を説明する。ここでは、第2のノード4bは、2つのノードAおよびノードBを有するとする。また、本ノードシステムの各ノードは、自己が送信したフレームは受信しないものとする。
【0131】
図27は、第1のノード4aにおけるレート補正の手順を説明するタイムチャートである。
図27に示すように、ノードAおよびB(第2のノード4b)は、それぞれに割り当てられたスロット18b1および18b2(第2のスロット18b)で、それぞれフレーム20b1およびフレーム20b2(第2のフレーム20b)を送出する。一方、監視ノード4cは、スロット18c1およびスロット18c2(第3のスロット18c)で、フレーム20c1およびフレーム20c2(第3のフレーム20c)を送出する。
【0132】
第1のノード4aは、第1のサイクル16aで受信されるフレーム20b1〜20c2それぞれに対するサイクル開始からの第1のマイクロチック数(例えば、マイクロチック数24b2)を測定する。同様に、第1のノード4aは、第1のサイクル16aに続く第2のサイクル16bで受信されるフレーム20b1〜20c2それぞれに対するサイクル開始からの第2のマイクロチック数(例えば、マイクロチック数26b2)を測定する。第1のノード4aは、更に、第1のマイクロチック数と第2のマイクロチック数の差分を求める。
【0133】
次に、第1のノード4aは、上記差分のデータ数(例えば、4つ)に応じた所定数のデータ(例えば、1つ)を、上記差分の最大値から最小値に向かって順番に削除する(表5参照)。更に、第1のノード4aは、上記所定数(例えば、1つ)のデータを上記最小値から上記最大値に向かって削除する。その後、第1のノード4aは、残された上記差分の最大値と最小値を平均し、得られた平均値を切り上げまたは切り下げてフォール
ト・トレラント中間値を求める。このフォール
ト・トレラント中間値を用いて、第1のノード4aは、第1のレート補正値を補正する。また、第2のノード4bも、第1のノード4aと同様に、フォール
ト・トレラント中間値を求め、第2のレート補正値を補正する。
【0134】
以上のように、フォール
ト・トレラント中間値に基づいてレート補正を行うと、サイクル長が最も長いノード(および最も短いノード)が送出するフレームは、無視されてしまう。ところで、監視ノード4cのサイクル長は、第1および第2のノード4a,4bより長く(または短く)なりやすい。特にフェーズBでは、このような状態が確実に発生する。そこで、本実施の形態の監視ノード4cは、FTMアルゴリズムにより最大値および最小値から削除されるデータ数kより多くの第3のフレームを送出する。
【0135】
図25に示すように、本ノードシステム2aが有するノードは4つ以上である。従って、本監視ノード4cは、
図27に示すように、2つ以上の第3のフレーム20cを送出する。すなわち、監視ノード4cは、複数の第3のスロット18cで複数の第3のフレーム20cを送出する。
【0136】
図27の例では、第1および第2のノードが受信するフレーム数は4つ(=5−1)である。従って、FTMアルゴリズムにより最大値および最小値から削除するデータ数は1つである(表5参照)。従って、
図27では、本監視ノード4cは、2つのフレーム20c1,20c2を送出している。
【0137】
【表6】
表6は、本監視ノード4cが送信するフレームの数の一例である。表6の左列には、各ノードが受信するフレームの総数が示されている。表6の右列には、監視ノードが送信するフレームの数が示されている。ところで、実施の形態1のノードシステム2は、
図1に示すように、3つのノードを有している。従って、実施の形態1のノードシステム2でFTMアルゴリズムを用いる場合にも、表6に示すように、複数の第3のスロット18cで複数の第3のフレーム20cを送出することが好ましい。
【0138】
因みに、還元サイクルμT数の上記中間数も、FTMアルゴリズムで求めることができる。監視ノードは、まず、複数の還元サイクルμT数のデータ数(3以上)に応じた所定数のデータ(1以上)を、上記複数の還元サイクルμT数の最大値から最小値に向かって順番に削除する。次に、監視ノードは、上記所定数のデータを還元サイクルμT数の最小値から最大値に向かって削除し、残された還元サイクルμT数の最大値と最小値の平均値を切り上げまたは切り下げて、上記中間数を求める。これにより、還元サイクルμT数に含まれるエラーが抑制される。
【0139】
以上の実施の形態では、各ノードは、それぞれのサイクル長が収束した後に、フェーズBに移行する。しかし、各ノードは、フェーズAの同期制御(
図7のS14a〜S14c)を省略し、起動直後にフェーズBに移行してもよい。この場合、監視ノード4cは、最初からサイクルμT数を増加または減少させながら、第3のスロットで第3のフレームを送出する。
【0140】
また、以上の実施の形態では、ノードシステムに含まれる全てのノードのフレームが、同期制御に利用される。しかし、本ノードシステムは、同期制御に利用されないフレームを送出するノードを有してもよい。この場合、各ノードは、ヘッダセグメント内の所定のインジケータにより、受信あれるフレームが同期制御に用いられるフレームか否かを判定する。
【0141】
また、以上の実施の形態では、伝送路6は1重である。しかし、伝送路6は、2重化されてもよい。
【0142】
また、以上の実施の形態では、伝送路6のトポロジは、バス型である。しかし、伝送路6のトポロジは、スター型またはバスとスターの混載型であってもよい。
【0143】
以上の実施の形態1〜4に関し、更に以下の付記を開示する。
【0144】
(付記1)
複数のノードが伝送路を介して接続されたノードシステムにおいて、
前記複数のノードは、クロック発生器と、連続的に繰り返されるサイクル内において前記クロック発生器が第1の所定数のクロックを発生するごと
に生じるマイクロチックに基づいて割り当てられるスロットでフレームを送出し、前記サイクルのサイクル長に対応するサイクルマイクロチック数の初期値と前記初期値に対するレート補正値を管理する通信制御部とを有し、
前記複数のノードのうち、
第1のスロットで第1のフレームを送出する第1のノードは、前記複数のノードのサイクルが同期するように、第1のレート補正値を繰り返し補正し、前記第1のレート補正値の絶対値が所定のレート補正限界値を超える場合には、前記第1のフレームの送出を停止し、前記絶対値が前記レート補正限界値以内の場合には、補正された前記第1のレート補正値に基づいて、前記第1のスロットで前記第1のフレームを送出し、
第2のスロットで第2のフレームを送出する第2のノードは、前記複数のノードのサイクルが同期するように、第2のレート補正値を繰り返し補正し、前記第2のレート補正値の絶対値が前記レート補正限界値を超える場合には、前記第2のフレームの送出を停止し、前記絶対値が前記レート補正限界値以内の場合には、補正された前記第2のレート補正値に基づいて、前記第2のスロットで前記第2のフレームを送出し、
第3のスロットで第3のフレームを送出する監視ノードは、前記サイクルマイクロチック数を増加または減少させながら前記第3のスロットで前記第3のフレームを送出し、前記第1および第2のフレームの受信が停止した時の当該監視ノードの前記サイクルマイクロチック数から前記レート補正限界値を減じまたは加えた還元サイクルマイクロチック数を求めるノードシステム。
【0145】
(付記2)
付記1に記載のノードシステムにおいて、
前記監視ノードは、更に、
前記第1および第2のフレームの送出を停止した前記第1および第2のノードに、前記第1および第2フレームの送出と前記第1および第2のレート補正値の補正とを再開させ、
前記還元サイクルマイクロチック数の中間数をサイクルマイクロチック数として設定し、前記第3のスロットで前記第3のフレームを繰り返し送出する
ことを特徴とするノードシステム。
【0146】
(付記3)
付記2に記載のノードシステムにおいて、
前記監視ノードは、前記第1および第2のフレームの送出を停止した前記第1および第2のノードに前記第1および第2のフレームの送出と前記第1および第2のレート補正値の補正とを再開させた後に、前記第3のスロットで第3のフレームを繰り返し送出することを
特徴とするノードシステム。
【0147】
(付記4)
付記2に記載のノードシステムにおいて、
前記監視ノードは、更に、前記第1および第2のフレームの受信が停止した後に、
前記中間数をサイクルマイクロチック数として設定して、前記第3のスロットで前記第3のフレームの送出を開始し、
その後、前記第1および第2のフレームの送出を停止した前記第1および第2のノードに、サイクル長が監視ノードのサイクル長に一致するように前記第1および第2のレート補正値を設定させ、
その後、前記第1および第2のノードに、前記第1および第2のフレームの送出と前記第1および第2のレート補正値の補正とを再開させることを
特徴とするノードシステム。
【0148】
(付記5)
付記1乃至4のいずれか1項に記載のノードシステムにおいて、
前記監視ノードは、サイクル対ごとに、当該サイクル対の先のサイクルを第2の所定数のマイクロチック数遅らせ又は早めて終了させ、当該サイクル対の後のサイクルを前記第2の所定数のマイクロチック数早め又は遅らせて終了させ、その後前記サイクルマイクロチック数を増加または減少させることを繰り返しながら、前記第3のスロットで前記第3のフレームを送出することを
特徴とするノードシステム。
【0149】
(付記6)
付記1乃至5のいずれか1項に記載のノードシステムにおいて、
前記中間数は、前記複数の還元サイクルマイクロチック数のデータ数に応じた第3の所
定数のデータを、前記複数の還元サイクルマイクロチック数の最大値から最小値に向かっ
て順番に削除し且つ前記第3の所定数のデータを前記最小値から前記最大値に向かって削
除し、残された前記還元サイクルマイクロチック数の最大値と最小値の平均値を切り上げ
または切り下げて得られるフォール
ト・トレラント中間値であることを
特徴とするノードシステム。
【0150】
(付記7)
付記1乃至5のいずれか1項に記載のノードシステムにおいて、
前記中間数は、前記還元サイクルマイクロチック数の平均値を切り上げまたは切り下げて得られる値であることを
特徴とするノードシステム。
【0151】
(付記8)
付記1乃至7のいずれか1項に記載のノードシステムにおいて、
前記第3のスロットは、複数のスロットを有し
前記第3のフレームは、複数のフレームを有することを
特徴とするノードシステム。
【0152】
(付記9)
付記1乃至8のいずれか1項に記載のノードシステムにおいて、
前記監視ノードは、更に、
前記複数のノードのサイクルが同期するように、第3のレート補正値を繰り返し補正しながら、前記第3のスロットで前記第3のフレームを送出し、
前記複数のノードそれぞれのサイクル長が、連続して所定の回数以上、所定の幅を有する範囲内にあると判定された場合に、前記還元マイクロチック数を求めることを
特徴とするノードシステム。
【0153】
(付記10)
クロック発生器と、連続的に繰り返されるサイクル内において前記クロック発生器が第1の所定数のクロックを発生するごと
に生じるマイクロチックに基づいて割り当てられる第1および第2のスロットで第1および第2のフレームを受信し、前記マイクロチックに基づいて割り当てられる第3のスロットで第3のフレームを送出し、前記サイクルのサイクル長に対応するサイクルマイクロチック数の初期値と前記初期値に対するレート補正値を管理する通信制御部とを有し、
前記サイクルマイクロチック数を増加または減少させながら前記第3のスロットで第3のフレームを送出し、前記第1および第2のフレームの受信が停止した時それぞれのサイクルマイクロチック数から所定のレート補正限界値を減算または加算した還元サイクルマイクロチック数を求める
監視ノード。
【0154】
(付記11)
付記10に記載の監視ノードにおいて、
更に、前記第1および第2のフレームの送出を停止した前記第1および第2のノードに、前記第1および第2フレームの送出と前記第1および第2のレート補正値の補正とを再開させ、
前記還元サイクルマイクロチック数の中間数を当該監視ノードのサイクルマイクロチック数として設定し、前記第3のスロットで前記第3のフレームを繰り返し送出する
ことを特徴とする監視ノード。
【0155】
(付記12)
付記10または11に記載の監視ノードにおいて、
サイクル対ごとに、当該サイクル対の先のサイクルを第2の所定数のマイクロチック数遅らせ又は早めて終了させ、当該サイクル対の後のサイクルを前記第2の所定数のマイクロチック数早め又は遅らせて終了させ、その後前記サイクルマイクロチック数を増加または減少させることを繰り返しながら、前記第3のスロットで前記第3のフレームを送出することを
特徴とする監視ノード。
【0156】
(付記13)
複数のノードによって実行される同期方法であって、
前記複数のノードは、第1のノードと第2のノードと監視ノードとを有し、
前記複数のノードは、それぞれ連続的に繰り返されるサイクル内において所定数のクロックを発生するごと
に生じるマイクロチックに基づいて割り当てられるスロットでフレームを送出し、前記サイクルのサイクル長に対応するサイクルマイクロチック数の初期値と前記初期値に対するレート補正値を管理し、
前記第1のノードは、前記複数のノードのサイクルが同期するように、第1のレート補正値を繰り返し補正し、前記第1のレート補正値の絶対値が所定のレート補正限界値を超える場合には、前記第1のフレームの送出を停止し、前記絶対値が前記レート補正限界値以内の場合には、補正された前記第1のレート補正値に基づいて、前記第1のスロットで前記第1のフレームの送出し、
前記第2のノードは、前記複数のノードのサイクルが同期するように、第2のレート補正値を繰り返し補正し、前記第2のレート補正値の絶対値が前記レート補正限界値を超える場合には、前記第2のフレームの送出を停止し、前記絶対値が前記レート補正限界値以内の場合には、補正された前記第2のレート補正値に基づいて、第2のスロットで前記第2のフレームを送出し、
前記監視ノードは、前記サイクルマイクロチック数を増加または減少させながら前記第3のスロットで前記第3のフレームを送出し、前記第1および第2のフレームの受信が停止した時の当該監視ノードの前記サイクルマイクロチック数から前記レート補正限界値を減じまたは加えた還元サイクルマイクロチック数を求める
同期方法。
【0157】
(付記14)
付記13に記載の同期方法において、
前記監視ノードは、更に、
前記第1および第2のフレームの送出を停止した前記第1および第2のノードに、前記第1および第2フレームの送出と前記第1および第2のレート補正値の補正とを再開させ、
前記還元サイクルマイクロチック数の中間数をサイクルマイクロチック数として設定し、前記第3のスロットで前記第3のフレームを繰り返し送出する
ことを特徴とする同期方法。