(57)【要約】【課題】電源ＯＦＦからＯＮによる立上げ時において、稼動系／待機系の何れかの状態を決定する際、電源ＯＦＦ時の状態にする。【解決手段】デフォルト稼動系／待機系の各ＣＰＵモジュールにおける各マイクロプロセッサ１５、２５は、電源ＯＦＦの際に、現在の稼動状態ステータス（稼動系か待機系か）をバックアップメモリ１６、２６にコピーして、前回稼動状態ステータス１６ａ，２６ａとして記憶させる。そして、電源ＯＮの際には、前回稼動状態ステータス１６ａ，２６ａを参照することで、自コントローラの状態を確定する。【選択図】図２
2008262426.tif 000002
【特許請求の範囲】
【請求項１】
デフォルト稼動系の第１のコントローラと、デフォルト待機系の第２のコントローラとを有する２重化コントローラシステムであって、
前記第１、第２のコントローラは、各々、
バックアップ記憶手段と、
電源ＯＦＦの際に、現在の自コントローラの状態が稼動系／待機系の何れであるかを示す状態ステータスを、前記バックアップ記憶手段に記憶する状態バックアップ手段と、
電源ＯＮの際に、前記バックアップ記憶手段に記憶されている状態ステータスを参照することで、起動時の自コントローラの状態を前記電源ＯＦＦの際の状態とする起動時状態確定手段と、
を有することを特徴とする２重化コントローラシステム。
【請求項２】
前記第１、第２のコントローラのうち現在稼動系となっているコントローラが待機系となっているコントローラに対して等値化データを転送して記憶させる等値化処理が行われることを特徴とする請求項１記載の２重化コントローラシステム。
【請求項３】
デフォルト稼動系の第１のコントローラと、デフォルト待機系の第２のコントローラとを有する２重化コントローラシステムにおける前記各コントローラであって、
バックアップ記憶手段と、
電源ＯＦＦの際に、現在の自コントローラの状態が稼動系／待機系の何れであるかを示す状態ステータスを、前記バックアップ記憶手段に記憶する状態バックアップ手段と、
電源ＯＮの際に、前記バックアップ記憶手段に記憶されている状態ステータスを参照することで、起動時の自コントローラの状態を前記電源ＯＦＦの際の状態とする起動時稼動状態確定手段と、
を有することを特徴とするコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、待機冗長の２重化構成のプログラマブルコントローラ・システムに関する。
【背景技術】
【０００２】
プログラマブルコントローラ・システムでは、信頼性を向上させるために、ＣＰＵモジュール（プログラマブルコントローラ本体）を待機冗長の２重化構成にする場合がある。この様な２重化コントローラシステムは、例えば、２つのＣＰＵモジュールを１組とし、一方を稼動系、他方を待機系とし、稼動系ＣＰＵモジュールを待機系ＣＰＵモジュールが監視して、稼動系ＣＰＵモジュールに障害等の切替え要因が生じたならば待機系ＣＰＵモジュールが稼動系に切り替る構成である。
【０００３】
図４に、上記従来の２重化コントローラシステム全体の概略構成例を示す。
尚、この様な構成例の２重化コントローラシステムに関しては、例えば特許文献１，２等に開示されている。
【０００４】
図４に示す２重化コントローラシステムは、デフォルト稼動系のＣＰＵモジュール１、デフォルト待機系のＣＰＵモジュール２、及び各制御対象機器とのデータ入出力を行う複数のＩ／Ｏユニット３より成るＩ／Ｏ群から構成されている。
【０００５】
デフォルト稼動系のＣＰＵモジュール１は、稼動系である場合（待機系に切り替わっていない場合）には、その内部に格納されたプログラム（通常、各々定周期に実行される複数の制御処理プログラム；図示の例では定周期プログラムＡ，Ｂ）を実行することで、各Ｉ／Ｏユニット３に対して制御データを出力して（又は各Ｉ／Ｏユニットからセンサ計測値等を読み出して）、各制御対象機器を制御する。
【０００６】
一方、デフォルト待機系であるＣＰＵモジュール２は、待機系である場合（稼動系に切り替わっていない場合）には、稼動系のＣＰＵモジュール１を監視しており、稼動系ＣＰＵモジュール１に故障等の何らかの切替え要因が生じると、稼動／待機切り替え処理を実行して、ＣＰＵモジュール２が稼動系となって、ＣＰＵモジュール１が行っていた上記定周期プログラム等の処理を引き継ぐ。
【０００７】
ＣＰＵモジュール１、ＣＰＵモジュール２及び各Ｉ／Ｏユニット３は、システムバス４によって接続されており、稼動系のＣＰＵモジュールは、システムバス４を介して各Ｉ／Ｏユニット３に対して出力データ（制御データ）を送信し、また各Ｉ／Ｏユニット３からは、当該ユニット３に接続されている不図示の制御対象機器からの計測値等のデータを受信している。
【０００８】
また上記２重化されているＣＰＵモジュール１とＣＰＵモジュール２との間には等値化バス５が備えられており、稼動系／待機系の切替えが生じたときに制御データ等のユーザデータの整合性を持たせる為、この等値化バス５を介して稼動系ＣＰＵモジュールから待機系ＣＰＵモジュールに等値化データ（ユーザデータ）を送信して記憶させる処理（等値化処理）を行っている。
【０００９】
上記従来の２重化コントローラシステムでは、予めデフォルトの稼動／待機が任意に決められて設定されている。上述した例では、ＣＰＵモジュール１をデフォルト稼動系、ＣＰＵモジュール２をデフォルト待機系とすることが、予め任意に決められて各ＣＰＵモジュール内の記憶装置等に設定・登録されている。そして、一括電源ＯＮにて２重化コント
ローラシステムが立上がる場合は、各ＣＰＵモジュール１，２は、上記記憶してあるデフォルト設定に従い、起動時の初期状態として稼動系／待機系の何れかの状態となる。
【００１０】
図５（ａ）〜（ｃ）に、上記従来の２重化コントローラシステムの動作例を示す。
図５（ａ）に示す状況１は、上記デフォルト設定に従った起動後、２重化コントローラシステムが正常動作していた状況で、稼動系のＣＰＵモジュール１に故障が発生した場合を表す。尚、故障発生するまでは、稼動系のＣＰＵモジュール１は、随時（例えば各定周期プログラム実行完了する毎に）、上記等値化データを等値化バス５を介して、待機系のＣＰＵモジュール２へ転送しており、待機系のＣＰＵモジュール２はこの等値化データを随時上書き記憶している。これにより、ＣＰＵモジュール２が稼動系に切り替わった場合でも、ＣＰＵモジュール２は問題なく処理を引き継げる（２重化システムとして継続性が維持できる）。
【００１１】
図５（ｂ）に示す状況２は、上記稼動系のＣＰＵモジュール１の故障後、ＣＰＵモジュール２が稼動系となって動作している状況を示す。この状況では、ＣＰＵモジュール２は、上記ＣＰＵモジュール１と同様に、待機系となったＣＰＵモジュール１に対して等値化データを転送している。しかし、ＣＰＵモジュール１は、故障状態である為、等値化データを受付けられない場合がある。この場合、ＣＰＵモジュール１側では、等値化データが更新されず、旧データを保持したままの状態となっている。
【００１２】
図５（ｃ）に示す状況３は、上記状況２の状況において、電源に何らかの異常が発生し、２重化コントローラシステム全体が一瞬、電源ＯＦＦしてから再びＯＮとなった場合に、ＣＰＵモジュール１の故障状態が一過性であり正常に復帰した場合に、デフォルト設定に従い、ＣＰＵモジュール１が稼動系、ＣＰＵモジュール２が待機系となった場合を表す。
【特許文献１】特開２００３−２９６１３３号公報
【特許文献２】特開２００５−９２５２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述した図５（ｃ）に関して説明した状況３の状況になった場合、上記のようにＣＰＵモジュール１が旧データを保持したままの状態となっていると、ＣＰＵモジュール１は、最新のユーザデータではない旧データを用いて上記定周期プログラム等を実行してしまうことになり、２重化システムとして継続性が維持できないことになる。また、この状況で図５（ｃ）に示すように等値化処理が行われると、ＣＰＵモジュール２に保持されている最新の等値化データに、旧データが上書きされることになり、最新の等値化データが失われてしまう。
【００１４】
この様に、従来では、２重化システム全体の一括による電源ＯＮ時の起動処理において、前回の電源ＯＦＦ時の稼動／待機状態に関わらず、予め決められているデフォルト稼動／待機の設定に従い、必ずデフォルト稼動設定されているＣＰＵモジュールが稼動状態になる為、前回の電源ＯＦＦ時の状態を継続することができない。この為、上記の様な問題が発生していた。
【００１５】
本発明の課題は、デフォルト稼動／待機の２つのコントローラを有する２重化コントローラシステムにおいて、システム全体の一括による電源ＯＦＦからＯＮによる立上げ時に、各コントローラが、デフォルト稼動／待機の設定に従うことなく、電源ＯＦＦ時のステータス（稼動系又は待機系）となることで上記問題を解決する２重化コントローラシステム、そのコントローラを提供することである。
【課題を解決するための手段】
【００１６】
本発明の２重化コントローラシステムは、デフォルト稼動系の第１のコントローラと、デフォルト待機系の第２のコントローラとを有する２重化コントローラシステムであって、前記第１、第２のコントローラは、各々、バックアップ記憶手段と、電源ＯＦＦの際に、現在の自コントローラの状態が稼動系／待機系の何れであるかを示す状態ステータスを、前記バックアップ記憶手段に記憶する状態バックアップ手段と、電源ＯＮの際に、前記バックアップ記憶手段に記憶されている状態ステータスを参照することで、起動時の自コントローラの状態を前記電源ＯＦＦの際の状態とする起動時状態確定手段とを有する。
【００１７】
また、上記２重化コントローラシステムでは、前記第１、第２のコントローラのうち現在稼動系となっているコントローラが待機系となっているコントローラに対して等値化データを転送して記憶させる等値化処理が行われる。
【００１８】
例えばデフォルト稼動系の第１のコントローラが故障し、デフォルト待機系の第２のコントローラが稼動系に切り替わり、第１のコントローラが故障状態である為に等値化処理が正常に行われていない状態で、システム全体の一括による電源ＯＦＦからＯＮとなったときに第１のコントローラが正常復帰した場合でも、本発明の２重化コントローラシステムでは、デフォルト設定に従って第１のコントローラが稼動系になってしまうようなことはなく、電源ＯＦＦ時に稼動系であった第２のコントローラが稼動系となるので、上述した問題を解消できる。
【発明の効果】
【００１９】
本発明の２重化コントローラシステム、そのコントローラによれば、デフォルト稼動／待機の２つのコントローラを有する２重化コントローラシステムにおいて、システム全体の一括による電源ＯＦＦからＯＮによる立上げ時に、各コントローラが、デフォルト稼動／待機の設定に従うことなく、電源ＯＦＦ時のステータス（稼動系又は待機系）となることで上記問題を解決できる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して本発明の実施の形態について説明する。
本例の２重化コントローラシステム全体の概略構成は、上記従来の図４に示す構成と略同様であるので、図示、説明は省略する。
【００２１】
図１に、本例の２重化コントローラシステムにおける稼動／待機のＣＰＵモジュールの詳細構成例を示す。
２重化コントローラシステムは、デフォルトで稼動又は待機に設定された２つのコントローラ（ＣＰＵモジュール）を有しており、ここでは図示のＣＰＵモジュール１０がデフォルト稼動系、ＣＰＵモジュール２０がデフォルト待機系として設定されているものとする。
【００２２】
図１において、ＣＰＵモジュール１０は、プログラムＲＡＭ１１、データＲＡＭ１２、等値化バス制御部１３、受信バッファ用ＲＡＭ１４、マイクロプロセッサ１５、及びバックアップメモリ１６等を有する。
【００２３】
上記各構成のうちバックアップメモリ１６以外の構成は、従来の上記特許文献２に開示されている構成と略同様であってよい（但し、電源ＯＮ／ＯＦＦ時のマイクロプロセッサ１５の処理等や記憶されるデータが、後に図２で説明するように従来とは異なる）が、以下、簡単に説明する。尚、その意味で図１に示す構成は従来構成をベースにした一例であるが、本例の各コントローラの構成は、図１に示す例に限るものではない。
【００２４】
プログラムＲＡＭ１１には、例えば上記各定周期プログラム等であるユーザプログラム１１ａが格納される。更に、上記等値化処理や後述する電源ＯＮ／ＯＦＦ時の処理等を実現させる為の不図示のアプリケーションプログラムも格納されている。
【００２５】
データＲＡＭ１２は、ユーザデータ領域１２ａを有し、等値化データ転送情報１２ｂ（マッピング情報）が格納されている。ユーザデータ領域１２ａにはユーザデータ（制御データ等）が格納され、これが等値化すべきデータ（等値化データ）であり、等値化データ転送情報１２ｂに従ってＣＰＵモジュール２０側へと転送される。また、特に図示しないが、データＲＡＭ１２には、デフォルト稼動／待機設定情報も記憶されていてもよい。
【００２６】
等値化バス制御部１３は、上記等値化データを、待機側の等値化バス制御部２３と連動して、等値化バス５を介して、待機側の受信バッファ用ＲＡＭ２４に格納させる機能を有する。
【００２７】
マイクロプロセッサ１５は、ＣＰＵモジュール１０全体を制御する中央処理装置（ＣＰＵチップ等）であり、上記プログラムＲＡＭ１１に格納されているプログラムを読出し・実行することにより、上記各定周期プログラム、等値化処理や、後述する電源ＯＮ／ＯＦＦ時の処理を実行する。
【００２８】
バックアップメモリ１６は、後述する“前回稼動状態ステータス”を格納する不揮発性メモリである。詳しくは後に図２を参照して説明する。
また、デフォルト待機系のＣＰＵモジュール２０は、その構成自体は上記ＣＰＵモジュール１０と略同様であり、プログラムＲＡＭ２１、データＲＡＭ２２、等値化バス制御部２３、受信バッファ用ＲＡＭ２４、マイクロプロセッサ２５、及びバックアップメモリ２６等を有する。勿論、待機系であるときには定周期プログラムの実行等は行わないが、後述する電源ＯＮ／ＯＦＦ時の処理は実行する。また、上記等値化処理の際には、マイクロプロセッサ２５は、上記の様に受信バッファ用ＲＡＭ２４に格納された等値化データを、等値化データ転送情報２２ｂ（マッピング情報）に従って、データＲＡＭ２２のユーザデータ領域２２ａ内の所定領域へ格納する。
【００２９】
勿論、ＣＰＵモジュール２０が稼動系に切り替わった場合には、マイクロプロセッサ２５は、ＣＰＵモジュール１０と同様、プログラムＲＡＭ２１に格納されている不図示のアプリケーションプログラムを用いて、各定周期プログラムを実行したり、等値化データ転送処理を制御する。
【００３０】
以下、図２（ａ）〜（ｃ）を参照して、本手法の特徴である電源ＯＮ／ＯＦＦ時の処理について説明する。
まず、本例では、稼動状態ステータスが、例えばマイクロプロセッサ１５、２５内の不図示のメモリ等に記憶されている（データＲＡＭに記憶されてもよい）。稼動状態ステータスは、現在の自モジュール（ＣＰＵモジュール１０又は２０）の状態が、稼動系、待機系の何れの状態であるのかを示す情報である。この稼動状態ステータスはマイクロプロセッサ１５、２５によって変更される場合がある。例えば、ＣＰＵモジュール１０においては、デフォルト状態のままであれば稼動状態ステータス＝“稼動系”となっているが、稼動／待機切り替えが行われた場合には、稼動状態ステータス＝“待機系”に変更される。ＣＰＵモジュール２０においても同様に、デフォルト状態のままであれば稼動状態ステータス＝“待機系”となっているが、稼動／待機切り替えが行われた場合には、稼動状態ステータス＝“稼動系”に変更される。
【００３１】
そして、図２（ａ）に示す通り、ＣＰＵモジュール１０の上記バックアップメモリ１６は、前回稼動状態ステータス１６ａを格納するものである。これはＣＰＵモジュール２０
のバックアップメモリ２６も同様であり、前回稼動状態ステータス２６ａを格納している。
【００３２】
そして、ＣＰＵモジュール１０において、マイクロプロセッサ１５は、図２（ｂ）に示す電源ＯＦＦ時の処理として、上記の通り記憶している稼動状態ステータスを、バックアップメモリ１６にコピーする処理を行う（ステップＳ１１）。これにより、現在の稼動状態ステータスが、前回稼動状態ステータス１６ａとして記憶された後、電源遮断されることになる。これは、ＣＰＵモジュール２０においても同様であり、マイクロプロセッサ２５によって、電源ＯＦＦ時の処理として、上記記憶している稼動状態ステータスが、バックアップメモリ２６にコピーされ、前回稼動状態ステータス２６ａとして記憶されることになる（ステップＳ１１）。
【００３３】
尚、バックアップメモリ２６は、例えばフラッシュメモリ等の不揮発性メモリであり、電源ＯＦＦされても前回稼動状態ステータスを保持し続けることができる。
そして、電源が投入されると、上記マイクロプロセッサ１５、２５は、それぞれ、電源ＯＮ時の処理として、前回稼動状態ステータス１６ａ又は２６ａを参照して、図２（ｃ）に示す稼動待機状態判定処理を実行する。
【００３４】
すなわち、ＣＰＵモジュール１０においては、マイクロプロセッサ１５は、バックアップメモリ１６から前回稼動状態ステータス１６ａを取得して（ステップＳ２１）、このステータスが“稼動系”であれば（ステップＳ２２，ＹＥＳ）、自己の状態を稼動系に確定して（ステップＳ２３）、稼動系としての処理を開始する。一方、ステータスが“待機系”であれば（ステップＳ２２，ＮＯ）、自己の状態を待機系に確定して（ステップＳ２４）、待機系としての処理を開始する。
【００３５】
尚、上記処理の際に、取得した前回稼動状態ステータス１６ａを稼動状態ステータスとして記憶する。
ＣＰＵモジュール２０においても、上記ＣＰＵモジュール１０と同様に、マイクロプロセッサ２５は、前回稼動状態ステータス２６ａに基づいて、上記図２（ｃ）の処理を実行することで、自モジュールの状態を確定する。
【００３６】
図３（ａ）〜（ｃ）に、上記本例の２重化コントローラシステムの動作例を示す。
ここで、図３（ａ）に示す状況１は、上記従来で説明した図５（ａ）に示す状況１と同じ状況である。同様に、図３（ｂ）、（ｃ）に示す状況２，３も、図５（ｂ）、（ｃ）に示す状況２，３と同じ状況である。そして、状況１，２における各ＣＰＵモジュール１０，２０の動作は、従来と略同様であるので、ここでは説明しない。従来と異なるのは、状況２から状況３になった場合の動作である。
【００３７】
すなわち、従来でも説明したように、状況２において、電源に何らかの異常が発生し、２重化コントローラシステム全体が一瞬、電源ＯＦＦしてから再びＯＮとなった場合に、ＣＰＵモジュール１０の故障状態が一過性であり正常に復帰した場合について考える。
【００３８】
この場合、まず、上記一瞬、電源ＯＦＦする際には、図２（ｂ）の電源ＯＦＦ時の処理により、ＣＰＵモジュール１０，２０は、其々、その時点での稼動状態ステータスをバックアップメモリ１６，２６へコピーすることにより、電源ＯＦＦの時点での自モジュールの状態（稼動系／待機系の何れであったのか）をバックアップ記憶するようにしている。
【００３９】
そして、上記の通り再び電源ＯＮしたときには、上記の通りＣＰＵモジュール１０も正常に起動するが、ＣＰＵモジュール１０，２０は共に、デフォルト稼動／待機設定に従わずに、図２（ｃ）に示す処理により、前回稼動状態ステータスを参照して起動時の自コン
トローラの状態（稼動系ｏｒ待機系）を決定するので、本例の状況３では図３（ｃ）に示す通り、ＣＰＵモジュール１０が待機系、ＣＰＵモジュール２０が稼動系に確定する。
【００４０】
この様に、本例では、２重化システム全体の一括による電源ＯＦＦからＯＮによる立上げ時において、電源ＯＦＦの際に稼動系状態であり最新のユーザデータを保持したＣＰＵモジュール２０が、状況３においても稼動系状態となることにより、２重化コントローラシステムの稼動状態の継続性を維持することができる。
【図面の簡単な説明】
【００４１】
【図１】本例の２重化コントローラシステムにおける稼動／待機のＣＰＵモジュールの詳細構成例である。
【図２】（ａ）〜（ｃ）は、電源ＯＮ／ＯＦＦ時の処理について説明する為の図である。
【図３】（ａ）〜（ｃ）は、本例の２重化コントローラシステムの動作例を示す図である。
【図４】従来の２重化コントローラシステム全体の概略構成図である。
【図５】（ａ）〜（ｃ）は、従来の２重化コントローラシステムの動作例を示す図である。
【符号の説明】
【００４２】
１０  ＣＰＵモジュール（デフォルト稼動系）
１１  プログラムＲＡＭ
１１ａ  ユーザプログラム
１２  データＲＡＭ
１２ａ  ユーザデータ領域
１２ｂ  等値化データ転送情報
１３  等値化バス制御部
１４  受信バッファ用ＲＡＭ
１５  マイクロプロセッサ
１６  バックアップメモリ
１６ａ  前回稼動状態ステータス
２０  ＣＰＵモジュール（デフォルト待機系）
２１  プログラムＲＡＭ
２１ａ  ユーザプログラム
２２  データＲＡＭ
２２ａ  ユーザデータ領域
２２ｂ  等値化データ転送情報
２３  等値化バス制御部
２４  受信バッファ用ＲＡＭ
２５  マイクロプロセッサ
２６  バックアップメモリ
２６ａ  前回稼動状態ステータス
【図１】
2008262426.tif 000003
【図２】
2008262426.tif 000004
【図３】
2008262426.tif 000005
【図４】
2008262426.tif 000006
【図５】
2008262426.tif 000007