(57)【要約】【課題】工作機械を即座に移動停止可能な数値制御装置と制御方法を提供する。【解決手段】数値制御装置のＣＰＵは、工作機械の主軸を移動する移動指令を工作機械に出力する。アラームが主軸の移動中に発生した場合、ＣＰＵは軸停止処理を実行する。発生したアラームの緊急度が低い場合（Ｓ５９：ＮＯ）、ＣＰＵは、減速停止距離Ｌａが残存移動距離Ｌｂ未満になるまで、ＲＡＭに記憶の移動指令を出力する。減速停止距離Ｌａは、移動中の主軸が所定の加速度で減速停止する場合に移動する距離である。残存移動距離Ｌｂは、ＲＡＭに残存する移動指令が示す移動距離である。減速停止距離Ｌａが残存移動距離Ｌｂ未満になると（Ｓ５９：ＹＥＳ）、ＣＰＵは主軸を減速停止する処理を開始する。一方、発生したアラームの緊急度が高い場合（Ｓ５９：ＹＥＳ）、ＣＰＵは、減速停止距離Ｌａと残存移動距離Ｌｂの関係に関わらず、主軸を減速停止する処理を開始する。【選択図】図５
2018055395.tif 000002
【特許請求の範囲】
【請求項１】
ＮＣプログラムに基づき、工作機械の軸を移動する複数の移動指令を生成する生成部と、
前記生成部が生成した複数の前記移動指令を記憶手段に記憶する記憶制御部と、
前記記憶制御部が前記記憶手段に記憶した複数の前記移動指令を順次、前記工作機械に出力する出力制御部と、
アラームが発生した場合、前記記憶制御部による前記移動指令の記憶を中止する中止制御部と、
前記中止制御部が前記記憶制御部による前記移動指令の記憶を中止した場合、前記記憶手段が記憶し且つ前記出力制御部による出力が未完了の複数の前記移動指令である残存移動指令に基づき、前記軸を所定の加速度で減速停止する減速停止指令を生成して前記工作機械に出力する減速停止部と
を備えた数値制御装置において、
発生した前記アラームが、特定の情報を示す特定アラームであるか否かを判断する判断部を備え、
前記減速停止部は、
前記アラームが前記特定アラームでないと前記判断部が判断した場合、前記残存移動指令に基づく前記軸の移動距離である残存移動距離が、移動中の前記軸の移動速度から前記所定の加速度で減速停止するまでの前記軸の移動距離である減速停止距離以下になるまで、前記残存移動指令を前記工作機械に出力する特定出力制御部と、
前記残存移動距離が前記減速停止距離以下になるまで前記特定出力制御部が前記残存移動指令を出力した場合、前記特定出力制御部が出力しなかった前記残存移動指令を、前記減速停止指令に変換し前記工作機械に出力する第一減速停止部と、
前記アラームが前記特定アラームであると前記判断部が判断した場合、前記減速停止指令を生成して前記工作機械に出力する第二減速停止部と
を備えたことを特徴とする数値制御装置。
【請求項２】
前記第二減速停止部は、前記残存移動指令の一部を前記減速停止指令に変換して前記工作機械に出力し、
前記記憶手段が記憶する前記移動指令に基づく移動距離分移動して停止した場合の前記軸の位置である停止予定位置を前記記憶手段に記憶する位置記憶制御部と、
前記アラームが前記特定アラームであると前記判断部が判断した場合、前記位置記憶制御部が前記記憶手段に記憶した前記停止予定位置から、前記第二減速停止部が変換しない前記残存移動指令に基づく移動距離分、前記軸が戻って停止した場合の位置である停止確定位置を前記記憶手段に記憶する位置補正制御部と
を備えたことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記特定アラームは、前記軸を緊急停止させる情報を示すことを特徴とする請求項１又は２に記載の数値制御装置。
【請求項４】
ＮＣプログラムに基づき、工作機械の軸を移動する複数の移動指令を生成する生成工程と、
前記生成工程が生成した複数の前記移動指令を記憶手段に記憶する記憶制御工程と、
前記記憶制御工程が前記記憶手段に記憶した複数の前記移動指令を順次、前記工作機械に出力する出力制御工程と、
アラームが発生した場合、前記記憶制御工程による前記移動指令の記憶を中止する中止制御工程と、
前記中止制御工程が前記記憶制御工程による前記移動指令の記憶を中止した場合、前記記憶手段が記憶し且つ前記出力制御工程による出力が未完了の複数の前記移動指令である残存移動指令に基づき、前記軸を所定の加速度で減速停止する減速停止指令を生成して前記工作機械に出力する減速停止工程と
を備えた数値制御装置の制御方法において、
発生した前記アラームが、特定の情報を示す特定アラームであるか否かを判断する判断工程を備え、
前記減速停止工程は、
前記アラームが前記特定アラームでないと前記判断工程が判断した場合、前記残存移動指令に基づく前記軸の移動距離である残存移動距離が、移動中の前記軸の移動速度から前記所定の加速度で減速停止するまでの前記軸の移動距離である減速停止距離以下になるまで、前記残存移動指令を前記工作機械に出力する特定出力制御工程と、
前記残存移動距離が前記減速停止距離以下になるまで前記特定出力制御工程が前記残存移動指令を出力した場合、前記特定出力制御工程が出力しなかった前記残存移動指令を、前記減速停止指令に変換し前記工作機械に出力する第一減速停止工程と、
前記アラームが前記特定アラームであると前記判断工程が判断した場合、前記減速停止指令に生成して前記工作機械に出力する第二減速停止工程と
を備えたことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置と制御方法に関する。
【背景技術】
【０００２】
特許文献１に開示の数値制御装置は、ＮＣプログラムに基づき作成した移動指令を移動指令バッファに記憶し、移動指令バッファに記憶の移動指令を順次工作機械に出力する。数値制御装置は、停止指令の入力時、移動指令バッファへの移動指令の記憶を停止する。数値制御装置は、移動指令バッファ内で出力済みとなっていない移動指令である残存移動指令から、工作機械の残存移動距離を算出する。数値制御装置は、停止指令の入力時の移動速度から所定の減速度で工作機械を減速停止させるのに必要な減速停止距離を算出する。残存移動距離が減速停止距離以下になるまで、数値制御装置は工作機械に残存移動指令を出力する。残存移動距離が減速停止距離以下になると、数値制御装置は、移動指令バッファ内の残存移動指令から減速用移動指令を作成して工作機械に出力する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５３８１８０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記数値制御装置では、残存移動距離が減速停止距離以下になるまで、工作機械は残存移動指令に従い動作する。故に、数値制御装置は、停止指令の入力後に工作機械を即座に停止できない可能性があった。
【０００５】
本発明の目的は、工作機械を即座に移動停止可能な数値制御装置と制御方法を提供することである。
【課題を解決するための手段】
【０００６】
本発明の第一態様の数値制御装置は、ＮＣプログラムに基づき、工作機械の軸を移動する複数の移動指令を生成する生成部と、前記生成部が生成した複数の前記移動指令を記憶手段に記憶する記憶制御部と、前記記憶制御部が前記記憶手段に記憶した複数の前記移動指令を順次、前記工作機械に出力する出力制御部と、アラームが発生した場合、前記記憶制御部による前記移動指令の記憶を中止する中止制御部と、前記中止制御部が前記記憶制御部による前記移動指令の記憶を中止した場合、前記記憶手段が記憶し且つ前記出力制御部による出力が未完了の複数の前記移動指令である残存移動指令に基づき、前記軸を所定の加速度で減速停止する減速停止指令を生成して前記工作機械に出力する減速停止部とを備えた数値制御装置において、発生した前記アラームが、特定の情報を示す特定アラームであるか否かを判断する判断部を備え、前記減速停止部は、前記アラームが前記特定アラームでないと前記判断部が判断した場合、前記残存移動指令に基づく前記軸の移動距離である残存移動距離が、移動中の前記軸の移動速度から前記所定の加速度で減速停止するまでの前記軸の移動距離である減速停止距離以下になるまで、前記残存移動指令を前記工作機械に出力する特定出力制御部と、前記残存移動距離が前記減速停止距離以下になるまで前記特定出力制御部が前記残存移動指令を出力した場合、前記特定出力制御部が出力しなかった前記残存移動指令を、前記減速停止指令に変換し前記工作機械に出力する第一減速停止部と、前記アラームが前記特定アラームであると前記判断部が判断した場合、前記減速停止指令を生成して前記工作機械に出力する第二減速停止部とを備えたことを特徴とする。上記構成によれば、第二減速停止部は、残存移動距離と減速停止距離との関係に関わらず、減速停止指令を出力する。故に、第二減速停止部が減速停止指令を出力した場合、第一減速停止部が減速停止指令を出力する場合に比べ、工作機械の軸は短時間で減速停止できる。故に、工作機械を即座に移動停止可能な数値制御装置が、実現できる。
【０００７】
前記数値制御装置では、前記第二減速停止部は、前記残存移動指令の一部を前記減速停止指令に変換して前記工作機械に出力し、前記記憶手段が記憶する前記移動指令に基づく移動距離分移動して停止した場合の前記軸の位置である停止予定位置を前記記憶手段に記憶する位置記憶制御部と、前記アラームが前記特定アラームであると前記判断部が判断した場合、前記位置記憶制御部が前記記憶手段に記憶した前記停止予定位置から、前記第二減速停止部が変換しない前記残存移動指令に基づく移動距離分、前記軸が戻って停止した場合の位置である停止確定位置を前記記憶手段に記憶する位置補正制御部とを備えてもよい。数値制御装置は、第二減速停止部の出力による減速停止指令で減速停止する軸の正確な停止位置を、記憶手段に記憶できる。
【０００８】
前記数値制御装置では、前記特定アラームは、前記軸を緊急停止させる情報を示してもよい。軸が緊急停止する必要がある場合に、数値制御装置は軸を即座に移動停止できる。
【０００９】
本発明の第二態様の制御方法は、ＮＣプログラムに基づき、工作機械の軸を移動する複数の移動指令を生成する生成工程と、前記生成工程が生成した複数の前記移動指令を記憶手段に記憶する記憶制御工程と、前記記憶制御工程が前記記憶手段に記憶した複数の前記移動指令を順次、前記工作機械に出力する出力制御工程と、アラームが発生した場合、前記記憶制御工程による前記移動指令の記憶を中止する中止制御工程と、前記中止制御工程が前記記憶制御工程による前記移動指令の記憶を中止した場合、前記記憶手段が記憶し且つ前記出力制御工程による出力が未完了の複数の前記移動指令である残存移動指令に基づき、前記軸を所定の加速度で減速停止する減速停止指令を生成して前記工作機械に出力する減速停止工程とを備えた数値制御装置の制御方法において、発生した前記アラームが、特定の情報を示す特定アラームであるか否かを判断する判断工程を備え、前記減速停止工程は、前記アラームが前記特定アラームでないと前記判断工程が判断した場合、移動中の軸の移動速度から前記残存移動指令に基づく前記軸の移動距離である残存移動距離が、移動中の前記軸の移動速度から前記所定の加速度で減速停止するまでの前記軸の移動距離である減速停止距離以下になるまで、前記残存移動指令を前記工作機械に出力する特定出力制御工程と、前記残存移動距離が前記減速停止距離以下になるまで前記特定出力制御工程が前記残存移動指令を出力した場合、前記特定出力制御工程が出力しなかった前記残存移動指令を、前記減速停止指令に変換し前記工作機械に出力する第一減速停止工程と、前記アラームが前記特定アラームであると前記判断工程が判断した場合、前記減速停止指令に生成して前記工作機械に出力する第二減速停止工程とを備えたことを特徴とする。第二態様の制御方法は、第一態様と同様の効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】数値制御装置１と工作機械５の電気的構成を示すブロック図。
【図２】情報テーブル１００のデータ構成図。
【図３】軸移動処理の流れ図。
【図４】軸移動処理に伴う主軸６４の移動を説明する説明図。
【図５】軸停止処理の流れ図。
【図６】発生したアラームの緊急度が低い場合の主軸６４の停止制御を説明する説明図。
【図７】図５に続く軸停止処理の流れ図。
【図８】発生したアラームの緊急度が高い場合の主軸６４の停止制御を説明する説明図。
【発明を実施するための形態】
【００１１】
本発明の実施形態の一例である数値制御装置１を説明する。数値制御装置１は例えば工作機械５に設けた制御箱（図示略）に格納する。数値制御装置１は、工作機械５の動作を制御する装置である。数値制御装置１は、ＮＣプログラムを読込んで各種の制御指令を生成し、生成した指令を工作機械５に出力する。数値制御装置１が出力した制御指令に基づき、工作機械５は例えば工具を高速回転して被加工物に切削加工等の加工を施す。ＮＣプログラムは各種の制御指令を含む複数ブロックで構成する。
【００１２】
図１に示す如く、工作機械５は、開閉扉（図示略）、Ｘ軸モータ５１、Ｘ軸６１、Ｙ軸モータ５２、Ｙ軸６２、Ｚ軸モータ５３、Ｚ軸６３、主軸モータ５４、主軸６４、マガジンモータ５５、工具マガジン６５、切削油貯留部（図示略）、グリス貯留部（図示略）等を備える。
【００１３】
開閉扉は、工作機械５の加工空間を作業者の手動により開閉する扉である。工作機械５は加工空間内で被加工物を加工する。Ｘ軸モータ５１はＸ軸６１を駆動する。Ｙ軸モータ５２はＹ軸６２を駆動する。Ｚ軸モータ５３はＺ軸６３を駆動する。Ｘ軸６１、Ｙ軸６２、Ｚ軸６３は、夫々、ボールねじ軸である。グリス（図示略）は、Ｘ軸６１、Ｙ軸６２、Ｚ軸６３の夫々に塗布される。Ｘ軸６１、Ｙ軸６２、Ｚ軸６３が駆動することで、主軸６４は、Ｘ方向、Ｙ方向、Ｚ方向に被加工物に対して相対的に移動する。Ｘ方向とＹ方向は、互いに直交する水平な方向である。Ｚ方向は上下方向であり、Ｘ方向とＹ方向の夫々に対して直交する。
【００１４】
Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３は夫々、エンコーダ５１Ａ〜５３Ａを備える。エンコーダ５１Ａ〜５３Ａは夫々、Ｘ方向、Ｙ方向、Ｚ方向における主軸６４の被加工物に対する実際の相対位置を検出する。以下、Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３を総称する場合、モータ５０と称し、エンコーダ５１Ａ〜５３Ａを総称する場合、エンコーダ５０Ａと称す。
【００１５】
主軸モータ５４は主軸６４を駆動する。主軸６４は工具を装着する。主軸６４が駆動すると工具は回転する。主軸モータ５４はエンコーダ５４Ａを備える。エンコーダ５４Ａは主軸６４の回転位置を検出する。マガジンモータ５５は工具マガジン６５を駆動する。マガジンモータ５５はエンコーダ５５Ａを備える。エンコーダ５５Ａは、工具マガジン６５の駆動位置を検出する。切削油貯留部は、加工空間内にある工具と被加工物に供給する切削油を貯留する。加工空間から排出する切削油は、切削油貯留部に循環して戻る。グリス貯留部は、Ｘ軸６１、Ｙ軸６２、Ｚ軸６３に給脂するグリスを貯留する。
【００１６】
工作機械５は、電源スイッチ７１、非常停止スイッチ７２、操作パネル７３、リミットスイッチ７５、液面センサ７６、圧力センサ７８、表示部７７を備える。電源スイッチ７１、非常停止スイッチ７２、操作パネル７３は、何れも、作業者による操作が可能であり、例えば工作機械５の外壁に設ける。電源スイッチ７１は、工作機械５の電源をＯＮ又はＯＦＦに切替える指示を検出する。非常停止スイッチ７２は、工作機械５の加工を緊急停止する指示を検出する。操作パネル７３は各種指示を検出する。リミットスイッチ７５は、開閉扉が加工空間を開放したか否かを検出する。液面センサ７６は切削油貯留部に設ける。液面センサ７６は、切削油貯留部に貯留の切削油の液面が、所定高さ以下になったか否かを検出する。圧力センサ７８はグリス貯留部に設ける。圧力センサ７８は、グリス貯留部に貯留のグリスが、所定量以下になったか否かを検出する。表示部７７は例えば操作パネル７３の隣に設ける。表示部７７は各種情報を表示する。各種情報は主軸６４の停止位置を含む。
【００１７】
数値制御装置１の構成を説明する。数値制御装置１はＣＰＵ３１を備える。ＣＰＵ３１は数値制御装置１の動作を統括制御する。ＣＰＵ３１は、ＲＯＭ３２、ＲＡＭ３３、記憶装置３４、ＡＣ／ＤＣ変換機３８、電圧検出部３９、サーボアンプ４１〜４５、入出力インターフェース４６に電気的に接続する。ＲＯＭ３２は、後述の軸移動処理（図３参照）を実行する為のプログラム等、各種プログラムを記憶する。各種プログラムは、コンピュータで読取可能な記憶媒体としての不揮発性の記憶装置、ＥＥＰＲＯＭ（登録商標）、ＨＤＤ（ハードディスクドライブ）等に記憶してもよい。
【００１８】
ＲＡＭ３３は、各種プログラムの実行に伴い、各種情報を一時的に記憶する。ＲＡＭ３３は指令記憶領域３６、特定記憶領域３７等を含む。指令記憶領域３６は、主軸６４を被加工物に対して相対移動する制御指令である移動指令を記憶する。各移動指令は、主軸６４を単位時間ΔＴ当たりに移動する指令である。単位時間ΔＴは例えば２ｍｓである。指令記憶領域３６は、Ｍ個の記憶領域を含み、各記憶領域は一つの移動指令を記憶する。Ｍは自然数である。以下、指令記憶領域３６が有する各記憶領域を、０番目記憶領域、１番目記憶領域、２番目記憶領域、・・・ｉ番目記憶領域・・・、Ｍ番目記憶領域と称す。ｉは、指令記憶領域３６の各記憶領域のインデックスであり、Ｍ以下の自然数である。また、０番目記憶領域からＭ番目記憶領域に記憶の移動指令を、順に、移動指令Ｆ０、Ｆ１、Ｆ２、・・・、Ｆｉ・・・、ＦＭと称し、指令記憶領域３６に記憶の移動指令を総称する場合、単に移動指令と称す。
【００１９】
特定記憶領域３７は特定移動指令Ｆ'を記憶する。特定移動指令Ｆ'は、指令記憶領域３６に記憶の移動指令を変換した制御指令である。後述の如く、特定移動指令Ｆ'が工作機械５に出力した制御指令となる場合と、特定移動指令Ｆ'が工作機械５に出力予定の制御指令となる場合がある。ＲＡＭ３３は、指令記憶領域３６と特定記憶領域３７の他に、後述の減速用移動指令Ｆｄ等の各種情報を記憶する記憶領域（図示略）を含む。
【００２０】
記憶装置３４は、各種プログラムの実行に伴い、各種情報を記憶する不揮発性のメモリである。記憶装置３４は、位置記憶領域５７、情報記憶領域５９を含む。位置記憶領域５７は、表示部７７が表示する主軸６４の停止位置を記憶する。位置記憶領域５７に記憶する主軸６４の停止位置は、ＣＰＵ３１が工作機械５に出力する制御指令に基づき特定する主軸６４の停止位置である。位置記憶領域５７が記憶する主軸６４の停止位置は、後述の停止予定位置と停止確定位置を含む。情報記憶領域５９は、後述の情報テーブル１００（図２参照）を記憶する。記憶装置３４は、位置記憶領域５７、情報記憶領域５９の他、所定期間であるグリス交換間隔を記憶する領域（図示外）を含む。数値制御装置１はグリス交換間隔が経過する度に自動でグリスを供給する。
【００２１】
ＡＣ／ＤＣ変換機３８は、外部の交流電源９０に接続し、交流電源９０が供給する交流の電力を直流の電力に変換する。ＡＣ／ＤＣ変換機３８が変換した電力は、数値制御装置１と工作機械５の電力源となる。電圧検出部３９は、ＡＣ／ＤＣ変換機３８に電気的に接続する。電圧検出部３９は、ＡＣ／ＤＣ変換機３８が変換した電力の電圧を検出する。
【００２２】
サーボアンプ４１はＸ軸モータ５１に電気的に接続する。サーボアンプ４２はＹ軸モータ５２に電気的に接続する。サーボアンプ４３はＺ軸モータ５３に電気的に接続する。以下、サーボアンプ４１〜４３を総称する場合、サーボアンプ４０と称す。ＣＰＵ３１がサーボアンプ４０に制御指令を出力することで、サーボアンプ４０は、エンコーダ５０Ａの検出結果を取得しながら、モータ５０を駆動制御する。サーボアンプ４０は、エンコーダ５０Ａの検出結果をＣＰＵ３１に出力する。
【００２３】
サーボアンプ４４は主軸モータ５４に電気的に接続する。サーボアンプ４５はマガジンモータ５５に電気的に接続する。ＣＰＵ３１が、サーボアンプ４４、４５に制御指令を出力することで、サーボアンプ４４、４５は、エンコーダ５４Ａ、５５Ａの検出結果を取得しながら、主軸モータ５４、マガジンモータ５５を駆動制御する。
【００２４】
入出力インターフェース４６は、電源スイッチ７１、非常停止スイッチ７２、操作パネル７３、リミットスイッチ７５、液面センサ７６、圧力センサ７８、表示部７７に、電気的に接続する。ＣＰＵ３１は、入出力インターフェース４６を介して、電源スイッチ７１、非常停止スイッチ７２、操作パネル７３、リミットスイッチ７５、液面センサ７６、圧力センサ７８の検出結果を取得する。ＣＰＵ３１は、入出力インターフェース４６を介して、表示部７７に各種情報を表示する。
【００２５】
図２を参照し、記憶装置３４が情報記憶領域５９に記憶する情報テーブル１００を説明する。情報テーブル１００は、緊急度を示す情報と、アラーム種類を示す情報を対応付けて記憶する。緊急度を示す情報は、緊急度高と緊急度低を含む。緊急度高は、指令記憶領域３６が記憶する移動指令に関わらず、移動中の主軸６４を減速停止する緊急度を示す。即ち、緊急度高は、主軸６４を緊急停止させる情報を示す。緊急度低は、指令記憶領域３６が記憶する移動指令が後述の条件を満たした場合、主軸６４を減速停止する緊急度を示す。
【００２６】
アラーム種類を示す情報は、電源オフ、電源低下、非常停止、扉開放、位置偏差過大、ストロークオーバ、切削油液面低下、グリス交換を含む。電源オフ、電源低下、非常停止、扉開放、位置偏差過大は、何れも緊急度高に対応する。ストロークオーバ、切削油液面低下、グリス交換は、何れも緊急度低に対応する。
【００２７】
電源スイッチ７１が、工作機械５の加工中に、工作機械５の電源をＯＮからＯＦＦに切り替える指示を検出した場合、電源オフのアラームは発生する。電圧検出部３９の検出電圧が、工作機械５の加工中に所定の閾値以下になった場合、電源低下のアラームは発生する。所定の閾値は、正常に動作する工作機械５が要する電力の電圧値である。作業者が非常停止スイッチ７２を押した時、非常停止のアラームは発生する。リミットスイッチ７５が、工作機械５の加工中に加工空間の開放を検出した場合、扉開放のアラームは発生する。位置記憶領域５７に記憶のモータ５０への指令位置が、エンコーダ５０Ａの検出した位置から所定距離以上に離れた場合、位置偏差過大のアラームは発生する。主軸６４が、主軸６４の可動領域から退出する場合、ストロークオーバのアラームは発生する。液面センサ７６が検出した液面の高さが、所定の高さ以下になった場合、切削油液面低下のアラームは発生する。圧力センサ７８が検出したグリスの量が所定量以下になった場合、グリス交換のアラームは発生する。
【００２８】
図３、図４を参照し、軸移動処理を説明する。工作機械５が被加工物の加工を実行する場合、ＣＰＵ３１は軸移動処理を実行する。軸移動処理は、主軸６４を被加工物に対して相対移動する処理である。主軸６４の移動方向は、Ｘ方向、Ｙ方向、Ｚ方向の何れの方向であってもよい。ＣＰＵ３１は、軸移動処理の実行に伴い、主軸６４を回転制御する処理を実行する。以下、ＣＰＵ３１が主軸６４を回転制御する説明を省略し、軸移動処理のみを説明する。
【００２９】
軸移動処理の概要を説明する。ＣＰＵ３１は、軸移動処理の実行に伴って、ＮＣプログラムが含む複数のブロックを、１ブロックずつ読込む。各ブロックは、移動指令を含む。ＣＰＵ３１が移動指令をサーボアンプ４０に出力することで、主軸６４は移動する。主軸６４は、移動指令に従い、加速度Ａで指令速度Ｆまで加速した後、指令速度Ｆで定速移動する。定速移動した主軸６４は、加速度Ａで減速して停止する。加速度Ａは所定の値である。ＣＰＵ３１がＮＣプログラムを１ブロック単位で読込む度に、主軸６４は上記移動を繰り返す。図４下段のグラフは、移動開始から移動終了までの、主軸６４の移動速度の変化を示す。以下、主軸６４が定速移動する速度を指令速度Ｆと称す。指令速度Ｆは、ＮＣプログラムのブロック毎に異なってもよい。加速度Ａで加減速する主軸６４の単位時間ΔＴ毎の速度変化量をΔＶとした場合（図４参照）、指令速度ＦはΔＶの整数倍になる。作業者が操作パネル７３を操作して軸移動処理の開始指示を入力すると、ＣＰＵ３１は軸移動処理を実行する為のプログラムを読み出して、軸移動処理を開始する。
【００３０】
ＣＰＵ３１は初期化処理を実行する（Ｓ１０）。ＣＰＵ３１は、ＲＡＭ３３に記憶の情報と、記憶装置３４の位置記憶領域５７に記憶の情報を初期化する（Ｓ１０）。更にＣＰＵ３１はｉ＝０に初期化する（Ｓ１０）。ＣＰＵ３１は、ＮＣプログラムの１ブロックを読込む（Ｓ１１）。ＣＰＵ３１は、読込んだ１ブロック分のＮＣプログラムから指令速度Ｆを読出し、加減速時間Ｔａを取得する（Ｓ１３）。加減速時間Ｔａは、主軸６４の速度が、速度０から指令速度Ｆが示す速度に到達するまでの時間である（図４参照）。故に加減速時間Ｔａは式（Ａ）によって求まる。
Ｔａ＝Ｆ／Ａ・・・（Ａ）
式（Ａ）では、Ｆは指令速度Ｆである。ＣＰＵ３１は、Ｓ１１で取得の指令速度Ｆを式（Ａ）に代入し、加減速時間Ｔａを取得する（Ｓ１３）。加減速時間Ｔａは、単位時間ΔＴの整数倍である。
【００３１】
ＣＰＵ３１は、Ｓ１１で取得したＴａに基づきメモリ数ｎを取得する。メモリ数ｎは、主軸６４が速度０から指令速度Ｆに到達するまでに必要な移動指令の個数である。故にメモリ数ｎは、式（Ｂ）によって求まる。
ｎ＝Ｔａ／ΔＴ・・・（Ｂ）
ＣＰＵ３１は、Ｓ１３で取得したＴａを式（Ｂ）に代入することで、メモリ数ｎを取得する（Ｓ１５）。以下、メモリ数ｎを単にｎと称し、ｎ＝７である場合を例に説明する。
【００３２】
ＣＰＵ３１は、情報テーブル１００に記憶のアラームの少なくとも一つが発生したか否かを判断する。（Ｓ１７）。ＣＰＵ３１は、情報テーブル１００に記憶のアラームの少なくとも一つが発生したと判断した場合（Ｓ１７：ＹＥＳ）、軸停止処理を実行する（Ｓ３９）。情報テーブル１００に記憶のアラームが何れも発生していない場合（Ｓ１７：ＮＯ）、ＣＰＵ３１は、処理をＳ１９に移行する。
【００３３】
例えば、ＣＰＵ３１は、情報テーブル１００のアラームが発生したか否かを順に判断する（Ｓ１７）。ＣＰＵ３１は、電源スイッチ７１が工作機械５の電源をＯＮからＯＦＦに切り替える指示を検出したか否かを判断することで、電源オフのアラームが発生したか否かを判断する。ＣＰＵ３１は、電圧検出部３９の検出電圧が、所定の閾値以下になったか否かを判断することで、電源低下のアラームが発生したか否かを判断する。ＣＰＵ３１は、非常停止スイッチ７２が、工作機械５の加工を緊急停止する指示を検出したか否かを判断することで、非常停止のアラームが発生したか否かを判断する。ＣＰＵ３１は、リミットスイッチ７５が工作機械５の加工空間の開放を検出したか否かを判断することで、扉開放のアラームが発生したか否かを判断する。ＣＰＵ３１は、モータ５０への指令位置が、エンコーダ５０Ａが出力した位置から所定距離以上に離れたか否かを判断することで、位置偏差過大のアラームが発生したか否かを判断する。ＣＰＵ３１は、指令記憶領域３６に記憶の移動指令に従い移動した場合の主軸６４が、主軸６４の可動範囲を超えるか否かを判断することで、ストロークオーバのアラームが発生したか否かを判断する。ＣＰＵ３１は、液面センサ７６が検出した液面の高さが所定の高さ以下になったか否かを判断することで、切削油液面低下のアラームが発生したか否かを判断する。ＣＰＵ３１は、圧力センサ７８が検出したグリスの量が所定量以下になったか否かを判断することで、グリス交換のアラームが発生したか否かを判断する。
【００３４】
情報テーブル１００に記憶のアラームが何れも発生していないと判断した場合（Ｓ１７：ＮＯ）、ＣＰＵ３１は、Ｓ１１で読込んだブロックに基づき移動指令を一つ生成する（Ｓ１９）。ＣＰＵ３１は、主軸６４の停止位置を、表示して、位置記憶領域５７に記憶する（Ｓ２１）。Ｓ２１で表示する停止位置は、Ｓ１９で取得した移動指令に基づく移動距離分移動して停止した場合の主軸６４の位置である。即ち、Ｓ２１で表示部７７が表示する主軸６４の停止位置は、主軸６４の停止予定位置となる。Ｓ１７実行時における主軸６４の位置が（Ｘ，Ｙ，Ｚ）であり、且つＳ１９で生成した移動指令に相当する移動距離が、Ｘ方向にΔｘ、Ｙ方向にΔｙ、Ｚ方向にΔｚであるとする。主軸６４の停止予定位置は、（Ｘ＋Δｘ，Ｙ＋Δ，Ｚ＋Δｚ）になる。ＣＰＵ３１は、停止予定位置（Ｘ＋Δｘ，Ｙ＋Δ，Ｚ＋Δｚ）を、表示部７７に表示し、且つ、表示する停止予定位置を位置記憶領域５７に記憶する（Ｓ２１）。
【００３５】
ＣＰＵ３１は、主軸６４の移動開始に関する移動指令Ｆ０を生成した後（Ｓ１９）、生成した移動指令Ｆ０を指令記憶領域３６の０番目記憶領域に記憶する（図４（ａ）、Ｓ２３）。ＣＰＵ３１は、主軸６４の停止予定位置を表示部７７に表示して、位置記憶領域５７にする（Ｓ２１）。ＣＰＵ３１は、ｉを０から１にインクリメントして（Ｓ２５）、ｉが０以上か否かを判断する（Ｓ２７）。ｉはｎより小さい（Ｓ２７：ＮＯ）ので、ＣＰＵ３１は処理をＳ３１へ移行する。ＲＡＭ３３が、指令記憶領域３６の１番目記憶領域に移動指令Ｆ１として初期化した時の０を記憶しているので（図４（ａ）参照）、ＣＰＵ３１は、指令記憶領域３６の移動指令Ｆ１として０をサーボアンプ４０に出力する（Ｓ３１）。ＣＰＵ３１は、出力した移動指令Ｆ１を特定移動指令Ｆ'として特定記憶領域３７に上書きして記憶し、指令記憶領域３６の１番目記憶領域を初期化する（Ｓ３３）。ＣＰＵ３１は、主軸６４の移動が完了したか否かを判断する（Ｓ３５）。ＣＰＵ３１は、Ｓ１１で読込んだブロックに基づく移動指令を全てサーボアンプ４０に出力したか否かによって、主軸６４の移動が完了したか否かを判断する。主軸６４の移動が終了していない場合（Ｓ３５：ＮＯ）、ＣＰＵ３１は、処理をＳ１７に移行する。ＣＰＵ３１は、主軸６４の移動完了まで（Ｓ３５：ＮＯ）、Ｓ１７〜Ｓ３５を実行する。ＣＰＵ３１は、Ｓ１７〜Ｓ３５を繰り返し実行することで、指令記憶領域３６の０番目記憶領域から６番目記憶領域に移動指令を順に記憶する（Ｓ２３）。移動指令Ｆ６は、指令速度Ｆを示す。
【００３６】
ＣＰＵ３１はｉを６から７にインクリメントする（Ｓ２５）。ＣＰＵ３１は、ｉを７から０に初期化して（Ｓ２７：ＹＥＳ、Ｓ２９）、移動指令Ｆ０をサーボアンプ４０に出力する（図４（ｇ）、Ｓ３１参照）。ＣＰＵ３１は、移動指令Ｆ０の出力後、指令記憶領域３６の０番目記憶領域を初期化し（Ｓ３１）、移動指令Ｆ０を特定移動指令Ｆ'として特定記憶領域３７に記憶する（Ｓ３３）。ＣＰＵ３１は、移動指令の生成を開始してから（Ｓ１９）、加減速時間Ｔａ遅延して、生成した最初の移動指令をサーボアンプ４０に出力する（Ｓ３１）。主軸６４は移動指令Ｆｉが示す速度で移動する。ＣＰＵ３１は、移動指令Ｆｉを特定記憶領域３７に記憶し、ｉ番目記憶領域を初期化する（Ｓ３３）。故にＳ３３で記憶する特定移動指令Ｆ'は、移動中の主軸６４の速度を示す。
【００３７】
主軸６４の移動が終了していないので（Ｓ３５：ＮＯ）、ＣＰＵ３１は、Ｓ１７〜Ｓ３５を更に実行する。ＣＰＵ３１は、０番目記憶領域に新たな移動指令Ｆ０である移動指令Ｆ'０を記憶し（図４（ｈ）、Ｓ２３）、ｉを０から１にインクリメントする（Ｓ２５）。移動指令Ｆ'０は、例えば指令速度Ｆを示す。ＣＰＵ３１は、移動指令Ｆｉである移動指令Ｆ１をサーボアンプ４０に出力する（図４（ｈ）、Ｓ３１）。ＣＰＵ３１は、Ｓ１７〜Ｓ３５を更に繰り返して実行することで、移動指令Ｆ２〜Ｆ６、Ｆ'０を順に出力する。尚、図４（ｈ）の状態では、ＣＰＵ３１は、移動指令Ｆ６、Ｆ'０を出力しないが、説明の都合、移動指令Ｆ６、Ｆ'０とグラフの関係を、破線によって図示する。
【００３８】
ＣＰＵ３１は、Ｓ１７〜Ｓ３５を更に繰り返し実行することで、移動指令をサーボアンプ４０に順次出力する。主軸６４が加減速時間Ｔａをかけて加速度Ａで増速することで、主軸６４の速度は指令速度Ｆに達する。主軸６４は、指令速度Ｆで定速移動した後、加減速時間Ｔａをかけて加速度Ａで減速し停止する。尚、主軸６４が減速を開始する場合、ＣＰＵ３１は、Ｓ１９で移動指令として速度０を示す移動指令である零移動指令を生成し、Ｓ２１で主軸６４の予定停止位置に０を加算し、Ｓ２３で移動指令Ｆｉとして零移動指定を記憶し、処理をＳ２５に移行する。ＣＰＵ３１は移動指令Ｆｉが零移動指令であるので減速を継続し、主軸６４は停止する。表示部７７がＳ２１で表示する主軸６４の停止予定位置と、主軸６４の実際の停止位置は、主軸６４の移動終了時に互いに一致する。
【００３９】
主軸６４の移動が終了した場合（Ｓ３５：ＹＥＳ）、ＣＰＵ３１は、ＮＣプログラムの全てのブロックを読み込んだか否かを判断する（Ｓ３７）。ＣＰＵ３１は、ＮＣプログラムの全てのブロックを読込んでない場合（Ｓ３７：ＮＯ）、処理をＳ１０に移行する。ＣＰＵ３１は、ＮＣプログラムの全てのブロックを読込むまで（Ｓ３７：ＮＯ）、上述のＳ１０〜Ｓ３７を繰り返し実行する。ＣＰＵ３１は、全てのブロックを読込んだ場合（Ｓ３７：ＹＥＳ）、軸移動処理を終了する。
【００４０】
図２、図５〜図８を参照し、軸停止処理を説明する。軸停止処理は、移動中の主軸６４を停止する処理である。ＣＰＵ３１は、軸停止処理（Ｓ３９）を実行することで、移動指令Ｆｉの指令記憶領域３６への記憶（Ｓ２３）を中止する。アラーム発生時に指令記憶領域３６に残存する移動指令は、サーボアンプ４０への出力が未完了の移動指令であり、零移動指令を含む。ＣＰＵ３１は、ＲＡＭ３３の指令記憶領域３６に残存する移動指令に基づき、主軸６４を加速度Ａで減速停止する制御を実行する。ＣＰＵ３１は、発生したアラームの緊急度に応じて、主軸６４の停止の制御方法を変更する。以下、移動指令Ｆ'０の出力時（図４で示すＴ＝ｔａ）、アラームが発生した場合を例に、軸停止処理を説明する。
【００４１】
図５に示す如く、ＣＰＵ３１は、速度が０よりも大きな移動指令が指令記憶領域３６に残存するか否かを判断する（Ｓ５１）。移動指令が残存しない場合（Ｓ５１：ＮＯ）、主軸６４は停止している。ＣＰＵ３１は軸停止処理を終了し、軸移動処理（図３参照）を終了する。
【００４２】
移動指令が残存する場合（Ｓ５１：ＹＥＳ）、ＣＰＵ３１は、零移動指令をｉ番目の記憶領域に上書きする（Ｓ５３）。ＣＰＵ３１は、ｉをインクリメントして（Ｓ５５）、ｉがｎ以上か否かを判断する（Ｓ５６）。ｉがｎ未満である場合（Ｓ５６：ＮＯ）、ＣＰＵ３１は処理をＳ５９に移行する。ｉがｎ以上である場合（Ｓ５６：ＹＥＳ）は、ＣＰＵ３１は、ｉを０に初期化して（Ｓ５７）、処理をＳ５９に移行する。例えばアラーム発生時（Ｓ１７：ＹＥＳ）、ｉ＝０であるので（Ｓ５６：ＮＯ）、ＣＰＵ３１は処理をＳ５９に移行する。
【００４３】
ＣＰＵ３１は、Ｓ１７で検出したアラームの緊急度が高いか否かを判断する（Ｓ５９）。ＣＰＵ３１は、Ｓ１７で検出したアラームと一致する情報テーブル１００のアラームを特定し、特定したアラームに対応する緊急度を取得する（Ｓ５９）。取得したアラームの緊急度が高い場合（Ｓ５９：ＹＥＳ）、ＣＰＵ３１は処理をＳ６９（図７参照）に移行する。取得したアラームの緊急度が低い場合（Ｓ５９：ＮＯ）、ＣＰＵ３１は処理をＳ６１に移行する。
【００４４】
ＣＰＵ３１は減速停止距離Ｌａを取得する（Ｓ６１）。減速停止距離Ｌａは、ＲＡＭ３３の特定記憶領域３７に記憶の特定移動指令Ｆ'が示す速度で移動中の主軸６４が、加速度Ａで減速する場合に移動する距離である。故に減速停止距離Ｌａは式（Ｃ）によって求まる。
Ｌａ＝Ｆ'＊Ｆ'／２Ａ・・・（Ｃ）
ＣＰＵ３１は、特定記憶領域３７を参照して特定移動指令Ｆ'を取得し、特定移動指令Ｆ'が示す速度を式（Ｃ）に代入する。故にＣＰＵ３１は、減速停止距離Ｌａを取得する（Ｓ６１）。
【００４５】
ＣＰＵ３１は指令記憶領域３６に記憶した移動指令の合計を残存移動距離Ｌｂとして取得する（Ｓ６３）。残存移動距離Ｌｂは、指令記憶領域３６に残存する出力未完了の移動指令に従い主軸６４が移動した場合の移動距離である。
【００４６】
ＣＰＵ３１は、減速停止距離Ｌａが残存移動距離Ｌｂ以上であるか否かを判断する（Ｓ６５）。減速停止距離Ｌａが残存移動距離Ｌｂ未満である場合（Ｓ６５：ＮＯ）、ＣＰＵ３１はＲＡＭ３３に記憶の移動指令Ｆｉをサーボアンプ４０に出力する（Ｓ６７）。主軸６４は、サーボアンプ４０に入力の移動指令Ｆｉが示す速度で移動する。ＣＰＵ３１は、出力した移動指令Ｆｉを、特定移動指令Ｆ'としてＲＡＭ３３の特定記憶領域３７に上書きして記憶する（Ｓ６７）。Ｓ６７で記憶する特定移動指令Ｆ'は、サーボアンプ４０に出力した移動指令となる。ＣＰＵ３１が、Ｓ５１〜Ｓ６７を繰り返し実行することで（Ｓ６５：ＮＯ）、残存移動距離Ｌｂは低下する。
【００４７】
図６に示す如く、アラーム発生時、ＲＡＭ３３は特定記憶領域３７に移動指令Ｆ'０を特定移動指令Ｆ'として記憶している（Ｓ３３）。ＣＰＵ３１は、１番目記憶領域から６番目記憶領域の夫々に、指令速度Ｆを示す移動指令Ｆ１〜Ｆ６を記憶している（図６（ａ）参照）。減速停止距離Ｌａは残存移動距離Ｌｂ未満である（Ｓ６５：ＮＯ）。ＣＰＵ３１は、Ｓ５１〜Ｓ６７を３回繰り返して実行し、ＲＡＭ３３に記憶の移動指令Ｆ１〜Ｆ３を順に出力する（Ｓ６７、図６（ａ）〜（ｃ））。本例では、ＣＰＵ３１が出力する移動指令は、何れも指令速度Ｆを示す。故に、ＣＰＵ３１がＳ５１〜Ｓ６７を繰り返しても、減速停止距離Ｌａは一定である。ＣＰＵ３１が、一例として移動指令Ｆ３を出力した時（Ｓ６７）、減速停止距離Ｌａは、残存移動距離Ｌｂ以上になる（Ｓ６５：ＹＥＳ）。ＣＰＵ３１は処理をＳ６９に移行する。Ｓ６９の処理移行時、ＲＡＭ３３は、移動指令Ｆ３を特定移動指令Ｆ'として特定記憶領域３７に記憶しており（Ｓ６７）、ＣＰＵ３１は、ｉを３から４にインクリメントしている（Ｓ５５）。
【００４８】
図７に示す如く、ＣＰＵ３１は減速用移動指令Ｆｄを取得する（Ｓ６９）。減速用移動指令Ｆｄが示す速度は、特定移動指令Ｆ'が示す速度から加速度Ａで減速した速度である。ＣＰＵ３１は、減速用移動指令Ｆｄが示す速度が０より大きいか否かを判断する（Ｓ７１）。減速用移動指令Ｆｄの速度が０以下である場合（Ｓ７１：ＮＯ）、ＣＰＵ３１は、処理をＳ９９に移行する。減速用移動指令Ｆｄの速度が０よりも大きい場合（Ｓ７１：ＹＥＳ）、ＣＰＵ３１は特定記憶領域３７に記憶の特定移動指令Ｆ'を０に初期化する（Ｓ７３）。
【００４９】
ＣＰＵ３１は、移動指令Ｆｉが示す速度が、減速用移動指令Ｆｄが示す速度よりも大きいか否かを判断する（Ｓ７５）。移動指令Ｆｉの速度が、減速用移動指令Ｆｄの速度よりも大きい場合（Ｓ７５：ＹＥＳ）、ＣＰＵ３１は、移動指令Ｆｉを更新する（Ｓ７７）。詳細には、ＣＰＵ３１は、移動指令Ｆｉが示す速度から、減速用移動指令Ｆｄが示す速度で減算した速度を指令記憶領域３６のｉ番目記憶領域に上書きして記憶する（Ｓ７７）。ＣＰＵ３１は、特定移動指令Ｆ'が示す速度に、減速用移動指令Ｆｄが示す速度を加算した速度を特定記憶領域３７に上書きして記憶する（Ｓ７９）。Ｓ７９で記憶する特定移動指令Ｆ'は、サーボアンプ４０に出力予定の移動指令となる。
【００５０】
ＣＰＵ３１は、特定移動指令Ｆ'をサーボアンプ４０に出力する（Ｓ８１）。換言すると、ＣＰＵ３１は、指令記憶領域３６に残存する移動指令を、特定移動指令Ｆ'に変換してサーボアンプ４０に出力する。主軸６４の移動速度は、サーボアンプ４０に入力の特定移動指令Ｆ'が示す速度になる。ＣＰＵ３１は、速度が０よりも大きな移動指令が指令記憶領域３６に残存するか否かを判断する（Ｓ８３）。移動指令が残存する場合（Ｓ８３：ＹＥＳ）、ＣＰＵ３１は処理をＳ６９に移行する。移動指令Ｆｉが示す速度が、減速用移動指令Ｆｄが示す速度以下になるまで（Ｓ７５：ＹＥＳ）、ＣＰＵ３１は、Ｓ６９〜Ｓ８３を繰り返し実行する。移動指令Ｆｉの速度が、減速用移動指令Ｆｄの速度以下になると（Ｓ７５：ＮＯ）、ＣＰＵ３１は処理をＳ８５に移行する。
【００５１】
例えば図６に示す如く、減速停止距離Ｌａが残存移動距離Ｌｂ以上になった場合（Ｓ６５：ＹＥＳ）、指令記憶領域３６は、４番目記憶領域〜６番目記憶領域の夫々に、指令速度Ｆを示す移動指令を記憶している（図６（ｃ）参照）。特定移動指令Ｆ'は指令速度Ｆを示す。ＣＰＵ３１は、指令速度Ｆから加速度Ａで減速した速度を示す移動指令を、減速用移動指令Ｆｄとして取得する（Ｓ６９）。取得後の減速用移動指令Ｆｄは、図６（ｃ）の二点鎖線で示したＦｄに相当する。減速用移動指令Ｆｄが示す速度は、０よりも大きく（Ｓ７１：ＹＥＳ）、移動指令Ｆ４が示す速度は、減速用移動指令Ｆｄよりも大きい（図６（ｃ）、Ｓ７５：ＹＥＳ）。ＣＰＵ３１は、移動指令Ｆ４を更新する（Ｓ７７）。更新後の移動指令Ｆ４は、図６（ｄ）の符号Ｆ'４で示す。ＣＰＵ３１は、ＲＡＭ３３の４番目記憶領域の移動指令Ｆ４を移動指令Ｆ'４に更新する。ＣＰＵ３１は、特定移動指令Ｆ'を更新する（Ｓ７９）。ＣＰＵ３１が特定移動指令Ｆ'を０に初期化しているので（Ｓ７３）、更新後の特定移動指令Ｆ'は、減速用移動指令Ｆｄ（図６（ｃ）参照）と同じである。ＣＰＵ３１は、更新後の特定移動指令Ｆ'を特定記憶領域３７に上書きして記憶する（Ｓ７９）。図６（ｄ）では、説明の便宜上、更新後の特定移動指令Ｆ'を、ＲＡＭ３３の４番目記憶領域に図示する。ＣＰＵ３１は、更新後の特定移動指令Ｆ'をサーボアンプ４０に出力する（図６（ｄ）、Ｓ８１）。
【００５２】
移動指令がＲＡＭ３３に残存するので（図６（ｄ）、Ｓ８３：ＹＥＳ）、ＣＰＵ３１は減速用移動指令Ｆｄを更新する（Ｓ６９）。更新後の減速用移動指令Ｆｄは、図６（ｄ）の二点鎖線で示すＦｄに相当する。更新後の減速用移動指令Ｆｄは０よりも大きいので（Ｓ７１：ＹＥＳ）、ＣＰＵ３１は特定移動指令Ｆ'を０に初期化する（Ｓ７３）。更新後の移動指令Ｆｉである移動指令Ｆ'４は、減速用移動指令Ｆｄ以下となる（図６（ｄ）、Ｓ７５：ＮＯ）。
【００５３】
図７に示す如く、ＣＰＵ３１は特定移動指令Ｆ'が示す速度に、移動指令Ｆｉが示す速度を加算した速度を特定移動指令Ｆ'として特定記憶領域３７に上書きして記憶する（Ｓ８５）。Ｓ８５で記憶する特定移動指令Ｆ'は、サーボアンプ４０に出力予定の移動指令となる。ＣＰＵ３１は、減速用移動指令Ｆｄが示す速度から移動指令Ｆｉが示す速度を減算する（Ｓ８７）。ＣＰＵ３１は移動指令Ｆｉを０に初期化する（Ｓ８９）。ＣＰＵ３１は、速度が０よりも大きな移動指令がＲＡＭ３３の指令記憶領域３６に残存するか否かを判断する（Ｓ９１）。移動指令が指令記憶領域３６に残存しない場合（Ｓ９１：ＮＯ）、ＣＰＵ３１は処理をＳ８１に移行する。移動指令が残存する場合（Ｓ９１：ＹＥＳ）、ＣＰＵ３１は、ｉをインクリメントして（Ｓ９３）、ｉがｎ以上か否かを判断する（Ｓ９５）。ｉがｎ未満である場合（Ｓ９５：ＮＯ）、ＣＰＵ３１は処理をＳ７５に移行する。ｉがｎ以上である場合（Ｓ９５：ＹＥＳ）、ＣＰＵ３１は、ｉを０に初期化して（Ｓ９７）、処理をＳ７５に移行する。
【００５４】
例えば図６に示す如く、移動指令Ｆｉである移動指令Ｆ'４（図６（ｄ）参照）が、減速用移動指令Ｆｄ以下となり（Ｓ７５：ＮＯ）、ＣＰＵ３１は特定移動指令Ｆ'を更新する（Ｓ８５）。ＣＰＵ３１が特定移動指令Ｆ'を０に初期化しているので（Ｓ７３）、更新後の特定移動指令Ｆ'は、移動指令Ｆｉである移動指令Ｆ'４（図６（ｄ）参照）と同じになる。ＣＰＵ３１は減速用移動指令Ｆｄを更新する（Ｓ８７）。更新後の減速用移動指令Ｆｄは、減速用移動指令Ｆｄを、移動指令Ｆｉである移動指令Ｆ'４で減算した速度を示す。更新後の減速用移動指令Ｆｄは、図６（ｅ）の実線で示す符号Ｆｄに相当する。説明の都合、更新後の減速用移動指令Ｆｄを、ＲＡＭ３３の５番目記憶領域に図示する。ＣＰＵ３１は、移動指令Ｆｉである移動指令Ｆ'４を０に初期化する（Ｓ８９、図示略）。移動指令は、ＲＡＭ３３の５番目記憶領域と６番目記憶領域に残存する（Ｓ９１：ＹＥＳ）。ＣＰＵ３１は、ｉを４から５にインクリメントして（Ｓ９３、Ｓ９５：ＮＯ）、処理をＳ７５に移行する。
【００５５】
移動指令Ｆｉである移動指令Ｆ５は、減速用移動指令Ｆｄよりも大きい（Ｓ７５：ＹＥＳ）。ＣＰＵ３１は、移動指令Ｆｉである移動指令Ｆ５を移動指令Ｆ'５に更新する（Ｓ７７）。移動指令Ｆ'５が示す速度は、移動指令Ｆ５が示す速度から、Ｓ８７で更新した減速用移動指令Ｆｄ（図６（ｅ）の実線で示すＦｄ）の速度で減算した速度である。更新後の移動指令Ｆ５'は、図６（ｅ）のＦ'５で示す。ＣＰＵ３１は、特定移動指令Ｆ'を更新する（Ｓ７９）。更新後の特定移動指令Ｆ'は、移動指令Ｆ'４が示す速度に、減速用移動指令Ｆｄが示す速度を加算した速度を示す。故に、更新後の特定移動指令Ｆ'が示す速度は、図６（ｄ）の二点鎖線によって示す減速用移動指令Ｆｄと同じになる。ＣＰＵ３１は、更新後の特定移動指令Ｆ'をサーボアンプ４０に出力する（図６（ｅ）、Ｓ８１）。
【００５６】
図６（ｆ）に示す如く、移動指令は指令記憶領域３６に残存する（Ｓ８３：ＹＥＳ）。ＣＰＵ３１は、Ｓ８３で出力した特定移動指令Ｆ'が示す速度から、加速度Ａで減速した速度示す移動指令を、減速用移動指令Ｆｄに更新する（Ｓ６９）。更新後の減速用移動指令Ｆｄは、図６（ｅ）の二点鎖線で示すＦｄに相当する。移動指令Ｆ'５が示す速度（図６参照）は、減速用移動指令Ｆｄが示す速度よりも小さい（Ｓ７５：ＮＯ）。ＣＰＵ３１は、Ｓ８５〜Ｓ９５と、Ｓ７５〜Ｓ８１を順に実行することで、特定移動指令Ｆ'を出力する（図６（ｆ）、Ｓ８１）。
【００５７】
ＣＰＵ３１は、Ｓ６９〜Ｓ８３を更に繰り返し実行する。ＣＰＵ３１は、６番目記憶領域に残存する移動指令Ｆ６を、更に３回に分けて、特定移動指令Ｆ'に変換してサーボアンプ４０に出力する（図６（ｇ）、（ｈ）、（ｉ）参照）。図６（ｉ）で示す特定移動指令Ｆ'の速度は、ΔＶである。主軸６４はΔＶで移動後、停止する。速度が０よりも大きな移動指令が指令記憶領域３６からなくなるので（Ｓ８３：ＮＯ）、ＣＰＵ３１は軸停止処理を終了し、軸移動処理を終了する。故にＣＰＵ３１は、Ｓ６９〜Ｓ９７を繰り返し実行することで、移動指令Ｆ３〜Ｆ６を特定移動指令Ｆ'に６回に亘って変換して出力する。ＣＰＵ３１は軸停止処理を終了する。アラームの緊急度が小さい場合（Ｓ５９：ＮＯ）、主軸６４の停止位置は、アラーム発生前にＳ２１で更新した主軸６４の停止位置と一致する。
【００５８】
図５、図７、図８を参照し、アラームの緊急度が高い場合の軸停止処理を説明する。アラームの緊急度が高い場合（Ｓ５９：ＹＥＳ）、ＣＰＵ３１は処理をＳ６９に移行する。換言すると、緊急度の高いアラームが発生した場合（Ｓ１７：ＹＥＳ）、ＣＰＵ３１は、減速停止距離Ｌａと残存移動距離Ｌｂの大小関係に関わらず、上述したＳ６９〜Ｓ９７を実行する。例えば図８（ａ）〜（ｆ）に示す如く、ＣＰＵ３１は、移動指令Ｆ１〜Ｆ３を特定移動指令Ｆ'に変換してサーボアンプ４０に出力する処理を、６回に亘って実行する。６回に亘って出力する特定移動指令Ｆ'は何れも、図６を例に上述した、サーボアンプ４０へ出力する特定移動指令Ｆ'と同じである。
【００５９】
ＣＰＵ３１が６回目の特定移動指令Ｆ'を出力した時（Ｓ８１、図８（ｆ））、移動指令は４番目記憶領域から６番目記憶領域に残存する（Ｓ８３：ＹＥＳ）。ＣＰＵ３１は減速用移動指令Ｆｄを更新する（Ｓ６９）。６回目に出力する特定移動指令Ｆ'が示す速度は、ΔＶと同じであるので（図８（ｆ）参照）、更新後の減速用移動指令Ｆｄが示す速度は０になる（Ｓ６９、Ｓ７１：ＹＥＳ）。ＣＰＵ３１は処理をＳ９９に移行する。
【００６０】
ＣＰＵ３１は、表示部７７が表示する主軸６４の停止位置を更新し、更新する主軸６４の停止位置を指令記憶領域３６の位置記憶領域５７に記憶する（Ｓ９９）。ＣＰＵ３１は、Ｓ２１で記憶の主軸６４の停止位置から、ＲＡＭ３３の指令記憶領域３６に残存する移動指令に相当する移動距離分、主軸６４が戻って停止した場合の位置を、表示部７７に表示する（Ｓ９９）。故にＳ９９で表示部７７が表示する主軸６４の停止位置は、停止確定位置である。Ｓ２１で位置記憶領域５７に記憶の主軸６４の停止位置が（Ｘ，Ｙ，Ｚ）であり、且つ指令記憶領域３６に残存する移動指令に相当する移動距離が、Ｘ方向にΔｘ'、Ｙ方向にΔｙ'、Ｚ方向にΔｚ'であるとする。主軸６４の停予確定位置は、（Ｘ‐Δｘ'，Ｙ−Δｙ'，Ｚ−Δｚ'）になる。ＣＰＵ３１は、（Ｘ‐Δｘ'，Ｙ−Δｙ'，Ｚ−Δｚ'）を停止確定位置として表示部７７に表示し、且つ、停止確定位置を位置記憶領域５７に上書きして記憶する（Ｓ９９）。
【００６１】
以上説明した如く、主軸６４の移動中に、ストロークオーバ、切削油液面低下、グリス交換の何れかのアラームが発生した場合（Ｓ１７：ＹＥＳ、Ｓ５９：ＮＯ）、ＣＰＵ３１は、減速停止距離Ｌａが残存移動距離Ｌｂ以上になるまで（Ｓ６５：ＮＯ）、移動指令Ｆｉを出力する（Ｓ６７）。減速停止距離Ｌａが残存移動距離Ｌｂ以上になった後（Ｓ６５：ＹＥＳ）、ＣＰＵ３１は主軸６４の移動を減速停止する処理であるＳ６９〜Ｓ９７を実行する。一方、主軸６４の移動中に、電源オフ、電源低下、非常停止、扉開放、位置偏差過大のアラームが発生した場合（Ｓ１７：ＹＥＳ、Ｓ５９：ＹＥＳ）、減速停止距離Ｌａが残存移動距離Ｌｂ以上であるか否か関わらず、ＣＰＵ３１は、主軸６４の移動を減速停止するＳ６９〜Ｓ９７を実行する。アラームの緊急度が高い場合、アラームの緊急度が低い場合に比べ、ＣＰＵ３１は短時間で主軸６４を減速停止し易い。故に、工作機械５を即座に移動停止可能な数値制御装置１が実現できる。
【００６２】
ＣＰＵ３１がΔＶを示す特定移動指令Ｆ'を出力した後（Ｓ８１）、指令記憶領域３６に移動指令が残存する場合（Ｓ８３：ＹＥＳ）、主軸６４の実際の位置と、位置記憶領域５７に記憶の停止予定位置は、互いに異なる。減速用移動指令Ｆｄが示す速度は０以下になるので（Ｓ７１：ＮＯ）、ＣＰＵ３１は、位置記憶領域５７に記憶の主軸６４の停止位置を、実際の主軸６４の停止位置と一致するように、更新する（Ｓ９９）。故にＣＰＵ３１は、減速停止する主軸６４の正確な停止位置を記憶装置３４に記憶できる。
【００６３】
発生したアラームの緊急度が高い場合、減速停止距離Ｌａが残存移動距離Ｌｂ以上であるか否か関わらず、ＣＰＵ３１は主軸６４の移動を減速停止するＳ６９〜Ｓ９７を実行する。故に、主軸６４が緊急停止する必要がある場合に、数値制御装置１は主軸６４を即座に停止できる。
【００６４】
以上説明にて、主軸６４は本発明の軸の一例である。ＲＡＭ３３、記憶装置３４は本発明の記憶手段の一例である。アラーム発生時に（Ｓ１７：ＹＥＳ）、指令記憶領域３６に残存する移動指令Ｆｉは、本発明の残存移動指令の一例である。電源オフ、電源低下、非常停止、扉開放、位置偏差過大の夫々のアラームは、本発明の特定アラームの一例である。Ｓ８１でＣＰＵ３１が出力する特定移動指令Ｆ'は本発明の減速停止指令の一例である。
【００６５】
Ｓ１９を実行するＣＰＵ３１は本発明の生成部の一例である。Ｓ２３を実行するＣＰＵ３１は本発明の記憶制御部の一例である。Ｓ３１を実行するＣＰＵ３１は本発明の出力制御部の一例である。Ｓ３９を実行するＣＰＵ３１は本発明の中止制御部の一例である。Ｓ５９を実行するＣＰＵ３１は本発明の判断部の一例である。Ｓ６５、Ｓ６７を実行するＣＰＵ３１は本発明の特定出力制御部の一例である。アラームの緊急度が低い場合に（Ｓ５９：ＮＯ）、Ｓ８１を実行するＣＰＵ３１は本発明の第一減速停止部の一例である。アラームの緊急度が高い場合に（Ｓ５９：ＹＥＳ）、Ｓ８１を実行するＣＰＵ３１は本発明の第二減速停止部の一例である。Ｓ２１を実行するＣＰＵ３１は本発明の位置記憶制御部の一例である。Ｓ９９を実行するＣＰＵ３１は本発明の位置補正制御部の一例である。
【００６６】
Ｓ１９は本発明の生成工程の一例である。Ｓ２３は本発明の記憶制御工程の一例である。Ｓ３１は本発明の出力制御工程の一例である。Ｓ３９は本発明の中止制御工程の一例である。Ｓ５９は本発明の判断工程の一例である。Ｓ６５、Ｓ６７は本発明の特定出力制御工程の一例である。アラームの緊急度が低い場合の（Ｓ５９：ＮＯ）、Ｓ８１は本発明の第一減速工程の一例である。アラームの緊急度が高い場合の（Ｓ５９：ＹＥＳ）、Ｓ８１は本発明の第二減速工程の一例である。
【００６７】
本発明は上記実施形態に限定しない。アラームの緊急度が高い場合（Ｓ５９：ＹＥＳ）、ＣＰＵ３１は、指令記憶領域３６に残存する移動指令に依らない減速移動指令を、サーボアンプ４０に出力してもよい。例えば、アラームの緊急度が高い場合（Ｓ５９：ＹＥＳ）、ＣＰＵ３１は、例えば加速度２Ａ等の任意の加速度で減速停止する減速移動指令を、サーボアンプ４０に出力してもよい。
【００６８】
主軸６４は、指令速度Ｆで定速移動する代わりに、増速と減速を繰り返しながら移動してもよい。即ち、ＣＰＵ３１がＳ５１〜Ｓ６７を繰り返す場合、残存移動距離Ｌｂだけでなく減速停止距離Ｌａが、低下してもよい。
【００６９】
情報テーブル１００の電源オフ、電源低下、非常停止等のアラームは、主軸６４を緊急停止する情報を示す代わりに、被加工物への加工工程の終了後に停止する情報を示してもよい。
【００７０】
情報テーブル１００のアラームの種類が示す情報は、上記実施形態に限定しない。アラームの種類が示すアラームは、例えば、モータ５０の温度が所定温度を上回ったアラーム、主軸６４の移動速度が指令速度Ｆを超えたアラームであってもよい。これらのアラームは、緊急度が高くてもよいし、緊急度が低くてもよい。
【００７１】
ＲＡＭ３３が指令記憶領域３６と特定記憶領域３７を含む代わりに、記憶装置３４が、指令記憶領域３６と特定記憶領域３７を含んでもよい。また、記憶装置３４が位置記憶領域５７を含む代わりに、ＲＡＭ３３が位置記憶領域５７を含んでもよい。
【符号の説明】
【００７２】
１      数値制御装置
５      工作機械
３１    ＣＰＵ
３３    ＲＡＭ
３４    記憶装置
６４    主軸
Ｆ'    特定移動指令
Ｆｉ    移動指令
Ｌａ    減速停止距離
Ｌｂ    残存移動距離
【図１】
2018055395.tif 000003
【図２】
2018055395.tif 000004
【図３】
2018055395.tif 000005
【図４】
2018055395.tif 000006
【図５】
2018055395.tif 000007
【図６】
2018055395.tif 000008
【図７】
2018055395.tif 000009
【図８】
2018055395.tif 000010