(57)【要約】【課題】  稼動側と待機側とで変数のメモリマップが異なる状態で稼動／待機切替えを行っても、システムの継続運転を正常に行えるようにする。【解決手段】  稼動、待機の各ＣＰＵモジュール１−２間では、受信バッファ用ＲＡＭ１４，２４を介してユーザデータ領域１２ａ、１２ｂに格納されている等値化データの転送処理を行うが、これは各々が自己の等値化データ転送情報１２ｂ、２２ｂを参照して、ユーザデータ領域１２ａ（１２ｂ）と受信バッファ用ＲＡＭ１４（２４）との間でアドレス１対１の転送制御を行うようにする。そして、例えば待機系ＣＰＵモジュール２に新定周期プログラムをダウンロードする場合、変数マップ変更情報２２ｃもダウンロードし、これに基づいて等値化データ転送情報２２ｂを再生成する。【選択図】図２
2005285018.tif 000002
【特許請求の範囲】
【請求項１】
各々制御プログラムを格納・実行可能な稼動系と待機系のコントローラと、前記制御プログラムを前記コントローラにダウンロードする支援装置とを有する二重化コントローラシステムにおいて、
前記各コントローラは、
前記制御プログラムが使用する各変数の値を記憶・更新する第１の記憶手段と、
前記各変数を等値化処理により転送する際に該転送を中継する為に該各変数を一時的に記憶する受信バッファ用記憶手段と、
前記各変数の前記第１の記憶手段での格納位置と該受信バッファ用記憶手段での記憶位置との対応関係をアドレス１対１で示す等値化データ転送情報を記憶する第２の記憶手段と、
前記等値化データ転送情報に従ってアドレス１対１の等値化処理を行う第１の制御手段とを有し、
前記支援装置は、各制御プログラム毎に、前記各変数の前記第１の記憶手段での格納位置の情報である変数マップ情報を生成し、前記各コントローラ毎に、そのコントローラにダウンロードした制御プログラムに対応する変数マップ情報をそのコントローラに送信する第２の制御手段と有し、
前記各コントローラは、該変数マップ情報を用いて、前記等値化データ転送情報を生成／変更する転送情報生成手段と更に有することを特徴とする二重化コントローラシステム。
【請求項２】
前記制御プログラムは、前記支援装置において、作成されたソースプログラムをコンパイルして生成するものであり、該コンパイルの際に各変数の前記第１の記憶手段における格納位置が割り当てられることを特徴とする請求項１記載の二重化コントローラシステム。
【請求項３】
各々制御プログラムを格納・実行可能な稼動系と待機系のコントローラと、前記制御プログラムを前記コントローラにダウンロードする支援装置とを有する二重化コントローラシステムにおける稼動／待機切換え方法であって、
前記稼動系、待機系のコントローラに同一の制御プログラムが格納されている状態から、該待機系のコントローラに新たな制御プログラムを格納させて、更に稼動／待機切換えを行う場合において、
前記支援装置は、前記新たな制御プログラムを待機系コントローラにダウンロードすると共に、該新たな制御プログラム生成の際に得られた各変数の格納位置情報も待機系コントローラに送信し、
該待機系コントローラは、前記稼動系コントローラとの間で行う等値化処理における等値化データの転送元−転送先アドレスの対応関係をアドレス１対１で示す等値化データ転送情報を記憶しており、該新制御プログラム対応の各変数の格納位置情報に基づいて該等値化データ転送情報を再生成し、
該新たな該等値化データ転送情報を用いて等値化処理が行なわれた後、前記稼動／待機切換えが行われることを特徴とする二重化コントローラシステムにおける稼動／待機切換え方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルコントローラ等を待機冗長の二重化構成とした二重化コントローラシステムに関する。
【背景技術】
【０００２】
現在、プラント、工場などでは、工作機械や計測装置等の機器のシーケンス制御に多くのプログラマブルコントローラ等のコントローラを用い、ＦＡ（ファクトリーオートメーション）化を実現している。
【０００３】
このようなプログラマブルコントローラ・システムでは、信頼性を向上させるためにＣＰＵモジュール（コントローラ本体）を待機冗長の２重化構成にする場合がある。待機冗長の冗長２重化構成は、２つのＣＰＵモジュールを１組とし、一方を稼動系、他方を待機系とし、稼動系ＣＰＵモジュールを待機系ＣＰＵモジュールが監視して、稼動系ＣＰＵモジュールに障害等の切替え要因が生じたならば待機系ＣＰＵモジュールが稼動系に切り替る構成である。
【０００４】
このような二重化コントローラシステムの従来技術として、特許文献１に記載の技術が知られている。
図７に特許文献１に記載の二重化コントローラシステムの概略構成図を示す。
【０００５】
図示の２重化コントローラシステムは、ＣＰＵモジュール１０１−１、ＣＰＵモジュール１０１−２、及び各制御対象機器とのデータ入出力を行う複数のＩ／Ｏユニット１０２−１〜１０２−ｎ等から構成されている。尚、ここでは、ＣＰＵモジュール１０１−１が稼動系、ＣＰＵモジュール１０１−２がその待機系となっている場合を例にして説明する。
【０００６】
稼動系となっているＣＰＵモジュール１０１−１は、その内部に格納されたアプリケーションプログラムＡ（制御プログラム；例えば定周期に実行される定周期プログラム等）を実行することで、各Ｉ／Ｏユニット１０２−１〜１０２−ｎに対してシステムバス１０４を介して制御データを出力して（又は各Ｉ／Ｏユニットからセンサ計測値等を読み出して）、各制御対象機器を制御する。尚、特許文献１の発明では、複数の定周期プログラムを優先レベルに応じて実行・制御するが、ここでは簡単にして、アプリケーションプログラムＡのみ示してある。
【０００７】
一方、待機系となっているＣＰＵモジュール１０１−２は、稼動系のＣＰＵモジュール１０１−１を監視しており、稼動系ＣＰＵモジュール１０１−１に故障等の何らかの切替え要因が生じると、稼動／待機切り替え処理を実行して、ＣＰＵモジュール１０１−２が新たな稼動系となって、ＣＰＵモジュール１０１-１が行っていた処理を引き継ぐ。
【０００８】
処理を引き継ぐ為には、まず当然、ＣＰＵモジュール１０１−２にも、ＣＰＵモジュール１０１-１と同じアプリケーションプログラムが格納されている必要があるが、更に稼動系／待機系の切替えが生じたときにユーザデータ（制御データ等；以下、等値化データと呼ぶ）の整合性を持たせる必要がある為、運用中にＣＰＵモジュール１０１-１と１０１-２との間で定期的に等値化バス１０３を介して等値化処理を行っている。
【特許文献１】特開２００３−２９６１３３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上記従来技術では、ＣＰＵモジュール側では、ユーザデータ領域に格納されている等値化データ（ローカル変数、グローバル変数等）のマッピング情報を認識していなかった。すなわち、従来では通常まず、不図示のＣＰＵモジュール支援ツールが、現場作業者等が作成したユーザプログラム（ソースプログラム）をコンパイルして上記制御プログラム（マシン語プログラム）を生成し、これをＣＰＵモジュールにダウンロードする。このコンパイルの際に、各変数をマッピングして（ユーザデータ領域における格納位置を割り当てて）、この格納位置をマシン語プログラム中に埋め込んでおり、ＣＰＵモジュール側では単に制御プログラムを実行するだけでよく、各変数の格納位置を認識している必要はなかった。また、各変数の格納位置は、コンパイルする毎に変動していた。この為、ユーザデータ領域に格納されている変数データ全てを転送していた。
【００１０】
しかしながら、上記特許文献１のように各定周期プログラム実行毎に等値化処理を行う手法（マルチ等値化処理と呼ぶ）を用いる場合、各等値化処理において等値化すべき変数は、実行した定周期プログラムが使用するローカル変数と、全ての定周期プログラムが共通して使用するグローバル変数だけでよいにも係わらず、他の定周期プログラムが使用するローカル変数についても等値化していることになる。
【００１１】
これに対して、本出願の出願人は、既に、特願２００３−３２５０００号（以下、先願と呼ぶ）の発明を提案している。
この先願では、上記不図示のＣＰＵモジュール支援ツールから各ＣＰＵモジュールに、変数のマッピング情報もダウンロードするようにしている。上述したように、従来より、ＣＰＵモジュール支援ツール側ではコンパイルの際に各変数をマッピングして（格納位置を割り当てて）いるので、各変数の格納位置は当然分かっているので、この情報（マッピング情報）を各ＣＰＵモジュールにダウンロードすることで、各ＣＰＵモジュールは、各ローカル変数やグローバル変数の格納位置を認識できるようになるので、上記マルチ等値化処理において、実行した定周期プログラムが使用するローカル変数とグローバル変数のみを等値化することが可能となる。
【００１２】
図８に上記先願におけるＣＰＵモジュール１１０-１と１１０-２の構成図を示す。
尚、先願においても、システム全体の構成は、図７と略同様である。
図８において、ＣＰＵモジュール１１０−１は、マイクロプロセッサ１１１、プログラムＲＡＭ１１２、データＲＡＭ１１３、等値化バス制御部１１４、及び受信バッファ用ＲＡＭ１１５を有する。この構成自体は、ＣＰＵモジュール１１０−２も同じであり、ＣＰＵモジュール１１０−２は、マイクロプロセッサ１２１、プログラムＲＡＭ１２２、データＲＡＭ１２３、等値化バス制御部１２４、及び受信バッファ用ＲＡＭ１２５を有する。
【００１３】
プログラムＲＡＭ１１２には、ユーザプログラム１１２ａが格納されている。ユーザプログラム１１２ａは、上記制御プログラム等であり、また等値化処理をマイクロプロセッサ１１１で実行させる為の第２のアプリケーションプログラムである。データＲＡＭ１１３は、上記等値化データを格納するユーザデータ領域１１３ａを有し、更にマッピング情報１１３ｂを格納している。これらは、待機系ＣＰＵモジュール１１０−２側のプログラムＲＡＭ１２２、データＲＡＭ１２３においても同様である。尚、ユーザデータ領域１１３ａに格納される等値化データは例えば制御実行毎に随時更新され、更に更新後の等値化データが待機側のユーザデータ領域１２３ａにも格納されるように、等値化処理が行われる。
【００１４】
上記構成においてマルチ等値化処理を実行する場合には、まず、稼動系ＣＰＵモジュール１１０−１側において、任意の定周期プログラム実行毎に、マイクロプロセッサ１１１が、上記マッピング情報１１３ｂを参照して、ユーザデータ領域１１３ａに格納されている等値化データの中から、実行した定周期プログラムに係わるローカル変数と、グローバル変数とを読み出して、これらを待機系ＣＰＵモジュール１１０−２側に転送する。この転送処理自体は、マイクロプロセッサ１１１の制御の元で等値化バス制御部１１４が行う。すなわち、等値化バス制御部１１４は、等値化バス制御部１２４と連携して、等値化データを受信バッファ用ＲＡＭ１２５に書き込む。
【００１５】
尚、等値化バス制御部は、例えば“「統合化制御システムＭＩＣＲＥＸ−ＩＸのコントロールステーションの制御機能」；富士時報  Ｖｏｌ．６７  ＮＯ．６，１９９４、３４５−３４８頁”に記載の“ＳＧＭ(Sameness data Gather Memory control)”に相当する。
【００１６】
次に、待機系ＣＰＵモジュール１１０−２側では、マッピング情報１２３ｂに従って、上記受信バッファ用ＲＡＭ１２５に一時的に格納された等値化データを読み出して自己のデータＲＡＭ１２３内のユーザデータ領域１２３ａに分配（上書き）する。
【００１７】
図９にマッピング情報の一例を示す。
上記マッピング情報１１３ｂ、１２３ｂは、例えば図９に示すように、各定周期プログラムに各々対応する各ローカル変数、及びグローバル変数のユーザデータ領域１１３ａ、１２３ａにおける格納位置の情報である。図示の様に例えば定周期プログラムＡのローカル変数を例にすると、そのマッピング情報は、当該ローカル変数を構成する各変数群を格納する各ブロックの先頭アドレスとサイズ、及びブロック数とから成る。これは、他のローカル変数やグローバル変数においても同様である。
【００１８】
図１０（ａ）、（ｂ）に任意の１つのブロックに格納される変数の一例を示す。
上記の様に各ブロック毎にそれぞれ複数の変数が格納され、図示の任意の１つのブロックの例では、変数ａ，ｂ，ｃ，ｄ，・・・等が格納されている。
【００１９】
しかしながら、上記先願の手法では、各ブロック毎にその先頭アドレスとサイズの情報に基づいてデータ転送する為、例えば仮に先頭アドレス＝１００番地、サイズ＝１０ワードとした場合、この領域に格納されている変数が何であるかは関係なく、１００番地から順次（例えば１ワードずつ）１０ワード転送・等値化されることになる。
【００２０】
通常は、稼動系／待機系のＣＰＵモジュールには、同じ定周期プログラムが格納されている。よって、通常は、図１０（ａ）に示すように、稼動、待機それぞれのＣＰＵモジュールのユーザデータ領域には、上記等値化データを構成する各変数が同一アドレスにマップされているので（例えば、変数ｂは、稼動、待機とも、１０１番地に格納されている）、上記先願の手法でも何等問題はない。
【００２１】
しかしながら、以下に述べる状況では、問題が生じる場合がある。
すなわち、従来より、ユーザ要求として、運用中の２重化コントローラシステムにおいて、システムを停止せずにアプリケーションプログラム（制御プログラム）の仕様変更あるいは修正を行いたい場合がある。この場合は、まず、待機系ＣＰＵモジュール１１０−２に変更後の制御プログラムをダウンロードする。そして、その後に手動操作により稼動／待機を切替えて、ＣＰＵモジュール１１０−２に新たな制御プログラムを実行させて、システムの継続運転を行うといった運用が一般的である。
【００２２】
ここで、上記制御プログラム（定周期プログラム等）とは、オペレータ等が作成したソースプログラムをコンパイルしてＣＰＵモジュールで実行可能な形式にしたものを意味する。このように制御プログラムがコンパイルにより生成される場合は、ユーザデータ領域の変数メモリマップが、制御プログラム変更前と後で異なることが想定される。これを上記ユーザ要求に当てはめると、ＣＰＵモジュール１１０−１のユーザデータ領域１１３ａには旧制御プログラム対応のメモリマップで各変数が格納され、ＣＰＵモジュール１１０−２のユーザデータ領域１２３ａには新制御プログラム対応のメモリマップで各変数が格納されるので、ユーザデータ領域１１３ａとユーザデータ領域１２３ａとでは、各変数の格納位置が異なることが想定される。
【００２３】
例えば、図１０（ｂ）には、図上左側には制御プログラム変更前、図上右側には変更後のユーザデータ領域１２３ａのメモリマップを示す。変更前のメモリマップはユーザデータ領域１１３ａと同じであるので、図１０（ｂ）は、ユーザデータ領域１１３ａとユーザデータ領域１２３ａとを比較する図であると見なせる。これより、図１０（ｂ）に示す例では、ユーザデータ領域１１３ａとユーザデータ領域１２３ａとでは、変数ｂと変数ｃの格納アドレスが異なることになる。しかし、上記の通り、等値化処理は、変数が何であるかは関係なくアドレスにより行われるので、ユーザデータ領域１１３ａにおける１０１番地のデータ（変数ｂ）は、ユーザデータ領域１２３ａの１０１番地（変数ｃを格納すべきアドレス）に転送・格納されることになる。同様に、ユーザデータ領域１１３ａの１０２番地のデータ（変数ｃ）は、ユーザデータ領域１２３ａの１０２番地（変数ｂを格納すべきアドレス）に転送・格納されることになる。
【００２４】
この状態で稼動／待機の切換えが行われると、ＣＰＵモジュール１１０−２の新制御プログラムは、例えば１０１番地から読み出したデータは変数ｃであるとして処理を行なおうとするが、実際には１０１番地には変数ｂの値が格納されているので、正しい等値化データが引き継げない為、システム制御の引継ぎを正常に行うことができず、システム制御に支障が生じることになる。
【００２５】
この問題は、先願のように定周期プログラムが複数ある場合に限らず、定周期プログラムが１つである場合にも生じる。
本発明の課題は、外部の支援装置でコンパイルされて生成されてダウンロードされる制御プログラムを実行する稼動／待機２つのコントローラ（ＣＰＵモジュール）を有する２重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系ＣＰＵモジュールに仕様変更あるいは修正をした新制御プログラムをダウンロードして、稼動／待機切替えを行う場合でも、システムの継続運転を正常に行うことができる二重化コントローラシステム、その稼動／待機切換え方法を提供することである。
【課題を解決するための手段】
【００２６】
本発明の二重化コントローラシステムは、各々制御プログラムを格納・実行可能な稼動系と待機系のコントローラと、前記制御プログラムを前記コントローラにダウンロードする支援装置とを有する二重化コントローラシステムにおいて、前記各コントローラは、  前記制御プログラムが使用する各変数の値を記憶・更新する第１の記憶手段と、前記各変数を等値化処理により転送する際に該転送を中継する為に該各変数を一時的に記憶する受信バッファ用記憶手段と、前記各変数の前記第１の記憶手段での格納位置と該受信バッファ用記憶手段での記憶位置との対応関係をアドレス１対１で示す等値化データ転送情報を記憶する第２の記憶手段と、前記等値化データ転送情報に従ってアドレス１対１の等値化処理を行う第１の制御手段とを有し、前記支援装置は、各制御プログラム毎に、前記各変数の前記第１の記憶手段での格納位置の情報である変数マップ情報を生成し、前記各コントローラ毎に、そのコントローラにダウンロードした制御プログラムに対応する変数マップ情報をそのコントローラに送信する第２の制御手段と有し、前記各コントローラは、該変数マップ情報を用いて、前記等値化データ転送情報を生成／変更する転送情報生成手段と更に有するように構成する。
【００２７】
稼動、待機コントローラ間での等値化データ転送処理は、受信バッファ用記憶手段を介して行うが、先願では、複数の変数を格納する記憶領域の“先頭アドレス＋サイズ”により、ブロック単位で各コントローラと受信バッファ用記憶手段との間の転送を行っていた。本発明では、等値化データ転送情報を用いて、アドレス１対１で各変数毎の転送制御を行うと共に、例えば一方のコントローラの既存の制御プログラムをそのバージョンアップ版等である新制御プログラムに変更する場合には、変数のアドレス割り当てが変わる可能性があるので、支援装置は、当該新制御プログラム対応の変数マップ情報をそのコントローラに送信する。これを受信したコントローラは、この変数マップ情報を用いて自己の等値化データ転送情報を再生成する。
【００２８】
上記構成により、例えば、待機系コントローラに新制御プログラムを格納させて、運用中のシステムを停止せずに稼動／待機切換えを行う場合であっても、切換え前において待機系コントローラ側では上記再生成した等値化データ転送情報を用いて等値化処理を行うので、自己のメモリに転送される変数は新制御プログラム対応の格納位置へと転送されるので、この状態でシステムを停止せずに稼動／待機切換えを行っても、何等問題は生じることなく、システムの継続運転を正常に行うことができる。
【発明の効果】
【００２９】
本発明の二重化コントローラシステム、その稼動／待機切換え方法によれば、外部の支援装置でコンパイルされて生成されてダウンロードされるアプリケーションプログラムを実行する稼動／待機２つのコントローラ（ＣＰＵモジュール）を有する２重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系ＣＰＵモジュールに仕様変更あるいは修正をしたアプリケーションプログラムをダウンロードして、稼動／待機切替えを行う場合でも、システムの継続運転を正常に行うことができる。
【００３０】
換言すれば、待機系コントローラに仕様変更などのために変更された、ユーザデータ領域の変数メモリマップが異なるアプリケーションプログラムをダウンロードした場合にも、運用中のシステムを停止せずに稼動／待機切換えを行ってシステムの継続運転を正常に行うことができる。
【発明を実施するための最良の形態】
【００３１】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本例による二重化コントローラシステム全体の構成図である。
図１に示す二重化コントローラシステムは、ＣＰＵモジュール１、ＣＰＵモジュール２、各制御対象機器とのデータ入出力を行う複数のＩ／Ｏユニット３−１〜３−ｎより成るＩ／Ｏ群３、及びＣＰＵモジュール支援ツール６等から構成されている。尚、ここでは、デフォルトでＣＰＵモジュール１が稼動系、ＣＰＵモジュール２がその待機系となっているものとして説明する。また尚、ＣＰＵモジュールは、２重化コントローラシステムにおけるプログラマブルコントローラ本体である。
【００３２】
稼動系となっているＣＰＵモジュール１は、その内部に格納されたアプリケーションプログラム（制御プログラム；例えば定周期に実行される定周期プログラム；以下の説明では定周期プログラムを例にする）を実行することで、各Ｉ／Ｏユニット３−１〜３−ｎに対してシステムバス４を介して制御データを出力して（又は各Ｉ／Ｏユニットからセンサ計測値等を読み出して）、各制御対象機器を制御する。更に、ＣＰＵモジュール１とＣＰＵモジュール２との間には等値化バス５が設けられており、この等値化バス５を介して等値化処理を行うが、その際、等値化データ転送情報を用いて等値化データの転送制御を行う。
【００３３】
また、ＣＰＵモジュール支援ツール６とＣＰＵモジュール１及びＣＰＵモジュール２とは、不図示の専用線等によって接続されている。ＣＰＵモジュール支援ツール６自体は、特に新規の構成ではなく、従来より、ＣＰＵモジュール１、ＣＰＵモジュール２は、ＣＰＵモジュール支援ツール６から、新たな制御プログラム（改造後の定周期プログラム等）をダウンロードする等の支援を受けている。但し、本例のシステムでは、ＣＰＵモジュール支援ツール６のダウンロード部７は、新たな制御プログラムをダウンロードする際に、更に変数マップ変更情報もダウンロードしている。そして、各ＣＰＵモジュールは、この変数マップ変更情報を用いて、新たな等値化データ転送情報を作成する。尚、この例に限らず、ＣＰＵモジュール支援ツール６側で新たな等値化データ転送情報を作成し、この情報を新制御プログラムをダウンロードしたＣＰＵモジュールにダウンロードするようにしてもよい（但し、この場合には予め、ＣＰＵモジュール側で作成した旧等値化データ転送情報を、ＣＰＵモジュール支援ツール６側に渡しておく必要がある）。
【００３４】
図２は、図１に示した各ＣＰＵモジュールの構成ブロック図である。
ＣＰＵモジュール１、２は、上記の通りプログラマブルコントローラ本体であるが、ここでは本例の説明に係わる構成のみを示し、他の構成は省略して示す。
【００３５】
図２において、稼動系のＣＰＵモジュール１は、プログラムＲＡＭ１１、データＲＡＭ１２、等値化バス制御部１３、受信バッファ用ＲＡＭ１４、及びマイクロプロセッサ１５等を有する。これら以外の構成については、上記の通り、ここでの説明には特に関係ないので省略している。
【００３６】
プログラムＲＡＭ１１には、ユーザプログラム１１ａ等が格納される。ユーザプログラム１１ａは例えば上記定周期プログラム等であるが、更に後述する本手法による等値化処理、等値化データ転送情報の生成処理をマイクロプロセッサにより実現させる為の第２のアプリケーションプログラムも格納されている。
【００３７】
データＲＡＭ１２は、ユーザデータ領域１２ａを有する。ユーザデータ領域１２ａには、等値化データ（例えば制御データ等）が格納されている。またデータＲＡＭ１２は、等値化データ転送情報１２ｂを格納する。更にダウンロードされた変数マップ変更情報１２ｃを一時的に格納し、これを用いて新たな等値化データ転送情報１２ｂを生成する。等値化データ転送情報１２ｂ、変数マップ変更情報１２ｃの一例は図３、図４に示し、後に説明する。
【００３８】
マイクロプロセッサ１５は、ＣＰＵモジュール１全体を制御する中央処理装置（ＣＰＵチップ等）であり、上記プログラムＲＡＭ１１に格納されている第２のアプリケーションプログラムを用いて、各定周期プログラムの実行制御を行うと共に、等値化データ転送情報１２ｂを参照して、等値化処理を実現させる。この等値化処理において、マイクロプロセッサ１５は、等値化データ転送情報１２ｂを参照して、ユーザデータ領域１２ａに格納されている等値化データ（各変数）を読み出して、これらを待機系ＣＰＵモジュール２側に転送する為の制御を行う。この転送処理自体は、マイクロプロセッサ１５の制御の元で等値化バス制御部１３が行う。すなわち、等値化バス制御部１３は、等値化バス５を介して等値化データを転送する為の専用の構成であり、マイクロプロセッサ１５の制御の元、等値化バス制御部２３と連携して、上記各変数をそれぞれ受信バッファ用ＲＡＭ２４における所定の格納位置に書き込ませる。尚、ＣＰＵモジュール２側では、マイクロプロセッサ２５が、等値化データ転送情報２２ｂを参照しつつ、等値化バス制御部２３を制御して、受信バッファ用ＲＡＭ２４の上記所定の格納位置に一時記憶された各変数を、ユーザデータ領域２２ａの各格納位置へと転送させる。
【００３９】
尚、等値化バス制御部１３は、例えば上記“ＳＧＭ(Sameness data Gather Memory control)”に相当する。
また、デフォルト待機系のＣＰＵモジュール２は、プログラムＲＡＭ２１、データＲＡＭ２２、等値化バス制御部２３、受信バッファ用ＲＡＭ２４、及びマイクロプロセッサ２５等を有する。この構成自体は、デフォルト稼動系ＣＰＵモジュール１と同じであるので、特に説明しないが、マイクロプロセッサ２５は、プログラムＲＡＭ２１に格納されている第３のアプリケーションプログラムを用いて、上記待機系ＣＰＵモジュールとしての等値化処理や後述する等値化データ転送情報生成処理等を実現させる。尚、マイクロプロセッサ２５は、マイクロプロセッサ１５とは異なり、各定周期プログラムの実行制御は行っていない。但し、これは、ＣＰＵモジュール２が待機系のときの話であり、稼動系に切り替わった場合にはマイクロプロセッサ２５は各定周期プログラムの実行制御も行う。
【００４０】
図３（ａ）、（ｂ）に等値化データ転送情報１２ｂ、２２ｂの一例を示す。
等値化データ転送情報１２ｂ、２２ｂは、上記先願のマッピング情報と同様に等値化データ転送制御に用いるデータであるが、先願のマッピング情報が各ブロック毎に「先頭アドレス＋サイズ」の情報であったのに対して、図３（ａ）、（ｂ）に示す情報となる。すなわち、任意の１つのブロックに含まれる各変数ａ，ｂ，ｃ，ｄ・・・毎に、その変数のユーザデータ領域１２ａ又は２２ａにおける格納アドレスと受信バッファ用ＲＡＭ２４における格納アドレスとを１対１で対応付けた情報となる。尚、図３（ａ）、（ｂ）では各変数ａ，ｂ，ｃ，ｄ毎に対応付けてその格納アドレスが示されているように見えるが、これは説明し易くする為であり、実際には単に例えば稼動側の１０１番地のデータが（それがどの変数であるかは関係なく）受信バッファ用ＲＡＭ２４を介して待機側の１０１番地に転送されるようにする為の情報となる。すなわち、単に、先願ではブロック単位で行っていた等値化データ転送制御を、ワード単位で行うようにする情報を作成するだけである。但し、支援ツール６側では各変数毎の格納位置は分かっているので、この例に限らず、各変数毎に対応付けた格納アドレス情報とすることもできる。この場合には、ＣＰＵモジュール側でどの変数がどのアドレスに格納されているかを認識できるようになる。
【００４１】
この等値化データ転送情報１２ｂ、２２ｂは、各ＣＰＵモジュール１、２が、ＣＰＵモジュール支援ツール６からダウンロードされる変数マップ変更情報に基づいて作成・更新する。これについては後に説明する。
【００４２】
但し、この例に限らず、等値化データ転送情報を最初に作成するときには（例えば初期のシステム立ち上げ時等）、上記先願の各ブロック毎の「先頭アドレス＋サイズ」の情報に基づいて等値化データ転送情報を作成することもできる。但し、その際、ＣＰＵモジュール１、２に格納される定周期プログラムは同じである必要があり（つまり、稼動、待機それぞれのユーザデータ領域には、各変数が同一アドレスにマップされている必要がある）、また後に等値化データ転送情報を変更する際には変数マップ変更情報に基づいて変更する必要がある。但し、この場合、後の等値化データ転送情報変更の際に一方のＣＰＵモジュールのみ変更すると対応関係が崩れるので、後述する変数マップ変更情報により両方のＣＰＵモジュールの等値化データ転送情報を更新する。これは逆に言えば、最初から変数マップ変更情報に基づいて等値化データ転送情報を作成している場合には、変数マップ変更情報は必ずしも後述する図４のような２つのＣＰＵモジュール両方のデータを有するものでなくてもよく、どちらか一方の（新定周期プログラムをダウンロードした）ＣＰＵモジュールのデータのみとしてもよい。
【００４３】
以下の説明では、等値化データ転送情報は、最初から変数マップ変更情報に基づいて作成されるものとして説明する。
この場合、各ＣＰＵモジュールは、初めて等値化データ転送情報を作成する際には、まず、後述するように変数マップ変更情報から自モジュールに関するデータのみを取り出すことで、図３のユーザデータ領域アドレス３２，４２の部分を作成する。更に、この各アドレスのデータの受信バッファ用ＲＡＭにおける格納アドレス（転送先／転送元アドレス）を割り当てて、受信バッファアドレス３１、４１の部分を作成する。先願においてもＣＰＵモジュール側で任意に転送先／転送元アドレスを割り当てており、先願ではブロック単位であるが、本例ではワード単位としているだけである。よって、転送先（転送元）アドレスの割り当て方は任意であってよいが、稼動／待機両方のＣＰＵモジュールで同じ割り当て方をする必要がある。
【００４４】
図４（ａ）には変数マップ変更情報のフォーマットを示し、図４（ｂ）にはその具体例を示す。
図４（ａ）に示すように、変数マップ変更情報は、各変数毎に、デフォルト稼動／待機それぞれのＣＰＵモジュールのユーザデータ領域における格納位置（アドレス）を示すデータである。ＣＰＵモジュール支援ツール６は、新たな定周期プログラムをＣＰＵモジュールにダウンロードする場合、変数マップ変更情報においてダウンロード先のＣＰＵモジュールに対応するデータのみを、新たな定周期プログラムのコンパイル時に各変数に割り当てたアドレス（ユーザデータ領域アドレス）へと変更する。
【００４５】
図４（ｂ）は、図４（ａ）のフォーマットに従う変数マップ変更情報の具体例である。図示の例は、デフォルト待機側に新定周期プログラムをダウンロードする為に、待機側のデータのみ変更した場合を示す。よって、稼動側のデータは旧定周期プログラムに対応した状態のままであり、変数ａ，ｂ，ｃ，ｄそれぞれに100,101,102,103番地が対応付けられる。一方、待機側のデータは、変数ａ，ｂ，ｃ，ｄそれぞれに100,102,101,103番地が対応付けられる。
【００４６】
変数マップ変更情報が各ＣＰＵモジュール１，２、にダウンロードされると、各ＣＰＵモジュールは各々、図５に示すように、この変数マップ変更情報から、ＣＰＵモジュール１は先頭データから一つおきに、ＣＰＵモジュール２は２番目のデータから一つおきに、順次データを読み出して整列させることで、等値化データ転送情報におけるユーザデータ領域アドレス３２、４２の部分が新たに作成・更新される。尚、受信バッファアドレス３１，４１の部分は変更しない。
【００４７】
そして、ＣＰＵモジュール支援ツール６から、待機系ＣＰＵモジュール２に対して新定周期プログラムをダウンロードする時に、稼動系ＣＰＵモジュール１、待機系ＣＰＵモジュール２の両方に上記変更後の変数マップ変更情報をダウンロードすることにより、変数メモリマップに変更があったことを各ＣＰＵモジュールに通知する。これより、図５に示すように、稼動ＣＰＵモジュール１、待機ＣＰＵモジュール２はそれぞれ変数マップ変更情報を元に新たな等値化データ転送情報を生成する。この新しい等値化データ転送情報に従って等値化処理は実行される。その一例を図６に示す。
【００４８】
図６は、新たな等値化データ転送情報を生成後に、稼動／待機切換え処理を実行する前における等値化処理を示す図である。
すなわち、上記課題で述べた通り、上記ユーザ要求による変更はシステムを停止せずに行う為、待機系ＣＰＵモジュール２に新アプリケーションプログラムをダウンロードしてから稼動／待機切換えが行われるまでの間にも、ＣＰＵモジュール１を稼動系とした等値化処理が行われることになる。よって、この間に、待機側で新たな等値化データ転送情報を用いて等値化処理を行うことで、ユーザデータ領域１２３ａの各変数の格納位置に正しく変数を転送できるようにすることができる（つまり、新アプリケーション対応の格納位置に転送できる）。
【００４９】
図６に示すように、本例の等値化処理は、等値化データ転送情報を用いて、ユーザデータ領域−受信バッファ用ＲＡＭ間でのアドレス１対１のデータ転送により実現する。すなわち、まず、稼動系ＣＰＵモジュール１のユーザデータ領域１２ａから受信バッファ用ＲＡＭ２４への等値化データ転送は、等値化データ転送情報１２ｂを一行ずつ参照して、各行毎の対応関係に従って、ユーザデータ領域１２ａから１ワードずつ受信バッファ用ＲＡＭ２４へデータ転送する（ユーザデータ領域アドレス３２のデータを読み出して、これを対応する受信バッファアドレス３１に転送する）処理を繰返し実行する。図示の例では、例えば１０１番地のデータ（変数ｂ）は受信バッファの０１番地に転送され、１０２番地のデータ（変数ｃ）は受信バッファの０２番地に転送される。
【００５０】
一方、待機系ＣＰＵモジュール２は、等値化データ転送情報２２ｂを１行ずつ参照して、各行毎の対応関係に従って、受信バッファ用ＲＡＭ２４から１ワードずつユーザデータ領域１２ａへデータ転送する（受信バッファアドレス４１のデータを読み出して、これを対応するユーザデータ領域アドレス４２に転送する）処理を繰返し実行する。図示の例では例えば０１番地のデータ（変数ｂ）はユーザデータ領域２２ａの１０２番地に転送され、０２番地のデータ（変数ｃ）はユーザデータ領域２２ａの１０１番地に転送される。
【００５１】
新アプリケーションは、コンパイル時に、変数ｂは１０２番地、変数ｃは１０１番地に割り当てられているので、新アプリケーション対応のアドレスへと転送されることになる。よって、その後に稼動／待機切換えを行う場合、問題なく制御処理を引き継ぐことができる。
【００５２】
以上説明した本手法によれば、外部の支援装置でコンパイルされて生成されてダウンロードされるアプリケーションプログラムを実行する稼動／待機２つのコントローラ（ＣＰＵモジュール）を有する２重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系ＣＰＵモジュールに仕様変更あるいは修正をしたアプリケーションプログラムをダウンロードして、稼動／待機切替えを行う場合でも、システムの継続運転を正常に行うことができる。
【図面の簡単な説明】
【００５３】
【図１】本例による二重化コントローラシステム全体の構成図である。
【図２】図１に示した各ＣＰＵモジュールの構成ブロック図である。
【図３】（ａ）、（ｂ）は等値化データ転送情報の一例を示す図である。
【図４】（ａ）、（ｂ）は、変数マップ変更情報の一例を示す図である。
【図５】変数マップ変更情報に基づく等値化データ転送情報の変更処理を説明する為の図である。
【図６】変更後の等値化データ転送情報を用いた等値化処理を示す図である。
【図７】従来の二重化コントローラシステムの概略構成図である。
【図８】先願における各ＣＰＵモジュールの構成図である。
【図９】マッピング情報の一例を示す図である。
【図１０】（ａ）、（ｂ）に任意の１つのブロックに格納される変数の一例を示す。
【符号の説明】
【００５４】
１  ＣＰＵモジュール
２  ＣＰＵモジュール
３  Ｉ／Ｏ群
４  システムバス
５  等値化バス
６  ＣＰＵモジュール支援ツール
１１  プログラムＲＡＭ
１１ａ  ユーザプログラム
１２  データＲＡＭ
１２ａ  ユーザデータ領域
１２ｂ  等値化データ転送情報
１２ｃ  変数マップ変更情報
１３  等値化バス制御部
１４  受信バッファ用ＲＡＭ
１５  マイクロプロセッサ
２１  プログラムＲＡＭ
２１ａ  ユーザプログラム
２２  データＲＡＭ
２２ａ  ユーザデータ領域
２２ｂ  等値化データ転送情報
２２ｃ  変数マップ変更情報
２３  等値化バス制御部
２４  受信バッファ用ＲＡＭ
２５  マイクロプロセッサ
３１  受信バッファアドレス
３２  ユーザデータ領域アドレス
４１  受信バッファアドレス
４２  ユーザデータ領域アドレス
【図１】
2005285018.tif 000003
【図２】
2005285018.tif 000004
【図３】
2005285018.tif 000005
【図４】
2005285018.tif 000006
【図５】
2005285018.tif 000007
【図６】
2005285018.tif 000008
【図７】
2005285018.tif 000009
【図８】
2005285018.tif 000010
【図９】
2005285018.tif 000011
【図１０】
2005285018.tif 000012