(57)【特許請求の範囲】
【請求項１】
プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつ前記プロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるＣＰＵと，該ＣＰＵからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として前記制御対象の操作を行い他方のコントローラを従系として待機させると共に、前記制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、
前記コントローラは、前記制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、前記コントローラ間に設けられた多重化リンクと、前記トラフィック監視機能の検知に応じて前記多重化リンクを用いて前記制御系ネットワークとの通信を行う二重化回路とを備えることを特徴とする多重系コントローラシステム。
【請求項２】
請求項１記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記ネットワークアダプタが受信する通信による不正アクセスを、通信データごとに予め危険度を数値評価した危険度評価値を含むトラフィック監視ルールを用いて検知し、該危険度評価値が第１の閾値を超えたことを以って、ネットワークアダプタによる制御系ネットワークとの通信を遮断し、前記多重化リンクを用いた前記制御系ネットワークとの通信を行うことを特徴とする多重系コントローラシステム。
【請求項３】
請求項２記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記危険度評価値が前記第１の閾値よりも大きな値の第２の閾値を超えたことを以って、主系としていたコントローラを停止し、従系としていたコントローラによる前記制御対象の操作を実行することを特徴とする多重系コントローラシステム。
【請求項４】
請求項１から請求項３のいずれかに記載の多重系コントローラシステムにおいて、
前記制御系ネットワークとの通信を行い、前記多重化リンクを用いて通信を転送する側のコントローラの前記二重化回路は、フィルタ手段により前記受信した通信を選別した後に前記多重化リンクを通して他のコントローラに転送することを特徴とする多重系コントローラシステム。
【請求項５】
請求項２または請求項３に記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記危険評価値を記憶する手段と、該危険度評価値の閾値を記憶する手段を持ち、不正アクセスを検知する毎に該不正アクセスの危険度を該危険度評価値に加算し、前記多重化リンクを通して各コントローラの危険度評価値をお互いに通信しあい、危険度評価値が前記閾値を超えたときに、危険度評価値が最も低いコントローラを主系モードとすることを特徴とする多重系コントローラシステム。
【請求項６】
請求項３記載の多重系コントローラシステムにおいて、
前記コントローラは、実際の制御を行う制御プログラムと、該制御プログラムと似せた通信を行う擬似制御プログラムとを有し、主系としていたコントローラを停止するときに、今まで実行していた前記制御プログラムに代えて前記擬似制御プログラムを継続実行することを特徴とする多重系コントローラシステム。
【請求項７】
請求項１から請求項６のいずれかに記載の多重系コントローラシステムにおいて、
前記トラフィック監視機能は、前記制御系ネットワークからの不正アクセスを検知するために、前記通信に関する通信データの送信元、コマンド、通信周期の情報を用いたトラフィック監視ルールを準備しており、受信する通信が当該監視ルールに違反することを持って不正アクセスを検知することを特徴とする多重系コントローラシステム。
【請求項８】
請求項７に記載の多重系コントローラシステムにおいて、
前記トラフィック監視ルールは、通信の許可と禁止の区別情報と共に、通信禁止のときの危険度を数値化して保持していることを特徴とする多重系コントローラシステム。
【請求項９】
請求項３に記載の多重系コントローラシステムにおいて、
主系としていたコントローラを停止し、従系としていたコントローラによる前記制御対象の操作を実行するときに、従系モードにあったコントローラは、前記制御系ネットワークからコントローラが実行するプログラムを受信し、該プログラムを主系モードにあったコントローラに対して前記多重化リンクを通して転送し、主系モードにあったコントローラのプログラムを前記転送されたプログラムによって更新することを特徴とする多重系コントローラシステム。
【請求項１０】
プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつ前記プロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるＣＰＵと，該ＣＰＵからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として前記制御対象の操作を行い他方のコントローラを従系として待機させると共に、前記制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムの運転方法において、
前記主系コントローラにより制御対象の操作を行い従系コントローラが待機している正常モードと、前記主系コントローラはそのネットワークアダプタを使用する制御系ネットワークとの通信を行わず、従系コントローラがそのネットワークアダプタを使用して実行した制御系ネットワークとの通信が多重化リンクを経由して転送送受信される転送モードと、従系としていたコントローラを主系として前記制御対象の操作を行い主系としていたコントローラを従系として待機させる主従反転モードとを順次切替実行すると共に、モードの切替を、前記制御系ネットワークからの通信による不正アクセスの進展度合いに応じて行うことを特徴とする多重系コントローラシステムの運転方法。
【請求項１１】
請求項１０に記載の多重系コントローラシステムの運転方法において、
前記不正アクセスの進展度合いを、通信データごとに予め危険度を数値評価した危険度評価値を含むトラフィック監視ルールを用いて危険度評価値として検知するとともに、通信ごとに累積した前記危険度評価値の大きさで判断することを特徴とする多重系コントローラシステムの運転方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、発電所などの高い信頼性が要求されるところで使用される多重系コントローラシステムとその運転方法に関する。
【背景技術】
【０００２】
プログラマブルコントローラは、発電所、製鉄所、上下水道施設、工場など各種機器の制御に使用されている。機器に備え付けられたセンサから各種のデータを取り込み、そのデータに基づいて計算を実行し、その計算結果をアクチュエータなどに向けて出力することにより制御を行う。
【０００３】
コントローラは、正確な制御を行うために高いリアルタイム性が求められる。また、コントローラが停止や誤動作をすると、たとえば、発電所の場合、発電設備の破壊、電力供給の停止など多大な被害や危険が発生する可能性があり、高い信頼性、可用性も要求される。
【０００４】
高い信頼性、可用性を実現するために、コントローラを複数使用して多重化構成をとることが行われてきた。特許文献１では、二重系コントローラにおいて、片方のコントローラで障害が発生したときにもう一方のコントローラが処理を引き継ぐ。
【０００５】
一方、近年では、コントローラがネットワークに接続されることが一層多くなってきている。コントローラをネットワークに接続する目的はいろいろある。複数のコントローラを連携して動作させるためであったり、コントローラのデータをパソコンなどに収集して、そのディスプレイに表示させるためであったり、遠隔地からコントローラシステムの管理、保守を行うためだったりする。
【０００６】
いずれにせよ、コントローラのネットワークへの接続が進むことにより、セキュリティという新たな問題が重大化してきている。ネットワークを通して、コントローラに対して不正なアクセスが行われ、コントローラの停止、誤動作、データの改ざん、データの漏洩などに発展する可能性が出てきている。
【０００７】
この点に関し、一般的な計算機では古くからネットワーク接続が行われており、セキュリティへの対策技術も知られている。特許文献２では、ファイアウォールにより外部ネットワークから内部ネットワークへの不正アクセスを防止する。
【０００８】
特許文献３では、現用サーバと待機サーバがある多重系のシステムにおいて、不正アクセスを含む原因により現用サーバが異常状態を検出したときに、待機系サーバに切り替えてサービスを継続する。
【０００９】
特許文献４では、多重系の計算機システムで稼動系サーバに異常が発生したときに待機系サーバに異常のないデータをコピーして処理を継続する。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特許第２７３２６６８号
【特許文献２】特開２００１−２３６２７８号公報
【特許文献３】特開２００１−２５６１３８号公報
【特許文献４】特開２００３−２４８５９６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
特許文献１の二重系のコントローラでは、故障が検出されたときに故障部分を切り離すが、ネットワークからの不正アクセス行為を防ぐ方法、さらには不正アクセスがあったときの対応に関しては考慮されていない。
【００１２】
特許文献２、特許文献４では、外部ネットワークからの不正アクセスを防ぐために、外部ネットワークの入り口にファイアウォールやゲートウェイなどの装置を置いているが、できればこれらの特別な装置を付加することなく不正アクセスを防ぎたい。
【００１３】
特許文献３、特許文献４は、現用サーバに異常が発生したときに待機サーバに切り替えて処理を続行することが述べられている。しかし、待機サーバにも不正アクセスが行われていて異常が発生していた場合に関して考慮されていない。また、待機サーバに切り替えたあと、待機サーバも同様な不正アクセスの攻撃を受ける可能性がある。
【００１４】
以上のことから、本発明の目的は、多重系のコントローラシステムにおいて、ファイアウォールやゲートウェイなどの特別な装置を付加することなく不正アクセスを防ぐとともに、処理を行うコントローラを切り替えたときにも、処理を行うことになったコントローラに対しての攻撃を防ぐことができる多重系コントローラシステムとその運転方法を提供するものである。
【課題を解決するための手段】
【００１５】
以上のことから本発明においては、プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつプロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるＣＰＵと，ＣＰＵからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として制御対象の操作を行い他方のコントローラを従系として待機させると共に、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムにおいて、コントローラは、制御系ネットワークからネットワークアダプタが受信する通信を監視して主系コントローラに対する不正アクセスを検知して、以後のネットワークアダプタによる制御系ネットワークとの通信を遮断するトラフィック監視機能と、コントローラ間に設けられた多重化リンクと、トラフィック監視機能の検知に応じて多重化リンクを用いて制御系ネットワークとの通信を行う二重化回路とを備える。
【００１６】
また、トラフィック監視機能は、ネットワークアダプタが受信する通信による不正アクセスを、その種別に応じて危険度の数値評価し、危険度評価値が第１の閾値を超えたことを以って、ネットワークアダプタによる制御系ネットワークとの通信を遮断し、多重化リンクを用いた制御系ネットワークとの通信を行う。
【００１７】
また、トラフィック監視機能は、危険度評価値が第１の閾値よりも大きな値の第２の閾値を超えたことを以って、主系としていたコントローラを停止し、従系としていたコントローラによる制御対象の操作を実行する。
【００１８】
また、制御系ネットワークとの通信を行い、多重化リンクを用いて通信を転送する側のコントローラの二重化回路は、フィルタ手段により受信した通信を選別した後に多重化リンクを通して他のコントローラに転送する。
【００１９】
また、トラフィック監視機能は、危険評価値を記憶する手段と、危険度評価値の閾値を記憶する手段を持ち、不正アクセスを検知する毎に不正アクセスの危険度を危険度評価値に加算し、多重化リンクを通して各コントローラの危険度評価値をお互いに通信しあい、危険度評価値が閾値を超えたときに、危険度評価値が最も低いコントローラを主系モードとする。
【００２０】
また、コントローラは、実際の制御を行う制御プログラムと、制御プログラムと似せた通信を行う擬似制御プログラムとを有し、主系としていたコントローラを停止するときに、今まで実行していた制御プログラムに代えて擬似制御プログラムを継続実行する。
【００２１】
また、トラフィック監視機能は、制御系ネットワークからの不正アクセスを検知するために、通信に関して送信元、コマンド、通信周期を用いたトラフィック監視ルールを準備しており、受信する通信が当該監視ルールに違反することを持って不正アクセスを検知する。
【００２２】
また、トラフィック監視ルールは、通信の許可と禁止の区別情報と共に、通信禁止のときの危険度を数値化して保持している。
【００２３】
また、主系としていたコントローラを停止し、従系としていたコントローラによる制御対象の操作を実行するときに、従系モードにあったコントローラは、制御系ネットワークからコントローラが実行するプログラムを受信し、プログラムを主系モードにあったコントローラに対して多重リンクを通して転送し、主系モードにあったコントローラのプログラムを転送されたプログラムによって更新する。
【００２４】
以上のことから本発明においては、プロセス入出力装置を介して制御対象から一定周期でプロセス信号を入手し、かつプロセス入出力装置を介して一定周期で制御対象のアクチュエータに操作信号を与えるＣＰＵと，ＣＰＵからのデータを制御系ネットワークに伝達するネットワークアダプタを含むコントローラを複数台備え、一方のコントローラを主系として制御対象の操作を行い他方のコントローラを従系として待機させると共に、制御系ネットワークには広域ネットワークが接続できる多重系コントローラシステムの運転方法において、主系コントローラにより制御対象の操作を行い従系コントローラが待機している正常モードと、主系コントローラはそのネットワークアダプタを使用する制御系ネットワークとの通信を行わず、従系コントローラがそのネットワークアダプタを使用して実行した制御系ネットワークとの通信が多重化リンクを経由して転送送受信される転送モードと、従系としていたコントローラを主系として制御対象の操作を行い主系としていたコントローラを従系として待機させる主従反転モードとを順次切替実行すると共に、モードの切替を、制御系ネットワークからの通信による不正アクセスの進展度合いに応じて行う。
【００２５】
また、不正アクセスの進展度合いを、通信の種別に応じて危険度を数値評価し、危険度評価値の大きさで判断する。
【発明の効果】
【００２６】
本発明によれば、不正アクセスにより異常状態となったときにも動作を継続することが可能である。
【００２７】
また本発明の実施例によれば、ファイアウォールやゲートウェイなどの特別な装置を付加することなく、不正アクセスを防ぐことが可能である。
【００２８】
また、本発明の実施例によれば、不正アクセスにより異常状態となったときに、より正常なコントローラで処理を続行することが可能である。
【００２９】
また、本発明の実施例によれば、制御を行うコントローラを切り替えたときに、もともと制御を行っていたコントローラが囮となることにより、新たに制御を行うコントローラに対しての攻撃を防ぐことができる。
【図面の簡単な説明】
【００３０】
【図１】多重系プログラマブルコントローラシステムの一例を示す図。
【図２】ネットワークアダプタの構成を示す図。
【図３】トラフィック監視ルール格納部に記憶された監視ルールの一例を示す図。
【図４】トラフィック監視回路バッファのレジスタに格納される通信データ例を示す図。。
【図５】二重化制御回路２５の一例を示す図。
【図６】コントローラのメモリ２９に格納されている制御プログラムの一例を示す図。
【図７】ネット受信処理のアルゴリズムを示す図。
【図８】ネット送信処理のアルゴリズムを示す図。
【図９】リンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズムを示す図。
【図１０】ネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムを示す図。
【図１１】図１のフィルタが使用するフィルタ条件のテーブルの一例を示す図。
【図１２】図１のログ領域に書き込まれるログの内容の一例を示す図。
【図１３】図１のログ監視部が使用するログ監視ルールの一例を示す図。
【図１４】図１中のログ監視部のアルゴリズムの一例を示す図。
【図１５】主系ダウン時のアルゴリズムを示す図。
【図１６】擬似制御プログラムのアルゴリズムを示す図。
【図１７】主系切り替えのアルゴリズムを示す図。
【図１８】プログラマブルコントローラの各部の動きを時間の経過と共に示した図。
【発明を実施するための形態】
【００３１】
以下、図面を参照して本発明の実施例を説明する。
【実施例】
【００３２】
図１は、本発明装置の多重系プログラマブルコントローラシステムの一実施例の構成図である。図１において、１１、１２が多重系を構成するプログラマブルコントローラである。両方のプログラマブルコントローラは同じ構成をしている。初期状態ではいずれかが主系、もう片方が従系の多重系の構成となっている。どちらが主系で、どちらが従系になるかは、スイッチ等により決定することができる。ここではコントローラ１１が主系、コントローラ１２が従系になっているとする。
【００３３】
３８はプロセスＩＯであり、制御対象である発電機や製鉄の装置などのプロセスのアクチュエータやセンサと接続するための入出力装置である。プロセスＩＯ３８は、コントローラ１１、１２内のＣＰＵ２４に接続されて、センサからの信号をコントローラに取り込み、コントローラでの演算結果をプラントのアクチュエータに伝達する。
【００３４】
３６は制御系ネットワークであり、コントローラ１１、１２に対してコマンドを送信したり、コントローラ間でデータを通信したり、コントローラのデータをサーバ３５に送信したりするのに用いられる。制御系ネットワーク３６は、コントローラ１１、１２内のネットワークアダプタ２１に接続される。なお、ネットワークアダプタ２１の機能については、図２を用いて別途説明する。
【００３５】
３５は制御系ネットワーク３６に接続された制御サーバであり、コントローラ１１，１２に対して制御の指示をコマンドとして送信したり、コントローラ１１，１２から送られてくるデータを蓄積したりする。
【００３６】
３４は制御サーバ３５に接続された情報系ネットワークであり、生産計画情報、ディスプレイ表示用データなどが送信される。
【００３７】
３１は制御サーバ３５に接続されたヒューマンマシンインタフェース（ＨＭＩ）計算機であり、制御対象プロセス、コントローラ１１，１２の状態の表示や制御の指示を行う。
【００３８】
３３はインターネットなどの広域ネットワークであり、このネットワークを通じて遠隔監視や遠隔保守などを行う。３２はファイアウォールであり、インターネット３３と情報系ネットワーク３４との間のデータ転送を行うとともにインターネット３３からの不正アクセスを防ぐ役割を果たす。
【００３９】
ただし、ファイアウォール３２によっても不正アクセスを完全に防ぐことは難しい。ファイアウォールでは正常と判断されるパケットに隠して不正な情報を送信し、あるいは情報系ネットワーク３４などに直接に不正な計算機を接続してアクセスを試みるようなものに関しては防ぐことができない。
【００４０】
本発明のシステムを構成する主要なハード部分は概略以上のようである。ここで、本発明で対象としているのはプログラマブルコントローラである。このため、プロセス入出力装置を備え、ここを介して制御対象から一定周期でプロセス信号を入手し、かつ一定周期でアクチュエータに操作信号を与えている。一般の計算機とは、この点の構成が大きく相違する。
【００４１】
係るプログラマブルコントローラは、今までであれば工場内の独立した計算機設備として管理され、他の計算機設備と連携されることは少なかった。然しながら、プログラマブルコントローラが汎用化装置で構成されるようになり、広域化制御などの目的で通信系が取り込まれたことによって、インターネットからもアクセス可能な環境で使用されることになった。
【００４２】
以上のことから本発明では、インターネットからもアクセス可能な多重系プログラマブルコントローラを対象とし、外部からの攻撃に対しても正しく動作可能なプログラマブルコントローラとする。以下、このために必要なコントローラ１１、１２を構成する具体的なハード部分について説明する。
【００４３】
まず、コントローラ１１，１２において、２１はコントローラ１１、１２が制御系ネットワーク３６と通信するのに用いられるネットワークアダプタである。ネットワークアダプタ２１中には、制御系ネットワーク３６から送られてくる通信を監視するトラフィック監視回路２３と、コントローラ１１の制御系ネットワーク３６との通信を遮断する遮断回路２２などがある。ネットワークアダプタ２１の機能については、図２を用いて別途説明する。
【００４４】
２４は、コントローラの処理を実行するＣＰＵである。コントローラの処理には制御プログラムの実行、プロセスＩＯ３８の入出力、制御系ネットワーク３６との通信、多重系の構成制御などの処理がある。
【００４５】
２５は二重化制御回路であり、コントローラ１１と１２の二重化制御回路２５の間が、多重化リンク３７で接続されている。多重化リンク３７は、多重系のコントローラ間において、コントローラの状態の通知、データの受け渡しに使用されている。
【００４６】
二重化制御回路２５は、多重系コントローラ１１，１２の状態の制御や、多重化リンク３７を用いた通信を行う。二重化制御回路２５中で、２６は転送回路であり、制御系ネットワーク３６と通信するデータを、他系のコントローラに対して転送する働きをする。２８は危険評価値記憶回路であり、コントローラのセキュリティ上の危険度を評価した値を記憶している。２７は評価値の比較回路であり、危険評価値記憶回路２８に記憶されている危険評価値を危険評価値閾値と比較して、主系と従系の切り替えの制御に使用する。二重化制御回路２５に関しては、図５を使用して後で詳細に説明する。
【００４７】
２９はメモリであり、ＣＰＵ２４が実行するプログラムやデータを記憶している。このうち、２９１は制御プログラム、２９２はフィルタである。これらは、制御系ネットワーク３６との通信内容を、多重化リンク３７を通して他系のコントローラに転送するときに、フィルタリングを行うためのプログラムとデータである。２９４はプログラム実行のログを記録する領域であり、２９３はログ監視のプログラムとデータである。ログ記録領域２９４の内容を調べることにより、コントローラが異常な動作をしていないか監視する。
【００４８】
本発明のコントローラシステムは、概略以上のように構成されており、基本的に主系と従系のコントローラは同一に構成されている。以下、コントローラ各部の動作、機能について詳細に説明するが、その前提として特に断りのない限り、以下の説明は主系コントローラ１１について説明をしている。従系コントローラ１２との関連が生じた場合には、その旨の説明を行う。
【００４９】
まず図２は、本発明装置のネットワークアダプタの一実施例の構成図である。ネットワークアダプタ２１は、図１のコントローラ１１内に存在する。
【００５０】
図２のネットワークアダプタ２１において、２１５は図１中の制御系ネットワーク３６に接続される制御系ネットワーク接続線である。２１１は制御ネットワーク３６に対してデータを送信する送信器であり、送信バッファ２１３に格納されているデータを送信する。また、２１２は制御系ネットワーク３６からデータを受信する受信器である。
【００５１】
２２は遮断回路であり、二重化制御回路２５から遮断指示線２１６を通して行われる遮断の指示に従い、制御系ネットワーク３６から通信を遮断する働きをする。
【００５２】
２３は制御系ネットワーク３６との通信を監視するトラフィック監視回路である。トラフィック監視回路２３中で、２３１は制御系ネットワーク３６からの通信を一時格納するトラフィック監視回路バッファである。２３２はトラフィック監視回路バッファ２３１に格納されている通信を調べるトラフィック監視部である。調べた結果、異常が発見されると、危険度通知線２１９を通して二重化制御回路２５に対してその異常の危険度を送信する。
【００５３】
２３３はトラフィック監視部２３２が使用するトラフィック監視ルール記憶部である。異常を発見するためのルールとその異常の危険度が格納されている。２３４はトラフィック監視部２３２で使用するタイマである。制御系ネットワーク３６からの通信の頻度を測定するのに使用される。
【００５４】
なお、図２において２１４は受信バッファであり、トラフィック監視回路バッファ２３１を通過した制御系ネットワーク３６からの受信データが格納される。２１７はＣＰＵ２４と送信バッファ２１３および受信バッファ２１４の間に設けられた信号伝送用のバスであり、２１８は受信バッファに受信データが入ったことをＣＰＵ２４に通知する割り込み線である。
【００５５】
図３は、図２のネットワークアダプタ２１内のトラフィック監視ルール格納部２３３に記憶された監視ルールの一例である。トラフィック監視ルールは、制御系ネットワーク３６との通信において、許可されているものと禁止されているものを区別するためのルールである。
【００５６】
図３の図示例では、横軸項目に示すように、ルールは送信元２３３１と、コマンド２３３２と、周期２３３３と、許可、禁止の区別２３３４と、危険度２３３５が組になって記憶されている。縦軸の項目２３３６〜２３３９の各行がそれぞれ一つの監視ルールを表している。
【００５７】
２３３１の列は送信元のアドレス情報であり、値が０のときはどのアドレスでもよいことを、また値が０以外のときは特定アドレスの送信元（送信元があらかじめ判明しているの意味）であることを表している。２３３２の列はコマンドの情報であり、値が０のときはどのコマンドでもよいことを、値が０以外の時はこの値で定まる特定のコマンドであることを表している。２３３３は周期の情報であり、ここで記載されている時間より短い時間間隔で通信を受信したときにルールが適用される。但し、周期の情報が０のときには周期によらないことを表す。２３３４は、このルールに該当する通信が許可されているか禁止されているかを表す。値が１のときに許可されており、０のときに禁止されている。２３３５の列は、通信がルールに合致したときの危険度を表している。この危険度の値が図１中の危険評価値２８に加算されていく。
【００５８】
このルールの例では、縦軸のルール２３３６は、「特定の送信元からのコマンドが５である場合には、通信を許可する」の意味であり、以下同様にルール２３３７は、「特定の送信元からのコマンドが６である場合には、通信を許可する」、ルール２３３８は、「不特定の送信元（あらかじめ知られた送信元ではないの意味）からの信号が１０ミリ秒以下の周期で通信されている場合には、通信を許可せず、かつ危険度を重み１に評価づけする」、ルール２３３９は、「不特定の送信元からのコマンドが２である場合には、許可せず、かつ危険度を重み１０に評価づけする」を意味している。
【００５９】
なお、ルール２３３９において、コマンド２は、このコマンド自体がプログラマブルコントローラに対する悪意の改変などを実施可能なコマンドということができる。また、ルール２３３８において、非常に短い周期で数度にわたりアクセスし続ける状況は通常生じないので、短周期アクセスが連続する場合にはこれを悪意の信号と判断する。これらのルールのうち、２３３６と２３３７は許可ルール、２３３８と２３３９は禁止ルールということができる。
【００６０】
図４は、図２のトラフィック監視回路バッファ２３１のレジスタに格納される通信データの一例である。この例では通信データとして、２３１５〜２３１８の４つの通信データをレジスタに格納した状態を表している。なお、各通信データは図４の横軸に示すように、例えば送信元２３３１、コマンド２３３２、データ２３１３、時刻２３１４で構成されている。より具体的には、２３３１の行はデータの送信元のアドレス情報、２３３２はコマンドの情報、２３１３はコマンドの引数となるデータの情報、２３１４は受信した時刻である。なお、データ２３１３に記載された情報は、１６進（０Ｘ３）で表記されており、例えば通信データ２３１５は「温度が１００度」、通信データ２３１６は「圧力が１０ｐｓｉ」といったことを表している。
【００６１】
図４の通信データでは、時刻２３１４の数値が小さいほど、より早い時点でネットワークアダプタ２１に取り込まれたデータであることを意味しており、いわゆるＦＩＦＯ（Ｆａｓｔ  Ｉｎ  Ｆａｓｔ  Ｏｕｔ）の考え方に従い処理が実行される。
【００６２】
つまり、最初に最も古い時点で取り込まれた通信データ２３１８から監視の処理を実行し、監視の処理が終了すると図２の受信バッファ２１４へとデータが出力され、上の３つの行のレジスタに格納された通信データ（２３１７，２３１６，２３１５）が１つずつ下のレジスタにシフトする。新しいデータが受信されたときには空いている一番上の行にデータが入力される。但し、全部の行が埋まっているときに、更に新しいデータを受信したときにはその新しいデータは廃棄する。
【００６３】
図３で説明したトラフィック監視ルール２３３に格納されている監視ルールに基づいてこれらの通信データを処理すると、通信データ２３１５〜２３１７はいずれも禁止ルール（ここでは２３３８と２３３９）に合致していないので「許可」とされ、危険度は加算されない。具体的には、禁止ルール２３３８と２３３９の送信元２３３１は不特定（０：身元が不明）を禁止の対象としているが、通信データ２３１５〜２３１７は特定（１：身元が判明しており善意の送信者である）の相手である。これに対し、通信データ２３１８は、コマンド２３３２が（２）であり、禁止ルール２３３９のコマンド２３３２の条件に合致している。
【００６４】
監視ルールに基づいて調べた結果、危険度が発見された場合の、図４の通信データ２３１８の取り扱いについては、これを廃棄処理とすることも、また受信バッファ２１４に送信してＣＰＵ２４の判断に委ねることのいずれの対策を採ることも適宜採用可能である。
【００６５】
本発明では、係る異常アクセスに対して最終的には図２の遮断部２２により、通信遮断を実行するが、この最終処理は以下の手順を踏んで行われる。まず、監視ルールに基づいて調べた結果危険度が発見されると、危険度通知線２１９を通して二重化制御回路２５に対してその異常の危険度を送信する。二重化制御回路２５では、図３のルール２３３９の列２３３５に記載されている危険度１０が、危険評価値に加算される。
【００６６】
図５は、図１中の二重化制御回路２５の構成の一例である。この図で、危険評価値記憶回路２８には、危険度通知線２１９を通してトラフィック監視回路２３から送信されてくる危険度が加算され、危険評価値として記憶される。従って、例えば図３、図４の説明で危険度１０に評価された送信元１のコマンド２に関する通信データ２３１８について、あらかじめ危険評価値５が記憶されているときに、新たに危険度１０が報知された場合には、危険評価値記憶回路２８には、新たな危険評価値として１５が記憶される。なお、危険評価値記憶回路２８には、ＣＰＵ２４からも危険度を加算することが可能である。
【００６７】
危険評価値には、二つの閾値２８１と２８２が存在する。これらの閾値の設定はＣＰＵ２４等から行うことが可能である。危険評価値閾値比較部２８３は、危険評価値２８と閾値２８１、２８２との比較を行っている。閾値２８２は、閾値２８１よりも大きな値が設定されている。このため、危険評価値閾値比較部２８３での比較結果、まず閾値２８１を逸脱したことが検出される。
【００６８】
危険評価値記憶回路２８の記憶値が閾値２８１を超えたことを危険評価値閾値比較部２８３が検出すると、この結果が転送モードフラグ回路２５１に伝達されて、転送モードフラグがオンに変更される。転送モードフラグがオンになると、割り込み線２１６を通じて図２のネットワークアダプタ２１の遮断回路２２に伝達され、受信を遮断する。これにより、以後主系コントローラ１１は、制御系ネットワーク３６から自己の受信器２１２を経由する通信データの取り込みを停止する。
【００６９】
ここで転送モードフラグとは、図１において従系コントローラ１２が制御系ネットワーク３６との通信を行い、多重化リンク３７を通してその内容を主系コントローラ１１に転送する転送モードになっていることを表すフラグである。
【００７０】
つまり、この状態では図１の主系コントローラ１１に対する不正アクセスが発生している可能性が高いことから、主系コントローラ１１のネットワークアダプタ２１を使用した制御系ネットワーク３６からの受信を中断し、代わりに図１にＴで示す転送ラインを新たに形成して従系コントローラ１２のネットワークアダプタ２１を使用した通信を実行する。この転送モード状態では、主系コントローラ１１に対する信号の入出力経路が従系コントローラ１２のネットワークアダプタ２１経由になっているだけで、主体的に動作しているのは主系コントローラ１１のＣＰＵ２４である。この転送モードは、危険評価値記憶回路２８の記憶値が低い設定の閾値２８１を超えたときに発動されるものであり、いわば第一段階の不正アクセス回避処置である。
【００７１】
この転送モードを形成するために、図５の二重化制御回路２５には主系、従系コントローラ１１，１２の間に転送通信部６０，７０を構成している。以下、転送通信部６０，７０の構成について詳細に説明する。
【００７２】
まず、２７２は多重化リンクアダプタであり、相手コントローラの二重化制御回路２５との間に形成された多重化リンク３７を用いた送受信を行う。多重化リンクアダプタ２７２は受信器２７３と、送信器２７４で構成される。３７１、３７２は、有線あるいは無線で形成された送信路と受信路である。
【００７３】
多重化リンク３７を用いた送信を行うために、以下の回路が準備され各種のデータが送信される。送信される第一のデータは、危険評価値記憶回路２８に記憶された「危険評価値」である。危険評価値は評価値送信部２５６により、送信器２７４を通して他のコントローラ１２に定期的に送信される。
【００７４】
送信される第二のデータは、主系コントローラ１１が正常であることを意味する「正常通知」のデータである。２５７は正常通知送信部であり、ＣＰＵ２４が定期的にこの正常通知送信部２５７に書込みを行うことにより、送信器２７４を通して正常通知が従系コントローラ１２に送信される。
【００７５】
送信される第三のデータは、主系コントローラ１１が異常であることを意味する「異常通知」のデータである。ここで、主系コントローラ１１異常には幾つかの種類があり、例えば主系コントローラ１１自身に異常が発生したのであれば、先に説明したＣＰＵ２４による正常通知送信部２５７への書込みが途絶え、従系コントローラ１２がこれを検知することができる。第三のデータとして取り上げたのは、危険評価値が閾値２８１、２８２を超えた状態の通知である。このため異常通知送信部２５８が備えられ、危険評価値逸脱に関する異常が発生したことを従系コントローラ１２に通知する。なお、危険評価値逸脱に関する異常の通知は、ＣＰＵ２４が異常通知送信部２５８にアクセスすることによっても行うことが可能である。
【００７６】
送信される第四のデータは、ＣＰＵ２４が作成し、制御系ネットワーク３６に送るデータである。２６２はネット送信バッファであり、ＣＰＵ２４がここにデータを書きこむことによりその内容が送信器２７４を通して従系コントローラ１２に転送される。これにより制御系ネットワーク３６との通信が多重化リンク３７を介して転送実施される。
【００７７】
以上説明したのは転送通信部６０，７０のうち、６０の部分である。この部分は送信側の回路構成と、データについては主系コントローラ１１での動作を述べたものである。
【００７８】
これに対し、従系コントローラ１２の転送通信部６０，７０のうち、受信側回路７０が以下のように機能し、データ処理を行っている。ここでは、従系コントローラ１２の二重化制御回路２５内の受信器２７３に受信された主系コントローラ１１の多重化リンク３７からのデータは、その内容によって振り分けられる。
【００７９】
受信内容が、第一のデータ（危険評価値）であった場合には、受信データが危険評価値受信部２５３に保存される。次に受信された主系コントローラ１１の危険評価値は、従系である自分の危険評価値記憶回路２８に記憶されている危険評価値と評価値比較部２７において比較される。
【００８０】
比較の結果、自分の危険評価値記憶回路２８に記憶された危険評価値が閾値２８２を超えたとき、自分の危険評価値記憶回路２８に記憶された危険評価値を受信した主系コントローラ１１の危険評価値と比較して危険評価値が低い方のコントローラが主系となり主系フラグ２７１がオンとなる。
【００８１】
この結果によれば、転送モードで運転継続中の主系コントローラ１１の危険評価値が閾値２８２を超えたときに従系コントローラ１２を主系とする運転に切り替わる。
【００８２】
受信内容が、第二のデータ（データ正常通知）であった場合には、正常通知受信部２５４にデータが格納される。危険評価値受信部２５３と正常通知受信部２５４には、ウォッチドッグタイマ２５２が接続されており、別のコントローラ（主系コントローラ１１）からのこれらの通知が一定時間到着しないと別のコントローラ（主系コントローラ１１）に異常が発生したとして、主系フラグ２７１の切り替えを行う。つまり、コントローラ１２を主系とし、コントローラ１１を従系とする運用に切り替わる。
【００８３】
受信内容が、第三のデータ（データ異常通知）であった場合には、異常通知受信部２５５に通知、登録され、主系フラグ２７１の切り替えに使用される。別のコントローラがネット送信バッファ２６２から送信データが受信器２７３で受信されるネット受信バッファ２６１に格納される。
【００８４】
図６は、図１に示したコントローラ１１、１２のメモリ２９に格納されている制御プログラムの一例である。この制御プログラムはコントローラが主系であるときに実行される。まずステップＳ５１１では、制御ネットワーク３６からコマンドを受信する処理を行う。
【００８５】
この処理の内容は図７のネット受信プログラムを用いて別途説明するが、要するに主系コントローラ１１が不正アクセスを受けていない状態では、主系コントローラ１１内のネットワークアダプタ２１の受信バッファ２１４に蓄積されたデータを使用する。不正アクセスを受けて転送モードになっているときには、従系コントローラ１２から転送されてきたデータが蓄積されている二重化制御回路２５内のネット受信バッファ２６１のデータを使用する。
【００８６】
ステップＳ５１２からステップＳ５１７までの処理は、通常に行われる処理であり、本発明の切替えに特に関与するものではないが、ごく簡単に説明すると、以下のようである。
【００８７】
まずステップＳ５１２では、ステップ５１１で受信したコマンドに基づいた処理を実行する。ステップＳ５１３では、メモリ２９にあるログ領域２９４にコマンドを実行したことを表すログを記入する。ステップＳ５１４では、図１中のプロセスＩＯ３８から制御対象に設置されているセンサのデータなどを読み込む。ステップＳ５１５では、前のステップＳ５１４で読み込んだデータを元に制御用の計算を実行する。ステップＳ５１６では計算の結果をプロセスＩＯ３８に書込み制御対象のアクチュエータなどを動作させる。ステップＳ５１７では、行った制御の内容に関してログをログ領域２９４に記入する。
【００８８】
最後のステップＳ５１８では、ステップＳ５１４で取得したセンサの値や実行した制御の結果を制御ネットワークに対して送信する。この送信の処理に関しては図８のネット送信プログラムで説明するが、要するに主系コントローラ１１が不正アクセスを受けていない状態では、主系コントローラ１１内のネットワークアダプタ２１の送信バッファ２１３にデータを送信する。不正アクセスを受けて転送モードになっているときには、二重化制御回路２５内のネット送信バッファ２６２データを書き込み、従系コントローラ１２に送出する。
【００８９】
図７は、図６中のステップＳ５１１のネット受信プログラムの詳細フローである。制御ネットワーク３６からの受信は、図５中の転送モードフラグ回路２５１の内容に応じて図１中のネットワークアダプタ２１を通して行うか、二重化制御回路２５を通して多重化リンク３７から行うか切り替える。ステップＳ５２１では、転送モードフラグ回路２５１のフラグを調べている。転送モードフラグ回路２５１がオンではないときには、ステップＳ５２２においてネットワークアダプタ２１の受信バッファ２１４にデータがあるか調べ、ある場合にはステップＳ５２３でそこからデータを読み出す。ステップＳ５２１で転送モードがオンであった場合には、ステップＳ５２４で二重化制御回路２５のネット受信バッファ２６２を調べ、空でないときにはステップＳ５２５でデータを受信バッファ２６２から読み出す。
【００９０】
図８は、図６中のステップＳ５１８のネット送信プログラムの詳細である。制御ネットワーク３６への送信は、図５中の転送モードフラグ回路２５１の内容に応じて図１中のネットワークアダプタ２１を通して行うか、二重化制御回路２５を通して多重化リンク３７から行うかを切り替える。ステップＳ５３１では、転送モードフラグ回路２５１のフラグを調べている。転送モードフラグ回路２５１がオンではないときにはステップＳ５３２において、ネットワークアダプタ２１の送信バッファ２１３にデータを書きこむ。ステップＳ５３１で転送モードがオンであった場合にはステップＳ５３３で、二重化制御回路２５のネット送信バッファ２６１にデータを書きこむ。
【００９１】
次に図９と図１０は、図５の多重化リンク３７を使用した信号転送処理（リンクとネット間での転送のアルゴリズム）を示しており、このうち、図９はリンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズム、図１０はネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムを示している。
【００９２】
図９のリンクを経由して得たデータをネットに送るリンク・ネット転送アルゴリズムは、図５中の転送モードフラグ回路２５１のフラグがオンになったときに定期的に実行される。この場合、主系コントローラ１１では、多重化リンク３７経由で受信したデータをネットワークアダプタ２１経由で制御系ネットワーク３６に送信する働きをする。具体的には、ステップＳ５４１で二重化制御回路２５のネット受信バッファ２６２が空か調べ。空でないときにはステップＳ５４２でネット受信バッファ２６２からデータを読み出し、ステップＳ５４３でネットワークアダプタ２１の送信バッファ２１３に書きこむ。
【００９３】
図１０のネットを経由して得たデータをリンクに送るネット・リンク転送のアルゴリズムは、図５中の転送モードフラグ回路２５１のフラグがオンになったときに定期的に実行される。この場合、従系コントローラ１２では、ネットワークアダプタ２１経由で制御系ネットワーク３６から受信したデータを多重化リンク３７経由で別のコントローラ（主系コントローラ１１）に転送する働きをする。
【００９４】
具体的には、ステップＳ５５１でネットワークアダプタ２１の受信バッファ２１４を調べ、空でなければ、ステップＳ５５２で受信バッファ２１４からデータを読み出す。読みだしたデータはステップＳ５５３でメモリ２９中のフィルタ条件２９２（この内容については、図１１で説明する）に合致するか調べる。合致するフィルタ条件があった場合には、ステップＳ５５４でそのデータの転送はスキップする。合致するフィルタ条件がなかった場合にはステップＳ５５５で二重化制御回路２５のネット送信バッファ２６１にデータを書きこんで転送する。
【００９５】
図１１は、図１中のフィルタ２９２が使用するフィルタ条件のテーブルの一例である。フィルタ条件は、横軸項目の送信元のアドレスの情報２３３１、コマンドの情報２３３２、コマンド２３３２の引数となるデータの条件６１２、周期の情報２３３３、その通信が許可されているか禁止されているかを表す情報２３３４、この条件に合致したときの危険度の情報２３３５で構成される。図１１のフィルタ条件を、図３の監視ルールと比較して明らかなように、フィルタ条件は、監視ルールにデータの情報２３３３を追加したものである。
【００９６】
この図１１で、６１６〜６１９がそれぞれ具体的なフィルタ条件を表している。この意味するところは、縦軸のフィルタ条件６１６は、「特定の送信元からのコマンドが５であり取り込んだデータＸが（０＜Ｘ＜１００）の範囲の大きさである場合には、通信を許可する」の意味であり、以下同様にフィルタ条件６１７は、「特定の送信元１からのコマンドが６である場合には、通信を許可する」、フィルタ条件６１８は、「不特定の送信元（あらかじめ知られた送信元ではないの意味）からの信号が１０ミリ秒以下の周期で通信されている場合には、通信を許可せず、かつ危険度を重み１に評価づけする」、フィルタ条件６１９は、「不特定の送信元からのコマンドが２である場合には、許可せず、かつ危険度を重み１０に評価づけする」を意味している。
【００９７】
図１０のステップＳ５５３で実施するフィルタ条件２９２の具体的な内容を図１１の事例で説明したことから明らかなように、本発明では主系コントローラ１１が転送モードにある時に、従系コントローラ１２の通信データを受け入れるが、図３に示した自己の監視ルールと同等かそれ以上の厳しいフィルタ条件に合致する通信データのみを受け入れている。これにより、不正アクセスを識別する能力は、転送モードにおいてもそれ以前の健全状態と同等以上に保つことができる。
【００９８】
図１２は、図１中のログ領域２９４に書き込まれるログの内容の一例である。ログは、例えば実行された処理の種別６２１、処理の引数となったデータ６２２、処理の時刻６２３で規定されて記録される。なお、処理の種別６２１はコマンド２３３２を含み、通常はコマンド２３３２と同じものと考えてよい。
【００９９】
図１２の縦軸の６２５〜６２６が、具体的に書きこまれたログのエントリである。ログエントリ６２５は時刻６０で、処理種別６により処理されたデータ（Ｏｘ３９，Ｏｘ３５）である。また、ログエントリ６２６は時刻１００で、処理種別５により処理されたデータ（Ｏｘ３２，Ｏｘ３１，Ｏｘ４０）である。ここで、１６進で表記されたログエントリ６２６のデータ（Ｏｘ３２，Ｏｘ３１，Ｏｘ４０）は、温度が２１０度であることを意味している。
【０１００】
図１３は、図１中のログ領域２９４に書き込まれたログの内容（図１２）を監視するログ監視部２９３が使用するログ監視ルールの一例である。ログ監視ルールは、例えば処理種別の情報６２１、処理の引数であるデータの条件６１２、その処理の実行が許される周期２３３３、ルールに合致する処理が許可されているか禁止されていないかの情報２３３４、ルールに合致したときの危険度の情報２３３５で定義されている。
【０１０１】
また縦軸の２６５〜２６９がそれぞれログ監視ルールを表している。例えばログ監視ルール２６５の意味するところは、「処理種別５により処理され、処理後のデータＸが（０＜Ｘ＜１００）の範囲の大きさである場合には、処理が許可されている」の意味であり、以下同様にログ監視ルール２６６は、「処理種別６により処理された場合には、処理を許可する」、ログ監視ルール２６７は、「処理種別７により処理され、周期１００ミリ秒以下の場合には、処理が許可されているが危険度を５に評価する」、ログ監視ルール２６８は、「周期１０ミリ秒以下の場合には、処理が許可されず危険度を１に評価する」、ログ監視ルール２６９は、「処理種別２により処理された場合には、許可せず、かつ危険度を重み１０に評価づけする」ことを意味している。
【０１０２】
図１４は、図１中のログ監視部２９３のアルゴリズム（ログ監視プログラム）である。ステップＳ５６１ではログ領域２９４に新たにログが書き込まれるまで待機する。新たにログが書き込まれるとステップＳ５６２でそのログエントリを読み出す。この場合には、例えば図１２のログエントリ６２５〜６２６が読みだされる。
【０１０３】
ステップＳ５６３では図１３で説明したログ監視ルール（２６５−２６９）を順番に読み出すためのポインタを初期化している。ステップＳ５６４では監視ルールを一つ読み出しポインタを一つ進める。ステップＳ５６５でログエントリがルールに違反しているか判断している。
【０１０４】
ルールに違反している場合にはステップＳ５６６でルールに書かれている危険度の値を危険評価値２８に加算する。最後のルールになるまでステップＳ５６７で繰り返す。ステップＳ５６８ではログを最後まで読みだしたか判断している。まだログエントリがある場合にはステップＳ５６２に戻り次のログエントリを読み出す。最後まで読みだした場合にはステップＳ５６１に戻り新しいログが書き込まれるまで待機する。
【０１０５】
図１２に例示したこれらの一連のログエントリ６２５〜６２６を、図１３に例示した一連のログ監視ルール（２６５−２６９）でチェックした結果は、以下のようである。まず、ログエントリ６２５は処理種別６により処理されたデータ（Ｏｘ３９，Ｏｘ３５）であるため、図１３の監視ルール２６６「処理種別６により処理された場合には、処理を許可する」を参照して適正（ルールに違反していない）とされる。
【０１０６】
次に、ログエントリ６２６についてみると、これは処理種別５により処理されたデータ（Ｏｘ３２，Ｏｘ３１，Ｏｘ４０）であるが、ここでデータ（Ｏｘ３２，Ｏｘ３１，Ｏｘ４０）は、温度が２５０度であることを意味している。これに対し、図１３のログ監視ルール２６５のデータ条件６１２はデータＸが（０＜Ｘ＜１００）の範囲の大きさである場合には、通信を許可する」の意味であり、温度範囲が逸脱している。このため、このログエントリ６２６は、ログ監視ルール２６５を参照して、不適正（ルールに違反）とされる。この場合、図１４のステップＳ５６５において、ログエントリ６２６が監視ルール２６５に違反していると判断され、ステップＳ５６６において、危険度を評価値に加算する処理が実施される。
【０１０７】
図１５は、図５の主系フラグ２７１がオンからオフに変化したときに実行される主系ダウンの処理（主系ダウンプログラム）の一例である。このとき、ステップＳ５７１では定期的に実行されていた図６で説明した制御プログラムの実行を停止する。ステップＳ５７２では、制御プログラムを再度制御系ネットワーク３６からロードする。これは、不正アクセスにより制御プログラムの内容が改ざんされたり、破壊されたりしている可能性があるからである。このローディングは、別のコントローラ（従系コントローラ１２）が制御系ネットワーク３６と通信し、多重化リンク３７経由で行われる。ステップＳ５７３では、不正アクセスの攻撃対象となっていたコントローラ（主系コントローラ１１）を囮として攻撃の対象とし続けるために擬似制御プログラムの実行を開始する。擬似制御プログラムに関しては図１６で説明する。
【０１０８】
図１６は図１５の主系ダウンのときに、制御プログラムの代わりに起動される擬似制御プログラムのアルゴリズムである。ステップＳ５８１では、制御系ネットワーク３６からデータを受信し、ステップＳ５８１でその内容をログに記録し、ステップＳ５８３で擬似データを作成し、その擬似データをステップＳ５８４において制御系ネットワーク３６に送信する。このように、擬似制御プログラムでは実際の制御は実行しないが、制御系ネットワーク３６からの送受信を擬似的に継続実行することにより、不正アクセスの囮となり、新たに主系となったコントローラ１２への攻撃を防ぐ。
【０１０９】
図１７は、今まで従系であったコントローラ１２において、主系フラグ２７１がオンになることにより主系に切り替わったときに実行される主系切り替え処理のアルゴリズムの一例である。ステップＳ５９１において図６で説明した制御プログラムの定期的実行を開始している。
【０１１０】
図１８は、以上説明した本発明のプログラマブルコントローラシステムの各部の動きを時間の経過と共に示した図である。ここでは、縦軸方向に時間経過により生じる状態変化を示し、横軸に主系コントローラ、従系コントローラの各部の動きを示している。
【０１１１】
より具体的には、状態変化が「正常Ａ」から「転送モード移行中Ｂ」を経由して「転送モードＣ」となり、さらに「主従切り替え中Ｄ」を経由して「主従反転モードＥ」に至るまでを示している。さらにこの状態変化を生じせしめるきっかけとなる時折のイベントを表示している。これに対し、横軸の主系コントローラ１１と従系コントローラ１２について、ネットワークアダプタ２１、ＣＰＵ２４，二重化制御回路２５の動きを示している。以下、状態ごとに、システム全体の動きを簡単に整理して説明する。
【０１１２】
「正常Ａ」：
主系コントローラ１１が稼動し、従系コントローラ１２は待機状態にある。主系コントローラ１１のＣＰＵ２４は、図６の制御プログラムとこれに続く図１４のログ監視プログラムを実行し、ネット受信、ネット送信、ログ書き込み、ログ判定の処理を実施している。この前提としてネット受信により、ネットワークアダプタ２１で受信データの正常判定を行い、正常判定された通信データを、受信バッファ２１４を経由してＣＰＵ２４に提供している。またネットワークアダプタ２１は、ＣＰＵ２４からのデータを送信バッファ２１３に受けてネット送信を実行している。
【０１１３】
「転送モード移行中Ｂ」
上記の状態で、イベントとして攻撃受信を受ける。このときに主系コントローラ１１のネットワークアダプタ２１では、図２のトラフィック監視回路２３で異常判定し危険度通知２１９を発して二重化回路２５に処理を移す。図５の二重化回路２５では、評価値を更新し、閾値２８１を超過した事を持って、転送モードとする。多重化リンク３７経由で従系コントローラ１２の二重化回路２５は転送モードになったことを検知する。なお、主系コントローラ１１のＣＰＵ２４は、図６の制御プログラムとこれに続く図１４のログ監視プログラムを継続して実行している。
【０１１４】
「転送モードＣ」
転送モードＣでは、主系コントローラ１１は、多重化リンク３７で従系コントローラ１２に接続され、従系コントローラ１２経由でネット接続される。従系コントローラ１２のネットワークアダプタ２１では、ネット受信により、ネットワークアダプタ２１で受信データの正常判定を行い、正常判定された通信データを、受信バッファ２１４を経由してＣＰＵ２４に提供している。ＣＰＵ２４では、図１０の従系コントローラにおけるネット・リンク転送処理を実行し、二重化制御回路２５のネット送信バッファ２６２にデータを送る。通信データは主系コントローラ１１の二重化制御回路２５のネット受信バッファ２６１経由でＣ主系ＰＵ２４に送られる。
【０１１５】
主系コントローラ１１のＣＰＵ２４は、基本的に図６の制御プログラムとこれに続く図１４のログ監視プログラムを実行するが、このときのデータ受信と送信処理は、図７、図８の転送モードに従い、ネット受信バッファ２６１からデータを得てその処理結果データをネット送信バッファ２６２に送る。さらに多重化リンク３７経由で再度従系コントローラ１２の処理は、再度従系コントローラ１２に移り、二重化制御回路２５のネット受信バッファ２６１に受信される。ＣＰＵ２４では、図９の従系コントローラにおけるリンク・ネット転送処理を実行し、二重化制御回路２５の送信バッファ２１３にデータを送る。これを受けて、最終的に送信バッファ２１３から、ネット送信が行われる。
【０１１６】
「主従切り替え中Ｄ」
主系コントローラ１１の二重化制御回路２５は、評価値を更新しており、閾値２を超過したことを以って、自己の主系フラッグをＯＦＦにする。これを受けて、従系コントローラ１２の二重化制御回路２５は、自己の主系フラッグをＯＮにする。
【０１１７】
「主従反転Ｅ」
この状態では、元従系の位置にあったコントローラ１２は主系となって、図６、図１４の処理を実行する。このときの動きは、「正常Ａ」のときの主系と全く同じであるので説明を省略する。
【０１１８】
他方、元主系の位置にあったコントローラ１１は従系となって、図１５の主系ダウン処理、引き続き図１６の模擬制御プログラムの処理を実行する。これにより、攻撃側にコントローラが切り替わったことを知られないように操作する。なお、模擬制御プログラムの処理は適宜の時点で終了してよい。
【符号の説明】
【０１１９】
１１〜１２：コントローラ、２１：ネットワークアダプタ、２２：遮断回路、２３：トラフィック監視回路、２３１：トラフィック監視回路バッファ、２３２：トラフィック監視部、２３３：トラフィック監視ルール記憶部、２４：ＣＰＵ、２５：二重化制御回路、２５１：転送モードフラグ回路、２５２：ウォチドックタイマ、２５３：危険評価値受信部、２５６：危険評価値送信部、２６：転送回路、２６１：ネット受信バッファ、２６２：ネット送信バッファ、２７：評価値比較部、２７１：主系フラグ、２８：危険評価値記憶回路、２８１〜２８２：危険評価値閾値、２８３：危険評価値閾値比較部、２９：メモリ、３１：ヒューマンマシンインタフェース計算機、３２：ファイアウォール、３３：インターネット、３４：情報系ネットワーク、３５：サーバ計算機、３６：制御系ネットワーク、３７：多重化リンク、３８：プロセスＩＯ
【図１】
0005492150.tif 000002
【図２】
0005492150.tif 000003
【図３】
0005492150.tif 000004
【図４】
0005492150.tif 000005
【図５】
0005492150.tif 000006
【図６】
0005492150.tif 000007
【図７】
0005492150.tif 000008
【図８】
0005492150.tif 000009
【図９】
0005492150.tif 000010
【図１０】
0005492150.tif 000011
【図１１】
0005492150.tif 000012
【図１２】
0005492150.tif 000013
【図１３】
0005492150.tif 000014
【図１４】
0005492150.tif 000015
【図１５】
0005492150.tif 000016
【図１６】
0005492150.tif 000017
【図１７】
0005492150.tif 000018
【図１８】
0005492150.tif 000019