(57)【要約】【課題】回転軸のみの移動を含んだ移動経路でも良好な加工面を得ることができる数値制御装置と移動経路修正方法を提供する。【解決手段】セグメントＳ１〜Ｓ３のうち２番目のセグメントＳ２は回転軸のみの移動である。ＣＰＵはＮＣプログラムの制御指令に基づき、セグメントＳ２の回転軸の移動角度を特定する。ＣＰＵは移動角度とワーク半径からセグメントＳ２のセグメント長を計算する。セグメント長が第１設定値以下の場合、セグメントＳ１の始点とセグメントＳ２の中点をセグメントＳ１Ｒで接続、セグメントＳ２の中点とセグメントＳ３の終点をセグメントＳ２Ｒで接続する。セグメント長が第１設定値より大きい場合、ＣＰＵはセグメントＳ１Ｒを確定する。移動経路は微小ブロックを含まない。数値制御装置は回転軸の移動を含む移動経路でも良好な加工面を得ることができる。【選択図】図６
2015161953.tif 000002
【特許請求の範囲】
【請求項１】
複数のセグメントで構成する工作機械のワークに対する工具の移動経路を修正する数値制御装置において、
前記移動経路を前記工作機械に指令するＮＣプログラムに基づき、前記複数のセグメントのうち一つの注目セグメントの距離を算出する算出手段と、
前記算出手段が算出した注目セグメントの距離が基準距離以下か否か判断する判断手段と、
前記算出手段が算出した距離が基準距離以下と前記判断手段が判断した場合、前記注目セグメントの前のセグメントの始点と、前記注目セグメントの次のセグメントの終点との間を接続し直す再接続手段とを備え、
前記算出手段は、
前記ＮＣプログラムに基づき、前記セグメントに沿う前記工具の移動が、前記ワークを回転する回転軸のみの移動か、又は前記工具を前記ワークに対して直線的に移動する直線軸のみの移動かを判断する移動軸判断手段と、
前記移動軸判断手段が移動は回転軸のみの移動と判断した場合、該回転軸の回転中心から前記工具の先端までの距離である半径と、前記ＮＣプログラムから特定する該回転軸の移動角度に基づき、前記セグメントの距離を算出する第一算出手段と、
前記移動軸判断手段が移動は直線軸のみの移動と判断した場合、該直線軸の移動距離に基づき、前記セグメントの距離を算出する第二算出手段と
を備えたことを特徴とする数値制御装置。
【請求項２】
前記複数のセグメントのうち連続する３つのセグメントを、移動開始側の開始セグメント、移動終了側の終了セグメント、前記開始セグメントと前記終了セグメントを接続する中間セグメントとして選択する選択手段を備え、
前記算出手段は、
前記選択手段が選択した前記３つのセグメントのうち前記注目セグメントとして前記中間セグメントの距離を算出し、
前記再接続手段は、開始セグメントの始点と終了セグメントの終点との間を、二本のセグメントを用いて中間セグメントの中点で接続し直すことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記判断手段が中間セグメントの距離が基準距離よりも長いと判断した場合、開始セグメントを確定する確定手段を備え、
前記選択手段は、
前記確定手段が開始セグメントを確定した場合、前記確定手段が確定した開始セグメントの次のセグメントから前記３つのセグメントを新たに選択し、
前記再接続手段が開始セグメントの始点と終了セグメントの終点との間を二本のセグメントを用いて接続し直した場合、該二本のセグメントのうち前記移動経路において後ろ側のセグメントを新たな中間セグメントとして、３つのセグメントを選択し直すことを特徴とする請求項２に記載の数値制御装置。
【請求項４】
複数のセグメントで構成する工作機械のワークに対する工具の移動経路を修正する数値制御装置が行う移動経路修正方法において、
前記移動経路を前工作機械に指令するＮＣプログラムに基づき、前記複数のセグメントのうち一つの注目セグメントの距離を算出する算出工程と、
前記算出工程で算出した前記注目セグメントの距離が基準距離以下か否か判断する判断工程と、
前記算出工程で算出した距離が基準距離以下と前記判断工程で判断した場合、注目セグメントの前のセグメントの始点と、注目セグメントの次のセグメントの終点との間を接続し直す再接続工程とを備え、
前記算出工程は、
前記ＮＣプログラムに基づき、前記セグメントに沿う前記工具の移動が、前記ワークを回転する回転軸のみの移動か、又は前記工具を前記ワークに対して直線的に移動する直線軸のみの移動かを判断する移動軸判断工程と、
前記移動軸判断工程で移動は回転軸のみの移動と判断した場合、回転軸の回転中心から前記工具の先端までの距離である半径と、前記ＮＣプログラムから特定する回転軸の移動角度に基づき、前記セグメントの距離を算出する第一算出工程と、
前記移動軸判断工程で移動は直線軸のみの移動と判断した場合、直線軸の移動距離に基づき、前記セグメントの距離を算出する第二算出工程と
を備えたことを特徴とする移動経路修正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置と移動経路修正方法に関する。
【背景技術】
【０００２】
数値制御装置は、曲線を描くＮＣプログラムを生成する場合、ＣＡＭ（ｃｏｍｐｕｔｅｒ  ａｉｄｅｄ  ｍａｎｕｆａｃｔｕｒｉｎｇ）を用いる。ＣＡＭは、曲線を複数のセグメントに分割する。ＣＡＭは、演算誤差等により、前後のセグメントと比較的大きな角度をなす微小のセグメントを生成することがある。数値制御装置は、短い周期で指令速度に対応する分の移動量をサーボアンプに送出してモータを駆動する。微小ブロックが指令速度分の移動量に満たない場合、工具は急激に減速し、工具跡が加工面に残る場合がある。
【０００３】
特許文献１が開示する数値制御装置は、移動経路中の連続する三つのセグメントＳ１，Ｓ２、Ｓ３のうち、セグメントＳ２の長さが第１設定値以下の場合、セグメントＳ１の始点とセグメントＳ２の中点をセグメントＳ１Ｒで接続し、セグメントＳ２の中点とセグメントＳ３の終点をセグメントＳ２Ｒで接続する。セグメントＳ２の長さが第１設定値より長い場合、又はセグメントＳ１Ｒの長さが第２設定値より長い場合、セグメントＳ１Ｒを確定する。移動経路は微小セグメントを含まない。故に数値制御装置は良好な加工面を得ることができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−７８８９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
数値制御装置は、円柱状のワークを加工する場合がある。該場合、数値制御装置はＮＣプログラムで回転軸の移動を指令する。特許文献１が開示する数値制御装置は回転軸の移動指令から加工面上の移動距離を算出できない。移動経路中に微小セグメントが残ってしまうので、数値制御装置は良好な加工面を得ることができない。
【０００６】
本発明は、回転軸のみの移動を含んだ移動経路でも良好な加工面を得ることができる数値制御装置と移動経路修正方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の請求項１に係る数値制御装置は、複数のセグメントで構成する工作機械のワークに対する工具の移動経路を修正する数値制御装置において、前記移動経路を前記工作機械に指令するＮＣプログラムに基づき、前記複数のセグメントのうち一つの注目セグメントの距離を算出する算出手段と、前記算出手段が算出した注目セグメントの距離が基準距離以下か否か判断する判断手段と、前記算出手段が算出した距離が基準距離以下と前記判断手段が判断した場合、前記注目セグメントの前のセグメントの始点と、前記注目セグメントの次のセグメントの終点との間を接続し直す再接続手段とを備え、前記算出手段は、前記ＮＣプログラムに基づき、前記セグメントに沿う前記工具の移動が、前記ワークを回転する回転軸のみの移動か、又は前記工具を前記ワークに対して直線的に移動する直線軸のみの移動かを判断する移動軸判断手段と、前記移動軸判断手段が移動は回転軸のみの移動と判断した場合、該回転軸の回転中心から前記工具の先端までの距離である半径と、前記ＮＣプログラムから特定する該回転軸の移動角度に基づき、前記セグメントの距離を算出する第一算出手段と、前記移動軸判断手段が移動は直線軸のみの移動と判断した場合、該直線軸の移動距離に基づき、前記セグメントの距離を算出する第二算出手段とを備えたことを特徴とする。例えば円柱又は円筒形状のワーク表面を加工する時、セグメントの移動は直線軸のみで移動する他に、回転軸のみで移動する場合がある。数値制御装置は移動軸を判定し、直線軸か回転軸かでセグメント距離の算出方法を使い分けることができる。故に数値制御装置は回転軸のみの移動であってもセグメントの距離を算出できる。セグメントの距離が基準距離以下であれば、数値制御装置は注目セグメントの前のセグメントの始点と、注目セグメントの次のセグメントの終点との間を接続し直すので、移動経路中の微小セグメントを削除できる。故に数値制御装置は回転軸のみの移動を含んだ移動経路でも微小セグメントを削除できるので、修正後の移動経路でワークを加工した場合に良好な加工面を得ることができる。
【０００８】
請求項２に係る数値制御装置は、請求項１に記載の発明の構成に加え、前記複数のセグメントのうち連続する３つのセグメントを、移動開始側の開始セグメント、移動終了側の終了セグメント、前記開始セグメントと前記終了セグメントを接続する中間セグメントとして選択する選択手段を備え、前記算出手段は、前記選択手段が選択した前記３つのセグメントのうち前記注目セグメントとして前記中間セグメントの距離を算出し、前記再接続手段は、開始セグメントの始点と終了セグメントの終点との間を、二本のセグメントを用いて中間セグメントの中点で接続し直すことを特徴とする。数値制御装置は３つのセグメントを選択し、注目セグメントとして中間セグメントの距離を算出する。距離が基準距離以下の場合、数値制御装置は開始セグメントの始点と終了セグメントの終点を、２本のセグメントを用いて中間セグメントの中点で接続する。故に数値制御装置は移動経路に微小セグメントを残さない上に、開始セグメントの始点と終了セグメントの終点とを滑らかに接続できる。
【０００９】
請求項３に係る数値制御装置は、請求項２に記載の発明の構成に加え、前記判断手段が中間セグメントの距離が基準距離よりも長いと判断した場合、開始セグメントを確定する確定手段を備え、前記選択手段は、前記確定手段が開始セグメントを確定した場合、前記確定手段が確定した開始セグメントの次のセグメントから前記３つのセグメントを新たに選択し、前記再接続手段が開始セグメントの始点と終了セグメントの終点との間を二本のセグメントを用いて接続し直した場合、該二本のセグメントのうち前記移動経路において後ろ側のセグメントを新たな中間セグメントとして、３つのセグメントを選択し直すことを特徴とする。選択手段は複数のセグメントについて３つのセグメントを順次選択するので、セグメントを順次削除できる。故に移動経路中に微小セグメントは残らない。
【００１０】
本発明の請求項４に係る移動経路修正方法は、複数のセグメントで構成する工作機械のワークに対する工具の移動経路を修正する数値制御装置が行う移動経路修正方法において、前記移動経路を前工作機械に指令するＮＣプログラムに基づき、前記複数のセグメントのうち一つの注目セグメントの距離を算出する算出工程と、前記算出工程で算出した前記注目セグメントの距離が基準距離以下か否か判断する判断工程と、前記算出工程で算出した距離が基準距離以下と前記判断工程で判断した場合、注目セグメントの前のセグメントの始点と、注目セグメントの次のセグメントの終点との間を接続し直す再接続工程とを備え、前記算出工程は、前記ＮＣプログラムに基づき、前記セグメントに沿う前記工具の移動が、前記ワークを回転する回転軸のみの移動か、又は前記工具を前記ワークに対して直線的に移動する直線軸のみの移動かを判断する移動軸判断工程と、前記移動軸判断工程で移動は回転軸のみの移動と判断した場合、回転軸の回転中心から前記工具の先端までの距離である半径と、前記ＮＣプログラムから特定する回転軸の移動角度に基づき、前記セグメントの距離を算出する第一算出工程と、前記移動軸判断工程で移動は直線軸のみの移動と判断した場合、直線軸の移動距離に基づき、前記セグメントの距離を算出する第二算出工程とを備えたことを特徴とする。数値制御装置は上記移動経路修正方法を行うことにより、請求項１と同様の効果を得ることができる。
【図面の簡単な説明】
【００１１】
【図１】工作機械１の斜視図。
【図２】工作機械１と数値制御装置２０の電気的構成を示すブロック図。
【図３】セグメントバッファ２３１の概念図。
【図４】ＮＣプログラム１０の一部を示す図。
【図５】ワーク５における修正前の移動経路３０を示す図。
【図６】ワーク５における修正後の移動経路３１を示す図。
【図７】移動経路修正処理の流れ図。
【図８】図７の続きを示す流れ図。
【図９】セグメント長計算処理の流れ図。
【図１０】セグメントバッファ２３１内のセグメントＳｉの修正状態を示す図。
【発明を実施するための形態】
【００１２】
本発明の一実施形態を図面を参照して説明する。以下説明は、図中に矢印で示す上下、左右、前後を使用する。工作機械１の左右方向、前後方向、上下方向は、夫々Ｘ軸方向、Ｙ軸方向、Ｚ軸方向である。図２に示す数値制御装置２０は工作機械１を制御する。工作機械１は主軸（図示略）に装着した工具４を高速回転してワーク５に切削加工を施す機械である。
【００１３】
図１を参照し、工作機械１の構造を説明する。工作機械１は基台２、コラム３、主軸ヘッド７、主軸（図示略）、作業台１５、治具装置１６、工具交換装置５６、操作パネル（図示略）等を備える。基台２は工作機械１の土台である。コラム３は基台２の上部後方に立設する。コラム３は角柱状である。主軸ヘッド７はコラム３前面に昇降可能に設ける。主軸ヘッド７はＺ軸モータ５１の駆動でＺ軸方向に駆動する。Ｚ軸モータ５１はコラム３上部に設ける。主軸は主軸ヘッド７下部に設ける。主軸は工具４を装着する装着穴（図示略）を有し主軸モータ５２の駆動により回転する。主軸モータ５２は主軸ヘッド７上部に設ける。作業台１５は主軸ヘッド７下方に設ける。作業台１５は移動機構（図示略）にてＸ軸方向とＹ軸方向の二軸方向に移動可能である。移動機構の構造は限定しないが、例えば、スライドレールとボール螺子を用いた一般的なボール螺子機構を用いることができる。Ｘ軸モータ５３とＹ軸モータ５４（図２参照）は移動機構を駆動し、作業台１５をＸ軸方向とＹ軸方向に移動する。
【００１４】
治具装置１６は作業台１５上面に設ける。治具装置１６は固定台１７、右側支持部１８、左側支持部１９、チルトモータ５５を備える。固定台１７は作業台１５上面に固定する。右側支持部１８と左側支持部１９は固定台１７上面にＸ軸方向に互いに離間して夫々立設する。右側支持部１８と左側支持部１９はワーク５を両側から回転可能に支持する。チルトモータ５５は右側支持部１８に設け、右側支持部１８の保持部（図示略）を回転駆動する。保持部はワーク５を保持する。チルトモータ５５の回転軸はＸ軸方向に対して平行である。
【００１５】
操作パネル（図示略）は工作機械１を取り囲むカバー（図示略）壁面に設ける。操作パネルは表示部１１と入力部１２（図２参照）等を備える。表示部１１は例えば操作画面、設定画面、ＮＣプログラム等の各種画面を表示する表示機器である。入力部１２は例えば各種入力、指示、設定等を行う操作機器である。工具交換装置５６は工具マガジン５７を備える。工具マガジン５７は複数の工具を保持し、工具交換指令が指示する工具を工具交換位置に割り出す。工具交換指令はＮＣプログラムで指令する。工具交換位置は工具マガジン５７の最下部の位置である。工具交換装置５６は主軸に装着する工具４と工具交換位置にある工具とを入れ替え交換する。
【００１６】
図２を参照し、数値制御装置２０と工作機械１の電気的構成を説明する。数値制御装置２０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、不揮発性記憶装置２４、入出力部３５、駆動回路５１Ａ〜５６Ａ等を備える。ＣＰＵ２１は数値制御装置２０を統括制御する。ＲＯＭ２２は、メインプログラム、移動経路修正プログラム、セグメント長計算プログラム等を記憶する。メインプログラムは数値制御装置２０の動作を制御するものである。移動経路修正プログラムは後述する移動経路修正処理（図７，図８参照）を実行するものである。セグメント長計算プログラムは後述するセグメント長計算処理（図９参照）を実行するものである。
【００１７】
ＲＡＭ２３は各種処理実行中のデータを一時的に記憶する記憶領域に加え、セグメントバッファ２３１等を備える。セグメントバッファ２３１は、ＮＣプログラムから生成したセグメントデータを記憶する。セグメントデータは、工具４の移動経路を構成する各セグメントの制御データである。セグメントデータの詳細は後述する。不揮発性記憶装置２４はＮＣプログラム、各種パラメータ等を記憶する。ＮＣプログラムは各種制御指令を含む複数のブロックで構成し、工作機械１の軸移動、工具交換等を含む各種動作をブロック単位で制御するものである。ＣＰＵ２１は作業者が入力部１２で入力したＮＣプログラムを不揮発性記憶装置２４に記憶する。各種パラメータは、少なくとも、ワーク５の半径ｒ、後述する第１設定値と第２設定値等を含む。
【００１８】
尚、移動経路修正プログラム、セグメント長計算プログラム等の各種プログラムは、ＲＯＭ２２、又は不揮発性記憶装置２４に記憶してもよい。また、メモリカード等に各種プログラムを記憶しておき、数値制御装置２０に接続するカードスロット（図示略）からメモリカードに記憶する各種プログラムを読み出してもよい。また、ＮＣプログラムと各種パラメータについても、ＲＯＭ２２、不揮発性記憶装置２４、又はメモリカード等に記憶してもよい。
【００１９】
駆動回路５１ＡはＺ軸モータ５１とエンコーダ５１Ｂに接続する。駆動回路５２Ａは主軸モータ５２とエンコーダ５２Ｂに接続する。駆動回路５３ＡはＸ軸モータ５３とエンコーダ５３Ｂに接続する。駆動回路５４ＡはＹ軸モータ５４とエンコーダ５４Ｂに接続する。駆動回路５５Ａはチルトモータ５５とエンコーダ５５Ｂに接続する。駆動回路５６Ａは工具交換装置５６を駆動するモータとエンコーダ５６Ｂに接続する。駆動回路５１Ａ〜５６ＡはＣＰＵ２１から指令を受け、対応する各モータ５１〜５５、工具交換装置５６を駆動するモータに駆動電流を夫々出力する。駆動回路５１Ａ〜５６Ａはエンコーダ５１Ｂ〜５６Ｂからフィードバック信号を受け、位置と速度のフィードバック制御を行う。フィードバック信号はパルス信号である。入出力部３５は入力部１２と表示部１１に夫々接続する。
【００２０】
図３〜図５を参照し、工具４の移動経路とセグメントデータの関係を説明する。図４に例示するＮＣプログラム１０は、図５に示す円柱状のワーク５を加工する際の工具４の移動経路３０を指令する。図４に示す如く、Ｎ１、Ｎ２、Ｎ３・・・はブロック番号である。Ｇ１は切削指令である。Ｘは直線軸であるＸ軸の移動指令である。Ａは回転軸の移動指令であり、数値単位は「°」である。Ｎ１ブロックの「Ｎ１  Ｇ１  Ｘ２０．０００」は「工具を現在位置からＸ軸方向に２０．０００ｍｍ移動せよ。」の制御指令である。Ｎ２ブロックの「Ｎ２  Ｇ１  Ａ４．０００」は「工具を現在位置から４．０００°移動せよ。」の制御指令である。Ｎ３ブロックの「Ｎ３  Ｇ１  Ｘ２０．０００」は「工具を現在位置からＸ軸方向に２０．０００ｍｍ移動せよ。」の制御指令である。
【００２１】
図５に示す如く、修正前の移動経路３０は、点Ｐ１−点Ｐ２間のセグメントＳ１、点Ｐ２−点Ｐ３間のセグメントＳ２、点Ｐ３−点Ｐ４間のセグメントＳ３で構成し、略「Ｚ」字型の形状である。セグメントＳ１はＮＣプログラムのＮ１ブロックに対応する。セグメントＳ２はＮＣプログラムのＮ２ブロックに対応する。セグメントＳ３はＮＣプログラムのＮ３ブロックに対応する。本実施例は、セグメントＳ２は、セグメント長が後述する第１設定値以下の微小セグメントであることを想定する。
【００２２】
作業者が入力部１２で所定の操作を行うと、ＣＰＵ２１は、ＮＣプログラムを１ブロックずつ読み込んで、セグメントデータを生成する。セグメントデータは、各セグメントＳｉの軸移動量ΔＸ、ΔＹ、ΔＺ、Δθ、セグメント長、指令速度等を含む。該データは数値制御装置２０の内部処理形式に対応する。添え字ｉは経路開始からのセグメント番号を示す。ΔＸはＸ軸の移動量、ΔＹはＹ軸の移動量、ΔＺはＺ軸の移動量、Δθは治具装置１６の回転軸の移動量（移動角度）である。ＣＰＵ２１は、各セグメントＳｉのセグメントデータに基づき、ワーク５に対する工具４の速度パターンを作成する。ＣＰＵ２１は、作成した速度パターンから各軸毎の補間指令（単位時間あたりの移動量）を算出する。ＣＰＵ２１は、算出した各軸の補間指令を、工作機械１のＺ軸モータ５１、Ｘ軸モータ５３、Ｙ軸モータ５４、チルトモータ５５の夫々の駆動回路５１Ａ、５３Ａ、５４Ａ、５５Ａに夫々出力する。
【００２３】
ＣＰＵ２１は、ＮＣプログラムが指令する移動経路を修正する為に、生成したセグメントデータを、ＲＡＭ２３のセグメントバッファ２３１に指令順に記憶する。セグメントバッファ２３１において、ポインタＡは、ＮＣプログラムから読み取った新しいセグメントＳｉの位置を示す。ポインタＢは、経路が確定していない最初のセグメントＳｉの位置を示す。ＣＰＵ２１は、セグメントバッファ２３１に、３セグメント分のセグメントデータを蓄積するまで、ポインタＡをインクリメントし、且つポインタＡに次のセグメントデータを順次記憶する。図３に例示するセグメントバッファ２３１は、セグメントＳ１、Ｓ２、Ｓ３の指令順にセグメントデータを記憶する。本実施形態は、セグメントバッファ２３１に記憶する３つのセグメントＳｉについて、移動開始側から順に、第１セグメント、第２セグメント、第３セグメントと呼ぶ。ＣＰＵ２１は、後述する移動経路修正処理（図７，８参照）により、セグメントバッファ２３１に記憶するセグメントＳｉのセグメントデータについて、移動経路３０に微小セグメントが残らないように、順次修正する。
【００２４】
図４〜図１１を参照し、ＣＰＵ２１が実行する移動経路修正処理を説明する。本実施形態は、図５に示す移動経路３０を図６に示す移動経路３１に修正する場合を一例として説明する。作業者は入力部１２を用いて、図４に示すＮＣプログラム１０を選択する。ＣＰＵ２１はＲＯＭ２２から移動経路修正プログラムを読み出して本処理を実行する。以下、説明の便宜上、セグメントバッファ２３１に記憶するセグメントＳｉのセグメントデータを、単にセグメントＳｉと呼ぶことがある。
【００２５】
図７に示す如く、先ず、ＣＰＵ２１は、ＮＣプログラムを１ブロックずつ読み込み、次のセグメントＳｉが有るか否か判断する（Ｓ１）。ＣＰＵ２１は、Ｎ１ブロックからセグメントＳ１があると判断し（Ｓ１：ＹＥＳ）、ポインタＡの位置にセグメントＳ１をセットする（Ｓ３）。ＣＰＵ２１はセグメントＳ１のセグメント長を計算する（Ｓ３）。ＣＰＵ２１はセグメント長を計算する時、ＲＯＭ２２からセグメント長計算プログラムを読み出し、セグメント長計算処理（図９参照）を実行する。
【００２６】
図９を参照し、セグメント長計算処理を説明する。ＣＰＵ２１は、セグメントＳ１は直線軸のみの移動か否か判断する（Ｓ３１）。ＣＰＵ２１は、ＮＣプログラムのＮ１ブロックを参照する。Ｎ１ブロックはＸ軸のみの移動を指示する制御指令であるので（Ｓ３１：ＹＥＳ）、ＣＰＵ２１はセグメント長を、√（ΔＸｉ２＋ΔＹｉ２＋ΔＺｉ２）の計算式で計算する（Ｓ３３）。Ｎ１ブロックは現在位置からＸ軸方向に２０．０００ｍｍの移動であるから、ΔＸ＝２０．０００、ΔＹ＝０．０００、ΔＺ＝０．０００となる。故にセグメント長は、√（２０２＋０＋０）＝２０．０００ｍｍとなる。ＣＰＵ２１はセグメント長計算処理を終了し、図７の処理に戻る。
【００２７】
ＣＰＵ２１は、Ｓ３で求めたセグメントＳ１のセグメント長を、セグメントバッファ２３１に登録する（Ｓ４）。ＣＰＵ２１はポインタＢから３セグメント生成したか否か判断する（Ｓ５）。現時点でポインタＢから１セグメントしか生成していないので（Ｓ５：ＮＯ）、ＣＰＵ２１はポインタＡをインクリメントし（Ｓ２６）、Ｓ１に戻る。
【００２８】
次に、ＣＰＵ２１はＮＣプログラムのＮ２ブロックを読み込む。Ｎ２ブロックに次のセグメントＳ２があるので（Ｓ１：ＹＥＳ）、ＣＰＵ２１はポインタＡの位置にセグメントＳ２をセットする（Ｓ２）。ＣＰＵ２１はセグメントＳ２のセグメント長を計算する（Ｓ３）。ＣＰＵ２１はＲＯＭ２２からセグメント長計算プログラムを読み出し、セグメント長計算処理（図９参照）を実行する。
【００２９】
図９に示す如く、ＣＰＵ２１は、セグメントＳ２は直線軸のみの移動か否か判断する（Ｓ３１）。ＣＰＵ２１は、ＮＣプログラムのＮ２ブロックを参照する。Ｎ２ブロックは、直線軸のみの移動を指示する制御指令では無いので（Ｓ３１：ＮＯ）、ＣＰＵ２１は回転軸のみの移動か否か判断する（Ｓ３２）。Ｎ２ブロックの制御指令は回転軸のみの移動を指示する制御指令であるので（Ｓ３２：ＹＥＳ）、ＣＰＵ２１はセグメント長を、２πｒ×Δθ／３６０の計算式で計算する（Ｓ３４）。ｒは、治具装置１６の回転軸の回転中心から工具４先端までの距離である。ｒは不揮発性記憶装置２４にパラメータとして予め記憶する。尚、本実施形態において、治具装置１６は、治具装置１６の回転中心とワーク５の軸中心とが一致するように、ワーク５を保持する（図１参照）。故にｒはワーク５の半径と一致するので、ワーク５の半径を不揮発性記憶装置２４に予め記憶してもよい。本実施例ではｒ＝１０とする。Δθは、Ｎ２ブロックの制御指令（Ａ＝４．０００）から４°である。故にセグメント長は、２π×１０×４／３６０＝０．６９８ｍｍとなる。ＣＰＵ２１はセグメント長計算処理を終了し、図７の処理に戻る。
【００３０】
ＣＰＵ２１は、Ｓ３で求めたセグメントＳ２のセグメント長を、セグメントバッファ２３１に登録する（Ｓ４）。現時点でポインタＢから２セグメントしか生成していないので（Ｓ５：ＮＯ）、ＣＰＵ２１はポインタＡをインクリメントし（Ｓ２６）、Ｓ１に戻る。
【００３１】
次に、ＣＰＵ２１は、ＮＣプログラムのＮ３ブロックを読み込む。Ｎ３ブロックに次のセグメントＳ３があるので（Ｓ１：ＹＥＳ）、ＣＰＵ２１は、ポインタＡの位置にセグメントＳ３をセットする（Ｓ２）。ＣＰＵ２１はセグメントＳ３のセグメント長を計算する（Ｓ３）。ＣＰＵ２１はＲＯＭ２２からセグメント長計算プログラムを読み出し、セグメント長計算処理（図９参照）を実行する。
【００３２】
図９に示す如く、ＣＰＵ２１は、セグメントＳ３は直線軸のみの移動か否か判断する（Ｓ３１）。ＣＰＵ２１は、ＮＣプログラムのＮ３ブロックを参照する。Ｎ３ブロックはＸ軸のみの移動を指示する制御指令であるので（Ｓ３１：ＹＥＳ）、ＣＰＵ２１はセグメント長を、√（ΔＸｉ２＋ΔＹｉ２＋ΔＺｉ２）の計算式で計算する（Ｓ３３）。Ｎ３ブロックは現在位置からＸ軸方向に２０．０００ｍｍの移動であるから、ΔＸ＝２０．０００、ΔＹ＝０．０００、ΔＺ＝０．０００となる。故にセグメント長は、√（２０２＋０＋０）＝２０．０００ｍｍとなる。ＣＰＵ２１はセグメント長計算処理を終了し、図７の処理に戻る。
【００３３】
ＣＰＵ２１は、Ｓ３で求めたセグメントＳ３のセグメント長を、セグメントバッファ２３１に登録する（Ｓ４）。図１０の第１段階に示す如く、ポインタＢの位置にセグメントＳ１、ポインタＡの位置にセグメントＳ３が配置する。ポインタＢから３セグメント生成したので（Ｓ５：ＹＥＳ）、ＣＰＵ２１は、第２セグメントは直線軸と回転軸の両方の移動を含むか否か判断する（Ｓ６）。現時点の第２セグメントはセグメントＳ２である。ＮＣプログラム１０のＮ２ブロックの制御指令に基づき、セグメントＳ２は回転軸のみの移動であるので（Ｓ６：ＮＯ）、ＣＰＵ２１は、第２セグメント長は第１設定値以下か否か判断する（Ｓ７）。第１設定値は不揮発性記憶装置２４（図２参照）に予め記憶する。本実施例の第１設定値は１ｍｍである。上記の通り、セグメントＳ２のセグメント長は０．６９８ｍｍで第１設定値以下であるので（Ｓ７：ＹＥＳ）、ＣＰＵ２１は、第１セグメントと第２セグメントを夫々修正し、第３セグメントを削除する（Ｓ８）。
【００３４】
Ｓ８の処理におけるセグメントの具体的な修正方法を説明する。図６に示す如く、ＣＰＵ２１は、セグメントＳ３を削除し、セグメントＳ１の始点Ｐ１と、セグメントＳ３の終点Ｐ４とを、セグメントＳ２の中点Ｔ１で接続するように、セグメントＳ１とＳ２を修正する。修正後のセグメントＳ１はセグメントＳ１Ｒで示す。修正後のセグメントＳ２はセグメントＳ２Ｒで示す。セグメントＳ１Ｒの始点は点Ｐ１、終点は中点Ｔ１となる。セグメントＳ２Ｒの始点は中点Ｔ１、終点は点Ｐ４となる。修正前のセグメントＳ２の点Ｐ２から点Ｐ３までのΔθは４°であるから、点Ｐ２から中点Ｔ１までのΔθは２°である。従って、セグメントＳ１Ｒの始点Ｐ１は、Ｘ＝０．０００、Ａ＝０．０００となり、終点Ｔ１はＸ＝２０．０００、Ａ＝２．０００となる。セグメントＳ２Ｒの始点Ｔ１はＸ＝２０．０００、Ａ＝２．０００となり、終点Ｐ４はＸ＝４０．０００、Ａ＝４．０００となる。セグメントＳ１ＲとＳ２Ｒの夫々の移動経路は、直線軸と回転軸の両方を含む移動となる。図１０の第２段階に示す如く、現時点のセグメントバッファ２３１は、第１セグメントはセグメントＳ１Ｒ、第２セグメントはＳ２Ｒ、ポインタＡは空の状態である。
【００３５】
図８に示す如く、ＣＰＵ２１は第１セグメント長と第２セグメント長を夫々計算する（Ｓ９，Ｓ１０）。現時点の第１セグメントはセグメントＳ１Ｒ、現時点の第２セグメントはセグメントＳ２Ｒである。ＣＰＵ２１はセグメントＳ１ＲとＳ２Ｒのセグメント長を夫々計算する。ＣＰＵ２１はＲＯＭ２２からセグメント長計算プログラムを読み出し、セグメント長計算処理（図９参照）を実行する。
【００３６】
図９に示す如く、ＣＰＵ２１は、セグメントＳ１ＲとＳ２Ｒについて、直線軸のみの移動か否か、回転軸のみの移動か否か判断する（Ｓ３１，Ｓ３２）。上記の通り、セグメントＳ１ＲとＳ２Ｒは、何れも回転軸と直線軸の両方の移動を含む移動であるので（Ｓ３１：ＮＯ、Ｓ３２：ＮＯ、図６参照）、ＣＰＵ２１は、セグメントＳ１ＲとＳ２Ｒの夫々のセグメント長をＮＣプログラム１０から計算できない。故にＣＰＵ２１はセグメント長を計算することなく、セグメント長計算処理を終了し、図８の処理に戻る。
【００３７】
ＣＰＵ２１は、第１セグメントは直線軸と回転軸の両方の移動を含むか否か判断する（Ｓ１１）。上記の通り、第１セグメントであるセグメントＳ１Ｒは直線軸と回転軸の両方の移動を含むので（Ｓ１１：ＹＥＳ）、ＣＰＵ２１はセグメントＳ１Ｒを確定する（Ｓ１３）。ＣＰＵ２１はポインタＢをインクリメントし（Ｓ１４）、図７のＳ１に戻る。図１０の第３段階に示す如く、ポインタＢは第２セグメントのセグメントＳ２Ｒに位置する。
【００３８】
図７に示す如く、ＣＰＵ２１はＮＣプログラムから次のセグメントが有るか否か判断する（Ｓ１）。図４に示す如く、ＮＣプログラム１０には、次のセグメントは無いので（Ｓ１：ＮＯ）、ＣＰＵ２１はポインタＡの位置とポインタＢの位置が同じか否か判断する（Ｓ２１）。図１０の第３段階に示す如く、ポインタＡの位置とポインタＢの位置は異なるので（Ｓ２１：ＮＯ）、ＣＰＵ２１は、ポインタＢの位置のセグメントを確定し（Ｓ２２）、ポインタＢをインクリメントする（Ｓ２３）。セグメントＳ２Ｒも確定する。ＣＰＵ２１はＳ２１に戻り、再び、ポインタＡの位置とポインタＢの位置が同じか否か判断する（Ｓ２１）。図１０の第４段階に示す如く、ポインタＡの位置とポインタＢの位置は同一であるので（Ｓ２１：ＹＥＳ）、ＣＰＵ２１は本処理を終了する。このようにして、図５に示す移動経路３０は、図６に示す移動経路３１に修正される。
【００３９】
図６に示す移動経路３１には、途中に微小セグメントが存在しない。セグメントＳ１ＲとセグメントＳ２Ｒが中点Ｔ１で滑らかに接続することによって、移動経路３１は略直線的な経路として再生成される。故に数値制御装置２０は移動経路３１に従ってワーク５に対して工具４を移動することで、工具跡が残らない良好な加工表面を得ることができる。
【００４０】
なお、図７に示す移動経路修正処理のＳ６の処理において、ポインタＢから３セグメント生成した後、第２セグメントが直線軸と回転軸の両方の移動を含む場合（Ｓ６：ＹＥＳ）、ＣＰＵ２１は第２セグメント長を算出できない。ＣＰＵ２１は、第２セグメント長を算出できなければ、第２セグメント長が第１設定値以下か否かの判断ができない。故にＣＰＵ２１は経路を修正することなく、第１セグメントを確定し（Ｓ２４）、ポインタＢをインクリメントし（Ｓ２５）、ポインタＡをインクリメントする（Ｓ２６）。ＣＰＵ２１は、次のセグメントをポインタＡにセットし（Ｓ１〜Ｓ５）。セグメントバッファ２３１に３セグメント蓄積する。故にＣＰＵ２１は、引き続き、経路修正を継続できる。
【００４１】
また、図７に示す移動経路修正処理のＳ７の処理において、第２セグメント長が第１設定値より長かった場合（Ｓ７：ＮＯ）、第２セグメントは微小セグメントではない。故にＣＰＵ２１は経路を修正することなく、第１セグメントを確定し（Ｓ２４）、ポインタＢをインクリメントし（Ｓ２５）、ポインタＡをインクリメントする（Ｓ２６）。
【００４２】
また、図８に示す移動経路修正処理のＳ９，Ｓ１０の処理において、ＣＰＵ２１は、第１セグメント長と第２セグメント長を計算できた場合、計算して求めた第１セグメント長と第２セグメント長をセグメントバッファ２３１に登録し、Ｓ１１の処理に移行すればよい
【００４３】
また、図８に示す移動経路修正処理のＳ１１の処理において、修正後の第１セグメントが直線軸のみの移動又は回転軸のみの移動であった場合（Ｓ１１：ＮＯ）、ＣＰＵ２１は、修正後の第１セグメントが微小セグメントか否か判断する必要がある。修正後の第１セグメントが微小セグメントであれば、第１セグメントを確定できない。そこで、ＣＰＵ２１は、修正後の第１セグメントが第２設定値より長いか否か判断する（Ｓ１２）。第２設定値は、不揮発性記憶装置２４に予め記憶する。本実施例の第２設置値は第１設定値と同じ１ｍｍであるが、第１設置値と異なる値でもよい。修正後の第１セグメントが第２設定値より長い場合（Ｓ１２：ＹＥＳ）、ＣＰＵ２１は修正後の第１セグメントを確定する（Ｓ１３）。
【００４４】
一方、修正後の第１セグメントが第２設定値以下の場合（Ｓ１２：ＮＯ）、ＣＰＵ２１は第１セグメントを確定せずに、図７のＳ１に戻る。この時点のセグメントバッファ２３１は、図１０の第２段階である。ポインタＡの位置は空である。ＣＰＵ２１は、次のセグメントをポインタＡにセットし（Ｓ１〜Ｓ５）。セグメントバッファ２３１に再度３セグメント蓄積する。ＣＰＵ２１は、第２セグメントが第１設定値以下であれば（Ｓ７：ＹＥＳ）、第１セグメントと第２セグメントを再度修正する。ＣＰＵ２１は、修正後の第１セグメント長が第２設定値より長くなった時点で、第１セグメントの経路を確定する。これにより、ＣＰＵ２１は、微小セグメントが連続する移動経路でも、微小セグメントが残らないように移動経路を順次修正できる。
【００４５】
以上説明した如く、本実施形態の数値制御装置２０のＣＰＵ２１は、ＮＣプログラム１０を読み取ったブロック順に、軸の移動経路３０を構成するセグメントＳｉを生成し、セグメントバッファ２３１に順次記憶する。ＣＰＵ２１は、セグメントバッファ２３１に蓄積するセグメントＳｉについて、連続する３つのブロックを処理対象のセグメントとして、移動経路を順次修正する。ＣＰＵ２１は、最初に、セグメントＳ１、Ｓ２、Ｓ３を処理対象セグメントとする。ＣＰＵ２１は、セグメントＳ２のセグメント長を計算する。セグメント長の計算は、セグメントの移動が直線軸のみの移動か、又は回転軸のみの移動かで計算方法が異なる。ＣＰＵ２１はＮＣプログラム１０の対応するブロックの制御指令に基づき、直線軸のみの移動か回転軸のみの移動かを判断する。直線軸のみの移動である場合、ＣＰＵ２１はセグメントＳ２における各軸移動量ΔＸ、ΔＹ、ΔＺに基づき、セグメント長を算出する。回転軸のみの移動である場合、ＣＰＵ２１はセグメントＳ２における回転軸の移動角度Δθとワーク半径ｒに基づき、セグメント長を算出する。これにより、ＣＰＵ２１は移動軸が回転軸のみの移動であっても、セグメント長を計算できる。セグメント長が第１設定値より長い場合、ＣＰＵ２１はセグメント１の経路を確定する。セグメント長が第１設定値以下であった場合、ＣＰＵ２１は、セグメントＳ１とセグメントＳ２を修正し、セグメントＳ３を消去して、新たな経路を作成する。
【００４６】
具体的には、ＣＰＵ２１は、セグメントＳ１の始点Ｐ１とセグメントＳ２の中点Ｔ１とを、新たなセグメントＳ１Ｒで接続し、セグメントＳ２の中点Ｔ１とセグメントＳ３の終点Ｐ４とを、新たなセグメントＳ２Ｒで接続する。ＣＰＵ２１は、セグメントＳ１Ｒが第２設定値より長いと判断した場合、セグメントＳ１Ｒを確定する。ＣＰＵ２１は、セグメントＳ１Ｒが第２設定値以下と判断した場合、処理対象セグメントに次のセグメントを追加する。ＣＰＵ２１は、処理対象セグメントを追加した連続する３つのセグメントＳｉについて、再度、経路を修正し且つ第１セグメントを順次確定する。故に修正後の移動経路３１は微小セグメントを含まないので、工具４は急激に減速することが無い。故に数値制御装置２０は良好な加工面を得ることができる。更に、工具４の修正後の移動経路３１はＮＣプログラム１０で指令した移動経路３０から大きく逸脱しない。
【００４７】
以上説明において、セグメント長が本発明のセグメントの距離に相当し、第１設定値が本発明の基準距離に相当し、第１セグメントが本発明の開始セグメント、第２セグメントが本発明の中間セグメント、第３セグメントが本発明の終了セグメントに相当する。Ｓ３の処理を実行するＣＰＵ２１が本発明の算出手段に相当し、Ｓ７の処理を実行するＣＰＵ２１が本発明の判断手段に相当し、Ｓ８の処理を実行するＣＰＵ２１が本発明の再接続手段に相当し、Ｓ３１，Ｓ３２の処理を実行するＣＰＵ２１が本発明の移動軸判断手段に相当し、Ｓ３４の処理を実行するＣＰＵ２１が本発明の第一算出手段に相当し、Ｓ３３の処理を実行するＣＰＵ２１が本発明の第二算出手段に相当し、Ｓ１，Ｓ５の処理を実行するＣＰＵ２１が本発明の選択手段に相当し、Ｓ２４の処理を実行するＣＰＵ２１が本発明の確定手段に相当する。
【００４８】
なお、本発明の数値制御装置と移動経路修正方法は、上記実施形態に限らず、各種の変形が可能なことはいうまでもない。上記実施形態は、円柱形状のワーク５を加工する場合を一例として説明したが、ワーク形状は円筒、角柱、角筒、板状、球状の他、不規則な形状であってもよい。本実施形態の数値制御装置２０は様々なワーク形状について工具４の移動経路を適切に修正できる。
【００４９】
上記実施形態は、工具４を装着する主軸がＺ軸方向に移動可能であり、作業台１５がＸ軸とＹ軸方向の二軸に移動可能である工作機械１である。ワーク５に対してＸ軸、Ｙ軸、Ｚ軸方向に相対的に移動する工具４の移動機構の仕組みは上記実施形態に限定しない。例えば、主軸がＸ軸、Ｙ軸、Ｚ軸方向の三軸に移動可能であり、作業台を固定した工作機械であってもよい。また、上記実施形態の工作機械１は縦型の工作機械であるが、横型の工作機械であってもよい。また、工具交換装置５６は省略してもよい。
【００５０】
上記実施形態の図７のＳ８の処理において、第３セグメントを削除し、第１セグメントと第２セグメントを夫々修正したが、３本のセグメントのうち１本を削除し、残りの２本を修正すればよい。具体的には、３本のうち１本を削除し、残りの２本で、第１セグメントの始点と第３セグメントの終点とを、第２セグメントの中点で接続し直せばよい。
【００５１】
上記実施形態の第１設定値と第２設定値は何れも１ｍｍであるが、これ以外の数値に変更してもよい。第１設定値と第２設定値は互いに異なる数値であってもよい。
【００５２】
上記実施形態では、セグメントデータの修正をＲＡＭ２３のセグメントバッファ２３１において順次修正したが、他のメモリの記憶領域を用いて修正してもよい。
【符号の説明】
【００５３】
１      工作機械
４      工具
５      ワーク
１０      ＮＣプログラム
１６      治具装置
２０      数値制御装置
２１      ＣＰＵ
３０      移動経路
Ｓ１〜Ｓ３  セグメント
【図１】
2015161953.tif 000003
【図２】
2015161953.tif 000004
【図３】
2015161953.tif 000005
【図４】
2015161953.tif 000006
【図５】
2015161953.tif 000007
【図６】
2015161953.tif 000008
【図７】
2015161953.tif 000009
【図８】
2015161953.tif 000010
【図９】
2015161953.tif 000011
【図１０】
2015161953.tif 000012