(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、本発明の一実施形態について、図面を参照して説明する。
【0010】
図1は、一実施形態に係る安全計装システム1の概略構成の一例を示す機能ブロック図である。安全計装システム1は、例えばプラントにおける操業ラインに設けられる。安全計装システム1は、操業ライン上の機器に異常が起こった場合等の緊急時に、プラントを安全な状態に停止させるために設けられるシステムである。緊急時に安全計装システム1が動作することにより、爆発事故又は人身事故等の災害や環境汚染等を未然に防止したり、設備を保護したりすることができる。プラントの例としては、化学等の工業プラントの他、ガス田や油田等の井戸元やその周辺を管理制御するプラント、水力・火力・原子力等の発電を管理制御するプラント、太陽光や風力等の環境発電を管理制御するプラント、上下水やダム等を管理制御するプラント等が挙げられる。ただし、プラントは、ここで示した例に限られない。
【0011】
図1に一例として示す安全計装システム1は、センサ装置10と、制御演算装置11と、安全装置12とを備える。安全計装システム1において、センサ装置10は、内部に備えるRAMの故障検出を行う、故障検出装置として機能する。
【0012】
センサ装置10は、操業ラインにおける所定の物理量の検出に関する処理を実行する装置である。所定の物理量の検出に関する処理は、所定の物理量の検出、及び、検出した物理量に応じた信号の出力を含む。所定の物理量は、操業ラインで使用される機器及び物質等の性質に応じて適宜定められてよい。センサ装置10は、検出した物理量に応じた信号を制御演算装置11に送信する。
図1に示す例では、センサ装置10は、検出した物理量に応じた信号を、4−20mAの電流を用いて、制御演算装置11に送信する。すなわち、センサ装置10は、検出した物理量の値に応じて、4mAから20mAの範囲の電流を制御演算装置11に送信する。本明細書では、センサ装置10が、所定の物理量として、操業ラインで使用される流体の水素イオン指数(pH)を検出するとして、以下説明する。ただし、所定の物理量はpHに限られない。以下、本明細書において、センサ装置10が実行する処理を、「センサ処理」ともいう。センサ処理は、物理量の検出に関する処理を含む。
【0013】
図1に示すように、センサ装置10は、センサ素子110と、信号変換器120とを備える。
図2は、センサ装置10の概略構成の一例を示す機能ブロック図である。
【0014】
センサ素子110は、上述した所定の物理量を検出するための素子である。ここでは、センサ素子110は、流体のpHを検出可能なセンサ素子である。
【0015】
信号変換器120は、センサ素子110から出力される検出結果に基づく電気信号を受信し、当該信号についてデジタル信号処理を行い、デジタル信号処理結果に基づき、4−20mAの電流を制御演算装置11に出力する。
【0016】
図2に一例として示すように、信号変換器120は、アナログデジタル(A/D)コンバータ121と、制御部122と、出力部123と、ROM(Read Only Memory)124と、RAM125とを備える。
【0017】
A/Dコンバータ121は、センサ素子110から出力される検出結果に基づくアナログの電気信号を、デジタル信号に変換する。
【0018】
制御部122は、信号変換器120の各機能ブロックをはじめとして、信号変換器120の全体を制御及び管理する。制御部122は、中央処理装置(CPU:Central Processing Unit)等の任意の好適なプロセッサ上で実行されるソフトウェアとして構成したり、処理ごとに特化した専用のプロセッサによって構成したりすることができる。
【0019】
制御部122は、例えばROM124に記憶されたプログラムに従って、A/Dコンバータ121で変換されたデジタル信号について、所定の演算処理を行う。制御部122は、演算処理の結果(以下、「演算結果」ともいう)を、例えばRAM125に記憶させる。また、制御部122は、RAM125に記憶させた演算結果を、4−20mAの電流に変換し、例えば定期的に制御演算装置11に出力する。
【0020】
出力部123は、制御部122の制御に基づき、信号を制御演算装置11に出力するインタフェースである。ここでは、出力部123は、制御部122の制御に基づき、4−20mAの電流信号を制御演算装置11に出力する。
【0021】
ROM124は、信号変換器120の記憶部として機能する。ROM124は、例えば制御部122において実行されるプログラムを記憶する。
【0022】
RAM125は、信号変換器120の記憶部として機能する。RAM125は、例えば制御部122による演算結果を記憶する。
【0023】
図3は、RAM125が有するデータ領域の一例を模式的に示す図である。
図3に示すように、RAM125は、データ領域として、オペレーティングシステム(OS)領域126と、スタック領域127と、プログラム動作制御用データ領域128と、演算結果記憶領域129とを有する。OS領域126は、制御部122を動作させるソフトウェアを記憶する領域である。スタック領域127は、制御部122による処理の実行中に一時的にデータを記憶する領域である。プログラム動作制御用データ領域128は、プログラムを動作させるに際し使用されるデータを記憶する領域であり、例えば平均値を算出するための測定回数等のデータが記憶される。演算結果記憶領域129は、上述したように制御部122がA/Dコンバータ121で変換されたデジタル信号について実行した演算処理の結果を記憶する領域である。
【0024】
再び
図1を参照すると、制御演算装置11は、センサ装置10から電流信号を受信する。制御演算装置11は、安全制御を実現するための安全制御ロジックを実行する。制御演算装置11は、例えば受信した電流信号に基づき、異常が発生していると判定した場合、安全装置12に対して所定の制御を実行させるための制御信号を送信する。制御演算装置11は、いわゆるロジックソルバと呼ばれる機構により構成されていてよい。
【0025】
安全装置12は、制御演算装置11から受信した制御信号に基づいて、所定の制御を実行する。例えば、安全装置12は、制御演算装置11から受信した制御信号に基づいて、操業ラインの稼働を停止させる制御を実行する。
【0026】
例えば、安全装置12は、バルブポジショナ又は電磁弁等として構成されていてよい。制御演算装置11は、受信した電流信号に基づき、異常が発生していると判定した場合、安全装置12に対して、弁を閉じるための制御信号を送信する。バルブポジショナ又は電磁弁として構成された安全装置12は、制御演算装置11から受信した制御信号に基づいて弁を閉じることにより、例えば流体のラインへの供給を停止させることができる。
【0027】
図1に一例として示した安全計装システム1において、安全機能を果たす確からしさに関する指標として、安全度水準(SIL:Safety Integrity Level)が知られている。安全度水準は、SIL1からSIL4までの4段階に分類されており、SIL1が最も安全性が低く、SIL4が最も安全性が高いことを示す。なお、SILは、例えば機能安全規格IEC61508に基づいて定められるものであってよい。
【0028】
安全計装システム1のSILは、例えば安全計装システム1の各構成要素の機能失敗平均確率(PFD:Probability of Failure on Demand)の和に基づいて定められる。すなわち、
図1に示す安全計装システム1の例では、SILは、センサ装置10、制御演算装置11及び安全装置12のPFDの和に基づいて定められる。各構成要素のPFDの和が低いほど、SILの分類として示される数値が高くなる。つまり、各構成要素のPFDの和が低いほど、安全性が高いことを意味する。
【0029】
ところで、安全計装システム1のセンサ装置10は、
図2を参照して説明したようにRAM125を備えるが、RAM125は他の機能部と比較して故障が発生しやすい。すなわち、RAM125のPFDは高くなりやすく、そのため、RAM125のPFDが安全計装システム1のSILに大きな影響を与えやすい。言い換えると、RAM125のPFDを改善することにより、安全計装システム1全体のSILが向上しやすい。
【0030】
従来公知の発明では、例えば、安全計装システム1の起動時に、RAM125全体の故障検出が実行されるとともに、RAM125の動作中に、RAM125のうち演算結果記憶領域129の故障検出が実行される。しかしながら、RAM125の動作中は、演算結果記憶領域129のみ故障検出が実行され、安全計装システム1の動作に影響を与える他の領域については故障検出が実行されない。安全計装システム1の動作に影響を与える他の領域は、
図3に示す例では、OS領域126、スタック領域127、プログラム動作制御用データ領域128である。また、RAM125の動作中に、例えばOS領域126を含む、演算結果記憶領域129以外の他の領域について故障検出を実行しようとする場合、RAM125の動作を停止する必要がある。しかしながら、RAM125の動作を停止して、故障検出を実行すると、安全計装システム1の動作に支障をきたすこととなるため、RAM125の動作を停止して故障検出を実行することは現実的ではない。
【0031】
一方、例えばRAM125が、いわゆる誤り検出訂正(ECC:Error Check and Correct)機能を有する場合、RAM125は、ECCによる故障検出を行うことにより、RAM125の動作中においても、RAM125全体の故障検出を実行することができる。ECC機能は、RAM125に記憶されるデータにエラーが発生していることを検出したり、エラーを有するデータを正しいデータに訂正したりすることが可能な機能である。しかしながら、ECC機能付きのRAM125は、ECC機能を有さないRAM125と比較して高価であるため、ECC機能付きのRAM125を採用すると、安全計装システム1のコストが上昇する。
【0032】
そこで、本願発明は、ECC機能を有さない、より安価なRAM125を用いて、RAM125の動作中にも故障検出を実行可能な故障検出装置、故障検出方法及び故障検出プログラムを提供する。
【0033】
ここで、本実施形態に係るセンサ装置10が実行する、故障検出の具体的な方法について説明する。仮に、RAM125の全体の領域について故障検出を実行する場合、例えば数百ミリ秒から数秒程度の時間を必要とする。しかしながら、上述のように、RAM125の動作中に、数百ミリ秒から数秒の間、RAM125の動作を停止することは現実的に実行し得ない。
【0034】
そこで、本実施形態に係るセンサ装置10は、RAM125が備える領域全体が分割された複数の要素について、順次故障検出を行うことにより、RAM125の領域全体を複数回に分割して故障検出を行う。
【0035】
図4は、本実施形態に係るセンサ装置10が実行する故障検出の方法について説明する図である。
図4には、上段及び下段に、センサ装置10が実行する処理を示すタイムチャートが示されている。
図4において、横軸は時刻を示す。
【0036】
図4の下段に示すタイムチャートは、センサ装置10がRAM125の領域全体について一度に故障検出を実行する場合の処理を示す。RAM125の領域全体について一度に故障検出を実行する場合、RAM125の領域全体の故障検出に所定の時間T
0を要する。当該所定の時間T
0は、上述したように、例えば数百ミリ秒から数秒である。このようにRAM125の領域全体について一度に故障検出を実行する場合、当該所定の時間T
0の間は、RAM125の動作を停止する必要がある。
【0037】
図4の上段に示すタイムチャートは、本実施形態に係るセンサ装置10が実行する故障検出の処理を示す。本実施形態に係るセンサ装置10は、故障検出において、RAM125の領域全体を分割して生成される複数の要素を用いる。RAM125の領域全体を分割して生成される、分割された要素のそれぞれを、本明細書において、以下「分割領域」ともいう。
図4の下段に示すタイムチャートには、RAM125の領域全体を分割した、分割領域の一例がイメージ図として示されている。本実施形態において、RAM125の分割領域は、予め定められ、センサ装置10において設定されていてよい。
【0038】
分割領域は、
図3に一例として示したRAM125が有するデータ領域とは異なる区分で分割されていてよい。つまり、分割領域は、必ずしも、OS領域126、スタック領域127、プログラム動作制御用データ領域128及び演算結果記憶領域129の4つに分割されるものではない。例えば、OS領域126、スタック領域127、プログラム動作制御用データ領域128及び演算結果記憶領域129が、それぞれさらに分割されて、分割領域が形成されていてよい。この場合、各分割領域は、OS領域126、スタック領域127、プログラム動作制御用データ領域128及び演算結果記憶領域129のいずれかに属する。
【0039】
本実施形態に係るセンサ装置10は、
図4の上段のタイムチャートに示すように、例えば一定のサンプリング周期T
1で、センサ処理を実行する。サンプリング周期T
1は、例えば検出対象となる物理量、及びセンサ素子110の仕様等に応じて、適宜定められていてよい。
【0040】
各サンプリング周期T
1において、センサ装置10はセンサ処理を実行する。センサ装置10は、各サンプリング周期T
1において、例えば物理量を検出する処理を実行する。ここで、センサ装置10が実行するセンサ処理は、サンプリング周期T
1の全体をかけることなく終了し得る。例えば、センサ装置10は、各サンプリング周期T
1のうち、サンプリング開始後の所定時間T
2の間に、当該サンプリング周期T
1の間に実行すべきセンサ処理を完了し得る(ただし、T
1>T
2である)。すなわち、各サンプリング周期T
1において、サンプリング周期T1から所定の時間T
2を除いた時間T
3は、センサ装置10がセンサ処理を実行していない(ただし、T
1=T
2+T
3)。以下、所定時間T
2を、センサ処理時間T
2ともいう。
【0041】
本実施形態に係るセンサ装置10は、各サンプリング周期T
1のうち、センサ処理が実行されない時間T
3の間に、故障検出を実行する。このとき、センサ装置10は、RAM125の1つの分割領域について、故障検出を実行する。以下、時間T
3を、故障検出時間T
3ともいう。
【0042】
センサ装置10は、各サンプリング周期T
1において、センサ処理時間T
2におけるセンサ処理と、故障検出時間T
3における故障検出とを交互に繰り返す。センサ装置10は、各サンプリング周期T
1の故障検出時間T
3において、複数の分割領域の全てについて、順次故障検出を実行する。センサ装置10は、このように各サンプリング周期T
1において分割領域の故障検出を順次実行する。センサ装置10は、分割領域の個数と同じ回数のサンプリング周期T
1を経ることによって、RAM125の領域全体について故障検出を行うことができる。本実施形態に係るセンサ装置10によりRAM125の領域全体について故障検出を一通り完了するまでにかかる時間を、以下、故障検出周期T
Dともいう。
【0043】
故障検出周期T
Dは、RAM125の分割領域と同数のサンプリング周期T
1を含む。本実施形態に係るセンサ装置10は、このようにRAM125の分割領域について、各サンプリング周期T
1のうちの一部の故障検出時間T
3に、順次故障検出を実行することにより、故障検出周期T
Dの間に、RAM125が有する領域全体について、故障検出を実行することができる。
【0044】
図5は、センサ装置10が故障検出時間T
3に実行する処理の一例を示すフローチャートである。すなわち、センサ装置10は、故障検出時間T
3に、
図5に一例として示す処理を実行することにより、1つの分割領域について故障検出を実行する。
【0045】
図6は、RAM125の領域全体を分割して生成される分割領域を示すイメージ図である。
図6に示すように、RAM125は、故障検出を実行するための分割領域として、領域1から領域Nまでの、N個(N>1)の分割領域を有する。各分割領域には、例えばそれぞれデータが記憶されている。センサ装置10は、各サンプリング周期T
1の故障検出時間T
3において、領域1から領域NまでのN個の分割領域について、順に故障検出を実行する。なお、
図5のフローでは、複数の分割領域のうち、領域1についての故障検出の処理の一例が示されている。
【0046】
図7は、信号変換器120の制御部122が備えるレジスタの一例を模式的に示す図である。本実施形態では、
図7に一例として示すように、レジスタとしてR0からR4までの、少なくとも5つのレジスタを備える制御部122により、
図5のフローが実行されるとする。
【0047】
図5を参照すると、制御部122は、故障検出時間T
3が開始されると、割込みを禁止する処理を行う(ステップS10)。これにより、故障検出以外の処理が割り込むことがなくなる。すなわち、
図5のフローに示す処理以外の処理が実行されなくなる。
【0048】
次に、制御部122は、RAM125の領域1に記憶されたデータ(DATA1)を、制御部122のレジスタR3に転送し、レジスタR3に当該DATA1を保存する(ステップS11)。このようにして、制御部122は、領域1に記憶されたDATA1を、レジスタR3に一時的に退避させる。
【0049】
次に、制御部122は、領域1のDATA1として、「0x55555555」という値を書き込む(ステップS12)。「0x55555555」は、32ビットのビットパターンにおいて、「01010101・・・」と表現される値である。
【0050】
制御部122は、DATA1及び「0x55555555」の排他的論理和を取り、この演算結果を、レジスタR2に保存する(ステップS13)。ここで、DATA1には、ステップS12において「0x55555555」という値が書き込まれているので、領域1が正常であれば、レジスタR2に保存される演算結果は、0となる。
【0051】
次に、制御部122は、領域1のDATA1として、「0xAAAAAAAA」という値を書き込む(ステップS14)。「0xAAAAAAAA」は、32ビットのビットパターンにおいて、「10101010・・・」と表現される値である。
【0052】
制御部122は、DATA1及び「0xAAAAAAAA」の排他的論理和と、ステップS13でレジスタR2に保存された演算結果との論理和を取り、この演算結果を、レジスタR0に保存する(ステップS15)。ここで、DATA1には、ステップS14において「0xAAAAAAAA」という値が書き込まれているので、領域1が正常であれば、DATA1及び「0xAAAAAAAA」の排他的論理和は、0となる。従って、領域1が正常であれば、レジスタR0に保存される演算結果は、0となる。一方、領域1に異常がある場合、レジスタR0に保存される演算結果は、0以外の値となる。
【0053】
次に、制御部122は、レジスタR3に退避させた元のデータを、領域1に記憶させる(ステップS16)。このようにして、制御部122は、領域1に記憶されていた元のデータを復旧させる。
【0054】
そして、制御部122は、割込みを許可する処理を行う(ステップS17)。これにより、故障検出以外の処理が割り込んで実行され得る。
【0055】
制御部122は、レジスタR0に保存された演算結果が0であるか否かを判定する(ステップS18)。
【0056】
制御部122は、レジスタR0に保存された演算結果が0であると判定した場合(ステップS18のYes)、領域1が正常であると判定し、このフローを終了する。
【0057】
一方、制御部122は、レジスタR0に保存された演算結果が0でないと判定した場合(ステップS18のNo)、領域1に異常があると判定し、エラー処理を行う(ステップS19)。制御部122は、エラー処理として、例えばエラーが発生したことを報知する。そして、制御部122は、このフローを終了する。
【0058】
制御部122は、故障検出時間T
3が開始されるたびに、
図5のフローを実行して、領域1から領域Nまでの分割領域について順次故障検出を行う。これにより、制御部122は、故障検出周期T
Dの間に、RAM125の領域全体について故障検出を行うことができる。
【0059】
このように、本実施形態に係るセンサ装置10によれば、RAM125を分割した複数の分割領域について、各サンプリング周期T
1のうち、センサ処理を行っていない故障検出時間T
3の間に故障検出を行う。そのため、センサ装置10によれば、センサ装置10の動作に影響を与える領域であるOS領域126、スタック領域127、プログラム動作制御用データ領域128を含めた、RAM125の全体の領域について故障検出を実行可能である。また、センサ装置10は、センサ処理を行っていない故障検出時間T
3の間に故障検出を行うため、センサ装置10が実行するセンサ処理に影響を与えることなく、故障検出を実行することができる。つまり、センサ装置10は、安全計装システム1における機能を損なうことなく、故障検出を実行することができる。
【0060】
また、本実施形態に係るセンサ装置10によれば、RAM125の領域全体について故障検出を行うため、RAM125の一部の領域について故障検出を行う場合と比較して、RAM125の故障を見逃す可能性が低くなる。そのため、センサ装置10のPFDが低くなる。その結果、安全計装システム1全体のPFDを下げることができ、SILを向上させることができる。
【0061】
なお、上記実施形態において、安全計装システム1のSILは、安全計装システム1の各構成要素のPFDの和に基づいて定められると説明したが、安全計装システム1のSILは、安全側故障割合(SFF:Safe Failure Fraction)及びフォールトトレランス(FT:Fault Tolerance)に基づいて定められてもよい。例えば、SFFが高いほど、また、FTが高いほど、SILの分類として示される数値が高くなるように、SILが定められてよい。
【0062】
上記実施形態では、センサ装置10が、各サンプリング周期T
1の故障検出時間T
3の間に、RAM125の1つの分割領域について故障検出を実行すると説明した。しかしながら、センサ装置10が各サンプリング周期T
1の故障検出時間T
3の間に実行する故障検出の対象は、必ずしも1つの分割領域でなくてもよい。センサ装置10は、各サンプリング周期T
1の故障検出時間T
3の間に、RAM125の2つ以上の分割領域について故障検出を実行してもよい。これは、例えば故障検出時間T
3の間に2つ以上の分割領域について故障検出が実行可能である場合にのみ、実行されてよい。このように、センサ装置10は、各サンプリング周期T
1の故障検出時間T
3の間に、RAM125の複数の分割領域の一部の分割領域について、故障検出を実行してよい。センサ装置10が各サンプリング周期T
1の故障検出時間T
3の間に、2つ以上の分割領域について故障検出を実行する場合、1つの分割領域について故障検出を実行する場合と比較して、より早期に、RAM125の全体について故障検出処理を実行することができる。つまり、故障検出周期T
Dが短縮され得る。
【0063】
上記実施形態において、センサ装置10は、複数の分割領域のうちの一部の特定の分割領域について、優先的に故障検出を実行してもよい。ここで、優先的に故障検出を実行するとは、当該特定の分割領域について、他の分割領域よりも先に、つまり故障検出周期T
Dの間のより早い段階で、故障検出を実行することをいう。優先的に故障検出を実行する特定の分割領域は、例えば予め定められ、センサ装置10において設定されていてよい。特定の分割領域は、複数の分割領域のうち、例えば、SILの分類に影響を与え得る領域であってよい。特定の分割領域について優先的に故障検出を実行することにより、当該特定の分割領域について、より早期に故障を検出しやすくなる。
【0064】
例えば、特定の分割領域は、演算結果記憶領域129に属する分割領域であってよい。この場合、センサ装置10は、特定の分割領域である演算結果記憶領域129に属する分割領域について、優先的に故障検出を実行してよい。演算結果記憶領域129以外の、例えばOS領域126において故障が発生している場合には、センサ装置10が異常な動作を示し、センサ装置10の故障を発見することが可能である。これに対し、演算結果記憶領域129において故障が発生している場合、演算結果が正常であるか異常であるかを判定することは困難であり、センサ装置10の故障を発見が容易ではない。しかしながら、演算結果記憶領域129に故障が発生すると、正常な演算結果が出力されず、安全計装システム1が正常に動作しなくなる場合がある。このように、演算結果記憶領域129に故障が発生した場合、故障を見逃す可能性が高くなる。そこで、特定の分割領域である演算結果記憶領域129に属する分割領域について、優先的に故障検出を実行することにより、演算結果記憶領域129で発生した故障を、より早期に検出することができるようになる。
【0065】
上記実施形態に係るセンサ装置10は、操業ラインにおける所定の物理量を検出する装置であると説明した。ここで、上記実施形態で説明した故障検出方法は、特にセンサ処理を実行するにあたり、サンプリング周期T
1がより長い方が好適である。サンプリング周期T
1が長いほど、故障検出時間T
3を長く取りやすく、各サンプリング周期T
1内において、より多くの時間を故障検出に使用することができるためである。
【0066】
例えば、一般に、操業ラインに流体が供給される場合、気体の性質の変化よりも、液体の性質の変化の方が、変化が緩やかである。そのため、液体の性質を検出するセンサ装置10は、気体の性質を検出するセンサ装置10よりも、サンプリング周期T
1がより長くても、液体の性質を検出し得る。従って、センサ装置10は、操業ラインにおける所定の物理量として、液体の性質又は当該液体の性質の変化を検出する装置であってよい。ただし、これは、センサ装置10が気体の性質又は気体の性質の変化を検出する装置であることを除外することを意図するものではない。
【0067】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。