(57)【要約】【課題】５軸加工機の数値制御装置において、指令始点から指令終点にかけて特異点を超える場合に、工具方向が、ワーク設置誤差後の工具方向から乖離することを抑制する数値制御装置を提供する。【解決手段】数値制御装置１０は、ワーク設置誤差補正部１３を備え、ワーク設置誤差補正部１３は、工具位置方向計算部１３１と、解が複数存在する場合に、回転軸２軸の位置は、直前の解に近い解を選択する第１方式、又は、指令数値に近い解を選択する第２方式により選択する誤差補正部１３２とを備える。数値制御装置１０は、プログラムを先読みする先読部１１を更に備え、ワーク設置誤差補正部１３は、先読みした指令数値を、第１方式によって誤差補正して補正指令数値を求め、補正指令数値が５軸加工機の可動領域内である場合には、第１方式による誤差補正を設定し、補正指令数値が５軸加工機の可動領域外である場合には、第２方式による誤差補正を設定する。【選択図】図２０
2019204354.tif 000002
【特許請求の範囲】
【請求項１】
テーブルに取付けられたワークに対して直線軸３軸と回転軸２軸によって加工する５軸加工機を制御する数値制御装置であって、
ワークを設置した時の設置誤差を補正するワーク設置誤差補正部を備え、
前記ワーク設置誤差補正部は、
前記直線軸３軸と前記回転軸２軸の指令数値に基づいて工具の指令座標系上の位置と方向を計算する工具位置方向計算部と、
前記工具位置方向計算部で計算された工具の指令座標系上の位置と方向とが設置誤差を有するワーク上で保たれるように、ワークを設置した時の設置誤差に対応してあらかじめ設定した誤差量によって前記直線軸３軸と前記回転軸２軸に対する誤差補正を行う誤差補正部であって、三角関数の計算において解が複数存在する場合に、補正する回転軸２軸の位置は、直前の解に近い解を選択する第１方式により選択するか、又は、前記指令座標系上での前記指令数値に近い解を選択する第２方式と、直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換わる第３方式とのいずれか一方により選択する誤差補正部と、
を備え、
前記ワーク設置誤差補正部によって求めた直線軸３軸と回転軸２軸の座標値に基づいて各軸を駆動する数値制御装置において、
プログラムを先読みする先読部を更に備え、
前記ワーク設置誤差補正部は、
先読みした指令数値を、前記第１方式によって誤差補正して補正指令数値を求め、
前記補正指令数値が前記５軸加工機の可動領域内である場合には、前記第１方式による誤差補正を設定し、前記補正指令数値が前記５軸加工機の可動領域外である場合には、前記第２方式による誤差補正と第３方式による誤差補正とのいずれか一方を設定する、
数値制御装置。
【請求項２】
前記ワーク設置誤差補正部は、先読みした指令が加工モードの指令である場合、
前記加工モードにおける複数のブロックにおける前記補正指令数値の全てが前記５軸加工機の可動領域内である場合に、前記加工モードに対して前記第１方式による誤差補正を設定し、
前記加工モードにおける複数のブロックにおける前記補正指令数値の少なくとも１つが前記５軸加工機の可動領域外である場合に、前記加工モードに対して前記第２方式及び第３方式のいずれか一方による誤差補正を設定する、
請求項１に記載の数値制御装置。
【請求項３】
前記ワーク設置誤差補正部は、先読みした指令が位置決めモードの指令である場合、前記第２方式及び第３方式のいずれか一方による誤差補正を設定する、
請求項１又は２に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、テーブルに固定されて取り付けられたワークに対して直線軸３軸と回転軸２軸によって加工する５軸加工機を制御する数値制御装置に関する。
【背景技術】
【０００２】
テーブルに取り付けられたワーク（加工物）を直線軸３軸（Ｘ軸、Ｙ軸、Ｚ軸）と回転軸２軸（Ｘ軸回りのＡ軸、Ｙ軸回りのＢ軸、Ｚ軸回りのＣ軸のいずれか２軸）によって加工する５軸加工機を制御する数値制御装置において、各軸の座標値を制御する方法として、工具の位置、工具の方向および速度をテーブルに固定された直交座標系（テーブル座標系）上で指令し、これを機械の制御点における各軸の座標値に座標変換して制御する方法である工具先端点制御が知られている（特許文献１参照）。
工具先端点制御では、工具の位置と速度が制御され、工具方向は各回転軸の位置を補間することによって制御される。
【０００３】
ところで、５軸加工機を制御する数値制御装置において、ワークを設置したときの設置誤差を補正するワーク設置誤差補正機能が知られている（例えば、特許文献２〜５）。
特許文献２には、加工物の取付誤差補正方法および取付誤差補正装置の技術が開示されている。この中では、ワーク（加工物）の設置誤差（取り付け誤差）を補正する手段が開示されている。この文献（例えば、段落００４３や段落００４６）に補正されたＢ軸やＡ軸位置を求めるためにａｒｃｔａｎを使用した計算を行うことが開示されている。しかし、ａｒｃｔａｎは０度から３６０度の間において通常２つの解を持つ。
【０００４】
図１８におけるＢ軸及びＣ軸の位置（Ｂ０，Ｃ０）のように、Ｂ＝０度の位置の場合、工具方向はＣの位置に依存しない。このようなＢ＝０度の位置を特異点という。
位置（Ｂ０，Ｃ０）から工具をＹ方向に２０度傾斜させる場合、Ｂ軸及びＣ軸の位置（Ｂ２０，Ｃ９０）と位置（Ｂ−２０，Ｃ−９０）（換言すれば、（Ｂ３４０、Ｃ２７０））のように、２つの解がある。２つの解において、一方から見て他方を「別解」という。
このように、５軸加工機において、ワークに対して工具をある方向に向けるための回転軸２軸の位置の組み合わせは、０度から３６０度の間に通常２組存在する。
【０００５】
ワーク設置誤差補正において、回転軸２軸を補正（工具方向を補正）する場合、数値制御装置は工具の方向をワークの傾斜誤差分傾けるため、回転軸２軸の位置を計算する。その際、０度から３６０度の間に存在する２組の位置の中からどちらかを選択しなければならない。特許文献３〜５には、その選択方法が開示されている。
【０００６】
特許文献３には、２つの解のうち、直前の解に近い解を選択する方式（第１方式）が開示されている。
特許文献４には、２つの解のうち、指令位置に近い解を選択する方式（第２方式）が開示されている。
特許文献５には、直前の解に近い解を選択しつつ、回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式（第３方式）が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−１９５９１７号公報
【特許文献２】特開平７−２９９６９７号公報
【特許文献３】特開昭６３−１３２３０７号公報
【特許文献４】特許第４２９１３８６号公報
【特許文献５】特許第５４６１９８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図４に示すように、ワークの設置位置においてＹ軸周りに少し傾斜誤差βがあったとする。このとき、ワークに対する工具の位置と方向が保持されるように傾斜誤差βを補正した場合、図５及び図６に示すように、ワーク設置時のＹ軸回りの傾斜誤差βだけ工具が傾く。
【０００９】
第２方式又は第３方式によるワーク設置誤差補正では、指令始点から指令終点にかけて特異点を超える場合、特異点（Ｂ＝０度）を通過するときに、図１９に示すように、工具方向（特異点通過時の工具方向）が、あるべき工具方向（ワーク設置誤差補正後の工具方向）から乖離してしまう（例えば、起き上がってしまう）。
例えば、ワーク設置時の傾斜誤差が小さければ、特異点通過時の工具方向の逸脱の角度も小さいため、問題にならない。
【００１０】
しかし、ワーク設置時の傾斜誤差が大きく、特異点通過時の工具方向の逸脱の角度が大きくなると（例えば、起き上がり角度が大きくなると）、加工に悪影響を及ぼす可能性がある。例えば、工具側面とワークの干渉、又は、側面加工において加工不良等が生じる可能性がある。
なお、第１方式によるワーク設置誤差補正では、特異点を通過しないため、工具方向の逸脱は発生しない。
【００１１】
本発明は、５軸加工機の数値制御装置において、指令始点から指令終点にかけて特異点を超える場合に、工具方向が、ワーク設置誤差後の工具方向から乖離することを抑制する数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１２】
（１）  本発明に係る数値制御装置（例えば、後述の数値制御装置１０，１０Ａ）は、テーブルに取付けられたワークに対して直線軸３軸と回転軸２軸によって加工する５軸加工機を制御する数値制御装置であって、ワークを設置した時の設置誤差を補正するワーク設置誤差補正部（例えば、後述のワーク設置誤差補正部１３，１３Ａ）を備え、前記ワーク設置誤差補正部は、前記直線軸３軸と前記回転軸２軸の指令数値に基づいて工具の指令座標系上の位置と方向を計算する工具位置方向計算部（例えば、後述の工具位置方向計算部１３１）と、前記工具位置方向計算部で計算された工具の指令座標系上の位置と方向とが設置誤差を有するワーク上で保たれるように、ワークを設置した時の設置誤差に対応してあらかじめ設定した誤差量によって前記直線軸３軸と前記回転軸２軸に対する誤差補正を行う誤差補正部であって、三角関数の計算において解が複数存在する場合に、補正する回転軸２軸の位置は、直前の解に近い解を選択する第１方式により選択するか、又は、前記指令座標系上での前記指令数値に近い解を選択する第２方式と、直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換わる第３方式とのいずれか一方により選択する誤差補正部（例えば、後述の誤差補正部１３２）とを備え、前記ワーク設置誤差補正部によって求めた直線軸３軸と回転軸２軸の座標値に基づいて各軸を駆動する数値制御装置において、プログラムを先読みする先読部（例えば、後述の指令解析部１１）を更に備え、前記ワーク設置誤差補正部は、先読みした指令数値を、前記第１方式によって誤差補正して補正指令数値を求め、前記補正指令数値が前記５軸加工機の可動領域内である場合には、前記第１方式による誤差補正を設定し、前記補正指令数値が前記５軸加工機の可動領域外である場合には、前記第２方式による誤差補正と第３方式による誤差補正とのいずれか一方を設定する。
【００１３】
（２）  （１）に記載の数値制御装置において、前記ワーク設置誤差補正部は、先読みした指令が加工モードの指令である場合、前記加工モードにおける複数のブロックにおける前記補正指令数値の全てが前記５軸加工機の可動領域内である場合に、前記加工モードに対して前記第１方式による誤差補正を設定してもよいし、前記加工モードにおける複数のブロックにおける前記補正指令数値の少なくとも１つが前記５軸加工機の可動領域外である場合に、前記加工モードに対して前記第２方式及び第３方式のいずれか一方による誤差補正を設定してもよい。
【００１４】
（３）  （１）又は（２）に記載の数値制御装置において、前記ワーク設置誤差補正部は、先読みした指令が位置決めモードの指令である場合、前記第２方式及び第３方式のいずれか一方による誤差補正を設定してもよい。
【発明の効果】
【００１５】
本発明によれば、５軸加工機の数値制御装置において、指令始点から指令終点にかけて特異点を超える場合に、工具方向が、ワーク設置誤差後の工具方向から乖離することを抑制する数値制御装置を提供することができる。
【図面の簡単な説明】
【００１６】
【図１】工具ヘッド回転型の５軸加工機において、基準ワーク位置に置かれるべきワークが実ワーク位置のように誤差を持って置かれた場合の誤差補正を説明する図である。
【図２】工具ヘッド回転型の５軸加工機において、ヘッドの工具を支持する部分（ＴＳ）と工具のみを描いて説明する図である。
【図３】図２を上から見た図である。
【図４】ワーク設置位置においてＹ軸周りに少し誤差（β）があったとした場合を示す図である。
【図５】ワークに対する工具の位置と方向が保持されるように誤差を補正した場合、始点終点だけを描いた場合の工具の移動を示した図である。
【図６】図５を上から見た図として始点終点だけを描いた図である。
【図７】第１方式（直前の解に近い解を選ぶ方式）での工具を支持する部分（ＴＳ）と工具の動作を説明する図である。
【図８】第２方式（指令に近い解を選ぶ方式）での工具を支持する部分（ＴＳ）と工具の動作を説明する図である。
【図９】旋回回転軸（Ｃ軸）に大きな（１８０度近い）移動が発生する好ましくない例を説明する図である。
【図１０】β＝−１度の時の図８，図９の移動をＢ，Ｃ軸を座標軸とする経路で表した図である。
【図１１】第１方式（直前の解に近い解を選ぶ方式）で、Ｂ，Ｃ軸を座標軸とする経路で表した図である。つまり、β＝−１度の時の図７の移動をＢ，Ｃ軸を座標軸とする経路で表した図である。
【図１２】第３方式（直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換える）において、解ＡがＰｓ（指令経路上の特異点）に最も近づいたところで、解Ａから解Ｂへ直線的に移動することを説明する図である。
【図１３】図１２の指令経路に対応する回転軸の補間および誤差計算のみを記載して説明する表である。
【図１４】図１２，図１３の第３方式において、図８に対応する回転軸の移動を説明する図である。
【図１５】第３方式において、解Ａが指令経路上の特異点に最も近づいたところで、解Ａから解Ｂへ滑らかに曲線で移動することを説明する図である。
【図１６】図１５の指令経路に対応する回転軸の補間および誤差計算のみを記載して説明する表である。
【図１７】図１５，図１６の第３方式において、図８に対応する回転軸の移動を説明する図である。
【図１８】特異点、及び、２つの解を説明する図である。
【図１９】第２方式又は第３方式において、特異点（Ｂ＝０度）を通過するときに、工具方向が、あるべき工具方向（ワーク設置誤差補正後の工具方向）から乖離することを説明する図である。
【図２０】第１実施形態に係る数値制御装置の構成を示す図である。
【図２１】第１実施形態に係る数値制御装置によるプログラム先読み動作のフローチャートである。
【図２２】第１実施形態に係る数値制御装置によるプログラム実行時のワーク設置誤差補正動作のフローチャートである。
【図２３】プログラムの一例を示す図である。
【図２４】第２実施形態に係る数値制御装置の構成を示す図である。
【図２５】第２実施形態に係る数値制御装置によるプログラム先読み動作のフローチャートである。
【図２６】第２実施形態に係る数値制御装置によるプログラム実行時のワーク設置誤差補正動作のフローチャートである。
【図２７】プログラムの一例を示す図である。
【発明を実施するための形態】
【００１７】
以下、添付の図面を参照して本発明の実施形態の一例について説明する。なお、各図面において同一又は相当の部分に対しては同一の符号を附すこととする。
【００１８】
本実施形態では、図１に示されるようなヘッド回転型の５軸加工機で説明する。ただし、５軸加工機にはテーブル回転型やヘッドもテーブルも回転する混合型などもある。また、図１では回転軸２軸をＢ，Ｃ軸としているが、Ａ，Ｂ軸やＡ，Ｃ軸が回転軸２軸である５軸加工機もある。それらの５軸加工機に対してもワークに対する工具の相対的な方向（工具方向）の制御という点では同様であるので、本発明を適用することができる。
【００１９】
テーブルに取り付けられたワーク（加工物）を直線軸３軸と回転軸２軸によって加工する５軸加工機を制御する数値制御装置において、特異点近くで速度や加速度が非常に大きくなる回転軸を旋回回転軸と呼び、他の回転軸を傾斜回転軸と呼ぶ。図１に示されるヘッド回転型の５軸加工機の構成では、Ｂ軸が傾斜回転軸であり、Ｃ軸が旋回回転軸である。Ｚ軸方向の工具方向が指令された時、Ｂ＝０度となるがＣ軸の位置は任意（不定）である。つまり、Ｃ＝０度でもＣ＝１８０度でも工具方向はＺ軸方向である。したがって、Ｂ軸位置が０度の位置が特異点である。ただし、特異点は傾斜回転軸（Ｂ軸）位置が０の時とは限らない。機械構成によっては、Ｂ＝９０度やＢ＝１８０度など他の角度が特異点である場合もある。
つまり、図１の状態はＢ＝９０度である機械構成の場合は、Ｂ軸が９０度の位置が特異点である。さらに、特異点Ｂ＝０度でも９０度でもなく他の場合もある。以降の説明では図１の状態はＢ＝０度でありＢ軸位置が０度の位置が特異点であるとするが、必ずしも傾斜回転軸位置が０度の位置が特異点とは限らない。
本実施は図１のような工作機械を想定し（図１は、Ｃ＝９０度としている）、図１のように基準ワーク位置に置かれるべきワークが実ワーク位置のように誤差を持って置かれた場合の誤差補正に関する。
【００２０】
この機械においては、直線軸Ｘ，Ｙ，Ｚ軸の動作とともに工具ヘッドがＺ軸回りのＣ軸とＹ軸回りのＢ軸によって回転するようになっている。
ワークを設置した時のずれやテーブルの傾斜などによって本来のワーク位置に対して実ワーク位置がずれている。そのずれ量は予め測定され、基準機械座標系に対してＸ，Ｙ，Ｚ軸方向の並進誤差量（δｘ，δｙ，δｚ）、Ｘ軸回りの回転誤差量（α）、Ｙ軸回りの回転誤差量（β）、Ｚ軸回りの回転誤差量（γ）分ずれた実機械座標系として設定されている。つまり、基準機械座標系上の基準ワーク位置と実機械座標系上の実ワークの位置が同じとなるように、この誤差量にしたがって基準機械座標系に対する実機械座標系が作成されている。
【００２１】
特許文献２には、加工物の取付誤差補正方法および取付誤差補正装置の技術を開示している。この中では、ワーク（加工物）の設置誤差（取り付け誤差）を補正する手段が開示されている。この文献（例えば、段落００４３や段落００４６）に補正されたＢ軸やＡ軸位置を求めるためにａｒｃｔａｎを使用した計算を行うことが開示されている。しかし、ａｒｃｔａｎは０度から３６０度の間において通常２つの解を持っており、これでは補正されたＢ軸やＡ軸位置は確定しない。
【００２２】
（第１方式）
この点については例えば特許文献３に開示されているように、直前の解に近い解を選ぶのが一般的である。その方式を第１方式とする。
しかし、特許文献３に開示される第１方式（直前の解に近い解を選ぶ方式）は、終点位置において指令位置通りの位置に到達しない場合があるという問題がある。
【００２３】
（第２方式）
そこで、特許文献４では、直前の解に近い解を選ぶのではなく指令に近い解を選ぶ方式が採用されている。この方式を第２方式とする。
【００２４】
特許文献４に開示される第２方式（指令に近い解を選ぶ方式）の技術思想について説明する。指令数値に基づいて工具の指令座標系上の、つまり、基準機械座標系上の位置と方向を計算する。
Ｂ＝Ｂｃ，Ｃ＝Ｃｃの時の工具方向（Ｉ，Ｊ，Ｋ）Ｔは数１式のように求められる。これが、工具の指令座標系上の方向である。ここで「Ｔ」は転置を表す記号である。また、ｃｏｓ（Ｃｃ）などの三角関数の表記において自明の場合は（  ）を省略する。
【００２５】
【数１】
2019204354.tif 000003
【００２６】
プログラム指令は基準機械座標系で指令されているので、工具の指令座標系上の位置は直線軸のプログラム指令（Ｘｃ，Ｙｃ，Ｚｃ）そのものである。
【００２７】
次に、数２式のように誤差補正を行う。Ｘ軸回りの回転誤差量（α）、Ｙ軸回りの回転誤差量（β）、Ｚ軸回りの回転誤差量（γ）によって、（Ｉ，Ｊ，Ｋ）Ｔは（Ｉａ，Ｊａ，Ｋａ）Ｔと補正される。ここで、回転誤差を補正する順は（α）、（β）、（γ）の順とする。
【００２８】
【数２】
2019204354.tif 000004
【００２９】
同様に、（Ｘｃ，Ｙｃ，Ｚｃ）Ｔは（Ｘａ，Ｙａ，Ｚａ）Ｔと補正される。（Ｘｃ，Ｙｃ，Ｚｃ）Ｔの補正においては、回転誤差の補正とともに並進誤差（δｘ，δｙ，δｚ）の補正も加算される（数３式を参照）。
【００３０】
【数３】
2019204354.tif 000005
【００３１】
数２式によって求められる（Ｉａ，Ｊａ，Ｋａ）Ｔに対し、それを実現するＢ，Ｃ軸位置Ｂａ，Ｃａは数４式〜数２０式のように計算される。ここで、ａｒｃｃｏｓの計算、ａｒｃｔａｎの計算はともに０度〜１８０度の値を得るものとする。ａｒｃｔａｎの計算におけるｎ＊３６０度の項のｎは整数値であり、３６０度のｎ倍の値を加算した位置も解であることを示す。つまり、Ｃ軸は正負方向に何回転でも動作可能であるが、Ｂ軸は−１８０度〜１８０度内の動作が可能としている。
【００３２】
１）Ｉａ＞０，Ｊａ＞０の場合
解Ａ
【数４】
2019204354.tif 000006
解Ｂ
【数５】
2019204354.tif 000007
【００３３】
２）Ｉａ＜０，Ｊａ＞０の場合
解Ａ
【数６】
2019204354.tif 000008
解Ｂ
【数７】
2019204354.tif 000009
【００３４】
３）Ｉａ＜０，Ｊａ＜０の場合
解Ａ
【数８】
2019204354.tif 000010
解Ｂ
【数９】
2019204354.tif 000011
【００３５】
４）Ｉａ＞０，Ｊａ＜０の場合
解Ａ
【数１０】
2019204354.tif 000012
解Ｂ
【数１１】
2019204354.tif 000013
【００３６】
５）Ｉａ＝０，Ｊａ＞０の場合
解Ａ
【数１２】
2019204354.tif 000014
解Ｂ
【数１３】
2019204354.tif 000015
【００３７】
６）Ｉａ＝０，Ｊａ＜０の場合
解Ａ
【数１４】
2019204354.tif 000016
解Ｂ
【数１５】
2019204354.tif 000017
【００３８】
７）Ｉａ＞０，Ｊａ＝０の場合
解Ａ
【数１６】
2019204354.tif 000018
解Ｂ
【数１７】
2019204354.tif 000019
【００３９】
８）Ｉａ＜０，Ｊａ＝０の場合
解Ａ
【数１８】
2019204354.tif 000020
解Ｂ
【数１９】
2019204354.tif 000021
【００４０】
９）Ｉａ＝０，Ｊａ＝０，Ｋａ＝１の場合
解Ａのみ
【数２０】
2019204354.tif 000022
なお、Ｉａ＝０，Ｊａ＝０，Ｋａ＝−１の場合については、機械構造上そのようなケースが発生しないので記載しない。
【００４１】
ここで、１），２），３），４），５），６），７），８）の場合ごとに解Ａと解Ｂの２組の解があるが、それぞれの解の組およびｎに対して数２１式で示される量Ｄを計算し、最も小さなＤとなる解の組およびｎを選択する。ただし、９）の場合は、解は１組なので数２０式の解を選択する。
【数２１】
2019204354.tif 000023
【００４２】
このことによって、指令値Ｂｃ，Ｃｃに基づいて計算された工具の指令座標系上の方向により近い工具方向が選択される。これが、第２方式（指令に近い解を選ぶ方式である特許文献４に開示される技術）の技術思想である。
【００４３】
ここで、第１方式（直前の解に近い解を選ぶ方式である特許文献３に開示される技術）と第２方式（指令に近い解を選ぶ方式である特許文献４に開示される技術）の差について、具体的な例を挙げて詳述する。
【００４４】
図２に示されるような始点と終点とからなる指令があったとする。なお、次図以降ではヘッドの工具を支持する部分（ＴＳ）と工具のみ描いている。また、Ｂ軸、Ｃ軸位置をわかりやすくするために、ＴＳと工具について少し形状を変更し長く描いている。さらに、工具長＝５００ｍｍで（Ｘ，Ｙ，Ｚ）＝（０，０，０）の位置を加工する例にしている。第２方式および後述する第３方式は回転軸制御に特徴がある方式であるため、ここでは簡単のためＸ，Ｙ，Ｚの移動指令はない例としているが、通常は回転軸指令とともに直線軸指令もあり、直線軸の移動に対して数３式の誤差補正が行われる。
【００４５】
図２を上から見ると図３のようになる。ここで、図４のようにワークの設置位置においてＹ軸周りに少し誤差（β）があったとする。
そのことにより、ワークに対する工具の位置と方向が保持されるように誤差を補正した場合、始点終点だけを描くと工具の移動は図５のようになることが期待される。つまり、上からの図として始点終点だけを描くと図６のように補正されることが期待される。なお、以降、簡単のため、斜視図ではなく上からの図とする。
【００４６】
ところが、図７のように第１方式（直前の解に近い解を選ぶ方式である特許文献３に開示される技術）では、このような動作が実現できない。ここで、前ブロックにおける補正により、工具はすでに補正始点にあるとしている。また、中間点１Ａ，中間点１Ｂのような各位置における＊＊Ａ，＊＊Ｂの２つの解は１）〜８）の場合における解Ａ，解Ｂに対応する。ここで、＊＊は、中間点１、中間点２、中間点３、補正終点を意味する。
【００４７】
図７の（ｄ）における補正終点は図６の「所望補正終点」の反対位置になっている。つまり、終点でのＢ軸、Ｃ軸位置が元の指令位置に対して大きく相違してしまっている。このことは終点に至る加工やそれ以降の加工で誤動作や誤切削が発生したり、障害物に衝突したりする可能性を生じることを意味する。
【００４８】
そこで、図８のように第２方式（指令に近い解を選ぶ方式である特許文献４に開示される技術）によってこのような不都合が解決される。なお、ここでは中間点１までは解Ｂより解Ａが指令経路に近く、中間点３以降は解Ｂが指令経路に近いケースとして説明している。もちろん、その逆のケースもある。
【００４９】
図８における指令位置１，２，３および指令終点位置とは、図２、図３において指令された始点から終点へ移動する途中の位置および終点の位置である。指令位置ｎおよび指令終点位置に対してワーク設置誤差を補正する位置が中間点ｎおよび補正終点である。つまり、それぞれ指令位置１，２，３および指令終点位置に対する補正位置が中間点１，２，３および補正終点である。
【００５０】
図８の（ｄ）における補正終点は図６の「所望補正終点」になっている。このように、第２方式（指令に近い解を選ぶ方式）により、第１方式（直前の解に近い解を選ぶ方式）における不都合を解決している。つまり、第２方式（指令に近い解を選ぶ方式）には所望の（期待される）補正終点に到達することができるという大きな効果がある。
【００５１】
しかし、図８の（ｃ）、図９のように、旋回回転軸（Ｃ軸）に大きな（１８０度近い）移動が発生するのも好ましくない。このことは、β＝−１度の時のＢ，Ｃ軸を座標軸とする経路で表すと図１０のようになる。
【００５２】
指令始点（Ｂ＝−２０度、Ｃ＝９０度）と指令終点（Ｂ＝２０度、Ｃ＝９０度）の指令に対して、補正始点（補正始点Ａ）から開始し、中間点２Ａまでは解Ａが指令に近いので解Ａが選択され、中間点３において指令に近い解Ｂ（中間点３Ｂ）が選択されることにより中間点２Ａから中間点３Ｂへの移動が発生する。中間点３Ｂへ移行後は解Ｂが選択され補正終点Ｂに向かって移動し、最終的には補正終点Ｂに到達する。このように、第２方式（指令に近い解を選ぶ方式）には所望の（期待される）補正終点に到達することができるという大きな効果があるが、旋回回転軸（Ｃ軸）に大きな（１８０度近い）移動が発生するのも好ましくない。
【００５３】
なお、第１方式（直前の解に近い解を選ぶ方式）では、同様にＢ，Ｃ軸を座標軸とする経路で表すと図１１に示されるようになる。補正始点（補正始点Ａ）から開始し、常に解Ａの経路が直前の解に近いため解Ａが選択され、最終的には補正終点Ａに到達する。このことからも、第１方式（直前の解に近い解を選ぶ方式）では指令終点から大きく離れた補正終点Ａに到達することが理解できる。つまり、第１方式では到達したい補正終点Ｂでなく補正終点Ａに到達してしまうのである。
【００５４】
（第３方式）
第２方式のように旋回回転軸（Ｃ軸）に大きな（１８０度近い）移動を発生させない目的で、特許文献５では、直前の解に近い解を選択しつつ、回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式が採用されている。この方式を第３方式とする。
【００５５】
特許文献５に開示される第３方式（直前の解に近い解を選択しつつ、回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式）の技術思想について説明する。
第３方式では、解ＡがＰｓ（指令経路上の特異点）に最も近づいたところで解Ａから解Ｂへ直線的に移動する。
【００５６】
プログラム指令は指令始点（Ｂ＝−２０度、Ｃ＝９０度）と指令終点（Ｂ＝２０度、Ｃ＝９０度）の直線補間指令とする。特異点はＢ＝０の状態であるので、指令始点（Ｂ＝−２０度、Ｃ＝９０度）と指令終点（Ｂ＝２０度、Ｃ＝９０度）を結ぶ直線とＢ＝０の直線との交点がＰｓ（指令経路上の特異点）である。すなわち、Ｐｓ（Ｂｓ，Ｃｓ）＝（０，０）である。ここで、Ｂｓ，ＣｓはＰｓのＢ，Ｃ軸要素である。
ここで、特異点通過判断について説明する。
指令始点と指令終点の２つの指令位置の間で回転軸２軸のうち傾斜回転軸（Ｂ軸）指令の符号が反転する時、それらの指令の間で傾斜回転軸指令が特異点を越えて反対側にあり特異点を通過する必要があると判断する。上記指令では、指令始点ではＢ軸―２０度であり指令終点ではＢ軸２０度であるため、傾斜回転軸指令の符号が反転しているので始点と終点の間でＢ軸指令が特異点を越えて反対側にあり特異点を通過する必要があると判断される。なお、Ｂ軸指令が０度の時には前の指令の符号が継続するとみなす。例えば、指令始点でＢ軸―２０度であり指令終点でＢ軸０度の時は、指令始点と指令終点が特異点を越えて反対側にあるとはみなされない。
ただし、上記説明はＢ＝０度が特異点である場合の説明であり、上述したように、図１の状態はＢ＝９０度である機械構成もある。さらに、特異点はＢ＝０度でも９０度でもなく他の角度の場合もある。そのような５軸加工機においては、傾斜回転軸（Ｂ軸）に関して、（指令始点―特異点）と（指令終点―特異点）の符号が反転するかどうかに着目する。すなわち、傾斜回転軸（Ｂ軸）に関して、（指令始点―特異点）と（指令終点―特異点）の符号が反転すれば、傾斜回転軸指令が特異点を越えて反対側にあり特異点を通過する必要があると判断する。傾斜回転軸（Ｂ軸）に関して、特異点への指令の場合、特異点を越えて反対側にあるとはみなさないのは上記説明と同じである。
【００５７】
図１２において、指令始点（Ｂ＝−２０度、Ｃ＝９０度）と指令終点（Ｂ＝２０度、Ｃ＝９０度）の直線補間指令に対して、誤差補正を行うと補正始点（補正始点Ａ）から開始し、ＰａＡにおいて解ＡとＰｓの距離が最小になるので、解Ａから解ＢのＰａＢへの直線補間を行って解を移行する。ここで、ＰａＡが解移行開始位置、ＰｃＡはＰａＡに対応する指令経路上の点、ＰｃＢはＰｓを中心としたＰｃＡの点対称点、ＰａＢはＰｃＢによる解Ｂの位置である。その後は解Ｂが選択され補正終点Ｂに向かって移動し、最終的には補正終点Ｂに到達する。図１２上、解Ａの経路においてＰａＡはＰｓに最も近い点ではないように見えるが、Ｂ，Ｃ軸のスケールを合わせるとＰｓに最も近い点である。
なお、繰り返しになるが、上述したように、ここでは解移行まで解Ｂより解Ａが指令経路に近く、解移行後は解Ｂが指令経路に近いケースとして説明している。もちろん、その逆のケースもある。
【００５８】
具体的な補間データとしては図１３のようになる。図１３において、β＝−１として、指令始点（Ｂ＝−２０度、Ｃ＝９０度）と指令終点（Ｂ＝２０度、Ｃ＝９０度）の直線補間指令に対して各補間周期での角度変化（Δτ）＝０．４度としている。したがって、ＮＯ．０（指令始点での補間データ）からＮＯ．１００（指令終点での補間データ）までΔτ（０．４度）ずつ補間される。これは、補間周期を１ｍｓｅｃとすれば２４０００度／分の速度に相当する。
【００５９】
図１３において各行の補間および誤差補正計算は次のように行われる。Ｂｃ，ＣｃがＢ，Ｃ軸に関して指令始点から指令終点までΔτ（０．４度）ずつ補間されるデータである。この例では、Ｂｃのみが変化する。各補間周期において補間されたＢｃ，Ｃｃに対して、誤差補正計算を行う。つまり、数１式によって（Ｉ，Ｊ，Ｋ）が計算される。（Ｉ，Ｊ，Ｋ）から数２式によって（Ｉａ，Ｊａ，Ｋａ）が計算される。（Ｉａ，Ｊａ，Ｋａ）から数４式〜数２０式によって解Ａ（ＢａＡ，ＣａＡ），解Ｂ（ＢａＢ，ＣａＢ）が計算される。
【００６０】
したがって、ＮＯ．０における解Ａ（ＢａＡ，ＣａＡ）が補正始点Ａであり、解Ｂ（ＢａＢ，ＣａＢ）が補正始点Ｂであり、ＮＯ．１００における解Ａ（ＢａＡ，ＣａＡ）が補正終点Ａであり、解Ｂ（ＢａＢ，ＣａＢ）が補正終点Ｂである。Ｂｃ，Ｃｃを得るのが補間の計算であり、それらから解Ａ，解Ｂを得るのが誤差補正の計算である。
ここで、ＮＯ．１から順に補間および誤差補正計算を行うにあたり、解Ａ（ＢａＡ，ＣａＡ）とＰｓとの距離（Ｌ０）の増減変化をチェックする。距離（Ｌ０）は数２２式で計算される。
【数２２】
2019204354.tif 000024
【００６１】
解Ａ（ＢａＡ，ＣａＡ）とＰｓとの距離（Ｌ０）の増減変化をチェックするのはその２乗の増減変化をチェックするのと同等であるので、図１３上では数２３式で表される値Ｌをチェックしている。
【数２３】
2019204354.tif 000025
ＮＯ．１，ＮＯ．２，・・・と値Ｌは単調減少しているが、補間周期ＮＯ．３１からＮＯ．３２で増加に転じている（図１３中、背景灰色となっている部分）。そのため、ＮＯ．３１が最小であると判断する。計算誤差によって増加に転じていると誤った判断をする可能性があるならば、あと数回の仮の補間を行ってから、減少から増加に転じたと判断してよい。したがって、ＮＯ．３１の（Ｂｃ，Ｃｃ）がＰｃＡであり、解ＡがＰａＡ、つまり、特異点最接近位置であり解移行開始位置である。
【００６２】
なお、ここで解Ａ（ＢａＡ，ＣａＡ）とＰｓとの距離として数２４式に示されるように、それぞれの項にα，βのような重みを付けてもよい。
【数２４】
2019204354.tif 000026
または数２５式に示されるように、ＢａＡ，ＣａＡとＰｓ間の絶対値の合計としてもよい。
【数２５】
2019204354.tif 000027
【００６３】
そして、Ｂ，Ｃ軸座標系上でのＰｃＡのＰｓに関する点対称位置がＰｃＢであり、それに対して誤差補正計算を行い解Ｂを得ると、それがＰａＢである。つまり、数２６式のようにＰｃＢを求め、それに対して図１３のＮＯ．６９の誤差補正計算を行いＰａＢを求める。
【数２６】
2019204354.tif 000028
【００６４】
そして、ＰａＡからＰａＢに向かって直線補間を行う。直線補間の速度としては、補間周期毎Δτ（０．４度）としてもよいし、ＮＯ．３１の補間周期からＮＯ．３２への補間周期における補間周期あたりの解Ａの変化率を利用してもよいし、別途パラメータ設定しておく速度としてもよい。ここでは、元の補間間隔でＰａＡからＰａＢへの直線補間を行うとする。
【００６５】
ＰｃＡからＰｓに到達するのに要する補間および誤差計算の回数は、数２７式で表される。数２７式で、右辺の分子はＢ，Ｃ軸上のＰｃＡとＰｓとの距離である。つまり、Ｎｉは図１３の補間および誤差計算において、ＰｃＡからＰｓに到達するのに要する補間および誤差計算の回数である。
【数２７】
2019204354.tif 000029
【００６６】
図２の説明でも述べたように、通常は回転軸指令とともに直線軸指令もあり、直線軸の移動に対して数３式の誤差補正を行う。図１３には回転軸の補間および誤差計算のみを記載しているが、各行には通常は同様に直線軸の補間と誤差補正の計算も存在し、ＰｃＡからＰｓに到達する間のその回数はＮｉである。
【００６７】
したがって、ＰａＡからＰａＢへ到達するのに要する補間回数を２＊Ｎｉとしておけば、回転軸がＰａＡからＰａＢに向かって直線補間を行うことと同時に、通常通り直線軸についての補間および誤差補正の計算も行うことが可能である。
【００６８】
Ｂ，Ｃ軸上で、ＰａＡからＰａＢに向かって、Ｎｏ．（３１＋Ｎ）回目（Ｎ＝１，２，・・・，２＊Ｎｉ）の補間点ＰａＩを数２８式のように求めて補間を行う。ＰａＩ（Ｂａ，Ｃａ）はＢ，Ｃ軸に対応してＢａ，Ｃａの要素を持つ。
【数２８】
2019204354.tif 000030
【００６９】
ＰａＡからＰａＢへ直線補間終了後はＰｃＢの次の補間周期にあたるＮｏ．７０の補間周期から指令終点の補間Ｎｏ．１００に向かって補間と誤差補正計算を行うと共に解Ｂを選択する。このようにして、補正終点Ｂに到達する。
【００７０】
図８に対応する回転軸の移動は図１４のようになる。
図８における中間点２Ａから中間点３Ｂへの大きな回転軸移動（図８の（ｃ））が、図１４では（ｂ）から（ｃ）のように少し小さくなっている。元々図８では、誤差補正の様子をわかりやすくするため誤差が大きい（β＝−１５度程度）ことを想定した図となっているため、図８と図１４の差がそれほど大きくならないように見える。しかし、一般的に誤差はもっと小さい（｜β｜＝１度以下、通常はさらに小さく｜β｜＝０．１度以下）ものであり、その場合、図８においては回転軸の１８０度近い動作は避けられないが、図１４での（ｂ）から（ｃ）への回転軸動作はごく小さなものになる。
【００７１】
なお、第３方式では、解Ａが指令経路上の特異点に最も近づいたところで、解Ａから解Ｂへ滑らかに曲線で移動してもよい。
プログラム指令は上記と同じである。したがって、Ｐｓも同じである。ただし、ＰａＡからＰａＢに向かって曲線で移行する。その後は解Ｂが選択され補正終点Ｂに向かって移動し、最終的には補正終点Ｂに到達する。
ここで、曲線は解Ａの経路のＰａＡでの接線方向と解Ｂの経路のＰａＢでの接線方向に滑らかに接続するように作成する。
【００７２】
具体的な補間データとしては図１６のようになる。図１６は図１３とほとんど同じであり、同じところは説明を省略する。相違するところは、ＰａＡからＰａＢに向かって曲線で補間することである。曲線で補間する方法としては、次のような方法がある。
ＰａＡの補間周期の１補間周期前の解ＡをＰｍＡとする。ＰａＡでの速度ＰａＡ’を数２９式のように計算する。
【数２９】
2019204354.tif 000031
【００７３】
ＰａＡ、Ｐｓを通りＰａＡでの速度（接線方向ベクトル）がＰａＡ’であるという３つの条件から２次曲線関数である数３０式を導きＰａＡからＰｓまで補間することができる。ここで、２次曲線関数ｆ（ｔ）（ｔ＝０→１）および係数ω、δ、εはＢ，Ｃの要素を持つベクトルである。
【数３０】
2019204354.tif 000032
【００７４】
ｆ（ｔ）についてＰｓに関して点対称である数３１式として示される関数（ｆ１（ｔ））（ｔ＝１→０）を求めて補間することで、同様にＰｓからＰａＢまで補間することができる。
【数３１】
2019204354.tif 000033
【００７５】
あるいは、ＰａＡ、ＰａＢを通りＰａＡでの速度（接線方向ベクトル）がＰａＡ’であり、ＰａＢでの速度（接線方向ベクトル）はＰａＡ’についてＰｓに関して点対称なＰａＢ’としてそれら４つの条件から数３２式として示される３次曲線ｇ（ｔ）を導き、ＰａＡからＰａＢまで補間することができる。ここで、曲線関数ｇ（ｔ）および係数η、λ、μ、σはＢ，Ｃの要素を持つベクトルである。
【数３２】
2019204354.tif 000034
【００７６】
図８に対応する回転軸の移動は図１７として示される。図１４の説明部分にも記載したが、元々図８では誤差補正の様子をわかりやすくするため誤差が大きい（β＝−１５度程度）ことを想定した図となっている。しかし、一般的に誤差はもっと小さい（｜β｜＝１度以下、通常はさらに小さく｜β｜＝０．１度以下）ものであり、その場合、図１７の（ｂ）から図１７の（ｃ）への回転軸動作はごく小さくかつ実施形態１に比べて滑らかなものになる。
【００７７】
以上説明したように、第１方式（直前の解に近い解を選択する方式）では、回転軸が指令位置から大きく乖離する可能性がある。そのため、オーバトラベルが発生する等、予期しない問題が発生する可能性がある。
第２方式（指令位置に近い解を選択する方式）では、ブロック終点が指令位置となる。しかし、第２方式では、特異点を通過する際に、Ｃ軸に約１８０度の大きな移動が発生し、回転軸の移動が滑らかでないという問題がある。
第３方式（直前の解に近い解を選択しつつ、回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式）では、ブロック終点が指令位置となり、かつ、第２方式と比較して、特異点を通過する際に、Ｃ軸の移動が小さくなる。
【００７８】
ここで、図４に示すように、ワークの設置位置においてＹ軸周りに少し傾斜誤差βがあったとする。このとき、ワークに対する工具の位置と方向が保持されるように傾斜誤差βを補正した場合、図５及び図６に示すように、ワーク設置時のＹ軸回りの傾斜誤差βだけ工具が傾く。
【００７９】
第２方式又は第３方式によるワーク設置誤差補正では、指令始点から指令終点にかけて特異点を超える場合、特異点（Ｂ＝０度）を通過するときに、図１９に示すように、工具方向（特異点通過時の工具方向）が、あるべき工具方向（ワーク設置誤差補正後の工具方向）から乖離してしまう（例えば、起き上がってしまう）。
例えば、ワーク設置時の傾斜誤差が小さければ、特異点通過時の工具方向の逸脱の角度も小さいため、問題にならない。
【００８０】
しかし、ワーク設置時の傾斜誤差が大きく、特異点通過時の工具方向の逸脱の角度が大きくなると（例えば、起き上がり角度が大きくなると）、加工に悪影響を及ぼす可能性がある。例えば、工具側面とワークの干渉、又は、側面加工において加工不良等が生じる可能性がある。
なお、第１方式によるワーク設置誤差補正では、特異点を通過しないため、工具方向の逸脱は発生しない。
以上より、第２方式又は第３方式によるワーク設置誤差補正では加工に悪影響を与える可能性があるため、切削中（加工中）は可能な限り第１方式によるワーク設置誤差補正が望ましい。
【００８１】
そこで、本実施形態では、指令位置を先読みし、予め第１方式によるワーク設置誤差補正のシミュレーションを行い、補正した指令位置が加工機の可動領域外とならない限り極力、第１方式によるワーク設置誤差補正を採用し、補正した指令位置が加工機の可動領域外となる場合だけ、第２方式又は第３方式によるワーク設置誤差補正を採用する。
【００８２】
（第１実施形態）
図２０は、第１実施形態に係る数値制御装置の構成を示す図である。図２０に示す数値制御装置１０は、上述した第１方式によるワーク設置誤差補正機能と、上述した第２方式によるワーク設置誤差補正機能とを備え、加工機の状態に応じて何れか一方を選択的に用いる。
【００８３】
数値制御装置１０は、指令解析部（先読部）１１と、補間部１２と、ワーク設置誤差補正部１３と、記憶部１４とを備える。
指令解析部（先読部）１１は、プログラムから１ブロック毎に指令を先読みする。指令解析部１１は、先読みした指令を、例えば作業用のメモリ等（図示省略）に格納する。
補間部１２は、指令解析部１１で先読みされた指令に補間処理を施し、指令位置（指令数値）を生成する。
【００８４】
ワーク設置誤差補正部１３は、工具位置方向計算部１３１と誤差補正部１３２とを備える。
工具位置方向計算部１３１は、直線軸３軸と回転軸２軸の指令位置（指令数値）に基づいて工具の指令座標系上の位置と方向を計算する。
誤差補正部１３２は、工具位置方向計算部１３１で計算された工具の指令座標系上の位置と方向とが設置誤差を有するワーク上で保たれるように、ワークを設置した時の設置誤差に対応して記憶部１４に予め設定された誤差量（並進誤差量（δx,δy,δz）、回転誤差量（α,β,γ））によって直線軸３軸と回転軸２軸に対する誤差補正を行う。
【００８５】
（プログラム先読み時）
ワーク設置誤差補正部１３は、先読みした指令が切削モード（加工モード）の指令である場合、補間部１２で補間された指令位置（指令数値）に上述した第１方式（直前の解に近い解を選択する方式）によるワーク設置誤差補正処理を施し、各軸の補正指令位置（補正指令数値）（つまり、Ｘ，Ｙ，Ｚ，Ｂ（Ａ），Ｃ軸の補正指令位置）を求める。
ワーク設置誤差補正部１３は、補正指令位置が、記憶部１４に予め設定された加工機の可動領域内である場合には、第１方式による誤差補正を設定する。一方、補正指令位置が加工機の可動領域外である場合（換言すれば、オーバトラベルである場合）には、ワーク設置誤差補正部１３は、第２方式（指令数値に近い解を選択する方式）による誤差補正を設定する。
例えば、ワーク設置誤差補正部１３は、対応の切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝０を設定することにより、第１方式による誤差補正を設定し、対応の切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第２方式による誤差補正を設定する。
【００８６】
ワーク設置誤差補正部１３は、先読みした指令が位置決めモードの指令である場合、上述した第１方式によるワーク設置誤差補正を行うことなく、対応の位置決めモードＮｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第２方式による誤差補正を設定する。
【００８７】
（プログラム実行時）
ワーク設置誤差補正部１３は、切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対するＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]が０である場合、第１方式によるワーク設置誤差補正を行う。一方、ワーク設置誤差補正部１３は、切削モード（加工モード）又は位置決めモードＮｘｘ〜Ｎｘｘに対するＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]が１である場合、第２方式によるワーク設置誤差補正を行う。
【００８８】
記憶部１４は、予め設定された誤差量（並進誤差量（δx,δy,δz）、回転誤差量（α,β,γ））を記憶する。また、記憶部１４は、予め設定された加工機の可動領域を記憶する。
記憶部１４は、例えばＥＥＰＲＯＭ等の書き換え可能なメモリである。
【００８９】
上述した数値制御装置１０（及び、後述の数値制御装置１０Ａ）は、例えば、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等の演算プロセッサで構成される。数値制御装置１０（及び、後述の数値制御装置１０Ａ）の各種機能は、例えば記憶部に格納された所定のソフトウェア（プログラム）を実行することで実現される。数値制御装置１０（及び、後述の数値制御装置１０Ａ）の各種機能は、ハードウェアとソフトウェアとの協働で実現されてもよいし、ハードウェア（電子回路）のみで実現されてもよい。
【００９０】
次に、第１実施形態に係る数値制御装置１０によるプログラム先読み動作、及び、プログラム実行時のワーク設置誤差補正動作について説明する。
図２１は、第１実施形態に係る数値制御装置１０によるプログラム先読み動作のフローチャートであり、図２２は、第１実施形態に係る数値制御装置１０によるプログラム実行時のワーク設置誤差補正動作のフローチャートである。図２３は、プログラムの一例を示す図である。
【００９１】
まず、図２１を参照して、第１実施形態に係る数値制御装置１０によるプログラム先読み動作について説明する。
まず、指令解析部（先読部）１１は、プログラムから１ブロックごとに指令を先読みし、例えば作業用のメモリに格納する（Ｓ１１）。次に、補間部１２は、先読みされた指令に補間処理を施し、指令位置（指令数値）を生成する（Ｓ１１）。
【００９２】
次に、ワーク設置誤差補正部１３は、切削モード（加工モード）又は位置決めモードごとに、先読みした指令が切削モード（加工モード）の指令であるか否かを判定する（Ｓ１２）。先読みした指令が切削モードである場合、ワーク設置誤差補正部１３は、切削モードにおける複数のブロックごとに、上述した第１方式（直前の解に近い解を選択する方式）によるワーク設置誤差補正を行い、各軸の補正指令位置（補正指令数値）を求める（Ｓ１３）。
【００９３】
次に、ワーク設置誤差補正部１３は、補正指令位置が加工機の可動領域内であるか否かを判定する（Ｓ１４）。切削モード（加工モード）における複数のブロックにおける補正指令位置の全てが加工機の可動領域内である場合、この切削モードに対して第１方式によるワーク設置誤差補正を設定する（Ｓ１５）。例えば、ワーク設置誤差補正部１３は、対応の切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝０を設定することにより、第１方式による誤差補正を設定する。
一方、切削モード（加工モード）における複数のブロックにおける補正指令位置の少なくとも１つが加工機の可動領域外である場合（換言すれば、オーバトラベルである場合）には、ワーク設置誤差補正部１３は、この切削モードに対して第２方式（指令数値に近い解を選択する方式）によるワーク設置誤差補正を設定する（Ｓ１６）。例えば、ワーク設置誤差補正部１３は、対応の切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第２方式による誤差補正を設定する。
（例えば、図２３におけるＮ１０１〜Ｎ１９９、Ｎ２０１〜Ｎ２９９）
【００９４】
一方、ステップＳ１２において、先読みした指令が位置決めモードの指令である場合、ワーク設置誤差補正部１３は、対応の位置決めモードＮｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第２方式による誤差補正を設定する（Ｓ１６）。
（例えば、図２３におけるＮ２、Ｎ２００、Ｎ３００）
【００９５】
次に、図２２を参照して、第１実施形態に係る数値制御装置１０によるプログラム実行時のワーク設置誤差補正動作について説明する。
まず、ワーク設置誤差補正部１３は、切削モード（加工モード）又は位置決めモードごとに、設定が第１方式によるワーク設置誤差補正であるか否か、例えばＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]が０であるか否かを判定する（Ｓ２１）。ワーク設置誤差補正部１３は、ＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝０である場合、すなわち設定が第１方式によるワーク設置誤差補正である場合、切削モードごとに、上述した第１方式（直前の解に近い解を選択する方式）によるワーク設置誤差補正を行う（Ｓ２２）。
【００９６】
一方、ＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１である場合、すなわち設定が第２方式によるワーク設置誤差補正である場合、ワーク設置誤差補正部１３は、切削モード又は位置決めモードごとに、上述した第２方式（指令数値に近い解を選択する方式）によるワーク設置誤差補正を行う（Ｓ２３）。
【００９７】
以上説明したように、第１実施形態の数値制御装置１０によれば、指令位置を先読みし、加工モード時、予め第１方式によるワーク設置誤差補正のシミュレーションを行い、補正後の指令位置が加工機の可動範囲内であれば第１方式（直前の解に近い解を選択する方式）によるワーク設置誤差補正を設定し、補正後の指令位置が加工機の可動範囲外であるとき（換言すれば、オーバトラベルであるとき）のみ、第２方式（指令数値に近い解を選択する方式）によるワーク設置誤差補正を設定する。
これにより、第２方式によるワーク設置誤差補正において、指令始点から指令終点にかけて特異点を超える場合に、工具方向がワーク設置誤差補正後の工具方向から乖離することを抑制することができる。
そのため、特異点を通過する際に、工具方向が、あるべき方向（ワーク設置誤差補正後の工具方向）から乖離する（例えば、起き上がる）ことにより、加工に悪影響が及ぶことを抑制することができる。
【００９８】
ワーク設置誤差補正の方式の設定は、加工モードごと行われる。これにより、１つの加工モード中にワーク設置誤差補正の方式が切り換わることがなく、加工に悪影響が及ぶことを回避することができる。
【００９９】
また、位置決めモード時には、加工の悪影響の問題がないので、上述した第１方式によるワーク設置誤差補正を行うことなく、第２方式による誤差補正が設定されればよい。
【０１００】
（第２実施形態）
図２４は、第２実施形態に係る数値制御装置の構成を示す図である。図２４に示す数値制御装置１０Ａは、上述した第１方式によるワーク設置誤差補正機能と、上述した第３方式によるワーク設置誤差補正機能とを備え、加工機の状態に応じて何れか一方を選択的に用いる。
【０１０１】
図２４に示す数値制御装置１０Ａは、図２０に示す数値制御装置１０においてワーク設置誤差補正部１３に代えてワーク設置誤差補正部１３Ａを備える点で第１実施形態と異なる。更に、数値制御装置１０Ａは、特異点通過判断部１５と、特異点通過経路作成部１６と、解移行開始位置判別部１７と、解移行部１８とを備える。
【０１０２】
（プログラム先読み時）
ワーク設置誤差補正部１３Ａは、補正指令位置が加工機の可動領域外である場合（換言すれば、オーバトラベルである場合）に、第２方式に代えて上述した第３方式（直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式）による誤差補正を設定する点で、図２０におけるワーク設置誤差補正部１３と異なる。
例えば、ワーク設置誤差補正部１３Ａは、対応の切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第３方式による誤差補正を設定する。
【０１０３】
また、ワーク設置誤差補正部１３Ａは、先読みした指令が位置決めモードの指令である場合、上述した第１方式によるワーク設置誤差補正を行うことなく、対応の位置決めモードＮｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第２方式に代えて第３方式による誤差補正を設定する点で、図２０におけるワーク設置誤差補正部１３と異なる。
【０１０４】
（プログラム実行時）
ワーク設置誤差補正部１３Ａは、切削モード（加工モード）又は位置決めモードＮｘｘ〜Ｎｘｘに対するＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]が１である場合、第２方式に代えて第３方式によるワーク設置誤差補正を行う点で、図２０におけるワーク設置誤差補正部１３と異なる。
【０１０５】
特異点通過判断部１５は、プログラム指令における各ブロック指令に対して、指令始点と指令終点の二つの指令位置の間で傾斜回転軸指令が特異点を越えて反対側にある場合は特異点を通過する必要があると判断し、フラグ（後述のＦ＿Ｐｓ）＝１として特異点通過経路作成部１６、解移行開始位置判別部１７、解移行部１８に通知する。
解移行開始位置判別部１７は、解移行開始位置を判別し、特異点通過経路作成部１６は、傾斜回転軸が特異点を通過する経路を作成しワーク設置誤差補正部１３に出力する。解移行部１８は、特異点通過経路作成部１６で作成された解Ａから解Ｂ、または解Ｂから解Ａへの解移行経路の補間を行う。
【０１０６】
換言すれば、特異点通過判断部１５は、前記傾斜回転軸位置が０度の位置が特異点である前記５軸加工機において指令始点と指令終点の二つの指令位置の間で前記傾斜回転軸指令の符号が反転する場合に前記二つの指令位置の間で前記傾斜回転軸指令が特異点を越えて反対側にあり特異点を通過する必要があると判断する、または前記傾斜回転軸位置が０度でない位置が特異点である前記５軸加工機において前記二つの指令位置の間で前記傾斜回転軸指令に関して（指令始点−特異点）と（指令終点―特異点）の符号が反転する場合に前記二つの指令位置の間で前記傾斜回転軸指令が特異点を越えて反対側にあり特異点を通過する必要があると判断する。
特異点通過経路作成部１６は、前記特異点通過判断部にて特異点を通過する必要があると判断した場合には、前記誤差補正部１３２による補正を行った結果の経路においても前記二つの指令位置の間で前記傾斜回転軸が特異点を通過する特異点通過経路とする。
前記特異点通過経路作成部１６は、現在選択されている解から他方の解に移行する位置を判別する解移行開始位置判別部１７と、前記回転軸２軸の座標系における他方の解へ移行するための解移行部１８を有する。
前記解移行開始位置判別部１７は、選択されている解が指令経路上の特異点へ最も近づく特異点最接近位置が解移行開始位置であると判別する。
前記特異点最接近位置とは、前記回転軸２軸の座標系における前記回転軸２軸の位置と特異点位置の距離が最も小さくなる位置である。
或いは、前記特異点最接近位置とは、前記回転軸２軸の座標系における前記回転軸２軸のそれぞれの位置と特異点位置間の絶対値を加算した量が最も小さくなる位置である。
前記解移行部１８は、指令位置としては前記解移行開始位置の指令位置に対して前記回転軸２軸の座標系において指令経路上の特異点に関して点対称位置であり、かつ解としては他方の解へ直線で移行する経路を作成することで解の移行を実現する。
前記解移行部１８は、指令位置としては前記解移行開始位置の指令位置に対して前記回転軸２軸の座標系において指令経路上の特異点に関して点対称位置であり、かつ解としては他方の解へ曲線で移行する経路を作成することで解の移行を実現する。
【０１０７】
次に、第２実施形態に係る数値制御装置１０Ａによるプログラム先読み動作、及び、プログラム実行時のワーク設置誤差補正動作について説明する。
図２５は、第２実施形態に係る数値制御装置１０Ａによる方式選択動作のフローチャートであり、図２６は、第２実施形態に係る数値制御装置１０Ａによるワーク設置誤差補正動作のフローチャートである。図２７は、プログラムの一例を示す図である。
【０１０８】
まず、図２５を参照して、第２実施形態に係る数値制御装置１０Ａによるプログラム先読み動作について説明する。
図２５において、ステップＳ１１〜Ｓ１５の動作は、図２１におけるステップＳ１１〜Ｓ１５の動作と同一である。
【０１０９】
ステップＳ１５において、切削モード（加工モード）における複数のブロックにおける補正指令位置の少なくとも１つが加工機の可動領域外である場合（換言すれば、オーバトラベルである場合）には、ワーク設置誤差補正部１３Ａは、この切削モードに対して第３方式（直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式）によるワーク設置誤差補正を設定する（Ｓ３６）。例えば、ワーク設置誤差補正部１３Ａは、対応の切削モード（加工モード）Ｎｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第３方式による誤差補正を設定する。
（例えば、図２７におけるＮ１０１〜Ｎ１９９、Ｎ２０１〜Ｎ２９９）
【０１１０】
また、ステップＳ１２において、先読みした指令が位置決めモードの指令である場合、ワーク設置誤差補正部１３Ａは、対応の位置決めモードＮｘｘ〜Ｎｘｘに対してＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１を設定することにより、第３方式による誤差補正を設定する（Ｓ３６）。
（例えば、図２７におけるＮ２、Ｎ２００、Ｎ３００）
【０１１１】
次に、図２６を参照して、第２実施形態に係る数値制御装置１０Ａによるプログラム実行時のワーク設置誤差補正動作について説明する。
図２６において、ステップＳ２１及びＳ２２の動作は、図２２におけるステップＳ２１及びＳ２２の動作と同一である。
ステップＳ２１において、ＯＴフラグ[Ｎｘｘ〜Ｎｘｘ]＝１である場合、すなわち設定が第３方式によるワーク設置誤差補正である場合、ワーク設置誤差補正部１３Ａは、切削モード又は位置決めモードごとに、上述した第３方式（直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式）によるワーク設置誤差補正を行う（Ｓ４３）。
【０１１２】
この第２実施形態の数値制御装置１０Ａによれば、指令位置を先読みし、加工モード時、予め第１方式によるワーク設置誤差補正のシミュレーションを行い、補正後の指令位置が加工機の可動範囲内であれば第１方式（直前の解に近い解を選択する方式）によるワーク設置誤差補正を設定し、補正後の指令位置が加工機の可動範囲外であるとき（換言すれば、オーバトラベルであるとき）のみ、第３方式（直前の解に近い解を選択しつつ、前記回転軸２軸の移動が最小となるタイミングで別解へ切り換える方式）によるワーク設置誤差補正を設定する。
これにより、第３方式によるワーク設置誤差補正において、指令始点から指令終点にかけて特異点を超える場合に、工具方向がワーク設置誤差補正後の工具方向から乖離することを抑制することができる。
そのため、特異点を通過する際に、工具方向が、あるべき方向（ワーク設置誤差補正後の工具方向）から乖離する（例えば、起き上がる）ことにより、加工に悪影響が及ぶことを抑制することができる。
【０１１３】
以上、本発明の実施形態について説明したが、本発明は上述した実施形態に限定されることなく、種々の変更及び変形が可能である。
【符号の説明】
【０１１４】
１０，１０Ａ  数値制御装置
１１  指令解析部（先読部）
１２  補間部
１３，１３Ａ  ワーク設置誤差補正部
１４  記憶部
１５  特異点通過判断部
１６  特異点通過経路作成部
１７  解移行開始位置判別部
１８  解移行部
１３１  工具位置方向計算部
１３２  誤差補正部
【図１】
2019204354.tif 000035
【図２】
2019204354.tif 000036
【図３】
2019204354.tif 000037
【図４】
2019204354.tif 000038
【図５】
2019204354.tif 000039
【図６】
2019204354.tif 000040
【図７】
2019204354.tif 000041
【図８】
2019204354.tif 000042
【図９】
2019204354.tif 000043
【図１０】
2019204354.tif 000044
【図１１】
2019204354.tif 000045
【図１２】
2019204354.tif 000046
【図１３】
2019204354.tif 000047
【図１４】
2019204354.tif 000048
【図１５】
2019204354.tif 000049
【図１６】
2019204354.tif 000050
【図１７】
2019204354.tif 000051
【図１８】
2019204354.tif 000052
【図１９】
2019204354.tif 000053
【図２０】
2019204354.tif 000054
【図２１】
2019204354.tif 000055
【図２２】
2019204354.tif 000056
【図２３】
2019204354.tif 000057
【図２４】
2019204354.tif 000058
【図２５】
2019204354.tif 000059
【図２６】
2019204354.tif 000060
【図２７】
2019204354.tif 000061