説明

制御装置

【課題】プラントにおいて異常が発生した場合に作動する制御装置において、装置構成が簡素であり、全体の処理効率に優れ、動作安定性に優れるものを提供する。
【解決手段】プラントの制御装置10において、プラントから送信されるプロセス信号を入力する入力手段13と、プログラムに基づく演算処理によって前記プロセス信号の正常/異常を判定したブール値を出力する数値演算部11と、論理回路に基づき前記ブール値を論理処理し前記プラントの安全保護動作に係る制御信号を出力させる論理処理部20と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、原子力プラントや化学プラント等の各種プラントにおいて使用される制御装置に関する。
【背景技術】
【0002】
原子力プラントには、異常時に原子炉を緊急停止させたり、非常用炉心冷却装置等の工学的安全施設を自動起動させたりする安全保護装置等の制御装置が設置されている。
例えば、沸騰水型原子力発電プラントにおける非常用炉心冷却装置は、原子炉の水位が異常に低下したり格納容器の圧力が異常に上昇したりすると自動的に起動し、またはプラント運転員の手動操作によっても起動することができる。
【0003】
そのような非常用炉心冷却装置のポンプを起動するためのロジックとして、任意のプロセス信号に、TRUE又はFALSEのブール値を対応させる判定演算が実行される。
このようなロジックは、かつてハードウェアの比較器、リレー及びタイマーによって実現されていたが、近年のコンピュータ技術の進歩に伴ってCPUを使用したプログラマブルコントローラ(PLC;Programmable Logic Device)によって実現されるようになってきた。
【0004】
そして、原子力発電プラントの安全保護装置で使用されるPLCとして、プロセス信号の入出力、プログラムの周期的実行、及び通信の管理を行う実行モードと、初期化時及び実行中の自己診断を行う保守モードとを機能として合わせ持つOSが知られている(例えば、非特許文献1)。
【0005】
一方、そのようなロジックを半導体素子であるFPGA(Field Programmable Gate Array)により実現させる試みもなされている(例えば、特許文献1〜特許文献4)。
このFPGAによれば、半導体のベンダに頼ることなく安全保護装置のベンダが任意のロジックを組むことができる。そして、SRAMタイプ又はフラッシュタイプのFPGAを用いれば、ロジック変更も比較的容易である。
【0006】
またFPGAは、ブール値の演算を直接ハードウェアのゲートで実行するため、PLCの場合のような演算命令のロード、デコード処理が不要でかつOSも不要である。そして、演算対象であるブール値へのアクセスが、PLCのようなRAMからのロード又はRAMへのストアではなく、FPGAでは直接配線によるために効率が高い。
このように、FPGAでは、割り当てられた専用回路により演算処理を実行するために、CPUよりもブール値の演算処理を効率的に実行することができる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2005−249609号公報
【特許文献2】特開2006−236214号公報
【特許文献3】特表2009−522644号公報
【特許文献4】特開2003−177806号公報
【非特許文献】
【0008】
【非特許文献1】EPRI TR-107330 “Generic Requirements Specification for Qualifying a Commercially Available PLC for Safety-Related Applications in Nuclear Power Plants”
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述した通り、FPGAでは、CPUよりもブール値等の論理演算を効率的に処理することができるが、数値演算に関して必ずしも処理が効率的とは言えない。
FPGAにおいても、数値比較のための数値演算の実行は原理的に可能であるが、論理演算をする場合に比べて数十倍以上のゲートが必要となる。このため安全保護装置で実行される全ての数値演算をFPGAで実行しようとすると専用回路の割り当てに伴いハードウェア規模が大きくなり経済的ではない。
【0010】
また、FPGAは、半導体としての実装方法としてSRAM型、フラッシュ型、アンチヒューズ型といったいくつかの種類が存在するが、何れにおいても半導体の製造後にロジックを組むことが可能な構成であることに起因して、回路自体の動作速度がCPUの数分の一から数十分の一以下の低速である。
【0011】
一方においてPLCのOSは、汎用OSと対比して簡略化されているが、それでも自己診断機能、通信機能、保守機能が実装されていることによって、ある程度の複雑さを有している。このために、PLCのOSの品質を保証するための活動、例えば十分な作動実績の蓄積、検証と妥当性確認(V&V)の負担が大きくなる。
例えばPLCのOSが、実行モードの作動中に誤って保守モードのプログラムコードを作動させると、プログラム又は定数を変更する可能性があり、誤動作の原因となる。
【0012】
汎用OS等では、この様なメモリの誤参照を防止するためにメモリ保護機能を実装し、メモリが誤参照された場合は割込みによってエラー処理を行うようになっている。しかし、このようなメモリ保護機能を実装させること自体が、OSを複雑化させ、新たな誤動作の原因となるリスクをもたらし、V&Vの負担を増大させる。
【0013】
本発明はこのような事情を考慮してなされたもので、装置構成が簡素であり、全体の処理効率に優れ、動作安定性に優れる制御装置を提供することを目的とする。
【課題を解決するための手段】
【0014】
本発明に係る制御装置は、プラントから送信されるプロセス信号を入力する入力手段と、プログラムに基づく演算処理によって前記プロセス信号の正常/異常を判定したブール値を出力する数値演算部と、論理回路に基づき前記ブール値を論理処理し前記プラントの安全保護動作に係る制御信号を出力させる論理処理部と、を備えることを特徴とする。
【発明の効果】
【0015】
本発明に係る制御装置によれば、装置構成が簡素であり、全体の処理効率に優れ、動作安定性に優れる制御装置が提供される。
【図面の簡単な説明】
【0016】
【図1】本発明の第1実施形態を示すブロック図。
【図2】(A),(B)実施形態に適用される論理処理部の構成及び動作説明図。
【図3】(C),(D)実施形態に適用される論理処理部の構成及び動作説明図。
【図4】第1OR回路の構成図。
【図5】第1実施形態に係る制御装置の動作説明図。
【図6】実施形態に適用される数値演算部の動作説明図。
【図7】(A)は本発明の第2実施形態を示すブロック図、(B)はアラームのリセット回路図。
【図8】第2実施形態に係る制御装置の動作説明図。
【図9】(A)は本発明の第3実施形態を示すブロック図、(B)はプラント信号のパケット構造の説明図。
【図10】本発明の第4実施形態を示すブロック図。
【発明を実施するための形態】
【0017】
(第1実施形態)
以下、本発明の実施形態を添付図面に基づいて説明する。
図1に示されるように第1実施形態に係るプラントの安全保護に係る制御装置10(以下、単に「安全保護装置10」という)は、CPU、ROM及びRAMの機能を備える数値演算部11と、プラント運転員が操作する手動操作部12と、プラントからのプロセス信号Tを入力して一時記憶する入力手段13と、CPUの演算結果を一時記憶して論理処理部20に出力する出力手段14と、ウォッチドッグタイマー15と、論理処理部20とから構成されている。
【0018】
そして、安全保護装置10におけるこれら構成要素のうちROM、RAM、手動操作部12、入力手段13及び出力手段14は、バス19を介してCPUのアドレス空間上に配置されている。従ってCPUは、アドレス空間上の番地を指定することで、RAM、入力手段13、及び出力手段14上のデータに一意的にアクセスすることができる。
【0019】
入力手段13は、プラントに設置された様々なセンサ等から送信されるプロセス信号Tを入力して一時的に保持するものである。このプロセス信号は、元がアナログ信号であれば図示略のAD変換器によってデジタル化された後に入力手段13に入力されるもので、具体的に、温度、圧力、流量、流速、電圧、電流、弁開度、放射線量等の物理量を表す数値信号と、ポンプのオン・オフ、弁の開閉、圧力スイッチのON/OFF、手動操作信号のON/OFF等を表すブール値が含まれる。さらに、他のプロセス制御装置からの制御信号も含まれる。
【0020】
出力手段14は、後述する数値演算部11の演算結果であるブール値を一時的に保持して論理処理部20に転送するものである。
入力手段13及び出力手段14は、バッファ機能を有し、例えばデュアルポートメモリーを用いることでCPUに負荷をかけることなく、外部からプロセス信号Tを入力し、CPUの演算結果を論理処理部20にデータ伝送することができる。
【0021】
また入力手段13は、論理処理部20が処理状態であるか非処理状態であるかを表すビットを有し、CPUはこのビットをスキャンして論理処理部20が非処理状態(FALSE)であることを確認して数値演算部11における演算処理を開始する。
また出力手段14は、数値演算部11が処理状態であるか非処理状態であるかを表すビットを有し、非処理状態になるとCPUはこのビットの設定をTRUEからFALSEに変更し、一時保持されているブール値を論理処理部20に転送し論理処理を開始する。
【0022】
数値演算部11は、プログラムに基づく演算処理によってプロセス信号Tの正常/異常を判定したブール値を出力する。そして、このブール値は、バス19を介して出力手段14に一時記憶された後に、論理処理部20に転送される。
この数値演算部11は、論理処理部20におけるブール値の論理処理が終了してから次に入力される一群の各種プロセス信号Tの演算処理を開始する。そして、数値演算部11は、これら複数のプロセス信号Tに対しシーケンシャルに演算処理を実行し最後に演算終了信号を出力する。
【0023】
ROM(Read Only Memory)は、数値演算を実行するプログラム及び定数が格納される不揮発性のメモリである。そして、安全保護装置10が起動すると、ROMに格納されているプラグラム及び定数はRAMに読み込まれる。
この定数には、入力したプロセス信号に、true又はfalseのいずれのブール値を対応させるかを判断するための基準値も含まれる。そしてプログラムは、入力したプロセス信号Tとこれに対応する基準値とを対比して、true信号(1)又はfalse信号(0)のいずれかを出力させる。
【0024】
RAM(Random access memory)は、データの読み書きが自在の揮発性メモリで、ROMから読み込んで常駐させたプラグラム及び定数に従い、CPUに演算処理を実行させるとともにCPUの演算結果を一時的に記憶する。
CPUは、このRAMに常駐するプログラムに従い、入力手段13に一時記憶されているプロセス信号Tに対し、次の数値演算を実行し、演算結果を出力手段14に保持させる。CPUはこれら一連の処理を、安全保護動作で要求される応答時間を考慮して、数十ms程度の間隔で周期的に実行する。
【0025】
次にCPUにおける演算処理について具体的に説明する。CPUは内部クロックに従って、定められた周期で処理を開始する。ここで、プロセス信号Tとして原子炉水位信号T1を取り上げ、その水位の正常/異常を判定する基準値Lとする。そして、それぞれのデータが次のアドレスに割り当てられるとする。
原子炉水位信号T 500-501番地
基準値L 3000-3001番地
判定結果 2001番地の5ビット目
【0026】
そして、判定結果を導く演算処理は次のプログラムにより実行される。ここで、R0、R1はCPUのレジスタで、XレジスタはCPU内のビット処理用レジスタである。
A1: LD R0, 500 ; 500-501番地のデータをR0にロードする
A2: LD R1, 3000 ; 3000-3001番地のデータをR1にロードする
A3: SUB R0, R1 ; R0 - R1 (原子炉水位 - L)
A4: BGE A7 ; 結果が正、原子炉水位 ≧ Lなら、A7へ分岐
A5: LDX #1 ; Xレジスタに1を入れる
A6: BRA A8 ; A8 に分岐
A7: LDX #0 ; Xレジスタに0を入れる
A8: STX 2001:5 ; Xレジスタの値を2001番地の5ビット目にストア
【0027】
このプログラムは、大小関係の判定結果から出力先の番地を設定する命令(A4,A6)には分岐が含まれるが、(A1)から処理を開始し、途中繰り返し無しに必ず(A8)で処理を終了する単純な構造となっている。
そして、複数の例えば500個のプロセス信号Tの入力信号に対して、このような比較演算処理を実行する場合は、入力信号の番地(A1のオペランド)、基準値の番地(A2のオペランド)、入力信号と基準値の大小関係(A4のオペレータ)、及び演算結果の出力先の番地(A8のオペランド)を変更した上記のプラグラムを500個並べ、シーケンシャルに処理する。
このために、複数のプロセス信号Tを処理するためにこのプロセス信号Tの数に比例する長さのプログラムを配列させることになるが、複雑さが増すことはなく、処理時間も十分に予測可能となる。
【0028】
CPUは、数値演算部11における演算処理が終了すると、その演算結果を出力手段14に一時記憶させるとともに、CPUが処理状態であるか非処理状態あるかを表す出力手段14上のビットをFALSE(非処理状態)に設定する。これは、複数の上記プログラムが配列する最後尾に、出力手段14への書込みプログラムを用意することで実装される。
【0029】
なお、CPUは、背景技術で説明したPLCと同様に、上記プログラムで実現される実行モード以外に保守モードも有している。実行モードの動作プログラムが上述したように単純なシーケンシャルな処理であるために、実行中におけるメモリのアクセスエラーの有無を保守モードで容易に検証することができる。
また、本実施形態の安全保護装置10で適用されるCPUは、汎用CPUよりも要求される機能が少ないために、専用CPUの設計が容易である。
【0030】
ウォッチドッグタイマー15は、数値演算部11及び論理処理部20から独立して構成され、論理処理部20における論理処理の開始から終了までの期間、又は数値演算部11における数値演算の開始から論理処理部20における論理処理の終了までの期間が、所定時間をタイムアウトした場合にそのことを通知するものである。
これによりCPU及び論理処理部20の作動状態を高い信頼度で診断でき、プラントの安全性の向上に寄与する。
このウォッチドッグタイマー15は、例えば、ワンショットマルチバイブレータによって実現される。
【0031】
ウォッチドッグタイマー15は、数値演算部11又は論理処理部20における処理が開始又は終了するのに同期して初期化される。そして、ウォッチドッグタイマー15は、論理処理部20の処理周期、又は数値演算部11及び論理処理部20を併せた処理周期よりも多少長い時刻でタイムアウトするように設定される。例えば、処理周期が25msであれば、30msでタイムアウトするように設定される。
【0032】
これにより、数値演算部11又は論理処理部20の周期的な処理が停止、あるいは異常により遅延した場合は、ウォッチドッグタイマー15がタイムアウトして安全保護装置10の異常が通知される。
なお、数値演算部11及び論理処理部20は、互いに相手の処理状態を確認してから処理を開始するため、一方が停止すると、他方も停止する。従って、CPU及び論理処理部20のいずれか一方の処理が停止しても、ウォッチドッグタイマー15により異常が通知される。
【0033】
論理処理部20は、図2(A)に示されるように、第1ORゲート21と、第2ORゲート22と、NOTゲート23と、ANDゲート24と、いった論理素子から構成されている。
この論理処理部20は、ブール値の演算、およびブール値の時間遅延を実行するものでFPGA(Field Programmable Gate Array)で実現される。このFPGAの論理素子はプログラミングにより配線される。
【0034】
そして、論理処理部20は、出力手段14(図1)に一次保持されているブール値を入力し、論理回路に基づき処理し、プラントの安全保護動作に係る制御信号を出力させる。ここでは、論理処理部20には非常用炉心冷却装置(図示略)のポンプPを起動させる制御信号を出力するためのロジックが例示されている。
【0035】
手動起動手段12bは、プラントからのプロセス信号Tが正常を示している場合であっても、プラント運転員の手動操作によって安全保護動作を起動させるものである。
手動停止手段12aは、起動した安全保護動作をプラント運転員の手動操作によって停止させるものである。
これら手動起動手段12b及び手動停止手段12aの機能は、手動操作部12(図1)に組み込まれており、常時FALSEを出力し、プラント運転員の手動操作によって出力がTRUEに切り替わる。ただし、手動起動手段12b及び手動停止手段12aは、同時にTRUEになることはないようなスイッチ構造となっている。
【0036】
判定手段11a,11bは、数値演算部11において、各プロセス信号Tの正常/異常を判定する各プログラム(前記したA1〜A8の命令)を機能要素として表示したものである。
判定手段11aは、原子炉水位を検出する水位センサからのプロセス信号T1に関する判定を行う。この水位センサによって検出された原子炉水位が設定値Lより小さくなると異常と判定されTRUE、それ以外の時は正常と判定されFALSEが出力される。
判定手段11bは、格納容器の圧力を検出する圧力センサからのプロセス信号T2に関する判定を行うものである。この圧力センサによって検出された圧力が設定値Pより大きくなると異常と判定されTRUE、それ以外の時は正常と判定されFALSEが出力される。これは原子炉圧力容器に漏洩が発生した場合、原子炉圧力容器を取り囲む格納容器の圧力が上昇するため、これを検出することを想定したものである。
【0037】
なお上述した通り、数値演算部11の演算処理が終了したことを示すビット(FALSE)が出力手段14に設定されたことをきっかけに、保持されていたブール値が論理処理部20に送信され論理演算が実行される。またこれと同時に、論理処理部20が実行中であることを示すビット(TRUE)が入力手段13に設定される。
ここで、ブール値はTRUEとFALSEを取るものとし、通常電気信号としては、それぞれ高電位、低電位に対応するが、フェールセーフの観点から、電圧の対応を逆にすることもある。
【0038】
また安全保護装置10(図1)が、異常を察知したときに動作させる非常用炉心冷却装置(図示略)には、図2に示されるポンプP以外に数個から数十個の弁が設けられている。さらに、この非常用の非常用炉心冷却装置は多重化されているため、図2に示されるロジックは全体の一部であり、安全保護装置10の全体のロジック規模は、この数百倍に上る。
【0039】
フラッシュ型のFPGAを用いる場合、FPGAのロジックを変更するためには、通常の作動電圧よりも高電圧が必要となる。そこで、ロジックの変更を可能にするために論理処理部20は取外し可能な設計とし、取り外した後、専用のツールを用いてロジックを変更する。この様な仕組みとすることで、誤作動によってFPGAのロジックが変更されるリスクを排除することができる。
【0040】
もしくは、論理処理部20を取外し可能な設計とする代わりに、ロジック変更機能を安全保護装置10に内蔵させ、ロジック変更のための高電圧が外部から供給される設計とすることもできる。また論理処理部20は、ロジックの変更が不可能なアンチヒューズ型、SRAM型のFPGA、さらにASICを使用して実現することも可能である。
【0041】
遅延回路(図示略)は、判定手段11a,11bの後に設けられている。この遅延回路は、例えば水位センサT1で水位がL以下に下がりFALSEからTRUEにブール値が変化してもこのTRUEの出力が一定時間継続したときに、例えば30秒間続いたときに論理ゲート(ここでは第1ORゲート21)にTRUEを入力させる。
この遅延回路は、リセット機能付きのカウンタ回路を実装し、入力信号がTRUEになった時、クロックによってカウントアップすることで容易に実現できる。ブール値の時間遅延は、回路が複雑となり論理素子を多く使用するが、使用頻度は少ない。
【0042】
ブール値の論理処理にかかる時間は、FPGA内の論理ゲートの遅延時間と配線遅延時間で決まる。フラッシュタイプのFPGAでは、二つの信号を計算するORゲートの遅延時間は1ナノ秒以下であり、配線遅延時間はこれよりも小さい。
またFPGAで構成される論理処理部20は、同期設計され、10MHz程度のクロックで作動させた場合、図2に示される程度の組合せ回路の論理ゲートを1クロックで100段程度処理することができる。
ただし、FPGAのクロック周波数は、信号遅延による誤動作を起こさないように考慮されるため、必ずしも1クロックでブール演算、およびブール値の遅延処理を全て実行するものではない。
【0043】
論理処理部20は、ブール演算およびブール値の遅延処理を全て終了すると、非常用炉心冷却装置(図示略)へ制御信号を出力し、論理処理部20の論理処理が終了したことを示すビット(FALSE)を入力手段13に設定する。
【0044】
第1ORゲート21は、各種のプロセス信号T1,T2に由来するブール値及び安全保護動作の手動起動手段12bに由来するブール値を入力するものである。そして、入力したブール値の全てがFALSEであるとFALSEを出力し、入力したブール値のうち少なくとも一つがTRUEになるとTRUEを出力するものである。
【0045】
なお第1ORゲート21は、図2において三つのブール値が入力されるものが例示されているが、実際は図4に示されるように図示略の他の装置の制御情報に由来するブール値K1,K2及びその他の数十から数百におよぶプロセス信号に由来するブール値T1,T2…TNが入力される。
また第1ORゲート21は、図4に示されるように、入力するブール値の数に応じた複数段のOR素子で構成され、この段数に応じて処理時間も長くなるが通常は数ナノ秒から数十ナノ秒である。
【0046】
第2ORゲート22は、第1ORゲート21が出力するブール値及びANDゲート24の出力を帰還信号として入力し、結果をANDゲート24に出力するものである。
これにより、第2ORゲート22は、第1ORゲート21からTRUEを一旦入力するとそのままTRUEを出力するとともに、その後に第1ORゲート21からFALSEを入力することになっても、そのままTRUEを出力し続けることになる。
【0047】
NOTゲート23は、手動停止手段12aが出力するブール値を反転させるものである。よって、手動停止手段12aは常時FALSEを出力しているので、NOTゲート23は、常時TRUEをANDゲート24に出力し、手動停止手段12aが作動するとFALSEがANDゲート24に出力される。
【0048】
ANDゲート24は、入力するブール値が全てTRUEになるとTRUEを出力し、入力するブール値のうち少なくとも一つがFALSEであるとFALSEを出力するものである。これにより、ANDゲート24は、NOTゲート23から常時TRUEを入力し、第2ORゲート22からは常時FALSEを入力するために、常時FALSEを出力している。
【0049】
そして、ANDゲート24は、第2ORゲート22からの入力がTRUEに切り替わるとTRUEを出力しポンプPを起動する制御信号を出力させることになる。そして、ANDゲート24の出力したTRUEは、上述したとおり第2ORゲート22に帰還されるために、ANDゲート24は第2ORゲート22からTRUEを入力し続けることになる。
そして、手動停止手段12aが作動して、NOTゲート23からFALSEを入力すると、ANDゲート24はFALSEを出力しポンプPを停止させる制御信号が出力される。
【0050】
図5(適宜図1参照)に基づいて第1実施形態に係る安全保護装置10の動作を説明する。
まず、安全保護装置10を立ち上げると、ROMに格納されているプログラム及び定数(基準値)がRAMに読み込まれて起動する(S11)。そして、数値演算部11が数値処理を実行していることを示す入力手段13上のビットがTRUEに設定され(S12)、後述する数値演算処理が実行される(S13)。
なお、数値演算処理(S13)は、論理処理(S17)がFALSEに設定されていることが確認されてから、開始される。
【0051】
次に、数値演算部11における数値処理が終了すると、入力手段13上の前記ビットがTRUEからFALSEに設定変更される(S14)。そして、論理処理部20が論理処理を実行していることを示す出力手段14上のビットがTRUEに設定され(S15)、後述する論理演算処理が実行される(S16)。
なお、論理演算処理(S16)は、数値処理(S14)がFALSEに設定されていることが確認されてから、開始される。
【0052】
次に、論理処理部20における論理処理が終了すると、プラントの安全保護動作に係る制御信号が出力されるとともに、出力手段14上の前記ビットがTRUEからFALSEに設定変更される(S17)。
そして、ウォッチドッグタイマー15で設定された時間が経過したところで(S18:No)、入力手段13上のビットをTRUEに設定し(S12)、数値演算部11による数値処理を実行する(S13)。これにより、ウォッチドッグタイマー15の設定時間に関連付けされた周期で、(S12)〜(S17)のループが繰り返される。
【0053】
なお、このウォッチドッグタイマー15がリセットされるタイミングは、数値演算処理(S13)及び論理演算処理(S16)における開始時(TRUE設定時)及び終了時(FALSE設定時)のうちのいずれの時点でもよい。
一方、ウォッチドッグタイマー15の設定時間内に論理処理のFALSEが設定されないとタイムアウトとなり(S18:Yes)、信号処理のエラーが出力される(S19)。
【0054】
このように、数値演算処理(S13)と論理演算処理(S15)とが同時に処理されることがないために、処理エラーが生じにくい。
しかし、そのような処理エラーの発生が危惧されない場合は、論理処理のFALSE設定(S17)及び数値処理のFALSE設定(S14)を確認することなく、数値演算処理(S13)及び論理演算処理(S16)を進めても良い。
【0055】
図6に基づいて数値演算部11における処理動作を説明する。
図5に示された一連の動作フローにおいて、数値演算部11における処理(S13)が開始されると、まず入力手段13に複数(N個)の各種センサからプロセス信号Tが入力され、それぞれ順番にCPUにロードされる(S21)。そしてCPUは、前記A1〜A8に例示される命令を実行し(S22,S23)、ロードされたプロセス信号Tとこれに対応する基準値を対比して、正常/異常を判定したブール値(FALSE/TRUE)を出力手段14に設定する(S24,S25)。
【0056】
そして、前記A1〜A8に例示される命令は、N個のプロセス信号T(T1〜TN)に対し、T1からTNまで順番に実行され(S26:No)、この数値演算処理が終了する(S26:Yes)。なお、図6は記載上、S26において繰り返しループが存在するが、実際の演算プログラムは、N個のプロセス信号Tに対応するN個の演算プログラムがシーケンシャルに構成され、プログラム上の繰り返し処理は存在しない。
【0057】
次に、図2(A)、図2(B)、図3(C)、図3(D)基づいて論理処理部20における処理動作(図5の全体フローの中のS16の動作フロー)を説明する。
まず、図2(A)に示されるように、プラントに異常が無い正常運転状態では、出力手段14に格納されている各手段12a,12b,11a,11bのブール値は全てFALSEであるために、論理処理部20からはポンプPの停止命令を示すFALSEが制御信号として出力される。
【0058】
そして、図2(B)に示されるように、プラントに異常が発生して、例えば圧力センサのプラント信号T2が異常と判定されて判定手段11bのブール値がTRUEになったとする。すると、このTRUEを入力して第1ORゲート21はTRUEを出力し、このTRUEを入力して第2ORゲート22もTRUEを出力する。
NOTゲート23は常時TRUEを出力しているので、第2ORゲート22からTRUEが出力されると、この二つのTRUEを入力したANDゲート24からは、ポンプPの起動命令を示すTRUEが制御信号として出力される。
【0059】
そして、図3(C)は、圧力センサのプラント信号T2が正常に回復して判定手段11bからFALSEが出力されるようになった状態を示している。
しかし、ANDゲート24から出力されているTRUEが、第2ORゲート22の入力側に帰還しているので、ANDゲート24はそのままポンプPの起動命令を示すTRUEを制御信号として出力し続ける。
【0060】
そして、図3(D)は、ポンプPを停止させるためにプラント運転員の手動操作により手動停止手段12aからTRUEが出力されるようになった状態を示している。
これにより、NOTゲート23から出力されるブール値はFALSEに切り替わり、ANDゲート24は、ポンプPの停止命令を示すFALSEを制御信号として出力することになる。
【0061】
以上説明したように本実施形態においては、数値演算を効率的に処理する数値演算部11と、論理演算を効率的に処理する論理処理部20を組合せることで、CPU単体で論理演算も処理させる場合やFPGA内に数値演算を組込み処理する場合に比べ、全体の処理が効率的に実行される。
これに伴い、安全保護装置10を安価な部品で構成することができ、また発熱の多い高性能CPUを使用する必要が無いので、安全保護装置10の信頼性を向上させることができる。また、CPU処理が単純化され、保守モードを機能させるソフトウェアの構成を簡略化することができる。
【0062】
(第2実施形態)
図7(A)は、第2実施形態に係る安全保護装置10のブロック図を示している。なお、図7(A)に記載されている機能部のうち、図1に記載されているものと共通するものについては、同一の符号を付し前記した説明を引用して記載を省略する。
【0063】
この第2実施形態に係る安全保護装置10は、第1実施形態の場合と対比して、数値演算部11においてRAM上のプログラム及び定数のハッシュ値を演算させる機能と、出力手段14においてブール値とともにこの演算されたハッシュ値を論理処理部20に出力する機能と、この出力されたハッシュ値を保存する保存手段16と、論理処理部20においてこの保存されているハッシュ値と次回出力されたハッシュ値との同一性を判断して不一致であればエラー信号とともにアラームを発信する機能と、この発信したアラームを手動で停止させるためのアラームリセット手段17と、を備えている。
【0064】
ハッシュ値保存手段16は論理処理部20の外付けのRAMとして実現されるほか、論理処理部20の内部回路として実現することもできる。アラームリセット手段17は、例えば手動操作部12に設けられるプッシュボタンとしても実現される。
【0065】
ハッシュ値計算プログラムは、RAMに常駐しているプログラム及び定数に対してハッシュ値を計算し、その結果を出力手段14にセットする。このプログラム及び定数は、安全保護装置10の初期化が終了し、実行モードの処理に入ると変更されることはない。
従って、ハッシュ値が変化するとすれば、それはメモリーエラー、プログラムエラー、あるいはまた悪意のある意図的な変更によるものであり、いずれにしても異常状態が発生したといえる。
【0066】
ハッシュ値の計算方法としては、SHA(アメリカ国立標準技術研究所が発行したハッシュ関数)、MD5(IETF RFC1321に公表されたハッシュ関数)が使用される。あるいはまた巡回冗長符号検査(CRC)なども使用できる。サイバーセキュリティの観点からはSHAあるいはMD5のような暗号学的ハッシュ関数が望ましい。
【0067】
論理処理部20は、論理処理を開始する周期毎に出力手段14からハッシュ値を読み出し、ハッシュ値保存手段16に記録されている前回のハッシュ値と比較すると共に、前回のハッシュ値を、新しいハッシュ値で置き換える。そして、ハッシュ値の比較の結果が一致していなければ、アラームを発生する。
【0068】
安全保護装置10の起動時は、ハッシュ値保存手段16にある前回のハッシュ値と、数値演算部11で今回演算されたハッシュ値とが一致せず、アラームが発生する。
プラント運転員は安全保護装置10の起動時に、アラームリセット手段17によりアラームをリセットする。これによりプラント運転員は、ハッシュ値比較機能が正常に作動するか否かについて確認することができる。
また実行モード中にアラームが発生した場合は、RAMに記憶されるプログラムあるいは定数が変化したことを認識できる。このアラームをセットしたりリセットしたりする手段は、フリップフロップによって容易に実現される。
【0069】
図7(B)は、初回のアラーム発生を防ぐこともできるアラームのリセット回路図を示している。
このリセット回路は、出力手段14から読み出されるハッシュ値がハッシュ値保存手段16に記録されている前回のハッシュ値と一致した時にリセットされるフリップフロップ25と、このフリップフロップ25の反転出力とハッシュ値一致の反転とのANDを計算するANDゲート26とからなる。フリップフロップ25の反転出力は、ハッシュ値が少なくとも一度一致しない限りTRUEにならないため、初回のアラームは発生しない。
【0070】
図8に基づいて第2実施形態に係るプラントの安全保護装置の動作を説明する。
ここで、第2実施形態における図8のS11からS19までのフローは、第1実施形態における図5のS11からS19までのフローと同じであるので、説明を省略する。
第2実施形態では、論理演算処理(S16)と並行してプログラム及び定数のハッシュ値の計算が実行される(S31)。そして計算されたハッシュ値は、次の周期で数値演算処理された結果とともに出力手段14に格納される。
【0071】
そして、出力手段14に、論理処理の開始を宣言するTRUEが設定されると、今回のハッシュ値が呼び出され(S32)、ハッシュ値保存手段16に保存されている前回のハッシュ値と対比するとともにこれに上書きする。
【0072】
そして、前回ハッシュ値と今回ハッシュ値とが同一である場合は(S33:Yes)、異常なしと判定されて、(S16)〜(S18:No)の動作フローを繰り返す。
一方、前回ハッシュ値と今回ハッシュ値とが同一で無い場合は(S33:No)、異常発生と判定されてエラーが出力される(S19)。
【0073】
なお、変形例としてハッシュ値の計算(S31)を、論理演算処理(S16)と並列に実行するのではなく、数値演算処理(S13)の前又は後に直列に実行してもよい。
また、ハッシュ値の計算(S31)は、CPUで実行する場合の他、専用のハッシュ値計算手段(図示略)を設けて実行させてもよい。
また、特にハッシュ値の計算(S31)を実行せずに、プログラム及び定数をそのまま論理処理部20に転送して、論理演算処理(S16)を実行させる度に、前回転送されたものと今回転送されたものとを直接対比してもよい。
この第2実施形態によれば、CPUの処理に必要なプログラム及び定数にエラーが発生した場合に検知が可能になる。また、悪意のある改変を確実に検知できる。
【0074】
(第3実施形態)
図9(A)は、第3実施形態に係る安全保護装置10のブロック図を示している。図9(B)は、プラント信号Tのパケット構造を示している。なお、図9(A)に記載されている機能部のうち、図1に記載されているものと共通するものについては、同一の符号を付し前記した説明を引用して記載を省略する。
【0075】
第3実施形態では、各種のプロセス信号T(T1〜TN)は巡回符号とともに多重化されており、多重化されたプロセス信号Tを受信して巡回符号から誤りをチェックする受信部41と、チェックされたプロセス信号を入力手段13に所定の時間間隔で保持させるタイマー42とを備えている。
なおこの受信部41は、FPGA又はASICを用いたハードウェアで実現することができる。
【0076】
受信部41は、図示略のリモートI/Oステーションにおいて多重化されたパケットのプロセス信号Tを受信する。パケット形式は、図9(B)に示されるように、パケットの先頭には、信号の誤りを検出するための巡回符号が含まれている。
このヘッダの後には、各種プロセス信号T1〜TNが各16ビットのデータとして格納され、終端には符号EODが設けられている
受信部41は、各種プロセス信号T1〜TNを、内部にその数だけ用意されているレジスタに保存する。そして受信部41はこのレジスタに保存された信号から巡回符号を計算し、ヘッダに含まれている巡回符号と比較し、一致しない場合はエラーを通知する。
【0077】
タイマー42は、25ms毎に受信部41に信号を送り、巡回符号の比較でエラーがなければ、受信部41のレジスタに保存されている各種プロセス信号T1〜TNを、入力手段13の予め設定されたアドレス以降に順番に書き込む。
そして、入力手段13に書き込まれた各種プロセス信号T1〜TNは、数値演算部11において演算処理が施され、その後、論理処理部20において論理処理が施される。
【0078】
この第3実施形態によれば、ケーブル削減のため、リモートI/Oステーションを使用する安全保護装置の構成においても、新たな負担が求められることなくCPUは、数値演算処理に専念できる。また、リモートI/Oステーションに異常があった場合でも、その影響を最小限にすることができる。
【0079】
(第4実施形態)
図10は、第4実施形態に係る安全保護装置10のブロック図を示している。なお、図10に記載されている機能部のうち、図1に記載されているものと共通するものについては、同一の符号を付し前記した説明を引用して記載を省略する。
【0080】
バックプレーン50は、複数の拡張基板51,52,53,54がそれぞれ挿入される複数のコネクタ(図示略)を有し、これらコネクタは相互にデータを交換することができるバス上に形成されている。
第1拡張基板51には手動操作部12が実装され、第2拡張基板52にはバックプレーン50にデータ送信するコントローラ(図示略)及び入力手段12が実装され、第3拡張基板53には数値演算部11及び第1送受信手段55が実装され、第4拡張基板54には第2送受信手段56、論理処理部20及びウォッチドッグタイマー15が実装されている。
【0081】
入力手段13は、プロセス信号Tを入力するとバックプレーン50のバスを経由して第1基板53上の第1送受信手段55に送信する。そして、この送信されたプロセス信号Tは、RAM内の予め定められたアドレスに記録され、数値演算部11において正常/異常の判定がなされこの判定結果に対応するブール値が出力される。
【0082】
第1送受信手段55及び第2送受信手段56は、バックプレーン50のバスを介して他の拡張基板上の実装部品と相互にデータをやりとりする。
数値演算部11で出力されたブール値は、第1送受信手段55から、バックプレーン50のバスを経由して、第2基板54の第2送受信手段56に転送される。
第2基板54に転送されたブール値は、論理処理部20において処理されてプラントの安全保護動作に係る制御信号を出力させる。
【0083】
なお、第2送受信手段56は、論理処理部20における処理が終了したことを告げる終了信号をバックプレーン50のバス及び第1送受信手段55を介して数値演算部11に送信する。
この終了信号は、RAMの定められたアドレスに記録され、数値演算部11における演算処理の条件として用いられる。なお、この終了信号に限らず、論理処理部20における処理結果を、送受信手段55,56を介して数値演算部11にフィードバックし、演算処理の条件として用いることができる。
【符号の説明】
【0084】
10…安全保護装置(制御装置)、11…数値演算部、11a,11b…判定手段、12…手動操作部、12a…手動停止手段、12b…手動起動手段、13…入力手段、14…出力手段、15…ウォッチドッグタイマー、16…ハッシュ値保存手段、17…アラームリセット手段、20…論理処理部、21…第1ORゲート、22…第2ORゲート、23…NOTゲート、24…ANDゲート、25…フリップフロップ、41…受信部、42…タイマー、50…バックプレーン、51,52,53,54…拡張基板、55…第1送受信手段、56…第2送受信手段、T(T1…TN)…プロセス信号。

