(57)【要約】      （修正有）【課題】制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムを提供する。【解決手段】制御システム１０は、制御対象５００との間で遣り取りする信号に基づいて内部状態値を周期的に更新する制御エンジン１５０と、制御システムに発生し得るインシデントに応じたインシデント対応動作を実行するセキュリティエンジン２５０と、制御エンジンが保持する内部状態値のうちのユーザにより予め任意に選択された１または複数の値に基づいて制御対象の動作状態を示すフェーズの値を更新するフェーズ更新手段２５２とを含む。セキュリティエンジンは、フェーズごとにインシデント対応動作の内容が定義された動作定義情報を保持し、フェーズ更新手段により更新されるフェーズの値に応じて、動作定義情報に定義された対応するインシデント対応動作を実行する。【選択図】図１
2020201584.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を制御するための制御システムであって、
前記制御対象との間で遣り取りする信号に基づいて内部状態値を周期的に更新する制御エンジンと、
前記制御システムに発生し得るインシデントに応じたインシデント対応動作を実行するセキュリティエンジンと、
前記制御エンジンが保持する前記内部状態値、および、前記セキュリティエンジンが保持する内部状態値のうちのユーザにより予め任意に選択された１または複数の値に基づいて前記制御対象の動作状態を示すフェーズの値を更新するフェーズ更新手段とを備え、
前記セキュリティエンジンは、
フェーズごとにインシデント対応動作の内容が定義された動作定義情報を保持する手段と、
前記フェーズ更新手段により更新される前記フェーズの値に応じて、前記動作定義情報に定義された対応するインシデント対応動作を実行する実行手段とを含む、制御システム。
【請求項２】
前記フェーズの値の更新に用いられる、前記１または複数の値の選択を受け付ける設定手段をさらに備える、請求項１に記載の制御システム。
【請求項３】
前記フェーズ更新手段は、前記制御エンジンの一部に組み込まれており、
前記制御エンジンで実行される制御プログラムは、前記フェーズの値を更新するための１または複数の命令を含む、請求項１または２に記載の制御システム。
【請求項４】
前記フェーズ更新手段は、前記制御エンジンの一部に組み込まれており、
前記制御エンジンで実行される制御プログラムは、前記フェーズの値を更新するための１または複数の命令を含み、
前記設定手段は、前記命令の実行条件を受け付ける、請求項２に記載の制御システム。
【請求項５】
前記フェーズ更新手段は、前記フェーズを定義する判定条件に従って前記フェーズの値を更新する、請求項１または２に記載の制御システム。
【請求項６】
前記フェーズ更新手段は、前記フェーズを定義する判定条件に従って前記フェーズの値を更新し、
前記設定手段は、前記判定条件として、前記制御エンジンが保持する前記内部状態値、および、前記セキュリティエンジンが保持する前記内部状態値のうちから、前記フェーズを定義する値の選択を受け付ける、請求項２に記載の制御システム。
【請求項７】
前記制御エンジンを有する制御ユニットと、
前記セキュリティエンジンを有するセキュリティユニットとを備え、
前記フェーズの値の更新に用いられる、前記１または複数の値を前記制御ユニットが更新する周期と、前記フェーズの値を前記フェーズ更新手段が更新する周期とは同期している、請求項１〜請求項６のうちいずれか１項に記載の制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御するための制御システムに関する。
【背景技術】
【０００２】
工場などの製造現場では、様々な種類の設備が稼働しており、各種設備および各設備に配置される各種装置の制御には、ＰＬＣ（プログラマブルロジックコントローラ）などの制御装置が用いられる。
【０００３】
近年、工場などの製造現場では、マルウェアなどの被害が発生しており、ＰＬＣなどの制御装置に対してもセキュリティ対策が必須となってきた。そのため、工場などの装置、生産ラインを開発する場合には、セキュリティ対策を生産技術者、装置メーカ開発者などが行う必要がある。
【０００４】
ＰＬＣでは、例えば、特開２０００−１３７５０６号公報（特許文献１）に開示されているように、異常履歴が登録されたとき、または、予め定められた時間が到来したときに、予め指定された宛先に電子メールを送信する程度で、セキュリティ対策については何ら考慮されていない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−１３７５０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年のＩＣＴ（Information and Communication Technology）の進歩に伴って、制御装置も様々な外部装置とネットワーク接続されるとともに、制御装置において実行される処理も高度化している。このようなネットワーク化あるいはインテリジェント化に伴って、想定されるインシデントの種類も増加している。
【０００７】
このようなネットワーク化あるいはインテリジェント化に伴う様々なインシデント発生リスクに備え、発生し得るインシデントへの対応が望まれている。発生し得るインシデントへの対応は、制御対象が停止しているのか、あるいは、動いているのかなど、制御対象の動作状態に応じて異なることが予想される。そのため、制御対象の動作状態に応じたインシデント対応動作の設定が望まれる。
【０００８】
また、発生し得るインシデントへの対策は、制御システムを利用する各顧客が定めるセキュリティポリシーに応じて設計され、各顧客に応じて任意に設計される。そのため、制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムの提供が求められている。
【０００９】
本発明は、制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムの提供を一つの目的としている。
【課題を解決するための手段】
【００１０】
本開示のある局面に従う制御対象を制御するための制御システムは、制御対象との間で遣り取りする信号に基づいて内部状態値を周期的に更新する制御エンジンと、制御システムに発生し得るインシデントに応じたインシデント対応動作を実行するセキュリティエンジンと、制御エンジンが保持する内部状態値、および、セキュリティエンジンが保持する内部状態値のうちのユーザにより予め任意に選択された１または複数の値に基づいて制御対象の動作状態を示すフェーズの値を更新するフェーズ更新手段とを含む。セキュリティエンジンは、フェーズごとにインシデント対応動作の内容が定義された動作定義情報を保持する手段と、フェーズ更新手段により更新されるフェーズの値に応じて、動作定義情報に定義された対応するインシデント対応動作を実行する実行手段とを含む。
【００１１】
この構成によれば、制御対象の動作状態を示すフェーズの値は、ユーザにより予め任意に選択された１または複数の値に基づいて更新される。すなわち、制御対象の動作状態は、ユーザにより予め任意に選択された１または複数の値に基づいて定義される。インシデント対応動作の内容がフェーズごとに定義されていることから、制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムを提供できる。
【００１２】
上述の開示において、制御システムは、フェーズの値の更新に用いられる、１または複数の値の選択を受け付ける設定手段を含んでもよい。この構成によれば、１または複数の値の選択を受け付けて、新たに制御対象の動作状態とインシデント対応動作との関係を設計したり、制御対象の動作状態とインシデント対応動作との関係を変更したりすることが可能である。
【００１３】
上述の開示において、フェーズ更新手段は、制御エンジンの一部に組み込まれていてもよい。制御エンジンで実行される制御プログラムは、フェーズの値を更新するための１または複数の命令を含む。この構成によれば、制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムを提供できる。
【００１４】
上述の開示において、設定手段は、フェーズの値を更新するための１または複数の命令の各々について、当該命令の実行条件を受け付けてもよい。この構成によれば、命令の実行条件の設定により、フェーズを任意に定義することができる。
【００１５】
上述の開示において、フェーズ更新手段は、フェーズを定義する判定条件に従ってフェーズの値を更新する。この構成によれば、制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムを提供できる。
【００１６】
上述の開示において、設定手段は、判定条件として、制御エンジンが保持する内部状態値、および、セキュリティエンジンが保持する内部状態値のうちから、フェーズを定義する値の選択を受け付ける。この構成によれば、フェーズを定義する値の選択を受け付けることで、フェーズを任意に定義することができる。
【００１７】
上述の開示において、制御システムは、制御エンジンを有する制御ユニットと、セキュリティエンジンを有するセキュリティユニットとをさらに含んでもよい。フェーズの値の更新に用いられる、１または複数の値を制御ユニットが更新する周期と、フェーズの値をフェーズ更新手段が更新する周期とは同期していてもよい。
【００１８】
この構成によれば、制御対象の動作状態を示すフェーズの値と、制御対象との間でやり取りされる信号に基づいて更新される内部状態値とで、更新される周期が同期することで、制御対象の状態をリアルタイムでフェーズの値に反映することができる。
【発明の効果】
【００１９】
本発明によれば、制御対象の動作状態とインシデント対応動作との関係が任意に設計された制御システムを提供することができる。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態に係る制御システム１０の一例を示す模式図である。
【図２】本実施の形態に係るコントローラシステム１の構成例を示す外観図である。
【図３】本実施の形態に従うコントローラシステム１を構成する制御ユニット１００のハードウェア構成例を示す模式図である。
【図４】本実施の形態に従うコントローラシステム１を構成するセキュリティユニット２００のハードウェア構成例を示す模式図である。
【図５】本実施の形態に従うコントローラシステム１を含む制御システム１０の典型例を示す模式図である。
【図６】コントローラシステム１の機能構成を示すブロック図である。
【図７】制御エンジン１５０によってフェーズ更新用変数１５１２が更新される周期と、セキュリティエンジン２５０によってフェーズ値２５２２が更新される周期を示す図である。
【図８】サポート装置６００のハードウェア構成例を示す模式図である。
【図９】設定画面の初期値の一例を示す図である。
【図１０】フェーズの追加方法を説明するための図である。
【図１１】新たにフェーズ判定に利用するフェーズ更新用変数１５１２を選択したときの一例を説明するための図である。
【図１２】変形例におけるコントローラシステム１ａを含む制御システム１０ａの機能構成を示すブロック図である。
【図１３】フェーズ更新手段１５２を実現するためのユーザプログラムの一例を示す図である。
【発明を実施するための形態】
【００２１】
本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２２】
＜Ａ．適用例＞
本発明が適用される場面の一例について説明する。まず、本実施の形態に係る制御システム１０の構成について説明する。図１は、本実施の形態に係る制御システム１０の一例を示す模式図である。
【００２３】
制御システム１０は、制御エンジン１５０と、セキュリティエンジン２５０と、フェーズ更新手段２５２とを含む。なお、制御エンジン１５０と、セキュリティエンジン２５０と、フェーズ更新手段２５２の各々は、プロセッサなどの任意のハードウェア要素または各種プログラムなどの任意のソフトウェア要素、あるいは、それら要素の組合せによって実現される。各エンジンは任意の形態で実装できる。なお、制御エンジン１５０と、セキュリティエンジン２５０と、フェーズ更新手段２５２とを一のプロセッサが各種プログラムを実行することで実現してもよい。すなわち、制御エンジン１５０と、セキュリティエンジン２５０と、フェーズ更新手段２５２とは、一のデバイスによって実現されてもよい。
【００２４】
制御エンジン１５０は、制御対象であるフィールドデバイス５００との間で遣り取りする信号に基づいて内部状態値である変数１５１０の値を周期的に更新する。変数１５１０は、フィールドデバイス５００が保持する値を示すデバイス変数と、制御ユニット１００で実行されるプログラムの内部だけで使用する内部変数とを含む。デバイス変数は、フィールドデバイス５００から入力される入力データ、フィールドデバイス５００に出力する出力データの変数を含む。また、内部変数は、たとえば、制御ユニット１００の状態などを示すシステム変数を含む。
【００２５】
セキュリティエンジン２５０は、制御システム１０に発生し得るインシデントに応じたインシデント対応動作を実行する。本明細書において、「インシデント」は、コントローラシステム１を中心とする制御システム１０に対してセキュリティ上の脅威となり得る兆候，現象または異常を意味する。
【００２６】
本明細書において、「インシデント対応動作」は、インシデントの発生を防ぐ動作、発生したインシデントに応じて挙動を変更する動作と、インシデントが発生したことに伴う動作とを含む。インシデントの発生を防ぐ動作には、インシデントを検知する動作などが含まれる。インシデントに応じて挙動を変更する動作は、発生したインシデントに応じて挙動を変更するために発生したインシデントを通知する動作を含む。
【００２７】
フェーズ更新手段２５２は、制御エンジン１５０が更新する変数１５１０の値のうち、ユーザによって任意に選択された判定用の変数（フェーズ更新用変数１５１２）に基づいてフェーズ値２５２２を更新する。
【００２８】
フェーズ更新手段２５２は、制御エンジン１５０またはセキュリティエンジン２５０の一部に組み込まれていてもよい。なお、図２〜図１１を用いて説明する本実施の形態においては、フェーズ更新手段２５２は、セキュリティエンジン２５０が備えるものとして説明する。
【００２９】
セキュリティエンジン２５０は、対応データベース２５４と、インシデント対応手段２５６とを含む。
【００３０】
フェーズ更新用変数１５１２は、たとえば、プログラムの作成、デバッグ、各種パラメータの設定などの機能をユーザに提供する装置によって選択される。
【００３１】
対応データベース２５４は、インシデント対応動作の内容が定義された動作定義情報である対応テーブル２５４２がフェーズごとに格納されている。各対応テーブル２５４２とフェーズ値２５２２とは対応関係にある。
【００３２】
インシデント対応手段２５６は、フェーズ更新手段２５２によって更新されるフェーズ値２５２２と対応データベース２５４とを参照して、フェーズ値２５２２が示すフェーズに応じた対応テーブル２５４２を参照して、インシデント対応動作を実行する。
【００３３】
たとえば、インシデント対応手段２５６は、インシデントの発生を検知する条件の変更、発生したインシデントに応じた挙動の変更などを行う。
【００３４】
以上のように、本実施の形態において、制御対象の動作状態を示すフェーズとは、ユーザによって任意に選択されたフェーズ更新用変数１５１２の値によって定義される状態であって、ユーザによって任意に定義することが可能な状態である。すなわち、本実施の形態におけるコントローラシステム１は、ユーザによって任意に定義されたフェーズごとに、インシデント対応動作を変更することが可能である。すなわち、制御システム１０においては、制御対象の動作状態とインシデント対応動作との関係が任意に設計されている。
【００３５】
＜Ｂ．コントローラシステム１＞
本実施の形態に従うコントローラシステム１の構成について説明する。図２は、本実施の形態に係るコントローラシステム１の構成例を示す外観図である。図２を参照して、コントローラシステム１は、制御ユニット１００と、セキュリティユニット２００と、セーフティユニット３００と、１または複数の機能ユニット４００と、電源ユニット４５０とを含む。
【００３６】
制御ユニット１００とセキュリティユニット２００との間は、任意のデータ伝送路（例えば、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネット（登録商標）など）を介して接続されている。制御ユニット１００とセーフティユニット３００および１または複数の機能ユニット４００との間は、図示しない内部バスを介して接続されている。なお、制御ユニット１００とセキュリティユニット２００との間は、図示しない内部バスを介して接続されていてもよい。
【００３７】
制御ユニット１００は、コントローラシステム１において中心的な処理を実行する。制御ユニット１００は、制御エンジン１５０を有し、任意に設計された要求仕様に従って、制御対象を制御するための制御演算を実行する。後述のセーフティユニット３００で実行される制御演算との対比で、制御ユニット１００で実行される制御演算を「標準制御」とも称す。図２に示す構成例において、制御ユニット１００は、１または複数の通信ポートを有している。
【００３８】
セキュリティユニット２００は、制御ユニット１００に接続され、セキュリティエンジン２５０を有し、コントローラシステム１に対するセキュリティ機能を担当する。図２に示す構成例において、セキュリティユニット２００は、１または複数の通信ポートを有している。セキュリティユニット２００は、インシデントの検知および、検知したインシデントに応じた処理を実行することで、インシデント対応動作の実行を実現する。
【００３９】
セーフティユニット３００は、制御ユニット１００とは独立して、制御対象に関するセーフティ機能を実現するための制御演算を実行する。セーフティユニット３００で実行される制御演算を「セーフティ制御」とも称す。通常、「セーフティ制御」は、ＩＥＣ  ６１５０８などに規定されたセーフティ機能を実現するための要件を満たすように設計される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。
【００４０】
機能ユニット４００は、コントローラシステム１による様々な制御対象に対する制御を実現するための各種機能を提供する。機能ユニット４００は、典型的には、Ｉ／Ｏユニット、セーフティＩ／Ｏユニット、通信ユニット、モーションコントローラユニット、温度調整ユニット、パルスカウンタユニットなどを包含し得る。Ｉ／Ｏユニットとしては、例えば、デジタル入力（ＤＩ）ユニット、デジタル出力（ＤＯ）ユニット、アナログ出力（ＡＩ）ユニット、アナログ出力（ＡＯ）ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニットなどが挙げられる。セーフティＩ／Ｏユニットは、セーフティ制御に係るＩ／Ｏ処理を担当する。
【００４１】
電源ユニット４５０は、コントローラシステム１を構成する各ユニットに対して、所定電圧の電源を供給する。
【００４２】
＜Ｃ．各ユニットのハードウェア構成例＞
本実施の形態に従うコントローラシステム１を構成する各ユニットのハードウェア構成例について説明する。
【００４３】
（ｃ１：制御ユニット１００）
図３は、本実施の形態に従うコントローラシステム１を構成する制御ユニット１００のハードウェア構成例を示す模式図である。図３を参照して、制御ユニット１００は、主たるコンポーネントとして、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphical Processing Unit）などのプロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、通信コントローラ１１０と、ＵＳＢコントローラ１１２と、メモリカードインターフェイス１１４と、ネットワークコントローラ１１６，１１８，１２０と、内部バスコントローラ１２２と、インジケータ１２４とを含む。
【００４４】
プロセッサ１０２は、二次記憶装置１０８またはメモリカード１１５に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、標準制御に係る制御演算、および、後述するような各種処理を実現する。主記憶装置１０６は、ＤＲＡＭ（Dynamic Random Access Memory)またはＳＲＡＭ（Static Random Access Memory)などの揮発性記憶装置などで構成される。二次記憶装置１０８は、例えば、ＨＤＤ（Hard Disc Drive）またはＳＳＤ（Solid State Drive）などの不揮発性記憶装置などで構成される。
【００４５】
チップセット１０４は、プロセッサ１０２と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット１００全体としての処理を実現する。
【００４６】
二次記憶装置１０８には、制御ユニット１００の基本的な機能を実現するためのシステムプログラムに加えて、システムプログラムが提供する実行環境上で動作する制御プログラムが格納される。制御プログラムには、ユーザが作成したプログラムをユーザプログラムが含まれる。
【００４７】
通信コントローラ１１０は、セキュリティユニット２００との間のデータの遣り取りを担当する。通信コントローラ１１０としては、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネット（登録商標）などに対応する通信チップを採用できる。
【００４８】
ＵＳＢコントローラ１１２は、ＵＳＢ接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。たとえば、ＵＳＢコントローラ１１２は、サポート装置６００との間のデータの遣り取りを担当する。
【００４９】
メモリカードインターフェイス１１４は、記憶媒体の一例であるメモリカード１１５を着脱可能に構成される。メモリカードインターフェイス１１４は、メモリカード１１５に対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード１１５から制御プログラムや各種設定などのデータを読出すことが可能になっている。
【００５０】
ネットワークコントローラ１１６，１１８，１２０の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ１１６，１１８，１２０は、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などの産業用ネットワークプロトコルを採用してもよい。
【００５１】
内部バスコントローラ１２２は、コントローラシステム１を構成するセーフティユニット３００や１または複数の機能ユニット４００との間のデータの遣り取りを担当する。内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【００５２】
インジケータ１２４は、制御ユニット１００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤなどで構成される。
【００５３】
図３には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、制御ユニット１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００５４】
（ｃ２：セキュリティユニット２００）
図４は、本実施の形態に従うコントローラシステム１を構成するセキュリティユニット２００のハードウェア構成例を示す模式図である。図４を参照して、セキュリティユニット２００は、主たるコンポーネントとして、ＣＰＵやＧＰＵなどのプロセッサ２０２と、チップセット２０４と、主記憶装置２０６と、二次記憶装置２０８と、通信コントローラ２１０と、ＵＳＢコントローラ２１２と、メモリカードインターフェイス２１４と、ネットワークコントローラ２１６，２１８と、インジケータ２２４とを含む。
【００５５】
プロセッサ２０２は、二次記憶装置２０８またはメモリカード２１５に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、後述するような各種セキュリティ機能を実現する。主記憶装置２０６は、ＤＲＡＭまたはＳＲＡＭなどの揮発性記憶装置などで構成される。二次記憶装置２０８は、例えば、ＨＤＤまたはＳＳＤなどの不揮発性記憶装置などで構成される。
【００５６】
チップセット２０４は、プロセッサ２０２と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット２００全体としての処理を実現する。
【００５７】
二次記憶装置２０８には、セキュリティユニット２００の基本的な機能を実現するためのシステムプログラムに加えて、システムプログラムが提供する実行環境上で動作するセキュリティシステムプログラムが格納される。
【００５８】
通信コントローラ２１０は、制御ユニット１００との間のデータの遣り取りを担当する。通信コントローラ２１０としては、制御ユニット１００に通信コントローラ２１０と同様に、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネット（登録商標）などに対応する通信チップを採用できる。
【００５９】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。たとえば、ＵＳＢコントローラ１１２は、サポート装置６００との間のデータの遣り取りを担当する。
【００６０】
メモリカードインターフェイス２１４は、記憶媒体の一例であるメモリカード２１５を着脱可能に構成される。メモリカードインターフェイス２１４は、メモリカード２１５に対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード２１５から制御プログラムや各種設定などのデータを読出すことが可能になっている。
【００６１】
ネットワークコントローラ２１６，２１８の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ２１６，２１８は、イーサネット（登録商標）などの汎用的なネットワークプロトコルを採用してもよい。
【００６２】
インジケータ２２４は、セキュリティユニット２００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤなどで構成される。
【００６３】
図４には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、セキュリティユニット２００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００６４】
＜Ｄ．制御システム１０＞
コントローラシステム１を含む制御システム１０の典型例について説明する。図５は、本実施の形態に従うコントローラシステム１を含む制御システム１０の典型例を示す模式図である。なお、説明の便宜上、図５には、機能ユニット４００および電源ユニット４５０の記載を省略している。また、図５中の「ＤＢ」はデータベースを、「ＵＰＧ」はユーザプログラムを意味する。
【００６５】
一例として、図５に示す制御システム１０は、設備Ｘを制御対象とする。設備Ｘは、一例として組み立て工程の設備であって、フィールドデバイス５００としてワークを搬送するコンベアに加えて、コンベア上のワークに対して任意の物理的作用を与えることが可能なロボットを含む。
【００６６】
図５に示す例では、制御ユニット１００は、通信ポート１４２，１４４，１４６，１４８を有している。通信ポート１４２は、図３のＵＳＢコントローラ１１２に相当する。通信ポート１４４は、図３のネットワークコントローラ１１６に相当する。通信ポート１４６は、図３のネットワークコントローラ１１８に相当する。通信ポート１４８は、図３のネットワークコントローラ１２０に相当する。
【００６７】
制御ユニット１００は、通信ポート１４２を介して、サポート装置６００と通信可能に接続される。サポート装置６００は、コントローラシステム１に含まれる各ユニットで実行されるプログラムの作成、デバッグ、各種パラメータの設定などの機能をユーザに提供する。
【００６８】
サポート装置６００を用いてユーザが作成したプログラムをユーザプログラム１０８６と称し、ユーザプログラム１０８６は、サポート装置６００から制御ユニット１００に向けて送信され、制御ユニット１００で実行される。サポート装置６００と制御ユニット１００とは、典型的には、ＵＳＢケーブルを用いて接続される。
【００６９】
なお、ユーザプログラム１０８６は、メモリカード１１５などの記憶媒体に格納されていてもよい。制御ユニット１００は、メモリカードインターフェイス１１４を介してメモリカード１１５を着脱可能に構成されており、メモリカード１１５に格納されたユーザプログラム１０８６を読み出すことができる。
【００７０】
制御ユニット１００は、通信ポート１４４を介して、１または複数のフィールドデバイス５００と通信可能に接続される。フィールドデバイス５００は、制御対象から制御演算に必要な各種情報を収集するセンサや検出器、および、制御対象に対して何らかの作用を与えるアクチュエータなどを含む。図５に示す例では、フィールドデバイス５００は、ワークに対して何らかの外的な作用を与えるロボット、ワークを搬送するコンベヤ、フィールドに配置されたセンサやアクチュエータとの間で信号を遣り取りするＩ／Ｏユニットなどを含む。フィールドデバイス５００と制御ユニット１００との間の通信プロトコルは、典型的には、ＥｔｈｅｒＣＡＴ（登録商標）が利用される。
【００７１】
制御ユニット１００は、通信ポート１４６を介して、１または複数のＨＭＩ（Human Machine Interface）８００と通信可能に接続される。ＨＭＩ８００は、コントローラシステム１での制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従ってコントローラシステム１に対して内部コマンドなどを生成する。ＨＭＩ８００と制御ユニット１００との間の通信プロトコルは、典型的には、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が利用される。
【００７２】
制御ユニット１００は、通信ポート１４８を介してデータベース９００と通信可能に接続される。データベース９００は、コントローラシステム１から送信される各種データ（たとえば、制御対象であるワークから計測されたトレーサビリティに関する情報など）を収集する。なお、データベース９００は、制御ユニット１００と、社内ネットワークを介して通信可能に接続されていてもよく、また、ＶＰＮ（Virtual Private Network）などを介して通信可能に接続されていてもよい。図５に示す例では、データベース９００と制御ユニット１００との間の通信プロトコルは、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が利用される。
【００７３】
セキュリティユニット２００は、通信ポート２４２および通信ポート２４４を有している。通信ポート２４２は、図４のネットワークコントローラ２１６に相当する。通信ポート２４４は、図４のＵＳＢコントローラ２１２に相当する。
【００７４】
セキュリティユニット２００は、通信ポート２４２を介して、ＳＣＡＤＡ（Supervisory Control And Data Acquisition）装置７００と通信可能に接続されている。セキュリティユニット２００とＳＣＡＤ装置７００との間の通信は、典型的には、ＶＰＮを利用して行われる。
【００７５】
セキュリティユニット２００は、通信ポート２４４を介して、サポート装置６００と通信可能に接続される。サポート装置６００とセキュリティユニット２００とが通信可能に接続されると、サポート装置６００からセキュリティに関する設定をセキュリティユニット２００にインストールすることが可能である。
【００７６】
なお、セキュリティユニット２００とサポート装置６００とを接続することで、制御ユニット１００で実行されるユーザプログラム１０８６をインストールできるようにしてもよい。また、制御ユニット１００とサポート装置６００とを接続することで、セキュリティに関する設定をインストールできるようにしてもよい。また、セキュリティユニット２００と通信可能なサポート装置６００と、制御ユニット１００と通信可能なサポート装置６００とは、互いに異なるサポート装置６００であっても、共通のサポート装置６００であってもよい。また、一台のサポート装置６００が、制御ユニット１００およびセキュリティユニット２００に同時に接続できるような構成でもよく、また、同時には接続できないような構成であってもよい。
【００７７】
また、図示しないものの、セキュリティユニット２００は、通信ポート２４４を介して、外部ネットワークとの間の通信を中継する機能およびＦＷ（Fire Wall）の機能などを備えたルーターと接続可能に構成されてもよい。ルーターと接続されることで、セキュリティユニット２００は、外部ネットワークを介して、制御システム１０の外のネットワークと通信可能となる。
【００７８】
＜Ｅ．コントローラシステム１の機能構成＞
図６を参照して、コントローラシステム１の機能面について説明する。図６は、コントローラシステム１の機能構成を示すブロック図である。
【００７９】
制御ユニット１００は、標準制御に係る制御演算を実行する処理実行部である制御エンジン１５０と、外部装置との間でデータを遣り取りする情報エンジン１６０とを含む。セキュリティユニット２００は、セキュリティ機能を実現するためのセキュリティエンジン２５０を含む。
【００８０】
各エンジンは、各ユニットのプロセッサなどの任意のハードウェア要素または各種プログラムなどの任意のソフトウェア要素、あるいは、それら要素の組合せによって実現される。各エンジンは任意の形態で実装できる。
【００８１】
制御エンジン１５０は、制御対象であるフィールドデバイス５００との間で遣り取りする信号に基づいて内部状態値である変数１５１０の値を周期的に更新する。
【００８２】
情報エンジン１６０は、制御ユニット１００が保持するデータ（変数の値）に対して任意の情報処理を実行する。典型的には、情報エンジン１６０は、制御ユニット１００が保持するデータを周期的にデータベース９００などへ送信する処理を含む。このようなデータの送信には、ＳＱＬなどが用いられる。
【００８３】
セキュリティエンジン２５０は、制御システム１０に発生し得るインシデントに応じたインシデント対応動作を実行する。
【００８４】
セキュリティエンジン２５０は、フェーズ更新手段２５２と、対応データベース２５４と、インシデント対応手段２５６とを含む。フェーズ更新手段２５２およびインシデント対応手段２５６は、たとえば、セキュリティユニット２００の基本的な機能を実現するためのシステムプログラムまたはシステムプログラムが提供する実行環境上で動作するセキュリティシステムプログラムの実行により実現される機能である。また、対応データベース２５４は、図４の二次記憶装置２０８により実現される。
【００８５】
フェーズ更新手段２５２は、制御対象の動作状態を示すフェーズの値（フェーズ値２５２２）を更新する。フェーズ更新手段２５２は、制御エンジン１５０が更新する変数１５１０の値のうち、ユーザによって任意に選択された判定用の変数（フェーズ更新用変数１５１２）に基づいてフェーズ値２５２２を更新する。より具体的には、フェーズ更新手段２５２は、判定テーブル２５２４を参照してフェーズ値２５２２を更新する。
【００８６】
判定テーブル２５２４は、フェーズ値２５２２を更新する条件を定義しており、ユーザによって任意に選択されたフェーズ更新用変数１５１２を特定可能な情報と、フェーズ更新用変数１５１２の値に応じたフェーズ値２５２２を示す情報とを含む。
【００８７】
判定テーブル２５２４は、サポート装置６００により生成される。サポート装置６００による判定テーブル２５２４の生成場面については、後述する。
【００８８】
対応データベース２５４は、インシデント対応動作の内容が定義された動作定義情報である対応テーブル２５４２がフェーズごとに格納されている。各対応テーブル２５４２とフェーズ値２５２２とは対応関係にある。
【００８９】
インシデント対応手段２５６は、検知手段２５８がインシデントの発生を検知すると、フェーズ更新手段２５２によって更新されるフェーズ値２５２２と対応データベース２５４とを参照して、フェーズ値２５２２が示すフェーズに応じた対応テーブル２５４２を参照して、インシデント対応動作を実行する。
【００９０】
たとえば、インシデント対応手段２５６は、発生したインシデントに応じて挙動を変更するように制御エンジン１５０に命令する。
【００９１】
検知手段２５８は、検知条件に従ってインシデントの発生を検知する。なお、検知条件は、検知ロジックに限らず、インシデントが発生したと判断する閾値を含む。
【００９２】
制御対象の動作状態を示すフェーズとは、ユーザによって任意に選択されたフェーズ更新用変数１５１２の値によって定義される状態であって、ユーザによって任意に定義することが可能な状態である。すなわち、本実施の形態におけるコントローラシステム１は、ユーザによって任意に定義されたフェーズごとに、インシデント対応動作を変更することが可能である。これにより、ユーザごとに異なるセキュリティポリシーに応じたセキュリティ設計をすることが可能である。
【００９３】
なお、図６に示すコントローラシステム１のフェーズ更新手段２５２は、周期的にフェーズ更新用変数１５１２の値を制御ユニット１００から受け取り、周期的にフェーズ値２５２２を更新する。
【００９４】
インシデント対応手段２５６は、検知手段２５８がインシデントの発生を検知すると、周期的に更新されているフェーズ値２５２２を参照して、フェーズ値２５２２に応じたインシデント対応動作を実行する。
【００９５】
なお、インシデント対応動作に、発生し得るインシデントに備えた予防動作を含めてもよい。予防動作には、たとえば、インシデントの発生を検知すること、コントローラシステム１への接続を許可する動作などが含まれ得る。具体的には、インシデント対応動作に、インシデントの発生を検知することを含めた場合、フェーズ値２５２２に応じて検知条件を変更するようにしてもよい。すなわち、セキュリティユニット２００は、フェーズごとに検知条件を設定してもよい。たとえば、フェーズに応じて、インシデントが発生していると判断する閾値を変更するようにしてもよい。
【００９６】
また、インシデント対応手段２５６は、インシデント対応動作を規定する対応テーブル２５４２を周期的に、または、フェーズ値２５２２の変更に応じて、選択するようにしてもよい。フェーズ値２５２２の変更に応じて対応テーブル２５４２が選択される場合、たとえば、フェーズ更新手段２５２がフェーズ値２５２２の値を変更したときにインシデント対応手段２５６に通知し、当該通知に従って、インシデント対応手段２５６は、変更後のフェーズ値に対応するインシデント対応動作を実行する。対応テーブル２５４２として発生し得るインシデントに備えた予防動作が規定されている場合、インシデント対応手段２５６は、検知手段２５８がインシデントを検知したか否かに関わらず、フェーズ値２５２２に応じて周期的に、またはフェーズ値２５２２の変更に応じて予防動作を変更してもよい。
【００９７】
＜Ｆ.フェーズ更新用変数およびフェーズ値の更新タイミング＞
図７を参照して、フェーズ更新用変数１５１２およびフェーズ値２５２２の更新タイミングについて説明する。フェーズ更新用変数１５１２は、制御ユニット１００の制御エンジン１５０によって周期的に更新される。また、セキュリティユニット２００のセキュリティエンジン２５０は、フェーズ更新用変数１５１２を周期的に取得して、フェーズ値２５２２を周期的に更新する。
【００９８】
図７は、制御エンジン１５０によってフェーズ更新用変数１５１２が更新される周期と、セキュリティエンジン２５０によってフェーズ値２５２２が更新される周期を示す図である。制御エンジン１５０とセキュリティエンジン２５０との間のデータのやり取りは、制御ユニット１００の通信コントローラ１１０およびセキュリティユニット２００の通信コントローラ２１０によって行われる。
【００９９】
制御エンジン１５０は、周期的に変数１５１０の値を更新する。変数１５１０は、フェーズ更新用変数１５１２を含む。図７においては、フェーズ更新用変数１５１２の値の更新に絞って説明する。以下、制御エンジン１５０が実行するフェーズ更新用変数１５１２の値の更新を更新処理ともいう。
【０１００】
セキュリティエンジン２５０は、フェーズ値２５２２の更新、およびインシデント対応動作を実行するための処理を周期的に実行する。以下、この周期的に実行される処理をセキュリティ処理ともいう。
【０１０１】
更新処理の周期とセキュリティ処理とは互いにその周期を同期させて実行される。以下では、たとえば、ｎ周目のセキュリティ処理について説明する。
【０１０２】
Ｓ２１０において、セキュリティエンジン２５０は、フェーズ更新用変数１５１２を取得する。Ｓ２１０に取得するフェーズ更新用変数１５１２は、前周期（ｎ−１周目）に制御エンジン１５０が更新した後のフェーズ更新用変数１５１２である。セキュリティエンジン２５０は、制御ユニット１００の通信コントローラ１１０およびセキュリティユニット２００の通信コントローラ２１０を介して、フェーズ更新用変数１５１２を取得する。
【０１０３】
Ｓ２１２において、セキュリティエンジン２５０は、フェーズ値２５２２を更新する。具体的には、セキュリティエンジン２５０は、Ｓ２１０で取得したフェーズ更新用変数１５１２および判定テーブル２５２４に基づいてフェーズ値２５２２を更新する。
【０１０４】
Ｓ２１４において、セキュリティエンジン２５０は、インシデントが検知されたか否かを判定する。インシデントを検知していない場合（Ｓ２１４においてＮＯ）、セキュリティエンジン２５０は、セキュリティ処理を終了し、次のｎ＋１周目の周期が開始するまで待機する。
【０１０５】
インシデントを検知した場合は（Ｓ２１４においてＹＥＳ）、セキュリティエンジン２５０は、インシデント対応動作を実行する。具体的には、セキュリティエンジン２５０は、Ｓ２１２において更新したフェーズ値２５２２および対応データベース２５４に従ってインシデント対応動作を実行する。
【０１０６】
インシデント対応動作を実行した後、セキュリティエンジン２５０は、セキュリティ処理を終了し、次のｎ＋１周目の周期が開始するまで待機する。
【０１０７】
一方、制御エンジン１５０は、Ｓ１１０において、定周期でフェーズ更新用変数１５１２の値を更新する。制御エンジン１５０は、フェーズ更新用変数１５１２の値を更新したのち、更新処理を終了し、次の制御周期が開始するまで待機する。
【０１０８】
以上のように、制御対象の動作状態を示すフェーズ値２５２２と、制御対象との間でやり取りされる信号に基づいて更新される変数１５１０とで、更新される周期が同期することで、制御対象の状態をリアルタイムでフェーズ値２５２２に反映することができる。
【０１０９】
＜Ｇ．インシデント対応動作＞
発生し得るインシデントに応じたコントローラシステム１の挙動である、インシデント対応動作について、具体的に説明する。インシデント対応動作として、設備制御についての対応、および、情報通信についての対応に大別できる。設備制御は、主として、制御ユニット１００の制御エンジン１５０および／またはセーフティユニット３００のセーフティ制御に係る制御演算を実行する処理実行部であるセーフティエンジンが担当する処理を意味し、制御対象の設備や機械の動作についての対応を意味する。情報通信は、主として、制御ユニット１００の情報エンジン１６０が担当する処理を意味し、制御ユニット１００と外部装置との間のデータの遣り取りや、制御ユニット１００内部での情報の取り扱いなどについての対応を意味する。
【０１１０】
コントローラシステム１の挙動（対応）として、たとえば、「正常運転」、「縮退」、「停止」などがあげられる。「正常運転」は、システム設計通りおよび生産計画通りに、設備や機械を運転継続できる状態を意味する。「縮退」は、コントローラシステム１の部分停止（一部のみ稼働）、性能縮小（性能低下）、機能制限などの、限定的ながら稼働を続行することを意味する。「停止」は、安全に、対象の設備や機械あるいはコントローラシステム１の動作を止めることを意味する。
【０１１１】
「縮退」の一例について説明する。
（１）設備制御の縮退
設備制御の縮退は、範囲、機能、生産性などの面において制限を受けた状態で運転することを意味する。
【０１１２】
範囲としては、制御対象となるゾーンを制限することができる。制御対象となるゾーンとしては、例えば、制御装置、制御装置に装着されるモジュール、制御装置に装着されるユニットなどの制御側を制限することができる。あるいは、特定の機械、ライン、フロア、工場全体といった被制御側（制御対象）を制限することができる。
【０１１３】
機能としては、コントローラシステム１が提供する処理のうち特定の処理（例えば、情報制御、標準制御、セーフティ制御など）を制限することができる。
【０１１４】
生産性としては、安全、安心のために一時的に生産性（例えば、ラインスピード、単位時間あたりの生産数、単位時間あたりの生産量など）を制限することができる。
【０１１５】
（２）情報通信の縮退
情報通信の縮退は、範囲、方向、帯域、ＱｏＳ（Quality of Service）、データなどの面において制限を受けた状態で運転することを意味する。
【０１１６】
範囲としては、例えば、通信物理ポート、通信論理ポート、ネットワーク離脱などを制限できる。
【０１１７】
通信物理ポートを制限する場合には、制御ユニット１００およびセキュリティユニット２００にそれぞれ配置されている通信ポートのうち特定のポート使用を制限することができる。あるいは、コントローラシステム１に実装される通信ポートのうち、上位側あるいはフィールド側のみを有効化してもよい。
【０１１８】
通信論理ポートを制限する場合には、利用可能なＴＣＰ／ＵＤＰポートを制限してもよいし、利用可能な通信プロトコルを制限してもよい。さらに、アクセスを受け付けるＭＡＣアドレスやＩＰアドレスを制限してもよい。
【０１１９】
方向としては、例えば、各ポートにおいてデータが流れる方向を一方向のみに制限してもよい。例えば、特定のポートについて、データの受信のみ許可、あるいは、データの送信のみ許可といった具合である。このような一方向のデータのみを許可することで、何らかのセキュリティ脅威が検知されたときに、コントローラシステム１からデータが流出することを防止できる。
【０１２０】
帯域としては、コントローラシステム１の通信負荷あるいは処理負荷を低減させるために、通信速度を制限（例えば、１Ｇｂｐｓから１００Ｍｂｐｓに変更）してもよい。
【０１２１】
ＱｏＳとしては、通過させるパケットの優先度を動的に変化させてもよい。例えば、何らかのセキュリティ脅威が検知された場合には、通過させるパケットの優先度を高く変更してもよい。
【０１２２】
データとしては、例えば、ＥｔｈｅｒＣＡＴなどの産業用ネットワークプロトコルにおいては、プロセスデータ通信の有効／無効の切り替えや、出力値の更新を制限（更新停止／ゼロクリア／前回値を保持など）してもよい。
【０１２３】
上述したものに限らず、「縮退」は、正常運転に対して任意の制限が加えられた状態での運転を包含し得る。なお、「縮退」は、部分停止と見なすこともでき、「停止」は、特定の機能を全面的に停止することを包含し得るので、「縮退」を拡張した概念と見なすこともできる。
【０１２４】
＜Ｈ．サポート装置６００のハードウェア構成＞
以下、サポート装置６００による判定テーブル２５２４の生成場面について説明する。まず、サポート装置６００のハードウェア構成について説明する。図８は、サポート装置６００のハードウェア構成例を示す模式図である。サポート装置６００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。
【０１２５】
図８を参照して、サポート装置６００は、プロセッサ６０２と、メインメモリ６０４と、入力部６０６と、表示部６０８と、ストレージ６１０と、光学ドライブ６１２と、ＵＳＢコントローラ６２０とを含む。これらのコンポーネントは、プロセッサバス６１８を介して接続されている。
【０１２６】
プロセッサ６０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ６１０に格納されたプログラム（一例として、ＯＳ６１０２およびサポートプログラム６１０４）を読出して、メインメモリ６０４に展開して実行することで、コントローラシステム１に対する設定処理などを実現する。
【０１２７】
メインメモリ６０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ６１０は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【０１２８】
ストレージ６１０には、基本的な機能を実現するためのＯＳ６１０２に加えて、サポート装置６００としての機能を提供するためのサポートプログラム６１０４が格納される。すなわち、サポートプログラム６１０４は、コントローラシステム１に接続されるコンピュータにより実行されることで、本実施の形態に係るサポート装置６００を実現する。
【０１２９】
入力部６０６は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部６０８は、ディスプレイ、各種インジケータ、プリンタなどで構成され、プロセッサ６０２からの処理結果などを出力する。
【０１３０】
ＵＳＢコントローラ６２０は、ＵＳＢ接続を介して、コントローラシステム１などとの間のデータを遣り取りする。
【０１３１】
サポート装置６００は、光学ドライブ６１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体６１４（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られてストレージ６１０などにインストールされる。
【０１３２】
サポート装置６００で実行されるサポートプログラム６１０４などは、コンピュータ読取可能な記録媒体６１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置６００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０１３３】
図８には、プロセッサ６０２がプログラムを実行することで、サポート装置６００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【０１３４】
＜Ｉ．任意のフェーズを定義するための設定画面＞
図９〜図１１を参照して、フェーズを定義する方法（設定方法）、すなわち、判定テーブル２５２４の生成方法について説明する。判定テーブル２５２４は、フェーズ更新用変数１５１２を特定可能な情報を含む。フェーズ更新用変数１５１２は、たとえば、サポート装置６００が提供する、図９〜図１１に示す設定画面に従ってユーザが操作することで選択される。すなわち、サポート装置６００は、フェーズ値１５１４の更新に用いられるフェーズ更新用変数１５１２の選択を受け付ける設定手段として機能する。
【０１３５】
図９は、設定画面の初期値の一例を示す図である。図１０は、フェーズの追加方法を説明するための図である。図１１は、新たにフェーズ判定に利用するフェーズ更新用変数１５１２を選択したときの一例を説明するための図である。
【０１３６】
図９を参照して、設定画面６４０は、フェーズの名称を表示するフェーズ領域６４２と、各フェーズを定義するための条件入力領域６４４とを含む。設定画面６４０は、さらに、入力した設定内容をキャンセルするためのキャンセルボタン６４６と、入力した設定内容を確定するための確定ボタン６４８とを含む。
【０１３７】
フェーズ領域６４２は、フェーズの名称を表示するフェーズ名称セル６４２２と、新たなフェーズを追加するためのフェーズ追加ボタン６４２４とを含む。各名称セル６４２２内に記載されたフェーズ名称（図９に示す例では、「立ち上げ・保守」、「異常発生中」、「運転中」）は、任意に変更することも可能である。
【０１３８】
条件入力領域６４４は、条件名を表示する条件名セル６４４２と、新たな条件を追加するための条件追加ボタン６４４４と、各条件の設定値を選択するための選択タブ６４４６とを含む。条件名セル６４４２には、ユーザが任意に選択したフェーズ更新用変数１５１２を表示することが可能である。
【０１３９】
図９に示す例では、フェーズの初期値として、「立ち上げ・保守」、「異常発生中」、「運転中」がフェーズとして登録されている。図９中の「−」は、条件としないことを意味する。たとえば、「立ち上げ・保守」は、ＰＣが接続された状態（図中の「Ｔｒｕｅ」）を意味する。「異常発生中」は、ＰＣが接続されていない状態（図中の「Ｆａｌｓｅ」）であって、かつ異常が発生している状態（図中の「Ｔｒｕｅ」）を意味する。「運転中」は、ＰＣが接続されていない状態（図中の「Ｆａｌｓｅ」）であって、かつ異常が発生していない状態（図中の「Ｆａｌｓｅ」）を意味する。
【０１４０】
図１０を参照して、フェーズの追加方法について説明する。フェーズ追加ボタン６４２４が操作されると、空のフェーズ名称セル６４２２Ｄが追加される。また、条件設定用の空の選択タブ６４４６が追加される。同様に、条件追加ボタン６４４４が操作されると、空の条件名セル６４４２が追加される。また、条件設定用の空の選択タブ６４４６が追加される。
【０１４１】
ユーザは、空のフェーズ名称セル６４２２Ｄに、新たに任意の名称を入力することができる。また、ユーザは、空の条件名セル６４４２に、任意の変数を選択して、選択した変数をフェーズ更新用変数として設定、登録できる。また、サポート装置６００は、選択したフェーズ更新用変数が取り得る値を、選択タブ６４４６を操作して選択することが可能な選択候補として設定する。
【０１４２】
なお、好ましくは、サポート装置６００は、制御エンジン１５０が更新する変数１５１０を特定可能に構成されている。これにより、ユーザは、制御エンジン１５０が更新する変数１５１０の中から、フェーズ更新用変数１５１２を確実に選択することができる。
【０１４３】
図１０に示す例では、新たに、フェーズ更新用変数として、フェーズ変数が選択され、フェーズとして新たに「段取り替え」というフェーズが追加され、「運転中」というフェーズの名称が「正常運転中」に変更されたものとする。また、選択タブ６４４６が操作されると、フェーズ変数がとり得る値が選択可能なリスト６４４８として表示される。
【０１４４】
図１１を参照して、フェーズ更新用変数だけを新たに追加することも可能である。図１１に示す例では、異常発生中のフェーズに変更する条件が新たに追加されたものとする。この場合に、併せて、他のフェーズについての、設定条件を変更してもよい。
【０１４５】
たとえば、図１１に示す設定条件によって生成された判定テーブル２５２４を、セキュリティユニットにインストールした場合、フェーズ更新用変数１５１２として、ＰＣ接続の有無を示す変数と、異常が発生の有無を示す変数、選択したフェーズ変数、および異常カウンタの値を示す変数が制御エンジン１５０からセキュリティエンジン２５０に送られる。また、セキュリティエンジン２５０のフェーズ更新手段２５２は、これらのフェーズ更新用変数１５１２に基づいてフェーズ値２５２２を、「立ち上げ・保守」、「異常発生中」、「正常運転中」および「段取り替え中」のうちのいずれかを示す値に更新する。
【０１４６】
なお、フェーズ更新用変数１５１２は、制御エンジン１５０が更新する値に限られない。たとえば、セキュリティエンジン２５０が備える内部状態値であってもよい。たとえば、セキュリティエンジン２５０が、ＰＣ接続の有無を示す変数（内部状態値）を有する場合、この変数に従って、ＰＣ接続の有無を判断してもよい。
【０１４７】
また、異常カウンタは、制御ユニットが検知する異常に限らず、セキュリティエンジン２５０の検知手段２５８が検知するインシデント（異常）を含むものであってもよい。
【０１４８】
以上のように、本実施の形態においては、フェーズ更新手段２５２は、フェーズ値２５２２を更新する条件を定義した判定テーブル２５２４を参照してフェーズ値２５２２を更新する。また、サポート装置６００は、判定テーブル２５２４を作成するための設定画面６４０を提供し、各フェーズを定義する変数１５１０の選択と、当該変数１５１０の値の指定とを受け付ける。
【０１４９】
＜Ｊ．フェーズ更新手段の実装方法の変形例＞
上記実施の形態においては、フェーズ更新手段２５２は、セキュリティユニット２００により実現される例を示した。なお、制御ユニット１００のシステムプログラムによりフェーズ更新手段が実現されてもよい。この場合、判定テーブル２５２４は、制御ユニット１００に格納されることが好ましい。
【０１５０】
また、上記実施の形態においては、フェーズ更新手段２５２は、判定テーブル２５２４を参照してフェーズ値２５２２を更新するものとした。なお、フェーズ更新手段２５２は、ユーザによって作成された、フェーズの値を変更する命令を含むユーザプログラムが実行されることで実現されてもよい。
【０１５１】
図１２は、変形例におけるコントローラシステム１ａを含む制御システム１０ａの機能構成を示すブロック図である。図１２に示す制御システム１０ａは、サポート装置６００ａを備える点で、制御システム１０と異なる。また、図１２に示すコントローラシステム１ａは、制御エンジン１５０およびセキュリティエンジン２５０に変わり、制御エンジン１５０ａおよびセキュリティエンジン２５０ａを有する点で、コントローラシステム１と異なる。
【０１５２】
具体的には、コントローラシステム１ａは、制御エンジン１５０ａがフェーズ値の更新を行い、セキュリティエンジン２５０ａのインシデント対応手段２５６が制御エンジン１５０ａによって更新されるフェーズ値と対応データベース２５４に従ってインシデント対応動作を実行する。
【０１５３】
セキュリティエンジン２５０ａは、フェーズ更新手段２５２および判定テーブル２５２４を有していない点で、セキュリティエンジン２５０と異なる。他の構成については、セキュリティエンジン２５０と共通するための、説明を省略する。
【０１５４】
制御エンジン１５０ａは、フェーズ更新手段１５２を有する点で制御エンジン１５０ａと異なる。フェーズ更新手段１５２は、フェーズ更新手段２５２と異なり、制御エンジン１５０ａの一部に組み込まれている。すなわち、制御エンジン１５０ａが更新する変数１５１０に、フェーズ値１５１４が含まれている。
【０１５５】
フェーズ更新手段１５２は、変数１５１０に含まれるフェーズ更新用変数１５１２を参照することで、フェーズ値１５１４を変更する命令を実行するか否かを決定し、決定に従ってフェーズ値１５１４を更新する。
【０１５６】
サポート装置６００ａは、フェーズ更新手段１５２を実行するためのユーザプログラムを作成するためのエディタ機能を有し、フェーズ値１５１４を変更するための変更命令のオブジェクトを提供する。すなわち、フェーズ更新手段１５２の機能は、サポート装置６００ａにより提供される。
【０１５７】
図１３は、フェーズ更新手段１５２を実現するためのユーザプログラムの一例を示す図である。図１３に示すユーザプログラムは、サポート装置６００ａにより提供されるエディタ機能を利用して作成することができる。なお、図１３に示すユーザプログラムは、ラダープログラムのコードで作成されているものの、他のプログラミング言語で作成されてもよい。
【０１５８】
フェーズ更新手段１５２を実現するためのユーザプログラムは、フェーズ値１５１４を更新するための複数の変更命令６６０（６６０Ａ，６６０Ｂ，６６０Ｃ，６６０Ｄ）と、各変更命令６６０を実行するための実行条件を既定した実行条件規定部６７０（６７０Ａ，６７０Ｂ，６７０Ｃ，６７０Ｄ）とを含む。
【０１５９】
たとえば、実行条件規定部６７０Ａが規定する条件が成立すると、変更命令６６０Ａが実行されるように、ユーザプログラムは作成されている。
【０１６０】
ユーザは、Ａ接点６６２Ａ，６６４Ａ、Ｂ接点６６２Ｂ，６６４Ｂおよび比較命令６６６Ａ，６６６Ｂの各々によって定義された条件を組み合わせることで、実行条件規定部６７０内の条件を定義する。各条件が参照する変数（ＰＣ接続中、異常発生中、フェーズ変数など）が、フェーズ更新用変数に相当する。
【０１６１】
このように、ユーザは、サポート装置６００ａが提供するエディット機能を利用して、任意の変更命令６６０と、任意の条件とを組み合わせて、フェーズ値１５１４を更新するためのユーザプログラムを作成することが可能である。すなわち、サポート装置６００ａは、変更命令の実行条件を受け付ける設定手段として機能する。
【０１６２】
＜Ｋ．付記＞
上述したような本実施の形態および変形例は、以下のような技術思想を含む。
【０１６３】
［構成１］
制御対象を制御するための制御システム（１０，１０ａ）であって、
前記制御対象との間で遣り取りする信号に基づいて内部状態値を周期的に更新する制御エンジン（１５０，１５０ａ）と、
前記制御システムに発生し得るインシデントに応じたインシデント対応動作を実行するセキュリティエンジン（２５０，２５０ａ）と、
前記制御エンジンが保持する前記内部状態値（１５１０）、および、前記セキュリティエンジンが保持する内部状態値のうちのユーザにより予め任意に選択された１または複数の値（１５１２）に基づいて前記制御対象の動作状態を示すフェーズの値（２５２２，１５１４）を更新するフェーズ更新手段（２５２）とを備え、
前記セキュリティエンジンは、
フェーズごとにインシデント対応動作の内容が定義された動作定義情報（２５４２）を保持する手段（２５４）と、
前記フェーズ更新手段により更新される前記フェーズの値に応じて、前記動作定義情報に定義された対応するインシデント対応動作を実行する実行手段（２５６）とを含む、制御システム。
【０１６４】
［構成２］
前記フェーズの値の更新に用いられる、前記１または複数の値の選択を受け付ける設定手段（６００，６００ａ）をさらに備える、構成１に記載の制御システム。
【０１６５】
［構成３］
前記フェーズ更新手段（１５２）は、前記制御エンジン（１５０ａ）の一部に組み込まれており、
前記制御エンジンで実行される制御プログラムは、前記フェーズの値を更新するための１または複数の命令（６６０）を含む、構成１または２に記載の制御システム。
【０１６６】
［構成４］
前記フェーズ更新手段は、前記制御エンジン（１５０ａ）の一部に組み込まれており、
前記制御エンジンで実行される制御プログラムは、前記フェーズの値を更新するための１または複数の命令（６６０）を含み、
前記設定手段（６００ａ）は、前記命令の実行条件（６７０）を受け付ける、構成２に記載の制御システム。
【０１６７】
［構成５］
前記フェーズ更新手段は、前記フェーズを定義する判定条件に従って前記フェーズの値を更新する、構成１または２に記載の制御システム。
【０１６８】
［構成６］
前記フェーズ更新手段（２５２）は、前記フェーズを定義する判定条件（２５２４）に従って前記フェーズの値を更新し、
前記設定手段（６００）は、前記判定条件として、前記制御エンジンが保持する前記内部状態値、および、前記セキュリティエンジンが保持する内部状態値のうちから、前記フェーズを定義する値の選択を受け付ける、構成２に記載の制御システム。
【０１６９】
［構成７］
前記制御エンジンを有する制御ユニット（１００）と、
前記セキュリティエンジンを有するセキュリティユニット（２００）とを備え、
前記フェーズの値の更新に用いられる、前記１または複数の値を前記制御ユニットが更新する周期と、前記フェーズの値を前記フェーズ更新手段が更新する周期とは同期している、構成１〜構成６のうちいずれか１に記載の制御システム。
【０１７０】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１７１】
１，１ａ  コントローラシステム、１０，１０ａ  制御システム、１００  制御ユニット、１０２，２０２，６０２  プロセッサ、１０４，２０４  チップセット、１０６，２０６  主記憶装置、１０８，２０８  二次記憶装置、１１０，２１０  通信コントローラ、１１２，２１２，６２０  ＵＳＢコントローラ、１１４，２１４  メモリカードインターフェイス、１１５，２１５  メモリカード、１１６，１１８，１２０，２１６，２１８  ネットワークコントローラ、１２２  内部バスコントローラ、１２４，２２４  インジケータ、１４２，１４４，１４６，１４８，２４２，２４４  通信ポート、１５０，１５０ａ  制御エンジン、１５２，２５２  フェーズ更新手段、１６０  情報エンジン、２００  セキュリティユニット、２５０，２５０ａ  セキュリティエンジン、２５４  対応データベース、２５６  インシデント対応手段、２５８  検知手段、３００  セーフティユニット、４００  機能ユニット、４５０  電源ユニット、５００  フィールドデバイス、６００，６００ａ  サポート装置、６０４  メインメモリ、６０６  入力部、６０８  表示部、６１０  ストレージ、６１２  光学ドライブ、６１４  記録媒体、６１８  プロセッサバス、６４０  設定画面、６４２  フェーズ領域、６４４  条件入力領域、６４６  キャンセルボタン、６４８  確定ボタン、６６０，６６０Ａ  変更命令、６６２Ａ，６６２Ｂ，６６４Ａ，６６４Ｂ  接点、６６６Ａ，６６６Ｂ  比較命令、６７０，６７０Ａ  実行条件規定部、７００  ＳＣＡＤＡ装置、８００  ＨＭＩ、９００  データベース、１０８６  ユーザプログラム、１５１０  変数、１５１２  フェーズ更新用変数、１５１４，２５２２  フェーズ値、２５２４  判定テーブル、２５４２  対応テーブル、６１０４  サポートプログラム、６４２２，６４２２Ｄ  フェーズ名称セル、６４２４  フェーズ追加ボタン、６４４２  条件名セル、６４４４  条件追加ボタン、６４４６  選択タブ、６４４８  リスト。
【図１】
2020201584.tif 000003
【図２】
2020201584.tif 000004
【図３】
2020201584.tif 000005
【図４】
2020201584.tif 000006
【図５】
2020201584.tif 000007
【図６】
2020201584.tif 000008
【図７】
2020201584.tif 000009
【図８】
2020201584.tif 000010
【図９】
2020201584.tif 000011
【図１０】
2020201584.tif 000012
【図１１】
2020201584.tif 000013
【図１２】
2020201584.tif 000014
【図１３】
2020201584.tif 000015