(58)【調査した分野】(Int.Cl.,DB名)
マスタノードとスレーブノードを含む複数のノード各々が共有メモリを有し、各ノードが、定周期の通信サイクル内の自ノードに割当てられた送信帯域において、自ノードの共有メモリデータを他ノードへ送信するシステムであって、
前記各スレーブノードは、前記システムへの加入/再加入の際に、前記マスタノードに対して、要求帯域量を含む加入要求を送信する加入要求手段を有し、
前記マスタノードは、
前記加入要求に応じて、各スレーブノードに対して、前記通信サイクル内における任意の送信帯域を割当てる帯域割当管理手段と、
該各ノードへの送信帯域割当結果が登録される割当管理テーブルを記憶する割当管理テーブル記憶手段と、
前記割当管理テーブルを定期的に各スレーブノードに送信して記憶させる割当管理情報通知手段と、を有し、
前記帯域割当管理手段は、前記割当管理テーブルを参照して、前記送信帯域の割当てを行うことを特徴とするネットワーク通信システム。
前記帯域割当管理手段は、前記送信帯域の割当てを行う毎に空き帯域量を更新し、前記要求帯域量が空き帯域量を超える場合には、加入を許可しないことを特徴とする請求項1記載のネットワーク通信システム。
前記帯域割当管理手段は、前記脱落後に復帰したものと判定したノードからの前記加入要求に対しては、前記割当管理テーブルに登録されている、該ノードに割当て済みの送信帯域を再度割当てることを特徴とする請求項3記載のネットワーク通信システム。
前記帯域割当管理手段は、前記脱落後に復帰したものと判定したノードからの前記加入要求の前記要求帯域量が、前記割当管理テーブルに登録されている、該ノードに割当て済みの送信帯域の帯域量と同じである場合には、該ノードに対しては該割当て済みの送信帯域を再度割当てることを特徴とする請求項3記載のネットワーク通信システム。
前記マスタノードの脱落に応じて新たな該マスタノードである代替マスタノードになったスレーブノードは、前記割当管理情報通知手段によって自ノードに記憶していた前記割当管理テーブルを用いて、前記送信帯域の割当てを行うことを特徴とする請求項1〜5の何れかに記載のネットワーク通信システム。
前記帯域割当管理手段は、前記加入要求と前記自ノードに記憶していた割当管理テーブルとに基づいて、既に登録済みのノードが脱落後に復帰したものと判定した場合には、脱落前と同じ送信帯域を割当てることを特徴とする請求項7記載のネットワーク通信システム。
前記代替マスタ化判定手段は、代替マスタ化確認用フレームを所定回数送信できた場合には自ノードを前記代替マスタノードとすると判定するが、該所定回数に達する前に自ノードより優先度が高いスレーブノードからの前記代替マスタ化確認用フレームを受信した場合には自ノードを前記代替マスタノードとしないと判定することを特徴とする請求項7または8記載のネットワーク通信システム。
各々が共有メモリを有する複数のノードから成り、各ノードが、定周期の通信サイクル内の自ノードに割当てられた送信帯域において、自ノードの共有メモリデータを他ノードへ送信するシステムであって、前記各ノードのうち1台がマスタノードとなり、他がスレーブノードとなるネットワーク通信システムにおける該マスタノードにおいて、
各スレーブノードがシステム加入の際に送信してくる加入要求に応じて、各スレーブノードに対して、前記通信サイクル内における任意の送信帯域を割当てる帯域割当管理手段と、
該各ノードへの送信帯域割当結果が登録される割当管理テーブルを記憶する割当管理テーブル記憶手段と、
前記割当管理テーブルを定期的に各スレーブノードに送信して記憶させる割当管理情報通知手段と、
を有することを特徴とするマスタノード。
【発明を実施するための形態】
【0022】
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本実施形態におけるネットワーク通信システムの概略構成の一例を示す図である。
【0023】
図1に示すネットワーク通信システム10は、一例として、複数のノード装置11と、1又は複数のHUB(ハブ)12等を有する。また、
図1の例では、HUB12は、HUB12−1〜12−4の4台があるものとする。また、ノード装置11は、ノード装置11−1、ノード装置11−2、ノード装置11−3、ノード装置11−4、ノード装置11−5の5台あるものとし、以下、基本的にこれらをノードA、ノードB、ノードC、ノードD、ノードEと記すものとする。但し、特に区別しない場合にはノード装置11と記すものとする。なお、ノード装置や中継装置の数や種類、接続方法については、図示の例に限定されるものではない。また、HUB12は、中継装置の一例であり、この例に限るものではない。
【0024】
ここで、後述する一例の説明では、基本的にはノードAがマスタノード(マスタ局)となるものとし、ノードB、ノードC、ノードD、ノードEをスレーブノード(スレーブ局)とする。これより、マスタノードA、スレーブノードB、C,D,E等と記す場合もあるものとする。但し、後述するように、マスタノードAが脱落した場合には、スレーブノードの何れか1台が代替のマスタノードとなる。本手法では、この様な場合において発生する後述する問題も、解消することができる。詳しくは後述する。
【0025】
また、
図1の例では、ネットワーク通信システム10の通信路は、各ノード間に中継装置(HUB12)を有するスター型である。各ノード装置11は、通信路を介して相互に接続されている。各中継装置(HUB12)においてデータ中継の際に遅延が生じるので、任意のノード装置11間の通信は、中継装置の段数が多いほど遅延が大きくなることになる。
【0026】
なお、中継装置は、一例としてHUB12を示すが、この例に限定されるものではなく、例えばルータ、リピータ、光コンバータ等であってもよい。
また、各ノード装置11は、例えばプログラマブルコントローラ(PLC)、PC(Personal Computer)、サーバ、入出力(I/O)モジュール、ドライブ装置(例えば、インバータ、サーボ等)等であるが、これらの例に限らない。
【0027】
ここで、ネットワーク通信システム10は、上記背景技術で説明した共有メモリ方式が用いられているものとする。よって、各ノードA,B、C,D,Eは、
図1では図示しない共有メモリ(コモンメモリ)を有している。そして、各ノードは、所定の周期Tの通信サイクルで、ネットワーク上の全局へ自局の共有メモリデータの送信を行うことを繰り返す。このデータを受信した各ノードは、当該受信データによって自ノードの共有メモリの格納データを更新する。この様にして、リアルタイム性を保証したデータ交換方式を実現している。
【0028】
尚、各ノードにおいて、任意のアプリケーションの処理実行に伴って、共有メモリにアクセスするが、上記処理によってリアルタイムの最新の更新データにアクセスできることになる。上記アプリケーションは、例えばプラント等の各種機器の制御用のアプリケーションであるが、この例に限らない。
【0029】
また、各ノードの共有メモリデータの送信タイミングが相互に異なるように、上述したタイムスロットの割当てが行われている。すなわち、上述したように、各ノードには1以上の帯域(タイムスロット)が割り当てられるが、これは例えば
図2に示すようなTS帯域内において割り当てられる。TS帯域は、複数のタイムスロットに分割されており、本手法ではこのタイムスロット数は予め決められている。換言すれば、TS帯域の長さは、予め決まっており、以って通信サイクルの長さも予め決まっている。つまり、本手法では通信サイクルの長さ(周期T)が変動するようなことはない。そして、本手法では、上記各ノードへのタイムスロットの割当ては、動的に行われる。例えば、マスタノードは、ネットワークへの加入順に、各ノードへタイムスロットを割当てる。詳しくは後述する。
【0030】
以下、
図2の例について説明する。
図2の例は、例えば先願(WO 2013121568 A1)の例に基づく帯域区分例である。
ここで、先願(WO 2013121568 A1)について簡単に説明する。
【0031】
先願では、まず、各ノードがサイクルタイマとセンドタイマの2つのタイマを有しており、サイクルタイマには予め所定の周期Tが設定されている。これより、サイクルタイマに、タイマアップ後直ちに再起動する動作を繰り返させることで、
図2に示す周期Tの通信サイクルが生成される。そして、先願では、通信サイクルを、図示のTC帯域、TS帯域の2つの帯域に分割している。
【0032】
尚、本例では、更に
図2に示すMSG帯域が加わっているが、これは一例であり、MSG帯域は無くてもよい。但し、本例ではMSG帯域も設けるものとする。MSG帯域は、主に1対1の通信にて使用され、本例では後述する加入要求(スレーブ局からマスタ局へのネットワーク参加要求)も、このMSG帯域でメッセージ通信される。このネットワーク参加要求メッセージには、送信元局番、要求送信時間帯域数(要求する帯域量(タイムスロット数)や送信データ量など)等が含まれる。
【0033】
また、先願と同様、図示のTC帯域は、同期化フレーム送受信の為の帯域である。先願と同様に、この同期化フレーム等に基づいて、各スレーブノードが、自己のサイクルタイマを、マスタノードのサイクルタイマに同期させるようにしてもよいが、この例に限らない。尚、本説明における“同期”とは、例えば各ノードのタイマのカウンタ動作(起動タイミング;位相等)が合っている状態をいうが、これに限定されるものではない。但し、TC帯域も必須の構成要素ではない。
【0034】
一例としては、上記帯域(タイムスロット)は、このTS帯域を分割したものと見做してよい。そして、各ノードには、1以上のタイムスロットが割り当てられる。
図2に示す例では、ノードA,C,Eには1つのタイムスロットが割り当てられ、ノードBには2つ、ノードDには3つのタイムスロットが、それぞれ割り当てられているものとする。但し、従来では事前に固定的にタイムスロットが割り当てられていたが、本手法では、運用中に動的にタイムスロットが割り当てられる。特に、加入順にタイムスロットが割り当てられる。
【0035】
本手法では、TS帯域の長さは、予め固定的に決められている。そして、マスタノードは、任意のスレーブノードからのシステムへの加入要求がある毎に、タイムスロットを割り当てて加入許可を出す。但し、要求を満たす数の未割当タイムスロットが残っていない場合には、加入許可を出さない。
【0036】
これについて、以下、
図3を参照して説明する。
図3は、マスタノードの処理フローチャート図(その1)である。
また、
図4(a)、(b)は、マスタノードが生成・保持する送信時間帯域割付情報の一例(その1)、(その2)である。尚、マスタノードは、
図4(a)、(b)に示す例の何れか一方のみを生成・保持するものであってもよいし、両方とも生成・保持するものであっても構わない。
図3の説明の前に、
図4について説明する。
【0037】
まず、
図4(a)に示す例では、送信時間帯域割付情報30は、送信帯域31、状態32、局番33等から成る。送信帯域31は、例えば上記各タイムスロットの識別番号等であり、ここでは図示の‘1’から‘N’まである。換言すれば、タイムスロット数はN個である。尚、上記の通り、TS帯域の長さは予め固定的に決められているので、Nの値もこれに応じて予め決まっている。
【0038】
状態32には、例えば、送信帯域31の識別番号のタイムスロットが、任意のノードに割付け済みか否かを示す情報が格納され、図示の例では「割付け済み」、「未割付け」等が格納される。「割付け済み」の場合には、割付けたノードの局番が、局番33に格納される。一方、「未割付け」の場合には、局番33には例えば“NULL”や‘0’等が格納されるものとする。
【0039】
また、
図4(b)に示す例では、送信時間帯域割付情報40は、局番41、状態42、送信開始時間43、データ占有量44等から成る。
局番41には、各ノードの局番が格納される。換言すれば、各ノードの識別情報が格納される。局番41には、その時点でシステムに加入しているか否かは関係なく、加入し得るノード全ての局番が格納されてもよいが、この例に限らない。尚、本手法の場合、上記
図14に示した従来技術のような「局番‘1’、‘3’、‘4’は使用不可」等の制約はないので、重複しない限り、各局番は自由に決めて構わない。また、“使用不可の局番を、誤って設定してしまう”等という事態は、生じ得ない。
【0040】
状態42には、局番41のノードが、その時点で「加入済み」、「未加入」、「脱落」の何れの状態であるのかが、格納される。ここで、「加入済み」、「未加入」については特に説明は要しないが、「脱落」について説明しておく。
【0041】
すなわち、ノードは、一旦システムに加入した後に、例えばメンテナンス、故障、更新等の理由で、一時的にシステムから切り離される(例えば電源OFFなどする)場合がある。この様な場合、再度、システムに接続(例えば電源ONした)するはずである。この様な場合があることを考慮して、システムに加入していたノードが、システムから切り離されたと見做される場合には(このノードからの送信データを、一定時間以上連続して受信しなかった場合等)、「脱落」と見做すものとしている。そして、その後に、同ノードからの加入要求があった場合には、“復帰した”と見做すものとしている。
【0042】
局番41のノードに対して既に任意の1以上のタイムスロットを割当て済みの場合には(「脱落」の状態も含む)、送信開始時間43には割り当てたタイムスロット群の最初のタイムスロットの識別番号が格納され、データ占有量44には割り当てたタイムスロットの数が格納される。
【0043】
以下、
図3の処理について説明するが、その際に参照/更新する送信時間帯域割付情報は、ここでは上記
図4(a)に示す送信時間帯域割付情報30であるものとする。但し、この例に限らない。
【0044】
マスタノードは、任意のスレーブノードからの加入要求を受信する毎に(ステップS11,YES)、ステップS12〜S16の処理を実行する。ここで、加入要求には、要求元ノードの局番、要求元ノードの送信データ量(あるいは必要とするタイムスロット数)等の情報が含まれている。本処理は、既に運用中に行うので、要求元では送信データ量(あるいは必要とするタイムスロット数)が、明確に分かっていることになる。よって、従来のように多めにタイムスロットが割り当てられることはなく、無駄な帯域が生じることはない。
【0045】
マスタノードは、上記受信した加入要求の上記各種情報を参照することで、まず、要求元ノードの局番が、既に加入済みのノードの局番と、重複してないかを確認する(ステップS12)。もし、局番重複している場合には(ステップS12,YES)、加入は認めず、例えば異常終了する(ステップS15)。
【0046】
尚、上記ステップS15の際に要求元ノードに対して異常応答を返信してもよいが、重複局番宛のメッセージは正しく到達しない可能性があるので異常応答は返信しないようにしてもよい。この場合、加入要求局は、例えば複数回の要求を行っても正常応答がマスタ局から返信されない場合、自身で加入失敗を判定する。
【0047】
ここで、各ノードには、作業員等が手動で局番を設定できる構成(後述する局番SWなど)が設けられている。この為、作業員のミスにより、システムに新規追加するノードに対して、既存のノードと同じ局番を設定する可能性がある。例えば、この様な状況である場合に上記ステップS12の判定がYESとなる。
【0048】
但し、要求元ノードの局番が送信時間帯域割付情報30に登録されていても、必ずしもステップS15の処理を行うとは限らない。すなわち、要求元ノードが上記「脱落」状態から復帰したノードである場合には、ステップS15の処理ではなく、不図示の復帰処理を実行するようにしてもよい。この例の場合、送信時間帯域割付情報30においても、送信時間帯域割付情報40と同様に、状態32に「脱落」も格納されるようにする。そして、ステップS12の判定がYESとなるのは、要求元ノードの局番が、送信時間帯域割付情報30に登録されており、且つ、この局番33に対応する状態32が「割付け済」となっている場合だけとする。
【0049】
これに対して、要求元ノードの局番が、送信時間帯域割付情報30に登録されているが、この局番33に対応する状態32が「脱落」である場合には、上記復帰処理を行う。この復帰処理は、その局番33が要求元ノードの局番と同じである1以上のレコードにおける送信帯域31を、要求元ノードに割当てる。つまり、要求元ノードに対して以前に(脱落前に)割当てていた帯域と同じ帯域を、再度、割当てる。そして、このレコードにおける状態32を、上記「脱落」から「割付け済」へと変更する。
【0050】
但し、後述するように、実質的に上記復帰処理が行えない場合もある。例えば、マスタノードが後述する代替マスタであり送信時間帯域割付情報30を持たない状態である場合(あるいはマスタとなった後に新規に送信時間帯域割付情報30を作成した場合)、上記脱落から復帰したノードであることが分からず、新規加入要求であると見做す場合がある。この場合、例えば後述する
図5に示す例のような問題が生じる場合があるが、これについては後述する。
【0051】
要求元ノードの局番が送信時間帯域割付情報30に登録されていない場合には(ステップS12,NO)、未加入ノードからの新規加入要求であると判定して、要求された分のタイムスロットを割当て可能である場合には、加入許可する。
【0052】
すなわち、まず、加入要求に含まれる要求帯域量(上記送信データ量や、必要とするタイムスロット数など)が、現在の“残り帯域”(未使用タイムスロットの数など)以下であるか否かを判定する(ステップS13)。ここで、変数“残り帯域”の初期値は、予め決められて全ノードに登録されている。
図4の例の場合であれば、例えば、“残り帯域”の初期値=“N”となっている。
【0053】
上記要求帯域が、現在の“残り帯域”を越えている場合には(ステップS13、NO)、要求元のノードに対して必要なタイムスロットを割り当てることができないことになるので、加入不可と判定する(ステップS15)。
【0054】
一方、上記要求帯域が、現在の“残り帯域”以下である場合には(ステップS13、YES)、“残り帯域”を更新したうえで(“残り帯域”=“残り帯域”−要求帯域)(ステップS14)、要求元ノードのネットワークへの加入を許可し、これに応じた所定の処理を実行する(ステップS16)。この所定の処理は、例えば送信時間帯域割付情報30への新規登録処理である。これは、状態32が「未割付け」であるレコードのなかで上記要求帯域の数の分のレコードについて、その状態32を「割付け済」とし、その局番33に加入要求局の局番を格納する処理等である。更に、加入要求元ノードに対して、これら割付けを行ったレコードの送信帯域31を、加入許可と共に通知する。これによって、加入要求局は、以後、上記TS帯域内においてこの送信帯域31のタイムスロットにおいて、自己のコモンメモリデータを送信することになる。
【0055】
尚、上記“残り帯域”の初期値は、例えばネットワーク運用周期を決める際に一意に決まる数値であり、パソコン等の設定ツールからあらかじめ全機器(ノード)にダウンロードされているものとする。ネットワーク運用周期は、ノードのアプリケーションとは独立に決定可能なパラメータであるので、後で周期を変更することは容易である。
【0056】
ここで、マスタノードが、上記送信時間帯域割付情報(30、40)を、保持していない場合がある。これは、本来のマスタノードが故障する等した為に、スレーブノードのなかの1台が新たなマスタノード(代替マスタ)となった場合等である。尚、本来のマスタノードが復帰して、その後に再度マスタになった場合でも、代替マスタになったものと言うものとする。
【0057】
代替マスタは、上記のように送信時間帯域割付情報(30、40)を保持していなくても、TS帯域において実際に受信する上記コモンメモリデータなどに基づいて、上記
図3の処理を行うことができる。
【0058】
すなわち、まず、コモンメモリデータには、アプリケーションが使用するデータ以外に、ネットワーク管理のため、送信元局番、送信開始時間や送信データ量(あるいは、送信元ノードに割当てられている帯域(使用するタイムスロット)の識別番号等)などの情報が付加されている(不図示)。尚、送信開始時間や送信データ量は、たとえば上記送信開始時間43やデータ占有量44に相当するデータである。
【0059】
従って、スレーブノードであっても、各ノードから送信されるコモンメモリデータの受信タイミングや、これら付加情報によって、どの局にどのタイムスロットが割り当てられているのか、分かることになる。また、スレーブノードであっても、他のノードが脱落した場合、このノードからのコモンメモリデータを受信しなくなったことを以って、このノードが脱落したものと推定できる。
【0060】
この様に、スレーブノードであっても、ネットワークに加入中のノードや、脱落したノードを認識できる。また、加入中ノードだけでなく脱落したノードに関しても、そのノードに割当てられたタイムスロットを認識できる。従って、スレーブノードが代替マスタになった場合、送信時間帯域割付情報(30、40)を保持していなくても、
図3の処理を実行できる。特に、脱落していたノードが復帰して加入要求を送信してきた場合でも、要求元が脱落ノードであることを認識でき、以前と同じタイムスロットを割当てることができる。
【0061】
しかしながら、例えば任意のノードが脱落中に他のノードが脱落した場合、その後に復帰した任意のノードは、上記脱落した他のノードの存在自体を認識できない。これは、任意のノードが送信時間帯域割付情報(30、40)を保持したマスタノードであっても同様である。これは、脱落によって送信時間帯域割付情報(30、40)が消えてしまう為である。あるいは、脱落しても送信時間帯域割付情報(30、40)が消えない構成とした場合でも、脱落中にタイムスロット割当て状況が変わっている可能性があるので、送信時間帯域割付情報(30、40)は使えない。この為、上記のように受信するコモンメモリデータに基づいて、タイムスロット割当て状況を推測するしかない。上記脱落した他のノードは、コモンメモリデータを送ってこないので、その存在自体を認識できないことになる。尚、上記説明は、上記脱落した他のノードが、未だ復帰していない状況であることを前提とする。
【0062】
例えば上述した状況となった場合、以下に説明する問題が生じる可能性がある。
すなわち、まず、例えばプラント制御システムで適用されるネットワークにおいては、システムを部分保守するためにネットワークから一部の機器(ノード)を一時的に切り離したり、制御アプリケーションを更新するために一時的にノードの電源をOFFする場合がある。この場合、その後、ノードを再接続したり電源ONすることで、ネットワークに再加入させることになる。
【0063】
本手法のようにネットワークへの加入順による動的な送信帯域割付けを行う場合、ネットワークへの再加入時の送信帯域割付けを実施していくうちに送信帯域が断片化し、送信データ総量では加入可能な局が参加不能となるケースが考えられる。これについて、以下、
図5に示す一例を用いて説明する。
【0064】
図5において、縦軸は時間軸tであり、図上上側が古く、下側が新しい。この時間軸上の5つのタイミングにおける各ノードA,B,C,D,Eの加入/脱落状況や、タイムスロット割当て状態を、
図5に示している。
【0065】
尚、ここでは
図2の例に則して、ノードA,C,Eにはそれぞれ1つ、ノードBには2つ、ノードDには3つのタイムスロットが、必要となるものとする。そして、ノードAにはタイムスロット1が割当てられ、ノードBにはタイムスロット2,3が割当てられ、ノードCにはタイムスロット4が割当てられ、ノードDにはタイムスロット5,6,7が割当てられ、ノードDにはタイムスロット8が割当てられているものとする。
【0066】
最も古い状態では、ノードA,B,C,D,E全てが加入済みの状態であり、且つ、正常に機能しているものとする。尚、矩形内に斜線があるノードが、そのときのマスタノードを意味し、従って最も古い状態ではノードAがマスタノードである。また、矩形が点線であるノードは、そのときに脱落中であるものとして管理されているノードである。また、矩形が無いタイムスロットは、空き帯域として管理されているものとする。例えば、図示の最も新しいタイミングでは、タイムスロット3とタイムスロット8が、空き帯域であるとされている。尚、これら管理を行うのはそのときのマスタノードである。
【0067】
上記最も古い状態では、マスタノードAは、送信時間帯域割付情報(30,40)を参照することで、図示の各ノードのタイムスロット割当て状況を把握できる。但し、この状況では、全てのノードがTS帯域で正常にコモンメモリデータ送信を行っているので、上述したことから、各スレーブノードB,C,D,Eも、マスタノードAと略同様に、図示の各ノードのタイムスロット割当て状況を把握できている。また、各スレーブノードB,C,D,Eは、このタイムスロット割当て状況を記録しているものとする。但し、これは、揮発性メモリに記憶されている為、電源OFF等により消去される。これは、送信時間帯域割付情報30も同様であるものとする。
【0068】
そして、任意のときに、上記最も古い状態から2番目に古い状態になったものとする。すなわち、ノードA,B,Eが脱落し、マスタノードが脱落したことからノードCが新たなマスタノード(代替マスタ)になったものとする。
【0069】
代替マスタノードCは、送信時間帯域割付情報30を有さないが、上記の通り、全てのノードA,B,C,D,Eのタイムスロット割当て状況を把握できている。そのうえで、この場合、TS帯域において、ノードDからのコモンメモリデータは受信するが、ノードA,B,Eからのコモンメモリデータは受信しない状況となるので、ノードA,B,Eは脱落中と推測できる。尚、ノードCは、この様な割当て状況の推測結果に基づいて、送信時間帯域割付情報30を新規作成することも可能である。但し、推測結果が必ずしも正しいとは限らない。
【0070】
この状況で、ノードAが復帰したものとする。このとき、ノードAは、マスタノードCに対して上記加入要求を送信することになり、ノードCは、脱落中であったノードAからの加入要求があったものと認識できるので、ノードAに割り当てられていたタイムスロット1を、再び、ノードAに割り当てることができる。これにより、図示の3番目に古い状態となる。
【0071】
この状態で運用中に、ノードA,C,Dは、それぞれ、TS帯域において自局の送信タイミング(割当てタイムスロット)でコモンメモリデータの送信を行うので、ノードAは、ノードC,Dのタイムスロット割当て状況は把握できている。しかしながら、ノードB,Eについては、ノードAは、そもそもその存在自体を、知らないことになる。つまり、スレーブ局は、現在有効なデータを送信している局の情報のみを認識できるものである。
【0072】
尚、この様な脱落→復帰後のノードAは、図示のようにノードA’と記すことで、脱落前と区別して示すものとする。
この様な状況でノードCが脱落して、ノードA’が代替マスタになった場合、図示の4番目に古い状態(下から2番目)となる。
【0073】
この場合、上記の通り、ノードA’は、そもそもノードB,Eの存在自体を、知らない。この為、図示の4番目に古い状態(下から2番目)に示すように、ノードB,Eに割り当てられていたタイムスロットは、空き領域と見做されることになる。この状態で、例えばノードEが復帰して上記加入要求を出した場合、完全に新規のノードとして扱われることになるので、元々ノードEに割付けられていたタイムスロット8ではなく、空き領域の先頭に割付けられることになる。この為、図示の最新の状態(最も下)に示す状態となる。すなわち、元々ノードBに割り当てられていた帯域の一部(タイムスロット2)が、ノードEに割り当てられることになる。
【0074】
この状態で、ノードBが復帰した場合、仮に最大8つのタイムスロットまで割当て可能であるとした場合、2つ分のタイムスロットが残っているが図示のように断片化している為、ノードBに割り当てることが出来ないことになる。このように、ノードBが復帰しようとしても、連続した割付け可能領域がなく、復帰できなくなってしまう。
【0075】
以下、この様な問題を解消する実施例2について説明する。
上述したように、送信時間帯域割付情報(30、40)を持たないスレーブ局は、そのコモンメモリデータを受信した局(有効な局)は認識するが、自局が加入してから一度もそのコモンメモリデータを受信していない局は、その存在自体を認識できない。この為、スレーブ局が新たなマスタ局となった場合に、上述した問題が生じる。
【0076】
そこで、実施例2では、マスタノードは、
図6Aに示すように、自己が保持する送信時間帯域割付情報(30、40)を、例えば定期的に(ステップS21,YES)全てのスレーブノードに対して通知する(ステップS22)。これによって、各スレーブノードも、ほぼ最新の送信時間帯域割付情報(30、40)を保持することになる。送信時間帯域割付情報(30、40)の通知処理は、例えばTC帯域において同期化フレームに付加する形で行えばよいが、この例に限らない。尚、上述したように、割付情報30、割付情報40の両方を保持してもよいし、何れか一方のみを保持する形態であっても構わない。
【0077】
また、マスタノードは、例えば
図6Bの加入処理を実行する。
尚、ここでは、
図4(b)に示す送信時間帯域割付情報40を参照するものとして説明する。
【0078】
図6Bの処理は、任意のスレーブノードからの加入要求を受信する毎に(ステップS31,YES)、ステップS32〜S40の処理を実行するものである。
まず、加入要求に含まれる送信元ノードの局番が、送信時間帯域割付情報40に登録済みか否かを判定する(ステップS32)。もし、未登録である場合には(ステップS32,NO)、新規加入時の処理であるステップS36,S37,S39orS40の処理を実行する。尚、ステップS36,S37,S39orS40の処理は、上記
図3のステップS13、S14,S15orS16の処理と略同様であるので、ここでの説明は省略する。
【0079】
一方、加入要求元ノードが送信時間帯域割付情報40に
登録済みであるならば(ステップS32,YES)、まず、脱落していた局が復帰したのか、設定ミス等により別の機器が同一局番で加入要求してきたのかを判定する(ステップS33)。つまり、送信時間帯域割付情報40における加入要求元ノードに対応するレコード(該当レコード)における上記状態42が、「脱落」である場合には脱落していた局が復帰したものと見做して(ステップS33,NO)、ステップS34の処理へ移行する。一方、上記該当レコードにおける上記状態42が「加入済」である場合には、誤って別の機器が同一局番で加入要求してきたものと見做して(ステップS33,YES)、加入を許可しないものと判定する(ステップS39)。
【0080】
ステップS34では、上記加入要求に含まれる要求タイムスロット数等が、上記該当レコードのデータ占有量44と一致するか否かを判定する。そして、一致した場合すなわち要求する帯域量に変化がない場合には(ステップS34,YES)、脱落局の復帰処理を行う(ステップS38)。つまり、加入要求局に対して、以前と同じタイムスロットを割り当てる。すなわち、上記該当レコードにおける上記送信開始時間43とデータ占有量44によって示されるタイムスロットを割り当てる。更に、該当レコードの状態42を、「脱落」から「加入済」へと変更する。
【0081】
この様に、ステップS33とS34とによって、脱落していた局が復帰して且つ以前と同じ帯域量を要求していると判定した場合に限り、元々割り当てていた帯域(タイムスロット)を再度割り当てることになる。
【0082】
一方、要求される送信帯域量に変化がある場合には(ステップS34,NO)、加入は許可しない(ステップS39)。これは、例えば、全く別の新規加入局に対して、誤って脱落中の局と同じ局番が設定される場合等を想定した処理である。つまり、新規加入局に関して、偶然、脱落局と同じ送信帯域量となっていない限り、ステップS34の判定がNOとなることで、誤って脱落局のタイムスロットが割当てられてしまう事態を防止できる。
【0083】
あるいは、故障等で機器交換する場合、通常、故障機器と入れ替える新しい機器(交換機器と呼ぶ)には、故障機器と同じ局番が設定される共に、故障機器と同じアプリケーションがインストールされる。故障機器と同じアプリケーションであるので、“要求される送信帯域量”も故障機器と同じとなる。よって、この場合には、上記ステップS34の判定はYESとなり、交換機器に対して、故障機器に割当てられていたタイムスロットと同じタイムスロットが割当てられることになる。つまり、交換機器が故障機器の後を正常に引き継ぐことが出来ることになる。
【0084】
尚、上記の例では、局番を用いたが、この例に限らない。例えば、EthernetであればMACアドレス等、機器個体を一意に識別できる番号(機器識別番号と呼ぶ)を用いても構わない。但し、この場合、上記交換機器と故障機器とでは、当然、機器識別番号が異なるので、交換機器が故障機器の後を正常に引き継がなくなる可能性がある。
【0085】
上述した実施例2の処理によれば、上記
図5に示すケースにおいて、
図7に示すようなタイムスロット割当てが行われることになる。
図7も、
図5と同様に、図上上側から古い順に、5つのタイミングにおけるタイムスロット割当て状況を示している。そして、最も古い、2番目に古い、及び3番目に古いタイミングに関しては、
図5と同様であるので、説明は省略する。
【0086】
そして、4番目に古いタイミング(下から2番目)では、
図5と同様にマスタノードCが脱落したことでノードA’が新たなマスタノードとなるが、
図5とは異なり、ノードA’は、脱落中であるノードB,Eの存在を認識出来ており、以前にノードB,Eに割り当てていたタイムスロットも認識出来ている。これは、上記の通り、スレーブノードであったノードA’も、送信時間帯域割付情報40を保持しているからである。このとき、ノードB,Eに関する情報も、送信時間帯域割付情報40に登録されているはずである。勿論、その状態42は「脱落」となっているはずである。
【0087】
尚、上記のことは、ノードAが、復帰後に最低1回はマスタノードCから上記ステップS22の処理によって送信時間帯域割付情報40が通知されていることを前提とする。
これより、この状態で上記
図5と同様にノードEが復帰して加入要求を出すと、この加入要求を受信したノードA’が
図6Bの処理を実行したとき、上記ステップS32の判定はYESとなり、更に上記ステップS33の判定はNOとなることになる。そして、ノードEが以前と同じタイムスロット数(=‘1’)を要求したならば、ステップS34の判定がYESとなるので、上記ステップS38の処理が実行されることになる。
【0088】
これより、
図7の最新のタイミング(最も下)に示すように、ノードA’は、ノードEに対して、以前に割り当てた帯域(タイムスロット8)を割り当てることになる。つまり、
図5のように、以前にノードBに割り当てた帯域の一部(タイムスロット2)を、ノードEに割り当ててしまうようなことはない。これより、
図7には示していないが、その後に、復帰したノードBから加入要求があった場合、ノードA’は、上記
図6Bの処理を実行することで、ノードBに対して、以前に割り当てた帯域(タイムスロット2,3)を割り当てることができる。
【0089】
ここで、上述したように、本手法では、マスタノードが脱落した場合に、スレーブノードの何れかが新たなマスタノード(代替マスタ)となる。これについて、以下、詳細に説明する。
【0090】
各ノードは、それぞれ、立ち上げ時に自ノードをマスタノードとするかスレーブノードとするかを決定する処理を行う。この処理自体は、1つのアプリケーション処理であるが、マスタとなる場合の処理の流れを
図8に示し、スレーブとなる場合の処理の流れを
図9に示すものとする。
【0091】
まず、
図8、
図9とも、開始直後の処理は同じであり、状況に応じて処理が分岐することになる。すなわち、
図8、
図9とも、まずリソース初期化処理を行う(ステップS41、S51)。リソース初期化処理自体は、ここでは関係ないので、説明は省略する。
図8、
図9とも、続いて、回線監視処理を行う(ステップS42,S52)。この処理は、例えば、予め所定時間がセットされている監視タイマを起動した後、ネットワークを介してコモンメモリデータまたはTCフレーム(同期化フレーム)またはイニシャルTCを受信するか否かを監視する処理である。
【0092】
もし、監視タイマがタイマアップする前に他ノードからのコモンメモリデータまたはTCフレームを受信した場合には、自己をスレーブ局とする処理すなわち
図9のステップS53、S54、S55の処理を実行することになる。
【0093】
更に、監視タイマがタイマアップする前に他ノードからのイニシャルTCを受信し、且つ、その送信元ノードが自局よりも優先度が高い場合にも、自己をスレーブ局とする処理すなわち
図9のステップS53、S54、S55の処理を実行することになる。尚、イニシャルTCや優先度については後述する。
【0094】
一方、コモンメモリデータとTCフレーム(同期化フレーム)の何れも受信せず、且つ、自ノードより優先度が高い局からのイニシャルTCも受信しないまま、監視タイマがタイマアップした場合には、自己をマスタ局とする為の処理を実行する。すなわち、
図8のステップS43、S44の処理を実行する。つまり、自局を一旦仮のマスタとし、その後、状況次第で自局をマスタとして確定させるか、スレーブ局とするかを決定する。よって、この処理中に、上記自己をスレーブ局とする処理に移行する場合もある。
【0095】
このように、機器立上り時にネットワークを監視し、基本的には他局が既にマスタとなっていない場合にまず仮のマスタとして動作する。あるいは、他局が仮のマスタとして動作しているが自局よりも優先度が低い場合にも、仮のマスタとして動作する。他局が既にマスタとなっている場合、このマスタ局がTCフレームを周期Tで繰り返し送信しているはずである。また、他局が既にマスタとなっている場合、このマスタ局や他のスレーブ局が、コモンメモリデータ送信を繰り返し実行しているはずである。
【0096】
これより、上記の通り、コモンメモリデータまたはTCフレームを受信した場合には、他局が既にマスタとなっていると見做して、自局をスレーブとする処理を実行する。
一方、上記のように自局を仮マスタとした場合には、仮マスタとしての所定の処理を実行する(ステップS43)。すなわち、例えば所定周期で上記イニシャルTC(ITC)を所定回数(例えば3回)まで繰り返し送信する。イニシャルTCには、例えば、それがITCであることを示す情報と、送信元ノードの局番などが含まれる。上記優先度は、ここでは、局番が小さいほど高いものとする。これより、このITCを受信した他局は、ITCの局番と、自局の局番とを比較することで、優先度が自局よりも高いか低いかを判定する。
【0097】
ステップS43の処理中にTCフレームまたは自局よりも優先度が高い局からのITCを受信した場合には、自局をスレーブとする処理へ移行する。一方、これらを受信することなくITCを上記所定回数送信した場合には、自局がマスタであるものと確定させる。そして、マスタとしての動作を行う。すなわち、例えば上記TCフレームを定周期Tで繰り返し送信する処理や、他局からの加入要求に対して上述した
図3や
図6Bの処理を実行する。
【0098】
一方、上記自己をスレーブ局とする処理(
図9のステップS53、S54、S55の処理)については、まず、上記のようにTCフレーム受信等によって既に他局がマスタノードとなっていると見做せる場合には、例えばTCフレームの送信元ノードをマスタノードと見做して(ステップS53)、当該マスタノードに対して上記加入要求を送信して、スレーブ運用確定待ちの状態となる(ステップS54)。
【0099】
あるいは、上記自局よりも優先度が高いITCを、所定回数(例えば3回)連続して受信した場合にも、送信元は上記
図8の処理によりマスタ運用開始するはずであるので、当該マスタノードに対して上記加入要求を送信して、スレーブ運用確定待ちの状態となる(ステップS54)。
【0100】
そして、スレーブ運用確定待ちの状態において、マスタノードから加入許可が返信されてきたら、自局をスレーブとして運用開始する。その際、例えばマスタから割り当てられたタイムスロットに対応する時間を、センドタイマにセットする(ステップS55)。尚、その際、先願(WO 2013121568 A1)と同様にして、マスタから通知される伝送遅延時間に基づいて、自己のサイクルタイマをマスタのサイクルタイマに同期させるようにしてもよい。尚、センドタイマ、サイクルタイマについては、先願と同様であってよく、ここでは特に説明しない。
【0101】
ここで、
図10に、マスタ交代に関わる処理を示す。
各スレーブノードは、運用中
(ステップS61)に任意のときにマスタの脱落を検出した場合、まず、コモンメモリデータ送信の際に問合せビットをONして送信する(ステップS62)。そして、仮マスタとして動作する(ステップS63)。
【0102】
ここで、ステップS61の処理に関しては、例えば上記TCフレームを所定回数以上連続して受信しなかった場合に、マスタ脱落と判定する。また、特に図示しないが、コモンメモリデータフレームには上記問合せビットが含まれており、通常はビットOFFして送信している。また、各ノードは、他局からのコモンメモリデータを受信する毎に、その問合せビットのON/OFFをチェックしている。
【0103】
また、上記マスタの脱落を検出した後に上記コモンメモリデータ送信タイミングとなる前に、他のノードからTCフレームが送信されてきた場合、あるいは自ノードよりも優先度が高い他のノードからITCフレームが送信されてきた場合には、上記ステップS62の処理を行うことなく、マスタ切り替え待ちの状態となる(ステップS64)。
【0104】
また、上記ステップS63の処理は、上記ステップS43の処理と同じであってよい。すなわち、ITCフレームを所定回数(例えば3回)送信出来たら、自ノードを代替マスタに確定して、マスタノードとしての運用を開始する(ステップS65)。
【0105】
但し、ITCフレームを所定回数送信する前に、他のノードからTCフレームが送信されてきた場合、あるいは自ノードよりも優先度が高い他のノードからITCフレームが送信されてきた場合には、上記マスタ切り替え待ちの状態となる(ステップS64)。
【0106】
そして、上記マスタ切り替え待ちの状態において、TCフレームを受信した場合には、自ノード以外のノードが代替マスタになったことになるので、再びスレーブノートとしての運用に戻る。
【0107】
例えば上述した処理によって、マスタ/スレーブが動的に決定され、またマスタの脱落の際に代替マスタが動的に決定される。
ここで、
図11に各ノードのハードウェア構成を示す。
【0108】
尚、本例のマスタノードは、スレーブノードに比べて、タイムスロット割付けの機能と周期Tの同期化の為の機能等が加わっているが、これらの機能はソフトウェアにて構成可能であるので、マスタノードとスレーブノードとは同じハードウェア構成で実現可能である。よって、
図11は、マスタノードとスレーブノードに共通のハードウェア構成図と見做してよい。
【0109】
図11に示す例では、各ノードは、CPU51、ネットワークI/F(インタフェース)52、フラッシュメモリ(Flash MEM)53、SRAM54、SDRAM55、局番SW(スイッチ)56、USB I/F(インタフェース)57等を備える。尚、SRAMはStatic Random Access Memoryの略であり、SDRAMはSynchronous Dynamic Random Access Memoryの略であり、USBはUniversal Serial Busの略である。
【0110】
ネットワークI/F52は、ネットワークに接続して、他のノードとの通信を行う為のインタフェースである。USB I/F57は、不図示のパソコンなどからのネットワーク設定データのダウンロードのためのインタフェースである。局番SW56は、作業員等が任意の局番を手作業で設定する為の構成である。設定された局番は、SRAM54等に記憶され、上記のように他ノードへ送信するフレームには送信元ノードの局番が含まれる。
【0111】
ノードの上述した各種処理機能を実現させる為のソフトウェア(アプリケーションプログラム)は、予めフラッシュメモリ(Flash MEM)53に格納されている。CPU51が、このソフトウェアを実行することで、上述した各種処理機能(例えば
図3、
図6A、
図6B、
図8、
図9、
図10などに示す処理)や後述する
図12、
図13に示す処理機能等が実現される。尚、その際、例えば処理の高速化のためSDRAM55などにブートされ実行される構成であってもよい。
【0112】
尚、例えば、上記送信データ量(必要とするタイムスロット数)などのパラメータは、パソコン(不図示)上の設定ツールなどを用いてUSB I/F57を介して入力されて、フラッシュメモリ(Flash MEM)53に格納される。
【0113】
また、尚、上記の通り、各ノードは、マスタとスレーブのどちらにも成り得ると共に、予めどちらかに決まっているわけではないので、上記ソフトウェアは、マスタ用とスレーブ用が存在する。当然、自己をマスタとした場合には、マスタ用のソフトウェアを実行することになる。
【0114】
また、
図12には、ノードの基本機能の機能ブロック図を示す。
図示の例では、ノードは、ネットワーク管理部61、システム管理部62、ローダコマンドサーバ部63、ストレージ管理部64、通信I/F部65、SW監視部66等の各種機能部を有する。
【0115】
ネットワーク管理部61は、ネットワークを介した他のノードとのデータの送受信、ネットワーク状態管理等を実行制御する。ローダコマンドサーバ部63は、不図示のパソコン等の上位機器との通信を管理する。尚、上位機器との通信は、例えば通信I/F部65を介して行われる。ストレージ管理部64は、ソフトウェアのブート、各種設定値の格納、読み出しなどを行う。これらの各種機能を統括的に管理し、ノード全体を管理制御するのが、システム管理部62である。
【0116】
また、SW監視部66は、上記局番SW56が操作されると、当該操作で設定された局番を、例えばシステム管理部62に通知する。これによって、システム管理部62は、自ノードの局番を認識・記憶する。
【0117】
尚、
図12には、主にネットワーク動作に関連する機能を示しているのであり、ノードの機能は図示の機能に限らず、これら以外の機能が含まれることもある。
また、
図13には、本手法に係わるノードの機能ブロック図を示す。
【0118】
本手法に係わるネットワーク通信システムは、各々が共有メモリを有する複数のノードから成り、各ノードが、所定の通信サイクルでネットワークを介して自ノードの共有メモリのデータを相互に送受信することで、共有メモリの格納データを同一とするシステムである。そして、各ノードのうち1台がマスタノード70となり、他がスレーブノード80となる。
【0119】
上記各スレーブノード80は、上記ネットワーク通信システムへの加入/再加入の際に、上記マスタノード70に対して、要求帯域量を含む加入要求を送信する加入要求部81を有する。
【0120】
上記マスタノード70は、上記加入要求に応じて、各スレーブノード80に対して、上記通信サイクル内における任意の送信帯域を割当てる帯域割当管理部71、該各スレーブノードへの送信帯域割当結果が登録される割当管理テーブルを記憶する割当管理テーブル記憶部72等を有する。そして、帯域割当管理部71は、割当管理テーブルを参照して、上記送信帯域の割当てを行う。これは、例えば、その時点での空き帯域の中から割当てる帯域を決定する。つまり、空き帯域の一部または全部を割当てる。また、例えば、基本的には、空き領域の先頭から順次割当てる。換言すれば、間が空かないようにして詰めて割当てる。
【0121】
また、帯域割当管理部71は、例えば、送信帯域の割当てを行う毎に空き帯域量を更新し、上記要求帯域量が空き帯域量を超える場合には、加入を許可しない。
また、例えば、上記割当管理テーブル記憶部72には、登録されている各ノードの現在の状況も記憶される。そして、マスタノード70は、例えば、上記割当管理テーブルに登録されているノードのなかで任意のノードが脱落したことを検出すると、該ノードに係わる上記現在の状態を脱落中とする状態監視部73を更に有する。
【0122】
また、例えば、上記帯域割当管理部71は、上記加入要求の送信元ノードが、上記割当管理テーブルに登録されており且つ上記現在の状態が脱落中である場合、該ノードが脱落後に復帰したものと判定する。
【0123】
そして、帯域割当管理部71は、脱落後に復帰したものと判定したノードからの加入要求に対しては、割当管理テーブルに登録されている、該ノードに割当て済みの送信帯域を再度割当てる。
【0124】
あるいは、帯域割当管理部71は、脱落後に復帰したものと判定したノードからの加入要求の要求帯域量が、割当管理テーブルに登録されている、該ノードに割当て済みの送信帯域の帯域量と同じである場合には、該ノードに対しては該割当て済みの送信帯域を再度割当てる。
【0125】
また、例えば、上記マスタノードは、上記割当管理テーブルを定期的に各スレーブノードに送信して記憶させる割当管理情報通知部74を更に有する。そして、例えば、上記マスタノードの脱落に応じて新たなマスタノードになったスレーブノードは、上記割当管理情報通知部74によって自ノードに記憶していた上記割当管理テーブルを用いて、上記送信帯域の割当てを行う。
【0126】
また、例えば、上記各スレーブノードは、更に、マスタ監視部82、代替マスタ化部83等を有するものであってもよい。
マスタ監視部82は、マスタノードが脱落したか否かを判定する。これは、例えば、上記のように、TCフレーム(同期化フレーム)を受信しなくなったことをもって、マスタノードが脱落したと判定する。
【0127】
代替マスタ化部83は、該マスタ監視部82がマスタノードが脱落したと判定した場合、状況に応じて自ノードを新たな上記マスタノード(代替マスタ)とする場合がある。これは、例えば、代替マスタ化確認用フレームを所定回数送信できた場合に自ノードを、上記代替マスタとする。一方、所定回数に達する前に自ノードより優先度が高いスレーブノードからの上記代替マスタ化確認用フレームを受信した場合には代替マスタ化確認用フレームの送信を中止する。つまり、この場合には自ノードは代替マスタとはならない。
【0128】
そして、任意のスレーブノードは、自ノードが新たな上記マスタノードとなった場合、その上記帯域割当管理部71は、旧マスタノードの上記割当管理情報通知部74によって自ノードに記憶していた上記割当管理テーブルを用いて、上記送信帯域の割当てを行う。
【0129】
また、例えば、上記帯域割当管理部71は、上記加入要求と上記割当管理テーブルとに基づいて、既に登録済みのノードが脱落後に復帰したものと判定した場合には、脱落前と同じ送信帯域を割当てる
。
【0130】
また、例えば、上記通信サイクルには、上記各ノードが上記共有メモリデータを相互に送受信する帯域であるコモンメモリ帯域が含まれており、該コモンメモリ帯域の長さは、予め固定的に決められている。そして、上記送信帯域は、該コモンメモリ帯域を分割する形で割当てられるものである。
【0131】
以上説明したように、本手法によれば、時分割帯域を用いたコモンメモリ型ネットワークにおける送信帯域の効率的活用を実現できる。例えば、ネットワークへの加入順による動的な送信帯域割付けを行うことで、送信帯域の適切な割当てを実現できる。更に、ネットワーク構成機器(ノード)の脱落、復旧に対応することが可能となる。例えば、マスタノードが保持する各ノードの帯域割当情報を、定期的に各ノードに通知して共有させることにより、マスタノードが脱落した場合でも、代替マスタが過去に加入実績のある局の情報を引き継ぐことができ、以って脱落復旧局と新規加入局とを区別できると共に脱落復旧局に割当て済みの帯域を認識できる。これによって、特に脱落復旧局に関して、帯域の割付けを適切に行うことができ、脱落復旧を正しく行えるようになる。