本発明の発明者の見地によれば、所定の実行順で工程を実行する複数の産業装置の各々をコントローラに制御させる場合、各産業装置の変数を把握したうえでプログラミングをする必要があった。この点、各産業装置とコントローラがそれぞれ独自の変数を管理すれば、コントローラのプログラミング時に各産業装置特有の変数を意識する必要がなくなり、プログラミングが効率化する。そこで本発明の発明者は、複数の産業装置とコントローラがそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置を動作させるために鋭意研究開発を行った結果、新規かつ独創的なプログラム作成装置等に想到した。以降、本実施形態に係るプログラム作成装置等を詳細に説明する。
[1.生産システムの全体構成]
図1は、実施形態に係る生産システムの全体構成を示す図である。図1に示すように、生産システム1は、プログラム作成装置10、コントローラ20、産業装置30A,30B、及びサーバ40を含む。を含む。これら各装置は、Ethernet(登録商標)又は産業装置専用の通信規格等の任意のネットワークを利用して通信可能に接続される。なお、以降の説明で産業装置30A,30Bを特に区別する必要のないときは、単に産業装置30と記載する。同様に、CPU31A,31B、記憶部32A,32B、及び通信部33A,33Bを特に区別する必要のないときは、単にCPU31、記憶部32、及び通信部33と記載する。
プログラム作成装置10は、プログラムを作成するコンピュータである。例えば、プログラム作成装置10は、パーソナルコンピュータ、携帯端末(タブレット型端末を含む)、又は携帯電話(スマートフォンを含む)である。プログラム作成装置10は、CPU11、記憶部12、通信部13、操作部14、及び表示部15を含む。なお、図1では線を省略しているが、プログラム作成装置10は、産業装置30及びサーバ40とも接続可能である。
CPU11は、少なくとも1つのプロセッサを含む。記憶部12は、RAMやハードディスクを含み、各種プログラムやデータを記憶する。CPU11は、これらプログラムやデータに基づいて各種処理を実行する。通信部13は、ネットワークカードや各種通信コネクタ等の通信インタフェースを含み、他の装置との通信を行う。操作部14は、マウスやキーボード等の入力デバイスである。表示部15は、液晶ディスプレイ又は有機ELディスプレイ等であり、CPU11の指示により各種画面を表示する。
コントローラ20は、複数の産業装置30を制御するコンピュータである。例えば、コントローラ20は、PLCと呼ばれるコンピュータであってもよいし、PLCと同等の機能を有する他の名称のコンピュータであってもよい。例えば、コントローラ20と産業装置30の全体は、ラインよりも小さな単位であるセルと呼ばれることがあり、この場合には、コントローラ20は、セルコントローラと呼ばれることもある。
コントローラ20は、CPU21、記憶部22、及び通信部23を含む。CPU21、記憶部22、及び通信部23の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。なお、コントローラ20は、産業装置30の制御だけではなく、自身の直下に接続されたロボットやモータ等の機器を直接的に制御してもよいし、産業装置30の動作結果を示すデータの解析をサーバ40に依頼してもよい。
産業装置30は、工程を実行する装置である。産業装置30は、任意の種類の装置を適用可能であり、例えば、ロボットコントローラ、ロボットコントローラの下位装置、産業用ロボット、モータコントローラ、モータコントローラの下位装置、工作機械、プレス加工機、又は搬送機器などである。PLCも産業装置の一種である。産業装置30は、CPU31、記憶部32、及び通信部33を含む。CPU31、記憶部32、及び通信部33の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。
なお、産業装置30は、他の物理的構成が含まれもよく、例えば、ASICと呼ばれる特定用途向けの集積回路が含まれてもよい。また、産業装置30には、任意の物理的構成が接続されてよく、例えば、モータ等の制御対象の機器、モータ等の動作を検出するためのセンサ、加工対象となるワークの状態を撮影するカメラ、入出力機器、又は他の産業装置などが接続されていてもよい。また、本実施形態では、コントローラ20が2台の産業装置30を制御する場合を説明するが、コントローラ20が制御する産業装置30の台数は、任意の台数であってよく、例えば、1台であってもよいし、3台以上であってもよい。
サーバ40は、サーバコンピュータである。サーバ40は、CPU41、記憶部42、及び通信部43を含む。CPU41、記憶部42、及び通信部43の物理的構成は、それぞれCPU11、記憶部12、及び通信部13と同様であってよい。サーバ40は、コントローラ20及び産業装置30の動作結果を示すデータを収集したり、収集したデータ基づいて動作解析を行ったりする。なお、データの収集や解析を実行するコンピュータは、サーバ40に限られず、他のコンピュータであってもよい。例えば、プログラム作成装置10、ユーザが操作する他の装置、又は他のサーバコンピュータによってデータが収集されたり解析されたりしてもよい。
なお、記憶部12,22,32,42の各々に記憶されるものとして説明するプログラム及びデータは、ネットワークを介して供給されるようにしてもよい。また、各装置のハードウェア構成は、上記の例に限られず、種々のハードウェアを適用可能である。例えば、コンピュータ読み取り可能な情報記憶媒体を読み取る読取部(例えば、光ディスクドライブやメモリカードスロット)や外部機器と直接的に接続するための入出力部(例えば、USB端子)が含まれていてもよい。この場合、情報記憶媒体に記憶されたプログラムやデータが、読取部又は入出力部を介して供給されるようにしてもよい。
[2.生産システムの概要]
まず、生産システム1の概要を説明する。プログラム作成装置10は、コントローラ20が複数の産業装置30を制御するためのシステムプログラムを作成する。コントローラ20と産業装置30の全体をセルと呼ぶ場合には、システムプログラムはセルプログラムと呼ばれることもある。システムプログラムは、変数を利用して工程の実行順を制御するためのプログラムである。実行順とは工程が実行される順序である。
変数は、工程が実行される場合に参照及び変更の少なくとも一方が行われる情報である。本実施形態では、産業装置30の記憶部32に、工程を実行するための工程プログラムが記憶されており、変数は、工程プログラムにおいて参照及び変更の少なくとも一方が行われる。参照は、変数に対応するレジスタが読み出されることである。変更は、変数に対応するレジスタの値を書き換えることである。
変数は、工程の実行条件となり、工程ごとに用意される。変数は、産業装置30の動作を示す情報ということもできる。例えば、工程には、工程の開始条件となる開始変数、中断条件(一時停止条件)となる中断変数、又は、終了条件となる終了変数が用意される。これらの変数以外にも、任意の変数が存在してよく、例えば、工程がビジー状態であることを示す変数、工程の実行結果を示す変数、途中計算を示す変数、産業装置30の設定を示す変数、又はセンサの検出結果を示す変数があってもよい。変数は、入出力変数と呼ばれることもある。変数は、産業装置30のレジスタに対応する。変数は、産業装置30又は他の機器(コントローラ20等)によって参照される。
本実施形態では、コントローラ20と産業装置30がそれぞれ独自に変数を管理する。このため、同じ変数であったとしても、コントローラ20が管理する名称と、産業装置30が管理する名称と、が異なる。以降、コントローラ20が管理する変数をシステム変数と記載し、産業装置30が管理する変数を装置変数と記載する。システム変数は、コントローラ20が識別する変数である。システム変数は、システムプログラムにより参照及び変更の少なくとも一方が行われる。一方、装置変数は、産業装置30が識別する変数である。装置変数は、工程プログラムにより参照及び変更の少なくとも一方が行われる。各産業装置30の装置変数の名称は、当該装置変数に対応する工程を一意に識別する文字列と、他の工程と共通の文字列と、を含むものとする。
例えば、コントローラ20のユーザと、産業装置30のユーザと、が互いに異なる場合には、各ユーザは、独自の変数を設定する。コントローラ20のユーザは、産業装置30のユーザが設定した装置変数を意識せずに、独自のシステム変数を設定可能である。産業装置30のユーザは、コントローラ20のユーザが設定したシステム変数を意識せずに、独自の装置変数を設定可能である。なお、コントローラ20のユーザと、産業装置30のユーザと、は同じであってもよい。
工程とは、産業装置30が行う作業又は動作である。工程は、1つの作業又は動作だけから構成されてもよいし、複数の作業又は動作の組み合わせから構成されてもよい。産業装置30は、任意の用途に応じた工程を実行可能であり、例えば、ワークの認識、ワークの把持、扉の開閉、ワークのセット、工作機械にワークを固定する動作、又は工作機械を利用した加工などを工程として実行する。産業装置30は、少なくとも1つの工程を実行する。産業装置30は、1つの工程だけを実行してもよいし、複数の工程を実行してもよい。
工程プログラムは、工程における個々の手順が定義されたプログラムである。工程プログラムは、産業装置30の動作を定義したプログラムということもできる。工程プログラムは、任意の言語で作成可能であり、例えば、ラダー言語又はロボット言語によって作成される。産業装置30によって工程プログラムの言語が異なってもよく、例えば、産業装置30Aの工程プログラムがラダー言語であり、産業装置30Bの工程プログラムがロボット言語であってもよい。例えば、工程プログラムは、開始変数が実行開始の条件となるように、ラダーチャートにおける起動スイッチやコイルが記述されていたり、ソースコードにおける条件分岐が記述されていたりする。また例えば、工程プログラムは、工程の最後の処理が終了した場合に、終了変数を変更するように命令が記述されている。また例えば、工程プログラムは、工程の実行中に異常が発生した場合に、中断変数を変更するように命令が記述されている。
本実施形態では、工程ごとに工程プログラムが用意されており、工程と工程プログラムは、1対1の関係にある。このため、ある産業装置30がn個(nは自然数)の工程を行うとすると、当該産業装置30は、少なくともn個の工程プログラムを記憶する。なお、工程と工程プログラムは、1対1の関係になくてもよく、例えば、1つの工程プログラムにより複数の工程が実行されてもよいし、1つの工程を実行するために複数の工程プログラムが用意されていてもよい。
図2は、システムプログラムと工程プログラムの関係を示す図である。本実施形態では、産業装置30Aが工程A1,A2,A3の3つの工程を実行し、その後に、産業装置30Bが工程B1,B2の2つの工程を実行する場合を例に挙げる。図2に示すように、産業装置30Aは、工程A1,A2,A3にそれぞれ対応する工程プログラムPA1,PA2,PA3を記憶する。産業装置30Bは、工程B1,B2にそれぞれ対応する工程プログラムPB1,PB2を記憶する。以降、個々の工程プログラムを区別しないときは、単に工程プログラムPと記載する。
図2の例では、工程プログラムPのデフォルトの変数として、実行開始を示す開始変数「Start」、中断(一時停止)を示す中断変数「Abort」、ビジー状態を示すビジー変数「Busy」、及び実行終了を示す終了変数「End」が用意されている。工程プログラムPには、これらデフォルトの変数以外の変数も設定可能である。例えば、所定の信号の値を示す変数、又は、途中計算を示す変数が設定されてもよい。
本実施形態では、ユーザがプログラム作成装置10を操作して工程プログラムPを作成する場合を説明するが、工程プログラムPは、他のコンピュータにより作成されてもよい。例えば、コントローラ20のユーザと産業装置30のユーザとが異なる場合には、工程プログラムPは、プログラム作成装置10以外の他のコンピュータにより作成される。システムプログラムQは、工程の実行順を制御するためのプログラムなので、システムプログラムQを作成する前に、工程プログラムPが予め作成される。
図3は、工程プログラムPの作成手順を示す説明図である。ここでは、工程プログラムPA2の作成手順を例に挙げて説明する。図3に示すように、ユーザは、プログラム作成装置10にインストールされたエンジニアリングツールを利用して、工程プロジェクトを作成する(図3の手順1)。工程プロジェクトは、工程プログラムPA2の管理単位であり、産業装置30の名称や工程の名称等の任意のプロジェクト名を設定可能である。
ユーザは、工程プロジェクトを作成すると、工程プログラムPA2の初期設定を行う(図3の手順2)。初期設定では、工程プログラムPA2の基本的な情報が設定され、例えば、工程を実行させる産業装置30Aの名称、工程プログラムPA2の種類、及び工程の名称等が指定される。工程の名称は、産業装置30の中で工程を一意に識別する情報である。工程の名称は、ユーザにより入力された任意の文字列であってよく、他の工程とは重複しないように設定される。なお、後述する想定実行時間についても、手順2で指定されるものとする。
図3の手順2において、作成中の工程プログラムPA2に対してデフォルトの変数が設定される。例えば、工程プログラムPA2のデフォルトの変数として、開始変数「Start」、中断変数「Abort」、ビジー変数「Busy」、及び終了変数「End」が設定される。例えば、工程A2の開始変数「Start」が所定の値に変更されると、工程プログラムPA2が実行されて工程A2が開始される。また例えば、工程プログラムPA2に記述された全ての命令が実行されて工程が終了すると、工程A2の終了変数「End」が所定の値に変更される。
本実施形態では、他の工程A1,A3でもデフォルトの変数が用意されている。このため、工程A2の変数であることを識別できるように、工程A2を識別する「A2」の文字列が工程の名称に付与される。例えば、工程A2の開始変数の名称は「A2.Start」となり、工程A2の終了変数の名称は「A2.End」となる。図2及び図3では省略しているが、中断変数「Abort」及びビジー変数「Busy」についても、「A2」の文字列が付与される。工程プログラムPA2の作成時に設定される変数は、装置変数である。図3に示すように、本実施形態では、装置変数の名称は、工程の名称と、デフォルトの変数の名称と、を含む。
ユーザは、デフォルトの変数以外の他の変数も設定可能である。例えば、ユーザは、他の変数を設定する場合、産業装置30A内の所定の信号の名称を示す「S1」を入力する(図3の手順3)。他の変数の名称は、開始変数等と同様に、工程A2を識別する「A2」の文字列が付与されて「A2.S1」となる。この変数も装置変数の一例である。
変数の設定が終了すると、工程プログラムPA2のプログラミングを行い(図3の手順4)、工程プログラムPA2の作成が完了する。工程プログラムPA2のプログラミング自体は、公知の種々の手法を適用可能であり、例えば、ラダー言語又はロボット言語を利用可能である。なお、プログラミングや変数設定の際に、ユーザが補足説明のコメントを入力するようにしてもよい。
工程プログラムPA2が作成されると、工程プログラムPA2の実データが、産業装置30Aに記録される。更に、ユーザが指定した工程の名称や変数の名称等が格納された工程情報が、コントローラ20の工程データベースに登録される。工程情報及び工程データベースの詳細については後述する。ユーザは、工程の数だけ上記作成手順を繰り返し、各工程の工程プログラムPと工程情報を作成する。
なお、本実施形態では、工程プログラムPA1,PA2,PA3の作成時に、産業装置30Aの中での実行順が指定され、工程情報に格納されるものとする。工程プログラムPB1,PB2についても同様であり、これらの作成時に産業装置30Bの中での実行順が指定され、工程情報に格納されるものとする。ただし、産業装置30Aが実行する工程と、産業装置30Bが実行する工程と、の何れが先に実行させるかについては、工程プログラムPの作成時点で指定されてもよいし、この時点では指定されないようにしてもよい。
ユーザは、工程プログラムPの作成及び工程情報の登録を完了すると、システムプログラムQを作成する。本実施形態では、工程A1,A2,A3,B1,B2の順序で実行されるので、ユーザは、この順番で工程プログラムPA1,PA2,PA3,PB1,PB2が実行されるように、システムプログラムQを作成する。
図2の例であれば、工程A1は、所定の入出力信号が入力されると開始する。例えば、入出力信号は、コントローラ20又は産業装置30Aに備えられたボタン等の外部機器から入力される。システムプログラムQは、入出力信号が入力された場合に、工程Aの装置変数「A1.Start」を所定の値に変更する。この装置変数をシステム変数で記述すると「Equip30A.Step1.ST」となる。このように、本実施形態のシステム変数は、産業装置30Aの名称を示す「Equip30A」、工程の実行順を示す「Step1」、及び変数の種類を示す「ST」を含み、装置変数とは異なるルールで名称が付与される。図2に示すように、他の変数についても同様のルールでシステム変数の名称が付与される。
例えば、ユーザは、システムプログラムQの作成時に、システム変数と装置変数とを互いに変換する変換テーブルを作成してコントローラ20に記憶させる。変換テーブルは、産業装置30ごとに作成される。システムプログラムQは、産業装置30Aの変換テーブルに基づいて、システム変数「Equip30A.Step1.ST」を装置変数「A1.Start」に変換し、この装置変数を所定の値に変更する。装置変数「A1.Start」が所定の値になると、工程プログラムPA1が実行されて工程A1が開始する。
工程A1が正常に終了すると、工程A1の装置変数「A1.End」が所定の値になり、コントローラ20にその旨が通知される。システムプログラムQは、産業装置30Aの変換テーブルに基づいて、装置変数「A1.End」をシステム変数「Equip30A.Step1.EN」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムQは、産業装置30Aの変換テーブルに基づいて、システム変数「Equip30A.Step2.ST」を装置変数「A2.Start」に変換し、この装置変数を所定の値に変更する。装置変数「A2.Start」が所定の値になると、工程プログラムPA2が実行されて工程A2が開始する。
工程A2が正常に終了すると、工程A2の装置変数「A2.S1」と「A2.End」が所定の値になり、コントローラ20にその旨が通知される。システムプログラムQは、産業装置30Aの変換テーブルに基づいて、装置変数「A2.S1」と「A2.End」を、それぞれシステム変数「Equip30A.Step2.S−1」と「Equip30A.Step2.EN」に変換し、これらのシステム変数が所定の値になったことを検出する。システムプログラムQは、産業装置30Aの変換テーブルに基づいて、システム変数「Equip30A.Step3.ST」を装置変数「A3.Start」に変換し、この装置変数「A3.Start」を所定の値に変更する。装置変数「A3.Start」が所定の値になると、工程プログラムPA3が実行されて工程A3が開始する。
工程A3が正常に終了すると、工程A3の装置変数「A3.End」が所定の値になり、コントローラ20にその旨が通知される。システムプログラムQは、産業装置30Aの変換テーブルに基づいて、装置変数「A3.End」をシステム変数「Equip30A.Step3.EN」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムQは、産業装置30Bの変換テーブルに基づいて、システム変数「Equip30B.Step4.ST」を装置変数「B1.Start」に変換し、この装置変数を所定の値に変更する。装置変数「B1.Start」が所定の値になると、工程プログラムPB1が実行されて工程B1が開始する。
工程B1が正常に終了すると、工程B1の終了変数「B1.End」が所定の値になり、コントローラ20にその旨が通知される。システムプログラムQは、産業装置30Bの変換テーブルに基づいて、装置変数「B1.End」をシステム変数「Equip30B.Step4.EN」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムQは、産業装置30Bの変換テーブルに基づいて、システム変数「Equip30B.Step5.ST」を装置変数「B2.Start」に変換し、この装置変数を所定の値に変更する。装置変数「B2.Start」が所定の値になると、工程プログラムPB2が実行されて工程B2が開始する。
工程B2が正常に終了すると、工程B2の終了変数「B2.End」が所定の値になり、コントローラ20にその旨が通知される。システムプログラムQは、産業装置30Bの変換テーブルに基づいて、装置変数「B2.End」をシステム変数「Equip30B.Step5.EN」に変換し、このシステム変数が所定の値になったことを検出する。システムプログラムQは、所定の出力信号を出力させ、1サイクル目の全工程が終了する。出力信号は、コントローラ20又は産業装置30に対する信号であってもよいし、外部のセンサやLEDライト等の機器に対する信号であってもよい。
システム変数と装置変数は、サイクルの終了時又は各工程の終了後等の任意のタイミングで初期値に変更される。2サイクル目は、1サイクル目の終了後に開始されてもよいし、1サイクル目の途中で開始されてもよい。2サイクル目の開始タイミングが訪れると、システムプログラムQは、産業装置30Aの変更テーブルに基づいて、工程A1の装置変数「A1.Start」を所定の値に変更させ、2サイクル目の各工程が開始する。以降、1サイクル目と同様にして各工程が周期的に実行される。
以上のように、本実施形態の生産システム1は、複数の産業装置30とコントローラ20がそれぞれ独自に管理する変数を変換し、所定の実行順で各産業装置30を動作させる構成を有する。以降、当該構成の詳細を説明する。
[3.生産システムで実現される機能]
図4は、生産システム1で実現される機能を示す機能ブロック図である。本実施形態では、コントローラ20と産業装置30の各々で実現される機能について説明する。なお、産業装置30A,30Bの各々では、同様の機能が実現されるため、図4では、1つの産業装置30として記載する。
[3−1.コントローラで実現される機能]
図4に示すように、コントローラ20では、データ記憶部200、システムプログラム実行部201、及び変換部202が実現される。コントローラ20は、複数の工程に対して指定された実行順で各産業装置30を動作させるためのシステムプログラムQを実行し、システム変数の参照及び変更の少なくとも一方を行う。
[データ記憶部]
データ記憶部200は、記憶部22を主として実現される。データ記憶部200は、産業装置30を制御するために必要なデータを記憶する。例えば、データ記憶部200は、システムプログラムQを記憶する。データ記憶部200に記憶されたシステムプログラムQは、プログラム作成装置10によって作成される。また例えば、データ記憶部200は、コントローラ20の制御対象となる産業装置30A,30Bの各々の名称やIPアドレス等の情報を記憶してもよい。
また例えば、データ記憶部200は、各産業装置30の装置変数に対応するシステム変数の値を記憶してもよい。システム変数と装置変数とは定期的に整合性が取られており、装置変数が変更されると、対応するシステム変数も変更されるものとする。その際には、後述する変換部202により装置変数がシステム変数に変換される。なお、システム変数が先に変更されてもよく、この場合には、変換部202によりシステム変数が装置変数に変換され、装置変数が変更される。
また例えば、データ記憶部200は、産業装置30Aの変換テーブルTAと、産業装置30Bの変換テーブルTBと、を記憶する。以降、これらの変換テーブルTA,TBを特に区別しないときは、単に変換テーブルTと記載する。
図5は、変換テーブルTAのデータ格納例を示す図であり、図6は、変換テーブルTBのデータ格納例を示す図である。図5及び図6に示すように、変換テーブルTAには、システム変数と産業装置30Aの装置変数とが関連付けられており、変換テーブルTBには、システム変数と、産業装置30Bの装置変数と、が関連付けられている。例えば、変換テーブルTA,TBは、システムプログラムQの作成時にユーザによって作成されてもよいし、工程プログラムPの作成時にユーザによって作成されてもよい。
変換テーブルTは、各産業装置30の装置変数とシステム変数との変換データの一例である。本実施形態では、データ記憶部200は、変換データとして、産業装置30ごとに異なる変換テーブルTを記憶する。変換テーブルTは、産業装置30の数だけ用意される。即ち、変換テーブルTと産業装置30とは、1対1で対応する。本実施形態で変換テーブルTと記載した箇所は、変換データと読み替えることができる。変換データは、各産業装置30の装置変数とシステム変数とを互いに変換するためのデータである。別の言い方をすれば、変換データは、各産業装置30の装置変数とシステム変数とが関連付けられたデータである。変換データは、装置変数とシステム変数の対応関係を示すデータということもできる。変換データにより、装置変数に対応するシステム変数と、システム変数に対応する装置変数と、が検索可能になる。
なお、変換データは、テーブル形式のデータに限られず、任意の形式のデータであってもよい。例えば、後述する変形例のように、産業装置30ごとに別々のテーブルに分けるのではなく、複数の産業装置30の装置変数とシステム変数の関係を1つにまとめたデータベースであってもよい。また例えば、装置変数とシステム変数の関係をプログラムコードの一部として記述する場合には、変換データは、これらの変換プログラムであってもよい。また例えば、変換データは、CSV形式やテキスト形式等の任意のデータであってよい。データ記憶部200は、変換テーブルTを記憶することによって、変換データ記憶部として機能する。
[システムプログラム実行部]
システムプログラム実行部201は、CPU21を主として実現される。システムプログラム実行部201は、システムプログラムQに基づいて、工程の実行順を制御する。例えば、システムプログラム実行部201は、ユーザにより指定された実行順で産業装置30が動作するように、各産業装置30に対して各工程の開始指示を送る。
本実施形態では、開始変数によって工程の実行開始が制御されるので、システムプログラム実行部201は、後述する変換部202に、システム変数で記述された開始変数を装置変数に変換させ、当該変換された装置変数の変更指示を産業装置30に送る。また、本実施形態では、終了変数によって工程の終了が検出されるので、システムプログラム実行部は、後述する変換部202に、装置変数で記述された終了変数をシステム変数に変換させ、当該変換されたシステム変数の値によって工程の終了を検出する。システムプログラム実行部201は、次の工程を開始するために、変換部202を利用して当該次の工程の開始変数を変更する。以降、同様の処理によって、工程の実行順が制御される。工程の異常の検出やビジー状態の検出についても同様であり、装置変数として記述された中断変数やビジー変数がシステム変数に変換されることによって、これらの検出が可能となる。
[変換部]
変換部202は、CPU21を主として実現される。変換部202は、コントローラ20と各産業装置30とが通信する場合に、当該産業装置30の変換テーブルTに基づいて、当該産業装置30の装置変数とシステム変数との変換を行う。本実施形態では、産業装置30ごとに変換テーブルTが用意されているので、変換部は、各産業装置30の変換テーブルTに基づいて、当該産業装置30の装置変数とシステム変数との変換を行うことになる。
コントローラ20と各産業装置30とが通信する場合とは、コントローラ20が産業装置30に情報を送信する場合、又は、産業装置30がコントローラ20に情報を送信する場合である。装置変数とシステム変数との変換とは、装置変数をシステム変数に変換すること、又は、システム変数を装置変数に変換することである。ここでの変換とは、関連付けられた他の変数を特定することである。変数を特定するとは、変数の名称を特定すること、又は、変数に対応するレジスタを特定することである。
例えば、変換部202は、コントローラ20の通信相手となる産業装置30の変換テーブルTに基づいて、システム変数を当該産業装置30の装置変数に変換して送信する。ここでのコントローラ20の通信相手とは、情報の送信先の産業装置30である。変換部202は、コントローラ20が何らかの指示を産業装置30に送る場合に、データ記憶部200に記憶された変換テーブルTのうち、当該産業装置30の変換テーブルTを参照し、システム変数を装置変数に変換して送信する。
また例えば、変換部202は、コントローラ20の通信相手となる産業装置30の変換テーブルTに基づいて、当該産業装置30から受信した装置変数をシステム変数に変換する。ここでのコントローラ20の通信相手とは、応答を送信する産業装置30である。変換部202は、コントローラ20が何らかの応答を産業装置30から受け取る場合に、データ記憶部200に記憶された変換テーブルTのうち、当該産業装置30の変換テーブルTを参照し、装置変数をシステム変数に変換して送信する。
[3−2.産業装置で実現される機能]
図4に示すように、産業装置30では、データ記憶部300と、工程プログラム実行部301と、が実現される。複数の産業装置30の各々は、所定の工程を実行するための工程プログラムPを実行し、装置変数の参照及び変更の少なくとも一方を行う。
[データ記憶部]
データ記憶部300は、記憶部32を主として実現される。データ記憶部300は、産業装置30が工程を実行するために必要なデータを記憶する。例えば、データ記憶部300は、工程プログラムPを記憶する。本実施形態では、工程プログラムPごとに工程情報が用意されるので、データ記憶部300は、工程プログラムPと工程情報を互いに関連付けて記憶してもよい。また、データ記憶部300は、各工程の装置変数の値を記憶する。先述したように、データ記憶部300の装置変数と、データ記憶部200のシステム変数と、は整合性が取られる。また、データ記憶部300は、モータを制御する際のパラメータやロボットのティーチングデータ等を記憶してもよい。
[工程プログラム実行部]
工程プログラム実行部301は、CPU31を主として実現される。工程プログラム実行部301は、データ記憶部300に記憶された工程プログラムPと変数に基づいて、各工程を実行する。例えば、コントローラ20から受信した指示により、装置変数で記述された開始変数が所定の値に変化し、工程プログラム実行部301は、その旨を検知した場合に工程を開始する。また例えば、工程プログラム実行部301は、工程プログラムPに記述された最後の処理が終了した場合に、装置変数で記述された終了変数を所定の値に変化させる。装置変数で記述された終了変数は、変換部202によってシステム変数に変換され、システムプログラム実行部201は工程が終了したことを検知する。その後、次の工程の開始変数(装置変数で記述された開始変数)が所定の値に変化し、工程プログラム実行部301は、次の工程の工程プログラムPの実行を開始する。以降、同様の処理によって、各工程が順次実行される。
[4.生産システムで実行される処理]
図7及び図8は、生産システム1で実行される処理の一例を示すフロー図である。図7及び図8に示す処理は、CPU21が記憶部22に記憶されたシステムプログラムQに従って動作し、CPU31が記憶部32に記憶された工程プログラムPに従って動作することによって実行される。図7及び図8に示す処理は、図4に示す機能ブロックにより実行される処理の一例である。本実施形態では、図2に示す工程が実行される場合の処理を例に挙げる。なお、コントローラ20の記憶部22に記憶されたシステム変数と、産業装置30の記憶部32に記憶された装置変数と、は互いに初期値が設定されているものとする。
図7に示すように、コントローラ20は、1サイクル目の開始条件となる入出力信号を受け付けると(S1)、産業装置30Aの変換テーブルTAに基づいて、システム変数で記述された工程A1の開始変数「Equip30A.Step1.ST」を装置変数「A1.Start」に変換し、装置変数「A1.Start」を所定の値に変更する(S2)。S2においては、コントローラ20は、システム変数「Equip30A.Step1.ST」を装置変数「A1.Start」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
産業装置30Aは、コントローラ20からの指示を受信すると、装置変数で記述された工程A1の開始変数「A1.Start」を所定の値に変更して工程A1を開始する(S3)。S3においては、工程プログラムPA1は、装置変数「A1.Start」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程A1を開始する。
産業装置30Aは、工程A1が終了すると、装置変数で記述された工程A1の終了変数「A1.End」を所定の値に変更する(S4)。S4においては、産業装置30Aは、コントローラ20に対し、装置変数「A1.End」が所定の値に変更されたことを通知する。
コントローラ20は、産業装置30Aの変換テーブルTAに基づいて、装置変数で記述された工程A1の終了変数「A1.End」をシステム変数「Equip30A.Step1.EN」に変換して所定の値に変更されたこと(工程A1が終了したこと)を検出する(S5)。
コントローラ20は、産業装置30Aの変換テーブルTAに基づいて、システム変数で記述された工程A1の開始変数「Equip30A.Step2.ST」を装置変数「A2.Start」に変換し、装置変数「A2.Start」を所定の値に変更する(S6)。S6においては、コントローラ20は、システム変数「Equip30A.Step2.ST」を装置変数「A2.Start」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
産業装置30Aは、コントローラ20からの指示を受信すると、装置変数で記述された工程A2の開始変数「A2.Start」を所定の値に変更して工程A2を開始する(S7)。S7においては、工程プログラムPA2は、装置変数「A2.Start」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程A2を開始する。
産業装置30Aは、工程A2が終了すると、装置変数で記述された工程A2の変数「A2.S1」と終了変数「A2.End」を所定の値に変更する(S8)。なお、装置変数「A2.S1」は、工程A2の終了前に所定の値に変更されてもよい。S8においては、産業装置30Aは、コントローラ20に対し、装置変数「A2.S1」と「A2.End」が所定の値に変更されたことを通知する。
コントローラ20は、産業装置30Aの変換テーブルTAに基づいて、装置変数で記述された工程A2の変数「A2.S1」と終了変数「A2.End」をシステム変数「Equip30A.Step2.S−1」と「Equip30A.Step2.EN」に変換して所定の値に変更されたこと(工程A2が終了したこと)を検出する(S9)。
コントローラ20は、産業装置30Aの変換テーブルTAに基づいて、システム変数で記述された工程A3の開始変数「Equip30A.Step3.ST」を装置変数「A3.Start」に変換し、装置変数「A3.Start」を所定の値に変更する(S10)。S10においては、コントローラ20は、システム変数「Equip30A.Step3.ST」を装置変数「A3.Start」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
産業装置30Aは、コントローラ20からの指示を受信すると、装置変数で記述された工程A3の開始変数「A3.Start」を所定の値に変更して工程A3を開始する(S11)。S11においては、工程プログラムPA3は、装置変数「A3.Start」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程A3を開始する。
産業装置30Aは、工程A3が終了すると、装置変数で記述された工程A3の終了変数「A3.End」を所定の値に変更する(S12)。S12においては、産業装置30Aは、コントローラ20に対し、装置変数「A2.End」が所定の値に変更されたことを通知する。
コントローラ20は、産業装置30Aの変換テーブルTAに基づいて、装置変数で記述された工程A3の終了変数「A3.End」をシステム変数「Equip30A.Step3.EN」に変換して所定の値に変更されたこと(工程A3が終了したこと)を検出する(S13)。
図8に移り、コントローラ20は、産業装置30Bの変換テーブルTBに基づいて、システム変数で記述された工程B1の開始変数「Equip30B.Step4.ST」を装置変数「B1.Start」に変換し、装置変数「B1.Start」を所定の値に変更する(S14)。S14においては、コントローラ20は、システム変数「Equip30B.Step4.ST」を装置変数「B1.Start」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
産業装置30Bは、コントローラ20からの指示を受信すると、装置変数で記述された工程B1の開始変数「B1.Start」を所定の値に変更して工程B1を開始する(S15)。S15においては、工程プログラムPB1は、装置変数「B1.Start」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程B1を開始する。
産業装置30Bは、工程B1が終了すると、装置変数で記述された工程B1の終了変数「B1.End」を所定の値に変更する(S16)。S16においては、産業装置30Bは、コントローラ20に対し、装置変数「B1.End」が所定の値に変更されたことを通知する。
コントローラ20は、産業装置30Bの変換テーブルTBに基づいて、装置変数で記述された工程B1の終了変数「B1.End」をシステム変数「Equip30B.Step4.EN」に変換して所定の値に変更されたこと(工程B1が終了したこと)を検出する(S17)。
コントローラ20は、産業装置30Bの変換テーブルTBに基づいて、システム変数で記述された工程B2の開始変数「Equip30B.Step5.ST」を装置変数「B2.Start」に変換し、装置変数「B2.Start」を所定の値に変更する(S18)。S18においては、コントローラ20は、システム変数「Equip30B.Step5.ST」を装置変数「B2.Start」に変換し、この装置変数を所定の値に変更する旨の指示を送る。
産業装置30Bは、コントローラ20からの指示を受信すると、装置変数で記述された工程B2の開始変数「B2.Start」を所定の値に変更して工程B2を開始する(S19)。S19においては、工程プログラムPB2は、装置変数「B2.Start」を監視し、所定の値になったことを検出すると、最初に記述された命令を実行し、工程B2を開始する。
産業装置30Bは、工程B2が終了すると、装置変数で記述された工程B2の終了変数「B2.End」を所定の値に変更する(S20)。S20においては、産業装置30Bは、コントローラ20に対し、装置変数「B2.End」が所定の値に変更されたことを通知する。
コントローラ20は、産業装置30Bの変換テーブルTBに基づいて、装置変数で記述された工程B2の終了変数「B2.End」をシステム変数「Equip30B.Step5.EN」に変換して所定の値に変更されたこと(工程B2が終了したこと)を検出する(S21)。その後、所定の信号が出力される。
コントローラ20は、所定の終了条件が満たされたか否かを判定する(S22)。終了条件は、サイクルを終了するための条件であり、ユーザが所定の操作を行うことや所定の日時が訪れることといった任意の条件を設定可能である。終了条件が満たされたと判定されない場合(S22;N)、S2の処理に戻り、次のサイクルが開始される。一方、終了条件が満たされたと判定された場合(S22;Y)、本処理は終了する。
本実施形態の生産システム1によれば、コントローラ20と各産業装置30とが通信する場合に、当該産業装置30の変換テーブルTに基づいて、当該産業装置30の装置変数とシステム変数を変換することによって、産業装置30とコントローラ20がそれぞれ装置変数とシステム変数といった独自の変数を管理する場合であったとしても、複数の工程に対して指定された実行順で各産業装置30を動作させることができる。例えば、システムプログラムQの作成者と、工程プログラムPの作成者と、が異なり、各作成者が独自の変数でプログラム設計をしたとしても、変換テーブルTによって、変数の違いを吸収し、プログラムの設計を容易化することができる。
また、コントローラ20側で変換テーブルTの管理と変数の変換を行うことにより、既存の産業装置30側に変更を加える必要をなくすことができる。また。既存の産業装置30に変更を加える必要があったとしても、最低限の変更で済ませることができる。このため、産業装置30側で作成された工程プログラムP等の資産を最大限流用することができる。また、産業装置30側で変換テーブルTの管理や変数の変換をする必要が無いので、産業装置30の処理負荷を軽減し、メモリ消費量も削減することができる。このため、例えば低スペックの産業装置30を利用した場合であったとしても、産業装置30の動作に支障をきたす可能性を低減させることができる。
また、変換データとして、産業装置30ごとに異なる変換テーブルTを記憶することによって、変換データの管理を簡易化することができる。
また、各産業装置30の装置変数の名称を、工程を一意に識別する文字列と、他の工程と共通の文字列と、を含むようにすることで、装置変数の名称の体系をパターン化して分かりやすくすることができ、プログラミングを簡易化することができる。
[5.変形例]
なお、本発明は、以上に説明した実施の形態に限定されるものではない。本発明の趣旨を逸脱しない範囲で、適宜変更可能である。
(1)例えば、データ記憶部200は、産業装置30ごとに別々の変換テーブルTを記憶するのではなく各産業装置30の変換データが格納された変換データベースを記憶してもよい。図9は、変換データベースDB1のデータ格納例を示す図である。図9に示すように、変換データベースDB1は、個々の変換データを一括して管理するデータベースである。例えば、変換データベースDB1には、システム変数と、各産業装置30の装置変数と、が関連付けられている。変換データベースDB1は、実施形態で説明した変換テーブルTを統括して管理するデータということもできる。
変換部202は、変換データベースDB1に格納された各産業装置30の変換データに基づいて、当該産業装置30の装置変数とシステム変数との変換を行う。変換部202は、変換データベースDB1を参照し、通信相手の産業装置30に関連付けられた変換データに基づいて、産業装置30の装置変数とシステム変数との変換を行う。変換データを取得した後の変数の変換方法については、実施形態で説明した通りである。
変形例(1)によれば、各産業装置30の変換データを、変換データベースDB1で一括して管理することができる。
(2)また例えば、プログラム作成装置10には、システムプログラムQの作成を簡易化するためのエンジニアリングツールが用意されているようにしてもよい。プログラム作成装置10においてエンジニアリングツールが起動すると、工程の実行順を指定してシステムプログラムQを作成するためのスケジュール画面が表示部15に表示される。
図10は、スケジュール画面の一例を示す図である。図10に示すように、スケジュール画面G1は、ユーザの作業を支援する種々のユーザインタフェースを有する画面である。スケジュール画面G1は、プログラムの作成以外にも変数の設定やシミュレーション等が可能であってもよい。例えば、スケジュール画面G1には、工程の実行順を指定するためのタイミングチャートCが表示される。
例えば、タイミングチャートCには、右方向(横方向)にタイミング軸(時間軸)が設定されている。画面の右に行くほど、時間的に後であることを意味する。また、タイミングチャートCには、一定時間(図10の場合は5秒)ごとに数値が表示されており、単位時間(図10の場合は1秒)を示すマス目が並べられている。図10の例であれば、例えば、0〜5秒の間には、5つのマス目が並べられる。
ユーザは、タイミングチャートCにおいて、産業装置30が実行する工程の実行順を指定し、システムプログラムQを作成する。図10の例では、ユーザがまだ産業装置30を指定しておらず、タイミングチャートCには、工程に関する情報は表示されていない。
例えば、スケジュール画面G1には、コントローラ20の制御対象となる産業装置30の名称を示すリストL1が表示される。本変形例では、産業装置30A,30Bが制御対象となるので、これら2台の名称がリストL1に表示される。例えば、ユーザが、リストL1からタイミングチャートCに、産業装置30Aの名称をドラッグアンドドロップすると、タイミングチャートCに、産業装置30Aが実行する工程A1,A2,A3の情報が表示される。
図11は、産業装置30Aの名称がドラッグアンドドロップされた場合のタイミングチャートCの一例を示す図である。図11に示すように、タイミングチャートCには、産業装置30Aの名称、工程A1,A2,A3の各々の名称、及び各工程に設定された想定実行時間が表示される。なお、タイミングチャートCには、工程情報に含まれる他の情報(例えば、変数の名称や産業装置30A内における実行順)が表示されてもよい。
想定実行時間は、各工程の実行に要する想定時間である。本変形例では、想定実行時間が1秒単位で定義される場合を説明するが、2秒単位や0.5秒単位などの他の単位で定義されてもよい。図11の例であれば、工程A1,A2,A3の各々の想定実行時間は、3秒、4秒、3秒となっている。なお、図11の例では、ある工程から次の工程に移行するのに要する時間を考慮していないが、後述するように、工程間の時間が考慮されてもよい。
本変形例では、産業装置30内での工程A1,A2,A3の実行順が予め指定されているので、タイミングチャートCには、これらの工程の名称が、上から下に向けて実行順に並べて表示される。各工程の名称が実行順に並ぶことにより、ユーザは、これらの実行順を直感的に把握できる。
また、タイミングチャートCでは、工程A1,A2,A3をそれぞれ示す工程イメージI1,I2,I3が、タイミング軸上で実行順に並べて表示される。例えば、工程A1の想定実行時間は3秒であり、工程A1の行における1秒〜3秒の3つのマス目を所定の色で塗りつぶすように、工程イメージI1が表示される。工程A2の想定実行時間は4秒であり、工程A2の行における4秒〜7秒の4つのマス目を塗りつぶすように、工程イメージI2が表示される。工程A3の想定実行時間は3秒であり、工程A3の行における8秒〜10秒の3つのマス目を塗りつぶすように、工程イメージI3が表示される。
図11に示すように、工程イメージI1,I2,I3は、想定実行時間に応じた長さになっており、ユーザは、工程A1,A2,A3の各々の想定実行時間の長さを直感的に把握できる。更に、工程イメージI1,I2,I3がタイミング軸上で実行順に並ぶので、ユーザは、工程A1,A2,A3の実行順を時系列的に把握できる。
図11の状態では、産業装置30Aしか選択されていないので、ユーザは、産業装置30Bの名称も選択する。例えば、ユーザが、リストL1からタイミングチャートCに、産業装置30Bの名称をドラッグアンドドロップすると、タイミングチャートCに、産業装置30Bが実行する工程B1,B2の情報が表示される。
図12は、産業装置30Bの名称がドラッグアンドドロップされた場合のタイミングチャートCの一例を示す図である。図12に示すように、タイミングチャートCには、産業装置30Bの名称、工程B1,B2の各々の名称、及び各工程に設定された想定実行時間が新たに表示される。図12の例では、工程イメージI4,I5が示すように、工程B1,B2の各々の想定実行時間は、4秒、2秒となっている。
図12の状態では、産業装置30Bの名称がタイミングチャートC上にドラッグアンドドロップされただけであり、工程A1,A2,A3と、工程B1、B2と、の実行順は、まだ指定されていない。このため、タイミングチャートC上では、工程A1,A2,A3と、工程B1,B2と、の時間的な前後関係は区別されておらず、工程A1も0秒から開始し、工程B1も0秒から開始する状態となっている。
本変形例では、タイミングチャートCに表示された工程イメージIを、ドラッグアンドドロップして移動させることによって、工程の実行順を指定できるようになっている。先述したように、工程B1は、工程A3の次に実行されるので、ユーザは、工程A3よりも後になるように(工程イメージI3よりも右の11秒以降の位置に)、工程イメージI4をドラッグアンドドロップすることによって、工程の実行順を指定する。
図13は、工程の実行順が指定された場合のタイミングチャートCの一例を示す図である。図13に示すように、工程の実行順が指定されると、工程イメージI4は、工程イメージI3の後に移動し、工程B1の行における11秒〜14秒の位置に移動する。工程イメージI5も同様に移動し、工程B2の行における15秒〜16秒の位置に移動する。このように、ユーザは、工程イメージIをドラッグアンドドロップすることによって、工程の実行順を指定する。
なお、工程の実行順の指定方法は、上記の例に限られず、他の操作を利用してもよい。例えば、図12の状態で、ユーザは、工程イメージI5をドラッグアンドドロップすることによって、工程の実行順を指定してもよい。例えば、ユーザは、工程A3よりも後になるように(工程イメージI3よりも右になるように)、工程イメージI5をドラッグアンドドロップしてもよい。この場合、タイミングチャートCは、図13と同じ状態になる。
また例えば、図12の状態で、ユーザは、工程B1よりも前になるように(工程イメージI4よりも左の0秒よりも前の位置に)、工程イメージI1をドラッグアンドドロップすることによって、工程の実行順を指定してもよい。この場合、ユーザは、工程A1,A2,A3の実行順が工程B1,B2よりも前であることを指定したことになり、タイミングチャートCは、図13と同じ状態になる。また例えば、工程イメージIのドラッグアンドドロップ以外にも、タイミングチャートC内の任意の位置(マス目)をクリック又はタップ等することによって、工程の実行順が指定されてもよい。
以上の操作により、工程の実行順が指定される。本変形例では、タイミングチャートCにおいて、2サイクル目の開始タイミングを指定できるようになっている。例えば、図13の状態において、ユーザが、2サイクル目の開始タイミングとして工程A1の行における任意の位置を選択すると、2サイクル目以降の工程が時系列的に表示される。
図14は、2サイクル目の開始タイミングが指定された場合のタイミングチャートCの一例を示す図である。例えば、ユーザが2サイクル目の開始タイミングとして、工程A1の行の15秒目のマス目を選択したとすると、図14に示すように、工程A1行における15秒目〜17秒目に、2サイクル目の工程A1を示す工程イメージI6が表示される。
2サイクル目以降においても工程の実行順及び想定実行時間は変わらないので、図14に示すように、2サイクル目以降の各工程は、1サイクル目の実行順を保つように、2サイクル目の工程A2,A3,B1,B2を示す工程イメージI7,I8,I9,I10が表示される。3サイクル目以降も同様に、2サイクル目と同様の開始タイミングで開始されるように、工程イメージI11,I12,I13,I14が表示される。画面に入りきらない工程イメージIについては、スクロール操作によって表示される。
ユーザは、上記のようにして各工程の実行順を指定すると、システムプログラムQを作成するためのビルド操作を行う。ビルド操作が行われると、各工程プログラムPの工程情報と、タイミングチャートC上で指定された実行順と、に基づいてビルド作業が行われ、システムプログラムQが作成される。
なお、ビルド作業を行うプログラム自体は、公知の種々のプログラムを利用可能である。例えば、ラダー言語を利用する場合、ユーザが指定した実行順で各工程の開始変数等の値を変更するように起動スイッチやコイル等が配置され、システムプログラムQが作成される。また例えば、ロボット言語を利用する場合、ユーザが指定した実行順で各工程の開始変数等の値を変更するように条件分岐の命令等が記述され、システムプログラムQが作成される。システムプログラムQが作成されると、コントローラ20に記録される。
以上のように、本変形例のプログラム作成装置10は、システムプログラムQの作成を簡易化する構成を有する。以降、当該構成の詳細を説明する。なお、変形例(2)では、システム変数と装置変数が区別されていなくてもよく、コントローラ20と産業装置30との間で共通の変数が利用されてもよい。この点は、変形例(3)も同様である。
図15は、変形例(2)の機能ブロック図である。図15に示すように、変形例(2)では、プログラム作成装置10において、データ記憶部100、表示制御部101、受付部102、及びシステムプログラム作成部103が実現される。
[データ記憶部]
データ記憶部100は、記憶部12を主として実現される。データ記憶部100は、システムプログラムQを作成するために必要なデータを記憶する。例えば、データ記憶部100は、各工程の工程情報が格納された工程データベースDB2を記憶する。
図16は、工程データベースDB2のデータ格納例を示す図である。図16に示すように、工程データベースDB2には、産業装置30の名称と、当該産業装置30が実行する工程の工程情報と、が格納される。例えば、新たな工程の工程プログラムPが作成されると、新たな工程の工程情報が工程データベースDB2に登録される。工程情報は、工程データベースDB2への登録後に編集可能であってもよい。本変形例では、コントローラ20の制御対象となる全ての産業装置30の工程情報が工程データベースDB2に格納される場合を説明するが、一部の産業装置30の工程情報だけが工程データベースDB2に格納されてもよい。
工程情報は、工程の基本的な情報を示し、その内容は後述する新たな工程の工程プログラムPが作成された場合に設定される。工程情報には、スケジュール画面G1からシステムプログラムQを作成するために必要な情報が格納される。例えば、工程情報には、工程の名称、想定実行時間、実行順、変数の名称、実行条件、及びコメントが格納される。
工程の名称は、工程プログラムPの作成時に指定された名称である。工程の名称は、産業装置30の中で工程を一意に識別可能であればよく、他の産業装置30の工程の名称と同じであってもよい。本変形例では、ユーザが工程の名称を指定する場合を説明するが、工程の名称は、所定のルールに基づいて自動的に付与されてもよい。また、工程の名称は、工程のID等のように工程を一意に特定できるものであってもよい。
本変形例では、想定実行時間は、工程プログラムPの作成時に指定された数値となる。なお、想定実行時間は、ユーザが指定するのではなく、シミュレーションによって計算された数値であってもよい。想定実行時間は、編集可能であってもよい。
実行順は、生産システム1全体の中での工程の実行順である。本変形例では、工程プログラムPの作成時に、産業装置30内でのローカルな実行順が指定されるので、工程の登録時には、当該指定された実行順が格納される。工程が登録された後に、生産システム1全体における実行順が指定されるので、ローカルな実行順は、生産システム1全体における実行順に変更される。
例えば、工程プログラムPA1,PA2,PA3の作成時に、工程A1,A2,A3の各々の実行順として「1」、「2」、「3」が指定される。また例えば、工程プログラムPB1,PB2の作成時に、工程B1,B2の各々の実行順として「1」、「2」が指定される。この時点では、産業装置30内での実行順が指定されているだけなので、工程A1,A2,A3と、工程B1,B2と、の何れが先に実行されるかについては特定されない。ユーザがスケジュール画面G1からこれらの実行順を指定すると、工程B1,B2の実行順が「4」、「5」に変更される。
なお、工程プログラムPの作成時に、産業装置30内でのローカルな実行順が指定されなくてもよい。この場合、工程の登録時には実行順が格納されず、ユーザがスケジュール画面G1から実行順を指定した場合に、当該指定された実行順が工程情報に格納されるようにすればよい。例えば、ユーザは、スケジュール画面G1から、工程A1,A2,A3,B1,B2の各々の実行順として、「1」、「2」、「3」、「4」、「5」を指定し、これらの実行順が工程情報に格納される。
変数の名称は、装置変数及びシステム変数の少なくとも一方の名称である。本変形例では、装置変数の名称が格納される場合を説明する。この名称は、工程プログラムPの作成時に設定される。実施形態で説明したように、システム変数と装置変数が区別される場合には、装置変数の名称が格納される。本変形例では、デフォルトの変数だけでなく、ユーザが任意の変数を指定可能なので、ユーザが指定した変数の名称が格納されることもある。本変形例の変数の名称は、工程の名称(「A1」等の文字列)と、変数の種類を示す文字列(「Start」等の文字列)と、を含み、工程間で変数の名称が重複しないようになっている。
なお、変数の名称は、任意のルールで設定可能であり、本変形例の例に限られない。例えば、変数の名称は、産業装置30の名称(「Equip30A」等の文字列)を含み、どの産業装置30の変数であるかを識別可能であってもよい。また例えば、変数の名称は、産業装置30の名称や工程の名称を特に含まずに、生産システム1又は産業装置30内で変数を一意に識別できるような文字列で定められていてもよい。工程の名称と同様、変数の名称についても、変数のID等のように変数を一意に特定できるものであってもよい。
実行条件は、変数を変更するか否かを示す条件である。開始変数の実行条件としては、工程を開始する条件が設定される。中断変数の実行条件としては、工程を中断する条件が設定される。ビジー変数の実行条件としては、工程をビジー状態とする条件が設定される。終了変数の実行条件としては、工程を終了する条件が設定される。
本変形例では、工程プログラムPの作成時に、産業装置30内でのローカルな実行順が指定されるので、工程の登録時には、当該指定された実行順となるように、実行条件が格納される。工程が登録された後に、生産システム1全体における実行順が指定されるので、実行条件は、生産システム1全体における実行順となるように変更される。
例えば、工程プログラムPA1の作成時に、入出力信号が入力された場合に工程A1が開始することが指定される。工程A1の実行条件は、入出力信号を示す変数「IO1.Input1」になる。変数「IO1.Input1」が所定の値になった場合に、開始変数「A1.Start」が所定の値になり、工程A1が開始する。
また例えば、工程プログラムPA2の作成時に、工程A1の次に工程A2が実行されることが指定される。工程A2の実行条件は、工程A1の終了変数「A1.End」になる。終了変数「A1.End」が所定の値になった場合に、開始変数「A2.Start」が所定の値になり、工程A2が開始する。
また例えば、工程プログラムPA3の作成時に、工程A2の次に工程A3が実行されることが指定される。更に、工程A2の変数「A2.S1」も工程A3の開始の条件になることが指定される。このため、工程A3の実行条件は、工程A2の終了変数「A2.End」になる。変数「A2.S1」と終了変数「A2.End」の各々が所定の値になった場合に、開始変数「A3.Start」が所定の値になり、工程A3が開始する。
本変形例では、工程プログラムPB1の作成時には、工程B1を開始する条件については指定されない。工程B1が工程A3の次に実行されることは、スケジュール画面G1から指定されるので、この指定を受け付けた場合に、工程B1の実行条件は、工程A3の終了変数「A3.End」になる。終了変数「A3.End」が所定の値になった場合に、開始変数「B1.Start」が所定の値になり、工程B1が開始する。
例えば、工程プログラムPB2の作成時に、工程B1の次に工程B2が実行されることが指定される。工程B2の実行条件は、工程B1の終了変数「B1.End」になる。終了変数「B1.End」が所定の値になった場合に、開始変数「B2.Start」が所定の値になり、工程B2が開始する。
なお、データ記憶部100が記憶するデータは、上記の例に限られない。例えば、データ記憶部100は、システムプログラムQのビルド作業を実行するためのプログラムを記憶する。また例えば、データ記憶部100は、スケジュール画面G1に表示される画像の画像データを記憶してもよいし、エンジニアリングツールを記憶してもよい。また例えば、データ記憶部100は、作成済みの工程プログラムPとシステムプログラムQとを記憶してもよい。
[表示制御部]
表示制御部101は、複数の工程それぞれに対して、少なくとも、工程の名称と、装置変数及びシステム変数の少なくとも一方と、が関連付けられ、工程情報として保存される工程データベースDB2から取得した複数の工程の名称を含み、当該複数の工程の実行順を指定可能なスケジュール画面G1を表示させる。
本変形例では、装置変数は、工程プログラムPにより参照及び変更の両方が行われる場合を説明するが、参照又は変更の何れか一方のみが行われてもよい。各工程の装置変数は、当該工程の工程プログラムPにより参照及び変更が行われてもよいし、他の工程プログラムP又はシステムプログラムQにより参照及び変更が行われてもよい。工程の名称と変数が関連付けられるとは、これらが同じ工程情報の中に含まれること、又は、これらが互いに紐付けられることである。
実行順を指定可能なスケジュール画面G1とは、実行順を指定可能なユーザインタフェースを有する画面である。実行順は、任意の方法によって指定可能であり、スケジュール画面G1のレイアウトは、図10−図14の例に限られない。例えば、スケジュール画面G1は、タイミングチャート形式ではなくテーブル形式のレイアウトであってもよい。また例えば、スケジュール画面G1は、フローチャート形式等の他のレイアウトであってもよい。
本変形例では、表示制御部101は、受付部102が受け付けた実行順と、当該実行順に含まれる各工程の名称及び装置変数とに基づいて、タイミングチャートCをスケジュール画面G1として表示させる。本変形例では、実行順、工程の名称、及び装置変数が工程情報として工程データベースDB2に格納されるので、表示制御部101は、工程データベースDB2の工程情報に基づいて、タイミングチャートCを表示させる。
タイミングチャートCは、工程の実行順を示すチャートであるである。別の言い方をすれば、タイミングチャートCは、工程の実行タイミングを時系列的に示すチャートである。タイミングチャートCには、工程を識別する情報が時系列的に並べられる。例えば、タイミングチャートCには、工程の名称が時系列的に並べられる。また例えば、タイミングチャートCには、工程の実行タイミングを示す工程イメージIが時系列的に並べられる。なお、工程の名称や工程イメージI以外の画像(アイコン等)が、工程を識別する情報として用いられてもよい。工程の実行順は、工程情報に格納された実行順の数値によって特定されてもよいし、工程情報に格納された変数及び実行条件によって特定されてもよい。
工程を識別する情報が並べられる方向は、任意の方向であってよく、例えば、上から下、左から右、下から上、又は右から左の何れかである。本変形例では、工程の名称については、上から下に向けて時系列的に並べられる。工程イメージIについては、左から右に向けて時系列的に並べられる。例えば、表示制御部101は、工程データベースDB2に格納された工程情報を参照して工程の名称と実行順を特定し、上から下に向けて工程の名称が実行順に並び、かつ、左から右に向けて工程イメージIが実行順に並ぶタイミングチャートCを表示させる。
タイミングチャートCには、実行順に含まれる複数の工程それぞれの名称が工程軸上に並べて配置される。工程軸とは、工程の名称が並ぶ方向である。本変形例では、工程軸が上から下に向けた方向であるが、工程軸は、予め定められた方向であればよく、例えば、左から右、下から上、又は右から左であってもよい。工程の名称は、工程軸上において時系列的に並ぶように配置される。本変形例では、工程A1,A2,A3,B1,B2の順序で実行されるように実行順が指定されるので、工程軸である上から下に向けて、これらの名称が並べられる。
また例えば、タイミングチャートCには、工程軸と直交するタイミング軸上の長さで複数の工程それぞれの実行を示す工程イメージIが、各名称の工程軸上ほぼ同じ位置、かつ、タイミング軸上において実行順になるように配置されている。タイミング軸は、時間軸ということもできる。本変形例では、タイミング軸が左から右に向けた方向であるが、タイミング軸は、工程軸とのなす角度が90°であればよく、例えば、右から左であってもよい。また例えば、工程軸が左から右であれば、タイミング軸は、上から下であってもよい。
各工程の工程イメージIと名称は、工程軸上のほぼ同じ位置に配置される。工程軸上のほぼ同じ位置とは、工程軸方向のずれが無いこと、又は、ずれが無いとみなせるほど小さいことである。ずれが小さいとは、ずれが所定距離未満であることであり、例えば、1センチメートル未満、又は、10ピクセル未満である。工程A1,A2,A3,B1,B2の各々の工程イメージIは、これらの工程の名称とほぼ同じ高さとなり、かつ、タイミング軸上において実行順になるように並べられる。表示制御部101は、タイミング軸方向に時系列的に並ぶように、各工程の工程イメージIを配置する。本変形例のように、同じ工程が繰り返し実行される場合には、同じ工程軸上の異なるタイミング軸上に、工程イメージIが配置される。
本変形例では、各工程の工程情報は、その工程の想定実行時間を含む。表示制御部101は、工程イメージIのタイミング軸上の長さ(タイミング軸方向の長さ)を、想定実行時間に対応する長さに設定する。想定実行時間に対応する長さとは、想定実行時間に比例する長さであってもよいし、想定実行時間の長短を概念的に捉えられる長さであってもよい。例えば、想定実行時間が長いほど、工程イメージIがタイミング軸方向に長くなる。表示制御部101は、工程ごとに、当該工程の工程情報に含まれる想定実行時間に基づいて、当該工程の工程イメージIの長さを決定する。
なお、想定実行時間と工程イメージIの長さとの関係は、上記の例に限られない。例えば、ある工程の想定実行時間が10秒であり、他の2つの工程がそれぞれ2秒、1秒であったとすると、1秒と2秒の工程の工程イメージIはその長さを比例させ、10秒の工程はその長さを比例させずに短縮して表示させてもよい。これにより、実行順を概念的に捉えやすく、かつ、実行順の一覧性を向上させることができる。更に、工程イメージIは、想定実行時間に応じた長さでなくてもよい。例えば、想定実行時間を省略する場合には、工程イメージIは、固定長であってもよい。他にも例えば、固定長の工程イメージIの中に想定実行時間を示す数値が表示されていてもよい。
例えば、表示制御部101は、移動指示に基づいて、タイミングチャートCにおける工程イメージIを移動させる。移動指示は、工程イメージIを移動させるための指示である。本変形例では、移動指示の一例としてドラッグアンドドロップを説明するが、移動指示は、他の任意の操作であってよく、例えば、クリック又はタップ等であってもよい。また例えば、移動指示は、工程イメージIに対する操作でなくてもよく、例えば、工程イメージIの移動先の位置をクリック又はタップ等する操作であってもよい。他にも例えば、移動指示は、キーボードの矢印ボタンを押下する操作であってもよい。
本変形例では、工程イメージIが移動することによって、工程の実行順が指定されるので、移動指示は、実行順を指定するための操作ということができる。表示制御部101は、移動指示により指定された移動先に、工程イメージIを移動させる。工程の実行順も工程イメージIの並び順に応じて変更される。タイミング軸上の工程イメージIの並び順と実行順とが一致するように、各工程の実行順が変更される。実行順は、システムプログラム作成部103によって変更されてもよいし、表示制御部101によって変更されてもよい。
本変形例では、工程データベースDB2には、複数の産業装置30の名称がその産業装置30で実行される複数の工程の工程情報が関連付けられて保存され、表示制御部101は、スケジュール画面G1に、複数の産業装置30の名称のリストL1を表示させる。リストL1に載る産業装置30は、コントローラ20の制御対象となる産業装置30の全部又は一部である。本変形例では、工程データベースDB2に制御対象の産業装置30が定義されているので、表示制御部101は、工程データベースDB2を参照し、産業装置30のリストL1を表示させる。なお、リストL1は、産業装置30の名称の一覧であり、その並び順は任意であってよい。例えば、リストL1には、産業装置30の名称が語順(例えば、アルファベット順)の通りに並んでもよいし、工程データベースDB2への登録順に並んでもよい。
ユーザはリストL1から産業装置30の名称を選択可能であり、表示制御部101は、更に、選択された産業装置30に関連付けられた複数の工程それぞれの工程イメージIを、タイミングチャートCの工程軸上に並べて配置する。表示制御部101は、工程データベースDB2からユーザが選択した産業装置30に関連付けられた工程情報を取得し、当該産業装置30が実行する工程とその実行順を特定する。表示制御部101は、当該特定した工程の工程イメージIが当該特性した実行順で並ぶように、タイミングチャートCの工程軸上に配置する。
例えば、図10の状態からユーザがリストL1上の産業装置30Aを選択した場合、表示制御部101は、産業装置30Aの工程情報に基づいて、工程A1,A2,A3の各々の工程イメージI1,I2,I3をタイミングチャートCの工程軸上に並べて配置する。この場合、タイミングチャートCは、図11の状態となり、工程イメージI1,I2,I3の各々は、工程軸上に上から下に向けて並ぶ。その後、ユーザがリストL1上の産業装置30Bを選択した場合、表示制御部101は、産業装置30Bの工程情報に基づいて、工程B1,B2の各々の工程イメージI4,I5をタイミングチャートCの工程軸上に並べて配置する。この場合、タイミングチャートCは、図12の状態となり、工程イメージI4,I5の各々は、工程軸上に上から下に向けて並ぶ。
[受付部]
受付部102は、表示制御部101が表示させたスケジュール画面G1において、実行順の指定を受け付ける。本変形例では、受付部102は、タイミングチャートCにおける工程イメージIをタイミング軸上で移動させるための移動指示を、実行順の指定として受け付ける。なお、実行順は、任意の操作によって指定可能であり、移動指示以外の操作によって実行順が指定されてもよい。例えば、入力フォームに実行順を示す数値を入力する操作、又は、プルダウンメニューから実行順を選択する操作によって実行順が指定されてもよい。
受付部102は、リストL1の中から産業装置30の名称の選択を受け付ける。受付部102は、リストL1の中から選択された産業装置30の工程の実行順の指定を受け付ける。本変形例では、リストL1に産業装置30の名称が表示されていたとしてもユーザが選択しなければ、当該産業装置30については、システムプログラムQの制御対象とはならない。受付部102は、リストL1中の全部の産業装置30の名称の選択を受け付けてもよいし、一部の産業装置30についてのみ選択を受け付けてもよい。本変形例では、ドラッグアンドドロップによってリストL1上の名称が選択される場合を説明するが、他の任意の操作で名称が選択されてもよい。例えば、リストL1上の名称がクリック又はタップされることによって、産業装置30の名称が選択されてもよい。
受付部102は、スケジュール画面G1において、複数の産業装置30それぞれの繰り返し動作の指定を受け付ける。繰り返し動作とは、産業装置30の周期的な動作である。繰り返し動作の指定とは、繰り返し動作の実行タイミングの指定である。本変形例では、2サイクル目の開始タイミングの指定が繰り返し動作の指定に相当する場合を説明するが、繰り返し動作の指定は、3サイクル目以降の任意の開始タイミングの指定であってもよい。
また、本変形例では、タイミングチャートC上の任意の位置を指定することによって繰り返し動作が指定される場合を説明するが、他の任意の操作によって繰り返し動作が指定されてもよい。例えば、2サイクル目の最初の工程の開始条件となる他の工程(図12の例であれば、工程イメージI4が示す工程B1)を指定することによって、繰り返し動作が指定されてもよい。また例えば、2サイクル目の開始タイミングの数値を入力することによって、繰り返し動作が指定されてもよい。
[システムプログラム作成部]
システムプログラム作成部103は、受付部102が受け付けた実行順と、各工程の装置変数及びシステム変数の少なくとも一方と、に基づいて、システムプログラムQを作成する。システムプログラム作成部103は、指定された実行順で各工程が実行されるように、各工程の変数を制御するシステムプログラムQを作成する。
複数の工程それぞれの装置変数には、当該工程の実行開始を表す開始装置変数(装置変数で記述された開始変数)が含まれており、システムプログラム作成部103は、実行順に従った工程が順次実行されるように、実行順において、少なくとも一の工程で変更される変更装置変数(装置変数で記述された変更変数)に対応する変更システム変数(システム変数で記述された変更変数)と、一の工程に連動して実行される1以上の他の工程の開始装置変数に対応する開始システム変数(システム変数で記述された開始変数)と、を関連付けてシステムプログラムQを作成する。
変更システム変数と開始システム変数を関連付けるとは、変更システム変数の値が開始システム変数の値を変更するための条件になることである。例えば、工程A1の終了システム変数「Equip30A.Step1.EN」は、工程A2の開始システム変数「Equip30A.Step2.ST」を変更するための条件になるので、システムプログラムQでは、これらの変数が関連付けられていることになる。
例えば、システムプログラム作成部103は、表示制御部101により移動された工程イメージIに対応した他の工程の開始システム変数と、他の工程のタイミング軸上の直前に存在する工程イメージIに対応した一の工程の変更システム変数と、を関連付けてシステムプログラムQを作成する。タイミング軸上の直前に存在するとは、時間的に直近の工程イメージIである。図13の例であれば、工程イメージI1,I2,I3,I4は、それぞれ工程イメージI2,I3,I4,I5の直前に存在する。
本変形例では、工程A1については、1番最初に実行される工程のため、1サイクル目においては、他の工程の終了システム変数が開始の条件とはならない。例えば、システムプログラム作成部103は、所定の入出力信号を示すシステム変数「IO1.Input1」が所定の値になった場合に、工程A1の開始システム変数を所定の値とするように、システムプログラムQを作成する。なお、システム変数「IO1.Input1」についても、対応する装置変数が変換テーブルTに定義されていてもよい。
また例えば、工程A2の工程イメージI2は、工程A1の工程イメージI1の直後に存在するので、システムプログラム作成部103は、工程A1の終了システム変数「Equip30A.Step1.EN」が所定の値になった場合に、工程A2の開始システム変数「Equip30A.Step2.ST」を所定の値とするように、システムプログラムQを作成する。また例えば、工程A3の工程イメージI3は、工程A2の工程イメージI2の直後に存在するので、システムプログラム作成部103は、工程A2の変数「Equip30A.Step2.S−1」が所定の値になり、かつ、工程A2の終了システム変数「Equip30A.Step2.EN」が所定の値になった場合に、工程A3の開始システム変数「Equip30A.Step3.ST」を所定の値とするように、システムプログラムQを作成する。
また例えば、工程B1の工程イメージI4は、工程A3の工程イメージI3の直後に存在するので、システムプログラム作成部103は、工程A3の終了システム変数「Equip30A.Step3.EN」が所定の値になった場合に、工程B1の開始変数「Equip30B.Step4.ST」を所定の値とするように、システムプログラムQを作成する。また例えば、工程B2の工程イメージI5は、工程B1の工程イメージI4の直後に存在するので、システムプログラム作成部103は、工程B1の終了システム変数「Equip30B.Step4.EN」が所定の値になった場合に、工程B2の開始システム変数「Equip30B.Step5.ST」を所定の値とするように、システムプログラムQを作成する。
なお、システムプログラムQを生成するためのプログラムは、データ記憶部100に記憶されているものとする。例えば、システムプログラム作成部103は、ビルド作業を実行してシステムプログラムQを作成する。上記の処理を実現するための命令は、例えば、ラダー言語における起動スイッチ又はコイルによって記述されてもよいし、ロボット言語における条件分岐の命令によって記述されてもよい。システムプログラム作成部103は、ビルド以外にも、コンパイラ等を利用してシステムプログラムQを作成してもよい。また、開始システム変数と関連付けられる変更システム変数は、終了変数に限られない。例えば、工程A3の開始システム変数「Equip30A.Step3.ST」のように、工程A2の終了システム変数「Equip30A.Step2.EN」だけではなく、工程A2の信号の変数「Equip30A.Step2.S−1」も関連付けられるようにしてもよい。
システムプログラム作成部103は、受付部102が受け付けた繰り返し動作に基づいて、指定された繰り返し動作で各産業装置30を動作させるシステムプログラムQを作成する。例えば、システムプログラム作成部103は、ユーザにより指定された繰り返し動作をするように、2サイクル目以降の開始タイミングを決定する。
図14の例であれば、システムプログラム作成部103は、2サイクル目以降の工程A1の開始システム変数に、工程B1の終了システム変数を関連付ける。これにより、2サイクル目以降の工程A1は、1つ前のサイクルの工程B1が終了した場合に開始され、図14のタイミングチャートCのような実行順で各工程が実行される。システムプログラム作成部103は、2サイクル目の工程A1の開始システム変数「Equip30A.Step1.ST」については、入出力信号の変数「IO1.Input1」ではなく、工程B1の終了システム変数「Equip30B.Step4.EN」が所定の値になった場合に変化するように、システムプログラムQを作成する。システムプログラム作成部103は、以降の処理については、1サイクル目と同様の処理をするように、システムプログラムQを作成する。
変形例(2)によれば、スケジュール画面G1から工程の実行順を指定すればシステムプログラムQを作成することができるので、システムプログラムQの作成を簡易化することができる。従来の技術では、ユーザがいちいちPLCのラダーチャートなどを作成しなければならなかったが、本願発明によれば、ユーザがスケジュール画面G1上で工程の実行順を指定すればよいので、より簡易な操作でプログラムを作成することができる。
また、スケジュール画面G1において指定された実行順に従った工程が順次実行されるように、一の工程と他の工程を連動して実行させるシステムプログラムQを作成することができる。例えば、その前に実行される一の工程で変更される変更変数を、他の工程を開始させる条件とすることができる。
(3)また例えば、産業装置30が工程を実行中に異常が発生することがある。この場合に、ユーザによる復旧手順をサーバ40に記録しておき、再び異常が発生したときに、当該記録された復旧手順が呼び出されて、自動的に復旧が行われるようにしてもよい。
図17は、変形例(3)の生産システム1の全体構成を示す図である。図17に示すように、変形例(3)の生産システム1は、コントローラ20、産業装置30A,30B、サーバ40、及びユーザ端末50を含む。なお、本変形例では、プログラム作成装置10は省略する。
ユーザ端末50は、ユーザが操作するコンピュータである。例えば、ユーザ端末50は、パーソナルコンピュータ、携帯端末(タブレット型端末を含む)、又は携帯電話(スマートフォンを含む)である。また、ユーザ端末50は、これらに限られず、オペレータ端末、プログラミングペンダント、又はパネルコントローラ等のHMI(Human Machine Interface)であってもよい。ユーザ端末50は、CPU51、記憶部52、通信部53、操作部54、及び表示部55を含む。なお、図17では線を省略しているが、ユーザ端末50は、コントローラ20及びサーバ40の各々とも接続可能である。ユーザ端末50は、CPU51、記憶部52、通信部53、操作部54、及び表示部55を含む。CPU51、記憶部52、通信部53、操作部54、及び表示部55の物理的構成は、それぞれCPU11、記憶部12、通信部13、操作部14、及び表示部15と同様であってよい。
図18は、コントローラ20が産業装置30を制御する様子を示す図である。本変形例では、産業装置30Aが工作機械であり、産業装置30Bが産業用ロボットである場合を例に挙げて説明する。例えば、工程は、周期的に繰り返される。図18では、1サイクル内に実行される工程が示されている。コントローラ20は、システムプログラムを実行し、サイクルの最初の工程として、産業装置30Bに認識工程を実行させる。認識工程は、センサを利用してワークを認識する工程である。
先述したように、本変形例では、工程ごとに変数が用意されており、変数によって工程の開始が制御される。実施形態で説明したように、システム変数と装置変数が変換されてもよいし、システム変数と装置変数に区別されておらずコントローラ20と産業装置30とで共通の変数が用いられてもよい。システム変数と装置変数を区別する場合、以降説明する工程が実行される場合には、実施形態で説明したようにこれらの変数が変換される。変数の変換については、実施形態で説明した通りなので、本変形例では、変換の詳細については省略する。
まず、コントローラ20は、認識工程を開始するための開始変数を所定の値に変更する。この値は、工程を開始するための値であり、例えば、1である。開始変数には、初期値(例えば、0)が設定されており、開始変数が初期値から所定の値になった場合に工程が開始される。
産業装置30Bは、認識工程の開始変数が所定の値に変更されたことを検出すると、認識工程の工程プログラムPを実行し、認識工程を開始する。認識工程が正常に終了すると、産業装置30Bは、認識工程の終了変数を所定の値に変更する。この値は、工程の終了を示す値であり、例えば、1である。終了変数には、初期値(例えば、0)が設定されており、工程が終了すると初期値から所定の値になる。
コントローラ20は、認識工程の終了変数が所定の値に変更されたことを検出すると、次の把持工程の開始変数を所定の値に変更する。把持工程は、認識されたワークをロボットハンドで把持して所定の位置に搬送する工程である。産業装置30Bは、把持工程の開始変数が所定の値に変更されたことを検出すると、把持工程の工程プログラムPを実行し、把持工程を開始する。把持工程が正常に終了すると、産業装置30Bは、把持工程の終了変数を所定の値に変更する。
コントローラ20は、把持工程の終了変数が所定の値に変更されたことを検出すると、次の扉開け工程の開始変数を所定の値に変更する。扉開け工程は、ワークを入れるために産業装置30Aの扉を開く工程である。産業装置30Aは、扉開け工程の開始変数が所定の値に変更されたことを検出すると、扉開け工程の工程プログラムPを実行し、扉開け工程を開始する。扉開け工程が正常に終了すると、産業装置30Aは、扉開け工程の終了変数を所定の値に変更する。
コントローラ20は、扉開け工程の終了変数が所定の値に変更されたことを検出すると、次のセット工程の開始変数を所定の値に変更する。セット工程は、開けられた扉の中にワークをセットする工程である。産業装置30Bは、セット工程の開始変数が所定の値に変更されたことを検出すると、セット工程の工程プログラムPを実行し、セット工程を開始する。セット工程が正常に終了すると、産業装置30Bは、セット工程の終了変数を所定の値に変更する。
コントローラ20は、セット工程の終了変数が所定の値に変更されたことを検出すると、次のチャック工程の開始変数を所定の値に変更する。チャック工程は、加工を行うためにワークを固定する工程である。産業装置30Aは、チャック工程の開始変数が所定の値に変更されたことを検出すると、チャック工程の工程プログラムPを実行し、チャック工程を開始する。チャック工程が正常に終了すると、産業装置30Aは、チャック工程の終了変数を所定の値に変更する。
コントローラ20は、チャック工程の終了変数が所定の値に変更されたことを検出すると、次の加工工程の開始変数を所定の値に変更する。加工工程は、ワークを加工する工程である。産業装置30Aは、加工工程の開始変数が所定の値に変更されたことを検出すると、加工工程の工程プログラムPを実行し、加工工程を開始する。加工工程が正常に終了すると、産業装置30Aは、加工工程の終了変数を所定の値に変更する。
以上により、1サイクル内の全ての工程が完了する。コントローラ20は、加工工程の終了変数が所定の値に変更されたことを検出すると、次のサイクルを開始するために、認識工程の開始変数を所定の値に変更する。以降、1サイクル目と同様にして、次のサイクルが開始される。なお、各工程の開始変数と終了変数は、サイクル終了時等の所定のタイミングで初期値に戻るものとする。
各産業装置30は、自身が実行する工程で異常が発生した場合に、工程の実行を中断し、中断変数を所定の値に変更する。異常発生を検出する処理は、工程プログラムPに記述されているものとする。例えば、産業装置30Aは、扉開け工程において扉が開かなかった場合には、扉開く工程の中断変数を所定の値に変更する。また例えば、産業装置30Bは、把持工程においてワークを把持できなかった場合には、把持工程の中断変数を所定の値に変更する。
コントローラ20は、何れかの工程の中断変数が所定の値に変更されたことを検出すると、ユーザ端末50に対し、異常が発生したことを示す異常発生通知を送信する。本変形例では、電子メールを利用して異常発生通知が送信される場合を説明するが、他の媒体を利用して通知が行われてもよい。例えば、プッシュ通知、エンジニアリングツール内の通知、又はメッセージアプリを利用して異常発生通知が行われてもよい。
また例えば、異常発生通知は、ユーザ端末50に対する情報の出力に限られず、他の方法で行われるようにしてもよい。例えば、コントローラ20にLEDライト等の発光部を設けておき、発光部を発光させることによって、異常発生通知が行われてもよい。また例えば、異常発生通知は、視覚的な通知に限られず、聴覚的又は触覚的な通知であってもよい。例えば、スピーカから出力されるアラーム音、又は、バイブレータの振動によって異常発生通知が行われてもよい。
ユーザは、異常発生通知を確認すると、産業装置30にユーザ端末50を接続して異常を復旧させる。ユーザ端末50と産業装置30とは、有線接続されてもよいし、無線接続されてもよい。本変形例では、産業装置30Aの加工工程で発生した異常を復旧させる手順を例に挙げて説明する。例えば、ユーザが、ユーザ端末50にインストールされたエンジニアリングツールを起動させると、異常を復旧させるための復旧工程作成画面が表示される。
図19は、復旧工程作成画面の一例を示す図である。図19に示すように、復旧工程作成画面G2には、産業装置30が実行可能な工程のリストL2が表示される。例えば、リストL2には、産業装置30A及び産業装置30Bの各々が実行可能な全ての工程の名称が表示される。リストL2には、サイクル内で実行される工程の名称に限られず、他の工程の名称も表示される。例えば、リストL2には、異常復旧のために実行される工程の名称に限られず、異常復旧で特に利用されない工程の名称も表示される。
ユーザは、復旧工程作成画面G2から少なくとも1つの工程を指定し、産業装置30に発生した異常を復旧させる。ユーザは、リストL2中の任意の工程を指定可能である。例えば、ユーザは、産業装置30A及び産業装置30Bの両方の工程を指定してもよいし、産業装置30A又は産業装置30Bの何れか一方の工程を指定してもよい。産業装置30A及び産業装置30Bの各々は、ユーザが選択した工程を実行する。
図20は、ユーザが手動で異常を復旧させる様子を示す図である。図20に示すように、例えば、ユーザは、復旧工程作成画面G2から、産業装置30Aの扉開け工程、工具逃げ工程、工具退避工程、及びチャックOFF工程を選択する。工具逃げ工程及び工具退避工程の各々は、産業装置30Aに備えられた加工用の工具を移動させる工程である。チャックOFF工程は、チャック状態を解除する工程である。産業装置30Aは、ユーザが指定した順番に各工程を実行する。
その後、ユーザは、復旧工程作成画面G2から、産業装置30Bの移動工程を選択する。移動工程は、ロボットハンドを移動させる工程である。産業装置30Bは、ユーザの指示に沿って移動工程を実行する。ユーザは、異常が復旧したことを確認すると、復旧工程作成画面G2から復旧完了ボタンBを選択する。ユーザが復旧完了ボタンBを選択すると、加工工程の中断変数が初期値に戻り、サイクルが再開される。図20の例では、異常が発生した加工工程の1つ前のチャック工程から再開される場合を示している。
本変形例では、ユーザが手動で異常を復旧させると、その時に指定した工程が復旧工程情報としてサーバ40に記録される。詳細は後述するが、本変形例の復旧工程情報は、ユーザが指定した工程をその実行順に実行するためのマクロである。サーバ40に記録された復旧工程情報は、産業装置30で再び異常が発生した場合に、コントローラ20によって呼び出される。コントローラ20は、呼び出した復旧工程情報に基づいて、過去にユーザが指定した手順で工程を実行し、異常を復旧させる。なお、自動的に復旧が実行されるのではなく、ユーザに対して復旧するか否かを問い合わせたうえで、復旧が実行されてもよい。
図21は、復旧工程情報によって異常が復旧する様子を示す図である。図21に示すように、産業装置30Aの加工工程で再び異常が発生すると、コントローラ20は、サーバ40に対し、復旧工程情報を要求する。サーバ40は、コントローラ20に対し、過去に登録された復旧工程情報を送信する。コントローラ20は、サーバ40から受信した復旧手順に基づいて、産業装置30Aに扉開け工程、工具逃げ工程、工具退避工程、及びチャックOFF工程を実行させ、産業装置30Bに移動工程を実行させる。その後、コントローラ20は、加工工程の中断変数が初期値に戻ったことを検出すると、チャック工程の開始変数を所定の値に変更し、サイクルを再開させる。
以上のように、本変形例の生産システム1では、サーバ40に復旧工程情報を記録しておき、産業装置30で再び異常が発生した場合にコントローラ20が復旧工程情報を呼び出すことによって、産業装置30に発生した異常を復旧させる際の手間を軽減するようにしている。以降、本変形例の生産システム1の詳細を説明する。
図22は、変形例(3)の機能ブロック図である。図22に示すように、変形例(3)では、コントローラ20において、検出部203及び復旧部204が実現される。また、ユーザ端末50において、データ記憶部500、表示制御部501、受付部502、及び記録部503が実現される。
[検出部]
検出部203は、CPU21を主として実現される。検出部203は、各産業装置30に発生した異常を検出する。本変形例では、各工程で異常が発生すると、工程プログラムPは、当該工程の中断変数を所定の値に変更する。検出部203は、各工程の中断変数の値を参照し、所定の値になったか否かを判定する。検出部203は、中断変数が所定の値になった工程に異常が発生したと判定する。実施形態で説明したように、システム変数と装置変数を区別する場合には、装置変数の中断変数がシステム変数に変換されたうえで、検出部203は、このシステム変数の中断変数の値を参照する。
なお、異常の検出方法は、変数を利用した方法に限られない。異常の検出方法自体は、公知の手法を適用可能であり、例えば、検出部203は、ある工程が一定時間の間終了しなかった場合に異常が発生したと判定してもよいし、コントローラ20又は産業装置30に接続されたセンサの検出信号が異常値を示す場合に異常が発生したと判定してもよい。
また例えば、産業装置30は、異常が発生した場合に、コントローラ20に対し、所定の異常発生通知を送信してもよい。異常発生通知には、任意の情報が含まれてよく、例えば、異常が発生した産業装置30の名称、異常が発生した工程の名称、発生した異常の種類、及び異常が発生した日時等が含まれていてもよい。検出部203は、産業装置30から異常発生通知を受信したか否かを判定する。検出部203は、異常発生通知を受信した場合に異常が発生したと判定する。
[復旧部]
復旧部204は、CPU21を主として実現される。復旧部204は、検出部203が異常を再び検出した場合に、記録部503が記録した復旧工程情報が示す1以上の工程を取得し、当該取得した1以上の工程を実行して異常を復旧させる。本変形例では、過去の異常発生時にユーザが指定した工程が復旧工程情報に示されているので、復旧部204は、復旧工程情報に記述された手順に沿って工程を実行し、異常を復旧させる。復旧時の工程は、通常の工程と同様、工程プログラムP及び変数によって実行が制御されるので、復旧部204は、復旧工程情報に示された工程の変数に基づいて、工程を実行する。
例えば、複数の工程が所定の順序で実行された場合、復旧部204は、1番目の工程の開始変数を所定の値に変更するように、産業装置30に指示を送る。産業装置30は、変数の変化を検知すると1番目の工程を実行する。1番目の工程が正常に終了すると、産業装置30は、当該工程の終了変数を所定の値に変更する。復旧部204は、1番目の工程の終了変数が所定の値になったことを検出すると、2番目の復旧工程の開始変数を所定の値に変更するように、産業装置30に指示を送る。以降同様にして、復旧工程情報に示された最後まで順番に工程が実行される。
[データ記憶部]
データ記憶部400は、記憶部42を主として実現される。データ記憶部400は、復旧工程情報を記憶する。例えば、データ記憶部400は、少なくとも1つの復旧工程情報を格納された復旧工程データベースDB3を記憶する。サーバ40は、ユーザ端末50から復旧工程情報を受信すると、復旧工程データベースDB3に格納する。
図23は、復旧工程データベースDB3のデータ格納例を示す図である。図23に示すように、復旧工程データベースDB3には、復旧工程情報の名称ごとに、復旧工程情報が格納される。例えば、復旧工程情報には、工程の実行順、工程を実行する産業装置30の名称、及び工程の名称が格納される。図23では復旧工程情報の内容をテーブルで示しているが、本変形例では、復旧工程情報はマクロ化されているので、これらの関係は、マクロの命令として記述されている。即ち、復旧工程情報には、扉開け工程、工具逃げ工程、工具退避工程、チャックOFF工程、移動工程の順番で開始変数を所定の値に変更するように命令が記述されている。
[データ記憶部]
データ記憶部500は、記憶部52を主として実現される。データ記憶部500は、サーバ40に復旧工程情報を記録するために必要なデータを記憶する。例えば、データ記憶部100は、工程データベースDB2を記憶する。工程データベースDB2は、変形例(2)と同様であってもよいが、本変形例では、他のデータ格納例について説明する。
図24は、変形例(3)の工程データベースDB2のデータ格納例を示す図である。図24に示すように、工程データベースDB2は、各工程の工程情報が格納されたデータベースである。例えば、工程データベースDB2には、産業装置30の名称と、当該産業装置30が実行する工程の工程情報と、が格納される。工程情報には、工程の名称と変数の名称とが格納される。本変形例では、装置変数の名称が工程情報に格納される場合を説明するが、システム変数の名称が工程情報に格納されてもよい。
なお、データ記憶部500が記憶するデータは、上記の例に限られない。例えば、データ記憶部500は、復旧工程作成画面G2に表示される画像の画像データを記憶してもよいし、エンジニアリングツールを記憶してもよい。また例えば、データ記憶部500は、作成済みの工程プログラムPとシステムプログラムQとを記憶してもよい。また例えば、データ記憶部500は、サーバ40に登録済みの復旧工程情報を記憶してもよい。
[表示制御部]
表示制御部501は、CPU51を主として実現される。表示制御部501は、検出部202が異常を検出した場合に、復旧工程作成画面G2を表示させる。本変形例では、工程データベースに各工程の工程情報が格納されているので、表示制御部501は、工程データベースに基づいて、復旧工程作成画面G2を表示させる。
復旧工程作成画面G2は、少なくとも1つの工程の指定を受け付けるユーザインタフェースを有する。別の言い方をすれば、復旧工程作成画面G2は、復旧時に実行する少なくとも1つの工程の指定を受け付ける。本変形例の復旧工程作成画面G2は、図19のようなレイアウトを有し、例えば、表示制御部501は、工程データベースDB2を参照し、全ての工程の名称を示すリストL2を復旧工程作成画面G2に表示させる。なお、リストL2には、工程データベースに工程情報が格納された全ての工程の名称が表示されなくてもよく、一部の工程の名称だけが表示されてもよい。
なお、復旧工程作成画面G2は、図19のレイアウトに限られず、任意のレイアウトであってよい。例えば、復旧工程作成画面G2は、プルダウン形式又はドラムロール形式で工程の選択を受け付けてもよい。また例えば、復旧工程作成画面G2は、フローチャート形式で工程を時系列的に並べるようなレイアウトであってもよいし、表形式で工程の名称の入力を受け付けるようなレイアウトであってもよい。また例えば、復旧工程作成画面G2は、実工程の名称を入力するための入力フォームが並べられていてもよい。
[受付部]
受付部502は、CPU52を主として実現される。受付部502は、検出部が異常を検出した場合に、複数の工程それぞれに対して、少なくとも、工程の名称と、装置変数及びシステム変数の少なくとも一方と、が関連付けられた工程情報に基づいて、復旧のために実行する1以上の工程の指定を受け付ける。
受付部502は、検出部203が異常を検出した場合に、複数の工程それぞれに対して、少なくとも、工程の名称と、産業装置30の動作を表して工程で実行される工程プログラムPにおいて参照及び変更の少なくとも一方が行われる変数と、が関連付けられた工程情報に基づいて、復旧のために実行する1以上の工程の指定を受け付ける。
復旧のために実行する工程とは、検出部203が検出した異常の復旧に必要な工程である。別の言い方をすれば、復旧のために実行する工程は、ユーザが手動で異常を復旧させた際に指定された工程である。復旧のために実行する工程は、1つであってもよいし、複数であってもよい。復旧のために実行する工程は、上限数があってもよいし、特に上限数がなくてもよい。受付部502は、操作部14の検出信号に基づいて、工程の指定を受け付ける。
本変形例では、復旧工程作成画面G2の中から工程が指定されるので、受付部502は、復旧工程作成画面G2において、1以上の工程の指定を受け付ける。例えば、受付部502は、復旧工程作成画面G2のリストL2に表示された工程の中から、1以上の工程の指定を受け付ける。受付部502は、同じ工程の指定を繰り返し受け付けてもよい。また例えば、受付部502は、1つの産業装置30の工程の指定だけを受け付けてもよいし、複数の産業装置30の各々の工程の指定を受け付けてもよい。
例えば、ユーザが複数の工程を指定する場合、受付部502は、複数の工程の実行順の指定を受け付ける。本変形例では、ユーザがリストL2中の工程を繰り返し指定するので、工程を指定した順序が実行順に相当する。即ち、受付部502は、リストL2中の工程の指定を繰り返し受け付けることによって、実行順の指定を受け付ける。工程の指定を受け付けた順番がそのまま実行順となる。
なお、実行順の指定は、本変形例の例に限られず、任意の操作によって行われてよい。例えば、受付部502は、実行順を示す数値の入力を受け付けることによって、実行順の指定を受け付けてもよい。また例えば、受付部502は、フローチャート形式の復旧工程作成画面G2であれば、工程の並び順を指定する操作を受け付けることによって、実行順の指定を受け付けてもよい。
本変形例では、異常が発生した産業装置30以外の他の産業装置30についても、復旧時の工程を指定可能である。例えば、復旧工程作成画面G2では、異常が発生した産業装置30Aの加工工程よりも前の工程を担当する産業装置30Bの工程も指定可能である。受付部502は、検出部203が異常を検出した産業装置30Aと、当該産業装置30Aの前工程を実行する他の産業装置30Bと、のそれぞれの工程情報に基づいて、産業装置30A及び他の産業装置30Bの少なくとも一方により実行される1以上の工程の指定を受け付ける。受付部502は、産業装置30A及び産業装置30Bの両方の工程の指定を受け付けてもよいし、産業装置30A又は産業装置30Bの何れか一方のみの工程の指定を受け付けてもよい。
[記録部]
記録部503は、CPU52を主として実現される。記録部503は、受付部502が受け付けた1以上の工程を示す復旧工程情報を記録する。復旧工程情報は、異常復旧時にユーザが指定した工程を識別する情報である。別の言い方をすれば、復旧工程情報は、異常を復旧させるための工程の実行結果を示す情報である。本変形例では、復旧工程情報がマクロ形式のデータである場合を説明するが、復旧工程情報は、任意のデータ形式であってよい。例えば、復旧工程情報は、テキスト形式、ドキュメント形式、又はCSV形式等であってもよい。他にも例えば、ユーザが指定した工程の開始変数を次々と変更するようなプログラムが自動的に生成され、当該プログラムが復旧工程情報として記録されてもよい。
本変形例では、記録部503が、産業装置30を制御するコントローラ20と通信可能なサーバ40に、復旧工程情報を記録する場合を説明するが、記録部503は、他のコンピュータ又は情報記憶媒体に復旧工程情報を記録してもよい。例えば、記録部503は、ユーザ端末50、コントローラ20、又は産業装置30に復旧工程情報を記録してもよいし、図示しないデータベースサーバ又はシミュレーションサーバ等の他のコンピュータに復旧工程情報を記録してもよい。
例えば、ユーザが複数の工程を指定する場合、記録部503は、受付部502が受け付けた実行順に基づいて、復旧工程情報を記録する。この場合、復旧工程情報には、ユーザが指定した実行順と、各工程の名称と、が関連付けられて格納される。即ち、記録部503は、ユーザが指定した各工程を、ユーザが指定した実行順で実行可能なように、復旧工程情報を記録する。
本変形例では、変数によって工程の実行が制御されるので、記録部503は、ユーザが指定した実行順で各工程の開始変数が所定の値となるように、復旧工程情報を生成する。例えば、記録部503は、扉開け工程の開始変数を所定の値とするように、復旧工程情報を作成する。また、記録部503は、扉開け工程の終了変数が所定の値になった場合に、次の工具逃げ工程の開始変数を所定の値とするように、復旧工程情報を作成する。以降同様に、記録部503は、ある工程の終了変数が所定の値になった場合に、次の工程の開始変数を所定の値に変更するように、復旧工程情報を作成する。本変形例では、これら変数の値の変更をするための命令がマクロとして記述された復旧工程情報が生成される。
また例えば、記録部503は、産業装置30A及び他の産業装置30Bの少なくとも一方により実行される1以上の工程を示す復旧工程情報を記録する。即ち、ユーザが複数の産業装置30の各々の工程を指定した場合には、記録部503は、ユーザが指定した工程を各産業装置30が実行するように、復旧工程情報を生成する。例えば、記録部503は、産業装置30Aが扉開け工程等の4つの工程を実行した後に、産業装置30Bが移動工程を実行するように、復旧工程情報を生成する。先述したように、復旧工程情報には、各工程の開始変数を変更するための命令がマクロとして記述される。
なお、本変形例では、記録部503によって復旧工程情報が記録されると、ユーザ端末50は、異常発生時に当該復旧工程情報を呼び出すように、システムプログラムQを変更する。例えば、ユーザ端末50は、異常が発生した場合に、サーバ40に復旧工程情報を要求するための軌道スイッチ又はコイル等をシステムプログラムQのラダーチャートに追加したり、当該要求を示す命令をシステムプログラムQのソースコードに追加したりする。システムプログラムQが変更されることによって、再び異常が発生した場合に、復旧工程情報が呼び出されるようになる。
変形例(3)によれば、産業装置30に発生した異常が検出された場合に、工程情報に基づいて、復旧のために実行する1以上の工程の指定を受け付けて、復旧工程情報として記録することにより、ラダーチャートなどを利用して復旧プログラムを作成する必要がなくなり、産業装置に発生した異常を復旧させるための手間を軽減することができる。例えば、産業装置には、種々の異常が発生することがあり、異常ごとに復旧プログラムを作成するのは非常に手間がかかるが、異常の復旧のために実行させる工程を指定して実行結果を記録することにより、このような手間を省くことができる。例えば、工程を任意の順序で組み合わせることによって、種々の異常に対応することができる。
また、異常が再び検出された場合に、復旧工程情報が示す1以上の工程を取得し、当該取得した1以上の工程を実行して異常を復旧させることで、産業装置30に発生した異常を容易に復旧させることができる。
(4)また例えば、上記変形例を組み合わせてもよい。
また例えば、コントローラ20は、直下の機器の動作を制御するための工程プログラムPを記憶してもよい。また例えば、コントローラ20に変換データが記憶される場合を説明したが、変換データは、産業装置30に記憶されていてもよいし、サーバ40等の他のコンピュータ又は外部情報記憶媒体に記憶されていてもよい。また例えば、変換部202がコントローラ20によって実現される場合を説明したが、変換部202は、産業装置30によって実現されてもよいし、サーバ40等の他のコンピュータによって実現されてもよい。
また例えば、以上説明した実施形態は具体例として示したものであり、本明細書にて開示される発明をこれら具体例の構成やデータ格納例そのものに限定するものではない。当業者はこれら開示された実施形態に種々の変形、例えば、物理的構成の形状や数、データ構造、処理の実行順を変更したりしてもよい。本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。