(57)【要約】【課題】特異点およびその前後においても、滑らかに安定して動作し、運動精度の不要な悪化が生じず、高い加工精度を維持でき、また、工具損傷や過度な工具磨耗を招かずに安定した加工が可能な数値制御装置を得る。【解決手段】加工物に対する工具姿勢を変えながら、工具底面が加工物に接する切削点が、加工プログラムに指令された移動経路に沿って移動するように、機械の駆動軸を制御する数値制御装置において、加工面が工具に垂直となる特異点を通過して動作する場合に、特異点を含む区間は工具先端中心点または機械位置を補間する。また、特異点を含む区間の始点・終点における加工面法線ベクトル、工具軸方向ベクトルまたはその両方を、特異点を含まない区間における加工面法線ベクトルと工具軸方向ベクトルの相対的な位置関係に近づくように補正を行う。【選択図】図４
2008090734.tif 000002
【特許請求の範囲】
【請求項１】
スクエアエンドミル工具またはラジアスエンドミル工具を用いて、加工物に対する工具姿勢を変えながら、工具底面が加工物に接する切削点が、加工プログラムに指令された移動経路に沿って移動するように、機械の駆動軸を制御する数値制御装置であって、
前記加工プログラムに指令された移動データと使用する工具の工具データとに基づいて、前記工具の移動中に前記加工物の加工面に対して工具軸方向が垂直となる特異点があるかを判定する特異点判定部と、
前記特異点判定部によって移動中に特異点があると判定された場合には、前記移動データを、特異点を含む移動区間と特異点を含まない移動区間とに分割する移動データ補正部と、
前記移動データ補正部によって分割された移動区間のうち、前記特異点を含む移動区間では、移動がある場合には、工具先端中心点の位置を補間して求め、一方、前記特異点を含まない移動区間では、切削点の位置を補間し、加工面法線ベクトルと工具軸方向から工具先端中心点まで工具径補正ベクトルを求めて加算することで、工具先端中心点を求め、求めた前記工具先端中心点から逆運動学関数を用いて機械各軸の位置を求める補間部と、
前記補間部によって求められた機械各軸の位置に従って機械の駆動軸を制御する位置制御部と
を備えたことを特徴とする数値制御装置。
【請求項２】
前記移動データ補正部は、
特異点を含む区間の始点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角が、
前記特異点を含む区間の始点の直前の点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角に近づくように、
前記特異点を含む区間の始点における加工面法線ベクトルまたは工具軸方向ベクトルないしはその両方を補正し、
前記特異点を含む区間の終点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角が、
前記特異点を含む区間の終点の直後の点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角に近づくように、
前記特異点を含む区間の終点における加工面法線ベクトルまたは工具軸方向ベクトルないしはその両方を補正する
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記移動データ補正部は、
前記特異点を含む区間の始点を、特異点の位置から、特異点を含む区間の始点の直前の位置における工具径補正ベクトルを減算した位置とし、
前記特異点を含む区間の終点を、特異点の位置から、特異点を含む区間の直後の位置における工具径補正ベクトルを減算した位置とする
ことを特徴とする請求項１または２に記載の数値制御装置。
【請求項４】
前記移動データ補正部は、
前記特異点を含む区間の始点および終点を特異点とし、
前記特異点を含む区間の始点および終点における加工面法線ベクトルを補正する
ことを特徴とする請求項１または２に記載の数値制御装置。
【請求項５】
前記移動データ補正部は、
前記特異点を含む区間の始点および終点を特異点とし、
前記特異点を含む区間の始点および終点における工具軸方向ベクトルを補正する
ことを特徴とする請求項１または２に記載の数値制御装置。
【請求項６】
前記移動データ補正部は、
前記特異点を含む区間の始点および終点は、特異点を含む区間の外側の所定の距離または所定のブロック数の移動経路と干渉しないよう、工具軸方向に加工面から離れる方向に工具の位置を補正する
ことを特徴とする請求項１ないし５のいずれか１項に記載の数値制御装置。
【請求項７】
前記移動データ補正部は、
前記特異点に到達する直前の工具径補正ベクトルと、特異点から出発した直後の工具径補正ベクトルが同じ方向であるとき、特異点近傍においては、工具径補正ベクトルを保持する
ことを特徴とする請求項１ないし６のいずれか１項に記載の数値制御装置。
【請求項８】
前記補間部は、
実際の切削点の位置とは別に、
前記加工プログラムに指令された移動経路上を補間した位置を計算し、これを現在位置として画面表示する
ことを特徴とする請求項１ないし７のいずれか１項に記載の数値制御装置。
【請求項９】
前記補間部は、
特異点を含む区間においては
前記加工プログラムに指令された移動経路上の特異点の位置を計算し、これを現在位置として画面表示する
ことを特徴とする請求項１ないし７のいずれか１項に記載の数値制御装置。
【請求項１０】
前記工具としてラジアスエンドミル工具を用いて加工を行う場合には、
前記移動経路補正部および補間部は、工具径補正量を求める際に、
工具底面の平坦部の半径に相当する工具径補正ベクトルは補正後の工具軸方向ベクトルおよび加工面法線ベクトルを用いて計算し、
一方、工具のコーナ半径に相当する工具径補正ベクトルは補正前の工具軸方向ベクトルおよび加工面法線ベクトルを用いて計算し、
両者を加算して工具径補正ベクトルを求める
ことを特徴とする請求項１ないし９のいずれか１項に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は数値制御装置（以下、ＮＣという。）に関し、特に、加工物に対する工具の姿勢を変更しながら工具のエッジで加工する場合の３次元工具径補正機能を有する工作機械の数値制御装置に関する。
【背景技術】
【０００２】
数値制御工作機械において、ワークに対する工具の姿勢（工具軸の方向）を変えながら加工を行う場合がある。典型的な例は、５軸加工機による同時５軸加工である。このような工具の姿勢を変えながら行う加工には、主に工具の側面で加工する場合と、主に工具の底面で加工する場合がある。
【０００３】
工具の姿勢を変えながら工具の底面のエッジで加工を行う場合に、現場にて使用する工具の径を正確に測った値に基づいて、加工プログラムに指令した移動経路をＮＣで補正できれば、その都度、加工プログラムを作り直さなくて済むので効率がよい。このような、底面加工に対応した従来の３次元工具径補正方法として、加工プログラムに指令された工具の進行方向（モーションベクトル）と工具軸方向ベクトルから、工具径の補正方向を算出し、これに工具半径を乗じて、補正量として求めるものが提案されている（例えば、特許文献１参照）。
【０００４】
【特許文献１】特開平０７−０３６５１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
以下、従来の３次元工具径補正方法における問題点を、例を用いて説明する。図１のように、工具としてスクエアエンドミルを用い、工具１０１の底面のエッジにより加工を行う例を考える。図１（ａ）または（ｃ）のように、加工面１００に対して工具１０１が傾いている場合には、加工面１００に対して工具１０１が接する１点（以下、切削点Ｐｅという。）は一意に決まる。しかし、同図（ｂ）のように加工面１００に対して工具１０１が垂直になった状態では、工具１０１の１点ではなく工具１０１の底面全体が接するため、切削点Ｐｅが一意に定まらない。同図（ｂ）のように加工面１００に対して工具軸方向ベクトルＷが垂直に向いた状態を３次元工具径補正における特異点（または特異姿勢）と呼ぶ。
【０００６】
移動中にこのような特異点を通過すると、前述した従来の方法では、特異点通過の前後で、工具１０１から見た切削点Ｐｅの位置が急激に変化してしまい、機械や加工に悪影響を及ぼす。例えば、図２に示すように、始点（ｂ１）から終点（ｂ１０）まで、加工面１００に対する工具１０１の姿勢を連続的に変えながら、切削点Ｐｅが加工プログラムに指令された指令経路１０２に沿って一定の速度で移動する場合を考える。始点から終点に至るまで、（ｂ１），（ｂ２），（ｂ３），・・・，（ｂ１０）の順に移動するが、（ｂ５）と（ｂ６）の間のある点Ｓにおいて、工具軸方向ベクトルＷが加工面１００に垂直となる（すなわち特異点を通過する）。（ｂ１）から（ｂ５）までの間は工具１０１が加工面１００に対して前傾しながら進んでいる状態であり、切削点Ｐｅは工具１０１の進行方向前方の角（図でいえば工具１０１の右下の角）となる。
【０００７】
一方、（ｂ６）から（ｂ１０）までの間は、工具１０１は加工面１００に対して後傾しながら進んでいる状態であり、切削点Ｐｅは工具１０１の進行方向後方の角（図で言えば工具の左下の角）となる。特異点を通過する前後（（ｂ５）と（ｂ６））で、工具１０１から見た切削点Ｐｅの位置が、進行方向前方の角から、進行方向後方の角に急峻に変化する。これに伴い切削点Ｐｅから工具先端中心点Ｐｃまでのベクトルである工具径補正ベクトルΔＰｃｏｍｐ（図中の白抜きの矢印）も特異点通過前後でほぼ逆の向きに不連続的に変化する。つまり、特異点前後で、急峻におよそ工具直径分だけ工具１０１が移動することになる。このように急激に工具１０１を動かすためには、機械が急激に動く必要があり、それによりモータの過負荷、機械の振動、サーボの追従誤差の増大が生じ、制御装置や機械の故障やアラーム停止による生産性の低下、運動誤差増大による加工精度の悪化といった問題を招くことになる。また、加工面１００に対して工具１０１が急峻に動くことで、急激な切削抵抗の変化が生じ、チッピング等の工具損傷や過度な工具磨耗を招く問題点があった。
【０００８】
図１および図２に示した上述した例では、工具１０１が、底部のエッジが角形形状のスクエアエンドミルの例を挙げたが、図３に示すように、ラジアスエンドミルのようなエッジに丸みがある工具１０１においても、工具底面に一部でも平坦部があれば（すなわち工具底面全体が半球状のボールエンドミルでなければ）、加工面１００に対して工具軸方向ベクトルが垂直となった状態（特異点）の前後で工具底面の平坦部の直径分だけ急激に工具１０１が動くことになるので、同様の問題が生じる。
【０００９】
この発明はかかる問題点を解決するためになされたものであり、特異点およびその前後においても、滑らかに安定して動作し、運動精度の不要な悪化が生じず、高い加工精度を維持でき、また、工具損傷や過度な工具磨耗を招かずに安定した加工が可能な数値制御装置を得ることを目的としている。
【課題を解決するための手段】
【００１０】
この発明は、スクエアエンドミル工具またはラジアスエンドミル工具を用いて、加工物に対する工具姿勢を変えながら、工具底面が加工物に接する切削点が、加工プログラムに指令された移動経路に沿って移動するように、機械の駆動軸を制御する数値制御装置であって、前記加工プログラムに指令された移動データと使用する工具の工具データとに基づいて、前記工具の移動中に前記加工物の加工面に対して工具軸方向が垂直となる特異点があるかを判定する特異点判定部と、前記特異点判定部によって移動中に特異点があると判定された場合には、前記移動データを、特異点を含む移動区間と特異点を含まない移動区間とに分割する移動データ補正部と、前記移動データ補正部によって分割された移動区間のうち、前記特異点を含む移動区間では、移動がある場合には、工具先端中心点の位置を補間して求め、一方、前記特異点を含まない移動区間では、切削点の位置を補間し、加工面法線ベクトルと工具軸方向から工具先端中心点まで工具径補正ベクトルを求めて加算することで、工具先端中心点を求め、求めた前記工具先端中心点から逆運動学関数を用いて機械各軸の位置を求める補間部と、前記補間部によって求められた機械各軸の位置に従って機械の駆動軸を制御する位置制御部とを備えた数値制御装置である。
【発明の効果】
【００１１】
この発明は、スクエアエンドミル工具またはラジアスエンドミル工具を用いて、加工物に対する工具姿勢を変えながら、工具底面が加工物に接する切削点が、加工プログラムに指令された移動経路に沿って移動するように、機械の駆動軸を制御する数値制御装置であって、前記加工プログラムに指令された移動データと使用する工具の工具データとに基づいて、前記工具の移動中に前記加工物の加工面に対して工具軸方向が垂直となる特異点があるかを判定する特異点判定部と、前記特異点判定部によって移動中に特異点があると判定された場合には、前記移動データを、特異点を含む移動区間と特異点を含まない移動区間とに分割する移動データ補正部と、前記移動データ補正部によって分割された移動区間のうち、前記特異点を含む移動区間では、移動がある場合には、工具先端中心点の位置を補間して求め、一方、前記特異点を含まない移動区間では、切削点の位置を補間し、加工面法線ベクトルと工具軸方向から工具先端中心点まで工具径補正ベクトルを求めて加算することで、工具先端中心点を求め、求めた前記工具先端中心点から逆運動学関数を用いて機械各軸の位置を求める補間部と、前記補間部によって求められた機械各軸の位置に従って機械の駆動軸を制御する位置制御部とを備えた数値制御装置であるので、特異点およびその前後においても、滑らかに安定して動作し、運動精度の不要な悪化が生じず、高い加工精度を維持でき、また、工具損傷や過度な工具磨耗を招かずに安定した加工が可能である。
【発明を実施するための最良の形態】
【００１２】
実施の形態１．
［加工面の法線ベクトルを補正］
図４は、この発明の実施の形態１における数値制御装置の構成を示したブロック図である。実施の形態１における数値制御装置は、スクエアエンドミル工具またはラジアスエンドミル工具を用いて、加工物に対する工具姿勢を変えながら、工具底面が加工物に接する切削点が、加工プログラムに指令された移動経路（後述する移動データによって指定される経路）に沿って移動するように、機械の駆動軸を制御する数値制御装置である。なお、この実施の形態においては、５軸加工機による同時５軸加工において、工具の姿勢を変えながら行う加工のときに、主に工具の底面で加工する場合を例に挙げて説明する。図４に示すように、本実施の形態１における数値制御装置は、加工プログラム１と、工具データ３と、特異点判定部４と、移動データ補正部６と、補間部８と、表示部１０と、第１から第５軸の制御を行う位置制御部１〜５（符号１２〜１６）とを有している。なお、図４において、２は加工プログラム１に指令される移動データ、５は特異点判定部４から出力される特異点判定結果、７は移動データ補正部６から出力される補正後の移動データ、９は補間部８から出力される現在位置、１１は補間部８から出力される位置指令値である。これらについては以下に詳説する。
【００１３】
特異点判定部４は、加工プログラム１に指令された移動データ２と使用する工具の工具データ３とから、各ブロックの移動において、移動経路上に特異点があるかどうかを判定し、判定結果を特異点判定結果５として出力する。また移動データ補正部６は、移動データ２、工具データ３および特異点判定結果５から、移動データ２を補正して補正後の移動データ７を出力する。補間部８は補正後の移動データ７と工具データ３に基づき補間を行い、各軸の位置指令値１１を出力する。ここで補間部８では補間だけでなく、加減速や機械の軸構成に応じた座標変換も行う。また補間部８では現在位置９を計算し、表示部１０に送り、表示させる。この現在位置９の計算のために、補正前の移動データ２を用いてもよい。各軸の位置制御部１〜５（符号１２〜１６）は、たとえば、位置制御部１〜３（符号１２〜１４）はワークに対して工具の位置を変更するための直交３軸、位置制御部４〜５（符号１５〜１６）はワークに対して工具の姿勢を変更するための回転２軸（たとえばＡ軸とＣ軸）である。これら５つの位置制御部１〜５（符号１２〜１６）が、それぞれの位置指令値１１に基づいて図示しない駆動系をサーボ制御することにより、図示しない５軸加工機を動かして、ワークに対して工具を運動させ、加工を行う。
【００１４】
次に動作について説明する。工具データ３は、図５に示すような、工具タイプ（スクエアエンドミル、ラジアスエンドミル）、工具外径の半径値ｄ、丸コーナの丸み（コーナ半径）ｒ、工具長ｈからなるデータである。本発明は、３次元工具径補正における特異点の問題を解決するための方法であるが、３次元工具径補正における特異点の問題は、回転工具の底面が平面（これは工具軸方向に垂直に形成されている）となっている工具（スクエアエンドミル、ラジアスエンドミル）で発生するので、これらの工具を移動データ２の補正の対象とし、それ以外の工具（たとえばボールエンドミル）では本発明のような移動データ２の補正は行わない。
【００１５】
加工プログラム１には、各ブロックごとの工具の移動として移動データ２を指令する。移動データ２には、指令工具Ｔ、制御モード、工具の指令経路（移動経路）、工具軸方向ベクトル（工具姿勢ベクトル）、指令速度に関する指令が含まれる。ここで、工具軸方向ベクトルの代わりに、工具軸方向ベクトルを定めるための機械の回転軸の角度、または、オイラー角、ロール・ピッチ・ヨー角などを用いてもよい。また、さらに好ましくは、ワーク（工作物）の加工面の法線ベクトルＮを指令する。
【００１６】
ここで制御モードとは、
１）切削点制御モード
２）工具先端中心点制御モード
３）機械位置制御モード
のいずれかである。切削点制御モードは工具の切削点（ワークに工具が接する点）Ｐｅの位置および送り速度を移動データ２に従って制御するモードである。このモードでは、加工プログラム１に指令する移動データ２は切削点Ｐｅの位置およびその送り速度であり、すなわち加工形状と加工速度そのものを指す。また、工具先端中心点制御モードは、工具先端中心点Ｐｃの位置および送り速度を移動データ２に従って制御するモードである。このモードでは、加工プログラム１に指令する移動データ２は工具先端中心点Ｐｃの位置およびその送り速度であり、工具先端中心点Ｐｃは切削点Ｐｅに対して工具の径（ｄ，ｒ）分だけ補正した位置である。さらに、機械位置制御モードは、機械位置Ｐｍの位置、回転軸（ないしは工具の姿勢を制御する制御軸）の位置θおよびその送り速度（回転軸を含めた全軸の合成速度）を移動データ２に従って指令するモードである。このモードでは、加工プログラム１に指令する移動データ２は機械位置Ｐｍ、回転軸の位置θ、および送り速度であり、機械位置Ｐｍは工具先端中心点Ｐｃに対して工具長ｈだけ工具軸方向ｗ方向に補正した位置である。
【００１７】
切削点制御モードは、本来行いたい加工の形状を直接指令できるので精度よく指令でき、また移動データ２が工具の寸法（工具径、工具長）に依存しないので工具ごとに加工プログラム１を作成する必要がない。しかし、逆に言うと、切削点制御モードでは、ＮＣで工具径、工具長の補正を行うため、工具の軸方向（工具軸方向ベクトルｗ）が加工面に対して垂直に向いた状態（工具底面が加工面に平行になった状態）、すなわち特異点（または特異姿勢）では、工具径補正量が不連続に変化するため、過負荷や精度悪化を招く。以下、本発明では、加工プログラム１に切削点制御モードが指令されている場合に、移動経路上に特異点があるかどうかを判定し、特異点がある場合には、移動データ２を補正し、ブロック中の特異点近傍の区間では非切削点制御モード（工具先端中心点制御モードまたは機械位置制御モード）で動作させることにより、工具径補正量の急変の抑制を実現する方法について述べる。
【００１８】
切削点制御モードにおいて、加工プログラム１に指令された、始点から終点までの移動が、任意の媒介変数ｔを用いて、切削点Ｐｅ（ｔ）、単位工具軸方向ベクトルｗ（ｔ）、加工面の単位法線ベクトルＮ（ｔ）で指令されているとする。この媒介変数ｔは、始点からの移動時間、または始点からの移動距離、ないしはそれらを始点が０、終点が１となるように正規化した値とする。たとえば、媒介変数ｔを、始点からの移動距離を始点が０、終点が１となるように始点から終点までの移動距離Ｌで除して正規化した値であるとする。始点Ｐ０、終点Ｐ１の間を切削点の位置を直線補間するなら、
Ｐｅ（ｔ）  ＝  Ｐ０  ＋  （Ｐ１−Ｐ０）ｔ                  （１．１）
とする。また工具軸方向ベクトルは始点での単位工具軸方向ベクトルｗ０と終点での単位工具軸方向ベクトルｗ１の間は、両ベクトルに垂直な軸周りに一定の角速度で回転させる。
【００１９】
ｗ（ｔ）  ＝  Ｒｏｔ（ｎｗ，φｗ・ｔ）ｗ０                  （１．２）
ｎｗ＝（ｗ０×ｗ１）／｜ｗ０×ｗ１｜                        （１．３）
φｗ＝ｃｏｓ−１（ｗ０・ｗ１）                                （１．４）
【００２０】
ここでｎｗはｗ０とｗ１に垂直な方向の単位ベクトルであり、式（１．３）の右辺の「×」はベクトルの外積を示す。また、φｗはｗ０とｗ１のなす角度であり、式（１．４）の右辺の「・」はベクトルの内積を示す。式（１．２）のＲｏｔ（ｋ，φ）はベクトルｋ周りに角度φだけ回転させるための回転行列である。同様に、加工面の単位法線ベクトルＮ（ｔ）は始点での単位法線ベクトルＮ０と終点での単位法線ベクトルＮ１の間を、両ベクトルに垂直な軸周りに一定の角速度で回転させる。
【００２１】
Ｎ（ｔ）  ＝  Ｒｏｔ（ｎｎ，φｎ・ｔ）Ｎ０                  （１．５）
ｎｎ＝（Ｎ０×Ｎ１）／｜Ｎ０×Ｎ１｜                        （１．６）
φｎ＝ｃｏｓ−１（Ｎ０・Ｎ１）                                （１．７）
【００２２】
図６は本発明の実施の形態１の全体の処理の流れを示すフローチャートである。図において、ステップＳＴ１００は移動経路上に特異点があるかどうかを判定する処理であり、特異点判定部４にて行う。ステップＳＴ１００にて特異点があると判定された場合には、ステップＳＴ２００にて移動データ２の補正を行う。ステップＳＴ２００は移動データ補正部６にて行う。ステップＳＴ３００は、移動データ２（または補正後の移動データ７）に基づいて補間を行う処理であり、補間部８にて行う。以下、各ステップの詳細を説明する。
【００２３】
ステップＳＴ１００は、具体的には図７に示すフローチャートに従って処理を行う。図７において、ステップＳＴ１１０では、加工プログラム１に加工面の法線ベクトルＮの指令があるかどうかを判断する。もしＮの指令があれば、ステップＳＴ１１１に移る。ステップＳＴ１１１では加工面の法線ベクトルＮと工具軸方向ベクトルｗが平行の場合には特異点であると判断する。Ｎとｗのなす角度が０度である場合、すなわち
｜Ｎ×ｗ｜＝０                                              （１．８）
の場合には特異点であると判断する。一方、ステップＳＴ１１０で法線ベクトルＮの指令がない場合には工具の移動方向ベクトル（進行方向の単位ベクトル、移動経路の接線ベクトルに相当）ｖを用い、移動方向ベクトルｖと工具軸方向ベクトルｗに垂直なベクトルｕを求め、ｕと移動方向ベクトルｖに対して直角なベクトルを法線ベクトルＮとして求める。
【００２４】
ｕ＝ｖ×ｗ／｜ｖ×ｗ｜                                      （１．９）
Ｎ＝ｕ×ｖ／｜ｕ×ｖ｜                                      （１．１０）
【００２５】
ここで移動方向ベクトルｖは切削点の移動する方向の単位ベクトルであり、移動経路の接線ベクトルをＰｅ（ｔ）をｔで微分して単位ベクトルとすることで求める。たとえば直線補間の場合には式（１．１）より、
ｖ＝（Ｐ１−Ｐ０）／｜Ｐ１−Ｐ０｜                          （１．１１）
で表される。あるいは法線ベクトルＮを経由せず、ｖとｗが垂直である場合に特異点であると判断する。すなわち、
ｖ・ｗ＝０                                                  （１．１２）
の場合には特異点であると判断するとしてもよい。
【００２６】
上記ステップＳＴ１００の手順は、各ブロックについて、ブロックの始点、終点およびブロックの途中の点について行う。ブロックの途中については以下のように計算を行う。
【００２７】
工具軸方向ベクトルｗ（ｔ）が式（１．２）、加工面の法線ベクトルＮ（ｔ）が式（１．５）で与えられるとする。ステップＳＴ１１０でＮ指令ありの場合には、
｜Ｎ（ｔ）×ｗ（ｔ）｜＝０                                  （１．１３．１）
を満たすｔを解析的または数値的に解くことで特異点に該当するｔを求める。ステップＳＴ１１０でＮ指令なしの場合も、同様に、
Ｎ（ｔ）・ｖ（ｔ）＝０                                      （１．１３．２）
を解くことで特異点に該当するｔを求める。解がない場合にはブロック中には特異点は存在せず、解がある場合には、媒介変数が解ｔ＝ｔｓに相当する位置に特異点があると判断する。この位置をＳ＝Ｐｅ（ｔｓ）とする。
【００２８】
なお上記のように特異点と判定するのは、工具がスクエアエンドミル（ｄ＞０）およびラジアスエンドミル（ｄ−ｒ＞０、ｒはコーナー半径）の場合だけである。
【００２９】
次に図６において、特異点がある場合の、移動データ２の補正処理（ステップＳＴ２００）の動作を、図８を用いて説明する。
【００３０】
ステップＳＴ２０１では加工プログラム１に指令された移動データ２と工具データ３から、工具先端中心点Ｐｃが特異点Ｓに一致し、かつ、工具軸方向ベクトルが特異点における加工面の法線ベクトルＮｓに一致する場合の刃先位置から補正点Ｑａ、Ｑｂを計算する。Ｑａは工具先端中心点がＳにあるとして、この位置における工具先端点に対する工具切削点の相対位置関係が、特異点Ｓに到達する前と同じであると仮定した場合の、工具切削点の位置に相当する。この図においては、Ｑａは特異点Ｓから工具進行方向に距離ｄだけ進んだ点である。具体的には、特異点Ｓから工具径補正ベクトルΔＰｃｏｍｐａだけ減算することで求められる。
【００３１】
Ｑａ＝Ｓ−ΔＰｃｏｍｐａ                                    （１．１４）
【００３２】
ここでΔＰｃｏｍｐａは特異点Ｓの直前の点または近似的には始点における工具径補正ベクトルであり、その点の媒介変数をｔａとすると、次の式（１．１５）から式（１．１８）に、Ｎ＝Ｎ（ｔａ）、ｗ＝ｗ（ｔａ）、ｖ＝ｖ（ｔａ）を代入して、求めることができる。
【００３３】
ΔＰｃｏｍｐ  ＝  ｄ・ｅ                                    （１．１５）
ｅ＝  （Ｎ−（Ｎ・ｗ）ｗ）／｜Ｎ−（Ｎ・ｗ）ｗ｜            （１．１６）
ｅ＝  （（Ｎ×ｗ）×ｗ）／｜（Ｎ×ｗ）×ｗ｜                （１．１７）
ｅ＝  （（ｖ×ｗ）×ｗ）／｜（ｖ×ｗ）×ｗ｜                （１．１８）
【００３４】
ここでｅは切削点から工具先端中心点に向かう単位ベクトルであり、上記式（１．１６）〜（１．１８）のいずれかで計算する。
【００３５】
同様にＱｂは工具先端中心点がＳにあるとして、この位置における工具先端点に対する工具切削点の相対位置関係が、特異点Ｓを越えた後と同じであると仮定した場合の、工具切削点の位置に相当する。この図においては、Ｑｂは特異点Ｓから工具進行方向に距離ｄだけ戻った点である。具体的には、特異点Ｓから工具径補正ベクトルΔＰｃｏｍｐｂだけ減算することで求められる。
【００３６】
Ｑｂ＝Ｓ−ΔＰｃｏｍｐｂ                                    （１．１９）
【００３７】
ここでΔＰｃｏｍｐｂは特異点Ｓの直後の点または近似的には終点における工具径補正ベクトルであり、その点の媒介変数をｔｂとすると、前述の式（１．１５）から式（１．１８）に、Ｎ＝Ｎ（ｔｂ）、ｗ＝ｗ（ｔｂ）、ｖ＝ｖ（ｔｂ）を代入して、求めることができる。
【００３８】
次に、ステップＳＴ２０２では加工プログラム１に指令された移動データ２と工具データ３から、前記補正点Ｑａ、Ｑｂにおける、工具軸方向ベクトルｗと加工面法線ベクトルＮを算出する。まずＱａについて算出する。
【００３９】
Ｑａにおいては、その位置に対応する媒介変数をｔａ＝ｔｓ＋ｄ／Ｌとすると、加工プログラム１に指令された工具軸方向ベクトルはｗ（ｔａ）であるが、それを修正して、Ｑａにおける工具軸方向ベクトルｗａはｗ（ｔｓ）＝Ｎｓ＝Ｎ（ｔｓ）と設定する。すなわち、Ｑａにおいては特異点における工具軸方向に一致させる。また点Ｑａにおける加工面の法線ベクトルは、加工プログラム１に指令された値はＮ（ｔａ）であるが、それを修正して、特異点通過前の位置における加工面法線ベクトルＮ（ｔｓ−δ）（δ＞０）と工具軸方向ベクトルｗ（ｔｓ−δ）との相対的な位置関係に近づくように、特異点における加工面法線ベクトルＮｓを少しだけ回転させたベクトルＮａとする。たとえば、最も簡単な例としては、δ＝ｔｓ、すなわち始点における加工面法線ベクトルＮ０と工具軸方向ベクトルｗ０との相対的な位置関係（回転軸の向きも含めた回転角）に近づくように、Ｎ０とｗ０を含む平面内において微小角度だけ回転させる。すなわち、微小角度をΔφとおくと、次式で計算する。
【００４０】
Ｎａ  ＝  Ｒｏｔ（ｎａ，Δφ）Ｎｓ                          （１．２０）
ｎａ＝（Ｎ０×ｗ０）／｜Ｎ０×ｗ０｜                        （１．２１）
【００４１】
この微小角度Δφはその角度を予めパラメータで設定しておくか、あるいは始点から特異点までの移動角度に対して所定の割合を乗じて求めるとよい。ΔφはＮ０とｗ０のなす角度以下の値とする。
【００４２】
同様に、Ｑｂにおいても、工具軸方向ベクトルｗｂは特異点Ｓにおける工具軸方向ｗｓ＝Ｎｓに一致させる。また、加工面の法線ベクトルＮｂは、特異点通過後の位置における加工面法線ベクトルＮ（ｔｓ＋δ）（δ＞０）と工具軸方向ベクトルｗ（ｔｓ＋δ）との相対的な位置関係に近づくように、特異点における加工面法線ベクトルＮｓを少しだけ回転させたベクトルＮｂとする。たとえば、最も簡単な例としては、δ＝（１−ｔｓ）、すなわち終点における加工面法線ベクトルＮ１と工具軸方向ベクトルｗ１との相対的な位置関係に近づくように、Ｎ１とｗ１を含む平面内において微小角度だけ回転させる。すなわち、微小角度をΔφとおくと、次式で計算する。
【００４３】
Ｎｂ  ＝  Ｒｏｔ（ｎｂ，Δφ）Ｎｓ                          （１．２２）
ｎｂ＝（Ｎ１×ｗ１）／｜Ｎ１×ｗ１｜                        （１．２３）
【００４４】
この微小角度Δφはその角度を予めパラメータで設定しておくか、あるいは始点から特異点までの移動角度に対して所定の割合を乗じて求めるとよい。ΔφはＮ１とｗ１のなす角度以下の値とする。
【００４５】
なお、本実施の形態１では切削点指令だけで工具の移動を行うので、工具先端中心点の計算は不要である。
【００４６】
さらに、ステップＳＴ２０３では、次の順序で移動するような移動データ７に変更する。
【００４７】
工具軸方向ベクトル  加工面法線ベクトル  工具先端中心点
始点                        ｗ０                Ｎ０                  −
↓切削点制御モード
補正点Ｑａ                  Ｎｓ                Ｎａ                  −
↓移動なし
補正点Ｑｂ                  Ｎｓ                Ｎｂ                  −
↓切削点制御モード
終点                        ｗ１                Ｎ１                  −
（「−」は設定不要、すなわち補間部において参照しないことを示す）
【００４８】
すなわち、始点から、Ｑａ、Ｑｂを経由して終点に至るような移動データ７とし、Ｑａにおける工具軸方向ベクトルはｗａ＝Ｎｓ、加工面法線ベクトルはＮａ、Ｑｂにおける工具軸方向ベクトルはｗｂ＝Ｎｓ、加工面法線ベクトルはＮｂとする。
【００４９】
次に図６において、補間処理（ステップＳＴ３００）の動作を説明する。
【００５０】
移動データ７が特異点を通過しない場合には、通常通りの補間を行う。すなわち、まず現在の媒介変数をｔｃ、ブロックの始点から終点までの移動距離をＬ、指令速度をＦ、補間周期をｄＴとすると、次回の補間点における媒介変数ｔｎは
ｔｎ  ＝  ｔｃ  ＋  Ｆ×ｄｔ  ／  Ｌ                        （１．３１）
で表される。このｔｎをそれぞれ式（１．１）、式（１．２）、式（１．５）に代入することで、次回の切削点Ｐｅ（ｔｎ）、単位工具軸方向ベクトルｗ（ｔｎ）、加工面の法線ベクトルＮ（ｔｎ）が計算できる。これらを用いて、式（１．１５）〜式（１．１８）に従い工具径補正ベクトルΔＰｃｏｍｐ（ｔｎ）を求め、切削点Ｐｅ（ｔｎ）に工具径補正ベクトルΔＰｃｏｍｐ（ｔｎ）を加算して工具先端中心点Ｐｃ（ｔｎ）を求める。
【００５１】
Ｐｃ（ｔｎ）＝  Ｐｅ（ｔｎ）＋ΔＰｃｏｍｐ（ｔｎ）          （１．３２）
【００５２】
一方、移動データ７が特異点を通過する場合には、ブロックの始点から補正点Ｑａまでの区間では、補正点Ｑａを終点と置き換えて同様に補間を行う。すなわち、式（１．１）から式（１．７）において、
Ｐ１        →    Ｑａ
ｗ１        →    Ｎｓ
Ｎ１        →    Ｎａ
と置き換え、式（１．３１）のＬを
｜Ｐ１−Ｐ０｜    →    ｜Ｑａ−Ｐ０｜
と置き換えてＰｅ（ｔｎ）、ｗ（ｔｎ）、Ｎ（ｔｎ）を補間計算し、これらを用いて同様にＰｃ（ｔｎ）を求める。
【００５３】
補正点Ｑａに到達すると、切削点を補正点Ｑｂに切り替えるとともに、加工面法線ベクトルをＮｂに変更する。さらに、補正点Ｑｂからブロックの終点までの区間では、補正点Ｑｂを始点を置き換えて、同様に補間計算する。すなわち、式（１．１）から式（１．７）において、
Ｐ０        →    Ｑｂ
ｗ０        →    Ｎｓ
Ｎ０        →    Ｎｂ
と置き換え、式（１．３１）のＬを
｜Ｐ１−Ｐ０｜    →    ｜Ｐ１−Ｑｂ｜
と置き換えてＰｅ（ｔｎ）、ｗ（ｔｎ）、Ｎ（ｔｎ）を補間計算し、これらを用いて同様にＰｃ（ｔｎ）を求める。
【００５４】
さらに、工具先端中心点がＰｃに一致し、かつ、工具軸方向ベクトルがｗに一致するような、機械位置Ｐｍ（直交３軸）と回転２軸の角度θを求める。一般に５軸加工機では機械の軸構成や軸間の幾何学的な位置関係に応じて、
ｗ＝ｆ（θ）                                                （１．３３）
Ｐｃ＝ｇθ（Ｐｍ）                                           （１．３４）
の関係がある（順運動学の関係）。従って、この逆関数（逆運動学の関係）を用いて、
θ（ｔｎ）＝ｆ−１（ｗ（ｔｎ））                              （１．３５）
Ｐｍ（ｔｎ）＝ｇθ−１（Ｐｃ（ｔｎ））                         （１．３６）
により、機械位置Ｐｍ（ｔｎ）と回転２軸の角度θ（ｔｎ）を求め、合計５軸分の位置指令値１１として、各軸の位置制御部１〜５（符号１２〜１６）に指令する。
【００５５】
なお、求めた補間点（Ｐｍ（ｔｎ）とθ（ｔｎ））に対して、各軸ごとの加減速処理（補間後加減速）を行ってから、位置指令値１１として、各軸の位置制御部１〜５（符号１２〜１６）に指令してもよい。あるいは、補間前加減速を適用し、式（１．３１）のＦは指令速度ではなく、補間前加減速後の速度としてもよい。あるいは、補間前加減速と補間後加減速の両者を併用してもよい。
【００５６】
補間部８では、切削点制御中は、切削点の位置を現在位置９として表示部１０に送る。特異点を通過する場合には、たとえば、図１０の（１）及び（２）のように、制御上は切削点は始点Ｐ０から点Ｑａ、点Ｑｂ、終点Ｐ１へと移動する。しかし、このように移動する切削点は指令経路上を途中で戻ることになるし、また点Ｑａから点Ｑｂまで一瞬で変化するので、ＮＣの操作者にとって理解しにくい。そこで、補正した部分（切削点が点Ｓを越えてＱａにいたる区間、切削点がＱｂから点Ｓまでの区間）では、現在位置９は特異点Ｓにあるとして表示部１０に送り、表示させる。
【００５７】
あるいは、実際の切削点ではなく、補正前の移動データ２を用いて、補正前の移動経路（加工プログラム１に指令された指令経路）上を補間して求めてもよい。このとき、始点でＰ０、工具先端中心点がＳにあるときにＳ、終点でＰ１となるように、実際の工具の移動と連動して補間速度を調整する。たとえば補正前の移動距離をＬ、補正後の移動距離をＬ’、補正前の送り速度をＦとすると、補正後の移動速度Ｆ’は、
Ｆ’＝Ｆ×Ｌ’／Ｌ                                          （１．３７）
のように、移動距離に比例するように、送り速度を調整する。求めた補正前の移動経路上の補間点を現在位置９とし、表示部１０に送り、表示させる。
【００５８】
これにより、操作者にとって自然で理解しやすい位置表示が可能となる。
【００５９】
上記手順に沿った場合の動作の例を、図９及び図１０に従って説明する。
【００６０】
図９（１）に一例として加工プログラム１に指令された指令経路に沿って、切削点がＰ０からＰ１まで移動する間に、途中で工具軸方向ベクトルと加工面法線ベクトルが一致する点Ｓ（以下、特異点Ｓという。）を通過する場合を考える。図において、○印は工具先端中心点、△は切削点を示す。この例では、特異点Ｓに至るまでは、工具２０は加工面２２に対して前傾しながら工具２０の進行方向の刃にて加工し、逆に、特異点Ｓ通過後は工具２０は加工面２２に対して後傾しながら工具２０の後ろ方向の刃にて加工する。
【００６１】
このとき、まず、図９（２）に示すように、工具先端中心点が特異点Ｓに一致し、かつ、その位置で工具軸方向ベクトルが特異点Ｓにおける加工面法線ベクトルＮｓと平行になる状態を考え、ステップＳＴ２０１の手順に従って、補正点Ｑａ、Ｑｂを求める。また補正点Ｑａ、Ｑｂにおける加工面法線ベクトルＮａ、ＮｂをステップＳＴ２０２の手順に沿って求める。Ｎａ、Ｎｂは、特異点Ｓにおける加工面法線ベクトルＮｓから、それぞれ、ＮａはＮ０に近づくように（正確にはｗ０とＮ０の位置関係（前傾の状態）に近づくように）、ＮｂはＮ１に近づくように（正確にはｗ１とＮ１の位置関係（後傾の状態）に近づくように）、少しだけずらしてあるのがポイントである。
【００６２】
図１０（１）に示すように、移動の前半部分（始点Ｐ０から補正点Ｑａまでの間）では、Ｑａにおける加工面法線ベクトルを始点の工具軸方向ベクトルと加工面法線ベクトルとの関係に近づくように補正しているので、加工面法線ベクトルと工具軸方向ベクトルが平行になることがなく、工具径補正ベクトルΔＰｃｏｍｐの計算値が不定となることはない。特異点Ｓ近傍では、特異点Ｓ通過前の位置における工具切削点（工具の進行方向の刃）をおおよそ保持しながら動作し、工具先端中心点が点Ｓに一致する点まで移動する。
【００６３】
この位置まで到達すると、今度は図１０（２）に示すように、切削点を補正点Ｑｂに切り替えるとともに、加工面法線ベクトルをＮｂに変更する。この部分では、あくまで着目する切削点を切り替えるだけで、工具先端中心点も、工具方向ベクトルも変らないので、実際の工具あるいは機械の移動はない。
【００６４】
それ以降は終点Ｐ１に向かって移動する。この後半部分（補正点Ｑｂから終点Ｐ１までの間）も、Ｑｂにおける加工面法線ベクトルを終点の工具軸方向ベクトルと加工面法線ベクトルの関係に近づくように補正しているので、加工面法線ベクトルと工具軸方向ベクトルが平行になることがなく、工具径補正ベクトルΔＰｃｏｍｐの計算値が不定となることはない。特異点Ｓ近傍では、特異点Ｓ通過後の位置における工具切削点（工具の後ろ方向の刃）をおおよそ保持しながら動作し、切削点が終点Ｐ１に一致する点まで移動する。
【００６５】
以上のように、本実施の形態１では、工具先端中心点が特異点に一致する点における刃先位置を基準として補正点を求め、移動中に工具軸方向ベクトルと加工面法線ベクトルが平行とならないように補正点での加工面法線ベクトルを求めたので、工具径補正量が連続的に変化するので、工具径補正ベクトルが急激に変化することがなく、制御装置や機械の故障やアラーム停止が生じず滑らかに安定して動作し、また、急激な補正動作を行わないので、運動精度の不要な悪化が生じず高い加工精度を維持できるという効果がある。さらに、加工面に対して工具が急峻に動かないので、工具損傷や過度な工具磨耗を招かないため、安定した加工が可能になるという効果がある。
【００６６】
また、本実施の形態においては、移動データ補正部は、特異点を含む区間の始点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角が、特異点を含む区間の始点の直前の点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角に近づくように、特異点を含む区間の始点における加工面法線ベクトルまたは工具軸方向ベクトルないしはその両方を補正し、特異点を含む区間の終点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角が、特異点を含む区間の終点の直後の点における加工面法線ベクトルに対する工具軸方向ベクトルのなす回転角に近づくように、特異点を含む区間の終点における加工面法線ベクトルまたは工具軸方向ベクトルないしはその両方を補正するようにしたので、加工面の法線ベクトルに対する工具軸方向ベクトルの回転角が、特異点近傍の区間の前後で連続的に変化するように補正するので、補正により切削点自体が変わらず、精度のよい加工が実現できる。
【００６７】
また、本実施の形態においては、移動データ補正部において、特異点を含む区間の始点を、特異点の位置から、特異点を含む区間の始点の直前の位置における工具径補正ベクトルを減算した位置とし、特異点を含む区間の終点を、特異点の位置から、特異点を含む区間の直後の位置における工具径補正ベクトルを減算した位置とするようにしたので、特異点近傍区間での工具先端中心点の移動量が０となるため、無駄な移動が生じず、短時間の加工を行うことができる。また、特に、補正量の変化によって、移動方向に対して逆行することがないので、滑らかな動きを短時間に行うことができ、動きが理解しやすいので操作者の操作も容易である。
【００６８】
また、本実施の形態においては、移動データ補正部において、特異点を含む区間の始点および終点を特異点とし、特異点を含む区間の始点および終点における加工面法線ベクトルを補正するようにしたので、特異点を含まない区間においては指令経路そのままであり、作り変える必要がなく、単に中間部分の非切削点指令による移動を挿入するだけの形であるため、処理が比較的簡単になり、計算時間が短くて済むという効果がある。また、特に特異点に進入するときと、出るときで、工具径補正ベクトルの向きが平行でも逆向きでもない場合に、精度よく加工を行うことができる。
【００６９】
本実施の形態による発明は、加工において最も重要な刃先の位置自体は指令経路に沿って動かしつつ、加工面法線ベクトルを補正することで特異点の問題を回避することが特徴である。もちろん加工面法線ベクトルを変えることでも、一般的には工具から見た切削点の位置が変わるため、加工誤差への影響がないわけではない。スクエアエンドミルでは、工具側面から見て工具エッジが尖っているため、本発明のように、加工面法線ベクトルを工具中心軸（特異点方向）と加工面法線ベクトルを含む面内で回転させてやれば、切削点自体は変らないため、加工誤差への影響は完全に排除できる。また、あるいはラジアスエンドミルでもコーナ半径が小さいものにおいては、やはり加工面法線ベクトルを補正することにより加工誤差への影響は軽微なものに留まる。つまり、本発明によれば、加工精度を維持しつつ、特異点にて滑らかに動作することができる。
【００７０】
なお、以上述べた実施の形態において、ブロックの移動量が短い場合や、工具径が大きい場合には、計算によって求められる補正点がそのブロック内にない場合がある。この場合には、先読みにより、前後のブロックを参照し、複数のブロックにまたがって工具データの補正を行うことで対応が可能である。
【００７１】
本実施の形態においては、特異点における、加工面法線ベクトルと工具軸方向ベクトルの相対的な幾何学的な関係を、特異点通過前後の状態に近づけるように補正することが要点であり、移動経路、工具軸方向ベクトル、加工面法線ベクトルの補間方法には依存しない。たとえば移動経路が円弧補間でも同様に円弧理論式に基づいて補間すればよい。
【００７２】
式（１．８）や式（１．１２）における特異点有無判定では、実用的には、計算機の計算誤差などを考慮して、適当な判定許容誤差を設けて判定するとよいのはいうまでもない。
【００７３】
実施の形態２．
［後傾姿勢から前傾姿勢に切り替わる場合］
上記の実施の形態１の図９、図１０では、工具が前傾姿勢から後傾姿勢に切り替わるような場合について述べた。本実施の形態２では、図１１（１）に示すように、逆に工具が後傾姿勢から前傾姿勢に切り替わるような場合について説明する。
【００７４】
発明の構成と動作は実施の形態１と同一である。ただし、結果として得られる動作と、発明の効果が異なる部分がある。以下相違する点について説明する。
【００７５】
図８のステップＳＴ２０１において、式（１．１４）から（１．１９）に基づいて補正点Ｑａ、Ｑｂを求める。求め方に違いはない。ただし、求められた結果を見ると、図１１（２）のようにＱａは特異点Ｓから工具進行方向に距離ｄだけ戻った点となり、Ｑｂは特異点Ｓから工具進行方向に距離ｄだけ進んだ点となる。つまり図９（２）と比べるとＱａとＱｂが逆になっている。これは、図９の例と、図１１の例では、加工面法線ベクトルに対する工具軸方向の向きが逆（図９では前傾→後傾、図１１では後傾→前傾）であるからである。
【００７６】
この補正点Ｑａ、Ｑｂに対して、実施の形態１と同様に加工面法線ベクトルＮａ、Ｎｂを補正し、これに基づいて、始点から、Ｑａ、Ｑｂを経由して終点に至るような移動データ７とする。すなわち図１２（１）に示すように、移動の前半部分（始点Ｐ０から補正点Ｑａまでの間）では工具の後ろ方向の刃にて切削し、工具先端中心点が点Ｓに一致する点にて切削点と加工面の法線ベクトルを切り替えて（移動はしない）、移動の前半部分（補正点Ｑｂから終点Ｐ１までの間）では工具の進行方向の刃にて切削する。
【００７７】
なお、現在位置表示のための切削点は、実際の切削点ではなく、補正前の移動データ２を用いて、補正前の移動経路（加工プログラム１に指令された指令経路）上を補間して求める。このとき、始点でＰ０、工具先端中心点がＳにあるときにＳ、終点でＰ１となるように、実際の工具の移動と連動して補間速度を調整する。たとえば補正前の移動距離をＬ、補正後の移動距離をＬ’、補正前の送り速度をＦとすると、補正後の移動速度Ｆ’は、
Ｆ’＝Ｆ×Ｌ’／Ｌ                                          （１．３７）
のように、移動距離に比例するように、送り速度を調整する。求めた補正前の移動経路上の補間点を現在位置９とし、表示部１０に送り、表示させる。
【００７８】
このように、工具が後傾姿勢から前傾姿勢に切り替わるような場合でも、実施の形態１と同じ構成と同じ処理で同様な効果が得られる。
【００７９】
また、特に工具が後傾姿勢から前傾姿勢に切り替わる場合には、特異点通過前後で、工具径補正ベクトルΔＰｃｏｍｐが正から負に変わるので、単純に、特異点近傍で、非切削点制御で直線補間で移動する場合では、たとえば工具軸方向ベクトルと加工面法線ベクトルのなす角度が所定の範囲内の区間を非切削指令で移動するように選んだ場合などでは、工具が逆行する（加工プログラム１に指令した移動の方向と逆方向に進む）場合がある。たとえば非切削点制御モードで直線補間する区間の長さが工具外径（２ｄ）よりも短い場合には、切削点の前進する移動量よりも工具径補正ベクトルが負方向に変化する量（２ｄ）よりも小さいので、その区間では工具が始点から終点に向かう方向の逆方向に進むことになる。このような逆方向への移動があると、方向反転時のショックで精度劣化や工具のチッピングなどを生じる、いったん削ったところを再度削るという無駄な動きがあるため加工時間が増大する、操作者が動きを理解しにくく操作ミスによる衝突などといった問題の遠因となる、といった問題が生じる。
【００８０】
これに対して、本発明では、そもそも特異点における刃先位置を基準に補正点を求めているので、逆行することがなく、滑らかな動きを短時間に行うことができ、動きが理解しやすいので操作者の操作が容易である。
【００８１】
実施の形態３．
［補正点を特異点に一致させる場合］
上記の実施の形態１では、特異点Ｓに工具先端中心点が一致し、かつ、この点で工具の姿勢が加工面に垂直となった状態での刃先位置を補正点とした。しかし、別の方法として、補正点はあくまで特異点Ｓとし、実施の形態１と同様に補正点での加工面法線ベクトルを補正し、補正点間は非切削点指令により直線補間してもよい。以下、この方法について述べる。
【００８２】
発明の構成は、図４に示した実施の形態１と同一である。動作は、図６、図８のフローチャートに従うが、各ステップにおける具体的な処理で実施の形態１と相違点がある。以下、相違点について述べる。
【００８３】
本実施の形態においては、図８のステップＳＴ２０１では、補正点ＱａとＱｂは特異点Ｓに一致させる。
【００８４】
次に、ステップＳＴ２０２では補正点Ｑａ、Ｑｂにおける、工具軸方向ベクトルｗ、加工面法線ベクトルＮおよび工具先端中心点を算出する。工具軸方向ベクトルは、点Ｑａ、点Ｑｂとも特異点における工具軸方向ベクトルｗｓ＝Ｎｓに一致させる。加工面法線ベクトルは、実施の形態１と同様に、Ｎａは特異点通過前の位置における加工面法線ベクトルＮ（ｔｓ−δ）（δ＞０）と工具軸方向ベクトルｗ（ｔｓ−δ）との相対的な位置関係に近づくように、特異点における加工面法線ベクトルＮｓを少しだけ回転させたベクトルとする。加工面の法線ベクトルＮｂは、特異点通過後の位置における加工面法線ベクトルＮ（ｔｓ＋δ）（δ＞０）と工具軸方向ベクトルｗ（ｔｓ＋δ）との相対的な位置関係に近づくように、特異点における加工面法線ベクトルＮｓを少しだけ回転させたベクトルＮｂとする。またＱａ、Ｑｂにおける工具先端中心点Ｐｃａ、Ｐｃｂは、切削点の位置（Ｐｃａ、Ｐｃｂ）にそれぞれの位置・姿勢における工具径補正ベクトルΔＰｃｏｍｐを加算して求める。すなわち、点Ｑａにおける工具径補正ベクトルは、式（１．１５）〜（１．１８）に、Ｎ＝Ｎａ、ｗ＝Ｎｓ、ｖ＝ｖ（ｔｓ）を代入して求める。また点Ｑｂにおける工具径補正ベクトルは、式（１．１５）〜（１．１８）に、Ｎ＝Ｎｂ、ｗ＝Ｎｓ、ｖ＝ｖ（ｔｓ）を代入して求める。
【００８５】
さらに、ステップＳＴ２０３では、次の順序で移動するような移動データ７に変更する。
【００８６】
工具軸方向ベクトル  加工面法線ベクトル  工具先端中心点
始点                        ｗ０                  Ｎ０                −
↓切削点制御モード
補正点Ｑａ                  Ｎｓ                  Ｎａ                Ｐｃａ
↓工具先端中心制御モード
補正点Ｑｂ                  Ｎｓ                  Ｎｂ                Ｐｃｂ
↓切削点制御モード
終点                        ｗ１                  Ｎ１                −
【００８７】
すなわち、始点から、Ｑａ、Ｑｂを経由して終点に至るような移動データ７とし、Ｑａにおける工具軸方向ベクトルはＮｓ、加工面法線ベクトルはＮａ、工具先端中心点はＰｃａとする。また、Ｑｂにおける工具軸方向ベクトルはＮｓ、加工面法線ベクトルはＮｂ、工具先端中心点はＰｃｂとする。このうち、始点からＱａまでと、Ｑｂから終点までの間は切削点制御モードで移動する。一方、ＱａからＱｂまでの間は、非切削点制御モード（たとえば工具先端中心点制御モード）で移動する。この区間では工具先端中心点を補間するので、工具先端中心点Ｐｃａ、Ｐｃｂを求めておく必要がある。それ以外の区間（切削点制御の区間）では、工具先端中心点Ｐｃａ、Ｐｃｂの計算は必須ではない。
【００８８】
ステップＳＴ３００において、移動データ７が特異点を通過しない場合には、実施の形態１と同様であるので説明を省略する。移動データ７が特異点を通過する場合でも、切削点制御を行う区間（始点から補正点Ｑａまでの区間、補正点Ｑｂから終点までの区間）では実施の形態１と同様であるので説明を省略する。補正点Ｑａから補正点Ｑｂまでの間は、切削点制御モードではなく、非切削点制御モード（ここでは工具先端中心点制御モードの例を示す）で制御する。
【００８９】
切削点が補正点Ｑａに到達すると、工具先端中心点制御モードに切り替える。工具先端中心点制御モードでは、工具先端中心点を補間制御する。すなわち、まず現在の媒介変数をｔｃ、ＰｃａからＰｃｂまでの移動距離をＬ、指令速度をＦ、補間周期をｄＴとすると、次回の補間点における媒介変数ｔｎは
ｔｎ  ＝  ｔｃ  ＋  Ｆ×ｄｔ  ／  Ｌ                        （３．１）
で表される。このｔｎを用いて、次回の工具先端中心点の補間点Ｐｃ（ｔｎ）は、直線補間の場合は、
Ｐｃ（ｔｎ）  ＝  Ｐｃａ  ＋  （Ｐｃｂ−Ｐｃａ）  ｔｎ      （３．２）
で表される。工具軸方向ベクトルｗ（ｔｎ）はこの区間においては一定である（ｗ（ｔｎ）＝Ｎｓ）。求めた工具先端中心点の補間点Ｐｃ（ｔｎ）と工具軸方向ベクトルｗ（ｔｎ）から、実施の形態１と同様に、式（１．３３）〜式（１．３６）を用いて、Ｐｍ（ｔｎ）とθ（ｔｎ）を求めて、これを位置指令値１１とし、位置制御部１〜５（符号１２〜１６）に指令する。
【００９０】
上記手順に沿った場合の動作の例を、図１３および図１４に従って説明する。
【００９１】
図１３（１）は図９（１）と同じ例である。このとき、まず、図１３（２）に示すように、Ｎａは、始点におけるＮ０とｗ０の関係に近づくように、Ｎｓから少しだけ回転させる。またＮｂは、終点におけるＮ１とｗ１の関係に近づくように、Ｎｓから少しだけ回転させる。また、切削点が特異点Ｓ、工具軸方向ベクトルがＮｓ、および加工面の法線ベクトルがＮａないしはＮｂとしたときの、工具先端中心点Ｐｃａ、Ｐｃｂをそれぞれ求める。ここでＮａ、ＮｂをＮｓから回転させる角度は実施の形態１と同様とする。
【００９２】
図１４（１）および（３）に示すように、移動の前半部分（始点Ｐ０から補正点Ｑａまでの間）および後半部分（補正点Ｑｂから終点Ｐ１までの間）は、加工面法線ベクトルと工具軸方向ベクトルが平行になることがなく、切削点制御モードで移動する。一方、図１４（２）に示すように、中間部分（補正点Ｑａから補正点Ｑｂまでの間）は、工具先端中心点制御モードで移動する。工具先端中心点制御モードでは、工具径補正は行わず、加工面の法線ベクトルを参照せず、工具先端中心点間を補間するので、この区間内で工具軸方向ベクトルが加工面の法線ベクトルに平行になっても問題はない。
【００９３】
なお、切削点制御モード中に、特異点の問題を回避するために、特異点近傍にて一時的に工具先端中心点制御モードにＮＣ内部で切り替えて動作している間（中間部分）は、現在位置９は特異点Ｓの位置とする。あるいは、実際の切削点ではなく、補正前の移動データ２を用いて、補正前の移動経路（加工プログラム１に指令された指令経路）上を補間して求めてもよい。このとき、始点でＰ０、工具先端中心点が非切削点指令を行う区間の中間点（工具先端中心点がＰｃａとＰｃｂの中点）にあるときにＳ、終点でＰ１となるように、実施の形態１と同様に、実際の工具の移動と連動して補間速度を調整する。これにより、操作者にとって自然で理解しやすい位置表示が可能となる。
【００９４】
以上のように、本実施の形態によれば、実施の形態１と同様の効果が得られるとともに、さらに、切削点制御の区間においては指令経路そのままであり、作り変える必要がなく、単に中間部分の非切削点指令による移動を挿入するだけの形となる。特に、切削点制御の区間のおいて指令経路が変らない（移動距離が変らない）ので、指令速度を補正する必要がない。従って、ＮＣにおいて実現する上で、処理が比較的簡単になり、計算時間が短くて済むという効果がある。
【００９５】
なお、本実施の形態では、切削点が特異点に一致する点を基準に、特異点前後のそれぞれの姿勢における工具先端中心点間を直線補間したが、適当なトレランスを設け、特異点のトレランスだけ手前の点、および、特異点をトレランスだけ越えた点をそれぞれ補正点Ｑａ、Ｑｂとしてもよい。
【００９６】
また、補正点間の区間では、工具先端中心点ＰｃａとＰｃｂ間を直線補間するとしたが、他の補間方法でもよく、特にその区間の中央において工具先端中心点がＳに一致するように、Ｐｃａから点Ｓの間を第１の直線補間とし、点Ｓから点Ｐｃａ間を第２の直線補間としてもよい。あるいは、点Ｐｃａ、点Ｓ、点Ｐｃｂを滑らかに結ぶ曲線（円弧またはスプライン曲線）にて補間すればさらに動きが滑らかになり好ましい。
【００９７】
また、補正点間の区間では、工具先端中心点制御モードとしたが、特異点の回避のためには、切削点制御モードではなければよく、特に機械位置制御モードでもよい。特に本実施の形態においては、補正点間の区間では工具姿勢が変化しないので、機械位置の動きと工具先端中心点の動きは単に平行の関係であり、工具先端中心点を補間しても、機械位置Ｐｍ間を補間しても、等価である。
【００９８】
また、本実施の形態において、補間部において、実際の切削点の位置とは別に、加工プログラムに指令された移動経路上を補間した位置を計算し、これを現在位置として画面表示するようにすれば、補正された移動経路上の点ではなく、加工プログラムに指令された移動経路上の対応する位置を表示するので、加工プログラムとの対応がとりやすく、操作者にとって自然で理解しやすく、誤操作を招きにくい。
【００９９】
また、本実施の形態において、補間部において、特異点を含む区間においては、加工プログラムに指令された移動経路上の特異点の位置を計算し、これを現在位置として画面表示するようにすれば、補正された移動経路上の点ではなく、加工プログラムに指令された移動経路上の対応する位置を表示するので、加工プログラムとの対応がとりやすく、操作者にとって自然で理解しやすく、誤操作を招きにくい。特に、特異点を通過している区間であることが明示的に理解でき、操作者にとって自然で理解しやすい。
【０１００】
実施の形態４．
［工具姿勢を補正］
上記の実施の形態１〜３では、特異点Ｓに工具先端中心点が一致し、かつ、この点で工具の姿勢が加工面に垂直となる状態を経由する移動方法であった。しかし、このとき、工具刃先の１点ではなく、刃先の２点あるいは工具底面全体が加工面に接触し、切削負荷の増大などの問題を生じる場合がある。本実施の形態はこの問題を解決するための方法について説明する。
【０１０１】
発明の構成は実施の形態１と同一である。動作は、図６、図８のフローチャートに従うが、各ステップにおける具体的な処理で実施の形態１と相違点がある。以下、相違点について述べる。
【０１０２】
ステップＳＴ２０１では補正点ＱａとＱｂは特異点Ｓに一致させる。
【０１０３】
次に、ステップＳＴ２０２では補正点Ｑａ、Ｑｂにおける工具軸方向ベクトルｗと加工面法線ベクトルＮに加えて、このときの工具先端中心点Ｐｃａ、Ｐｃｂも算出する。まずＱａについて算出する。
【０１０４】
本発明の実施の形態においては、加工面の法線ベクトル自体は補正しない。従ってＱａにおける加工面法線ベクトルは特異点における加工面法線ベクトルＮｓに一致させる。一方、特異点において工具底面の全体が加工面に接触することを避けるため、工具軸方向ベクトルを補正する。すなわち、特異点Ｓにおいて、加工プログラム１に指令された値はｗｓ＝ｗ（ｔｓ）であるが、それを修正して、特異点における加工面法線ベクトルｗｓから、少しだけ特異点通過前の位置における工具軸方向ベクトルｗ（ｔｓ−δ）（δ＞０）に近づくように回転させたベクトルｗａとする。たとえば、ｗｓから微小角度Δφだけ始点における工具軸方向ベクトルｗ０の方に回転させる。
【０１０５】
ｗａ  ＝  Ｒｏｔ（ｎｗａ，Δφ）ｗｓ                        （４．１）
ｎｗａ＝（ｗｓ×ｗ０）／｜ｗｓ×ｗ０｜                      （４．２）
ここでΔφは実施の形態１と同様に選定する。
【０１０６】
また、このときの工具先端中心点Ｐｃａは、切削点Ｑａに工具径補正ベクトルΔＰｃｏｍｐを加算して求める。ここでΔＰｃｏｍｐは式（１．１５）〜（１．１８）に、Ｎ＝Ｎｓ、ｗ＝ｗａ、ｖ＝ｖ（ｔｓ）を代入して求める。
【０１０７】
同様に、Ｑｂにおいても、Ｑｂにおける加工面法線ベクトルは特異点における加工面法線ベクトルＮｓに一致させる。また、工具軸方向ベクトルｗｂは、特異点における加工面法線ベクトルｗｓから、少しだけ特異点通過後の位置における工具軸方向ベクトルｗ（ｔｓ＋δ）（δ＞０）に近づくように回転させたベクトルとする。たとえば、ｗｓから微小角度Δφだけ終点における工具軸方向ベクトルｗ１の方に回転させる。ここでΔφは実施の形態１と同様に選定する。またこのときの工具先端中心点Ｐｃｂは、切削点Ｑｂに工具径補正ベクトルΔＰｃｏｍｐを加算して求める。ここでΔＰｃｏｍｐは式（１．１６）〜（１．１９）に、Ｎ＝Ｎｓ、ｗ＝ｗｂ、ｖ＝ｖ（ｔｓ）を代入して求める。
【０１０８】
さらに、ステップＳＴ２０３では、次の順序で移動するような移動データ７に変更する。
【０１０９】
工具軸方向ベクトル  加工面法線ベクトル  工具先端中心点
始点                        ｗ０                Ｎ０                  −
↓切削点制御モード
補正点Ｑａ                  ｗａ                Ｎｓ                  Ｐｃａ
↓工具先端中心制御モード
補正点Ｑｂ                  ｗｂ                Ｎｓ                  Ｐｃｂ
↓切削点制御モード
終点                        ｗ１                Ｎ１                  −
【０１１０】
すなわち、始点から、Ｑａ、Ｑｂを経由して終点に至るような移動データ７とし、Ｑａにおける工具軸方向ベクトルはｗａ、加工面法線ベクトルはＮｓ、工具先端中心点はＰｃａとする。また、Ｑｂにおける工具軸方向ベクトルはｗｂ、加工面法線ベクトルはＮｓ、工具先端中心点はＰｃｂとする。このうち、始点からＱａまでと、Ｑｂから終点までの間は切削点制御モードで移動する。一方、ＱａからＱｂまでの間は、非切削点制御モード（たとえば工具先端中心点制御モード）で移動する。この区間では工具先端中心点を補間するので、工具先端中心点Ｐｃａ、Ｐｃｂを求めておく必要がある。それ以外の区間（切削点制御の区間）では、工具先端中心点Ｐｃａ、Ｐｃｂの計算は必須ではない。
【０１１１】
ステップＳＴ３００において、移動データ７が特異点を通過しない場合には、実施の形態１と同様であるので説明を省略する。移動データ７が特異点を通過する場合でも、切削点制御を行う区間（始点から補正点Ｑａまでの区間、補正点Ｑｂから終点までの区間）では実施の形態１と同様であるので説明を省略する。補正点Ｑａから補正点Ｑｂまでの間は、切削点制御モードではなく、非切削点制御モード（ここでは工具先端中心点制御モードの例を示す）で制御する。
【０１１２】
切削点が補正点Ｑａに到達すると、工具先端中心点制御モードに切り替える。工具先端中心点制御モードでは、工具先端中心点を補間制御する。工具先端中心点の補間点Ｐｃ（ｔｎ）の補間は式（３．１）、（３．２）と同様である。また、工具軸方向ベクトルｗ（ｔｎ）については、式（１．２）から式（１．４）において、
ｗ０        →    ｗａ
ｗ１        →    ｗｂ
ｔ          →    ｔｎ
と置き換えて求める。求めた工具先端中心点の補間点Ｐｃ（ｔｎ）と工具軸方向ベクトルｗ（ｔｎ）から、実施の形態１と同様に、式（１．３３）〜式（１．３６）を用いて、Ｐｍ（ｔｎ）とθ（ｔｎ）を求めて、これを位置指令値１１とし、位置制御部１〜５（符号１２〜１６）に指令する。
【０１１３】
上記手順に沿った場合の動作の例を、図１５、図１６に従って説明する。
【０１１４】
図１５（１）は図９（１）と同じ例である。このとき、まず、図１５（２）に示すように、工具軸方向ベクトルｗａは特異点における加工面の法線ベクトルＮｓから、始点の工具軸方向ベクトルｗ０に近づくように少しだけずらす。また工具軸方向ベクトルｗｂは特異点における加工面の法線ベクトルＮｓから、終点の工具軸方向ベクトルｗ１に近づくように少しだけずらす。また、切削点が特異点Ｓ、加工面の法線ベクトルがＮｓとしたときの、工具軸方向ベクトルがｗａ、ｗｂの場合の、工具先端中心点Ｐｃａ、Ｐｃｂをそれぞれ求める。
【０１１５】
図１６（１）に示すように、移動の前半部分（始点Ｐ０から補正点Ｑａまでの間）では、切削点がＱａに一致するときの工具軸方向ベクトルｗａはＮｓから始点の工具軸方向に近づくように補正しているので、加工面法線ベクトルと工具軸方向ベクトルが平行になることがなく、工具径補正ベクトルΔＰｃｏｍｐの計算値が不定となることはない。
【０１１６】
切削点がＱａに到達したとき、すなわち工具先端中心点がＰｃａに到達したときは、切削点制御モードから工具先端中心点制御モードに切り替える。この工具先端中心点制御モードでは、工具径補正は行わず、加工面の法線ベクトルを参照せず、工具先端中心点間を補間する（図１６（２））ので、この区間内で工具軸方向ベクトルが加工面の法線ベクトルに平行になっても問題はない。工具先端中心点が点Ｐｃｂに到達すると、再び切削点制御に切り替える。
【０１１７】
図１６（３）に示すように、移動の後半部分（補正点Ｑｂから終点Ｐ１までの間）では、切削点制御を行うが、移動の前半部分同様に、加工面法線ベクトルと工具軸方向ベクトルが平行になることがなく、工具径補正ベクトルΔＰｃｏｍｐの計算値が不定となることはない。
【０１１８】
なお、切削点制御モード中に、特異点の問題を回避するために、特異点近傍にて一時的に工具先端中心点制御モードにＮＣ内部で切り替えて動作している間は、現在位置９は特異点Ｓの位置とする。あるいは、実際の切削点ではなく、補正前の移動データ２を用いて、補正前の移動経路（加工プログラム１に指令された指令経路）上を補間して求めてもよい。このとき、始点でＰ０、工具先端中心点が非切削点指令を行う区間の中間点（工具先端中心点がＰｃａとＰｃｂの中点）にあるときにＳ、終点でＰ１となるように、実施の形態１と同様に、実際の工具の移動と連動して補間速度を調整する。これにより、操作者にとって自然で理解しやすい位置表示が可能となる。
【０１１９】
以上のように、本実施の形態によれば、移動中の刃先の軌跡に着目すると、移動の前半および後半部分では工具底面の一箇所で切削を行い、中間部分では刃が入れ替わるが、その間は両方の刃が加工面にあたることがなく、工具底面の広い範囲が同時に加工面に接触することがない。工具底面の広い範囲が加工面に接触すれば、切削抵抗が急激に増大し、工具損傷などを起こす可能性があるが、本実施の形態によれば、その問題が解消され、常に刃先の１点で加工面に接触するか、あるいは特異点を含む区間では刃先が加工面に当たらないので、工具底面の広い範囲が同時に加工面に接触することがないため、切削抵抗の急増や工具損傷を引き起こすことなく、工具損傷のリスクの少ない安定した加工が実現できる。また、ピックフィード加工を行っている場合には、工具底面の広い範囲が加工面に接触するということは、隣のパスにまではみ出して加工しているということにあり、隣の加工形状に干渉する（削り込む）可能性があるが、本実施の形態によれば、その問題が解消され、精度のよい加工が実現できる。
【０１２０】
本実施の形態では、切削点が特異点に一致する点を基準に、特異点前後のそれぞれの姿勢における工具先端中心点間を直線補間したが、実用的には、計算誤差や加工プログラムに指令された移動データに含まれるＣＡＭ演算誤差などを考慮して適当なトレランスを設け、特異点のトレランスだけ手前の点、および特異点をトレランスだけ越えた点をそれぞれ補正点Ｑａ、Ｑｂとすることが好ましい。
【０１２１】
また、実施の形態３で述べたように、補正点間の区間を特異点Ｓを経由する折れ線や曲線で補間してもよい。また、工具先端中心点ではなく機械位置Ｐｍの位置および回転軸（ないしは、工具の姿勢を制御する制御軸）の位置θを直線または曲線により補間してもよい。
【０１２２】
また、本実施の形態では、補正点において工具軸方向ベクトルを補正したが、実施の形態３と組み合わせて、補正点において、工具軸方向ベクトルと加工面法線ベクトルの両方を補正してもよい。すなわち、補正点において工具軸方向ベクトルと加工面法線ベクトルが平行でなく、かつ補正点Ｑａにおいては始点、補正点Ｑｂにおいては終点に対して、工具軸方向ベクトルと加工面法線ベクトルの相対的な幾何学的関係が近づいていればよい。これにより、実施の形態３と実施の形態４の中間的な効果が得られる。
【０１２３】
実施の形態５．
［角度が異なる場合］
前述の実施の形態では、工具が前傾姿勢から後傾姿勢、またはその逆の場合について例を挙げた。しかし、前傾姿勢で特異点に到達し、特異点から出た後は後傾姿勢だが進行方向に対してさらに左右方向にも傾くような場合がある。一般には、特異点前後の工具軸方向ベクトルと加工面法線ベクトルによっては、特異点通過前の工具径補正ベクトルと、特異点通過後の工具径補正ベクトルのなす角度が０度でも１８０度でもない、任意の角度になりうる。前述した実施の形態は、任意の工具径補正ベクトルと加工面法線ベクトルに対して解くことができる計算式を構成しているので、このような場合にも対応することができる。
【０１２４】
例として、実施の形態３を適用した場合を図１７（１）に、また、実施の形態４を適用した場合を図１７（２）に示す。図は、特異点通過後に進行方向に対して右側に工具が傾斜する場合の動作例を示している。図において、円または楕円は、工具底面輪郭を示している。横軸と縦軸が交差する点は特異点である。この図は特異点における加工面法線ベクトル（＝工具軸方向ベクトル）に垂直な平面に、工具底面輪郭を射影したものであり、横軸方向は移動方向にあわせている。また△および黒三角は切削点、○は工具先端中心点を示している。工具は始点（ｉ）→（ｉｉ）→（ｉｉｉ）→（ｉＶ）の順に移動する。
【０１２５】
図中の（１）の場合は、（ｉｉ）において工具軸方向が特異点に一致し（工具底面輪郭が真円）、その姿勢のまま工具先端中心点をＰｃａからＰｃｂまで補間して、（ｉｉｉ）に移動する。（ｉｉｉ）に到達すれば切削点をＳとし、ＳからＰ１まで切削点補間する。
【０１２６】
図中の（２）の場合は、（ｉｉ）において工具軸方向を特異点から少しずらし（工具底面輪郭が楕円）、（ｉｉｉ）の姿勢まで工具姿勢を変えながら工具先端中心点をＰｃａからＰｃｂまで補間して、（ｉｉｉ）に移動する。（ｉｉｉ）に到達すれば切削点をＳとし、ＳからＰ１まで切削点補間する。
【０１２７】
このように、本発明によれば、特異点通過前の工具径補正ベクトルと、特異点通過後の工具径補正ベクトルのなす角度が０度でも１８０度でもない、任意の角度に対して特異点通過が可能である。また、工具の進行方向に対して工具径補正ベクトルの方向が平行でない場合、一般にも適用可能であり、たとえば、工具進行方向に対して、工具の左方向への傾斜から右方向への傾斜に至る特異点通過などにも適用が可能である。
【０１２８】
実施の形態６．
［凹形状の場合］
特に加工面が凹形状の場合には、周辺の加工形状との干渉（削り込み）が問題となる。
【０１２９】
図１８（１）に示すように、上記の実施の形態１〜３に従って、ステップＳＴ２０１にて補正点Ｑａ、Ｑｂを求める際に、工具先端中心点が特異点Ｓに一致させた場合に、工具が周囲の移動経路に干渉する場合には、工具の底面が周囲の形状に少なくとも１点で接するように、工具を工具軸方向に、ワークから工具が離れる方向に離した位置に工具先端中心点を配置する。この位置において、ステップＳＴ２０１と同様に、Ｑａ、Ｑｂを求める。
【０１３０】
あるいは、図１８（２）に示すように、実施の形態４に従って、ステップＳＴ２０１にて補正した工具軸方向ベクトルｗａ、ｗｂを求める際に、切削点を特異点Ｓに一致させた場合に、工具が周囲の移動経路に干渉する場合には、工具の底面が周囲の形状に切削点だけで接するように、通常は微小角度としていたΔφをより大きくとり、干渉しないようにする。この姿勢において、ステップＳＴ２０２と同様に、Ｐｃａ、Ｐｃｂを求める。
【０１３１】
これにより、特異点を通過する際に、周辺の加工形状との干渉（削り込み）を生じないようになり、加工精度が向上する。特に、加工面が凹形状の場合は、干渉が生じやすいので、この場合に適用するとよい。
【０１３２】
以上のように、本実施の形態においては、移動データ補正部において、特異点を含む区間の始点および終点は、特異点を含む区間の外側の所定の距離または所定のブロック数の移動経路と干渉しないよう、工具軸方向に加工面から離れる方向に工具の位置を補正するようにしたので、特異点を通過する際に、周辺の加工形状との干渉（削り込み）を生じないようになり、加工精度が向上する。
【０１３３】
さらには、特異点があるブロックだけでなく、先読みにより、前後のブロックを参照し、より広い範囲で干渉計算すると、より効果的である。
【０１３４】
実施の形態７．
［戻る場合］
図１９（１）に示すように、ワークに対して工具が、前傾姿勢から、一時的に特異点になり、その後また前傾姿勢に戻る場合がある。このように、一時的に特異点になるが、その前後で工具径補正ベクトルΔＰｃｏｍｐが大きく変化しない場合がある。このような場合に、実施の形態１，２，３を適用すると、Ｎ０に対するｗ０と、Ｎ１に対するｗ１の相対的な位置関係がほぼ同じであれば、図１９（２）に示すように、ＮａとＮｂが近い値となり、特異点においても、工具径補正ベクトルΔＰｃｏｍｐを保持するような動作を行う。
【０１３５】
同様に実施の形態４を適用すると、ｗａとｗｂが近い値となり、特異点においても、工具径補正ベクトルΔＰｃｏｍｐを保持するような動作を行う。
【０１３６】
加工においては、基本的に工具は前傾、または後傾だけで削りたい場合がある。そのような場合においても、加工形状によっては、一時的に加工面に対して工具が垂直になってしまう場合がある。そのような場合に、特異点において、工具径補正ベクトルを大きく変化させてしまう、特に特異点において工具径補正ベクトルを０にしてしまうと、逆に加工形状に対して削りこみを生じる場合がある。たとえば、この図の例で、工具先端中心点を特異点Ｓに一致させれば、工具右下が指令経路に干渉してしまうのがわかるであろう。このように、基本的に工具から見て一定方向の刃で加工するような用途の場合には、本実施の形態のように、一時的に特異点となり、ワークから見て元の工具軸方向に戻る（特異点を通過しない）場合には、工具径補正ベクトルΔＰｃｏｍｐを保持するような動作を行うことが、不要な干渉防止に効果がある。
【０１３７】
以上のように、本実施の形態においては、移動データ補正部において、特異点に到達する直前の工具径補正ベクトルと、特異点から出発した直後の工具径補正ベクトルが同じ方向であるとき、特異点近傍においては、工具径補正ベクトルを保持するようにしたので、基本的に加工面に対して工具を一定の方向に傾けて加工するような用途の場合に、意図しない削りこみを防止する。
【０１３８】
実施の形態８．
［ラジアスエンドミルの場合］
本実施の形態においては、ラジアスエンドミルを用いた場合の補正方法について述べる。
【０１３９】
図２０に示すように、ラジアスエンドミルにおける工具径補正ベクトルΔＰｃｏｍｐは
ΔＰｃｏｍｐ  ＝  （ｄ−ｒ）ｅ  ＋  ｒ（Ｎ−ｗ）            （８．１）
で表される。ここで右辺第１項は式（１．１５）と同様に、ラジアスエンドミルの底面の平面の半径分の工具径補正ベクトルを指しており、スクエアエンドミルと同様に、底面全体が加工面に接する場合には工具径補正ベクトルが不定となる。一方、右辺第２項目はコーナ半径分の工具径補正ベクトルを指しており、これは加工面の法線ベクトルと工具軸方向ベクトルで一意に計算され、特異点において不定になることも、特異点前後で不連続になることもない。
【０１４０】
従ってラジアスエンドミルにおいては、上記の実施の形態１〜３のように加工面の法線ベクトルを補正する場合には、補正後の移動データ７を用いて計算を行うのは右辺第１項のみで、右辺第２項は補正前の移動データ２を用いて計算を行う。
【０１４１】
図において、補間部８において、補正後の移動データ７を用いて、次回の補間点における、Ｐｅ（ｔｎ）、ｗ（ｔｎ）、Ｎ（ｔｎ）を求め、これらを式（１．１５）から式（１．１８）に当てはめて、式（８．１）の右辺第１項を求める。さらに、補間部８は、加工プログラム１に指令された補正前の移動データ２を用いて、次回の補間点における指令されたとおりの加工面法線ベクトルＮ’（ｔｎ）を求め、これとｗ（ｔｎ）を用いて、式（８．１）の右辺第２項を求める。
【０１４２】
これにより、本来特異点には影響されず常に正確に計算可能なコーナ半径分の径補正ベクトルは、指令されたとおりの加工面法線ベクトルを用いて計算が可能となるとともに、ラジアスエンドミルの底面の平面の半径分の工具径補正ベクトルは、スクエアエンドミルと同様に、移動データを補正しながら動作することで、特異点の問題を回避しながら、計算することが可能となる。すなわち、本実施の形態によれば、ラジアスエンドミルを用いて特異点を通過する場合でも、精度のよい加工結果を得ることができる。
【０１４３】
なお、この場合でも、現在位置９は、実際の切削点ではなく、補正前の移動データ２を用いて、補正前の移動経路（加工プログラム１に指令された指令経路）上を補間して求めてもよい。これにより、操作者にとって自然で理解しやすい位置表示が可能となる。
【０１４４】
本実施の形態において、ラジアスエンドミル工具を用いて加工を行う場合には、移動経路補正部および補間部において工具径補正量を求める際に、工具底面の平坦部の半径に相当する工具径補正ベクトルは補正後の工具軸方向ベクトルおよび加工面法線ベクトルを用いて計算し、一方、工具のコーナ半径に相当する工具径補正ベクトルは補正前の工具軸方向ベクトルおよび加工面法線ベクトルを用いて計算し、両者を加算して工具径補正ベクトルを求めるようにしたので、ラジアスエンドミル工具を用いた加工において、精度よく加工を行うことができる。
【図面の簡単な説明】
【０１４５】
【図１】スクエアエンドミルを用いて工具底面のエッジにより加工を行う例を示す図である。
【図２】加工面に対する工具の姿勢を連続的に変えながら移動する例を示す図である。
【図３】ラジアスエンドミルを用いて加工を行う例を示す図である。
【図４】本発明の実施の形態１における数値制御装置の構成を示したブロック図である。
【図５】本発明の実施の形態１における工具データを説明するための図である。
【図６】本発明の実施の形態１における全体の処理の流れを示すフローチャートである。
【図７】本発明の実施の形態１における特異点判定処理を示すフローチャートである。
【図８】本発明の実施の形態１における移動データの補正処理を示すフローチャートである。
【図９】本発明の実施の形態１における補正前後の移動データを示す図である。
【図１０】本発明の実施の形態１における動作の例を示す図である。
【図１１】本発明の実施の形態２における補正前後の移動データを示す図である。
【図１２】本発明の実施の形態２における動作の例を示す図である。
【図１３】本発明の実施の形態３における補正前後の移動データを示す図である。
【図１４】本発明の実施の形態３における動作の例を示す図である。
【図１５】本発明の実施の形態４における補正前後の移動データを示す図である。
【図１６】本発明の実施の形態４における動作の例を示す図である。
【図１７】本発明の実施の形態５における動作の例を示す図である。
【図１８】本発明の実施の形態６における補正後の移動データを示す図である。
【図１９】本発明の実施の形態７における補正前後の移動データを示す図である。
【図２０】本発明の実施の形態８における工具径補正ベクトルを説明する図である。
【符号の説明】
【０１４６】
１  加工プログラム、２  加工プログラムに指令された移動データ、３  工具データ、４  特異点判定部、５  特異点判定結果、６  移動データ補正部、７  補正後の移動データ、８  補間部、９  現在位置、１０  表示部、１１  位置指令値、１２  位置制御部１、１３  位置制御部２、１４  位置制御部３、１５  位置制御部４、１６  位置制御部５、Ｐｅ  切削点、Ｐｃ  工具先端中心点、ｗ  工具軸方向ベクトル、Ｎ  加工面法線ベクトル、Ｑ  補正点、Ｓ  特異点、ΔＰｃｏｍｐ  工具径補正ベクトル。
【図１】
2008090734.tif 000003
【図２】
2008090734.tif 000004
【図３】
2008090734.tif 000005
【図４】
2008090734.tif 000006
【図５】
2008090734.tif 000007
【図６】
2008090734.tif 000008
【図７】
2008090734.tif 000009
【図８】
2008090734.tif 000010
【図９】
2008090734.tif 000011
【図１０】
2008090734.tif 000012
【図１１】
2008090734.tif 000013
【図１２】
2008090734.tif 000014
【図１３】
2008090734.tif 000015
【図１４】
2008090734.tif 000016
【図１５】
2008090734.tif 000017
【図１６】
2008090734.tif 000018
【図１７】
2008090734.tif 000019
【図１８】
2008090734.tif 000020
【図１９】
2008090734.tif 000021
【図２０】
2008090734.tif 000022