以下に、数値制御装置、数値制御工作機械、加工プログラム生成装置および加工プログラム生成方法を図面に基づいて詳細に説明する。
実施の形態1.
図1は、実施の形態1にかかる数値制御工作機械99aの構成例を示す図である。数値制御工作機械99aは、加工プログラムに従って軸を駆動する工作機械である。数値制御工作機械99aは、5軸制御マシニングセンタである。数値制御工作機械99aは、X軸駆動部93Xと、V軸駆動部93Vと、Y軸駆動部93Yと、Z軸駆動部93Zと、B軸駆動部93Bと、C軸駆動部93Cと、主軸83とを備える。X軸駆動部93XおよびV軸駆動部93Vは、X方向にY軸駆動部93Yを駆動する。Y軸駆動部93Yは、Y方向にZ軸駆動部93Zを駆動する。Z軸駆動部93Zは、Z方向に主軸83を駆動する。主軸83は、工具76を回転させる。加工対象である工作物78は、ワークテーブル77に設置される。C軸駆動部93Cは、ワークテーブル77をZ軸周りに回転させる。B軸駆動部93Bは、C軸駆動部93CをY軸周りに回転させる。
数値制御工作機械99aは、X軸駆動部93X、V軸駆動部93V、Y軸駆動部93YおよびZ軸駆動部93Zによって主軸83を移動させ、かつ、B軸駆動部93BおよびC軸駆動部93Cによって工作物78の姿勢を変化させることによって、工具76と工作物78とを相対的に動かす。数値制御工作機械99aは、工具76と工作物78とを相対的に動かしながら工具76を回転させて、工作物78の表面を切削する。数値制御工作機械99aは、工作物78から不要な部分を除去することによって、工作物78を目的の形状へ加工する。
数値制御工作機械99aが行う作業は、加工プログラムに従って各軸を駆動し、切削加工によって工作物78の加工形状を実現することである。工作物78の加工形状が定められた基準を達成するかどうか、具体的には、予め設計されたとおりの形状精度および面精度を達成するかどうかで、数値制御工作機械99aによる加工の成否が判定される。
X軸駆動部93X、V軸駆動部93V、Y軸駆動部93YおよびZ軸駆動部93Zの各々は、被駆動部を直進運動させる。X軸、Y軸、Z軸およびV軸の各々は、直進軸である。X軸駆動部93X、V軸駆動部93V、Y軸駆動部93YおよびZ軸駆動部93Zの各々では、アクチュエータであるモータ71の回転運動が送りねじ73によって各直進軸の駆動方向への直進運動に変換される。B軸駆動部93BおよびC軸駆動部93Cの各々は、被駆動部を回転させる。B軸およびC軸の各々は、回転軸である。B軸駆動部93BおよびC軸駆動部93Cの各々では、モータ71の回転運動を、ギアといった減速機を用いて被駆動部へ伝達する。X軸駆動部93X、V軸駆動部93V、Y軸駆動部93YおよびZ軸駆動部93Zの各々では、直進運動させる被駆動部を直進案内機構72により支持する。B軸駆動部93BおよびC軸駆動部93Cの各々では、回転運動させる被駆動部を軸受により支持する。
数値制御工作機械99aでは、X軸、Y軸、Z軸およびV軸である直進軸によって、XYZの3次元空間内における工具76の運動、すなわち3自由度の工具76の運動が実現される。数値制御工作機械99aでは、B軸およびC軸である回転軸によって、2自由度の工作物78の運動が実現される。数値制御工作機械99aでは、その結果、合計で5自由度の運動が実現される。
次に、数値制御工作機械99aを構成する駆動部であるX軸駆動部93X、V軸駆動部93V、Y軸駆動部93Y、Z軸駆動部93Z、B軸駆動部93BおよびC軸駆動部93Cについて説明する。ここでは、X軸駆動部93Xを例として、駆動部の構成を説明する。V軸駆動部93V、Y軸駆動部93YおよびZ軸駆動部93Zの各構成は、X軸駆動部93Xと同様である。B軸駆動部93BおよびC軸駆動部93Cの各構成は、直進運動と回転運動との違いがある点以外は、X軸駆動部93Xと同様である。
図2は、実施の形態1にかかる数値制御工作機械99aを構成する軸駆動部であるX軸駆動部93Xの構成を説明するための模式図である。図2に示すように、数値制御工作機械99aは、数値制御工作機械99aを制御する数値制御装置1aと、サーボ制御部6と、機械装置部96とを有する。機械装置部96は、駆動機構97と機械構造98とを有する。図2に示すサーボ制御部6と図2に示す駆動機構97とは、X軸駆動部93Xを構成する。機械構造98は、X軸駆動部93Xにより駆動される被駆動部である。機械構造98は、駆動機構97から伝達される動力により運動する。数値制御工作機械99aは、機械構造98に取り付けられる工具76を用いて工作物78を加工する。
駆動機構97は、X軸のモータ71の回転運動を直進運動に変換する役割と、かかる変換のための構成を支持する役割とを担う。X軸駆動部93Xにおいて、モータ71の回転運動は、カップリング74を介して送りねじ73に伝達され、ナット80および減速機79を介して直進運動に変換される。送りねじ73の直進運動は、支持軸受75a,75bにより拘束される。ナット80の直進運動によって、X軸を支持する支持体90とともに工具76がX方向に駆動する。支持体90は、工具76とナット80との間に介在するZ軸と支持のための構成とを総称したものとする。駆動機構97は、複数の軸の各々について設けられている。
V軸駆動部93V、Y軸駆動部93Y、およびZ軸駆動部93Zの各軸駆動部は、X軸駆動部93Xと同様の構成を備える。なお、機械構造98の範囲は軸によって異なる。例えば、Z軸の駆動機構97は、X軸から見るとX軸のモータ71の運動を変換する役割がないため、X軸の機械構造98に含まれる。B軸駆動部93BおよびC軸駆動部93Cの各軸駆動部は、送りねじ73の代わりに、回転運動を減速させるウォームギア機構を有する。また、B軸駆動部93BおよびC軸駆動部93Cの各々は、直進案内機構72の代わりに、回転運動する被駆動部を支持する軸受を有する。
数値制御装置1aは、機械装置部96を制御する。数値制御装置1aは、X軸の位置指令Xcをサーボ制御部6へ出力する。位置指令Xcは、加工プログラムに従って数値制御装置1aにより演算された位置を示すものであって、所望の制御状態における被駆動部の位置を示す。位置フィードバックXdは、モータ71に取り付けられた回転角検出器82により検出されたモータ71の回転角度に送りねじ73のねじピッチを乗じることによって得られる位置データである。位置フィードバックXdは、サーボ制御部6を経て数値制御装置1aへ入力される。数値制御装置1aは、位置フィードバックXdと位置指令Xcとの誤差が小さくなるように駆動機構97のフィードバック制御を行う。サーボ制御部6は、位置指令Xcに応じたモータ電流Ixをモータ71へ出力することにより、駆動機構97を駆動する。駆動機構97には、制御対象である工具76を含む機械構造98が接続されている。
サーボ制御部6は、位置指令Xcに位置フィードバックXdを一致させるフィードバック制御を行う。ただし、フィードバック制御が行われても、加工中に工具76の先端位置と工作物78の加工点との間に誤差が生じ、工作物78において材料の削り残しまたは削り過ぎなどが生じることによって、加工誤差が発生する場合がある。
次に、数値制御工作機械99aにおける加工誤差発生のメカニズムについて説明する。ここでは、B軸駆動部93Bの回転角が0度、かつ、C軸駆動部93Cの回転角が0度であって、工作物78が水平に取り付けられている場合を例とする。
図3は、実施の形態1における加工誤差発生のメカニズムの一例について説明するための図である。図3では、X軸駆動部93Xの運動による支持体90の変形に起因する加工誤差であって、フィードバック制御では対応できない加工誤差について示す。図3では、変形を生じていない理想状態における機械構造98を破線により示す。
X軸駆動部93Xが加減速を行う場合、モータ71の駆動力が送りねじ73を介して支持体90に伝達される。支持体90の剛性が十分でない場合は、モータ71の駆動力が支持体90に伝達されることによって、支持体90が変形する。この変形によって、工具76はZ方向に変位する。X軸駆動部93Xの回転角検出器82は、X方向に生じるX軸駆動部93Xの誤差を検出することができる一方、Z方向に生じる誤差を検出できない。また、この変形はZ軸駆動部93Zの外部で生じるため、Z軸駆動部93Zの回転角検出器82でも検出できない。
結果として、かかる支持体90の変形はいずれの軸の回転角検出器82でも検出されないため、かかる変形に対してフィードバック制御は機能しない。支持体90の変形によって工具76が工作物78に食い込み、加工誤差が発生する。工具76は回転運動をしているため、工作物78と干渉したときに工作物78の表面から円形に材料を削り取る。加工誤差の発生によって、円形の加工痕である加工誤差形状が生じる。加工誤差形状とは、加工誤差によって加工面に生じる形状とする。
図4は、実施の形態1における機械構造98の変形と加工誤差との関係の第1の例について説明するための図である。図4では、ストレートエンドミルと呼ばれる円筒形の工具76を用いて、X方向に主軸83が移動しながら加工を行う場合の例を示す。工具76の運動方向21は、X方向である。図4に示す加工誤差形状20は、図4に示す減速位置においてX軸駆動部93Xを減速させたときに生じる加工誤差形状の例である。図4には、加工誤差形状20をZ方向から見たときにおける加工誤差形状20のXY平面形状と、加工誤差形状20をA-A’線で切断した場合における加工誤差形状20のXZ断面とを示す。また、図4では、参考として、X方向に主軸83を移動させている際における機械構造98の形状変化を模式的に示す。
減速位置では、X軸駆動部93Xの減速に伴う慣性力によって、運動方向21の後方へ傾くように機械構造98が変形する。機械構造98の変形により、工具76が工作物78に沈み込む。工作物78に工具76が沈み込むことによって、工作物78の表面が必要以上に削り取られる。このため、X軸駆動部93Xが減速した位置には、周囲よりも窪んだ加工誤差形状20が形成される。加工誤差形状20のXY平面形状は、工具76の外径と同じ直径の円形である。
図5は、実施の形態1における機械構造98の変形と加工誤差との関係の第2の例について説明するための図である。図5でも、図4と同様に、ストレートエンドミルである工具76を用いて、X方向に主軸83が移動しながら加工を行う場合の例を示す。工具76の運動方向21は、X方向である。図5に示す加工誤差形状20は、図5に示す加速位置においてX軸駆動部93Xを加速させたときに生じる加工誤差形状の例である。図5には、加工誤差形状20をZ方向から見たときにおける加工誤差形状20のXY平面形状と、加工誤差形状20をA-A’線で切断した場合における加工誤差形状20のXZ断面とを示す。また、図5では、参考として、X方向に主軸83を移動させている際における機械構造98の姿勢の変化を模式的に示す。
加速位置では、X軸駆動部93Xの加速に伴う慣性力によって、運動方向21の前方へ傾くように機械構造98が変形する。機械構造98の変形により、工具76が工作物78から浮き上がる。工作物78から工具76が浮き上がることによって、工作物78の表面が削り残される。このため、X軸駆動部93Xが加速した位置には、周囲よりも突出した加工誤差形状20が形成される。加工誤差形状20のXY平面形状は、工具76の外径と同じ直径の円形である。
なお、図3から図5では、加工誤差発生のメカニズムを分かり易く説明するため機械構造98の形状変化を強調して示した。実際の加工で生じる形状変化の大きさは、例えば、金属を加工する数値制御工作機械99aでは百マイクロメートル程度以下、高精度な数値制御工作機械99aであれば数マイクロメートル程度以下であって、加工誤差発生の瞬間における機械構造98の姿勢変化を目視で確認することは難しい。しかしながら、金属の加工面の場合は、加工誤差が数マイクロメートル程度であっても光の反射や干渉の様子が変化するため、加工誤差は、人の目には目立つ加工面の特徴として感受される。そのため、たとえ寸法の精度が設計された公差内であっても人の目で見た加工面の品位が不十分と判断され加工不良とみなされることがある。加工面品位の不良が発生した場合、加工のやり直し、および、不良となった工作物78の廃棄などが発生するため、好ましくない。このような加工面の外観を特徴づける加工誤差の例としては、機械構造98の振動によって生じる縞模様、または、摩擦によって生じる象限突起に起因する筋状模様などが挙げられる。
図3から図5では、運動方向21がX方向である場合における加減速によって生じる加工誤差の例を示した。運動方向21がY方向である場合、または、運動方向21がZ方向である場合も、運動方向21がX方向である場合と同様のメカニズムで、機械構造98の変形による加工誤差が発生する。
図6は、実施の形態1にかかる数値制御工作機械99aが有する数値制御装置1aの構成例を示す図である。図6には、数値制御装置1aとサーボ制御部6とを示す。数値制御装置1aには、コンピュータ支援製造(Computer Aided Manufacturing:CAM)ソフトウェアまたは対話式プログラム作成装置等によって作成された加工プログラムが入力される。数値制御装置1aは、加工プログラムを受け付ける加工プログラム入力部10と、各軸の位置指令である指令値を生成する指令値生成部11と、加工誤差を推定する加工誤差推定部12と、機械モデルを保持するモデル保持部13と、補正量を演算する補正量演算部14aと、各軸の位置指令である指令値を出力する指令値出力部15とを備える。
加工プログラム入力部10は、受け付けた加工プログラムを指令値生成部11へ出力する。指令値生成部11は、加工プログラムに基づいて、各軸の位置指令を計算する。指令値生成部11は、加工誤差推定部12と指令値出力部15との各々へ各軸の位置指令を出力する。
機械モデルは、複数の軸の各々の方向である各軸方向における機械構造98の運動に伴う機械構造98の変形を模擬するモデルであって、機械構造98の変形による各軸方向における工具76の変位量である誤差量を表す。加工誤差推定部12は、モデル保持部13から機械モデルを読み出す。サーボ制御部6は、加工誤差推定部12へ各軸の位置フィードバックを出力する。加工誤差推定部12は、軸データと機械モデルとに基づいて、各軸方向のうち工具76の変位を生じる方向である誤差方向と誤差方向における誤差量とを推定し、推定された誤差方向と推定された誤差量とを示す加工誤差情報を出力する。軸データは、駆動機構97の駆動についてのデータである。軸データは、各軸の速度指令と、各軸の加速度指令と、各軸の駆動機構97の状態量である速度または加速度と、のうちの1つ以上のデータである。加工誤差推定部12は、補正量演算部14aへ加工誤差情報を出力する。
補正量演算部14aは、モデル保持部13から機械モデルを読み出す。補正量演算部14aは、補正の対象とする1つ以上の軸を、加工誤差情報と機械モデルとに基づいて選択する。補正量演算部14aは、選択された軸についての駆動機構97へ出力される指令の補正に使用される補正量を演算する。補正量演算部14aは、各軸の補正量の情報を指令値出力部15へ出力する。指令値出力部15は、補正量に基づいて各軸の位置指令を補正する。指令値出力部15は、各軸の補正後の位置指令をサーボ制御部6へ出力する。
次に、数値制御工作機械99aによる加工の例と機械モデルの例とについて説明する。図7は、実施の形態1にかかる数値制御工作機械99aによる加工の例について説明するための図である。図7では、単純な直線方向の加工経路が加工プログラムに記述されている場合における加工の様子を模式的に表す。図7に示す破線矢印は、工具76の先端部の軌跡を表す。図7には、X方向を表す実線矢印と、Z方向を表す実線矢印とを示す。Z方向を表す実線矢印が指す方向をプラスZ方向、プラスZ方向とは逆の方向をマイナスZ方向と称する。X方向を表す実線矢印が指す方向をプラスX方向、プラスX方向とは逆の方向をマイナスX方向と称する。
数値制御工作機械99aは、プログラム開始位置である位置P1において、工具76の回転を開始させる。数値制御工作機械99aは、Z軸駆動部93Zの駆動により、マイナスZ方向へ工具76を移動させる。これにより、数値制御工作機械99aは、工作物78の上面である加工面へ工具76を移動させる。数値制御工作機械99aは、加工面において、X軸駆動部93Xの駆動によりプラスX方向へ工具76を移動させる。プラスX方向へ工具76を移動させる際、数値制御工作機械99aは、X軸駆動部93Xを加速させた後、X軸駆動部93Xを減速させる。
位置P2に工具76が到達したときに、数値制御工作機械99aは、X軸駆動部93Xを停止させる。数値制御工作機械99aは、Z軸駆動部93Zの駆動により、プラスZ方向へ工具76を移動させる。これにより、数値制御工作機械99aは、加工面から工具76を引き離す。数値制御工作機械99aは、プログラム終了位置である位置P3において、工具76の回転を停止し、工作物78の加工を終了する。図7に示す加工の場合、X軸駆動部93Xを減速させる位置において、機械構造98の変形が生じる。
図8は、図6に示す数値制御装置1aが有する加工誤差推定部12による加工誤差の計算例について説明するための図である。図8には、図7に示す加工においてX軸駆動部93Xの減速により加工誤差が生じる様子を模式的に示す。減速位置において、X軸駆動部93Xの被駆動部である機械構造98は、X軸駆動部93Xの減速に伴う慣性力によって、運動方向の後方へ傾くように変形する。図8に示す矢印23は、プラスX方向に機械構造98が運動する際に機械構造98にかかる慣性力の向きを表す。機械構造98の変形により、工具76が必要以上に工作物78に食い込む。数値制御工作機械99aは、工作物78に工具76が食い込むことによって、工作物78を削り過ぎる加工誤差を生じる。図8では、機械構造98が変形を生じていない理想状態のときにおける工具76を破線により示す。
直進軸であるX軸、Y軸およびZ軸の各々の方向である各軸方向への機械構造98の変形量は、X軸の駆動機構97の軸データを機械モデルへ代入することにより求まる。X軸駆動部93Xの駆動によって生じる各軸方向の誤差量を計算する機械モデルは、次の式(1),(2)および(3)に示すように伝達関数により記述できる。
式(1),(2)および(3)は、X方向における機械構造98の運動に伴う機械構造98の変形を模擬する機械モデルである。式(1)に示すErrxx(s)は、機械構造98の変形によるX方向における工具76の変位量、すなわち機械構造98の変形によるX方向における誤差量を表す。式(2)に示すErryx(s)は、機械構造98の変形によるY方向における工具76の変位量、すなわち機械構造98の変形によるY方向における誤差量を表す。式(3)に示すErrzx(s)は、機械構造98の変形によるZ方向における工具76の変位量、すなわち機械構造98の変形によるZ方向における誤差量を表す。sはラプラス演算子である。
Xrx(s)の上部にドット記号「・」を付した項は、速度指令のラプラス変換を表す。速度指令は、位置指令の微分により表される。Xfx(s)の上部にドット記号「・」を付した項は、速度フィードバックのラプラス変換を表す。速度フィードバックは、駆動機構97の状態量である速度のデータである。速度フィードバックは、位置フィードバックの微分により表される。Kxx,Kxzは、機械構造98の変形量を記述するための係数である。ωx1,ωx2は、機械構造98の変形を記述するための周波数を表す。ζx1,ζx2は、機械構造98の変形を記述するための減衰係数である。数値制御工作機械99aでは、X軸駆動部93Xの駆動においてY方向の誤差量は生じない。このため、式(2)に示すように、Erryx(s)は、X軸の駆動機構97の軸データに関係なく「0」である。式(1)および(3)の各々には、X軸についての軸データである速度指令および速度フィードバックが変数として含まれる。
式(1),(2)および(3)に示す機械モデルにおいて、誤差量は、ラプラス変換により周波数領域で記述される。誤差量は、逆ラプラス変換といった既知の方法を用いて、時間領域に変換可能である。以下の説明では、加工誤差は、時間領域における工具76の変位による現象を指すものとする。Errxxは、X方向へ機械構造98が運動する際におけるX方向の誤差量を表す。Erryxは、X方向へ機械構造98が運動する際におけるY方向の誤差量を表す。Errzxは、X方向へ機械構造98が運動する際におけるZ方向の誤差量を表す。図8に示す矢印24は、Errxx,ErryxおよびErrzxの和である誤差量を表す。
なお、式(1),(2)および(3)に示す機械モデルは例である。機械モデルは、式(1),(2)および(3)に示すものに限られない。機械モデルは、伝達関数の代わりに状態空間モデルが用いられたものでも良い。機械モデルは、時間領域の関数により記述されたものでも良い。機械モデルには、速度指令の代わりに加速度指令が使用されても良く、速度フィードバックの代わりに加速度フィードバックが使用されても良い。加速度フィードバックは、駆動機構97の状態量である加速度のデータである。また、機械モデルには、速度指令と速度フィードバックとの差の代わりに、加速度指令と加速度フィードバックとの差が使用されても良い。状態量である速度のデータには、数値制御工作機械99aが有する複数のサーボ制御部6の各々によって速度を検出した結果、または、複数のセンサの各々によって速度を検出した結果が使用されても良い。状態量である加速度のデータには、数値制御工作機械99aが有する複数のサーボ制御部6の各々によって加速度を検出した結果、または、複数のセンサの各々によって加速度を検出した結果が使用されても良い。
Kxx,Kxzは、任意の実数である。ωx1,ωx2,ζx1,ζx2は、任意の正の実数である。誤差量は、任意の正の実数である。式(1),(3)では、単一の機械構造98の変形量を記述するための周波数として、各軸方向において共通の周波数ωx1,ωx2を使用する。式(1),(3)では、単一の機械構造98の変形量を記述するための減衰係数として、各軸方向において共通の減衰係数ζx1,ζx2を使用する。機械モデルには、軸方向ごとに異なる周波数が使用されても良く、軸方向ごとに異なる減衰係数が使用されても良い。
Errxx,ErryxおよびErrzxの各々は、理想的な工具位置に対してプラスX方向へ工具76が変位する加工誤差が生じる場合に正の値を取る。Errxx,ErryxおよびErrzxの各々は、理想的な工具位置に対してマイナスX方向へ工具76が変位する加工誤差が生じる場合に負の値を取る。例えば、Errzxが正の値を取る場合、工具76は、工作物78から浮き上がる。Errzxが負の値を取る場合、工具76は、工作物78へ沈み込む。
式(1)および(3)には、X軸についての軸データを変数として含む機械モデルの例を示した。機械モデルとしては、X軸以外の軸であるY軸、Z軸、B軸またはC軸についての軸データを変数として含む機械モデルも設定される。Y軸、Z軸、B軸またはC軸についての軸データを変数として含む機械モデルにも、X軸についての軸データを変数として含む機械モデルと同様に、X方向、Y方向およびZ方向の各軸方向における誤差量を表す機械モデルが含まれる。すなわち、X軸、Y軸、Z軸、B軸およびC軸の各々の方向である各軸方向における機械構造98の運動に伴う機械構造98の変形を模擬するモデルであって、機械構造98の変形によるX方向、Y方向およびZ方向の各々における誤差量を表す機械モデルが、数値制御工作機械99aには設定される。設定された機械モデルは、モデル保持部13に格納される。なお、数値制御工作機械99aには、誤差が顕著な軸方向の機械モデルのみが設定されても良い。数値制御工作機械99aには、直進軸であるX軸、Y軸およびZ軸の各々の方向における機械構造98の運動についての誤差量を表す機械モデルのみが設定されても良い。
図9は、図6に示す数値制御装置1aが有する補正量演算部14aの構成例を示す図である。加工誤差推定部12は、工具76の変位を生じる方向である誤差方向と誤差方向における誤差量とを示す加工誤差情報を補正量演算部14aへ出力する。補正量演算部14aは、モデル保持部13から機械モデルを読み出す。補正量演算部14aは、補正の対象とする1つ以上の軸を選択する軸選択部31aと、補正量を計算する補正量計算部32aとを備える。
軸選択部31aは、加工誤差情報と機械モデルとに基づいて、補正の対象とする軸を選択する。例えば、図8に示すように加工誤差が生じる場合、誤差方向は、X方向およびZ方向である。この場合、誤差方向であるX方向およびZ方向と、誤差方向における誤差量であるErrxxおよびErrzxとを示す加工誤差情報が、軸選択部31aへ入力される。軸選択部31aは、機械モデルを基に、入力された加工誤差情報がX軸駆動部93Xの駆動による加工誤差情報であることを認識する。
図8に示す例において、Errxxは、矢印24により表される誤差量のうち、加工面に含まれる方向の誤差量成分である。Errzxは、矢印24により表される誤差量のうち、加工面に垂直な方向の誤差量成分である。ErrxxおよびErrzxのうちErrxxは、加工面に垂直な方向における削り過ぎ、または、加工面に垂直な方向における削り残しの要因にはならない。一定の半径の工具76の使用により工具76の半径以内の距離において加減速が行われた場合に、加工面に含まれる方向の誤差量成分による削り残しが生じたとしても、その削り残しの部分の前後を加工する際に、その削り残しの部分は削り取られることになる。このため、加工面に含まれる方向の誤差量成分による削り残しは、加工不良とはならない。また、加工面に含まれる方向の削り過ぎがあったとしても、加工誤差とはならない。一方、加工面に垂直な方向の誤差量成分による加工誤差は、加工面に垂直な方向における削り残し、または、加工面に垂直な方向における削り過ぎを生じさせ、加工不良となって残る。このことから、軸選択部31aは、加工誤差情報に示される誤差方向であるX方向およびZ方向から、補正の対象とする軸としてZ方向を選択する。
このように、軸選択部31aは、機械モデルと各軸方向の加工誤差情報とを基に、補正の対象とする軸を選択する。軸選択部31aは、選択された軸を示す軸情報を補正量計算部32aへ出力する。
補正量計算部32aには、加工誤差情報と軸情報とが入力される。補正量計算部32aは、軸情報に示される各軸についての補正量を、加工誤差情報に基づいて計算する。図8に示す例の場合、補正量計算部32aは、Z方向を示す軸情報と加工誤差情報とに基づいて、X軸駆動部93Xの駆動によるZ方向の加工誤差を低減させる補正量を計算する。すなわち、補正量計算部32aは、Z軸駆動部93Zによる被駆動部の運動を補正するための補正量Zrcを計算する。例えば、補正量の計算例としては、Z方向の誤差量成分であるErrzxとは逆の方向に被駆動部を動作させることによってErrzxを相殺させるために、-Errzxを補正量とすることが挙げられる。補正量計算部32aは、補正の対象に選択された軸について、加工誤差推定部12で推定された誤差量を打ち消し得る補正量を計算する。
補正量の演算処理による遅延、通信による遅延、または、Z軸駆動部93Zのサーボ制御部6の応答遅れなどによって、補正が遅延する場合がある。あるいは、誤差量を相殺可能な補正量とは異なる補正量が計算される場合がある。Z軸駆動部93Zのサーボ制御部6への位置指令の入力に対するZ軸駆動部93Zの応答までの伝達関数をGzm(s)として、補正量計算部32aは、制御系の逆伝達関数であるGzm
-1を用いて、制御系の特性を補償可能とする補正量である-ErrzxGzm
-1を出力しても良い。補正量計算部32aは、求めた補正量の情報を指令値出力部15へ出力する。指令値出力部15は、補正量に基づいて各軸の位置指令を補正する。
次に、数値制御装置1aの動作手順について説明する。図10は、実施の形態1にかかる数値制御工作機械99aが有する数値制御装置1aの動作手順を示すフローチャートである。
ステップS1において、数値制御装置1aの加工誤差推定部12は、モデル保持部13から機械モデルを読み出す。ステップS2において、加工誤差推定部12は、軸データと機械モデルとに基づいて誤差方向と誤差量とを推定し、加工誤差情報を出力する。加工誤差推定部12は、各軸方向のうち工具76の変位を生じる方向である誤差方向と誤差方向における誤差量とを推定する。加工誤差推定部12は、推定された誤差方向と推定された誤差量とを示す加工誤差情報を出力する。
ステップS3において、数値制御装置1aの補正量演算部14aは、軸選択部31aによって、補正の対象とする1つ以上の軸を加工誤差情報に基づいて選択する。ステップS4において、補正量演算部14aは、補正量計算部32aによって、加工誤差情報に基づいて補正量を演算する。補正量計算部32aは、求めた補正量の情報を指令値出力部15へ出力する。
ステップS5において、指令値出力部15は、選択された軸についての駆動機構97へ出力される位置指令に補正量を加算する。指令値出力部15は、位置指令に補正量を加算することによって、位置指令を補正する。指令値出力部15は、補正後の位置指令をサーボ制御部6へ出力する。以上により、数値制御装置1aは、図10に示す手順による動作を終了する。
実施の形態1によると、数値制御装置1aは、軸データと機械モデルとに基づいて誤差方向と誤差量とを推定して、補正量を演算する。数値制御装置1aは、各軸の軸駆動部の加減速によって、機械構造98の変形による加工誤差が生じる場合に、加工に影響を及ぼす軸方向の加工誤差のみを補正することができる。数値制御装置1aは、加工に影響を及ぼさない軸方向の加工誤差については補正を行わないことで、不要な補正によって懸念される加工精度の悪化を低減できる。以上により、数値制御装置1aおよび数値制御工作機械99aは、機械構造98の変形に起因する加工誤差を低減できるという効果を奏する。
実施の形態2.
実施の形態2では、加工誤差を高精度に補正可能とする補正量を簡単な近似計算により計算する例について説明する。実施の形態2にかかる数値制御工作機械99aの構成は、実施の形態1にかかる数値制御工作機械99aの構成と同様である。実施の形態2では、上記の実施の形態1と同一の構成要素には同一の符号を付し、実施の形態1とは異なる構成について主に説明する。
実施の形態1では、補正量演算部14aは、補正の対象に選択された軸について、機械モデルに基づいて推定された誤差量を打ち消し得る補正量を出力する。ただし、制御系の遅れによって、計算された補正量では加工誤差の十分な補正が困難となる場合がある。または、制御系の特性を補償する逆伝達関数を補正量の演算に用いる場合、伝達関数のモデル化精度が低いことが補正の精度に影響する場合があり得る。逆伝達関数に微分項が存在する場合、補正量が振動的になる場合がある。
加工誤差の補正では、実際に加工誤差が発生するタイミングにおいて補正のための運動が遅延無く開始されることが重要である。加工面に対し工具76が沈み込むことによる削り過ぎは、一度でも発生すると、その後修正することはできない。その一方、加工面から工具76が浮き上がることにより削り残しが発生する場合は、削り残しの部分の上を工具76が通過する間に工具位置を適正な位置とすることによって削り残しの部分を除去できるため、加工不良を挽回する余地はある。このように、削り過ぎについては補正のタイミングの遅れは許されない一方、削り残しについては、多少発生したとしても加工誤差発生を回避できる。
図11は、実施の形態2にかかる数値制御装置1aの補正量演算部14aが有する補正量計算部32bの構成例を示す図である。実施の形態2において、補正量演算部14aは、図9に示す補正量計算部32aとは異なる補正量計算部32bを備える。
補正量計算部32bは、実際に発生が予想される誤差量よりも補正量を大きくすることによって、許容可能な削り残しを発生させる。すなわち、補正量計算部32bは、補正のための運動による削り過ぎが一切発生しないようにするとともに、補正のための運動による削り残しが発生した場合でも補正前後の運動で削り残しを加工可能な補正量を演算する。
補正量計算部32bは、基準補正量計算部33と、クランプ部34と、変化率計算部35とを備える。基準補正量計算部33は、軸情報と各軸方向についての加工誤差情報とに基づいて、補正量の基準値である基準補正量を計算する。X軸駆動部93Xの駆動によるZ方向の誤差量であるErrzxを例とすると、基準補正量は、-αErrzxである。αは任意の実数である。基準補正量計算部33は、Errzxにマイナスを付した-Errzxにαを乗算することにより、-αErrzxを求める。αの値は、実際に補正を行いながら加工および加工後の形状の計測を行い、削り残しが発生しない条件を探索することにより決定される。基準補正量計算部33は、基準補正量の情報をクランプ部34へ出力する。
クランプ部34は、補正量の上限値であるZrxlim+を上回る基準補正量に、上限値であるZrxlim+によるクランプ処理を施す。または、クランプ部34は、補正量の下限値Zrxlim-を下回る基準補正量に、下限値であるZrxlim-によるクランプ処理を施す。上限値の絶対値と下限値の絶対値とは、互いに同じでも良く、互いに異なっても良い。クランプ部34は、上限値と下限値との双方が設定されるものに限られない。クランプ部34には、上限値と下限値とのうちの一方のみが設定されても良い。上限値には、-Errzxの最大値が設定されても良い。下限値には、-Errzxの最小値が設定されても良い。加工誤差が生じない補正量を実験的に求めることにより、求めた補正量を基に上限値と下限値とが設定されても良い。クランプ部34は、クランプ後の補正量の情報を変化率計算部35へ出力する。
補正量演算部14aは、クランプ部34を含む補正量計算部32bを有することによって、上限値および下限値の少なくとも一方に基づいたクランプ処理が施された補正量を出力する。補正量演算部14aは、クランプ部34でのクランプ処理によって、上限値よりも大きい補正量、または、下限値よりも小さい補正量が出力されないようにする。
変化率計算部35は、補正量を変化させる変化率を計算する。変化率計算部35は、補正量を0からクランプ後の補正量へ変化させる際における変化率と、クランプ後の補正量から0へ補正量を変化させる際における変化率とを計算する。変化率計算部35は、例えば、X軸駆動部93Xが加速度の変化を開始した時点をt=0として、クランプ後の補正量まで時刻tに対して線形に補正量を変化させる場合における変化率を計算する。変化率計算部35は、1次関数、2次関数、三角関数、または指数関数といった、任意の関数によって変化率を計算しても良く、これらの関数の組合せにより近似される数式によって変化率を計算しても良い。変化率計算部35は、計算された変化率に従って変化させた補正量を出力する。
図12は、図11に示す補正量計算部32bによる補正量の計算例について説明するための図である。図12では、補正量計算部32bにおいて行われる補正量の近似計算の概要をグラフにより示す。図12における(a),(b),(c)の各グラフの縦軸はZ方向の補正量であるZrcを表す。図12における(a),(b),(c)の各グラフの横軸は時刻tを表す。
図12の(a)には、Z方向の誤差量成分であるErrzxにマイナスを付した-Errzxを表すグラフと、基準補正量計算部33により計算される基準補正量である-αErrzxを表すグラフとを示す。数値制御装置1aは、基準補正量計算部33における基準補正量の計算によって、補正開始時または補正終了時に実際に発生する誤差量に応じた補正を可能とし、補正の遅れを無くすことができる。
図12の(b)には、クランプ部34によるクランプ処理後の補正量を表すグラフを実線により示す。ここでは、-αErrzxを上限値であるZrxlim+によりクランプ処理した結果を示す。数値制御装置1aは、クランプ部34におけるクランプ処理によって、上限値よりも大きい補正量、または、下限値よりも小さい補正量が出力されないようにする。これにより、数値制御装置1aは、加減速の前後において加工しきれない削り残しが発生することを回避できる。
図12における(c)には、変化率計算部35によって計算された変化率に従ってクランプ処理後の補正量を変化させた場合における補正量を表すグラフを実線により示す。加速度の変化が開始された時刻から補正量がZrxlim+に到達するまで、一定の変化率で補正量は増加する。補正量がZrxlim+に維持された後、一定の変化率で補正量は減少する。数値制御装置1aは、変化率計算部35において計算された変化率に従って補正量を変化させることにより、簡易な演算により補正量を求めることができる。
上記説明では、補正量計算部32bは、-Errzxから補正量を計算することとしたが、これに限られない。補正量計算部32bは、制御系の特性を補償可能とする補正量である-ErrzxGzm
-1から補正量を計算しても良い。また、上記説明では補正量計算部32bにクランプ部34と変化率計算部35とが設けられることとしたが、補正量計算部32bでは、クランプ部34と変化率計算部35とのうちの一方が省略されても良い。
実施の形態2において、補正量演算部14aは、誤差方向において工具76が加工面に向かう場合は補正量を出力し、誤差方向において工具76が加工面から遠ざかる場合は補正量をゼロとしても良い。この場合、数値制御装置1aは、削り過ぎのみを補正し、削り残しは補正しない。これにより、数値制御装置1aは、目視において目立つ傷となる加工誤差を低減できる。
実施の形態2によると、数値制御装置1aおよび数値制御工作機械99aは、加工誤差の厳密なモデル化が困難である場合において、加工誤差を高精度に補正可能とする補正量を簡単な近似計算により計算することができるという効果を奏する。
実施の形態3.
実施の形態3では、補正量を一定時間において維持させる補正時間調整を行う例について説明する。実施の形態3にかかる数値制御工作機械99aの構成は、実施の形態1にかかる数値制御工作機械99aの構成と同様である。実施の形態3では、上記の実施の形態1または2と同一の構成要素には同一の符号を付し、実施の形態1または2とは異なる構成について主に説明する。
図13は、実施の形態3にかかる数値制御装置1aが有する補正量演算部14cの構成例を示す図である。実施の形態3において、数値制御装置1aは、図6および図9に示す補正量演算部14aの代わりに、補正量演算部14cを有する。補正量演算部14cは、図9に示す軸選択部31aとは異なる軸選択部31cと、図9に示す補正量計算部32aとは異なる補正量計算部32cとを備える。
加工誤差推定部12は、工具76の変位を生じる方向である誤差方向と誤差方向における誤差量とを示す加工誤差情報を補正量演算部14cへ出力する。補正量演算部14cは、モデル保持部13から機械モデルを読み出す。軸選択部31cは、加工誤差情報と機械モデルとに基づいて、補正の対象とする1つ以上の軸を選択する。軸選択部31cは、選択された軸を示す軸情報を補正量計算部32cへ出力する。補正量計算部32cには、加工誤差情報と軸情報とが入力される。補正量計算部32cは、軸情報に示される各軸についての補正量を、加工誤差情報に基づいて計算する。
次に、数値制御工作機械99aによる加工の例と補正量の計算例とについて説明する。図14は、実施の形態3にかかる数値制御工作機械99aによる加工の例について説明するための図である。図14には、XY平面内において工具76を移動させることによって工作物78の加工面を加工した場合における工具76の軌跡の例を示す。図14に示す破線矢印は、工具76の軌跡を表す。この加工では、Z方向には工具76は移動させないものとする。
工具76は、工作物78の外部の加工開始位置P4から移動を開始し、コーナ部で運動方向を変えながら、工作物78の外周部から工作物78の中心に向かう渦巻状の加工経路に沿って反時計回りに移動する。工具76は、渦巻状の加工経路に沿って反時計回りに移動しながら工作物78の表面を加工する。工具76は、工作物78のXY平面における中心付近の加工終了位置P5に到達するまで、工作物78の表面を加工する。
工具76の運動方向が変化する位置では、X軸駆動部93XまたはY軸駆動部93Yが加減速を行う。図14に示す実線の円25は、加工面の削り過ぎによる加工誤差形状を表す。円25で表す加工誤差形状は、加減速の際に加工面に対して工具76が沈み込むことによって生じる。図14に示す破線の円26は、加工面の削り残しによる加工誤差形状を表す。円26で表す加工誤差形状は、加減速の際に工具76が加工面から浮き上がることによって生じる。図14に示すように、円25で表す加工誤差形状は、加工面のうちプラスX方向側の半分において生じる。円26で表す加工誤差形状は、加工面のうちマイナスX方向側の半分において生じる。
X軸駆動部93Xの駆動によって、X方向にErrxxの加工誤差、Y方向にErryxの加工誤差、Z方向にErrzxの加工誤差がそれぞれ生じる。Y軸駆動部93Yの駆動によって、X方向にErrxyの加工誤差、Y方向にErryyの加工誤差、Z方向にErrzyの加工誤差がそれぞれ生じる。加工誤差推定部12は、軸データと機械モデルとに基づいて、各加工誤差の誤差量を計算する。ErrzxおよびErrzyの各々は、加工面に垂直な方向の誤差量成分である。図14に示す加工の場合において、軸選択部31cは、補正の対象とする軸としてZ方向を選択する。
補正量計算部32cには、加工誤差情報と軸情報とが入力される。補正量計算部32cは、軸情報に示される各軸についての補正量を、加工誤差情報に基づいて計算する。図14に示す例の場合、補正量計算部32cは、Z方向を示す軸情報と加工誤差情報とに基づいて、X軸駆動部93Xの駆動によるZ方向の加工誤差とY軸駆動部93Yの駆動によるZ方向の加工誤差とを補正するための補正量を計算する。すなわち、補正量計算部32cは、Z軸駆動部93Zによる被駆動部の運動を補正するための補正量Zrcを計算する。
図15は、図13に示す補正量演算部14cが有する補正量計算部32cの構成例を示す図である。補正量計算部32cは、図11に示す補正量計算部32bと同様に、基準補正量計算部33と、クランプ部34と、変化率計算部35とを備える。さらに、補正量計算部32cは、補正時間調整部36を備える。
基準補正量計算部33は、軸情報と各軸方向についての加工誤差情報とに基づいて、補正量の基準値である基準補正量を計算する。Errzxから求まる基準補正量は、-αxErrzxである。Errzyから求まる基準補正量は、-αyErrzyである。αx,αyは、任意の実数である。基準補正量計算部33は、基準補正量の情報をクランプ部34へ出力する。
クランプ部34は、補正量の上限値であるZrxlim+,Zrylim+を上回る基準補正量に、上限値であるZrxlim+,Zrylim+によるクランプ処理を施す。または、クランプ部34は、補正量の下限値Zrxlim-,Zrylim-を下回る基準補正量に、下限値であるZrxlim-,Zrylim-によるクランプ処理を施す。Zrxlim+は、X軸駆動部93Xの駆動によって生じるZ方向の加工誤差に対する補正量の上限値である。Zrylim+は、Y軸駆動部93Yの駆動によって生じるZ方向の加工誤差に対する補正量の上限値である。Zrxlim-は、X軸駆動部93Xの駆動によって生じるZ方向の加工誤差に対する補正量の下限値である。Zrylim-は、Y軸駆動部93Yの駆動によって生じるZ方向の加工誤差に対する補正量の下限値である。クランプ部34は、クランプ後の補正量の情報を変化率計算部35へ出力する。
変化率計算部35は、補正量を変化させる変化率を計算する。変化率計算部35は、計算された変化率に従って変化させた補正量を補正時間調整部36へ出力する。補正時間調整部36は、クランプ処理の基準である上限値または下限値に補正量が到達した場合に補正量を一定時間において維持させる調整を行う。補正量演算部14cは、補正時間調整部36を含む補正量計算部32cを有することによって、クランプ処理の基準である上限値または下限値に補正量が到達した場合に補正量を一定時間において維持させる。
図16は、図15に示す補正量計算部32cによる補正量の計算例について説明するための図である。図16では、補正量計算部32cにおいて行われる補正量の近似計算の概要をグラフにより示す。図16における(a),(b),(c)の各グラフの縦軸はZ方向の補正量Zrcを表す。図16における(a),(b),(c)の各グラフの横軸は時刻tを表す。
図16の(a)には、Z方向の誤差量成分であるErrzx,Errzyにマイナスを付した-Errzx,-Errzyを表すグラフと、基準補正量計算部33により計算される基準補正量である-αxErrzx,-αyErrzyを表すグラフとを示す。数値制御装置1aは、基準補正量計算部33における基準補正量の計算によって、補正開始時または補正終了時に実際に発生する誤差量に応じた補正を可能とし、補正の遅れを無くすことができる。
図16の(b)には、クランプ部34による処理と変化率計算部35による処理とを経た補正量を表すグラフを実線により示す。図16の(b)における実線のグラフは、変化率計算部35によって計算された変化率に従ってクランプ処理後の補正量を変化させた場合における補正量を表す。ここでは、-αxErrzxを上限値であるZrxlim+によりクランプ処理した補正量を変化率に従って変化させた結果と、-αyErrzyを上限値であるZrylim+によりクランプ処理した補正量を変化率に従って変化させた結果とを示す。Zrxlim+とZrylim+とは、互いに異なる値とする。なお、Zrxlim-とZrylim-とは、いずれも0とする。数値制御装置1aは、クランプ部34におけるクランプ処理によって、上限値よりも大きい補正量、または、下限値よりも小さい補正量が出力されないようにする。これにより、数値制御装置1aは、加減速の前後において加工しきれない削り残しが発生することを回避できる。数値制御装置1aは、変化率計算部35において計算された変化率に従って補正量を変化させることにより、簡易な演算により補正量を求めることができる。
図16の(c)には、補正時間調整部36による調整を経た補正量を表すグラフを実線により示す。図16の(c)に示す例では、補正量がZrxlim+に維持される時間が、図16の(b)において実線により示される補正量の場合よりも延ばされている。また、図16の(c)に示す例では、補正量がZrylim+に維持される時間が、図16の(b)において実線により示される補正量の場合よりも延ばされている。補正量がZrxlim+に維持される時間と、補正量がZrylim+に維持される時間とは、任意に設定可能である。ここでは、補正量が上限値に維持される時間を調整する例を示したが、補正時間調整部36は、下限値によるクランプ処理を経た補正量については、補正量が下限値に維持される時間を調整する。
数値制御装置1aは、上限値または下限値に補正量が到達した場合に補正量を一定時間において維持させることによって、コーナ部のように連続して加工誤差が発生し得る部分において、補正量を減少させることなくコーナ部の加工を進行させる。数値制御装置1aは、加工誤差を補正するための運動である補正運動が短い距離の間に繰り返される際のオーバーシュートによる傷の発生を回避することができる。これにより、数値制御装置1aは、加工面の品質低下を防ぐことができる。
加工面からの工具76の浮き上がりによる加工誤差が生じる場合において、浮き上がった工具76が加工面に戻る際におけるオーバーシュートによって、加工面に対して工具76が沈み込むことがあり得る。補正量演算部14cは、オーバーシュートによる加工面の削り過ぎを生じさせないための補正量を演算しても良い。この場合、基準補正量計算部33における基準補正量の計算に用いられるαx,αyを負の値とすることによって、数値制御装置1aは、オーバーシュートによる加工誤差を低減できる。
実施の形態3によると、数値制御装置1aおよび数値制御工作機械99aは、上限値または下限値に補正量が到達した場合に補正量を一定時間において維持させる。これにより、数値制御装置1aおよび数値制御工作機械99aは、連続して加工誤差が発生し得る部分における傷の発生を低減可能とする適切な補正量を演算することができるという効果を奏する。
実施の形態4.
実施の形態4では、図1に示す数値制御工作機械99aとは異なる構成の数値制御工作機械における補正量の計算例について説明する。図17は、実施の形態4にかかる数値制御工作機械99dの構成例を示す図である。数値制御工作機械99dは、加工プログラムに従って軸を駆動する工作機械である。数値制御工作機械99dは、3つの直進軸と2つの回転軸とを備える、旋盤型の5軸複合加工機である。実施の形態4では、上記の実施の形態1から3と同一の構成要素には同一の符号を付し、実施の形態1から3とは異なる構成について主に説明する。
数値制御工作機械99dは、X軸駆動部93Xと、Y軸駆動部93Yと、Z軸駆動部93Zと、A軸駆動部93Aと、C軸駆動部93Cとを備える。X軸、Y軸およびZ軸およびV軸の各々は、直進軸である。A軸およびC軸の各々は、回転軸である。数値制御工作機械99dは、X軸駆動部93X、Y軸駆動部93Y、およびZ軸駆動部93Zの駆動によって、X方向、Y方向およびZ方向に工具76を動かす。A軸駆動部93Aは、Y軸周りに工具76を回転運動させる。C軸駆動部93Cは、Z軸周りに工作物78を回転運動させる。X軸駆動部93Xは、スラント軸と呼ばれる構成を備える。数値制御工作機械99dは、X軸駆動部93XとY軸駆動部93Yとを同時に駆動することによって工具76をX方向に移動させる。
数値制御工作機械99dは、スラント軸であるX軸駆動部93Xと工具76を回転運動させるA軸駆動部93Aとを備えることによって工具軸方向と駆動軸方向とが一致しない点が、図1に示す数値制御工作機械99aとは異なる。このため、数値制御工作機械99dにおける加工面の方向と加工誤差を生じる誤差方向とは、数値制御工作機械99aの場合とは大きく異なる。なお、数値制御工作機械99dが有する数値制御装置1aは、図6に示す数値制御装置1aと同様の構成を備える。
次に、数値制御装置1aによる加工誤差の計算例について説明する。図18は、実施の形態4にかかる数値制御工作機械99dが有する数値制御装置1aによる加工誤差の計算例について説明するための図である。図18には、A軸の角度であるθが45度である状態において工具軸に垂直な加工面41を加工する様子を示す。矢印42は、加工方向を表す。加工方向は、プラスX方向とマイナスZ方向との間の斜め方向である。図18には、加工面41の加工時において工具76が加工面41に対して沈み込む加工誤差が生じる様子を模式的に示す。図18では、機械構造98が変形を生じていない理想状態のときにおける工具76を破線により示す。
図18に示す加工において、X軸駆動部93XとY軸駆動部93YとZ軸駆動部93Zとは、互いに同時に駆動する。X軸駆動部93Xの駆動によって、X方向にErrxxの加工誤差、Y方向にErryxの加工誤差、Z方向にErrzxの加工誤差がそれぞれ生じる。Y軸駆動部93Yの駆動によって、X方向にErrxyの加工誤差、Y方向にErryyの加工誤差、Z方向にErrzyの加工誤差がそれぞれ生じる。Z軸駆動部93Zの駆動によって、X方向にErrxzの加工誤差、Y方向にErryzの加工誤差、Z方向にErrzzの加工誤差がそれぞれ生じる。
実施の形態4において、数値制御装置1aの補正量演算部14aは、図9に示す補正量演算部14aと同様の構成を備える。軸選択部31aは、加工誤差情報と機械モデルとに基づいて、補正の対象とする1つ以上の軸を選択する。
数値制御工作機械99dにおいてX方向に生じる総誤差量であるErrXは、次の式(4)により得られる。数値制御工作機械99dにおいてY方向に生じる総誤差量であるErrYは、次の式(5)により得られる。数値制御工作機械99dにおいてZ方向に生じる総誤差量であるErrZは、次の式(6)により得られる。なお、図18に示す矢印43は、ErrX,ErrYおよびErrZの和である誤差量を表す。
機械構造98は、機械構造98の重心と機械構造98の駆動点との間の距離が長いほど、大きな変形を生じ易い。そのため、数値制御工作機械99dにおいて、機械構造98は、X軸駆動部93Xの駆動およびZ軸駆動部93Zの駆動によるX方向およびZ方向の変形を生じ易い。例えば、ErrXとErrZとのうちの一方が支配的な加工誤差が生じる場合、補正量演算部14aは、実施の形態1または実施の形態2の場合と同様に補正量を演算し得る。ErrXの寄与とErrZの寄与とが同程度である加工誤差が生じる場合、補正量演算部14aは、加工面41に垂直な方向に生じる誤差量を演算する必要がある。
加工面41に垂直な方向に生じる誤差量であるErrNは、次の式(7)により得られる。
φは、次の式(8)を満足する。
補正量計算部32aは、加工面41に垂直な方向のErrNが生じる場合、ErrNを相殺させる-ErrNを補正量とし得る。補正量計算部32aは、次の式(9),(10),(11)により、X方向の補正量であるXrcとY方向の補正量であるYrcとZ方向の補正量であるZrcとに-ErrNを分ける計算を行う。δは、X軸とY軸との間の角度である。ここでは、δ=π/4(rad)とする。
なお、上記説明では、数値制御装置1aは実施の形態1と同様の構成としたが、これに限られない。実施の形態4における数値制御装置1aの構成は、実施の形態2または実施の形態3と同様の構成でも良い。
実施の形態4によると、数値制御装置1aおよび数値制御工作機械99dは、数値制御工作機械99dの構成が工具軸方向と駆動軸方向とが一致しない場合でも、適切な補正量を演算することができる。これにより、数値制御装置1aおよび数値制御工作機械99dは、加工誤差を低減できるという効果を奏する。
実施の形態5.
実施の形態5では、加工誤差を補正する加工プログラムを加工プログラム生成装置によって生成する例について説明する。図19は、実施の形態5にかかる加工プログラム生成装置2の構成例を示す図である。実施の形態5では、上記の実施の形態1から4と同一の構成要素には同一の符号を付し、実施の形態1から4とは異なる構成について主に説明する。
加工プログラム生成装置2は、数値制御工作機械の加工誤差を補正するための加工プログラムを作成する装置である。加工プログラム生成装置2は、CAMソフトウェアまたは対話式プログラム作成装置等に付属されて加工プログラムを編集する付属プログラムである。加工プログラム生成装置2は、加工形状を指定する形状データに基づいた加工プログラムに、加工誤差を補正するための変更を施すことによって、加工誤差を補正する加工プログラムを生成する。以下、変更前加工プログラムとは、加工誤差を補正するための変更が施される前の加工プログラムとする。
加工プログラム生成装置2は、変更前加工プログラムを受け付ける加工プログラム入力部10と、加工誤差を推定する加工誤差推定部12と、機械モデルを保持するモデル保持部13と、補正量を演算する補正量演算部14aと、数値制御工作機械99eの動作をシミュレーションするシミュレーション部51と、補正量に従って変更前加工プログラムを補正する加工プログラム補正部52とを備える。
加工プログラム入力部10は、受け付けた変更前加工プログラムをシミュレーション部51と加工プログラム補正部52との各々へ出力する。シミュレーション部51は、変更前加工プログラムに基づいて、数値制御工作機械99eの数値制御装置の挙動、および数値制御工作機械99eのサーボ制御装置である各軸のサーボ制御部6の挙動を模擬する。シミュレーション部51は、補正量が記述される前の加工プログラムである変更前加工プログラムから解析される加工経路に基づいて軸データを計算する。シミュレーション部51は、サーボ制御装置についての既知のシミュレーション方式を用いて、位置フィードバック、速度フィードバック、または加速度フィードバックといった、各軸の状態量を演算する。シミュレーション部51は、各軸の状態量である軸データを加工誤差推定部12へ出力する。
加工誤差推定部12は、モデル保持部13から機械モデルを読み出す。加工誤差推定部12は、軸データと機械モデルとに基づいて、各軸方向のうち工具76の変位を生じる方向である誤差方向と誤差方向における誤差量とを推定し、推定された誤差方向と推定された誤差量とを示す加工誤差情報を出力する。加工誤差推定部12は、例えば、シミュレーション部51から取得される加速度フィードバックに基づいて、実施の形態1の場合と同様に各軸方向の誤差量を計算する。加工誤差推定部12は、補正量演算部14aへ加工誤差情報を出力する。
補正量演算部14aは、モデル保持部13から機械モデルを読み出す。補正量演算部14aは、補正の対象とする1つ以上の軸を加工誤差情報に基づいて選択して、選択された軸についての駆動機構97による運動を補正するための補正量を演算する。補正量演算部14aは、図9に示す軸選択部31aにより、機械モデルと各軸方向の加工誤差情報とを基に、補正の対象とする軸を選択する。補正量演算部14aは、図9に示す補正量計算部32aにより、軸情報に示される各軸についての補正量を、加工誤差情報に基づいて計算する。補正量計算部32aは、求めた補正量の情報を加工プログラム補正部52へ出力する。
加工プログラム補正部52は、補正量に従って加工誤差を補正するための運動である補正運動を変更前加工プログラムに追加することにより、補正量に従って変更前加工プログラムを補正する。加工プログラム補正部52は、補正運動を追加する変更が施された加工プログラムである変更後加工プログラムを数値制御工作機械99eへ出力する。数値制御工作機械99eは、図1に示す数値制御工作機械99aと同様の構成を備える。数値制御工作機械99eの数値制御装置は、変更後加工プログラムに従って駆動機構97を制御する。数値制御工作機械99eの数値制御装置は、変更後加工プログラムが入力される加工プログラム入力部と、変更後加工プログラムに従って各軸の位置指令である指令値を生成する指令値生成部と、各軸の位置指令である指令値をサーボ制御部6へ出力する指令値出力部とを備える。
次に、加工プログラム生成装置2の動作手順について説明する。図20は、実施の形態5にかかる加工プログラム生成装置2の動作手順を示すフローチャートである。
ステップS11において、加工プログラム生成装置2のシミュレーション部51は、変更前加工プログラムに基づいて、軸データを計算する。シミュレーション部51は、加工誤差推定部12へ軸データを出力する。
ステップS12において、加工誤差推定部12は、モデル保持部13から機械モデルを読み出す。ステップS13において、加工誤差推定部12は、軸データと機械モデルとに基づいて誤差方向と誤差量とを推定し、加工誤差情報を出力する。加工誤差推定部12は、各軸方向のうち工具76の変位を生じる方向である誤差方向と誤差方向における誤差量とを推定する。加工誤差推定部12は、推定された誤差方向と推定された誤差量とを示す加工誤差情報を出力する。
ステップS14において、加工プログラム生成装置2の補正量演算部14aは、軸選択部31aによって、補正の対象とする1つ以上の軸を加工誤差情報に基づいて選択する。ステップS15において、補正量演算部14aは、補正量計算部32aによって、加工誤差情報に基づいて補正量を演算する。補正量計算部32aは、求めた補正量の情報を加工プログラム補正部52へ出力する。
加工プログラム補正部52は、補正量に従って加工誤差を補正するための補正運動を変更前加工プログラムに追加することにより、補正量に従って変更前加工プログラムを補正する。ステップS16において、加工プログラム補正部52は、補正量に従って補正された加工プログラムである変更後加工プログラムを出力する。以上により、加工プログラム生成装置2は、図20に示す手順による動作を終了する。
図21は、実施の形態5にかかる加工プログラム生成装置2によって生成される加工プログラムの第1の例について説明するための図である。図21には、変更前加工プログラムに示される加工経路の例と変更後加工プログラムに示される加工経路の例とを示す。図21に示す加工経路は、コーナ部における加工経路とする。
図21に示す経路53は、変更前加工プログラムに示される加工経路とする。経路53は、P10,P11,P14,P17およびP18の5個の点を順次通る経路である。図21に示す経路54は、変更後加工プログラムに示される加工経路とする。経路54には、経路53におけるP11とP14との間の直線経路の代わりに、P11,P12,P13,P14を順次通る経路が含まれている。また、経路54には、経路53におけるP14とP17との間の直線経路の代わりに、P14,P15,P16,P17を順次通る経路が含まれている。
加工プログラム補正部52は、P12へ向けてZ方向への工具76の移動を開始させる点であるP11を変更前加工プログラムに追加する。加工プログラム補正部52は、P11からP12とP13とP14とに工具76を順次移動させる運動についての記述を変更前加工プログラムに追加する。加工プログラム補正部52は、P16からZ方向への工具76の移動を終了させる点であるP17を変更前加工プログラムに追加する。加工プログラム補正部52は、P14からP15とP16とP17とに工具76を順次移動させる運動についての記述を変更前加工プログラムに追加する。
加工プログラム補正部52は、図12を参照して説明した方法により計算された補正量を、P11,P12,P13,P14を順次通る経路と、P14,P15,P16,P17を順次通る経路との各々に反映させる。図21には、参考として、補正量計算部32bにより計算された補正量の代わりに基準補正量が使用された場合の経路55を破線により示す。
図22は、実施の形態5にかかる加工プログラム生成装置2の加工プログラム補正部52による加工プログラムの補正について説明するための図である。図22には、変更前加工プログラムの例である加工プログラム56と、変更後加工プログラムの例である加工プログラム57とを示す。加工プログラム57のうち破線で囲われた2つの部分の各々は、補正運動のために追加されたプログラムである。破線で囲われた2つの部分のうちの一方は、P11からP12とP13とP14とに工具76を順次移動させる補正運動が記述された部分である。破線で囲われた2つの部分のうちの他方は、P14からP15とP16とP17とに工具76を順次移動させる補正運動が記述された部分である。
加工プログラム生成装置2は、実施の形態3と同様に、補正量を一定時間において維持させる補正時間調整を行うこととしても良い。図23は、実施の形態5にかかる加工プログラム生成装置2によって生成される加工プログラムの第2の例について説明するための図である。
加工プログラム生成装置2は、図19に示す補正量演算部14aの代わりに、図13に示す補正量演算部14cを備える。補正量演算部14cは、図15に示す補正量計算部32cを備える。補正量演算部14cは、補正時間調整部36を含む補正量計算部32cを有することによって、クランプ処理の基準である上限値または下限値に補正量が到達した場合に補正量を一定時間において維持させる。
例えば、加工プログラム補正部52により図21に示すように加工経路を補正した場合において、コーナ部における2mm以内の範囲において2回の補正運動が連続するものとする。この場合、コーナ部において、短い距離における補正運動が繰り返されることとなる。図23に示す例では、加工プログラム生成装置2は、一定時間において上限値に維持させた補正量を補正量演算部14cにより演算することによって、当該2回の補正運動を1回の補正運動にまとめて変更前加工プログラムに追加する。
図23に示す経路58は、変更後加工プログラムに示される加工経路とする。経路58には、経路53のうちP11,P14,P17を順次通る経路の代わりに、P11,P12,P14’P16,P17を順次通る経路が含まれている。
加工プログラム生成装置2は、上限値または下限値に補正量が到達した場合に補正量を一定時間において維持させることによって、コーナ部のように連続して加工誤差が発生し得る部分において、補正量を減少させることなくコーナ部の加工を進行させる。加工プログラム生成装置2は、短い距離の間に補正運動が繰り返される際のオーバーシュートによる傷の発生を回避することができる。これにより、加工プログラム生成装置2は、加工面の品質低下を防ぐことができる。
実施の形態5によると、加工プログラム生成装置2は、軸データと機械モデルとに基づいて誤差方向と誤差量とを推定して、補正量を演算する。加工プログラム生成装置2は、各軸の軸駆動部の加減速によって、機械構造98の変形による加工誤差が生じる場合に、加工に影響を及ぼす軸方向の加工誤差のみを補正することができる。加工プログラム生成装置2は、加工に影響を及ぼさない軸方向の加工誤差については補正を行わないことで、不要な補正によって懸念される加工精度の悪化を低減できる。以上により、加工プログラム生成装置2は、機械構造98の変形に起因する加工誤差を低減できるという効果を奏する。
実施の形態6.
実施の形態6では、機械学習によって機械モデルを学習する例について説明する。図24は、実施の形態6にかかる数値制御装置1fの構成例を示す図である。実施の形態6では、上記の実施の形態1から5と同一の構成要素には同一の符号を付し、実施の形態1から5とは異なる構成について主に説明する。図24には、数値制御装置1fとサーボ制御部6と機械装置部96とを示す。
数値制御装置1fは、図6に示す数値制御装置1aと同様の構成である、加工プログラム入力部10、指令値生成部11、加工誤差推定部12、モデル保持部13、補正量演算部14a、および指令値出力部15を備える。さらに、数値制御装置1fは、機械モデルを学習する機械学習装置100を備える。ここでは、数値制御装置1fは、実施の形態1にて説明する数値制御装置1aの構成に機械学習装置100が組み合わせられたものとする。数値制御装置1fは、実施の形態2,3または4の数値制御装置1aの構成に機械学習装置100が組み合わせられたものでも良い。
機械学習装置100には、軸データと加工条件情報と加工誤差測定結果と加工誤差情報とが入力される。機械学習装置100には、数値制御工作機械99aの各軸の位置ごとにおける軸データである、位置指令、速度指令、加速度指令、位置フィードバック、速度フィードバック、または加速度フィードバックの1つ以上が機械装置部96から入力される。軸データは、サーボ制御部6から機械学習装置100へ入力されても良い。
加工条件情報は、数値制御工作機械99aの加工条件についての情報である。加工条件情報には、工作物78の形状、工作物78の材質、工具径、工具材質、工具形状、刃数、1刃当たりの送り量、工具76の回転速度、機械構造情報、工具摩擦情報、および工具使用時間といった情報が含まれる。機械構造情報は、機械構造98の構成を特徴付ける情報である。
加工誤差測定結果は、実際の加工において加工誤差を測定した結果である。加工誤差測定結果には、加工誤差の有無の判定結果が含まれても良い。加工誤差の有無の判定結果は、数値制御工作機械99aを使用する作業者等が目視により加工誤差の有無を判定した結果でも良い。加工誤差測定結果には、加工面の凹凸情報から抽出された加工誤差の大きさの情報が使用されても良い。加工面の凹凸情報は、3次元測定器(Coordinate Measuring Machine:CMM)またはマイクロスコープといった機器の使用によって取得される。または、加工誤差測定結果には、工具76の近傍に取り付けられた加速度センサの出力信号が使用されても良い。加工誤差測定結果には、加工を模した数値制御工作機械99aの動作を観測した結果が使用されても良い。例えば、レーザ変位計といった変位センサを工具76の代わりに取り付けて加工時と同様に数値制御工作機械99aを動作させた場合における変位センサの出力信号が、加工誤差測定結果に使用されても良い。
図25は、実施の形態6にかかる数値制御装置1fが有する機械学習装置100の構成例を示す図である。機械学習装置100は、状態観測部101と学習部102とを備える。状態観測部101は、訓練データセットと加工誤差測定結果と加工誤差情報とを、状態変数として観測する。訓練データセットは、軸データおよび加工条件情報を含むデータセットである。学習部102は、訓練データセットに従って機械モデルを学習する。具体的には、学習部102は、機械構造98の変形量を記述するための係数、機械構造98の変形を記述するための周波数、および機械構造98の変形を記述するための減衰係数といった、機械モデルのパラメータを学習する。
学習部102が用いる学習アルゴリズムはどのようなものを用いても良い。一例として、学習部102が用いる学習アルゴリズムに強化学習(Reinforcement Learning)を適用する場合について説明する。強化学習は、ある環境内におけるエージェントである行動主体が、現在の状態を観測し、取るべき行動を決定する、というものである。エージェントは行動を選択することで環境から報酬を得て、一連の行動を通じて報酬が最も多く得られるような方策を学習する。強化学習の代表的な手法として、Q学習(Q-Learning)およびTD学習(TD-Learning)などが知られている。例えば、Q学習の場合、行動価値関数Q(s,a)の一般的な更新式である行動価値テーブルは、次の式(12)で表される。行動価値関数Q(s,a)は、環境「s」のもとで行動「a」を選択する行動の価値である行動価値Qを表す。
上記の式(12)において、「st+1」は、時刻「t」における環境を表す。「at」は、時刻「t」における行動を表す。行動「at」によって、環境は「st+1」に変わる。「rt+1」は、その環境の変化によってもらえる報酬を表す。「γ」は、割引率を表す。「α」は、学習係数を表す。Q学習を適用した場合、機械モデルのパラメータが行動「at」となる。
上記の式(12)により表される更新式は、時刻「t+1」における最良の行動「a」の行動価値が、時刻「t」において実行された行動「a」の行動価値Qよりも大きければ、行動価値Qを大きくし、逆の場合は、行動価値Qを小さくする。換言すれば、時刻「t」における行動「a」の行動価値Qを、時刻「t+1」における最良の行動価値に近づけるように、行動価値関数Q(s,a)を更新する。それにより、ある環境における最良の行動価値が、それ以前の環境における行動価値に順次伝播する。
学習部102は、報酬計算部103および関数更新部104を有する。報酬計算部103は、状態変数に基づいて報酬を計算する。関数更新部104は、報酬計算部103によって算出される報酬に従って、機械モデルのパラメータを決定するための関数を更新する。
具体的には、報酬計算部103は、加工誤差情報に示される誤差量と加工誤差測定結果とに基づいて報酬「r」を計算する。例えば、加工誤差情報に示される誤差量に加工誤差測定結果が一致する場合において、報酬計算部103は、報酬「r」を増大させる。報酬計算部103は、報酬の値である「1」を与えることによって報酬「r」を増大させる。なお、報酬の値は「1」に限られない。また、加工誤差情報に示される誤差量に加工誤差測定結果が一致しない場合において、報酬計算部103は、報酬「r」を低減させる。報酬計算部103は、報酬の値である「-1」を与えることによって報酬「r」を低減させる。なお、報酬の値は「-1」に限られない。
関数更新部104は、報酬計算部103によって計算される報酬に従って、機械モデルのパラメータを決定するための関数を更新する。関数の更新は、訓練データセットに従って、例えば行動価値テーブルを更新することによって行うことができる。行動価値テーブルは、任意の行動と、その行動価値とを関連付けてテーブルの形式で記憶したデータセットである。例えばQ学習の場合、上記の式(12)により表される行動価値関数Q(st,at)を、機械モデルのパラメータを決定するための関数として用いる。機械学習装置100は、学習部102での学習結果である機械モデルをモデル保持部13へ出力する。
学習部102は、数値制御工作機械99aの全ての軸についての情報を一括で訓練データセットにして機械モデルを学習しても良く、数値制御工作機械99aの軸ごとに訓練データセットを構築して軸ごとに機械モデルを学習しても良い。
ここまで、学習部102が用いる学習アルゴリズムに強化学習を適用する場合について説明したが、学習アルゴリズムには、強化学習以外の学習が適用されても良い。学習部102は、訓練データセットを入力とし、機械モデルのパラメータを出力とするニューラルネットワークを用いて学習を行っても良い。学習部102は、例えば、深層学習(Deep Learning)、遺伝的プログラミング、帰納論理プログラミングまたはサポートベクターマシンといった学習アルゴリズムを用いて機械学習を実行しても良い。
学習部102は、数値制御装置1fに内蔵されるものに限られない。学習部102は、数値制御装置1fの外部の装置により実現されても良い。この場合、学習部102として機能する装置は、ネットワークを介して数値制御装置1fに接続可能な装置であっても良い。学習部102として機能する装置は、クラウドサーバ上に存在する装置であっても良い。
実施の形態6によると、数値制御装置1fは、機械モデルを学習することによって、加工誤差の発生条件が加工条件によって複雑に変化する場合において、加工誤差を高精度に予測することができるという効果を奏する。
次に、実施の形態1から6にかかる数値制御装置1a,1fを実現するハードウェアについて説明する。数値制御装置1a,1fの処理部である、加工プログラム入力部10、指令値生成部11、加工誤差推定部12、補正量演算部14a,14c、指令値出力部15、および機械学習装置100は、処理回路により実現される。処理回路は、プロセッサがソフトウェアを実行する回路であっても良いし、専用の回路であっても良い。
処理回路がソフトウェアにより実現される場合、処理回路は、例えば、図26に示す制御回路である。図26は、実施の形態1から6にかかる制御回路200の構成例を示す図である。制御回路200は、入力部201、プロセッサ202、メモリ203および出力部204を備える。入力部201は、制御回路200の外部から入力されたデータを受信してプロセッサ202に与えるインターフェース回路である。出力部204は、プロセッサ202またはメモリ203からのデータを制御回路200の外部に送るインターフェース回路である。
処理回路が図26に示す制御回路200である場合、上記処理部は、ソフトウェア、ファームウェア、またはソフトウェアとファームウェアとの組み合わせにより実現される。ソフトウェアまたはファームウェアはプログラムとして記述され、メモリ203に格納される。処理回路では、メモリ203に記憶されたプログラムをプロセッサ202が読み出して実行することにより、各機能を実現する。すなわち、処理回路は、数値制御装置1a,1fの処理が結果的に実行されることになるプログラムを格納するためのメモリ203を備える。また、これらのプログラムは、数値制御装置1a,1fの手順および方法をコンピュータに実行させるものであるともいえる。
プロセッサ202は、CPU(Central Processing Unit)、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサ、またはDSP(Digital Signal Processor)である。メモリ203は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、フラッシュメモリ、EPROM(Erasable Programmable Read Only Memory)、EEPROM(登録商標)(Electrically Erasable Programmable Read Only Memory)等の、不揮発性または揮発性の半導体メモリ、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスクまたはDVD(Digital Versatile Disc)等が該当する。
図26は、汎用のプロセッサ202およびメモリ203により各構成要素を実現する場合のハードウェアの例であるが、各構成要素は、専用のハードウェア回路により実現されても良い。図27は、実施の形態1から6にかかる専用のハードウェア回路205の構成例を示す図である。
専用のハードウェア回路205は、入力部201、出力部204および処理回路206を備える。処理回路206は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはこれらを組み合わせた回路である。数値制御装置1a,1fの各機能を機能別に処理回路206で実現しても良いし、各機能をまとめて処理回路206で実現しても良い。なお、各構成要素は、制御回路200とハードウェア回路205とが組み合わされて実現されても良い。
図19に示す加工プログラム生成装置2は、図26に示すハードウェア構成と同様のハードウェア構成、または、図27に示すハードウェア構成と同様のハードウェア構成により実現される。加工プログラム生成装置2の処理部である、加工プログラム入力部10、加工誤差推定部12、補正量演算部14a、シミュレーション部51、および加工プログラム補正部52は、処理回路により実現される。処理回路は、プロセッサがソフトウェアを実行する回路であっても良いし、専用の回路であっても良い。
図25に示す学習部102が数値制御装置1fの外部の装置により実現される場合、学習部102として機能する装置は、図26に示すハードウェア構成と同様のハードウェア構成、または、図27に示すハードウェア構成と同様のハードウェア構成により実現される。学習部102として機能する装置は、処理回路により実現される。処理回路は、プロセッサがソフトウェアを実行する回路であっても良いし、専用の回路であっても良い。
以上の各実施の形態に示した構成は、本開示の内容の一例を示すものである。各実施の形態の構成は、別の公知の技術と組み合わせることが可能である。各実施の形態の構成同士が適宜組み合わせられても良い。本開示の要旨を逸脱しない範囲で、各実施の形態の構成の一部を省略または変更することが可能である。