(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023151726
(43)【公開日】2023-10-16
(54)【発明の名称】開発装置、開発プログラムおよび開発方法
(51)【国際特許分類】
G06F 8/30 20180101AFI20231005BHJP
G06F 3/0484 20220101ALI20231005BHJP
G06F 3/04845 20220101ALI20231005BHJP
【FI】
G06F8/30
G06F3/0484
G06F3/04845
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022061495
(22)【出願日】2022-04-01
(71)【出願人】
【識別番号】000002945
【氏名又は名称】オムロン株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】吉田 寛
(72)【発明者】
【氏名】森 健一郎
【テーマコード(参考)】
5B376
5E555
【Fターム(参考)】
5B376BC08
5B376BC14
5B376BC43
5B376BC67
5B376FA11
5B376GA13
5E555AA79
5E555BA36
5E555BA69
5E555BB36
5E555BC18
5E555BE16
5E555CA02
5E555CA12
5E555CA18
5E555CB02
5E555CB08
5E555CB12
5E555CB34
5E555CB35
5E555CC11
5E555DB03
5E555DB04
5E555DB19
5E555DB41
5E555DC13
5E555DC19
5E555DD11
5E555EA07
5E555EA11
5E555EA17
5E555FA00
(57)【要約】
【課題】1または複数の機器ならびに当該機器を制御する制御プログラムをより効率的に開発できる環境を提供する。
【解決手段】開発装置は、プロジェクトデータを格納する記憶部と、エミュレータと、シミュレータと、エミュレータおよびシミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュールと、ユーザインターフェイス画面を提供する提供部とを含む。実行コンフィグレーションは、インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ、ならびに、1または複数の実行コンフィグレーションを含む、プロジェクトデータを格納する記憶部と、
前記制御プログラムの実行をエミュレーションするエミュレータと、
前記3Dモデルを用いたシミュレーションを行うシミュレータと、
前記実行コンフィグレーションに基づいて、前記エミュレータおよび前記シミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュールと、
前記実行コンフィグレーションを作成するためのユーザインターフェイス画面を提供する提供部とを備え、
前記実行コンフィグレーションは、
前記クラスライブラリに含まれる3Dモデルのうち前記インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、
前記クラスライブラリに含まれる制御プログラムのうち前記インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、
前記インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、前記インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む、開発装置。
【請求項2】
前記プロジェクトデータは、互いに独立した複数の前記実行コンフィグレーションを含む、請求項1に記載の開発装置。
【請求項3】
前記ユーザインターフェイス画面は、前記クラスライブラリに含まれる前記制御プログラムおよび前記3Dモデルの少なくとも一方を表示する第1領域と、前記実行コンフィグレーションの内容を表示する第2領域とを含み、
前記提供部は、前記第1領域に表示される前記制御プログラムまたは前記3Dモデルの前記第2領域へのドラッグ操作に応答して、当該ドラッグされた制御プログラムまたは3Dモデルを前記実行コンフィグレーションに追加する、請求項1に記載の開発装置。
【請求項4】
前記提供部は、前記エミュレータおよび前記シミュレータが前記インスタンスを実行した結果を含む第2のユーザインターフェイス画面を提供する、請求項1~3のいずれか1項に記載の開発装置。
【請求項5】
前記実行コンフィグレーションは、目的の検証を行うためのテストシナリオ設定を含み、
前記テストシナリオ設定は、
事前状態の準備を実現するためのスクリプトまたはプログラムと、
テスト実行中に動作させるスクリプトまたはプログラムと、
期待される事後状態を確認するためのスクリプトまたはプログラムと
のうち、少なくとも1つを含む、請求項1~3のいずれか1項に記載の開発装置。
【請求項6】
前記提供部は、前記テストシナリオ設定に従う実行結果を含む第3のユーザインターフェイス画面を提供する、請求項5に記載の開発装置。
【請求項7】
前記実行コンフィグレーションは、機器同士の配置関係に対応した階層構造に沿って指定された複数の前記3Dモデルを含む、請求項1~3のいずれか1項に記載の開発装置。
【請求項8】
前記クラスライブラリは、テストにおいてのみ使用されるスクリプトまたはプログラムを含む、請求項1~3のいずれか1項に記載の開発装置。
【請求項9】
開発プログラムであって、1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ、ならびに、1または複数の実行コンフィグレーションを含む、プロジェクトデータを格納する記憶部を含むコンピュータを、
前記制御プログラムの実行をエミュレーションするエミュレータと、
前記3Dモデルを用いたシミュレーションを行うシミュレータと、
前記実行コンフィグレーションに基づいて、前記エミュレータおよび前記シミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュールと、
前記実行コンフィグレーションを作成するためのユーザインターフェイス画面を提供する提供部として機能させ、
前記実行コンフィグレーションは、
前記クラスライブラリに含まれる3Dモデルのうち前記インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、
前記クラスライブラリに含まれる制御プログラムのうち前記インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、
前記インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、前記インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む、開発プログラム。
【請求項10】
コンピュータが実行する制御プログラムの開発方法であって、
1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ、ならびに、1または複数の実行コンフィグレーションを含む、プロジェクトデータを格納するステップと、
ユーザインターフェイス画面を介したユーザ操作に応じて、前記実行コンフィグレーションを作成するステップと、
前記実行コンフィグレーションに基づいて、エミュレータおよびシミュレータのためのインスタンスをそれぞれ生成するステップと、
前記エミュレータおよび前記シミュレータが前記インスタンスを実行するステップとを備え、
前記実行コンフィグレーションは、
前記クラスライブラリに含まれる3Dモデルのうち前記インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、
前記クラスライブラリに含まれる制御プログラムのうち前記インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、
前記インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、前記インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む、開発方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、開発装置、開発プログラムおよび開発方法に関する。
【背景技術】
【0002】
様々な生産設備において、ロボットが利用されている。生産設備に応じて、ロボットを適切に動作させる必要がある。特開2013-165816号公報(特許文献1)は、ロボットが担う作業内容を示す作業プログラムを容易に作成することができるロボット制御装置などを開示する。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
近年、MILS(Model In the Loop Simulation)、SILS(Software In the Loop Simulation)、およびHILS(Hardware In the Loop Simulation)といった仮想空間上のモデルを用いて、生産設備および生産設備を制御する制御プログラムを設計する手法が普及しつつある。上述の先行技術文献は、このような新しい手法について、何ら考慮されていない。
【0005】
本発明は、1または複数の機器ならびに当該機器を制御する制御プログラムをより効率的に開発できる環境を提供することを一つの目的とする。
【課題を解決するための手段】
【0006】
ある実施の形態に従う開発装置は、1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ、ならびに、1または複数の実行コンフィグレーションを含む、プロジェクトデータを格納する記憶部と、制御プログラムの実行をエミュレーションするエミュレータと、3Dモデルを用いたシミュレーションを行うシミュレータと、実行コンフィグレーションに基づいて、エミュレータおよびシミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュールと、実行コンフィグレーションを作成するためのユーザインターフェイス画面を提供する提供部とを含む。実行コンフィグレーションは、クラスライブラリに含まれる3Dモデルのうちインスタンスとして生成される対象となる1または複数の3Dモデルの指定と、クラスライブラリに含まれる制御プログラムのうちインスタンスとして生成される対象となる1または複数の制御プログラムの指定と、インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む。
【0007】
この構成によれば、1または複数の制御プログラムおよび1または複数の3Dモデルのうち、インスタンス化実行する部分を任意に選択できるので、開発フェーズや目的などに応じた範囲および内容で検証を実現できる。
【0008】
上述の構成において、プロジェクトデータは、互いに独立した複数の実行コンフィグレーションを含んでいてもよい。この構成によれば、用途に応じて、実行コンフィグレーションを複数作成できる。
【0009】
上述のいずれかの構成において、ユーザインターフェイス画面は、クラスライブラリに含まれる制御プログラムおよび3Dモデルの少なくとも一方を表示する第1領域と、実行コンフィグレーションの内容を表示する第2領域とを含んでいてもよい。提供部は、第1領域に表示される制御プログラムまたは3Dモデルの第2領域へのドラッグ操作に応答して、当該ドラッグされた制御プログラムまたは3Dモデルを実行コンフィグレーションに追加するようにしてもよい。この構成によれば、インスタンス化したい制御プログラムおよび3Dモデルの選択を容易化できる。
【0010】
上述のいずれかの構成において、提供部は、エミュレータおよびシミュレータがインスタンスを実行した結果を含む第2のユーザインターフェイス画面を提供するようにしてもよい。この構成によれば、エミュレータおよびシミュレータがインスタンスを実行した結果を一見した把握できるので、制御プログラムなどの変更修正が容易化する。
【0011】
上述のいずれかの構成において、実行コンフィグレーションは、目的の検証を行うためのテストシナリオ設定を含んでいてもよい。テストシナリオ設定は、事前状態の準備を実現するためのスクリプトまたはプログラムと、テスト実行中に動作させるスクリプトまたはプログラムと、期待される事後状態を確認するためのスクリプトまたはプログラムと、のうち、少なくとも1つを含んでいてもよい。この構成によれば、予め生成されたテストシナリオ設定を用いることで、目的の検証をより効率的に実現できる。
【0012】
上述のいずれかの構成において、提供部は、テストシナリオ設定に従う実行結果を含む第3のユーザインターフェイス画面を提供するようにしてもよい。この構成によれば、テストシナリオ設定に従う実行結果を一見して把握できる。
【0013】
上述のいずれかの構成において、実行コンフィグレーションは、機器同士の配置関係に対応した階層構造に沿って指定された複数の3Dモデルを含んでいてもよい。この構成によれば、仮想空間上に複数の機器を配置する際に、機器の位置などの指定を容易化できる。
【0014】
上述のいずれかの構成において、クラスライブラリは、テストにおいてのみ使用されるスクリプトまたはプログラムを含むようにしてもよい。この構成によれば、テストにおいてのみ使用されるスクリプトまたはプログラムをであっても、クラスライブラリとして登録しておくことで、複数のインスタンスにおいて利用できる。
【0015】
別の実施の形態に従う開発プログラムは、1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ、ならびに、1または複数の実行コンフィグレーションを含む、プロジェクトデータを格納する記憶部を含むコンピュータを、制御プログラムの実行をエミュレーションするエミュレータと、3Dモデルを用いたシミュレーションを行うシミュレータと、実行コンフィグレーションに基づいて、エミュレータおよびシミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュールと、実行コンフィグレーションを作成するためのユーザインターフェイス画面を提供する提供部として機能させる。実行コンフィグレーションは、クラスライブラリに含まれる3Dモデルのうちインスタンスとして生成される対象となる1または複数の3Dモデルの指定と、クラスライブラリに含まれる制御プログラムのうちインスタンスとして生成される対象となる1または複数の制御プログラムの指定と、インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む。
【0016】
さらに別の実施の形態に従えば、コンピュータが実行する制御プログラムの開発方法が提供される。開発方法は、1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ、ならびに、1または複数の実行コンフィグレーションを含む、プロジェクトデータを格納するステップと、ユーザインターフェイス画面を介したユーザ操作に応じて、実行コンフィグレーションを作成するステップと、実行コンフィグレーションに基づいて、エミュレータおよびシミュレータのためのインスタンスをそれぞれ生成するステップと、エミュレータおよびシミュレータがインスタンスを実行するステップとを含む。実行コンフィグレーションは、クラスライブラリに含まれる3Dモデルのうちインスタンスとして生成される対象となる1または複数の3Dモデルの指定と、クラスライブラリに含まれる制御プログラムのうちインスタンスとして生成される対象となる1または複数の制御プログラムの指定と、インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む。
【発明の効果】
【0017】
本発明によれば、1または複数の機器ならびに当該機器を制御する制御プログラムをより効率的に開発できる環境を提供できる。
【図面の簡単な説明】
【0018】
【
図1】本実施の形態に従うシステムの構成例を示す模式図である。
【
図2】本実施の形態に従う開発装置のハードウェア構成例を示す模式図である。
【
図3】本実施の形態に従うPLCが実行する制御プログラムのソフトウェア構造例を示す模式図である。
【
図4】本実施の形態に従う開発装置が保持するプロジェクトデータのデータ構造の一例を示す模式図である。
【
図5】本実施の形態に従う開発装置において実行される制御プログラムの開発手順の一例を示す模式図である。
【
図6】本実施の形態に従う開発装置が保持するプロジェクトデータのより詳細なデータ構造の一例を示す模式図である。
【
図7】本実施の形態に従う開発装置の機能構成例を示す模式図である。
【
図8】本実施の形態に従う開発装置が提供する実行コンフィグレーションを作成および編集するためのユーザインターフェイス画面の一例を示す模式図である。
【
図9】本実施の形態に従う開発装置における実行コンフィグレーションの作成手順を示すフローチャートである。
【
図10】本実施の形態に従う開発装置が提供する実行コンフィグレーションを新たに作成するためのユーザインターフェイス画面の一例を示す模式図である。
【
図11】本実施の形態に従う開発装置が提供する3Dモデル設定を定義するためのユーザインターフェイス画面の一例を示す模式図である。
【
図12】本実施の形態に従う開発装置が提供するプログラムインスタンス設定を定義するためのユーザインターフェイス画面の一例を示す模式図である。
【
図13】本実施の形態に従う開発装置が提供する制御機器構成を定義するためのユーザインターフェイス画面の一例を示す模式図である。
【
図14】本実施の形態に従う開発装置が提供する検証実行時のユーザインターフェイス画面の一例を示す模式図である。
【
図15】本実施の形態に従う開発装置が提供するテストシナリオ設定を定義するためのユーザインターフェイス画面の一例を示す模式図である。
【
図16】本実施の形態に従う開発装置が提供するテストシナリオを実行する際のユーザインターフェイス画面の一例を示す模式図である。
【
図17】本実施の形態に従う開発装置が提供するテストシナリオの実行結果を示すユーザインターフェイス画面の一例を示す模式図である。
【発明を実施するための形態】
【0019】
本技術の実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0020】
<A.システム構成例>
まず、本実施の形態に従う開発装置200を含むシステムの構成例について説明する。
【0021】
図1は、本実施の形態に従うシステムの構成例を示す模式図である。
図1には、ロボットセル生産設備の構成例を示すが、本発明はどのような生産設備にも適用可能である。
【0022】
図1を参照して、システム1は、PLC100と、PLC100に接続される開発装置200とを含む。PLC100は、開発装置200が生成した制御プログラムを実行することで、生産設備に対する制御演算を実行する。
【0023】
PLC100には、フィールドネットワーク10を介して、リモートI/Oデバイス12、サーボドライバ20、およびロボット30などが接続されている。なお、フィールドネットワーク10には、産業用ネットワーク用のプロトコルである、EtherCAT(登録商標)やEtherNet/IPなどを用いることができる。
【0024】
リモートI/Oデバイス12、サーボドライバ20、およびロボット30は、生産設備を構成する1または複数の機器からなる機器群40に関連付けて配置されている。
【0025】
リモートI/Oデバイス12は、センサやアクチュエータなどのフィールドデバイス14が接続されている。リモートI/Oデバイス12は、機器群40に配置されたセンサなどにより計測されたデータをPLC100へ送信し、PLC100から受信したデータに従って機器群40に配置されたアクチュエータなどに指令信号を出力する。
【0026】
サーボドライバ20は、PLC100から受信したデータに従って、機器群40に含まれる機器を構成するサーボモータ22を駆動し、サーボモータ22などから計測されたデータをPLC100へ送信する。
【0027】
ロボット30は、機器群40に含まれる機器を構成し、PLC100からの指令に従って、動作する。
【0028】
PLC100は、上位ネットワーク16を介して、HMI300および画像処理装置400に接続されている。上位ネットワーク16には、産業用ネットワーク用のプロトコルであるやEtherNet/IPなどを用いることができる。
【0029】
HMI300は、ユーザ操作を受け付けてPLC100へ操作内容を送信するとともに、PLC100が保持しているデータを視覚的に表現する。画像処理装置400は、機器群40を視野に含むカメラ450からの画像に基づいて、各種画像処理を実行し、画像処理結果をPLC100へ送信する。
【0030】
開発装置200は、PLC100で実行される制御プログラムを開発するための環境および制御プログラムの開発方法を提供する。より具体的には、開発装置200は、制御プログラムのソースコードの編集、ソースコードのビルド、生産設備の一部または全部を仮想空間に実現するシミュレーション(あるいは、エミュレーション)、HMI300が提供する画面の編集、などの処理を実行する。
【0031】
<B.開発装置のハードウェア構成例>
次に、本実施の形態に従う開発装置200のハードウェア構成例について説明する。
【0032】
図2は、本実施の形態に従う開発装置200のハードウェア構成例を示す模式図である。
図2を参照して、開発装置200は、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などのプロセッサ202と、メインメモリ204と、入力部206と、表示部208と、USB(Universal Serial Bus)コントローラ210と、ネットワークコントローラ212と、光学ドライブ214と、ストレージ220とを含む。これらのコンポーネントは、バス218を介して接続される。
【0033】
プロセッサ202は、ストレージ220に格納された各種プログラムを読み出して、メインメモリ204に展開して実行することで、開発装置200で必要な処理を実現する。
【0034】
メインメモリ204は、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置などで構成される。ストレージ220は、例えば、SSD(Solid State Drive)やHDD(Hard Disk Drive)などの不揮発性記憶装置などで構成される。
【0035】
入力部206は、マウス、キーボード、タッチパネルなどで構成され、ユーザからの指示を受け付ける。表示部208は、ディスプレイ、各種インジケータなどで構成され、プロセッサ202からの処理結果などを出力する。
【0036】
USBコントローラ210は、USB接続を介して、PLC100との間でデータをやり取りする。ネットワークコントローラ212は、任意のネットワークを介して、任意の情報処理装置との間でデータをやり取りする。
【0037】
光学ドライブ214は、コンピュータ読取可能なプログラムを非一過的に格納する記録媒体216(例えば、DVD(Digital Versatile Disc)などの光学記録媒体)からプログラムやデータを読み取って、ストレージ220などに格納する。
【0038】
開発装置200で実行される各種プログラムは、コンピュータ読取可能な記録媒体216を介してインストールされてもよいが、ネットワーク上の任意のサーバからダウンロードする形でインストールするようにしてもよい。
【0039】
ストレージ220は、典型的には、プログラムを実行するための環境を実現するOS222と、開発プログラム230と、プロジェクトデータ240とが格納される。なお、ストレージ220には、
図2に示すプログラム以外の必要なプログラムが格納されてもよい。
【0040】
開発プログラム230は、プロジェクトデータ240の作成および編集などを実現するためのソースエディタ231と、プロジェクトデータ240から実行オブジェクト(インスタンス)を生成するインスタンス生成モジュール232と、制御プログラムに含まれるPLCプログラムおよびロボットプログラムをエミュレーションする制御機器エミュレータ233と、制御プログラムに含まれるアプリケーションプログラムを実行するアプリケーションエミュレータ234と、3Dモデルを用いたシミュレーションを行う3Dモデルシミュレータ235と、評価モジュール239と、ユーザインターフェイスモジュール224とを含む。
【0041】
図2には、1または複数のプロセッサがプログラムを実行することで必要な機能が提供される構成例を示したが、これらの提供される機能の一部または全部を、専用のハードウェア回路(例えば、ASIC(Application Specific Integrated Circuit)またはFPGA(Field-Programmable Gate Array)など)を用いて実装してもよい。
【0042】
開発装置200は、単一の情報処理装置として実現してもよいし、必要な機能の一部または全部を複数のプロセッサリソースを用いて実現してもよい。
【0043】
<C.制御プログラムのソフトウェア構造例>
次に、本実施の形態に従うPLC100が実行する制御プログラムのソフトウェア構造例について説明する。
【0044】
図3は、本実施の形態に従うPLC100が実行する制御プログラムのソフトウェア構造例を示す模式図である。
図3を参照して、制御プログラムは、階層的に構成された、上位管理モジュール62と、1または複数の動作シーケンス64と、1または複数の機構制御モジュール66とを含む。
【0045】
上位管理モジュール62は、対象の生産設備の運転状態を管理する処理、MES(製造実行システム)などの上位装置との通信に関する処理、HMI300との通信に関する処理、セーフティ制御に関する処理などを担当する。上位管理モジュール62が担当する処理は、特定の生産設備に固有の処理は含まれず、様々な生産設備に対して共通に適用可能な処理のみを含むことが一般的である。
【0046】
上位管理モジュール62に含まれる処理は、エンドユーザが個々に定めた方針に従って、あるいは、PackMLやMTConnectといった業界標準に従って決定されることが多い。
【0047】
動作シーケンス64の各々は、生産設備や生産品種に固有のビジネスロジックである。動作シーケンス64は、機構モジュールが提供する機能を順次呼び出して、特定の製品の組み立て動作や、特殊なメンテナンス動作を実現する。
【0048】
本明細書において、「機構モジュール」は、コンベア、フィーダ、XYステージ、ロボットといった、特定の機能を提供する機器を意味する。なお、機構モジュールは、1または複数のサブモジュール(例えば、エンドエフェクタなどの周辺機器など)の組み合わせで構成されていることもある。そのような場合には、機構制御モジュール66は、サブモジュールの単位で構成されてもよい。
【0049】
図3に示すように、例えば、「製品A」および「製品B」をそれぞれ組み立てるために必要な処理手順がそれぞれ用意されたり、手動モードにおいて異常処理に対応するための手順が用意されたりする。
【0050】
機構制御モジュール66は、機構モジュールが提供すべき機能を実装したプログラム(PLCプログラム、ロボットプログラム、アプリケーションプログラム)である。機構制御モジュール66は、機構モジュール毎に用意される。汎用的な機構モジュールであれば、標準的なプログラムがライブラリとして利用できることも多い。但し、特殊な機構モジュールであれば、機構モジュールに応じて都度作成する必要がある。
【0051】
<D.制御プログラムの開発>
次に、本実施の形態に従う開発装置200が提供する制御プログラムの開発について説明する。
【0052】
本実施の形態に従う開発装置200を用いて、ユーザは、MILSを用いて、複数の機構モジュールを組み合わせて生産設備の動作を仮想空間で検証した上で、SILSおよびHILSを用いて、制御プログラムを開発および実装する。
【0053】
そこで、本実施の形態に従う開発装置200は、制御プログラムの開発を容易化するための仕組みを提供する。より具体的には、各段階において、各種検証を行うためのプログラム実体を実現するために「実行コンフィグレーション」が提供される。実行コンフィグレーションは、開発装置200が実行するプログラム(インスタンス)を定義するものである。
【0054】
図4は、本実施の形態に従う開発装置200が保持するプロジェクトデータ240のデータ構造の一例を示す模式図である。
図4を参照して、プロジェクトデータ240は、クラスライブラリ242および1または複数の実行コンフィグレーション244-1,244-2,…(以下、「実行コンフィグレーション244」とも総称する。)を含む。
【0055】
クラスライブラリ242は、クラスモジュールの集合である。クラスライブラリ242は、例えば、1または複数のPLCプログラムからなるPLCプログラム群と、1または複数のロボットプログラムからなるロボットプログラム群と、1または複数のアプリケーションプログラムからなるアプリケーションプログラム群と、生産設備を構成する機器を示す1または複数の3Dモデル群とを含む。このように、クラスライブラリ242は、クラスとして、1または複数の制御プログラムを含む。
【0056】
クラスライブラリ242は、さらに、テストにおいてのみ使用されるスクリプトまたはプログラムである、テストドライバおよび/またはテストスタブを含んでいてもよい。テストドライバおよびテストスタブは、最終的な生産設備の制御には使用されないスクリプトまたはプログラムである。
【0057】
PLCプログラムは、典型的には、IEC61131-3に従って記述されてもよい。ロボットプログラムは、例えば、eV+言語やGコードといった任意のロボット言語で記述されてもよい。アプリケーションプログラムは、画像処理装置400で実行される任意のプログラム、3Dモデルのシミュレーションに必要な任意のプログラムなどを含む。
【0058】
実行コンフィグレーション244の各々は、3Dモデルのシミュレーションに必要な3Dモデルおよび設定群と、実行される制御プログラムを定義するプログラムインスタンス設定とを含む。開発装置200は、指定された実行コンフィグレーション244に従って、開発に必要なインスタンス(実行環境)を生成する。
【0059】
実行コンフィグレーション244の各々は、互いに独立して定義される。そのため、プロジェクトデータ240は、互いに独立した複数の実行コンフィグレーション244を含み得る。
【0060】
図5は、本実施の形態に従う開発装置200において実行される制御プログラムの開発手順の一例を示す模式図である。
図5には、一例として、コンベアおよびロボットを含むロボットセル生産設備の開発における5つの段階を示す。
【0061】
(1)プラント設計用MILS
この段階において、ユーザは、生産設備に配置される機構モジュールの挙動を確認しながら、レイアウトなどを決定する。対応する実行コンフィグレーション244-1は、3Dモデルおよび設定群からなる3Dモデル設定246-1と、プログラムインスタンス設定248-1とを含む。3Dモデル設定246-1は、コンベアおよびロボットを含む生産設備全体の3Dモデルを再現するために必要な情報を含む。プログラムインスタンス設定248-1は、生産設備の3Dモデルを用いて挙動を確認するために必要な動作スクリプトを含む。
【0062】
(2)コンベア制御用PLCプログラム単体テスト
この段階において、ユーザは、生産設備に含まれるコンベアを制御するためのPLCプログラムを実行させるとともに、仮想空間に再現されるコンベアの挙動を確認しながら、PLCプログラムの手直しなどを行う。対応する実行コンフィグレーション244-2の3Dモデル設定246-2は、コンベアの3Dモデルを再現するために必要な情報を含む。また、実行コンフィグレーション244-2のプログラムインスタンス設定248-2は、開発対象のPLCプログラムを含む。より具体的には、プログラムインスタンス設定248-2は、テストドライバと、開発対象ソフトウェアモジュール(
図3に示す機構制御モジュール66に対応)とを含む。
【0063】
(3)ロボット組立工程単体テスト
この段階において、ユーザは、ロボット組立工程用のPLCプログラムを実行させるとともに、仮想空間に再現されるロボットが組み立てを行う挙動を確認する。必要に応じて、ユーザは、PLCプログラムの手直しなどを行う。対応する実行コンフィグレーション244-3の3Dモデル設定246-3は、ロボットよび周辺機器(エンドエフェクタなど)の3Dモデルを再現するために必要な情報を含む。3Dモデル設定246-3のプログラムインスタンス設定248-3は、開発対象のPLCプログラムを含む。より具体的には、プログラムインスタンス設定248-3は、テストドライバと、開発対象ソフトウェアモジュール(
図3に示す動作シーケンス64に対応)と、テストスタブとを含む。
【0064】
(4)統合検証
この段階において、ユーザは、開発対象の制御プログラムを実行させるとともに、仮想空間に再現される生産設備におけるコンベアおよびロボットの挙動を確認する。必要に応じて、ユーザは、PLCプログラムやロボットプログラムの手直しなどを行う。対応する実行コンフィグレーション244-4の3Dモデル設定246-4は、コンベアおよびロボットを含む生産設備全体の3Dモデルを再現するために必要な情報を含む。3Dモデル設定246-4のプログラムインスタンス設定248-4は、開発対象のPLCプログラムおよびロボットプログラムを含む。
【0065】
(5)実機検証
この段階において、ユーザは、(基本的にはすべての)制御プログラムを現実のPLC100で実行させるとともに、PLC100により制御される現実の生産設備の挙動を確認する。併せて、開発装置200は、現実のPLC100の入出力変数を参照して、生産設備の挙動を仮想空間に再現する。ユーザは、現実の生産設備の挙動および仮想空間に再現される生産設備の挙動を確認しつつ、必要に応じて、制御プログラムの手直しなどを行う。対応する実行コンフィグレーション244-5の3Dモデル設定246-5は、コンベアおよびロボットを含む生産設備全体の3Dモデルを再現するために必要な情報を含む。3Dモデル設定246-5のプログラムインスタンス設定248-5は、制御プログラムを含む。
【0066】
<E.実行コンフィグレーション>
図6は、本実施の形態に従う開発装置200が保持するプロジェクトデータ240のより詳細なデータ構造の一例を示す模式図である。
【0067】
図6を参照して、プロジェクトデータ240は、クラスライブラリ242および1または複数の実行コンフィグレーション244を含む。
【0068】
クラスライブラリ242は、PLCプログラム群と、ロボットプログラム群と、アプリケーションプログラム群と、3Dモデル群とを含む。
【0069】
実行コンフィグレーション244の各々は、実行コンフィグレーション名称と、3Dモデル設定と、プログラムインスタンス設定と、制御機器構成とを含む。
【0070】
実行コンフィグレーション名称は、実行コンフィグレーション244を特定するための名称であり、ユーザが任意に付与することができる。
【0071】
3Dモデル設定は、3Dモデルのシミュレーションを実現するために必要なデータを含む。すなわち、3Dモデル設定は、クラスライブラリ242に含まれる3Dモデルのうちインスタンスとして生成される対象となる1または複数の3Dモデルの指定である。
【0072】
以下の説明においては、実行コンフィグレーション244毎に定義されるシミュレーション対象のモデルを「シミュレーション対象モデル」とも称す。すなわち、シミュレーション対象モデルは、現実の生産設備を構成する機器のうち仮想空間に再現される機器を定義するモデルである。シミュレーション対象モデルは、シミュレーションにおいてインスタンスとして生成される。3Dモデル設定は、生産設備を構成する機構モジュールの配置に対応させた階層構造が採用される。
【0073】
図6に示すデータ構造においては、ワールド座標系において最上位に配置された機構モジュールの3Dモデルがルートモデルとなっている。最上位に配置された機構モジュールに接して配置される1または複数の機構モジュール(子要素の機構モジュール)に対応する3Dモデルが次の階層に存在する。さらに、子要素の機構モジュールに接して配置される1または複数の機構モジュール(さらに子要素の機構モジュール)に対応する3Dモデルが次の階層に存在する。このように、3Dモデル設定は、現実の機構モジュールの配置に対応させた階層構造に構成された1または複数の3Dモデルを含む。
【0074】
すなわち、実行コンフィグレーション244は、機器同士の配置関係に対応した階層構造に沿って指定された複数の3Dモデルを含む。
【0075】
3Dモデルの各々は、3D形状(Geometry)、機構モジュールを構成する3D形状オブジェクト間の拘束条件を定義した機構定義(Kinematics)、動作スクリプト、ならびに、対応する機構モジュールのセンサおよびアクチュエータに相当する仮想センサおよび仮想アクチュエータを含む。
【0076】
機構定義は、例えば、2つの3D形状オブジェクトがリンク機構やスライド機構で接続されているといった拘束条件の定義を含む。
【0077】
仮想センサは、PLC100が参照する入力データを生成し、仮想アクチュエータは、PLC100が出力する出力データに従って動作する。動作スクリプトは、仮想センサおよび仮想アクチュエータの動作を定義(実装)する。
【0078】
なお、機構モジュールの種類によっては、3Dモデルは、一部のデータのみを含む場合もある。
【0079】
プログラムインスタンス設定は、PLC100、HMI300および画像処理装置400などの制御機器での処理をエミュレーションするために必要なデータを含む。プログラムインスタンス設定は、クラスライブラリ242に含まれる制御プログラムのうちインスタンスとして生成される対象となる1または複数の制御プログラムの指定である。
【0080】
より具体的には、プログラムインスタンス設定は、制御機器エミュレーション設定と、アプリケーションエミュレーション設定と、PLC設定と、ロボットプログラムタスク設定と、I/Oマップ設定とを含む。
【0081】
制御機器エミュレーション設定は、PLCプログラムおよびロボットプログラムを実行するために制御機器エミュレータ(
図2の制御機器エミュレータ233)に関する設定である。
【0082】
アプリケーションエミュレーション設定は、アプリケーションプログラムを実行するアプリケーションエミュレータ(
図2のアプリケーションエミュレータ234)に関する設定に加えて、実行するアプリケーションプログラムの設定を含む。
【0083】
PLC設定は、PLC100における制御プログラムの実行をエミュレーションするための設定を含む。PLC設定は、各タスクの有効化/無効化および実行周期/プライオリティ設定と、タスクに割り付けるPLCプログラム(PLCプログラム群から選択される)および有効/無効設定と、有効化するグローバル変数一覧と、グローバル変数への書込排他設定と、有効化するデータトレース設定とを含む。
【0084】
ロボットプログラムタスク設定は、ロボットプログラム群に含まれるロボットプログラムのタスクに関する設定を含む。
【0085】
I/Oマップ設定は、制御機器エミュレータで実行される制御プログラムが参照する変数の対応関係の設定を含む。より具体的には、I/Oマップ設定は、グローバル変数と物理IOポート/軸変数/ロボット変数とのマッピングと、グローバル変数と仮想センサ/仮想アクチュエータ変数とのマッピングとを含む。
【0086】
このように、I/Oマップ設定は、インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む。
【0087】
制御機器構成は、PLC100に接続されている機能ユニットなどに関する設定を含む。制御機器構成は、通信バスおよびフィールドネットワーク設定と、機能ユニットの詳細設定と、物理I/O一覧・軸変数・ロボット変数と、実行するプログラム識別名とを含む。
【0088】
<F.機能構成例>
次に、本実施の形態に従う開発装置200における実行コンフィグレーション244を利用する機能構成例について説明する。
【0089】
図7は、本実施の形態に従う開発装置200の機能構成例を示す模式図である。
図7を参照して、開発装置200は、機能構成として、インスタンス生成モジュール232と、制御機器エミュレータ233と、アプリケーションエミュレータ234と、3Dモデルシミュレータ235と、共有メモリ237と、実機器インターフェイス238と、評価モジュール239とを含む。
【0090】
インスタンス生成モジュール232は、プロジェクトデータ240に含まれる実行コンフィグレーション244に従って、クラスライブラリ242を用いてインスタンスを生成する。生成されるインスタンスは、制御機器エミュレータ233、アプリケーションエミュレータ234および3Dモデルシミュレータ235が実行する実行オブジェクトに加えて、共有メモリ237のメモリ領域の割り当て設定(マップ設定)などを含む。このように、インスタンス生成モジュール232は、プロジェクトデータ240に含まれる実行コンフィグレーション244に基づいて、アプリケーションエミュレータ234および3Dモデルシミュレータ235が実行するインスタンスをそれぞれ生成する。
【0091】
制御機器エミュレータ233およびアプリケーションエミュレータ234は、共有メモリ237に格納されているデータを参照して、実行オブジェクトを実行するとともに、実行結果を共有メモリ237に書き込む。
【0092】
3Dモデルシミュレータ235は、共有メモリ237に格納されているデータを参照して、シミュレーション対象モデルの位置および姿勢を所定周期毎に算出する。3Dモデルシミュレータ235は、3Dモデルを用いて生産設備の一部または全部を仮想空間に再現するためのビジュアライザ236を有している。ビジュアライザ236は、各周期におけるシミュレーション対象モデルの位置および姿勢を視覚的に表現する。ビジュアライザ236が生成した画像は、開発装置200の表示部208へ出力される。
【0093】
実機器インターフェイス238は、制御機器エミュレータ233ではなく、PLC100で制御プログラム(PLCプログラムおよびロボットプログラム)を実行させる場合に、PLC100とデータをやり取りする。
【0094】
評価モジュール239は、後述するテストシナリオに従って、3Dモデルの挙動および処理を評価する。
【0095】
ユーザインターフェイスモジュール224は、後述するようなユーザインターフェイス画面を提供する。一例として、ユーザインターフェイスモジュール224は、実行コンフィグレーション244を作成するためのユーザインターフェイス画面を提供する。
【0096】
<G.実行コンフィグレーションの作成>
次に、本実施の形態に従う開発装置200における実行コンフィグレーション244の作成手順について説明する。
【0097】
図8は、本実施の形態に従う開発装置200が提供する実行コンフィグレーション244を作成および編集するためのユーザインターフェイス画面500の一例を示す模式図である。
図8を参照して、ユーザインターフェイス画面500は、実行コンフィグレーション244を選択するためのプルダウンメニュー502と、選択されている実行コンフィグレーション244に含まれるデータ(コンテンツ)を表示するコンフィグレーション表示部504と、登録されているプログラム(クラス/型)を表示するプログラム表示部506とを含む。
【0098】
コンフィグレーション表示部504は、3Dモデル設定のタブ510と、プログラムインスタンス設定のタブ512と、制御機器構成のタブ514とを含み、選択されているタブに対応するデータを表示する。
【0099】
プログラム表示部506には、PLCプログラム群、ロボットプログラム群、アプリケーションプログラム群、ならびに、3Dモデル(機構モジュール(1または複数の3D形状オブジェクトを含む)と、動作スクリプトとを含む)などが表示される。
【0100】
このように、ユーザインターフェイス画面500は、クラスライブラリ242に含まれる制御プログラムおよび3Dモデルの少なくとも一方を表示するプログラム表示部506(第1領域)と、実行コンフィグレーション244の内容を表示するコンフィグレーション表示部504(第2領域)とを含む。
【0101】
ユーザインターフェイス画面500の表示領域508には、1または複数の任意のウィンドウを表示することが可能である。
図8に示す例では、選択中の実行コンフィグレーションにより定義されているシミュレーション対象モデルを表示するウィンドウ520と、選択中の実行コンフィグレーションに含まれるロボットプログラムタスク設定の内容を表示するウィンドウ522と、選択中の実行コンフィグレーションに含まれるI/Oマップ設定の内容を表示するウィンドウ524とが表示されている。
【0102】
ユーザは、
図8に示すユーザインターフェイス画面500を操作することで、実行コンフィグレーションを作成する。より具体的には、プログラム表示部506(第1領域)に表示される制御プログラムまたは3Dモデルのコンフィグレーション表示部504(第2領域)域へのドラッグ操作に応答して、当該ドラッグされた制御プログラムまたは3Dモデルを実行コンフィグレーション244に追加する。
【0103】
図9は、本実施の形態に従う開発装置200における実行コンフィグレーションの作成手順を示すフローチャートである。
図9を参照して、ユーザは、開発装置200を操作して、新たな実行コンフィグレーションを作成し(ステップS2)、作成した実行コンフィグレーションに実行コンフィグレーション名称を付与する(ステップS4)。
【0104】
図10は、本実施の形態に従う開発装置200が提供する実行コンフィグレーションを新たに作成するためのユーザインターフェイス画面の一例を示す模式図である。
図10を参照して、プルダウンメニュー502に表示される実行コンフィグレーションを追加するためのアイテムが選択されると、新規追加される実行コンフィグレーションのダイアログ532が表示される。ダイアログ532は、実行コンフィグレーションの名称を入力する入力ボックス534と、任意の説明を入力する入力ボックス536と、設定内容をプレビュー表示する画像表示部538とを含む。
【0105】
ユーザは、実行コンフィグレーションの名称を入力ボックス534に入力するとともに、必要に応じて、実行コンフィグレーションについての説明を入力ボックス536に入力する。画像表示部538には、実行コンフィグレーションが選択されたときに、3Dモデル設定、プログラムインスタンス設定および制御機器構成の内容がプレビュー表示されてもよい。
【0106】
次に、実行コンフィグレーションに含まれる3Dモデル設定が定義される。
再度
図9を参照して、ユーザは、開発装置200を操作して、任意の機構モジュールを登録する。より具体的には、ユーザは、任意の機構モジュールの設計データ(例えば、CADデータ)を開発装置200にインポートし(ステップS6)、インポートした設計データに含まれる3D形状オブジェクト間の拘束条件を定義した機構定義を設定する(ステップS8)。さらに、ユーザは、開発装置200を操作して、登録対象の機構モジュールについての動作スクリプト、仮想センサおよび仮想アクチュエータを設定する(ステップS10)。例えば、コンベアを設定する場合には、ユーザは、仮想サーボを定義するとともに、仮想サーボが発生する変位に応じて、3D形状オブジェクトを変位させるための動作スクリプトを定義する。
【0107】
なお、ステップS6~S10の処理は、シミュレーションに必要な機構モジュールが既に登録されている場合には、スキップされてもよい。
【0108】
続いて、ユーザは、開発装置200を操作して、実行コンフィグレーションに含めるシミュレーション対象モデルを定義する。より具体的には、ユーザは、ルートモデルとなる機構モジュールの3Dモデルを選択する(ステップS12)。また、ユーザは、ルートモデルの子要素となる機構モジュールの3Dモデルを選択する(ステップS14)。さらに、ユーザは、子要素の子要素となる機構モジュールの3Dモデルを選択するようにしてもよい。併せて、ユーザは、開発装置200を操作して、機構モジュールにおいて実行させる動作スクリプトを選択する(ステップS16)。
【0109】
図11は、本実施の形態に従う開発装置200が提供する3Dモデル設定を定義するためのユーザインターフェイス画面の一例を示す模式図である。
図11を参照して、ユーザは、ユーザインターフェイス画面500のプログラム表示部506に表示されるプログラム(クラス/型)のうち目的の機構モジュールを選択して、3Dモデル設定のタブ510に対応するコンフィグレーション表示部504にドラッグする。
【0110】
ユーザは、ルートモデルとなる機構モジュールをドラッグした後、ルートモデルである機構モジュールに結合される子要素の機構モジュールを順次ドラッグする。
【0111】
以上の処理によって、実行コンフィグレーション244の3Dモデル設定が完成する。
次に、実行コンフィグレーションに含まれるプログラムインスタンス設定が定義される。
【0112】
再度
図9を参照して、ユーザは、開発装置200を操作して、開発対象の制御プログラムを作成する(ステップS18)とともに、開発対象の制御プログラムを動作させるためのテストドライバおよび/またはテストスタブ(テストプログラム)を作成する(ステップS20)。
【0113】
なお、ステップS18および/またはS20の処理は、必要な制御プログラム、テストドライバ、テストスタブが既に登録されている場合には、スキップされてもよい。
【0114】
続いて、ユーザは、開発装置200を操作して、検証対象の制御プログラム、ならびに、対応するテストドライバおよび/またはテストスタブをPLCタスクおよび/またはロボットタスクに割り付ける(ステップS22)。
【0115】
また、ユーザは、開発装置200を操作して、PLCタスクおよび/またはロボットタスクを実行させるために必要なI/Oマップ設定を行う(ステップS24)。I/Oマップ設定は、制御プログラムが参照するI/O変数(I/O予約変数)の割付、シミュレーション対象モデルに含まれる仮想センサおよび仮想アクチュエータとの対応関係の設定、ならびに、現実の制御機器が保持する変数との対応関係の設定を含む。
【0116】
図12は、本実施の形態に従う開発装置200が提供するプログラムインスタンス設定を定義するためのユーザインターフェイス画面の一例を示す模式図である。
図12を参照して、ユーザは、ユーザインターフェイス画面500のプログラム表示部506に表示されるプログラム(クラス/型)のうち目的の制御プログラム、テストドライバ、テストスタブを選択して、プログラムインスタンス設定のタブ512に対応するコンフィグレーション表示部504にドラッグする。なお、プログラム表示部506には、機構モジュールの単位で、制御プログラム、テストドライバ、テストスタブがリスト表示されていてもよい。
【0117】
コンフィグレーション表示部504は、設定済のPLCタスクおよびロボットタスクを一覧表示しており、ユーザは、目的の制御プログラム、テストドライバ、テストスタブを対応するタスクに順次ドラッグする。
【0118】
また、ユーザインターフェイス画面500のウィンドウ524は、I/Oマップ設定を表示している。I/Oマップ設定は、I/O予約変数を示すカラム群540と、シミュレーション対象モデルに含まれる仮想センサおよび仮想アクチュエータとの対応関係を示すカラム群542と、現実の制御機器が保持する変数との対応関係を示すカラム群544とを含む。ユーザは、I/Oマップ設定に必要な対応関係を設定する。
【0119】
以上の処理によって、実行コンフィグレーション244のプログラムインスタンス設定が完成する。
【0120】
次に、実行コンフィグレーションに含まれる制御機器構成が定義される。
再度
図9を参照して、ユーザは、開発装置200を操作して、PLC100に接続されている機能ユニットなどに関する制御機器構成を設定する(ステップS26)。
【0121】
図13は、本実施の形態に従う開発装置200が提供する制御機器構成を定義するためのユーザインターフェイス画面の一例を示す模式図である。
図13を参照して、ユーザは、ユーザは、ユーザインターフェイス画面500の制御機器リスト526に表示される制御機器のうち目的の制御機器を選択して、ウィンドウ522にドラッグする。
【0122】
また、ユーザは、プログラムインスタンス設定のタブ514に対応するコンフィグレーション表示部504に表示される対象のノードを選択し、コントローラ構成設定、コントローラ間通信設定、フィールドネットワーク設定、PLC拡張ユニット設定を行う。
【0123】
以上の処理によって、実行コンフィグレーション244の制御機器構成が完成する。
開発装置200は、ユーザインターフェイス画面500を介したユーザ操作に応じて、実行コンフィグレーション244を作成するとともに、一連のユーザ操作によって作成される実行コンフィグレーションを格納する。
【0124】
<H.実行コンフィグレーションを用いた検証>
次に、本実施の形態に従う開発装置200における実行コンフィグレーション244を用いた検証について説明する。
【0125】
開発装置200は、指定された実行コンフィグレーション244に従って、実行オブジェクト(インスタンス)を生成して実行する。
【0126】
図14は、本実施の形態に従う開発装置200が提供する検証実行時のユーザインターフェイス画面の一例を示す模式図である。
図14を参照して、ユーザインターフェイス画面550は、実行コンフィグレーション244を選択するためのプルダウンメニュー552と、選択されている実行コンフィグレーション244に含まれるデータ(コンテンツ)を表示するコンフィグレーション表示部554とを含む。
【0127】
ユーザインターフェイス画面550は、タスクに割り付けられたPLCプログラムのインスタンスツリーを示すウィンドウ556と、制御プログラムの実行によって位置および挙動が変化するシミュレーション対象モデルを表示するウィンドウ558とを含む。
【0128】
このように、開発装置200は、制御機器エミュレータ233(およびアプリケーションエミュレータ234)ならびに3Dモデルシミュレータ235がインスタンスを実行した結果を含むユーザインターフェイス画面550を提供する。
【0129】
ユーザは、ユーザインターフェイス画面550に表示される検証結果を参照しながら、シミュレーション対象モデルおよび/または制御プログラムの検証および(必要に応じて)手直しを行う。
【0130】
このような検証をより効率的に行うために、本実施の形態に従う開発装置200は、テストシナリオ設定(テストケース)を実行コンフィグレーション244に含めるようにしてもよい。すなわち、実行コンフィグレーション244は、目的の検証を行うためのテストシナリオ設定を含んでいてもよい。
【0131】
図15は、本実施の形態に従う開発装置200が提供するテストシナリオ設定を定義するためのユーザインターフェイス画面の一例を示す模式図である。
図15を参照して、ユーザは、ユーザインターフェイス画面500のプログラム表示部506に表示されるテストシナリオ(クラス)のうち目的のテストシナリオを選択して、テストシナリオ設定のタブ516に対応するコンフィグレーション表示部504にドラッグする。
【0132】
コンフィグレーション表示部504には、インスタンス化されるテストシナリオのリストが表示されている。テストシナリオは、事前状態準備プログラム(Pre-state maker)560と、テストメインプログラム(Test main programs)562と、事後検証プログラム(Post-state checker)564とのうち、少なくとも1つを含んでいてもよい。
【0133】
事前状態準備プログラム560は、テストの事前状態の準備を実現するためのスクリプトおよび/またはプログラムを含む。事前状態準備プログラム560は、例えば、特定の位置にワークを出現させる、ロボットを初期姿勢にする、PLC100の内部状態を特定に状態にするといった処理を行うためのスクリプトおよび/またはプログラムを含む。
【0134】
テストメインプログラム562は、テスト実行中に動作させるスクリプトおよび/またはプログラムを含む。テストメインプログラム562は、例えば、テストシナリオを実行するためのプログラム、テスト実行中に干渉が発生していないか否かを監視するためのプログラム、任意のデータ(センサ出力値や位置データ)のトレースを行うためのプログラムなどを含む。
【0135】
事後検証プログラム564は、期待される事後状態を確認するためのスクリプトおよび/またはプログラムを含む。事後検証プログラム564は、例えば、ワーク同士の位置関係が予め定められた条件を満たしているか、および、特定の変数値が予め定められた条件を満たしているかといった、テスト結果として期待される条件が満たされているか否かを判定するスクリプトおよびプログラムなどを含む。
【0136】
プログラム表示部506には、テストシナリオのクラスが登録されている。例えば、プログラム表示部506には、テストドライバ、事前状態準備プログラム、テストメインプログラム、および、事後検証プログラムのいずれかに含まれるクラスモジュールが選択可能に表示されている。ユーザは、プログラム表示部506に表示されている目的のスクリプトおよび/またはプログラムを選択して、コンフィグレーション表示部504にドラッグする。これによって、選択中の実行コンフィグレーション244にテストシナリオが設定される。実行コンフィグレーション244を用いた検証が実行されると、テストシナリオのインスタンスが生成されて実行される。
【0137】
図16は、本実施の形態に従う開発装置200が提供するテストシナリオを実行する際のユーザインターフェイス画面の一例を示す模式図である。
図16を参照して、同一の実行コンフィグレーション244には、階層別に複数のテストシナリオを設定することが可能である。例えば、
図16には、複数のフォルダが定義されており、各フォルダには独自のテストシナリオが関連付けられている。
【0138】
このような場合において、ダイアログ568に表示される複数の実行メニューのうち目的の実行形態を選択することで、複数のテストシナリオを連続実行することもできるし、特定のテストシナリオのみを実行することもできる。さらに、テストシナリオに含まれる一部のスクリプトおよび/またはプログラムのみを選択して実行することもできる。
【0139】
図17は、本実施の形態に従う開発装置200が提供するテストシナリオの実行結果を示すユーザインターフェイス画面の一例を示す模式図である。
図17を参照して、開発装置200は、テストシナリオ設定に従う実行結果を含むユーザインターフェイス画面550を提供する。
【0140】
実行コンフィグレーション244に含まれるテストシナリオが実行されると、テストシナリオの実行結果が実行コンフィグレーション244に格納される。ユーザインターフェイス画面550のコンフィグレーション表示部554には、実行コンフィグレーション244に追加されたテストシナリオの実行結果576も表示される。
【0141】
実行結果576を選択して、ダイアログ578に表示される「Open」を選択すると、実行結果576の内容を視覚的に出力される。
【0142】
図17に示すユーザインターフェイス画面550は、実行したテストシナリオのリストを表示するウィンドウ570と、実行したテストシナリオのログを表示するウィンドウ572と、テストシナリオの実行中にトレースされたデータをグラフ表示するウィンドウ574とを含む。
【0143】
ウィンドウ570には、実行された1または複数のテストシナリオの各々について、実行した日時(タイムスタンプ)および結果(OKまたはNG)などを示すリストが表示される。
【0144】
ウィンドウ572には、実行された1または複数のテストシナリオにおいて出力されたエラーコードや各種メッセージを含むログが表示される。
図17に示す例では、ネジ締め工程のテスト実行後、事後検証プログラムが実行されると、3Dモデルのシミュレーションにおいて、「BodyASSY129」という部品に対する、「HeadASSY129と」いう部品の相対位置が正常な範囲を超えていたというエラーを示す。
【0145】
ウィンドウ574には、テストシナリオの実行中にトレースされたデータが時系列グラフとして表示されている。
【0146】
<I.付記>
上述したような本実施の形態は、以下のような技術思想を含む。
【0147】
[構成1]
1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ(242)、ならびに、1または複数の実行コンフィグレーション(244)を含む、プロジェクトデータ(240)を格納する記憶部(220)と、
前記制御プログラムの実行をエミュレーションするエミュレータ(233)と、
前記3Dモデルを用いたシミュレーションを行うシミュレータ(235)と、
前記実行コンフィグレーションに基づいて、前記エミュレータおよび前記シミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュール(232)と、
前記実行コンフィグレーションを作成するためのユーザインターフェイス画面を提供する提供部(224)とを備え、
前記実行コンフィグレーションは、
前記クラスライブラリに含まれる3Dモデルのうち前記インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、
前記クラスライブラリに含まれる制御プログラムのうち前記インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、
前記インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、前記インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む、開発装置。
【0148】
[構成2]
前記プロジェクトデータは、互いに独立した複数の前記実行コンフィグレーションを含む、構成1に記載の開発装置。
【0149】
[構成3]
前記ユーザインターフェイス画面(500)は、前記クラスライブラリに含まれる前記制御プログラムおよび前記3Dモデルの少なくとも一方を表示する第1領域(506)と、前記実行コンフィグレーションの内容を表示する第2領域(504)とを含み、
前記提供部は、前記第1領域に表示される前記制御プログラムまたは前記3Dモデルの前記第2領域へのドラッグ操作に応答して、当該ドラッグされた制御プログラムまたは3Dモデルを前記実行コンフィグレーションに追加する、構成1または2に記載の開発装置。
【0150】
[構成4]
前記提供部は、前記エミュレータおよび前記シミュレータが前記インスタンスを実行した結果を含む第2のユーザインターフェイス画面(550)を提供する、構成1~3のいずれか1項に記載の開発装置。
【0151】
[構成5]
前記実行コンフィグレーションは、目的の検証を行うためのテストシナリオ設定を含み、
前記テストシナリオ設定は、
事前状態の準備を実現するためのスクリプトまたはプログラムと、
テスト実行中に動作させるスクリプトまたはプログラムと、
期待される事後状態を確認するためのスクリプトまたはプログラムと
のうち、少なくとも1つを含む、構成1~4のいずれか1項に記載の開発装置。
【0152】
[構成6]
前記提供部は、前記テストシナリオ設定に従う実行結果を含む第3のユーザインターフェイス画面(550)を提供する、構成5に記載の開発装置。
【0153】
[構成7]
前記実行コンフィグレーションは、機器同士の配置関係に対応した階層構造に沿って指定された複数の前記3Dモデルを含む、構成1~6のいずれか1項に記載の開発装置。
【0154】
[構成8]
前記クラスライブラリは、テストにおいてのみ使用されるスクリプトまたはプログラムを含む、構成1~7のいずれか1項に記載の開発装置。
【0155】
[構成9]
開発プログラム(230)であって、1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ(242)、ならびに、1または複数の実行コンフィグレーション(244)を含む、プロジェクトデータ(240)を格納する記憶部(220)を含むコンピュータを、
前記制御プログラムの実行をエミュレーションするエミュレータ(233)と、
前記3Dモデルを用いたシミュレーションを行うシミュレータ(235)と、
前記実行コンフィグレーションに基づいて、前記エミュレータおよび前記シミュレータが実行するインスタンスをそれぞれ生成するインスタンス生成モジュール(232)と、
前記実行コンフィグレーションを作成するためのユーザインターフェイス画面を提供する提供部(224)として機能させ、
前記実行コンフィグレーションは、
前記クラスライブラリに含まれる3Dモデルのうち前記インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、
前記クラスライブラリに含まれる制御プログラムのうち前記インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、
前記インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、前記インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む、開発プログラム。
【0156】
[構成10]
コンピュータ(200)が実行する制御プログラムの開発方法であって、
1または複数の制御プログラムと機器を示す1または複数の3Dモデルとを含むクラスライブラリ(242)、ならびに、1または複数の実行コンフィグレーション(244)を含む、プロジェクトデータ(240)を格納するステップと、
ユーザインターフェイス画面(500)を介したユーザ操作に応じて、前記実行コンフィグレーションを作成するステップと、
前記実行コンフィグレーションに基づいて、エミュレータ(233)およびシミュレータ(235)のためのインスタンスをそれぞれ生成するステップと、
前記エミュレータおよび前記シミュレータが前記インスタンスを実行するステップとを備え、
前記実行コンフィグレーションは、
前記クラスライブラリに含まれる3Dモデルのうち前記インスタンスとして生成される対象となる1または複数の3Dモデルの指定と、
前記クラスライブラリに含まれる制御プログラムのうち前記インスタンスとして生成される対象となる1または複数の制御プログラムの指定と、
前記インスタンスとして生成される対象となる1または複数の3Dモデルに含まれる仮想センサまたは仮想アクチュエータと、前記インスタンスとして生成される対象となる1または複数の制御プログラムが参照する変数との対応関係とを含む、開発方法。
【0157】
<J.利点>
PLCプログラムおよびロボットプログラムを含む制御プログラムを用いて生産設備に対する制御をシミュレーションで検証などする場合において、同一の生産設備に対する開発プロジェクトであっても、作業フェーズやシミュレーションの目的に応じて、使用するモデルや制御プログラムが異なってくる。
【0158】
例えば、開発の初期段階では、生産設備に配置される機構モジュールの挙動を確認する目的で、挙動を確認するための仮の動作スクリプトを用いて、すべてのシミュレーションを実行する。その後、基本設計フェーズにおいて、制御ソフトウェアのモジュール化およびモジュール間インターフェイスの定義が行われる。さらに、詳細設計・制作フェーズにおいては、モジュール毎に並列的に開発が行われる。
【0159】
モジュール開発においては、対象のモジュールに対応する制御プログラム単体が作成される。このように作成された制御プログラムは、連携する周辺モジュール(通常は、並行して開発中であり、まだ完成していない)に相当する処理を提供するテストドライバやテストスタブを用いて、単体でテストされる。この単体のテストにおいては、生産設備のうち対象の機器の挙動もシミュレーションスクリプトを用いて再現される。
【0160】
このように、開発過程に依存して、使用すべきプログラムおよび3Dモデルなどが異なってくる。
【0161】
このような要求に対して、本実施の形態においては、プロジェクトデータに1または複数の実行コンフィグレーションを含めることで、要求に対応する実行コンフィグレーションが任意に選択できるようになっている。こうような任意に作成できる実行コンフィグレーションを用いることで、ユーザは、MILS、SILS、HILS、単体テスト、統合テストなどの任意の目的に応じたシミュレーションを容易に実行できる。
【0162】
実行コンフィグレーションを選択的に利用できるようにすることで、ユーザは、開発の初期フェーズからその後の様々なフェーズに応じたシミュレーションを実現できる。
【0163】
また、本実施の形態においては、プロジェクトデータにテストシナリオを含めることもできる。また、テストシナリオを自動実行するとともに、テストシナリオの実行結果の一覧を表示することもできる。これによって、ユーザは、より効率的に開発中の制御プログラムなどを検証することができる。
【0164】
テストシナリオにおいては、部品間の相対位置が正常な範囲内であるか否かなどを評価することもできる。この場合には、生産設備および生産対象製品のCADデータなどを利用することもできる。
【0165】
さらに、テストシナリオには、データトレースおよびログ出力などの処理を含めることができる。トレースされたデータおよび出力されたログなどを確認することで、より効率的に開発を進めることができる。
【0166】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0167】
1 システム、10 フィールドネットワーク、12 リモートI/Oデバイス、14 フィールドデバイス、16 上位ネットワーク、20 サーボドライバ、22 サーボモータ、30 ロボット、40 機器群、62 上位管理モジュール、64 動作シーケンス、66 機構制御モジュール、100 PLC、200 開発装置、202 プロセッサ、204 メインメモリ、206 入力部、208 表示部、210 USBコントローラ、212 ネットワークコントローラ、214 光学ドライブ、216 記録媒体、218 バス、220 ストレージ、222 OS、224 ユーザインターフェイスモジュール、230 開発プログラム、231 ソースエディタ、232 インスタンス生成モジュール、233 制御機器エミュレータ、234 アプリケーションエミュレータ、235 3Dモデルシミュレータ、236 ビジュアライザ、237 共有メモリ、238 実機器インターフェイス、239 評価モジュール、240 プロジェクトデータ、242 クラスライブラリ、244 実行コンフィグレーション、246 3Dモデル設定、248 プログラムインスタンス設定、300 HMI、400 画像処理装置、450 カメラ、500,550 ユーザインターフェイス画面、502,552 プルダウンメニュー、504,554 コンフィグレーション表示部、506 プログラム表示部、508 表示領域、510,512,514,516 タブ、520,522,524,556,558,570,572,574 ウィンドウ、526 制御機器リスト、532,568,578 ダイアログ、534,536 入力ボックス、538 画像表示部、540,542,544 カラム群、560 事前状態準備プログラム、562 テストメインプログラム、564 事後検証プログラム、576 実行結果。