(57)【特許請求の範囲】
【請求項１】
ネットワークに接続するノードの一部または全部が、稼働系と待機系とに二重化されたシステムであってＦＡリンクプロトコルを採用したネットワーク制御システムにおける該各二重化ノードの稼働／待機切換方法であって、
待機系、稼働系の状態定義に加えて、待機系が稼動系に遷移する過程の非定常状態として稼動準備トークン待ち状態と稼動準備トークン保持状態とが規定されており、
前記各ノードがトークン監視タイマを有し、任意のノードが一定時間以上トークンを送信しないことをその次ノードが前記トークン監視タイマのタイムアップにより検出した場合、該次ノードがトークンの再発行を行い、
前記一定時間以上トークンを送信しなかった任意のノードの待機系は、前記次ノードによって再発行されたトークンを観測した時点で前記稼動準備トークン待ち状態に遷移し、その後、再度自ノード宛のトークンを受信すると前記稼動準備トークン保持状態に遷移すると共に前記トークン監視タイマより短い時間に設定してある稼動／待機切換タイマを用いて、前記稼動準備トークン保持状態から稼動系に遷移するか待機系に遷移するかを決定することを特徴とする稼働／待機切換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ネットワーク制御システムに係わり、特にネットワークを構成するノードが稼働系、待機系に二重化された場合の稼働／待機の切換または決定方法に関する。
【０００２】
【従来の技術、及び発明が解決しようとする課題】
近年、制御システムの分野において、制御用ＬＡＮに関して業界で仕様を統一することを目的として、（財）製造科学技術センター（略称：ＭＳＴＣ）ＦＡコントロールネットワーク専門委員会により規定されたプロトコル（「ＦＡリンクプロトコル」）がある。
【０００３】
ＦＡリンクプロトコルの仕様書は公開されているので、ここでは概略的に説明する。
まず、従来は、プラント制御システム等のような制御用のネットワーク（ネットワーク制御システムと呼ぶものとする）は、各社が独自の方式を採用していた為、他者がこのネットワークを手直しするのは不可能、または多大な困難があった。また、従来は制御のために特別なネットワークの構築が必要であった。
【０００４】
上記ＦＡリンクプロトコルは、上記問題を解決する為に、ネットワークを、イーサネット等の汎用ＬＡＮで実現できるようにしている。すなわち、従来、イーサネット等の汎用ＬＡＮは、データの衝突等が起こるため、信頼性が低く、制御用として用いるには不適であったが、このＦＡリンクプロトコルでは、信頼性を高め、汎用ＬＡＮを制御用として利用できるようにしており、例えば以下の特徴を有する。
（１）マスターレストークン方式を採用し、一部のノードが故障してもネットワークが停止することはない。
（２）一定時間トークンが送信されない場合、次ノードがトークンを送信する。
（３）他ノードの動作状態を認識できる。等
そして、▲１▼周期的なデータの伝送を行うサイクリック伝送、▲２▼非周期的なデータの伝送を行うメッセージ伝送、の２つのデータ通信方法をサポートしている。
尚、サイクリック伝送とは、ノード間に発生する周期的なデータ交換をサポートする機能である。
【０００５】
トークンの流れは、基本的には、予め各ノードに割り当てられているノード番号によって決まる。例えば、ノード番号が若いほうから順番に（昇順で）トークンのローテーションを行う。この場合、最大のノード番号のノードは、最小のノード番号のノードにトークンを渡す。
【０００６】
また、上記（２）の一定時間トークンが送信されないことを検出する為の構成として、各ノードは「トークン監視タイマ」を備える。このトークン監視タイマは、ネットワーク上に最後にトークンが流れてからの時間を測定する。そして、トークン監視タイマがアップしたとき（タイムアップ）、次ノードがトークンの再発行を行う。
【０００７】
ここで、情報処理分野では、デュープレックスシステム等のように、装置（ノード）を二重化（稼働系／待機系）することで、システムの信頼性を高めることが行われている。
【０００８】
上記ネットワーク制御システムにおいても、このようなノードの二重化を行うことにより、システムの信頼性を高めることが考えられるが、待機系から稼働系への切換え時、あるいは待機系／稼働系が未だ決まっていない不安定な状況において、安定して速やかに更に適切な形で上記二重化されたノードの何れか一方を稼働系、他方を待機系に決定できるようにすることが望まれる。
【０００９】
また、このような処理を行うプログラムは、複雑になっていた。
すなわち、従来は、待機系の時に「稼働系の状態を示す変数」や「稼働系の異常状態が継続している回数を示す変数」等の変数を用意しておいて、稼働系に遷移する際にはこれらの変数を参照し、それらの値によって分岐しその状態にあった処理を行う、というのが一般的な手法であった。しかし、この手法では１つの状態において複数の変数を参照して処理を行うため、分岐の多い複雑な構造になりやすく、また変数の更新等の処理も煩雑になりやすかった。また、定常状態（稼働系、待機系）の定義しかなく、非定常状態を明確に定義していなかったので、例えば自己の状態が、待機系であると認識していても、今まさに待機系から稼働系に遷移する途中（すなわち、非定常状態）にあるかもしれないので、定常状態であっても毎回「今が非定常状態かどうか」という判断処理をすることになり、結局各状態におけるプログラム記述量が多くなってしまっていた。よって、プログラムを、簡単化することが望まれる。
【００１０】
本発明の課題は、ノードが二重化されたネットワーク制御システムにおいて、稼働系／待機系の切換え、またはその決定を、安定して速やかに行え、またプログラムの構成が簡単となる稼働／待機切換方法、稼働／待機決定方法を提供することである。
【００１１】
【課題を解決するための手段】
本発明による稼働／待機切換方法は、ネットワークに接続するノードの一部または全部が、稼働系と待機系とに二重化されたシステムであってＦＡリンクプロトコルを採用したネットワーク制御システムにおける該各二重化ノードの稼働／待機切換方法であって、待機系、稼働系の状態定義に加えて、待機系が稼動系に遷移する過程の非定常状態として稼動準備トークン待ち状態と稼動準備トークン保持状態とが規定されており、前記各ノードがトークン監視タイマを有し、任意のノードが一定時間以上トークンを送信しないことをその次ノードが前記トークン監視タイマのタイムアップにより検出した場合、該次ノードがトークンの再発行を行い、前記一定時間以上トークンを送信しなかった任意のノードの待機系は、前記次ノードによって再発行されたトークンを観測した時点で前記稼動準備トークン待ち状態に遷移し、その後、再度自ノード宛のトークンを受信すると前記稼動準備トークン保持状態に遷移すると共に前記トークン監視タイマより短い時間に設定してある稼動／待機切換タイマを用いて、前記稼動準備トークン保持状態から稼動系に遷移するか待機系に遷移するかを決定する。
【００１２】
このように、非定常状態を明確に状態定義（中間状態）しておくことにより、例えば待機系から稼動系に切換えるか否か不明な不安定な非定常状態では、遷移するか否かがはっきりするまで一旦この中間状態に遷移しておくことができるので、安定した切換えが行えるようになる。また、非定常状態のときは明確に中間状態に遷移するので、定常状態のときに「今が非定常状態であるか」を確認する必要はなくなる。
【００１４】
このように、本発明では、主に、ＦＡリンクプロトコルを採用したネットワーク制御システムを対象としている。
また、待機系から稼働系へ切換えるか否かは、トークン監視タイマより短い時間に設定してある稼動／待機切換タイマを用いて決定しているので、誤って再度次ノードからトークン再発行されることなく高速に行うことができる。また、上記中間状態を定義していることと合わせて、プログラムが簡明になる効果が大きくなる。
【００２１】
【発明の実施の形態】
本発明は、ネットワーク制御システムにおいて、ネットワークを構成するノードを二重化する構成とし、この構成において例えば待機系から稼働系に切り替る際や、ノードの起動時や、ノードの新規追加、あるノードを途中で二重化する場合等のように、（不安定な）非定常状態となる場合において、安定して速やかに適切な形で定常状態に移ることができるようにするものである。
【００２２】
本発明では、非定常状態を、稼働準備状態（中間状態）として明確に定義し、例えば待機系から稼働系に切り替る際に一旦この中間状態に遷移させることにより、安定した切換えが行える。更に、定常状態と非定常状態（遷移過程）とを明確に分けることができるので、各状態ではそれに応じた記述だけで充分となり、プログラムの構成が簡単となるようにできる。
【００２３】
以下、図面を参照して、本発明の実施の形態を説明する。
尚、上記ＦＡリンクプロトコルを採用したネットワーク制御システムを、ＦＡコントロールネットワークと呼ぶものとする。
【００２４】
図１は、本実施の形態に係わるＦＡコントロールネットワークのシステム構成の一例を示す図である。尚、同図では生産システムを一例として示すが、これに限るものではない。本発明の対象は制御システム全般である。
【００２５】
このＦＡコントロールネットワーク１０は、生産システムにおけるロボットコントローラ（ＲＣ）１１、プログラマブルコントローラ（ＰＣ）１２、数値制御装置（ＮＣ）１３等の制御装置や制御用パソコン１４等（以下、これらを、区別せずに“ノード”という）を、Ethernetで接続して、相互にデータ交換を行うことで制御が行われるネットワーク制御システムである。このＦＡコントロールネットワーク１０は、更に、ゲートウェイなどを介して、ＥＷＳ、パソコン、サーバ等より成る情報ネットワークに接続することもできるし、更に外部のネットワークに接続することも可能である。
【００２６】
上記ＦＡコントロールネットワーク１０を構成する各“ノード”は、トークンパッシング方式（ＦＡリンクプロトコル採用）の通信制御を行う機能を備え（イーサネット上で普及しているＵＤＰ／ＩＰを用いて、基本的なデータ伝達手段を実現する）、これにより上記データ交換等が行われる。
【００２７】
本例では、上記各“ノード”を二重化する。すなわち、稼働系と待機系とが存在する。但し、全てのノードが二重化されるとは限らない。また、二重化するのは、各機器全体である。例えば、上記ＰＣを二重化する場合は、ネットワークに、同じノード番号を持つ２台のＰＣが繋がっていることになる。
【００２８】
図２は、上記ノードの概略構成図である。
各ノード２１は、バッファ（受信バッファ、送信バッファ）２２、メモリ２３、処理部２４、トークン監視タイマ２５、稼働／待機切換タイマ２６等を備える（説明上必要な構成を示して、他は省略してある）。バッファ２２、メモリ２３、トークン監視タイマ２５については、特に説明しない（詳しくは、上記ＦＡリンクプロトコル仕様書参照）。但し、メモリ２３には、後述する“受信回数”やタイマ２６の基本設定値を記憶するようにしてもよい。処理部２４は、以下に説明する各種処理を実行する。稼働／待機切換タイマ２６については、後に詳細に説明する。
【００２９】
図３（ａ）〜（ｃ）は、上記ノードを二重化した状態を簡略化して示すと共に稼働系に障害発生した際の切換えとトークン送出の様子を示す図である。
同図では、上記図１におけるＰＣ、ＲＣ、ＮＣ、パソコン等の各“ノード”を、特に区別せずに且つ簡略化して示す。また、ここでは全てのノードが二重化されているものとし、稼働系のノードは実線で、待機系のノードは点線で示す。
【００３０】
各ノードに割り当てられたノード番号は、＃１、＃２、＃３であり、また、二重化については、系統Ａ、系統Ｂがあるものとし、図示の例では系統Ａのノードが稼働側になっているものとする。これより、以下の説明では、例えばノード番号＃２の２つのノードは、系統Ａのノードは２Ａ、系統Ｂのノードは２Ｂと記して説明するが、ノード番号が＃２Ａ、＃２Ｂとなっているわけではなく、両方とも、ノード番号は＃２である（すなわち、稼働系のノードと待機系のノードは、同一のノード番号である）。
【００３１】
まず、図３（ａ）には、障害発生前の様子を示す。
この状態では、トークンは、図中、矢印で示すように、ノード１Ａ→ノード２Ａ→ノード３Ａ・・・ノード１Ａ→・・・の順に周回している。待機系のノード１Ｂ、２Ｂ、３Ｂは、このトークンの受け渡しを監視しており、正常にトークンの受け渡しが行われている場合には自己が待機系のままで良いものと判断する。
【００３２】
次に、図３（ｂ）において、例えばノード２Ａに障害が発生した等の何等かの原因によって、ノード１Ａからノード２Ａにトークンが渡された後、ノード２Ａからトークンが送信されなかった例を示す。この場合、次ノードであるノード３Ａは、自己が備えるトークン監視タイマ２５がタイムアップすると、図示のようにトークンの再発行を行う。また、このとき、障害発生したノード２の待機系側のノード２Ｂは、非定常状態（中間状態）に遷移している（これについては、図４で説明する）。
【００３３】
そして、再びトークンが周回してきて、まず、ノード１Ａが、周回してきたトークンを受け取って、これをノード２宛に送信すると（上記の通り、ノード２Ａ、２Ｂは両方ともノード番号は＃２であるので、ノード１Ａは両者を区別してトークンを渡しているのではない）、ノード２Ｂは、所定時間経過してもノード２Ａがトークン送信しない場合には、上記中間状態から稼働系に遷移して、トークンを送信する（詳しくは図４で説明する）。
【００３４】
図４は、ノードの状態遷移図である。
定常状態では、稼動系は「稼動系トークン待ち」３１の状態と「稼動系トークン保持」３２の状態の間で、待機系は「待機系トークン待ち」３３の状態と「待機系トークン保持」３４の状態の間で、各々状態遷移をしている。
【００３５】
更に詳しくは、稼働系は、「稼動系トークン待ち」３１の状態でトークンを受信すると、「稼動系トークン保持」３２の状態へ遷移し、この状態でトークンを送信すると、「稼動系トークン待ち」３１の状態に戻る。
【００３６】
待機系は、「待機系トークン待ち」３３の状態で稼働系がトークンを受信したことを検知すると、「待機系トークン保持」３４の状態へ遷移し、この状態で稼働系がトークンを送信したことを検知すると、「待機系トークン待ち」３３の状態に戻る。
【００３７】
そして、本例では、更に、非定常状態（中間状態）として「稼働準備トークン待ち」３５の状態と「稼働準備トークン保持」３６の状態とが規定されている。
この中間状態に係わる状態遷移については、後に説明する。
【００３８】
以上の状態定義を用いて、各ノード２１は（特に、処理部２４は）、以下に説明する稼働系への切換え処理や、稼働系／待機系の決定処理を実行する。
まず、稼働系への切換え処理について、図５を参照しながら説明する。
【００３９】
稼動系で何らかの障害が発生したとする（図３の例ではノード２Ａ；以下、括弧内は図３の例に対応したもの）。
上記の通り、待機系（ノード２Ｂ）は稼働系が自ノード宛のトークンを受信した時に「待機系トークン保持」３４の状態になるが、稼動系（ノード２Ａ）は、障害発生しているので、トークンが送信されないまま時間が経過した結果、上記次ノードにおいてトークン監視タイマ２５がアップする（タイムアップ）。この為、次ノード（ノード３Ａ）がトークンの再発行を行う。
【００４０】
待機系（ノード２Ｂ）はこのトークンを観測した時点で（ステップＳ１）、「稼動準備トークン待ち」３５の状態に遷移する（ステップＳ２）。その後、再度自ノード宛のトークンを受信すると（ステップＳ３，ＹＥＳ）、「稼動準備トークン保持」３６の状態に遷移する（ステップＳ４）。この時に、稼動／待機切換タイマ２６をスタートさせる（ステップＳ５）。このタイマ２６の設定時間は、トークン監視時間より短くなっており、このタイマ２６がアップした時には（ステップＳ６，ＹＥＳ）稼動系が停止したものとみなし、自分（ノード２Ｂ）がトークンを送信して（ステップＳ７）、「稼動系トークン待ち」３１に遷移する（ステップＳ８）。もし稼動／待機切換タイマ２６がアップする以前に稼動系がトークンを送信した場合には（例えば稼働系が復旧した場合等）（ステップＳ９，ＹＥＳ）、「待機系トークン待ち」３３に遷移する（ステップＳ１０）。
【００４１】
このように、本例では、稼働系がトークン送信しなかった場合（すなわち、何等かの異常が発生した可能性がある場合）、直ちに待機系が稼働系に切り替るのではなく、一旦、中間状態（非定常状態）に遷移して、再度トークンを受信したときに、稼動／待機切換タイマ２６をスタートさせて、しばらく待ってもトークン送信されない場合に、待機系へと遷移する（稼働系が、故障ではなく、一時的な何等かの理由で１回だけトークン送信しなかったというような事態を考慮している）。尚、稼動／待機切換タイマ２６の時間を、トークン監視時間より短く設定するのは、当然、再度次ノードがトークン送信してしまう事態を防ぐためである。
【００４２】
次に、待機系／稼働系の決定方法について説明する。
すなわち、上記二重化ノードを構成する２つの系（Ａ系、Ｂ系）の何れか一方が稼働系、他方が待機系となるが、未だ決まっていない状況が発生するので、そのときの決定方法について、以下に説明する。
【００４３】
待機系／稼働系を決定する際にも、上記稼動／待機切換タイマ２６を用いる。
また、稼動系と待機系の両方が加入している状態で動作している間は、稼動系のノードはトークンの受信回数をメモリ２３等に記憶しておく（この回数はある規程の回数以上では増加させないものとする）。
【００４４】
図６は、上記待機系／稼働系を決定する際の稼動／待機切換タイマの動作例を表わす図である。
同図において、右側に向かう矢印は、時間の流れを表わす。
【００４５】
稼働／待機切換タイマ２６の設定時間は、トークン監視時間より短く設定する。
また、稼動／待機切換タイマ２６のタイムアップ時間の基本設定値は、予め、Ａ系とＢ系とで差がつくように設定されており、更に実際の稼動／待機切換タイマ２６のタイムアップ時間は、上記トークンの受信回数に応じて変動する。但し、上記の通り、受信回数は、ある規定回数以上は増えない。
【００４６】
図６には、一例として、トークンの受信回数が０回の時のＡ系、Ｂ系のノードの稼動／待機切換タイマ２６のタイムアップのタイミング（「０回  Ａ系」、「０回  Ｂ系と記してある位置）と、トークンの受信回数が最大（上記規定回数）の時のＡ系、Ｂ系のノードの稼動／待機切換タイマ２６のタイムアップのタイミング（「規定回  Ａ系」、「規定回  Ｂ系」と記してある位置）とを示す。
【００４７】
このように、Ａ系とＢ系とで時間差をつけてあるので、例えば以下に説明する第１の例のように、Ａ系とＢ系ともトークンの受信回数が０回の場合には、図示の例ではＡ系のノードの稼動／待機切換タイマ２６のほうが先にタイムアップするので、Ａ系のノードが稼働系となり、誤って両系とも稼働系になってしまうことはない。また、常にＡ系のノードが稼働系になる訳ではなく、例えばＡ系のノードのトークンの受信回数が０回、Ｂ系のノードのトークンの受信回数が規定回である場合には、図示の通り、今度は、Ｂ系のノードの稼動／待機切換タイマ２６のほうが先にタイムアップするので、Ｂ系のノードが稼働系となる。
【００４８】
以上の説明を踏まえて、以下に、待機系／稼働系の決定方法について、第１の例、第２の例を説明する。
まず、第１の例は、Ａ系／Ｂ系が同時に立ち上がった時の待機系／稼働系の決定方法である。
【００４９】
Ａ系／Ｂ系が同時に立ち上がった時には、一旦両方を稼動準備状態（または待機系）にし、上述したようなＡ系とＢ系とで時間差をつけた稼動／待機切換タイマ２６を用いて、稼動系と待機系を決定する。これにより、もしＡ系／Ｂ系が同時に立ち上がった場合でも、誤って両方が稼働系になってしまうという事態を防ぐことができる。
【００５０】
図７を参照しながら、更に詳しく説明する。
Ａ系／Ｂ系が同時に立ち上がった時には、両方のノードとも一旦「稼動準備トークン待ち」３５の状態に入る（ステップＳ１１）。この後、「稼動準備トークン保持」３６に遷移し（ステップＳ１２）、稼動／待機切換タイマ２６のタイムアップ時間を設定して、スタートする（ステップＳ１３）。そして、自己の稼動／待機切換タイマ２６が相手より先にタイムアップするか否かによって待機系になるか稼働系になるかが決定する（ステップＳ１４）。
【００５１】
稼動／待機切換タイマ２６のタイムアップ時間の設定値は、予めＡ系／Ｂ系で異なる基本設定値が登録されており、この基本設定値からトークン受信回数に応じて変化させた値となる（設定値＝基本設定値−トークン受信回数×α；αは任意の係数）。
【００５２】
この場合は、Ａ系、Ｂ系ともに立ち上げ直後であるので、両方とも上記トークン受信回数は‘０’であるので、図６の例ではＡ系のノードの稼動／待機切換タイマ２６のほうが先にタイムアップするように基本設定値が登録されており、これより、Ａ系のノードは、トークン送信後（ステップＳ１５）、稼動系に遷移する（ステップＳ１６）。Ｂ系のノードはこのトークン送信を検知することで、待機系に遷移する（ステップＳ１７）。
【００５３】
次に、第２の例について説明する。
第２の例は、ある二重化ノード以外の全ノードがネットワークから離脱後に、改めて他のノードが加入してきたときの待機系／稼働系の決定方法である。
【００５４】
まず、ある二重化ノード以外の全ノードがネットワークから離脱すると、その二重化ノードもトークンを送信しない状態になる。その後、改めて他のノードが加入してきた時には再度ネットワークを構築することになる。
【００５５】
この時の処理内容は、基本的には、上記第１の例（図７）と同じである。すなわち、この二重化ノードは、両系ともまず「稼動準備トークン待ち」３５の状態に遷移する。そして、その後「稼動準備トークン保持」３６に遷移すると共に稼動／待機切換タイマ２６のタイムアップ時間を設定して、スタートする。上記の通り、各ノード毎の稼動／待機切換タイマ２６のタイムアップ時間は、（そのノードのメモリ２３等に記憶されている）上記“受信回数”に応じて短くなるので、以前に稼動系であった方が先にタイムアップする可能性が非常に高くなる。例えば、図６の例において、仮にＡ系のノードの“受信回数”が０回、Ｂ系のノードの“受信回数”が規定回数に達していたとした場合には、Ｂ系のノードの稼動／待機切換タイマ２６のほうが先にタイムアップする。この場合は、Ｂ系のノードは、トークン送信後、稼動系に遷移する。Ａ系のノードはこのトークン送信を検知することで、待機系に遷移する。
【００５６】
このように、非常に高い確率で、ネットワークの再構築前に稼働系であったノードは稼働系に、待機系であったノードは待機系にすることができる。すなわち、稼動系であったものが稼動系であり続け、待機系であったものが待機系であり続けるという状態の一貫性が保たれる。
【００５７】
本例のネットワーク制御システムでは、誤動作等によって例えばＡ系、Ｂ系の両方が稼働系になってしまっても、速やかに適切に正常な状態へ移行できる。誤動作は、定常状態のときよりも非定常状態のときのほうが起きやすい。誤動作が起きやすい状況は種々あるが、以下に一例を示して説明する。
【００５８】
誤動作が起きやすい状況の一例として、例えば、二重化していなかったノードを二重化した時がある。例えば図３において最初はノード１Ａのみがネットワークに加入していて、ノード１Ｂは加入していなかったとする。この状態では、ノード１Ａは当然稼動系としてトークンの送受信を行っている。そして、後にノード１Ｂが加入してきた場合、上記の通り両方ともノード番号は＃１である為、誤動作等により両方稼動系になってしまう場合がある。
【００５９】
この場合、ノード１Ａ、１Ｂの双方とも、稼動系に２台いることを検知すると、一旦「稼動準備トークン待ち」３５の状態に遷移する。その後「稼動準備トークン保持」３６の状態に遷移すると共に稼動／待機切換タイマ２６をスタートする。このような場合、上記第２の例で説明したように、基本的に、先に稼動系にいた方（ノード１Ａ）が先にタイムアップするので、ノード１Ａがトークン送信後、稼動系に遷移する。後から加入したノード１Ｂは、このトークン送信を検知して待機系に遷移する。
【００６０】
次に、図８を参照しながら、Ａ系、Ｂ系がそれぞれ別のネットワークに加入していてトークンの送受信を行なっており、その後２つのネットワークを合体して１つのネットワークを構成した場合について説明する。
【００６１】
ＬＡＮのネットワーク形態は、従来はバス型が主流であったが、現在はスター・トポロジが主流であり、特にスイッチングＨＵＢを用いる形態が一般的であるので、図６にはスイッチングＨＵＢを用いる形態を一例として示す。
【００６２】
図８の例では、ノード１Ａ、ノード２、ノード３がＨＵＢ４１に接続されて成る第１のネットワークと、ノード１Ｂ、ノード４、ノード５がＨＵＢ４２に接続されて成る第２のネットワークが、別々に存在したものとする。いずれのネットワークでも、ノードは二重化していない。
【００６３】
このような構成では、第１のネットワークではノード１Ａ→ノード２→ノード３→ノード１Ａ→・・・というようにトークンが周回し、第２のネットワークではノード１Ｂ→ノード４→ノード５→ノード１Ｂ→・・・というようにトークンが周回している。但し、ノード１Ａ、ノード１Ｂは両方とも、ノード番号は＃１であるので、各ノードは“ノード１”が存在するものと認識している。
【００６４】
このような状態から、図示の点線で示すように、ＨＵＢ４１−ＨＵＢ４２間を接続して、上記２つのネットワークを１つのネットワークとしたとき、例えばノード５→ノード１Ｂ（ノード３→ノード１Ａでも同様）というトークン送出が行われると、上記の通り、ノード１Ａ／ノード１Ｂとして区別されているわけではなく、あくまでも“ノード１”として認識されているので、ノード１Ａ、ノード１Ｂは共に自己宛のトークンを受信したものとして、各々、ノード１Ａ→ノード２、ノード１Ｂ→ノード４というようなトークンを送出する。すると、ノード１Ａ、ノード１Ｂとも、相手局が出したトークンを認識し、「自局以外に、同じノード番号＃１が割り当てられたノードが存在し、これが現在稼働系となっている」ことを認識する（本例で対象としているＦＡリンクプロトコルでは、トークンは全てブロードキャストで送信される。つまり、各ノードは、ネットワーク上に流れる全てのトークンの存在を認識している。そして、そのトークンとしてのデータ中の「宛先ノード番号」が自局のノード番号と一致したときに、自己宛のトークン受信（送信権の獲得）と判断する）。
【００６５】
このように、同じノード番号のノードが稼動系に２台いることを検知すると、各ノードは以下に説明する処理を実行する。この処理は、基本的に、上記第１の例で説明した処理と同じである。
【００６６】
まず、ノード１Ａ、ノード１Ｂとも一旦「稼動準備トークン待ち」３５の状態に遷移する。その後、「稼動準備トークン保持」３６の状態に遷移すると共に稼動／待機切換タイマ２６を設定して、スタートする。
【００６７】
ＨＵＢ４１−ＨＵＢ４２間の接続前までに、ノード１Ａ、ノード１Ｂの双方とも、稼働系として動作していたので、両方とも“受信回数”が規定回数に達していたと考えた場合、図６の例を用いると、ノード１Ａのほうが先にタイムアップし、トークン送信後、稼動系に遷移する。ノード１Ｂは、このトークン送信を検知して待機系に遷移する。
【００６８】
このように、本例では、何等かの原因で、同じノード番号を持つ２つのノードが両方とも稼働系となったとしても、稼動／待機切換タイマ２６を用いて、稼動系／待機系の決定を速やかに行うことができるので、Ａ系、Ｂ系の両方ともが稼動系となるような不安定な状態が長く続くことが避けられる。
【００６９】
【発明の効果】
以上、詳細に説明したように、本発明のネットワーク制御システムにおける稼働／待機切換方法、稼働／待機決定方法によれば、従来の定常状態（稼動系、待機系）の定義に加え、非定常状態を明確に定義（稼動準備状態）しているので、定常状態と非定常状態とを切り分けることができ、安定した切換えが行えると共にプログラムの構成が簡明になる。
【００７０】
また、稼動／待機切換タイマを設け、稼動／待機切換または稼動／待機決定にこの稼動／待機切換タイマを用いることで、稼動系／待機系の決定が速やかに行なわれ、両系稼動等の不安定な状態が継続することが避けられる。また、稼動／待機切換タイマのタイマアップ時間を諸条件に応じて変更することで、以前に稼動系であったものが稼動系であり続け、待機系であったものが待機系であり続けるという状態の一貫性が保たれる。
【図面の簡単な説明】
【図１】本実施の形態に係わるＦＡコントロールネットワークのシステム構成の一例を示す図である。
【図２】ノードの概略構成図である。
【図３】（ａ）〜（ｃ）は、上記ノードを二重化した状態を簡略化して示すと共に稼働系に障害発生した際の切換えとトークン送出の様子を示す図である。
【図４】ノードの状態遷移図である。
【図５】待機系から稼働系への切換え処理の一例を説明する為のフローチャート図である。
【図６】待機系／稼働系を決定する際の稼動／待機切換タイマの動作例を表わす図である。
【図７】Ａ系／Ｂ系が同時に立ち上がった時の待機系／稼働系の決定処理を説明する為のフローチャート図である。
【図８】２つのネットワークを合体して１つのネットワークを構成した場合について説明する為の図である。
【符号の説明】
１０  ＦＡコントロールネットワーク
１１  ロボットコントローラ（ＲＣ）
１２  プログラマブルコントローラ（ＰＣ）
１３  数値制御装置（ＮＣ）
１４  制御用パソコン
２１  ノード
２２  バッファ（受信バッファ、送信バッファ）
２３  メモリ
２４  処理部
２５  トークン監視タイマ
２６  稼働／待機切換タイマ
３１  「稼動系トークン待ち」（状態）
３２  「稼動系トークン保持」（状態）
３３  「待機系トークン待ち」（状態）
３４  「待機系トークン保持」（状態）
３５  「稼働準備トークン待ち」（状態）
３６  「稼働準備トークン保持」（状態）
４１  ＨＵＢ
４２  ＨＵＢ
【図１】
0004569024.tif 000002
【図２】
0004569024.tif 000003
【図３】
0004569024.tif 000004
【図４】
0004569024.tif 000005
【図５】
0004569024.tif 000006
【図６】
0004569024.tif 000007
【図７】
0004569024.tif 000008
【図８】
0004569024.tif 000009