(57)【要約】【課題】曲線軌跡の場合、内回り誤差を発生させることなく工具経路を平滑化でき、かつ、直線軌跡の場合、工具経路が当該直線軌跡に乗るように工具経路を平滑化する数値制御装置を得ること。【解決手段】参照点群抽出部１０２は、加工プログラム１０８から、補正の対象点の周辺の複数の指令点を、対象点の前に出力される指令点と対象点の後に出力される指令点とが点数または総距離が非対称になるように抽出し、抽出した複数の指令点を参照点群に設定する。基準直線作成部１０３は、参照点群のうちの最初に出力される指令点と最後に出力される指令点とを結ぶ基準直線を算出し、参照点から基準直線に下ろしたベクトルの平均である垂直成分平均ベクトルを算出する。対象点補正部１０４は、対象点から基準直線に下ろした垂線の足に垂直成分平均ベクトルを加えた位置に対象点の位置を補正する。【選択図】図１
2014167684.tif 000002
【特許請求の範囲】
【請求項１】
工具経路を規定する指令点群に基づいてサーボを動作させる数値制御装置において、
前記指令点群のうちの１つを補正対象点に指定する対象点指定部と、
前記指令点群から、前記補正対象点の周辺の複数の指令点を、前記補正対象点の前に出力される指令点と前記補正対象点の後に出力される指令点とが点数または総距離が非対称になるように抽出し、前記抽出した複数の指令点を参照点群に設定する抽出部と、
前記参照点群のうちの最初に出力される指令点と最後に出力される指令点とを結ぶ第１直線を算出し、前記参照点群に含まれる指令点から前記第１直線に下ろした垂線の足から当該指令点までの前記参照点群に含まれる指令点毎のベクトルを平均した平均ベクトルを算出し、前記補正対象点の位置を、前記補正対象点から前記第１直線に下ろした垂線の足に前記平均ベクトルを加えた位置に補正する補正部と、
を備えることを特徴とする数値制御装置。
【請求項２】
所定軌跡の入力を受け付けて、前記所定軌跡上の点と前記所定軌跡の両端を結ぶ第２直線との間の平均距離を算出し、前記第２直線との間の距離が前記平均距離に一致する前記所定軌跡上の点を特定し、前記特定した点から前記第２直線に下ろした垂線の足から前記所定軌跡の端点までの距離を算出し、当該算出した距離の前記両端間の直線距離に対する比率である比率設定値を算出する比率算出部をさらに備え、
前記抽出部は、前記複数の指令点に対する前記補正対象点の前または前記補正対象点の後に出力される指令点の点数または総距離の比率が前記比率設定値に一致するように、前記複数の指令点を抽出する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
比率設定値の入力を受け付ける比率入力部をさらに備え、
前記抽出部は、前記複数の指令点に対する前記補正対象点の前または前記補正対象点の後に出力される指令点の点数または総距離の比率が前記比率設定値に一致するように、前記複数の指令点を抽出する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項４】
角度閾値の入力を受け付ける角度閾値入力部をさらに備え、
前記対象点指定部は、
指令点と当該指令点の前後の指令点とを夫々結ぶ直線がなす角度である指令点角度を前記指令点群を構成する指令点毎に算出し、前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記対象点指定部が着目した第１指令点にかかる指令点角度と当該第１指令点の周辺の指令点にかかる指令点角度との差分が前記角度閾値を越えない場合、前記第１指令点を前記補正対象点に指定し、前記差分が前記角度閾値を越える場合、前記第１指令点を前記補正対象点に指定しない、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【請求項５】
往復変化量閾値の入力を受け付ける往復変化量閾値入力部をさらに備え、
前記対象点指定部は、
前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記対象点指定部が着目した第１指令点の周辺の指令点が所定の軸方向の往復動作を指令し、かつ、前記所定の軸方向の往復動作の移動量が前記往復変化量閾値を越えない、という条件を満たされるか否かを判定し、前記条件が満たされる場合、前記第１指令点を前記補正対象点に指定し、前記条件が満たされない場合、前記第１指令点を前記補正対象点に指定しない、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【請求項６】
最大抽出距離の入力を受け付ける最大抽出距離入力部をさらに備え、
前記対象点指定部は、
前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記対象点指定部が着目した第１指令点と当該第１指令点に隣接する指令点との距離が前記最大抽出距離を越えない場合、前記第１指令点を前記補正対象点に指定し、前記第１指令点と当該第１指令点に隣接する指令点との距離が前記最大抽出距離を越える場合、前記第１指令点を前記補正対象点に指定しない、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【請求項７】
最大抽出距離の入力を受け付ける最大抽出距離入力部をさらに備え、
前記抽出部は、
前記参照点群の総距離が前記最大抽出距離を越えないように前記複数の指令点を抽出する、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【請求項８】
最大抽出点数の入力を受け付ける最大抽出点数入力部をさらに備え、
前記抽出部は、
前記参照点群を構成する指令点の点数が前記最大抽出点数を越えないように参照点群を設定する、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【請求項９】
前記指令点群のうちの異なる種類の軌跡の境界に位置する指令点である境界点を特定する特定部をさらに備え、
前記対象点指定部は、
前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記対象点指定部が着目した第１指令点が前記境界点に該当しない場合、前記第１指令点を前記補正対象点に指定し、前記第１指令点が前記境界点に該当する場合、前記第１指令点を前記補正対象点に指定しない、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【請求項１０】
前記抽出部は、前記抽出した複数の指令点が前記境界点を含む場合、抽出範囲を狭めて抽出を再度実行し、前記抽出した複数の指令点が前記境界点を含まない場合、当該抽出した複数の指令点を前記参照点群に設定する、
ことを特徴とする請求項９に記載の数値制御装置。
【請求項１１】
角度閾値の入力を受け付ける角度閾値入力部をさらに備え、
前記特定部は、
指令点と当該指令点の前後の指令点とを夫々結ぶ直線がなす角度である指令点角度を前記指令点群を構成する指令点毎に算出し、前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記特定部が着目した第２指令点の直前に出力される１以上の指令点を含む第１指令点群を代表する第１指令点角度と、前記第２指令点の直後に出力される１以上の指令点を含む第２指令点群を代表する第２指令点角度とを算出し、前記第１指令点群に属する指令点にかかる指令点角度と前記第１指令点角度との差分が前記第１指令点群に属する何れの指令点においても前記角度閾値より小さく、かつ、前記第２指令点群に属する指令点にかかる指令点角度と前記第２指令点角度との差分が前記第２指令点群に属する何れの指令点においても前記角度閾値より小さく、かつ、前記第１指令点群または前記第２指令点群に属する指令点のうちの少なくとも１つの指令点にかかる指令点角度と前記第１指令点角度または前記第２指令点角度のうちの少なくとも１つとの差分が前記角度閾値よりも大きい、という条件を満たされるか否かを判定し、前記条件が満たされない場合、前記第２指令点は境界点ではないと判定し、前記条件が満たされる場合、前記第２指令点は境界点であると判定する、
ことを特徴とする請求項９に記載の数値制御装置。
【請求項１２】
角度閾値の入力を受け付ける角度閾値入力部をさらに備え、
前記特定部は、
指令点と当該指令点の前後の指令点とを夫々結ぶ直線がなす角度である指令点角度を前記指令点群を構成する指令点毎に算出し、前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記特定部が着目した第２指令点にかかる指令点角度と当該第２指令点の周辺の指令点にかかる指令点角度との差分が前記角度閾値を越えない場合、前記第２指令点は境界点ではないと判定し、前記差分が前記角度閾値を越える場合、前記第２指令点は境界点であると判定する、
ことを特徴とする請求項９に記載の数値制御装置。
【請求項１３】
角度閾値の入力を受け付ける角度閾値入力部をさらに備え、
前記特定部は、
指令点と当該指令点の前後の指令点とを夫々結ぶ直線がなす角度である指令点角度を前記指令点群を構成する指令点毎に算出し、前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記特定部が着目した第２指令点の直前に出力される１以上の指令点を含む第１指令点群を代表する第１指令点角度と、前記第２指令点の直後に出力される１以上の指令点を含む第２指令点群を代表する第２指令点角度とを算出し、前記第１指令点群に属する指令点にかかる指令点角度と前記第１指令点角度との差分が前記第１指令点群に属する何れの指令点においても前記角度閾値より小さく、かつ、前記第２指令点群に属する指令点にかかる指令点角度と前記第２指令点角度との差分が前記第２指令点群に属する何れの指令点においても前記角度閾値より小さく、かつ、前記第１指令点群または前記第２指令点群に属する指令点のうちの少なくとも１つの指令点にかかる指令点角度と前記第１指令点角度または前記第２指令点角度のうちの少なくとも１つとの差分が前記角度閾値よりも大きい、という条件を満たされるか否かを判定し、前記条件が満たされない場合、前記第２指令点は境界点ではないと判定し、前記条件が満たされる場合、前記第２指令点は境界点であると判定する、
ことを特徴とする請求項１０に記載の数値制御装置。
【請求項１４】
角度閾値の入力を受け付ける角度閾値入力部をさらに備え、
前記特定部は、
指令点と当該指令点の前後の指令点とを夫々結ぶ直線がなす角度である指令点角度を前記指令点群を構成する指令点毎に算出し、前記指令点群を構成する指令点のうちの任意の指令点に着目し、前記特定部が着目した第２指令点にかかる指令点角度と当該第２指令点の周辺の指令点にかかる指令点角度との差分が前記角度閾値を越えない場合、前記第２指令点は境界点ではないと判定し、前記差分が前記角度閾値を越える場合、前記第２指令点は境界点であると判定する、
ことを特徴とする請求項１０に記載の数値制御装置。
【請求項１５】
補正量最大値の入力を受け付ける補正量最大値入力部をさらに備え、
前記補正部は、前記補正対象点の補正量を前記補正量最大値でクランプする、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、加工プログラムに基づいて工作機械を動作させる数値制御装置に関する。
【背景技術】
【０００２】
工作機械を動作させる加工プログラムは、CAMを用いて作成されることが多い。加工プログラムには、工具先端部またはマシンの指令位置または姿勢が記述される。CAMで作成された指令位置・姿勢には、収束計算時の打切り誤差または出力桁数の制限による丸め誤差が含まれている場合がある。これらの誤差が原因となって、本来実現したい軌跡は滑らかに変化しているにも関わらず、出力された指令では軌跡の滑らかさが失われたり、特定の軸について微小な往復動作が発生したりする。
【０００３】
上述のような滑らかでない軌跡を含む指令は、機械動作時の振動、および、加工面上の傷の原因となるという問題がある。この問題を防止するため、従来、加工プログラムの指令を平滑化する機能が用いられる。
【０００４】
例えば、特許文献１には、NCデータ作成部と角度指令データ補間部からなり、角度指令補間部は、NCデータ作成部により作成されたNCデータのうち角度指令データを最小二乗近似法または移動平均などにより補間して、角度指令データの変化を滑らかにすることで、機械振動を抑制する技術が開示されている。
【０００５】
また、特許文献２には、分割点生成手段が加工プログラムの指令を元に分割点群を生成し、平滑点群生成手段が分割点群から平滑点群を生成し、復元ベクトル群生成手段が分割点群と平滑点群から復元ベクトル群を生成し、復元点生成手段が平滑点群と復元ベクトル群から復元点を生成する技術が開示されている。この技術によれば、微小線分で近似された曲面の加工面品位を向上させることができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−３５２８７６号公報
【特許文献２】特開２００１−１１７６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の技術によれば、最小二乗法が利用される場合、ユーザは基準となる軌跡として直線またはN次曲線などを指定する必要がある。また、加工プログラム中の場所ごとに望ましい軌跡が異なってくるため、ユーザは基準となる軌跡を加工プログラムの場所ごとに指定する作業が必要となる。つまり、ユーザにとって大きな手間がかかるという問題があった。また、移動平均が利用される場合、望ましい軌跡が直線である場合には平滑化後の位置が直線上となるが、望ましい軌跡が円弧などの曲線の場合、平滑化後の位置が望ましい軌跡である円弧軌跡から見て内側の位置になってしまい、平滑化することで新たな誤差を生じさせるという問題があった。
【０００８】
また、特許文献２に記載の技術によれば、円弧などの曲線軌跡を平滑化することに主眼が置かれ、平滑化された位置が円弧軌跡の内側となった点に対して復元ベクトルを用いた修正を加えている。しかしながら、特許文献２に記載の技術は直線軌跡を含む指令には適用できない場合がある。なぜなら、円弧などの曲線軌跡の場合、平滑化された点から平滑化前の位置に向かう復元ベクトルが内回り誤差の修正に有効に働くが、直線軌跡が出力桁数の制限で離散化され階段形状となった軌跡に適用された場合、復元ベクトルは平滑化されて直線に乗った位置から階段上の点へ向かうため、復元点は階段上の点よりさらに直線から離れた位置になる可能性がある。このため、特許文献２に記載の技術が適用される場合においても、加工プログラム中の円弧軌跡が指令されている箇所を指定する必要がある。
【０００９】
本発明は、上記に鑑みてなされたものであって、円弧などの曲線軌跡を意図して指令された場合であっても内回り誤差を発生させることなく工具経路を平滑化でき、かつ、直線を意図して指令された場合であっても工具経路が当該直線上に乗るように工具経路を平滑化できる、数値制御装置を得ることを目的としている。
【課題を解決するための手段】
【００１０】
上述した課題を解決し、目的を達成するために、本発明は、工具経路を規定する指令点群に基づいてサーボを動作させる数値制御装置において、前記指令点群のうちの１つを補正対象点に指定する対象点指定部と、前記指令点群から、前記補正対象点の周辺の複数の指令点を、前記補正対象点の前に出力される指令点と前記補正対象点の後に出力される指令点とが点数または総距離が非対称になるように抽出し、前記抽出した複数の指令点を参照点群に設定する抽出部と、前記参照点群のうちの最初に出力される指令点と最後に出力される指令点とを結ぶ第１直線を算出し、前記参照点群に含まれる指令点から前記第１直線に下ろした垂線の足から当該指令点までの前記参照点群に含まれる指令点毎のベクトルを平均した平均ベクトルを算出し、前記補正対象点の位置を、前記補正対象点から前記第１直線に下ろした垂線の足に前記平均ベクトルを加えた位置に補正する補正部と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、円弧などの曲線軌跡が意図されて生成された指令点群に基づいて工作機械を動作させる場合、数値制御装置は、対象点の前に出力される指令点と対象点の後に出力される指令点とが点数または総距離が対称になるように参照点群が抽出される場合に比べて、意図された軌跡に対象点が近くなるように補正することができる。また、直線が意図されて生成された指令点群に基づいて工作機械を動作させる場合、対象点の前に出力される指令点と対象点の後に出力される指令点とが点数または総距離が対称になるように参照点群が抽出されると同様に、工具経路が直線に乗るように工具経路を平滑化することができる。即ち、本発明によれば、円弧などの曲線軌跡を意図して指令された場合であっても内回り誤差を発生させることなく工具経路を平滑化でき、かつ、直線を意図して指令された場合であっても工具経路が当該直線上に乗るように工具経路を平滑化できる、という効果を奏する。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施の形態１の数値制御装置の構成を示す図である。
【図２】図２は、比率設定値を詳細に説明するための図である。
【図３】図３は、Ｘ／Ｗの具体的な数値を示す図である。
【図４】図４は、比較例が採用される場合と、実施の形態１が採用される場合と、における補正位置を説明する図である。
【図５】図５は、実施の形態１の数値制御装置の動作を説明するフローチャートである。
【図６】図６は、直線軌跡を表現する指令点群に関し、補正前の指令点位置と補正後の指令点位置とを示す図である。
【図７】図７は、円弧軌跡を表現する指令点群に関し、補正前の指令点位置と補正後の指令点位置とを示す図である。
【図８】図８は、実施の形態２による数値制御装置の構成を示す図である。
【図９】図９は、実施の形態２の数値制御装置の動作を説明するフローチャートである。
【図１０】図１０は、実施の形態３による数値制御装置の構成を示す図である。
【図１１】図１１は、実施の形態３の数値制御装置の動作を説明するフローチャートである。
【図１２】図１２は、実施の形態４による数値制御装置の構成を示す図である。
【図１３】図１３は、実施の形態４の数値制御装置の動作を説明するフローチャートである。
【図１４】図１４は、実施の形態５による数値制御装置の構成を示す図である。
【図１５】図１５は、実施の形態５の数値制御装置の動作を説明するフローチャートである。
【図１６】図１６は、実施の形態６による数値制御装置の構成を示す図である。
【図１７】図１７は、実施の形態６の数値制御装置の動作を説明するフローチャートである。
【図１８】図１８は、実施の形態１の数値制御装置のハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下に、本発明にかかる数値制御装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１４】
実施の形態１．
図１は本発明の実施の形態１による数値制御装置の構成を示す図である。数値制御装置１００は、対象点指定部１０１、参照点群抽出部１０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５、比率算出部１０６および最大抽出距離入力部１０７を備えている。数値制御装置１００は、加工プログラム１０８、所定軌跡１１０および最大抽出距離１１１を入力とし、サーボへの指令１０９を出力とする。
【００１５】
加工プログラム１０８は、工作機械の動作を決定するためのプログラムである。具体的には、加工プログラム１０８は、工具の位置・姿勢を指令点として表現する。例えば、加工プログラム１０８は、加工開始から加工終了までに経由する指令点の点列（指令点群）が記述されて構成される。加工プログラム１０８に記述される指令点群は、工具経路を規定する。サーボへの指令１０９は、工作機械を構成する各軸を動作させるための情報である。ここでは、サーボへの指令１０９は、工作機械の各軸がとるべき位置が記述されている。
【００１６】
加工プログラム１０８に記述される指令点は、打切り誤差または丸め誤差（以降、打切り誤差および丸め誤差を単に誤差という）が含まれている場合がある。数値制御装置１００は、加工プログラム１０８に記述されている夫々の指令点を平滑化処理により補正する。そして、数値制御装置１００は、補正後の指令点に基づいて、誤差による影響を除いたサーボへの指令１０９を生成することができる。
【００１７】
個々の指令点の平滑化処理においては、平滑化処理対象の指令点（対象点）の周辺の指令点が参照される。対象点の平滑化処理のために参照される指令点を、参照点という。最大抽出距離１１１は、参照点を取得する範囲を規定する情報である。その一例として、ここでは、最大抽出距離１１１は、参照点を取得する範囲の、対象点からの最大距離が記述される。
【００１８】
所定軌跡１１０は、平滑化処理において、直線以外に扱う軌跡情報を記述した情報である。所定軌跡１１０は、例えば半径と角度とが指定される円弧であってよい。ユーザは、対象点がどのような曲線に沿うように平滑化処理したいかに応じて所望の所定軌跡１１０を入力することができる。
【００１９】
比率算出部１０６は、入力された所定軌跡１１０に基づいて比率設定値を算出する。本発明の実施の形態によれば、平滑化処理に用いられる参照点群が、当該参照点群に含まれる指令点のうちの対象点の直前の指令点群（第１指令点群）と対象点の直後の対象点群（第２指令点群）とが、点数または総距離に関して非対称となるように取得される。なお、対象点の前の指令点とは、ここでは、対象点よりも前に指令される指令点をいい、対象点の後の指令点とは、対象点よりも後に指令される指令点をいう。比率設定値は、非対称の度合いを示す設定値である。ここでは一例として、比率設定値は、全参照点に対する第１指令点群の点数または総距離の比率の設定値を示すものとする。なお、比率設定値は、全参照点に対する第２指令点群の点数または総距離の比率の設定値を示すものとしてもよい。
【００２０】
比率算出部１０６は、具体的には、次のようにして比率設定値を算出する。比率算出部１０６は、入力された所定軌跡１１０を読み込み、読み込んだ所定軌跡１１０の両端を結んだ線分と所定軌跡１１０とで囲まれる区間の面積を前記線分の長さで割った値（即ち所定軌跡１１０上の点と所定軌跡１１０の両端を結んだ線分との間の平均距離）を算出する。そして、比率算出部１０６は、所定軌跡１１０上の点で、所定軌跡１１０の両端を結ぶ線分へ下ろした垂線の長さが平均距離と一致する点を特定し、特定した点から前記両端を結ぶ線分に下ろした垂線の足を求める。そして、比率算出部１０６は、所定軌跡１１０の両端間の直線距離に対する、所定軌跡１１０の一方の端点から前記垂線の足まで距離の比率を求める。そして、比率算出部１０６は、算出した比率を比率設定値として参照点群抽出部１０２に渡す。
【００２１】
なお、所定軌跡１１０上の点と所定軌跡１１０の両端を結んだ線分との間の平均距離は、ベクトル平均によって算出される。これにより、所定軌跡１１０が所定軌跡１１０の両端を結んだ線分と交差する場合でも、実施の形態１が適用可能となる。また、所定軌跡１１０が３次元の形状で定義される場合でも、実施の形態１が適用可能となる。
【００２２】
最大抽出距離入力部１０７は、入力された最大抽出距離１１１を読み込んで、対象点指定部１０１と参照点群抽出部１０２とに渡す。
【００２３】
対象点指定部１０１は、最大抽出距離入力部１０７から最大抽出距離１１１を受け取る。また、対象点指定部１０１は、入力された加工プログラム１０８を読み込み、指令点群のうちの任意の１つを抽出して対象点に設定する。ここでは、対象点指定部１０１は、一例として、加工プログラム１０８に記述された指令点を指令順に順次対象点に設定するものとする。対象点指定部１０１は、対象点に隣接する指令点（隣接点）と対象点との距離が最大抽出距離１１１を越える場合、対象点指定部１０１は、抽出した対象点を指令出力部１０５に渡す。隣接点と対象点との距離が最大抽出距離１１１を越えない場合、対象点指定部１０１は、抽出した対象点を参照点群抽出部１０２と対象点補正部１０４とに渡す。なお、ここでは一例として、対象点の直前に指令される指令点を隣接点とする。
【００２４】
参照点群抽出部１０２は、比率算出部１０６から比率設定値を受け取り、最大抽出距離入力部１０７から最大抽出距離１１１を受け取り、対象点指定部１０１から対象点を受け取る。そして、参照点群抽出部１０２は、加工プログラム１０８に記述された指令点を、対象点から前と後とに夫々辿り、夫々総距離を算出する。ここでは一例として、総距離とは、対象点間の距離の合計距離をいうものとする。そして、参照点群抽出部１０２は、対象点から前に辿っていった場合の合計距離（第１合計距離）および対象点から後に辿っていった場合の合計距離（第２合計距離）の比と、比率算出部１０６が算出した比率設定値と、最大抽出距離１１１と、に基づいて、参照点の抽出範囲を決定し、加工プログラム１０８から当該抽出範囲内の指令点を抽出して、抽出した指令点を対象点に対する参照点群に設定する。そして、参照点群抽出部１０２は、参照点群を基準直線作成部１０３および対象点補正部１０４に渡す。
【００２５】
ここでは、例えば、参照点群抽出部１０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率算出部１０６から受け取った比率設定値に一致し、かつ、第１合計距離および第２合計距離が何れも最大抽出距離１１１を越えず、かつ、第１合計距離または第２合計距離のうちの何れか一方が最大となる、という条件を満たすように参照点の抽出範囲を決定するものとする。
【００２６】
基準直線作成部１０３および対象点補正部１０４は、実施の形態１の補正部として機能する。
【００２７】
基準直線作成部１０３は、参照点群抽出部１０２から参照点群を受け取り、受け取った参照点群の両端（即ち最初に出力される参照点および最後の出力される参照点）を結ぶ直線を作成して基準直線（第１直線）とする。基準直線作成部１０３は作成した基準直線を対象点補正部１０４に渡す。
【００２８】
対象点補正部１０４は、対象点指定部１０１から対象点を受け取り、参照点群抽出部１０２から参照点群を受け取り、基準直線作成部１０３から基準直線を受け取る。ここで、参照点を終点とし、当該参照点から基準直線に下ろした垂線の足を始点とするベクトルを垂直成分評価ベクトルとよぶ。対象点補正部１０４は、参照点群の各点について垂直成分評価ベクトルを算出し、垂直成分評価ベクトルの各成分を全参照点について平均した垂直成分平均ベクトル（平均ベクトル）を求める。そして、対象点補正部１０４は、対象点から基準直線に下ろした垂線の足の位置に垂直成分平均ベクトルを加えた位置を、補正後の対象点位置とする。そして、対象点補正部１０４は、補正後の対象点位置を指令出力部１０５に渡す。
【００２９】
指令出力部１０５は、対象点指定部１０１または対象点補正部１０４から受け取った対象点位置に基づいてサーボへの指令１０９を算出し、算出したサーボへの指令１０９をサーボへ出力する。
【００３０】
図２は、比率設定値をさらに詳細に説明するための図である。ここでは、所定軌跡１１０として、半径Ｒ、角度θの円弧が入力されたものとしている。円弧の端点間を結んだ直線と円弧とで囲まれる部分の面積をＳ１、円弧の端点間の長さをＷ、円弧の端点と円弧の中心点の３点を頂点とする三角形の面積をＳ２、円弧の端点を結んだ直線から円弧の中心点までの距離をＨ、とおくと、下記に示す式１〜式４の関係が成立する。
Ｓ１＋Ｓ２＝π・Ｒ２・θ／（２・π）      （式１）
Ｗ／２＝Ｒ・ｓｉｎ（θ／２）      （式２）
Ｈ＝Ｒ・ｃｏｓ（θ／２）      （式３）
Ｓ２＝Ｗ・Ｈ／２      （式４）
【００３１】
式１〜式４の関係から、次の式５が成立する。
Ｓ１／Ｗ＝Ｒ・［｛（θ／２）／ｓｉｎ（θ／２）｝−ｃｏｓ（θ／２）］／２      （式５）
【００３２】
円弧の端点のうちの一つの点Ａから他方の端点である点Ｂに向かってＡＢ間を結ぶ直線（線分ＡＢ）上を距離Ｘだけ進んだ点を点Ｃとし、点Ｃを通り、かつ、線分ＡＢと垂直な直線が円弧と交わる点を点Ｄとし、ＣＤ間の距離をＹとした場合、比率算出部１０６が算出する比率設定値は、Ｓ１／Ｗ＝Ｙを満たすＸにおけるＸ／Ｗに等しい。
【００３３】
ここで、点Ｄと円弧の中心点とを結ぶ直線と線分ＡＢとの角度をΦとすると、次の式６および式７が成立する。
Ｙ＋Ｈ＝Ｒ・ｓｉｎΦ      （式６）
（Ｗ／２）−Ｘ＝Ｒ・ｃｏｓΦ      （式７）
【００３４】
Ｓ１／Ｗ＝ＹとなるＸにおいては、θ／２＝Θとおくと、Ｘ／Ｗは次式８のように表現できる。
Ｘ／Ｗ＝０．５−ｓｑｒｔ［１−｛０．５・（Θ／ｓｉｎΘ＋ｃｏｓΘ）｝２］／（２・ｓｉｎΘ）      （式８）
【００３５】
このように、所定軌跡１１０が円弧の場合には、Ｘ／Ｗの値は、Θ（＝θ／２）のみに依存することがわかる。
【００３６】
図３は、θ＝５〜１７５deg（ただし３６０deg＝２・πラジアン）におけるＸ／Ｗの具体的な数値を示す図である。図３に示すように、θ＝５〜１７５degの円弧軌跡が入力された場合には、比率設定値は、およそ２０％であることが分かる。
【００３７】
参照点が図２に示す円弧ＡＢ上に位置する場合、垂直成分評価ベクトルの大きさの平均値（即ち垂直成分平均ベクトルの大きさ）は、Ｓ１／Ｗにほぼ一致する。そして、比率算出部１０６は、Ｓ１／Ｗ＝Ｙを満たす点Ｘに対象点が位置し、かつ、参照点群が円弧ＡＢ上に位置するように、比率設定値を算出する。これにより、対象点位置が誤差に起因して円弧ＡＢ上からずれている場合であっても、円弧ＡＢ上に補正される。
【００３８】
図４は、第１合計距離と第２合計距離とが対称になるように抽出範囲が決定される場合（以下、比較例という）と、実施の形態１により抽出範囲が決定される場合と、の両方の場合における補正位置を説明する図である。本図において、黒丸は、補正前の指令点を示し、白抜き丸は、補正後の指令点を示す。また、黒矢印は垂直成分評価ベクトルを示す。また、白抜き矢印は、垂直成分平均ベクトルを示す。比較例によって抽出範囲が決定される場合、対象点（点Ｐ１）においては、点Ｐ１の近傍の円弧上の点と基準直線との距離が最も大きくなり、その距離は垂直成分平均ベクトルの大きさよりも大きい。したがって、補正後の対象点は、円弧上から乖離した場所に位置することとなる。これに対して、実施の形態１により抽出範囲が決定される場合、対象点（点Ｐ２）においては、点Ｐ２の近傍の円弧上の点と基準直線との距離が、垂直成分平均ベクトルの大きさと最も小さくなる。したがって、比較例によって抽出範囲が決定される場合よりも、実施の形態１により抽出範囲が決定される場合のほうが、対象点の位置を円弧上に精度よく補正することができる。
【００３９】
図５は、実施の形態１の数値制御装置１００の動作を説明するフローチャートである。
【００４０】
まず、比率算出部１０６が、入力された所定軌跡１１０を読み込む（Ｓ１０１）。そして、比率算出部１０６は、読み込んだ所定軌跡１１０に基づいて比率設定値を算出する（Ｓ１０２）。比率算出部１０６が算出した比率設定値は参照点群抽出部１０２に渡される。
【００４１】
続いて、最大抽出距離入力部１０７は、最大抽出距離１１１を読み込む（Ｓ１０３）。最大抽出距離入力部１０７が読み込んだ最大抽出距離１１１は、対象点指定部１０１と参照点群抽出部１０２に渡される。
【００４２】
続いて、対象点指定部１０１は、加工プログラム１０８中に未実行の移動指令があるか否かを確認する（Ｓ１０４）。未実行の移動指令が存在しない場合（Ｓ１０４、Ｎｏ）、平滑化処理が終了となる。未実行の移動指令が存在する場合（Ｓ１０４、Ｙｅｓ）、対象点指定部１０１は、未実行移動指令の最初の指令点を対象点とする（Ｓ１０５）。
【００４３】
続いて、対象点指定部１０１は、対象点と隣接する指令点（隣接点）との間の距離が最大抽出距離１１１を越えるか否かを判定する（Ｓ１０６）。ここで判定対象となる隣接点は、対象点よりも１つ前に指令される指令点をいう。隣接点と指令点との間の距離が最大抽出距離１１１を越えている場合（Ｓ１０６、Ｙｅｓ）、対象点指定部１０１は、当該対象点（対象点位置）を出力する。対象点指定部１０１が出力した対象点位置は、指令出力部１０５に渡される。
【００４４】
隣接点と指令点との間の距離が最大抽出距離１１１を越えない場合（Ｓ１０６、Ｎｏ）、参照点群抽出部１０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率算出部１０６から受け取った比率設定値に一致し、かつ、第１合計距離および第２合計距離が何れも最大抽出距離１１１を越えず、かつ、第１合計距離または第２合計距離のうちの何れか一方が最大となる、という条件を満たすように参照点の抽出範囲を決定する（Ｓ１０７）。そして、参照点群抽出部１０２は、加工プログラム１０８における前記決定した抽出範囲から参照点群を抽出する（Ｓ１０８）。参照点群抽出部１０２によって抽出された参照点群は、基準直線作成部１０３と対象点補正部１０４とに渡される。
【００４５】
続いて、基準直線作成部１０３は、参照点群の両端を結ぶ直線（基準直線）を作成する（Ｓ１０９）。作成された基準直線は対象点補正部１０４に渡される。
【００４６】
続いて、対象点補正部１０４は、基準直線と参照点群とに基づいて対象点位置を補正する（Ｓ１１０）。補正後の対象点位置は指令出力部１０５に渡される。
【００４７】
指令出力部１０５は、対象点指定部１０１から出力された対象点位置または対象点補正部１０４から出力された補正後の対象点位置に基づき、サーボへの指令１０９を生成し、出力する（Ｓ１１１）。
【００４８】
ステップＳ１１０の処理の後、対象点指定部１０１は、対象点を加工プログラム１０８に記述された未実行の移動指令から削除して（ステップＳ１１２）、ステップＳ１０４の処理を再び実行する。
【００４９】
CAMから指令点が出力される際に小数点以下の桁数が少ない場合（事例１）、前述のように、加工プログラム１０８に記載される指令点が滑らかでなくなる。事例１を想定した場合において、補正前の指令点位置と数値制御装置１００による補正後の指令点位置との差を説明する。
【００５０】
図６は、直線軌跡を表現する指令点群に関し、補正前の指令点位置と補正後の指令点位置とを示す図である。本図において、白抜き丸は、補正前の指令点位置、十字は、実施の形態１の数値制御装置１００による補正後の指令点位置、白抜き四角は、比較例によって補正された場合の補正後の指令点位置を示す。図示するように、工具経路が直線軌跡になることを意図して指令点が作成されている場合であっても、補正前の指令点は所定の刻み幅毎にステップ状に配置され、かつ、１ステップにつき複数個の指令点が配置されている。そして、数値制御装置１００および比較例のどちらであっても、指令点が直線状に位置するように補正されている。
【００５１】
図７は、円弧軌跡を表現する指令点群に関し、補正前の指令点位置と補正後の指令点位置とを示す図である。図示するように、比較例によれば、指令点が円弧軌跡よりも内側に位置している。即ち、内回り誤差が生じている。これに対し、実施の形態１の数値制御装置１００によれば、内回り誤差を生じることなく円弧上に補正されていることがわかる。
【００５２】
なお、以上の説明においては、参照点群抽出部１０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率算出部１０６から受け取った比率設定値に一致し、かつ、第１合計距離および第２合計距離が何れも最大抽出距離１１１を越えず、かつ、第１合計距離または第２合計距離のうちの何れか一方が最大となる、という条件を満たすように参照点の抽出範囲を決定するとして説明した。しかしながら、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値に一致する場合はまれである。したがって、参照点群抽出部１０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値にほぼ一致するように抽出範囲を決定するようにしてもよい。また、参照点群抽出部１０２は、抽出範囲の境界において、指令点を結ぶ直線上の点で第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値に一致するような内挿点を作成し、当該内挿点を参照点群に加えるようにしてもよい。
【００５３】
また、参照点群抽出部１０２は、参照点の総数に対する第１指令群または第２指令群の点数の比が比率設定値に一致するように抽出範囲を決定するようにしてもよい。これにより、参照点群抽出部１０２は、指令点間の距離を算出することなく抽出範囲を決定することができるので、計算の負荷を軽減することができる。
【００５４】
また、参照点群抽出部１０２は、参照点群の両端間の距離に対する、対象点から参照点群の両端を結ぶ直線に下ろした垂線の足から参照点群の端点までの距離の比率が比率設定値に一致するように抽出範囲を決定するようにしてもよい。これにより、参照点群の両端と対象点との間の位置関係が、図２に示した所定軌跡１１０の両端の点であるＡ点およびＢ点とＣ点との間の位置関係と対応するので、補正の精度を高めることが可能となる。
【００５５】
なお、以上の説明においては、指令点間の距離の合計距離を総距離と定義したが、総距離はこの定義だけに限定されない。例えば３以上の指令点において、最初に指令される指令点と最後に指令される指令点との間の直線距離を総距離としてもよい。
【００５６】
また、参照点群抽出部１０２は、基準直線作成部１０３および対象点補正部１０４は、次のように構成されてもよい。即ち、参照点群抽出部１０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値に一致するように第１の抽出範囲を決定し、第１合計距離および第２合計距離の和に対する第２合計距離の比率が比率設定値に一致するように第２の抽出範囲を決定し、夫々の抽出範囲から参照点群を抽出する。そして、基準直線作成部１０３および対象点補正部１０４は、協働して、夫々の参照点群に基づいて二通りの垂直成分平均ベクトルを算出し、対象点補正部１０４は、二通りの垂直成分平均ベクトルの平均値を用いて対象点を補正する。これにより、工具経路が往復する場合に、往路と復路とで工具が同一経路上を推移するように工作機械を制御することができるようになる。
【００５７】
また、指令出力部１０５は、対象点指定部１０１または対象点補正部１０４から渡された対象点間を補間するようにサーボへの指令１０９を生成するようにしてもよい。また、数値制御装置１００は、加工プログラム１０８に記述されている指令点群を補間して、補間後の指令点群を、対象点および参照点の抽出対象とするようにしてもよい。
【００５８】
また、本実施の形態の説明においては、並進移動指令の３次元空間上で平滑化を行っているが、回転軸を軸とした座標空間上で平滑化を行ったり、並進移動・回転移動が混在するN次元空間上で平滑化を行ったり、横軸を予想時刻として縦軸を工作機械の各軸とした座標空間で平滑化を行ったり、横軸を工具先端の移動量または並進・回転全軸の合計移動量として縦軸を工作機械の各軸とした座標空間で平滑化を行ったりする場合であっても本実施の形態は適用可能である。
【００５９】
以上述べたように、本発明の実施の形態１によれば、参照点群抽出部１０２は、加工プログラム１０８から、補正の対象点の周辺の複数の指令点を、対象点の前に出力される指令点と対象点の後に出力される指令点とが点数または総距離が非対称になるように抽出し、抽出した複数の指令点を参照点群に設定するように構成し、基準直線作成部１０３は、参照点群のうちの最初に出力される指令点と最後に出力される指令点とを結ぶ基準直線を算出し、参照点群に含まれる指令点から基準直線に下ろした垂直成分評価ベクトルの平均ベクトルである垂直成分平均ベクトルを算出し、対象点補正部１０４は、対象点から基準直線に下ろした垂線の足に垂直成分平均ベクトルを加えた位置を補正後の対象点とする。これにより、数値制御装置１００は、対象点の前に出力される指令点と対象点の後に出力される指令点とが点数または総距離が対称になるように参照点群が抽出される場合に比べて対象点が所定軌跡１１０に近くなるように補正することができるので、円弧などの曲線軌跡を意図して指令された場合であっても内回り誤差を発生させることなく工具経路を平滑化でき、かつ、直線を意図して指令された場合であっても工具経路が当該直線上に乗るように工具経路を平滑化できる。
【００６０】
また、比率算出部１０６は、所定軌跡１１０の入力を受け付けて、所定軌跡１１０上の点と所定軌跡１１０の両端を結ぶ直線と間の平均距離を算出し、当該直線との間の距離が平均距離に一致する所定軌跡１１０上の点を特定し、特定した点から所定軌跡１１０の両端を結ぶ直線に下ろした垂線の足から所定軌跡１１０の端点までの距離を算出し、当該算出した距離の所定軌跡１１０の両端間の直線距離に対する比率である比率設定値を算出する。そして、参照点群抽出部１０２は、参照点群に対する対象点の前または対象点の後に出力される指令点の点数または総距離の比率が比率設定値に一致するように参照点群を抽出する。これにより、数値制御装置１００は、対象点が所定軌跡１１０にさらに近くなるように補正することができる。
【００６１】
また、最大抽出距離入力部１０７は、最大抽出距離１１１の入力を受け付ける。対象点指定部１０１は、加工プログラム１０８に記述されている指令点のうちの、隣接する指令点との距離が最大抽出距離１１１を越えない指令点を対象点補正部１０４に渡し、隣接する指令点との距離が最大抽出距離１１１を越える指令点を指令出力部１０５に渡す。即ち、対象点指定部１０１は、隣接する指令点との距離が最大抽出距離１１１を越えない指令点を補正の対象に指定し、隣接する指令点との距離が最大抽出距離１１１を越える指令点を補正の対象に指定しない。これにより、最大抽出距離１１１の設定によって、微小線分による指令部分に対してのみ補正をかけることが可能となる。
【００６２】
また、参照点群抽出部１０２は、参照点群を構成する指令点の総距離が最大抽出距離１１１を越えないように参照点群を抽出する。これにより、ユーザは参照点の数を変化させることができるようになる。
【００６３】
実施の形態２．
図８は本発明の実施の形態２による数値制御装置の構成を示す図である。なお、実施の形態１の数値制御装置１００と同様の構成要素には、実施の形態１と同じ名称および符号を付して、重複する説明を省略する。
【００６４】
実施の形態２の数値制御装置２００は、対象点指定部２０１、参照点群抽出部２０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５および角度閾値入力部２０３を備えている。数値制御装置２００は、加工プログラム１０８、所定の比率設定値２０４および角度閾値２０５を入力とし、サーボへの指令１０９を出力とする。
【００６５】
実施の形態２によれば、対象点と対象点の１つ前に指令される指令点とを結ぶ直線と、対象点と対象点の１つ後に指令される指令点とを結ぶ直線と、がなす角度（以降、指令点角度という）から、対象点を補正対象とするか否かが判定される。誤差を含む指令点においては、指令点角度がその指令点の周辺の指令点の指令点角度から著しくかけ離れた値をとる場合がある。実施の形態２においては、周辺の指令点とは指令点角度が著しくかけ離れた指令点を検出して、検出した指令点を補正することができる。角度閾値２０５は、対象点を補正対象とするか否かの判定に用いられる閾値である。なお、指令点角度は、その指令点において工具の進行方向が変化しない場合における指令点角度を０degとするように表現されてもよいし、１８０degとするように表現されてもよい。
【００６６】
比率設定値２０４は、参照点群抽出部２０２が参照点群を抽出する際に利用される比率である。比率設定値２０４は、参照点群の抽出範囲が対象点を中心として非対称となるように設定されることが可能である。具体的には、比率設定値２０４は、例えば５０％以外の数値が設定可能である。
【００６７】
角度閾値入力部２０３は、入力された角度閾値２０５を読み込んで、対象点指定部２０１に渡す。
【００６８】
対象点指定部２０１は、角度閾値入力部２０３から角度閾値２０５を受け取る。そして、対象点指定部２０１は、加工プログラム１０８を読み込み、指令点のうち１つを抽出して対象点に設定する。そして、対象点指定部２０１は、対象点の指令点角度を算出する。また、対象点指定部２０１は、対象点の周辺の複数の指令点における指令点角度を夫々算出し、算出した指令点角度の平均値を求める。ここで、対象点の周辺の複数の指令点とは、一例として、対象点を含むものとしている。また、対象点の周辺の複数の指令点とは、一例として、対象点の直前の１以上の所定数の指令点と、対象点の直後の１以上の所定数の指令点とを含むものとしている。なお、対象点の周辺の指令点における指令点角度の平均値を、指令点角度周辺値と表現する。対象点指定部２０１は、対象点における指令点角度と指令点角度周辺値との差分が角度閾値２０５を越えない場合、指令出力部１０５に対象点を渡す。対象点における指令点角度と指令点角度周辺値との差分が角度閾値２０５を越える場合、対象点指定部２０１は、参照点群抽出部２０２と対象点補正部１０４とに対象点を渡す。
【００６９】
なお、本実施の形態２では、対象点指定部２０１は、指令点角度周辺値として対象点の周辺の複数の指令点での指令点角度の平均値を求めているが、指令点角度周辺値は、対象点の周辺の指令点における指令点角度を代表する値であれば平均値でなくても構わない。例えば、平均値の代わりに中間値または最頻値が採用可能である。
【００７０】
参照点群抽出部２０２は、入力された比率設定値２０４を受け取り、対象点指定部２０１から対象点を受け取る。そして、参照点群抽出部２０２は、加工プログラム１０８に記載された指令点について、第１合計距離と第２合計距離との比と、比率設定値２０４とに基づいて参照点の抽出範囲を決定し、加工プログラム１０８から当該抽出範囲内の指令点を抽出して、抽出した指令点を対象点に対する参照点群とする。そして、参照点群抽出部２０２は、参照点群を基準直線作成部１０３および対象点補正部１０４に渡す。
【００７１】
図９は、実施の形態２の数値制御装置２００の動作を説明するフローチャートである。
【００７２】
まず、角度閾値入力部２０３は、入力された角度閾値２０５を読み込む（Ｓ２０１）。角度閾値入力部２０３が読み込んだ角度閾値２０５は、対象点指定部２０１に渡される。
【００７３】
続いて、参照点群抽出部２０２は、入力された比率設定値２０４を読み込む（Ｓ２０２）。
【００７４】
続いて、対象点指定部２０１は、加工プログラム１０８中に未実行の移動指令があるか否かを判定する（Ｓ２０３）。未実行の移動指令が存在しない場合（Ｓ２０３、Ｎｏ）、平滑化処理が終了となる。未実行の移動指令が存在する場合（Ｓ２０３、Ｙｅｓ）、対象点指定部２０１は、未実行移動指令の最初の指令点を対象点とする（Ｓ２０４）。
【００７５】
続いて、対象点指定部２０１は、対象点における指令点角度を算出し（Ｓ２０５）、指令点角度周辺値を算出する（Ｓ２０６）。そして、対象点指定部２０１は、ステップＳ２０５の処理において算出した対象点における指令点角度と、ステップＳ２０６の処理において算出した指令点角度周辺値と、の差分が角度閾値２０５を越えるか否かを判定する（Ｓ２０７）。前記差分が角度閾値２０５を越えていない場合（Ｓ２０７、Ｎｏ）、対象点指定部２０１は、当該対象点（対象点位置）を出力する。対象点指定部２０１が出力した対象点位置は、指令出力部１０５に渡される。
【００７６】
前記差分が角度閾値２０５を越えている場合（Ｓ２０７、Ｙｅｓ）、参照点群抽出部２０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値２０４と一致するように抽出範囲を決定する（Ｓ２０８）。そして、参照点群抽出部２０２は、加工プログラム１０８における前記決定した抽出範囲から参照点群を抽出する（Ｓ２０９）。参照点群抽出部２０２によって抽出された参照点群は、基準直線作成部１０３と対象点補正部１０４とに渡される。
【００７７】
続いて、基準直線作成部１０３は、参照点群の両端を結ぶ直線（基準直線）を作成する（Ｓ２１０）。作成された基準直線は対象点補正部１０４に渡される。
【００７８】
続いて、対象点補正部１０４は、基準直線と参照点群とに基づいて対象点位置を補正する（Ｓ２１１）。補正後の対象点位置は指令出力部１０５に渡される。
【００７９】
指令出力部１０５は、対象点指定部２０１から出力された対象点位置または対象点補正部１０４から出力された補正後の対象点位置に基づき、サーボへの指令１０９を生成し、出力する（Ｓ２１２）。
【００８０】
ステップＳ２１２の処理の後、対象点指定部２０１は、対象点を加工プログラム１０８に記述された未実行の移動指令から削除して（ステップＳ２１３）、ステップＳ２０３の処理を再び実行する。
【００８１】
このように、本発明の実施の形態２によれば、角度閾値入力部２０３は、角度閾値２０５の入力を受け付ける。そして、対象点指定部２０１は、指令点角度と指令点角度周辺値との差分が角度閾値２０５を越える指令点を、補正の対象に指定する。誤差を含む指令点においては、その指令点における指令点角度が指令点角度周辺値よりも著しく大きくなる場合がある。これにより、誤差を含む可能性が高い指令点のみを補正の対象とすることが可能となる。また、誤差を含まない可能性が高い指令点については、指令された通りの動作を保証することができる。
【００８２】
また、参照点群抽出部２０２は、比率設定値２０４の入力を受け付ける比率入力部として機能する。これにより、ユーザは所望の比率設定値２０４を設定することが可能となる。また、ユーザは比率設定値２０４を所望のタイミングで所望の値に変更することが可能となる。
【００８３】
実施の形態３．
図１０は、本発明の実施の形態３による数値制御装置の構成を示す図である。なお、実施の形態１の数値制御装置１００または実施の形態２の数値制御装置２００と同様の構成要素には、実施の形態１または実施の形態２と同じ名称および符号を付して、重複する説明を省略する。
【００８４】
実施の形態３の数値制御装置３００は、対象点指定部３０１、参照点群抽出部２０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５および往復変化量閾値入力部３０２を備えている。数値制御装置３００は、加工プログラム１０８、所定の比率設定値２０４および往復変化量閾値３０３を入力とし、サーボへの指令１０９を出力とする。
【００８５】
前述のように、誤差が原因となって、本来実現したい軌跡は滑らかに変化しているにも関わらず、加工プログラム１０８上では、特定の軸について微小な往復動作を指令する場合がある。実施の形態３によれば、数値制御装置３００は、微小な往復動作を指令する箇所を特定して、特定した箇所について平滑化処理を施すことができる。往復変化量閾値３０３は、加工プログラム１０８中の指令点での所定の軸について、指令値間の移動量が微小な移動量であるかの判定に用いられる閾値である。往復変化量閾値３０３は、指令値間の移動量が微小な移動量と判定するための最大移動量を示している。
【００８６】
往復変化量閾値入力部３０２は、往復変化量閾値３０３を読み込んで、対象点指定部３０１に渡す。
【００８７】
対象点指定部３０１は、往復変化量閾値入力部３０２から往復変化量閾値３０３を受け取る。そして、対象点指定部３０１は、加工プログラム１０８を読み込み、指令点のうち１つを抽出して対象点とする。そして、対象点指定部３０１は、対象点を含む対象点の周辺の区間の指令点を参照し、参照した区間の指令点群が所定の軸方向の往復動作を指令しており、かつ、所定の軸方向の往復動作の移動量が往復変化量閾値３０３を越えない、という条件が満たされる場合に、参照点群抽出部２０２と対象点補正部１０４とに対象点を渡す。前記条件が満たされない場合、対象点指定部３０１は、指令出力部１０５に対象点を渡す。なお、対象点指定部３０１が参照する区間は、どのように決定されてもよい。
【００８８】
図１１は、実施の形態３の数値制御装置３００の動作を説明するフローチャートである。
【００８９】
まず、往復変化量閾値入力部３０２は、入力された往復変化量閾値３０３を読み込む（Ｓ３０１）。往復変化量閾値入力部３０２が読み込んだ往復変化量閾値３０３は、対象点指定部３０１に渡される。
【００９０】
続いて、参照点群抽出部２０２は、入力された比率設定値２０４を読み込む（Ｓ３０２）。
【００９１】
続いて、対象点指定部３０１は、加工プログラム１０８中に未実行の移動指令があるか否かを判定する（Ｓ３０３）。未実行の移動指令が存在しない場合（Ｓ３０３、Ｎｏ）、平滑化処理が終了となる。未実行の移動指令が存在する場合（Ｓ３０３、Ｙｅｓ）、対象点指定部３０１は、未実行移動指令の最初の指令点を対象点とする（Ｓ３０４）。
【００９２】
続いて、対象点指定部３０１は、対象点の周辺の指令点群が所定の軸方向の往復動作を指令し、かつ、所定の軸方向の往復動作の移動量が往復変化量閾値３０３を越えない、という条件が満たされるか否かを、対象点を含む対象点の周辺の区間に含まれる複数の指令点に基づいて判定する（Ｓ３０５）。ステップＳ３０５の判定条件が満たされない場合（Ｓ３０５、Ｎｏ）、対象点指定部３０１は、当該対象点（対象点位置）を出力する。対象点指定部３０１が出力した対象点位置は、指令出力部１０５に渡される。
【００９３】
ステップＳ３０５の判定条件が満たされる場合（Ｓ３０５、Ｙｅｓ）、参照点群抽出部２０２は、ステップＳ２０８およびステップＳ２０９と同等の処理をステップＳ３０６およびステップＳ３０７において実行することによって、加工プログラム１０８から参照点群を抽出する。参照点群抽出部２０２によって抽出された参照点群は、基準直線作成部１０３と対象点補正部１０４とに渡される。
【００９４】
続いて、基準直線作成部１０３は、参照点群の両端を結ぶ直線（基準直線）を作成する（Ｓ３０８）。作成された基準直線は対象点補正部１０４に渡される。
【００９５】
続いて、対象点補正部１０４は、基準直線と参照点群とに基づいて対象点位置を補正する（Ｓ３０９）。補正後の対象点位置は指令出力部１０５に渡される。
【００９６】
指令出力部１０５は、対象点指定部３０１から出力された対象点位置または対象点補正部１０４から出力された補正後の対象点位置に基づき、サーボへの指令１０９を生成し、出力する（Ｓ３１０）。
【００９７】
ステップＳ３１０の処理の後、対象点指定部３０１は、対象点を加工プログラム１０８に記述された未実行の移動指令から削除して（ステップＳ３１１）、ステップＳ３０３の処理を再び実行する。
【００９８】
このように、本発明の実施の形態３におれば、往復変化量閾値入力部３０２は、往復変化量閾値３０３の入力を受け付ける。そして、対象点指定部３０１は、周辺の指令点が所定の軸方向の往復動作を指令し、かつ、その往復動作の移動量が往復変化量閾値３０３を越えない、という条件が満たされる指令点を補正の対象に指定する。これにより、数値制御装置３００は、加工時の傷などの要因となりやすい微小な軸反転箇所のみを平滑化し、それ以外の指令点については指令通りの動作を保証することが出来る。
【００９９】
実施の形態４．
図１２は、本発明の実施の形態４による数値制御装置の構成を示す図である。なお、実施の形態１の数値制御装置１００または実施の形態２の数値制御装置２００と同様の構成要素には、実施の形態１または実施の形態２と同じ名称および符号を付して、重複する説明を省略する。
【０１００】
実施の形態４の数値制御装置４００は、対象点指定部４０１、参照点群抽出部４０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５および最大抽出点数入力部４０３を備えている。数値制御装置４００は、加工プログラム１０８、所定の比率設定値２０４および最大抽出点数４０４を入力とし、サーボへの指令１０９を出力とする。
【０１０１】
最大抽出点数４０４は、対象点の補正に用いられる参照点の点数に制限をかけるための値である。最大抽出点数４０４は、許容される最大点数を示している。
【０１０２】
対象点指定部４０１は、加工プログラム１０８を読み込み、指令点のうち１つを抽出して対象点とする。そして、対象点指定部４０１は、参照点群抽出部４０２と対象点補正部１０４とに対象点を渡す。
【０１０３】
最大抽出点数入力部４０３は、入力された最大抽出点数４０４を読み込んで、参照点群抽出部４０２に渡す。
【０１０４】
参照点群抽出部４０２は、入力された比率設定値２０４を読み込み、最大抽出点数入力部４０３から最大抽出点数４０４を受け取り、対象点指定部４０１から対象点を受け取る。そして、参照点群抽出部４０２は、加工プログラム１０８に記述された指令点を、対象点から前と後とに夫々辿り、第１合計距離および第２合計距離を算出する。そして、参照点群抽出部４０２は、第１合計距離および第２合計距離の比と、比率設定値２０４と、最大抽出点数４０４と、に基づいて、参照点の抽出範囲を決定し、加工プログラム１０８から当該抽出範囲内の指令点を抽出して、抽出した指令点を対象点に対する参照点群とする。ここで、参照点群抽出部４０２は、参照点の数が最大抽出点数４０４を越えないように抽出範囲を決定する。参照点群抽出部４０２は、参照点群を基準直線作成部１０３および対象点補正部１０４に渡す。
【０１０５】
図１３は、実施の形態４の数値制御装置４００の動作を説明するフローチャートである。
【０１０６】
まず、最大抽出点数入力部４０３は、入力された最大抽出点数４０４を読み込む（Ｓ４０１）。最大抽出点数入力部４０３が読み込んだ最大抽出点数４０４は、参照点群抽出部４０２に渡される。
【０１０７】
続いて、参照点群抽出部４０２は、入力された比率設定値２０４を読み込む（Ｓ４０２）。
【０１０８】
続いて、対象点指定部４０１は、加工プログラム１０８中に未実行の移動指令があるか否かを判定する（Ｓ４０３）。未実行の移動指令が存在しない場合（Ｓ４０３、Ｎｏ）、平滑化処理が終了となる。未実行の移動指令が存在する場合（Ｓ４０３、Ｙｅｓ）、対象点指定部４０１は、未実行の移動指令の最初の指令点を対象点とする（Ｓ４０４）。
【０１０９】
続いて、参照点群抽出部４０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値に一致し、かつ、第１合計距離および第２合計距離の和が最大抽出点数４０４を越えない範囲で最大となる、という条件を満たすように参照点の抽出範囲を決定する（Ｓ４０５）。そして、参照点群抽出部４０２は、加工プログラム１０８における前記決定した抽出範囲から参照点群を抽出する（Ｓ４０６）。参照点群抽出部４０２によって抽出された参照点群は、基準直線作成部１０３と対象点補正部１０４とに渡される。
【０１１０】
続いて、基準直線作成部１０３は、参照点群の両端を結ぶ直線（基準直線）を作成する（Ｓ４０７）。作成された基準直線は対象点補正部１０４に渡される。
【０１１１】
続いて、対象点補正部１０４は、基準直線と参照点群とに基づいて対象点位置を補正する（Ｓ４０８）。補正後の対象点位置は指令出力部１０５に渡される。
【０１１２】
指令出力部１０５は、対象点指定部４０１から出力された対象点位置または対象点補正部１０４から出力された補正後の対象点位置に基づき、サーボへの指令１０９を生成し、出力する（Ｓ４０９）。
【０１１３】
ステップＳ４０９の処理の後、対象点指定部４０１は、対象点を加工プログラム１０８に記述された未実行の移動指令から削除して（ステップＳ４１０）、ステップＳ４０３の処理を再び実行する。
【０１１４】
参照点群が軌跡の種類が異なる指令点を含む場合、対象点を所望の軌跡に乗せることができない場合がある。本発明の実施の形態４によれば、最大抽出点数入力部４０３は、最大抽出点数４０４の入力を受け付ける。そして、参照点群抽出部４０２は、参照点の点数が最大抽出点数４０４を越えないように参照点群を抽出する。これにより、数値制御装置４００は、参照点の点数を最大抽出点数４０４で制限するため、加工プログラム１０８中で軌跡の種類が変わる箇所を参照点群に含む可能性を低減することができる。
【０１１５】
実施の形態５．
図１４は、本発明の実施の形態５による数値制御装置の構成を示す図である。なお、実施の形態１の数値制御装置１００または実施の形態２の数値制御装置２００と同様の構成要素には、実施の形態１または実施の形態２と同じ名称および符号を付して、重複する説明を省略する。
【０１１６】
実施の形態５の数値制御装置５００は、対象点指定部５０１、参照点群抽出部５０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５、軌跡切替り判定部５０３、コーナー判定角度閾値入力部５０４および同一軌跡角度閾値入力部５０５を備えている。数値制御装置５００は、加工プログラム１０８、所定の比率設定値２０４、コーナー判定角度閾値５０６および同一軌跡角度閾値５０７を入力とし、サーボへの指令１０９を出力とする。
【０１１７】
実施の形態５によれば、軌跡切替り判定部５０３は、加工プログラム１０８に記述されている指令点群のうち、異なる種類の軌跡の境界に位置する指令点である境界点を特定する特定部として機能する。異なる種類の軌跡にまたがった指令点群を参照点群として平滑化処理が実行されると、その対象点は意図した位置に補正されない。これを防ぐために、実施の形態５によれば、境界点を含まないように参照点群を設定することができる。
【０１１８】
コーナー判定角度閾値５０６は、指令点がコーナーに該当するか否かの判定に用いられる閾値である。コーナーとは、境界点の１つであって、その境界点において工具の進行方向の変化が大きく変化するような境界点をいう。コーナー判定角度閾値５０６は、ある指令点における指令点角度とその指令点にかかる指令点角度周辺値との差分の閾値であって、その指令点がコーナーであると判定されるための最小の差分を示している。
【０１１９】
同一軌跡角度閾値５０７は、指定点がその指令点の前後で軌跡の種類が切り替わる境界点であるか否かの判定に用いられる閾値である。コーナー以外の境界点、即ち境界点において工具の進行方向の変化が大きく変化しないような境界点は、同一軌跡角度閾値５０７を用いた判定によって特定される。同一軌跡角度閾値５０７の詳細は後ほど明らかになる。
【０１２０】
コーナー判定角度閾値入力部５０４は、入力されたコーナー判定角度閾値５０６を読み込み、軌跡切替り判定部５０３に渡す。
【０１２１】
同一軌跡角度閾値入力部５０５は、入力された同一軌跡角度閾値５０７を読み込み、軌跡切替り判定部５０３に渡す。
【０１２２】
対象点指定部５０１は、加工プログラム１０８を読み込み、指令点のうち１つを抽出して対象点に設定する。そして、対象点指定部５０１は、対象点を軌跡切替り判定部５０３に渡し、軌跡切替り判定部５０３は渡された対象点が境界点に該当するか否かを判定する。対象点が境界点に該当すると判定された場合、対象点指定部５０１は、指令出力部１０５に対象点を渡す。対象点が境界点に該当しないと判定された場合、対象点指定部５０１は、参照点群抽出部５０２と対象点補正部１０４とに対象点を渡す。
【０１２３】
参照点群抽出部５０２は、入力された所定の比率設定値２０４を受け取り、対象点指定部５０１から対象点を受け取る。そして、参照点群抽出部５０２は、加工プログラム１０８に記載された指令点について、第１合計距離と第２合計距離との比と、比率設定値２０４とに基づいて参照点の抽出範囲を決定し、加工プログラム１０８から加工プログラム１０８から当該抽出範囲内の指令点を抽出して、抽出した指令点を対象点に対する参照点群とする。そして、参照点群抽出部５０２は、参照点群を軌跡切替り判定部５０３に渡す。軌跡切替り判定部５０３は、参照点群が境界点を含むか否かを判定する。参照点群が境界点を含むと判定された場合、参照点群抽出部５０２は、抽出範囲を狭めて参照点群を再び抽出し、抽出した参照点群を再び軌跡切替り判定部５０３に渡す。参照点群が境界点を含まないと判定された場合、参照点群抽出部５０２は、その参照点群を基準直線作成部１０３と対象点補正部１０４とに渡す。
【０１２４】
参照点群抽出部５０２が抽出範囲を狭めていった結果、参照点群が対象点のみで構成されるに至った場合、対象点前後には誤差の乗った指令が多く含まれていると考えられる。その場合には、できるだけ広い範囲の参照点群に基づいて平滑化を行うことが可能となるように、参照点群抽出部５０２は、抽出範囲を狭める前に最初に抽出した参照点群を基準直線作成部１０３と対象点補正部１０４とに渡す。
【０１２５】
なお、参照点群抽出部５０２が抽出範囲を狭めた結果、参照点群が対象点のみで構成されるに至った場合、平滑化を行うことで内回り誤差を発生させる可能性がある。したがって、参照点群抽出部５０２は、最初に抽出した参照点群を基準直線作成部１０３および対象点補正部１０４に渡す代わりに、対象点を指令出力部１０５に渡すようにしても良い。また、参照点群を構成する指令点の数が所定数を下回った場合に、参照点群抽出部５０２は、最初に抽出した参照点群を基準直線作成部１０３と対象点補正部１０４とに渡すか、または、対象点を指令出力部１０５に渡すようにしても良い。
【０１２６】
軌跡切替り判定部５０３は、第１判定および第２判定を実行することによって、加工プログラム１０８に記述されている指令点群のうちの境界点を特定する。
【０１２７】
第１判定は、次に説明する通りである。即ち、軌跡切替り判定部５０３は、判定の対象として着目した指令点について、加工プログラム１０８に記述されている指令点のうちの任意の指令点に着目して、指令点角度と指令点角度周辺値とを算出する。そして、軌跡切替り判定部５０３は、着目した指令点にかかる指令点角度と指令点角度周辺値との差分がコーナー判定角度閾値５０６より小さい場合、当該着目した指令点はコーナーに該当する境界点でないと判定する。また、軌跡切替り判定部５０３は、着目した指令点にかかる指令点角度と指令点角度周辺値との差分がコーナー判定角度閾値５０６より大きい場合、当該着目した指令点はコーナーに該当する境界点であると判定する。
【０１２８】
第２判定は、次に説明する通りである。即ち、軌跡切替り判定部５０３は、判定の対象として着目した指令点の直前に指令される所定の数の指令点（第１指令点群）および当該着目した指令点の直後に指令される所定の数の指令点（第２指令点群）について、夫々指令点角度を算出する。また、軌跡切替り判定部５０３は、第１指令点群の指令点角度を平均して指令点角度周辺値（第１指令点角度）を算出し、第２指令点群の指令点角度を平均して指令点角度周辺値（第２指令点角度）を算出する。軌跡切替り判定部５０３は、第１指令点群に属する指令点にかかる指令点角度と第１指令点角度との差分が第１指令点群に属する何れの指令点においても同一軌跡角度閾値５０７より小さく、かつ、第２指令点群に属する指令点にかかる指令点角度と第２指令点角度との差分が第２指令点群に属する何れの指令点においても同一軌跡角度閾値５０７より小さく、かつ、第１指令点群または第２指令点群に属する指令点のうちの少なくとも１つの指令点にかかる指令点角度と第１指令点角度または第２指令点角度のうちの少なくとも１つとの差分が同一軌跡角度閾値５０７よりも大きい、という条件を満たされるか否かを判定し、この条件が満たされない場合、着目した指令点は境界点ではないと判定し、この条件が満たされる場合、着目した指令点は境界点であると判定する。
【０１２９】
なお、第２判定は、次に説明するように実行されてもよい。即ち、軌跡切替り判定部５０３は、第１指令点角度と第２指令点角度との差分が同一軌跡角度閾値５０７よりも小さい場合、着目した指令点は境界点ではないと判定し、第１指令点角度と第２指令点角度との差分が同一軌跡角度閾値５０７よりも大きい場合、着目した指令点は境界点であると判定する。
【０１３０】
軌跡切替り判定部５０３は、第１判定または第２判定のうちの少なくとも１つにおいて、着目した指令点が（コーナーに該当するか否かにかかわらず）境界点である旨の判定結果を得た場合、着目した指令点は境界点であることを特定することができる。また、軌跡切替り判定部５０３は、第１判定において、着目した指令点がコーナーに該当する境界点ではないという判定結果を得るとともに、第２判定において、着目した指令点が境界点ではないという判定結果を得た場合には、着目した指令点は境界点ではないことを特定することができる。
【０１３１】
軌跡切替り判定部５０３は、コーナー判定角度閾値入力部５０４からコーナー判定角度閾値５０６を受け取り、同一軌跡角度閾値入力部５０５から同一軌跡角度閾値５０７を受け取る。また、軌跡切替り判定部５０３は、対象点指定部５０１から対象点を受け取るか、または、参照点群抽出部５０２から参照点群を受け取る。対象点指定部５０１から対象点を受け取った場合、軌跡切替り判定部５０３は、対象点が境界点であるか否かを判定して、判定結果を対象点指定部５０１に返す。参照点群抽出部５０２から参照点群を受け取った場合、軌跡切替り判定部５０３は、参照点群に境界点が含まれるか否かを判定して、判定結果を参照点群抽出部５０２に返す。
【０１３２】
なお、軌跡切替り判定部５０３が境界点を特定するタイミングは任意である。例えば、軌跡切替り判定部５０３は、加工プログラム１０８を読み込んで、加工プログラム１０８に記述されている全ての指令点に対して順次着目して夫々第１判定および第２判定を行って、加工プログラム１０８に記述されている指令点群のうちの境界点を特定して境界点群を記憶するようにしてもよい。その場合には、軌跡切替り判定部５０３は、対象点または参照点群を受け取ったとき、予め記憶しておいた境界点群を参照することによって、対象点が境界点であるか否か、または、参照点群に境界点が含まれるか否かを判定する。なお、ここでは、軌跡切替り判定部５０３は、対象点を受け取ったタイミング、対象点を判定の対象として着目して第１判定および第２判定を実行し、参照点群を受け取ったタイミングで参照点群を構成する夫々の参照点を判定の対象として順次着目して第１判定および第２判定を実行するものとする。
【０１３３】
なお、第１判定および第２判定のうちの何れにおいても、指令点とその前後の指令点とを結ぶ直線がなす角度を指令点角度としている。この場合、第１判定において、微小な誤差を含む指令点がコーナーであると判定されたり、第２判定において、誤差を含む指令点が連続する場合に、それらの指令点のうちの少なくとも１つが境界点であると判定されたりする可能性がある。この可能性を低減するために、指令点と指令点から所定の点数だけ離れた位置の指令点を結ぶ直線がなす角度を指令点角度として採用されるようにしても良い。
【０１３４】
図１５は、実施の形態５の数値制御装置５００の動作を説明するフローチャートである。
【０１３５】
まず、コーナー判定角度閾値入力部５０４は、入力されたコーナー判定角度閾値５０６を読み込む（Ｓ５０１）。コーナー判定角度閾値入力部５０４が読み込んだコーナー判定角度閾値５０６は、軌跡切替り判定部５０３に渡される。
【０１３６】
続いて、同一軌跡角度閾値入力部５０５は、入力された同一軌跡角度閾値５０７を読み込む（Ｓ５０２）。同一軌跡角度閾値入力部５０５が読み込んだ同一軌跡角度閾値５０７は、軌跡切替り判定部５０３に渡される。
【０１３７】
続いて、参照点群抽出部５０２は、入力された比率設定値２０４を読み込む（Ｓ５０３）。
【０１３８】
続いて、対象点指定部５０１は、加工プログラム１０８中に未実行の移動指令があるか否かを判定する（Ｓ５０４）。未実行の移動指令が存在しない場合（Ｓ５０４、Ｎｏ）、平滑化処理が終了となる。未実行の移動指令が存在する場合（Ｓ５０４、Ｙｅｓ）、対象点指定部５０１は、未実行移動指令の最初の指令点を対象点とする（Ｓ５０５）。
【０１３９】
続いて、対象点指定部５０１は、対象点を軌跡切替り判定部５０３に渡し、軌跡切替り判定部５０３は、第１判定および第２判定を実行して、対象点が境界点に該当するか否かを判定する（Ｓ５０６）。ステップＳ５０６の判定処理による判定結果は対象点指定部５０１に渡される。対象点が境界点に該当すると判定された場合（Ｓ５０６、Ｙｅｓ）、対象点指定部５０１から指令出力部１０５に対象点（対象点位置）が渡される。
【０１４０】
対象点が境界点に該当しないと判定された場合（Ｓ５０６、Ｎｏ）、対象点指定部５０１から参照点群抽出部５０２および対象点補正部１０４に対象点（対象点位置）が渡される。参照点群抽出部５０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値２０４と一致するように抽出範囲を決定する（Ｓ５０７）。そして、参照点群抽出部５０２は、加工プログラム１０８における前記決定した抽出範囲から参照点群を抽出する（Ｓ５０８）。
【０１４１】
続いて、参照点群抽出部５０２は、抽出した参照点群を軌跡切替り判定部５０３に渡し、軌跡切替り判定部５０３は、渡された参照点群を構成する個々の指令値に順次着目して着目して第１処理および第２処理を実行することによって、参照点群が境界点を含むか否かを判定する（Ｓ５０９）。ステップＳ５０９の判定処理による判定結果は参照点群抽出部５０２に渡される。
【０１４２】
参照点群が境界点を含むと判定された場合（Ｓ５０９、Ｙｅｓ）、参照点群抽出部５０２は、抽出範囲をより小さく設定し直して（Ｓ５１０）、ステップＳ５０８の処理を再び実行する。なお、ステップＳ５１０の処理において、参照点群抽出部５０２は、例えば参照点群を構成する指令値の数を減少させることで抽出範囲を狭めることができる。また、ステップＳ５１０の処理の際には、参照点群抽出部５０２は、第１合計距離および第２合計距離の和に対する第１合計距離の比率が比率設定値２０４と一致するという条件を満たしたまま抽出範囲を狭めることとする。
【０１４３】
参照点群が境界点を含まないと判定された場合（Ｓ５０９、Ｎｏ）、参照点群抽出部５０２は、参照点群を基準直線作成部１０３と対象点補正部１０４に参照点群を渡し、基準直線作成部１０３は、参照点群の両端を結ぶ直線（基準直線）を作成する（Ｓ５１１）。作成された基準直線は対象点補正部１０４に渡される。
【０１４４】
続いて、対象点補正部１０４は、基準直線と参照点群とに基づいて対象点位置を補正する（Ｓ５１２）。補正後の対象点位置は指令出力部１０５に渡される。
【０１４５】
指令出力部１０５は、対象点指定部５０１から出力された対象点位置または対象点補正部１０４から出力された補正後の対象点位置に基づき、サーボへの指令１０９を生成し、出力する（Ｓ５１３）。
【０１４６】
ステップＳ５１３の処理の後、対象点指定部５０１は、対象点を加工プログラム１０８に記述された未実行の移動指令から削除して（ステップＳ５１４）、ステップＳ５０４の処理を再び実行する。
【０１４７】
このように、本発明の実施の形態５によれば、軌跡切替り判定部５０３は、境界点を特定することができる。そして、対象点指定部５０１は、対象点が境界点に該当する場合には、その対象点を補正の対象から外す。これにより、数値制御装置５００は、複数の種類の軌跡が含まれる参照点群に基づいて平滑化処理が行われる可能性を低減することができるようになる。
【０１４８】
また、参照点群抽出部５０２は、抽出範囲に境界点が含まれている場合には、抽出範囲を狭めて参照点群を抽出する。これにより、数値制御装置５００は、複数の種類の軌跡が含まれる参照点群に基づいて平滑化処理が行われる可能性を低減することができるようになる。
【０１４９】
実施の形態６．
図１６は、本発明の実施の形態６による数値制御装置の構成を示す図である。なお、実施の形態１の数値制御装置１００、実施の形態２の数値制御装置２００または実施の形態４の数値制御装置４００と同様の構成要素には、実施の形態１、実施の形態２または実施の形態４と同じ名称および符号を付して、重複する説明を省略する。
【０１５０】
実施の形態６の数値制御装置６００は、対象点指定部４０１、参照点群抽出部２０２、基準直線作成部１０３、対象点補正部６０１、指令出力部１０５および補正量最大値入力部６０２を備えている。数値制御装置６００は、加工プログラム１０８、比率設定値２０４および補正量最大値６０３を入力とし、サーボへの指令１０９を出力とする。
【０１５１】
補正量最大値６０３は、対象点に加える補正量を制限するための値である。補正量最大値６０３は、補正量の最大距離（最大量）を示している。
【０１５２】
補正量最大値入力部６０２は、入力された補正量最大値６０３を読み込み、対象点補正部６０１に渡す。
【０１５３】
対象点補正部６０１は、補正量最大値入力部６０２から補正量最大値６０３を受け取り、対象点指定部４０１から対象点を受け取り、参照点群抽出部２０２から参照点群を受け取り、基準直線作成部１０３から基準直線を受け取る。そして、対象点補正部６０１は、参照点群を構成する各指令点について垂直成分評価ベクトルを求め、求めた垂直成分評価ベクトルを平均して垂直成分平均ベクトルを求める。そして、対象点補正部６０１は、対象点の補正後候補点の位置として、対象点から基準直線に下ろした垂線の足の位置に垂直成分平均ベクトルを加えた位置を求める。そして、対象点補正部６０１は、補正後候補点位置と対象点位置の距離（補正量）を求め、求めた補正量と補正量最大値６０３とを比較する。補正量が補正量最大値６０３を越えない場合には、対象点補正部６０１は、補正後候補点位置を対象点位置として指令出力部１０５に渡す。補正量が補正量最大値６０３を越える場合には、対象点補正部６０１は、対象点位置から補正後候補点位置に向かい、かつ、大きさが補正量最大値６０３である補正ベクトルを求める。対象点補正部６０１は、対象点位置に補正ベクトルを加えた位置を新たな対象点位置として、指令出力部１０５に渡す。即ち、対象点補正部６０１は、対象点の補正量を補正量最大値６０３でクランプすることができる。
【０１５４】
図１７は、実施の形態６の数値制御装置６００の動作を説明するフローチャートである。
【０１５５】
まず、補正量最大値入力部６０２は、入力された補正量最大値６０３を読み込む（Ｓ６０１）。補正量最大値入力部６０２が読み込んだ補正量最大値６０３は対象点補正部６０１に渡される。
【０１５６】
続いて、参照点群抽出部２０２は、入力された比率設定値２０４を読み込む（Ｓ６０２）。
【０１５７】
続いて、対象点指定部４０１は、加工プログラム１０８中に未実行の移動指令があるか否かを判定する（Ｓ６０３）。未実行の移動指令が存在しない場合（Ｓ６０３、Ｎｏ）、平滑化処理が終了となる。未実行の移動指令が存在する場合（Ｓ６０３、Ｙｅｓ）、対象点指定部４０１は、未実行の移動指令の最初の指令点を対象点とする（Ｓ６０４）。対象点は、参照点群抽出部２０２および対象点補正部６０１に渡される。
【０１５８】
続いて、参照点群抽出部２０２は、ステップＳ２０８およびステップＳ２０９と同等の処理をステップＳ６０５およびステップＳ６０６において実行することによって、加工プログラム１０８から参照点群を抽出する。参照点群抽出部２０２によって抽出された参照点群は、基準直線作成部１０３と対象点補正部６０１とに渡される。
【０１５９】
続いて、基準直線作成部１０３は、参照点群の両端を結ぶ直線（基準直線）を作成する（Ｓ６０７）。作成された基準直線は対象点補正部６０１に渡される。
【０１６０】
続いて、対象点補正部６０１は、基準直線と参照点群とに基づいて対象点位置を補正し、補正後候補点を求める（Ｓ６０８）。そして、対象点補正部６０１は、補正後候補点に補正する場合の補正量が補正量最大値６０３を越えるか否かを判定する（Ｓ６０９）。補正量が補正量最大値６０３を越えない場合（Ｓ６０９、Ｎｏ）、対象点補正部６０１は、補正後候補点の位置を補正後の対象点位置に設定し、指令出力部１０５に渡す（Ｓ６１０）。補正量が補正量最大値６０３を越える場合（Ｓ６０９、Ｙｅｓ）、対象点補正部６０１は、対象点から補正後候補点へ向かい、かつ、大きさが補正量最大値６０３と等しいベクトルを対象点に加えた位置を、補正後の対象点位置に設定し、指令出力部１０５に渡す（Ｓ６１１）。
【０１６１】
指令出力部１０５は、対象点指定部４０１から出力された対象点位置または対象点補正部６０１から出力された補正後の対象点位置に基づき、サーボへの指令１０９を生成し、出力する（Ｓ６１２）。
【０１６２】
ステップＳ６１２の処理の後、対象点指定部２０１は、対象点を加工プログラム１０８に記述された未実行の移動指令から削除して（ステップＳ６１３）、ステップＳ６０３の処理を再び実行する。
【０１６３】
このように、本発明の実施の形態６によれば、補正量最大値入力部６０２は、補正量最大値６０３の入力を受け付ける。対象点補正部６０１は、対象点の補正量を補正量最大値６０３でクランプする。数値制御装置６００は元の指令位置からの補正量を制限するので、ユーザは、補正後の指令によって実現される寸法精度と補正前の指令によって実現される寸法精度の差に制限を設けることが出来るようになる。
【０１６４】
なお、以上に述べた実施の形態１〜実施の形態６の数値制御装置（数値制御装置１００〜数値制御装置６００）は、例えばコンピュータが数値制御プログラムを実行することで実現される。図１８は、一例として、実施の形態１の数値制御装置１００がコンピュータによって実現される場合の数値制御装置１００のハードウェア構成例を示す図である。
【０１６５】
図１８に示すように、数値制御装置１００は、ＣＰＵ（Central  Processing  Unit）１、ＲＡＭ（Random  Access  Memory）２、ＲＯＭ（Read  Only  Memory）３、入力装置４、出力装置５およびＩ／Ｏ６を備える。ＣＰＵ１、ＲＡＭ２、ＲＯＭ３、入力装置４、出力装置５およびＩ／Ｏ６は、バスラインを介して夫々接続されている。
【０１６６】
ＣＰＵ１は、コンピュータプログラムである数値制御プログラム３１を実行する。出力装置５は、液晶モニタなどの表示装置である。出力装置５は、ＣＰＵ１からの指示に基づいて、操作画面などのユーザに対する出力情報を表示する。入力装置４は、マウスやキーボードを備えて構成される。入力装置４は、ユーザからの数値制御装置１００に対する操作が入力される。入力装置４へ入力された操作情報は、ＣＰＵ１へ送られる。Ｉ／Ｏ６は、サーボが接続されるインタフェース装置である。
【０１６７】
ＲＯＭ３は、数値制御プログラム３１を予め記憶する記録媒体である。数値制御プログラム３１は、ＲＯＭ３から読み出され、バスラインを介してＲＡＭ２へロードされる。ＣＰＵ１は、ＲＡＭ２内にロードされた数値制御プログラム３１を実行する。具体的には、数値制御プログラム３１は、構成要素（対象点指定部１０１、参照点群抽出部１０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５、比率算出部１０６および最大抽出距離入力部１０７）を夫々実現するプログラムモジュールを含んでいる。数値制御装置１００では、ユーザによる入力装置４からの指示入力に従って、ＣＰＵ１が、ＲＯＭ３内から数値制御プログラム３１を読み出してＲＡＭ２内のプログラム格納領域に夫々のプログラムモジュールを展開する。ＣＰＵ１は、ＲＡＭ２に展開されたプログラムモジュールを実行することによって、対応する構成要素として機能することができる。
【０１６８】
また、ＲＯＭ３は、加工プログラム１０８、所定軌跡１１０および最大抽出距離１１１を予め記憶している。ＣＰＵ１は、ＲＯＭ３に予め記憶されている加工プログラム１０８、所定軌跡１１０および最大抽出距離１１１を読み込むことができる。なお、加工プログラム１０８、所定軌跡１１０および最大抽出距離１１１のうちの一部または全部は図示しない外部記憶装置を介して入力されるようにしてもよい。また、所定軌跡１１０および最大抽出距離１１１のうちの一方または両方は、ユーザが入力装置４を操作することによって入力され、ＣＰＵ１に送られるようにしてもよい。参照点群および対象点など、構成要素間で渡される情報は、中間データとしてＲＡＭ２に一時記憶される。即ち、構成要素間のデータの授受は、ＲＡＭ２を介して実現される。ＣＰＵ１は、生成したサーボへの指令１０９をＩ／Ｏ６を介してサーボに出力する。
【０１６９】
なお、数値制御プログラム３１を、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることによりＲＡＭ２に展開されるように構成してもよい。また、数値制御プログラム３１をインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、数値制御プログラム３１を予め記憶する記録媒体は、一時的でない有形の記録媒体であれば、ＲＯＭ３以外の記録媒体であっても適用可能である。例えば、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、または着脱可能なメモリデバイスが数値制御プログラム３１を予め記憶する記録媒体として適用可能である。
【０１７０】
なお、対象点指定部１０１、参照点群抽出部１０２、基準直線作成部１０３、対象点補正部１０４、指令出力部１０５、比率算出部１０６および最大抽出距離入力部１０７は、ソフトウェアにより実現されるものとして説明したが、これらの各構成要素は、ハードウェア、またはハードウェアとソフトウェアとの組み合わせとして実現することができる。これらの構成要素が、ハードウェアとして実現されるか、ソフトウェアとして実現されるかは、装置全体に課される設計制約に基づいて決定される。
【産業上の利用可能性】
【０１７１】
以上のように、本発明にかかる数値制御装置は、加工プログラムに基づいて工作機械を動作させる数値制御装置に適用して好適である。
【符号の説明】
【０１７２】
１  ＣＰＵ、２  ＲＡＭ、３  ＲＯＭ、４  入力装置、５  出力装置、６  Ｉ／Ｏ、３１  数値制御プログラム、１００，２００，３００，４００，５００，６００  数値制御装置、１０１，２０１，３０１，４０１，５０１  対象点指定部、１０２，２０２，４０２，５０２  参照点群抽出部、１０３  基準直線作成部、１０４，６０１  対象点補正部、１０５  指令出力部、１０６  比率算出部、１０７  最大抽出距離入力部、１０８  加工プログラム、１０９  サーボへの指令、１１０  所定軌跡、１１１  最大抽出距離、２０３  角度閾値入力部、２０４  比率設定値、２０５  角度閾値、３０２  往復変化量閾値入力部、３０３  往復変化量閾値、４０３  最大抽出点数入力部、４０４  最大抽出点数、５０３  軌跡切替り判定部、５０４  コーナー判定角度閾値入力部、５０５  同一軌跡角度閾値入力部、５０６  コーナー判定角度閾値、５０７  同一軌跡角度閾値、６０２  補正量最大値入力部、６０３  補正量最大値。
【図１】
2014167684.tif 000003
【図２】
2014167684.tif 000004
【図３】
2014167684.tif 000005
【図４】
2014167684.tif 000006
【図５】
2014167684.tif 000007
【図６】
2014167684.tif 000008
【図７】
2014167684.tif 000009
【図８】
2014167684.tif 000010
【図９】
2014167684.tif 000011
【図１０】
2014167684.tif 000012
【図１１】
2014167684.tif 000013
【図１２】
2014167684.tif 000014
【図１３】
2014167684.tif 000015
【図１４】
2014167684.tif 000016
【図１５】
2014167684.tif 000017
【図１６】
2014167684.tif 000018
【図１７】
2014167684.tif 000019
【図１８】
2014167684.tif 000020