(57)【要約】【課題】線文長が不揃いの経路であっても、滑らかな経路を作成できる数値制御装置を提供する。【解決手段】ＣＰＵは各指令点のうち対象点の前後の線分長を演算し、大きい方の線分長に補正倍数を乗じて拡大線分長を算出する（Ｓ２１，Ｓ２２）。ＣＰＵは各指令点の座標データと各指令点間の線分長の情報を示す計算表を作成し（Ｓ２３）、拡大線分長よりも長い線分長を拡大線分長に置換する（Ｓ２６）。ＣＰＵは置換した拡大線分長に基づき、計算表の座標データを修正する（Ｓ２７）。ＣＰＵは修正した計算表に基づき、各指令点間を結ぶ経路を最小二乗法で二次曲線に近似し（Ｓ２８）、対象点の座標データを修正する（Ｓ２９）。故に複数の指令点から最小二乗法で近似曲線を求める際に、線分長が不揃いであっても滑らかな経路を作成できる。【選択図】図５
2014041499.tif 000002
【特許請求の範囲】
【請求項１】
工作機械の制御位置座標を表す複数の指令点の指令点座標データを結んだ経路を平滑化する平滑化処理手段を有する数値制御装置において、
前記平滑化処理手段は、
各指令点のうち対象となる対象点の前後の線分長を夫々演算する前後線分長演算手段と、
前記前後線分長演算手段が演算した前記前後の線分長のうち一方の線分長に所定倍を乗じて拡大線分長を算出する拡大線分長算出手段と、
前記複数の指令点のうち、前記対象点を含む所定範囲内に含まれる各指令点の前記指令点座標データ、及び前記各指令点間の線分長の情報を含む指令点情報を演算する指令点情報演算手段と、
前記指令点情報演算手段が演算した前記指令点情報のうち、前記拡大線分長算出手段が算出した前記拡大線分長よりも長い前記線分長を、前記拡大線分長に置換する置換手段と、
前記置換手段が置換した前記拡大線分長に基づき、前記指令点情報の前記指令点座標データを修正する指令点情報修正手段と、
前記指令点情報修正手段が修正した前記指令点情報が含む前記指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する近似手段と、
前記近似手段が近似した前記二次曲線に基づき、前記対象点の前記指令点座標データを修正する対象点座標修正手段と
を備えたことを特徴とする数値制御装置。
【請求項２】
前記前後線分長演算手段は、前記前後の線分長のうち長い方の線分長に前記所定倍を乗じて前記拡大線分長を算出することを特徴とする請求項１に記載の数値制御装置。
【請求項３】
工作機械の制御位置座標を表す複数の指令点の指令点座標データを結んだ経路を平滑化する平滑化処理工程を有する数値制御装置の制御方法において、
前記平滑化処理工程は、
各指令点のうち対象となる対象点の前後の線分長を夫々演算する前後線分長演算工程と、
前記前後線分長演算工程で演算した前記前後の線分長のうち一方の線分長に所定倍を乗じて拡大線分長を算出する拡大線分長算出工程と、
前記複数の指令点のうち、前記対象点を含む所定範囲内に含まれる各指令点の前記指令点座標データ、及び前記各指令点間の線分長の情報を含む指令点情報を演算する指令点情報演算工程と、
前記指令点情報演算工程で演算した前記指令点情報のうち、前記拡大線分長算出工程で算出した前記拡大線分長よりも長い前記線分長を、前記拡大線分長に置換する置換工程と、
前記置換工程で置換した前記拡大線分長に基づき、前記指令点情報の前記指令点座標データを修正する指令点情報修正工程と、
前記指令点情報修正工程で修正した前記指令点情報が含む前記指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する近似工程と、
前記近似工程で近似した前記二次曲線に基づき、前記対象点の前記指令点座標データを修正する対象点座標修正工程と
を備えたことを特徴とする数値制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は数値制御装置と制御方法に関する。
【背景技術】
【０００２】
数値制御装置はＮＣプログラムを使用し、モータ制御でテーブルと主軸等を移動回転しワークを加工する。数値制御装置は滑らかな曲線又は曲面を加工する場合、ＣＡＭ装置を用いる。ＣＡＭ装置は複数の指令点を結んだ複数の微小ブロック（微小線分）を作成する。数値制御装置はＣＡＭ装置が作成した複数の指令点をスプライン曲線等で近似し曲線補間を行う。ＣＡＭ装置は微小ブロックのデータが所定公差に収まるように微小線分を作成する。しかし、ＣＡＭ装置が作成する指令点は所定公差の幅付近に位置する傾向があり、スプライン曲線はその指令点付近を通る傾向にあるので、期待した経路からずれた経路を作成してしまう。
【０００３】
特許文献１が開示する曲線補間方法は、微小ブロック間に内挿点を挿入し、指令点と内挿点に基づき、最小二乗法を用いて近似曲線を求める。しかし、各指令点と隣接する内挿点との間の距離、及び内挿点同士の間の距離は短くなる。指令点と内挿点の座標データ量は大幅に増加する。ＣＰＵの処理負荷は増大し処理時間がかかるという問題があった。特許文献２が開示する数値制御装置は、複数の指令点の指令点座標データから移動平均値を演算し、演算した移動平均値の集合である平均化指令点座標データを各指令点の指令点座標データに置換する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００４−７８５１６号公報
【特許文献２】特開２０１１−２０４０９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２の数値制御装置では、加工形状が円に近い場合、近似曲線はＮＣプログラムの指令経路よりも内側にずれる場合があった。複数の指令点から最小二乗法で近似曲線を求めた場合、線分長が不揃いであると、経路に乱れを生じることがあった。
【０００６】
本発明の目的は、線文長が不揃いの経路であっても、滑らかな経路を作成できる数値制御装置と制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の請求項１に係る発明の数値制御装置は、工作機械の制御位置座標を表す複数の指令点の指令点座標データを結んだ経路を平滑化する平滑化処理手段を有する数値制御装置において、前記平滑化処理手段は、各指令点のうち対象となる対象点の前後の線分長を夫々演算する前後線分長演算手段と、前記前後線分長演算手段が演算した前記前後の線分長のうち一方の線分長に所定倍を乗じて拡大線分長を算出する拡大線分長算出手段と、前記複数の指令点のうち、前記対象点を含む所定範囲内に含まれる各指令点の前記指令点座標データ、及び前記各指令点間の線分長の情報を含む指令点情報を演算する指令点情報演算手段と、前記指令点情報演算手段が演算した前記指令点情報のうち、前記拡大線分長算出手段が算出した前記拡大線分長よりも長い前記線分長を、前記拡大線分長に置換する置換手段と、前記置換手段が置換した前記拡大線分長に基づき、前記指令点情報の前記指令点座標データを修正する指令点情報修正手段と、前記指令点情報修正手段が修正した前記指令点情報が含む前記指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する近似手段と、前記近似手段が近似した前記二次曲線に基づき、前記対象点の前記指令点座標データを修正する対象点座標修正手段とを備える。故に数値制御装置は複数の指令点から最小二乗法で近似曲線を求める際に、線分長が不揃いであっても経路を滑らかにできる。
【０００８】
請求項２に係る発明の数値制御装置は、請求項１に記載の発明の構成に加え、前記前後線分長演算手段は、前記前後の線分長のうち長い方の線分長に前記所定倍を乗じて前記拡大線分長を算出することを特徴とする。故に数値制御装置はより滑らかな経路を得ることができる。
【０００９】
請求項３に係る発明の数値制御装置の制御方法は、工作機械の制御位置座標を表す複数の指令点の指令点座標データを結んだ経路を平滑化する平滑化処理工程を有する数値制御装置の制御方法において、前記平滑化処理工程は、各指令点のうち対象となる対象点の前後の線分長を夫々演算する前後線分長演算工程と、前記前後線分長演算工程で演算した前記前後の線分長のうち一方の線分長に所定倍を乗じて拡大線分長を算出する拡大線分長算出工程と、前記複数の指令点のうち、前記対象点を含む所定範囲内に含まれる各指令点の前記指令点座標データ、及び前記各指令点間の線分長の情報を含む指令点情報を演算する指令点情報演算工程と、前記指令点情報演算工程で演算した前記指令点情報のうち、前記拡大線分長算出工程で算出した前記拡大線分長よりも長い前記線分長を、前記拡大線分長に置換する置換工程と、前記置換工程で置換した前記拡大線分長に基づき、前記指令点情報の前記指令点座標データを修正する指令点情報修正工程と、前記指令点情報修正工程で修正した前記指令点情報が含む前記指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する近似工程と、前記近似工程で近似した前記二次曲線に基づき、前記対象点の前記指令点座標データを修正する対象点座標修正工程とを備える。故に数値制御装置は制御方法を行うことによって、複数の指令点から最小二乗法で近似曲線を求める際に、線分長が不揃いであっても経路を滑らかにできる。
【図面の簡単な説明】
【００１０】
【図１】数値制御装置１と工作機械２の電気的構成を示すブロック図。
【図２】指令経路Ｒ１と二次曲線Ｒ２の図。
【図３】ＮＣプログラムの一例。
【図４】メイン処理の流れ図。
【図５】平滑化処理の流れ図。
【図６】指令経路Ｒ１と対象点（ｋ＝４）を基準とした修正経路の比較図。
【図７】経路Ａ、経路Ｂ、経路Ｃの比較図。
【図８】修正指令点演算処理の流れ図。
【発明を実施するための形態】
【００１１】
以下本発明の一実施形態を説明する。図１に示す数値制御装置１は、ＮＣプログラムが指令する指令点を結んだ経路を平滑化し、該平滑化した経路に従い、工作機械２の軸移動を制御する。
【００１２】
図１を参照し、工作機械２の構成を簡単に説明する。工作機械２の左右方向、前後方向、上下方向は、夫々Ｘ軸方向、Ｙ軸方向、Ｚ軸方向である。工作機械２は図示しない主軸機構、主軸移動機構、工具交換装置等を備える。主軸機構は主軸モータ３２を備え、工具を装着した主軸を回転する。主軸移動機構は、Ｚ軸モータ３１、Ｘ軸モータ３３、Ｙ軸モータ３４を備え、テーブル（図示略）上面に支持したワークに対し相対的に主軸をＸＹＺの各軸方向に夫々移動する。
【００１３】
工具交換装置は、マガジンモータ３５を備え、複数の工具を保持する工具マガジン（図示略）を駆動し、主軸に装着した工具を他の工具と交換する。工作機械２は操作パネル（図示略）を更に備える。操作パネルは入力装置１７と表示装置１８を備える。入力装置１７は各種入力、設定等を行う為の機器である。表示装置１８は各種表示画面、設定画面等を表示する。入力装置１７と表示装置１８は数値制御装置１の後述する入出力部１５に接続する。
【００１４】
Ｚ軸モータ３１はエンコーダ４１を備える。主軸モータ３２はエンコーダ４２を備える。Ｘ軸モータ３３はエンコーダ４３を備える。Ｙ軸モータ３４はエンコーダ４４を備える。マガジンモータ３５はエンコーダ４５を備える。エンコーダ４１〜４５は数値制御装置１の後述する駆動回路２１〜２５に各々接続する。
【００１５】
図１を参照し、数値制御装置１の電気的構成を説明する。数値制御装置１は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性記憶装置１４、入出力部１５、駆動回路２１〜２５等を備える。ＣＰＵ１１は数値制御装置１を統括制御する。ＲＯＭ１２はメイン処理プログラム等の各種プログラムを記憶する。メイン処理プログラムは後述するメイン処理（図４参照）を実行するプログラムである。ＲＡＭ１３は各種処理実行中の各種データを一時的に記憶する。不揮発性記憶装置１４は作業者が入力装置１７で入力して登録した複数のＮＣプログラム等を記憶する。ＮＣプログラムは各種制御指令を含む複数のブロックで構成し、工作機械２の軸移動、工具交換等を含む各種動作をブロック単位で制御するものである。
【００１６】
駆動回路２１はＺ軸モータ３１とエンコーダ４１に接続する。駆動回路２２は主軸モータ３２とエンコーダ４２に接続する。駆動回路２３はＸ軸モータ３３とエンコーダ４３に接続する。駆動回路２４はＹ軸モータ３４とエンコーダ４４に接続する。駆動回路２５はマガジンモータ３５とエンコーダ４５に接続する。駆動回路２１〜２５はＣＰＵ１１から指令信号を受け、対応する各モータ３１〜３５に駆動電流を夫々出力する。駆動回路２１〜２５はエンコーダ４１〜４５からフィードバック信号を受け、位置と速度のフィードバック制御を行う。入出力部１５は入力装置１７と表示装置１８に夫々接続する。
【００１７】
使用者は複数のＮＣプログラムの中から一のＮＣプログラムを入力装置１７で選択可能である。ＣＰＵ１１は選択したＮＣプログラムを表示装置１８に表示する。ＣＰＵ１１は表示装置１８に表示したＮＣプログラムに基づき、工作機械２の動作を制御する。
【００１８】
数値制御装置１が行う経路の平滑化処理を説明する。平滑化処理は、ＮＣプログラムが指令する工作機械２のワークに対して移動する主軸の経路（以下単に経路と呼ぶ）を平滑化する処理である。なお本実施形態では、工作機械２の経路を紙面上で説明する都合上、（ｘ，ｙ，ｚ）座標のうちｚ座標を省略し、二次元であるｘｙ平面で処理した場合を説明する。
【００１９】
図２に示す如く、プログラム指令経路Ｒ１（以下指令経路Ｒ１と呼ぶ）は、ＮＣプログラムが指令する指令点Ｐ０〜Ｐ８を線分で結んだ経路であり、逆放物線状である。二次曲線Ｒ２は指令経路Ｒ１を最小二乗法で近似したものである。Ｐ０〜Ｐ８のｘ，ｙ座標は以下の通りである。
・Ｐ０＝（ｘ０，ｙ０）＝（０，５０）
・Ｐ１＝（ｘ１，ｙ１）＝（１，２０）
・Ｐ２＝（ｘ２，ｙ２）＝（２，３）
・Ｐ３＝（ｘ３，ｙ３）＝（３，０）
・Ｐ４＝（ｘ４，ｙ４）＝（４，１．５）
・Ｐ５＝（ｘ５，ｙ５）＝（５，２）
・Ｐ６＝（ｘ６、ｙ６）＝（６，３）
・Ｐ７＝（ｘ７，ｙ７）＝（７，１１）
・Ｐ８＝（ｘ８，ｙ８）＝（８，５）
【００２０】
図３は指令経路Ｒ１を平滑化処理するＮＣプログラムの一例である。ＮＣプログラムは、工作機械２の動作モード（各種位置決定、移動等）を指令するＧコード、動作以外の補助的な機能を指令するＭコード等を主体に構成する。「Ｇ０」は、位置決めを指令する指令コード、「Ｇ１」は、直線補間を指令する指令コード、「Ｍ２６０」は、平滑開始を指令する指令コード、「Ｍ２６９」は、平滑終了を指令する指令コードである。「Ｍ３０」はプログラム終了の指令コードである。
【００２１】
図４の流れ図を参照し、ＣＰＵ１１が実行するメイン処理を説明する。使用者が動作開始の操作を入力装置１７で行うと、ＣＰＵ１１はＲＯＭ１２に記憶したメイン処理プログラムを読み込み、本処理を実行する。なお本処理で用いるパラメータは以下の通りである。
・修正前の指令点Ｐｋ：ｘｋ，ｙｋ，ｚｋ（ｋ番目のｘ，ｙ，ｚ座標）
・修正後の指令点Ｑｋ：Ｘｋ，Ｙｋ，Ｚｋ（ｋ番目のＸ，Ｙ，Ｚ座標）
・計算ポイント数：ｎ
・補正倍数：ｍ
本実施形態は、ｎ＝４、ｍ＝３とし、図３に示すＮＣプログラムを実行した場合を説明する。上記理由により、ｚ座標とＺ座標の演算は省略して説明する。
【００２２】
先ず、ＣＰＵ１１はＮＣプログラムを１ブロック解釈する（Ｓ１）。ＣＰＵ１１は解釈した１ブロックがプログラム終了指令か、平滑開始指令か判断する（Ｓ２，Ｓ３）。最初の１ブロック目はＧ０の位置決め指令であるので（Ｓ２：ＮＯ、Ｓ３：ＮＯ）、１ブロック動作を実行する（Ｓ４）。ＣＰＵ１１は主軸等を位置決め指令による初期の指令点Ｐ０（０，５０）に位置決めを行った後、Ｓ１へ戻り、処理を繰り返す。
【００２３】
ＣＰＵ１１は２ブロック目を解釈する（Ｓ１）。２ブロック目はＭ２６０の平滑開始指令であるので（Ｓ２：ＮＯ、Ｓ３：ＹＥＳ）、ＣＰＵ１１はカウンタｋ＝０，カウンタｊ＝０，フラグ＝０にセットする（Ｓ５）。カウンタｋ，カウンタｊ、フラグはＲＡＭ１３に記憶する。ＣＰＵ１１は平滑化処理の計算に必要な数のブロック（Ｍ２６０のブロックからｎ番目まで）を読み込む（Ｓ６）。本実施形態はｎ＝４である。故にＣＰＵ１１はＭ２６０のブロックから４番目（６ブロック目）までを読み込む。次にＣＰＵ１１は（ｋ＋ｎ＋１）番目、即ち５番目（７ブロック目）を読み込み（Ｓ７）、ｋに１加算する（Ｓ８）。
【００２４】
［ｋ＝１］
ＣＰＵ１１はｋ＋ｎ−ｊブロック目が平滑終了指令か否か判断する（Ｓ９）。ｋ＋ｎ−ｊ＝１＋４−０であるので、５番目である。５番目はＧ１の直線補間指令であるので（Ｓ９：ＮＯ）、ＣＰＵ１１は平滑化処理を実行する（Ｓ１１）。
【００２５】
図５の流れ図を参照し、平滑化処理を説明する。先ず、ＣＰＵ１１は各指令点のうち対象となる対象点の前後の線分長ＬＡ、ＬＢを夫々演算する（Ｓ２１）。現在ｋ＝１であるので対象点はＰ１である。Ｐ１前後の線分長は、Ｐ０−Ｐ１間の線分長ＬＡと、Ｐ１−Ｐ２間の線分長ＬＢである。更にＣＰＵ１１は線分長ＬＡ、ＬＢのうち長い方の線分長に補正倍数ｍを乗じて拡大線分長ＬＣを算出する（Ｓ２２）。Ｓ２１、Ｓ２２の各処理は下記（１）式で算出する。
【数１】
2014041499.tif 000003
…（１）式
ＬＡ＝３０．０１７、ＬＢ＝１７．０２９である。ＬＡはＬＢよりも長い。故にＬＡに補正倍数ｍを乗じることにより、拡大線分長ＬＣ＝３０．０１７×３＝９０．０５１となる。
【００２６】
ＣＰＵ１１は計算表（下記表１参照）を作成する（Ｓ２３）。計算表は指令点情報を含む。指令点情報は、Ｐ０〜Ｐ８のうち、対象点前後ｎ個の各指令点の座標データと、各指令点間の線分長の情報である。ＣＰＵ１１は作成した計算表をＲＡＭ１３に記憶する。ｋ＝１、ｎ＝４であるので、前後各４個の指令点は、ｋ−４〜ｋ−１、ｋ＋１〜ｋ＋４の計８個である。ＣＰＵ１１は表１につき、ｉ、ｘ、ｙ、Ｌを夫々設定する。ｉは指令点の番号を示す。ｉ＜０の場合、ＣＰＵ１１はｉ＝０の値（ｋ−１の値）を使用する。故にｋ−２〜ｋ−４の（ｘ，ｙ）は（０，５０）となる。
【表１】
2014041499.tif 000004
【００２７】
ＣＰＵ１１は拡大線分長ＬＣよりも長い線分長Ｌがあるか否か判断する（Ｓ２４）。表１では、拡大線分長ＬＣよりも長い線分長Ｌは存在しない（Ｓ２４：ＮＯ）。故にＣＰＵ１１は、各指令点間の線分長Ｌをそのまま確定線分長（確定Ｌ）とし、各指令点Ｐｋ−４〜ｋ＋４の座標データ（ｘ，ｙ）を、修正後の指令点Ｑｋ−４〜ｋ＋４の座標データ（Ｘ、Ｙ）に設定する（Ｓ２５）。ＣＰＵ１１は修正後の９つの指令点Ｑｋ−４〜ｋ＋４の座標データ（Ｘ，Ｙ）に基づき、各指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する（Ｓ２８）。ＣＰＵ１１は近似した二次曲線に基づき、対象点の指令点座標データ（Ｘｋ'，Ｙｋ'）を算出し、修正する（Ｓ２９）。ＣＰＵ１１は算出した対象点（Ｘｋ'，Ｙｋ'）に主軸等を移動する（Ｓ３０）。ＣＰＵ１１は本処理を終了し、処理を図４のＳ１２に戻す。
【００２８】
ＣＰＵ１１はフラグが０か否か判断する（Ｓ１２）。現在フラグは０であるので（Ｓ１２：ＹＥＳ）、ＣＰＵ１１はＳ７に戻る。ＣＰＵ１１は（ｋ＋ｎ＋１）番目、即ち６番目（８ブロック目）を読み込む（Ｓ７）。ＣＰＵ１１はｋに１加算する（Ｓ８）。
【００２９】
［ｋ＝２］
ＣＰＵ１１はｋ＋ｎ−ｊブロック目が平滑終了指令か否か判断する（Ｓ９）。ｋ＋ｎ−ｊ＝２＋４−０であるので、６番目である。６番目もＧ１の直線補間指令であるので（Ｓ９：ＮＯ）、ＣＰＵ１１は平滑化処理を実行する（Ｓ１１）。
【００３０】
図５に示す如く、ＣＰＵ１１は対象点の前後の線分長ＬＡ、ＬＢを夫々演算する（Ｓ２１）。現在ｋ＝２であるので対象点はＰ２である。Ｐ２前後の線分長は、Ｐ１−Ｐ２間の線分長ＬＡと、Ｐ２−Ｐ３間の線分長ＬＢである。更にＣＰＵ１１は線分長ＬＡ、ＬＢのうち長い方の線分長に補正倍数ｍを乗じて拡大線分長ＬＣを算出する（Ｓ２２）。Ｓ２１、Ｓ２２の各処理は上記（１）式で算出する。ＬＡ＝１７．０２９、ＬＢ＝３．１６２である。ＬＡはＬＢよりも長い。故にＬＡに補正倍数ｍを乗じることによって、拡大線分長ＬＣ＝１７．０２９×３＝５１．０８７となる。
【００３１】
ＣＰＵ１１は計算表（下記表２参照）を作成する（Ｓ２３）。ＣＰＵ１１は表２につき、ｉ、ｘ、ｙ、Ｌを夫々設定する。ｉ＜０の場合、ＣＰＵ１１はｉ＝０の値（ｋ＝２の値）を使用する。故にｋ−３、ｋ−４の各（ｘ，ｙ）は（０，５０）となる。
【表２】
2014041499.tif 000005
【００３２】
表２でも、拡大線分長ＬＣよりも長い線分長Ｌは存在しない（Ｓ２４：ＮＯ）。故にＣＰＵ１１は、各指令点間の線分長Ｌをそのまま確定線分長（確定Ｌ）とし、各指令点Ｐｋ−４〜ｋ＋４の座標データ（ｘ，ｙ）を、修正後の指令点Ｑｋ−４〜ｋ＋４の座標データ（Ｘ、Ｙ）に設定する（Ｓ２５）。ＣＰＵ１１は修正後の９つの指令点Ｑｋ−４〜ｋ＋４の座標データ（Ｘ，Ｙ）に基づき、各指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する（Ｓ２８）。ＣＰＵ１１は近似した二次曲線に基づき、対象点の指令点座標データ（Ｘｋ'，Ｙｋ'）を算出し、修正する（Ｓ２９）。ＣＰＵ１１は算出した対象点（Ｘｋ'，Ｙｋ'）に主軸等を移動する（Ｓ３０）。ＣＰＵ１１は本処理を終了し、処理を図４のＳ１２に戻す。
【００３３】
ＣＰＵ１１はフラグが０か否か判断する（Ｓ１２）。現在フラグは０であるので（Ｓ１２：ＹＥＳ）、ＣＰＵ１１はＳ７に戻る。ＣＰＵ１１は（ｋ＋ｎ＋１）番目、即ち７番目（９ブロック目）を読み込む（Ｓ７）。ＣＰＵ１１はｋに１加算する（Ｓ８）。
【００３４】
［ｋ＝３］
ＣＰＵ１１はｋ＋ｎ−ｊブロック目が平滑終了指令か否か判断する（Ｓ９）。ｋ＋ｎ−ｊ＝３＋４−０であるので、７番目である。７番目もＧ１の直線補間指令であるので（Ｓ９：ＮＯ）、ＣＰＵ１１は平滑化処理を実行する。
【００３５】
図５に示す如く、ＣＰＵ１１は対象点の前後の線分長ＬＡ、ＬＢを夫々演算する（Ｓ２１）。現在ｋ＝３であるので対象点はＰ３である。Ｐ３前後の線分長は、Ｐ２−Ｐ３間の線分長ＬＡと、Ｐ３−Ｐ４間の線分長ＬＢである。更にＣＰＵ１１は線分長ＬＡ、ＬＢに補正倍数ｍを乗じて拡大線分長ＬＣを夫々算出する（Ｓ２２）。Ｓ２１、Ｓ２２の各処理は上記（１）式で算出する。ＬＡ＝３．１６２、ＬＢ＝１．８０３である。ＬＡはＬＢよりも長い。故にＬＡに補正倍数ｍを乗じることによって、拡大線分長ＬＣ＝３．１６２×３＝９．４８６となる。
【００３６】
ＣＰＵ１１は計算表（下記表３参照）を作成する（Ｓ２３）。ＣＰＵ１１は表３につき、ｉ、ｘ、ｙ、Ｌを夫々設定する。ｉ＜０の場合、ＣＰＵ１１はｉ＝０の値（ｋ―３の値）を使用する。故にｋ−４の（ｘ，ｙ）は（０，５０）となる。
【表３】
2014041499.tif 000006
【００３７】
表３では、Ｌ＝３０．０１７、１７．０２９が存在する。拡大線分長ＬＣよりも長い線分長Ｌが存在するので（Ｓ２４：ＹＥＳ）、ＣＰＵ１１は、表３のうち、拡大線分長ＬＣよりも長い線分長Ｌを、拡大線分長ＬＣ（９．４８６）に置換し（Ｓ２６）、確定線分長（確定Ｌ）とする。拡大線分長ＬＣよりも短い線分長Ｌはそのまま確定線分長（確定Ｌ）とする。ＣＰＵ１１は確定線分長Ｌに基づき、修正後の指令点Ｑｋ−４〜ｋ＋４の座標データ（Ｘ、Ｙ）を再計算する（Ｓ２７）。例えばｋ−３の線分長Ｌは拡大線分長ＬＣに置換したので、修正後の指令点Ｑｋ−３（Ｘ、Ｙ）＝（０．９３５，２１．９４３）となる。ＣＰＵ１１は修正後の９つの指令点Ｑｋ−４〜ｋ＋４の座標データ（Ｘ，Ｙ）に基づき、各指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する（Ｓ２８）。ＣＰＵ１１は近似した二次曲線に基づき、対象点の指令点座標データ（Ｘｋ'，Ｙｋ'）を算出し、修正する（Ｓ２９）。ＣＰＵ１１は算出した対象点（Ｘｋ'，Ｙｋ'）に主軸等を移動する（Ｓ３０）。
【００３８】
ＣＰＵ１１はフラグが０か否か判断する（Ｓ１２）。現在フラグは０であるので（Ｓ１２：ＹＥＳ）、ＣＰＵ１１はＳ７に戻る。ＣＰＵ１１は（ｋ＋ｎ＋１）番目、即ち８番目（１０ブロック目）を読み込む（Ｓ７）。ＣＰＵ１１はｋを１加算する（Ｓ８）。
【００３９】
［ｋ＝４］
ＣＰＵ１１はｋ＋ｎ−ｊブロック目が平滑終了指令か否か判断する（Ｓ９）。ｋ＋ｎ−ｊ＝４＋４−０であるので、８番目である。８番目もＧ１の直線補間指令であるので（Ｓ９：ＮＯ）、ＣＰＵ１１は平滑化処理を実行する。
【００４０】
図５に示す如く、ＣＰＵ１１は対象点の前後の線分長ＬＡ、ＬＢを夫々演算する（Ｓ２１）。現在ｋ＝４であるので対象点はＰ４である。Ｐ４前後の線分長は、Ｐ３−Ｐ４間の線分長ＬＡと、Ｐ４−Ｐ５間の線分長ＬＢである。更にＣＰＵ１１は線分長ＬＡ、ＬＢに補正倍数ｍを乗じて拡大線分長ＬＣを夫々算出する（Ｓ２２）。Ｓ２１、Ｓ２２は上記（１）式で算出する。ＬＡ＝１．８０３、ＬＢ＝１．１１８である。ＬＡはＬＢよりも長い。故にＬＡに補正倍数ｍを乗じることによって、拡大線分長ＬＣ＝１．８０３×３＝５．４０８となる。
【００４１】
ＣＰＵ１１は計算表（下記表４参照）を作成する（Ｓ２３）。ＣＰＵ１１は表４につき、ｉ、ｘ、ｙ、Ｌを夫々設定する。
【表４】
2014041499.tif 000007
【００４２】
表４では、Ｌ＝３０．０１７、１７．０２９、８．０６２、６．０８３が存在する。拡大線分長ＬＣよりも長い線分長Ｌが存在するので（Ｓ２４：ＹＥＳ）、ＣＰＵ１１は、表４のうち、原則、拡大線分長ＬＣよりも長い線分長Ｌを、拡大線分長ＬＣ（５．４０８）に置換し（Ｓ２６）、確定線分長（確定Ｌ）とする。拡大線分長ＬＣよりも短い線分長Ｌはそのまま確定線分長（確定Ｌ）とする。
【００４３】
ここで、図６に示す如く、修正前の指令点Ｐ８（Ｐｋ＋４）を修正後の指令点Ｑｋ＋４に修正する方法を説明する。修正後の指令点Ｑｋ＋３からＰ７までの線文長はＬＣより短い。そこで、修正後の指令点Ｑｋ＋３から修正前の指令点Ｐ７を経由し、修正前の指令点Ｐ８への経路で拡大線分長ＬＣ移動した位置を修正後の指令点Ｑｋ＋４とする。
【００４４】
修正後の指令点Ｑｋ＋３からＰ７までの線分長をＬ１、Ｐ７から修正後の指令点Ｑｋ＋４までの線分長をＬ２とし、Ｌ１＋Ｌ２＝５．４０８となるように、修正後の（ｋ＋４）の指令点の座標データ（Ｘ，Ｙ）を算出する。即ち以下の経路を想定する。
Ｑｋ＋３（６．６７１，８．３６７）→Ｐ７（７，１１）→Ｑｋ＋４（７．４５３，８．２８３）
故に指令点Ｑｋ＋３からＱｋ＋４までの確定線分長Ｌは１．１１９となる。
【００４５】
ＣＰＵ１１は修正後の９つの指令点ｋ−４〜ｋ＋４の座標データ（Ｘ，Ｙ）に基づき、各指令点間を結ぶ修正経路Ｓを最小二乗法を用いて二次曲線に近似する（Ｓ２８）。ＣＰＵ１１は近似した二次曲線に基づき、対象点の指令点座標データ（Ｘｋ'，Ｙｋ'）を算出し、修正する（Ｓ２９）。ＣＰＵ１１は算出した対象点（Ｘｋ'，Ｙｋ'）に主軸等を移動する（Ｓ３０）。
【００４６】
ＣＰＵ１１はフラグが０か否か判断する（Ｓ１２）。現在フラグは０であるので（Ｓ１２：ＹＥＳ）、ＣＰＵ１１はＳ７に戻る。ＣＰＵ１１は（ｋ＋ｎ＋１）番目、即ち８番目（１０ブロック目）を読み込む（Ｓ７）。ＣＰＵ１１はｋを１加算する（Ｓ８）。以下、ｋ＝５以降はｋ＝４と同様に、Ｓ７〜Ｓ９、Ｓ１１、Ｓ１２の各処理を繰り返す。
【００４７】
ＣＰＵ１１はｋ＋ｎ−ｊブロック目が平滑終了指令（Ｍ２６９）であると判断した場合（Ｓ９：ＹＥＳ）、ｊに１加算し、フラグを１に設定する（Ｓ１０）。ＣＰＵ１１は上述と同様に、平滑化処理を実行する（Ｓ１１）。平滑化処理が終了すると、現在フラグは１であるので（Ｓ１２：ＮＯ）、ｊはｎ−１であるか否か判断する（Ｓ１３）。ｎ＝４であるので、ｊが３に達していない場合（Ｓ１３：ＮＯ）、ＣＰＵ１１はＳ８に戻り、処理を同様に繰り返す。ｊが３に達した場合（Ｓ１３：ＹＥＳ）、最終指令点までの平滑化が終了したので、Ｓ１に戻り、次ブロックを解釈する。解釈したブロックが終了指令である場合（Ｓ２：ＹＥＳ）、メイン処理を終了する。
【００４８】
次に、本発明の効果を確認する為に比較試験を行った。図７を参照し、比較試験の結果を説明する。図７に示すグラフは、経路Ａ、Ｂ、Ｃを示す。経路ＡはＮＣプログラムの指令経路（黒色菱形シンボル）である。経路Ｂは経路Ａを最小二乗法のみで近似した経路（黒色長方形シンボル）である（従来例）。経路Ｃは本発明の方法で近似した経路（白抜き三角形シンボル）である。経路Ａは各指令点間の線分長が不揃いである。故に最小二乗法のみで近似する従来法では、経路Ｂの頂上付近で乱れが生じる。これに対し、経路Ｃは、経路Ｂに比べ、頂上付近においても乱れることなく、滑らかな円弧を形成している。従って、本発明の方法を用いることによって、従来の最小二乗法のみで近似した経路と比較して、より滑らかな経路にできる。
【００４９】
以上説明にて、Ｓ２１の処理を実行するＣＰＵ１１は本発明の前後線分長演算手段に相当し、Ｓ２２の処理を実行するＣＰＵ１１は本発明の拡大線分長算出手段に相当し、Ｓ２３の処理を実行するＣＰＵ１１は本発明の指令点情報演算手段に相当し、Ｓ２６の処理を実行するＣＰＵ１１は本発明の置換手段に相当し、Ｓ２７の処理を実行するＣＰＵ１１は本発明の指令点情報修正手段に相当し、Ｓ２８の処理を実行するＣＰＵ１１は本発明の近似手段に相当し、Ｓ２９の処理を実行するＣＰＵ１１は本発明の対象点座標修正手段に相当する。
【００５０】
また、Ｓ２１のステップは本発明の前後線分長演算工程に相当し、Ｓ２２のステップは本発明の拡大線分長算出工程に相当し、Ｓ２３のステップは本発明の指令点情報演算工程に相当し、Ｓ２６のステップは本発明の置換工程に相当し、Ｓ２７のステップは本発明の指令点情報修正工程に相当し、Ｓ２８のステップは本発明の近似工程に相当し、Ｓ２９のステップは本発明の対象点座標修正工程に相当する。
【００５１】
以上説明したように、本実施形態の数値制御装置１は、ＮＣプログラムの指令点の座標データを結んだ経路を平滑化処理できる。ＣＰＵ１１は各指令点のうち対象となる対象点の前後の線分長ＬＡ、ＬＢを夫々演算する。次いで、ＣＰＵ１１は演算した前後の線分長ＬＡ、ＬＢのうち大きい方の線分長に補正倍数ｍを乗じて拡大線分長ＬＣを算出する。ＣＰＵ１１は、各指令点のうち、対象点の前後ｎ個の各指令点間の線分長を夫々演算し、各指令点の座標データと各指令点間の線分長の情報を示す計算表を作成する。ＣＰＵ１１は、計算表のうち、拡大線分長ＬＣよりも長い線分長Ｌを、拡大線分長ＬＣに置換する。ＣＰＵ１１は置換した拡大線分長ＬＣに基づき、計算表の座標データを修正する。ＣＰＵ１１は修正した計算表に基づき、各指令点間を結ぶ経路を最小二乗法を用いて二次曲線に近似する。ＣＰＵ１１は近似した二次曲線に基づき、対象点の座標データを修正する。故に複数の指令点から最小二乗法で近似曲線を求める際に、各指令点間の線分長が不揃いであっても経路を滑らかにできる。
【００５２】
なお本発明は上記実施の形態に限定されず、様々な変形が可能である。上記実施形態のＣＰＵ１１は、図５に示す平滑化処理において、拡大線分長ＬＣを算出し（Ｓ２２）、計算表を作成（Ｓ２３）した後は、Ｓ２４〜Ｓ２７の処理を実行することにより、修正後の指令点Ｑの座標データ（Ｘ、Ｙ）を求めている。例えば、ＣＰＵ１１は、Ｓ２４〜Ｓ２７の処理の代わりに、例えば図８に示す修正指令点演算処理を実行してもよい。
【００５３】
図６と図８を参照し、修正指令点演算処理を説明する。ここではｋ＝４の場面を想定して説明する。計算ポイント数ｎ＝４とする。
【００５４】
ＣＰＵ１１は以下のパラメータを設定する（Ｓ４１）。上記実施形態と同様に、Ｐｋは指令点、Ｑｋは修正指令点である。ｐはｋからのブロック数である。
・Ｑｋ＝Ｐｋ
・Ｑｋ＋１＝Ｐｋ＋１
・Ｑｋ−１＝Ｐｋ−１
・ｐ＝２
現在ｋ＝４であるので、
・Ｑ４＝Ｐ４
・Ｑ５＝Ｐ５
・Ｑ３＝Ｐ３
【００５５】
ＣＰＵ１１は、Ｑｋ＋ｐ−１からＰｋ＋ｐ方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗｋ＋ｐを求める（Ｓ４２）。図６に示す如く、Ｑ５からＰ６方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ６は、Ｐ６とＰ７の間に位置する。ＣＰＵ１１は、Ｗｋ＋ｐの位置がＰｋ＋ｐの位置よりもＱｋ側にあるか否か判断する（Ｓ４３）。Ｗ６の位置は、Ｐ６の位置よりもＱ４側にはないので（Ｓ４３：ＮＯ）、Ｑｋ＋ｐ＝Ｐｋ＋ｐ、即ち、Ｐ６の位置をそのままＱ６とする（Ｓ４５）。
【００５６】
ＣＰＵ１１は、Ｑｋ−ｐ＋１からＰｋ−ｐ方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗｋ−ｐを求める（Ｓ４６）。図６に示す如く、Ｑ３からＰ２方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ２は、Ｐ１とＰ２の間に位置する。ＣＰＵ１１は、Ｗｋ−ｐの位置がＰｋ−ｐの位置よりもＱｋ側にあるか否か判断する（Ｓ４７）。Ｗ２の位置は、Ｐ２の位置よりもＱ４側にはないので（Ｓ４７：ＮＯ）、Ｑｋ−ｐ＝Ｐｋ−ｐ、即ち、Ｐ２の位置をそのままＱ２とする（Ｓ４９）。
【００５７】
ＣＰＵ１１は、ｐに１加算し（Ｓ５０）、ｐがｎより大きいか否か判断する（Ｓ５１）。ｐは３、ｎは４である。ｐはｎより大きくはないので（Ｓ５１：ＮＯ）、ＣＰＵ１１は、Ｓ４２に戻り、上記処理を繰り返す。
【００５８】
次いで、ＣＰＵ１１は、Ｑ６からＰ７方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ７を求める（Ｓ４２）。図６に示す如く、Ｗ７は、Ｐ６とＰ７の間に位置する。ＣＰＵ１１は、Ｗ７の位置がＰ７の位置よりもＱ４側にあるか否か判断する（Ｓ４３）。Ｗ７の位置は、Ｐ７の位置よりもＱ４側にあるので（Ｓ４３：ＹＥＳ）、Ｑｋ＋ｐ＝Ｗｋ＋ｐ、即ち、Ｗ７の位置をＱ７とする（Ｓ４４）。
【００５９】
ＣＰＵ１１は、Ｑ２からＰ１方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ１を求める（Ｓ４６）。図６に示す如く、Ｗ１は、Ｐ１とＰ２の間に位置する。Ｗ１の位置は、Ｐ１の位置よりもＱ４側にあるので（Ｓ４７：ＹＥＳ）、Ｑｋ−ｐ＝Ｗｋ−ｐ、即ち、Ｗ１の位置をＱ１とする（Ｓ４８）。
【００６０】
ＣＰＵ１１は、ｐに１加算し（Ｓ５０）、ｐがｎより大きいか否か判断する（Ｓ５１）。ｐは４、ｎは４である。ｐはｎより大きくはないので（Ｓ５１：ＮＯ）、ＣＰＵ１１は、Ｓ４２に戻り、上記処理を繰り返す。
【００６１】
次いで、ＣＰＵ１１は、Ｑ７からＰ８方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ８を求める（Ｓ４２）。図６に示す如く、Ｗ８は、Ｐ７とＰ８の間に位置する。ＣＰＵ１１は、Ｗ８の位置がＰ８の位置よりもＱ４側にあるか否か判断する（Ｓ４３）。Ｗ８の位置は、Ｐ８の位置よりもＱ４側にあるので（Ｓ４３：ＹＥＳ）、Ｑｋ＋ｐ＝Ｗｋ＋ｐ、即ち、Ｗ８の位置をＱ８とする（Ｓ４４）。
【００６２】
ＣＰＵ１１は、Ｑ１からＰ０方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ０を求める（Ｓ４６）。図６に示す如く、Ｑ１からＰ０方向へ、経路に沿って拡大線分長ＬＣ離れた位置Ｗ０は、Ｐ１とＰ２の間に位置する。Ｗ０の位置は、Ｐ０の位置よりもＱ４側にあるので（Ｓ４７：ＹＥＳ）、Ｑｋ−ｐ＝Ｗｋ−ｐ、即ち、Ｗ０の位置をＱ０とする（Ｓ４８）。
【００６３】
ＣＰＵ１１は、ｐに１加算し（Ｓ５０）、ｐがｎより大きいか否か判断する（Ｓ５１）。ｐは５、ｎは４である。ｐはｎより大きいので（Ｓ５１：ＹＥＳ）、ＣＰＵ１１は、ｋ＝４について、本処理を終了し、図５に示す平滑化処理のＳ２８の処理に戻る。このような修正指令点演算処理を実行することにより、上記実施形態と同様の効果を得ることができる。
【００６４】
また上記実施形態は、テーブルが固定で、主軸がテーブルに対してＸＹＺの各軸方向に移動可能であるが、例えば、主軸をＺ軸方向に移動可能とし、テーブルをＸＹ軸方向に移動可能としてもよい。主軸とテーブルが相対的にＸＹＺの各軸方向に移動可能であればよい。
【００６５】
また上記実施形態の工作機械２は、ＸＹＺ空間において、ワークを立体的に加工できるものであるが、例えばＸＹ平面上でワークの切断加工を行う工作機械にも適用可能である。
【００６６】
また上記実施形態は、平滑化処理のＳ２２にて、線分長ＬＡ、ＬＢのうち長い方に補正倍数を乗じ、拡大線分長ＬＣを算出したが、例えば、短い方の線分長に補正倍数を乗じ、拡大線分長ＬＣを算出してもよい。また、長い方と短い方を交互に選択し、補正倍数を乗じてもよい。少なくとも何れか一方の線分長を選択すればよいが、好ましくは、上記実施形態のように、長い方の線分長を採用するのがよい。
【符号の説明】
【００６７】
１  数値制御装置
２  工作機械
１１  ＣＰＵ
１４  不揮発性記憶装置
【図１】
2014041499.tif 000008
【図２】
2014041499.tif 000009
【図３】
2014041499.tif 000010
【図４】
2014041499.tif 000011
【図５】
2014041499.tif 000012
【図６】
2014041499.tif 000013
【図７】
2014041499.tif 000014
【図８】
2014041499.tif 000015