(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024039745
(43)【公開日】2024-03-25
(54)【発明の名称】数値制御装置と工作機械と数値制御方法と数値制御プログラム
(51)【国際特許分類】
G05B 19/416 20060101AFI20240315BHJP
G05B 19/4103 20060101ALI20240315BHJP
【FI】
G05B19/416 K
G05B19/4103 A
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022144334
(22)【出願日】2022-09-12
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】100104178
【弁理士】
【氏名又は名称】山本 尚
(74)【代理人】
【識別番号】100213687
【弁理士】
【氏名又は名称】平松 大輝
(72)【発明者】
【氏名】石川 友哉
(72)【発明者】
【氏名】大木 俊輔
【テーマコード(参考)】
3C269
【Fターム(参考)】
3C269AB01
3C269BB11
3C269CC02
3C269CC15
3C269EF02
3C269EF25
3C269EF39
3C269PP15
3C269QB17
3C269RB01
(57)【要約】
【課題】加減速処理前における速度曲線を算出するための計算量を抑制しつつ、移動部の移動時間が長くなることを抑制するという利点に貢献する数値制御装置と工作機械と数値制御方法と数値制御プログラムを提供する。
【解決手段】数値制御装置のCPUは現在ブロックNnowと先読みブロックを読み込み、目標ブロックNdと目標ブロックNdの指令点における目標速度Vdを決定する。CPUは先端加速度が現在の先端加速度から0になる位置における第一立上速度V1を算出する。CPUは逆向き補間点Prevを算出する。CPUは、先端加速度が逆向き補間点Prevにおける先端加速度から0になる位置における第二立上速度V2を、逆向き補間点Prevを算出するたびに算出する。
【選択図】
図6
【特許請求の範囲】
【請求項1】
対象物に対して相対的に移動する移動部の移動経路において指令点を示す複数のブロックによって構成されたNCプログラムを読み込み、前記複数のブロックを順に処理することで、前記移動部の位置及び速度を制御する数値制御装置において、
前記複数のブロックのうち処理対象となる現在ブロックと、前記複数のブロックのうち処理順序が前記現在ブロックよりも後の先読みブロックを読み込む読込部と、
前記読込部が読み込んだ前記現在ブロック及び前記先読みブロックのうち目標となる目標ブロックを決定し、且つ決定した前記目標ブロックの前記指令点における前記移動部の目標となる速度である目標速度を決定する決定部と、
前記移動部の前記移動経路において、前記移動部の加速度が前記移動部の現在の加速度から第一所定加速度になる位置である第一立上点における前記移動部の速度である第一立上速度を、許容されるジャークの上限である最大ジャーク、前記移動部の現在の速度、及び前記移動部の現在の加速度に基づいて算出する第一算出部と、
前記移動部の前記移動経路において、前記決定部が決定した前記目標ブロックの前記指令点から前記現在ブロックの始点に向けて、前記移動部が移動する位置である逆向き補間点を順次算出する処理であって、最初に算出される前記逆向き補間点である最初の逆向き補間点、前記最初の逆向き補間点における前記移動部の速度、及び前記最初の逆向き補間点における前記移動部の加速度が夫々、前記目標ブロックの前記指令点、前記目標速度、及び第二所定加速度であり、且つ現在の前記逆向き補間点の次に算出される前記逆向き補間点が、現在の前記逆向き補間点における前記移動部の速度及び前記移動部の加速度、許容される加速度の上限である最大加速度、及び前記最大ジャークに基づく速度で所定時間の間移動する量だけ前記移動部が移動する位置である逆向き補間処理を行う逆向き補間部と、
前記移動部の前記移動経路において、前記逆向き補間点から前記現在ブロックの始点に向けて、前記移動部の加速度が前記逆向き補間点における前記移動部の加速度から第三所定加速度になる位置である第二立上点における前記移動部の速度である第二立上速度を、前記逆向き補間部が前記逆向き補間点を算出するたびに、前記最大ジャーク、前記逆向き補間部が算出した前記逆向き補間点における前記移動部の速度、及び前記逆向き補間点における前記移動部の加速度に基づいて算出する第二算出部と
を備え、
前記逆向き補間部は、前記第二算出部が算出した前記第二立上速度が、前記第一算出部が算出した前記第一立上速度以上になるまで、前記逆向き補間点を算出する
ことを特徴とする数値制御装置。
【請求項2】
前記先読みブロックの始点における前記移動部の許容される速度の上限である始点速度を算出する第三算出部と、
前記処理順序が前記現在ブロックよりも1つ後の前記先読みブロックと、前記第二立上点が属する前記先読みブロックとの間の前記処理順序における前記先読みブロックのうち、前記始点速度が前記第二立上速度以下となる移行ブロックがあるか判断する第一判断部と
を備え、
前記決定部は、前記第一判断部が、前記移行ブロックがあると判断した場合、前記始点速度が最も小さい前記移行ブロックよりも前記処理順序が1つ前の前記ブロックを前記目標ブロックに決定し、前記移行ブロックの最も小さい前記始点速度を前記目標速度に決定する
ことを特徴とする請求項1に記載の数値制御装置。
【請求項3】
前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点に向かう方向への前記移動部の移動距離を正とし、前記目標ブロックの前記指令点から前記現在ブロックにおける前記移動部の現在の位置に向かう方向への前記移動部の移動距離を負とした場合において、前記現在ブロックにおける前記移動部の現在の位置から前記第一立上点までの前記移動部の移動距離、前記第二立上点から前記逆向き補間点までの前記移動部の移動距離、及び前記逆向き補間点から前記目標ブロックの前記指令点までの前記移動部の移動距離の合計である合計距離が、前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点までの前記移動部の移動距離である移動残以上か判断する第二判断部と、
前記合計距離が前記移動残以上であると前記第二判断部が判断した場合、前記移動部の速度が前記目標速度未満にならないように、許容される減速度の上限である最大減速度及び前記最大ジャークに基づく減速度で前記移動部の速度を制御する第一速度制御部と
を備えたことを特徴とする請求項1又は2に記載の数値制御装置。
【請求項4】
前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点に向かう方向への前記移動部の移動距離を正とし、前記目標ブロックの前記指令点から前記現在ブロックにおける前記移動部の現在の位置に向かう方向への前記移動部の移動距離を負とした場合において、前記現在ブロックにおける前記移動部の現在の位置から前記第一立上点までの前記移動部の移動距離、前記第二立上点から前記逆向き補間点までの前記移動部の移動距離、及び前記逆向き補間点から前記目標ブロックの前記指令点までの前記移動部の移動距離の合計である合計距離が、前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点までの前記移動部の移動距離である移動残以上か判断する第二判断部と、
前記移動経路上の各補間点における前記移動部の許容される速度の上限を守る最大の速度である制限速度を算出する第四算出部と、
前記合計距離が前記移動残以上でないと前記第二判断部が判断した場合、前記第一立上点における前記移動部の速度が、前記第四算出部が算出する前記第一立上点における前記制限速度を超えないように、前記最大加速度及び前記最大ジャークに基づく加速度で前記移動部の速度を制御する第二速度制御部と
を備えたことを特徴とする請求項1又は2に記載の数値制御装置。
【請求項5】
前記読込部は、前記複数のブロックの個数が所定順序に対応する個数よりも多い場合、前記処理順序が前記現在ブロックよりも1つ後の前記ブロックから、前記処理順序が前記現在ブロックから前記所定順序後の前記ブロックである先読み終点ブロックまで順に前記先読みブロックとして読み込み、
前記逆向き補間部は、前記読込部が前記先読み終点ブロックを読み込んだ場合に、前記逆向き補間点を算出する
ことを特徴とする請求項1に記載の数値制御装置。
【請求項6】
前記読込部が読み込んだ前記現在ブロックを処理することで、前記移動部の位置及び速度を制御するブロック処理部を備え、
前記読込部は、前記ブロック処理部が前記現在ブロックの前記指令点まで処理した場合、前記ブロック処理部が前記現在ブロックとして処理した前記ブロックよりも前記処理順序が1つ後の次ブロックを前記現在ブロックとし、前記処理順序が前記次ブロックから前記所定順序後の前記ブロックを前記先読み終点ブロックとして新たに読み込み、
前記決定部は、前記読込部が前記先読み終点ブロックを新たに読み込んだ場合に、前記目標ブロックを新たに決定し、且つ前記目標速度を新たに決定する
ことを特徴とする請求項5に記載の数値制御装置。
【請求項7】
請求項1に記載の数値制御装置と、
ワークを保持する保持部と、
前記ワークを加工する工具が装着される主軸と
を備え、
前記保持部によって保持された前記ワークに対して少なくとも直線軸3軸と回転軸1軸とによって加工し、
前記移動経路は、前記ワークに対する前記工具の先端の相対的な位置によって規定され、
前記最大ジャークは、前記ワークに対する前記工具の先端の相対的なジャークの許容される上限であり、
前記最大加速度は、前記直線軸と前記回転軸との夫々の加速度が、夫々、前記直線軸と前記回転軸との夫々の許容される加速度以下となる前記ワークに対する前記工具の先端の相対的な加速度の上限であり、
前記移動部の速度は、前記ワークに対する前記工具の先端の相対的な速度によって規定される
ことを特徴とする工作機械。
【請求項8】
前記直線軸3軸と、前記保持部を回転する回転軸2軸とを有することを特徴とする請求項7に記載の工作機械。
【請求項9】
前記直線軸3軸と、前記ワークに対する前記主軸の姿勢を変更する回転軸2軸とを有することを特徴とする請求項7に記載の工作機械。
【請求項10】
前記直線軸3軸と、前記ワークに対する前記主軸の姿勢を変更する回転軸1軸と、前記保持部を回転する回転軸1軸とを有することを特徴とする請求項7に記載の工作機械。
【請求項11】
対象物に対して相対的に移動する移動部の移動経路において指令点を示す複数のブロックによって構成されたNCプログラムを読み込み、前記複数のブロックを順に処理することで、前記移動部の位置及び速度を制御する数値制御装置による数値制御方法であって、
前記複数のブロックのうち処理対象となる現在ブロックと、前記複数のブロックのうち処理順序が前記現在ブロックよりも後の先読みブロックを読み込む読込処理と、
前記読込処理が読み込んだ前記現在ブロック及び前記先読みブロックのうち目標となる目標ブロックを決定し、且つ決定した前記目標ブロックの前記指令点における前記移動部の目標となる速度である目標速度を決定する決定処理と、
前記移動部の前記移動経路において、前記移動部の加速度が前記移動部の現在の加速度から第一所定加速度になる位置である第一立上点における前記移動部の速度である第一立上速度を、許容されるジャークの上限である最大ジャーク、前記移動部の現在の速度、及び前記移動部の現在の加速度に基づいて算出する第一算出処理と、
前記移動部の前記移動経路において、前記決定処理が決定した前記目標ブロックの前記指令点から前記現在ブロックの始点に向けて、前記移動部が移動する位置である逆向き補間点を順次算出する処理であって、最初に算出される前記逆向き補間点である最初の逆向き補間点、前記最初の逆向き補間点における前記移動部の速度、及び前記最初の逆向き補間点における前記移動部の加速度が夫々、前記目標ブロックの前記指令点、前記目標速度、及び第二所定加速度であり、且つ現在の前記逆向き補間点の次に算出される前記逆向き補間点が、現在の前記逆向き補間点における前記移動部の速度及び前記移動部の加速度、許容される加速度の上限である最大加速度、及び前記最大ジャークに基づく速度で所定時間の間移動する量だけ前記移動部が移動する位置である逆向き補間処理と、
前記移動部の前記移動経路において、前記逆向き補間点から前記現在ブロックの始点に向けて、前記移動部の加速度が前記逆向き補間点における前記移動部の加速度から第三所定加速度になる位置である第二立上点における前記移動部の速度である第二立上速度を、前記逆向き補間処理が前記逆向き補間点を算出するたびに、前記最大ジャーク、前記逆向き補間処理が算出した前記逆向き補間点における前記移動部の速度、及び前記逆向き補間点における前記移動部の加速度に基づいて算出する第二算出処理と
を備え、
前記逆向き補間処理は、前記第二算出処理が算出した前記第二立上速度が、前記第一算出処理が算出した前記第一立上速度以上になるまで、前記逆向き補間点を算出する
ことを特徴とする数値制御方法。
【請求項12】
対象物に対して相対的に移動する移動部の移動経路において指令点を示す複数のブロックによって構成されたNCプログラムを読み込み、前記複数のブロックを順に処理することで、前記移動部の位置及び速度を制御する数値制御装置のコンピュータに、
前記複数のブロックのうち処理対象となる現在ブロックと、前記複数のブロックのうち処理順序が前記現在ブロックよりも後の先読みブロックを読み込む読込処理と、
前記読込処理が読み込んだ前記現在ブロック及び前記先読みブロックのうち目標となる目標ブロックを決定し、且つ決定した前記目標ブロックの前記指令点における前記移動部の目標となる速度である目標速度を決定する決定処理と、
前記移動部の前記移動経路において、前記移動部の加速度が前記移動部の現在の加速度から第一所定加速度になる位置である第一立上点における前記移動部の速度である第一立上速度を、許容されるジャークの上限である最大ジャーク、前記移動部の現在の速度、及び前記移動部の現在の加速度に基づいて算出する第一算出処理と、
前記移動部の前記移動経路において、前記決定処理が決定した前記目標ブロックの前記指令点から前記現在ブロックの始点に向けて、前記移動部が移動する位置である逆向き補間点を順次算出する処理であって、最初に算出される前記逆向き補間点である最初の逆向き補間点、前記最初の逆向き補間点における前記移動部の速度、及び前記最初の逆向き補間点における前記移動部の加速度が夫々、前記目標ブロックの前記指令点、前記目標速度、及び第二所定加速度であり、且つ現在の前記逆向き補間点の次に算出される前記逆向き補間点が、現在の前記逆向き補間点における前記移動部の速度及び前記移動部の加速度、許容される加速度の上限である最大加速度、及び前記最大ジャークに基づく速度で所定時間の間移動する量だけ前記移動部が移動する位置である逆向き補間処理と、
前記移動部の前記移動経路において、前記逆向き補間点から前記現在ブロックの始点に向けて、前記移動部の加速度が前記逆向き補間点における前記移動部の加速度から第三所定加速度になる位置である第二立上点における前記移動部の速度である第二立上速度を、前記逆向き補間処理が前記逆向き補間点を算出するたびに、前記最大ジャーク、前記逆向き補間処理が算出した前記逆向き補間点における前記移動部の速度、及び前記逆向き補間点における前記移動部の加速度に基づいて算出する第二算出処理と
を実行させ、
前記逆向き補間処理において、前記第二算出処理が算出した前記第二立上速度が、前記第一算出処理が算出した前記第一立上速度以上になるまで、前記逆向き補間点を算出させる
ことを特徴とする数値制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、数値制御装置と工作機械と数値制御方法と数値制御プログラムに関する。
【背景技術】
【0002】
例えば機械がNCプログラムに基づいて移動部を動作させる場合がある。この場合、機械が例えば移動部の速度又は加速度を急激に変化させると、機械が故障し、又は移動部が振動的になり理想の移動経路からずれる等の不具合が生じる可能性がある。同様に、機械が移動部を高速で移動させると、不具合が生じる可能性がある。故に不具合の発生を抑制するため、移動部の速度と加速度とジャーク(加加速度)に制限が設けられる。機械は、移動部の実際の速度と加速度とジャークが、設けられた制限を超えないように移動部の加減速処理を行う。
【0003】
例えば特許文献1に記載の数値制御装置は先端点制御において補間前加減速処理を行う。数値制御装置では、経路上のプログラミング座標系と機械座標系において、各軸の速度と加速度とジャークに許容値が設けられる。数値制御装置は移動経路を分割した各区間上での先端点の速度と加速度とジャークの夫々の許容値を算出する。数値制御装置は移動経路において、算出された許容値を超えないような速度曲線を算出し、算出された速度曲線に従って加減速処理を行う。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
上記数値制御装置では、各区間内の速度と加速度の許容値が、夫々、算出された許容値で一定となる。速度と加速度の理想の許容値は各区間内において一定とは限らない。このため、区間の幅が広いと、算出された許容値と理想の許容値との間に差が生じる可能性がある。つまり、速度が理想の速度まで上がらず、又は速度が理想の速度まで到達するのに時間がかかることによって、移動部の移動時間が長くなる可能性がある。一方、算出された許容値と理想の許容値との間の差を小さくするために区間の幅を狭くすると、加減速処理前における速度曲線を算出するための計算量が多くなる可能性がある。
【0006】
本発明の目的は、加減速処理前における速度曲線を算出するための計算量を抑制しつつ、移動部の移動時間が長くなることを抑制するという利点に貢献する数値制御装置と工作機械と数値制御方法と数値制御プログラムを提供することである。
【課題を解決するための手段】
【0007】
請求項1の数値制御装置は、対象物に対して相対的に移動する移動部の移動経路において指令点を示す複数のブロックによって構成されたNCプログラムを読み込み、前記複数のブロックを順に処理することで、前記移動部の位置及び速度を制御する数値制御装置において、前記複数のブロックのうち処理対象となる現在ブロックと、前記複数のブロックのうち処理順序が前記現在ブロックよりも後の先読みブロックを読み込む読込部と、前記読込部が読み込んだ前記現在ブロック及び前記先読みブロックのうち目標となる目標ブロックを決定し、且つ決定した前記目標ブロックの前記指令点における前記移動部の目標となる速度である目標速度を決定する決定部と、前記移動部の前記移動経路において、前記移動部の加速度が前記移動部の現在の加速度から第一所定加速度になる位置である第一立上点における前記移動部の速度である第一立上速度を、許容されるジャークの上限である最大ジャーク、前記移動部の現在の速度、及び前記移動部の現在の加速度に基づいて算出する第一算出部と、前記移動部の前記移動経路において、前記決定部が決定した前記目標ブロックの前記指令点から前記現在ブロックの始点に向けて、前記移動部が移動する位置である逆向き補間点を順次算出する処理であって、最初に算出される前記逆向き補間点である最初の逆向き補間点、前記最初の逆向き補間点における前記移動部の速度、及び前記最初の逆向き補間点における前記移動部の加速度が夫々、前記目標ブロックの前記指令点、前記目標速度、及び第二所定加速度であり、且つ現在の前記逆向き補間点の次に算出される前記逆向き補間点が、現在の前記逆向き補間点における前記移動部の速度及び前記移動部の加速度、許容される加速度の上限である最大加速度、及び前記最大ジャークに基づく速度で所定時間の間移動する量だけ前記移動部が移動する位置である逆向き補間処理を行う逆向き補間部と、前記移動部の前記移動経路において、前記逆向き補間点から前記現在ブロックの始点に向けて、前記移動部の加速度が前記逆向き補間点における前記移動部の加速度から第三所定加速度になる位置である第二立上点における前記移動部の速度である第二立上速度を、前記逆向き補間部が前記逆向き補間点を算出するたびに、前記最大ジャーク、前記逆向き補間部が算出した前記逆向き補間点における前記移動部の速度、及び前記逆向き補間点における前記移動部の加速度に基づいて算出する第二算出部とを備え、前記逆向き補間部は、前記第二算出部が算出した前記第二立上速度が、前記第一算出部が算出した前記第一立上速度以上になるまで、前記逆向き補間点を算出することを特徴とする。
【0008】
請求項1の数値制御装置によれば、第二立上速度が第一立上速度以上になるまで、逆向き補間部が逆向き補間点を算出する。逆向き補間部に合わせた加減速処理が行われることにより、移動部の速度が移動経路上で最大限増加したとしても、目標ブロックの指令点で移動部が目標速度まで減速しないことが抑制される。このため、数値制御装置は、目標ブロックの指令点において移動部が目標速度まで減速可能な最大の速度で、移動部を移動させやすい。さらに、逆向き補間部が逆向き補間点を算出しながら加減速処理が行われ、移動部の速度曲線が算出される。故に逆向き補間部を用いた加減速処理を行う場合、移動部の速度曲線を算出して加減速処理を行う場合に比べて、加減速処理前における数値制御装置による計算量を抑制しやすい。故に逆向き補間部は、加減速処理前における速度曲線を算出するための計算量を抑制しつつ、移動部の移動時間が長くなることを抑制するという利点に貢献する。
【0009】
請求項2の数値制御装置は、前記先読みブロックの始点における前記移動部の許容される速度の上限である始点速度を算出する第三算出部と、前記処理順序が前記現在ブロックよりも1つ後の前記先読みブロックと、前記第二立上点が属する前記先読みブロックとの間の前記処理順序における前記先読みブロックのうち、前記始点速度が前記第二立上速度以下となる移行ブロックがあるか判断する第一判断部とを備え、前記決定部は、前記第一判断部が、前記移行ブロックがあると判断した場合、前記始点速度が最も小さい前記移行ブロックよりも前記処理順序が1つ前の前記ブロックを前記目標ブロックに決定し、前記移行ブロックの最も小さい前記始点速度を前記目標速度に決定してもよい。
【0010】
この場合、新たに決定された目標ブロックの指令点において、目標速度として新たに決定された目標ブロックの1つ後の先読みブロックの始点速度までの移動部の減速が可能となるように、逆向き補間が行われる。故に決定部は、ブロックの指令点において移動部の許容される速度の上限を守ったうえで、加減速処理前における移動部の速度曲線を算出するための計算量を抑制しつつ、移動部の移動時間が長くなることを抑制するという利点に貢献する。
【0011】
請求項3の数値制御装置は、前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点に向かう方向への前記移動部の移動距離を正とし、前記目標ブロックの前記指令点から前記現在ブロックにおける前記移動部の現在の位置に向かう方向への前記移動部の移動距離を負とした場合において、前記現在ブロックにおける前記移動部の現在の位置から前記第一立上点までの前記移動部の移動距離、前記第二立上点から前記逆向き補間点までの前記移動部の移動距離、及び前記逆向き補間点から前記目標ブロックの前記指令点までの前記移動部の移動距離の合計である合計距離が、前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点までの前記移動部の移動距離である移動残以上か判断する第二判断部と、前記合計距離が前記移動残以上であると前記第二判断部が判断した場合、前記移動部の速度が前記目標速度未満にならないように、許容される減速度の上限である最大減速度及び前記最大ジャークに基づく減速度で前記移動部の速度を制御する第一速度制御部とを備えてもよい。
【0012】
この場合、第一速度制御部が、許容される減速度とジャークの範囲内で最大限、移動部の速度を制御し、且つ目標ブロックの指令点で目標速度まで減速するように移動部の速度を制御するので、移動部の減速時間が長くなることが抑制される。このため、数値制御装置は移動部の加速時間を長く確保しやすい。故に第一速度制御部は移動部の移動時間が長くなることを抑制するという利点に貢献する。
【0013】
請求項4の数値制御装置は、前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点に向かう方向への前記移動部の移動距離を正とし、前記目標ブロックの前記指令点から前記現在ブロックにおける前記移動部の現在の位置に向かう方向への前記移動部の移動距離を負とした場合において、前記現在ブロックにおける前記移動部の現在の位置から前記第一立上点までの前記移動部の移動距離、前記第二立上点から前記逆向き補間点までの前記移動部の移動距離、及び前記逆向き補間点から前記目標ブロックの前記指令点までの前記移動部の移動距離の合計である合計距離が、前記現在ブロックにおける前記移動部の現在の位置から前記目標ブロックの前記指令点までの前記移動部の移動距離である移動残以上か判断する第二判断部と、前記移動経路上の各補間点における前記移動部の許容される速度の上限を守る最大の速度である制限速度を算出する第四算出部と、前記合計距離が前記移動残以上でないと前記第二判断部が判断した場合、前記第一立上点における前記移動部の速度が、前記第四算出部が算出する前記第一立上点における前記制限速度を超えないように、前記最大加速度及び前記最大ジャークに基づく加速度で前記移動部の速度を制御する第二速度制御部とを備えてもよい。
【0014】
この場合、第一立上点における移動部の速度が第一立上点における制限速度を超えないように、許容される加速度とジャークの範囲内で最大限、第二速度制御部が移動部の速度を大きくするように制御する。故に第二速度制御部は移動部の移動時間が長くなることを抑制するという利点に貢献する。
【0015】
請求項5の数値制御装置において、前記読込部は、前記複数のブロックの個数が所定順序に対応する個数よりも多い場合、前記処理順序が前記現在ブロックよりも1つ後の前記ブロックから、前記処理順序が前記現在ブロックから前記所定順序後の前記ブロックである先読み終点ブロックまで順に前記先読みブロックとして読み込み、前記逆向き補間部は、前記読込部が前記先読み終点ブロックを読み込んだ場合に、前記逆向き補間点を算出してもよい。
【0016】
この場合、逆向き補間部は、読込部が先読みブロックを1つずつ読み込むたびに逆向き補間点を算出するわけではない。故に逆向き補間部は、逆向き補間点の算出にかかる処理負荷が大きくなることを抑制するという利点に貢献する。
【0017】
請求項6の数値制御装置は、前記読込部が読み込んだ前記現在ブロックを処理することで、前記移動部の位置及び速度を制御するブロック処理部を備え、前記読込部は、前記ブロック処理部が前記現在ブロックの前記指令点まで処理した場合、前記ブロック処理部が前記現在ブロックとして処理した前記ブロックよりも前記処理順序が1つ後の次ブロックを前記現在ブロックとし、前記処理順序が前記次ブロックから前記所定順序後の前記ブロックを前記先読み終点ブロックとして新たに読み込み、前記決定部は、前記読込部が前記先読み終点ブロックを新たに読み込んだ場合に、前記目標ブロックを新たに決定し、且つ前記目標速度を新たに決定してもよい。
【0018】
この場合、ブロック処理部が現在ブロックを処理するたびに読込部がブロックを1つ先読みブロックとして新たに読み込む。つまり、読込部は、先読みブロックとして複数のブロックの全部を常に一度に読み込むわけではない。故に読込部は先読みブロックを読み込むのにかかる制御負荷を抑制するという利点に貢献する。
【0019】
請求項7の工作機械は、請求項1に記載の数値制御装置と、ワークを保持する保持部と、前記ワークを加工する工具が装着される主軸とを備え、前記保持部によって保持された前記ワークに対して少なくとも直線軸3軸と回転軸1軸とによって加工し、前記移動経路は、前記ワークに対する前記工具の先端の相対的な位置によって規定され、前記最大ジャークは、前記ワークに対する前記工具の先端の相対的なジャークの許容される上限であり、前記最大加速度は、前記直線軸と前記回転軸との夫々の加速度が、夫々、前記直線軸と前記回転軸との夫々の許容される加速度以下となる前記ワークに対する前記工具の先端の相対的な加速度の上限であり、前記移動部の速度は、前記ワークに対する前記工具の先端の相対的な速度によって規定されることを特徴とする。
【0020】
請求項7の工作機械は、請求項1の数値制御装置と同様の利点に貢献する。
【0021】
請求項8の工作機械は、前記直線軸3軸と、前記保持部を回転する回転軸2軸とを有してもよい。
【0022】
この場合、工作機械は、複雑な加工を行うという利点に貢献する。
【0023】
請求項9の工作機械は、前記直線軸3軸と、前記ワークに対する前記主軸の姿勢を変更する回転軸2軸とを有してもよい。
【0024】
この場合、工作機械は、複雑な加工を行うという利点に貢献する。
【0025】
請求項10の工作機械は、前記直線軸3軸と、前記ワークに対する前記主軸の姿勢を変更する回転軸1軸と、前記保持部を回転する回転軸1軸とを有してもよい。
【0026】
この場合、工作機械は、複雑な加工を行うという利点に貢献する。
【0027】
請求項11の数値制御方法は、対象物に対して相対的に移動する移動部の移動経路において指令点を示す複数のブロックによって構成されたNCプログラムを読み込み、前記複数のブロックを順に処理することで、前記移動部の位置及び速度を制御する数値制御装置による数値制御方法であって、前記複数のブロックのうち処理対象となる現在ブロックと、前記複数のブロックのうち処理順序が前記現在ブロックよりも後の先読みブロックを読み込む読込処理と、前記読込処理が読み込んだ前記現在ブロック及び前記先読みブロックのうち目標となる目標ブロックを決定し、且つ決定した前記目標ブロックの前記指令点における前記移動部の目標となる速度である目標速度を決定する決定処理と、前記移動部の前記移動経路において、前記移動部の加速度が前記移動部の現在の加速度から第一所定加速度になる位置である第一立上点における前記移動部の速度である第一立上速度を、許容されるジャークの上限である最大ジャーク、前記移動部の現在の速度、及び前記移動部の現在の加速度に基づいて算出する第一算出処理と、前記移動部の前記移動経路において、前記決定処理が決定した前記目標ブロックの前記指令点から前記現在ブロックの始点に向けて、前記移動部が移動する位置である逆向き補間点を順次算出する処理であって、最初に算出される前記逆向き補間点である最初の逆向き補間点、前記最初の逆向き補間点における前記移動部の速度、及び前記最初の逆向き補間点における前記移動部の加速度が夫々、前記目標ブロックの前記指令点、前記目標速度、及び第二所定加速度であり、且つ現在の前記逆向き補間点の次に算出される前記逆向き補間点が、現在の前記逆向き補間点における前記移動部の速度及び前記移動部の加速度、許容される加速度の上限である最大加速度、及び前記最大ジャークに基づく速度で所定時間の間移動する量だけ前記移動部が移動する位置である逆向き補間処理と、前記移動部の前記移動経路において、前記逆向き補間点から前記現在ブロックの始点に向けて、前記移動部の加速度が前記逆向き補間点における前記移動部の加速度から第三所定加速度になる位置である第二立上点における前記移動部の速度である第二立上速度を、前記逆向き補間処理が前記逆向き補間点を算出するたびに、前記最大ジャーク、前記逆向き補間処理が算出した前記逆向き補間点における前記移動部の速度、及び前記逆向き補間点における前記移動部の加速度に基づいて算出する第二算出処理とを備え、前記逆向き補間処理は、前記第二算出処理が算出した前記第二立上速度が、前記第一算出処理が算出した前記第一立上速度以上になるまで、前記逆向き補間点を算出することを特徴とする。
【0028】
請求項11の数値制御方法は請求項1の数値制御方法と同様の利点に貢献する。
【0029】
請求項12の数値制御プログラムは、対象物に対して相対的に移動する移動部の移動経路において指令点を示す複数のブロックによって構成されたNCプログラムを読み込み、前記複数のブロックを順に処理することで、前記移動部の位置及び速度を制御する数値制御装置のコンピュータに、前記複数のブロックのうち処理対象となる現在ブロックと、前記複数のブロックのうち処理順序が前記現在ブロックよりも後の先読みブロックを読み込む読込処理と、前記読込処理が読み込んだ前記現在ブロック及び前記先読みブロックのうち目標となる目標ブロックを決定し、且つ決定した前記目標ブロックの前記指令点における前記移動部の目標となる速度である目標速度を決定する決定処理と、前記移動部の前記移動経路において、前記移動部の加速度が前記移動部の現在の加速度から第一所定加速度になる位置である第一立上点における前記移動部の速度である第一立上速度を、許容されるジャークの上限である最大ジャーク、前記移動部の現在の速度、及び前記移動部の現在の加速度に基づいて算出する第一算出処理と、前記移動部の前記移動経路において、前記決定処理が決定した前記目標ブロックの前記指令点から前記現在ブロックの始点に向けて、前記移動部が移動する位置である逆向き補間点を順次算出する処理であって、最初に算出される前記逆向き補間点である最初の逆向き補間点、前記最初の逆向き補間点における前記移動部の速度、及び前記最初の逆向き補間点における前記移動部の加速度が夫々、前記目標ブロックの前記指令点、前記目標速度、及び第二所定加速度であり、且つ現在の前記逆向き補間点の次に算出される前記逆向き補間点が、現在の前記逆向き補間点における前記移動部の速度及び前記移動部の加速度、許容される加速度の上限である最大加速度、及び前記最大ジャークに基づく速度で所定時間の間移動する量だけ前記移動部が移動する位置である逆向き補間処理と、前記移動部の前記移動経路において、前記逆向き補間点から前記現在ブロックの始点に向けて、前記移動部の加速度が前記逆向き補間点における前記移動部の加速度から第三所定加速度になる位置である第二立上点における前記移動部の速度である第二立上速度を、前記逆向き補間処理が前記逆向き補間点を算出するたびに、前記最大ジャーク、前記逆向き補間処理が算出した前記逆向き補間点における前記移動部の速度、及び前記逆向き補間点における前記移動部の加速度に基づいて算出する第二算出処理とを実行させ、前記逆向き補間処理において、前記第二算出処理が算出した前記第二立上速度が、前記第一算出処理が算出した前記第一立上速度以上になるまで、前記逆向き補間点を算出させることを特徴とする。
【0030】
請求項12の数値制御プログラムは請求項1の数値制御装置と同様の利点に貢献する。
【図面の簡単な説明】
【0031】
【
図2】工作機械1の電気的構成を示すブロック図である。
【
図3】NCプログラム441を説明するための図である。
【
図4】ブロック情報記憶エリア431を説明するための図である。
【
図5】先端点制御開始時において、各ブロックにおける時間に対する先端速度を示すグラフである。
【
図22】先端点制御完了時において、各ブロックにおける時間に対する先端速度を示すグラフ、及び各ブロックにおける時間に対する先端加速度又は先端減速度を示すグラフである。
【
図26】第一速度制御処理のフローチャートである。
【
図27】第一速度制御処理のフローチャートである。
【
図28】第二速度制御処理のフローチャートである。
【発明を実施するための形態】
【0032】
本発明の実施形態を図面を参照し説明する。以下説明は、図中に矢印で示す左右、前後、上下を使用する。工作機械1の左右方向、前後方向、上下方向は夫々、工作機械1のX軸方向、Y軸方向、Z軸方向である。
図1に示す工作機械1は、ワークWの切削加工と旋削加工ができる複合機である。
【0033】
図1を参照し、工作機械1の構造を説明する。工作機械1は基台2、Y軸移動機構(図示略)、X軸移動機構(図示略)、Z軸移動機構(図示略)、移動体15、立柱5、主軸ヘッド6、主軸9、支持装置8等を備える。基台2は架台11、主軸基台12、右側基台13、左側基台14等を備える。架台11は前後方向に長い略直方体状の構造体である。主軸基台12は前後方向に長い略直方体状に形成され、架台11上面後方に設けられる。右側基台13は架台11上面右前方に設けられる。左側基台14は架台11上面左前方に設けられる。右側基台13と左側基台14は夫々の上面において支持装置8を支持する。
【0034】
Y軸移動機構は主軸基台12上面に設けられ、Y軸モータ62(
図2参照)等を備える。Y軸移動機構はY軸モータ62の駆動により、略平板状の移動体15をY軸方向に移動する。X軸移動機構は移動体15上面に設けられ、X軸モータ61(
図2参照)等を備える。X軸移動機構はX軸モータ61の駆動により、立柱5をX軸方向に移動する。立柱5は、Y軸移動機構、移動体15、X軸移動機構により、基台2上をX軸方向とY軸方向に移動可能である。Z軸移動機構は立柱5前面に設けられ、Z軸モータ63(
図2参照)等を備える。Z軸移動機構はZ軸モータ63の駆動により、主軸ヘッド6をZ軸方向に移動する。
【0035】
主軸9は主軸ヘッド6内部に設けられる。主軸9下部には工具装着穴(図示略)が設けられる。工具装着穴には工具3が装着される。以下では、工具3の先端を「工具先端」と称す。本実施形態において、工具3が工具装着穴から下方に延びる場合、工具先端は、工具3の下端である。X軸移動機構、Y軸移動機構、Z軸移動機構は夫々、主軸9に装着された工具3を、ワークWに対して相対的に、X軸方向、Y軸方向、及びZ軸方向に移動させる。主軸9は主軸ヘッド6上部に設けられた主軸モータ66(
図2参照)の駆動により、回転する。
【0036】
支持装置8は右側基台13と左側基台14の上面に固定される。支持装置8はA軸台20、左側支持台27、右側駆動機構28、回転台29、C軸駆動部30等を備える。A軸台20は、A軸台20の上面が水平となる場合に傾斜角度が0度となる平面視略長方形状の板状部である。左側支持台27は、X軸方向に対して平行な支軸(図示略)を回転可能に支持する。左側支持台27の底部は、左側基台14の上面に固定される。
【0037】
右側駆動機構28はA軸台20右側に位置する。右側駆動機構28はA軸モータ64(
図2参照)等を格納する。A軸モータ64が回転すると、A軸台20は支軸を中心に回転する。A軸台20を回転する軸はA軸である。右側駆動機構28は工具3に対してワークWを、A軸を中心として回転させる。A軸台20はA軸回りに任意角度で傾くことで、主軸9に装着された工具3に対してワークWを任意方向に傾ける。
【0038】
回転台29はA軸台20上面略中央に回転可能に設けられる。回転台29は円盤状を有する。C軸駆動部30はA軸台20下面に設け且つA軸台20の略中央に設けた穴(図示略)を介して回転台29と連結する。C軸駆動部30は回転軸(図示略)、C軸モータ65(
図2参照)等を備える。回転軸は回転台29に対して直交する方向に延びる。回転軸は回転台29に固定する。C軸モータ65は回転軸に固定する。故に、C軸モータ65が回転軸を回転すると、回転台29はC軸を中心に回転する。C軸は回転台29の上面に直交するように延びる。C軸が延びる方向は、A軸の回転に応じて回転する。回転台29は治具200を介してワークWを保持する。治具200は回転台29上面に固定される。C軸駆動部30は工具3に対してワークWを、C軸を中心として回転させる。
【0039】
上記構成によれば、工作機械1は、工具3をワークWに対して相対的に、X軸、Y軸、及びZ軸に沿って直線移動させ、工具3をワークWに対して相対的に、A軸及びC軸を中心に回転させる。このように、工作機械1は、ワークWに対する工具3の位置及び姿勢を変える。工作機械1は、ワークWに対する工具3の位置及び姿勢を変えながら工具3を回転させて、ワークWを加工する。
【0040】
以下では、X軸、Y軸、Z軸、A軸、及びC軸を、総称して「駆動軸」と称す。ワークWに対する工具先端の相対的な移動経路、ワークWに対する工具先端の相対的な移動距離、ワークWに対する工具先端の相対的な位置、ワークWに対する工具先端の相対的な速度、ワークWに対する工具先端の相対的な加速度、ワークWに対する工具先端の相対的な減速度、及びワークWに対する工具先端の相対的なジャークを、夫々、「先端経路」、「先端移動量」、「先端点」、「先端速度」、「先端加速度」、「先端減速度」、及び「先端ジャーク」と称す。駆動軸の速度、駆動軸の加速度、及び駆動軸の減速度を夫々「軸速度」、「軸加速度」、及び「軸減速度」と称す。
【0041】
本実施形態では、軸速度、軸加速度、及び軸減速度の正負を、座標の正負によって定義する。さらに、本実施形態では、現在の位置を基準として目的地に近づく移動距離を「正」とし、現在の位置を基準として目的地から離れる移動距離(過去に遡った移動距離)を「負」として、速度の正負を定義する。目的地は、詳しくは後述するが、処理順序が現在のブロック以降のブロックの指令点であり、例えば先読みブロックの指令点である。現在の位置を基準として目的地に近づく速度を「正」とし、現在の位置を基準として目的地から離れる速度を「負」として、速度の正負を定義する。速度が正の方向に大きくなる加速度を「正」とし、速度が「正」から「0mm/min」に近づく加速度を「負」として、加速度の正負を定義する。
【0042】
原則として、「正」又は「0m/s^2」の加速度を単に「加速度」と称し、「負」の加速度の絶対値を、「減速度」と称す。例えば「減速度が増える」、又は「減速度が大きくなる」とは、負の加速度が負の方向に大きくなることを意味する。即ち、「減速度が増える」、又は「減速度が大きくなる」とは、減速における速度の変化量が大きくなることを意味する。ただし、記述を簡単にするため、「負」の加速度、及び「負」又は「0」の減速度の記載を許容し、単にそのまま加速度や減速度と称す場合がある。ただし、後述する逆向き補間速度Vrevと第二立上速度V2については、目的地を基準として現在の位置に近づく速度を「正」とする。後述する逆向き補間加速度Arevは、逆向き補間速度Vrevが正の方向に大きくなる加速度を「正」とする。逆向き補間速度Vrev、第二立上速度V2、及び逆向き補間加速度Arevは「負」になることはない。さらに、本実施形態において、ジャーク(m/s^3)は、加速度の変化量の絶対値又は減速度の変化量の絶対値をいう。
【0043】
図2を参照し、工作機械1の電気的構成を説明する。工作機械1は数値制御装置40を備える。数値制御装置40は制御箱の内側に格納される。数値制御装置40はNCプログラムに基づき工作機械1の動作を制御する。工作機械1を覆うカバーの外壁面には操作盤10が設けられる。操作盤10は操作部17、表示部18、接続口19を備える。操作部17は数値制御装置40の各種設定を行う。表示部18は各種画面、メッセージ、アラーム等を表示する。接続口19は外部記憶媒体46Aを装着する端子を含む。外部記憶媒体46Aの一例はUSBメモリである。
【0044】
数値制御装置40は、CPU41、ROM42、RAM43、フラッシュメモリ44、入出力部45、外部インタフェース(I/F)46、駆動回路51~56を備える。CPU41は工作機械1の動作を制御する。CPU41はフラッシュメモリ44に記憶した制御プログラムを実行する。以下では、CPU41による演算周期を単に「周期」と称す。ROM42は各種設定情報を記憶する。RAM43は各種処理実行中に発生する各種データを記憶する。フラッシュメモリ44は制御プログラム、後述の許容値、NCプログラム等を記憶する。
【0045】
入出力部45は駆動回路51~56、操作部17、表示部18との間で各種信号の入出力を行う。駆動回路51とX軸モータ61、駆動回路52とY軸モータ62、駆動回路53とZ軸モータ63、駆動回路54とA軸モータ64、駆動回路55とC軸モータ65、駆動回路56と主軸モータ66は夫々接続する。駆動回路51~56は夫々CPU41が出力するパルス信号を、X軸モータ61、Y軸モータ62、Z軸モータ63、A軸モータ64、及びC軸モータ65、及び主軸モータ66に出力する。X軸モータ61、Y軸モータ62、Z軸モータ63、A軸モータ64、及びC軸モータ65は何れもサーボモータである。外部I/F46は、接続口19に装着した外部記憶媒体46Aから情報を読み出すためのインタフェース素子である。例えばCPU41は、外部記憶媒体46Aに記憶した制御プログラムを、外部I/F46により読み出す。
【0046】
図3を参照し、NCプログラムを説明する。NCプログラムは、複数のブロックがブロック番号の順に並んで構成される。ブロック番号は、各ブロックの処理順序を示す。以下、敢えて限定しない限り、複数のブロックは、NCプログラムに含まれる複数のブロックを意味する。複数のブロックは、夫々、Gコード等のコードを含み、少なくとも先端点を指令する。以下、各ブロックによって指令される先端点、即ちNCプログラムに基づいて工具先端が通る位置を「指令点」と称す。
【0047】
各ブロックは、コードの種類によって、先端速度の指令の有無が異なる。例えば、各ブロックは、コードがG0(位置決め)の場合には先端速度を指令せず、コードがG1(直線補間)の場合には、先端速度を指令する。以下、各ブロックによって指令される先端速度、即ちNCプログラムに基づく先端速度を「指令送り速度」と称す。
【0048】
例えば、NCプログラム441は、ブロック番号N1~N8の8つのブロックによって構成される。8つのブロックの夫々のコードは、何れもG1(直線補間)を示す。8つのブロックの夫々の指令点は、X座標、Y座標、Z座標、A座標、及びC座標によって示される。ブロック番号N5以外の7つのブロックの指令送り速度は、何れも10000mm/minを示す。ブロック番号N5のブロックの指令送り速度は、7000mm/minを示す。
【0049】
以下では、Nを自然数としてブロック番号NのブロックをブロックNと表記し、ブロックNに対応するパラメータをパラメータ(N)と表記する場合がある。例えば、ブロックN5の指令送り速度「7000mm/min」は、指令送り速度(N5)と表記する場合がある。さらに、ブロックの指令点を「ブロックの終点」と表記する場合がある。ブロックN-1の終点(指令点)は、ブロックNの始点に接続される。
【0050】
CPU41は、フラッシュメモリ44からNCプログラムを読み込む。CPU41は複数のブロックをブロック番号の順に処理することで、指令点及び指令送り速度のうち少なくとも指令点に基づいて、先端点及び先端速度を制御する。以下では、複数のブロックのうち処理順序が最後のブロックを「最終ブロック」と称す。NCプログラム441では、処理順序が最後のブロックN8が最終ブロックとなる。複数のブロックのうち何れか1つであり、現在の制御対象となっているブロックを「現在ブロック」と称す。つまり、現在ブロックは、複数のブロックのうち現在の先端点が属するブロックである。例えば、NCプログラム441の実行開始時では、ブロックN1が現在の制御対象となるので、ブロックN1が現在ブロックとなる。さらに、複数のブロックにおいて、処理順序が進む方向を「正向き」といい、処理順序が戻る方向を「逆向き」という。NCプログラム441では、ブロックN1の始点からブロックN8の終点に向かう方向が正向きであり、ブロックN8の終点からブロックN1の始点に向かう方向が逆向きである。
【0051】
許容値を説明する。許容値は定数であり、ワークWの加工時に工具3にかかる負荷等に基づいて定められる。本実施形態では、許容値は、各駆動軸の最大軸速度差、最大先端ジャーク、各駆動軸の最大軸加速度、及び各駆動軸の最大軸速度を含む。最大軸速度差は、終点(N-1)での軸速度と始点(N)での軸速度との差の上限(許容される最大値)を、駆動軸ごとに示す。例えば、X軸の最大軸速度差は、終点(N-1)でのX軸の軸速度と始点(N)でのX軸の軸速度との許容される差の上限である。最大先端ジャークは、先端経路における許容される先端ジャークの上限である。つまり、最大先端ジャークは、1周期当たりのワークWに対する工具先端の相対的なジャークの許容される上限である。以下では、単位時間(本実施形態では1周期)あたりの最大先端ジャークを「単位最大先端ジャーク」と称す。即ち単位最大先端ジャークは、1周期の間に先端加速度又は先端減速度が変化する量である。最大軸加速度は、許容される軸加速度又は軸減速度の上限を、駆動軸ごとに示す。例えば、X軸の最大軸加速度はX軸の許容される軸加速度の上限である。最大軸速度は、駆動軸の許容される速度の上限を、駆動軸ごとに示す。例えば、X軸の最大軸速度はX軸の許容される速度の上限である。
【0052】
本実施形態における算出対象として、最大先端加速度、最大先端減速度、通過許容速度、制限速度、第一接続速度、第二接続速度、接続速度、及び始点速度を説明する。最大先端加速度は、先端経路における許容される先端加速度の上限である。詳細には、最大先端加速度は、先端経路上の各補間点とその補間点での先端速度とにおいて、すべての駆動軸について、軸加速度の絶対値が、対応する駆動軸の最大軸加速度以下となる先端加速度の上限である。なお、最大先端加速度には、回転軸(A軸及びC軸)の影響がある。このため、最大先端加速度は、補間点だけでなく、補間点での先端速度にも依存する。
【0053】
最大先端減速度は、先端経路における許容される先端減速度の上限である。詳細には、最大先端減速度は、先端経路上の各補間点とその補間点での先端速度において、すべての駆動軸について、軸減速度の絶対値が、対応する駆動軸の最大軸加速度以下となる先端減速度の上限である。なお、最大先端減速度には、回転軸(A軸及びC軸)の影響がある。このため、最大先端減速度は、補間点だけでなく、補間点での先端速度にも依存する。
【0054】
通過許容速度は先端経路上の各補間点において、すべての駆動軸について、軸加速度の絶対値が、対応する駆動軸の最大軸加速度以下となり、且つすべての駆動軸について、軸速度の絶対値が、対応する駆動軸の最大軸速度以下となる先端速度の上限である。制限速度は先端経路上の各補間点において、許容される先端速度の上限である。本実施形態では、制限速度は、指令送り速度(N)と通過許容速度のうち最小値である。つまり、制限速度は、通過許容速度が指令送り速度(N)で制限された速度である。なお、コードがG0(位置決め)の場合等、指令送り速度がNCプログラムによって指令されない場合、制限速度は、指令送り速度で制限されないので、通過許容速度と同じ値となる。
【0055】
第一接続速度(N)は、すべての駆動軸について、終点(N-1)での軸速度と始点(N)での軸速度との差の絶対値が、対応する駆動軸の最大軸速度差以下となる始点(N)での先端速度の上限である。第二接続速度(N)は、終点(N-1)における最大先端加速度と始点(N)における最大先端加速度との差の絶対値が、単位最大先端ジャーク以下となる始点(N)での先端速度の上限である。接続速度(N)は、第一接続速度(N)と第二接続速度(N)のうち最小値である。
【0056】
なお、複数のブロックのうち処理順序が最初のブロックの第一接続速度は、0mm/minとする。複数のブロックのうち処理順序が最初のブロックの第二接続速度は、0mm/minとする。故に、複数のブロックのうち処理順序が最初のブロックの接続速度は、0mm/minとなる。
【0057】
始点速度(N)は、始点(N)における許容される先端速度の上限である。本実施形態では、始点速度(N)は、接続速度(N)と指令送り速度(N)と指令送り速度(N―1)とのうち最小値である。つまり、始点速度(N)は、接続速度(N)が指令送り速度(N)で制限された速度である。なお、コードがG0(位置決め)の場合等、指令送り速度がNCプログラムによって指令されない場合、始点速度(N)は、指令送り速度(N)と指令送り速度(N―1)で制限されないので、接続速度(N)と同じ値となる。複数のブロックのうち処理順序が最初のブロックの始点速度は、0mm/minとする。
【0058】
図4を参照し、ブロック情報記憶エリア431を説明する。ブロック情報記憶エリア431はRAM43に設けられる。ブロック情報記憶エリア431には、先端移動量(mm)、始点速度(mm/min)、及び指令送り速度(mm/min)が夫々、ブロック番号と対応付けられて記憶される。
【0059】
先端移動量(N)は、始点(N)から終点(N)までの工具先端の移動距離である。CPU41は、指令点(N-1)と指令点(N)との間の距離を、先端移動量(N)として算出する。なお、先端移動量(N1)は、現在の先端点(例えば原点)から指令点(N1)までの工具先端の移動距離である。
【0060】
図5~
図21を参照し、本実施形態における先端点制御の概要について、CPU41が
図3に示すNCプログラム441に基づいて先端点制御を行う場合を例として説明する。
図5~
図21中のN1~N8は、夫々、ブロックN1~ブロックN8を示す。
図5~
図21では、工具先端の速度曲線において、始点Ps(N1)から延びる実線は、工具先端が実際に移動した速度曲線を示し、破線及び目標ブロックNdの終点Peから延びる実線は、CPU41によって算出された仮想的な速度曲線を示す。CPU41は、後述の加減速処理及び逆向き補間を行う前に、ブロック情報記憶エリア431の各エリアに情報を記憶する。
【0061】
具体的には、CPU41は、現在ブロックNnowとしてブロックN1を読み込む。CPU41は、先端移動量(N1)と始点速度(N1)と指令送り速度(N1)とを算出し、ブロック情報記憶エリア431において、算出された先端移動量と始点速度と指令送り速度とをブロックN1と対応付けて記憶する。
【0062】
以下では、複数のブロックのうち処理順序が現在ブロックNnowよりも後の1つ又は複数のブロックを先読みブロックと称す。CPU41は、先読みブロックを読み込む。CPU41が読み込み可能な先読みブロックの個数の上限を「先読み上限値」と称す。先読み上限値は、フラッシュメモリ44に記憶される。先読み上限値は、特定の値に限定されないが、本実施形態では5つである。
【0063】
CPU41は、先読み上限値の個数(本実施形態では5つ)の先読みブロックとして5つのブロックN2~ブロックN6を読み込む。この場合、ブロックN6が先読み終点ブロックNendとなる。先読み終点ブロックNendは、先読みブロックのうち処理順序が最後のブロックである。即ち、先読み上限値(5つ)を所定順序(5順)とした場合、先読み終点ブロックNendは、処理順序が現在ブロックNnowから所定順序後(5順後)のブロックである。
【0064】
CPU41は、読み込んだブロックN2~ブロックN6の夫々について、先端移動量(N2~N6)と始点速度(N2~N6)と指令送り速度(N2~N6)とを算出し、ブロック情報記憶エリア431において、算出された先端移動量と始点速度と指令送り速度とを、夫々、ブロックN2~ブロックN6と対応付けて記憶する。
【0065】
図5に示すように、CPU41は、目標ブロックNdを先読み終点ブロックNendのブロックN6に決定し、終点Pe(N6)における目標速度Vdを「0mm/min」に決定する。目標ブロックNdは、現在ブロック及び先読みブロックの何れか1つであり、目標となるブロックである。目標速度Vdは、目標となる先端速度である。これにより、CPU41は終点Pe(N6)で工具先端が停止することを保障する。
【0066】
図6に示すように、CPU41は、始点Ps(N1)から加減速処理を行うことで、先端点を始点Ps(N1)から現在の先端点(以下、「現在位置Pf」と称す。)まで移動させる。本実施形態の加減速処理は、第一速度制御処理と第二速度制御処理とを含む。詳しくは後述するが、第一速度制御処理では、主に工具先端の加速又は減速に関する処理が行われ、第二速度制御処理では、主に工具先端の減速に関する処理が行われる。
【0067】
CPU41は、先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残未満の場合、第一速度制御処理を行う。CPU41は、先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残以上の場合、第二速度制御処理を行う。先端移動量L1は、現在位置Pfから後述の第一立上点P1までの先端移動量である。先端移動量L1は、先端経路において、第一立上点P1が現在位置Pfに対して正向きに位置する場合に「正」となり、第一立上点P1が現在位置Pfに対して逆向きに位置する場合に「負」となる。先端加速度が0m/s^2の場合、第一立上点P1が現在位置Pfと一致するので、先端移動量L1は0mmとなる。
【0068】
先端移動量L2は、後述の第二立上点P2から後述の逆向き補間点Prevまでの先端移動量である。詳しくは後述するが、逆向き補間点Prevは先端経路において第二立上点P2に対して逆向きに位置することはない。このため、先端移動量L2は「負」になることはない。先端移動量L3は、目標ブロックNdの終点Peから逆向き補間点Prevまでの先端移動量である。詳しくは後述するが、目標ブロックNdの終点Peは先端経路において逆向き補間点Prevに対して逆向きに位置することはない。このため、先端移動量L3は「負」になることはない。移動残は、現在位置Pfから目標ブロックNdの終点Peまでの先端移動量である。
【0069】
例えば
図6では、先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残未満である。このため、第一速度制御処理が行われ、現在の先端速度Vfが上昇する。この場合、CPU41は各補間点における制限速度Vpを算出する。
【0070】
補間点の1つとして第一立上点P1を定義する。第一立上点P1は、先端経路において、現在位置Pfよりも正向きの位置であり、且つ先端加速度が現在の先端加速度から第一所定加速度になる位置、又は先端経路において、現在位置Pfよりも逆向きの位置であり、且つ先端減速度が現在の先端減速度から第一所定減速度になる位置である。第一所定加速度及び第一所定減速度は、夫々、特定の値に限定されないが、実質的に0m/s^2といえる値が好ましく、本実施形態では0m/s^2である。以下では、第一立上点P1のうち、先端経路において、現在位置Pfよりも正向きの位置であり、且つ先端加速度が現在の先端加速度から0m/s^2になる位置を「第一立上点P1(正向き)」と表記し、第一立上点P1のうち、先端経路において、現在位置Pfよりも逆向きの位置であり、且つ先端減速度が現在の先端減速度から0m/s^2になる位置を「第一立上点P1(逆向き)」と表記する。第一立上点P1(正向き)及び第一立上点P1(逆向き)を特に区別しない場合には、単に「第一立上点P1」と表記する。
図6では、第一立上点P1(正向き)が現在位置Pfに対して正向きに位置するので、先端移動量L1は正の値となる。
【0071】
さらに、第一立上点P1における先端速度を「第一立上速度V1」と称す。第一立上点P1(正向き)における第一立上速度V1を「第一立上速度V1(正向き)」と表記し、第一立上点P1(逆向き)における第一立上速度V1を「第一立上速度V1(逆向き)」と表記する。第一立上速度V1(正向き)及び第一立上速度V1(逆向き)を特に区別しない場合には、単に「第一立上速度V1」と表記する。
【0072】
図6では、第一立上点P1における制限速度Vpは、例えば10000mm/minである。このため、第一速度制御処理では、第一立上速度V1が第一立上点P1における制限速度Vp(10000mm/min)を超えないように、先端速度が制御される。
【0073】
CPU41は、第一速度制御処理による加速を行いながら、終点Pe(N6)から逆向きに逆向き補間を行う。詳細には、CPU41は、逆向き補間点Prev、逆向き補間速度Vrev、及び逆向き補間加速度Arevを、後述の条件を満たすまで順次算出する。以下では最初に算出される逆向き補間点Prevを「最初の逆向き補間点Prev」と称す。最初の逆向き補間点Prev、最初の逆向き補間点Prevにおける逆向き補間速度Vrev、及び最初の逆向き補間点Prevにおける逆向き補間加速度Arevは、夫々、目標ブロックNdの指令点(即ち、終点Pe(N6))、目標速度Vd、及び、第二所定加速度とする。第二所定加速度は、特定の値に限定されないが、実質的に0m/s^2といえる値が好ましく、本実施形態では0m/s^2である。現在の逆向き補間点Prevの次に算出される逆向き補間点Prevは、先端経路において、現在の逆向き補間点Prevから逆向きに、現在の逆向き補間速度Vrev、現在の逆向き補間加速度Arev、最大先端加速度、及び最大先端ジャークに基づく速度で所定時間の間移動する量だけ工具先端が移動する位置である。より詳細には、CPU41は、仮想的に、先端ジャークが最大先端ジャークを超えないように先端加速度を0m/s^2から増加させ、且つ先端加速度が最大先端加速度を超えないように、目標ブロックNdの終点Peから逆向きに、先端速度を目標速度Vdから所定時間加速させる。所定時間は、1又は複数の周期分の長さであり、本実施形態では、1周期分の長さである。所定時間は、一定の長さでなくてもよい。なお、本実施形態において、特段限定しない限り、逆向き補間点Prev、逆向き補間速度Vrev、及び逆向き補間加速度Arevは、夫々、現在の逆向き補間点Prev、現在の逆向き補間速度Vrev、及び現在の逆向き補間加速度Arevを示す。
【0074】
逆向き補間点Prevが算出されることで、終点Pe(N6)から逆向き補間点Prevまでの工具先端の速度曲線が算出される。CPU41は、第二立上速度V2を算出する。第二立上速度V2は、第二立上点P2における先端速度である。第二立上点P2は、先端経路において、逆向き補間点Prevから逆向きに、先端加速度が逆向き補間点Prevにおける先端加速度から第三所定加速度になる位置である。第三所定加速度は、特定の値に限定されないが、実質的に0m/s^2といえる値が好ましく、本実施形態では0m/s^2である。CPU41は、第一立上速度V1を算出した後、逆向き補間と第二立上速度V2の算出とを、第二立上速度V2が第一立上速度V1以上になるまで繰り返し行う。
【0075】
図7に示すように、第一速度制御処理による加速が繰り返されると、現在位置Pfが終点Pe(N1)に達する。これにより、ブロックN1の加減速処理(第一速度制御処理による加速)が完了する。この場合、現在ブロックNnowはブロックN1からブロックN2に移行する。即ち、ブロックN2は先読みブロックから現在ブロックNnowに切り替わる。
【0076】
図8に示すように、先読みブロックの個数が先読み上限値(5つ)となるように、CPU41は先読みブロックとしてブロックN7を読み込む。これにより、先読み終点ブロックNendがブロックN6からブロックN7に移行する。CPU41は、先端移動量(N7)と始点速度(N7)と指令送り速度(N7)とを算出し、
図4に示すブロック情報記憶エリア431において、算出された先端移動量と始点速度と指令送り速度とをブロックN7と対応付けて記憶する。CPU41は、ブロックN6に代えてブロックN7を目標ブロックNdに新たに設定する。これにより、終点Pe(N7)における目標速度Vdが「0mm/min」となる。
【0077】
図9に示すように、第一速度制御処理による加速と逆向き補間が繰り返されると、第二立上速度V2が5000mm/minに達する場合がある。この場合、始点速度Vs(N5)が5000mm/minなので、第二立上速度V2は始点速度Vs(N5)と同じになる。移行ブロックを定義する。移行ブロックは、処理順序が現在ブロックNnowよりも1つ後のブロックと到達ブロックとの間の処理順序における先読みブロックのうち、始点速度Vsが第二立上速度V2以下となる1又は複数のブロックである。
【0078】
到達ブロックは、先読みブロックのうち第二立上点P2が属するブロックである。
図9では、ブロックN6が到達ブロックとなる。ブロックN5は、処理順序がブロックN2よりも1つ後のブロックN3とブロックN6との間の処理順序における先読みブロックである。始点速度Vs(N5)は第二立上速度V2以下である。故にブロックN5は移行ブロックとなる。移行ブロックのうち、始点速度Vsが最も小さいブロックを「移行対象ブロック」と称す。移行ブロックがブロックN5だけなので、ブロックN5が移行対象ブロックとなる。さらに、始点速度Vsが最も小さい移行ブロックが複数ある場合には、始点速度Vsが最も小さい複数の移行ブロックのうち処理順序が最初のブロックが移行対象ブロックとなる。
【0079】
図10に示すように、CPU41は、処理順序が移行対象ブロックよりも1つ前のブロックN4を目標ブロックNdに設定する。CPU41は、終点Pe(N4)における目標速度Vdに、始点速度Vs(N5)である「5000mm/min」を設定する。CPU41は第一速度制御処理による加速を繰り返す。
【0080】
図11に示すように、ブロックN2の第一速度制御処理による加速が完了すると、現在ブロックNnowがブロックN2からブロックN3に移行するとともに、CPU41は先読みブロックとしてブロックN8を読み込む。これにより、先読み終点ブロックNendがブロックN7からブロックN8に移行する。CPU41は、先端移動量(N8)と始点速度(N8)と指令送り速度(N8)とを算出し、
図4に示すブロック情報記憶エリア431において、算出された先端移動量と始点速度と指令送り速度とをブロックN8と対応付けて記憶する。
【0081】
第一速度制御処理による加速及び逆向き補間が繰り返されると、先端移動量L1と先端移動量L2と先端移動量L3の合計距離が移動残以上になる。この場合、CPU41は第二速度制御処理による減速を行う。これにより、先端加速度が減少する。目標速度Vdは、5000mm/minである。このため、第二速度制御処理では、各補間点において、後述の立下速度V3が目標速度Vd(5000mm/min)未満にならないように、先端速度が制御される。
【0082】
図12に示すように、第二速度制御処理による減速が繰り返されると、現在位置Pfが終点Pe(N3)に達する。この場合、ブロックN8が最終ブロックなので、ブロックN9は読み込まれない。
図13に示すように、第二速度制御処理による減速がさらに繰り返されると、現在位置Pfが目標ブロックNdの終点Pe(N4)まで達する。これにより、目標ブロックNdの終点Pe(N4)において、現在の先端速度Vfが目標速度Vd(5000mm/min)となる。故に目標ブロックNdのブロックN4までの加減速処理が完了する。
【0083】
図14に示すように、CPU41は、目標ブロックNdを先読み終点ブロックNendのブロックN8に設定する。CPU41は、目標ブロックNdの終点Pe(N8)における目標速度Vdを0mm/minに設定する。CPU41は、逆向き補間と加減速処理を繰り返す。
図14では、先端移動量L1と先端移動量L2と先端移動量L3の合計距離が移動残未満となる。この場合、CPU41は第一速度制御処理による加速を行い、工具先端を加速させる。
【0084】
図15に示すように、ブロックN5の途中までの各補間点における制限速度Vpは、7000mm/minである。このため、第一速度制御処理による加速では、ブロックN5の途中までの各補間点において、第一立上速度V1が第一立上点P1における制限速度Vp(7000mm/min)を超えないように、先端速度が制御される。即ち、第一速度制御処理では、先端速度が加速されて制限速度Vp(7000mm/min)に到達すると、その後、制限速度Vpが7000mm/minから変わるまで、先端速度が制限速度Vpで制御される。
【0085】
図16に示すように、ブロックN5の途中から各補間点における制限速度Vpが7000mm/minから徐々に減少する。指令送り速度(N5)は7000mm/minで一定なので、「ブロックN5の途中から各補間点における制限速度Vpが徐々に減少する」とは、ブロックN5の途中から各補間点における通過許容速度が7000mm/min未満となるように徐々に低下することを意味する。この場合、CPU41は第一速度制御処理による減速を行う。
【0086】
さらに、CPU41は、第一立上速度V1(逆向き)を算出する。算出される第一立上速度V1は、第一速度制御処理による減速が開始された時点での先端速度と等しい。即ち、第二立上速度V2は第一立上速度V1(逆向き)と既に等しい。故にCPU41は逆向き補間点Prevを更新しない。
【0087】
図17に示すように、第一速度制御処理による減速が繰り返されると、現在位置Pfが終点Pe(N5)に到達する。これにより、ブロックN5の加減速処理が完了する。
【0088】
図18に示すように、第一速度制御処理による減速が繰り返され、現在の先端減速度が最大先端減速度と等しくなると、CPU41は第一速度制御処理による減速を行いながら、逆向き補間点Prevから正向きに逆向き補間の巻き戻しを行う。詳細には、第一立上速度V1(逆向き)が、第一速度制御処理による減速が開始された時点での先端速度よりも小さくなる。理由は、現在の先端速度Vfに対して速度が加えられて第一立上速度V1(逆向き)が算出される場合に、先端減速度が最大先端減速度と等しくなっている区間の速度変化が現在の先端速度Vfに加えられないからである。つまり、第一立上速度V1(逆向き)は、先端減速度が最大先端減速度と等しくなっている区間分の速度変化の大きさだけ、第一速度制御処理による減速が開始された時点での先端速度よりも小さくなる。
【0089】
逆向き補間の巻き戻しでは、CPU41は、既に算出された逆向き補間点Prevの中から1つずつ正向きに順に取得する。CPU41は、既に算出された第二立上速度V2の中から、取得された逆向き補間点Prevに対応する第二立上速度V2を取得する。これにより、第二立上速度V2が低下する。なお、CPU41は逆向き補間点Prev及び第二立上速度V2を改めて算出してもよい。CPU41は、第二立上速度V2が第一立上速度V1未満にならない範囲で最大限に、逆向き補間の巻き戻しを繰り返す。ただし、逆向き補間点Prevが目標ブロックNdの終点Peとなった場合、CPU41は、逆向き補間の巻き戻しの繰り返しを終了する。
【0090】
図18では、第一立上点P1(逆向き)が現在位置Pfに対して逆向きに位置するので、先端移動量L1は負の値となる。先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残未満である。このため、第一速度制御処理による減速が行われる。
【0091】
補間点の1つとして立下点P3を定義する。立下点P3は、先端経路において、現在位置Pfよりも正向きの位置であり、且つ先端減速度が現在の先端減速度から第二所定減速度になる位置である。第二所定減速度は、特定の値に限定されないが、実質的に0m/s^2といえる値が好ましく、本実施形態では0m/s^2である。さらに、立下点P3における先端速度を「立下速度V3」と称す。第一速度制御処理では、立下速度V3が立下点P3における制限速度Vpを超えないように、先端速度が制御される。なお、加速度が負の場合も許容する記述において、加速度が負の場合の第一立上点P1(正向き)は実際には立下点P3を意味し、第一立上速度V1は立下速度V3を意味する。以降では改めて言及しない。
【0092】
図19に示すように、第一速度制御処理による減速から加速に切り替わると、CPU41は、
図18に示す立下速度V3から第一立上速度V1を算出するように切り替わる。ブロックN6の各補間点における制限速度Vpは、10000mm/minである。CPU41は、第一速度制御処理において、算出された第一立上速度V1が、第一立上点P1における制限速度Vp(10000mm/min)を超えないように工具先端を再度加速させる。
【0093】
図20に示すように、第一速度制御処理による加速が繰り返されると、先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残以上になる。この場合、第二速度移行処理による減速が行われる。
【0094】
図21に示すように、第二速度制御処理による減速が繰り返されることで、現在位置Pfが終点Pe(N8)となり、終点Pe(N8)での先端速度が目標速度Vd(0mm/min)となる。これにより、最終ブロックのブロックN8までの加減速処理が完了する。以上により、
図3に示すNCプログラム441に基づく先端点制御が完了する。
【0095】
図22を参照し、CPU41が
図3に示すNCプログラム441に基づいて先端点制御を行った場合における先端加速度の経時変化を説明する。
図22の説明では、負の加速度(減速度)も単に加速度という場合がある。
図22では、上のグラフが工具先端の速度曲線を実線R1で示し、下のグラフが工具先端の加速度曲線を実線R2で示し、最大先端加速度を破線R3で示し、最大先端減速度を破線R4で示す。なお、「曲線」は、直線も含む概念である。先端加速度は、Ps(N1)において0m/s^2である。先端加速度は、Ps(N1)から上昇し、ブロックN2の途中において、最大先端加速度に到達する。その後、先端加速度は、減少し、ブロックN3の途中において、0m/s^2に到達する。先端速度は、Ps(N1)において0mm/minである。先端速度は、Ps(N1)から上昇し、ブロックN3の途中において先端加速度が0m/s^2に到達した時点でピークとなる。
【0096】
先端加速度は、ブロックN3の途中において、0m/s^2に到達した時点からさらに減少し、終点Pe(N3)から上昇に切り替わる。その後、先端加速度は、終点Pe(N4)において0m/s^2に到達する。先端速度は、ブロックN3の途中におけるピークから減少し、終点Pe(N4)において5000mm/minに到達する。先端速度は、終点Pe(N4)において先端加速度が0m/s^2に到達した時点でピークとなる。上述したように、ブロックN4は、目標ブロックNdである。
【0097】
先端加速度は、終点Pe(N4)からさらに上昇し、ブロックN5の途中から減少に切り替わる。その後、先端加速度は、ブロックN5の途中で0m/s^2に到達し、0m/s^2が維持される。先端速度は、5000mm/minに到達した後、7000mm/minまで上昇する。先端速度は、先端加速度が0m/s^2で維持されている間、7000mm/min(制限速度Vp)で維持される。
【0098】
先端加速度は、0m/s^2に維持された後、減少し、終点Pe(N5)の直前で最大先端減速度に到達する。先端加速度は、最大先端減速度で維持され、ブロックN6の途中で上昇を開始する。その後、先端加速度は、ブロックN6の途中で0m/s^2に到達する。先端速度は、7000mm/min(制限速度Vp)で維持された後、制限速度Vpの減少に伴って減少する。その後、先端速度は、ブロックN6の途中において先端加速度が0mm/minに到達した時点でピークとなる。
【0099】
先端加速度は、ブロックN6の途中で0m/s^2に到達した後、さらに上昇する。先端加速度は、ブロックN6の途中で最大先端加速度に到達し、最大先端加速度で維持される。先端加速度は、最大先端加速度で維持された後、減少し、終点Pe(N6)において0m/s^2に到達する。先端速度は、ブロックN6の途中におけるピークから上昇し、終点Pe(N6)において先端加速度が0m/s^2に到達した時点でピークとなる。
【0100】
先端加速度は、終点Pe(N6)からさらに減少し、ブロックN8の途中において最大先端減速度に到達する。先端加速度は、最大先端減速度で維持された後、上昇する。先端加速度は、終点Pe(N8)において、0m/s^2に到達する。先端速度は、終点Pe(N6)におけるピークから減少する。先端速度は、終点Pe(N8)において先端加速度が0m/s^2に到達した時点で0mm/minに到達する。
【0101】
図23、
図24を参照し、メイン処理を説明する。上述した先端点制御を実現するために、CPU41はメイン処理を行う。ユーザは、制御対象のNCプログラムを指定し、且つ指定されたNCプログラムに基づく制御を開始するための開始指示を、操作部17を介して数値制御装置40に入力する。CPU41は、操作部17を介して開始指示を検出した場合、フラッシュメモリ44に記憶された制御プログラムを実行することによって、メイン処理を開始する。なお、メイン処理では、CPU41は、算出、設定等した各値、現在の先端速度、先端加速度等をRAM43に適宜記憶する。以下では、CPU41が
図3に示すNCプログラム441に基づいて先端点制御を行う場合を適宜例に挙げて説明する。
【0102】
図23に示すように、メイン処理が開始されると、CPU41は現在ブロックNnowに「1」を設定する(S11)。CPU41は先読み終点ブロックNendに「1」を設定する(S11)。CPU41はNCプログラムから現在ブロックNnowを読み込む(S12)。CPU41は現在位置Pfと指令点(Nnow)とに基づいて、先端移動量(Nnow)を算出する(S13)。CPU41は読み込んだ現在ブロックNnowから指令送り速度(Nnow)を取得する(S13)。
【0103】
CPU41は目標ブロックNdに先読み終点ブロックNendを設定する(S14)。CPU41は目標速度Vdに「0mm/min」を設定する(S14)。CPU41は逆向き補間点Prevに終点Pe(Nend)を設定する(S20)。CPU41は逆向き補間速度Vrevに「0mm/min」を設定する(S20)。逆向き補間速度Vrevは、逆向き補間点Prevにおける先端速度である。CPU41は逆向き補間加速度Arevに「0m/s^2」を設定する(S20)。逆向き補間加速度Arevは、逆向き補間点Prevにおける先端加速度である。
【0104】
CPU41は、NendがNnowとNparaとの合計値以上であるか判断する(S21)。Nparaは、先読み上限値を示す。先読みブロックの個数が先読み上限値Nparaよりも少ない場合、NendはNnowとNparaとの合計値よりも小さい(S21:NO)。この場合、CPU41はNCプログラムの中にブロックNend+1があるか判断する(S22)。
【0105】
先読み終点ブロックNendが最終ブロックでない場合、NCプログラムの中にブロックNend+1がある(S22:YES)。この場合、CPU41はNCプログラムからブロックNend+1を読み込む(S23)。CPU41は指令点(Nend)と指令点(Nend+1)とに基づいて、先端移動量(Nend+1)を算出する(S24)。CPU41は読み込んだブロックNend+1から指令送り速度(Nend+1)を取得する(S24)。
【0106】
CPU41は始点速度Vs(Nend+1)を算出する(S24)。詳細には、CPU41は終点Pe(Nend)における先端速度が所定の先端速度であると仮定した場合の各駆動軸の軸速度と、始点Ps(Nend+1)における先端速度が所定の先端速度であると仮定した場合の各駆動軸の軸速度と、各駆動軸の最大軸速度差とに基づいて第一接続速度(Nend+1)を算出する。CPU41は、終点Pe(Nend)における先端速度及び先端加速度が夫々所定の先端速度及び0m/s^2であると仮定した場合の各駆動軸の軸加速度と、始点Ps(Nend+1)における先端速度及び先端加速度が夫々所定の先端加速度及び0m/s^2であると仮定した場合の各駆動軸の軸加速度と、各駆動軸の最大軸加速度と、最大先端ジャークとに基づいて、第二接続速度(Nend+1)を算出する。CPU41は第一接続速度(Nend+1)と第二接続速度(Nend+1)のうち最小値を接続速度(Nend+1)として算出する。ブロックNend+1によって指令送り速度が指令されていない場合には、CPU41は、算出された接続速度を始点速度Vs(Nend+1)とする。ブロックNend+1によって指令送り速度が指令されている場合には、CPU41は、算出された接続速度(Nend+1)と指令送り速度(Nend+1)のうち最小値を始点速度Vs(Nend+1)として算出する。
【0107】
CPU41は目標ブロックNdが先読み終点ブロックNendであるか判断する(S25)。後述の逆向き補間処理(S31)において、CPU41がS72で目標ブロックNdにブロックNtmp-1を設定していない場合、目標ブロックNdは先読み終点ブロックNendとなる(S25:YES)。この場合、CPU41は目標ブロックNdにブロックNend+1を設定する(S26)。CPU41は先読み終点ブロックNendにブロックNend+1を設定する(S27)。CPU41は処理をS20に戻す。
【0108】
CPU41がS27を繰り返すことで、先読み終点ブロックNendが「1」ずつ増加する。先読みブロックの個数が先読み上限値Npara以上になった場合、S21において、NendがNnow+Npara以上になる(S21:YES)。この場合、CPU41は処理を
図24に示すS31に移行する。
【0109】
図4に示すブロック情報記憶エリア431において、S13が行われることで、ブロックN1に対応する各エリアに、算出された各数値が記憶され、S20~S28が繰り返されることで、ブロックN2、N3、N4、N5、N6の順に、ブロックN2~N6に対応する各エリアに、算出された各数値が記憶される。
【0110】
図24に示すように、CPU41は逆向き補間処理を行う(S31)。逆向き補間処理では、CPU41は逆向き補間点Prev、第一立上速度V1、第二立上速度V2、到達ブロック、及び移行ブロックを算出する。
【0111】
図25を参照し、逆向き補間処理の詳細を説明する。逆向き補間処理が開始されると、CPU41は最大先端ジャーク、現在の先端速度Vf、及び現在の先端加速度又は現在の先端減速度に基づいて第一立上速度V1を算出する(S51)。詳細には、CPU41は、現在の先端加速度が正の値の場合、現在の先端加速度を最大先端ジャークで0m/s^2まで減らした場合に、現在の先端速度Vfから増加した先端速度を、第一立上速度V1(正向き)として算出する。CPU41は、現在の先端加速度が負の値(つまり、先端減速度)の場合、現在の先端減速度を最大先端ジャークで0m/s^2まで減らした場合に、現在の先端速度Vfから増加した先端速度を、第一立上速度V1(逆向き)として算出する。
【0112】
CPU41は最大先端ジャーク、逆向き補間速度Vrev、及び逆向き補間加速度Arevに基づいて第二立上速度V2を算出する(S53)。詳細には、CPU41は、逆向き補間加速度Arevを最大先端ジャークで0m/s^2まで減らした場合に、逆向き補間速度Vrevから増加した先端速度を、第二立上速度V2として算出する。
【0113】
さらに、CPU41は到達ブロックを算出する(S54)。CPU41は逆向き補間速度Vrevと、逆向き補間加速度Arevと、最大先端ジャークとに基づいて、第二立上点P2から逆向き補間点Prevまでの先端移動量を算出する。CPU41は算出された先端移動量と各ブロックの先端移動量とに基づいて、到達ブロックを算出する。
【0114】
CPU41は現在の先端加速度が0m/s^2以上か判断する(S60)。例えば第一制御処理による加速が開始された直後等、現在の先端加速度は0m/s^2以上となる(S60:YES)。この場合、CPU41は第二立上速度V2が第一立上速度V1以上であるか判断する(S61)。第二立上速度V2が第一立上速度V1以上の場合(S61:YES)、CPU41は処理を
図24に示すメイン処理に戻す。
【0115】
第二立上速度V2が第一立上速度V1未満の場合(S61:NO)、CPU41は1周期分、逆向き補間を行う(S62)。詳細には、CPU41は逆向き補間点Prevにおける最大先端加速度を、逆向き補間速度Vrevと最大軸加速度とに基づいて算出する。CPU41は逆向き補間速度Vrev、逆向き補間加速度Arev、算出された最大先端加速度、及びフラッシュメモリ44に記憶された最大先端ジャークに基づく最大の先端速度で、先端経路において逆向き補間点Prevから現在ブロックNnowに向かって1周期分移動した位置を逆向き補間点Prevとして算出する。CPU41は処理をS63に移行する。
【0116】
例えば第一制御処理による加速が開始された後、第一立上速度V1が第一立上点P1における制限速度Vpに達し、その後に制限速度Vpが減少した場合等、現在の先端加速度は0m/s^2よりも小さくなる(S60:NO)。この場合、CPU41は逆向き補間点Prevが目標ブロックNdの終点Peであるか判断する(S65)。
【0117】
逆向き補間点Prevが目標ブロックNdの終点Peでない場合(S65:NO)、CPU41は1周期分、逆向き補間の巻き戻しを行う(S66)。詳細には、CPU41はRAM43から1周期前の逆向き補間点Prevを取得する。CPU41は、RAM43から1周期前の逆向き補間点Prevに対応する第二立上速度V2、即ち1周期前の第二立上速度V2を取得する(S67)。
【0118】
CPU41はS67で取得された1周期前の第二立上速度V2が、S51で算出された第一立上速度V1よりも大きいか判断する(S68)。第二立上速度V2が第一立上速度V1よりも大きい場合(S68:YES)、CPU41は処理をS65に戻す。即ち、CPU41は第二立上速度V2が第一立上速度V1以下となるまで、又は逆向き補間点Prevが目標ブロックNdの終点Peになるまで、S66、S67を繰り返す。なお、S66、S67が繰り返される場合、CPU41は、前回のS66、S67で取得された逆向き補間点Prev又は第二立上速度V2よりもさらに1周期前の逆向き補間点Prev又は第二立上速度V2を取得する。第二立上速度V2が第一立上速度以下となった場合(S68:NO)、又は逆向き補間点Prevが目標ブロックNdの終点Peになった場合(S65:YES)、CPU41は処理をS61に移行する。
【0119】
例えばS61において、S53で算出された第二立上速度V2がS51で算出された第一立上速度V1以上の場合、CPU41は逆向き補間(S62)を行わない。即ち、本実施形態では、CPU41は、第一立上速度V1を1回算出しても、逆向き補間(S62)を行わない場合がある。
【0120】
第一立上速度V1は、S51で算出された値に固定される。第二立上速度V2は、後述のS63で周期的に算出され、逆向き補間が行われた場合には、算出されるたびに大きくなる。例えばCPU41がS63で第二立上速度V2を1又は複数回算出することで、S61において第二立上速度V2が第一立上速度V1以上になる場合がある。即ち、本実施形態では、CPU41は、第一立上速度V1を1回算出するたびに、逆向き補間(S62)を1又は複数回行う場合がある。
【0121】
第一立上速度V1は、S51で算出された値に固定される。第二立上速度V2は、後述のS63で周期的に算出され、逆向き補間の巻き戻しが行われた場合には、算出されるたびに小さくなる。例えばCPU41がS63で第二立上速度V2を1又は複数回算出することで、S68において第一立上速度V1が第二立上速度V2以上になる場合がある。即ち、本実施形態では、CPU41は、第一立上速度V1を1回算出するたびに、逆向き補間の巻き戻し(S66)を1又は複数回行う場合がある。
【0122】
CPU41はS62で算出された逆向き補間点Prevに基づいて第二立上速度V2を算出する(S63)。S62で算出された逆向き補間点Prevに基づく逆向き補間加速度Arevは、S53又は前回のS63の時点での逆向き補間点Prevに基づく逆向き補間加速度Arevを単位最大先端ジャーク分減らした先端加速度よりも小さくならない。このため、逆向き補間(S62)が行われた場合には、S63で算出される第二立上速度V2は、S53又は前回のS63で算出される第二立上速度V2以上になる。S66で取得された逆向き補間点Prevに基づく逆向き補間速度Vrevは、S53又は前回のS63の時点での逆向き補間点Prevに基づく逆向き補間速度Vrevよりも小さくなる。このため、逆向き補間の巻き戻し(S66)が行われた場合には、S63で算出される第二立上速度V2は、S53又は前回のS63で算出される第二立上速度V2よりも小さくなる。
【0123】
さらに、CPU41は、S62で算出された逆向き補間速度Vrevと、S62で算出された逆向き補間加速度Arevと、フラッシュメモリ44に記憶された最大先端ジャークとに基づいて、到達ブロックを算出する(S64)。CPU41は、現在ブロック及び到達ブロックと、第二立上速度V2及び先読みブロックの夫々の始点速度Vsとに基づいて、先読みブロックの中に移行ブロックがあるか判断する(S71)。移行ブロックがない場合(S71:NO)、CPU41は処理をS61に戻す。
【0124】
移行ブロックがある場合(S71:YES)、CPU41は目標速度Vdに始点速度Vs(Ntmp)を設定する(S72)。なお、Ntmpは、移行対象ブロックのブロック番号を示す。CPU41は目標ブロックNdにブロックNtmp-1を設定する(S72)。例えば、ブロックN5が移行対象ブロックNtmpの場合、ブロックN4が目標ブロックNdとなる(
図10参照)。
【0125】
CPU41は逆向き補間点Prevに始点Ps(Ntmp)を設定する(S73)。CPU41は逆向き補間速度Vrevに始点速度Vs(Ntmp)を設定する(S73)。CPU41は逆向き補間加速度Arevに「0m/s^2」を設定する(S73)。CPU41は処理をS61に戻す。
【0126】
図24の説明に戻る。逆向き補間処理の後、CPU41は先端移動量L1と先端移動量L2と先端移動量L3との合計距離と移動残を算出する(S32)。CPU41は現在位置Pfと第一立上点P1と第二立上点P2と目標ブロックNdの終点Peの先端経路上での位置に基づいて、先端移動量L1と先端移動量L2と先端移動量L3との合計距離を算出する。CPU41は、現在位置Pfと、
図23に示すS13とS17で算出した各ブロックの先端移動量とに基づいて、移動残を算出する。
【0127】
CPU41はS32で算出された合計距離がS32で算出された移動残以上であるか判断する(S33)。例えば
図6又は
図20に示すように、合計距離が移動残未満の場合(S34:NO)、目標ブロックNdの終点Peから第二立上点P2までの工具先端の速度曲線に沿った第二速度制御処理を行わなくても、CPU41は先端速度を目標ブロックNdの終点Peで目標速度Vdまで減速させることができる。このため、CPU41は第一速度制御処理を行う(S34)。第一速度制御処理では、CPU41は、第一立上速度V1が、第一立上点P1における制限速度Vpを超えないように、最大先端加速度及び最大先端ジャークに基づく先端加速度で先端速度を制御(加速、減速、又は速度維持)する。
【0128】
第一速度制御処理が繰り返されると、合計距離が大きくなるとともに、移動残が小さくなる。例えば
図11に示すように、合計距離が移動残以上になった場合(S34:YES)、目標ブロックNdの終点Peから第二立上点P2までの工具先端の速度曲線に沿った第二速度制御処理を行わなければ、CPU41は先端速度を目標ブロックNdの終点Peで目標速度Vdまで減速させることができない可能性がある。このため、CPU41は第二速度制御処理を行う(S35)。第二速度制御処理では、CPU41は第一立上速度V1が目標速度Vd未満にならないように、最大先端減速度及び最大先端ジャークに基づく先端減速度で先端速度を制御(加速、減速、又は速度維持)する。
【0129】
図26、
図27を参照し、第一速度制御処理の詳細を説明する。第一速度制御処理では、CPU41は、工具先端が加速中か否かに応じて異なる処理を行う。
図26に示すように、第一速度制御処理が開始されると、CPU41は、現在の先端加速度が0m/s^2以上か判断する(S80)。
【0130】
まず、現在の先端加速度が0m/s^2以上の場合(S80:YES)、つまり、工具先端が加速中の場合の処理を説明する。この場合、CPU41は現在の先端加速度を単位最大先端ジャーク分増やした場合の先端加速度が最大先端加速度を超えるか判断する(S81)。S81では、CPU41は第一立上速度V1と最大軸加速度とに基づいて、第一立上点P1における最大先端加速度を算出する。CPU41は、フラッシュメモリ44に記憶された最大先端ジャークに基づいて、現在の先端加速度を単位最大先端ジャーク分増やした場合の先端加速度を算出する。CPU41は、算出された先端加速度と最大先端加速度とに基づいて、S81の判断を行う。
【0131】
例えば現在の先端加速度が比較的小さい場合、CPU41が現在の先端加速度を単位最大先端ジャーク分増やしても、増えた先端加速度は最大先端加速度を超えない(S81:NO)。この場合、CPU41は現在の先端加速度を単位最大先端ジャーク分増やした場合の第一立上速度V1が第一立上点P1における制限速度Vpを超えるか判断する(S82)。
【0132】
S82では、CPU41は、最大軸速度と最大軸加速度とに基づいて、第一立上点P1における通過許容速度を算出する。CPU41は、現在ブロックNnowによって指令送り速度が指令されていない場合には、算出された通過許容速度を第一立上点P1における制限速度Vpとする。CPU41は、現在ブロックNnowによって指令送り速度が指令されている場合には、算出された通過許容速度と指令送り速度(Nnow)とのうち小さい方を第一立上点P1における制限速度Vpとする。さらに、CPU41は、フラッシュメモリ44に記憶された最大先端ジャークに基づいて、現在の先端加速度を単位最大先端ジャーク分増やした場合の第一立上速度V1を算出する。CPU41は、算出された第一立上速度V1と制限速度Vpに基づいて、S82の判断を行う。
【0133】
例えば現在の先端速度Vfが制限速度Vpよりも比較的小さい場合、CPU41が現在の先端加速度を単位最大先端ジャーク分増やしても、第一立上速度V1は第一立上点P1における制限速度Vp(Nnow)を超えない(S82:NO)。この場合、CPU41は現在の先端加速度を単位最大先端ジャーク分増やす(S83)。これにより、先端速度は時間経過とともに制限速度Vpに急激に近づく。CPU41は処理をS88に移行する。
【0134】
例えば現在の先端加速度が既に最大先端加速度に近い場合、CPU41が現在の先端加速度を単位最大先端ジャーク分増やすと、増えた先端加速度が最大先端加速度を超える(S81:YES)。さらに、例えば現在の先端速度Vfが既に、現在の先端加速度を単位最大先端ジャーク分増やした場合の第一立上点P1における制限速度Vpに近い場合、CPU41が現在の先端加速度を単位最大先端ジャーク分増やすと、第一立上速度V1が制限速度Vpを超える(S82:YES)。これらの場合、CPU41は現在の先端加速度を現在の周期の間維持すると、維持された先端加速度が、第一立上点P1において、最大先端加速度を超えるか判断する(S84)。S84では、CPU41はS81と同様に第一立上点P1における最大先端加速度を算出する。CPU41は、現在の先端加速度と算出された最大先端加速度とに基づいて、S84の判断を行う。
【0135】
現在位置Pfから第一立上点P1までの間に最大先端加速度が維持又は増加する場合、CPU41が現在の先端加速度を現在の周期の間維持しても、維持された先端加速度は最大先端加速度を超えない(S84:NO)。この場合、CPU41は現在の先端加速度を現在の周期の間維持した場合の第一立上速度V1が制限速度Vpを超えるか判断する(S85)。S85では、CPU41はS82と同様に、現在の先端加速度を維持した場合の第一立上点P1における制限速度Vpを算出する。CPU41は現在の周期において、現在の先端速度に基づいて、現在の先端加速度を維持した場合の第一立上速度V1を算出する。CPU41は算出された制限速度Vpと第一立上速度V1とに基づいて、S85の判断を行う。
【0136】
例えば現在の先端速度Vfが、現在の先端加速度を維持した場合の第一立上点P1における制限速度Vpから比較的離れている場合、CPU41が現在の先端加速度を現在の周期の間維持しても、第一立上速度V1は第一立上点P1における制限速度Vpを超えない(S85:NO)。この場合、CPU41は現在の先端加速度を現在の周期の間維持する(S86)。これにより、先端速度は時間経過とともに制限速度Vpに線形で近づく。CPU41は処理をS88に移行する。
【0137】
現在位置Pfから第一立上点P1までの間に最大先端加速度が現在の最大先端加速度よりも低下することで、維持された先端加速度が現在の周期の間に最大先端加速度を超える場合がある(S84:YES)。さらに、例えば現在の先端速度Vfが既に、現在の先端加速度を維持した場合の第一立上点P1における制限速度Vpに近い場合、CPU41が現在の先端加速度を現在の周期の間維持すると、第一立上速度V1が第一立上点P1における制限速度Vpを超える(S85:YES)。これらの場合、CPU41は現在の先端加速度を単位最大先端ジャーク分減らす(S87)。これにより、先端速度は時間経過とともに制限速度Vpに緩やかに近づく。CPU41は処理をS88に移行する。
【0138】
S83、S86、又はS87の後、CPU41は速度更新処理を行う(S88)。S88の速度更新処理では、CPU41は、S83、S86、又はS87で算出された先端加速度で加速した場合の1周期分の速度変化量を現在の先端速度Vfに加えることで、先端速度を算出する。CPU41は、工作機械1における実際の先端速度が、算出された先端速度になるように、X軸モータ61、Y軸モータ62、Z軸モータ63、A軸モータ64、及びC軸モータ65の夫々に信号を出力し、各駆動軸を現在の周期の間制御する。これにより、CPU41は先端点及び先端速度を制御する。CPU41は処理を
図24に示すメイン処理に戻す。
【0139】
S80において、現在の先端加速度が0m/s^2よりも小さい場合(S80:NO)、つまり、工具先端が減速中の場合の処理を説明する。この場合、
図27に示すように、CPU41は現在の先端減速度を現在の周期の間維持すると、維持された先端減速度が最大先端減速度を超えるか判断する(S101)。S101では、CPU41は立下速度V3と最大軸加速度とに基づいて、立下点P3における最大先端減速度を算出する。CPU41は、現在の先端減速度と算出された最大先端減速度とに基づいて、S101の判断を行う。
【0140】
現在位置Pfから立下点P3までの間に最大先端減速度が維持又は増加する場合、CPU41が現在の先端減速度を現在の周期の間維持しても、維持された先端減速度は最大先端減速度を超えない(S101:NO)。この場合、CPU41は現在の先端減速度を単位最大先端ジャーク分減らした場合の立下速度V3が立下点P3における制限速度Vp以下になるか判断する(S102)。S102では、CPU41は現在の先端速度Vfに基づいて、現在の先端減速度を、単位最大先端ジャーク分増やした場合の立下速度V3を算出する。CPU41はS82と同様に立下点P3における制限速度Vpを算出する。CPU41は、算出された立下速度V3と制限速度Vpに基づいて、S102の判断を行う。
【0141】
例えば現在位置Pfから立下点P3までの間に最大先端減速度が現在の最大先端減速度よりも低下することで、維持された先端減速度が現在の周期の間に最大先端減速度を超える場合がある(S101:YES)。さらに、例えば現在の先端速度Vfが既に、現在の先端減速度を単位最大先端ジャーク分減らした場合の立下点P3における制限速度Vpに近い場合、CPU41が現在の先端減速度を単位最大先端ジャーク分減らしても、立下速度V3が立下点P3における制限速度Vp以下となる(S102:YES)。これら場合、CPU41は現在の先端減速度を単位最大先端ジャーク分減らす(S103)。これにより、先端速度は時間経過とともに制限速度Vpに緩やかに近づく。CPU41は処理をS108に移行する。
【0142】
例えば現在の先端速度Vfが、現在の先端減速度を単位最大先端ジャーク分減らした場合の立下点P3における制限速度Vpよりも比較的大きい場合、CPU41が現在の先端減速度を単位最大先端ジャーク分減らすと、立下速度V3は立下点P3における制限速度Vp以下にならない(S102:NO)。この場合、CPU41は現在の先端減速度を単位最大先端ジャーク分増やした場合の先端減速度が最大先端減速度を超えるか判断する(S104)。S104では、CPU41はS101と同様に立下点P3における最大先端減速度を算出する。CPU41は、フラッシュメモリ44に記憶された最大先端ジャークに基づいて、現在の先端減速度を、単位最大先端ジャーク分増やした場合の先端減速度を算出する。CPU41は、算出された先端減速度と最大先端減速度とに基づいて、S104の判断を行う。
【0143】
例えば現在の先端減速度が比較的小さい場合、CPU41が現在の先端減速度を単位最大先端ジャーク分増やしても、増えた先端減速度は最大先端減速度を超えない(S104:NO)。この場合、CPU41は現在の先端減速度を現在の周期の間維持した場合の立下速度V3が立下点P3における制限速度Vp以下になるか判断する(S105)。S105では、CPU41はS102と同様に立下点P3における制限速度Vpを算出する。CPU41は、現在の周期において、現在の先端速度Vfに基づいて、現在の先端減速度を維持した場合の立下速度V3を算出する。CPU41は算出された制限速度Vpと立下速度V3とに基づいて、S105の判断を行う。
【0144】
例えば現在の先端速度Vfが、現在の先端減速度を維持した場合の立下点P3における制限速度Vpから比較的離れている場合、CPU41が現在の先端減速度を現在の周期の間維持しても、立下速度V3は立下点P3における制限速度Vp以下にならない(S105:NO)。この場合、CPU41は現在の先端減速度を単位最大先端ジャーク分増やす(S106)。これにより、先端速度は時間経過とともに制限速度Vpに急激に近づく。CPU41は処理をS108に移行する。
【0145】
例えば現在の先端減速度が既に最大先端減速度に近い場合、CPU41が現在の先端減速度を単位最大先端ジャーク分増やすと、増えた先端減速度が最大先端減速度を超える(S104:YES)。さらに、例えば現在の先端速度Vfが既に、現在の先端減速度を維持した場合の立下点P3における制限速度Vpに近い場合、CPU41が現在の先端減速度を現在の周期の間維持すると、立下速度V3が立下点P3における制限速度Vp以下になる(S105:YES)。これらの場合、CPU41は現在の先端減速度を現在の周期の間維持する(S106)。これにより、先端速度は時間経過とともに制限速度Vpに線形で近づく。CPU41は処理をS108に移行する。
【0146】
S103、S106、又はS107の後、CPU41は速度更新処理を行う(S108)。S108の速度更新処理では、CPU41は、S103、S106、又はS107で算出された先端減速度で減速した場合の1周期分の速度変化量を現在の先端速度Vfから減らすことで、先端速度を算出する。CPU41は、工作機械1における実際の先端速度が、算出された先端速度になるように、X軸モータ61、Y軸モータ62、Z軸モータ63、A軸モータ64、及びC軸モータ65の夫々に信号を出力し、各駆動軸を現在の周期の間制御する。これにより、CPU41は先端点及び先端速度を制御する。CPU41は処理を
図24に示すメイン処理に戻す。
【0147】
図28を参照し、第二速度制御処理の詳細を説明する。第二速度制御処理が開始されると、CPU41は現在の先端加速度が「0m/s^2」以上か判断する(S91)。例えば第一速度制御処理から第二速度制御処理に移行してすぐであり、工具先端がまだ加速中の場合、現在の先端加速度は「0m/s^2」以上である(S91:YES)。この場合、CPU41は現在の先端加速度を単位最大先端ジャーク分減らす(S92)。これにより、工具先端の速度曲線はピークを形成するように推移する。CPU41は処理をS100に移行する。
【0148】
例えばCPU41がS92で先端加速度を減らすたびに先端加速度は0m/s^2に近づき、現在の先端加速度が「0m/s^2」よりも小さくなる(S91:NO)。この場合、CPU41は現在の先端減速度を単位最大先端ジャーク分増やした場合の先端減速度が最大先端減速度を超えるか判断する(S93)。S93では、CPU41は立下速度V3と最大軸加速度とに基づいて、立下点P3における最大先端減速度を算出する。CPU41は、フラッシュメモリ44に記憶された最大先端ジャークに基づいて、現在の先端減速度を単位最大先端ジャーク分増やした場合の先端減速度を算出する。CPU41は、算出された先端減速度と最大先端減速度とに基づいて、S93の判断を行う。
【0149】
例えば現在の先端減速度が最大先端減速度から比較的離れている場合、CPU41が現在の先端減速度を単位最大先端ジャーク分増やしても、増えた先端減速度は最大先端減速度を超えない(S93:NO)。この場合、CPU41は現在の先端減速度を単位最大先端ジャーク分増やした場合の立下速度V3が目標速度Vd未満になるか判断する(S94)。S94では、CPU41は、フラッシュメモリ44に記憶された最大先端ジャークに基づいて、現在の先端減速度を単位最大先端ジャーク分増やした場合の立下速度V3を算出する。CPU41は、算出された立下速度V3と目標速度Vdとに基づいて、S94の判断を行う。
【0150】
例えば現在の先端速度Vfが目標速度Vdから比較的離れている場合、CPU41が現在の先端減速度を単位最大先端ジャーク分増やしても、立下速度V3は目標速度Vd未満にならない(S94:NO)。この場合、CPU41は現在の先端減速度を単位最大先端ジャーク分増やす(S95)。これにより、先端速度は、時間経過とともに目標速度Vdに急激に近づく。CPU41は処理をS100に移行する。
【0151】
例えば現在の先端減速度が既に最大先端減速度に近い場合、CPU41が現在の先端減速度を単位最大先端ジャーク分増やすと、増えた先端減速度が最大先端減速度を超える(S93:YES)。さらに、例えば現在の先端速度Vfが既に目標速度Vdに近い場合、CPU41が現在の先端減速度を単位最大先端ジャーク分増やすと、立下速度V3が目標速度Vd未満になる(S94:YES)。これらの場合、CPU41は現在の先端減速度を現在の周期の間維持した場合、現在の周期の間に先端減速度が最大先端減速度を超えるか判断する(S96)。CPU41は、現在の先端減速度と算出された最大先端減速度とに基づいて、S96の判断を行う。
【0152】
現在位置Pfから立下点P3までの間に最大先端減速度が維持又は増加する場合、CPU41が現在の先端減速度を現在の周期の間維持しても、維持された先端減速度は最大先端減速度を超えない(S96:NO)。この場合、CPU41は現在の先端減速度を現在の周期の間維持した場合の立下速度V3が目標速度Vd未満になるか判断する(S97)。S97では、CPU41は現在の周期において、現在の先端速度に基づいて、現在の先端減速度を維持した場合の立下速度V3を算出する。CPU41は目標速度Vdと算出された立下速度V3とに基づいて、S97の判断を行う。
【0153】
例えば現在の先端速度Vfが目標速度Vdから比較的離れている場合、CPU41が現在の先端減速度を現在の周期の間維持しても、立下速度V3は目標速度Vd未満にならない(S97:NO)。この場合、CPU41は現在の先端減速度を現在の周期の間維持する(S98)。これにより、先端速度は、時間経過とともに目標速度Vdに線形で近づく。CPU41は処理をS100に移行する。
【0154】
現在の周期の間に最大先端減速度が現在の最大先端減速度よりも低下することで、維持された先端減速度が現在の周期の間に最大先端減速度を超える場合がある(S96:YES)。さらに、例えば現在の先端速度Vfが既に目標速度Vdに近い場合、CPU41が現在の先端減速度を現在の周期の間維持すると、第一立上速度V1が目標速度Vd未満になる(S97:YES)。これらの場合、CPU41は現在の先端減速度を単位最大先端ジャーク分減らす(S99)。これにより、先端速度は時間経過とともに目標速度Vdに緩やかに近づく。CPU41は処理をS100に移行する。
【0155】
S92、S95、S98、又はS99の後、CPU41は速度更新処理を行う(S100)。S100の速度更新処理では、CPU41は、S92、S95、S98、又はS99で算出された先端減速度で減速した場合の1周期分の速度変化量を現在の先端速度Vfから減らす。なお、S92で算出された値が正の値(即ち、加速度)の場合、CPU41は、算出された先端加速度で加速した場合の1周期分の速度変化量を現在の先端速度Vfに加える。CPU41は、工作機械1における実際の先端速度が、算出された先端速度になるように、X軸モータ61、Y軸モータ62、Z軸モータ63、A軸モータ64、及びC軸モータ65の夫々に信号を出力し、各駆動軸を現在の周期の間制御する。これにより、CPU41は先端点及び先端速度を制御する。CPU41は処理を
図24に示すメイン処理に戻す。
【0156】
図24の説明に戻る。第一速度制御処理(S34)又は第二速度制御処理(S35)の後、CPU41は現在位置Pfが終点Pe(Nnow)に到達したか判断する(S36)。現在位置Pfが終点Pe(Nnow)に到達していない場合(S36:NO)、CPU41は処理をS31に戻す。CPU41が第一速度制御処理又は第二速度制御処理を繰り返すたびに、現在位置Pfが終点Pe(Nnow)に向かって移動する。現在位置Pfが終点Pe(Nnow)に到達した場合(S36:YES)、CPU41はNnowがNend未満であるか判断する(S41)。
【0157】
先読みブロックの中にブロックNnow+1がある場合、NnowがNend未満となる(S41:YES)。この場合、CPU41は目標ブロックNdが現在ブロックNnowであるか判断する(S42)。
【0158】
先読み終点ブロックが目標ブロックNdの場合、NnowがNend未満であれば、目標ブロックNdが現在ブロックNnowにはならない。一方で、移行対象ブロックが目標ブロックNdの場合、NnowがNend未満であっても、目標ブロックNdが現在ブロックNnowになる場合がある。
【0159】
先読み終点ブロックが目標ブロックNdの場合、目標ブロックNdは現在ブロックNnowでない(S42:NO)。さらに、移行対象ブロックが目標ブロックNdであり、現在ブロックNnowが目標ブロックNdに到達していない場合、目標ブロックNdは現在ブロックNnowでない(S42:NO)。これらの場合、CPU41はS43を行うことなく処理をS44に移行する。
【0160】
移行対象ブロックNtmpが目標ブロックNdであり、加減速処理が繰り返されると、目標ブロックNdが現在ブロックNnowに到達する(S42:YES)。この場合、CPU41は目標ブロックNdに先読み終点ブロックNendを設定する(S43)。CPU41は目標速度Vdに「0mm/min」を設定する(S43)。CPU41は処理をS44に移行する。
【0161】
CPU41はNnowにNnow+1を設定する(S44)。CPU41は処理を
図23に示すS22に戻す。現在位置Pfが終点Pe(Nnow)まで到達するたびに(S36:YES)、NCプログラムの中にブロックNend+1がある場合(S22:YES)、CPU41はブロックNend+1を読み込む(S23)。これにより、例えば現在位置Pfが終点Pe(N1)に到達すると、CPU41はNCプログラムからブロックN7を読み込む。CPU41はブロック情報記憶エリア431において、ブロックN7に対応する各エリアに、算出された各数値を記憶する。同様に、現在位置Pfが終点Pe(N2)に到達すると、CPU41はブロック情報記憶エリア431において、ブロックN8に対応する各エリアに、算出された各数値を記憶する。これにより、
図4に示すブロック情報記憶エリア431は、ブロックN1~N8の夫々に対応する各エリアの全部に、算出された各数値が記憶された状態となる。
【0162】
図23に示すように、S22において、先読み終点ブロックNendがNCプログラムの最終ブロックになった場合、NCプログラムの中にブロックNend+1がなくなる(S22:NO)。例えばブロックN8が先読み終点ブロックNendの場合、NCプログラムの中にブロックN9がない(S22:NO)。この場合、CPU41は処理を
図24に示すS31に移行する。
【0163】
直前の逆向き補間処理(S31)において、CPU41が
図25に示すS72で目標ブロックNdにブロックNtmp-1を設定した場合、目標ブロックNdは先読み終点ブロックNendでない(S25:NO)。この場合、CPU41はNendにNend+1を設定する(S29)。CPU41は、目標ブロックNdの再設定(S26)と、逆向き補間点Prev、逆向き補間速度Vrev、及び逆向き補間加速度Arevの再設定(S20)とを行うことなく、処理を
図24に示すS31に移行する。これにより、目標ブロックNd、逆向き補間点Prev、逆向き補間速度Vrev、及び逆向き補間加速度Arevが
図25に示すS72又はS73で設定された値に固定される。
【0164】
先読みブロックは、最終ブロックが先読み終点ブロックNendになると(S22:NO)、読み込まれなくなる。この場合、先読み終点ブロックは最終ブロックで固定される。一方で、現在ブロックは、加減速処理が行われることで、順次、処理順序が後のブロックに移行する。
図24に示すように、加減速処理が繰り返されることで、現在ブロックNnowが先読み終点ブロックNendに達し、その後、現在位置Pfが終点Pe(Nend)まで到達する(S41:NO)。この場合、NCプログラムの中にブロックNnow+1がないので、CPU41はメイン処理を終了する。
【0165】
<本実施形態の作用効果>
以上説明したように、本実施形態では、CPU41は、目標ブロックNdを決定し、且つ決定した目標ブロックNdの指令点における目標速度Vdを決定する。CPU41は、第一立上速度V1を、最大先端ジャーク、現在の先端速度Vf、及び現在の先端加速度に基づいて算出する。CPU41は、逆向き補間点Prevを順次算出する。CPU41は、逆向き補間点Prevを算出するたびに、最大先端ジャーク、逆向き補間速度Vrev、及び逆向き補間加速度Arevに基づいて第二立上速度V2を算出する。CPU41は、第二立上速度V2が第一立上速度V1以上になるまで、逆向き補間点Prevを算出する。これによれば、CPU41による逆向き補間に合わせた加減速処理が行われることにより、先端速度が先端経路上で最大限増加したとしても目標ブロックNdの指令点で工具先端が目標速度Vdまで減速しないことが抑制される。このため、数値制御装置40は、目標ブロックNdの指令点において工具先端が目標速度Vdまで減速可能な最大の先端速度で、工具先端を移動させやすい。さらに、CPU41が逆向き補間点Prevを算出しながら加減速処理を行い、工具先端の速度曲線を算出する。故にCPU41は、工具先端の速度曲線を算出して加減速処理を行う場合に比べて、加減速処理前における数値制御装置40による計算量を抑制しやすい。故にCPU41は、加減速処理前における速度曲線を算出するための計算量を抑制しつつ、工具先端の移動時間が長くなることを抑制するという利点に貢献する。
【0166】
CPU41は、移行ブロックがある場合、処理順序が移行対象ブロックよりも1つ前のブロックを目標ブロックNdに決定し、移行ブロックの最も小さい始点速度Vsを目標速度Vdとする。このため、新たに決定された目標ブロックNdの指令点において、目標速度Vdとして新たに決定された目標ブロックの1つ後の先読みブロックの始点速度Vsまでの工具先端の減速が可能となるように、逆向き補間が行われる。故にCPU41は、ブロックの指令点において許容される先端速度の上限を守ったうえで、加減速処理前における工具先端の速度曲線を算出するための計算量を抑制しつつ、工具先端の移動時間が長くなることを抑制するという利点に貢献する。
【0167】
CPU41は、先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残以上である場合、先端速度(第一立上速度V1)が目標速度Vd未満にならないように、最大先端減速度及び最大先端ジャークに基づく先端減速度で工具先端を減速させる。これによれば、CPU41は、許容される先端減速度と先端ジャークの範囲内で最大限、工具先端を減速させ、且つ目標ブロックNdの指令点で目標速度Vdまで減速するように工具先端を減速させる。故に、工具先端の減速時間が長くなることが抑制される。このため、数値制御装置40は工具先端の加速時間を長く確保しやすい。故にCPU41は工具先端の移動時間が長くなることを抑制するという利点に貢献する。
【0168】
CPU41は、先端移動量L1と先端移動量L2と先端移動量L3との合計距離が移動残以上でない場合、第一立上点P1における先端速度(第一立上速度V1)が、第一立上点P1における制限速度Vpを超えないように、最大先端加速度及び最大先端ジャークに基づく先端加速度で工具先端を加速させる。これによれば、CPU41は、第一立上速度V1が第一立上点P1における制限速度Vpを超えないように、許容される先端加速度と先端ジャークの範囲内で最大限、工具先端を加速させる。故にCPU41は工具先端の移動時間が長くなることを抑制するという利点に貢献する。
【0169】
CPU41は、先読み終点ブロックNendまで順に先読みブロックとしてブロックを読み込む。CPU41は、先読み終点ブロックNendを読み込んだ場合に、逆向き補間点Prevを算出する。この場合、先読みブロックを1つずつ読み込むたびに逆向き補間点Prevを算出するわけではない。故にCPU41は、逆向き補間点Prevの算出にかかる処理負荷が大きくなることを抑制するという利点に貢献する。
【0170】
CPU41は、CPU41が現在ブロックNnowの指令点まで加減速処理を完了した場合、処理順序が現在の先読み終点ブロックNendの1つ後のブロックを先読み終点ブロックNendとして新たに読み込む。CPU41は、先読み終点ブロックNendを新たに読み込んだ場合に、目標ブロックNdを新たに決定し、且つ目標速度Vdを新たに決定する。これによれば、CPU41が現在ブロックNnowの加減速処理が完了するたびにCPU41がブロックを1つ先読み終点ブロックNendとして新たに読み込む。つまり、CPU41は、先読みブロックとして複数のブロックの全部を常に一度に読み込むわけではない。故にCPU41は先読みブロックを読み込むのにかかる制御負荷を抑制するという利点に貢献する。
【0171】
工作機械1は、直線軸3軸(X軸、Y軸、Z軸)と、回転軸2軸(A軸、C軸)とを有する。このため、工作機械1は、ワークWに対する工具3の姿勢(傾き)を変更する等、複雑な加工を行うという利点に貢献する。一方で、ワークWに対する工具3の動きが複雑になる分、制限速度と最大先端加速度を解析的に算出することが困難となる可能性がある。故に、加減速処理の前に、工具先端の速度曲線の全部を確定させることが困難となる可能性がある。これに対し、本実施形態では、CPU41は加減速処理と並行して逆向き補間処理を動的に行う。これにより、工具先端の速度曲線は、加減速処理と並行して算出される。このため、CPU41は工具先端の速度曲線を算出するためにかかる制御負荷を抑制するという利点に貢献する。故にCPU41は、工具先端の速度曲線を算出するためにかかる制御負荷を抑制しつつ、工作機械1による複雑な加工を可能にするという利点に貢献する。
【0172】
<上記実施形態と本発明の対応>
上記実施形態において、ワークWが本発明の「対象物」に相当する。工具3が本発明の「移動部」に相当する。
図23に示すS12とS23を行うCPU41が本発明の「読込部」に相当する。
図23に示すS14と
図24に示すS43と
図25に示すS72を行うCPU41が本発明の「決定部」に相当する。
図25に示すS51を行うCPU41が本発明の「第一算出部」に相当する。
図25に示すS62を行うCPU41が本発明の「逆向き補間部」に相当する。
図25に示すS53とS63を行うCPU41が本発明の「第二算出部」に相当する。
【0173】
図23に示すS24を行うCPU41が本発明の「第三算出部」に相当する。
図25に示すS71を行うCPU41が本発明の「第一判断部」に相当する。
図24に示すS33を行うCPU41が本発明の「第二判断部」に相当する。
図28に示すS100を行うCPU41が本発明の「第一速度制御部」に相当する。
図26に示すS82又はS85を行うCPU41が本発明の「第四算出部」に相当する。
図26に示すS88又は
図27に示すS108を行うCPU41が本発明の「第二速度制御部」に相当する。
図26に示すS88、
図27に示すS108又は
図28に示すS100を行うCPU41が本発明の「ブロック処理部」に相当する。
【0174】
回転台29が本発明の「保持部」に相当する。主軸9が本発明の「主軸」に相当する。
図23に示すS12とS23が本発明の「読込処理」に相当する。
図23に示すS14と
図24に示すS43と
図25に示すS72が本発明の「決定処理」に相当する。
図25に示すS51が本発明の「第一算出処理」に相当する。
図23に示すS20と
図25に示すS62とS73が本発明の「逆向き補間処理」に相当する。
図25に示すS53とS63が本発明の「第二算出処理」に相当する。CPU41が本発明の「コンピュータ」に相当する。
【0175】
<変形例>
本発明は上記実施形態から種々変更されてもよい。例えば工作機械1の駆動軸は、5軸に限定されず、1軸、2軸、3軸、4軸、又は6軸以上であってもよい。工作機械1による駆動軸の駆動方法は、上記実施形態に限定されない。工作機械1は、旋盤、ロボット、パラレルメカニズムの機械等であってもよい。
【0176】
上記実施形態では、工作機械1は回転台29をA軸及びC軸の2つの駆動軸で回転させる。これに対し、工作機械1はワークWに対する主軸9の姿勢を変更するように、主軸9をA軸及びC軸の2つの駆動軸で回転させてもよい。工作機械1はワークWに対する主軸9の姿勢を変更するように主軸9をA軸及びC軸の一方の駆動軸で回転させ、回転台29をA軸及びC軸の他方の駆動軸で回転させてもよい。これらの場合も、工作機械1は、ワークWに対する工具3の姿勢(傾き)を変更する等、複雑な加工を行うという利点に貢献する。
【0177】
NCプログラムは指令点を座標値によって直接指令しなくてもよい。例えば、NCプログラムではA軸及びC軸の座標値の代わりに工具姿勢ベクトルを指令してもよい。この場合、CPU41は、工具姿勢ベクトルに基づいてA軸及びC軸の指令点の座標値を算出してもよい。
【0178】
CPU41は、複数のブロックの全部について、第一立上速度V1を算出しなくてもよく、逆向き補間点Prevを算出しなくてもよく、第二立上速度V2を算出しなくてもよい。例えばCPU41は、複数のブロックの何れか1つ(例えばコードがG0のブロック)のみについて、第一立上速度V1を算出し、逆向き補間点Prevを算出し、第二立上速度V2を算出してもよい。
【0179】
先読み上限値Nparaは設けられなくてもよい。即ち、CPU41は、逆向き補間処理(S31)の前に、複数のブロックの個数によらず、先読みブロックとして最終ブロックまで読み込んでもよい。CPU41は、先読みブロックを1つ読み込むたびに、目標ブロックNdと目標速度Vdを決定してもよい。
【0180】
第一速度制御処理における先端加速度の決定方法は、上記実施形態に限定されない。例えば、CPU41はS81、S82、S84、S85の判断の一部又は全部を省略してもよい。例えば、S81、S82、S84、S85の判断の全部が省略される場合、CPU41は常に単位最大先端ジャーク分増やしてもよい。CPU41は、第一速度制御処理において、S81、S82、S84、S85の判断に代えて、又は加えて、現在位置Pf又は現在位置Pfと第一立上点P1との間の点(例えば中間点)における先端速度及び先端加速度に関する判断を行ってもよい。
【0181】
CPU41は、S81、S82、S84、S85の一部又は全部の判断において、最大先端加速度及び制限速度Vpの一方又は両方に、上記実施形態よりも大きな制限を付与してもよい。第二速度制御処理における減速度の決定方法も、第一速度制御処理における加速度の決定方法と同様に上記実施形態に限定されない。例えば、CPU41はS93、S94、S96、S97の判断の一部又は全部を省略してもよい。CPU41は、S93、S96の一方又は両方の判断において、最大先端減速度に、上記実施形態よりも大きな制限を付与してもよい。
【0182】
さらに、例えば現在の先端加速度を単位最大先端ジャーク分増やした場合に、増えた先端加速度が最大先端加速度を超え、且つ現在の先端加速度を維持した場合に、維持された先端加速度が最大先端加速度未満となる場合がある。この場合、CPU41は先端加速度を最大先端加速度と一致させてもよい。同様に、現在の先端減速度を単位最大先端ジャーク分増やした場合に、増えた先端減速度が最大先端減速度を超え、且つ現在の先端減速度を維持した場合に、維持された先端減速度が最大先端減速度未満となる場合、CPU41は先端減速度を最大先端減速度と一致させてもよい。S81、S84、S93、S96、S101、又はS104において、CPU41は、第一立上点P1における最大先端加速度又は立下点P3における最大先端減速度の代わりに現在位置Pfにおける最大先端加速度又は最大先端減速度に基づいて判断してもよい。例えばS84において、CPU41は現在の先端加速度を現在の周期の間維持すると、維持された先端加速度が、現在位置Pfにおける最大先端加速度を超えるか判断してもよい。
【0183】
上記実施形態では、CPU41は到達ブロックを算出し(S54、S64)、移行ブロックの有無に応じた処理を行う。これに対し、CPU41は到達ブロックを算出しなくてもよく、移行ブロックの有無を判断しなくてもよい。この場合、CPU41はS72、S73を省略し、目標ブロックNdを常に先読み終点ブロックNendとしてもよい。
【0184】
上記実施形態では、最大軸加速度は、許容される軸加速度又は軸減速度の上限を示す。これに対し、最大軸加速度は、許容される軸加速度の上限を示してもよい。この場合、許容される軸減速度の上限を示す最大軸減速度が、最大軸加速度とは別に、フラッシュメモリ44に記憶されてもよい。
【0185】
上記実施形態において、第一所定加速度、第二所定加速度、第三所定加速度、第一所定減速度、又は第二所定減速度は、例えば単位最大先端ジャークであってもよい。
【0186】
なお、上記実施形態では、説明を簡略化するため、正の加速度を「加速度」とし、負の加速度を「減速度」として説明したが、本発明における加速度は、負の加速度も含む概念である。
【符号の説明】
【0187】
1 工作機械
9 主軸
29 回転台
40 数値制御装置
41 CPU