説明

プログラム作成装置,制御装置及びコンピュータプログラム

【課題】 複数の制御対象機器を統括的に制御する制御装置について制御プログラムを開発する際に、多人数で開発する場合や既存のプログラム資産の流用を容易にするため、プログラム間で共通変数の不用意な重複が発生することを回避する。
【解決手段】 セル設備制御装置21のプログラム管理部29は、プログラム記憶領域32に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理する。そして、変数管理部32は、変数記憶領域36に記憶される複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群とプログラム管理部によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理すると共に、プログラム実行部28による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、変数記憶領域36における対応する変数群領域にて変数値を管理する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、1つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置に実行させる制御プログラムを作成するためのプログラム作成装置,及び前記制御装置、並び前記プログラム作成装置又は前記制御装置を構成するCPUによって実行されるコンピュータプログラムに関する。
【背景技術】
【0002】
図11は、コンベアによって搬送されるワークを工業用ロボットを用いて加工する生産ライン1の一構成例を示す斜視図である。直線状のコンベア2は、行き用のコンベア2F,戻り用のコンベア2Bの2本からなり、行き用のコンベア2Fの途中部位にロボット3及び加工機4が配置されている。そして、ロボット3の僅かに上流には、パレット検出用のセンサ6が配置されている。また、加工機4の下流側隣には、部品供給装置7が配置されている。
【0003】
上記構成における加工処理の流れを概略的に説明する。
(0)作業者によって生産ライン1の起動ボタンが操作されると、初期化処理として、各部に配置されている図示しないセンサの入力信号が参照され、安全状態がチェックされると共に、各ユニットにおけるアクチュエータなどの原位置が確認される。それらがOKであれば、電源やエアなどの供給が開始されてコンベア2が起動される。すると、コンベア2Fの上流側より、パレット8に載置されたワーク9が前工程より供給される。
【0004】
(1)パレット8が、コンベア2F上を搬送され所定位置に到達したことがセンサ6により検出される。
(2)すると、ロボット3のハンドがワーク9上に移動して当該ワーク9を把持し、上昇させる。
(3)ロボット3は加工機4に問合せを行い、「投入OK」の応答があれば、把持したワーク9を加工機4の投入位置に移動させ、一旦ハンド切替えを行うと加工機4による加工済みのワーク9を把持し、再びハンド切替えを行って未加工のワーク9を投入位置に投入する。
【0005】
(4)続いて、ロボット3は、加工済みのワーク9をコンベア2Fの下流側に移動させ、パレット8に載置する。尚、パレット8は、コンベア2Fの上流側と下流側との間を、図示しないリフタを介してコンベア2Fの下方側を移動して移送されるようになっている。
(5)次に、ロボット3は、部品供給装置7にハンドを移動させて当該装置7より供給される別のワーク10をチャックすると、(4)のパレット位置まで移動させ、加工済みのワーク9にワーク10を組み付ける。
(6)そして、コンベア2F上のワークストッパを解除して、組付け後のワーク11が載置されたパレット8を下流側に搬出する。
【0006】
その後、下流側においていつかの工程が実施された後、パレット8は戻り用のコンベア2Bに乗せ替えられて上流側に搬送される。
上記のような構成においては、ロボット3の他に、コンベア2や加工機4等も同時に制御する必要がある。また、各設備に配置されているセンサ6などによって出力される信号の状態も監視しながら、必要に応じてロボット3やコンベア2などを停止させるなどの制御も必要となる。
【0007】
図12は、従来、上記のような生産ライン1について制御を行う制御系の構成を概略的に示すものである。即ち、ロボット3は専用のロボットコントローラ12によって制御され、コンベア2についてはモーションコントローラ13によって制御される。また、加工機4は加工機用制御装置14によって制御される。
そして、これらのコントローラ12〜14は、プログラマブルロジックコントローラ(PLC)15によって統括的に制御されるようになっている。また、PLC15には、加工状態などを画像で監視するための例えばCCD(Charge Coupled Device)で構成されるカメラ16及びそのカメラ16を制御する視覚コントローラ17や、各種のセンサ6などによって入力される信号及びバルブ等へ出力される信号なども与えられている。また、部品供給装置7は、供給装置コントローラ18によって制御される。尚、図8と同様の制御系の構成は、例えば特許文献1に開示されている。
【0008】
近年、製品コスト低減のため、設備コスト低減が強く望まれており、部品費低減や設計・調整工数の低減が必須となっている。コスト低減のためには、ハード的アプローチとして使用部品点数の削減(例えばPLC、視覚装置、操作盤の統合など)が有効である。また、ソフト的アプローチとしては、ソフトの汎用化・標準化(例えば、言語の統一など)が有効である。更に、システム的アプローチとしては、設備内で最も汎用的な装置であるロボットに機能を集約して設備をシンプル化することが有効であろう。
【0009】
ところで、上記のようにロボットコントローラにPLCの設備制御機能を搭載することを想定すると、そのコントローラにおいて、ロボットを含む各制御対象についての制御プログラム、或いは、各機能を実現するための複数の制御プログラムを搭載することになる。その場合、それらのプログラム間においてデータの授受を行うことになる。
例えば、特許文献2には、統合的な制御装置におけるソフトウエア構造として、各ユーザタスクA〜Dにおいてのみ有効であるローカル変数A〜Dと、それらのタスクA〜Dにおいて共通に使用される、即ち何れのタスクからであってもデータの読み書きが可能な変数であるグローバル変数とを使用したものが開示されている。
【特許文献1】特開2001−92517号公報
【特許文献2】特開平6−301412号公報,図7参照
【発明の開示】
【発明が解決しようとする課題】
【0010】
しかしながら、特許文献2に開示されているように、何れか2つのプログラム間において共有する変数をグローバル変数として使用した場合には、以下のような問題が発生することが想定される。即ち、上述したように統合的な制御装置を構成した場合は、多くのプログラムモジュールも一纏まりに搭載されることになる。そして、各プログラムモジュールは、複数の作成者によってコーディングされるが、その場合、プログラム間で使用されていたグローバル変数の名称が、重複するおそれがある。
【0011】
また、例えば製造ラインの変更により制御対象の一部が入れ替わるなどした場合は、それに伴い制御装置のプログラムの一部を変更する必要があるが、その際には、前記制御装置が変更前に使用していたプログラムの一部も変更することになる。その場合も、新たに作成したプログラム内で使用したグローバル変数名が、作成済のプログラム内で使用されているグローバル変数の名称が重複することがある。
【0012】
更に、図13にはより具体的な例を示す。既存の設備Xにおいては、ロボットXのプログラム(AX1,AX2)間で共通するグローバル変数と、搬送装置Xのプログラム(BX1、BX2)間で共通するグローバル変数とを使い分けており、もう1つの既存の設備Y側においても、グローバル変数を同様に使用していたとする。そして、これらで使用されていたロボットXのプログラム(AX1,AX2)、搬送装置(コンベア)Yのプログラム(BY1、BY2)とを、新たな設備Zのプログラムに転用する場合を想定すると、グローバル変数の名称が重複することで、両者に割り当てていた領域のアドレスが干渉することも考えられる。以上のような場合には、変数名を変更する処置が必要となる。
【0013】
変数名の変更は、プログラムの細部を理解した上で行う必要があるため非常に面倒である。また、一部の変更を忘れても気付きにくくデバッグを繰り返すこともあり、プログラムの転用を効率よく行うことができないという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的は、1つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御する制御装置について、制御対象の一部が変更された場合でも、既存のプログラムを容易に転用して対応することが可能となるプログラム作成装置,及び前記制御装置,並びにそれらの装置を構成するCPUによって実行されるコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【0014】
請求項1記載のプログラム作成装置によれば、プログラム管理手段は、プログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理する。そして、変数管理手段は、変数記憶手段に記憶される複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理する。
【0015】
即ち、複数のプログラム間で共通に参照可能な変数の有効範囲を、プログラム管理手段によって管理される制御プログラムのグループ内に限定することができる。従って、従来のようにグローバル変数を使用する場合とは異なり、複数のプログラムを多数のプログラマが作成する場合でも、共通変数の名称を作成段階で管理して重複することを回避する必要がなくなる。また、制御対象機器の変更などに応じて、既存のプログラムを流用したり或いはプログラムの一部を変更することで新たな構成に対応した制御プログラム群を用意する場合も、同様に共通変数の重複が問題にならなくなる。
【0016】
請求項2記載のプログラム作成装置によれば、変数管理手段は、入れ子構造に階層化された複数のグループ内の上位グループで定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理する。従って、共通変数の参照可能範囲をより柔軟に設定することができる。
【0017】
請求項3記載の制御装置によれば、変数管理手段は、プログラム実行手段による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、変数記憶手段における対応する変数群領域にて変数値を管理する。従って、請求項1又は2記載のプログラム作成装置によって作成された制御プログラムを、ローカル変数,グループ変数を機能通りに使い分けて実行することができる。
【0018】
請求項4記載の制御装置によれば、請求項1記載のプログラム作成装置の機能と、請求項2記載の制御装置の機能とを併せ持つので、制御装置単体によって、制御プログラムを実行可能な形式に変換してプログラム管理及び変数管理を行い、且つ、変換したプログラムを実行することが可能となる。
請求項5記載の制御装置によれば、請求項4記載の制御装置に対して、請求項2記載のプログラム作成装置と同様の機能を付与することができる。
【発明を実施するための最良の形態】
【0019】
(第1実施例)
以下、本発明の第1実施例について図1乃至図8を参照して説明する。尚、図11及び図12と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図1は、図11に示す生産ライン1と同様の構成を制御対象機器として、それらを本発明のセル設備制御装置(プログラム作成装置)21によって制御する場合の構成を機能ブロック図で示すものである。尚、「セル」とは、生産ライン1のようにロボット3を中心として構成される一纏まりの加工処理を行なう単位を言う。
【0020】
セル設備制御装置21は、コントローラ12,13,17及びPLC15に代わり、生産ライン1を構成するコンベア2,ロボット3,加工機4,部品供給装置7,カメラ16,IDタグのリーダライタ19などを制御対象機器として統括的に制御するコントローラである。また、セル設備制御装置21には、ティーチングペンダント22やパーソナルコンピュータ(PC)23が接続されており、ユーザは、これらを介して制御プログラムの作成を行ったり、入力操作や動作状況のモニタなどを行なうようになっている。
【0021】
更に、セル設備制御装置21は、具体的には図示しないが、CPUやメモリ,ハードディスク,I/Oなどから構成されている。そして、図1では、セル設備制御装置21の内部機能をブロック化して示しているが、これらは上記のハードウエアとソフトウエアとによって実現される機能である。更にまた、セル設備制御装置21は、各制御対象機器を統括的に制御するのみならず、その制御を行うためのプログラムを作成する機能をも備えている。
【0022】
以下、セル設備制御装置21の構成について説明する。セル設備制御装置21は、ティーチングペンダント22やパーソナルコンピュータ23とはマンマシンI/F(インターフェイス)通信部24を介して例えばシリアル通信を行うようになっている。マンマシンI/F通信部24を介して受信したデータは、データ管理部25に与えられる。プログラム作成部(プログラム作成手段)26はプログラムエディタであり、ユーザは、セル設備制御装置21側のプログラム作成部26を起動して、プログラムの作成を行なうことも可能である。
【0023】
コンパイル部(プログラム変換手段,コンピュータプログラム)27は、プログラム作成部26において作成されたプログラムを、プログラム実行部(プログラム実行手段,コンピュータプログラム)28が直接実行可能な形式(オブジェクト)に変換(コンパイル)するものである。プログラム管理部(プログラム管理手段,コンピュータプログラム)29は、コンパイル部27が変換を行う過程において、各制御プログラムを、ユーザの指定に応じたプログラムグループ(PG)に分類し、メモリ30のプログラム記憶領域(プログラム記憶手段)31に配置するようになっている。
【0024】
また、変数管理部(変数管理手段,コンピュータプログラム)32も、コンパイル部27が変換を行う過程において、各制御プログラム中で定義されている変数の属性に応じて、各変数をグローバル/グループ/ローカルの変数領域33〜35に分類し、メモリ30の変数記憶領域(変数記憶手段)36に配置するようになっている。尚、この変数記憶領域36には、プログラムを実行することで各変数を介して読書きされたデータ値も格納されるようになっており、プログラムの実行時には、変数記憶領域36が参照される。
【0025】
ここで、プログラムグループとしては、制御対象機器の種類に応じてロボット制御PG37,搬送装置制御PG38,部品供給制御PG39,ID読書き制御PG40,加工機I/F制御PG41,視覚装置制御PG42などに分類される。即ち、これらのプログラムグループは、基本的に同種類の制御対象機器を制御するためのプログラムモジュールの集合である。尚、具体的には図示しないが、全体を統括的に制御するためのメインプログラムは別に存在しており、上記のプログラムグループ37〜42に属するプログラムは、メインプログラムを実行する際に必要に応じて呼び出され、サブルーチン的に利用されるようになっている。
【0026】
プログラム実行部28は、制御プログラムを実行する場合には、プログラム管理部29を介してメモリ30より実行対象のプログラムを読み出して実行する。その際には、変数管理部32を介して各プログラム中で使用されている変数の属性を判別して実行するようになっている。プログラム実行部28がロボット制御PG37に属するプログラムを実行すると、ロボット制御部43を介してロボット3が制御される。また、プログラム実行部28がその他のPG38〜42に属するプログラムを実行すると、外部機器通信部44を介してコンベア2や部品供給装置7等が制御される。
【0027】
尚、上記構成において、セル設備制御装置21の制御プログラムは、例えば、パーソナルコンピュータ23において作成されてコンパイルされる場合も想定している。即ち、セル設備制御装置21のコンパイル部27,プログラム管理部29及び変数管理部32の機能をパーソナルコンピュータ23側に搭載しておけば、同様の形態でプログラム作成が可能である。その場合には、パーソナルコンピュータ23よりマンマシンI/F通信部24を介して実行形式のプログラムがセル設備制御装置21側に転送され、メモリ30のプログラム記憶領域31に記憶される。また、コンパイルされた結果として管理されるプログラム中の各変数は、変数記憶領域36に記憶される。
【0028】
次に、本実施例の作用について図2乃至図6も参照して説明する。図2には、ユーザがセル設備制御装置21側のプログラム作成部26を起動して、制御プログラムを作成する場合に、変数の定義を行う手順を説明するためのフローチャートである。ユーザは、作成中のプログラム内で使用する変数が、全てのプログラムで共通に使用する変数か否かを判断し(ステップA1)、共通に使用する変数であれば(「YES」)、定義済みのグローバル変数を利用する(ステップA4)。ステップA4の実行後はステップA11に移行する。即ち、これは従来より使用されているグローバル変数である。
【0029】
一方、ステップA1において、対象となる変数が全プログラムで共通に使用されるものでない場合は(「NO」)、プログラムがグループ化されているか否かを判断する(ステップA5)。グループ化されている場合は(「YES」)、当該変数が、作成中のプログラムが属するグループ内で共通に使用する変数か否かを判断し(ステップA6)、共通に使用する変数であれば(「YES」)、当該変数が、前記グループに属する他のプログラムにおいて既に定義済みか否かを判断する(ステップA7)。そして、定義済みでなければ(「NO」)当該変数をグループ変数として定義し(ステップA8)、定義済みであれば(「YES」)、定義済みのグループ変数の利用を宣言する(ステップA9)。ステップA8,A9の実行後はステップA11に移行する。
【0030】
また、ステップA5又はA6で「NO」と判断した場合は、当該変数は作成中のプログラムにおいてのみ有効なローカル変数として定義する(ステップA10)。それから、次に使用する変数があるかどうかを判断し(ステップA11)、変数があれば(「YES」)ステップA1に戻り、変数がなければ(「NO」)終了する。
【0031】
例えば、プログラム中において、ローカル,グループの各変数をAA,BBとすると、夫々以下のように記述することで定義する。
ローカル変数 : DEFINT AA
グループ変数 : GROUP DEFINT BB
また、ステップA9において、上記の変数BBのように定義済みのグループ変数の利用を宣言する場合には、例えば、以下のように記述する。
EXTERN DEFINT BB
以上のように変数を定義して記述された各制御プログラムは、メモリ30のプログラム記憶領域31に配置される。
【0032】
次に、図3は、ユーザが記述作成したプログラムを、コンパイル部27によって実行形式に変換する場合に、変数管理部32が行う変数管理処理の内容を示すフローチャートである。変数管理部32は、ステップB1,B2において変数がグローバル変数,グループ変数の何れであるかを判断する。グローバル変数であれば(ステップB1,「YES」)、当該変数を変数記憶領域36のグローバル変数領域33に登録すると共に、グローバル変数の識別コードを割り当てる(ステップB5)。また、グループ変数であれば(ステップB2,「YES」)、当該変数を、変数記憶領域36において所属しているプログラムグループの変数領域34に登録すると共に、グループ変数の識別コードを割り当てる(ステップB6)。尚、ステップB5,B6の実行後はステップB4に移行する。
【0033】
また、変数がグローバル変数,ローカル変数の何れでもない場合は(ステップB2,「NO」)、当該変数はローカル変数であるから、変数記憶領域36において所属しているプログラムのローカル変数領域35に登録すると共に、ローカル変数の識別コードを割り当てる(ステップB3)。それから、次に宣言されている変数があれば(ステップB4,「YES」)ステップB1に戻り、変数がなければ(「NO」)処理を終了する。
【0034】
次に、図4は、プログラム実行部28が実行形式に変換されたプログラムを実行する場合に、変数管理部32によって行われる変数処理の内容を示すフローチャートである。プログラム実行部28は、1行分の識別コードを認識すると(ステップC1)、変数コードがあるか否かを判断する(ステップC2)。変数コードでなければ(「NO」)、その他のコードについての判断を行い(ステップC7)、ステップC6に移行する。
【0035】
変数コードであれば(ステップC2,「YES」)、先ず当該変数がグローバル変数かどうか判断し(ステップC3)、グローバル変数であれば(「YES」)、変数記憶領域36のグローバル変数領域33より、当該変数に応じたデータを取得する(ステップC8)。また、当該変数がグローバル変数ではなくグループ変数であれば(ステップC4,「YES」)、変数記憶領域36のグループ変数領域34より、当該変数に応じたデータを取得する(ステップC9)
また、当該変数がグループ変数でなければ(ステップC4,「NO」)ローカル変数であるから、変数記憶領域36のローカル変数領域35より、当該変数に応じたデータを取得する(ステップC5)。それから、次の識別コードがあれば(ステップC6,「YES」)ステップC1に戻り、識別コードがなければ(「NO」)処理を終了する。
【0036】
図5は、プログラムグループのイメージと、プログラムソースの具体的な記述例を示す。LIB1,LIB2は夫々独立したプログラムグループであり、LIB1内のプログラムSUB1内においてグループ変数BBが定義され、同グループ内のプログラムSUB2内では、「EXTERN」により前記グループ変数BBの利用を宣言している。また、LIB2内のプログラムSUB12,SUB22間においても同様にグループ変数BBが定義されているが、夫々のグループ内でのみ有効な変数であるから名称が重複していても何等問題はない。
【0037】
図6は、グループ変数の具体的な使用例を示すものである。図6において、カメラ16についてのプログラムグループである視覚装置制御PG42に、自動運転プログラム42A,操作盤プログラム42Bがあるとする。自動運転プログラム42Aでは、ワークを検出すると、セル設備制御装置21がリードコマンドをカメラ16に発行し、カメラ16の計測データを取得する。ここでは例えば、ワークに印字されている文字を検査するため、マスタ文字(基準となる文字位置)とのX,Y座標のずれ量と回転角度を取得する。そして、自動運転プログラム42Aは、取得した計測データを、視覚装置制御PG42に対応するグループ変数領域34に格納する。
上記の処理が行われた後に、操作盤プログラム42Bが起動され、ティーチングペンダント22の操作盤画面において上記計測データを表示する必要がある場合、操作盤プログラム42Bは、上記グループ変数領域34におけるグループ変数を参照して、ティーチングペンダント22の画面に計測データを表示する。
【0038】
また、図7は、ローカル/グループ/グローバルの各変数の関係を、モデル的に示すものである。ここではA,B,Cの3つのプログラムグループがあり、各グループには、夫々2つのプログラム(A1,A2),(B1,B2),(C1,C2)が属している。この場合、ローカル変数は、各プログラムA1〜C2の夫々においてのみ参照される変数であり、グループ変数は、各プログラムグループA,B,Cの夫々において共通に参照される変数である。そして、グローバル変数は、全てのプログラムA1〜C2により共通に参照される変数である。
【0039】
更に、図8は、図13相当図であり、2つの既存設備X,Yにおいて使用していたプログラムを転用して、新たな設備Zにて使用するプログラムを作成する場合を示す。この場合、ロボットXのプログラム(AX1,AX2)間で共通するグループ変数と、搬送装置Yのプログラム(BY1、BY2)間で共通するグループ変数とは、夫々のプログラムグループ内でのみ有効であるから、新たな設備Zに転用した場合でも、図13に示すケースのように変数に割り当てていた領域のアドレスが干渉することはない。
【0040】
以上のように本実施例によれば、セル設備制御装置21のプログラム管理部29は、プログラム記憶領域32に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理する。そして、変数管理部32は、変数記憶領域36に記憶される複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、プログラム管理部によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理する。
【0041】
即ち、複数のプログラム間で共通に参照可能な変数の有効範囲を、プログラム管理部29によって管理される制御プログラムのグループ内に限定することができる。従って、従来のようにグローバル変数を使用する場合とは異なり、複数のプログラムを多数のプログラマが作成する場合でも、グループ変数の名称を作成段階で管理して重複することを回避する必要がなくなる。また、制御対象機器の変更などに応じて、既存のプログラムを流用したり或いはプログラムの一部を変更することで新たな構成に対応した制御プログラム群を用意する場合も、同様に共通変数の重複が問題にならなくなる。従って、プログラムの作成効率、或いは既存のプログラムを転用する場合の作業効率を大きく向上させることができる。
【0042】
即ち、グローバル変数はシステム側で定義されており、変数の各データ型に対応する宣言数はパラメータで決まっており、ある範囲を持つ。また、各プログラマが制御プログラムを作成する場合、管理が容易となるようにグローバル変数を連続的に取るケースが殆どである。そのため、限定されたグローバル変数領域を複数のプログラムが使用する場合、図13に示したような干渉が発生する可能性がある。
【0043】
これに対して、グループ変数は、グループ変数領域34内において(図1では1つにまとめられているが)所属するプログラムグループ毎に格納される。従って、異なるグループ変数については同じパス(プログラムグループのルートからのアドレス)が存在せず、[ルート→所属プログラムグループ→グループ変数名]が1対1で決まることになるため、変数間の干渉が発生しないのである。
【0044】
また、変数管理部32は、プログラム実行部28による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、変数記憶領域36における対応する変数群領域にて変数値を管理するので、ローカル変数,グループ変数を機能通りに使い分けて制御プログラムを実行することができる。そして、セル設備制御装置21によれば、当該制御装置21単体によって、制御プログラムを実行可能な形式に変換してプログラム管理及び変数管理を行い、且つ、変換したプログラムを実行することが可能となる。
【0045】
(第2実施例)
図9及び図10は本発明の第2実施例を示すものであり、第1実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。第2実施例では、プログラムグループを入れ子構造に階層化して定義することを可能としており、それに伴って、グループ変数についても、階層化されている上位グループと下位グループとの間において有効となるようにしたものである。
【0046】
即ち、図9に示すように、上位のプログラムグループAに対して、下位のプログラムグループB,C,Dが属するように定義されている。この場合、グループ変数GB,GC,GDは、第1実施例と同様に夫々のプログラムグループB,C,D内に属するプログラム間でのみ有効な変数である。これに対してグループ変数GXは、プログラムグループA,B,Cの何れかに属するプログラム間でも有効となるものである。
【0047】
図10は、第1実施例における図3のコンパイル処理時において、変数管理部32がステップB6にて行う処理を示すフローチャートである。変数管理部32は、先ず、変換対象のプログラム内に「EXTERN」宣言があるか否かを判断する(ステップD1)。「EXTERN」宣言がなければ(「NO」)グループ変数を使用していないということであるから処理を終了する。
【0048】
ステップD1において「EXTERN」宣言があれば(「YES」)、同じグループ内の他のファイル(プログラムファイル)を開き(ステップD2)、そのプログラム内に「GROUP」宣言があるかどうかを判断する(ステップD3)。「GROUP」宣言がなければ(「NO」)同じグループ内の他のファイルがあるかどうかを判断し(ステップD4)、ファイルがあれば(「YES」)そのファイルについてステップD2,D3の処理を行なう。
【0049】
一方、ステップD4において、同じグループ内の他のファイルがなければ(「NO」)、変数管理部32は、当該グループの上位にグループが定義されているかどうかを判断する(ステップD5)。上位グループが存在すれば(「YES」)その上位グループに移動して(ステップD6)、上位グループ内のファイルについてステップD2,D3の処理を行なう。また、この時点で上位グループが存在しない場合は(「NO」)、「EXTERN」宣言のみが存在し、「GROUP」宣言が存在しないというプログラムミスであるから、コンパイルエラーとして異常処理を行なう(ステップD9)。
【0050】
以上の処理において何れかのファイル内に「GROUP」宣言が存在すれば、(ステップD3,「YES」)「EXTERN」宣言された変数と「GROUP」宣言された変数との名称が同じか否かを判断し(ステップD7)、両者が同じであれば(「YES」)それらの変数同士を関連づける処理を行い(ステップD8)、ステップD1に戻る。また、両変数名が異なる場合は(「NO」)ステップD4に移行する。
【0051】
以上のように第2実施例によれば、変数管理部32は、入れ子構造に階層化された複数のグループ内の上位グループで定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理するので、グループ変数の参照可能範囲をより柔軟に設定することができる。
【0052】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、以下のような変形または拡張が可能である。
制御対象機器は、生産ライン1に限ることなく、少なくとも1つの工業用ロボットを含むものであれば、個別の応用形態に応じて適宜選択を行って実施すれば良い。
グローバル変数は、必要に応じて使用すれば良い。
セル設備制御装置21の制御プログラムをパーソナルコンピュータ23において作成しコンパイルする場合には、セル設備制御装置21側には、プログラム作成部26及びコンパイル部27の機能は不要であり、実行形式に変換されたプログラムを実行するための機能部分だけを備えていれば良い。
プログラムの階層化は、3階層以上行っても良い。
【図面の簡単な説明】
【0053】
【図1】本発明の第1実施例であり、セル設備制御装置の構成を中心として示す機能ブロック図
【図2】ユーザが制御プログラムを作成する場合に、変数の定義を行う手順を説明するためのフローチャート
【図3】プログラムをコンパイル部によって実行形式に変換する場合に、変数管理部が行う変数管理処理の内容を示すフローチャート
【図4】プログラム実行部が実行形式に変換されたプログラムを実行する場合に、変数管理部によって行われる変数処理の内容を示すフローチャート
【図5】プログラムソースの具体的な記述例を示す図
【図6】グループ変数の具体的な使用例を示す図
【図7】ローカル/グループ/グローバルの各変数の関係を、モデル的に示す図
【図8】2つの既存設備X,Yにおいて使用していたプログラムを転用して、新たな設備Zにて使用するプログラムを作成する場合を示す図
【図9】本発明の第2実施例を示す図7相当図
【図10】図3のコンパイル処理時において、変数管理部がステップB6にて行う処理を示すフローチャート
【図11】コンベアによって搬送されるワークを、工業用ロボットを用いて加工する生産ラインの一構成例を示す斜視図
【図12】従来の制御系の構成を示す機能ブロック図
【図13】図8相当図
【符号の説明】
【0054】
図面中、2はコンベア(制御対象機器)、3はロボット(工業用ロボット,制御対象機器)、4は加工機(制御対象機器)、7は部品供給装置(制御対象機器)、16はカメラ(制御対象機器)、21はセル設備制御装置、26はプログラム作成部(プログラム作成手段)、27はコンパイル部(プログラム変換手段,コンピュータプログラム)、28はプログラム実行部(プログラム実行手段,コンピュータプログラム)、29はプログラム管理部(プログラム管理手段,コンピュータプログラム)、31はプログラム記憶領域(プログラム記憶手段)、32は変数管理部(変数管理手段)、36は変数記憶領域(変数記憶手段,コンピュータプログラム)を示す。

