以下、図面を参照しつつ本発明の実施形態を説明する。
図1はこの発明の一実施形態である制御システム1Aの構成例を示す図である。
この制御システム1Aは、前掲図9の制御システムと同様、産業施設内に敷設された制御システムである。図1では図9におけるものと同一の構成要素には同一の符号が付されている。本実施形態による制御システム1Aは、以下の3つの点が図9に示す従来の冗長化制御システムと異なる。第1に、制御システム1Aは、制御装置10Aおよび制御装置10Bの代わりに制御装置100Aおよび制御装置100Bを有する。第2に、制御システム1Aは、ネットワーク装置20Aおよびネットワーク装置20Bの代わりにネットワーク装置200Aおよびネットワーク装置200Bを有する。そして、第3に、制御システム1Aは、ネットワーク装置200Aとネットワーク装置200Bを接続する等値化ケーブル400を有する。
ネットワーク装置200Aは、制御装置100AとIOネットワーク30Aとの間の通信を中継する中継装置であり、ネットワーク装置200Bは、制御装置100BとIOネットワーク30Bとの間の通信を中継する中継装置である。等値化ケーブル400は、ネットワーク装置200Aおよび200B間の通信を仲介する中継装置間通信手段の役割を果たす。ネットワーク装置200Aおよびネットワーク装置200Bは、図9におけるネットワーク装置20Aやネットワーク装置20Bと同様にゲートウェイ装置である。図1に示す制御システム1Aでは、IOスレーブ装置S1〜Snの各々から送信された監視データは、IOネットワーク30Aおよびネットワーク装置200Aを介して制御装置100Aに伝送されるとともに、IOネットワーク30Bおよびネットワーク装置200Bを介して制御装置100Bに伝送される。制御装置100Aおよび制御装置100Bの各々は、図9における制御装置10Aおよび制御装置10Bと同様に、IOスレーブ装置S1〜Snから収集した監視データおよび過去の演算結果を使用した演算を行うことにより、IOスレーブ装置S1〜Snにおける制御対象装置の制御のための制御データを求めて保持する。制御装置100Aおよび制御装置100Bは、PLCであっても良いし、DCSであっても良い。
本実施形態では、便宜上、制御装置100Aおよびネットワーク装置200Aの組をA系、制御装置100Bおよびネットワーク装置200Bの組をB系と呼ぶ。また、以下では、便宜上、例えばA系の制御装置100A(ネットワーク装置200A)にとってのA系のネットワーク装置200A(制御装置100A)を同系のネットワーク装置(制御装置)という。また、A系にとってのB系、B系にとってのA系をペア系という。
本実施形態では、A系とB系のうちの一方が稼動系となり、一方が待機系となる。そして、稼動系が停止するときには、待機系となっていた制御装置は、以降、稼動系として動作する。稼動系/待機系の切り替えの際には、演算結果である制御データの突変が生じる可能性がある。そこで、この稼働系/待機系の切り替え時の制御データの突変を回避するために、監視データの等値化と演算結果の等値化が必要となる。図9に示す従来の冗長化制御システムでは、監視データの等値化と演算結果の等値化を制御装置10Aと制御装置10Bに行わせていた。これに対して、本実施形態では、監視データの等値化をネットワーク装置200Aおよびネットワーク装置200Bで行わせ、制御装置100Aおよび100B間では、演算結果の等値化のみを行わせる。
次に、制御装置100Aおよび100Bの構成、ネットワーク装置200Aおよび200Bの構成を順に説明する。なお、制御装置100Aおよび100Bは同一の構成を有しているため、以下では両者を区別する必要がない場合には「制御装置100」と表記する。また、ネットワーク装置200Aおよび200Bも、同一の構成を有しているため、以下では両者を区別する必要がない場合には「ネットワーク装置200」と表記する。
図2は、制御装置100の構成例を示すブロック図である。
制御装置100は、図2に示すように、制御部110、第1通信インタフェース(以下、「I/F」と略記)部120、第2通信I/F部130、第3通信I/F部140、記憶部150、およびこれら構成要素間のデータ授受を仲介するバス160を含んでいる。
制御部110は、例えばCPUである。制御部110は記憶部150(より正確には不揮発性記憶部154)に記憶されている制御プログラム1542を実行することにより、制御装置100の制御中枢として機能する。第1通信I/F部120、第2通信I/F部130および第3通信I/F部140の各々は、例えばNIC(Network Interface Card)である。これら各通信I/F部の役割は以下の通りである。
第1通信I/F部120は同系のネットワーク装置200に接続されている。第1通信I/F部120は、同系のネットワーク装置から送信されてくるデータの受信、および同系のネットワーク装置へのデータの送出を行う。第1通信I/F部120は、同系のネットワーク装置から受信したデータを蓄積する通信バッファを有している(図示略)。
第2通信I/F部130は通信線を介して監視システム50に接続されている。第2通信I/F部130は、監視システム50から送信されてくるデータの受信、および監視システム50へのデータの送出を行う。第2通信I/F部230は、監視システム50へ送信するデータを蓄積する通信バッファを有している(図示略)。
第3通信I/F部140は、ケーブル接続用のポートを有しており、同ポートには等値化ケーブル40が接続される。第3通信I/F部140は、等値化ケーブル40を介してペア系の制御装置と制御データの等値化のための通信を行う。第3通信I/F部140は、ペア系の制御装置との間で授受するデータを蓄積する通信バッファを有している(図示略)。
記憶部150は、図2に示すように揮発性記憶部152と不揮発性記憶部154とを有している。不揮発性記憶部154は例えばフラッシュROMである。この不揮発性記憶部154には制御プログラム1542が予め格納されている。この制御プログラム1542は、制御部110により実行される。制御プログラム1542は、制御演算部1542a、等値化処理部1542bおよび二重化動作制御部1542cを含む。これらは制御プログラム1542のサブルーチンである。
揮発性記憶部152は、例えばRAM(Random Access Memory)である。この揮発性記憶部152は、制御プログラム1542を実行するためのワークエリアとして使用される。このワークエリアとして、揮発性記憶部152には、制御データ領域1522aと、IOデータ領域1522bと、状態データ領域1522cがある。IOデータ領域1522bは、INデータ領域とOUTデータ領域に区分されている。INデータ領域は、同系のネットワーク装置から受信した監視データを格納するための記憶領域である。OUTデータ領域は同系のネットワーク装置に送信する制御データを格納するための記憶領域である。なお、これらのワークエリアを利用することにより行われる制御プログラム1542の各サブルーチンの処理内容については、説明の重複を避けるため、本実施形態の動作説明において詳細を明らかにする。
以上が制御装置100の構成である。
図3は、ネットワーク装置200の構成例を示すブロック図である。
ネットワーク装置200は、図3に示すように、制御部210、第1通信I/F部220、第2通信I/F部230、第3通信I/F部240、記憶部250、およびこれら構成要素間のデータ授受を仲介するバス260を含んでいる。
制御部210は、例えばCPUである。制御部210は記憶部250(より正確には不揮発性記憶部254)に記憶されている制御プログラム2542を実行することにより、ネットワーク装置200の制御中枢として機能する。第1通信I/F部220、第2通信I/F部230および第3通信I/F部240の各々は、例えばNICである。これら各通信I/F部の役割は以下の通りである。
第1通信I/F部220はIOネットワークに接続されている。より詳細に説明すると、ネットワーク装置200Aの第1通信I/F部220はIOネットワーク30Aに接続されており、ネットワーク装置200Bの第1通信I/F部220はIOネットワーク30Bに接続されている。第1通信I/F部220は、接続先のIOネットワークから送信されてくるデータの受信、および接続先のIOネットワークへのデータの送出を行う。第1通信I/F部220は、接続先のIOネットワークから受信したデータを蓄積する通信バッファを有している(図示略)。
第2通信I/F部230は通信線を介して同系の制御装置に接続されている。第2通信I/F部230は、同系の制御装置から送信されてくるデータの受信、および同系の制御装置へのデータの送出を行う。第2通信I/F部230は、同系の制御装置へ送信するデータを蓄積する通信バッファを有している(図示略)。
第3通信I/F部240は、ケーブル接続用のポートを有しており、同ポートには等値化ケーブル400が接続される。第3通信I/F部240は、等値化ケーブル400を介してペア系のネットワーク装置と監視データの等値化のための通信を行う。
記憶部250は、図3に示すように揮発性記憶部252と不揮発性記憶部254とを有している。この不揮発性記憶部254には制御プログラム2542が予め格納されている。この制御プログラム2542は、制御部210により実行される。制御プログラム2542は、IOマスタ機器部2542a、中継処理部2542b、等値化処理部2542cおよび二重化動作監視部2542dを含む。これらは制御プログラム2542のサブルーチンである。
揮発性記憶部252は、例えばRAMである。揮発性記憶部252は、制御プログラム2542を実行するためのワークエリアとして使用される。ワークエリアとして、揮発性記憶部252には、制御装置100のものと同様なIOデータ領域2522bと、状態データ領域2522cがある。なお、これらのワークエリアを利用することにより行われる制御プログラム2542の各サブルーチンの処理内容については、説明の重複を避けるため、本実施形態の動作説明において詳細を明らかにする。
以上がネットワーク装置200の構成である。
次に本実施形態の動作を説明する。
図4は本実施形態におけるネットワーク装置200の動作を示すフローチャートである。また、図5は本実施形態における制御装置100の動作を示すフローチャートである。以下、図4および図5を参照し、本実施形態の動作例を説明する。なお、以下説明する動作例では、A系が稼働系であり、B系が待機系であるとする。
IOスレーブ装置S1〜Snの各々は、入力信号(若しくはセンサの出力信号)をサンプリングして制御装置100Aおよび制御装置100Bの各々に送信する監視データを生成し、IOネットワーク30AおよびIOネットワーク30Bの各々へ送信する。IOスレーブ装置S1〜Snが送信する監視データには、当該監視データの送信先および送信元を示す情報(通信アドレスやノード番号)と当該監視データを一意に示す識別子等とを含むヘッダが付与されている。IOスレーブ装置S1〜Snの各々から送信された監視データは、IOネットワーク30AおよびIOネットワーク30Bの各々を介してネットワーク装置200Aおよびネットワーク装置200Bの各々へと伝送される。以下ではネットワーク装置200Aに伝送される監視データを「監視データA」と呼び、ネットワーク装置200Bに伝送される監視データを「監視データB」と呼ぶ。監視データAと監視データBは基本的には同一のデータであるが、各々をサンプリングする際のサンプリングタイミングのズレにより微妙に異なる場合がある。
ネットワーク装置200Aでは、第1通信I/F部220がIOネットワーク30Aから送信されてくる監視データAを受信すると、IOマスタ機器部2542aが当該監視データAをIOデータ領域2522bのINデータ領域に書き込む。ここで、IOマスタ機器部2542aは、個々の監視データAをINデータ領域に書き込む際、等値化済であるか否かを示すフラグに等値化済でないことを示す第1の値(例えば、0)をセットし、当該第1の値をセット済のフラグを各監視データAに付与してINデータ領域に書き込む。ネットワーク装置200Bにおいても同様に、ネットワーク装置200BのIOデータ領域2522bのINデータ領域には、IOネットワーク30Bから受信した監視データBとフラグが書き込まれる。
ネットワーク装置200Aでは、等値化処理部2542cが繰り返し起動される。この等値化処理部2542cの起動は、タイマ割り込み等により定周期で行われてもよいし、IOデータ領域2522bのINデータ領域への監視データの書き込みを契機として行われてもよい。
ネットワーク装置200Aにおいて等値化処理部2542cは、図4に示すように、まず、状態データ領域2522c内の状態データを参照し、自装置が稼働系として動作しているのか否かを判定する(ステップSA200)。そして、ステップSA200の判定結果が“Yes”であれば、等値化処理部2542cは、ステップSA210の処理を実行し、逆にステップSA200の判定結果が“No”であれば、ステップSA220以降の処理を実行する。本動作例では、A系が稼働系であるため、ネットワーク装置200Aにおける等値化処理部2542cの実行時に、ステップSA200の判定結果は“Yes”となり、ステップSA210の処理が実行される。
ステップSA210において等値化処理部2542cは、IOデータ領域2522bのINデータ領域から等値化済でないことを示すフラグの付与された監視データAを読み出し、当該監視データAを第3通信I/F部240を介してペア系のネットワーク装置(この場合、ネットワーク装置200B)へ転送する。前述したように、ネットワーク装置200AのIOデータ領域2522bのINデータ領域には、等値化済でないことを示すフラグを付与された監視データAが格納されている。このため、本動作例では、等値化ケーブル400を介してネットワーク装置200Aからネットワーク装置200Bへ監視データAが転送される。
ネットワーク装置200Bにおいて等値化処理部2542cが起動されると、この等値化処理部2542cは、ネットワーク装置200Aの等値化処理部2542cと同様、自装置が稼働系として動作しているのか否かを判定する(ステップSA200)。本動作例ではB系が待機系であるため、このステップSA100の判定結果は“No”になり、ステップSA220以降の処理が実行される。
ステップSA220において等値化処理部2542cは、ネットワーク装置200Aからの監視データAを第3通信I/F部240から取得し、当該監視データAに対応した監視データB、すなわち、IOデータ領域2522bのINデータ領域に格納されている監視データBであって、当該監視データAと送信元が同一であり、かつ識別子が一致する監視データを当該監視データAにより上書きし、当該監視データBに付与されているフラグを等値化済であることを示す第2の値(例えば、1)に書き換える(ステップSA220)。これにより、ネットワーク装置200BのIOデータ領域2522bのINデータ領域に格納されている監視データは監視データBから監視データAに更新される。
ネットワーク装置200Bの等値化処理部2542cは、上記の要領で監視データの等値化を完了すると、等値化ケーブル400を介して等値化完了をネットワーク装置200Aへ通知する(ステップSA230)。ネットワーク装置200Aの等値化処理部2542cは、上記通知の受信を契機として、図4のステップSA210において転送した監視データAのフラグを上記第2の値に更新する。以上の動作が為される結果、ネットワーク装置200Aおよびネットワーク装置200Bの各々のIOデータ領域2522bのINデータ領域には、監視データAが格納され、当該監視データAには等値化済を示すフラグが付与された状態となる。
ネットワーク装置200Aでは、IOデータ領域2522bのINデータ領域に格納されている監視データに付与されているフラグが等値化済を示す値に更新されたことを契機として中継処理部2542bが起動される。この中継処理部2542bは、等値化済を示すフラグを付与されている監視データをIOデータ領域2522bのINデータ領域から読み出し、読み出した監視データを第2通信I/F部230により同系の制御装置100Aに転送する。ネットワーク装置200Bにおいても、等値化完了の通知を送信したことを契機として中継処理部2542bが起動され、等値化済を示すフラグを付与されている監視データがIOデータ領域2522bのINデータ領域から読み出され、第2通信I/F部230により同系の制御装置100Bに転送される。
このようにして本動作例では、ネットワーク装置200Aから制御装置100Aへ監視データAが送信され、ネットワーク装置200Bから制御装置100Bへも監視データAが送信される。なお、監視データの送受信に比較して上記通知の送受信は十分に高速に行えるため、ネットワーク装置200Aおよびネットワーク装置200Bの各々における上記フラグの更新は略同期して実行される。このため、ネットワーク装置200Aから制御装置100Aへの監視データAの送信と、ネットワーク装置200Bから制御装置100Bへの監視データAの送信はほぼ同期して実行される。
制御装置100Aでは、第1通信I/F部120がネットワーク装置200Aから送信されてくる監視データAを受信すると、制御演算部1542aが当該監視データAをIOデータ領域1522bのINデータ領域に書き込む。そして、稼働系である制御装置100Aにおいて、制御演算部1542aは、IOデータ領域1522bのINデータ領域内の監視データAを用いてIOスレーブ装置S1〜Snの制御対象装置の制御のための制御データを算出する演算を行い、演算結果である制御データを制御データ領域1522aに書き込む。ここで、制御演算部1542aは、個々の制御データを制御データ領域1522aに書き込む際、等値化済であるか否かを示すフラグに等値化済でないことを示す第1の値(例えば、0)をセットし、当該第1の値をセット済のフラグを各制御データに付与して制御データ領域1522aに書き込む。
待機系においても、同様にネットワーク装置200Bから制御装置100Bに監視データAが転送される。そして、制御装置100BのIOデータ領域1522bには、ネットワーク装置200Bから受信された監視データAが書き込まれる。しかし、待機系である制御装置100Bでは、制御データを算出する演算、演算結果である制御データの制御データ領域1522aへの書き込みは行われるが、ネットワーク装置200Bへの送信は行われない。
制御装置100Aでは、等値化処理部1542bが繰り返し起動される。この等値化処理部1542bの起動は、タイマ割り込み等により定周期で行われてもよいし、制御データの制御データ領域1522aへの書き込みを契機として行われてもよい。
制御装置100Aにおいて等値化処理部1542bは、図5に示すように、まず、状態データ領域1522c内の状態データを参照し、自装置が稼働系として動作しているのか否かを判定する(ステップSA100)。そして、ステップSA100の判定結果が“Yes”であれば、等値化処理部1542bは、ステップSA110の処理を実行し、逆にステップSA100の判定結果が“No”であれば、ステップSA120以降の処理を実行する。前述したように、本動作例では、A系が稼働系であるため、制御装置100Aにおける等値化処理部1542bの実行時に、ステップSA100の判定結果は“Yes”となり、ステップSA110の処理が実行される。
ステップSA110では、等値化処理部1542bは制御データ領域1522aから等値化済でないことを示すフラグの付与された制御データを読み出し、当該制御データを第3通信I/F部140を介してペア系(この場合、待機系)の制御装置100Bへ転送する。
制御装置100Bにおいても等値化処理部1542bが繰り返し起動される。この等値化処理部1542bは、制御装置100Aの等値化処理部1542bと同様、自装置が稼働系として動作しているのか否かを判定する(ステップSA100)。本動作例ではB系が待機系であるため、このステップSA100の判定結果は“No”になり、ステップSA120以降の処理が実行される。ステップSA120において、制御装置100Bの等値化処理部1542bは、ペア系の制御装置100Aからの制御データを第3通信I/F部140から取得し、制御データ領域1522aにおいて当該制御データに対応した制御データを当該制御データにより上書きすることにより制御データの等値化を実行する(ステップSA120)。
制御装置100Bの等値化処理部1542bは、上記の要領で制御データの等値化を完了すると、等値化ケーブル40を介して等値化完了をペア系(この場合、稼働系)の制御装置100Aへ通知する(ステップSA130)。制御装置100Aの等値化処理部1542bは、上記通知の受信を契機として、図5のステップSA110において転送した制御データのフラグを上記第2の値に更新する。以上の動作が為される結果、制御装置100Aおよび制御装置100Bの各々の制御データ領域1522aには、等値化された制御データが格納される。
稼働系の制御装置100Aにおいて、制御演算部1542aは、制御データ領域1522a内の制御データのうち等値化済みであることを示すフラグの付与された制御データをIOデータ領域のOUTデータ領域に一旦格納する。そして、制御演算部1542aは、このOUTデータ領域内の制御データを第1通信I/F部120により同系のネットワーク装置200Aに送信する。
稼働系のネットワーク装置200Aにおいて、中継処理部2542bは、同系の制御装置100Aからの制御データを第2通信I/F部230が受信すると、この制御データをIOデータ領域2522bのOUTデータ領域に格納する。稼働系のネットワーク装置200AのIOマスタ機器部2542aは、このOUTデータ領域内の制御データをIOネットワーク30Aを介してIOスレーブ装置S1〜Snに送信する。
一方、待機系の制御装置100Bは、上述した通り、制御データの演算および等値化までは行うが、制御データの同系のネットワーク装置200Bへの送信は行わない。待機系の制御装置100Bは、等値化済みの制御データを制御データ領域1522aに保持し、系の切り替えに備える。
以上が本実施形態による制御システム1Aの通常時の動作例である。
図6は本実施形態による制御システム1Aにおいて等値化ケーブル40を介した通信が通信不能状態になった場合の動作例を示すシーケンス図である。この動作例においても、A系が稼働系、B系が待機系となっている。
稼働系の制御装置100Aの二重化動作制御部1542cは、状態データ領域1522c内の状態データを第3通信I/F部140により等値化ケーブル40を介してペア系(待機系)の制御装置100Bに繰り返し送信する。この状態データの送信は、定周期で行うようにしてもよく、状態データ領域1522c内の状態データの内容が変わったときに行うようにしてもよい。待機系の制御装置100Bの二重化動作制御部1542cは、等値化ケーブル40を介して受信される状態データに基づき、稼働系の状態を監視する。
図6に示す動作例において、待機系の制御装置100Bの二重化動作制御部1542cは、等値化ケーブル40を介した通信が通信不能状態となったことを検知している(ステップS310)。等値化ケーブル40を介した通信が通信不能状態になると、待機系の制御装置100Bの二重化動作制御部1542cは、もはや稼働系の状態を監視することができなくなる。そこで、待機系の制御装置100Bの二重化動作制御部1542cは、等値化ケーブル40経由の通信が通信不能状態になったことを検知した場合、初回指示としての稼働系への切り替え指示を第1通信I/F部120により同系のネットワーク装置200Bに送信する(ステップS330)。
ここで、等値化ケーブル40を介した通信が通信不能状態となる原因として、稼働系が故障した場合と、稼働系は正常に動作しているが、等値化ケーブル40の断線、等値化ケーブル40のプラグの制御装置からの脱落、ノイズ等の影響による通信品質の著しい低下等により通信不能状態となっている場合とが考えられる。
そこで、以下では、まず、後者の原因により等値化ケーブル40を介した通信が通信不能状態となった場合の動作を説明し、その後、前者の原因により等値化ケーブル40を介した通信が通信不能状態となった場合の動作を説明する。
ネットワーク装置200Bの二重化動作監視部2542dは、初回指示としての稼働系への切り替え指示を第2通信I/F部230が受信すると、ネットワーク装置200Bを待機系に維持した状態で(すなわち、待機系を示すデータを状態データ領域2522cに残したまま)、第3通信I/F部240および等値化ケーブル400を介して状態問い合わせをネットワーク装置200Aに送信する(ステップS340)。この状態問い合わせは、状態データ領域2522c内の状態データの送信を要求するコマンドである。
この状態問い合わせがネットワーク装置200Aの第3通信I/F部240により受信されると、ネットワーク装置200Aの二重化動作監視部2542dは、状態データ領域2522cから状態データを読み出し、第3通信I/F部240および等値化ケーブル400を介してネットワーク装置200Bに送信する(ステップS342)。
ネットワーク装置200Bの第3通信I/F部240が状態データを受信すると、ネットワーク装置200Bの二重化動作監視部2542dは、当該状態データの内容を判定する。
ネットワーク装置200Aが待機系への遷移期間中である旨またはネットワーク装置200Aが待機系である旨のいずれをも当該状態データが示していない場合、ネットワーク装置200Bの二重化動作監視部2542dは、初回指示としての稼働系への切り替え指示の受信タイミングを基準とした制限時間の範囲内で、状態問い合わせの送信(ステップS340)および状態データの受信(ステップS342)を繰り返す。なお、この制限時間は、予め定められた固定値であってもよいし、制御装置100Bが初回指示としての稼働系への切り替え指示において指定してもよい。
そして、ネットワーク装置200Aが待機系への遷移期間中である旨またはネットワーク装置200Aが待機系である旨を示す状態データをネットワーク装置200Bの第3通信I/F部240が制限時間内に受信しなかった場合、ネットワーク装置200Bの二重化動作監視部2542dは、制御装置100Bからの稼働系への切り替え指示には応じることができない旨の拒絶応答を制御装置100Bに送信する(ステップS345)。これにより待機系の制御装置100Bの二重化動作制御部1542cは、稼働系への切り替えを行わず、待機系を維持する(ステップS351)。
このように本実施形態によれば、等値化ケーブル40を介した通信が通信不能状態となった場合に、待機系の制御装置100Bによって不要に待機系から稼働系への切り替えが行われるのを抑制することができる。
次に稼働系の故障により等値化ケーブル40を介した通信が通信不能状態となった場合の動作を説明する。図6ではこの動作が破線により示されている。
稼働系において、稼働系としての動作を継続することができないような故障が発生した場合、稼働系の制御装置100Aは、稼働系の故障内容を示すとともに、稼働系から待機系への遷移期間中であることを示す内容に状態データ領域1522c内の状態データを書き替える。そして、稼働系の制御装置100Aの二重化動作制御部1542cは、この状態データ領域1522c内の状態データを第3通信I/F部140によりペア系(待機系)の制御装置100Bに送信する。この稼働系の待機系への切り替えを示す状態データは、稼働系への切り替え指示として、等値化ケーブル40を介して待機系の制御装置100Bに送信される。しかし、図6に示す例では、稼働系の故障により等値化ケーブル40を介した通信が通信不能状態となっているため、稼働系への切り替え指示は待機系の制御装置100Bに届かない。
また、稼働系としての動作を維持することができない故障が稼働系に発生した場合、稼働系の制御装置100Aの二重化動作制御部1542cは、第1通信I/F部120によりネットワーク装置200Aに待機系への切り替え指示を送る(ステップS312)。
そして、稼働系の制御装置100Aの二重化動作制御部1542cは、制御装置100Aを待機系に切り替えるための制御を開始する。具体的には、二重化動作制御部1542cは、制御演算部1542aに稼働系としての処理(制御データの送信)を停止させ、等値化処理部1542bに稼働系としての処理(制御データの送信)を停止させ、待機系としての処理(制御データの受信および等値化)を開始させるための制御を開始する。この制御が終了したとき、制御装置100Aの二重化動作制御部1542cは、状態データ領域1522c内の状態データを待機系であることを示す内容に書き替える(以上、ステップS320)。
稼働系のネットワーク装置200Aでは、第2通信I/F部230が待機系への切り替え指示を受信すると、二重化動作監視部2542dは、状態データ領域2522c内の状態データを稼働系から待機系への遷移期間中であることを示す内容に書き替え、ネットワーク装置200Aを待機系に切り替えるための制御を開始する。具体的には、二重化動作監視部2542dは、IOマスタ機器部2542aに稼働系としての処理(制御データの送信)を停止させ、等値化処理部2542cに稼働系としての処理(監視データの送信)を停止させ、待機系としての処理(監視データの受信および等値化)を開始させるための制御を開始する。この制御が終了したとき、ネットワーク装置200Aの二重化動作監視部2542dは、状態データ領域2522c内の状態データを待機系であることを示す内容に書き替える(ステップS322)。
ここで、稼働系の故障の態様の1つとして、例えば制御装置100Aの電源が遮断される等の故障の態様もあり得る。このような故障が起こった場合、等値化ケーブル40を介した制御装置100Aおよび100B間の通信が通信不能状態になるだけではなく、稼働系の制御装置100Aから同系のネットワーク装置200Aへの待機系への切り替え指示(ステップS322)も行われない。そこで、本実施形態において稼働系のネットワーク装置200Aの二重化動作監視部2542dは、第2通信I/F部230を介した同系の制御装置100Aとの通信を監視する。そして、同制御装置100Aとの通信が通信不能状態になったのを検知したとき、二重化動作監視部2542dは、ステップS322の処理を実行し、状態データ領域2522c内の状態データを稼働系から待機系への遷移期間中であることを示す内容に書き替え、待機系への切り替えが終わると、待機系であることを示す内容に書き替える。
一方、稼働系の故障により等値化ケーブル40を介した通信が通信不能状態になると、上述したように待機系の制御装置100Bの二重化動作制御部1542cからネットワーク装置200Bに初回指示としての稼働系への切り替え指示が送られ(ステップS330)、ネットワーク装置200Bの二重化動作監視部2542dから稼働系のネットワーク装置200Aに等値化ケーブル400を介して状態問い合わせが送られる(ステップS340)。
この状態問い合わせがネットワーク装置200Aの第3通信I/F部240により受信されると、ネットワーク装置200Aの二重化動作監視部2542dは、状態データ領域2522cから状態データを読み出し、第3通信I/F部240および等値化ケーブル400を介してネットワーク装置200Bに送信する(ステップS342)。この例では、稼働系から待機系への遷移期間中であることを示す状態データが等値化ケーブル400を介してネットワーク装置200Bに送信されることとなる。
ネットワーク装置200Bの第3通信I/F部240が状態データを受信すると、ネットワーク装置200Bの二重化動作監視部2542dは、当該状態データの内容を判定する。
この例のようにネットワーク装置200Aが待機系への遷移期間中である旨を当該状態データが示している場合またはネットワーク装置200Aが待機系である旨を当該状態データが示している場合、ネットワーク装置200Bの二重化動作監視部2542dは、当該制御データを第2通信I/F部230により制御装置100Bに転送する(ステップS344)。
制御装置100Bの二重化動作制御部1542cは、ネットワーク装置200Aが待機系への遷移期間中である旨またはネットワーク装置200Aが待機系である旨を示す状態データを第1通信I/F部120が制限時間内に受信した場合、最終指示としての稼働系への切り替え指示を第1通信I/F部120によりネットワーク装置200Bに送信する(ステップS350)。
そして、制御装置100Bの二重化動作制御部1542cは、待機系から稼働系への遷移期間中である旨を示す状態データを状態データ領域1522cに書き込み、制御装置100Bを稼働系に切り替えるための制御を開始する。具体的には、二重化動作制御部1542cは、制御演算部1542aに稼働系としての処理(監視データに基づく制御データの算出)を開始させ、等値化処理部1542bに稼働系としての処理(制御データの送信)を開始させ、待機系としての処理(制御データの受信および等値化)を停止させるための制御を開始する。この制御が終了したとき、制御装置100Bの二重化動作制御部1542cは、稼働系である旨を示す状態データを状態データ領域1522cに書き込む(ステップS352)。
ネットワーク装置200Bにおいて、第2通信I/F部230が最終指示としての稼働系への切り替え指示を受信すると、二重化動作監視部2542dは、待機系から稼働系への遷移期間中である旨を示す状態データを状態データ領域2522cに書き込み、ネットワーク装置200Bを稼働系に切り替えるための制御を開始する。具体的には、二重化動作監視部2542dは、IOマスタ機器部2542aに稼働系としての処理(制御データの送信)を開始させ、等値化処理部2542cに稼働系としての処理(監視データの送信)を開始させ、待機系としての処理(監視データの受信および等値化)を停止させるための制御を開始する。この制御が終了したとき、ネットワーク装置200Bの二重化動作監視部2542dは、稼働系である旨を示す状態データを状態データ領域2522cに書き込む(ステップS354)。
以上のように稼働系の故障により等値化ケーブル40を介した通信が通信不能状態となった場合には、等値化ケーブル400を介した状態データの受信により待機系の制御装置100Bおよびネットワーク装置200Bが稼働系に切り替えられる。
図7は本実施形態において等値化ケーブル40を介した通信により現状の稼働系を待機系とし、現状の待機系を稼働系とする稼働系/待機系切り替え制御が行われる動作例を示すシーケンス図である。この動作例においても、初期状態では、A系が稼働系、B系が待機系となっている。
この動作例において、ステップS312、S320、S322、S352、S354の動作は図6に示すものと同様である。稼働系の制御装置100Aから等値化ケーブル40を介して待機系の制御装置100Bに稼働系への切り替え指示が送信され(ステップS311)、待機系の制御装置100Bがこの稼働系への切り替え指示を受信した場合、待機系の制御装置100Bの二重化動作制御部1542cは、直ちに稼働系への切り替え指示を同系のネットワーク装置200Bに送る(ステップS350)。そして、制御装置100Bおよびネットワーク装置200Bでは待機系から稼働系への切り替えが行われる(ステップS352およびS354)。
以上が本実施形態の動作である。
次に本実施形態の効果を説明する。
図9に示す従来の冗長化制御システムでは、監視データの等値化を制御装置(すなわち、制御装置10Aおよび制御装置10B)に行わせていたため、監視データのデータ量が増えると、その等値化の分だけ制御装置の処理負荷が高くなり、本来の演算の高速実行に支障が生じるといった問題があった。これに対して、本実施形態では、監視データの等値化は等値化ケーブル400を介した通信によりネットワーク装置200Aおよびネットワーク装置200Bによって実行される。このため、IOネットワークに接続されるIOスレーブ装置の増加等に起因して制御装置100Aおよび制御装置100Bへ転送される監視データのデータ量が増えたとしても、制御装置100Aおよび制御装置100Bにかかる処理負荷がその等値化の分だけ高くなることはなく、本来の演算の実行に何ら支障が発生することはない。
また、本実施形態では、制御装置100Aおよび制御装置100Bに等値化済の監視データが転送されてくるので、稼働系の制御装置の停止に起因して稼働系/待機系の切り替えを行う場合であっても、制御装置において監視データの等値化完了を待つ必要はなく、即座に切り替えを行うことができる。すなわち、本実施形態によれば、稼働系/待機系の切り替えスピードの低下を招くこともない。
また、図9に示す従来の冗長化制御システムでは、稼動系と待機系との間のデータ通信を仲介する手段は、制御装置同士の通信を仲介する制御装置間通信手段である等値化ケーブル40のみである。従って、従来の冗長化制御システムでは、等値化ケーブル40を介した通信が通信不能状態になると、稼働系の制御装置と待機系の制御装置は互いの状態監視を適切に行うことができない。この場合、等値化ケーブル40を介した通信が通信不能状態になったことを検知した待機系の制御装置が待機系から稼働系への切り替えを行うと、稼働系が正常に動作しているにも拘わらず、待機系が稼働系に切り替えられ、これにより稼働系が重複して発生し、制御対象装置が誤動作する可能性がある。
これに対して、本実施形態では、等値化ケーブル40を介した通信が通信不能状態になったことを検知した待機系の制御装置が初回の切り替え指示を待機系のネットワーク装置200Bに送ると、待機系のネットワーク装置200Bは、等値化ケーブル400を介して稼働系のネットワーク装置200Aに状態問い合わせを送る。ここで、稼働系において待機系への切り替えが行われていない場合、待機系のネットワーク装置200Bは、状態問い合わせに対する応答として、稼働系を示す内容の状態データを受け取る。この場合、待機系のネットワーク装置200Bは、待機系の制御装置100Bに対して拒絶応答を送り、制御装置100Bによる待機系から稼働系への切り替えを抑制する。従って、本実施形態によれば、等値化ケーブル40を介した通信が通信不能状態になったことを検知した待機系の制御装置によって、待機系から稼働系への切り替えが不要に行われるのを防止することができる。
また、本実施形態において待機系のネットワーク装置200Bは、状態問い合わせに対する応答として、待機系を示す内容または待機系への遷移中であることを示す内容の状態データを受け取った場合に、その状態データを待機系の制御装置100Bに送る。そして、この状態データを受け取った待機系の制御装置100Bは待機系から稼働系への切り替え制御を開始する。従って、本実施形態によれば、等値化ケーブル40を介した通信が通信不能状態となっても、稼働系の待機系への切り替えを検知し、A系およびB系の両方が稼働系となるのを回避しつつ、稼働系/待機系切り替えを適切に行うことができる。
また、本実施形態によれば、稼働系のネットワーク装置200Aは、同系の制御装置100との通信を監視する。そして、制御装置100Aの電源遮断等の故障により、制御装置100との通信が通信不能状態になったことを検知した場合に、ネットワーク装置200Aは、自身が保持する状態データを待機系への遷移中である旨の内容に書き替え、次いで待機系を示す内容に書き替える。従って、稼働系の制御装置100Aが待機系への切り替え指示を稼働系のネットワーク装置200Aに送ることができない状況でも、稼働系のネットワーク装置200Aが待機系への切り替えを示す状態データを待機系のネットワーク装置200Bに送り、待機系の制御装置100Bおよびネットワーク装置200Bの稼働系への切り替えを行わせることができる。
また、本実施形態では、ネットワーク装置200Aおよび200Bが稼働系/待機系の切り替え制御のために通信を行うため、制御装置100Aおよび100Bの稼働系/待機系の切り替え制御のための通信の負担を減らすことができる。
<他の実施形態>
以上、この発明の一実施形態について説明したが、この発明には他にも実施形態が考えられる。例えば次の通りである。
(1)上記実施形態において、待機系の制御装置100は、稼働系への切り替え指示が等値化ケーブル40を介して受信された場合には最終指示としての稼働系への切り替え指示を同系のネットワーク装置200に送り、等値化ケーブル40を経由した通信が通信不能状態となった場合には初回指示としての稼働系への切り替え指示を同系のネットワーク装置200に送った。しかし、そのようにするのではなく、稼働系への切り替え指示が等値化ケーブル40を介して受信された場合と等値化ケーブル40を経由した通信が通信不能状態になった場合の両方において、初回指示としての稼働系への切り替え指示を待機系の制御装置100から待機系のネットワーク装置200へ送り、待機系のネットワーク装置200に稼働系の状態データを収集させてもよい。この態様によれば、例えばノイズの影響等により稼働系への切り替え指示が誤って待機系の制御装置100に送信された場合に、待機系の制御装置100によって待機系から稼働系への切り替えが不要に行われるのを防止することができる。
(2)現状の稼働系を待機系とし、現状の待機系を稼働系とする稼働系/待機系切り替え制御を図8に示すシーケンス図に従って進めてもよい。
図8に示す動作例において、初期状態では、制御装置100Aおよびネットワーク装置200Aが稼働系、制御装置100Bおよびネットワーク装置200Bが待機系となっている。
稼働系において、稼働系としての動作を継続することができないような故障が発生した場合、稼働系の制御装置100Aは、稼働系への切り替え指示を等値化ケーブル40を介して待機系の制御装置100Bに送信する(ステップS410)。また、稼働系の制御装置100Aは、待機系への切り替え指示を稼働系のネットワーク装置200Aへ送信する(ステップS412)。そして、稼働系の制御装置100Aは、自装置を待機系に切り替える制御を行う(ステップS420)。
待機系への切り替え指示を受信した稼働系のネットワーク装置200Aは、稼働系への切り替え指示を等値化ケーブル400を介して待機系のネットワーク装置200Bに送信する(ステップS414)。そして、稼働系のネットワーク装置200Aは、自装置を待機系に切り替える制御を行う(ステップS422)。
待機系のネットワーク装置200Bは、等値化ケーブル400を介して稼働系への切り替え指示を受信すると、稼働系への切り替え指示を待機系の制御装置100Bに送る(ステップS416)。
待機系の制御装置100Bは、等値化ケーブル40を介して稼働系の制御装置100Aから稼働系への切り替え指示を受信する(第1の通知)という条件と、待機系のネットワーク装置200Bから稼働系の切り替え指示を受信する(第2の通信)という条件の少なくとも一方の条件が満たされたとき、稼働系への切り替え指示をネットワーク装置200Bに送信する(ステップS430)。そして、待機系の制御装置100Bは、自装置を稼働系に切り替えるための制御を行う(ステップS432)。また、稼働系への切り替え指示を制御装置100Bから受け取ったネットワーク装置200Bは、自装置を稼働系に切り替えるための制御を行う(ステップS434)。
この態様によれば、等値化ケーブル40を経由した通信が通信不能状態となっている状況においても、等値化ケーブル400を介して稼働系のネットワーク装置から待機系のネットワーク装置に稼働系への切り替え指示が送信される。従って、上記実施形態と同様、等値化ケーブル40を経由した通信が通信不能状態になっている状況においても、制御装置100Aおよびネットワーク装置200Aの組と制御装置100Bおよびネットワーク装置200Bの組の両方が稼働系となるのを回避することができる。
(3)上記実施形態では、IOスレーブ装置から収集した監視データを制御装置へ転送するゲートウェイ装置へ本発明を適用した。しかし、本発明の適用対象はゲートウェイ装置に限定される訳ではなく、ルータやリピータ、スイッチングハブなどの他の種類の中継装置であっても良い。さらに、本発明の中継装置に接続されるネットワークはIOネットワークなどの制御系ネットワークやシリアルバスに限定される訳ではなく、TCPなどの汎用通信プロトコルにしたがったデータ通信を仲介する一般的な情報系ネットワークであっても良い。要は、監視データを収集し、当該監視データを使用した演算を実行する制御装置と、監視データを出力する機器に接続されたネットワークとに接続され、当該ネットワークを介して受信したデータを当該制御装置へ転送する中継装置であれば、本発明を適用可能である。
(4)上記実施形態におけるネットワーク装置(中継装置)を単体で提供(すなわち、製造・販売)してもよい。このようなネットワーク装置を従来の冗長化制御システムにおけるネットワーク装置と置き換え、中継装置間等値化ケーブルでそれらネットワーク装置を互いに接続することで、従来の冗長化制御システムを上記実施形態の制御システムとして機能させることが可能になるからである。上記実施形態における制御装置も同様である。
(5)上記実施形態において、稼働系のネットワーク装置200Aは、待機系のネットワーク装置200Bからの状態問い合わせに応答して状態データを送信した。しかし、稼働系のネットワーク装置200Aは、常時、状態データを待機系のネットワーク装置200Bに送信してもよい。この場合の状態データの送信は、定期的に行ってもよく、状態データに変化があったときに行ってもよい。すなわち、稼働系のネットワーク装置200Aは、等値化ケーブル400を介して待機系のネットワーク装置200Bに状態データを定期的にまたは非定期的に繰り返し送信するのである。
この態様において、待機系のネットワーク装置200Bは、等値化ケーブル40を介した通信が通信不能状態になったことを検知した待機系の制御装置100Bから初回指示としての稼働系への切り替え指示を受け取った後、稼働系から待機系への切り替えを示す状態データを稼働系のネットワーク装置200Bから受信した場合、当該状態データを待機系の制御装置100Bに転送する。これにより待機系の制御装置100Bは、待機系の制御装置100Bおよびネットワーク装置200Bを稼働系に切り替える制御を開始する。
一方、待機系のネットワーク装置200Bは、待機系の制御装置100Bから初回指示としての稼働系への切り替え指示を受け取った後、稼働系が稼働系を維持していることを示す状態データを待機系のネットワーク装置200Bが受信した場合、拒絶応答を待機系の制御装置100Bに送る。すなわち、この態様では、初回指示としての稼働系への切り替え指示が待機系のネットワーク装置200Bに出力された後、稼働系から待機系への切り替えを示す状態データが待機系のネットワーク装置200Bによって受信されない限り、待機系の稼働系への切り替えは行われない。この態様においても上記実施形態と同様な効果が得られる。
(6)上記実施形態において、待機系のネットワーク装置200Bは、拒絶応答を送ることにより待機系の制御装置100Bによる待機系から稼働系への切り替えを抑制した。しかし、待機系のネットワーク装置200Bにこのような拒絶応答を送信させなくてもよい。この場合、待機系の制御装置100Bは、待機系から稼働系への切り替え指示(初回指示)を待機系のネットワーク装置200Bに送った後、所定の制限時間内に同ネットワーク装置200Bから切り替え指示に対する応答がない場合に、待機系から稼働系への切り替えを取り止めればよい。この態様においても上記実施形態と同様な効果が得られる。