(57)【要約】【課題】  複数の制御対象機器を統括的に制御する制御装置について制御プログラムを開発する際に、多人数で開発する場合や既存のプログラム資産の流用を容易にするため、プログラム間で共通変数の不用意な重複が発生することを回避する。【解決手段】  セル設備制御装置２１のプログラム管理部２９は、プログラム記憶領域３２に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理する。そして、変数管理部３２は、変数記憶領域３６に記憶される複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群とプログラム管理部によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理すると共に、プログラム実行部２８による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、変数記憶領域３６における対応する変数群領域にて変数値を管理する。【選択図】  図１
2006099639.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置によって実行される制御プログラムを作成するためのプログラム作成装置において、
ユーザによって作成される複数の制御プログラムを、前記制御装置が備えているプログラム実行手段が直接実行可能となる形式に変換するプログラム変換手段と、
このプログラム変換手段によって変換された制御プログラムが記憶されるプログラム記憶手段と、
このプログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理するプログラム管理手段と、
前記制御プログラムにおいて使用される変数が記憶される変数記憶手段と、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理する変数管理手段とを備えたことを特徴とするプログラム作成装置。
【請求項２】
前記プログラム管理手段は、前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理可能に構成され、
前記変数管理手段は、前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理することを特徴とする請求項１記載のプログラム作成装置。
【請求項３】
請求項１又は２記載のプログラム作成装置によって作成された制御プログラムを実行する制御装置であって、
前記プログラム変換手段によって変換された状態で、前記プログラム記憶手段及び前記変数記憶手段に記憶されているものと同一の内容が記憶されているプログラム記憶手段及び変数記憶手段と、
これらの記憶手段に記憶されている制御プログラム及び変数を参照して実行するプログラム実行手段と、
前記プログラム実行手段による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理する変数管理手段とを備えたことを特徴とする制御装置。
【請求項４】
プログラム実行手段が制御プログラムを実行することで、１つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置において、
ユーザによって作成される制御プログラムが記憶されるプログラム記憶手段と、
このプログラム記憶手段に記憶される複数の制御プログラムを、前記プログラム実行手段が直接実行可能となる形式に変換するプログラム変換手段と、
前記プログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理するプログラム管理手段と、
前記制御プログラムにおいて使用される変数が記憶される変数記憶手段と、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理し、前記プログラム実行手段による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理する変数管理手段とを備えたことを特徴とする制御装置。
【請求項５】
前記プログラム管理手段は、前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理可能に構成され、
前記変数管理手段は、前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理することを特徴とする請求項４記載の制御装置。
【請求項６】
１つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置によって実行される制御プログラムを作成するためのプログラム作成装置において、当該プログラム作成装置を構成するＣＰＵによって実行されるコンピュータプログラムであって、
ユーザによって作成される複数の制御プログラムを、前記制御装置が備えているプログラム実行手段が直接実行可能となる形式に変換させ、
変換させた制御プログラムをプログラム記憶手段に記憶させ、
このプログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理させ、
前記制御プログラムにおいて使用される変数を変数記憶手段に記憶させ、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理させることを特徴とするコンピュータプログラム。
【請求項７】
前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理させ、
前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数を、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理させることを特徴とする請求項６記載のコンピュータプログラム。
【請求項８】
請求項１又は２記載のプログラム作成装置によって作成された制御プログラムを実行する制御装置において、当該制御装置を構成するＣＰＵによって実行されるコンピュータプログラムであって、
前記制御プログラムが実行可能な形式に変換された状態で、前記プログラム記憶手段及び前記変数記憶手段に記憶されているものと同一の内容が記憶されているプログラム記憶手段及び変数記憶手段より、記憶されている制御プログラム及び変数を参照して実行させ、
前記実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理させることを特徴とするコンピュータプログラム。
【請求項９】
制御プログラムを実行することで、１つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置において、当該制御装置を構成するＣＰＵによって実行されるコンピュータプログラムであって、
ユーザによって作成され、プログラム記憶手段に記憶されている複数の制御プログラムを、前記ＣＰＵが直接実行可能となる形式に変換させ、
前記プログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理させ、
前記制御プログラムにおいて使用される変数を変数記憶手段に記憶させ、
前記複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、前記プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理させ、前記制御プログラムの実行の過程において、使用される変数が何れの変数群に属しているかを判定させ、その判定結果に応じて、前記変数記憶手段における対応する変数群領域にて変数値を管理させることを特徴とするコンピュータプログラム。
【請求項１０】
前記複数のグループの内、更にユーザによって指定された複数のグループを入れ子構造に階層化して管理させ、
前記階層化された複数のグループ内の上位グループにおいて定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理させることを特徴とする請求項９記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御するように構成される制御装置に実行させる制御プログラムを作成するためのプログラム作成装置，及び前記制御装置、並び前記プログラム作成装置又は前記制御装置を構成するＣＰＵによって実行されるコンピュータプログラムに関する。
【背景技術】
【０００２】
図１１は、コンベアによって搬送されるワークを工業用ロボットを用いて加工する生産ライン１の一構成例を示す斜視図である。直線状のコンベア２は、行き用のコンベア２Ｆ，戻り用のコンベア２Ｂの２本からなり、行き用のコンベア２Ｆの途中部位にロボット３及び加工機４が配置されている。そして、ロボット３の僅かに上流には、パレット検出用のセンサ６が配置されている。また、加工機４の下流側隣には、部品供給装置７が配置されている。
【０００３】
上記構成における加工処理の流れを概略的に説明する。
（０）作業者によって生産ライン１の起動ボタンが操作されると、初期化処理として、各部に配置されている図示しないセンサの入力信号が参照され、安全状態がチェックされると共に、各ユニットにおけるアクチュエータなどの原位置が確認される。それらがＯＫであれば、電源やエアなどの供給が開始されてコンベア２が起動される。すると、コンベア２Ｆの上流側より、パレット８に載置されたワーク９が前工程より供給される。
【０００４】
（１）パレット８が、コンベア２Ｆ上を搬送され所定位置に到達したことがセンサ６により検出される。
（２）すると、ロボット３のハンドがワーク９上に移動して当該ワーク９を把持し、上昇させる。
（３）ロボット３は加工機４に問合せを行い、「投入ＯＫ」の応答があれば、把持したワーク９を加工機４の投入位置に移動させ、一旦ハンド切替えを行うと加工機４による加工済みのワーク９を把持し、再びハンド切替えを行って未加工のワーク９を投入位置に投入する。
【０００５】
（４）続いて、ロボット３は、加工済みのワーク９をコンベア２Ｆの下流側に移動させ、パレット８に載置する。尚、パレット８は、コンベア２Ｆの上流側と下流側との間を、図示しないリフタを介してコンベア２Ｆの下方側を移動して移送されるようになっている。
（５）次に、ロボット３は、部品供給装置７にハンドを移動させて当該装置７より供給される別のワーク１０をチャックすると、（４）のパレット位置まで移動させ、加工済みのワーク９にワーク１０を組み付ける。
（６）そして、コンベア２Ｆ上のワークストッパを解除して、組付け後のワーク１１が載置されたパレット８を下流側に搬出する。
【０００６】
その後、下流側においていつかの工程が実施された後、パレット８は戻り用のコンベア２Ｂに乗せ替えられて上流側に搬送される。
上記のような構成においては、ロボット３の他に、コンベア２や加工機４等も同時に制御する必要がある。また、各設備に配置されているセンサ６などによって出力される信号の状態も監視しながら、必要に応じてロボット３やコンベア２などを停止させるなどの制御も必要となる。
【０００７】
図１２は、従来、上記のような生産ライン１について制御を行う制御系の構成を概略的に示すものである。即ち、ロボット３は専用のロボットコントローラ１２によって制御され、コンベア２についてはモーションコントローラ１３によって制御される。また、加工機４は加工機用制御装置１４によって制御される。
そして、これらのコントローラ１２〜１４は、プログラマブルロジックコントローラ（ＰＬＣ）１５によって統括的に制御されるようになっている。また、ＰＬＣ１５には、加工状態などを画像で監視するための例えばＣＣＤ（Charge Coupled Device）で構成されるカメラ１６及びそのカメラ１６を制御する視覚コントローラ１７や、各種のセンサ６などによって入力される信号及びバルブ等へ出力される信号なども与えられている。また、部品供給装置７は、供給装置コントローラ１８によって制御される。尚、図８と同様の制御系の構成は、例えば特許文献１に開示されている。
【０００８】
近年、製品コスト低減のため、設備コスト低減が強く望まれており、部品費低減や設計・調整工数の低減が必須となっている。コスト低減のためには、ハード的アプローチとして使用部品点数の削減（例えばＰＬＣ、視覚装置、操作盤の統合など）が有効である。また、ソフト的アプローチとしては、ソフトの汎用化・標準化（例えば、言語の統一など）が有効である。更に、システム的アプローチとしては、設備内で最も汎用的な装置であるロボットに機能を集約して設備をシンプル化することが有効であろう。
【０００９】
ところで、上記のようにロボットコントローラにＰＬＣの設備制御機能を搭載することを想定すると、そのコントローラにおいて、ロボットを含む各制御対象についての制御プログラム、或いは、各機能を実現するための複数の制御プログラムを搭載することになる。その場合、それらのプログラム間においてデータの授受を行うことになる。
例えば、特許文献２には、統合的な制御装置におけるソフトウエア構造として、各ユーザタスクＡ〜Ｄにおいてのみ有効であるローカル変数Ａ〜Ｄと、それらのタスクＡ〜Ｄにおいて共通に使用される、即ち何れのタスクからであってもデータの読み書きが可能な変数であるグローバル変数とを使用したものが開示されている。
【特許文献１】特開２００１−９２５１７号公報
【特許文献２】特開平６−３０１４１２号公報，図７参照
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、特許文献２に開示されているように、何れか２つのプログラム間において共有する変数をグローバル変数として使用した場合には、以下のような問題が発生することが想定される。即ち、上述したように統合的な制御装置を構成した場合は、多くのプログラムモジュールも一纏まりに搭載されることになる。そして、各プログラムモジュールは、複数の作成者によってコーディングされるが、その場合、プログラム間で使用されていたグローバル変数の名称が、重複するおそれがある。
【００１１】
また、例えば製造ラインの変更により制御対象の一部が入れ替わるなどした場合は、それに伴い制御装置のプログラムの一部を変更する必要があるが、その際には、前記制御装置が変更前に使用していたプログラムの一部も変更することになる。その場合も、新たに作成したプログラム内で使用したグローバル変数名が、作成済のプログラム内で使用されているグローバル変数の名称が重複することがある。
【００１２】
更に、図１３にはより具体的な例を示す。既存の設備Ｘにおいては、ロボットＸのプログラム（ＡＸ１，ＡＸ２）間で共通するグローバル変数と、搬送装置Ｘのプログラム（ＢＸ１、ＢＸ２）間で共通するグローバル変数とを使い分けており、もう１つの既存の設備Ｙ側においても、グローバル変数を同様に使用していたとする。そして、これらで使用されていたロボットＸのプログラム（ＡＸ１，ＡＸ２）、搬送装置（コンベア）Ｙのプログラム（ＢＹ１、ＢＹ２）とを、新たな設備Ｚのプログラムに転用する場合を想定すると、グローバル変数の名称が重複することで、両者に割り当てていた領域のアドレスが干渉することも考えられる。以上のような場合には、変数名を変更する処置が必要となる。
【００１３】
変数名の変更は、プログラムの細部を理解した上で行う必要があるため非常に面倒である。また、一部の変更を忘れても気付きにくくデバッグを繰り返すこともあり、プログラムの転用を効率よく行うことができないという問題がある。
本発明は上記事情に鑑みてなされたものであり、その目的は、１つ以上の工業用ロボットを含む複数の制御対象機器を統括的に制御する制御装置について、制御対象の一部が変更された場合でも、既存のプログラムを容易に転用して対応することが可能となるプログラム作成装置，及び前記制御装置，並びにそれらの装置を構成するＣＰＵによって実行されるコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【００１４】
請求項１記載のプログラム作成装置によれば、プログラム管理手段は、プログラム記憶手段に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理する。そして、変数管理手段は、変数記憶手段に記憶される複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、プログラム管理手段によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理する。
【００１５】
即ち、複数のプログラム間で共通に参照可能な変数の有効範囲を、プログラム管理手段によって管理される制御プログラムのグループ内に限定することができる。従って、従来のようにグローバル変数を使用する場合とは異なり、複数のプログラムを多数のプログラマが作成する場合でも、共通変数の名称を作成段階で管理して重複することを回避する必要がなくなる。また、制御対象機器の変更などに応じて、既存のプログラムを流用したり或いはプログラムの一部を変更することで新たな構成に対応した制御プログラム群を用意する場合も、同様に共通変数の重複が問題にならなくなる。
【００１６】
請求項２記載のプログラム作成装置によれば、変数管理手段は、入れ子構造に階層化された複数のグループ内の上位グループで定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理する。従って、共通変数の参照可能範囲をより柔軟に設定することができる。
【００１７】
請求項３記載の制御装置によれば、変数管理手段は、プログラム実行手段による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、変数記憶手段における対応する変数群領域にて変数値を管理する。従って、請求項１又は２記載のプログラム作成装置によって作成された制御プログラムを、ローカル変数，グループ変数を機能通りに使い分けて実行することができる。
【００１８】
請求項４記載の制御装置によれば、請求項１記載のプログラム作成装置の機能と、請求項２記載の制御装置の機能とを併せ持つので、制御装置単体によって、制御プログラムを実行可能な形式に変換してプログラム管理及び変数管理を行い、且つ、変換したプログラムを実行することが可能となる。
請求項５記載の制御装置によれば、請求項４記載の制御装置に対して、請求項２記載のプログラム作成装置と同様の機能を付与することができる。
【発明を実施するための最良の形態】
【００１９】
（第１実施例）
以下、本発明の第１実施例について図１乃至図８を参照して説明する。尚、図１１及び図１２と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。図１は、図１１に示す生産ライン１と同様の構成を制御対象機器として、それらを本発明のセル設備制御装置（プログラム作成装置）２１によって制御する場合の構成を機能ブロック図で示すものである。尚、「セル」とは、生産ライン１のようにロボット３を中心として構成される一纏まりの加工処理を行なう単位を言う。
【００２０】
セル設備制御装置２１は、コントローラ１２，１３，１７及びＰＬＣ１５に代わり、生産ライン１を構成するコンベア２，ロボット３，加工機４，部品供給装置７，カメラ１６，ＩＤタグのリーダライタ１９などを制御対象機器として統括的に制御するコントローラである。また、セル設備制御装置２１には、ティーチングペンダント２２やパーソナルコンピュータ（ＰＣ）２３が接続されており、ユーザは、これらを介して制御プログラムの作成を行ったり、入力操作や動作状況のモニタなどを行なうようになっている。
【００２１】
更に、セル設備制御装置２１は、具体的には図示しないが、ＣＰＵやメモリ，ハードディスク，Ｉ／Ｏなどから構成されている。そして、図１では、セル設備制御装置２１の内部機能をブロック化して示しているが、これらは上記のハードウエアとソフトウエアとによって実現される機能である。更にまた、セル設備制御装置２１は、各制御対象機器を統括的に制御するのみならず、その制御を行うためのプログラムを作成する機能をも備えている。
【００２２】
以下、セル設備制御装置２１の構成について説明する。セル設備制御装置２１は、ティーチングペンダント２２やパーソナルコンピュータ２３とはマンマシンＩ／Ｆ（インターフェイス）通信部２４を介して例えばシリアル通信を行うようになっている。マンマシンＩ／Ｆ通信部２４を介して受信したデータは、データ管理部２５に与えられる。プログラム作成部（プログラム作成手段）２６はプログラムエディタであり、ユーザは、セル設備制御装置２１側のプログラム作成部２６を起動して、プログラムの作成を行なうことも可能である。
【００２３】
コンパイル部（プログラム変換手段，コンピュータプログラム）２７は、プログラム作成部２６において作成されたプログラムを、プログラム実行部（プログラム実行手段，コンピュータプログラム）２８が直接実行可能な形式（オブジェクト）に変換（コンパイル）するものである。プログラム管理部（プログラム管理手段，コンピュータプログラム）２９は、コンパイル部２７が変換を行う過程において、各制御プログラムを、ユーザの指定に応じたプログラムグループ（ＰＧ）に分類し、メモリ３０のプログラム記憶領域（プログラム記憶手段）３１に配置するようになっている。
【００２４】
また、変数管理部（変数管理手段，コンピュータプログラム）３２も、コンパイル部２７が変換を行う過程において、各制御プログラム中で定義されている変数の属性に応じて、各変数をグローバル／グループ／ローカルの変数領域３３〜３５に分類し、メモリ３０の変数記憶領域（変数記憶手段）３６に配置するようになっている。尚、この変数記憶領域３６には、プログラムを実行することで各変数を介して読書きされたデータ値も格納されるようになっており、プログラムの実行時には、変数記憶領域３６が参照される。
【００２５】
ここで、プログラムグループとしては、制御対象機器の種類に応じてロボット制御ＰＧ３７，搬送装置制御ＰＧ３８，部品供給制御ＰＧ３９，ＩＤ読書き制御ＰＧ４０，加工機Ｉ／Ｆ制御ＰＧ４１，視覚装置制御ＰＧ４２などに分類される。即ち、これらのプログラムグループは、基本的に同種類の制御対象機器を制御するためのプログラムモジュールの集合である。尚、具体的には図示しないが、全体を統括的に制御するためのメインプログラムは別に存在しており、上記のプログラムグループ３７〜４２に属するプログラムは、メインプログラムを実行する際に必要に応じて呼び出され、サブルーチン的に利用されるようになっている。
【００２６】
プログラム実行部２８は、制御プログラムを実行する場合には、プログラム管理部２９を介してメモリ３０より実行対象のプログラムを読み出して実行する。その際には、変数管理部３２を介して各プログラム中で使用されている変数の属性を判別して実行するようになっている。プログラム実行部２８がロボット制御ＰＧ３７に属するプログラムを実行すると、ロボット制御部４３を介してロボット３が制御される。また、プログラム実行部２８がその他のＰＧ３８〜４２に属するプログラムを実行すると、外部機器通信部４４を介してコンベア２や部品供給装置７等が制御される。
【００２７】
尚、上記構成において、セル設備制御装置２１の制御プログラムは、例えば、パーソナルコンピュータ２３において作成されてコンパイルされる場合も想定している。即ち、セル設備制御装置２１のコンパイル部２７，プログラム管理部２９及び変数管理部３２の機能をパーソナルコンピュータ２３側に搭載しておけば、同様の形態でプログラム作成が可能である。その場合には、パーソナルコンピュータ２３よりマンマシンＩ／Ｆ通信部２４を介して実行形式のプログラムがセル設備制御装置２１側に転送され、メモリ３０のプログラム記憶領域３１に記憶される。また、コンパイルされた結果として管理されるプログラム中の各変数は、変数記憶領域３６に記憶される。
【００２８】
次に、本実施例の作用について図２乃至図６も参照して説明する。図２には、ユーザがセル設備制御装置２１側のプログラム作成部２６を起動して、制御プログラムを作成する場合に、変数の定義を行う手順を説明するためのフローチャートである。ユーザは、作成中のプログラム内で使用する変数が、全てのプログラムで共通に使用する変数か否かを判断し（ステップＡ１）、共通に使用する変数であれば（「ＹＥＳ」）、定義済みのグローバル変数を利用する（ステップＡ４）。ステップＡ４の実行後はステップＡ１１に移行する。即ち、これは従来より使用されているグローバル変数である。
【００２９】
一方、ステップＡ１において、対象となる変数が全プログラムで共通に使用されるものでない場合は（「ＮＯ」）、プログラムがグループ化されているか否かを判断する（ステップＡ５）。グループ化されている場合は（「ＹＥＳ」）、当該変数が、作成中のプログラムが属するグループ内で共通に使用する変数か否かを判断し（ステップＡ６）、共通に使用する変数であれば（「ＹＥＳ」）、当該変数が、前記グループに属する他のプログラムにおいて既に定義済みか否かを判断する（ステップＡ７）。そして、定義済みでなければ（「ＮＯ」）当該変数をグループ変数として定義し（ステップＡ８）、定義済みであれば（「ＹＥＳ」）、定義済みのグループ変数の利用を宣言する（ステップＡ９）。ステップＡ８，Ａ９の実行後はステップＡ１１に移行する。
【００３０】
また、ステップＡ５又はＡ６で「ＮＯ」と判断した場合は、当該変数は作成中のプログラムにおいてのみ有効なローカル変数として定義する（ステップＡ１０）。それから、次に使用する変数があるかどうかを判断し（ステップＡ１１）、変数があれば（「ＹＥＳ」）ステップＡ１に戻り、変数がなければ（「ＮＯ」）終了する。
【００３１】
例えば、プログラム中において、ローカル，グループの各変数をＡＡ，ＢＢとすると、夫々以下のように記述することで定義する。
ローカル変数    ：                ＤＥＦＩＮＴ  ＡＡ
グループ変数    ：  ＧＲＯＵＰ    ＤＥＦＩＮＴ  ＢＢ
また、ステップＡ９において、上記の変数ＢＢのように定義済みのグループ変数の利用を宣言する場合には、例えば、以下のように記述する。
ＥＸＴＥＲＮ    ＤＥＦＩＮＴ  ＢＢ
以上のように変数を定義して記述された各制御プログラムは、メモリ３０のプログラム記憶領域３１に配置される。
【００３２】
次に、図３は、ユーザが記述作成したプログラムを、コンパイル部２７によって実行形式に変換する場合に、変数管理部３２が行う変数管理処理の内容を示すフローチャートである。変数管理部３２は、ステップＢ１，Ｂ２において変数がグローバル変数，グループ変数の何れであるかを判断する。グローバル変数であれば（ステップＢ１，「ＹＥＳ」）、当該変数を変数記憶領域３６のグローバル変数領域３３に登録すると共に、グローバル変数の識別コードを割り当てる（ステップＢ５）。また、グループ変数であれば（ステップＢ２，「ＹＥＳ」）、当該変数を、変数記憶領域３６において所属しているプログラムグループの変数領域３４に登録すると共に、グループ変数の識別コードを割り当てる（ステップＢ６）。尚、ステップＢ５，Ｂ６の実行後はステップＢ４に移行する。
【００３３】
また、変数がグローバル変数，ローカル変数の何れでもない場合は（ステップＢ２，「ＮＯ」）、当該変数はローカル変数であるから、変数記憶領域３６において所属しているプログラムのローカル変数領域３５に登録すると共に、ローカル変数の識別コードを割り当てる（ステップＢ３）。それから、次に宣言されている変数があれば（ステップＢ４，「ＹＥＳ」）ステップＢ１に戻り、変数がなければ（「ＮＯ」）処理を終了する。
【００３４】
次に、図４は、プログラム実行部２８が実行形式に変換されたプログラムを実行する場合に、変数管理部３２によって行われる変数処理の内容を示すフローチャートである。プログラム実行部２８は、１行分の識別コードを認識すると（ステップＣ１）、変数コードがあるか否かを判断する（ステップＣ２）。変数コードでなければ（「ＮＯ」）、その他のコードについての判断を行い（ステップＣ７）、ステップＣ６に移行する。
【００３５】
変数コードであれば（ステップＣ２，「ＹＥＳ」）、先ず当該変数がグローバル変数かどうか判断し（ステップＣ３）、グローバル変数であれば（「ＹＥＳ」）、変数記憶領域３６のグローバル変数領域３３より、当該変数に応じたデータを取得する（ステップＣ８）。また、当該変数がグローバル変数ではなくグループ変数であれば（ステップＣ４，「ＹＥＳ」）、変数記憶領域３６のグループ変数領域３４より、当該変数に応じたデータを取得する（ステップＣ９）
また、当該変数がグループ変数でなければ（ステップＣ４，「ＮＯ」）ローカル変数であるから、変数記憶領域３６のローカル変数領域３５より、当該変数に応じたデータを取得する（ステップＣ５）。それから、次の識別コードがあれば（ステップＣ６，「ＹＥＳ」）ステップＣ１に戻り、識別コードがなければ（「ＮＯ」）処理を終了する。
【００３６】
図５は、プログラムグループのイメージと、プログラムソースの具体的な記述例を示す。ＬＩＢ１，ＬＩＢ２は夫々独立したプログラムグループであり、ＬＩＢ１内のプログラムＳＵＢ１内においてグループ変数ＢＢが定義され、同グループ内のプログラムＳＵＢ２内では、「ＥＸＴＥＲＮ」により前記グループ変数ＢＢの利用を宣言している。また、ＬＩＢ２内のプログラムＳＵＢ１２，ＳＵＢ２２間においても同様にグループ変数ＢＢが定義されているが、夫々のグループ内でのみ有効な変数であるから名称が重複していても何等問題はない。
【００３７】
図６は、グループ変数の具体的な使用例を示すものである。図６において、カメラ１６についてのプログラムグループである視覚装置制御ＰＧ４２に、自動運転プログラム４２Ａ，操作盤プログラム４２Ｂがあるとする。自動運転プログラム４２Ａでは、ワークを検出すると、セル設備制御装置２１がリードコマンドをカメラ１６に発行し、カメラ１６の計測データを取得する。ここでは例えば、ワークに印字されている文字を検査するため、マスタ文字（基準となる文字位置）とのＸ，Ｙ座標のずれ量と回転角度を取得する。そして、自動運転プログラム４２Ａは、取得した計測データを、視覚装置制御ＰＧ４２に対応するグループ変数領域３４に格納する。
上記の処理が行われた後に、操作盤プログラム４２Ｂが起動され、ティーチングペンダント２２の操作盤画面において上記計測データを表示する必要がある場合、操作盤プログラム４２Ｂは、上記グループ変数領域３４におけるグループ変数を参照して、ティーチングペンダント２２の画面に計測データを表示する。
【００３８】
また、図７は、ローカル／グループ／グローバルの各変数の関係を、モデル的に示すものである。ここではＡ，Ｂ，Ｃの３つのプログラムグループがあり、各グループには、夫々２つのプログラム（Ａ１，Ａ２），（Ｂ１，Ｂ２），（Ｃ１，Ｃ２）が属している。この場合、ローカル変数は、各プログラムＡ１〜Ｃ２の夫々においてのみ参照される変数であり、グループ変数は、各プログラムグループＡ，Ｂ，Ｃの夫々において共通に参照される変数である。そして、グローバル変数は、全てのプログラムＡ１〜Ｃ２により共通に参照される変数である。
【００３９】
更に、図８は、図１３相当図であり、２つの既存設備Ｘ，Ｙにおいて使用していたプログラムを転用して、新たな設備Ｚにて使用するプログラムを作成する場合を示す。この場合、ロボットＸのプログラム（ＡＸ１，ＡＸ２）間で共通するグループ変数と、搬送装置Ｙのプログラム（ＢＹ１、ＢＹ２）間で共通するグループ変数とは、夫々のプログラムグループ内でのみ有効であるから、新たな設備Ｚに転用した場合でも、図１３に示すケースのように変数に割り当てていた領域のアドレスが干渉することはない。
【００４０】
以上のように本実施例によれば、セル設備制御装置２１のプログラム管理部２９は、プログラム記憶領域３２に記憶される複数の制御プログラムを共通する属性毎にグループにまとめ、プログラム全体を複数のグループに分けて管理する。そして、変数管理部３２は、変数記憶領域３６に記憶される複数の変数を、ユーザの指定に応じて、各制御プログラム内だけ有効となるローカル変数群と、プログラム管理部によって管理されるグループ内だけ有効となるグループ変数群とに分けて管理する。
【００４１】
即ち、複数のプログラム間で共通に参照可能な変数の有効範囲を、プログラム管理部２９によって管理される制御プログラムのグループ内に限定することができる。従って、従来のようにグローバル変数を使用する場合とは異なり、複数のプログラムを多数のプログラマが作成する場合でも、グループ変数の名称を作成段階で管理して重複することを回避する必要がなくなる。また、制御対象機器の変更などに応じて、既存のプログラムを流用したり或いはプログラムの一部を変更することで新たな構成に対応した制御プログラム群を用意する場合も、同様に共通変数の重複が問題にならなくなる。従って、プログラムの作成効率、或いは既存のプログラムを転用する場合の作業効率を大きく向上させることができる。
【００４２】
即ち、グローバル変数はシステム側で定義されており、変数の各データ型に対応する宣言数はパラメータで決まっており、ある範囲を持つ。また、各プログラマが制御プログラムを作成する場合、管理が容易となるようにグローバル変数を連続的に取るケースが殆どである。そのため、限定されたグローバル変数領域を複数のプログラムが使用する場合、図１３に示したような干渉が発生する可能性がある。
【００４３】
これに対して、グループ変数は、グループ変数領域３４内において（図１では１つにまとめられているが）所属するプログラムグループ毎に格納される。従って、異なるグループ変数については同じパス（プログラムグループのルートからのアドレス）が存在せず、［ルート→所属プログラムグループ→グループ変数名］が１対１で決まることになるため、変数間の干渉が発生しないのである。
【００４４】
また、変数管理部３２は、プログラム実行部２８による実行の過程において、使用される変数が何れの変数群に属しているかを判定し、その判定結果に応じて、変数記憶領域３６における対応する変数群領域にて変数値を管理するので、ローカル変数，グループ変数を機能通りに使い分けて制御プログラムを実行することができる。そして、セル設備制御装置２１によれば、当該制御装置２１単体によって、制御プログラムを実行可能な形式に変換してプログラム管理及び変数管理を行い、且つ、変換したプログラムを実行することが可能となる。
【００４５】
（第２実施例）
図９及び図１０は本発明の第２実施例を示すものであり、第１実施例と同一部分には同一符号を付して説明を省略し、以下異なる部分についてのみ説明する。第２実施例では、プログラムグループを入れ子構造に階層化して定義することを可能としており、それに伴って、グループ変数についても、階層化されている上位グループと下位グループとの間において有効となるようにしたものである。
【００４６】
即ち、図９に示すように、上位のプログラムグループＡに対して、下位のプログラムグループＢ，Ｃ，Ｄが属するように定義されている。この場合、グループ変数ＧＢ，ＧＣ，ＧＤは、第１実施例と同様に夫々のプログラムグループＢ，Ｃ，Ｄ内に属するプログラム間でのみ有効な変数である。これに対してグループ変数ＧＸは、プログラムグループＡ，Ｂ，Ｃの何れかに属するプログラム間でも有効となるものである。
【００４７】
図１０は、第１実施例における図３のコンパイル処理時において、変数管理部３２がステップＢ６にて行う処理を示すフローチャートである。変数管理部３２は、先ず、変換対象のプログラム内に「ＥＸＴＥＲＮ」宣言があるか否かを判断する（ステップＤ１）。「ＥＸＴＥＲＮ」宣言がなければ（「ＮＯ」）グループ変数を使用していないということであるから処理を終了する。
【００４８】
ステップＤ１において「ＥＸＴＥＲＮ」宣言があれば（「ＹＥＳ」）、同じグループ内の他のファイル（プログラムファイル）を開き（ステップＤ２）、そのプログラム内に「ＧＲＯＵＰ」宣言があるかどうかを判断する（ステップＤ３）。「ＧＲＯＵＰ」宣言がなければ（「ＮＯ」）同じグループ内の他のファイルがあるかどうかを判断し（ステップＤ４）、ファイルがあれば（「ＹＥＳ」）そのファイルについてステップＤ２，Ｄ３の処理を行なう。
【００４９】
一方、ステップＤ４において、同じグループ内の他のファイルがなければ（「ＮＯ」）、変数管理部３２は、当該グループの上位にグループが定義されているかどうかを判断する（ステップＤ５）。上位グループが存在すれば（「ＹＥＳ」）その上位グループに移動して（ステップＤ６）、上位グループ内のファイルについてステップＤ２，Ｄ３の処理を行なう。また、この時点で上位グループが存在しない場合は（「ＮＯ」）、「ＥＸＴＥＲＮ」宣言のみが存在し、「ＧＲＯＵＰ」宣言が存在しないというプログラムミスであるから、コンパイルエラーとして異常処理を行なう（ステップＤ９）。
【００５０】
以上の処理において何れかのファイル内に「ＧＲＯＵＰ」宣言が存在すれば、（ステップＤ３，「ＹＥＳ」）「ＥＸＴＥＲＮ」宣言された変数と「ＧＲＯＵＰ」宣言された変数との名称が同じか否かを判断し（ステップＤ７）、両者が同じであれば（「ＹＥＳ」）それらの変数同士を関連づける処理を行い（ステップＤ８）、ステップＤ１に戻る。また、両変数名が異なる場合は（「ＮＯ」）ステップＤ４に移行する。
【００５１】
以上のように第２実施例によれば、変数管理部３２は、入れ子構造に階層化された複数のグループ内の上位グループで定義されたグループ変数群に属する変数は、当該上位グループ及びその下位グループ内の制御プログラムでも参照可能となるように管理するので、グループ変数の参照可能範囲をより柔軟に設定することができる。
【００５２】
本発明は上記し且つ図面に記載した実施例にのみ限定されるものではなく、以下のような変形または拡張が可能である。
制御対象機器は、生産ライン１に限ることなく、少なくとも１つの工業用ロボットを含むものであれば、個別の応用形態に応じて適宜選択を行って実施すれば良い。
グローバル変数は、必要に応じて使用すれば良い。
セル設備制御装置２１の制御プログラムをパーソナルコンピュータ２３において作成しコンパイルする場合には、セル設備制御装置２１側には、プログラム作成部２６及びコンパイル部２７の機能は不要であり、実行形式に変換されたプログラムを実行するための機能部分だけを備えていれば良い。
プログラムの階層化は、３階層以上行っても良い。
【図面の簡単な説明】
【００５３】
【図１】本発明の第１実施例であり、セル設備制御装置の構成を中心として示す機能ブロック図
【図２】ユーザが制御プログラムを作成する場合に、変数の定義を行う手順を説明するためのフローチャート
【図３】プログラムをコンパイル部によって実行形式に変換する場合に、変数管理部が行う変数管理処理の内容を示すフローチャート
【図４】プログラム実行部が実行形式に変換されたプログラムを実行する場合に、変数管理部によって行われる変数処理の内容を示すフローチャート
【図５】プログラムソースの具体的な記述例を示す図
【図６】グループ変数の具体的な使用例を示す図
【図７】ローカル／グループ／グローバルの各変数の関係を、モデル的に示す図
【図８】２つの既存設備Ｘ，Ｙにおいて使用していたプログラムを転用して、新たな設備Ｚにて使用するプログラムを作成する場合を示す図
【図９】本発明の第２実施例を示す図７相当図
【図１０】図３のコンパイル処理時において、変数管理部がステップＢ６にて行う処理を示すフローチャート
【図１１】コンベアによって搬送されるワークを、工業用ロボットを用いて加工する生産ラインの一構成例を示す斜視図
【図１２】従来の制御系の構成を示す機能ブロック図
【図１３】図８相当図
【符号の説明】
【００５４】
図面中、２はコンベア（制御対象機器）、３はロボット（工業用ロボット，制御対象機器）、４は加工機（制御対象機器）、７は部品供給装置（制御対象機器）、１６はカメラ（制御対象機器）、２１はセル設備制御装置、２６はプログラム作成部（プログラム作成手段）、２７はコンパイル部（プログラム変換手段，コンピュータプログラム）、２８はプログラム実行部（プログラム実行手段，コンピュータプログラム）、２９はプログラム管理部（プログラム管理手段，コンピュータプログラム）、３１はプログラム記憶領域（プログラム記憶手段）、３２は変数管理部（変数管理手段）、３６は変数記憶領域（変数記憶手段，コンピュータプログラム）を示す。
【図１】
2006099639.tif 000003
【図２】
2006099639.tif 000004
【図３】
2006099639.tif 000005
【図４】
2006099639.tif 000006
【図５】
2006099639.tif 000007
【図６】
2006099639.tif 000008
【図７】
2006099639.tif 000009
【図８】
2006099639.tif 000010
【図９】
2006099639.tif 000011
【図１０】
2006099639.tif 000012
【図１１】
2006099639.tif 000013
【図１２】
2006099639.tif 000014
【図１３】
2006099639.tif 000015