【特許請求の範囲】
【請求項1】
1つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置によって実行される制御プログラムを作成するためのプログラム作成装置において、
ユーザによって作成される複数の制御プログラムを、前記制御装置が備えているプログラム実行手段が直接実行可能となる形式に変換するプログラム変換手段と、
このプログラム変換手段によって変換された制御プログラムが記憶されるプログラム記憶手段と、
このプログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理するプログラム管理手段と、
前記制御プログラムにおいて使用される変数が記憶される変数記憶手段と、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理する変数管理手段とを備えたことを特徴とするプログラム作成装置。
【請求項2】
前記プログラム管理手段は、前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理可能に構成され、
前記変数管理手段は、前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理することを特徴とする請求項1記載のプログラム作成装置。
【請求項3】
請求項1又は2記載のプログラム作成装置によって作成された制御プログラムを実行する制御装置であって、
前記プログラム変換手段によって変換された状態で、前記プログラム記憶手段及び前記変数記憶手段に記憶されているものと同一の内容が記憶されているプログラム記憶手段及び変数記憶手段と、
これらの記憶手段に記憶されている制御プログラム及び変数を参照して実行するプログラム実行手段と、
前記プログラム実行手段による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理する変数管理手段とを備えたことを特徴とする制御装置。
【請求項4】
プログラム実行手段が制御プログラムを実行することで、1つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置において、
ユーザによって作成される制御プログラムが記憶されるプログラム記憶手段と、
このプログラム記憶手段に記憶される複数の制御プログラムを、前記プログラム実行手段が直接実行可能となる形式に変換するプログラム変換手段と、
前記プログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理するプログラム管理手段と、
前記制御プログラムにおいて使用される変数が記憶される変数記憶手段と、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理し、前記プログラム実行手段による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理する変数管理手段とを備えたことを特徴とする制御装置。
【請求項5】
前記プログラム管理手段は、前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理可能に構成され、
前記変数管理手段は、前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理することを特徴とする請求項4記載の制御装置。
【請求項6】
1つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置によって実行される制御プログラムを作成するためのプログラム作成装置において、当該プログラム作成装置を構成するCPUによって実行されるコンピュータプログラムであって、
ユーザによって作成される複数の制御プログラムを、前記制御装置が備えているプログラム実行手段が直接実行可能となる形式に変換させ、
変換させた制御プログラムをプログラム記憶手段に記憶させ、
このプログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理させ、
前記制御プログラムにおいて使用される変数を変数記憶手段に記憶させ、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理させることを特徴とするコンピュータプログラム。
【請求項7】
前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理させ、
前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数を、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理させることを特徴とする請求項6記載のコンピュータプログラム。
【請求項8】
請求項1又は2記載のプログラム作成装置によって作成された制御プログラムを実行する制御装置において、当該制御装置を構成するCPUによって実行されるコンピュータプログラムであって、
前記制御プログラムが実行可能な形式に変換された状態で、前記プログラム記憶手段及び前記変数記憶手段に記憶されているものと同一の内容が記憶されているプログラム記憶手段及び変数記憶手段より、記憶されている制御プログラム及び変数を参照して実行させ、
前記実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理させることを特徴とするコンピュータプログラム。
【請求項9】
制御プログラムを実行することで、1つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置において、当該制御装置を構成するCPUによって実行されるコンピュータプログラムであって、
ユーザによって作成され、プログラム記憶手段に記憶されている複数の制御プログラムを、前記CPUが直接実行可能となる形式に変換させ、
前記プログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理させ、
前記制御プログラムにおいて使用される変数を変数記憶手段に記憶させ、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理させ、前記制御プログラムの実行の過程において、使用される変数が何れの変数群に属しているかを判定させ、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理させることを特徴とするコンピュータプログラム。
【請求項10】
前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理させ、
前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理させることを特徴とする請求項9記載のコンピュータプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate