(57)【特許請求の範囲】
【請求項１】
加工プログラムに基づいて工具経路を演算し、工具経路上の単位時間毎の補間点群である工具移動指令を生成する指令値生成装置において、
前記加工プログラムを複数の実行単位に分割して分割加工プログラムを生成する分割部と、
複数の演算装置を有し、前記実行単位毎に前記分割加工プログラムを並列して実行し、前記実行単位毎の工具経路上の補間点群である分割指令を生成する並列演算部と、
前記実行単位毎の前記分割指令から工具移動指令を生成する指令値生成部とを備え、
前記加工プログラムの開始から終了へ向かう方向を後、前記加工プログラムの終了から開始へ向かう方向を前とするとき、
前記分割部は、少なくとも１つの分割点前後の前記分割加工プログラムにおいて、前記分割点より前にある１つの前記分割加工プログラムの終了部分、及び前記分割点より後にある１つの前記分割加工プログラムの開始部分に対して、予め設定された加速度に基づいて指令速度に到達するまでに移動する加速距離を演算し、前記分割加工プログラムの前記分割点におけるオーバラップ量が前記加速距離以上となるように演算し、前記分割加工プログラムの開始及び終了部分を前記オーバラップ量だけ互いにオーバラップさせることを特徴とする指令値生成装置。
【請求項２】
前記指令値生成部は、前記実行単位毎の前記分割指令からオーバラップした部分を削除することを特徴とする請求項１に記載の指令値生成装置。
【請求項３】
前記分割部は、前記加工プログラムを前記並列演算部の演算装置の設置数以上の実行単位に分割することを特徴とする請求項１に記載の指令値生成装置。
【請求項４】
前記分割部は、前記実行単位毎の前記分割指令の演算時間又は前記加工プログラムの前記実行単位毎の経路長を等しくすることを特徴とする請求項１に記載の指令値生成装置。
【請求項５】
前記工具移動指令に基づいて被加工物の加工形状をシミュレーションする加工シミュレーション部を備えることを特徴とする請求項１に記載の指令値生成装置。
【請求項６】
予め設定されたサーボモデルに基づいて、前記工具移動指令からサーボ応答を推定するサーボシミュレーション部を備えることを特徴とする請求項１に記載の指令値生成装置。
【請求項７】
前記並列演算部は、マルチコアＣＰＵ、複数のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されていることを特徴とする請求項１に記載の指令値生成装置。
【請求項８】
前記指令値生成部は、前記分割指令が切り替わる箇所で生じた補間点間隔を修正するために、補間点の位置を分割指令の経路上で調整することを特徴とする請求項１に記載の指令値生成装置。
【請求項９】
前記指令値生成部は、前記実行単位毎に並列して前記分割指令からオーバラップした部分を削除することを特徴とする請求項１に記載の指令値生成装置。
【請求項１０】
前記並列演算部は、前記分割指令を細かい単位で複数回に分けて出力することを特徴とする請求項１に記載の指令値生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の演算装置を有し、複数の演算装置を並列実行することで工具移動指令を生成する指令値生成装置に関する。
【背景技術】
【０００２】
従来、工作機械を用いて被加工物を加工する場合には、ＣＡＭ（Computer  Aided  Manufacturing）で加工プログラムを作成することが一般的である。加工プログラムには加工形状の情報、工具の送り速度及び工具の回転数が記述されている。指令値生成装置は、この加工プログラムを読み込み、座標変換、工具長補正、工具径補正及び機械誤差補正といった補正を行うことで工具経路の演算を行う。更に、指令値生成装置は、加減速をはじめとする処理を行い、単位時間毎の工具経路上の指令点である補間点の演算を行う。以下の説明では、単位時間毎の工具経路上の指令点を補間点と称呼し、一連の補間点群を工具移動指令と称呼する。多くの場合、指令値生成装置には数値制御装置（ＮＣ：Numerical  Control）が用いられる。加工形状が自由曲面を有する場合には、連続した複数の微小な線分で自由曲面を近似した加工プログラムを生成する。加工プログラムを生成する際には、自由曲面をできるだけ正確に表現するために加工プログラムの線分長を短くする必要があるため、加工プログラムの線分長は短くなる傾向にある。加工プログラムの線分長が短くなると、指令値生成装置で処理する線分数が増加するため、工具移動指令の生成に要する時間が増大する。この問題は、自由曲面を有する金型加工及び座標変換を伴う５軸加工において特に顕著である。【０００３】
そこで、複数の演算装置により並列して工具移動指令の演算を行うことで高速に工具移動指令を生成する方法が検討されている。従来技術の一例である特許文献１には、加工工程毎に加工プログラムを分割し、複数のプロセッサコアにより並列して工具移動指令の演算を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１４−５２２５２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の技術によれば、加工が一旦中断する箇所でしか加工プログラムを分割することができず、複数の演算装置の処理量を均等に分散することができない。そのため、複数の演算装置の処理性能を活用して工具移動指令を高速に生成することができない、という問題があった。【０００６】
本発明は、上記に鑑みてなされたものであって、複数の演算装置を活用して、従来よりも高速に工具移動指令を生成する指令値生成装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、加工プログラムに基づいて工具経路を演算し、工具経路上の単位時間毎の補間点群である工具移動指令を生成する指令値生成装置において、前記加工プログラムを複数の実行単位に分割して分割加工プログラムを生成する分割部と、複数の演算装置を有し、前記実行単位毎に前記分割加工プログラムを並列して実行し、前記実行単位毎の工具経路上の補間点群である分割指令を生成する並列演算部と、前記実行単位毎の前記分割指令から工具移動指令を生成する指令値生成部とを備え、前記加工プログラムの開始から終了へ向かう方向を後、前記加工プログラムの終了から開始へ向かう方向を前とするとき、前記分割部は、少なくとも１つの分割点前後の前記分割加工プログラムにおいて、前記分割点より前にある１つの前記分割加工プログラムの終了部分、及び前記分割点より後にある１つの前記分割加工プログラムの開始部分に対して、予め設定された加速度に基づいて指令速度に到達するまでに移動する加速距離を演算し、前記分割加工プログラムの前記分割点におけるオーバラップ量が前記加速距離以上となるように演算し、前記分割加工プログラムの開始及び終了部分を前記オーバラップ量だけ互いにオーバラップさせることを特徴とする。
【発明の効果】
【０００８】
本発明によれば、複数の演算装置を活用して、従来よりも高速に工具移動指令を生成することができるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る指令値生成装置の構成を示す図
【図２】実施の形態１において、図１に示す指令値生成装置におけるデータフローを示す第１図
【図３】実施の形態１において、図１に示す指令値生成装置におけるデータフローを示す第２図
【図４】実施の形態１において、図１に示す分割部の処理フローを示す図
【図５】実施の形態１において、時間を横軸とし、速度を縦軸とした、オーバラップさせない場合の実行単位１及び実行単位２の分割点の前後における挙動を示す図
【図６】実施の形態１において、時間を横軸とし、速度を縦軸とした、オーバラップさせる場合の実行単位１及び実行単位２の分割点の前後における挙動を示す図
【図７】実施の形態１において、時間を横軸とし、速度を縦軸とした、加速距離Ｌａを示す図
【図８】実施の形態１において、時間を横軸とし、速度を縦軸とした、オーバラップ量Ｌｏを示す図
【図９】実施の形態１において、加工プログラムにおける工具の移動経路の一例を示す図
【図１０】実施の形態１において、オーバラップ量を考慮した、加工プログラムにおける工具の移動経路の一例を示す第１図
【図１１】実施の形態１において、オーバラップ量を考慮した、加工プログラムにおける工具の移動経路の一例を示す第２図
【図１２】実施の形態１において、加工プログラムの一例を示す図
【図１３】実施の形態１において、分割加工プログラム１を示す図
【図１４】実施の形態１において、加工モードに関する指令を追記した分割加工プログラム２を示す図
【図１５】実施の形態１において、加工モードに関する指令を追記した分割加工プログラム３を示す図
【図１６】実施の形態１において、内回りが生じる、加工プログラムにおける工具の移動経路の一例を示す第１図
【図１７】実施の形態１において、内回りが生じる、加工プログラムにおける工具の移動経路の一例を示す第２図
【図１８】実施の形態１において、図１に示す並列演算部における分割加工プログラムの実行タイミングと、図１に示す指令値生成部における一連の工具移動指令の生成タイミングとを示すタイミングチャート
【図１９】実施の形態１において、分割加工プログラム１及び分割加工プログラム２と、分割指令１及び分割指令２の一例を示す図
【図２０】実施の形態１において、分割指令が切り替わる点における補間点の間隔の一例を示す図
【図２１】実施の形態１において、分割指令が切り替わる点において調整された補間点の間隔の一例を示す図
【図２２】実施の形態１において、加工プログラム形状の一例を示す第１図
【図２３】実施の形態１において、図２２の加工プログラム形状の実行時について、時間を横軸とし、速度を縦軸とし、Ｘ軸速度及びＹ軸速度を示す図
【図２４】実施の形態１において、図２２の加工プログラム形状の実行時について、生成される工具移動指令の一例を示す図
【図２５】実施の形態１において、図２２の加工プログラム形状の実行時における速度波形と、工具経路とを示す図
【図２６】実施の形態１において、図２２の加工プログラム形状の実行時における工具移動指令の一例を示す図
【図２７】実施の形態１において、加工プログラム形状の一例を示す第２図
【図２８】実施の形態１において、図２７の加工プログラム形状の実行時について、時間を横軸とし、速度を縦軸とし、Ｘ軸速度及びＹ軸速度を示す図
【図２９】実施の形態１において、図２７の加工プログラム形状の実行時について、生成される工具移動指令の一例を示す図
【図３０】実施の形態１において、図２７の加工プログラム形状の実行時における速度波形と、工具経路とを示す図
【図３１】実施の形態１において、図２７の加工プログラム形状の実行時における工具移動指令の一例を示す図
【図３２】実施の形態２に係る指令値生成装置の構成を示す図
【図３３】実施の形態２における図３２に示す並列演算部における分割加工プログラムの実行タイミングと、図３２に示す指令値生成部における一連の工具移動指令の生成タイミングとを示すタイミングチャート
【図３４】実施の形態３に係る指令値生成装置の構成を示す図
【図３５】実施の形態１における図１に示す演算装置における分割加工プログラムの実行タイミングと、図１に示す指令値生成部における一連の工具移動指令の生成タイミングとを示すタイミングチャート
【図３６】実施の形態３における図３４に示す演算装置における分割加工プログラムの実行タイミングと、図３４に示す指令値生成部における一連の工具移動指令の生成タイミングとを示すタイミングチャート
【図３７】実施の形態３における図３４に示す指令値生成装置におけるデータフローを示す第１図
【図３８】実施の形態３における図３４に示す指令値生成装置におけるデータフローを示す第２図
【発明を実施するための形態】
【００１０】
以下に、本発明の実施の形態に係る指令値生成装置を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１１】
実施の形態１．
図１は、本発明の実施の形態１に係る指令値生成装置の構成を示す図である。図１に示す指令値生成装置１００は、図示しないＮＣ工作機械を制御する数値制御装置である。図１に示す指令値生成装置１００は、入力された加工プログラム１０に従って、工具経路上の単位時間毎の補間点群である工具移動指令１１を出力することで、ＮＣ工作機械の被加工物に対する工具の移動を数値制御する。
【００１２】
指令値生成装置１００は、分割部１１０、並列演算部１２０及び指令値生成部１３０を備える。分割部１１０は、加工プログラム１０を実行単位に分割して分割加工プログラムを生成する。並列演算部１２０は、実行単位毎の加工プログラムに従って実行単位毎の工具移動指令である分割指令を生成する。指令値生成部１３０は、分割指令から一連の工具移動指令１１を生成する。
【００１３】
ここで、並列演算部１２０には演算装置１２１、演算装置１２２及び演算装置１２３が設けられている。並列演算部１２０は、マルチコアＣＰＵ（Central  Processing  Unit）、複数のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されている。なお、通信回線には、ローカルエリアネットワーク及びインターネットを例示することができる。また、図１において、並列演算部１２０は３つの演算装置を備えるが、本発明はこれに限定されず、並列演算部１２０が備える演算装置の設置数は１つ以上であればよい。並列演算部１２０が備える演算装置の設置数を多くすると、工具移動指令１１を高速に生成することができるため、高速化の目標値に応じて演算装置の設置数を決めればよい。
【００１４】
分割部１１０は、入力された加工プログラム１０を複数の実行単位に分割し、実行単位毎に分割加工プログラムを並列演算部１２０に出力する。
【００１５】
並列演算部１２０は、実行単位毎に分割加工プログラムを演算装置１２１，１２２，１２３に割り振る。演算装置１２１、演算装置１２２及び演算装置１２３は、加減速及び座標変換をはじめとする処理を行い、実行単位毎の工具の移動指令である分割指令を順次生成して指令値生成部１３０に出力する。ここで、演算装置１２１、演算装置１２２及び演算装置１２３は、並列実行されており、１つの実行単位における分割指令の生成が完了すると、次の実行単位における分割指令の生成を開始し、未処理の実行単位がなくなるまで処理を繰り返す。
【００１６】
指令値生成部１３０は、実行単位毎の分割指令から一連の工具移動指令１１を生成して出力する。なお、指令値生成部１３０は、単一のＣＰＵ、単一のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されている。又は、指令値生成部１３０は、並列演算部１２０と同様に、マルチコアＣＰＵ、複数のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されていてもよい。
【００１７】
次に、並列演算の実行順序について更に詳細に説明する。図２は、実施の形態１において、図１に示す指令値生成装置１００におけるデータフローを示す第１図である。図２は、並列演算部１２０の初回実行時のデータフローを示している。
【００１８】
図３は、実施の形態１において、図１に示す指令値生成装置１００におけるデータフローを示す第２図である。図３は、並列演算部１２０の初回実行が完了し、次の実行単位における加工プログラムの実行時のデータフローを示している。なお、図２及び図３では、分割部１１０は、加工プログラム１０を６個の実行単位、すなわち実行単位１、実行単位２、実行単位３、実行単位４、実行単位５及び実行単位６に分割しているが、本発明はこれに限定されず、分割数は適宜設定することができる。
【００１９】
図２に示すように、分割部１１０が加工プログラム１０を実行単位１、実行単位２、実行単位３、実行単位４、実行単位５及び実行単位６に分割した場合、並列演算部１２０は３個の演算装置を備えるため、並列演算部１２０は、実行単位１、実行単位２、実行単位３を並列実行して分割指令１、分割指令２及び分割指令３を生成する。そして、指令値生成部１３０は、分割指令１、分割指令２及び分割指令３から実行単位１、実行単位２及び実行単位３に対する工具移動指令を生成する。
【００２０】
図３に示すように、並列演算部１２０が実行単位１から実行単位３の実行を完了すると、並列演算部１２０は、次の実行単位である実行単位４から実行単位６を実行し、分割指令４から分割指令６を生成する。そして、指令値生成部１３０は、実行単位４から６に対する工具移動指令を生成し、実行単位１から実行単位３に対する工具移動指令と併せて工具移動指令１１を生成して出力する。
【００２１】
なお、未実行の実行単位がある場合には、未実行の実行単位がなくなるまで同様の処理を繰り返す。また、ここで、分割指令１は実行単位１を実行するときの分割指令であり、これは、分割指令２，３，４，５，６についても同様である。
【００２２】
次に、各構成要素の処理内容について詳細に説明する。図４は、実施の形態１において、図１に示す分割部１１０の処理フローを示す図である。まず、分割部１１０は、処理をスタートし、分割数Ｎを決定する（Ｓ１）。ここで、分割数Ｎは、並列演算部１２０が備える演算装置の設置数以上とするが、加工プログラムの行数が少ない場合には分割数Ｎを演算装置の設置数未満としてもよい。実施の形態１では、一例として分割数Ｎ＝６としている。
【００２３】
次に、分割部１１０は、加工プログラム１０を分割する分割点を決定する（Ｓ２）。加工プログラム１０をＮ個の実行単位に分割する場合には、全ての実行単位の並列演算部１２０での演算時間を可能な限り均一にする。加工プログラム１０の１ブロックあたりの演算時間Ｔ（ｉ）はブロックの長さＬ（ｉ）を指令速度Ｆ（ｉ）で割ることにより求められる。従って、加工プログラム１０の全体の演算時間Ｔは下記の式（１）に示すように、１ブロックあたりの演算時間Ｔ（ｉ）の全ブロックの総和で表わされる。
【００２４】
【数１】
0006548830.tif 000002
【００２５】
ここで、上記の式（１）中のＭは、加工プログラム１０のブロック数、すなわち加工プログラム１０の行数である。つまり、実行単位１つあたりの演算時間が可能な限り均一となるようにＴ／Ｎとなる点を分割点とする。ここで、分割点は加工プログラムのブロック終点と一致しないことが多い。しかしながら、分割点は必ずしもブロック終点に一致する必要はないため、上記の式（１）で演算した点を分割点としてもよいし、上記の式（１）で演算した点に最近接のブロック終点を分割点としてもよい。
【００２６】
なお、上記の式（１）では、１ブロックあたりの演算時間Ｔ（ｉ）は、ブロックの長さＬ（ｉ）と指令速度Ｆ（ｉ）とによって演算されているが、更にパラメータで設定されている機械の許容加速度を用いて加減速及びクランプ速度の影響も考慮して演算時間Ｔ（ｉ）を演算することで、分割点を決定してもよい。また、実行単位１つあたりの経路長が可能な限り均一となるように全ブロックの長さの総和Ｌを分割数Ｎで除算した長さとなる点を分割点としてもよい。
【００２７】
次に、分割部１１０は、実行単位に分割する際のオーバラップ量Ｌｏを計算する（Ｓ３）。図５は、実施の形態１において、時間を横軸とし、速度を縦軸とした、オーバラップさせない場合の実行単位１及び実行単位２の分割点の前後における挙動を示す図である。図５に示すように、分割点では速度ゼロまで減速するため、分割点の前後において、分割した場合の工具移動指令の経路と分割しなかった場合の工具移動指令の経路とが異なってしまう。図６は、実施の形態１において、時間を横軸とし、速度を縦軸とした、オーバラップさせる場合の実行単位１及び実行単位２の分割点の前後における挙動を示す図である。そこで、分割部１１０は、図６に示すように、分割単位をオーバラップさせることで、分割点における減速をなくし、分割した場合と分割しなかった場合とで、同一の工具移動指令を生成する。そのため、オーバラップ量Ｌｏは、速度ゼロから指令速度Ｆに到達するまでに移動する距離、すなわち加速距離Ｌａ以上とすればよい。
【００２８】
図７は、実施の形態１において、時間を横軸とし、速度を縦軸とした、加速距離Ｌａを示す図である。図８は、実施の形態１において、時間を横軸とし、速度を縦軸とした、オーバラップ量Ｌｏを示す図である。図７及び図８において、加速度Ａで指令速度Ｆまで加速し、更に時定数Ｔｓの移動平均フィルタにより滑らかな速度波形を生成する場合には、加速距離Ｌａは、時刻０から時刻（Ｆ／Ａ＋Ｔｓ）までに移動する距離である。図８に示すように、オーバラップ量Ｌｏは、加速に必要な加速距離Ｌａ以上にするため、加速度Ａで指令速度Ｆまで加速した後に、指令速度Ｆで移動平均フィルタ時定数Ｔｓ分だけ移動したときの距離とする。すなわち、オーバラップ量Ｌｏは、図８に示す台形の面積であり、下記の式（２）により演算することができる。この台形の上辺の長さはＴｓであり、下辺の長さは（Ｆ／Ａ＋Ｔｓ）であり、高さはＦである。
【００２９】
【数２】
0006548830.tif 000003
【００３０】
次に、分割部１１０は、Ｓ２で決定した分割点で加工プログラム１０を実行単位に分割する（Ｓ４）。ここで、加工プログラム１０の分割の際に、Ｓ３で演算したオーバラップ量Ｌｏだけオーバラップさせる。
【００３１】
図９は、実施の形態１において、加工プログラム１０における工具の移動経路の一例を示す図である。図９においては、分割点１で２つの実行単位、実行単位１及び実行単位２に分割されている。
【００３２】
図１０は、実施の形態１において、オーバラップ量Ｌｏを考慮した、加工プログラムにおける工具の移動経路の一例を示す第１図である。図１０に示すように、実行単位１の始点は「加工プログラムの始点」であるが、実行単位１の終点は「分割点１からオーバラップ量Ｌｏだけ終点側に移動した点」である。
【００３３】
図１１は、実施の形態１において、オーバラップ量Ｌｏを考慮した、加工プログラムにおける工具の移動経路の一例を示す第２図である。図１１に示すように、実行単位２の始点は「分割点１からオーバラップ量Ｌｏだけ始点側に移動した点」であり、実行単位２の終点は「加工プログラムの終点」である。
【００３４】
なお、図９から図１１では、説明を簡単にするために、分割点はブロック終点と一致させているが、分割点は、必ずしもブロック終点と一致する必要はなく、ブロックの途中であってもよい。
【００３５】
また、実行単位の始点及び終点もブロックの途中であってもよいし、前述の方法で求めた始点又は終点に最近接のブロック終点を改めて実行単位の始点又は終点としてもよい。
【００３６】
また、図９から図１１では、分割点は１点のみ記載されているが、分割点が複数存在する場合にも同様の方法で分割することができる。
【００３７】
ここで、実行単位への具体的な分割方法について説明する。実施の形態１においては、加工プログラム１０を分割して新たに分割加工プログラムを生成することで実行単位に分割する。ただし、必ずしも分割加工プログラムを生成することを要しない。一例として、加工プログラム１０のブロック番号である加工プログラムの１行毎のシリアル番号を指定することで実行単位に分割してもよいし、加工プログラムの分割点に分割の目印となる指令であるＧコード又はＭコードを挿入してもよい。
【００３８】
次に、分割部１１０は、分割加工プログラムの先頭に加工モード指令を追記する（Ｓ５）。
【００３９】
図１２は、実施の形態１において、加工プログラムの一例を示す図である。図１２に示す加工プログラムには、加工を行うための座標値が１ブロック、すなわち１行毎に記載されている。その他、指令速度であるＦ指令、早送りであるＧ０、切削モードであるＧ１及び工具長補正であるＧ４３といった加工モードに関する指令も加工プログラムに記載されている。図１２に示す加工プログラムでは、加工プログラムの先頭で加工モードに関する指令が記述されており、その後、加工を行うための座標値が記述されている。この座標値群を座標値群１と称呼する。更にその後、再度加工モードに関する指令があり、加工を行うための座標値が記述されている。この座標値群を座標値群２と称呼する。
【００４０】
ここで、座標値群１の途中に分割点１が存在し、座標値群２の途中に分割点２が存在する場合の分割加工プログラムについて説明する。この場合には、３つの分割加工プログラム、すなわち加工プログラムの先頭から分割点１までの分割加工プログラム１と、分割点１から分割点２までの分割加工プログラム２と、分割点２から加工プログラム末尾までの分割加工プログラム３とが生成される。ただし、各分割加工プログラムにはオーバラップを付加する。
【００４１】
図１３は、実施の形態１において、分割加工プログラム１を示す図である。図１３に示す分割加工プログラム１は、分割点１にオーバラップが付加されて分割されたものである。ここで、分割前の加工プログラムの先頭で加工モードに関する指令が記述されているため、分割加工プログラム１には加工モードに関する指令を追記する必要はない。
【００４２】
図１４は、実施の形態１において、加工モードに関する指令を追記した分割加工プログラム２を示す図である。図１４に示す分割加工プログラム２は、分割加工プログラム２の先頭が加工を行うための座標値であり、加工モードに関する指令が記述されていないので、分割加工プログラム２の先頭に必要な加工モードに関する指令が追記されている。ここで、分割加工プログラム２に追記される加工モードに関する指令は、分割前の加工プログラムにおいて、加工プログラムの先頭から分割加工プログラム２の先頭までの間に指令された加工モードに関する指令である。
【００４３】
図１５は、実施の形態１において、加工モードに関する指令を追記した分割加工プログラム３を示す図である。図１５に示すように、分割加工プログラム３の先頭にも、分割加工プログラム２と同様に、加工モードに関する指令が追記される。ただし、同一種類の加工モードに関する指令が複数回指令された場合には、最後に指令された指令のみが追記されていればよい。一例として、図１２における速度指令、すなわちＦ指令では、Ｆ３０００ｍｍ／ｍｉｎの指令がされた後で、Ｆ５０００ｍｍ／ｍｉｎの指令があり、その後、分割加工プログラム３の先頭である分割点２からオーバラップ分遡った箇所が存在する。そのため、分割加工プログラム３の先頭以前に指令された最後の速度指令であるＦ５０００ｍｍ／ｍｉｎのみ指令すればよい。
【００４４】
このような加工モードに関する指令の追記は、他にも絶対値指令と相対値指令、工具長補正及び工具径補正といった、一度指令するとそれ以降のブロックでも有効となる指令、すなわちモーダル指令の全てに対して行われる。
【００４５】
実施の形態１においては分割数Ｎ＝６であるので、同様に分割加工プログラム４から分割加工プログラム６を生成し、生成された分割加工プログラムを並列演算部１２０に出力する。
【００４６】
次に、複数の演算装置を備える並列演算部１２０の処理内容について説明する。上記したように、図１に示す並列演算部１２０は、演算装置１２１、演算装置１２２及び演算装置１２３を備える。なお、演算装置１２１、演算装置１２２及び演算装置１２３は、具体的には、プロセッサコア、ＣＰＵ、ネットワークによって接続されたパーソナルコンピュータ若しくはサーバ又はクラウド上の仮想コンピュータを例示することができる。
【００４７】
並列演算部１２０は、分割部１１０から分割数Ｎで分割加工プログラムが出力されると、演算装置１２１、演算装置１２２及び演算装置１２３の各々に分割加工プログラムを割り振る。図１に示す並列演算部１２０は、演算装置１２１、演算装置１２２及び演算装置１２３を備えるため、まず、演算装置１２１には分割加工プログラム１が割り振られ、演算装置１２２には分割加工プログラム２が割り振られ、演算装置１２３には分割加工プログラム３が割り振られる。
【００４８】
演算装置１２１、演算装置１２２及び演算装置１２３の各々では、数値制御装置と同一の処理を並列して実行し、分割加工プログラムから工具の指令経路である分割指令１、分割指令２及び分割指令３を生成する。ここで、具体的な処理には、予め設定された加速度で加減速するための速度波形を生成する加減速処理、加減速処理により生成した速度波形を滑らかにするスムージング処理及びスムージング処理後速度で移動したときの単位時間毎の工具位置である補間点を演算する補間処理を例示することができる。なお、スムージング処理は、移動平均フィルタ処理とも称呼される。ここでは、単位時間毎の工具位置の点の各々を補間点と称呼し、分割加工プログラムにおける補間点全体を分割指令と称呼する。
【００４９】
このようにして滑らかに生成された分割指令の経路は、一般的に分割加工プログラムに対して内回りが生じる。なお、内回りが生じる理由は後述する。図１６は、実施の形態１において、内回りが生じる、加工プログラムにおける工具の移動経路の一例を示す第１図である。図１７は、実施の形態１において、内回りが生じる、加工プログラムにおける工具の移動経路の一例を示す第２図である。そのため、図１０，１１で示す分割加工プログラムを実行した場合の分割指令は、図１６，１７に示すように分割加工プログラムの始点及び終点を通り、始点と終点との間は、分割加工プログラムの形状に対して内回りが生じた形状となる。
【００５０】
なお、始点又は終点の近くでは、加工プログラムを分割したことによる分割指令の内回り量は小さくなる。この内回り量が小さくなる領域を内回り減少領域と称呼する。ここで、内回り量は指令速度によって決まり、内回り減少領域の長さは図７に示す加速距離Ｌａとなる。
【００５１】
なお、分割部１１０は、加速距離Ｌａ以上のオーバラップ量Ｌｏを付加して分割している。そのため、分割加工プログラムの各々における内回り減少領域が重なることはなく、加工プログラム形状の全域において、内回り減少領域でない補間点を少なくとも１点は得ることができる。なお、図１６，１７は、説明のために加工プログラムを２つに分割した場合を示しているが、更に多くに分割した場合も同様である。
【００５２】
そして、演算装置１２１、演算装置１２２及び演算装置１２３の各々は、分割加工プログラム１、分割加工プログラム２及び分割加工プログラム３を実行し、並列演算部１２０は、分割指令１、分割指令２及び分割指令３を生成して、分割指令１、分割指令２及び分割指令３を指令値生成部１３０に出力する。そして、同様に、並列演算部１２０は、分割加工プログラム４、分割加工プログラム５及び分割加工プログラム６を順次実行し、分割指令４、分割指令５及び分割指令６を指令値生成部１３０に出力する。この処理を未実行の分割加工プログラムがなくなるまで繰り返す。
【００５３】
次に、指令値生成部１３０の処理内容について説明する。指令値生成部１３０は、演算装置１２１、演算装置１２２及び演算装置１２３の各々から出力される分割指令に基づいて、一連の工具移動指令１１を生成する。
【００５４】
分割部１１０では分割加工プログラムの各々をオーバラップさせているため、分割指令の各々もオーバラップしている。実施の形態１においては、分割指令のオーバラップしている領域を後述するように除去し、その後、結合することで一連の工具移動指令１１を生成する。
【００５５】
図１８は、実施の形態１において図１に示す並列演算部１２０における分割加工プログラムの実行タイミングと、実施の形態１において図１に示す指令値生成部１３０における一連の工具移動指令１１の生成タイミングとを示すタイミングチャートである。
【００５６】
上記したように、並列演算部１２０は、演算装置１２１で分割加工プログラム１を実行し、演算装置１２２で分割加工プログラム２を実行し、演算装置１２３で分割加工プログラム３を実行しつつ、分割指令１、分割指令２及び分割指令３の生成及び出力を開始する。厳密には、分割加工プログラムの実行中には分割指令は完成していないため、分割指令を構成する補間点である単位時間あたりの工具の位置を示す点を順次出力する。
【００５７】
指令値生成部１３０は、並列演算部１２０から分割指令１、分割指令２及び分割指令３が入力されると、分割指令１を出力する。このとき、分割指令２及び分割指令３は、指令値生成装置１００内のいずれかの保存領域に保存される。指令値生成部１３０は、分割指令１の出力が完了すると、後述する、オーバラップしている領域の除去及び分割指令が切り替わる点で生じる急激な補間点間隔変化の調整を行い、分割指令２を出力する。この時、演算装置１２１では分割加工プログラム１の実行が完了しているため、分割加工プログラム４の実行を開始し、分割指令４を指令値生成部１３０に出力する。また、並列演算部１２０は、演算装置１２２における分割加工プログラム２の実行が完了次第、分割加工プログラム５の実行を開始し、分割指令５を指令値生成部１３０に出力する。また、並列演算部１２０は、演算装置１２３における分割加工プログラム３の実行が完了次第、分割加工プログラム６の実行を開始し、分割指令６を指令値生成部１３０に出力する。図１８では、分割加工プログラム１、分割加工プログラム２及び分割加工プログラム３の実行が同時に完了した状態としているが、本発明はこれに限定されるものではない。
【００５８】
次に、各分割指令のオーバラップしている領域の除去について、図１９を参照して説明する。図１９は、実施の形態１において、分割加工プログラム１及び分割加工プログラム２と、分割指令１及び分割指令２の一例を示す図である。図１９に示すように、分割加工プログラム１と分割加工プログラム２とは分割点１で分割され、分割加工プログラム１及び分割加工プログラム２は、分割点１を中心にオーバラップ量Ｌｏだけオーバラップしている。
【００５９】
指令値生成部１３０は、並列演算部１２０からの分割指令１が入力されると、まず分割指令１を工具移動指令１１として出力するが、分割加工プログラム１の分割点１に相当する補間点まで出力を完了すると、分割指令２の出力を開始する。すなわち、分割指令１に対しては、分割加工プログラム１の分割点１から終点に相当する補間点は出力しない。
【００６０】
また、分割指令２については、分割点１に相当する補間点から出力が開始される。すなわち、分割指令２に対しては、分割加工プログラム２の始点から分割点１に相当する補間点は出力しない。分割点１に相当する補間点から順次出力し、分割点２に相当する補間点まで出力を完了すると、分割指令３を出力し始める。なお、分割点２は、分割加工プログラム２と分割加工プログラム３とを分割する点である。すなわち、分割指令２に対しては、分割加工プログラム２の分割点２から終点に相当する補間点も出力しない。
【００６１】
また、図示しない分割指令３については、分割点２に相当する補間点から出力が開始される。すなわち、分割指令３に対しては、分割加工プログラム３の始点から分割点２に相当する補間点は出力しない。
【００６２】
このような処理を順次繰り返し、分割指令６まで出力される。なお、図示していないが分割指令４については、始点及び終点の双方がオーバラップしているので、分割指令４に対しては、分割加工プログラム４の始点から分割点３に相当する補間点は出力されず、分割加工プログラム４の分割点４から終点に相当する補間点も出力されない。分割指令５についても同様であるが、分割指令６については、終点側がオーバラップしていないため、終点まで出力される。
【００６３】
次に、各分割点に相当する補間点の求め方について説明する。数値制御装置では、滑らかな経路及び速度波形を生成するため、図１９に示されるように、各分割指令の経路は各分割加工プログラムの経路を内回る形状となる。すなわち、分割指令の経路の長さと、分割加工プログラムの経路の長さとは異なる。
【００６４】
移動平均フィルタにより経路を滑らかにする場合、移動平均フィルタ後経路である工具移動指令の経路上の補間点ｘ（ｎ）は、移動平均フィルタ前経路である加工プログラムの経路上の点Ｘの平均値で表わされるため、下記の式（３）で表わされる。
【００６５】
【数３】
0006548830.tif 000004
【００６６】
ここで、上記の式（３）のｎは、始点から終点までの補間点の番号である。また、上記の式（３）のｍは、移動平均フィルタの時定数であり、パラメータにより設定される。上記の式（３）から移動平均フィルタ前経路上の点Ｘを求めると、下記の式（４）のようになる。
【００６７】
【数４】
0006548830.tif 000005
【００６８】
上記の式（４）を用いると、移動平均フィルタ後経路上の補間点ｘから移動平均フィルタ前経路上の点Ｘを演算することができる。これにより、移動平均フィルタ前経路における距離を演算することができる。移動平均フィルタ前経路における始点又は終点からの距離がオーバラップ量Ｌｏとなる補間点ｘを、分割点に相当する補間点と定義する。
【００６９】
なお、実施の形態１では、移動平均フィルタ後経路上の補間点から移動平均フィルタ前経路での距離を演算することで、分割点に相当する補間点を演算しているが、本発明はこれに限定されるものではなく、演算装置１２１、演算装置１２２及び演算装置１２３の各々が、分割点に相当する補間点に適切なフラグを付けて出力する構成としてもよい。
【００７０】
なお、一般的に、分割点に相当する補間点位置、すなわち分割指令が切り替わる点では補間点の間隔が急峻に変化してしまう。図２０は、実施の形態１において、分割指令が切り替わる点における補間点の間隔の一例を示す図である。図２０に示すように、分割指令１から分割指令２に切り替わる補間点位置における補間点の間隔は、他の補間点の間隔とは異なる。補間点は単位時間あたりの工具位置を示しており、補間点の間隔は工具速度を示している。すなわち、補間点の間隔が変化すると工具速度が変化してしまい、加工不良の原因となる。
【００７１】
図２１は、実施の形態１において、分割指令が切り替わる点において調整された補間点の間隔の一例を示す図である。指令値生成部１３０は、図２１に示すように、分割指令が切り替わる点においても補間点の間隔が変化しないように補間点の位置を分割指令の経路上で調整する。
【００７２】
図２０に示すように、指令値生成部１３０が出力する分割指令１の最後の補間点、すなわち、オーバラップした領域でない最後の補間点を補間点１Ｅ、指令値生成部１３０が出力する分割指令２の最初の補間点、すなわち、オーバラップした領域でない最初の補間点を補間点２Ｓとする。指令値生成部１３０は、補間点１Ｅと補間点２Ｓとの間隔が補間点１Ｅとその前の補間点との間隔Ｌ１と等しくなるように、補間点２Ｓの位置を分割指令２の経路に沿って調整する。又は、指令値生成部１３０は、補間点１Ｅと補間点２Ｓとの間隔が、補間点１Ｅと、指令値生成部１３０から出力されない次の補間点との間隔と等しくなるように補間点２Ｓの位置を分割指令２の経路に沿って調整してもよい。また、指令値生成部１３０は、調整後の補間点２Ｓとその次の補間点との間隔が、調整前の補間点２Ｓとその次の補間点との間隔Ｌ２と等しくなるように補間点２Ｓの次の補間点の位置を分割指令２の経路に沿って調整する。この処理を順次繰り返すことで、工具移動指令全域において、工具速度の変化のない指令を生成することができるので、加工不良を抑えることができる。
【００７３】
なお、前述の方法で補間点の位置を調整する場合、分割指令２以降の補間点は全て調整を要する。そこで、許容速度の変化を予め設定しておき、許容速度変化以下の速度変化を許容して補間点の位置を調整することで、徐々に補間点位置の調整を小さくしてもよい。このようにすることで、部分的な調整のみで分割指令の切り替わり点における速度変化を抑制することが可能である。
【００７４】
以上説明したように、オーバラップした領域を除いて工具移動指令を出力することで、加工プログラムを分割しなかった場合と同一の工具移動指令を出力することが可能である。
【００７５】
実施の形態１で説明した処理を行うことで、分割に起因する工具移動指令の変化が抑制されるため、あらゆる位置で加工プログラムを分割することが可能となる。これにより、演算装置の計算リソースを効率よく使用することが可能である。なお、実施の形態１は、クラウドをはじめとする演算装置を多数使用できる環境で特に効果が大きい。
【００７６】
実施の形態１によれば、複数の演算装置を用いて先行して分割指令を生成することができる。従って、線分長が短く処理負荷が重い箇所も先行して分割指令を生成することができるため、適切な演算周期で工具移動指令を演算でき、不要な減速を防止することができる。
【００７７】
また、実施の形態１では簡単のために分割プログラム数を６個としたが、更に細かく分割することで、複数の演算装置の各々の処理負荷をより分散して不要な減速を防止することが可能である。
【００７８】
ここで、比較例である従来技術の構成と実施の形態１の構成とを対比して説明する。この比較例によっても、工具移動指令の演算を並列実行することで工具移動指令を生成することは可能である。
【００７９】
指令値生成装置１００は、加工プログラムの複数の線分を先読みし、工作機械が振動しないように経路、速度及び加速度を滑らかにした工具移動指令を生成している。図２２は、実施の形態１において、加工プログラム形状の一例を示す第１図である。加工プログラム形状が図２２に示すように、ＸＹ平面におけるＸ軸のみの移動からＹ軸のみの移動となる９０°のコーナである場合について説明する。
【００８０】
図２３は、実施の形態１において、図２２の加工プログラム形状の実行時について、時間を横軸とし、速度を縦軸とし、Ｘ軸速度及びＹ軸速度を示す図である。指令値生成装置１００は、加工プログラムの線分を先読みすることで、図２３に示すようにコーナ部においてＸ軸速度とＹ軸速度とが重なった滑らかなＸ軸速度とＹ軸速度とを演算する。ここで、図２３においては加速度までを滑らかにした速度波形を示しているが、本発明はこれに限定されず、速度までを滑らかにした各軸速度としてもよいし、又は加加速度までを滑らかにした各軸速度としてもよい。
【００８１】
図２４は、実施の形態１において、図２２の加工プログラム形状の実行時について、生成される工具移動指令の一例を示す図である。指令値生成装置１００の先読みによってコーナ部においてＸ軸速度とＹ軸速度とが重なり、Ｘ軸及びＹ軸の両方が動作するため、図２４に示すように生成される工具移動指令はコーナ部が滑らかな形状となる。
【００８２】
他方で、図２２に示すＸＹ平面における９０°のコーナを有する加工プログラムをコーナ部で２つに分割し、分割した加工プログラムについて各々異なる演算装置で工具移動指令を生成した場合について説明する。この場合には、Ｘ軸のみの移動と、Ｙ軸のみの移動とを各々異なる演算装置で演算することになる。そのため、Ｘ軸速度とＹ軸速度とは異なる演算装置で演算され、Ｘ軸速度とＹ軸速度とが重なる部分はなく、分割後の加工プログラム形状と工具経路である工具移動指令とは、図２５に示すように同一形状となる。図２５は、実施の形態１において、図２２の加工プログラム形状の実行時における速度波形と、工具経路とを示す図である。これは、本来ならば分割した点の前後の形状がお互いに影響し合った滑らかな経路を生成するはずであるところ、加工プログラムを分割することで、分割した加工プログラムの各々が別々に実行され、分割した点を通る工具移動指令を生成してしまうためである。図２６は、実施の形態１において、図２２の加工プログラム形状の実行時における工具移動指令の一例を示す図である。この図２６に示す工具移動指令に基づいて加工を行うと、コーナ部は滑らかにならず、工具移動指令と加工プログラム形状とは同一形状となり、コーナ部を滑らかにした工具移動指令は生成されない。
【００８３】
図２７は、実施の形態１において、加工プログラム形状の一例を示す第２図である。図２７では、加工プログラム形状はＸＹ平面における半円である。円弧形状の場合には、各軸速度は基本的に三角関数に従うが、始点において速度ゼロから加速し、終点に向けて減速して速度ゼロとなる。図２８は、実施の形態１において、図２７の加工プログラム形状の実行時について、時間を横軸とし、速度を縦軸とし、Ｘ軸速度及びＹ軸速度を示す図である。移動平均フィルタをかけると、図２８に示すような滑らかな各軸速度波形を生成することができる。
【００８４】
図２９は、実施の形態１において、図２７の加工プログラム形状の実行時について、生成される工具移動指令の一例を示す図である。移動平均フィルタで各軸速度波形に遅れが生じるため、工具移動指令は、図２９に示すように、加工プログラムの始点と終点とを通り、始点と終点との間の経路は加工プログラム形状を内回る曲線形状となる。
【００８５】
他方で、図２７に示すＸＹ平面における半円の加工プログラムを半分に分割し、分割した加工プログラムについて各々異なる演算装置で工具移動指令を生成した場合について説明する。この場合も、分割した加工プログラムは別々に実行されるため、分割した点において各軸速度がゼロとなる。そのため、工具経路である工具移動指令は、図３０に示すように、始点、終点及び分割した点を通り、各点の間の経路は加工プログラム形状を内回る曲線形状となる。図３０は、実施の形態１において、図２７の加工プログラム形状の実行時における速度波形と、工具経路とを示す図である。図３１は、実施の形態１において、図２７の加工プログラム形状の実行時における工具移動指令の一例を示す図である。この工具移動指令に基づいて加工を行うと、図３１に示すように、始点、終点及び分割した点を通り、各点の間の経路は加工プログラム形状を内回る曲線形状となる。つまり、分割した点において突起を有する形状に加工されてしまう。
【００８６】
以上説明したように、加工の途中で分割を行うと、分割した点を通る工具移動指令が生成され、分割しなかった場合の加工プログラムにおける工具移動指令とは異なる工具移動指令が生成されてしまう。このような工具移動指令が生成されると、分割した点で工具移動指令の経路が大きく変化し、加工面に傷が発生するといった加工不良が生じる。
【００８７】
従って、比較例では、加工工程、例えば、粗加工、中仕上げ及び仕上げ加工の区切りといった加工が一旦中断する箇所においてのみ加工プログラムを分割することができる。
【００８８】
そのため、加工工程数により分割数が制限されるので、複数の演算装置の活用には改善の余地がある。更に、一連の加工形状を中断することなく加工するような場合には、加工プログラムを分割することができず、工具移動指令は１つの演算装置で生成せざるを得ず、高速化できないという問題があった。
【００８９】
実施の形態１によれば、一連の加工形状を連続して加工する場合又は加工工程数よりも演算装置の設置数が多い場合においても、複数の演算装置を活用して高速に工具移動指令を生成することができる。
【００９０】
実施の形態２．
図３２は、本発明の実施の形態２に係る指令値生成装置の構成を示す図である。図３２に示す指令値生成装置２００は、入力された加工プログラム２０に従って工具移動指令を生成した場合の被加工物の加工後形状をシミュレーションすることができる。なお、実施の形態２において、実施の形態１と同様の構成については実施の形態１の説明を援用し、重複する説明を省略するものとする。
【００９１】
従来の加工シミュレーションの多くは加工プログラム形状に基づいて被加工物の加工後形状をシミュレーションしている。しかしながら、実際の加工では、加工プログラムに様々な補正を加えた工具移動指令に基づいて加工を行う。ここで、加工プログラムに加える補正は、加減速、工具補正又は座標変換である。この補正により被加工物に傷が発生するといった加工不良が発生することもあるにも関わらず、加工プログラム形状に基づいて加工後形状をシミュレーションしても、このような加工不良はシミュレーションされない。実施の形態２では、工具移動指令から得られたサーボ応答に基づいて被加工物の加工後形状をシミュレーションするため、加減速、工具補正又は座標変換の補正に起因する傷をシミュレーションすることも可能である。
【００９２】
指令値生成装置２００は、分割部２１０、並列演算部２２０、指令値生成部２３０、サーボシミュレーション部２４０及び加工シミュレーション部２５０を備える。分割部２１０は、加工プログラム２０を実行単位に分割する。並列演算部２２０は、実行単位毎の加工プログラムに従って実行単位毎の工具移動指令である分割指令を生成する。指令値生成部２３０は、分割指令から一連の工具移動指令を生成する。サーボシミュレーション部２４０は、工具移動指令が入力された場合の図示しない工作機械のサーボ系の動作をシミュレーションしてサーボ応答を生成する。加工シミュレーション部２５０は、サーボ応答に基づいて被加工物の加工形状をシミュレーションする。また、サーボシミュレーション部２４０を省略し、工具移動指令又は分割指令に基づいて加工シミュレーションを行ってもよい。
【００９３】
ここで、並列演算部２２０には演算装置２２１，２２２，２２３が設けられている。並列演算部２２０は、マルチコアＣＰＵ、複数のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されている。また、図３２において、並列演算部２２０は３つの演算装置を備えるが、本発明はこれに限定されず、並列演算部２２０が備える演算装置の設置数は１つ以上であればよい。並列演算部２２０が備える演算装置の設置数を多くすると、工具移動指令を高速に生成することができ、高速化の目標値に応じて演算装置の設置数を決めればよい。
【００９４】
分割部２１０は、入力された加工プログラム２０を複数の実行単位に分割し、実行単位毎に分割加工プログラムを並列演算部２２０に出力する。
【００９５】
並列演算部２２０は、実行単位毎に分割加工プログラムを演算装置２２１，２２２，２２３に割り振る。演算装置２２１、演算装置２２２及び演算装置２２３は、加減速及び座標変換の処理を行い、実行単位毎の工具の移動指令である分割指令を順次生成して指令値生成部２３０に出力する。ここで、演算装置２２１、演算装置２２２及び演算装置２２３は、並列実行されており、１つの実行単位における分割指令の生成が完了すると、次の実行単位における分割指令の生成を開始し、未処理の実行単位がなくなるまで処理を繰り返す。
【００９６】
指令値生成部２３０は、実行単位毎の分割指令から一連の工具移動指令を生成してサーボシミュレーション部２４０に出力する。なお、指令値生成部２３０は、単一のＣＰＵ、単一のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されている。又は、指令値生成部２３０は、並列演算部２２０と同様に、マルチコアＣＰＵ、複数のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されていてもよい。
【００９７】
サーボシミュレーション部２４０は、予め設定されたサーボモデルを用いて工具移動指令からサーボ応答を推定し、加工シミュレーション部２５０に出力する。加工シミュレーション部２５０は、サーボシミュレーション部２４０からのサーボ応答に基づいて工作機械が動作した場合の被加工物の加工形状をシミュレーションし、図示しない出力装置に出力する。ここで、出力装置にはディスプレイを例示することができる。
【００９８】
次に、各構成要素の処理内容について詳細に説明する。なお、分割部２１０及び並列演算部２２０の処理内容は、実施の形態１の分割部１１０及び並列演算部１２０と同様であるため省略する。
【００９９】
指令値生成部２３０の処理内容も実施の形態１の指令値生成部１３０と類似している。すなわち、各分割指令のオーバラップした領域を除いて、先頭の分割指令から順に出力することで、一連の工具移動指令を生成する。ただし、指令値生成部２３０の出力より後段の処理が、工具移動指令の順序を問わない用途の場合には、図３３に示すように、各分割指令の生成が開始され次第、各分割指令のオーバラップした領域を削除して並列して分割指令を出力してもよい。図３３は、実施の形態２における図３２に示す並列演算部２２０における分割加工プログラムの実行タイミングと、図３２に示す指令値生成部２３０における一連の工具移動指令の生成タイミングとを示すタイミングチャートである。
【０１００】
一例として、指令値生成部２３０の出力より後段の処理が、加工シミュレーション部２５０のみである場合について説明する。加工シミュレーション部２５０は、工具移動指令の順序を問わない。すなわち、並列演算部２２０で生成した分割指令を他の順番で加工シミュレーションしても最終的な加工シミュレーション結果は同じ結果となる。この場合には、指令値生成部２３０では、分割指令を分割した順序に整列させるのではなく、並列して出力し、後の処理である加工シミュレーションも並列して処理した方が演算効率がよい。
【０１０１】
サーボシミュレーション部２４０は、制御対象である図示しない工作機械の挙動を計算機上で模擬する。サーボシミュレーション部２４０は、具体的には、工作機械の慣性、粘性及び弾性のパラメータと、慣性、粘性及び弾性に起因する共振周波数又は反共振周波数と、軸反転時のバックラッシ又はロストモーションのパラメータと、熱変位のパラメータと、加工時の反力に起因する変位量のパラメータとを予め設定し、制御対象の挙動を模擬するためのサーボモデルを構築する。サーボシミュレーション部２４０は、構築したサーボモデルを用いて工具移動指令から実際の工作機械の動作であるサーボ応答を生成し、加工シミュレーション部２５０に出力する。なお、サーボ応答の経路及び速度波形を出力装置であるディスプレイに表示してもよい。
【０１０２】
加工シミュレーション部２５０は、サーボシミュレーション部２４０により生成されたサーボ応答に基づいて工作機械の工具を動作させたときの被加工物の加工形状をシミュレーションし、加工シミュレーション結果を出力装置に出力する。すなわち、加工シミュレーション部２５０は、加工シミュレーション結果をディスプレイに表示する。なお、実施の形態２の指令値生成装置２００は、サーボシミュレーション部２４０を備え、サーボ応答に基づいて加工シミュレーション部２５０が加工シミュレーションを行うが、サーボシミュレーション部２４０を省略し、工具移動指令又は分割指令に基づいて加工シミュレーションを行ってもよい。
【０１０３】
加工シミュレーション部２５０では、工具がサーボ応答に沿って動作するときの容積である掃引容積が演算される。この掃引容積によって横切られる被加工物の部分を除去することで被加工物の最終的な加工結果をシミュレーションすることができる。
【０１０４】
実施の形態２で説明した処理を行うことで、工具移動指令に基づいたサーボシミュレーション又は加工シミュレーションを高速に行うことが可能となる。これにより、１つの演算装置を用いたシステムでは実加工に匹敵する時間を要していたシミュレーションを短時間で行うことができ、工作機械の調整作業であるパラメータ調整に要する工数を削減することが可能である。特に、加工シミュレーションの工具移動指令の順序を問わない場合には、並列演算部２２０で分割指令の生成の完了と工具移動指令の生成の完了との間にタイムラグが生じにくい。そのため、１つの演算装置で工具移動指令を生成した場合と比較すると「１／演算装置の設置数」の時間で工具移動指令を生成することができる。
【０１０５】
実施の形態３．
図３４は、本発明の実施の形態３に係る指令値生成装置の構成を示す図である。図３４に示す指令値生成装置３００は、図１に示す指令値生成装置１００と同様に高速で指令値を生成することが可能な構成であり、図３４に示す指令値生成装置３００は、図１に示す指令値生成装置１００と２つの点で相違する。第１点目は、指令値生成部１３０に代えて、並列指令値生成部３３０を備え、複数の演算装置の各々に対して指令値生成部が各々設けられており、指令値生成処理を並列で行う点である。並列指令値生成部３３０は、指令値生成部３３１，３３２，３３３を備える。なお、実施の形態３において、実施の形態１，２と同様の構成については実施の形態１，２の説明を援用し、重複する説明を省略するものとする。
【０１０６】
図３５は、実施の形態１における図１に示す演算装置１２１，１２２，１２３における分割加工プログラムの実行タイミングと、図１に示す指令値生成部１３０における一連の工具移動指令の生成タイミングとを示すタイミングチャートである。図３６は、実施の形態３における図３４に示す演算装置３２１，３２２，３２３における分割加工プログラムの実行タイミングと、図３４に示す指令値生成部３３１，３３２，３３３における一連の工具移動指令の生成タイミングとを示すタイミングチャートである。図３５及び図３６には、各演算装置の演算時間にばらつきがある場合のタイミングチャートが示されており、図３５は比較のために示すものである。
【０１０７】
図３５においては、演算装置１２１，１２２，１２３の各々における処理が終わり次第、分割指令１，２，３，４，５，６を指令値生成部１３０に出力する。しかしながら、指令値生成部１３０では、分割指令１，２，３，４，５，６をこの順で処理するため、演算装置１２１の演算時間が演算装置１２２，１２３の演算時間に比してばらつきがある場合には、演算装置１２２，１２３の演算が完了しているにもかかわらず、演算装置１２１の処理が完了するまで、指令値生成部１３０は、分割指令２，３の処理を開始することができない。また、分割指令４，５，６の処理についても同様に、分割指令４の処理が完了するまで、指令値生成部１３０において分割指令５，６の処理を開始することができない。その結果、工具移動指令の生成が遅れるため、指令値生成装置１００の全体の処理速度が演算装置の演算時間のばらつきに起因して低下することになる。
【０１０８】
一方、図３４に示す指令値生成装置３００では、演算装置ごとに独立した指令値生成処理が可能であるため、演算装置３２１の分割指令１の処理が完了していなくても、演算装置３２２，３２３の処理が完了していれば、分割指令２，３の処理を開始することができる。
【０１０９】
図３４に示す構成とすることで、並列演算部３２０内の各演算装置の演算時間にばらつきがあっても、分割指令の生成の完了と工具移動指令の生成の完了との間にタイムラグが生じにくく、演算装置の演算時間のばらつきによる速度低下が小さくなる。
【０１１０】
第２点目は、各演算装置における処理が途中の段階であっても、その時点までに生成された各分割指令を出力する点、言い換えると分割指令を細かい単位で複数回に分けて出力する点である。
【０１１１】
図３４に示す構成とすることで、並列演算部３２０の処理と同時並行で並列指令値生成部３３０の処理、図示しないＮＣ工作機械の処理又は加工シミュレーションの処理を行うことができる。そのため、リアルタイム性を重視する場合、又はＮＣ工作機械若しくは加工シミュレーションをより高速に行いたい場合には最適である。
【０１１２】
図３４に示す指令値生成装置３００は、分割部３１０、並列演算部３２０及び並列指令値生成部３３０を備え、入力された加工プログラム３０に従って、工具経路上の単位時間毎の補間点群である工具移動指令３１を出力することで、ＮＣ工作機械の被加工物に対する工具の移動を数値制御する。分割部３１０は、加工プログラム３０を実行単位に分割して分割加工プログラムを生成する。並列演算部３２０は、実行単位毎の加工プログラムに従って実行単位毎の工具移動指令である分割指令を生成する。並列指令値生成部３３０は、分割指令から工具移動指令を生成する。
【０１１３】
ここで、並列演算部３２０には、演算装置３２１，３２２，３２３が設けられている。また、並列指令値生成部３３０には、指令値生成部３３１，３３２，３３３が設けられている。並列演算部３２０及び並列指令値生成部３３０は、マルチコアＣＰＵ、複数のＣＰＵを備えたパーソナルコンピュータ又は通信回線によって接続されたサーバ若しくはクラウドシステムによって構成されている。また、図３４において、並列演算部３２０は３つの演算装置を備えるが、本発明はこれに限定されず、並列演算部３２０が備える演算装置の設置数は１つ以上であればよい。並列指令値生成部３３０においても指令値生成部の数は、並列演算部３２０が備える演算装置の設置数と等しくすればよい。並列演算部３２０が備える演算装置の設置数を多くすると、工具移動指令を高速に生成することができ、高速化の目標値に応じて演算装置の設置数を決めればよい。
【０１１４】
次に、各構成要素の処理内容について詳細に説明する。なお、分割部３１０の処理内容は、図１に示す分割部１１０と同じであるため説明を省略する。並列演算部３２０の処理内容は、実施の形態１と類似し、数値制御装置と同一の処理を並列して実行し、分割加工プログラムから工具の指令経路である分割指令を生成する。実施の形態３では、各演算装置における処理が途中の段階であっても、その時点までに生成された各分割指令を、細かい単位で複数回に分けて出力することができる。この、分割指令よりも細かい単位を出力単位数と称呼する。なお、出力単位数は適宜設定することが可能である。
【０１１５】
ここで、分割数Ｎ＝６とし、出力単位数を各分割指令の３等分となるように設定したとする。図３７は、実施の形態３における図３４に示す指令値生成装置３００におけるデータフローを示す第１図である。図３８は、実施の形態３における図３４に示す指令値生成装置３００におけるデータフローを示す第２図である。図３７は、並列演算部３２０の初回実行時のデータフローを示し、図３８は、並列演算部３２０の初回実行が完了し、次の実行単位における加工プログラムの実行時のデータフローを示している。
【０１１６】
なお、図３７及び図３８では、分割部３１０は、加工プログラム３０を６個の実行単位、すなわち実行単位１，２，３，４，５，６に分割し、さらに実行単位毎の分割指令を３等分に細かく分けて出力しているが、本発明はこれに限定されず、分割数及び出力単位数は適宜設定することができる。
【０１１７】
図３７に示すように、分割部３１０が加工プログラム３０を実行単位１，２，３，４，５，６に分割した場合には、３個の演算装置を備える並列演算部３２０は、実行単位１，２，３を並列実行して、分割指令１−１，１−２，１−３、分割指令２−１，２−２，２−３及び分割指令３−１，３−２，３−３を生成する。そして、並列指令値生成部３３０は、分割指令１−１，１−２，１−３、分割指令２−１，２−２，２−３及び分割指令３−１，３−２，３−３から実行単位１から実行単位３に対する工具移動指令を生成する。
【０１１８】
まず、数値制御装置と同一の処理を実行し、単位時間毎の補間点群の集合である分割指令１−１，２−１，３−１が生成されていく。ここで、具体的な処理には、予め設定された加速度で加減速するための速度波形を生成する加減速処理、加減速処理により生成した速度波形を滑らかにするスムージング処理及びスムージング処理後速度で移動したときの単位時間毎の工具位置である補間点を演算する補間処理を例示することができる。これと同時に、分割指令１−１，２−１，３−１の補間点数を計算していく。
【０１１９】
その後、分割指令１−１，２−１，３−１の各々が、出力単位数に達したか否か及びオーバラップ領域が含まれているか否かを判定する。これは、分割指令１−１，２−１，３−１の各々の開始部分にオーバラップ領域が含まれているか、又は終了部分にオーバラップ領域が含まれているか否かにより判定手法が異なる。
【０１２０】
まず、開始部分にオーバラップ領域が含まれているか否かは、分割指令を出力した際の累積距離とオーバラップ量とを比較して、その大小で判定することができる。前者の方が大きい場合、分割指令にはオーバラップ領域は含まれていないと判定し、一方で、後者の方が大きい場合、分割指令にはオーバラップ領域が含まれていると判定する。
【０１２１】
次に、終了部分にオーバラップ領域が含まれているか否かは、分割指令を出力した際の残距離とオーバラップ量とを比較して、その大小で判定することができる。前者の方が大きい場合、分割指令にはオーバラップ領域は含まれていないと判定し、一方で、後者の方が大きい場合、分割指令にはオーバラップ領域が含まれていると判定する。
【０１２２】
上記の条件を満たしたとき、分割指令１−１，２−１，３−１の各々が並列指令値生成部３３０へ出力される。なお、上記の条件を満たすまで、分割指令１−１，２−１，３−１は、並列演算部３２０内で保存されるが、その間、分割指令１−２，２−２，３−２の生成は逐次行われていく。
【０１２３】
これと同時に、分割指令１−２，２−２，３−２の各々の補間点数を計算していき、分割指令１−１，２−１，３−１の各々に対して出力単位数に達したか否か及びオーバラップ領域が含まれているか否かを再び判定した後、分割指令１−２，２−２，３−２の各々を並列指令値生成部３３０へ出力する。この作業を分割指令１−３，２−３，３−３が並列指令値生成部３３０へ出力されるまで行い、実行単位１から実行単位３に対する工具移動指令を生成する。
【０１２４】
図３８に示すように、並列演算部３２０が実行単位１から実行単位３の実行を完了すると、並列演算部３２０は、次の実行単位である実行単位４から実行単位６を実行し、分割指令４−１，４−２，４−３、分割指令５−１，５−２，５−３及び分割指令６−１，６−２，６−３を生成する。
【０１２５】
次に、並列演算部３２０の演算装置の設置数と同数の指令値生成部を備える並列指令値生成部３３０の処理内容について説明する。指令値生成部３３０の処理内容も、図１に示す指令値生成部１３０と類似する。すなわち、各分割指令のオーバラップした領域を除いて出力することで、工具移動指令を生成する。
【０１２６】
ただし、並列演算部３２０において、オーバラップ領域が含まれていないと判定された分割指令に対してはそのまま出力される。また、上記処理は、各演算装置に対応した指令値生成部にて行う。このようにして、分割指令が生成された演算装置から順次、指令値生成の処理を行うことができるため、各演算装置の処理時間にばらつきがあっても、指令値生成装置全体の速度低下を抑えることができる。
【０１２７】
以上、実施の形態３で説明した処理を行うことで、各演算装置の処理時間のばらつきに起因する指令値生成装置全体の速度低下の影響を最小限に抑えることができる。また、並列演算部３２０で分割指令の生成の完了と工具移動指令の生成の完了との間にタイムラグが生じにくい。そのため、実施の形態３に係る指令値生成装置は、実施の形態１に係る指令値生成装置よりも演算装置の処理時間のばらつきの影響を受けにくく、また、高速で工具移動指令を生成することが可能である。なお、前述の方法を用いて、分割指令を細かい単位で複数回に分けて出力する場合、出力単位数を設定する必要がある。しかしながら、指令値生成部からの出力単位数変更要求信号を受け取ったタイミングで出力単位数を変更することもできる。又は、指令値生成部からの出力要求信号を受け取ったタイミングで出力することで、出力単位数を設けずに、分割指令を細かい単位で複数回に分けて出力することも可能である。
【０１２８】
以上、実施の形態３にて説明した構成は実施の形態２にて説明した構成と組み合わせることも可能である。すなわち、実施の形態３にて説明したように並列指令値生成部を備える指令値生成装置が、実施の形態２にて説明したサーボシミュレーション部及び加工シミュレーション部を備えていてもよい。
【０１２９】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０１３０】
１０，２０，３０  加工プログラム、１１，３１  工具移動指令、１００，２００，３００  指令値生成装置、１１０，２１０，３１０  分割部、１２０，２２０，３２０  並列演算部、１２１，１２２，１２３，２２１，２２２，２２３，３２１，３２２，３２３  演算装置、１３０，２３０，３３１，３３２，３３３  指令値生成部、２４０  サーボシミュレーション部、２５０  加工シミュレーション部、３３０  並列指令値生成部。
【図１】
0006548830.tif 000006
【図２】
0006548830.tif 000007
【図３】
0006548830.tif 000008
【図４】
0006548830.tif 000009
【図５】
0006548830.tif 000010
【図６】
0006548830.tif 000011
【図７】
0006548830.tif 000012
【図８】
0006548830.tif 000013
【図９】
0006548830.tif 000014
【図１０】
0006548830.tif 000015
【図１１】
0006548830.tif 000016
【図１２】
0006548830.tif 000017
【図１３】
0006548830.tif 000018
【図１４】
0006548830.tif 000019
【図１５】
0006548830.tif 000020
【図１６】
0006548830.tif 000021
【図１７】
0006548830.tif 000022
【図１８】
0006548830.tif 000023
【図１９】
0006548830.tif 000024
【図２０】
0006548830.tif 000025
【図２１】
0006548830.tif 000026
【図２２】
0006548830.tif 000027
【図２３】
0006548830.tif 000028
【図２４】
0006548830.tif 000029
【図２５】
0006548830.tif 000030
【図２６】
0006548830.tif 000031
【図２７】
0006548830.tif 000032
【図２８】
0006548830.tif 000033
【図２９】
0006548830.tif 000034
【図３０】
0006548830.tif 000035
【図３１】
0006548830.tif 000036
【図３２】
0006548830.tif 000037
【図３３】
0006548830.tif 000038
【図３４】
0006548830.tif 000039
【図３５】
0006548830.tif 000040
【図３６】
0006548830.tif 000041
【図３７】
0006548830.tif 000042
【図３８】
0006548830.tif 000043