IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ オムロン株式会社の特許一覧

特開2024-130005サポート装置、制御方法、およびサポートプログラム
<>
  • 特開-サポート装置、制御方法、およびサポートプログラム 図1
  • 特開-サポート装置、制御方法、およびサポートプログラム 図2
  • 特開-サポート装置、制御方法、およびサポートプログラム 図3
  • 特開-サポート装置、制御方法、およびサポートプログラム 図4
  • 特開-サポート装置、制御方法、およびサポートプログラム 図5
  • 特開-サポート装置、制御方法、およびサポートプログラム 図6
  • 特開-サポート装置、制御方法、およびサポートプログラム 図7
  • 特開-サポート装置、制御方法、およびサポートプログラム 図8
  • 特開-サポート装置、制御方法、およびサポートプログラム 図9
  • 特開-サポート装置、制御方法、およびサポートプログラム 図10
  • 特開-サポート装置、制御方法、およびサポートプログラム 図11
  • 特開-サポート装置、制御方法、およびサポートプログラム 図12
  • 特開-サポート装置、制御方法、およびサポートプログラム 図13
  • 特開-サポート装置、制御方法、およびサポートプログラム 図14
  • 特開-サポート装置、制御方法、およびサポートプログラム 図15
  • 特開-サポート装置、制御方法、およびサポートプログラム 図16
  • 特開-サポート装置、制御方法、およびサポートプログラム 図17
  • 特開-サポート装置、制御方法、およびサポートプログラム 図18
  • 特開-サポート装置、制御方法、およびサポートプログラム 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024130005
(43)【公開日】2024-09-30
(54)【発明の名称】サポート装置、制御方法、およびサポートプログラム
(51)【国際特許分類】
   G05B 19/05 20060101AFI20240920BHJP
   G05B 19/045 20060101ALI20240920BHJP
