(57)【要約】【課題】システムの信頼性を保証する重要な回路の健全性が保証でき、制御出力結果が信頼のおける結果であることを保証すること。【解決手段】ＢＩＳＴコントローラ００９を備え、２つのプロセッサ００２，００３の出力を比較する比較器００５やメモリコントローラ００６などの健全性を保証するため、重要な回路０１４（比較器００５やメモリコントローラ００６からなる）をＢＩＳＴコントローラ００９により診断する機能を備え、ＢＩＳＴコントローラ００９は、プロセッサ００２から制御されることにより、周期的に行う制御演算処理（入力、演算及び出力処理）の直前で、重要な回路０１４のＢＩＳＴ診断を行い、システムＬＳＩ００４の信頼性を保証してから、制御演算を行うことが可能になる。これにより制御演算処理の信頼性が向上する。【選択図】図１
2008267999.tif 000002
【特許請求の範囲】
【請求項１】
制御データの演算を行う複数のプロセッサと、前記複数のプロセッサにより同一の演算処理を行った結果を比較し演算結果の一致・不一致を判定する比較器と、を少なくとも備えたプログラム可能な制御装置であって、
前記比較器に対してテストパターンによる自己診断を行う診断回路を有し、前記自己診断を周期的に実行する
ことを特徴とするプログラム可能な制御装置。
【請求項２】
請求項１において、
前記比較器の他に、主メモリをコントロールするメモリコントローラに対して前記自己診断を行うことを特徴とするプログラム可能な制御装置。
【請求項３】
請求項１または２において、
前記制御データの入力処理、演算処理及び出力処理からなる制御演算処理と、前記自己診断を行う診断処理とを、時分割で周期的に実行することを特徴とするプログラム可能な制御装置。
【請求項４】
請求項３において、
前記自己診断の対象となる前記比較器及び／又はメモリコントローラは、自己診断が開始される前に実行中の制御演算処理が停止されることを特徴とするプログラム可能な制御装置。
【請求項５】
請求項３において、
前記自己診断の対象となる前記比較器及び／又はメモリコントローラは、テストパターンによる自己診断が終了した後に初期化処理が施されることを特徴とするプログラム可能な制御装置。
【請求項６】
請求項３において、
前記自己診断の診断処理は前記制御演算処理の直前に実行し、前記自己診断の対象となる前記比較器及び／又はメモリコントローラの信頼性を保証した上で前記制御演算処理を行う
ことを特徴とするプログラム可能な制御装置。
【請求項７】
請求項３において、
前記自己診断の対象となる前記比較器及び／又はメモリコントローラは、前記制御演算処理の停止、自己診断の開始、自己診断の終了、初期化処理を順に実行された後に、前記制御演算処理のいずれかの処理が実行される
ことを特徴とするプログラム可能な制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、信頼性を要求する制御を行うプログラム可能な制御装置において、制御中に制御装置に用いている半導体集積回路を診断を行い、故障が発生したことを検出する技術に関する。
【背景技術】
【０００２】
原子力プラントや化学プラントなど潜在的な危険性の高いプロセス設備では、万が一の事態に作業員および周辺環境への影響を低減するため、隔壁等の防護設備による受動的な対策および、緊急停止装置等の安全装置を用いる能動的な対策が講じられる。このうち、安全装置等の制御手段は、従来リレー等の電磁的・機械的手段により実現されていた。
【０００３】
しかし、近年、ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）に代表されるプログラム可能な制御装置における技術の発展に伴い、これらを安全制御システムの制御手段として利用するニーズが高まっている。このため、プログラム可能な制御装置は、より高度な信頼性が求められている。
【０００４】
プログラム可能な制御装置の信頼性を向上する手段として、例えば、特許文献１に開示されている技術は、信頼性を要求する処理を行う場合、２つのプロセッサで同時に同じ処理を行い、出力が一致することを確認することにより、信頼性の向上を図っている。
【０００５】
一方、特許文献２に開示されている技術は、ＢＩＳＴ（Ｂｕｉｌｔ  Ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）を呼ばれる半導体集積回路の自己診断技術を用いて、電源投入時もしくは任意の間隔で、主コントローラから主コントローラ以外の各機能ブロックを診断することにより、各機能ブロックの信頼性の向上を図っている。
【特許文献１】特開２００７−１１６３９号公報
【特許文献２】特開２００３−６８８６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記の特許文献１では、信頼性を要求する処理を行う場合、２つのプロセッサで同時に同じ処理を行い、出力が一致することを確認している。しかし、出力が一致しているか否かを判定する比較器が故障して、不一致の場合でも比較器の出力が一致していると誤出力を行うと、信頼性が向上しないという課題が生じる。
【０００７】
また、上記の特許文献２では、各機能ブロックの診断は実施しているが、主コントローラ自身の診断方法は明示していない。このため、周辺の各機能ブロックの信頼性は向上するが、システム全体の信頼性は主コントローラの信頼性に依存し、信頼性が向上しないという課題が残る。
【０００８】
本発明は、制御のための入出力及び演算の処理に対して、システムの信頼性を保証する重要な回路ブロックを自己診断する処理を時分割で実行する機能を備えたプログラム可能な制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
前記課題を解決するために、本発明は主として次のような構成を採用する。  
制御データの演算を行う複数のプロセッサと、前記複数のプロセッサにより同一の演算処理を行った結果を比較し演算結果の一致・不一致を判定する比較器と、を少なくとも備えたプログラム可能な制御装置であって、
前記比較器に対してテストパターンによる自己診断を行う診断回路を有し、前記自己診断を周期的に実行する構成とする。
【００１０】
また、前記プログラム可能な制御装置において、前記比較器の他に、主メモリをコントロールするメモリコントローラに対して前記自己診断を行う構成とする。さらに、前記プログラム可能な制御装置において、前記制御データの入力処理、演算処理及び出力処理からなる制御演算処理と、前記自己診断を行う診断処理とを、時分割で周期的に実行する構成とする。さらに、前記プログラム可能な制御装置において、前記自己診断の診断処理は前記制御演算処理の直前に実行し、前記自己診断の対象となる前記比較器及び／又はメモリコントローラの信頼性を保証した上で前記制御演算処理を行う構成とする。さらに、前記プログラム可能な制御装置において、前記自己診断の対象となる前記比較器及び／又はメモリコントローラは、前記制御演算処理の停止、自己診断の開始、自己診断の終了、初期化処理を順に実行された後に、前記制御演算処理のいずれかの処理が実行される構成とする。
【発明の効果】
【００１１】
本発明によれば、システムの信頼性を保証する重要な回路の健全性が保証でき、制御出力結果が信頼のおける結果であることを保証することができる。
【発明を実施するための最良の形態】
【００１２】
本発明の実施形態に係るプログラム可能な制御装置について、図１〜図４を参照しながら以下詳細に説明する。図１は本発明の実施形態に係るプログラム可能な制御装置の全体構成を示す図である。図２は本実施形態に関する２つのプロセッサの動作手順を示すフローチャートである。図３は図２に示す動作手順中の自己診断処理の詳細手順を示すフローチャートである。図４は本実施形態に関する２つのプロセッサの動作手順を示すタイミングチャートである。
【００１３】
図１において、００１  ＣＰＵモジュール、００２  プロセッサ、００３  プロセッサ、００４  システムＬＳＩ、００５  比較器、００６  メモリコントローラ、００７  バスコントローラ、００８  主メモリ、００９  ＢＩＳＴコントローラ、０１０  パターン発生器、０１１  パターン圧縮器、０１２  Ｉ／Ｏバス、０１３  Ｉ／Ｏモジュール、０１４  健全性を保証するための重要回路（診断対象回路）、をそれぞれ表す。
【００１４】
本発明の実施形態に係るプログラム可能な制御装置の全体構成と各部動作の概要を図１を参照して説明する。００１はＣＰＵモジュールを示し、ＣＰＵモジュール００１の中には、演算を行うプロセッサ００２，００３と、システムＬＳＩ００４と、主メモリ００８がある。プロセッサ００２とプロセッサ００３は、それぞれ、システムＬＳＩ００４を介して、主メモリ００８とＩ／Ｏバス０１２に接続されている。ＣＰＵモジュール００１はＩ／Ｏバス０１２を介してＩ／Ｏモジュール０１３に接続されている。
【００１５】
ここで、本実施形態に係るプログラム可能な制御装置は、ＣＰＵモジュール００１とＩ／Ｏバス０１２を介したＩ／Ｏモジュール０１３とから構成され、その主たる構成要素であるＣＰＵモジュール００１がＩ／Ｏモジュールと周期的にデータの授受を行うことによって、プログラム制御を実行しているものである。本発明の実施形態では、プログラム可能な制御装置としてＣＰＵモジュール００１を取り上げて説明する。
【００１６】
システムＬＳＩ００４は、プロセッサ００２，００３の出力を比較する比較器００５と、主メモリ００８をコントロールするメモリコントローラ００６と、Ｉ／Ｏバス０１２をコントロールするバスコントローラ００７を含む。このシステムＬＳＩ００４において、比較器００５とメモリコントローラ００６がシステムの健全性を保証するための重要な回路０１４である。本実施形態では、重要な回路は、比較器００５とメモリコントローラ００６としたが、これは一例であり、その他の構成要素もシステム的に重要な回路を含む場合もある。
【００１７】
また、システムＬＳＩ００４には、システムの健全性を保証するための重要な回路（診断対象の回路）０１４をＢＩＳＴ診断するためのＢＩＳＴコントローラ００９と、テストパターンを生成するパターン発生器０１０と、パターン発生器０１０で生成したパターンを診断対応回路であるシステムの健全性を保証するための重要な回路０１４に入力したときに重要な回路０１４の出力を圧縮するパターン圧縮器０１１と、を備えている。
【００１８】
図２は、プロセッサ００２およびプロセッサ００３の動作を示したフローチャートである。プロセッサ００２は電源投入もしくはリセットが入ると、システム初期化（０２０）を行う。プロセッサ００２は図２のフローチャートに従い、システム初期化（０２０）が終了すると、診断対象の回路である重要回路０１４に対して診断処理（０２１）を行う。
【００１９】
次に、プロセッサ００２が実行する診断処理（０２１）を図３のフローチャートで説明する（診断処理０２１の診断結果が出た後の処理については後述する）。プロセッサ００２は、パターン発生初期値設定処理（０４０）で、ＢＩＳＴコントローラ００９経由でパターン発生器０１０にパターンを生成するための初期値をセットする。
【００２０】
続いて、プロセッサ００２は、パターン数設定処理（０４１）において、ＢＩＳＴコントローラ００９にパターン発生器０１０で生成するパターン数をセットする。プロセッサ００２は、診断対象停止要求処理（０４２）にて、診断対象となる比較器００５とメモリコントローラ００６に対して、処理（プロセッサによるＩ／Ｏモジュールに対する本来のプログラム可能な制御処理）の停止を要求する。比較器００５とメモリコントローラ００６は、処理の停止要求を受けたら、現在処理している処理が終了し次第で停止する。
【００２１】
比較器００５とメモリコントローラ００６が停止したら、プロセッサ００２は、診断対象リセット処理（０４３）にて比較器００５とメモリコントローラ００６をリセットする。プロセッサ００２は、診断対象リセット処理（０４３）が完了したら、ＢＩＳＴコントローラ００９に対して、診断を開始指示する診断開始指示処理（０４４）を行う。
【００２２】
ＢＩＳＴコントローラ００９は、診断開始指示を受けると、ＢＩＳＴ診断を開始する。ＢＩＳＴ診断の概要を以下に説明する。ＢＩＳＴコントローラ００９は、パターン数設定処理（０４１）で設定したパターン数だけ、パターン生成指示をパターン発生器０１０に発行する。パターン発生器０１０は、パターン生成指示を受けると、パターン発生初期値設定処理（０４０）で設定した初期値を元にテストパターンを生成する。パターン発生器０１０は、このテストパターンを、診断対象回路である比較器００５とメモリコントローラ００６の診断パスを通じて、次から次へと、診断対象回路である比較器００５とメモリコントローラ００６の内部のフリップフロップに入力する。
【００２３】
内部のフリップフロップにテストパターンを入力した状態の診断対象回路である比較器００５とメモリコントローラ００６の出力は、ビットパターンとしてパターン圧縮器０１１に入る。パターン圧縮器０１１は、比較器００５とメモリコントローラ００６の出力をビットパターンを圧縮し、ＢＩＳＴコントローラ００９のレジスタにセットする。
【００２４】
このように、ＢＩＳＴ診断が開始すると診断対象回路である比較器００５とメモリコントローラ００６の内部のフリップフロップは、テストパターンに更新されてしまう。このため、必ず、診断対象停止要求処理（０４２）にて、診断対象となる回路が行っている処理を終了させる必要がある。仮に停止させないと、処理中の状態を失うことになる。
【００２５】
ＢＩＳＴ診断が終了するまで、プロセッサ００２は待機し（０４５）、ＢＩＳＴ診断終了後、診断対象回路初期化処理（０４６）にて、診断対象回路である比較器００５とメモリコントローラ００６をリセットし、必要に応じて再設定を行う。なお、プロセッサ００２は、ＢＩＳＴコントローラ００９の内部のステータスレジスタを確認することで実現する手法や、プロセッサ００２自身をスリープ状態にして、ＢＩＳＴコントローラ００９からの割込で復帰する手法などを用いて、上記ＢＩＳＴ診断が終了したかどうかの判定する。
【００２６】
ＢＩＳＴ診断を行うことにより、内部のフロップフロップにテストパターンがセットされた状態になる。このため、ＢＩＳＴ診断直後の状態から動作すると、想定外のテストパターンがセットされた状態から動作を開始することになり、正常に動作できないため、診断対象回路を正常な制御動作で使うためには、診断対象回路初期化処理（０４６）にて、一度初期状態し、必要に応じて再設定を行う必要があり、より信頼性を求めるのなら、プロセッサ００２により正しく設定出来たか否かを再度確認する。
【００２７】
翻って、図２に戻り、プロセッサ００２は、診断結果判定（０２２）にて、パターン圧縮器０１１が、ＢＩＳＴコントローラ００９にセットした診断結果と、パターン発生初期値設定処理（０４０）で設定した初期値に対する結果の期待値を比較し、一致しているか否かで診断対象回路０１４の正常判定を行う。ここで、もし診断結果が異常であるなら、システム停止処理（０２３）を行い、システムを停止する。
【００２８】
また、診断結果が正常であるなら、本来のプログラム可能な制御を行うための入力処理（０２４）を行う。この入力処理（０２４）は、Ｉ／Ｏモジュール０１３から外部の値を読み込む処理である。続いて、プロセッサ００２は、演算処理（０２５）を行う。この演算処理（０２５）は、入力処理（０２４）で読み込んだＩ／Ｏモジュール０１３の値により制御を行うための演算を行う処理である。プロセッサ００２は、出力処理（０２６）で、演算処理（０２５）の演算結果をＩ／Ｏモジュール０１３に出力する。また、必要があれば、次の演算処理のために主メモリ００８に格納する。
【００２９】
プロセッサ００２は、出力処理（０２６）を実行した後、次の演算を開始するまでの時間、アイドル状態で待機し（０２７）、演算を開始する時刻になると再び診断処理（０２１）、入力処理（０２４）、演算処理（０２５）、出力処理（０２６）を繰り返し行う。ここで、プロセッサ００２が演算処理（０２５）を実行してから、再び演算処理（０２５）を実行するまでの時間が制御周期となる。
【００３０】
また、プロセッサ００３は、電源投入もしくはリセットが入ると、プロセッサ００２が診断処理（０２１）を行い、診断結果判定（０２２）の結果が正常になるまで待機し（０２８）、入力処理（０２９）、演算処理（０３０）、出力処理（０３１）を行う。なお、プロセッサ００３の待機処理（０２８）も、プロセッサ００２の待機処理（０４５）と同様にＢＩＳＴコントローラ００９の内部のステータスレジスタを確認することで実現する手法や、プロセッサ００３自身をスリープ状態にして、ＢＩＳＴコントローラ００９またはプロセッサ００２からの割込で復帰する手法などを用いて、診断結果判定（０２２）の結果が正常になるまで待機する。
【００３１】
このとき、プロセッサ００２とプロセッサ００３は、それぞれの入力処理（０２４，０２９）、演算処理（０２５，０３０）、出力処理（０２６，０３１）を同期して動作し、プロセッサ００２とプロセッサ００３の出力は比較器００５にて比較し、一致しているときのみ主メモリ（００８）やＩ／Ｏモジュール（０１３）へ出力される。プロセッサ００３もプロセッサ００２と同様に、待機（０２８）、入力処理（０２９）、演算処理（０３０）、出力処理（０３１）を繰り返す。
【００３２】
図４は、プロセッサ００２とプロセッサ００３の動作をタイミングチャートで示した図である。タイミング０５０から０５５はプロセッサ００２の動作であり、タイミング０６０から０６４はプロセッサ００３の動作である。タイミング０５０，０５５は、プロセッサ００２が図２の演算処理（０２５）を行っているタイミングである。同様にタイミング０５１は出力処理（０２６）を行っているタイミングであり、タイミング０５２は演算を開始するまでの時間、アイドル状態で待機（０２７）中であるタイミングを示している。また、タイミング０５３は診断処理（０２１）、タイミング０５４は入力処理（０２４）である。
【００３３】
プロセッサ００３の動作タイミングであるタイミング０６０，０６４は、図２の演算処理（０３０）であり、タイミング０６１は出力処理（０３１）を行っているタイミングであり、タイミング０６２はプロセッサ００２が診断処理を終了するまでのアイドル状態で待機（０２８）するタイミングを示している。また、タイミング０６３は入力処理（０２９）である。
【００３４】
このように、プロセッサ００２とプロセッサ００３は同期して動作し、プロセッサ００２は、制御周期の中を、診断処理、入力処理、演算処理、出力処理を繰り返して動作し続ける。
【００３５】
以上説明したように、ＢＩＳＴコントローラ００９を備え、２つのプロセッサ００２，００３の出力を比較する比較器００５やメモリコントローラ００６などの健全性を保証するための重要な回路０１４を診断する機能を備え、ＢＩＳＴコントローラ００９は、プロセッサ００２から制御可能とすることにより、周期的に行う制御演算（入力処理、演算処理、出力処理）の直前で、重要な回路０１４のＢＩＳＴ診断を行う。これによって、システムＬＳＩ００４の信頼性を保証してから、制御演算を行うことが可能になり、制御演算の信頼性が向上する。具体的に云えば、プロセッサの演算結果及び２つのプロセッサの比較結果が一致していることにより、演算結果及びプロセッサの信頼性が保証できる。さらに、プロセッサの出力を比較する比較器は、ＢＩＳＴ回路による診断機能によって診断しすることで、信頼性が向上する。特に、ＢＩＳＴを用いることにより故障検出率は、特定のテストパタンをセットして回路を診断する手法を採用することでより向上する。
【００３６】
このように、本発明の実施形態は、信頼性を要求するプログラム可能な制御装置を前提に説明したが、本実施形態はこれに限定せず半導体集積回路を用いた制御機器、情報機器にも利用することが可能である。例えば、上述した２つのプロセッサの代わりに、信頼性の要求されるウオッチドッグタイマー（ｗａｔｃｈ  ｄｏｇ  ｔｉｍｅｒ）を２つ設けたものにも適用可能である。なお、入力処理、演算処理及び出力処理からなる制御演算の直前で診断処理を行うことを説明したが、診断処理のタイミングはこれに限ることはない。例えば、演算処理にはＩ／Ｏモジュールからの信号によっては演算時間に長短が生じることもあって、アイドル時間を演算処理と出力処理の間に設定することもある。この設定によると、出力処理の開始を定時的に実行することになり、この直前で診断処理を行うことになる。結局、制御演算のいずれかの処理の前に診断処理を実行し得るものである。
【００３７】
繰り返して本発明の実施形態の特徴を説明すると、本実施形態は、２つのプロセッサの結果を比較する比較器に対して、ＢＩＳＴ回路による自己診断機能を備える。まず、１つのプロセッサによって、次の処理を行う。プロセッサが周期的に行う制御演算の最初に、プロセッサによって、診断対象となる回路を停止しアイドル状態にする。診断対象となる回路を停止しアイドル状態になった後、診断対象となる回路を初期化状態にする。次に、プロセッサは、ＢＩＳＴ回路が生成するテストパターンの初期値をＢＩＳＴ回路にセットする。さらに、プロセッサはＢＩＳＴ回路に信頼性が重要になる回路の自己診断を指示する。ＢＩＳＴ回路はプロセッサの指示により、自己診断を実施し、診断結果をレジスタに保持する。
【００３８】
プロセッサは、先にセットしたテストパターンの初期値による診断結果の期待値と、ＢＩＳＴ回路のレジスタの保持した診断結果の値を比較することにより、診断対象の回路が正常か否かを判定する。診断対象の回路が正常な場合、プロセッサは、再度診断対象となる回路を初期化し、動作可能な状態にする。この間、もう一方のプロセッサは、診断対象の回路が動作可能になるまで、アイドル状態で待機する。診断対象の回路が動作可能になると、２つのプロセッサにより同時に、同一の入出力処理と演算処理を行う。
【００３９】
以上の説明で、診断対象の重要な回路として比較器００５とメモリコントローラ００６を取り上げて説明したが、プログラム可能な制御装置としてプロセッサ００２と００３の動作を比較してプロセッサの動作が正常であることを保証する比較器が第１の重要回路であり、さらに、プロセッサ００２によってプログラム可能な制御装置を動作させる上で、メモリコントローラ００６が正常に動作しているか否かについても重要である。したがって、自己診断の対象としては診断対象回路０１４が重要回路であるが、個別に比較器００５またはメモリコントローラ００６も重要回路となる。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施形態に係るプログラム可能な制御装置の全体構成を示す図である。
【図２】本実施形態に関する２つのプロセッサの動作手順を示すフローチャートである。
【図３】図２に示す動作手順中の自己診断処理の詳細手順を示すフローチャートである。
【図４】本実施形態に関する２つのプロセッサの動作手順を示すタイミングチャートである。
【符号の説明】
【００４１】
００１  ＣＰＵモジュール
００２  プロセッサ
００３  プロセッサ
００４  システムＬＳＩ
００５  比較器
００６  メモリコントローラ
００７  バスコントローラ
００８  主メモリ
００９  ＢＩＳＴコントローラ
０１０  パターン発生器
０１１  パターン圧縮器
０１２  Ｉ／Ｏバス
０１３  Ｉ／Ｏモジュール
０１４  健全性を保証するための重要回路（診断対象回路）
【図１】
2008267999.tif 000003
【図２】
2008267999.tif 000004
【図３】
2008267999.tif 000005
【図４】
2008267999.tif 000006