(57)【特許請求の範囲】
【請求項１】
被加工物の加工を行う工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、
前記ロボットへの手動操作を受け付ける入力操作部と、
数値制御プログラムを用いて前記工作機械を制御するとともに、前記手動操作に基づいて前記ロボットを制御する制御演算部と、
前記ロボットの手動操作の可否を判断する際に前記制御システムの状態を示す値と比較される判定値を学習する機械学習装置と、
を有し、
前記制御演算部は、
前記制御システムの状態と、前記工作機械の機械原点から特定距離の範囲内である三次元領域とに基づいて、前記ロボットの手動操作の可否を判断する手動可否判断部と、
前記手動可否判断部によって前記ロボットの手動操作が許可されている場合に前記手動操作が行われると、前記手動操作に基づいて、前記ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成して前記ロボットコントローラに送信する移動データ送信部と、
を備え、
前記機械学習装置は、
手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習部と、
を有し、
前記手動可否判断部は、前記学習部が学習した判定値を用いて、前記ロボットの手動操作の可否を判断し、
前記三次元領域は、前記ロボットが前記工作機械に干渉する可能性に応じて指定される、
ことを特徴とする数値制御装置。
【請求項２】
被加工物の加工を行う工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、
前記ロボットへの手動操作を受け付ける入力操作部と、
数値制御プログラムを用いて前記工作機械を制御するとともに、前記手動操作に基づいて前記ロボットを制御する制御演算部と、
前記ロボットの手動操作の可否を判断する際に前記制御システムの状態を示す値と比較される判定値を学習する機械学習装置と、
を有し、
前記制御演算部は、
前記制御システムの状態に基づいて、前記ロボットの手動操作の可否を判断する手動可否判断部と、
前記手動可否判断部によって前記ロボットの手動操作が許可されている場合に前記手動操作が行われると、前記手動操作に基づいて、前記ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成して前記ロボットコントローラに送信する移動データ送信部と、
を備え、
前記機械学習装置は、
手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習部と、
を有し、
前記手動可否判断部は、前記学習部が学習した判定値を用いて、前記ロボットの手動操作の可否を判断し、
前記制御システムの状態は、前記工作機械の自動運転状態である、
ことを特徴とする数値制御装置。
【請求項３】
被加工物の加工を行う工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、
前記ロボットへの手動操作を受け付ける入力操作部と、
数値制御プログラムを用いて前記工作機械を制御するとともに、前記手動操作に基づいて前記ロボットを制御する制御演算部と、
前記ロボットの手動操作の可否を判断する際に前記制御システムの状態を示す値と比較される判定値を学習する機械学習装置と、
を有し、
前記制御演算部は、
前記制御システムの状態に基づいて、前記ロボットの手動操作の可否を判断する手動可否判断部と、
前記手動可否判断部によって前記ロボットの手動操作が許可されている場合に前記手動操作が行われると、前記手動操作に基づいて、前記ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成して前記ロボットコントローラに送信する移動データ送信部と、
を備え、
前記機械学習装置は、
手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習部と、
を有し、
前記手動可否判断部は、前記学習部が学習した判定値を用いて、前記ロボットの手動操作の可否を判断し、
前記制御システムの状態は、前記ロボットコントローラと前記数値制御装置との間の通信状態である、
ことを特徴とする数値制御装置。
【請求項４】
前記入力操作部は、前記工作機械の座標系で前記手動操作を受け付け、
前記制御演算部は、前記工作機械の座標系の指令を、前記ロボットの座標系の指令に変換する変換部をさらに備え、
前記変換部は、前記入力操作部が受け付けた前記手動操作に対応する指令を、前記工作機械の座標系から前記ロボットの座標系の指令に変換して前記第１の移動指令を生成する、
ことを特徴とする請求項１から３の何れか１つに記載の数値制御装置。
【請求項５】
前記制御演算部は、
前記第１の移動指令を記憶しておく記憶部と、
前記第１の移動指令に基づいて、前記ロボットを前記第１の移動指令に対応する移動経路に沿って逆行させる第２の移動指令を生成する逆方向変換部と、
をさらに備え、
前記移動データ送信部は、前記第２の移動指令を前記ロボットコントローラに送信する、
ことを特徴とする請求項１から４の何れか１つに記載の数値制御装置。
【請求項６】
前記入力操作部は、前記ロボットの速度にオーバーライドをかけるためのオーバーライドスイッチを有し、
前記制御演算部は、
前記手動操作の際に、前記オーバーライドスイッチに設定された設定値に基づいて、前記ロボットの速度を低下させた速度データを生成する、
ことを特徴とする請求項１から５の何れか１つに記載の数値制御装置。
【請求項７】
前記手動可否判断部は、前記ロボットの手動操作を許可しない場合には、表示装置にアラームまたはメッセージを表示させる、
ことを特徴とする請求項１から６の何れか１つに記載の数値制御装置。
【請求項８】
前記手動可否判断部は、前記数値制御装置および前記工作機械の少なくとも一方の状態に基づいて、前記ロボットの手動操作の可否を判断する、
ことを特徴とする請求項１から７の何れか１つに記載の数値制御装置。
【請求項９】
前記手動可否判断部は、前記ロボットの周辺の侵入禁止領域にユーザが侵入しているか否かに基づいて、前記ロボットの手動操作の可否を判断する、
ことを特徴とする請求項１から８の何れか１つに記載の数値制御装置。
【請求項１０】
被加工物の加工を行う工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、
前記ロボットへの手動操作を受け付ける入力操作部と、
数値制御プログラムを用いて前記工作機械を制御するとともに、前記手動操作に基づいて前記ロボットを制御する制御演算部と、
前記制御システムの状態を示す値と比較される判定値を学習する機械学習装置と、
を有し、
前記制御演算部は、
前記制御システムの状態に基づいて、前記ロボットの手動操作の可否を判断する手動可否判断部と、
前記手動可否判断部によって前記ロボットの手動操作が許可されている場合に前記手動操作が行われると、前記手動操作に基づいて、前記ロボットの移動を制御する制御装置への第１の移動指令を生成して前記制御装置に送信する移動データ送信部と、
を備え、
前記機械学習装置は、
手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測部と、
前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習部と、
を備え、
前記手動可否判断部は、前記学習部が学習した判定値を用いて、前記ロボットの手動操作の可否を判断する、
ことを特徴とする数値制御装置。
【請求項１１】
数値制御プログラムを用いて被加工物の加工を行う工作機械を制御するとともに、ロボットへの手動操作に基づいて前記ロボットを制御する数値制御装置が、前記工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムの状態を示す値と比較される判定値を学習する機械学習ステップと、
前記数値制御装置が、前記工作機械、前記ロボット、および前記数値制御装置の少なくとも１つの状態と、前記工作機械の機械原点から特定距離の範囲内である三次元領域とに基づいて、前記ロボットの手動操作の可否を判断する手動可否判断ステップと、
前記ロボットの手動操作が許可されている場合に前記ロボットへの手動操作が行われると、前記数値制御装置が、前記手動操作に基づいて、前記ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成して前記ロボットコントローラに送信する移動データ送信ステップと、
を含み、
前記機械学習ステップは、
前記数値制御装置が、手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測ステップと、
前記数値制御装置が、前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習ステップと、
を有し、
前記手動可否判断ステップでは、前記数値制御装置が、前記学習ステップで学習した判定値を用いて、前記ロボットの手動操作の可否を判断し、
前記三次元領域は、前記ロボットが前記工作機械に干渉する可能性に応じて指定される、
ことを特徴とする数値制御方法。
【請求項１２】
数値制御プログラムを用いて被加工物の加工を行う工作機械を制御するとともに、ロボットへの手動操作に基づいて前記ロボットを制御する数値制御装置が、前記工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムの状態を示す値と比較される判定値を学習する機械学習ステップと、
前記数値制御装置が、前記工作機械、前記ロボット、および前記数値制御装置の少なくとも１つの状態に基づいて、前記ロボットの手動操作の可否を判断する手動可否判断ステップと、
前記ロボットの手動操作が許可されている場合に前記ロボットへの手動操作が行われると、前記数値制御装置が、前記手動操作に基づいて、前記ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成して前記ロボットコントローラに送信する移動データ送信ステップと、
を含み、
前記機械学習ステップは、
前記数値制御装置が、手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測ステップと、
前記数値制御装置が、前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習ステップと、
を有し、
前記手動可否判断ステップでは、前記数値制御装置が、前記学習ステップで学習した判定値を用いて、前記ロボットの手動操作の可否を判断し、
前記制御システムの状態は、前記工作機械の自動運転状態である、
ことを特徴とする数値制御方法。
【請求項１３】
数値制御プログラムを用いて被加工物の加工を行う工作機械を制御するとともに、ロボットへの手動操作に基づいて前記ロボットを制御する数値制御装置が、前記工作機械と前記被加工物の搬送を行うロボットとを制御する制御システムの状態を示す値と比較される判定値を学習する機械学習ステップと、
前記数値制御装置が、前記工作機械、前記ロボット、および前記数値制御装置の少なくとも１つの状態に基づいて、前記ロボットの手動操作の可否を判断する手動可否判断ステップと、
前記ロボットの手動操作が許可されている場合に前記ロボットへの手動操作が行われると、前記数値制御装置が、前記手動操作に基づいて、前記ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成して前記ロボットコントローラに送信する移動データ送信ステップと、
を含み、
前記機械学習ステップは、
前記数値制御装置が、手動操作開始からエラー発生までの時間であるエラー発生時間と、前記手動操作開始から前記エラー発生までの間に用いた判定値と、を状態変数として観測する状態観測ステップと、
前記数値制御装置が、前記状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習ステップと、
を有し、
前記手動可否判断ステップでは、前記数値制御装置が、前記学習ステップで学習した判定値を用いて、前記ロボットの手動操作の可否を判断し、
前記制御システムの状態は、前記ロボットコントローラと前記数値制御装置との間の通信状態である、
ことを特徴とする数値制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ロボットおよび工作機械を制御する数値制御装置および数値制御方法に関する。
【背景技術】
【０００２】
数値制御装置の１つに、被加工物の加工を行う工作機械の制御と、被加工物の搬送を行うロボットの制御とを並行して実行する装置がある。この数値制御装置の中には、工作機械またはロボットを、ユーザが手動ハンドルを用いた操作で制御可能な装置がある。【０００３】
特許文献１に記載の数値制御装置は、加工プログラムに従った制御から手動操作に切り替えるための手動スイッチを備えており、手動スイッチがオンにされると、ユーザ操作による手動ハンドルの回転によって速度信号を発生させ、速度信号に従って工作機械が備える軸駆動モータの速度を制御し、予め決められている移動経路に沿って機械を移動させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平２−２１２９０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の技術では、手動操作を行ってもよい状態であるか否かが不明なまま手動操作が行われる。このため、例えば手動操作に応じた方向にロボットを移動させるロボットに上記特許文献１の技術を適用すると、手動操作によって移動されるロボットと、加工プログラムに従って駆動制御される工作機械とが干渉する場合があるという問題があった。【０００６】
本発明は、上記に鑑みてなされたものであって、ロボットと工作機械との干渉を防止しつつロボットへの手動操作を行うことができる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、被加工物の加工を行う工作機械と被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、ロボットへの手動操作を受け付ける入力操作部と、数値制御プログラムを用いて工作機械を制御するとともに、手動操作に基づいてロボットを制御する制御演算部と、ロボットの手動操作の可否を判断する際に制御システムの状態を示す値と比較される判定値を学習する機械学習装置と、を有する。制御演算部は、制御システムの状態と、工作機械の機械原点から特定距離の範囲内である三次元領域とに基づいて、ロボットの手動操作の可否を判断する手動可否判断部と、手動可否判断部によってロボットの手動操作が許可されている場合に手動操作が行われると、手動操作に基づいて、ロボットの移動を制御するロボットコントローラへの第１の移動指令を生成してロボットコントローラに送信する移動データ送信部と、を備える。機械学習装置は、手動操作開始からエラー発生までの時間であるエラー発生時間と、手動操作開始からエラー発生までの間に用いた判定値と、を状態変数として観測する状態観測部と、状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習部と、を有する。手動可否判断部は、学習部が学習した判定値を用いて、ロボットの手動操作の可否を判断し、三次元領域は、ロボットが工作機械に干渉する可能性に応じて指定される。
【発明の効果】
【０００８】
本発明にかかる数値制御装置は、ロボットと工作機械との干渉を防止しつつロボットへの手動操作を行うことができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる数値制御装置を備えた制御システムの構成を示す図
【図２】実施の形態１にかかる数値制御装置の構成例を示す図
【図３】実施の形態１にかかる制御システムが備える２つの手動ハンドルの構成例を示す図
【図４】実施の形態１にかかる数値制御装置による、ロボットの手動可否の判定処理の手順を示すフローチャート
【図５】実施の形態１にかかる数値制御装置が表示部に表示させるアラームを説明するための図
【図６】実施の形態１にかかる数値制御装置が表示部に表示させる注意メッセージを説明するための図
【図７】実施の形態２にかかる数値制御装置の構成例を示す図
【図８】実施の形態２にかかる数値制御装置によるロボット座標系への変換処理の処理手順を示すフローチャート
【図９】実施の形態３にかかる数値制御装置の構成例を示す図
【図１０】実施の形態３にかかる数値制御装置が表示部に表示させる、逆行操作を受け付ける画面を説明するための図
【図１１】実施の形態３にかかる数値制御装置がロボットに実行させる逆行の経路を説明するための図
【図１２】実施の形態３にかかる数値制御装置がロボットの動作を逆行させる処理の処理手順を示すフローチャート
【図１３】実施の形態４にかかる数値制御装置の構成例を示す図
【図１４】実施の形態４にかかる数値制御装置が、手動操作されるロボットの速度を特定の割合で低下させる処理の処手順を示すフローチャート
【図１５】実施の形態５にかかる数値制御装置の構成例を示す図
【図１６】実施の形態５にかかる数値制御装置が備える機械学習装置の構成例を示す図
【図１７】実施の形態１にかかる制御演算部のハードウェア構成例を示す図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態にかかる数値制御装置および数値制御方法を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、実施の形態１にかかる数値制御装置を備えた制御システムの構成を示す図である。制御システム１００は、Ｇコードプログラムといった数値制御（ＮＣ：Numerical  Control）プログラムを用いて工作機械７０を制御し、ユーザによる手動操作によってロボット６０を制御するシステムである。
【００１２】
制御システム１００は、工作機械７０と、数値制御装置１Ｘと、ロボットコントローラ５０と、ロボット６０とを備えている。数値制御装置１Ｘは、例えば、工作機械７０に配置されている。実施の形態１の数値制御装置１Ｘは、制御システム１００において、ロボット６０への手動操作を許可してもよい状態であるか否かを判定し、手動操作を許可してもよい状態である場合に、ユーザからのロボット６０への手動操作を受け付ける。
【００１３】
数値制御装置１Ｘは、工作機械７０に対して工具を使った加工ワーク（被加工物）を加工するための指令を送る装置である。数値制御装置１Ｘは、ＣＮＣ（コンピュータ数値制御：Computer  Numerical  Control）を行う装置であり、入力操作部３Ｘに接続されている。
【００１４】
数値制御装置１Ｘは、工作機械７０、入力操作部３Ｘ、およびロボットコントローラ５０に接続されている。また、ロボットコントローラ５０は、入力操作部３Ｘおよびロボット６０に接続されている。数値制御装置１Ｘとロボットコントローラ５０とは、例えば、ＬＡＮ（Local  Area  Network）を介して接続されている。
【００１５】
制御システム１００では、数値制御装置１Ｘが、工作機械７０および入力操作部３Ｘとの間で通信を実行し、ロボットコントローラ５０が、数値制御装置１Ｘ、入力操作部３Ｘ、およびロボット６０との間で通信を実行する。このように、制御システム１００では、ロボットコントローラ５０を介して数値制御装置１Ｘと、ロボット６０とが接続されており、数値制御装置１Ｘは、ロボットコントローラ５０を介してロボット６０を制御する。また、入力操作部３Ｘは、ロボットコントローラ５０を介してロボット６０を操作する。以下の説明では、数値制御装置１Ｘによるロボット６０の制御を説明する際に、ロボットコントローラ５０が介されていることを省略する場合がある。
【００１６】
入力操作部３Ｘは、ユーザが数値制御装置１Ｘおよびロボットコントローラ５０を操作するための装置である。入力操作部３Ｘは、入出力ユニット５１、非常停止ボタン５２、および操作盤５３を備えている。入力操作部３Ｘは、ユーザ操作に対応する信号を数値制御装置１Ｘに送ることによって、数値制御装置１Ｘを操作する。
【００１７】
操作盤５３は、ユーザからの操作を受け付けて、操作に対応する信号を入出力ユニット５１に送る。非常停止ボタン５２は、ユーザによって押下されると、ロボットコントローラ５０を停止させるための信号をロボットコントローラ５０に送るとともに、工作機械７０を停止させるための信号を入出力ユニット５１に送る。入出力ユニット５１は、操作盤５３から送られてくる信号および非常停止ボタン５２から送られてくる信号を、数値制御装置１Ｘに送る。非常停止ボタン５２および入出力ユニット５１は、操作盤５３に配置されてもよい。
【００１８】
ロボットコントローラ５０は、数値制御装置１Ｘから送られてくる指示に従ってロボット６０を制御する。また、ロボットコントローラ５０は、非常停止ボタン５２から信号が送られてくると、ロボット６０の動作を停止させる。
【００１９】
ロボット６０は、ロボットハンド６１によって加工対象物である加工ワークを把持し、把持した加工ワークを搬送する。ロボット６０は、加工前の加工ワークを工作機械７０にロードし、加工後の加工ワークを工作機械７０からアンロードする。ロボット６０の例は、マニピュレータである。なお、ロボット６０は、加工ワークの搬送以外の処理を実行してもよい。
【００２０】
数値制御装置１Ｘは、後述する制御演算部２Ｘと、表示部４と、ＰＬＣ操作部５とを含んで構成されている。数値制御装置１Ｘは、ＮＣプログラムを用いて、工作機械７０およびロボット６０を制御する。また、数値制御装置１Ｘは、入力操作部３Ｘから信号を受信すると、受信した信号に対応する処理を工作機械７０に実行させる。また、数値制御装置１Ｘは、工作機械７０の状態、ロボット６０の状態などを表示する。
【００２１】
工作機械７０は、ＮＣ工作機械であり、２軸以上の駆動軸によって工具と加工ワークとを相対的に移動させながら、工具で加工ワークを加工する。工作機械７０の座標系である第１の座標系とロボット６０の座標系である第２の座標系とは異なる座標系である。工作機械７０は、直交座標系で制御され、例えば３軸方向に工具または加工ワークを移動させる。ロボット６０は、回転軸を備えており、例えば、４軸以上の方向に駆動する。ロボット６０は、複数の関節と複数のアームを備えており、１つの関節が１つのアームを１軸以上の方向に移動させる。
【００２２】
図２は、実施の形態１にかかる数値制御装置の構成例を示す図である。数値制御装置１Ｘは、制御演算部２Ｘと、表示部４と、ＰＬＣ（プログラマブルロジックコントローラ：Programmable  Logic  Controller）３６を操作するための機械操作盤などのＰＬＣ操作部５とを有する。図２には、数値制御装置１Ｘとともに、入力操作部３Ｘ、工作機械７０、ロボットコントローラ５０、およびロボット６０が示されている。
【００２３】
工作機械７０は、工具および加工ワークを駆動する駆動部９０を備えている。駆動部９０の例は、加工ワークを回転させながら、工具を駆動する駆動機構である。工具の駆動方向は、例えばＸ軸方向に平行な方向とＺ軸方向に平行な方向との２方向である。なお、軸方向は装置構成によるので、軸方向は、上記方向に限定されない。
【００２４】
駆動部９０は、数値制御装置１Ｘ上で規定された各軸方向に工具を移動させるサーボモータ９０１，９０２と、サーボモータ９０１，９０２の位置および速度を検出する検出器９７，９８とを備えている。また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、サーボモータ９０１，９０２を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器９７，９８からの位置および速度に基づいて、サーボモータ９０１，９０２へのフィードバック制御を行う。
【００２５】
サーボ制御部のうちの、Ｘ軸サーボ制御部９１は、サーボモータ９０１を制御することによって工具のＸ軸方向の動作を制御し、Ｚ軸サーボ制御部９２は、サーボモータ９０２を制御することによって工具のＺ軸方向の動作を制御する。なお、工作機械７０が２つ以上の刃物台を備えていてもよい。この場合、駆動部９０は、１つの刃物台毎に、１組のＸ軸サーボ制御部９１と、Ｚ軸サーボ制御部９２と、サーボモータ９０１，９０２と、検出器９７，９８とを備える。
【００２６】
また、駆動部９０は、加工ワークを回転させるための主軸を回転させる主軸モータ９１１と、主軸モータ９１１の位置および回転数を検出する検出器２１１とを備えている。検出器２１１が検出する回転数は、主軸モータ９１１の回転数に対応している。
【００２７】
また、駆動部９０は、数値制御装置１Ｘからの指令に基づいて、主軸モータ９１１を制御する主軸サーボ制御部２００を備えている。主軸サーボ制御部２００は、検出器２１１からの位置および回転数に基づいて、主軸モータ９１１へのフィードバック制御を行う。
【００２８】
なお、工作機械７０が２つの加工ワークを同時に加工する場合には、駆動部９０は、主軸モータ９１１と、検出器２１１と、主軸サーボ制御部２００とを２組備える。この場合、工作機械７０は、２つ以上の刃物台を備えている。
【００２９】
入力操作部３Ｘは、制御演算部２Ｘに情報を入力する手段である。入力操作部３Ｘは、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置１Ｘに対するコマンドなどの入力、ユーザによるロボット６０への手動操作、またはＮＣプログラムもしくはパラメータなどを受付けて制御演算部２Ｘに入力する。
【００３０】
入力操作部３Ｘは、手動ハンドル５５と、ジョグボタン５７と、軸選択スイッチ５９とを備えている。軸選択スイッチ５９は、ロボット６０に対して手動操作する軸を選択するスイッチである。軸選択スイッチ５９の例は、工作機械７０における座標系で、Ｘ軸を指定するスイッチ、Ｙ軸を指定するスイッチ、Ｚ軸を指定するスイッチ、Ａ軸を指定するスイッチ、Ｂ軸を指定するスイッチ、Ｃ軸を指定するスイッチである。軸選択スイッチ５９は、押下またはタッチされた軸が何れの軸であるかを示す軸情報を、制御演算部２Ｘに送る。この軸情報は、記憶部３４Ｘを介してロボット手動操作部４１Ｘに送られる。
【００３１】
手動ハンドル５５は、ロボット６０の軸方向の移動量を操作するためのハンドルである。手動ハンドル５５は、操作に対応する移動量を制御演算部２Ｘに送る。この移動量は、記憶部３４Ｘを介してロボット手動操作部４１Ｘに送られる。
【００３２】
ジョグボタン５７は、ロボット６０の軸方向の移動量をジョグ操作するためのボタンである。ジョグボタン５７は、操作に対応する移動量を制御演算部２Ｘに送る。この移動量は、記憶部３４Ｘを介してロボット手動操作部４１Ｘに送られる。
【００３３】
表示部４は、液晶表示装置などの表示手段によって構成され、制御演算部２Ｘによって処理された情報を表示画面に表示する。表示部４の例は、液晶タッチパネルである。この場合、入力操作部３Ｘの一部の機能が、表示部４に配置されている。
【００３４】
制御部である制御演算部２Ｘは、工作機械７０の座標系で規定されたＮＣプログラムを用いて工作機械７０を制御する。制御演算部２Ｘは、入力制御部３２と、データ設定部３３と、記憶部３４Ｘと、画面処理部３１と、解析処理部３７と、制御信号処理部３５と、ＰＬＣ３６と、補間処理部３８と、状態判定部４５と、加減速処理部３９と、軸データ出力部４０と、ロボット手動操作部４１Ｘと、通信制御部４４とを有する。なお、ＰＬＣ３６は、制御演算部２Ｘの外部に配置されてもよい。
【００３５】
記憶部３４Ｘは、パラメータ記憶エリア３４１、ＮＣプログラム記憶エリア３４３、表示データ記憶エリア３４４、および共有エリア３４５を有している。パラメータ記憶エリア３４１内には、制御演算部２Ｘの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア３４１内には、数値制御装置１Ｘを動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。ＮＣプログラム記憶エリア３４３内には、加工ワークの加工に用いられるＮＣプログラムが格納される。
【００３６】
表示データ記憶エリア３４４内には、表示部４で表示される画面表示データが格納される。画面表示データは、表示部４に情報を表示するためのデータである。また、記憶部３４Ｘには、一時的に使用されるデータを記憶する共有エリア３４５が設けられている。
【００３７】
画面処理部３１は、表示データ記憶エリア３４４に格納された画面表示データを表示部４に表示させる制御を行う。入力制御部３２は、入力操作部３Ｘから入力される情報を受付ける。データ設定部３３は、入力制御部３２で受付けられた情報を記憶部３４Ｘに記憶させる。すなわち、入力操作部３Ｘが受付けた入力情報は、入力制御部３２およびデータ設定部３３を介して記憶部３４Ｘに書き込まれる。
【００３８】
制御信号処理部３５は、ＰＬＣ３６に接続されており、ＰＬＣ３６から、工作機械７０の機械を動作させるリレーなどの信号情報を受付ける。制御信号処理部３５は、受付けた信号情報を、記憶部３４Ｘの共有エリア３４５に書き込む。これらの信号情報は、加工運転時に補間処理部３８が参照する。また、制御信号処理部３５は、解析処理部３７によって共有エリア３４５に補助指令が出力されると、この補助指令を共有エリア３４５から読み出してＰＬＣ３６に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、ＭコードまたはＴコードである。
【００３９】
ＰＬＣ３６は、ＰＬＣ３６が実行する機械動作が記述されたラダープログラムを格納している。ＰＬＣ３６は、補助指令であるＴコードまたはＭコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械７０に実行する。ＰＬＣ３６は、補助指令に対応する処理を実行した後、ＮＣプログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部３５に送る。
【００４０】
制御演算部２Ｘでは、制御信号処理部３５と、解析処理部３７と、補間処理部３８と、ロボット手動操作部４１Ｘとが記憶部３４Ｘを介して接続されており、記憶部３４Ｘを介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部３５と、解析処理部３７と、補間処理部３８と、ロボット手動操作部４１Ｘとの間の情報の書き込み、および読み出しを説明する際に記憶部３４Ｘが介されていることを省略する場合がある。
【００４１】
ＮＣプログラムの選択は、ユーザが入力操作部３ＸでＮＣプログラム番号を入力することによって行われる。このＮＣプログラム番号は、入力制御部３２およびデータ設定部３３を介して共有エリア３４５に書き込まれる。機械操作盤等のサイクルスタートをトリガとして、解析処理部３７は、選択されたＮＣプログラム番号を共有エリア３４５から読み出すと、選択されたＮＣプログラム番号のＮＣプログラムをＮＣプログラム記憶エリア３４３内から読み出して、ＮＣプログラムの各ブロック（各行）に対して解析処理を行う。解析処理部３７は、例えば、Ｇコード（軸移動等に関する指令）、Ｔコード（工具交換指令など）、Ｓコード（主軸モータ回転数指令）、およびＭコード（機械動作指令）を解析する。
【００４２】
解析処理部３７は、解析した行にＭコードまたはＴコードが含まれている場合には、解析結果を共有エリア３４５および制御信号処理部３５を介してＰＬＣ３６に送る。また、解析処理部３７は、解析した行にＭコードが含まれている場合には、Ｍコードを、制御信号処理部３５を介してＰＬＣ３６に送る。ＰＬＣ３６はＭコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部３５を介してＭコードの完了を示す結果が記憶部３４Ｘに書き込まれる。補間処理部３８は記憶部３４Ｘに書き込まれた実行結果を参照する。
【００４３】
また、解析処理部３７は、工作機械７０へのＧコードが含まれている場合には、共有エリア３４５を介して解析結果を補間処理部３８に送る。具体的には、解析処理部３７は、Ｇコードに対応する移動条件を生成して補間処理部３８に送る。また、解析処理部３７は、Ｓコードで指定された主軸回転数を補間処理部３８に送る。主軸回転数は、単位時間あたりの主軸の回転の回数である。移動条件は、加工位置を移動させていくための工具送りの条件であり、刃物台を移動させる速度、刃物台を移動させる位置などで示される。例えば、工具の工具送りは、工具をＸ軸方向（＋Ｘ方向）およびＺ軸方向（＋Ｚ方向）に進ませる。
【００４４】
補間処理部３８は、解析処理部３７による解析結果のうち工作機械７０への指令を用いて工作機械７０を制御するためのデータを生成し、加減速処理部３９に送る。加減速処理部３９は、工作機械７０を制御するためのデータを、軸データ出力部４０を介して工作機械７０に出力する。
【００４５】
状態判定部４５は、制御信号処理部３５から工作機械７０の状態を示す状態データを取得し、状態データに基づいて、軸データ出力部４０が工作機械７０に出力するデータを修正する。例えば、工作機械７０のドアが開いている場合、ユーザが工作機械７０に侵入する可能性があるので、軸データ出力部４０が工作機械７０に出力するデータを、サーボモータ９０１，９０２、および主軸モータ９１１の駆動を停止させるデータに修正する。
【００４６】
通信制御部４４は、ロボット手動操作部４１Ｘおよびロボットコントローラ５０に接続されている。通信制御部４４は、ロボット手動操作部４１Ｘから送られてきたデータをロボットコントローラ５０に送信し、ロボットコントローラ５０から送られてきたデータをロボット手動操作部４１Ｘに送信する。通信制御部４４が、ロボットコントローラ５０に送信するデータの例は、手動操作（ジョグボタン５７または手動ハンドル５５への操作）によって発生した軸の移動量である。通信制御部４４が、ロボット手動操作部４１Ｘに送信するデータの例は、ロボット６０の状態を示す情報である。以下の説明では、ロボット手動操作部４１Ｘとロボットコントローラ５０との間のデータの送受信を説明する際に通信制御部４４が介されていることを省略する場合がある。
【００４７】
ロボット手動操作部４１Ｘは、手動可否判断部４１２および移動データ送信部４１３を備えている。移動データ送信部４１３は、軸選択スイッチ５９で選択された軸情報と、ジョグボタン５７または手動ハンドル５５から送られてくる移動量に基づいて移動指令（第１の移動指令）を生成し、移動指令をロボットコントローラ５０に送る。これにより、数値制御装置１Ｘは、ロボットコントローラ５０を介して、ロボット６０を操作することができる。
【００４８】
手動可否判断部４１２は、制御システム１００の状態（以下、システム状態という）に基づいて、ロボット６０の手動操作の可否を判断する。すなわち、手動可否判断部４１２は、ロボット６０、数値制御装置１Ｘ、および工作機械７０の少なくとも１つの状態に基づいて、ロボット６０の手動操作の可否を判断する。可否の判断には、数値制御装置１Ｘが持つ種々のデータが参照される。
【００４９】
手動可否判断部４１２は、例えば通信制御部４４からロボットコントローラ５０と数値制御装置１Ｘとの間の通信状態を取得し、ロボット６０と数値制御装置１Ｘとの間の通信が未接続の場合は、手動操作不可と判断する。
【００５０】
ロボット６０の状態の例は、ロボット６０を構成する部品の温度、ロボットコントローラ５０との間の通信状態、非常停止中であるか否か、ロボット６０の周辺の侵入禁止領域にユーザが侵入しているか否か等である。
【００５１】
数値制御装置１Ｘの状態の例は、ロボットコントローラ５０との間の通信状態である。手動可否判断部４１２は、ロボットコントローラ５０との間の通信状態が未接続状態である場合、何らかの異常が発生している場合があるので、ロボットコントローラ５０との間の通信を接続せず手動操作不可と判断する。
【００５２】
また、手動可否判断部４１２は、状態判定部４５から、工作機械７０の状態を示す状態データを取得し、状態データに基づいて手動操作の可否を判断してもよい。工作機械７０の状態の例は、工作機械７０を囲っている筐体のドアの開閉状態である。手動可否判断部４１２は、工作機械７０のドアが開いている場合、ユーザが工作機械７０に侵入する可能性があるので、手動操作不可と判断する。また、手動可否判断部４１２は、工作機械７０のドアが閉じている場合には、手動操作可能と判断するが、表示部４に、ドアが閉じていることを示す注意メッセージを表示する。これにより、オペレータは、工作機械７０の内部にロボット６０の手動教示作業をする際に、工作機械７０のドアにロボット６０が干渉することを回避することが可能になる。
【００５３】
また、手動可否判断部４１２は、制御システム１００内の構成要素の状態に基づいて、ロボット６０の手動操作の可否を判断してもよい。例えば、手動可否判断部４１２は、制御システム１００に配置されている温度センサ、接触センサといった種々のセンサで検出された検出値に基づいて、ロボット６０の手動操作の可否を判断してもよい。この場合、制御システム１００に配置されている何れかのセンサが異常な検出値（判定値よりも高い検出値）を示した場合に、何らかの異常が発生している場合があるので、手動可否判断部４１２は、手動操作不可と判断する。
【００５４】
また、手動可否判断部４１２は、通信制御部４４からロボット６０側のアラームを取得し、取得したアラームに基づいて手動操作の可否を判断してもよい。また、手動可否判断部４１２は、制御信号処理部３５からドアの開閉信号を取得し、ドアの開閉信号に基づいて手動操作の可否を判断してもよい。また、手動可否判断部４１２は、工作機械７０が自動運転中であるか否かを、制御信号処理部３５が入出力しているＰＬＣ３６との間（ラダーインタフェース）の信号に基づいて判断し、自動運転中である場合には、手動操作不可と判断してもよい。例えば、手動可否判断部４１２は、ドアが開いている状態で、かつ自動運転していない場合には手動操作可と判断してもよい。
【００５５】
手動可否判断部４１２は、手動操作不可と判断した場合、画面処理部３１によって表示部４にアラームを表示させ、ユーザに手動操作不可の状態であることを通知してもよい。また、手動可否判断部４１２は、手動操作不可と判断した場合、ロボット６０に移動指令を送信しない。これにより、ロボット６０は、手動操作されても、手動操作に応じた動作を行わないので、手動操作が不可能な状態であることをユーザに視覚的に通知することが可能になる。
【００５６】
ここで、手動ハンドル５５について説明する。手動ハンドル５５は、工作機械７０の軸方向の移動量を操作する際に用いられてもよい。すなわち、ユーザは、１つの手動ハンドル５５で、ロボット６０の操作および工作機械７０の操作を行ってもよい。この場合、操作盤５３には、手動ハンドル５５による操作対象を切り替えるための切替スイッチ（図示せず）を配置しておく。
【００５７】
制御信号処理部３５は、操作盤５３に対し切替スイッチの状態を確認し、手動ハンドル５５が、工作機械７０を制御する状態にあるか、ロボット６０を制御する状態にあるかを判定する。制御信号処理部３５は、切替スイッチの状態に基づいて、手動ハンドル５５に対するハンドル操作を、ロボット６０へのハンドル操作として扱うか、工作機械７０へのハンドル操作として扱うかを切替える。
【００５８】
制御信号処理部３５は、ハンドル操作をロボット６０へのハンドル操作として扱う場合には、ハンドル操作に対応するデータを、ロボット６０を操作するためのデータとして共有エリア３４５に格納する。ロボット６０を操作するためのデータは、手動ハンドル５５がハンドル操作に対して出力するハンドルパルスジェネレータのデータであり、ロボット６０の特定の箇所を移動させる移動量に対応している。
【００５９】
制御信号処理部３５は、ハンドル操作を工作機械７０へのハンドル操作として扱う場合には、ハンドル操作に対応するデータを、工作機械７０を操作するためのデータとして共有エリア３４５に格納する。工作機械７０を操作するためのデータは、手動ハンドル５５がハンドル操作に対して出力するハンドルパルスジェネレータのデータであり、工作機械７０の特定の箇所を移動させる移動量に対応している。
【００６０】
また、操作盤５３には、手動ハンドル５５の代わりにロボット６０を操作するための手動ハンドルと、工作機械７０を操作するための手動ハンドルとの２つの手動ハンドルを配置しておいてもよい。
【００６１】
図３は、実施の形態１にかかる制御システムが備える２つの手動ハンドルの構成例を示す図である。図３では、数値制御装置１Ｘと、入出力ユニット５１と、ロボット６０を操作するための手動ハンドル５５Ａと、工作機械７０を操作するための手動ハンドル５５Ｂとを図示している。
【００６２】
手動ハンドル５５Ａ，５５Ｂは、ともに入出力ユニット５１に接続されている。ユーザは、ロボット６０を操作する際には、手動ハンドル５５Ａを操作する。これにより、手動ハンドル５５Ａは、操作に対応する、ロボット６０の移動量を数値制御装置１Ｘに送る。また、ユーザは、工作機械７０を操作する際には、手動ハンドル５５Ｂを操作する。これにより、手動ハンドル５５Ｂは、操作に対応する、工作機械７０の移動量を数値制御装置１Ｘに送る。
【００６３】
図４は、実施の形態１にかかる数値制御装置による、ロボットの手動可否の判定処理の手順を示すフローチャートである。数値制御装置１Ｘは、動作を開始すると、手動可否判断部４１２が、システム状態、すなわちロボット６０、数値制御装置１Ｘ、および工作機械７０の少なくとも１つの状態に基づいて、ロボット６０の手動操作が可能か否かを判断する（ステップＳ１）。
【００６４】
手動可否判断部４１２は、ロボット６０の手動操作が不可能であると判断した場合（ステップＳ１、Ｎｏ）、画面処理部３１にアラームを表示させる指示を送る。これにより、画面処理部３１は、表示部４にアラームを表示させる（ステップＳ２）。
【００６５】
図５は、実施の形態１にかかる数値制御装置が表示部に表示させるアラームを説明するための図である。図５では、表示部４が表示する表示画面の第１例である操作受付画面２１を示している。操作受付画面２１は、ユーザからのロボット６０への操作を受け付ける画面である。
【００６６】
操作受付画面２１には、ユーザへの通知領域１１が配置されている。通知領域１１は、ユーザへのアラーム、メッセージ等が表示される領域である。操作受付画面２１では、手動操作が不可であることを示す「ロボット未接続のため、ロボットへの操作不可」等のアラームが表示される。
【００６７】
また、操作受付画面２１、および後述する操作受付画面２２，２３は、軸選択スイッチ５９およびジョグボタン５７を表示する。軸選択スイッチ５９の中から、ユーザが所望の軸の名称をタッチすることで、ロボット６０に対して手動操作される軸が選択される。
【００６８】
手動可否判断部４１２は、ロボット６０の手動操作が可能であると判断した場合（ステップＳ１、Ｙｅｓ）、工作機械７０に注意が必要であるか否かを判定する（ステップＳ３）。工作機械７０に問題があって注意が必要な場合（ステップＳ３、Ｙｅｓ）、手動可否判断部４１２は、画面処理部３１に注意メッセージを表示させる指示を送る。これにより、画面処理部３１は、表示部４に注意メッセージを表示させる（ステップＳ４）。この後、移動データ送信部４１３は、後述するステップＳ５の処理を実行する。
【００６９】
図６は、実施の形態１にかかる数値制御装置が表示部に表示させる注意メッセージを説明するための図である。図６では、表示部４が表示する表示画面の第２例である操作受付画面２２を示している。操作受付画面２２は、ユーザからのロボット６０への操作を受け付ける画面である。
【００７０】
操作受付画面２２では、工作機械７０が注意の必要な状態であることを示す「ドアクローズ中  ロボット手動操作に注意」等の注意メッセージが表示される。このように、数値制御装置１Ｘは、手動操作が可能な場合であっても、注意が必要な場合には、注意メッセージを表示させる。この後、移動データ送信部４１３は、注意メッセージが表示されている状態で、ジョグボタン５７または手動ハンドル５５から送られてくる移動量を受け付けると、移動量に基づいて移動指令を生成し、移動指令を、ロボットコントローラ５０を介してロボット６０に送信する（ステップＳ５）。
【００７１】
一方、工作機械７０に注意が不要である場合（ステップＳ３、Ｎｏ）、移動データ送信部４１３は、ジョグボタン５７または手動ハンドル５５から送られてくる移動量を受け付ける。移動データ送信部４１３は、ジョグボタン５７または手動ハンドル５５から送られてくる移動量を受け付けると、移動量に基づいて移動指令を生成し、移動指令を、ロボットコントローラ５０を介してロボット６０に送信する（ステップＳ５）。なお、後述する実施の形態２以降の説明では、上述したステップＳ１からＳ５の処理である、ロボット６０の手動可否の判定処理を、ステップＳ１０の処理という場合がある。
【００７２】
このように実施の形態１によれば、数値制御装置１Ｘが、工作機械７０、ロボット６０、および数値制御装置１Ｘの少なくとも１つの状態に基づいて、ロボット６０の手動操作の可否を判断している。したがって、ロボット６０と工作機械７０との干渉を防止しつつロボット６０への手動操作を行うことが可能となる。
【００７３】
実施の形態２．
つぎに、図７および図８を用いてこの発明の実施の形態２について説明する。実施の形態２では、工作機械７０の座標系を用いてロボット６０に手動操作が行われた場合に、工作機械７０の座標系をロボット６０の座標系に変換したうえで、ロボット６０に指令を送る。
【００７４】
図７は、実施の形態２にかかる数値制御装置の構成例を示す図である。図７の各構成要素のうち実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【００７５】
数値制御装置１Ｙは、制御演算部２Ｙと、表示部４と、ＰＬＣ操作部５とを有する。図７には、数値制御装置１Ｙとともに、入力操作部３Ｘ、工作機械７０、ロボットコントローラ５０、およびロボット６０が示されている。実施の形態２では、入力操作部３Ｘが、工作機械７０の座標系で手動操作を受け付け、制御演算部２Ｙが、工作機械７０の座標系の指令を、ロボット６０の座標系の指令に変換する。
【００７６】
制御演算部２Ｙは、制御演算部２Ｘと比較して、記憶部３４Ｘの代わりに記憶部３４Ｙを備え、ロボット手動操作部４１Ｘの代わりにロボット手動操作部４１Ｙを備えている。
【００７７】
記憶部３４Ｙは、記憶部３４Ｘが有するエリアに加えて、特定距離記憶エリア３４６およびオフセット座標記憶エリア３４７を備えている。オフセット座標記憶エリア３４７は、工作機械７０の座標系（以下、ＮＣ座標系という）とロボット６０の座標系（以下、ロボット座標系という）との間の関係を示すオフセット座標を記憶するエリアである。オフセット座標は、入力操作部３Ｘから入力制御部３２に送られ、データ設定部３３を介して記憶部３４Ｙのオフセット座標記憶エリア３４７に格納される。オフセット座標は、ＮＣ座標系で指令された移動量を、ロボット座標系で用いる移動量に変換する際に用いられる。すなわち、ロボット６０が手動操作される際に、ＮＣ座標系でユーザが操作を実行した場合、制御演算部２Ｙは、オフセット座標を用いて、ＮＣ座標系をロボット座標系に変換する。
【００７８】
特定距離記憶エリア３４６は、特定距離を記憶するエリアである。特定距離は、工作機械７０の機械原点からの距離を示している。工作機械７０の機械原点から特定距離よりも内側の範囲が、ロボット６０が工作機械７０に干渉する可能性が判定値よりも高い範囲である。
【００７９】
ロボット手動操作部４１Ｙは、ロボット手動操作部４１Ｘが備える構成要素に加えて、座標変換部４１１を備えている。座標変換部４１１は、軸選択スイッチ５９で選択された軸と、ジョグボタン５７または手動ハンドル５５から入力された移動量と、オフセット座標とを、記憶部３４Ｙから取得する。座標変換部４１１は、軸選択スイッチ５９で選択された軸と、ジョグボタン５７または手動ハンドル５５に入力された移動量とを、オフセット座標に基づいて、ロボット座標系での軸（移動軸）および移動量に変換する。すなわち、座標変換部４１１は、ＮＣ座標系の軸および移動量を、オフセット座標に基づいて、ロボット座標系の軸および移動量に変換する。この変換後の軸および移動量を、移動データ送信部４１３が、ロボットコントローラ５０に送ることで、ロボット６０をＮＣ座標系で手動操作することが可能になる。オフセット座標が設定されていない場合、ユーザに選択された軸およびユーザに入力された移動量は、ロボット座標系の軸および移動量として移動データ送信部４１３がロボットコントローラ５０に送る。
【００８０】
図８は、実施の形態２にかかる数値制御装置によるロボット座標系への変換処理の処理手順を示すフローチャートである。ここでは、ロボット６０への手動操作が行われる場合の、数値制御装置１Ｙによる座標変換処理について説明する。数値制御装置１Ｙは、動作を開始すると、座標変換部４１１が、軸選択スイッチ５９で選択された軸（選択軸）の情報を、記憶部３４Ｙから取得する（ステップＳ２１）。また、座標変換部４１１は、ジョグボタン５７または手動ハンドル５５に入力された移動量を記憶部３４Ｙから取得する（ステップＳ２２）。なお、座標変換部４１１は、ステップＳ２１の処理とステップＳ２２の処理とを、何れの順番で実行してもよい。
【００８１】
座標変換部４１１は、オフセット座標記憶エリア３４７にオフセット座標が格納されているか否かを判定する（ステップＳ２３）。オフセット座標記憶エリア３４７にオフセット座標がある場合（ステップＳ２３、Ｙｅｓ）、座標変換部４１１は、ＮＣ座標系をロボット座標系に変換する（ステップＳ２４）。すなわち、座標変換部４１１は、取得したＮＣ座標系の軸および移動量を、ロボット座標系の軸および移動量に変換する。この後、手動可否判断部４１２は、ロボット６０の手動可否の判定処理を実行する（ステップＳ１０）。すなわち、手動可否判断部４１２は、図４で説明したステップＳ１からＳ５の処理を実行する。
【００８２】
オフセット座標記憶エリア３４７にオフセット座標がない場合（ステップＳ２３、Ｎｏ）、座標変換部４１１は、座標変換を行うことなく、ロボット６０の手動可否の判定処理を実行する（ステップＳ１０）。すなわち、移動データ送信部４１３は、オフセット座標が設定されていない場合にロボット６０の手動操作が可能であれば、記憶部３４Ｙから取得した軸および移動量を、ロボット座標系の軸および移動量としてロボットコントローラ５０に送る。なお、座標変換部４１１は、ステップＳ２３の処理の後に、ステップＳ２１，Ｓ２２の処理を実行してもよい。なお、後述する実施の形態３以降の説明では、上述したステップＳ２３，Ｓ２４の処理である、ロボット座標系への変換処理を、ステップＳ３０の処理という場合がある。
【００８３】
数値制御装置１Ｙの手動可否判断部４１２は、ステップＳ１０の処理を実行する際に、特定距離記憶エリア３４６から特定距離を取得する。手動可否判断部４１２は、ロボットコントローラ５０からロボット６０の位置（座標）を取得し、座標変換部４１１にて座標を逆変換することでＮＣ座標系でのロボット６０の座標を取得する。ここでの逆変換は、ロボット座標系の座標をＮＣ座標系に変換する処理である。手動可否判断部４１２は、工作機械７０の機械原点から特定距離の範囲内である三次元領域内は、ロボット６０が工作機械７０に干渉する可能性が判定値よりも高い特定領域に設定しておく。手動可否判断部４１２は、ロボット６０のＮＣ座標系における座標が特定領域に入った場合、ロボット６０の手動操作を不可にする。手動可否判断部４１２は、ドアが閉まっている状態で、かつ工作機械７０の特定領域にロボット６０を入れる指令があった場合は、ドアが閉まっていてロボット６０が加工エリアに入れないので、手動操作を不可にする。
【００８４】
また、手動可否判断部４１２は、ロボット６０のＮＣ座標系における座標が特定領域に入った場合、画面処理部３１によって表示部４にアラームを表示させ、ユーザに手動操作不可の状態であることを通知してもよい。
【００８５】
このように実施の形態２によれば、工作機械７０の座標系を用いてロボット６０に手動操作が行われた場合に、数値制御装置１Ｙが、工作機械７０の座標系をロボット６０の座標系に変換したうえで、ロボット６０に指令を送るので、ユーザは、容易にロボット６０を手動操作することが可能となる。
【００８６】
実施の形態３．
つぎに、図９から図１２を用いてこの発明の実施の形態３について説明する。実施の形態３では、手動操作によるロボット６０の動作を記憶しておき、逆行の指示があった場合には、ロボット６０の動作を逆方向に戻す。
【００８７】
図９は、実施の形態３にかかる数値制御装置の構成例を示す図である。図９の各構成要素のうち実施の形態１，２の数値制御装置１Ｘ，１Ｙと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【００８８】
数値制御装置１Ｚは、制御演算部２Ｚと、表示部４と、ＰＬＣ操作部５とを有する。図９には、数値制御装置１Ｚとともに、入力操作部３Ｚ、工作機械７０、ロボットコントローラ５０、およびロボット６０が示されている。
【００８９】
入力操作部３Ｚは、手動ハンドル５５と、ジョグボタン５７と、軸選択スイッチ５９と、逆行スイッチ５４とを備えている。逆行スイッチ５４は、ロボット６０の動作を逆方向に戻すためのスイッチである。逆行スイッチ５４は、押下されている間、逆行スイッチ５４が押されていることを示す情報である逆行情報を、制御演算部２Ｚに送り続ける。この逆行情報は、記憶部３４Ｚを介してロボット手動操作部４１Ｚに送られる。
【００９０】
制御演算部２Ｚは、制御演算部２Ｙと比較して、記憶部３４Ｙの代わりに記憶部３４Ｚを備え、ロボット手動操作部４１Ｙの代わりにロボット手動操作部４１Ｚを備えている。
【００９１】
記憶部３４Ｚは、記憶部３４Ｙが有するエリアに加えて、手動動作記憶エリア３４８および送信間隔記憶エリア３４９を備えている。手動動作記憶エリア３４８は、ロボット６０の手動操作が行われている間に、ロボットコントローラ５０に送られている移動指令（以下、手動時指令という）を記憶するエリアである。第１の移動指令である手動時指令は、移動データ送信部４１３が、移動データに基づいて生成し、手動動作記憶エリア３４８に格納していく。ロボットコントローラ５０に送られる移動指令が、ロボット座標系に変換されている場合、手動時指令は、ロボット座標系で示される。
【００９２】
送信間隔記憶エリア３４９は、手動時指令を逆方向の移動指令に変換してロボットコントローラ５０に送信する際の送信周期（逆行送信間隔）を記憶しておくエリアである。
【００９３】
ロボット手動操作部４１Ｚは、ロボット手動操作部４１Ｙが備える構成要素に加えて、変換部である逆方向変換部４１４を備えている。逆方向変換部４１４は、逆方向への移動指令があった場合に、手動動作記憶エリア３４８内の手動時指令を逆方向への移動指令に変換する。
【００９４】
逆方向変換部４１４は、逆行情報を受け付けている間に、ジョグボタン５７または手動ハンドル５５に入力された移動量を受け付けると、移動量を受け付けている間、手動時指令に沿ってロボット６０を逆行させる移動指令（第２の移動指令）を生成する。逆方向変換部４１４は、逆行情報を受け付けている間に０よりも大きな移動量を受け付けると、移動量の大きさに関わらず、手動時指令に沿ってロボット６０を逆行させる移動指令を生成する。逆方向変換部４１４が生成した移動指令は、移動データ送信部４１３からロボットコントローラ５０に送られる。
【００９５】
なお、逆行スイッチ５４、逆方向変換部４１４、手動動作記憶エリア３４８、および送信間隔記憶エリア３４９を、数値制御装置１Ｘに配置してもよい。
【００９６】
図１０は、実施の形態３にかかる数値制御装置が表示部に表示させる、逆行操作を受け付ける画面を説明するための図である。図１０では、表示部４が表示する表示画面の第３例である操作受付画面２３を示している。操作受付画面２３は、ユーザからロボット６０への操作を受け付ける画面である。
【００９７】
操作受付画面２３は、逆行スイッチ５４を表示する。ユーザが逆行スイッチ５４を押下またはタッチすると、逆行情報が制御演算部２Ｚに送られる。
【００９８】
図１１は、実施の形態３にかかる数値制御装置がロボットに実行させる逆行の経路を説明するための図である。逆行スイッチ５４が押されることなく、ジョグボタン５７または手動ハンドル５５が操作されると、ロボット６０は、正方向に移動する。図１１では、ロボットハンド６１が上方向に移動し（ｓｔ１）、右方向に移動し（ｓｔ２）、左方向に移動し（ｓｔ３）、下方向に移動した（ｓｔ４）場合を示している。ロボット６０を手動操作している間（ｓｔ１〜ｓｔ４）、移動データ送信部４１３がロボットコントローラ５０へ送った移動指令に対応する手動時指令が、手動動作記憶エリア３４８で記憶される。
【００９９】
この後、逆行スイッチ５４が押され、逆行スイッチ５４が押されている間に、ジョグボタン５７または手動ハンドル５５が操作されると、ロボット６０は、移動してきた経路を逆方向に移動する。すなわち、ロボット６０は、正方向に移動してきた経路に沿って、経路を逆戻りする。図１１では、ロボットハンド６１が上方向に移動し（ｓｔ５）、右方向に移動する（ｓｔ６）場合を示している。ｓｔ５の経路とｓｔ４の経路とは、同じ直線上であり、方向が逆である。また、ｓｔ６の経路とｓｔ３の経路とは、同じ直線上であり、方向が逆である。
【０１００】
逆方向変換部４１４は、逆行スイッチ５４が押下された状態でジョグボタン５７が操作されている間、周期的に手動動作記憶エリア３４８から手動時指令を呼び出す。そして、逆方向変換部４１４は、手動時指令を逆方向への移動指令に変換する。移動データ送信部４１３は、逆方向の移動指令をロボットコントローラ５０に送信することで逆方向へのロボット６０の移動を実現する。
【０１０１】
また、逆行スイッチ５４が押下された状態で手動ハンドル５５が操作される場合、逆方向変換部４１４は、手動ハンドル５５からパルスの入力を受け付ける度に、手動時指令を逆方向への移動指令に変換する。
【０１０２】
なお、ジョグボタン５７が押下された時に手動時指令を逆方向に変換してロボットコントローラ５０に送信する周期は、予め逆行送信間隔に設定しておく。逆方向変換部４１４および移動データ送信部４１３は、逆行送信間隔に従って手動時指令の逆方向への変換と、ロボットコントローラ５０への送信とを実行する。
【０１０３】
ユーザは、移動方向の軸を選択してからジョグボタン５７または手動ハンドル５５を操作することで、ロボット６０を実線で示した正方向（ｓｔ１〜ｓｔ４）に移動させることができる。ところが、ユーザは、ロボット６０の位置修正のために他の物体に干渉しないように元の経路に沿ってロボット６０を移動させたい場合がある。この場合、ユーザは、再度軸選択スイッチ５９で動作させる軸を選びながらロボット６０を操作すると、操作ミスによってロボット６０が他の物体に干渉する場合がある。実施の形態３では、ユーザは、逆行スイッチ５４を押下した状態でジョグボタン５７または手動ハンドル５５を操作すればよいので、軸の選択および移動量を考慮することなく、点線で示した逆方向（ｓｔ５、ｓｔ６）にロボット６０を容易に移動させることができる。これにより、ロボット６０を他の物体に干渉させることなく、ロボット６０の位置を容易に修正することが可能になる。
【０１０４】
図１２は、実施の形態３にかかる数値制御装置がロボットの動作を逆行させる処理の処理手順を示すフローチャートである。数値制御装置１Ｚは、動作を開始すると、逆方向変換部４１４が、逆行スイッチ５４が押下されたか否かを判定する（ステップＳ４１）。
【０１０５】
逆行スイッチ５４が押下されていない場合（ステップＳ４１、Ｎｏ）、座標変換部４１１が、軸選択スイッチ５９で選択された軸情報を、記憶部３４Ｚから取得する（ステップＳ４２）。また、座標変換部４１１は、ジョグボタン５７または手動ハンドル５５に入力された移動量を記憶部３４Ｚから取得する（ステップＳ４３）。なお、座標変換部４１１は、ステップＳ４２の処理とステップＳ４３の処理とを、何れの順番で実行してもよい。
【０１０６】
この後、座標変換部４１１は、ロボット座標系への変換処理を実行する（ステップＳ３０）。すなわち、座標変換部４１１は、図８で説明したステップＳ２３，Ｓ２４の処理を実行する。さらに、手動可否判断部４１２は、ロボット６０の手動可否の判定処理を実行する（ステップＳ１０）。
【０１０７】
逆行スイッチ５４が押下された場合（ステップＳ４１、Ｙｅｓ）、逆方向変換部４１４は、手動動作記憶エリア３４８で記憶しておいた手動時指令を取得する（ステップＳ４４）。逆方向変換部４１４は、手動動作記憶エリア３４８内の手動時指令を逆方向への移動指令に変換する（ステップＳ４５）。この後、手動可否判断部４１２は、ロボット６０の手動可否の判定処理を実行する（ステップＳ１０）。
【０１０８】
なお、逆方向変換部４１４は、手動ハンドル５５の回転方向に基づいて、ロボット６０を移動経路の正方向に移動させる処理と、逆方向に移動させる処理とを切り替えてもよい。この場合、逆方向変換部４１４は、手動時指令を記憶している移動経路では、手動時指令に従って正方向への移動および逆方向への移動を実行する。一方、移動データ送信部４１３は、手動時指令を記憶していない新たな操作が実行された場合には、ジョグボタン５７または手動ハンドル５５への操作に応じた移動をロボット６０に実行させる。
【０１０９】
また、実施の形態３では、直交座標系の１軸のみに対する手動操作を行う場合について説明したが、三次元座標空間の終点を目標に複数軸同時に移動するような手動操作であってもよい。
【０１１０】
このように実施の形態３によれば、数値制御装置１Ｚが、手動操作によるロボット６０の動作を記憶しておき、逆行の指示があった場合にはロボット６０の動作を逆方向に戻すので、ユーザは、ロボット６０の位置を容易に修正することが可能になる。
【０１１１】
実施の形態４．
つぎに、図１３および図１４を用いてこの発明の実施の形態４について説明する。実施の形態４では、手動操作時のロボット６０の動作速度を、オーバーライドスイッチを用いて調整する。
【０１１２】
図１３は、実施の形態４にかかる数値制御装置の構成例を示す図である。図１３の各構成要素のうち実施の形態１から３の数値制御装置１Ｘ〜１Ｚと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１１３】
数値制御装置１Ｐは、制御演算部２Ｐと、表示部４と、ＰＬＣ操作部５とを有する。図１３には、数値制御装置１Ｐとともに、入力操作部３Ｐ、工作機械７０、ロボットコントローラ５０、およびロボット６０が示されている。
【０１１４】
入力操作部３Ｐは、手動ハンドル５５と、ジョグボタン５７と、軸選択スイッチ５９と、逆行スイッチ５４と、オーバーライドスイッチ５６とを備えている。オーバーライドスイッチ５６は、工作機械７０およびロボット６０の速度に倍率（オーバーライド）を掛けるためのスイッチである。以下、オーバーライドスイッチ５６が、ロボット６０の速度を低下させる場合について説明する。
【０１１５】
オーバーライドスイッチ５６は、ジョグボタン５７または手動ハンドル５５を用いてロボット６０への手動操作が行われている際には、ロボット６０の速度を特定の割合で低下させる。オーバーライドスイッチ５６は、ユーザ操作によって設定された設定値を、制御演算部２Ｐに送る。この設定値は、ロボット６０の速度を低下させる割合に対応している。オーバーライドスイッチ５６から送られてくる設定値は、記憶部３４Ｚに格納される。
【０１１６】
制御演算部２Ｐは、制御演算部２Ｚと比較して、ロボット手動操作部４１Ｚの代わりにロボット手動操作部４１Ｐを備えている。ロボット手動操作部４１Ｐは、ロボット手動操作部４１Ｚが備える構成要素に加えて、オーバーライド制御部４１５を備えている。
【０１１７】
オーバーライド制御部４１５は、記憶部３４Ｚから設定値を取得して、設定値を、ロボット６０の速度を低下させる割合に変換する。移動データ送信部４１３は、手動操作されるロボット６０の速度データに割合を掛けることによって、速度を低下させた速度データを生成する。
【０１１８】
なお、オーバーライドスイッチ５６、およびオーバーライド制御部４１５を、数値制御装置１Ｘまたは数値制御装置１Ｙに配置してもよい。
【０１１９】
図１４は、実施の形態４にかかる数値制御装置が、手動操作されるロボットの速度を特定の割合で低下させる処理の処手順を示すフローチャートである。数値制御装置１Ｐは、動作を開始すると、座標変換部４１１が、軸選択スイッチ５９で選択された軸情報を、記憶部３４Ｚから取得する（ステップＳ６１）。また、座標変換部４１１は、ジョグボタン５７または手動ハンドル５５に入力された移動量を記憶部３４Ｚから取得する（ステップＳ６２）。なお、座標変換部４１１は、ステップＳ６１の処理とステップＳ６２の処理とを、何れの順番で実行してもよい。この後、座標変換部４１１は、ロボット座標系への変換処理を実行する（ステップＳ３０）。
【０１２０】
ロボット６０の動作が速すぎた場合、ユーザは、オーバーライドスイッチ５６によってロボット６０の速度を下げることができる。オーバーライド制御部４１５は、オーバーライドスイッチ５６への操作状態、すなわち、オーバーライドスイッチ５６に対して設定された値を、記憶部３４Ｚを介してオーバーライドスイッチ５６から取得する（ステップＳ６３）。オーバーライド制御部４１５は、オーバーライドスイッチ５６に設定された値を、ロボット６０の速度に掛ける割合（倍率）に変換する（ステップＳ６４）。
【０１２１】
オーバーライド制御部４１５は、変換した割合（％）を、移動データ送信部４１３に送る。また、移動データ送信部４１３は、ロボット６０の移動速度を示す速度データを記憶部３４Ｚから取得する。
【０１２２】
移動データ送信部４１３は、速度データに割合を掛ける（ステップＳ６５）。例えば、割合が１０％であった場合、移動データ送信部４１３は、ロボット６０の速度が１０分の１になる速度データを生成する。移動データ送信部４１３は、軸情報、移動量、生成した速度データを、ロボットコントローラ５０を介してロボット６０に送信する（ステップＳ６６）。
【０１２３】
これにより、ユーザは、手動操作時のロボット６０の動作速度を、オーバーライドスイッチ５６で制御できるので、ロボット６０が工作機械７０等と干渉することをユーザの判断で回避しやすくすることができる。なお、ユーザは、ロボットコントローラ５０を操作することによってもロボット６０の速度を低下させることはできるが、実施の形態４では、ユーザが、ロボットコントローラ５０まで移動しなくてもロボット６０の速度を低下させることができるので、ユーザの作業効率が向上する。
【０１２４】
このように実施の形態４によれば、数値制御装置１Ｐが、手動操作時のロボット６０の動作速度を、オーバーライドスイッチ５６を用いて低下させるので、ユーザは、ロボット６０が工作機械７０等と干渉することを容易に回避することができる。
【０１２５】
実施の形態５．
つぎに、図１５を用いてこの発明の実施の形態５について説明する。実施の形態５では、制御システム１００の状態を判定する際の判定値と、制御システム１００にエラーが発生するまでの時間との関係に基づいて、手動操作の可否を学習する。
【０１２６】
図１５は、実施の形態５にかかる数値制御装置の構成例を示す図である。図１６は、実施の形態５にかかる数値制御装置が備える機械学習装置の構成例を示す図である。図１５，１６の各構成要素のうち実施の形態１の数値制御装置１Ｘと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
【０１２７】
数値制御装置１Ｑは、制御演算部２Ｑと、表示部４と、ＰＬＣ操作部５とを有する。図１５には、数値制御装置１Ｑとともに、入力操作部３Ｘ、工作機械７０、ロボットコントローラ５０、およびロボット６０が示されている。
【０１２８】
制御演算部２Ｑは、制御演算部２Ｘと比較して、ロボット手動操作部４１Ｘの代わりに、ロボット手動操作部４１Ｑを備えている。ロボット手動操作部４１Ｑは、ロボット手動操作部４１Ｘと比較して、手動可否判断部４１２の代わりに手動可否判断部４１２Ｑを備えている。手動可否判断部４１２Ｑは、手動可否判断部４１２の機能に加えて、手動操作開始からエラーが発生するまでの時間を計測する機能を有している。
【０１２９】
また、制御演算部２Ｑは、制御演算部２Ｘが備える構成要素に加えて機械学習装置８０を備えている。機械学習装置８０は、手動操作の可否を判定する際に用いる適切な判定値を学習し、手動可否判断部４１２Ｑは、機械学習装置８０によって学習された判定値を用いて、手動操作の可否を判定する。手動可否判断部４１２Ｑは、手動操作が不可の場合はユーザに通知するとともに手動操作を無効にする。
【０１３０】
数値制御装置１Ｑの機械学習装置８０以外の各構成要素は、制御システム１００の状態を示す状態情報を機械学習装置８０に送る。状態情報の例は、ロボット６０の状態を示すロボット状態情報、工作機械７０の状態を示すＮＣ状態情報、ＰＬＣ３６の状態を示すＰＬＣ状態情報等である。
【０１３１】
手動可否判断部４１２Ｑは、ロボット状態情報を、例えばロボット手動操作部４１Ｑから取得する。また、手動可否判断部４１２Ｑは、ＮＣ状態情報を、例えば共有エリア３４５から取得する。また、手動可否判断部４１２Ｑは、ＰＬＣ状態情報を、例えば制御信号処理部３５から取得する。
【０１３２】
機械学習装置８０は、ロボット状態情報、ＮＣ状態情報、およびＰＬＣ状態情報を手動可否判断部４１２Ｑから取得する。なお、機械学習装置８０は、ロボット状態情報をロボット手動操作部４１Ｑから取得し、ＮＣ状態情報を共有エリア３４５から取得し、ＰＬＣ状態情報を制御信号処理部３５から取得してもよい。状態情報は、ロボット状態情報、ＮＣ状態情報、およびＰＬＣ状態情報以外の情報を含んでいてもよい。
【０１３３】
手動可否判断部４１２Ｑは、状態情報に基づいて、ユーザによるロボット６０の手動操作中にエラーが発生したか否かを判断する。エラーは、ロボット６０が、工作機械７０に衝突した際、または工作機械７０に衝突する可能性が特定の基準値よりも高い場合に発生するものとする。すなわち、手動可否判断部４１２Ｑは、制御システム１００において、ロボット６０の手動操作を不可にする状態が発生した場合に、エラーが発生したと判断する。手動可否判断部４１２Ｑは、エラーの判断項目毎の判定値と、エラーの判断項目が示す値（状態を示す値）とを比較することによって、エラーの判断項目毎にエラーを発生したか否かを判断する。エラーの判断項目毎の判定値は、記憶部３４Ｘに格納しておく。また、手動可否判断部４１２Ｑは、手動操作開始からエラーが発生するまでの時間（以下、エラー発生時間という）を計測する。
【０１３４】
機械学習装置８０は、制御システム１００の状態を判定する際の判定値と、制御システム１００におけるエラー発生時間との関係に基づいて、適切な判定値を学習していく。これにより、手動可否判断部４１２Ｑが記憶している判定値は、機械学習装置８０による学習によって書き換えられていく。このように、判定値は、手動操作の可否判定に用いられるので、機械学習装置８０は、手動操作の可否を学習することとなる。
【０１３５】
手動可否判断部４１２Ｑは、エラーの発生の際には、画面処理部３１にアラームを通知する。したがって、判定値は、アラームを発生させるか否かの判定基準であるともいえる。なお、判定値は、記憶部３４Ｘで記憶する場合に限らず、機械学習装置８０で記憶しておいてもよい。
【０１３６】
エラーの判断項目の例は、ロボットハンド６１の稼働領域が特定の範囲内であるか否かである。この稼働領域は、ユーザによるロボット６０への手動操作に応じて変化する。稼働領域は、ロボット６０の特定位置（スタート位置）のロボットハンド６１の距離および移動方向によって決まることがあるので、この距離に対する判定値が稼働領域の判定値となる。ロボットハンド６１の稼働領域が広すぎる場合、ロボットハンド６１が、工作機械７０に衝突しやすくなり、アラームを発生させるまでの時間が長くなる傾向になる。このため、判定値が大きくなりすぎると、アラームを発生させるまでの時間が長くなる。一方、判定値が小さすぎると、ロボットハンド６１の稼働領域が狭くなり不便である。したがって、アラームを発生させるまでの時間が短くなり過ぎず、ロボットハンド６１の稼働領域を確保できる判定値が適切な判定値である。また、ロボット６０の移動方向によってはエラーが発生しない（例えば、工作機械７０と干渉しない）ので、エラーが発生しない移動方向の範囲が適切な判定値である。また、工作機械７０の状態（自動運転中（加工中）でない、かつ工作機械７０のドアがオープンしているなどの状態）がロボット移動可能な適切な判定値である。このため、機械学習装置８０は、エラー発生時間が適切な時間（以下、適切時間という）で発生するよう、判定値を設定する。適切時間は、手動操作開始からの経過時間であり、例えば、１０秒後から３０秒後などの期間であってもよいし、１５秒後といった特定のタイミングであってもよい。適切時間で、かつ、適切な移動方向、かつ、適切な工作機械７０の状態で、エラーが発生しなくなる。これにより、ロボットハンド６１の稼働領域を確保しつつ、ロボットハンド６１の手動操作時にロボットハンド６１の衝突を回避できる。機械学習装置８０は、各種の適切な判定値を学習していく。なお、ＮＣプログラムの進行状況によって工具または加工ワークの位置が変化するので、ＮＣプログラムの進行状況毎に判定値が設定されてもよい。また、ここでは判定値をエラー発生時間に基づいて決定する場合について説明したが、判定値は移動量に基づいて決定されてもよい。
【０１３７】
手動可否判断部４１２Ｑは、エラーが発生したと判断すると、各種状態を計測または算出して機械学習装置８０に送る。
【０１３８】
機械学習装置８０は、状態観測部７１と、学習部７２とを備えている。状態観測部７１は、手動可否判断部４１２Ｑから現在使用中の状態を取得する。状態観測部７１は、エラーが発生した場合、各種状態を状態変数８１として観測し、学習部７２に送る。手動可否判断部４１２Ｑは、ユーザがロボット６０を手動操作中に、エラーの発生毎に各種状態を取得する。したがって、状態観測部７１は、エラーの発生毎に各種状態を取得して状態変数８１を学習部７２に送る。
【０１３９】
学習部７２に用いる学習アルゴリズムは、何れの学習アルゴリズムであってもよい。ここでは、学習アルゴリズムに、強化学習（Reinforcement  Learning）を適用した場合について説明する。強化学習は、ある環境内におけるエージェント（行動主体）が、状態変数８１で示される現在の状態を観測し、取るべき行動８３を決定する、というものである。エージェントは行動８３を選択することで環境から報酬８２を得て、一連の行動８３を通じて報酬８２が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Ｑ学習（Ｑ−learning）およびＴＤ学習（ＴＤ−learning）が知られている。例えば、Ｑ学習の場合、行動価値関数Ｑ（ｓ，ａ）の一般的な更新式（行動価値テーブル）は式（１）で表される。
【０１４０】
【数１】
0006811878.tif 000002
【０１４１】
式（１）において、ｓtは時刻ｔにおける環境を表し、ａtは時刻ｔにおける行動を表す。行動ａtにより、環境はｓt+1に変わる。ｒt+1はその環境の変化によってもらえる報酬８２を表し、γは割引率を表し、αは学習係数を表す。Ｑ学習を適用した場合、ロボット６０の手動操作に対応する判定値が、行動ａtとなる。
【０１４２】
式（１）で表される更新式は、時刻ｔ＋１における最良の行動ａの行動価値が、時刻ｔにおいて実行された行動ａの行動価値Ｑよりも大きければ、行動価値Ｑを大きくし、逆の場合は、行動価値Ｑを小さくする。換言すれば、時刻ｔにおける行動ａの行動価値Ｑを、時刻ｔ＋１における最良の行動価値に近づけるように、行動価値関数Ｑ（ｓ，ａ）を更新する。それにより、或る環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播していくようになる。
【０１４３】
学習部７２は、報酬計算部７３と、関数更新部７４とを備えている。報酬計算部７３は、状態変数８１である、エラー発生時間および判定値に基づいて、報酬８２を計算する。報酬計算部７３は、ユーザがロボット６０を手動操作した際の、例えばエラー発生時間と適切時間との差（以下、時間差という）が、これまでの時間差よりも小さくなると報酬８２を増大させる（例えば「１」の報酬を与える）。報酬計算部７３は、例えば、時間差が０であるときは報酬８２を最大報酬とする。他方、報酬計算部７３は、ユーザがロボット６０を手動操作した際の、時間差が、これまでの時間差よりも大きくなると報酬８２を低減させる（例えば「−１」の報酬を与える）。また、エラーが発生しない移動方向の場合は最大報酬を与える（例えば「１」の報酬を与える）。また、工作機械７０の状態が自動運転でなく、かつ、工作機械７０のドアがオープン状態の場合は最大報酬を与える（例えば「１」の報酬を与える）。
【０１４４】
関数更新部７４は、報酬計算部７３によって計算される報酬８２に従って、行動８３（次回の判定値）を決定するための関数を更新する。例えばＱ学習の場合、関数更新部７４は、式（１）で表される行動価値関数Ｑ（ｓt，ａt）を、次回の判定値を決定するための関数として用いる。関数更新部７４は、更新した行動価値関数Ｑ（ｓt，ａt）を用いて行動８３を算出する。関数更新部７４は、算出した行動８３を手動可否判断部４１２Ｑに送る。
【０１４５】
手動可否判断部４１２Ｑは、機械学習装置８０が算出した行動８３、すなわち判定値を用いて、ロボット６０への手動操作の可否を判定する。手動可否判断部４１２Ｑは、稼働領域が判定値よりも大きくなると（報酬が小さい場合に）、表示部４にアラームを表示させ、ロボット６０の手動操作を停止させる。
【０１４６】
なお、機械学習装置８０は、制御演算部２Ｑの外部に配置されてもよい。また、実施の形態５では、強化学習を利用して機械学習する場合について説明したが、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
【０１４７】
また、状態情報は、状態の履歴であってもよい。例えば、エラーの判断項目を、センサで検出した情報の履歴としてもよい。この場合、例えば、情報を時間で積分した値が状態情報である。また、機械学習装置８０は、数値制御装置１Ｙ，１Ｚ，１Ｐに配置されてもよい。
【０１４８】
このように実施の形態５によれば、機械学習装置８０が適切な状態に基づいて、ロボット６０の手動操作の可否の判定に用いる判定値を学習するので、数値制御装置１Ｑは、ロボット６０の手動操作の可否を適切に判断することができる。
【０１４９】
なお、実施の形態１から５で説明した内容を組み合わせてもよい。例えば、実施の形態３で説明した、逆行スイッチ５４、逆方向変換部４１４、手動動作記憶エリア３４８、および送信間隔記憶エリア３４９を、数値制御装置１Ｑに配置してもよい。また、実施の形態４で説明した、オーバーライドスイッチ５６、およびオーバーライド制御部４１５を、数値制御装置１Ｑに配置してもよい。
【０１５０】
ここで、数値制御装置１Ｘ〜１Ｚ，１Ｐ，１Ｑが備える制御演算部２Ｘ〜２Ｚ，２Ｐ，２Ｑのハードウェア構成について説明する。なお、制御演算部２Ｘ〜２Ｚ，２Ｐ，２Ｑは、同様のハードウェア構成を有しているので、ここでは制御演算部２Ｘのハードウェア構成について説明する。
【０１５１】
図１７は、実施の形態１にかかる制御演算部のハードウェア構成例を示す図である。制御演算部２Ｘは、図１７に示したプロセッサ３０１、メモリ３０２、およびインタフェース回路３０３により実現することができる。プロセッサ３０１、メモリ３０２、およびインタフェース回路３０３は、バス３１０によって互いにデータの送受信が可能である。
【０１５２】
プロセッサ３０１の例は、ＣＰＵ（Central  Processing  Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、ＤＳＰ（Digital  Signal  Processor）ともいう）またはシステムＬＳＩ（Large  Scale  Integration）である。メモリ３０２の例は、ＲＡＭ（Random  Access  Memory）またはＲＯＭ（Read  Only  Memory）である。
【０１５３】
記憶部３４Ｘは、メモリ３０２によって実現される。入力制御部３２の一部の機能、画面処理部３１の一部の機能、通信制御部４４の一部の機能、軸データ出力部４０の一部の機能は、インタフェース回路３０３によって実現される。
【０１５４】
制御演算部２Ｘは、プロセッサ３０１が、メモリ３０２で記憶されている、制御演算部２Ｘの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部２Ｘの手順または方法をコンピュータに実行させるものであるともいえる。メモリ３０２は、プロセッサ３０１が各種処理を実行する際の一時メモリにも使用される。
【０１５５】
プロセッサ３０１が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な（non-transitory）記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ３０１が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
【０１５６】
また、制御演算部２Ｘを専用のハードウェアで実現してもよい。また、制御演算部２Ｘの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
【０１５７】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１５８】
１Ｐ，１Ｑ，１Ｘ〜１Ｚ  数値制御装置、２Ｐ，２Ｑ，２Ｘ〜２Ｚ  制御演算部、３Ｐ，３Ｘ，３Ｚ  入力操作部、４  表示部、５  ＰＬＣ操作部、１１  通知領域、２１〜２３  操作受付画面、３１  画面処理部、３２  入力制御部、３３  データ設定部、３４Ｘ〜３４Ｚ  記憶部、３５  制御信号処理部、３７  解析処理部、３８  補間処理部、３９  加減速処理部、４０  軸データ出力部、４１Ｐ，４１Ｑ，４１Ｘ〜４１Ｚ  ロボット手動操作部、４４  通信制御部、４５  状態判定部、５０  ロボットコントローラ、５１  入出力ユニット、５２  非常停止ボタン、５３  操作盤、５４  逆行スイッチ、５５，５５Ａ，５５Ｂ  手動ハンドル、５６  オーバーライドスイッチ、５７  ジョグボタン、５９  軸選択スイッチ、６０  ロボット、６１  ロボットハンド、７０  工作機械、７１  状態観測部、７２  学習部、７３  報酬計算部、７４  関数更新部、８０  機械学習装置、８１  状態変数、８２  報酬、８３  行動、９０  駆動部、１００  制御システム、３０１  プロセッサ、３０２  メモリ、３０３  インタフェース回路、３１０  バス、３４１  パラメータ記憶エリア、３４３  ＮＣプログラム記憶エリア、３４４  表示データ記憶エリア、３４５  共有エリア、３４６  特定距離記憶エリア、３４７  オフセット座標記憶エリア、３４８  手動動作記憶エリア、３４９  送信間隔記憶エリア、４１１  座標変換部、４１２，４１２Ｑ  手動可否判断部、４１３  移動データ送信部、４１４  逆方向変換部、４１５  オーバーライド制御部。
【要約】
被加工物の加工を行う工作機械（７０）と被加工物の搬送を行うロボット（６０）とを制御する制御システムにおいて用いられる数値制御装置（１Ｘ）が、ロボット（６０）への手動操作を受け付ける入力操作部（３Ｘ）と、ＮＣプログラムを用いて工作機械（７０）を制御するとともに、手動操作に基づいてロボット（６０）を制御する制御演算部（２Ｘ）を有し、制御演算部（２Ｘ）は、制御システムの状態に基づいて、ロボット（６０）の手動操作の可否を判断する手動可否判断部（４１２）と、手動可否判断部（４１２）によってロボット（６０）の手動操作が許可されている場合に手動操作が行われると、手動操作に基づいて、ロボット（６０）の移動を制御するロボットコントローラ（５０）への第１の移動指令を生成してロボットコントローラ（５０）に送信する移動データ送信部（４１３）と、を備える。【図１】
0006811878.tif 000003
【図２】
0006811878.tif 000004
【図３】
0006811878.tif 000005
【図４】
0006811878.tif 000006
【図５】
0006811878.tif 000007
【図６】
0006811878.tif 000008
【図７】
0006811878.tif 000009
【図８】
0006811878.tif 000010
【図９】
0006811878.tif 000011
【図１０】
0006811878.tif 000012
【図１１】
0006811878.tif 000013
【図１２】
0006811878.tif 000014
【図１３】
0006811878.tif 000015
【図１４】
0006811878.tif 000016
【図１５】
0006811878.tif 000017
【図１６】
0006811878.tif 000018
【図１７】
0006811878.tif 000019