【FI】
G05B19/05 A
G05B19/045
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023039463
(22)【出願日】2023-03-14
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】小川 喜明
【テーマコード(参考)】
5H220
【Fターム(参考)】
5H220AA06
5H220BB09
5H220CC06
5H220CX05
5H220DD01
5H220DD04
5H220DD07
5H220JJ12
5H220JJ38
5H220JJ41
5H220JJ53
(57)【要約】
【課題】外部装置への変数の公開に関するセキュリティを強化することが可能な技術を提供する。
【解決手段】サポート装置100は、ユーザプログラム230の実行時に生成される変数の外部装置300に対する公開設定をユーザが行うためのユーザインターフェースを提供し、ユーザインターフェースを用いてユーザが行った公開設定に基づき、公開設定情報260を生成する。制御装置200は、公開設定情報260に基づき、ユーザプログラム230の実行時に生成される変数の外部装置300に対する公開を管理する。公開設定情報260は、少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含む。ユーザインターフェースは、ユーザが少なくとも1つのロールのうちのいずれかを指定して公開設定を行うように構成されている。
【選択図】図1
【特許請求の範囲】
【請求項1】
ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポート装置であって、
前記ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供する提供部と、
前記ユーザインターフェースを用いて前記ユーザが行った前記公開設定に基づき、公開設定情報を生成する公開設定部とを備え、
前記制御装置は、前記公開設定情報に基づき、前記ユーザプログラムの実行時に生成される前記少なくとも1つの変数の前記外部装置に対する公開を管理し、
前記公開設定情報は、少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および前記少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含み、
前記ユーザインターフェースは、前記ユーザが前記少なくとも1つのロールのうちのいずれかを指定して前記公開設定を行うように構成されている、サポート装置。
【請求項2】
前記少なくとも1つのロールは、第1ロールと、前記第1ロールよりも前記外部装置に対して公開が許可される前記少なくとも1つの変数の数が多い第2ロールとを含む、請求項1に記載のサポート装置。
【請求項3】
前記第2ロールが指定されたときに前記外部装置に公開される前記少なくとも1つの変数は、前記第1ロールが指定されたときに前記外部装置に対して公開が許可される前記少なくとも1つの変数の全てを含み、かつ、前記第1ロールが指定されたときに前記外部装置に対して公開が許可される前記少なくとも1つの変数は、前記第2ロールが指定されたときに前記外部装置に対して公開が許可される前記少なくとも1つの変数の全てを含まない、請求項2に記載のサポート装置。
【請求項4】
前記ユーザプログラムは、当該ユーザプログラムに含まれるファンクションブロックの実行時に生成されるインスタンスを識別する第1識別情報を含み、
前記ファンクションブロックは、固有の第2識別情報を有し、かつ、実行時に用いる前記少なくとも1つの変数が予め定められており、
前記ユーザインターフェースは、前記ユーザが前記第1識別情報および前記第2識別情報の少なくとも1つを指定して、前記公開設定を行うように構成されている、請求項1~請求項3のいずれか1項に記載のサポート装置。
【請求項5】
前記ユーザインターフェースは、前記ユーザが指定した前記第1識別情報に対応する前記インスタンスについて、当該インスタンスに格納される前記少なくとも1つの変数の各々に対して、前記公開設定を行うように構成されている、請求項4に記載のサポート装置。
【請求項6】
前記公開設定情報は、前記第2識別情報を用いて行われた前記公開設定よりも、前記第1識別情報を用いて行われた前記公開設定を優先する情報を含む、請求項4に記載のサポート装置。
【請求項7】
前記公開設定情報は、前記第1識別情報を用いて行われた前記公開設定よりも、前記第2識別情報を用いて行われた前記公開設定を優先する情報を含む、請求項4に記載のサポート装置。
【請求項8】
前記ユーザインターフェースは、前記第1識別情報および前記第2識別情報のうち、いずれを用いて行われた前記公開設定を優先するかを選択可能に構成されている、請求項4に記載のサポート装置。
【請求項9】
ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポート装置の制御方法であって、
前記ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供するステップと、
前記ユーザインターフェースを用いて前記ユーザが行った前記公開設定に基づき、公開設定情報を生成するステップとを含み、
前記制御装置は、前記公開設定情報に基づき、前記ユーザプログラムの実行時に生成される前記少なくとも1つの変数の前記外部装置に対する公開を管理し、
前記公開設定情報は、少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および前記少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含み、
前記ユーザインターフェースは、前記ユーザが前記少なくとも1つのロールのうちのいずれかを指定して前記公開設定を行うように構成されている、制御方法。
【請求項10】
ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポートプログラムであって、
コンピュータに、
前記ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供するステップと、
前記ユーザインターフェースを用いて前記ユーザが行った前記公開設定に基づき、公開設定情報を生成するステップとを実行させ、
前記制御装置は、前記公開設定情報に基づき、前記ユーザプログラムの実行時に生成される前記少なくとも1つの変数の前記外部装置に対する公開を管理し、
前記公開設定情報は、少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および前記少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含み、
前記ユーザインターフェースは、前記ユーザが前記少なくとも1つのロールのうちのいずれかを指定して前記公開設定を行うように構成されている、サポートプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、サポート装置、制御方法、およびサポートプログラムに関し、より特定的には、ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポート装置、サポート装置の制御方法、および制御装置をサポートするサポートプログラムに関する。
【背景技術】
【0002】
様々な生産現場において、生産工程を自動化するFA(Factory Automation)システムが普及している。FAシステムは、種々の産業用の駆動機器によって構成される。産業用の駆動機器は、たとえば、ワークを移動するための移動テーブル、ワークを搬送するためのコンベア、および予め定められた目的の場所までワークを移動させるためのアームロボットなどを含む。これらの駆動機器は、PLC(Programmable Logic Controller)またはロボットコントローラなどの産業用の制御装置によって制御される。
【0003】
制御装置は、設計者などによって予め設計されたプログラム(以下、「ユーザプログラム」とも称する。)に従って、制御対象である各種の駆動機器を制御する。設計者は、制御装置をサポートするサポート装置を用いて、制御対象の駆動機器に合わせた任意のユーザプログラムを開発することができる。
【0004】
上述したような制御装置として、OPC UA(Open Platform Communications Unified Architecture)に対応した制御装置が普及しつつある。OPC UAとは、ベンダまたはOS(Operating System)の種類などに依存することなく、複数の装置間でデータの交換を実現するために定められた通信の標準規格である。OPC UAに対応した制御装置が用いられることで、外部装置は、制御装置が管理するデータに容易にアクセスすることができる。
【0005】
ここで、制御装置のユーザは、制御装置が管理するデータのうち、どのデータを公開するか、さらに、どのデータを読み出し専用にし、どのデータを実行可能にするかなどの設定(以下、「公開設定」とも称する。)を予め行う必要がある。
【0006】
この点、特開2019-159632号公報(特許文献1)には、ユーザプログラムに含まれる変数に対して予め定められた名前空間ごとに公開設定を行うように構成された開発支援装置が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2019-159632号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
特許文献1に開示された開発支援装置によれば、ユーザは、ユーザプログラムに含まれる変数に対して予め定められた名前空間ごとに公開設定を行うことが可能であるが、どのユーザであっても公開された変数にアクセスして実行が可能となってしまうため、セキュリティを強化するためには、未だ改良の余地がある。
【0009】
本開示は、上述したような課題を解決することを一つの目的とし、外部装置への変数の公開に関するセキュリティを強化することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
本開示の一例に従えば、ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポート装置が提供される。サポート装置は、ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供する提供部と、ユーザインターフェースを用いてユーザが行った公開設定に基づき、公開設定情報を生成する公開設定部とを備える。制御装置は、公開設定情報に基づき、ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開を管理する。公開設定情報は、少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含む。ユーザインターフェースは、ユーザが少なくとも1つのロールのうちのいずれかを指定して公開設定を行うように構成されている。
【0011】
この開示によれば、ユーザは、少なくとも1つのロールのうちのいずれかを指定して、外部装置による少なくとも1つの変数の読み出しを許可するか否か、および外部装置による少なくとも1つの変数の実行を許可するか否かのうちの少なくとも1つを設定することができるため、外部装置への変数の公開に関するセキュリティを強化することができる。
【0012】
上述の開示において、少なくとも1つのロールは、第1ロールと、第1ロールよりも外部装置に対して公開が許可される少なくとも1つの変数の数が多い第2ロールとを含む。
【0013】
この開示によれば、ユーザは、第1ロールと、第1ロールよりも外部装置に公開される少なくとも1つの変数の数が多い第2ロールとのうちのいずれかを指定して、外部装置による少なくとも1つの変数の読み出しを許可するか否か、および外部装置による少なくとも1つの変数の実行を許可するか否かのうちの少なくとも1つを設定することができるため、外部装置への変数の公開に関するセキュリティを強化することができる。
【0014】
上述の開示において、第2ロールが指定されたときに外部装置に公開される少なくとも1つの変数は、第1ロールが指定されたときに外部装置に対して公開が許可される少なくとも1つの変数の全てを含み、かつ、第1ロールが指定されたときに外部装置に対して公開が許可される少なくとも1つの変数は、第2ロールが指定されたときに外部装置に対して公開が許可される少なくとも1つの変数の全てを含まない。
【0015】
この開示によれば、ユーザは、第1ロールを指定することで、少なくとも1つの変数の全てを外部装置に公開する一方で、第2ロールを指定することで、少なくとも1つの変数の全てを外部装置に公開しないようにすることができる。
【0016】
上述の開示において、ユーザプログラムは、当該ユーザプログラムに含まれるファンクションブロックの実行時に生成されるインスタンスを識別する第1識別情報を含む。ファンクションブロックは、固有の第2識別情報を有し、かつ、実行時に用いる少なくとも1つの変数が予め定められている。ユーザインターフェースは、ユーザが第1識別情報および第2識別情報の少なくとも1つを指定して、公開設定を行うように構成されている。
【0017】
この開示によれば、ユーザは、ファンクションブロックの実行時に生成されるインスタンスを識別する第1識別情報を用いた変数の公開設定と、ファンクションブロック固有の第2識別情報を用いた変数の公開設定とのうち、少なくとも1つを指定して、外部装置への変数の公開設定を効率よく設定することができる。
【0018】
上述の開示において、ユーザインターフェースは、ユーザが指定した第1識別情報に対応するインスタンスについて、当該インスタンスに格納される少なくとも1つの変数の各々に対して、公開設定を行うように構成されている。
【0019】
この開示によれば、ユーザは、指定した第1識別情報に対応するインスタンスに格納される少なくとも1つの変数の各々に対しても公開設定を行うことができるため、外部装置への変数の公開設定をさらに詳細に効率よく設定することができる。
【0020】
上述の開示において、公開設定情報は、第2識別情報を用いて行われた公開設定よりも、第1識別情報を用いて行われた公開設定を優先する情報を含む。
【0021】
この開示によれば、ユーザは、インスタンスを識別する第1識別情報を用いた変数の公開設定を、ファンクションブロック固有の第2識別情報を用いた変数の公開設定よりも優先させることができるため、インスタンスにおける変数の公開設定と、ファンクションブロックにおける変数の公開設定とが矛盾することを回避することができる。
【0022】
上述の開示において、公開設定情報は、第1識別情報を用いて行われた公開設定よりも、第2識別情報を用いて行われた公開設定を優先する情報を含む。
【0023】
この開示によれば、ユーザは、インスタンスを識別する第1識別情報を用いた変数の公開設定よりも、ファンクションブロック固有の第2識別情報を用いた変数の公開設定を優先させることができるため、インスタンスにおける変数の公開設定と、ファンクションブロックにおける変数の公開設定とが矛盾することを回避することができる。
【0024】
上述の開示において、ユーザインターフェースは、第1識別情報および第2識別情報のうち、いずれを用いて行われた公開設定を優先するかを選択可能に構成されている。
【0025】
この開示によれば、ユーザは、インスタンスを識別する第1識別情報を用いた変数の公開設定と、ファンクションブロック固有の第2識別情報を用いた変数の公開設定とのうち、いずれを優先させるか選択することができるため、インスタンスにおける変数の公開設定と、ファンクションブロックにおける変数の公開設定とが矛盾することを、優先度を考慮して回避することができる。
【0026】
本開示の別の一例に従えば、ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポート装置の制御方法が提供される。制御方法は、ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供するステップと、ユーザインターフェースを用いてユーザが行った公開設定に基づき、公開設定情報を生成するステップとを含む。制御装置は、公開設定情報に基づき、ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開を管理する。公開設定情報は、少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含む。ユーザインターフェースは、ユーザが少なくとも1つのロールのうちのいずれかを指定して公開設定を行うように構成されている。
【0027】
この開示によれば、ユーザは、少なくとも1つのロールのうちのいずれかを指定して、外部装置による少なくとも1つの変数の読み出しを許可するか否か、および外部装置による少なくとも1つの変数の実行を許可するか否かのうちの少なくとも1つを設定することができるため、外部装置への変数の公開に関するセキュリティを強化することができる。
【0028】
本開示の別の一例に従えば、ユーザプログラムに従って制御対象を制御する制御装置をサポートするサポートプログラムが提供される。サポートプログラムは、コンピュータに、ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供するステップと、ユーザインターフェースを用いてユーザが行った公開設定に基づき、公開設定情報を生成するステップとを実行させる。制御装置は、公開設定情報に基づき、ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開を管理する。公開設定情報は、少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および少なくとも1つのロールに応じて外部装置による少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含む。ユーザインターフェースは、ユーザが少なくとも1つのロールのうちのいずれかを指定して公開設定を行うように構成されている。
【0029】
この開示によれば、ユーザは、少なくとも1つのロールのうちのいずれかを指定して、外部装置による少なくとも1つの変数の読み出しを許可するか否か、および外部装置による少なくとも1つの変数の実行を許可するか否かのうちの少なくとも1つを設定することができるため、外部装置への変数の公開に関するセキュリティを強化することができる。
【図面の簡単な説明】
【0030】
図1】実施の形態に係るサポート装置が適用される制御システムの一例を示す図である。
図2】ファンクションブロック(FB定義)のインスタンス化の一例を示す図である。
図3】制御装置のハードウェア構成の一例を示す図である。
図4】サポート装置のハードウェア構成の一例を示す図である。
図5】外部装置のハードウェア構成の一例を示す図である。
図6】サポート装置、制御装置、駆動機器、および外部装置の各々の処理の流れを示すシーケンス図である。
図7】サポート装置が提供するユーザインターフェースである開発画面の一例を示す図である。
図8】サポート装置が提供するユーザインターフェースであるユーザ設定画面の一例を示す図である。
図9】サポート装置が提供するユーザインターフェースであるユーザ設定画面の一例を示す図である。
図10】サポート装置が提供するユーザインターフェースである公開設定画面の一例を示す図である。
図11】サポート装置が提供するユーザインターフェースである公開設定画面の一例を示す図である。
図12】ロールごとのアクセス権限の一例を示す図である。
図13】ロールごとのアクセス権限の一例を示す図である。
図14】サポート装置が提供するユーザインターフェースである公開設定画面の一例を示す図である。
図15】サポート装置が提供するユーザインターフェースである公開設定画面の変形例を示す図である。
図16】サポート装置が提供するユーザインターフェースである公開設定画面の変形例を示す図である。
図17】サポート装置が提供するユーザインターフェースである公開設定画面の変形例を示す図である。
図18】サポート装置が提供するユーザインターフェースである公開設定画面の変形例を示す図である。
図19】サポート装置が提供するユーザインターフェースである公開設定画面の変形例を示す図である。
【発明を実施するための形態】
【0031】
本開示の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0032】
<A.適用例>
図1を参照しながら、本開示のサポート装置100が適用される場面の一例について説明する。図1は、実施の形態に係るサポート装置100が適用される制御システム1の一例を示す図である。制御システム1は、生産工程を自動化するFAシステムである。図1に示すように、制御システム1は、制御装置200と、制御装置200の制御対象である駆動機器400と、制御装置200との間でデータを遣り取りする外部装置300と、制御装置200をサポートするサポート装置100とを備える。
【0033】
制御装置200は、制御対象を制御するためのユーザプログラム230を実行するPLCなどの装置である。制御装置200は、制御系ネットワーク10を介して、駆動機器400と通信可能に接続されている。制御系ネットワーク10には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、およびCompoNet(登録商標)などが知られている。なお、制御装置200は、制御系ネットワーク10として、リモートI/O(Input/Output)装置またはI/Oユニットを介して、駆動機器400と通信可能に接続されてもよい。
【0034】
制御装置200は、情報系ネットワーク20を介して、外部装置300と通信可能に接続されている。情報系ネットワーク20は、たとえば、ベンダまたはOS(Operating System)の種類などに依存することなくデータ交換を実現することができる通信規格に従ったネットワークであることが好ましい。このような通信規格としては、たとえば、OPC UAなどが知られている。なお、情報系ネットワーク20に採用される通信規格は、OPC UAに限定されるわけではない。たとえば、情報系ネットワーク20は、特定のベンダまたはOS特有の通信規格に従ったネットワークであってもよい。
【0035】
情報系ネットワーク20がOPC UAに従ったネットワークである場合、制御装置200は、OPC UAサーバとして機能し、外部装置300は、OPC UAクライアントとして機能する。このようなOPC UAに対応する制御システム1においては、OPC UAクライアントである外部装置300は、OPC UAサーバである制御装置200が管理するデータに容易にアクセスすることができる。このような制御システム1が提供するサービスを、以下では、「ネットワーク公開サービス」とも称する。
【0036】
制御装置200は、USB(Universal Serial Bus)接続などを介して、サポート装置100と通信可能に接続されている。
【0037】
駆動機器400は、生産工程を自動化するための種々の産業用機器を含む。駆動機器400は、たとえば、ロボット401Aを制御するロボットコントローラ400Aと、サーボモータ401Bを制御するサーボドライバ400Bと、様々なデータを収集するセンサ400Cとを含む。これらの駆動機器400は、制御系ネットワーク10を介して、制御装置200によって制御される。
【0038】
外部装置300は、情報系ネットワーク20を介して、制御装置200が管理するデータを取得する。外部装置300は、たとえば、HMI(Human Machine Interface)、ノート型またはデスクトップ型のPC(Personal Computer)、スマートフォン、タブレット端末、または表示機能を有するその他の情報処理装置を含む。図1においては、外部装置300として、HMI300AおよびHMI300Bが例示されている。なお、外部装置300は、HMIなどの表示機能を有する情報処理装置に限らず、制御装置200とは別の他の制御装置(PLCなど)であってもよい。たとえば、制御システム1は、複数の制御装置200が通信可能に接続されることで、複数の制御装置200の各々が管理するデータを複数の制御装置200の間で遣り取りするように構成されてもよい。
【0039】
サポート装置100は、たとえば、ノート型またはデスクトップ型のPC、スマートフォン、タブレット端末、または制御装置200用のユーザプログラム230を開発することが可能なその他の情報処理装置である。サポート装置100には、開発ツール150がインストールされ得る。開発ツール150は、制御装置200をサポートするためのアプリケーションであり、後述するサポートプログラム130を実行することで実現される。開発ツール150は、ユーザプログラム230を開発するためのユーザインターフェースを設計者に提供する。開発ツール150の一例としては、オムロン社製の「Sysmac Studio」が挙げられる。設計者は、開発ツール150が提供するユーザインターフェースを用いてユーザプログラム230を開発し、開発したユーザプログラム230を制御装置200にインストールすることができる。たとえば、ユーザプログラム230は、サポート装置100によってコンパイルされた実行形式のファイルとして制御装置200に送信される。
【0040】
上述したように構成された制御システム1において、ユーザは、セキュリティのために、外部装置300に対して制御装置200が管理するデータを公開するか否かの設定(公開設定)を予め行う必要がある。「ユーザ」は、ユーザプログラム230の設計者、制御システム1の使用者、または制御システム1の管理者などを含む。「公開」は、変数の読み出しと変数への書き込みの少なくとも1つを含む。制御装置200が管理するデータは、ユーザプログラム230の実行時に生成されるインスタンスに格納される少なくとも1つの変数を含む。
【0041】
「変数」は、制御装置200がユーザプログラム230の実行中に使用する、任意の数値または文字列を表現する概念である。「変数」という用語は、常に値が変化しない定数の対語として用いられる。また、「変数」は、外部との間で遣り取りした入出力データまたは内部処理時の一時データそのものに限らず、当該入出力データまたは当該一時データなどを格納する入れ物(メモリ領域)であるとも言える。
【0042】
ユーザプログラム230は、任意のプログラミング言語で記述され得る。たとえば、ユーザプログラム230は、ラダーダイアグラム(LD:Ladder Diagram)、命令リスト(IL:Instruction List)、構造化テキスト(ST:Structured Text)、およびシーケンシャルファンクションチャート(SFC:Sequential Function Chart)の少なくとも1つを用いて規定される。ユーザプログラム230は、JavaScript(登録商標)またはC言語のような汎用的なプログラミング言語で規定されてもよい。
【0043】
実施の形態に係るユーザプログラム230は、制御装置200の一例であるPLCのプログラミングに関する標準規格である「IEC61131-3」に従って作成され、POU(Program Organization Unit)と称されるプログラム構成単位で構成される。ユーザプログラム230は、POUの構成要素として、ファンクションブロック(以下、「FB」とも称する。)を含む。
【0044】
「ファンクションブロック」は、ユーザプログラム230内で繰り返し使用される機能が部品化されたものである。より具体的には、ファンクションブロックは、タイマまたはカウンタなど、制御対象である駆動機器400の状態に応じて同じ入力変数に対して出力変数が異なる場合がある部品(たとえば、型)を作成するときに使用するPOUである。ファンクションブロックにおいては、当該ファンクションブロックの実行時に用いられる少なくとも1つの変数が予め定められている。「少なくとも1つの変数」は、たとえば、入力変数、出力変数、入出力変数、および内部変数などを含む。入力変数は、ファンクションブロックに入力される入力データとしてファンクションブロック内で使用される変数である。出力変数は、ファンクションブロックから出力される出力データとしてファンクションブロック内で使用される変数である。入出力変数は、ファンクションブロックに対する入出力データとしてファンクションブロック内で使用される変数である。内部変数は、ファンクションブロック内における一時的なデータ格納用の変数である。
【0045】
型として予め準備されたファンクションブロックは、FB定義とも称される。ファンクションブロック(FB定義)は、ユーザプログラム230において配置された時点で、インスタンスとして、ユーザプログラム230上で個別に扱われるようになり、ユーザプログラム230上で実際に動作可能になる。通常、「ファンクションブロック」という用語は、型を意味するファンクションブロック(FB定義)と、ユーザプログラム230に組み込まれてインスタンス化されたファンクションブロックとの両方を含むが、実施の形態においては、「ファンクションブロック」は、型を意味するファンクションブロック(FB定義)を指す用語として扱われる。
【0046】
図2を参照しながら、ファンクションブロック(FB定義)のインスタンス化について説明する。図2は、ファンクションブロック(FB定義)のインスタンス化の一例を示す図である。図2に示すように、FB1(FB定義)は、少なくとも1つの変数(Var1,Var2,…)が予め定められている。このようなFB1(FB定義)は、ユーザプログラム230において配置されることで、インスタンス1に対応するFB1、およびインスタンス2に対応するFB1として、ユーザプログラム230上で個別に扱われる。
【0047】
「インスタンス」は、ファンクションブロック(FB定義)をユーザプログラム230上に配置したものである。ユーザプログラム230上で規定された各インスタンスは、個別のメモリ領域を使用する。ユーザは、ユーザプログラム230上において、1つのファンクションブロック(FB定義)をベースにして複数のインスタンスを生成することにより、ユーザプログラム230に従って、同一機能で異なる入出力データの処理を制御装置200に実行させることができる。
【0048】
図2に示すように、ファンクションブロック(FB定義)は、識別情報として固有の「名前空間」を有する。たとえば、ファンクションブロック(FB定義)は、名前空間として「FB1」が対応付けられている。また、インスタンスは、識別情報として固有の「インスタンス名」を有する。たとえば、インスタンス1に対応するFB1は、インスタンス名として「FB1インスタンス1」が対応付けられ、インスタンス2に対応するFB1は、インスタンス名として「FB1インスタンス2」が対応付けられている。
【0049】
図1に戻り、制御装置200は、変数空間210と、アドレス空間220と、ユーザプログラム230と、通信管理プログラム240と、ユーザ設定情報250と、公開設定情報260とを備える。これらの情報は、後述する制御装置200の記憶装置202に格納されている。
【0050】
変数空間210は、ユーザプログラム230の実行時に生成される少なくとも1つの変数を含むメモリ領域である。図1の例では、変数空間210は、変数A、変数B、および変数Cなどの複数の変数を含む。これらの変数は、制御装置200がユーザプログラム230を実行して駆動機器400を制御する過程で更新され得る。
【0051】
アドレス空間220は、変数空間210に格納される少なくとも1つの変数のそれぞれに対応する少なくとも1つの変数ノードのアドレスを含むメモリ領域である。図1の例では、アドレス空間220は、変数ノードA、変数ノードB、および変数ノードCの各アドレスを含む。変数ノードA、変数ノードB、および変数ノードCの各アドレスは、変数空間210に含まれる変数A、変数B、および変数Cの各変数にアクセスするための情報を含む。
【0052】
ユーザプログラム230は、制御装置200が制御対象である駆動機器400を制御するための処理が記述されたプログラムである。ユーザプログラム230は、サポート装置100によって生成されて、制御装置200にインストールされる。
【0053】
通信管理プログラム240は、制御装置200をOPC UAサーバとして機能させるためのプログラムであって、制御装置200が外部装置300からのアクセス要求に応答して公開可能な変数を外部装置300に公開するための処理が記述されている。通信管理プログラム240は、サポート装置100によって生成されて、制御装置200にインストールされる。
【0054】
ユーザ設定情報250は、外部装置300を用いて制御装置200が管理するデータ(変数など)に対してアクセス要求するユーザを管理するためのログイン情報を含む。以下では、ユーザプログラム230の設計者、制御システム1の使用者、または制御システム1の管理者などの「ユーザ」と区別するために、外部装置300を用いて制御装置200が管理するデータに対してアクセス要求するユーザを「アクセスユーザ」とも称する。なお、「ユーザ」と「アクセスユーザ」は、同一人物であってもよいし、互いに異なる人物であってもよい。制御装置200が管理するデータにアクセス可能なアクセスユーザは、ユーザ設定情報250として制御装置200に予め登録されている。ユーザ設定情報250は、サポート装置100によって生成されて、制御装置200にダウンロードされる。
【0055】
公開設定情報260は、制御装置200が管理するデータの外部装置300に対する公開設定を特定するための情報を含む。公開設定情報260は、サポート装置100によって生成されて、制御装置200にダウンロードされる。
【0056】
制御装置200は、公開管理部270を備える。公開管理部270は、通信管理プログラム240に従って、外部装置300からのアクセス要求に応答して公開可能なデータを外部装置300に公開する。たとえば、公開管理部270は、外部装置300から変数に対するアクセス要求を受けると、ユーザ設定情報250に基づき、アクセスユーザの認証を行う。公開管理部270は、ユーザ認証を正当に行った後、公開設定情報260に基づき、アクセス要求の対象である変数の公開が許可されているか否かを判定する。公開管理部270は、アクセス要求の対象である変数の公開が許可されている場合、アクセス要求の対象である変数にアクセスするためのアドレスをアドレス空間220から抽出して、要求元である外部装置300に対して当該アドレスを公開する。外部装置300は、制御装置200から取得したアドレスに基づき、要求した変数にアクセスすることが可能である。
【0057】
このように、制御システム1において、制御装置200は、外部装置300からの要求に応答して、ユーザプログラム230の実行時に生成される変数を外部装置300に公開することが可能である。さらに、制御装置200は、ユーザ設定情報に基づき、アクセスユーザの認証を行うとともに、公開設定情報に基づき、公開が許可された変数のみを外部装置300に公開することができる。
【0058】
しかしながら、変数の公開についてはセキュリティを強化することが重要である。そこで、実施の形態に係るサポート装置100は、セキュリティを強化するために、少なくとも1つのロールのうちのいずれかを指定して、少なくとも1つのロールに応じて少なくとも1つの変数の外部装置300に対する公開設定をユーザが行うように構成されている。
【0059】
具体的には、サポート装置100は、開発ツール150の機能として、提供部110と、公開設定部120とを備える。提供部110は、ユーザプログラム230の実行時に生成されるインスタンスに格納される少なくとも1つの変数の外部装置300に対する公開設定をユーザが行うためのユーザインターフェース(後述する公開設定画面)を提供する。また、当該ユーザインターフェースは、ユーザが少なくとも1つのロールのうちのいずれかを指定して、少なくとも1つの変数の外部装置300に対する公開設定を行うように構成されている。
【0060】
「公開設定」は、少なくとも1つのロールに応じて外部装置300による少なくとも1つの変数の読み出しを許可するか否かを設定すること、および少なくとも1つのロールに応じて外部装置300による少なくとも1つの変数の実行(たとえば、書き出し)を許可するか否かを設定することのうちの少なくとも1つを含む。
【0061】
「ロール」は、ユーザプログラム230の設計者、制御システム1の使用者、または制御システム1の管理者などのアクセスユーザの役割、役職、職制、または職位などを含む。実施の形態に係る制御システム1においては、「ロール」は、観察者、操作者、保全者、設計者、および管理者を含む。観察者は、制御装置200が管理するデータ(変数など)を単に観察(閲覧)する者である。操作者は、制御装置200を操作する者である。保全者は、制御システム1に含まれる制御装置200および駆動機器400などを保全する者である。設計者は、制御システム1に含まれる制御装置200および駆動機器400などを設計する者である。管理者は、制御システム1に含まれる制御装置200および駆動機器400などを管理するとともに、観察者、操作者、保全者、および設計者などを管理する者である。サポート装置100は、これら複数のロールのうち、アクセスユーザが属するロールに応じて公開設定が可能に構成されている。
【0062】
さらに、制御装置200がユーザプログラム230を実行したときに生成される変数の数は膨大であるため、各変数に対して公開設定を行うことは大変な手間である。そこで、実施の形態に係るサポート装置100は、ファンクションブロックの実行時に生成されるインスタンスを識別するインスタンス名を用いた変数の公開設定と、ファンクションブロック固有の名前空間を用いた変数の公開設定とのうち、少なくとも1つを指定して、外部装置300への変数の公開設定を設定可能に構成されている。
【0063】
具体的には、サポート装置100の提供部110によって提供されるユーザインターフェースは、ユーザがインスタンス名および名前空間の少なくとも1つを指定して、少なくとも1つの変数を外部装置300に公開するか否かを設定可能に構成されている。
【0064】
公開設定部120は、提供部110によって提供されたユーザインターフェース(公開設定画面)を用いたユーザの設定に基づき、公開設定情報260を生成する。公開設定情報260は、少なくとも1つのロールに応じて外部装置300による少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および少なくとも1つのロールに応じて外部装置300による少なくとも1つの変数の実行(たとえば、書き出し)を許可するか否かを設定する情報のうちの少なくとも1つを含む。公開設定部120によって生成された公開設定情報260は、制御装置200にダウンロードされる。
【0065】
このような構成を備えるサポート装置100によれば、ユーザは、少なくとも1つのロールのうちのいずれかを指定して、少なくとも1つの変数を外部装置300に公開するか否か、さらに、公開する変数のうち、どの変数を読み出し専用にし、どの変数を実行可能にするかなどを設定することができるため、外部装置300への変数の公開に関するセキュリティを強化することができる。さらに、ユーザは、インスタンス名ごと、または名前空間ごとに、外部装置300への変数の公開設定を行うことができるため、ユーザプログラム230の実行時に生成される膨大な数の変数の各々に対して公開設定を行う必要がなく、公開設定のための手間を極力省略することができる。
【0066】
<B.制御装置の構成>
図3を参照しながら、制御装置200のハードウェア構成について説明する。図3は、制御装置200のハードウェア構成の一例を示す図である。図3に示すように、制御装置200は、主な構成として、プロセッサ201と、記憶装置202と、メモリ203と、チップセット204と、制御系インターフェース205と、情報系インターフェース206と、USBコントローラ207と、記憶媒体インターフェース208とを備える。
【0067】
プロセッサ201は、各種のプログラムを実行することで、各種の処理を実行する演算主体(コンピュータ)である。プロセッサ201は、たとえば、CPU(central processing unit)またはMPU(Micro-processing unit)などで構成されている。なお、プロセッサ201は、プログラムを実行することによって各種の処理を実行する機能を有するが、これらの機能の一部または全部を、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)などの専用のハードウェア回路を用いて実装してもよい。プロセッサ201は、CPUまたはMPUのようにストアードプログラム方式で処理を実行する狭義のプロセッサに限らず、ASICまたはFPGAなどのハードワイヤード回路を含み得る。このため、プロセッサ201は、コンピュータ読み取り可能なコードおよび/またはハードワイヤード回路によって予め処理が定義されている、処理回路(processing circuitry)と読み替えることもできる。なお、プロセッサ201は、1チップで構成されてもよいし、複数のチップで構成されてもよい。さらに、プロセッサ201および関連する処理回路は、ローカルエリアネットワークまたは無線ネットワークなどを介して、有線または無線で相互接続された複数のコンピュータで構成されてもよい。プロセッサ201および関連する処理回路は、入力データに基づきリモートで演算し、その演算結果を離れた位置にある他のデバイスへと出力するような、クラウドコンピュータで構成されてもよい。
【0068】
記憶装置202は、プロセッサ201が実行する各種のプログラムまたは各種のデータなどを記憶する。記憶装置202は、1または複数の非一時的コンピュータ可読媒体(non-transitory computer readable medium)であってもよいし、1または複数のコンピュータ読み取り可能な記憶媒体(computer readable storage medium)であってもよい。記憶装置202の一例としては、HDD(Hard Disk Drive)およびSSD(Solid State Drive)などが挙げられる。実施の形態に係る制御装置200において、記憶装置202は、変数空間210と、アドレス空間220と、ユーザプログラム230と、通信管理プログラム240と、ユーザ設定情報250と、公開設定情報260とを記憶する。
【0069】
メモリ203は、プロセッサ201が各種のプログラムを実行するにあたって、プログラムコードやワークメモリなどを一時的に格納する揮発性の記憶領域(たとえば、ワーキングエリア)を含む。メモリ203の一例としては、DRAM(dynamic random access memory)およびSRAM(static random access memory)などの揮発性メモリ、または、ROM(Read Only Memory)およびフラッシュメモリなどの不揮発性メモリが挙げられる。
【0070】
チップセット204は、制御装置200を構成する各装置間におけるデータの遣り取りを管理および処理するための中継機能を有する。
【0071】
制御系インターフェース205は、制御装置200と駆動機器400との間のデータの遣り取りを仲介するインターフェースである。
【0072】
情報系インターフェース206は、制御装置200と外部装置300との間のデータの遣り取りを仲介するインターフェースである。
【0073】
USBコントローラ207は、制御装置200とサポート装置100との間のデータの遣り取りを仲介するインターフェースである。
【0074】
記憶媒体インターフェース208は、記憶媒体209を着脱可能に構成されており、ユーザプログラム230、通信管理プログラム240、ユーザ設定情報250、および公開設定情報260などの各種のデータを制御装置200が記憶媒体209に対して書き込み、または、当該各種のデータを制御装置200が記憶媒体209から読み出すためのインターフェースである。なお、記憶媒体209は、メモリカード、リムーバブルディスク、またはUSBメモリなど、1または複数の非一時的コンピュータ可読媒体(non-transitory computer readable medium)であってもよいし、1または複数のコンピュータ読み取り可能な記憶媒体(computer readable storage medium)であってもよい。
【0075】
<C.サポート装置の構成>
図4を参照しながら、サポート装置100のハードウェア構成について説明する。図4は、サポート装置100のハードウェア構成の一例を示す図である。図4に示すように、サポート装置100は、主な構成として、プロセッサ101と、記憶装置102と、メモリ103と、バス104と、表示部105と、入力部106と、USBコントローラ107と、記憶媒体インターフェース108とを備える。
【0076】
プロセッサ101は、各種のプログラムを実行することで、各種の処理を実行する演算主体(コンピュータ)である。プロセッサ101は、たとえば、CPUまたはMPUなどで構成されている。なお、プロセッサ101は、プログラムを実行することによって各種の処理を実行する機能を有するが、これらの機能の一部または全部を、ASICまたはFPGAなどの専用のハードウェア回路を用いて実装してもよい。プロセッサ101は、CPUまたはMPUのようにストアードプログラム方式で処理を実行する狭義のプロセッサに限らず、ASICまたはFPGAなどのハードワイヤード回路を含み得る。このため、プロセッサ101は、コンピュータ読み取り可能なコードおよび/またはハードワイヤード回路によって予め処理が定義されている、処理回路(processing circuitry)と読み替えることもできる。なお、プロセッサ101は、1チップで構成されてもよいし、複数のチップで構成されてもよい。さらに、プロセッサ101および関連する処理回路は、ローカルエリアネットワークまたは無線ネットワークなどを介して、有線または無線で相互接続された複数のコンピュータで構成されてもよい。プロセッサ101および関連する処理回路は、入力データに基づきリモートで演算し、その演算結果を離れた位置にある他のデバイスへと出力するような、クラウドコンピュータで構成されてもよい。
【0077】
記憶装置102は、プロセッサ101が実行する各種のプログラムまたは各種のデータなどを記憶する。記憶装置102は、1または複数の非一時的コンピュータ可読媒体(non-transitory computer readable medium)であってもよいし、1または複数のコンピュータ読み取り可能な記憶媒体(computer readable storage medium)であってもよい。記憶装置102の一例としては、HDDおよびSSDなどが挙げられる。実施の形態に係るサポート装置100において、記憶装置102は、サポートプログラム130を記憶する。
【0078】
メモリ103は、プロセッサ101が各種のプログラムを実行するにあたって、プログラムコードやワークメモリなどを一時的に格納する揮発性の記憶領域(たとえば、ワーキングエリア)を含む。メモリ103の一例としては、DRAMおよびSRAMなどの揮発性メモリ、または、ROMおよびフラッシュメモリなどの不揮発性メモリが挙げられる。
【0079】
バス104は、サポート装置100を構成する各装置間におけるデータの遣り取りを管理および処理するための中継機能を有する。
【0080】
表示部105は、たとえば、ディスプレイである。なお、表示部105は、サポート装置100とディスプレイとの間のデータの遣り取りを仲介するように構成されたディスプレイを接続するためのインターフェースであってもよい。すなわち、サポート装置100は、構成としてディスプレイを備えていてもよいし、ディスプレイと別体であってもよい。
【0081】
入力部106は、たとえば、キーボードまたはマウスなどの周辺機器である。なお、入力部106は、サポート装置100と周辺機器との間のデータの遣り取りを仲介するように構成された周辺機器を接続するためのインターフェースであってもよい。すなわち、サポート装置100は、構成としてキーボードまたはマウスなどの周辺機器を備えていてもよいし、周辺機器と別体であってもよい。
【0082】
USBコントローラ107は、サポート装置100と制御装置200との間のデータの遣り取りを仲介するインターフェースである。
【0083】
記憶媒体インターフェース108は、記憶媒体109を着脱可能に構成されており、サポートプログラム130などの各種のデータをサポート装置100が記憶媒体109に対して書き込み、または、当該各種のデータをサポート装置100が記憶媒体109から読み出すためのインターフェースである。なお、記憶媒体109は、メモリカード、リムーバブルディスク、またはUSBメモリなど、1または複数の非一時的コンピュータ可読媒体(non-transitory computer readable medium)であってもよいし、1または複数のコンピュータ読み取り可能な記憶媒体(computer readable storage medium)であってもよい。
【0084】
<D.外部装置の構成>
図5を参照しながら、外部装置300のハードウェア構成について説明する。図5は、外部装置300のハードウェア構成の一例を示す図である。図5に示すように、外部装置300は、主な構成として、プロセッサ301と、記憶装置302と、メモリ303と、バス304と、表示部305と、入力部306と、通信インターフェース307と、記憶媒体インターフェース308とを備える。
【0085】
プロセッサ301は、各種のプログラムを実行することで、各種の処理を実行する演算主体(コンピュータ)である。プロセッサ301は、たとえば、CPUまたはMPUなどで構成されている。なお、プロセッサ301は、プログラムを実行することによって各種の処理を実行する機能を有するが、これらの機能の一部または全部を、ASICまたはFPGAなどの専用のハードウェア回路を用いて実装してもよい。プロセッサ301は、CPUまたはMPUのようにストアードプログラム方式で処理を実行する狭義のプロセッサに限らず、ASICまたはFPGAなどのハードワイヤード回路を含み得る。このため、プロセッサ301は、コンピュータ読み取り可能なコードおよび/またはハードワイヤード回路によって予め処理が定義されている、処理回路(processing circuitry)と読み替えることもできる。なお、プロセッサ301は、1チップで構成されてもよいし、複数のチップで構成されてもよい。さらに、プロセッサ301および関連する処理回路は、ローカルエリアネットワークまたは無線ネットワークなどを介して、有線または無線で相互接続された複数のコンピュータで構成されてもよい。プロセッサ301および関連する処理回路は、入力データに基づきリモートで演算し、その演算結果を離れた位置にある他のデバイスへと出力するような、クラウドコンピュータで構成されてもよい。
【0086】
記憶装置302は、プロセッサ301が実行する各種のプログラムまたは各種のデータなどを記憶する。記憶装置302は、1または複数の非一時的コンピュータ可読媒体(non-transitory computer readable medium)であってもよいし、1または複数のコンピュータ読み取り可能な記憶媒体(computer readable storage medium)であってもよい。記憶装置302の一例としては、HDDおよびSSDなどが挙げられる。実施の形態に係る外部装置300において、記憶装置302は、通信プログラム330を記憶する。通信プログラム330は、外部装置300をOPC UAクライアントとして機能させるためのプログラムであって、外部装置300が制御装置200によって管理される変数に対してアクセスを要求するための処理が記述されている。
【0087】
メモリ303は、プロセッサ301が各種のプログラムを実行するにあたって、プログラムコードやワークメモリなどを一時的に格納する揮発性の記憶領域(たとえば、ワーキングエリア)を含む。メモリ303の一例としては、DRAMおよびSRAMなどの揮発性メモリ、または、ROMおよびフラッシュメモリなどの不揮発性メモリが挙げられる。
【0088】
バス304は、外部装置300を構成する各装置間におけるデータの遣り取りを管理および処理するための中継機能を有する。
【0089】
表示部305は、たとえば、ディスプレイである。なお、表示部305は、外部装置300とディスプレイとの間のデータの遣り取りを仲介するように構成されたディスプレイを接続するためのインターフェースであってもよい。すなわち、外部装置300は、構成としてディスプレイを備えていてもよいし、ディスプレイと別体であってもよい。
【0090】
入力部306は、たとえば、キーボードまたはマウスなどの周辺機器である。なお、入力部306は、外部装置300と周辺機器との間のデータの遣り取りを仲介するように構成された周辺機器を接続するためのインターフェースであってもよい。すなわち、外部装置300は、構成としてキーボードまたはマウスなどの周辺機器を備えていてもよいし、周辺機器と別体であってもよい。
【0091】
通信インターフェース307は、外部装置300と制御装置200との間のデータの遣り取りを仲介するインターフェースである。
【0092】
記憶媒体インターフェース308は、記憶媒体309を着脱可能に構成されており、通信プログラム330などの各種のデータを外部装置300が記憶媒体309に対して書き込み、または、当該各種のデータを外部装置300が記憶媒体309から読み出すためのインターフェースである。なお、記憶媒体309は、メモリカード、リムーバブルディスク、またはUSBメモリなど、1または複数の非一時的コンピュータ可読媒体(non-transitory computer readable medium)であってもよいし、1または複数のコンピュータ読み取り可能な記憶媒体(computer readable storage medium)であってもよい。
【0093】
<E.シーケンスフロー>
図6を参照しながら、サポート装置100、制御装置200、駆動機器400、および外部装置300の各々の処理の流れについて説明する。図6は、サポート装置100、制御装置200、駆動機器400、および外部装置300の各々の処理の流れを示すシーケンス図である。図6に示すサポート装置100の各STEP(以下、「S」で示す。)は、プロセッサ101がサポートプログラム130を実行することで実現される。図6に示す制御装置200の各STEPは、プロセッサ201がユーザプログラム230および通信管理プログラム240を実行することで実現される。図6に示す外部装置300の各STEPは、プロセッサ301が通信プログラム330を実行することで実現される。
【0094】
図6に示すように、サポート装置100は、開発画面を表示するための操作を受け付けると、表示部105に開発画面を表示する(S11)。詳しくは図7を用いて後述するが、ユーザは、開発画面を用いて、ユーザプログラム230を開発する。サポート装置100は、ユーザプログラム230をコンパイルして、実行形式のファイルとして制御装置200に送信する(S12)。
【0095】
制御装置200は、サポート装置100から送信されたユーザプログラム230を受信すると、ユーザプログラム230を記憶装置202に記憶する(S21)。
【0096】
サポート装置100は、ユーザ設定画面を表示するための操作を受け付けると、表示部105にユーザ設定画面を表示する(S13)。詳しくは図8および図9を用いて後述するが、ユーザは、ユーザ設定画面を用いて、特定の人物をネットワーク公開サービスのアクセスユーザとして登録するとともに、アクセスユーザに対してロールを割り当てることができる。サポート装置100は、ユーザ設定画面の入力内容に基づき、ユーザ設定情報250を生成する(S14)。サポート装置100は、ユーザ設定情報250を制御装置200に送信する(S15)。
【0097】
制御装置200は、サポート装置100から送信されたユーザ設定情報250を受信すすると、ユーザ設定情報250を記憶装置202に記憶する(S22)。
【0098】
サポート装置100は、公開設定画面を表示するための操作を受け付けると、表示部105に公開設定画面を表示する(S16)。詳しくは図10図14を用いて後述するが、ユーザは、公開設定画面を用いて、制御装置200が管理するデータ(変数など)の外部装置300に対する公開設定に関する情報を入力する。サポート装置100は、公開設定画面の入力内容に基づき、公開設定情報260を生成する(S17)。サポート装置100は、公開設定情報260を制御装置200に送信する(S18)。
【0099】
制御装置200は、サポート装置100から送信された公開設定情報260を受信すると、公開設定情報260を記憶装置202に記憶する(S23)。
【0100】
制御装置200は、ユーザプログラム230の実行命令を受け付けると、ユーザプログラム230を実行して、駆動機器400を制御する。ユーザプログラム230がサイクリック実行型のプログラムである場合、制御装置200は、予め定められた制御周期ごとにユーザプログラム230に含まれる命令群を繰り返し実行する。より具体的には、制御装置200は、ユーザプログラム230の先頭行から最終行までを1制御周期で実行し、その次の制御周期で再びユーザプログラム230の先頭行から最終行までを1制御周期で実行する。制御装置200は、制御周期ごとに指令値を生成し、当該指令値を駆動機器400に出力する。
【0101】
上述したように制御装置200がユーザプログラム230を実行して駆動機器400を制御することによって、ユーザプログラム230によって予め定められた各インスタンスに変数が格納される。
【0102】
アクセスユーザがユーザプログラム230の実行時に生成された変数にアクセスする場合、外部装置300は、アクセスユーザによって入力されたログイン情報を受け付ける(S31)。
【0103】
制御装置200は、外部装置300に入力されたログイン情報を受信すると、当該ログイン情報とユーザ設定情報250に含まれるログイン情報とを照合し、照合の結果、外部装置300に入力されたログイン情報とユーザ設定情報250に含まれるログイン情報とが一致する場合に、アクセスユーザの認証が正当であると判断する。
【0104】
アクセスユーザがアクセスを希望する変数を特定する場合、外部装置300は、アクセスユーザによって入力された変数を特定するための情報を受け付ける(S33)。外部装置300は、アクセスユーザによって指定された変数について、制御装置200にアクセスを要求する(S34)。
【0105】
制御装置200は、外部装置300からアクセス要求を受け付けると、公開設定情報260に基づき、アクセス要求の対象である変数のアクセスユーザに対する公開が許可されているか否かを判定する(S25)。制御装置200は、アクセス要求の対象である変数のアクセスユーザに対する公開が許可されていない場合(S25でNO)、アクセス要求の対象である変数をアクセスユーザに対して公開することなく、次の処理に移行する。一方、制御装置200は、アクセス要求の対象である変数のアクセスユーザに対する公開が許可されている場合(S25でYES)、アクセス要求の対象である変数を外部装置300に公開するために、アクセス要求の対象である変数にアクセスするためのアドレスを外部装置300に送信する(S26)。
【0106】
外部装置300は、制御装置200から受信したアドレスに基づき、アクセス要求の対象である変数を表示部305に表示する(S34)。
【0107】
このように、制御装置200は、アクセスユーザからの変数のアクセス要求があった場合、サポート装置100によって設定された公開設定に基づき当該変数の公開が許可されていることを条件に、当該変数をアクセスユーザに公開することができる。
【0108】
<F.ユーザプログラムの開発画面>
図7を参照しながら、ユーザプログラム230の開発画面151について説明する。図7は、サポート装置100が提供するユーザインターフェースである開発画面の一例を示す図である。
【0109】
ユーザプログラム230は、ラダーダイアグラムで記述されている。ユーザは、開発画面151において、任意のファンクションブロックを組み合わせたり、変数またはファンクションブロックの入出力関係を規定することで、制御対象の駆動機器400に対応するユーザプログラム230を設計することができる。
【0110】
ユーザプログラム230は、少なくとも1つのファンクションブロックを含む。たとえば、図7に示すように、ユーザプログラム230は、名前空間として「FB1」が付されたファンクションブロック(FB定義)と、名前空間として「FB2」が付されたファンクションブロック(FB定義)とを含む。FB1は、インスタンス1に対応するFB1と、インスタンス2に対応するFB1として、ユーザプログラム230に規定されている。インスタンス1に対応するFB1には、インスタンス名として「FB1インスタンス1」が付されている。インスタンス2に対応するFB1には、インスタンス名として「FB2インスタンス1」が付されている。FB2は、インスタンス1に対応するFB2と、インスタンス2に対応するFB2として、ユーザプログラム230に規定されている。インスタンス1に対応するFB2には、インスタンス名として「FB2インスタンス1」が付されている。インスタンス2に対応するFB2には、インスタンス名として「FB2インスタンス2」が付されている。
【0111】
FB1インスタンス1に対応するファンクションブロックは、その入力に関連付けられている変数1に基づいて、自身の機能を実行する。FB1インスタンス1に対応するファンクションブロックの実行結果は、その出力に関連付けられている変数2に反映される。FB1インスタンス2に対応するファンクションブロックは、その入力に関連付けられている変数2に基づいて、自身の機能を実行する。FB1インスタンス2に対応するファンクションブロックの実行結果は、その出力に関連付けられている変数3に反映される。FB2インスタンス1に対応するファンクションブロックは、その入力に関連付けられている変数3に基づいて、自身の機能を実行する。FB2インスタンス1に対応するファンクションブロックの実行結果は、その出力に関連付けられている変数4に反映される。FB2インスタンス2に対応するファンクションブロックは、その入力に関連付けられている変数4に基づいて、自身の機能を実行する。FB2インスタンス2に対応するファンクションブロックの実行結果は、その出力に関連付けられている変数5に反映される。
【0112】
このように、ユーザは、開発画面151において、変数またはファンクションブロックを組み合わせることで、任意のユーザプログラム230を開発することができる。
【0113】
<G.ユーザ設定画面>
図8および図9を参照しながら、ユーザ設定画面152について説明する。図8および図9は、サポート装置100が提供するユーザインターフェースであるユーザ設定画面152の一例を示す図である。図8に示されるユーザ設定画面152は、アクセスユーザを登録するためのユーザインターフェースである。図8に示すように、ユーザ設定画面152は、入力欄1521,1522,1523と、アイコン1524,1525とを含む。
【0114】
入力欄1521は、ユーザ名を入力するための入力欄である。入力欄1522は、パスワードを入力するための入力欄である。入力欄1523は、確認用のパスワードを入力するための入力欄である。アイコン1524は、入力を確定するときに操作されるアイコンである。アイコン1525は、入力をキャンセルするときに操作されるアイコンである。
【0115】
ユーザは、ユーザ設定画面152において、ネットワーク公開サービスに登録したい特定の人物のユーザ名を入力欄1521に入力し、かつ、当該特定の人物のパスワードを入力欄1522および入力欄1523に入力した後、アイコン1524を操作する。これにより、ユーザは、ユーザ設定画面152において、特定の人物をネットワーク公開サービスのアクセスユーザとして登録することができる。
【0116】
図9に示されるユーザ設定画面152は、登録された各アクセスユーザに対してロールを割り当てるためのユーザインターフェースである。図9に示すように、ユーザ設定画面152は、選択欄1531,1532と、アイコン1533,1534とを含む。
【0117】
選択欄1531は、登録された少なくとも1つのアクセスユーザの中から、ユーザが任意のアクセスユーザを選択するための選択欄である。図9の例において、選択欄1531は、選択肢として、「ユーザA」が付されたアクセスユーザと、「ユーザB」が付されたアクセスユーザと、「ユーザC」が付されたアクセスユーザとを含む。選択欄1532は、予め定められた複数のロールの中から、ユーザが各アクセスユーザに対して任意のロールを割り当てるための選択欄である。図9の例において、選択欄1532は、選択肢として、「観察者」と、「操作者」と、「保全者」と、「設計者」と、「管理者」とを含む。なお、選択欄1532は、観察者、操作者、保全者、設計者、および管理者以外のロールが含まれてもよい。
【0118】
ユーザは、選択欄1531で示されたアクセスユーザのユーザ名を手掛かりに、各アクセスユーザに対して、選択欄1532に含まれる少なくとも1つのロールの中から一のロールをプルダウン形式で選択することができる。たとえば、図9の例では、ユーザAに対して管理者が割り当てられ、ユーザBに対して保全者が割り当てられ、ユーザCに対して操作者が割り当てられている。
【0119】
このように、ユーザは、ユーザ設定画面152を用いて、アクセスユーザを登録するとともに、登録したアクセスユーザに対してロールを割り当てることができる。
【0120】
<H.公開設定画面>
図10図14を参照しながら、公開設定画面154について説明する。図10図14は、サポート装置100が提供するユーザインターフェースである公開設定画面154の一例を示す図である。図10および図11に示すように、公開設定画面154は、アイコン1545,1548と、選択欄1543,1544,1546,1547とを含む。
【0121】
選択欄1543は、ユーザプログラム230において用いられる少なくとも1つのファンクションブロックの中から、ユーザが任意のファンクションブロックを選択するための選択欄である。図10および図11の例において、選択欄1543は、選択肢として、「FB1」が付されたファンクションブロックと、「FB2」が付されたファンクションブロックとを含む。選択欄1544は、予め定められた複数のロールの中から、ユーザが選択欄1543において選択されたファンクションブロックに対して任意のロールを割り当てるための選択欄である。図10の例において、選択欄1544は、選択肢として、「観察者」と、「操作者」と、「保全者」と、「設計者」と、「管理者」とを含む。なお、選択欄1544は、観察者、操作者、保全者、設計者、および管理者以外のロールが含まれてもよい。アイコン1545は、選択欄1543において選択されたファンクションブロックを指定するときに操作されるアイコンである。
【0122】
選択欄1546は、ユーザプログラム230において規定される少なくとも1つのインスタンスの中から、ユーザが任意のインスタンスを選択するための選択欄である。図10および図11の例において、選択欄1546は、選択肢として、「FB1インスタンス1」が付されたインスタンスと、「FB1インスタンス2」が付されたインスタンスと、「FB2インスタンス1」が付されたインスタンスと、「FB2インスタンス2」が付されたインスタンスとを含む。選択欄1547は、予め定められた複数のロールの中から、ユーザが選択欄1546において選択されたインスタンスに対して任意のロールを割り当てるための選択欄である。図11の例において、選択欄1547は、選択肢として、「観察者」と、「操作者」と、「保全者」と、「設計者」と、「管理者」とを含む。なお、選択欄1547は、観察者、操作者、保全者、設計者、および管理者以外のロールが含まれてもよい。アイコン1548は、選択欄1546において選択されたインスタンスを指定するときに操作されるアイコンである。
【0123】
ここで、図12および図13を参照しながら、ロールごとのアクセス権限について説明する。図12および図13は、ロールごとのアクセス権限の一例を示す図である。図12に示すように、ロールごとのアクセス権限は、ロールの重要度に応じて予め定められている。
【0124】
たとえば、図12に示すように、アクセスユーザに割り当てられたロールが「観察者」である場合、当該アクセスユーザに対して公開が許可される変数は、「観察者」に割り当てられた変数ノードに対応する変数である。すなわち、「観察者」であるアクセスユーザは、「観察者」がアクセス可能な変数のみにアクセス可能である。
【0125】
アクセスユーザに割り当てられたロールが「操作者」である場合、当該アクセスユーザに対して公開が許可される変数は、「観察者」および「操作者」の各々に割り当てられた変数ノードに対応する変数である。すなわち、「操作者」であるアクセスユーザは、「観察者」および「操作者」の各々がアクセス可能な変数にアクセス可能である。
【0126】
アクセスユーザに割り当てられたロールが「保全者」である場合、当該アクセスユーザに対して公開が許可される変数は、「観察者」、「操作者」、および「保全者」の各々に割り当てられた変数ノードに対応する変数である。すなわち、「保全者」であるアクセスユーザは、「観察者」、「操作者」、および「保全者」の各々がアクセス可能な変数にアクセス可能である。
【0127】
アクセスユーザに割り当てられたロールが「設計者」である場合、当該アクセスユーザに対して公開が許可される変数は、「観察者」、「操作者」、「保全者」、および「設計者」の各々に割り当てられた変数ノードに対応する変数である。すなわち、「設計者」であるアクセスユーザは、「観察者」、「操作者」、「保全者」、および「設計者」の各々がアクセス可能な変数にアクセス可能である。
【0128】
アクセスユーザに割り当てられたロールが「管理者」である場合、当該アクセスユーザに対して公開が許可される変数は、「観察者」、「操作者」、「保全者」、「設計者」、および「管理者」の各々に割り当てられた変数ノードに対応する変数である。すなわち、「管理者」であるアクセスユーザは、「観察者」、「操作者」、「保全者」、「設計者」、および「管理者」の各々がアクセス可能な変数にアクセス可能である。
【0129】
このように、「観察者」であるアクセスユーザは、アクセス権限が付された変数の数が最も少なく、「管理者」であるアクセスユーザは、アクセス権限が付された変数の数が最も多くなっている。なお、上述した例において、「観察者」、「操作者」、「保全者」、「設計者」、および「管理者」の各々に割り当てられた変数ノードは、サポート装置100を用いてユーザが予め設定可能である。たとえば、ユーザは、サポート装置100を用いて、制御装置100が管理する少なくとも1つの変数の中から、「観察者」、「操作者」、「保全者」、「設計者」、および「管理者」の各々に対してアクセス可能な変数を割り当てることができる。
【0130】
さらに、図13に示すように、アクセスユーザに割り当てられたロールが「観察者」である場合、公開が許可された変数に対して実行可能な機能は、Browse機能である。すなわち、「観察者」であるアクセスユーザは、公開が許可された変数の名称を閲覧することのみが可能である。
【0131】
アクセスユーザに割り当てられたロールが「操作者」または「保全者」である場合、公開が許可された変数に対して実行可能な機能は、Browse機能およびRead機能である。すなわち、「操作者」または「保全者」であるアクセスユーザは、公開が許可された変数の名称を閲覧し、かつ、当該変数の値を読み出すことのみが可能である。
【0132】
アクセスユーザに割り当てられたロールが「設計者」または「管理者」である場合、公開が許可された変数に対して実行可能な機能は、Browse機能、Read機能、およびWrite機能である。すなわち、「設計者」または「管理者」であるアクセスユーザは、公開が許可された変数の名称を閲覧し、当該変数の値を読み出し、さらに当該変数に値を書き込むことが可能である。なお、変数に値を書き込むことは、変数を実行することに対応する。
【0133】
なお、図13に示すロールごとのアクセス権限は一例であり、観察者、操作者、保全者、設計者、および管理者の各々に対しては、他のアクセス権限が付与されてもよい。たとえば、観察者は、Browse機能のみが許可される一方で、操作者、保全者、設計者、および管理者は、Browse機能、Read機能、およびWrite機能の全てが許可されてもよい。あるいは、観察者、操作者、保全者、設計者、および管理者は、許可される機能が互いに異なってもよいし、許可される機能の一部または全部が共通してもよい。
【0134】
図10に示すように、ユーザは、ファンクションブロック(名前空間)を指定して公開設定を行う場合、選択欄1543に含まれる「FB1」が付されたファンクションブロックおよび「FB2」が付されたファンクションブロックの中から、一のファンクションブロックを指定して、アイコン1545を操作する。これにより、ユーザは、選択欄1543に含まれる少なくとも1つのファンクションブロックの中から一のファンクションブロックを選択することができる。
【0135】
さらに、ユーザは、選択欄1543において選択されたファンクションブロックに対して、選択欄1544に含まれる少なくとも1つのロールの中から一のロールをプルダウン形式で選択することができる。たとえば、図10の例では、「FB2」が付されたファンクションブロックに対して操作者が割り当てられている。これにより、「FB2」が付されたファンクションブロックの実行時に生成される変数のうち、操作者に対して公開が許可された変数のみの公開が、制御装置200によって許可される。すなわち、制御装置200は、公開設定情報260に基づき、操作者、保全者、設計者、および管理者の各々に対して、「FB2」が付されたファンクションブロックの実行時に生成される変数を公開するように構成される。またこの場合、制御装置200は、FB2インスタンス1およびFB2インスタンス2のいずれを実行したときでも、実行時に生成される変数をロールに応じてアクセスユーザに公開する。
【0136】
図11に示すように、ユーザは、インスタンス(インスタンス名)を指定して公開設定を行う場合、選択欄1546に含まれる「FB1インスタンス1」、「FB1インスタンス2」、「FB2インスタンス1」、および「FB2インスタンス2」の中から、一のインスタンスを指定して、アイコン1548を操作する。これにより、ユーザは、選択欄1546に含まれる少なくとも1つのインスタンスの中から一のインスタンスを選択することができる。
【0137】
さらに、ユーザは、選択欄1546において選択されたインスタンスに対して、選択欄1547に含まれる少なくとも1つのロールの中から一のロールをプルダウン形式で選択することができる。たとえば、図11の例では、FB2インスタンス1に対して管理者が割り当てられている。これにより、FB2インスタンス1の実行時に生成される変数のうち、管理者に対して公開が許可された変数のみの公開が、制御装置200によって許可される。すなわち、制御装置200は、公開設定情報260に基づき、管理者のみに対して、FB2インスタンス1の実行時に生成される変数を公開するように構成される。なお、制御装置200は、FB2インスタンス1以外のインスタンス、すなわちFB1インスタンス1、FB1インスタンス2、およびFB2インスタンス2については、個別の公開設定に応じて変数を公開するか否かを決定する。
【0138】
このように、ユーザは、ファンクションブロックおよびインスタンスの各々に対してロールを割り当てることで、アクセスユーザに対して予め定められたロールに応じて変数の公開設定を行うことができる。これにより、ユーザは、外部装置300への変数の公開に関するセキュリティを強化することができる。
【0139】
また、ユーザは、ファンクションブロック固有の名前空間を用いた変数の公開設定を行うことができるとともに、ファンクションブロックの実行時に生成されるインスタンスを識別するインスタンス名を用いて、変数の公開設定を行うことができる。これにより、ユーザは、ユーザプログラム230の実行時に生成される膨大な数の変数の各々に対して公開設定を行う必要がなく、公開設定のための手間を極力省略することができる。また、ユーザは、公開設定の時間を短縮するとともに公開設定の誤りを低減させることもできる。その結果、ユーザは、公開設定に要する労力および時間を他の高度な作業に集約させることで、開発コストを低減させることもできる。
【0140】
さらに、ユーザは、名前空間を用いて変数の公開設定を行うことで、たとえば、ファンクションブロックがどのインスタンスに対応するかを考慮することなく、自身が選択したファンクションブロックで用いられる変数に対して公開設定を行うことができる。一方、ユーザは、インスタンス名を用いて変数の公開設定を行うことで、たとえば、同じファンクションブロックで構成された複数のインスタンスのうち、自身が選択したインスタンスで用いられる変数に対してのみ公開設定を行うことができる。これにより、ユーザは、外部装置300への変数の公開設定をさらに詳細に効率よく設定することができる。
【0141】
図14に示すように、サポート装置100は、自身が指定したインスタンスについて、当該インスタンスに格納される少なくとも1つの変数の各々に対して、外部装置300に公開するか否かを設定可能に構成されていてもよい。たとえば、図14に示すように、公開設定画面154は、一のインスタンスに格納される各変数の名称を示す名称欄1551と、各変数のデータの型を示すデータ型欄1552と、ネットワーク公開の種類を示すネットワーク公開欄1553とを含む。
【0142】
ユーザが、図10および図11に示す選択欄1546において一の選択したインスタンスを選択すると、選択したインスタンスで用いられるロールに応じた少なくとも1つの変数が選択肢として名称欄1551に示される。ユーザは、名称欄1551で示された変数の名称を手掛かりに、各変数に対して、ネットワーク公開欄1553において「公開」または「非公開」をプルダウン形式で選択することができる。たとえば、図14の例では、インスタンス全体として公開が許可され、かつ管理者が割り当てられたFB2インスタンス1について、管理者がアクセス可能なVar1、Var2、およびVar3に対して「公開」が選択されている。この場合、制御装置200は、外部装置300に対して、Var1、Var2、およびVar3の公開を許可する。一方、インスタンス全体として公開が許可され、かつ管理者が割り当てられたFB2インスタンス1について、管理者がアクセス可能なVar4に対して「非公開」が選択されている。この場合、制御装置200は、アクセスユーザが管理者であっても、外部装置300に対して、Var4の公開を許可しない。
【0143】
このように、ユーザは、公開を許可したインスタンスに格納される少なくとも1つの変数の各々に対してもさらに公開設定を行うことができるため、外部装置300への変数の公開設定をさらに詳細に効率よく設定することができる。
【0144】
<I.変形例>
本開示は、上述した実施の形態に限られず、さらに種々の変形、応用が可能である。具体的には、実施の形態に係るサポート装置100は、名前空間を用いた変数の公開設定と、インスタンス名を用いた変数の公開設定とを行うことができる。このため、サポート装置100は、両者の公開設定を同時に行った場合の不都合を解消するような構成をさらに備えていてもよい。
【0145】
たとえば、ユーザが、FB2に対して操作者を割り当てた場合、操作者、保全者、設計者、または管理者が割り当てられたアクセスユーザに対して、「FB2」が付されたファンクションブロックの実行時に生成される変数が公開されるように公開設定が行われる。一方、ユーザが、FB2インスタンス1に対して管理者を割り当てた場合、管理者が割り当てられたアクセスユーザのみに対して、FB2インスタンス1の実行時に生成される変数が公開されるように公開設定が行われる。このような場合、名前空間を用いた公開設定では「FB2」が付されたファンクションブロックについて操作者、保全者、設計者、または管理者が割り当てられたアクセスユーザに対して変数の公開が許可されるのに対して、インスタンスを用いた公開設定ではFB2インスタンス1について管理者が割り当てられたアクセスユーザのみに対して変数の公開が許可されるため、両者の間で矛盾が生じ得る。
【0146】
そこで、サポート装置100は、名前空間を用いた公開設定およびインスタンスを用いた公開設定のうち、いずれかのみを設定可能に構成されてもよい。
【0147】
また、図15図17に示すように、サポート装置100は、名前空間を用いた公開設定と、インスタンスを用いた公開設定とのうち、いずれかを優先するように構成されてもよい。図15図17は、サポート装置100が提供するユーザインターフェースである公開設定画面154の変形例を示す図である。
【0148】
図15に示すように、公開設定情報260は、名前空間によって指定された変数よりも、インスタンス名によって指定された変数を優先して、外部装置300に公開するか否かを設定する情報を含んでいてもよい。このようにすれば、たとえば、名前空間を用いた公開設定では「FB2」が付されたファンクションブロックについて操作者、保全者、設計者、または管理者が割り当てられたアクセスユーザに対して変数の公開が許可されるのに対して、インスタンスを用いた公開設定ではFB2インスタンス1について管理者が割り当てられたアクセスユーザのみに対して変数の公開が許可されるような場合であっても、制御装置200は、公開設定情報260に基づき、FB2インスタンス1で用いられる変数については管理者が割り当てられたアクセスユーザのみに対して外部装置300に公開することになり、両者の間で矛盾することを回避することができる。
【0149】
図16に示すように、公開設定情報260は、インスタンス名によって指定された変数よりも、名前空間によって指定された変数を優先して、外部装置300に公開するか否かを設定する情報を含んでいてもよい。このようにすれば、たとえば、名前空間を用いた公開設定では「FB2」が付されたファンクションブロックについて操作者、保全者、設計者、または管理者が割り当てられたアクセスユーザに対して変数の公開が許可されるのに対して、インスタンスを用いた公開設定ではFB2インスタンス1について管理者が割り当てられたアクセスユーザのみに対して変数の公開が許可されるような場合であっても、制御装置200は、公開設定情報260に基づき、FB2を用いたFB2インスタンス1で用いられる変数については操作者、保全者、設計者、または管理者が割り当てられたアクセスユーザに対して外部装置300に公開することになり、両者の間で矛盾することを回避することができる。
【0150】
図17に示すように、公開設定画面154は、名前空間およびインスタンス名のうち、いずれに対応する変数を優先して外部装置300に公開するか否かをユーザが設定するための選択欄1549を含む。ユーザが、選択欄1549において、名前空間およびインスタンス名のうち、公開設定を優先する方を選択すると、サポート装置100は、ユーザによって選択された方を優先して公開設定情報260を生成する。このようにすれば、たとえば、ユーザが選択欄1549においてインスタンス名を選択した場合、制御装置200は、公開設定情報260に基づき、FB2インスタンス1で用いられる変数については管理者が割り当てられたアクセスユーザのみに対して外部装置300に公開することになり、両者の間で矛盾することを回避することができる。
【0151】
また、図18および図19に示すように、サポート装置100は、名前空間およびインスタンスの各々に対して、1つのロールに限らず、複数のロールを割り当てるように構成されてもよい。図18および図19は、サポート装置100が提供するユーザインターフェースである公開設定画面の変形例を示す図である。
【0152】
図18に示すように、ユーザは、選択欄1543において選択されたファンクションブロックに対して、選択欄1544に含まれる少なくとも1つのロールの中から複数のロールをプルダウン形式で選択することができる。たとえば、図18の例では、「FB2」が付されたファンクションブロックに対して観察者および操作者が割り当てられている。この場合、制御装置200は、公開設定情報260に基づき、観察者および操作者の各々に対して、「FB2」が付されたファンクションブロックの実行時に生成される変数を公開するように構成される。
【0153】
図19に示すように、ユーザは、選択欄1546において選択されたインスタンスに対して、選択欄1547に含まれる少なくとも1つのロールの中から複数のロールをプルダウン形式で選択することができる。たとえば、図19の例では、FB2インスタンス1に対して設計者および管理者が割り当てられている。この場合、制御装置200は、公開設定情報260に基づき、設計者および管理者の各々に対して、FB2インスタンス1の実行時に生成される変数を公開するように構成される。
【0154】
<J.付記>
以上のように、本実施の形態では以下のような開示を含む。
【0155】
(構成1)
ユーザプログラム(230)に従って制御対象を制御する制御装置(200)をサポートするサポート装置(100)であって、
前記ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置(300)に対する公開設定をユーザが行うためのユーザインターフェースを提供する提供部(110)と、
前記ユーザインターフェースを用いて前記ユーザが行った前記公開設定に基づき、公開設定情報(260)を生成する公開設定部(120)とを備え、
前記制御装置は、前記公開設定情報に基づき、前記ユーザプログラムの実行時に生成される前記少なくとも1つの変数の前記外部装置に対する公開を管理し、
前記公開設定情報は、少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および前記少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含み、
前記ユーザインターフェースは、前記ユーザが前記少なくとも1つのロールのうちのいずれかを指定して前記公開設定を行うように構成されている、サポート装置。
【0156】
(構成2)
前記少なくとも1つのロールは、第1ロールと、前記第1ロールよりも前記外部装置に対して公開が許可される前記少なくとも1つの変数の数が多い第2ロールとを含む、構成1のサポート装置。
【0157】
(構成3)
前記第2ロールが指定されたときに前記外部装置に公開される前記少なくとも1つの変数は、前記第1ロールが指定されたときに前記外部装置に対して公開が許可される前記少なくとも1つの変数の全てを含み、かつ、前記第1ロールが指定されたときに前記外部装置に対して公開が許可される前記少なくとも1つの変数は、前記第2ロールが指定されたときに前記外部装置に対して公開が許可される前記少なくとも1つの変数の全てを含まない、構成2のサポート装置。
【0158】
(構成4)
前記ユーザプログラムは、当該ユーザプログラムに含まれるファンクションブロックの実行時に生成されるインスタンスを識別する第1識別情報を含み、
前記ファンクションブロックは、固有の第2識別情報を有し、かつ、実行時に用いる前記少なくとも1つの変数が予め定められており、
前記ユーザインターフェースは、前記ユーザが前記第1識別情報および前記第2識別情報の少なくとも1つを指定して、前記公開設定を行うように構成されている、構成1~構成3のいずれかのサポート装置。
【0159】
(構成5)
前記ユーザインターフェースは、前記ユーザが指定した前記第1識別情報に対応する前記インスタンスについて、当該インスタンスに格納される前記少なくとも1つの変数の各々に対して、前記公開設定を行うように構成されている、構成4のサポート装置。
【0160】
(構成6)
前記公開設定情報は、前記第2識別情報を用いて行われた前記公開設定よりも、前記第1識別情報を用いて行われた前記公開設定を優先する情報を含む、構成4または構成5のサポート装置。
【0161】
(構成7)
前記公開設定情報は、前記第1識別情報を用いて行われた前記公開設定よりも、前記第2識別情報を用いて行われた前記公開設定を優先する情報を含む、構成4または構成5のサポート装置。
【0162】
(構成8)
前記ユーザインターフェースは、前記第1識別情報および前記第2識別情報のうち、いずれを用いて行われた前記公開設定を優先するかを選択可能に構成されている、構成4または構成5のサポート装置。
【0163】
(構成9)
ユーザプログラム(230)に従って制御対象を制御する制御装置(200)をサポートするサポート装置(100)の制御方法であって、
前記ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置(300)に対する公開設定をユーザが行うためのユーザインターフェースを提供するステップ(S16)と、
前記ユーザインターフェースを用いて前記ユーザが行った前記公開設定に基づき、公開設定情報を生成するステップ(S17)とを含み、
前記制御装置は、前記公開設定情報に基づき、前記ユーザプログラムの実行時に生成される前記少なくとも1つの変数の前記外部装置に対する公開を管理し、
前記公開設定情報は、少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および前記少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含み、
前記ユーザインターフェースは、前記ユーザが前記少なくとも1つのロールのうちのいずれかを指定して前記公開設定を行うように構成されている、制御方法。
【0164】
(構成10)
ユーザプログラム(230)に従って制御対象を制御する制御装置(200)をサポートするサポートプログラム(130)であって、
コンピュータ(101)に、
前記ユーザプログラムの実行時に生成される少なくとも1つの変数の外部装置に対する公開設定をユーザが行うためのユーザインターフェースを提供するステップ(S16)と、
前記ユーザインターフェースを用いて前記ユーザが行った前記公開設定に基づき、公開設定情報を生成するステップ(S17)とを実行させ、
前記制御装置は、前記公開設定情報に基づき、前記ユーザプログラムの実行時に生成される前記少なくとも1つの変数の前記外部装置に対する公開を管理し、
前記公開設定情報は、少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の読み出しを許可するか否かを設定する情報、および前記少なくとも1つのロールに応じて前記外部装置による前記少なくとも1つの変数の実行を許可するか否かを設定する情報のうちの少なくとも1つを含み、
前記ユーザインターフェースは、前記ユーザが前記少なくとも1つのロールのうちのいずれかを指定して前記公開設定を行うように構成されている、サポートプログラム。
【0165】
<K.利点>
実施の形態に係るサポート装置100によれば、ユーザは、少なくとも1つのロールのうちのいずれかを指定して、少なくとも1つの変数を外部装置300に公開するか否かを設定することができるため、外部装置300への変数の公開に関するセキュリティを強化することができる。
【0166】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0167】
1 制御システム、10 制御系ネットワーク、20 情報系ネットワーク、100 サポート装置、101,201,301 プロセッサ、102,202,302 記憶装置、103,203,303 メモリ、104,304 バス、105,305 表示部、106,306 入力部、107,207 USBコントローラ、108,208,308 記憶媒体インターフェース、109,209,309 記憶媒体、110 提供部、120 公開設定部、130 サポートプログラム、150 開発ツール、151 開発画面、152 ユーザ設定画面、154 公開設定画面、200 制御装置、204 チップセット、205 制御系インターフェース、206 情報系インターフェース、210 変数空間、220 アドレス空間、230 ユーザプログラム、240 通信管理プログラム、250 ユーザ設定情報、260 公開設定情報、270 公開管理部、300 外部装置、307 通信インターフェース、330 通信プログラム、400 駆動機器、400A ロボットコントローラ、400B サーボドライバ、400C センサ、401A ロボット、401B サーボモータ、1521,1522,1523 入力欄、1524,1525,1533,1534,1545,1548 アイコン、1531,1532,1543,1544,1546,1547,1549 選択欄、1551 名称欄、1552 データ型欄、1553 ネットワーク公開欄。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19