(57)【要約】【課題】  プログラム作成時のユーザの負担を軽減するとともに、トラッキングに要する時間を従来よりも短縮化して効率化を図ることが可能な二重化制御システムを提供する。【解決手段】  現用系と待機系の２つの制御装置１Ｘ、１Ｙを備え、各制御装置１Ｘ、１Ｙは、データを扱う変数に対してトラッキング対象か否かを示すトラッキング属性を付加する変数定義エディタ１４と、このトラッキング属性に基づいてトラッキング対象となる変数について仮アドレスを割り当てた後、処理が完了した時点で、トラッキング対象の変数についてメモリ７に確保されているトラッキング対象メモリ領域内の実アドレスをまとめて割り当てるコンパイラ１５とを備える。【選択図】        図１
2005326930.tif 000002
【特許請求の範囲】
【請求項１】
現用系と待機系の２つの制御装置を備え、各制御装置には各種処理されるデータを記憶するメモリと、このメモリに格納されているデータの内でトラッキング対象となるデータを現用系から待機系にトラッキングするトラッキング手段とが設けられている二重化制御システムにおいて、
上記データを扱う変数に対してトラッキング対象か否かを示すトラッキング属性を付加する変数定義エディタと、この変数定義エディタで各変数に対して付加されたトラッキング属性に基づいてトラッキング対象となる変数について仮アドレスを割り当てた後、全ての変数のアドレス割り当て処理が完了した時点で、上記仮アドレスを割り当てた変数について上記メモリに予め確保されているトラッキング対象メモリ領域内の実アドレスをまとめて割り当てるコンパイラと、を備えることを特徴とする二重化制御システム。
【請求項２】
上記コンパイラは、予め準備されている標準ライブラリのプログラムのコンパイル時に生成される内部変数についてトラッキング属性を付加するものであることを特徴とする請求項１記載の二重化制御システム。
【請求項３】
上記コンパイラは、コンパイル時にフィードバック回路を規定するプログラムの有無を検出するフィードバック検出手段を備え、このフィードバック検出手段でフィードバック回路が検出された場合には、そのフィードバック回路のプログラムコンパイル時に生成される内部変数についてトラッキング属性を付加するものであることを特徴とする請求項１または請求項２に記載の二重化制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置を二重化した二重化制御システムに関するものである。
【背景技術】
【０００２】
一般に、各種の製造プラントや通信システム、公共システムなどのように、制御の高信頼性を要求される分野においては、２つの制御装置を併設して二重化した二重化制御システムが広く採用されている。
【０００３】
すなわち、この二重化制御システムでは、２つの制御装置を併設し、両制御装置の内、一方を現用系、他方を待機系として、現用系の制御装置は通常は動作状態を維持し、待機系の制御装置は待機状態を維持するようにしておく。そして、例えば、現用系の制御装置に異常が発生した場合やメンテナンス時には、待機系の制御装置を現用系に、現用系の制御装置を待機系に切り替えることにより、常に連続的な制御を維持できるようにしている。
【０００４】
この場合、現用系から待機系に制御を円滑に切り替えるためには、現用系の制御装置が動作している間も当該装置が保有する現在値のデータ（以下、現在値データという）を待機系の制御装置に常に滞りなく転送（以下、トラッキングという）して、待機系の制御装置も同じ現在値データを共有した状態にしておくことが必要となる。
【０００５】
そこで、従来では、現用系と待機系の各制御装置のメモリにそれぞれトラッキング対象となる現在値データを格納する専用のメモリ領域（以下、トラッキング対象メモリ領域という）を予め確保しておき、トラッキング時には、現用系のトラッキング対象メモリ領域内の所定のアドレスから読み出した現在値データを、待機系のトラッキング対象メモリ領域内の現用系と対応した同じアドレス位置に格納するようにしている。つまり、従来は現用系から読み出す現在値データのアドレスとトラッキング後の現在値データを格納する待機系のアドレスとを個別に対応させた、いわゆる固定アドレス方式となっている。
【０００６】
このような従来の固定アドレス方式においては、トラッキング対象メモリ領域内に格納される現在値データを一括してトラッキングできるので、トラッキングに要する時間は短くて済むという利点があるものの、各種の制御プログラムを作成する段階で、現在値データを扱うための変数がトラッキング対象メモリ領域内に割り振られるように個々の変数に対してアドレスを指定する必要があり、このためプログラム作成時に多大な手間がかかっている。
【０００７】
そこで、従来技術では、各々の現在値データを扱う変数に対してトラッキング対象であるか否かを示すトラッキング属性（例えば、トラッキング対象となる現在値データにはフラグ“１”、トラッキング対象外の現在値データにはフラグ“０”）をもたせておき、トラッキング時には現在値データに付加されたトラッキング属性（“１”か“０”）を読み取り、トラッキング属性をもつ現在値データのみを待機系の制御装置にトラッキングするようにした技術が提案されている（例えば、特許文献１参照）。
【０００８】
この特許文献１に記載されている従来技術によれば、ユーザは現在値データを扱う変数宣言時にその変数がトラッキング対象になるか否かを属性として指定するだけでよく、上述の固定アドレス方式のようにプログラム作成時に現在値データを扱うための各変数に対してトラッキング対象メモリ領域のアドレスを個別に指定する必要がないため、プログラム作成時の効率を向上させることができる。
【０００９】
【特許文献１】特開２００３−１３１８９９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記の特許文献１に記載されている従来技術の場合には、トラッキング時において、個々の現在値データについてトラッキングの必要性の有無を個別に検証する必要があり、トラッキング処理が複雑化してトラッキングに要する時間がかかっている。
【００１１】
本発明は、上記の課題を解決するためになされたもので、プログラム作成時のユーザの負担を軽減するとともに、トラッキングに要する時間を従来よりも短縮化して効率化を図ることが可能な二重化制御システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するために、現用系と待機系の２つの制御装置を備え、各制御装置には各種処理されるデータを記憶するメモリと、このメモリに格納されているデータの内でトラッキング対象となるデータを現用系から待機系にトラッキングするトラッキング手段とが設けられている二重化制御システムにおいて、次の構成を採用している。
【００１３】
すなわち、本発明にあっては、上記データを扱う変数に対してトラッキング対象か否かを示すトラッキング属性を付加する変数定義エディタと、この変数定義エディタで各変数に対して付加されたトラッキング属性に基づいてトラッキング対象となる変数について仮アドレスを割り当てた後、全ての変数のアドレス割り当て処理が完了した時点で、上記仮アドレスを割り当てた変数について上記メモリに予め確保されているトラッキング対象メモリ領域内の実アドレスをまとめて割り当てるコンパイラと、を備えることを特徴とする。
【発明の効果】
【００１４】
本発明に係る二重化制御システムによれば、ユーザは現在値データを扱う変数宣言時にその変数がトラッキング対象になるか否かを属性として指定するだけでよく、プログラム作成時に現在値データを扱うための各変数についてトラッキング対象メモリ領域のアドレスを個別に指定する必要がないため、プログラム作成時の効率を向上させることができる。しかも、トラッキング対象メモリ領域内にアドレスが割り当てられた変数に格納される現在値データは、従来の固定アドレス方式の場合と同様に一括してトラッキングできるので、トラッキングに要する時間が短くて済み、トラッキングの効率化を図ることができる。
【発明を実施するための最良の形態】
【００１５】
実施の形態１．
図１は本発明の実施の形態１における二重化制御システムの構成を示すブロック図である。
【００１６】
この実施の形態１の二重化制御システムは、２つの制御装置１Ｘ、１Ｙが併設されており、両制御装置１Ｘ、１ＹはＩ／Ｏ切替手段２に共通に接続されている。そして、ここでは一方の制御装置１Ｘが現用系、他方の制御装置１Ｙが待機系として動作している。各制御装置１Ｘ、１Ｙは基本的に同一構成を有する。したがって、一方の制御装置１Ｘを例にとってその構成を説明する。
【００１７】
制御装置１Ｘは、設定入力手段５、プログラムメモリ６、データメモリ７、トラッキング手段９、およびＩ／Ｏインタフェイス１０を備え、これらが内部バス１１を介して互いに接続されている。プログラムを作成するパーソナルコンピュータ８には、変数定義エディタ１４とコンパイラ１５がインストールされ、ＬＡＮで制御装置１Ｘと接続されている。
【００１８】
設定入力手段５は、キーボードやマウス等からなるもので、各種のデータを入力するとともに、ユーザが予めプログラム上において現在値データを扱う変数を指定して、その変数がトラッキング対象であるか否かを宣言できるようになっている。
【００１９】
プログラムメモリ６は、所定の制御プログラムや関連情報が記憶されている。また、データメモリ７は、各種演算処理されるデータが記憶されるもので、図４に示すように、トラッキング対象メモリ領域Ｒ１が予め確保されている。
【００２０】
パーソナルコンピュータ８は、プログラムメモリ６内の制御プログラムとデータメモリ７内の各種のデータとに基づいて制御装置１Ｘ全体の制御を実行するとともに、トラッキング手段９を起動してトラッキングを実行させる機能を有している。そして、このパーソナルコンピュータ８は、予め所定の制御プログラムをインストールすることにより、変数定義エディタ１４とコンパイラ１５とが構成されている。
【００２１】
ここに、変数定義エディタ１４は、設定入力手段５によって現在値データを扱う変数がトラッキング対象であることが宣言されている場合には、その変数に対してトラッキング対象でることを示すトラッキング属性を付加するものである。例えば、現在値データを扱うある一つの変数がトラッキング対象であることが宣言されている場合には、その変数に対してフラグ“１”を、トラッキング対象外の変数にはフラグ“０”をそれぞれ付加する機能を有している。なお、トラッキング対象の変数であることを示すフラグは“１”、“０”が逆の場合であってもよい。
【００２２】
コンパイラ１５は、プログラムをコンパイルする際、変数定義エディタ１４によって各変数に付加されたトラッキング属性に基づいて、トラッキング対象となる変数について仮想的なアドレス（以下、仮アドレスという）を割り当てた後、全ての変数のアドレス割り当て処理が完了した時点で、仮アドレスを割り当てた変数について、トラッキング対象メモリ領域Ｒ１内のアドレス（以下、実アドレスという）を個別に割り当てる機能を備えている。
【００２３】
トラッキング手段９は、データメモリ７に格納されているデータの内でトラッキング対象となるデータを現用系から待機系にトラッキングするものである。この場合、現用系のトラッキング手段９は、トラッキング対象メモリ領域Ｒ１内に割り当てられた変数に格納される現在値データを一括して待機系のトラッキング手段９に対してトラッキングする機能を備えている。また、Ｉ／Ｏインタフェイス１０は、内部バス１１とＩ／Ｏ切り替手段２との間でデータの入出力を司るインタフェイスである。
【００２４】
次に、上記構成を備えた二重化制御システムのトラッキング時の動作について説明する。
【００２５】
ユーザは、設定入力手段５によって予めプログラム上において現在値データを扱う変数を指定し、その変数がトラッキング対象であるか否かを宣言しておく。変数定義エディタ１４は、設定入力手段５によって現在値データを扱う変数がトラッキング対象であることが宣言されている場合には、その変数に対してトラッキング対象であることを示すトラッキング属性を付加する。
【００２６】
例えば、図２に示すように、変数Ａ、Ｃ、Ｄはトラッキング対象であることが宣言されている場合、変数定義エディタ１４は、その変数Ａ、Ｃ、Ｄに対してトラッキング属性としてフラグ“１”を付加する。変数Ｂ、Ｅがトラッキング対象外の変数である場合には、トラッキング属性としてフラグ“０”を付加する。
【００２７】
次に、コンパイラ１５の動作について、図３のフローチャートおよび図４のデータメモリ７に関する説明図に基づいて説明する。なお、図３の符号Ｓは各処理ステップを意味する。
【００２８】
コンパイラ１５は、プログラムをコンパイルする際、先の変数定義エディタ１４によって付加された各変数のトラッキング属性が“１”か“０”かを判断する（ステップ１）。トラッキング属性が“１”の場合には、トラッキング対象であるので、このラッキング対象となる変数について一つの仮アドレスを割り当てる（ステップ２）。
【００２９】
例えば、上記の変数Ａ、Ｃ、Ｄに対してはトラッキング属性としてフラグ“１”が付加されているので、図４（ａ）に示すように、変数Ａについては一つの仮アドレスｐを割り当てる。変数Ｃについては仮アドレス（ｐ＋１）を割り当てる。変数Ｄについては仮アドレス（ｐ＋２）を割り当てる。この場合の仮アドレスｐ、ｐ＋１、ｐ＋２、…は、図４に示したように、データメモリ７内に存在する空き領域のアドレスでもよく、あるいは、データメモリ７上には実際上は存在しない仮想的なアドレスであってもよい。
【００３０】
一方、ステップ１で変数定義エディタ１４によって付加された各変数のトラッキング属性が“０”の場合には、トラッキング対象外であるので、このラッキング対象外となる変数についてはメモリ領域Ｒ１以外の残りのメモリ領域Ｒ２内の所定のアドレスを割り当てる（ステップ３）。
【００３１】
例えば、上記の変数Ｂ、Ｅにはトラッキング属性としてフラグ“０”が付加されているので、変数Ｂについてはメモリ領域Ｒ２内の一つのアドレスｉを割り当てる。変数Ｅについてはメモリ領域Ｒ２内の一つのアドレスｍを割り当てる。
【００３２】
このようにして、全ての変数のアドレス割り当て処理が完了すると（ステップ４）、コンパイラ１５は、その時点で仮アドレスが割り当てられた変数（この例ではＡ、Ｃ、Ｄ、…）を検索して、トラッキング対象メモリ領域Ｒ１内の実アドレスを個別に割り当てる（ステップ５）。
【００３３】
例えば、上記の例では変数Ａについては仮アドレス“ｐ”を実アドレス“０”に、変数Ｃについは仮アドレス“ｐ＋１”を実アドレス“１”に、変数Ｄについては仮アドレス“ｐ＋２”を実アドレス“２”にそれぞれ割り当てる。
【００３４】
そして、現用系の制御装置１Ｘのパーソナルコンピュータ８が定期的あるいは任意のタイミングでトラッキング手段９を起動したとき、これに応じてトラッキング手段９は、データメモリ７内のトラッキング対象メモリ領域Ｒ１内にアドレスが割り当てられた変数（この例ではＡ、Ｃ、Ｄ、…）に格納される現在値データを一括して読み出して待機系の制御装置１Ｙにトラッキングする。待機系のトラッキング手段９は、このようにして一括してトラッキングされてきた現在値データを、データメモリ７に確保されているトラッキング対象メモリ領域Ｒ１内の現用系と同じ各アドレス位置に格納する。
【００３５】
以上のように、この実施の形態１の二重化制御システムにおいては、ユーザは現在値データを扱う変数宣言時にその変数がトラッキング対象になるか否かをトラッキング属性として指定するだけでよく、現在値データを扱うための各変数についてトラッキング対象メモリ領域Ｒ１のアドレスをプログラム作成時においてユーザが個別に割り当てる必要がない。このため、プログラム作成時の効率を向上させることができる。
【００３６】
しかも、トラッキング対象メモリ領域Ｒ１内に割り当てられた変数に格納される現在値データは、従来の固定アドレス方式の場合と同様に一括してトラッキングされるので、トラッキングに要する時間が短くて済み、トラッキングの効率化を図ることができる。
【００３７】
実施の形態２．
図５はこの実施の形態２の二重化制御システムが備える制御装置の要部構成を示すブロック図である。
【００３８】
この実施の形態２における二重化制御システムにおける特徴は、制御装置のコンパイラが実施の形態１の場合と同様の機能を備えるとともに、さらに、コンパイラ１５は、予めデータベースとして準備されている標準ライブラリ１７のプログラムのコンパイル時に生成される内部変数についてトラッキング属性を付加する機能を備えていることである。
【００３９】
図６（ａ）に示すように、例えばオンディレイタイマＴＯＮは、入力Ａがオンして設定時間Ｃが経過すると出力Ｄがオンする。このオンディレイタイマの制御プログラムを標準ライブラリ１７として備えている場合、この標準ライブラリ１７のプログラムをコンパイラ１５でコンパイルした際の実行モジュールは、図６（ｂ）に示すようになる。すなわち、入力として変数Ａ、出力として変数Ｄ、およびタイムアップの設定時間Ｃに加えて、この設定時間Ｃに到達するまでの経過時間をカウントする内部変数ＴＥＭＰ１が生成される。
【００４０】
このような標準ライブラリ１７のプログラムをコンパイルする際に生成される内部変数（上記の例ではＴＥＭＰ１）は、ユーザが予めプログラム上においてトラッキング対象である旨を宣言しておくことは難しいが、この実施の形態２のように、コンパイラ１５が自動的に内部変数に対してトラッキング属性を付加するようにしておけば、内部変数にトラッキング属性を付加するというユーザの負担を軽減することができる。この場合のトラッキング属性が付加された内部変数についてのコンパイラ１５のアドレスの割り当て処理は、図３に示したフローチャートの内容と同様であるので詳しい説明は省略する。
【００４１】
この実施の形態２のように、内部変数に関するデータについても、現用系から待機系にトラッキングして図７に示すように両系のデータメモリ７内にデータを共有できるようにしておけば、現用系の制御装置１Ｘに異常が発生した場合、あるいはメンテナンス時には、待機系の制御装置１Ｙを現用系に、現用系の制御装置１Ｘを待機系に切り替えることにより、常に連続的な制御を維持することができるため、高い信頼性を確保することができる。
【００４２】
その他の構成、および作用効果は実施の形態１の場合と同様であるから、ここでは詳しい説明は省略する。
【００４３】
実施の形態３．
図８はこの実施の形態３の二重化制御システムが備える制御装置の要部構成を示すブロック図である。
【００４４】
この実施の形態３における二重化制御システムにおける特徴は、制御装置１Ｘ、１Ｙのコンパイラ１５が実施の形態１の場合と同様の機能を備えるとともに、さらに、コンパイラ１５は、コンパイル時にフィードバック回路を規定するプログラムの有無を検出するフィードバック検出手段１６が設けられている。
【００４５】
そして、コンパイラ１５は、このフィードバック検出手段１６でフィードバック回路が検出された場合には、そのフィードバック回路のプログラムコンパイル時に生成される内部変数についてトラッキング属性を付加する機能を備えている。
【００４６】
例えば、標準ライブラリ１７として図９（ａ）に示すようなフィードバック回路を規定するプログラムを備えている場合、この標準ライブラリ１７のプログラムをコンパイラ１５でコンパイルした際の実行モジュールは、図９（ｂ）に示すようになる。すなわち、入力として変数Ｇ、出力として変数Ｈ、フィードバックされる内部変数としてＴＥＭＰ２が生成される。
【００４７】
このような標準ライブラリ１７のフィードバック回路を含むプログラムをコンパイルする際に生成される内部変数（上記の例ではＴＥＭＰ２）は、ユーザが予めプログラム上においてトラッキング対象である旨を宣言しておくことは難しいが、この実施の形態３のように、コンパイラ１５のフィードバック検出手段１６が自動的にフィードバック回路の制御プログラムを検出して、その検出されたフィードバック回路をコンパイルする際に生成する内部変数に対してトラッキング属性を付加するようにしておけば、内部変数にトラッキング属性を付加するというユーザの負担を軽減することができる。この場合のトラッキング属性が付加された内部変数についてのコンパイラ１５のアドレスの割り当て処理は、図３に示したフローチャートの内容と同様であるので詳しい説明は省略する。
【００４８】
この実施の形態３のように、フィードバック回路の制御プログラムをコンパイルする際に生成される内部変数に関するデータについても、現用系から待機系にトラッキングして両系のデータメモリ７内にデータを共有できるようにしておけば、現用系の制御装置１Ｘに異常が発生した場合、あるいはメンテナンス時には、待機系の制御装置１Ｙを現用系に、現用系の制御装置１Ｘを待機系に切り替えることにより、常に連続的な制御を維持することができるため、高い信頼性を確保することができる。
【００４９】
その他の構成、および作用効果は実施の形態１の場合と同様であるから、ここでは詳しい説明は省略する。
【００５０】
なお、上記の実施の形態２および実施の形態３のコンパイラ１５が備える機能を組み合わせて、図１０に示すように、設定入力手段５で予めトラッキング対象として宣言されてトラッキング属性が付加された変数（例えばＡ、Ｃ、Ｄ、Ｇ、Ｈ）、標準ライブラリ１７をコンパイルした際に生じる内部変数（この例ではＴＥＭＰ１）、およびフィードバック検出手段１６で検出されるフィードバック回路のプログラムをコンパイルする際に生成する内部変数（この例ではＴＥＭＰ２）のいずれに対してもトラッキング属性を付加する構成にしてもよいのは勿論である。
【図面の簡単な説明】
【００５１】
【図１】本発明の実施の形態１における二重化制御システムの構成を示すブロック図である。
【図２】変数定義エディタにより変数に対して付加されるトラッキング属性の一例を示す説明図である。
【図３】コンパイラのアドレス割り当て処理の動作説明に供するフローチャートである。
【図４】図３のフローチャートに基づくコンパイラのアドレス割り当て処理の説明図である。
【図５】実施の形態２における二重化制御システムが備える制御装置の要部構成を示すブロック図である。
【図６】標準ライブラリとして規定された回路、およびそのプログラムをコンパイルした際に得られる実行モジュールの一例を示す説明図である。
【図７】実施の形態２における二重化制御システムにおいて、標準ライブラリをコンパイルして生成される内部変数をトラッキングする際の説明図である。
【図８】実施の形態３における二重化制御システムが備える制御装置の要部構成を示すブロック図である。
【図９】標準ライブラリとして規定されたフィードバック回路、およびそのプログラムをコンパイルした際に得られる実行モジュールの一例を示す説明図である。
【図１０】本発明の実施の形態の変形例の説明図である。
【符号の説明】
【００５２】
１Ｘ  制御装置（現用系）、１Ｙ  制御装置（待機系）、６  プログラムメモリ、
７  データメモリ、８  パーソナルコンピュータ、９  トラッキング手段、
１４  変数定義エディタ、１５  コンパイラ、１６  フィードバック検出手段、
１７  標準ライブラリ。
【図１】
2005326930.tif 000003
【図２】
2005326930.tif 000004
【図３】
2005326930.tif 000005
【図４】
2005326930.tif 000006
【図５】
2005326930.tif 000007
【図６】
2005326930.tif 000008
【図７】
2005326930.tif 000009
【図８】
2005326930.tif 000010
【図９】
2005326930.tif 000011
【図１０】
2005326930.tif 000012