多重系コントローラシステムとその運転方法
【課題】多重系のコントローラシステムにおいて、ネットワークからの不正アクセスを防止し、高い可用性を維持する。
【解決手段】プロセス入出力装置を介して制御対象に接続されたCPUと,CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系、他方のコントローラを従系し、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、コントローラは、制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、コントローラ間に設けられた多重化リンクと、トラフィック監視機能の検知に応じて多重化リンクを用いて制御系ネットワークとの通信を行う二重化回路とを備える。
【解決手段】プロセス入出力装置を介して制御対象に接続されたCPUと,CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系、他方のコントローラを従系し、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、コントローラは、制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、コントローラ間に設けられた多重化リンクと、トラフィック監視機能の検知に応じて多重化リンクを用いて制御系ネットワークとの通信を行う二重化回路とを備える。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、発電所などの高い信頼性が要求されるところで使用される多重系コントローラシステムとその運転方法に関する。
【背景技術】
【0002】
プログラマブルコントローラは、発電所、製鉄所、上下水道施設、工場など各種機器の制御に使用されている。機器に備え付けられたセンサから各種のデータを取り込み、そのデータに基づいて計算を実行し、その計算結果をアクチュエータなどに向けて出力することにより制御を行う。
【0003】
コントローラは、正確な制御を行うために高いリアルタイム性が求められる。また、コントローラが停止や誤動作をすると、たとえば、発電所の場合、発電設備の破壊、電力供給の停止など多大な被害や危険が発生する可能性があり、高い信頼性、可用性も要求される。
【0004】
高い信頼性、可用性を実現するために、コントローラを複数使用して多重化構成をとることが行われてきた。特許文献1では、二重系コントローラにおいて、片方のコントローラで障害が発生したときにもう一方のコントローラが処理を引き継ぐ。
【0005】
一方、近年では、コントローラがネットワークに接続されることが一層多くなってきている。コントローラをネットワークに接続する目的はいろいろある。複数のコントローラを連携して動作させるためであったり、コントローラのデータをパソコンなどに収集して、そのディスプレイに表示させるためであったり、遠隔地からコントローラシステムの管理、保守を行うためだったりする。
【0006】
いずれにせよ、コントローラのネットワークへの接続が進むことにより、セキュリティという新たな問題が重大化してきている。ネットワークを通して、コントローラに対して不正なアクセスが行われ、コントローラの停止、誤動作、データの改ざん、データの漏洩などに発展する可能性が出てきている。
【0007】
この点に関し、一般的な計算機では古くからネットワーク接続が行われており、セキュリティへの対策技術も知られている。特許文献2では、ファイアウォールにより外部ネットワークから内部ネットワークへの不正アクセスを防止する。
【0008】
特許文献3では、現用サーバと待機サーバがある多重系のシステムにおいて、不正アクセスを含む原因により現用サーバが異常状態を検出したときに、待機系サーバに切り替えてサービスを継続する。
【0009】
特許文献4では、多重系の計算機システムで稼動系サーバに異常が発生したときに待機系サーバに異常のないデータをコピーして処理を継続する。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特許第2732668号
【特許文献2】特開2001−236278号公報
【特許文献3】特開2001−256138号公報
【特許文献4】特開2003−248596号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
特許文献1の二重系のコントローラでは、故障が検出されたときに故障部分を切り離すが、ネットワークからの不正アクセス行為を防ぐ方法、さらには不正アクセスがあったときの対応に関しては考慮されていない。
【0012】
特許文献2、特許文献4では、外部ネットワークからの不正アクセスを防ぐために、外部ネットワークの入り口にファイアウォールやゲートウェイなどの装置を置いているが、できればこれらの特別な装置を付加することなく不正アクセスを防ぎたい。
【0013】
特許文献3、特許文献4は、現用サーバに異常が発生したときに待機サーバに切り替えて処理を続行することが述べられている。しかし、待機サーバにも不正アクセスが行われていて異常が発生していた場合に関して考慮されていない。また、待機サーバに切り替えたあと、待機サーバも同様な不正アクセスの攻撃を受ける可能性がある。
【0014】
以上のことから、本発明の目的は、多重系のコントローラシステムにおいて、ファイアウォールやゲートウェイなどの特別な装置を付加することなく不正アクセスを防ぐとともに、処理を行うコントローラを切り替えたときにも、処理を行うことになったコントローラに対しての攻撃を防ぐことができる多重系コントローラシステムとその運転方法を提供するものである。
【課題を解決するための手段】
【0015】
以上のことから本発明においては、プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつプロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として制御対象の操作を行い他方のコントローラを従系として待機させると共に、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、コントローラは、制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、コントローラ間に設けられた多重化リンクと、トラフィック監視機能の検知に応じて多重化リンクを用いて制御系ネットワークとの通信を行う二重化回路とを備える。
【0016】
また、トラフィック監視機能は、ネットワークアダプタが受信する通信による不正アクセスを、その種別に応じて危険度の数値評価し、危険度評価値が第1の閾値を超えたことを以って、ネットワークアダプタによる制御系ネットワークとの通信を遮断し、多重化リンクを用いた制御系ネットワークとの通信を行う。
【0017】
また、トラフィック監視機能は、危険度評価値が第1の閾値よりも大きな値の第2の閾値を超えたことを以って、主系としていたコントローラを停止し、従系としていたコントローラによる制御対象の操作を実行する。
【0018】
また、制御系ネットワークとの通信を行い、多重化リンクを用いて通信を転送する側のコントローラの二重化回路は、フィルタ手段により受信した通信を選別した後に多重化リンクを通して他のコントローラに転送する。
【0019】
また、トラフィック監視機能は、危険評価値を記憶する手段と、危険度評価値の閾値を記憶する手段を持ち、不正アクセスを検知する毎に不正アクセスの危険度を危険度評価値に加算し、多重化リンクを通して各コントローラの危険度評価値をお互いに通信しあい、危険度評価値が閾値を超えたときに、危険度評価値が最も低いコントローラを主系モードとする。
【0020】
また、コントローラは、実際の制御を行う制御プログラムと、制御プログラムと似せた通信を行う擬似制御プログラムとを有し、主系としていたコントローラを停止するときに、今まで実行していた制御プログラムに代えて擬似制御プログラムを継続実行する。
【0021】
また、トラフィック監視機能は、制御系ネットワークからの不正アクセスを検知するために、通信に関して送信元、コマンド、通信周期を用いたトラフィック監視ルールを準備しており、受信する通信が当該監視ルールに違反することを持って不正アクセスを検知する。
【0022】
また、トラフィック監視ルールは、通信の許可と禁止の区別情報と共に、通信禁止のときの危険度を数値化して保持している。
【0023】
また、主系としていたコントローラを停止し、従系としていたコントローラによる制御対象の操作を実行するときに、従系モードにあったコントローラは、制御系ネットワークからコントローラが実行するプログラムを受信し、プログラムを主系モードにあったコントローラに対して多重リンクを通して転送し、主系モードにあったコントローラのプログラムを転送されたプログラムによって更新する。
【0024】
以上のことから本発明においては、プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつプロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として制御対象の操作を行い他方のコントローラを従系として待機させると共に、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムの運転方法において、主系コントローラにより制御対象の操作を行い従系コントローラが待機している正常モードと、主系コントローラはそのネットワークアダプタを使用する制御系ネットワークとの通信を行わず、従系コントローラがそのネットワークアダプタを使用して実行した制御系ネットワークとの通信が多重化リンクを経由して転送送受信される転送モードと、従系としていたコントローラを主系として制御対象の操作を行い主系としていたコントローラを従系として待機させる主従反転モードとを順次切替実行すると共に、モードの切替を、制御系ネットワークからの通信による不正アクセスの進展度合いに応じて行う。
【0025】
また、不正アクセスの進展度合いを、通信の種別に応じて危険度を数値評価し、危険度評価値の大きさで判断する。
【発明の効果】
【0026】
本発明によれば、不正アクセスにより異常状態となったときにも動作を継続することが可能である。
【0027】
また本発明の実施例によれば、ファイアウォールやゲートウェイなどの特別な装置を付加することなく、不正アクセスを防ぐことが可能である。
【0028】
また、本発明の実施例によれば、不正アクセスにより異常状態となったときに、より正常なコントローラで処理を続行することが可能である。
【0029】
また、本発明の実施例によれば、制御を行うコントローラを切り替えたときに、もともと制御を行っていたコントローラが囮となることにより、新たに制御を行うコントローラに対しての攻撃を防ぐことができる。
【図面の簡単な説明】
【0030】
【図1】多重系プログラマブルコントローラシステムの一例を示す図。
【図2】ネットワークアダプタの構成を示す図。
【図3】トラフィック監視ルール格納部に記憶された監視ルールの一例を示す図。
【図4】トラフィック監視回路バッファのレジスタに格納される通信データ例を示す図。。
【図5】二重化制御回路25の一例を示す図。
【図6】コントローラのメモリ29に格納されている制御プログラムの一例を示す図。
【図7】ネット受信処理のアルゴリズムを示す図。
【図8】ネット送信処理のアルゴリズムを示す図。
【図9】リンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズムを示す図。
【図10】ネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムを示す図。
【図11】図1のフィルタが使用するフィルタ条件のテーブルの一例を示す図。
【図12】図1のログ領域に書き込まれるログの内容の一例を示す図。
【図13】図1のログ監視部が使用するログ監視ルールの一例を示す図。
【図14】図1中のログ監視部のアルゴリズムの一例を示す図。
【図15】主系ダウン時のアルゴリズムを示す図。
【図16】擬似制御プログラムのアルゴリズムを示す図。
【図17】主系切り替えのアルゴリズムを示す図。
【図18】プログラマブルコントローラの各部の動きを時間の経過と共に示した図。
【発明を実施するための形態】
【0031】
以下、図面を参照して本発明の実施例を説明する。
【実施例】
【0032】
図1は、本発明装置の多重系プログラマブルコントローラシステムの一実施例の構成図である。図1において、11、12が多重系を構成するプログラマブルコントローラである。両方のプログラマブルコントローラは同じ構成をしている。初期状態ではいずれかが主系、もう片方が従系の多重系の構成となっている。どちらが主系で、どちらが従系になるかは、スイッチ等により決定することができる。ここではコントローラ11が主系、コントローラ12が従系になっているとする。
【0033】
38はプロセスIOであり、制御対象である発電機や製鉄の装置などのプロセスのアクチュエータやセンサと接続するための入出力装置である。プロセスIO38は、コントローラ11、12内のCPU24に接続されて、センサからの信号をコントローラに取り込み、コントローラでの演算結果をプラントのアクチュエータに伝達する。
【0034】
36は制御系ネットワークであり、コントローラ11、12に対してコマンドを送信したり、コントローラ間でデータを通信したり、コントローラのデータをサーバ35に送信したりするのに用いられる。制御系ネットワーク36は、コントローラ11、12内のネットワークアダプタ21に接続される。なお、ネットワークアダプタ21の機能については、図2を用いて別途説明する。
【0035】
35は制御系ネットワーク36に接続された制御サーバであり、コントローラ11,12に対して制御の指示をコマンドとして送信したり、コントローラ11,12から送られてくるデータを蓄積したりする。
【0036】
34は制御サーバ35に接続された情報系ネットワークであり、生産計画情報、ディスプレイ表示用データなどが送信される。
【0037】
31は制御サーバ35に接続されたヒューマンマシンインタフェース(HMI)計算機であり、制御対象プロセス、コントローラ11,12の状態の表示や制御の指示を行う。
【0038】
33はインターネットなどの広域ネットワークであり、このネットワークを通じて遠隔監視や遠隔保守などを行う。32はファイアウォールであり、インターネット33と情報系ネットワーク34との間のデータ転送を行うとともにインターネット33からの不正アクセスを防ぐ役割を果たす。
【0039】
ただし、ファイアウォール32によっても不正アクセスを完全に防ぐことは難しい。ファイアウォールでは正常と判断されるパケットに隠して不正な情報を送信し、あるいは情報系ネットワーク34などに直接に不正な計算機を接続してアクセスを試みるようなものに関しては防ぐことができない。
【0040】
本発明のシステムを構成する主要なハード部分は概略以上のようである。ここで、本発明で対象としているのはプログラマブルコントローラである。このため、プロセス入出力装置を備え、ここを介して制御対象から一定周期でプロセス信号を入手し、かつ一定周期でアクチュエータに操作信号を与えている。一般の計算機とは、この点の構成が大きく相違する。
【0041】
係るプログラマブルコントローラは、今までであれば工場内の独立した計算機設備として管理され、他の計算機設備と連携されることは少なかった。然しながら、プログラマブルコントローラが汎用化装置で構成されるようになり、広域化制御などの目的で通信系が取り込まれたことによって、インターネットからもアクセス可能な環境で使用されることになった。
【0042】
以上のことから本発明では、インターネットからもアクセス可能な多重系プログラマブルコントローラを対象とし、外部からの攻撃に対しても正しく動作可能なプログラマブルコントローラとする。以下、このために必要なコントローラ11、12を構成する具体的なハード部分について説明する。
【0043】
まず、コントローラ11,12において、21はコントローラ11、12が制御系ネットワーク36と通信するのに用いられるネットワークアダプタである。ネットワークアダプタ21中には、制御系ネットワーク36から送られてくる通信を監視するトラフィック監視回路23と、コントローラ11の制御系ネットワーク36との通信を遮断する遮断回路22などがある。ネットワークアダプタ21の機能については、図2を用いて別途説明する。
【0044】
24は、コントローラの処理を実行するCPUである。コントローラの処理には制御プログラムの実行、プロセスIO38の入出力、制御系ネットワーク36との通信、多重系の構成制御などの処理がある。
【0045】
25は二重化制御回路であり、コントローラ11と12の二重化制御回路25の間が、多重化リンク37で接続されている。多重化リンク37は、多重系のコントローラ間において、コントローラの状態の通知、データの受け渡しに使用されている。
【0046】
二重化制御回路25は、多重系コントローラ11,12の状態の制御や、多重化リンク37を用いた通信を行う。二重化制御回路25中で、26は転送回路であり、制御系ネットワーク36と通信するデータを、他系のコントローラに対して転送する働きをする。28は危険評価値記憶回路であり、コントローラのセキュリティ上の危険度を評価した値を記憶している。27は評価値の比較回路であり、危険評価値記憶回路28に記憶されている危険評価値を危険評価値閾値と比較して、主系と従系の切り替えの制御に使用する。二重化制御回路25に関しては、図5を使用して後で詳細に説明する。
【0047】
29はメモリであり、CPU24が実行するプログラムやデータを記憶している。このうち、291は制御プログラム、292はフィルタである。これらは、制御系ネットワーク36との通信内容を、多重化リンク37を通して他系のコントローラに転送するときに、フィルタリングを行うためのプログラムとデータである。294はプログラム実行のログを記録する領域であり、293はログ監視のプログラムとデータである。ログ記録領域294の内容を調べることにより、コントローラが異常な動作をしていないか監視する。
【0048】
本発明のコントローラシステムは、概略以上のように構成されており、基本的に主系と従系のコントローラは同一に構成されている。以下、コントローラ各部の動作、機能について詳細に説明するが、その前提として特に断りのない限り、以下の説明は主系コントローラ11について説明をしている。従系コントローラ12との関連が生じた場合には、その旨の説明を行う。
【0049】
まず図2は、本発明装置のネットワークアダプタの一実施例の構成図である。ネットワークアダプタ21は、図1のコントローラ11内に存在する。
【0050】
図2のネットワークアダプタ21において、215は図1中の制御系ネットワーク36に接続される制御系ネットワーク接続線である。211は制御ネットワーク36に対してデータを送信する送信器であり、送信バッファ213に格納されているデータを送信する。また、212は制御系ネットワーク36からデータを受信する受信器である。
【0051】
22は遮断回路であり、二重化制御回路25から遮断指示線216を通して行われる遮断の指示に従い、制御系ネットワーク36から通信を遮断する働きをする。
【0052】
23は制御系ネットワーク36との通信を監視するトラフィック監視回路である。トラフィック監視回路23中で、231は制御系ネットワーク36からの通信を一時格納するトラフィック監視回路バッファである。232はトラフィック監視回路バッファ231に格納されている通信を調べるトラフィック監視部である。調べた結果、異常が発見されると、危険度通知線219を通して二重化制御回路25に対してその異常の危険度を送信する。
【0053】
233はトラフィック監視部232が使用するトラフィック監視ルール記憶部である。異常を発見するためのルールとその異常の危険度が格納されている。234はトラフィック監視部232で使用するタイマである。制御系ネットワーク36からの通信の頻度を測定するのに使用される。
【0054】
なお、図2において214は受信バッファであり、トラフィック監視回路バッファ231を通過した制御系ネットワーク36からの受信データが格納される。217はCPU24と送信バッファ213および受信バッファ214の間に設けられた信号伝送用のバスであり、218は受信バッファに受信データが入ったことをCPU24に通知する割り込み線である。
【0055】
図3は、図2のネットワークアダプタ21内のトラフィック監視ルール格納部233に記憶された監視ルールの一例である。トラフィック監視ルールは、制御系ネットワーク36との通信において、許可されているものと禁止されているものを区別するためのルールである。
【0056】
図3の図示例では、横軸項目に示すように、ルールは送信元2331と、コマンド2332と、周期2333と、許可、禁止の区別2334と、危険度2335が組になって記憶されている。縦軸の項目2336〜2339の各行がそれぞれ一つの監視ルールを表している。
【0057】
2331の列は送信元のアドレス情報であり、値が0のときはどのアドレスでもよいことを、また値が0以外のときは特定アドレスの送信元(送信元があらかじめ判明しているの意味)であることを表している。2332の列はコマンドの情報であり、値が0のときはどのコマンドでもよいことを、値が0以外の時はこの値で定まる特定のコマンドであることを表している。2333は周期の情報であり、ここで記載されている時間より短い時間間隔で通信を受信したときにルールが適用される。但し、周期の情報が0のときには周期によらないことを表す。2334は、このルールに該当する通信が許可されているか禁止されているかを表す。値が1のときに許可されており、0のときに禁止されている。2335の列は、通信がルールに合致したときの危険度を表している。この危険度の値が図1中の危険評価値28に加算されていく。
【0058】
このルールの例では、縦軸のルール2336は、「特定の送信元からのコマンドが5である場合には、通信を許可する」の意味であり、以下同様にルール2337は、「特定の送信元からのコマンドが6である場合には、通信を許可する」、ルール2338は、「不特定の送信元(あらかじめ知られた送信元ではないの意味)からの信号が10ミリ秒以下の周期で通信されている場合には、通信を許可せず、かつ危険度を重み1に評価づけする」、ルール2339は、「不特定の送信元からのコマンドが2である場合には、許可せず、かつ危険度を重み10に評価づけする」を意味している。
【0059】
なお、ルール2339において、コマンド2は、このコマンド自体がプログラマブルコントローラに対する悪意の改変などを実施可能なコマンドということができる。また、ルール2338において、非常に短い周期で数度にわたりアクセスし続ける状況は通常生じないので、短周期アクセスが連続する場合にはこれを悪意の信号と判断する。これらのルールのうち、2336と2337は許可ルール、2338と2339は禁止ルールということができる。
【0060】
図4は、図2のトラフィック監視回路バッファ231のレジスタに格納される通信データの一例である。この例では通信データとして、2315〜2318の4つの通信データをレジスタに格納した状態を表している。なお、各通信データは図4の横軸に示すように、例えば送信元2331、コマンド2332、データ2313、時刻2314で構成されている。より具体的には、2331の行はデータの送信元のアドレス情報、2332はコマンドの情報、2313はコマンドの引数となるデータの情報、2314は受信した時刻である。なお、データ2313に記載された情報は、16進(0X3)で表記されており、例えば通信データ2315は「温度が100度」、通信データ2316は「圧力が10psi」といったことを表している。
【0061】
図4の通信データでは、時刻2314の数値が小さいほど、より早い時点でネットワークアダプタ21に取り込まれたデータであることを意味しており、いわゆるFIFO(Fast In Fast Out)の考え方に従い処理が実行される。
【0062】
つまり、最初に最も古い時点で取り込まれた通信データ2318から監視の処理を実行し、監視の処理が終了すると図2の受信バッファ214へとデータが出力され、上の3つの行のレジスタに格納された通信データ(2317,2316,2315)が1つずつ下のレジスタにシフトする。新しいデータが受信されたときには空いている一番上の行にデータが入力される。但し、全部の行が埋まっているときに、更に新しいデータを受信したときにはその新しいデータは廃棄する。
【0063】
図3で説明したトラフィック監視ルール233に格納されている監視ルールに基づいてこれらの通信データを処理すると、通信データ2315〜2317はいずれも禁止ルール(ここでは2338と2339)に合致していないので「許可」とされ、危険度は加算されない。具体的には、禁止ルール2338と2339の送信元2331は不特定(0:身元が不明)を禁止の対象としているが、通信データ2315〜2317は特定(1:身元が判明しており善意の送信者である)の相手である。これに対し、通信データ2318は、コマンド2332が(2)であり、禁止ルール2339のコマンド2332の条件に合致している。
【0064】
監視ルールに基づいて調べた結果、危険度が発見された場合の、図4の通信データ2318の取り扱いについては、これを廃棄処理とすることも、また受信バッファ214に送信してCPU24の判断に委ねることのいずれの対策を採ることも適宜採用可能である。
【0065】
本発明では、係る異常アクセスに対して最終的には図2の遮断部22により、通信遮断を実行するが、この最終処理は以下の手順を踏んで行われる。まず、監視ルールに基づいて調べた結果危険度が発見されると、危険度通知線219を通して二重化制御回路25に対してその異常の危険度を送信する。二重化制御回路25では、図3のルール2339の列2335に記載されている危険度10が、危険評価値に加算される。
【0066】
図5は、図1中の二重化制御回路25の構成の一例である。この図で、危険評価値記憶回路28には、危険度通知線219を通してトラフィック監視回路23から送信されてくる危険度が加算され、危険評価値として記憶される。従って、例えば図3、図4の説明で危険度10に評価された送信元1のコマンド2に関する通信データ2318について、あらかじめ危険評価値5が記憶されているときに、新たに危険度10が報知された場合には、危険評価値記憶回路28には、新たな危険評価値として15が記憶される。なお、危険評価値記憶回路28には、CPU24からも危険度を加算することが可能である。
【0067】
危険評価値には、二つの閾値281と282が存在する。これらの閾値の設定はCPU24等から行うことが可能である。危険評価値閾値比較部283は、危険評価値28と閾値281、282との比較を行っている。閾値282は、閾値281よりも大きな値が設定されている。このため、危険評価値閾値比較部283での比較結果、まず閾値281を逸脱したことが検出される。
【0068】
危険評価値記憶回路28の記憶値が閾値281を超えたことを危険評価値閾値比較部283が検出すると、この結果が転送モードフラグ回路251に伝達されて、転送モードフラグがオンに変更される。転送モードフラグがオンになると、割り込み線216を通じて図2のネットワークアダプタ21の遮断回路22に伝達され、受信を遮断する。これにより、以後主系コントローラ11は、制御系ネットワーク36から自己の受信器212を経由する通信データの取り込みを停止する。
【0069】
ここで転送モードフラグとは、図1において従系コントローラ12が制御系ネットワーク36との通信を行い、多重化リンク37を通してその内容を主系コントローラ11に転送する転送モードになっていることを表すフラグである。
【0070】
つまり、この状態では図1の主系コントローラ11に対する不正アクセスが発生している可能性が高いことから、主系コントローラ11のネットワークアダプタ21を使用した制御系ネットワーク36からの受信を中断し、代わりに図1にTで示す転送ラインを新たに形成して従系コントローラ12のネットワークアダプタ21を使用した通信を実行する。この転送モード状態では、主系コントローラ11に対する信号の入出力経路が従系コントローラ12のネットワークアダプタ21経由になっているだけで、主体的に動作しているのは主系コントローラ11のCPU24である。この転送モードは、危険評価値記憶回路28の記憶値が低い設定の閾値281を超えたときに発動されるものであり、いわば第一段階の不正アクセス回避処置である。
【0071】
この転送モードを形成するために、図5の二重化制御回路25には主系、従系コントローラ11,12の間に転送通信部60,70を構成している。以下、転送通信部60,70の構成について詳細に説明する。
【0072】
まず、272は多重化リンクアダプタであり、相手コントローラの二重化制御回路25との間に形成された多重化リンク37を用いた送受信を行う。多重化リンクアダプタ272は受信器273と、送信器274で構成される。371、372は、有線あるいは無線で形成された送信路と受信路である。
【0073】
多重化リンク37を用いた送信を行うために、以下の回路が準備され各種のデータが送信される。送信される第一のデータは、危険評価値記憶回路28に記憶された「危険評価値」である。危険評価値は評価値送信部256により、送信器274を通して他のコントローラ12に定期的に送信される。
【0074】
送信される第二のデータは、主系コントローラ11が正常であることを意味する「正常通知」のデータである。257は正常通知送信部であり、CPU24が定期的にこの正常通知送信部257に書込みを行うことにより、送信器274を通して正常通知が従系コントローラ12に送信される。
【0075】
送信される第三のデータは、主系コントローラ11が異常であることを意味する「異常通知」のデータである。ここで、主系コントローラ11異常には幾つかの種類があり、例えば主系コントローラ11自身に異常が発生したのであれば、先に説明したCPU24による正常通知送信部257への書込みが途絶え、従系コントローラ12がこれを検知することができる。第三のデータとして取り上げたのは、危険評価値が閾値281、282を超えた状態の通知である。このため異常通知送信部258が備えられ、危険評価値逸脱に関する異常が発生したことを従系コントローラ12に通知する。なお、危険評価値逸脱に関する異常の通知は、CPU24が異常通知送信部258にアクセスすることによっても行うことが可能である。
【0076】
送信される第四のデータは、CPU24が作成し、制御系ネットワーク36に送るデータである。262はネット送信バッファであり、CPU24がここにデータを書きこむことによりその内容が送信器274を通して従系コントローラ12に転送される。これにより制御系ネットワーク36との通信が多重化リンク37を介して転送実施される。
【0077】
以上説明したのは転送通信部60,70のうち、60の部分である。この部分は送信側の回路構成と、データについては主系コントローラ11での動作を述べたものである。
【0078】
これに対し、従系コントローラ12の転送通信部60,70のうち、受信側回路70が以下のように機能し、データ処理を行っている。ここでは、従系コントローラ12の二重化制御回路25内の受信器273に受信された主系コントローラ11の多重化リンク37からのデータは、その内容によって振り分けられる。
【0079】
受信内容が、第一のデータ(危険評価値)であった場合には、受信データが危険評価値受信部253に保存される。次に受信された主系コントローラ11の危険評価値は、従系である自分の危険評価値記憶回路28に記憶されている危険評価値と評価値比較部27において比較される。
【0080】
比較の結果、自分の危険評価値記憶回路28に記憶された危険評価値が閾値282を超えたとき、自分の危険評価値記憶回路28に記憶された危険評価値を受信した主系コントローラ11の危険評価値と比較して危険評価値が低い方のコントローラが主系となり主系フラグ271がオンとなる。
【0081】
この結果によれば、転送モードで運転継続中の主系コントローラ11の危険評価値が閾値282を超えたときに従系コントローラ12を主系とする運転に切り替わる。
【0082】
受信内容が、第二のデータ(データ正常通知)であった場合には、正常通知受信部254にデータが格納される。危険評価値受信部253と正常通知受信部254には、ウォッチドッグタイマ252が接続されており、別のコントローラ(主系コントローラ11)からのこれらの通知が一定時間到着しないと別のコントローラ(主系コントローラ11)に異常が発生したとして、主系フラグ271の切り替えを行う。つまり、コントローラ12を主系とし、コントローラ11を従系とする運用に切り替わる。
【0083】
受信内容が、第三のデータ(データ異常通知)であった場合には、異常通知受信部255に通知、登録され、主系フラグ271の切り替えに使用される。別のコントローラがネット送信バッファ262から送信データが受信器273で受信されるネット受信バッファ261に格納される。
【0084】
図6は、図1に示したコントローラ11、12のメモリ29に格納されている制御プログラムの一例である。この制御プログラムはコントローラが主系であるときに実行される。まずステップS511では、制御ネットワーク36からコマンドを受信する処理を行う。
【0085】
この処理の内容は図7のネット受信プログラムを用いて別途説明するが、要するに主系コントローラ11が不正アクセスを受けていない状態では、主系コントローラ11内のネットワークアダプタ21の受信バッファ214に蓄積されたデータを使用する。不正アクセスを受けて転送モードになっているときには、従系コントローラ12から転送されてきたデータが蓄積されている二重化制御回路25内のネット受信バッファ261のデータを使用する。
【0086】
ステップS512からステップS517までの処理は、通常に行われる処理であり、本発明の切替えに特に関与するものではないが、ごく簡単に説明すると、以下のようである。
【0087】
まずステップS512では、ステップ511で受信したコマンドに基づいた処理を実行する。ステップS513では、メモリ29にあるログ領域294にコマンドを実行したことを表すログを記入する。ステップS514では、図1中のプロセスIO38から制御対象に設置されているセンサのデータなどを読み込む。ステップS515では、前のステップS514で読み込んだデータを元に制御用の計算を実行する。ステップS516では計算の結果をプロセスIO38に書込み制御対象のアクチュエータなどを動作させる。ステップS517では、行った制御の内容に関してログをログ領域294に記入する。
【0088】
最後のステップS518では、ステップS514で取得したセンサの値や実行した制御の結果を制御ネットワークに対して送信する。この送信の処理に関しては図8のネット送信プログラムで説明するが、要するに主系コントローラ11が不正アクセスを受けていない状態では、主系コントローラ11内のネットワークアダプタ21の送信バッファ213にデータを送信する。不正アクセスを受けて転送モードになっているときには、二重化制御回路25内のネット送信バッファ262データを書き込み、従系コントローラ12に送出する。
【0089】
図7は、図6中のステップS511のネット受信プログラムの詳細フローである。制御ネットワーク36からの受信は、図5中の転送モードフラグ回路251の内容に応じて図1中のネットワークアダプタ21を通して行うか、二重化制御回路25を通して多重化リンク37から行うか切り替える。ステップS521では、転送モードフラグ回路251のフラグを調べている。転送モードフラグ回路251がオンではないときには、ステップS522においてネットワークアダプタ21の受信バッファ214にデータがあるか調べ、ある場合にはステップS523でそこからデータを読み出す。ステップS521で転送モードがオンであった場合には、ステップS524で二重化制御回路25のネット受信バッファ262を調べ、空でないときにはステップS525でデータを受信バッファ262から読み出す。
【0090】
図8は、図6中のステップS518のネット送信プログラムの詳細である。制御ネットワーク36への送信は、図5中の転送モードフラグ回路251の内容に応じて図1中のネットワークアダプタ21を通して行うか、二重化制御回路25を通して多重化リンク37から行うかを切り替える。ステップS531では、転送モードフラグ回路251のフラグを調べている。転送モードフラグ回路251がオンではないときにはステップS532において、ネットワークアダプタ21の送信バッファ213にデータを書きこむ。ステップS531で転送モードがオンであった場合にはステップS533で、二重化制御回路25のネット送信バッファ261にデータを書きこむ。
【0091】
次に図9と図10は、図5の多重化リンク37を使用した信号転送処理(リンクとネット間での転送のアルゴリズム)を示しており、このうち、図9はリンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズム、図10はネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムを示している。
【0092】
図9のリンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズムは、図5中の転送モードフラグ回路251のフラグがオンになったときに定期的に実行される。この場合、主系コントローラ11では、多重化リンク37経由で受信したデータをネットワークアダプタ21経由で制御系ネットワーク36に送信する働きをする。具体的には、ステップS541で二重化制御回路25のネット受信バッファ262が空か調べ。空でないときにはステップS542でネット受信バッファ262からデータを読み出し、ステップS543でネットワークアダプタ21の送信バッファ213に書きこむ。
【0093】
図10のネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムは、図5中の転送モードフラグ回路251のフラグがオンになったときに定期的に実行される。この場合、従系コントローラ12では、ネットワークアダプタ21経由で制御系ネットワーク36から受信したデータを多重化リンク37経由で別のコントローラ(主系コントローラ11)に転送する働きをする。
【0094】
具体的には、ステップS551でネットワークアダプタ21の受信バッファ214を調べ、空でなければ、ステップS552で受信バッファ214からデータを読み出す。読みだしたデータはステップS553でメモリ29中のフィルタ条件292(この内容については、図11で説明する)に合致するか調べる。合致するフィルタ条件があった場合には、ステップS554でそのデータの転送はスキップする。合致するフィルタ条件がなかった場合にはステップS555で二重化制御回路25のネット送信バッファ261にデータを書きこんで転送する。
【0095】
図11は、図1中のフィルタ292が使用するフィルタ条件のテーブルの一例である。フィルタ条件は、横軸項目の送信元のアドレスの情報2331、コマンドの情報2332、コマンド2332の引数となるデータの条件612、周期の情報2333、その通信が許可されているか禁止されているかを表す情報2334、この条件に合致したときの危険度の情報2335で構成される。図11のフィルタ条件を、図3の監視ルールと比較して明らかなように、フィルタ条件は、監視ルールにデータの情報2333を追加したものである。
【0096】
この図11で、616〜619がそれぞれ具体的なフィルタ条件を表している。この意味するところは、縦軸のフィルタ条件616は、「特定の送信元からのコマンドが5であり取り込んだデータXが(0<X<100)の範囲の大きさである場合には、通信を許可する」の意味であり、以下同様にフィルタ条件617は、「特定の送信元1からのコマンドが6である場合には、通信を許可する」、フィルタ条件618は、「不特定の送信元(あらかじめ知られた送信元ではないの意味)からの信号が10ミリ秒以下の周期で通信されている場合には、通信を許可せず、かつ危険度を重み1に評価づけする」、フィルタ条件619は、「不特定の送信元からのコマンドが2である場合には、許可せず、かつ危険度を重み10に評価づけする」を意味している。
【0097】
図10のステップS553で実施するフィルタ条件292の具体的な内容を図11の事例で説明したことから明らかなように、本発明では主系コントローラ11が転送モードにある時に、従系コントローラ12の通信データを受け入れるが、図3に示した自己の監視ルールと同等かそれ以上の厳しいフィルタ条件に合致する通信データのみを受け入れている。これにより、不正アクセスを識別する能力は、転送モードにおいてもそれ以前の健全状態と同等以上に保つことができる。
【0098】
図12は、図1中のログ領域294に書き込まれるログの内容の一例である。ログは、例えば実行された処理の種別621、処理の引数となったデータ622、処理の時刻623で規定されて記録される。なお、処理の種別621はコマンド2332を含み、通常はコマンド2332と同じものと考えてよい。
【0099】
図12の縦軸の625〜626が、具体的に書きこまれたログのエントリである。ログエントリ625は時刻60で、処理種別6により処理されたデータ(Ox39,Ox35)である。また、ログエントリ626は時刻100で、処理種別5により処理されたデータ(Ox32,Ox31,Ox40)である。ここで、16進で表記されたログエントリ626のデータ(Ox32,Ox31,Ox40)は、温度が210度であることを意味している。
【0100】
図13は、図1中のログ領域294に書き込まれたログの内容(図12)を監視するログ監視部293が使用するログ監視ルールの一例である。ログ監視ルールは、例えば処理種別の情報621、処理の引数であるデータの条件612、その処理の実行が許される周期2333、ルールに合致する処理が許可されているか禁止されていないかの情報2334、ルールに合致したときの危険度の情報2335で定義されている。
【0101】
また縦軸の265〜269がそれぞれログ監視ルールを表している。例えばログ監視ルール265の意味するところは、「処理種別5により処理され、処理後のデータXが(0<X<100)の範囲の大きさである場合には、処理が許可されている」の意味であり、以下同様にログ監視ルール266は、「処理種別6により処理された場合には、処理を許可する」、ログ監視ルール267は、「処理種別7により処理され、周期100ミリ秒以下の場合には、処理が許可されているが危険度を5に評価する」、ログ監視ルール268は、「周期10ミリ秒以下の場合には、処理が許可されず危険度を1に評価する」、ログ監視ルール269は、「処理種別2により処理された場合には、許可せず、かつ危険度を重み10に評価づけする」ことを意味している。
【0102】
図14は、図1中のログ監視部293のアルゴリズム(ログ監視プログラム)である。ステップS561ではログ領域294に新たにログが書き込まれるまで待機する。新たにログが書き込まれるとステップS562でそのログエントリを読み出す。この場合には、例えば図12のログエントリ625〜626が読みだされる。
【0103】
ステップS563では図13で説明したログ監視ルール(265−269)を順番に読み出すためのポインタを初期化している。ステップS564では監視ルールを一つ読み出しポインタを一つ進める。ステップS565でログエントリがルールに違反しているか判断している。
【0104】
ルールに違反している場合にはステップS566でルールに書かれている危険度の値を危険評価値28に加算する。最後のルールになるまでステップS567で繰り返す。ステップS568ではログを最後まで読みだしたか判断している。まだログエントリがある場合にはステップS562に戻り次のログエントリを読み出す。最後まで読みだした場合にはステップS561に戻り新しいログが書き込まれるまで待機する。
【0105】
図12に例示したこれらの一連のログエントリ625〜626を、図13に例示した一連のログ監視ルール(265−269)でチェックした結果は、以下のようである。まず、ログエントリ625は処理種別6により処理されたデータ(Ox39,Ox35)であるため、図13の監視ルール266「処理種別6により処理された場合には、処理を許可する」を参照して適正(ルールに違反していない)とされる。
【0106】
次に、ログエントリ626についてみると、これは処理種別5により処理されたデータ(Ox32,Ox31,Ox40)であるが、ここでデータ(Ox32,Ox31,Ox40)は、温度が250度であることを意味している。これに対し、図13のログ監視ルール265のデータ条件612はデータXが(0<X<100)の範囲の大きさである場合には、通信を許可する」の意味であり、温度範囲が逸脱している。このため、このログエントリ626は、ログ監視ルール265を参照して、不適正(ルールに違反)とされる。この場合、図14のステップS565において、ログエントリ626が監視ルール265に違反していると判断され、ステップS566において、危険度を評価値に加算する処理が実施される。
【0107】
図15は、図5の主系フラグ271がオンからオフに変化したときに実行される主系ダウンの処理(主系ダウンプログラム)の一例である。このとき、ステップS571では定期的に実行されていた図6で説明した制御プログラムの実行を停止する。ステップS572では、制御プログラムを再度制御系ネットワーク36からロードする。これは、不正アクセスにより制御プログラムの内容が改ざんされたり、破壊されたりしている可能性があるからである。このローディングは、別のコントローラ(従系コントローラ12)が制御系ネットワーク36と通信し、多重化リンク37経由で行われる。ステップS573では、不正アクセスの攻撃対象となっていたコントローラ(主系コントローラ11)を囮として攻撃の対象とし続けるために擬似制御プログラムの実行を開始する。擬似制御プログラムに関しては図16で説明する。
【0108】
図16は図15の主系ダウンのときに、制御プログラムの代わりに起動される擬似制御プログラムのアルゴリズムである。ステップS581では、制御系ネットワーク36からデータを受信し、ステップS581でその内容をログに記録し、ステップS583で擬似データを作成し、その擬似データをステップS584において制御系ネットワーク36に送信する。このように、擬似制御プログラムでは実際の制御は実行しないが、制御系ネットワーク36からの送受信を擬似的に継続実行することにより、不正アクセスの囮となり、新たに主系となったコントローラ12への攻撃を防ぐ。
【0109】
図17は、今まで従系であったコントローラ12において、主系フラグ271がオンになることにより主系に切り替わったときに実行される主系切り替え処理のアルゴリズムの一例である。ステップS591において図6で説明した制御プログラムの定期的実行を開始している。
【0110】
図18は、以上説明した本発明のプログラマブルコントローラシステムの各部の動きを時間の経過と共に示した図である。ここでは、縦軸方向に時間経過により生じる状態変化を示し、横軸に主系コントローラ、従系コントローラの各部の動きを示している。
【0111】
より具体的には、状態変化が「正常A」から「転送モード移行中B」を経由して「転送モードC」となり、さらに「主従切り替え中D」を経由して「主従反転モードE」に至るまでを示している。さらにこの状態変化を生じせしめるきっかけとなる時折のイベントを表示している。これに対し、横軸の主系コントローラ11と従系コントローラ12について、ネットワークアダプタ21、CPU24,二重化制御回路25の動きを示している。以下、状態ごとに、システム全体の動きを簡単に整理して説明する。
【0112】
「正常A」:
主系コントローラ11が稼動し、従系コントローラ12は待機状態にある。主系コントローラ11のCPU24は、図6の制御プログラムとこれに続く図14のログ監視プログラムを実行し、ネット受信、ネット送信、ログ書き込み、ログ判定の処理を実施している。この前提としてネット受信により、ネットワークアダプタ21で受信データの正常判定を行い、正常判定された通信データを、受信バッファ214を経由してCPU24に提供している。またネットワークアダプタ21は、CPU24からのデータを送信バッファ213に受けてネット送信を実行している。
【0113】
「転送モード移行中B」
上記の状態で、イベントとして攻撃受信を受ける。このときに主系コントローラ11のネットワークアダプタ21では、図2のトラフィック監視回路23で異常判定し危険度通知219を発して二重化回路25に処理を移す。図5の二重化回路25では、評価値を更新し、閾値281を超過した事を持って、転送モードとする。多重化リンク37経由で従系コントローラ12の二重化回路25は転送モードになったことを検知する。なお、主系コントローラ11のCPU24は、図6の制御プログラムとこれに続く図14のログ監視プログラムを継続して実行している。
【0114】
「転送モードC」
転送モードCでは、主系コントローラ11は、多重化リンク37で従系コントローラ12に接続され、従系コントローラ12経由でネット接続される。従系コントローラ12のネットワークアダプタ21では、ネット受信により、ネットワークアダプタ21で受信データの正常判定を行い、正常判定された通信データを、受信バッファ214を経由してCPU24に提供している。CPU24では、図10の従系コントローラにおけるネット・リンク転送処理を実行し、二重化制御回路25のネット送信バッファ262にデータを送る。通信データは主系コントローラ11の二重化制御回路25のネット受信バッファ261経由でC主系PU24に送られる。
【0115】
主系コントローラ11のCPU24は、基本的に図6の制御プログラムとこれに続く図14のログ監視プログラムを実行するが、このときのデータ受信と送信処理は、図7、図8の転送モードに従い、ネット受信バッファ261からデータを得てその処理結果データをネット送信バッファ262に送る。さらに多重化リンク37経由で再度従系コントローラ12の処理は、再度従系コントローラ12に移り、二重化制御回路25のネット受信バッファ261に受信される。CPU24では、図9の従系コントローラにおけるリンク・ネット転送処理を実行し、二重化制御回路25の送信バッファ213にデータを送る。これを受けて、最終的に送信バッファ213から、ネット送信が行われる。
【0116】
「主従切り替え中D」
主系コントローラ11の二重化制御回路25は、評価値を更新しており、閾値2を超過したことを以って、自己の主系フラッグをOFFにする。これを受けて、従系コントローラ12の二重化制御回路25は、自己の主系フラッグをONにする。
【0117】
「主従反転E」
この状態では、元従系の位置にあったコントローラ12は主系となって、図6、図14の処理を実行する。このときの動きは、「正常A」のときの主系と全く同じであるので説明を省略する。
【0118】
他方、元主系の位置にあったコントローラ11は従系となって、図15の主系ダウン処理、引き続き図16の模擬制御プログラムの処理を実行する。これにより、攻撃側にコントローラが切り替わったことを知られないように操作する。なお、模擬制御プログラムの処理は適宜の時点で終了してよい。
【符号の説明】
【0119】
11〜12:コントローラ、21:ネットワークアダプタ、22:遮断回路、23:トラフィック監視回路、231:トラフィック監視回路バッファ、232:トラフィック監視部、233:トラフィック監視ルール記憶部、24:CPU、25:二重化制御回路、251:転送モードフラグ回路、252:ウォチドックタイマ、253:危険評価値受信部、256:危険評価値送信部、26:転送回路、261:ネット受信バッファ、262:ネット送信バッファ、27:評価値比較部、271:主系フラグ、28:危険評価値記憶回路、281〜282:危険評価値閾値、283:危険評価値閾値比較部、29:メモリ、31:ヒューマンマシンインタフェース計算機、32:ファイアウォール、33:インターネット、34:情報系ネットワーク、35:サーバ計算機、36:制御系ネットワーク、37:多重化リンク、38:プロセスIO
【技術分野】
【0001】
本発明は、発電所などの高い信頼性が要求されるところで使用される多重系コントローラシステムとその運転方法に関する。
【背景技術】
【0002】
プログラマブルコントローラは、発電所、製鉄所、上下水道施設、工場など各種機器の制御に使用されている。機器に備え付けられたセンサから各種のデータを取り込み、そのデータに基づいて計算を実行し、その計算結果をアクチュエータなどに向けて出力することにより制御を行う。
【0003】
コントローラは、正確な制御を行うために高いリアルタイム性が求められる。また、コントローラが停止や誤動作をすると、たとえば、発電所の場合、発電設備の破壊、電力供給の停止など多大な被害や危険が発生する可能性があり、高い信頼性、可用性も要求される。
【0004】
高い信頼性、可用性を実現するために、コントローラを複数使用して多重化構成をとることが行われてきた。特許文献1では、二重系コントローラにおいて、片方のコントローラで障害が発生したときにもう一方のコントローラが処理を引き継ぐ。
【0005】
一方、近年では、コントローラがネットワークに接続されることが一層多くなってきている。コントローラをネットワークに接続する目的はいろいろある。複数のコントローラを連携して動作させるためであったり、コントローラのデータをパソコンなどに収集して、そのディスプレイに表示させるためであったり、遠隔地からコントローラシステムの管理、保守を行うためだったりする。
【0006】
いずれにせよ、コントローラのネットワークへの接続が進むことにより、セキュリティという新たな問題が重大化してきている。ネットワークを通して、コントローラに対して不正なアクセスが行われ、コントローラの停止、誤動作、データの改ざん、データの漏洩などに発展する可能性が出てきている。
【0007】
この点に関し、一般的な計算機では古くからネットワーク接続が行われており、セキュリティへの対策技術も知られている。特許文献2では、ファイアウォールにより外部ネットワークから内部ネットワークへの不正アクセスを防止する。
【0008】
特許文献3では、現用サーバと待機サーバがある多重系のシステムにおいて、不正アクセスを含む原因により現用サーバが異常状態を検出したときに、待機系サーバに切り替えてサービスを継続する。
【0009】
特許文献4では、多重系の計算機システムで稼動系サーバに異常が発生したときに待機系サーバに異常のないデータをコピーして処理を継続する。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特許第2732668号
【特許文献2】特開2001−236278号公報
【特許文献3】特開2001−256138号公報
【特許文献4】特開2003−248596号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
特許文献1の二重系のコントローラでは、故障が検出されたときに故障部分を切り離すが、ネットワークからの不正アクセス行為を防ぐ方法、さらには不正アクセスがあったときの対応に関しては考慮されていない。
【0012】
特許文献2、特許文献4では、外部ネットワークからの不正アクセスを防ぐために、外部ネットワークの入り口にファイアウォールやゲートウェイなどの装置を置いているが、できればこれらの特別な装置を付加することなく不正アクセスを防ぎたい。
【0013】
特許文献3、特許文献4は、現用サーバに異常が発生したときに待機サーバに切り替えて処理を続行することが述べられている。しかし、待機サーバにも不正アクセスが行われていて異常が発生していた場合に関して考慮されていない。また、待機サーバに切り替えたあと、待機サーバも同様な不正アクセスの攻撃を受ける可能性がある。
【0014】
以上のことから、本発明の目的は、多重系のコントローラシステムにおいて、ファイアウォールやゲートウェイなどの特別な装置を付加することなく不正アクセスを防ぐとともに、処理を行うコントローラを切り替えたときにも、処理を行うことになったコントローラに対しての攻撃を防ぐことができる多重系コントローラシステムとその運転方法を提供するものである。
【課題を解決するための手段】
【0015】
以上のことから本発明においては、プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつプロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として制御対象の操作を行い他方のコントローラを従系として待機させると共に、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、コントローラは、制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、コントローラ間に設けられた多重化リンクと、トラフィック監視機能の検知に応じて多重化リンクを用いて制御系ネットワークとの通信を行う二重化回路とを備える。
【0016】
また、トラフィック監視機能は、ネットワークアダプタが受信する通信による不正アクセスを、その種別に応じて危険度の数値評価し、危険度評価値が第1の閾値を超えたことを以って、ネットワークアダプタによる制御系ネットワークとの通信を遮断し、多重化リンクを用いた制御系ネットワークとの通信を行う。
【0017】
また、トラフィック監視機能は、危険度評価値が第1の閾値よりも大きな値の第2の閾値を超えたことを以って、主系としていたコントローラを停止し、従系としていたコントローラによる制御対象の操作を実行する。
【0018】
また、制御系ネットワークとの通信を行い、多重化リンクを用いて通信を転送する側のコントローラの二重化回路は、フィルタ手段により受信した通信を選別した後に多重化リンクを通して他のコントローラに転送する。
【0019】
また、トラフィック監視機能は、危険評価値を記憶する手段と、危険度評価値の閾値を記憶する手段を持ち、不正アクセスを検知する毎に不正アクセスの危険度を危険度評価値に加算し、多重化リンクを通して各コントローラの危険度評価値をお互いに通信しあい、危険度評価値が閾値を超えたときに、危険度評価値が最も低いコントローラを主系モードとする。
【0020】
また、コントローラは、実際の制御を行う制御プログラムと、制御プログラムと似せた通信を行う擬似制御プログラムとを有し、主系としていたコントローラを停止するときに、今まで実行していた制御プログラムに代えて擬似制御プログラムを継続実行する。
【0021】
また、トラフィック監視機能は、制御系ネットワークからの不正アクセスを検知するために、通信に関して送信元、コマンド、通信周期を用いたトラフィック監視ルールを準備しており、受信する通信が当該監視ルールに違反することを持って不正アクセスを検知する。
【0022】
また、トラフィック監視ルールは、通信の許可と禁止の区別情報と共に、通信禁止のときの危険度を数値化して保持している。
【0023】
また、主系としていたコントローラを停止し、従系としていたコントローラによる制御対象の操作を実行するときに、従系モードにあったコントローラは、制御系ネットワークからコントローラが実行するプログラムを受信し、プログラムを主系モードにあったコントローラに対して多重リンクを通して転送し、主系モードにあったコントローラのプログラムを転送されたプログラムによって更新する。
【0024】
以上のことから本発明においては、プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつプロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として制御対象の操作を行い他方のコントローラを従系として待機させると共に、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムの運転方法において、主系コントローラにより制御対象の操作を行い従系コントローラが待機している正常モードと、主系コントローラはそのネットワークアダプタを使用する制御系ネットワークとの通信を行わず、従系コントローラがそのネットワークアダプタを使用して実行した制御系ネットワークとの通信が多重化リンクを経由して転送送受信される転送モードと、従系としていたコントローラを主系として制御対象の操作を行い主系としていたコントローラを従系として待機させる主従反転モードとを順次切替実行すると共に、モードの切替を、制御系ネットワークからの通信による不正アクセスの進展度合いに応じて行う。
【0025】
また、不正アクセスの進展度合いを、通信の種別に応じて危険度を数値評価し、危険度評価値の大きさで判断する。
【発明の効果】
【0026】
本発明によれば、不正アクセスにより異常状態となったときにも動作を継続することが可能である。
【0027】
また本発明の実施例によれば、ファイアウォールやゲートウェイなどの特別な装置を付加することなく、不正アクセスを防ぐことが可能である。
【0028】
また、本発明の実施例によれば、不正アクセスにより異常状態となったときに、より正常なコントローラで処理を続行することが可能である。
【0029】
また、本発明の実施例によれば、制御を行うコントローラを切り替えたときに、もともと制御を行っていたコントローラが囮となることにより、新たに制御を行うコントローラに対しての攻撃を防ぐことができる。
【図面の簡単な説明】
【0030】
【図1】多重系プログラマブルコントローラシステムの一例を示す図。
【図2】ネットワークアダプタの構成を示す図。
【図3】トラフィック監視ルール格納部に記憶された監視ルールの一例を示す図。
【図4】トラフィック監視回路バッファのレジスタに格納される通信データ例を示す図。。
【図5】二重化制御回路25の一例を示す図。
【図6】コントローラのメモリ29に格納されている制御プログラムの一例を示す図。
【図7】ネット受信処理のアルゴリズムを示す図。
【図8】ネット送信処理のアルゴリズムを示す図。
【図9】リンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズムを示す図。
【図10】ネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムを示す図。
【図11】図1のフィルタが使用するフィルタ条件のテーブルの一例を示す図。
【図12】図1のログ領域に書き込まれるログの内容の一例を示す図。
【図13】図1のログ監視部が使用するログ監視ルールの一例を示す図。
【図14】図1中のログ監視部のアルゴリズムの一例を示す図。
【図15】主系ダウン時のアルゴリズムを示す図。
【図16】擬似制御プログラムのアルゴリズムを示す図。
【図17】主系切り替えのアルゴリズムを示す図。
【図18】プログラマブルコントローラの各部の動きを時間の経過と共に示した図。
【発明を実施するための形態】
【0031】
以下、図面を参照して本発明の実施例を説明する。
【実施例】
【0032】
図1は、本発明装置の多重系プログラマブルコントローラシステムの一実施例の構成図である。図1において、11、12が多重系を構成するプログラマブルコントローラである。両方のプログラマブルコントローラは同じ構成をしている。初期状態ではいずれかが主系、もう片方が従系の多重系の構成となっている。どちらが主系で、どちらが従系になるかは、スイッチ等により決定することができる。ここではコントローラ11が主系、コントローラ12が従系になっているとする。
【0033】
38はプロセスIOであり、制御対象である発電機や製鉄の装置などのプロセスのアクチュエータやセンサと接続するための入出力装置である。プロセスIO38は、コントローラ11、12内のCPU24に接続されて、センサからの信号をコントローラに取り込み、コントローラでの演算結果をプラントのアクチュエータに伝達する。
【0034】
36は制御系ネットワークであり、コントローラ11、12に対してコマンドを送信したり、コントローラ間でデータを通信したり、コントローラのデータをサーバ35に送信したりするのに用いられる。制御系ネットワーク36は、コントローラ11、12内のネットワークアダプタ21に接続される。なお、ネットワークアダプタ21の機能については、図2を用いて別途説明する。
【0035】
35は制御系ネットワーク36に接続された制御サーバであり、コントローラ11,12に対して制御の指示をコマンドとして送信したり、コントローラ11,12から送られてくるデータを蓄積したりする。
【0036】
34は制御サーバ35に接続された情報系ネットワークであり、生産計画情報、ディスプレイ表示用データなどが送信される。
【0037】
31は制御サーバ35に接続されたヒューマンマシンインタフェース(HMI)計算機であり、制御対象プロセス、コントローラ11,12の状態の表示や制御の指示を行う。
【0038】
33はインターネットなどの広域ネットワークであり、このネットワークを通じて遠隔監視や遠隔保守などを行う。32はファイアウォールであり、インターネット33と情報系ネットワーク34との間のデータ転送を行うとともにインターネット33からの不正アクセスを防ぐ役割を果たす。
【0039】
ただし、ファイアウォール32によっても不正アクセスを完全に防ぐことは難しい。ファイアウォールでは正常と判断されるパケットに隠して不正な情報を送信し、あるいは情報系ネットワーク34などに直接に不正な計算機を接続してアクセスを試みるようなものに関しては防ぐことができない。
【0040】
本発明のシステムを構成する主要なハード部分は概略以上のようである。ここで、本発明で対象としているのはプログラマブルコントローラである。このため、プロセス入出力装置を備え、ここを介して制御対象から一定周期でプロセス信号を入手し、かつ一定周期でアクチュエータに操作信号を与えている。一般の計算機とは、この点の構成が大きく相違する。
【0041】
係るプログラマブルコントローラは、今までであれば工場内の独立した計算機設備として管理され、他の計算機設備と連携されることは少なかった。然しながら、プログラマブルコントローラが汎用化装置で構成されるようになり、広域化制御などの目的で通信系が取り込まれたことによって、インターネットからもアクセス可能な環境で使用されることになった。
【0042】
以上のことから本発明では、インターネットからもアクセス可能な多重系プログラマブルコントローラを対象とし、外部からの攻撃に対しても正しく動作可能なプログラマブルコントローラとする。以下、このために必要なコントローラ11、12を構成する具体的なハード部分について説明する。
【0043】
まず、コントローラ11,12において、21はコントローラ11、12が制御系ネットワーク36と通信するのに用いられるネットワークアダプタである。ネットワークアダプタ21中には、制御系ネットワーク36から送られてくる通信を監視するトラフィック監視回路23と、コントローラ11の制御系ネットワーク36との通信を遮断する遮断回路22などがある。ネットワークアダプタ21の機能については、図2を用いて別途説明する。
【0044】
24は、コントローラの処理を実行するCPUである。コントローラの処理には制御プログラムの実行、プロセスIO38の入出力、制御系ネットワーク36との通信、多重系の構成制御などの処理がある。
【0045】
25は二重化制御回路であり、コントローラ11と12の二重化制御回路25の間が、多重化リンク37で接続されている。多重化リンク37は、多重系のコントローラ間において、コントローラの状態の通知、データの受け渡しに使用されている。
【0046】
二重化制御回路25は、多重系コントローラ11,12の状態の制御や、多重化リンク37を用いた通信を行う。二重化制御回路25中で、26は転送回路であり、制御系ネットワーク36と通信するデータを、他系のコントローラに対して転送する働きをする。28は危険評価値記憶回路であり、コントローラのセキュリティ上の危険度を評価した値を記憶している。27は評価値の比較回路であり、危険評価値記憶回路28に記憶されている危険評価値を危険評価値閾値と比較して、主系と従系の切り替えの制御に使用する。二重化制御回路25に関しては、図5を使用して後で詳細に説明する。
【0047】
29はメモリであり、CPU24が実行するプログラムやデータを記憶している。このうち、291は制御プログラム、292はフィルタである。これらは、制御系ネットワーク36との通信内容を、多重化リンク37を通して他系のコントローラに転送するときに、フィルタリングを行うためのプログラムとデータである。294はプログラム実行のログを記録する領域であり、293はログ監視のプログラムとデータである。ログ記録領域294の内容を調べることにより、コントローラが異常な動作をしていないか監視する。
【0048】
本発明のコントローラシステムは、概略以上のように構成されており、基本的に主系と従系のコントローラは同一に構成されている。以下、コントローラ各部の動作、機能について詳細に説明するが、その前提として特に断りのない限り、以下の説明は主系コントローラ11について説明をしている。従系コントローラ12との関連が生じた場合には、その旨の説明を行う。
【0049】
まず図2は、本発明装置のネットワークアダプタの一実施例の構成図である。ネットワークアダプタ21は、図1のコントローラ11内に存在する。
【0050】
図2のネットワークアダプタ21において、215は図1中の制御系ネットワーク36に接続される制御系ネットワーク接続線である。211は制御ネットワーク36に対してデータを送信する送信器であり、送信バッファ213に格納されているデータを送信する。また、212は制御系ネットワーク36からデータを受信する受信器である。
【0051】
22は遮断回路であり、二重化制御回路25から遮断指示線216を通して行われる遮断の指示に従い、制御系ネットワーク36から通信を遮断する働きをする。
【0052】
23は制御系ネットワーク36との通信を監視するトラフィック監視回路である。トラフィック監視回路23中で、231は制御系ネットワーク36からの通信を一時格納するトラフィック監視回路バッファである。232はトラフィック監視回路バッファ231に格納されている通信を調べるトラフィック監視部である。調べた結果、異常が発見されると、危険度通知線219を通して二重化制御回路25に対してその異常の危険度を送信する。
【0053】
233はトラフィック監視部232が使用するトラフィック監視ルール記憶部である。異常を発見するためのルールとその異常の危険度が格納されている。234はトラフィック監視部232で使用するタイマである。制御系ネットワーク36からの通信の頻度を測定するのに使用される。
【0054】
なお、図2において214は受信バッファであり、トラフィック監視回路バッファ231を通過した制御系ネットワーク36からの受信データが格納される。217はCPU24と送信バッファ213および受信バッファ214の間に設けられた信号伝送用のバスであり、218は受信バッファに受信データが入ったことをCPU24に通知する割り込み線である。
【0055】
図3は、図2のネットワークアダプタ21内のトラフィック監視ルール格納部233に記憶された監視ルールの一例である。トラフィック監視ルールは、制御系ネットワーク36との通信において、許可されているものと禁止されているものを区別するためのルールである。
【0056】
図3の図示例では、横軸項目に示すように、ルールは送信元2331と、コマンド2332と、周期2333と、許可、禁止の区別2334と、危険度2335が組になって記憶されている。縦軸の項目2336〜2339の各行がそれぞれ一つの監視ルールを表している。
【0057】
2331の列は送信元のアドレス情報であり、値が0のときはどのアドレスでもよいことを、また値が0以外のときは特定アドレスの送信元(送信元があらかじめ判明しているの意味)であることを表している。2332の列はコマンドの情報であり、値が0のときはどのコマンドでもよいことを、値が0以外の時はこの値で定まる特定のコマンドであることを表している。2333は周期の情報であり、ここで記載されている時間より短い時間間隔で通信を受信したときにルールが適用される。但し、周期の情報が0のときには周期によらないことを表す。2334は、このルールに該当する通信が許可されているか禁止されているかを表す。値が1のときに許可されており、0のときに禁止されている。2335の列は、通信がルールに合致したときの危険度を表している。この危険度の値が図1中の危険評価値28に加算されていく。
【0058】
このルールの例では、縦軸のルール2336は、「特定の送信元からのコマンドが5である場合には、通信を許可する」の意味であり、以下同様にルール2337は、「特定の送信元からのコマンドが6である場合には、通信を許可する」、ルール2338は、「不特定の送信元(あらかじめ知られた送信元ではないの意味)からの信号が10ミリ秒以下の周期で通信されている場合には、通信を許可せず、かつ危険度を重み1に評価づけする」、ルール2339は、「不特定の送信元からのコマンドが2である場合には、許可せず、かつ危険度を重み10に評価づけする」を意味している。
【0059】
なお、ルール2339において、コマンド2は、このコマンド自体がプログラマブルコントローラに対する悪意の改変などを実施可能なコマンドということができる。また、ルール2338において、非常に短い周期で数度にわたりアクセスし続ける状況は通常生じないので、短周期アクセスが連続する場合にはこれを悪意の信号と判断する。これらのルールのうち、2336と2337は許可ルール、2338と2339は禁止ルールということができる。
【0060】
図4は、図2のトラフィック監視回路バッファ231のレジスタに格納される通信データの一例である。この例では通信データとして、2315〜2318の4つの通信データをレジスタに格納した状態を表している。なお、各通信データは図4の横軸に示すように、例えば送信元2331、コマンド2332、データ2313、時刻2314で構成されている。より具体的には、2331の行はデータの送信元のアドレス情報、2332はコマンドの情報、2313はコマンドの引数となるデータの情報、2314は受信した時刻である。なお、データ2313に記載された情報は、16進(0X3)で表記されており、例えば通信データ2315は「温度が100度」、通信データ2316は「圧力が10psi」といったことを表している。
【0061】
図4の通信データでは、時刻2314の数値が小さいほど、より早い時点でネットワークアダプタ21に取り込まれたデータであることを意味しており、いわゆるFIFO(Fast In Fast Out)の考え方に従い処理が実行される。
【0062】
つまり、最初に最も古い時点で取り込まれた通信データ2318から監視の処理を実行し、監視の処理が終了すると図2の受信バッファ214へとデータが出力され、上の3つの行のレジスタに格納された通信データ(2317,2316,2315)が1つずつ下のレジスタにシフトする。新しいデータが受信されたときには空いている一番上の行にデータが入力される。但し、全部の行が埋まっているときに、更に新しいデータを受信したときにはその新しいデータは廃棄する。
【0063】
図3で説明したトラフィック監視ルール233に格納されている監視ルールに基づいてこれらの通信データを処理すると、通信データ2315〜2317はいずれも禁止ルール(ここでは2338と2339)に合致していないので「許可」とされ、危険度は加算されない。具体的には、禁止ルール2338と2339の送信元2331は不特定(0:身元が不明)を禁止の対象としているが、通信データ2315〜2317は特定(1:身元が判明しており善意の送信者である)の相手である。これに対し、通信データ2318は、コマンド2332が(2)であり、禁止ルール2339のコマンド2332の条件に合致している。
【0064】
監視ルールに基づいて調べた結果、危険度が発見された場合の、図4の通信データ2318の取り扱いについては、これを廃棄処理とすることも、また受信バッファ214に送信してCPU24の判断に委ねることのいずれの対策を採ることも適宜採用可能である。
【0065】
本発明では、係る異常アクセスに対して最終的には図2の遮断部22により、通信遮断を実行するが、この最終処理は以下の手順を踏んで行われる。まず、監視ルールに基づいて調べた結果危険度が発見されると、危険度通知線219を通して二重化制御回路25に対してその異常の危険度を送信する。二重化制御回路25では、図3のルール2339の列2335に記載されている危険度10が、危険評価値に加算される。
【0066】
図5は、図1中の二重化制御回路25の構成の一例である。この図で、危険評価値記憶回路28には、危険度通知線219を通してトラフィック監視回路23から送信されてくる危険度が加算され、危険評価値として記憶される。従って、例えば図3、図4の説明で危険度10に評価された送信元1のコマンド2に関する通信データ2318について、あらかじめ危険評価値5が記憶されているときに、新たに危険度10が報知された場合には、危険評価値記憶回路28には、新たな危険評価値として15が記憶される。なお、危険評価値記憶回路28には、CPU24からも危険度を加算することが可能である。
【0067】
危険評価値には、二つの閾値281と282が存在する。これらの閾値の設定はCPU24等から行うことが可能である。危険評価値閾値比較部283は、危険評価値28と閾値281、282との比較を行っている。閾値282は、閾値281よりも大きな値が設定されている。このため、危険評価値閾値比較部283での比較結果、まず閾値281を逸脱したことが検出される。
【0068】
危険評価値記憶回路28の記憶値が閾値281を超えたことを危険評価値閾値比較部283が検出すると、この結果が転送モードフラグ回路251に伝達されて、転送モードフラグがオンに変更される。転送モードフラグがオンになると、割り込み線216を通じて図2のネットワークアダプタ21の遮断回路22に伝達され、受信を遮断する。これにより、以後主系コントローラ11は、制御系ネットワーク36から自己の受信器212を経由する通信データの取り込みを停止する。
【0069】
ここで転送モードフラグとは、図1において従系コントローラ12が制御系ネットワーク36との通信を行い、多重化リンク37を通してその内容を主系コントローラ11に転送する転送モードになっていることを表すフラグである。
【0070】
つまり、この状態では図1の主系コントローラ11に対する不正アクセスが発生している可能性が高いことから、主系コントローラ11のネットワークアダプタ21を使用した制御系ネットワーク36からの受信を中断し、代わりに図1にTで示す転送ラインを新たに形成して従系コントローラ12のネットワークアダプタ21を使用した通信を実行する。この転送モード状態では、主系コントローラ11に対する信号の入出力経路が従系コントローラ12のネットワークアダプタ21経由になっているだけで、主体的に動作しているのは主系コントローラ11のCPU24である。この転送モードは、危険評価値記憶回路28の記憶値が低い設定の閾値281を超えたときに発動されるものであり、いわば第一段階の不正アクセス回避処置である。
【0071】
この転送モードを形成するために、図5の二重化制御回路25には主系、従系コントローラ11,12の間に転送通信部60,70を構成している。以下、転送通信部60,70の構成について詳細に説明する。
【0072】
まず、272は多重化リンクアダプタであり、相手コントローラの二重化制御回路25との間に形成された多重化リンク37を用いた送受信を行う。多重化リンクアダプタ272は受信器273と、送信器274で構成される。371、372は、有線あるいは無線で形成された送信路と受信路である。
【0073】
多重化リンク37を用いた送信を行うために、以下の回路が準備され各種のデータが送信される。送信される第一のデータは、危険評価値記憶回路28に記憶された「危険評価値」である。危険評価値は評価値送信部256により、送信器274を通して他のコントローラ12に定期的に送信される。
【0074】
送信される第二のデータは、主系コントローラ11が正常であることを意味する「正常通知」のデータである。257は正常通知送信部であり、CPU24が定期的にこの正常通知送信部257に書込みを行うことにより、送信器274を通して正常通知が従系コントローラ12に送信される。
【0075】
送信される第三のデータは、主系コントローラ11が異常であることを意味する「異常通知」のデータである。ここで、主系コントローラ11異常には幾つかの種類があり、例えば主系コントローラ11自身に異常が発生したのであれば、先に説明したCPU24による正常通知送信部257への書込みが途絶え、従系コントローラ12がこれを検知することができる。第三のデータとして取り上げたのは、危険評価値が閾値281、282を超えた状態の通知である。このため異常通知送信部258が備えられ、危険評価値逸脱に関する異常が発生したことを従系コントローラ12に通知する。なお、危険評価値逸脱に関する異常の通知は、CPU24が異常通知送信部258にアクセスすることによっても行うことが可能である。
【0076】
送信される第四のデータは、CPU24が作成し、制御系ネットワーク36に送るデータである。262はネット送信バッファであり、CPU24がここにデータを書きこむことによりその内容が送信器274を通して従系コントローラ12に転送される。これにより制御系ネットワーク36との通信が多重化リンク37を介して転送実施される。
【0077】
以上説明したのは転送通信部60,70のうち、60の部分である。この部分は送信側の回路構成と、データについては主系コントローラ11での動作を述べたものである。
【0078】
これに対し、従系コントローラ12の転送通信部60,70のうち、受信側回路70が以下のように機能し、データ処理を行っている。ここでは、従系コントローラ12の二重化制御回路25内の受信器273に受信された主系コントローラ11の多重化リンク37からのデータは、その内容によって振り分けられる。
【0079】
受信内容が、第一のデータ(危険評価値)であった場合には、受信データが危険評価値受信部253に保存される。次に受信された主系コントローラ11の危険評価値は、従系である自分の危険評価値記憶回路28に記憶されている危険評価値と評価値比較部27において比較される。
【0080】
比較の結果、自分の危険評価値記憶回路28に記憶された危険評価値が閾値282を超えたとき、自分の危険評価値記憶回路28に記憶された危険評価値を受信した主系コントローラ11の危険評価値と比較して危険評価値が低い方のコントローラが主系となり主系フラグ271がオンとなる。
【0081】
この結果によれば、転送モードで運転継続中の主系コントローラ11の危険評価値が閾値282を超えたときに従系コントローラ12を主系とする運転に切り替わる。
【0082】
受信内容が、第二のデータ(データ正常通知)であった場合には、正常通知受信部254にデータが格納される。危険評価値受信部253と正常通知受信部254には、ウォッチドッグタイマ252が接続されており、別のコントローラ(主系コントローラ11)からのこれらの通知が一定時間到着しないと別のコントローラ(主系コントローラ11)に異常が発生したとして、主系フラグ271の切り替えを行う。つまり、コントローラ12を主系とし、コントローラ11を従系とする運用に切り替わる。
【0083】
受信内容が、第三のデータ(データ異常通知)であった場合には、異常通知受信部255に通知、登録され、主系フラグ271の切り替えに使用される。別のコントローラがネット送信バッファ262から送信データが受信器273で受信されるネット受信バッファ261に格納される。
【0084】
図6は、図1に示したコントローラ11、12のメモリ29に格納されている制御プログラムの一例である。この制御プログラムはコントローラが主系であるときに実行される。まずステップS511では、制御ネットワーク36からコマンドを受信する処理を行う。
【0085】
この処理の内容は図7のネット受信プログラムを用いて別途説明するが、要するに主系コントローラ11が不正アクセスを受けていない状態では、主系コントローラ11内のネットワークアダプタ21の受信バッファ214に蓄積されたデータを使用する。不正アクセスを受けて転送モードになっているときには、従系コントローラ12から転送されてきたデータが蓄積されている二重化制御回路25内のネット受信バッファ261のデータを使用する。
【0086】
ステップS512からステップS517までの処理は、通常に行われる処理であり、本発明の切替えに特に関与するものではないが、ごく簡単に説明すると、以下のようである。
【0087】
まずステップS512では、ステップ511で受信したコマンドに基づいた処理を実行する。ステップS513では、メモリ29にあるログ領域294にコマンドを実行したことを表すログを記入する。ステップS514では、図1中のプロセスIO38から制御対象に設置されているセンサのデータなどを読み込む。ステップS515では、前のステップS514で読み込んだデータを元に制御用の計算を実行する。ステップS516では計算の結果をプロセスIO38に書込み制御対象のアクチュエータなどを動作させる。ステップS517では、行った制御の内容に関してログをログ領域294に記入する。
【0088】
最後のステップS518では、ステップS514で取得したセンサの値や実行した制御の結果を制御ネットワークに対して送信する。この送信の処理に関しては図8のネット送信プログラムで説明するが、要するに主系コントローラ11が不正アクセスを受けていない状態では、主系コントローラ11内のネットワークアダプタ21の送信バッファ213にデータを送信する。不正アクセスを受けて転送モードになっているときには、二重化制御回路25内のネット送信バッファ262データを書き込み、従系コントローラ12に送出する。
【0089】
図7は、図6中のステップS511のネット受信プログラムの詳細フローである。制御ネットワーク36からの受信は、図5中の転送モードフラグ回路251の内容に応じて図1中のネットワークアダプタ21を通して行うか、二重化制御回路25を通して多重化リンク37から行うか切り替える。ステップS521では、転送モードフラグ回路251のフラグを調べている。転送モードフラグ回路251がオンではないときには、ステップS522においてネットワークアダプタ21の受信バッファ214にデータがあるか調べ、ある場合にはステップS523でそこからデータを読み出す。ステップS521で転送モードがオンであった場合には、ステップS524で二重化制御回路25のネット受信バッファ262を調べ、空でないときにはステップS525でデータを受信バッファ262から読み出す。
【0090】
図8は、図6中のステップS518のネット送信プログラムの詳細である。制御ネットワーク36への送信は、図5中の転送モードフラグ回路251の内容に応じて図1中のネットワークアダプタ21を通して行うか、二重化制御回路25を通して多重化リンク37から行うかを切り替える。ステップS531では、転送モードフラグ回路251のフラグを調べている。転送モードフラグ回路251がオンではないときにはステップS532において、ネットワークアダプタ21の送信バッファ213にデータを書きこむ。ステップS531で転送モードがオンであった場合にはステップS533で、二重化制御回路25のネット送信バッファ261にデータを書きこむ。
【0091】
次に図9と図10は、図5の多重化リンク37を使用した信号転送処理(リンクとネット間での転送のアルゴリズム)を示しており、このうち、図9はリンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズム、図10はネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムを示している。
【0092】
図9のリンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズムは、図5中の転送モードフラグ回路251のフラグがオンになったときに定期的に実行される。この場合、主系コントローラ11では、多重化リンク37経由で受信したデータをネットワークアダプタ21経由で制御系ネットワーク36に送信する働きをする。具体的には、ステップS541で二重化制御回路25のネット受信バッファ262が空か調べ。空でないときにはステップS542でネット受信バッファ262からデータを読み出し、ステップS543でネットワークアダプタ21の送信バッファ213に書きこむ。
【0093】
図10のネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムは、図5中の転送モードフラグ回路251のフラグがオンになったときに定期的に実行される。この場合、従系コントローラ12では、ネットワークアダプタ21経由で制御系ネットワーク36から受信したデータを多重化リンク37経由で別のコントローラ(主系コントローラ11)に転送する働きをする。
【0094】
具体的には、ステップS551でネットワークアダプタ21の受信バッファ214を調べ、空でなければ、ステップS552で受信バッファ214からデータを読み出す。読みだしたデータはステップS553でメモリ29中のフィルタ条件292(この内容については、図11で説明する)に合致するか調べる。合致するフィルタ条件があった場合には、ステップS554でそのデータの転送はスキップする。合致するフィルタ条件がなかった場合にはステップS555で二重化制御回路25のネット送信バッファ261にデータを書きこんで転送する。
【0095】
図11は、図1中のフィルタ292が使用するフィルタ条件のテーブルの一例である。フィルタ条件は、横軸項目の送信元のアドレスの情報2331、コマンドの情報2332、コマンド2332の引数となるデータの条件612、周期の情報2333、その通信が許可されているか禁止されているかを表す情報2334、この条件に合致したときの危険度の情報2335で構成される。図11のフィルタ条件を、図3の監視ルールと比較して明らかなように、フィルタ条件は、監視ルールにデータの情報2333を追加したものである。
【0096】
この図11で、616〜619がそれぞれ具体的なフィルタ条件を表している。この意味するところは、縦軸のフィルタ条件616は、「特定の送信元からのコマンドが5であり取り込んだデータXが(0<X<100)の範囲の大きさである場合には、通信を許可する」の意味であり、以下同様にフィルタ条件617は、「特定の送信元1からのコマンドが6である場合には、通信を許可する」、フィルタ条件618は、「不特定の送信元(あらかじめ知られた送信元ではないの意味)からの信号が10ミリ秒以下の周期で通信されている場合には、通信を許可せず、かつ危険度を重み1に評価づけする」、フィルタ条件619は、「不特定の送信元からのコマンドが2である場合には、許可せず、かつ危険度を重み10に評価づけする」を意味している。
【0097】
図10のステップS553で実施するフィルタ条件292の具体的な内容を図11の事例で説明したことから明らかなように、本発明では主系コントローラ11が転送モードにある時に、従系コントローラ12の通信データを受け入れるが、図3に示した自己の監視ルールと同等かそれ以上の厳しいフィルタ条件に合致する通信データのみを受け入れている。これにより、不正アクセスを識別する能力は、転送モードにおいてもそれ以前の健全状態と同等以上に保つことができる。
【0098】
図12は、図1中のログ領域294に書き込まれるログの内容の一例である。ログは、例えば実行された処理の種別621、処理の引数となったデータ622、処理の時刻623で規定されて記録される。なお、処理の種別621はコマンド2332を含み、通常はコマンド2332と同じものと考えてよい。
【0099】
図12の縦軸の625〜626が、具体的に書きこまれたログのエントリである。ログエントリ625は時刻60で、処理種別6により処理されたデータ(Ox39,Ox35)である。また、ログエントリ626は時刻100で、処理種別5により処理されたデータ(Ox32,Ox31,Ox40)である。ここで、16進で表記されたログエントリ626のデータ(Ox32,Ox31,Ox40)は、温度が210度であることを意味している。
【0100】
図13は、図1中のログ領域294に書き込まれたログの内容(図12)を監視するログ監視部293が使用するログ監視ルールの一例である。ログ監視ルールは、例えば処理種別の情報621、処理の引数であるデータの条件612、その処理の実行が許される周期2333、ルールに合致する処理が許可されているか禁止されていないかの情報2334、ルールに合致したときの危険度の情報2335で定義されている。
【0101】
また縦軸の265〜269がそれぞれログ監視ルールを表している。例えばログ監視ルール265の意味するところは、「処理種別5により処理され、処理後のデータXが(0<X<100)の範囲の大きさである場合には、処理が許可されている」の意味であり、以下同様にログ監視ルール266は、「処理種別6により処理された場合には、処理を許可する」、ログ監視ルール267は、「処理種別7により処理され、周期100ミリ秒以下の場合には、処理が許可されているが危険度を5に評価する」、ログ監視ルール268は、「周期10ミリ秒以下の場合には、処理が許可されず危険度を1に評価する」、ログ監視ルール269は、「処理種別2により処理された場合には、許可せず、かつ危険度を重み10に評価づけする」ことを意味している。
【0102】
図14は、図1中のログ監視部293のアルゴリズム(ログ監視プログラム)である。ステップS561ではログ領域294に新たにログが書き込まれるまで待機する。新たにログが書き込まれるとステップS562でそのログエントリを読み出す。この場合には、例えば図12のログエントリ625〜626が読みだされる。
【0103】
ステップS563では図13で説明したログ監視ルール(265−269)を順番に読み出すためのポインタを初期化している。ステップS564では監視ルールを一つ読み出しポインタを一つ進める。ステップS565でログエントリがルールに違反しているか判断している。
【0104】
ルールに違反している場合にはステップS566でルールに書かれている危険度の値を危険評価値28に加算する。最後のルールになるまでステップS567で繰り返す。ステップS568ではログを最後まで読みだしたか判断している。まだログエントリがある場合にはステップS562に戻り次のログエントリを読み出す。最後まで読みだした場合にはステップS561に戻り新しいログが書き込まれるまで待機する。
【0105】
図12に例示したこれらの一連のログエントリ625〜626を、図13に例示した一連のログ監視ルール(265−269)でチェックした結果は、以下のようである。まず、ログエントリ625は処理種別6により処理されたデータ(Ox39,Ox35)であるため、図13の監視ルール266「処理種別6により処理された場合には、処理を許可する」を参照して適正(ルールに違反していない)とされる。
【0106】
次に、ログエントリ626についてみると、これは処理種別5により処理されたデータ(Ox32,Ox31,Ox40)であるが、ここでデータ(Ox32,Ox31,Ox40)は、温度が250度であることを意味している。これに対し、図13のログ監視ルール265のデータ条件612はデータXが(0<X<100)の範囲の大きさである場合には、通信を許可する」の意味であり、温度範囲が逸脱している。このため、このログエントリ626は、ログ監視ルール265を参照して、不適正(ルールに違反)とされる。この場合、図14のステップS565において、ログエントリ626が監視ルール265に違反していると判断され、ステップS566において、危険度を評価値に加算する処理が実施される。
【0107】
図15は、図5の主系フラグ271がオンからオフに変化したときに実行される主系ダウンの処理(主系ダウンプログラム)の一例である。このとき、ステップS571では定期的に実行されていた図6で説明した制御プログラムの実行を停止する。ステップS572では、制御プログラムを再度制御系ネットワーク36からロードする。これは、不正アクセスにより制御プログラムの内容が改ざんされたり、破壊されたりしている可能性があるからである。このローディングは、別のコントローラ(従系コントローラ12)が制御系ネットワーク36と通信し、多重化リンク37経由で行われる。ステップS573では、不正アクセスの攻撃対象となっていたコントローラ(主系コントローラ11)を囮として攻撃の対象とし続けるために擬似制御プログラムの実行を開始する。擬似制御プログラムに関しては図16で説明する。
【0108】
図16は図15の主系ダウンのときに、制御プログラムの代わりに起動される擬似制御プログラムのアルゴリズムである。ステップS581では、制御系ネットワーク36からデータを受信し、ステップS581でその内容をログに記録し、ステップS583で擬似データを作成し、その擬似データをステップS584において制御系ネットワーク36に送信する。このように、擬似制御プログラムでは実際の制御は実行しないが、制御系ネットワーク36からの送受信を擬似的に継続実行することにより、不正アクセスの囮となり、新たに主系となったコントローラ12への攻撃を防ぐ。
【0109】
図17は、今まで従系であったコントローラ12において、主系フラグ271がオンになることにより主系に切り替わったときに実行される主系切り替え処理のアルゴリズムの一例である。ステップS591において図6で説明した制御プログラムの定期的実行を開始している。
【0110】
図18は、以上説明した本発明のプログラマブルコントローラシステムの各部の動きを時間の経過と共に示した図である。ここでは、縦軸方向に時間経過により生じる状態変化を示し、横軸に主系コントローラ、従系コントローラの各部の動きを示している。
【0111】
より具体的には、状態変化が「正常A」から「転送モード移行中B」を経由して「転送モードC」となり、さらに「主従切り替え中D」を経由して「主従反転モードE」に至るまでを示している。さらにこの状態変化を生じせしめるきっかけとなる時折のイベントを表示している。これに対し、横軸の主系コントローラ11と従系コントローラ12について、ネットワークアダプタ21、CPU24,二重化制御回路25の動きを示している。以下、状態ごとに、システム全体の動きを簡単に整理して説明する。
【0112】
「正常A」:
主系コントローラ11が稼動し、従系コントローラ12は待機状態にある。主系コントローラ11のCPU24は、図6の制御プログラムとこれに続く図14のログ監視プログラムを実行し、ネット受信、ネット送信、ログ書き込み、ログ判定の処理を実施している。この前提としてネット受信により、ネットワークアダプタ21で受信データの正常判定を行い、正常判定された通信データを、受信バッファ214を経由してCPU24に提供している。またネットワークアダプタ21は、CPU24からのデータを送信バッファ213に受けてネット送信を実行している。
【0113】
「転送モード移行中B」
上記の状態で、イベントとして攻撃受信を受ける。このときに主系コントローラ11のネットワークアダプタ21では、図2のトラフィック監視回路23で異常判定し危険度通知219を発して二重化回路25に処理を移す。図5の二重化回路25では、評価値を更新し、閾値281を超過した事を持って、転送モードとする。多重化リンク37経由で従系コントローラ12の二重化回路25は転送モードになったことを検知する。なお、主系コントローラ11のCPU24は、図6の制御プログラムとこれに続く図14のログ監視プログラムを継続して実行している。
【0114】
「転送モードC」
転送モードCでは、主系コントローラ11は、多重化リンク37で従系コントローラ12に接続され、従系コントローラ12経由でネット接続される。従系コントローラ12のネットワークアダプタ21では、ネット受信により、ネットワークアダプタ21で受信データの正常判定を行い、正常判定された通信データを、受信バッファ214を経由してCPU24に提供している。CPU24では、図10の従系コントローラにおけるネット・リンク転送処理を実行し、二重化制御回路25のネット送信バッファ262にデータを送る。通信データは主系コントローラ11の二重化制御回路25のネット受信バッファ261経由でC主系PU24に送られる。
【0115】
主系コントローラ11のCPU24は、基本的に図6の制御プログラムとこれに続く図14のログ監視プログラムを実行するが、このときのデータ受信と送信処理は、図7、図8の転送モードに従い、ネット受信バッファ261からデータを得てその処理結果データをネット送信バッファ262に送る。さらに多重化リンク37経由で再度従系コントローラ12の処理は、再度従系コントローラ12に移り、二重化制御回路25のネット受信バッファ261に受信される。CPU24では、図9の従系コントローラにおけるリンク・ネット転送処理を実行し、二重化制御回路25の送信バッファ213にデータを送る。これを受けて、最終的に送信バッファ213から、ネット送信が行われる。
【0116】
「主従切り替え中D」
主系コントローラ11の二重化制御回路25は、評価値を更新しており、閾値2を超過したことを以って、自己の主系フラッグをOFFにする。これを受けて、従系コントローラ12の二重化制御回路25は、自己の主系フラッグをONにする。
【0117】
「主従反転E」
この状態では、元従系の位置にあったコントローラ12は主系となって、図6、図14の処理を実行する。このときの動きは、「正常A」のときの主系と全く同じであるので説明を省略する。
【0118】
他方、元主系の位置にあったコントローラ11は従系となって、図15の主系ダウン処理、引き続き図16の模擬制御プログラムの処理を実行する。これにより、攻撃側にコントローラが切り替わったことを知られないように操作する。なお、模擬制御プログラムの処理は適宜の時点で終了してよい。
【符号の説明】
【0119】
11〜12:コントローラ、21:ネットワークアダプタ、22:遮断回路、23:トラフィック監視回路、231:トラフィック監視回路バッファ、232:トラフィック監視部、233:トラフィック監視ルール記憶部、24:CPU、25:二重化制御回路、251:転送モードフラグ回路、252:ウォチドックタイマ、253:危険評価値受信部、256:危険評価値送信部、26:転送回路、261:ネット受信バッファ、262:ネット送信バッファ、27:評価値比較部、271:主系フラグ、28:危険評価値記憶回路、281〜282:危険評価値閾値、283:危険評価値閾値比較部、29:メモリ、31:ヒューマンマシンインタフェース計算機、32:ファイアウォール、33:インターネット、34:情報系ネットワーク、35:サーバ計算機、36:制御系ネットワーク、37:多重化リンク、38:プロセスIO
【特許請求の範囲】
【請求項1】
プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつ前記プロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,該CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として前記制御対象の操作を行い他方のコントローラを従系として待機させると共に、前記制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、
前記コントローラは、前記制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、前記コントローラ間に設けられた多重化リンクと、前記トラフィック監視機能の検知に応じて前記多重化リンクを用いて前記制御系ネットワークとの通信を行う二重化回路とを備えることを特徴とする多重系コントローラシステム。
【請求項2】
請求項1記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記ネットワークアダプタが受信する通信による不正アクセスを、その種別に応じて危険度の数値評価し、該危険度評価値が第1の閾値を超えたことを以って、ネットワークアダプタによる制御系ネットワークとの通信を遮断し、前記多重化リンクを用いた前記制御系ネットワークとの通信を行うことを特徴とする多重系コントローラシステム。
【請求項3】
請求項2記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記危険度評価値が前記第1の閾値よりも大きな値の第2の閾値を超えたことを以って、主系としていたコントローラを停止し、従系としていたコントローラによる前記制御対象の操作を実行することを特徴とする多重系コントローラシステム。
【請求項4】
請求項1から請求項3のいずれかに記載の多重系コントローラシステムにおいて、
前記制御系ネットワークとの通信を行い、前記多重化リンクを用いて通信を転送する側のコントローラの前記二重化回路は、フィルタ手段により前記受信した通信を選別した後に前記多重化リンクを通して他のコントローラに転送することを特徴とする多重系コントローラシステム。
【請求項5】
請求項2または請求項3に記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記危険評価値を記憶する手段と、該危険度評価値の閾値を記憶する手段を持ち、不正アクセスを検知する毎に該不正アクセスの危険度を該危険度評価値に加算し、前記多重化リンクを通して各コントローラの危険度評価値をお互いに通信しあい、危険度評価値が前記閾値を超えたときに、危険度評価値が最も低いコントローラを主系モードとすることを特徴とする多重系コントローラシステム。
【請求項6】
請求項3記載の多重系コントローラシステムにおいて、
前記コントローラは、実際の制御を行う制御プログラムと、該制御プログラムと似せた通信を行う擬似制御プログラムとを有し、主系としていたコントローラを停止するときに、今まで実行していた前記制御プログラムに代えて前記擬似制御プログラムを継続実行することを特徴とする多重系コントローラシステム。
【請求項7】
請求項1から請求項6のいずれかに記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記制御系ネットワークからの不正アクセスを検知するために、前記通信に関して送信元、コマンド、通信周期を用いたトラフィック監視ルールを準備しており、受信する通信が当該監視ルールに違反することを持って不正アクセスを検知することを特徴とする多重系コントローラシステム。
【請求項8】
請求項7に記載の多重系コントローラシステムにおいて、
前記トラフィック監視ルールは、通信の許可と禁止の区別情報と共に、通信禁止のときの危険度を数値化して保持していることを特徴とする多重系コントローラシステム。
【請求項9】
請求項3に記載の多重系コントローラシステムにおいて、
主系としていたコントローラを停止し、従系としていたコントローラによる前記制御対象の操作を実行するときに、従系モードにあったコントローラは、前記制御系ネットワークからコントローラが実行するプログラムを受信し、該プログラムを主系モードにあったコントローラに対して前記多重リンクを通して転送し、主系モードにあったコントローラのプログラムを前記転送されたプログラムによって更新することを特徴とする多重系コントローラシステム。
【請求項10】
プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつ前記プロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,該CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として前記制御対象の操作を行い他方のコントローラを従系として待機させると共に、前記制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムの運転方法において、
前記主系コントローラにより制御対象の操作を行い従系コントローラが待機している正常モードと、前記主系コントローラはそのネットワークアダプタを使用する制御系ネットワークとの通信を行わず、従系コントローラがそのネットワークアダプタを使用して実行した制御系ネットワークとの通信が多重化リンクを経由して転送送受信される転送モードと、従系としていたコントローラを主系として前記制御対象の操作を行い主系としていたコントローラを従系として待機させる主従反転モードとを順次切替実行すると共に、モードの切替を、前記制御系ネットワークからの通信による不正アクセスの進展度合いに応じて行うことを特徴とする多重系コントローラシステムの運転方法。
【請求項11】
請求項10に記載の多重系コントローラシステムの運転方法において、
前記不正アクセスの進展度合いを、前記通信の種別に応じて危険度を数値評価し、該危険度評価値の大きさで判断することを特徴とする多重系コントローラシステムの運転方法。
【請求項1】
プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつ前記プロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,該CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として前記制御対象の操作を行い他方のコントローラを従系として待機させると共に、前記制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、
前記コントローラは、前記制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、前記コントローラ間に設けられた多重化リンクと、前記トラフィック監視機能の検知に応じて前記多重化リンクを用いて前記制御系ネットワークとの通信を行う二重化回路とを備えることを特徴とする多重系コントローラシステム。
【請求項2】
請求項1記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記ネットワークアダプタが受信する通信による不正アクセスを、その種別に応じて危険度の数値評価し、該危険度評価値が第1の閾値を超えたことを以って、ネットワークアダプタによる制御系ネットワークとの通信を遮断し、前記多重化リンクを用いた前記制御系ネットワークとの通信を行うことを特徴とする多重系コントローラシステム。
【請求項3】
請求項2記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記危険度評価値が前記第1の閾値よりも大きな値の第2の閾値を超えたことを以って、主系としていたコントローラを停止し、従系としていたコントローラによる前記制御対象の操作を実行することを特徴とする多重系コントローラシステム。
【請求項4】
請求項1から請求項3のいずれかに記載の多重系コントローラシステムにおいて、
前記制御系ネットワークとの通信を行い、前記多重化リンクを用いて通信を転送する側のコントローラの前記二重化回路は、フィルタ手段により前記受信した通信を選別した後に前記多重化リンクを通して他のコントローラに転送することを特徴とする多重系コントローラシステム。
【請求項5】
請求項2または請求項3に記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記危険評価値を記憶する手段と、該危険度評価値の閾値を記憶する手段を持ち、不正アクセスを検知する毎に該不正アクセスの危険度を該危険度評価値に加算し、前記多重化リンクを通して各コントローラの危険度評価値をお互いに通信しあい、危険度評価値が前記閾値を超えたときに、危険度評価値が最も低いコントローラを主系モードとすることを特徴とする多重系コントローラシステム。
【請求項6】
請求項3記載の多重系コントローラシステムにおいて、
前記コントローラは、実際の制御を行う制御プログラムと、該制御プログラムと似せた通信を行う擬似制御プログラムとを有し、主系としていたコントローラを停止するときに、今まで実行していた前記制御プログラムに代えて前記擬似制御プログラムを継続実行することを特徴とする多重系コントローラシステム。
【請求項7】
請求項1から請求項6のいずれかに記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記制御系ネットワークからの不正アクセスを検知するために、前記通信に関して送信元、コマンド、通信周期を用いたトラフィック監視ルールを準備しており、受信する通信が当該監視ルールに違反することを持って不正アクセスを検知することを特徴とする多重系コントローラシステム。
【請求項8】
請求項7に記載の多重系コントローラシステムにおいて、
前記トラフィック監視ルールは、通信の許可と禁止の区別情報と共に、通信禁止のときの危険度を数値化して保持していることを特徴とする多重系コントローラシステム。
【請求項9】
請求項3に記載の多重系コントローラシステムにおいて、
主系としていたコントローラを停止し、従系としていたコントローラによる前記制御対象の操作を実行するときに、従系モードにあったコントローラは、前記制御系ネットワークからコントローラが実行するプログラムを受信し、該プログラムを主系モードにあったコントローラに対して前記多重リンクを通して転送し、主系モードにあったコントローラのプログラムを前記転送されたプログラムによって更新することを特徴とする多重系コントローラシステム。
【請求項10】
プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつ前記プロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるCPUと,該CPUからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として前記制御対象の操作を行い他方のコントローラを従系として待機させると共に、前記制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムの運転方法において、
前記主系コントローラにより制御対象の操作を行い従系コントローラが待機している正常モードと、前記主系コントローラはそのネットワークアダプタを使用する制御系ネットワークとの通信を行わず、従系コントローラがそのネットワークアダプタを使用して実行した制御系ネットワークとの通信が多重化リンクを経由して転送送受信される転送モードと、従系としていたコントローラを主系として前記制御対象の操作を行い主系としていたコントローラを従系として待機させる主従反転モードとを順次切替実行すると共に、モードの切替を、前記制御系ネットワークからの通信による不正アクセスの進展度合いに応じて行うことを特徴とする多重系コントローラシステムの運転方法。
【請求項11】
請求項10に記載の多重系コントローラシステムの運転方法において、
前記不正アクセスの進展度合いを、前記通信の種別に応じて危険度を数値評価し、該危険度評価値の大きさで判断することを特徴とする多重系コントローラシステムの運転方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2013−16000(P2013−16000A)
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願番号】特願2011−148044(P2011−148044)
【出願日】平成23年7月4日(2011.7.4)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成25年1月24日(2013.1.24)
【国際特許分類】
【出願日】平成23年7月4日(2011.7.4)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]