(57)【特許請求の範囲】
【請求項１】
工作機械およびロボットを、第１の座標系で規定された数値制御プログラムを用いて制御する制御演算部を有し、
前記制御演算部は、
第１のプログラム言語で記述された前記工作機械への指令である第１の指令と前記第１のプログラム言語で記述された前記ロボットへの指令である第２の指令とを含んだ前記数値制御プログラムを記憶する記憶部と、
前記第２の指令を、前記数値制御プログラムの実行中に、前記ロボットを制御する際に用いられるロボットプログラムである第３の指令に変換する変換部と、
を備え、
前記制御演算部は、前記第１の指令を用いて前記工作機械を制御し、前記第３の指令を用いて前記ロボットを制御する、
ことを特徴とする数値制御装置。
【請求項２】
前記制御演算部は、前記数値制御プログラムの実行中に、前記ロボットを制御するロボットコントローラに前記第３の指令を送信する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記第１の指令および前記第２の指令は、前記第１の座標系で規定されており、
前記第３の指令は、第２の座標系で規定されるとともに第２のプログラム言語で記述されており、
前記変換部は、
前記第２の指令を、前記数値制御プログラムの実行中に、前記第１の座標系と前記第２の座標系との対応関係に基づいて前記第３の指令に変換する、
ことを特徴とする請求項１または２に記載の数値制御装置。
【請求項４】
工作機械およびロボットを、第１の座標系で規定された数値制御プログラムを用いて制御する制御演算部を有し、
前記制御演算部は、
第１のプログラム言語で記述された前記工作機械への指令である第１の指令と前記第１のプログラム言語で記述された前記ロボットへの指令である第２の指令とを含んだ前記数値制御プログラムを記憶する記憶部と、
前記数値制御プログラムの実行中に、前記第２の指令を受けると、前記ロボットに指令を送るロボットインタフェースにアクセスするアクセス部と、
を備え、
前記制御演算部は、前記第１の指令に基づいて前記工作機械を制御し、前記アクセス部による前記ロボットインタフェースへのアクセスによって前記ロボットを制御する、
ことを特徴とする数値制御装置。
【請求項５】
前記ロボットインタフェースは、第２の座標系で規定された関数および指令座標でアクセスされた場合に前記関数および前記指令座標に対応する処理を前記ロボットに実行し、
前記アクセス部は、前記数値制御プログラムの実行中に、前記ロボットインタフェースに対し、前記第１の座標系と前記第２の座標系との対応関係に基づいて、前記第２の指令に対応する関数および指令座標でアクセスする、
ことを特徴とする請求項４に記載の数値制御装置。
【請求項６】
前記数値制御プログラムは、前記工作機械と前記ロボットとの間の同期命令を含み、
前記制御演算部は、
前記第１の指令の実行中に前記第１の指令内に前記ロボットの動作を待つ第１の待機指令が現れると、前記第１の待機指令に対応する前記ロボットの動作が完了するまで前記工作機械の動作を待機させる第１の待ち合わせ部と、
前記第２の指令の実行中に前記第２の指令内に前記工作機械の動作を待つ第２の待機指令が現れると、前記第２の待機指令に対応する前記工作機械の動作が完了するまで前記ロボットの動作を待機させる第２の待ち合わせ部と、
をさらに備える、
ことを特徴とする請求項１から５の何れか１つに記載の数値制御装置。
【請求項７】
前記数値制御プログラムを編集する際の編集画面、前記ロボットの状態を表示する状態表示画面を表示する表示部をさらに有する、
ことを特徴とする請求項１から６の何れか１つに記載の数値制御装置。
【請求項８】
第１の座標系で規定された工作機械への第１の手動操作および第２の座標系で規定されたロボットへの第２の手動操作を、前記第１の座標系への操作として受け付ける手動操作部と、
前記手動操作部への操作による操作対象を切替る切替スイッチと、
前記工作機械および前記ロボットを制御する制御演算部と、
を有し、
前記制御演算部は、
前記切替スイッチの状態に基づいて、前記手動操作部が受け付けた操作に対応するデータである操作データを、前記第１の手動操作または前記第２の手動操作のいずれであるかを判定する制御信号処理部と、
前記第２の手動操作として判定された操作データを前記第２の座標系への操作データに変換する手動操作データ変換部と、
を備えることを特徴とする数値制御装置。
【請求項９】
前記制御演算部は、前記ロボットの動作に対するオーバライドの指示を受け付けると、前記ロボットの動作に対してオーバライドをかける、
ことを特徴とする請求項１から８の何れか１つに記載の数値制御装置。
【請求項１０】
工作機械およびロボットを、第１の座標系で規定された数値制御プログラムを用いて制御する制御演算ステップを有し、
前記制御演算ステップは、
第１のプログラム言語で記述された前記工作機械への指令である第１の指令と前記第１のプログラム言語で記述された前記ロボットへの指令である第２の指令とを含んだ前記数値制御プログラムを記憶する記憶ステップと、
前記第２の指令を、前記数値制御プログラムの実行中に、前記ロボットを制御する際に用いられるロボットプログラムである第３の指令に変換する変換ステップと、
前記第１の指令を用いて前記工作機械を制御し、前記第３の指令を用いて前記ロボットを制御する制御ステップと、
を含むことを特徴とする数値制御方法。
【請求項１１】
前記制御演算ステップでは、前記数値制御プログラムの実行中に、前記ロボットを制御するロボットコントローラに前記第３の指令を送信する、
ことを特徴とする請求項１０に記載の数値制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットおよび工作機械を制御する数値制御装置および数値制御方法に関する。
【背景技術】
【０００２】
数値制御装置の１つに、被加工物の加工を行う工作機械の制御と、被加工物の搬送を行うロボットの制御とを並行して実行する制御装置がある。【０００３】
特許文献１に記載の制御装置は、工作機械を制御するための予め作成されている数値制御プログラムと、ロボットを制御するための予め作成されているロボットプログラムとを実行することによって、工作機械およびロボットを並行して制御している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３１９９７２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の技術では、数値制御プログラムとロボットプログラムとでプログラム言語が異なるので、数値制御プログラムを用いてロボットを制御することはできなかった。このため、ロボットを制御するためには、数値制御プログラムとは別にロボットを制御するためのロボットプログラムを作成しておく必要があった。【０００６】
本発明は、上記に鑑みてなされたものであって、数値制御プログラムを用いてロボットを制御することができる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明の数値制御装置は、工作機械およびロボットを、第１の座標系で規定された数値制御プログラムを用いて制御する制御演算部を有する。制御演算部は、第１のプログラム言語で記述された工作機械への指令である第１の指令と第１のプログラム言語で記述されたロボットへの指令である第２の指令とを含んだ数値制御プログラムを記憶する記憶部と、第２の指令を、数値制御プログラムの実行中に、ロボットを制御する際に用いられるロボットプログラムである第３の指令に変換する変換部と、を備える。制御演算部は、第１の指令を用いて工作機械を制御し、第３の指令を用いてロボットを制御する。
【発明の効果】
【０００８】
本発明にかかる数値制御装置は、数値制御プログラムを用いてロボットを制御することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる数値制御装置を備えた制御システムの構成を示す図
【図２】実施の形態１にかかる数値制御装置の構成例を示す図
【図３】実施の形態１にかかる数値制御装置が用いるＮＣロボットプログラムの指令の一覧情報を示す図
【図４】実施の形態１にかかる数値制御装置が用いるロボット関節補間指令を説明するための図
【図５】実施の形態１にかかる数値制御装置が用いるロボット関節補間指令の一覧情報を示す図
【図６】実施の形態１にかかる数値制御装置が用いるロボット関節補間指令のアドレスの一覧情報を示す図
【図７】実施の形態１にかかる数値制御装置が用いる連続動作設定指令を説明するための図
【図８】実施の形態１にかかる数値制御装置が用いるロボット直線補間指令を説明するための図
【図９】実施の形態１にかかる数値制御装置が用いるロボット直線補間指令の一覧情報を示す図
【図１０】実施の形態１にかかる数値制御装置が用いるロボット円弧補間指令を説明するための図
【図１１】実施の形態１にかかる数値制御装置が用いるロボット円弧補間指令の一覧情報を示す図
【図１２】実施の形態１にかかる数値制御装置によって方向角が設定されていない場合のロボットに対する制御を説明するための図
【図１３】実施の形態１にかかる数値制御装置によって方向角が設定されている場合のロボットに対する制御を説明するための図
【図１４】実施の形態１にかかる数値制御装置で用いられる、ＮＣ座標系とロボット座標系との対応関係を示す図
【図１５】実施の形態１にかかる制御システムによる、ＮＣプログラムを用いたロボット制御の処理手順を示すフローチャート
【図１６】実施の形態１にかかる数値制御装置による、ＮＣプログラムからロボットプログラムへの変換処理を説明するための図
【図１７】実施の形態１にかかる数値制御装置によって制御される、工作機械およびロボットの動作手順を説明するための図
【図１８】図１７に示した動作が実行される際に用いられるＮＣプログラムを示す図
【図１９】実施の形態２にかかる数値制御装置の構成例を示す図
【図２０】実施の形態２にかかる数値制御装置によるロボットＩＦへのアクセス処理を説明するための図
【図２１】実施の形態２にかかる数値制御装置によるアクセスデータの生成処理手順を示すフローチャート
【図２２】実施の形態３にかかる数値制御装置の構成例を示す図
【図２３】実施の形態３にかかる数値制御装置が表示する、ＮＣロボットプログラムの編集画面の例を示す図
【図２４】実施の形態３にかかる数値制御装置が表示するロボット状態表示画面の例を示す図
【図２５】実施の形態４にかかる数値制御装置を備えた制御システムの構成を示す図
【図２６】実施の形態４にかかる数値制御装置の構成例を示す図
【図２７】実施の形態４にかかる数値制御装置が表示するジョグ操作受付画面の例を示す図
【図２８】実施の形態１にかかる制御演算部のハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる数値制御装置および数値制御方法を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、実施の形態１にかかる数値制御装置を備えた制御システムの構成を示す図である。制御システム１００Ａは、数値制御（ＮＣ：Numerical  Control）プログラムを用いて工作機械７０およびロボット６０を制御するシステムである。
【００１２】
制御システム１００Ａは、工作機械７０と、数値制御装置１Ｘと、ロボットコントローラ５０Ｘと、ロボット６０とを備えている。数値制御装置１Ｘは、ＣＮＣ（Computer  Numerical  Control：コンピュータ数値制御）ユニット６と、入力操作部３Ｘとを備えている。
【００１３】
ＣＮＣユニット６は、工作機械７０、入力操作部３Ｘ、およびロボットコントローラ５０Ｘに接続されている。また、ロボットコントローラ５０Ｘは、入力操作部３Ｘおよびロボット６０に接続されている。ＣＮＣユニット６とロボットコントローラ５０Ｘとは、例えば、ＬＡＮ（Local  Area  Network）を介して接続されている。
【００１４】
制御システム１００Ａでは、工作機械７０、数値制御装置１Ｘ、およびロボットコントローラ５０Ｘの間で通信を実行し、ロボットコントローラ５０Ｘおよびロボット６０の間で通信を実行する。このように、制御システム１００Ａでは、ロボットコントローラ５０Ｘを介して数値制御装置１Ｘと、ロボット６０とが接続されており、数値制御装置１Ｘは、ロボットコントローラ５０Ｘを介してロボット６０を制御する。以下の説明では、数値制御装置１Ｘによるロボット６０の制御を説明する際に、ロボットコントローラ５０Ｘが介されていることを省略する場合がある。
【００１５】
数値制御装置１Ｘは、工作機械７０に配置されている。数値制御装置１Ｘは、工作機械７０に対して工具を使った加工ワーク（被加工物）の加工を実行させるとともに、ロボット６０に対して加工ワークの搬送を実行させるコンピュータである。数値制御装置１Ｘは、ＧコードプログラムといったＮＣプログラムを用いて、工作機械７０およびロボット６０を制御する。ＮＣプログラムには、第１のプログラム言語で記述された工作機械７０への指令である第１の指令と、第１のプログラム言語で記述されたロボット６０への指令である第２の指令とが含まれている。数値制御装置１Ｘは、ＮＣプログラムのうちの第２の指令を、第２のプログラム言語で記述されたロボットプログラムの指令である第３の指令に変換し、第３の指令を用いてロボット６０を制御する。
【００１６】
入力操作部３Ｘは、ユーザがＣＮＣユニット６およびロボットコントローラ５０Ｘを操作するための装置である。入力操作部３Ｘは、入出力ユニット５１、非常停止ボタン５２、および操作盤５３を備えている。入力操作部３Ｘは、ユーザ操作に対応する信号をＣＮＣユニット６およびロボットコントローラ５０Ｘに送ることによって、ＣＮＣユニット６およびロボットコントローラ５０Ｘを操作する。
【００１７】
操作盤５３は、ユーザからの操作を受け付けて、操作に対応する信号を入出力ユニット５１に送る。非常停止ボタン５２は、ユーザによって押下されると、ロボットコントローラ５０Ｘを停止させるための信号をロボットコントローラ５０Ｘに送るとともに、工作機械７０を停止させるための信号を入出力ユニット５１に送る。入出力ユニット５１は、操作盤５３から送られてくる信号および非常停止ボタン５２から送られてくる信号を、ＣＮＣユニット６に送る。非常停止ボタン５２および入出力ユニット５１は、操作盤５３に配置されてもよい。
【００１８】
ロボットコントローラ５０Ｘは、数値制御装置１Ｘから送られてくるロボットプログラムにしたがってロボット６０を制御する。また、ロボットコントローラ５０Ｘは、非常停止ボタン５２から信号が送られてくると、ロボット６０の動作を停止させる。
【００１９】
ロボット６０は、ロボットハンド６１によって加工対象物である加工ワークを把持し、把持した加工ワークを搬送する。ロボット６０は、加工前の加工ワークを工作機械７０にロードし、加工後の加工ワークを工作機械７０からアンロードする。なお、ロボット６０は、加工ワークの搬送以外の処理を実行してもよい。
【００２０】
ＣＮＣユニット６は、後述する制御演算部２Ｘと、表示部４とを含んで構成されている。ＣＮＣユニット６は、ＮＣプログラムを用いて、工作機械７０およびロボット６０を制御する。また、ＣＮＣユニット６は、入力操作部３Ｘから信号を受信すると、受信した信号に対応する処理を工作機械７０に実行させる。また、ＣＮＣユニット６は、工作機械７０の状態、ロボット６０の状態などを表示する。
【００２１】
工作機械７０は、ＮＣ工作機械であり、２軸以上の駆動軸によって工具と加工ワークとを相対的に移動させながら、工具で加工ワークを加工する。工作機械７０の座標系である第１の座標系とロボット６０の座標系である第２の座標系とは異なる座標系である。工作機械７０は、直交座標系で制御され、例えば３軸方向に工具または加工ワークを移動させる。ロボット６０は、回転軸を備えており、例えば、４軸以上の方向に駆動する。ロボット６０は、複数の関節と複数のアームを備えており、１つの関節が１つのアームを１軸以上の方向に移動させる。
【００２２】
図２は、実施の形態１にかかる数値制御装置の構成例を示す図である。数値制御装置１Ｘは、制御演算部２Ｘと、入力操作部３Ｘと、表示部４と、ＰＬＣ（Programmable  Logic  Controller：プログラマブルロジックコントローラ）３６を操作するための機械操作盤などのＰＬＣ操作部５とを有する。図２には、数値制御装置１Ｘとともに、工作機械７０、ロボットコントローラ５０Ｘ、およびロボット６０が示されている。
【００２３】
工作機械７０は、工具および加工ワークを駆動する駆動部９０を備えている。駆動部９０の例は、加工ワークを回転させながら、工具を駆動する駆動機構である。実施の形態１では、工具の駆動方向が、例えばＸ軸方向に平行な方向とＺ軸方向に平行な方向との２方向である。なお、軸方向は装置構成によるので、軸方向は、上記方向に限定されない。
【００２４】
駆動部９０は、数値制御装置１Ｘ上で規定された各軸方向に工具を移動させるサーボモータ９０１，９０２と、サーボモータ９０１，９０２の位置および速度を検出する検出器９７，９８とを備えている。また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、サーボモータ９０１，９０２を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器９７，９８からの位置および速度に基づいて、サーボモータ９０１，９０２へのフィードバック制御を行う。
【００２５】
サーボ制御部のうちの、Ｘ軸サーボ制御部９１は、サーボモータ９０１を制御することによって工具のＸ軸方向の動作を制御し、Ｚ軸サーボ制御部９２は、サーボモータ９０２を制御することによって工具のＺ軸方向の動作を制御する。なお、工作機械７０が２つ以上の刃物台を備えていてもよい。この場合、駆動部９０は、１つの刃物台毎に、１組のＸ軸サーボ制御部９１と、Ｚ軸サーボ制御部９２と、サーボモータ９０１，９０２と、検出器９７，９８とを備える。
【００２６】
また、駆動部９０は、加工ワークを回転させるための主軸を回転させる主軸モータ９１１と、主軸モータ９１１の位置および回転数を検出する検出器２１１とを備えている。検出器２１１が検出する回転数は、主軸モータ９１１の回転数に対応している。
【００２７】
また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、主軸モータ９１１を制御する主軸サーボ制御部２００を備えている。主軸サーボ制御部２００は、検出器２１１からの位置および回転数に基づいて、主軸モータ９１１へのフィードバック制御を行う。
【００２８】
なお、工作機械７０が２つの加工ワークを同時に加工する場合には、駆動部９０は、主軸モータ９１１と、検出器２１１と、主軸サーボ制御部２００とを２組備える。この場合、工作機械７０は、２つ以上の刃物台を備えている。
【００２９】
入力操作部３Ｘは、制御演算部２Ｘに情報を入力する手段である。入力操作部３Ｘは、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置１Ｘに対するコマンドなどの入力、またはＮＣプログラムもしくはパラメータなどを受付けて制御演算部２Ｘに入力する。表示部４は、液晶表示装置などの表示手段によって構成され、制御演算部２Ｘによって処理された情報を表示画面に表示する。表示部４の例は、液晶タッチパネルである。この場合、入力操作部３Ｘの一部の機能が、表示部４に配置されている。
【００３０】
制御部である制御演算部２Ｘは、工作機械７０の座標系で規定されたＮＣプログラムを用いて工作機械７０およびロボット６０を制御する。制御演算部２Ｘは、入力制御部３２と、データ設定部３３と、記憶部３４と、画面処理部３１と、解析処理部３７と、制御信号処理部３５Ｘと、ＰＬＣ３６と、補間処理部３８と、加減速処理部３９と、軸データ出力部４０と、ロボット制御部４１Ｘとを有する。なお、ＰＬＣ３６は、制御演算部２Ｘの外部に配置されてもよい。
【００３１】
記憶部３４は、パラメータ記憶エリア３４１、ＮＣプログラム記憶エリア３４３、表示データ記憶エリア３４４、および共有エリア３４５を有している。パラメータ記憶エリア３４１内には、制御演算部２Ｘの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア３４１内には、数値制御装置１Ｘを動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。ＮＣプログラム記憶エリア３４３内には、加工ワークの加工に用いられるＮＣプログラムが格納される。実施の形態１のＮＣプログラムは、工具を移動させる指令である移動指令と、ロボット６０を制御するための指令とを含んでいる。
【００３２】
表示データ記憶エリア３４４内には、表示部４で表示される画面表示データが格納される。画面表示データは、表示部４に情報を表示するためのデータである。また、記憶部３４には、一時的に使用されるデータを記憶する共有エリア３４５が設けられている。
【００３３】
画面処理部３１は、表示データ記憶エリア３４４に格納された画面表示データを表示部４に表示させる制御を行う。入力制御部３２は、入力操作部３Ｘから入力される情報を受付ける。データ設定部３３は、入力制御部３２で受付けられた情報を記憶部３４に記憶させる。すなわち、入力操作部３Ｘが受付けた入力情報は、入力制御部３２およびデータ設定部３３を介して記憶部３４に書き込まれる。
【００３４】
制御信号処理部３５Ｘは、ＰＬＣ３６に接続されており、ＰＬＣ３６から、工作機械７０の機械を動作させるリレーなどの信号情報を受付ける。制御信号処理部３５Ｘは、受付けた信号情報を、記憶部３４の共有エリア３４５に書き込む。これらの信号情報は、加工運転時に補間処理部３８が参照する。また、制御信号処理部３５Ｘは、解析処理部３７によって共有エリア３４５に補助指令が出力されると、この補助指令を制御信号処理部３５Ｘが共有エリア３４５から読み出してＰＬＣ３６に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、ＭコードまたはＴコードである。
【００３５】
ＰＬＣ３６は、ＰＬＣ３６が実行する機械動作が記述されたラダープログラムを格納している。ＰＬＣ３６は、補助指令であるＴコードまたはＭコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械７０に実行する。ＰＬＣ３６は、補助指令に対応する処理を実行した後、ＮＣプログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部３５Ｘに送る。
【００３６】
制御演算部２Ｘでは、制御信号処理部３５Ｘと、解析処理部３７と、補間処理部３８と、ロボット制御部４１Ｘとが記憶部３４を介して接続されており、記憶部３４を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部３５Ｘと、解析処理部３７と、補間処理部３８と、ロボット制御部４１Ｘとの間の情報の書き込み、および読み出しを説明する際に記憶部３４が介されていることを省略する場合がある。
【００３７】
ＮＣプログラムの選択は、ユーザが入力操作部３ＸでＮＣプログラム番号を入力することによって行われる。このＮＣプログラム番号は、入力制御部３２およびデータ設定部３３を介して共有エリア３４５に書き込まれる。機械操作盤等のサイクルスタートをトリガとして、解析処理部３７は、選択されたＮＣプログラム番号を共有エリア３４５から読み出すと、選択されたＮＣプログラムをＮＣプログラム記憶エリア３４３内から読み出して、ＮＣプログラムの各ブロック（各行）に対して解析処理を行う。解析処理部３７は、例えば、Ｇコード（軸移動等に関する指令）、Ｔコード（工具交換指令など）、Ｓコード（主軸モータ回転数指令）、およびＭコード（機械動作指令）を解析する。
【００３８】
解析処理部３７は、解析した行にＭコードまたはＴコードが含まれている場合には、解析結果を共有エリア３４５および制御信号処理部３５Ｘを介してＰＬＣ３６に送る。また、解析処理部３７は、解析した行にＭコードが含まれている場合には、Ｍコードを、制御信号処理部３５Ｘを介してＰＬＣ３６に送る。ＰＬＣ３６はＭコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部３５Ｘを介してＭコードの完了を示す結果が記憶部３４に書き込まれる。補間処理部３８は記憶部３４に書き込まれた実行結果を参照する。
【００３９】
また、解析処理部３７は、工作機械７０へのＧコードが含まれている場合には、共有エリア３４５を介して解析結果を補間処理部３８に送る。具体的には、解析処理部３７は、Ｇコードに対応する移動条件を生成して補間処理部３８に送る。また、解析処理部３７は、Ｓコードで指定された主軸回転数を補間処理部３８に送る。主軸回転数は、単位時間あたりの主軸の回転の回数である。移動条件は、加工位置を移動させていくための工具送りの条件であり、刃物台を移動させる速度、刃物台を移動させる位置などで示される。例えば、工具の工具送りは、工具をＸ軸方向（＋Ｘ方向）およびＺ軸方向（＋Ｚ方向）に進ませる。
【００４０】
また、解析処理部３７は、ロボット指令解析部３７１を有している。ロボット指令解析部３７１は、接続されたロボット６０の動作を解析する手段である。ロボット指令解析部３７１は、ＮＣプログラムに含まれるロボット指令を解析し、解析結果を、共有エリア３４５を介してロボット制御部４１Ｘに送る。ロボット指令の詳細については後述する。
【００４１】
解析結果には、ロボット６０の座標系を設定するための指令であるロボット座標系設定指令、ロボット６０への指令をオン（有効）とするかオフ（無効）とするかが指定されたロボットモード指令、ロボット６０の動作を規定したロボット動作指令などが含まれている。
【００４２】
補間処理部３８は、解析処理部３７による解析結果のうち工作機械７０への指令を用いて工作機械７０を制御するためのデータを生成し、加減速処理部３９に送る。補間処理部３８は、第１の待ち合わせ部であるロボット指令待ち合わせ部３８１を備えている。ロボット指令待ち合わせ部３８１は、ロボット６０と工作機械７０との間で待ち合わせの処理を実行する場合に、特定のタイミングとなるまで工作機械７０への指令（動作指令等）を待機させる。ロボット６０と工作機械７０との間における待ち合わせ処理については、後述する。
【００４３】
ロボット制御部４１Ｘは、座標設定部４１１、モード設定部４１２、第２の待ち合わせ部であるＮＣ指令待ち合わせ部４１３、およびプログラム変換部４１４を有している。
【００４４】
座標設定部４１１は、ロボット座標系設定指令に基づいて、ロボット６０の座標系に、ベース座標系（工作機械７０の機械座標系に相当）またはツール座標系（ロボット６０が備えるロボットハンド６１の座標系）を設定する。ロボット制御部４１Ｘは、座標設定部４１１がロボット座標系設定指令に対応する座標系を設定した後は、設定した座標系でロボット６０を動作させる。
【００４５】
ＮＣ指令待ち合わせ部４１３は、ロボット６０と工作機械７０との間で待ち合わせの処理を実行する場合に、特定のタイミングとなるまでロボット６０への指令を待機させる。
【００４６】
変換部であるプログラム変換部４１４は、工作機械７０の座標系で規定された指令（第２の指令）をロボット６０の座標系で規定された指令（第３の指令）に変換することによって、ロボット６０を制御する際に用いられるロボットプログラムを生成する。プログラム変換部４１４は、ＮＣプログラム内のロボット６０へのプログラムを、後述するロボット指令一覧情報１０１、対応関係情報１０２、関節補間情報１０３、アドレス情報１０４、直線補間情報１０５、および円弧補間情報１０６を用いて、ロボットコントローラ５０Ｘで解釈可能なロボットプログラムに変換する。すなわち、プログラム変換部４１４は、ＮＣプログラムで作成されているロボット６０への指令を、ロボットプログラムの指令に変換する変換部である。ＮＣプログラム内の指令のうちロボット６０への指令は、後述するRX_、RY_、RZ_などを用いて記述される。プログラム変換部４１４は、ロボットプログラムをロボットコントローラ５０Ｘに送る。
【００４７】
モード設定部４１２は、ロボット指令解析部３７１から解析結果であるロボットモード指令を受け付ける。ロボットモード指令は、数値制御装置１Ｘからロボット６０への指令をオンとするかオフとするかを指定した指令である。以下の説明では、ロボット６０への指令をオンとすることを指定した指令をロボットモードのオン指令といい、ロボット６０への指令をオフとすることを指定した指令をロボットモードのオフ指令という。
【００４８】
モード設定部４１２は、ロボット指令解析部３７１からロボットモードのオン指令を受け付けると、この後ロボット６０への指令が来ることをプログラム変換部４１４に通知する。ロボット制御部４１Ｘは、モード設定部４１２がロボットモードのオン指令を受け付けた後は、新たにロボットモードのオフ指令を受け付けるまでの間、ロボット６０への指令を受け付ける。
【００４９】
ロボット制御部４１Ｘは、モード設定部４１２がロボット指令解析部３７１からロボットモードのオフ指令を受け付けると、新たにロボットモードのオン指令を受け付けるまでの間、ロボット６０への指令を受け付けない。ロボット制御部４１Ｘがロボット６０への指令を受け付けない状態で、ロボット制御部４１Ｘにロボット６０への指令が送られてくると、表示部４は、制御演算部２Ｘからの指示に従って、「プログラムエラー」を表示させる。ロボットモードのオン指令の例は、後述するＧ１９８であり、ロボットモードのオフ指令の例は、後述するＧ１９９である。
【００５０】
ここで、数値制御装置１Ｘが用いる、ロボット６０用のＮＣプログラム（以下、ＮＣロボットプログラムという）で用いられる指令について説明する。図３は、実施の形態１にかかる数値制御装置が用いるＮＣロボットプログラムの指令の一覧情報を示す図である。図３では、ＮＣロボットプログラムで用いられる指令の一覧情報であるロボット指令一覧情報１０１を示している。ロボット指令一覧情報１０１では、ＮＣロボットプログラムで用いられる指令であるＧコードと、機能とが対応付けされている。ロボット指令一覧情報１０１は、記憶部３４内に格納されていてもよいし、数値制御装置１Ｘ内の記憶部３４以外の記憶領域に格納されていてもよい。同様に、プログラム変換部４１４が用いる、対応関係情報１０２、関節補間情報１０３、アドレス情報１０４、直線補間情報１０５、および円弧補間情報１０６は、記憶部３４内に格納されていてもよいし、数値制御装置１Ｘ内の記憶部３４以外の記憶領域に格納されていてもよい。
【００５１】
Ｇ１９８の機能は、ロボットモードをオンにする機能（ロボット指令オン）である。Ｇ１９９の機能は、ロボットモードをオフにする機能（ロボット指令オフ）である。数値制御装置１Ｘは、Ｇ１９８のモード実行中であっても、ＮＣ指令（工作機械７０に対する指令）を実行することは可能である。また、本実施の形態１では、Ｇ１９８がモーダル指令である場合について説明するが、Ｇ１９８は、ロボット指令毎に記述されるワンショット指令であってもよい。モーダル指令は、複数のＧコードに対して状態が保持されるＧコードであり、ワンショット指令は、１つのブロック（１行）のみに適用されるＧコードである。
【００５２】
Ｇ２００の機能は、ロボット６０を関節補間で動作させる機能（ロボット関節補間）である。すなわち、Ｇ２００は、ロボット６０を関節補間で動作させるためのロボット関節補間指令である。
【００５３】
Ｇ２００．５の機能は、ロボット６０を連続動作させる機能（連続動作の指定）である。すなわち、Ｇ２００．５は、ロボット６０を連続動作させる連続動作設定指令である。
【００５４】
Ｇ２０１の機能は、ロボット６０を直線補間で移動させる機能（ロボット直線補間）である。すなわち、Ｇ２０１は、ロボット６０を直線補間で移動させるためのロボット直線補間指令である。
【００５５】
Ｇ２０２の機能は、ロボット６０を円弧補間で移動させる機能（ロボット円弧補間）である。すなわち、Ｇ２０２は、ロボット６０を円弧補間で移動させるためのロボット円弧補間指令である。
【００５６】
Ｇ２４３．１の機能は、方向角を制御するパラメータを設定するための指令（方向角制御パラメータ設定）である。すなわち、Ｇ２４３．１は、方向角を制御させるための指令である。
【００５７】
Ｇ２９０の機能は、ロボット６０を絶対値指令で動作させる機能（ロボット絶対値指令）であり、Ｇ２９１の機能は、ロボット６０を増分値指令で動作させる機能（ロボット増分値指令）である。絶対値指令は、原点に対して停止位置が決まっている場合に使用される。したがって、絶対値指令では、原点からの位置が指定される。増分値指令は、現在の停止位置に対して、次の停止位置への移動量を指定したい場合に使用される。したがって、増分値指令では、移動量が指定される。Ｇ２９２の機能は、ロボット６０に座標系を設定させる機能（ロボット座標系設定）である。
【００５８】
図４は、実施の形態１にかかる数値制御装置が用いるロボット関節補間指令を説明するための図である。ロボット関節補間指令は、稼働する軸のうち移動距離が最大となる軸の移動時間が最小となるようロボット６０を制御する指令である。ロボット６０が備えるロボットハンド６１の位置を始点ＰＡから終点ＰＢまで移動させる場合に数値制御装置１Ｘがロボット関節補間を指令すると、ロボットコントローラ５０Ｘは、ロボット６０が有する軸のうち始点ＰＡから終点ＰＢまでの移動距離が最大となる軸を抽出し、抽出した軸の移動時間が最小となるようロボット６０を制御する。
【００５９】
ここで、ロボット関節補間を実行させる指令であるロボット関節補間指令の種類について説明する。図５は、実施の形態１にかかる数値制御装置が用いるロボット関節補間指令の一覧情報を示す図である。図６は、実施の形態１にかかる数値制御装置が用いるロボット関節補間指令のアドレスの一覧情報を示す図である。図５では、ロボット関節補間指令の一覧情報である関節補間情報１０３を示しており、図６では、ロボット関節補間指令のアドレスの一覧情報であるアドレス情報１０４を示している。
【００６０】
図５に示すように、ロボット関節補間指令には、３種類の指令方式がある。図６に示すアドレス情報１０４では、ロボット関節補間指令のアドレスと、アドレスが示す意味と、アドレスの説明とが対応付けされている。
【００６１】
ロボット関節補間指令のうち、一つ目の指令方式は座標指令方式である。以下の説明では、ロボット関節補間指令の座標指令方式を座標指令方式ＣＭ１という。座標指令方式ＣＭ１は、ロボット座標上で指定した位置にロボット６０の位置を制御する指令方式である。座標指令方式ＣＭ１では、「G200  RX_  RY_  RZ_  RA_  RB_  RC_  RS_  RT_  R_」のフォーマットでロボット関節補間が指令される。RX、RY、RZ、RA、RB、RC、RS、RTは、何れもロボット６０への指令である。
【００６２】
座標指令方式ＣＭ１におけるRX_、RY_、RZ_は、ロボット直交座標指令であり、RA_、RB_、RC_は、ロボット回転座標指令である。ロボット直交座標指令は、ロボット６０の直交座標系（Ｘ軸、Ｙ軸、Ｚ軸）における座標（Ｘ座標、Ｙ座標、Ｚ座標）を指定した指令である。ロボット回転座標指令は、ロボット６０の回転座標系（Ａ軸、Ｂ軸、Ｃ軸）における座標（Ａ座標、Ｂ座標、Ｃ座標）を指定した指令である。換言すると、座標指令方式ＣＭ１では、ロボット関節補間指令のアドレスが、Ｘ座標、Ｙ座標、Ｚ座標、Ａ座標、Ｂ座標、Ｃ座標で示される。
【００６３】
また、座標指令方式ＣＭ１におけるRS_はロボット姿勢データ（１）であり、RT_はロボット姿勢データ（２）である。ロボット姿勢データ（１）およびロボット姿勢データ（２）は、ロボット６０の姿勢を指定したデータである。ロボット６０は、複数の関節を有しているので、１つの位置が指定された場合であっても、種々の姿勢をとることができる。ロボット姿勢データ（１）およびロボット姿勢データ（２）では、ロボット６０にとらせる姿勢が指定される。
【００６４】
また、座標指令方式ＣＭ１におけるR_は、連続動作モードであるか否かを指定した指令である。R0は、連続動作が有効であり、R1は、連続動作が無効である。なお、座標指令方式ＣＭ１においてR_が省略されている場合には、R0として扱われる。このように、座標指令方式ＣＭ１の指令は、移動距離が最大となる軸の移動時間が最小となるよう、ロボット座標上で指定された位置にロボット６０の位置を制御する指令である。
【００６５】
ロボット関節補間指令のうち、二つ目の指令方式は、軸移動量指令方式である。以下の説明では、ロボット関節補間指令の軸移動量指令方式を軸移動量指令方式ＡＭ１という。ロボット関節補間指令の軸移動量指令方式ＡＭ１は、ロボット６０の関節軸で指定した位置にロボット６０の位置を制御する指令方式である。
【００６６】
軸移動量指令方式ＡＭ１では、「G200  A1=_  A2=_  A3=_  A4=_  A5=_  A6=_  R_」のフォーマットでロボット関節補間指令が設定される。軸移動量指令方式ＡＭ１が増分値指令の場合、Ax=_は、ロボット６０の回転軸である関節軸の軸移動量を示し、軸移動量指令方式ＡＭ１が絶対値指令の場合、Ax=_は、ロボット６０の回転軸である関節軸の軸角度を示す。例えば、絶対値指令でA1=60の場合、関節軸は６０°の位置に移動する。xは、関節軸の軸名称であり、ここでは、１〜６の何れかである。例えば、軸移動量指令方式ＡＭ１におけるA1=ａｂｃ（ａ，ｂ，ｃは数字）は、角度ａｂｃにロボット６０の関節を移動させる指令である。軸移動量であるAx=_の単位は、ロボット６０の設定に関わらず角度である。
【００６７】
このように、軸移動量指令方式ＡＭ１の指令は、移動距離が最大となる軸の移動時間が最小となるよう、ロボット６０の関節軸で指定した位置にロボット６０の位置を制御する指令である。軸移動量指令方式ＡＭ１におけるR_は、座標指令方式ＣＭ１におけるR_と同様に、連続動作モードであるか否かを指定した指令である。
【００６８】
ロボット関節補間指令のうち、三つ目の指令方式は、教示位置指令方式である。以下の説明では、ロボット関節補間指令の教示位置指令方式を教示位置指令方式ＴＭ１という。ロボット関節補間指令の教示位置指令方式ＴＭ１は、予め教示された位置にロボット６０の位置を制御する指令方式である。
【００６９】
教示位置指令方式ＴＭ１では、「G200  P_  R_」のフォーマットでロボット関節補間が指令される。教示位置指令方式ＴＭ１におけるP_は、教示位置でありロボット６０を移動させる位置を示している。教示位置は、数値制御装置１Ｘに記憶させたロボット６０の指令位置である。このように、教示位置指令方式ＴＭ１の指令は、移動距離が最大となる軸の移動時間が最小となるよう、教示位置にロボット６０の位置を制御する指令である。教示位置指令方式ＴＭ１におけるR_は、座標指令方式ＣＭ１におけるR_と同様に、連続動作モードであるか否かを指定した指令である。
【００７０】
図７は、実施の形態１にかかる数値制御装置が用いる連続動作設定指令を説明するための図である。連続動作設定指令は、ロボット６０の位置を、途中位置Ｐ２を経由させずに開始位置Ｐ１から到達位置Ｐ３まで移動させる指令である。連続動作設定指令が設定されている場合、すなわち連続動作設定が有効である場合、数値制御装置１Ｘは、経路Ｔ２（実線で示す軌跡）に沿ってロボット６０を移動させる。一方、連続動作設定指令が設定されていない場合、すなわち連続動作設定が無効である場合、数値制御装置１Ｘは、経路Ｔ１（破線で示す軌跡）に沿ってロボット６０を移動させる。すなわち、連続動作設定が無効である場合、数値制御装置１Ｘは、ロボット６０の位置を、途中位置Ｐ２を経由させて開始位置Ｐ１から到達位置Ｐ３まで移動させる。
【００７１】
つぎに、図８および図９を用いてロボット直線補間を説明する。図８は、実施の形態１にかかる数値制御装置が用いるロボット直線補間指令を説明するための図である。ロボット直線補間指令は、ロボット６０が備えるロボットハンド６１の位置を始点ＰＣから終点ＰＤまで直線補間で移動させる指令である。
【００７２】
ここで、ロボット直線補間を実行させる指令であるロボット直線補間指令の種類について説明する。図９は、実施の形態１にかかる数値制御装置が用いるロボット直線補間指令の一覧情報を示す図である。図９では、ロボット直線補間指令の一覧情報である直線補間情報１０５を示している。図９に示すように、ロボット直線補間指令には、２種類の指令方式がある。
【００７３】
ロボット直線補間指令のうちの第１の指令方式は座標指令方式である。以下の説明では、ロボット直線補間指令の座標指令方式を座標指令方式ＣＭ２という。座標指令方式ＣＭ２は、ロボット座標上で指定した位置にロボット６０の位置を制御する指令方式である。座標指令方式ＣＭ２では、「G201  RX_  RY_  RZ_  RA_  RB_  RC_  RS_  RT_  R_」のフォーマットでロボット直線補間が指令される。座標指令方式ＣＭ２におけるRX_、RY_、RZ_、RA_、RB_、RC_、RS_、RT_、R_のアドレスおよび意味は、座標指令方式ＣＭ１におけるRX_、RY_、RZ_、RA_、RB_、RC_、RS_、RT_、R_と同じアドレスおよび意味である。
【００７４】
ロボット直線補間指令のうちの第２の指令方式は教示位置指令方式である。以下の説明では、ロボット直線補間指令の教示位置指令方式を教示位置指令方式ＴＭ２という。教示位置指令方式ＴＭ２では、「G201  P_  R_」のフォーマットで教示位置が指令される。教示位置指令方式ＴＭ２のP_、R_は、教示位置指令方式ＴＭ１のP_、R_と同じである。
【００７５】
つぎに、図１０および図１１を用いてロボット円弧補間を説明する。図１０は、実施の形態１にかかる数値制御装置が用いるロボット円弧補間指令を説明するための図である。ロボット円弧補間指令は、ロボット６０が備えるロボットハンド６１の位置を、始点ＰＥから補助点ＨＰを通過して終点ＰＦまで、円弧補間で移動させる指令である。
【００７６】
ここで、ロボット円弧補間を実行させる指令であるロボット円弧補間指令の種類について説明する。図１１は、実施の形態１にかかる数値制御装置が用いるロボット円弧補間指令の一覧情報を示す図である。図１１では、ロボット円弧補間指令の一覧情報である円弧補間情報１０６を示している。
【００７７】
図１１に示すように、ロボット円弧補間指令には、２種類の指令方式がある。ロボット円弧補間指令のうちの第１の指令方式は座標指令方式である。以下の説明では、ロボット円弧補間指令の座標指令方式を座標指令方式ＣＭ３という。座標指令方式ＣＭ３は、ロボット座標上で指定した位置にロボット６０の位置を制御する指令方式である。座標指令方式ＣＭ３では、「G202  RX_  RY_  RZ_  RA_  RB_  RC_  RS_  RT_  HX_  HY_  HZ_  HA_  HB_  HC_  HS_  HT_  R_  W_」のフォーマットでロボット円弧補間が指令される。座標指令方式ＣＭ３におけるRX_、RY_、RZ_、RA_、RB_、RC_、RS_、RT_、R_のアドレスおよび意味は、座標指令方式ＣＭ１におけるRX_、RY_、RZ_、RA_、RB_、RC_、RS_、RT_、R_と同じアドレスおよび意味である。
【００７８】
座標指令方式ＣＭ３におけるHX_  HY_  HZ_  HA_  HB_  HC_  HS_  HT_は、補助点ＨＰにおけるロボット座標系の値を示している。具体的には、座標指令方式ＣＭ３におけるHA_、HB_、HC_は、それぞれＡ軸、Ｂ軸、Ｃ軸のロボット回転座標であり、座標指令方式ＣＭ３におけるHX_、HY_、HZ_は、それぞれＸ軸、Ｙ軸、Ｚ軸のロボット直交座標である。
【００７９】
また、座標指令方式ＣＭ３におけるHS_は、補助点ＨＰにおけるロボット姿勢データ（１）であり、HT_は、補助点ＨＰにおけるロボット姿勢データ（２）である。また、座標指令方式ＣＭ３におけるW_は、円弧補間指令で移動する角度である。W30が指令された場合、ロボット６０の全体を支える土台は、補助点ＨＰを経由して終点ＰＦに向かう円弧経路上を３０°分移動する。
【００８０】
ロボット円弧補間指令のうちの第２の指令方式は教示位置指令方式である。以下の説明では、ロボット円弧補間指令の教示位置指令方式を教示位置指令方式ＴＭ３という。教示位置指令方式ＴＭ３では、「G202  P_  HP_  R_」のフォーマットで教示位置が指令される。
【００８１】
教示位置指令方式ＴＭ３におけるP_は、教示位置（指定された終点）でありロボット６０を移動させる位置を示している。教示位置指令方式ＴＭ３におけるHP_は、円弧形状を決めるための補助点ＨＰの教示位置である。教示位置指令方式ＴＭ３のP_、R_は、教示位置指令方式ＴＭ１のP_、R_と同じである。
【００８２】
次に、図１２から図１５を用いてロボット６０に対する方向角の制御について説明する。図１２は、実施の形態１にかかる数値制御装置によって方向角が設定されていない場合のロボットに対する制御を説明するための図である。図１３は、実施の形態１にかかる数値制御装置によって方向角が設定されている場合のロボットに対する制御を説明するための図である。
【００８３】
図１２および図１３では、数値制御装置１Ｘが直線補間を実行する場合の、ロボット６０のロボットハンド６１の動作を示している。方向角は、基準方向Ｑ１に対するずれ角である。したがって、方向角の制御指定が有る場合、図１３に示すように、ロボットハンド６１は、直線補間移動する間に基準方向Ｑ１に平行な方向に移動する。すなわち、方向角の制御指定が有る場合、ロボットハンド６１は、一定方向を向いて移動する。一方、方向角の制御指定が無い場合、図１２に示すように、ロボットハンド６１は、直線補間移動する間に基準方向Ｑ１に対して種々の傾きを発生させながら移動する。
【００８４】
方向角制御パラメータ設定指令では、「G243.1  H_」のフォーマットで方向角の制御指定の有無が指令される。「G243.1  H_」におけるH_は、方向角の制御指定の「あり」または「なし」を指定する指令である。H0は、方向角の制御指定が有効であり、H1は、方向角の制御指定が無効である。
【００８５】
ここで、ＮＣプログラムで用いられる指令軸（ＮＣ軸）と、ロボットプログラムで用いられる指令軸（ロボット軸）との関係について説明する。図１４は、実施の形態１にかかる数値制御装置で用いられる、ＮＣ座標系とロボット座標系との対応関係を示す図である。図１４では、ＮＣプログラムで用いられるＮＣ座標系のＮＣ軸と、ロボットプログラムで用いられるロボット座標系のロボット軸との対応関係である対応関係情報１０２を示している。
【００８６】
対応関係情報１０２は、ＮＣプログラムで設定されるアドレスとロボット座標系に設定する座標との対応関係、およびＮＣプログラムで設定される軸名称とロボット座標系に設定する軸名称との対応関係を含んでいる。
【００８７】
ＮＣプログラムで設定されるRX、RY、RZは直行軸を表しており、RX、RY、RZは、ロボット座標系のX、Y、Zに対応する。すなわち、RX、RY、RZのアドレスは、それぞれロボットプログラムでのX、Y、Zの座標に対応する。このため、ロボット６０に対して、X、Y、Zの座標を設定したい場合、ＮＣプログラムに対して、RX、RY、RZのアドレスにX、Y、Zの値を設定しておけばよい。
【００８８】
ＮＣプログラムで設定されるRA、RB、RCは回転軸を表しており、RA、RB、RCは、ロボット座標系のA、B、Cに対応する。すなわち、RA、RB、RCのアドレスは、それぞれロボットプログラムでのA、B、Cの座標に対応する。このため、ロボット６０に対して、A、B、Cの座標を設定したい場合、ＮＣプログラムに対して、RA、RB、RCのアドレスにA、B、Cの値を設定しておけばよい。
【００８９】
ＮＣプログラムで設定されるRS、RTは、ロボット６０の姿勢を示しており、RS、RTのアドレスは、それぞれロボットプログラムでのS、Tに対応する。このため、ロボット６０に対して、S、Tの姿勢を設定したい場合、ＮＣプログラムに対して、RS、RTのアドレスにS、Tの値を設定しておけばよい。ロボット６０の関節（回転軸）は、ＮＣ指令ではAx=で表され、ロボット座標ではAxで表される。図１４では、xが１〜６の６軸である場合を示している。
【００９０】
このように、数値制御装置１Ｘでは、対応関係情報１０２において、ＮＣプログラムにおける指令軸（指令座標）とロボットプログラムにおける指令軸（指令座標）とが対応付けされている。ＮＣプログラムには、工作機械７０用のＮＣプログラムと、ロボット６０用のＮＣプログラムであるＮＣロボットプログラムとを格納しておく。数値制御装置１Ｘのプログラム変換部４１４は、対応関係情報１０２に基づいて、ＮＣロボットプログラムをロボットプログラムに変換し、ロボットプログラムを用いてロボット６０を制御する。
【００９１】
次に、数値制御装置１Ｘによる、ＮＣプログラムからロボットプログラムへの変換処理手順について説明する。図１５は、実施の形態１にかかる制御システムによる、ＮＣプログラムを用いたロボット制御の処理手順を示すフローチャートである。
【００９２】
解析処理部３７のロボット指令解析部３７１は、ロボットモードがオンであるか否かを判定する（ステップＳ１）。具体的には、ロボット指令解析部３７１は、Ｇ１９８のモード実行中（ロボット指令が有効）であるか、Ｇ１９９のモード実行中（ロボット指令が無効）であるかを判定する。ロボット指令解析部３７１は、解析結果を、記憶部３４を介してモード設定部４１２に送る。
【００９３】
ロボットモードがオフである場合（ステップＳ１、Ｎｏ）、数値制御装置１Ｘは、ＮＣプログラムからロボットプログラムへの変換処理を行わない。一方、ロボットモードがオンである場合（ステップＳ１、Ｙｅｓ）、モード設定部４１２は、この後ロボット６０への指令が来ることをプログラム変換部４１４に通知する。
【００９４】
ロボット指令解析部３７１は、Ｇ１９８の後に続くブロックの指令を解析する。ロボット指令解析部３７１が解析する指令の例は、以下の（機能１）から（機能８）を指定した指令である（ステップＳ２）。
（機能１）ロボット座標系設定
（機能２）ロボット絶対値指令
（機能３）ロボット増分値指令
（機能４）方向角制御パラメータ設定
（機能５）ロボット関節補間
（機能６）連続動作の指定
（機能７）ロボット直線補間
（機能８）ロボット円弧補間
【００９５】
ロボット指令解析部３７１は、解析結果をロボット制御部４１Ｘまたは記憶部３４の共有エリア３４５に送る。例えば、ロボット指令解析部３７１は、解析結果として、ロボット座標系設定を指示するロボット座標系設定指令を座標設定部４１１に送る。また、ロボット指令解析部３７１は、解析結果として、位置制御時の制御モードである位置制御モードを示す情報を記憶部３４の共有エリア３４５に送る。
【００９６】
これにより、数値制御装置１Ｘは、ロボット座標系および位置制御モードを設定する（ステップＳ３）。具体的には、座標設定部４１１は、ロボット座標系設定指令に基づいて、ロボット６０の座標系に、ベース座標系またはツール座標系を設定する。ロボット制御部４１Ｘは、座標設定部４１１がロボット座標系設定指令に対応する座標系を設定した後は、設定した座標系でロボット６０を動作させる。これにより、ロボット６０は、座標設定部４１１が設定した座標系で動作する。
【００９７】
また、ロボット指令解析部３７１は、位置制御モードを示す情報として、ロボット絶対値指令のモードを実行中であること（絶対値指令実行中）を示す情報、またはロボット増分値指令でのモードを実行中であること（増分値指令実行中）を示す情報を共有エリア３４５に格納する。これにより、プログラム変換部４１４は、ロボット指令毎に、共有エリア３４５内に格納されている情報を参照し、絶対値指令実行中であるか増分値指令実行中であるかを確認する。プログラム変換部４１４は、絶対値指令実行中である場合には、ロボット指令の位置指令をロボット絶対値指令として扱い、増分値指令実行中である場合には、ロボット指令の位置指令をロボット増分値指令として扱う。
【００９８】
次に、プログラム変換部４１４は、ロボット指令解析部３７１から送られてくるロボット指令のうち、以下の（機能４）から（機能８）を指定した指令に対して各動作のプログラム変換を行う。すなわち、プログラム変換部４１４は、ＮＣロボットプログラムをロボットプログラムに変換する（ステップＳ４）。
（機能４）方向角制御パラメータ設定
（機能５）ロボット関節補間
（機能６）連続動作の指定
（機能７）ロボット直線補間
（機能８）ロボット円弧補間
【００９９】
次に、プログラム変換部４１４は、変換したロボットプログラムを、ロボットコントローラ５０Ｘに送信する（ステップＳ５）。ロボットコントローラ５０Ｘは、プログラム変換部４１４から受信したロボットプログラムに従って、ロボット６０を制御する（ステップＳ６）。
【０１００】
この後、ロボット指令解析部３７１が、ロボットモードのオフ指令（G199）を解析すると、数値制御装置１Ｘは、ロボットモードをオフにして、ロボット６０への制御を終了する（ステップＳ７）。
【０１０１】
ここで、プログラム変換部４１４によるＮＣロボットプログラムからロボットプログラムへの変換処理の例について説明する。図１６は、実施の形態１にかかる数値制御装置による、ＮＣプログラムからロボットプログラムへの変換処理を説明するための図である。図１６では、ＮＣロボットプログラムを含んだ変換前のＮＣプログラム２０１と、変換後のロボットプログラム２０２とを図示している。プログラム変換部４１４は、ＮＣプログラム２０１に含まれるＮＣロボットプログラムをロボットプログラム２０２に変換する。
【０１０２】
プログラム変換部４１４は、N11のG198によってロボット指令モードがオンになった後、N16のG199によってロボット指令モードがオフとなるまでのＮＣロボットプログラムをロボットプログラムに変換する。
【０１０３】
ＮＣプログラム２０１に含まれている、「N13  G200  RX10.  RY10.  RZ10.  RA10.  RB10.  RC10.  RS1  RT5；(指令座標(10,  10,  10,  10,  10,  10,  1,  5))」、および「N14  RX200.；(指令座標(200,  10,  10,  10,  10,  10,  1,  5))」は、ロボット関節補間である。プログラム変換部４１４は、これらのロボット関節補間を、ロボット指令一覧情報１０１、対応関係情報１０２、関節補間情報１０３、およびアドレス情報１０４を用いて、ロボット関節補間に対応するロボットプログラム命令に変換する。具体的には、プログラム変換部４１４は、ＮＣプログラム２０１のN13を、「N13  MOVEA  (10.,10.,10.,10.,10.,10.)(1,5,0)；(指令座標(10,  10,  10,  10,  10,  10,  1,  5,  0))」に変換する。また、プログラム変換部４１４は、ＮＣプログラム２０１のN14を、「N14  MOVEA  (200.,10.,10.,10.,10.,10.)(1,5,0);(指令座標(200,  10,  10,  10,  10,  10,  1,  5,  0))」に変換する。なお、ＮＣプログラム２０１では、R_が省略されているので、プログラム変換部４１４は、ロボットプログラム命令において連続動作を有効としている。
【０１０４】
また、ＮＣプログラム２０１に含まれている、「N15  G201  RX30.;(指令座標(30,  10,  10,  10,  10,  10,  1,  5))」は、ロボット直線補間である。プログラム変換部４１４は、このロボット直線補間を、ロボット指令一覧情報１０１、対応関係情報１０２、アドレス情報１０４、および直線補間情報１０５を用いて、ロボット直線補間に対応するロボットプログラム命令に変換する。具体的には、プログラム変換部４１４は、ＮＣプログラム２０１のN15を、「N15  MOVEB  (30.,10.,10.,10.,10.,10.)(1,5,0);(指令座標(30,  10,  10,  10,  10,  10,  1,  5,  0))」に変換する。なお、ＮＣプログラム２０１にロボット円弧補間が含まれている場合、プログラム変換部４１４は、ロボット円弧補間を、MOVECで示されるロボットプログラム命令に変換する。
【０１０５】
次に、図１７および図１８を用いて工作機械７０とロボット６０との連携動作について説明する。図１７は、実施の形態１にかかる数値制御装置によって制御される、工作機械およびロボットの動作手順を説明するための図である。
【０１０６】
制御システム１００Ａでは、ロボット６０が、未加工品置き場７５に置いてある未加工の加工ワーク８２を工作機械７０にロードする（ＳＴ１）。工作機械７０は、工具７１を用いて加工ワーク８２を加工する（ＳＴ２）。そして、ロボット６０が、加工済みの加工ワーク８２（完成品）を工作機械７０からアンロード（ＳＴ３）し、加工済みの加工ワーク８２を完成品置き場７７の仮置き場７６に置く。その後、ロボット６０が、外部ツールであるバリ取り工具８４をロボットハンド６１でつかみ、バリ取り工具８４が加工済みの加工ワーク８２のバリ取りを行う（ＳＴ４）。なお、以下の説明では、未加工の加工ワーク８２を未加工ワークといい、加工済みの加工ワーク８２を加工済みワークという場合がある。
【０１０７】
図１８は、図１７に示した動作が実行される際に用いられるＮＣプログラムを示す図である。図１８に示すＮＣプログラム５０１は、図１７に示した動作を実行するためのロボット指令を含んでいる。
【０１０８】
ＮＣプログラム５０１のうちの第１系統は、工作機械７０の動作が記述されたＮＣプログラムであり、工作機械７０を動作させるための指令が含まれている。ＮＣプログラム５０１のうちの第２系統は、ロボット６０の動作が記述されたＮＣプログラム（ＮＣロボットプログラム）であり、ロボット６０を動作させるためのロボット指令が含まれている。第１系統および第２系統は、工作機械７０の動作とロボット６０の動作との間の連携（同期）を取りながら、工作機械７０およびロボット６０を動作させることができる。
【０１０９】
ここでは、第１系統のＮＣプログラムおよび第２系統のＮＣプログラムといった表現は用いず、各々のＮＣプログラムの先頭に記載されているシーケンス番号（Ｎ番号）を用いて説明する。以下、数値制御装置１Ｘが各指令を実行した場合の、数値制御装置１Ｘでの処理、ロボット６０の動作、工作機械７０の動作について説明する。なお、数値制御装置１Ｘからロボット６０への指示の内容、数値制御装置１Ｘから工作機械７０への指示の内容については、説明を省略する場合がある。
【０１１０】
＜N110、N550での待ち合わせまでの処理＞
N500では、数値制御装置１Ｘが、ロボットモードのオン指令を実行し、ロボットモードをオンにする。
N510では、数値制御装置１Ｘが、ロボット座標を設定する。
N520では、ロボット６０が、未加工ワークを把持する位置へ移動する。
N530では、ロボット６０が、未加工ワークを把持する。
N540では、ロボット６０が、未加工ワークをロード位置へ位置決めする。
N550では、ロボット６０が、工作機械７０において加工ワーク８２を把持するチャックが開くのを待つ。
N100では、工作機械７０がチャックを開き、N110では、数値制御装置１Ｘが、工作機械７０のチャックを開いたことをロボット指令に伝える。ここでの数値制御装置１Ｘは、工作機械７０のチャックを開いたことを、N550の「!1L1」（チャック開待ち）に伝える。これらのN110およびN550の動作は、補間処理部３８のロボット指令待ち合わせ部３８１と、ロボット制御部４１ＸのＮＣ指令待ち合わせ部４１３との間で記憶部３４を介して行われる。
【０１１１】
具体的には、ロボット指令待ち合わせ部３８１が、N110を実行したことを示す情報を記憶部３４に格納し、ＮＣ指令待ち合わせ部４１３が、N550を実行したことを示す情報を記憶部３４に格納する。また、ロボット指令待ち合わせ部３８１は、N550を実行したことを示す情報を記憶部３４から読み出し、ＮＣ指令待ち合わせ部４１３は、N110を実行したことを示す情報を記憶部３４から読み出す。
【０１１２】
ロボット指令待ち合わせ部３８１は、N110を実行し、かつN550を実行したことを示す情報を記憶部３４から読み出した後に、N110の次のブロックの処理を実行する。ＮＣ指令待ち合わせ部４１３は、N550を実行しかつN110を実行したことを示す情報を記憶部３４から読み出した後に、N550の次のブロックの処理を実行する。すなわち、数値制御装置１Ｘは、N110およびN550の両方を実行した後、N120およびN560を実行する。このように、ロボット６０は、工作機械７０によってチャックが開けられるまで、次の処理の実行を待つ。
【０１１３】
ここで、N110、N550で用いた待ち合わせ指令について説明する。「!2L1」および「!1L1」は、待ち合わせ指令（同期命令）であり、「!2L1」および「!1L1」の両方が実行されるまで数値制御装置１Ｘは、N110の次のブロックの処理およびN550の次のブロックの処理を実行しない。すなわち、待ち合わせ指令があった場合、数値制御装置１Ｘは、工作機械７０とロボット６０との間の動作を同期させる。
【０１１４】
数値制御装置１Ｘは、「!mLn」の「m」が「1」の場合には第１系統の処理を待ち、「m」が「2」の場合には第２系統の処理を待つ。具体的には、工作機械７０への指令の実行中に工作機械７０への指令内にロボット６０の動作を待つ指令（!2Ln：第１の待機指令）が現れると、ロボット指令待ち合わせ部３８１が、ロボット６０の動作に対して待ち合わせを実行する。すなわち、ロボット指令待ち合わせ部３８１が、第１の待機指令に対応するロボット６０の動作（!1Ln）が完了するまで工作機械７０の動作を待機させる。
【０１１５】
また、ロボット６０への指令の実行中にロボット６０への指令内に工作機械７０の動作を待つ指令（!1Ln：第２の待機指令）が現れると、ＮＣ指令待ち合わせ部４１３が、工作機械７０の動作に対して待ち合わせを実行する。すなわち、ＮＣ指令待ち合わせ部４１３が、第２の待機指令に対応する工作機械７０の動作（!2Ln）が完了するまでロボット６０の動作を待機させる。このように、「!1Ln」および「!2Ln」といった待ち合わせ指令があると、制御演算部２Ｘは、工作機械７０とロボット６０との同期を実行する。
【０１１６】
「!mLn」の「n」（ｎは自然数）は、待ち合わせ指令の識別番号であり、同じ識別番号が付された指令間で待ち合わせ処理が行われる。以下、ＮＣプログラム５０１では、待ち合わせ指令を行う場合、N110およびN550と同様の動作によって待ち合わせを行うので、以降の説明では待ち合わせ処理の詳細な説明を省略する。なお、本実施の形態では、待ち合わせ指令に「!2L1」、「!1L1」といった記述を用いているが、待ち合わせ指令の記述は、「!2L1」、「!1L1」に限られることはなく、他の文字コードであってもよい。
【０１１７】
＜N120、N570での待ち合わせまでの処理＞
N560では、ロボット６０が未加工ワークを工作機械７０のチャックにロードする。N570では、ロボット６０が工作機械７０の動作を待ち（!1L2）、N120では、工作機械７０がロボット６０の動作を待つ（!2L2）。すなわち、工作機械７０は、未加工ワークがロボット６０によってロードされるのを待つ。
【０１１８】
＜N140、N580での待ち合わせまでの処理＞
数値制御装置１Ｘは、N120およびN570の両方を実行した後、N130およびN580を実行する。N130では、工作機械７０がチャックを閉じて、未加工ワークを把持する。N140では、工作機械７０がロボット６０の動作を待ち（!2L3）、N580では、ロボット６０が工作機械７０の動作を待つ（!1L3）。すなわち、ロボット６０は、工作機械７０がチャックを閉じるのを待つ。
【０１１９】
＜N150、N610での待ち合わせまでの処理＞
数値制御装置１Ｘは、N140およびN580の両方を実行した後、N150およびN590を実行する。すなわち、工作機械７０がチャックを閉じた後、N590では、ロボット６０が、ロボットハンド６１を開ける。これにより、ロボット６０は、未加工ワークを開放する。N600では、ロボット６０が、工作機械７０の外側にロボットハンド６１を退避させる。
【０１２０】
N610では、ロボット６０が工作機械７０の動作を待ち（!1L4）、N150では、工作機械７０がロボット６０の動作を待つ（!2L4）。すなわち、工作機械７０は、ロボットハンド６１が工作機械７０の外側に移動して未加工ワークのロードが完了するのを待つ。
【０１２１】
＜N220、N620での待ち合わせまでの処理＞
数値制御装置１Ｘは、N150およびN610の両方を実行した後、N160およびN620を実行する。すなわち、未加工ワークのロードが完了すると、N160では、工作機械７０が、加工ワーク８２がロードされる際に通過する自動ドアを閉じる。この後、工作機械７０が、N170〜N210に対応する処理、すなわち加工ワーク８２への加工を実行する。
【０１２２】
N220では、工作機械７０がロボット６０の動作を待ち（!2L5）、N620では、ロボット６０が工作機械７０の動作を待つ（!1L5）。すなわち、ロボット６０は、工作機械７０が加工ワーク８２の加工が完了するのを待つ。
【０１２３】
＜N240、N630での待ち合わせまでの処理＞
数値制御装置１Ｘは、N220およびN620の両方を実行した後、N230およびN630を実行する。すなわち、工作機械７０が加工を完了すると、N230では、工作機械７０が自動ドアを開ける。N240では、工作機械７０がロボット６０の動作を待ち（!2L6）、N630では、ロボット６０が工作機械７０の動作を待つ（!1L6）。すなわち、ロボット６０は、工作機械７０が自動ドアのオープンを完了するのを待つ。
【０１２４】
＜N250、N680での待ち合わせまでの処理＞
数値制御装置１Ｘは、N240およびN630の両方を実行した後、N240およびN640を実行する。すなわち、工作機械７０が自動ドアを開けると、N640では、ロボット６０が、ロボットハンド６１を工作機械７０のチャックの前方に移動させる。N650では、ロボット６０が、ロボットハンド６１を開き、N660では、ロボット６０が、ロボットハンド６１を加工済みワークの把持位置へ移動させ、N670では、ロボット６０が、ロボットハンド６１を閉じることによって加工済みワークを把持する。
【０１２５】
N680では、ロボット６０が工作機械７０の動作を待ち（!1L7）、N250では、工作機械７０がロボット６０の動作を待つ（!2L7）。すなわち、工作機械７０は、ロボット６０による加工済みワークの把持を待つ。
【０１２６】
＜N270、N690での待ち合わせまでの処理＞
数値制御装置１Ｘは、N250およびN680の両方を実行した後、N260およびN690を実行する。すなわち、ロボット６０が、ロボットハンド６１を閉じると、N260では、工作機械７０が、チャックを開放する。N270では、工作機械７０がロボット６０の動作を待ち（!2L8）、N690では、ロボット６０が工作機械７０の動作を待つ（!1L8）。すなわち、ロボット６０は、工作機械７０がチャックを開放するのを待つ。
【０１２７】
＜N290、N720での待ち合わせまでの処理＞
数値制御装置１Ｘは、N270およびN690の両方を実行した後、N280およびN700を実行する。すなわち、ロボット６０が、ロボットハンド６１を閉じると、N280では、工作機械７０が、工具７１を交換し、N700では、ロボット６０が、加工済みワークを把持したロボットハンド６１を工作機械７０の上部に退避させ、N710では、ロボット６０が、加工済みワークを把持したロボットハンド６１を自動ドアの前部に移動させる。
【０１２８】
N720では、ロボット６０が工作機械７０の動作を待ち（!1L9）、N290では、工作機械７０がロボット６０の動作を待つ（!2L9）。すなわち、ロボット６０は、工作機械７０による工具７１の交換を待ち、工作機械７０は、ロボット６０が加工ワーク８２をアンロードさせるのを待つ。ここでの加工ワーク８２のアンロード処理は、加工済みワークを工作機械７０の上部に退避させ、加工済みワークを把持したロボットハンド６１自動ドアの前部に移動させる処理である。
【０１２９】
＜N290、N720での待ち合わせの後の処理＞
ロボット６０がロボットハンド６１を自動ドアの前部に移動させると、N300では、工作機械７０が、自動ドアを閉じる。また、工作機械７０が工具７１を交換すると、N730では、ロボット６０が加工済みワークを仮置き場７６へ移動させ、N740では、ロボット６０が、加工済みワークを、仮置き場７６へ仮置きし、N750では、ロボット６０が、ロボットハンド６１を開く。これにより、ロボットハンド６１は、加工済みワークを開放して仮置き場７６へ載置する。
【０１３０】
N760では、ロボット６０が、ロボットハンド６１を工具置き場に移動させ、N770では、ロボット６０が、バリ取り工具８４を把持する。N780では、ロボット６０が、ロボットハンド６１で把持したバリ取り工具８４を、加工済みワークの仮置き場７６へ移動させ、N790では、ロボット６０が、バリ取り工具８４を使って、加工済みワークのバリ取りを行う。
【０１３１】
数値制御装置１Ｘは、図１８に示したＮＣプログラム５０１を用いて、ロボット６０および工作機械７０を制御する。このとき、数値制御装置１Ｘは、第２系統のロボット指令をロボットプログラムに変換したうえで、ロボット６０を制御する。これにより、制御システム１００Ａのユーザは、ロボットプログラムの知識がなくても、ＮＣプログラムでＮＣロボットプログラムをプログラミングでき、ＮＣプログラムでロボット６０を制御することができるので、段取り等の作業効率が向上する。また、ロボットプログラムは、ＮＣプログラムで記述されるので、工作機械７０とロボット６０との特定のタイミングにおける同期動作（ロボット６０のスタート時、ロボット６０の動作途中、ロボット６０の動作完了時）を容易にプログラミングすることができ、段取り等の作業効率が向上する。
【０１３２】
本実施の形態の数値制御装置１Ｘを用いない場合、ロボットのユーザが、ＮＣプログラムとは別にロボットプログラムを作成しておく必要がある。この場合、工作機械とロボットとの両方を利用するユーザは、ＮＣプログラムおよびロボットプログラムの両方の知識を持っている必要がある。すなわち、数値制御装置１Ｘを用いない場合、ロボットプログラムの知識が無ければ、ロボットを制御できない。一方、数値制御装置１Ｘを用いる場合、制御システム１００Ａのユーザは、ＮＣプログラムの知識があれば、工作機械７０およびロボット６０を制御することができる。
【０１３３】
このように実施の形態１によれば、ＮＣプログラムとロボットプログラムとの対応関係である対応関係情報１０２に基づいて、ＮＣプログラム内のロボット６０への指令をロボットプログラムに変換するので、ＮＣプログラムを用いてロボット６０を制御することが可能となる。
【０１３４】
また、数値制御装置１Ｘが、ロボット指令待ち合わせ部３８１およびＮＣ指令待ち合わせ部４１３を備えているので、ＮＣプログラムおよびロボットプログラムの両方を同時に実行した場合であっても工作機械７０とロボット６０との間で同期をとることができる。
【０１３５】
また、本実施の形態を用いれば、ＮＣプログラムとロボットプログラムとを図１８のように並べて確認できるので、プログラム作成時に工作機械７０とロボット６０との同期処理を簡単に確認することができる。
【０１３６】
従来のように、ＮＣプログラムとロボットプログラムとをそれぞれ作成する場合、ＮＣプログラムを記憶しておくメモリに加えて、ロボットプログラムを記憶しておくメモリが必要であったが、本実施の形態を用いれば、ロボットプログラムを記憶しておくメモリが不要となり、装置構成を簡略化することができる。
【０１３７】
実施の形態２．
次に、図１９から図２１を用いてこの発明の実施の形態２について説明する。実施の形態２では、数値制御装置によって入力された指令座標に基づいてロボット６０を制御することができるロボットインタフェース（ＩＦ：InterFace）をロボットコントローラが備えている。数値制御装置は、ロボットＩＦにアクセスし、ロボットＩＦに指令座標を入力することで、ロボットＩＦにロボット６０を制御させる。
【０１３８】
図１９は、実施の形態２にかかる数値制御装置の構成例を示す図である。図１９の各構成要素のうち図２に示す実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１３９】
実施の形態２にかかる数値制御装置１Ｙは、数値制御装置１Ｘが備えている制御演算部２Ｘの代わりに制御演算部２Ｙを備えている。また、数値制御装置１Ｙは、数値制御装置１Ｘが備えているロボットコントローラ５０Ｘの代わりにロボットコントローラ５０Ｙを備えている。
【０１４０】
ロボットコントローラ５０Ｙは、ロボットＩＦ５１０を備えている。ロボットＩＦ５１０は、ロボット６０に接続されており、ロボット６０を制御する。ロボットＩＦ５１０では、ロボット６０への制御内容毎に関数が割り当てられている。すなわち、ロボットＩＦ５１０では、ロボット６０への動作指示と、関数とが対応付けされている。
【０１４１】
ロボットＩＦ５１０は、制御演算部２Ｙから関数が指定されると、指定された関数に対応する動作をロボット６０に指示する。具体的には、ロボットＩＦ５１０は、ロボット６０を制御するための関数に対して制御演算部２Ｙから指令座標（引数）が指定されると、指定された指令座標に基づいて、ロボット６０を制御する。すなわち、ロボットＩＦ５１０は、制御演算部２Ｙからアクセスされると、予め設定されている処理をロボット６０に実行する。このように、ロボットＩＦ５１０は、ロボット６０の座標系で規定された関数および指令座標でアクセスされた場合に関数および指令座標に対応する処理をロボット６０に実行する。
【０１４２】
ロボット６０への制御内容に割り当てられた関数には、ロボット関節補間に用いられる関数、ロボット直線補間に用いられる関数、ロボット円弧補間に用いられる関数などがある。ロボット６０は、複数種類の動作を実行するので、ロボットＩＦ５１０へは、複数種類の関数が設定されている。
【０１４３】
制御演算部２Ｙは、制御演算部２Ｘが備えているロボット制御部４１Ｘの代わりに、ロボット制御部４１Ｙを備えている。ロボット制御部４１Ｙは、プログラム変換部４１４の代わりにロボットＩＦアクセス部４１５を備えている。
【０１４４】
ロボットＩＦアクセス部４１５は、ＮＣプログラムのうちのＮＣロボットプログラムに基づいて、ロボット６０を制御させる際に用いる関数を決定し、ロボット６０を制御させる際に用いる指令座標を算出する。ロボットＩＦ５１０へのアクセス部であるロボットＩＦアクセス部４１５は、ロボット６０を制御させる関数を指定したうえで、指令座標をロボットＩＦ５１０に入力する。すなわち、ロボットＩＦアクセス部４１５は、ＮＣロボットプログラムに対応する関数および指令座標でロボットＩＦ５１０にアクセスする。
【０１４５】
実施の形態１では、プログラム変換部４１４が、ＮＣプログラム内のロボット指令をロボットプログラムに変換して、ロボットコントローラ５０Ｘに送信したが、実施の形態２では、ロボットＩＦアクセス部４１５が、ロボットＩＦ５１０に直接アクセスして指令座標を入力する。
【０１４６】
ここで、ロボットＩＦアクセス部４１５によるロボットＩＦ５１０へのアクセス例について説明する。図２０は、実施の形態２にかかる数値制御装置によるロボットＩＦへのアクセス処理を説明するための図である。図２０では、ＮＣロボットプログラムを含んだ変換前のＮＣプログラム２０３と、ロボットＩＦ５１０にアクセスする際に用いられるアクセスデータ２０４とを図示している。ＮＣプログラム２０３は、実施の形態１の図１６で説明したＮＣプログラム２０１と同様の指令を有したプログラムであり、ブロック番号のみ異なる。
【０１４７】
ロボットＩＦアクセス部４１５は、アクセスデータ２０４を格納している。アクセスデータ２０４は、ロボットＩＦ５１０にアクセスするためのデータであり、ロボット６０の動作内容を指定した関数と、ロボット６０を制御する際に用いられる指令座標（データ）とを含んでいる。
【０１４８】
ロボットＩＦアクセス部４１５は、N21のG198によってロボット指令モードがオンになった後、N26のG199によってロボット指令モードがオフとなるまでのＮＣロボットプログラムに対し、ロボットＩＦ５１０にアクセスする。具体的には、ロボットＩＦアクセス部４１５は、対応関係情報１０２およびＮＣプログラム２０３に含まれるＮＣロボットプログラムに基づいて、アクセスデータ２０４に含まれる関数およびデータを抽出し、抽出した関数およびデータでロボットＩＦ５１０にアクセス（呼び出し及び実行）する。ここでのＮＣプログラム２０３には、ＮＣロボットプログラムの指令として、N23、N24、N25の指令が含まれている。
【０１４９】
ＮＣプログラム２０３に含まれている、「N23  G200  RX10.  RY10.  RZ10.  RA10.  RB10.  RC10.  RS1  RT5；(指令座標(10,  10,  10,  10,  10,  10,  1,  5))」および「N24  RX200.  (指令座標(200,  10,  10,  10,  10,  10,  1,  5))」は、ロボット関節補間の指令である。ロボットＩＦアクセス部４１５は、これらのロボット関節補間の指令に基づいて、ロボット関節補間に対応する関数を抽出し、抽出した関数でロボットＩＦ５１０にアクセスする。
【０１５０】
すなわち、ロボットＩＦアクセス部４１５は、上述したN23の指令に対してロボットＩＦ５１０に、「N23  rciMoveDirect(10,10,10,10,10,10,1,5,0)；(指令座標(10,  10,  10,  10,  10,  10,  1,  5,  0))」の内容でアクセスする。rciMoveDirectは、ロボットＩＦ５１０に対してロボット関節補間を指定する関数である。
【０１５１】
また、ロボットＩＦアクセス部４１５は、上述したN24の指令に対してロボットＩＦ５１０に、「N24  rciMoveDirect(200,10,10,10,10,10,1,5,0);(指令座標(200,  10,  10,  10,  10,  10,  1,  5,  0))」の内容でアクセスする。
【０１５２】
ロボットＩＦアクセス部４１５によるロボットＩＦ５１０へのアクセスにより、ロボットＩＦ５１０は、アクセスに対応する通信を実行する。これにより、ロボットコントローラ５０Ｙは、関数に含まれる指令座標に従ってロボット６０を制御する。すなわち、ロボットコントローラ５０Ｙは、アクセスに対応する動作（ロボット関節補間）をロボット６０に実行させる。これにより、ロボット６０は、関節補間されながら目標値に移動する。
【０１５３】
また、ＮＣプログラム２０３に含まれている、「N25  G201  RX30.;(指令座標(30,  10,  10,  10,  10,  10,  1,  5))」は、ロボット直線補間の指令である。ロボットＩＦアクセス部４１５は、このロボット直線補間の指令に基づいて、ロボット直線補間に対応する関数を生成し、生成した関数でロボットＩＦ５１０にアクセスする。
【０１５４】
すなわち、ロボットＩＦアクセス部４１５は、上述したN25の指令に対してロボットＩＦ５１０に、「N25  rciMoveLinear(30,10,10,10,10,10,1,5,0);(指令座標(30,  10,  10,  10,  10,  10,  1,  5,  0))」の内容でアクセスする。rciMoveLinearは、ロボットＩＦ５１０に対してロボット直線補間を指定する関数である。ロボットＩＦアクセス部４１５によるロボットＩＦ５１０へのアクセスにより、ロボットＩＦ５１０は、アクセスに対応する動作（ロボット直線補間）をロボット６０に実行させる。ロボットＩＦ５１０は、関数に含まれる指令座標に従ってロボット６０を制御する。これにより、ロボット６０は、直線補間されながら目標値に移動する。
【０１５５】
次に、数値制御装置１Ｙによる、ＮＣプログラムからアクセスデータを生成する処理の処理手順について説明する。図２１は、実施の形態２にかかる数値制御装置によるアクセスデータの生成処理手順を示すフローチャートである。ここでは、数値制御装置１Ｙがアクセスデータ内の関数および指令座標を作成し、関数および指令座標に従ってロボットＩＦ５１０にアクセスする処理を説明する。
【０１５６】
図２１に示したステップＳ１からＳ３の処理は、実施の形態１の図１５で説明した処理と同じ処理である。ステップＳ３の処理の後、ロボットＩＦアクセス部４１５は、ＮＣプログラム内のＮＣロボットプログラムに基づいて、動作の種類毎に、ロボットＩＦ５１０にアクセスする際に指定する関数を決定する。この関数には、ＮＣロボットプログラムに設定されていた指令座標に対応する指令座標が設定されている。ロボットＩＦアクセス部４１５は、決定した関数を指定してロボットＩＦ５１０にアクセスする。ロボットＩＦアクセス部４１５は、ロボットＩＦ５１０にアクセスし（ステップＳ１０）、例えば、以下の（機能４）から（機能８）の各動作に対応する関数を指定し、指令座標を入力する。
（機能４）方向角制御パラメータ設定
（機能５）ロボット関節補間
（機能６）連続動作の指定
（機能７）ロボット直線補間
（機能８）ロボット円弧補間
【０１５７】
ロボットＩＦアクセス部４１５が、ロボットＩＦ５１０に関数を指定して指令座標を入力することにより、ロボットＩＦ５１０は、指定された関数に指令座標のデータをセットする。ロボットコントローラ５０Ｙは、ロボットＩＦ５１０にセットされたデータに従ってロボット６０を制御する（ステップＳ１１）。
【０１５８】
この後、ロボット指令解析部３７１が、ロボットモードのオフ指令（G199）を解析すると、数値制御装置１Ｙは、ロボットモードをオフにして、ロボット６０への制御を終了する（ステップＳ７）。
【０１５９】
このように実施の形態２によれば、ユーザは、ロボットプログラムの知識がなくても、ロボット６０への指令をＮＣプログラムで作成することでＮＣプログラムによってロボット６０を制御することができるので、段取り等の作業効率が向上する。
【０１６０】
実施の形態３．
次に、図２２から図２４を用いてこの発明の実施の形態３について説明する。実施の形態３では、工作機械７０に配置された表示部４が表示する表示画面で、ＮＣロボットプログラムの編集、ロボット６０の状態の確認を行うことを可能とする。
【０１６１】
図２２は、実施の形態３にかかる数値制御装置の構成例を示す図である。図２２の各構成要素のうち図２に示す実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１６２】
実施の形態３にかかる数値制御装置１Ｘａは、数値制御装置１Ｘが備えている制御演算部２Ｘの代わりに制御演算部２Ｘａを備えている。また、制御演算部２Ｘａは、制御演算部２Ｘと比較して、入力制御部３２の代わりに入力制御部３２ａを備え、画面処理部３１の代わりに画面処理部３１ａを備えている。
【０１６３】
入力制御部３２ａは、ＮＣロボットプログラム編集部３２１を備え、画面処理部３１ａは、ＮＣロボットデータ表示部３１１を備えている。ＮＣロボットプログラム編集部３２１は、ユーザが入力操作部３Ｘに入力した情報に基づいて、ＮＣロボットプログラムを編集する。ＮＣロボットプログラム編集部３２１は、編集後のＮＣロボットプログラムを、データ設定部３３を介して記憶部３４に記憶させる。ＮＣロボットデータ表示部３１１は、記憶部３４から、編集後のＮＣロボットプログラムを読み出して、表示部４に表示する。また、数値制御装置１Ｘａの表示部４は、後述する編集画面４０１、ロボット状態表示画面４０２を表示する。
【０１６４】
図２３は、実施の形態３にかかる数値制御装置が表示する、ＮＣロボットプログラムの編集画面の例を示す図である。図２３では、ＮＣロボットプログラムを編集する際に表示される画面である編集画面４０１を示している。編集画面４０１では、入力領域Ａ１と、ガイダンス表示領域Ａ２と、指令設定データ入力領域Ａ３と、ヘルプ表示領域Ａ４と、編集内容表示領域Ａ５とが表示される。
【０１６５】
入力領域Ａ１は、ＮＣロボットプログラムとして入力された内容を表示する領域である。ＮＣロボットプログラムは、編集内容表示領域Ａ５に表示される。編集内容表示領域Ａ５にカーソルがある場合にキーボード等の入力装置で文字を入力することにより、ＮＣロボットプログラムを作成することができる。ガイダンス表示領域Ａ２は、ロボット指令の動作、設定項目の意味等をイメージ図およびガイダンスで表示する領域である。ガイダンス表示領域Ａ２に表示される内容は、選択中のロボット指令に応じて切替わる。
【０１６６】
指令設定データ入力領域Ａ３は、作成するロボット指令のデータ（数値等）が入力されると、入力されたデータを表示する領域である。ヘルプ表示領域Ａ４は、カーソル位置の設定項目の意味および設定範囲を表示する領域である。編集内容表示領域Ａ５は、編集されたＮＣロボットプログラムを表示する領域である。編集画面４０１では、編集内容表示領域Ａ５が、編集画面４０１の右側の領域に配置されている。インプットキーが押下されると、編集されたＮＣロボットプログラムが編集内容表示領域Ａ５に表示される。
【０１６７】
編集画面４０１へのデータの入力は、入力操作部３Ｘにデータを入力することによって行われる。入力操作部３Ｘに入力されたコード等は、ＮＣロボットプログラム編集部３２１に送られる。ＮＣロボットプログラム編集部３２１は、入力操作部３Ｘに入力されたコードに応じた処理を実行することによって、ＮＣロボットプログラムを編集する。ＮＣロボットプログラム編集部３２１で編集されたＮＣロボットプログラムは、記憶部３４のＮＣプログラム記憶エリア３４３に格納される。
【０１６８】
また、ＮＣロボットデータ表示部３１１は、編集されたＮＣロボットプログラムを、ＮＣプログラム記憶エリア３４３から読み出して、表示部４に表示する。
【０１６９】
また、ロボット６０の動作中は、表示部４に表示されるロボット状態表示画面でロボット６０の状態、ロボット６０のデータを確認することができる。ここで、ロボット６０の状態を表示する状態表示画面、すなわちロボット状態表示画面について説明する。
【０１７０】
図２４は、実施の形態３にかかる数値制御装置が表示するロボット状態表示画面の例を示す図である。ロボット状態表示画面４０２では、以下の（Ｂ１）から（Ｂ８）の内容が表示される。
（Ｂ１）ロボットコントローラ接続状態
（Ｂ２）ロボットコントローラステータス
（Ｂ３）運転モード
（Ｂ４）手動モード
（Ｂ５）ロボット動作ステータス
（Ｂ６）ロボットオーバライド
（Ｂ７）ロボット座標系表示
（Ｂ８）モーダル表示
【０１７１】
（Ｂ１）
ロボットコントローラ接続状態は、ロボットコントローラ５０Ｘがロボット６０に接続されているか否かを示す。
【０１７２】
（Ｂ２）
ロボットコントローラステータスは、ロボットコントローラ５０Ｘの状態を示す。
【０１７３】
（Ｂ３）
運転モードは、ロボット６０の運転モードを示す。運転モードには、自動運転モードと手動運転モードとがある。
【０１７４】
（Ｂ４）
手動モードは、運転モードが手動運転モードである場合に、ロボット増分値指令を手動で入力できる状態であるか否かを示す。
【０１７５】
（Ｂ５）
ロボット動作ステータスは、ロボット６０の動作状態を示す。ロボット動作ステータスには、ロボット６０の停止中とロボット６０の動作中とがある。
【０１７６】
（Ｂ６）
ロボットオーバライドは、オーバライドスイッチの状態である。オーバライドスイッチは、ＮＣプログラムで指定された送り速度に倍率を掛けるためのスイッチである。オーバライドスイッチは、入力操作部３Ｘ内に配置されている。図２２では、オーバライドスイッチの図示を省略している。
【０１７７】
オーバライドスイッチは、ＮＣロボットプログラムで指定された送り速度に倍率（オーバライド）を掛けるためのスイッチである。なお、オーバライドスイッチは、工作機械７０用のＮＣプログラムで指定された送り速度に倍率を掛けてもよい。
【０１７８】
制御演算部２２が備えるオーバライド制御部（図２２では不図示）がオーバライドスイッチの操作状態を検出し、検出した状態に対応する割合（％）と速度データとを、ロボット制御部４１Ｘに送る。ロボット制御部４１Ｘは、例えば１０％というデータを受け取った場合、ロボット６０の速度が、速度データで示される速度の１０％となるようにして、ロボットコントローラ５０Ｘに速度データを送る。
【０１７９】
（Ｂ７）
ロボット座標系表示は、ロボット６０の座標系に設定されている座標系を示す。図２４では、ベース座標系（Ｂ）の種類が「１」で示される種類であり、ツール座標系（Ｔ）の種類が「２」で示される種類であり、ツール座標系のツールタイプ（Ｉ）が「０」で示される種類である場合を示している。数値制御装置１Ｘａは、ロボット座標系設定指令によってベース座標系が指定されている場合は、「１」で示される種類のベース座標系でロボット６０を動作させ、ロボット座標系設定指令によってツール座標系が指定されている場合は、「２」で示される種類のツール座標系でロボット６０を動作させる。
【０１８０】
（Ｂ８）
モーダル表示は、実行中のモーダル指令を示している。
【０１８１】
数値制御装置１Ｘａでは、記憶部３４の表示データ記憶エリア３４４にまとめて格納されているロボット６０に関連するデータを、ＮＣロボットデータ表示部３１１が読み出して、表示部４に表示する。
【０１８２】
このように、数値制御装置１Ｘａのユーザは、ＮＣロボットプログラムの編集、ロボット６０の状態の確認をロボットコントローラ５０Ｘに対して行わなくてもよく、数値制御装置１ＸａでＮＣロボットプログラムの編集およびロボット６０の状態表示を行うことができる。したがって、プログラム作成の作業効率が向上する。
【０１８３】
実施の形態４．
次に、図２５から図２８を用いてこの発明の実施の形態４について説明する。実施の形態４では、数値制御装置が備える手動ハンドルまたはジョグスイッチを用いてロボット６０を手動操作する。
【０１８４】
図２５は、実施の形態４にかかる数値制御装置を備えた制御システムの構成を示す図である。図２５の各構成要素のうち図１に示す実施の形態１の制御システム１００Ａと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１８５】
制御システム１００Ｂは、工作機械７０と、数値制御装置１Ｚと、ロボットコントローラ５０Ｘと、ロボット６０とを備えている。数値制御装置１Ｚは、ＣＮＣユニット６と、入力操作部３Ｚとを備えている。
【０１８６】
入力操作部３Ｚは、入出力ユニット５１、非常停止ボタン５２、手動ハンドル５５および操作盤５４を備えている。図２５に示したように、手動ハンドル５５は、工作機械７０に配置される数値制御装置１Ｚに１つだけ配置されている。このように、工作機械には１つの手動ハンドルしか実装されていないケースが多い。したがって、制御システム１００Ｂでは、１つの手動ハンドル５５を工作機械７０用と、ロボット６０用とに切り替えて用いる。
【０１８７】
操作盤５４は、実施の形態１で説明した操作盤５３の機能に加えて、ジョグスイッチ５７と、オーバライドスイッチ５６と、切替スイッチ５８とを備えている。
【０１８８】
手動ハンドル５５は、工作機械７０およびロボット６０を手動で操作するためのハンドルである。本実施の形態では、工作機械７０を手動でハンドル操作する場合と、ロボット６０を手動でハンドル操作する場合とで同一の手動ハンドル５５が用いられる。なお、手動ハンドル５５は、操作盤５４に配置されてもよい。
【０１８９】
オーバライドスイッチ５６は、ＮＣロボットプログラムで指定された送り速度に倍率（オーバライド）を掛けるためのスイッチである。なお、オーバライドスイッチ５６は、工作機械７０用のＮＣプログラムで指定された送り速度に倍率を掛けてもよい。
【０１９０】
ジョグスイッチ５７は、工作機械７０およびロボット６０をジョグ操作するためのスイッチである。なお、ジョグスイッチ５７は、工作機械７０へのジョグ操作のみに用いられてもよい。この場合、ロボット６０へのジョグ操作は、表示部４に表示されている画面に対して行われる。
【０１９１】
手動ハンドル５５およびジョグスイッチ５７が手動操作部である。また、工作機械７０への手動操作が第１の手動操作であり、ロボット６０への手動操作が第２の手動操作である。
【０１９２】
切替スイッチ５８は、手動ハンドル５５およびジョグスイッチ５７を、ロボット６０用または工作機械７０用に切替えるスイッチである。切替スイッチ５８は、ハンドル操作による操作対象を切替える。すなわち、切替スイッチ５８は、ハンドル操作またはジョグスイッチ５７に対応するデータを、工作機械７０への操作を示す操作データとして後述する制御演算部２Ｚに入力するか、ロボット６０へのハンドル操作を示す操作データとして制御演算部２Ｚに入力するかを切替える。
【０１９３】
図２６は、実施の形態４にかかる数値制御装置の構成例を示す図である。図２６の各構成要素のうち図２に示す実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。なお、図２６では、入力操作部３Ｚが備える構成要素として、手動ハンドル５５、ジョグスイッチ５７、およびオーバライドスイッチ５６を図示しているが、その他の構成要素の図示は省略していている。
【０１９４】
数値制御装置１Ｚは、制御演算部２Ｘの代わりに制御演算部２Ｚを備えている。制御演算部２Ｚは、制御信号処理部３５Ｘの代わりに制御信号処理部３５Ｚを備えている。制御信号処理部３５Ｚは、ハンドル切替部３５１、およびロボット軸選択部３５２を備えている。
【０１９５】
ハンドル切替部３５１は、操作盤５４に対し、ハンドル操作による操作対象を切り替える切替スイッチ５８の状態を確認し、手動ハンドル５５が、工作機械７０を制御する状態にあるか、ロボット６０を制御する状態にあるかを判定する。ハンドル切替部３５１は、切替スイッチ５８の状態に基づいて、手動ハンドル５５に対するハンドル操作を、ロボット６０へのハンドル操作として扱うか、工作機械７０へのハンドル操作として扱うかを切替える。
【０１９６】
ハンドル切替部３５１は、ハンドル操作をロボット６０へのハンドル操作として扱う場合には、ハンドル操作に対応するデータを、ロボット６０を操作するためのデータとして共有エリア３４５に格納する。ロボット６０を操作するためのデータは、手動ハンドル５５がハンドル操作に対して出力するハンドルパルスジェネレータのデータであり、ロボット６０の特定の箇所を移動させる移動量に対応している。
【０１９７】
ハンドル切替部３５１は、ハンドル操作を工作機械７０へのハンドル操作として扱う場合には、ハンドル操作に対応するデータを、工作機械７０を操作するためのデータとして共有エリア３４５に格納する。工作機械７０を操作するためのデータは、手動ハンドル５５がハンドル操作に対して出力するハンドルパルスジェネレータのデータであり、工作機械７０の特定の箇所を移動させる移動量に対応している。
【０１９８】
ＰＬＣ操作部５または操作盤５４には、ＮＣ軸を指定するボタンがＮＣ軸毎に配置されている。ＮＣ軸を指定するボタンは、ロボット６０を制御する状態にある場合には、ロボット軸を指定するボタンとして使用される。
【０１９９】
ロボット軸選択部３５２は、ロボット６０を制御する状態にある場合、ＮＣ軸を指定するボタンとロボット軸を指定するボタンとの対応関係を示す情報に基づいて、ユーザによって指定されたボタンに対応するロボット軸を選択する。ＮＣ軸とロボット軸との対応関係を示す情報は、例えば、記憶部３４に格納されている。ロボット軸選択部３５２は、選択したロボット軸を共有エリア３４５に格納する。
【０２００】
また、制御演算部２Ｚは、手動操作データ変換部４２と、オーバライド制御部４３とを備える。手動操作データ変換部４２は、手動ハンドル５５がロボット６０を操作する状態にある場合、ユーザによるハンドル操作に対応するデータを読み取る。ハンドル操作に対応するデータは、ハンドルパルスジェネレータのデータであり、ロボット６０を移動させる移動量に対応している。手動操作データ変換部４２は、ハンドル操作に対応するデータがロボット６０を操作するためのデータである場合に、ハンドルパルスジェネレータのデータを共有エリア３４５から読み出す。
【０２０１】
手動操作データ変換部４２は、読み出したデータを、操作盤５４への操作によって選択されたロボット軸のデータ（ロボット座標系のデータ）として、ロボットコントローラ５０Ｘに送る。すなわち、手動操作データ変換部４２は、ロボット軸選択部３５２で選択されたロボット軸と共有エリア３４５に保存された移動量とを指定したロボットプログラムを作成してロボットコントローラ５０Ｘに送る。手動操作データ変換部４２は、複数のロボット軸が選択されている場合、ロボット６０を操作するためのデータを、各ロボット軸に分配する。
【０２０２】
オーバライド制御部４３は、オーバライドスイッチ５６の状態を検出し、検出した状態に対応する速度データの割合を、手動操作データ変換部４２に送る。
【０２０３】
手動ハンドル５５が工作機械７０を制御する状態にある場合、数値制御装置１Ｚは、ユーザによるハンドル操作に対して工作機械７０を操作する。
【０２０４】
また、ジョグスイッチ５７が用いられる場合、手動ハンドル５５と同様な方法によって、ジョグ操作を工作機械７０用またはロボット６０用に切替えてもよい。ジョグスイッチ５７でロボット６０が操作される場合、手動操作データ変換部４２が、ジョグ操作に対応するデータを共有エリア３４５から読み出し、読み出したデータを、ユーザによって選択されたロボット軸のデータに変換してロボットコントローラ５０Ｘに送る。ロボット６０を操作するためのデータは、ジョグスイッチ５７がジョグ操作に対して出力するデータであり、ロボット６０の特定の箇所を移動させる移動量に対応している。
【０２０５】
また、ジョグスイッチ５７で工作機械７０が操作される場合、補間処理部３８が、ジョグ操作に対応するデータを共有エリア３４５から読み出し、読み出したデータを、ユーザによって選択された駆動軸または主軸のデータに変換して工作機械７０に送る。
【０２０６】
なお、数値制御装置１Ｚは、ロボット６０へのジョグ操作を受け付ける画面であるジョグ操作受付画面を表示部４に表示させてもよい。図２７は、実施の形態４にかかる数値制御装置が表示するジョグ操作受付画面の例を示す図である。
【０２０７】
ジョグ操作受付画面４０３は、ロボット６０に対する操作対象として選択可能なロボット軸の名称を表示する領域Ｃ１を有している。ジョグ操作受付画面４０３において、ユーザが所望のロボット軸の名称をタッチすることでロボット軸が選択される。図２７に示す例では、ロボット軸としてＸ軸が選択されている場合を示している。
【０２０８】
また、ジョグ操作受付画面４０３は、ジョグ操作を行うためのジョグボタンＣ２を表示する。ジョグボタンＣ２がユーザによって押下またはタッチされると、数値制御装置１Ｚは、ロボット軸のＸ軸へのジョグ操作（手動操作）を受け付ける。このとき、ロボット６０の動作が速すぎる場合であって、かつロボット６０を手動操作で制御する状態にある場合には、オーバライドスイッチ５６によってロボット６０の速度を下げることも可能である。
【０２０９】
ユーザによってオーバライドスイッチ５６が操作された場合、オーバライド制御部４３がオーバライドスイッチ５６の状態を検出し、検出した状態に対応する割合（％）と速度データとを、手動操作データ変換部４２に送る。手動操作データ変換部４２は、例えば１０％というデータを受け取った場合、ロボット６０の速度が、速度データで示される速度の１０％となるようにして、ロボットコントローラ５０Ｘに速度データを送る。
【０２１０】
このように実施の形態４によれば、数値制御装置１Ｚのユーザは、ロボット６０への手動操作をロボットコントローラ５０Ｘに対して行わなくてもよく、数値制御装置１Ｚでロボット６０への手動操作を行えるので、ユーザがロボットハンド６１の位置を教示する教示作業などの作業効率が向上する。
【０２１１】
ここで、数値制御装置１Ｘが備える制御演算部２Ｘ、数値制御装置１Ｘａが備える制御演算部２Ｘａ、数値制御装置１Ｙが備える制御演算部２Ｙ、および数値制御装置１Ｚが備える制御演算部２Ｚのハードウェア構成について説明する。なお、制御演算部２Ｘ，２Ｘａ，２Ｙ，２Ｚは、同様のハードウェア構成を有しているので、ここでは制御演算部２Ｘのハードウェア構成について説明する。
【０２１２】
図２８は、実施の形態１にかかる制御演算部のハードウェア構成例を示す図である。制御演算部２Ｘは、図２８に示したプロセッサ３０１およびメモリ３０２により実現することができる。プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）である。
【０２１３】
制御演算部２Ｘは、プロセッサ３０１が、メモリ３０２で記憶されている、制御演算部２Ｘの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部２Ｘの手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【０２１４】
プロセッサ３０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ３０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【０２１５】
また、制御演算部２Ｘを専用のハードウェアで実現してもよい。また、制御演算部２Ｘの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０２１６】
なお、実施の形態１から４で説明した内容を組み合わせてもよい。例えば、数値制御装置１Ｘａ，１Ｙは、制御システム１００Ａに配置されてもよいし、制御システム１００Ｂに配置されてもよい。また、数値制御装置１Ｚは、制御システム１００Ａに配置されてもよい。また、制御演算部２Ｙ，２Ｚには、画面処理部３１および入力制御部３２の代わりに画面処理部３１ａおよび入力制御部３２ａが配置されてもよい。また、数値制御装置１Ｘａ，１Ｚには、ロボット制御部４１Ｘおよびロボットコントローラ５０Ｘの代わりにロボット制御部４１Ｙおよびロボットコントローラ５０Ｙが配置されてもよい。
【０２１７】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０２１８】
１Ｘ，１Ｘａ，１Ｙ，１Ｚ  数値制御装置、２Ｘ，２Ｘａ，２Ｙ，２Ｚ  制御演算部、３Ｘ，３Ｚ  入力操作部、４  表示部、６  ＣＮＣユニット、３１，３１ａ  画面処理部、３２，３２ａ  入力制御部、３４  記憶部、３５Ｘ，３５Ｚ  制御信号処理部、３７  解析処理部、３８  補間処理部、４１Ｘ，４１Ｙ  ロボット制御部、４２  手動操作データ変換部、４３  オーバライド制御部、５０Ｘ，５０Ｙ  ロボットコントローラ、５１  入出力ユニット、５２  非常停止ボタン、５３，５４  操作盤、５５  手動ハンドル、５６  オーバライドスイッチ、５７  ジョグスイッチ、５８  切替スイッチ、６０  ロボット、６１  ロボットハンド、７０  工作機械、７１  工具、７５  未加工品置き場、７６  仮置き場、７７  完成品置き場、８２  加工ワーク、８４  バリ取り工具、９０  駆動部、１００Ａ，１００Ｂ  制御システム、１０１  ロボット指令一覧情報、１０２  対応関係情報、１０３  関節補間情報、１０４  アドレス情報、１０５  直線補間情報、１０６  円弧補間情報、２０１，２０３，５０１  ＮＣプログラム、２０２  ロボットプログラム、２０４  アクセスデータ、３０１  プロセッサ、３０２  メモリ、３１１  ＮＣロボットデータ表示部、３２１  ＮＣロボットプログラム編集部、３４３  ＮＣプログラム記憶エリア、３４５  共有エリア、３５１  ハンドル切替部、３５２  ロボット軸選択部、３７１  ロボット指令解析部、３８１  ロボット指令待ち合わせ部、４０１  編集画面、４０２  ロボット状態表示画面、４０３  ジョグ操作受付画面、４１１  座標設定部、４１２  モード設定部、４１３  ＮＣ指令待ち合わせ部、４１４  プログラム変換部、４１５  ロボットＩＦアクセス部、５１０  ロボットＩＦ、ＨＰ  補助点、Ｐ１  開始位置、Ｐ２  途中位置、Ｐ３  到達位置、ＰＡ，ＰＣ，ＰＥ  始点、ＰＢ，ＰＤ，ＰＦ  終点、Ｑ１  基準方向、Ｔ１，Ｔ２  経路。
【要約】
数値制御装置（１Ｘ）が、工作機械（７０）およびロボット（６０）を、第１の座標系で規定されたＮＣプログラムを用いて制御する制御演算部（２Ｘ）を有し、制御演算部（２Ｘ）は、第１のプログラム言語で記述された工作機械（７０）への指令である第１の指令と第１のプログラム言語で記述されたロボットへの指令である第２の指令とを含んだＮＣプログラムを記憶する記憶部（３４）と、第２の指令を、ロボット（６０）を制御する際に用いられるロボットプログラムである第３の指令に変換するプログラム変換部（４１４）と、を備え、制御演算部（２Ｘ）は、第１の指令を用いて工作機械（７０）を制御し、第３の指令を用いてロボット（６０）を制御する。【図１】
0006647472.tif 000002
【図２】
0006647472.tif 000003
【図３】
0006647472.tif 000004
【図４】
0006647472.tif 000005
【図５】
0006647472.tif 000006
【図６】
0006647472.tif 000007
【図７】
0006647472.tif 000008
【図８】
0006647472.tif 000009
【図９】
0006647472.tif 000010
【図１０】
0006647472.tif 000011
【図１１】
0006647472.tif 000012
【図１２】
0006647472.tif 000013
【図１３】
0006647472.tif 000014
【図１４】
0006647472.tif 000015
【図１５】
0006647472.tif 000016
【図１６】
0006647472.tif 000017
【図１７】
0006647472.tif 000018
【図１８】
0006647472.tif 000019
【図１９】
0006647472.tif 000020
【図２０】
0006647472.tif 000021
【図２１】
0006647472.tif 000022
【図２２】
0006647472.tif 000023
【図２３】
0006647472.tif 000024
【図２４】
0006647472.tif 000025
【図２５】
0006647472.tif 000026
【図２６】
0006647472.tif 000027
【図２７】
0006647472.tif 000028
【図２８】
0006647472.tif 000029