(57)【要約】【課題】既存のプログラムを変更せずに工具交換時のサイクルタイムの短縮を図ることが可能な数値制御装置を提供する。【解決手段】プログラムをブロックごとに解析するブロック情報チェック部を備えた数値制御装置であって、そのブロック情報チェック部は、プログラムの解析結果中で見いだした工具交換指令に関し、前記工具交換指令の前に１個または２個以上の送り軸の位置決め指令があると判断した場合、その工具交換指令中の回転工具軸オリエンテーション動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、プログラムの解析結果を変更する。【選択図】図１
2018142194.tif 000002
【特許請求の範囲】
【請求項１】
工作機械の動作を記述するプログラムを入力するプログラム入力部と、
前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、
前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、
を具備し、
前記プログラム解析部は、
前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、
前記解析結果を保存する前記ブロック情報保存部と、
前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、
前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、
を備え、
前記ブロック情報チェック部は、
前記解析結果中で見いだした工具交換指令の前に１個または２個以上の送り軸の位置決め指令があると判断した場合、
前記見いだした工具交換指令中の回転工具軸オリエンテーション動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する数値制御装置。
【請求項２】
前記ブロック情報チェック部は、
前記解析結果中で見いだした工具交換指令の前に１個または２個以上の送り軸の位置決め指令があると判断した場合、
前記見いだした工具交換指令中の回転工具軸オリエンテーションの動作を、前記工具交換指令中の動作から除去するように、前記ブロック情報変更部に指示する請求項１記載の数値制御装置。
【請求項３】
工作機械の動作を記述するプログラムを入力するプログラム入力部と、
前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、
前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、
を具備し、
前記プログラム解析部は、
前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、
前記解析結果を保存する前記ブロック情報保存部と、
前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、
前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、
を備え、
前記ブロック情報チェック部は、
前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、
前記回転工具軸停止指令の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する数値制御装置。
【請求項４】
前記ブロック情報チェック部は、
前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、
前記１個または２個以上の送り軸の位置決め指令の前にある前記回転工具軸停止指令の解析結果を、前記ブロック情報保存部から除去するように、前記ブロック情報変更部に指示する請求項３記載の数値制御装置。
【請求項５】
工作機械の動作を記述するプログラムを入力するプログラム入力部と、
前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、
前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、
を具備し、
前記プログラム解析部は、
前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、
前記解析結果を保存する前記ブロック情報保存部と、
前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、
前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、
を備え、
前記ブロック情報チェック部は、
前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令がないと判断した場合、
前記工具交換指令中の回転工具軸停止の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する数値制御装置。
【請求項６】
工作機械の動作を記述するプログラムを入力するプログラム入力部と、
前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、
前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、
を具備し、
前記プログラム解析部は、
前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、
前記解析結果を保存する前記ブロック情報保存部と、
前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、
前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、
を備え、
前記ブロック情報チェック部は、
前記解析結果中で見出した工具交換指令の前に２個以上の送り軸の位置決め指令があり、前記２個以上の送り軸の位置決め指令中のいずれかの送り軸の位置決め指令と同じブロック中に回転工具軸停止指令があると判断した場合、
前記回転工具軸停止指令の動作を、前記回転工具軸停止指令があるブロックでそのまま実行するために、前記ブロック情報保存部に保存されている前記解析結果を変更する指示を前記ブロック情報変更部に出さない第１の処理と、
または、
前記回転工具軸停止指令の動作を、前記２個以上の送り軸の位置決め指令ブロックのうちいずれかの別の送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する第２の処理と、
のいずれかの処理を実行する数値制御装置。
【請求項７】
前記ブロック情報チェック部が前記第２の処理を実行する場合、
前記ブロック情報チェック部は、
前記ブロック情報保存部の前記回転工具軸停止指令があったブロックから、前記回転工具軸停止指令の解析結果を除去するように、前記ブロック情報変更部に指示する請求項６記載の数値制御装置。
【請求項８】
前記ブロック情報チェック部は、
前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、
前記回転工具軸停止指令の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示し、
且つ、
前記回転工具軸停止指令の動作の後に、前記回転工具軸オリエンテーション動作を実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する請求項１記載の数値制御装置。
【請求項９】
前記ブロック情報チェック部は、
前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令がないと判断した場合、
前記工具交換指令中の回転工具軸停止の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示し、
且つ、
前記回転工具軸停止の動作の後に、前記回転工具軸オリエンテーション動作を実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する請求項１記載の数値制御装置。
【請求項１０】
請求項１から９のいずれか１項に記載の数値制御装置と、
前記数値制御装置により制御される前記工作機械と、
を具備する工作機械システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マシニングセンタなどの工作機械の制御を行う制御装置に関する。特に、工作機械の動作を記述するプログラムに基づき工作機械の制御を行う数値制御装置に関する。また、数値制御装置を含む工作機械システムに関する。
【背景技術】
【０００２】
従来より、マシニングセンタなどで使用される回転工具の工具交換は、一般的に以下のように実行されている。
まず、図１０には、従来の工具交換を行う加工プログラムの指令例が示されている。この図に示すように、工具を交換する場合は、まず回転工具軸の回転停止指令（Ｍ０５）が実行される。その指令の後、工具交換位置への位置決めを含む送り軸の位置決め指令（Ｇ００）を実行してから、工具交換指令（Ｍ０６）が実行される。また、この工具交換指令（Ｍ０６）の中では、回転工具を交換可能な位置へ回転工具軸を回転させる回転工具軸の位置決め動作（回転工具軸オリエンテーション）と、工具交換動作と、が実行される。
このため、工具交換指令が実行開始後に、回転工具軸オリエンテーションが実行され、その後、工具交換動作が開始される。
【０００３】
＜用語＞
なお、マシニングセンタでは、回転工具軸のことを一般には主軸という。しかし、旋盤加工機では、一般的に主軸とは、加工対象であるワークを回転させる軸を指す。そこで、本文では、回転対象を明確にするために、主軸という用語ではなく、「回転工具軸」と記述する。また、この「回転工具軸」とは、複合旋盤加工機などの複合加工機における、回転工具軸を含む。また、以降の説明では、「回転工具軸の回転停止」は、単に「回転工具軸停止」と記述する。
図１１には、主軸がワークを回転させる軸であり、主軸とは別に回転工具軸を備えているような複合旋盤における加工の様子を表す概念図の一例が示されている。この図に示すように、複合旋盤の一例においては、例えば、ワーク２は主軸４によって回転されて旋削加工用工具６がワーク２を加工し、回転工具軸１２に取り付けられた回転工具８がワーク２を加工していくような加工処理が行われる。
【０００４】
＜回転工具軸オリエンテーションについて＞
回転工具の工具保持具と、回転工具軸との関係が図１２Ａから図１２Ｄに示されている。図１２Ａには、回転工具の保持具（ツーリング１０）の説明図が示されており、図１２Ｂには、回転工具軸１２の説明図が示されている。なお、ツーリング１０をその軸と平行な方向Ａから見た図が図１２Ｃに示されている。また、回転工具軸１２をその軸と平行な方向Ｂから見た図が図１２Ｄに示されている。
【０００５】
回転工具は、回転工具を保持するツーリング（工具保持具）１０のテーパ部１０ａ（図１２Ａ参照）を、回転工具軸１２のテーパ部１２ａ（図１２Ｂ参照）に挿入し嵌合させ、回転工具軸１２のキー１２ｂ（図１２Ｄ参照）とツーリングのキー溝１０ｂ（図１２Ｃ）とを噛合わせて、回転工具軸１２に取り付けられている。このように、回転工具軸１２のキー１２ｂと、ツーリング１０のキー溝１０ｂとが噛み合うことによって、回転工具軸１２の回転にともない、回転工具を回転させることができる。
【０００６】
回転工具の工具交換時には、回転工具軸１２に上記のようにして取り付けられている回転工具をグリップにより取り外し、次の工具に付け替える動作が実行される。工具交換時のグリップ１４の様子が図１３に示されている。この図に示すように、グリップ１４にもキー１４ａが設けられ、工具交換時には、当該キー１４ａと、ツーリング１０のキー溝１０ｂとが合うように配置する必要がある。また、工具交換時には、回転工具軸のキー１２ｂとツーリングのキー溝１０ｂとも合うように設定される。
回転工具軸停止時には、基本的にキー１２ｂの位置がどこで停止するか不明である。したがって、工具交換をしようとする場合は、キー１２ｂ（キー溝１０ｂ）の位置が、グリップ１４に対して必ず特定の位置になるように回転工具軸１２の位置決めを行う必要がある。この回転工具軸１２の特定の位置への位置決め動作のことを回転工具軸オリエンテーションと言う。
【０００７】
図１４Ａ、１４Ｂ、１４Ｃには、工具の交換を行う場合の従来の一般的なプログラム指令の例が示されている。図１４Ａ、１４Ｂ、１４Ｃ中において、プログラム中の各指令の意味は下記の通りである。
Ｍ０５        ：回転工具軸停止指令
Ｇ００Ｚｚｚ  ：工具交換位置への位置決めを含む送り軸の位置決め指令
（Ｚ：送り軸名称、ｚｚ：位置または移動量指令）
Ｍ０６Ｔｘｘ  ：工具交換指令
（Ｔｘｘ：交換を行う工具の指令、ｘｘ：工具番号）
【０００８】
図１４Ａの例では、回転工具軸停止指令（Ｍ０５）が実行された後、送り軸の位置決め（工具交換位置への位置決めを含む）を行い（Ｇ００Ｚｚｚ）、工具交換指令（Ｍ０６Ｔｘｘ）が実行される。この例においては、工具交換指令（Ｍ０６Ｔｘｘ）の実行時には、回転工具軸オリエンテーションと、工具交換動作と、が実行される。
図１４Ａで示されている例の各指令の実行のタイミングが図１５Ａ、図１５Ｂに示されている。図１５Ａは、図１４Ａのプログラム例の各指令の意味を示す概念図である。図１５Ｂは、横軸が時間のタイムチャートである。まず、回転工具軸停止指令（Ｍ０５）が時刻ｔ１まで実行される。時刻ｔ１から、次に送り軸の位置決め指令（Ｇ００Ｚｚｚ）が実行され、時刻ｔ２まで続く。時刻ｔ２からは、工具交換指令（Ｍ０６Ｔｘｘ）が開始される。この工具交換指令（Ｍ０６Ｔｘｘ）は、図１５Ｂに示すように、まず、回転工事具軸オリエンテーション動作が実行され、引き続き、時刻ｔ３から工具交換動作が実行される。
【０００９】
図１４Ｂの例では、送り軸の位置決め（工具交換位置への位置決めを含む）（Ｇ００Ｚｚｚ）を行い、工具交換指令（Ｍ０６Ｔｘｘ）を実行される。この例においては、工具交換指令（Ｍ０６Ｔｘｘ）の実行時には、回転工具軸停止と、回転工具軸オリエンテーションと、工具交換動作と、が実行される。
図１４Ｂで示されている例の各指令の実行のタイミングが図１６Ａ及び図１６Ｂに示されている。図１６Ａは、図１４Ｂのプログラム例の各指令の意味を示す概念図である。図１６Ｂは、横軸が時間のタイムチャートである。まず、送り軸の位置決め指令（Ｇ００Ｚｚｚ）が時刻ｔ４まで実行される。次に、時刻ｔ４から、工具交換指令（Ｍ０６Ｔｘｘ）が実行される。図１６Ｂに示すように、工具交換指令（Ｍ０６Ｔｘｘ）は、まず、時刻ｔ４から、回転工具軸停止動作が実行され、引き続き、時刻ｔ５からオリエンテーション、引き続き、時刻ｔ６から工具交換動作が実行される。
【００１０】
図１４Ｃの例では、送り軸の位置決め（工具交換位置への位置決めを含む）（Ｇ００Ｚｚｚ）と回転工具軸停止指令（Ｍ０５）が実行され、工具交換指令を（Ｍ０６Ｔｘｘ）が実行される。この例においては、工具交換指令（Ｍ０６Ｔｘｘ）の実行時には、回転工具軸オリエンテーションと、工具交換動作と、が実行される。
図１４Ｃで示されている例の各指令の実行のタイミングが図１７Ａ及び図１７Ｂに示されている。図１７Ａは、図１４Ｃのプログラム例の各指令の意味を示す概念図である。図１７Ｂは、横軸が時間のタイムチャートである。まず、時刻ｔ７において、送り軸の位置決め指令（Ｇ００Ｚｚｚ）と、回転工具軸停止指令（Ｍ０５）が開始される。回転工具軸停止指令の方が、送り軸の位置決め動作より早めに終了するが、送り軸の位置決め動作は、回転工具軸停止指令終了後も続行刻ｔ８まで処理が続く。時刻ｔ８から、工具交換指令（Ｍ０６Ｔｘｘ）が実行される。図１７Ｂに示すように、工具交換指令（Ｍ０６Ｔｘｘ）は、まず、回転工具軸オリエンテーション動作が実行され、引き続き、時刻ｔ９から工具交換動作が実行される。
【００１１】
また、下記特許文献１においては、主軸が「所定位置に到達したのち、オリエンテーションが完了したかを判断」し、オリエンテーションが完了していない場合に、回転工具軸停止とオリエンテーションを行うＮＣ工作機械が開示されている。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００４−１２２９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
このように、従来の工作機械においては、プログラムに含まれる指令を指令どおりに順次実行していくので、サイクルタイムが伸びてしまうという課題がある。
また、図１４Ｂ（図１６Ａ）のプログラムの場合は、工具交換指令開始時に実行される回転工具軸オリエンテーション動作実行前に、回転工具軸停止を行うため、必ずその回転停止実行時間が必要となってしまう。
【００１４】
また、図１４Ａ（図１５Ａ）や図１４Ｂ（図１６Ａ）に示したプログラム例を、図１４Ｃ（図１７Ａ）のプログラムのように、送り軸の位置決め指令時に、Ｍ０５（回転工具軸停止指令）を同時に指令するようにプログラムを変更すれば、回転工具軸の停止に要する時間分だけ、工具交換にかかるサイクルタイム短縮は可能ではある。
しかし、既存のプログラムについては、このようなプログラムの変更を個別に行う必要があり、煩雑な作業が必要となる。また、プログラムの変更時の変更ミスの恐れもある。さらに、ユーザのプログラム使用状況によっては、プログラムの変更自体が認められない場合もある。
【００１５】
回転工具軸停止だけなく、回転工具軸オリエンテーションも、切削終了後であって工具交換前であればいつ実行しても問題はない。したがって、本願発明者は、これらの処理のタイミングを調整すれば、よりサイクルタイムの短縮化が図れるのではないかと考えた。
【００１６】
その一方、図１４Ｃ（図１７Ａ）のプログラムのように、プログラム自体を修正することは、上述したように既存のプログラムに対する修正処理が煩雑となり、かつ、修正によって予期せぬ誤りが発生してしまう恐れもある。そこで、上述した図１４Ａ（図１５Ａ）や図１４Ｂ（図１６Ａ）に示すプログラムを、図１４Ｃ（図１７Ａ）に示すプログラムのように修正することなく、上述したように、処理のタイミングを工夫して、工具交換における回転工具軸停止と回転工具軸オリエンテーションにかかるサイクルタイムの短縮を行う仕組みが望まれている。また、図１４Ｃ（図１７Ａ）に示すプログラムについても、よりサイクルタイムの短縮を実現できることが望ましい。
【００１７】
なお、上記特許文献１に開示の技術では、所定位置への移動指令前に、回転工具軸停止指令があった場合には回転工具軸停止と位置決め動作を同時に行うことができない。
【００１８】
本発明は、このような課題に鑑みなされたものであり、工具交換時のサイクルタイムを短縮化することができる数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
このように、本願発明者は、工具交換時の各処理の実行タイミングを調整すればサイクルタイムの短縮化が図れる可能性を見出し、具体的な手法を確立することによって本発明を完成するに至った。本発明の解決原理は以下の通りである。
＜解決原理１＞
【００２０】
上記課題を解決する解決原理１は、プログラムを変更することなく、回転工具軸オリエンテーション動作の時間を削減するものである。
具体的には、プログラム指令を先読みし、送り軸の位置決め指令ブロックを実行中に、回転工具軸オリエンテーション動作を開始するように構成する。このような処理によって、プログラム指令を変更することなく、回転工具軸オリエンテーション動作を工具交換指令の実行より前に実行できるので、サイクルタイムの短縮が図れる。この解決原理１は、上述した図１４Ａ、図１４Ｂ、図１４Ｃの全ての場合において適用可能なものである。
【００２１】
なお、本文では、プログラムを構成する各指令に基づく動作群をブロックと呼ぶ。例えば、位置決め指令ブロックを実行とは、位置決め指令で表される動作群（ブロック）を実行することを言う。
解決原理１の動作を示すタイムチャートが図１に示されている。図1は横軸が時間を表すタイムチャートであり、各処理が実行される時間関係がしめされている。この図に示すように、回転工具軸停止指令が実行され、時刻ｔ１０においてこの回転工具軸停止指令が終了すると、同時刻ｔ１０から、送り軸の位置決め指令が実行開始される。
【００２２】
そして、従来の技術と同様に、時刻ｔ１１において工具交換指令が実行されるが、本解決原理１では、その工具交換指令に含まれている回転工具軸オリエンテーション動作を時刻ｔ１０、すなわち送り軸の位置決め指令が実行開始されるタイミングと同時に実行開始される。
【００２３】
このような処理によって、従来は工具交換指令の中で実行され、その工具交換指令の実行開始時点であるｔ１１において実行開始されていた回転軸オリエンテーション動作を早く実行することができる。その結果、時刻ｔ１１から開始される工具交換指令の実行時間を短縮することができ、以て、サイクルタイムの短縮化を図ることができる。
図１に示すように、従来は工具交換指令がｔ１１から開始され、時刻ｔ１３まで係っていた実行時間が、回転工具軸オリエンテーション動作の分短くすることができ、時刻ｔ１２で完了させることが可能となる。
【００２４】
＜解決原理２＞
上記課題を解決する解決原理２は、プログラムを変更することなく、回転工具軸停止指令の実行時間を削減するものである。
具体的には、プログラム指令を先読みし、工具交換指令を実行する前の（工具交換位置への）位置決め指令を実行する時に、回転工具軸停止指令を同時実行する。これによって、既存のプログラム指令を変更することなく、回転工具軸停止指令ブロックの実行時間または回転工具軸の停止時間を削減し、工具交換の際のサイクルタイム短縮を図ることができる。
解決原理２の動作を示すタイムチャートの例が図２Ａ、図２Ｂ、図３Ａ、図３Ｂに示されている。
【００２５】
＜解決原理２の例１＞
図２Ａ、図２Ｂは、解決原理２を図１４Ａのプログラム指令に適用した場合の動作を示しており、図２Ａには図１４Ａのプログラム指令が示され、図２Ｂには、図１４Ａのプログラム指令に解決原理２を適用した場合の各指令の実行の時間関係を表すタイムチャートが示されている。
【００２６】
図２Ａに示されているプログラム指令では、回転工具軸停止指令（Ｍ０５）、送り軸の位置決め指令（Ｇ００Ｚｚｚ）、工具交換指令（Ｍ０６Ｔｘｘ）、が従来の技術では、例えば連続して実行される。
これに対して、解決原理２によれば、図２Ｂに示すように、回転工具軸停止指令ブロックの実行を、それに引き続く送り軸の位置決め指令と同時に、時刻ｔ１４において実行開始している。この結果、実質的に回転工具軸停止指令の実行時間を削減することができ、サイクルタイムの短縮化を図ることができる。送り軸の位置決め指令は時刻ｔ１５において実行完了し、同時刻ｔ１５から工具交換指令の実行が開始される。
【００２７】
＜解決原理２の例２＞
図３Ａ、図３Ｂは、解決原理２を図１４Ｂのプログラム指令に適用した場合の動作を示しており、図３Ａには図１４Ｂのプログラム指令が示され、図３Ｂには、図１４Ｂのプログラム指令に解決原理２を適用した場合の各指令の実行の時間関係を表すタイムチャートが示されている。
図３Ａに示されているプログラム指令では、送り軸の位置決め指令（Ｇ００Ｚｚｚ）、工具交換指令（Ｍ０６Ｔｘｘ）、が従来の技術では、例えば連続して実行され、工具交換指令は、回転工具軸停止が含まれており、同時に実行される。
【００２８】
これに対して、解決原理２によれば、図３Ｂに示すように、工具交換指令中の回転工具軸停止動作を、それに先行する送り軸の位置決め指令と同時に、時刻ｔ１６において実行開始している。この結果、実質的に回転工具軸停止指令の実行時間を削減することができ、サイクルタイムの短縮化を図ることができる。送り軸の位置決め指令は時刻ｔ１７において実行完了し、同時刻ｔ１７から工具交換指令の実行が開始される。この工具交換指令の動作時間は、回転工具軸停止のための実行時間分短縮することができ、したがって、サイクルタイムの短縮化を図ることができる。
【００２９】
本発明は、このような解決原理１、２に基づく発明であり、具体的には下記のような手段を採用する。
【００３０】
（１）本発明に係る数値制御装置（例えば、後述する数値制御装置１００）は、工作機械の動作を記述するプログラムを入力するプログラム入力部（例えば、後述するプログラム入力部１０２）と、前記入力したプログラムを解析し、解析結果を出力するプログラム解析部（例えば、後述するプログラム解析部１０４）と、前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部（例えば、後述するプログラム実行部１１４）と、を具備し、前記プログラム解析部は、前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部（例えば、後述するブロック解析部１０６）と、前記解析結果を保存する前記ブロック情報保存部（例えば、後述するブロック情報保存部１１２）と、前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部（例えば、後述するブロック情報チェック部１０８）と、前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部（例えば、後述するブロック情報変更部１１０）と、を備え、前記ブロック情報チェック部は、前記解析結果中で見いだした工具交換指令の前に１個または２個以上の送り軸の位置決め指令があると判断した場合、前記見いだした工具交換指令中の回転工具軸オリエンテーション動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する。
【００３１】
（２）  （１）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見いだした工具交換指令の前に１個または２個以上の送り軸の位置決め指令があると判断した場合、前記見いだした工具交換指令中の回転工具軸オリエンテーション動作を、前記１個または２個以上の送り軸の位置決め指令ブロックの最初の送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示してよい。
【００３２】
（３）  （１）又は（２）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見いだした工具交換指令の前に１個または２個以上の送り軸の位置決め指令があると判断した場合、前記見いだした工具交換指令中の回転工具軸オリエンテーションの動作を、前記工具交換指令中の動作から除去するように、前記ブロック情報変更部に指示してよい。
【００３３】
（４）本発明に係る数値制御装置は、工作機械の動作を記述するプログラムを入力するプログラム入力部と、前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、を具備し、前記プログラム解析部は、前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、前記解析結果を保存する前記ブロック情報保存部と、前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、を備え、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、前記回転工具軸停止指令の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する。
【００３４】
（５）  （４）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、前記回転工具軸停止指令の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックの最初の送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示してよい。
【００３５】
（６）  （４）又は（５）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、前記１個または２個以上の送り軸の位置決め指令の前にある前記回転工具軸停止指令の解析結果を、前記ブロック情報保存部から除去するように、前記ブロック情報変更部に指示してよい。
【００３６】
（７）本発明に係る数値制御装置は、工作機械の動作を記述するプログラムを入力するプログラム入力部と、前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、を具備し、前記プログラム解析部は、前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、前記解析結果を保存する前記ブロック情報保存部と、前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、を備え、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令がないと判断した場合、前記工具交換指令中の回転工具軸停止の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する。
【００３７】
（８）  （７）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令がないと判断した場合、前記工具交換指令中の回転工具軸停止の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックの最初の送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示してよい。
【００３８】
（９）  （７）又は（８）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令がないと判断した場合、前記工具交換指令中の回転工具軸停止動作を、前記工具交換指令中の動作から除去するように、前記ブロック情報変更部に指示してよい。
【００３９】
（１０）本発明に係る数値制御装置は、工作機械の動作を記述するプログラムを入力するプログラム入力部と、前記入力したプログラムを解析し、解析結果を出力するプログラム解析部と、前記プログラム解析部が解析した解析結果に基づき前記工作機械を制御するプログラム実行部と、を具備し、前記プログラム解析部は、前記プログラム中の指令のブロックを解析し、前記解析結果をブロック情報保存部に保存するブロック解析部と、前記解析結果を保存する前記ブロック情報保存部と、前記ブロック解析部の前記解析結果をチェックし、所定の条件が成立した場合は、前記指令のブロックの解析結果の変更を、ブロック情報変更部に指示するブロック情報チェック部と、前記ブロック情報チェック部の指示に基づき、前記ブロック情報保存部に保存されている前記解析結果を変更するブロック情報変更部と、を備え、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に２個以上の送り軸の位置決め指令があり、前記２個以上の送り軸の位置決め指令中のいずれかの送り軸の位置決め指令と同じブロック中に回転工具軸停止指令があると判断した場合、前記回転工具軸停止指令の動作を、前記回転工具軸停止指令があるブロックでそのまま実行するために、前記ブロック情報保存部に保存されている前記解析結果を変更する指示を前記ブロック情報変更部に出さない第１の処理と、または、前記回転工具軸停止指令の動作を、前記２個以上の送り軸の位置決め指令ブロックのうちいずれかの別の送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示する第２の処理と、のいずれかの処理を実行する。
【００４０】
（１１）  （１０）に記載の数値制御装置において、前記ブロック情報チェック部が前記第２の処理を実行する場合、前記ブロック情報チェック部は、前記ブロック情報保存部の前記回転工具軸停止指令があったブロックから、前記回転工具軸停止指令の解析結果を除去するように、前記ブロック情報変更部に指示してよい。
【００４１】
（１２）  （１１）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に２個以上の送り軸の位置決め指令があり、前記２個以上の送り軸の位置決め指令中の２番目以降の送り軸の位置決め指令と同じブロック中に回転工具軸停止指令があると判断した場合、前記回転工具軸停止指令の動作を、前記２個以上の送り軸の位置決め指令ブロックのうち最初の送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示してよい。
【００４２】
（１３）  （１２）に記載の数値制御装置において、前記ブロック情報チェック部は、前記ブロック情報保存部の前記回転工具軸停止指令があった２番目以降のブロックから、前記回転工具軸停止指令の解析結果を除去するように、前記ブロック情報変更部に指示してよい。
【００４３】
（１４）  （１）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令があると判断した場合、前記回転工具軸停止指令の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示し、且つ、前記回転工具軸停止指令の動作の後に、前記回転工具軸オリエンテーション動作を実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示してよい。
【００４４】
（１５）  （１）に記載の数値制御装置において、前記ブロック情報チェック部は、前記解析結果中で見出した工具交換指令の前に１個または２個以上の送り軸の位置決め指令があり、前記１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令がないと判断した場合、前記工具交換指令中の回転工具軸停止の動作を、前記１個または２個以上の送り軸の位置決め指令ブロックのいずれかの送り軸の位置決め指令の実行の際に実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示し、且つ、前記回転工具軸停止の動作の後に、前記回転工具軸オリエンテーション動作を実行するように、前記ブロック情報保存部に保存されている前記解析結果を変更するようにブロック情報変更部に指示してよい。
【００４５】
（１６）本発明に係る工作機械システムは、（１）から（１５）のいずれか1項に記載の数値制御装置と、前記数値制御装置により制御される前記工作機械と、を具備する。
【発明の効果】
【００４６】
本発明によれば、既存のプログラムを何ら変更せずに工具交換時のサイクルタイムの短縮を図ることが可能な数値制御装置を提供することができる。
【図面の簡単な説明】
【００４７】
【図１】本発明の解決原理１の動作を示すタイムチャートである。
【図２Ａ】本発明の解決原理２の動作説明に係るプログラムの例である。
【図２Ｂ】本発明の解決原理２の動作を示すタイムチャートである。
【図３Ａ】本発明の解決原理２の動作説明に係るプログラムの例である。
【図３Ｂ】本発明の解決原理２の動作を示すタイムチャートである。
【図４】本発明の実施形態に係る数値制御装置の構成ブロック図である。
【図５】本発明の実施形態１において解決原理１を適用した動作を示すフローチャートである。
【図６】本発明の実施形態２において解決原理２を適用した動作を示すフローチャートである。
【図７】本発明の実施形態３において解決原理１および解決原理２を適用した動作を示すフローチャートである。
【図８Ａ】本発明の他の実施形態の動作説明に係るプログラムの例である。
【図８Ｂ】本発明の他の実施形態の動作を示すタイムチャートである。
【図９Ａ】本発明の他の実施形態の動作説明に係るプログラムの例である。
【図９Ｂ】本発明の他の実施形態の動作を示すタイムチャートである。
【図１０】工具交換を行う加工プログラムの指令例を示す図である。
【図１１】主軸とは別に回転工具軸を備えているような複合旋盤加工機における加工の様子を表す図である。
【図１２Ａ】回転工具の保持具（ツーリング）の説明図である。
【図１２Ｂ】回転工具軸の説明図である。
【図１２Ｃ】ツーリングをその軸と平行な方向Ａから見た図である。
【図１２Ｄ】回転工具軸をその軸と平行な方向Ｂから見た図である。
【図１３】工具交換時のグリップの様子が示す図である。
【図１４Ａ】工具の交換を行う場合の一般的なプログラム指令の例を示す図である。
【図１４Ｂ】工具の交換を行う場合の一般的なプログラム指令の例を示す図である。
【図１４Ｃ】工具の交換を行う場合の一般的なプログラム指令の例を示す図である。
【図１５Ａ】図１４Ａのプログラム例の各指令の意味を示す概念図である。
【図１５Ｂ】図１４Ａのプログラム例の各指令の実行タイミングを示すタイムチャートである。
【図１６Ａ】図１４Ｂのプログラム例の各指令の意味を示す概念図である。
【図１６Ｂ】図１４Ｂのプログラム例の各指令の実行タイミングを示すタイムチャートである。
【図１７Ａ】図１４Ｃのプログラム例の各指令の意味を示す概念図である。
【図１７Ｂ】図１４Ｃのプログラム例の各指令の実行タイミングを示すタイムチャートである。
【発明を実施するための形態】
【００４８】
以下、本発明の実施形態について、図面に基づき説明する。
第１．装置構成
本実施形態においては、工作機械の数値制御装置を説明する。この数値制御装置は、工作機械に附属するものであるが、工作機械と同一筐体に収容されていてもよいし、別体で構成されていても良い。この数値制御装置には、これまで説明してきたように、工作機械の動作を記述したプログラムが与えられる。そして、数値制御装置は、与えられたプログラムを読み取り、それに基づき、工作機械を制御する。
【００４９】
図４には、本実施形態に係る数値制御装置の構成ブロック図が示されている。
この図に示すように、数値制御装置１００は、プログラム入力部１０２と、プログラム解析部１０４と、プログラム実行部１１４と、から構成される。例えばサーボモータへの指令生成部など、数値制御装置を構成する他の要素は図示しない。数値制御装置１００は、好ましくはコンピュータを中心に構成してよく、プログラムや利用者の操作を入力するための所定のインターフェースや、工作機械に指示を出すためのインターフェースを備えることによって構成されることが好適である。
なお、数値制御装置１００と、図４に示す工作機械と、から工作機械システムを構成することができる。この工作機械システムは、請求の範囲の工作機械システムの好適な一例に相当する。
【００５０】
プログラム入力部１０２は、工作機械の動作を記述したプログラムを入力するインターフェースであり、図１４Ａ等で説明してきたプログラムを外部から入力できるインターフェースである。例えば、所定のネットワークを介してプログラムを入力する場合は、プログラム入力部１０２としてネットワークインターフェースが好適であり、外部の記憶装置からプログラムを入力する場合は、ＩＣカードリーダーやＵＳＢインターフェース等でも好適である。その他、プログラムを入力できればどのようなインターフェースでもよい。
プログラム解析部１０４は、入力したプログラムを解析し、プログラムの内容に合わせて、所定の実行処理をプログラム実行部１１４に実行させる。プログラム解析部は、その解析の流れを記述したコンピュータソフトウェアと、そのコンピュータソフトウェアを実行するＣＰＵ（数値制御装置１００を構成するコンピュータのＣＰＵ）と、から構成することが好適である。
【００５１】
プログラム実行部１１４は、プログラム解析部１０４の解析結果に基づき、工作機械に指示を出す部である。例えば工作機械のサーボモータに対する指示を出す部である。
プログラム解析部１０４は、図４に示すように、ブロック解析部１０６と、ブロック情報チェック部１０８と、ブロック情報変更部１１０と、ブロック情報保存部１１２と、から構成される。例えば、これらの機能を記述するコンピュータソフトウェアとそれらを実行するＣＰＵと、からこれらの各部を実現することが好適である。プログラム解析部１０４の各部の動作は、以下の動作説明において詳述していく。
【００５２】
第２．動作説明
＜実施形態１（解決手段１を適用した例）＞
回転工具軸オリエンテーションの時間を削減する解決原理１を適用した場合の動作例を説明する。
この実施形態１においては、上述したように、外部から提供されてきたプログラムが、プログラム入力部１０２において入力され、プログラム解析部１０４に送られる。
次に、数値制御装置１００のプログラム解析部１０４においては、下記のような流れで、プログラムの解析処理が実行される。また、この流れが図５のフローチャートに示されている。
【００５３】
まず、ステップＳ５−１において、ブロック解析部１０６が、解析対象であるプログラムに含まれるブロック情報があるか否かを確認する。ブロック情報がない場合は、解析処理は終了する。解析対象であるブロックがあれば、ステップＳ５−２に移行する。
ステップＳ５−２において、ブロック解析部１０６が、解析対象であるブロック情報を解析し、その解析内容をブロック情報保存部１１０に記録していく。なおブロック解析部１０６は、プログラム中の指令のブロックを順次解析していくコンピュータソフトウェアとＣＰＵとで構成されてよい。また、ブロック情報保存部１１０は、所定の記憶手段から構成されてよい。情報が保存できればどのような手段でもよい。図５のフローチャート中では、ブロック情報保存部１１２を、便宜上、（Ａ）と略称している。
なお、ブロック解析部１０６の解析結果は、同時にブロック情報チェック部１０８に送られる。
【００５４】
ステップＳ５−３において、ブロック情報チェック部１０８は、解析したブロックが工具交換指令ブロックであるか否かを判断する。その結果、工具交換指令（ブロック）でなかった場合は、次のブロックの解析を続けるべくステップＳ５−１に移行する。一方、工具交換指令（ブロック）である場合は、ステップＳ５−４に移行する。なお、図５のフローチャート中では、工具交換指令を、便宜上、（Ｂ）と略称している。
【００５５】
ステップＳ５−４において、ブロック情報チェック部１０８が、発見された工具交換指令（ブロック）の前に、送り軸の位置決め指令（ブロック）があるか否かを判断する。この判断を行うために、ブロック情報チェック部１０８は、前の指令をブロック情報保存部１１２から取り出して判断を行う。この判断の結果、送り軸の位置決め指令（ブロック）があった場合は、同ステップＳ５−４の処理を続行し、さらに一つ前に位置決め指令があるか否か判断する。この処理は、さらに一つ前に送り軸の位置決め指令が続いている限り続行される。例えば、後述する図８Ｂに示すように、複数の送り軸の位置決め指令が存在する場合は、最初の送り軸の位置決め指令までこの処理は続く。なお、図５のフローチャート中では、送り軸の位置決め指令を、便宜上（Ｃ）と略称している。一方、ステップＳ５−４において、送り軸の位置決め指令（Ｃ）ではないと判断された場合は、ステップＳ５−５に移行する。
【００５６】
ステップＳ５−５において、ブロック情報チェック部１０８は、その送り軸の位置決め指令（ブロック）の指令の解析内容を、位置決めの動作と共に回転工具受軸オリエンテーションを実行させるような情報に設定する。具体的には、ステップＳ５−５において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
さらに、ステップＳ５−５において、現在着目しているブロック、すなわち現在の解析対象である工具交換指令のブロックの解析内容を、回転軸オリエンテーション動作を実行しないような内容に設定する。具体的には、ステップＳ５−５において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、現在着目しているブロックである工具交換指令のブロックの解析情報（ブロック情報保存部１１２内）から、回転工具軸オリエンテーション動作を除去し、工具交換動作のみを実行させるような内容に書き換える（または回転工具軸オリエンテーション動作の情報を削除する）のである。
【００５７】
以上のような動作によって、提供されたプログラム中の指令の並びに基づき、その指令の解釈された内容を適宜書き換えることができる。そして、書き換えた解釈内容に基づき、プログラム実行部１１４が、各動作の指令を工作機械に与える。
この結果、提供された既存のプログラム自体は何ら変更せずに、プログラム解析部１０４が、指令の並びに基づき、解釈を並べ替えたので、解決原理１に基づく動作の変更を行うことが可能である。したがって、既存のプログラムを何ら変更せずに工具交換時のサイクルタイムの短縮を図ることが可能である。
【００５８】
＜実施形態２−１（解決手段２を適用した例その１）＞
回転工具軸停止の時間を削減する解決原理２を適用した場合の動作例その１を説明する。この動作例は、図２Ａ、図２Ｂに示すように、送り軸の位置決め指令の前に回転工具軸停止指令がある場合の動作を中心に説明する。
この実施形態２−１においては、上述したように、外部から提供されてきたプログラムが、プログラム入力部１０２において入力され、プログラム解析部１０４に送られる。
次に、数値制御装置１００のプログラム解析部１０４においては、下記のような流れで、プログラムの解析処理が実行される。また、この流れが図６のフローチャートに示されている。
【００５９】
まず、ステップＳ６−１において、ブロック解析部１０６が、解析対象であるプログラムに含まれるブロック情報があるか否かを確認する。ブロック情報がない場合は、解析処理は終了する。解析対象であるブロックがあれば、ステップＳ６−２に移行する。
ステップＳ６−２において、ブロック解析部１０６が、解析対象であるブロック情報を解析し、その解析内容をブロック情報保存部１１０に記録していく。なおブロック解析部１０６は、プログラム中の指令のブロックを順次解析していくコンピュータソフトウェアとＣＰＵとで構成されてよい。また、ブロック情報保存部１１０は、所定の記憶手段から構成されてよい。情報が保存できればどのような手段でもよい。図６のフローチャート中では、図５と同様に、ブロック情報保存部１１２を、便宜上、（Ａ）と略称している。
なお、ブロック解析部１０６の解析結果は、同時にブロック情報チェック部１０８に送られる。
【００６０】
ステップＳ６−３において、ブロック情報チェック部１０８は、解析したブロックが工具交換指令ブロックであるか否かを判断する。その結果、工具交換指令（ブロック）でなかった場合は、次のブロックの解析を続けるべくステップＳ６−１に移行する。一方、工具交換指令（ブロック）である場合は、ステップＳ６−４に移行する。
なお、図６のフローチャート中では、図５と同様に、工具交換指令を、便宜上、（Ｂ）と略称している。
【００６１】
ステップＳ６−４において、ブロック情報チェック部１０８が、発見された工具交換指令（ブロック）の前に、送り軸の位置決め指令（ブロック）があるか否かを判断する。この判断を行うために、ブロック情報チェック部１０８は、前の指令をブロック情報保存部１１２から取り出して判断を行う。この判断の結果、送り軸の位置決め指令（ブロック）があった場合は、同ステップＳ６−４の処理を続行し、さらに一つ前に位置決め指令があるか否か判断する。この処理は、さらに一つ前に送り軸の位置決め指令が続いている限り続行される。例えば、後述する図８Ｂに示すように、複数の送り軸の位置決め指令が存在する場合は、その先頭である最初の送り軸の位置決め指令までこの処理は続く。なお、図６のフローチャート中では、送り軸の位置決め指令を、便宜上（Ｃ）と略称している。一方、ステップＳ６−４において、送り軸の位置決め指令（Ｃ）ではないと判断された場合は、ステップＳ６−５に移行する。
【００６２】
ステップＳ６−５において、ブロック情報チェック部１０８は、さらに、一つ前の指令が、回転工具軸停止指令（ブロック）であるか否かを判断する。この判断も、ブロック情報保存部１１２の内容を参照することによって行う。この判断の結果、一つ前のブロックが、回転工具軸停止指令（ブロック）があった場合は、ステップＳ６−７に移行する。
一方、一つ前のブロックに、回転工具軸停止指令（ブロック）がなかった場合は、ステップＳ６−６に移行する。このステップＳ６−６に移行する場合は、図３Ａ、図３Ｂに示すように、（図２Ａ、図２Ｂと異なり、）送り軸の位置決め指令の前に回転工具軸停止指令（Ｄ）がなかった場合である。この場合の動作は、説明の都合上、次の実施形態２−２で説明する。なお、回転工具軸停止指令（ブロック）は、図６のフローチャート中では（Ｄ）と略称されている。
なお、一つ前のブロックが回転工具軸停止指令（Ｄ）であった場合とは、１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令（Ｄ）がある場合であり、この場合、ステップＳ６−７に移行する。例えば、送り軸の位置決め指令が１個の場合の例が、図２Ａ、図２Ｂで説明されている。
【００６３】
ステップＳ６−７において、ブロック情報チェック部１０８は、その送り軸の位置決め指令（ブロック）の解析内容を、位置決めの動作と共に回転工具軸停止動作を実行させるよう情報に設定する。具体的には、ステップＳ６−７において、ブロック情報変更部１１０が、ブロック情報チェック部１０８からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
これによって、図２Ｂで説明したように、送り軸の位置決め指令の動作中に、同時に回転工具軸停止動作を実行させることが可能である。送り軸の位置決め指令が複数個存在する場合は、その最初の送り軸の位置決め指令の動作中に回転工具軸停止動作を実行させる。
【００６４】
さらに、次のステップＳ６−８において、ステップＳ６−５において見出された回転工具軸停止指令（Ｄ）を実行しないように設定する。
すなわち、ブロック情報変更部１１０は、ブロック情報チェック部１０８からの指示を受けて、元のプログラム指令に含まれていた上記回転工具軸停止指令（Ｄ）（ステップＳ６−５）の解析内容を、ブロック情報保存部１１２（Ａ）から削除する。
【００６５】
以上のような動作によって、提供されたプログラム中の指令の並びに基づき、適宜その解釈結果を書き換えることができる。そして、書き換えた解釈内容に基づき、プログラム実行部１１４が、各動作の指令を工作機械に与える。
この結果、提供された既存のプログラム自体は何ら変更せずに、プログラム解析部１０４が、指令の並びに基づき、解釈を並べ替えたので、解決原理２に基づく動作の変更を行うことが可能である。したがって、既存のプログラムを何ら変更せずに工具交換時のサイクルタイムの短縮を図ることが可能である。
【００６６】
＜実施形態２−２（解決手段２を適用した例その２）＞
回転工具軸停止の時間を削減する解決原理２を適用した場合の動作例その２を説明する。この動作例は、図３Ａ、図３Ｂに示すように、送り軸の位置決め指令の前に回転工具軸停止指令が存在せず、工具交換指令中に回転工具軸停止動作が含まれる場合の動作を中心に説明する。  
この実施形態２−２においては、上述したように、外部から提供されてきたプログラムが、プログラム入力部１０２において入力され、プログラム解析部１０４に送られる。
次に、数値制御装置１００のプログラム解析部１０４においては、上記実施形態２−１において説明したような処理がステップＳ６−５（図６参照）まで進み、そのステップＳ６−５において、実施形態２−１とは逆に、一つ前のブロックが回転工具軸停止指令ではないことが判定する。その結果ステップＳ６−６に移行する。以下、ステップＳ６−６以降の処理を説明する。
【００６７】
ステップＳ６−６において、ブロック情報チェック部１０８は、その送り軸の位置決め指令（ブロック）の解析内容を、位置決めの動作と共に回転工具軸停止動作を実行させるような情報に設定する。具体的には、ステップＳ６−６において、ブロック情報変更部１１０が、ブロック情報チェック部１０８からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
これによって、図３Ｂで説明したように、送り軸の位置決め指令の動作中に、同時に回転工具軸停止動作を実行させることが可能である。送り軸の位置決め指令が１個または２個以上存在する場合は、その最初の送り軸の位置決め指令の動作中に回転工具軸停止動作を実行させる。
【００６８】
さらに、同ステップＳ６−６において、現在着目しているブロック、すなわち現在の解析対象である工具交換指令のブロックの解析内容を、回転工具軸停止動作を実行しないような内容に設定する。具体的には、ステップＳ６−７において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、現在着目しているブロックである工具交換指令のブロックの解析情報（ブロック情報保存部１１２内）から、回転工具軸停止動作を除去し、工具交換動作のみを実行させるような内容に書き換える（または回転工具軸停止動作の情報を削除する）のである。
【００６９】
以上のような動作によって、提供されたプログラム中の指令の並びに基づき、その指令の解釈された実行内容を適宜書き換えることができる。そして、書き換えた解釈内容に基づき、プログラム実行部１１４が、各動作の指令を工作機械に与える。
この結果、提供された既存のプログラム自体は何ら変更せずに、プログラム解析部１０４が、指令の並びに基づき、解釈を並べ替えたので、解決原理１に基づく動作の変更を行うことが可能である。したがって、既存のプログラムを何ら変更せずに工具交換時のサイクルタイムの短縮を図ることが可能である。
【００７０】
＜途中に回転工具軸停止がある場合＞
なお、本実施形態２−２におけるステップＳ６−４において、連続して存在する１個または２個以上の送り軸の位置決め指令を検出しているが、その中のいずれかの送り軸の位置決め指令と同じブロックにおいて回転工具軸停止指令が存在する場合も考えられる（例えば、後述する図９Ｂ）。
その場合は、ステップＳ６−６において、当該回転工具軸停止指令の動作を、検出した１個または２個以上存在する送り軸の位置決め指令の最初の送り軸の位置決め指令の実行の際に実行させることが好適である（後述する図９Ｂ）。
この場合、具体的には、ステップＳ６−６において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、回転工具軸停止動作を、１個または２個以上の送り軸の位置決め指令のうち、最初の送り軸の位置決め指令の動作とともに実行するように、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）ことが好適である。
そして、同ステップＳ６−６において、１個または２個以上の送り軸の位置決め指令中で見出された回転工具軸停止指令を、ブロック情報保存部１１２内の該当するブロックの解析情報から除外することが好適である。
【００７１】
＜実施形態３−１（解決原理１と、解決原理２とを共に適用した例その１）＞
回転工具軸停止の時間を削減する解決原理１及び解決原理２を共に適用した場合の動作例その１を説明する。この動作例は、図２Ａ、図２Ｂに示すように、送り軸の位置決め指令の前に回転工具軸停止指令がある場合の動作を中心に説明する。
この実施形態３−１においては、上述したように、外部から提供されてきたプログラムが、プログラム入力部１０２において入力され、プログラム解析部１０４に送られる。
次に、数値制御装置１００のプログラム解析部１０４においては、下記のような流れで、プログラムの解析処理が実行される。また、この流れが図７のフローチャートに示されている。
【００７２】
まず、ステップＳ７−１において、ブロック解析部１０６が、解析対象であるプログラムに含まれるブロック情報があるか否かを確認する。ブロック情報がない場合は、解析処理は終了する。解析対象であるブロックがあれば、ステップＳ７−２に移行する。
ステップＳ７−２において、ブロック解析部１０６が、解析対象であるブロック情報を解析し、その解析内容をブロック情報保存部１１０に記録していく。なおブロック解析部１０６は、プログラム中の指令のブロックを順次解析していくコンピュータソフトウェアとＣＰＵとで構成されてよい。また、ブロック情報保存部１１０は、所定の記憶手段から構成されてよい。情報が保存できればどのような手段でもよい。図７のフローチャート中では、図５、図６と同様に、ブロック情報保存部１１２を、便宜上、（Ａ）と略称している。なお、ブロック解析部１０６の解析結果は、同時にブロック情報チェック部１０８に送られる。
【００７３】
ステップＳ７−３において、ブロック情報チェック部１０８は、解析したブロックが工具交換指令ブロックであるか否かを判断する。その結果、工具交換指令（ブロック）でなかった場合は、次のブロックの解析を続けるべくステップＳ７−１に移行する。一方、工具交換指令（ブロック）である場合は、ステップＳ７−４に移行する。
なお、図７のフローチャート中では、図５、図６と同様に、工具交換指令を、便宜上、（Ｂ）と略称している。
【００７４】
ステップＳ７−４において、ブロック情報チェック部１０８が、発見された工具交換指令（ブロック）の前に、送り軸の位置決め指令（ブロック）があるか否かを判断する。この判断を行うために、ブロック情報チェック部１０８は、前の指令をブロック情報保存部１１２から取り出して判断を行う。この判断の結果、送り軸の位置決め指令（ブロック）があった場合は、同ステップＳ７−４の処理を続行し、さらに一つ前に位置決め指令があるか否か判断する。この処理は、さらに一つ前に送り軸の位置決め指令が続いている限り続行される。例えば、後述する図８Ｂに示すように、複数の送り軸の位置決め指令が存在する場合は、最初の送り軸の位置決め指令までこの処理は続く。なお、図７のフローチャート中では、送り軸の位置決め指令を、便宜上（Ｃ）と略称している。一方、ステップＳ７−４において、送り軸の位置決め指令（Ｃ）ではないと判断された場合は、ステップＳ７−５に移行する。
【００７５】
ステップＳ７−５において、ブロック情報チェック部１０８は、さらに、一つ前の指令が、回転工具軸停止指令（ブロック）であるか否かを判断する。この判断も、ブロック情報保存部１１２の内容を参照することによって行う。この判断の結果、一つ前のブロックが、回転工具軸停止指令（ブロック）があった場合は、ステップＳ７−８に移行する。
【００７６】
一方、一つ前のブロックに、回転工具軸停止指令（ブロック）がなかった場合は、ステップＳ７−６に移行する。このステップＳ７−６に移行する場合は、図３Ａ、図３Ｂに示すように、（図２Ａ、図２Ｂと異なり、）送り軸の位置決め指令の前に回転工具軸停止指令（Ｄ）がなかった場合である。この場合の動作は、説明の都合上、次の実施形態３−２で説明する。なお、回転工具軸停止指令（ブロック）は、図７のフローチャート中では（Ｄ）と略称されている。
【００７７】
なお、一つ前のブロックが回転工具軸停止指令（Ｄ）であった場合とは、１個または２個以上の送り軸の位置決め指令の前に、回転工具軸停止指令（Ｄ）がある場合であり、この場合、ステップＳ７−８に移行する。例えば、送り軸の位置決め指令が１個の場合の例が、図２Ａ、図２Ｂで説明されている。
【００７８】
ステップＳ７−８において、ブロック情報チェック部１０８は、その送り軸の位置決め指令（ブロック）の解析内容を、位置決めの動作と共に回転工具軸停止動作を実行させるよう情報に設定する。具体的には、ステップＳ７−８において、ブロック情報変更部１１０が、ブロック情報チェック部１０８からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
これによって、図２Ｂで説明したように、送り軸の位置決め指令の動作中に、同時に回転工具軸停止動作を実行させることが可能である。送り軸の位置決め指令が複数個存在する場合は、その最初の送り軸の位置決め指令の動作中に回転工具軸停止動作を実行させる。
【００７９】
さらに、次のステップＳ７−９において、ステップＳ７−５において見出された回転工具軸停止指令（Ｄ）を実行しないように設定する。
すなわち、ブロック情報変更部１１０は、ブロック情報チェック部１０８からの指示を受けて、元のプログラム指令に含まれていた上記回転工具軸停止指令（Ｄ）（ステップＳ７−５）の解析内容を、ブロック情報保存部１１２（Ａ）から削除する。
これらステップＳ７−８、Ｓ７−９の動作は、解決原理２に基づくものであり、適用状況としては、図２Ａ、図２Ｂに示される状況である。
【００８０】
そして、ステップＳ７−１０においては、ステップＳ５−５と同様の処理が実行される。すなわち、現在着目しているブロック、すなわち現在の解析対象である工具交換指令の直前のブロック、すなわち送り軸の位置決め指令のブロックの解析内容を、位置決めの動作と共に回転工具受軸オリエンテーションを実行させるような情報に設定する。具体的には、ステップＳ７−１０において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
【００８１】
さらに、同ステップＳ７−１０において、現在着目しているブロック、すなわち現在の解析対象である工具交換指令のブロックの解析内容を、回転軸オリエンテーション動作を実行しないような内容に設定する。具体的には、ステップＳ７−１０において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、現在着目しているブロックである工具交換指令のブロックの解析情報（ブロック情報保存部１１２内）から、回転工具軸オリエンテーション動作を除去し、工具交換動作のみを実行させるような内容に書き換える（または回転工具軸オリエンテーション動作の情報を削除する）のである。
このステップＳ７−１０の動作は、解決原理１に基づくものであり、適用状況としては、図１に示される状況だからである。
【００８２】
以上のような動作によって、提供されたプログラム中の指令の並びに基づき、適宜その解釈結果を書き換えることができる。そして、書き換えた解釈内容に基づき、プログラム実行部１１４が、各動作の指令を工作機械に与える。
この結果、提供された既存のプログラム自体は何ら変更せずに、プログラム解析部１０４が、指令の並びに基づき、解釈を並べ替えたので、解決原理１、２に基づく動作の変更を行うことが可能である。したがって、このように解決原理１及び２を共に適用する場合も、既存のプログラムを何ら変更せずに工具交換時のサイクルタイムの短縮を図ることが可能である。
【００８３】
＜実施形態３−２（解決原理１と、解決原理２とを共に適用した例その２）＞
回転工具軸オリエンテーション動作の時間を削減する解決原理１と、回転工具軸停止の時間を削減する解決原理２とを共に適用した場合の動作例その２を説明する。この動作例２は、図３Ａ、図３Ｂに示すように、送り軸の位置決め指令の前に回転工具軸停止指令が存在しない場合の動作を中心に説明する。
この実施形態３−２においては、上述したように、外部から提供されてきたプログラムが、プログラム入力部１０２において入力され、プログラム解析部１０４に送られる。
【００８４】
次に、数値制御装置１００のプログラム解析部１０４においては、上記実施形態３−１において説明したような処理がステップＳ７−５（図７参照）まで進み、そのステップＳ７−５において、一つ前のブロックが回転工具軸停止指令ではないことが判定する。その結果ステップＳ７−６に移行する。以下、ステップＳ７−６以降の処理を説明する。
【００８５】
ステップＳ７−６において、ブロック情報チェック部１０８は、ブロック情報チェック部１０８は、その送り軸の位置決め指令（ブロック）の解析内容を、位置決めの動作と共に回転工具軸停止動作を実行させるような情報に設定する。具体的には、ステップＳ７−６において、ブロック情報変更部１１０が、ブロック情報チェック部１０８からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
これによって、図３Ｂで説明したように、送り軸の位置決め指令の動作中に、同時に回転工具軸停止動作を実行させることが可能である。送り軸の位置決め指令が１個または２個以上存在する場合は、その最初の送り軸の位置決め指令の動作中に回転工具軸停止動作を実行させる。
【００８６】
さらに、ステップＳ７−６において、現在着目しているブロック、すなわち現在の解析対象である工具交換指令のブロックの解析内容を、回転工具軸停止動作を実行しないような内容に設定する。具体的には、ステップＳ７−６において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、現在着目しているブロックである工具交換指令のブロックの解析情報（ブロック情報保存部１１２内）から、回転工具軸停止動作を除去し、工具交換動作のみを実行させるような内容に書き換える（または回転工具軸停止動作の情報を削除する）のである。
このステップＳ７−７の動作は、解決原理２に基づく処理であり、特に、図３Ａ、図３Ｂに示す状況における処理である。
【００８７】
そして、ステップＳ７−７においては、ステップＳ５−５と同様の処理が実行される。すなわち、現在着目しているブロック、すなわち現在の解析対象である工具交換指令の直前のブロック、すなわち送り軸の位置決め指令のブロックの解析内容を、位置決めの動作と共に回転工具受軸オリエンテーションを実行させるような情報に設定する。具体的には、ステップＳ７−７において、ブロック情報変更部１１０が、ブロック情報チェック部からの指示を受けて、ブロック情報保存部１１２内の当該情報を上記内容に書き換える（または書き足す）。
【００８８】
さらに、同ステップＳ７−７において、現在着目しているブロック、すなわち現在の解析対象である工具交換指令のブロックの解析内容を、回転軸オリエンテーション動作を実行しないような内容に設定する。具体的には、ステップＳ７−７において、ブロック情変更部１１０が、ブロック情報チェック部からの指示を受けて、現在着目しているブロックである工具交換指令のブロックの解析情報（ブロック情報保存部１１２内）から、回転工具軸オリエンテーション動作を除去し、工具交換動作のみを実行させるような内容に書き換える（または回転工具軸オリエンテーション動作の情報を削除する）のである。
このステップＳ７−７の動作は、解決原理１に基づくものであり、適用状況としては、図１に示される状況だからである。
【００８９】
以上のような動作によって、提供されたプログラム中の指令の並びに基づき、その指令の解釈された実行内容を適宜書き換えることができる。そして、書き換えた解釈内容に基づき、プログラム実行部１１４が、各動作の指令を工作機械に与える。
この結果、提供された既存のプログラム自体は何ら変更せずに、プログラム解析部１０４が、指令の並びに基づき、解釈を並べ替えたので、解決原理１及び解決原理２に基づく動作の変更を行うことが可能である。したがって、既存のプログラムを何ら変更せずに工具交換時のサイクルタイムの短縮を図ることが可能である。
【００９０】
＜効果＞
以上説明したように、本実施形態において下記のような効果がある。
従来は、与えられたプログラム中の各指令をその順番どおりに順次実行しているので、サイクルタイムが伸びてしまう。
これに対して、これまで説明した実施形態によれば、所定の指令の動作を同時に並列に実行することによって、特に、回転工具軸停止動作と、回転工具軸オリエンテーション動作の実行時間の削減が可能となる。
【００９１】
また、従来、図１４Ｂ（図１６Ａ、図１６Ｂ）で説明したプログラムの場合、工具交換指令開始時に実行される回転工具軸オリエンテーション動作実行前に、必ず回転工具軸の回転停止を行うため、その回転停止実行時間が必要となっていた。
これに対して、本実施形態によれば、ＣＮＣ（Computer Numerical Control：コンピュータ数値制御）の制御によって、工具交換指令より前に、位置決め動作と同時に回転工具軸停止を行うことにより、回転停止に要する時間の削減が可能である。
また、図１４Ａ、図１４Ｂに示されたプログラムを、図１４Ｃに示すプログラムのように、位置決め指令時に、Ｍ０５（回転工具軸停止指令）や回転工具軸オリエンテーションを同時に指令するようにプログラムを変更すれば、工具交換にかかるサイクルタイム短縮は可能かもしれない。しかしながら、既存のプログラムについてはプログラムの変更が必要となり、変更のための作業が煩雑となりがちである。また、プログラム変更時の変更ミスの可能性が発生してしまう。
これに対して、本実施形態によれば、プログラムの変更を行うことなく、回転工具軸停止動作と、回転工具軸オリエンテーション動作と、の実行時間の削減が可能である。
【００９２】
＜変形例１＞
以上述べた効果において、送り軸の位置決め指令と、（回転工具軸停止指令、および／または、回転工具軸オリエンテーション動作）の実行時間が逆転する場合もある。このような場合においても、結局はいずれか実行時間の短い方の指令の実行時間分の削減が可能である点は上述した実施形態と同様である。
例えば、図１において、送り軸の位置決め指令の実行時間より回転工具軸オリエンテーション動作の実行時間の方が短い例を示しているが、逆に、送り軸の位置決め指令の実行時間の方が短い場合に、送り軸の位置決め指令の動作と回転工具軸オリエンテーション動作とを共に実行することによって、送り軸の位置決め指令の動作時間を実質的に削減することができる。
すなわち、両動作を同時に実行することによって、それらの実行時間は長い動作時間の方に合わせられる。その結果、短い実行時間の動作を（順番に単独で実行する場合に比べて）実質的に消滅させることができる。
また、例えば、図２Ｂにおいて、送り軸の位置決め指令の実行時間より回転工具軸停止動作の実行時間の方が短い例を示しているが、逆に、送り軸の位置決め指令の実行時間の方が短い場合でも、送り軸の位置決め指令の動作と回転工具軸停止動作とを共に実行することによって、送り軸の位置決め指令の動作時間を実質的に削減することができる。
この場合も、両動作を同時に実行することによって、実行時間が長い動作時間の方に合わせられ、短い実行時間の動作を実質的に消滅させたものである。
【００９３】
＜変形例２＞
また、本実施形態で説明する解決原理１や解決原理２の処理と、従来動作の処理とを切り替えるように構成してもよい。この切り替えは、パラメータの設定、または、プログラム指令、または信号の指令により行うことができる。
【００９４】
＜変形例３−１＞
図８Ａに示すプログラムのように、送り軸の位置決め指令が連続するプログラムも考えられる。このような場合は、連続する送り軸の位置決め指令の最初の送り軸の位置決め指令の開始タイミングで、回転工具軸停止動作、および／または、回転工具軸オリエンテーション動作を実行してもよい。つまり、図８Ｂに示すように、最初の送り軸の位置決め指令（Ｙ，Ｚ）の開始時刻ｔ１８から、回転工具軸停止動作が開始されている。その後、回転工具軸停止動作が時刻ｔ１９で終了すると、引き続き、時刻ｔ１９から、回転工具軸オリエンテーション動作が開始される。
【００９５】
＜変形例３−２＞
また、図９Ａに示すプログラムのように、連続した送り軸の位置決め指令の途中で、いずれかの送り軸の位置決め指令と同じブロックに回転工具軸停止指令があるプログラムも考えられる。図９Ａの例では、送り軸の位置決め指令Ｇ００Ｙｙｙとともに、回転工具軸停止指令Ｍ０５が存在している。このような場合は、連続する送り軸の位置決め指令の最初の送り軸の位置決め指令の開始タイミングで、その途中の回転工具軸停止動作、および／または、工具交換指令中の回転工具軸オリエンテーション動作を実行してもよい。つまり、図９Ｂに示すように、最初の送り軸の位置決め指令（Ｙ，Ｚ）の開始時刻ｔ２０から、連続する送り軸の位置決め指令の途中に存在していた回転工具軸停止動作が開始されている。その後、回転工具軸停止動作が時刻ｔ２１で終了すると、引き続き、時刻ｔ２１から、回転工具軸オリエンテーション動作が開始される。
なお、複数の連続する送り軸の位置決め指令の「最初」の指令のブロックに、上記回転工具軸停止指令がある場合は、特に動作タイミングを変更することはない。一方、複数の連続する送り軸の位置決め指令の「最初」以外の指令のブロックに、上記回転工具軸停止指令がある場合は、上述のように、最初の送り軸の位置決め指令の開始タイミングで回転工具軸停止動作を実行してよい。
＜変形例３−３＞
なお、これまで説明した各実施形態、及び、上記変形例３−１、３−２においては、連続した送り軸の位置決め指令が存在する場合は、その最初の送り軸の位置決め指令において、回転工具軸停止動作、および／または、回転工具軸オリエンテーション動作を実行することを説明したが、必ずしも「最初」でなくてもよい。複数の送り軸の位置決め指令のいずれかの指令の実行のタイミングで、回転工具軸停止動作、および／または、回転工具軸オリエンテーション動作を実行してもよい。このような動作の場合も、回転工具軸停止動作、および／または、回転工具軸オリエンテーション動作を送り軸の位置決め動作と並行して実行することができ、サイクルタイムの短縮化が図れる。
なお、回転工具軸停止動作および回転工具軸オリエンテーション動作を共に送り軸の位置決め動作と並行して実行する場合は、回転工具軸停止動作を実行した後、回転工具軸オリエンテーション動作を実行してもよい。
【００９６】
＜先行特許との比較＞
上述した特許文献１には、「所定位置に到達したのち、オリエンテーションが完了したかを判断」し、オリエンテーションが完了していない場合に、回転工具軸停止とオリエンテーションを行う技術が開示されている。これに対して、本実施形態によれば、プログラム解析時に工具交換指令があるか否かを判断し、その存在が見出された場合は、その工具交換指令の前の（１または２以上の）位置決め指令の実行する際に、最初の位置決め指令のタイミングで回転工具軸停止指令、および／または、オリエンテーションを実行させるものである。そのため、特許文献１に開示の技術と異なり、主軸が所定位置に到達することを判断する必要がない。
【００９７】
また、特に特許文献１では、主軸の所定位置への移動指令前に、回転工具軸停止指令があった場合には回転工具軸停止と位置決め動作を同時に行うことができない。一方、本実施形態では、回転工具軸停止指令があっても、その回転工具軸停止指令と位置決め指令を同時に実行することが可能なようにプログラム解析時に指令を作成するため、それらの処理を同時に実行することが可能となる。
さらに、特許文献１では、プログラム指令についてはなんら記載がなく、本実施形態にあるような不要となる回転工具軸停止指令ブロックを実行しないようにブロック情報を変更して、プログラムを実行するような制御はなんら開示されていない。
【００９８】
例えば、図１４Ａで示したプログラムは、工具交換の際に用いられる典型的な通常のプログラムである。送り軸の位置決め指令（Ｇ００Ｚｚｚ）の移動距離が長い場合に、回転工具軸を回転させ続けることは省電力の観点からも無駄であるため、図１４Ａのプログラム例のように、（Ｇ００Ｚｚｚ）の前に回転工具軸停止指令（Ｍ０５）を実行することはしばしば行われる。
このような場合は、特許文献１によれば、（Ｍ０５）と（Ｇ００Ｚｚｚ）を同時に実行することができず、（Ｍ０５）を実行後に（Ｇ００Ｚｚｚ）が実行されることになる。
これに対して本実施形態によれば、実施形態２−１、図６のフローチャートに記載の通り、（Ｍ０５）直後の（Ｇ００Ｚｚｚ）で（Ｍ０５）を同時に実行するようにブロック情報を変更し、なおかつ、（Ｍ０５）ブロックの情報を削除することで、プログラムを編集しなくても、指令された（Ｍ０５）単独ブロックを実行することなく、（Ｍ０５）と（Ｇ００Ｚｚｚ）を同時に実行することが可能となり、サイクルタイム短縮が可能となる。
このため、一般的に使用されることの多い、図１４Ａで示したプログラム例においても本実施形態によれば、特許文献１と異なりサイクルタイムの短縮が可能となる。
このように、本実施形態は、特許文献１と顕著に相違し、本実施形態が開示する技術は、特許文献１が開示する技術から容易に想到できる技術ではない。
【００９９】
以上、本発明の実施形態について詳細に説明したが、前述した実施形態は、本発明を実施するにあたっての具体例を示したに過ぎない。本発明の技術的範囲は、前記実施形態に限定されるものではない。本発明は、その趣旨を逸脱しない範囲において種々の変更が可能であり、それらも本発明の技術的範囲に含まれる。
【符号の説明】
【０１００】
２  ワーク
４  主軸
６  旋削加工用工具
８  回転工具
１０  ツーリング
１０ａ  テーパ部
１０ｂ  キー溝
１２  回転工具軸
１２ａ  テーパ部
１２ｂ  キー
１４  グリップ
１４ａ  キー
１００  数値制御装置
１０２  プログラム入力部
１０４  プログラム解析部
１０６  ブロック解析部
１０８  ブロック情報チェック部
１１０  ブロック情報変更部
１１２  ブロック情報保存部
１１４  プログラム実行部
【図１】
2018142194.tif 000003
【図２Ａ】
2018142194.tif 000004
【図２Ｂ】
2018142194.tif 000005
【図３Ａ】
2018142194.tif 000006
【図３Ｂ】
2018142194.tif 000007
【図４】
2018142194.tif 000008
【図５】
2018142194.tif 000009
【図６】
2018142194.tif 000010
【図７】
2018142194.tif 000011
【図８Ａ】
2018142194.tif 000012
【図８Ｂ】
2018142194.tif 000013
【図９Ａ】
2018142194.tif 000014
【図９Ｂ】
2018142194.tif 000015
【図１０】
2018142194.tif 000016
【図１１】
2018142194.tif 000017
【図１２Ａ】
2018142194.tif 000018
【図１２Ｂ】
2018142194.tif 000019
【図１２Ｃ】
2018142194.tif 000020
【図１２Ｄ】
2018142194.tif 000021
【図１３】
2018142194.tif 000022
【図１４Ａ】
2018142194.tif 000023
【図１４Ｂ】
2018142194.tif 000024
【図１４Ｃ】
2018142194.tif 000025
【図１５Ａ】
2018142194.tif 000026
【図１５Ｂ】
2018142194.tif 000027
【図１６Ａ】
2018142194.tif 000028
【図１６Ｂ】
2018142194.tif 000029
【図１７Ａ】
2018142194.tif 000030
【図１７Ｂ】
2018142194.tif 000031