"複数の工具が取り付けられるタレットを移動させるX軸と、前記タレットを回転させるH軸と、ワークを回転させるC軸とを有し、前記X軸に直交するY軸を有さない工作機械を制御する数値制御装置であって、プログラム座標系で記述された加工プログラム中のX-Y軸移動指令をX-H-C軸からなる機械座標系での指令に変換し、変換した指令に従ってX軸、H軸およびC軸を連動駆動する仮想Y軸制御モードを実行する仮想Y軸制御部と、前記仮想Y軸制御モード中に非常停止が発生した場合、非常停止が解除されたときの前記X軸、C軸およびH軸の現在の位置を取得する取得部と、前記取得したX軸、C軸およびH軸の現在の位置から前記プログラム座標系での現在のX軸座標位置およびY軸座標位置を復元する復元部と、を備えたことを特徴とする数値制御装置。手動操作によるX軸の移動指令を発生させて前記タレットを移動させることにより工具をワークから引き抜くためのハンドルをさらに備え、前記仮想Y軸制御部は、前記復元部によって復元されたプログラム座標系での現在のX軸座標位置またはY軸座標位置と、前記ハンドルから発生されるX軸の移動指令とに基づき、前記現在のX軸座標位置またはY軸座標位置からワークに干渉せずに工具が引き抜かれるようX軸、H軸およびC軸を連動駆動することを特徴とする請求項1に記載の数値制御装置。前記仮想Y軸制御部は、プログラム座標系で作成された加工プログラムの指令を、1ブロック毎に、X軸移動指令及びY軸移動指令の少なくとも一方を含む第1移動指令と、H軸単独移動指令及びC軸移動指令の少なくとも一方を含む第2移動指令とに分離する分離部と、前記第1移動指令をX-H-C軸から成る機械座標系の指令に変換する座標変換部と、前記変換されたH軸移動指令と前記分離されたH軸単独移動指令とを合成し、前記変換されたC軸移動指令と前記分離されたC軸単独移動指令とを合成する合成部と、前記変換されたX軸移動指令、前記合成されたH軸移動指令およびC軸移動指令に従って前記X軸、H軸、C軸を駆動制御する駆動部と、を備え、非常停止される以前の前記第2移動指令による移動量を記憶する第1の記憶部をさらに備え、前記復元部は、取得したX軸、C軸およびH軸の現在の位置から前記第1の記憶部に記憶された移動量分の位置を分離し、この分離結果を用いて前記座標変換部による座標変換と逆方向の変換を行って前記プログラム座標系での現在のX軸座標位置およびY軸座標位置を復元することを特徴とする請求項1に記載の数値制御装置。非常停止される直前のプログラム座標系におけるX軸及びY軸の座標位置を記憶する第2の記憶部と、前記復元部によって復元されたプログラム座標系での現在のX軸座標位置およびY軸座標位置から前記第2の記憶部の記憶された座標位置へ前記タレット及び前記ワークを復帰移動させるようにX軸、H軸およびC軸を連動駆動する復帰移動部と、をさらに備えたことを特徴とする請求項1に記載の数値制御装置。加工プログラムに含まれるX-Y軸移動指令であって、前記非常停止される時点から最短時点で実行済みのX-Y軸移動指令で記述された座標位置を記憶する第3の記憶部と、前記復元部によって復元されたプログラム座標系での現在のX軸座標位置およびY軸座標位置から前記第3の記憶部の記憶された座標位置へ前記タレット及び前記ワークを復帰移動させるようにX軸、H軸およびC軸を連動駆動する復帰移動部と、をさらに備えたことを特徴とする請求項1に記載の数値制御装置。あたかもY軸を有しているかのように機械加工を行うための制御、すなわち仮想Y軸制御では、工作機械が工具でワークを加工している途中に、工作機械が非常停止された場合、仮想Y軸制御がキャンセルされる。その後、工作機械の非常停止が解除されたとしても、工具がワーク内に入り込んだ状態になっている場合、仮想Y軸制御がキャンセルされているため、X軸方向に工具を動かしながらそれに同期させてタレット及びワークを回転させることが困難である。すなわち、工作機械を非常停止前の状態に戻すために、工具をワークから引き抜くことが困難であり、無理やり工具をワークから引き抜こうとすると工具を破損させる可能性がある。また、工具がワーク内に入り込んだ状態になっていない場合でも、工作機械が非常停止されると、仮想Y軸制御がキャンセルされるとともに、タレット及びワークの駆動がサーボオフ状態になるため、タレットやワークが自重で動いてしまう。これにより、工作機械の非常停止直前におけるタレットやワークの座標を把握することが困難になる。すなわち、工作機械を非常停止前の状態に戻すために、工作機械におけるタレットやワークを非常停止直前の位置に復帰させることが困難である。さらに、工作機械の非常停止時に実行していた加工を工作機械の非常停止が解除された後に再開させることも困難である。本発明は、上記に鑑みてなされたものであって、工作機械を非常停止前の状態に戻すことができる数値制御装置を得ることを目的とする。上述した課題を解決し、目的を達成するために、本発明の1つの側面にかかる数値制御装置は、複数の工具が取り付けられるタレットを移動させるX軸と、前記タレットを回転させるH軸と、ワークを回転させるC軸とを有し、前記X軸に直交するY軸を有さない工作機械を制御する数値制御装置であって、プログラム座標系で記述された加工プログラム中のX-Y軸移動指令をX-H-C軸からなる機械座標系での指令に変換し、変換した指令に従ってX軸、H軸およびC軸を連動駆動する仮想Y軸制御モードを実行する仮想Y軸制御部と、前記仮想Y軸制御モード中に非常停止が発生した場合、非常停止が解除されたときの前記X軸、C軸およびH軸の現在の位置を取得する取得部と、前記取得したX軸、C軸およびH軸の現在の位置から前記プログラム座標系での現在のX軸座標位置およびY軸座標位置を復元する復元部とを備えたことを特徴とする。本発明によれば、プログラム座標系における現在のX軸及びY軸の座標位置を復元するので、プログラム座標系上で工作機械を非常停止前の状態に戻すように指令することができる。したがって、工作機械を非常停止前の状態に戻すことができる。以下に、本発明にかかる数値制御装置の実施の形態を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。実施の形態1.実施の形態1にかかる数値制御装置1の概略構成について図1及び図2を用いて説明する。図1a及び図1bは、それぞれ、数値制御装置1により制御される工作機械900の外観構成を示す斜視図及び正面図である。図2は、数値制御装置1の構成を示すブロック図である。工作機械900は、図1a、bに示すように、タレット905、及びワーク支持部906を有する。工作機械900は、X軸、Z軸、H軸、及びC軸を有する。X軸は、タレット905を移動させる移動軸である。Z軸は、ワークWを移動させる移動軸である。H軸は、タレット905を回転させることで、工具9051、9052を旋回させる回転軸である。C軸は、ワークWを回転させる回転軸である。なお、図1には、X軸、Z軸に垂直なY軸を破線で図示している。Y軸はユーザが作成する加工プログラム343中の仮想Y軸制御モード内で使用される仮想的な移動軸である。ユーザは、仮想Y軸制御モード内では、X軸、Y軸、H軸およびC軸の座標位置を指定して所要の加工プログラム343を作成する。本実施形態では、仮想Y軸制御モード中、Z軸の指定はなされない。ユーザは、H軸、C軸の回転を考慮することなく、例えば、工具方向と仮想平面X軸が一致した状態を想定してX-Y座標などを指定することによって加工プログラム343を作成する。加工プログラム343において、例えば、X軸指令はX20、Y軸指令はY50、C軸指令はC180、H軸指令はT1111というように記述される図12参照。工作機械900は、図2に示すように、さらに、X軸、H軸、Z軸、C軸サーボモータ901、902、903、904を有する。X軸サーボモータ901、H軸サーボモータ902は、タレット905に対して、X軸の移動、H軸の回転を行う。Z軸サーボモータ903、C軸サーボモータ904は、ワーク支持部906に対して、Z軸の移動、C軸の回転を行う。数値制御装置1は、表示部10、入力操作部20、制御演算部30、及び駆動部90を備える。例えば、ユーザによる加工プログラム343の自動起動ボタンの操作に応じて、加工プログラム343の自動起動の信号が制御演算部30へ供給される。これに応じて、制御演算部30は、加工プログラム343を起動して、加工プログラム343に従い、X軸の移動量指令、H軸の回転量指令、Z軸の移動量指令、C軸の回転量指令を生成して駆動部90へ供給する。駆動部90は、X軸サーボ制御部91、H軸サーボ制御部92、Z軸サーボ制御部93、C軸サーボ制御部94を有し、制御演算部30から入力されたX軸の移動量指令、H軸の回転量指令、Z軸の移動量指令、C軸の回転量指令に従い、X軸サーボモータ901、H軸サーボモータ902、Z軸サーボモータ903、C軸サーボモータ904を駆動する。また、制御演算部30は、X軸位置センサ95、H軸位置センサ96、Z軸位置センサ97、C軸位置センサ98から、駆動部90経由でフィードバック位置データFB位置データ:位置センサのデータから構築される機械座標系におけるX軸、H軸、Z軸、C軸の座標位置を受ける。制御演算部30は、PLC36、機械制御信号処理部35、記憶部34、解析処理部37、補間処理部38、仮想Y軸制御切換処理部39、スイッチ44、加減速処理部43、仮想Y軸制御部41、軸データ入出力部42、入力制御部32、画面処理部31、及びデータ設定部33を有する。加工プログラム343の自動起動の信号は、PLC36経由で機械制御信号処理部35に入力される。機械制御信号処理部35は、記憶部34経由で解析処理部37に指示して加工プログラム343を起動させる。記憶部34は、記憶部34a~34cを有する。記憶部34a、記憶部34b、記憶部34cは、それぞれ、非常停止時プログラム座標メモ346、H軸C軸単独指令メモ348、加工プログラム343を記憶する。なお、非常停止時プログラム座標メモ346及びH軸C軸単独指令メモ348のそれぞれ詳細は後述する。また、記憶部34は、工具補正データ342、加工プログラム343、画面表示データ344を記憶するとともに、ワークスペースとしての共有エリア345を有している。解析処理部37は、加工プログラム343の起動指示に応じて、記憶部34から加工プログラム343を読み出し、加工プログラム343の各ブロック各行について解析処理を行う。解析処理部37は、解析したブロック行にMコード例えば、図12に示すMコードM111が含まれていれば、その解析結果を記憶部34、機械制御信号処理部35経由でPLC36へ渡す。解析処理部37は、解析した行にMコード以外のコード例えば、図12に示すGコードG01が含まれていれば、その解析結果に記憶部34の工具補正データ342から読み出された工具補正量Tx、Tyを加味して補間処理部38へ渡す。PLC36は、解析結果例えば、図12に示すMコードM111を受けた場合、仮想Y軸制御モードONのMコードの通知を受けて仮想Y軸制御モード信号をONする。機械制御信号処理部35内の仮想Y軸制御モード信号処理部351は、仮想Y軸制御モード信号をチェックして記憶部34の共有エリア345に一時記憶させる。これにより、数値制御装置1では、仮想Y軸制御モードが開始され、各部が共有エリア345の仮想Y軸制御モード信号ON状態を参照することにより仮想Y軸制御モード中であることを認識する。PLC36が仮想Y軸制御モードOFFのMコード解析結果例えば、図12に示すMコードM101を受けた場合、機械制御信号処理部35内の仮想Y軸制御モード信号処理部351は、仮想Y軸制御モード信号をOFF状態にして共有エリア345に一時記憶させる。これにより、数値制御装置1では、仮想Y軸制御モードがキャンセルされ、仮想Y軸制御モード以外の通常の制御モードになる。補間処理部38は、解析処理部37から解析結果位置指令を受け取り、解析結果位置指令に対する補間処理を行い、補間処理の結果移動量、回転量を加減速処理部43へ供給する。加減速処理部43は、補間処理部38から供給された補間処理の結果に対して加減速処理を行う。加減速処理部43は、X軸、Y軸、C軸、H軸に関する加減速処理結果をスイッチ44に出力し、Z軸に関する加減速処理結果を軸データ入出力部軸データ入出力部42に直接出力する。スイッチ44は、仮想Y軸制御切換処理部39からの切り替え信号に基づき加減速処理結果を仮想Y軸制御部41、軸データ入出力部42の何れかに出力する。仮想Y軸制御切換処理部39は、共有エリア345の仮想Y軸制御モード信号がONになっている仮想Y軸制御モードにおいて、加減速処理部43と仮想Y軸制御部41とを接続するようにスイッチ44を切り換え、共有エリア345の仮想Y軸制御モード信号がOFFになっている仮想Y軸制御モード以外の制御モードにおいて、加減速処理部43と軸データ入出力部42とを接続するようにスイッチ44を切り換える。仮想Y軸制御部41は、仮想Y軸制御モードでの制御処理を実行する。具体的には、加減速処理されたX軸、Y軸、C軸、H軸指令をX軸、C軸、H軸指令に変換し、変換したX軸、C軸、H軸指令を軸データ入出力部42に入力する。仮想Y軸制御モードにおいては、通常は、X軸、H軸、C軸が連動して動作する。仮想Y軸制御部41は、仮想Y軸制御指令軸判定部414、仮想Y軸制御処理部411、仮想Y軸制御指令合成部412、非常停止時座標値記憶制御部415、H軸C軸単独指令記憶制御部416、プログラム座標復元部417、及び仮想Y軸制御復帰移動部418を有する。仮想Y軸制御指令軸判定部414は、仮想Y軸制御モード下においては、記憶部34cに記憶された加工プログラムを1ブロック1行毎に参照し、各ブロック各行の指令がX-Y軸の移動量指令であるのか、それともH軸又はC軸の単独回転量指令であるのかを判定する。仮想Y軸制御指令軸判定部414は、加工プログラム343による指令がX-Y軸の移動量指令例えば、図12に示すG00X20Y50による移動量指令である場合、加減速処理部43から入力されたX-Y軸の移動量指令を仮想Y軸制御処理部411へ供給し、H軸又はC軸の単独回転量指令例えば、図12に示すT1111やC180による単独回転量指令である場合、加減速処理部43から入力されたH軸又はC軸の単独回転量指令を仮想Y軸制御指令合成部412へ供給する。別言すれば、仮想Y軸制御指令軸判定部414は、プログラム座標系で作成された加工プログラムの指令を、1ブロック毎に、X-Y軸の移動量指令を含む第1移動量指令と、H軸単独移動量指令及び/又はC軸単独移動量指令を含む第2移動量指令とに分離し、第1移動量指令は仮想Y軸制御処理部411へ供給し、第2移動量指令は仮想Y軸制御指令合成部412へ供給する。仮想Y軸制御処理部411は、仮想Y軸制御モードにおいて、加減速処理部43から入力されたX-Y軸の移動量指令を移動位置指令X1,Y1に変換し、変換した移動位置指令を、実座標系としての機械座標系の移動位置指令であるX軸の移動位置指令とH軸の回転位置指令とC軸の回転位置指令とに座標変換し、X軸、H軸、C軸の各移動目標位置Xr1,Hr1Cr1を求める。具体的には、仮想Y軸制御処理部411は、前回計算したX-Y移動位置と、加減速処理部43から入力されたX-Y軸の移動量指令とを用いて今回のX-Y移動位置を計算する。そして、仮想Y軸制御処理部411は、計算した今回のX-Y移動位置X1,Y1を下記の数式1~3にしたがって座標変換して、機械座標系における移動位置Xr1,Hr1,Cr1を求める。Xr1=f1X1f2Y1数式1Hr1=f11X1f12Y1数式2Cr1=f21X1f22Y1数式3さらに、仮想Y軸制御処理部411は、機械座標系における前回移動位置Xr0,Hr0,Cr0と、今回の移動位置Xr1,Hr1,Cr1との差分をとることにより、機械座標系におけるX軸移動量ΔXr1=Xr1-Xr0とH軸回転量ΔHr1=Hr1-Hr0とC軸回転量ΔCr1=Cr1-Cr0とを計算する。仮想Y軸制御処理部411は、このような処理を補間点毎に繰り返す。仮想Y軸制御処理部411は、X軸の移動量指令ΔXr1を軸データ入出力部42へ供給するとともに、H軸の回転量指令ΔHr1とC軸の回転量指令ΔCr1とを仮想Y軸制御指令合成部412へ供給する。なお、仮想Y軸制御処理部411は、X-Y軸の移動量指令を受けていない場合、回転量零の回転量指令、すなわちΔHr1=0とΔCr1=0とを仮想Y軸制御指令合成部412へ供給し、ΔXr1=0を軸データ入出力部42へ供給する。仮想Y軸制御指令合成部412は、加減速処理部43から入力されたH軸及び/又はC軸の単独回転量指令ΔH2及び/又はΔC2と、仮想Y軸制御処理部411から入力される座標変換後のH軸の回転量指令ΔHr1とC軸の回転量指令ΔCr1とをそれぞれ合成する。仮想Y軸制御指令合成部412は、下記の数式4に示すように、H軸の単独回転量指令ΔHr2=ΔH2を、仮想Y軸制御処理部411により生成されたH軸の回転量指令ΔHr1と合成し、H軸の回転量指令ΔHrを生成する。ΔHr=ΔHr1ΔHr2数式4同様に、仮想Y軸制御指令合成部412は、下記の数式5に示すように、C軸の単独回転量指令ΔCr2=ΔC2を、仮想Y軸制御処理部411により生成されたC軸の回転量指令ΔCr1と合成し、C軸の回転量指令ΔCrを生成する。ΔCr=ΔCr1ΔCr2数式5仮想Y軸制御指令合成部412は、合成したH軸の回転量指令ΔHr及びC軸の回転量指令ΔCrを軸データ入出力部42へ供給する。非常停止時座標値記憶制御部415は、記憶部34aへの非常停止時プログラム座標メモ346の記憶を制御する。例えば、非常停止時座標値記憶制御部415は、定期的に、仮想Y軸制御処理部411から、プログラム座標系におけるX軸、Y軸の座標X2,Y2を取得し、取得したX軸、Y軸の座標X2,Y2を非常停止時プログラム座標メモ346として記憶部34aに定期的に例えば上書き記憶する。H軸C軸単独指令記憶制御部416は、記憶部34bへのH軸C軸単独指令メモ348の記憶を制御する。例えば、H軸C軸単独指令記憶制御部416は、H軸又はC軸の単独回転量指令が入るたびに、仮想Y軸制御指令合成部412からH軸又はC軸の単独回転量指令による回転量を取得し、取得したH軸又はC軸の単独回転量指令による回転量を積算し、積算結果としてのH軸又はC軸の単独回転量指令による現在のH軸回転位置およびC軸回転位置ΔH3,ΔC3をH軸C軸単独指令メモ348として記憶部34bに例えば上書き記憶する。別言すれば、H軸C軸単独指令記憶制御部416は、非常停止される以前における上記の第2移動量指令による移動量の積算値を、現在のH軸回転位置およびC軸回転位置を示す値として記憶部34bに記憶する。プログラム座標復元部417は、非常停止が解除された際に、プログラム座標系におけるX軸及びY軸の座標を復元する。具体的には、プログラム座標復元部417は、非常停止解除の指令を受けた場合に、軸データ入出力部42経由でサーボモータ901、902、904の位置センサ95、96、98から、機械座標系における現在のX軸、H軸、及びC軸の座標Xr0,Hr0,Cr0を取得する。プログラム座標復元部417は、下記の数式6及び7により、機械座標系における現在のX軸、H軸、及びC軸の座標Xr0,Hr0,Cr0からプログラム座標系における現在のX軸及びY軸の座標X0、Y0を復元する。X0=f’11Xr0f’12Hr0f’13Cr0数式6Y0=f’21Xr0f’22Hr0f’23Cr0数式7すなわち、プログラム座標復元部417は、仮想Y軸制御処理部411により行なわれる変換プログラム座標から機械座標への変換と逆方向の変換を行う。仮想Y軸制御復帰移動部418は、非常停止が解除された際に、非常停止される直前の位置へワークW及びタレット905を復帰移動させる。具体的には、仮想Y軸制御復帰移動部418は、非常停止解除の指令を受けた場合に、記憶部34aから非常停止時プログラム座標メモ346を読み出して、プログラム座標系における非常停止される直前のX軸、Y軸の座標X4,Y4を取得する。仮想Y軸制御復帰移動部418は、プログラム座標系における復元された現在の座標X0,Y0から非常停止される直前のX軸、Y軸の座標X4,Y4へ移動させるための移動量指令に対して、補間処理、加減速処理を行う。具体的には、仮想Y軸制御復帰移動部418は、補間処理、加減速処理の結果としてのX-Y軸の移動量指令と、復元された現在の座標X0,Y0とを用いて今回のX-Y移動位置を計算する。そして、仮想Y軸制御復帰移動部418は、プログラム座標系における計算した今回のX-Y移動位置X4,Y4を上記の数式1~3にしたがって座標変換して、機械座標系における移動位置Xr4,Hr4,Cr4を求める。さらに、仮想Y軸制御復帰移動部418は、機械座標系における位置センサ95、96、98から取得された現在の位置Xr0,Hr0,Cr0と、今回の移動位置Xr4,Hr4,Cr4との差分をとることにより、機械座標系におけるX軸移動量ΔXr4=Xr4-Xr0とH軸回転量ΔHr4=Hr4-Hr0とC軸回転量ΔCr4=Cr4-Cr0とを計算する。仮想Y軸制御復帰移動部418は、このような処理を補間点毎に繰り返す。仮想Y軸制御復帰移動部418は、X軸の移動量指令ΔXr4、H軸の回転量指令ΔHr4、及びC軸の回転量指令ΔCr4を軸データ入出力部42へ供給する。軸データ入出力部42は、X軸の移動量指令ΔXr1、ΔXr4を駆動部90へ供給し、H軸の回転量指令ΔHr、ΔHr4及びC軸の回転量指令ΔCr、ΔCr4を駆動部90へ供給する。ハンドル50は、ユーザによる手動操作によって例えばX軸の移動量指令を発生させる。ハンドル50は、工具がワークWに挿入された状態で非常停止が発生した場合に、非常停止解除後、ワークWから工具を引き抜く際などに使用される。ハンドル50は、ハンドルモードの際に使用可能となる。次に、実施の形態1にかかる数値制御装置1の通常時の動作について図3を用いて説明する。図3は、実施の形態1にかかる数値制御装置の動作を示すフローチャートである。ステップS1では、解析処理部37が、工具補正量Tx、Tyを記憶部34から読み出して、加工プログラム343の解析結果に工具補正量Tx、Tyを加味して補間処理部38へ渡す。ステップS2では、補間処理部38が、解析処理部37から解析結果位置指令を受け取り、解析結果位置指令に対する補間処理を行い、補間処理の結果を加減速処理部43へ供給する。ステップS3では、加減速処理部43が、供給された補間処理の結果に対して加減速処理を行い、加減処理結果をスイッチ44に供給する。ステップS4では、仮想Y軸制御切換処理部39が、共有エリア345の仮想Y軸制御モード信号に基づき仮想Y軸制御判定処理を行うべきか否かを判断する。すなわち、仮想Y軸制御切換処理部39は、仮想Y軸制御モードである場合ステップS4でYes、処理をステップS10へ進める。仮想Y軸制御切換処理部39は、仮想Y軸制御モード以外の制御モードである場合ステップS4でNo、処理をステップS17へ進める。ステップS10では、仮想Y軸制御部41が、仮想Y軸制御モードの処理を行う。具体的には、以下のステップS11~S16の処理を行う。ステップS11では、仮想Y軸制御指令軸判定部414は、記憶部34に記憶された加工プログラム343を1ブロック毎に参照し、各ブロックの指令がX-Y軸の移動量指令であるのか、それともH軸及び/又はC軸の単独回転量指令であるのかを判定する。仮想Y軸制御指令軸判定部414は、加工プログラム343による指令がX-Y軸の移動量指令例えば、図12に示すX20Y50への移動量指令である場合、そのX-Y軸の移動量指令を仮想Y軸制御処理部411へ供給し、処理をステップS12へ進める。仮想Y軸制御指令軸判定部414は、加工プログラム343による指令がH軸及び/又はC軸の単独回転量指令例えば、図12に示すT1111やC180による単独回転量指令である場合、そのH軸及び/又はC軸の単独回転量指令を仮想Y軸制御指令合成部412へ供給し、処理をステップS16へ進める。ステップS12では、仮想Y軸制御処理部411が、プログラム座標位置計算処理を行う。すなわち、仮想Y軸制御処理部411は、加減速処理部43から入力されたX-Y軸の移動量指令と、前回のX-Y移動位置とを用いて今回の移動位置X軸座標X1、Y軸座標Y1を計算する。ステップS13では、仮想Y軸制御処理部411が、座標変換処理仮想Y軸制御のプログラム座標→機械座標の変換処理を行う。すなわち、仮想Y軸制御処理部411は、プログラム座標系における今回の移動位置X1,Y1を上記の数式1~3により座標変換して、機械座標系における移動位置Xr1,Hr1,Cr1を求める。ステップS15では、仮想Y軸制御処理部411が、機械座標系における前回位置Xr0,Hr0,Cr0と今回の移動位置Xr1,Hr1,Cr1との差分をとることにより、機械座標系におけるX軸移動量ΔXr1=Xr1-Xr0とH軸回転量ΔHr1=Hr1-Hr0とC軸回転量ΔCr1=Cr1-Cr0とを計算する。仮想Y軸制御処理部411は、X軸の移動量指令ΔXr1を軸データ入出力部42へ供給して処理をステップS17へ進めるとともに、H軸の回転量指令ΔHr1とC軸の回転量指令ΔCr1とを仮想Y軸制御指令合成部412へ供給して処理をステップS16へ進める。ステップS16では、仮想Y軸制御指令合成部412が、上記の数式4に示すように、H軸の単独回転量指令ΔHr2を、仮想Y軸制御処理部411により生成されたH軸の回転量指令ΔHr1と合成し、H軸の回転量指令ΔHrを生成する。同様に、仮想Y軸制御指令合成部412は、上記の数式5に示すように、C軸の単独回転量指令ΔCr2を、仮想Y軸制御処理部411により生成されたC軸の回転量指令ΔCr1と合成し、C軸の回転量指令ΔCrを生成する。仮想Y軸制御指令合成部412は、合成したH軸の回転量指令ΔHr及びC軸の回転量指令ΔCrを軸データ入出力部42へ供給する。ステップS17では、軸データ入出力部42が、軸データ出力処理を行う。すなわち、軸データ入出力部42は、仮想Y軸制御処理部411から供給されたX軸の移動量指令ΔXr1を駆動部90へ供給するとともに、仮想Y軸制御指令合成部412から供給されたH軸の回転量指令ΔHr及びC軸の回転量指令ΔCrを駆動部90へ供給する。次に、実施の形態1にかかる数値制御装置1を用いた工作機械900の非常停止時の動作について、図4~図8を用いて説明する。図4は、数値制御装置1を用いた工作機械900の非常停止時の動作を示すフローチャートである。図5、6、8は、工作機械900の非常停止時の動作を示す図である。図7は、運転モード信号のデータ構造を示す図である。図4に示すステップS21では、入力操作部20内の非常停止ボタンがユーザにより押されると、非常停止の指令が各部に入力される。駆動部90は、非常停止の指令を受けた場合に、軸データ入出力部42からの駆動制御データを受け付けないサーボオフ状態になる。これにより、例えば、タレット905やワーク支持部906ワークWが自重により動いてしまう図5a、b、図6a、b参照。あるいは、例えば、穴あけ加工用の工具9052がワークW内に入り込んだままの状態になる図8a参照。ステップS22では、運転モードをメモリ運転モードからハンドルモードへ切り替えるための操作がユーザにより行われると、PLC36は、機械制御信号処理部35に対して運転モード信号をメモリ運転モードONの状態図7aに示すビットMMが1の状態からハンドル運転モードONの状態図7bに示すビットHMが1の状態へ切り替えて共有エリア345に一時記憶させる。これにより、数値制御装置1では、各部が共有エリア345の運転モード信号ハンドル運転モードONの状態を参照することによりハンドル運転モードであることを認識する。なお、共有エリア345の仮想Y軸制御モード信号は、非常停止された後もON状態になっている。ステップS23では、入力操作部20内の非常停止ボタンがユーザにより解除されると、非常停止解除の指令が各部に入力される。このとき、駆動部90は、サーボオン状態になる。ステップS24では、プログラム座標復元部417は、軸データ入出力部42経由でサーボモータ901、902、904の位置センサ95、96、98から、非常停止が解除された際の機械座標系におけるX軸、H軸、及びC軸の現在の座標位置Xr0,Hr0,Cr0を取得する。ステップS25では、非常停止される以前にH軸又はC軸の単独回転量指令があった場合、プログラム座標復元部417が、記憶部34bからH軸C軸単独指令メモ348を読み出して、H軸又はC軸の単独回転量指令による現在のH軸回転位置およびC軸回転位置ΔH3,ΔC3を取得する。ステップS26では、プログラム座標復元部417が、プログラム座標系における現在のX軸及びY軸の座標を復元する。すなわち、非常停止される以前にH軸又はC軸の単独回転量指令がなかった場合、プログラム座標復元部417は、上記の数式6及び7により、機械座標系における現在のX軸、H軸、及びC軸の座標Xr0,Hr0,Cr0からプログラム座標系における現在のX軸及びY軸の座標X0,Y0を復元する。あるいは、非常停止される以前にH軸又はC軸の単独回転量指令があった場合、プログラム座標復元部417は、機械座標系における現在のX軸、H軸、及びC軸の座標Xr0,Hr0,Cr0から現在のH軸回転位置およびC軸回転位置ΔH3,ΔC3を差し引いた座標Xr0、Hr0-ΔH3、Cr0-ΔC3を求め、その座標Xr0、Hr0-ΔH3、Cr0-ΔC3から上記の数式6及び7によりプログラム座標系における現在のX軸及びY軸の座標X0’,Y0’を復元する。言い換えれば、プログラム座標復元部417は、プログラム座標系における復元されたX軸及びY軸の座標X0,Y0に対して、H軸又はC軸の単独回転量指令による現在のH軸回転位置およびC軸回転位置ΔH3,ΔC3をさらに反映させた座標X0’,Y0’,ΔH3,ΔC3を求め、その求めた座標を、プログラム座標系における復元された現在の座標X0’,Y0’,ΔH3,ΔC3とする。さらに別言すれば、プログラム座標復元部417は、取得したX軸、C軸およびH軸の現在の位置から記憶部34bに記憶された移動量分の位置を分離し、この分離結果を用いて仮想Y軸制御処理部411による座標変換と逆方向の変換を行ってプログラム座標系での現在のX軸座標位置およびY軸座標位置X0’,Y0’を復元する。ステップS27では、ユーザが、復帰移動すべきか否かを判断する。復帰移動する動作がユーザにより選択され、ユーザからスイッチ図示せずを介して復帰移動信号が数値制御装置1に入力された場合、PLC36は、復帰移動信号を検知する。PLC36は、復帰移動信号を検知した場合S27でYes、処理をステップS28へ進め、復帰移動信号を検知しなかった場合S27でNo、処理をステップS32へ進める。ステップS28では、仮想Y軸制御復帰移動部418が、記憶部34aから非常停止時プログラム座標メモ346を読み出して、プログラム座標系における非常停止される直前のX軸、Y軸の座標X4,Y4を取得する。ステップS29では、仮想Y軸制御復帰移動部418が、X-Y目標位置X4,Y4を上記の数式1~3にしたがって座標変換して、機械座標系における移動位置Xr4,Hr4,Cr4を求める。さらに、仮想Y軸制御復帰移動部418は、X0,Y0から同様に座標変換された現在の位置Xr0,Hr0,Cr0と、今回の移動位置Xr4,Hr4,Cr4との差分をとることにより、機械座標系におけるX軸移動量ΔXr4=Xr4-Xr0とH軸回転量ΔHr4=Hr4-Hr0とC軸回転量ΔCr4=Cr4-Cr0とを計算する。仮想Y軸制御復帰移動部418は、X軸の移動量指令ΔXr4、H軸の回転量指令ΔHr4、及びC軸の回転量指令ΔCr4を軸データ入出力部42へ供給する。これにより、仮想Y軸制御復帰移動部418は、プログラム座標系における復元された現在のX軸及びY軸の座標X0,Y0から記憶部34aに記憶されたX軸及びY軸の座標X4,Y4へ移動するように、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行い、非常停止される直前の位置へタレット905及びワークWを復帰移動させる図5c、図6c参照。ステップS32では、仮想Y軸制御部41が、ユーザによるハンドル50の操作が行われたか否かを判断する。ユーザは、ワークWに入り込んだ工具をプログラム座標上におけるX軸方向へ動かしてワークWから引き抜くために、ハンドル50を回転操作する。このとき、ハンドル50は、手動送り指令X軸の移動量指令を発生させて補間処理部38、加減速処理部43経由で仮想Y軸制御部41へ供給する。仮想Y軸制御部41の仮想Y軸制御処理部411は、ハンドルモード中に手動送り指令を受けた場合に、ユーザによるハンドル50の操作が行われたと判断して、処理をステップS30へ進め、ハンドルモードに移行後手動送り指令を所定時間内に受けなかった場合に、ユーザによるハンドル50の操作が行われなかったと判断して、処理を終了する。ステップS30では、仮想Y軸制御処理部411が、手動送り指令に基づいてプログラム座標系における手動送り量X軸の移動量指令を計算する。すなわち、仮想Y軸制御処理部411は、プログラム座標系において、プログラム座標復元部417により復元された位置から、手動送り量X軸の移動量指令に従って移動させる今回の移動位置X5を計算する。そして、仮想Y軸制御処理部411は、プログラム座標系における今回の移動位置X5を上記の数式1~3により座標変換して、機械座標系における移動位置Xr5,Hr5,Cr5を求める。また、手動送り量がY軸であっても、同様に座標変換して求めることができる。ステップS31では、仮想Y軸制御処理部411が、機械座標系における現在の位置Xr0,Hr0,Cr0と移動位置Xr5,Hr5,Cr5との差分をとることにより、機械座標系におけるX軸移動量ΔXr5=Xr5-Xr0とH軸回転量ΔHr5=Hr5-Hr0とC軸回転量ΔCr5=Cr5-Cr0とを計算する。すなわち、仮想Y軸制御処理部411は、ハンドル50により発生された手動送り指令をプログラム座標系におけるX軸の移動量指令とし、プログラム座標系におけるX軸の移動量指令から、機械座標系におけるX軸の移動量指令X軸移動量ΔXr5とH軸の回転量指令H軸回転量ΔHr5とC軸の回転量指令C軸回転量ΔCr5とを生成する。仮想Y軸制御処理部411は、X軸の移動量指令ΔXr5を軸データ入出力部42へ供給するとともに、H軸の回転量指令ΔHr5とC軸の回転量指令ΔCr5とを仮想Y軸制御指令合成部412経由で軸データ入出力部42へ供給する。これにより、仮想Y軸制御処理部411は、プログラム座標復元部417によって復元されたプログラム座標系での現在のX軸座標位置およびY軸座標位置と、ハンドル50から発生されるX軸の移動指令とに基づき、現在のX軸座標位置およびY軸座標位置からワークWに干渉せずに工具が引き抜かれるようX軸、H軸およびC軸を連動駆動する。すなわち、仮想Y軸制御処理部411は、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行い、工具をワークWから引き抜く図8b参照。なお、上記では、仮想Y軸制御復帰移動部418が復帰移動処理ステップS28、S29をハンドルモードで行う例について説明したが、仮想Y軸制御復帰移動部418は、メモリ運転モードで復帰移動処理ステップS28、S29を行ってもよい。その場合、例えば、ステップS28において運転モードをハンドルモードからメモリ運転モードへ切り替えるための操作がユーザにより行われてもよい。ここで、仮に、図13に示すように、数値制御装置800の制御演算部830において、仮想Y軸制御部841がプログラム座標復元部417図2参照を有しない場合について考える。この場合、工作機械900が工具9052でワークWを加工している途中に、工作機械900が非常停止された場合、仮想Y軸制御がキャンセルされる。その後、工作機械900の非常停止が解除されたとしても、図15aに示すように、工具9052がワークW内に入り込んだ状態になっている場合、仮想Y軸制御がキャンセルされているため、X軸方向に工具9052を動かしながらそれに連動させてタレット905及びワークWを回転させることが困難である。すなわち、工作機械900を非常停止前の状態に戻すために、工具9052をワークWから引き抜くことが困難であり、無理やり工具9052をワークWから引き抜こうとすると、図15bに示すように、工具9052を破損させる可能性がある。それに対して、実施の形態1では、プログラム座標復元部417が、非常停止が解除された際に、機械座標系におけるX軸、H軸、及びC軸の座標からプログラム座標系におけるX軸及びY軸の座標X0,Y0を復元する。そして、仮想Y軸制御処理部411は、プログラム座標系におけるプログラム座標復元部417により復元されたX軸及びY軸の座標X0,Y0からハンドル50により受け付けられた手動送り指令X軸の移動量指令に従って移動するように、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行う。これにより、仮想Y軸制御処理部411は、工具をワークWから引き抜く。すなわち、工具9052をワークWから引き抜くことが容易であり、工具9052を破損させにくい。したがって、仮想Y軸制御中に工具9052がワークW内に入り込んだ状態で工作機械900が非常停止された場合でも、工具9052をワークWから引き抜いて、工作機械900を非常停止前の状態に戻すことができる。また、図13に示すように、仮想Y軸制御部841がプログラム座標復元部417を有しない場合、図14aに示すように、工具9051がワークW内に入り込んだ状態になっていない場合でも、工作機械900が非常停止されると、仮想Y軸制御がキャンセルされるとともに、タレット905及びワークWの駆動がサーボオフ状態になるため、図14bに示すように、タレット905やワークWが自重で動いてしまう。これにより、プログラム座標系における工作機械900の現在のX軸、Y軸の座標位置を把握することが困難になるとともに、工作機械900の非常停止直前の座標位置を把握することも困難になるので、プログラム座標系上で工作機械900を非常停止前の状態に戻すように指令することができない。そこで、図14cに示すように、運転モードをハンドルモードにして、タレット905やワークWを非常停止前とは異なる機械座標系の基準位置へ戻し、図14dに示すように、運転モードをメモリ運転モードに戻すことになる。すなわち、工作機械900を非常停止前の状態に戻すために、工作機械900におけるタレット905やワークWを非常停止直前の位置に復帰させることが困難である。それに対して、実施の形態1では、仮想Y軸制御部41がプログラム座標復元部417を有している。プログラム座標復元部417が、非常停止が解除された際に、機械座標系における現在のX軸、H軸、C軸の座標からプログラム座標系における現在のX軸及びY軸の座標X0,Y0を復元する。これにより、プログラム座標系における現在のX軸、Y軸の座標位置を把握することができるので、プログラム座標系上で工作機械900を非常停止前の状態に戻すように指令することができる。したがって、仮想Y軸制御中に工具9051がワークW内に入り込んでいない状態で工作機械900が非常停止された場合でも、工作機械900を非常停止前の状態に戻すことが可能となる。特に、仮想Y軸制御復帰移動部418は、非常停止解除の指令を受けた際に、記憶部34aから非常停止時プログラム座標メモ346を読み出して、プログラム座標系における非常停止される直前のX軸、Y軸の座標X4,Y4を取得する。仮想Y軸制御復帰移動部418は、プログラム座標系における復元された現在のX軸及びY軸の座標X0、Y0から記憶部34aに記憶されたX軸及びY軸の座標X4,Y4へ移動するように、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行い、非常停止される直前の位置へタレット905及びワークWを復帰移動させる。したがって、工作機械900を非常停止前の状態に戻すことができる。また、実施の形態1では、非常停止される前にH軸又はC軸の単独回転量指令があった場合、プログラム座標復元部417は、記憶部34bからH軸C軸単独指令メモ348を読み出して、H軸又はC軸の単独回転量指令による現在のH軸回転位置およびC軸回転位置ΔH3,ΔC3を取得する。プログラム座標復元部417は、プログラム座標系における復元されたX軸及びY軸の座標X0,Y0に対して、H軸又はC軸の単独回転量指令による現在のH軸回転位置およびC軸回転位置ΔH3ΔC3を反映させた座標X0’,Y0’,ΔH3,ΔC3を求め、その求めた座標を、プログラム座標系における復元された現在の座標X0’,Y0’,ΔH3,ΔC3とする。したがって、工作機械900が非常停止される以前に仮想Y軸制御中にH軸C軸の単独回転量指令が行われた場合でも、プログラム座標系における現在の座標を復元することができるので、工作機械900を非常停止前の状態に戻すようにプログラム座標系上で指令することができる。実施の形態2.次に、実施の形態2にかかる数値制御装置1iについて説明する。以下では、実施の形態1と異なる部分を中心に説明する。実施の形態2にかかる数値制御装置1iは、復帰移動処理により復帰移動する先が、加工プログラムに含まれるX-Y軸移動指令であって、非常停止される時点から最短時点で実行済みのX-Y軸移動指令で記述された座標位置である点で実施の形態1と異なる。非常停止される時点から最短時点で実行済みのX-Y軸移動指令で記述された座標位置は、例えば、加工プログラム上の前ブロックの記述にX-Y軸移動指令が含まれている場合、非常停止時の実行ブロックの前ブロックの終了位置であり、例えば、加工プログラム上の前ブロックにはなく2つ前のブロックの記述にX-Y軸移動指令が含まれている場合、非常停止時の実行ブロックの2つ前のブロックの終了位置である。以下では、復帰移動処理により復帰移動する先が非常停止時の実行ブロックの前ブロックの終了位置である場合について例示的に説明する。具体的には、数値制御装置1iは、図9に示すように、制御演算部30iを備える点で実施の形態1と異なる。図9は、実施の形態2にかかる数値制御装置1iの構成を示すブロック図である。制御演算部30iは、記憶部34i及び仮想Y軸制御部41iを有する。記憶部34iは、記憶部34a図2参照に代えて記憶部34diを有する。記憶部34diは、前ブロックプログラム座標メモ347iを記憶する。仮想Y軸制御部41iは、非常停止時座標値記憶制御部415i及び仮想Y軸制御復帰移動部418iを有する。非常停止時座標値記憶制御部415iは、記憶部34diへの前ブロックプログラム座標メモ347iの記憶を制御する。例えば、非常停止時座標値記憶制御部415iは、定期的に、仮想Y軸制御処理部411から、プログラム座標系におけるブロックの終了位置のX軸及びY軸の座標X6,Y6を取得する。非常停止時座標値記憶制御部415iは、取得した座標X6,Y6を前ブロックプログラム座標メモ347iとして記憶部34diに定期的に例えば上書き記憶する。仮想Y軸制御復帰移動部418iは、非常停止解除の指令を受けた場合に、記憶部34diから前ブロックプログラム座標メモ347iを読み出して、プログラム座標系における、非常停止される際に実行されていたブロックの前ブロックの終了位置のX軸及びY軸の座標X6,Y6を取得する。仮想Y軸制御復帰移動部418iは、プログラム座標復元部417により復元されたX軸及びY軸の座標X0,Y0から、記憶部34diに記憶されたX軸及びY軸の座標X6,Y6へ移動するように、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行う。これにより、仮想Y軸制御復帰移動部418iは、プログラム座標系における非常停止される際に実行されていたブロックの前ブロックの終了位置へワークW及びタレット905を復帰移動させる。また、数値制御装置1iを用いた工作機械900の非常停止時の動作は、図10~図12に示すように、次の点で実施の形態1と異なる。図10は、実施の形態2にかかる数値制御装置1iを用いた工作機械900の非常停止時の動作を示すフローチャートである。図11は、工作機械900の非常停止時の動作を示す図である。図12は、実施の形態2にかかる数値制御装置1iの記憶部34iに記憶された加工プログラム343における記述内容を示す図である。ステップS21では、駆動部90が、非常停止の指令を受けた場合に、軸データ入出力部42からの駆動制御データを受け付けないサーボオフ状態になる。これにより、例えば、タレット905やワーク支持部906ワークWが自重により動いてしまう図11b、c参照。ステップS28iでは、仮想Y軸制御復帰移動部418iが、記憶部34diから前ブロックプログラム座標メモ347iを読み出して、プログラム座標系における、非常停止される直前に実行されていたブロックの前ブロックの終了位置のX軸及びY軸の座標X6,Y6を取得する。例えば、ステップS21で非常停止される際に実行されていたブロックが、図12に示す加工プログラム343におけるN107G01X20Y-50F1000に対応したものフライス加工であるとする図11b参照。この場合、非常停止される際に実行されていたブロックの前ブロックは、加工プログラム343におけるN106G00X20Y50に対応したもの加工開始位置に移動になる。このとき、実行されていたブロックの前ブロックの終了位置は、プログラム座標系におけるX20Y50になる図11a参照。すなわち、前ブロックプログラム座標メモ347iは、プログラム座標系におけるX20Y50を終了位置として含んでいる。そして、仮想Y軸制御復帰移動部418iは、プログラム座標系における復元された現在の座標X0,Y0から非常停止時の実行ブロックの前ブロックの終了位置のX軸、Y軸の座標X6,Y6へ移動させるための移動量指令に対して、補間処理、加減速処理を行う。ステップS29iでは、仮想Y軸制御復帰移動部418iが、補間処理、加減速処理の結果としてのX-Y軸の移動量指令と、復元された現在の座標X0,Y0とを用いて今回のX-Y移動位置を計算する。そして、仮想Y軸制御復帰移動部418iが、X-Y座標位置X6,Y6を上記の数式1~3にしたがって座標変換して、機械座標系における移動位置Xr6,Hr6,Cr6を求める。さらに、仮想Y軸制御復帰移動部418iは、X0,Y0から座標変換された現在の位置Xr0,Hr0,Cr0と、今回の移動位置Xr6,Hr6,Cr6との差分をとることにより、機械座標系におけるX軸移動量ΔXr6=Xr6-Xr0とH軸回転量ΔHr6=Hr6-Hr0とC軸回転量ΔCr6=Cr6-Cr0とを計算する。仮想Y軸制御復帰移動部418iは、X軸の移動量指令ΔXr6、H軸の回転量指令ΔHr6、及びC軸の回転量指令ΔCr6を軸データ入出力部42へ供給する。これにより、仮想Y軸制御復帰移動部418iが、プログラム座標系におけるプログラム座標復元部417により復元されたX軸及びY軸の座標X0,Y0から記憶部34diに記憶されたX軸及びY軸の座標X6,Y6へ移動するように、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行い、非常停止される直前に実行されていたブロックの前ブロックの終了位置へタレット905及びワークWを復帰移動させる図11c、d参照。その後、数値制御装置1iは、入力操作部20を介したユーザからの指示により、プログラム再開サーチ機能を使って、非常停止時に実行されていたブロックをサーチし、起動サイクルスタートすることによって加工を再開続行させることができる。以上のように、実施の形態2では、仮想Y軸制御復帰移動部418iが、非常停止解除の指令を受けた際に、記憶部34diから前ブロックプログラム座標メモ347iを読み出して、プログラム座標系における、非常停止される際に実行されていたブロックの前ブロックの終了位置のX軸及びY軸の座標X6,Y6を取得する。仮想Y軸制御復帰移動部418iは、プログラム座標系におけるプログラム座標復元部417により復元されたX軸及びY軸の座標X0,Y0から記憶部34diに記憶されたX軸及びY軸の座標X6,Y6へ移動するように、機械座標系におけるX軸の移動とH軸の回転とC軸の回転とを同期させて行う。これにより、非常停止される際に実行されていたブロックの前ブロックの終了位置へタレット905及びワークWを復帰移動させる。したがって、仮想Y軸制御中に工作機械900が非常停止された場合でも、工作機械900の非常停止時に実行していた加工を工作機械900の非常停止が解除された後に再開させることができる。"