以下に、本発明の実施の形態にかかる数値制御装置および数値制御方法を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる数値制御装置を備えた制御システムの構成を示す図である。制御システム100は、Gコードプログラムといった数値制御(NC:Numerical Control)プログラムを用いて工作機械70を制御し、ユーザによる手動操作によってロボット60を制御するシステムである。
制御システム100は、工作機械70と、数値制御装置1Xと、ロボットコントローラ50と、ロボット60とを備えている。数値制御装置1Xは、例えば、工作機械70に配置されている。実施の形態1の数値制御装置1Xは、制御システム100において、ロボット60への手動操作を許可してもよい状態であるか否かを判定し、手動操作を許可してもよい状態である場合に、ユーザからのロボット60への手動操作を受け付ける。
数値制御装置1Xは、工作機械70に対して工具を使った加工ワーク(被加工物)を加工するための指令を送る装置である。数値制御装置1Xは、CNC(コンピュータ数値制御:Computer Numerical Control)を行う装置であり、入力操作部3Xに接続されている。
数値制御装置1Xは、工作機械70、入力操作部3X、およびロボットコントローラ50に接続されている。また、ロボットコントローラ50は、入力操作部3Xおよびロボット60に接続されている。数値制御装置1Xとロボットコントローラ50とは、例えば、LAN(Local Area Network)を介して接続されている。
制御システム100では、数値制御装置1Xが、工作機械70および入力操作部3Xとの間で通信を実行し、ロボットコントローラ50が、数値制御装置1X、入力操作部3X、およびロボット60との間で通信を実行する。このように、制御システム100では、ロボットコントローラ50を介して数値制御装置1Xと、ロボット60とが接続されており、数値制御装置1Xは、ロボットコントローラ50を介してロボット60を制御する。また、入力操作部3Xは、ロボットコントローラ50を介してロボット60を操作する。以下の説明では、数値制御装置1Xによるロボット60の制御を説明する際に、ロボットコントローラ50が介されていることを省略する場合がある。
入力操作部3Xは、ユーザが数値制御装置1Xおよびロボットコントローラ50を操作するための装置である。入力操作部3Xは、入出力ユニット51、非常停止ボタン52、および操作盤53を備えている。入力操作部3Xは、ユーザ操作に対応する信号を数値制御装置1Xに送ることによって、数値制御装置1Xを操作する。
操作盤53は、ユーザからの操作を受け付けて、操作に対応する信号を入出力ユニット51に送る。非常停止ボタン52は、ユーザによって押下されると、ロボットコントローラ50を停止させるための信号をロボットコントローラ50に送るとともに、工作機械70を停止させるための信号を入出力ユニット51に送る。入出力ユニット51は、操作盤53から送られてくる信号および非常停止ボタン52から送られてくる信号を、数値制御装置1Xに送る。非常停止ボタン52および入出力ユニット51は、操作盤53に配置されてもよい。
ロボットコントローラ50は、数値制御装置1Xから送られてくる指示に従ってロボット60を制御する。また、ロボットコントローラ50は、非常停止ボタン52から信号が送られてくると、ロボット60の動作を停止させる。
ロボット60は、ロボットハンド61によって加工対象物である加工ワークを把持し、把持した加工ワークを搬送する。ロボット60は、加工前の加工ワークを工作機械70にロードし、加工後の加工ワークを工作機械70からアンロードする。ロボット60の例は、マニピュレータである。なお、ロボット60は、加工ワークの搬送以外の処理を実行してもよい。
数値制御装置1Xは、後述する制御演算部2Xと、表示部4と、PLC操作部5とを含んで構成されている。数値制御装置1Xは、NCプログラムを用いて、工作機械70およびロボット60を制御する。また、数値制御装置1Xは、入力操作部3Xから信号を受信すると、受信した信号に対応する処理を工作機械70に実行させる。また、数値制御装置1Xは、工作機械70の状態、ロボット60の状態などを表示する。
工作機械70は、NC工作機械であり、2軸以上の駆動軸によって工具と加工ワークとを相対的に移動させながら、工具で加工ワークを加工する。工作機械70の座標系である第1の座標系とロボット60の座標系である第2の座標系とは異なる座標系である。工作機械70は、直交座標系で制御され、例えば3軸方向に工具または加工ワークを移動させる。ロボット60は、回転軸を備えており、例えば、4軸以上の方向に駆動する。ロボット60は、複数の関節と複数のアームを備えており、1つの関節が1つのアームを1軸以上の方向に移動させる。
図2は、実施の形態1にかかる数値制御装置の構成例を示す図である。数値制御装置1Xは、制御演算部2Xと、表示部4と、PLC(プログラマブルロジックコントローラ:Programmable Logic Controller)36を操作するための機械操作盤などのPLC操作部5とを有する。図2には、数値制御装置1Xとともに、入力操作部3X、工作機械70、ロボットコントローラ50、およびロボット60が示されている。
工作機械70は、工具および加工ワークを駆動する駆動部90を備えている。駆動部90の例は、加工ワークを回転させながら、工具を駆動する駆動機構である。工具の駆動方向は、例えばX軸方向に平行な方向とZ軸方向に平行な方向との2方向である。なお、軸方向は装置構成によるので、軸方向は、上記方向に限定されない。
駆動部90は、数値制御装置1X上で規定された各軸方向に工具を移動させるサーボモータ901,902と、サーボモータ901,902の位置および速度を検出する検出器97,98とを備えている。また、駆動部90は、数値制御装置1Xからの指令に基づいて、サーボモータ901,902を制御する各軸方向のサーボ制御部を備えている。各軸方向のサーボ制御部は、検出器97,98からの位置および速度に基づいて、サーボモータ901,902へのフィードバック制御を行う。
サーボ制御部のうちの、X軸サーボ制御部91は、サーボモータ901を制御することによって工具のX軸方向の動作を制御し、Z軸サーボ制御部92は、サーボモータ902を制御することによって工具のZ軸方向の動作を制御する。なお、工作機械70が2つ以上の刃物台を備えていてもよい。この場合、駆動部90は、1つの刃物台毎に、1組のX軸サーボ制御部91と、Z軸サーボ制御部92と、サーボモータ901,902と、検出器97,98とを備える。
また、駆動部90は、加工ワークを回転させるための主軸を回転させる主軸モータ911と、主軸モータ911の位置および回転数を検出する検出器211とを備えている。検出器211が検出する回転数は、主軸モータ911の回転数に対応している。
また、駆動部90は、数値制御装置1Xからの指令に基づいて、主軸モータ911を制御する主軸サーボ制御部200を備えている。主軸サーボ制御部200は、検出器211からの位置および回転数に基づいて、主軸モータ911へのフィードバック制御を行う。
なお、工作機械70が2つの加工ワークを同時に加工する場合には、駆動部90は、主軸モータ911と、検出器211と、主軸サーボ制御部200とを2組備える。この場合、工作機械70は、2つ以上の刃物台を備えている。
入力操作部3Xは、制御演算部2Xに情報を入力する手段である。入力操作部3Xは、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置1Xに対するコマンドなどの入力、ユーザによるロボット60への手動操作、またはNCプログラムもしくはパラメータなどを受付けて制御演算部2Xに入力する。
入力操作部3Xは、手動ハンドル55と、ジョグボタン57と、軸選択スイッチ59とを備えている。軸選択スイッチ59は、ロボット60に対して手動操作する軸を選択するスイッチである。軸選択スイッチ59の例は、工作機械70における座標系で、X軸を指定するスイッチ、Y軸を指定するスイッチ、Z軸を指定するスイッチ、A軸を指定するスイッチ、B軸を指定するスイッチ、C軸を指定するスイッチである。軸選択スイッチ59は、押下またはタッチされた軸が何れの軸であるかを示す軸情報を、制御演算部2Xに送る。この軸情報は、記憶部34Xを介してロボット手動操作部41Xに送られる。
手動ハンドル55は、ロボット60の軸方向の移動量を操作するためのハンドルである。手動ハンドル55は、操作に対応する移動量を制御演算部2Xに送る。この移動量は、記憶部34Xを介してロボット手動操作部41Xに送られる。
ジョグボタン57は、ロボット60の軸方向の移動量をジョグ操作するためのボタンである。ジョグボタン57は、操作に対応する移動量を制御演算部2Xに送る。この移動量は、記憶部34Xを介してロボット手動操作部41Xに送られる。
表示部4は、液晶表示装置などの表示手段によって構成され、制御演算部2Xによって処理された情報を表示画面に表示する。表示部4の例は、液晶タッチパネルである。この場合、入力操作部3Xの一部の機能が、表示部4に配置されている。
制御部である制御演算部2Xは、工作機械70の座標系で規定されたNCプログラムを用いて工作機械70を制御する。制御演算部2Xは、入力制御部32と、データ設定部33と、記憶部34Xと、画面処理部31と、解析処理部37と、制御信号処理部35と、PLC36と、補間処理部38と、状態判定部45と、加減速処理部39と、軸データ出力部40と、ロボット手動操作部41Xと、通信制御部44とを有する。なお、PLC36は、制御演算部2Xの外部に配置されてもよい。
記憶部34Xは、パラメータ記憶エリア341、NCプログラム記憶エリア343、表示データ記憶エリア344、および共有エリア345を有している。パラメータ記憶エリア341内には、制御演算部2Xの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア341内には、数値制御装置1Xを動作させるための制御パラメータ、サーボパラメータおよび工具データが格納される。NCプログラム記憶エリア343内には、加工ワークの加工に用いられるNCプログラムが格納される。
表示データ記憶エリア344内には、表示部4で表示される画面表示データが格納される。画面表示データは、表示部4に情報を表示するためのデータである。また、記憶部34Xには、一時的に使用されるデータを記憶する共有エリア345が設けられている。
画面処理部31は、表示データ記憶エリア344に格納された画面表示データを表示部4に表示させる制御を行う。入力制御部32は、入力操作部3Xから入力される情報を受付ける。データ設定部33は、入力制御部32で受付けられた情報を記憶部34Xに記憶させる。すなわち、入力操作部3Xが受付けた入力情報は、入力制御部32およびデータ設定部33を介して記憶部34Xに書き込まれる。
制御信号処理部35は、PLC36に接続されており、PLC36から、工作機械70の機械を動作させるリレーなどの信号情報を受付ける。制御信号処理部35は、受付けた信号情報を、記憶部34Xの共有エリア345に書き込む。これらの信号情報は、加工運転時に補間処理部38が参照する。また、制御信号処理部35は、解析処理部37によって共有エリア345に補助指令が出力されると、この補助指令を共有エリア345から読み出してPLC36に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、MコードまたはTコードである。
PLC36は、PLC36が実行する機械動作が記述されたラダープログラムを格納している。PLC36は、補助指令であるTコードまたはMコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械70に実行する。PLC36は、補助指令に対応する処理を実行した後、NCプログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部35に送る。
制御演算部2Xでは、制御信号処理部35と、解析処理部37と、補間処理部38と、ロボット手動操作部41Xとが記憶部34Xを介して接続されており、記憶部34Xを介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部35と、解析処理部37と、補間処理部38と、ロボット手動操作部41Xとの間の情報の書き込み、および読み出しを説明する際に記憶部34Xが介されていることを省略する場合がある。
NCプログラムの選択は、ユーザが入力操作部3XでNCプログラム番号を入力することによって行われる。このNCプログラム番号は、入力制御部32およびデータ設定部33を介して共有エリア345に書き込まれる。機械操作盤等のサイクルスタートをトリガとして、解析処理部37は、選択されたNCプログラム番号を共有エリア345から読み出すと、選択されたNCプログラム番号のNCプログラムをNCプログラム記憶エリア343内から読み出して、NCプログラムの各ブロック(各行)に対して解析処理を行う。解析処理部37は、例えば、Gコード(軸移動等に関する指令)、Tコード(工具交換指令など)、Sコード(主軸モータ回転数指令)、およびMコード(機械動作指令)を解析する。
解析処理部37は、解析した行にMコードまたはTコードが含まれている場合には、解析結果を共有エリア345および制御信号処理部35を介してPLC36に送る。また、解析処理部37は、解析した行にMコードが含まれている場合には、Mコードを、制御信号処理部35を介してPLC36に送る。PLC36はMコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部35を介してMコードの完了を示す結果が記憶部34Xに書き込まれる。補間処理部38は記憶部34Xに書き込まれた実行結果を参照する。
また、解析処理部37は、工作機械70へのGコードが含まれている場合には、共有エリア345を介して解析結果を補間処理部38に送る。具体的には、解析処理部37は、Gコードに対応する移動条件を生成して補間処理部38に送る。また、解析処理部37は、Sコードで指定された主軸回転数を補間処理部38に送る。主軸回転数は、単位時間あたりの主軸の回転の回数である。移動条件は、加工位置を移動させていくための工具送りの条件であり、刃物台を移動させる速度、刃物台を移動させる位置などで示される。例えば、工具の工具送りは、工具をX軸方向(+X方向)およびZ軸方向(+Z方向)に進ませる。
補間処理部38は、解析処理部37による解析結果のうち工作機械70への指令を用いて工作機械70を制御するためのデータを生成し、加減速処理部39に送る。加減速処理部39は、工作機械70を制御するためのデータを、軸データ出力部40を介して工作機械70に出力する。
状態判定部45は、制御信号処理部35から工作機械70の状態を示す状態データを取得し、状態データに基づいて、軸データ出力部40が工作機械70に出力するデータを修正する。例えば、工作機械70のドアが開いている場合、ユーザが工作機械70に侵入する可能性があるので、軸データ出力部40が工作機械70に出力するデータを、サーボモータ901,902、および主軸モータ911の駆動を停止させるデータに修正する。
通信制御部44は、ロボット手動操作部41Xおよびロボットコントローラ50に接続されている。通信制御部44は、ロボット手動操作部41Xから送られてきたデータをロボットコントローラ50に送信し、ロボットコントローラ50から送られてきたデータをロボット手動操作部41Xに送信する。通信制御部44が、ロボットコントローラ50に送信するデータの例は、手動操作(ジョグボタン57または手動ハンドル55への操作)によって発生した軸の移動量である。通信制御部44が、ロボット手動操作部41Xに送信するデータの例は、ロボット60の状態を示す情報である。以下の説明では、ロボット手動操作部41Xとロボットコントローラ50との間のデータの送受信を説明する際に通信制御部44が介されていることを省略する場合がある。
ロボット手動操作部41Xは、手動可否判断部412および移動データ送信部413を備えている。移動データ送信部413は、軸選択スイッチ59で選択された軸情報と、ジョグボタン57または手動ハンドル55から送られてくる移動量に基づいて移動指令(第1の移動指令)を生成し、移動指令をロボットコントローラ50に送る。これにより、数値制御装置1Xは、ロボットコントローラ50を介して、ロボット60を操作することができる。
手動可否判断部412は、制御システム100の状態(以下、システム状態という)に基づいて、ロボット60の手動操作の可否を判断する。すなわち、手動可否判断部412は、ロボット60、数値制御装置1X、および工作機械70の少なくとも1つの状態に基づいて、ロボット60の手動操作の可否を判断する。可否の判断には、数値制御装置1Xが持つ種々のデータが参照される。
手動可否判断部412は、例えば通信制御部44からロボットコントローラ50と数値制御装置1Xとの間の通信状態を取得し、ロボット60と数値制御装置1Xとの間の通信が未接続の場合は、手動操作不可と判断する。
ロボット60の状態の例は、ロボット60を構成する部品の温度、ロボットコントローラ50との間の通信状態、非常停止中であるか否か、ロボット60の周辺の侵入禁止領域にユーザが侵入しているか否か等である。
数値制御装置1Xの状態の例は、ロボットコントローラ50との間の通信状態である。手動可否判断部412は、ロボットコントローラ50との間の通信状態が未接続状態である場合、何らかの異常が発生している場合があるので、ロボットコントローラ50との間の通信を接続せず手動操作不可と判断する。
また、手動可否判断部412は、状態判定部45から、工作機械70の状態を示す状態データを取得し、状態データに基づいて手動操作の可否を判断してもよい。工作機械70の状態の例は、工作機械70を囲っている筐体のドアの開閉状態である。手動可否判断部412は、工作機械70のドアが開いている場合、ユーザが工作機械70に侵入する可能性があるので、手動操作不可と判断する。また、手動可否判断部412は、工作機械70のドアが閉じている場合には、手動操作可能と判断するが、表示部4に、ドアが閉じていることを示す注意メッセージを表示する。これにより、オペレータは、工作機械70の内部にロボット60の手動教示作業をする際に、工作機械70のドアにロボット60が干渉することを回避することが可能になる。
また、手動可否判断部412は、制御システム100内の構成要素の状態に基づいて、ロボット60の手動操作の可否を判断してもよい。例えば、手動可否判断部412は、制御システム100に配置されている温度センサ、接触センサといった種々のセンサで検出された検出値に基づいて、ロボット60の手動操作の可否を判断してもよい。この場合、制御システム100に配置されている何れかのセンサが異常な検出値(判定値よりも高い検出値)を示した場合に、何らかの異常が発生している場合があるので、手動可否判断部412は、手動操作不可と判断する。
また、手動可否判断部412は、通信制御部44からロボット60側のアラームを取得し、取得したアラームに基づいて手動操作の可否を判断してもよい。また、手動可否判断部412は、制御信号処理部35からドアの開閉信号を取得し、ドアの開閉信号に基づいて手動操作の可否を判断してもよい。また、手動可否判断部412は、工作機械70が自動運転中であるか否かを、制御信号処理部35が入出力しているPLC36との間(ラダーインタフェース)の信号に基づいて判断し、自動運転中である場合には、手動操作不可と判断してもよい。例えば、手動可否判断部412は、ドアが開いている状態で、かつ自動運転していない場合には手動操作可と判断してもよい。
手動可否判断部412は、手動操作不可と判断した場合、画面処理部31によって表示部4にアラームを表示させ、ユーザに手動操作不可の状態であることを通知してもよい。また、手動可否判断部412は、手動操作不可と判断した場合、ロボット60に移動指令を送信しない。これにより、ロボット60は、手動操作されても、手動操作に応じた動作を行わないので、手動操作が不可能な状態であることをユーザに視覚的に通知することが可能になる。
ここで、手動ハンドル55について説明する。手動ハンドル55は、工作機械70の軸方向の移動量を操作する際に用いられてもよい。すなわち、ユーザは、1つの手動ハンドル55で、ロボット60の操作および工作機械70の操作を行ってもよい。この場合、操作盤53には、手動ハンドル55による操作対象を切り替えるための切替スイッチ(図示せず)を配置しておく。
制御信号処理部35は、操作盤53に対し切替スイッチの状態を確認し、手動ハンドル55が、工作機械70を制御する状態にあるか、ロボット60を制御する状態にあるかを判定する。制御信号処理部35は、切替スイッチの状態に基づいて、手動ハンドル55に対するハンドル操作を、ロボット60へのハンドル操作として扱うか、工作機械70へのハンドル操作として扱うかを切替える。
制御信号処理部35は、ハンドル操作をロボット60へのハンドル操作として扱う場合には、ハンドル操作に対応するデータを、ロボット60を操作するためのデータとして共有エリア345に格納する。ロボット60を操作するためのデータは、手動ハンドル55がハンドル操作に対して出力するハンドルパルスジェネレータのデータであり、ロボット60の特定の箇所を移動させる移動量に対応している。
制御信号処理部35は、ハンドル操作を工作機械70へのハンドル操作として扱う場合には、ハンドル操作に対応するデータを、工作機械70を操作するためのデータとして共有エリア345に格納する。工作機械70を操作するためのデータは、手動ハンドル55がハンドル操作に対して出力するハンドルパルスジェネレータのデータであり、工作機械70の特定の箇所を移動させる移動量に対応している。
また、操作盤53には、手動ハンドル55の代わりにロボット60を操作するための手動ハンドルと、工作機械70を操作するための手動ハンドルとの2つの手動ハンドルを配置しておいてもよい。
図3は、実施の形態1にかかる制御システムが備える2つの手動ハンドルの構成例を示す図である。図3では、数値制御装置1Xと、入出力ユニット51と、ロボット60を操作するための手動ハンドル55Aと、工作機械70を操作するための手動ハンドル55Bとを図示している。
手動ハンドル55A,55Bは、ともに入出力ユニット51に接続されている。ユーザは、ロボット60を操作する際には、手動ハンドル55Aを操作する。これにより、手動ハンドル55Aは、操作に対応する、ロボット60の移動量を数値制御装置1Xに送る。また、ユーザは、工作機械70を操作する際には、手動ハンドル55Bを操作する。これにより、手動ハンドル55Bは、操作に対応する、工作機械70の移動量を数値制御装置1Xに送る。
図4は、実施の形態1にかかる数値制御装置による、ロボットの手動可否の判定処理の手順を示すフローチャートである。数値制御装置1Xは、動作を開始すると、手動可否判断部412が、システム状態、すなわちロボット60、数値制御装置1X、および工作機械70の少なくとも1つの状態に基づいて、ロボット60の手動操作が可能か否かを判断する(ステップS1)。
手動可否判断部412は、ロボット60の手動操作が不可能であると判断した場合(ステップS1、No)、画面処理部31にアラームを表示させる指示を送る。これにより、画面処理部31は、表示部4にアラームを表示させる(ステップS2)。
図5は、実施の形態1にかかる数値制御装置が表示部に表示させるアラームを説明するための図である。図5では、表示部4が表示する表示画面の第1例である操作受付画面21を示している。操作受付画面21は、ユーザからのロボット60への操作を受け付ける画面である。
操作受付画面21には、ユーザへの通知領域11が配置されている。通知領域11は、ユーザへのアラーム、メッセージ等が表示される領域である。操作受付画面21では、手動操作が不可であることを示す「ロボット未接続のため、ロボットへの操作不可」等のアラームが表示される。
また、操作受付画面21、および後述する操作受付画面22,23は、軸選択スイッチ59およびジョグボタン57を表示する。軸選択スイッチ59の中から、ユーザが所望の軸の名称をタッチすることで、ロボット60に対して手動操作される軸が選択される。
手動可否判断部412は、ロボット60の手動操作が可能であると判断した場合(ステップS1、Yes)、工作機械70に注意が必要であるか否かを判定する(ステップS3)。工作機械70に問題があって注意が必要な場合(ステップS3、Yes)、手動可否判断部412は、画面処理部31に注意メッセージを表示させる指示を送る。これにより、画面処理部31は、表示部4に注意メッセージを表示させる(ステップS4)。この後、移動データ送信部413は、後述するステップS5の処理を実行する。
図6は、実施の形態1にかかる数値制御装置が表示部に表示させる注意メッセージを説明するための図である。図6では、表示部4が表示する表示画面の第2例である操作受付画面22を示している。操作受付画面22は、ユーザからのロボット60への操作を受け付ける画面である。
操作受付画面22では、工作機械70が注意の必要な状態であることを示す「ドアクローズ中 ロボット手動操作に注意」等の注意メッセージが表示される。このように、数値制御装置1Xは、手動操作が可能な場合であっても、注意が必要な場合には、注意メッセージを表示させる。この後、移動データ送信部413は、注意メッセージが表示されている状態で、ジョグボタン57または手動ハンドル55から送られてくる移動量を受け付けると、移動量に基づいて移動指令を生成し、移動指令を、ロボットコントローラ50を介してロボット60に送信する(ステップS5)。
一方、工作機械70に注意が不要である場合(ステップS3、No)、移動データ送信部413は、ジョグボタン57または手動ハンドル55から送られてくる移動量を受け付ける。移動データ送信部413は、ジョグボタン57または手動ハンドル55から送られてくる移動量を受け付けると、移動量に基づいて移動指令を生成し、移動指令を、ロボットコントローラ50を介してロボット60に送信する(ステップS5)。なお、後述する実施の形態2以降の説明では、上述したステップS1からS5の処理である、ロボット60の手動可否の判定処理を、ステップS10の処理という場合がある。
このように実施の形態1によれば、数値制御装置1Xが、工作機械70、ロボット60、および数値制御装置1Xの少なくとも1つの状態に基づいて、ロボット60の手動操作の可否を判断している。したがって、ロボット60と工作機械70との干渉を防止しつつロボット60への手動操作を行うことが可能となる。
実施の形態2.
つぎに、図7および図8を用いてこの発明の実施の形態2について説明する。実施の形態2では、工作機械70の座標系を用いてロボット60に手動操作が行われた場合に、工作機械70の座標系をロボット60の座標系に変換したうえで、ロボット60に指令を送る。
図7は、実施の形態2にかかる数値制御装置の構成例を示す図である。図7の各構成要素のうち実施の形態1の数値制御装置1Xと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Yは、制御演算部2Yと、表示部4と、PLC操作部5とを有する。図7には、数値制御装置1Yとともに、入力操作部3X、工作機械70、ロボットコントローラ50、およびロボット60が示されている。実施の形態2では、入力操作部3Xが、工作機械70の座標系で手動操作を受け付け、制御演算部2Yが、工作機械70の座標系の指令を、ロボット60の座標系の指令に変換する。
制御演算部2Yは、制御演算部2Xと比較して、記憶部34Xの代わりに記憶部34Yを備え、ロボット手動操作部41Xの代わりにロボット手動操作部41Yを備えている。
記憶部34Yは、記憶部34Xが有するエリアに加えて、特定距離記憶エリア346およびオフセット座標記憶エリア347を備えている。オフセット座標記憶エリア347は、工作機械70の座標系(以下、NC座標系という)とロボット60の座標系(以下、ロボット座標系という)との間の関係を示すオフセット座標を記憶するエリアである。オフセット座標は、入力操作部3Xから入力制御部32に送られ、データ設定部33を介して記憶部34Yのオフセット座標記憶エリア347に格納される。オフセット座標は、NC座標系で指令された移動量を、ロボット座標系で用いる移動量に変換する際に用いられる。すなわち、ロボット60が手動操作される際に、NC座標系でユーザが操作を実行した場合、制御演算部2Yは、オフセット座標を用いて、NC座標系をロボット座標系に変換する。
特定距離記憶エリア346は、特定距離を記憶するエリアである。特定距離は、工作機械70の機械原点からの距離を示している。工作機械70の機械原点から特定距離よりも内側の範囲が、ロボット60が工作機械70に干渉する可能性が判定値よりも高い範囲である。
ロボット手動操作部41Yは、ロボット手動操作部41Xが備える構成要素に加えて、座標変換部411を備えている。座標変換部411は、軸選択スイッチ59で選択された軸と、ジョグボタン57または手動ハンドル55から入力された移動量と、オフセット座標とを、記憶部34Yから取得する。座標変換部411は、軸選択スイッチ59で選択された軸と、ジョグボタン57または手動ハンドル55に入力された移動量とを、オフセット座標に基づいて、ロボット座標系での軸(移動軸)および移動量に変換する。すなわち、座標変換部411は、NC座標系の軸および移動量を、オフセット座標に基づいて、ロボット座標系の軸および移動量に変換する。この変換後の軸および移動量を、移動データ送信部413が、ロボットコントローラ50に送ることで、ロボット60をNC座標系で手動操作することが可能になる。オフセット座標が設定されていない場合、ユーザに選択された軸およびユーザに入力された移動量は、ロボット座標系の軸および移動量として移動データ送信部413がロボットコントローラ50に送る。
図8は、実施の形態2にかかる数値制御装置によるロボット座標系への変換処理の処理手順を示すフローチャートである。ここでは、ロボット60への手動操作が行われる場合の、数値制御装置1Yによる座標変換処理について説明する。数値制御装置1Yは、動作を開始すると、座標変換部411が、軸選択スイッチ59で選択された軸(選択軸)の情報を、記憶部34Yから取得する(ステップS21)。また、座標変換部411は、ジョグボタン57または手動ハンドル55に入力された移動量を記憶部34Yから取得する(ステップS22)。なお、座標変換部411は、ステップS21の処理とステップS22の処理とを、何れの順番で実行してもよい。
座標変換部411は、オフセット座標記憶エリア347にオフセット座標が格納されているか否かを判定する(ステップS23)。オフセット座標記憶エリア347にオフセット座標がある場合(ステップS23、Yes)、座標変換部411は、NC座標系をロボット座標系に変換する(ステップS24)。すなわち、座標変換部411は、取得したNC座標系の軸および移動量を、ロボット座標系の軸および移動量に変換する。この後、手動可否判断部412は、ロボット60の手動可否の判定処理を実行する(ステップS10)。すなわち、手動可否判断部412は、図4で説明したステップS1からS5の処理を実行する。
オフセット座標記憶エリア347にオフセット座標がない場合(ステップS23、No)、座標変換部411は、座標変換を行うことなく、ロボット60の手動可否の判定処理を実行する(ステップS10)。すなわち、移動データ送信部413は、オフセット座標が設定されていない場合にロボット60の手動操作が可能であれば、記憶部34Yから取得した軸および移動量を、ロボット座標系の軸および移動量としてロボットコントローラ50に送る。なお、座標変換部411は、ステップS23の処理の後に、ステップS21,S22の処理を実行してもよい。なお、後述する実施の形態3以降の説明では、上述したステップS23,S24の処理である、ロボット座標系への変換処理を、ステップS30の処理という場合がある。
数値制御装置1Yの手動可否判断部412は、ステップS10の処理を実行する際に、特定距離記憶エリア346から特定距離を取得する。手動可否判断部412は、ロボットコントローラ50からロボット60の位置(座標)を取得し、座標変換部411にて座標を逆変換することでNC座標系でのロボット60の座標を取得する。ここでの逆変換は、ロボット座標系の座標をNC座標系に変換する処理である。手動可否判断部412は、工作機械70の機械原点から特定距離の範囲内である三次元領域内は、ロボット60が工作機械70に干渉する可能性が判定値よりも高い特定領域に設定しておく。手動可否判断部412は、ロボット60のNC座標系における座標が特定領域に入った場合、ロボット60の手動操作を不可にする。手動可否判断部412は、ドアが閉まっている状態で、かつ工作機械70の特定領域にロボット60を入れる指令があった場合は、ドアが閉まっていてロボット60が加工エリアに入れないので、手動操作を不可にする。
また、手動可否判断部412は、ロボット60のNC座標系における座標が特定領域に入った場合、画面処理部31によって表示部4にアラームを表示させ、ユーザに手動操作不可の状態であることを通知してもよい。
このように実施の形態2によれば、工作機械70の座標系を用いてロボット60に手動操作が行われた場合に、数値制御装置1Yが、工作機械70の座標系をロボット60の座標系に変換したうえで、ロボット60に指令を送るので、ユーザは、容易にロボット60を手動操作することが可能となる。
実施の形態3.
つぎに、図9から図12を用いてこの発明の実施の形態3について説明する。実施の形態3では、手動操作によるロボット60の動作を記憶しておき、逆行の指示があった場合には、ロボット60の動作を逆方向に戻す。
図9は、実施の形態3にかかる数値制御装置の構成例を示す図である。図9の各構成要素のうち実施の形態1,2の数値制御装置1X,1Yと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Zは、制御演算部2Zと、表示部4と、PLC操作部5とを有する。図9には、数値制御装置1Zとともに、入力操作部3Z、工作機械70、ロボットコントローラ50、およびロボット60が示されている。
入力操作部3Zは、手動ハンドル55と、ジョグボタン57と、軸選択スイッチ59と、逆行スイッチ54とを備えている。逆行スイッチ54は、ロボット60の動作を逆方向に戻すためのスイッチである。逆行スイッチ54は、押下されている間、逆行スイッチ54が押されていることを示す情報である逆行情報を、制御演算部2Zに送り続ける。この逆行情報は、記憶部34Zを介してロボット手動操作部41Zに送られる。
制御演算部2Zは、制御演算部2Yと比較して、記憶部34Yの代わりに記憶部34Zを備え、ロボット手動操作部41Yの代わりにロボット手動操作部41Zを備えている。
記憶部34Zは、記憶部34Yが有するエリアに加えて、手動動作記憶エリア348および送信間隔記憶エリア349を備えている。手動動作記憶エリア348は、ロボット60の手動操作が行われている間に、ロボットコントローラ50に送られている移動指令(以下、手動時指令という)を記憶するエリアである。第1の移動指令である手動時指令は、移動データ送信部413が、移動データに基づいて生成し、手動動作記憶エリア348に格納していく。ロボットコントローラ50に送られる移動指令が、ロボット座標系に変換されている場合、手動時指令は、ロボット座標系で示される。
送信間隔記憶エリア349は、手動時指令を逆方向の移動指令に変換してロボットコントローラ50に送信する際の送信周期(逆行送信間隔)を記憶しておくエリアである。
ロボット手動操作部41Zは、ロボット手動操作部41Yが備える構成要素に加えて、変換部である逆方向変換部414を備えている。逆方向変換部414は、逆方向への移動指令があった場合に、手動動作記憶エリア348内の手動時指令を逆方向への移動指令に変換する。
逆方向変換部414は、逆行情報を受け付けている間に、ジョグボタン57または手動ハンドル55に入力された移動量を受け付けると、移動量を受け付けている間、手動時指令に沿ってロボット60を逆行させる移動指令(第2の移動指令)を生成する。逆方向変換部414は、逆行情報を受け付けている間に0よりも大きな移動量を受け付けると、移動量の大きさに関わらず、手動時指令に沿ってロボット60を逆行させる移動指令を生成する。逆方向変換部414が生成した移動指令は、移動データ送信部413からロボットコントローラ50に送られる。
なお、逆行スイッチ54、逆方向変換部414、手動動作記憶エリア348、および送信間隔記憶エリア349を、数値制御装置1Xに配置してもよい。
図10は、実施の形態3にかかる数値制御装置が表示部に表示させる、逆行操作を受け付ける画面を説明するための図である。図10では、表示部4が表示する表示画面の第3例である操作受付画面23を示している。操作受付画面23は、ユーザからロボット60への操作を受け付ける画面である。
操作受付画面23は、逆行スイッチ54を表示する。ユーザが逆行スイッチ54を押下またはタッチすると、逆行情報が制御演算部2Zに送られる。
図11は、実施の形態3にかかる数値制御装置がロボットに実行させる逆行の経路を説明するための図である。逆行スイッチ54が押されることなく、ジョグボタン57または手動ハンドル55が操作されると、ロボット60は、正方向に移動する。図11では、ロボットハンド61が上方向に移動し(st1)、右方向に移動し(st2)、左方向に移動し(st3)、下方向に移動した(st4)場合を示している。ロボット60を手動操作している間(st1〜st4)、移動データ送信部413がロボットコントローラ50へ送った移動指令に対応する手動時指令が、手動動作記憶エリア348で記憶される。
この後、逆行スイッチ54が押され、逆行スイッチ54が押されている間に、ジョグボタン57または手動ハンドル55が操作されると、ロボット60は、移動してきた経路を逆方向に移動する。すなわち、ロボット60は、正方向に移動してきた経路に沿って、経路を逆戻りする。図11では、ロボットハンド61が上方向に移動し(st5)、右方向に移動する(st6)場合を示している。st5の経路とst4の経路とは、同じ直線上であり、方向が逆である。また、st6の経路とst3の経路とは、同じ直線上であり、方向が逆である。
逆方向変換部414は、逆行スイッチ54が押下された状態でジョグボタン57が操作されている間、周期的に手動動作記憶エリア348から手動時指令を呼び出す。そして、逆方向変換部414は、手動時指令を逆方向への移動指令に変換する。移動データ送信部413は、逆方向の移動指令をロボットコントローラ50に送信することで逆方向へのロボット60の移動を実現する。
また、逆行スイッチ54が押下された状態で手動ハンドル55が操作される場合、逆方向変換部414は、手動ハンドル55からパルスの入力を受け付ける度に、手動時指令を逆方向への移動指令に変換する。
なお、ジョグボタン57が押下された時に手動時指令を逆方向に変換してロボットコントローラ50に送信する周期は、予め逆行送信間隔に設定しておく。逆方向変換部414および移動データ送信部413は、逆行送信間隔に従って手動時指令の逆方向への変換と、ロボットコントローラ50への送信とを実行する。
ユーザは、移動方向の軸を選択してからジョグボタン57または手動ハンドル55を操作することで、ロボット60を実線で示した正方向(st1〜st4)に移動させることができる。ところが、ユーザは、ロボット60の位置修正のために他の物体に干渉しないように元の経路に沿ってロボット60を移動させたい場合がある。この場合、ユーザは、再度軸選択スイッチ59で動作させる軸を選びながらロボット60を操作すると、操作ミスによってロボット60が他の物体に干渉する場合がある。実施の形態3では、ユーザは、逆行スイッチ54を押下した状態でジョグボタン57または手動ハンドル55を操作すればよいので、軸の選択および移動量を考慮することなく、点線で示した逆方向(st5、st6)にロボット60を容易に移動させることができる。これにより、ロボット60を他の物体に干渉させることなく、ロボット60の位置を容易に修正することが可能になる。
図12は、実施の形態3にかかる数値制御装置がロボットの動作を逆行させる処理の処理手順を示すフローチャートである。数値制御装置1Zは、動作を開始すると、逆方向変換部414が、逆行スイッチ54が押下されたか否かを判定する(ステップS41)。
逆行スイッチ54が押下されていない場合(ステップS41、No)、座標変換部411が、軸選択スイッチ59で選択された軸情報を、記憶部34Zから取得する(ステップS42)。また、座標変換部411は、ジョグボタン57または手動ハンドル55に入力された移動量を記憶部34Zから取得する(ステップS43)。なお、座標変換部411は、ステップS42の処理とステップS43の処理とを、何れの順番で実行してもよい。
この後、座標変換部411は、ロボット座標系への変換処理を実行する(ステップS30)。すなわち、座標変換部411は、図8で説明したステップS23,S24の処理を実行する。さらに、手動可否判断部412は、ロボット60の手動可否の判定処理を実行する(ステップS10)。
逆行スイッチ54が押下された場合(ステップS41、Yes)、逆方向変換部414は、手動動作記憶エリア348で記憶しておいた手動時指令を取得する(ステップS44)。逆方向変換部414は、手動動作記憶エリア348内の手動時指令を逆方向への移動指令に変換する(ステップS45)。この後、手動可否判断部412は、ロボット60の手動可否の判定処理を実行する(ステップS10)。
なお、逆方向変換部414は、手動ハンドル55の回転方向に基づいて、ロボット60を移動経路の正方向に移動させる処理と、逆方向に移動させる処理とを切り替えてもよい。この場合、逆方向変換部414は、手動時指令を記憶している移動経路では、手動時指令に従って正方向への移動および逆方向への移動を実行する。一方、移動データ送信部413は、手動時指令を記憶していない新たな操作が実行された場合には、ジョグボタン57または手動ハンドル55への操作に応じた移動をロボット60に実行させる。
また、実施の形態3では、直交座標系の1軸のみに対する手動操作を行う場合について説明したが、三次元座標空間の終点を目標に複数軸同時に移動するような手動操作であってもよい。
このように実施の形態3によれば、数値制御装置1Zが、手動操作によるロボット60の動作を記憶しておき、逆行の指示があった場合にはロボット60の動作を逆方向に戻すので、ユーザは、ロボット60の位置を容易に修正することが可能になる。
実施の形態4.
つぎに、図13および図14を用いてこの発明の実施の形態4について説明する。実施の形態4では、手動操作時のロボット60の動作速度を、オーバーライドスイッチを用いて調整する。
図13は、実施の形態4にかかる数値制御装置の構成例を示す図である。図13の各構成要素のうち実施の形態1から3の数値制御装置1X〜1Zと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Pは、制御演算部2Pと、表示部4と、PLC操作部5とを有する。図13には、数値制御装置1Pとともに、入力操作部3P、工作機械70、ロボットコントローラ50、およびロボット60が示されている。
入力操作部3Pは、手動ハンドル55と、ジョグボタン57と、軸選択スイッチ59と、逆行スイッチ54と、オーバーライドスイッチ56とを備えている。オーバーライドスイッチ56は、工作機械70およびロボット60の速度に倍率(オーバーライド)を掛けるためのスイッチである。以下、オーバーライドスイッチ56が、ロボット60の速度を低下させる場合について説明する。
オーバーライドスイッチ56は、ジョグボタン57または手動ハンドル55を用いてロボット60への手動操作が行われている際には、ロボット60の速度を特定の割合で低下させる。オーバーライドスイッチ56は、ユーザ操作によって設定された設定値を、制御演算部2Pに送る。この設定値は、ロボット60の速度を低下させる割合に対応している。オーバーライドスイッチ56から送られてくる設定値は、記憶部34Zに格納される。
制御演算部2Pは、制御演算部2Zと比較して、ロボット手動操作部41Zの代わりにロボット手動操作部41Pを備えている。ロボット手動操作部41Pは、ロボット手動操作部41Zが備える構成要素に加えて、オーバーライド制御部415を備えている。
オーバーライド制御部415は、記憶部34Zから設定値を取得して、設定値を、ロボット60の速度を低下させる割合に変換する。移動データ送信部413は、手動操作されるロボット60の速度データに割合を掛けることによって、速度を低下させた速度データを生成する。
なお、オーバーライドスイッチ56、およびオーバーライド制御部415を、数値制御装置1Xまたは数値制御装置1Yに配置してもよい。
図14は、実施の形態4にかかる数値制御装置が、手動操作されるロボットの速度を特定の割合で低下させる処理の処手順を示すフローチャートである。数値制御装置1Pは、動作を開始すると、座標変換部411が、軸選択スイッチ59で選択された軸情報を、記憶部34Zから取得する(ステップS61)。また、座標変換部411は、ジョグボタン57または手動ハンドル55に入力された移動量を記憶部34Zから取得する(ステップS62)。なお、座標変換部411は、ステップS61の処理とステップS62の処理とを、何れの順番で実行してもよい。この後、座標変換部411は、ロボット座標系への変換処理を実行する(ステップS30)。
ロボット60の動作が速すぎた場合、ユーザは、オーバーライドスイッチ56によってロボット60の速度を下げることができる。オーバーライド制御部415は、オーバーライドスイッチ56への操作状態、すなわち、オーバーライドスイッチ56に対して設定された値を、記憶部34Zを介してオーバーライドスイッチ56から取得する(ステップS63)。オーバーライド制御部415は、オーバーライドスイッチ56に設定された値を、ロボット60の速度に掛ける割合(倍率)に変換する(ステップS64)。
オーバーライド制御部415は、変換した割合(%)を、移動データ送信部413に送る。また、移動データ送信部413は、ロボット60の移動速度を示す速度データを記憶部34Zから取得する。
移動データ送信部413は、速度データに割合を掛ける(ステップS65)。例えば、割合が10%であった場合、移動データ送信部413は、ロボット60の速度が10分の1になる速度データを生成する。移動データ送信部413は、軸情報、移動量、生成した速度データを、ロボットコントローラ50を介してロボット60に送信する(ステップS66)。
これにより、ユーザは、手動操作時のロボット60の動作速度を、オーバーライドスイッチ56で制御できるので、ロボット60が工作機械70等と干渉することをユーザの判断で回避しやすくすることができる。なお、ユーザは、ロボットコントローラ50を操作することによってもロボット60の速度を低下させることはできるが、実施の形態4では、ユーザが、ロボットコントローラ50まで移動しなくてもロボット60の速度を低下させることができるので、ユーザの作業効率が向上する。
このように実施の形態4によれば、数値制御装置1Pが、手動操作時のロボット60の動作速度を、オーバーライドスイッチ56を用いて低下させるので、ユーザは、ロボット60が工作機械70等と干渉することを容易に回避することができる。
実施の形態5.
つぎに、図15を用いてこの発明の実施の形態5について説明する。実施の形態5では、制御システム100の状態を判定する際の判定値と、制御システム100にエラーが発生するまでの時間との関係に基づいて、手動操作の可否を学習する。
図15は、実施の形態5にかかる数値制御装置の構成例を示す図である。図16は、実施の形態5にかかる数値制御装置が備える機械学習装置の構成例を示す図である。図15,16の各構成要素のうち実施の形態1の数値制御装置1Xと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Qは、制御演算部2Qと、表示部4と、PLC操作部5とを有する。図15には、数値制御装置1Qとともに、入力操作部3X、工作機械70、ロボットコントローラ50、およびロボット60が示されている。
制御演算部2Qは、制御演算部2Xと比較して、ロボット手動操作部41Xの代わりに、ロボット手動操作部41Qを備えている。ロボット手動操作部41Qは、ロボット手動操作部41Xと比較して、手動可否判断部412の代わりに手動可否判断部412Qを備えている。手動可否判断部412Qは、手動可否判断部412の機能に加えて、手動操作開始からエラーが発生するまでの時間を計測する機能を有している。
また、制御演算部2Qは、制御演算部2Xが備える構成要素に加えて機械学習装置80を備えている。機械学習装置80は、手動操作の可否を判定する際に用いる適切な判定値を学習し、手動可否判断部412Qは、機械学習装置80によって学習された判定値を用いて、手動操作の可否を判定する。手動可否判断部412Qは、手動操作が不可の場合はユーザに通知するとともに手動操作を無効にする。
数値制御装置1Qの機械学習装置80以外の各構成要素は、制御システム100の状態を示す状態情報を機械学習装置80に送る。状態情報の例は、ロボット60の状態を示すロボット状態情報、工作機械70の状態を示すNC状態情報、PLC36の状態を示すPLC状態情報等である。
手動可否判断部412Qは、ロボット状態情報を、例えばロボット手動操作部41Qから取得する。また、手動可否判断部412Qは、NC状態情報を、例えば共有エリア345から取得する。また、手動可否判断部412Qは、PLC状態情報を、例えば制御信号処理部35から取得する。
機械学習装置80は、ロボット状態情報、NC状態情報、およびPLC状態情報を手動可否判断部412Qから取得する。なお、機械学習装置80は、ロボット状態情報をロボット手動操作部41Qから取得し、NC状態情報を共有エリア345から取得し、PLC状態情報を制御信号処理部35から取得してもよい。状態情報は、ロボット状態情報、NC状態情報、およびPLC状態情報以外の情報を含んでいてもよい。
手動可否判断部412Qは、状態情報に基づいて、ユーザによるロボット60の手動操作中にエラーが発生したか否かを判断する。エラーは、ロボット60が、工作機械70に衝突した際、または工作機械70に衝突する可能性が特定の基準値よりも高い場合に発生するものとする。すなわち、手動可否判断部412Qは、制御システム100において、ロボット60の手動操作を不可にする状態が発生した場合に、エラーが発生したと判断する。手動可否判断部412Qは、エラーの判断項目毎の判定値と、エラーの判断項目が示す値(状態を示す値)とを比較することによって、エラーの判断項目毎にエラーを発生したか否かを判断する。エラーの判断項目毎の判定値は、記憶部34Xに格納しておく。また、手動可否判断部412Qは、手動操作開始からエラーが発生するまでの時間(以下、エラー発生時間という)を計測する。
機械学習装置80は、制御システム100の状態を判定する際の判定値と、制御システム100におけるエラー発生時間との関係に基づいて、適切な判定値を学習していく。これにより、手動可否判断部412Qが記憶している判定値は、機械学習装置80による学習によって書き換えられていく。このように、判定値は、手動操作の可否判定に用いられるので、機械学習装置80は、手動操作の可否を学習することとなる。
手動可否判断部412Qは、エラーの発生の際には、画面処理部31にアラームを通知する。したがって、判定値は、アラームを発生させるか否かの判定基準であるともいえる。なお、判定値は、記憶部34Xで記憶する場合に限らず、機械学習装置80で記憶しておいてもよい。
エラーの判断項目の例は、ロボットハンド61の稼働領域が特定の範囲内であるか否かである。この稼働領域は、ユーザによるロボット60への手動操作に応じて変化する。稼働領域は、ロボット60の特定位置(スタート位置)のロボットハンド61の距離および移動方向によって決まることがあるので、この距離に対する判定値が稼働領域の判定値となる。ロボットハンド61の稼働領域が広すぎる場合、ロボットハンド61が、工作機械70に衝突しやすくなり、アラームを発生させるまでの時間が長くなる傾向になる。このため、判定値が大きくなりすぎると、アラームを発生させるまでの時間が長くなる。一方、判定値が小さすぎると、ロボットハンド61の稼働領域が狭くなり不便である。したがって、アラームを発生させるまでの時間が短くなり過ぎず、ロボットハンド61の稼働領域を確保できる判定値が適切な判定値である。また、ロボット60の移動方向によってはエラーが発生しない(例えば、工作機械70と干渉しない)ので、エラーが発生しない移動方向の範囲が適切な判定値である。また、工作機械70の状態(自動運転中(加工中)でない、かつ工作機械70のドアがオープンしているなどの状態)がロボット移動可能な適切な判定値である。このため、機械学習装置80は、エラー発生時間が適切な時間(以下、適切時間という)で発生するよう、判定値を設定する。適切時間は、手動操作開始からの経過時間であり、例えば、10秒後から30秒後などの期間であってもよいし、15秒後といった特定のタイミングであってもよい。適切時間で、かつ、適切な移動方向、かつ、適切な工作機械70の状態で、エラーが発生しなくなる。これにより、ロボットハンド61の稼働領域を確保しつつ、ロボットハンド61の手動操作時にロボットハンド61の衝突を回避できる。機械学習装置80は、各種の適切な判定値を学習していく。なお、NCプログラムの進行状況によって工具または加工ワークの位置が変化するので、NCプログラムの進行状況毎に判定値が設定されてもよい。また、ここでは判定値をエラー発生時間に基づいて決定する場合について説明したが、判定値は移動量に基づいて決定されてもよい。
手動可否判断部412Qは、エラーが発生したと判断すると、各種状態を計測または算出して機械学習装置80に送る。
機械学習装置80は、状態観測部71と、学習部72とを備えている。状態観測部71は、手動可否判断部412Qから現在使用中の状態を取得する。状態観測部71は、エラーが発生した場合、各種状態を状態変数81として観測し、学習部72に送る。手動可否判断部412Qは、ユーザがロボット60を手動操作中に、エラーの発生毎に各種状態を取得する。したがって、状態観測部71は、エラーの発生毎に各種状態を取得して状態変数81を学習部72に送る。
学習部72に用いる学習アルゴリズムは、何れの学習アルゴリズムであってもよい。ここでは、学習アルゴリズムに、強化学習(Reinforcement Learning)を適用した場合について説明する。強化学習は、ある環境内におけるエージェント(行動主体)が、状態変数81で示される現在の状態を観測し、取るべき行動83を決定する、というものである。エージェントは行動83を選択することで環境から報酬82を得て、一連の行動83を通じて報酬82が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Q学習(Q−learning)およびTD学習(TD−learning)が知られている。例えば、Q学習の場合、行動価値関数Q(s,a)の一般的な更新式(行動価値テーブル)は式(1)で表される。
式(1)において、stは時刻tにおける環境を表し、atは時刻tにおける行動を表す。行動atにより、環境はst+1に変わる。rt+1はその環境の変化によってもらえる報酬82を表し、γは割引率を表し、αは学習係数を表す。Q学習を適用した場合、ロボット60の手動操作に対応する判定値が、行動atとなる。
式(1)で表される更新式は、時刻t+1における最良の行動aの行動価値が、時刻tにおいて実行された行動aの行動価値Qよりも大きければ、行動価値Qを大きくし、逆の場合は、行動価値Qを小さくする。換言すれば、時刻tにおける行動aの行動価値Qを、時刻t+1における最良の行動価値に近づけるように、行動価値関数Q(s,a)を更新する。それにより、或る環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播していくようになる。
学習部72は、報酬計算部73と、関数更新部74とを備えている。報酬計算部73は、状態変数81である、エラー発生時間および判定値に基づいて、報酬82を計算する。報酬計算部73は、ユーザがロボット60を手動操作した際の、例えばエラー発生時間と適切時間との差(以下、時間差という)が、これまでの時間差よりも小さくなると報酬82を増大させる(例えば「1」の報酬を与える)。報酬計算部73は、例えば、時間差が0であるときは報酬82を最大報酬とする。他方、報酬計算部73は、ユーザがロボット60を手動操作した際の、時間差が、これまでの時間差よりも大きくなると報酬82を低減させる(例えば「−1」の報酬を与える)。また、エラーが発生しない移動方向の場合は最大報酬を与える(例えば「1」の報酬を与える)。また、工作機械70の状態が自動運転でなく、かつ、工作機械70のドアがオープン状態の場合は最大報酬を与える(例えば「1」の報酬を与える)。
関数更新部74は、報酬計算部73によって計算される報酬82に従って、行動83(次回の判定値)を決定するための関数を更新する。例えばQ学習の場合、関数更新部74は、式(1)で表される行動価値関数Q(st,at)を、次回の判定値を決定するための関数として用いる。関数更新部74は、更新した行動価値関数Q(st,at)を用いて行動83を算出する。関数更新部74は、算出した行動83を手動可否判断部412Qに送る。
手動可否判断部412Qは、機械学習装置80が算出した行動83、すなわち判定値を用いて、ロボット60への手動操作の可否を判定する。手動可否判断部412Qは、稼働領域が判定値よりも大きくなると(報酬が小さい場合に)、表示部4にアラームを表示させ、ロボット60の手動操作を停止させる。
なお、機械学習装置80は、制御演算部2Qの外部に配置されてもよい。また、実施の形態5では、強化学習を利用して機械学習する場合について説明したが、他の公知の方法、例えばニューラルネットワーク、遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
また、状態情報は、状態の履歴であってもよい。例えば、エラーの判断項目を、センサで検出した情報の履歴としてもよい。この場合、例えば、情報を時間で積分した値が状態情報である。また、機械学習装置80は、数値制御装置1Y,1Z,1Pに配置されてもよい。
このように実施の形態5によれば、機械学習装置80が適切な状態に基づいて、ロボット60の手動操作の可否の判定に用いる判定値を学習するので、数値制御装置1Qは、ロボット60の手動操作の可否を適切に判断することができる。
なお、実施の形態1から5で説明した内容を組み合わせてもよい。例えば、実施の形態3で説明した、逆行スイッチ54、逆方向変換部414、手動動作記憶エリア348、および送信間隔記憶エリア349を、数値制御装置1Qに配置してもよい。また、実施の形態4で説明した、オーバーライドスイッチ56、およびオーバーライド制御部415を、数値制御装置1Qに配置してもよい。
ここで、数値制御装置1X〜1Z,1P,1Qが備える制御演算部2X〜2Z,2P,2Qのハードウェア構成について説明する。なお、制御演算部2X〜2Z,2P,2Qは、同様のハードウェア構成を有しているので、ここでは制御演算部2Xのハードウェア構成について説明する。
図17は、実施の形態1にかかる制御演算部のハードウェア構成例を示す図である。制御演算部2Xは、図17に示したプロセッサ301、メモリ302、およびインタフェース回路303により実現することができる。プロセッサ301、メモリ302、およびインタフェース回路303は、バス310によって互いにデータの送受信が可能である。
プロセッサ301の例は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、DSP(Digital Signal Processor)ともいう)またはシステムLSI(Large Scale Integration)である。メモリ302の例は、RAM(Random Access Memory)またはROM(Read Only Memory)である。
記憶部34Xは、メモリ302によって実現される。入力制御部32の一部の機能、画面処理部31の一部の機能、通信制御部44の一部の機能、軸データ出力部40の一部の機能は、インタフェース回路303によって実現される。
制御演算部2Xは、プロセッサ301が、メモリ302で記憶されている、制御演算部2Xの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部2Xの手順または方法をコンピュータに実行させるものであるともいえる。メモリ302は、プロセッサ301が各種処理を実行する際の一時メモリにも使用される。
プロセッサ301が実行するプログラムは、コンピュータで実行可能な、データ処理を行うための複数の命令を含むコンピュータ読取り可能かつ非遷移的な(non-transitory)記録媒体を有するコンピュータプログラムプロダクトであってもよい。プロセッサ301が実行するプログラムは、複数の命令がデータ処理を行うことをコンピュータに実行させる。
また、制御演算部2Xを専用のハードウェアで実現してもよい。また、制御演算部2Xの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
上述した課題を解決し、目的を達成するために、本発明は、被加工物の加工を行う工作機械と被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、ロボットへの手動操作を受け付ける入力操作部と、数値制御プログラムを用いて工作機械を制御するとともに、手動操作に基づいてロボットを制御する制御演算部と、を有し、制御演算部は、制御システムの状態に基づいて、ロボットの手動操作の可否を判断する手動可否判断部と、手動可否判断部によってロボットの手動操作が許可されている場合に手動操作が行われると、手動操作に基づいて、ロボットの移動を制御するロボットコントローラへの第1の移動指令を生成してロボットコントローラに送信する移動データ送信部と、を備える。
上述した課題を解決し、目的を達成するために、本発明は、被加工物の加工を行う工作機械と被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、ロボットへの手動操作を受け付ける入力操作部と、数値制御プログラムを用いて工作機械を制御するとともに、手動操作に基づいてロボットを制御する制御演算部と、を有し、制御演算部は、制御システムの状態に基づいて、ロボットの手動操作の可否を判断する手動可否判断部と、手動可否判断部によってロボットの手動操作が許可されている場合に手動操作が行われると、手動操作に基づいて、ロボットの移動を制御するロボットコントローラへの第1の移動指令を生成してロボットコントローラに送信する移動データ送信部と、を備える。制御システムの状態は、工作機械の機械原点から特定距離の範囲内である三次元領域であり、三次元領域は、ロボットが工作機械に干渉する可能性に応じて指定される。
上述した課題を解決し、目的を達成するために、本発明は、被加工物の加工を行う工作機械と被加工物の搬送を行うロボットとを制御する制御システムにおいて用いられる数値制御装置であって、ロボットへの手動操作を受け付ける入力操作部と、数値制御プログラムを用いて工作機械を制御するとともに、手動操作に基づいてロボットを制御する制御演算部と、ロボットの手動操作の可否を判断する際に制御システムの状態を示す値と比較される判定値を学習する機械学習装置と、を有する。制御演算部は、制御システムの状態と、工作機械の機械原点から特定距離の範囲内である三次元領域とに基づいて、ロボットの手動操作の可否を判断する手動可否判断部と、手動可否判断部によってロボットの手動操作が許可されている場合に手動操作が行われると、手動操作に基づいて、ロボットの移動を制御するロボットコントローラへの第1の移動指令を生成してロボットコントローラに送信する移動データ送信部と、を備える。機械学習装置は、手動操作開始からエラー発生までの時間であるエラー発生時間と、手動操作開始からエラー発生までの間に用いた判定値と、を状態変数として観測する状態観測部と、状態変数に基づいて作成されるデータセットに従って、特定の期間にエラーが発生する判定値を学習する学習部と、を有する。手動可否判断部は、学習部が学習した判定値を用いて、ロボットの手動操作の可否を判断し、三次元領域は、ロボットが工作機械に干渉する可能性に応じて指定される。