(57)【要約】      （修正有）【課題】ハードウェア故障が発生した場合にその故障を検出し、誤ったデータを使用することがなく、使用するデータの正当性を向上させた二重化システムを実現する。【解決手段】安全システムの正当性を向上させた二重化システムに関するものである。各プロセッサ装置は、自身のメモリに書き込まれたデータを他方のプロセッサ装置のメモリの同一アドレスに逐次書き込む第１の複写手段と、自身のメモリの全データを分割して順番に定周期で他方のプロセッサ装置のメモリに書き込む第２の複写手段と、メモリに書き込まれたデータをチェックするエラー検出手段と、エラー検出手段がエラーを検出した際にエラービットを立てるエラーチェックレジスタとを有し、制御側プロセッサ装置は、前記第１の複写手段及び前記第２の複写手段により待機側プロセッサ装置のメモリにデータを書き込んだ後に、待機側の前記エラーチェックレジスタのエラービットをチェックする。【選択図】図１
2006285631.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサ装置を二重化し、一方のプロセッサ装置が入出力モジュールの制御につき他方のプロセッサ装置が待機する二重化システムにおいて、
各プロセッサ装置は、自身のメモリに書き込まれたデータを他方のプロセッサ装置のメモリの同一アドレスに逐次書き込む第１の複写手段と、自身のメモリの全データを分割して順番に定周期で他方のプロセッサ装置のメモリに書き込む第２の複写手段と、メモリに書き込まれたデータをチェックするエラー検出手段と、該エラー検出手段がエラーを検出した際にエラービットを立てるエラーチェックレジスタとを有し、
制御側プロセッサ装置は、前記第１の複写手段及び前記第２の複写手段により待機側プロセッサ装置のメモリにデータを書き込んだ後に、待機側の前記エラーチェックレジスタのエラービットをチェックすることを特徴とする二重化システム。
【請求項２】
前記制御側プロセッサ装置は、前記第１の複写手段及び前記第２の複写手段により前記待機側プロセッサ装置のメモリにデータを書き込む前に待機側の前記エラーチェックレジスタのエラービットをクリアし、データを書き込んだ後にエラービットをチェックすることを特徴とする請求項１記載の二重化システム。
【請求項３】
前記制御側プロセッサ装置は、待機側の前記エラーチェックレジスタのエラービットが立っているときに、前記第１の複写手段及び前記第２の複写手段によるデータ書き込みを最初からやり直すことを特徴とする請求項１又は２記載の二重化システム。
【請求項４】
前記入出力モジュールは、前記プロセッサ装置に渡す入力データにデータチェックコードを付加し、
前記各プロセッサ装置は、前記入出力モジュールからそれぞれデータを受信し、受信したデータチェックコードと受信したデータから作成したデータチェックコードをチェックすることを特徴とする請求項１乃至３のいずれかに記載の二重化システム。
【請求項５】
前記各プロセッサ装置は、前記入出力モジュールに渡す出力データにデータチェックコードを付加し、
前記各入出力モジュールは、前記制御側プロセッサ装置からそれぞれデータを受信し、受信したデータチェックコードと受信したデータから作成したデータチェックコードをチェックすることを特徴とする請求項１乃至４のいずれかに記載の二重化システム。
【請求項６】
前記データチェックコードは、ＣＲＣコード及びシーケンス番号の少なくともいずれかを含むことを特徴とする請求項１乃至５のいずれかに記載の二重化システム。
【請求項７】
一方のプロセッサ装置から他方のプロセッサ装置へ制御権が切り替わった時に、前記入出力モジュールは受信したデータの前記シーケンス番号の連続性をチェックすることを特徴とする請求項１乃至６のいずれかに記載の二重化システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、安全システムに適用される二重化システムに関し、特に安全システムの正当性を向上させた二重化システムに関するものである。
【背景技術】
【０００２】
プロセス制御を行う分散形制御システム等に適用されるようなプロセッサ装置においては、アベイラビリティを高めるためにプロセス制御演算を行うプロセッサ装置を二重化構成とし、一方のプロセッサ装置の故障に備えて他方のプロセッサ装置を待機させるように構成した二重化システムが広く実用化されている。
【０００３】
図３は、従来の二重化システムの二重化開始時の動作説明図である。
二重化の開始は、制御側プロセッサ装置１０が動作中に待機側プロセッサ装置２０が起動することによって行われる。
制御側プロセッサ装置１０のメモリ１１には、ロジックエンジン１２及びＯＳ１３が格納されており、ロジックエンジン１２がＯＳ１３を経由して、入力モジュール３０のデータを読み、制御演算を実行した後、ＯＳ１３を経由して出力モジュール４０に出力データを書き込む処理を定周期で繰り返し実行している。
【０００４】
待機側プロセッサ装置２０が起動すると、制御側プロセッサ装置１０は待機側プロセッサ装置２０が起動したことを知り、制御側プロセッサ装置１０の第１の複写手段１４を有効化する。
第１の複写手段１４が有効化されると、制御側プロセッサ装置１０のプロセッサ（図示せず）がメモリ１１に対して書き込んだデータが、待機側プロセッサ装置２０のメモリ２１の同一アドレスに書き込まれる。
【０００５】
さらに、制御側プロセッサ装置１０のＯＳ１３は、第２の複写手段により制御側プロセッサ装置１０のメモリ１１上にある全データを定周期で少しずつ順に待機側プロセッサ装置２０のメモリ２１に複写する処理を実行する。
このように、制御側プロセッサ装置１０のメモリ１１を待機側プロセッサ装置２０に複写する第１及び第２の複写手段１４，１５により複写がメモリの全領域に対して行われた時点で、待機側プロセッサ装置２０のメモリ２１の内容は、制御側プロセッサ装置１０のメモリ１１の内容と一致する。
【０００６】
図４は、従来の二重化システムの同期化の動作説明図である。
図３の処理により、制御側プロセッサ装置１０と待機側プロセッサ装置２０のメモリの内容は同一となっている。
制御側プロセッサ装置１０のＯＳ１３が入力モジュール３０からデータをリードし、待機側プロセッサ装置２０のＯＳ２３は、制御側プロセッサ装置１０のＯＳ１３がリードしたデータを待機側プロセッサ装置２０のメモリ２１上にコピーし、両側のＯＳ１３，２３は、同一データをロジックエンジン１２，２２に渡す。
【０００７】
制御側プロセッサ装置１０と待機側プロセッサ装置２０のメモリデータが同一であることから、両側のロジックエンジン１２，２２の演算処理も同一である。この際、両側の演算処理を同じ順序で同じタイミングで動作させるために、両側のＯＳ１３，２３はロジックエンジン１２，２２がＯＳを呼び出すたびに、互いを待ち合わせる同期化処理を実施する。この同期化処理により、制御側プロセッサ装置１０のロジックエンジン１２で行われる演算処理と、待機側プロセッサ装置２０のロジックエンジン２２で行われる演算処理の順番とタイミングが同一となる。
【０００８】
これらにより、両側のロジックエンジン１２，２２は、同一の演算結果を出力する。このことから、待機側プロセッサ装置２０のＯＳ２３は、出力データを出力モジュール４０には書き込む必要はなく、制御側プロセッサ装置１０のＯＳ１３のみが出力モジュール４０への出力を実施する。
【０００９】
なんらかのハード故障などにより、制御側プロセッサ装置１０が停止した場合は、待機側プロセッサ装置２０に制御権が切り替わり、停止してしまった制御側プロセッサ装置１０が出力したであろう演算結果を継続して出力モジュール４０に出力するようになる。
これにより、片側のプロセッサ装置が停止しても、入出力モジュール３０，４０と制御演算は全体としては停止することなく、コントローラとして高いアベイラビリティが確保される。
【００１０】
従来の二重化システムの構成を示したものとして、例えば特許文献１に記載されたものがあった。
【００１１】
【特許文献１】特開平７−３６７２０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
図３，４の従来例では安全システムに適用する場合に次の問題点があった。
制御側プロセッサ装置１０のメモリ１１の内容を待機側プロセッサ装置２０のメモリ２１に複写する際に、データを複写するハードウェア部分の故障により、待機側に誤ったデータを複写してしまう可能性を従来の制御システムより小さくする必要があった。
【００１３】
また、待機側プロセッサ装置２０のＯＳ２３が制御側から入力モジュール３０のデータを複写し、ロジックエンジン２２にデータを渡す際に、この処理にかかわるハードウェアの故障により、制御側とは異なる誤ったデータが待機側に渡される可能性を従来の制御システムより小さくする必要があった。
【００１４】
さらに、制御側プロセッサ装置１０と待機側プロセッサ装置２０との同期化処理にかかわるハードウェアの故障により、同期化処理が誤動作し、制御側と待機側のロジックエンジン１２，２２の演算の順番やタイミングがずれる可能性を従来の制御システムより小さくする必要があった。
【００１５】
これらの場合において、制御側プロセッサ装置１０が動作している間は、出力モジュール４０への出力は制御側のみが行うため、その時点では問題とならないが、制御側が停止したとたんに待機側が継続性のない誤ったデータを出力モジュール４０に出力してしまう可能性を従来の制御システムより小さくする必要があった。
【００１６】
本発明は上述した問題点を解決するためになされたものであり、ハードウェア故障が発生した場合にその故障を検出し、誤ったデータを使用することがなく、使用するデータの正当性を向上させた二重化システムを実現することを目的とする。
【課題を解決するための手段】
【００１７】
このような課題を達成するために、本発明は次のとおりの構成になっている。
（１）プロセッサ装置を二重化し、一方のプロセッサ装置が入出力モジュールの制御につき他方のプロセッサ装置が待機する二重化システムにおいて、
各プロセッサ装置は、自身のメモリに書き込まれたデータを他方のプロセッサ装置のメモリの同一アドレスに逐次書き込む第１の複写手段と、自身のメモリの全データを分割して順番に定周期で他方のプロセッサ装置のメモリに書き込む第２の複写手段と、メモリに書き込まれたデータをチェックするエラー検出手段と、該エラー検出手段がエラーを検出した際にエラービットを立てるエラーチェックレジスタとを有し、
制御側プロセッサ装置は、前記第１の複写手段及び前記第２の複写手段により待機側プロセッサ装置のメモリにデータを書き込んだ後に、待機側の前記エラーチェックレジスタのエラービットをチェックすることを特徴とする二重化システム。
【００１８】
（２）前記制御側プロセッサ装置は、前記第１の複写手段及び前記第２の複写手段により前記待機側プロセッサ装置のメモリにデータを書き込む前に待機側の前記エラーチェックレジスタのエラービットをクリアし、データを書き込んだ後にエラービットをチェックすることを特徴とする（１）記載の二重化システム。
【００１９】
（３）前記制御側プロセッサ装置は、待機側の前記エラーチェックレジスタのエラービットが立っているときに、前記第１の複写手段及び前記第２の複写手段によるデータ書き込みを最初からやり直すことを特徴とする（１）又は（２）記載の二重化システム。
【００２０】
（４）前記入出力モジュールは、前記プロセッサ装置に渡す入力データにデータチェックコードを付加し、
前記各プロセッサ装置は、前記入出力モジュールからそれぞれデータを受信し、受信したデータチェックコードと受信したデータから作成したデータチェックコードをチェックすることを特徴とする（１）乃至（３）のいずれかに記載の二重化システム。
【００２１】
（５）前記各プロセッサ装置は、前記入出力モジュールに渡す出力データにデータチェックコードを付加し、
前記各入出力モジュールは、前記制御側プロセッサ装置からそれぞれデータを受信し、受信したデータチェックコードと受信したデータから作成したデータチェックコードをチェックすることを特徴とする（１）乃至（４）のいずれかに記載の二重化システム。
【００２２】
（６）前記データチェックコードは、ＣＲＣコード及びシーケンス番号の少なくともいずれかを含むことを特徴とする（１）乃至（５）のいずれかに記載の二重化システム。
【００２３】
（７）一方のプロセッサ装置から他方のプロセッサ装置へ制御権が切り替わった時に、前記入出力モジュールは受信したデータの前記シーケンス番号の連続性をチェックすることを特徴とする（１）乃至（６）のいずれかに記載の二重化システム。
【発明の効果】
【００２４】
本発明によれば次のような効果がある。
従来の二重化機構のアーキテクチャをそのまま継承し、さらにデータのエラーチェックコードを設けたことにより、従来の二重化システムが持つ高いアベイラビリティと、エラーチェックコードによるデータの正当性を両立することができる。
【発明を実施するための最良の形態】
【００２５】
以下、図面を用いて本発明を詳細に説明する。
図１は本発明の一実施例を示す構成図である。前出の図と同一のものは同一符号を付ける。
待機側プロセッサ装置２０は、エラー検出手段２０１でデータ異常を検出すると、エラーチェックレジスタ２０２にエラービットを立てる。
制御側プロセッサ装置１０は待機側のメモリ２１へ複写を開始する前にエラーチェックレジスタ２０２のエラービットをクリアし、複写を実施後エラービットが立っていないかどうか確認する。エラービットが立っていた場合は、複写が失敗したものとみなす。
待機側プロセッサ装置２０は、制御側プロセッサ装置１０が複写の失敗を検出した場合、自分自身でリスタートし、再度二重化開始のための処理がやり直される。
【００２６】
図２は本発明の同期化の動作説明図である。
入出力モジュール３０，４０とプロセッサ装置１０，２０間のデータ通信は、データチェックコードとして、ＣＲＣ（Cyclic Redundancy Check）コードとシーケンス番号をデータに付加したデータフレームをSafetyLayer１５０，２５０，３５０，４５０で行う。
入力モジュール３０は、入力データにＣＲＣコードとシーケンス番号をつけた入力データフレームを作成する。入力データフレームは両側のロジックエンジン１２，２２からＯＳ１３，２３経由で読み出される。
【００２７】
ロジックエンジン１２，２２はその内部処理によって、入力データにつけられたＣＲＣコードとデータ自身から計算したＣＲＣ値を比較し、読み出したデータに誤りがないかチェックする。
また、シーケンス番号をチェックし、読み出したデータの順番に間違いがないかチェックする。
間違いを検出したら、そのデータを異常と判断し、アラームの送信や、異常時出力などの入力データ異常処理を行う。
【００２８】
これにより、待機側プロセッサ装置２０への入力モジュール３０からの入力データの正当性が保障され、制御側のハード故障などの原因により、制御側から待機側に制御権が切り替わった際に誤ったデータを使ってシステムが稼働することを防ぐことができる。
【００２９】
プロセッサ装置１０，２０は、出力データにＣＲＣコードとシーケンス番号をつけた出力データフレームを作成し、ＯＳ１３，２３に出力する。
制御側のプロセッサ装置１０は、そのデータを出力モジュール４０に書き込む。出力モジュール４０はその内部処理によって受信した出力データにつけられたＣＲＣコードとデータ自身から計算したＣＲＣ値を比較し、書き込まれたデータに誤りがないかチェックする。
また、シーケンス番号をチェックし、書き込まれたデータの順番に間違いがないかチェックする。
間違いを検出したら、異常を示すアクションを行う。
【００３０】
例えば、制御側プロセッサ装置１０と待機側プロセッサ装置２０の同期化が正常に動作していなかった場合、制御側プロセッサ装置１０と待機側プロセッサ装置２０が生成する出力データフレームのシーケンス番号にずれが発生する。この場合でも、制御側が停止しない限り問題は発生しないが、制御側のハード故障などの原因により、制御側が停止すると、待機側の出力データが出力モジュールに出力されることになる。この時点で出力モジュール４０は、受信した出力データフレームのシーケンス番号をチェックし、異常が検出されたらこの出力データは使用せず、出力モジュール４０は異常時のアクション行う。
これにより、両側のロジックエンジン１２，２２の同期化が正常に動作していなかった場合でも、制御権切り替え時にその異常を検出することができるので、誤ったデータを使ってシステムが稼働することを防ぐことができる。
【００３１】
なお、データチェックコードとして、ＣＲＣコードとシーケンス番号の例を示したが、この他にデータの送信元アドレス、あて先アドレスや入出力モジュールの型番等であってもよい。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施例を示す構成図である。
【図２】本発明の同期化の動作説明図である。
【図３】従来の二重化システムの二重化開始時の動作説明図である。
【図４】従来の二重化システムの同期化の動作説明図である。
【符号の説明】
【００３３】
１０，２０  プロセッサ装置
１１，２１  メモリ
１４  第１の複写手段
１５  第２の複写手段
１０１，２０１  エラー検出手段
１０２，２０２  エラーチェックレジスタ
３０  入力モジュール
４０  出力モジュール
【図１】
2006285631.tif 000003
【図２】
2006285631.tif 000004
【図３】
2006285631.tif 000005
【図４】
2006285631.tif 000006