(57)【特許請求の範囲】
【請求項１】
プラントから送信されるプロセス信号を入力する入力手段と、
プログラムに基づくＣＰＵの演算処理によって前記プロセス信号の正常／異常を判定したブール値を出力する数値演算部と、
ハードウェアのゲートで実現される論理素子で構成された論理回路に基づき前記ブール値を論理処理し前記プラントの安全保護動作に係る制御信号を出力させる論理処理部と、を備え、
前記数値演算部は、前記論理回路における前記論理処理が終了してから前記演算処理を開始し、
前記論理処理部は、前記数値演算部における前記演算処理が終了してから前記論理処理を開始することを特徴とする制御装置。
【請求項２】
プラントから送信されるプロセス信号を入力する入力手段と、
プログラムに基づくＣＰＵの演算処理によって前記プロセス信号の正常／異常を判定したブール値を出力する数値演算部と、
ハードウェアのゲートで実現される論理素子で構成された論理回路に基づき前記ブール値を論理処理し前記プラントの安全保護動作に係る制御信号を出力させる論理処理部と、を備え、
前記論理処理部は、
各種の前記プロセス信号に由来するブール値及び前記安全保護動作の手動起動手段に由来するブール値を入力する第１ＯＲゲートと、
前記安全保護動作の手動停止手段に由来する前記ブール値を入力するとともに前記制御信号を出力させるＡＮＤゲートと、
前記第１ＯＲゲートが出力するブール値及び前記ＡＮＤゲートの帰還信号を入力して前記ＡＮＤゲートに出力する第２ＯＲゲートと、を備えることを特徴とする制御装置。
【請求項３】
請求項１又は請求項２に記載の制御装置において、
前記数値演算部は、各種の前記プロセス信号に対しシーケンシャルに前記演算処理を実行し最後に演算終了信号を出力することを特徴とする制御装置。
【請求項４】
請求項１から請求項３のいずれか１項に記載の制御装置において、
前記論理処理部における論理処理の開始から終了までの期間、又は前記数値演算部における数値演算の開始から前記論理処理部における論理処理の終了までの期間が、所定時間をタイムアウトしたことを通知するウォッチドッグタイマーを備えることを特徴とする制御装置。
【請求項５】
請求項１から請求項４のいずれか１項に記載の制御装置において、
前記数値演算部は、前記プログラム及び定数のハッシュ値を演算し、前記ブール値とともに前記ハッシュ値も出力し、
前記論理処理部は、入力した前記ハッシュ値と前回入力されたハッシュ値との同一性を判断することを特徴とする制御装置。
【請求項６】
請求項１から請求項５のいずれか１項に記載の制御装置において、
各種の前記プロセス信号は巡回符号とともに多重化されており
前記多重化されたプロセス信号を受信して前記巡回符号から誤りをチェックする受信部と、
前記チェックされたプロセス信号を前記入力手段に所定の時間間隔で保持させるタイマーと、を備えることを特徴とする制御装置。
【請求項７】
請求項１から請求項６のいずれか１項に記載の制御装置において、
前記入力手段、数値演算部及び論理処理部は、それぞれ別々の拡張基板に実装され、
それぞれの拡張基板は、コネクタを介してバスに連結されることを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、原子力プラントや化学プラント等の各種プラントにおいて使用される制御装置に関する。
【背景技術】
【０００２】
原子力プラントには、異常時に原子炉を緊急停止させたり、非常用炉心冷却装置等の工学的安全施設を自動起動させたりする安全保護装置等の制御装置が設置されている。  
例えば、沸騰水型原子力発電プラントにおける非常用炉心冷却装置は、原子炉の水位が異常に低下したり格納容器の圧力が異常に上昇したりすると自動的に起動し、またはプラント運転員の手動操作によっても起動することができる。
【０００３】
そのような非常用炉心冷却装置のポンプを起動するためのロジックとして、任意のプロセス信号に、TRUE又はFALSEのブール値を対応させる判定演算が実行される。  
このようなロジックは、かつてハードウェアの比較器、リレー及びタイマーによって実現されていたが、近年のコンピュータ技術の進歩に伴ってＣＰＵを使用したプログラマブルコントローラ（ＰＬＣ；Programmable Logic Device）によって実現されるようになってきた。
【０００４】
そして、原子力発電プラントの安全保護装置で使用されるＰＬＣとして、プロセス信号の入出力、プログラムの周期的実行、及び通信の管理を行う実行モードと、初期化時及び実行中の自己診断を行う保守モードとを機能として合わせ持つＯＳが知られている（例えば、非特許文献１）。
【０００５】
一方、そのようなロジックを半導体素子であるＦＰＧＡ（Field Programmable Gate Array）により実現させる試みもなされている（例えば、特許文献１〜特許文献４）。  
このＦＰＧＡによれば、半導体のベンダに頼ることなく安全保護装置のベンダが任意のロジックを組むことができる。そして、ＳＲＡＭタイプ又はフラッシュタイプのＦＰＧＡを用いれば、ロジック変更も比較的容易である。
【０００６】
またＦＰＧＡは、ブール値の演算を直接ハードウェアのゲートで実行するため、ＰＬＣの場合のような演算命令のロード、デコード処理が不要でかつＯＳも不要である。そして、演算対象であるブール値へのアクセスが、ＰＬＣのようなＲＡＭからのロード又はＲＡＭへのストアではなく、ＦＰＧＡでは直接配線によるために効率が高い。  
このように、ＦＰＧＡでは、割り当てられた専用回路により演算処理を実行するために、ＣＰＵよりもブール値の演算処理を効率的に実行することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−２４９６０９号公報
【特許文献２】特開２００６−２３６２１４号公報
【特許文献３】特表２００９−５２２６４４号公報
【特許文献４】特開２００３−１７７８０６号公報
【非特許文献】
【０００８】
【非特許文献１】EPRI  TR-107330 “Generic Requirements Specification for Qualifying a Commercially Available PLC for Safety-Related Applications in Nuclear Power Plants”
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した通り、ＦＰＧＡでは、ＣＰＵよりもブール値等の論理演算を効率的に処理することができるが、数値演算に関して必ずしも処理が効率的とは言えない。  
ＦＰＧＡにおいても、数値比較のための数値演算の実行は原理的に可能であるが、論理演算をする場合に比べて数十倍以上のゲートが必要となる。このため安全保護装置で実行される全ての数値演算をＦＰＧＡで実行しようとすると専用回路の割り当てに伴いハードウェア規模が大きくなり経済的ではない。
【００１０】
また、ＦＰＧＡは、半導体としての実装方法としてＳＲＡＭ型、フラッシュ型、アンチヒューズ型といったいくつかの種類が存在するが、何れにおいても半導体の製造後にロジックを組むことが可能な構成であることに起因して、回路自体の動作速度がＣＰＵの数分の一から数十分の一以下の低速である。
【００１１】
一方においてＰＬＣのＯＳは、汎用ＯＳと対比して簡略化されているが、それでも自己診断機能、通信機能、保守機能が実装されていることによって、ある程度の複雑さを有している。このために、ＰＬＣのＯＳの品質を保証するための活動、例えば十分な作動実績の蓄積、検証と妥当性確認（Ｖ＆Ｖ）の負担が大きくなる。  
例えばＰＬＣのＯＳが、実行モードの作動中に誤って保守モードのプログラムコードを作動させると、プログラム又は定数を変更する可能性があり、誤動作の原因となる。
【００１２】
汎用ＯＳ等では、この様なメモリの誤参照を防止するためにメモリ保護機能を実装し、メモリが誤参照された場合は割込みによってエラー処理を行うようになっている。しかし、このようなメモリ保護機能を実装させること自体が、ＯＳを複雑化させ、新たな誤動作の原因となるリスクをもたらし、Ｖ＆Ｖの負担を増大させる。
【００１３】
本発明はこのような事情を考慮してなされたもので、装置構成が簡素であり、全体の処理効率に優れ、動作安定性に優れる制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
本発明に係る制御装置は、プラントから送信されるプロセス信号を入力する入力手段と、プログラムに基づくＣＰＵの演算処理によって前記プロセス信号の正常／異常を判定したブール値を出力する数値演算部と、ハードウェアのゲートで実現される論理素子で構成された論理回路に基づき前記ブール値を論理処理し前記プラントの安全保護動作に係る制御信号を出力させる論理処理部と、を備え、前記数値演算部は、前記論理回路における前記論理処理が終了してから前記演算処理を開始し、前記論理処理部は、前記数値演算部における前記演算処理が終了してから前記論理処理を開始することを特徴とする。
もしくは、前記論理処理部は、各種の前記プロセス信号に由来するブール値及び前記安全保護動作の手動起動手段に由来するブール値を入力する第１ＯＲゲートと、前記安全保護動作の手動停止手段に由来する前記ブール値を入力するとともに前記制御信号を出力させるＡＮＤゲートと、前記第１ＯＲゲートが出力するブール値及び前記ＡＮＤゲートの帰還信号を入力して前記ＡＮＤゲートに出力する第２ＯＲゲートと、を備えることを特徴とする
【発明の効果】
【００１５】
本発明に係る制御装置によれば、装置構成が簡素であり、全体の処理効率に優れ、動作安定性に優れる制御装置が提供される。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１実施形態を示すブロック図。
【図２】（Ａ），（Ｂ）実施形態に適用される論理処理部の構成及び動作説明図。
【図３】（Ｃ），（Ｄ）実施形態に適用される論理処理部の構成及び動作説明図。
【図４】第１ＯＲ回路の構成図。
【図５】第１実施形態に係る制御装置の動作説明図。
【図６】実施形態に適用される数値演算部の動作説明図。
【図７】（Ａ）は本発明の第２実施形態を示すブロック図、（Ｂ）はアラームのリセット回路図。
【図８】第２実施形態に係る制御装置の動作説明図。
【図９】（Ａ）は本発明の第３実施形態を示すブロック図、（Ｂ）はプラント信号のパケット構造の説明図。
【図１０】本発明の第４実施形態を示すブロック図。
【発明を実施するための形態】
【００１７】
（第１実施形態）
以下、本発明の実施形態を添付図面に基づいて説明する。  
図１に示されるように第１実施形態に係るプラントの安全保護に係る制御装置１０（以下、単に「安全保護装置１０」という）は、ＣＰＵ、ＲＯＭ及びＲＡＭの機能を備える数値演算部１１と、プラント運転員が操作する手動操作部１２と、プラントからのプロセス信号Ｔを入力して一時記憶する入力手段１３と、ＣＰＵの演算結果を一時記憶して論理処理部２０に出力する出力手段１４と、ウォッチドッグタイマー１５と、論理処理部２０とから構成されている。
【００１８】
そして、安全保護装置１０におけるこれら構成要素のうちＲＯＭ、ＲＡＭ、手動操作部１２、入力手段１３及び出力手段１４は、バス１９を介してＣＰＵのアドレス空間上に配置されている。従ってＣＰＵは、アドレス空間上の番地を指定することで、ＲＡＭ、入力手段１３、及び出力手段１４上のデータに一意的にアクセスすることができる。
【００１９】
入力手段１３は、プラントに設置された様々なセンサ等から送信されるプロセス信号Ｔを入力して一時的に保持するものである。このプロセス信号は、元がアナログ信号であれば図示略のＡＤ変換器によってデジタル化された後に入力手段１３に入力されるもので、具体的に、温度、圧力、流量、流速、電圧、電流、弁開度、放射線量等の物理量を表す数値信号と、ポンプのオン・オフ、弁の開閉、圧力スイッチのON/OFF、手動操作信号のON/OFF等を表すブール値が含まれる。さらに、他のプロセス制御装置からの制御信号も含まれる。
【００２０】
出力手段１４は、後述する数値演算部１１の演算結果であるブール値を一時的に保持して論理処理部２０に転送するものである。  
入力手段１３及び出力手段１４は、バッファ機能を有し、例えばデュアルポートメモリーを用いることでＣＰＵに負荷をかけることなく、外部からプロセス信号Ｔを入力し、ＣＰＵの演算結果を論理処理部２０にデータ伝送することができる。
【００２１】
また入力手段１３は、論理処理部２０が処理状態であるか非処理状態であるかを表すビットを有し、ＣＰＵはこのビットをスキャンして論理処理部２０が非処理状態（FALSE）であることを確認して数値演算部１１における演算処理を開始する。  
また出力手段１４は、数値演算部１１が処理状態であるか非処理状態であるかを表すビットを有し、非処理状態になるとＣＰＵはこのビットの設定をTRUEからFALSEに変更し、一時保持されているブール値を論理処理部２０に転送し論理処理を開始する。
【００２２】
数値演算部１１は、プログラムに基づく演算処理によってプロセス信号Ｔの正常／異常を判定したブール値を出力する。そして、このブール値は、バス１９を介して出力手段１４に一時記憶された後に、論理処理部２０に転送される。  
この数値演算部１１は、論理処理部２０におけるブール値の論理処理が終了してから次に入力される一群の各種プロセス信号Ｔの演算処理を開始する。そして、数値演算部１１は、これら複数のプロセス信号Ｔに対しシーケンシャルに演算処理を実行し最後に演算終了信号を出力する。
【００２３】
ＲＯＭ（Read Only Memory）は、数値演算を実行するプログラム及び定数が格納される不揮発性のメモリである。そして、安全保護装置１０が起動すると、ＲＯＭに格納されているプラグラム及び定数はＲＡＭに読み込まれる。  
この定数には、入力したプロセス信号に、true又はfalseのいずれのブール値を対応させるかを判断するための基準値も含まれる。そしてプログラムは、入力したプロセス信号Ｔとこれに対応する基準値とを対比して、true信号（１）又はfalse信号（０）のいずれかを出力させる。
【００２４】
ＲＡＭ（Random access memory）は、データの読み書きが自在の揮発性メモリで、ＲＯＭから読み込んで常駐させたプラグラム及び定数に従い、ＣＰＵに演算処理を実行させるとともにＣＰＵの演算結果を一時的に記憶する。  
ＣＰＵは、このＲＡＭに常駐するプログラムに従い、入力手段１３に一時記憶されているプロセス信号Ｔに対し、次の数値演算を実行し、演算結果を出力手段１４に保持させる。ＣＰＵはこれら一連の処理を、安全保護動作で要求される応答時間を考慮して、数十ｍｓ程度の間隔で周期的に実行する。
【００２５】
次にＣＰＵにおける演算処理について具体的に説明する。ＣＰＵは内部クロックに従って、定められた周期で処理を開始する。ここで、プロセス信号Ｔとして原子炉水位信号Ｔ１を取り上げ、その水位の正常／異常を判定する基準値Ｌとする。そして、それぞれのデータが次のアドレスに割り当てられるとする。  
原子炉水位信号Ｔ      500-501番地
基準値Ｌ              3000-3001番地
判定結果              2001番地の5ビット目
【００２６】
そして、判定結果を導く演算処理は次のプログラムにより実行される。ここで、R0、R1はＣＰＵのレジスタで、XレジスタはＣＰＵ内のビット処理用レジスタである。  
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ビット目にストア
【００２７】
このプログラムは、大小関係の判定結果から出力先の番地を設定する命令（A4,A6）には分岐が含まれるが、（A1）から処理を開始し、途中繰り返し無しに必ず（A8）で処理を終了する単純な構造となっている。  
そして、複数の例えば５００個のプロセス信号Ｔの入力信号に対して、このような比較演算処理を実行する場合は、入力信号の番地（A1のオペランド）、基準値の番地（A2のオペランド）、入力信号と基準値の大小関係（A4のオペレータ）、及び演算結果の出力先の番地（A8のオペランド）を変更した上記のプラグラムを５００個並べ、シーケンシャルに処理する。  
このために、複数のプロセス信号Ｔを処理するためにこのプロセス信号Ｔの数に比例する長さのプログラムを配列させることになるが、複雑さが増すことはなく、処理時間も十分に予測可能となる。
【００２８】
ＣＰＵは、数値演算部１１における演算処理が終了すると、その演算結果を出力手段１４に一時記憶させるとともに、ＣＰＵが処理状態であるか非処理状態あるかを表す出力手段１４上のビットをFALSE（非処理状態）に設定する。これは、複数の上記プログラムが配列する最後尾に、出力手段１４への書込みプログラムを用意することで実装される。
【００２９】
なお、ＣＰＵは、背景技術で説明したＰＬＣと同様に、上記プログラムで実現される実行モード以外に保守モードも有している。実行モードの動作プログラムが上述したように単純なシーケンシャルな処理であるために、実行中におけるメモリのアクセスエラーの有無を保守モードで容易に検証することができる。  
また、本実施形態の安全保護装置１０で適用されるＣＰＵは、汎用ＣＰＵよりも要求される機能が少ないために、専用ＣＰＵの設計が容易である。
【００３０】
ウォッチドッグタイマー１５は、数値演算部１１及び論理処理部２０から独立して構成され、論理処理部２０における論理処理の開始から終了までの期間、又は数値演算部１１における数値演算の開始から論理処理部２０における論理処理の終了までの期間が、所定時間をタイムアウトした場合にそのことを通知するものである。  
これによりＣＰＵ及び論理処理部２０の作動状態を高い信頼度で診断でき、プラントの安全性の向上に寄与する。  
このウォッチドッグタイマー１５は、例えば、ワンショットマルチバイブレータによって実現される。
【００３１】
ウォッチドッグタイマー１５は、数値演算部１１又は論理処理部２０における処理が開始又は終了するのに同期して初期化される。そして、ウォッチドッグタイマー１５は、論理処理部２０の処理周期、又は数値演算部１１及び論理処理部２０を併せた処理周期よりも多少長い時刻でタイムアウトするように設定される。例えば、処理周期が２５ｍｓであれば、３０ｍｓでタイムアウトするように設定される。
【００３２】
これにより、数値演算部１１又は論理処理部２０の周期的な処理が停止、あるいは異常により遅延した場合は、ウォッチドッグタイマー１５がタイムアウトして安全保護装置１０の異常が通知される。  
なお、数値演算部１１及び論理処理部２０は、互いに相手の処理状態を確認してから処理を開始するため、一方が停止すると、他方も停止する。従って、ＣＰＵ及び論理処理部２０のいずれか一方の処理が停止しても、ウォッチドッグタイマー１５により異常が通知される。
【００３３】
論理処理部２０は、図２（Ａ）に示されるように、第１ＯＲゲート２１と、第２ＯＲゲート２２と、ＮＯＴゲート２３と、ＡＮＤゲート２４と、いった論理素子から構成されている。  
この論理処理部２０は、ブール値の演算、およびブール値の時間遅延を実行するものでＦＰＧＡ（Field Programmable Gate Array）で実現される。このＦＰＧＡの論理素子はプログラミングにより配線される。
【００３４】
そして、論理処理部２０は、出力手段１４（図１）に一次保持されているブール値を入力し、論理回路に基づき処理し、プラントの安全保護動作に係る制御信号を出力させる。ここでは、論理処理部２０には非常用炉心冷却装置（図示略）のポンプＰを起動させる制御信号を出力するためのロジックが例示されている。
【００３５】
手動起動手段１２ｂは、プラントからのプロセス信号Ｔが正常を示している場合であっても、プラント運転員の手動操作によって安全保護動作を起動させるものである。  
手動停止手段１２ａは、起動した安全保護動作をプラント運転員の手動操作によって停止させるものである。  
これら手動起動手段１２ｂ及び手動停止手段１２ａの機能は、手動操作部１２（図１）に組み込まれており、常時FALSEを出力し、プラント運転員の手動操作によって出力がTRUEに切り替わる。ただし、手動起動手段１２ｂ及び手動停止手段１２ａは、同時にTRUEになることはないようなスイッチ構造となっている。
【００３６】
判定手段１１ａ，１１ｂは、数値演算部１１において、各プロセス信号Ｔの正常／異常を判定する各プログラム（前記したA1〜A8の命令）を機能要素として表示したものである。  
判定手段１１ａは、原子炉水位を検出する水位センサからのプロセス信号Ｔ１に関する判定を行う。この水位センサによって検出された原子炉水位が設定値Ｌより小さくなると異常と判定されTRUE、それ以外の時は正常と判定されFALSEが出力される。  
判定手段１１ｂは、格納容器の圧力を検出する圧力センサからのプロセス信号Ｔ２に関する判定を行うものである。この圧力センサによって検出された圧力が設定値Ｐより大きくなると異常と判定されTRUE、それ以外の時は正常と判定されFALSEが出力される。これは原子炉圧力容器に漏洩が発生した場合、原子炉圧力容器を取り囲む格納容器の圧力が上昇するため、これを検出することを想定したものである。
【００３７】
なお上述した通り、数値演算部１１の演算処理が終了したことを示すビット（FALSE）が出力手段１４に設定されたことをきっかけに、保持されていたブール値が論理処理部２０に送信され論理演算が実行される。またこれと同時に、論理処理部２０が実行中であることを示すビット（TRUE）が入力手段１３に設定される。  
ここで、ブール値はTRUEとFALSEを取るものとし、通常電気信号としては、それぞれ高電位、低電位に対応するが、フェールセーフの観点から、電圧の対応を逆にすることもある。
【００３８】
また安全保護装置１０（図１）が、異常を察知したときに動作させる非常用炉心冷却装置（図示略）には、図２に示されるポンプＰ以外に数個から数十個の弁が設けられている。さらに、この非常用の非常用炉心冷却装置は多重化されているため、図２に示されるロジックは全体の一部であり、安全保護装置１０の全体のロジック規模は、この数百倍に上る。
【００３９】
フラッシュ型のＦＰＧＡを用いる場合、ＦＰＧＡのロジックを変更するためには、通常の作動電圧よりも高電圧が必要となる。そこで、ロジックの変更を可能にするために論理処理部２０は取外し可能な設計とし、取り外した後、専用のツールを用いてロジックを変更する。この様な仕組みとすることで、誤作動によってＦＰＧＡのロジックが変更されるリスクを排除することができる。
【００４０】
もしくは、論理処理部２０を取外し可能な設計とする代わりに、ロジック変更機能を安全保護装置１０に内蔵させ、ロジック変更のための高電圧が外部から供給される設計とすることもできる。また論理処理部２０は、ロジックの変更が不可能なアンチヒューズ型、ＳＲＡＭ型のＦＰＧＡ、さらにＡＳＩＣを使用して実現することも可能である。
【００４１】
遅延回路（図示略）は、判定手段１１ａ，１１ｂの後に設けられている。この遅延回路は、例えば水位センサＴ１で水位がＬ以下に下がりFALSEからTRUEにブール値が変化してもこのTRUEの出力が一定時間継続したときに、例えば３０秒間続いたときに論理ゲート（ここでは第１ＯＲゲート２１）にTRUEを入力させる。  
この遅延回路は、リセット機能付きのカウンタ回路を実装し、入力信号がTRUEになった時、クロックによってカウントアップすることで容易に実現できる。ブール値の時間遅延は、回路が複雑となり論理素子を多く使用するが、使用頻度は少ない。
【００４２】
ブール値の論理処理にかかる時間は、ＦＰＧＡ内の論理ゲートの遅延時間と配線遅延時間で決まる。フラッシュタイプのＦＰＧＡでは、二つの信号を計算するＯＲゲートの遅延時間は１ナノ秒以下であり、配線遅延時間はこれよりも小さい。  
またＦＰＧＡで構成される論理処理部２０は、同期設計され、１０ＭＨｚ程度のクロックで作動させた場合、図２に示される程度の組合せ回路の論理ゲートを１クロックで１００段程度処理することができる。  
ただし、ＦＰＧＡのクロック周波数は、信号遅延による誤動作を起こさないように考慮されるため、必ずしも１クロックでブール演算、およびブール値の遅延処理を全て実行するものではない。
【００４３】
論理処理部２０は、ブール演算およびブール値の遅延処理を全て終了すると、非常用炉心冷却装置（図示略）へ制御信号を出力し、論理処理部２０の論理処理が終了したことを示すビット（FALSE）を入力手段１３に設定する。
【００４４】
第１ＯＲゲート２１は、各種のプロセス信号Ｔ１，Ｔ２に由来するブール値及び安全保護動作の手動起動手段１２ｂに由来するブール値を入力するものである。そして、入力したブール値の全てがFALSEであるとFALSEを出力し、入力したブール値のうち少なくとも一つがTRUEになるとTRUEを出力するものである。
【００４５】
なお第１ＯＲゲート２１は、図２において三つのブール値が入力されるものが例示されているが、実際は図４に示されるように図示略の他の装置の制御情報に由来するブール値Ｋ１，Ｋ２及びその他の数十から数百におよぶプロセス信号に由来するブール値Ｔ1，Ｔ2…ＴNが入力される。  
また第１ＯＲゲート２１は、図４に示されるように、入力するブール値の数に応じた複数段のＯＲ素子で構成され、この段数に応じて処理時間も長くなるが通常は数ナノ秒から数十ナノ秒である。
【００４６】
第２ＯＲゲート２２は、第１ＯＲゲート２１が出力するブール値及びＡＮＤゲート２４の出力を帰還信号として入力し、結果をＡＮＤゲート２４に出力するものである。  
これにより、第２ＯＲゲート２２は、第１ＯＲゲート２１からTRUEを一旦入力するとそのままTRUEを出力するとともに、その後に第１ＯＲゲート２１からFALSEを入力することになっても、そのままTRUEを出力し続けることになる。
【００４７】
ＮＯＴゲート２３は、手動停止手段１２ａが出力するブール値を反転させるものである。よって、手動停止手段１２ａは常時FALSEを出力しているので、ＮＯＴゲート２３は、常時TRUEをＡＮＤゲート２４に出力し、手動停止手段１２ａが作動するとFALSEがＡＮＤゲート２４に出力される。
【００４８】
ＡＮＤゲート２４は、入力するブール値が全てTRUEになるとTRUEを出力し、入力するブール値のうち少なくとも一つがFALSEであるとFALSEを出力するものである。これにより、ＡＮＤゲート２４は、ＮＯＴゲート２３から常時TRUEを入力し、第２ＯＲゲート２２からは常時FALSEを入力するために、常時FALSEを出力している。
【００４９】
そして、ＡＮＤゲート２４は、第２ＯＲゲート２２からの入力がTRUEに切り替わるとTRUEを出力しポンプＰを起動する制御信号を出力させることになる。そして、ＡＮＤゲート２４の出力したTRUEは、上述したとおり第２ＯＲゲート２２に帰還されるために、ＡＮＤゲート２４は第２ＯＲゲート２２からTRUEを入力し続けることになる。  
そして、手動停止手段１２ａが作動して、ＮＯＴゲート２３からFALSEを入力すると、ＡＮＤゲート２４はFALSEを出力しポンプＰを停止させる制御信号が出力される。
【００５０】
図５（適宜図１参照）に基づいて第１実施形態に係る安全保護装置１０の動作を説明する。  
まず、安全保護装置１０を立ち上げると、ＲＯＭに格納されているプログラム及び定数（基準値）がＲＡＭに読み込まれて起動する（Ｓ１１）。そして、数値演算部１１が数値処理を実行していることを示す入力手段１３上のビットがTRUEに設定され（Ｓ１２）、後述する数値演算処理が実行される（Ｓ１３）。  
なお、数値演算処理（Ｓ１３）は、論理処理（Ｓ１７）がFALSEに設定されていることが確認されてから、開始される。
【００５１】
次に、数値演算部１１における数値処理が終了すると、入力手段１３上の前記ビットがTRUEからFALSEに設定変更される（Ｓ１４）。そして、論理処理部２０が論理処理を実行していることを示す出力手段１４上のビットがTRUEに設定され（Ｓ１５）、後述する論理演算処理が実行される（Ｓ１６）。  
なお、論理演算処理（Ｓ１６）は、数値処理（Ｓ１４）がFALSEに設定されていることが確認されてから、開始される。
【００５２】
次に、論理処理部２０における論理処理が終了すると、プラントの安全保護動作に係る制御信号が出力されるとともに、出力手段１４上の前記ビットがTRUEからFALSEに設定変更される（Ｓ１７）。  
そして、ウォッチドッグタイマー１５で設定された時間が経過したところで（Ｓ１８:Ｎｏ）、入力手段１３上のビットをTRUEに設定し（Ｓ１２）、数値演算部１１による数値処理を実行する（Ｓ１３）。これにより、ウォッチドッグタイマー１５の設定時間に関連付けされた周期で、（Ｓ１２）〜（Ｓ１７）のループが繰り返される。
【００５３】
なお、このウォッチドッグタイマー１５がリセットされるタイミングは、数値演算処理（Ｓ１３）及び論理演算処理（Ｓ１６）における開始時（TRUE設定時）及び終了時（FALSE設定時）のうちのいずれの時点でもよい。  
一方、ウォッチドッグタイマー１５の設定時間内に論理処理のFALSEが設定されないとタイムアウトとなり（Ｓ１８：Ｙｅｓ）、信号処理のエラーが出力される（Ｓ１９）。
【００５４】
このように、数値演算処理（Ｓ１３）と論理演算処理（Ｓ１５）とが同時に処理されることがないために、処理エラーが生じにくい。  
しかし、そのような処理エラーの発生が危惧されない場合は、論理処理のFALSE設定（Ｓ１７）及び数値処理のFALSE設定（Ｓ１４）を確認することなく、数値演算処理（Ｓ１３）及び論理演算処理（Ｓ１６）を進めても良い。
【００５５】
図６に基づいて数値演算部１１における処理動作を説明する。  
図５に示された一連の動作フローにおいて、数値演算部１１における処理（Ｓ１３）が開始されると、まず入力手段１３に複数（Ｎ個）の各種センサからプロセス信号Ｔが入力され、それぞれ順番にＣＰＵにロードされる（Ｓ２１）。そしてＣＰＵは、前記A1〜A8に例示される命令を実行し（Ｓ２２，Ｓ２３）、ロードされたプロセス信号Ｔとこれに対応する基準値を対比して、正常／異常を判定したブール値（FALSE/TRUE）を出力手段１４に設定する（Ｓ２４，Ｓ２５）。
【００５６】
そして、前記A1〜A8に例示される命令は、Ｎ個のプロセス信号Ｔ（Ｔ1〜ＴN）に対し、Ｔ1からＴNまで順番に実行され（Ｓ２６：Ｎｏ）、この数値演算処理が終了する（Ｓ２６：Ｙｅｓ）。なお、図６は記載上、Ｓ２６において繰り返しループが存在するが、実際の演算プログラムは、Ｎ個のプロセス信号Ｔに対応するＮ個の演算プログラムがシーケンシャルに構成され、プログラム上の繰り返し処理は存在しない。
【００５７】
次に、図２（Ａ）、図２（Ｂ）、図３（Ｃ）、図３（Ｄ）基づいて論理処理部２０における処理動作（図５の全体フローの中のＳ１６の動作フロー）を説明する。  
まず、図２（Ａ）に示されるように、プラントに異常が無い正常運転状態では、出力手段１４に格納されている各手段１２ａ，１２ｂ，１１ａ，１１ｂのブール値は全てFALSEであるために、論理処理部２０からはポンプＰの停止命令を示すFALSEが制御信号として出力される。
【００５８】
そして、図２（Ｂ）に示されるように、プラントに異常が発生して、例えば圧力センサのプラント信号Ｔ２が異常と判定されて判定手段１１ｂのブール値がTRUEになったとする。すると、このTRUEを入力して第１ＯＲゲート２１はTRUEを出力し、このTRUEを入力して第２ＯＲゲート２２もTRUEを出力する。  
ＮＯＴゲート２３は常時TRUEを出力しているので、第２ＯＲゲート２２からTRUEが出力されると、この二つのTRUEを入力したＡＮＤゲート２４からは、ポンプＰの起動命令を示すTRUEが制御信号として出力される。
【００５９】
そして、図３（Ｃ）は、圧力センサのプラント信号Ｔ２が正常に回復して判定手段１１ｂからFALSEが出力されるようになった状態を示している。  
しかし、ＡＮＤゲート２４から出力されているTRUEが、第２ＯＲゲート２２の入力側に帰還しているので、ＡＮＤゲート２４はそのままポンプＰの起動命令を示すTRUEを制御信号として出力し続ける。
【００６０】
そして、図３（Ｄ）は、ポンプＰを停止させるためにプラント運転員の手動操作により手動停止手段１２ａからTRUEが出力されるようになった状態を示している。  
これにより、ＮＯＴゲート２３から出力されるブール値はFALSEに切り替わり、ＡＮＤゲート２４は、ポンプＰの停止命令を示すFALSEを制御信号として出力することになる。
【００６１】
以上説明したように本実施形態においては、数値演算を効率的に処理する数値演算部１１と、論理演算を効率的に処理する論理処理部２０を組合せることで、ＣＰＵ単体で論理演算も処理させる場合やＦＰＧＡ内に数値演算を組込み処理する場合に比べ、全体の処理が効率的に実行される。  
これに伴い、安全保護装置１０を安価な部品で構成することができ、また発熱の多い高性能ＣＰＵを使用する必要が無いので、安全保護装置１０の信頼性を向上させることができる。また、ＣＰＵ処理が単純化され、保守モードを機能させるソフトウェアの構成を簡略化することができる。
【００６２】
（第２実施形態）
図７（Ａ）は、第２実施形態に係る安全保護装置１０のブロック図を示している。なお、図７（Ａ）に記載されている機能部のうち、図１に記載されているものと共通するものについては、同一の符号を付し前記した説明を引用して記載を省略する。
【００６３】
この第２実施形態に係る安全保護装置１０は、第１実施形態の場合と対比して、数値演算部１１においてＲＡＭ上のプログラム及び定数のハッシュ値を演算させる機能と、出力手段１４においてブール値とともにこの演算されたハッシュ値を論理処理部２０に出力する機能と、この出力されたハッシュ値を保存する保存手段１６と、論理処理部２０においてこの保存されているハッシュ値と次回出力されたハッシュ値との同一性を判断して不一致であればエラー信号とともにアラームを発信する機能と、この発信したアラームを手動で停止させるためのアラームリセット手段１７と、を備えている。
【００６４】
ハッシュ値保存手段１６は論理処理部２０の外付けのＲＡＭとして実現されるほか、論理処理部２０の内部回路として実現することもできる。アラームリセット手段１７は、例えば手動操作部１２に設けられるプッシュボタンとしても実現される。
【００６５】
ハッシュ値計算プログラムは、ＲＡＭに常駐しているプログラム及び定数に対してハッシュ値を計算し、その結果を出力手段１４にセットする。このプログラム及び定数は、安全保護装置１０の初期化が終了し、実行モードの処理に入ると変更されることはない。  
従って、ハッシュ値が変化するとすれば、それはメモリーエラー、プログラムエラー、あるいはまた悪意のある意図的な変更によるものであり、いずれにしても異常状態が発生したといえる。
【００６６】
ハッシュ値の計算方法としては、ＳＨＡ（アメリカ国立標準技術研究所が発行したハッシュ関数）、ＭＤ５（IETF RFC1321に公表されたハッシュ関数）が使用される。あるいはまた巡回冗長符号検査(ＣＲＣ)なども使用できる。サイバーセキュリティの観点からはＳＨＡあるいはＭＤ５のような暗号学的ハッシュ関数が望ましい。
【００６７】
論理処理部２０は、論理処理を開始する周期毎に出力手段１４からハッシュ値を読み出し、ハッシュ値保存手段１６に記録されている前回のハッシュ値と比較すると共に、前回のハッシュ値を、新しいハッシュ値で置き換える。そして、ハッシュ値の比較の結果が一致していなければ、アラームを発生する。
【００６８】
安全保護装置１０の起動時は、ハッシュ値保存手段１６にある前回のハッシュ値と、数値演算部１１で今回演算されたハッシュ値とが一致せず、アラームが発生する。  
プラント運転員は安全保護装置１０の起動時に、アラームリセット手段１７によりアラームをリセットする。これによりプラント運転員は、ハッシュ値比較機能が正常に作動するか否かについて確認することができる。  
また実行モード中にアラームが発生した場合は、ＲＡＭに記憶されるプログラムあるいは定数が変化したことを認識できる。このアラームをセットしたりリセットしたりする手段は、フリップフロップによって容易に実現される。
【００６９】
図７（Ｂ）は、初回のアラーム発生を防ぐこともできるアラームのリセット回路図を示している。  
このリセット回路は、出力手段１４から読み出されるハッシュ値がハッシュ値保存手段１６に記録されている前回のハッシュ値と一致した時にリセットされるフリップフロップ２５と、このフリップフロップ２５の反転出力とハッシュ値一致の反転とのＡＮＤを計算するＡＮＤゲート２６とからなる。フリップフロップ２５の反転出力は、ハッシュ値が少なくとも一度一致しない限りTRUEにならないため、初回のアラームは発生しない。
【００７０】
図８に基づいて第２実施形態に係るプラントの安全保護装置の動作を説明する。  
ここで、第２実施形態における図８のＳ１１からＳ１９までのフローは、第１実施形態における図５のＳ１１からＳ１９までのフローと同じであるので、説明を省略する。  
第２実施形態では、論理演算処理（Ｓ１６）と並行してプログラム及び定数のハッシュ値の計算が実行される（Ｓ３１）。そして計算されたハッシュ値は、次の周期で数値演算処理された結果とともに出力手段１４に格納される。
【００７１】
そして、出力手段１４に、論理処理の開始を宣言するTRUEが設定されると、今回のハッシュ値が呼び出され（Ｓ３２）、ハッシュ値保存手段１６に保存されている前回のハッシュ値と対比するとともにこれに上書きする。
【００７２】
そして、前回ハッシュ値と今回ハッシュ値とが同一である場合は（Ｓ３３：Ｙｅｓ）、異常なしと判定されて、（Ｓ１６）〜（Ｓ１８：Ｎｏ）の動作フローを繰り返す。  
一方、前回ハッシュ値と今回ハッシュ値とが同一で無い場合は（Ｓ３３：Ｎｏ）、異常発生と判定されてエラーが出力される（Ｓ１９）。
【００７３】
なお、変形例としてハッシュ値の計算（Ｓ３１）を、論理演算処理（Ｓ１６）と並列に実行するのではなく、数値演算処理（Ｓ１３）の前又は後に直列に実行してもよい。  
また、ハッシュ値の計算（Ｓ３１）は、ＣＰＵで実行する場合の他、専用のハッシュ値計算手段（図示略）を設けて実行させてもよい。  
また、特にハッシュ値の計算（Ｓ３１）を実行せずに、プログラム及び定数をそのまま論理処理部２０に転送して、論理演算処理（Ｓ１６）を実行させる度に、前回転送されたものと今回転送されたものとを直接対比してもよい。  
この第２実施形態によれば、ＣＰＵの処理に必要なプログラム及び定数にエラーが発生した場合に検知が可能になる。また、悪意のある改変を確実に検知できる。
【００７４】
（第３実施形態）
図９（Ａ）は、第３実施形態に係る安全保護装置１０のブロック図を示している。図９（Ｂ）は、プラント信号Ｔのパケット構造を示している。なお、図９（Ａ）に記載されている機能部のうち、図１に記載されているものと共通するものについては、同一の符号を付し前記した説明を引用して記載を省略する。
【００７５】
第３実施形態では、各種のプロセス信号Ｔ（Ｔ1〜ＴN）は巡回符号とともに多重化されており、多重化されたプロセス信号Ｔを受信して巡回符号から誤りをチェックする受信部４１と、チェックされたプロセス信号を入力手段１３に所定の時間間隔で保持させるタイマー４２とを備えている。  
なおこの受信部４１は、ＦＰＧＡ又はＡＳＩＣを用いたハードウェアで実現することができる。
【００７６】
受信部４１は、図示略のリモートＩ／Ｏステーションにおいて多重化されたパケットのプロセス信号Ｔを受信する。パケット形式は、図９（Ｂ）に示されるように、パケットの先頭には、信号の誤りを検出するための巡回符号が含まれている。  
このヘッダの後には、各種プロセス信号Ｔ1〜ＴNが各１６ビットのデータとして格納され、終端には符号ＥＯＤが設けられている
受信部４１は、各種プロセス信号Ｔ1〜ＴNを、内部にその数だけ用意されているレジスタに保存する。そして受信部４１はこのレジスタに保存された信号から巡回符号を計算し、ヘッダに含まれている巡回符号と比較し、一致しない場合はエラーを通知する。
【００７７】
タイマー４２は、２５ｍｓ毎に受信部４１に信号を送り、巡回符号の比較でエラーがなければ、受信部４１のレジスタに保存されている各種プロセス信号Ｔ1〜ＴNを、入力手段１３の予め設定されたアドレス以降に順番に書き込む。  
そして、入力手段１３に書き込まれた各種プロセス信号Ｔ1〜ＴNは、数値演算部１１において演算処理が施され、その後、論理処理部２０において論理処理が施される。
【００７８】
この第３実施形態によれば、ケーブル削減のため、リモートＩ／Ｏステーションを使用する安全保護装置の構成においても、新たな負担が求められることなくＣＰＵは、数値演算処理に専念できる。また、リモートＩ／Ｏステーションに異常があった場合でも、その影響を最小限にすることができる。
【００７９】
（第４実施形態）
図１０は、第４実施形態に係る安全保護装置１０のブロック図を示している。なお、図１０に記載されている機能部のうち、図１に記載されているものと共通するものについては、同一の符号を付し前記した説明を引用して記載を省略する。
【００８０】
バックプレーン５０は、複数の拡張基板５１，５２，５３，５４がそれぞれ挿入される複数のコネクタ（図示略）を有し、これらコネクタは相互にデータを交換することができるバス上に形成されている。  
第１拡張基板５１には手動操作部１２が実装され、第２拡張基板５２にはバックプレーン５０にデータ送信するコントローラ（図示略）及び入力手段１２が実装され、第３拡張基板５３には数値演算部１１及び第１送受信手段５５が実装され、第４拡張基板５４には第２送受信手段５６、論理処理部２０及びウォッチドッグタイマー１５が実装されている。
【００８１】
入力手段１３は、プロセス信号Ｔを入力するとバックプレーン５０のバスを経由して第１基板５３上の第１送受信手段５５に送信する。そして、この送信されたプロセス信号Ｔは、ＲＡＭ内の予め定められたアドレスに記録され、数値演算部１１において正常／異常の判定がなされこの判定結果に対応するブール値が出力される。
【００８２】
第１送受信手段５５及び第２送受信手段５６は、バックプレーン５０のバスを介して他の拡張基板上の実装部品と相互にデータをやりとりする。  
数値演算部１１で出力されたブール値は、第１送受信手段５５から、バックプレーン５０のバスを経由して、第２基板５４の第２送受信手段５６に転送される。  
第２基板５４に転送されたブール値は、論理処理部２０において処理されてプラントの安全保護動作に係る制御信号を出力させる。
【００８３】
なお、第２送受信手段５６は、論理処理部２０における処理が終了したことを告げる終了信号をバックプレーン５０のバス及び第１送受信手段５５を介して数値演算部１１に送信する。  
この終了信号は、ＲＡＭの定められたアドレスに記録され、数値演算部１１における演算処理の条件として用いられる。なお、この終了信号に限らず、論理処理部２０における処理結果を、送受信手段５５，５６を介して数値演算部１１にフィードバックし、演算処理の条件として用いることができる。
【符号の説明】
【００８４】
１０…安全保護装置（制御装置）、１１…数値演算部、１１ａ，１１ｂ…判定手段、１２…手動操作部、１２ａ…手動停止手段、１２ｂ…手動起動手段、１３…入力手段、１４…出力手段、１５…ウォッチドッグタイマー、１６…ハッシュ値保存手段、１７…アラームリセット手段、２０…論理処理部、２１…第１ＯＲゲート、２２…第２ＯＲゲート、２３…ＮＯＴゲート、２４…ＡＮＤゲート、２５…フリップフロップ、４１…受信部、４２…タイマー、５０…バックプレーン、５１，５２，５３，５４…拡張基板、５５…第１送受信手段、５６…第２送受信手段、Ｔ（Ｔ1…ＴN）…プロセス信号。
【図１】
0005422448.tif 000002
【図２】
0005422448.tif 000003
【図３】
0005422448.tif 000004
【図４】
0005422448.tif 000005
【図５】
0005422448.tif 000006
【図６】
0005422448.tif 000007
【図７】
0005422448.tif 000008
【図８】
0005422448.tif 000009
【図９】
0005422448.tif 000010
【図１０】
0005422448.tif 000011