(57)【特許請求の範囲】
【請求項１】
回転軸に対する回転指令を含むブロックデータを実行するときに、回転軸のクランプ機構をクランプ状態からアンクランプ状態に切り替えるクランプ制御部を備えた数値制御装置において、
前記クランプ機構をクランプ状態からアンクランプ状態に切り替えるために必要なアンクランプ時間を予め設定するアンクランプ時間設定部と、
前記回転指令を含むブロックデータの実行開始時刻よりもアンクランプ時間だけ早い時刻と該時刻において実行されるブロックデータの実行開始時刻との間の時間中に、前記クランプ制御部にアンクランプ指令を出力するアンクランプ指令出力部とを備えたことを特徴とする数値制御装置。
【請求項２】
前記アンクランプ指令出力部が、回転指令を含むブロックデータの実行開始時刻よりもアンクランプ時間だけ早い時刻において実行されるブロックデータの実行開始時刻に、アンクランプ指令をクランプ制御部へ出力し、クランプ制御部が、回転指令を含むブロックデータの実行開始時刻よりも前に、クランプ機構をアンクランプ状態とする制御を行う請求項１記載の数値制御装置。
【請求項３】
前記アンクランプ指令出力部が、回転指令を含むブロックデータの実行開始時刻よりもアンクランプ時間だけ早い時刻に、アンクランプ指令をクランプ制御部へ出力し、クランプ制御部が、回転指令を含むブロックデータの実行開始時刻に、クランプ機構をアンクランプ状態とする制御を行う請求項１記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械等において、回転軸のクランプ機構を制御する数値制御装置に関する。
【背景技術】
【０００２】
回転軸を備えた工作機械を制御する数値制御装置では、一般に、回転軸に対する回転指令がないときに、クランプ機構をクランプ動作させ、回転軸に対する回転指令が含まれているときのみ、クランプ機構をアンクランプ動作させるという制御を行っている。
【０００３】
図１３は、この種の制御を行う従来の数値制御装置を示すブロック図である。この数値制御装置１００では、加工プログラム格納部１に加工プログラムＰＲが格納されている。加工プログラム解釈部２は、加工プログラムＰＲを解釈し、ブロックごとの解釈結果であるブロックデータＢＤを、加工プログラム実行部４が必要とする数だけ生成し、ブロックデータ格納部３に格納する。
【０００４】
加工プログラム実行部４は、ブロックポインタ５からブロックインデックスＢＩを取得し、ブロックインデックスＢＩが指示するブロックデータＢＤをブロックデータ格納部３から読み出し、このブロックデータＢＤに従ってサーボモータ制御部６とクランプ制御部７を制御する。クランプ制御部７は、加工プログラム実行部４からクランプ指令Ｃｃを受け取ったときに、クランプ機構をクランプ動作させて、回転軸を回転不能な状態に保持し、アンクランプ指令Ｃｕを受け取ったときに、クランプ機構をアンクランプ動作させ、回転軸を回転可能な状態に解放する。
【０００５】
図１４は、加工プログラム実行部４の具体的な処理を示すフローチャートである。加工プログラム実行部４は、まず、ブロックポインタ５からブロックインデックスＢＩを取得し（Ｓ１０１）、ブロックインデックスＢＩが指示するブロックデータＢＤを読み出す（Ｓ１０２）。次に、ブロックデータＢＤ中に回転軸に対する回転指令が含まれているかどうかを確認し（Ｓ１０３）、含まれている場合に、クランプ制御部７にアンクランプ指令Ｃｕを出力し（Ｓ１０４）、含まれていない場合は、クランプ制御部７にクランプ指令Ｃｃを出力する（Ｓ１０５）。続いて、ブロックデータＢＤに基づいて関数発生を行い、補間点ＣＯＮを生成してサーボモータ制御部６に出力する（Ｓ１０６）。そして、１つのブロックの処理が完了すると（Ｓ１０７）、ブロックポインタ５のブロックインデックスＢＩを１つ進める（Ｓ１０８）。その後、後続のブロックデータＢＤに関し、同様の処理を順次繰り返し、すべてのブロックの処理を終了する（Ｓ１０９）。
【０００６】
以上のような制御によれば、回転軸のクランプ／アンクランプを自動で切り替え、クランプ状態で、サーボモータを停止し、回転軸を所定の角度位置に固定し、ワークを高精度に切削でき、アンクランプ状態で、サーボモータを駆動し、回転軸を任意の角度位置に割り出すことができる。このため、クランプ状態で、回転軸を自身のサーボモータで自己保持させる必要がなくなり、特に、重切削時におけるサーボモータの過熱を防止できる。また、回転軸を所定の角度位置に割り出した状態で、複数の軸移動を制御して切削を繰り返すような加工、例えば、五面加工などに有利に適用できる。
【０００７】
特許文献１には、ワークテーブルの回転軸にクランプ機構を装備した工作機械において、回転軸のクランプ／アンクランプ制御と並行し、回転軸以外の複数の軸移動を制御する数値制御装置が記載されている。特許文献２には、工作機械の自動運転モードで回転軸をクランプし、手動運転モードで回転軸をアンクランプする数値制御装置が記載されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平５−３１３７１８号公報
【特許文献２】特開平６−１５５２３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、クランプ機構の制御にあたっては、クランプ制御部７がアンクランプ指令Ｃｕを受け取ってから、回転軸が実際に回転可能な状態となるまでに、クランプ機構の機械的な動作に一定の時間を必要とする。しかし、従来の数値制御装置１００は、回転軸に対する回転指令を検出したとき（Ｓ１０３）、その回転指令を含むブロックデータＢＤを実行する直前（補間処理を開始する時刻）に、アンクランプ指令をクランプ制御部７に出力していたので（Ｓ１０４）、クランプ機構がクランプ状態からアンクランプ状態に切り替わるまでの間、加工を一旦停止する必要があった。
【００１０】
五面加工のように、回転軸を割出軸として使用する場合は、割出し開始時に工具が一瞬停止するだけであり、加工中に停止するわけではないから、工具の停止時間が問題となることはない。しかし、タービンブレードのような自由曲面の加工では、加工プログラムにＸ，Ｙ，Ｚ軸等の直線移動指令のみを含むブロックと、Ａ，Ｃ軸等の回転指令を含むブロックとが混在しているため、直線移動指令のみを含むブロックを実行した後に回転指令を含むブロックを実行しようとするときに、工具による加工を一旦停止する必要があった。
【００１１】
例えば、図５に示すように、エンドミルｔで自由曲面Ｓを加工する場合、切削区間Ａでは、エンドミルｔの傾きが一定であり、直線軸に対する移動指令のみが連続するため、クランプ機構は回転軸をクランプし固定する。切削区間Ｂでは、エンドミルｔの傾きが変化し、回転軸に対する回転指令が連続するので、クランプ機構は回転軸をアンクランプし回転可能とする。そして、切削区間Ａから切削区間Ｂに移るとき、つまり、加工点Ｐ５を指定するブロックデータから回転指令を検出したときに、加工点Ｐ４でクランプ機構がクランプ状態からアンクランプ状態に切り替わる。この切替期間中、従来の数値制御装置１００は、エンドミルｔによる切削を停止するため、加工時間が長くなるばかりでなく、エンドミルｔの停止に伴い、ワークの加工面にカッターマークがつき、加工精度、品質に悪影響が及ぶという問題点があった。
【００１２】
そこで、本発明の目的は、自由曲面等の加工にあたり、加工を停止することなく、クランプ機構のアンクランプ動作を完了し、加工時間を短縮でき、加工精度、品質を高めることができる数値制御装置を提供することにある。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本発明の数値制御装置は、回転軸に対する回転指令を含むブロックデータを実行するときに、回転軸のクランプ機構をクランプ状態からアンクランプ状態に切り替えるクランプ制御部を備え、さらに、クランプ機構をクランプ状態からアンクランプ状態に切り替えるために必要なアンクランプ時間を予め設定するアンクランプ時間設定部と、回転指令を含むブロックデータの実行開始時刻よりもアンクランプ時間だけ早い時刻と該時刻を含むブロックデータの実行開始時刻との間の時間中に、クランプ制御部にアンクランプ指令を出力するアンクランプ指令出力部とを備えたことを特徴とする。
【００１４】
本発明の好ましい実施形態では、アンクランプ指令出力部が、回転指令を含むブロックデータの実行開始時刻よりもアンクランプ時間だけ早い時刻を含むブロックデータの実行開始時刻にアンクランプ指令をクランプ制御部へ出力し、クランプ制御部が、回転指令を含むブロックデータの実行開始時刻よりも前にクランプ機構をアンクランプ状態とする制御を行う。
【００１５】
本発明の別の好ましい実施形態では、アンクランプ指令出力部が、回転指令を含むブロックデータの実行開始時刻よりもアンクランプ時間だけ早い時刻にアンクランプ指令をクランプ制御部へ出力し、クランプ制御部が、回転指令を含むブロックデータの実行開始時刻にクランプ機構をアンクランプ状態とする制御を行う。
【発明の効果】
【００１６】
本発明の数値制御装置は、回転指令を含むブロックデータの実行開始時刻までに、クランプ機構がアンクランプ状態となるような制御を行うので、工具で自由曲面を切削するなどの加工において、切削を停止することなく、クランプ機構のアンクランプ動作を完了し、加工時間を短縮できるとともに、切削面からカッターマークをなくし、高精度、高品質の加工を行うことができるという効果がある。
【００１７】
本発明の好ましい実施形態では、数値制御装置が、回転指令を含むブロックデータの実行開始時刻よりも前に、クランプ機構がアンクランプ状態となるような制御を行うので、クランプ機構の機械的動作に時間的な余裕を与え、この余裕を安全マージとして利用し、クランプ機構の動作時間に予期せぬ変動が生じた場合に、これを機械運転中に吸収できるという効果がある。
【００１８】
本発明の別の好ましい実施形態では、数値制御装置が、回転指令を含むブロックデータの実行開始時刻きっかりに、クランプ機構がアンクランプ状態となるような制御を行うので、回転軸を自身の駆動モータで自己保持させる時間をなくし、モータの過熱を防止できるという効果がある。
【図面の簡単な説明】
【００１９】
【図１】本発明による実施例１の数値制御装置を示すブロック図である。
【図２】図１の加工プログラム実行部による処理を示すフローチャートである。
【図３】図１のブロックデータ先読み部による処理を示すフローチャートである。
【図４】図１のアンクランプ判定部による処理を示すフローチャートである。
【図５】自由曲面加工を例示する工具軌跡のモデル図である。
【図６】実施例１の数値制御装置によるアンクランプ動作を示すグラフである。
【図７】図５の自由曲面を加工する加工プログラムの一部を示す参考図である。
【図８】本発明による実施例２の数値制御装置を示すブロック図である。
【図９】図８の加工プログラム実行部による処理を示すフローチャートである。
【図１０】図９に続く処理を示すフローチャートである。
【図１１】図８のブロックデータ先読み部による処理を示すフローチャートである。
【図１２】実施例２の数値制御装置によるアンクランプ動作を示すグラフである。
【図１３】従来の数値制御装置を示すブロック図である。
【図１４】図１３の加工プログラム実行部による処理を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態を２つの実施例に従って説明する。実施例１の数値制御装置１０（図１参照）では、アンクランプ時間設定部１１に、クランプ機構（図示略）のアンクランプ時間Ｔｕｃ（図６参照）が設定されている。アンクランプ判定部１５は、アンクランプ指令出力部としての機能を備え、回転軸に対する回転指令を含むブロックデータＢＤ５の実行開始時刻よりもアンクランプ時間Ｔｕｃだけ早い時刻を含むブロックデータＢＤ３の実行開始時刻に、アンクランプ指令Ｃｕをクランプ制御部７へ出力する。そして、クランプ制御部７が、回転指令を含むブロックデータＢＤ５の実行開始時刻よりも前にクランプ機構をアンクランプ状態とする制御を行っている。
【００２１】
実施例２の数値制御装置２０（図８参照）では、加工プログラム実行部４が、アンクランプ指令出力部としての機能を備え、回転指令を含むブロックデータＢＤ５（図１２参照）の実行開始時刻よりもアンクランプ時間Ｔｕｃだけ早い時刻に、アンクランプ指令Ｃｕをクランプ制御部７へ出力する。そして、クランプ制御部７が、回転指令を含むブロックデータＢＤ５の実行開始時刻きっかりに、クランプ機構をアンクランプ状態とする制御を行っている。以下に、数値制御装置１０，２０の構成と制御を図面に基づいて詳細に説明する。なお、図１、図８において、従来と同一または類似する機能部については、図１３と同一の符号が付されている。
【実施例１】
【００２２】
図１に示すように、実施例１の数値制御装置１０は、加工プログラムＰＲを格納する加工プログラム格納部１と、加工プログラムＰＲを解釈する加工プログラム解釈部２と、ブロックごとに解釈された一連のブロックデータＢＤを格納するブロックデータ格納部３と、ブロックデータＢＤに基づいて関数を発生し、補間点ＣＯＮをサーボモータ制御部６に出力する加工プログラム実行部４と、加工プログラム実行部４にブロックインデックスＢＩを提供するブロックポインタ５と、工作機械のクランプ機構をクランプ状態とアンクランプ状態とに切り替えるための制御を行うクランプ制御部７とを備えている。
【００２３】
さらに、この数値制御装置１０には、クランプ機構をクランプ状態からアンクランプ状態に切り替えるために必要なアンクランプ時間Ｔｕｃがオペレータの入力によって予め設定されるアンクランプ時間設定部１１と、未だ実行していないブロックデータＢＤをブロックデータ格納部３から順次読み出すブロックデータ先読み部１２と、ブロックデータ先読み部１２に先読みインデックスＲＩを提供する先読みポインタ１３と、ブロックデータの実行時間を積算する実行時間カウンタ１４と、クランプ制御部７にクランプ指令Ｃｃおよびアンクランプ指令Ｃｕを出力するアンクランプ判定部１５とが設けられている。
【００２４】
図２に示すように、加工プログラム実行部４は、まず、ブロックポインタ５からブロックインデックスＢＩを取得し（Ｓ１）、ブロックインデックスＢＩが指示するブロックデータＢＤをブロックデータ格納部３から読み出す（Ｓ２）。次に、読み出したブロックデータＢＤを解釈し、自由曲面Ｓ（図５参照）を加工中であるかどうかを確認し（Ｓ３）、加工中であるときに、制御Ｃ１をブロックデータ先読み部１２に渡し（Ｓ４）、制御Ｃ３がアンクランプ判定部１５から戻るのを待つ（Ｓ５）。自由曲面Ｓを加工していないときには、ブロックデータＢＤに基づいて関数を発生し、補間点ＣＯＮを生成してサーボモータ制御部６に送る（Ｓ６）。そして、従来と同様、一つのブロックデータＢＤの処理を完了したのち（Ｓ７）、ブロックインデックスＢＩを１つずつ進め（Ｓ８）、すべてのブロックデータＢＤの処理を終了する（Ｓ９）。
【００２５】
図３に示すように、ブロックデータ先読み部１２は、加工プログラム実行部４から制御Ｃ１が移るのを待ち（Ｓ１１）、制御Ｃ１が移ると、まず、実行時間カウンタ１４を初期化する（Ｓ１２）。次に、ブロックポインタ５からブロックインデックスＢＩを取得し（Ｓ１３）、このインデックスＢＩを先読みインデックスＲＩに変更する（Ｓ１４）。続いて、先読みインデックスＲＩを１つ進め（Ｓ１５）、進めた先読みインデックスＲＩを先読みポインタ１３に格納し（Ｓ１６）、このインデックスＲＩが指示する先読みブロックデータＢＤと、それよりも１つ前のブロックデータＢＤとを読み出す（Ｓ１７、Ｓ１８）。
【００２６】
次に、２つのブロックデータＢＤに指定された指令位置から移動距離を求め、先読みブロックデータＢＤから指令速度を取得し、移動距離と指令速度から先読みブロックの実行時間Ｔｅを求め（Ｓ１９）、このブロック実行時間Ｔｅを実行時間カウンタ１４の実行積算時間Ｔｓｕｍに加算する（Ｓ２０）。そして、実行積算時間Ｔｓｕｍが予め設定したアンクランプ時間Ｔｕｃに達したかどうかを確認し（Ｓ２１）、達していない場合は、先読みインデックスＲＩを１つ進める処理（Ｓ１５）に戻り、達した時点で、アンクランプ判定部１５へ制御Ｃ２を移す（Ｓ２２）。
【００２７】
図４に示すように、アンクランプ判定部１５は、まず、ブロックデータ先読み部１２から制御Ｃ２が移るのを待ち（Ｓ３１）、制御Ｃ２が移ると、ブロックポインタ５からブロックインデックスＢＩを取得し（Ｓ３２）、先読みポインタ１３から先読みインデックスＲＩを取得する（Ｓ３３）。次に、取得したインデックスＢＩ，ＲＩに対応するブロックデータＢＤをブロックデータ格納部３から読み出し（Ｓ３４）、これらのブロックデータＢＤ中に回転軸に対する回転指令が含まれているかどうかを判断する（Ｓ３５）。そして、回転指令が含まれている場合は、クランプ制御部７にアンクランプ指令Ｃｕを出力し（Ｓ３６）、回転指令が含まれていない場合は、クランプ制御部７にクランプ指令Ｃｃを出力し（Ｓ３７）、その後、加工プログラム実行部４へ制御Ｃ３を移す（Ｓ３８）。
【００２８】
図５は、自由曲面Ｓをエンドミルｔで加工するときの制御例を示す。エンドミルｔの工具軌跡を表す曲線上の点Ｐ１〜Ｐ１５は、ブロックデータＢＤの移動指令により指定された加工点を示す。工作機械のクランプ機構は、前述したように、切削区間Ａと切削区間Ｃで、ワークに対するエンドミルｔの角度を一定に保つために回転軸をクランプし、切削区間Ｂで、エンドミルｔの角度を変化させるために回転軸をアンクランプする。
【００２９】
図６は、加工点Ｐ１〜Ｐ５と、ブロックデータＢＤ１〜ＢＤ５と、ブロックごとの実行時間Ｔ１〜Ｔ５と、アンクランプ時間Ｔｕｃとの関係を示す。図７は、自由曲面Ｓを加工するための加工データの一部を示す。図７において、ブロックデータＢＤ１は、エンドミルｔを位置決め点Ｐ０（図６参照）から自由曲面Ｓの加工開始点Ｐ１まで移動させる指令と、自由曲面Ｓの加工開始指令「Ｐ」を含み、ブロックデータＢＤ２以降の移動指令によって自由曲面Ｓが加工される。回転軸に対する最初の回転指令「Ｂｂ５」は、エンドミルｔを加工点Ｐ４からＰ５まで移動させるブロックデータＢＤ５に含まれている。
【００３０】
自由曲面Ｓの加工にあたり、加工プログラム実行部４は、加工点Ｐ１を指令するブロックデータＢＤ１をブロックデータ格納部３から読み出し（図２：Ｓ２）、このブロックデータＢＤ１に含まれる加工開始指令「Ｐ」を確認し（Ｓ３）、次のブロックデータＢＤ２以降が自由曲面Ｓであることを記憶し、制御Ｃ１をブロックデータ先読み部１２に渡す（Ｓ４）。
【００３１】
ブロックデータ先読み部１２は、加工点Ｐ２を指定する先読みブロックデータＢＤ２と、加工点Ｐ１を指定するブロックデータＢＤ１を読み出し（図３：Ｓ１７，１８）、エンドミルｔの移動距離（Ｐ１→Ｐ２）と指令速度とからブロックデータＢＤ２の実行時間Ｔ２（図６参照）を求め、その値を実行時間カウンタ１４の実行積算時間Ｔｓｕｍに加算する（Ｓ２０）。この段階では、実行積算時間Ｔｓｕｍ（０＋Ｔ２）＜アンクランプ時間Ｔｕｃであるため、先読みインデックスＲＩを１つ進め（Ｓ１５）、次のブロックデータＢＤ３の実行時間Ｔ３を求め、実行積算時間Ｔｓｕｍに加算する。そして、実行積算時間Ｔｓｕｍ（Ｔ２＋Ｔ３）≧アンクランプ時間Ｔｕｃであることを確認し（Ｓ２１）、制御Ｃ２をアンクランプ判定部１５に移す（Ｓ２２）。
【００３２】
アンクランプ判定部１５は、ブロックデータＢＤ２，ＢＤ３をブロックデータ格納部３から読み出し（図４：Ｓ３４）、ブロックデータＢＤ２，ＢＤ３に回転指令が含まれているかどうかを検査する（Ｓ３５）。この段階では、ブロックデータＢＤ２，ＢＤ３に回転指令が含まれていないので、クランプ制御部７にクランプ指令Ｃｃを出力し（Ｓ３７）、制御Ｃ３を加工プログラム実行部４へ移す（Ｓ３８）。そして、加工プログラム実行部４が、ブロックデータＢＤ１に基づいて自由曲面Ｓの加工開始点Ｐ１までの補間処理を行う（Ｓ６）。
【００３３】
ブロックデータＢＤ１が完了すると、加工プログラム実行部４は、次のブロックデータＢＤ２を読み出し、自由曲面Ｓの加工中であることを確認し、制御Ｃ１をブロックデータ先読み部１２に渡す。ブロックデータ先読み部１２は、積算時間Ｔｓｕｍ（Ｔ３＋Ｔ４）≧アンクランプ時間Ｔｕｃであることを確認し、制御Ｃ２をアンクランプ判定部１５に移す。アンクランプ判定部１５は、ブロックデータＢＤ３，ＢＤ４に回転指令が含まれていないことを確認し、クランプ指令Ｃｃを出力し、制御Ｃ３を加工プログラム実行部４に移し、加工プログラム実行部４が加工点Ｐ２までの補間処理を実行する。
【００３４】
ブロックデータＢＤ２が完了すると、上記と同様の手順により、次のブロックデータＢＤ３が処理されるが、このブロックデータＢＤ３の処理過程で、アンクランプ判定部１５が、ブロックデータＢＤ５に含まれている回転指令「Ｂｂ５」を検出する。そして、ブロックデータＢＤ３を開始する時点で、アンクランプ判定部１５がアンクランプ指令Ｃｕをクランプ制御部７に出力し、クランプ制御部７がクランプ機構を機械的に動作させ、クランプ機構が回転軸を解放するためのアンクランプ動作を開始する。その後、アンクランプ動作と並行し、加工プログラム実行部４が加工点Ｐ３までの補間処理を実行し、回転軸がアンクランプされた状態で、ブロックデータＢＤ４以降の処理が繰り返される。
【００３５】
要するに、図５〜図７に示す制御例では、ブロックデータＢＤ１，ＢＤ２に対する補間処理を行っている時間中は、クランプ機構が回転軸をクランプしている。ブロックデータＢＤ３に対する補間処理を開始する時刻（エンドミルｔが加工点Ｐ２に到達している状態）に、クランプ機構がアンクランプ動作を開始する。そして、ブロックデータＢＤ５に対する補間処理を開始する時刻よりも少し前に、クランプ機構がアンクランプ動作を完了する。
【００３６】
したがって、実施例１の数値制御装置１０によれば、回転軸が動作を開始する時刻、つまり、回転指令を含むブロックデータＢＤ５の実行開始時刻までに、クランプ機構をクランプ状態からアンクランプ状態に切り替えておくことができる。このため、エンドミルｔによる切削を停止することなく、自由曲面Ｓを連続的に加工でき、加工時間を短縮し、加工面からカッターマークをなくし、加工精度を高めることができる。また、アンクランプ指令をブロックデータＢＤ３の実行開始時刻に出力することで、ブロックデータＢＤ５の実行開始時刻よりも少し前にアンクランプ動作を完了させ、これで生じる余裕時間Ｔｓ（図６参照）を安全マージとして利用し、クランプ機構の機械的動作時間に予期せぬ変動が生じた場合に、これを機械運転中に吸収できるという利点もある。
【実施例２】
【００３７】
次に、本発明の実施例２を図８〜図１２に従って説明する。図８に示すように、実施例２の数値制御装置２０は、実施例１の数値制御装置１０の構成要素に加え、回転指令開始時間格納部２１を備えている。ブロックデータ先読み部１２は、一連のブロックデータＢＤを読み出し、そのうちから回転指令を含むブロックデータＢＤを検索するとともに、自由曲面Ｓの加工開始時刻から回転指令を含むブロックデータＢＤの実行開始時刻までの時間を回転指令開始時間Ｔｒｓとして求め、回転指令開始時間格納部２１に記憶する。以下に、各部の詳細な処理を図５に示す自由曲面Ｓの制御例と併せて説明する。なお、実施例１と同一または類似する機能部については、図８に図１と同一の符号が付されている。
【００３８】
図９に示すように、加工プログラム実行部４は、まず、ブロックポインタ５からブロックインデックスＢＩを取得し（Ｓ４１）、ブロックインデックスＢＩが指示するブロックデータＢＤをブロックデータ格納部３から読み出す（Ｓ４２）。次に、読み出したブロックデータＢＤを解釈し、ここに自由曲面Ｓの加工開始指令「Ｐ」（図７参照）が含まれているかどうかを確認する（Ｓ４３）。
【００３９】
自由曲面Ｓを加工しないときは、ブロックデータＢＤに基づいて補間処理を実行し（Ｓ４４）、一つのブロックデータＢＤの処理を完了したのち（Ｓ４５）、ブロックインデックスＢＩを１つずつ進め（Ｓ４６）、全ブロックデータＢＤの処理を終了する（Ｓ４７）。自由曲面Ｓを加工するときには、実行時間カウンタ１４を初期化し（Ｓ４８）、回転指令開始時間格納部２１を初期化し（Ｓ４９）、回転指令の有無を示す回転指令フラグをＯＦＦし（Ｓ５０）、ブロックインデックスＢＩを先読みポインタ１３に格納する（Ｓ５１）。そして、回転指令開始時間Ｔｒｓを求めるために、制御Ｃをブロックデータ先読み部１２へ渡し（Ｓ５２）、その制御Ｃがブロックデータ先読み部１２から戻るのを待つ（Ｓ５３）。
【００４０】
ブロックデータ先読み部１２から制御Ｃが戻ると、図１０に示すように、加工プログラム実行部４は、まず、回転指令開始時間格納部２１から回転指令開始時間Ｔｒｓを読み出し、アンクランプ開始時間Ｔｕｃｓ（Ｔｕｃｓ＝回転指令開始時間Ｔｒｓ−アンクランプ時間Ｔｕｃ：図１２参照）を求める（Ｓ５４）。次に、実行時間カウンタ１４の実行積算時間Ｔｓｕｍがアンクランプ開始時間Ｔｕｃｓに達したかどうかを判定する（Ｓ５５）。実行積算時間Ｔｓｕｍがアンクランプ開始時間Ｔｕｃｓに達した場合は、回転指令フラグがＯＦＦであることを確認し（Ｓ５６）、クランプ制御部７にアンクランプ指令Ｃｕを出力する（Ｓ５７）。そして、回転指令フラグをＯＮにセットしたのち（Ｓ５８）、補間処理（Ｓ５９）に進む。
【００４１】
実行積算時間Ｔｓｕｍがアンクランプ開始時間Ｔｕｃｓに達していない場合、および、アンクランプ指令Ｃｕを既に出力していた場合（Ｓ５６：Ｎｏ）は、今回のブロックデータＢＤに対して関数発生を行い、補間点を１つ生成してサーボモータ制御部６に出力するという１周期分の補間処理を行い（Ｓ５９）、１周期の時間である関数発生周期時間Ｔｃ（図８参照）を実行時間カウンタ１４の実行積算時間Ｔｓｕｍに加算する（Ｓ６０）。そして、所要数の補間点を出力したかどうかを確認し、そうでない場合（Ｓ６１：Ｎｏ）に、ステップＳ５５〜Ｓ６１の処理を繰り返し、補間処理を周期的に実行し、実行積算時間Ｔｓｕｍを漸増させ、一つのブロックデータＢＤの処理を完了する（Ｓ６１：Ｙｅｓ）。その後、ブロックインデックスＢＩを１つ進め（Ｓ６２）、ブロックポインタ５からブロックインデックスＢＩを取得し（Ｓ６３）、次のブロックデータＢＤを読み出す（Ｓ６４）。
【００４２】
続いて、自由曲面Ｓの加工中であるか否かを確認し（Ｓ６５）、自由曲面Ｓの加工中でなければ、クランプ制御部７にクランプ指令を出力し（Ｓ６６）、今回のブロックデータＢＤに対する補間処理を行う（図９：Ｓ４４）。自由曲面Ｓの加工中であるときは、実行積算時間Ｔｓｕｍが回転指令開始時間Ｔｒｓを超え、かつ、今回のブロックデータＢＤに回転指令が含まれていないこと、即ち、自由曲面Ｓの加工途中に回転指令のあるブロックから回転指令のないブロックへ移ったかどうかを確認する（Ｓ６７）。そして、回転指令のないブロックに移った場合は、クランプ指令をクランプ制御部７に出力する（Ｓ６８）。その後、全ブロックデータＢＤが終了していないことを確認し（Ｓ６９）、加工開始点Ｐ１からのアンクランプ開始時間Ｔｕｃｓを判定する処理（Ｓ５５）に復帰する。
【００４３】
図１１に示すように、ブロックデータ先読み部１２は、加工プログラム実行部４から制御Ｃが移るのを待ち（Ｓ７１）、制御Ｃ１が移ると、まず、先読みポインタ１３から先読みインデックスＲＩを取得し（Ｓ７２）、先読みインデックスＲＩに対応するブロックデータＢＤを読み出し（Ｓ７３）、この先読みブロックデータＢＤに回転指令があるかどうかを判断する（Ｓ７４）。回転指令がない場合は、先読みインデックスＲＩの１つ前のインデックスに対応するブロックデータＢＤを読み出し（Ｓ７５）、このブロックデータＢＤおよび先読みブロックデータＢＤの２つの指令位置から移動距離を求める。次に、先読みブロックデータＢＤから指令速度を取得し、移動距離と指令速度から先読みブロックデータＢＤの実行時間Ｔｅを求め（Ｓ７６）、このブロック実行時間Ｔｅを回転指令開始時間格納部２１に記憶する（Ｓ７７）。
【００４４】
続いて、先読みインデックスＲＩを１つ進め（Ｓ７８）、全ブロックを終了していないことを確認し（Ｓ７９）、次の先読みインデックスＲＩを取得する処理（Ｓ７２）に戻り、後続のブロックデータＢＤの実行時間Ｔｅを回転指令開始時間格納部２１の既存値に順次加算して記憶する（Ｓ７７）。そして、回転指令を検出したときに（Ｓ７４：Ｙｅｓ）、制御Ｃを加工プログラム実行部４へ移し（Ｓ８０）、処理を終了する。この一連の処理により、ブロックデータ先読み部１２は、自由曲面Ｓの加工開始時刻から回転指令を含むブロックデータＢＤの実行開始時刻までの回転指令開始時間Ｔｒｓを格納部２１に残し、加工プログラム実行部４に提供することができる。
【００４５】
図１２に示す制御例では、加工プログラム実行部４がブロックデータＢＤ１の加工開始指令「Ｐ」を確認し、次のブロックデータＢＤ２以降が自由曲面Ｓであることを記憶し、制御Ｃをブロックデータ先読み部１２に移す。ブロックデータ先読み部１２は、ブロックデータＢＤ２〜ＢＤ４を順次読み出し、ブロック実行時間Ｔ２〜Ｔ４を加算し、次のブロックデータＢＤ５から回転指令「Ｂｂ５」を検出した時点で、Ｔ２〜Ｔ４の加算値を回転指令開始時間Ｔｒｓとして確定する。そして、加工プログラム実行部４は、ブロックデータＢＤ２，ＢＤ３の補間処理を行い、ブロックデータＢＤ３の補間処理の途中において、実行時間カウンタ１４の積算時間Ｔｓｕｍがアンクランプ開始時間Ｔｕｃｓに達した時刻に、アンクランプ指令Ｃｕをクランプ制御部７に出力した後、ブロックデータＢＤ３以降の補間処理を繰り返す。
【００４６】
このため、実施例２の数値制御装置２０では、クランプ機構がブロックデータＢＤ３の補間処理の途中でアンクランプ動作を開始し、ブロックデータＢＤ５の実行開始時刻にアンクランプ動作を完了する。したがって、実施例１と同様、エンドミルｔによる切削を停止することなく、自由曲面Ｓを連続加工し、加工時間を短縮でき、加工面からカッターマークをなくすことができる。また、回転軸が動作を開始する時刻きっかりに、クランプ機構がアンクランプ状態となるので、回転軸を自身のサーボモータで自己保持させる時間をなくし、サーボモータの過熱を未然に防止できるという利点もある。
【００４７】
本発明は上記実施例１，２に限定されるものではなく、以下に例示するように、発明の趣旨を逸脱しない範囲で、数値制御装置の処理内容を適宜に変更して実施することも可能である。
（Ａ）実施例１の数値制御装置１０において、加工プログラム実行部４が自由曲面Ｓの加工開始指令「Ｐ」を検出したときに、ブロックインデックスＢＩをブロックデータ先読み部１２に渡し、ブロックデータ先読み部１２が補間処理を継承するような制御も可能である。この場合は、ブロックデータ先読み部１２が補間処理と並行し、一連のブロックデータＢＤの先読みを行い、続いて、アンクランプ判定部１４が回転指令の有無を判定し、クランプ指令Ｃｃまたはアンクランプ指令Ｃｕをクランプ制御部７に出力する。
【００４８】
（Ｂ）実施例１，２の数値制御装置１０，２０では、ブロックデータＢＤを逐次読み出して、回転指令を検出しているが、加工開始点から加工終了点までのブロックデータを予め全て読み出して、回転指令を検出し、その回転指令を含むブロックデータの実行開始時刻までに、クランプ機構をアンクランプ状態とする制御を行うこともできる。
【００４９】
（Ｃ）実施例１，２の数値制御装置１０，２０において、クランプ機構のアンクランプ時間Ｔｕｃは、オペレータの入力によらず、測定によってアンクランプ時間設定部１１に設定することも可能である。具体的には、クランプ機構を実際にアンクランプ動作させ、クランプ状態からアンクランプ状態に切り替わるまでの時間を測定し、この測定時間をアンクランプ時間Ｔｕｃとしてアンクランプ時間設定部１１に設定する。こうすれば、工作機械の機種に応じてアンクランプ時間Ｔｕｃが異なっていたとしても、オペレータの入力に要する手間を省いて、正確なアンクランプ時間を自動的に設定することができる。
【００５０】
（Ｄ）実施例１，２の数値制御装置１０，２０において、ブロック実行時間Ｔｅを求めるときに使用する指令速度に、オペレータが操作パネルで設定した速度オーバーライドをかけた値を用いることも可能である。こうすれば、オペレータが送り速度オーバーライドを操作し、送り速度を上げることで、ブロック実行時間Ｔｅが短くなったとしても、その分だけブロックデータＢＤがさらに先読みされるので、送り速度オーバーライドに合わせて、アンクランプ動作の完了時刻を調整でき、オペレータにオーバーライド操作を禁止することなく、加工面からカッターマークを解消できる。
【００５１】
（Ｅ）実施例２の数値制御装置２０では、ブロック実行時間Ｔｅを自由曲面Ｓの加工開始点Ｐ１で求めているが、これ以外に、例えば、工具交換後早送りでワークに位置決めするスタート点や早送り位置決め点など、加工プログラムに指令された任意の指令点でブロック実行時間Ｔｅを求めることも可能である。
【００５２】
（Ｆ）実施例２の数値制御装置２０において、クランプ機構の安全マージンをアンクランプ時間設定部１１のアンクランプ時間Ｔｕｃに加算し、クランプ機構の機械的動作時間の経年変化に備えることもできる。
【符号の説明】
【００５３】
１    加工プログラム格納部
２    加工プログラム解釈部
３    ブロックデータ格納部
４    加工プログラム実行部
６    サーボモータ制御部
７    クランプ制御部
１０    数値制御装置（実施例１）
１１    アンクランプ時間設定部
１２    ブロックデータ先読み部
１４    実行時間カウンタ
１５    クランプ／アンクランプ指令出力部
２０    数値制御装置（実施例２）
２１    回転指令開始時間格納部
【図１】
0005386267.tif 000002
【図２】
0005386267.tif 000003
【図３】
0005386267.tif 000004
【図４】
0005386267.tif 000005
【図５】
0005386267.tif 000006
【図６】
0005386267.tif 000007
【図７】
0005386267.tif 000008
【図８】
0005386267.tif 000009
【図９】
0005386267.tif 000010
【図１０】
0005386267.tif 000011
【図１１】
0005386267.tif 000012
【図１２】
0005386267.tif 000013
【図１３】
0005386267.tif 000014
【図１４】
0005386267.tif 000015