以下、図面を参照しつつ、本発明の実施形態について説明する。
なお、図面は模式的または概念的なものであり、各部分の厚みと幅との関係、部分間の大きさの比率などは、必ずしも現実のものと同一とは限らない。また、同じ部分を表す場合であっても、図面により互いの寸法や比率が異なって表される場合もある。
なお、本願明細書と各図において、既出の図に関して前述したものと同様の要素には、同一の符号を付して詳細な説明を適宜省略する。
図1は、本実施形態に係るプログラマブルロジックコントローラを例示するブロック図である。
図2および図3は、本実施形態のプログラマブルロジックコントローラの一部を例示するブロック図である。
(プログラマブルロジックコントローラ1の構成)
図1に示すように、本実施形態のプログラマブルロジックコントローラ(Programmable Logic Controller、以下、PLCという。)1は、コントローラ10と、入力モジュール30と、冗長化用入力モジュール40と、入力信号選択ユニット50と、出力モジュール60と、冗長化用出力モジュール70と、出力信号選択ユニット80と、を備える。コントローラ10は、入力モジュール30、冗長化用入力モジュール40、出力モジュール60および冗長化用出力モジュール70に、専用通信ネットワーク100で接続されている。コントローラ10は、専用通信ネットワークに代えて、専用のバスによって入力モジュール30等に接続されていてもよい。
コントローラ(制御装置)10は、典型的には、複数の入力モジュール30に接続されている。複数の入力モジュール30ごとに1つの冗長化用入力モジュール40が設けられている。入力モジュール30および冗長化用入力モジュール40は、入力信号選択ユニット50を介して、入力機器2に接続されている。入力機器2は、たとえば温度センサや位置センサ等である。入力信号選択ユニット50は、コントローラ10に接続されており、コントローラ10において計算された重要度が高い入力信号INxを、入力モジュール30および冗長化用入力モジュール40の両方に供給する。入力モジュール30および冗長化用入力モジュール40は、アナログ信号やディジタル信号を入力信号INxとして入力して、所定の処理を行って処理済みのデータDATAxとして出力する。
コントローラ10は、典型的には、複数の出力モジュール60および冗長化用出力モジュール70と接続されている。複数の出力モジュール60ごとに1つの冗長化用出力モジュール70が設けられている。各出力モジュール60および冗長化用出力モジュール70は、データDATAyを供給され、出力信号OUTyを出力する。また、出力モジュール60は、出力信号OUTyにもとづいてリードバックデータRByを生成し、コントローラ10に供給する。出力モジュール60および冗長化用出力モジュール70は、出力信号選択ユニット80を介して、出力機器4に接続されている。出力機器4は、たとえばアクチュエータや操作弁、ランプ等である。出力信号選択ユニット80は、コントローラ10に接続されており、コントローラ10において計算された重要度が高い出力信号OUTyを、出力モジュール60の出力または冗長化用出力モジュール70の出力のいずれかを選択して出力する。
PLC1は、図示しない記憶部に格納されているラダープログラム等の命令ステップにしたがって、入力機器2から信号を入力し、処理を行うことによって生成された電圧や電流等を有する出力信号によって、出力機器4を駆動する。
コントローラ10は、汎用通信ネットワーク101に接続されている。コントローラ10は、汎用通信ネットワーク101を介して、記憶部92,93にそれぞれ接続されている。記憶部92には、予備品データベース120が格納されている。記憶部93には、故障損失量データベース130が格納されている。コントローラ10は、汎用通信ネットワーク101を介して、これらのデータベースにアクセスすることができる。コントローラ10は、汎用通信ネットワーク101に代えて、汎用のバスによって接続されていてもよい。なお、入出力データベース110を格納する記憶部91も、汎用通信ネットワーク101を介して、コントローラ10に接続するようにしてもよい。これらの記憶部91〜93は、たとえば同一のデータベースサーバ(図示せず)の記憶装置として設けられていてもよいし、それぞれ別の記憶装置によって構成されていてもよい。
本実施形態のPLC1は、コントローラ10、入力モジュール30、冗長化用入力モジュール40、入力信号選択ユニット50、出力モジュール60、冗長化用出力モジュール70、および出力信号選択ユニット80に電力を供給する電源ユニット140を含む。電源ユニット140は、常用電源ユニット141と、冗長電源ユニット142とを含む。常用電源ユニット141は、コントローラ10、入力モジュール30、冗長化用入力モジュール40、入力信号選択ユニット50、出力モジュール60、冗長化用出力モジュール70、および出力信号選択ユニット80すべてに電力を供給する。冗長電源ユニット142は、コントローラ10、冗長化用入力モジュール40、入力信号選択ユニット50、冗長化用出力モジュール70、および出力信号選択ユニット80に電力を供給する。電源ユニット140は、たとえば常用電源ユニット141の出力および冗長電源ユニット142の出力を入力して、いずれかを選択して出力する切替回路143を有している。切替回路143は、常用電源ユニット141の出力電圧が正常な範囲のときには、出力せず、常用電源ユニット141の出力電圧が正常な範囲よりも低下したときに冗長電源ユニット142からの出力に切替える。
冗長電源ユニット142は、常用電源ユニット141よりも少ない負荷を駆動するので、冗長電源ユニット142には、小形で低出力容量の電源装置を用いることができる。
(コントローラ10の構成)
コントローラ10は、冗長化信号決定部11と、入力処理部12と、入力切替部13と、出力処理部14と、出力切替部15と、を含む。
冗長化信号決定部11は、記憶部91〜93にそれぞれ接続されており、入出力データベース110、予備品データベース120および故障損失量データベース130にそれぞれアクセスすることができる。冗長化信号決定部11は、入出力データベース110、予備品データベース120および故障損失量データベース130にもとづいて、入力信号INxおよび出力信号OUTyごとに重要度Sxおよび重要度Syの値を計算する。入力信号INxごとおよび出力信号OUTyごとに計算された重要度Sxおよび重要度Syの値は、あらかじめ設定されているしきい値Sthとそれぞれ比較される。重要度Sx,Syとしきい値Sthとを比較した結果にしたがって、冗長化要否信号Rx,Ryが生成される。たとえば、重要度Sx,Syの値がしきい値Sth以上のときには、冗長化要否信号Rx,Ryは、Hレベルであり、重要度Sx,Syの値がしきい値Sthよりも小さいときには、冗長化要否信号Rx,RyはLレベルである。
冗長化信号決定部11は、冗長化要否信号Rxを入力信号選択ユニット50に供給する。入力信号選択ユニット50は、冗長化要否信号Rxにもとづいて冗長化する入力信号INxを入力モジュール30および冗長化用入力モジュール40の両方に供給する。たとえば、冗長化要否信号RxがHレベルの入力信号INxについては、入力信号INxを入力モジュール30および冗長化用入力モジュール40の両方に供給する。冗長化要否信号RxがLレベルの入力信号については、その入力信号を入力モジュール30に供給し、冗長化用入力モジュールに供給しない。
冗長化信号決定部11は、冗長化要否信号Rxを入力切替部13に供給する。入力切替部13は、供給された冗長化要否信号Rxにもとづいて、出力を切り替えるか否かを選択する。
冗長化信号決定部11は、冗長化要否信号Ryを出力信号選択ユニット80に供給する。出力信号選択ユニット80は、冗長化要否信号Ryにもとづいて冗長化する出力信号OUTyを設定する。たとえば、出力信号選択ユニット80は、冗長化要否信号RyがHレベルに設定された出力信号OUTyについては、出力モジュール60からの出力電流と、冗長化用出力モジュール70からの出力電流とを切り替えて出力する。出力信号選択ユニット80は、冗長化要否信号RyがLレベルに設定された出力信号OUTyについては、出力モジュール60からの出力電流を出力し、冗長化用出力モジュール70からの出力電流を出力しない。
冗長化信号決定部11は、冗長化要否信号Ryを出力切替部15に供給する。出力切替部15は、供給された冗長化要否信号Ryにもとづいて、出力を切り替えるか否かを選択する。
入力処理部12は、入力モジュール30から供給された処理済みのデータDATAxに所定の処理を行う。所定の処理は、ラダープログラムにしたがって、実行される処理等である。
入力切替部13は、入力モジュール30からのデータDATAxおよび冗長化用入力モジュール40からのデータDATAx’が入力される。たとえば、入力切替部13は、冗長化要否信号RxがHレベル(冗長化要)の場合には、データDATAxおよびデータDATAx’のうちから1つを選択して出力する。この場合において、入力切替部13は、入力モジュール30からのデータDATAxに異常がないときには、データDATAxを出力し、データDATAxに異常があるときには、データDATAx’を出力する。つまり、入力切替部13は、冗長化を要するとされた入力信号INxを入力モジュール30によって変換した結果、変換されたデータDATAxに異常があるときには、冗長化用入力モジュール40によって変換されたデータDATAx’を出力する。
入力切替部13は、冗長化要否信号RxがLレベル(冗長化不要)の場合には、データDATAxを出力する。この場合においては、データDATAxは異常であるか否かによらない。
後述するように、冗長化用入力モジュール40における入力信号INxに対する処理は、その入力信号INxを処理する入力モジュール30における処理と同一である。したがって、冗長化の対象となる入力信号INxについては、処理済みデータDATAxとDATAx’は、同一のデータである。
出力処理部14は、所定の処理にしたがって生成されたデータDATAyを生成する。ここで、所定の処理は、図示しない記憶部に格納されたラダープログラムにしたがって、実行される処理である。出力処理部14において生成されたデータDATAyは、出力切替部15に供給される。この例では、入力処理部12および出力処理部14は、異なる処理ブロックとして示されているが、同一の処理ブロックのそれぞれ入力部分および出力部分であってももちろんかまわない。
出力切替部15は、各出力モジュール60および冗長化用出力モジュール70に接続されている。出力切替部15は、各出力モジュール60または冗長化用出力モジュール70のいずれかに出力処理部14で生成されたデータDATAyを供給することができる。出力切替部15は、出力モジュール60の各出力信号OUTyに対応するリードバックデータRByを入力して、出力信号OUTyの異常の有無を判定する。
出力切替部15は、たとえば、冗長化要否信号RyがHレベル(冗長化要)の場合には、出力モジュール60または冗長化用出力モジュール70のいずれかを選択してデータDATAyを供給する。この場合において、出力モジュール60が生成するリードバックデータRByに異常がないときには、出力切替部15は、そのままデータDATAyを出力モジュール60に供給する。リードバックデータRByに異常があるときには、出力切替部15は、データDATAyを冗長化用出力モジュール70に供給する。
冗長化要否信号RyがLレベル(冗長化不要)の場合には、出力切替部15は、リードバックデータRByの異常の有無にかかわらず、データDATAyを出力モジュール60に供給する。
後述するように、冗長化用出力モジュール70におけるデータDATAyに対する処理は、出力モジュール60における処理と同一である。したがって、冗長化用出力モジュール70が出力する出力信号OUTy’は、出力モジュール60が出力する出力信号OUTyと同一である。
(入力モジュール30の構成)
図2に示すように、入力モジュール30は、処理回路31と、複数の入力端子32a,32b,…と、出力端子33と、を含む。複数の入力端子32a,32b,…のそれぞれには、アナログ信号が入力される。入力モジュール30は、信号が入力される入力端子のリターン、つまり、接地のための端子を含む。また、入力モジュール30は、たとえば差動入力信号のための2つの入力端子を含んでもよい。たとえば、入力端子32a,32b,…は、16個である。つまり、この場合には、1つの入力モジュール30当たり、16点の入力(16チャネルの入力)が可能である。
処理回路31は、入力端子32a,32b,…から入力された入力信号INxに所定の処理を行って出力する。所定の処理は、入力されたアナログ信号からなる入力信号INxを所定のビット数のシリアルまたはパラレルのディジタルデータに変換する処理である。変換されたディジタル形式のデータDATAxは、たとえば処理回路31内のレジスタに一時的に格納され、コントローラ10の命令にしたがって、所定のレジスタから読み出されて、送信される。
入力モジュール30では、温度センサ等の入力機器2から出力された入力信号IN1,IN2,…を入力端子32a,32b,…にそれぞれ入力し、処理回路31によって所定の処理を施して出力端子33から出力する。出力端子33から出力されたデータは、コントローラ10に供給される。
(冗長化用入力モジュール40の構成)
冗長化用入力モジュール40は、処理回路41と、複数の入力端子42a,42b,…と、出力端子43と、を含む。冗長化用入力モジュール40の各構成要素は、入力モジュール30の各構成要素とそれぞれ同一である。つまり、冗長化用入力モジュール40の処理回路41は、入力モジュール30の処理回路31と同一の処理を行う回路である。処理回路41は、入力端子42a,42b,…から入力された信号に所定の処理を施して、処理が施されたデータを出力端子43から出力する。
冗長化用入力モジュール40は、入力信号選択ユニット50のマルチプレクサ(後述)55を介して入力機器2に接続されている。
冗長化用入力モジュール40には、冗長化する入力モジュール30と同一の入力信号INxが入力される。冗長化用入力モジュール40の処理回路41は、入力モジュール30の処理回路31と同一の処理を実行する。したがって、冗長化用入力モジュール40の処理回路41で処理されたデータDATAx’は、入力モジュール30で正常に処理されたデータDATAxと同一のデータであることが保証される。つまり、入力信号INxは、冗長化用入力モジュール40によって冗長化される。
(入力信号選択ユニット50の構成)
入力信号選択ユニット50は、複数の入力端子52a,52b,…と、複数の出力端子53a,53b,…と、マルチプレクサ55と、冗長出力端子56a,56bと、を含む。複数の入力端子52a,52b,…は、それぞれ複数の出力端子53a,53b,…と電気的に接続されている。たとえば、入力端子52aに入力された信号は、そのまま出力端子53aに出力され、入力端子52bに入力された信号は、そのまま出力端子53bに出力される。
入力信号選択ユニット50の出力端子52a,52b,…は、入力モジュール30の入力端子32a,32b,…にそれぞれ接続されている。入力信号選択ユニット50は、少なくとも入力モジュール30の入力端子の数に等しい数の入力端子および出力端子を含む。たとえば入力モジュール30が16個の入力端子を有している場合には、16個の入力端子32a,32b,…には、入力信号選択ユニット50の入力端子52a,52b,…および出力端子53a,53b,…を介して、16個の入力機器2を接続することができる。このため、入力信号選択ユニット50は、入力モジュール30の入出力の端子が配置されている端子台に着脱可能に接続するようにもできる。
マルチプレクサ55の入力は、複数の入力端子52a,52b,…のそれぞれに電気的に接続されている。マルチプレクサ55は、1つ以上の出力を有し、冗長出力端子56に電気的に接続されている。この例では、マルチプレクサ55は、2つの冗長出力端子56a,56bを含んでいる。
マルチプレクサ55は、冗長化信号決定部11が出力する冗長化要否信号Rxにしたがって冗長化すべき入力信号INxに対応する入力端子を複数の入力端子52a,52b,…から選択して、冗長出力端子56a,56bに接続する。
たとえば、入力モジュール30の2個の入力端子32a,32bに入力される入力信号IN1,IN2についてそれぞれ冗長化する場合については次のようになる。入力信号IN1について、入力端子32aに接続されているマルチプレクサ55の入力端子52aが選択される。そのため、入力信号IN1は、冗長出力端子56aから出力される。入力信号IN2について、入力端子32bに接続されているマルチプレクサ55の入力端子52bが選択される。そのため、入力信号IN2は、冗長出力端子56bから出力される。
冗長出力端子56a,56bは、冗長化用入力モジュール40の入力端子42a,42bにそれぞれ接続されている。つまり、入力モジュール30の入力端子32a,32bに入力される信号は、同時に、冗長化用入力モジュール40の入力端子42a,42bにも入力される。
この例では、3個の入力モジュール30がコントローラ10に接続されており、各入力モジュール30は、16個の入力端子を有している。冗長化用入力モジュール40も、16個の入力端子を有している。各入力モジュール30の入力端子のうち、2つの入力端子が冗長化用入力モジュール40に接続されており、冗長化用入力モジュール40の16個の入力端子のうち、2個×3=6個の入力端子が冗長化のために用いられている。なお、この例では、冗長化用入力モジュール40は、16個の入力端子を有しているので、さらに10個の冗長化を行うことができる。
なお、上述では、入力モジュール30の処理回路31は、すべて同一のアナログディジタル変換を行うものとしたが、たとえば入力モジュールごとに異なる処理回路、たとえば入力されるアナログ値の範囲が異なったり、出力されるディジタルデータのビット数が相違等してもよい。入力される信号は、アナログ信号に限らず、ディジタル信号であってももちろんよい。そのような場合には、冗長化用入力モジュール40の処理回路の構成等を冗長化する入力モジュール30に対して適切に選定すればよい。
(出力モジュール60の構成)
図3に示すように、出力モジュール60は、処理回路61と、入力端子62と、複数の出力端子63a,63b,…と、リードバックデータ出力端子64と、を含む。処理回路61は、コントローラ10の出力切替部15に、入力端子62を介して接続されている。処理回路61は、たとえば、コントローラ10の出力処理部14で生成されたディジタル形式のデータDATAyをアナログ値を有する電流あるいは電圧に変換する。
複数の出力端子63a,63b,…は、出力信号選択ユニット80を介して、アクチュエータ等の出力機器4にそれぞれ電気的に接続されている。
リードバックデータ出力端子64は、処理回路61の出力に接続されている。処理回路61において変換された電流または電圧は、再度ディジタル値に変換されて、リードバックデータ出力端子64から出力される。リードバックデータ出力端子64から出力されたリードバックデータRByは、コントローラ10の出力切替部15に入力される。出力切替部15では、リードバックデータRByにもとづいて、出力モジュール60の対応する出力信号OUTyの異常の有無が判断される。
(冗長化用出力モジュール70の構成)
冗長化用出力モジュール70は、処理回路71と、入力端子72と、複数の出力端子73a,73b,…と、を含む。冗長化用出力モジュール70の各構成要素は、出力モジュール60の各構成要素とそれぞれ同一である。ただし、冗長化用出力モジュール70は、出力モジュール60の代替として機能するので、出力の異常検出を行う必要が必ずしもなく、リードバックデータ出力端子を含んでいなくてもよい。冗長化用出力モジュール70では、入力端子72から入力されたデータを処理回路71によって所定の処理を施して、出力端子73a,73b,…から出力する。
冗長化用出力モジュール70には、冗長化する出力モジュール60と同一のデータDATAyが入力される。冗長化用出力モジュール70の処理回路71では、出力モジュール60の処理回路61と同一の処理を行う。したがって、冗長化用出力モジュール70の処理回路71で変換された出力信号OUTy’は、出力モジュール60で正常に変換された出力信号OUTyと同一の信号であることが保証される。つまり、出力信号OUTyは、冗長化用出力モジュール70によって冗長化される。
(出力信号選択ユニット80の構成)
出力信号選択ユニット80は、複数の入力端子82a,82b,…と、出力端子83a,83b,…と、冗長入力端子84a,84bと、複数のマルチプレクサ85a,85b,…と、を含む。入力端子82a,82b,…は、少なくとも出力モジュール60の出力端子63a,63b,…の数に応じた数が設けられている。たとえば、16個の出力端子63a,63b,…を有する出力モジュールには、それぞれの出力に対応して、少なくとも16個の入力端子82a,82b,…が設けられている。たとえば、出力モジュール60が16個の出力端子を有している場合には、16個の入力端子82a,82b,…および16個の出力端子83a,83b,…を介して、16個の出力機器4を接続することができる。このため、出力信号選択ユニット80は、出力モジュール60の入出力の端子が配置されている端子台に着脱可能に接続するようにすることもできる。
マルチプレクサ85a,85b,…は、入力端子82a,82b,…の数に応じて複数個設けられている。たとえば、出力信号選択ユニット80が16個の入力端子82a,82b,…を有する場合には、16個のマルチプレクサ85a,85b,…が設けられている。入力端子82a,82b,…には、マルチプレクサ85a,85b,…の1つの入力がそれぞれ接続されている。マルチプレクサ85a,85b,…の他の入力には、冗長入力端子84a,84bが接続されている。マルチプレクサ85a,85b,…の出力は、それぞれ出力端子83a,83b,…を介して出力機器4に接続されている。
マルチプレクサ85a,85b,…は、3つの入力を適宜切り替えて出力に接続する。マルチプレクサ85a,85b,…は、冗長化要否信号Ryにしたがって、入力と出力との接続が設定される。冗長化要否信号Ryによって冗長化を要する出力信号については、出力切替部15における異常有無の判定結果によって、入力と出力との接続を切り替える。出力切替部15が異常なしと判定した出力信号については、出力モジュール60の出力をマルチプレクサの出力に接続する。出力切替部15が異常ありと判定した出力信号については、冗長化用出力モジュール70の出力をマルチプレクサの出力に接続する。
たとえば、出力モジュール60の出力端子63a,63bから出力される電流(OUT1,OUT2)については冗長化され、他の電流については冗長化されない場合については次のようになる。すなわち、マルチプレクサ85aは、出力端子63aから出力される出力電流OUT1に異常がないと判定されたときには、出力モジュール60の出力端子63aと出力端子83aとを接続する。マルチプレクサ85aは、出力端子63aから出力される出力電流OUT1に異常があると判定されたときには、冗長化用出力モジュール70の出力端子73aと出力端子63aとを接続して冗長化用出力モジュール70から出力電流OUT1’を出力する。また、マルチプレクサ85bは、出力端子63bから出力される出力電流OUT2に異常がないと判定されたときには、出力モジュールの出力端子63bと出力端子83bとを接続して出力電流OUT2を出力する。マルチプレクサ85bは、出力端子63bから出力される電流に異常があると判定されたときには、冗長化用出力モジュール70の出力端子73bと出力端子83bとを接続して出力電流OUT2’を出力する。出力電流OUT1’,OUT2’は、出力電流OUT1,OUT2と同一である。上述以外の出力端子から出力される電流については異常の有無にかかわらず、マルチプレクサは、出力モジュールの出力端子と出力信号選択ユニット80の出力端子とを接続する。出力電流の異常の有無については、出力モジュール60から出力切替部15に送信されるリードバックデータRByにもとづいて出力切替部15によって判定される。
上述の例では、3個の出力モジュール60がコントローラ10に接続されており、各出力モジュール60は、16個の出力端子を有している。冗長化用出力モジュール70も16個の出力端子を有している。出力モジュール60の2個の出力について冗長化の対象としているので、冗長化用出力モジュール70では、2個×3=6個の出力を冗長出力のために用いられている。なお、この例では、冗長化用出力モジュール70は16個の出力端子を有しているので、さらに10個の出力の冗長化を行うことができる。
(PLC1の動作)
本実施形態のPLC1の動作について説明する。
図4、図5(a)および図5(b)は、入出力データベース110を例示するテーブルである。
図6(a)は、予備品データベース120を例示するテーブルである。
図6(b)は、故障損失量データベース130を例示するテーブルである。
図7は、本実施形態のPLC1の動作の一部を説明するためのフローチャートである。
図8は、本実施形態のPLC1の動作の一部を説明するためのPLC1の一部の簡略化されたブロック図である。
図9は、本実施形態のPLC1の動作の一部を説明するためのフローチャートである。
図10は、本実施形態のPLC1の動作の一部を説明するためのPLC1の一部の簡略化されたブロック図である。
図11は、本実施形態のPLC1の動作の一部を説明するためのフローチャートである。
(重要度Sおよび冗長化要否信号Rの設定)
重要度Sxおよび冗長化要否信号Rxは、入力信号INxごとに設定される。各入力信号INxは、入力機器2から供給され、入力モジュール30の入力端子32a,32b,…に入力される。また、重要度Syおよび冗長化要否信号Ryは、出力信号OUTyごとに設定される。出力信号OUTyは、出力モジュール60の出力端子63a,63b,…からそれぞれ出力され、出力機器4に供給される。したがって、冗長化要否信号Rx,Ryは、入力信号INxの数および出力信号OUTyの数だけ設定される。冗長化要否信号Rx,Ryは、入出力データベース110、予備品データベース120および故障損失量データベース130にもとづいて計算される重要度Sx,Syに対して設定される。計算される重要度Sx,Syの値が大きいほど、対応する入力信号INxおよび出力信号OUTyに異常が生じた場合に、プラントに対する影響が大きいことを示す。本実施形態のPLC1では、プラントに対する影響が大きい入力信号INxや出力信号OUTyに対して冗長化を行い、影響の小さい入力信号INxや出力信号OUTyに対しては冗長化を行わない。
以下、重要度Sの計算の手順および具体例について説明する。
図4に示すように、入出力データベース110は、入出力信号欄111と、入出力信号名称欄112と、機器ID欄113と、機器影響度欄114と、プラント影響度欄115と、重要度欄116と、を含む。
入出力信号欄111には、各入力信号および出力信号の記号INx,OUTyが格納されている。機器ID欄113、機器影響度欄114、プラント影響度欄115および重要度欄116にそれぞれ格納されるデータは、入出力信号欄111に格納されている入力信号INxごと、および、出力信号OUTyごとに関連付けされている。
入出力信号名称欄112には、入力信号INxごと、および、出力信号OUTyごとに、それぞれの信号の機能や動作等の記述が格納されている。
機器ID欄113には、関連付けされている入力信号INxまたは出力信号OUTyに異常が発生した場合に、影響を受ける入力機器2、入力モジュール30、出力機器4および出力モジュール60(以下、機器等ともいう。)の識別データ(ID)が格納されている。これら機器等には、たとえば一連番号のIDが付与されている。1つの入力信号INxあるいは出力信号OUTyに対して、複数の機器等が影響を受ける場合があるので、入力信号INxまたは出力信号OUTyには、複数の機器IDが関連付けられている場合もある。
機器影響度欄114には、入力信号INxおよび出力信号OUTyに関連付けられた入力機器2、入力モジュール30、出力機器4および出力モジュール60の異常時の影響度が客観化されて格納されている。この例では、機器の影響度を機器影響度Miとして、A,B,C,Dの4段階で表している。各機器影響度Miは、図5(a)に示すように、たとえば主観にもとづいて設定し、その主観を定量化することによって客観化することができる。この例では、機器影響度Miは、影響度が大きい方から小さい方に、A,B,C,Dの順に設定されている。機器等に対する影響度が大きいとは、たとえば、その入力信号INxを入力した入力モジュール30が異常な処理を行い、異常な処理済みデータDATAxを出力した結果、そのデータによって制御される対象の他の機器等に与えるダメージ等が大きいことをいう。あるいは、コントローラ10で生成されたデータDATAyを入力した出力モジュール60が過大な電圧や電流、または過小な電圧や電流を出力機器4に供給することによって、その機器等や他の機器等に与えるダメージ等が大きいことをいう。
機器影響度MiがAランクの場合には、その入力信号INxまたは出力信号OUTyに異常が生じたときには、関連する機器等が破壊する程度の非常に大きな影響を生じるものとし、たとえば数値100が割り当てられる。機器影響度MiがBランクの場合には、その入力信号INxまたは出力信号OUTyに異常が生じたときには、関連する機器等が破壊するまでには至らないまでも、大きな影響を生じるものとし、たとえば数値70が割り当てられる。機器影響度MiがCランクの場合には、その入力信号INxまたは出力信号OUTyに異常が生じたときには、関連する機器等には、小さな影響を生じるものとし、たとえば数値40が割り当てられる。機器影響度MiがDランクの場合には、その入力信号INxまたは出力信号OUTyに異常が生じたときには、関連する機器等には、ほとんど影響を生じないものとし、たとえば数値10が割り当てられる。なお、これらの主観的な段階や定量化された値は、任意に設定することができるのはいうまでもない。
プラント影響度欄115には、入力信号INxまたは出力信号OUTyに異常が生じた場合のプラントへの影響度がプラント影響度Piとして格納されている。図5(b)に示すように、プラント影響度Piは、この例では、A,B,C,Dの4段階で表している。プラント影響度Piは、たとえば主観にもとづいて設定し、その主観を定量化することによって客観化することができる。プラント影響度Piは、影響度が大きい方から小さい方に、A,B,C,Dの順に設定されている。
たとえば、主観的な判定基準として、プラントの停止、致命的な機器の動作不良、あるいは致命的な生成物の品質低下を生じる場合には、プラント影響度PiをAランクとする。プラント影響度PiがAランクの場合には、客観的な基準値として数値100が割り当てられる。たとえば、主観的な判定基準として、機器の動作不良、生成物の品質低下、あるいは運転員への誤情報の送出を生じる場合には、プラント影響度PiをBランクとする。プラント影響度PiがBランクの場合には、客観的な基準値として数値70が割り当てられる。たとえば、主観的な判定基準として、微細な機器の動作不良や運転員への情報喪失を生じるような場合には、プラント影響度PiをCランクとする。プラント影響度PiがCランクの場合には、客観的な基準値として数値40が割り当てられる。たとえば、主観的な判定基準として、重大な影響がない場合には、プラント影響度PiをDランクとする。プラント影響度PiがDランクの場合には、客観的な基準値として数値10が割り当てられる。これらの主観的、客観的な基準は、任意に設定することができる。
重要度Sの計算には、機器やプラントへの影響度等以外に、既存のデータベースの記録を活用することもできる。PLC1を含むプラント制御システムに関連するデータベースとして予備品データベース120には、入力機器や、入力モジュール、出力機器、出力モジュールの不良発生時等のために、在庫として準備されている予備品の有無がデータとして登録されている。図6(a)に示すように、予備品データベース120は、機器ID欄121と、機器名称欄122と、予備品有無欄123と、予備品係数欄124と、を含む。機器ID欄121に格納されているIDは、入出力データベース110の機器IDに関連付けられている。
機器名称欄122には、機器IDに対応する機器の名称が記述されている。機器の名称には、入力モジュールや出力モジュールの一般的な名称であってもよく、製品の型式名称であってもよい。
予備品有無欄123には、関連付けられている機器IDの予備品の在庫の有無が記述されている。予備品の有無には、予備品係数欄124のように、予備品係数Fbが関連付けられている。予備品係数Fbは、予備品がある場合には、数値0.2が関連付けられ、予備品がない場合には、数値1が関連付けられている。予備品の有無に関して関連付けられる数値は、上述に限らず任意に設定することができる。
PLC1に関連するデータベースとして故障損失量データベース130には、機器IDを有するそれぞれの機器に関して、故障発生時の損失を客観的に表している。図6(b)に示すように、故障損失量データベース130は、機器ID欄131と、機器名称欄132と、修理費用欄133と、修理時間欄134と、1時間当たり損失額欄135と、故障損失量欄136と、を含む。機器ID欄131には、入出力データベース110の機器IDに関連付けられているIDが入力されている。
機器名称欄132には、機器IDに対応する機器の名称が格納されている。
修理費用欄133には、対応する機器IDを有する機器が故障した際に必要となる修理費用C1が入力されている。各機器の修理費用C1(ID)は、たとえば修理に要した実績値を用いてもよい。
修理時間欄134には、対応する機器IDを有する機器が故障した場合に、修理に要する時間Tが格納されている。各機器の修理時間T(ID)は、たとえば修理に要した実績値を用いることができる。
1時間当たり損失額欄135には、対応する機器IDを有する機器が故障して、1時間プラントが停止することによって発生する損失額C2(ID)が入力されている。
故障損失量欄136には、対応する機器IDを有する機器が故障した場合に発生し得る損失量を定量的に表すために(1)式によって計算される故障損失量C(ID)の値が格納される。
C(ID)=C1(ID)+T(ID)×C2(ID) (1)
入出力データベース110の重要度は、入力信号および出力信号ごとに、機器ごとの機器影響度、故障損失量および予備品係数の積をすべての機器について積算したものに、プラント影響度を加算したものとして定義する。具体的には、重要度は、(2)式によって求められる。
予備品データベース120は、機器等の在庫状況によってリアルタイムに、あるいは定期的に更新される。また、故障損失量データベース130も修理時間等の実績値にもとづいて設定されるので、リアルタイムに、あるいは定期的に更新される。したがって、これらのデータベースが更新されるタイミングで、入力信号INxごとおよび出力信号OUTyごとに重要度Sx,Syは計算され更新され、更新された重要度Sx,Syにもとづいて、最新の冗長化要否信号Rx,Ryの設定を行うことができる。
具体的には、図4において、出力信号OUT1の重要度は、次のように求められる。出力信号OUT1では、影響を及ぼす出力モジュールは、機器IDとして“001”、“003”、“005”を有する機器等である。機器ID“001”および“005”を有する機器Aおよび機器Eは、予備品がなく、機器ID“003”を有する機器Cは、予備品を有している(図6(a))。
機器ID“001”について、100(機器影響度)×123(故障損失量)×1(予備品有無)=12300
機器ID“003”について、70(機器影響度)×63(故障損失量)×0.2(予備品有無)=882
機器ID“005”について、40(機器影響度)×96(故障損失量)×1(予備品有無)=3840
したがって、出力信号OUT1の重要度は、(12300+882+3840)/100+100(プラント影響度)=270となる。他の入力信号および出力信号も同様に計算される。
コントローラ10の冗長化信号決定部11では、重要度Sx,Syのしきい値Sthが設定されている。冗長化信号決定部11は、冗長化要否信号Rx,Ryを生成する。たとえば、重要度Sxがしきい値Sth以上の場合に、冗長化信号決定部11は、冗長化要否信号RをHレベルに設定する。重要度Sxがしきい値Sthよりも小さい場合には、冗長化信号決定部11は、冗長化要否信号RをLレベルに設定する。図4の例において、しきい値Sthをたとえば150とすると、入力信号IN1および出力信号OUT1〜OUT3に対して、冗長化要否信号Rx,RyはHレベルに設定され、入力信号IN2,IN3および出力信号OUT4〜OUT6に対して、冗長化要否信号Rx,RyはLレベルに設定される。
冗長化信号決定部11は、入力切替部13および入力信号選択ユニット50に対して、入力信号INxごとに冗長化要否を決定する。具体的には、冗長化信号決定部11は、入力切替部13の異常検出の動作または非動作を設定する。また、冗長化信号決定部11は、入力信号選択ユニット50のマルチプレクサの接続を設定する。マルチプレクサの設定は、冗長化信号決定部11から出力される冗長化要否信号Rxにもとづいてあらかじめ設定される。
冗長化信号決定部11は、出力切替部15および出力信号選択ユニット80に対して、出力信号に関する冗長化要否を決定する。具体的には、出力切替部15の異常検出の動作または非動作を設定する。また、冗長化信号決定部11は、出力信号選択ユニット80のマルチプレクサの接続を設定する。マルチプレクサの設定は、冗長化要否信号Ryにもとづいてあらかじめ設定される。
図7を用いて、冗長化信号決定部11が重要度Sx,Syおよび冗長化要否信号Rx,Ryを設定する手順について説明する。
ステップS1において、冗長化信号決定部11は、入出力データベース110から、入力信号INxごとに、その入力信号INxに関連付けられている機器ID、機器影響度Mi(ID)およびプラント影響度Pi(x)を読み出す。また、冗長化信号決定部11は、入出力データベース110から、出力信号OUTyごとに、その出力信号OUTyに関連付けられている機器ID、機器影響度Mi(ID)およびプラント影響度Pi(y)を読み出す。
ステップS2において、冗長化信号決定部11は、予備品データベース120から機器IDに関連付けられている予備品係数Fb(ID)を読み出す。
ステップS3において、冗長化信号決定部11は、故障損失量データベース130から機器IDに関連付けられている故障損失量C(ID)を読み出す。
ステップS4において、冗長化信号決定部11は、ステップS1〜S3において読み出した各データを式(2)に代入して、入力信号INxの重要度Sxおよび出力信号OUTyの重要度Syをそれぞれ計算して入出力データベース110を更新する。
ステップS5において、冗長化信号決定部11は、ステップS4で計算した入力信号INxごとの重要度Sxおよび出力信号OUTyごとの重要度Syをしきい値Sthと比較する。
ステップS6において、冗長化信号決定部11は、入力信号INxに応じた冗長化要否信号Rxおよび出力信号OUTyに応じた冗長化要否信号Ryを生成する。冗長化信号決定部11は、冗長化要否信号Rxにしたがって、入力信号選択ユニット50のマルチプレクサ55の接続位置を設定する。また、冗長化信号決定部11は、冗長化要否信号Ryにしたがって、冗長化対象の、出力信号選択ユニット80のマルチプレクサ85a,85b,…を選択する。
このようにして、冗長化信号決定部11では、重要度Sx,Syを計算し、計算された重要度Sx,Syにもとづいて冗長化要否信号Rx,Ryを生成し、各部の設定を行う。
本実施形態のPLC1では、冗長化信号決定部11において生成される冗長化要否信号Rx,Ryにしたがって、入力モジュール30、冗長化用入力モジュール40、入力信号選択ユニット50、出力モジュール60、冗長化用出力モジュール70および出力信号選択ユニット80の動作が設定される。以下では、入力側の動作と出力側の動作とに分けて説明する。入力側には、入力モジュール30、冗長化用入力モジュール40および入力信号選択ユニット50を含んでいる。出力側には、出力モジュール60、冗長化用出力モジュール70および出力信号選択ユニット80を含んでいる。
(入力側の動作)
図8には、入力側の動作を説明するために、簡素化されたコントローラ10の一部、入力モジュール30、冗長化用入力モジュール40、および入力信号選択ユニット50が示されている。この例では、2つの入力機器(たとえばセンサ)から出力される信号を入力して、それぞれ所定の処理を施して入力処理部12に供給する場合について説明する。2つの入力機器のうち一方は、冗長化を要する入力信号を出力し、他方は冗長化を要しない入力信号を出力する。以下では、入力信号IN1を冗長化し、入力信号IN2を冗長化しないものとして説明する。
図8に示すように、入力信号IN1は、入力モジュール30の入力端子32aを介して処理回路31に入力される。処理回路31は、入力信号IN1をアナログディジタル変換し、処理済みのデータDATA1を出力する。データDATA1は、入力切替部13に入力される。
入力信号IN2は、入力モジュール30の入力端子32bを介して処理回路31に入力される。処理回路31は、入力信号IN2をアナログディジタル変換し、処理済みのデータDATA2として出力する。データDATA2は、入力切替部13に入力される。
入力信号選択ユニット50のマルチプレクサ55は、冗長化要否信号R1によって、入力信号IN1を出力するように設定されている。したがって、入力信号IN1は、マルチプレクサ55を介して、冗長化用入力モジュール40にも入力される。入力信号IN1は、冗長化用入力モジュール40の入力端子42を介して処理回路41に入力される。処理回路41は、入力信号IN1をアナログディジタル変換し、データDATA1’として出力する。データDATA1’は、入力モジュール30から出力される正常な処理済みデータDATA1と同一であることが保証されている。
入力切替部13は、異常検出部21と、スイッチ23とを含んでいる。スイッチ23の一方の入力は、異常検出部21の出力に接続されている。スイッチ23の他方の入力は、冗長化用入力モジュール40の出力端子43に接続されている。スイッチ23の出力は、入力処理部12に接続されている。つまり、入力切替部13から出力されるデータは、スイッチ23によって、入力モジュール30から出力されたデータDATA1または冗長化用入力モジュール40から出力されたデータDATA1’のいずれかから選択されたデータである。
異常検出部21は、冗長化要否信号Rxにもとづいて、データDATAxが冗長化の対象となる入力信号INxか否かを判定する。異常検出部21は、冗長化の対象となる入力信号INxに関するデータDATAxが入力される場合に、そのデータDATAxが異常であるか否かを判定する。この例では、異常検出部21は、データDATA1に異常がないと判定した場合には、スイッチ23によって異常検出部21の出力を入力処理部12に接続する。入力切替部13は、入力モジュール30によって処理されたデータDATA1を出力する。異常検出部21は、処理済みのデータDATA1に異常があると判定した場合には、スイッチ23によって冗長化用入力モジュール40の出力端子43を入力処理部12に接続する。入力切替部13は、冗長化用入力モジュール40によって処理されたデータDATA1’を出力する。上述したように、冗長化用入力モジュール40から出力される処理済みのデータDATA1’は、入力モジュール30から出力される正常なデータDATA1と同一のデータである。
異常検出部21は、入力される処理済みデータが冗長化の対象でない入力信号に関するデータである場合には、そのデータの異常の有無にかかわらず、そのまま入力処理部12にそのデータを供給する。この例では、異常検出部21は、処理済みのデータDATA2の異常の有無にかかわらず、スイッチ23によって異常検出部21の出力を入力処理部12に接続する。入力処理部12には、不正なデータが入力され得るが、入力処理部12では、異常を含むデータが入力されることによってたとえば割込イベントが発生し、その処理を中止等する。冗長化の対照ではない入力信号に対する処理は、重要度の低いデータの処理なので、コントローラ10は、そのまま次の処理を実行してもかまわない。
図9を用いて、入力側の一連の動作について説明する。この例では、入力信号IN1を読み込んで処理した後、入力信号IN2を読み込んで処理する場合について説明する。入力信号選択ユニット50のマルチプレクサ55は、一方の入力信号IN1を冗長化用入力モジュール40に供給することをあらかじめ選択している。
図9に示すように、ステップS10において、入力モジュール30は、一方の入力信号IN1を入力する。入力された入力信号IN1は、処理回路31によって読み込まれ、所定の処理が実行され、データDATA1に変換される。
ステップS11において、コントローラ10は、この入力信号IN1が冗長化の対象であるか否かを判断する。この例では、入力信号IN1は、冗長化の対象であるため、処理は、次のステップS12に遷移する。
ステップS12において、入力切替部13の異常検出部21は、処理済みデータDATA1に異常があるか否かを判定する。異常検出部21で異常がないと判断された場合には、処理は、次のステップS13に遷移する。
ステップS13において、異常検出部21は、スイッチ23を異常検出部21の出力に接続する。
ステップS14において、入力切替部13は、処理済みのデータDATA1を入力処理部12に供給する。
異常検出部21において異常ありと判定された場合には、処理は、ステップS15に遷移する。ステップS15において、冗長化用入力モジュール40の処理回路41は、入力信号IN1を読み込んで、所定の処理を実行する。冗長化用入力モジュール40では、入力モジュール30で正常に生成された処理済みデータDATA1と同一の処理済みデータDATA1’が生成される。
ステップS16において、異常検出部21は、スイッチ23を冗長化用入力モジュール40の出力に接続する。入力切替部13は、処理済みデータDATA1’(=DATA1)を入力処理部12に供給する。
入力信号IN1の処理に続いて、入力信号IN2が入力モジュール30に入力される。入力信号IN1と同様に、入力モジュール30の処理回路31において所定の処理が行われる(ステップS10)。処理済みのデータDATA2は、入力切替部13において、冗長化の対象か否かが判定される(ステップS11)。データDATA2は、冗長化の対象ではないため、異常検出部21において異常の有無を検出することなく、処理は、ステップS13に遷移する。
ステップS13において、異常検出部21は、スイッチ23によって異常検出部21の出力を入力処理部に接続する。ステップS14において、入力処理部12は、DATA2を入力し、所定の処理を行うが、入力処理部12は、たとえば割込処理等の異常処理を実行した後、他の処理等を行う。
このようにして、入力側の各部は、冗長化要否信号によって冗長化を要するとされた入力信号の場合には、異常検出時に冗長化用入力モジュール40の出力を供給するようにスイッチを切り替える。冗長化を要しないとされた入力信号の場合には、異常の有無にかかわらず入力モジュールの出力をそのまま供給する。つまり、入力される信号ごとに冗長化するか否かを重要度にもとづいて判断することによって、入力モジュール単位の冗長化を不要とすることができる。
なお、入力側の冗長化の手順は上述に限られないのはいうまでもない。たとえば、入力信号の読み込みおよび変換を、入力モジュール30と同時に冗長化用入力モジュール40で行うようにしてもよい。また、上述では、冗長化を要する入力信号IN1の処理に続いて、冗長化を要さない入力信号IN2の処理を行う場合について説明したが、この例に限定されない。たとえば、冗長化を要する入力信号を続けて処理してもよいし、冗長化を要さない入力信号を続けて処理してもよい。複数の入力信号をシーケンシャルに読み込む場合に限らず、いくつかの入力信号を同時に読み込む等してももちろんかまわない。
(出力側の動作)
図10には、出力側の動作を説明するため簡素化されたコントローラ10の一部、出力モジュール60、冗長化用出力モジュール70、および出力信号選択ユニット80が示されている。この例では、出力モジュール60によって、コントローラ10の出力処理部14から出力される2つのデータを、2つの出力機器(たとえばアクチュエータ)を駆動する電流に変換して出力する場合について説明する。入力側の場合と同様に、以下では、一方の出力電流OUT3を冗長化し、他方の出力電流OUT4を冗長化しないものとして説明する。
図10に示すように、出力処理部14は、出力電流OUT3に対応するディジタル形式のデータDATA3および出力電流OUT4に対応するディジタル形式のデータDATA4を順次出力する。これらのデータDATA3,DATA4は、出力モジュール60の処理回路61によって、それぞれ出力信号OUT3,OUT4に順次変換される。
出力処理部14から出力されたデータDATA3,DATA4は、出力切替部15に入力される。データDATA3,DATA4は、出力切替部15のスイッチ27を介して、出力モジュール60に入力される。出力モジュール60に入力されたデータDATA3,DATA4は、出力モジュール60の処理回路61によって、所望の電流値を有する出力電流OUT3,OUT4にそれぞれ変換される。一方の出力電流OUT3は、出力モジュール60の出力端子63aから出力される。他方の出力電流OUT4は、出力モジュール60の出力端子63bから出力される。
出力切替部15のスイッチ27は、1つの入力を2つの出力の間で切り替えて出力する。スイッチ27の一方の出力は、出力モジュール60に接続されている。スイッチ27の他方の出力は、冗長化用出力モジュール70に接続されている。
出力切替部15は、異常検出部25を含む。異常検出部25は、スイッチ27のオンオフを制御する。異常検出部25には、出力モジュール60から出力される電流値がディジタルデータに再変換されてリードバックデータRB3,RB4として入力される。異常検出部25では、リードバックデータRB3,RB4に異常があるか否かを判定し、異常がないときにはスイッチ27の出力を出力モジュール60の入力に接続する。リードバックデータRB3,RB4に異常があるときには、スイッチ27の出力を切替えて冗長化用出力モジュール70の入力に接続する。
異常検出部25は、出力切替部15に入力されたデータごとに、冗長化を要する出力信号であるか否かを判定し、その結果にしたがって、スイッチ27を切り替えるか否かを決定する。冗長化要否信号RyがHレベル(冗長化を要する)に設定されているデータDATA3に対しては、出力モジュール60における変換データに異常があるか否かを判定する。異常検出部25は、出力モジュール60において変換された出力信号OUT3に異常がある場合には、スイッチ27を冗長化用出力モジュール70の入力に接続する。異常検出部25は、出力モジュール60のおいて変換された出力信号OUT3に異常がない場合には、スイッチ27を出力モジュール60の入力に接続する。
異常検出部25は、冗長化要否信号RyがLレベル(冗長化を要さない)に設定されているデータDATA4に対しては、出力モジュール60における変換データに異常があるか否かを判定しない。異常検出部25は、出力モジュール60において変換されたデータの異常の有無にかかわらず、スイッチ27を出力モジュール60の入力に接続する。
出力モジュール60は、出力切替部15からデータDATA3,DATA4を供給されて、これらのデータDATA3,DATA4をそれぞれ出力電流OUT3,OUT4に変換する。出力モジュール60は、変換した出力電流OUT3,OUT4を再度ディジタルデータに変換する。出力モジュール60は、出力電流OUT3をリードバックデータRB3に変換し、出力電流OUT4をリードバックデータRB4に変換する。出力モジュール60は、リードバックデータ出力端子64からリードバックデータRB3,RB4を出力する。リードバックデータRB3,RB4は、出力切替部15の異常検出部25に入力され、異常検出部25は、リードバックデータRB3,RB4の異常有無を検出する。なお、出力モジュール60は、冗長化を要しないものと設定されている出力信号については、出力電流へ変換後、リードバックデータへの再変換を行わないようにしてもよい。
出力モジュール60の出力端子63a,63bは、出力信号選択ユニット80のマルチプレクサ85a,85bのそれぞれ一方の入力に接続されている入力端子82a,82bに接続されている。
冗長化用出力モジュール70は、出力切替部15からデータDATA3を供給されて、出力電流OUT3’に変換して出力する。冗長化用出力モジュール70の処理回路71における処理は、出力モジュール60の処理回路61における処理と同一である。したがって、冗長化用出力モジュール70から出力される出力電流OUT3’は、出力モジュール60から正常に出力される出力電流OUT3と同一である。
冗長化用出力モジュール70の出力端子73は、出力信号選択ユニット80のマルチプレクサ85a,85bの他方の入力に接続されている冗長入力端子84に接続されている。
出力信号選択ユニット80は、2つのマルチプレクサ85a,85bを含んでいる。一方のマルチプレクサ85aは、出力モジュール60の出力端子83aおよび冗長化用出力モジュール70の出力端子73を切り替えて出力する。他方のマルチプレクサ85bは、出力モジュール60の出力端子83bおよび冗長化用出力モジュール70の出力端子73を切り替えて出力する。冗長化を要する出力電流OUT3が流れるマルチプレクサ85aは、出力を、冗長化用出力モジュール70の出力との間で切り替える。冗長化を要しない出力電流OUT4が流れるマルチプレクサ85bは、出力を出力モジュール60の出力との接続に固定されている。
冗長化を要する出力電流OUT3が流れるマルチプレクサ85aは、出力切替部15の異常検出部25の出力に接続されている。異常検出部25は、リードバックデータRB3に異常が認められないときには、出力を、出力モジュール60からの出力に接続する。リードバックデータRB3に異常が認められたときには、マルチプレクサ85aは、異常検出部25の出力にもとづいて、出力を、冗長化用出力モジュール70からの出力に切り替える。
冗長化を要しない出力電流OUT4が流れるマルチプレクサ85bは、出力切替部15の異常検出部25の出力に接続されているが、リードバックデータRB4の異常の有無にかかわらず、出力を、出力モジュール60の出力に接続する。
図11を用いて出力側の一連の動作について説明する。この例では、データDATA3を読み込んで処理した後、データDATA4を読み込んで処理する場合について説明する。
図11に示すように、ステップS20において、出力切替部15は、スイッチ27を出力モジュール60の入力端子62に接続する。コントローラ10の出力処理部14は、ラダープログラムにしたがって、データDATA3を出力する。データDATA3は、出力モジュール60に供給される。
ステップS21において、出力モジュール60の処理回路61は、入力されたデータDATA3に所定の処理を施して、所望の電流値を有する出力電流OUT3に変換する。
ステップS22において、コントローラ10は、処理の対象のデータDATA3が冗長化の対象であるか否かを判断する。データDATA3について、冗長化要否信号RがHレベル(冗長化を要する)であると判定した場合には、次のステップS23へ遷移する。
ステップS23において、処理回路61は、一旦変換した電流を再度ディジタルデータに変換して、変換されたデータをリードバックデータRB3として異常検出部25に送信する。
ステップS24において、異常検出部25は、出力モジュール60において変換された出力電流OUT3には、異常がないと判断した場合には、スイッチ27の位置をそのままに維持し、次のステップS25に遷移する。
ステップS25において、異常検出部25は、出力信号選択ユニット80のマルチプレクサ85aの出力を出力モジュール60の出力が接続される入力端子82aに接続する。
ステップS26において、出力モジュール60は、出力電流OUT3によって出力機器を駆動する。
ステップS23でリードバックデータRB3に異常が認められた場合には、処理は、ステップS27に遷移する。ステップS27において、異常検出部25は、スイッチ27を切替えて、冗長化用出力モジュール70の入力端子72に接続する。
ステップS28において、異常検出部25は、マルチプレクサ85aの出力を切替えて、冗長化用出力モジュール70の出力に接続されている入力端子84に接続する。
ステップS29において、冗長化用出力モジュール70の処理回路71は、入力されたデータを変換して所望の電流値を有する電流として出力する。
出力処理部14から、冗長化の対象でないデータDATA4が出力された場合には、ステップS20,S21は、上述と同様に処理されて、ステップS22において、冗長化不要と判定される。冗長化を要しないと判定されたデータDATA4については、リードバックデータRB4による異常有無の判定を行うことなく、あるいは異常有無の判定結果にかかわらず、出力電流は、出力モジュール60から出力される。
ステップS25において、出力切替部15のスイッチ27は、そのまま出力モジュール60のモジュールの入力に接続される。
本実施形態のPLC1の作用および効果について説明する。
本実施形態のPLC1は、入力信号ごとおよび出力信号ごとに、機器影響度やプラント影響度等を考慮して重要度を計算する冗長化信号決定部11を備えている。また、PLC1は、冗長化信号決定部11から供給される冗長化要否信号にもとづいて動作、非動作が設定される入力切替部13と、入力信号選択ユニット50と、出力切替部15と、出力信号選択ユニット80と、を備えている。そのため、入力信号ごとおよび出力信号ごとに、冗長化を要するか否かを定量的に決定することができ、冗長化を要する入力信号や出力信号に応じて冗長化用入力モジュールを用意することができる。したがって、故障を想定して、すべての入力モジュールおよび出力モジュールについて冗長化する必要がないので、低コストでPLC1を用いた信頼度の高いシステムを構築することができる。
本実施形態のPLC1では、冗長化を判定するための重要度の計算に、入力信号や出力信号の機器等に対する影響度に限らず、機器の予備品の準備状況をリアルタイムで反映させた予備品データベースのデータを反映させている。また、重要度の計算に、プラントで稼働している機器が故障等した際の損失額にもとづいて算出される故障損失量データベースのデータを反映させている。そのため、重要度の決定には、プラントの現在および過去の稼働状況を定量的に反映させることができるとともに、リアルタイム性の高い部分冗長化が可能となり、信頼性の高いシステムを構築することができる。
以上説明した実施形態によれば、プラント操業に対する影響度が高い入出力信号や、故障時の損害額(損失量)が高い入出力信号等を選択し、入出力信号単位で二重化する部分的冗長化によって、低コストで信頼性の高いプログラマブルコントローラ、冗長化方法およびコントローラを実現することができる。
以上、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他のさまざまな形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明およびその等価物の範囲に含まれる。また、前述の各実施形態は、相互に組み合わせて実施することができる。