(57)【要約】      （修正有）【課題】データ処理プログラムによるＩ／Ｏリソースへのアクセス権を制御可能とするコントローラ及びコントロール管理システムを提供する。【解決手段】シーケンス制御等を実行する制御プログラム及び複雑な算術演算等を実行するデータ処理プログラムを共に動作させるコントローラ１０１において、共有メモリ１１０でＩ／Ｏリソース情報を共有し、このデータ処理プログラムによるＩ／Ｏリソース情報へのアクセス権を読み込み禁止情報及び書き込み許可情報を用いて制御する。【選択図】図２
2018041405.tif 000002
【特許請求の範囲】
【請求項１】
所定の制御を実行する制御プログラムと、
データ処理を実行するデータ処理プログラムと、
前記制御プログラム及び前記データ処理プログラムによって各々アクセスされる共有リソースを格納する共有メモリと、
前記制御プログラム及び前記データ処理プログラムによる前記共有メモリへのアクセス権限に関するアクセス権限情報を管理するアクセス権管理部と、
前記データ処理プログラムによって前記共有メモリがアクセスされる際、前記アクセス権限情報に基づいて前記共有メモリへのアクセス権限があるか否かを判定し、前記共有メモリへのアクセス権限がある場合にのみ前記共有メモリへのアクセスを許容する調停部と、
を備えることを特徴とするコントローラ。
【請求項２】
前記共有メモリには複数の前記共有リソースが格納されており、
前記アクセス権管理部は、
前記複数の共有リソースのうち読み込みが禁止されている共有リソースを管理する読み込み禁止情報テーブルと、
前記複数の共有リソースのうち書き込みが許容されている共有リソースを管理する書き込み許可情報テーブルと、
を備えることを特徴とする請求項１に記載のコントローラ。
【請求項３】
前記制御プログラム及び前記データ処理プログラムは、それぞれ任意の周期で、前記共有メモリに記憶している前記共有リソースの読み込み及び書き込みを実行する
ことを特徴とする請求項１に記載のコントローラ。
【請求項４】
前記アクセス権管理部は、
前記アクセス権限情報に関してデフォルトのアクセス権限として、前記制御プログラム及び前記データ処理プログラムによる前記共有メモリからの読み出しのみが許容されるようにアクセス権限が設定されている
ことを特徴とする請求項１に記載のコントローラ。
【請求項５】
前記アクセス権管理部は、
前記制御プログラムの開発環境上において前記アクセス権情報を管理することを特徴とする請求項１に記載のコントローラ。
【請求項６】
前記アクセス権管理部は、
前記アクセス権情報に電子署名を付して管理することを特徴とする請求項１に記載のコントローラ。
【請求項７】
所定の制御を実行する制御プログラムと、データ処理を実行するデータ処理プログラムと、前記制御プログラム及び前記データ処理プログラムによって各々アクセスされる共有リソースを格納する共有メモリと、前記制御プログラム及び前記データ処理プログラムによる前記共有メモリへのアクセス権限に関するアクセス権限情報を管理するアクセス権限管理部と、前記データ処理プログラムによって前記共有メモリがアクセスされる際、前記アクセス権限情報に基づいて前記共有メモリへのアクセス権限があるか否かを判定し、前記共有メモリへのアクセス権限がある場合にのみ前記共有メモリへのアクセスを許容する調停部と、を備えるコントローラと、
前記コントローラにおける前記アクセス権限管理部に対する操作指令を入力するためのアクセス権設定画面を表示するコントローラ管理装置と、
を備えることを特徴とするコントロールシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コントローラ及びコントロール管理システムに関し、特に、制御システムや社会インフラシステムのシーケンス制御及びモーション制御を実行する制御プログラムと、複雑な算術演算を実施したり、監視制御システム（ＳＣＡＤＡ）、生産実行システム（ＭＥＳ）及びクラウドシステムのような外部システムと情報を送受信するデータ処理プログラムとの間においてＩ／Ｏリソースの情報を含む制御情報を共有するコントローラ及びコントロール管理システムに適用して好適なものである。
【背景技術】
【０００２】
コントローラは、シーケンス制御装置、モーション制御装置もしくはプログラマブル・ロジック・コントローラ（ＰＬＣ）とも呼ばれ、ラダー・ロジック（ＬＤ言語）、シーケンシャル・ファンクション・チャート（ＦＣ言語）、ファンクション・ブロック（ＦＢＤ言語）、ストラクチャード・テキスト（ＳＴ言語）、インストラクション・リスト（ＬＤ言語）のような制御装置特有のプログラミング言語で制御内容が記述される。このような制御内容が実行可能なプログラムを「制御プログラム」と呼ぶ。
【０００３】
このようなコントローラにおいて、複雑な算術演算やＳＣＡＤＡ、ＭＥＳ、クラウドシステムとの情報の送受信のようなデータ処理が必要な場合がある。このようなデータ処理は上述の制御装置特有の言語でプログラミングすることが困難な場合があり、Ｃ言語やＪａｖａ（登録商標）言語などの情報通信分野で使われるプログラミング言語を用いて記述する場合がある。このようなデータ処理を実行するプログラムを「データ処理プログラム」と呼ぶ。
【０００４】
データ処理プログラムは、制御プログラムの実行結果などの制御情報やコントローラに接続するＩ／Ｏリソースの情報などを用いてデータ処理を行うため、複数のプログラミング言語間または複数のＭＣＵ間でこれらの情報を共有する方法が開示されている（例えば、特許文献１及び特許文献２）。
【０００５】
具体的には、特許文献１におけるコントロール制御装置は、上述した制御プログラムに相当するラダー制御プログラム、及び、上述したデータ処理プログラムに相当するＪａｖａ（登録商標）プログラムを実行可能な構成となっている。プログラム実行中に参照すべき必要なデータは、Ｊａｖａ（登録商標）オブジェクトの形式で記憶されており、Ｊａｖａ（登録商標）プログラムは、そのまま当該必要なデータに対してアクセスが可能である。ラダー制御プログラムは、変換処理がＩ／Ｆ部において行われることにより、アクセスが可能となっている。これにより、複数のプログラムで一連の処理が可能な構成となっている。
【０００６】
一方、特許文献２におけるＦＡコントローラは、具体的には、共有メモリと、この共有メモリに確保済みのメモリエリアに格納されているデータと入出力データ記憶部に格納されている入出力データとの間でリフレッシュ処理を実行する第１ＭＣＵと、ユーザプログラムに基づいて動作するとともに、共有メモリのメモリエリアに格納されているデータを操作する第２ＭＣＵと、を備えている。上記ＦＡコントローラでは、第２ＭＣＵが、上記リフレッシュ処理にかかる設定が記述されたリフレッシュ情報を共有メモリのメモリエリアに書き込み、このメモリエリアに書き込まれたリフレッシュ情報に従ってリフレッシュ処理を実行する構成となっている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−１３２２０８号公報
【特許文献２】国際公開２０１１／１２５１７８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１におけるデータ共有方式においては、Ｊａｖａ（登録商標）オブジェクトへのラダー制御プログラム、Ｊａｖａ（登録商標）プログラムからのアクセス権について言及がなく、例えば、各プログラムからＪａｖａ（登録商標）オブジェクトへのアクセス制御については考慮されていない。
【０００９】
一方、特許文献２におけるデータ共有方式においては、共有メモリへの各ＭＣＵからのアクセス権について言及がなく、各ＭＣＵから各Ｉ／Ｏリソースへのアクセス制御については考慮されていない。
【００１０】
本発明は以上の点を考慮してなされたもので、所定の制御を実行する制御プログラムを導入後に、外部との間でデータを送受信するデータ処理プログラムを追加しても、制御プログラムの動作に影響を与えないようにすることができるコントローラ及びコントロール管理システムを提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するため、本発明におけるコントローラは、所定の制御を実行する制御プログラムと、データ処理を実行するデータ処理プログラムと、前記制御プログラム及び前記データ処理プログラムによって各々アクセスされる共有リソースを格納する共有メモリと、前記制御プログラム及び前記データ処理プログラムによる前記共有メモリへのアクセス権限に関するアクセス権限情報を管理するアクセス権限管理部と、前記データ処理プログラムによって前記共有メモリがアクセスされる際、前記アクセス権限情報に基づいて前記共有メモリへのアクセス権限があるか否かを判定し、前記共有メモリへのアクセス権限がある場合にのみ前記共有メモリへのアクセスを許容する調停部と、を備えることを特徴とする。
【００１２】
本発明におけるコントロールシステムは、所定の制御を実行する制御プログラムと、データ処理を実行するデータ処理プログラムと、前記制御プログラム及び前記データ処理プログラムによって各々アクセスされる共有リソースを格納する共有メモリと、前記制御プログラム及び前記データ処理プログラムによる前記共有メモリへのアクセス権限に関するアクセス権限情報を管理するアクセス権限管理部と、前記データ処理プログラムによって前記共有メモリがアクセスされる際、前記アクセス権限情報に基づいて前記共有メモリへのアクセス権限があるか否かを判定し、前記共有メモリへのアクセス権限がある場合にのみ前記共有メモリへのアクセスを許容する調停部と、を備えるコントローラと、前記コントローラにおける前記アクセス権限管理部に対する操作指令を入力するためのアクセス権設定画面を表示するコントローラ管理装置と、を備えることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、所定の制御を実行する制御プログラムを導入後に、外部との間でデータを送受信するデータ処理プログラムを追加しても、制御プログラムの動作に影響を与えないようにすることができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態におけるコントローラ及びＩ／Ｏモジュールのハードウェア構成の一例を示すブロック図である。
【図２】第１の実施の形態におけるコントローラ及びＩ／Ｏモジュールの機能構成の一例を示すブロック図である。
【図３】図２に示すＩ／Ｏリソースアクセス権情報のテーブル構成の一例を示す図である。
【図４】図３に示す読み込み禁止情報テーブルの一例を示す図である。
【図５】図３に示す書き込み許可情報テーブルの一例を示す図である。
【図６】共有メモリ情報テーブルの一例を示す図である。
【図７】データ処理プログラムによるデータ読み込み処理の動作の一例を示すフローチャートである。
【図８】データ処理プログラムによるデータ書き込み処理の動作の一例を示すフローチャートである。
【図９】第２の実施の形態によるコントロールシステムのシステム構成の一例を示す図である。
【図１０】アクセス権設定画面の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面について、本発明の一実施の形態について詳述する。
（１）第１の実施の形態
（１−１）第１の実施の形態の前提となるハードウェア構成の一例
図１は、第１の実施の形態におけるコントローラ１０１及びＩ／Ｏモジュール１１３のハードウェア構成の一例を示す。コントローラ１０１は、ＣＰＵ８０１、メインメモリ８０２、ＥＰＲＯＭ８０３、不揮発性記憶装置８０４、周辺制御装置８０５、外部制御装置８０６、ネットワークインタフェース（Ｉ／Ｆ）８０７及び内部バス８１８を備えている。
【００１６】
コントローラ１０１では、ＥＰＲＯＭ８０３又は不揮発性記憶装置８０４に格納されているオペレーティングシステム（ＯＳ）、各種プログラム及び各種ファイルをメインメモリ８０２に展開することにより、ＣＰＵ８０１を用いて各種の演算等を行う。
【００１７】
一方、Ｉ／Ｏモジュール１１３は、ＣＰＵ８０８、メインメモリ８０９、ＥＰＲＯＭ８１０、外部制御装置８１１、Ｉ／Ｏ制御装置８１３、Ｉ／Ｏデータ１接点８１４、Ｉ／Ｏデータ２接点８１５、Ｉ／Ｏデータ３接点８１６、Ｉ／ＯデータＮ接点８１７及び内部バス８１９を備える。
【００１８】
Ｉ／Ｏモジュール１１３は、ＥＰＲＯＭ８１０に格納されている各種プログラム及び各種ファイルをメインメモリ８０９に展開することにより、ＣＰＵ８０８を用いて各種の演算等を行う。
【００１９】
Ｉ／Ｏ制御装置８１３は、Ｉ／Ｏデータ１接点８１４などに図示しない外部センサ等から印加される電圧をデジタルデータに変換してメインメモリ８０９に記憶し、また、ＣＰＵ８０８の指示によりメインメモリ８０９に記憶されたデジタルデータを電圧に変換してＩ／Ｏデータ１接点８１４などに印加する。
【００２０】
Ｉ／Ｏモジュール１１３は、デジタル信号によって入出力を行う。Ｉ／Ｏモジュール１１３は、デジタル信号によって入出力を行うデジタルＩ／Ｏモジュールを想定しているが、その代わりに、アナログ信号によって入出力を行うアナログＩ／Ｏモジュール及びネットワークパケットによって入出力を行うネットワークＩ／Ｏモジュールを用いてもよい。
【００２１】
（１−２）第１の実施の形態における機能構成の一例
図２は、第１の実施の形態におけるコントローラ１０１などの機能構成の一例を示す。コントローラ１０１は、所定の制御を実施する制御プログラムと、外部システムとの間においてＩ／Ｏリソースの情報を含む制御情報を共有する。この制御プログラムは、例えば、制御システム又は社会インフラシステムを構成するプログラムであり、シーケンス制御又はモーション制御を実行する。一方、データ処理プログラムは、複雑な算術演算を実施したり、監視制御システム（ＳＣＡＤＡ）、生産実行システム（ＭＥＳ）及びクラウドシステムのような外部システムとの間でデータの送受信を行う。これら制御プログラム及びデータ処理プログラムは、それぞれ任意の周期で、共有メモリ１１０に記憶している共有リソースの読み込み及び書き込みを実行可能である。
【００２２】
コントローラ１０１は、バス１１２を介してＩ／Ｏモジュール１１３に接続されている。コントローラ１０１は、共有メモリ１１０及びＩ／Ｏ制御部１１１の他、制御プログラム実行部１０２、共有メモリ情報テーブル５００、データ処理プログラム実行部１０６を備えている。
【００２３】
制御プログラム実行部１０２は、制御プログラム１０３及び制御プログラム実行部１０４を有する。制御プログラム１０３は、制御プログラム実行部１０４によってその実行が制御されている。
【００２４】
データ処理プログラム実行部１０６は、データ処理プログラム１０７、データ処理プログラム実行部１０８及びＩ／Ｏリソースアクセス権情報１０９を有する。データ処理プログラム１０７は、データ処理プログラム実行部１０８によってその実行が制御されている。データ処理プログラム１０７は、その実行基盤のいわゆるＡＰＩを介して、共有リソースである共有メモリ情報テーブル５００にアクセスが可能であり、この実行基盤において当該データ処理プログラム１０７自身にアクセス権があるか否かについて確認する。
【００２５】
共有メモリ１１０及びＩ／Ｏ制御部１１１は、コントローラ１０１の内部バスによって互いに接続されており、例えば、プログラム制御方式（ＰＩ／Ｏ）又はダイレクト・メモリ・アクセス（ＤＭＡ）等の手段を用いて、互いにデータのやり取りを行うことができる。
【００２６】
一方、Ｉ／Ｏモジュール１１３は、Ｉ／Ｏデータ１１４及びＩ／Ｏ制御部１１５を備える。Ｉ／Ｏデータ１１４及びＩ／Ｏ制御部１１５は、図示しないＩ／Ｏモジュールの内部バスなどで接続し、プログラム制御方式（ＰＩ／Ｏ）やダイレクト・メモリ・アクセス（ＤＭＡ）などの手段を用いて、データのやり取りを行うことができる。
【００２７】
Ｉ／Ｏ制御部１１１とＩ／Ｏ制御部１１５とは、互いに、バス１１２を介して接続されており、プログラム制御方式（ＰＩ／Ｏ）又はダイレクト・メモリ・アクセス（ＤＭＡ）などの手段を用いて、データのやり取りを行うことができる。
【００２８】
即ち、共有メモリ１１０及びＩ／Ｏデータ１１４は、図示しないコントローラの内部バス、Ｉ／Ｏ制御部１１１、バス１１２、Ｉ／Ｏ制御部１１５、図示しないＩ／Ｏモジュールの内部バスを介して、プログラム制御方式（ＰＩ／Ｏ）又はダイレクト・メモリ・アクセス（ＤＭＡ）などの手段を用いて、データのやり取りを行うことができる。
【００２９】
図３は、Ｉ／Ｏリソースアクセス権情報１０９のテーブル構成の一例を示す。Ｉ／Ｏリソースアクセス権情報１０９は、読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００を有する。
【００３０】
読み込み禁止情報テーブル３００は、アクセス権の設定を簡素化するため、各Ｉ／Ｏデータの読み出しに関するアクセス権情報をいわゆるブラックリスト方式により定義している。即ち、読み込み禁止情報テーブル３００は、読み込みが禁止されるＩ／Ｏデータを管理する。
【００３１】
一方、書き込み許可情報テーブル４００は、アクセス権の設定を簡素化するため、各Ｉ／Ｏデータへの書き込みに関するアクセス権情報をいわゆるホワイトリスト方式により定義している。即ち、書き込み許可情報テーブル４００は、書き込みが許可されるＩ／Ｏデータを管理する。これら読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００の詳細については後述する。
【００３２】
図４は、図３に示す読み込み禁止情報テーブル３００の一例を示す。読み込み禁止情報テーブル３００は、その列名として、読み込み禁止情報３０１という項目を有する。読み込み禁止情報３０１には、Ｉ／Ｏモジュール１１３が保持するＩ／Ｏデータ１１４が登録される。データ処理プログラム１０７は、読み込み禁止情報３０１として登録されているＩ／Ｏデータ以外の他のＩ／Ｏデータを読み込む権限を有する。
【００３３】
図５は、図３に示す書き込み許可情報テーブル４００の一例を示す。書き込み許可情報テーブル４００は、その列名として、書き込み許可情報４０１という項目を有する。書き込み許可情報４０１には、Ｉ／Ｏモジュール１１３が保持するＩ／Ｏデータ１１４が登録される。データ処理プログラム１０７は、書き込み許可情報４０１として登録されるＩ／Ｏデータとしてデータを書き込む権限を有する。
【００３４】
図６は、図１に示す共有メモリ情報テーブル５００の一例を示す。共有メモリ情報テーブル５００は、その列名として、Ｉ／Ｏリソース情報５０１、データ型５０２、メモリ番地５０３及びデータサイズ５０４という項目を有する。Ｉ／Ｏリソース情報５０１には、Ｉ／Ｏモジュール１１３が保持するＩ／ＯリソースとしてのＩ／Ｏデータ１１４が登録される。このＩ／Ｏリソース情報５０１は、図２に示すＩ／Ｏモジュール１１３の各Ｉ／Ｏデータに対応している。データ型５０２には、Ｉ／Ｏリソースのデータ型が登録される。メモリ番地５０３には、該当するＩ／Ｏデータの共有メモリ１１０上の番地情報が登録される。データサイズ５０４には、Ｉ／Ｏデータのビット単位のデータサイズが登録される。
【００３５】
制御プログラム１０３及びデータ処理プログラム１０７は、共有メモリ情報テーブル５００を参照し、所望のＩ／ＯリソースとしてのＩ／Ｏデータのデータ型、共有メモリ１１０上の番地情報及びデータサイズを取得し、該当するＩ／Ｏリソースの情報の読み込みを実行したり該当するＩ／Ｏリソースへ情報の書き込みを実行する。
【００３６】
（１−３）動作例
図７は、Ｉ／Ｏデータ読み込み処理の一例を示すフローチャートである。このＩ／Ｏデータ読み込み処理では、データ処理プログラム１０７が、Ｉ／Ｏモジュール１１３によって保持されているＩ／Ｏデータ１１４のうちあるＩ／ＯデータＸを読み込んでいる。なお、Ｉ／ＯデータＸは、図１に示すＩ／Ｏデータ１〜Ｉ／ＯデータＮのいずれかのＩ／Ｏデータを表している。
【００３７】
まず、データ処理プログラム１０７は、データ処理プログラム実行部１０８に対して、Ｉ／ＯデータＸの読み込みを依頼する（ステップＳ６０１）。データ処理プログラム実行部１０８は、この読み込み依頼を受け取ると、当該Ｉ／ＯデータＸが読み込み禁止情報テーブル３００に登録されているか否か確認する（ステップＳ６０２）。
【００３８】
データ処理プログラム実行部１０８は、Ｉ／ＯデータＸが読み込み禁止情報テーブル３００に登録されていなければ、共有メモリ情報テーブル５００を参照してＩ／ＯデータＸに該当する共有メモリ１１０上のメモリ番地から、Ｉ／ＯデータＸを読み込み、データ処理プログラム１０７に値を返し（ステップＳ６０３）、処理を終了する。
【００３９】
一方、データ処理プログラム実行部１０８は、Ｉ／ＯデータＸが読み込み禁止情報テーブル３００に登録されていれば、データ処理プログラム１０７にアクセス権エラーを発行し（ステップＳ６０４）、処理を終了する。
【００４０】
図８は、Ｉ／Ｏデータ書き込み処理の一例を示すフローチャートである。Ｉ／Ｏデータ書き込み処理では、データ処理プログラム１０７が、Ｉ／Ｏモジュール１１３が保持するＩ／Ｏデータ１１４のうちのＩ／ＯデータＹを書き込む。
【００４１】
まず、データ処理プログラム１０７は、データ処理プログラム実行部１０８にＩ／ＯデータＹへの情報の書き込みを依頼する（ステップＳ７０１）。データ処理プログラム実行部１０８は、Ｉ／ＯデータＹが書き込み許可情報テーブル４００に含まれているか否かを判断する（ステップＳ７０２）。
【００４２】
データ処理プログラム実行部１０８は、Ｉ／ＯデータＹが書き込み許可情報テーブル４００に登録されている場合、共有メモリ情報テーブル５００を参照してＩ／ＯデータＹに該当する共有メモリ１１０のメモリ番地に情報を書き込み、データ処理プログラム１０７に値を返し（ステップＳ７０３）、処理を終了する。
【００４３】
一方、データ処理プログラム実行部１０８は、Ｉ／ＯデータＹが書き込み許可情報テーブル４００に登録されていない場合、データ処理プログラム１０７に対してアクセス権エラーを発行し（ステップＳ７０４）、処理を終了する。
【００４４】
以上のようにすると、例えば、シーケンス制御及びモーション制御の少なくとも一方の制御を実行する制御プログラム１０３と、複雑な算術演算を実施したりＳＣＡＤＡ、ＭＥＳ、クラウドシステムとの間でデータを送受信するデータ処理プログラム１０７と、を実行可能なコントローラ１０１において、両プログラム１０３，１０７の間においてＩ／Ｏリソースの情報を共有するとともに、データ処理プログラム１０７の共有データへのアクセス権を制御することにより、上記制御プログラム１０３を導入後にデータ処理プログラム１０７を追加しても、上記制御プログラム１０３の動作に影響を与えないようにすることができる。
【００４５】
（２）第２の実施の形態
図９は、第２の実施の形態におけるシステム構成の一例を示す図である。第２の実施の形態では、第１の実施の形態の構成に加えてさらに、情報制御ネットワーク９０３を介してコントローラ管理装置９０１が設けられている。このコントローラ管理装置９０１は、例えば、開発者であるユーザによって操作されるコンピュータであり、例えばコントローラ１０１におけるアクセス権限管理機能に対する操作指令を入力するための後述するアクセス権設定画面を表示する機能を有する。
【００４６】
コントローラ管理装置９０１は、アクセス権を設定可能なアクセス権設定部９０２を備える。コントローラ管理装置９０１は、有線又は無線によるネットワークとしての情報制御ネットワーク９０３を介してコントローラ１０１に接続されており、このコントローラ１０１との間で互いに情報のやり取りを行う。なお、コントローラ管理装置９０１は、通常のコンピュータとほぼ同様の構成であるため、そのハードウェア構成については図示を省略する。コントローラ１０１、バス１１２及びＩ／Ｏモジュール１１３は、第１の実施の形態におけるそれらと同様な構成であるため、説明を省略する。
【００４７】
図１０は、アクセス権設定画面１００１の画面イメージの一例を示す図である。このアクセス権設定画面１００１は、アクセス権設定部９０２によって、図示しない表示装置に表示される。
【００４８】
アクセス権設定画面１００１は、共有有無のチェックボックス１００２、アクセス権１００３、Ｉ／Ｏリソース情報１００４、設定ボタン１００５、及び、キャンセルボタン１００６を有する。
【００４９】
ユーザは、例えば開発者であり、開発環境上でアクセス権の設定を行う。このような設定に基づいて、上述した読み込み禁止情報テーブル３００や書き込み許可情報テーブル４００についてそれぞれホワイトリストやブラックリストが生成される。なお、これらホワイトリストやブラックリストは、所定の開発環境において外部からインポートするようにしても良く、仮にアクセス権エラーがあれば、例えばコンパイルエラーとすることができる。
【００５０】
このユーザは、アクセス権設定画面１００１において、アクセス権１００３に、共有されるＩ／Ｏリソース及びアクセス権を設定し、当該画面情報を基に、読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００の情報を生成する。なお、読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００は、デフォルト設定として、各Ｉ／Ｏデータについて読み出し専用に設定されていることが望ましい。このようにすると、通常時における制御には特に影響を与えないようにすることができる。
【００５１】
まず、ユーザは、コントローラ１０１に関連付けられたＩ／Ｏリソースの情報を、例えば、手動で、又は、コントローラ１０１に問い合わせて生成する。次に、ユーザは、データ処理プログラム１０７と共有されるＩ／Ｏリソースを、共有有無のチェックボックス１００２にチェックし、チェックしたＩ／Ｏリソース情報のアクセス権をアクセス権１００３に設定する。このアクセス権１００３では、「Ｒ」は読み込みのみが許可されることを表し、「Ｗ」は書き込みのみが許可されることを表し、「ＲＷ」は読み込み及び書き込みの両方が許可されることを表している。
【００５２】
以上のようにアクセス権が設定された後、ユーザが設定ボタン１００５を押下すると、アクセス権設定部９０２は、図３及び図４に示す読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００を生成する。図２０に示す入力状態において設定ボタン１００５を押下すると、読み込み禁止情報テーブル３００には、Ｉ／Ｏデータ２及びＩ／Ｏデータ７が登録される一方、書き込み許可情報テーブルにはＩ／Ｏデータ３及びＩ／Ｏデータ６が登録される。
【００５３】
以上のように登録されると、コントローラ管理装置９０１は、生成された読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００の登録内容を、情報制御ネットワーク９０３を介してコントローラ１０１に送信する。このコントローラ１０１は、これら読み込み禁止情報テーブル３００及び書き込み許可情報テーブル４００の登録内容に基づいて、既に説明済みの第１の実施の形態による手順に従って、許可されたＩ／Ｏリソースへのアクセス制御を行う。
【００５４】
上述した第１及び第２の実施の形態の構成により、ユーザは、データ処理プログラムと共有するＩ／Ｏリソース情報とアクセス制御情報の設定及びアクセス制御を行うことができる。
【００５５】
上述したＩ／Ｏリソースアクセス権情報１０９には、例えば電子署名を付与することにより、仮に改竄がなされた場合でも実行環境などにおいてこれを検知するようにしても良い。このようにすると、Ｉ／Ｏリソースアクセス権情報１０９が改竄された場合でも、改竄されたことを正確に検知することができる。
【００５６】
また、上述した各実施形態では、共有リソースとしての共有メモリ情報テーブル５００（以下、単に「共有リソース」ともいう）の隔離方法の一例として、いわゆるコンテナ技術を用いて共有リソースの隔離を実現するようにしても良い。
【００５７】
また、上述した各実施形態では、共有リソース／アクセス権の設定時に制御で使ったデータと同期するか否かを設定できるようにしても良い。このようにすると、制御で実際に用いたパラメータをデータ処理プログラム１０７で取得することができるようになる。
【００５８】
また、上述した各実施形態では、共有リソースをデータベース（例えばＫＶＳ）に記憶するようにしても良い（例えば、最新値だけでなく時系列をキーとした履歴を取得可能としても良い）。このようにすると、最新値だけでなく時系列の値群でも共有することができるようになる。
【００５９】
また、上述した各実施形態では、Ｉ／Ｏリソースアクセス権情報１０９に、値だけでなく、その代わりに、例えば属性、型のような値の意味情報を付与し、データ処理プログラム１０７の実行基盤のＡＰＩに属性を指定してアクセスなどをさせるようにしても良い。このようにすると、制御の詳細が分からなくても所望の情報を取得することができ、再利用可能な割合が向上する。
【００６０】
また、上述した各実施形態では、アクセス頻度の管理方法として、例えばデータ処理プログラム１０７の事項基盤のＡＰＩが個別のリソースのアクセスではなく、所定周期ごとの全データ一括コピー（例えばリフレッシュ処理）とするようにしても良い。このようにすると、高頻度で共有リソースにアクセスし制御に影響が及ぶ異を防止することができる。
【００６１】
（３）その他の実施形態
上記実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その趣旨を逸脱しない限り、様々な形態で実施することができる。例えば、上記実施形態では、各種プログラムの処理をシーケンシャルに説明したが、特にこれにこだわるものではない。従って、処理結果に矛盾が生じない限り、処理の順序を入れ替え又は並行動作するように構成しても良い。
【産業上の利用可能性】
【００６２】
本発明は、コントローラにおいて、共有メモリを介してＩ／Ｏリソースの情報を共有することで制御プログラムとデータ処理プログラムがそれぞれ任意の周期でＩ／Ｏリソース情報の読み書きすることを可能とするとともに、Ｉ／Ｏリソースアクセス権情報を元に、データ処理プログラム実行機能がデータ処理プログラムのＩ／Ｏリソース情報の読み込み及び書き込みを制御することによりＩ／Ｏリソース情報のアクセス権を制御可能とするコントローラ及びコントロールシステムに適用することができる。
【符号の説明】
【００６３】
１０１……コントローラ、１０２……制御プログラム実行部、１０３……制御プログラム、１０４……制御プログラム実行部、１０６……データ処理プログラム実行部、１０７……データ処理プログラム、１０８……データ処理プログラム実行部、１０９……Ｉ／Ｏリソースアクセス権情報、１１０……共有メモリ、１１１……Ｉ／Ｏ制御部、１１２……バス、１１３……Ｉ／Ｏモジュール、１１４……Ｉ／Ｏデータ、１１５……Ｉ／Ｏ制御部、３００……読み込み禁止情報テーブル、３０１……読み込み禁止情報、４００……書き込み許可情報テーブル、４０１……書き込み許可情報、５００……共有メモリ情報テーブル、５０１……Ｉ／Ｏリソース情報、５０２……データ型、５０３……メモリ番地、５０４……データサイズ、８０１……ＣＰＵ、８０２……メインメモリ、８０３……ＥＰＲＯＭ、８０４……不揮発性記憶装置、８０５……周辺制御装置、８０６……外部制御装置、８０７……ネットワークインタフェース、８０８……ＣＰＵ、８０９……メインメモリ、８１０……ＥＰＲＯＭ、８１１……外部制御装置、８１３……Ｉ／Ｏ制御装置、８１４……Ｉ／Ｏデータ１接点、８１５……Ｉ／Ｏデータ２接点、８１６……Ｉ／Ｏデータ３接点、８１７……Ｉ／Ｏデータ４接点、９０１……コントローラ管理装置、９０２……アクセス権設定部、９０３……情報制御ネットワーク、１００１……アクセス権設定画面、１００２……共有有無のチェックボックス、１００３……アクセス権、１００４……Ｉ／Ｏリソース情報。
【図１】
2018041405.tif 000003
【図２】
2018041405.tif 000004
【図３】
2018041405.tif 000005
【図４】
2018041405.tif 000006
【図５】
2018041405.tif 000007
【図６】
2018041405.tif 000008
【図７】
2018041405.tif 000009
【図８】
2018041405.tif 000010
【図９】
2018041405.tif 000011
【図１０】
2018041405.tif 000012