JP2005285018A - 2重化コントローラシステム、その稼動/待機切換え方法 - Google Patents
2重化コントローラシステム、その稼動/待機切換え方法 Download PDFInfo
- Publication number
- JP2005285018A JP2005285018A JP2004101530A JP2004101530A JP2005285018A JP 2005285018 A JP2005285018 A JP 2005285018A JP 2004101530 A JP2004101530 A JP 2004101530A JP 2004101530 A JP2004101530 A JP 2004101530A JP 2005285018 A JP2005285018 A JP 2005285018A
- Authority
- JP
- Japan
- Prior art keywords
- variable
- standby
- controller
- control program
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Hardware Redundancy (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
【課題】 稼動側と待機側とで変数のメモリマップが異なる状態で稼動/待機切替えを行っても、システムの継続運転を正常に行えるようにする。
【解決手段】 稼動、待機の各CPUモジュール1−2間では、受信バッファ用RAM14,24を介してユーザデータ領域12a、12bに格納されている等値化データの転送処理を行うが、これは各々が自己の等値化データ転送情報12b、22bを参照して、ユーザデータ領域12a(12b)と受信バッファ用RAM14(24)との間でアドレス1対1の転送制御を行うようにする。そして、例えば待機系CPUモジュール2に新定周期プログラムをダウンロードする場合、変数マップ変更情報22cもダウンロードし、これに基づいて等値化データ転送情報22bを再生成する。
【選択図】図2
【解決手段】 稼動、待機の各CPUモジュール1−2間では、受信バッファ用RAM14,24を介してユーザデータ領域12a、12bに格納されている等値化データの転送処理を行うが、これは各々が自己の等値化データ転送情報12b、22bを参照して、ユーザデータ領域12a(12b)と受信バッファ用RAM14(24)との間でアドレス1対1の転送制御を行うようにする。そして、例えば待機系CPUモジュール2に新定周期プログラムをダウンロードする場合、変数マップ変更情報22cもダウンロードし、これに基づいて等値化データ転送情報22bを再生成する。
【選択図】図2
Description
本発明は、プログラマブルコントローラ等を待機冗長の二重化構成とした二重化コントローラシステムに関する。
現在、プラント、工場などでは、工作機械や計測装置等の機器のシーケンス制御に多くのプログラマブルコントローラ等のコントローラを用い、FA(ファクトリーオートメーション)化を実現している。
このようなプログラマブルコントローラ・システムでは、信頼性を向上させるためにCPUモジュール(コントローラ本体)を待機冗長の2重化構成にする場合がある。待機冗長の冗長2重化構成は、2つのCPUモジュールを1組とし、一方を稼動系、他方を待機系とし、稼動系CPUモジュールを待機系CPUモジュールが監視して、稼動系CPUモジュールに障害等の切替え要因が生じたならば待機系CPUモジュールが稼動系に切り替る構成である。
このような二重化コントローラシステムの従来技術として、特許文献1に記載の技術が知られている。
図7に特許文献1に記載の二重化コントローラシステムの概略構成図を示す。
図7に特許文献1に記載の二重化コントローラシステムの概略構成図を示す。
図示の2重化コントローラシステムは、CPUモジュール101−1、CPUモジュール101−2、及び各制御対象機器とのデータ入出力を行う複数のI/Oユニット102−1〜102−n等から構成されている。尚、ここでは、CPUモジュール101−1が稼動系、CPUモジュール101−2がその待機系となっている場合を例にして説明する。
稼動系となっているCPUモジュール101−1は、その内部に格納されたアプリケーションプログラムA(制御プログラム;例えば定周期に実行される定周期プログラム等)を実行することで、各I/Oユニット102−1〜102−nに対してシステムバス104を介して制御データを出力して(又は各I/Oユニットからセンサ計測値等を読み出して)、各制御対象機器を制御する。尚、特許文献1の発明では、複数の定周期プログラムを優先レベルに応じて実行・制御するが、ここでは簡単にして、アプリケーションプログラムAのみ示してある。
一方、待機系となっているCPUモジュール101−2は、稼動系のCPUモジュール101−1を監視しており、稼動系CPUモジュール101−1に故障等の何らかの切替え要因が生じると、稼動/待機切り替え処理を実行して、CPUモジュール101−2が新たな稼動系となって、CPUモジュール101-1が行っていた処理を引き継ぐ。
処理を引き継ぐ為には、まず当然、CPUモジュール101−2にも、CPUモジュール101-1と同じアプリケーションプログラムが格納されている必要があるが、更に稼動系/待機系の切替えが生じたときにユーザデータ(制御データ等;以下、等値化データと呼ぶ)の整合性を持たせる必要がある為、運用中にCPUモジュール101-1と101-2との間で定期的に等値化バス103を介して等値化処理を行っている。
特開2003−296133号公報
上記従来技術では、CPUモジュール側では、ユーザデータ領域に格納されている等値化データ(ローカル変数、グローバル変数等)のマッピング情報を認識していなかった。すなわち、従来では通常まず、不図示のCPUモジュール支援ツールが、現場作業者等が作成したユーザプログラム(ソースプログラム)をコンパイルして上記制御プログラム(マシン語プログラム)を生成し、これをCPUモジュールにダウンロードする。このコンパイルの際に、各変数をマッピングして(ユーザデータ領域における格納位置を割り当てて)、この格納位置をマシン語プログラム中に埋め込んでおり、CPUモジュール側では単に制御プログラムを実行するだけでよく、各変数の格納位置を認識している必要はなかった。また、各変数の格納位置は、コンパイルする毎に変動していた。この為、ユーザデータ領域に格納されている変数データ全てを転送していた。
しかしながら、上記特許文献1のように各定周期プログラム実行毎に等値化処理を行う手法(マルチ等値化処理と呼ぶ)を用いる場合、各等値化処理において等値化すべき変数は、実行した定周期プログラムが使用するローカル変数と、全ての定周期プログラムが共通して使用するグローバル変数だけでよいにも係わらず、他の定周期プログラムが使用するローカル変数についても等値化していることになる。
これに対して、本出願の出願人は、既に、特願2003−325000号(以下、先願と呼ぶ)の発明を提案している。
この先願では、上記不図示のCPUモジュール支援ツールから各CPUモジュールに、変数のマッピング情報もダウンロードするようにしている。上述したように、従来より、CPUモジュール支援ツール側ではコンパイルの際に各変数をマッピングして(格納位置を割り当てて)いるので、各変数の格納位置は当然分かっているので、この情報(マッピング情報)を各CPUモジュールにダウンロードすることで、各CPUモジュールは、各ローカル変数やグローバル変数の格納位置を認識できるようになるので、上記マルチ等値化処理において、実行した定周期プログラムが使用するローカル変数とグローバル変数のみを等値化することが可能となる。
この先願では、上記不図示のCPUモジュール支援ツールから各CPUモジュールに、変数のマッピング情報もダウンロードするようにしている。上述したように、従来より、CPUモジュール支援ツール側ではコンパイルの際に各変数をマッピングして(格納位置を割り当てて)いるので、各変数の格納位置は当然分かっているので、この情報(マッピング情報)を各CPUモジュールにダウンロードすることで、各CPUモジュールは、各ローカル変数やグローバル変数の格納位置を認識できるようになるので、上記マルチ等値化処理において、実行した定周期プログラムが使用するローカル変数とグローバル変数のみを等値化することが可能となる。
図8に上記先願におけるCPUモジュール110-1と110-2の構成図を示す。
尚、先願においても、システム全体の構成は、図7と略同様である。
図8において、CPUモジュール110−1は、マイクロプロセッサ111、プログラムRAM112、データRAM113、等値化バス制御部114、及び受信バッファ用RAM115を有する。この構成自体は、CPUモジュール110−2も同じであり、CPUモジュール110−2は、マイクロプロセッサ121、プログラムRAM122、データRAM123、等値化バス制御部124、及び受信バッファ用RAM125を有する。
尚、先願においても、システム全体の構成は、図7と略同様である。
図8において、CPUモジュール110−1は、マイクロプロセッサ111、プログラムRAM112、データRAM113、等値化バス制御部114、及び受信バッファ用RAM115を有する。この構成自体は、CPUモジュール110−2も同じであり、CPUモジュール110−2は、マイクロプロセッサ121、プログラムRAM122、データRAM123、等値化バス制御部124、及び受信バッファ用RAM125を有する。
プログラムRAM112には、ユーザプログラム112aが格納されている。ユーザプログラム112aは、上記制御プログラム等であり、また等値化処理をマイクロプロセッサ111で実行させる為の第2のアプリケーションプログラムである。データRAM113は、上記等値化データを格納するユーザデータ領域113aを有し、更にマッピング情報113bを格納している。これらは、待機系CPUモジュール110−2側のプログラムRAM122、データRAM123においても同様である。尚、ユーザデータ領域113aに格納される等値化データは例えば制御実行毎に随時更新され、更に更新後の等値化データが待機側のユーザデータ領域123aにも格納されるように、等値化処理が行われる。
上記構成においてマルチ等値化処理を実行する場合には、まず、稼動系CPUモジュール110−1側において、任意の定周期プログラム実行毎に、マイクロプロセッサ111が、上記マッピング情報113bを参照して、ユーザデータ領域113aに格納されている等値化データの中から、実行した定周期プログラムに係わるローカル変数と、グローバル変数とを読み出して、これらを待機系CPUモジュール110−2側に転送する。この転送処理自体は、マイクロプロセッサ111の制御の元で等値化バス制御部114が行う。すなわち、等値化バス制御部114は、等値化バス制御部124と連携して、等値化データを受信バッファ用RAM125に書き込む。
尚、等値化バス制御部は、例えば“「統合化制御システムMICREX−IXのコントロールステーションの制御機能」;富士時報 Vol.67 NO.6,1994、345−348頁”に記載の“SGM(Sameness data Gather Memory control)”に相当する。
次に、待機系CPUモジュール110−2側では、マッピング情報123bに従って、上記受信バッファ用RAM125に一時的に格納された等値化データを読み出して自己のデータRAM123内のユーザデータ領域123aに分配(上書き)する。
図9にマッピング情報の一例を示す。
上記マッピング情報113b、123bは、例えば図9に示すように、各定周期プログラムに各々対応する各ローカル変数、及びグローバル変数のユーザデータ領域113a、123aにおける格納位置の情報である。図示の様に例えば定周期プログラムAのローカル変数を例にすると、そのマッピング情報は、当該ローカル変数を構成する各変数群を格納する各ブロックの先頭アドレスとサイズ、及びブロック数とから成る。これは、他のローカル変数やグローバル変数においても同様である。
上記マッピング情報113b、123bは、例えば図9に示すように、各定周期プログラムに各々対応する各ローカル変数、及びグローバル変数のユーザデータ領域113a、123aにおける格納位置の情報である。図示の様に例えば定周期プログラムAのローカル変数を例にすると、そのマッピング情報は、当該ローカル変数を構成する各変数群を格納する各ブロックの先頭アドレスとサイズ、及びブロック数とから成る。これは、他のローカル変数やグローバル変数においても同様である。
図10(a)、(b)に任意の1つのブロックに格納される変数の一例を示す。
上記の様に各ブロック毎にそれぞれ複数の変数が格納され、図示の任意の1つのブロックの例では、変数a,b,c,d,・・・等が格納されている。
上記の様に各ブロック毎にそれぞれ複数の変数が格納され、図示の任意の1つのブロックの例では、変数a,b,c,d,・・・等が格納されている。
しかしながら、上記先願の手法では、各ブロック毎にその先頭アドレスとサイズの情報に基づいてデータ転送する為、例えば仮に先頭アドレス=100番地、サイズ=10ワードとした場合、この領域に格納されている変数が何であるかは関係なく、100番地から順次(例えば1ワードずつ)10ワード転送・等値化されることになる。
通常は、稼動系/待機系のCPUモジュールには、同じ定周期プログラムが格納されている。よって、通常は、図10(a)に示すように、稼動、待機それぞれのCPUモジュールのユーザデータ領域には、上記等値化データを構成する各変数が同一アドレスにマップされているので(例えば、変数bは、稼動、待機とも、101番地に格納されている)、上記先願の手法でも何等問題はない。
しかしながら、以下に述べる状況では、問題が生じる場合がある。
すなわち、従来より、ユーザ要求として、運用中の2重化コントローラシステムにおいて、システムを停止せずにアプリケーションプログラム(制御プログラム)の仕様変更あるいは修正を行いたい場合がある。この場合は、まず、待機系CPUモジュール110−2に変更後の制御プログラムをダウンロードする。そして、その後に手動操作により稼動/待機を切替えて、CPUモジュール110−2に新たな制御プログラムを実行させて、システムの継続運転を行うといった運用が一般的である。
すなわち、従来より、ユーザ要求として、運用中の2重化コントローラシステムにおいて、システムを停止せずにアプリケーションプログラム(制御プログラム)の仕様変更あるいは修正を行いたい場合がある。この場合は、まず、待機系CPUモジュール110−2に変更後の制御プログラムをダウンロードする。そして、その後に手動操作により稼動/待機を切替えて、CPUモジュール110−2に新たな制御プログラムを実行させて、システムの継続運転を行うといった運用が一般的である。
ここで、上記制御プログラム(定周期プログラム等)とは、オペレータ等が作成したソースプログラムをコンパイルしてCPUモジュールで実行可能な形式にしたものを意味する。このように制御プログラムがコンパイルにより生成される場合は、ユーザデータ領域の変数メモリマップが、制御プログラム変更前と後で異なることが想定される。これを上記ユーザ要求に当てはめると、CPUモジュール110−1のユーザデータ領域113aには旧制御プログラム対応のメモリマップで各変数が格納され、CPUモジュール110−2のユーザデータ領域123aには新制御プログラム対応のメモリマップで各変数が格納されるので、ユーザデータ領域113aとユーザデータ領域123aとでは、各変数の格納位置が異なることが想定される。
例えば、図10(b)には、図上左側には制御プログラム変更前、図上右側には変更後のユーザデータ領域123aのメモリマップを示す。変更前のメモリマップはユーザデータ領域113aと同じであるので、図10(b)は、ユーザデータ領域113aとユーザデータ領域123aとを比較する図であると見なせる。これより、図10(b)に示す例では、ユーザデータ領域113aとユーザデータ領域123aとでは、変数bと変数cの格納アドレスが異なることになる。しかし、上記の通り、等値化処理は、変数が何であるかは関係なくアドレスにより行われるので、ユーザデータ領域113aにおける101番地のデータ(変数b)は、ユーザデータ領域123aの101番地(変数cを格納すべきアドレス)に転送・格納されることになる。同様に、ユーザデータ領域113aの102番地のデータ(変数c)は、ユーザデータ領域123aの102番地(変数bを格納すべきアドレス)に転送・格納されることになる。
この状態で稼動/待機の切換えが行われると、CPUモジュール110−2の新制御プログラムは、例えば101番地から読み出したデータは変数cであるとして処理を行なおうとするが、実際には101番地には変数bの値が格納されているので、正しい等値化データが引き継げない為、システム制御の引継ぎを正常に行うことができず、システム制御に支障が生じることになる。
この問題は、先願のように定周期プログラムが複数ある場合に限らず、定周期プログラムが1つである場合にも生じる。
本発明の課題は、外部の支援装置でコンパイルされて生成されてダウンロードされる制御プログラムを実行する稼動/待機2つのコントローラ(CPUモジュール)を有する2重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系CPUモジュールに仕様変更あるいは修正をした新制御プログラムをダウンロードして、稼動/待機切替えを行う場合でも、システムの継続運転を正常に行うことができる二重化コントローラシステム、その稼動/待機切換え方法を提供することである。
本発明の課題は、外部の支援装置でコンパイルされて生成されてダウンロードされる制御プログラムを実行する稼動/待機2つのコントローラ(CPUモジュール)を有する2重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系CPUモジュールに仕様変更あるいは修正をした新制御プログラムをダウンロードして、稼動/待機切替えを行う場合でも、システムの継続運転を正常に行うことができる二重化コントローラシステム、その稼動/待機切換え方法を提供することである。
本発明の二重化コントローラシステムは、各々制御プログラムを格納・実行可能な稼動系と待機系のコントローラと、前記制御プログラムを前記コントローラにダウンロードする支援装置とを有する二重化コントローラシステムにおいて、前記各コントローラは、 前記制御プログラムが使用する各変数の値を記憶・更新する第1の記憶手段と、前記各変数を等値化処理により転送する際に該転送を中継する為に該各変数を一時的に記憶する受信バッファ用記憶手段と、前記各変数の前記第1の記憶手段での格納位置と該受信バッファ用記憶手段での記憶位置との対応関係をアドレス1対1で示す等値化データ転送情報を記憶する第2の記憶手段と、前記等値化データ転送情報に従ってアドレス1対1の等値化処理を行う第1の制御手段とを有し、前記支援装置は、各制御プログラム毎に、前記各変数の前記第1の記憶手段での格納位置の情報である変数マップ情報を生成し、前記各コントローラ毎に、そのコントローラにダウンロードした制御プログラムに対応する変数マップ情報をそのコントローラに送信する第2の制御手段と有し、前記各コントローラは、該変数マップ情報を用いて、前記等値化データ転送情報を生成/変更する転送情報生成手段と更に有するように構成する。
稼動、待機コントローラ間での等値化データ転送処理は、受信バッファ用記憶手段を介して行うが、先願では、複数の変数を格納する記憶領域の“先頭アドレス+サイズ”により、ブロック単位で各コントローラと受信バッファ用記憶手段との間の転送を行っていた。本発明では、等値化データ転送情報を用いて、アドレス1対1で各変数毎の転送制御を行うと共に、例えば一方のコントローラの既存の制御プログラムをそのバージョンアップ版等である新制御プログラムに変更する場合には、変数のアドレス割り当てが変わる可能性があるので、支援装置は、当該新制御プログラム対応の変数マップ情報をそのコントローラに送信する。これを受信したコントローラは、この変数マップ情報を用いて自己の等値化データ転送情報を再生成する。
上記構成により、例えば、待機系コントローラに新制御プログラムを格納させて、運用中のシステムを停止せずに稼動/待機切換えを行う場合であっても、切換え前において待機系コントローラ側では上記再生成した等値化データ転送情報を用いて等値化処理を行うので、自己のメモリに転送される変数は新制御プログラム対応の格納位置へと転送されるので、この状態でシステムを停止せずに稼動/待機切換えを行っても、何等問題は生じることなく、システムの継続運転を正常に行うことができる。
本発明の二重化コントローラシステム、その稼動/待機切換え方法によれば、外部の支援装置でコンパイルされて生成されてダウンロードされるアプリケーションプログラムを実行する稼動/待機2つのコントローラ(CPUモジュール)を有する2重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系CPUモジュールに仕様変更あるいは修正をしたアプリケーションプログラムをダウンロードして、稼動/待機切替えを行う場合でも、システムの継続運転を正常に行うことができる。
換言すれば、待機系コントローラに仕様変更などのために変更された、ユーザデータ領域の変数メモリマップが異なるアプリケーションプログラムをダウンロードした場合にも、運用中のシステムを停止せずに稼動/待機切換えを行ってシステムの継続運転を正常に行うことができる。
以下、図面を参照して、本発明の実施の形態について説明する。
図1は、本例による二重化コントローラシステム全体の構成図である。
図1に示す二重化コントローラシステムは、CPUモジュール1、CPUモジュール2、各制御対象機器とのデータ入出力を行う複数のI/Oユニット3−1〜3−nより成るI/O群3、及びCPUモジュール支援ツール6等から構成されている。尚、ここでは、デフォルトでCPUモジュール1が稼動系、CPUモジュール2がその待機系となっているものとして説明する。また尚、CPUモジュールは、2重化コントローラシステムにおけるプログラマブルコントローラ本体である。
図1は、本例による二重化コントローラシステム全体の構成図である。
図1に示す二重化コントローラシステムは、CPUモジュール1、CPUモジュール2、各制御対象機器とのデータ入出力を行う複数のI/Oユニット3−1〜3−nより成るI/O群3、及びCPUモジュール支援ツール6等から構成されている。尚、ここでは、デフォルトでCPUモジュール1が稼動系、CPUモジュール2がその待機系となっているものとして説明する。また尚、CPUモジュールは、2重化コントローラシステムにおけるプログラマブルコントローラ本体である。
稼動系となっているCPUモジュール1は、その内部に格納されたアプリケーションプログラム(制御プログラム;例えば定周期に実行される定周期プログラム;以下の説明では定周期プログラムを例にする)を実行することで、各I/Oユニット3−1〜3−nに対してシステムバス4を介して制御データを出力して(又は各I/Oユニットからセンサ計測値等を読み出して)、各制御対象機器を制御する。更に、CPUモジュール1とCPUモジュール2との間には等値化バス5が設けられており、この等値化バス5を介して等値化処理を行うが、その際、等値化データ転送情報を用いて等値化データの転送制御を行う。
また、CPUモジュール支援ツール6とCPUモジュール1及びCPUモジュール2とは、不図示の専用線等によって接続されている。CPUモジュール支援ツール6自体は、特に新規の構成ではなく、従来より、CPUモジュール1、CPUモジュール2は、CPUモジュール支援ツール6から、新たな制御プログラム(改造後の定周期プログラム等)をダウンロードする等の支援を受けている。但し、本例のシステムでは、CPUモジュール支援ツール6のダウンロード部7は、新たな制御プログラムをダウンロードする際に、更に変数マップ変更情報もダウンロードしている。そして、各CPUモジュールは、この変数マップ変更情報を用いて、新たな等値化データ転送情報を作成する。尚、この例に限らず、CPUモジュール支援ツール6側で新たな等値化データ転送情報を作成し、この情報を新制御プログラムをダウンロードしたCPUモジュールにダウンロードするようにしてもよい(但し、この場合には予め、CPUモジュール側で作成した旧等値化データ転送情報を、CPUモジュール支援ツール6側に渡しておく必要がある)。
図2は、図1に示した各CPUモジュールの構成ブロック図である。
CPUモジュール1、2は、上記の通りプログラマブルコントローラ本体であるが、ここでは本例の説明に係わる構成のみを示し、他の構成は省略して示す。
CPUモジュール1、2は、上記の通りプログラマブルコントローラ本体であるが、ここでは本例の説明に係わる構成のみを示し、他の構成は省略して示す。
図2において、稼動系のCPUモジュール1は、プログラムRAM11、データRAM12、等値化バス制御部13、受信バッファ用RAM14、及びマイクロプロセッサ15等を有する。これら以外の構成については、上記の通り、ここでの説明には特に関係ないので省略している。
プログラムRAM11には、ユーザプログラム11a等が格納される。ユーザプログラム11aは例えば上記定周期プログラム等であるが、更に後述する本手法による等値化処理、等値化データ転送情報の生成処理をマイクロプロセッサにより実現させる為の第2のアプリケーションプログラムも格納されている。
データRAM12は、ユーザデータ領域12aを有する。ユーザデータ領域12aには、等値化データ(例えば制御データ等)が格納されている。またデータRAM12は、等値化データ転送情報12bを格納する。更にダウンロードされた変数マップ変更情報12cを一時的に格納し、これを用いて新たな等値化データ転送情報12bを生成する。等値化データ転送情報12b、変数マップ変更情報12cの一例は図3、図4に示し、後に説明する。
マイクロプロセッサ15は、CPUモジュール1全体を制御する中央処理装置(CPUチップ等)であり、上記プログラムRAM11に格納されている第2のアプリケーションプログラムを用いて、各定周期プログラムの実行制御を行うと共に、等値化データ転送情報12bを参照して、等値化処理を実現させる。この等値化処理において、マイクロプロセッサ15は、等値化データ転送情報12bを参照して、ユーザデータ領域12aに格納されている等値化データ(各変数)を読み出して、これらを待機系CPUモジュール2側に転送する為の制御を行う。この転送処理自体は、マイクロプロセッサ15の制御の元で等値化バス制御部13が行う。すなわち、等値化バス制御部13は、等値化バス5を介して等値化データを転送する為の専用の構成であり、マイクロプロセッサ15の制御の元、等値化バス制御部23と連携して、上記各変数をそれぞれ受信バッファ用RAM24における所定の格納位置に書き込ませる。尚、CPUモジュール2側では、マイクロプロセッサ25が、等値化データ転送情報22bを参照しつつ、等値化バス制御部23を制御して、受信バッファ用RAM24の上記所定の格納位置に一時記憶された各変数を、ユーザデータ領域22aの各格納位置へと転送させる。
尚、等値化バス制御部13は、例えば上記“SGM(Sameness data Gather Memory control)”に相当する。
また、デフォルト待機系のCPUモジュール2は、プログラムRAM21、データRAM22、等値化バス制御部23、受信バッファ用RAM24、及びマイクロプロセッサ25等を有する。この構成自体は、デフォルト稼動系CPUモジュール1と同じであるので、特に説明しないが、マイクロプロセッサ25は、プログラムRAM21に格納されている第3のアプリケーションプログラムを用いて、上記待機系CPUモジュールとしての等値化処理や後述する等値化データ転送情報生成処理等を実現させる。尚、マイクロプロセッサ25は、マイクロプロセッサ15とは異なり、各定周期プログラムの実行制御は行っていない。但し、これは、CPUモジュール2が待機系のときの話であり、稼動系に切り替わった場合にはマイクロプロセッサ25は各定周期プログラムの実行制御も行う。
また、デフォルト待機系のCPUモジュール2は、プログラムRAM21、データRAM22、等値化バス制御部23、受信バッファ用RAM24、及びマイクロプロセッサ25等を有する。この構成自体は、デフォルト稼動系CPUモジュール1と同じであるので、特に説明しないが、マイクロプロセッサ25は、プログラムRAM21に格納されている第3のアプリケーションプログラムを用いて、上記待機系CPUモジュールとしての等値化処理や後述する等値化データ転送情報生成処理等を実現させる。尚、マイクロプロセッサ25は、マイクロプロセッサ15とは異なり、各定周期プログラムの実行制御は行っていない。但し、これは、CPUモジュール2が待機系のときの話であり、稼動系に切り替わった場合にはマイクロプロセッサ25は各定周期プログラムの実行制御も行う。
図3(a)、(b)に等値化データ転送情報12b、22bの一例を示す。
等値化データ転送情報12b、22bは、上記先願のマッピング情報と同様に等値化データ転送制御に用いるデータであるが、先願のマッピング情報が各ブロック毎に「先頭アドレス+サイズ」の情報であったのに対して、図3(a)、(b)に示す情報となる。すなわち、任意の1つのブロックに含まれる各変数a,b,c,d・・・毎に、その変数のユーザデータ領域12a又は22aにおける格納アドレスと受信バッファ用RAM24における格納アドレスとを1対1で対応付けた情報となる。尚、図3(a)、(b)では各変数a,b,c,d毎に対応付けてその格納アドレスが示されているように見えるが、これは説明し易くする為であり、実際には単に例えば稼動側の101番地のデータが(それがどの変数であるかは関係なく)受信バッファ用RAM24を介して待機側の101番地に転送されるようにする為の情報となる。すなわち、単に、先願ではブロック単位で行っていた等値化データ転送制御を、ワード単位で行うようにする情報を作成するだけである。但し、支援ツール6側では各変数毎の格納位置は分かっているので、この例に限らず、各変数毎に対応付けた格納アドレス情報とすることもできる。この場合には、CPUモジュール側でどの変数がどのアドレスに格納されているかを認識できるようになる。
等値化データ転送情報12b、22bは、上記先願のマッピング情報と同様に等値化データ転送制御に用いるデータであるが、先願のマッピング情報が各ブロック毎に「先頭アドレス+サイズ」の情報であったのに対して、図3(a)、(b)に示す情報となる。すなわち、任意の1つのブロックに含まれる各変数a,b,c,d・・・毎に、その変数のユーザデータ領域12a又は22aにおける格納アドレスと受信バッファ用RAM24における格納アドレスとを1対1で対応付けた情報となる。尚、図3(a)、(b)では各変数a,b,c,d毎に対応付けてその格納アドレスが示されているように見えるが、これは説明し易くする為であり、実際には単に例えば稼動側の101番地のデータが(それがどの変数であるかは関係なく)受信バッファ用RAM24を介して待機側の101番地に転送されるようにする為の情報となる。すなわち、単に、先願ではブロック単位で行っていた等値化データ転送制御を、ワード単位で行うようにする情報を作成するだけである。但し、支援ツール6側では各変数毎の格納位置は分かっているので、この例に限らず、各変数毎に対応付けた格納アドレス情報とすることもできる。この場合には、CPUモジュール側でどの変数がどのアドレスに格納されているかを認識できるようになる。
この等値化データ転送情報12b、22bは、各CPUモジュール1、2が、CPUモジュール支援ツール6からダウンロードされる変数マップ変更情報に基づいて作成・更新する。これについては後に説明する。
但し、この例に限らず、等値化データ転送情報を最初に作成するときには(例えば初期のシステム立ち上げ時等)、上記先願の各ブロック毎の「先頭アドレス+サイズ」の情報に基づいて等値化データ転送情報を作成することもできる。但し、その際、CPUモジュール1、2に格納される定周期プログラムは同じである必要があり(つまり、稼動、待機それぞれのユーザデータ領域には、各変数が同一アドレスにマップされている必要がある)、また後に等値化データ転送情報を変更する際には変数マップ変更情報に基づいて変更する必要がある。但し、この場合、後の等値化データ転送情報変更の際に一方のCPUモジュールのみ変更すると対応関係が崩れるので、後述する変数マップ変更情報により両方のCPUモジュールの等値化データ転送情報を更新する。これは逆に言えば、最初から変数マップ変更情報に基づいて等値化データ転送情報を作成している場合には、変数マップ変更情報は必ずしも後述する図4のような2つのCPUモジュール両方のデータを有するものでなくてもよく、どちらか一方の(新定周期プログラムをダウンロードした)CPUモジュールのデータのみとしてもよい。
以下の説明では、等値化データ転送情報は、最初から変数マップ変更情報に基づいて作成されるものとして説明する。
この場合、各CPUモジュールは、初めて等値化データ転送情報を作成する際には、まず、後述するように変数マップ変更情報から自モジュールに関するデータのみを取り出すことで、図3のユーザデータ領域アドレス32,42の部分を作成する。更に、この各アドレスのデータの受信バッファ用RAMにおける格納アドレス(転送先/転送元アドレス)を割り当てて、受信バッファアドレス31、41の部分を作成する。先願においてもCPUモジュール側で任意に転送先/転送元アドレスを割り当てており、先願ではブロック単位であるが、本例ではワード単位としているだけである。よって、転送先(転送元)アドレスの割り当て方は任意であってよいが、稼動/待機両方のCPUモジュールで同じ割り当て方をする必要がある。
この場合、各CPUモジュールは、初めて等値化データ転送情報を作成する際には、まず、後述するように変数マップ変更情報から自モジュールに関するデータのみを取り出すことで、図3のユーザデータ領域アドレス32,42の部分を作成する。更に、この各アドレスのデータの受信バッファ用RAMにおける格納アドレス(転送先/転送元アドレス)を割り当てて、受信バッファアドレス31、41の部分を作成する。先願においてもCPUモジュール側で任意に転送先/転送元アドレスを割り当てており、先願ではブロック単位であるが、本例ではワード単位としているだけである。よって、転送先(転送元)アドレスの割り当て方は任意であってよいが、稼動/待機両方のCPUモジュールで同じ割り当て方をする必要がある。
図4(a)には変数マップ変更情報のフォーマットを示し、図4(b)にはその具体例を示す。
図4(a)に示すように、変数マップ変更情報は、各変数毎に、デフォルト稼動/待機それぞれのCPUモジュールのユーザデータ領域における格納位置(アドレス)を示すデータである。CPUモジュール支援ツール6は、新たな定周期プログラムをCPUモジュールにダウンロードする場合、変数マップ変更情報においてダウンロード先のCPUモジュールに対応するデータのみを、新たな定周期プログラムのコンパイル時に各変数に割り当てたアドレス(ユーザデータ領域アドレス)へと変更する。
図4(a)に示すように、変数マップ変更情報は、各変数毎に、デフォルト稼動/待機それぞれのCPUモジュールのユーザデータ領域における格納位置(アドレス)を示すデータである。CPUモジュール支援ツール6は、新たな定周期プログラムをCPUモジュールにダウンロードする場合、変数マップ変更情報においてダウンロード先のCPUモジュールに対応するデータのみを、新たな定周期プログラムのコンパイル時に各変数に割り当てたアドレス(ユーザデータ領域アドレス)へと変更する。
図4(b)は、図4(a)のフォーマットに従う変数マップ変更情報の具体例である。図示の例は、デフォルト待機側に新定周期プログラムをダウンロードする為に、待機側のデータのみ変更した場合を示す。よって、稼動側のデータは旧定周期プログラムに対応した状態のままであり、変数a,b,c,dそれぞれに100,101,102,103番地が対応付けられる。一方、待機側のデータは、変数a,b,c,dそれぞれに100,102,101,103番地が対応付けられる。
変数マップ変更情報が各CPUモジュール1,2、にダウンロードされると、各CPUモジュールは各々、図5に示すように、この変数マップ変更情報から、CPUモジュール1は先頭データから一つおきに、CPUモジュール2は2番目のデータから一つおきに、順次データを読み出して整列させることで、等値化データ転送情報におけるユーザデータ領域アドレス32、42の部分が新たに作成・更新される。尚、受信バッファアドレス31,41の部分は変更しない。
そして、CPUモジュール支援ツール6から、待機系CPUモジュール2に対して新定周期プログラムをダウンロードする時に、稼動系CPUモジュール1、待機系CPUモジュール2の両方に上記変更後の変数マップ変更情報をダウンロードすることにより、変数メモリマップに変更があったことを各CPUモジュールに通知する。これより、図5に示すように、稼動CPUモジュール1、待機CPUモジュール2はそれぞれ変数マップ変更情報を元に新たな等値化データ転送情報を生成する。この新しい等値化データ転送情報に従って等値化処理は実行される。その一例を図6に示す。
図6は、新たな等値化データ転送情報を生成後に、稼動/待機切換え処理を実行する前における等値化処理を示す図である。
すなわち、上記課題で述べた通り、上記ユーザ要求による変更はシステムを停止せずに行う為、待機系CPUモジュール2に新アプリケーションプログラムをダウンロードしてから稼動/待機切換えが行われるまでの間にも、CPUモジュール1を稼動系とした等値化処理が行われることになる。よって、この間に、待機側で新たな等値化データ転送情報を用いて等値化処理を行うことで、ユーザデータ領域123aの各変数の格納位置に正しく変数を転送できるようにすることができる(つまり、新アプリケーション対応の格納位置に転送できる)。
すなわち、上記課題で述べた通り、上記ユーザ要求による変更はシステムを停止せずに行う為、待機系CPUモジュール2に新アプリケーションプログラムをダウンロードしてから稼動/待機切換えが行われるまでの間にも、CPUモジュール1を稼動系とした等値化処理が行われることになる。よって、この間に、待機側で新たな等値化データ転送情報を用いて等値化処理を行うことで、ユーザデータ領域123aの各変数の格納位置に正しく変数を転送できるようにすることができる(つまり、新アプリケーション対応の格納位置に転送できる)。
図6に示すように、本例の等値化処理は、等値化データ転送情報を用いて、ユーザデータ領域−受信バッファ用RAM間でのアドレス1対1のデータ転送により実現する。すなわち、まず、稼動系CPUモジュール1のユーザデータ領域12aから受信バッファ用RAM24への等値化データ転送は、等値化データ転送情報12bを一行ずつ参照して、各行毎の対応関係に従って、ユーザデータ領域12aから1ワードずつ受信バッファ用RAM24へデータ転送する(ユーザデータ領域アドレス32のデータを読み出して、これを対応する受信バッファアドレス31に転送する)処理を繰返し実行する。図示の例では、例えば101番地のデータ(変数b)は受信バッファの01番地に転送され、102番地のデータ(変数c)は受信バッファの02番地に転送される。
一方、待機系CPUモジュール2は、等値化データ転送情報22bを1行ずつ参照して、各行毎の対応関係に従って、受信バッファ用RAM24から1ワードずつユーザデータ領域12aへデータ転送する(受信バッファアドレス41のデータを読み出して、これを対応するユーザデータ領域アドレス42に転送する)処理を繰返し実行する。図示の例では例えば01番地のデータ(変数b)はユーザデータ領域22aの102番地に転送され、02番地のデータ(変数c)はユーザデータ領域22aの101番地に転送される。
新アプリケーションは、コンパイル時に、変数bは102番地、変数cは101番地に割り当てられているので、新アプリケーション対応のアドレスへと転送されることになる。よって、その後に稼動/待機切換えを行う場合、問題なく制御処理を引き継ぐことができる。
以上説明した本手法によれば、外部の支援装置でコンパイルされて生成されてダウンロードされるアプリケーションプログラムを実行する稼動/待機2つのコントローラ(CPUモジュール)を有する2重化コントローラシステムにおいて、運用中のシステムを停止せずに、待機系CPUモジュールに仕様変更あるいは修正をしたアプリケーションプログラムをダウンロードして、稼動/待機切替えを行う場合でも、システムの継続運転を正常に行うことができる。
1 CPUモジュール
2 CPUモジュール
3 I/O群
4 システムバス
5 等値化バス
6 CPUモジュール支援ツール
11 プログラムRAM
11a ユーザプログラム
12 データRAM
12a ユーザデータ領域
12b 等値化データ転送情報
12c 変数マップ変更情報
13 等値化バス制御部
14 受信バッファ用RAM
15 マイクロプロセッサ
21 プログラムRAM
21a ユーザプログラム
22 データRAM
22a ユーザデータ領域
22b 等値化データ転送情報
22c 変数マップ変更情報
23 等値化バス制御部
24 受信バッファ用RAM
25 マイクロプロセッサ
31 受信バッファアドレス
32 ユーザデータ領域アドレス
41 受信バッファアドレス
42 ユーザデータ領域アドレス
2 CPUモジュール
3 I/O群
4 システムバス
5 等値化バス
6 CPUモジュール支援ツール
11 プログラムRAM
11a ユーザプログラム
12 データRAM
12a ユーザデータ領域
12b 等値化データ転送情報
12c 変数マップ変更情報
13 等値化バス制御部
14 受信バッファ用RAM
15 マイクロプロセッサ
21 プログラムRAM
21a ユーザプログラム
22 データRAM
22a ユーザデータ領域
22b 等値化データ転送情報
22c 変数マップ変更情報
23 等値化バス制御部
24 受信バッファ用RAM
25 マイクロプロセッサ
31 受信バッファアドレス
32 ユーザデータ領域アドレス
41 受信バッファアドレス
42 ユーザデータ領域アドレス
Claims (3)
- 各々制御プログラムを格納・実行可能な稼動系と待機系のコントローラと、前記制御プログラムを前記コントローラにダウンロードする支援装置とを有する二重化コントローラシステムにおいて、
前記各コントローラは、
前記制御プログラムが使用する各変数の値を記憶・更新する第1の記憶手段と、
前記各変数を等値化処理により転送する際に該転送を中継する為に該各変数を一時的に記憶する受信バッファ用記憶手段と、
前記各変数の前記第1の記憶手段での格納位置と該受信バッファ用記憶手段での記憶位置との対応関係をアドレス1対1で示す等値化データ転送情報を記憶する第2の記憶手段と、
前記等値化データ転送情報に従ってアドレス1対1の等値化処理を行う第1の制御手段とを有し、
前記支援装置は、各制御プログラム毎に、前記各変数の前記第1の記憶手段での格納位置の情報である変数マップ情報を生成し、前記各コントローラ毎に、そのコントローラにダウンロードした制御プログラムに対応する変数マップ情報をそのコントローラに送信する第2の制御手段と有し、
前記各コントローラは、該変数マップ情報を用いて、前記等値化データ転送情報を生成/変更する転送情報生成手段と更に有することを特徴とする二重化コントローラシステム。 - 前記制御プログラムは、前記支援装置において、作成されたソースプログラムをコンパイルして生成するものであり、該コンパイルの際に各変数の前記第1の記憶手段における格納位置が割り当てられることを特徴とする請求項1記載の二重化コントローラシステム。
- 各々制御プログラムを格納・実行可能な稼動系と待機系のコントローラと、前記制御プログラムを前記コントローラにダウンロードする支援装置とを有する二重化コントローラシステムにおける稼動/待機切換え方法であって、
前記稼動系、待機系のコントローラに同一の制御プログラムが格納されている状態から、該待機系のコントローラに新たな制御プログラムを格納させて、更に稼動/待機切換えを行う場合において、
前記支援装置は、前記新たな制御プログラムを待機系コントローラにダウンロードすると共に、該新たな制御プログラム生成の際に得られた各変数の格納位置情報も待機系コントローラに送信し、
該待機系コントローラは、前記稼動系コントローラとの間で行う等値化処理における等値化データの転送元−転送先アドレスの対応関係をアドレス1対1で示す等値化データ転送情報を記憶しており、該新制御プログラム対応の各変数の格納位置情報に基づいて該等値化データ転送情報を再生成し、
該新たな該等値化データ転送情報を用いて等値化処理が行なわれた後、前記稼動/待機切換えが行われることを特徴とする二重化コントローラシステムにおける稼動/待機切換え方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004101530A JP2005285018A (ja) | 2004-03-30 | 2004-03-30 | 2重化コントローラシステム、その稼動/待機切換え方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004101530A JP2005285018A (ja) | 2004-03-30 | 2004-03-30 | 2重化コントローラシステム、その稼動/待機切換え方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005285018A true JP2005285018A (ja) | 2005-10-13 |
Family
ID=35183290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004101530A Pending JP2005285018A (ja) | 2004-03-30 | 2004-03-30 | 2重化コントローラシステム、その稼動/待機切換え方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005285018A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011074147A1 (ja) * | 2009-12-16 | 2011-06-23 | 三菱電機株式会社 | 二重系制御装置 |
JP2012133610A (ja) * | 2010-12-22 | 2012-07-12 | Hitachi Ltd | 2重化プロセス制御装置および制御データ一致化方法 |
-
2004
- 2004-03-30 JP JP2004101530A patent/JP2005285018A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011074147A1 (ja) * | 2009-12-16 | 2011-06-23 | 三菱電機株式会社 | 二重系制御装置 |
CN102656528A (zh) * | 2009-12-16 | 2012-09-05 | 三菱电机株式会社 | 双重系统控制装置 |
JPWO2011074147A1 (ja) * | 2009-12-16 | 2013-04-25 | 三菱電機株式会社 | 二重系制御装置 |
JP2012133610A (ja) * | 2010-12-22 | 2012-07-12 | Hitachi Ltd | 2重化プロセス制御装置および制御データ一致化方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5623593B2 (ja) | ベーシック・インプット/アウトプット・システムを同時に更新するためのラックおよびその方法 | |
US9753447B2 (en) | Control unit, output control method and program | |
US20140005805A1 (en) | Cpu of plc, system program for plc, and recording medium storing system program for plc | |
JP7059673B2 (ja) | 制御装置、制御システム、制御方法、および、制御プログラム | |
JP2009015401A (ja) | 分散型制御システム | |
JP7423920B2 (ja) | 制御システム、設定装置およびコンピュータプログラム | |
JP2014119912A (ja) | 制御装置および制御プログラム | |
US11165745B2 (en) | Control system, controller, and control method | |
CN111095138B (zh) | 控制装置、控制装置的控制方法、信息处理程序及记录介质 | |
JP2005092520A (ja) | 2重化コントローラシステム、その等値化方法 | |
JP2005285018A (ja) | 2重化コントローラシステム、その稼動/待機切換え方法 | |
JP6304048B2 (ja) | 制御システム、および制御装置 | |
JP6419400B1 (ja) | Plc、ネットワークユニット、cpuユニット、及びデータ転送方法 | |
JP2006235765A (ja) | 二重化コントローラシステム、そのコントローラ | |
JP6119452B2 (ja) | プログラマブルコントローラシステム、その支援装置、プログラマブルコントローラ、プログラム | |
JP2008226111A (ja) | 2重化コントローラシステム、その稼動系コントローラ | |
JP4232589B2 (ja) | 二重化コントローラ、その等値化モード決定方法 | |
CN113508346B (zh) | 控制装置以及软件的部署方法 | |
JP2017062758A (ja) | 制御システムおよび制御方法 | |
JP6907929B2 (ja) | データ等価方法、プログラマブルコントローラ及び二重化システム | |
JP6356736B2 (ja) | コントローラシステムおよび制御方法 | |
JP2006236371A (ja) | 制御システム | |
JP2008077265A (ja) | プログラマブルコントローラのプログラム更新方法 | |
JP4588507B2 (ja) | 送信装置、そのプログラムおよび記録媒体 | |
JP2005285017A (ja) | 2重化コントローラシステム、そのコントローラ、プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060315 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080401 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20080722 |