(57)【要約】【課題】所定の軸の駆動を停止させて工作機械を動作させる数値制御装置を提供する。【解決手段】加工プログラムに「Ｍ３００」指令があれば主軸フラグ「１」とする。「Ｍ３０１」指令があれば主軸フラグを「０」とする。「Ｍ３０２」指令があればテーブルフラグを「１」とする。「Ｍ３０３」指令があればテーブルフラグを「０」とする。主軸フラグが「１」、テーブルフラグが「１」ならば（Ｓ３１：ＹＥＳ、Ｓ３２：ＹＥＳ）、主軸の回転、テーブルの移動を禁止して処理を実行する。主軸フラグが「１」、テーブルフラグが「０」ならば（Ｓ３１：ＹＥＳ、Ｓ３２：ＮＯ）、主軸の回転を禁止して処理を実行する。主軸フラグが「０」、テーブルフラグが「１」ならば（Ｓ３１：ＮＯ、Ｓ３３：ＹＥＳ）、テーブルの移動を禁止して処理を実行する。主軸フラグもテーブルフラグも「０」ならば（Ｓ３１：ＮＯ、Ｓ３３：ＮＯ）、通常通り指示に応じた処理を実行する。【選択図】図５
2009110223.tif 000002
【特許請求の範囲】
【請求項１】
主軸により保持された工具を動作させ、冶具に固定されたワークを加工する工作機械を加工プログラムに基づいて数値制御する数値制御装置であって、
前記加工プログラムに記載されている指令に基づいて前記工作機械の所定の軸を駆動させる軸駆動手段と、
前記加工プログラムにより所定の軸の駆動を禁止する駆動禁止指令が指示されている場合には、前記軸駆動手段の駆動を行わないように制御する駆動禁止制御手段とを備えたことを特徴とする数値制御装置。
【請求項２】
前記所定の軸は、前記主軸、及び、前記ワークを移動させるための送り軸のうちの少なくとも１つであることを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記加工プログラムにより前記駆動禁止指令を解除する駆動禁止解除指令が指示されている場合には、前記駆動禁止制御手段による前記軸駆動手段の駆動を行わない制御を解除する駆動禁止解除手段を備えたことを特徴とする請求項１又は２に記載の数値制御装置。
【請求項４】
前記加工プログラムにより、他の前記加工プログラムを呼び出してサブプログラムとして実行するサブプログラム実行指令が指示された際に、呼び出された加工プログラムであるサブプログラムを実行するサブプログラム実行手段と、
前記サブプログラム実行手段により前記サブプログラムが実行されている場合に、当該サブプログラムにより加工プログラムを終了させるプログラム終了指令が指示された際には、当該プログラム終了指令を、サブプログラムの実行を終了させるサブプログラム終了指令に変換する変換手段とを備えたことを特徴とする請求項１乃至３のいずれかに記載の数値制御装置。
【請求項５】
計測対象位置の座標を計測するタッチプローブと、
前記サブプログラムを実行する前に前記タッチプローブにより前記計測基準位置の座標を計測し、基準座標とする基準座標取得手段と、
前記基準座標取得手段により取得された前記基準座標を記憶する基準座標記憶手段と、
前記タッチプローブにより前記計測基準位置の座標を計測し、前記基準座標記憶手段に記憶された前記基準座標との差を熱変位量とする熱変位量取得手段と、
前記熱変位量取得手段により取得された前記熱変位量を記憶する計測熱変位量記憶手段と、
前記サブプログラムを繰り返し実行するサブプログラム実行手段と、
前記サブプログラム実行手段により前記サブプログラムが繰り返し実行されている間、所定のタイミングで前記熱変位量取得手段により前記熱変位量を取得し、取得された前記熱変位量を前記計測熱変位量記憶手段へ記憶する熱変位量記録手段とを備え、
前記サブプログラム実行手段は、前記熱変位量取計測手段により取得された前記熱変位量が所定の値となるまで、又は、前記サブプログラムを所定回数実行するまで、又は、所定時間経過するまで前記サブプログラムを繰り返し実行することを特徴とする請求項４に記載の数値制御装置。
【請求項６】
コンピュータを請求項１乃至５のいずれかに記載の数値制御装置の各種処理手段として動作させる数値制御プログラム。
【請求項７】
請求項６に記載の数値制御プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置、数値制御プログラム及び数値制御プログラムを記憶した記憶媒体に関するものであり、詳細には、所定の軸の駆動を停止させて工作機械を動作させる数値制御装置、数値制御プログラム及び数値制御プログラムを記憶した記憶媒体に関するものである。
【背景技術】
【０００２】
従来、特定の軸のみの駆動を停止させて工作機械を動作させたいという需要があった。例えば、主軸や送り軸の熱変位補正機能を持った工作機械である。熱変位補正機能を持った工作機械においては、パラメータを用いて熱変位補正を行っている。そこで、パラメータを決定するために、実際に加工プログラムを繰り返し実行し、熱変位量を計測して、パラメータを算出している（例えば、特許文献１参照）。ここで、主軸ヘッドや送り軸のボールネジに対する熱変位は軸の回転により発生し、パラメータは熱変位が発生する軸ごとに決定される。そこで、主軸のみを駆動させて主軸による熱変位量計測したり、送り軸のみを駆動させて送り軸による熱変位量を計測したりしている。また、熱変位量は軸の回転時間や回転速度により異なり、製品を加工するための加工プログラムにより異なる。よって、加工プログラムごとに熱変位量を計測し、熱変位補正用のパラメータを決定する必要がある。そこで、各軸のパラメータを決定するためには、加工プログラムごとに、特定の軸のみを駆動させた場合の熱変位量を計測する必要がある。そのため、従来は、加工プログラムから、主軸のみが駆動する計測用加工プログラムや、送り軸のみが駆動する計測用加工プログラムを作成して、計測用の加工プログラムを繰り返し実行して熱変位量を計測し、パラメータを決定していた。
【特許文献１】特開平１１−９０７８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、加工プログラムから計測用加工プログラムを作成するのは大変な手間になり、計測用加工プログラムに誤りがあれば、正確な熱変位量を計測できず、好ましいパラメータを決定できないという問題点がある。また、タップ加工のように主軸の回転とＺ軸（主軸とワークとが対向する方向の軸）の回転が同期する動作においては、主軸のみを動作させる計測用加工プログラムを作成するのは困難であるという問題点があった。
【０００４】
本発明は、上述の問題点を解決するためになされたものであり、所定の軸の駆動を停止させて工作機械を動作させる数値制御装置、数値制御プログラム及び数値制御プログラムを記憶した記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、請求項１に係る発明の数値制御装置では、主軸により保持された工具を動作させ、冶具に固定されたワークを加工する工作機械を加工プログラムに基づいて数値制御する数値制御装置であって、前記加工プログラムに記載されている指令に基づいて前記工作機械の所定の軸を駆動させる軸駆動手段と、前記加工プログラムにより所定の軸の駆動を禁止する駆動禁止指令が指示されている場合には、前記軸駆動手段の駆動を行わないように制御する駆動禁止制御手段とを備えている。
【０００６】
また、請求項２に係る発明の数値制御装置では、請求項１に記載の発明の構成に加えて、前記所定の軸は、前記主軸、及び、前記ワークを移動させるための送り軸のうちの少なくとも１つであることを特徴とする。
【０００７】
また、請求項３に係る発明の数値制御装置では、請求項１又は２に記載の発明の構成に加えて、前記加工プログラムにより前記駆動禁止指令を解除する駆動禁止解除指令が指示されている場合には、前記駆動禁止制御手段による前記軸駆動手段の駆動を行わない制御を解除する駆動禁止解除手段を備えている。
【０００８】
また、請求項４に係る発明の数値制御装置では、請求項１乃至３のいずれかに記載の発明の構成に加えて、前記加工プログラムにより、他の前記加工プログラムを呼び出してサブプログラムとして実行するサブプログラム実行指令が指示された際に、呼び出された加工プログラムであるサブプログラムを実行するサブプログラム実行手段と、前記サブプログラム実行手段により前記サブプログラムが実行されている場合に、当該サブプログラムにより加工プログラムを終了させるプログラム終了指令が指示された際には、当該プログラム終了指令を、サブプログラムの実行を終了させるサブプログラム終了指令に変換する変換手段とを備えている。
【０００９】
また、請求項５に係る発明の数値制御装置では、請求項４に記載の発明の構成に加えて、計測対象位置の座標を計測するタッチプローブと、前記サブプログラムを実行する前に前記タッチプローブにより前記計測基準位置の座標を計測し、基準座標とする基準座標取得手段と、前記基準座標取得手段により取得された前記基準座標を記憶する基準座標記憶手段と、前記タッチプローブにより前記計測基準位置の座標を計測し、前記基準座標記憶手段に記憶された前記基準座標との差を熱変位量とする熱変位量取得手段と、前記熱変位量取得手段により取得された前記熱変位量を記憶する計測熱変位量記憶手段と、前記サブプログラムを繰り返し実行するサブプログラム実行手段と、前記サブプログラム実行手段により前記サブプログラムが繰り返し実行されている間、所定のタイミングで前記熱変位量取得手段により前記熱変位量を取得し、取得された前記熱変位量を前記計測熱変位量記憶手段へ記憶する熱変位量記録手段とを備え、前記サブプログラム実行手段は、前記熱変位量取計測手段により取得された前記熱変位量が所定の値となるまで、又は、前記サブプログラムを所定回数実行するまで、又は、所定時間経過するまで前記サブプログラムを繰り返し実行することを特徴とする。
【００１０】
また、請求項６に係る発明の数値制御プログラムでは、コンピュータを請求項１乃至５のいずれかに記載の数値制御装置の各種処理手段として動作させる。
【００１１】
また、請求項７に係る発明のコンピュータ読み取り可能な記憶媒体では、請求項６に記載の数値制御プログラムを記憶している。
【発明の効果】
【００１２】
請求項１に係る発明の数値制御装置では、加工プログラムにより所定の軸の駆動を禁止する駆動禁止指令が指示されている場合には、軸駆動手段の駆動を行わないように制御することができる。よって、所定の軸を駆動させないような加工プログラムを作成しなくても、加工プログラムに駆動禁止指令を記載するだけで、所定の軸を駆動させないように制御できる。したがって、所定の軸を駆動させないような加工プログラムを作成する手間がない。また、複数の軸が同時に回転する動作においても、所定の軸のみを駆動させないようにできる。
【００１３】
また、請求項２に係る発明の数値制御装置では、請求項１に記載の発明の効果に加えて、所定の軸を、前記主軸、及び、前記ワークを移動させるための送り軸のうちの少なくとも１つとすることができるので、主軸のみを動作させなくしたり、送り軸のみを動作させなくしたりできる。よって、加工プログラムによるワーク加工において、加工物の精度に密接に関係する主軸及び送り軸のうちの少なくとも１つを動作させずに加工プログラムに基づいて工作機械を数値制御することができる。
【００１４】
また、請求項３に係る発明の数値制御装置では、請求項１又は２に記載の発明の効果に加えて、加工プログラムにより前記駆動禁止指令を解除する駆動禁止解除指令が指示されている場合には、前記駆動禁止制御手段による前記軸駆動手段の駆動を行わない制御を解除することができる。よって、所定の軸を駆動させたくない場合だけ軸の駆動を停止させ、駆動させたい時には駆動禁止を解除して軸を駆動させることができる。
【００１５】
また、請求項４に係る発明の数値制御装置では、請求項１乃至３のいずれかに記載の発明の効果に加えて、サブプログラムが実行されている場合に、サブプログラムにより加工プログラムを終了させるプログラム終了指令が指示された際には、プログラム終了指令を、サブプログラムの実行を終了させるサブプログラム終了指令に変換することができる。加工プログラムの最後には加工プログラムの実行を終了させるプログラム終了指令が記述されている。加工プログラム中で他の加工プログラムを呼び出してサブプログラムとして実行した際に、サブプログラムとされた加工プログラム（サブプログラム）に「プログラム終了指令」がある場合には、サブプログラムを終了させるだけでなく、サブプログラムを呼び出した加工プログラムまで終了させて工作機械に対する数値制御が終了してしまう。そこで、サブプログラムとされる加工プログラムには「プログラム終了指令」でなく、「サブプログラムの実行を終了させるサブプログラム終了指令」を記載する必要がある。しかしながら、請求項４に記載の発明の数値制御装置では、サブプログラムとして加工プログラムが実行されている場合には、「プログラム終了指令」を「サブプログラム終了指令」に変換することができる。よって、加工プログラムをサブプログラムとして実行したい場合に、加工プログラムの「プログラム終了指令」を「サブプログラム終了指令」に変更しておく必要がないので、ユーザの手間が省ける。さらに、加工プログラムに手を入れないことで、思わぬ部分がミスで変更されてしまったり、消去されてしまったりして、加工プログラムへの不必要な変更が行われてしまうことを防止できる。
【００１６】
また、請求項５に係る発明の数値制御装置では、請求項４に記載の発明の効果に加えて、サブプログラムが繰り返し実行されている間、所定のタイミングで前記熱変位量を取得し、取得された前記熱変位量を計測熱変位量記憶手段へ記憶することができる。そこで、駆動禁止指令により所定の軸の駆動を禁止する指示を行った後に、熱変位量を計測したい加工プログラムをサブプログラムとして実行させる加工プログラムを作成する。そして、この加工プログラムに基づいて工作機械を数値制御させることにより、ある加工プログラムの所定の軸の熱変位量を計測することができる。
【００１７】
また、請求項６に係る発明の数値制御プログラムでは、コンピュータを請求項１乃至５のいずれかに記載の数値制御装置の各種処理手段として動作させることができる。したがって、請求項１乃至５のいずれかに記載の発明と同様の効果を奏することができる。
【００１８】
また、請求項７に係る発明のコンピュータ読み取り可能な記憶媒体は、請求項６に記載の数値制御プログラムを記憶することができる。したがって、請求項６に記載の発明と同様の効果を奏することができ、請求項１乃至５のいずれかに記載の発明と同様の効果を奏することができる。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態を図面を参照して説明する。本実施の形態の数値制御装置１（図１参照）は、被加工物（ワーク）を工具を用いて加工する装置である。数値制御装置１はワークをテーブルに固定しており、テーブルに対向して工具の装着された主軸が配置されている。そして、テーブルを移動させて加工対象位置を工具位置に合わせ、工具を作動（回転、上昇、下降）させてワークを加工する。テーブルの移動方向は、工具に近づく方向をＺ軸方向とし、Ｚ軸方向に直交する平面上で直交する２方向をＸ軸方向、Ｙ軸方向とする。そして、テーブルをＸ軸方向、Ｙ軸方向に移動させて、ワークのＸ−Ｙ平面の加工位置を決定し、Ｚ軸方向に移動させることにより、工具との距離が決定される。このテーブルの移動指令及び工具の作動の指令は加工プログラム（図３参照）に記述されており、加工プログラムを１行ずつ解釈して、工具を移動、作動させる。
【００２０】
ここで、図１を参照して、数値制御装置１の電気的構成について説明する。図１は、数値制御装置１の電気的構成を示すブロック図である。図１に示すように、数値制御装置１には、数値制御装置１の制御を行うＣＰＵ１０が設けられている。このＣＰＵ１０は、数値制御装置１全体の制御の中心となるプロセッサであり、バス２０を介して、ＲＯＭ１１，入力インターフェース１３，出力インターフェース１２，ＲＡＭ１４，フラッシュメモリ１８に接続されている。そして、ＲＯＭ１１には、数値制御装置１の制御を行う制御プログラムが記憶されており、ＣＰＵ１０はＲＯＭ１１から制御プログラムを読み出し、この制御プログラムがＲＡＭ１４の加工プログラム記憶エリア１４５にロードされた加工プログラムを読み出してワークの加工を実行する。また、フラッシュメモリ１８には、計測された熱変位量が記憶される熱変位量記憶エリアが設けられている。
【００２１】
そして、入力インターフェース１３には、キーボード１５、起動スイッチ１６、タッチプローブ１７が接続されている。キーボード１５は、数値制御装置１に種々の情報を入力することができる。起動スイッチ１６は、加工プログラムの実行を指示するスイッチである。ＯＮされると、加工プログラムが読み出され、１行ごとに指令が実行される。タッチプローブ１７は、主軸に取り付けられ、計測対象位置の座標を取得する。また、出力インターフェース１２には、工具をＸ軸方向へ移動させるためのＸ軸モータ３１を駆動する駆動回路２１、工具をＹ軸方向へ移動させるためのＹ軸モータ３２を駆動する駆動回路２２、工具をＺ軸方向へ移動させるためのＺ軸モータ３３を駆動するための駆動回路２３、主軸を回転させる主軸モータ３４を駆動する駆動回路２４、表示装置３５の制御を行う制御回路２５を接続している。フラッシュメモリ１８には、熱変位量記憶エリア１８１が設けられている。
【００２２】
次に、図２を参照して、ＲＡＭ１４に設けられている記憶エリアについて説明する。図２は、ＲＡＭ１４に設けられている記憶エリアを示す模式図である。図２に示すように、ＲＡＭ１４には、主軸フラグ記憶エリア１４１，テーブルフラグ記憶エリア１４２，サブフラグ記憶エリア１４３，ワーク記憶エリア１４４が設けられている。主軸フラグ記憶エリア１４１には主軸フラグが記憶される。主軸フラグは「１」が記憶されている場合に、主軸の動作を禁止する。「０」が記憶されている場合は、主軸の動作は禁止されない。主軸の動作とは、主軸モータ３４の回転を実施しないということである。テーブルフラグ記憶エリア１４２にはテーブルフラグが記憶される。テーブルフラグは「１」が記憶されている場合に、テーブルの動作を禁止する。「０」が記憶されている場合は、テーブルの動作は禁止されない。テーブルの動作とは、Ｘ軸モータ３１及びＹ軸モータ３２、Ｚ軸モータ３３の回転を実施しないということである。サブフラグ記憶エリア１４３には、サブフラグが記憶される。サブフラグは「１」以上である場合に、サブプログラムの実行中であることを示している。サブフラグが「１」であれば、メインの加工プログラムにより呼び出された１階層目のサブプログラムが実行中であることを示し、「２」であれば、１階層目のサブプログラムにより呼び出された２階層目のサブプログラムが実行中であることを示している。「０」が記憶されている場合にはサブプログラムを実行中でないことを示している。
【００２３】
次に、図３を参照して、加工プログラムについて説明する。図３は、加工プログラムの模式図である。図３に示すように、加工プログラムは１行を１ブロックとして、工具やテーブルの動作が定義されている。図３では１ブロックごとに符号を付与している。１行目のブロックをブロック１０１、２行目のブロックをブロック１０２、・・・、２２行目のブロックをブロック１２２としている。図３に示した加工プログラムは、全２２行の加工プログラムである。ブロック１０１，１０４，１０９に記載されている「＃１００」、ブロック１０２，１１３，１１８に記載されている「＃１０１」は本加工プログラムで使用される変数である。これらの変数は、ＲＡＭ１４のワーク記憶エリア１４４に記憶エリアが確保され、記憶される。また、ブロック１０３，１１１，１２０に記載されている「Ｎ」で始まるコード（Ｎコード）は、加工プログラム中の場所を特定するためのコードである。
【００２４】
そして、ブロック１０５，１０７，１１４，１１６に記載されている「Ｍ９８」というＭコードはサブプログラムの実行を指示するコードである。ブロック１０５，１１４にあるように「Ｍ９８  Ｐ１０００」は「Ｐ１０００」というサブプログラムを１回実行することを示している。また、ブロック１０７，１１６に記載されている「Ｍ９８  Ｐ５００  Ｌ１０」は「Ｐ５００」というサブプログラムを１０回繰り返して実行することを示している。そして、ブロック１０４，１１０，１１３，１１９に記載されている「ＧＯＴＯ」は、その後に記載されている数字の位置へ進むことを示している。ブロック１０４の「ＧＯＴＯ  １０」であれば、「Ｎ１０」のブロック、つまり、ブロック１１１へ進むことを示している。そして、ブロック１０４に記載されている「ＩＦ  ［＃１００  ＧＴ  １０］」は、「変数＃１００が１０より大きくなったら」という条件分を示している。よって、ブロック１０４では、「変数＃１００が１０より大きくなったらＮ１０のブロックへ進む」ことを示している。ブロック１１３は同様に、「変数＃１０１が１０より大きくなったらＮ３０のブロックへ進む」ことを示している。
【００２５】
そして、ブロック１１２，１２１に記載されている「Ｇ０４」は、「Ｘ」に続く数字で指定された秒数だけ待機することを示している。ブロック１１２，１２１では、９００００秒、つまり、２時間３０分待機することを示している。そして、「Ｍ３０」というＭコードは本加工プログラムの終了を示している。
【００２６】
次いで、本発明の要部である４つのＭコードについて説明する。「Ｍ３００」は主軸の動作を禁止する指令であり、「Ｍ３０１」は主軸の動作の禁止を解除する指令である。「Ｍ３００」の指令が行われた後は、「Ｍ３０１」の指令が行われるまでの間、主軸モータ３４は回転されない。「Ｍ３０２」はテーブルの動作を禁止する指令であり、「Ｍ３０３」はテーブルの動作の禁止を解除する指令である。「Ｍ３０２」の指令が行われた後は、「Ｍ３０３」の指令が行われるまでの間、Ｘ軸モータ３１及びＹ軸モータ３２、Ｚ軸モータ３３は回転されない。
【００２７】
次に、図４及び図５を参照して、数値制御装置１がＣＰＵ１０において制御プログラムを実行することにより行われる動作について説明する。図４及び図５は、制御プログラムの動作を示すフローチャートである。制御プログラムは、起動スイッチ１６がＯＮされると実施される。
【００２８】
まず、ＲＡＭ１４の主軸フラグ記憶エリア１４１，テーブルフラグ記憶エリア１４２，サブフラグ記憶エリア１４３に「０」が記憶されて、主軸フラグ，テーブルフラグ，サブフラグがＯＦＦクリアされる（Ｓ１）。次いで、１ブロックが読み込まれ（Ｓ２）、読み込まれたブロックにＭコードがあるか否かの判断が行われる（Ｓ３）。Ｍコードがなければ（Ｓ３：ＮＯ）、Ｓ２１へ進み、指示実行処理が行われる（Ｓ２１）。この指示実行処理では、ブロックに記載されている指示に応じた処理が実行される。
【００２９】
図５に示すように、指示実行処理では、まず、主軸フラグが「１」であり（Ｓ３１：ＹＥＳ）、テーブルフラグが「１」であれば（Ｓ３２：ＹＥＳ）、主軸の回転もテーブルの移動も禁止されている。そこで、Ｓ２で読み込まれたブロックの指示を主軸の回転、及び、テーブルの移動を禁止して処理を実行する。具体的には、指示内容に応じた処理を行う際に、Ｘ軸モータ３１を駆動する駆動回路２１、Ｙ軸モータ３２を駆動する駆動回路２２、Ｚ軸モータ３３を駆動する駆動回路２３、主軸モータ３４を駆動する駆動回路２４に対しては指示を与えないようにする。また、主軸フラグが「１」であり（Ｓ３１：ＹＥＳ）、テーブルフラグが「１」でなければ（Ｓ３２：ＮＯ）、主軸の回転のみ禁止されている。そこで、Ｓ２で読み込まれたブロックの指示に対して、主軸の回転を禁止して処理を実行する。具体的には、指示内容に応じて各種駆動回路２１〜２５を制御する際に、主軸モータ３４を駆動する駆動回路２４に対しては指示を与えないようにする。
【００３０】
また、主軸フラグが「１」でなく（Ｓ３１：ＮＯ）、テーブルフラグが「１」である場合には（Ｓ３３：ＹＥＳ）、テーブルの移動のみが禁止されている。そこで、Ｓ２で読み込まれたブロックの指示に対して、テーブルの移動を禁止して処理を実行する（Ｓ３６）。具体的には、指示内容に応じて各種駆動回路２１〜２５を制御する際に、Ｘ軸モータ３１を駆動する駆動回路２１、Ｙ軸モータ３２を駆動する駆動回路２２、Ｚ軸モータ３３を駆動する駆動回路２３に対しては指示を与えないようにする。また、主軸フラグもテーブルフラグも「１」でない場合には（Ｓ３１：ＮＯ、Ｓ３３：ＮＯ）、何も禁止されていないので、通常通り指示に応じた処理が実行される（Ｓ３７）。なお、指示実行処理が終了すると（Ｓ２１）、Ｓ２へ戻り、次のブロックが読み込まれる（Ｓ２）。
【００３１】
また、Ｍコードがある場合には（Ｓ３：ＹＥＳ）、Ｍコードの内容に応じてフラグ処理が行われた後に、Ｍコードで指示された処理が行われる。まず、「Ｍ３０」であるか否かの判断が行われる（Ｓ４）。「Ｍ３０」であれば（Ｓ４：ＹＥＳ）、本制御プログラムを終了させる必要がある。しかしながら、処理中のブロックがサブプログラムのものであれば、制御プログラムを終了させるのではなく、当該サブプログラムを呼び出した加工プログラムへ戻る必要がある。そこで、サブフラグが「１」以上であるか否かの判断が行われる（Ｓ１３）。サブフラグが「１」以上であれば（Ｓ１３：ＹＥＳ）、サブプログラムの実行中であり、サブプログラムにおいて「Ｍ３０」が指示されていると判断できる。そこで、サブフラグから「１」減算され（Ｓ１４）、サブプログラムが終了される（Ｓ１５）。サブプログラムの終了では、当該サブプログラムを呼び出した加工プログラムの次のブロックが、次に読み込まれるブロックに指定される。そして、Ｓ２へ戻り、次のブロックが読み込まれる（Ｓ２）。また、サブフラグが「１」以上でなければ（Ｓ１３：ＮＯ）、メインの加工プログラムからの「Ｍ３０」の指示であるので、制御プログラムは終了される。
【００３２】
また、Ｍコードが「Ｍ９９」である場合には（Ｓ５：ＹＥＳ）、サブプログラムの終了が指示されている。そこで、サブフラグから「１」減算され（Ｓ１４）、サブプログラムが終了される（Ｓ１５）。当該サブプログラムを呼び出した加工プログラムの次のブロックが、次に読み込まれるブロックに指定される。そして、Ｓ２へ戻り、次のブロックが読み込まれる（Ｓ２）。また、Ｍコードが「Ｍ９９」でなく（Ｓ５：ＮＯ）、「Ｍ９８」である場合には（Ｓ６：ＹＥＳ）、サブプログラムの開始が指示されている。そこで、サブフラグに「１」が加算される（Ｓ１６）。そして、Ｓ２１でブロックに記載されている指示に応じた処理が実行される（Ｓ２１）。具体的には、サブプログラムの開始は主軸回転、テーブル移動と関係ないので、主軸フラグ、テーブルフラグがいずれの値であっても（Ｓ３１：ＹＥＳ，Ｓ３２：ＹＥＳ、Ｓ３１：ＹＥＳ，Ｓ３２：ＮＯ、Ｓ３１：ＮＯ，Ｓ３３：ＹＥＳ、Ｓ３１：ＮＯ，Ｓ３３：ＮＯ）、サブプログラム開始の指令は実行される（Ｓ３４、Ｓ３５、Ｓ３６、Ｓ３７）。ここでは、次に読み込まれるブロックがサブプログラムの１つ目のブロックとされる。そして、Ｓ２へ戻り、サブプログラムの１つ目のブロックが読み込まれる（Ｓ２）。
【００３３】
また、Ｍコードが「Ｍ９８」でなく（Ｓ６：ＮＯ）、「Ｍ３００」である場合には（Ｓ７：ＹＥＳ）、主軸フラグに「１」が記憶される（Ｓ１７）。つまり、主軸の動作が禁止される。そして、指示実行処理が行われる（Ｓ２１）。指示実行処理では、「Ｍ３００」以外のコードが記載されている場合に、それに応じた処理が行われる。図３に示した例では、ブロック１０６には「Ｍ３００」しか記載されておらず、その他の指令はないので、処理は実行されない。また、Ｍコードが「Ｍ３００」でなく（Ｓ７：ＮＯ）、「Ｍ３０１」である場合には（Ｓ８：ＹＥＳ）、主軸フラグに「０」が記憶される（Ｓ１８）。つまり、主軸の動作の禁止が解除される。そして、指示実行処理が行われる（Ｓ２１）。指示実行処理では、「Ｍ３０１」以外のコードが記載されている場合に、それに応じた処理が行われる。図３に示した例では、ブロック１０８には「Ｍ３０１」しか記載されていないので、その他の指令はなく、処理は実行されない。
【００３４】
また、Ｍコードが「Ｍ３０１」でなく（Ｓ８：ＮＯ）、「Ｍ３０２」である場合には（Ｓ９：ＹＥＳ）、テーブルフラグに「１」が記憶される（Ｓ１９）。つまり、テーブルの動作が禁止される。そして、指示実行処理が行われる（Ｓ２１）。指示実行処理では、「Ｍ３０２」以外のコードが記載されている場合に、それに応じた処理が行われる。図３に示した例では、ブロック１１５には「Ｍ３０２」しか記載されていないので、その他の指令はなく、処理は実行されない。また、Ｍコードが「Ｍ３０２」でなく（Ｓ９：ＮＯ）、「Ｍ３０３」である場合には（Ｓ１０：ＹＥＳ）、テーブルフラグに「０」が記憶される（Ｓ２０）。つまり、テーブルの動作の禁止が解除される。そして、指示実行処理が行われる（Ｓ２１）。指示実行処理では、「Ｍ３０３」以外のコードが記載されている場合に、それに応じた処理が行われる。図３に示した例では、ブロック１１７には「Ｍ３０３」しか記載されていないので、その他の指令はなく、処理は実行されない。
【００３５】
そして、指令実行処理が行われたら（Ｓ２１）、Ｓ２へ戻り次のブロックが読み出されて（Ｓ２）、繰り返しＳ３〜Ｓ２０の処理が行われる。なお、サブプログラム実行中以外、つまり、メインの加工プログラム実行中に「Ｍ３０」が指示された場合には（Ｓ４：ＹＥＳ、Ｓ１３：ＮＯ）、制御プログラムは終了する。
【００３６】
以上のようにして、制御プログラムでは、「Ｍ３００」、「Ｍ３０１」、「Ｍ３０２」、「Ｍ３０３」の指令がある場合に、主軸フラグ又はテーブルフラグを更新する。これにより、加工プログラムにおいて、主軸を動作させたくない処理の指令の前のブロックに「Ｍ３００」を記載すれば、その指令では主軸が動作しない。また、加工プログラムに「Ｍ３０１」の指令を記載すれば、主軸の動作を復活させることができる。さらに、加工プログラムにおいて、テーブルを移動させたくない処理の指令の前のブロックに「Ｍ３０２」を記載すれば、その指令ではテーブルが移動しない。また、加工プログラムに「Ｍ３０３」の指令を記載すれば、テーブル移動を復活させることができる。よって、ユーザの求めに柔軟に対応することができる。
【００３７】
また、サブプログラムにおいて「Ｍ３０」の指令があった場合には、制御プログラムを終了させるのではなく、サブプログラム終了の指令「Ｍ９９」と同様の処理（Ｓ１４、Ｓ１５）が行われる。これにより、加工プログラムをサブプログラムとして実行したい場合に、加工プログラムの「Ｍ３０」を「Ｍ９９」にユーザが変更する必要がない。したがって、所定の軸を駆動させずに実行したい加工プログラムに手を加えることなく、そのままサブプログラムとして実行させることができる。よって、ユーザが「Ｍ９９」に変更する際に他のブロックを変更してしまったり、削除してしまったりするミスを犯す危険がなくなる。
【００３８】
次に、図３に示した加工プログラムを具体例として、制御プログラムの動作を説明する。まず、主軸フラグ、テーブルフラグ、サブフラグがクリアされる（Ｓ１）。主軸フラグ＝０、テーブルフラグ＝０、サブフラグ＝０である。そして、ブロック１０１『＃１００＝０』が読み込まれ（Ｓ２）、Ｍコードはないので（Ｓ３：ＮＯ）、指示実行処理が行われる（Ｓ２１）。主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指示が実行され、変数１００＝０とされる（Ｓ３７）。そして、Ｓ２へ戻り、ブロック１０２『＃１０１＝０』が読み込まれる（Ｓ２）。Ｍコードはなく（Ｓ３３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指示が実行され、変数１０１＝０とされる（Ｓ３７）。そして、ブロック１０３『Ｎ２０』が読み込まれる（Ｓ２）。Ｍコードはなく（Ｓ３３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指示が実行されるが、『Ｎ２０』は位置指定であり指令はないので、実際に行われる処理はない（Ｓ３７）。
【００３９】
そして、Ｓ２へ戻り、ブロック１０４『ＩＦ［＃１００  ＧＴ  １０］  ＧＯＴＯ  １０』が読み込まれる（Ｓ２）。Ｍコードはなく（Ｓ３３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指示が実行される（Ｓ３７）。具体的には、変数１００が参照されて、「１０」と比較される。ここでは、変数１００＝０なので、何も行われない。そして、ブロック１０５『Ｍ９８  Ｐ１０００』が読み込まれる（Ｓ２）。Ｍコードである（Ｓ３３：ＹＥＳ）。そして、「Ｍ９８」である（Ｓ４：ＮＯ、Ｓ５：ＮＯ、Ｓ６：ＹＥＳ）。そこで、サブフラグに「１」が加算されて、「１」となる（Ｓ１６）。そして、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなくＰ１０００のサブプログラムが読み出され、開始される。具体的には、次に読み出されるブロックがＰ１０００の１つ目のブロックとされる。このＰ１０００は、熱変位量を計測する加工プログラムである。図示しないが、このＰ１０００の加工プログラムでは、主軸の工具交換が指示されており、タッチプローブが取り付けられる。そして、今回のように初めてＰ１０００が実行される場合には、タッチプローブにより計測位置の座標が取得され、フラッシュメモリ１８の熱変位量記憶エリア１８１に「基準座標」として記憶される。なお、２回目以降には、主軸の工具交換が指示されており、タッチプローブが取り付けられ、タッチプローブにより計測位置の座標が取得され、「基準座標」との差が算出される。そして、算出された値が「熱変位量」として、フラッシュメモリ１８の熱変位量記憶エリア１８１に記憶される。
【００４０】
そこで、Ｓ２へ戻ると、Ｐ１０００の１つ目のブロックが読み出される。そして、Ｐ１０００の指示に応じてＳ３〜Ｓ２０の処理が行われる。そして、Ｐ１０００において「Ｍ３０」又は「Ｍ９９」が指示されるまで、繰り返し、Ｓ２〜Ｓ２１の処理が行われる。Ｐ１０００の最後のブロックが「Ｍ３０」であれば（Ｓ４：ＹＥＳ）、サブフラグは「１」であり「１」以上であるので（Ｓ１３：ＹＥＳ）、サブフラグは「１」減算され「０」となる（Ｓ１４）。そして、サブプログラムＰ１０００が終了される（Ｓ１５）。ここでは、次に読み込むブロックがメイン加工プログラムの、当該サブプログラムを読み出したブロックの次のブロック（ブロック１０６）とされる。図３の例では、ブロック１０６が次に読み出すブロックとされる。実施されたサブプログラム「Ｐ１０００」では、計測位置の座標が取得され、ＲＡＭ１４のワーク記憶エリア１４４に「基準座標」として記憶される。
【００４１】
そこで、Ｓ２へ戻り、メインの加工プログラムのブロック１０６『Ｍ３００』が読み出される。Ｍコードであり（Ｓ３：ＹＥＳ）、「Ｍ３００」であるので（Ｓ４：ＮＯ、Ｓ５：ＮＯ、Ｓ６：ＮＯ、Ｓ７：ＹＥＳ）、主軸フラグが「１」とされる（Ｓ１７）。そして、主軸フラグ＝１（Ｓ３１：ＹＥＳ）、テーブルフラグ＝０なので（Ｓ３２：ＮＯ）、主軸の回転が禁止されて、その他の指令は実行される（Ｓ３５）。しかし、『Ｍ３００』は、主軸駆動禁止指令であり工作機械を駆動する指令はないので、実際に行われる処理はない。次いで、ブロック１０７『Ｍ９８  Ｐ５００  Ｌ１０』が読み込まれる。Ｍコードであり（Ｓ３：ＹＥＳ）、「Ｍ９８」であるので（Ｓ４：ＮＯ、Ｓ５：ＮＯ、Ｓ６：ＹＥＳ）、サブフラグに「１」が加算されて、「１」となる（Ｓ１６）。そして、主軸フラグ＝１（Ｓ３１：ＹＥＳ）、テーブルフラグ＝０なので（Ｓ３２：ＮＯ）、主軸の制御が禁止されて、Ｐ５００のサブプログラムが読み出され、開始される。具体的には、次に読み出されるブロックがＰ５００の１つ目のブロックとされ、実行回数が１回目とされる。図示しないが、このＰ５００は、工作機械においてワークを加工する加工プログラムである。
【００４２】
１回目のＰ５００の加工プログラムが開始され、Ｓ２へ戻ると、Ｐ５００の１つ目のブロックが読み出される。そして、Ｐ５００の指示に応じてＳ３〜Ｓ２１の処理が行われる。そして、Ｐ５００において「Ｍ３０」又は「Ｍ９９」が指示されるまで、繰り返し、Ｓ２〜Ｓ２１の処理が行われる。Ｐ５００の最後のブロックが「Ｍ３０」であれば（Ｓ４：ＹＥＳ）、サブフラグは「１」であり「１」以上であるので（Ｓ１３：ＹＥＳ）、サブフラグは「１」減算され「０」となる（Ｓ１４）。そして、サブプログラムＰ５００が終了される（Ｓ１５）。ブロック１０７では、『Ｌ１０』とあり、サブプログラムを１０回繰り返して実施する指示が成されているので、実施回数が１０未満である場合には、サブフラグに「１」が加算されて、再度、サブプログラムが開始される。つまり、次に読み出されるブロックがＰ５００の１つ目のブロックとされる。
【００４３】
そして、Ｐ５００の１つ目のブロックが読み出される。そして、Ｐ５００の指示に応じてＳ３〜Ｓ２１の処理が行われる。そして、Ｐ５００において「Ｍ３０」又は「Ｍ９９」が指示されるまで、繰り返し、Ｓ２〜Ｓ２１の処理が行われる。さらに、実施回数が１０回となるまで、繰り返し、Ｓ２〜Ｓ２１の処理が行われる。この１０回実施されるＰ５００では、主軸フラグ＝１となっているので、指示を実行する際に、主軸モータ３４を駆動する駆動回路２４に対しては指示が与えられない（Ｓ３５）。そして、１０回目のＰ５００において、「Ｍ３０」が読み込まれたら（Ｓ４：ＹＥＳ）、サブフラグは「１」であるので（Ｓ１３：ＹＥＳ）、サブフラグから「１」減算され「０」となる（Ｓ１４）。そして、サブプログラムＰ１０００が終了される（Ｓ１５）。ここでは、Ｐ５００の１０回の実施が終了しているので、次に読み込むブロックがメイン加工プログラムの、当該サブプログラムを読み出したブロックの次のブロック（ブロック１０８）とされる。
【００４４】
そして、ブロック１０８『Ｍ３０１』が読み出される。Ｍコードであり（Ｓ３：ＹＥＳ）、「Ｍ３０１」であるので（Ｓ４：ＮＯ、Ｓ５：ＮＯ、Ｓ６：ＮＯ、Ｓ７：ＮＯ、Ｓ８：ＹＥＳ）、主軸フラグが「０」とされる（Ｓ１８）。そして、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指令は実行される（Ｓ３５）。しかし、『Ｍ３０１』は、主軸駆動禁止解除指令であり工作機械を駆動する指令はないので、実際に行われる処理はない。ここで、主軸フラグが「０」とされたので（Ｓ１８）、以降の処理では、主軸モータ３４を駆動する駆動回路２４に対する指示が行われる。
【００４５】
そして、ブロック１０９『＃１００＝＃１００＋１』が読み込まれる（Ｓ２）。Ｍコードはなく（Ｓ３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０（Ｓ３３：ＮＯ）なので、何の制約もなく指令は実行され、変数１００に「１」が加算され「１」とされる（Ｓ３７）。そして、Ｓ２へ戻り、ブロック１１０『ＧＯＴＯ  ２０』が読み込まれ（Ｓ２）、Ｍコードはなく（Ｓ３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０（Ｓ３３：ＮＯ）、なので、何の制約もなく指令は実行され、次に読み込まれるブロックが「Ｎ２０」のブロックの次のブロック、すなわちブロック１０４とされる（Ｓ３７）。
【００４６】
そして、ブロック１０４『ＩＦ［＃１００  ＧＴ  １０］  ＧＯＴＯ  １０』が読み込まれる（Ｓ２）。Ｍコードはなく（Ｓ３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指示が実行される（Ｓ３７）。ここでは、変数１００＝１であり、１０よりも大きくないので、何も行われない。そして、Ｓ２へ戻り、ブロック１０５『Ｍ９８  Ｐ１０００』が読み込まれるが（Ｓ２）、変数１００が「１０」より大きくなるまでは、ブロック１０４〜ブロック１１０の処理が繰り返し実施される。そして、変数１００が「１０」より大きくなったら、ブロック１０４の処理において、次に読み込まれるブロックが「Ｎ１０」の次のブロック、すなわちブロック１１２とされる（Ｓ３７）。つまり、Ｐ１０００により熱変位量が記録され、その後、主軸の駆動が禁止された状態で、Ｐ５００が１０回連続して実行されるという一連の処理が１０回行われる。よって、主軸の駆動が禁止された状態、つまり、テーブル移動のためのＸ軸，Ｙ軸，Ｚ軸のみが駆動された状態での熱変位量が記録される。
【００４７】
そして、ブロック１１２『Ｇ０４Ｘ９０００』が読み込まれる（Ｓ２）。Ｍコードはなく（Ｓ３：ＮＯ）、主軸フラグ＝０（Ｓ３１：ＮＯ）、テーブルフラグ＝０なので（Ｓ３３：ＮＯ）、何の制約もなく指示が実行される（Ｓ３７）。『Ｇ０４Ｘ９０００』は、９０００秒間待機する指令であるので、９０００秒間待機される。これにより、ブロック１０４〜ブロック１１０の実行により発生した熱変位が回復する。そして、９０００秒経過すると、Ｓ２へ戻る。
【００４８】
次のブロック１１３『ＩＦ［＃１０１  ＧＴ  １０］  ＧＯＴＯ  ３０』が読み込まれる（Ｓ２）。以下、ブロック１１３〜ブロック１２１の処理は、ブロック１０４〜ブロック１１２の処理と類似しているので、説明を援用する。ブロック１０６では『Ｍ３００』により主軸の駆動を禁止しているが、ブロック１１５ではテーブルの駆動、つまり、Ｘ軸，Ｙ軸，Ｚ軸の駆動が禁止されている。そして、変数１００の代わりに変数１０１が用いられている。よって、Ｐ１０００により熱変位量が記録され、その後、Ｘ軸，Ｙ軸，Ｚ軸の駆動が禁止された状態で、Ｐ５００が１０回連続して実行されるという一連の処理が１０回行われる。よって、Ｘ軸，Ｙ軸，Ｚ軸の駆動が禁止された状態、つまり、主軸のみが駆動された状態での熱変位量が記録される。そして、ブロック１２１『Ｇ０４Ｘ９０００』では、９０００秒間待機される。これにより、ブロック１１３〜ブロック１１９の実行により発生した熱変位が回復する。そして、９０００秒経過すると、Ｓ２へ戻る。
【００４９】
そして、ブロック１２２『Ｍ３０』が読み込まれ（Ｓ２）、Ｍコードであり（Ｓ３：ＹＥＳ）、「Ｍ３０」であり（Ｓ４：ＹＥＳ）、サブフラグ＝０であるので（Ｓ１３：ＮＯ）、制御プログラムは終了する。
【００５０】
以上のようにして、加工プログラムに「Ｍ３００」の指令を組み込むことにより、その後の指令において、主軸を駆動させないようにできる。そして、「Ｍ３０１」の指令を組み込むことにより、主軸の駆動禁止を解除することができる。また、「Ｍ３０２」の指令を組み込むことにより、テーブルを駆動するＸ軸，Ｙ軸，Ｚ軸の駆動を禁止することができる。そして、「Ｍ３０３」の指令を組み込むことにより、Ｘ軸，Ｙ軸，Ｚ軸の駆動禁止を解除することができる。したがって、加工プログラムに手を加えることなく、所定の軸を駆動させずに加工プログラムを実行させることができる。よって、加工プログラムに手を加える手間がない。また、複数の軸が同時に駆動されるような複雑な指令に対して、所定の軸のみを駆動させないような加工プログラムを作成するのは困難であるが、その必要はなく、簡単に所定の軸のみを駆動させずに加工プログラムを実行させることができる。
【００５１】
なお、上記実施の形態において図１に示す駆動回路２１〜２４が「軸駆動手段」に該当する。図４に示すＳ７，Ｓ１７で「Ｍ３００」に応じて主軸フラグに「１」を記憶する処理、Ｓ９，Ｓ１９で「Ｍ３０１」に応じてテーブルフラグに「１」を記憶する処理、図５に示す指令実行処理において主軸フラグ及びテーブルフラグの値に応じてテーブルの移動や主軸の回転を禁止して指令を実行する処理を行うＣＰＵ１０が「駆動禁止制御手段」に相当する。Ｓ８，Ｓ１８で「Ｍ３０１」に応じて主軸フラグに「０」を記憶する処理、Ｓ１０，Ｓ２０で「Ｍ３０３」に応じてテーブルフラグに「０」を記憶する処理を行うＣＰＵ１０が「駆動禁止解除手段」に相当する。
【００５２】
また、図３に示した加工プログラムにおいて、最初にブロック１０５を実行して計測対象位置の座標を取得するＣＰＵ１０、最初にブロック１１４を実行して計測対象位置の座標を取得するＣＰＵ１０が「基準座標取得手段」に相当する。また、２回目以降にブロック１０５を実行して計測対象位置の座標を取得するＣＰＵ１０、２回目以降にブロック１１４を実行して計測対象位置の座標を取得するＣＰＵ１０が「熱変位量取得手段」に相当する。フラッシュメモリ１８の熱変位量記憶エリア１８１が「基準座標記憶手段」及び「計測熱変位量記憶手段」に該当する。そして、ブロック１０７，１１６での『Ｍ９８  Ｐ５００  Ｌ１０』の指令を実行するＣＰＵ１０が「サブプログラム実行手段」に該当する。そして、ブロック１０１，１０３，１０４，１０５，１０７，１０９，１１０の処理を実行するＣＰＵ１０、ブロック１０２，１１３，１１４，１１６，１１８，１１９の処理を実行するＣＰＵ１０が「熱変位量記録手段」に相当する。
【００５３】
なお、本発明の数値制御装置は、上記した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。上記実施の形態では、主軸駆動禁止指令のコードを「Ｍ３００」、主軸駆動禁止解除指令のコードを「Ｍ３０１」、テーブル駆動禁止指令のコードを「Ｍ３０２」、テーブル駆動禁止解除指令のコードを「Ｍ３０３」としたが、これら指令のコードはこれに限らないことは言うまでもない。また、所定の軸として主軸、Ｘ軸，Ｙ軸，Ｚ軸のセットを例に挙げたが、駆動を禁止する軸はこれに限らない。また、Ｘ軸，Ｙ軸，Ｚ軸をテーブルの駆動としてセットで禁止したが、各軸それぞれで禁止するように駆動禁止指令のコード、駆動禁止解除指令のコードを設定してもよい。
【００５４】
また、上記実施の形態では、熱変位量計測において駆動禁止指令のコードを用いたが、駆動禁止指令を用いるのは熱変位量計測のためでなくともよい。例えば、加工プログラムの動作を確認するドライランに、Ｚ軸のみを禁止するＺ軸禁止指令を用いてもよい。
【００５５】
また、上記実施の形態では、サブフラグを用いてサブプログラム中に「Ｍ３０（加工プログラム終了）」の指示があった場合には、「Ｍ９９（サブプログラム終了）」と同様に扱っている。しかし、この機能を必ずしも備えていなくてもよい。
【００５６】
また、上記実施の形態で例示した加工プログラム（図３参照）では、サブプログラムを１０回繰り返して実行する都度、熱変位量の計測（Ｐ１０００の実行）を行っているが、熱変位量を計測するタイミングはこれに限らない。例えば、サブプログラムの実行回数は１０回でなくともよい。また、計測開始以降、時間が経過するにつれて、サブプログラムの実行回数を多くしてもよい。また、時間を計測して、所定時間に熱変位量を計測してもよい。その際には、計測時間は時間が経過するに連れて、間隔が空くようにしてもよい。
【図面の簡単な説明】
【００５７】
【図１】数値制御装置１の電気的構成を示すブロック図である。
【図２】ＲＡＭ１４に設けられている記憶エリアを示す模式図である。
【図３】加工プログラムの模式図である。
【図４】制御プログラムの動作を示すフローチャートである。
【図５】制御プログラムの動作を示すフローチャートである。
【符号の説明】
【００５８】
１  数値制御装置
１０  ＣＰＵ
２１  駆動回路
２２  駆動回路
２３  駆動回路
２４  駆動回路
３１  Ｘ軸モータ
３２  Ｙ軸モータ
３３  Ｚ軸モータ
３４  主軸モータ
１４１  主軸フラグ記憶エリア
１４２  テーブルフラグ記憶エリア
１４３  サブフラグ記憶エリア
【図１】
2009110223.tif 000003
【図２】
2009110223.tif 000004
【図３】
2009110223.tif 000005
【図４】
2009110223.tif 000006
【図５】
2009110223.tif 000007