(57)【要約】【課題】  優先レベルが高い定周期プログラムの実行周期が短い場合に優先レベルが低い定周期プログラムの実行時間が増大するという問題を解決する。【解決手段】  ＣＰＵ支援ツール５において、新たな定周期プログラムを作成してＣＰＵモジュール１，２にダウンロードする際に、ユーザに等値化処理の有効／無効を設定させて等値化データ転送情報ファイル５ａを生成し、当該ファイル５ａも一緒にダウンロードする。稼動系のＣＰＵモジュール１は、基本的には各定周期プログラムを実行する毎に等値化処理を実行するものであるが、上記ファイル５ａの情報により、等値化処理の無効が設定されている定周期プログラムに関しては、等値化処理は一切行わない。【選択図】図１
2006235765.tif 000002
【特許請求の範囲】
【請求項１】
稼動系と待機系のコントローラを有し、相対的な優先レベルが設定されている複数の定周期プログラムを実行する２重化コントローラシステムにおける前記稼動系のコントローラにおいて、
外部からの設定により、前記各定周期プログラム毎に等値化の有効／無効を記憶する第１の記憶手段と、
前記各定周期プログラムを実行する毎に、前記第１の記憶手段を参照して、該実行した定周期プログラムが等値化有効である場合には、等値化処理を実行する制御手段と、
を有することを特徴とするコントローラ。
【請求項２】
前記各定周期プログラム毎に対応するローカル変数を記憶すると共に、全ての定周期プログラムに共通のグローバル変数を記憶する第２の記憶手段を更に備え、
前記第１の記憶手段は、更に、前記各ローカル変数の前記第２の記憶手段における格納位置を示すと共に前記グローバル変数の前記第２の記憶手段における格納位置を示す情報であるマッピング情報を記憶し、
前記制御手段は、前期等値化処理において、前記マッピング情報を参照して、実行した定周期プログラムに対応するローカル変数の格納位置と前記グローバル変数の格納位置とを取得することで、該実行した定周期プログラムに対応するローカル変数とグローバル変数とを前記第２の記憶手段から取得して前記待機系のコントローラに転送することを特徴とする請求項１記載のコントローラ。
【請求項３】
前記等値化無効が設定される定周期プログラムは、継続性を必要とするローカル変数が存在せず且つグローバル変数を使用しないものであることを特徴とする請求項１又は２記載のコントローラ。
【請求項４】
稼動系と待機系のコントローラを有し、複数の定周期プログラムを実行する２重化コントローラシステムにおいて、
前記稼動系と待機系の各コントローラに通信線を介して接続し、作成させた任意の定周期プログラムに係るマッピング情報を生成すると共に、等値化の有効／無効を設定させ、該定周期プログラムとマッピング情報と有効／無効設定を前記各コントローラにダウンロードする支援装置を更に有し、
前記稼動系のコントローラは、
前記各定周期プログラム毎に、前記等値化の有効／無効を記憶する第１の記憶手段と、
前記各定周期プログラムを実行する毎に、前記第１の記憶手段を参照して、該実行した定周期プログラムが等値化有効である場合には、等値化処理を実行する制御手段と、
を有することを特徴とする二重化コントローラシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、二重化コントローラ（プログラマブルコントローラ）システムにおける、ユーザデータ等値化方式に関する。
【背景技術】
【０００２】
現在、プラント、工場などでは、工作機械や計測装置等の機器のシーケンス制御に多くのコントローラ（プログラマブルコントローラ等）を用い、ＦＡ（ファクトリーオートメーション）化を実現している。
【０００３】
このようなプログラマブルコントローラ・システムでは、信頼性を向上させるためにＣＰＵモジュール（プログラマブルコントローラ本体）を待機冗長の２重化構成にする場合がある（以下、二重化コントローラシステムと呼ぶ）。待機冗長の冗長２重化構成は、２つのＣＰＵモジュールを１組とし、一方を稼動系、他方を待機系とし、稼動系ＣＰＵモジュールを待機系ＣＰＵモジュールが監視して、稼動系ＣＰＵモジュールに障害等の切替え要因が生じたならば待機系ＣＰＵモジュールが稼動系に切り替る構成である。
【０００４】
図６に２重化して冗長性を持たせたコントローラのシステム構成例を示す。
図示の２重化コントローラシステムは、ＣＰＵモジュール１０１−１、ＣＰＵモジュール１０１−２、及び各制御対象機器とのデータ入出力を行う複数のＩ／Ｏユニットより成るＩ／Ｏユニット群１０２から構成されている。尚、ここでは、ＣＰＵモジュール１０１−１が稼動系、ＣＰＵモジュール１０１−２がその待機系となっている場合を例にして説明する。
【０００５】
稼動系となっているＣＰＵモジュール１０１−１は、その内部に格納された制御プログラム（通常、定周期に実行されるプログラム；定周期プログラム）を実行することで、Ｉ／Ｏユニット群１０２に対して制御信号を出力して（又は各Ｉ／Ｏユニットからセンサ計測値等を読み出して）、各制御対象機器を制御する。
【０００６】
一方、待機系となっているＣＰＵモジュール１０１−２は、稼動系のＣＰＵモジュール１０１−１を監視しており、稼動系ＣＰＵモジュール１０１−１に故障等の何らかの切替え要因が生じると、稼動／待機切り替え処理を実行して、ＣＰＵモジュール１０１−２が稼動系となって、ＣＰＵモジュール１０１-１が行っていた処理を引き継ぐ。
【０００７】
ＣＰＵモジュール１０１−１及びＣＰＵモジュール１０１−２には、上記一定周期で起動されて実行される複数の定周期プログラムが格納されており、稼動系となっているＣＰＵモジュール１０１−１のみがこれらの定周期プログラムを実行してＩ／Ｏ機器の制御処理を行い、待機系となっているＣＰＵモジュール１０１−２ではこれらの定周期プログラムは実行されない。これらの定周期プログラムには、相対的な優先レベルが設定されており、優先レベルが高い定周期プログラムの起動周期になると、優先レベルの低い定周期プログラムは、実行中であっても割り込みがかかって中断され、優先レベルの高い定周期プログラムが優先的に実行される。
【０００８】
尚、説明を簡単にする為、図６においては、上記複数の定周期プログラムの例として、定周期プログラムＡ、定周期プログラムＢのみを示すものとする。そして、ここでは、上記相対的な優先レベルは、定周期プログラムＡのほうが高いものとする。よって、定周期プログラムＢは、実行中に割り込みが掛かって中断されて、定周期プログラムＡが実行される場合がある。
【０００９】
また、稼動系／待機系の切替えが生じたときに制御データ（ユーザデータ）の整合性を持たせる為、稼動系ＣＰＵモジュール１０１−１から待機系ＣＰＵモジュール１０１−２に制御データ（ユーザデータ）を送信して等値化処理を行っている。この等値化処理に関して、上記図６に示す構成では、システムバス１０３以外に、専用の等値化バス１０４を備えており、この等値化バス１０４を介して、ＣＰＵモジュール１０１-１からＣＰＵモジュール１０１−２へ、制御データを転送している。
【００１０】
このような二重化コントローラシステムに係わり、本出願人は既に、例えば特許文献１記載の発明を提案している。この特許文献１記載の発明では、複数の定周期プログラムを実行する場合において、各定周期プログラム実行毎に、その演算終了時に制御データの等値化処理を行うものである。これによって、特に上記優先レベルによって割り込みが生じている場合において、稼動系／待機系の切り替えが生じた場合に、最後に等値化を行ったプログラムが実行された状態から、処理を継続することができる。つまり、稼動系／待機系切替え時に生じるオーバーヘッドを縮小できる。更に、プログラム割り込み情報も等値化することにより、上記切り替えによって新たに稼動系になったＣＰＵモジュールは、等値化されたプログラム割り込み情報を参照することで、上記割り込みによって中断されていた定周期プログラムを、継続実行することができる。
【特許文献１】特開２００３−２９６１３３号公報
【非特許文献１】「統合化制御システムＭＩＣＲＥＸ−ＩＸのコントロールステーションの制御機能」  富士時報  Ｖｏｌ．６７  ＮＯ．６，１９９４、３４５−３４８頁
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上記特許文献１のように、優先レベルの高い定周期プログラムが優先的に実行されるようにし且つ各定周期プログラム実行毎に等値化処理を行うようにした場合、例えば図７に示すようなプログラム実行状況となった場合、以下に述べる問題が生じる。
【００１２】
すなわち、図７には、上記の様に定周期プログラムＡと定周期プログラムＢとがあり、上記優先レベルは定周期プログラムＡのほうが高いものとした場合のプログラム実行状況を示す。図示の例では、最初、定周期プログラムＡの起動要求と定周期プログラムＢの起動要求が同時に行われ、上記優先レベルより、定周期プログラムＡが先に実行され、続いて定周期プログラムＢが実行されるが、定周期プログラムＢを実行中に、再び定周期プログラムＡの起動要求があった為、上記割り込みにより、定周期プログラムＢの実行を中断して、定周期プログラムＡを実行する。ここで、図７に示すように定周期プログラムＡの実行周期が短い場合、割込み発生回数が増加し、定周期プログラムＢの実行時間が増大することになる。図７に示す例では、定周期プログラムＢの１回の実行時間は、図示のｔ１となっている。これは、換言すれば、定周期プログラムＢがあるスキャン時間内に実行できるプログラムステップ数が、少なくなることを意味する。
【００１３】
尚、図７に示す“入” は入力処理、“演”はプログラム演算、“等”はデータ等値化処理、“出”は出力処理を意味する。よって、図示の通り、各定周期プログラムは、入力処理→プログラム演算→データ等値化処理→出力処理の順番で実行される。
【００１４】
上記の様に、優先レベルが高い定周期プログラムの実行周期が短い場合、優先レベルが低い定周期プログラムの実行時間が増大するという問題が生じる。
本発明の課題は、二重化コントローラシステムに係り、各定周期プログラム実行毎に等値化処理を行うことで稼動系／待機系切替え時に生じるオーバーヘッドを縮小できるものであって、更に、優先レベルが高い定周期プログラムの実行周期が短い場合に優先レベルが低い定周期プログラムの実行時間が増大するという問題を解決できる二重化コントローラシステム、その等値化方法を提供することである。
【課題を解決するための手段】
【００１５】
本発明による二重化コントローラシステムにおけるコントローラは、稼動系と待機系のコントローラを有し、相対的な優先レベルが設定されている複数の定周期プログラムを実行する２重化コントローラシステムにおける前記稼動系のコントローラにおいて、外部からの設定により、前記各定周期プログラム毎に等値化の有効／無効を記憶する第１の記憶手段と、前記各定周期プログラムを実行する毎に、前記第１の記憶手段を参照して、該実行した定周期プログラムが等値化有効である場合には、等値化処理を実行する制御手段とを有するように構成する。
【００１６】
上記相対的な優先レベルが設定されている定周期プログラムにおいて、優先レベルが高い定周期プログラムに等値化無効が設定されている場合には、この定周期プログラム実行時に等値化処理は行われない。よって、この優先レベルが高い定周期プログラムの実行時間は、等値化処理が行われない分、短くなるので、その実行周期が短い場合であっても、優先レベルが低い定周期プログラムの実行時間の増大を抑えることができる。
【００１７】
また、上記構成のコントローラにおいて、例えば更に、前記各定周期プログラム毎に対応するローカル変数を記憶すると共に、全ての定周期プログラムに共通のグローバル変数を記憶する第２の記憶手段を備え、前記第１の記憶手段は、更に、前記各ローカル変数の前記第２の記憶手段における格納位置を示すと共に前記グローバル変数の前記第２の記憶手段における格納位置を示す情報であるマッピング情報を記憶し、前記制御手段は、前期等値化処理において、前記マッピング情報を参照して、実行した定周期プログラムに対応するローカル変数の格納位置と前記グローバル変数の格納位置とを取得することで、該実行した定周期プログラムに対応するローカル変数とグローバル変数とを前記第２の記憶手段から取得して前記待機系のコントローラに転送するように構成してもよい。
【００１８】
この様に、コントローラ側でマッピング情報を保持して等値化処理を行っているので、先出願と同様、等値化する必要のないローカル変数を等値化することを無くし、以ってデータ転送時間オーバヘッドを軽減することができる。
【００１９】
また、例えば、前記等値化無効が設定される定周期プログラムは、継続性を必要とするローカル変数が存在せず且つグローバル変数を使用しないものである。
【発明の効果】
【００２０】
本発明の二重化コントローラシステム、その等値化方法によれば、各定周期プログラム実行毎に等値化処理を行うことで稼動系／待機系切替え時に生じるオーバーヘッドを縮小できるものであって、更に、各定周期プログラムの等値化処理の実行／非実行を設定・登録しておき、これに基づいて各定周期プログラム実行毎の等値化処理を行うか否かを決定することで、必要の無い等値化処理を実行しないようにできる。これによって特に、優先レベルが高い定周期プログラムの実行周期が短い場合に優先レベルが低い定周期プログラムの実行時間が増大するという問題を解決できる。また、マッピング情報を用いて等値化処理を行っているので、等値化する必要のないローカル変数を等値化することを無くし、以ってデータ転送時間オーバヘッドを軽減することができる。
【発明を実施するための最良の形態】
【００２１】
以下、図面を参照して、本発明の実施の形態について説明する。
図１は、本例の二重化コントローラシステム全体の概略構成図である。
図１に示す二重化コントローラシステムは、ＣＰＵモジュール１、ＣＰＵモジュール２、及び各制御対象機器とデータの入出力を行う複数のＩ／Ｏユニットより成るＩ／Ｏユニット群３、及びＣＰＵ支援ツール５から構成されている。尚、ここでは、ＣＰＵモジュール１が稼動系となっており、ＣＰＵモジュール２がその待機系となっている場合を例にして説明する。稼動系のＣＰＵモジュール１、待機系のＣＰＵモジュール２、及びＩ／Ｏ群３は、システムバス４を介して接続されている。また、ＣＰＵモジュール１とＣＰＵモジュール２との間には等値化バス６が設けられている。また、ＣＰＵ支援ツール５とＣＰＵモジュール１／ＣＰＵモジュール２とは、不図示の通信線によって接続されている。
【００２２】
ＣＰＵ支援ツール５自体は、特に新規の構成ではなく、従来より、ＣＰＵモジュール１、ＣＰＵモジュール２は、ＣＰＵ支援ツール５から、新たな定周期プログラム（バージョンアップ版／修正版の定周期プログラム等）をダウンロードする等の支援を受けている。
【００２３】
ここで、本出願人が既に提案している特願２００３−３２５０００号（以下、先出願と呼ぶ）等に記載のように、等値化データ（等値化すべき制御データ（ユーザデータ））には、グローバル変数とローカル変数とがある。グローバル変数は全ての定周期プログラムに共通の変数であり、ローカル変数は各定周期プログラム毎に個別に存在する変数である。そして、本出願の発明者は、上述した問題を解決する為に、定周期プログラムには「継続性を必要とするローカル変数が存在せず且つグローバル変数を使用しない」タイプのものがあることに着目した。この様なタイプの定周期プログラムに関しては、その実行の際に、等値化処理を行う必要がない。上述した問題は、定周期プログラムを実行する毎に等値化処理を実行するようにした為、特に優先レベルが高い定周期プログラムの実行周期が短い場合、トータルの等値化処理時間が増大することが原因である。そして、もし優先レベルが高い定周期プログラムが、上記「継続性を必要とするローカル変数が存在せず且つグローバル変数を使用しない」タイプである場合、等値化処理が必要ないにも係らず、頻繁に等値化処理が実行される為、等値化処理時間が無駄なオーバヘッドになる。
【００２４】
尚、「継続性を必要とするローカル変数が存在する、又は／且つ、グローバル変数を使用する」定周期プログラムの場合には、当然、等値化処理が必要となる。
上記「継続性を必要とするローカル変数が存在せず且つグローバル変数を使用しない」タイプの定周期プログラム、すなわち等値化処理を行う必要がない定周期プログラムの例としては、例えば、コントローラ内（ＣＰＵモジュール内）のデータ収集を行い、モニタ装置（ＣＰＵ支援ツール５）に対して当該収集データを送信する処理を実行させる定周期プログラム等がある。元々、等値化処理は、例えばプラントの調整値やセンサ測定値等を、待機側にも保持させておく為に行うものである。
【００２５】
以上の点から、本システムでは、上記ＣＰＵ支援ツール５において新たな定周期プログラムを作成した場合、上記先出願と同様に当該定周期プログラムをコンパイルする際にマッピング情報を生成するが、更にユーザによって等値化処理の有効／無効が設定され、このマッピング情報と等値化有効／無効設定とから成る等値化データ転送情報ファイル５ａを作成し、これを上記新たな定周期プログラムと共に各ＣＰＵモジュール１，２にダウンロードする。
【００２６】
等値化処理の有効／無効の設定とは、その定周期プログラムの実行の際に等値化処理を行うものであるか否かを設定するものである。ＣＰＵモジュール１又は２（稼動系になっているもの）では、この設定を参照することで、各定周期プログラム毎に、等値化処理を行うか否かを判定する。つまり、各定周期プログラムエンドにおける等値化処理を実行するか否かを、ユーザに判断・設定させてＣＰＵモジュールにダウンロードすることで、必要ない等値化処理が実行されることがなくなり、アプリケーションプログラム実行帯域を増加させる（無駄なオーバヘッドをアプリケーションプログラム実行帯域から取り除く）ことができる。
【００２７】
上記本システムの特徴について、以下、更に詳細に説明する。
図２に、図１に示す２重化コントローラシステムにおけるＣＰＵモジュール１、ＣＰＵモジュール２の詳細な構成例を示す。
【００２８】
ＣＰＵモジュール１、２は、プログラマブルコントローラ本体であるが、ここでは等値化処理に係わる構成のみを示し、他の構成は省略して示す。
図２において、ＣＰＵモジュール１は、プログラムＲＡＭ１１、データＲＡＭ１２、等値化バス制御部１３、受信バッファ用ＲＡＭ１４、及びマイクロプロセッサ１５等を有する。
【００２９】
プログラムＲＡＭ１１には、ユーザプログラム１１ａが格納される。ユーザプログラム１１ａとは、例えば上記各定周期プログラムである。尚、本例のシステムにおいては、プログラムＲＡＭ１１には、更に、後述する図４に示す処理をマイクロプロセッサ１５によって実現させるアプリケーションプログラムも格納されている。
【００３０】
データＲＡＭ１２は、ユーザデータ領域１２ａを有する。更に、等値化データ転送情報１２ｂが格納される。
ユーザデータ領域１２ａには、各定周期プログラム毎に対応する各ローカル変数と、グローバル変数とが混在で格納されている。
【００３１】
等値化データ転送情報１２ｂは、上記ＣＰＵ支援ツール５からダウンロードした上記情報ファイル５ａがデータＲＡＭ１２に格納されたものであり、上記先出願と同様の各ローカル変数とグローバル変数のマッピング情報（ユーザデータ領域１２ａにおける各変数の格納位置）に加えて更に、上記等値化有効／無効の設定も含まれる。これについては、後に図３を参照して説明する。
【００３２】
等値化バス制御部１３は、主に等値化バス６を介して等値化を行う為のデータ転送処理専用の構成であり、マイクロプロセッサ１５から等値化データを渡されると、待機側の等値化バス制御部２３と連動して、この等値化データを待機側の受信バッファ用ＲＡＭ２４に格納させる機能を有する。尚、等値化バス制御部１３は、例えば上記非特許文献１記載の“ＳＧＭ(Sameness data Gather Memory control)”に相当する。
【００３３】
マイクロプロセッサ１５は、ＣＰＵモジュール１全体を制御する中央処理装置（ＣＰＵチップ等）であり、上記プログラムＲＡＭ１１に格納されているアプリケーションプログラムを用いて、図４に示す処理を実行する。つまり、マイクロプロセッサ１５は、各定周期プログラムを実行する毎に上記等値化有効／無効設定を参照して等値化処理を実行するか否かを判定し、実行しないと判定した場合には、等値化処理は行わない。勿論、等値化有効と設定されている定周期プログラムに関しては、当該定周期プログラムを実行する毎に等値化処理を実行することになる。
【００３４】
また、待機系のＣＰＵモジュール２は、プログラムＲＡＭ２１、データＲＡＭ２２、等値化バス制御部２３、受信バッファ用ＲＡＭ２４、及びマイクロプロセッサ２５等を有する。この構成自体は、稼動系のＣＰＵモジュール１と同じであり、またその動作は上記先出願記載の動作と略同様であるので、ここでは特に説明しない。
【００３５】
図３に、上記データＲＡＭ１２に格納される等値化データ転送情報１２ｂの一例を示す。
既に述べたように、図示の等値化データ転送情報１２ｂは、先出願と同様のマッピング情報と、等値化有効／無効設定とから成る。マッピング情報は、各定周期プログラムに各々対応する各ローカル変数のマッピング情報、及びグローバル変数のマッピング情報より成る。図３では、定周期プログラムＡのローカル変数に関するマッピング情報の具体例を示しており、当該マッピング情報を構成するブロックの数と、その定周期プログラムが使用するローカル変数群の各変数の格納位置を示す情報（ここでは先頭アドレスとサイズ情報）より成る。これは、各変数はユーザデータ領域１２ａに格納されているので、このユーザデータ領域１２ａにおける格納位置を意味する。定周期プログラムＢのローカル変数に関するマッピング情報やグローバル変数に関するマッピング情報においても、上記定周期プログラムＡのローカル変数に関するマッピング情報と略同様である。
【００３６】
そして、本例では更に等値化有効／無効設定情報（図３では等値化設定と記す）が格納されている。図３では、定周期プログラムＡのローカル変数に関する等値化設定を示しており、この例では１ビットの情報であり、‘１’は等値化有効、‘０’は等値化無効を意味する。よって例えばユーザが定周期プログラムＡに関しては等値化処理は必要無いと判断した場合には、ＣＰＵ支援ツール５において等値化処理不要を設定すれば、等値化設定として‘０’が格納されることになる。図示していないが、他の定周期プログラムのローカル変数についても同様である。但し、グローバル変数は、全ての定周期プログラムに共通の変数であるので、その等値化設定は、全ての定周期プログラムについての上記１ビットの情報群となる（特に図示しない）。但し、グローバル変数に関する等値化設定は無くてもよい。ローカル変数の等値化設定が‘１’であれば、ローカル変数だけでなくグローバル変数も等値化し、‘０’であれば、ローカル変数もグローバル変数も等値化しないようにすれば済むからである。
【００３７】
尚、上記データＲＡＭ１２に格納される等値化データ転送情報１２ｂは、上記の通り図１に示す等値化データ転送情報ファイル５ａが、ダウンロードされてそのまま格納されたものである。よって、図３に示すデータ構成は、等値化データ転送情報ファイル５ａのデータ構成でもあると言える。つまり、等値化データ転送情報ファイル５ａは、図３に示すデータフォーマットを有している。つまり、等値化データ転送情報５ａには、各ローカル変数、及びグローバル変数についてブロック数や各変数の格納位置を格納するフィールドと、等値化設定フィールドが割り付けられており、等値化設定フィールドには、上記ユーザによって設定された等値化有効／無効情報が格納される。また、上記先出願と同様、ＣＰＵ支援ツール５においては、作成されたユーザプログラム（図示表現プログラム等）をコンパイルして上記定周期プログラム（マシン語プログラム）を生成する際に、各変数をマッピングして（格納位置を割り当てて）おり、このマッピング結果を上記各ローカル変数、及びグローバル変数についてブロック数や各変数の格納位置を格納するフィールドに格納することで、等値化データ転送情報ファイル５ａを生成する。
【００３８】
稼動系のＣＰＵモジュール１のマイクロプロセッサ１５は、プログラムＲＡＭ１１に格納されている各定周期プログラムを実行する。そして、各定周期プログラムエンドのタイミングで、図４に示す等値化処理を実行する。
【００３９】
稼動系のＣＰＵモジュール１のマイクロプロセッサ１５は、任意の定周期プログラムエンドにおいて、図４に示す等値化処理を開始すると、まず、当該実行した定周期プログラムのプログラム番号を取得する（ステップＳ１１）。
【００４０】
次に、上記プログラム番号に基づき、当該実行した定周期プログラム用のローカル変数マッピング情報の格納位置（先頭アドレス）を取得する（ステップＳ１２）。尚、この先頭アドレスは、例えば予め各プログラム番号に対応付けて任意の記憶領域（不図示）に登録されている。あるいは、例えば予めマッピング情報の格納領域の先頭位置とオフセット値を記憶しており、Ｐ１＋オフセット値により上記先頭アドレスを生成してもよい。
【００４１】
そして、ステップＳ１２で取得した先頭アドレス及びそれ以降のアドレスから順次データを読み出して、ステップＳ１３以降の処理を実行する。まず、当該先頭アドレスには、図３に示す通り、等値化設定情報が格納されているので、この設定情報が‘１’であるか‘０’であるかによって、等値化処理を実行するか否かを決定する（ステップＳ１３）。すなわち、等値化設定情報が‘０’であった場合には（ステップＳ１３，ＮＯ）、以後の処理は行うことなく、本処理を終了する。等値化設定情報が‘１’であった場合には（ステップＳ１３，ＹＥＳ）、ステップＳ１４以降の処理へ進む。
【００４２】
そして、まず、図３に示す通り、上記先頭アドレスの次のアドレスには、ブロック数が格納されているので、これを取得し（ステップＳ１４）、このブロック数分、各ブロック毎に、ステップＳ１５〜ステップＳ１９の処理を実行する。すなわち、各ブロックには、図３に示す通り、ユーザデータ領域１２ａにおいてそのローカル変数群を構成する各変数の格納位置を示す情報（先頭アドレス及びサイズ）が格納されており、この先頭アドレスとサイズを取得する（ステップＳ１５，Ｓ１６）。そして、取得した先頭アドレスとサイズ情報によって、ユーザデータ領域１２ａからローカル変数を読み出して、これを上記プログラム番号と共に等値化バス制御部１３に渡す。これより、上述してある等値化バス制御部１３，２３の機能によって、当該ローカル変数及びプログラム番号は、待機系のＣＰＵモジュール２側の受信バッファ用ＲＡＭ２４に転送される（ステップＳ１７，１８）。そして、図示していないが、続いて、ブロック数＝ブロック数−１の処理を行ってからステップＳ１９の処理、すなわちブロック数が０になったか否かを判定する処理を行う。そして、ブロック数が０になるまで、ステップＳ１５〜Ｓ１９の処理を繰り返し実行する。
【００４３】
尚、図４には示していないが、ブロック数が０になったら（ステップＳ１９，ＹＥＳ）、今度はグローバル変数のマッピング情報を参照して、上記ステップＳ１４〜Ｓ１９の処理を実行する。
【００４４】
また、尚、待機系のＣＰＵモジュール２側の処理は、特に図示しないが、先出願と同様である。すなわち、待機系のＣＰＵモジュール２も、上記マッピング情報を保持しているので、そのとき実行された定周期プログラムに対応するマッピング情報を用いて、上記転送されたローカル変数、グローバル変数を、所定の格納位置（ユーザデータ領域２２ａにおける格納位置）に格納する。先出願と異なる点は、定周期プログラムが実行されても、等値化データが転送されてこない場合がある点であり、この場合には当然、待機系のＣＰＵモジュール２は何も行わない。
【００４５】
以上述べたように、ステップＳ１３において、等値化設定情報が‘０’であった場合、すなわち等値化無効が設定されていた場合には、データ等値化処理は一切行わない。よって、等値化処理が必要ない定周期プログラムに関しては、無駄な等値化処理が行われないので、定周期プログラム実行状況は、例えば図５に示すようになる。
【００４６】
図５に示す例は、上記図７に示した例に対応するものである。すなわち、定周期プログラムＡの優先レベルが、定周期プログラムＢよりも高い場合であって、定周期プログラムＡの実行周期が短い場合を例にする。そして、定周期プログラムＡに関する等値化設定情報は‘０’であり、定周期プログラムＢに関する等値化設定情報は‘１’であるものとする。
【００４７】
この場合、上記図４の処理を実行することで、図５に示すように、定周期プログラムＡの実行帯域が縮小され、定周期プログラムＢの実行帯域が増大し、定周期プログラムＢのプログラム実行時間が縮小されることになる。例えば、図５と図７を比較した場合、本例では定周期プログラムＢの１回の実行時間は図示のｔ２となり、図７のｔ１に比べて５分の３程度に縮小されたことになる。
【００４８】
よって、上記の方法により、ユーザがデータ等値化の必要性を判断して、定周期プログラムエンドで実行されるデータ等値化の実行／非実行の設定を変更することにより、アプリケーションプログラムの実行帯域が増大し、高速実行を可能とすることができる。
【００４９】
また、本手法では、上記先出願と同様に、マッピング情報を用いて等値化処理を行っているので、等値化有効と設定されている定周期プログラムを実行したときに等値化処理を行う際に、当該実行した定周期プログラムに係るローカル変数のみが待機系ＣＰＵモジュール２に転送される（勿論、その際、グローバル変数も転送する）。よって、先出願と同様、等値化する必要のないローカル変数を等値化することを無くし、以ってデータ転送時間オーバヘッドを軽減することができる。
【図面の簡単な説明】
【００５０】
【図１】本例の二重化コントローラシステム全体の概略構成図である。
【図２】図１に示す２重化コントローラシステムにおけるＣＰＵモジュールの詳細な構成図である。
【図３】データＲＡＭに格納される等値化データ転送情報の一例を示す。
【図４】本例の等値化処理を説明する為のフローチャート図である。
【図５】本例の等値化処理によるプログラム実行状況を示す図である。
【図６】従来の２重化して冗長性を持たせたコントローラのシステム構成例を示す。
【図７】従来の等値化処理によるプログラム実行状況を示す図である。
【符号の説明】
【００５１】
１  ＣＰＵモジュール（稼動系）
２  ＣＰＵモジュール（待機系）
３  Ｉ／Ｏユニット群
４  システムバス
５  ＣＰＵ支援ツール
１１  プログラムＲＡＭ
１２  データＲＡＭ
１２ａ  ユーザデータ領域
１２ｂ  マッピング情報領域
１３  等値化バス制御部
１４  受信バッファ用ＲＡＭ
１５  マイクロプロセッサ
２１  プログラムＲＡＭ
２２  データＲＡＭ
２２ａ  ユーザデータ領域
２２ｂ  マッピング情報領域
２３  等値化バス制御部
２４  受信バッファ用ＲＡＭ
２５  マイクロプロセッサ
【図１】
2006235765.tif 000003
【図２】
2006235765.tif 000004
【図３】
2006235765.tif 000005
【図４】
2006235765.tif 000006
【図５】
2006235765.tif 000007
【図６】
2006235765.tif 000008
【図７】
2006235765.tif 000009