[1.第1実施形態]
以降、本開示に係るプログラム作成装置の第1実施形態の一例を説明する。第1実施形態では、プログラム作成装置を含む制御システムを例に挙げる。
[1-1.制御システムの全体構成]
図1は、制御システムの全体構成の一例を示す図である。図1に示すように、制御システム1は、制御装置10、産業機器20A,20B、及びプログラム作成装置30を含む。各装置は、Ethernet(登録商標)等の一般的なネットワーク、又は、産業用ネットワーク(いわゆるフィールドネットワーク)により、互いに通信可能に接続される。以降では、産業機器20A,20Bを区別しないときは、末尾のアルファベットを省略して、単に産業機器20と記載する。
制御装置10は、1以上の産業機器20を制御するコンピュータである。制御装置10は、任意の数の産業機器20を制御可能である。制御システム1全体をセルと呼ぶ場合、制御装置10は、セルコントローラと呼ばれることがある。制御装置10は、PLC(Programmable Logic Controller)のように他の名称の装置であってもよい。制御装置10は、CPU11、記憶部12、及び通信部13を含む。CPU11は、少なくとも1つのプロセッサを含む。CPU11は、circuitryの一種である。記憶部12は、揮発性メモリと、不揮発性メモリと、の少なくとも一方を含む。通信部13は、有線通信用の通信インタフェースと、無線通信用の通信インタフェースと、の少なくとも一方を含む。
産業機器20は、人の代わりに作業を行うための機器である。例えば、産業機器20Aは、ロボット24を制御するロボットコントローラであり、産業機器20Bは加工装置である。産業機器20は、任意の種類であってよく、例えば、モータコントローラ、モーションコントローラ、サーボアンプ、数値制御装置、電力変換装置、検査装置、又は計測装置であってもよい。産業機器20は、CPU21、記憶部22、及び通信部23を含む。CPU21、記憶部22、及び通信部23の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。なお、本実施形態では、図1のCPU21A等の構成を区別しないので、アルファベットを省略して、単にCPU21等と記載する。
プログラム作成装置30は、ユーザが操作する装置である。例えば、プログラム作成装置30は、パーソナルコンピュータ、タブレット型端末、又はスマートフォンである。例えば、プログラム作成装置30は、CPU31、記憶部32、通信部33、操作部34、及び表示部35を含む。CPU31、記憶部32、及び通信部33の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。操作部34は、マウス又はキーボードなどの入力デバイスである。表示部35は、液晶ディスプレイ又は有機ELディスプレイである。
なお、記憶部12,22,32の各々に記憶されるプログラム及びデータは、ネットワークを介して供給されてもよい。また、各装置のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、メモリカードスロット)や外部機器と接続するための入出力部(例えば、USB端子)が含まれてもよい。この場合、情報記憶媒体に記憶されたプログラム及びデータが、読取部又は入出力部を介して供給されてもよい。他にも例えば、FPGA又はASICと呼ばれる回路が含まれてもよい。
[1-2.制御システムの概要]
制御システム1では、複数の対象物の各々に対し、複数の工程の各々が所定の順序で実行される。対象物は、作業の対象となる物である。対象物は、ワークとも呼ばれる。対象物は、最終的に生産される製品、中間的な生成物、素材、又は原料の何れであってもよい。対象物は、任意の種類であってよく、例えば、半導体、電化製品、自動車、食品、飲料、医薬品、又は日用品である。工程とは、対象物に対する作業である。工程は、産業機器20の動作ということもできる。
図2は、制御システム1における工程の順序の一例を示す図である。本実施形態では、複数の対象物の各々に対し、工程p1~p7が図2に示す順序で実行される場合を説明する。図2の例では、complete、timeout、abortの3種類の矢印により、工程p1~p7の順序が示される。矢印の種類により、下記に説明する実行条件が区別される。以降では、工程p1~p7を特に区別する必要がないときは、p1~p7の符号を省略する。
工程p1~p7の各々は、任意の種類であってよく、例えば、対象物の搬入、移動(搬送)、計測、加工、洗浄、検査、又は搬出である。工程p1は、最初に実行される工程である。工程p1には、所定の実行条件が設定される。例えば、産業機器20に対する電源の投入、又は、1つ前の対象物に対する全工程の完了といった任意の実行条件が満たされると、工程p1が開始する。
工程p2の実行条件は、工程p1の完了である。工程p1が完了すると、工程p2が開始する。工程p3~工程p6の各々の実行条件は、工程p2の完了である。工程p2が完了すると、工程p3~p6の各々が開始する。工程p3~p6は、並行して実行される。工程p6が一定時間経過しても完了せずにタイムアウトになると、工程p2が再び実行される。このため、工程p6のタイムアウトは、工程p2の実行条件の1つである。
工程p7の実行条件は、工程p3~p6の各々の完了である。工程p7は、工程p3~p6の各々が完了するたびに実行されるので、ある1つの対象物に対し、工程p7は4回実行される。工程p7が途中でアボートになると、工程p6が再び実行される。このため、工程p7のアボートは、工程p6の実行条件の1つである。
ある対象物に対する工程p7が完了すると、その対象物に対する全工程が完了する。その後、次の対象物に対し、工程p1~p7の各々が同じ順序で実行される。なお、ある対象物に対する全工程が完了した後に、次の対象物の工程p1が開始するのではなく、ある対象物に対する工程と、他の対象物に対する工程と、が同時並行して実行されてもよい。
ユーザは、図2の順序で工程p1~p7が実行されるように、制御装置10の制御プログラムを作成する。制御プログラムは、制御システム1全体を制御するためのプログラムなので、セルプログラムと呼ばれることもある。制御プログラムは、図2の全体的な流れが定義されている。産業機器20に個々の工程を指示する流れは、制御プログラムとは別の指示プログラムに定義されている。なお、制御プログラムと指示プログラムに分けるのではなく、1つのプログラムに一体化されていてもよい。
図2の矢印で示した各工程の実行条件は、制御プログラムに定義されている。制御装置10は、制御プログラムを実行して、各工程の実行条件が満たされたか否かを判定する。制御装置は、ある工程の実行条件が満たされた場合に、その工程の実行指示を送信するための指示プログラムを実行し、その工程を実行する産業機器20に対し、その工程の実行指示を送信する。産業機器20は、実行指示を受信すると、実行が指示された工程の具体的な動作が定義された工程プログラムを実行する。このため、第1実施形態では、主に、制御装置10が実行する制御プログラム及び指示プログラムと、産業機器20が実行する工程プログラムと、の3種類のプログラムが存在する。
なお、指示プログラムは、後述する第2実施形態のようにテンプレートを利用して作成されてもよいが、第1実施形態では、指示プログラムの作成方法は問わないものとする。例えば、ユーザは、第2実施形態のテンプレートを用いずに、ラダー言語又はロボット言語等を利用して指示プログラムを作成してもよい。本実施形態では、工程p1~p7にそれぞれ対応する7個の指示プログラムは、予め作成されているものとする。
ユーザは、図2の順序で工程p1~p7の各々の指示プログラムを呼び出すように、制御プログラムを作成する。第1実施形態では、産業機器20のメンテナンス等をするためのエンジニアリングツールがプログラム作成装置30にインストールされており、ユーザは、エンジニアリングツールを利用して制御プログラムを作成する。例えば、ユーザがプログラム作成装置30を操作してエンジニアリングツールを起動させると、制御プログラム作成画面が表示部35に表示される。
図3は、制御プログラム作成画面の一例を示す図である。図3に示すように、制御プログラム作成画面G1は、制御プログラムを作成するためのユーザインタフェースである。第1実施形態では、ユーザは、ラダー言語又はロボット言語等で命令を記述しなくても、工程の順序を指定するだけで制御プログラムを作成できる。例えば、工程の順序を指定する方法として、前工程指定モードと、後工程指定モードと、が存在する。
前工程指定モードは、ある工程の前に実行される他の工程である前工程を指定するモードである。即ち、前工程指定モードは、ある工程の実行条件として前工程を指定するモードである。本実施形態では、前工程が1つ前の工程である場合を説明するが、前工程は、2つ以上前の工程であってもよい。前工程として、複数の工程が指定されてもよい。
後工程指定モードは、ある工程の後に実行される他の工程である後工程を指定するモードである。即ち、後工程指定モードは、後工程の実行条件として、ある工程(後工程から見れば前工程に相当する工程)を指定するモードである。本実施形態では、後工程が1つ後の工程である場合を説明するが、後工程は、2つ以上後の工程であってもよい。後工程として、複数の工程が指定されてもよい。
ユーザは、前工程指定モード及び後工程指定モードのうちの好きな方を利用して、各工程の順序を指定できる。ユーザが指定した工程の順序は、制御プログラム作成画面G1の表示領域A10に表示される。図3の例では、ユーザがまだ何も指定していないので、表示領域A10には何も表示されない。ユーザは、ボタンB11,B12を選択することによって、前工程指定モードと、後工程指定モードと、を切り替えることができる。例えば、ユーザが、ボタンB11を選択すると、前工程指定モードで工程の順序を指定するためのユーザインタフェースである指定画面が表示部35に表示される。
図4は、前工程指定モードの指定画面の一例を示す図である。図4に示すように、前工程指定モードの指定画面G2には、入力フォームF20~F24と、ボタンB25~B28と、が表示される。以降、ユーザが工程p2の前工程を指定する場合を例に挙げて、前工程指定モードの指定画面G2に対する操作を説明する。工程p2は工程p1が完了した場合に実行されるので、ユーザは、工程p2の実行条件として、工程p1の完了を指定する。即ち、ユーザは、工程p2の前工程として工程p1を指定する。
まず、ユーザは、入力フォームF20~F22の各々に対し、前工程が指定される工程p2を特定するための情報として、工程p2の工程ID、工程p2の種類を示す工程ブロック種類、及び工程p2の名前の各々を指定する。なお、指定画面G2が表示される前に、工程p2が予め指定される場合には、工程ID、工程ブロック種類、及び工程の名前は指定できないように、入力フォームF20~F22の各々がグレーアウトされてもよい。
ユーザは、入力フォームF23に対し、工程p2の前工程を指定する。即ち、ユーザは、入力フォームF23に対し、工程p2の実行条件を指定する。例えば、ユーザは、入力フォームF23Aに対し、前工程である工程p1の工程IDを指定する。入力フォームF23Aには、プルダウンメニュー等によって、前工程の候補となる他の工程の工程IDが表示されてもよい。ユーザは、プルダウンメニュー等から前工程を指定してもよいし、入力フォームF23Aに前工程の工程IDを直接入力してもよい。
また例えば、ユーザは、入力フォームF23Bに対し、前工程である工程p1の処理結果を指定する。処理結果は、前工程のステータスである。例えば、処理結果は、前工程が正常に完了したか否かを示す。本実施形態では、複数の処理結果が存在し、例えば、図2の矢印に示したcomplete、timeout、及びabortの3つの処理結果が存在する。処理結果は、本実施形態の例に限られず、任意の処理結果が存在してよい。例えば、エラー、復旧、又は割り込みなどの処理結果が存在してもよい。
入力フォームF23Bには、プルダウンメニュー等によって、候補となる処理結果が表示されてもよい。ユーザは、プルダウンメニュー等から処理結果を指定してもよいし、入力フォームF23Bに処理結果を直接入力してもよい。例えば、ユーザは、入力フォームF23Bに対し、completeを指定する。以上の操作により、工程p2の実行条件として、工程p1のcompleteが指定される。即ち、工程p1と工程p2の順序が指定される。
ユーザは、実行条件として、複数の条件を指定できる。ユーザは、複数の条件に対し、AND条件及びOR条件の少なくとも一方を指定できる。例えば、ユーザは、入力フォームF23Cに対し、AND条件として、他の条件を指定できる。他の条件は、工程の処理結果でなくてもよく、例えば、処理結果とは関係のない変数の値やセンサの信号などの条件であってもよい。ユーザは、ボタンB23Dを選択してAND条件を追加できる。ボタンB23Dが選択されると、AND条件を指定するための入力フォームF23A~F23Cが追加される。ユーザが指定可能なAND条件には、上限数が設定されていてもよい。
ユーザは、OR条件を指定したい場合には、ボタンB23Eを選択する。ボタンB23Eが選択されると、OR条件を指定するための入力フォームF23A~F23Cが追加される。工程p2は、工程p6がタイムアウトになった場合にも実行されるので、ユーザは、ボタンB23Eを選択し、OR条件として、前工程である工程p6の工程IDと、「timeout」の処理結果と、を指定する。これにより、工程p2の実行条件は、工程p1のcompleteと、工程p6のtimeoutと、のOR条件になる。
ユーザは、入力フォームF24に対し、アボートに相当する中止条件を指定できる。図2の流れでは、工程p2のアボートは考慮しないので、ユーザは、入力フォームF24には何も指定しない。工程p6のように、アボートが考慮される工程については、入力フォームF24に対し、中止条件が指定される。中止条件は、任意の条件であってよく、例えば、所定の変数の値、センサの信号、又は対象物の状態などの条件であってもよい。
ユーザは、ボタンB25を選択し、工程p2の処理タイプを指定できる。処理タイプは、工程p2の種類である。本実施形態では、処理タイプとして、並列処理と分岐処理とが用意されている。並列処理は、ある対象物に対して複数回実行されうる処理である。分岐処理は、ある対象物に対して1回だけ実行される処理である。工程p2は、工程p6がアボートされない限りは再実行されないので、図4に示すように、ユーザは、工程p2に対し、並列処理を指定する。
ユーザは、ボタンB26を選択し、工程p2に対し、集中工程の有無を指定できる。集中工程は、前工程が多数存在する工程である。本実施形態では、ユーザが指定可能なOR条件に上限数が定められており、集中工程については、この上限数が解除される。例えば、集中工程ではない工程は、上限数が10個程度に制限されており、集中工程については、上限数が50個程度になる。なお、OR条件ではなく、AND条件の上限数が解除されてもよい。また、OR条件とAND条件の合計の上限数を定めておき、この上限数が解除されてもよい。
ユーザは、ボタンB27を選択すると、工程p2の前工程の指定を完了できる。その後、ユーザは、前工程指定モードのまま、他の工程p3~p7の前工程を指定できる。例えば、ユーザは、工程p6の前工程として工程p2,p7を指定し、工程p2のcompleteと、工程p7のabortと、をOR条件で指定する。また例えば、ユーザは、工程p7の前工程として工程p3~p6を指定し、工程p3~p6の各々のcompleteをOR条件で指定する。なお、ユーザがボタンB28を選択すると、指定内容が保存されずに破棄される。
ユーザは、全ての工程の実行条件を前工程指定モードで指定してもよいが、例えば、工程p7のように、前工程として、複数の工程p3~p6が存在する場合には、後工程指定モードの方が工程の順序を指定しやすいことがある。例えば、ユーザが、制御プログラム作成画面G1のボタンB12を選択すると、後工程指定モードで工程の順序を指定するためのユーザインタフェースである指定画面G2が表示部35に表示される。
図5は、後工程指定モードの指定画面G2の一例を示す図である。以降、ユーザが前工程指定モードで工程p3の後工程を指定する場合を例に挙げて説明する。図5に示すように、後工程指定モードの指定画面G2は、前工程指定モードの指定画面G2と一部のレイアウトが共通しており、実行条件を指定するための部分が異なる。
ユーザは、入力フォームF23Fに対し、工程p3の処理結果を指定する。工程p3の後工程である工程p7は、工程p3が完了した場合に実行されるので、ユーザは、入力フォームF23Fに対し、completeを指定する。入力フォームF23Fは、図4の入力フォームF23Bと同様に、プルダウンメニュー等が表示されてもよい。ユーザは、入力フォームF23Gに対し、工程p3の後工程である工程p7を一意に識別可能な工程IDを指定する。入力フォームF23Gは、図4の入力フォームF23Aと同様に、プルダウンメニュー等が表示されてもよい。
なお、ユーザは、後工程の実行条件としてAND条件を指定する場合、チェックボックスB23Hにチェックを入れる。ユーザは、入力フォームF23に対し、AND条件を指定する。2つ以上のAND条件が存在する場合には、ユーザは、ボタンB23Jを選択し、2つ目以降のAND条件を指定する。図2の流れでは、工程p3の後工程である工程p7の実行条件は、AND条件を含まないので、ユーザは、AND条件を指定しない。
ユーザは、2つ以上の後工程が存在する場合、ボタンB23Kを選択して後工程を追加できる。例えば、工程p3の後に、工程p7だけでなく、図2には存在しない工程p8を実行させる場合には、ユーザは、ボタンB23Kを選択して工程p8を追加する。工程p2であれば、工程p3~p6の4つの後工程が存在するので、ユーザは、後工程指定モードで工程p2の実行条件を指定する場合、ボタンB23Kを選択し、これら4つの後工程を指定する。
なお、工程p7は、工程p3~p6の各々が完了した場合に実行されるので、ユーザは、工程p3だけではなく、工程p4~p6の各々についても、後工程指定モードの指定画面G2から、後工程として工程p7を指定できる。ユーザは、前工程指定モード及び後工程指定モードの少なくとも一方の指定画面G2から、工程p1~p7の各々の実行条件を指定すればよい。ユーザが指定した実行条件は、制御プログラム作成画面G1の表示領域A10に反映される。
図6は、各工程の順序が指定された場合の制御プログラム作成画面G1の一例を示す図である。図6に示すように、制御プログラム作成画面G1の表示領域A10には、ユーザが指定した工程p1~p7の順序が表示される。例えば、工程p1~p7の各々の順序に応じた配置になるように、工程p1~p7の各々を示すボックスが表示され、工程p1~p7の各々の実行条件を示すように、各ボックスをつなぐ矢印が表示される。
ユーザは、工程p1~p7が所望の順序になっていることを確認すると、制御プログラムを作成するためのボタンB13を選択する。プログラム作成装置30は、ボタンB13が選択されると、表示領域A10に表示された順序で工程p1~p7の各々が実行されるように、制御プログラムを作成する。ユーザが指定した順序から制御プログラムを作成する具体的な方法については後述する。
以上のように、本実施形態のプログラム作成装置30は、前工程指定モード及び後工程指定モードの少なくとも一方の指定画面G2を利用して、ユーザに各工程の順序を指定させる。ユーザは、指定画面G2から各工程の順序を指定すれば、ラダー言語又はロボット言語等を利用しなくても制御プログラムを作成できるので、制御プログラムの作成が簡易化する。以降、本実施形態の制御システム1の詳細を説明する。
[1-3.第1実施形態で実現される機能]
図7は、第1実施形態の制御システム1で実現される機能を示す機能ブロック図である。本実施形態では、制御装置10、産業機器20、及びプログラム作成装置30の各々で実現される機能について説明する。
[1-3-1.制御装置で実現される機能]
図7に示すように、制御装置10は、データ記憶部100と、産業機器制御部101と、を含む。データ記憶部100は、記憶部12を主として実現される。産業機器制御部101は、CPU11を主として実現される。
[データ記憶部]
データ記憶部100は、産業機器20を制御するために必要なデータを記憶する。例えば、データ記憶部100は、制御プログラム作成部305により作成された制御プログラムと、予め作成された指示プログラムと、を記憶する。また例えば、データ記憶部100は、制御プログラム及び指示プログラムの少なくとも一方により、参照及び変更の少なくとも一方が行われる変数を記憶する。この変数は、工程を制御するために使用される。後述する開始変数と終了変数は、この変数の一例である。後述する第2実施形態で説明するメインコマンドなども、この変数の一例である。変数の使用方法の詳細は後述する。
なお、データ記憶部100は、産業機器20のデータ記憶部200に記憶される変数と同じものを記憶してもよい。この場合、データ記憶部100の変数とデータ記憶部200の変数とは、整合性が取られるものとする。変数の整合性は、定期的に取られてもよいし、不定期的に取られてもよい。変数は、工程の制御に関するものに限られず、センサが検出した物理量を示す変数等の種々の変数が存在可能である。
[産業機器制御部]
産業機器制御部101は、制御プログラムに基づいて、各工程が所定の順序で実行されるように、産業機器20を制御する。例えば、産業機器制御部101は、制御プログラムに基づいて、制御装置10から1以上の産業機器20に対し、各工程の実行指示を送信する。本実施形態では、産業機器制御部101は、個々の工程に対応する変数を変更することによって、産業機器20に、その工程を実行させる。このため、工程の実行指示は、変数の変更指示ということができる。
例えば、各工程には、その工程を開始するための開始変数と、その工程が終了(完了)したか否かを示す終了変数と、が定められている。各工程の開始変数と終了変数は、その工程を実行する産業機器20に記憶されている。データ記憶部100には、産業機器20に記憶された開始変数と終了変数と同様のものが記憶されており、互いに整合性が取られている。産業機器制御部101は、各工程の開始変数と終了変数を制御することによって、産業機器20に各工程を実行させる。
図2の例であれば、産業機器制御部101は、制御プログラムを実行し、工程p1の実行条件が満たされたか否かを判定する。産業機器制御部101は、工程p1の実行条件が満たされたと判定された場合に、工程p1に対応する指示プログラムを呼び出して、工程p1を実行する産業機器20に対し、工程p1の実行指示を送信する。この実行指示には、工程p1の開始変数を第1の値(例えば、0)から第2の値(例えば、1)に変更するための指示である。
例えば、産業機器制御部101は、データ記憶部100に記憶された工程p1に対応する開始変数を第2の値に変更し、工程p1を実行する産業機器20に対し、この開始変数の整合性を取ることを示す実行指示を送信してもよい。産業機器20が実行指示を受信すると、後述する工程実行部201は、工程p1の開始変数を第2の値に変更する。工程実行部201は、工程p1の開始変数が第2の値に変更したことを検知すると、工程p1の工程プログラムを実行し、工程p1を開始する。
工程実行部201は、工程p1の工程プログラムの最後の部分まで実行すると、工程p1の終了変数を第1の値(例えば、0)から第2の値(例えば、1)に変更する。工程実行部201は、制御装置10に対し、工程p1の終了変数が第2の値に変化したことを示す応答を送信する。制御装置10が応答を受信すると、産業機器制御部101は、データ記憶部100に記憶された工程p1の終了変数を第2の値に変更する。
産業機器制御部101は、工程p1の終了変数が第2の値に変更したことを検知すると、工程p2の実行条件が満たされたと判定し、工程p2に対応する指示プログラムを呼び出す。以降、以降同様にして、産業機器制御部101は、最後の工程p7が完了するまで、各工程の開始変数と終了変数を制御する。
なお、本実施形態では、タイムアウトとアボートも実行条件として指定されるので、タイムアウトを示すタイムアウト変数と、アボートを示すアボート変数と、が存在してもよい。この場合、開始変数及び終了変数と同様、産業機器制御部101は、タイムアウト変数及びアボート変数を参照することによって、タイムアウト及びアボートを検知すればよい。
例えば、工程p2は、工程p6のタイムアウトも実行条件になるので、産業機器制御部101は、工程p6のタイムアウト変数を参照し、工程p6のタイムアウトを検知する。産業機器制御部101は、工程p6のタイムアウトを検知すると、工程p2の実行条件が満たされたと判定し、工程p2に対応する指示プログラムを呼び出す。また例えば、工程p6は、工程p7のアボートも実行条件になるので、産業機器制御部101は、工程p7のアボート変数を参照し、工程p7のアボートを検知する。産業機器制御部101は、工程p7のアボートを検知すると、工程p6の実行条件が満たされたと判定し、工程p6に対応する指示プログラムを呼び出す。
なお、産業機器20の制御方法自体は、種々の方法を利用可能であり、変数を利用する方法に限られない。例えば、産業機器制御部101は、産業機器20に対し、実行すべき工程を示すコマンドを送信することによって、産業機器20を制御してもよい。産業機器20は、受信したコマンドを参照して実行すべき工程を特定し、その工程の工程プログラムを実行してその工程を開始すればよい。
[1-3-2.産業機器で実現される機能]
産業機器20では、データ記憶部200と、工程実行部201と、が実現される。データ記憶部200は、記憶部22を主として実現される。工程実行部201は、それぞれCPU21を主として実現される。図1に示す産業機器20A,20Bの各々は、同様の機能を有するので、単に産業機器20と記載して説明する。
[データ記憶部]
データ記憶部200は、工程を実行するために必要なデータを記憶する。例えば、データ記憶部200は、工程プログラムを記憶する。工程プログラムは、工程ごとに用意される。工程プログラムには、工程における個々の動作が定義されている。また例えば、データ記憶部200は、工程プログラムにより参照及び変更の少なくとも一方が行われる変数を記憶する。この変数には、工程プログラムの実行条件になる変数が含まれているものとする。例えば、工程ごと(工程プログラムごと)に、開始変数と終了変数とが用意される。先述したように、工程プログラムの実行は、変数によって制御されるのではなく、制御装置10からのコマンドによって制御されてもよい。
[工程実行部]
工程実行部201は、工程プログラムに基づいて、工程を実行する。工程実行部201は、制御装置10からある工程の実行指示を受信した場合に、その工程の工程プログラムを実行して工程を開始する。本実施形態では、工程プログラムごとに開始変数と終了変数が用意されているので、工程実行部201は、開始変数が第1の値から第2の値になったか否かを判定する。工程実行部201は、開始変数が第2の値になったことを検知した後の処理は、先述した通りである。第2の値になった開始変数及び終了変数は、所定のタイミングで第1の値に戻る。
工程実行部201は、制御装置10から実行指示を受信することとは異なる実行条件に基づいて、自身が実行すべき工程を実行してもよい。即ち、工程実行部201は、制御装置10から工程の実行指示を受信したとしても、他の実行条件が満たされていなければ、その工程を実行しなくてもよい。他の実行条件は、産業機器20が判定可能な条件であればよく、例えば、対象物の渋滞が発生しないこと、エラーが発生しないこと、又は他の産業機器20が所定の状態であることである。他の実行条件は、産業機器20に接続されたセンサの検出信号、又は、他の産業機器20との通信内容に基づいて判定される。センサは、任意の種類であってよく、例えば、トルクセンサ、ビジョンセンサ、モータエンコーダ、温度センサ、把持センサ、又は温度センサなどであってよい。
[1-3-3.プログラム作成装置で実現される機能]
図7に示すように、プログラム作成装置30は、データ記憶部300、受付部303、条件増加部304、工程情報取得部301、指定画面表示制御部302、及び制御プログラム作成部305を含む。データ記憶部300は、記憶部32を主として実現される。受付部303、条件増加部304、工程情報取得部301、指定画面表示制御部302、及び制御プログラム作成部305の各々は、CPU31を主として実現される。
[データ記憶部]
データ記憶部300は、制御システム1における設定を行うために必要なデータを記憶する。例えば、データ記憶部300は、機器情報データベースDB1と、工程情報データベースDB2と、を記憶する。
図8は、機器情報データベースDB1のデータ格納例を示す図である。図8に示すように、機器情報データベースDB1は、制御装置10の制御対象となる産業機器20に関する機器情報が格納されたデータベースである。例えば、機器情報データベースDB1には、セル名、産業機器20の名前、種類、レジスタ範囲、通信設定、及び制御プログラム情報が格納される。複数のセルが存在する場合には、セルごとに、これらの情報が格納される。
ユーザは、エンジニアリングツールを利用して、個々の産業機器20の設定として機器情報を作成する。例えば、ユーザは、エンジニアリングツールから、制御装置10の制御対象となる産業機器20の名前、種類、レジスタ範囲、及び通信設定を指定する。機器情報データベースDB1には、これらの指定内容が格納される。制御プログラム情報は、制御プログラム作成部305により作成された制御プログラムに関する情報であり、例えば、制御プログラムのファイル名や関連する指示プログラムの情報などである。
本実施形態では、産業機器20ごとに、その産業機器20を制御するためのレジスタ範囲が定められている。例えば、産業機器20Aを制御するために、制御装置10の0番~4999番までのレジスタ範囲のレジスタが使用され、産業機器20Bを制御するために、制御装置10の5000番~12000番までのレジスタ範囲のレジスタが使用されるといったように、個々の産業機器20専用のレジスタ範囲が設定されている。例えば、レジスタ範囲として、先頭レジスタ番号と、終了レジスタ番号と、が格納される。なお、レジスタは、制御装置10内のメモリの記憶領域である。
図9は、工程情報データベースDB2のデータ格納例を示す図である。図9に示すように、工程情報データベースDB2は、個々の産業機器20が実行する工程に関する工程情報が格納される。例えば、工程情報データベースDB2には、工程ID、工程の名前、産業機器20の名前、工程が実行される順序、工程の実行条件、指示プログラム情報、工程プログラム情報、及び開始変数や終了変数などの変数に関する変数情報が格納される。
ユーザは、エンジニアリングツールを利用して、個々の工程の設定として工程情報を作成する。例えば、ユーザは、エンジニアリングツールから、個々の産業機器20が実行する工程の工程ID及び名前を指定する。機器情報データベースDB1には、これらの指定内容が格納される。
工程情報データベースDB2に格納される順序及び実行条件は、前工程指定モード又は後工程指定モードの指定画面G2から指定された内容が格納される。図9では、各モードで表現される実行条件を示しているが、これらは互いにコンバート可能であり、1つの実行条件だけが格納されるようにしてもよい。なお、図9では省略しているが、中止条件、処理タイプ、及び集中工程の有無といった情報も工程情報データベースDB2に格納されてもよい。
指示プログラム情報は、ユーザにより作成された指示プログラムに関する情報であり、例えば、指示プログラムのファイル名、指示相手の産業機器20の名前、及びコメントなどである。工程プログラム情報は、ユーザにより作成された工程プログラムに関する情報であり、例えば、工程プログラムのファイル名、工程プログラムを実行する産業機器20の名前、及びコメントなどである。変数情報は、各工程で使用される変数に関する情報である。例えば、個々の工程の開始変数及び終了変数などの情報が変数情報として格納される。
なお、データ記憶部300が記憶するデータは、上記の例に限られない。例えば、データ記憶部300は、エンジニアリングツールを記憶する。エンジニアリングツールは、各種プログラムの作成、パラメータの設定、装置間の通信設定、レジスタの定義、又は変数の定義といった種々の目的で利用される。また例えば、データ記憶部300は、ユーザがエンジニアリングツールを利用して作成されたプログラムやパラメータのバックアップを記憶してもよい。
[工程情報取得部]
工程情報取得部301は、1以上の産業機器20が実行する複数の工程の各々に関する工程情報を取得する。本実施形態では、工程情報が工程情報データベースDB2に格納されているので、工程情報取得部301は、工程情報データベースDB2に格納された工程情報を取得する。例えば、工程情報取得部301は、指定画面G2において、前工程又は後工程が指定される工程の工程情報を取得する。工程情報は、工程情報データベースDB2以外のデータベースに含まれていてもよい。また、工程情報は、プログラム作成装置30以外のコンピュータに記憶されていてもよい。
[指定画面表示制御部]
指定画面表示制御部302は、各工程の工程情報に基づいて、各工程の前工程と後工程の少なくとも一方を指定する指定画面G2を表示させる。本実施形態では、指定画面表示制御部302は、前工程指定モードの指定画面G2と、後工程指定モードの指定画面G2と、の両方を表示させる場合を説明するが、指定画面表示制御部302は、前工程指定モードの指定画面G2、又は、後工程指定モードの指定画面G2の何れか一方のみを表示させてもよい。
例えば、指定画面表示制御部302は、切替操作に基づいて、前工程指定モードと後工程指定モードとを切り替える。本実施形態では、ボタンB11,B12を選択することが切り替え操作に相当する場合を説明するが、切替操作は、任意の操作であってよい。例えば、切替操作は、キーボードの所定のキーを押下すること、画面上のメニューの所定の項目を選択すること、又は所定のアイコンを選択することであってもよい。
前工程指定モードは、前工程の指定を受け付ける状態である。本実施形態では、図4の指定画面G2を表示させる状態が前工程指定モードに相当する。後工程指定モードは、後工程の指定を受け付ける状態である。本実施形態では、図5の指定画面G2を表示させる状態が後工程指定モードに相当する。
モードの切り替えとは、モードを変更することである。即ち、前工程指定モードから後工程指定モードに変更すること、及び、後工程指定モードから前工程指定モードに変更することの各々は、モードの切り替えに相当する。指定画面表示制御部302は、モードを切り替えるのではなく、前工程指定モードの指定画面G2と、後工程指定モードの指定画面G2と、の両方を表示させてもよい。指定画面表示制御部302は、特にモードの区別をせずに、前工程と後工程の両方の指定を受け付ける指定画面G2を表示させてもよい。
例えば、指定画面G2では、各工程の実行条件として、前工程の識別情報と処理結果とが指定される。工程の識別情報は、工程を識別可能な情報であればよく、例えば、工程ID又は工程の名前である。本実施形態では、入力フォームF20,F22から工程の識別情報を指定可能であり、入力フォームF23B,F23Fから処理結果が指定可能である。なお、前工程の識別情報と処理結果は、入力フォーム以外の任意のインタフェースを利用して指定可能である。例えば、チェックボックス、ラジオボタン、又はプルダウンメニュー等を利用してもよい。この点は、他の情報についても同様であり、ユーザによる指定を受け付けるインタフェースは、本実施形態の例に限られない。
例えば、前工程指定モードの指定画面G2では、実行条件として、複数の前工程の各々の識別情報と処理結果と組み合わせ条件とが指定される。組み合わせ条件は、複数の前工程の組み合わせ方であり、AND条件、又は、OR条件である。本実施形態では、入力フォームF23C、ボタンB23D,B23Eから組み合わせ条件が指定される。例えば、ユーザが前工程指定モードで工程p7の実行条件を指定する場合、入力フォームF23A,F23及びボタンB23Eに対する操作によって、前工程である工程p3~p6の各々の工程ID及び処理結果を、OR条件で指定する。複数の前工程の全てをAND条件又はOR条件でつなぐ必要はなく、AND条件とOR条件が混在してもよい。
例えば、後工程指定モードの指定画面G2では、各工程の処理結果と、当該工程の後工程の識別情報と、が当該後工程の実行条件として指定される。本実施形態では、入力フォームF23Fから各工程の処理結果が指定され、入力フォームF23Gから後工程の識別情報が指定される。例えば、ユーザが後工程指定モードで工程p3の後工程を指定する場合、入力フォームF23Fに工程p3の処理結果を指定し、入力フォームF23Gに後工程である工程p7の工程を指定する。
例えば、後工程指定モードの指定画面G2では、各工程の処理結果と、他の工程の処理結果と、当該工程と当該他の工程の組み合わせ条件と、後工程の識別情報と、が実行条件として指定される。本実施形態では、入力フォームF23I及びボタンB23Jから他の工程の処理結果及び組み合わせ条件が指定される。入力フォームF23I又はボタンB23Jが選択された場合には、AND条件が指定されるものとするが、OR条件の指定が受け付けられてもよい。例えば、ある工程p9,p10の両方が完了した後に工程p11が実行される場合には、ユーザは、入力フォーム23F,23Gと、入力フォームF23I又はボタンB23Jと、に対する操作によって、工程p9のcompleteと、工程p10のcompleteと、をAND条件で指定し、後工程として工程p11を指定する。
例えば、後工程指定モードの指定画面G2では、各工程の処理結果と、当該工程の複数の後工程の各々の識別情報と、が各後工程の実行条件として指定される。本実施形態では、ボタンB23Kが選択されると、他の後工程を追加して複数の後工程できる状態になる。例えば、ユーザが後工程指定モードで工程p2の後工程を指定する場合、入力フォーム23Gに対する操作によって、後工程の1つである工程p3を指定した後に、ボタンB23Kを選択し、工程p4~p6を後工程として追加する。
例えば、指定画面G2では、各工程の処理タイプとして、並列処理又は分岐処理を指定可能である。本実施形態では、ユーザはボタンB25に対する操作によって処理タイプを指定する。また例えば、指定画面G2では、各工程が集中工程であるか否かを指定可能である。本実施形態では、ユーザはボタンB25に対する操作によって集中工程の有無を指定する。処理タイプ及び集中工程は、前工程指定モード又は後工程指定モードの何れかのみで指定されてもよい。
[受付部]
受付部303は、ユーザからの種々の操作を受け付ける。例えば、受付部303は、指定画面G2で前工程を指定する前工程指定モードと、指定画面G2で後工程を指定する後工程指定モードと、の切替操作を受け付ける。本実施形態では、受付部303は、制御プログラム作成画面G1のボタンB11,B12の選択を受け付けることによって、切替操作を受け付ける。先述したように、切替操作は他の任意の操作であってよい。
受付部303は、切替操作だけではなく、指定画面G2に対する各種操作を受け付けてもよい。例えば、受付部303は、工程の順序を指定するための操作を受け付ける。この操作は、図3~図6の各画面に対する操作に限られず、任意の操作であってよい。例えば、個々の工程を示すアイコンを並べ替えたり順番につないだりする操作であってもよいし、個々の工程の順序を示す数値を入力する操作であってもよい。
[条件増加部]
条件増加部304は、集中工程が指定された場合に、集中工程に指定可能な組み合わせ条件の数を増加させる。図5を参照して説明したように、条件増加部304は、ボタンB26から集中工程が指定された工程については、指定可能なOR条件の数を第1の値(例えば、10個)から第2の値(例えば、50個)に増加させる。指定可能なOR条件の数に応じて、変数として利用するレジスタ範囲が変わってもよい。なお、条件増加部304は、指定可能なOR条件ではなく、指定可能なAND条件の数を増加させてもよい。
[制御プログラム作成部]
制御プログラム作成部305は、指定画面G2で指定された順序で各工程が実行されるように、1以上の産業機器20を制御する制御装置10の制御プログラムを作成する。制御プログラム作成部305は、各工程に指定された実行条件が満たされた場合に、その工程を実行する産業機器20に対し、その工程の実行指示が送信されるように、制御プログラムを作成する。各工程に指定された実行条件から制御プログラムを作成するための作成プログラムは、予めエンジニアリングツールに含まれているものとする。
制御プログラム作成部305は、作成プログラムを利用して、工程情報データベースDB2に格納された順序及び実行順序が制御プログラム内に定義されるように、制御プログラムを作成する。例えば、ラダー言語を利用する場合、制御プログラム作成部305は、各工程に指定された順序となるように、各工程を開始させるためのコイルなどの回路を配置し、その回路が閉じる条件として、その工程に指定された実行条件を設定することによって、制御プログラムを作成する。各工程を開始させるための回路は、その工程に対応する指示プログラムを呼びだすための回路ということもできる。実行条件は、条件分岐を表現可能な任意の回路を利用すればよい。
また例えば、ロボット言語を利用する場合、制御プログラム作成部305は、各工程に指定された順序となるように、各工程を開始させるためのコードを記述し、そのコードが実行される条件分岐として、そのコードに対応する工程に指定された実行条件を設定することによって、制御プログラムを作成する。各工程を開始させるためのコードは、その工程に対応する指示プログラムを呼びだすための命令ということもできる。
本実施形態では、1以上の産業機器20は、自身が実行すべき工程を開始するための開始変数を記憶し、各工程は、対応する開始変数が所定の値になった場合に開始され、制御プログラム作成部305は、指定画面G2で指定された順序で各工程の開始変数を所定の値に変更するように、制御プログラムを作成する。変数の制御は、指示プログラムによって行われるので、制御プログラム作成部305は、各工程の開始変数が所定の順序で第2の値にするための指示プログラムを呼び出すように、制御プログラムを作成する。
例えば、制御プログラム作成部305は、前工程指定モードの指定画面G2で指定された前工程の識別情報と処理結果とに基づいて、制御プログラムを作成する。制御プログラム作成部305は、前工程指定モードの指定画面G2で前工程が指定された工程の実行指示が、当該指定された前工程に指定された処理結果になった場合に送信されるように、制御プログラムを作成する。この制御プログラムには、前工程が指定された工程の実行指示を送信する処理の条件分岐として、前工程が指定された処理結果になることが定められている。
なお、条件分岐自体は、ラダー言語又はロボット言語等における条件分岐を利用すればよい。作成プログラムには、条件分岐の回路又はコードを自動的に記述するための命令が定義されている。制御プログラム作成部305は、作成プログラムに従って、条件分岐の回路又はコードを記述したファイルを、制御プログラムとして出力する。この点は、下記に説明する条件分岐についても同様である。
例えば、制御プログラム作成部305は、前工程指定モードの指定画面G2で指定された各前工程の識別情報と処理結果と組み合わせ条件とに基づいて、制御プログラムを作成する。制御プログラム作成部305は、前工程指定モードの指定画面G2で複数の前工程が指定された工程の実行指示が、当該指定された各前工程に指定された処理結果の組み合わせ条件を満たした場合に送信されるように、制御プログラムを作成する。この制御プログラムには、複数の前工程が指定された工程の実行指示を送信する処理の条件分岐として、各前工程の処理結果が指定された組み合わせ条件になることが定められている。
例えば、制御プログラム作成部305は、後工程指定モードの指定画面G2で指定された処理結果と後工程の識別情報とに基づいて、制御プログラムを作成する。制御プログラム作成部305は、後工程指定モードの指定画面G2で後工程が指定された工程が指定された処理結果になった場合に、当該指定された後工程の実行指示が送信されるように、制御プログラムを作成する。この制御プログラムには、後工程の実行指示を送信する処理の条件分岐として、後工程が指定された工程が指定された処理結果になることが定められている。前工程が指定された場合と同様、制御プログラム作成部305は、作成プログラムに従って、条件分岐の回路又はコードを記述したファイルを、制御プログラムとして出力する。
例えば、制御プログラム作成部305は、後工程指定モードの指定画面G2で指定された、各工程の処理結果と、他の工程の処理結果と、組み合わせ条件と、後工程の識別情報と、に基づいて、制御プログラムを作成する。制御プログラム作成部305は、後工程指定モードの指定画面G2で複数の工程が指定された後工程の実行指示が、当該指定された各工程に指定された処理結果の組み合わせ条件を満たした場合に送信されるように、制御プログラムを作成する。この制御プログラムには、複数の工程が指定された後工程の実行指示を送信する処理の条件分岐として、各前工程の処理結果が指定された組み合わせ条件になることが定められている。
例えば、制御プログラム作成部305は、後工程指定モードの指定画面G2で指定された処理結果と各後工程の識別情報とに基づいて、制御プログラムを作成する。制御プログラム作成部305は、後工程指定モードの指定画面G2で複数の後工程が指定された工程が指定された処理結果になった場合に、当該指定された各後工程の実行指示が送信されるように、制御プログラムを作成する。この制御プログラムには、各後工程の実行指示を送信する処理の条件分岐として、複数の後工程が指定された工程が指定された処理結果になることが定められている。
例えば、制御プログラム作成部305は、指定画面G2で指定された各工程の処理タイプに基づいて、制御プログラムを作成する。制御プログラム作成部305は、ある工程に並列処理が指定された場合、その工程の実行回数が制限されないように、制御プログラムを作成する。制御プログラム作成部305は、ある工程に分岐処理が指定された場合、その工程の実行回数が所定回数(例えば、1回)に制限されるように、制御プログラムを作成する。
また例えば、制御プログラム作成部305は、集中工程が指定された場合に、増加された組み合わせ条件に基づいて、制御プログラムを作成する。制御プログラム作成部305は、集中工程が指定されなかった工程については、所定の上限数の範囲内で指定された組み合わせ条件に基づいて、制御プログラムを作成する。制御プログラム作成部305は、集中工程が指定された工程については、解除された上限数の範囲内で指定された組み合わせ条件に基づいて、制御プログラムを作成する。
[1-4.第1実施形態で実行される処理]
図10及び図11は、第1実施形態のプログラム作成装置30で実行される処理の一例を示す図である。図10及び図11に示す処理は、CPU31が記憶部32に記憶されたエンジニアリングツールを起動することによって実行される。図10及び図11に示す処理は、図7に示す機能ブロックにより実行される処理の一例である。なお、以降説明する処理が実行されるにあたり、機器情報データベースDB1と工程情報データベースDB2が作成されているものとする。
図10に示すように、プログラム作成装置30は、エンジニアリングツールを起動させて、制御プログラム作成画面G1を表示部35に表示させる(S100)。プログラム作成装置30は、操作部34の検出信号に基づいて、ユーザの操作を特定する(S101)。S101においては、ボタンB11~B13の何れかの選択が受け付けられる。
ユーザがボタンB11を選択した場合(S101;B11)、プログラム作成装置30は、工程情報データベースDB2に基づいて、前工程指定モードの指定画面G2を表示部35に表示させる(S102)。S102においては、プログラム作成装置30は、工程情報データベースDB2に格納された工程情報に基づいて、入力フォームF23Aのプルダウンメニューに表示させる工程IDを特定する。ユーザが予め工程の工程IDを指定した場合には、入力フォームF20~F22の各々には、当該指定された工程に対応する工程情報が表示されてもよい。
プログラム作成装置30は、操作部34の検出信号に基づいて、ユーザの操作を特定する(S103)。S103においては、入力フォームF20~F22に対する操作、入力フォームF23に対する操作、入力フォームF24に対する操作、ボタンB25~B28に対する操作が受け付けられる。
入力フォームF20~F22に対する操作が受け付けられた場合(S103;F20~F22)、プログラム作成装置30は、指定された工程ID等を入力フォームF20等に表示させる(S104)。入力フォームF23に対する操作が受け付けられた場合(S103;F23)、プログラム作成装置30は、前工程が指定された工程の実行条件を設定する(S105)。ユーザが実行条件を指定する方法は、先述した通りである。
入力フォームF24に対する操作が受け付けられた場合(S103;F24)、プログラム作成装置30は、前工程が指定された工程の中止条件を設定する(S106)。ボタンB25に対する操作が受け付けられた場合(S103;B25)、プログラム作成装置30は、並列処理又は分岐処理の処理タイプを設定する(S107)。ボタンB26に対する操作が受け付けられた場合(S103;B26)、プログラム作成装置30は、集中工程の有無を設定する(S108)。
ボタンB27に対する操作が受け付けられた場合(S103;B27)、プログラム作成装置30は、工程情報データベースDB2に実行条件を格納し(S109)、S100の処理に戻る。ボタンB28に対する操作が受け付けられた場合(S103;B28)、プログラム作成装置30は、ユーザの指定内容を破棄し(S110)、S100の処理に戻る。
S101において、ユーザがボタンB12を選択した場合(S101;B11)、図11に移り、プログラム作成装置30は、後工程指定モードの指定画面G2を表示部35に表示させる(S111)。プログラム作成装置30は、操作部34の検出信号に基づいて、ユーザの操作を特定する(S112)。S112においては、入力フォームF20~F22に対する操作、入力フォームF23に対する操作、入力フォームF24に対する操作、ボタンB25~B28に対する操作が受け付けられる。各操作が受け付けられた場合に実行されるS113~S119の処理は、それぞれS104~S110の処理と同様であるが、S114の処理の詳細は、S105の処理とは異なる。S114における後工程指定モードの実行条件の設定と、S105における前工程指定モードの実行条件の設定と、の違いは、先述した通りである。
S101において、ユーザがボタンB13を選択した場合(S101;B13)、プログラム作成装置30は、指定画面G2で指定された順序で各工程が実行されるように、制御プログラムを作成し(S120)、本処理は終了する。
第1実施形態のプログラム作成装置30によれば、指定画面G2で各工程の前工程と後工程の少なくとも一方をユーザが指定すれば、指定画面G2で指定された順序で各工程が実行されるように、制御装置10の制御プログラムが作成されるので、例えばユーザがラダー図等を利用してプログラミングする必要がなくなり、制御プログラムの作成を簡易化できる。例えば、ユーザは、指定画面G2において、ある工程Aの実行条件として前工程Bを指定すれば、前工程Bの後に工程Aが実行されるように、制御プログラムが作成されるので、制御プログラムの作成を簡易化できる。また例えば、ユーザは、指定画面G2において、ある工程Cの後に実行したい後工程Dを指定すれば、工程Cの後に後工程Dが実行されるように(後工程Dの実行条件として工程Cが指定されるように、即ち工程Cが後工程Dの前工程となるように)、制御プログラムが作成されるので、制御プログラムの作成を簡易化できる。
また、プログラム作成装置30は、指定画面G2で指定された前工程の識別情報と処理結果とに基づいて、制御プログラムを作成することにより、指定画面G2でこれらの情報をユーザが指定すれば済むので、制御プログラムの作成を簡易化できる。例えば、ある工程の実行条件として、複数の前工程の処理結果のAND条件になる場合には、後工程を指定するよりも前工程を指定する方が実行条件をイメージしやすいことが多く、このような場合には、特に効果的である。
また、プログラム作成装置30は、指定画面G2で指定された複数の前工程の各々の識別情報と処理結果と組み合わせ条件とに基づいて、制御プログラムを作成することにより、ある工程の実行条件として、複数の前工程の処理結果が条件になる場合であったとしても、制御プログラムの作成を簡易化できる。
また、プログラム作成装置30は、指定画面G2で指定された各工程の処理結果と当該工程の後工程の識別情報とに基づいて、制御プログラムを作成することにより、指定画面G2でこれらの情報をユーザが指定すれば済むので、制御プログラムの作成を簡易化できる。例えば、複数の工程の各々が実行された後に、特定の工程が集中して実行されるような場合には、前工程を指定するよりも後工程を指定する方が実行条件をイメージしやすいことが多く、このような場合には、特に効果的である。
また、プログラム作成装置30は、指定画面G2で指定された、各工程の処理結果と、他の工程の処理結果と、組み合わせ条件と、後工程の識別情報と、に基づいて、制御プログラムを作成することにより、指定画面G2でこれらの情報をユーザが指定すれば済むので、制御プログラムの作成を簡易化できる。
また、プログラム作成装置30は、指定画面G2で指定された各工程の処理結果と当該工程の複数の後工程の各々の識別情報とに基づいて、制御プログラムを作成することにより、指定画面G2でこれらの情報をユーザが指定すれば済むので、制御プログラムの作成を簡易化できる。
また、プログラム作成装置30は、切替操作によって前工程指定モードと後工程指定モードとを切り替えることができるので、ユーザによって使い勝手の良いインタフェースとすることができる。
また、プログラム作成装置30は、指定画面G2で指定された各工程の処理タイプに基づいてプログラムを作成することによって、種々の処理タイプに対応可能なプログラムを作成でき、使い勝手の良いインタフェースとすることができる。
また、プログラム作成装置30は、集中工程に指定可能な組み合わせ条件の数を増加させることによって、集中工程に対し、より多くの組み合わせ条件を指定できるようになる。また、全ての工程について多くの組み合わせ条件を指定できるようにすると、レジスタ消費量が増えるが、必要な工程にのみレジスタを確保することによって、レジスタ消費量を抑制できる。
また、プログラム作成装置30は、各工程が制御装置10とは異なる実行条件を有している場合のプログラムの作成を簡易化できる。
また、プログラム作成装置30は、各工程が、対応する開始変数が所定の値になった場合に開始する場合のプログラムの作成を簡易化できる。
[2.第2実施形態]
次に、第2実施形態を説明する。第1実施形態では、制御プログラムの作成を簡易化する方法を説明したが、第2実施形態では、指示プログラムの作成を簡易化する方法を説明する。制御プログラムは、第1実施形態のように作成されてもよいが、第2実施形態では、制御プログラムの作成方法は問わないものとする。例えば、ユーザは、第2実施形態のような方法ではなく、ラダー言語又はロボット言語等を利用して制御プログラムを作成してもよい。以降説明する第2実施形態では、第1実施形態と同様の構成については説明を省略する。
[2-1.第2実施形態の概要]
第2実施形態のプログラム作成装置30は、産業機器である制御装置10が他の産業機器20に所定の動作を指示するための指示プログラムを作成する。制御装置10は、産業機器の一種なので、図1の産業機器20は、制御装置10から見ると、他の産業機器ということができる。以降の説明では、他の産業機器20とは記載しないが、単に産業機器20と記載した箇所は、他の産業機器20と読み替えることができる。
第1実施形態で説明した工程は、所定の動作の一例である。所定の動作は、工程に限られず、産業機器20が実行可能な動作であればよい。動作は、ロボット24の移動等の物理的なものに限られず、産業機器20の内部で実行されるソフトウェア的な処理であってもよい。例えば、所定の動作は、工程の準備、工程の実行結果の出力、又は工程の実行結果の解析であってもよい。所定の動作は、ジョブ又はタスクと呼ばれるものであってもよい。
第2実施形態では、制御装置10と産業機器20とを接続するインタフェースであるプロファイルが用意されている。プロファイルは、通信プロトコルと同じ意味であってもよく、通信手順やデータの形式が定義されている。制御装置10は、プロファイルに基づいて、産業機器20に対し、所定の動作を実行させるための指示を送信する。産業機器20は、プロファイルに基づいて、受信した指示を理解し、所定の動作を実行する。産業機器20から制御装置10への応答についても、プロファイルに沿って実行される。プロファイルは、エンジニアリングツールに含まれているものとする。
産業機器20の種類に関係なく共通のプロファイルが用意されていてもよいし、産業機器20の種類に応じたプロファイルが用意されていてもよい。第2実施形態では、ロボットコントローラについてのみプロファイルが用意されている場合を説明するが、他の種類の産業機器20についてもプロファイルが用意されていてもよい。このため、第2実施形態では、制御装置10は、プロファイルに沿って産業機器20Aを制御する。制御装置10が産業機器20Bを制御する場合には、このプロファイルは利用されない。
第1実施形態と同様、制御装置10のレジスタは、一部のレジスタ範囲が、産業機器20の制御用に割り当てられている。産業機器20Aの制御用に割り当てられるレジスタ範囲は、プロファイルに定義されている。即ち、プロファイルには、レジスタのどこに何を格納するかが定義された構造体データが含まれている。本実施形態では、プロファイルに含まれる構造体データのうち、主に所定の動作を指示するための部分について説明する。
図12は、プロファイルに含まれる構造体データの一部を示す図である。図12に示すように、構造体データには、プロファイルにおけるレジスタ体系が定義されている。他にも例えば、構造体データには、レジスタ範囲に含まれるレジスタ番号のオフセットと、そのレジスタ番号に格納される情報と、の関係が示される。オフセットは、先頭レジスタ番号を基準としたレジスタ番号である。即ち、オフセットは、先頭レジスタ番号から数えた場合のレジスタ番号、又は、先頭レジスタ番号に対する相対的なレジスタ番号である。
例えば、産業機器20Aを制御するためのレジスタ範囲は、産業機器20Aに対して指定された先頭レジスタ番号から、構造体データに定義されたオフセットの最後のレジスタ番号を加算したアドレスまでになる。例えば、構造体データに0番~4259番のオフセットが定義されており、産業機器20Aに対して指定された先頭レジスタ番号が5000番だったとすると、産業機器20Aの制御用に割り当てられるアドレス範囲は、5000番~9259番になる。
図12の例では、オフセットの1115番~1116番には、コマンド要求IDが格納される。コマンド要求IDは、要求情報の一例である。本実施形態でコマンド要求IDを説明している箇所は、要求情報と読み替えることができる。要求情報は、産業機器20に対し、指示の実行を要求するための情報である。産業機器20に送信された指示は、要求情報が更新された場合に実行される。即ち、産業機器20に対して何らかの指示が送信されたとしても、要求情報が更新されるまでは、その指示の実行が待機される。本実施形態では、コマンド要求IDが数値であり、インクリメントによって更新される場合を説明するが、要求情報は、ID以外の任意の形式であってよい。
オフセットの1117番には、メインコマンドが格納される。メインコマンドは、産業機器20が有する複数の機能のうち、産業機器20に要求される機能を示す情報である。本実施形態では、ロボット24を制御するロボット制御機能、ロボット24の動作を監視するモニタリング機能、及びロボット24の動作に関するデータを収集する収集機能の3つの機能が用意されており、メインコマンドは、これらの何れかを示す値になる。なお、産業機器20は、単一の機能のみを有してもよい。この場合、メインコマンドは省略可能である。
オフセットの1118番には、サブコマンドが格納される。サブコマンドは、産業機器20が実行可能な複数の動作のうち、産業機器20に要求された動作を示す情報である。本実施形態では、メインコマンドで示される機能ごとに、複数の動作が用意されている。サブコマンドは、メインコマンドで示された機能に用意された複数の動作のうちの何れかを示す。即ち、本実施形態では、メインコマンドとサブコマンドの組み合わせによって、産業機器20が実行する具体的な動作が特定される。
オフセットの1119番~1600番は、コマンドデータエリアとして確保されている。コマンドデータエリアには、産業機器20に要求された動作の詳細が格納される。例えば、ジョブ選択のコマンドであれば、ジョブ名と、ジョブの開始部分と、がコマンドデータエリアに格納される。その他にも、ジョブの実行に必要なパラメータなどのデータがコマンドデータエリアに格納されてもよい。また例えば、電源制御のコマンドであれば、電源をオンにするかオフにするかを示すデータがコマンドデータエリアに格納される。他のコマンドについても同様であり、必要に応じて、そのコマンドの詳細な内容を示すデータがコマンドデータに格納されるようにすればよい。
図13は、メインコマンド、サブコマンド、及びコマンドデータエリアに格納されるデータの一例を示す図である。図13のような関係もプロファイルとして定義されている。図13の例では、メインコマンドが「1」であることは、ロボット制御機能を意味する。メインコマンドが「2」であることは、モニタリング機能を意味する。メインコマンドが「3」であることは、収集機能を意味する。これら3つのメインコマンドの値ごとに、各機能における処理の詳細を示すサブコマンドが定義されている。サブコマンドには、対応するメインコマンドが示す機能における具体的な処理内容が示されている。
例えば、ロボット制御機能のメインコマンドであれば、アラームのリセット、電源制御、工程プログラム選択、モード切替、工程プログラム実行、及び目標位置へのロボット動作の各々のサブコマンドが用意されている。なお、ロボット制御機能のサブコマンドは、図13の例に限られず、例えば、ホールドの停止、HMIのロック、サイクル変更、及び各軸のパルスを指定したロボット動作などのサブコマンド、又は、ロボット言語におけるMOVEやWAITなどのコマンドに相当するサブコマンドが用意されていてもよい。モニタリング機能及び収取機能のメインコマンドについても同様に、これらの機能に応じたサブコマンドが用意される。
図13に示すように、メインコマンドとサブコマンドの組み合わせによって、コマンドデータエリアに格納されるデータが異なる。コマンドデータエリアのうち、どのレジスタ番号を参照すればよいか(どのレジスタ番号に何のデータが格納されているか)が定義されたデータは、制御装置10と産業機器20Aの各々に記憶されているものとする。
例えば、メインコマンド「1」とサブコマンド「3」の組み合わせが示す「ジョブ選択」は、選択対象のジョブを特定する必要があるので、コマンドデータエリアのうちの所定のレジスタ番号のレジスタに、ジョブの名前が格納される。工程を実行する場合には、工程プログラムがジョブに相当する。ジョブの途中から実行を開始する場合には、コマンドデータエリアのうちの所定のレジスタ番号のレジスタに、ジョブの開始部分が格納される。メインコマンド「1」とサブコマンド「5」の組み合わせが示す「ジョブ実行」のように、コマンドデータエリアが使用されないものも存在する。
図14は、ジョブを選択して実行する場合における変数の変化の一例を示す図である。図14では、産業機器20Aの制御用に割り当てられた制御装置10のレジスタ範囲のうち、コマンド要求ID、メインコマンド、サブコマンド、及びコマンドデータエリアの変化を示す。図14の例では、制御プログラムの実行前には、初期状態として、コマンド要求IDが「0」になっており、他のエリアにはデータが格納されていない。
制御プログラムが開始すると、産業機器20にジョブ選択をさせるために、ロボット制御の機能を示す値(例えば、1)がメインコマンドとして書き込まれ、工程プログラム選択を示す値(例えば、3)がサブコマンドとして書き込まれる。コマンドデータエリアとして確保されたレジスタには、ジョブの名前(図14では「ジョブAAA」である。工程プログラムがジョブに相当する場合には、工程プログラムの名前。)と、ジョブの開始部分(図14では3行目)と、が書き込まれる。上記の書き込みが終わると、産業機器20に工程プログラムを選択させるために、コマンド要求IDがインクリメントされる。
制御装置10は、産業機器20に対し、上記レジスタ範囲に相当するデータを送信する。産業機器20は、送信データを受信すると、コマンド要求IDがインクリメントされたか否かを判定する。ここでは、コマンド要求IDが「0」から「1」にインクリメントされているので、メインコマンド及びサブコマンドを実行し、プログラム名が示すジョブを読み出す。開始部分が指定されている場合には、産業機器20は、その開始部分以降のジョブを読み出す。この時点では、読み出されたジョブは、まだ実行されない。
制御装置10は、産業機器20から、メインコマンド及びサブコマンドの実行結果を示す応答を受信する。制御装置10は、応答を受信して実行結果の正当性を確認する。正当性が確認されると、産業機器20にジョブ実行を指示するために、ロボット制御の機能を示す値(例えば、1)がメインコマンドとして書き込まれ、ジョブ実行を示す値(例えば、5)がサブコマンドとして書き込まれる。コマンドデータエリアとして確保されたレジスタには、何も書き込まれず、コマンド要求IDがインクリメントされる。
制御装置10は、産業機器20に対し、上記レジスタ範囲に相当するデータを送信する。産業機器20は、送信データを受信すると、コマンド要求IDがインクリメントされたか否かを判定する。ここでは、コマンド要求IDが「1」から「2」にインクリメントされているので、メインコマンド及びサブコマンドを実行し、読み出し済みの工程プログラムを実行する。
以上のように、第2実施形態では、制御装置10は、コマンド要求ID、メインコマンド、サブコマンド、及びコマンドデータエリアを利用して、産業機器20に所定の動作を実行させる。制御装置10から産業機器20に対する指示は、プロファイルに沿って行われるので、ある程度のフォーマットが決まっている。このため、指示プログラムを作成する際のラダー図などの回路も、ある程度はフォーマットが決まっている。別の言い方をすれば、メインコマンドとサブコマンドを利用して指示を送る流れは、どのユーザが指示プログラムを作成したとしても同様の回路又はコード等を記述する可能性が高い。
そこで、本実施形態では、予め指示プログラムのテンプレートを用意しておき、ユーザが指示プログラムを作成する際に、テンプレートを利用できるようになっている。例えば、ユーザがプログラム作成装置30にインストールされたエンジニアリングツールを起動させると、指示プログラムを作成するためのユーザインタフェースである指示プログラム作成画面が表示部35に表示される。
図15は、指示プログラム作成画面の一例を示す図である。図15に示すように、指示プログラム作成画面G3には、指示プログラムによって指示を送る相手方の産業機器20Aが実行する工程のリストL30が表示される。図15の例では、図2の工程p1~p7のうち、工程p1~p3,p6~p7が産業機器20Aによって実行される。第2実施形態では、個々の工程を指示するための指示プログラムを、テンプレートを利用して作成できる。以降、工程p2を指示するための指示プログラムを作成する場合を例に挙げて説明する。
例えば、工程p2を実行させるにあたり、工程プログラムの選択と、工程プログラム実行と、が必要だったとする。この場合、ユーザは、図14で説明した流れでレジスタを操作する必要がある。ユーザは、このようなレジスタ操作をするための指示プログラムを、テンプレートを利用して作成できる。例えば、ユーザは、ジョブの一例である工程プログラムの選択手順が定義されたテンプレートと、工程プログラムの実行手順が定義されたテンプレートと、を利用して、工程p2の指示プログラムを作成する。
図16は、指示プログラム作成画面G3からテンプレートが選択される様子を示す図である。ユーザが、指示プログラム作成画面G3のリストL30から工程p2を選択し、ボタンB31をすると、図16に示すように、テンプレートのリストL33が表示される。リストL33には、産業機器20が実行可能な動作ごとに、テンプレートが選択可能に表示される。
本実施形態では、主にメインコマンドとサブコマンドによって動作が指示されるので、図16に示すように、リストL33には、メインコマンドとサブコマンドの組み合わせごとに、テンプレートが表示される。工程p2の実行には、まずは工程プログラムを選択するひつようがあるので、ユーザは、リストL33からジョブ選択のテンプレートを選択し、ボタンB34を選択する。なお、ユーザがボタンB35を選択すると、テンプレートを使用せずに指示プログラムを作成できる。
図17は、テンプレートが選択された場合の指示プログラム作成画面G3の一例を示す図である。図17に示すように、指示プログラム作成画面G3には、工程p2の指示プログラムを作成するためのラダー図が編集領域A36に表示される。図17の例では、ユーザが選択したジョブ選択のテンプレートが編集領域A36に展開される。テンプレートには、メインコマンド(図17では変数「MainCmd」)を「1」にする命令、サブコマンド(図17では変数「SubCmd」)を「3」にする命令、コマンドデータエリア(図17では変数「CmdDataArea」)に何らかの工程プログラムの名前を指定する命令、及びコマンド要求ID(図17では変数「CmdReqid」)をインクリメントする命令が含まれている。
ユーザは、テンプレートが示すラダー図の回路を編集可能である。例えば、テンプレートには、工程プログラムの名前までは記述されていないので、ユーザは、工程プログラムの名前(例えば、p2という名前)を記述する。このように、テンプレートを利用することによって、ユーザは、工程プログラムの名前を記述するだけで、工程プログラムを選択するためのラダー図を作成できる。ユーザがボタンB37を選択すると、再びリストL33が表示される。ユーザは、リストL33からジョブ実行のテンプレートを選択する。
図18は、テンプレートが更に選択された場合の指示プログラム作成画面G3の一例を示す図である。図18に示すように、編集領域A36には、ユーザが選択したジョブ実行のテンプレートが展開される。テンプレートには、メインコマンドを「1」にする命令、サブコマンドを「5」にする命令、及びコマンド要求IDをインクリメントする命令が含まれている。先述したように、コマンドエリアには何も格納しなくてよいので、ユーザは、テンプレートを展開するだけで工程p2のラダー図の作成が完了する。このように、複数のテンプレートが必要な場合であったとしても、ユーザは、次々とテンプレートを展開することによって、ラダー図を作成できる。
以上のように、本実施形態のプログラム作成装置30は、ユーザが選択した動作に対応するテンプレートを、指示プログラム作成画面G3に表示させる。ユーザは、テンプレートを利用して指示プログラムを作成することができるので、指示プログラムの作成が簡易化する。以降、本実施形態の制御システム1の詳細を説明する。
[2-2.第2実施形態で実現される機能]
図19は、第2実施形態の機能ブロック図である。図19に示すように、第2実施形態のプログラム作成装置30では、データ記憶部300、工程情報取得部301、指定画面表示制御部302、制御プログラム作成部305、テンプレート取得部306、作成画面表示制御部307、及び指示プログラム作成部308が実現される。テンプレート取得部306、作成画面表示制御部307、及び指示プログラム作成部308の各々は、CPU31を主として実現される。
なお、プログラム作成装置30は、第1実施形態で説明した受付部303及び条件増加部304を含んでもよい。制御装置10と産業機器20の機能は、第1実施形態と同様であってよいが、第2実施形態では、図12-図14を参照して説明したコマンド要求ID、メインコマンド、サブコマンド、及びコマンドデータエリアを利用した処理が、産業機器制御部101と工程実行部201との間で実行される。
[データ記憶部]
第2実施形態のデータ記憶部300は、指示プログラムを作成するために必要なデータを記憶する。例えば、データ記憶部300は、テンプレートデータベースDB3を記憶する。なお、データ記憶部が記憶する他のデータは、第1実施形態と同様であってよい。第2実施形態のデータ記憶部は、第1実施形態で説明したデータを記憶しなくてもよい。
図20は、テンプレートデータベースDB3の一例を示す図である。図20に示すように、テンプレートデータベースDB3には、産業機器20が実行可能な複数の動作の各々に対応するテンプレートが格納されたデータベースである。例えば、テンプレートデータベースDB3には、メインコマンド、サブコマンド、及びテンプレートが格納される。なお、テンプレートは、ラダー言語又はロボット言語等の任意の言語で作成されてよい。テンプレートのデータ形式は、これらの言語に準じた形式であればよい。
テンプレートは、後述する変形例のようにユーザが作成可能であってもよいが、第2実施形態では、予め用意されているものとする。例えば、エンジニアリングツールを提供する会社により、テンプレートが用意されている。ある動作のテンプレートには、メインコマンドを格納するためのレジスタに、その動作に対応するメインコマンドを格納する命令と、サブコマンドを格納するためのレジスタに、その動作に対応するサブコマンドを格納するための命令と、が含まれる。
コマンドデータエリアに何らかの情報を格納する必要がある動作のテンプレートには、コマンドデータエリアのうちの所定のレジスタ番号に、必要な情報を格納するための命令が含まれる。コマンドデータエリアに格納すべき情報は、ユーザが指定するものとする。テンプレートのどこにその情報を指定すればよいかについても、テンプレートのコメントとして含まれているものとする。本実施形態では、制御装置10からの指示を実行するにはコマンド要求IDを更新する必要があるので、各テンプレートには、コマンド要求IDを更新するための命令が含まれる。
なお、テンプレートは、メインコマンドとサブコマンドの組み合わせごとに用意されなくてもよい。例えば、メインコマンドとサブコマンドを利用しない場合には、搬入、計測、加工といった動作(工程)ごとに、テンプレートが用意されていてもよい。この場合には、これらの動作を指示するための基本的な手順がテンプレートに記述されている。動作を指示するためのジョブの名前が予め定められている場合には、テンプレートにはジョブの名前が含まれていてもよい。動作を指示するためのコマンドを示す文字列がテンプレートに含まれていてもよい。
[テンプレート取得部]
テンプレート取得部306は、複数の動作の各々に対応するテンプレートを取得する。本実施形態では、テンプレートがテンプレートデータベースDB3に格納されているので、テンプレート取得部306は、テンプレートデータベースDB3に格納されたテンプレートを取得する。例えば、テンプレート取得部306は、指示プログラム作成画面G3において選択された動作に対応するテンプレートを取得する。テンプレートは、テンプレートデータベースDB3以外のデータベースに含まれていてもよい。また、テンプレートは、プログラム作成装置30以外のコンピュータに記憶されていてもよい。
本実施形態では、制御装置10のレジスタは、一部のレジスタ範囲が、産業機器20の制御用に割り当てられているので、制御装置10は、レジスタ範囲に含まれる所定のレジスタに、産業機器20への指示を格納し、産業機器20に対し、当該格納された指示を送信する。各テンプレートには、所定のレジスタに、対応する動作を識別可能な動作情報を、指示として格納するための情報が含まれている。この情報は、任意の形式であってよく、例えば、ラダー言語であればコイルなどの回路であり、ロボット言語であれば命令であってよい。他にも例えば、この情報には、レジスタアドレスを示す数値が含まれていてもよいし、補足説明を示すテキストが含まれていてもよい。
所定のレジスタには、産業機器20が有する複数の機能のうちの何れかを要求するメインコマンドと、当該機能における動作を要求するサブコマンドと、が指示として格納され、各テンプレートには、所定のレジスタに、メインコマンドとサブコマンドを、動作情報として格納するための情報が含まれている。この情報は、メインコマンドに対応するレジスタアドレス、メインコマンドの具体的な値、サブコマンドに対応するレジスタアドレス、及びサブコマンドの具体的な値が含まれている。他にも例えば、この情報は、補足説明を示すテキストが含まれていてもよい。
所定のレジスタのうち、メインコマンドとサブコマンドの組み合わせに対応するエリア内に、サブコマンドに対応する動作の詳細に関する詳細情報が格納され、詳細情報が必要な動作のテンプレートには、エリアに、当該動作の詳細に関する詳細情報を格納するための情報が含まれている。この詳細情報は、コマンドデータエリアに対応するレジスタアドレス、コマンドデータエリアに格納すべき具体的な情報が含まれている。他にも例えば、この詳細情報は、補足説明を示すテキストが含まれていてもよい。
所定のレジスタには、指示の実行を要求するコマンド要求IDが格納され、産業機器20は、要求情報が更新された場合に、指示を実行し、各テンプレートには、所定のレジスタに格納されたコマンド要求IDを更新するための情報が含まれている。この情報は、コマンド要求IDをインクリメントするための命令が含まれている。他にも例えば、この情報は、補足説明を示すテキストが含まれていてもよい。
産業機器20は、自身の所定のレジスタに、制御装置10から受信した指示を格納し、所定のレジスタに格納された指示を参照し、当該指示に対応する動作を実行するので、各テンプレートには、産業機器20の所定のレジスタに、産業機器20への指示を格納するための情報が含まれている、ということもできる。即ち、メインコマンドとサブコマンドは、産業機器20の所定のレジスタに格納されるので、テンプレートには、その旨の指示を格納するための情報が含まれている。
複数の動作には、産業機器20に実行させるジョブを選択するジョブ選択動作と、ジョブ選択動作により選択されたジョブを開始するジョブ開始動作と、が含まれており、複数の動作の各々のテンプレートには、ジョブ選択動作に対応するテンプレートと、ジョブ開始動作に対応するテンプレートと、が含まれている。工程プログラムは、ジョブの一例である。ジョブは、何らかの動作の単位であればよく、工程プログラム以外のものであってもよい。
制御装置10は、互いに異なる種類の複数の産業機器20の各々を制御可能であり、テンプレート取得部306は、制御装置10が制御可能な複数の種類のうち、選択された種類に応じたテンプレートを取得する。本実施形態では、ロボットコントローラについてテンプレートが用意されているので、テンプレート取得部306は、指示プログラムを作成する産業機器20がロボットコントローラだった場合に、テンプレートを取得する。加工装置などの他の種類の産業機器20についてもテンプレートを用意する場合には、テンプレート取得部306は、指示プログラムを作成する産業機器20の種類に応じたテンプレートを取得すればよい。
[作成画面表示制御部]
作成画面表示制御部307は、複数の動作のうち選択された動作に対応するテンプレートを、指示プログラム作成画面G3に表示させる。作成画面表示制御部307は、ユーザが選択した動作に対応するテンプレートを、指示プログラム作成画面G3の編集領域A36に表示させる。編集領域A36は、ラダー図の編集やコーディング等を行うための領域であり、指示プログラムのエディタに相当する部分である。ユーザは、編集領域A36に展開したテンプレートに対し、任意の編集を行うことができる。編集とは、回路やコード等の記述の追加、削除、又は変更である。
[指示プログラム作成部]
指示プログラム作成部308は、指示プログラム作成画面G3に表示されたテンプレートに対する操作に基づいて、選択された動作を指示するための指示プログラムを作成する。指示プログラム作成部308は、テンプレートが編集されなかった場合にはテンプレートからそのまま指示プログラムを作成し、テンプレートが編集された場合には、編集後の内容に基づいて指示プログラムを作成する。ラダー図やコードから指示プログラムを作成する方法自体は、公知の手法を利用可能である。コンパイル等の変換が必要な言語であれば、コンパイル等の変換によって指示プログラムが作成されるようにすればよい。
本実施形態では、産業機器20Aは、ロボットコントローラであり、ロボットコントローラは、自身に記憶された、第1の言語で作成された複数のロボットプログラムの各々に基づいて、複数の動作の各々を実行可能である。各テンプレートは、第2の言語で記述されており、指示プログラム作成部308は、第2の言語で指示プログラムを作成する。本実施形態では、第1の言語はロボット言語であり、第2の言語はラダー言語である。第1の言語と第2の言語は、任意の言語であればよく、本実施形態の例に限られない。
[記録部]
各動作は、産業機器20が実行する工程であり、記録部309は、指示プログラムと、対応する工程に関する工程情報と、を関連付けてデータ記憶部300に記録する。第1実施形態で説明したように、ある工程に対応する指示プログラムに関する情報などの工程情報は、工程情報データベースDB2に格納されているので、記録部309は、工程情報データベースDB2に、指示プログラム作成部308が作成した指示プログラムに関する情報と、対応する工程に関する工程IDなどの工程情報と、を関連付けて格納する。
[指定画面表示制御部・制御プログラム作成部]
指定画面表示制御部302は、工程情報に基づいて、各工程の前工程と後工程の少なくとも一方を指定する指定画面G2を表示させる。制御プログラム作成部305は、指定画面で指定された順序で各工程に対応する指示プログラムが呼び出されるように、制御装置10の制御プログラムを作成する。指定画面表示制御部302と制御プログラム作成部305の各々の機能は、第1実施形態と同様であってよい。指定画面G2を表示させるために、工程情報取得部301がプログラム作成装置30に含まれていてもよい。
[2-3.第2実施形態で実行される処理]
図21は、第2実施形態のプログラム作成装置30で実行される処理の一例を示す図である。図21に示す処理は、CPU31が記憶部32に記憶されたエンジニアリングツールを起動することによって実行される。図21に示す処理は、図19に示す機能ブロックにより実行される処理の一例である。なお、以降説明する処理が実行されるにあたり、機器情報データベースDB1と工程情報データベースDB2が作成されているものとする。
図21に示すように、プログラム作成装置30は、エンジニアリングツールを起動させて、指示プログラム作成画面G3を表示部35に表示させる(S200)。プログラム作成装置30は、操作部34の検出信号に基づいて、ユーザの操作を特定する(S201)。S201においては、リストL30の工程を選択してボタンB31を選択する操作、又は、ボタンB32を選択する操作が受け付けられる。
ユーザがリストL30の工程を選択してボタンB31を選択した場合(S201;L30・B31)、プログラム作成装置30は、複数の動作の各々に対応するテンプレートのリストL33を表示させて(S202)、テンプレートを展開する動作の選択を受け付ける(S203)。プログラム作成装置30は、選択された工程の指示プログラムを作成するための編集領域A36を表示させる(S204)。
プログラム作成装置30は、操作部34の検出信号に基づいて、ユーザの操作を特定する(S205)。S205においては、編集領域A36に対する操作、又は、ボタンB37~B36の何れかを選択する操作が受け付けられる。ユーザが編集領域A36に対する操作をした場合(S205;A36)、プログラム作成装置30は、ユーザの操作に基づいて、ラダー図を編集する(S206)。
ユーザがボタンB37を選択した場合(S205;B37)、プログラム作成装置30は、複数の動作の各々に対応するテンプレートのリストL33を表示させ(S207)、テンプレートを展開する動作の選択を受け付ける(S208)。プログラム作成装置30は、ユーザが選択した動作のテンプレートを編集領域A36に展開し(S209)、S205の処理に戻る。
ボタンB35が選択された場合(S205;B38)、プログラム作成装置30は、編集領域A36に表示されたラダー図に対応する指示プログラムを作成する(S210)。ボタンB36が選択された場合(S205;B36)、プログラム作成装置30は、編集領域A36に表示されたラダー図を破棄し(S211)、S200の処理に戻る。S201において、ボタンB32が選択された場合(S201;B32)、本処理は終了する。
第2実施形態のプログラム作成装置30によれば、複数の動作の各々に対応するテンプレートのうち、選択された動作に対応するテンプレートを指示プログラム作成画面G3に表示させ、当該表示されたテンプレートに対する操作に基づいて、選択された動作を指示するための指示プログラムを作成することによって、ユーザがラダーなどの言語を利用して1からプログラミングする必要がなくなり、指示プログラムの作成を簡易化できる。例えば、ロボットコントローラを制御する制御装置10のプログラミングを行う場合に、ロボットコントローラ側の言語と、制御装置10側の言語と、が異なることがある。ユーザは、ロボットコントローラ側の言語に慣れていることが多く、制御装置10側の言語には慣れていないことが多い。このような場合に、ロボットコントローラが実行可能な動作ごとにテンプレートを用意しておくことによって、制御装置10側の言語に慣れていないユーザであったとしても、指示プログラムを容易に作成できるようになる。制御装置10側の言語に慣れていないユーザに対する指示プログラムの作成を効果的に支援できる。
また、プログラム作成装置30は、産業機器20によっては、制御装置10との間のインタフェースとして、プロファイルが定められていることがある。プロファイルには、産業機器20に所望の動作をさせるために必要な手順がある程度定められている。例えば、所定のレジスタに指示を格納し、その指示を送信するといった手順がプロファイルに定義されている場合に、各テンプレートに、対応する動作を識別可能な動作情報を、指示として所定のレジスタに格納するための情報を含めておくことによって、指示プログラムの作成をより簡易化できる。
また、プログラム作成装置30は、テンプレートに、メインコマンドとサブコマンドを、動作情報として所定のレジスタに格納するための情報を含めておくことによって、指示プログラムの作成をより簡易化できる。
また、プログラム作成装置30は、サブコマンドによっては、動作の詳細に関する詳細情報を所定のエリア内に設定する必要があり、このような場合にも、テンプレートに、所定のエリア内に詳細情報を格納するための情報を含めておくことによって、指示プログラムの作成をより簡易化できる。
また、プログラム作成装置30は、産業機器からの指示を実行するために、要求情報の更新が条件になる場合に、テンプレートに、要求情報を更新するための情報を含めておくことによって、指示プログラムの作成をより簡易化できる。
また、プログラム作成装置30は、産業機器によっては、制御装置10との間のインタフェースとして、プロファイルが定められていることがある。プロファイルには、産業機器20に所望の動作をさせるために必要な手順がある程度定められている。例えば、産業機器20の所定のレジスタに指示を格納し、産業機器20がそのレジスタを参照して動作を実行する場合に、各テンプレートに、対応する動作に関する情報を所定のレジスタに格納するための情報を含めておくことによって、指示プログラムの作成を、より簡易化できる。
また、プログラム作成装置30は、産業機器がジョブ選択動作とジョブ開始動作を別々に実行する場合に、それぞれのテンプレートを用意しておくことによって、指示プログラムの作成を、より簡易化できる。
また、プログラム作成装置30は、産業機器が複数の種類の各々の装置を制御可能な場合に、選択された種類に応じたテンプレートを取得して表示させることによって、ユーザが設定しようとしている装置の種類に応じたテンプレートを提供できる。
また、プログラム作成装置30は、ユーザが第2の言語に慣れていなかったとしても、テンプレートを利用してプログラムを容易に作成できる。
また、プログラム作成装置30は、制御プログラム作成部305等を有することによって、第1実施形態と同様に、制御プログラムの作成を簡易化できる。
[3.変形例]
なお、本開示は、以上に説明した実施の形態に限定されるものではない。本開示の趣旨を逸脱しない範囲で、適宜変更可能である。
[3-1.第1実施形態に係る変形例]
図22は、第1実施形態係る変形例の機能ブロック図である。図22に示すように、決定部が実現される。決定部310は、CPU31を主として実現される。決定部310は、各工程の実行条件に基づいて、指定画面G2で前工程を指定する前工程指定モードと、指定画面G2で後工程を指定する後工程指定モードと、の何れを設定するかを決定する。即ち、決定部310は、各工程の実行条件に基づいて、前工程指定モード及び後工程指定モードのうちの何れかを選択する。
実行条件と、前工程指定モード又は後工程指定モードと、の関係は、予めデータ記憶部300に定義されているものとする。決定部310は、これら2つのモードのうち、ある工程の実行条件に関連付けられたモードを設定する。例えば、複数の前工程が実行条件として指定された工程であれば、後工程指定モードの方が編集しやすいため、決定部310は、この実行条件の工程は、後工程指定モードとして決定する。また例えば、1つの前工程が実行条件として指定された工程であれば、前工程指定モードの方が編集しやすいため、決定部310は、この実行条件の工程は、前工程指定モードとして決定する。指定画面表示制御部302は、設定されたモードに基づいて指定画面G2を表示させる。
上記変形例によれば、各工程の実行条件に基づいて、前工程指定モードと後工程指定モードの何れを設定するかを決定することによって、使い勝手の良いインタフェースとすることができる。例えば、ある工程の現状の実行条件が前工程指定モードの方がイメージしやすいものであれば、前工程指定モードが設定され、ある工程の現状の実行条件が後工程指定モードの方がイメージしやすいものであれば、後工程指定モードが設定されるといったように、工程に応じてモードを使い分けることができる。
[3-2.第2実施形態の変形例]
(2-1)テンプレートは、テキスト形式であってもよく、指示プログラム作成画面G3に表示させる際にラダー形式に変更されてもよい。テキスト形式は、第1の形式の一例である。ラダー形式は、第2の形式の一例である。即ち、第1の形式のデータは、拡張子が「.txt」などのテキストファイルである。第2の形式のデータは、拡張子が「.cxp」などのラダーファイルである。第1の形式と第2の形式は、互いに変換可能なデータ形式であればよく、本実施形態の例に限られない。例えば、第1の形式がcsv形式であり、第2の形式がロボット言語形式であってもよい。
作成画面表示制御部307は、テキスト形式のデータが、ラダー形式のデータとして表示されるように変換して、取得されたテンプレートを指示プログラム作成画面G3に表示させる。テンプレートはテキスト形式のデータとして作成されるので、指示プログラム作成部308は、テキスト形式のデータをラダー形式のデータに変換する公知のアプリケーションを利用して、指示プログラムを作成すればよい。テキスト形式とラダー形式以外の形式を利用する場合も同様に、第1の形式と第2の形式自体は、公知のアプリケーションによって変換されるようにすればよい。
変形例(2-1)によれば、プログラム作成装置30は、テキスト形式のデータをラダー形式のデータに変換するアプリケーションを利用して指示プログラムを作成できる。
(2-2)図23は、第2実施形態係る変形例の機能ブロック図である。図23に示すように、テンプレート作成部311が実現される。テンプレート作成部は、CPU31を主として実現される。テンプレート作成部311は、各動作に対応するテンプレートを作成する。ユーザは、テンプレートを作成する動作を指定し、ラダー言語又はロボット言語等のエディタを利用して、そのテンプレートを作成する。テンプレート作成部311は、ユーザの操作に基づいて、ラダー図又はコードを取得し、そのラダー図又はコードをテンプレートとしてテンプレートデータベースに格納する。テンプレート取得部306は、テンプレート作成部により作成されたテンプレートを取得する。
変形例(2-2)によれば、ユーザにテンプレートを作成させることによって、ユーザに応じた最適なテンプレートを提供できる。
[3-3.その他の変形例]
また例えば、第1実施形態と第2実施形態を組み合わせてもよいし、上記変形例を組み合わせてもよい。
また例えば、上記説明した各機能は、制御システム1における任意の装置で実現されるようにすればよい。例えば、ロボットコントローラが制御装置に相当し、制御装置10に含まれるものとして説明した機能がロボットコントローラにより実現されてもよい。また例えば、制御装置10に含まれるものとして説明した機能が複数の装置によって分担されてもよい。
また、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される技術的範囲は、そのようになされた変形をも含むものと理解すべきである。