(57)【特許請求の範囲】
【請求項１】
機械の回転軸の速度制御と位置制御をＮＣプログラムに従って制御する数値制御装置において、
前記ＮＣプログラムのブロック毎に指定された制御指令を順次先読みして解釈する先読み手段と、
前記先読み手段で先読みして解釈した解釈情報を記憶装置に記憶する記憶手段と、
前記記憶装置から前記解釈情報を読み出して実行する実行手段と
を備え、
前記先読み手段は、
前記回転軸の回転を停止した後の前記回転軸の最初の位置決め指令が、移動座標系を絶対座標とするアブソリュート指令か、移動座標系を相対座標とするインクレメンタル指令かを判断する第一判断手段と、
前記第一判断手段が前記位置決め指令は前記アブソリュート指令と判断した場合、前記位置決め指令に基づいて前記回転軸の移動量を指示する指令移動量を、予め設定した前記回転軸の基準位置からの移動量で仮決めする仮決め手段と、
前記第一判断手段が前記位置決め指令は前記インクレメンタル指令と判断した場合、前記機械の運転を停止する停止指令を前記解釈情報として前記記憶装置に記憶する停止指令記憶手段と
を備え、
前記実行手段は、
前記記憶装置から読み出した前記解釈情報に基づき、前記仮決め手段が仮決めした前記指令移動量から、前記回転軸の位置を検出する位置検出手段が検出した現在の前記回転軸の位置を差し引いた第一差分を演算する第一演算手段と、
前記第一演算手段が演算した前記第一差分に基づき、前記回転軸の位置決めを行う第一位置決め実行手段と、
前記記憶装置から読み出した前記解釈情報の中に前記停止指令が有る場合、前記機械を停止する停止手段と
を備えた
ことを特徴とする数値制御装置。
【請求項２】
請求項１に記載の数値制御装置において、
前記先読み手段は、
前記第一判断手段が前記位置決め指令は前記インクレメンタル指令と判断した場合、該位置決め指令は、現在位置から中間位置への移動の無い特定レファレンス点復帰指令であるか否か判断する第二判断手段と
を備え、
前記仮決め手段は、
前記第二判断手段が前記位置決め指令は前記特定レファレンス点復帰指令と判断した場合、前記指令移動量を、前記基準位置から前記特定レファレンス点復帰指令が指示するレファレンス点までの移動量として仮決めする
ことを特徴とする数値制御装置。
【請求項３】
請求項２に記載の数値制御装置において、
前記先読み手段は、
前記特定レファレンス点復帰指令を先読みして解釈する場合、
前記現在位置から前記中間位置までの移動量を０°とする第一動作指令、
前記現在位置からの移動量が０°である前記中間位置から前記レファレンス点までの移動量を、前記仮決め手段が仮決めする前記指令移動量とする第二動作指令として解釈し、
前記実行手段は、
前記第一動作指令に基づき、前記現在位置から移動しない第一動作実行手段と、
前記第一動作実行手段が前記第一動作を実行した後で、前記第二動作に基づき、前記指令移動量から、前記位置検出手段が検出した現在の前記回転軸の位置を差し引いた第二差分を演算する第二演算手段と、
前記第二演算手段が演算した前記第二差分に基づき、前記回転軸の位置決めを行う第二動作実行手段と
を備えた
ことを特徴とする数値制御装置。
【請求項４】
請求項１から３の何れか一つに記載の数値制御装置において、
前記回転軸はワークを保持し且つ連続回転可能な軸である
ことを特徴とする数値制御装置。
【請求項５】
機械の回転軸の速度制御と位置制御をＮＣプログラムに従って制御する数値制御装置の制御方法において、
前記ＮＣプログラムのブロック毎に指定された制御指令を順次先読みして解釈する先読み工程と、
前記先読み工程で先読みして解釈した解釈情報を記憶装置に記憶する記憶工程と、
前記記憶装置から前記解釈情報を読み出して実行する実行工程と
を備え、
前記先読み工程は、
前記回転軸の回転を停止した後の前記回転軸の最初の位置決め指令が、移動座標系を絶対座標とするアブソリュート指令か、移動座標系を相対座標とするインクレメンタル指令かを判断する第一判断工程と、
前記第一判断工程で前記位置決め指令は前記アブソリュート指令と判断した場合、前記位置決め指令に基づいて前記回転軸の移動量を指示する指令移動量を、予め設定した前記回転軸の基準位置からの移動量で仮決めする仮決め工程と、
前記第一判断工程で前記位置決め指令は前記インクレメンタル指令と判断した場合、前記機械の運転を停止する停止指令を前記解釈情報として前記記憶装置に記憶する停止指令記憶工程と
を備え、
前記実行工程は、
前記記憶装置から読み出した前記解釈情報に基づき、前記仮決め工程で仮決めした前記指令移動量から、前記回転軸の位置を検出する位置検出手段が検出した現在の前記回転軸の位置を差し引いた第一差分を演算する第一演算工程と、
前記第一演算工程で演算した前記第一差分に基づき、前記回転軸の位置決めを行う第一位置決め実行工程と、
前記記憶装置から読み出した前記解釈情報の中に前記停止指令が有る場合、前記機械を停止する停止工程と
を備えた
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械の動作を制御する数値制御装置と制御方法に関する。
【背景技術】
【０００２】
数値制御装置は、ＮＣプログラムを先読みして解釈した結果をバッファに記憶し、該バッファに記憶した解釈結果に基づき工作機械の動作を制御する。ＮＣプログラムの途中で工作機械のサーボモータについて速度制御から位置制御に切り替わる時がある。数値制御装置は、速度制御から位置制御に切り替わる最初の位置決め指令を先読みする時、サーボモータの現在位置が分からないので、サーボモータを位置決めできない。故に数値制御装置は先読みを一旦停止し、連続回転するサーボモータの停止位置を確定後、確定した停止位置を基準としてサーボモータを位置決めしてから先読みを再開する必要があった。
【０００３】
特許文献１が開示する数値制御装置は、先読み処理にて、速度制御から位置制御に切り替わる際にサーボモータを停止した後の最初の位置決め指令を先読みする時、該位置決め指令が指示する移動量を、予め設定した基準位置からの移動量で仮決めしバッファに記憶する。次いで実行処理にて、仮決めした移動量をバッファから読み出し、該移動量から現在のサーボモータの位置を差し引いた差分を演算する。数値制御装置は演算した差分に基づきサーボモータの位置決めを行う。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−４８７６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の方法は、回転軸を停止した後の最初の位置決め指令がアブソリュート指令であることを前提とする。アブソリュート指令は、移動座標系を絶対座標とする指令である。最初の位置決め指令がインクレメンタル指令の時、移動座標系を相対座標とするので、数値制御装置は上記方法で同様に処理すると、工作機械が使用者の意図と異なる動きをする可能性があった。
【０００６】
本発明の目的は、回転軸の回転を停止した後の最初の位置決め指令がインクレメンタル指令であった時に、機械の動作を停止できる数値制御装置と制御方法を提供することである。
【課題を解決するための手段】
【０００７】
本発明の請求項１に係る数値制御装置は、機械の回転軸の速度制御と位置制御をＮＣプログラムに従って制御する数値制御装置において、前記ＮＣプログラムのブロック毎に指定された制御指令を順次先読みして解釈する先読み手段と、前記先読み手段で先読みして解釈した解釈情報を記憶装置に記憶する記憶手段と、前記記憶装置から前記解釈情報を読み出して実行する実行手段とを備え、前記先読み手段は、前記回転軸の回転を停止した後の前記回転軸の最初の位置決め指令が、移動座標系を絶対座標とするアブソリュート指令か、移動座標系を相対座標とするインクレメンタル指令かを判断する第一判断手段と、前記第一判断手段が前記位置決め指令は前記アブソリュート指令と判断した場合、前記位置決め指令に基づいて前記回転軸の移動量を指示する指令移動量を、予め設定した前記回転軸の基準位置からの移動量で仮決めする仮決め手段と、前記第一判断手段が前記位置決め指令は前記インクレメンタル指令と判断した場合、前記機械の運転を停止する停止指令を前記解釈情報として前記記憶装置に記憶する停止指令記憶手段とを備え、前記実行手段は、前記記憶装置から読み出した前記解釈情報に基づき、前記仮決め手段が仮決めした前記指令移動量から、前記回転軸の位置を検出する位置検出手段が検出した現在の前記回転軸の位置を差し引いた第一差分を演算する第一演算手段と、前記第一演算手段が演算した前記第一差分に基づき、前記回転軸の位置決めを行う第一位置決め実行手段と、前記記憶装置から読み出した前記解釈情報の中に前記停止指令が有る場合、前記機械を停止する停止手段とを備えたことを特徴とする。回転軸の回転を停止した後の最初の回転軸への位置決め指令がインクレメンタル指令である場合、回転軸の停止する位置は分からない。ＮＣプログラム中に不確定な指令がある可能性が高い。上記の場合、数値制御装置は機械の運転を停止するので、機械が作業者の意図しない動作を行うことを防止できる。また、作業者はＮＣプログラム中に不確定な指令があることに気付くことができる。
【０００８】
請求項２に係る発明の数値制御装置は、請求項１に記載の発明の構成に加え、前記先読み手段は、前記第一判断手段が前記位置決め指令は前記インクレメンタル指令と判断した場合、該位置決め指令は、現在位置から中間位置への移動の無い特定レファレンス点復帰指令であるか否か判断する第二判断手段とを備え、前記仮決め手段は、前記第二判断手段が前記位置決め指令は前記特定レファレンス点復帰指令と判断した場合、前記指令移動量を、前記基準位置から前記特定レファレンス点復帰指令が指示するレファレンス点までの移動量として仮決めすることを特徴とする。数値制御装置は、回転軸の回転を停止した後の最初の回転軸への位置決め指令がインクレメンタル指令であっても、特定レファレンス点復帰指令の場合は機械の運転を停止しない。故に数値制御装置は機械の動作を継続でき、且つＮＣプログラムの制限を少なくできる。
【０００９】
請求項３に係る発明の数値制御装置は、請求項２に記載の発明の構成に加え、前記先読み手段は、前記特定レファレンス点復帰指令を先読みして解釈する場合、前記現在位置から前記中間位置までの移動量を０°とする第一動作指令、前記現在位置からの移動量が０°である前記中間位置から前記レファレンス点までの移動量を、前記仮決め手段が仮決めする前記指令移動量とする第二動作指令として解釈し、前記実行手段は、前記第一動作指令に基づき、前記現在位置から移動しない第一動作実行手段と、前記第一動作実行手段が前記第一動作を実行した後で、前記第二動作に基づき、前記指令移動量から、前記位置検出手段が検出した現在の前記回転軸の位置を差し引いた第二差分を演算する第二演算手段と、前記第二演算手段が演算した前記第二差分に基づき、前記回転軸の位置決めを行う第二動作実行手段とを備えたことを特徴とする。数値制御装置は、レファレンス点復帰指令を第一動作と第二動作の二つの動作と解釈し、第一動作で回転軸を現在位置のまま移動せず、第二動作で移動する。故に数値制御装置はＮＣプログラム実行中、特定レファレンス点復帰指令が対象とする回転軸とは異なる他軸について、レファレンス点復帰指令のような位置決め指令が有る場合、他軸と回転軸の動作の整合性を取ることができる。
【００１０】
請求項４に係る発明の数値制御装置は、請求項１から３の何れか一つに記載の発明の構成に加え、前記回転軸はワークを保持し且つ連続回転可能な軸であることを特徴とする。故に数値制御装置は、ワークを保持し且つ連続回転可能な回転軸について、請求項１から３の何れか一つに記載の効果を得ることができる。
【００１１】
請求項５に係る発明の制御方法は、機械の回転軸の速度制御と位置制御をＮＣプログラムに従って制御する数値制御装置の制御方法において、前記ＮＣプログラムのブロック毎に指定された制御指令を順次先読みして解釈する先読み工程と、前記先読み工程で先読みして解釈した解釈情報を記憶装置に記憶する記憶工程と、前記記憶装置から前記解釈情報を読み出して実行する実行工程とを備え、前記先読み工程は、前記回転軸の回転を停止した後の前記回転軸の最初の位置決め指令が、移動座標系を絶対座標とするアブソリュート指令か、移動座標系を相対座標とするインクレメンタル指令かを判断する第一判断工程と、前記第一判断工程で前記位置決め指令は前記アブソリュート指令と判断した場合、前記位置決め指令に基づいて前記回転軸の移動量を指示する指令移動量を、予め設定した前記回転軸の基準位置からの移動量で仮決めする仮決め工程と、前記第一判断工程で前記位置決め指令は前記インクレメンタル指令と判断した場合、前記機械の運転を停止する停止指令を前記解釈情報として前記記憶装置に記憶する停止指令記憶工程とを備え、前記実行工程は、前記記憶装置から読み出した前記解釈情報に基づき、前記仮決め工程で仮決めした前記指令移動量から、前記回転軸の位置を検出する位置検出手段が検出した現在の前記回転軸の位置を差し引いた第一差分を演算する第一演算工程と、前記第一演算工程で演算した前記第一差分に基づき、前記回転軸の位置決めを行う第一位置決め実行工程と、前記記憶装置から読み出した前記解釈情報の中に前記停止指令が有る場合、前記機械を停止する停止工程とを備えたことを特徴とする。故に数値制御装置は上記制御方法を実行することで、請求項１に記載の効果を得ることができる。
【００１２】
尚、数値制御装置は、請求項１の停止手段の代わりに、前記第一判断手段が前記位置決め指令は前記インクレメンタル指令と判断した場合、アラームを出力する出力手段を備えてもよい。
【図面の簡単な説明】
【００１３】
【図１】工作機械１の斜視図。
【図２】工作機械１の正面図。
【図３】工作機械１の右側面図。
【図４】工作機械１と数値制御装置２０の電気的構成を示すブロック図。
【図５】先読み処理の流れ図。
【図６】図５の続きの流れ図。
【図７】実行処理の流れ図。
【図８】図７の続きの流れ図。
【図９】ＮＣプログラムＰ１の図。
【図１０】ＮＣプログラムＰ２の図。
【図１１】ＮＣプログラムＰ３の図。
【図１２】ＮＣプログラムＰ４の図。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面を参照して説明する。以下説明は図中に矢印で示す上下、左右、前後を使用する。図１に示す工作機械１の左右、前後、上下は、夫々Ｘ軸方向、Ｙ軸方向、Ｚ軸方向である。工作機械１は複合加工機である。図４に示す数値制御装置２０は、工作機械１の動作を制御することで、ワークに回転加工又は施削加工を選択的に施すことができる。
【００１５】
図１〜図３を参照し、工作機械１の構造を説明する。工作機械１は、基台２、Ｙ軸移動機構、運搬体１２、Ｘ軸移動機構、コラム５、Ｚ軸移動機構、主軸ヘッド７、主軸８、操作盤１０（図４参照）、数値制御装置２０（図４参照）、ワーク保持装置８０、自動工具交換装置（以下「ＡＴＣ」と呼ぶ）３０等を備える。
【００１６】
基台２はＹ軸方向に長い矩形箱状の鉄製部材であり、下部四隅に高さ調節可能な脚３を夫々備える。基台２は上面に台座部４、右側支持部１８、左側支持部１９を備える。台座部４は基台２上面後部側に設ける。右側支持部１８は基台２上面右前側、左側支持部１９は基台２上面左前側に配置する。右側支持部１８と左側支持部１９はワーク保持装置８０を下方から支持する。
【００１７】
Ｙ軸移動機構は台座部４上面に設け、運搬体１２をＹ軸方向に移動する。Ｙ軸移動機構は一対のＹ軸レール６１，６２、Ｙ軸ボールネジ６３（図２参照）、Ｙ軸モータ５２（図４参照）等を備える。Ｙ軸レール６１，６２は台座部４上面の左右方向両端部に沿って設ける。Ｙ軸ボールネジ６３はＹ軸レール６１，６２の間に設ける。運搬体１２はＹ軸レール６１，６２に沿って移動可能である。運搬体１２は例えば所定厚を有する金属製板部材であり、下面にナット（図示略）を備える。ナットはＹ軸ボールネジ６３に螺合する。Ｙ軸モータ５２がＹ軸ボールネジ６３を回転すると、運搬体１２はナットと共にＹ軸方向に移動する。
【００１８】
Ｘ軸移動機構は運搬体１２上面に設け、コラム５をＸ軸方向に移動する。Ｘ軸移動機構は一対のＸ軸レール７１，７２、Ｘ軸ボールネジ７３、Ｘ軸モータ５１等を備える。Ｘ軸レール７１，７２、Ｘ軸ボールネジ７３はＸ軸方向に延設する。Ｘ軸レール７１は運搬体１２上面後側、Ｘ軸レール７２は運搬体１２上面前側に配置する。Ｘ軸ボールネジ７３はＸ軸レール７１，７２の間に配置する。コラム５はＸ軸レール７１，７２に沿って移動可能である。コラム５は下面にナット（図示略）を備える。ナットはＸ軸ボールネジ７３に螺合する。Ｘ軸モータ５１がＸ軸ボールネジ７３を回転すると、コラム５はナットと共にＸ軸方向に移動する。コラム５は運搬体１２を介してＹ軸方向に移動する。即ちコラム５はＹ軸移動機構、Ｘ軸移動機構、運搬体１２により、Ｘ軸方向とＹ軸方向に移動可能である。
【００１９】
コラム５は右側面下部に保護カバー１６、左側面下部に保護カバー１７、背面下部にカバー１３を備える。保護カバー１６はコラム５右側面から右側において露出するＸ軸移動機構を覆う。保護カバー１７はコラム５左側面から左側において露出するＸ軸移動機構を覆う。保護カバー１６，１７はコラム５のＸ軸方向への移動に追従して移動する。カバー１３はコラム５の背面後方において露出するＹ軸移動機構を覆う。カバー１３はコラム５のＹ軸方向への移動に追従して伸縮する。保護カバー１６，１７、カバー１３はＸ軸移動機構及びＹ軸移動機構内に切粉と切削液が侵入するのを防止する。
【００２０】
Ｚ軸移動機構はコラム５前面に設け、主軸ヘッド７をＺ軸方向に移動する。Ｚ軸移動機構は一対のＺ軸レール（図示略）、Ｚ軸ボールネジ（図示略）、Ｚ軸モータ５３（図４参照）等を備える。Ｚ軸レールとＺ軸ボールネジはＺ軸方向に延設する。Ｚ軸ボールネジは一対のＺ軸レールの間に配置する。主軸ヘッド７はＺ軸レールに沿って移動可能である。主軸ヘッド７は背面にナット（図示略）を備える。ナットはＺ軸ボールネジに螺合する。Ｚ軸モータ５３がＺ軸ボールネジを回転すると、主軸ヘッド７はＺ軸方向に移動する。保護カバー２８は主軸ヘッド７上部後側に固定する。保護カバー２８は主軸ヘッド７と共に上下動することでコラム５前面を覆う。コラム５は前面にＺ軸シャッター２７を備える。Ｚ軸シャッター２７は主軸ヘッド７の上下動に従い伸縮することで、Ｚ軸移動機構内に切粉と切削液が侵入するのを防止する。
【００２１】
主軸８は主軸ヘッド７内に設ける。主軸８の工具装着部（図示略）は主軸ヘッド７下部に設ける。工具装着部はテーパ状の孔部である。工具装着部は工具Ｔを装着する。工具Ｔは少なくとも工具ＴＡ（図示略）、工具ＴＢ（図示略）の二種類である。工具ＴＡは回転加工用の工具、工具ＴＢは旋削加工用の工具である。以下、工具ＴＡ，ＴＢを総称する時は工具Ｔと称する。主軸モータ５４は主軸ヘッド７上面前側に設ける。主軸モータ５４は主軸８を回転する。
【００２２】
操作盤１０は工作機械１を覆うカバーの外壁に設け、入力部１１と表示部１４を備える。入力部１１は各種入力、指示、設定等を行う為の機器である。表示部１４は各種表示画面、設定画面、警告画面等を表示する機器である。数値制御装置２０は工作機械１が有する制御箱（図示略）内に格納し、工作機械１の動作を制御する。数値制御装置２０の電気的構成、動作等は後述する。
【００２３】
図１〜図３を参照し、ワーク保持装置８０の構造を説明する。ワーク保持装置８０は、右側固定部８８、左側固定部８９、治具固定テーブル８１、Ｃ軸モータ５６、回転テーブル８２、チルトモータ５７等を備える。右側固定部８８は右側支持部１８上面に固定する。左側固定部８９は左側支持部１９上面に固定する。治具固定テーブル８１は、テーブル部８１Ａ、右連結部８１Ｂ、左連結部８１Ｃを備える。Ｃ軸モータ５６は治具固定テーブル８１の下面側に設ける。回転テーブル８２は治具固定テーブル８１の略中央に設ける。回転テーブル８２はＣ軸モータ５６の回転軸に連結する。治具（図示略）は回転テーブル８２の上面に固定する。治具はワークを保持する。回転テーブル８２の軸線方向はテーブル部８１Ａ表面に対して直交する。故に治具は回転テーブル８２と共に回転可能である。
【００２４】
右連結部８１Ｂはテーブル部８１Ａから右上方向に延出し且つ右側固定部８８にＸ軸回りに回転可能に連結する。左連結部８１Ｃはテーブル部８１Ａから左上方向に延出し且つ左側固定部８９にＸ軸回りに回転可能に連結する。チルトモータ５７は右側固定部８８に固定してある。チルトモータ５７は治具固定テーブル８１をＸ軸回りに回転する。チルトモータ５７の回転軸は右連結部８１Ｂと連結する。治具に固定したワークは、Ｃ軸モータ５６の駆動により回転テーブル８２の軸回りで回転する。治具に固定したワークは、チルトモータ５７による治具固定テーブル８１の回転に関わらず、Ｃ軸モータ５６の駆動によりテーブル部８１Ａに対して直角な軸回りで回転する。
【００２５】
図１〜図３を参照し、ＡＴＣ３０の構造を説明する。ＡＴＣ３０は、工具マガジン３１、マガジン支持部材３２、マガジンモータ５５、駆動ギヤ３５等を備える。マガジン支持部材３２は楕円状の金属製板部材である。マガジン支持部材３２は、主軸ヘッド７とコラム５を内側に挿入した状態で、コラム５に取り付ける。工具マガジン３１は前方から後方に向かうに従って斜め上方に傾斜する。工具マガジン３１はマガジン支持部材３２の外周に沿って取り付ける。工具マガジン３１はチェーン３４、複数のポット３７を備える。チェーン３４はマガジン支持部材３２の外周に沿って移動可能に取り付ける。複数のポット３７はチェーン３４に夫々取り付ける。ポット３７は工具Ｔを保持可能である。ポット３７は例えばアーム状に形成し且つ揺動可能に取り付ける。
【００２６】
マガジンモータ５５はマガジン支持部材３２の上部に取り付ける。マガジンモータ５５の駆動軸はマガジン支持部材３２の上面に直交する。マガジンモータ５５の駆動軸は正逆何れの方向にも回転可能である。駆動ギヤ３５はマガジンモータ５５の駆動軸に取り付ける。駆動ギヤ３５はマガジンモータ５５の駆動軸と共に回転する。駆動ギヤ３５は工具マガジン３１のチェーン３４に噛合する。チェーン３４は駆動ギヤ３５の駆動によりマガジン支持部材３２の外周に沿って正逆何れかの方向に移動する。故にポット３７はチェーン３４と共にマガジン支持部材３２の外周に沿って移動する。工具マガジン３１の最下部に位置するポット３７の位置は工具交換位置である。工具交換位置は主軸８に最も近接する位置である。ＡＴＣ３０は工具交換位置にあるポット３７が保持する次工具を主軸８に装着する現工具と交換する。
【００２７】
工作機械１による加工方法を説明する。工作機械１は回転加工と旋削加工が可能である。回転加工は固定したワークに回転する工具ＴＡを当てて移動する加工方法であり、例えばドリル、タップ等の孔空け加工の際に用いる。工具ＴＡは主軸８に装着した状態で回転可能である。旋削加工は回転するワークに工具ＴＢを当てて移動する加工方法であり、例えばフェイシング加工等に用いる。工具ＴＢは主軸８に装着した状態では回転不能となる。また、工作機械１はチルトモータ５７によりワーク姿勢をＸ軸回りに調整できるので、ワークの所望の部位を加工できる。尚、工作機械１は主軸モータ５４とＣ軸モータ５６を同時に回転してワークを加工することもできる。
【００２８】
図４を参照し、数値制御装置２０と工作機械１の電気的構成を説明する。数値制御装置２０はＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、不揮発性メモリ２４、Ｉ／Ｏ基板２６等を備える。ＣＰＵ２１は工作機械１の動作を制御する。ＲＯＭ２２は後述する各種プログラムを記憶する。ＲＡＭ２３は各種処理実行中に発生する各種データ、後述する各種フラグ等の各種情報を記憶し、且つ先読みバッファ２３Ａを備える。先読みバッファ２３Ａは後述する先読み処理（図５，図６参照）で発生するＮＣプログラムの解釈情報を記憶する。不揮発性メモリ２４はＮＣプログラム等を記憶する。ＮＣプログラムは複数のブロックで構成し、各ブロックは各種ＮＣコマンドを含む。ＮＣコマンドは制御指令である。Ｉ／Ｏ基板２６は工作機械１と各種信号の入出力を行う回路基板である。
【００２９】
工作機械１は駆動回路４１〜４９を更に備える。駆動回路４１〜４９は夫々数値制御装置２０のＩ／Ｏ基板２６に接続する。駆動回路４１はＣＰＵ２１の指令信号に従いＸ軸モータ５１に駆動電流（パルス）を出力する。エンコーダ９１はＸ軸モータ５１とＩ／Ｏ基板２６に接続する。エンコーダ９１はＸ軸モータ５１の位置情報（モータの絶対位置情報）を検出し該検出信号をＩ／Ｏ基板２６に入力する。駆動回路４２はＣＰＵ２１の指令信号に従いＹ軸モータ５２に駆動電流を出力する。エンコーダ９２はＹ軸モータ５２とＩ／Ｏ基板２６に接続する。エンコーダ９２はＹ軸モータ５２の位置情報を検出し該検出信号をＩ／Ｏ基板２６に入力する。
【００３０】
駆動回路４３はＣＰＵ２１の指令信号に従いＺ軸モータ５３に駆動電流を出力する。エンコーダ９３はＺ軸モータ５３とＩ／Ｏ基板２６に接続する。エンコーダ９３はＺ軸モータ５３の位置情報を検出し該検出信号をＩ／Ｏ基板２６に入力する。駆動回路４４はＣＰＵ２１の指令信号に従い主軸モータ５４に駆動電流を出力する。エンコーダ９４は主軸モータ５４とＩ／Ｏ基板２６に接続する。エンコーダ９４は主軸モータ５４の位置情報を検出し該検出信号をＩ／Ｏ基板２６に入力する。駆動回路４５はＣＰＵ２１の指令信号に従いマガジンモータ５５に駆動電流を出力する。エンコーダ９５はマガジンモータ５５とＩ／Ｏ基板２６に接続する。エンコーダ９５はマガジンモータ５５の位置情報を検出し該検出信号をＩ／Ｏ基板２６に入力する。
【００３１】
駆動回路４６はＣＰＵ２１の指令信号に従いＣ軸モータ５６に駆動電流を出力する。エンコーダ９６はＣ軸モータ５６とＩ／Ｏ基板２６に接続する。エンコーダ９６はＣ軸モータ５６の位置情報を検出し該検出信号をＩ／Ｏ基板２６に入力する。駆動回路４７はＣＰＵ２１の指令信号に従いチルトモータ５７に駆動電流を出力する。エンコーダ９７はチルトモータ５７とＩ／Ｏ基板２６に接続する。エンコーダ９７はチルトモータ５７の位置情報を検出し該検出信号をＩ／Ｏ基板２６に入力する。駆動回路４８はＣＰＵ２１の指令信号に従いクランプ装置５８に駆動電流を出力する。駆動回路４９はＣＰＵ２１の指令信号に従い表示部１４に駆動電流を出力する。入力部１１はＩ／Ｏ基板２６に接続する。
【００３２】
Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５は何れもサーボモータである。エンコーダ９１〜９７は一般的なアブソリュートエンコーダであり、回転位置の絶対位置を検出して出力する位置センサである。駆動回路４１〜４７はエンコーダ９１〜９７からフィードバック信号を受け、位置と速度のフィードバック制御を行う。駆動回路４１〜４９は例えばＦＰＧＡ回路でもよい。
【００３３】
図５〜図１１を参照し、ＣＰＵ２１が実行する制御処理を説明する。制御処理はＮＣプログラムを１ブロック毎に解釈し、該解釈結果に基づき工作機械１の各モータ５１〜５７等の駆動制御を行う。制御処理は先読み処理と実行処理で構成する。ＣＰＵ２１は先読み処理と実行処理を非同期で夫々実行する。本実施形態は四つのＮＣプログラムＰ１〜Ｐ３を夫々実行する時を例に説明する。
【００３４】
−第一実施例−
第一実施例は、図９のＮＣプログラムＰ１を先読みして実行する時を想定する。ＮＣプログラムＰ１は、速度制御から位置制御に切り替える為の回転テーブル８２停止後の最初の回転テーブル８２の位置決め指令が、アブソリュート指令である場合の一例である。Ｎ１ブロックはＭ０３Ｓ５０００である。Ｍ０３は回転テーブル８２を回転するＣ軸回転指令、Ｓ５０００は５０００ｒｐｍで回転する速度指令である。Ｎ２ブロックはＭ０５である。Ｍ０５は回転テーブル８２を停止するＣ軸停止指令である。Ｎ３ブロックはＧ９０Ｇ００Ｃ１００である。Ｇ９０は移動座標系を絶対座標とするアブソリュート指令、Ｇ００は位置決め指令、Ｃ１００は回転テーブル８２の目標位置を１００°にする指令である。Ｍ３０はプログラム終了指令である。
【００３５】
図５，図６を参照し、先読み処理を説明する。ＣＰＵ２１は作業者が操作盤１０の入力部１１にてＮＣプログラムＰ１を選択し実行を入力した時、ＲＯＭ２２に記憶する先読みプログラムを読み出して本処理を実行する。
【００３６】
図５に示す如く、先ずＣＰＵ２１は先読みバッファ２３Ａ（図４参照）に空き領域が有るか否か判断する（Ｓ１）。先読みバッファ２３Ａに空き領域が無い時（Ｓ１：ＮＯ）、先読みバッファ２３Ａに解釈情報を記憶できないので、ＣＰＵ２１はＳ１に戻って待機する。先読みバッファ２３Ａに空き領域が有る時（Ｓ１：ＹＥＳ）、ＣＰＵ２１はＮＣプログラムＰ１を不揮発性メモリ２４から読み出し、１ブロック解釈する（Ｓ２）。ＣＰＵ２１は解釈したブロックの制御指令がＭ３０か否か判断する（Ｓ３）。
【００３７】
Ｎ１ブロックはＭ３０ではないので（Ｓ３：ＮＯ）、ＣＰＵ２１は解釈したブロックの制御指令が回転テーブル８２の回転軸であるＣ軸以外の軸への指令か否か判断する（Ｓ４）。Ｎ１ブロックの制御指令はＣ軸の指令であるので（Ｓ４：ＮＯ）、ＣＰＵ２１は制御指令がＣ軸回転指令か否か判断する（Ｓ９）。制御指令はＣ軸回転指令であるので（Ｓ９：ＹＥＳ）、ＣＰＵ２１は回転テーブル８２が回転状態であることを、第一状態フラグでＲＡＭ２３に記憶する（Ｓ１０）。第一状態フラグは、回転テーブル８２が回転状態である時は０、回転テーブル８２の位置を確定できない不定状態である時は１、回転テーブル８２の位置を確定できる確定状態である時は２となる。尚、第一状態フラグの数値はこれに限定されない。回転テーブル８２は回転状態であるので、ＣＰＵ２１は第一状態フラグとして０をＲＡＭ２３に記憶する（Ｓ１０）。
【００３８】
次いで、ＣＰＵ２１は速度演算処理を実行する（Ｓ５）。速度演算処理は、例えば回転制御又は位置制御が複数のブロックで連続するような時、該複数のブロックを通じて最適な回転動作を実行する為に、加速度、速度、終了速度等について、ブロック毎に演算し直す処理である。速度演算処理は例えば、第一処理、第二処理、第三処理を有する。第一処理は、先読みした複数のブロックの各終了点における終了速度を、所定条件に基づいて演算する。第二処理は、各ブロックの終了速度が加速度条件を満足するように演算し直す。第三処理は、指定した加速度、速度、終了速度の条件を満足する補間演算を行う。
【００３９】
ＣＰＵ２１は１ブロック内の全軸の指令について移動軸の種別判断が完了したか否か判断する（Ｓ６）。１ブロック内に未完了の軸指令が有る時（Ｓ６：ＮＯ）、ＣＰＵ２１はＳ４に戻って未完了の軸指令について、移動軸の種別判断を行う。全軸の指令について判断が完了した時（Ｓ６：ＹＥＳ）、ＣＰＵ２１は演算が完了したか否か判断する（Ｓ７）。回転テーブル８２が回転状態である時、回転制御が次ブロック以降連続する可能性がある。故に再計算の必要があることから演算は完了していないので（Ｓ７：ＮＯ）、ＣＰＵ２１はＳ２に戻り次ブロックを解釈する。例えば解釈した次ブロックもＣ軸回転指令の時（Ｓ９：ＹＥＳ）、第一状態フラグは０のままで（Ｓ１０）、ＣＰＵ２１は既に先読みしたブロックと合わせて速度演算処理を再度実行する（Ｓ５）。
【００４０】
ＮＣプログラムＰ１のＮ２ブロックの制御指令はＣ軸回転指令ではないので（Ｓ９：ＮＯ）、図６に示す如く、ＣＰＵ２１は制御指令がＣ軸停止指令で且つ第一状態フラグは０か否か判断する（Ｓ１２）。Ｎ２ブロックはＣ軸停止指令で且つ第一状態フラグは０であるので（Ｓ１２：ＹＥＳ）、ＣＰＵ２１は第一状態フラグを１に更新し（Ｓ１３）、回転テーブル８２は不定状態であることを記憶する。図５に戻り、ＣＰＵ２１は速度演算処理を実行する（Ｓ５）。Ｎ２ブロック内の全軸の指令の種別判断が完了したので（Ｓ６：ＹＥＳ）、ＣＰＵ２１は演算が完了したか否か判断する（Ｓ７）。回転テーブル８２は回転状態から停止するので、演算は完了する（Ｓ７：ＹＥＳ）。故にＣＰＵ２１は解釈したブロックの解釈情報を先読みバッファ２９に記憶する（Ｓ８）。ＣＰＵ２１はＳ１に戻り、先読みバッファ２３Ａに空き領域があれば（Ｓ１：ＹＥＳ）、次ブロックを解釈する（Ｓ２）。
【００４１】
Ｎ３ブロックの制御指令は回転テーブル８２を１００°の位置に位置決めするＣ軸位置決め指令であるので（Ｓ４：ＮＯ、Ｓ９：ＮＯ、図６のＳ１２：ＮＯ）、図６に示す如く、ＣＰＵ２１は制御指令がＣ軸位置決め指令で且つ第一状態フラグは１か否か判断する（Ｓ１４）。Ｎ３ブロックはＣ軸位置決め指令で且つ第一状態フラグは１であるので（Ｓ１４：ＹＥＳ）、ＣＰＵ２１は回転テーブル８２の位置を特定できない。そこで、ＣＰＵ２１はＣ軸位置決め指令がアブソリュート指令か否か判断する（Ｓ１５）。Ｎ３ブロックのＧ９０はアブソリュート指令であるので（Ｓ１５：ＹＥＳ）、ＣＰＵ２１はＣ軸基準点から目的位置迄の移動量で回転テーブル８２の指令移動量を仮決めする（Ｓ１６）。Ｃ軸基準点は予め設定し、本実施形態のＣ軸基準点は０°である。目的位置は１００°である。故にＣＰＵ２１は回転テーブル８２の指令移動量を、Ｃ軸基準点である０°から１００°を差し引いた１００°に仮決めする。Ｃ軸基準点は０°以外の値でもよい。ＣＰＵ２１は第一状態フラグを２に更新し（Ｓ１７）、回転テーブル８２の位置が確定状態であることを記憶する。故にＣＰＵ２１は回転テーブル８２の位置を特定できなくても、ＮＣプログラムＰ１の先読みを停止することなく解釈を継続できる。
【００４２】
図５に戻り、ＣＰＵ２１は速度演算処理を行う（Ｓ５）。Ｎ３ブロック内の全軸の指令の種別判断が完了したので（Ｓ６：ＹＥＳ）、ＣＰＵ２１は演算が完了したか否か判断する（Ｓ７）。先読みしたブロックと合わせて演算が完了した時（Ｓ７：ＹＥＳ）、ＣＰＵ２１は解釈情報を先読みバッファ２９に記憶する（Ｓ８）。Ｎ３ブロックの解釈情報は、Ｃ軸基準点からの移動量で仮決めした指令移動量（１００°）を含む。ＣＰＵ２１はＳ１に戻り、先読みバッファ２３Ａに空き領域があれば（Ｓ１：ＹＥＳ）、次ブロックを解釈する（Ｓ２）。
【００４３】
尚、解釈したブロックの制御指令が、例えば、Ｘ軸、Ｙ軸、Ｚ軸等のＣ軸以外の他軸への指令である時（Ｓ４：ＹＥＳ）、ＣＰＵ２１は速度演算処理を実行し（Ｓ５）、演算が完了した時（Ｓ７：ＹＥＳ）、解釈情報を先読みバッファ２３Ａに記憶する（Ｓ８）。ＣＰＵ２１は解釈したブロックがＭ３０の時（Ｓ３：ＹＥＳ）、先読み処理を終了する。
【００４４】
図７，図８を参照し、実行処理を実行する。ＣＰＵ２１は先読み処理の実行を開始した時、ＲＯＭ２２に記憶する実行プログラムを読み出し、先読み処理とは非同期で本処理を実行する。
【００４５】
図７に示す如く、先ずＣＰＵ２１は先読みバッファ２９に解釈情報が有るか否か判断する（Ｓ２１）。先読みバッファ２９に解釈情報がない時（Ｓ２１：ＮＯ）、ＣＰＵ２１はＳ２１に戻って待機する。先読みバッファ２９に解釈情報が有る時（Ｓ２１：ＹＥＳ）、ＣＰＵ２１は解釈情報を先読みバッファ２９から取得する（Ｓ２２）。ＣＰＵ２１は解釈情報が後述するアラーム指令か否か判断する（Ｓ２３）。アラーム指令は、表示部１４にアラームを出力し且つ工作機械１の運転停止を指示する指令である。解釈情報がアラーム指令では無い時（Ｓ２３：ＮＯ）、ＣＰＵ２１は解釈情報がＭ３０か否か判断する（Ｓ２６）。解釈情報がＭ３０でない時（Ｓ２６：ＮＯ）、ＣＰＵ２１は解釈情報がＣ軸以外の軸への指令か否か判断する（Ｓ２７）。
【００４６】
Ｎ１ブロックの解釈情報はＣ軸の指令であるので（Ｓ２７：ＮＯ）、ＣＰＵ２１は解釈情報がＣ軸回転指令か否か判断する（Ｓ３１）。Ｎ１ブロックはＣ軸回転指令であるので（Ｓ３１：ＹＥＳ）、ＣＰＵ２１は回転テーブル８２が回転状態であることを、第二状態フラグでＲＡＭ２３に記憶する（Ｓ３２）。第二状態フラグは、第一状態フラグと同様に、回転テーブル８２が回転状態である時は０、回転テーブル８２の位置を確定できない不定状態である時は１、回転テーブル８２の位置を確定できる確定状態である時は２となる。尚、第二状態フラグの数値はこれに限定されない。回転テーブル８２は回転状態であるので、ＣＰＵ２１は第二状態フラグとして０をＲＡＭ２３に記憶する（Ｓ３２）。
【００４７】
次いで、ＣＰＵ２１は解釈情報に基づき、指令軸の駆動回路に実行要求を行う（Ｓ２８）。Ｎ１ブロックの解釈情報は回転テーブル８２を５０００ｒｐｍで回転する速度指令である。ＣＰＵ２１は駆動回路４６（図４参照）に制御信号を出力する。駆動回路４６は制御信号に基づきＣ軸モータ５６に駆動電流を出力する。故にＣ軸モータ５６は５０００ｒｐｍで回転する。
【００４８】
ＣＰＵ２１は１ブロック内の全軸の解釈情報について、駆動回路への実行要求が完了したか否か判断する（Ｓ２９）。実行要求未完了の解釈情報が有る時（Ｓ２９：ＮＯ）、ＣＰＵ２１はＳ２７に戻って未完了の解釈情報について実行要求を行う。全軸の解釈情報について実行要求が完了した時（Ｓ２９：ＹＥＳ）、ＣＰＵ２１は実行要求した動作が完了したか否か判断する（Ｓ３０）。動作が完了する迄（Ｓ３０：ＮＯ）、ＣＰＵ２１はＳ３０に戻って待機する。動作が完了した時（Ｓ３０：ＹＥＳ）、ＣＰＵ２１はＳ２１に戻り、先読みバッファ２３Ａに解釈情報があれば（Ｓ２１：ＹＥＳ）、引き続き上記処理を繰り返す。
【００４９】
次いで、ＣＰＵ２１は先読みバッファ２３ＡからＮ２ブロックの解釈情報を取得する（Ｓ２２）。Ｎ２ブロックの解釈情報はＣ軸停止指令であるので（Ｓ２３：ＮＯ、Ｓ２６：ＮＯ、Ｓ２７：ＮＯ、Ｓ３１：ＮＯ）、図８に示す如く、ＣＰＵ２１は解釈情報がＣ軸停止指令で且つ第二状態フラグは０か否か判断する（Ｓ３３）。Ｎ２ブロックはＣ軸停止指令で且つ第二状態フラグは０であるので（Ｓ３３：ＹＥＳ）、ＣＰＵ２１は第二状態フラグを１に更新し（Ｓ３４）、回転テーブル８２は不定状態であることを記憶する。図７に戻り、ＣＰＵ２１は解釈情報に基づき、指令軸の駆動回路に実行要求を行う（Ｓ２８）。Ｎ２ブロックの解釈情報は回転テーブル８２の回転を停止するＣ軸停止指令であるので、ＣＰＵ２１は駆動回路４６（図４参照）に制御信号を出力する。故にＣ軸モータ５６は回転を停止する。
【００５０】
Ｎ２ブロック内の全軸の解釈情報について実行要求が完了し（Ｓ２９：ＹＥＳ）、更に実行要求した動作が完了した時（Ｓ３０：ＹＥＳ）、ＣＰＵ２１はＳ２１に戻り、先読みバッファ２３Ａに解釈情報があれば（Ｓ２１：ＹＥＳ）、引き続き上記処理を繰り返す。
【００５１】
次いで、ＣＰＵ２１は先読みバッファ２３ＡからＮ３ブロックの解釈情報を取得する（Ｓ２２）。Ｎ３ブロックの解釈情報は回転テーブル８２を１００°の位置に位置決めするＣ軸位置決め指令であるので（Ｓ２３：ＮＯ、Ｓ２６：ＮＯ、Ｓ２７：ＮＯ、Ｓ３１：ＮＯ、図８のＳ３３：ＮＯ）、ＣＰＵ２１は解釈情報がＣ軸位置決め指令で且つ第二状態フラグは１か否か判断する（Ｓ３５）。Ｎ３ブロックの解釈情報はＣ軸位置決め指令で且つ第二状態フラグは１であるので（Ｓ３５：ＹＥＳ）、ＣＰＵ２１は回転テーブル８２の位置を特定できない。そこで、ＣＰＵ２１は、Ｃ軸位置決め指令がインクレメンタル指令で且つ特定レファレンス点復帰指令か否か判断する（Ｓ３６）。特定レファレンス点復帰指令については後述する。Ｎ３ブロックのＣ軸位置決め指令はＧ９１でアブソリュート指令であるので（Ｓ３６：ＮＯ）、ＣＰＵ２１は、回転テーブル８２の現在位置をエンコーダ９６（図４参照）からのフィードバック信号で検出する（Ｓ３９）。ＣＰＵ２１は、先読み処理で仮決めした回転テーブル８２の指令移動量（１００°）から、検出した回転テーブル８２の現在位置を差し引くことにより、Ｃ軸移動量を演算する（Ｓ４０）。
【００５２】
回転テーブル８２の現在位置が２０°であった時、ＣＰＵ２１は１００°から２０°を差し引いた８０°（本発明の第一差分に相当）をＣ軸移動量として演算する。演算したＣ軸移動量はＲＡＭ２３に記憶する。更にＣＰＵ２１は近回り判別処理を実行する（Ｓ４１）。近回り判別処理は、現在位置である２０°から目的位置である１００°までの回転テーブル８２の移動量が小さい方の回転方向（正転か反転の何れか）を判別する処理である。判別結果である回転方向はＲＡＭ２３に記憶する。ＣＰＵ２１は第二状態フラグを２に更新し（Ｓ４２）、回転テーブル８２の位置が確定状態であることを記憶する。
【００５３】
図７に戻り、ＣＰＵ２１は解釈情報に基づき、指令軸の駆動回路に実行要求を行う（Ｓ２８）。Ｎ３ブロックの解釈情報はＣ軸位置決め指令であるので、ＣＰＵ２１はＲＡＭ２３に記憶するＣ軸移動量（８０°）と回転方向に従い、駆動回路４６に制御信号を出力する。Ｃ軸モータ５６は駆動し、回転テーブル８２は現在位置（２０°）から近回り処理で判別した回転方向に８０°回転し、１００°の位置で位置決めする。故にＣＰＵ２１は回転テーブル８２を少ない移動量で目的位置に速やかに移動できる。
【００５４】
Ｎ３ブロック内の全軸の解釈情報について実行要求が完了し（Ｓ２９：ＹＥＳ）、実行要求した動作が全て完了した時（Ｓ３０：ＹＥＳ）、ＣＰＵ２１はＳ２１に戻り、先読みバッファ２３Ａに解釈情報があれば（Ｓ２１：ＹＥＳ）、引き続き上記処理を繰り返す。尚、先読みバッファ２３Ａから取得した解釈情報が、Ｘ軸、Ｙ軸、Ｚ軸等のＣ軸以外の他軸への指令である時（Ｓ２７：ＹＥＳ）、該当する軸の駆動回路に実行要求を行う（Ｓ２８）。解釈情報がＭ３０であった時（Ｓ２６：ＹＥＳ）、ＣＰＵ２１は実行処理を終了する。
【００５５】
−第二実施例−
第二実施例は、図１０のＮＣプログラムＰ２を先読みして実行する時を想定する。ＮＣプログラムＰ２は、回転テーブル８２を速度制御から位置制御に切り替える為の回転テーブル８２停止後の最初の回転テーブル８２の位置決め指令がインクレメンタル指令である場合の一例である。ＮＣプログラムＰ１（図９参照）とＰ２の違いは、Ｎ３ブロックの位置決め指令が、ＮＣプログラムＰ１ではＧ９０（アブソリュート指令）、ＮＣプログラムＰ２ではＧ９１（インクレメンタル指令）である点である。
【００５６】
ＮＣプログラムＰ２は、Ｎ２ブロックで回転テーブル８２を停止し、Ｎ３ブロックで該停止位置より＋１００°回転することを期待する。しかしＮ２ブロックで回転テーブル８２の停止位置は不確定である。不確定な停止位置から＋１００°回転するという指令は間違いである。本実施形態は、先読み処理と実行処理において、回転テーブル８２停止後の最初の回転テーブル８２の位置決め指令がインクレメンタル指令だった時はアラームを表示部１４に出力し、工作機械１の運転を停止するように制御する。それ故、作業者はＮＣプログラムＰ２が間違ったプログラミングであることに気付くことができる。
【００５７】
図５，図６を参照し、先読み処理を説明する。第一実施例で説明した先読み処理と同じ処理については説明を省略又は簡略化して説明する。図５に示す如く、先ず先読みバッファ２９（図４参照）に空き領域が有る時（Ｓ１：ＹＥＳ）、ＣＰＵ２１はＮＣプログラムＰ２を不揮発性メモリ２４から読み出し、１ブロック解釈する（Ｓ２）。Ｎ１ブロックとＮ２ブロックは第一実施例と同じであるので説明を省略する。Ｎ２ブロックの解釈終了後、第一状態フラグは１である（図６のＳ１３）。
【００５８】
ＣＰＵ２１はＮ３ブロックを解釈する（Ｓ２）。Ｎ３ブロックの制御指令は回転テーブル８２を１００°の位置に位置決めするＣ軸位置決め指令であるので（Ｓ３：ＮＯ、Ｓ４：ＮＯ、Ｓ９：ＮＯ、図６のＳ１２：ＮＯ）、ＣＰＵ２１は制御指令がＣ軸位置決め指令で第一状態フラグは１か否か判断する（Ｓ１４）。Ｎ３ブロックの制御指令はＣ軸位置決め指令で且つ第一状態フラグは１であるので（Ｓ１４：ＹＥＳ）、ＣＰＵ２１は回転テーブル８２の位置を特定できない。故にＣＰＵ２１はＣ軸位置決め指令がアブソリュート指令か否か判断する（Ｓ１５）。
【００５９】
ここで、Ｎ３ブロックのＧ９１はインクレメンタル指令であるので（Ｓ１５：ＮＯ）、ＣＰＵ２１はＣ軸位置決め指令が後述する特定レファレンス点復帰指令か否か判断する（Ｓ１８）。特定レファレンス点復帰指令はＧ２８で指定するが、Ｎ３ブロックはＧ００で指定しているので（Ｓ１８：ＮＯ）、Ｃ軸位置決め指令は通常のインクレメンタル指令である。即ち、回転テーブル８２停止後の最初の回転テーブル８２の位置決め指令がインクレメンタル指令であるので、上記の通り、ＮＣプログラムＰ２は間違ってプログラミングされた可能性が高い。間違いのあるＮＣプログラムＰ２をＣＰＵ２１が実行した時、工作機械１は作業者の意図と異なる動きをする可能性が高い。故にＣＰＵ２１は、作業者にＮＣプログラムＰ２の異常を報知する為に、アラーム指令をＮ３ブロックの解釈情報として、先読みバッファ２３Ａに記憶し（Ｓ１９）、先読み処理を終了する。
【００６０】
図７を参照し、実行処理を説明する。先ず、先読みバッファ２９に解釈情報が有る時（Ｓ２１：ＹＥＳ）、ＣＰＵ２１は解釈情報を先読みバッファ２９から取得する（Ｓ２２）。Ｎ１、Ｎ２ブロックの解釈情報は、第一実施例と同じである。それ故、ＣＰＵ２１は、Ｎ１ブロックの解釈情報に従い回転テーブル８２を５０００ｒｐｍで回転し、Ｎ２ブロックの解釈情報に従い回転テーブル８２を停止する。
【００６１】
ＣＰＵ２１はＮ３ブロックの解釈情報を先読みバッファ２３Ａから取得し（Ｓ２２）、アラーム指令か否か判断する（Ｓ２３）。Ｎ３ブロックの解釈情報はアラーム指令であるので（Ｓ２３：ＹＥＳ）、ＣＰＵ２１はアラームを表示部１４に出力し（Ｓ２４）、更に工作機械１の運転を停止する（Ｓ２５）。故に作業者はＮＣプログラムＰ２が間違ってプログラミングされていることに気付くことができる。また、工作機械１は運転を停止するので、作業者の意図と異なった動きをすることを防止できる。ＣＰＵ２１は実行処理を終了する。
【００６２】
−第三実施例−
第三実施例は、図１１のＮＣプログラムＰ３を先読みして実行する時を想定する。ＮＣプログラムＰ３は、回転テーブル８２を速度制御から位置制御に切り替える為の回転テーブル８２停止後の最初の回転テーブル８２の位置決め指令が、中間点への移動の無いレファレンス点復帰指令である場合の一例である。
【００６３】
レファレンス点復帰指令を説明する。レファレンス点復帰指令とは、指令した座標点（中間点）への移動後、予め登録したレファレンス点への移動を行うという二動作からなる位置決め指令であり、本実施形態ではＧ２８で指定する。レファレンス点復帰動作は、第一動作と第二動作で構成する。第一動作は現在位置から中間点への移動、第二動作は中間点からレファレンス点迄の移動である。例えばアブソリュートモードでＧ２８Ｘ１０．と指令した時、Ｘ軸は１０．に早送りで移動した後（第一動作）、レファレンス点に早送りで移動する（第二動作）。インクレメンタルモードでＧ２８Ｙ２０．と指令した時、Ｙ軸は現在位置から２０．に早送りで移動した後（第一動作）、レファレンス点に早送りで移動する（第二動作）。レファレンス点復帰指令は、Ｚ軸、Ｃ軸等にも同様に使用できる。
【００６４】
ここで、レファレンス点復帰指令をインクレメンタルモードで０．を指令した時、現在位置は中間点となり、現在位置から一動作でレファレンス点への移動を行うという意味になる。本実施形態は、中間点に０．を指令するレファレンス点復帰指令を、特定レファレンス点復帰指令と呼ぶ。インクレメンタルモードの特定レファレンス点復帰指令は、例えば部材同士の干渉防止の為の退避動作、ＮＣプログラム先頭での初期化処理としても使用できる。特定レファレンス点復帰指令は、Ｘ軸、Ｙ軸、Ｚ軸の他、Ｃ軸にも同様に使用できる。
【００６５】
図１１に示す如く、ＮＣプログラムＰ３では、Ｎ１ブロックはＭ１４１である。Ｍ１４１は回転テーブル８２の速度制御から位置制御への切換え指令で、且つ回転テーブル８２の回転を停止する停止指令である。Ｎ２ブロックはＧ９１Ｇ２８Ｃ０．であるので、インクレメンタルモードでの回転テーブル８２の特定レファレンス点復帰指令である。尚、第三実施例は回転テーブル８２のレファレンス点を１００°に設定した時を想定する。
【００６６】
回転テーブル８２停止後の最初のＣ軸位置決め指令がインクレメンタル指令である時、第二実施例では、ＣＰＵ２１はアラームを出力し、工作機械１の運転を停止する。そこで、制御指令がインクレメンタル指令で且つ特定レファレンス点復帰指令である時、上記の退避動作、又はＮＣプログラム先頭での初期化処理等を可能とする為に、ＣＰＵ２１は先読み処理と実行処理において、アラームを出力せずに運転を継続するように制御する。
【００６７】
図５，図６を参照し、先読み処理を説明する。第一実施例で説明した先読み処理と同じ処理については説明を省略又は簡略化して説明する。図５に示す如く、先読みバッファ２３Ａに空き領域が有る時（Ｓ１：ＹＥＳ）、ＣＰＵ２１はＮＣプログラムＰ３を不揮発性メモリ２４から読み出し、１ブロック解釈する（Ｓ２）。Ｎ１ブロックのＭ１４１は回転テーブル８２の速度制御から位置制御への切換え指令で且つＣ軸停止指令であるので（Ｓ３：ＮＯ、Ｓ４：ＮＯ、Ｓ９：ＮＯ）、図６に示す如く、ＣＰＵ２１は制御指令がＣ軸停止指令で且つ第一状態フラグは０か否か判断する（Ｓ１２）。Ｎ１ブロックはＣ軸停止指令であり、第一状態フラグは０であるので（Ｓ１２：ＹＥＳ）、ＣＰＵ２１は第一状態フラグを１に更新し（Ｓ１３）、回転テーブル８２は不定状態であることを記憶する。
【００６８】
図５に戻り、ＣＰＵ２１は速度演算処理を実行する（Ｓ５）。Ｎ２ブロック内の全軸指令の判断が完了し（Ｓ６：ＹＥＳ）、回転テーブル８２の停止で演算は完了したので（Ｓ７：ＹＥＳ）、ＣＰＵ２１は解釈したブロックの解釈情報を先読みバッファ２３Ａに記憶する（Ｓ８）。ＣＰＵ２１はＳ１に戻り、先読みバッファ２３Ａに空き領域があれば（Ｓ１：ＹＥＳ）、次ブロックを解釈する（Ｓ２）。
【００６９】
次いで、Ｎ２ブロックの制御指令は、回転テーブル８２の特定レファレンス点復帰指令であるので（Ｓ３：ＮＯ、Ｓ４：ＮＯ、Ｓ９：ＮＯ、図６のＳ１２：ＮＯ）、ＣＰＵ２１は制御指令がＣ軸位置決め指令で且つ第一状態フラグは１か否か判断する（Ｓ１４）。特定レファレンス点復帰指令は位置決め指令で且つ第一状態フラグは１であるので（Ｓ１４：ＹＥＳ）、ＣＰＵ２１は回転テーブル８２の特定レファレンス点復帰指令はアブソリュート指令か否か判断する（Ｓ１５）。Ｎ２ブロックのＧ９１はインクレメンタル指令であるので（Ｓ１５：ＮＯ）、ＣＰＵ２１は制御指令が特定レファレンス点復帰指令か否か判断する（Ｓ１８）。
【００７０】
ここで、レファレンス点復帰指令が特定レファレンス点復帰指令でない時（Ｓ１８：ＮＯ）、インクレメンタルモードであるので、ＣＰＵ２１は回転テーブル８２の停止位置が特定できず、中間点を算出できない。それ故、ＮＣプログラムは間違ってプログラミングされている可能性が高いので、ＣＰＵ２１はアラーム指令をブロックの解釈情報として先読みバッファ２３Ａに記憶し（Ｓ１９）、先読み処理を終了する。
【００７１】
これに対し、ＮＣプログラムＰ３のＮ２ブロックは、インクレメンタルモードでの特定レファレンス点復帰指令であるので（Ｓ１８：ＹＥＳ）、ＣＰＵ２１は、レファレンス点復帰指令の第一動作指令の指令移動量として、Ｃ軸基準点から目的位置迄の移動量を０°に仮決めし、第二動作指令の指令移動量として、０°からレファレンス点（１００°）までの移動量で仮決めする（Ｓ１６）。ＣＰＵ２１は第一状態フラグを２に更新し（Ｓ１７）、回転テーブル８２の位置が確定状態であることを記憶する。
【００７２】
図５に戻り、ＣＰＵ２１は速度演算処理を行う（Ｓ５）。Ｎ２ブロック内の全軸の指令の種別判断が完了し（Ｓ６：ＹＥＳ）、先読みしたブロックと合わせて演算を完了した時（Ｓ７：ＹＥＳ）、ＣＰＵ２１は解釈情報を先読みバッファ２９に記憶する（Ｓ８）。Ｎ２ブロックの解釈情報は、レファレンス点復帰指令の第一動作指令の指令移動量（０°）と第二動作指令の指令移動量（１００°）を含む。ＣＰＵ２１はＳ１に戻り、先読みバッファ２３Ａに空き領域があれば（Ｓ１：ＹＥＳ）、次ブロックを解釈する（Ｓ２）。ＣＰＵ２１は解釈したブロックがＭ３０の時（Ｓ３：ＹＥＳ）、先読み処理を終了する。
【００７３】
図７，図８を参照し、実行処理を説明する。図７に示す如く、先ず先読みバッファ２９に解釈情報が有る時（Ｓ２１：ＹＥＳ）、ＣＰＵ２１は解釈情報を先読みバッファ２９から取得する（Ｓ２２）。Ｎ１ブロックの解釈情報は、回転テーブル８２の速度制御から位置制御への切替え指令で且つＣ軸停止指令であるので（Ｓ２３：ＮＯ、Ｓ２６：ＮＯ、Ｓ２７：ＮＯ、Ｓ３１：ＮＯ）、図８に示す如く、ＣＰＵ２１は解釈情報がＣ軸停止指令で且つ第二状態フラグは０か否か判断する（Ｓ３３）。Ｎ１ブロックはＣ軸停止指令であり、第二状態フラグは０であるので（Ｓ３３：ＹＥＳ）、ＣＰＵ２１は第二状態フラグを１に更新し（Ｓ３４）、回転テーブル８２は不定状態であることを記憶する。
【００７４】
図７に戻り、ＣＰＵ２１は解釈情報に基づき、指令軸の駆動回路に実行要求を行う（Ｓ２８）。Ｎ１ブロックの解釈情報は、速度制御から位置制御への切換え指令で、且つ回転テーブル８２の回転を停止するＣ軸停止指令であるので、ＣＰＵ２１は駆動回路４６（図４参照）に制御信号を出力する。故にＣ軸モータ５６は回転を停止し、速度制御から位置制御に切り替わる。Ｎ１ブロック内の全軸の解釈情報について実行要求が完了し（Ｓ２９：ＹＥＳ）、実行要求した動作が完了した時（Ｓ３０：ＹＥＳ）、ＣＰＵ２１はＳ２１に戻り、先読みバッファ２３Ａに解釈情報があれば（Ｓ２１：ＹＥＳ）、引き続き上記処理を繰り返す。
【００７５】
次いで、ＣＰＵ２１は先読みバッファ２３ＡからＮ２ブロックの解釈情報を取得する（Ｓ２２）。Ｎ２ブロックの解釈情報は、回転テーブル８２の特定レファレンス点復帰指令であるので（Ｓ２３：ＮＯ、Ｓ２６：ＮＯ、Ｓ２７：ＮＯ、Ｓ３１：ＮＯ、図８のＳ３３：ＮＯ）、ＣＰＵ２１は解釈情報がＣ軸位置決め指令で且つ第二状態フラグは１か否か判断する（Ｓ３５）。特定レファレンス点復帰指令はＣ軸位置決め指令で且つ第二状態フラグは１であるので（Ｓ３５：ＹＥＳ）、ＣＰＵ２１は制御指令がインクレメンタル指令で且つ特定レファレンス点復帰指令か否か判断する（Ｓ３６）。Ｎ２ブロックは特定レファレンス点復帰指令で、Ｇ９１はインクレメンタル指令であるので（Ｓ３６：ＹＥＳ）、ＣＰＵ２１はＲＡＭ２３に記憶する再計算フラグをＯＮし（Ｓ３７）、第二状態フラグを２に更新する（Ｓ３８）。
【００７６】
図７に戻り、ＣＰＵ２１は解釈情報に基づき、回転テーブル８２の駆動回路４６に実行要求を行う（Ｓ２８）。Ｎ２ブロックの解釈情報は、回転テーブル８２の特定レファレンス点復帰指令の第一動作指令の指令移動量（０°）と第二動作指令の指令移動量（１００°）を含む。ＣＰＵ２１は最初に第一動作指令について実行要求を行う。第一動作指令の回転テーブル８２の指令移動量は０°であるので、Ｃ軸モータ５６は移動しない。
【００７７】
ここで、Ｎ２ブロックの解釈情報には、第二動作指令の回転テーブル８２の指令移動量が有るので（Ｓ２９：ＮＯ）、第二動作指令を実行する為に、ＣＰＵ２１はＳ２７に戻る。第二動作指令も回転テーブルの位置決め指令であるので（Ｓ２７：ＮＯ、Ｓ３１：ＮＯ、図８のＳ３３：ＮＯ）、図８に示す如く、ＣＰＵ２１は解釈情報がＣ軸位置決め指令で且つ第二状態フラグは１か否か判断する（Ｓ３５）。第二動作指令はＣ軸位置決め指令であるが、第二状態フラグは２であるので（Ｓ３５：ＮＯ）、ＣＰＵ２１は、再計算フラグがＯＮで且つ第二状態フラグは２か否か判断する（Ｓ４３）。再計算フラグはＯＮで且つ第二状態フラグは２であるので（Ｓ４３：ＹＥＳ）、ＣＰＵ２１は再計算フラグをＯＦＦし（Ｓ４４）、第二動作指令の回転テーブル８２の移動量を演算する為に、回転テーブル８２の現在位置をエンコーダ９６からのフィードバック信号で検出する（Ｓ４５）。
【００７８】
次いで、ＣＰＵ２１は、回転テーブル８２の第二動作指令の指令移動量から、回転テーブル８２の現在位置を差し引くことでＣ軸移動量を演算する（Ｓ４６）。回転テーブル８２の現在位置が３０°であった時、ＣＰＵ２１は第二動作指令の指令移動量である１００°から３０°を差し引いた７０°（本発明の第二差分に相当）をＣ軸移動量として演算し、ＲＡＭ２３に記憶する。更にＣＰＵ２１は近回り判別処理を実行する（Ｓ４７）。
【００７９】
図７に戻り、ＣＰＵ２１は解釈情報に基づき、指令軸の駆動回路に実行要求を行う（Ｓ２８）。第一動作指令の実行要求は完了しているので、ＣＰＵ２１は第二動作指令について実行要求を行う。第二動作指令の回転テーブル８２の指令移動量は７０°であるので、ＣＰＵ２１は駆動回路４６に制御信号を出力する。Ｃ軸モータ５６は駆動し、回転テーブル８２は現在位置（３０°）から近回り処理で判別した回転方向に７０°回転し、１００°の位置で位置決めする。故にＣＰＵ２１は、回転テーブル８２を速度制御から位置制御に切り替える為の回転テーブル８２停止後の最初の回転テーブル８２の位置決め指令がインクレメンタル指令であっても、特定レファレンス点復帰指令である時は、アラームを出力することなく、回転テーブル８２をレファレンス点に少ない移動量で速やかに移動できる。
【００８０】
Ｎ２ブロック内の全軸の解釈情報について実行要求が完了し（Ｓ２９：ＹＥＳ）、更に実行要求した動作が全て完了した時（Ｓ３０：ＹＥＳ）、ＣＰＵ２１はＳ２１に戻り、先読みバッファ２３Ａに解釈情報があれば（Ｓ２１：ＹＥＳ）、引き続き上記処理を繰り返す。尚、先読みバッファ２３Ａから取得した解釈情報が、Ｍ３０、位置決め指令、回転指令、停止指令、アラーム指令以外の指令（例えば、補間指令、工具長補正指令、工具径補正指令、ドリルサイクル指令等）の時（Ｓ４３：ＮＯ）、ＣＰＵ２１は図７のＳ２８に処理を進め、駆動回路に実行要求を行う。解釈情報がＭ３０であった時（Ｓ２６：ＹＥＳ）、ＣＰＵ２１は実行処理を終了する。
【００８１】
次に、回転テーブル８２の特定レファレンス点復帰指令を二段階の動作に分けて制御する理由を説明する。第三実施例では、制御指令がインクレメンタルモードで回転テーブル８２の特定レファレンス復帰指令の場合、現在位置から一動作でレファレンス点に移動する動作であっても、ＣＰＵ２１は、現在位置からレファレンス点までの移動を第一動作と第二動作に分け、夫々の回転テーブル８２の指令移動量を演算して回転テーブル８２を二段階で移動する制御を行う。理由は以下の通りである。ＮＣプログラムＰ３では、Ｎ３ブロックは回転テーブル８２単独の特定レファレンス点復帰指令であるが、他の軸（Ｘ軸、Ｙ軸、Ｚ軸）も同時にＧ２８で指令することがある。レファレンス点復帰指令を解釈した場合、ＣＰＵ２１は二つの内部指令を生成するので、他の軸の動作と互いに整合性を取る必要がある。それ故、本実施形態は、回転テーブル８２の特定レファレンス復帰指令であっても、第一動作を移動のない指令（０°）として扱い、第二動作を現在位置からレファレンス点迄の移動指令として扱う。よって、Ｇ２８で同時指令した軸は、互いに干渉せず、夫々のレファレンス点に同時に到達できる。
【００８２】
次に、レファレンス点復帰指令を、アブソリュートモードとインクレメンタルモードで指令した時の動作の違いを説明する。レファレンス点復帰指令は、インクレメンタル指令の他に、アブソリュート指令で指定する時もある。例えば、Ｇ２８Ｘ−１０．Ｃ０．のレファレンス点復帰指令を例に説明する。Ｘ軸のレファレンス点を−２００．０００、回転テーブル８２のレファレンス点を９０．０００に予め設定したと仮定する。Ｘ軸の現在位置は−５０．０００、回転テーブル８２の現在位置は１８０．０００と仮定する。ＮＣプログラムは該条件でＧ２８Ｘ−１０．Ｃ０．を指令すると、ＣＰＵ２１は内部的に以下のような二つの指令を生成する。尚、ＣＰＵ２１は、各モータの駆動回路に対して常に現在位置からのインクレメンタル量で指令する。
【００８３】
−アブソリュート指令の場合−
・第一動作指令：Ｇ９１Ｇ０Ｘ４０．Ｃ−１８０．
・第二動作指令：Ｇ９１Ｇ０Ｘ−１９０．Ｃ９０．
各動作の終了時座標は以下の通りである。
・第一動作終了後の終了時座標：Ｘ軸：−１０．０００、Ｃ軸：０．０００
・第二動作終了後の終了時座標：Ｘ軸：−２００．０００、Ｃ軸：９０．０００
−インクレメンタル指令の場合−
・第一動作指令：Ｇ９１Ｇ０Ｘ−１０．Ｃ０．
・第二動作指令：Ｇ９１Ｇ０Ｘ−１４０．Ｃ−９０．
各動作の終了時座標は以下の通りである。
・第一動作終了後の終了時座標：Ｘ軸：−６０．０００、Ｃ軸：１８０．０００
・第二動作終了後の終了時座標：Ｘ軸：−２００．０００、Ｃ軸：９０．０００
【００８４】
上記の如く、同一のレファレンス点復帰指令であっても、アブソリュート指令とインクレメンタル指令とでは、第二動作終了時の移動軸の座標位置は同じであるが、第一動作終了時の移動軸の座標位置（中間点）は互いに異なる。
【００８５】
そして、回転テーブル８２の他に、他の軸もインクレメンタルモードでＧ２８を同時指令した時、回転テーブル８２については特定レファレンス点復帰指令であっても、上記の如く、他の軸は設定された中間点に夫々移動する。それ故、回転テーブル８２のみ最初の一回の動作でレファレンス点に到達してしまうと、他の軸の動作と整合性が取れず、干渉する可能性がある。そこで、上記の通り、本実施形態は、特定レファレンス復帰指令であっても、第一動作を移動のない指令（０°）として扱い、第二動作を現在位置からレファレンス点迄の移動指令として扱うことにより、Ｇ２８で同時指令した移動軸は、夫々のレファレンス点に互いに同時に到達できる。
【００８６】
以上説明にて、工作機械１は本発明の機械に相当し、回転テーブル８２は本発明の回転軸に相当し、図５，６の先読み処理を実行するＣＰＵ２１は本発明の先読み手段に相当し、先読みバッファ２３Ａは本発明の記憶装置に相当し、Ｓ８の処理を実行するＣＰＵ２１は本発明の記憶手段に相当し、図７，図８の処理を実行するＣＰＵ２１は本発明の実行手段に相当し、Ｓ１５の処理を実行するＣＰＵ２１は本発明の第一判断手段に相当し、Ｓ１６の処理を実行するＣＰＵ２１は本発明の仮決め手段に相当し、Ｓ１９の処理を実行するＣＰＵ２１は本発明の停止指令記憶手段に相当し、エンコーダ９６は本発明の位置検出手段に相当し、Ｓ４０の処理を実行するＣＰＵ２１は本発明の第一演算手段に相当し、Ｓ２８の処理を実行するＣＰＵ２１は本発明の第一位置決め実行手段に相当し、Ｓ２３：ＹＥＳ、Ｓ２５の処理を実行するＣＰＵ２１は本発明の停止手段に相当し、Ｓ１８の処理を実行するＣＰＵ２１は本発明の第二判断手段に相当し、Ｓ３６：ＹＥＳ、Ｓ２８の処理を実行するＣＰＵ２１は本発明の第一動作実行手段に相当し、Ｓ４５、Ｓ４６の処理を実行するＣＰＵ２１は本発明の第二演算手段に相当し、Ｓ２８の処理を実行するＣＰＵ２１は本発明の第二動作実行手段に相当する。
【００８７】
以上説明の如く、本実施形態の数値制御装置２０は工作機械１の運転を制御する。数値制御装置２０のＣＰＵ２１は先読み処理と実行処理でＮＣプログラムを先読みしながら実行する。先読み処理では、ＣＰＵ２１はＮＣプログラムを１ブロック毎解釈し、解釈情報を先読みバッファ２３Ａに記憶する。実行処理では、ＣＰＵ２１は先読みバッファ２３Ａに記憶する解釈情報に基づき動作を実行する。更に先読み処理では、ＣＰＵ２１は回転テーブル８２の回転を停止した後の最初の回転テーブル８２の位置決め指令がアブソリュート指令かインクレメンタル指令か判断する。位置決め指令がアブソリュート指令の時、ＣＰＵ２１は位置決め指令に基づいて回転テーブル８２の指令移動量を、予め設定したＣ軸基準位置からの移動量で仮決めする。位置決め指令がインクレメンタル指令の時、ＣＰＵ２１は工作機械１の運転を停止する停止指令を解釈情報として先読みバッファ２３Ａに記憶する。
【００８８】
更に実行処理では、回転テーブル８２停止後に最初の位置決め指令をアブソリュート指令で実行する時、ＣＰＵ２１は先読みバッファ２３Ａから読み出した解釈情報に基づき、仮決めした回転テーブル８２の指令移動量から、エンコーダ９６が検出した現在の回転テーブル８２の位置を差し引いた差分を演算する。ＣＰＵ２１は演算した差分を回転テーブル８２の移動量として、回転テーブル８２の位置決めを行う。先読みバッファ２３Ａから読み出した解釈情報にアラーム指令が有る時、ＮＣプログラムは間違ってプログラミングされている可能性があるので、ＣＰＵ２１は工作機械１の運転を停止する。それ故、数値制御装置２０は、工作機械１が作業者の意図と異なる動作を行うことを防止できる。また作業者はＮＣプログラムが間違ってプログラミングされていることに気付くことができる。
【００８９】
本実施形態のＣＰＵ２１は更に、先読み処理において、回転テーブル８２停止後の最初の位置決め指令がインクレメンタル指令の時、該位置決め指令は特定レファレンス点復帰指令であるか否か判断する。インクレメンタル指令で特定レファレンス点復帰指令の時、ＣＰＵ２１は回転テーブル８２の指令移動量を、Ｃ軸基準位置からレファレンス点までの移動量として仮決めする。それ故、数値制御装置２０は、回転テーブル８２の回転を停止した後の最初の回転軸への位置決め指令がインクレメンタル指令であっても、特定レファレンス点復帰指令の時は工作機械１の運転を停止しない。故に数値制御装置２０は工作機械１の動作を継続でき、且つＮＣプログラムの制限を少なくできる。
【００９０】
本実施形態のＣＰＵ２１は更に、先読み処理において、特定レファレンス点復帰指令を先読みして解釈する時、第一動作指令と第二動作指令に分けて解釈する。第一動作指令は現在位置から中間位置までの移動量を０°とする指令である。第二動作指令は現在位置からの移動量が０°である中間位置からレファレンス点までの移動量を指令移動量とする指令である。更に実行処理において、ＣＰＵ２１は第一動作指令に基づき、現在位置から移動しない。第一動作を実行した後で、ＣＰＵ２１は第二動作に基づき、指令移動量から、現在の回転テーブル８２の位置を差し引いた差分を演算する。ＣＰＵ２１は演算した差分を回転テーブル８２の移動量として、回転テーブル８２の位置決めを行う。故に数値制御装置２０はＮＣプログラム実行中、特定レファレンス点復帰指令が対象とする回転テーブル８２のＣ軸とは異なる他軸について、レファレンス点復帰指令のような位置決め指令が有る時、他軸と回転テーブル８２の動作の整合性を取ることができる。
【００９１】
本実施形態では更に、ワークを保持し且つ連続回転可能な軸である回転テーブル８２について、上記制御を行う。故に数値制御装置２０は速度制御から位置制御に切り替え可能な回転軸について、上記効果を得ることができる。
【００９２】
尚、本発明は上記実施形態に限らず種々の変更が可能である。上記実施形態は、複合加工機である工作機械１について説明したが、例えば旋盤のような回転軸を１つ備える機械であってもよい。また、連続回転可能な付加軸を備える工作機械であってもよい。
【００９３】
上記実施形態は、回転テーブル８２を本発明の回転軸として説明したが、速度制御から位置制御に切り替え可能な回転軸であれば他の移動軸、又は付加軸であってもよい。
【００９４】
上記実施形態は、先読み処理で解釈した解釈情報をＲＡＭ２３の先読みバッファ２３Ａに記憶するが、その他の記憶装置に記憶してもよく、専用の記憶装置を設けてもよい。
【００９５】
上記実施形態は、回転テーブル８２のインクレメンタル指令での特定レファレンス点復帰指令について、第三実施例でＮＣプログラムＰ３を用いて説明したが、特定レファレンス点復帰指令は、例えば図１２のＮＣプログラムＰ４のような使い方ができる。ＮＣプログラムＰ４では、Ｎ１ブロックはＧ４０Ｇ４９Ｍ１４１である。Ｇ４０は工具径補正キャンセル、Ｇ４９は工具長補正キャンセル、Ｍ１４１は回転テーブル８２の速度制御から位置制御への切替え指令（停止指令）である。Ｎ２ブロックはＧ９１Ｇ２８Ｚ０．である。Ｇ９１はインクレメンタル指令、Ｇ２８Ｚ０．はＺ軸現在位置からレファレンス点への移動を指示する特定レファレンス点復帰指令である。Ｎ３ブロックはＧ２８Ｘ０．Ｙ０．Ｃ０．である。これはＸ，Ｙ，Ｃ軸について現在位置からレファレンス点の移動を指示する特定レファレンス点復帰指令である。このようなＮＣプログラムＰ４では、プログラム先頭に各軸の特定レファレンス点復帰指令を入れることで、初期化処理として機能することができる。
【符号の説明】
【００９６】
１      工作機械
２０      数値制御装置
２１      ＣＰＵ
２３      ＲＡＭ
２３Ａ    先読みバッファ
８２      回転テーブル
９６      エンコーダ
【図１】
0006299527.tif 000002
【図２】
0006299527.tif 000003
【図３】
0006299527.tif 000004
【図４】
0006299527.tif 000005
【図５】
0006299527.tif 000006
【図６】
0006299527.tif 000007
【図７】
0006299527.tif 000008
【図８】
0006299527.tif 000009
【図９】
0006299527.tif 000010
【図１０】
0006299527.tif 000011
【図１１】
0006299527.tif 000012
【図１２】
0006299527.tif 000013