(58)【調査した分野】(Int.Cl.,DB名)
ユーザプログラムに規定される制御命令に従って制御対象の駆動機器を制御するコントローラと通信可能に構成されている開発支援装置に実行される開発支援プログラムであって、
前記開発支援プログラムは、前記開発支援装置に、前記ユーザプログラムを開発するための開発ツールを起動するステップを実行させ、前記ユーザプログラムに含まれる変数の少なくとも一部は、予め定められた名前空間に属し、
前記開発支援プログラムは、前記開発支援装置に、さらに、前記名前空間に属する変数を前記コントローラに通信接続される外部機器に公開するか否かを前記コントローラに判断させるための公開設定を前記名前空間に対応付けて受け付けるステップと、
前記開発ツールが前記ユーザプログラムの転送操作を受け付けたことに基づいて、前記ユーザプログラムと前記公開設定および前記公開設定に対応付けられた前記名前空間とを前記コントローラに転送するステップとを実行させる、開発支援プログラム。
【発明を実施するための形態】
【0025】
以下、図面を参照しつつ、本発明に従う各実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらについての詳細な説明は繰り返さない。
【0026】
<A.適用例>
図1を参照して、本発明の適用例について説明する。
図1は、制御システム1の構成例を示す図である。
【0027】
制御システム1は、生産工程を自動化するためのFAシステムである。
図1の例では、制御システム1は、1つ以上の開発支援装置100と、1つ以上のコントローラ200と、1つ以上の駆動機器300と、1つ以上の外部機器400とで構成されている。
【0028】
開発支援装置100、コントローラ200、および外部機器400は、ネットワークNW1に接続されている。ネットワークNW1には、EtherNET(登録商標)やOPC−UA(Object Linking and Embedding for Process Control Unified Architecture)などが採用される。OPC−UAは、ベンダーやOS(Operating System)の種類などに依存することなくデータ交換を実現するために定められた通信の標準規格である。OPC−UAに対応したコントローラ200が用いられることで、外部機器400は、コントローラ200内で管理されるデータ(変数)に容易にアクセスすることができる。
【0029】
開発支援装置100は、たとえば、ノート型またはデスクトップ型のPC(Personal Computer)、タブレット端末、スマートフォン、または、コントローラ200用の制御プログラムを開発することが可能なその他の情報処理装置である。外部機器400は、たとえば、HMI(Human Machine Interface)、ノート型またはデスクトップ型のPC、サーバ、タブレット端末、スマートフォン、または、その他の表示機器である。
【0030】
コントローラ200および駆動機器300は、ネットワークNW2に接続されている。ネットワークNW2には、データの到達時間が保証される、定周期通信を行うフィールドネットワークを採用することが好ましい。このような定周期通信を行うフィールドネットワークとしては、EtherCAT(登録商標)、EtherNet/IP(登録商標)、登録商標)、CompoNet(登録商標)などが知られている。
【0031】
駆動機器300は、生産工程を自動化するための種々の産業用機器を含む。一例として、駆動機器300は、ロボットコントローラ300Aや、サーボドライバ300Bや、ロボットコントローラ300Aに制御されるアームロボット301Aや、サーボドライバ300Bによって制御されるサーボモータ301Bなどを含む。また、駆動機器300は、ワークを撮影するための視覚センサや、生産工程で利用されるその他の機器などを含んでもよい。
【0032】
開発支援装置100には、開発ツール30がインストールされ得る。開発ツール30は、コントローラ200用の制御プログラムの開発を支援するためのアプリケーションである。一例として、開発ツール30は、オムロン社製の「Sysmac Studio」である。設計者は、開発ツール30上でコントローラ200用の制御プログラムを設計し、設計した制御プログラムをユーザプログラム210としてコントローラ200にインストールすることができる。典型的には、ユーザプログラム210は、開発支援装置100によってコンパイルされた実行形式のファイルとしてコントローラ200に送られる。
【0033】
設計者は、ユーザプログラム210に対して開発ツール30上で任意の名前空間や変数を規定することができる。ユーザプログラム210に含まれる変数の少なくとも一部は、予め定められた名前空間に属する。
【0034】
「変数」とは、ユーザプログラム210のソースコードにおいて扱われるデータに与えられた識別子である。典型的には、「変数」は、コントローラ200や駆動機器300の状態を表わすデータである。異なる言い方をすれば、「変数」とは、コントローラ200や駆動機器300の各構成の状態に連動して値が変化するデータのことをいう。「変数」は、一つの値を表わすデータ、配列として表されるデータ、構造体として表されるデータ、ユーザプログラム210に規定され得る種々のデータを含み得る。
【0035】
「名前空間」とは、変数の集合の範囲を決めるための抽象概念である。すなわち、「名前空間」は、1つ以上の変数を含む。設計者は、自身で定義した名前空間上に変数を定義する。異なる名前空間で定義された同一名の変数は、異なる変数として扱われる。これにより、変数名が衝突する可能性が低くなる。
【0036】
本実施の形態においては、ユーザプログラム210の開発ツール30は、ユーザプログラム210に含まれる変数を外部機器400に公開するか否かについてコントローラ200に判断させるための公開設定(属性)を名前空間に対して設定可能に構成されている。すなわち、開発ツール30は、ユーザプログラム210に規定される各名前空間に対して、当該名前空間に属する変数を公開するか否かを一括で設定可能に構成されている。「公開する」とは、外部機器400からアクセス可能な状態にすることをいう。一方で、「公開しない」または「非公開にする」とは、外部機器400からアクセス不可能な状態にすることをいう。
【0037】
設定された公開設定は、公開設定情報212として、ユーザプログラム210とともにコントローラ200にダウンロードされる。なお、
図1の例では、ユーザプログラム210および公開設定情報212が別個のデータとしてコントローラ200にダウンロードされている例が示されているが、これらは、一体的なデータとしてダウンロードされてもよい。
【0038】
コントローラ200は、制御装置202と、記憶装置208とを含む。制御装置202は、機能構成として、公開設定部250と、プログラム実行部252とを含む。記憶装置208には、開発支援装置100からダウンロードしたユーザプログラム210と公開設定情報212とが格納されている。
【0039】
プログラム実行部252は、ユーザプログラム210の実行開始命令を受け付けたことに基づいて、ユーザプログラム210の実行を開始する。その後、プログラム実行部252は、ユーザプログラム210に規定される制御命令に従って駆動機器300を制御する。このとき、プログラム実行部252は、ユーザプログラム210の実行結果に従って変数の値を逐次更新する。
【0040】
公開設定部250は、開発支援装置100から受信した公開設定情報212に基づいて、各変数の公開または非公開を設定する。上述のように、公開設定情報212は、公開/非公開を判断するための公開設定を各名前空間について規定している。公開設定部250は、公開設定が公開を示す名前空間については、当該名前空間に属する変数を外部機器400からアクセス可能にする。一方で、公開設定部250は、公開設定が非公開を示す名前空間については、当該名前空間に属する変数については外部機器400からアクセス不可能にする。
【0041】
以上のようにして、設計者は、名前空間に対して変数の公開/非公開を設定できる。コントローラ200は、公開が設定された名前空間に属する変数を一括で公開し、非公開が設定された名前空間に属する変数を公開しない。これにより、設計者は、ユーザプログラム210に含まれる各変数について公開/非公開を個々に設定する必要がなくなる。その結果、外部機器400に対する変数の公開設定がより容易になり、開発工数が従来よりも削減される。
【0042】
また、名前空間は、通常、設計者によって意味のある集合ごとに分けられたものである。そのため、設計者は、名前空間に対して変数の公開/非公開を設定することで、意味のある集合ごとに変数の公開/非公開を一括で設定できるようになる。たとえば、名前空間がコントローラ名や駆動機器名ごとに定義されている場合、設計者は、コントローラ単位で関連する変数群や駆動機器単位で関連する変数群について変数の公開/非公開を一括で設定できるようになる。
【0043】
<B.シーケンスフロー>
図2〜
図6を参照して、上述の公開変数/非公開変数の設定処理に関する処理フローについて説明する。
図2は、開発支援装置100とコントローラ200と駆動機器300と外部機器400との間のデータの流れを示すシーケンス図である。
【0044】
ステップS10において、開発支援装置100は、開発ツール30の起動命令を受け付けたとする。このことに基づいて、開発支援装置100は、ユーザプログラム210の設計画面を表示する。
図3は、開発ツール30が提供するユーザインターフェイスの一例である設計画面31を示す図である。設計画面31は、たとえば、開発支援装置100の表示部121に表示される。
【0045】
ユーザプログラム210は、任意のプログラミング言語で記述され得る。一例として、ユーザプログラム210は、ラダーダイアグラム(LD:Ladder Diagram)で規定されてもよいし、命令リスト(IL:Instruction List)、構造化テキスト(ST:Structured Text)、および、シーケンシャルファンクションチャート(SFC:Sequential Function Chart)のいずれか、あるいは、これらの組み合わせで規定される。あるいは、ユーザプログラム210は、JavaScript(登録商標)やC言語のような汎用的なプログラミング言語で規定されていてもよい。
【0046】
図3の例では、ユーザプログラム210は、ラダーダイアグラムで記述されている。設計者は、設計画面31上で、任意のファンクションブロックを組み合わせたり、変数やファンクションブロックの入出力関係を規定することで、制御対象の駆動機器300に合わせたユーザプログラム210を設計することができる。ファンクションブロックとは、ユーザプログラム210内で繰り返し使用される機能が部品化されたものである。
【0047】
図3の例では、ユーザプログラム210は、変数A1〜A3,ファンクションブロックFB1,FB2を含む。ファンクションブロックFA1は、その入力部に関連付けられている変数A1の値に基づいて、自身の機能を実行する。当該実行結果は、ファンクションブロックFA1の出力部に関連付けられている変数A2に反映される。ファンクションブロックFB2は、その入力部に関連付けられている変数A2の値に基づいて、自身の機能を実行する。当該実行結果は、ファンクションブロックFA2の出力部に関連付けられている変数A3に反映される。このように、設計者は、設計画面31上で、変数やファンクションブロックを組み合わせることで、任意のユーザプログラム210を設計することができる。
【0048】
再び
図2を参照して、ステップS14において、開発ツール30は、公開設定画面の呼び出し操作を受け付けたとする。このことに基づいて、開発ツール30は、公開設定画面を表示する。
【0049】
図4は、開発ツール30が提供するユーザインターフェイスの一例である公開設定画面33を示す図である。公開設定画面33は、ユーザプログラム210に規定される各名前空間について変数の公開に関する設定を受け付ける。
【0050】
より具体的には、公開設定画面33は、名前空間の表示欄41と、公開設定の設定欄50とを含む。公開設定の設定欄50は、公開範囲の設定を受け付ける設定欄51と、公開先によるアクセス権限の設定を受け付ける設定欄53とを含む。
【0051】
表示欄41には、ユーザプログラム210に規定される名前空間が一覧で表示される。表示欄41に表示される名前空間は、開発ツール30の設定情報から自動で抽出されてもよいし、ユーザによって編集されてもよい。
【0052】
設定欄51は、変数の公開範囲の設定を受け付ける。変数の公開範囲の設定は、たとえば、通信プロトコルで指定される。一例として、設定欄51には、各名前空間に対応させてプルダウンメニューが並べて表示される。設計者が当該プルダウンメニューを押下することで、通信プロトコルの選択肢が一覧で表示される。一例として、当該選択肢は、「公開」、「非公開」、「EIP(EtherNet/IP)」、および「OPC−UA」を含む。設計者は、表示された選択肢の中から一の選択肢を選択することができる。
【0053】
「公開」が選択された場合、選択対象の名前空間に含まれる変数は、通信プロトコルに依存せずに任意の外部機器400に公開される。「非公開」が選択された場合、選択対象の名前空間に含まれる変数は、外部機器400に公開されない。「EIP」が選択された場合、選択対象の名前空間に含まれる変数は、EtherNet/IPで通信を実現する外部機器400のみに公開される。「OPC−UA」が選択された場合、選択対象の名前空間に含まれる変数は、OPC−UAで通信を実現する通信ネットワークに接続される外部機器400のみに公開される。
【0054】
このように、設定可能な公開設定は、通信プロトコルを指定するための通信設定を含む。コントローラ200と外部機器400との通信が設定された通信プロトコルで行われている場合、コントローラ200の公開設定部250は、設定対象の名前空間に属する変数を外部機器400に公開する。これにより、コントローラ200は、公開変数および非公開変数を通信プロトコルに応じて分けることができる。通信プロトコルの種類は、たとえば、通信パケットに含まれる情報などに基づいて判断される。
【0055】
設定欄53は、変数の公開先によるアクセス権限の設定を受け付ける。一例として、設定欄53には、各名前空間に対応させてプルダウンメニューが並べて表示される。設計者が当該プルダウンメニューを押下することで、アクセス権限に関する選択肢が一覧で表示される。一例として、当該選択肢は、「R/W」、「R」、「W」、および「−」を含む。
【0056】
「R/W」が選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について読み書き可能なアクセス権限を公開先の外部機器400に与える。「R」が選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について読み取りのみ可能なアクセス権限を公開先の外部機器400に与える。「W」が選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について書き込みのみ可能なアクセス権限を公開先の外部機器400に与える。「−」が選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について、読み書きが不可能なアクセス権限を公開先の外部機器400に与える。
【0057】
なお、公開設定は、必ずしも公開設定画面33で行われる必要はない。たとえば、公開設定は、開発ツール30によって提供されるいずれかの画面で設定されてもよい。一例として、開発ツール30によって提供されるいずれかの画面(たとえば、設計画面31など)において名前空間が一覧で表示されているとする。設計者が名前空間の一覧に対していずれかの名前空間を選択したことに基づいて、選択された名前空間に対する公開設定をするための画面が表示されてもよい。
【0058】
公開設定画面33の保存ボタン58が押下された場合には、開発支援装置100は、公開設定画面33に設定された公開設定を公開設定情報212として保存する。公開設定画面33のキャンセルボタン59が押下された場合には、開発支援装置100は、公開設定画面33に設定された公開設定を保存せずに公開設定画面33を閉じる。
【0059】
図5は、保存された公開設定情報212のデータ構造の一例を示す図である。
図5に示されるように、公開設定情報212は、ユーザプログラム210に規定される各名前空間について変数と公開設定とを対応付ける。一例として、「Root」には、ユーザプログラム210に規定される複数の名前空間が対応付けられている。「名前A」で示される名前空間には「変数A1」〜「変数A3」が対応付けられている。
図5に示される「変数A1」〜「変数A3」は、
図3に示される「変数A1」〜「変数A3」に相当する。また、
図5の例では、「名前A」で示される名前空間に「公開設定A」が対応付けられている。当該「公開設定A」は、公開設定画面33の設定欄50(
図4参照)において「名前A」の名前空間に対して設定された内容に相当する。
【0060】
再び
図2を参照して、ステップS20において、開発ツール30は、コンパイル操作を受け付けたとする。このことに基づいて、開発ツール30は、ステップS14で設計画面31上で設計されたユーザプログラム210をコンパイルする。その後、開発ツール30は、コンパイル結果をコントローラ200に転送するためのダウンロード操作を受け付けたとする。このことに基づいて、開発ツール30は、コンパイルされたユーザプログラム210とともに、ステップS14で生成された公開設定情報212をコントローラ200に転送する。コントローラ200は、受信したユーザプログラム210と公開設定情報212とを記憶装置208(
図1参照)に保存する。
【0061】
ステップS22において、コントローラ200は、ユーザプログラム210の実行命令を受け付けたとする。このことに基づいて、コントローラ200は、ユーザプログラム210の実行を開始する。ユーザプログラム210がサイクリック実行型のプログラムである場合、コントローラ200は、予め定められた制御周期ごとにユーザプログラム210に含まれる命令群を繰り返し実行する。より具体的には、コントローラ200は、ユーザプログラム210の先頭行から最終行までを1制御周期で実行する。その次の制御周期では、コントローラ200は、再び、ユーザプログラム210の先頭行から最終行までを実行する。コントローラ200は、制御周期ごとに指令値を生成し、当該指令値を駆動機器300に出力する。
【0062】
ステップS30において、コントローラ200は、ユーザプログラム210の実行中において、内部変数に対するアクセス要求を外部機器400から受信したとする。
【0063】
ステップS32において、コントローラ200は、上述の公開設定情報212(
図5参照)を参照して、アクセス要求を受けた変数の公開が許可されているか否かを判断する。より具体的には、コントローラ200は、公開範囲条件、公開先条件、およびアクセス権限条件を満たした場合に、アクセス対象の変数の公開が許可されていると判断する。
【0064】
より具体的には、公開範囲条件は、下記(a1)〜(a3)のいずれかの場合に満たされる。
【0065】
(a1)アクセス対象の変数が属する名前空間について「公開」が指定されている場合。
【0066】
(a2)アクセス対象の変数が属する名前空間について「EIP」が指定されている場合には、アクセス要求元の外部機器400との通信がEtherNet/IPで実現されているとき。
【0067】
(a3)アクセス対象の変数が属する名前空間について「OPC−UA」が指定されている場合には、アクセス要求元の外部機器400との通信がOPC−UAで実現されているとき。
【0068】
上記アクセス権限条件は、下記(b1)〜(b2)のいずれかの場合に満たされる。
(b1)アクセス要求が「Read」要求である場合には、アクセス対象の変数が属する名前空間について設定されたアクセス権限が「R」または「R/W」に設定されているとき。
【0069】
(b2)アクセス要求が「Write」要求である場合には、アクセス対象の変数が属する名前空間について設定されたアクセス権限が「W」または「R/W」に設定されているとき。
【0070】
コントローラ200は、アクセス要求を受けた変数の公開が許可されていると判断した場合(ステップS32においてYES)、ステップS34の処理を実行する。そうでない場合には(ステップS32においてNO)、コントローラ200は、ステップS34の処理を実行しない。
【0071】
ステップS34において、アクセス要求が「Read」要求である場合、コントローラ200は、アクセス対象の変数を外部機器400に送信する。アクセス要求が「Write」である場合、コントローラ200は、アクセス対象の変数を指定された変数に書き換え、当該書き換えた結果を外部機器400に送信する。
【0072】
ステップS36において、外部機器400は、
コントローラ200から受信した変数を変数監視画面に反映する。
図6は、外部機器400が提供するユーザインターフェイスの一例である変数監視画面440を示す図である。変数監視画面440は、たとえば、外部機器400の表示部420に表示される。
【0073】
図6の例では、外部機器400は、オブジェクトOB1〜OB4を含む。オブジェクトOB1〜OB4は、それぞれ、いずれかの変数に関連付けられており、変数の値をグラフィカルに表わす。
【0074】
オブジェクトOB1は、たとえば、タコメータを表わす画像である。オブジェクトOB1は、駆動機器Aのバルブ圧力値を表わす変数に関連付けられており、オブジェクトOB1のメータは、当該変数の値に応じて逐次更新される。
【0075】
オブジェクトOB2は、たとえば、タコメータを表わす画像である。オブジェクトOB2は、駆動機器Bのバルブ圧力値を表わす変数に関連付けられており、オブジェクトOB2のメータは、当該変数の値に応じて逐次更新される。
【0076】
オブジェクトOB3は、たとえば、サーモメータを表わす画像である。オブジェクトOB3は、駆動機器Aの温度を表わす変数に関連付けられており、オブジェクトOB3のメータは、当該変数の値に応じて逐次更新される。
【0077】
オブジェクトOB4は、たとえば、サーモメータを表わす画像である。オブジェクトOB4は、駆動機器Bの温度を表わす変数に関連付けられており、オブジェクトOB4のメータは、当該変数の値に応じて逐次更新される。
【0078】
<C.公開設定情報の変形例>
図7を参照して、
図5で説明した公開設定情報212の変形例について説明する。
図7は、変形例に従う公開設定情報212Aのデータ構造の一例を示す図である。
【0079】
上述の公開設定情報212においては、名前空間に対して公開設定が関連付けられていた。これに対して、変形例に従う公開設定情報212Aにおいては、公開設定が、名前空間だけでなく、各変数にも関連付けられる。変数に対する公開設定は、たとえば、上述の開発ツール30の公開設定画面33で設定され得る。すなわち、公開設定画面33は、名前空間に対する公開設定を受け付けるだけでなく、各名前空間に属する各変数に対しても公開設定を受け付けるように構成されている。
【0080】
典型的には、変数に設定され得る公開設定の内容は、名前空間に設定され得る公開設定の内容と同じである。一例として、変数用の公開設定は、許可対象の通信プロトコルを指定するための通信設定を含む。他にも、変数用の公開設定は、公開先を指定するための公開先設定を含む。他にも、変数用の公開設定は、公開先の外部機器400によるアクセス権限設定を含む。
【0081】
好ましくは、開発ツール30は、名前空間用の公開設定を、初期値として変数用の公開設定に反映する。より具体的には、開発ツール30は、名前空間用の公開設定が設定されたことに基づいて、当該名前空間に属する各変数に関連付けられている各公開設定に名前空間用の公開設定を継承する。
図7の例では、「名前空間A」について設定された「公開設定A」が、「名前空間A」に属する「変数A1」,「変数A2」に継承されている。これにより、変数用の公開設定が容易になる。
【0082】
設計者は、公開設定画面33上において、継承した各公開設定を個別に変更することができる。
図7の例では、「変数A2」に対する公開設定が「公開設定A」から「公開設定B」に変更されている。これにより、設計者は、各変数に対する公開設定の時間を短縮できるだけでなく、個別の事情に合わせて各変数に対する公開/非公開の設定を柔軟に切り替えることができる。
【0083】
好ましくは、コントローラ200の公開設定部250(
図1参照)は、変数用の公開設定を名前空間用の公開設定よりも優先して、当該名前空間に属する変数を外部機器400に公開するか否かを判断する。すなわち、変数用の公開設定が設定されている場合には、公開設定部250は、名前空間用の公開設定は無視して、変数用の公開設定に基づいて、対象の変数を公開するか否かを判断する。
図7の例では、公開設定部250は、「変数A1」については「公開設定A」に基づいて公開/非公開を判断し、「変数A2」については「公開設定B」に基づいて公開/非公開を判断する。
【0084】
典型的には、名前空間に公開設定を行った後に、変数に対して個別に公開設定を行うような使用態様が想定され得る。そのため、名前空間に設定された公開設定よりも各変数に個別に設定された公開設定の方が設計者の意思が反映されている可能性が高い。変数用の公開設定を名前空間用の公開設定よりも優先することで、設計者の意思がより確実に反映される。
【0085】
なお、上述では、名前空間に設定された公開設定が、当該名前空間に属する変数に継承される例について説明を行ったが、上位の名前空間に設定された公開設定が、下位の名前空間に継承されてもよい。より具体的には、設計者は、開発ツール30において、名前空間を階層的に定義することができる。上位の名前空間は、1つ以上の下位の名前空間を包含し得る。このような場合、開発ツール30は、上位の名前空間に対する公開設定を下位の名前空間に継承する。一方で、開発ツール30は、下位の名前空間に対する公開設定については上位の名前空間に継承しない。
【0086】
<D.公開設定画面33の変形例1>
図4で説明した公開設定画面33においては公開設定がプルダウンメニューで設定されていたが、公開設定は、その他の方法で設定されてもよい。以下では、
図8を参照して、
図4に示される公開設定画面33の変形例について説明する。
【0087】
図8は、開発ツール30が提供するユーザインターフェイスの他の例である公開設定画面33Aを示す図である。公開設定画面33Aは、上述の
図4で説明した公開設定画面33の変形例である。
【0088】
図8に示されるように、公開設定画面33Aは、名前空間の表示欄41と、公開設定の設定欄50Aとを含む。公開設定の設定欄50Aは、通信プロトコルの設定を受け付ける設定欄61A,61Bと、公開先によるアクセス権限の設定を受け付ける設定欄63A,63Bとを含む。
【0089】
表示欄41には、ユーザプログラム210に規定される名前空間が一覧で表示される。表示欄41に表示される名前空間は、開発ツール30の設定情報から自動で抽出されてもよいし、ユーザによって編集されてもよい。
【0090】
設定欄61A,61Bは、通信プロトコルに関する設定を受け付ける。一例として、設定欄61A,61Bには、各名前空間に対応させてチェックボックスが並べて表示される。当該チェックボックスは、コントローラ200が対応している通信プロトコルの数に合わせて設けられる。
図8の例では、選択可能な通信プロトコルとして、「EIP」および「OPC−UA」が示されている。
【0091】
「EIP」のチェックボックスが選択された場合、対応する名前空間に含まれる変数は、EtherNet/IPで通信を行う外部機器400に公開される。「OPC−UA」のチェックボックスが選択された場合、対応する名前空間に含まれる変数は、OPC−UAで通信を行う外部機器400に公開される。いずれのチェックボックスも選択されなかった場合には、対応する名前空間に含まれる変数は、外部機器400に公開されない。
【0092】
設定欄63A,63Bは、変数の公開先によるアクセス権限の設定を受け付ける。一例として、設定欄63A,63Bには、各名前空間に対応させてチェックボックスが並べて表示される。当該チェックボックスは、アクセス権限の種類の数に合わせて設けられる。
図8の例では、選択可能なアクセス権限として、「R」および「W」が示されている。
【0093】
「R」および「W」の両方が選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について読み書きが可能なアクセス権限を公開先の外部機器400に与える。「R」のみが選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について読み取りのみ可能なアクセス権限を公開先の外部機器400に与える。「W」のみが選択された場合、開発ツール30は、選択対象の名前空間に含まれる変数について書き込みのみ可能なアクセス権限を公開先の外部機器400に与える。「R」および「W」の両方が選択されなかった場合、開発ツール30は、選択対象の名前空間に含まれる変数について、読み書きが不可能なアクセス権限を公開先の外部機器400に与える。
【0094】
公開設定画面33Aの保存ボタン58が押下された場合には、開発支援装置100は、公開設定画面33Aに設定された公開設定を公開設定情報212として保存する。公開設定画面33Aのキャンセルボタン59が押下された場合には、開発支援装置100は、公開設定画面33Aに設定された公開設定を保存せずに公開設定画面33Aを閉じる。
【0095】
<E.公開設定画面33の変形例2>
図9を参照して、
図4で説明した公開設定画面33の他の変形例について説明する。
図9は、開発ツール30が提供するユーザインターフェイスの他の例である公開設定画面33Bを示す図である。公開設定画面33Bは、上述の
図4で説明した公開設定画面33の変形例である。
【0096】
公開設定画面33Bにおける公開設定の設定欄50は、変数の保持/非保持の設定欄56をさらに含む点で、
図4に示される公開設定画面33と異なる。その他の点については
図4で説明した通りであるので、以下ではそれらの説明については繰り返さない。
【0097】
設定欄56は、各名前空間に対して変数
の値の保持/非保持の設定を受け付ける。一例として、設定欄56には、各名前空間に対応させてチェックボックスが並べて表示される。設定欄56において選択された名前空間に属する変数は、開発支援装置100内の不揮発性の記憶装置(たとえば、後述の記憶装置110)に記憶される。すなわち、当該変数については、開発支援装置100の電源がオフされた場合であっても、変数の値が保持される。一方で、設定欄56において非選択の名前空間に属する変数は、開発支援装置100内の揮発性の記憶装置(たとえば、後述の主メモリ104)に記憶される。すなわち、当該変数については、開発支援装置100の電源がオフされた場合に、変数の値が保持されない。
【0098】
<F.変数検索画面>
図10および
図11を参照して、公開設定の内容を検索キーとする変数の検索機能について説明する。
図10は、検索キーとして名前空間を入力した場合における検索画面35の画面遷移を示す図である。
図11は、検索キーとして通信プロトコルを入力した場合における検索画面35の画面遷移を示す図である。
【0099】
検索画面35は、名前空間を検索キーとして受け付ける入力部71と、変数名を検索キーとして受け付ける入力部72と、通信プロトコルを検索キーとして受け付ける入力部73と、検索結果の表示領域74とを含む。
【0100】
開発支援装置100は、入力部71〜73に検索キーが入力されたことに基づいて、上述の公開設定情報212(
図5参照)を参照して、入力された検索キーに対応する変数を検索する。そして、開発支援装置100は、検索結果として抽出された各変数と当該各変数に設定されている公開設定とを並べて表示する。これにより、設計者は、各変数に設定されている公開設定を容易に確認することができる。
【0101】
たとえば、
図10に示されるように、「名前A」が入力部71に入力されたとする。このことに基づいて、開発支援装置100は、公開設定情報212(
図5参照)を参照して、名前空間「名前A」に属する変数を検索する。そして、開発支援装置100は、検索結果として抽出された各変数と、各変数に設定されている公開設定とを並べて表示する。
【0102】
他の例として、
図11に示されるように、入力部73に示される「EIP」のチェックボックスが選択されたとする。このことに基づいて、開発支援装置100は、公開設定情報212(
図5参照)を参照して、公開設定に「EIP」が設定されている変数を検索する。そして、開発支援装置100は、検索結果として抽出された各変数と、当該各変数に設定されている公開設定とを並べて表示する。
【0103】
<G.ハードウェア構成>
図12〜
図14を参照して、開発支援装置100、コントローラ200、および外部機器400のハードウェア構成について順に説明する。
【0104】
(G1.開発支援装置100のハードウェア構成)
まず、
図12を参照して、開発支援装置100のハードウェア構成について説明する。
図12は、開発支援装置100のハードウェア構成を示す模式図である。
【0105】
開発支援装置100は、一例として、汎用的なコンピュータアーキテクチャに準じて構成されるコンピュータからなる。開発支援装置100は、CPU(Central Processing Unit)やMPU(Micro-Processing Unit)などの制御装置102と、揮発性の主メモリ104と、フラッシュメモリなどの不揮発性の記憶装置110と、通信インターフェイス111と、I/O(Input/Output)インターフェイス114と、表示インターフェイス120とを含む。これらのコンポーネントは、内部バス125を介して互いに通信可能に接続されている。
【0106】
制御装置102は、記憶装置110に格納されている開発支援プログラム110Aを主メモリ104に展開して実行することで、開発ツール30における各種処理を実現する。開発支援プログラム110Aは、ユーザプログラム210の開発環境を提供するためのプログラムである。記憶装置110は、開発支援プログラム110Aの他にも、開発ツール30で生成された各種データなどを格納する。当該データは、たとえば、開発ツール30上で設計されたユーザプログラム210や、上述の公開設定情報212などを含む。
【0107】
通信インターフェイス111は、他の通信機器との間でネットワークを介してデータを遣り取りする。当該他の通信機器は、たとえば、コントローラ200、外部機器400、サーバなどを含む。開発支援装置100は、通信インターフェイス111を介して、当該他の通信機器から、開発支援プログラム110Aなどの各種プログラムをダウンロード可能なように構成されてもよい。
【0108】
I/Oインターフェイス114は、操作部115に接続され、操作部115からのユーザ操作を示す信号を取り込む。操作部115は、典型的には、キーボード、マウス、タッチパネル、タッチパッドなどからなり、ユーザからの操作を受け付ける。
【0109】
表示インターフェイス120は、表示部121と接続され、制御装置102などからの指令に従って、表示部121に対して、画像を表示するための画像信号を送出する。表示部121は、LCD(Liquid Crystal Display)や有機EL(Electro Luminescence)ディスプレイなどからなり、ユーザに対して各種情報を提示する。表示部121には、開発ツール30によって提供される各種画面が表示され得る。
図12の例では、開発支援装置100および表示部121が別体として示されているが、開発支援装置100および表示部121は、一体的に構成されてもよい。
【0110】
(G2.コントローラ200のハードウェア構成)
次に、
図13を参照して、コントローラ200のハードウェア構成について説明する。
図13は、コントローラ200のハードウェア構成の一例を示す模式図である。
【0111】
コントローラ200は、通信インターフェイス201と、CPUやMPUなどの制御装置202と、チップセット204と、主メモリ206と、記憶装置208と、内部バスコントローラ222と、フィールドバスコントローラ224と、メモリカードインターフェイス239とを含む。
【0112】
制御装置202は、記憶装置208に格納された制御プログラム211を読み出して、主メモリ206に展開して実行することで、ロボットコントローラ300Aやサーボドライバ300Bなどに対する任意の制御を実現する。制御プログラム211は、コントローラ200を制御するための各種プログラムを含む。一例として、制御プログラム211は、システムプログラム209およびユーザプログラム210などを含む。システムプログラム209は、データの入出力処理や実行タイミング制御などの、コントローラ200の基本的な機能を提供するための命令コードを含む。ユーザプログラム210は、開発支援装置100からダウンロードされたものである。ユーザプログラム210は、制御対象に応じて任意に設計され、シーケンス制御を実行するためのシーケンスプログラム210Aおよびモーション制御を実行するためのモーションプログラム210Bとを含む。
【0113】
チップセット204は、各コンポーネントを制御することで、コントローラ200全体としての処理を実現する。
【0114】
内部バスコントローラ222は、コントローラ200と内部バスを通じて連結される各種デバイスとデータを遣り取りするインターフェイスである。このようなデバイスの一例として、I/Oユニット226が接続されている。
【0115】
フィールドバスコントローラ224は、コントローラ200とフィールドバスを通じて連結される各種の駆動機器300とデータを遣り取りするインターフェイスである。このようなデバイスの一例として、ロボットコントローラ300Aやサーボドライバ300Bが接続されている。他にも、視覚センサなどの駆動機器が接続されてもよい。
【0116】
内部バスコントローラ222およびフィールドバスコントローラ224は、接続されているデバイスに対して任意の指令を与えることができるとともに、デバイスが管理している任意のデータを取得することができる。また、内部バスコントローラ222および/またはフィールドバスコントローラ224は、ロボットコントローラ300Aやサーボドライバ300Bとの間でデータを遣り取りするためのインターフェイスとしても機能する。
【0117】
通信インターフェイス201は、各種の有線/無線ネットワークを通じたデータの遣り取りを制御する。コントローラ200は、通信インターフェイス201を介して、開発支援装置100や外部機器400と通信を行う。
【0118】
メモリカードインターフェイス239は、外部記憶媒体の一例であるメモリカード240(たとえば、SDカード)を着脱可能に構成されており、メモリカード240に対してデータを書き込み、メモリカード240からデータを読出すことが可能になっている。
【0119】
(G3.外部機器400のハードウェア構成)
次に、
図14を参照して、外部機器400のハードウェア構成について説明する。
図14は、外部機器400のハードウェア構成を示すブロック図である。
【0120】
外部機器400は、汎用的なアーキテクチャを有するハードウェア構成を有している。すなわち、外部機器400は、一種のパーソナルコンピュータとして実装される。但し、外部機器400を汎用的なハードウェアではなく、専用ハードウェアを用いて実装してもよい。
【0121】
より具体的には、外部機器400は、CPUやMPUなどの制御装置402と、主メモリ404と、フラッシュメモリなどの記憶装置410と、通信インターフェイス412と、I/Oインターフェイス414と、フィールドバスインターフェイス416と、表示部420とを含む。これらのコンポーネントは、内部バス425を介して、互いにデータ通信可能に接続されている。
【0122】
制御装置402は、記憶装置410に格納された制御プログラム(図示しない)を読み出して、主メモリ404に展開して実行することで、外部機器400を制御する。すなわち、制御装置402は、主メモリ404および記憶装置410と連係することで、制御演算を実行する制御部を実現する。
【0123】
通信インターフェイス412、I/Oインターフェイス414、および、フィールドバスインターフェイス416は、外部機器400と他の通信機器とのデータの遣り取りを仲介する。
【0124】
より具体的には、通信インターフェイス412は、ネットワークNW1(
図1参照)などを介した、コントローラ200との通信を仲介する。通信インターフェイス412には、たとえば、EtherNETに従う通信が可能なコンポーネントが採用され得る。
【0125】
I/Oインターフェイス414は、各種のユーザインターフェイス装置(たとえば、キーボード、マウスなど)との通信を仲介する。I/Oインターフェイス414としては、たとえば、USB通信やシリアル通信が可能なコンポーネントを採用することができる。
【0126】
フィールドバスインターフェイス416は、コントローラ200との間のデータの遣り取りを仲介する。フィールドバスインターフェイス416には、たとえば、EtherCATに従う通信が可能なコンポーネントが採用される。
【0127】
表示部420は、ユーザに対して各種情報を提示するとともに、ユーザからの操作を受け付ける。より具体的には、表示部420は、ディスプレイ422と、タッチパネル424とを含む。ディスプレイ422は、典型的には、LCDや有機ELディスプレイなどからなる。タッチパネル424は、ディスプレイ422の上に装着され、ユーザによるタッチ操作を受け付ける。ディスプレイ422は、典型的には、感圧式や押圧式のデバイスが用いられる。
【0128】
<H.コントローラ200の機能構成>
図15を参照して、コントローラ200の機能について説明する。
図15は、コントローラ200の機能構成の一例を示す図である。
【0129】
コントローラ200は、通信インターフェイス201と、リソースマネージャ230と
、ツールインターフェイス235と
、プログラム実行部252と、OPC−UAサーバ260と、EIPサーバ270とを含む。
【0130】
通信インターフェイス201は、OPC−UAクライアント450Aとして機能する外部機器400Aや、EIPクライアント450Bとして機能する外部機器400Bや、開発支援装置100と通信を行う。開発支援装置100には、ユーザプログラム210の開発ツール30がインストールされている。ツールインターフェイス235は、開発ツール30上で設計されたユーザプログラム210や、開発ツール30上で設定された公開設定情報212を、通信インターフェイス201を介して受信する。
【0131】
リソースマネージャ230は、コントローラ200内の各変数の実体を保持しており、各変数の管理や、各変数の読み書きなどを担う。一例として、リソースマネージャ230は、変数の読取命令(取得命令)を受けた場合には、読取対象の変数にアクセスし、当該変数を読取命令の発信元に送る。また、リソースマネージャ230は、変数の書込命令を受けた場合には、書込対象の変数にアクセスし、当該変数を指定された値に書き換える。各変数に対する読取命令や書込命令は、たとえば、プログラム実行部252、OPC−UAサーバ260、およびEIPサーバ270などから発せられる。
【0132】
また、リソースマネージャ230は、名前空間と変数と公開設定との関係を規定する公開設定情報212を保持している。公開設定情報212は、コントローラ200の記憶装置208(
図13参照)から読み込まれたものである。リソースマネージャ230は、名前空間および変数の定義の登録命令や削除命令を受け、登録処理や削除処理を公開設定情報212に対して行う。
【0133】
OPC−UAサーバ260は、OPC−UA用の通信スタック261と、メインプログラム263とを含む。OPC−UA通信スタック261は、OPC−UAクライアント450Aへの送信データや、OPC−UAクライアント450Aからの受信データを一時的に保持する。メインプログラム263は、OPC−UAサーバ260によるサーバ機能を実現するためのソフトウェアである。
【0134】
EIPサーバ270は、EIP用の通信スタック271と、メインプログラム273とを含む。EIP通信スタック271は、EIPクライアント450Bへの送信データや、EIPクライアント450Bからの受信データを一時的に保持する。メインプログラム273は、EIPサーバ270によるサーバ機能を実現するためのソフトウェアである。
【0135】
<I.開発支援装置100の制御フロー>
図16を参照して、開発支援装置100の制御構造について説明する。
図16は、開発支援装置100が実行する処理の一部を表わすフローチャートである。
図16に示される処理は、開発支援装置100の制御装置102が上述の開発支援プログラム110A(
図12参照)を実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【0136】
ステップS110において、制御装置102は、開発ツール30の起動命令を受け付けたか否かを判断する。制御装置102は、開発ツール30の起動命令を受け付けたと判断した場合(ステップS110においてYES)、制御をステップS120に切り替える。そうでない場合には(ステップS110においてNO)、制御装置102は、ステップS110の処理を再び実行する。
【0137】
ステップS120において、制御装置102は、上述の設計画面31(
図3参照)を開く操作を受け付けたか否かを判断する。当該操作は、操作部115(
図12参照)に対して行われる。制御装置102は、設計画面31を開く操作を受け付けたと判断した場合(ステップS120においてYES)、制御をステップS122に切り替える。そうでない場合には(ステップS120においてNO)、制御装置102は、制御をステップS130に切り替える。
【0138】
ステップS122において、制御装置102は、開発支援装置100の表示部121(
図12参照)に設計画面31を表示する。これにより、設計者は、設計画面31上でユーザプログラム210を記述することができる。
【0139】
ステップS130において、制御装置102は、上述の公開設定画面33(
図4参照)を開く操作を受け付けたか否かを判断する。当該操作は、操作部115に対して行われる。制御装置102は、公開設定画面33を開く操作を受け付けたと判断した場合(ステップS130においてYES)、制御をステップS132に切り替える。そうでない場合には(ステップS130においてNO)、制御装置102は、制御をステップS140に切り替える。
【0140】
ステップS132において、制御装置102は、開発支援装置100の表示部121に公開設定画面33を表示する。これにより、設計者は、ユーザプログラム210で規定される各名前空間について変数の公開設定を行うことができる。公開設定画面33に設定された情報は、上述の公開設定情報212(
図5参照)として記憶される。
【0141】
ステップS140において、制御装置102は、ユーザプログラム210に対するコンパイル操作が行われたか否かを判断する。当該操作は、操作部115に対して行われる。制御装置102は、ユーザプログラム210に対するコンパイル操作が行われたと判断した場合(ステップS140においてYES)、制御をステップS142に切り替える。そうでない場合には(ステップS140においてNO)、制御装置102は、制御をステップS150に切り替える。
【0142】
ステップS142において、制御装置102は、ユーザプログラム210のコンパイル処理を実行する。これにより、ユーザプログラム210の実行形式のファイルが生成される。
【0143】
ステップS150において、制御装置102は、ユーザプログラム210をコントローラ200にダウンロードするための操作を受け付けたか否かを判断する。当該操作は、操作部115に対して行われる。制御装置102は、ユーザプログラム210をコントローラ200にダウンロードする操作を受け付けたと判断した場合(ステップS150においてYES)、制御をステップS152に切り替える。そうでない場合には(ステップS150においてNO)、制御装置102は、制御をステップS160に切り替える。
【0144】
ステップS152は、制御装置102は、ステップS142で生成されたユーザプログラム210のコンパイル結果と、ステップS132で生成された公開設定情報212とを、指定されたコントローラ200に転送する。
【0145】
ステップS160において、制御装置102は、開発ツール30に対する終了操作を受け付けたか否かを判断する。制御装置102は、開発ツール30に対する終了操作を受け付けたと判断した場合(ステップS160においてYES)、
図16に示される処理を終了する。そうでない場合には(ステップS160においてNO)、制御装置102は、制御をステップS120に戻す。
【0146】
<J.コントローラ200の制御フロー>
図17を参照して、コントローラ200の制御構造について説明する。
図17は、コントローラ200が実行する処理の一部を表わすフローチャートである。
図17に示される処理は、コントローラ200の制御装置202がプログラムを実行することにより実現される。他の局面において、処理の一部または全部が、回路素子またはその他のハードウェアによって実行されてもよい。
【0147】
ステップS210において、制御装置202は、ユーザプログラム210に対する実行命令を受け付けたか否かを判断する。制御装置202は、ユーザプログラム210に対する実行命令を受け付けたと判断した場合(ステップS210においてYES)、制御をステップS220に切り替える。そうでない場合には(ステップS210においてNO)、制御装置202は、ステップS210の処理を再び実行する。
【0148】
ステップS220において、制御装置202は、ユーザプログラム210の制御周期が到来したか否かを判断する。上述のように、ユーザプログラム210は、サイクリック実行型のプログラムであるので、制御装置202は、予め定められた制御周期ごとにユーザプログラム210に含まれる命令群を繰り返し実行する。制御装置202は、ユーザプログラム210の制御周期が到来したと判断した場合(ステップS220においてYES)、制御をステップS222に切り替える。そうでない場合には(ステップS220においてNO)、制御装置202は、制御をステップS230に切り替える。
【0149】
ステップS222において、制御装置202は、ユーザプログラム210の先頭行から最終行までを1制御周期で実行する。その次の制御周期では、コントローラ200は、再び、ユーザプログラム210の先頭行から最終行までを実行する。コントローラ200は、当該制御周期ごとに指令値を駆動機器300に出力する。
【0150】
ステップS230において、制御装置202は、変数の公開処理の制御周期が到来したか否かを判断する。FAシステムにおいては、処理の遅延や通信の遅延が許されないので、変数の公開処理の実行期間は、予め割り当てられている。この実行期間は、予め定められた制御周期ごとに到来する。制御装置202は、変数の公開処理の制御周期が到来したと判断した場合(ステップS230においてYES)、制御をステップS240に切り替える。そうでない場合には(ステップS230においてNO)、制御装置202は、制御をステップS220に戻す。
【0151】
ステップS240において、制御装置202は、外部機器400のいずれかから変数へのアクセス要求を受信したか否かを判断する。制御装置202は、外部機器400のいずれかから変数へのアクセス要求を受信したと判断した場合(ステップS240においてYES)、制御をステップS250に切り替える。そうでない場合には(ステップS240においてNO)、制御装置202は、制御をステップS220に戻す。
【0152】
ステップS250において、制御装置202は、アクセス要求を受けた変数をアクセス要求の送信元の外部機器400に公開することが許可されているか否かを判断する。当該判断方法は上述の通りであるため、その説明については繰り返さない。制御装置202は、アクセス要求を受けた変数をアクセス要求の送信元の外部機器400に公開することが許可されていると判断した場合(ステップS250においてYES)、制御をステップS252に切り替える。そうでない場合には(ステップS250においてNO)、制御装置202は、制御をステップS220に戻す。
【0153】
ステップS252において、制御装置202は、アクセス要求を受けた変数をアクセス要求の送信元の外部機器400に送信する。
【0154】
<K.まとめ>
以上のようにして、開発支援装置100は、ユーザプログラム210で定義される名前空間変数の各々について、各名前空間に属する変数を公開するか否かを判断するための公開設定を受け付けるように構成されている。設定された公開設定は、コントローラ200に送信される。コントローラ200は、公開が設定されている名前空間に属する変数を外部機器400に公開する。
【0155】
このように、設計者は、外部機器400への変数の公開設定を名前空間ごとに行うことができる。すなわち、設計者は、公開変数を各変数に個々に
設定する必要がなくなる。結果として、外部機器400に対する変数の公開設定がより容易になる。
【0156】
<L.付記>
以上のように、本実施形態は以下のような開示を含む。
【0157】
[構成1]
開発支援装置(100)と、
前記開発支援装置(100)と通信可能に構成されているコントローラ(200)とを備え、
前記開発支援装置(100)には、前記コントローラ(200)を制御するユーザプログラム(210)を開発するための開発ツール(30)がインストールされ得、前記ユーザプログラム(210)に含まれる変数の少なくとも一部は、予め定められた名前空間に属し、前記開発ツール(30)は、前記名前空間に属する変数を前記コントローラ(200)に通信接続される外部機器(400)に公開するか否かを判断するための公開設定を前記名前空間に
対応付けて受け付け
、前記公開設定および前記公開設定に対応付けられた前記名前空間を前記コントローラに転送するように構成されており、
前記コントローラ(200)は、
前記開発支援装置(100)から受信した前記ユーザプログラム(210)に従って制御対象の駆動機器(300)を制御し、当該ユーザプログラム(210)の実行結果に従って前記名前空間に属する変数を更新するためのプログラム実行部(252)と、
前記開発支援装置(100)から受信した前記公開設定が公開を示す場合、
前記公開設定に対応付けられた前記名前空間に属する変数を前記外部機器(400)に公開するための公開設定部(250)とを含む、制御システム。
【0158】
[構成2]
前記開発ツール(30)は、
前記名前空間に属する各変数について前記公開設定を設定可能に構成されており、
名前空間用の前記公開設定を初期値として変数用の前記公開設定に反映する、構成1に記載の制御システム。
【0159】
[構成3]
前記公開設定部(250)は、名前空間用の前記公開設定よりも変数用の前記公開設定を優先して、前記名前空間に属する変数を前記外部機器(400)に公開するか否かを判断する、構成
2に記載の制御システム。
【0160】
[構成4]
前記公開設定は、通信プロトコルを示す通信設定をさらに含み、
前記公開設定部(250)は、前記通信設定によって
公開が示される通信プロトコルで前記コントローラ(200)と前記外部機器(400)とが通信する場合、前記名前空間に属する変数を前記外部機器(400)に公開する、構成1〜3のいずれか1項に記載の制御システム。
【0161】
[構成5]
前記開発支援装置(100)は、
揮発性の記憶装置(104)と、
不揮発性の記憶装置(110)とをさらに備え、
前記公開設定は、前記名前空間に属する変数を保持するか否かを示す保持設定を含み、
前記公開設定部(250)は、
前記保持設定が保持を示す場合、前記名前空間に属する変数を前記不揮発性の記憶装置(110)に記憶し、
前記保持設定が非保持を示す場合、前記名前空間に属する変数を前記揮発性の記憶装置(104)に記憶
する、構成1〜4のいずれか1項に記載の制御システム。
【0162】
[構成6]
ユーザプログラム(210)に規定される制御命令に従って制御対象の駆動機器(300)を制御するコントローラ(200)と通信可能に構成されている開発支援装置であって、
前記コントローラ(200)と通信するための通信インターフェイス(111)と、
前記ユーザプログラム(210)を開発するための開発ツール(30)を提供する開発プログラムを格納する記憶装置とを備え、前記ユーザプログラム(210)に含まれる変数の少なくとも一部は、予め定められた名前空間に属し、前記開発ツール(30)は、前記名前空間に属する変数を前記コントローラ(200)に通信接続される外部機器(400)に公開するか否かを前記コントローラ(200)に判断させるための公開設定を前記名前空間に
対応付けて受け付けるように構成されており、
前記通信インターフェイス(111)は、前記開発ツールが前記ユーザプログラム(210)の転送操作を受け付けたことに基づいて、前記ユーザプログラム(210)と前記公開設定
および前記公開設定に対応付けられた前記名前空間とを前記コントローラ(200)に転送する、開発支援装置。
【0163】
[構成7]
ユーザプログラム(210)に規定される制御命令に従って制御対象の駆動機器(300)を制御するコントローラ(200)と通信可能に構成されている開発支援装置(100)に実行される開発支援プログラムであって、
前記開発支援プログラムは、前記開発支援装置(100)に、前記ユーザプログラム(210)を開発するための開発ツール(30)を起動するステップを実行させ、前記ユーザプログラム(210)に含まれる変数の少なくとも一部は、予め定められた名前空間に属し、
前記開発支援プログラムは、前記開発支援装置(100)に、さらに、前記名前空間に属する変数を前記コントローラ(200)に通信接続される外部機器(400)に公開するか否かを前記コントローラ(200)に判断させるための公開設定を前記名前空間に
対応付けて受け付けるステップ(S14)と、
前記開発ツールが前記ユーザプログラム(210)の転送操作を受け付けたことに基づいて、前記ユーザプログラム(210)と前記公開設定
および前記公開設定に対応付けられた前記名前空間とを前記コントローラ(200)に転送するステップ(S20)とを実行させる、開発支援プログラム。
【0164】
今回開示された実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。