(57)【特許請求の範囲】
【請求項１】
ロボットに設けられたＩ／Ｏ機器の動作を記述するマクロプログラムを起動時および／または実行時に自動的に作成するロボットマクロプログラム動的作成装置であって、
あらかじめ作成された教示データ中に機器名称と命令を見つけると、あらかじめ設定されたＩ／Ｏ制御パラメータ群の中から機器名称が一致するものを検索し、得られたＩ／Ｏ制御パラメータ中の機器タイプをあらかじめ定義されたＩ／Ｏモデル群と比較して対応するＩ／Ｏモデルを検索し、得られたＩ／Ｏモデル中のアドレスに前記検索されたＩ／Ｏ制御パラメータ中のアドレスを展開して目的とする一連の命令群を生成することにより、実際に使用される作業マクロプログラムを自動作成し、入力機器の故障が設定されると、対応する入力命令を一定時間の待ち命令に置き換えることを特徴とするロボットマクロプログラム動的作成装置。
【請求項２】
ロボットに設けられたＩ／Ｏ機器の動作を記述するマクロプログラムを起動時および／または実行時に自動的に作成するロボットマクロプログラム動的作成装置であって、
前記Ｉ／Ｏ機器の動作プログラムとして機器名称と命令のみをあらかじめ記述してなる前記ロボットの教示データを記憶する教示データ記憶手段と、
前記Ｉ／Ｏ機器の構成として機器名称、機器タイプおよび構成アドレスをあらかじめ設定してなるＩ／Ｏ制御パラメータを記憶するＩ／Ｏ制御パラメータ記憶手段と、
前記Ｉ／Ｏ機器のタイプ別の各種Ｉ／Ｏモデルを記憶するＩ／Ｏモデル記憶手段と、
前記教示データ記憶手段に記憶されている教示データ中に機器名称と命令を見つけると、前記Ｉ／Ｏ制御パラメータ記憶手段に記憶されているＩ／Ｏ制御パラメータ群の中から機器名称が一致するものを検索し、得られたＩ／Ｏ制御パラメータ中の機器タイプを前記Ｉ／Ｏモデル記憶手段に記憶されているＩ／Ｏモデル群と比較して対応するＩ／Ｏモデルを検索し、得られたＩ／Ｏモデル中のアドレスに前記検索されたＩ／Ｏ制御パラメータ中のアドレスを展開して目的とする一連の命令群を生成して、実際に使用される作業マクロプログラムを作成するマクロプログラム作成部と、を有し、
前記Ｉ／Ｏ制御パラメータには入力機器の故障の有無が含まれ、前記マクロプログラム作成部は、入力機器の故障が設定されているとき、対応する入力命令を一定時間の待ち命令に置き換えることを特徴とするロボットマクロプログラム動的作成装置。
【請求項３】
故障時の作業マクロプログラムが作成されたときでも、正常時の作業マクロプログラムは保存されていることを特徴とする請求項１または２記載のロボットマクロプログラム動的作成装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ロボットのいわゆるマクロプログラムを動的に、つまり起動時および／または実行時に自動作成することができるロボットマクロプログラム動的作成装置に関する。
【０００２】
【従来の技術】
産業用ロボットの中には、位置決め用のサーボモータと、クランプやゲージなどを行うためのＩ／Ｏ機器（例えば、シリンダなどのアクチュエータなど）とを備えたものがある。ロボットの動作を記述したプログラムは教示データと呼ばれ、その中でＩ／Ｏ機器の制御を記述した部分は特にマクロプログラムと呼ばれている。通常、このマクロプログラムの大半は、シリンダ制御用の電磁弁（ソレノイドバルブ）の制御に関するものである。
【０００３】
従来、このようなマクログラムの作成は、Ｉ／Ｏ機器ごとに個別にオペレータが手入力で行っていた。
【０００４】
また、入力機器（例えば、位置検出用のスイッチやセンサなど）の故障時には、入力待ちを行う命令を一時的に一定時間待つ命令に変更して設備を稼働させることがあるが、このときの命令変更もオペレータがいちいち手作業で書き換えていた。例えば、シリンダの前進動作の場合、ピストンロッドを前進させ前進し切ったことを信号で確認した後その動作を終了するが、前進し切ったことを検知する機器が故障したときには一時的にそれをバイパスする命令に置き換えて設備を稼働させることがある。
【０００５】
【発明が解決しようとする課題】
しかしながら、このような従来のシステムにあっては、上記のようなロボットが何十台と集中する設備において、Ｉ／Ｏ点数が膨大となり、そのマクロプログラムも膨大となる上、さらに、マクロプログラムでは同じような命令の組合せが多いにもかかわらずＩ／Ｏ機器ごとに個別にプログラムを行わなければならないため、結局、同じような命令を膨大な数繰り返して手入力しなければならず、プログラムの作成に多大の時間を要することになるのみならず、人為的ミス（入力ミスや勘違いなど）も多くなりがちである。
【０００６】
また、上記のように入力機器の故障時には一時的にバイパスする命令に置き換えて設備をとりあえず稼働させ、設備が復旧するとその命令を元の正規（正常時）の命令に戻すことが行われているが、やはり人手による作業であるため、故障後に正規の命令に戻さなければならないときに、上記と同様の人為的ミスが発生しやすい。しかも、マクロプログラム自体が膨大であるため、故障対応で一時的に変更している箇所がわからず、そもそも戻すことそれ自体を忘れてしまうこともありうる。
【０００７】
本発明は、上記の課題に着目してなされたものであり、人為的ミスなく短時間で膨大なマクロプログラムを動的に自動作成することができ、また、入力故障時の対応のみならずその後の正規の命令への戻しをも容易に行うことができるロボットマクロプログラム動的作成装置を提供することを目的とする。
【０００８】
【課題を解決するための手段】
本発明の上記目的は、下記の手段によって達成される。
（１）本発明に係るロボットマクロプログラム動的作成装置は、ロボットに設けられたＩ／Ｏ機器の動作を記述するマクロプログラムを起動時および／または実行時に自動的に作成するロボットマクロプログラム動的作成装置であって、あらかじめ作成された教示データ中に機器名称と命令を見つけると、あらかじめ設定されたＩ／Ｏ制御パラメータ群の中から機器名称が一致するものを検索し、得られたＩ／Ｏ制御パラメータ中の機器タイプをあらかじめ定義されたＩ／Ｏモデル群と比較して対応するＩ／Ｏモデルを検索し、得られたＩ／Ｏモデル中のアドレスに前記検索されたＩ／Ｏ制御パラメータ中のアドレスを展開して目的とする一連の命令群を生成することにより、実際に使用される作業マクロプログラムを自動作成し、入力機器の故障が設定されると、対応する入力命令を一定時間の待ち命令に置き換えることを特徴とする。
（２）本発明に係るロボットマクロプログラム動的作成装置は、ロボットに設けられたＩ／Ｏ機器の動作を記述するマクロプログラムを起動時および／または実行時に自動的に作成するロボットマクロプログラム動的作成装置であって、前記Ｉ／Ｏ機器の動作プログラムとして機器名称と命令のみをあらかじめ記述してなる前記ロボットの教示データを記憶する教示データ記憶手段と、前記Ｉ／Ｏ機器の構成として機器名称、機器タイプおよび構成アドレスをあらかじめ設定してなるＩ／Ｏ制御パラメータを記憶するＩ／Ｏ制御パラメータ記憶手段と、前記Ｉ／Ｏ機器のタイプ別の各種Ｉ／Ｏモデルを記憶するＩ／Ｏモデル記憶手段と、前記教示データ記憶手段に記憶されている教示データ中に機器名称と命令を見つけると、前記Ｉ／Ｏ制御パラメータ記憶手段に記憶されているＩ／Ｏ制御パラメータ群の中から機器名称が一致するものを検索し、得られたＩ／Ｏ制御パラメータ中の機器タイプを前記Ｉ／Ｏモデル記憶手段に記憶されているＩ／Ｏモデル群と比較して対応するＩ／Ｏモデルを検索し、得られたＩ／Ｏモデル中のアドレスに前記検索されたＩ／Ｏ制御パラメータ中のアドレスを展開して目的とする一連の命令群を生成して、実際に使用される作業マクロプログラムを作成するマクロプログラム作成部と、を有し、前記Ｉ／Ｏ制御パラメータには入力機器の故障の有無が含まれ、前記マクロプログラム作成部は、入力機器の故障が設定されているとき、対応する入力命令を一定時間の待ち命令に置き換えることを特徴とする。
（３）故障時の作業マクロプログラムが作成されたときでも、正常時の作業マクロプログラムは保存されている。
【０００９】
【発明の効果】
本発明によれば、請求項ごとに以下のような効果を奏する。
【００１０】
請求項１または３記載の発明によれば、あらかじめＩ／Ｏモデルを定義しかつ簡単なＩ／Ｏ制御パラメータを設定しておけば、教示データ中に明示的な命令を書き込むだけで、短時間で膨大なマクロプログラムを動的に自動作成することができ、人為的ミスが大幅に低減される。
【００１１】
また、請求項１または２記載の発明によれば、入力機器の故障が設定されると対応する入力命令が自動的に一定時間の待ち命令に置き換えられるので、入力故障時のバイパス対応を極めて容易に行うことができる。
【００１２】
請求項３記載の発明によれば、故障時の作業マクロプログラムが作成されたときでも正常時の作業マクロプログラムを保存してあるので、故障後に正規の命令に戻すのも極めて容易に行うことができ、その際の人為的ミスも大幅に低減される。
【００１３】
【発明の実施の形態】
以下、図面を使って本発明の実施の形態を説明する。
【００１４】
図１は、本発明を適用したロボットシステムの全体構成図である。
【００１５】
このシステムは、位置決め用の各軸サーボモータ１２と、クランプやゲージなどを行うための各種Ｉ／Ｏ機器１４（例えば、位置検出用のスイッチやセンサ、シリンダなどのアクチュエータ）とを備えたロボット本体１０（以下単に「ロボット」という）と、このロボット１０の動作を総合的に制御するロボットコントローラ１００とを有している。ロボットコントローラ１００には、プログラムやパラメータなどを設定したりロボット１０の動作をモニタするための端末２０と、ロボット１０を起動するための外部操作ボタン３０とが接続されている。ロボット１０内の各軸サーボモータ１２はサーボアンプ１６を介してロボットコントローラ１００と接続され、ロボット１０内の各種Ｉ／Ｏ機器１４は直接ロボットコントローラ１００と接続されている。これにより、ロボットコントローラ１００は、サーボアンプ１６を介してロボット１０内の各軸サーボモータ１２（つまり、ロボット１０の位置決め動作）を制御するとともに、ロボット１０内の各種Ｉ／Ｏ機器１４（主にシリンダ制御用の電磁弁）の制御を行う。
【００１６】
図２は、ロボットコントローラ１００の構成を示すブロック図である。
【００１７】
このロボットコントローラ１００は、端末２０との間のデータ通信を制御する通信制御部１０５と、位置決め制御を行うのに必要なシステム的なパラメータ（例えば、ロボット軸の数、ロボットのサイズなど）を格納するシステムパラメータファイル１１０と、ロボット１０の動作を記述した入力プログラム（教示データ）を格納する教示データファイル１１５と、各種Ｉ／Ｏ機器１４の構成に関する制御用パラメータ（Ｉ／Ｏ制御パラメータ）を格納するＩ／Ｏ制御パラメータファイル１２０と、使用が想定されるＩ／Ｏ機器のタイプ別の各種モデルデータ（Ｉ／Ｏモデル）を格納するＩ／Ｏモデルファイル１２５と、外部操作ボタン３０からのロボット起動信号の入力の有無を判断する入力判断部１３０と、教示データ、Ｉ／Ｏ制御パラメータおよびＩ／Ｏモデルをもとに、所定の演算処理により、実際に使用される作業マクロプログラムを自動作成するマクロプログラム作成部１３５と、マクロプログラム作成部１３５で作成されたマクロプログラム（実際に使用される作業マクロプログラム）を含む教示データ（実際に使用される作業教示データ）を格納する作業教示データファイル１４０と、作業教示データの内容を解釈してサーボアンプ制御用かＩ／Ｏ機器制御用かを判断する教示データ解釈部１４５と、教示データ解釈部１４５からのサーボアンプ制御用の教示データに従ってサーボアンプ１６（ひいては各軸サーボモータ１２）を制御するサーボアンプ制御部１５０と、教示データ解釈部１４５からのＩ／Ｏ機器制御用の教示データ（つまりマクロプログラム）に従って各種Ｉ／Ｏ機器１４を制御するＩ／Ｏ機器制御部１５５と、端末２０のモニタ画面の表示を制御する表示制御部１６０とで構成されている。
【００１８】
教示データファイル１１５内の教示データ（入力教示データ）は、あらかじめオペレータが端末２０を操作して設定したプログラムをロボットコントローラ１００内の当該ファイル１１５に通信制御部１０５を介して転送したものである。この入力教示データは、図３（Ａ）または図５（Ａ）に示すように、ロボット１０の各軸の制御を記述した部分と、図中破線で囲ったＩ／Ｏ機器の制御を記述した部分（マクロプログラム）４０とからなり、後者のマクロプログラム部分４０は、機器名称（例えば、「クランプＡ」）と命令（例えば、「出」）のみから構成されている。したがって、端末２０によるマクロプログラム４０の設定・入力は、非常に簡単である。なお、図３は、入力機器に故障が発生していない場合（図４参照）を示し、図５は、入力機器（例えば、「Ｘ００」）に故障が発生している場合（図６参照）を示しているが、この入力教示データ自体は当然共通である。
【００１９】
Ｉ／Ｏ制御パラメータファイル１２０内のＩ／Ｏ制御パラメータは、あらかじめオペレータが端末２０を操作して設定した所定のパラメータをロボットコントローラ１００内の当該ファイル１２０に通信制御部１０５を介して転送したものである。このＩ／Ｏ制御パラメータは、図４または図６に示すように、Ｉ／Ｏ機器の構成データとして、機器名称（例えば、「クランプＡ」）、機器タイプ（例えば、「シリンダ」）、出と戻りの構成アドレス（例えば、「Ｙ００」、「Ｙ０１」、「Ｘ００」、「Ｘ０１」）および故障の有無（例えば、「０」または「１」）から構成されている。したがって、設定すべきＩ／Ｏ制御パラメータも非常に簡単である。なお、図４は、図３に対応するもので、入力機器に故障が発生していない場合（故障フラグＦ＝０）を示し、図６は、図５に対応するもので、入力機器（例えば、「Ｘ００」）に故障が発生している場合（故障フラグＦ＝１）を示している。ここでは、故障の有無を示すフラグＦの値（「０」または「１」）は、必要なときに自由にオペレータが端末２０を操作してその設定を変更できるようになっている。
【００２０】
Ｉ／Ｏモデルファイル１２５内のＩ／Ｏモデルは、あらかじめオペレータが端末２０を操作して設定（定義）した各種Ｉ／Ｏモデルをロボットコントローラ１００内の当該ファイル１２５に通信制御部１０５を介して転送したものである。このＩ／Ｏモデルは、上記のように、使用が想定されるＩ／Ｏ機器のタイプ別の各種モデルデータであって、例えば、Ｉ／Ｏ機器タイプとしてシリンダを例にとると、図７および図８に示すような構成を有している。ここで、図７は、シリンダ制御用の電磁弁（ソレノイドバルブ）としてシングルソレノイドによる２位置弁の場合であり、図８は、ダブルソレノイドによる２位置弁の場合である。
【００２１】
シングルソレノイド２位置弁は、図９（Ａ）に示すように、一つのソレノイドで弁を操作しソレノイドの電気を切れば弁が元の状態に復帰する構造の電磁弁である。すなわち、出指令をＯＮするとシリンダは前進して出限に移動し、出指令をＯＦＦすると例えばスプリング力によってシリンダは後退して戻り限に復帰する。また、ダブルソレノイド２位置弁は、図９（Ｂ）に示すように、弁を切り換えるのに二つのソレノイドを使用し、一方のソレノイドを消磁しても他方のソレノイドが励磁されない限りそのままの状態を保持する構造の電磁弁である。すなわち、シリンダを前進させて出限に移動させる場合には、出指令をＯＮするとともに戻り指令をＯＦＦし、出限検知信号の入力（センサありの場合）またはタイマ時間の経過（センサなしの場合）を待って出指令をＯＦＦし、シリンダを後退させて戻り限に復帰させる場合には、戻り指令をＯＮするとともに出指令をＯＦＦし、戻り限検知信号の入力（センサありの場合）またはタイマ時間の経過（センサなしの場合）を待って戻り指令をＯＦＦする。以上を、電磁弁の種類（「シングルソレノイド」、「ダブルソレノイド」）、センサの配置の仕方（「前進＋後退」、「前進」のみ、「後退」のみ、なし）、シリンダの動作（「出」、「戻り」）により分類してモデルとしてまとめたのが、図７および図８である。なお、ここでは、便宜上、「出」命令と「戻り」命令の各モデルに▲１▼〜▲８▼の番号を付してある。
【００２２】
マクロプログラム作成部１３５は、上記のように、教示データ、Ｉ／Ｏ制御パラメータおよびＩ／Ｏモデルをもとに、所定の演算処理により、作業マクロプログラムを自動作成する機能を有するものであり、その核心的処理は、教示データ中の命令に対応する命令を持つＩ／Ｏモデルを検索し、そのアドレスにＩ／Ｏ制御パラメータ中のアドレスを展開するというものである（Ｉ／Ｏモデル命令変換処理）。より具体的には、ファイル１１５内の教示データ中に機器名称と命令を見つけると、ファイル１２０内のＩ／Ｏ制御パラメータ群の中から機器名称が一致するものを検索し、得られたＩ／Ｏ制御パラメータ中の機器タイプをファイル１２５内のＩ／Ｏモデル群と比較して対応するＩ／Ｏモデルを検索し、得られたＩ／Ｏモデル中のアドレスに前記検索されたＩ／Ｏ制御パラメータ中のアドレスを展開して目的とする一連の命令群を生成することにより、実際に使用される作業マクロプログラムを作成する。この処理の具体例は、後で詳述する。
【００２３】
作業教示データファイル１４０内の作業教示データは、上記のように、マクロプログラム作成部１３５で作成された作業マクロプログラムを含む作業教示データのプログラムであって、例えば、図３（Ｂ）または図５（Ｂ）のように構成されている。すなわち、図３（Ａ）または図５（Ａ）に示す入力教示データにおいてその中の入力マクロプログラム４０をマクロプログラム作成部１３５で作成された作業マクロプログラム５０，５５に置き換えた構造をしている。なお、図３（Ｂ）の作業マクロプログラム５０は、入力機器に故障が発生していない場合（図４参照）であり、図５（Ｂ）の作業マクロプログラム５５は、入力機器（「Ｘ００」）に故障が発生している場合（図６参照）である。また、図５（Ｂ）の作業マクロプログラム５５中の「ＴＩＭＥＲ  １０」は、タイマで１秒待つことを表している。
【００２４】
図１０は、マクロプログラム作成部１３５を中心とする本システムによるマクロプログラム動的作成処理手順の一例を示すフローチャートである。なお、この説明にあたっては、適宜、図３〜図９を参照する。
【００２５】
外部操作ボタン３０が押され入力判断部１３０でロボット起動信号が入力されたと判断されると、つまり、本ロボットシステムの起動がかかると、マクロプログラム作成部１３５は、ファイル１１５内の教示データから入力マクロプログラムを構成する機器名称（「クランプＡ」）と命令（「出」）を読み取り（Ｓ１）（図３（Ａ）または図５（Ａ）参照）、ファイル１２０内のＩ／Ｏ制御パラメータ群の中からその読み取られた機器名称と一致するＩ／Ｏ制御パラメータを検索し（Ｓ２）（図４または図６参照）、この検索されたＩ／Ｏ制御パラメータの機器タイプを選択する（Ｓ３）。これにより、対応させるべきＩ／Ｏモデルの機器タイプが決定される。ここでは、機器タイプとしてシリンダが選択された場合を例にとって、以下説明する。
【００２６】
機器タイプ（ここではシリンダ）が選択されると、ステップＳ２で検索されたＩ／Ｏ制御パラメータの中に戻り指令アドレスが有るかどうかを判断する（Ｓ４）。これにより、シリンダ制御用の電磁弁の種類が決定される。すなわち、戻り指令アドレスが有る場合（図４または図６中の「Ｙ０１」）にはダブルソレノイドとされて（図９（Ｂ）参照）ステップＳ５に進み、戻り指令アドレスがない場合にはシングルソレノイドとされて（図９（Ａ）参照）ステップＳ１３に進む。
【００２７】
ステップＳ４の判断結果としてダブルソレノイドとされた場合には、まず出命令を決定するために、ステップＳ２で検索されたＩ／Ｏ制御パラメータの中に出限アドレスが有るかどうかを判断し（Ｓ５）、出限アドレスがない場合には（Ｓ５：ＮＯ）、センサを使用しないため、直ちに出命令としてタイマを使用するＩ／Ｏモデル▲８▼（図８参照）を選択する（Ｓ８）。
【００２８】
これに対し、出限アドレスがある場合（図４または図６中の「Ｘ００」）には（Ｓ５：ＹＥＳ）、さらに、その出限アドレスに故障が設定されているか（Ｆ＝１）どうかを判断し（Ｓ６）、故障が設定されていない場合（Ｆ＝０、図４参照）には（Ｓ６：ＮＯ）、出命令としてＩ／Ｏモデル▲５▼（図８参照）を選択し（Ｓ７）、故障が設定されている場合（Ｆ＝１、図６参照）には（Ｓ６：ＹＥＳ）、プログラムをバイパスするため、とりあえず出命令としてタイマを使用するＩ／Ｏモデル▲８▼（図８参照）を選択する（Ｓ８）。
【００２９】
次に、戻り命令を決定するために、ステップＳ２で検索されたＩ／Ｏ制御パラメータの中に戻り限アドレスが有るかどうかを判断し（Ｓ９）、戻り限アドレスがない場合には（Ｓ９：ＮＯ）、センサを使用しないため、直ちに戻り命令としてタイマを使用するＩ／Ｏモデル▲７▼（図８参照）を選択する（Ｓ１２）。
【００３０】
これに対し、戻り限アドレスがある場合（図４または図６中の「Ｘ０１」）には（Ｓ９：ＹＥＳ）、さらに、その戻り限アドレスに故障が設定されているか（Ｆ＝１）どうかを判断し（Ｓ１０）、故障が設定されていない場合（Ｆ＝０、図４または図６参照）には（Ｓ１０：ＮＯ）、戻り命令としてＩ／Ｏモデル▲６▼（図８参照）を選択し（Ｓ１１）、故障が設定されている場合（Ｆ＝１）には（Ｓ１０：ＹＥＳ）、プログラムをバイパスするため、とりあえず戻り命令としてタイマを使用するＩ／Ｏモデル▲７▼（図８参照）を選択する（Ｓ１２）。
【００３１】
以上により、ダブルソレノイドの場合において目的とする一連の命令群（出命令と戻り命令）のモデルが選択されたことになる（図８参照）。
【００３２】
一方、ステップＳ４の判断結果としてシングルソレノイドとされた場合には、まず出命令を決定するために、ステップＳ２で検索されたＩ／Ｏ制御パラメータの中に出限アドレスが有るかどうかを判断し（Ｓ１３）、出限アドレスがない場合には（Ｓ１３：ＮＯ）、センサを使用しないため、直ちに出命令としてタイマを使用するＩ／Ｏモデル▲４▼（図７参照）を選択する（Ｓ１６）。
【００３３】
これに対し、出限アドレスがある場合には（Ｓ１３：ＹＥＳ）、さらに、その出限アドレスに故障が設定されているか（Ｆ＝１）どうかを判断し（Ｓ１４）、故障が設定されていない場合（Ｆ＝０）には（Ｓ１４：ＮＯ）、出命令としてＩ／Ｏモデル▲１▼（図７参照）を選択し（Ｓ１５）、故障が設定されている場合（Ｆ＝１）には（Ｓ１４：ＹＥＳ）、プログラムをバイパスするため、とりあえず出命令としてタイマを使用するＩ／Ｏモデル▲４▼（図７参照）を選択する（Ｓ１６）。
【００３４】
次に、戻り命令を決定するために、ステップＳ２で検索されたＩ／Ｏ制御パラメータの中に戻り限アドレスが有るかどうかを判断し（Ｓ１７）、戻り限アドレスがない場合には（Ｓ１７：ＮＯ）、センサを使用しないため、直ちに戻り命令としてタイマを使用するＩ／Ｏモデル▲３▼（図７参照）を選択する（Ｓ２０）。
【００３５】
これに対し、戻り限アドレスがある場合には（Ｓ１７：ＹＥＳ）、さらに、その戻り限アドレスに故障が設定されているか（Ｆ＝１）どうかを判断し（Ｓ１８）、故障が設定されていない場合（Ｆ＝０）には（Ｓ１８：ＮＯ）、戻り命令としてＩ／Ｏモデル▲２▼（図７参照）を選択し（Ｓ１９）、故障が設定されている場合（Ｆ＝１）には（Ｓ１８：ＹＥＳ）、プログラムをバイパスするため、とりあえず戻り命令としてタイマを使用するＩ／Ｏモデル▲３▼（図７参照）を選択する（Ｓ２０）。
【００３６】
以上により、シングルソレノイドの場合において目的とする一連の命令群（出命令と戻り命令）のモデルが選択されたことになる（図７参照）。
【００３７】
このようにして出命令と戻り命令のＩ／Ｏモデルが選択されると、選択された命令群のモデルのアドレスにステップＳ２で検索されたＩ／Ｏ制御パラメータ中のアドレスを展開して目的とする一連の命令群を生成し、これを作業マクロプログラム５０，５５（図３（Ｂ）または図５（Ｂ）参照）とする（Ｓ２１）。作成された作業マクロプログラム５０，５５は、入力マクロプログラム４０と置き換えられて作業教示データの一部となる。
【００３８】
このとき、故障時（Ｆ＝１のとき）の作業マクロプログラム５５が作成されたときでも、正常時（Ｆ＝０のとき）の正規の作業マクロプログラム５０は所定の記憶領域に保存されるようになっている。
【００３９】
その後、以上のようにして作成された作業マクロプログラム５０，５５を含む作業教示データは、ファイル１４０に格納されるとともに、現在故障しているかどうかが故障対応による変更箇所を含めてわかるような形式で端末２０の画面に表示される（Ｓ２２）。これにより、故障後のオペレータによる戻し忘れが防止される。
【００４０】
そして、オペレータは、その表示を見るなどして、現在のシステムの状態を把握し、必要であれば、ファイル１２０内のＩ／Ｏ制御パラメータの故障フラグＦの変更を端末１０を介して行う（Ｓ２３）。例えば、入力機器の故障が発見された場合にはその入力機器のアドレスに対応する故障フラグを「０」から「１」に変更し、また、故障した入力機器が修復されて設備を正規の状態に復旧すべき場合には、その入力機器のアドレスに対応する故障フラグを「１」から「０」に変更する。
【００４１】
以上の一連の処理は、起動時のみならずプログラムの実行中でも必要なときに必要なだけ繰り返し行われる。
【００４２】
したがって、本実施の形態によれば、あらかじめＩ／Ｏモデルを定義しかつ簡単なＩ／Ｏ制御パラメータを設定しておけば、教示データ中に明示的な命令を書き込むだけで、短時間で膨大なマクロプログラムを動的に自動作成することができ、人為的ミスが大幅に低減される。
【００４３】
また、入力機器の故障が設定されている場合（Ｆ＝１）には対応する入力命令が自動的に一定時間の待ち命令に置き換えられるので、入力故障時のバイパス対応を極めて容易に行うことができる。
【００４４】
また、故障時（Ｆ＝１のとき）の作業マクロプログラム５５が作成されたときでも正常時（Ｆ＝０のとき）の作業マクロプログラム５０を保存しているので、故障後に正規のプログラム（命令）に戻す際には正規の命令を読み出すだけでよく、正規の命令に戻すのも極めて容易である。
【図面の簡単な説明】
【図１】  本発明を適用したロボットシステムの全体構成図である。
【図２】  図１のロボットコントローラの構成を示すブロック図である。
【図３】  入力故障が設定されていないときの教示データの一例を示す図面である。
【図４】  入力故障が設定されていないときのＩ／Ｏ制御パラメータの一例を示す図面である。
【図５】  入力故障が設定されているときの教示データの一例を示す図面である。
【図６】  入力故障が設定されているときのＩ／Ｏ制御パラメータの一例を示す図面である。
【図７】  シングルソレノイドのＩ／Ｏモデルの一例を示す図面である。
【図８】  ダブルソレノイドのＩ／Ｏモデルの一例を示す図面である。
【図９】  シングルソレノイドとダブルソレノイドの説明図である。
【図１０】  本システムによるマクロプログラム動的作成処理手順の一例を示すフローチャートである。
【符号の説明】
１０…ロボット、
１４…Ｉ／Ｏ機器、
２０…端末、
１００…ロボットコントローラ、
１１５…教示データファイル（教示データ記憶手段）、
１２０…Ｉ／Ｏ制御パラメータファイル（Ｉ／Ｏ制御パラメータ記憶手段）、
１２５…Ｉ／Ｏモデルファイル（Ｉ／Ｏモデル記憶手段）、
１３５…マクロプログラム作成部、
１４０…作業教示データファイル。
【図１】
0003897921.tif 000002
【図２】
0003897921.tif 000003
【図３】
0003897921.tif 000004
【図４】
0003897921.tif 000005
【図５】
0003897921.tif 000006
【図６】
0003897921.tif 000007
【図７】
0003897921.tif 000008
【図８】
0003897921.tif 000009
【図９】
0003897921.tif 000010
【図１０】
0003897921.tif 000011