(57)【特許請求の範囲】
【請求項１】
ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する工作機械の数値制御装置において、
加減速に必要な時間分の複数の移動指令を蓄積可能な移動指令バッファを有し、この移動指令バッファに蓄積した複数の移動指令を順次出力するように構成し、
前記停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止するとともに、移動指令バッファに蓄積した移動指令を全て出力する減速停止制御手段であって、所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力する減速停止制御手段を備え、
前記減速停止制御手段は、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定し、否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には各減速用移動指令を作成して出力することを特徴とする工作機械の数値制御装置。
【請求項２】
ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する数値制御装置を備え、この数値制御装置が加減速に必要な時間分の複数の移動指令を蓄積可能な移動指令バッファを有し、この移動指令バッファに蓄積した複数の移動指令を順次出力するように構成した工作機械の数値制御方法において、
前記数値制御装置に停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止させる第１のステップと、
次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定する第２のステップと、
次に、前記数値制御装置に移動指令バッファに蓄積した移動指令を全て出力させる第３のステップであって、前記判定において否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３のステップと、
を備えたことを特徴とする工作機械の数値制御方法。
【請求項３】
ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する数値制御装置を備え、この数値制御装置が加減速に必要な時間分の複数の移動指令を蓄積可能な移動指令バッファを有し、この移動指令バッファに蓄積した複数の移動指令を順次出力する処理を数値制御装置のコンピュータに実行させる工作機械の数値制御プログラムにおいて、
前記数値制御装置に停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止させる第１の手順と、
次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定する第２の手順と、
次に、前記移動指令バッファに蓄積した移動指令を全て出力させる第３の手順であって、前記判定において否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力させ、肯定判定した場合には所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３の手順と、
を前記コンピュータに実行させることを特徴とする工作機械の数値制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械の数値制御技術に関し、特に、数値制御装置に停止指令が入力された場合に移動指令の出力を停止させる減速停止制御技術を改良したものである。
【背景技術】
【０００２】
従来、工作機械の数値制御装置は、ＮＣプログラム（ＮＣ言語で記載された）に基づいて複数の移動指令を作成して所定微小時間（例えば、２ｍｓ）毎に順次駆動部側に出力するとともに、停止指令が入力された場合に移動指令の出力を停止する。しかし、停止指令の入力時直ちに移動指令の出力を停止すると、工作機械が急停止し、特にモータ軸が高速回転している場合には大きな衝撃が発生する。
【０００３】
そこで、特許文献１に記載の工作機械の数値制御方法では、ファンクションジェネレータが出力した移動指令を移動指令バッファに一旦蓄積し、その移動指令を移動指令バッファから積算器に出力する。つまり、複数の移動指令を順次移動指令バッファを介して遅延させて出力するようにして、停止指令が入力された場合には、移動指令バッファへの移動指令の蓄積を中止するとともに、工作機械の急停止を抑制するように、移動指令バッファに蓄積した複数の移動指令を用いて減速停止させる。
【０００４】
具体的には、停止指令の入力時から直ちに、減速停止させるために移動指令バッファに蓄積した移動指令から複数の減速用移動指令を作成して順次出力する。すると、停止時に移動指令バッファ内には出力済みとなっていない移動指令が残り、その残存移動指令が運転再開時の加速用になる。つまり、運転再開時、加速させるために移動指令バッファ内の残存移動指令から複数の加速用移動指令を作成して順次出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１５４００９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１に記載の工作機械の数値制御方法では、減速停止時、移動指令バッファに蓄積した移動指令を全て出力せず、運転再開時の加速用に残すようにしている。故に、工作機械の制御上の機械位置（座標）については、ファンクションジェネレータが出力した移動指令に基づいて更新しつつ記憶しているため、その制御上の機械位置と実際の機械位置とに不整合が生じる。
【０００７】
本発明の目的は、工作機械の急停止、並びにそれにより発生する衝撃を緩和するとともに、減速停止時の工作機械の制御上の機械位置（座標）と実際の機械位置とを整合させることができる、工作機械の数値制御技術を提供することである。
【課題を解決するための手段】
【０００８】
請求項１の発明は、ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する工作機械の数値制御装置において、加減速に必要な時間分の複数の移動指令を蓄積可能な移動指令バッファを有し、この移動指令バッファに蓄積した複数の移動指令を順次出力するように構成し、前記停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止するとともに、移動指令バッファに蓄積した移動指令を全て出力する減速停止制御手段であって、所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力する減速停止制御手段を備え、前記減速停止制御手段は、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定し、否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には各減速用移動指令を作成して出力することを特徴とする。
【０００９】
この発明では、停止指令が入力されない場合には、複数の移動指令を作成して微小時間毎に順次移動指令バッファに蓄積し、この複数の移動指令を微小時間毎に順次移動指令バッファから出力する。つまり、複数の移動指令を順次移動指令バッファを介して遅延させて出力する。停止指令が入力された場合、減速停止制御手段が、移動指令バッファへの移動指令の蓄積を中止するとともに、移動指令バッファに蓄積した移動指令を全て出力し、この場合、所定の減速度で減速停止させるために移動指令バッファに蓄積した移動指令から複数の減速用移動指令を作成して順次出力する。
【００１０】
また、移動指令バッファからの移動指令の出力毎に低下する残存移動距離が減速停止距離に必要な適当距離よりも大きい場合には、移動指令バッファ内の各移動指令をそのまま出力し、残存移動距離が減速停止距離に必要な適当距離になった場合には、その後、各減速用移動指令を作成して出力する。
【００１１】
さらに、停止指令が入力された場合に、移動指令バッファ内の各移動指令をそのまま出力するか各減速用移動指令を作成して出力するかの判定が簡単化し、移動指令バッファに蓄積した移動指令を全て出力して所定の減速度で減速停止させる処理が簡単化する。
【００１２】
請求項２の発明は、ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する数値制御装置を備え、この数値制御装置が加減速に必要な時間分の複数の移動指令を蓄積可能な移動指令バッファを有し、この移動指令バッファに蓄積した複数の移動指令を順次出力するように構成した工作機械の数値制御方法において、前記数値制御装置に停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止させる第１のステップと、次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定する第２のステップと、次に、前記数値制御装置に移動指令バッファに蓄積した移動指令を全て出力させる第３のステップであって、前記判定において否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３のステップとを備えたことを特徴とする。従って、請求項１と同様の作用を奏する。
【００１３】
請求項３の発明は、ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する数値制御装置を備え、この数値制御装置が加減速に必要な時間分の複数の移動指令を蓄積可能な移動指令バッファを有し、この移動指令バッファに蓄積した複数の移動指令を順次出力する処理を数値制御装置のコンピュータに実行させる工作機械の数値制御プログラムにおいて、前記数値制御装置に停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止させる第１の手順と、次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定する第２の手順と、次に、前記移動指令バッファに蓄積した移動指令を全て出力させる第３の手順であって、前記判定において否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力させ、肯定判定した場合には所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３の手順とを前記コンピュータに実行させることを特徴とする。従って、請求項１と同様の作用を奏する。
【発明の効果】
【００１４】
請求項１の工作機械の数値制御装置によれば、停止指令が入力された場合、減速停止制御手段が、移動指令バッファへの移動指令の蓄積を中止するとともに、移動指令バッファに蓄積した移動指令を全て出力し、この場合、所定の減速度で減速停止させるために移動指令バッファに蓄積した移動指令から複数の減速用移動指令を作成して順次出力し、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、残存移動距離が減速停止距離以下か否か判定し、否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には各減速用移動指令を作成して出力する。その結果、工作機械の急停止、並びにそれにより発生する衝撃を緩和することができ、しかも、移動指令バッファに蓄積した移動指令を全て出力するため、つまり、移動指令バッファ内に移動指令が残らないため、減速停止時の工作機械の制御上の機械位置（座標）と実際の機械位置とを整合させることができる。
【００１５】
また、移動指令バッファからの移動指令の出力毎に低下する残存移動距離が減速停止距離に必要な適当距離よりも大きい場合には、移動指令バッファ内の各移動指令をそのまま出力し、残存移動距離が減速停止距離に必要な適当距離になった場合には、その後、各減速用移動指令を作成して出力することができる。つまり、残存移動距離が減速停止距離に必要な適当距離になる迄は強制的に減速しないようにして、高速移動をできるだけ維持することができ、最終的に減速停止させることで、停止指令が入力されてから停止する迄の時間を短くできる。
【００１６】
さらに、減速停止制御手段は、前記残存移動距離が前記減速停止距離以下か否か判定し、否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には各減速用移動指令を作成して出力するので、停止指令が入力された場合に、移動指令バッファ内の各移動指令をそのまま出力するか各減速用移動指令を作成して出力するかの判定を簡単化し、移動指令バッファに蓄積した移動指令を全て出力して所定の減速度で減速停止させる処理を簡単化できる。
【００１７】
請求項２のＮＣプログラムの数値制御方法によれば、数値制御装置に停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止させる第１のステップと、次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定する第２のステップと、次に、前記数値制御装置に移動指令バッファに蓄積した移動指令を全て出力させる第３のステップであって、前記判定において否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力し、肯定判定した場合には所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３のステップとを備えたので、請求項１と同様に構成することができ、請求項１と同様の効果を奏する。
【００１８】
請求項３の工作機械の数値制御プログラムによれば、数値制御装置に停止指令が入力された場合に、移動指令バッファへの移動指令の蓄積を中止させる第１の手順と、次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離を算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離を算出し、前記残存移動距離が前記減速停止距離以下か否か判定する第２の手順と、次に、前記移動指令バッファに蓄積した移動指令を全て出力させる第３の手順であって、前記判定において否定判定した場合には移動指令バッファ内の各移動指令をそのまま出力させ、肯定判定した場合には所定の減速度で減速停止させるために前記蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３の手順とを工作機械の数値制御装置のコンピュータに実行させるので、請求項１と同様に構成することができ、請求項１と同様の効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】本実施例に係る工作機械の数値制御装置の機能構成図である。
【図２】工作機械の制御系のブロック図である。
【図３】数値制御処理のフローチャートである。
【図４】数値制御処理の減速停止制御のフローチャートである。
【図５】時間と速度の関係及び処理周期、加減速時間を示す図である。
【図６】加速の際の時間と速度の関係及び移動指令バッファ内の詳細を示す図である。
【図７】減速の際の時間と速度の関係及び移動指令バッファ内の詳細を示す図である。
【図８】減速の際の時間と速度の関係及び移動指令バッファ内の詳細を示す図である。
【発明を実施するための形態】
【００２０】
本発明の工作機械の数値制御技術は、ＮＣプログラムに基づいて複数の移動指令を作成して所定微小時間毎に順次出力するとともに、停止指令が入力された場合に移動指令の出力を停止する工作機械の数値制御装置に適用したものである。以下、発明を実施するための形態について実施例に基づいて説明する。尚、ＮＣプログラムとは、ＮＣ言語で記載されたプログラムが一般的であるが、対話形式で作成されたプログラムでもよい。
【実施例】
【００２１】
図１は本実施例の工作機械の数値制御装置１の機能構成図である。
ＮＣプログラム解読部２は、ＮＣプログラムを解析し、その解析内容を移動指令実行部３へ送信する。移動指令実行部３は、ＮＣプログラム解読部２から得た解析内容を基に複数の移動指令を作成して移動指令バッファ４に蓄積する。移動指令実行部３が作成する各移動指令は、所定微小時間ΔＴ（例えば、ΔＴ（単位時間）＝２ｍｓ）あたりの移動指令であり、移動速度に関する指令である。移動指令バッファ４は、複数個（ｎ個：例えば、ｎ＝７）のバッファを有し、つまり、ｎ個の移動指令を蓄積できる容量をもっている。
【００２２】
ＮＣプログラムの実行中は、移動指令実行部３が複数の移動指令を微小時間毎に順次作成して移動指令バッファ４に蓄積し、この複数の移動指令を微小時間毎に順次移動指令バッファ４からサーボ制御部５に出力する。つまり、移動指令実行部３から複数の移動指令を、順次、移動指令バッファ４を介して、移動指令実行部３での作成時（出力時）から所定の出力遅延時間Ｔａ（例えば、Ｔａ＝１４ｍｓ（ｎ＊ΔＴ））遅延させてサーボ制御部５に出力する。移動指令バッファ４は、運転開始時及び運転停止時以外は常にｎ個又はｎ−１個の（速度０よりも大きな）移動指令を蓄積した状態になる。サーボ制御部５は、移動指令バッファ４から得た複数の移動指令を基にサーボモータＭを駆動制御する。
【００２３】
緊急停止処理等により、停止制御部６に停止指令が入力された場合、停止制御部６は、移動指令実行部３による移動指令バッファ４への移動指令の蓄積（移動指令の作成）を中止する。停止制御部６は、移動指令バッファ４に蓄積した移動指令を全てサーボ制御部５に出力する。この場合、所定の減速度Ａで減速停止させるために移動指令バッファ４に蓄積した移動指令から複数の減速用移動指令を微小時間ΔＴ毎に順次作成してサーボ制御部５に出力する。この停止制御部６が、特許請求の範囲に記載の減速停止制御手段に相当する。
【００２４】
停止制御部６は、停止指令が入力されたときの移動速度Ｖから所定の減速度Ａで減速停止させるのに必要な減速停止距離Ｌａを算出する。停止制御部６は、移動指令バッファ４内の出力済みとなっていない残存移動指令から残存移動距離Ｌｂを算出する。停止制御部６は、減速停止距離Ｌａと残存移動距離Ｌｂとを比較して、移動指令バッファ４内の各移動指令をそのままサーボ制御部５に出力するか各減速用移動指令を作成してサーボ制御部５に出力するかを判定する。
【００２５】
前記判定においては、残存移動距離Ｌｂが減速停止距離Ｌａ以下か否か判定する。停止制御部６は、否定判定した場合、移動指令バッファ４内の各移動指令をそのままサーボ制御部５に出力する。停止制御部６は、肯定判定した場合、各減速用移動指令を作成してサーボ制御部５に出力する。
【００２６】
次に、数値制御装置１を搭載した工作機械の制御系の電気的構成について説明する。
図２に示すように、数値制御装置１は、入出力インタフェース３４と、ＣＰＵ３１とＲＯＭ３２とＲＡＭ３３とを含むマイクロコンピュータと、サーボアンプ４１〜４５とを備えている。サーボアンプ４１〜４５は、夫々Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５に接続している。
【００２７】
Ｘ軸モータ５１、Ｙ軸モータ５２は、テーブル（図示略）をＸ軸方向、Ｙ軸方向に移動させる為のものである。マガジンモータ５５は工具マガジン(図示略)を回動させるものである。主軸モータ５４は、主軸（図示略）を回転駆動するものである。尚、Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５は、夫々エンコーダ５１ａ〜５５ａを備えている。
【００２８】
サーボアンプ４１〜４５は、ＣＰＵ３１からの移動指令量を受けて、モータ５１〜５５に駆動電流を出力する。サーボアンプ４１〜４５は、エンコーダ５１ａ〜５５ａから位置フィードバック信号を受けて、位置のフィードバック制御を行う。サーボアンプ４１〜４５は、サーボ制御部５として機能する。数値制御装置３０には、表示器６２と、操作キー等を備えた操作入力部６１を接続している。
【００２９】
ＲＯＭ３２は、工作機械の動作を制御するメインの制御プログラム等を記憶している。ＲＡＭ３３は、ユーザーが入力して登録した種々のＮＣプログラムが記憶されている。ＲＡＭ３３は、移動指令バッファ４としても機能する。
次に、数値制御装置１が実行する数値制御処理について、図３、図４のフローチャートに基づいて説明する。この数値制御処理はＮＣプログラムの実行開始と共に開始する。
図３に示すように、先ず、ＣＰＵ３１は、ＮＣプログラムの１ブロックを解釈する（Ｓ１）。ＣＰＵ３１は、解釈したブロックの指令から指令速度Ｆ（ｍｍ／ｓ）を読出し、速度０から所定の加速度Ａ（ｍｍ／ｓ2 ）で加速した場合に指令速度Ｆに到達する迄の時間（加減速時間であり出力遅延時間）Ｔａ（ｓ）＝Ｆ／Ａを計算する（Ｓ２）。
【００３０】
次に、ＣＰＵ３１は、Ｓ２で計算した加減速時間Ｔａと、１個の移動指令の移動指令バッファ４への蓄積及び移動指令バッファ４からの出力に要する処理周期である所定微小時間ΔＴから、移動指令バッファ４内のバッファの個数ｎを計算し設定する（Ｓ３）。具体的には、移動指令バッファ４に蓄積可能な移動指令の最大個数ｎ＝Ｔａ／ΔＴ（例えば、７個）を計算する。Ｓ１〜Ｓ３が、プログラム解読部２から指令を受信する毎に行う処理であり、Ｓ４以降の処理が、プログラム解読部２から受信した指令を実行し終えるまで繰返し行う処理である。
【００３１】
図５は、速度０から加速度Ａで加速して指令速度Ｆに到達して、一定の指令速度Ｆとなり、その後停止指令が入力され、指令速度Ｆから減速度Ａで減速して速度０になる場合の時間Ｔと速度Ｖの関係と、処理周期ΔＴと加減速時間Ｔａを示している。
【００３２】
図３に示すように、Ｓ１〜Ｓ３の実行後、次に、停止制御部６に停止指令が入力されたか否か判定する（Ｓ４）。Ｓ４においてNoの場合、ＣＰＵ３１は、前回計算の移動指令（ＮＣプログラムの実行開始時は０）を基に移動指令を計算し作成する（Ｓ５）。この移動指令（速度）は、指令速度Ｆに到達する迄は加速度Ａに基づいて増大していき、指令速度Ｆに到達すると一定（指令速度Ｆ）になる。次に、ＣＰＵ３１は、Ｓ５で作成した移動指令を移動指令バッファ４のｎ個のバッファ（メモリ領域）のうちのｉ番目のバッファに格納し蓄積する（Ｓ６）。ここで、Ｓ５で作成した移動指令を基に工作機械の制御上の機械位置（座標）を演算する。該演算した機械位置は、ＲＡＭ３３に記憶される。
【００３３】
移動指令バッファ４は、ｎ個のバッファに０〜（ｎ−１）の番号を対応付け、ｉが移動指令の蓄積及び出力の対象となるバッファを示すインデックスとなる。このｉについてはＮＣプログラムの実行開始時に０に初期設定する。移動指令バッファ４のｎ個全てのバッファについてもＮＣプログラムの実行開始時に０に初期設定する。
【００３４】
次に、Ｓ６の後、ＣＰＵ３１は、ｉに１を加算し（Ｓ７）、ｉ≧ｎか否か判定する（Ｓ８）。Ｓ８においてYes の場合、ＣＰＵ３１は、ｉに０を設定する（Ｓ９）。その後、ＣＰＵ３１は、移動指令バッファ４のｉ番目のバッファの移動指令Ｆｉをサーボ制御部５に出力し、出力した移動指令ＦｉをＦ'としてＲＡＭ３３に記憶する（Ｓ１０）。次に、ＣＰＵ３１は、解釈した移動指令の移動が終了したか否か判定する（Ｓ１１）。移動が終了していない場合（Ｓ１１；No）、ＣＰＵ３１は、処理をＳ４へ移行する。Ｓ１１では、Ｓ１において解釈した1ブロックの指令と、Ｓ１０においてサーボ制御部５に送信した移動指令の累積値とが等しいとき、移動が終了したと判定する。移動が終了したと判定した場合（Ｓ１１；Yes）、ＣＰＵ３１は、ＮＣプログラムが終了したか否か判定する（Ｓ１２）。ＮＣプログラムが終了していない場合（Ｓ１２；No）、ＣＰＵ３１は、処理をＳ１へ移行し、ＮＣプログラムが終了した場合（Ｓ１２；Yes）、ＣＰＵ３１は、この数値制御処理を終了する。
【００３５】
前述したように、ＣＰＵ３１は、所定微小時間ΔＴ毎に、作成した移動指令を移動指令バッファ４のｉ番目のバッファに蓄積するとともに、移動指令バッファ４のｉ＋１番目（但し、ｉ＋１が７となる場合は０番目）のバッファに蓄積した移動指令をサーボ制御部５に出力する。つまり、移動指令バッファ４に蓄積した移動指令を、その蓄積時からバッファの個数ｎに応じた出力遅延時間Ｔａだけ遅延させてサーボ制御部５に出力することになる。但し、ＮＣプログラムの実行開始時からｎ個の移動指令を移動指令バッファ４に蓄積する迄は、図５に示すように、微小時間毎に速度が増大する移動指令を移動指令バッファ４に格納していくことになる。このとき、移動指令バッファ４にはサーボ制御部５に出力する移動指令を蓄積しておらず、その際、速度０の移動指令をサーボ制御部５に出力するものとする。
【００３６】
Ｓ４において、停止制御部６に停止指令が入力された場合（Ｓ４；Yes ）、ＣＰＵ３１は、処理をＳ５へ移行しなくなる。ＣＰＵ３１は、移動指令の作成及び移動指令バッファ４への蓄積を中止して、図４に示すように、Ｓ１３以降を実行する。このＳ１３以降の処理が減速停止制御である。
【００３７】
図４に示すように、ＣＰＵ３１は、移動指令バッファ４内に（出力済みとなっていない速度０よりも大きい）移動指令があるか否か判定し（Ｓ１３）、該移動指令がない場合（Ｓ１３；No）、この数値制御処理（減速停止制御）を終了する。移動指令がある場合（Ｓ１３；Yes）、ＣＰＵ３１は、速度０の移動指令を移動指令バッファ４のｉ番目のバッファに格納し蓄積する（Ｓ１４）。次に、ＣＰＵ３１は、ｉに１を加算し（Ｓ１５）、ｉ≧ｎか否か判定する（Ｓ１６）。i≧ｎの場合（Ｓ１６；Yes）、ＣＰＵ３１はｉに０を設定する（Ｓ１７）。
【００３８】
その後、ＣＰＵ３１は、停止指令が入力されたときの移動速度、つまり前回サーボ制御部５に出力した移動指令Ｆ'から所定の減速度Ａで減速停止させるのに必要な減速停止距離ＬａをＬａ＝Ｆ'*Ｆ'／２Ａとして算出する（Ｓ１８）。次に、ＣＰＵ３１は移動指令バッファ４内の出力済みとなっていない残存移動指令から残存移動距離Ｌｂを算出する（Ｓ１９）。その後、ＣＰＵ３１は、減速停止距離Ｌａと残存移動距離Ｌｂとを比較して、移動指令バッファ４内の各移動指令を直接サーボ制御部５に出力するか各減速用移動指令を作成してサーボ制御部５に出力するかを判定する（Ｓ２０）。
【００３９】
残存移動距離Ｌｂが減速停止距離Ｌａよりも大きい場合（Ｓ２０；No）、ＣＰＵ３１は、ｉ番目のバッファの移動指令をサーボ制御部５に出力し、且つ該移動指令をＦ'としてＲＡＭ３３に記憶し（Ｓ２１）、処理をＳ１３へ移行する。残存移動距離Ｌｂが減速停止距離Ｌａ以下の場合（Ｓ２０；Yes） 、ＣＰＵ３１は前回サーボ制御部５に出力した移動指令Ｆ'から所定の減速度Ａで減速した減速用移動指令Ｆｄを計算する（Ｓ２２）。次に、ＣＰＵ３１は、今回サーボ制御部５に出力する移動指令Ｆ'を０で初期化する（Ｓ２３）。
【００４０】
その後、ＣＰＵ３１は、移動指令バッファ４のｉ番目のバッファの移動指令ＦiからＳ２２で計算した減速用移動指令Ｆｄを減算した値が０より大きいか否かを判定する（Ｓ２４）。該減算した値が０より大きい場合（Ｓ２４；Yes）、ＣＰＵ３１は、移動指令バッファのｉ番目の移動指令Ｆｉから減速用移動指令Ｆｄを減算して移動指令バッファ４のｉ番目の移動指令Ｆｉを更新し（Ｓ２５）、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加算し（Ｓ２６）、今回サーボ制御部５に出力する移動指令Ｆ'をサーボ制御部５に出力する（Ｓ２７）。その後、ＣＰＵ３１は、移動指令バッファ４内に移動指令があるか否か判定する（Ｓ２８）。移動指令バッファ４内に移動指令がある場合（Ｓ２８；Yes）、ＣＰＵ３１は、処理をＳ２２へ移行する。移動指令バッファ４内に移動指令がない場合（Ｓ２８；No）、この数値制御処理を終了する。
【００４１】
Ｓ２４において、移動指令バッファ４のｉ番目のバッファの移動指令ＦiからＳ２２で計算した減速用移動指令Ｆｄを減算した値が０以下の場合（Ｓ２４；No）、ＣＰＵ３１は、今回サーボ制御部５に出力する移動指令Ｆ'に移動指令バッファ４のｉ番目の移動指令Ｆｉを加算する（Ｓ２９）。次に、ＣＰＵ３１は、減速用移動指令Ｆｄから移動指令バッファ４のｉ番目の移動指令Ｆｉを減算して減速用移動指令Ｆｄを更新し（Ｓ３０）、ＣＰＵ３１は、移動指令バッファ４のｉ番目の移動指令Ｆｉを０で初期化する（Ｓ３１）。その後、ＣＰＵ３１は、移動指令バッファ４内に移動指令があるか否か判定する（Ｓ３２）。Ｓ３２において、移動指令バッファ４内に移動指令がない場合（Ｓ３２；Yes）、ＣＰＵ３１は、ｉに１加算し（Ｓ３３）、ｉ≧ｎか否か判定する（Ｓ３４）。ｉ≧ｎの場合（Ｓ３４；Yes）、ＣＰＵ３１はｉに０を設定し（Ｓ３０）、その後、処理をＳ２４へ移行する。移動指令バッファ４内に移動指令がある場合（Ｓ３２；No）、ＣＰＵ３１は処理をＳ２７に移行する。前述の場合、今回サーボ制御部５に出力する移動指令Ｆ'がＳ２２で計算した減速用移動指令Ｆｄよりも小さい場合があるが、移動指令Ｆ'をサーボ制御部５に出力する。
【００４２】
ＣＰＵ３１は、数値制御装置１に停止指令が入力された場合に、移動指令バッファ４への移動指令の蓄積を中止させる第１の手順に相当するＳ４等と、次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離Ｌａを算出するとともに、移動指令の出力時に、移動指令バッファ内の出力済みとなっていない残存移動指令から残存移動距離Ｌｂを算出し、残存移動距離Ｌｂが減速停止距離Ｌａ以下か否か判定する第２の手順に相当するＳ１８〜Ｓ２０等と、次に、移動指令バッファ４に蓄積した移動指令を全て出力させ、この場合、前記判定において否定判定した場合には移動指令バッファ４内の各移動指令をそのまま出力し、肯定判定した場合には所定の減速度Ａで減速停止させるために移動指令バッファ４に蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３の手順に相当するＳ２１〜Ｓ３５等とを実行する。停止制御部６は、Ｓ４及びＳ１８〜Ｓ３５を実行するＣＰＵ３１に相当する。
【００４３】
また、以上の処理による工作機械の数値制御方法において、数値制御装置１に停止指令が入力された場合に、移動指令バッファ４への移動指令の蓄積を中止させる第１のステップがＳ４等に相当し、次に、停止指令が入力されたときの移動速度から所定の減速度で減速停止させるのに必要な減速停止距離Ｌａを算出するとともに、移動指令の出力時に、移動指令バッファ４内の出力済みとなっていない残存移動指令から残存移動距離Ｌｂを算出し、残存移動距離Ｌｂが減速停止距離Ｌａ以下か否か判定する第２のステップがＳ１８〜Ｓ２０等に相当し、次に、数値制御装置１に移動指令バッファ４に蓄積した移動指令を全て出力させ、この場合、前記判定において否定判定した場合には移動指令バッファ４内の各移動指令をそのまま出力させ、肯定判定した場合には所定の減速度Ａで減速停止させるために移動指令バッファ４に蓄積した移動指令から複数の減速用移動指令を作成して順次出力させる第３のステップがＳ２１〜Ｓ３５等に相当する。
【００４４】
以上説明したＳ１３以降の処理により、移動指令バッファ４を介して実行する減速停止制御について、図７、図８に基づいて具体的に説明する。尚、図７の左最上段に移動指令実行部３が出力した移動指令を示し、図７、図８の上段に移動指令バッファ４から出力した移動指令を示し、図７、図８の下段に移動指令バッファ４内の詳細を示している。尚、図７の（１）で停止指令が入力され、そのとき、ｉ＝０であるとする。
【００４５】
図７（１）に示すように、停止指令の入力時、移動指令バッファ４の０番目のバッファには、図４のＳ１４の処理によって速度０の移動指令が蓄積される。ここで、減速停止距離Ｌａは前回の処理周期でサーボ制御部５に出力した移動指令（この場合はＦ）と加速度Ａから、Ｌａ＝Ｆ*Ｆ／２Ａとして計算する。この減速停止距離Ｌａと移動指令バッファ４内の残存移動指令から算出した残存移動距離Ｌｂとを比較する。
【００４６】
図７（１）では、残存移動距離Ｌｂ＞減速停止距離Ｌａとなるため、移動指令バッファ４内の１番目のバッファの移動指令Ｆ１をそのままサーボ制御部５に出力する。図７（２）（３）では、図７（１）の場合と同様に、移動指令バッファ４内の２番目，３番目のバッファの移動指令をそのままサーボ制御部５に出力する。つまり、残存移動距離Ｌｂ＞減速停止距離Ｌａの場合、減速を開始せずに移動指令Ｆを維持する。次に、図７（４）では、残存移動距離Ｌｂ≦減速停止距離Ｌａとなるため、減速を開始する。
【００４７】
先ず、図７（４）では、図７（３）でサーボ制御部５に出力した移動指令Ｆから、減速度Ａで減速させた場合の減速用移動指令Ｆｄを算出し、該減速用移動指令Ｆｄと移動指令バッファ４内の４番目のバッファの移動指令Ｆ４とを比較する。図７（４）においては、移動指令Ｆ４の方が大きいので、移動指令Ｆ４から減速用移動指令Ｆｄを引いて移動指令Ｆ４を更新し、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加え、該移動指令Ｆ'をサーボ制御部５に出力する。次に、図８（５）では、図７（４）でサーボ制御部５に出力した移動指令Ｆ'から、減速度Ａで減速させた場合の減速用移動指令Ｆｄを算出し、減速用移動指令Ｆｄと移動指令バッファ４内の４番目のバッファの移動指令Ｆ４の大きさを比較する。この場合は、減速用移動指令Ｆｄの方が大きい（移動指令バッファ４内の４番目の移動指令Ｆ４だけでは、今回サーボ制御部５に出力する移動指令を満足できない）ため、今回サーボ制御部５に出力する移動指令Ｆ'に移動指令バッファ４内の４番目の移動指令Ｆ４を加える。その後、減速用移動指令Ｆｄからバッファの移動指令Ｆ４を減算して減速用移動指令Ｆｄを更新し、使用済みとなった移動指令バッファ４内の４番目の移動指令Ｆ４の値を０に更新する。ここで計算した減速用移動指令Ｆｄは、今回サーボ制御部５に出力する移動指令の内、不足している分の移動指令を表す。該不足分を移動指令バッファ４内の５番目のバッファの移動指令Ｆ５から補う。移動指令Ｆ５は、不足分の減速用移動指令Ｆｄよりも大きいため、移動指令Ｆ５から減速用移動指令Ｆｄを減算して該移動指令Ｆ５を更新し、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加算してサーボ制御部５に出力する。
【００４８】
次に、図８（６）では、図８（５）でサーボ制御部５に出力した移動指令Ｆ'から、減速度Ａで減速させた場合の減速用移動指令Ｆｄを算出し、該減速用移動指令Ｆｄと移動指令バッファ４内の５番目のバッファの移動指令Ｆ５の大きさを比較する。この場合も、減速用移動指令Ｆｄの方が大きい（移動指令バッファ４内の５番目の移動指令だけでは、今回サーボ制御部５に出力する移動指令を満足できない）ため、今回サーボ制御部５に出力する移動指令Ｆ'に移動指令バッファ４内の５番目の移動指令Ｆ５を加算する。その後、減速用移動指令ＦｄからＦ５を減算して減速用移動指令Ｆｄを更新し、使用済みとなった移動指令バッファ４内の５番目の移動指令Ｆ５の値を０に更新する。ここで計算した減速用移動指令Ｆｄは、今回サーボ制御部５に出力する移動指令の内、不足している分の移動指令を表す。そこで、不足分を移動指令バッファ４内の６番目のバッファの移動指令Ｆ６から補う。移動指令Ｆ６は不足分の減速用移動指令Ｆｄよりも大きいため、移動指令Ｆ６から減速用移動指令Ｆｄを減算して移動指令Ｆ６を更新し、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加算して、移動指令Ｆ'をサーボ制御部５に出力する。
【００４９】
次に、図８（７）では、図８（６）でサーボ制御部５に出力した移動指令Ｆ'から、減速度Ａで減速させた場合の減速用移動指令Ｆｄを算出し、減速用移動指令Ｆｄと移動指令バッファ４内の６番目のバッファの移動指令Ｆ６の大きさを比較する。この場合は、移動指令Ｆ６の方が大きいので、移動指令Ｆ６から減速用移動指令Ｆｄを減算して移動指令Ｆ６を更新し、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加算し、該移動指令Ｆ'をサーボ制御部５に出力する。
図８（８）では、図８（７）でサーボ制御部５に出力した移動指令Ｆ'から、減速度Ａで減速させた場合の減速用移動指令Ｆｄを算出し、減速用移動指令Ｆｄと移動指令バッファ４内の６番目のバッファの移動指令Ｆ６の大きさを比較する。この場合は、移動指令Ｆ６の方が大きいので、移動指令Ｆ６から減速用移動指令Ｆｄを減算して減速用移動指令Ｆｄを更新し、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加算し、該移動指令Ｆ'をサーボ制御部５に出力する。
最後に、図８（９）では、図８（８）でサーボ制御部５に出力した移動指令Ｆ'から、減速度Ａで減速させた場合の減速用移動指令Ｆｄを算出し、減速用移動指令Ｆｄと移動指令バッファ４内の６番目のバッファの移動指令Ｆ６の大きさを比較する。この場合は、移動指令Ｆ６の方が大きいので、Ｆ６から減速用移動指令Ｆｄを引いてＦ６を更新し、今回サーボ制御部５に出力する移動指令Ｆ'に減速用移動指令Ｆｄを加算し、移動指令Ｆ'をサーボ制御部５に出力する。
図８（９）の後、移動指令バッファ４内には移動指令が残っていないため、これで減速終了となる。
【００５０】
以上説明した工作機械の数値制御装置１によれば次の効果を奏する。
停止制御部６に停止指令が入力された場合、停止制御部６が、移動指令実行部３による移動指令バッファ４への移動指令の蓄積（作成）を中止するとともに、移動指令バッファ４に蓄積した移動指令を全て出力し、この場合、所定の減速度Ａで減速停止させるために移動指令バッファ４に蓄積した移動指令から複数の減速用移動指令を作成してサーボ制御部５に順次出力する。
【００５１】
その結果、工作機械の急停止、並びにそれにより発生する衝撃を緩和することができ、しかも、移動指令バッファ４に蓄積した移動指令を全て出力するため、つまり、移動指令バッファ４内に移動指令が残らないため、減速停止時の工作機械の機械座標と実際の機械位置とを整合させることができる。移動指令は移動速度に関する指令であるので、特に停止制御部６が実行する処理を簡単化することができる。
【００５２】
停止制御部６は、停止指令が入力されたときの移動速度Ｖ（指令速度Ｆ）から所定の減速度Ａで減速停止させるのに必要な減速停止距離Ｌａを算出するとともに、移動指令の出力時に、移動指令バッファ４内の出力済みとなっていない残存移動指令から残存移動距離Ｌｂを算出し、この減速停止距離Ｌａと残存移動距離Ｌｂとを比較して、移動指令バッファ４内の各移動指令をそのままサーボ制御部５に出力するか各減速用移動指令を作成してサーボ制御部５に出力するかを判定する。
【００５３】
従って、移動指令バッファ４からの移動指令の出力毎に低下する残存移動距離Ｌｂが減速停止距離Ｌａに必要な適当距離よりも大きい場合には、移動指令バッファ４内の各移動指令をそのままサーボ制御部５に出力し、残存移動距離Ｌｂが減速停止距離Ｌａに必要な適当距離になった場合には、その後、各減速用移動指令を作成してサーボ制御部５に出力することができる。つまり、残存移動距離Ｌｂが減速停止距離Ｌａに必要な適当距離になる迄は強制的に減速しないようにして、高速移動をできるだけ維持することができ、最終的に減速停止させることで、停止指令が入力されてから停止する迄の時間が短くできる。
【００５４】
その他、本発明の趣旨を逸脱しない範囲において種々の変更を付加して実施可能である。例えば、所定の加速度Ａや所定微小時間ΔＴについては適宜変更可能である。また、移動指令バッファ４のバッファの個数ｎについては、加減速に必要な個数よりも多少多めに設定してもよい。尚、本発明の工作機械の数値制御装置、数値制御方法、数値制御プログラムについては、種々の同装置、方法、プログラムに適用することが可能である。
【符号の説明】
【００５５】
１  数値制御装置
２  プログラム解読部
３  移動指令実行部
４  移動指令バッファ
５  サーボ制御部
６  停止制御部
【図１】
0005381806.tif 000002
【図２】
0005381806.tif 000003
【図３】
0005381806.tif 000004
【図４】
0005381806.tif 000005
【図５】
0005381806.tif 000006
【図６】
0005381806.tif 000007
【図７】
0005381806.tif 000008
【図８】
0005381806.tif 000009