(57)【特許請求の範囲】
【請求項１】
コーナＲ部を持たないミル工具もしくはボールエンドミルを用い、予め設定されている工具径補正量および工具長補正量と、加工プログラムにより指令された切削点、切削面垂直方向および工具方向から、補間周期毎に直線軸制御点および回転軸制御点を求め該各制御点位置に各軸を駆動制御する直線軸３軸と回転軸２軸を有する５軸加工機を制御する数値制御方法において、
ブロック毎にブロック始点および終点での切削点位置、直線軸制御点を求め、
ブロック始点と終点における前記直線軸制御点間の距離が第１の設定値よりも小さく、かつ、ブロック始点と終点における前記切削点位置間の距離が第２の設定値よりも大きいと判断された場合、またはブロック始点と終点での前記直線軸制御点間の距離（ＣＤ）のブロック始点と終点での前記切削点位置間の距離（ＰＤ）に対する比の値（ＣＤ／ＰＤ）が第３の設定値より小さいと判断された場合に、当該ブロック終点での直線軸制御点は当該ブロック始点での直線軸制御点と等しいとして当該ブロックでの指令による直線軸の動作を発生させないようにしたことを特徴とする５軸加工機の数値制御方法。
【請求項２】
コーナＲ部を持たないミル工具もしくはボールエンドミルを用い、予め設定されている工具径補正量および工具長補正量と、加工プログラムにより指令された切削点、切削面垂直方向および工具方向から、補間周期毎に直線軸制御点および回転軸制御点を求め該各制御点位置に各軸を駆動制御する直線軸３軸と回転軸２軸を有する５軸加工機を制御する数値制御方法において、
ブロック毎にブロック始点および終点での切削点位置、直線軸制御点を求め、
ブロック始点と終点における前記直線軸制御点間の距離が第１の設定値よりも小さく、かつ、ブロック始点と終点における前記切削点位置間の距離が第２の設定値よりも大きいと判断された場合、またはブロック始点と終点での前記直線軸制御点間の距離（ＣＤ）のブロック始点と終点での前記切削点位置間の距離（ＰＤ）に対する比の値（ＣＤ／ＰＤ）が第３の設定値より小さいと判断された場合に、当該ブロックにおける直線軸に対してブロック始点での直線軸制御点位置からブロック終点での直線軸制御点位置への直線動作の移動指令とすることを特徴とする５軸加工機の数値制御方法。
【請求項３】
コーナＲ部を持つミル工具を用い、予め設定されている工具径補正量、コーナＲ補正量および工具長補正量と、加工プログラムにより指令された切削点、切削面垂直方向および工具方向から、補間周期毎に直線軸制御点および回転軸制御点を求め該各制御点位置に各軸を駆動制御する直線軸３軸と回転軸２軸を有する５軸加工機を制御する数値制御方法において、
ブロック毎にブロック始点および終点での切削点位置、直線軸制御点を求め、
ブロック始点と終点における前記直線軸制御点間の距離が第１の設定値よりも小さく、かつ、ブロック始点と終点における前記切削点位置間の距離が第２の設定値よりも大きいと判断された場合、またはブロック始点と終点での前記直線軸制御点間の距離（ＣＤ）のブロック始点と終点での前記切削点位置間の距離（ＰＤ）に対する比の値（ＣＤ／ＰＤ）が第３の設定値より小さいと判断された場合に、当該ブロック終点での直線軸制御点は当該ブロック始点での直線軸制御点と等しいとして当該ブロックでの指令による直線軸の動作を発生させないようにしたことを特徴とする５軸加工機の数値制御方法。
【請求項４】
コーナＲ部を持つミル工具を用い、予め設定されている工具径補正量、コーナＲ補正量および工具長補正量と、加工プログラムにより指令された切削点、切削面垂直方向および工具方向から、補間周期毎に直線軸制御点および回転軸制御点を求め該各制御点位置に各軸を駆動制御する直線軸３軸と回転軸２軸を有する５軸加工機を制御する数値制御方法において、
ブロック毎にブロック始点および終点での切削点位置、直線軸制御点を求め、
ブロック始点と終点における前記直線軸制御点間の距離が第１の設定値よりも小さく、かつ、ブロック始点と終点における前記切削点位置間の距離が第２の設定値よりも大きいと判断された場合、またはブロック始点と終点での前記直線軸制御点間の距離（ＣＤ）のブロック始点と終点での前記切削点位置間の距離（ＰＤ）に対する比の値（ＣＤ／ＰＤ）が第３の設定値より小さいと判断された場合に、当該ブロックにおける直線軸に対してブロック始点での直線軸制御点位置からブロック終点での直線軸制御点位置への直線動作の移動指令とすることを特徴とする５軸加工機の数値制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
回転軸２軸と直線軸３軸を有する５軸加工機を制御する数値制御方法であって、不安定な動作を発生する可能性のある特異点近傍における動作制御に関する。
【背景技術】
【０００２】
ワーク（被加工物）に対して工具を直線３軸方向に相対移動させると共に、回転軸２軸方向に工具をワークに対して相対的に傾けて加工を行う５軸加工機はすでに公知である。
例えば、ＣＡＤ／ＣＡＭ装置や倣い装置で作成された指令点列データおよびワークと工具の傾斜角度を指令する指令ベクトル列に基づいて、曲線補間を行って曲面を加工する５軸加工機による加工方法において、所期の曲線に近い滑らかな曲線で補間して加工し、滑らかな加工面を得るようにした加工方法が知られている（特許文献１参照）。
【０００３】
又、５軸加工機において、工具の位置および姿勢を作業対象に固定された直交座標系上で指令し、工具をある速度で移動させた場合、機械の動作範囲内に特異点（特異姿勢）が存在する機械において、各関節の速度や加速度がその関節の許容値を超える場合があることから、工具に与えられた２つの時点での姿勢に基づいて、両時点の間における工具の姿勢誤差が姿勢誤差許容値以下になるように、関節補間範囲を決定し、この関節補間範囲においては、関節補間（２つの時点の位置ベクトルと姿勢ベクトルに基づいて各軸の関節座標値を求める補間）により工具の姿勢を制御することによって、特異点近傍の各関節の速度や加速度が過大となるような場合に、軌跡誤差に対して要求精度を満たしつつ、移動速度をできるだけ短縮するようにした発明も知られている（特許文献２参照）。
【０００４】
【特許文献１】特開２００５−１８２４３７号公報
【特許文献２】特開２００４−２２０４３５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
工具によりワークを加工する切削点と、ワークに対する工具位置を制御する制御点は、異なる。  
図１は、Ｘ、Ｙ、Ｚ軸の３つの直線軸とＸ軸回りの回転軸Ａ軸と、Ｚ軸回りのＣ軸を有する５軸加工機において、工具１としてボールエンドミルを使用したときの指令された切削点と制御される工具位置との関係の説明図である。  
切削点として直線軸のＸ、Ｙ、Ｚ軸に対応する直交座標系のＸ、Ｙ、Ｚ軸の位置（Ｘ，Ｙ，Ｚ）が指令される。このような切削点指令（Ｘ，Ｙ，Ｚ）に対して、ワークに対する工具１の位置を制御するための制御点は工具１の先端でワークと接触する点（切削点指令点）ではなく、該位置から離れた直線軸位置（Ｘｃ，Ｙｃ，Ｚｃ）であり、指令される切削点位置（Ｘ，Ｙ，Ｚ）とこれに対応する直線軸位置（Ｘｃ，Ｙｃ，Ｚｃ）は一致しない。切削点位置（Ｘ，Ｙ，Ｚ）と共に指令される切削面垂直方向指令（Ｉ，Ｊ，Ｋ）と設定されている工具径補正量ＴＲにより求まる工具径補正、およびＡ軸、Ｃ軸の回転軸への指令より求まる工具方向と設定された工具径補正量ＴＲ、工具長補正量ＴＬによる工具長補正がなされて、直線軸位置（Ｘｃ，Ｙｃ，Ｚｃ）が求められ、直線軸位置（Ｘｃ，Ｙｃ，Ｚｃ）および回転軸位置（Ａ，Ｃ）が制御される。
【０００６】
以上のように、指令される切削点位置（Ｘ，Ｙ，Ｚ）とワークに対する工具１の位置、すなわち制御される直線軸の位置（Ｘｃ，Ｙｃ，Ｚｃ）は一致しない。ボールエンドミル以外の、主軸が旋回したときの断面が長方形になるスクエアエンドミルやそのコーナにＲ（丸み）がついたラジアスエンドミルを使用したときも同様であり、指令される切削点位置と制御される直線軸の位置は一致しない。
【０００７】
しかし、一般に、切削点指令点と制御点の動作は同様であることが望ましい。つまり、切削点の指令間隔が小さければ対応する制御点の動作も小さく、切削点の指令間隔が大きければ対応する制御点の動作も大きいのが望ましい。  
例えば、スクエアエンドミルでの一般的な切削点指令での切削点と制御点の関係は、図２のようになる。この図２に示すように、１ブロックで指令された始点の切削点指令（ＸＳ，ＹＳ，ＺＳ）と終点の切削点指令（ＸＥ，ＹＥ，ＺＥ）間の距離と該ブロックの指令で工具１を駆動する直線軸の制御点（Ｘｃ，Ｙｃ，Ｚｃ）の始点と終点の位置間の距離がほぼ比例しているような関係になることが望ましい。ところが、指令形状、工具種類によっては、切削点（指令点）と制御点の動作が大きく相違する場合がある。つまり、切削点の指令間隔が小さいが対応する制御点は大きく動作する場合（後述する図９に示すような場合）や、指令切削点の間隔が大きいが対応する制御点の動作は小さい場合（後述する図１０に示すような場合）などが発生する（以下、このような場合を特異点近傍と呼ぶ）。
このような、切削点（指令点）と対応する制御点の動作が大きく相違する特異点近傍では、不安定な動作や加工物への過大な切り込みが生じ望ましくない。本発明は、このような問題点を解決しようとするものである。
【０００８】
まず、この問題点を説明する前に、まず、５軸加工機を制御する数値制御装置等の制御装置が従来から実施している切削点指令による加工制御の動作、原理について説明する。
図３は、工具１としてボールエンドミルを用い、切削点指令よりＸＹＺ軸の直線軸３軸とＡＣ軸の回転軸の位置を求めて制御するときの動作説明図である。  
この場合、加工プログラムとしては図４に示すようなプログラムが用いられる。
【０００９】
図４において、左側が加工プログラムでその右側に記載したものは、この加工プログラムの説明である。「Ｇ４３．８」は切削点指令のコード、「Ｈ０１」は工具長補正番号が「０１」で、この工具長補正番号で示されている工具長補正量を使用することの指令、「Ｄ０１」は、工具径補正番号が「０１」で、この工具径補正番号で示される工具径補正量を使用することの指令である。また、「Ｘ Ｙ Ｚ Ａ Ｃ Ｉ Ｊ Ｋ 」は、切削点指令のブロックで「Ｘ Ｙ Ｚ 」は直交座標系上のＸＹＺ軸上の切削点の位置を示す切削点指令、「Ａ Ｃ 」は、工具方向指令、「Ｉ Ｊ Ｋ 」は、切削点における切削面垂直方向を示す指令である。又、「Ｇ４９」は、この切削点指令による加工制御をキャンセルし終了させる指令である。
【００１０】
又、工具径補正量ＴＲ、工具長補正量ＴＬおよび後述するコーナＲ補正量ＣＲが補正番号毎にパラメータ設定されている。図５にこの工具補正量設定例を示す。なお、コーナＲ補正量ＣＲが「０．０」と設定されると、コーナＲがないものであり、工具がスクエアエンドミルであることを意味する。又、コーナＲ補正量ＣＲに工具径補正量ＴＲと同じ数値が設定されている場合は、その工具はボールエンドミルを意味する。図５で示す例では、補正番号「０１」はボールエンドミルを意味し、補正番号「０２」は、ラジアスエンドミルを意味し、補正番号「０３」は、スクエアエンドミルを意味している。
【００１１】
制御装置は、加工プログラムよりブロックの指令（Ｘ，Ｙ，Ｚ，Ａ，Ｃ，Ｉ，Ｊ，Ｋ）を読込み、読み込んだブロック切削点指令（Ｘ，Ｙ，Ｚ）を当該ブロックの終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）とし、１つ前のブロックの終点である１つ前のブロックでの切削点指令（Ｘ，Ｙ，Ｚ）を当該ブロックの始点の切削点指令（ＸＳ，ＹＳ，ＺＳ）とする。同様に、プログラムから読み込んだブロックの始点での切削面垂直方向指令（Ｉ，Ｊ，Ｋ）を（ＩＳ，ＪＳ，ＫＳ）と表し、ブロック終点での切削面垂直方向指令（Ｉ，Ｊ，Ｋ）を（ＩＥ，ＪＥ，ＫＥ）と表す。
（１）  このブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）の位置からブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）の位置まで補間周期毎に補間処理を行い、切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）を求める。
（２）  同様に、ブロック始点での切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）からブロック終点での切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）まで補間処理して補間周期毎、すなわち、切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）での切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）を求める。なお、この切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）は、単位ベクトルとして求める。
（３）  切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）にパラメータ設定されている工具径補正量ＴＲを乗じて工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を求める。
（４）  読み込んだブロックにおける始点と終点での工具方向指令Ａ，Ｃからブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）、ブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）を求める。ブロック始点での工具方向指令をＡＳ，ＣＳ、ブロック終点での工具方向指令をＡＥ，ＣＥとすると、
ＴＳｘ＝−ｃｏｓ（ＣＳ）ｓｉｎ（ＡＳ）
ＴＳｙ＝−ｓｉｎ（ＣＳ）ｓｉｎ（ＡＳ）
ＴＳｚ＝ｃｏｓ（ＡＳ）
ＴＥｘ＝−ｃｏｓ（ＣＥ）ｓｉｎ（ＡＥ）
ＴＥｙ＝−ｓｉｎ（ＣＥ）ｓｉｎ（ＡＥ）
ＴＥｚ＝ｃｏｓ（ＡＥ）
として求まる。
（５）  ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）からブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）まで補間処理して工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を求める。なお、この工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）も単位ベクトルとして求める。
（６）  工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）に工具長補正量ＴＬから工具径補正量ＴＲを差し引いた値（ＴＬ−ＴＲ）を乗じて工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を求める。
（７）  切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）に工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）と工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を加算して、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）を求める。この直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）が補間周期における直線軸（Ｘ，Ｙ，Ｚ軸）の移動位置である。
（８）  工具方向ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を回転軸制御点位置（Ａｃ，Ｃｃ）に変換する。この変換された回転軸制御点位置（Ａｃ，Ｃｃ）が補間周期毎の回転軸（Ａ，Ｃ軸）が移動する位置である。  
Ａｃ＝ａｒｃｃｏｓ（Ｔｔｚ）
Ｃｃ＝ａｒｃｔａｎ（Ｔｔｙ／Ｔｔｘ）
以上の処理によって、各補間周期毎の直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）、回転軸制御点位置（Ａｃ，Ｃｃ）が求められ、この位置に移動するように各軸を駆動するサーボモータを駆動制御することによって、加工が実行される。
【００１２】
図６は、使用工具１がスクエアエンドミルのときの切削点指令による直線軸制御点位置及び回転軸制御点位置を補間周期毎求める処理の説明図である。この場合の加工プログラムは、図４に示した加工プログラムと同等であり、工具長補正番号（「Ｈ０３」）、工具径補正番号（「Ｄ０３」）が指令され、図５に示した工具補正量設定例で補正番号０３が選択され、コーナＲ補正量ＣＲが「０．０」でスクエアエンドミルであることが指定されている。
（１）  制御装置は、加工プログラムよりブロックの指令（Ｘ，Ｙ，Ｚ，Ａ，Ｃ，Ｉ，Ｊ，Ｋ）を読込み、ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）の位置からブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）への位置まで補間処理を行い補間周期毎の切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）を求める。
（２）  ブロック始点での切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）からブロック終点での切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）まで補間処理して補間周期毎の切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）を求める。なお、この切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）は、単位ベクトルとして求める。
（３）  読み込んだブロックにおける始点と終点での工具方向指令Ａ，Ｃからブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）、ブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）を求める。この求め方は、ボールエンドミルの（４）で記載した求め方と同じである。
（４）  ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）からブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）まで補間処理して工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を求める。なお、この工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）も単位ベクトルとして求める。
（５）  工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）と切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）が成す平面上で工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を９０度回転し、工具径補正量ＴＲをかけて、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を求める。この工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）の回転方法は、工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）と切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）の外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）をも求める。
【００１３】
（Ｖｘ，Ｖｙ，Ｖｚ）＝（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）×（Ｉｔ，Ｊｔ，Ｋｔ）
この外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）は工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）と切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）が成す平面に垂直なベクトルである。この外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）の単位ベクトル（ＶＮｘ，ＶＮｙ，ＶＮｚ）を求め、この単位ベクトル（ＶＮｘ，ＶＮｙ，ＶＮｚ）の周りに、工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を９０度回転させることによって、９０度回転させた工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を求める。なお、一般にあるベクトルをある単位ベクトルの周りにある角度だけ回転させる方法は、「コンピュータグラフィックス」（DAVID F.ROGERS,J.ALANADAMS 山口富士夫訳）などに記載されている。
（６）  工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）に工具長補正量ＴＬを乗じて工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を求める。
（７）  切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）に工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）と工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を加算して、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）を求める。この直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）が補間周期における直線軸（Ｘ，Ｙ，Ｚ軸）の移動位置である。
（８）  工具方向ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を回転軸制御点位置（Ａｃ，Ｃｃ）に変換する。この変換された回転軸制御点位置（Ａｃ，Ｃｃ）が補間周期毎の回転軸（Ａ，Ｃ軸）が移動する位置である。この変換方法は、上述したボールエンドミルの場合と同じである。
【００１４】
以上の処理によって、各補間周期毎の直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）、回転軸制御点位置（Ａｃ，Ｃｃ）が求められ、この位置に移動するように各軸を駆動するサーボモータを駆動制御することによって、加工が実行される。
【００１５】
図７は、使用工具１がラジアスエンドミルのときの切削点指令による直線軸制御点位置及び回転軸制御点位置を補間周期毎求める処理の説明図である。この場合の加工プログラムの例を図８に示す。図４に示した加工プログラムと同等であるが、工具長補正番号（「Ｈ０２」）、工具径補正番号（「Ｄ０２」）が指令され、図５に示した工具補正量設定例で補正番号０２が選択され、コーナＲ補正量ＣＲが「２．０」であることからラジアスエンドミルが指定されているものである。他は、図４に示した例と同様である。
（１）  制御装置は、加工プログラムよりブロックの指令（Ｘ，Ｙ，Ｚ，Ａ，Ｃ，Ｉ，Ｊ，Ｋ）を読込み、ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）の位置からブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）への位置まで補間処理を補間周期毎行い、切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）を求める。
（２）  ブロック始点での切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）からブロック終点での切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）まで補間処理して補間周期毎の切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）を求める。なお、この切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）は、単位ベクトルとして求める。
（３）  読み込んだブロックにおける始点と終点での工具方向指令Ａ，Ｃからブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）、ブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）を求める。この求め方は、ボールエンドミルの（４）で記載した求め方と同じである。
（４）  ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）からブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）まで補間処理して工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を求める。なお、この工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）も単位ベクトルとして求める。
（５）  切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）にコーナＲ補正量ＣＲをかけて、コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）を求める。
（６）  工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）と切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）が成す平面上での工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を９０度回転し（回転させる方法は、スクエアエンドミルと同じ）、その９０度回転したベクトルに工具径補正量ＴＲからコーナＲ補正量ＣＲを差し引いた値（ＴＲ−ＣＲ）をかけて、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を求める。
（７）  工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）に工具長補正量ＴＬからコーナＲ補正量ＣＲを差し引いた値（ＴＬ−ＣＲ）をかけて、工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を求める。
（８）  切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）に、コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）および工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を加算して、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）を求める。この直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）が補間周期における直線軸（Ｘ，Ｙ，Ｚ軸）の移動位置である。
（９）  工具方向ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を回転軸制御点位置（Ａｃ，Ｃｃ）に変換する。この変換された回転軸制御点位置（Ａｃ，Ｃｃ）が補間周期毎の回転軸（Ａ，Ｃ軸）が移動する位置である。この変換方法は、上述したボールエンドミルの場合と同じである。
【００１６】
こうして、各補間周期毎に求めた直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）、回転軸制御点位置（Ａｃ，Ｃｃ）に移動するように各軸を駆動するサーボモータを駆動制御することによって、加工が実行される。
【００１７】
以上のように、切削点列を指令して加工を行うときの直線軸（Ｘ、Ｙ、Ｚ軸）、回転軸（Ａ、Ｃ軸）に対しては、上述したような補間処理がなされ、各補間周期毎の移動指令に基づいて加工が実行される。この加工の途中で、前述した特異点近傍で制御が不安定となったり、切り込みが過大となる場合がある。図９は、制御が不安定となる特異点近傍の説明図である。この例は、切削点指令の指令間隔距離は小さく、これに対して制御点の移動距離が大きいときという特異点で発生する制御が不安定となる例である（以下、この特異点を特異点１という）。この特異点１は次のような条件で発生する。
（イ）  ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）と切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）の方向（向き）が近い。
（ロ）  ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）とブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）の方向が近い。
（ハ）  ブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）と切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）の方向が近く、それらの成す面での外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）がブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）と切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）が成す面での外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）と方向が大きく相違する。例えば１８０°くらい相違する。図９に示す例では、ブロック始点と終点で各ベクトルが同一平面上にあるとすれば、ブロック始点と終点の外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）は、その符号が逆となり、１８０°相違している。その結果、この外積ベクトル（Ｖｘ，Ｖｙ，Ｖｚ）の単位ベクトル周りに（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）を９０°回転させて求めたベクトルに工具径補正量ＴＲを乗じて求める工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）も外積ベクトルの大きな変化に応じて大きく変化することになり、例えば１８０°程度変化することになる。図９には、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）は、概略１８０°程度変化している例が示されている。
【００１８】
以上の（イ）、（ロ）、（ハ）の条件が発生すると、切削点（指令点）の間隔は小さくても対応する制御点（Ｘｃ，Ｙｃ，Ｚｃ）の動作は大きいということになり、図９に示すような例が発生する。図９に示す例では、ブロック始点では工具１の右側が切削点として指令されているがブロック終点では工具１の左側が切削点として指令されている場合を示しており、そのため、ブロック途中で工具径補正量の２倍程度の動作が発生する。このように工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）が大きく変化することから、制御点（Ｘｃ，Ｙｃ，Ｚｃ）が変動し、不安定な動作となる。  
このような特異点により制御動作が不安定となる場合は、上述したスクエアエンドミルによる加工の場合以外にもラジアスエンドミルによる加工の場合にも生じる。
【００１９】
次に、切削点指令の位置間隔は大きいが、その間隔を加工するときの制御点の移動が小さく、ループ上に移動するような特異点で切り込み量過大となるケースを説明する（以下この特異点を特異点２という）。  
図１０は、この特異点２での動作説明図である。この特異点が発生する条件は次のような条件のときである。
（イ）  ブロック始点での直線軸制御点（Ｘｃ，Ｙｃ，Ｚｃ）（以下、ブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）と表す）の位置とブロック終点での直線軸制御点（Ｘｃ，Ｙｃ，Ｚｃ）（以下、ブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）と表す）の位置が近い。
（ロ）  ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）とブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）の方向が近い。
（ハ）  ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）とブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）の位置間の距離はある程度あり、ブロック始点での切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）とブロック終点での切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）の方向が大きく相違する。
【００２０】
図１０で示す例では、ブロック始点と終点の切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）（ＩＥ，ＪＥ，ＫＥ）の方向が、大きく相違し、始点での工具径補正ベクトル（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）と終点での工具径補正ベクトル（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）も大きく相違している。ブロックの始点と終点の工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）、（ＴＥｘ，ＴＥｙ，ＴＥｚ）の方向が近く、ブロックの始点と終点の工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）が重なり合うような状態であり、切削点指令に工具径補正ベクトル、工具長補正ベクトルを加算して求める直線軸の制御点位置は小さなループ状の動作となる。図１０で示す例では、指令ブロック中に直線軸制御点は動作しないことが期待されているが、実際は破線矢印で記載したようなループ状の動作をする。その結果、加工物への切り込みなどが発生するという問題がある。
【００２１】
この切削点指令の指令間隔距離は小さく、これに対して制御点の移動距離が大きいときという特異点２による過大切り込みが発生するという問題は、上述したボールエンドミル以外のスクエアエンドミルやラジアスエンドミルを使用する場合にも発生する。
【００２２】
そこで、本発明の目的は、前述した特異点近傍での不安定な動作や加工物への切り込みを防ぐことができる５軸加工機の制御方法を提供することにある。
【課題を解決するための手段】
【００２３】
本願請求項１に係る発明は、コーナＲ部を持たないミル工具もしくはボールエンドミルを用い、予め設定されている工具径補正量および工具長補正量と、加工プログラムにより指令された切削点、切削面垂直方向および工具方向から、補間周期毎に直線軸制御点および回転軸制御点を求め該各制御点位置に各軸を駆動制御する直線軸３軸と回転軸２軸を有する５軸加工機を制御する数値制御方法において、ブロック毎にブロック始点および終点での切削点位置、直線軸制御点を求め、ブロック始点と終点における前記直線軸制御点間の距離が第１の設定値よりも小さく、かつ、ブロック始点と終点における前記切削点位置間の距離が第２の設定値よりも大きいと判断された場合、またはブロック始点と終点での前記直線軸制御点間の距離（ＣＤ）のブロック始点と終点での前記切削点位置間の距離（ＰＤ）に対する比の値（ＣＤ／ＰＤ）が第３の設定値より小さいと判断された場合に、当該ブロック終点での直線軸制御点は当該ブロック始点での直線軸制御点と等しいとして当該ブロックでの指令による直線軸の動作を発生させないようにすることにより、直線軸がループ状に移動する特異点近傍での過大な切り込み発生を防止するようにした５軸加工機の数値制御方法である。
【００２４】
請求項２に係る発明は、請求項１に係る発明において、特異点近傍におけるブロックの指令において直線軸の動作を発生させないようにした点に代えて、当該ブロックにおける直線軸に対してブロック始点での直線軸制御点位置からブロック終点での直線軸制御点位置への直線動作の移動指令としたものである。
【００２５】
請求項３に係る発明は、コーナＲ部を持つミル工具を用い、予め設定されている工具径補正量、コーナＲ補正量および工具長補正量と、加工プログラムにより指令された切削点、切削面垂直方向および工具方向から、補間周期毎に直線軸制御点および回転軸制御点を求め該各制御点位置に各軸を駆動制御する直線軸３軸と回転軸２軸を有する５軸加工機を制御する数値制御方法において、ブロック毎にブロック始点および終点での切削点位置、直線軸制御点を求め、ブロック始点と終点における前記直線軸制御点間の距離が第１の設定値よりも小さく、かつ、ブロック始点と終点における前記切削点位置間の距離が第２の設定値よりも大きいと判断された場合、またはブロック始点と終点での前記直線軸制御点間の距離（ＣＤ）のブロック始点と終点での前記切削点位置間の距離（ＰＤ）に対する比の値（ＣＤ／ＰＤ）が第３の設定値より小さいと判断された場合に、当該ブロック終点での直線軸制御点は当該ブロック始点での直線軸制御点と等しいとして当該ブロックでの指令による直線軸の動作を発生させないようにすることにより、直線軸がループ状に移動する特異点近傍での過大な切り込み発生を防止するようにした５軸加工機の数値制御方法である。
【００２６】
請求項４に係る発明は、請求項３に係る発明において、特異点近傍におけるブロックの指令において直線軸の動作を発生させないようにした点に代えて、当該ブロックにおける直線軸に対してブロック始点での直線軸制御点位置からブロック終点での直線軸制御点位置への直線動作の移動指令としたものである。
【発明の効果】
【００２７】
直線軸３軸と回転軸２軸を有する５軸加工機において、切削点指令の位置間隔は大きいが、その間隔を加工するときの制御点の移動が小さくなる特異点で生じる切り込み量過大を防止することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施形態について図面と共に説明する。  
図１１は、本発明を実施する制御装置の実施形態としての数値制御装置の要部ブロック図である。
【００２９】
ＣＰＵ１１は数値制御装置１０を全体的に制御するプロセッサである。プロセッサ１１はバス２０を介して、メモリ１２、表示装置１３、キーボード等の入力手段１４、インタフェース１５、各軸のサーボモータを駆動制御する各軸の軸制御回路１６、スピンドル（主軸）を駆動制御するスピンドル制御回路１８等と接続されている。メモリ１２は、ＲＯＭ、ＲＡＭ、ＦＲＡＭ等で構成されている。プロセッサ１１は、メモリ１２に格納されたシステムプログラムを、バス２０を介して読み出し、該システムプログラムに従って数値制御装置全体を制御する。さらに、メモリ１２にはインタフェース１５を介して読み込まれた切削点指令で構成されたプログラム等の加工プログラムや、表示装置１３、入力手段１４を介して入力された各種加工プログラムや各種設定データ等の各種データが格納される。なお、本発明に関係して、上述した特異点１，２の近傍を検出し、不安定動作や過大切り込みを防止するためのソフトウェアが従来と比較して新たにメモリ１２に追加格納されている。
【００３０】
各軸の軸制御回路１６はプロセッサ１１からの各軸の移動指令量と各軸のサーボモータ２２にそれぞれ内蔵する位置・速度検出器からの位置、速度フィードバック信号を受けて、位置・速度のフィードバック制御を行い、各軸の指令をサーボアンプ１７に出力する。
サーボアンプ１７はこの指令を受けて、機械（制御対象物）の各軸（Ｘ軸、Ｙ軸、Ｚ軸、Ａ軸、Ｃ軸）のそれぞれのサーボモータ２２を駆動する。なお、図１１では、位置・速度のフィードバックについては省略している。
【００３１】
また、スピンドル制御回路１８はプロセッサ１１からの主軸回転指令と、主軸の回転速度を検出する図示していないポジションコーダからの速度フィードバックを受けて、速度のフィードバック制御を行いスピンドルアンプ１９にスピンドル速度信号を出力する。スピンドルアンプ１９はスピンドル速度信号を受けてスピンドルモータ２３を指令された回転速度で回転させる。
【００３２】
上述した数値制御装置のハードウェア構成は、従来と同じであり、相違点は、メモリ１２内に上述した特異点１，２の近傍を検出し、不安定動作や過大切り込みを防止するためのソフトウェアが新たに追加して格納されている点である。
【００３３】
まず、特異点１近傍における動作不安定を解消する参考例について説明する。
図１２は、特異点１の検出方法と、特異点が検出されたときの不安点な動作を回避する方法の説明図である。  
前述したように、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）が求められ、かつ、工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）が求められると、この２つのベクトルが成す角度αを求め、該角度αが予めパラメータ設定された値（Ｐrm−α）より小さいか判別する。この角度αが設定値（Ｐrm−α）より小さいということは、スクエアエンドミル又はラジアスエンドミルの先端平面と加工平面が平行に近い状態で、上述した特異点１が発生する条件（イ）〜（ハ）の条件を満たす可能性が高く、特異点１の近傍であることの可能性が高い。そのため、前記角度αが設定値（Ｐrm−α）より小さいことが検出されたときは、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を前回の補間周期（１補間周期前）の工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）（以下この１補間周期前の工具径補正ベクトルを（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）と記す）として、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）および回転軸制御点位置（Ａｃ，Ｃｃ）を求めて、各軸を制御する。
【００３４】
図９と共に段落「００１７」で説明したように、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）が大きく変化すると制御点（Ｘｃ，Ｙｃ，Ｚｃ）が変動して不安定な動作となる。そのため、ここで述べたように工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を前回の補間周期での（１補間周期前の）工具径補正ベクトル（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）とすることによって工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を変化させない。その結果、特異点１は解消し、動作の不安定は解消することになる。
【００３５】
なお、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）が成す角度αが設定値（Ｐrm−α）より小さいかの判断は、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）の内積を求め、該内積によって判断する。すなわち、
ｃｏｓ（α）＝（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）・（Ｉｔ，Ｊｔ，Ｋｔ）
ｃｏｓ（α）＞ｃｏｓ（Ｐrm−α）であれば、角度αは設定値（Ｐrm−α）より小さいと判断する。
【００３６】
さらに本参考例では、一旦特異点１近傍とみなされ、１補間周期前の工具径補正ベクトル（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）を用いた後、前記角度αが設定値（Ｐrm−α）より大きくなり、特異点１が解消したと判断されたときには、通常の工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）を用いて制御点の位置を求めるが、この復帰のとき、制御点の移動速度は指令された速度（方式１）、または最大速度（方式２）の２つの方式を選択できるようにしている。
【００３７】
図１３は、この参考例における特異点１の検出処理と該特異点近傍での動作不安定を防ぐ処理の中心としたアルゴリズムを示す補間周期毎の処理フローチャートである。  
まず、従来と同様に、数値制御装置のプロセッサ１１は、加工プログラムよりブロックの指令（Ｘ，Ｙ，Ｚ，Ａ，Ｃ，Ｉ，Ｊ，Ｋ）を読込み、従来と同様に補間処理を行い、
切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）
切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）
工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）
工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）
工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を求める。
【００３８】
さらに、ラジアスエンドミルが指定されている場合には、  
コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）も求める（ステップａ１）。  
補間周期毎上述した位置、ベクトルを求める点は従来と同じである。
【００３９】
次に、プログラムで指定されている工具がボールエンドミルか否か判断する（ステップａ２）。ボールエンドミルが指定されている場合には、この特異点１の現象は発生しないものであることから、ステップａ７に移行し、従来と同様に直線軸制御点位置、回転軸制御点位置を求め、求めた各軸の位置への移動指令を各軸制御回路１６に出力し、各軸のサーボモータ２２を駆動制御する。
【００４０】
一方、ステップａ２で、指令された工具がスクエアエンドミル又はラジアスエンドミルで、ボールエンドミルではない場合には、ステップａ３に移行し、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）の内積の値が、パラメータで設定された値（Ｐrm−α）の余弦値ｃｏｓ（Ｐrm−α）より大きいか判断し、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）が成す角度αが設定値（Ｐrm−α）より小さいか判断する。
【００４１】
前記角度αが設定値（Ｐrm−α）より小さくないと判断されると、フラグＦＡが「１」にセットされているか判断する（ステップａ８）。なお、フラグＦＡは所期設定で「０」が設定されている。フラグＦＡが「１」でなければ、切削点の速度をプログラムで指令された速度とする（ステップａ１２）。そして、１補間周期前の工具径補正ベクトル（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）を記憶するレジスタに、ラジアスエンドミルが指定されている場合には、さらに、１補間周期前のコーナＲ補正ベクトル（ＣＣ０ｘ，ＣＣ０ｙ，ＣＣ０ｚ）を記憶するレジスタに当該周期のステップａ１で求められた工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）、コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）を格納する（ステップａ６）。
【００４２】
そして、直線軸制御点位置、回転軸制御点位置を求める。すなわち、指定工具がスクエアエンドミルの場合には、切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）に工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）と工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を加算して、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）を求め、工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）より回転軸制御点位置（Ａｃ，Ｃｃ）を求める。一方、指定工具がラジアスエンドミルの場合には、切削点補間位置（Ｘｔ，Ｙｔ，Ｚｔ）に、コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）および工具長補正ベクトル（ＴＬｘ，ＴＬｙ，ＴＬｚ）を加算して、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）を求め、工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）より回転軸制御点位置（Ａｃ，Ｃｃ）を求める（ステップａ７）。こうして求めた各軸の位置への移動指令を各軸制御回路１６に出力し、各軸のサーボモータ２２を駆動制御する。
【００４３】
一方、ステップａ３で、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）が成す角度αが設定値（Ｐrm−α）より小さいと判断されたときは、フラグＦＡを「１」にセットし（ステップａ４）、レジスタに記憶する１補間周期前の工具径補正ベクトル（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）を当該周期の工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）、１補間周期前のコーナＲ補正ベクトル（ＣＣ０ｘ，ＣＣ０ｙ，ＣＣ０ｚ）を当該周期のコーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）とする（ステップａ５）。そして、前述したステップａ６の処理を実行し、当該周期で使用する工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）、コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）をレジスタ格納し、次の補間周期において１補間周期前の工具径補正ベクトル（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）、コーナＲ補正ベクトル（ＣＣ０ｘ，ＣＣ０ｙ，ＣＣ０ｚ）とする。
【００４４】
次に、前述したステップａ７の処理を実行し、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）、回転軸制御点位置（Ａｃ，Ｃｃ）を求めるが、この場合、ステップａ５で、工具径補正ベクトル（ＴＣｘ，ＴＣｙ，ＴＣｚ）、コーナＲ補正ベクトル（ＣＣｘ，ＣＣｙ，ＣＣｚ）が１補間周期前の工具径補正ベクトル（ＴＣ０ｘ，ＴＣ０ｙ，ＴＣ０ｚ）、１補間周期前のコーナＲ補正ベクトル（ＣＣ０ｘ，ＣＣ０ｙ，ＣＣ０ｚ）とされていることから、これを用いて直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）、回転軸制御点位置（Ａｃ，Ｃｃ）が求められることになり、不安定な動作を防ぐことができる。
【００４５】
こうして、ステップａ３で「Ｙｅｓ」と判断され、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）との成す角度αが設定された値（Ｐrm−α）より小さいと判断される限り、各補間周期毎、ステップａ１〜ａ７の処理が実行され、切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）との成す角度αが設定された値（Ｐrm−α）より小さくならないように、直線軸制御点位置（Ｘｃ，Ｙｃ，Ｚｃ）、回転軸制御点位置（Ａｃ，Ｃｃ）が求められ、各軸が該位置に移動するように制御される。
【００４６】
ステップａ３で切削面垂直方向補間ベクトル（Ｉｔ，Ｊｔ，Ｋｔ）と工具方向補間ベクトル（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）との成す角度αが設定された値（Ｐrm−α）より大きいと判断され、ステップａ８でフラグＦＡが「１」と判断されたとき（前補間周期まで、前記角度αが設定値（Ｐrm−α）より小さいと判断され、当該周期でα≧（Ｐrm−α）と判断されたとき）、フラグＦＡを「０」にセットし（ステップａ９）、設定パラメータ（Ｐrm−ＢＦ）が「１」に設定されているか否か判断する（ステップａ１０）。この設定パラメータ（Ｐrm−ＢＦ）は、使用する切削点の移動速度として、指令された速度か最大速度かを選択するものであり、「１」と設定されている場合には、指令された速度を用い、「０」が設定されている場合には、切削点の速度が各軸パラメータで設定された最大速度を超えない最大速度に変更する。この切削点の速度を最大速度に変更理由は、一旦特異点１近傍とみなされた後において特異点１でないとみなされたときの補間周期で急激な速度で移動する恐れがあることから、このような過大速度で移動させないようにしたものである。
【００４７】
こうして速度が変更又は維持されてステップａ６に移行する。次の補間周期では、ステップａ１で、この設定された速度で補間処理が実行されて各データが求められるが、ステップａ１１で最大速度に変更されている場合には、この最大速度で補間処理がなされ、各データが求められることになる。  
そして、その次の周期では、フラグＦＡがステップａ９で「０」にセットされているから、ステップａ８から、ステップａ１２に移行し、速度は通常の指令された速度に戻されることになる。
【００４８】
図１４は、本発明の実施形態が実施する特異点２の検出方法と、特異点２が検出されたときの切り込みが過大となる動作を回避する方法の説明図である。この実施形態は使用工具がボールエンドミルの例を記載している。なお、この図１４では、ブロック始点での工具長補正ベクトル（ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）とブロック終点での工具長補正ベクトル（ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）、およびブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）とブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）はそれぞれ相違するベクトルおよび位置であるが、特異点２近傍においてはそれらのベクトル、位置は近いため便宜上同じ矢印、位置で表している。
【００４９】
又、図１５は、この実施形態における特異点２の検出処理と該特異点近傍での動作不安定を防ぐ処理の中心としたアルゴリズムを示すブロック単位で行う処理フローチャートである。  
この実施形態では、ブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）の位置とブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）の位置との間の距離と、ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）の位置とブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）の位置間の距離によって、この特異点２の近傍か否か判別し、特異点の近傍であると、当該ブロックの直線軸制御点の移動を停止させるか、当該ブロックの移動を直線移動とすることによって、特異点２に対処して切り込み等が発生することを防止する。そのために、ブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）とブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）の距離ＣＤが小さいか否かを判別するための基準となる距離をパラメータにより設定値（Ｐrm−Ｃ）として設定しておく。又、ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）とブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）の距離ＰＤにより、特異点２を判断するための基準となる値（Ｐrm−Ｐ）をパラメータで設定しておく。この２つのパラメータ設定値により特異点２か否かを判断する。
【００５０】
また、特異点２を判別する別の方法として、ブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）とブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）の距離ＣＤとブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）とブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）の距離ＰＤの比(ＣＤ／ＰＤ)によって判断するものとして、その判断基準の設定値（Ｐrm−Ｒ）をパラメータで設定しておく。そして、特異点２の判別をどちらの方法で行うかを選択できるようにしており、この選択もパラメータで設定するものとし、設定パラメータ（Ｐrm−ＳＢ）＝０の場合、前者の距離ＣＤ、ＰＤにより、設定パラメータ（Ｐrm−ＳＢ）＝１の場合、後者の比(ＣＤ／ＰＤ)によって判断するようにしている。さらに、本実施形態では、特異点２近傍とみなされた場合、ブロック終点での直線軸制御点位置（ＸＥｃ，ＹＥｃ，ＺＥｃ）をブロック始点での直線軸制御点位置（ＸＳｃ，ＹＳｃ，ＺＳｃ）と同じとし、直線軸制御点の動作を発生させないようにするか、または、直線軸についてはブロック始点での直線軸制御点位置（ＸＳｃ，ＹＳｃ，ＺＳｃ）からブロック終点での直線軸制御点位置（ＸＥｃ，ＹＥｃ，ＺＥｃ）への移動動作を直線の動作とするかを、選択できるようにしており、この選択をパラメータ設定で行うようにしており、設定パラメータ（Ｐrm−Ｂ４）＝０の場合は、直線軸制御点の動作を発生させないようにし、設定パラメータ（Ｐrm−Ｂ４）＝１の場合は、直線移動を選択するとするようにしている。なお、上述した各パラメータ設定については、パラメータ設定の代わりに、プログラム指令や信号によるようにしてもよいものである。
【００５１】
指令ブロックを読み取り、該ブロックの始点の切削点指令（ＸＳ，ＹＳ，ＺＳ）および切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）を求める。ブロック始点での切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）に工具径補正量ＴＲを掛けて、ブロック始点での工具径補正ベクトル（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）を求める。なお、切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）は単位ベクトルであるとしている。また、指令されたブロック始点およびブロック終点での工具方向指令Ａ、Ｃから、ブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）を求める。求めたブロック始点での工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）に（工具長補正量ＴＬ−工具径補正量ＴＲ）を掛けて、ブロック始点での工具長補正ベクトル（ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）を求める。ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）にブロック始点での工具径補正ベクトル（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）とブロック始点での工具長補正ベクトル（ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）を加算し、ブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）を求める（ステップｂ１）。  
この始点で直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）を求める処理は、前述した補間点の直線軸制御点（Ｘｃ，Ｙｃ，Ｚｃ）を求めるときと同一の方法であり、詳細は省略する。
【００５２】
次に、ブロックの終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）および切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）を求める。このブロック終点での切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）に工具径補正量ＴＲを掛けて、ブロック終点での工具径補正ベクトル（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）を求める。なお、切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）は単位ベクトルであるとしている。指令されたブロック始点およびブロック終点での工具方向指令Ａ、Ｃから、ブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）を求める。このブロック終点での工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）に（工具長補正量ＴＬ−工具径補正量ＴＲ）を掛けて、ブロック終点での工具長補正ベクトル（ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）を求める。  
ブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）にブロック終点での工具径補正ベクトル（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）とブロック終点での工具長補正ベクトル（ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）を加算し、ブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）を求める（ステップｂ２）。
【００５３】
なお、この終点で直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）を求める処理は、前述した補間点の直線軸制御点（Ｘｃ，Ｙｃ，Ｚｃ）を求めるときと同一の方法であり、詳細は省略する。又、ブロックの終点は、次のブロックの始点であることから、ブロックの終点で求めた各データは、次のブロックの始点のデータとして使用できることから、次のブロックからは、ステップｂ１の処理は、前周期のステップｂ２で求めたブロック終点の各データを当該ブロックの始点データとして置き換えてもよいものである。
【００５４】
次に、ブロック始点での直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）とブロック終点での直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）の距離ＣＤ、および、ブロック始点での切削点指令（ＸＳ，ＹＳ，ＺＳ）とブロック終点での切削点指令（ＸＥ，ＹＥ，ＺＥ）の距離ＰＤ求める（ステップｂ３）。
【００５５】
そして、設定パラメータ（Ｐrm−ＳＢ）の値が「０」か判断し（ステップｂ４）、「０」ならば、距離ＣＤ、ＰＤによって特異点２か否かを判断するものとし、まず、求めたブロック始点、終点の直線軸制御点間の距離ＣＤが設定値（Ｐrm−Ｃ）よりも小さいか判断する（ステップｂ５）。距離ＣＤが設定値（Ｐrm−Ｃ）以上のときには当該処理は終了する。又、距離ＣＤが設定値（Ｐrm−Ｃ）より小さいときには、ブロック始点、終点での切削点指令間の距離ＰＤが設定値（Ｐrm−Ｐ）よりも大きいか判断する（ステップｂ６）。
距離ＰＤが設定値（Ｐrm−Ｐ）以下のときは、当該処理は終了する。一方、距離ＰＤが設定値（Ｐrm−Ｐ）より大きいときには、特異点２近傍であると判別してステップｂ７に移行する。すなわち、ブロック始点、終点の直線軸制御点間の距離ＣＤが小さく、ブロック始点、終点での切削点指令間の距離ＰＤが大きいときには、このブロックの指令による加工は特異点２の近傍の加工であると判定する。
【００５６】
又、設定パラメータ（Ｐrm−ＳＢ）の値が「１」と設定されているときは、距離ＣＤとＰＤの比(ＣＤ／ＰＤ)が設定値（Ｐrm−Ｒ）より小さいか判別し、小さくないときには特異点２の近傍ではないとして、当該処理を終了する。一方、距離ＣＤとＰＤの比(ＣＤ／ＰＤ)が設定値（Ｐrm−Ｒ）より小さいときには、当該ブロックによる加工は特異点２近傍の加工であると判別し、ステップｂ７に移行する。
【００５７】
このようにして特異点２の近傍と判別されたときは、ステップｂ７で、設定パラメータ（Ｐrm−Ｂ４）が「１」に設定されているか判別し、設定パラメータ（Ｐrm−Ｂ４）＝０の場合は、当該ブロックの終点での直線軸制御点位置（ＸＥｃ，ＹＥｃ，ＺＥｃ）が当該ブロック始点での直線軸制御点位置（ＸＳｃ，ＹＳｃ，ＺＳｃ）になるようにセットする（ステップｂ８）。その結果、当該ブロックの補間処理が実行されたとき、直線軸のＸＹＺ軸への移動指令は発生しないことになる。一方、設定パラメータ（Ｐrm−Ｂ４）が「１」に設定されている場合は、当該ブロックにおける直線軸に対してブロック始点での直線軸制御点位置（ＸＳｃ，ＹＳｃ，ＺＳｃ）からブロック終点での直線軸制御点位置（ＸＥｃ，ＹＥｃ，ＺＥｃ）への移動指令として直線の動作を指令する（ステップｂ９）。このことにより、ループ状の不安定な動作を発生させないものとなり、加工物への過大な切り込みを防止できる。
【００５８】
上述した本発明の実施形態では、工具としてボールエンドミルを使用した例を説明したが、この特異点２の現象は、使用工具がスクエアエンドミルやラジアスエンドミルの場合でも発生するものであり、使用工具がスクエアエンドミルやラジアスエンドミルの場合でも同様にして、特異点２近傍を検出し、同様な処理を行うことによって、ループ状の不安定な動作の発生を防止し、加工物への過大な切り込みを防止する。
使用工具がボールエンドミルではなく、スクエアエンドミルやラジアスエンドミルを使用するときは、図１５におけるステップｂ１、ｂ２で求めるデータが相違するだけで、ステップｂ３以下の処理は同じである。
【００５９】
スクエアエンドミルの場合は、
始点での次のデータを求める。
切削点指令（ＸＳ，ＹＳ，ＺＳ）
切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）
工具径補正ベクトル（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）
工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）
工具長補正ベクトル（ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）
直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）
（ＸＳｃ，ＹＳｃ，ＺＳｃ）=（ＸＳ，ＹＳ，ＺＳ）+（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）+ （ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）
また、終点での次のデータを求める。
切削点指令（ＸＥ，ＹＥ，ＺＥ）
切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）
工具径補正ベクトル（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）
工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）
工具長補正ベクトル（ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）
直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）
（ＸＥｃ，ＹＥｃ，ＺＥｃ）=（ＸＥ，ＹＥ，ＺＥ）+（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）+ （ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）
なお、ブロックの始点、終点での工具径補正ベクトル、工具方向ベクトル、および工具長補正ベクトルの求め方は、図６で説明した補間点での工具径補正ベクトル、工具方向ベクトル、および工具長補正ベクトルを求める方法と同等であり、説明を省略する。
【００６０】
ラジアスエンドミルの場合は、
始点での次のデータを求める。  
切削点指令（ＸＳ，ＹＳ，ＺＳ）
切削面垂直方向指令（ＩＳ，ＪＳ，ＫＳ）
コーナＲ補正ベクトル(ＣＣＳｘ, ＣＣＳｙ,ＣＣＳｚ)
工具径補正ベクトル（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）
工具方向ベクトル（ＴＳｘ，ＴＳｙ，ＴＳｚ）
工具長補正ベクトル（ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）
直線軸制御点（ＸＳｃ，ＹＳｃ，ＺＳｃ）
（ＸＳｃ，ＹＳｃ，ＺＳｃ）=（ＸＳ，ＹＳ，ＺＳ）+(ＣＣＳｘ, ＣＣＳｙ,ＣＣＳｚ)+（ＴＣＳｘ，ＴＣＳｙ，ＴＣＳｚ）+（ＴＬＳｘ，ＴＬＳｙ，ＴＬＳｚ）
また、終点での次のデータを求める。  
切削点指令（ＸＥ，ＹＥ，ＺＥ）
切削面垂直方向指令（ＩＥ，ＪＥ，ＫＥ）
コーナＲ補正ベクトル(ＣＣＥｘ, ＣＣＥｙ,ＣＣＥｚ)
工具径補正ベクトル（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）
工具方向ベクトル（ＴＥｘ，ＴＥｙ，ＴＥｚ）
工具長補正ベクトル（ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）
直線軸制御点（ＸＥｃ，ＹＥｃ，ＺＥｃ）
（ＸＥｃ，ＹＥｃ，ＺＥｃ）=（ＸＥ，ＹＥ，ＺＥ）+(ＣＣＥｘ, ＣＣＥｙ,ＣＣＥｚ)             +（ＴＣＥｘ，ＴＣＥｙ，ＴＣＥｚ）+ （ＴＬＥｘ，ＴＬＥｙ，ＴＬＥｚ）  なお、ブロック始点、終点でのコーナＲ補正ベクトル、工具径補正ベクトル、工具方向ベクトル、および工具長補正ベクトルの求め方は、図７で説明した補間点での工具径補正ベクトル、工具方向ベクトル、および工具長補正ベクトルを求める方法と同等であり、説明を省略する。
【図面の簡単な説明】
【００６１】
【図１】５軸加工機において、工具としてボールエンドミルを使用したときの指令された切削点と制御される工具位置との関係の説明図である。
【図２】一般的な切削点指令での切削点と制御点の関係をスクエアエンドミルの例で説明する説明図である。
【図３】工具としてボールエンドミルを用いたとき、切削点指令よりＸ、Ｙ、Ｚ軸の直線軸３軸とＡ、Ｃ軸の回転軸の位置を求めて制御するときの動作説明図である。
【図４】工具としてボールエンドミルを指定した切削点指令によるプログラム例を示す図である。
【図５】工具補正量の設定例を示す図である。
【図６】使用工具がスクエアエンドミルのとき、切削点指令よりＸ、Ｙ、Ｚ軸の直線軸３軸とＡ、Ｃ軸の回転軸の位置を求めて制御するときの動作説明図である。
【図７】使用工具がラジアスエンドミルのとき、切削点指令よりＸ、Ｙ、Ｚ軸の直線軸３軸とＡ、Ｃ軸の回転軸の位置を求めて制御するときの動作説明図である。
【図８】使用工具としてラジアスエンドミルを指定した切削点指令によるプログラム例を示す図である。
【図９】動作が不安定となる特異点近傍の説明図である。
【図１０】過大な切り込みが生じる特異点近傍の説明図である。
【図１１】本発明を実施する制御装置としての数値制御装置の要部ブロック図である。
【図１２】本発明の参考例における特異点の検出方法と、特異点が検出されたときの不安点な動作を回避する方法の説明図である。
【図１３】同参考例における特異点の検出処理と該特異点近傍での動作不安定を防ぐ処理の中心としたアルゴリズムを示す補間周期毎の処理フローチャートである。
【図１４】本発明の実施形態における特異点の検出方法と、特異点が検出されたときの不安点な動作を回避する方法の説明図である。
【図１５】同本発明の実施形態における特異点の検出処理と該特異点近傍での動作不安定を防ぐ処理の中心としたアルゴリズムを示すブロック単位で行う処理フローチャートである。
【符号の説明】
【００６２】
（Ｘ，Ｙ，Ｚ）  切削点指令
（ＸＳ，ＹＳ，ＺＳ）  ブロック始点の切削点指令
（ＸＥ，ＹＥ，ＺＥ）  ブロック終点の切削点指令
（Ｘｔ，Ｙｔ，Ｚｔ）  切削点補間位置
（Ｉ，Ｊ，Ｋ）  切削面垂直方向指令
（ＩＳ，ＪＳ，ＫＳ）  ブロック始点での切削面垂直方向指令
（ＩＥ，ＪＥ，ＫＥ）  ブロック終点での切削面垂直方向指令
（Ｉｔ，Ｊｔ，Ｋｔ）  切削面垂直方向補間ベクトル
（Ｔｘ，Ｔｙ，Ｔｚ）  工具方向ベクトル
（ＴＳｘ，ＴＳｙ，ＴＳｚ）  ブロック始点での工具方向ベクトル
（ＴＥｘ，ＴＥｙ，ＴＥｚ）  ブロック終点での工具方向ベクトル
（Ｔｔｘ，Ｔｔｙ，Ｔｔｚ）  工具方向補間ベクトル
（Ｘｃ，Ｙｃ，Ｚｃ）  直線軸の制御点
Ａｃ、Ｃｃ  回転軸制御点位置
（ＴＣｘ，ＴＣｙ，ＴＣｚ）  工具径補正ベクトル
（ＴＬｘ，ＴＬｙ，ＴＬｚ）  工具長補正ベクトル
（ＣＣｘ，ＣＣｙ，ＣＣｚ）  コーナＲ補正ベクトル
【図１】
0004607993.tif 000002
【図２】
0004607993.tif 000003
【図３】
0004607993.tif 000004
【図４】
0004607993.tif 000005
【図５】
0004607993.tif 000006
【図６】
0004607993.tif 000007
【図７】
0004607993.tif 000008
【図８】
0004607993.tif 000009
【図９】
0004607993.tif 000010
【図１０】
0004607993.tif 000011
【図１１】
0004607993.tif 000012
【図１２】
0004607993.tif 000013
【図１３】
0004607993.tif 000014
【図１４】
0004607993.tif 000015
【図１５】
0004607993.tif 000016