以下に、本発明の実施の形態にかかる数値制御装置、および機械学習装置を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
実施の形態1.
図1は、実施の形態1にかかる数値制御装置の構成例を示す図である。数値制御装置1Xは、制御演算部2Xと、入力操作部3と、表示部4と、PLC(Programmable Logic Controller:プログラマブルロジックコントローラ)36を操作するための機械操作盤などのPLC操作部5とを有する。図1には、数値制御装置1Xとともに、工作機械100、ロボットコントローラ50、およびロボット60が示されている。数値制御装置1Xと、工作機械100と、ロボットコントローラ50と、ロボット60とで構成されるシステムが、制御システムである。
数値制御装置1Xは、駆動部90の各サーボ制御部と通信を実行するとともに、ロボットコントローラ50との間で通信を実行する。数値制御装置1Xは、工作機械100に対して工具を使った加工ワーク(被加工物)の加工を実行させるとともに、ロボット60に対して加工ワークの搬送を実行させるコンピュータである。数値制御装置1Xは、GコードプログラムといったNC(Numerical Control)プログラムを用いて、工作機械100およびロボット60を制御する。加工プログラムであるNCプログラムには、工作機械100への指令と、ロボット60への指令とが含まれている。数値制御装置1Xは、NCプログラムのうちのロボット60への指令を、ロボットプログラムの指令に変換してロボット60を制御する。
本実施の形態の数値制御装置1Xは、ロボット60と工作機械100とが干渉するか否かを判断し、干渉する場合にはアラームを発生させる。ロボット60と工作機械100との干渉は、工作機械100とロボット60との衝突と同義である。ロボット60と工作機械100との干渉には、ロボット60が把持する工具と工作機械100との干渉、工作機械100が把持する工具とロボット60との干渉、ロボット60が把持する工具と工作機械100が把持する工具との干渉が含まれる。
工作機械100は、工具および加工ワークを駆動する駆動部90を備えている。駆動部90の例は、加工ワークを回転させながら工具を駆動する駆動機構である。実施の形態1では、工具の駆動方向が、例えば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軸方向の動作を制御する。なお、工作機械100が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へのフィードバック制御を行う。
なお、工作機械100が2つの加工ワークを同時に加工する場合には、駆動部90は、主軸モータ911と、検出器211と、主軸サーボ制御部200とを2組備える。この場合、工作機械100は、2つ以上の刃物台を備えている。
入力操作部3は、制御演算部2Xに情報を入力する手段である。入力操作部3は、キーボード、ボタンまたはマウスなどの入力手段によって構成され、ユーザによる数値制御装置1Xに対するコマンドなどの入力、またはNCプログラムもしくはパラメータなどを受付けて制御演算部2Xに入力する。表示部4は、液晶表示装置などの表示手段によって構成され、制御演算部2Xによって処理された情報を表示画面に表示する。表示部4の例は、液晶タッチパネルである。この場合、入力操作部3の一部の機能が、表示部4に配置されている。
制御演算部2Xは、工作機械100の座標系で規定されたNCプログラムを用いて工作機械100およびロボット60を制御する。制御演算部2Xは、入力制御部32と、データ設定部33と、記憶部34と、画面処理部31と、解析処理部37と、制御信号処理部35と、PLC36と、補間処理部38と、加減速処理部39と、軸データ出力部40と、ロボット制御部41と、シミュレーション制御部80Xとを有する。なお、PLC36は、制御演算部2Xの外部に配置されてもよい。
記憶部34は、パラメータ記憶エリア341、NCプログラム記憶エリア343、表示データ記憶エリア344、および共有エリア345を有している。また、記憶部34は、シミュレーション用データ346を記憶する記憶エリアを有している。
パラメータ記憶エリア341内には、制御演算部2Xの処理で使用されるパラメータ等が格納される。具体的には、パラメータ記憶エリア341内には、数値制御装置1Xを動作させるための制御パラメータ、サーボパラメータおよび工具データ813,814が格納される。工具データ813は、工作機械100で用いられる工具のデータであり、工具データ814は、ロボット60で用いられる工具のデータである。工具データ813は、工作機械100で用いられる工具の形状の情報を含んでいる。工具データ814は、ロボット60で用いられる工具の形状の情報を含んでいる。工具データ813,814は、シミュレーション制御部80Xによって記憶部34内から読み出される。なお、以下の説明では、形状の情報には、形そのものの情報と、寸法の情報とが含まれているものとする。
NCプログラム記憶エリア343内には、加工ワークの加工に用いられるNCプログラムが格納される。実施の形態1のNCプログラムは、工作機械100を制御するための指令と、ロボット60を制御するための指令とを含んでいる。
表示データ記憶エリア344内には、表示部4で表示される画面表示データが格納される。画面表示データは、表示部4に情報を表示するためのデータである。また、記憶部34には、一時的に使用されるデータを記憶する共有エリア345が設けられている。
シミュレーション用データ346は、工作機械100を描画することができるデータである機械モデル811と、ロボット60を描画することができるデータであるロボットモデル812とを含んでいる。機械モデル811およびロボットモデル812は、シミュレーション制御部80Xによって記憶部34内から読み出される。機械モデル811は、工作機械100の3次元構造を示す3次元データであり、ロボットモデル812は、ロボット60の3次元構造を示す3次元データである。
機械モデル811は、実際に工作機械100が具備する加工室(加工槽)内の動作シミュレーション用のデータである。機械モデル811は、CAD(Computer Aided Design))データから生成される。ロボットモデル812は、ロボット60の動作シミュレーション用データである。ロボットモデル812は、CADデータから生成される。機械モデル811は、拡張子が「.mdl」等の機械モデルデータであり、ロボットモデル812は、拡張子が「.mdl」等のロボットモデルデータである。
画面処理部31は、表示データ記憶エリア344に格納された画面表示データを表示部4に表示させる制御を行う。入力制御部32は、入力操作部3から入力される情報を受付ける。データ設定部33は、入力制御部32で受付けられた情報を記憶部34に記憶させる。すなわち、入力操作部3が受付けた入力情報は、入力制御部32およびデータ設定部33を介して記憶部34に書き込まれる。
制御信号処理部35は、PLC36に接続されており、PLC36から、工作機械100の機械を動作させるリレーなどの信号情報を受付ける。制御信号処理部35は、受付けた信号情報を、記憶部34の共有エリア345に書き込む。これらの信号情報は、加工運転時に補間処理部38が参照する。また、制御信号処理部35は、解析処理部37によって共有エリア345に補助指令が出力されると、この補助指令を制御信号処理部35が共有エリア345から読み出してPLC36に送る。補助指令は、数値制御軸である駆動軸を動作させる指令以外の指令である。補助指令の例は、MコードまたはTコードである。
PLC36は、PLC36が実行する機械動作が記述されたラダープログラムを格納している。PLC36は、補助指令であるTコードまたはMコードを受付けると、ラダープログラムに従って補助指令に対応する処理を工作機械100に実行する。PLC36は、補助指令に対応する処理を実行した後、NCプログラムの次のブロックを実行させるために、機械制御が完了したことを示す完了信号を制御信号処理部35に送る。
制御演算部2Xでは、制御信号処理部35と、解析処理部37と、補間処理部38と、ロボット制御部41と、シミュレーション制御部80Xとが記憶部34を介して接続されており、記憶部34を介して情報の書き込み、および読み出しを行う。以下の説明では、制御信号処理部35と、解析処理部37と、補間処理部38と、ロボット制御部41と、シミュレーション制御部80Xとの間の情報の書き込み、および読み出しを説明する際に記憶部34が介されていることを省略する場合がある。
NCプログラムの選択は、ユーザが入力操作部3でNCプログラム番号を入力することによって行われる。このNCプログラム番号は、入力制御部32およびデータ設定部33を介して共有エリア345に書き込まれる。機械操作盤等のサイクルスタートをトリガとして、解析処理部37は、選択されたNCプログラム番号を共有エリア345から読み出すと、選択されたNCプログラムをNCプログラム記憶エリア343内から読み出して、NCプログラムの各ブロック(各行)に対して解析処理を行う。解析処理部37は、例えば、Gコード(軸移動等に関する指令)、Tコード(工具交換指令など)、Sコード(主軸モータ回転数指令)、およびMコード(機械動作指令)を解析する。
解析処理部37は、解析した行にMコードまたはTコードが含まれている場合には、解析結果を共有エリア345および制御信号処理部35を介してPLC36に送る。また、解析処理部37は、解析した行にMコードが含まれている場合には、Mコードを、制御信号処理部35を介してPLC36に送る。PLC36はMコードに対応する機械制御を実行する。実行が完了した場合、制御信号処理部35を介してMコードの完了を示す結果が記憶部34に書き込まれる。補間処理部38は記憶部34に書き込まれた実行結果を参照する。
また、解析処理部37は、工作機械100へのGコードが含まれている場合には、共有エリア345を介して解析結果を補間処理部38に送る。具体的には、解析処理部37は、Gコードに対応する移動条件を生成して補間処理部38に送る。また、解析処理部37は、Sコードで指定された主軸回転数を補間処理部38に送る。主軸回転数は、単位時間あたりの主軸の回転の回数である。移動条件は、加工位置を移動させていくための工具送りの条件であり、刃物台を移動させる速度、刃物台を移動させる位置などで示される。例えば、工具の工具送りは、工具をX軸方向(+X方向)およびZ軸方向(+Z方向)に進ませる。
また、解析処理部37は、ロボット指令解析部371を有している。ロボット指令解析部371は、接続されたロボット60の動作を解析する手段である。ロボット指令解析部371は、NCプログラムに含まれるロボット指令を解析し、解析結果を、共有エリア345を介してロボット制御部41に送る。
解析結果には、ロボット60の座標系を設定するための指令であるロボット座標系設定指令、ロボット60の動作を規定したロボット動作指令などが含まれている。
補間処理部38は、解析処理部37による解析結果のうち工作機械100への指令を用いて工作機械100を制御するためのデータを生成し、加減速処理部39に送る。加減速処理部39は、補間処理部38から供給された補間処理の結果に対して、加速度をなめらかに変化させるための加減速処理を行う。加減速処理部39は、加減速処理の処理結果である速度指令を軸データ出力部40に送る。
軸データ出力部40は、速度指令を駆動部90に出力する。具体的には、軸データ出力部40は、X軸への速度指令をX軸サーボ制御部91に出力し、Z軸への速度指令をZ軸サーボ制御部92に出力する。また、軸データ出力部40は、主軸への回転数指令を主軸サーボ制御部200に出力する。
ロボット制御部41は、ロボット指令解析部371による解析の結果に基づいて、ロボット60への指令をロボットプログラムに変換する。すなわち、ロボット制御部41は、ロボット指令解析部371から送られてくる、ロボット指令の解析結果に基づいて、ロボットコントローラ50が解釈可能なロボット指令を生成する。ロボット制御部41は、生成したロボット指令をロボットコントローラ50に送る。ロボットコントローラ50は、ロボット制御部41から送られてくるロボット指令に基づいて、ロボット60の各軸の位置データを生成し、位置データを用いてロボット60を制御する。
数値制御装置1Xでは、NCプログラムに設定されている指令が順番に実行される。したがって、補間処理部38が工作機械100を制御するためのデータを生成して加減速処理部39に送る順番、およびロボット制御部41が位置データを生成してロボットコントローラ50に送る順番は、それぞれNCプログラムに設定されている指令の順番に対応している。
シミュレーション制御部80Xは、記憶部34、補間処理部38、加減速処理部39、ロボット制御部41、および画面処理部31に接続されている。シミュレーション制御部80Xは、画面処理部31に接続されているが、図1では、シミュレーション制御部80Xと画面処理部31との接続線の記載を省略している。以下の説明では、シミュレーション制御部80Xによる表示部4への情報の書き込みを説明する際に、画面処理部31が介されていることを省略する場合がある。
シミュレーション制御部80Xは、ロボット60の動作および工作機械100の動作を演算によってシミュレーションする。シミュレーション制御部80Xは、機械動作演算部801と、ロボット動作演算部802と、干渉チェック部803とを備えている。
機械動作演算部801は、工作機械100が備える構成要素の移動を描画し、ロボット動作演算部802は、ロボット60が備える構成要素の移動を描画する。シミュレーション制御部80Xは、描画結果を表示部4に表示させる。
機械動作演算部801は、記憶部34から機械モデル811および工具データ813を読み出し、機械モデル811および工具データ813を用いて工作機械100の動作をシミュレーションする。
また、機械動作演算部801は、補間処理部38から、工作機械100の各軸の位置データを取得する。機械動作演算部801は、補間処理部38から取り込んだ位置データに基づいて、機械モデル811から描画される工作機械100の構成要素の位置を修正する。
このように、機械動作演算部801は、工作機械100の動作シミュレーション用のデータである機械モデル811に基づいて工作機械100が備える第1の構成要素を描画する。また、機械動作演算部801は、第1の構成要素の位置を制御する際に用いられる第1の位置データを用いて、第1の構成要素を再描画する。
ロボット動作演算部802は、記憶部34からロボットモデル812および工具データ814を読み出し、ロボットモデル812および工具データ814を用いてロボット60の動作をシミュレーションする。
また、ロボット動作演算部802は、ロボット制御部41から、ロボット60の各軸の位置データを取得する。ロボット動作演算部802は、ロボット制御部41から取り込んだ位置データに基づいて、ロボットモデル812から描画されるロボット60の構成要素の位置を修正する。
このように、ロボット動作演算部802は、ロボット60の動作シミュレーション用のデータであるロボットモデル812に基づいてロボット60が備える第2の構成要素を描画し、第2の構成要素の位置を制御する際に用いられる第2の位置データを用いて第2の構成要素を再描画する。
衝突判断部である干渉チェック部803は、機械動作演算部801およびロボット動作演算部802が描画した稼働部(構成要素)の描画データ同士の重なりをチェックする。換言すると、干渉チェック部803は、工作機械100とロボット60とが干渉(衝突)するか否かを判断する。
すなわち、干渉チェック部803は、特定タイミングにおける第1の構成要素の位置および特定タイミングにおける第2の構成要素の位置に基づいて、特定タイミングで工作機械100とロボット60とが衝突するか否かを判断する。
干渉チェック部803は、工作機械100とロボット60とが干渉することを検出すると、補間処理部38およびロボット制御部41に動作中止の信号を送るとともに、干渉に対するアラームの表示指示であるアラーム指示情報を、画面処理部31を経由して表示部4に送る。これにより、干渉チェック部803は、表示部4に干渉を示す干渉アラームを表示させる。アラーム指示情報には、工作機械100とロボット60とが干渉する位置の情報が含まれていてもよい。この場合、表示部4は、干渉する位置の情報を含んだ干渉アラームを表示する。
工作機械100は、NC工作機械であり、駆動軸によって工具と加工ワークとを相対的に移動させながら、工具で加工ワークを加工する。工作機械100の座標系とロボット60の座標系とは異なる座標系である。工作機械100は、直交座標系で制御され、例えば3軸方向に工具または加工ワークを移動させる。ロボット60は、回転軸を備えており、例えば、4軸以上の方向に駆動する。ロボット60は、複数の関節と複数のアームを備えており、1つの関節が1つのアームを1軸以上の方向に移動させる。
なお、実施の形態1は、工作機械100を描画する際に用いられる描画用のデータが、動作シミュレーション用のデータである機械モデル811である場合について説明するが、機械動作演算部801は、機械モデル811以外の描画用データを用いて工作機械100を描画してもよい。
また、実施の形態1は、ロボット60を描画する際に用いられる描画用のデータが、動作シミュレーション用のデータであるロボットモデル812である場合について説明するが、ロボット動作演算部802は、ロボットモデル812以外の描画用データを用いてロボット60を描画してもよい。
機械動作演算部801は、例えば、ポンチ絵程度の描画を行うことができる粗い描画用データを用いて工作機械100を描画してもよい。また、ロボット動作演算部802は、ポンチ絵程度の描画を行うことができる粗い描画用データを用いてロボット60を描画してもよい。
ただし、干渉チェック部803が工作機械100とロボット60との間の干渉チェックを行う際には、機械動作演算部801は、正確な動作シミュレーションができる程度に精度の高いシミュレーション用データ(例えば、機械モデル811)を用いる。また、干渉チェック部803が工作機械100とロボット60との間の干渉チェックを行う際には、ロボット動作演算部802は、正確な動作シミュレーションができる程度に精度の高いシミュレーション用データ(例えば、ロボットモデル812)を用いる。
ここで、工作機械100とロボット60との間の干渉チェックのシミュレーションについて説明する。図2は、実施の形態1にかかる数値制御装置が制御する工作機械およびロボットの配置例を示す図である。
工作機械100は、筐体14と、工具ホルダ11a,11bと、チャック機構12a,12bとを備えている。工作機械100では、筐体14の内部が加工ワーク5a,5bを加工する加工室となっている。
チャック機構12aは、加工室内で加工ワーク5aを保持し、チャック機構12bは、加工室内で加工ワーク5bを保持する。工具ホルダ11aは、工具6aを保持し、工具ホルダ11bは、工具6bを保持する。工具6aは、チャック機構12aによって保持されている加工ワーク5aを加工し、工具6bは、チャック機構12bによって保持されている加工ワーク5bを加工する。
ロボット60は、工作機械100の近傍に配置されており、工作機械100に対して加工ワーク5a,5bの搬入および搬出を行う。また、ロボット60は、工作機械100が保持している加工ワーク5aに対し、工具6cで加工を行う。工作機械100が用いる工具6a,6bが第1の工具であり、ロボット60が用いる工具6cが第2の工具である。
ロボット60は、ロボットアーム21と、ロボットハンド22と、台座23とを備えている。台座23は、ロボットアーム21を保持する。ロボットアーム21は、1または複数の軸方向に移動可能となっている。ロボットハンド22は、台座23とは反対側の、ロボットアーム21の先端部に配置されている。ロボットハンド22は、工具6cを掴む。
機械モデル811は、加工室内におけるチャック機構12a,12b、加工ワーク5a,5b、工具ホルダ11a,11b、および工具6a,6bの動作シミュレーション用のデータである。
工作機械100の動作がシミュレーションされる際には、工作機械100の全体構成と、工作機械100の加工室内の動作がシミュレーションされ、工作機械100の加工室内の状態が描画される。加工室内に対しては、チャック機構12a,12b、加工ワーク5a,5b、工具ホルダ11a,11b、および工具6a,6bの動作がシミュレーションされ、チャック機構12a,12b、加工ワーク5a,5b、工具ホルダ11a,11b、および工具6a,6bが描画される。
ロボットモデル812は、ロボットアーム21およびロボットハンド22の動作シミュレーション用のデータである。ロボット60の動作がシミュレーションされる際には、ロボットアーム21およびロボットハンド22の動作がシミュレーションされ、ロボットアーム21およびロボットハンド22の状態が描画される。
図3は、実施の形態1にかかる数値制御装置が描画した画面の第1例を示す図である。図3では、表示部4における画面表示の例を示している。図3に示す画面130では、加工室内の状態を表示している。
図3および後述する図4では、チャック機構12a,12bの画像を画像12A,12Bとして図示し、加工ワーク5a,5bの画像を画像5A,5Bとして図示し、工具ホルダ11a,11bの画像を画像11A,11Bとして図示し、工具6a,6bの画像を画像6A,6Bとして図示している。また、図3では、ロボットアーム21の画像を画像21Aとして図示し、ロボットハンド22の画像を画像22Aとして図示し、工具6cの画像を画像6Cとして図示している。
機械動作演算部801は、補間処理部38から、工作機械100の各軸の位置データを取り込む。機械動作演算部801は、補間処理部38から取り込んだ位置データに基づいて、工作機械100が備える稼働部(工作機械100が備える構成要素)を描画し直す。すなわち、機械動作演算部801は、補間処理部38から取り込んだ位置データに基づいて、機械モデル811から描画される工作機械100の構成要素の位置を修正する。工作機械100が備える稼働部は、前述したチャック機構12a,12b、加工ワーク5a,5b、工具ホルダ11a,11b、および工具6a,6bである。機械動作演算部801は、例えば、工具ホルダ11a,11bの移動、および工具6a,6bの移動を描画する。
ロボット動作演算部802は、ロボット制御部41から、ロボット60の各軸の位置データを取り込む。ロボット動作演算部802は、ロボット制御部41から取り込んだ位置データに基づいて、ロボット60が備える稼働部(ロボット60が備える構成要素)を描画し直す。すなわち、ロボット動作演算部802は、ロボット制御部41から取り込んだ位置データに基づいて、ロボットモデル812から描画されるロボット60の構成要素の位置を修正する。ロボット60が備える稼働部は、前述したロボットアーム21、ロボットハンド22、および工具6cである。ロボット動作演算部802は、例えば、ロボットアーム21の移動、および工具6cを掴んでいるロボットハンド22の移動を描画する。
シミュレーション制御部80Xは、機械動作演算部801による描画結果、およびロボット動作演算部802による描画結果を、画面処理部31を経由して表示部4に表示させる。表示部4によって表示される画面の例が、図3に示す画面130である。
干渉チェック部803は、機械動作演算部801およびロボット動作演算部802が描画した稼働部の描画データ同士の重なりをチェックする。具体的には、干渉チェック部803は、工作機械100の工具ホルダ11a,11bまたは工具6a,6bと、ロボットアーム21または工具6cを掴んだロボットハンド22と、が干渉するか否かを判断する。機械モデル811およびロボットモデル812は、3次元データであるので、干渉チェック部803は、工作機械100の3次元形状およびロボット60の3次元形状に対して干渉をチェックする。
図4は、実施の形態1にかかる数値制御装置が描画した画面の第2例を示す図である。図4では、衝突が検知された場合の、表示部4における画面表示の例を示している。図4に示す画面131では、干渉チェック部803が、矢印D1の方向にロボットハンド22の画像22Aが移動した際に、加工室内で構成要素同士の干渉を検知した場合の加工室内の状態を表示している。
干渉チェック部803は、図4に示すように、工具6bの画像6Bと、ロボットハンド22の画像22Aとが衝突によって重なっていること検出すると、補間処理部38およびロボット制御部41に動作中止の信号を送るとともに、画面処理部31を経由して表示部4に干渉アラームを表示させる。表示部4によって表示される干渉アラーム画面は、衝突をユーザに気付かせるような画面であれば、何れの画面であってもよい。干渉アラームの表示は、他のアラームと同様の画面によって表示される。画面131では、ロボット60と工作機械100とが衝突する位置が示される。
補間処理部38およびロボット制御部41は、干渉チェック部803から動作中止の信号を受け取ると、演算を停止する。ここで、干渉チェック部803は、制御演算部2Xの先読み処理での演算結果で干渉の有無を判断している。このため、シミュレーション制御部80Xは、実際に工作機械100とロボット60とが干渉(衝突)する前に、工作機械100およびロボット60の稼働部の動作を停止することができる。
また、工作機械100の座標系とロボット60の座標系とは異なっているが、記憶部34には工作機械100の座標系とロボット60の座標系との位置関係を定義するパラメータが格納されている。したがって、干渉チェック部803は、記憶部34が格納している位置関係に基づいて、工作機械100の稼働部とロボット60の稼働部との干渉をチェックすることができる。
なお、動作シミュレーション用のデータである機械モデル811およびロボットモデル812は、稼働しない部分を含んでいてもよい。例えば、機械モデル811は、工作機械100の筐体14を含んでいてもよい。また、ロボットモデル812は、台座23を含んでいてもよい。この場合、ロボットモデル812には、ロボットアーム21、ロボットハンド22、工具6c、および台座23が含まれている。
機械モデル811が工作機械100の全体構成を含む場合、表示部4は、工作機械100の全体を表示する。また、ロボットモデル812がロボット60の全体構成を含む場合、表示部4は、ロボット60の全体を表示する。
図5は、実施の形態1にかかる数値制御装置が描画した画面の第3例を示す図である。図5では、表示部4における画面表示の例を示している。図5に示す画面132は、表示部4が、工作機械100の全体およびロボット60の全体を表示した場合の画面である。
図5では、工作機械100の画像を画像100Aとして図示し、筐体14の画像を画像14Aとして図示し、ロボット60の画像を画像60Aとして図示し、台座23の画像を画像23Aとして図示している。機械モデル811が工作機械100の全体構成を含む場合、干渉チェック部803は、ロボットハンド22が工作機械100の筐体14に干渉することを検出できる。
図6は、実施の形態1にかかる数値制御装置が検出する、ロボットハンドと工作機械の筐体との干渉を説明するための図である。ここでは、機械モデル811が工作機械100の全体を含む場合に干渉チェック部803が検出する干渉の第1例について説明する。図6では、矢印D2の方向にロボットハンド22が移動した際に、ロボットハンド22と工作機械100の筐体14とが干渉した状態を示している。
また、機械モデル811が工作機械100の全体を含む場合、干渉チェック部803は、ロボットアーム21が工作機械100の外部に配置された機構に干渉することを検出できる。
図7は、実施の形態1にかかる数値制御装置が検出する、ロボットアームと工作機械の外部に配置された機構との干渉を説明するための図である。ここでは、機械モデル811が工作機械100の全体を含む場合に干渉チェック部803が検出する干渉の第2例について説明する。
ローダ30は、工作機械100の外部で搬送物7を搬送する装置である。ロボットハンド22およびロボットアーム21は、工作機械100の外部でも動作するので、ロボットハンド22およびロボットアーム21は、ローダ30または搬送物7に衝突する場合がある。図7では、矢印D3の方向に工具6cが移動した際に、ロボットアーム21とローダ30とが干渉した状態を示している。
つぎに、数値制御装置1Xによる干渉チェックの処理手順について説明する。図8は、実施の形態1にかかる数値制御装置による干渉チェックの処理手順を示すフローチャートである。
解析処理部37は、NCプログラムを解析する(ステップS10)。すなわち、解析処理部37は、工作機械100を動作させる指令(駆動部90への指令)およびロボット60を動作させる指令(ロボット60への指令)を含んだNCプログラムを解析する。具体的には、解析処理部37は、工作機械100の駆動部90への指令である機械駆動指令を解析し、ロボット指令解析部371は、ロボット60への指令であるロボット指令を解析する。
解析処理部37は、解析した指令が機械駆動指令であるかロボット指令であるかを判断する。解析した指令が機械駆動指令である場合(ステップS15、Yes)、解析処理部37は、機械駆動指令の解析結果を補間処理部38に送る。一方、解析した指令がロボット指令である場合(ステップS15、No)、解析処理部37は、ロボット指令の解析結果をロボット制御部41に送る。
補間処理部38は、機械駆動指令の解析結果を用いて、機械駆動指令の補間処理を行う(ステップS20)。そして、補間処理部38は、補間処理した機械駆動指令に基づいて、工作機械100の動作である工作機械動作の演算処理を実行する(ステップS30)。すなわち、補間処理部38は、補間処理した機械駆動指令から、工作機械100が備える駆動部90の各軸位置を計算する。
ロボット制御部41は、ロボット指令の解析結果を用いて、NCプログラムをロボットプログラムに変換する(ステップS40)。また、ロボット制御部41は、ロボットプログラムに基づいて、ロボット60の動作であるロボット動作の演算処理を実行する(ステップS50)。すなわち、ロボット制御部41は、ロボットプログラムからロボット60の各軸位置を計算する。具体的には、ロボット制御部41は、ロボットアーム21の位置、ロボットハンド22の位置などの計算を行う。
補間処理部38で計算された駆動部90の各軸位置を示す位置データは、機械動作演算部801に送られる。また、ロボット制御部41で計算されたロボット60の各軸位置を示す位置データは、ロボット動作演算部802に送られる。
シミュレーション制御部80Xは、描画処理を実行する(ステップS60)。具体的には、機械動作演算部801は、機械モデル811に基づいて工作機械100の機械構成を描画し、工具データ813に基づいて工作機械100が用いる工具6a,6bを描画する。また、ロボット動作演算部802は、ロボットモデル812に基づいて、ロボット60を描画し、工具データ814に基づいてロボット60が用いる工具6cを描画する。
また、機械動作演算部801は、補間処理部38から、駆動部90の各軸位置を示す位置データを取り込む。機械動作演算部801は、取り込んだ位置データに基づいて、工作機械100が備える機構の稼働部を描画し直す。機械動作演算部801は、例えば、工作機械100の工具ホルダ11a,11bの移動、および工具6a,6bの移動を描画する。
また、ロボット動作演算部802は、ロボット制御部41から、ロボット60の各軸位置を示す位置データを取り込む。ロボット動作演算部802は、取り込んだ位置データに基づいて、ロボット60が備える機構の稼働部を描画し直す。ロボット動作演算部802は、例えば、ロボットアーム21の移動、および工具6cを含むロボットハンド22の移動を描画する。
機械動作演算部801およびロボット動作演算部802による描画結果(描画データ)は、シミュレーション制御部80Xが画面処理部31を経由して表示部4に表示させる。
干渉チェック部803は、ロボット60と工作機械100との間の干渉チェック処理を実行する(ステップS70)。すなわち、干渉チェック部803は、機械動作演算部801で描画された稼働部の描画データと、ロボット動作演算部802で描画された稼働部の描画データとの重なりをチェックする。具体的には、干渉チェック部803は、工作機械100の各軸位置と、ロボット60の各軸位置とに基づいて、以下の(1)から(4)に示す構成要素間で干渉が発生するか否かを判断する。
(1)機械モデル811に基づく工作機械100の機械構成
(2)工具データ813に基づく工具6a,6b
(3)ロボットモデル812に基づくロボット60の構成
(4)工具データ814に基づく工具6c
干渉チェック部803は、例えば、工作機械100の工具ホルダ11a,11bまたは工具6a,6bと、ロボット60のロボットアーム21、ロボットハンド22、または工具6cとの間に干渉が発生するか否かをチェックする(ステップS80)。
干渉が発生している場合(ステップS80、Yes)、干渉チェック部803は、アラーム処理を実行する(ステップS90)。すなわち、干渉チェック部803は、補間処理部38およびロボット制御部41に、動作中止の信号を送ると同時に、画面処理部31を経由して表示部4に干渉アラームを表示させる。補間処理部38およびロボット制御部41は、干渉チェック部803から動作中止の信号を受け取ると、演算処理を停止する。
干渉が発生していない場合(ステップS80、No)、シミュレーション制御部80Xは、シミュレーション処理を終了する。
本実施の形態では、数値制御装置1Xが、工作機械100およびロボット60の実際の動作に合わせてシミュレーション描画および干渉チェックを行う場合について説明した。数値制御装置1Xは、工作機械100およびロボット60を動作させることなくシミュレーション描画および干渉チェックを行ってもよい。この場合、数値制御装置1Xは、数値制御装置1Xが持っているマシンロック機能を用いる。マシンロック機能は、位置データの計算は行うが、駆動部90およびロボットコントローラ50には指令を出さない機能である。数値制御装置1Xは、マシンロック機能を用いることにより、工作機械100およびロボット60を実際に動作させなくても、シミュレーション描画および干渉チェックを行うことができる。
このように実施の形態1では、数値制御装置1Xが、機械モデル811および工作機械100を制御する際に用いる位置データに基づいて工作機械100を描画し、ロボットモデル812およびロボット60を制御する際に用いる位置データに基づいてロボット60を描画し、描画した工作機械100およびロボット60に基づいて、ロボット60と工作機械100とが衝突するか否かを判断している。これにより、数値制御装置1Xは、ロボット60と工作機械100とが衝突するか否かを判断することが可能となる。
実施の形態2.
つぎに、図9から図12を用いてこの発明の実施の形態2について説明する。実施の形態2では、シミュレーションによって干渉を検知した場合に、干渉を回避できるよう、工作機械100およびロボット60を制御して、工作機械100およびロボット60の運転を継続する。
図9は、実施の形態2にかかる数値制御装置の構成例を示す図である。図9の各構成要素のうち図1に示す実施の形態1の数値制御装置1Xと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Yは、数値制御装置1Xと比較して、制御演算部2Xの代わりに制御演算部2Yを備えている。制御演算部2Yの記憶部34が記憶しているシミュレーション用データ346は、機械モデル811、ロボットモデル812、ロボット経由点、および待機時間上限値を含んでいる。ロボット経由点および待機時間上限値については後述する。また、制御演算部2Yは、制御演算部2Xと比較して、シミュレーション制御部80Xの代わりにシミュレーション制御部80Yを備えている。
シミュレーション制御部80Yは、シミュレーション制御部80Xと同様に、ロボット60の動作および工作機械100の動作を演算によってシミュレーションする。シミュレーション制御部80Yは、機械動作演算部801と、ロボット動作演算部802と、干渉チェック部803と、干渉回避処理部804とを備えている。なお、図9では、シミュレーション制御部80Yが記憶部34から取得して格納しておく、機械モデル811、ロボットモデル812、および工具データ813,814の図示は省略している。
干渉回避処理部804は、工作機械100とロボット60とが干渉すると判断された場合に、工作機械100とロボット60との干渉を回避するため、ロボット60への指令などを変更する。
干渉回避処理部804は、工作機械100とロボット60とが干渉すると判断された場合、ロボット60の姿勢を変更することによって干渉を回避できるか否かを判断する。ロボット60の姿勢を変更することによって干渉を回避できる場合、干渉回避処理部804は、ロボット60への移動指令であるロボット移動指令を、ロボット60の姿勢を変更したロボット移動指令に置き換える。これにより、干渉回避処理部804は、ロボット60と工作機械100の干渉を回避させる。
ロボット60の姿勢を変更することによって干渉を回避できない場合、干渉回避処理部804は、ロボット経由点を目標位置としたロボット移動指令を挿入することで干渉を回避できるか否かを判断する。ロボット経由点は、ロボット60に経由させることが可能な位置を示している。
ロボット経由点を用いることによって干渉を回避できる場合、干渉回避処理部804は、工作機械100とロボット60とを干渉させてしまうロボット移動指令(指令)の直前に、工作機械100との干渉を発生させないロボット移動指令を挿入することで、ロボット60の移動経路を変更する。これにより、干渉回避処理部804は、ロボット60と工作機械100の干渉を回避させる。
なお、本実施の形態では、干渉を発生させてしまうロボット移動指令の直前に干渉を回避するための指令を挿入する場合について説明するが、干渉を回避するための指令は、干渉を発生させてしまうロボット移動指令より前に挿入されればよい。
ロボット経由点を用いても干渉を回避できない場合、干渉回避処理部804は、干渉する構成要素(干渉対象)が工具6a,6bなどの工作機械100の可動部であれば、ロボット60の移動を一時的に停止することで干渉回避が可能か否かを判断する。具体的には、干渉回避処理部804が記憶部34から待機時間上限値を取得する。待機時間上限値は、ロボット60を停止させることができる時間の上限値である。すなわち、ロボット60は、待機時間上限値以下の時間であれば、待機することができる。干渉回避処理部804は、待機時間上限値以下の特定時間の間ロボット60を停止させることで干渉を回避できるか否かを判断する。
待機時間上限値以下の特定時間だけロボット60を待機させることで干渉を回避できる場合、干渉回避処理部804は、ロボット60と工作機械100を干渉させてしまうロボット移動指令の直前に待機(ドウェル)指令を挿入する。これにより、干渉回避処理部804は、ロボット60と工作機械100の干渉を回避させる。
干渉回避処理部804は、ロボット60の姿勢を変更すること、ロボット60の経路を変更すること、および待機指令を挿入することの少なくとも1つを実行することでロボット60と工作機械100の干渉を回避させる。すなわち、干渉回避処理部804は、ロボット60の姿勢を変更すること、ロボット60の経路を変更すること、および待機指令を挿入することを組み合わせて、ロボット60と工作機械100の干渉を回避させてもよい。
つぎに、干渉回避を行う際のロボット60の動作例について説明する。図10は、実施の形態2にかかる数値制御装置によって実行される干渉回避の第1の動作例を説明するための図である。干渉回避の第1の動作例では、干渉回避処理部804は、干渉を検出すると、ロボット60を姿勢変更させることによって、干渉を回避する。図10では、図7に示した干渉が発生する場合の、干渉回避の動作を示している。図10では、工具6cを矢印D3の方向に移動させつつ、ロボット60の姿勢を変更した場合を示している。
干渉回避処理部804は、姿勢変更を行う場合、ロボット60が把持している工具6cの先端位置および姿勢が姿勢の変更前後で変化しないように、ロボット移動指令を置き換える。干渉回避処理部804は、このロボット移動指令の置き換えによって、干渉を回避することが可能か否かを判断する。回避可能な場合、干渉回避処理部804は、干渉を回避できるロボット移動指令に従ってロボット60を動作させる。
図7に示した干渉が発生する場合、干渉回避処理部804は、工具6cの先端位置および姿勢を姿勢の変更前後で変更せず、特定のロボットアーム21の姿勢が変化するよう、ロボット移動指令を置き換える。図10では、ロボットアーム21のうち、台座23に接合されている第1のロボットアームを矢印D4aの方向に移動させ、第1のロボットアームに接合されている第2のロボットアームを矢印D4bの方向に移動させることで、ロボット60の姿勢が変更された場合を示している。
図11は、実施の形態2にかかる数値制御装置によって実行される干渉回避の第2の動作例を説明するための図である。干渉回避の第2の動作例では、干渉回避処理部804は、干渉を検出すると、ロボット60の移動経路を変更させることによって、干渉を回避する。図11では、図6に示した干渉が発生する場合の、干渉回避の動作を示している。図11では、工具6cを矢印D5の方向に移動させ、その後、工具6cを矢印D6の方向に移動させるよう、ロボット60の移動経路を変更した場合を示している。
干渉回避処理部804は、記憶部34からロボット経由点P1を取得する。干渉回避処理部804は、干渉が発生するロボット移動指令の直前に、ロボット経由点P1を、干渉対象(図6では、工具6c)の目標位置(経由位置)としたロボット移動指令を挿入することで干渉を回避できるか否かを判断する。
干渉を回避できる場合、干渉回避処理部804は、ロボット60と工作機械100との干渉を発生させるロボット移動指令の直前に、ロボット経由点P1を経由するロボット移動指令を挿入することで、ロボット60が備える構成要素の移動経路を変更する。これにより、干渉回避処理部804は、ロボット60と工作機械100の干渉を回避する。なお、記憶部34は、ロボット経由点P1を複数記憶しておいてもよい。この場合、干渉回避処理部804は、複数のロボット経由点P1を用いて、複数の回避経路を適用してもよい。
つぎに、数値制御装置1Yによる干渉チェックの処理手順について説明する。図12は、実施の形態2にかかる数値制御装置による干渉チェックの処理手順を示すフローチャートである。なお、図12の説明では、図8のフローチャートで説明した処理と同様の処理については、その説明を省略する。
数値制御装置1Yは、ステップS10からS80までは数値制御装置1Xと同様の処理を実行する。干渉チェック処理の結果、干渉が発生していない場合(ステップS80、No)、シミュレーション制御部80Yは、シミュレーション処理を終了する。
干渉チェック処理の結果、干渉が発生している場合(ステップS80、Yes)、干渉回避処理部804は、ロボット60の姿勢変更を行うことで干渉の回避が可能か否かを判断する(ステップS100)。
ロボット60が把持する工具6cの先端位置および姿勢が、ロボット移動指令の変換前後で同等でないと、目的とした加工をロボット60が実施できなくなる。このため、干渉回避処理部804は、干渉を回避させるための指令における工具6cの先端位置および姿勢が、干渉が発生する指令と同じになるような、ロボット60の各軸位置(ロボット60を構成する各軸の位置)のパターンを算出する。
干渉回避処理部804は、ロボット移動指令の変換前後で工具6cの先端位置および姿勢を変更することなく、干渉を回避できる軸位置のパターンを算出できたか否かを判断する。すなわち、干渉回避処理部804は、導出したロボット60の各軸位置を適用した場合に、干渉を回避できるか否かを判断する。
干渉回避処理部804は、ロボット60の姿勢変更を行うことで干渉を回避可能であると判断した場合(ステップS100、Yes)、ロボット60の姿勢を変更する(ステップS110)。具体的には、干渉回避処理部804は、干渉を発生させるロボット移動指令を、ロボット60の姿勢を変更したロボット移動指令に置き換える。これにより、干渉回避処理部804は、干渉を発生させるロボット指令を、干渉が発生しない姿勢のロボット指令に変更する。
このように、干渉回避処理部804は、干渉を発生させるロボット移動指令においてロボット60の姿勢を変更することで、干渉を回避できる場合は、ロボット60の姿勢変更処理を実行する。これにより、干渉回避処理部804は、干渉を発生させるロボット移動指令を干渉回避可能なロボット移動指令に置き換えてロボット60を動作させる。
干渉回避処理部804は、ロボット60の姿勢変更を行っても干渉を回避できないと判断した場合(ステップS100、No)、ロボット60の経路変更を行うことで干渉の回避が可能か否かを判断する(ステップS120)。すなわち、干渉回避処理部804は、干渉が発生するロボット移動指令の直前に、経路変更指令を挿入すると、干渉を回避できるか否かを判断する。具体的には、干渉回避処理部804は、予め設定しておいたロボット経由点をロボット60が通過した場合に、干渉を回避できるか否かを判断する。このとき、干渉回避処理部804は、任意の数(1または複数)のロボット経由点を設定できるものとし、それぞれのロボット経由点を通過するロボット移動指令を挿入した場合に、干渉を回避できるか否かを判断する。
干渉回避処理部804は、ロボット60の経路変更を行うことで干渉を回避可能であると判断した場合(ステップS120、Yes)、ロボット60の移動経路を変更する(ステップS130)。具体的には、干渉回避処理部804は、干渉が発生するロボット移動指令の直前に、干渉を発生させない移動指令を挿入する。換言すると、干渉回避処理部804は、干渉が発生するロボット移動指令の直前に、干渉を回避できるロボット経由点を目標位置としたロボット移動指令(経路変更指令)を挿入する。干渉を回避可能なロボット経由点が複数ある場合、干渉回避処理部804は、移動距離が最も短い、すなわち最短時間で移動可能なロボット経由点を目標位置としたロボット移動指令を、干渉が発生するロボット移動指令の直前に挿入する。
干渉回避処理部804は、ロボット60の経路変更を行っても干渉を回避できないと判断した場合(ステップS120、No)、ロボット60の待機で干渉の回避が可能か否かを判断する(ステップS140)。具体的には、干渉回避処理部804は、ロボット60が干渉する干渉対象が可動部であり、かつロボット60を待機時間上限値内の間停止させることで、干渉を回避できるか否かを判断する。すなわち、干渉回避処理部804は、ロボット60が干渉する対象が工作機械100の工具6a,6bといった可動部であるか否かを判断する。干渉対象が可動部である場合、干渉回避処理部804は、待機上限値範囲以内の間、ロボット60を停止させることで、工具6a,6bなどの可動部が移動し、干渉を回避できる状態に移行するか否かを判断する。
干渉回避処理部804は、ロボット60の待機で干渉の回避が可能であると判断した場合(ステップS140、Yes)、ロボット60への待機処理を実行する。具体的には、干渉回避処理部804は、干渉が発生するロボット指令の直前に、干渉を回避できる時間分の待機指令、すなわちロボット60を停止させるための待機指令を挿入する(ステップS150)。
干渉回避処理部804が、ロボット60の待機では干渉を回避できないと判断すると(ステップS140、No)、干渉チェック部803は、アラーム処理を実行する(ステップS160)。すなわち、干渉チェック部803は、補間処理部38およびロボット制御部41に、動作中止の信号を送るとともに、画面処理部31を経由して表示部4に干渉アラームを表示させる。補間処理部38およびロボット制御部41は、干渉チェック部803から動作中止の信号を受け取ると、演算処理を停止する。
このように実施の形態2によれば、数値制御装置1Yは、干渉が発生する場合には、ロボット60の姿勢変更、ロボット60の移動経路の変更、またはロボット60の待機指令の挿入を実行するので、ロボット60と工作機械100の干渉を回避できる。
実施の形態3.
つぎに、図13から図17を用いてこの発明の実施の形態3について説明する。実施の形態3では、加工ワーク5a,5bの加工中の形状をシミュレーション(以下、ワークシミュレーションという)する。
図13は、実施の形態3にかかる数値制御装置の構成例を示す図である。図13の各構成要素のうち数値制御装置1X,1Yと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Zは、数値制御装置1Yと比較して、制御演算部2Yの代わりに制御演算部2Zを備えている。制御演算部2Zの記憶部34が記憶しているシミュレーション用データ346は、機械モデル811、ロボットモデル812、ロボット経由点、待機時間上限値、およびワークデータ815を含んでいる。ワークデータ815は、加工ワーク5a,5bの情報であり、加工ワーク5a,5bの加工開始時の形状および装着位置などの情報を含んでいる。
制御演算部2Zは、制御演算部2Yと比較して、シミュレーション制御部80Yの代わりにシミュレーション制御部80Zを備えている。
シミュレーション制御部80Zは、加工ワーク5a,5bの形状の変化を演算によってシミュレーションする。シミュレーション制御部80Zは、機械動作演算部801と、ロボット動作演算部802と、干渉チェック部803と、干渉回避処理部804とを備えている。また、本実施の形態のシミュレーション制御部80Zは、移動軌跡演算部805、ワーク位置演算部806、およびワーク形状演算部807を備えている。なお、図13では、シミュレーション制御部80Zが記憶部34から取得する、機械モデル811、ロボットモデル812、および工具データ813,814の図示は省略している。
移動軌跡演算部805は、機械動作演算部801から工作機械100の各軸の移動データを取得し、ロボット動作演算部802からロボット60の各軸の移動データを取得する。移動軌跡演算部805は、工作機械100の各軸の移動データ、およびロボット60の各軸の移動データに基づいて、工具6a〜6cの移動軌跡を演算する。工具6aまたは工具6bの移動軌跡が第1の移動軌跡であり、工具6cの移動軌跡が第2の移動軌跡である。
ワーク位置演算部806は、記憶部34からワークデータ815を取得する。ワーク位置演算部806は、工具6a〜6cおよびロボット60の座標系上における、加工ワーク5a,5bの位置を算出する。具体的には、ワーク位置演算部806は、ワークデータ815と、機械モデル811と、ロボットモデル812とに基づいて、加工ワーク5a,5bの位置であるワーク位置を算出する。
ワーク形状演算部807は、工具6a〜6cの移動軌跡と、加工ワーク5a,5bの位置と、に基づいて、加工ワーク5a,5bの加工中の形状(形状の時間的な変化)を算出する。また、ワーク形状演算部807は、加工ワーク5a,5bの加工中の形状を、画面処理部31を介して表示部4に表示させる。
ここで、数値制御装置1Zが表示部4の画面に表示させる情報について説明する。図14は、実施の形態3にかかる数値制御装置がワークシミュレーションをする際のロボットおよび工作機械の動作を説明するための図である。図15は、図14に示すワークシミュレーションが実行される際の画面表示の例を示す図である。
図14では、工作機械100が、第1系統Q1および第2系統Q2で旋削加工を実行した後、ロボット60が、第3系統Q3でロボット制御による面取り加工を実行する様子を示している。第1系統Q1は、工具6aを含んだ系統であり、第2系統Q2は、工具6bを含んだ系統であり、第3系統Q3は、工具6cを含んだ系統である。工具6aを含んだ第1系統Q1は、加工ワーク5aを加工し、工具6bを含んだ第2系統Q2は、加工ワーク5bを加工する。また、工具6cを含んだ第3系統Q3は、加工ワーク5aを加工する。加工ワーク5aは、工具6aを含んだ第1系統Q1によって面取り位置P2まで加工されると、第1系統Q1による加工が継続されながら、工具6cを含んだ第3系統Q3によって面取り位置P2で面取り加工が行われる。
数値制御装置1Zが備える表示部4は、加工途中の加工ワーク5a,5bを表示するとともに、工作機械100およびロボット60の工具6a〜6cを表示する。図15に示す画面133では、第1系統Q1で旋削加工が実行される際に、加工途中の加工ワーク5aと、工作機械100の工具6aとが表示される場合を示している。図15に示す画面134では、その後、第1系統Q1での旋削加工および第3系統Q3での面取り加工が実行される際に、加工途中の加工ワーク5aと、工作機械100の工具6aと、ロボット60の工具6cとが表示される場合を示している。すなわち、画面133では、工作機械100の第1系統Q1による旋削加工段階のシミュレーション結果が表示され、画面134では、ロボット60の第3系統Q3による面取り工程段階のシミュレーション結果が表示されている。
表示部4が表示する画面(ワークシミュレーション画面)では画面の任意の箇所の拡大および縮小が可能となっており、加工後のワーク形状の特定箇所の詳細形状を確認可能となっている。図16は、図15に示した面取り位置での加工ワークの形状を拡大表示した例を示す図である。図16の画面135では、加工ワーク5aの面取り位置P2の画像を拡大表示している。なお、図16では、加工ワーク5aの箇所にハッチングを付している。
つぎに、数値制御装置1Zによるワークシミュレーションの処理手順について説明する。図17は、実施の形態3にかかる数値制御装置によるワークシミュレーションの処理手順を示すフローチャートである。図17では、第1系統Q1および第3系統Q3での加工ワーク5aに対するワークシミュレーションについて説明する。なお、図17の説明では、図8のフローチャートで説明した処理と同様の処理については、その説明を省略する。
数値制御装置1Zは、ワークシミュレーションを開始すると、第1系統Q1で工作機械100による旋削加工を実行し、第3系統Q3でロボット60による面取り加工を実行する。なお、第1系統Q1の処理および第3系統Q3の処理は並列にて実施されるものとする。
第1系統Q1の旋削加工ステップでは、解析処理部37が、NCプログラムを解析する(ステップS10A)。すなわち、解析処理部37が、工作機械100の駆動部90への指令である機械駆動指令を解析する。
補間処理部38は、機械駆動指令の解析結果を用いて、機械駆動指令の補間処理を行う(ステップS20)。そして、補間処理部38は、補間処理した機械駆動指令に基づいて、工作機械100の動作である工作機械動作の演算処理を実行する(ステップS30)。補間処理部38による演算処理で得られる機械動作には、工作機械100が備える駆動部90の各軸位置の情報が含まれている。
移動軌跡演算部805は、工具6aの移動軌跡である第1の工具移動軌跡の演算処理を実行する(ステップS200)。具体的には、移動軌跡演算部805は、工作機械100が備える駆動部90の各軸位置と、機械モデル811と、工具データ813とに基づいて、工具6aの移動軌跡を算出する。
第3系統Q3の面取り加工ステップでは、解析処理部37のロボット指令解析部371が、NCプログラムを解析する(ステップS10B)。すなわち、ロボット指令解析部371が、ロボット60への指令であるロボット指令を解析する。
ロボット制御部41は、ロボット60への指令の解析結果を用いて、ロボット60へのNCプログラムをロボットプログラムに変換する(ステップS40)。また、ロボット制御部41は、ロボットプログラムに基づいて、ロボット60の動作であるロボット動作の演算処理を実行する(ステップS50)。ロボット制御部41による演算処理で得られるロボット動作には、ロボット60の各軸位置の情報が含まれている。
移動軌跡演算部805は、工具6cの移動軌跡である第2の工具移動軌跡の演算処理を実行する(ステップS210)。具体的には、移動軌跡演算部805は、ロボット60の各軸位置と、ロボットモデル812と、工具データ814とに基づいて、工具6cの移動軌跡を算出する。
移動軌跡演算部805が、工具6a,6cの移動軌跡を算出した後、ワーク位置演算部806は、ワークデータ815と、機械モデル811と、ロボットモデル812とに基づいて、加工ワーク5aの位置であるワーク位置の演算処理を実行する(ステップS220)。すなわち、ワーク位置演算部806は、ワーク位置の演算処理にて加工ワーク5aが工作機械100の加工室内の何れの位置に存在するかを算出する。
ワーク形状演算部807は、ワーク形状の演算処理を実行する(ステップS230)。具体的には、ワーク形状演算部807は、工具6a〜6cの移動軌跡と、加工ワーク5aの位置と、に基づいて、加工ワーク5aの加工中の形状を算出する。すなわち、ワーク形状演算部807は、ステップS200,S210で算出された工具6a,6cの移動軌跡と、ステップS220で算出されたワーク位置とに基づいて、特定領域まで加工された後の加工ワーク5aの形状を算出する。換言すると、ワーク形状演算部807は、ワーク形状の時間的な変化を算出する。このとき、ワーク形状演算部807は、加工ワーク5aに対して、工具6a,6cが通過した箇所を除外した形状を演算していく。
シミュレーション制御部80Zは、描画処理を実行する(ステップS240)。具体的には、ワーク形状演算部807が、算出した加工ワーク5aの加工中の形状を描画し、描画したデータを画面処理部31に送る。これにより、表示部4は、加工ワーク5aの加工中の形状を表示する。
シミュレーション制御部80Zは、加工ワーク5bに対しても、加工ワーク5aと同様に加工中の形状を算出することができる。シミュレーション制御部80Zは、算出した加工ワーク5a,5bを用いて、ロボット60と加工ワーク5a,5bとの干渉をチェックしてもよいし、干渉を回避させてもよい。また、シミュレーション制御部80Zは、算出した加工ワーク5a,5bを用いて、工作機械100と加工ワーク5a,5bとの干渉をチェックしてもよいし、干渉を回避させてもよい。
このように実施の形態3によれば、数値制御装置1Zは、工具6a〜6cの移動軌跡を算出し、工具6a〜6cの移動軌跡に基づいて加工ワーク5a,5bの形状を算出するので、加工中の加工ワーク5a,5bの形状を算出することができる。
また、数値制御装置1Zは、加工中の加工ワーク5a,5bの形状を算出できるので、加工ワーク5a,5bとロボット60との干渉のチェックおよび干渉の回避を正確に実行できる。また、数値制御装置1Zは、加工中の加工ワーク5a,5bの形状を算出できるので、加工ワーク5a,5bと工作機械100との干渉のチェックおよび干渉の回避を正確に実行できる。
実施の形態4.
つぎに、図18から図22を用いてこの発明の実施の形態4について説明する。実施の形態4では、工作機械100またはロボット60への手動操作に対して、工作機械100とロボット60との間に干渉が発生するか否かを判断し、干渉する場合には、干渉回避の動作を実行する。
図18は、実施の形態4にかかる数値制御装置の構成例を示す図である。図18の各構成要素のうち数値制御装置1X,1Y,1Zと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Lは、数値制御装置1Yと比較して、制御演算部2Yの代わりに制御演算部2Lを備えている。制御演算部2Lは、制御演算部2Yと比較して、シミュレーション制御部80Yの代わりに干渉回避制御部81を備えている。また、制御演算部2Lは、制御演算部2Yと比較して、ロボット制御部41の代わりにロボット制御部41Lを備えている。
制御演算部2Lの記憶部34が記憶しているシミュレーション用データ346は、機械モデル811と、ロボットモデル812とを含んでいる。
干渉回避制御部81は、シミュレーション制御部80Yが備えている機能に加えて、手動操作された際に干渉を回避するための処理を実行する機能を備えている。干渉回避制御部81は、工作機械100またはロボット60への手動操作に対して、工作機械100とロボット60との間に干渉が発生するか否かを判断し、干渉する場合には工作機械100とロボット60との干渉を回避するため、ロボット60への指令などを変更する。干渉回避制御部81は、機械動作演算部851と、ロボット動作演算部852と、干渉チェック部853と、干渉回避処理部854とを備えている。
機械動作演算部851は、機械モデル811および工具データ813を記憶部34から取得する。また、ロボット動作演算部852は、ロボットモデル812および工具データ814を記憶部34から取得する。なお、図18では、干渉回避制御部81が記憶部34から取得して格納しておく、機械モデル811、ロボットモデル812、および工具データ813,814の図示は省略している。
機械動作演算部851は、機械動作演算部801が備えている機能に加えて、手動操作された際の工作機械100の位置および形状を算出する機能を備えている。機械動作演算部851は、手動操作による移動対象が工作機械100の構成要素であった場合、移動対象、移動量、機械モデル811および工具データ813に基づいて、工作機械100の移動後の位置および形状を算出する。機械動作演算部851は、算出結果である、工作機械100の移動後の位置および形状を干渉チェック部853に送信する。
ロボット動作演算部852は、ロボット動作演算部802が備えている機能に加えて、手動操作された際のロボット60の位置および形状を算出する機能を備えている。ロボット動作演算部852は、手動操作による移動対象がロボット60の構成要素であった場合、移動対象、移動量、ロボットモデル812および工具データ814に基づいて、ロボット60の移動後の位置および形状を算出する。ロボット動作演算部852は、算出結果である、ロボット60の移動後の位置および形状を干渉チェック部853に送信する。
干渉チェック部853は、手動操作による移動対象の移動後の位置および形状に基づいて、工作機械100とロボット60とが干渉するか否かを判断する。干渉回避処理部854は、ロボット60の姿勢を変更することで干渉回避が可能である場合に、ロボット60の姿勢を変更した移動データを生成して、ロボット制御部41Lに送信する。
数値制御装置1Lの入力操作部3は、手動ハンドル55と、ジョグボタン57と、軸選択スイッチ59とを備えている。また、数値制御装置1Lのロボット制御部41Lは、ロボット手動操作部415を備えている。また、数値制御装置1Lの補間処理部38は、手動可否判断部382Mを備えている。
手動ハンドル55は、ロボット60の軸方向の移動量を操作するためのハンドルである。手動ハンドル55は、手動パルスジェネレータである。手動ハンドル55は、操作に対応する移動量を制御演算部2Lに送る。この移動量は、記憶部34を介してロボット手動操作部415に送られる。
なお、手動ハンドル55は、工作機械100の軸方向の移動量を操作する際に用いられてもよい。すなわち、ユーザは、1つの手動ハンドル55で、ロボット60の操作および工作機械100の操作を行ってもよい。この場合、ユーザからの操作を受け付ける操作盤(後述する操作盤53)には、手動ハンドル55による手動操作対象を切り替えるための切替スイッチ(後述する切替スイッチ15)を配置しておく。
ジョグボタン57は、ロボット60の軸方向の移動量をジョグ操作するためのボタンである。ジョグボタン57は、操作に対応する操作情報を制御演算部2Lに送る。この操作情報は移動量に対応する情報であり、記憶部34を介してロボット手動操作部415に送られる。
軸選択スイッチ59は、ロボット60に対して手動操作する軸を選択するスイッチである。軸選択スイッチ59の例は、工作機械100における座標系で、X軸を指定するスイッチ、Y軸を指定するスイッチ、Z軸を指定するスイッチ、A軸を指定するスイッチ、B軸を指定するスイッチ、C軸を指定するスイッチである。軸選択スイッチ59は、押下またはタッチされた軸が何れの軸であるかを示す軸情報を、制御演算部2Lに送る。この軸情報は、記憶部34を介してロボット手動操作部415に送られる。
ここで、切替スイッチ15を備えた操作盤53の構成について説明する。図19は、実施の形態4にかかる数値制御装置が備える操作盤の構成例を示す図である。図19に示すように、操作盤53は、工作機械100の前面などに配置されている。また、工作機械100の前面には、表示部4および手動ハンドル55が配置されている。なお、図19では、ジョグボタン57、および軸選択スイッチ59の図示を省略している。
操作盤53には、手動ハンドル55による手動操作対象を切り替えるための切替スイッチ15が配置されている。切替スイッチ15は、手動操作対象をロボット60に切り替えるためのスイッチと、手動操作対象を工作機械100に切り替えるためのスイッチとを有している。切替スイッチ15が操作されると、切替スイッチ15は、操作に対応する手動操作対象を制御演算部2Lの解析処理部37に送る。
ロボット60または工作機械100が、手動操作可能な構成要素を複数有している場合、解析処理部37は、入力操作部3から送られてくる情報に基づいて、手動操作に対応する移動対象がロボット60の構成要素であるか工作機械100の構成要素であるかを解析する。この場合、ユーザは、入力操作部3に対し、手動操作するロボット60の構成要素を指定する操作、または手動操作する工作機械100の構成要素を指定する操作を実行する。
ロボット手動操作部415は、手動可否判断部421Rおよび移動データ送信部422を備えている。手動可否判断部421Rは、制御システムの状態(以下、システム状態という)に基づいて、ロボット60の手動操作の可否を判断する。すなわち、手動可否判断部421Rは、ロボット60、数値制御装置1L、および工作機械100の少なくとも1つの状態に基づいて、ロボット60の手動操作の可否を判断する。可否の判断には、数値制御装置1Lが持つ種々のデータが参照される。手動可否判断部421Rは、例えば、非常停止状態である場合、ロボットコントローラ50との通信が未接続である場合、またはロボット60の周辺の侵入禁止領域にユーザが侵入している場合に、手動操作不可と判断する。
移動データ送信部422は、軸選択スイッチ59で選択された軸情報と、解析処理部37が解析した移動量に基づいて移動指令を生成し、移動指令をロボットコントローラ50に送る。これにより、数値制御装置1Lは、ロボットコントローラ50を介して、ロボット60を操作することができる。解析処理部37が解析した移動量は、ジョグボタン57または手動ハンドル55から送られてくる情報に対応している。すなわち、解析処理部37が解析した移動量は、ジョグボタン57または手動ハンドル55への手動操作に対応している。
手動可否判断部382Mは、システム状態に基づいて、工作機械100の手動操作の可否を判断する。すなわち、手動可否判断部382Mは、ロボット60、数値制御装置1L、および工作機械100の少なくとも1つの状態に基づいて、工作機械100の手動操作の可否を判断する。可否の判断には、数値制御装置1Lが持つ種々のデータが参照される。手動可否判断部382Mは、例えば、非常停止状態である場合、または工作機械100の周辺の侵入禁止領域にユーザが侵入している場合に、手動操作不可と判断する。
ここで、手動操作が行われた場合の、干渉チェック処理について説明する。本実施の形態の解析処理部37は、切替スイッチ15によって切替えられた手動操作対象(移動対象)と、ジョグボタン57への操作に対応する操作情報を受け付ける。解析処理部37は、移動対象がロボット60である場合、受け付けた操作情報に基づいて移動量を算出し、移動量をロボット手動操作部415に送る。また、解析処理部37は、移動対象が工作機械100である場合、受け付けた操作情報に基づいて移動量を算出し、移動量を補間処理部38に送る。
ロボット手動操作部415は、移動量を受け付けると、移動量をロボット動作演算部852に送る。また、補間処理部38は、移動量を受け付けると、移動量を機械動作演算部851に送る。
ロボット動作演算部852は、ロボット手動操作部415から移動量を受け付けると、移動対象がロボット60であると判断し、移動量に基づいて、ロボット60の移動後の位置および形状を算出する。ロボット動作演算部852は、算出結果である、ロボット60の移動後の位置および形状を干渉チェック部853に送信する。
機械動作演算部851は、補間処理部38から移動量を受け付けると、移動対象が工作機械100であると判断し、移動量に基づいて、工作機械100の移動後の位置および形状を算出する。機械動作演算部851は、算出結果である、工作機械100の移動後の位置および形状を干渉チェック部853に送信する。
干渉チェック部853は、ロボット動作演算部852から移動後のロボット60の位置および形状を受け付けると、移動後のロボット60の位置および形状と、工作機械100の位置および形状とに基づいて、干渉をチェックする。この場合、干渉チェック部853は、干渉の有無を手動可否判断部421Rに送る。
干渉チェック部853は、機械動作演算部851から移動後の工作機械100の位置および形状を受け付けると、移動後の工作機械100の位置および形状と、ロボット60の位置および形状とに基づいて、干渉をチェックする。この場合、干渉チェック部853は、干渉の有無を手動可否判断部382Mに送る。
手動可否判断部421Rは、干渉がある場合は、手動操作不可と判断し、移動データ送信部422によるロボットコントローラ50へのデータ送信を禁止する。手動可否判断部421Rは、干渉がない場合は、システム状態に基づいて、移動データ送信部422によるロボットコントローラ50へのデータ送信を許可するか否かを判断する。
手動可否判断部382Mは、干渉がある場合は、手動操作不可と判断し、補間処理部38による加減速処理部39へのデータ送信を禁止する。手動可否判断部382Mは、干渉がない場合は、システム状態に基づいて、補間処理部38による加減速処理部39へのデータ送信を許可するかを判断する。干渉チェック部853は、干渉がある場合は、画面処理部31を介して表示部4に干渉アラームを表示させてもよい。
図20は、実施の形態4にかかる数値制御装置が備える表示部で表示される干渉アラームの例を示す図である。表示部4は、干渉アラームとして、「手動操作による干渉発生のため移動不可」といったメッセージを画面上に表示する。
ところで、手動操作がロボット60への手動操作であった場合、干渉回避処理部854は、ロボット60の姿勢を変えることで干渉を回避することが可能な場合がある。例えば、ユーザが、軸選択スイッチ59でロボット60の直線軸を指定して直線軸を移動させる場合、ロボット60の姿勢によっては、干渉を回避可能な場合がある。そのため、干渉チェック部853にて干渉があると判断された場合、干渉回避処理部854は、姿勢を変更することで干渉回避が可能か否かを判断する。干渉回避が可能な場合、干渉回避処理部854は、手動可否判断部421Rに手動操作可能であることを通知するとともに、姿勢を変更した移動データを手動可否判断部421Rに送信する。干渉回避処理部854は、干渉回避処理部804と同様の方法によって、ロボット60の姿勢を変更する移動データを算出する。
つぎに、数値制御装置1Lによる干渉回避の方法について説明する。図21は、実施の形態4にかかる数値制御装置によって実行される干渉回避の動作例を説明するための図である。数値制御装置1Lは、例えば、ロボット60の姿勢変更によって干渉を回避する。図21の左側に示すロボット60は、ロボットアーム21が搬送物7に衝突した状態を示し、図21の右側に示すロボット60は、ロボットアーム21が搬送物7に衝突ないようロボット60の軸の角度を変更した状態を示している。
ユーザが、ロボット60を手動で直交座標系の軸方向に対して移動させる指令を出している際に、干渉回避処理部854が、次の指令で干渉すると判断した場合、干渉回避処理部854は、姿勢を変えることによって干渉を回避できるか否かをチェックする。具体的には、干渉回避処理部854は、ロボットハンド22の先端位置および姿勢が姿勢変更の前後で変わらないよう、ロボット60の軸A1,A2,A3の角度を算出し、算出した角度の姿勢で干渉するか否かをチェックする。
ロボット60の軸のうち、台座23に接合されている第1のロボットアームの軸が軸A1であり、第1のロボットアームに接合されている第2のロボットアームの軸が軸A2であり、第2のロボットアームに接合されている第3のロボットアームの軸が軸A3である。
図21では、軸A1,A2の角度が変更された場合を示している。干渉回避処理部854は、軸A3の角度を変更しないことによって、ロボットハンド22の先端位置および姿勢を姿勢変更の前後で変わらないようにしつつ、干渉を回避できる姿勢を算出する。
干渉する場合、干渉回避処理部854は、軸A1,A2,A3の角度を再度算出する処理と、干渉するか否かをチェックする処理とを繰り返す。干渉しない軸A1,A2,A3の角度を算出できた場合のみ干渉回避が可能となる。
つぎに、数値制御装置1Lによる干渉チェックおよび干渉回避の処理手順について説明する。図22は、実施の形態4にかかる数値制御装置による干渉チェックおよび干渉回避の処理手順を示すフローチャートである。
数値制御装置1Lは、手動操作が行われた際に、工作機械100またはロボット60に対して手動操作に対応する実際の動作を実行する前に、干渉の有無を判断し、干渉が無い場合には、工作機械100またはロボット60に対して手動操作に対応する実際の動作を実行させる。
解析処理部37は、手動操作を解析する(ステップS310)。具体的には、解析処理部37は、切替スイッチ15から送られてくる情報に基づいて、手動操作に対応する移動対象がロボット60であるか工作機械100であるかを解析する。また、解析処理部37は、入力操作部3から送られてくる情報に基づいて、手動操作に対応する移動対象がロボット60の構成要素であるか工作機械100の構成要素であるかを解析する。また、解析処理部37は、ジョグボタン57または手動ハンドル55から送られてくる操作情報を解析する。
解析処理部37は、移動対象が工作機械100であるか否かを判断する。すなわち、解析処理部37は、手動操作が工作機械100の構成要素の移動に対応するか否かを判断する(ステップS320)。移動対象が工作機械100の構成要素であった場合(ステップS320、Yes)、解析処理部37は、記憶部34および補間処理部38を介して、機械動作演算部851に移動対象および移動量を送る。機械動作演算部851は、移動対象、移動量、機械モデル811、および工具データ813に基づいて、工作機械100の手動操作に応じた移動後の位置および形状を算出する。
干渉チェック部853は、ロボット60との干渉をチェックする(ステップS330)。すなわち、干渉チェック部853は、手動操作によって移動した場合の工作機械100が、ロボット60に干渉するか否かを判断する。具体的には、干渉チェック部853は、移動後の工作機械100の位置および形状と、ロボット60の位置および形状とに基づいて、工作機械100がロボット60に干渉するか否かを判断する。このとき、干渉チェック部853は、ロボット60の位置および形状を、ロボットモデル812および工具データ814に基づいて算出する。また、干渉チェック部853は、移動後の工作機械100の位置および形状を、機械モデル811、工具データ813、移動対象、および移動量に基づいて算出する。
干渉チェック部853は、干渉すると判断した場合には(ステップS340、Yes)、手動可否判断部382Mに工作機械100の移動不可を通知する(ステップS360)。また、干渉チェック部853は、工作機械100が備える軸を停止させ、干渉アラームを表示部4に表示させる。
干渉チェック部853は、干渉しないと判断した場合には(ステップS340、No)、手動可否判断部382Mに工作機械100の移動可能を通知する(ステップS350)。この場合、補間処理部38は、システム状態に異常が無ければ、移動対象および移動量に基づいて、工作機械100を制御するためのデータを生成し、加減速処理部39に送る。これにより、工作機械100が手動操作に従って制御される。
移動対象がロボット60の構成要素であった場合(ステップS320、No)、解析処理部37は、記憶部34およびロボット手動操作部415を介して、ロボット動作演算部852に移動対象および移動量を送る。ロボット動作演算部852は、移動対象、移動量、ロボットモデル812、および工具データ814に基づいて、ロボット60の移動後の位置および形状を算出する。
干渉チェック部853は、工作機械100との干渉をチェックする(ステップS370)。すなわち、干渉チェック部853は、手動操作によって移動した場合のロボット60が、工作機械100に干渉するか否かを判断する。具体的には、干渉チェック部853は、移動後のロボット60の位置および形状と、工作機械100の位置および形状とに基づいて、ロボット60が工作機械100に干渉するか否かを判断する。
干渉チェック部853は、干渉すると判断した場合には(ステップS380、Yes)、干渉回避処理部854にロボット60の移動不可を通知する。干渉回避処理部854は、ロボット60の姿勢変更による干渉回避動作を計算する(ステップS390)。干渉チェック部853は、干渉の回避が可能か否かを判断する(ステップS400)。干渉チェック部853が干渉の回避が不可能であると判断した場合(ステップS400、No)、干渉チェック部853は、手動可否判断部421Rにロボット60の移動不可を通知する(ステップS410)。また、干渉チェック部853は、ロボット60が備える軸を停止させ、干渉アラームを表示部4に表示させる。
ステップS400の処理において、干渉チェック部853が干渉の回避が可能であると判断した場合(ステップS400、Yes)、干渉チェック部853は、手動可否判断部421Rにロボット60の移動可能を通知する(ステップS420)。また、干渉チェック部853は、移動データ送信部422に干渉回避の動作指令を送る(ステップS430)。干渉回避の動作指令は、干渉を回避することができるロボット60への移動データを含んでいる。移動データ送信部422は、干渉回避の動作指令に基づいて、ロボット60に移動データを送る。これにより、ロボット60が手動操作に従って制御される。
ステップS380の処理において、干渉チェック部853は、干渉しないと判断した場合には(ステップS380、No)、手動可否判断部421Rにロボット60の移動可能を通知する(ステップS440)。ロボット制御部41は、移動対象および移動量を用いて、ロボット60を制御するためのデータを生成し、ロボットコントローラ50に送る。これにより、ロボット60が数値制御装置1Lによって制御される。
このように実施の形態4によれば、工作機械100またはロボット60への手動操作に対して、工作機械100とロボット60との間に干渉が発生するか否かを判断し、干渉する場合には、干渉回避の動作を実行するので、手動操作の際の干渉を回避することができる。
実施の形態5.
つぎに、図23を用いてこの発明の実施の形態5について説明する。実施の形態5では、機械学習装置が、干渉の有無を学習する。
図23は、実施の形態5にかかる数値制御装置の構成例を示す図である。図23の各構成要素のうち数値制御装置1Yと同一機能を達成する構成要素については同一符号を付しており、重複する説明は省略する。
数値制御装置1Mは、数値制御装置1Yと比較して、制御演算部2Yの代わりに制御演算部2Mを備えている。制御演算部2Mは、制御演算部2Yが備える構成要素に加えて、機械学習装置70を備えている。
機械学習装置70は、シミュレーション制御部80Yと、解析処理部37とに接続されている。機械学習装置70は、シミュレーション位置情報(r)と、NCプログラム情報(r)と、干渉情報(r)とを用いて、工作機械100とロボット60の間の干渉の有無を学習する。すなわち、機械学習装置70は、干渉の有無の推測処理を学習する。
シミュレーション位置情報(r)は、シミュレーション制御部80Yが、干渉の有無を判定する際に、シミュレーション用データ346を用いて工作機械100およびロボット60の位置を算出した位置データである。シミュレーション制御部80Yは、干渉の有無を判定する際には、シミュレーション位置情報(r)を画面処理部31に送り、干渉の有無を学習する際には、シミュレーション位置情報(r)を機械学習装置70に送る。
NCプログラム情報(r)は、干渉の有無が判定される際に、解析処理部37が用いたNCプログラムの情報である。干渉情報(r)は、工作機械100がロボット60に衝突するかを示す衝突情報である。干渉情報(r)は、干渉(衝突)の有無を示す情報と、干渉の位置を示す情報と、干渉する構成要素(干渉対象)を示す情報とを含んでいる。
機械学習装置70は、状態観測部71と、データ取得部72と、学習部73とを含んでいる。状態観測部71は、シミュレーション位置情報(r)をシミュレーション制御部80Yから取得し、NCプログラム情報(r)を解析処理部37から取得する。状態観測部71は、シミュレーション位置情報(r)およびNCプログラム情報(r)を状態情報(i)として観測する。状態観測部71は、データ観測した結果である状態情報(i)を学習部73に出力する。データ取得部72は、干渉チェック部803から干渉情報(r)を取得する。データ取得部72は、干渉情報(r)を学習部73に出力する。
学習部73は、状態情報(i)および干渉情報(r)の組み合わせに基づいて作成されるデータセットに基づいて、干渉の有無を推測した情報である干渉推測情報(n)を学習する。ここで、状態変数である状態情報(i)は、シミュレーション位置情報(r)およびNCプログラム情報(r)を互いに関連付けたデータである。
なお、機械学習装置70は、数値制御装置1Mに設けられるものに限られない。機械学習装置70は、数値制御装置1Mの外部に設けられてもよい。機械学習装置70は、ネットワークを介して数値制御装置1Mに接続可能な装置に設けられてもよい。すなわち、機械学習装置70は、ネットワークを介して数値制御装置1Mに接続された別個のコンポーネントであってもよい。また、機械学習装置70は、クラウドサーバ上に存在していてもよい。
学習部73は、例えば、ニューラルネットワークモデルに従って、いわゆる教師あり学習により、シミュレーション位置情報(r)およびNCプログラム情報(r)を含んだ状態情報(i)と、教師データである干渉情報(r)とから干渉推測情報(n)を学習する。ここで、教師あり学習とは、ある入力と結果のデータの組を大量に学習装置に与えることで、それらのデータセットにある特徴を学習し、入力から結果を推定するモデルをいう。
ニューラルネットワークは、複数のニューロンからなる入力層、複数のニューロンからなる中間層(隠れ層)、および複数のニューロンからなる出力層で構成される。中間層は、1層でもよいし2層以上でもよい。
例えば、3層のニューラルネットワークであれば、複数の入力が入力層に入力されると、その値に重みを掛けて中間層に入力され、その結果にさらに重みを掛けて出力層から出力される。この出力結果は、各々の重みの値によって変わる。
本実施の形態のニューラルネットワークは、状態情報(i)および干渉情報(r)の組み合わせに基づいて作成されるデータセットに従って、いわゆる教師あり学習により、干渉推測情報(n)を学習結果(推測値)として出力する。
すなわち、ニューラルネットワークは、入力層にシミュレーション位置情報(r)とNCプログラム情報(r)とを含んだ状態情報(i)を入力して出力層から出力された結果が、干渉情報(r)に近付くよう、重みを調整することで、干渉推測情報(n)を学習する。
また、ニューラルネットワークは、いわゆる教師なし学習によって、干渉推測情報(n)を学習することもできる。教師なし学習とは、入力データのみを大量に機械学習装置70に与えることで、入力データがどのような分布をしているか学習し、対応する教師データ(出力データ)を与えなくても、入力データに対して圧縮、分類、整形等を行い学習する手法である。教師なし学習では、データセットにある特徴を似たもの同士にクラスタリングすること等ができる。教師なし学習では、このクラスタリングの結果を使って、何らかの基準を設けて、この基準を最適にするような出力の割り当てを行うことで、出力の予測を実現することができる。
また、機械学習装置70は、複数の数値制御装置に対して作成されるデータセットに従って、干渉推測情報(n)を学習結果(推測値)として出力してもよい。なお、機械学習装置70は、同一の現場で使用される複数の数値制御装置からデータセットを取得してもよいし、或いは、異なる現場で独立して稼働する複数の数値制御装置から収集されるデータセットを利用して干渉推測情報(n)を学習してもよい。さらに、機械学習装置70は、データセットを収集する数値制御装置を途中で対象に追加し、或いは、逆に対象から切り離すことも可能である。また、ある数値制御装置に関して干渉推測情報(n)を学習した機械学習装置70を、これとは別の数値制御装置に取り付け、当該別の数値制御装置に関して干渉推測情報(n)を再学習して更新するようにしてもよい。
また、機械学習装置70に用いられる学習アルゴリズムとしては、特徴量そのものの抽出を学習する、深層学習(Deep Learning)を用いることもできる。また、学習部73は、他の公知の方法、例えば遺伝的プログラミング、機能論理プログラミング、サポートベクターマシンなどに従って機械学習を実行してもよい。
機械学習装置70は、推測した干渉推測情報(n)をシミュレーション制御部80Yに出力する。シミュレーション制御部80Yは、干渉が発生する直前ではなく、干渉の発生が推測されるNCプログラムのブロックの前のブロックエンドで工作機械100を停止させる。干渉が発生する直前で工作機械100またはロボット60を停止した場合、工作機械100またはロボット60の移動速度によっては、停止に時間がかかり、干渉を起こす場合があるからである。本実施の形態では、シミュレーション制御部80Yが、干渉の発生が推測されるNCプログラムのブロックの前のブロックエンドで工作機械100を停止させるので、干渉を防ぐことができる。
このように実施の形態5では、機械学習装置70が、干渉情報(r)と、シミュレーション位置情報(r)と、NCプログラム情報(r)とを互いに関連付けたデータセットに基づいて、干渉推測情報(n)を学習している。したがって、機械学習装置70は、状態情報(i)に基づいて、干渉推測情報(n)を算出することが可能となる。
実施の形態6.
つぎに、図23を用いてこの発明の実施の形態6について説明する。実施の形態6では、実施の形態4で説明した制御演算部2Lの動作に機械学習装置70を適用する。実施の形態6では、実施の形態5と比較して、状態情報(i)に干渉情報(r)が加わり、教師データに干渉情報(r)ではなく干渉回避プログラム情報(r)を用いる。また、実施の形態6では、機械学習装置70が干渉推測情報(n)ではなく干渉回避推測情報(n)を学習する。
干渉回避プログラム情報(r)は、干渉を回避する際に、干渉回避処理部804が用いたNCプログラムの情報である。干渉回避推測情報(n)は、干渉を回避するための指令を推測した情報である。
機械学習装置70は、シミュレーション位置情報(r)と、NCプログラム情報(r)と、干渉情報(r)とを用いて、干渉回避推測情報(n)を学習する、すなわち、機械学習装置70は、干渉回避に用いるNCプログラムの指令を推測する。
本実施の形態の状態観測部71は、シミュレーション位置情報(r)、NCプログラム情報(r)、および干渉情報(r)を状態情報(i)として観測する。状態観測部71は、データ観測した結果である状態情報(i)を学習部73に出力する。
データ取得部72は、干渉回避処理部804から干渉回避プログラム情報(r)を取得する。データ取得部72は、干渉回避プログラム情報(r)を学習部73に出力する。干渉回避処理部804は、干渉を回避する際には、干渉回避プログラム情報(r)をロボット制御部41に送り、干渉の回避を学習する際には、干渉回避プログラム情報(r)を機械学習装置70に送る。
本実施の形態では、状態観測部71は、シミュレーション位置情報(r)、NCプログラム情報(r)、および干渉情報(r)を状態情報(i)として観測する。
また、本実施の形態の学習部73は、状態情報(i)および教師データである干渉回避プログラム情報(r)の組み合わせに基づいて作成されるデータセットに基づいて、干渉回避推測情報(n)を学習する。ここで、データセットは、状態変数である状態情報(i)および干渉回避プログラム情報(r)を互いに関連付けたデータである。
本実施の形態でも学習部73は、例えば、ニューラルネットワークモデルに従って、いわゆる教師あり学習により、状態情報(i)と干渉回避プログラム情報(r)を互いに関連付けたデータセットから干渉回避推測情報(n)を学習する。
すなわち、ニューラルネットワークは、入力層にシミュレーション位置情報(r)とNCプログラム情報(r)と干渉情報(r)と含んだ状態情報(i)を入力して出力層から出力された結果が、干渉回避プログラム情報(r)に近付くよう、重みを調整することで、干渉回避推測情報(n)を学習する。本実施の形態のニューラルネットワークは、いわゆる教師あり学習により、干渉回避推測情報(n)を学習結果(推測した指令)として出力する。
また、本実施の形態のニューラルネットワークは、いわゆる教師なし学習によって、干渉回避推測情報(n)を学習することもできる。
また、機械学習装置70は、複数の数値制御装置に対して作成されるデータセットに従って、干渉回避推測情報(n)を学習結果(推測値)として出力してもよい。また、ある数値制御装置に関して干渉回避推測情報(n)を学習した機械学習装置70を、これとは別の数値制御装置に取り付け、当該別の数値制御装置に関して干渉回避推測情報(n)を再学習して更新するようにしてもよい。
また、干渉回避制御部81は、干渉が発生する直前ではなく、干渉の発生が推測されるNCプログラムのブロックの前のブロックに干渉回避推測情報に対応する指令を挿入する。干渉回避推測情報に対応する指令は、干渉を回避させることができるNCプログラムの指令である。これにより、干渉回避制御部81は、工作機械100とロボット60との間の干渉を事前に回避することができる。
このように実施の形態6では、機械学習装置70が、干渉情報(r)と、シミュレーション位置情報(r)と、NCプログラム情報(r)と、干渉回避プログラム情報(r)とを互いに関連付けたデータセットに基づいて、干渉回避推測情報(n)を学習している。したがって、機械学習装置70は、状態情報(i)に基づいて、干渉回避プログラム情報(n)を算出することが可能となる。
なお、実施の形態1から6の内容を組み合わせてもよい。例えば、数値制御装置1X〜1Zの少なくとも1つが、ロボット手動操作部415を備えていてもよい。また、数値制御装置1X〜1Zの少なくとも1つが、機械学習装置70を備えていてもよい。
ここで、制御演算部2X,2Y,2Z,2L,2Mのハードウェア構成について説明する。図24は、実施の形態にかかる数値制御装置が備える制御演算部のハードウェア構成例を示す図である。なお、制御演算部2X,2Y,2Z,2L,2Mは、同様のハードウェア構成を有しているので、ここでは制御演算部2Xのハードウェア構成について説明する。
制御演算部2Xは、図24に示したプロセッサ301、メモリ302、およびインタフェース回路303により実現することができる。プロセッサ301の例は、CPU(Central Processing Unit、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、DSP(Digital Signal Processor)ともいう)またはシステムLSI(Large Scale Integration)である。メモリ302の例は、RAM(Random Access Memory)、ROM(Read Only Memory)である。
制御演算部2Xは、プロセッサ301が、メモリ302で記憶されている、制御演算部2Xの動作を実行するためのプログラムを読み出して実行することにより実現される。また、このプログラムは、制御演算部2Xの手順または方法をコンピュータに実行させるものであるともいえる。メモリ302は、プロセッサ301が各種処理を実行する際の一時メモリにも使用される。
なお、制御演算部2Xの機能について、一部を専用のハードウェアで実現し、一部をソフトウェアまたはファームウェアで実現するようにしてもよい。また、機械学習装置70を、図24に示したハードウェアで実現してもよい。
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。