(57)【要約】【課題】生じ得るセキュリティ事象から制御装置および制御装置を含むコントローラシステムを好適に保護するという新たな課題を解決することを目的とする。【解決手段】サポート装置は、制御装置で実行される制御演算の内容を規定するユーザプログラムを作成または編集するためのユーザインターフェイスを提供する作成編集部と、作成編集部が提供するユーザインターフェイスを介して作成されたユーザプログラムを出力する出力部とを含む。作成編集部は、ユーザプログラムを構成する命令として、セキュリティ防護処理が実行されることで行われるセキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイスを提供する。【選択図】図３
2020107158.tif 000002
【特許請求の範囲】
【請求項１】
コントローラシステムで利用されるサポート装置であって、
前記コントローラシステムは、
制御対象を制御するための制御演算を実行する制御装置と、
前記コントローラシステムに生じ得るセキュリティ事象の検知および当該セキュリティ事象に応じた処理の実行を含むセキュリティ防護処理を実行するセキュリティ監視装置とを備え、
前記サポート装置は、
前記制御装置で実行される制御演算の内容を規定するユーザプログラムを作成または編集するためのユーザインターフェイスを提供する作成編集部と、
前記作成編集部が提供する前記ユーザインターフェイスを介して作成された前記ユーザプログラムを出力する出力部とを備え、
前記作成編集部は、前記ユーザプログラムを構成する命令として、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイスを提供する、サポート装置。
【請求項２】
前記作成編集部は、前記変更命令の実行条件の設定を受け付けるユーザインターフェイスを提供する、請求項１に記載のサポート装置。
【請求項３】
前記変更命令は、前記制御装置の動作状態を示す入力信号に対して、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を示す出力信号の値を決定するための命令であって、
前記作成編集部は、前記入力信号と前記出力信号との対応関係の設定を受け付けるユーザインターフェイスを提供する、請求項１または請求項２に記載のサポート装置。
【請求項４】
前記作成編集部は、前記セキュリティ監視装置の挙動を設定するためのユーザインターフェイスを提供する、請求項１〜請求項３のうちいずれか１項に記載のサポート装置。
【請求項５】
前記セキュリティ監視装置の挙動は、前記コントローラシステムを外部ネットワークに接続するための接続条件の設定を含み、
前記作成編集部は、前記接続条件の内容を設定するためのユーザインターフェイスを提供する、請求項１〜請求項４のうちいずれか１項に記載のサポート装置。
【請求項６】
コントローラシステムが備える制御対象を制御するための制御演算を実行する制御装置で実行されるユーザプログラムの開発を支援するための支援プログラムであって、
前記コントローラシステムは、前記コントローラシステムに生じ得るセキュリティ事象の検知および当該セキュリティ事象に応じた処理の実行を含むセキュリティ防護処理を実行するセキュリティ監視装置を有し、
前記支援プログラムは、コンピュータに、
前記制御装置で実行される制御演算の内容を規定するユーザプログラムを作成または編集するためのユーザインターフェイスを提供するステップと、
前記ユーザインターフェイスを介して作成された前記ユーザプログラムを出力するステップとを実行させ、
前記ユーザインターフェイスを提供するステップにおいて、前記ユーザプログラムを構成する命令として、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイスが提供される、支援プログラム。
【請求項７】
制御対象を制御するための制御演算を実行する制御装置であって、
前記制御装置に生じ得るセキュリティ事象の検知および当該セキュリティ事象に応じた処理の実行を含むセキュリティ防護処理を実行するセキュリティ監視装置と接続するための通信インターフェイスと、
前記制御演算を実現するためのユーザプログラムを実行するプログラム実行部とを備え、
前記ユーザプログラムは、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を変更するための変更命令を含み、
前記プログラム実行部は、前記変更命令の実行によって、前記セキュリティ監視装置で実行されるセキュリティ防護処理の内容を変更するための指令を前記セキュリティ監視装置へ通知する、制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象を制御するコントローラシステムに利用されるサポート装置、コントローラシステムに含まれる制御装置で実行されるユーザプログラムの開発を支援する支援プログラム、および制御対象を制御するための制御演算を実行する制御装置に関する。
【背景技術】
【０００２】
様々な製造現場において、ＰＬＣ（Programmable Logic Controller）などの制御装置が導入されている。このような制御装置は、一種のコンピュータであり、製造装置や製造設備などに応じて設計された制御プログラムを実行する。制御装置は、中継装置を介して工場内または工場外の様々な装置と接続される。
【０００３】
たとえば、特許第６４０７４９４号公報（特許文献１）には、中継装置の一例であるルータを介して、工場の外のクラウドシステムと通信可能に接続された制御装置が開示されている。
【０００４】
また、国際公開第２０１６／１５７４７７号（特許文献２）には、中継装置の一例であるルータを介して、他の制御装置と通信可能に接続された制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第６４０７４９４号公報
【特許文献２】国際公開第２０１６／１５７４７７号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に開示された制御装置のように、近年のＩＣＴ（Information and Communication Technology）の進歩に伴って、制御装置も様々な外部装置とネットワーク接続される。また、制御装置において実行される処理も高度化している。このようなネットワーク化あるいはインテリジェント化に伴って、制御装置に対して様々なセキュリティ脅威が発生し得る。
【０００７】
従来の制御装置においては、ネットワーク化あるいはインテリジェント化に伴って生じ得る、セキュリティ脅威を含むセキュリティ事象については、何ら想定されていない。
【０００８】
本発明は、制御装置および制御システムのネットワーク化あるいはインテリジェント化に伴って生じ得るセキュリティ事象から制御装置および制御装置を含むコントローラシステムを好適に保護するという新たな課題を解決することを一つの目的としている。
【課題を解決するための手段】
【０００９】
本開示の一例によれば、コントローラシステムで利用されるサポート装置が提供される。コントローラシステムは、制御対象を制御するための制御演算を実行する制御装置と、コントローラシステムに生じ得るセキュリティ事象の検知およびセキュリティ事象に応じた処理の実行を含むセキュリティ防護処理を実行するセキュリティ監視装置とを含む。サポート装置は、制御装置で実行される制御演算の内容を規定するユーザプログラムを作成または編集するためのユーザインターフェイスを提供する作成編集部と、作成編集部が提供するユーザインターフェイスを介して作成されたユーザプログラムを出力する出力部とを含む。作成編集部は、ユーザプログラムを構成する命令として、セキュリティ防護処理が実行されることで行われるセキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイスを提供する。
【００１０】
この開示によれば、セキュリティ監視装置の挙動を変更できる環境が提供される。その結果、生じ得るセキュリティ事象からコントローラシステムを好適に保護するための環境が提供される。
【００１１】
上述の開示において、作成編集部は、変更命令の実行条件の設定を受け付けるユーザインターフェイスを提供する。
【００１２】
この開示によれば、セキュリティ監視装置の挙動を変更する条件を設定できるため、セキュリティ事象が発生する状況に応じたセキュリティ環境を提供できる。
【００１３】
上述の開示において、変更命令は、制御装置の動作状態を示す入力信号に対して、セキュリティ防護処理が実行されることで行われるセキュリティ監視装置の挙動を示す出力信号の値を決定するための変更命令を含む。この変更命令が選択された場合、作成編集部は、入力信号と出力信号との対応関係の設定を受け付けるユーザインターフェイスを提供する。
【００１４】
この開示によれば、制御装置の動作状態に応じたセキュリティ対策をとるための環境が提供される。
【００１５】
上述の開示において、作成編集部は、セキュリティ監視装置の挙動を設定するためのユーザインターフェイスを提供する。
【００１６】
この開示によれば、制御装置の動作状態に応じたセキュリティ対策をとるための環境が提供される。
【００１７】
上述の開示において、セキュリティ監視装置の挙動は、コントローラシステムを外部ネットワークに接続するための接続条件の設定を含む。作成編集部は、接続条件の内容を設定するためのユーザインターフェイスを提供する。
【００１８】
この開示によれば、制御装置の動作状態に応じて外部ネットワークに接続するための接続条件を設定できるため、状況に合わせた通信制限をかけることができ、柔軟性のあるセキュリティ対策をとるための環境が提供される。
【００１９】
本開示の別の一例によれば、コントローラシステムが備える制御対象を制御するための制御演算を実行する制御装置で実行されるユーザプログラムの開発を支援するための支援プログラムが提供される。コントローラシステムは、コントローラシステムに生じ得るセキュリティ事象の検知およびセキュリティ事象に応じた処理の実行を含むセキュリティ防護処理を実行するセキュリティ監視装置を含む。支援プログラムは、コンピュータに、制御装置で実行される制御演算の内容を規定するユーザプログラムを作成または編集するためのユーザインターフェイスを提供するステップと、ユーザインターフェイスを介して作成されたユーザプログラムを出力するステップとを実行させる。ユーザインターフェイスを提供するステップにおいて、ユーザプログラムを構成する命令として、セキュリティ防護処理が実行されることで行われるセキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイスが提供される。
【００２０】
この開示によれば、セキュリティ監視装置の挙動を変更できる環境が提供される。その結果、生じ得るセキュリティ事象からコントローラシステムを好適に保護するための環境が提供される。
【００２１】
本開示の別の一例によれば、制御対象を制御するための制御演算を実行する制御装置が提供される。制御装置は、制御装置に生じ得るセキュリティ事象の検知およびセキュリティ事象に応じた処理の実行を含むセキュリティ防護処理を実行するセキュリティ監視装置と接続するための通信インターフェイスと、制御演算を実現するためのユーザプログラムを実行するプログラム実行部とを含む。ユーザプログラムは、セキュリティ防護処理が実行されることで行われるセキュリティ監視装置の挙動を変更するための変更命令を含む。プログラム実行部は、変更命令の実行によって、セキュリティ監視装置で実行されるセキュリティ防護処理の内容を変更するための指令をセキュリティ監視装置へ通知する。
【００２２】
この開示によれば、セキュリティ監視装置の挙動を変更できる環境が提供される。その結果、生じ得るセキュリティ事象から制御装置を好適に保護するための環境が提供される。
【発明の効果】
【００２３】
生じ得るセキュリティ事象から制御装置および制御装置を含むコントローラシステムを好適に保護することができる。
【図面の簡単な説明】
【００２４】
【図１】コントローラシステム１ａを中心とした制御システム１０ａの一例を示す図である。
【図２】制御装置１００ａが受けるセキュリティ事象が生じ得る場面を説明するための図である。
【図３】サポート装置およびサポート装置が接続されるコントローラシステムの機能構成の一例を示す図である。
【図４】本実施の形態に係るコントローラシステム１の構成例を示す外観図である。
【図５】本実施の形態に従うコントローラシステム１を構成する制御ユニット１００のハードウェア構成例を示す模式図である。
【図６】本実施の形態に従うコントローラシステム１を構成するセキュリティユニット２００のハードウェア構成例を示す模式図である。
【図７】本実施の形態に従うコントローラシステム１を構成するセーフティユニット３００のハードウェア構成例を示す模式図である。
【図８】コントローラシステム１のソフトウェア構成を示す模式図である。
【図９】コントローラシステム１のセキュリティ機能の概要を示す機能構成図である。
【図１０】レベル対応データ８６４のデータ構成を示す図である。
【図１１】処理内容対応データ８６６のデータ構成を示す図である。
【図１２】サポート装置６００のハードウェア構成例を示す模式図である。
【図１３】変更命令の選択を受け付けるユーザインターフェイスの一例を示す図である。
【図１４】変更命令が選択されたときに提供されるユーザインターフェイスの一例を示す図である。
【図１５】外部ネットワークに接続するための接続条件の内容を設定するためのユーザインターフェイスの一例を示す図である。
【図１６】変更命令の実行条件の設定を受け付けるユーザインターフェイスの一例を示す図である。
【図１７】サポート装置６００のソフトウェア構成を示す模式図である。
【図１８】制御ユニット１００が実行するセキュリティレベル移行処理の一例を示すフローチャートである。
【図１９】サポート装置６００が実行する処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２５】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。なお、以下で説明される各実施の形態および各変形例は、適宜選択的に組み合わせてもよい。
【００２６】
§１  適用例
図１〜図３を参照して、本発明が適用される場面の一例について説明する。図１は、コントローラシステム１ａを中心とした制御システム１０ａの一例を示す図である。図２は、制御装置１００ａが受けるセキュリティ事象が生じ得る場面を説明するための図である。図３は、サポート装置およびサポート装置が接続されるコントローラシステムの機能構成の一例を示す図である。
【００２７】
コントローラシステム１ａは、制御装置１００ａと、セキュリティ監視装置２００ａとを含む。制御装置１００ａとセキュリティ監視装置２００ａとは、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネット（登録商標）などの任意のデータ伝送経路を介して通信可能に接続されている。
【００２８】
制御装置１００ａは、制御対象を制御するための制御演算を実行し、コントローラシステム１ａにおいて中心的な処理を実行する。制御装置１００ａは、１または複数の通信ポートを有している。図１に示す例では、制御装置１００ａは、通信ポート１４２ａ，１４４ａ，１４６ａ，１４８ａを有している。
【００２９】
制御装置１００ａは、通信ポート１４２ａを介して、サポート装置６００ａと通信可能に接続される。サポート装置６００ａは、コントローラシステム１ａに含まれる各装置で実行されるプログラムの作成、デバッグ、各種パラメータの設定などの機能をユーザに提供する。サポート装置６００ａを用いてユーザが作成したプログラムをユーザプログラム１０８６ａと称し、ユーザプログラム１０８６ａは、サポート装置６００ａから制御装置１００ａに向けて送信され、制御装置１００ａで実行される。サポート装置６００ａと制御装置１００ａとは、典型的には、ＵＳＢ（Universal Serial Bus）ケーブルを用いて接続される。
【００３０】
なお、ユーザプログラム１０８６ａは、メモリカード１１５ａなどの記憶媒体に格納されていてもよい。図１に示す例では、制御装置１００ａは、メモリカードインターフェイス１１４ａを有し、メモリカード１１５ａを着脱可能に構成されており、メモリカード１１５ａに格納されたユーザプログラム１０８６ａを読み出すことができる。
【００３１】
制御装置１００ａは、通信ポート１４４ａを介して、フィールドデバイス５００ａと通信可能に接続される。フィールドデバイス５００ａは、制御対象から制御演算に必要な各種情報を収集するセンサや検出器、および、制御対象に対して何らかの作用を与えるアクチュエータなどを含む。フィールドデバイス５００ａと制御装置１００ａとの間の通信プロトコルは、典型的には、ＥｔｈｅｒＣＡＴ（登録商標）が利用される。
【００３２】
制御装置１００ａは、通信ポート１４６ａを介して、１または複数のＨＭＩ（Human Machine Interface）８００ａと通信可能に接続される。ＨＭＩ８００ａは、コントローラシステム１ａでの制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従ってコントローラシステム１ａに対して内部コマンドなどを生成する。ＨＭＩ８００ａと制御装置１００ａとの間の通信プロトコルは、典型的には、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が利用される。
【００３３】
制御装置１００ａは、通信ポート１４８ａを介してデータベース９５０ａと通信可能に接続される。データベース９５０ａは、コントローラシステム１ａから送信される各種データ（たとえば、制御対象であるワークから計測されたトレーサビリティに関する情報など）を収集する。なお、データベース９５０ａは、制御装置１００ａと、社内ネットワークを介して通信可能に接続されていてもよく、また、ＶＰＮ（Virtual Private Network）などを介して通信可能に接続されていてもよい。図１に示す例では、データベース９５０ａと制御装置１００ａとの間の通信プロトコルは、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）が利用される。
【００３４】
セキュリティ監視装置２００ａは、コントローラシステム１ａに対するセキュリティ機能を担当し、コントローラシステム１ａに対するセキュリティ防護処理を実行する。セキュリティ防護処理の詳細については、後述する。セキュリティ監視装置２００ａは、１または複数の通信ポートを有している。図１に示す例では、セキュリティ監視装置２００ａは、通信ポート２４２ａを有している。
【００３５】
セキュリティ監視装置２００ａは、通信ポート２４２ａを介して、サポート装置６００ａまたはＳＣＡＤＡ（Supervisory Control And Data Acquisition）装置７５０ａと通信可能に接続されている。セキュリティ監視装置２００ａとサポート装置６００ａとの間の通信、およびセキュリティ監視装置２００ａとＳＣＡＤ装置７５０ａとの間の通信は、典型的には、ＶＰＮを利用して行われる。
【００３６】
サポート装置６００ａは、たとえば、ＶＰＮを介してセキュリティ監視装置２００ａと通信可能に接続されることで、コントローラシステム１ａのリモートメンテナンスを実現する。
【００３７】
ＳＣＡＤＡ装置７５０ａは、コントローラシステム１ａでの制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、コントローラシステム１ａに対して内部コマンドなどを生成する。ＳＣＡＤＡ装置７５０ａは、コントローラシステム１ａが扱うデータを収集する機能も有する。
【００３８】
図２を参照して、制御装置１００ａが受けるセキュリティ事象が生じ得る場面について説明する。ここで、「セキュリティ事象」は、制御システム１０ａに含まれる設備や機械を正常運転することを妨げる任意の事象に加えて、この事象に関係し得るすべての事象を含む。
【００３９】
なお、「正常運転」は、システム設計通りおよび生産計画通りに、設備や機械を運転継続するための、設備や機械の立ち上げ、メンテナンス、段取り替えなどの付属的な処理も「正常運転」の概念に含まれる。
【００４０】
制御装置１００ａにおいては、典型的には、（１）データベース９５０ａといった上位装置との間の通信、（２）フィールドデバイス５００ａなどの制御対象との間の通信、（３）サポート装置６００ａまたはメモリカード１１５ａなどの制御装置１００ａが実行する制御プログラムに変更を与える装置との間の通信、または（４）社外の装置との間の通信でセキュリティ事象の発生リスクが存在する。さらに、制御装置１００ａに搭載されているすべての物理ポートは、セキュリティ事象の発生リスクが存在する。なお、ここで、制御プログラムとは、ユーザプログラム１０８６ａに加えて、制御装置１００ａとしての基本的な機能を提供するシステムプログラムを含む概念である。
【００４１】
セキュリティ監視装置２００ａは、これらの各場面でコントローラシステム１ａに生じ得るセキュリティ事象の検知、およびセキュリティ事象に応じた処理を含むセキュリティ防護処理を実行する。セキュリティ事象に応じた処理は、コントローラシステム１ａに生じ得るセキュリティ事象に対する予防と、検知されたセキュリティ事象に対する対応とのうちの少なくとも一方に関する処理を含む。
【００４２】
制御装置１００ａが実行するユーザプログラム１０８６ａは、セキュリティ防護処理が実行されることで行われるセキュリティ監視装置２００ａの挙動を変更するための変更命令８６０ａを含む。変更命令８６０ａが実行されることで、セキュリティ監視装置２００ａが実行するセキュリティ事象に対する予防および検知されたセキュリティ事象に対する対応とのうちの少なくとも一方を変更することができる。
【００４３】
サポート装置６００ａは、ユーザプログラム１０８６ａの作成にあたって、変更命令８６０ａを選択するためのユーザインターフェイスを提供する。ユーザインターフェイスは、サポート装置６００ａが備えるディスプレイなどの表示部と、マウスおよびキーボードなどの入力部とを利用して実現される。
【００４４】
図３を参照して、サポート装置は、ユーザプログラムを作成または編集するためのユーザインターフェイスを提供するための作成編集部６０２ａと、作成編集部が提供するユーザインターフェイスを介して作成されたユーザプログラムを出力する出力部６２０ａとを備える。
【００４５】
ここで、サポート装置６００ａが出力するユーザプログラム１０８６ａは、コンパイルされた後のオブジェクトコードで書かれたプログラムであってもよく、また、コンパイルされる前のソースコードで書かれたプログラムであってもよい。
【００４６】
作成編集部６０２ａは、たとえば、サポート装置６００ａが備えるプロセッサなどが、各種プログラムを実行することで発現される機能である。
【００４７】
出力部６２０ａは、ユーザプログラム１０８６ａを制御装置１００ａに直接出力するためのＵＳＢコントローラでああってもよく、また、メモリカード１１５ａに出力するためのメモリカードインターフェイスなどであってもよく、また、制御装置１００ａと通信可能に接続された他の装置（たとえば、セキュリティ監視装置２００ａ）と通信可能に接続されるためのインターフェイスであってもよい。
【００４８】
制御装置１００ａは、ユーザプログラムを実行するプログラム実行部１０２ａと、セキュリティ監視装置２００ａと接続するための通信インターフェイス１１０ａとを備える。
【００４９】
プログラム実行部１０２ａは、サポート装置６００ａが提供するユーザインターフェイスを介して作成された変更命令を含むユーザプログラムを実行すると、セキュリティ監視装置２００ａで実行されるセキュリティ防護処理の内容を変更するための指令をセキュリティ監視装置２００ａに通知する。なお、プログラム実行部１０２ａは、制御装置１００ａが備えるプロセッサがシステムプログラムを実行することで発現される機能である。
【００５０】
セキュリティ監視装置２００ａは、制御装置１００ａからの指令を受けて、セキュリティ防護処理の内容を変更する。たとえば、図３に示す例では、セキュリティ監視装置２００ａは、セキュリティ防護処理の内容を実行内容Ａから実行内容Ｂに変更する。
【００５１】
このように、サポート装置６００ａが、変更命令を選択することのできるユーザインターフェイスを提供することで、セキュリティ監視装置２００ａの挙動を変更できる環境が提供される。その結果、生じ得るセキュリティ事象からコントローラシステムを好適に保護するための環境が提供される。
【００５２】
§２  構成例
＜Ａ．コントローラシステム１のシステム構成＞
図４は、本実施の形態に係るコントローラシステム１の構成例を示す外観図である。コントローラシステム１は、制御ユニット１００と、セキュリティユニット２００と、セーフティユニット３００と、１または複数の機能ユニット４００と、電源ユニット４５０とを含む。
【００５３】
制御ユニット１００とセキュリティユニット２００との間は、任意のデータ伝送路（例えば、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネットなど）を介して接続されている。制御ユニット１００とセーフティユニット３００および１または複数の機能ユニット４００との間は、図示しない内部バスを介して接続されている。
【００５４】
制御ユニット１００は、制御対象を制御するための制御演算を実行する制御装置の一例であり、コントローラシステム１において中心的な処理を実行する。制御ユニット１００は、任意に設計された要求仕様に従って、制御対象を制御するための制御演算を実行する。後述のセーフティユニット３００で実行される制御演算との対比で、制御ユニット１００で実行される制御演算を「標準制御」とも称す。図４に示す構成例において、制御ユニット１００は、１または複数の通信ポートを有している。
【００５５】
セキュリティユニット２００は、制御ユニット１００に接続され、コントローラシステム１に対するセキュリティ機能を担当する。セキュリティユニット２００は、セキュリティ防護処理を実行するセキュリティ監視装置の一例である。図４に示す構成例において、セキュリティユニット２００は、１または複数の通信ポートを有している。セキュリティユニット２００が提供するセキュリティ機能の詳細については、後述する。
【００５６】
セーフティユニット３００は、制御ユニット１００とは独立して、制御対象に関するセーフティ機能を実現するための制御演算を実行する。セーフティユニット３００で実行される制御演算を「セーフティ制御」とも称す。通常、「セーフティ制御」は、ＩＥＣ  ６１５０８などに規定されたセーフティ機能を実現するための要件を満たすように設計される。「セーフティ制御」は、設備や機械などによって人の安全が脅かされることを防止するための処理を総称する。
【００５７】
機能ユニット４００は、コントローラシステム１による様々な制御対象に対する制御を実現するための各種機能を提供する。機能ユニット４００は、典型的には、Ｉ／Ｏユニット、セーフティＩ／Ｏユニット、通信ユニット、モーションコントローラユニット、温度調整ユニット、パルスカウンタユニットなどを包含し得る。Ｉ／Ｏユニットとしては、例えば、デジタル入力（ＤＩ）ユニット、デジタル出力（ＤＯ）ユニット、アナログ出力（ＡＩ）ユニット、アナログ出力（ＡＯ）ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニットなどが挙げられる。セーフティＩ／Ｏユニットは、セーフティ制御に係るＩ／Ｏ処理を担当する。
【００５８】
電源ユニット４５０は、コントローラシステム１を構成する各ユニットに対して、所定電圧の電源を供給する。
【００５９】
＜Ｂ．各ユニットのハードウェア構成例＞
次に、本実施の形態に従うコントローラシステム１を構成する各ユニットのハードウェア構成例について説明する。
【００６０】
（ｂ１：制御ユニット１００）
図５は、本実施の形態に従うコントローラシステム１を構成する制御ユニット１００のハードウェア構成例を示す模式図である。制御ユニット１００は、主たるコンポーネントとして、ＣＰＵ（Central Processing Unit）やＧＰＵ（Graphical Processing Unit）などのプロセッサ１０２と、チップセット１０４と、主記憶装置１０６と、二次記憶装置１０８と、通信コントローラ１１０と、ＵＳＢ（Universal Serial Bus）コントローラ１４２と、メモリカードインターフェイス１１４と、ネットワークコントローラ１４４，１４６，１４８と、内部バスコントローラ１２２と、インジケータ１２４とを含む。
【００６１】
プロセッサ１０２は、二次記憶装置１０８に格納された各種プログラムを読み出して、主記憶装置１０６に展開して実行することで、標準制御に係る制御演算、および、後述するような各種処理を実現する。すなわち、プロセッサ１０２は、プログラムを実行するプログラム実行部としての機能を有する。チップセット１０４は、プロセッサ１０２と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット１００全体としての処理を実現する。
【００６２】
二次記憶装置１０８には、システムプログラムに加えて、システムプログラムが提供する実行環境上で動作する制御プログラムが格納される。
【００６３】
通信コントローラ１１０は、セキュリティユニット２００との間のデータの遣り取りを担当する。通信コントローラ１１０としては、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネットなどに対応する通信チップを採用できる。
【００６４】
ＵＳＢコントローラ１４２は、通信ポートに相当し、ＵＳＢ接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。具体的には、ＵＳＢコントローラ１４２は、サポート装置６００との間のデータの遣り取りを担当する。サポート装置６００は、少なくとも制御ユニット１００にアクセス可能になっており、コントローラシステム１に含まれる各ユニットで実行されるプログラムの作成、デバッグ、各種パラメータの設定などの機能をユーザへ提供する。
【００６５】
メモリカードインターフェイス１１４は、メモリカード１１５を着脱可能に構成されており、メモリカード１１５に対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード１１５から制御プログラムや各種設定などのデータを読出すことが可能になっている。
【００６６】
ネットワークコントローラ１４４は、１または複数のフィールドデバイス５００との間のデータの遣り取りを担当する。フィールドデバイス５００は、制御対象から制御演算に必要な各種情報を収集するセンサや検出器、および、制御対象に対して何らかの作用を与えるアクチュエータなどを含む。フィールドデバイス５００は、ワークに対して何らかの外的な作用を与えるロボット、ワークを搬送するコンベヤ、フィールドに配置されたセンサやアクチュエータとの間で信号を遣り取りするＩ／Ｏユニットなどを含む。
【００６７】
ネットワークコントローラ１４６は、ＨＭＩ８００との間のデータの遣り取りを担当する。ＨＭＩ８００は、コントローラシステム１での制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、コントローラシステム１に対して内部コマンドなどを生成する。
【００６８】
ネットワークコントローラ１４８は、データベース９５０との間のデータの遣り取りを担当する。データベース９５０は、コントローラシステム１から送信される各種データ（例えば、各ワークから計測されたトレーサビリティに関する情報など）を収集する。
【００６９】
ネットワークコントローラ１４４，１４６，１４８の各々は、通信ポートに相当し、ＥｔｈｅｒＣＡＴ（登録商標）、ＥｔｈｅｒＮｅｔ／ＩＰ（登録商標）、ＤｅｖｉｃｅＮｅｔ（登録商標）、ＣｏｍｐｏＮｅｔ（登録商標）などの産業用ネットワークプロトコルを採用してもよい。
【００７０】
内部バスコントローラ１２２は、コントローラシステム１を構成するセーフティユニット３００や１または複数の機能ユニット４００との間のデータの遣り取りを担当する。内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【００７１】
インジケータ１２４は、制御ユニット１００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤなどで構成される。
【００７２】
図５には、プロセッサ１０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣ（Application Specific Integrated Circuit）またはＦＰＧＡ（Field-Programmable Gate Array）など）を用いて実装してもよい。あるいは、制御ユニット１００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳ（Operating System）を並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００７３】
（ｂ２：セキュリティユニット２００）
図６は、本実施の形態に従うコントローラシステム１を構成するセキュリティユニット２００のハードウェア構成例を示す模式図である。セキュリティユニット２００は、主たるコンポーネントとして、ＣＰＵやＧＰＵなどのプロセッサ２０２と、チップセット２０４と、主記憶装置２０６と、二次記憶装置２０８と、通信コントローラ２１０と、ＵＳＢコントローラ２１２と、メモリカードインターフェイス２１４と、ネットワークコントローラ２４２と、インジケータ２２４とを含む。
【００７４】
プロセッサ２０２は、二次記憶装置２０８に格納された各種プログラムを読み出して、主記憶装置２０６に展開して実行することで、後述するような各種セキュリティ機能を実現する。チップセット２０４は、プロセッサ２０２と各コンポーネントとの間のデータの遣り取りを仲介することで、セキュリティユニット２００全体としての処理を実現する。
【００７５】
二次記憶装置２０８には、システムプログラムに加えて、システムプログラムが提供する実行環境上で動作するセキュリティシステムプログラムが格納される。
【００７６】
通信コントローラ２１０は、制御ユニット１００との間のデータの遣り取りを担当する。通信コントローラ２１０としては、制御ユニット１００に通信コントローラ２１０と同様に、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓあるいはイーサネットなどに対応する通信チップを採用できる。
【００７７】
ＵＳＢコントローラ２１２は、ＵＳＢ接続を介して任意の情報処理装置との間のデータの遣り取りを担当する。ＵＳＢコントローラ２１２は、典型的には、サポート装置６００との間のデータの遣り取りを担当する。
【００７８】
メモリカードインターフェイス２１４は、メモリカード２１５を着脱可能に構成されており、メモリカード２１５に対して制御プログラムや各種設定などのデータを書込み、あるいは、メモリカード２１５から制御プログラムや各種設定などのデータを読出すことが可能になっている。
【００７９】
ネットワークコントローラ２４２は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ２１６，２１８は、イーサネット（登録商標）などの汎用的なネットワークプロトコルを採用してもよい。ネットワークを介しては、たとえば、サポート装置６００およびＳＣＡＤＡ装置７５０が接続され得る。
【００８０】
ＳＣＡＤＡ装置７５０は、コントローラシステム１での制御演算によって得られる各種情報をオペレータへ提示するとともに、オペレータからの操作に従って、コントローラシステム１に対して内部コマンドなどを生成する。ＳＣＡＤＡ装置７５０は、コントローラシステム１が扱うデータを収集する機能も有している。
【００８１】
インジケータ２２４は、セキュリティユニット２００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤなどで構成される。
【００８２】
図６には、プロセッサ２０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、セキュリティユニット２００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００８３】
（ｂ３：セーフティユニット３００）
図７は、本実施の形態に従うコントローラシステム１を構成するセーフティユニット３００のハードウェア構成例を示す模式図である。セーフティユニット３００は、主たるコンポーネントとして、ＣＰＵやＧＰＵなどのプロセッサ３０２と、チップセット３０４と、主記憶装置３０６と、二次記憶装置３０８と、メモリカードインターフェイス３１４と、内部バスコントローラ３２２と、インジケータ３２４とを含む。
【００８４】
プロセッサ３０２は、二次記憶装置３０８に格納された各種プログラムを読み出して、主記憶装置３０６に展開して実行することで、セーフティ制御に係る制御演算、および、後述するような各種処理を実現する。チップセット３０４は、プロセッサ３０２と各コンポーネントとの間のデータの遣り取りを仲介することで、セーフティユニット３００全体としての処理を実現する。
【００８５】
二次記憶装置３０８には、システムプログラムに加えて、システムプログラムが提供する実行環境上で動作するセーフティプログラムが格納される。
【００８６】
メモリカードインターフェイス３１４は、メモリカード３１５を着脱可能に構成されており、メモリカード３１５に対してセーフティプログラムや各種設定などのデータを書込み、あるいは、メモリカード３１５からセーフティプログラムや各種設定などのデータを読出すことが可能になっている。
【００８７】
内部バスコントローラ３２２は、内部バスを介した制御ユニット１００との間のデータの遣り取りを担当する。
【００８８】
インジケータ３２４は、セーフティユニット３００の動作状態などを通知するものであり、ユニット表面に配置された１または複数のＬＥＤなどで構成される。
【００８９】
図７には、プロセッサ３０２がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。あるいは、セーフティユニット３００の主要部を、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコンをベースとした産業用パソコン）を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のＯＳを並列的に実行させるとともに、各ＯＳ上で必要なアプリケーションを実行させるようにしてもよい。
【００９０】
＜Ｃ．コントローラシステム１のソフトウェア構成＞
図８は、コントローラシステム１のソフトウェア構成を示す模式図である。なお、図８においては、セーフティユニット３００、機能ユニット４００、および電源ユニット４５０の記載は省略している。図８に示す制御ユニット１００のソフトウェア群に含まれる命令コードは、二次記憶装置１０８に格納されており、適切なタイミングで読み出され、プロセッサ１０２によって実行される。図８に示すセキュリティユニット２００のソフトウェア群に含まれる命令コードは、二次記憶装置２０８に格納されており、適切なタイミングで読み出され、プロセッサ２０２によって実行される。
【００９１】
制御ユニット１００で実行されるソフトウェアとしては、基本的には、ＯＳ１０８２と、システムプログラム１０８４と、ユーザプログラム１０８６とを含む。なお、システムプログラム１０８４と、ユーザプログラム１０８６とは総じて制御プログラム１０８５ともいう。
【００９２】
ＯＳ１０８２は、制御ユニット１００のコンピュタアーキテクチャに応じて設計されており、プロセッサ１０２がシステムプログラム１０８４およびユーザプログラム１０８６を実行するための基本的な実行環境を提供する。ＯＳ１０８２は、典型的には、コントローラのメーカあるいは専門のソフトウェア会社などによって提供される。
【００９３】
システムプログラム１０８４は、コントローラシステム１としての機能を提供するためのソフトウェア群である。具体的には、システムプログラム１０８４は、スケジューラプログラム８４２と、シーケンス命令プログラム８４４と、入出力処理プログラム８４６と、アクセス処理プログラム８４８とを含む。システムプログラム１０８４に含まれる各プログラムは、典型的には、コントローラのメーカあるいは専門のソフトウェア会社などによって提供される。
【００９４】
ユーザプログラム１０８６は、ユーザにおける制御目的に応じて作成される。ユーザプログラム１０８６は、例えばサポート装置６００において生成される。ユーザプログラム１０８６は、サポート装置６００からＵＳＢケーブルを介して制御ユニット１００に転送され、二次記憶装置１０８に格納される。
【００９５】
ユーザプログラム１０８６は、シーケンス命令プログラム６４４と協働して、ユーザにおける制御目的を実現する。すなわち、ユーザプログラム１０８６は、シーケンス命令プログラム６４４によって提供される命令、関数、機能モジュールなどを利用することで、プログラムされた動作を実現する。
【００９６】
ユーザプログラム１０８６は、１または複数の変更命令８６０を含む。変更命令は、セキュリティユニット２００で実行されるセキュリティ防護処理の内容を変更するための命令である。なお、図８に図示しないものの、変更命令８６０は、第１変更命令と第２変更命令とを含む。第１変更命令は、制御ユニット１００の動作状態を示す入力信号に対して、セキュリティ防護処理が実行されることで行われるセキュリティユニット２００の挙動を示す出力信号の値を決定するための命令である。第２変更命令は、セキュリティユニット２００の挙動を示す命令である。
【００９７】
サポート装置６００からは、変更命令を実行するためのパラメータを示す情報として、ユーザプログラム１０８６と合わせてレベル対応データ８６４と、処理内容対応データ８６６とが送られる。なお、レベル対応データ８６４および処理内容対応データ８６６の詳細については後述する。
【００９８】
ユーザプログラム１０８６は、変更命令以外のフィールドデバイス５００などを制御するための制御命令８６３を含む。サポート装置６００からは、制御命令を実行するためのパラメータを示す情報として、ユーザプログラム１０８６と合わせて構成データ８６５が送られる。なお、構成データ８６５の詳細は後述する。
【００９９】
スケジューラプログラム８４２は、予め定められた優先度に従ってプログラムをプロセッサ１０２に実行させる。スケジューラプログラム８４２は、プロセッサ１０２が実行する各プログラムについて、処理開始および処理中断、ならびに、処理中断後の処理再開を制御する。
【０１００】
シーケンス命令プログラム８４４は、ユーザプログラム１０８６の実行に伴って、ユーザプログラム１０８６内で指定されているシーケンス命令の実体を呼び出して、その命令の内容を実現するための命令コード群を含む。
【０１０１】
入出力処理プログラム８４６は、制御ユニット１００に接続されたフィールド機器との間で、入力データの取得および出力データの送信を管理するためのプログラムである。
【０１０２】
アクセス処理プログラム６４８は、セキュリティユニット２００などの他の装置と通信する処理を実現するための命令コード群を含む。より具体的には、アクセス処理プログラム６４８を実行することで、制御ユニット１００は、変更命令の実行に伴って決定した、セキュリティ防護処理が実行されることで行われるセキュリティユニット２００の挙動を示す出力信号を、アクセス処理プログラム６４８の実行によりセキュリティユニット２００に出力する。
【０１０３】
セキュリティユニット２００は、基本的には、ＯＳ２０８２と、システムプログラム２０８４とを含む。
【０１０４】
ＯＳ２０８２は、セキュリティユニット２００のコンピュタアーキテクチャに応じて設計されており、プロセッサ２０２がシステムプログラム２０８４を実行するための基本的な実行環境を提供する。ＯＳ２０８２は、典型的には、コントローラのメーカあるいは専門のソフトウェア会社などによって提供される。
【０１０５】
システムプログラム２０８４は、アクセス処理プログラム２０８１と、セキュリティ防護プログラム２０８３とを含む。
【０１０６】
アクセス処理プログラム２０８１は、制御ユニット１００などの他の装置と通信する処理を実現するための命令コード群を含む。
【０１０７】
セキュリティ防護プログラム２０８３は、予防プログラム２０８５と、検知プログラム２０８７と、対処プログラム２０８９とを含む。セキュリティ防護プログラム２０８３は、アクセス処理プログラム２０８１の実行により得られる制御ユニット１００から送られるセキュリティユニット２００の挙動を示す出力信号に従って予防プログラム２０８５、検知プログラム２０８７、対処プログラム２０８９の各々を実行するための命令コード群を含む。
【０１０８】
セキュリティユニット２００は、制御ユニット１００から出力されたセキュリティユニット２００の挙動を示す出力信号に従ってセキュリティ防護プログラム２０８３に含まれる各プログラムを実行する。
【０１０９】
＜Ｄ．セキュリティユニット２００が実行するセキュリティ防護処理＞
セキュリティユニット２００は、コントローラシステム１に対するセキュリティ機能を担当し、コントローラシステム１に対するセキュリティ防護処理を実行する。制御ユニット１００に対しては、様々な場面でセキュリティ事象が生じ得る（図２参照）。セキュリティユニット２００は、これらの各場面で制御ユニット１００に生じ得るセキュリティ事象に対する予防、セキュリティ事象の検知、および検知したセキュリティ事象に応じた対処を含むセキュリティ防護処理を実行する。
【０１１０】
セキュリティユニット２００は、予め定められた複数のセキュリティレベルのそれぞれに応じたセキュリティ防護処理を実行可能である。また、制御ユニット１００の動作状態と制御ユニット１００で実行される制御演算により発行される通知のうちの少なくとも一方に従って、複数のセキュリティレベルのうちのいずれかのセキュリティレベルに応じたセキュリティ防護処理を実行する。
【０１１１】
図９は、コントローラシステム１のセキュリティ機能の概要を示す機能構成図である。図９に示す制御ユニット１００の機能は、プロセッサ１０２が、図８に示す各プログラムを実行することで実現される。また、図９に示すセキュリティユニット２００の機能は、プロセッサ２０２が、図８に示す各プログラムを実行することで実現される。
【０１１２】
制御ユニット１００は、状態管理部１０２２と、制御演算部１０２４と、レベル決定部１０２６と、セキュリティ策定部１０２８とを備える。
【０１１３】
状態管理部１０２２は、制御ユニット１００の動作状態を管理する。動作状態は、制御ユニット１００に予めインストールされており、制御ユニット１００としての機能を提供するためのシステムプログラム１０８４の実行により制御される状態である。すなわち、制御ユニット１００の動作状態は、制御ユニット１００のメーカにより規定されている状態である。また、状態管理部１０２２は、システムプログラム１０８４の実行により発現される機能であるともいえる。
【０１１４】
制御ユニット１００の動作状態は、典型的には、制御ユニット１００が備える制御プログラムが実行されている状態と実行されていない状態または、制御プログラムの書き換えが許可されている状態と許可されていない状態という観点で分類できる。
【０１１５】
本実施の形態においては、「プログラムモード」「運転モード」「オンラインエディットモード」「保守モード」の４つの動作状態のうちのいずれかの状態に制御されるものとする。
【０１１６】
「プログラムモード」は、制御ユニット１００がプログラムを実行しておらず、制御ユニット１００にユーザプログラム１０８６をインストールする前からインストールを完了するまでの期間に制御される動作状態であって、たとえば、制御ユニット１００が出荷されたときの動作状態や、制御ユニット１００の制御プログラムを書き換えるときに制御される動作状態である。
【０１１７】
「運転モード」は、制御ユニット１００がプログラムの実行中に制御される動作状態であって、設備や機械が運転しているときに制御されるモードである。
【０１１８】
「オンラインエディットモード」は、制御プログラムの実行中に制御プログラムの書き換えが可能な動作状態である。
【０１１９】
「保守モード」は、制御ユニット１００がプログラムを実行しておらず、制御ユニット１００のプログラムの書き換えが可能な動作状態である。
【０１２０】
なお、これらの動作状態は一例であって、制御ユニット１００が制御する動作状態の種類は、４種類未満であっても、１種類であっても、５種類以上であってもよく、また、制御ユニット１００が、図９に示した動作状態を必ずしも備えている必要はない。
【０１２１】
状態管理部１０２２は、動作状態を移行させる条件が成立したことに伴い、成立した条件に応じた動作状態に制御する。状態管理部１０２２は、動作状態が移行したことをレベル決定部１０２６に通知する。状態管理部１０２２は、たとえば、典型的には、サポート装置６００からの状態移行の指示、ＨＭＩ８００が生成した内部コマンド、または、制御ユニット１００に設けられた図示しないキースイッチに対する操作などを検知した場合に動作状態を移行させる。
【０１２２】
制御演算部１０２４は、制御対象であるワークを制御するための制御演算を行う。制御演算部１０２４は、制御ユニット１００と通信可能に接続されたフィールドデバイス５００またはセーフティユニット３００から出力される入力値および構成データ８６５に従って制御演算を実行する。
【０１２３】
構成データ８６５は、制御演算を実行するために必要な設定情報を含み、たとえば、Ｉ／Ｏユニットに割り当てられた信号に対するプログラムに用いる変数の割り当てを含む。
【０１２４】
レベル決定部１０２６は、状態管理部１０２２または制御演算部１０２４からの入力値およびレベル対応データ８６４に従い、セキュリティレベルを決定する。レベル決定部１０２６は、決定したセキュリティレベルをセキュリティ策定部１０２８に通知する。
【０１２５】
図１０は、レベル対応データ８６４のデータ構成を示す図である。図１０を参照して、レベル対応データ８６４は、状態管理部１０２２および制御演算部１０２４から入力される入力値へのセキュリティレベルの割り当てを含む。より具体的には、動作状態または、演算結果を示す変数に対して、セキュリティレベルが割り当てられている。演算結果としては、たとえば異常信号の出力などが挙げられる。
【０１２６】
図９に戻り、セキュリティ策定部１０２８は、セキュリティレベルに応じた内容のセキュリティ防護処理の内容を特定し、セキュリティユニット２００に、特定した内容のセキュリティ防護処理の実行を指示する。セキュリティ策定部１０２８は、レベル決定部１０２６から通知されたセキュリティレベルおよび処理内容対応データ８６６に従ってセキュリティ防護処理の内容を特定する。
【０１２７】
図１１は、処理内容対応データ８６６のデータ構成を示す図である。図１１を参照して、セキュリティ防護処理の内容は、予め定められた複数のセキュリティレベルの各々に応じて規定されている。
【０１２８】
たとえば、処理内容対応データ８６６は、図１１を参照して、セキュリティ事象に対する予防方法として、セキュリティレベルごとに、制御ユニット１００から出力される情報のうち出力を制限する情報および制限する出力先、制御ユニット１００に接続されている装置から入力される情報のうち入力を制限する情報および制御ユニット１００に情報を送ることが可能な対象を規定する。
【０１２９】
なお、処理内容対応データ８６６は、セキュリティ事象の検知方法として、セキュリティレベルごとに、セキュリティ事象が発生したと判断する閾値および検知対象を規定してもよい。
【０１３０】
また、処理内容対応データ８６６は、検知したセキュリティ事象に応じた対処方法として、セキュリティレベルごとに、セキュリティ事象が検知された場合に、制御ユニット１００から出力される情報のうちの出力を制限する情報、制限する出力先、制限される制御ユニット１００に入力される情報および制御ユニット１００に情報を送ることが可能な対象が規定されていてもよい。また、処理内容対応データ８６６は、セキュリティレベルごとに、セキュリティ事象が発生した場合に生じたセキュリティ事象の通知方法を規定してもよい。
【０１３１】
セキュリティユニット２００は、実行部２０２２を有する。実行部２０２２は、セキュリティ策定部１０２８が特定した内容のセキュリティ防護処理を実行する。具体的には、実行部２０２２は、規定された予防方法でセキュリティ事象に対する防御を行い、規定された検知方法でセキュリティ事象を検知し、規定された対処方法で検知されたセキュリティ事象に対する対処を行う。
【０１３２】
たとえば、本実施の形態においては、制御ユニット１００の動作状態に応じて、セキュリティユニット２００は次のような挙動を示す。制御プログラムが実行されている「運転モード」においては、セキュリティレベル２が設定されており、データベース９５０といった上位装置との通信は有効に設定される。これにより、プログラムの実行に伴って収集される稼働ログを、常時、データベース９５０にアップロードすることができる。なお、このときに、稼働中の情報が外部に流出するリスクを下げるために、ＶＰＮを介した通信は無効にされている。
【０１３３】
また、制御ユニット１００の制御プログラムの書き換えが許可されている「プログラムモード」においては、データベース９５０などの上位装置との通信、および、ＶＰＮを介した通信は、いずれも無効となっている。これにより、制御プログラムの意図しない書き換えが生じてしまうことを防止することができる。
【０１３４】
また、制御演算の結果、異常を示す通知がされた場合、ＶＰＮを介した通信を有効にすることで、リモートメンテナンスをできる環境が提供される。
【０１３５】
ここで、状態管理部１０２２からの入力値に従ってセキュリティ防護処理の実行に伴うセキュリティユニット２００の挙動が変更される一連の流れは、後述する第１変更命令が実行されたことで実現される。一方、制御演算部１０２４からの入力値に従って、セキュリティ防護処理の実行に伴うセキュリティユニット２００の挙動が変更される一連の流れは、後述する第２変更命令が実行されたことで実現される。
【０１３６】
＜Ｅ．サポート装置のハードウェア構成＞
図１２は、サポート装置６００のハードウェア構成例を示す模式図である。サポート装置６００は、変更命令を含むユーザプログラムの作成機能を提供する。より具体的には、サポート装置６００は、変更命令を選択するためのユーザインターフェイスを提供する。サポート装置６００は、一例として、汎用的なアーキテクチャに従うハードウェア（例えば、汎用パソコン）を用いて実現される。
【０１３７】
図１２を参照して、サポート装置６００は、プロセッサ６０２と、メインメモリ６０４と、入力部６０６と、表示部６０８と、ストレージ６１０と、光学ドライブ６１２と、ＵＳＢコントローラ６２０とを含む。これらのコンポーネントは、プロセッサバス６１８を介して接続されている。
【０１３８】
プロセッサ６０２は、ＣＰＵやＧＰＵなどで構成され、ストレージ６１０に格納されたプログラムを読出して、メインメモリ６０４に展開して実行することで、変更命令を選択するためのユーザインターフェイスを提供し、ユーザによる操作に従ってユーザプログラム１０８６を作成する。
【０１３９】
メインメモリ６０４は、ＤＲＡＭやＳＲＡＭなどの揮発性記憶装置などで構成される。ストレージ６１０は、例えば、ＨＤＤやＳＳＤなどの不揮発性記憶装置などで構成される。
【０１４０】
ストレージ６１０は、基本的な機能を実現するためのＯＳに加えて、サポート装置６００としての機能を提供するためのサポートプログラムを格納する。
【０１４１】
入力部６０６は、キーボードやマウスなどで構成され、ユーザ操作を受け付ける。表示部６０８は、ディスプレイなどで構成され、プロセッサ６０２からの処理結果などを出力する。
【０１４２】
ＵＳＢコントローラ６２０は、ＵＳＢ接続を介して、コントローラシステム１などとの間のデータを遣り取りする。
【０１４３】
サポート装置６００は、光学ドライブ６１２を有しており、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体６１４（例えば、ＤＶＤ（Digital Versatile Disc）などの光学記録媒体）から、その中に格納されたプログラムが読取られてストレージ６１０などにインストールされる。
【０１４４】
サポート装置６００で実行されるサポートプログラム６１４０などは、コンピュータ読取可能な記録媒体６１４を介してインストールされてもよいが、ネットワーク上のサーバ装置などからダウンロードする形でインストールするようにしてもよい。また、本実施の形態に係るサポート装置６００が提供する機能は、ＯＳが提供するモジュールの一部を利用する形で実現される場合もある。
【０１４５】
図１２には、プロセッサ６０２がプログラムを実行することで、サポート装置６００として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路（例えば、ＡＳＩＣまたはＦＰＧＡなど）を用いて実装してもよい。
【０１４６】
＜Ｆ．サポート装置６００が提供するユーザインターフェイス＞
サポート装置６００は、ユーザが変更命令を含むユーザプログラム１０８６を作成するためのユーザインターフェイスを提供する。より具体的には、サポート装置６００のプロセッサ６０２がストレージ６１０に格納されたプログラムを実行することで、表示部６０８に、図１３〜図１６に示すユーザインターフェイスを表示するとともに、入力部６０６が受け付けた設定に従って変更命令を含むユーザプログラム１０８６、ならびに変更命令の実行に必要なレベル対応データ８６４および処理内容対応データ８６６を生成する。
【０１４７】
図１３は、変更命令の選択を受け付けるユーザインターフェイスの一例を示す図である。図１４は、変更命令が選択されたときに提供されるユーザインターフェイスの一例を示す図である。図１５は、外部ネットワークに接続するための接続条件の内容を設定するためのユーザインターフェイスの一例を示す図である。図１６は、変更命令の実行条件の設定を受け付けるユーザインターフェイスの一例を示す図である。
【０１４８】
図１３を参照して、ユーザインターフェイス６５０は、図中の左側のセキュリティ設定タブ６５２が選択されると、右側の領域に設定画面７００が表示される。設定画面７００は、変更命令の選択を受け付けるための変更命令を選択するための選択領域７０２を有す。選択領域７０２には、変更命令を選択しないことを示すタブ７０４と、選択することを示すタブ７０６とが表示されている。なお、図１３には、ユーザインターフェイス６５０の一部を省略して記載している。
【０１４９】
図１４を参照して、タブ７０６が選択されると、設定画面７００に２種類の変更命令の各々について、変更命令を選択するための第１選択領域７１０と第２選択領域７２０とが提供される。
【０１５０】
第１選択領域７１０は、第１変更命令の選択を受け付ける。第１変更命令は、制御ユニット１００の動作状態を示す入力信号に対して、セキュリティ防護処理が実行されることで行われるセキュリティユニット２００の挙動を示す出力信号の値を決定するための命令である。第１選択領域７１０には、第１変更命令を選択しないことを示すタブ７１２と、選択することを示すタブ７１４とが表示されている。
【０１５１】
第２選択領域７２０は、第２変更命令の選択を受け付ける。第２変更命令は、セキュリティ防護処理が実行されることで行われるセキュリティユニット２００の挙動を規定する命令である。第２変更命令は、ユーザが任意に設定した条件が成立したときに実行される。第２選択領域７２０には、第２変更命令を選択しないことを示すタブ７２２と、選択することを示すタブ７２４とが表示されている。
【０１５２】
図１４を参照して、タブ７１４が選択されると、制御ユニット１００の動作状態と、セキュリティレベルとを対応付けるためのレベル対応領域７３０が提供される。レベル対応領域７３０は、制御ユニット１００の動作状態が規定された状態表示領域７３２と、状態表示領域７３２に表示された動作状態に対応するセキュリティレベルの入力を受け付けるレベル入力領域７３４とを含む。レベル入力領域７３４のタブ７３６が選択されると、複数のレベルのうちのいずれかのレベルを選択できるようになっている。なお、レベルを追加することも可能である。なお、状態表示領域７３２に表示される制御ユニット１００の動作状態は予め定まっているため、状態表示領域７３２の表示は、基本的には変化しない。
【０１５３】
各セキュリティレベルに応じて、セキュリティ防護処理の内容が設定されているため、レベル対応領域７３０は、制御ユニット１００の動作状態を示す入力信号と、セキュリティ防護処理が実行されることで行われるセキュリティユニット２００の挙動を示す出力信号との対応関係の設定を受け付ける領域であるともいえる。
【０１５４】
図１４を参照して、タブ７１４が選択されると、レベル対応領域７３０に加えて、セキュリティレベルごとにセキュリティ防護処理の内容を設定するための設定内容対応領域７４０が提供される。設定内容対応領域７４０は、セキュリティレベルを示すレベル領域７４２と、レベルごとのセキュリティ防護処理の内容の設定を受け付ける設定内容入力領域７４４とを含む。
【０１５５】
設定内容入力領域７４４内の各セルには、設定内容を選択するためのタブ７４６が設けられている。タブ７４６を選択することで、設定内容を選択するためのユーザインターフェイスが提供される。
【０１５６】
設定内容対応領域７４０は、出力信号に相当するセキュリティレベルごとのセキュリティ防護処理の内容の設定を受け付けるため、出力信号が示すセキュリティユニット２００の挙動を設定するためのユーザインターフェイスに相当する。
【０１５７】
設定内容入力領域７４４は、外部ネットワークを介した通信を許可した場合に、その許可条件の設定を受け付ける許可条件入力領域７４８を含む。許可条件入力領域７４８内の各許可条件（「Ｍａｉｎｔａｉｎｅｒ」「Ａｄｉｍｉｎｉｓｔｒａｔｏｒ」「Ｅｎｇｉｎｅｅｒ」）が示す具体的な許可条件の内容は、許可条件設定画面８００を操作することで設定される。
【０１５８】
図１５を参照して、許可条件設定画面８００は、許可条件をレベルごとに変更するための許可条件変更命令の選択を受け付ける条件変更選択領域８１０と、許可条件変更命令の選択がされた場合に、許可条件を設定するための許可条件設定領域８２０とを提供する。
【０１５９】
条件変更選択領域８１０は、許可条件変更命令を選択しないことを示すタブ８１２と、選択することを示すタブ８１４とを含む。タブ８１４が選択されると、許可条件設定領域８２０が提供される。
【０１６０】
許可条件設定領域８２０は、条件項目が提示されている条件項目領域８２２と、ユーザ名ごとに、各条件項目の入力を受け付ける条件入力領域８２４とを含む。「ＶＰＮ  Ｇｒｏｕｐ」には、任意のグループ名を入力することができ、このグループ名と、図１４中の許可条件入力領域７４８内で設定されたグループ名とが紐付かれている。たとえば、許可条件入力領域７４８に「Ｅｎｇｉｎｅｅｒ」が入力されている場合、図１５中の「Ｕｓｅ＿ＣＣＣ」「Ｕｓｅｒ＿ＤＤＤ」「Ｕｓｅｒ＿ＥＥＥ」として設定されている各々の条件で、制御ユニット１００にＶＰＮを介して接続できることとなる。
【０１６１】
図１６を参照して、図１４中のタブ７２４が選択されたとき、すなわち第２変更命令が選択された場合、第２変更命令の実行条件を設定するためのユーザインターフェイスとして変数テーブル画面９００が提供される。
【０１６２】
変数テーブル画面９００は、ラダープログラムの入力を受け付ける。たとえば、図１６中に描かれたラダープログラムは、Ｅｒｒｏｒ１という変数が出力されたときに第２変更命令の実行条件が成立することを示している。
【０１６３】
ユーザは任意の変数９１０を入力したり、あるいは、接点を組み合わせたりすることで、第２変更命令の実行条件を設定することができる。
【０１６４】
また、インスタンスブロック９２０をクリックした場合に、いずれのセキュリティレベルのセキュリティ防護処理を実行するかを選択するための、レベル選択タブ９２２が提供される。なお、インスタンスブロック９２０をクリックした場合に、第２変更命令の命令内容そのものを入力するための変数テーブルが提供されてもよい。
【０１６５】
なお、図１３〜図１６に示したユーザインターフェイスは一例であって、別の表示形式で実現されてもよい。
【０１６６】
＜Ｇ．サポート装置６００のソフトウェア構成＞
図１７は、サポート装置６００のソフトウェア構成を示す模式図である。図１７には、サポート装置６００が各種機能を提供するためのソフトウェア群の一例を示す。これらのソフトウェア群に含まれる命令コードは、適切なタイミングで読み出され、サポート装置６００のプロセッサ６０２によって実行される。
【０１６７】
サポート装置６００で実行されるソフトウェアは、少なくとも、ＯＳ６１２０と、サポートプログラム６１４０とを含む。これらのプログラムは、ストレージ６１０に格納されている。また、プログラムの実行に利用されるデータは、命令ライブラリ６１６０と、変数ライブラリ６１８０とを含み、ストレージ６１０に格納されている。
【０１６８】
ＯＳ６１２０は、サポートプログラム６１４０を実行可能な基本的な環境を提供する。サポートプログラム６１４０は、サポート装置６００が提供する機能を実現するためのプログラムであって、ユーザプログラム１０８６を作成するための機能を提供する。
【０１６９】
命令ライブラリ６１６０は、ユーザプログラム１０８６を生成するための命令情報ごとに規定されたプログラム部品である命令を格納する。命令ライブラリ６１６０に格納される命令は、変更命令８６０と、制御命令８６３とを含む。変更命令８６０は、第１変更命令８６２ａと第２変更命令８６２ｂとを含む。ユーザが第１変更命令８６２ａを選択すると第１変更命令８６２ａがユーザプログラム１０８６に組み込まれる。同様に、ユーザが第２変更命令８６２ｂを選択すると第２変更命令８６２ｂがユーザプログラム１０８６に組み込まれる。
【０１７０】
変数ライブラリ６１８０は、変更命令の実行に必要なパラメータを規定する変数テーブル６１８２を含む。第１変更命令８６２ａが選択された場合には、第１変更命令８６２ａに応じた変数テーブルが呼び出され、表示部６０８に出力され、図１４に示したレベル対応領域７３０および設定内容対応領域７４０が提供される。
【０１７１】
レベル対応領域７３０および設定内容対応領域７４０に情報が入力されると、サポートプログラム６１４０は、レベル対応データ８６４および処理内容対応データ８６６を生成し、データ格納部６１４６に格納する。なお、制御命令８６３が選択された場合には、選択された制御命令に応じた変数テーブルが呼び出され、表示部６０８に出力され、変数の入力がされると、構成データ８６５が生成され、データ格納部６１４６に格納される。
【０１７２】
これらの命令ライブラリ６１６０および変数ライブラリ６１８０は、たとえば、コントローラのメーカあるいは専門のソフトウェア会社などが記録媒体６１４に格納させた状態で流通する。ユーザは、記録媒体６１４に格納された命令ライブラリ６１６０および変数ライブラリ６１８０をサポート装置６００にインストールすることで、命令ライブラリ６１６０および変数ライブラリ６１８０を利用することができる。
【０１７３】
サポートプログラム６１４０は、エディタ６１４１と、コンパイラ６１４２と、デバッガ６１４３と、ＧＵＩ（Graphical User Interface）モジュール６１４４と、シミュレータ６１４５と、データ格納部６１４６とを含む。
【０１７４】
エディタ６１４１は、ユーザプログラム１０８６のソースプログラムを作成するための入力および編集といった機能を提供する。より具体的には、エディタ６１４１は、キーボードまたはマウスで構成された入力部６０６をユーザが操作してユーザプログラム１０８６のソースプログラムを作成する機能に加えて、作成したソースプログラムの保存機能および編集機能を提供する。エディタ６１４１は、設計者の操作に応じて、命令ライブラリ６１６０から選択された変更命令を用いて、ユーザプログラム１０８６のソースプログラムを作成する。
【０１７５】
コンパイラ６１４２は、ソースプログラムをコンパイルして、制御ユニット１００で実行可能なプログラム形式のユーザプログラム１０８６を生成する機能を提供する。
【０１７６】
デバッガ６１４３は、ユーザプログラム１０８６のソースプログラムに対してデバッグを行うための機能を提供する。
【０１７７】
ＧＵＩモジュール６１４４は、設計者が各種データやパラメータなどを入力するためのユーザインターフェイス画面を提供する機能を有する。当該ユーザインターフェイス画面は、表示部６０８に表示される。
【０１７８】
シミュレータ６１４５は、サポート装置６００内に制御ユニット１００でのプログラムの実行をシミュレーションする環境を構築する。
【０１７９】
データ格納部６１４６には、作成されたユーザプログラム１０８６が格納される。このユーザプログラム１０８６は、一または複数の命令を含む。データ格納部６１４６に格納されたユーザプログラム１０８６、レベル対応データ８６４、処理内容対応データ８６６、および構成データ８６５などは、ＵＳＢケーブルを介して制御ユニット１００に送られ、設定される。
【０１８０】
なお、図１７に示す例では、命令ライブラリ６１６０および変数ライブラリ６１８０がサポート装置６００のストレージ６１０に格納されているものとしたが、命令ライブラリ６１６０および変数ライブラリ６１８０のうちの少なくとも一方が、サポート装置６００とネットワークを介して接続可能なサーバ装置に格納されていてもよい。
【０１８１】
＜Ｈ．フローチャート＞
（ｈ１．制御ユニットが実行するフローチャート）
図１８を参照して制御ユニット１００が実行するセキュリティレベル移行処理を説明する。図１８は、制御ユニット１００が実行するセキュリティレベル移行処理の一例を示すフローチャートである。
【０１８２】
ステップＳ１１２において、プロセッサ１０２は、制御ユニット１００の動作状態が切り替わったか否かを判定する。
【０１８３】
動作状態が切り替わっていないと判定した場合（ステップＳ１１２においてＮｏ）、プロセッサ１０２は制御をステップＳ１１６に切り替える。動作状態が切り替わっていると判定した場合（ステップＳ１１２においてＹｅｓ）、プロセッサ１０２は、ステップＳ１１４において、動作状態に対応するセキュリティレベルを特定する。
【０１８４】
ステップＳ１１６において、プロセッサ１０２は、第２変更命令の実行条件が成立したか否かを判定する。すなわち、制御演算により発行される通知に応じたセキュリティレベルの変更を行うか否かを判定する。
【０１８５】
第２変更命令の実行条件が成立していない場合（ステップＳ１１６においてＮｏ）、プロセッサ１０２は、処理をステップＳ１２０に切り替える。第２変更命令の実行条件が成立している場合（ステップＳ１１６においてＹｅｓ）、プロセッサ１０２は、ステップＳ１１８において、第２変更命令が示すセキュリティ防護処理の内容を特定する。
【０１８６】
ステップＳ１２０において、プロセッサは、セキュリティ防護処理の内容を変更する指令を生成するか否かを判定する。具体的には、ステップＳ１１２およびステップＳ１１６のいずれにおいても、Ｎｏである場合、プロセッサ１０２は、指令を生成しないと判定し（ステップＳ１２０においてＮｏ）、セキュリティレベル移行処理を終了する。
【０１８７】
プロセッサ１０２は、セキュリティ防護処理の内容を変更する指令を生成すると判定した場合（ステップＳ１２０においてＹｅｓ）、ステップＳ１２２において、セキュリティ防護処理の内容を変更する指令を生成し、ステップＳ１２４において生成した指令をセキュリティユニット２００に通知して、処理を終了する。動作状態が切り替わっており、かつ、第２変更命令の実行条件も成立している場合、プロセッサ１０２は、最もセキュリティが高くなるようにセキュリティ防護処理の内容を変更する指令を生成する。
【０１８８】
なお、ステップＳ１２２においては、プロセッサ１０２は、セキュリティ防護処理の内容そのものを示す指令が生成されてもよく、また、セキュリティ防護処理の内容を決定するための情報を指令として生成してもよい。
【０１８９】
（ｈ２．サポート装置が実行するフローチャート）
図１９を参照してサポート装置が実行する処理のフローを説明する。図１９は、サポート装置６００が実行する処理の一例を示すフローチャートである。
【０１９０】
ステップＳ６１２において、プロセッサ６０２は、セキュリティレベルに関する設定の開始を受け付けたか否かを判定する。受け付けなかった場合（ステップＳ６１２においてＮｏ）、プロセッサ６０２は処理を終了する。
【０１９１】
受け付けた場合（ステップＳ６１２においてＹｅｓ）、プロセッサ６０２は、ステップＳ６１４において、変更命令の選択を受け付けるユーザインターフェイスを提供する。
【０１９２】
ステップＳ６１６において、プロセッサ６０２は、変更命令が選択されたか否かを判定する。変更命令が選択されなかった場合（ステップＳ６１６においてＮｏ）、プロセッサ６０２は処理を終了する。
【０１９３】
変更命令が選択された場合（ステップＳ６１６においてＹｅｓ）、ステップＳ６１８において、プロセッサ６０２は、選択された変更命令に応じて、命令を実行するための入力を促すユーザインターフェイスを提供する。
【０１９４】
ステップＳ６２０において、プロセッサ６０２は、ユーザプログラムの出力指示を受け付けたか否かを判定する。出力指示が受け付けられていない場合（ステップＳ６２０においてＮｏ）、プロセッサ６０２は、処理を終了する。
【０１９５】
出力指示が受け付けられている場合（ステップＳ６２０においてＹｅｓ）、プロセッサ６０２は、ステップＳ６２２において、変更命令を含むユーザプログラムを出力する。
【０１９６】
＜Ｉ．変形例＞
（変形例１）
上記の実施の形態において、セキュリティ防護処理の内容は、予め定められた複数のセキュリティレベルに対応して設定されるものとしたが、制御ユニット１００の動作状態または制御演算の結果のうちのいずれか一方に従って決定されればよい。たとえば、セキュリティレベルという中間変数を利用せずに、動作状態および演算結果ごとにセキュリティ防護処理の内容が規定されていてもよい。また、サポート装置６００が提供するユーザインターフェイスは、セキュリティレベルという中間変数を用いていたものの、これを用いず、動作状態ごと、第２変更命令ごとにセキュリティ防護処理の内容を設定できるようにしてもよい。
【０１９７】
（変形例２）
上記の実施の形態において、セキュリティ防護処理の内容は、動作状態および制御演算の結果の各々に従って決定するものとしたが、一方の情報だけに従い決定されてもよい。また、ユーザプログラム１０８６として変更命令が提供されるものを例に挙げたが、システムプログラムとして予め変更命令に相当するプログラムが設けられていてもよい。
【０１９８】
たとえば、制御ユニット１００は、ユーザがユーザプログラム１０８６を作成して、インストールする以前から、制御ユニット１００の動作状態に応じてセキュリティ防護処理の内容を変更させることのできる機能を有していてもよい。この場合、動作状態ごとのセキュリティ防護処理の内容はデフォルトで設定されており、ユーザによって変更可能に構成されていてもよい。
【０１９９】
（変形例３）
制御ユニット１００とセキュリティユニット２００とは、一体で構成されていてもよい。この場合、制御ユニット１００の機能を一のＣＰＵで実現し、セキュリティユニット２００の機能を他のＣＰＵで実現してもよい。また、マルチコアのＣＰＵにより実現させてもよい。たとえば、マルチコアのＣＰＵの一のコアを制御ユニット１００の機能に割り当て、他のコアをセキュリティユニット２００の機能に割り当てるようにしてもよい。
【０２００】
§３  付記
以上のように、上記の実施の形態よび変形例は以下のような開示を含む。
【０２０１】
＜構成１＞
コントローラシステムで利用されるサポート装置（６００，６００ａ）であって、
前記コントローラシステム（１，１ａ）は、
制御対象を制御するための制御演算を実行する制御装置（１００，１００ａ）と、
前記コントローラシステムに生じ得るセキュリティ事象の検知および当該セキュリティ事象に応じた処理の実行を含むセキュリティ防護処理（２０８３）を実行するセキュリティ監視装置（２００，２００ａ）とを備え、
前記サポート装置は、
前記制御装置で実行される制御演算の内容を規定するユーザプログラム（１０８６，１０８６ａ）を作成または編集するためのユーザインターフェイス（６５０）を提供する作成編集部（６０２，６０２ａ）と、
前記作成編集部が提供する前記ユーザインターフェイスを介して作成された前記ユーザプログラムを出力する出力部（１１０ａ，１１０）とを備え、
前記作成編集部は、前記ユーザプログラムを構成する命令として、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイス（７０２，７１０，７２０）を提供する、サポート装置。
【０２０２】
＜構成２＞
前記作成編集部は、前記変更命令の実行条件の設定を受け付けるユーザインターフェイス（９００）を提供する、構成１に記載のサポート装置。
【０２０３】
＜構成３＞
前記変更命令は、前記制御装置の動作状態を示す入力信号に対して、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を示す出力信号の値を決定するための命令（８６２ｂ）であって、
前記作成編集部は、前記入力信号と前記出力信号との対応関係の設定を受け付けるユーザインターフェイス（７３０，７４０）を提供する、構成１または構成２に記載のサポート装置。
【０２０４】
＜構成４＞
前記作成編集部は、前記セキュリティ監視装置の挙動を設定するためのユーザインターフェイス（７４０）を提供する、構成１〜構成３のうちいずれか１項に記載のサポート装置。
【０２０５】
＜構成５＞
前記セキュリティ監視装置の挙動は、前記コントローラシステムを外部ネットワークに接続するための接続条件の設定を含み、
前記作成編集部は、前記接続条件の内容を設定するためのユーザインターフェイス（８２０）を提供する、構成１〜構成４のうちいずれか１項に記載のサポート装置。
【０２０６】
＜構成６＞
コントローラシステム（１，１ａ）が備える制御対象を制御するための制御演算を実行する制御装置（１００，１００ａ）で実行されるユーザプログラム（１０８６，１０８６ａ）の開発を支援するための支援プログラム（６１４０）であって、
前記コントローラシステムは、前記コントローラシステムに生じ得るセキュリティ事象の検知および当該セキュリティ事象に応じた処理の実行を含むセキュリティ防護処理（２０８３）を実行するセキュリティ監視装置（１００）を有し、
前記支援プログラムは、コンピュータに、
前記制御装置で実行される制御演算の内容を規定するユーザプログラムを作成または編集するためのユーザインターフェイス（６５０）を提供するステップ（ステップＳ６１２〜ステップＳ６１８）と、
前記ユーザインターフェイスを介して作成された前記ユーザプログラムを出力するステップＳ６２０）とを実行させ、
前記ユーザインターフェイスを提供するステップにおいて、前記ユーザプログラムを構成する命令として、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を変更するための変更命令の選択を受け付けるユーザインターフェイス（７０２，７１０，７２０）が提供される、支援プログラム。
【０２０７】
＜構成７＞
制御対象を制御するための制御演算を実行する制御装置（１００，１００ａ）であって、
前記制御装置に生じ得るセキュリティ事象の検知および当該セキュリティ事象に応じた処理の実行を含むセキュリティ防護処理（２０８３）を実行するセキュリティ監視装置（２００ａ，２００）と接続するための通信インターフェイス（１１０，１１０ａ）と、
前記制御演算を実現するためのユーザプログラム（１０８６，１０８６ａ）を実行するプログラム実行部（１０２，１０２ａ）とを備え、
前記ユーザプログラムは、前記セキュリティ防護処理が実行されることで行われる前記セキュリティ監視装置の挙動を変更するための変更命令（８６２，８６２ａ，８６２ｂ）を含み、
前記プログラム実行部は、前記変更命令の実行によって、前記セキュリティ監視装置で実行されるセキュリティ防護処理の内容を変更するための指令を前記セキュリティ監視装置へ通知する、制御装置。
【０２０８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合せても、実施することが意図される。
【符号の説明】
【０２０９】
１，１ａ  コントローラシステム、１０ａ  制御システム、１００  制御ユニット、１００ａ  制御装置、１０２，２０２，３０２，６０２  プロセッサ、１０２ａ  プログラム実行部、１０４，２０４，３０４  チップセット、１０６，２０６，３０６  主記憶装置、１０８，２０８，３０８  二次記憶装置、１１０，２１０  通信コントローラ、１１０ａ  通信インターフェイス、１１４，１１４ａ，２１４，３１４  メモリカードインターフェイス、１１５，１１５ａ，２１５，３１５  メモリカード、１２２，３２２  内部バスコントローラ、１２４，２２４，３２４  インジケータ、１４２，２１２，６２０  ＵＳＢコントローラ、１４２ａ，１４４ａ，１４６ａ，１４８ａ，２４２ａ  通信ポート、１４４，１４６，１４８，２１６，２１８，２４２  ネットワークコントローラ、２００  セキュリティユニット、２００ａ  セキュリティ監視装置、３００  セーフティユニット、４００  機能ユニット、４５０  電源ユニット、５００，５００ａ  フィールドデバイス、６００，６００ａ  サポート装置、６０２ａ  作成編集部、６０４  メインメモリ、６０６  入力部、６０８  表示部、６１０  ストレージ、６１２  光学ドライブ、６１４  記録媒体、６１８  プロセッサバス、６２０ａ  出力部、６４４，８４４  シーケンス命令プログラム、６４８，８４８，２０８１  アクセス処理プログラム、６５０  ユーザインターフェイス、６５２  セキュリティ設定タブ、７００  設定画面、７０２  選択領域、７０４，７０６，７１２，７１４，７２２，７２４，７３６，７４６，８１２，８１４  タブ、７１０  第１選択領域、７２０  第２選択領域、７３０  レベル対応領域、７３２  状態表示領域、７３４  レベル入力領域、７４０  設定内容対応領域、７４２  レベル領域、７４４  設定内容入力領域、７４８  許可条件入力領域、７５０，７５０ａ  ＳＣＡＤＡ装置、８００  許可条件設定画面、８１０  条件変更選択領域、８２０  許可条件設定領域、８２２  条件項目領域、８２４  条件入力領域、８４２  スケジューラプログラム、８４６  入出力処理プログラム、８６０，８６０ａ  変更命令、８６２ａ  第１変更命令、８６２ｂ  第２変更命令、８６３  制御命令、８６４  レベル対応データ、８６５  構成データ、８６６  処理内容対応データ、９００  変数テーブル画面、９１０  変数、９２０  インスタンスブロック、９２２  レベル選択タブ、９５０，９５０ａ  データベース、１０２２  状態管理部、１０２４  制御演算部、１０２６  レベル決定部、１０２８  セキュリティ策定部、１０８４，２０８４  システムプログラム、１０８５  制御プログラム、１０８６，１０８６ａ  ユーザプログラム、２０２２  実行部、２０８３  セキュリティ防護プログラム、２０８５  予防プログラム、２０８７  検知プログラム、２０８９  対処プログラム、６１４０  サポートプログラム、６１４１  エディタ、６１４２  コンパイラ、６１４３  デバッガ、６１４４  モジュール、６１４５  シミュレータ、６１４６  データ格納部、６１６０  命令ライブラリ、６１８０  変数ライブラリ、６１８２  変数テーブル。
【図１】
2020107158.tif 000003
【図２】
2020107158.tif 000004
【図３】
2020107158.tif 000005
【図４】
2020107158.tif 000006
【図５】
2020107158.tif 000007
【図６】
2020107158.tif 000008
【図７】
2020107158.tif 000009
【図８】
2020107158.tif 000010
【図９】
2020107158.tif 000011
【図１０】
2020107158.tif 000012
【図１１】
2020107158.tif 000013
【図１２】
2020107158.tif 000014
【図１３】
2020107158.tif 000015
【図１４】
2020107158.tif 000016
【図１５】
2020107158.tif 000017
【図１６】
2020107158.tif 000018
【図１７】
2020107158.tif 000019
【図１８】
2020107158.tif 000020
【図１９】
2020107158.tif 000021