(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-05
(45)【発行日】2024-11-13
(54)【発明の名称】制御システムおよびその制御方法
(51)【国際特許分類】
G06F 21/62 20130101AFI20241106BHJP
G05B 19/05 20060101ALI20241106BHJP
【FI】
G06F21/62 318
G05B19/05 L
(21)【出願番号】P 2021040012
(22)【出願日】2021-03-12
【審査請求日】2024-01-16
(73)【特許権者】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】北村 安宏
(72)【発明者】
【氏名】五十嵐 久則
(72)【発明者】
【氏名】岡村 弘太郎
【審査官】上島 拓也
(56)【参考文献】
【文献】特開2017-220114(JP,A)
【文献】米国特許出願公開第2015/0192918(US,A1)
【文献】特開2018-159981(JP,A)
【文献】特開2006-106998(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G05B 19/05
(57)【特許請求の範囲】
【請求項1】
制御対象を制御する制御部と、
前記制御部によって実行されるプログラムと、前記プログラムで参照される複数のデータの各々に対する各アクセス権限とを格納する記憶部と、
前記複数のデータのいずれかに対するアクセス要求を受け付ける入力部と
、
前記プログラムを作成するための装置とを備え、
各前記アクセス権限は、異なる権限を持つユーザの各々が実行可能な操作の情報を含み、
前記複数のデータの各々は、前記プログラム内の変数または物理メモリのアドレスにより示されるデータであり、
前記装置は、
変数名ごとのアクセス権限を定義した第1のルール、または、物理メモリごとのアクセス権限を定義した第2のルールに基づいて、前記プログラムを解析し、
解析結果に基づいて、各前記アクセス権限を生成し、
各前記アクセス権限を前記記憶部に出力し、
前記制御部は、
前記入力部から前記複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各前記アクセス権限を参照し、
各前記アクセス権限に基づいて、前記アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限を有するか否かを判断する、制御システム。
【請求項2】
制御対象を制御する制御部と、
前記制御部によって実行されるプログラムと、前記プログラムで参照される複数のデータの各々に対する各アクセス権限とを格納する記憶部と、
前記複数のデータのいずれかに対するアクセス要求を受け付ける入力部とを備え、
各前記アクセス権限は、異なる権限を持つユーザの各々が実行可能な操作の情報を含み、
前記複数のデータの各々は、前記プログラム内の変数または物理メモリのアドレスにより示されるデータであり、
前記記憶部は、変数名ごとのアクセス権限を定義した第1のルール、または、物理メモリごとのアクセス権限を定義した第2のルールをさらに格納し、
前記制御部は、
他の装置から前記プログラムを取得したことに基づいて、前記第1のルールまたは前記第2のルールを用いて、前記プログラムを解析し、
解析結果に基づいて、各前記アクセス権限を生成し、
各前記アクセス権限を前記記憶部に出力し、
前記入力部から前記複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各前記アクセス権限を参照し、
各前記アクセス権限に基づいて、前記アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限を有するか否かを判断する、制御システム。
【請求項3】
前記記憶部は、さらに、前記変数または前記物理メモリの各々に対する書込範囲の情報を格納し、
前記制御部は、前記書込範囲の情報に基づいて、アクセス要求のあった前記変数または前記物理メモリに対する書込可能な値の範囲を制限する、請求項
1または2に記載の制御システム。
【請求項4】
前記制御部は、前記プログラムで参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を前記記憶部に格納し、
前記更新履歴は、更新されたデータを示す変数名または物理メモリのアドレスと、前記更新されたデータと、データを更新したユーザのユーザ識別子とを含む、請求項
1~3のいずれかに記載の制御システム。
【請求項5】
制御装置の制御方法であって、
前記制御装置によって実行されるプログラムと、前記プログラムで参照される複数のデータの各々に対する各アクセス権限とにアクセスするステップを含み、
各前記アクセス権限は、異なる権限を持つユーザの各々が実行可能な操作の情報を含み、
前記複数のデータの各々は、前記プログラム内の変数または物理メモリのアドレスにより示されるデータであり、
変数名ごとのアクセス権限を定義した第1のルール、または、物理メモリごとのアクセス権限を定義した第2のルールに基づいて、前記プログラムを解析するステップと、
解析結果に基づいて、各前記アクセス権限を生成するステップと、
各前記アクセス権限を出力するステップと、
前記複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各前記アクセス権限を参照するステップと、
各前記アクセス権限に基づいて、前記アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限を有するか否かを判断するステップとをさらに含む、制御方法。
【請求項6】
前記変数または前記物理メモリの各々に対する書込範囲の情報にアクセスするステップと、
前記書込範囲の情報に基づいて、アクセス要求のあった前記変数または前記物理メモリに対する書込可能な値の範囲を制限するステップとをさらに含む、請求項
5に記載の制御方法。
【請求項7】
前記プログラムで参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を生成するステップをさらに含み、
前記更新履歴は、更新されたデータを示す変数名または物理メモリのアドレスと、前記更新されたデータと、データを更新したユーザのユーザ識別子とを含む、請求項
5または6に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、制御システムに関し、より特定的には、制御システムのアクセスコントロールに関する。
【背景技術】
【0002】
FA(Factory Automation)を用いた生産現場で使用される機械や設備は、典型的には、プログラマブルコントローラ(Programmable Logic Controller;以下「PLC」とも称す。)等の制御装置によって制御される。これらの制御装置は、変数または物理メモリにより示されるデータを格納する。ユーザは、これらの変数または物理メモリにより示されるデータを参照または変更することで制御装置の設定を確認または変更し得る。また、いくつかのデータは重要な設定を含み得る。そのため、変数または物理メモリ、または変数または物理メモリにより示されるデータごとにセキュリティレベルを適切に設定するアクセスコントロール技術が必要とされている。
【0003】
制御装置のアクセスコントロールに関し、例えば、特開2016-134137号公報(特許文献1)は、「プログラマブル表示器にアクセスするユーザを識別するためのユーザ管理手段と、ユーザ管理手段によって識別されたユーザに付与されている権限に応じて、制御装置からの情報を含むインターフェイス画面を生成する生成手段と、インターフェイス画面を出力する表示部と、外部装置からのユーザのアクセス要求に応答して、ユーザ管理手段による当該ユーザの識別結果に基づいて当該外部装置との接続を確立するとともに、インターフェイス画面を接続が確立された外部装置へ送出する接続管理手段とを含み、ユーザ管理手段は、それぞれ異なる権限が付与されている複数のユーザのプログラマブル表示器への同時アクセスを阻害する」プログラマブル表示器を開示している([要約]参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
特許文献1に開示された技術によると、プログラム内で参照されるデータごとにアクセス権限を設定することができない。したがって、プログラム内で参照されるデータごとにアクセス権限を設定するための技術が必要とされている。
【0006】
本開示は、上記のような背景に鑑みてなされたものであって、ある局面における目的は、プログラム内で参照されるデータごとにアクセス権限を設定するための技術を提供することにある。
【課題を解決するための手段】
【0007】
本開示の一例に従えば、制御システムが提供される。制御システムは、制御対象を制御する制御部と、制御部によって実行されるプログラムと、プログラムで参照される複数のデータの各々に対する各アクセス権限とを格納する記憶部と、複数のデータのいずれかに対するアクセス要求を受け付ける入力部とを備える。各アクセス権限は、異なる権限を持つユーザの各々が実行可能な操作の情報を含む。制御部は、入力部から複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各アクセス権限を参照し、各アクセス権限に基づいて、アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限を有するか否かを判断する。
【0008】
この開示によれば、制御システムは、プログラムで参照される複数のデータの各々に対する各アクセス権限に基づいて、プログラムで参照される複数のデータの各々に対するアクセス要求を受け付けるか否かを判断することができる。
【0009】
上記の開示において、複数のデータの各々は、プログラム内の変数または物理メモリのアドレスにより示されるデータである。
【0010】
この開示によれば、制御システムは、プログラムで参照される複数のデータの各々に対する各アクセス権限に基づいて、各変数または各物理メモリに対するアクセス要求を受け付けるか否かを判断することができる。
【0011】
上記の開示において、記憶部は、さらに、変数または物理メモリの各々に対する書込範囲の情報を格納する。制御部は、書込範囲の情報に基づいて、アクセス要求のあった変数または物理メモリに対する書込可能な値の範囲を制限する。
【0012】
この開示によれば、制御システムは、アクセス要求のあった変数または物理メモリに対する書込可能な値の範囲を制限することができる。
【0013】
上記の開示において、複数のデータの各々に対するアクセス権限は、変数名ごとのアクセス権限を定義した第1のルール、または、物理メモリごとのアクセス権限を定義した第2のルールに基づいて生成される。
【0014】
この開示によれば、制御システムは、第1のルールまたは第2のルールに基づいて、複数のデータの各々に対するアクセス権限を自動的に生成することができる。
【0015】
上記の開示において、制御システムは、プログラムを作成するための装置をさらに備える。装置は、第1のルールまたは第2のルールに基づいて、プログラムを解析し、解析結果に基づいて、各アクセス権限を生成し、各アクセス権限を記憶部に出力する。
【0016】
この開示によれば、制御システムは、装置により、複数のデータの各々に対するアクセス権限を生成することができる。
【0017】
上記の開示において、記憶部は、第1のルールまたは第2のルールをさらに格納する。制御部は、他の装置からプログラムを取得したことに基づいて、第1のルールまたは第2のルールを用いて、プログラムを解析し、解析結果に基づいて、各アクセス権限を生成し、各アクセス権限を記憶部に出力する。
【0018】
この開示によれば、制御システムは、制御部により、複数のデータの各々に対するアクセス権限を生成することができる。
【0019】
上記の開示において、制御部は、プログラムで参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を記憶部に格納する。更新履歴は、更新されたデータを示す変数名または物理メモリのアドレスと、更新されたデータと、データを更新したユーザのユーザ識別子とを含む。
【0020】
この開示によれば、制御システムは、プログラムで参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を生成することができる。また、ユーザは更新履歴を見ることで不正な更新処理があったか否かを確認することができる。
【0021】
本開示の別の例に従えば、制御システムの制御方法が提供される。制御方法は、制御装置によって実行されるプログラムと、プログラムで参照される複数のデータの各々に対する各アクセス権限とにアクセスするステップを含む。各アクセス権限は、異なる権限を持つユーザの各々が実行可能な操作の情報を含む。制御方法は、複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各アクセス権限を参照するステップと、各アクセス権限に基づいて、アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限を有するか否かを判断するステップとをさらに含む。
【0022】
この開示によれば、プログラムで参照される複数のデータの各々に対する各アクセス権限に基づいて、プログラムで参照される複数のデータの各々に対するアクセス要求を受け付けるか否かを判断することができる。
【0023】
上記の開示において、複数のデータの各々は、プログラム内の変数または物理メモリのアドレスにより示されるデータである。
【0024】
この開示によれば、プログラムで参照される複数のデータの各々に対する各アクセス権限に基づいて、各変数または各物理メモリに対するアクセス要求を受け付けるか否かを判断することができる。
【0025】
上記の開示において、制御方法は、変数または物理メモリの各々に対する書込範囲の情報にアクセスするステップと、書込範囲の情報に基づいて、アクセス要求のあった変数または物理メモリに対する書込可能な値の範囲を制限するステップとをさらに含む。
【0026】
この開示によれば、アクセス要求のあった変数または物理メモリに対する書込可能な値の範囲を制限することができる。
【0027】
上記の開示において、複数のデータの各々に対するアクセス権限は、変数名ごとのアクセス権限を定義した第1のルール、または、物理メモリごとのアクセス権限を定義した第2のルールに基づいて生成される。
【0028】
この開示によれば、第1のルールまたは第2のルールに基づいて、複数のデータの各々に対するアクセス権限を自動的に生成することができる。
【0029】
上記の開示において、制御方法は、または第2のルールに基づいて、プログラムを解析するステップと、解析結果に基づいて、各アクセス権限を生成するステップと、各アクセス権限を出力するステップとをさらに含む。
【0030】
この開示によれば、複数のデータの各々に対するアクセス権限を生成することができる。
【0031】
上記の開示において、制御方法は、プログラムで参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を生成するステップをさらに含む。更新履歴は、更新されたデータを示す変数名または物理メモリのアドレスと、更新されたデータと、データを更新したユーザのユーザ識別子とを含む。
【0032】
この開示によれば、プログラムで参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を生成することができる。また、ユーザは更新履歴を見ることで不正な更新処理があったか否かを確認することができる。
【発明の効果】
【0033】
ある実施の形態に従うと、プログラム内で参照されるデータごとにアクセス権限を設定することが可能である。
【0034】
この開示内容の上記および他の目的、特徴、局面および利点は、添付の図面と関連して理解される本開示に関する次の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
【0035】
【
図1】ある実施の形態に従う制御システム1を備えるネットワークシステム100の全体構成を模式的に示す図である。
【
図2】ある実施の形態に従う制御システム1の構成例を示す外観図である。
【
図3】ある実施の形態に従う制御システム1を構成する制御ユニット200のハードウェア構成例を示す模式図である。
【
図4】ある実施の形態に従う制御システム1に接続され得るサポート装置110のハードウェア構成例を示す模式図である。
【
図5】変数の操作権限情報500および物理メモリの操作権限情報510の一例を示す図である。
【
図6】変数の書込範囲情報600および物理メモリの書込範囲情報610の一例を示す図である。
【
図7】ユーザアカウント情報700の一例を示す図である。
【
図8】変数のルール800および物理メモリのルール810の一例を示す図である。
【
図9】変数マスタ900および物理メモリマスタ910の一例を示す図である。
【
図10】制御ユニット200に対するアクセス要求の一例を示す図である。
【
図11】アクセスコントロール情報322の生成手順の一例を示す図である。
【
図12】制御ユニット200によるアクセスコントロールの手順の一例を示す図である。
【発明を実施するための形態】
【0036】
以下、図面を参照しつつ、本開示に係る技術思想の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【0037】
<A.適用例>
図1は、本実施の形態に従う制御システム1を備えるネットワークシステム100の全体構成を模式的に示す図である。
図1に示す構成を例に、本実施の形態に従う技術が適用される場面について説明する。
【0038】
ネットワークシステム100は、構成として、制御システム1、サーバ装置120、表示装置140およびゲートウェイ(GW: Gateway)130を備える。これらの構成は、ネットワーク150を介して、相互に接続され得る。また、ネットワーク150は、ゲートウェイ130を介して、外部ネットワークであるインターネットに接続されている。ある局面において、ネットワーク150は、一般的なネットワークプロトコルであるイーサネット(登録商標)またはEtherNet/IP(登録商標)により実現されてもよい。
【0039】
制御システム1は、フィールドネットワーク160を介して、フィールドの設備および装置、ならびに、それらに配置されている各種デバイス(センサまたはアクチュエータ等)を含む制御対象170に接続されている。
【0040】
フィールドネットワーク160は、データの到達時間が保証される、定周期通信を行うバスまたはネットワークを採用することが好ましい。ある局面において、フィールドネットワーク160は、このような定周期通信を行うバスまたはネットワークとして、EtherCAT(登録商標)により実現されてもよい。
【0041】
サポート装置110は、ユーザが制御システム1を運用するのを支援する支援ツールを提供する。また、サポート装置110は、制御システム1にプログラムをインストールする機能を備えていてもよい。ある局面において、サポート装置110は、パーソナルコンピュータ、タブレット、スマートフォン、またはその他の任意の情報処理装置であってもよい。
【0042】
一例として、サポート装置110は、USB(Universal Serial Bus)により、着脱可能に制御システム1に接続される。このUSB通信には、通信のセキュリティを確保するために、ユーザ認証を行なうための通信プロトコルが採用され得る。他の例として、サポート装置110は、ネットワーク150を介して制御システム1と通信してもよい。
【0043】
サーバ装置120は、一例として、データベースシステム、製造実行システム(MES:Manufacturing Execution System)等である。製造実行システムは、制御対象の製造装置または設備からの情報を取得して、生産全体を監視および管理するものであり、オーダ情報、品質情報、出荷情報等を扱うこともできる。また、他の例として、サーバ装置120は、情報系サービス(制御対象から各種情報を取得して、マクロ的またはミクロ的な分析等を行う処理)を提供する装置であってもよい。
【0044】
表示装置140は、ユーザからの操作を受けて、制御システム1に対してユーザ操作に応じたコマンド等を出力するとともに、制御システム1での演算結果等をグラフィカルに表示する。ある局面において、表示装置140は、液晶ディスプレイまたは有機EL(Electro-Luminescence)ディスプレイ等の任意の出力装置を備えていてもよい。また、表示装置140は、タッチパネルまたはスイッチ等の任意の入力装置を備えていてもよい。
【0045】
ゲートウェイ130は、ネットワーク150と外部ネットワーク(インターネット)との間のプロトコル変換と、ファイヤウォールとしての処理とを実行する。
【0046】
図1に示す構成において、制御システム1(より具体的には制御ユニット200(
図2参照))は、インストールされたプログラムに基づいて、フィールドネットワーク160上の制御対象170を制御すると共に、ネットワーク150上の各装置と通信し得る。ユーザは、制御システム1にインストールされるプログラム内で使用される変数が示す値、または制御システム1の物理メモリが示す値を参照または変更することで、制御システム1の機能を確認または変更し得る。ユーザは、制御ユニット200にインストールされるプログラムで参照される値として、制御ユニット200の設定値を参照または更新し得る。当該値は、プログラム中の変数または物理メモリに格納された値として定義される。そのため、ユーザは、プログラム中の変数または物理メモリを指定することで、当該値を参照または更新することができる。なお、制御システム1にインストールされるプログラムで参照される変数が示す値、および制御システム1の物理メモリが示す値は、数値だけでなくキャラクタ等の任意のフォーマットの情報を含むデータであってもよい。
【0047】
制御システム1は、一例として、ポートクローズ、VPN(Virtual Private Network)有効/無効、および、アクセスコントロールの変更等の重要な命令を含む。これらの重要な命令の変更は、制御システム1が提供する機能およびセキュリティ等に大きな影響を及ぼし得る。そのため、制御システム1は、変数または物理メモリにより示される値ごとにアクセスコントロールを行うための機能を備えることで、制御システム1のセキュリティ機能を向上させる。
【0048】
より具体的には、制御システム1は、変数の操作権限情報500および物理メモリの操作権限情報510の両方または片方を備える(
図5参照)。変数の操作権限情報500は、変数が示す値ごとのアクセス権限を含む。一例として、変数が示す値とは、ある変数が示す物理メモリのアドレスに格納される値である。物理メモリの操作権限情報510は、物理メモリが示す値ごとのアクセス権限を含む。一例として、物理メモリが示す値とは、ある物理メモリのアドレスに格納される値である。また、値とは、変数または物理メモリが示す任意の値を含み、例えば、NULL等の空を意味する値も含み得る。なお、本実施の形態におけるアクセスとは、読込処理および書込処理等を含み得る。また、本実施の形態におけるアクセス権限とは、読込処理の権限および書込処理等の権限を含み得る。
【0049】
ある局面において、変数または物理メモリが示す値ごとのアクセス権限は、ユーザアカウントの権限または属性(管理者または設計者等)ごとに設定されていてもよい。他の局面において、変数または物理メモリが示す値ごとのアクセス権限は、個別のユーザアカウントごとに設定されていてもよい。なお、これ以降、アクセス権限をデータ(値)へのアクセス権限として説明するが、本実施の形態におけるアクセス権限は参照(Reference)のアクセス権限であるとも言える。ここでの参照とは、データの所在を示す変数および物理アドレス等を意味する。そのため、変数が示すデータ(値)または物理アドレスが示すデータ(値)に対するアクセス権限とは、参照に対するアクセス権限であるとも言える。
【0050】
そのため、変数または物理アドレスが示すデータ(値)に対するアクセス要求およびアクセス権限を参照(変数または物理アドレス)に対するアクセス要求およびアクセス権限と読み替えても本開示の技術は成立する。この場合、
図5および
図6に示す変数501,601および物理メモリ511,611等は、参照に読み替えることもできる。また、
図8に示す変数名ルール810および物理メモリ範囲811は、参照名ルールおよび参照の範囲と読み替えることもできる。
【0051】
制御システム1は、変数または物理メモリが示す値に対するアクセス要求を受け付けたことに基づいて、ユーザアカウントの権限を特定する。次に、制御システム1は、変数の操作権限情報500または物理メモリの操作権限情報510を参照して、アクセス要求を送信したユーザアカウントが、アクセス要求のあった変数の値を変更する権限を有するか否かを判定する。変数の操作権限情報500および物理メモリの操作権限情報510およびその生成方法等については後述する。
【0052】
なお、あるユーザアカウントが値Xに対して読込または書込権限を有するとは、当該ユーザアカウントは変数または物理メモリが示す値Xを参照または更新する権限があることを意味する。また、あるユーザアカウントが変数Aに対して読込または書込権限を有するとは、当該ユーザアカウントは変数Aが示す値を参照または更新する権限を有することを意味する。また、あるユーザアカウントが、物理メモリBに対して読込または書込権限を有するとは、当該ユーザアカウントは物理メモリBが示す値(物理メモリBに格納された値)を参照または更新する権限があることを意味する。
【0053】
<B.ハードウェア構成>
次に、本実施の形態に従うネットワークシステム100が備える各装置のハードウェア構成について説明する。
【0054】
(a.制御システム1の外観)
図2は、本実施の形態に従う制御システム1の構成例を示す外観図である。
図2を参照して、制御システム1は、制御ユニット200、セキュリティユニット210、セーフティユニット220、1または複数の機能ユニット230、および電源ユニット240を含む。
【0055】
制御ユニット200とセキュリティユニット210との間は、PCI Expressのバス等を介して接続される。また、制御ユニット200、セーフティユニット220、1または複数の機能ユニット230、および電源ユニット240は、内部バスを介して相互に接続されている。
【0056】
制御ユニット200は、例えばPLC(プログラムブルコントローラ)を含む。制御ユニット200は、制御プログラムを実行することで、制御対象を制御する。制御プログラムは、制御対象である設備および装置、ならびに、それらに配置されている各種デバイス(センサまたはアクチュエータ等)との間で信号を遣り取りするIOリフレッシュ、制御演算処理等のプログラムを含む。具体的には、IOリフレッシュは、制御ユニット200において算出される指令値を制御対象へ出力、あるいは、制御対象からの入力値を収集する。制御演算処理は、例えば、IOリフレッシュにより収集した入力値に基づいた指令値または制御量を算出する。このような機能を備える制御プログラムは、制御対象の要求仕様に従ってユーザまたは開発会社が作成するプログラムを含む「ユーザプログラム」の一例でもある。
【0057】
セキュリティユニット210は、制御システム1の、より特定的には制御ユニット200のセキュリティを設定する。このセキュリティの設定には、制御プログラムの意図しない複製、すなわち不正な複製を防止するための設定が含まれる。セーフティユニット220は、制御ユニット200とは独立して、制御対象に関するセーフティ機能を実現するための制御演算を実行する。機能ユニット230は、制御システム1による様々な制御対象に対する制御を実現するための各種機能を提供する。機能ユニット230は、典型的には、I/Oユニット、セーフティI/Oユニット、通信ユニット、モーションコントローラユニット、温度調整ユニット、パルスカウンタユニット等を包含し得る。I/Oユニットとしては、例えば、デジタル入力(DI)ユニット、デジタル出力(DO)ユニット、アナログ出力(AI)ユニット、アナログ出力(AO)ユニット、パルスキャッチ入力ユニット、および、複数の種類を混合させた複合ユニット等が挙げられる。セーフティI/Oユニットは、セーフティ制御に係るI/O処理を担当する。電源ユニット240は、制御システム1を構成する各ユニットに対して、所定電圧の電源を供給する。
【0058】
(b.制御ユニット200のハードウェア構成)
次に、本実施の形態に従う制御システム1が含む制御ユニット200のハードウェア構成例について説明する。
【0059】
図3は、本実施の形態に従う制御システム1を構成する制御ユニット200のハードウェア構成例を示す模式図である。
図3を参照して、制御ユニット200は、主たるコンポーネントとして、CPU(Central Processing Unit)またはGPU(Graphical Processing Unit)等のプロセッサ301、チップセット302、二次記憶装置303、主記憶装置304、通信コントローラ305、USBコントローラ314、メモリカードインターフェイス313、ネットワークコントローラ310,311,312、内部バスコントローラ309、インジケータ306、およびスイッチインターフェイス307を含む。
【0060】
プロセッサ301は、二次記憶装置303に格納された各種プログラムを読み出して、主記憶装置304に展開して実行することで、制御演算およびサービス処理を含む各種の処理を実現する。チップセット302は、プロセッサ301と各コンポーネントとの間のデータの遣り取りを仲介することで、制御ユニット200全体としての処理を実現する。
【0061】
主記憶装置304は、DRAM(Dynamic Random Access Memory)またはSRAM(Static Random Access Memory)等の揮発性記憶装置を備える。これら揮発性記憶装置の少なくとも一部は、復号済み制御プログラム326を格納するための揮発性記憶領域325を構成する。
【0062】
二次記憶装置303は、典型的には、例えば、HDD(Hard Disk Drive)またはSSD(Solid State Drive)、ROM(Read Only Memory)、EPROM(Erasable Programmable Read Only Memory)、EEPROM(Electrically Erasable Programmable Read-Only Memory)等の不揮発性記憶装置を備える。これら不揮発性記憶装置の少なくとも一部は、暗号化済み制御プログラム324を格納するための不揮発性記憶領域323を構成する。
【0063】
二次記憶装置303は、さらに、OSを含むシステムプログラム320、サービスプログラム321、およびアクセスコントロール情報322等を格納する。アクセスコントロール情報322は、
図5~
図9に示す、変数または物理メモリが示す値におけるアクセスコントロールのために使用される各種情報を含む。システムプログラム320は、復号済み制御プログラム326およびサービスプログラム321等のユーザプログラムが動作するためのプログラム実行環境を提供する。
【0064】
通信コントローラ305は、バス330を介して、セキュリティユニット210とデータを送受信する。通信コントローラ305は、例えば、PCI Express等のバスに対応した通信チップにより実現され得る。
【0065】
インジケータ306は、制御ユニット200の動作状態等を通知するものであり、ユニット表面に配置された1または複数のLED(Light Emitting Diode)等で構成される。スイッチインターフェイス307は、一例として、ディップスイッチ308と接続されており、当該ディップスイッチ308のONまたはOFFの信号をプロセッサ301に出力する。
【0066】
内部バスコントローラ309は、制御システム1を構成するセーフティユニット220と、1または複数の機能ユニット230との間で、内部バスを介してデータを送受信する。この内部バスには、メーカ固有の通信プロトコルを用いてもよいし、いずれかの産業用ネットワークプロトコルと同一あるいは準拠した通信プロトコルを用いてもよい。
【0067】
ネットワークコントローラ310,311,312の各々は、ネットワークを介した任意のデバイスとの間のデータの遣り取りを担当する。ネットワークコントローラ310,311,312は、EtherCAT(登録商標)、EtherNet/IP(登録商標)、DeviceNet(登録商標)、CompoNet(登録商標)等の産業用ネットワークプロトコルを採用してもよい。
【0068】
メモリカードインターフェイス313は、メモリカード340を着脱可能に構成されており、メモリカード340に対してユーザプログラムまたは各種設定等のデータを書込み、あるいは、メモリカード340から当該プログラムまたは各種設定等のデータを読出すことが可能になっている。USBコントローラ314は、USB接続を介して、サポート装置110を含む任意の情報処理装置とデータを送受信し得る。
【0069】
図3には、プロセッサ301がプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)等)を用いて実装してもよい。あるいは、制御ユニット200の主要部を、汎用的なアーキテクチャに従うハードウェア(例えば、汎用パソコンをベースとした産業用パソコン)を用いて実現してもよい。この場合には、仮想化技術を用いて、用途の異なる複数のOSを並列的に実行させるとともに、各OS上で必要なアプリケーションを実行させるようにしてもよい。
【0070】
(c.サポート装置110のハードウェア構成)
次に、本実施の形態に従う制御システム1に接続され得るサポート装置110のハードウェア構成例について説明する。
【0071】
図4は、本実施の形態に従う制御システム1に接続され得るサポート装置110のハードウェア構成例を示す模式図である。サポート装置110は、一例として、汎用的なアーキテクチャに従う装置(パーソナルコンコンピュータまたはタブレット等)を用いて実現され得る。
【0072】
図4を参照して、サポート装置110は、CPUまたはGPU等のプロセッサ401、主記憶装置402、入力部403、出力部404、二次記憶装置405、光学ドライブ406、および通信インターフェイス407を含む。これらのコンポーネントは、プロセッサバス410を介して接続されている。主記憶装置402および二次記憶装置405は、それぞれ、制御ユニット200の主記憶装置304および二次記憶装置303と同様に構成することができるので、それらの説明を繰返さない。
【0073】
プロセッサ401は、二次記憶装置405に格納されたプログラム(一例として、OS424およびサポートプログラム423)を読出して、主記憶装置402に展開して実行することで、各種処理を実現する。
【0074】
二次記憶装置405は、基本的な機能を実現するためのOS424に加えて、サポート装置110としての機能を提供するためのサポートプログラム423を格納する。サポート装置110(実質的にはプロセッサ401)は、サポートプログラム423を実行することで、サポート装置110が提供する各種サポートツールの機能を実現する。当該サポートツールは、サポート装置110におけるプログラムの開発環境を提供する。
【0075】
また、二次記憶装置405は、サポートツールを用いて作成された制御プログラム420と、変数/物理メモリの操作権限情報生成プログラム421と、変数/物理メモリの書込範囲情報生成プログラム422とを格納する。制御プログラム420は、制御ユニット200で実行されるプログラムのソースコードであってもよい。また、制御プログラム420は、制御ユニット200で実行されるプログラムの実行ファイルを含んでいてもよい。
【0076】
変数/物理メモリの操作権限情報生成プログラム421は、変数のルール800および物理メモリのルール810(
図8参照)を参照して、制御プログラム420に含まれる変数または物理メモリが示す値の各々のアクセス権限を含む変数の操作権限情報500または物理メモリの操作権限情報510を生成する。
【0077】
変数/物理メモリの書込範囲情報生成プログラム422は、制御プログラム420に含まれる変数または物理メモリの各々における、書き込み可能な値の範囲を含む変数の書込範囲情報600または物理メモリの書込範囲情報610(
図6参照)を生成する。ある局面において、変数/物理メモリの書込範囲情報生成プログラム422は、操作権限情報500または物理メモリの操作権限情報510に基づいて、変数の書込範囲情報600または物理メモリの書込範囲情報610(
図6参照)を生成してもよい。この場合、二次記憶装置405は、変数または物理メモリのセキュリティレベルごとに予め定められた書き込み範囲の情報を格納する。変数または物理メモリのセキュリティレベルは、例えば、どの権限(管理者、設計者等)のユーザアカウントが当該変数または物理メモリが示す値にアクセス可能なのかによって決定され得る。
【0078】
また、ある局面において、二次記憶装置405は、制御プログラム420を暗号化した暗号化済み制御プログラムを格納してもよい。さらに、二次記憶装置405は、制御プログラム420の暗号化のための鍵、および暗号化処理プログラムを格納してもよい。また、二次記憶装置405は、簡易暗号化処理プログラムを格納してもよい。プロセッサ401は、簡易暗号化処理プログラムを実行することで、簡易暗号化済み制御プログラムを生成し得る。
【0079】
入力部403は、キーボードまたはマウス等で構成され、ユーザ操作を受け付ける。出力部404は、ディスプレイ、各種インジケータ、プリンタ等で構成され、プロセッサ401からの処理結果等を出力する。
【0080】
サポート装置110は、光学ドライブ406を有する。光学ドライブ406は、記録媒体450(例えば、DVD(Digital Versatile Disc)等の光学記録媒体)から、その中に格納されたプログラムを読み取り、当該プログラムを二次記憶装置405等にインストールする。
【0081】
通信インターフェイス407は、USBまたはイーサネット等の任意の通信媒体を介して、制御システム1が備える制御ユニット200またはセキュリティユニット210とデータを送受信し得る。
【0082】
サポート装置110で実行されるサポートプログラム423等は、コンピュータ読取可能な記録媒体450を介してインストールされてもよいが、ネットワーク上のサーバ装置等からダウンロードする形でインストールされてもよい。また、本実施の形態に従うサポート装置110が提供する機能は、OSが提供するモジュールの一部を利用する形で実現され得る。
【0083】
図4には、プロセッサ401がプログラムを実行することで、サポート装置110として必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASICまたはFPGA等)を用いて実装してもよい。また、本実施の形態では、制御システム1の稼動中に、サポート装置110が、制御システム1から取り外されていてもよい。
【0084】
サポート装置110は、生成した制御プログラム420または暗号化済み制御プログラムを制御ユニット200に送信する。さらに、サポート装置110は、変数の操作権限情報500または物理メモリの操作権限情報510と、変数の書込範囲情報600または物理メモリの書込範囲情報610とを制御ユニット200に送信する。制御ユニット200は、受信した変数の操作権限情報500または物理メモリの操作権限情報510と、変数の書込範囲情報600または物理メモリの書込範囲情報610とをアクセスコントロール情報322の一部として、二次記憶装置303に格納する。
【0085】
制御ユニット200は、制御プログラム420内で参照される変数または物理メモリが示す値に対してアクセス要求があった場合、変数の操作権限情報500または物理メモリの操作権限情報510を参照することで、アクセス要求を受け付けるか拒否するかを判断し得る。
【0086】
また、制御ユニット200は、アクセス要求が書込要求であった場合に、変数の書込範囲情報600または物理メモリの書込範囲情報610を参照することで、当該書込要求を受け付けるか拒否するかを判断し得る。
【0087】
ある局面において、制御ユニット200は、変数/物理メモリの操作権限情報生成プログラム421と、変数/物理メモリの書込範囲情報生成プログラム422とを二次記憶装置303に予め格納してもよい。この場合、制御ユニット200は、受信した制御プログラム420または暗号化済み制御プログラムから、変数の操作権限情報500または物理メモリの操作権限情報510と、変数の書込範囲情報600または物理メモリの書込範囲情報610とを生成する。
【0088】
<C.アクセスコントロール情報>
次に、変数または物理メモリが示す値ごとのアクセスコントロールを実現するためのアクセスコントロール情報322が含む各種情報について説明する。
【0089】
図5は、変数の操作権限情報500および物理メモリの操作権限情報510の一例を示す図である。変数の操作権限情報500は、ユーザアカウントの権限ごとの各変数に対する読出および書込の操作制限(アクセス権限)を示す。物理メモリの操作権限情報510は、ユーザアカウントの権限ごとの各物理メモリに対する読出および書込の操作制限(アクセス権限)を示す。
【0090】
ある局面において、変数の操作権限情報500および物理メモリの操作権限情報510は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。
【0091】
変数の操作権限情報500は、データ項目として、変数501と、操作502と、ユーザアカウントの権限ごとのアクセス制限503とを含む。さらに、変数の操作権限情報500は、各レコードを一意に識別するための識別子を含んでいてもよい。
【0092】
変数501は、制御プログラム420に含まれる各々の変数名を含む。操作502は、少なくとも2つの操作方法である読出および書込を含む。読出は、ある変数が示す値を参照する操作である。書込は、ある変数が示す値を変更または上書きする操作である。アクセス制限503は、ユーザアカウントの権限ごとの読出および書込の制限である。
【0093】
図5に示す例では、「管理者」のユーザアカウントは、変数「AAAAAAA」に対して読出および書込の両方の権限を有する。逆に、「操作者」のユーザアカウントは、変数「AAAAAAA」に対して読出および書込の両方の権限を有さない。また、変数「AAAAAAA」に関して、「管理者、設計者」のみが読出および書込の両方の権限を有する。一方で、変数「BBBBBBB」に関して、より多くのユーザアカウント「管理者、設計者、保全者」が読出および書込の両方の権限を有する。この場合、変数「AAAAAAA」のセキュリティレベルは、変数「BBBBBBB」のセキュリティレベルよりも高いといえる。
【0094】
物理メモリの操作権限情報510は、データ項目として、物理メモリ511と、操作512と、ユーザアカウントの権限ごとのアクセス制限513とを含む。さらに、物理メモリの操作権限情報510は、各レコードを一意に識別するための識別子を含んでいてもよい。
【0095】
物理メモリ511は、制御プログラム420に含まれる各々の物理メモリのアドレスを含む。ある局面において、物理メモリ511は、物理メモリのアドレスの範囲を含んでいてもよい。操作512は、少なくとも2つの操作方法である読出および書込を含む。読出は、ある物理メモリが示す値を参照する操作である。書込は、ある物理メモリが示す値を変更または上書きする操作である。アクセス制限513は、ユーザアカウントの権限ごとの読出および書込の制限である。
【0096】
図5に示す例では、「管理者」のユーザアカウントは、物理メモリ「D0000」に対して読出および書込の両方の権限を有する。逆に、「操作者」のユーザアカウントは、物理メモリ「D0000」に対して読出および書込の両方の権限を有さない。また、物理メモリ「D0000」に関して、「管理者、設計者」のみが読出および書込の両方の権限を有する。一方で、物理メモリ「D0001」に関して、より多くのユーザアカウント「管理者、設計者、保全者」が読出および書込の両方の権限を有する。この場合、物理メモリ「D0000」のセキュリティレベルは、物理メモリ「D0001」のセキュリティレベルよりも高いといえる。
【0097】
制御プログラム420が変数を含む場合、制御ユニット200またはサポート装置110は、変数の操作権限情報500を生成する。逆に、制御プログラム420が物理メモリを含む場合、制御ユニット200またはサポート装置110は、物理メモリの操作権限情報510を生成する。ある局面において、制御プログラム420が変数および物理メモリの両方を含む場合、制御ユニット200またはサポート装置110は、変数の操作権限情報500および物理メモリの操作権限情報510を組み合わせた情報を生成し、当該情報をアクセスコントロールに使用してもよい。
【0098】
制御ユニット200は、変数の操作権限情報500または物理メモリの操作権限情報510と、ユーザアカウント情報700(
図7参照)とに基づいて、変数または物理メモリが示す値に対するアクセス要求を受け付けるか否かを判断する。
【0099】
図6は、変数の書込範囲情報600および物理メモリの書込範囲情報610の一例を示す図である。変数の書込範囲情報600は、ユーザアカウントの権限ごとの各変数に書き込み可能な値の範囲を示す。物理メモリの書込範囲情報610は、ユーザアカウントの権限ごとの各物理メモリに書き込み可能な値の範囲を示す。
【0100】
ある局面において、変数の書込範囲情報600および物理メモリの書込範囲情報610は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。
【0101】
変数の書込範囲情報600は、データ項目として、変数601と、書込範囲602と、ユーザアカウントの権限ごとの書込操作制限603とを含む。さらに、変数の書込範囲情報600は、各レコードを一意に識別するための識別子を含んでいてもよい。
【0102】
変数601は、制御プログラム420に含まれる各々の変数名を含む。書込範囲602は、ある変数に書き込むことができる値の範囲である。書込操作制限603は、ユーザアカウントの権限ごとの書込範囲602が示す値の書込操作制限である。
【0103】
図6に示す例では、「管理者」のユーザアカウントは、変数「CCCCCCC」に対して値「0-100」を書き込むことができる。「保全者」のユーザアカウントは、変数「CCCCCCC」に対して値「50-90」を書き込むことができる。「操作者」のユーザアカウントは、変数「CCCCCCC」に対して値「50」のみを書き込むことができる。
【0104】
物理メモリの書込範囲情報610は、データ項目として、物理メモリ611と、書込範囲612と、ユーザアカウントの権限ごとの書込操作制限613とを含む。さらに、物理メモリの書込範囲情報610は、各レコードを一意に識別するための識別子を含んでいてもよい。
【0105】
物理メモリ611は、制御プログラム420に含まれる各々の物理メモリのアドレスを含む。ある局面において、物理メモリ511は、物理メモリのアドレスの範囲を含んでいてもよい。書込範囲612は、ある物理メモリに書き込むことができる値の範囲である。書込操作制限613は、ユーザアカウントの権限ごとの書込操作制限である。
【0106】
図6に示す例では、「管理者」のユーザアカウントは、物理メモリのアドレス「D0002」に対して値「0-100」を書き込むことができる。「保全者」のユーザアカウントは、変数「D0002」に対して値「50-90」を書き込むことができる。「操作者」のユーザアカウントは、変数「D0002」に対して値「50」のみを書き込むことができる。
【0107】
制御プログラム420が変数を含む場合、制御ユニット200またはサポート装置110は、変数の書込範囲情報600を生成する。逆に、制御プログラム420が物理メモリを含む場合、制御ユニット200またはサポート装置110は、物理メモリの書込範囲情報610を生成する。ある局面において、制御プログラム420が変数および物理メモリの両方を含む場合、制御ユニット200またはサポート装置110は、変数の書込範囲情報600および物理メモリの書込範囲情報610を組み合わせた情報を生成して、当該情報をアクセスコントロールに使用してもよい。
【0108】
制御ユニット200は、変数の書込範囲情報600または物理メモリの書込範囲情報610と、ユーザアカウント情報700とに基づいて、書込要求を受け付けるか否かを判断する。
【0109】
図7は、ユーザアカウント情報700の一例を示す図である。ある局面において、ユーザアカウント情報700は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。ユーザアカウント情報700は、ユーザ識別子701と、パスワード702と、権限703とを含む。
【0110】
ユーザ識別子701は、ユーザを一意に示す。ある局面において、ユーザは、人間だけでなく装置またはシステムを含み得る。一例として、他の装置またはシステムは、ユーザとして、制御ユニット200の変数または物理メモリが示す値に対するアクセス要求を送信し得る。パスワード702は、ユーザ毎の認証用のパスワードである。権限703は、各ユーザの権限(または属性)である。
【0111】
図7に示す例では、ユーザ識別子「Kita」が示すユーザのパスワードは「1111」である。また、ユーザ識別子701「Kita」が示すユーザの権限は「設計者」である。この場合、ユーザ識別子701「Kita」が示すユーザは、変数「AAAAAAA,BBBBBBB,CCCCCCC」または物理メモリ「D0000,D0001,D0002」に対して、読出および書込の権限を有する(
図5参照)。また、ユーザ識別子701「Kita」が示すユーザは、変数「CCCCCCC」または物理メモリ「D0002」に対して、値「0-100」を書き込む権限を有する(
図6参照)。なお、パスワードは、実際には暗号化されていてもよい。
【0112】
図8は、変数のルール800および物理メモリのルール810の一例を示す図である。変数のルール800は、変数の命名規則と、各変数名に対応付けられたアクセス制限とを含む。物理メモリのルール810は、物理メモリの範囲と、各物理メモリの範囲に対応付けられたアクセス制限とを含む。
【0113】
ある局面において、変数のルール800および物理メモリのルール810は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。
【0114】
変数のルール800は、データ項目として、変数名ルール801と、操作802と、ユーザアカウントの権限ごとのアクセス制限803とを含む。
【0115】
変数名ルール801は、正規表現等の任意のフォーマットによる変数名の命名規則を含む。操作802は、読出および書込の操作を含む。アクセス制限803は、ユーザアカウントの権限ごとの読出および書込の制限である。
【0116】
図8に示す例では、「管理者、設計者」のみが、変数名が「OEM」から始まる変数に対しての読込および書込の権限を有する。また、「管理者、設計者、保全者」は、変数名が「ACL」から始まる変数に対しての読込および書込の権限を有する。さらに、「操作者、観察者」は、変数名が「ACL」から始まる変数に対しての読込権限のみを有する。
【0117】
物理メモリのルール810は、データ項目として、物理メモリ範囲811と、操作812と、ユーザアカウントの権限ごとのアクセス制限813とを含む。
【0118】
一例として、物理メモリ範囲811は、物理メモリの開始アドレスおよび終了アドレスによって示される範囲を含む。他の例として、物理メモリ範囲811は、1つの物理メモリのアドレス、または、連続しない複数の物理メモリのアドレスを含んでいてもよい。操作802は、読出および書込の操作を含む。アクセス制限803は、アクセス制限803は、ユーザアカウントの権限ごとの読出および書込の制限である。
【0119】
図8に示す例では、「管理者、設計者」のみが、物理メモリ「D0000-D0100」に対しての読込および書込の権限を有する。また、「管理者、設計者、保全者」は、物理メモリ「D0201-D0300」に対しての読込および書込の権限を有する。さらに、「操作者、観察者」は、物理メモリ「D0201-D0300」に対しての読込権限のみを有する。
【0120】
変数/物理メモリの操作権限情報生成プログラム421は、変数のルール800と物理メモリのルール810とを参照して、制御プログラム420から、変数の操作権限情報500と物理メモリの操作権限情報510とを生成する。
【0121】
サポート装置110が変数/物理メモリの操作権限情報生成プログラム421を実行する場合、サポート装置110は変数のルール800および/または物理メモリのルール810を二次記憶装置405に格納する。また、制御ユニット200が変数/物理メモリの操作権限情報生成プログラム421を実行する場合、制御ユニット200は変数のルール800および/または物理メモリのルール810を二次記憶装置303に格納する。
【0122】
また、一例として、ユーザは、サポート装置110(サポートツール等)を用いて、予め変数のルール800および物理メモリのルール810を作成し得る。作成された変数のルール800および物理メモリのルール810は、二次記憶装置405に格納されてもよいし、制御ユニット200に送信されてもよい。
【0123】
図9は、変数マスタ900および物理メモリマスタ910の一例を示す図である。変数マスタ900は、制御プログラム420内で定義された全ての変数を含む。変数マスタ900は、制御プログラム420内で使用できる全ての物理メモリを含む。
【0124】
ある局面において、変数マスタ900および物理メモリマスタ910は、リレーショナルデータベースのテーブルとして表現されてもよいし、JSON(JavaScript(登録商標) Object Notation)等の他の任意のデータ形式で表現されてもよい。
【0125】
変数マスタ900は、データ項目として、変数識別子901と、変数902を含む。変数識別子901は、変数を一意に識別する。変数902は、制御プログラム420内で定義された変数の名称を含む。
【0126】
物理メモリマスタ910は、データ項目として、物理メモリ識別子911と、物理メモリ912を含む。物理メモリ識別子911は、物理メモリまたは物理メモリの範囲を一意に識別する。物理メモリ912は、制御プログラム420内で使用可能な物理メモリまたは物理メモリの範囲を含む。
【0127】
ある局面において、サポート装置110または制御ユニット200は、制御プログラム420から、最初に変数マスタ900または物理メモリマスタ910を生成してもよい。この場合、サポート装置110または制御ユニット200は、変数マスタ900または物理メモリマスタ910と、変数のルール800または物理メモリのルール810とに基づいて、変数の操作権限情報500または物理メモリの操作権限情報510を生成し得る。
【0128】
他の局面において、サポート装置110または制御ユニット200は、変数マスタ900または物理メモリマスタ910を使用せずに、変数の操作権限情報500または物理メモリの操作権限情報510を生成してもよい。
【0129】
<D.アクセスコントロールの手順>
次に、本実施の形態に従う制御ユニット200によるアクセスコントロールの手順について説明する。
【0130】
図10は、制御ユニット200に対するアクセス要求の一例を示す図である。制御ユニット200は、端末1000から、ある変数または物理メモリが示す値に対するアクセス要求1010を受信したとする。端末1000は、サポート装置110、表示装置140、他の制御システム1または他の任意の装置であってもよい。
【0131】
図10に示すアクセス要求1010は、書込要求であり、一例として、ユーザ識別子1011、パスワード1012、書込コマンド1013、変数1014、および、書込値1015を含む。
【0132】
他の例として、アクセス要求1010が読出要求の場合、アクセス要求1010は、一例として、書込コマンド1013および書込値1015の代わりに、読出コマンドを含み得る。また、アクセス要求1010は変数1014の代わりに物理メモリを含み得る。
【0133】
ユーザ識別子1011は、アクセス要求1010を送信したユーザを一意に識別する。パスワード1012は、ユーザを認証するためのパスワードである。書込コマンド1013は、制御ユニット200に実行させるコマンドである。変数1014は、書込処理の対象の変数名である。書込値1015は、変数に書き込む値である。
【0134】
制御ユニット200は、アクセス要求1010を受信したことに基づいて、ユーザアカウント情報700を参照して、アクセス要求1010を送信したユーザアカウントを認証する。次に、制御ユニット200は、変数の操作権限情報500または物理メモリの操作権限情報510に基づいて、アクセス要求1010を受け付けるか否かを判断する。
【0135】
さらに、制御ユニット200は、アクセス要求1010が書込要求であることに基づいて、変数の書込範囲情報600または物理メモリの書込範囲情報610を参照して、書込要求を受け付けるか否かを判断する。制御ユニット200は、変数または物理メモリに書き込まれる値が、アクセス要求1010を送信したユーザアカウントの権限の範囲内であれば、書込要求を受け付け、そうでなければ書込要求を拒否する。
【0136】
さらに、制御ユニット200は、アクセス要求1010を受け付けたときに、各変数または物理メモリが示す値に変更があった(書込処理があった)ことに基づいて、変更履歴を生成する。当該変更履歴は、二次記憶装置303に格納される。ある局面において、変更履歴は、更新された値を示す変数名または物理メモリのアドレスと、更新された値と、値を更新したユーザのユーザ識別子とを含んでいてもよい。
【0137】
変更履歴は、アクセスログとは別に、各変数または物理メモリが示す値の変更記録のみを記録したものであってもよい。変更履歴およびログを分けることにより、変更履歴は膨大なログに埋もれることはなくなり、制御システム1の管理者は、当該変更履歴を確認することで、不正なアクセス等があったか否かを容易に確認することができる。変更履歴は、一例として、変更のあった変数名または物理メモリのアドレスと、変更前後の値と、書込処理を実行したユーザのユーザ識別子とを含む。
【0138】
図11は、アクセスコントロール情報322の生成手順の一例を示す図である。ある局面において、
図11に示す処理は、制御ユニット200およびサポート装置110のいずれかによって実行されてもよい。
【0139】
制御ユニット200が
図11に示す処理を実行する場合、プロセッサ301は、
図11の処理を行うためのプログラムを二次記憶装置303から主記憶装置304に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
【0140】
サポート装置110が
図11に示す処理を実行する場合、プロセッサ401は、
図11の処理を行うためのプログラムを二次記憶装置405から主記憶装置402に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
【0141】
これ以降、制御ユニット200が
図11に示す処理を実行するものとして説明するが、サポート装置110が
図11に示す処理を実行する場合も、生成後のアクセスコントロール情報322を制御ユニット200に送信する以外の手順は同じである。
【0142】
ステップS1110において、サポート装置110から制御プログラム420を取得する。制御プログラム420は、暗号化されていてもよいし、暗号化されていなくてもよい。制御ユニット200は、暗号化されている制御プログラム420を取得した場合、復号処理を実行する。
【0143】
ステップS1120において、プロセッサ301は、変数のルール800と、物理メモリのルール810とを取得する。ある局面において、プロセッサ301は、二次記憶装置303に格納されている変数のルール800および物理メモリのルール810を取得してもよい。他の局面において、プロセッサ301は、サポート装置110から、変数のルール800と、物理メモリのルール810とを受信してもよい。
【0144】
ステップS1130において、プロセッサ301は、変数マスタ900と、物理メモリマスタ910とを生成または更新する。制御プログラム420内で変数が使用されている場合、プロセッサ301は、制御プログラム420内で参照される全ての変数を含む変数マスタ900を生成する。制御プログラム420内で物理メモリが使用されている場合、プロセッサ301は、制御ユニット200が提供する全ての物理メモリを含む物理メモリマスタ910を生成する。なお、物理メモリマスタ910は、二次記憶装置303に予め格納されていてもよい。
【0145】
ステップS1140において、プロセッサ301は、変数の操作権限情報500および/または物理メモリの操作権限情報510を生成する。より具体的には、プロセッサ301は、変数のルール800と、変数マスタ900とに基づいて変数の操作権限情報500を生成する。また、プロセッサ301は、物理メモリのルール810と、物理メモリマスタ910とに基づいて物理メモリの操作権限情報510を生成する。なお、プロセッサ301は、ステップS1130の処理を省略して、ステップS1140の処理内で制御プログラム420から変数または物理メモリを抽出してもよい。
【0146】
ステップS1150において、プロセッサ301は、変数の書込範囲情報600および/または物理メモリの書込範囲情報610を生成する。より具体的には、二次記憶装置303(サポート装置110が
図11に示す処理を実行する場合は二次記憶装置405)は、変数または物理メモリのセキュリティレベル(どの権限を持つユーザアカウントによるアクセスが可能か)に基づく書込範囲のルール(図示せず)を予め備えていてもよい。プロセッサ301は、変数の操作権限情報500と、変数のセキュリティレベルに基づく書込範囲のルールとに基づいて、変数の書込範囲情報600を生成し得る。また、プロセッサ301は、物理メモリの操作権限情報510と、物理メモリのセキュリティレベルに基づく書込範囲のルールとに基づいて、物理メモリの書込範囲情報610を生成し得る。
【0147】
なお、サポート装置110が
図11に示す処理を実行する場合、各ステップで生成した情報をアクセスコントロール情報322の一部として、制御ユニット200に送信する。
【0148】
図12は、制御ユニット200によるアクセスコントロールの手順の一例を示す図である。ある局面において、プロセッサ301は、
図12の処理を行うためのプログラムを二次記憶装置303から主記憶装置304に読み込んで、当該プログラムを実行してもよい。他の局面において、当該処理の一部または全部は、当該処理を実行するように構成された回路素子の組み合わせとしても実現され得る。
【0149】
ステップS1210において、プロセッサ301は、終了要求があるまでループ内の処理を繰り返し実行する。終了要求は、ユーザによって制御ユニット200に入力されてもよいし、外部機器から制御ユニット200に送信されてもよい。または、プロセッサ301は、制御ユニット200が動作している間は、常にステップS1220以降の処理を実行し続けてもよい。
【0150】
ステップS1220において、プロセッサ301は、変数または物理メモリへのアクセス要求があるか否かを判定する。プロセッサ301は、変数または物理メモリへのアクセス要求があると判定した場合(ステップS1220にてYES)、制御をステップS1230に移す。そうでない場合(ステップS1220にてNO)、プロセッサ301は、制御をステップS1210に移す。
【0151】
ステップS1230において、プロセッサ301は、ユーザアカウント情報700を取得する。ユーザアカウント情報700は、予め二次記憶装置303に格納されていてもよい。
【0152】
ステップS1240において、プロセッサ301は、アクセス要求を送信したユーザが、アクセス要求のあった変数または物理メモリが示す値に対してアクセス権限を有するか否かを判定する。プロセッサ301は、アクセス要求を送信したユーザが、アクセス要求のあった変数または物理メモリが示す値に対してアクセス権限を有すると判定した場合(ステップS1240にてYES)、制御をステップS1250に移す。そうでない場合(ステップS1240にてNO)、プロセッサ301は、制御をステップS1260に移す。
【0153】
ステップS1250において、プロセッサ301は、アクセス要求を許可する(受け付ける)。より具体的には、プロセッサ301は、アクセス要求に含まれる命令に基づいて、変数または物理メモリが示す値の読出処理、または変数または物理メモリへの書込処理を実行する。ある局面において、変更履歴は、更新された値を示す変数名または物理メモリのアドレスと、更新された値と、値を更新したユーザのユーザ識別子とを含んでいてもよい。なお、プロセッサ301は、書込処理を実行した場合、変更履歴を生成または更新して、当該変更履歴を二次記憶装置303に格納する。
【0154】
ステップS1260において、プロセッサ301は、アクセス要求を拒否する。ステップS1270において、プロセッサ301は、終了要求を受け付けたか否かを判定する。プロセッサ301は、終了要求を受け付けたと判定した場合(ステップS1270にてYES)、処理を終了する。そうでない場合(ステップS1270にてNO)、プロセッサ301は、制御をステップS1210に戻す。
【0155】
以上説明した通り、本実施の形態に従う制御ユニット200は、変数または物理メモリごとのアクセスコントロール情報322を有する。これにより、制御ユニット200は、変数または物理メモリごとに、アクセス要求を受け付けるか否かを判断し得る。さらに、本実施の形態に従う制御ユニット200は、変数または物理メモリのセキュリティレベルに基づいて、変数または物理メモリごとに書込範囲を制限し得る。
【0156】
また、ある局面において、本実施の形態に従う制御ユニット200またはサポート装置110は、制御プログラム420に基づいて、変数の操作権限情報を生成し得る。これにより、ユーザは、制御プログラム420において、予め定められた命名規則で変数を定義することにより、容易に変数の操作権限情報500を生成し得る。
【0157】
また、他の局面において、本実施の形態に従う制御ユニット200またはサポート装置110は、物理メモリの操作権限情報510を予め保持していてもよい。これにより、制御ユニット200は、自動的に、物理メモリごとに、アクセス要求を受け付けるか否かを判断し得る。
【0158】
<E.付記>
以上のように、本実施の形態では以下のような開示を含む。
【0159】
(構成1)
制御対象を制御する制御部(301)と、
上記制御部(301)によって実行されるプログラム(420)と、上記プログラム(420)で参照される複数のデータの各々に対する各アクセス権限(500,510)とを格納する記憶部(303)と、
上記複数のデータのいずれかに対するアクセス要求を受け付ける入力部(305,314)とを備え、
各上記アクセス権限(500,510)は、各権限を持つユーザの各々が実行可能な操作の情報を含み、
上記制御部(301)は、
上記入力部(305,314)から上記複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各上記アクセス権限(500,510)を参照し、
各上記アクセス権限(500,510)に基づいて、上記アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限(500,510)を有するか否かを判断する、制御システム(1,200)。
【0160】
(構成2)
上記複数のデータの各々は、上記プログラム(420)内の変数または物理メモリのアドレスにより示されるデータである、構成1の制御システム(1,200)。
【0161】
(構成3)
上記記憶部(303)は、さらに、上記変数または上記物理メモリの各々に対する書込範囲の情報(600,610)を格納し、
上記制御部(301)は、上記書込範囲の情報(600,610)に基づいて、アクセス要求のあった上記変数または上記物理メモリに対する書込可能な値の範囲を制限する、構成2の制御システム(1,200)。
【0162】
(構成4)
上記複数のデータの各々に対するアクセス権限(500,510)は、変数名ごとのアクセス権限(500,510)を定義した第1のルール(800)、または、物理メモリごとのアクセス権限(500,510)を定義した第2のルール(810)に基づいて生成される、構成2または3の制御システム(1,200)。
【0163】
(構成5)
上記プログラム(420)を作成するための装置(110)をさらに備え、
上記装置(110)は、
上記第1のルール(800)または上記第2のルール(810)に基づいて、上記プログラム(420)を解析し、
解析結果に基づいて、各上記アクセス権限(500,510)を生成し、
各上記アクセス権限(500,510)を上記記憶部(303)に出力する、構成4の制御システム(1,200)。
【0164】
(構成6)
上記記憶部(303)は、上記第1のルール(800)または上記第2のルール(810)をさらに格納し、
上記制御部(301)は、
他の装置から上記プログラム(420)を取得したことに基づいて、上記第1のルール(800)または上記第2のルール(810)を用いて、上記プログラム(420)を解析し、
解析結果に基づいて、各上記アクセス権限(500,510)を生成し、
各上記アクセス権限(500,510)を上記記憶部(303)に出力する、構成4の制御システム(1,200)。
【0165】
(構成7)
上記制御部(301)は、上記プログラム(420)で参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を上記記憶部(303)に格納し、
上記更新履歴は、更新されたデータを示す変数名または物理メモリのアドレスと、上記更新されたデータと、データを更新したユーザのユーザ識別子とを含む、構成2~6の記載の制御システム(1,200)。
【0166】
(構成8)
制御装置の制御方法であって、
上記制御装置によって実行されるプログラム(420)と、上記プログラム(420)で参照される複数のデータの各々に対する各アクセス権限(500,510)とにアクセスするステップを含み、
各上記アクセス権限(500,510)は、各権限を持つユーザの各々が実行可能な操作の情報を含み、
上記複数のデータのいずれかに対するアクセス要求を取得したことに基づいて、各上記アクセス権限(500,510)を参照するステップと、
各上記アクセス権限(500,510)に基づいて、上記アクセス要求を送信したユーザが、当該アクセスを要求したデータに対するアクセス権限(500,510)を有するか否かを判断するステップとをさらに含む、制御方法。
【0167】
(構成9)
上記複数のデータの各々は、上記プログラム(420)内の変数または物理メモリのアドレスにより示されるデータである、構成8の制御方法。
【0168】
(構成10)
上記変数または上記物理メモリの各々に対する書込範囲の情報(600,610)にアクセスするステップと、
上記書込範囲の情報(600,610)に基づいて、アクセス要求のあった上記変数または上記物理メモリに対する書込可能な値の範囲を制限するステップとをさらに含む、構成9の制御方法。
【0169】
(構成11)
上記複数のデータの各々に対するアクセス権限(500,510)は、変数名ごとのアクセス権限(500,510)を定義した第1のルール(800)、または、物理メモリごとのアクセス権限(500,510)を定義した第2のルール(810)に基づいて生成される、構成9または10の制御方法。
【0170】
(構成12)
上記第1のルール(800)または上記第2のルール(810)に基づいて、上記プログラム(420)を解析するステップと、
解析結果に基づいて、各上記アクセス権限(500,510)を生成するステップと、
各上記アクセス権限(500,510)を出力するステップとをさらに含む、構成11の制御方法。
【0171】
(構成13)
上記プログラム(420)で参照される複数のデータのいずれかが更新されたことに基づいて、更新履歴を生成するステップをさらに含み、
上記更新履歴は、更新されたデータを示す変数名または物理メモリのアドレスと、上記更新されたデータと、データを更新したユーザのユーザ識別子とを含む、構成9~12の制御方法。
【0172】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本開示の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味及び範囲内で全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された開示内容は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【0173】
1 制御システム、100 ネットワークシステム、110 サポート装置、120 サーバ装置、130 ゲートウェイ、140 表示装置、150 ネットワーク、160 フィールドネットワーク、170 制御対象、200 制御ユニット、210 セキュリティユニット、220 セーフティユニット、230 機能ユニット、240 電源ユニット、301,401 プロセッサ、302 チップセット、303,405 二次記憶装置、304,402 主記憶装置、305 通信コントローラ、306 インジケータ、307 スイッチインターフェイス、308 ディップスイッチ、309 内部バスコントローラ、310,311,312 ネットワークコントローラ、313 メモリカードインターフェイス、314 コントローラ、320 システムプログラム、321 サービスプログラム、322 アクセスコントロール情報、323 不揮発性記憶領域、324 暗号化済み制御プログラム、325 揮発性記憶領域、326 復号済み制御プログラム、330 バス、340 メモリカード、403 入力部、404 出力部、406 光学ドライブ、407 通信インターフェイス、410 プロセッサバス、420 制御プログラム、421 操作権限情報生成プログラム、422 書込範囲情報生成プログラム、423 サポートプログラム、424 OS、450 記録媒体、500,510 操作権限情報、501,601,902,1014 変数、502,512,802,812 操作、503,513,803,813 アクセス制限、511,611,912 物理メモリ、600,610 書込範囲情報、602,612 書込範囲、603,613 書込操作制限、700 ユーザアカウント情報、701,1011 ユーザ識別子、702,1012 パスワード、703 権限、800,810 ルール、801 変数名ルール、811 物理メモリ範囲、900 変数マスタ、901 変数識別子、910 物理メモリマスタ、911 物理メモリ識別子、1000 端末、1010 アクセス要求、1013 書込コマンド、1015 書込値。