(57)【要約】【課題】微小移動を指令するブロックが連続していても、安定した移動ができる数値制御装置を提供する。【解決手段】軸移動を行わない仮プログラムの実行を行う。この仮プログラム実行では、現在分配処理中の時間内で先読み可能なブロック数Ｎを求め（Ｓ１５）、この先読み可能なブロック数Ｎになるまで各ブロックでの移動指令の距離を積算し積算移動距離Ｌを求める（Ｓ７〜Ｓ１０）。この積算移動距離Ｌから出力可能速度Ｖａを求める（Ｓ１１）。以下、これを繰り返し、最小の出力可能速度Ｖａを求める（Ｓ１２、Ｓ１３）。最小の出力可能速度Ｖａとプログラムで指令された速度指令の小さい方を、実際にプログラムを実行するときの速度指令とする（Ｓ１６〜Ｓ１９）。これにより、各ブロックで指令された移動量が微小でも、移動が停止することなく、安定した移動ができる。【選択図】図３
2007164509.tif 000002
【特許請求の範囲】
【請求項１】
加工プログラムを軸移動なしに実行する仮プログラム実行手段を備え、
該仮プログラム実行手段は、加工プログラムを実行し、加工プログラムの各ブロック実行中に先読み可能なブロック数毎の移動量を積算する移動距離算出手段と、
該移動距離算出手段によって求められた移動量と数値制御装置の分配周期から、該先読みブロック数毎の出力可能な速度を求める出力可能速度算出手段と、
該出力可能速度算出手段によって求められた速度の中で、最低の速度を求める実加工速度算出手段と、
該実加工速度算出手段によって求められた送り速度とプログラム指令速度を比較して、プログラム指令速度が大きい場合、プログラム指令速度を該実加工速度算出手段によって求められた最低の速度指令に置換える速度指令調整手段とを有し、
該仮プログラム実行手段で求められた速度指令で軸移動を伴う実際の加工プログラムの実行を可能としたことを特徴とする数値制御装置。
【請求項２】
前記仮プログラム実行手段は、加工プログラム中に速度指令の変更がある毎に速度指令の置き換えを実行する請求項１に記載の数値制御装置。
【請求項３】
前記仮プログラム実行手段は、予め設定された速度調整領域毎に指令速度の置き換えを実行する請求項１に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械等の各種機械を制御する数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置においては、加工プログラムで指令された指令ブロックを１つずつ読み込んで解釈し実行可能なデータに変換する先読み処理を行う。この先読み処理で得られた実行データに基づいて補間処理部で補間分配処理して各軸サーボモータの制御部に移動指令を出力する。  
しかし、短い距離の移動指令が連続するときなど、補間分配処理が終了したにも拘わらず、次のブロックの指令に対する先読み処理が終了していない場合には、補間分配処理ができず、動作が停止する場合がある。
【０００３】
指令速度が一定で、短い距離の移動指令のブロックが連続するような場合において、１つのブロックで指令された移動距離をプログラム指令速度で移動させる処理時間は、指令移動距離を指令速度で割った時間である。この時間が、次のブロックの前処理等に要する許容最小移動時間より小さいと、モータの移動が停止してしまい、断続的な移動となる。
【０００４】
そこで、特許文献１に記載された発明は、ブロックの指令移動距離を許容最小移動時間で割って許容最大送り速度を求め、加工プログラムで指令された送り速度がこの許容最大送り速度よりも大きいときには、実際の送り速度を求めた許容最大送り速度とし補間処理を行っている。
【０００５】
しかし、この方法では、各ブロック毎に速度が変化し、滑らかな移動ができないという問題がある。そのため、先読み処理部の先読み処理時間に対応して１ブロックで指令された移動距離だけ移動するときに停止することなく移動できる許容最小移動時間をｔａとし、先読み処理部において予め設定されたブロックｎをプログラムより読み取り、総移動距離Ｌと速度制御係数Ｋから許容最大送り速度Ｖａを
Ｖａ＝（Ｌ／（ｔａ・ｎ））・Ｋ
として求め、指令送り速度Ｆが許容最大送り速度Ｖａよりも大きいときには、実際の送り速度を許容最大送り速度Ｖａとする方法が提案されている（特許文献２参照）。
【０００６】
【特許文献１】特開平７−１９１７２８号公報
【特許文献２】特許第３１８８３９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、先読みブロック数は実行中のブロックの処理時間によって変動するため、予め指定するブロック数を適切に決定することが難しいという問題がある。  
そこで、本発明の目的は、短い距離の移動指令のブロックが連続するような加工プログラムにおいても、移動が停止することなく滑らかに移動して安定した加工を可能にする数値制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明は、加工プログラムを軸移動なしに実行する仮プログラム実行手段を備え、該仮プログラム実行手段は、加工プログラムを実行し、加工プログラムの各ブロック実行中に先読み可能なブロック数毎の移動量を積算する移動距離算出手段と、該移動距離算出手段によって求められた移動量と数値制御装置の分配周期から、該先読みブロック数毎の出力可能な速度を求める出力可能速度算出手段と、該出力可能速度算出手段によって求められた速度の中で、最低の速度を求める実加工速度算出手段と、該実加工速度算出手段によって求められた送り速度とプログラム指令速度を比較して、プログラム指令速度が大きい場合、プログラム指令速度を該実加工速度算出手段によって求められた最低の速度指令に置換える速度指令調整手段とを有し、該仮プログラム実行手段で求められた速度指令で軸移動を伴う実際の加工プログラムの実行を可能としたものである。又、加工プログラム中に速度指令の変更がある毎に速度指令の置き換えを実行するようにした。さらに、予め設定された速度調整領域を設定しておき、この設定された速度調整領域毎に指令速度の置き換えを実行するようにした。
【発明の効果】
【０００９】
微小の移動量を指令するブロックが連続している場合で、移動を停止させることなく安定した移動を実現できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の一実施形態を図面と共に説明する。  
図１は、本発明の各実施形態の数値制御装置の要部ブロック図である。本発明は、仮プログラム実行手段を備える点で従来の数値制御装置と相違するものであり、この各実施形態では、仮プログラム実行モード、すなわち仮プログラム実行手段を選択する選択スイッチ７と安定した加工をするための加工速度指令を求める速度算出手段８が従来の数値制御装置に追加されているものである。
【００１１】
従来の数値制御装置では、選択スイッチ７，速度算出手段８はなく、先読み処理部２で記憶装置に記憶された加工プログラム１から順次ブロックの指令を先読みし、そのブロックの指令を解釈して実行データを作成する。この先読み処理部２で作成された実行データに基づいて補間部３は、補間分配処理を行いＸ，Ｙ，Ｚ軸のサーボ制御部４，５，６に移動指令を分配するものである。
【００１２】
本各実施形態では、Ｘ，Ｙ，Ｚ軸のサーボ制御部４，５，６に移動指令を出力して軸を移動させることなく、加工プログラムを実行し安定した加工ができる速度指令を得る仮プログラム実行手段が設けられているものであり、この仮プログラム実行手段は、先読み処理部２及び速度算出手段８で構成されるものである。
【００１３】
仮プログラム実行モードが選択されると選択スイッチ７は先読み処理部２と速度算出手段８を接続するように選択され、加工プログラム１を仮実行する。すなわち、先読み処理部２で加工プログラム１よりブロックを順次読み出し実行データに変換する。速度算出手段８では、この実行データより、安定した加工ができる指令速度を求め記憶する。そして、実際に加工プログラムを実行するときには、補間部３はこの記憶した指令速度に基づいて、補間分配処理を実行するようにしたものである。
【００１４】
図２、図３は、第１の実施形態の数値制御装置が仮プログラム実行時において速度算出手段８として実行する処理のフローチャートである。  
仮プログラム実行指令が入力されると数値制御装置のプロセッサは、まず、指令ブロック長を積算するレジスタをクリアし、かつ読み出しブロック数を計数するカウンタをクリアする（ステップＳ１）。次に、加工プログラムを読み出し、読み出しブロック数のカウンタに１加算する（ステップＳ２）。そして読み出したブロックで指令された移動距離を積算し積算移動距離Ｌを求める（ステップＳ３）。次に、読み出したブロック数が予め設定されている先読みブロック数Ｎｓに達したか判断し（ステップＳ４）、達してなければステップＳ２に戻りステップＳ２〜Ｓ４の処理を繰り返し実行する。なお、読み込んだブロックの指令が移動指令ではない場合には読み出しブロック数を計数のカウンタに１加算しない。
【００１５】
読み出したブロック数を計数するカウンタの値が予め設定された数Ｎｓに達している場合には、ステップＳ３で求めた積算移動距離Ｌと前処理時間とプログラム指令速度より先読み可能なブロック数Ｎを求め、先読み可能ブロック数を記憶するレジスタに記憶する（ステップＳ５）。すなわち、積算移動距離Ｌをプログラム指令速度で割れば、プログラム指令速度で積算移動距離Ｌを移動したときに要する時間が求められ、この時間を各ブロックの前処理時間で割れば、先読み可能なブロック数Ｎが求まり、これをレジスタに記憶する。
【００１６】
次に、出力可能速度を記憶するレジスタＡに記憶できる最大値を格納し（ステップＳ６）、指令ブロック長の積算値を記憶するレジスタ及び読み出しブロック数を計数するカウンタをクリアし（ステップＳ７）、加工プログラムより次の１ブロックを読み出し、読み出しブロック数のカウンタに１加算する（ステップＳ８）。なお、この場合もブロックの指令が移動指令でない場合には、読み出しブロック数のカウンタに１加算しない。読み出したブロックで指令された移動距離を、指令ブロック長の積算値を記憶するレジスタに加算して積算移動距離Ｌを求める（ステップＳ９）。また、読み出しブロック数を計数するカウンタの値がレジスタに記憶されている先読み可能ブロック数Ｎに達したか、さらにプログラム終了かを判断する（ステップＳ１０）。最初は、このレジスタにはステップＳ５で求めた先読み可能ブロック数Ｎが格納されており、この先読み可能ブロック数Ｎと読み出しブロック数が比較されることになる。
【００１７】
読み出しブロック数を計数するカウンタの値が先読み可能ブロック数Ｎに達していなければステップＳ８に戻りステップＳ８〜Ｓ１０の処理を繰り返し実行し、積算移動距離Ｌを更新し求める。そして、読み出しブロック数が先読み可能ブロック数Ｎに達すると、またはプログラム終了であると、積算移動距離Ｌに基づいて出力可能速度Ｖａを求める（ステップＳ１１）。すなわち、読み出したブロック数に分配周期を掛けた値で積算移動距離Ｌを割ることによって出力可能速度Ｖａを求める。
【００１８】
次に、出力可能速度を記憶するレジスタＡの値と算出した出力可能速度Ｖａを比較し（ステップＳ１２）、レジスタＡの値より出力可能速度Ｖａの方が小さければ、レジスタＡにこの出力可能速度Ｖａを格納する（ステップＳ１３）。なお、出力可能速度ＶａがレジスタＡの値以上であれば、レジスタＡの値は更新されない。最初はステップＳ６でレジスタＡには最大値が設定されているので、ステップＳ１１で求めた出力可能速度ＶａがレジスタＡに格納されることになる。
【００１９】
そして、プログラム終了か判断し（ステップＳ１４）、終了でなければ、現在の分配処理に要する時間と１ブロック当たりの前処理時間に基づいて、先読み可能なブロック数Ｎを求め、レジスタ格納し更新する（ステップＳ１５）。すなわち、このステップＳ１５の処理を実行する前にレジスタに記憶するブロック数Ｎの分配処理に要する時間（Ｎ×分配周期時間）を１ブロック当たりの前処理時間で割ることによって、このレジスタに記憶するブロック数の各指令に対する分配補間処理に要する時間内に、先読み可能なブロック数を求めてレジスタに格納し更新し、このレジスタに格納された新たな先読み可能なブロック数Ｎを次の先読みブロック数とするものである。
【００２０】
その後、ステップＳ７に戻り、ステップＳ７以下の前述した処理を実行するが、ステップＳ１０での判断処理は、ステップＳ１５で求めたレジスタに格納されている先読み可能なブロック数Ｎと先読みブロック数とが比較判断されることになる。また、ステップＳ１２，Ｓ１３の処理によって、レジスタＡには、ステップＳ１１で求められた出力可能速度Ｖａの最小値が格納されることになる。
【００２１】
ステップＳ１４でプログラム終了と判別されると、レジスタＡに格納した最小の出力可能速度Ｖａとプログラム指令速度を比較し（ステップＳ１６）、プログラム指令速度が小さければ、指令速度Ｆをプログラム指令速度とし（ステップＳ１７）、最小の出力可能速度Ｖａがプログラム指令速度以下であれば、指令速度ＦをレジスタＡに記憶する最小の出力可能速度Ｖａとする（ステップＳ１８）。そして、こうして求めた指令速度Ｆを記憶し仮プログラム処理は終了する。
【００２２】
実際に加工を行うために加工プログラム１を実行するときには（選択スイッチ７が補間部３に接続）、数値制御装置のプロセッサは、プログラムで指令された速度指令の代わりに上述した仮プログラム処理によって求められ記憶している指令速度Ｆによって補間分配処理を実行することになる。
【００２３】
最小の出力可能速度Ｖａで補間分配処理が行われることになるから、先読み処理が間に合わず実行データが作成されないという事態は避けられ、安定した速度で加工が実行されることになる。
【００２４】
上述した第１の実施形態では、１つの加工プログラムに対して安定した加工ができる１つの速度指令Ｆを求める例を示したが、加工プログラムの途中で指令速度が変わるような場合、仮プログラム実行処理によって、そのプログラム速度指令毎に、上述した安定した加工ができる速度指令を求めて、求められた速度指令Ｆで補間分配処理を実行するようにしてもよい。この第２の実施形態における仮プログラム実行による速度指令Ｆを求める処理は、第１の実施形態と比較し、図２に示す処理は第１の実施形態と同一であり、図３に示す処理が相違する。この相違する処理部分を図４に示す。
【００２５】
すなわち、第２の実施形態においては、仮プログラム実行で図２の処理を実行した後図４の処理を行うものであり、第１の実施形態と相違する点は、ステップＳ１０、Ｓ１４が相違し、ステップＳ２０が加わった点である。ステップＳ１０がステップＳ１０’に変わり、先読みブロック数Ｎに達したかの判断と速度指令変更が読み出されたかの判断に変わった点と、ステップＳ１４がステップＳ１４’に変わり、プログラム終了か又は速度指令変更かの判断に変わったこと、ステップＳ１９がステップＳ１９’に変わりプログラム指令速度に対応して安定した加工ができる速度指令に代えるようにしたこと、及びステップＳ２０が加わり、最後にプログラム終了かの判断をしてプログラム終了でなければステップＳ１５に移行するようにした点である。
【００２６】
第１の実施形態と同様に、ステップＳ１〜ステップＳ７の処理を実行した後、先読み可能ブロック数Ｎに達するまで移動指令のブロックを読み出されるか又は速度指令がなされたブロックが読み出されるまで、ブロックを読み出し移動距離を積算し移動距離Ｌを求める（ステップＳ８〜Ｓ１０’）。  
先読み可能ブロック数Ｎに達するまで移動指令のブロックを読み出すか又は速度指令がなされたブロックが読み出されると、第１の実施形態と同様に出力可能速度Ｖａを求めレジスタＡの値と比較しレジスタＡの値より出力可能速度Ｖａの方が小さい場合には該出力可能速度ＶａをレジスタＡに格納する（ステップＳ１１〜Ｓ１３）。そして読み出したブロックの指令がプログラム終了か、又は速度指令を変更するブロックか判断し（ステップＳ１４’）、プログラム終了でも、速度指令を変更するブロックでもなければ、ステップＳ１５に移行し、先読み可能ブロック数Ｎを更新し、ステップＳ７に戻る。  
以下、ステップＳ７〜Ｓ１５の処理を繰り返し、レジスタＡに同一速度指令内において、出力可能速度Ｖａの最小値を格納する。
【００２７】
ステップＳ１４’で、速度指令のブロックが読み込まれ速度指令の変更があったと判断されたときには、第１の実施形態と同様にステップＳ１６〜Ｓ１８の処理を実行し、レジスタＡに記憶する出力可能速度Ｖａか、当該プログラム指令速度の小さい方を採用し、このプログラム速度指令に対応するものとしてメモリに記憶する（ステップＳ１９’）。  
その後、プログラム終了か判断し（ステップＳ２０）、プログラム終了でなければ、ステップＳ１５に移行する。又、プログラム終了であれば、ステップＳ１４’から、ステップＳ１６〜Ｓ２０の処理をした後、この仮プログラム処理を終了する。
【００２８】
次に第３の実施形態について説明する。この第３の実施形態は、同じ速度が指令された加工プログラムにおいても、微小ブロックが連続する場合、先読みブロックの積算移動距離が短くなり第１の実施形態で求められる速度指令Ｆが非常に遅くなる場合がある。そこで、速度指令を安定した加工ができる速度指令に変更する領域をプログラムのシーケンス番号をプログラム指令又はパラメータ指令で指定しておき、この領域だけ速度指令の変更処理を行うものである。速度指令に変更する領域を、例えばＮｘｘ〜Ｎｙｙとしてシーケンス番号によって指定する。
【００２９】
図５、図６は、この第３の実施形態の仮プログラム処理を示すフローチャートである。  数値制御装置のプロセッサは、仮プログラム処理を開始すると、まず、指令ブロック長を積算するレジスタをクリアし、かつ読み出しブロック数を計数するカウンタをクリアする（ステップＴ１）。次に、加工プログラムを読み出し（ステップＴ２）、読み出したブロックのシーケンス番号が速度指令調整処理を開始するように設定されたシーケンス番号か判断する（ステップＴ３）。以下、速度指令調整処理を開始するように設定されたシーケンス番号が読み出されるまで、ステップＴ２，Ｔ３を繰り返す。
【００３０】
速度指令調整処理を開始するように設定されたシーケンス番号が読み出されると、読み出しブロック数のカウンタに１加算する（ステップＴ４）。そして読み出したブロックで指令された移動距離を積算し積算移動距離Ｌを求める（ステップＴ５）。次に、読み出したブロック数が予め設定されている先読みブロック数Ｎｓに達したか判断し（ステップＴ６）、達してなければ加工プログラムより次の１ブロックを読み出し（ステップＴ７）、ステップＴ４に戻りステップＴ４〜Ｔ７の処理を繰り返し実行する。読み出したブロック数を計数するカウンタの値が予め設定された数Ｎｓに達した場合には、第１の実施形態と同様に、ステップＴ５で求めた積算移動距離Ｌと各ブロックの前処理時間とプログラム指令速度より先読み可能なブロック数Ｎを求め、先読み可能ブロック数を記憶するレジスタに記憶する（ステップＴ８）。
【００３１】
次に、出力可能速度を記憶するレジスタＡに記憶できる最大値を格納し（ステップＴ９）、指令ブロック長の積算値を記憶するレジスタ及び読み出しブロック数を計数するカウンタをクリアし（ステップＴ１０）、加工プログラムより次の１ブロックを読み出し、読み出しブロック数のカウンタに１加算する（ステップＴ１１）。読み出したブロックで指令された移動距離を、指令ブロック長の積算値を記憶するレジスタに加算して積算移動距離Ｌを求める（ステップＴ１２）。また、読み出しブロック数を計数するカウンタの値がレジスタに記憶されている先読み可能ブロック数Ｎに達したか、さらに速度調整の終了シーケンス番号のブロックが読み込まれたかを判断する（ステップＴ１３）。最初は、このレジスタにはステップＴ８で求めた先読み可能ブロック数Ｎが格納されており、この先読みブロック数Ｎと読み出しブロック数が比較されることになる。
【００３２】
読み出しブロック数を計数するカウンタの値が先読み可能ブロック数Ｎに達してなく、かつ終了シーケンス番号のブロックの読み出しでなければステップＴ１１に戻りステップＴ１１〜Ｔ１３の処理を繰り返し実行し、積算移動距離Ｌを更新し求める。そして、読み出しブロック数が先読み可能ブロック数Ｎに達すると、または終了シーケンス番号のブロックの読み出しであると、第１の実施形態と同様に、積算移動距離Ｌに基づいて出力可能速度Ｖａを求め（ステップＴ１４）、出力可能速度を記憶するレジスタＡの値と算出した出力可能速度Ｖａを比較し（ステップＴ１５）、レジスタＡの値より出力可能速度Ｖａの方が小さければ、レジスタＡにこの出力可能速度Ｖａを格納する（ステップＴ１６）。
【００３３】
そして、プログラム終了か速度調整の領域の終了を示す終了シーケンス番号か判断し（ステップＴ１７）、プログラム終了でも、終了シーケンス番号でもなければ、第１の実施形態と同様に、先読み可能なブロック数Ｎを求め、レジスタ格納して更新し（ステップＴ１８）、ステップＴ１０に戻り、ステップＴ１０以下の前述した処理を実行する。
【００３４】
ステップＴ１７で終了シーケンス番号のブロックが読み出されたと判別されると、第１の実施形態と同様に、レジスタＡに格納した最小の出力可能速度Ｖａとプログラム指令速度を比較し（ステップＴ１９）、プログラム指令速度が小さければ、指令速度Ｆをプログラム指令速度とし（ステップＴ２０）、最小の出力可能速度Ｖａがプログラム指令速度以下であれば、指令速度ＦをレジスタＡに記憶する最小の出力可能速度Ｖａとする（ステップＴ２１）。そして、こうして求めた指令速度Ｆを当該速度調整領域の速度指令として記憶し（ステップＴ２２）、プログラム終了でなければ（ステップＴ２３）、ステップＴ１に戻り、前述した処理を実行することになる。
【図面の簡単な説明】
【００３５】
【図１】本発明の各実施形態の数値制御装置の要部ブロック図である。
【図２】本発明の第１の実施形態の仮プログラム処理のフローチャートの一部である。
【図３】本発明の第１の実施形態の仮プログラム処理のフローチャートにおける図２の続きである。
【図４】本発明の第２の実施形態の仮プログラム処理のフローチャート要部である。
【図５】本発明の第３の実施形態の仮プログラム処理のフローチャートの一部である。
【図６】本発明の第３の実施形態の仮プログラム処理のフローチャートにおける図５の続きである。
【符号の説明】
【００３６】
１  加工プログラム
２  先読み処理部
３  補間部
４  Ｘ軸サーボ制御部
５  Ｙ軸サーボ制御部
６  Ｚ軸サーボ制御部
７  選択スイッチ
８  速度算出手段
【図１】
2007164509.tif 000003
【図２】
2007164509.tif 000004
【図３】
2007164509.tif 000005
【図４】
2007164509.tif 000006
【図５】
2007164509.tif 000007
【図６】
2007164509.tif 000008