(57)【特許請求の範囲】
【請求項１】
並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群から、少なくとも１の機械制御プログラムを選択する機械制御プログラム選択部と、
選択された前記機械制御プログラムが使用するグローバル変数のリストであるグローバル変数リストを生成するグローバル変数リスト生成部と、
少なくとも、選択された前記機械制御プログラムと、前記グローバル変数リストを含むライブラリを生成するライブラリ生成部と、
を有する機械制御プログラム作成装置。
【請求項２】
選択された前記機械制御プログラムが使用する入出力のリストを生成する入出力リスト生成部をさらに有し、
前記ライブラリ生成部は、さらに、前記入出力のリストを含むライブラリを生成する請求項１に記載の機械制御プログラム作成装置。
【請求項３】
少なくとも、１の機械制御プログラムと、当該機械制御プログラムが使用するグローバル変数のリストであるグローバル変数リストを含むライブラリを読み込むライブラリ読み込み部と、
並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群に前記ライブラリに含まれる前記機械制御プログラムを追加する機械制御プログラム追加部と、
前記機械制御プログラム追加部が前記機械制御プログラムを追加する際に、前記グローバル変数リストに基いて、当該機械制御プログラムが使用するグローバル変数を、グローバル変数領域の未使用領域に割り当てるグローバル変数割り当て部と、
を有する機械制御プログラム作成装置。
【請求項４】
前記ライブラリはさらに、当該機械制御プログラムが使用する入出力のリストである入出力リストを含み、
前記機械制御プログラム追加部が前記機械制御プログラムを追加する際に、前記入出力リストに基いて、当該機械制御プログラムが使用する入出力を、入出力の未使用領域に割り当てる入出力割り当て部と、
を有する請求項３に記載の機械制御プログラム作成装置。
【請求項５】
前記機械制御プログラム追加部が前記機械制御プログラムを追加する際に、当該機械制御プログラムが制御する機器に関する情報を入力する機器情報入力部を有する請求項３又は４に記載の機械制御プログラム作成装置。
【請求項６】
複数の前記ライブラリを記憶するサーバから電気通信回線を通じて所望のライブラリをダウンロードするダウンロード部と、
ダウンロードされた前記ライブラリを、当該ライブラリに含まれる画像及び説明の少なくともいずれかを用いて一覧表示する一覧表示部と、
前記ライブラリ読み込み部により読み込むライブラリを一覧表示から選択するライブラリ選択部と、
を有する請求項３〜５のいずれかに記載の機械制御プログラム作成装置。
【請求項７】
並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群から、少なくとも１の機械制御プログラムを選択し、
選択された前記機械制御プログラムが使用するグローバル変数のリストであるグローバル変数リストを生成し、
少なくとも、選択された前記機械制御プログラムと、前記グローバル変数リストを含むライブラリを生成する、
ライブラリ生成方法。
【請求項８】
少なくとも、１の機械制御プログラムと、当該機械制御プログラムが使用するグローバル変数のリストであるグローバル変数リストを含むライブラリを読み込み、
並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群に前記ライブラリに含まれる前記機械制御プログラムを追加し、
前記機械制御プログラムを追加する際に、前記グローバル変数リストに基いて、当該機械制御プログラムが使用するグローバル変数を、グローバル変数領域の未使用領域に割り当てる、
機械制御プログラム追加方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械制御プログラム作成装置、ライブラリ生成方法、及び機械制御プログラム追加方法に関する。
【背景技術】
【０００２】
ＰＬＣ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｃｏｎｔｒｏｌｌｅｒ）等の機械制御装置において用いられる機械制御プログラムは、当該機械制御装置が制御しようとする機械全体の構成に応じて、都度専用で作成されるのが一般的である。
【０００３】
また、機械制御装置を用いて、１軸あるいは多軸の単純なサーボアクチュエータを直接制御することはなされているが、いわゆる逆運動学（Ｉｎｖｅｒｓｅ  ｋｉｎｅｍａｔｉｃｓ）演算を必要とする多関節ロボットを、専用のロボットコントローラを介することなく制御することはなされていない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の解決しようとする課題は、機械制御装置が制御する機械全体の一部分の構成に対応する機械制御プログラムを独立して再利用可能とすることである。
【０００５】
また、本発明の解決しようとする別の課題は、機械制御装置により、専用のロボットコントローラを介することなく多関節ロボットを制御することである。
【課題を解決するための手段】
【０００６】
本発明の一側面に係る機械制御プログラム作成装置は、並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群から、少なくとも１の機械制御プログラムを選択する機械制御プログラム選択部と、選択された前記機械制御プログラムが使用するグローバル変数のリストを生成するグローバル変数リスト生成部と、少なくとも、選択された前記機械制御プログラムと、前記グローバル変数リストを含むライブラリを生成するライブラリ生成部と、を有する。
【０００７】
また、本発明の別の一側面に係る機械制御プログラム作成装置は、少なくとも、１の機械制御プログラムと、当該機械制御プログラムが使用するグローバル変数のリストであるグローバル変数リストを含むライブラリを読み込むライブラリ読み込み部と、並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群に前記ライブラリに含まれる前記機械制御プログラムを追加する機械制御プログラム追加部と、前記ライブラリ追加部が前記機械制御プログラムを追加する際に、前記グローバル変数リストに基いて、当該機械制御プログラムが使用するグローバル変数を、グローバル変数領域の未使用領域に割り当てるグローバル変数割り当て部と、を有する。
【０００８】
また、本発明の別の一側面に係る機械制御システムは、複数の機械制御プログラムを並列に又は連続して実行する機械制御装置と、前記機械制御装置に接続された少なくとも１つの機械モジュールと、前記機械制御装置に記憶された、前記機械モジュールに対応付けられる少なくとも１の機械制御プログラムを含む２以上の機械制御プログラムと、を有し、前記少なくとも１の機械制御プログラムは、当該機械制御プログラムが使用するグローバル変数の値を、他の機械制御プログラムが書き換えることにより制御される。
【０００９】
また、本発明の別の一側面に係るライブラリ生成方法は、並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群から、少なくとも１の機械制御プログラムを選択し、選択された前記機械制御プログラムが使用するグローバル変数のリストを生成し、少なくとも、選択された前記機械制御プログラムと、前記グローバル変数リストを含むライブラリを生成する。
【００１０】
また、本発明の別の一側面に係る機械制御プログラム追加方法は、少なくとも、１の機械制御プログラムと、当該機械制御プログラムが使用するグローバル変数のリストであるグローバル変数リストを含むライブラリを読み込み、並列に又は連続して実行される複数の機械制御プログラムを含む機械制御プログラム群に前記ライブラリに含まれる前記機械制御プログラムを追加し、前記機械制御プログラムを追加する際に、前記グローバル変数リストに基いて、当該機械制御プログラムが使用するグローバル変数を、グローバル変数領域の未使用領域に割り当てる。
【００１１】
また、本発明の別の一側面に係る制御方法は、複数の機械制御プログラムを並列に又は連続して実行する機械制御装置と、前記機械制御装置に接続された少なくとも１つの機械モジュールと、前記機械制御装置に記憶された、前記機械モジュールに対応付けられる少なくとも１の機械制御プログラムを含む２以上の機械制御プログラムと、を有する機械制御システムの制御方法であって、前記少なくとも１の機械制御プログラムを、当該機械制御プログラムが使用するグローバル変数の値を、他の機械制御プログラムが書き換えることにより制御する。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施形態に係る機械制御プログラム作成装置及び機械制御システムを含む物理的な全体構成例を示す概略図である。
【図２】本発明の実施形態に係る機械制御プログラム作成装置の物理的な構成例を示す図である。
【図３】本発明の実施形態に係る機械制御プログラム作成装置及び機械制御システムの機能的な構成例を示す機能ブロック図である。
【図４】機械制御装置において実行される機械制御プログラムの配置と動作を説明する図である。
【発明を実施するための形態】
【００１３】
図１は本発明の実施形態に係る機械制御プログラム作成装置１及び機械制御システム１００を含む物理的な全体構成例を示す概略図である。
【００１４】
機械制御システム１００は機械制御装置２及び、機械制御装置２と接続され、機械制御装置２により制御される少なくとも１つの機械モジュール３を含む。ここで、機械制御装置とは、機械要素を電子的・電気的に制御する機器であり、具体的には、いわゆるＰＬＣが該当する。また、機械要素は、機械制御装置に接続され制御される物理的な要素の意味であり、具体的には、サーボモータやステップモータ等のアクチュエータ、それらのコントローラ、スイッチやランプ、ソレノイドや油空圧バルブ等の各種自動化機器が該当する。また、機械モジュールは、機械要素であって、単純なＯＮ／ＯＦＦでない高度な制御を要する機械装置の意味である。例えば、サーボ軸や、サーボモータを使用した多関節ロボット、画像認識を行うビジョンコントローラなどが機械モジュールに該当する。一方で、単純なＯＮ／ＯＦＦにより制御されるスイッチやランプ、ソレノイド等は、本明細書では機械モジュールとしては取り扱わない。本実施形態の例では、機械モジュール３として、２軸のいわゆるスカラロボット（水平多関節ロボット）が示されている。機械制御システムは、機械制御装置と、かかる機械制御装置に接続され制御される機械要素を一まとまりの系として取り扱う際の呼称である。
【００１５】
また、ここで示した機械制御システム１００には、さらに、機械要素としてＧＵＩデバイス４が含まれており、ＧＵＩデバイス４は機械制御装置２と接続されている。ＧＵＩデバイス４は、機械制御システム１００を操作するオペレータにＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）を提供するものであり、ここではタッチパネルである。ＧＵＩデバイスもまた、機械モジュールの１種である。
【００１６】
本実施形態の例に示す機械制御システム１００は、ここで示した機械モジュール３及びタッチパネル４以外の１又は複数の機械要素をさらに含むものであってよいが、図示及び説明が煩雑となるのを避けるため省略している。
【００１７】
機械制御プログラム作成装置１は、機械制御装置２が実行する機械制御プログラムを作成し、作成した機械制御プログラムを機械制御装置２に転送する。機械制御プログラム作成装置１はさらに、機械制御システム１００の状態のモニタリングや、タッチパネル４を代替する用途に用いられてもよい。機械制御プログラム作成装置１は、必要に応じて機械制御装置２に接続すればよく、常に機械制御装置２に接続されている必要はない。また、機械制御プログラム作成装置１は、インターネットなどの電気通信回線によるネットワークＮに接続可能であり、ネットワークＮを介して後述するサーバ５と情報通信を行うことができる。
【００１８】
機械制御プログラム作成装置１としては一般的なコンピュータを用いてよく、本実施形態においても、図２に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１ａ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１ｂ、外部記憶装置１ｃ、ＧＣ（Ｇｒａｐｈｉｃｓ  Ｃｏｎｔｒｏｌｌｅｒ）１ｄ、入力デバイス１ｅ及びＩ／Ｏ（Ｉｎｐｕｒ／Ｏｕｔｐｕｔ）１ｆがデータバス１ｇにより相互に電気信号のやり取りができるよう接続されている一般的なコンピュータを用いている。ここで、外部記憶装置１ｃはＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）やＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の静的に情報を記録できる装置である。またＧＣ１ｄからの信号はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）やいわゆるフラットパネルディスプレイ等の、使用者が視覚的に画像を認識するモニタ１ｈに出力され、画像として表示される。入力デバイス１ｅはキーボードやマウス、タッチパネル等の、ユーザが情報を入力するための機器であり、Ｉ／Ｏ１ｆは機械制御プログラム作成装置１が外部の機器と情報をやり取りするためのインタフェースである。コンピュータを機械制御プログラム作成装置１として機能させるためのアプリケーションプログラムは外部記憶装置１ｃにインストールされ、必要に応じてＲＡＭ１ｂに読みだされてＣＰＵ１ａにより実行される。また、かかるプログラムは、適宜の光ディスク、光磁気ディスク、フラッシュメモリ等の適宜のコンピュータ可読情報記録媒体に記録されて提供されても、インターネット等の情報通信回線を介して提供されてもよく、さらに、Ｉ／Ｏ１ｆを介して外部のネットワークに接続されたサーバにより機械制御プログラム作成装置１としての機能が提供される、いわゆるクラウドコンピューティングにより提供されてもよい。
【００１９】
なお、本明細書では、機械制御プログラムという語を、機械制御装置により実行され、機械要素を制御するためのコンピュータプログラムの意で用いる。機械制御プログラムの代表的なものとして、ＩＥＣ６１１３１−３に規定されるＬＤ（ラダーロジック）、ＳＦＣ（シーケンシャルファンクションチャート）、ＦＢＤ（ファンクションブロックダイアグラム）、ＳＴ（ストラクチャードテキスト）及びＩＬ（インストラクションリスト）が挙げられる。本実施形態に係る機械制御装置２では、基本的に機械制御プログラムとして基本的にＬＤを用いている。
【００２０】
図１に戻り、本実施形態では、機械モジュール３であるスカラロボットは、ユーザが工場Ｆにより製造された部品を個別に購入し、組み立てることができる。ここで示した例では、機械モジュール３であるスカラロボットは、当該スカラロボットを構成する土台部品３ａ、第１アーム部品３ｂ、第２アーム部品３ｃを個別に購入し、組み立てたものである。ロボットを構成する各部品は、動力源であるサーボモータなどのアクチュエータと構造部材を含むものであってよい。この例では、第１アーム部品３ｂ、第２アーム部品３ｃは、それぞれ、サーボモータと、構造部材であるアームを含むものである。また、第２アーム部品３ｃはエンドエフェクタとなるシリンダをその先端に備えている。
【００２１】
そして、工場Ｆは、用途や要求に応じた種々の部品を提供してよい。例えば、ロボットに用いるアーム部品であっても、モータの容量や、アーム長、さらには先端に備えられたエンドエフェクタが異なる様々なものが提供される。このようにすることにより、ユーザは、想定する用途や要求に応じて自由に部品を組み合わせ、所望の性能を有する機械モジュール３を得ることができる。工場Ｆから提供される部品は、この例で示したスカラロボットに関するものだけでなく、他の形式のロボット、例えば垂直多関節ロボットやガントリ、パラレルリンクロボットに関するものであってもよいし、ロボット以外の機械モジュール、例えば、ビジョンコントローラに用いるカメラや照明であってもよい。
【００２２】
サーバ５は、後述するように、工場Ｆにより提供される各種部品や、それら部品を組み立てることにより得られる機械モジュール等に関するライブラリ（後述する）を記憶しており、機械制御プログラム作成装置１が電気通信回線を通じて必要なものをダウンロードすることができるようになっている。
【００２３】
図３は本発明の実施形態に係る機械制御プログラム作成装置１の機能的な構成例を示す機能ブロック図である。本図に示す各機能ブロックは、上述の機械制御プログラム作成装置１の物理的構成を用いて、例えば、ＣＰＵ１ａにより所定のプログラムを実行したり、ＲＡＭ１ｂや外部記憶装置１ｃに所定の情報を記憶する領域を割り当てたりすることにより仮想的に実現されるものを含み、すなわち、ソフトウェアにより実現される機能を個別に示したものを含んでいる。従って、本図に示す機能ブロックは必ずしも機械制御プログラム作成装置１の物理的構成や、機械制御プログラム作成装置１等が実行するプログラム自体が機能ブロック毎に区分されることを意味しない。また、本図には機械制御プログラム作成装置１が有する全ての機能が示されているわけではなく、本発明と技術的関連の低い部分は省略されている。
【００２４】
機械制御プログラム作成装置１は、機械制御プログラムからライブラリを作成するライブラリ作成装置１０として機能する部分と、ライブラリを機械制御プログラムに追加するライブラリ追加装置２０として機能する部分とに大別することができる。また、機械制御プログラム作成装置１は、ライブラリを記憶するライブラリ記憶部４０、機械制御プログラムを記憶する機械制御プログラム記憶部５０を有している。
【００２５】
ここでまず、ライブラリの意味とその技術的意義について説明する。本実施形態に係る機械制御プログラム作成装置１が作成する機械制御プログラムが実行される機械制御装置２は、その機能として、複数の機械制御プログラムを並列に又は連続して実行することができる。すなわち、複数の機械制御プログラムを同時に実行するか、或いは、スキャン期間内で複数の機械制御プログラムを連続して実行することにより、疑似的に複数の機械制御プログラムを同時に実行する。そのため、機械制御システム１００において、関連の強い部分毎に機械制御プログラムを作成し、作成された複数の機械制御プログラムを並列に又は連続して実行するようにして全体の制御を実現することで、機械制御プログラムの開発効率を高めることができる。また、このような全体の制御を実現する複数の機械制御プログラムの集合を、プロジェクトと称している。
【００２６】
しかしながら、かかる複数の機械制御プログラムは、互いに完全に独立しているわけではなく、制御を連携させ、また機械制御プログラム間の干渉を防ぐため、あらかじめ、機械制御プログラム間のやり取りや、各機械制御プログラムが使用するグローバル変数や使用する入出力等の割り当てを定めておき、各機械制御プログラムはかかる定めに従って作成される。この定めは、作成しようとする機械制御システム１００毎のものであるので、作成された機械制御プログラムを個別に他の機械制御システムに転用するのは難しい。
【００２７】
ライブラリは、このような、特定の機械制御システムに固有の個別又は一群の機械制御プログラムを、特定の機械制御システムに依存することなく再利用できるようにするための情報であり、機械制御プログラムと、その機械制御プログラムを任意の機械制御システムに適合させるための適合情報、すなわち、前述の定めについての情報を含むものである。適合情報には、先ほど述べたように、ライブラリに含まれる機械制御プログラムが使用するグローバル変数のリストや、入出力のリストが含まれてよい。
【００２８】
そして、機械制御プログラム作成装置１は、特定の機械制御システム１００について作成された複数の機械制御プログラムのうち、１又は複数を切り出して、汎用のライブラリを作成する機能、すなわち、ライブラリ作成装置１０としての機能と、汎用のライブラリを特定の機械制御システム１００に適合させ、機械制御プログラムとして追加するライブラリ追加装置２０としての機能を備えるものである。なお、ライブラリ作成装置１０としての機能とライブラリ追加装置２０としての機能は、必ずしも同時に機械制御プログラム作成装置１に備えられずともよく、それぞれ別の装置或いはソフトウェアとして提供されてもよい。
【００２９】
＜ライブラリ作成装置としての構成＞
まず、機械制御プログラム作成装置１のうち、ライブラリ作成装置１０として機能する部分について説明する。
【００３０】
ライブラリ作成装置１０は、機械制御プログラム選択部１１、ライブラリ作成部１２、グローバル変数リスト作成部１３及び入出力リスト作成部１４を有する。
【００３１】
機械制御プログラム選択部１１は、機械制御プログラム記憶部５０に記憶された１又は複数の機械制御プログラムから、汎用のライブラリとして取り出そうとする少なくとも１の機械制御プログラムを選択する。この選択は、入力デバイス１ｅにより受け付けられたオペレータの指示に基いてなされてよい。
【００３２】
選択された機械制御プログラムは、ライブラリ作成部１２、グローバル変数リスト作成部１３及び入出力リスト作成部１４に受け渡される。グローバル変数リスト作成部１３は、機械制御プログラムを解析し、機械制御プログラムが使用しているグローバル変数のリストを作成する。一般的な機械制御装置では、変数は、レジスタ番号により区別されるため、ここでは、使用されているグローバルレジスタ番号のリストが作成されることになる。入出力リスト作成部１４は、同様に、機械制御プログラムを解析し、機械制御プログラムが使用している入出力のリストを作成する。ここで言う入出力は、機械制御プログラムが制御しようとする機械要素が使用する接点やコネクタの番号、ＩＰアドレス等の識別子等、機械制御プログラムが占有する電気接続或いは情報通信接続の識別情報である。
【００３３】
そして、ライブラリ作成部１２は、選択された機械制御プログラムに、グローバル変数リスト作成部１３により作成されたグローバル変数リスト及び、入出力リスト作成部１４により作成された入出力リストを付してライブラリを作成し、ライブラリ記憶部４０に記憶する。
【００３４】
このように作成されたライブラリは、機械制御プログラムの定めについての情報、特に、グローバル変数リスト及び入出力リストを含んでいるため、他のプロジェクトに追加しようとする際に、既に存在するグローバル変数や入出力と干渉することがないように、機械制御プログラム自体を書き換えることができる。そのため、ライブラリは特定の機械制御システムに依存せず、汎用としての特性を備える。なお、本実施形態では、機械制御プログラムの定めについての情報として、グローバル変数リスト及び入出力リストを作成するものとしたが、これ以外の情報、例えば機械制御プログラム自身の名称や、他の機械制御プログラムへの参照等のリストをさらに生成するものとしてもよい。
【００３５】
＜ライブラリ追加装置としての構成＞
続いて、機械制御プログラム作成装置１のうち、ライブラリ追加装置２０として機能する部分について説明する。
【００３６】
ライブラリ追加装置２０は、ダウンロード部２１、一覧表示部２２、ライブラリ選択部２３、ライブラリ読み込み部２４、機械制御プログラム追加部２５、グローバル変数割り当て部２６、入出力割り当て部２７及び機器情報入力部２８を有する。
【００３７】
ダウンロード部２１は、サーバ５に記憶されたライブラリのうち、所望のものをダウンロードし、ライブラリ記憶部４０に記憶する。ここで、ライブラリは、先のライブラリ作成装置１０で説明したように、機械制御プログラム作成装置１により作成してもよいが、後述するように、機械モジュール３のベンダーが、機械モジュール３の制御に適した機械制御プログラムをライブラリとして提供してもよい。このようにすることで、機械モジュール３の制御に適した機械制御プログラムを汎用のライブラリとして利用でき、既存のプロジェクトに容易に追加することができるようになり、ユーザが、機械モジュール３を制御する機械制御プログラムを自ら作成する手間を軽減できる。
【００３８】
一覧表示部２２は、ライブラリ記憶部４０に記憶されたライブラリの一覧を、モニタ１ｈに表示する。そして、ライブラリ選択部２３は、一覧表示されたライブラリを選択し、ライブラリ読み込み部２４に通知する。オペレータは、モニタ１ｈに表示されたライブラリの一覧を参照して、入力デバイス１ｅを操作して、必要なライブラリを選択し、プロジェクトに追加することができる。
【００３９】
ここで、ライブラリ、特に、サーバ５に記憶されたライブラリには、当該ライブラリ自身を説明する画像及び説明が含まれていてよい。この画像は例えば、ベンダーが提供する特定の機械モジュールに対応するものであれば、当該機械モジュールの画像である。又説明は、当該機械モジュールについての説明であってよく、本実施形態では例えば、「２軸スカラロボット制御用ライブラリ」等である。
【００４０】
そして、一覧表示部２２は、ライブラリを一覧表示する際に、この画像及び説明（又はその少なくともいずれか）を表示する。オペレータは、プロジェクトが必要とするライブラリがどのライブラリであるかを視覚的に確認し、選択することができる。もちろん、一覧表示しようとするライブラリに画像及び説明が含まれていない場合には、かかる画像及び説明は表示されなくともよい。
【００４１】
ライブラリ読み込み部２４は、選択されたライブラリを読み込み、機械制御プログラム追加部２５、グローバル変数割り当て部２６、入出力割り当て部２７及び機器情報入力部２８に受け渡す。
【００４２】
ここで、グローバル変数割り当て部２６は、ライブラリに含まれるグローバル変数リストに基いて、ライブラリに含まれる機械制御プログラムが使用しているグローバル変数を、現在のプロジェクトが使用していない未使用領域に割り当てる。より具体的には、ライブラリに含まれる機械制御プログラム中のグローバル変数名を、未使用のグローバル変数名に書き換える。この割り当ては、グローバル変数割り当て部２６がグローバル変数の未使用領域を自動的に探索して行ってもよいし、オペレータが割り当てる未使用領域を指定、例えば、グローバルレジスタ番号１００００以降を割り当てる、等の指定をすることによって行ってもよい。
【００４３】
入出力割り当て部２７も同様に、ライブラリに含まれる入出力リストに基いて、ライブラリに含まれる機械制御プログラムが使用している入出力を、現在のプロジェクトが使用していない入出力に割り当てる。この割り当てもまた、入出力割り当て部２７が自動で行ってもよく、オペレータが指定することによって行ってもよい。
【００４４】
機器情報入力部２８は、ライブラリに含まれる機械制御プログラムが制御する機器に関する情報である機器情報を入力する。この入力は、入力デバイス１ｅを用いて、オペレータが行ってよい。
【００４５】
ここで機器情報とは、機械制御プログラムが対象となる機器を制御する際に必要となる当該機器のパラメータ等の情報である。本実施形態のように、対象となる機器が２軸スカラロボットである機械モジュール３である場合には、各アームの長さや、エンコーダの分解能等が該当する。ここで、あるライブラリが、特定の構成の機械モジュール３にのみ対応しているのであれば、オペレータが機器情報を入力する必要は特にないと考えられる。ところが、本実施形態のように、機械モジュール３が種々の部品を組み立てて得られるものである場合には、使用される部品によって機械モジュール３の特性が変化すると考えられる。したがって、そのような場合には、構成によって変化する機械モジュール３の特性は機器情報として入力されなければならない。
【００４６】
機械制御プログラム追加部は、グローバル変数割り当て部２６によるグローバル変数の割り当て、入出力割り当て部２７による入出力の割り当て、さらに、機器情報入力部２８により入力された機器情報を反映させて、機械制御プログラムを既存のプロジェクトに適合させて機械制御プログラム記憶部に記憶する。このようにすることで、既存の機械制御プログラムを効率的に再利用し、プロジェクト作成の手間を大幅に軽減できる。
【００４７】
＜機械制御装置における機械制御プログラムの動作＞
図４は、機械制御装置２において実行される機械制御プログラムの配置と動作を説明する図である。
【００４８】
機械制御装置２は、複数の機械制御プログラムを記憶するプログラム記憶領域３０、グローバル変数記憶領域３１及び教示点記憶領域３２を少なくとも備えている。ここで、教示点記憶領域３２は、接続される機械モジュール３がロボットである場合の教示点その他のロボット制御情報を保持する領域である。この教示点記憶領域３２は、グローバル変数記憶領域３１の一部の領域を割り当てたものであってもよいし、図示のように、独立した領域として構成されていてもよい。本実施形態では、グローバル変数記憶領域３１とは別個に用意されたテーブル領域を教示点記憶領域３２として用いている。
【００４９】
そして、この例では、プログラム記憶領域３０に記憶された機械制御プログラムＢ及び機械制御プログラムＣが、ライブラリ追加装置２０により追加された機械制御プログラムである。機械制御プログラムＢに対しては、グローバル変数記憶領域３１の特定の領域である割り当て区間Ｂが、機械制御プログラムＣに対しては、グローバル変数記憶領域３１の特定の領域である割り当て区間Ｃがそれぞれ割りつけられている。機械制御プログラムＡは、ユーザにより作成された機械制御プログラムである。
【００５０】
ここで、機械制御プログラムＢ及び機械制御プログラムＣは、２軸スカラロボットである機械モジュール３に関してのライブラリに含まれていた機械制御プログラムであり、機械モジュール３に対応づけられるものである。そして、機械制御プログラムＡから機械制御プログラムＢ及び機械制御プログラムＣを呼びだすことにより、すなわち、機械制御プログラムＡが機械制御プログラムＢ及び機械制御プログラムＣを制御することにより、機械モジュール３を制御することを考える。この時、機械制御プログラムＣは、教示点から機械モジュール３の各モータ位置を与える、いわゆる逆運動学演算を行うルーチンであり、機械モジュール３の教示点は既に教示点記憶領域に与えられているものとする。
【００５１】
この時、機械制御プログラムＡは、直接機械制御プログラムＢを参照することはなく、機械制御プログラムＢに割り当てられた割り当て区間Ｂ中の特定のグローバル変数の値を書き換えることにより、間接的に機械制御プログラムＢを制御する。
【００５２】
この理由は、機械制御プログラムＢは機械制御プログラムＡを作成したユーザ自身が作成したものでない可能性があり、ユーザは機械制御プログラムＢの詳細な内容を知らないと考えられるため、機械制御プログラムＡから直接機械制御プログラムＢへアクセスすることは容易でないからである。これに対し、割り当て区間Ｂ中の特定のグローバル変数の値を機械制御プログラムＡが書き換えることは容易である。したがって、まず、機械制御プログラムＡは、割り当て区間Ｂ中の特定のグローバル変数の値を書き換える（図中矢印（１））。
【００５３】
そして、機械制御プログラムＢは割り当て区間Ｂ中の特定のグローバル変数の値を監視しており、この値が変化したことを受けて所定の処理を実行する（図中矢印（２））。ここでは、例えば、機械制御プログラムＡから、機械モジュール３を次の教示点位置まで移動させる指示がなされたと仮定する。
【００５４】
ここで、機械制御装置２は、一軸の単純なモータ位置を制御する機能は有しているが、いわゆるロボットコントローラが有しているような、座標変換の機能は有していない。そこで、機械制御プログラムＢは、機械制御プログラムＣの割り当て区間Ｃに、次の教示点を示す教示点番号を書き込み（図中矢印（３））、機械制御プログラムＣに逆運動学演算をさせる。
【００５５】
機械制御プログラムＣは、割り当て区間Ｃを監視しており、機械制御プログラムＢにより教示点番号が書き込まれたことにより処理を開始し（図中矢印（４））、教示点記憶領域３２から指定された教示点番号に対応する教示点座標を取得する（図中矢印（５））。機械制御プログラムＣは、逆運動学演算のルーチンであり、取得した教示点座標及び、機器情報入力部２８により入力された機器情報を用いて逆運動学演算を行い、各モータ位置を算出し、機械制御プログラムＢの割り当て区間Ｂに書き込む（図中矢印（６））。
【００５６】
機械制御プログラムＢは、割り当て区間Ｂに各モータ位置が書き込まれたことを検出し、機械モジュール３の各モータを指定位置となるように作動させ、制御する。
【００５７】
各機械制御プログラムを、以上説明したように、当該機械制御プログラムが使用するグローバル変数の値を、他の機械制御プログラムが書き換えることにより制御するものとすることで、ライブラリとして追加される機械制御プログラムの詳細を必要とすることなく、当該機械制御プログラムの制御ができる。そして、ライブラリとして追加される機械制御プログラムが接続される機械モジュールに対応付けられているから、機械モジュールを制御しようとするユーザは、当該機械モジュールに対応するライブラリを追加することにより、極めて容易に当該機械モジュールを制御することができる。
【００５８】
また、かかる機械制御プログラムが逆運動学演算のルーチンであることにより、本来かかる演算の機能を有していない機械制御装置２を、あたかもロボットコントローラであるかのように取り扱うことができ、専用のロボットコントローラを必要とすることなく多関節ロボットの制御が可能である。
【００５９】
＜教示点の教示方法＞
一般に、多関節ロボットはティーチングプレイバック方式のものであることが多く、多関節ロボットであるような機械モジュール３に対しては、その教示点の教示作業が必要である。しかしながら、機械制御装置２は、専用のロボットコントローラではないため、いわゆるティーチングペンダントは用意されていない。
【００６０】
そこで、本実施形態では、タッチパネルであるＧＵＩデバイス４をティーチングペンダントの代用として用いる。すなわち、ＧＵＩデバイス４上に一般的なティーチングペンダントに類似したインターフェースを表示し、ＧＵＩデバイス４をあたかもティーチングペンダントであるかのように用いて、オペレータの入力に基いて機械モジュール３を作動させ、教示点を入力していく。入力された教示点や、教示点に至る動作や軌跡の種別は、教示点記憶領域３２に記憶され、先の例では、機械制御プログラムＣにより参照され利用される。このようにして教示点データを作成することにより、特別のティーチングペンダントを必要とすることなく、汎用のＧＵＩデバイス４を用いて、ロボットである機械モジュール３の教示が可能となる。
【００６１】
なお、この教示作業は、図１に図示のＧＵＩデバイス４に換えて、機械制御プログラム作成装置１をティーチングペンダントとして用いて行ってもよい。この場合、機械制御プログラム作成装置１もまたＧＵＩを有する機器であるので、機械制御プログラム作成装置１をＧＵＩデバイスとして用いていることになる。さらには、機械制御プログラム作成装置１でシミュレーションを行い、いわゆるオフラインティーチングの手法により教示点データを作成するようにしてもよい。
【００６２】
以上、本発明に係る実施形態について説明したが、この実施形態に示した具体的な構成は一例として示したものであり、本発明の技術的範囲をこれに限定することは意図されていない。当業者は、これら開示された実施形態を適宜変形してもよく、本明細書にて開示される発明の技術的範囲は、そのようになされた変形をも含むものと理解すべきである。
【符号の説明】
【００６３】
１  機械制御プログラム作成装置、１ａ  ＣＰＵ、１ｂ  ＲＡＭ、１ｃ  外部記憶装置、１ｄ  ＧＣ、１ｅ  入力デバイス、１ｆ  Ｉ／Ｏ、１ｈ  モニタ、２  機械制御装置、３  機械モジュール、４  ＧＵＩデバイス、５  サーバ、１０  ライブラリ作成装置、１１  機械制御プログラム選択部、１２  ライブラリ作成部、１３  グローバル変数リスト作成部、１４  入出力リスト作成部、２０  ライブラリ追加装置、２１  ダウンロード部、２２  一覧表示部、２３  ライブラリ選択部、２４  ライブラリ読み込み部、２５  機械制御プログラム追加部、２６  グローバル変数割り当て部、２７  入出力割り当て部、２８  機器情報入力部、３０  プログラム記憶領域、３１  グローバル変数記憶領域、３２  教示点記憶領域、１００  機械制御システム、Ｆ  工場、Ｎ  ネットワーク。
【図１】
0006409755.tif 000002
【図２】
0006409755.tif 000003
【図３】
0006409755.tif 000004
【図４】
0006409755.tif 000005