(57)【特許請求の範囲】
【請求項１】
制御システムに備わる複数の制御装置に含まれる制御装置であって、
前記複数の制御装置は、複数の制御系の制御装置と少なくとも１つの待機系の制御装置とで構成され、
前記複数の制御装置のうちの少なくともいずれかの故障が検出された場合に、全ての制御系の制御装置の故障の有無と全ての待機系の制御装置の故障の有無とを表す２進数の値を示す複数の故障パターンと、プロセスまたは不要を示す複数のプロセス情報と、を互いに対応付ける選択テーブルから、前記制御システムの故障パターンに対応付けられたプロセス情報を選択する選択部と、
選択されたプロセス情報がプロセスを示す場合に、選択されたプロセス情報が示すプロセスを実行する実行部とを備え、
前記２進数の値は、複数のビットから成るビット列で表現される値であり、
前記ビット列の中の１つのビットは、１つの制御装置の状態を表すビット値であり、
各々のプロセス情報は、前記故障パターンが示す２進数の値を含む値、あるいは、前記故障パターンが示す２進数の値にベースアドレスを足して得られる値、をメモリアドレスとするメモリ領域に設定され、
前記選択部は、前記故障パターンが示す２進数の値を含む値、あるいは、前記故障パターンが示す２進数の値にベースアドレスを足して得られる値、をメモリアドレスとするメモリ領域からプロセス情報を取得する
制御装置。
【請求項２】
前記選択テーブルに含まれる複数の故障パターンは、他の制御装置で使用される選択テーブルである他の選択テーブルに含まれる複数の故障パターンと同じであり、
前記選択テーブルに含まれる複数のプロセス情報は、前記他の選択テーブルに含まれる複数のプロセス情報と異なる
請求項１に記載の制御装置。
【請求項３】
前記複数の制御装置のそれぞれの優先度を示す優先度情報に基づいて前記選択テーブルを生成する生成部を備える
請求項１あるいは請求項２のいずれか１項に記載の制御装置。
【請求項４】
制御システムに備わる複数の制御装置に含まれる制御装置のための代替選出プログラムであって、
前記複数の制御装置は、複数の制御系の制御装置と少なくとも１つの待機系の制御装置とで構成され、
前記代替選出プログラムは、
前記複数の制御装置のうちの少なくともいずれかの故障が検出された場合に、全ての制御系の制御装置の故障の有無と全ての待機系の制御装置の故障の有無とを表す２進数の値を示す複数の故障パターンと、プロセスまたは不要を示す複数のプロセス情報と、を互いに対応付ける選択テーブルから、前記制御システムの故障パターンに対応付けられたプロセス情報を選択する選択処理と、
選択されたプロセス情報がプロセスを示す場合に、選択されたプロセス情報が示すプロセスを実行する実行処理と
をコンピュータに実行させ、
前記２進数の値は、複数のビットから成るビット列で表現される値であり、
前記ビット列の中の１つのビットは、１つの制御装置の状態を表すビット値であり、
各々のプロセス情報は、前記故障パターンが示す２進数の値を含む値、あるいは、前記故障パターンが示す２進数の値にベースアドレスを足して得られる値、をメモリアドレスとするメモリ領域に設定され、
前記選択処理は、前記故障パターンが示す２進数の値を含む値、あるいは、前記故障パターンが示す２進数の値にベースアドレスを足して得られる値、をメモリアドレスとするメモリ領域からプロセス情報を取得する
代替選出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御装置が故障した場合に代替機を選出する技術に関するものである。
【背景技術】
【０００２】
プラントシステムにおいて、機器を制御する制御装置が多重化されている。
多重化の方式は、どのように冗長度を持たせるかによって分類される。１台の装置に対してバックアップのための装置を１台用意する方式を１：１方式と呼ぶ。一方、ｋ台の装置に対してバックアップのための装置をｎ台用意する方式をｋ−ｏｕｔ−ｏｆ−ｎ方式と呼ぶ。ｋ−ｏｕｔ−ｏｆ−ｎ方式は、ｎ台以下の故障であれば、どのような装置の組み合わせで故障が発生しても、システムを継続することが可能である。【０００３】
１：１方式は構成および動作が簡単でわかりやすい。そして、故障の発生時に制御系から待機系への切り替えに要する時間が短い。
しかし、２倍の装置が必要となるため、コストが高い。【０００４】
ｋ−ｏｕｔ−ｏｆ−ｎ方式は動作が複雑である。そして、故障の発生時の切り替え時間が長くなりやすい。
しかし、１：１方式よりも必要な台数が少ないため、コストが低い。【０００５】
ｋ−ｏｕｔ−ｏｆ−ｎ方式は、切り替え時間の制約が緩い情報処理分野で積極的に採用されている。しかしながら、ｋ−ｏｕｔ−ｏｆ−ｎ方式は、リアルタイム性能の要件が厳しい制御分野では、ほとんど採用されていない。
故障の発生時に復旧までに要する処理時間が長いと、切り替え時間の要件を満たすことができず、システム全体の重篤な故障に繋がる。特に、代替機を選出するために装置間で合意を取る処理が複雑で時間を要する。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特公平８−２７７３５号公報
【非特許文献】
【０００７】
【非特許文献１】久野  靖、“分散アルゴリズム”  ｉｎ  知識の森、電子情報通信学会、２０１２、６群３編５章、ｐｐ．１３―１６．
【発明の概要】
【発明が解決しようとする課題】
【０００８】
非特許文献１には、装置同士が互いに通信することによって装置間で合意を取る方法が開示されている。
しかし、ミリ秒オーダーの遅延が生じるため、非特許文献１の方法は制御分野では採用し難い。【０００９】
特許文献１には、専用のハードウェアを用いて制御装置とバックアップ機との関係を定めるルールに従う方法が開示されている。これにより、時間が短縮される。
しかし、専用のハードウェアを要するため、特許文献１の方法は既存のシステムに適用し難い。また、追加のコストが必要となる。
さらに、制御装置とバックアップ機との関係がルールによって固定化されるため、特許文献１の方法では重要な装置を優先してバックアップすることができない。【００１０】
本発明は、制御装置が故障した場合に、正常な制御装置間で通信を行わずに、且つ、専用のハードウェアを用いずに、故障した制御装置で実行されていたプロセスを正常な制御装置で実行できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明の制御装置は、制御システムに備わる複数の制御装置に含まれる制御装置である。
本発明の制御装置は、
前記複数の制御装置のうちの少なくともいずれかの故障が検出された場合に、正常な制御装置と故障した制御装置との組み合わせである故障パターンと、プロセスまたは不要を示すプロセス情報とを互いに対応付ける選択テーブルから、前記制御システムの故障パターンに対応付けられたプロセス情報を選択する選択部と、
選択されたプロセス情報がプロセスを示す場合に、選択されたプロセス情報が示すプロセスを実行する実行部とを備える。
【発明の効果】
【００１２】
本発明によれば、制御装置が故障した場合に、正常な制御装置間で通信を行わずに、且つ、専用のハードウェアを用いずに、故障した制御装置で実行されていたプロセスを正常な制御装置で実行することが可能となる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１における制御システム１００の構成図。
【図２】実施の形態１における制御装置２００の構成図。
【図３】実施の形態１における制御方法のフローチャート。
【図４】実施の形態１における選択テーブル２１１を示す図。
【図５】実施の形態１における代替選出（Ｓ１１０）のフローチャート。
【図６】実施の形態２における選択テーブル２１２の構成図。
【図７】実施の形態２における制御方法のフローチャート。
【図８】実施の形態２における代替選出（Ｓ１２０）のフローチャート。
【図９】実施の形態３における制御装置２００の構成図。
【図１０】実施の形態３における選択テーブル２１３の構成図。
【図１１】実施の形態３における選択テーブル２１３の構成図。
【図１２】実施の形態３におけるテーブル生成（Ｓ１３０）のフローチャート。
【図１３】実施の形態３における優先度情報の流れを示す図。
【図１４】実施の形態３における優先度情報の流れを示す図。
【図１５】実施の形態における制御装置２００のハードウェア構成図。
【発明を実施するための形態】
【００１４】
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１５】
実施の形態１．
制御装置が故障した場合に故障した制御装置で実行されていたプロセスを正常な制御装置で実行するための形態について、図１から図５に基づいて説明する。
【００１６】
＊＊＊構成の説明＊＊＊
【００１７】
図１に、制御システム１００を示す。制御システム１００はプラントシステムと呼ばれる制御システムである。
制御システム１００は、複数の制御装置２００と複数の入出力装置１０１と複数の機器１０２とネットワーク１０３と生産設備１０４とを備える。Ｉ／Ｏは入出力の略称である。
【００１８】
制御装置２００は、ネットワーク１０３を介して入出力装置１０１と通信を行うことによって、入出力装置１０１を介して機器１０２を制御する。
具体的には、制御装置２００は、入出力装置１０１から機器１０２の状態を受け付け、入出力装置１０１に指令を与える。
【００１９】
機器１０２は、アクチュエータおよび電磁バルブなどの機器であり、生産設備１０４を動作させる。
【００２０】
制御システム１００において、制御装置２００は、ｋ−ｏｕｔ−ｏｆ−ｎ方式で多重化されている。
動作している制御装置２００を制御系の制御装置２００といい、バックアップのために待機している制御装置２００を待機系の制御装置２００という。制御系の制御装置２００を総称して制御系といい、待機系の制御装置２００を総称して待機系という。
例えば、制御システム１００は５台の制御装置２００を備える。３台の制御装置２００が制御系であり、残りの制御装置２００（２台の制御装置２００）が待機系である。
【００２１】
図２に基づいて、制御装置２００の構成を説明する。
制御装置２００は、プロセッサ９０１とメモリ９０２と補助記憶装置９０３と通信装置９０４といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００２２】
プロセッサ９０１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。例えば、プロセッサ９０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、またはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
メモリ９０２は揮発性の記憶装置である。メモリ９０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ９０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリ９０２に記憶されたデータは必要に応じて補助記憶装置９０３に保存される。
補助記憶装置９０３は不揮発性の記憶装置である。例えば、補助記憶装置９０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、またはフラッシュメモリである。補助記憶装置９０３に記憶されたデータは必要に応じてメモリ９０２にロードされる。
【００２３】
通信装置９０４は通信を行う装置、すなわち、レシーバ及びトランスミッタである。例えば、通信装置９０４は通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
【００２４】
制御装置２００は、制御部２０１と検出部２０２と選択部２１０と実行部２０３といったソフトウェア要素を備える。ソフトウェア要素はソフトウェアで実現される要素である。
【００２５】
補助記憶装置９０３には、選択部２１０としてコンピュータを機能させるための代替選出プログラムが記憶されている。代替選出プログラムは、メモリ９０２にロードされて、プロセッサ９０１によって実行される。
さらに、補助記憶装置９０３にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。ＯＳの少なくとも一部は、メモリ９０２にロードされて、プロセッサ９０１によって実行される。
つまり、プロセッサ９０１は、ＯＳを実行しながら、代替選出プログラムを実行する。
代替選出プログラムを実行して得られるデータは、メモリ９０２、補助記憶装置９０３、プロセッサ９０１内のレジスタまたはプロセッサ９０１内のキャッシュメモリといった記憶装置に記憶される。
【００２６】
メモリ９０２はデータを記憶する記憶部２９１として機能する。但し、他の記憶装置が、メモリ９０２の代わりに、又は、メモリ９０２と共に、記憶部２９１として機能してもよい。
通信装置９０４はデータを通信する通信部２９２として機能する。
【００２７】
制御装置２００は、プロセッサ９０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ９０１の役割を分担する。
【００２８】
代替選出プログラムは、磁気ディスク、光ディスクまたはフラッシュメモリ等の不揮発性の記憶媒体にコンピュータ読み取り可能に記憶することができる。不揮発性の記憶媒体は、一時的でない有形の媒体である。
【００２９】
＊＊＊動作の説明＊＊＊
制御装置２００の動作は制御方法および代替選出方法に相当する。また、制御方法の手順は制御プログラムの手順に相当し、代替選出方法の手順は代替選出プログラムに相当する。
【００３０】
図３に基づいて、制御方法を説明する。
ステップＳ１０１において、制御部２０１はトラッキングを行う。
トラッキングは、故障の発生時に制御系から待機系に動作を直ちに引き継げるように、制御系から待機系へ、現在の処理状態を通知する処理である。なお、トラッキングは、ｋ−ｏｕｔ−ｏｆ−ｎ方式の制御システムで行われる通常の処理である。
具体的には、制御系の制御装置２００において、制御部２０１は、現在の処理状態を表すスナップショットを生成し、生成されたスナップショットを通信部２９２を介して他の制御装置２００に送信する。また、制御部２０１は、制御系の他の制御装置２００から送信されたスナップショットを通信部２９２を介して受信し、受信されたスナップショットを記憶部２９１に記憶する。
具体的には、待機系の制御装置２００において、制御部２０１は、制御系の制御装置２００から送信されたスナップショットを通信部２９２を介して受信し、受信されたスナップショットを記憶部２９１に記憶する。
【００３１】
ステップＳ１０２において、制御部２０１は制御通信を行う。
制御通信は、制御系の制御装置２００同士が制御のための情報をやりとりする処理である。なお、制御通信は制御システムで行われる通常の処理である。
具体的には、制御系の制御装置２００において、制御部２０１は、制御情報を生成し、生成された制御情報を通信部２９２を介して制御系の他の制御装置２００に送信する。また、制御部２０１は、制御系の他の制御装置２００から送信された制御情報を通信部２９２を介して受信し、受信された制御情報に基づいて特定の制御を行う。
待機系の制御装置２００では、ステップＳ１０２は実行されない。
【００３２】
ステップＳ１０３において、検出部２０２はキープアライブを行う。
キープアライブは、故障している制御装置２００の存在を確認する処理である。なお、キープアライブは、ｋ−ｏｕｔ−ｏｆ−ｎ方式の制御システムで行われる通常の処理である。
具体的には、制御系と待機系とのそれぞれの制御装置２００において、検出部２０２は、応答要求パケットを通信部２９２を介して他の制御装置２００に送信する。また、検出部２０２は、他の制御装置２００から送信された応答要求パケットを通信部２９２を介して受信し、応答パケットを通信部２９２を介して応答要求パケットの送信元に送信する。また、検出部２０２は、一定時間の間、他の制御装置２００から送信された応答パケットを通信部２９２を介して受信する。そして、検出部２０２は、一定時間の間に受信された応答パケットの送信元以外の他の制御装置２００を検出する。検出された他の制御装置２００は故障した制御装置２００である。
【００３３】
故障した制御装置２００が検出された場合、処理はステップＳ１１０に進む。
故障した制御装置２００が検出されなかった場合、処理はステップＳ１０１に進む。
【００３４】
ステップＳ１１０において、選択部２１０は代替選出を実施する。
代替選出は、故障した制御装置２００を代替する制御装置２００を選出するための処理である。
【００３５】
図４に基づいて、選択テーブル２１１を説明する。
選択テーブル２１１は、代替選出（Ｓ１１０）で使用される選択テーブルの例である。選択テーブル２１１は記憶部２９１に予め記憶される。
選択テーブル２１１は、行番号と故障パターンとプロセス情報とのそれぞれの列を有する。選択テーブル２１１において、行番号と故障パターンとプロセス情報とは互いに対応付けられている。
【００３６】
行番号の列は、行番号を示す。行番号は、選択テーブル２１１の行を識別する。
【００３７】
故障パターンの列は、故障パターンを示す。故障パターンは、正常な制御装置２００と故障した制御装置２００との組み合わせである。ｘ台目：正常（１）は、第ｘ制御装置２００が正常の状態であることを意味する。ｘ台目：故障（０）は、第ｘ制御装置２００が故障の状態であることを意味する。
故障パターンの列に示される故障パターンの数は、２＾Ｎである。２＾Ｎは２のＮ乗を意味する。Ｎは、制御システム１００に備わる制御装置２００の数である。
制御システム１００に備わる制御装置２００の数Ｎは、制御系の制御装置２００の数ｋと待機系の制御装置２００の数ｎとの合計である。
第１制御装置２００から第ｋ制御装置２００までが制御系の制御装置２００であり、第ｋ＋１制御装置２００から第Ｎ制御装置２００までが待機系の制御装置２００である。
【００３８】
プロセス情報の列は、プロセス情報を示す。プロセス情報は、プロセスまたは不要（なし）を示す。
プロセス情報の列に示されるプロセスは、新たに実行されるプロセスである。具体的には、プロセス情報の列に示されるプロセスは、故障状態の制御装置２００で実行されていたプロセスである。
プロセス情報の列に示される不要は、新たに実行されるプロセスが無いことを意味する。「なし」は不要を意味する。
【００３９】
故障パターンの列は、全ての制御装置２００において同一である。
つまり、特定の制御装置２００において選択テーブル２１１に含まれる複数の故障パターンは、他の制御装置２００において選択テーブル２１１に含まれる複数の故障パターンと同じである。
【００４０】
プロセス情報の列は、制御装置２００ごとに異なる。
つまり、特定の制御装置２００において選択テーブル２１１に含まれる複数のプロセス情報は、他の制御装置２００において選択テーブル２１１に含まれる複数のプロセス情報と異なる。
【００４１】
定常状態における全てのプロセスがなるべく多くの故障パターンにおいて実行されるように、プロセス情報の列が設定されるのが良い。
定常状態は故障が発生していない状態であり、定常状態における全てのプロセスは定常状態の制御システム１００において制御系によって実行される全てのプロセスである。
【００４２】
例えば、制御系の第ｋ制御装置２００のみが故障した場合、代替選出（Ｓ１１０）によって、待機系の第ｋ＋１制御装置２００にプロセスｍｋが割り当てられる。プロセスｍｋは、定常状態において制御系の第ｋ制御装置２００によって実行されるプロセスである。
【００４３】
代替選出（Ｓ１１０）において、選択部２１０は、選択テーブル２１１から、制御システム１００の故障パターンに対応付けられたプロセス情報を選択する。
【００４４】
図５に基づいて、代替選出（Ｓ１１０）の手順を説明する。
ステップＳ１１１において、選択部２１０は、制御システム１００の現在の故障パターンを特定する。
具体的には、選択部２１０は、ステップＳ１０３（図３参照）の結果に基づいて、正常な制御装置２００と故障した制御装置２００との組み合わせを特定する。特定される組み合わせが制御システム１００の現在の故障パターンである。
【００４５】
ステップＳ１１２において、選択部２１０は、変数ｉに０を設定する。
【００４６】
ステップＳ１１３において、選択部２１０は、選択テーブル２１１からｉ行目の故障パターンを取得する。
そして、選択部２１０は、ステップＳ１１１で特定された故障パターンをｉ行目の故障パターンと比較する。
【００４７】
ステップＳ１１４において、選択部２１０は、ステップＳ１１１で特定された故障パターンがｉ行目の故障パターンと一致するか判定する。
ステップＳ１１１で特定された故障パターンがｉ行目の故障パターンと一致する場合、処理はステップＳ１１６に進む。
ステップＳ１１１で特定された故障パターンがｉ行目の故障パターンと一致しない場合、処理はステップＳ１１５に進む。
【００４８】
ステップＳ１１５において、選択部２１０は、変数ｉの値に１を足す。
ステップＳ１１５の後、処理はステップＳ１１３に進む。
【００４９】
ステップＳ１１６において、選択部２１０は、選択テーブル２１１からｉ行目のプロセス情報を取得する。
【００５０】
図３に戻り、ステップＳ１０４から説明を続ける。
ステップＳ１０４において、制御部２０１は、実行プロセスが有るか判定する。
実行プロセスは、代替選出（Ｓ１１０）で取得されたプロセス情報に示されるプロセスである。
具体的には、制御部２０１は、代替選出（Ｓ１１０）で取得されたプロセス情報がプロセスを示すか判定する。プロセス情報がプロセスを示す場合、実行プロセスが有る。プロセス情報が不要を示す場合、実行プロセスが無い。
実行プロセスが有る場合、処理はステップＳ１０５に進む。
実行プロセスが無い場合、処理はステップＳ１０１に進む。
【００５１】
ステップＳ１０５において、実行部２０３は、実行プロセスの実行を開始する。
具体的には、実行部２０３は、以下のように動作する。
まず、実行部２０３は、記憶部２９１から故障した制御装置２００のスナップショットを選択する。
次に、実行部２０３は、選択されたスナップショットを用いて、故障した制御装置２００の故障前の処理状態を復元する。
そして、実行部２０３は、故障した制御装置２００の故障前の処理状態で、実行プロセスの実行を開始する。
これにより、故障した制御装置２００で実行されていたプロセスが代替の制御装置２００に引き継がれて実行される。
【００５２】
＊＊＊実施の形態１の効果＊＊＊
実施の形態１では、すべての故障パターンに対してどの制御装置２００がどのプロセスを実行するか、つまり、待機系のどの制御装置２００にどのプロセスを代替させるかを予め定める。
これにより、汎用のハードウェアのみを用いて、短い遅延時間で且つ柔軟に、制御装置（制御系の制御装置２００）とバックアップ機（待機系の制御装置２００）との関係を定めることができる。
【００５３】
代替選出（Ｓ１１０）に要する時間は、故障パターンを比較する回数に依存する。故障パターンを比較する回数は、最大で２＾Ｎ回である。１回あたりの処理時間は、数十ナノ秒から数百ナノ秒程度である。
制御装置２００の数Ｎが１０台前後である場合、代替選出（Ｓ１１０）に要する時間は最大で数マイクロ秒である。
したがって、実施の形態１における代替選出は、制御系の制御装置間でハンドシェイクを取る従来の方法と比較して高速であり、数ミリ秒での切り替えが要件となるシステムにおいて有効である。
【００５４】
実施の形態２．
代替選出に要する時間を短縮するための選択テーブルの格納方法について、主に実施の形態１と異なる点を図６から図８に基づいて説明する。
【００５５】
＊＊＊構成の説明＊＊＊
図６に基づいて、選択テーブル２１２の構成を説明する。
選択テーブル２１２は、ベースアドレス以降のメモリ領域に格納される。ベースアドレスは、選択テーブル２１２の先頭アドレスとして決められたメモリアドレスである。
選択テーブル２１２は、故障パターンの数と同じ数の個別領域を有する。制御装置２００の数がＮである場合、選択テーブル２１２は、２＾Ｎ個の個別領域を有する。
個別領域には、故障パターンに対応するプロセス情報が設定される。
個別領域は、メモリ領域のうち、故障パターンを示す２進数の値を用いて得られるメモリアドレスで識別される部分である。
具体的には、個別領域は、故障パターンを示す２進数の値にベースアドレスを足して得られるメモリアドレスで識別される部分のメモリ領域である。
【００５６】
故障パターンを示す２進数の値とは、複数の制御装置２００に対応する複数のビットから成るビット列で表現される値である。
制御装置２００の数がＮである場合、故障パターンはＮビットのビット列で表現される。ビット列の中の１つのビットは、１つの制御装置２００の状態を表すビット値を示す。
制御装置２００が５台あり、第１制御装置２００が故障の状態であり、第２制御装置２００から第５制御装置２００が正常の状態であるものとする。また、ビット値「１」が正常の状態を表し、ビット値「０」が故障の状態を表すものとする。この場合、第１ビットが「０」になり、第２ビットから第５ビットが「１」になるので、故障パターンを表す５ビットは「１１１１０」である。
【００５７】
＊＊＊動作の説明＊＊＊
図７に基づいて、制御方法を説明する。
ステップＳ１０１からステップＳ１０３までの各ステップ、ステップＳ１０４およびステップＳ１０５は、実施の形態１（図３参照）で説明した通りである。
【００５８】
ステップＳ１０３で、故障した制御装置２００が検出された場合、代替選出（Ｓ１２０）が実行される。
代替選出（Ｓ１２０）において、選択部２１０は、制御システム１００の故障パターンを示す２進数の値を用いて制御システム１００の故障パターンに対応するメモリアドレスを算出する。そして、選択部２１０は、算出されたメモリアドレスで識別されるメモリ領域からプロセス情報を取得する。
【００５９】
図８に基づいて、代替選出（Ｓ１２０）の手順を説明する。
ステップＳ１２１において、選択部２１０は、制御システム１００の現在の故障パターンのビット列を生成する。
具体的には、選択部２１０は、制御システム１００の現在の故障パターンを特定し、特定した故障パターンを示すビット列を生成する。
制御システム１００の現在の故障パターンを特定する方法は、実施の形態１のステップＳ１１１（図５参照）における方法と同じである。
【００６０】
ステップＳ１２２において、選択部２１０は、制御システム１００の現在の故障パターンに対応するベースアドレスを算出する。
具体的には、選択部２１０は、ステップＳ１２１で生成されたビット列が示す２進数の値にベースアドレスを足す。これによって得られるメモリアドレスが、制御システム１００の現在の故障パターンに対応するベースアドレスである。
【００６１】
ステップＳ１２３において、選択部２１０は、制御システム１００の現在の故障パターンに対応するプロセス情報を選択テーブル２１２から取得する。
具体的には、選択部２１０は、ステップＳ１２２で算出されたメモリアドレスで識別されるメモリ領域からプロセス情報を取得する。取得されるプロセス情報が、制御システム１００の現在の故障パターンに対応するプロセス情報である。
【００６２】
＊＊＊実施の形態２の効果＊＊＊
実施の形態２では、選択テーブル２１２がメインメモリ（メモリ９０２）の連続した領域に保存される。
これにより、汎用のハードウェアのみを用いて、短い遅延時間で且つ柔軟に、制御装置（制御系の制御装置２００）とバックアップ機（待機系の制御装置２００）との関係を定めることができる。
【００６３】
代替選出（Ｓ１２０）に要する時間は、１回の加算と１回のメモリアクセスとに要する時間である。この時間は数十ナノ秒から数百ナノ秒程度である。
したがって、実施の形態２における代替選出は、制御系の制御装置間でハンドシェイクを取る方法と比較して高速であり、数ミリ秒での切り替えが要件となるシステムにおいて有効である。
【００６４】
実施の形態３．
選択テーブルを生成する形態について、主に実施の形態１および実施の形態２と異なる点を図９から図１４に基づいて説明する。
【００６５】
＊＊＊構成の説明＊＊＊
図９に基づいて、制御装置２００の構成を説明する。
制御装置２００は、さらに、生成部２２０をソフトウェア要素として備える。
代替選出プログラムは、さらに、生成部２２０としてコンピュータを機能させる。
【００６６】
図１０および図１１に基づいて、選択テーブル２１３の構成を説明する。
選択テーブル２１３は、行番号と故障パターンとプロセス情報とのそれぞれの列を有する。
行番号が記された列が行番号の列である。
【００６７】
第１列から第５列までが故障パターンの列である。
第１列から第３列には、制御系識別子（ｍ１、ｍ２およびｍ３）が優先度の高い順に設定されている。制御系識別子は、制御系の制御装置２００を識別する。つまり、制御装置ｍ１、制御装置ｍ２、制御装置ｍ３の順で優先度が高い。優先度が高い制御装置２００は、優先度が高いプロセスが割り当てられた制御装置２００である。例えば、優先度が高いプロセスは、運転の継続が不可能になった際に安全に停止するための処理である。例えば、優先度が低いプロセスは、画像を表示する際に色味を調整するための処理、または、安全性に関係がない処理である。
第４列および第５列には、待機系識別子（ｎ１およびｎ２）が設定されている。
故障パターンは、制御装置２００毎の状態を示している。故障パターンにおいて、値１は正常の状態を意味し、値０は故障の状態を意味する。
【００６８】
第６列および第７列がプロセス情報の列である。
第６列および第７列には、待機系識別子（ｎ１およびｎ２）が設定されている。
プロセス情報は、待機系の制御装置２００毎に、制御系識別子（ｍ１、ｍ２またはｍ３）を示している。プロセス情報において、制御系識別子は、待機系の制御装置２００に割り当てられるプロセスの識別子に相当する。つまり、制御系識別子で識別される制御装置２００で実行されていたプロセスが待機系の制御装置２００に割り当てられる。また、ハイフンは、新たに割り当てられるプロセスが無い、つまり、不要を意味する。
【００６９】
選択テーブル２１３は、実施の形態１における選択テーブル２１１と以下のように対応している。
選択テーブル２１３の第１列から第５列は、選択テーブル２１１における故障パターンの列に相当する。
選択テーブル２１３の第６列（ｎ１）または第７列（ｎ２）は、選択テーブル２１１におけるプロセス情報の列に相当する。つまり、待機系の制御装置ｎ１において、選択テーブル２１１は、プロセス情報の列として、第６列（ｎ１）を有する。また、待機系の制御装置ｎ２において、選択テーブル２１１は、プロセス情報の列として、第７列（ｎ２）を有する。
【００７０】
選択テーブル２１３は、実施の形態２における選択テーブル２１２と以下のように対応している。
選択テーブル２１３の第１列から第５列に示される故障パターンは、選択テーブル２１２の個別領域を特定する故障パターンに相当する。
選択テーブル２１３において第６列（ｎ１）または第７列（ｎ２）に示されるプロセス情報は、選択テーブル２１２の中の個別領域に設定されるプロセス情報に相当する。つまり、待機系の制御装置ｎ１において、選択テーブル２１２の中の個別領域には、選択テーブル２１３の第６列（ｎ１）に示されるプロセス情報が設定される。また、待機系の制御装置ｎ２において、選択テーブル２１２の中の個別情報には、選択テーブル２１３の第７列（ｎ２）に示されるプロセス情報が設定される。
【００７１】
＊＊＊動作の説明＊＊＊
図１２に基づいて、テーブル生成（Ｓ１３０）を説明する。
テーブル生成（Ｓ１３０）は、選択テーブル２１３を生成するための処理であり、生成部２２０によって実行される。
【００７２】
ステップＳ１３１において、生成部２２０は、優先度情報に基づいて、故障パターンの列に制御系識別子および待機系識別子を優先度の高い順に登録する。
優先度情報は、制御装置２００毎の優先度を示す情報であり、記憶部２９１に予め記憶される。
【００７３】
図１３に示すように、優先度情報は、設定装置１１０から各制御装置２００に設定される。具体的には、制御装置２００毎に設定装置１１０が制御装置２００に接続され、設定装置１１０から接続先の制御装置２００へ優先度情報が入力される。
破線の矢印は、優先度情報の流れを示している。
実線の矢印は、制御装置２００毎に優先度情報に基づいて選択テーブル２１３が生成されることを意味する。
【００７４】
図１４に示すように、優先度情報は、設定装置１１０から１台の制御装置２００に設定されてもよい。
この場合、その制御装置２００は、優先度情報に基づいて各制御装置２００の選択テーブル２１３を生成し、各制御装置２００に選択テーブル２１３を配信する。
設定装置１１０から制御装置２００への矢印は、優先度情報の流れを示している。
制御装置２００間の矢印は、選択テーブル２１３の流れを示している。
【００７５】
図１２に戻り、ステップＳ１３２から説明を続ける。
ステップＳ１３２において、生成部２２０は、故障パターンの列に故障パターンを設定する。
具体的には、生成部２２０は、故障パターンの数２＾Ｎと同じ数の行を選択テーブル２１３に追加し、各行の故障パターンの列に故障パターンを１つずつ設定する。
【００７６】
ステップＳ１３３において、生成部２２０は、プロセス情報の列を初期化する。
具体的には、生成部２２０は、プロセス情報の列の中の各要素にハイフン（−）を設定する。
【００７７】
行ループの開始から行ループの終了までの処理は、選択テーブル２１３に示される行番号の小さい順に、選択テーブル２１３の行毎に実行される。
【００７８】
列ループの開始から列ループの終了までの処理は、選択テーブル２１３に示される列番号の小さい順に、選択テーブル２１３の列毎に実行される。
【００７９】
ステップＳ１３４において、生成部２２０は、対象行の対象列が故障状態（０）を示すか判定する。
対象行の対象列が故障状態（０）を示す場合、処理はステップＳ１３５に進む。
対象行の対象列が正常状態（１）を示す場合、対象列に対する処理は終了する。
【００８０】
ステップＳ１３５において、生成部２２０は、対象行に未割り当て要素が有るか判定する。
未割り当て要素は、プロセス情報の列において制御系識別子（プロセス識別子）が設定されていない要素、すなわち、プロセス情報の列においてハイフン（−）が設定されている要素である。
対象行に未割り当て要素が有る場合、処理はステップＳ１３６に進む。
対象行に未割り当て要素が無い場合、対象行に対する処理は終了する。
【００８１】
ステップＳ１３６において、生成部２２０は、対象行の該当列が正常状態（１）を示すか判定する。
該当列は、故障パターンの列のうち、未割り当て要素の列に対応する列である。具体的には、該当列は、故障パターンの列のうち、未割り当て要素の列に設定されている待機系識別子と同じ待機系識別子が設定されている列である。
例えば、図１０において、未割り当て要素の列が第６列である場合、未割り当て要素の列に設定されている待機系識別子はｎ１である。したがって、故障パターンの列である第１列から第５列のうち、待機系識別子ｎ１が設定されている第４列が該当列である。
対象行の該当列が正常状態（１）を示す場合、処理はステップＳ１３７に進む。
対象行の該当列が異常状態（０）を示す場合、対象行に対する処理は終了する。
【００８２】
ステップＳ１３７において、生成部２２０は、未割り当て要素にプロセス情報を設定する。
具体的には、生成部２２０は、対象列に設定されている制御系識別子を未割り当て要素に設定する。
【００８３】
＊＊＊実施の形態３の効果＊＊＊
制御装置２００は、優先度情報に基づいて選択テーブル２１３を生成することができる。つまり、制御装置２００は、プロセスの優先度を踏まえて、実施の形態１における選択テーブル２１１および実施の形態２における選択テーブル２１２を効率的に生成することができる。
【００８４】
＊＊＊実施の形態の補足＊＊＊
図１５に基づいて、制御装置２００のハードウェア構成を説明する。
制御装置２００は処理回路９９０を備える。
処理回路９９０は、制御部２０１と検出部２０２と実行部２０３と選択部２１０と記憶部２９１とを実現するハードウェアである。
処理回路９９０は、専用のハードウェアであってもよいし、メモリ９０２に格納されるプログラムを実現するプロセッサ９０１であってもよい。
【００８５】
処理回路９９０が専用のハードウェアである場合、処理回路９９０は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【００８６】
制御装置２００は、処理回路９９０を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路９９０の役割を分担する。
【００８７】
制御装置２００の機能について、一部が専用のハードウェアで実現されて、残りがソフトウェアまたはファームウェアで実現されてもよい。
【００８８】
このように、処理回路９９０はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【００８９】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【００９０】
１００  制御システム、１０１  入出力装置、１０２  機器、１０３  ネットワーク、１０４  生産設備、１１０  設定装置、２００  制御装置、２０１  制御部、２０２  検出部、２０３  実行部、２１０  選択部、２１１  選択テーブル、２１２  選択テーブル、２１３  選択テーブル、２２０  生成部、２９１  記憶部、２９２  通信部、９０１  プロセッサ、９０２  メモリ、９０３  補助記憶装置、９０４  通信装置、９９０  処理回路。
【要約】
検出部（２０２）は、制御システムに備わる複数の制御装置のうちの少なくともいずれかの故障を検出する。選択テーブルは、故障パターンとプロセス情報とを互いに対応付ける。故障パターンは、正常な制御装置と故障した制御装置との組み合わせである。プロセス情報は、プロセスまたは不要を示す。選択部（２１０）は、選択テーブルから、制御システムの故障パターンに対応付けられたプロセス情報を選択する。選択されたプロセス情報がプロセスを示す場合、実行部（２０３）は、選択されたプロセス情報が示すプロセスを実行する。【図１】
0006362798.tif 000002
【図２】
0006362798.tif 000003
【図３】
0006362798.tif 000004
【図４】
0006362798.tif 000005
【図５】
0006362798.tif 000006
【図６】
0006362798.tif 000007
【図７】
0006362798.tif 000008
【図８】
0006362798.tif 000009
【図９】
0006362798.tif 000010
【図１０】
0006362798.tif 000011
【図１１】
0006362798.tif 000012
【図１２】
0006362798.tif 000013
【図１３】
0006362798.tif 000014
【図１４】
0006362798.tif 000015
【図１５】
0006362798.tif 000016