【特許請求の範囲】
【請求項1】
プラントから送信されるプロセス信号を入力する入力手段と、
プログラムに基づく演算処理によって前記プロセス信号の正常/異常を判定したブール値を出力する数値演算部と、
論理回路に基づき前記ブール値を論理処理し前記プラントの安全保護動作に係る制御信号を出力させる論理処理部と、を備えることを特徴とする制御装置。
【請求項2】
請求項1に記載の制御装置において、
前記数値演算部は、前記論理回路における前記論理処理が終了してから前記演算処理を開始し、
前記論理処理部は、前記数値演算部における前記演算処理が終了してから前記論理処理を開始することを特徴とする制御装置。
【請求項3】
請求項1又は請求項2に記載の制御装置において、
前記数値演算部は、各種の前記プロセス信号に対しシーケンシャルに前記演算処理を実行し最後に演算終了信号を出力することを特徴とする制御装置。
【請求項4】
請求項1から請求項3のいずれか1項に記載の制御装置において、
前記論理処理部は、
各種の前記プロセス信号に由来するブール値及び前記安全保護動作の手動起動手段に由来するブール値を入力する第1ORゲートと、
前記安全保護動作の手動停止手段に由来する前記ブール値を入力するとともに前記制御信号を出力させるANDゲートと、
前記第1ORゲートが出力するブール値及び前記ANDゲートの帰還信号を入力して前記ANDゲートに出力する第2ORゲートと、を備えることを特徴とする制御装置。
【請求項5】
請求項1から請求項4のいずれか1項に記載の制御装置において、
前記論理処理部における論理処理の開始から終了までの期間、又は前記数値演算部における数値演算の開始から前記論理処理部における論理処理の終了までの期間が、所定時間をタイムアウトしたことを通知するウォッチドッグタイマーを備えることを特徴とする制御装置。
【請求項6】
請求項1から請求項5のいずれか1項に記載の制御装置において、
前記数値演算部は、前記プログラム及び定数のハッシュ値を演算し、前記ブール値とともに前記ハッシュ値も出力し、
前記論理処理部は、入力した前記ハッシュ値と前回入力されたハッシュ値との同一性を判断することを特徴とする制御装置。
【請求項7】
請求項1から請求項6のいずれか1項に記載の制御装置において、
各種の前記プロセス信号は巡回符号とともに多重化されており
前記多重化されたプロセス信号を受信して前記巡回符号から誤りをチェックする受信部と、
前記チェックされたプロセス信号を前記入力手段に所定の時間間隔で保持させるタイマーと、を備えることを特徴とする制御装置。
【請求項8】
請求項1から請求項7のいずれか1項に記載の制御装置において、
前記入力手段、数値演算部及び論理処理部は、それぞれ別々の拡張基板に実装され、
それぞれの拡張基板は、コネクタを介してバスに連結されることを特徴とする制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2011−185875(P2011−185875A)
【公開日】平成23年9月22日(2011.9.22)
【国際特許分類】
【出願番号】特願2010−53742(P2010−53742)
【出願日】平成22年3月10日(2010.3.10)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】