(57)【特許請求の範囲】
【請求項１】
主軸により保持された工具を動作させ、冶具に固定されたワークを加工する工作機械を加工プログラムに基づいて数値制御する数値制御装置であって、
前記工具と前記ワークとの距離を、前記加工プログラムの指定する距離よりも、所定量であるオフセット量だけ離した状態で前記加工プログラムに基づいて前記工具を動作させるドライラン動作を実施するドライラン動作手段と、
前記工具又は前記ワークを前記工具と前記ワークとが近づく方向に移動させると共に、前記工具を動作させて前記ワークを切削する切削動作を指示する前記加工プログラムの切削指示における移動開始位置及び移動終了位置に基づいて前記オフセット量を決定するオフセット量決定手段とを備え、
前記オフセット量決定手段は、
前記加工プログラムの切削指示によって行われる１または複数の前記切削動作の各々について、前記移動開始位置と前記移動終了位置との差である移動量を算出する移動量算出手段を備え、
前記移動量算出手段によって算出された移動量のうち最も大きい移動量を前記オフセット量に決定することを特徴とする数値制御装置。
【請求項２】
コンピュータを請求項１に記載の数値制御装置の各種処理手段として動作させる数値制御プログラム。
【請求項３】
請求項２に記載の数値制御プログラムを記憶したコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置、数値制御プログラム及び数値制御プログラムを記憶した記憶媒体に関するものであり、詳細には、加工プログラムの確認のための作動におけるワーク損傷を防止する数値制御装置、数値制御プログラム及び数値制御プログラムを記憶した記憶媒体に関するものである。
【背景技術】
【０００２】
従来、加工プログラムが正しいかを確認するために空運転するドライラン動作が利用されている。例えば、特許文献１に記載の発明のＮＣ装置におけるドライラン制御装置では、ドライランモードでは、工具の移動の立ち上がり時間と立下り時間とを制御している。また、特許文献２に記載の発明の工作機械における運転制御装置では、ドライランにおいてクーラントを供給せずに動作を行わせている。また、従来、加工プログラムの指示よりも、工具とワークとの距離を予め定められた距離（オフセット量）だけ離した距離で動作するドライランも行われている。このようなオフセットは装置ごとに１つ記憶されているが、加工プログラムにより使用する工具の長さ、ワークの高さが異なるため、操作者が適当なオフセット量を入力する必要がある。
【特許文献１】特開平０３−１４４８０７号公報
【特許文献２】特開平０２−１００８５３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、操作者が入力した数値が適当なのもでなかった場合、操作者が入力を間違えた場合、操作者がオフセット量の入力を忘れた場合には、入力された値又は記憶されていた値によっては、工具がワークに接触してしまい、ワークを傷つけてしまうという問題があった。
【０００４】
本発明は、上述の問題点を解決するためになされたものであり、加工プログラムの確認のための作動におけるワーク損傷を防止する数値制御装置、数値制御プログラム及び数値制御プログラムを記憶した記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００５】
上記課題を解決するため、請求項１に係る発明の数値制御装置では、主軸により保持された工具を動作させ、冶具に固定されたワークを加工する工作機械を加工プログラムに基づいて数値制御する数値制御装置であって、前記工具と前記ワークとの距離を、前記加工プログラムの指定する距離よりも、所定量であるオフセット量だけ離した状態で前記加工プログラムに基づいて前記工具を動作させるドライラン動作を実施するドライラン動作手段と、前記工具又は前記ワークを前記工具と前記ワークとが近づく方向に移動させると共に、前記工具を動作させて前記ワークを切削する切削動作を指示する前記加工プログラムの切削指示における移動開始位置及び移動終了位置に基づいて前記オフセット量を決定するオフセット量決定手段とを備え、前記オフセット量決定手段は、前記加工プログラムの切削指示によって行われる１または複数の前記切削動作の各々について、前記移動開始位置と前記移動終了位置との差である移動量を算出する移動量算出手段を備え、前記移動量算出手段によって算出された移動量のうち最も大きい移動量を前記オフセット量に決定することを特徴とする。
【０００６】
【０００７】
【０００８】
【０００９】
また、請求項２に係る発明の数値制御プログラムでは、コンピュータを請求項１に記載の数値制御装置の各種処理手段として動作させる。
【００１０】
また、請求項３に係る発明のコンピュータ読み取り可能な記憶媒体では、請求項２に記載の数値制御プログラムを記憶している。
【発明の効果】
【００１１】
請求項１に係る発明の数値制御装置では、工具とワークとの距離を、加工プログラムの指定する距離よりも、所定量であるオフセット量だけ離した状態で、加工プログラムに基づいて工具を動作させるドライラン動作を実施する際に、オフセット量を加工プログラム中の切削指示に併せて自動で決定することができる。よって、オフセット量を操作者が入力する場合に発生しうる、操作者によるオフセット量の計算誤り、オフセット量の入力誤り、オフセット量の入力忘れが発生しない。したがって、人為的ミスにより工具とワークとが接触して、ワークを損傷させてしまうことがない。また、切削動作の中で最も大きい移動量がオフセット量とされるので、加工プログラムに対して一律でオフセット量を決定する場合で、安全な量のうち最も少ない量をオフセット量に設定することができる。よって、ワークと工具との距離は、安全な距離のうち最も少ない距離となる。したがって、操作者が加工プログラムの動作を確認する際に、ワークと工具を目視する場合に、工具がワークのどの位置を切削するのかが分かりやすい。
【００１２】
【００１３】
【００１４】
【００１５】
また、請求項２に係る発明の数値制御プログラムでは、コンピュータに実行させることにより、請求項１と同様の効果を奏することができる。
【００１６】
また、請求項３に係る発明のコンピュータ読み取り可能な記憶媒体では、記憶されている数値制御プログラムをコンピュータに実行させることにより、請求項２と同様の効果、すなわち、請求項１と同様の効果を奏することができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の第一の実施の形態乃至第三の実施の形態を図面を参照して説明する。第一の実施の形態乃至第三の実施の形態の数値制御装置１は、被加工物（ワーク）を工具を用いて加工する装置である。数値制御装置１はワークを固定し、工具を移動させ、作動させることによりワークを加工する。この工具の移動の指令はＮＣプログラム（図２参照）に記述されており、ＮＣプログラムを１行ずつ解釈して、工具を移動、作動させる。数値制御装置１では、「ドライラン動作」でＮＣプログラムを実行させ、このＮＣプログラムが正しい動きをするかを確認する。つまり、「ドライラン動作」は、ＮＣプログラムのテスト動作である。このドライラン動作では、実際にワークを加工するのではなく、工具とワークとの距離を離して動作させる。この工具とワークとを離す距離が「オフセット量」である。これにより、実際にワークを加工することなく、ＮＣプログラムの指示による工具の動きを確認することができる。本発明の数値制御装置では、この「オフセット量」をＮＣプログラムに基づいて自動で設定する。
【００１８】
ここで、図１を参照して、数値制御装置１の電気的構成について説明する。図１は、数値制御装置１の電気的構成を示すブロック図である。この構成は、第一の実施の形態乃至第三の実施の形態の数値制御装置１に共通である。
【００１９】
図１に示すように、数値制御装置１には、数値制御装置１の制御を行うＣＰＵ１０が設けられている。このＣＰＵ１０は、数値制御装置１全体の制御の中心となるプロセッサであり、バス１８を介して、ＲＯＭ１１，入力インターフェース１２，出力インターフェース１３，ＲＡＭ１４に接続されている。そして、ＲＯＭ１１には、数値制御装置１の制御を行う制御プログラムが記憶されており、ＣＰＵ１０はＲＯＭ１１から制御プログラムを読み出し、この制御プログラムがＲＡＭ１４に記憶されたＮＣプログラムを読み出してワークの加工を実行する。ＲＡＭ１４には一時的な計算データ、表示データなども格納される。
【００２０】
そして、入力インターフェース１２には、キーボード１５、ドライランスイッチ１６、起動スイッチ１７が接続されている。キーボード１５は、数値制御装置１に種々の情報を入力することができる。ドライランスイッチ１６は、「ドライラン動作」で数値制御装置１を動作させるか否かの指示が入力される。ドライランスイッチ１６がＯＮであれば、「ドライラン動作」で数値制御装置１を動作させ、ＯＦＦであれば、ドライラン動作でない
「通常動作」で動作させる。つまり、ＯＦＦであれば、ＮＣプログラムどおりの工具とワークとの位置関係で動作する。起動スイッチ１７は、ＮＣプログラムの実行を指示するスイッチである。ＯＮされると、ＮＣプログラムが読み出され、１行ごとに指令が実行される。また、出力インターフェース１３には、工具２（図３、図６、図８参照）をＸ軸方向へ移動させるためのＸ軸モータ３１を駆動する駆動回路２１、工具２をＹ軸方向へ移動させるためのＹ軸モータ３２を駆動する駆動回路２２、工具２をＺ軸方向へ移動させるためのＺ軸モータ３３を駆動するための駆動回路２３、工具２の主軸を回転させる主軸モータ３４を駆動する駆動回路２４、表示装置３５の制御を行う制御回路２５を接続している。
【００２１】
次に、図２を参照して、ＮＣプログラムについて説明する。図２は、ＮＣプログラムの模式図である。図２に示すように、ＮＣプログラムは１行を１ブロックとして、工具２の動作が定義されている。そして、各行の先頭に「Ｎ」と数字で表されているブロック番号が記載されている。図２に示す例では、「Ｎ１」，「Ｎ２」，「Ｎ３」・・・，「Ｎ６」の６つのブロックが記載されている。そして、「Ｎ１」の「Ｚ２５０」，「Ｎ３」の「Ｚ２００」、「Ｎ４」の「Ｚ２３０」、「Ｎ５」の「Ｚ１９８」は工具をＺ軸のどの位置まで移動させるかを示す指令である。本実施の形態では、ワークから離れる方向に数値が大きくなるように座標系が設定されている。なお、図３に示す例では、図３における上下方向がＺ軸方向となり、図３における下から上に向かって座標値が大きくなる。
【００２２】
また、「Ｎ１」，「Ｎ４」の「Ｇ０」は工具２を移動させて位置を決める指令である。よって、「Ｎ４」の「Ｇ０Ｚ２３０」は、工具２をＺ軸の２３０まで移動させる指令で（移動指令）ある。また、「Ｎ３」，「Ｎ５」の「Ｇ１」は、工具２を動作させながら指定の方向へ移動させる指令（切削移動指令）である。そして、「Ｇ９０」は、座標指示が絶対値指定方式であることを指定しており、「Ｍ８」は切削油を供給する指令であり、「Ｍ３０」はプログラムの終了の指令である。
【００２３】
なお、切削移動指令は「Ｇ１」だけでなく、例えば、「Ｇ２」，「Ｇ３」，「Ｇ１０２」，「Ｇ１０３」，「Ｇ２０２」，「Ｇ２０３」，「Ｇ１２」，「Ｇ１３」がある。「Ｇ２」は、時計回りで円を描きながら切削を行う円弧補間指令又はヘリカル補間指令である。「Ｇ３」は、反時計回りで円を描きながら切削を行う円弧補間指令又はヘリカル補間指令である。円弧補間指令とヘリカル補間指令との違いは、ヘリカル補間指令にはＺ軸方向の移動を伴いながら切削をすることである。円弧補間指令ではＺ軸方向の移動は伴わない。「Ｇ１０２」は、時計回りで、Ｘ軸及びＺ軸方向の円弧で切削を行うＸＺ円弧補間指令である。「Ｇ１０３」は、反時計回りで、Ｘ軸及びＺ軸方向の円弧で切削を行うＸＺ円弧補間指令である。「Ｇ２０２」は、時計回りで、Ｙ軸及びＺ軸方向の円弧で切削を行うＹＺ円弧補間指令である。「Ｇ２０３」は、反時計回りで、Ｙ軸及びＺ軸方向の円弧で切削を行うＹＺ円弧補間指令である。「Ｇ１２」は、時計回りで円の切削を行う円切削指令である。「Ｇ１３」は、反時計回りで円の切削を行う円切削指令である。オフセット量の決定の際に利用されるものは、Ｚ軸方向への移動を伴うものである。したがって、これらの切削移動指令において、「Ｇ１」，「Ｇ２」，「Ｇ３」でＺ軸方向への移動の指令があるもの、「Ｇ１０２」，「Ｇ１０３」，「Ｇ２０２」，「Ｇ２０３」である。
【００２４】
次に、図３を参照して、第一の実施の形態における「オフセット量」について説明する。図３は、オフセット量の決定方法の説明図である。図３に示す点線の矢印は、Ｚ軸の移動指令（Ｇ０）による工具２の先端の移動軌跡を示しており、実線の矢印は、Ｚ軸の切削移動指令（Ｇ１）による工具２の先端の移動軌跡を示している。図３に示す例では、３箇所で切削動作が行われている。左の切削移動の開始点がＳＳ１、終了点がＳＥ１であり、中央の切削移動の開始点がＳＳ２、終了点がＳＥ２であり、右の切削移動の開始点がＳＳ３、終了点がＳＥ３である。それぞれの移動量の大小関係は、中央の切削移動の移動量（ＳＳ２−ＳＥ２）＜右の切削移動の移動量（ＳＳ３−ＳＥ３）＜左の切削移動の移動量（ＳＳ１−ＳＥ１）である。第一の実施の形態では、ドライラン動作がＯＮとされて、最初のＮＣプログラムの実行時に、全てのＮＣプログラムを解析し、Ｚ軸の切削移動指令におけるＺ軸方向の移動量（切削距離）のうち、最も長い距離を「オフセット量」とする。よって、図３に示す例では、左の切削移動の移動量「ＳＳ１−ＳＥ１」がオフセット量となる。
【００２５】
次に、図４及び図５のフローチャートを参照して、第一の実施の形態における数値制御装置１の動作について説明する。図４は、メモリ運転モードのフローチャートであり、図５は、メモリ運転モードの中で行われるオフセット量自動設定処理のフローチャートである。メモリ運転モード処理は、数値制御装置１の電源が投入され、メモリ運転モードに設定されているとＣＰＵ１０が実行する処理である。なお、メモリ運転モードとは、ＮＣプログラムを読み込み、ＮＣプログラムの指令にしたがって、工具２を動作させるモードである。また、メモリ運転モード以外では、手動運転モードがあり工具を手動の指示により動作させる。これらのモードの切替は図示外のモード切替スイッチにより行うことができる。
【００２６】
メモリ運転モード処理では、まず、起動スイッチ１７の操作が待機され、起動スイッチ１７が操作されると、ＮＣプログラムをＲＡＭ１４から読み出し、１つ目のブロックを解釈対象のブロックとする（Ｓ１）。次いで、ドライランスイッチ１６がＯＮとされた後の最初の起動スイッチ１７の操作であるか否かの判断を行う（Ｓ２）。この判断には、ＲＡＭ１４に設けられているドライラン起動フラグ記憶エリア（図示外）を用いる。このドライラン起動フラグは、ドライランスイッチ１６がＯＮとされると「１（ＯＮ）」が記憶される。そして、ドライランスイッチ１６がＯＦＦされるか、又は、ドライランスイッチ１６がＯＮである状態で起動スイッチ１７が操作されると「０（ＯＦＦ）」が記憶される。そこで、ドライラン起動フラグがＯＮであれば、ドライランスイッチ１６がＯＮとされた後の最初の起動スイッチ１７の操作であると判断される（Ｓ２：ＹＥＳ）。そして、オフセット量自動設定処理を行う（Ｓ３、図５参照）。このオフセット量自動設定処理では、ＮＣプログラムに基づいてオフセット量が決定される。オフセット量自動設定処理については、図５を参照して後述する。なお、ドライラン起動フラグがＯＦＦであり、ドライランスイッチ１６がＯＮとされた後の最初の起動スイッチ１７の操作でないと判断された場合には（Ｓ２：ＮＯ）、既にオフセット量は決定されているので、そのままＳ４へ進む。
【００２７】
オフセット量自動設定処理によりオフセット量が決定されたら、解釈対象のブロックを解釈する（Ｓ４）。そのブロックにＺ軸方向に移動する指令があるか否かの判断を行う（Ｓ５）。ここでは、解釈中のブロックにＺ軸の移動指令又はＺ軸の切削移動指令があれば、Ｚ軸方向の移動があると判断する（Ｓ５：ＹＥＳ）。例えば、「Ｇ０Ｚｚｚｚ」、「Ｇ１Ｚｚｚｚ」，「Ｇ２Ｚｚｚｚ」，「Ｇ３Ｚｚｚｚ」，「Ｇ１０２Ｚｚｚｚ」，「Ｇ１０３Ｚｚｚｚ」，「Ｇ２０２Ｚｚｚｚ」，「Ｇ２０３Ｚｚｚｚ」であればＺ軸方向の移動がある。なお、小文字のｚは任意の数字であり、ｚｚｚはＺ軸の移動先の座標を示している。Ｚ軸方向に移動する指令であれば（Ｓ５：ＹＥＳ）、Ｚ軸の移動先の座標ｚｚｚにオフセット量を加味する（Ｓ６）。具体的には、Ｚ軸を動作させるＺ軸モータ３３を駆動する駆動回路２３に対して出力する移動指令に移動先の座標ｚｚｚ＋オフセット量の値を載せる。そして、解釈対象のブロックの記述に基づいて各種駆動回路２１〜２４に指令を出力して、解釈対象のブロックの動作を実行する（Ｓ８）。そして、解釈対象のブロックを次の行に移し（Ｓ９）、Ｓ４へ戻る。なお、Ｚ軸方向に移動する指令でなければ（Ｓ５：ＮＯ）、プログラム終了の指令であるか否かの判断を行う（Ｓ７）。プログラム終了指令でなければ（Ｓ７：ＮＯ）、解釈対象のブロックの動作を実行し（Ｓ８）、解釈対象のブロックを次の行に移し（Ｓ９）、Ｓ４へ戻り、プログラム終了指令まで繰り返しＳ４〜Ｓ９の処理を行う。プログラム終了の指令であれば（Ｓ７：ＹＥＳ）、Ｓ１へ戻り、起動スイッチ１７の操作が待機される（Ｓ１）。
【００２８】
以上のようにして、オフセット量が加味されてＺ軸モータが駆動されるので、ワーク３と工具２との距離が、ＮＣプログラムの指定する距離よりもオフセット量だけ離れた状態でＮＣプログラムが実行される。
【００２９】
次に、図５を参照して、オフセット量自動設定処理について説明する。図５に示すように、オフセット量自動設定処理では、まず、変数Ｚｍａｘ，移動前位置を初期化し、ＮＣプログラムの最初の行を解釈対象のブロックとする（Ｓ１１）。移動前位置には、Ｚ軸方向の移動範囲の最大値を記憶する。本第一の実施の形態では「６００」とする。変数Ｚｍａｘの初期値は、工具２のＺ軸方向の移動範囲の最小値以下の値であればよい。本第一の実施の形態では、工具２のＺ軸方向の移動範囲の最小値を「０」とし、変数Ｚｍａｘの初期値も「０」とする。これらの変数はＲＡＭ１４に記憶エリアが設けられている。そして、解釈対象のブロックを解釈する（Ｓ１２）。そして、このブロックにＺ軸方向に移動する指令があるか否かの判断を行う（Ｓ１３）。ここでは、解釈対象のブロックにＺ軸の移動指令又はＺ軸の切削移動指令があれば、Ｚ軸方向の移動があると判断する（Ｓ１３：ＹＥＳ）。
【００３０】
Ｚ軸方向の移動であれば（Ｓ１３：ＹＥＳ）、さらにＺ軸の切削移動指令であるか否かの判断を行う（Ｓ１４）。例えば、「Ｇ１Ｚｚｚｚ」，「Ｇ２Ｚｚｚｚ」，「Ｇ３Ｚｚｚｚ」，「Ｇ１０２Ｚｚｚｚ」，「Ｇ１０３Ｚｚｚｚ」，「Ｇ２０２Ｚｚｚｚ」，「Ｇ２０３Ｚｚｚｚ」があれば、Ｚ軸の切削移動指令であると判断され（Ｓ１４：ＹＥＳ）、切削移動の移動量を算出し、変数Ｚｍｖに記憶する（Ｓ１５）。変数Ｚｍｖは、「移動前位置−切削移動指令の移動先の座標ｚｚｚ」で算出される。次いで、変数Ｚｍｖが変数Ｚｍａｘよりも高いか否かの判断を行う（Ｓ１６）。つまり、切削移動の移動量Ｚｍｖ＞Ｚｍａｘであれば、変数Ｚｍａｘよりも長く移動していると判断し（Ｓ１６：ＹＥＳ）、変数Ｚｍａｘに切削移動の移動量Ｚｍｖの値を記憶する（Ｓ１７）。また、切削移動の移動量Ｚｍｖ≦Ｚｍａｘであれば、変数Ｚｍａｘよりも長くないと判断し（Ｓ１６：ＮＯ）、変数Ｚｍａｘを更新しない。次いで、移動先の座標ｚｚｚを移動前位置に記憶する（Ｓ１９）。
【００３１】
次いで、解釈対象のブロックを一つ進める（Ｓ２１）。そして、Ｓ１２へ戻り、解釈対象のブロックを解釈する（Ｓ１２）。そして、このブロックでＺ軸方向に移動するか否かの判断を行う（Ｓ１３）。Ｚ軸方向に移動する指令である場合には（Ｓ１３：ＹＥＳ）、さらにＺ軸の切削移動指令であるか否かの判断を行い（Ｓ１４）、Ｚ軸の切削移動指令でなければ（Ｓ１４：ＮＯ）、移動先の座標ｚｚｚを移動前位置に記憶する（Ｓ１９）。そして、解釈対象のブロックを次の行に移し（Ｓ２１）、そのブロックを解釈する（Ｓ１２）。このブロックにＺ軸方向に移動する指令がない場合には（Ｓ１３：ＮＯ）、プログラム終了の指令であるか否かの判断を行う（Ｓ２０）。プログラム終了の指令であれば（Ｓ２０：ＹＥＳ）、オフセット量に変数Ｚｍａｘの値を記憶して（Ｓ２２）、メモリモード運転処理へ戻る。
【００３２】
図２に示したＮＣプログラムの例では、「Ｎ１」は「Ｇ０Ｚ２５０」なので（１３：ＹＥＳ、Ｓ１４；ＮＯ）、移動前位置に「２５０」を記憶する（Ｓ１９）。次いで、「Ｎ２」では、「Ｍ８」なのでＺ軸の移動指令はなく（Ｓ１３：ＮＯ）、プログラム終了指令でもないので（Ｓ２０：ＮＯ）、変数の更新はない。次いで、「Ｎ３」では、「Ｇ１Ｚ２００」なので（Ｓ１３：ＹＥＳ、Ｓ１４：ＹＥＳ）、切削移動の移動量Ｚｍｖが変数Ｚｍａｘと比較される（Ｓ１６）。この時点では、切削移動の移動量Ｚｍｖ＝移動前位置−切削移動指令の移動先の座標ｚｚｚ＝２５０−２００＝５０＞０＝変数Ｚｍａｘなので（Ｓ１６：ＹＥＳ）、変数Ｚｍａｘは「５０」となる（Ｓ１７）。そして、移動前位置を「２００」とする（Ｓ１９）。次いで、「Ｎ４」は「Ｇ０Ｚ２３０」なので（Ｓ１３：ＹＥＳ、Ｓ１４；ＮＯ）、移動前位置に「２３０」を記憶する（Ｓ１９）。次いで、「Ｎ５」では、「Ｇ１Ｚ１９８」なので（Ｓ１３：ＹＥＳ、Ｓ１４：ＹＥＳ）、切削移動の移動量Ｚｍｖが変数Ｚｍａｘと比較される（Ｓ１６）。この時点では、切削移動の移動量Ｚｍｖ＝移動前位置−切削移動指令の移動先の座標ｚｚｚ＝２３０−１９８＝３２＜５０＝変数Ｚｍａｘなので（Ｓ１６：ＮＯ）、変数Ｚｍａｘを更新しない。そして、移動前位置を「１９８」とする。「Ｎ６」は「Ｍ３０」なので（Ｓ１３：ＮＯ）、プログラム終了と判断され（Ｓ２０：ＹＥＳ）、「オフセット量」に変数Ｚｍａｘ＝「５０」を記憶する（Ｓ２２）。
【００３３】
以上のようにして、ドライラン動作がＯＮとされて、最初のＮＣプログラムの実行時に、オフセット量自動設定処理が行われ、全てのＮＣプログラムを解析し、Ｚ軸の切削移動指令におけるＺ軸方向の移動量（切削距離）のうち、最も長い距離を「オフセット量」とする。よって、ＮＣプログラムに基づいて自動的にオフセット量が決定されるので、オフセット量を操作者が入力する場合に発生しうる、操作者によるオフセット量の計算誤り、オフセット量の入力誤り、オフセット量の入力忘れが発生しない。したがって、人為的ミスにより工具とワークとが接触して、ワークを損傷させてしまうことがない。また、切削動作の中で最も大きい移動量がオフセット量とされるので、加工プログラムに対して一律でオフセット量を決定する場合で、安全な量のうち最も少ない量をオフセット量に設定することができる。よって、ワークと工具との距離は、安全な距離のうち最も少ない距離となる。したがって、操作者が加工プログラムの動作を確認する際に、ワークと工具を目視する場合に、工具がワークのどの位置を切削するのかが分かりやすい。
【００３４】
なお、第一の実施の形態において、図４に示すメモリ運転モード処理のＳ３、すなわち図５に示すオフセット量自動設定処理でオフセット量を決定する処理を行うＣＰＵ１０が「オフセット量決定手段」に相当し、メモリ運転モード処理のＳ４〜Ｓ７の処理を繰り返し、Ｓ３のオフセット量自動設定処理で決定されたオフセット量を加味して数値制御装置１を動作させるＣＰＵ１０が「ドライラン動作手段」に相当する。
【００３５】
次に、図６を参照して、第二の実施の形態における「オフセット量」について説明する。図６は、オフセット量の決定方法の説明図である。図３と同様に図６に示す点線の矢印は、Ｚ軸の移動指令による工具２の先端の移動軌跡を示しており、実線の矢印は、Ｚ軸の切削移動指令による工具２の先端の移動軌跡を示している。図６に示す例では、３箇所で切削動作が行われている。左の切削移動の開始点がＳＳ１、終了点がＳＥ１であり、中央の切削移動の開始点がＳＳ２、終了点がＳＥ２であり、右の切削移動の開始点がＳＳ３、終了点がＳＥ３である。それぞれの開始点の大小関係は、ＳＳ２＜ＳＳ１＜ＳＳ３であり、終了点の大小関係は、ＳＥ２＜ＳＥ１＜ＳＥ３である。本実施の形態では、ＮＣプログラム中の切削移動における開始点の最大値と、終了点の最小値との距離を「オフセット量」とする。図６に示す例では、右の切削移動の開始点ＳＳ３が開始点の最大値であり、中央の切削移動の終了点ＳＥ２が終了点の最小値である。この開始点ＳＳ３から終了点ＳＥ２までの距離が「オフセット量」とされる。
【００３６】
次に、図４及び図７のフローチャートを参照して、第二の実施の形態における数値制御装置１の動作について説明する。図７は、メモリ運転モードの中で行われるオフセット量自動設定処理のフローチャートである。第二の実施の形態におけるメモリ運転モード処理は、第一の実施の形態と同様に、ドライランスイッチ１６がＯＮとされた後の最初の起動スイッチ１７の操作が行われると、オフセット量自動設定処理が行われ、オフセット量が自動設定される。
【００３７】
図７のフローチャートを参照して、オフセット量自動設定処理について説明する。図７に示すように、オフセット量自動設定処理では、まず、変数Ｚｍａｘ，変数Ｚｍｉｎ，移動前位置を初期化し、ＮＣプログラムの最初の行が解釈対象のブロックとされる（Ｓ３１）。移動前位置には、Ｚ軸方向の移動範囲の最大値を記憶する。本第二の実施の形態では「６００」とする。変数Ｚｍｉｎの初期値は、工具２のＺ軸方向の移動範囲の最大値以上の値、変数Ｚｍａｘの初期値は、工具２のＺ軸方向の移動範囲の最小値以下の値であればよい。本第二の実施の形態では、工具２のＺ軸方向の移動範囲の最小値を「０」とし、最大値を「６００」とし、変数Ｚｍａｘの初期値も「０」、変数Ｚｍｉｎの初期値も「６００」とする。これらの変数はＲＡＭ１４に記憶エリアが設けられている。
【００３８】
そして、解釈対象のブロックを解釈する（Ｓ３２）。そして、このブロックにＺ軸方向に移動する指令があるか否かの判断を行う（Ｓ３３）。ここでは、解釈中のブロックにＺ軸の移動指令又はＺ軸の切削移動指令があれば、Ｚ軸方向の移動があると判断する（Ｓ３３：ＹＥＳ）。例えば、「Ｇ０Ｚｚｚｚ」、「Ｇ１Ｚｚｚｚ」，「Ｇ２Ｚｚｚｚ」，「Ｇ３Ｚｚｚｚ」，「Ｇ１０２Ｚｚｚｚ」，「Ｇ１０３Ｚｚｚｚ」，「Ｇ２０２Ｚｚｚｚ」，「Ｇ２０３Ｚｚｚｚ」であればＺ軸方向の移動である。なお、小文字のｚは任意の数字であり、ｚｚｚはＺ軸の移動先の座標を示している。
【００３９】
Ｚ軸方向の移動であれば（Ｓ３３：ＹＥＳ）、さらにＺ軸の切削移動指令であるか否かの判断を行う（Ｓ３４）。例えば、「Ｇ１Ｚｚｚｚ」，「Ｇ２Ｚｚｚｚ」，「Ｇ３Ｚｚｚｚ」，「Ｇ１０２Ｚｚｚｚ」，「Ｇ１０３Ｚｚｚｚ」，「Ｇ２０２Ｚｚｚｚ」，「Ｇ２０３Ｚｚｚｚ」があれば、Ｚ軸の切削移動指令であると判断され（Ｓ３４：ＹＥＳ）、移動前位置が変数Ｚｍａｘよりも高いか否かの判断を行う（Ｓ３５）。つまり、移動前位置＞Ｚｍａｘであれば、変数Ｚｍａｘよりも高いと判断し（Ｓ３５：ＹＥＳ）、変数Ｚｍａｘに移動前位置の値を記憶する（Ｓ３６）。また、移動前位置≦Ｚｍａｘであれば、変数Ｚｍａｘよりも高くないと判断し（Ｓ３５：ＮＯ）、変数Ｚｍａｘを更新しない。次いで、移動完了位置が変数Ｚｍｉｎよりも低いか否かの判断を行う（Ｓ３７）。つまり、移動完了位置である解釈中のブロックの指定する移動先の座標ｚｚｚ＜変数Ｚｍｉｎであれば、移動先の座標ｚｚｚを変数Ｚｍｉｎに記憶する（Ｓ３８）。また、移動先の座標ｚｚｚ≧変数Ｚｍｉｎであれば、変数Ｚｍｉｎを更新しない。そして、Ｓ３９へ進み、移動先の座標ｚｚｚを移動前位置に記憶する（Ｓ３９）。
【００４０】
次いで、解釈対象のブロックを一つ進める（Ｓ４１）。そして、Ｓ３２へ戻り、解釈対象のブロックを解釈する（Ｓ３２）。そして、このブロックでＺ軸方向に移動するか否かの判断を行う（Ｓ３３）。Ｚ軸方向に移動する指令である場合には（Ｓ３３：ＮＯ）、さらにＺ軸の切削移動指令であるか否かの判断を行い（Ｓ３４）、Ｚ軸の切削移動指令でなければ（Ｓ３４：ＮＯ）、移動先の座標ｚｚｚを移動前位置に記憶する（Ｓ３９）。そして、解釈対象のブロックを次の行に移し（Ｓ４１）、そのブロックを解釈する（Ｓ３２）。このブロックにＺ軸方向に移動する指令がない場合には（Ｓ３３：ＮＯ）、プログラム終了の指令であるか否かの判断を行う（Ｓ４０）。プログラム終了の指令であれば（Ｓ４０：ＹＥＳ）、オフセット量に「変数Ｚｍａｘ−変数Ｚｍｉｎ」の値を記憶して（Ｓ４２）、メモリモード運転処理へ戻る。
【００４１】
図２に示したＮＣプログラムの例では、「Ｎ１」は「Ｇ０Ｚ２５０」なので（Ｓ３３：ＹＥＳ、Ｓ３４；ＮＯ）、移動前位置に「２５０」を記憶する（Ｓ３９）。次いで、「Ｎ２」では、「Ｍ８」なのでＺ軸の移動指令はなく（Ｓ３３：ＮＯ）、プログラム終了指令でもないので（Ｓ４０：ＮＯ）、変数の更新はない。次いで、「Ｎ３」では、「Ｇ１Ｚ２００」なので（Ｓ３３：ＹＥＳ、Ｓ３４：ＹＥＳ）、移動前位置が変数Ｚｍａｘと比較される（Ｓ３５）。この時点では、移動前位置＝２５０＞変数Ｚｍａｘ＝０なので（Ｓ３５：ＹＥＳ）、変数Ｚｍａｘは「２５０」となる（Ｓ３６）。そして、移動完了位置＝２００＜６００変数＝Ｚｍｉｎなので（Ｓ３７：ＹＥＳ）、変数Ｚｍｉｎは「２００」となる（Ｓ３８）。そして、移動前位置を「２００」とする（Ｓ３９）。次いで、「Ｎ４」は「Ｇ０Ｚ２３０」なので（１３：ＹＥＳ、Ｓ３４；ＮＯ）、移動前位置に「２３０」を記憶する（Ｓ３９）。次いで、「Ｎ５」では、「Ｇ１Ｚ１９８」なので（Ｓ３３：ＹＥＳ、Ｓ３４：ＹＥＳ）、移動前位置が変数Ｚｍａｘと比較される（Ｓ３５）。この時点では、移動前位置＝２３０＜２５０＝変数Ｚｍａｘなので（Ｓ３５：ＮＯ）、変数ｍａｘを更新しない。そして、移動完了位置＝１９８＜２００＝変数Ｚｍｉｎなので（Ｓ３７：ＹＥＳ）、変数Ｚｍｉｎは「１９８」となる（Ｓ３８）。そして、移動前位置を「１９８」とする。「Ｎ６」は「Ｍ３０」なので（Ｓ３３：ＮＯ）、プログラム終了と判断され（Ｓ４０：ＹＥＳ）、「オフセット量」に変数Ｚｍａｘ−変数Ｚｍｉｎ＝２５０−１９８＝「５２」を記憶する（Ｓ４２）。
【００４２】
以上のようにして、第二の実施の形態では、ＮＣプログラム中の切削移動における開始点の最大値と、終了点の最小値との距離が「オフセット量」とされる。よって、ＮＣプログラムに基づいて自動的にオフセット量が決定されるので、オフセット量を操作者が入力する場合に発生しうる、操作者によるオフセット量の計算誤り、オフセット量の入力誤り、オフセット量の入力忘れが発生しない。したがって、人為的ミスにより工具とワークとが接触して、ワークを損傷させてしまうことがない。また、切削動作の中で最も工具とワークとが離れた位置と、最も工具とワークとが近づいた位置との差がオフセット量とされるので、余裕を持っているが大きな無駄はないオフセット量を設定することができる。
【００４３】
なお、第二の実施の形態において、図４に示すメモリ運転モード処理のＳ３、すなわち図７に示すオフセット量自動設定処理でオフセット量を決定する処理を行うＣＰＵ１０が「オフセット量決定手段」に相当し、メモリ運転モード処理のＳ４〜Ｓ７の処理を繰り返し、Ｓ３のオフセット量自動設定処理で決定されたオフセット量を加味して数値制御装置１を動作させるＣＰＵ１０が「ドライラン動作手段」に相当する。
【００４４】
次に、図８乃至図１０を参照して、第三の実施の形態について説明する。図８は、オフセット量の決定方法の説明図である。図３と同様に、図８に示す点線の矢印は、Ｚ軸の移動指令による工具２の先端の移動軌跡を示しており、実線の矢印は、Ｚ軸の切削移動指令による工具２の先端の移動軌跡を示している。図８に示す例では、２箇所で移動、切削動作が行われている。左の移動の開始点がＭＳ１、移動の終了点及び切削移動の開始点がＳＳ１、終了点がＳＥ２である。右の移動の開始点がＭＳ２、移動の終了点及び右の切削移動の開始点がＳＳ２、終了点がＳＥ２である。第三の実施の形態では、Ｚ軸の移動指令があれば、ＮＣプログラムを先読みし、次のＺ軸の切削移動指令におけるＺ軸方向の移動量を「オフセット量」とする。
【００４５】
図８に示す例では、左の開始点ＭＳ１から終了点ＳＳ１への移動では、次の切削移動として、開始点ＳＳ１から終了点ＳＥ１までの切削移動が先読みされ、先読みされた切削移動の移動量（開始点ＳＳ１から終了点ＳＥ１までの距離）が「オフセット量」とされる。そして、左の開始点ＳＳ１から終了点ＳＥ１までの切削移動では、自身の切削移動の移動量（開始点ＳＳ１から終了点ＳＥ１までの距離）が「オフセット量」とされる。また、右の開始点ＭＳ２から終了点ＳＳ２への移動では、次の切削移動として、開始点ＳＳ２から終了点ＳＥ２までの切削移動が先読みされ、先読みされた切削移動の移動量（開始点ＳＳ２から終了点ＳＥ２までの距離）が「オフセット量」とされる。そして、右の開始点ＳＳ２から終了点ＳＥ２までの切削移動では、自身の切削移動の移動量（開始点ＳＳ２から終了点ＳＥ２までの距離）が「オフセット量」とされる。
【００４６】
次に、図９及び図１０のフローチャートを参照して、第三の実施の形態における数値制御装置１の動作について説明する。図９は、メモリ運転モードのフローチャートである。図１０は、メモリ運転モードの中で行われるオフセット量自動設定処理のフローチャートである。
【００４７】
図９に示すように、メモリ運転モード処理では、まず、起動スイッチ１７の操作が待機され、起動スイッチ１７が操作されると、ＮＣプログラムをＲＡＭ１４から読み出し、１つ目のブロックを解釈対象のブロックとする（Ｓ５１）。次いで、解釈対象のブロックを解釈する（Ｓ５２）。そのブロックにＺ軸方向に移動する指令があるか否かの判断を行う（Ｓ５３）。ここでは、解釈中のブロックにＺ軸の移動指令又はＺ軸の切削移動指令があれば、Ｚ軸方向の移動があると判断する（Ｓ５３：ＹＥＳ）。「Ｇ０Ｚｚｚｚ」、「Ｇ１Ｚｚｚｚ」，「Ｇ２Ｚｚｚｚ」，「Ｇ３Ｚｚｚｚ」，「Ｇ１０２Ｚｚｚｚ」，「Ｇ１０３Ｚｚｚｚ」，「Ｇ２０２Ｚｚｚｚ」，「Ｇ２０３Ｚｚｚｚ」であればＺ軸方向の移動がある。なお、小文字のｚは任意の数字であり、ｚｚｚはＺ軸の移動先の座標を示している。Ｚ軸方向に移動する指令であれば（Ｓ５３：ＹＥＳ）、オフセット量自動設定処理を行う（Ｓ５４、図１０参照）。このオフセット量自動設定処理では、オフセット量が決定されるが、詳細については、図１０を参照して後述する。Ｚ軸の移動先の座標ｚｚｚにオフセット量を加味して（Ｓ５５）、解釈対象のブロックの動作を実行する（Ｓ５７）。そして、解釈対象のブロックを次の行に移し（Ｓ５８）、Ｓ５２へ戻る。なお、Ｚ軸方向に移動する指令でなければ（Ｓ５３：ＮＯ）、プログラム終了の指令であるか否かの判断を行う（Ｓ５６）。プログラム終了指令でなければ（Ｓ５６：ＮＯ）、解釈対象のブロックの動作を実行し（Ｓ５７）、解釈対象のブロックを次の行に移し（Ｓ５８）、Ｓ５２へ戻り、プログラム終了指令まで繰り返しＳ５２〜Ｓ５８の処理を行う。プログラム終了の指令であれば（Ｓ５６：ＹＥＳ）、Ｓ５１へ戻り、起動スイッチ１７の操作が待機される（Ｓ５１）。
【００４８】
以上のようにして、Ｚ軸方向の移動指令がある度に、その移動指令による移動以降の切削移動の移動距離がオフセット量自動設定処理で決定される。
【００４９】
次に、図１０を参照して、オフセット量自動設定処理について説明する。図１０に示すように、オフセット量自動設定処理では、まず、指令動作前位置に現在のＺ軸座標の位置を記憶し、オフセット量自動設定処理での解釈対象のブロックを、メモリ運転モード処理での解釈対象のブロックとする（Ｓ６１）。指令動作前位置及び、後述する指令動作後位置はＲＡＭ１４に記憶エリアが設けられている。解釈中のブロックにＺ軸の切削移動指令があるか否かの判断を行う（Ｓ６２）。「Ｇ１Ｚｚｚｚ」，「Ｇ２Ｚｚｚｚ」，「Ｇ３Ｚｚｚｚ」，「Ｇ１０２Ｚｚｚｚ」，「Ｇ１０３Ｚｚｚｚ」，「Ｇ２０２Ｚｚｚｚ」，「Ｇ２０３Ｚｚｚｚ」がなければ、Ｚ軸の切削移動指令はないと判断し（Ｓ６２：ＹＥＳ）、Ｚ軸方向に移動する指令があるか否かの判断を行う（Ｓ６３）。ここでは、解釈中のブロックにＺ軸の移動指令又はＺ軸の切削移動指令があれば、Ｚ軸方向の移動があると判断する（Ｓ６３：ＹＥＳ）。
【００５０】
Ｚ軸方向の移動であれば（Ｓ６３：ＹＥＳ）、指令動作前位置にＺ軸の移動先の座標ｚｚｚを記憶する（Ｓ６５）。次いで、オフセット量自動設定処理での解釈対象のブロックを一つ進め（Ｓ６６）、解釈対象のブロックを解釈する（Ｓ６７）。そして、Ｓ６２へ戻り、解釈中のブロックにＺ軸の切削移動指令があるか否かの判断を行う（Ｓ６２）。Ｚ軸方向に移動する指令である場合には（Ｓ６２：ＹＥＳ）、指令動作後位置に移動先の座標ｚｚｚを移動前位置に記憶する（Ｓ６８）。そして、「オフセット量」に「指令動作前位置−指令動作後位置」の値を記憶して（Ｓ７０）、メモリモード運転処理へ戻る。
【００５１】
なお、オフセット量自動設定処理を実施するきっかけとなったブロック以後のブロックにＺ軸の切削移動指令や、Ｚ軸の移動指令がないままに（Ｓ６２：ＮＯ、Ｓ６３：ＮＯ、Ｓ６４：ＮＯ、Ｓ６６，Ｓ６７の繰り返し）、プログラム終了指令がきた場合には（Ｓ６４：ＮＯ）、指令動作後位置にＺ軸の最下端の位置（本第三の実施の形態では「０」）を記憶し（Ｓ６９）、Ｓ７０へ進み、オフセット量に「指令動作前位置−指令動作後位置」の値を記憶して（Ｓ７０）、メモリモード運転処理へ戻る。
【００５２】
図２に示したＮＣプログラムの例では、「Ｎ１」は「Ｇ０Ｚ２５０」なので（Ｓ５３：ＹＥＳ）、オフセット量自動設定処理を行う（Ｓ５４）。そして、オフセット量自動設定処理では、指令動作前位置には、Ｚ軸の現在位置である最上端位置「６００」を記憶し、メモリ運転モード処理での解析対象のブロック「Ｎ１」を、オフセット量自動設定処理の解析対象のブロックとする（Ｓ６１）。Ｎ１は切削移動でなく（Ｓ６２：ＮＯ）、Ｚ軸の移動指令であるので（Ｓ６３：ＹＥＳ）、指令動作前位置に「２５０」を記憶する（Ｓ６５）。次いで、Ｚ軸の解釈対象のブロックは「Ｎ２」となり（Ｓ６７、Ｓ６７）、「Ｎ２」は「Ｍ８」なので、切削指令でもなく（Ｓ６２：ＮＯ）、Ｚ軸の移動指令はなく（Ｓ６３：ＮＯ）、プログラム終了指令でもないので（Ｓ６４：ＮＯ）、変数の更新はない。次いで、「Ｎ３」では、「Ｇ１Ｚ２００」で切削移動指令なので（Ｓ６２：ＹＥＳ）、指令動作後位置に「２００」を記憶する（Ｓ６８）。そして、「オフセット量」に指令動作前位置−指令動作後位置＝２５０−２００＝「５０」を記憶する（Ｓ７０）。そして、メモリ運転モード処理では、オフセット量「５０」を「Ｎ１」の「Ｇ０Ｚ２５０」の「２５０」に加味して（Ｓ５５）、「３００」の位置まで移動を実施する（Ｓ５７）。
【００５３】
そして、次のブロック「Ｎ２」を解釈対象のブロックとし（Ｓ５８）、解釈する（Ｓ５２）。「Ｎ２」は「Ｍ８」なので（Ｓ５３：ＮＯ、Ｓ５６：ＮＯ）、切削油を供給し（Ｓ５７）、「Ｎ３」を釈対象のブロックとし（Ｓ５８）、解釈する（Ｓ５２）。「Ｎ３」は「Ｇ１Ｚ２００」なので、Ｚ軸の移動のある指令であり（Ｓ５３：ＹＥＳ）、オフセット量自動設定処理を行う（Ｓ５４）。そして、オフセット量自動設定処理では、指令動作前位置には、Ｚ軸の現在位置「２５０」を記憶し、メモリ運転モード処理での解析対象のブロック「Ｎ２」を、オフセット量自動設定処理の解析対象のブロックとする（Ｓ６１）。Ｎ３は切削移動であるので（Ｓ６２：ＹＥＳ）、指令動作後位置に「２００」を記憶する（Ｓ６８）。そして、「オフセット量」に指令動作前位置−指令動作後位置＝２５０−２００＝「５０」を記憶する（Ｓ７０）。そして、メモリ運転モード処理では、オフセット量「５０」を「Ｎ３」の「Ｇ１Ｚ２００」の「２００」に加味して（Ｓ５５）、「２５０」の位置まで切削を実施する（Ｓ５７）。
【００５４】
そして、次のブロック「Ｎ４」を解釈対象のブロックとし（Ｓ５８）、解釈する（Ｓ５２）。「Ｎ４」は「Ｇ０Ｚ２３０」なので、Ｚ軸の移動のある指令であり（Ｓ５３：ＹＥＳ）、オフセット量自動設定処理を行う（Ｓ５４）。そして、オフセット量自動設定処理では、指令動作前位置には、Ｚ軸の現在位置「２００」を記憶し、メモリ運転モード処理での解析対象のブロック「Ｎ４」を、オフセット量自動設定処理の解析対象のブロックとする（Ｓ６１）。Ｎ４は切削移動でなく（Ｓ６２：ＮＯ）、Ｚ軸の移動指令であるので（Ｓ６３：ＹＥＳ）、指令動作前位置に「２３０」を記憶する（Ｓ６５）。次いで、Ｚ軸の解釈対象のブロックは「Ｎ５」となり（Ｓ６６、Ｓ６７）、「Ｎ５」は「Ｇ１Ｚ１９８」で、切削移動であるので（Ｓ６２：ＹＥＳ）、指令動作後位置に「１９８」を記憶する（Ｓ６８）。そして、「オフセット量」に指令動作前位置−指令動作後位置＝２３０−１９８＝「３２」を記憶する（Ｓ７０）。そして、メモリ運転モード処理では、オフセット量「３２」を「Ｎ４」の「Ｇ０Ｚ２３０」の「２３０」に加味して（Ｓ５５）、「２６２」の位置まで移動を実施する（Ｓ５７）。
【００５５】
そして、次のブロック「Ｎ５」を解釈対象のブロックとし（Ｓ５８）、解釈する（Ｓ５２）。「Ｎ５」は「Ｇ１Ｚ１９８」なので、Ｚ軸の移動のある指令であり（Ｓ５３：ＹＥＳ）、オフセット量自動設定処理を行う（Ｓ５４）。そして、オフセット量自動設定処理では、指令動作前位置には、Ｚ軸の現在位置「２３０」を記し、メモリ運転モード処理での解析対象のブロック「Ｎ５」を、オフセット量自動設定処理の解析対象のブロックとする（Ｓ６１）。解釈中のブロックは「Ｎ５」である。そして、Ｎ５は切削移動であるので（Ｓ６２：ＹＥＳ）、指令動作後位置に「１９８」を記憶する（Ｓ６８）。そして、「オフセット量」に指令動作前位置−指令動作後位置＝２３０−１９８＝「３２」を記憶する（Ｓ７０）。そして、メモリ運転モード処理では、オフセット量「３２」を「Ｎ５」の「Ｇ１Ｚ１９８」の「１９８」に加味して（Ｓ５５）、「２３０」の位置まで切削を実施する（Ｓ５７）。
【００５６】
そして、次のブロック「Ｎ６」を解釈対象のブロックとし（Ｓ５８）、解釈する（Ｓ５２）。「Ｎ６」は「Ｍ３０」なので、プログラム終了指令である（Ｓ５６：ＹＥＳ）。よって、Ｓ５１へ戻り、起動スイッチ１７の押下を待機する（Ｓ５１）。
【００５７】
以上のようにして、第三の実施の形態では、Ｚ軸の移動指令があれば、ＮＣプログラムを先読みし、次のＺ軸の切削移動指令におけるＺ軸方向の移動量を「オフセット量」とする。よって、ＮＣプログラムに基づいて自動的にオフセット量が決定されるので、オフセット量を操作者が入力する場合に発生しうる、操作者によるオフセット量の計算誤り、オフセット量の入力誤り、オフセット量の入力忘れが発生しない。したがって、人為的ミスにより工具とワークとが接触して、ワークを損傷させてしまうことがない。また、加工プログラムを実行する最中にオフセット量が決定されるので、加工プログラム全体を解析してオフセット量を決定するよりも時間のロスが少ない。
【００５８】
なお、第三の実施の形態において、図９に示すメモリ運転モード処理のＳ５４、すなわち図１０に示すオフセット量自動設定処理でオフセット量を決定する処理を行うＣＰＵ１０が「オフセット量決定手段」に相当し、メモリ運転モード処理のＳ５２〜Ｓ５８の処理を繰り返し、Ｓ３のオフセット量自動設定処理で決定されたオフセット量を加味して数値制御装置１を動作させるＣＰＵ１０が「ドライラン動作手段」に相当する。
【００５９】
なお、本発明の数値制御装置は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。上記第一の実施の形態〜第三の実施の形態では、ワーク３を固定して、工具２を移動させる数値制御装置１を例に挙げて説明したが、工具２とワーク３の両方を移動させる数値制御装置であってもよい。また、工具２がワーク３に対して近づく方向をＺ軸としたが、工具２が近づく方向は、その他の軸であってもよい。
【図面の簡単な説明】
【００６０】
【図１】数値制御装置１の電気的構成を示すブロック図である。
【図２】ＮＣプログラムの模式図である。
【図３】オフセット量の決定方法の説明図である。
【図４】メモリ運転モードのフローチャートである。
【図５】メモリ運転モードの中で行われるオフセット量自動設定処理のフローチャートである。
【図６】オフセット量の決定方法の説明図である。
【図７】メモリ運転モードの中で行われるオフセット量自動設定処理のフローチャートである。
【図８】オフセット量の決定方法の説明図である。
【図９】メモリ運転モードのフローチャートである。
【図１０】メモリ運転モードの中で行われるオフセット量自動設定処理のフローチャートである。
【符号の説明】
【００６１】
１  数値制御装置
２  工具
３  ワーク
１０  ＣＰＵ
１６  ドライランスイッチ
１７  起動スイッチ
２３  駆動回路
３３  Ｚ軸モータ
３４  主軸モータ
【図１】
0004867876.tif 000002
【図２】
0004867876.tif 000003
【図３】
0004867876.tif 000004
【図４】
0004867876.tif 000005
【図５】
0004867876.tif 000006
【図６】
0004867876.tif 000007
【図７】
0004867876.tif 000008
【図８】
0004867876.tif 000009
【図９】
0004867876.tif 000010
【図１０】
0004867876.tif 000011