(57)【特許請求の範囲】
【請求項１】
主軸回転速度を制御可能な工作機械の数値制御装置であって、
加工プログラムを１ブロック以上先読みして前記工作機械に対する指令の解析を行い、主軸制御指令以前の指令について主軸回転速度変化中の実施により加工上何らかの問題が発生するか否かを判断し、加工上何らかの問題が発生する指令以外の指令の場合、前記主軸制御指令の順番を前記加工上何らかの問題が発生する指令以外の指令より先の順番として順番を入れ替えて各指令をバッファに記憶するプログラム解析部と、
前記バッファに記憶されている指令の順番に従って、前記主軸制御指令を前記加工プログラムで指定されたタイミングより先に出力する指令判定部と、
を備えることを特徴とする数値制御装置。
【請求項２】
前記プログラム解析部は、前記主軸制御指令が主軸回転指令の場合に、前記主軸回転指令以前の指令が切削指令または工具交換指令か否かを判断し、前記切削指令以外の指令であって前記工具交換指令以外の指令の場合、前記主軸回転指令の順番を先の順番として順番を入れ替えて各指令をバッファに記憶し、
前記指令判定部は、前記主軸回転指令を前記加工プログラムで指定されたタイミングより先に出力する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記プログラム解析部は、前記主軸制御指令が主軸停止指令の場合に、前記主軸停止指令以前の指令が切削指令か否かを判断し、前記切削指令以外の指令の場合、前記主軸停止指令の順番を先の順番として順番を入れ替えて各指令をバッファに記憶し、
前記指令判定部は、前記主軸停止指令を前記加工プログラムで指定されたタイミングより先に出力する、
ことを特徴とする請求項１に記載の数値制御装置。
【請求項４】
主軸回転速度を制御可能な工作機械の数値制御装置であって、
加工プログラムを１ブロック以上先読みして前記工作機械に対する指令の解析を行い、主軸制御指令以前および以後の指令について主軸回転速度変化中の実施により加工上何らかの問題が発生するか否かを判断し、前記主軸制御指令の開始から前記主軸回転速度が指令された回転速度に到達するまでの主軸加減時間である第一の時間、前記加工プログラム上での前記主軸制御指令終了以後において、加工上何らかの問題が発生する第一の指令以外の第二の指令および第一の指令がある場合に、当該第二の指令の開始から当該第一の指令の開始までの第二の指令の実行時間の累積時間であって主軸制御指令からの時間である第二の時間、および前記加工プログラム上での前記主軸制御指令開始以前において、第二の指令の開始から当該主軸制御指令の開始までの第二の指令の実行時間の累積時間であって主軸制御指令までの時間である第三の時間を算出し、前記第一の時間、前記第二の時間、および前記第三の時間を用いて主軸制御指令出力タイミングを算出するプログラム解析部と、
前記主軸制御指令出力タイミングの範囲内で前記主軸制御指令を前記加工プログラムで指定されたタイミングより先に出力する指令判定部と、
を備えることを特徴とする数値制御装置。
【請求項５】
前記プログラム解析部は、前記主軸制御指令が主軸回転指令の場合に、前記主軸回転指令以前の指令が切削指令または工具交換指令か否かを判断し、前記主軸回転指令以後の指令が切削指令か否かを判断し、前記第一の時間、前記主軸回転指令以後において第二の指令の開始から切削指令の開始までの前記第二の時間、および前記主軸回転指令以前において切削指令または工具交換指令の終了であって第二の指令の開始から当該主軸回転指令の開始までの前記第三の時間を算出して前記主軸制御指令出力タイミングを算出し、
前記指令判定部は、前記主軸制御指令出力タイミングの範囲内で前記主軸回転指令を前記加工プログラムで指定されたタイミングより先に出力する、
ことを特徴とする請求項４に記載の数値制御装置。
【請求項６】
前記プログラム解析部は、前記主軸制御指令が主軸停止指令の場合に、前記主軸停止指令以前の指令が切削指令か否かを判断し、前記主軸停止指令以後の指令が工具交換指令か否かを判断し、前記第一の時間、前記主軸停止指令以後において第二の指令の開始から前記工具交換指令の開始までの前記第二の時間、および前記主軸停止指令以前において前記切削指令の終了であって第二の指令の開始から当該主軸停止指令の開始までの前記第三の時間を算出して前記主軸制御指令出力タイミングを算出し、
前記指令判定部は、前記主軸制御指令出力タイミングの範囲内で前記主軸停止指令を前記加工プログラムで指定されたタイミングより先に出力する、
ことを特徴とする請求項４に記載の数値制御装置。
【請求項７】
前記主軸制御指令を前記加工プログラムで指定されたタイミングよりも先に出力する場合に、当該主軸制御指令を出力するタイミングを表示する表示部、
を備えることを特徴とする請求項１〜６までのいずれか１つに記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主軸回転速度を制御可能な工作機械を数値制御（ＮＣ：Numerical  Control）する数値制御装置に関する。
【背景技術】
【０００２】
従来、数値制御装置が搭載された工作機械では、加工プログラムから主軸回転速度を指令することで加工が行われる。工作機械では、主軸回転速度を指令してから実際の主軸回転速度が指令された回転速度に到達するまでの間は加工をすることができず、待ち時間が発生し加工時間が長くなる。ここで、数値制御装置では、全ての指令に対して主軸回転速度の到達を待つ必要はない。例えば、切削指令の場合では主軸回転速度の到達を待つ必要があるが、位置決め指令のような非切削指令に対しては主軸回転速度の到達を待つ必要がない。各指令に対する待ちの判断は、ラダーを作成すれば実現可能であるが、ラダーは複雑であるため、作業者がラダーを修正するのは容易ではない。【０００３】
例えば、下記特許文献１では、制御装置において、主軸回転速度が指令された回転速度に到達するのを待ち次ブロックを実行するか、主軸回転速度が指令された回転速度に到達しなくても次ブロックを実行するかを加工プログラムから指令して選択する技術が開示されている。【０００４】
また、下記特許文献２では、数値制御装置において、切削指令が開始されるタイミングに合わせて主軸回転速度が指令された回転速度に到達するように主軸回転指令の出力タイミングを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】実開昭６２−１７９６０５号公報
【特許文献２】特開２０１１−１１８９５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に記載の技術では、制御装置において、主軸回転速度が指令された回転速度に到達するのを待ち次ブロックを実行するように指令した場合には、位置決め指令といった非切削指令の場合にも主軸回転速度が指令された回転速度に到達するのを待つため、加工時間が延びてしまう、という問題があった。また、制御装置において、主軸回転速度が指令された回転速度に到達しなくても次ブロックを実行するように指令した場合には、切削指令の場合にも主軸回転速度が指令された回転速度に到達していなくても実行してしまうため、加工精度が悪化する、という問題があった。【０００７】
また、上記特許文献２に記載の技術では、数値制御装置における制御は、無駄に主軸が回転しないようにして消費電力を節約することを目的としている。そのため、主軸回転指令の出力タイミングは加工プログラムで指定されたタイミングより遅く出力するのみであり、加工時間を短縮することはできない、という問題があった。【０００８】
本発明は、上記に鑑みてなされたものであって、加工精度を悪化させることなく、工作機械での加工時間を短縮可能な数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、主軸回転速度を制御可能な工作機械の数値制御装置であって、加工プログラムを１ブロック以上先読みして前記工作機械に対する指令の解析を行うプログラム解析部と、前記プログラム解析部での解析結果に基づいて、主軸制御指令以後の指令について主軸回転速度変化中の実施により加工上何らかの問題が発生するか否かを判断し、加工上何らかの問題が発生する第一の指令は前記主軸回転速度が指令された回転速度に到達してから出力し、前記第一の指令以外の第二の指令は前記主軸回転速度が指令された回転速度到達前に出力する指令判定部と、を備えることを特徴とする。
【発明の効果】
【００１０】
本発明にかかる数値制御装置は、加工精度を悪化させることなく、工作機械での加工時間を短縮できる、という効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、数値制御装置の構成例を示す図である。
【図２】図２は、実施の形態１に係る数値制御装置のプログラム解析部での処理手順を表すフローチャートである。
【図３】図３は、実施の形態１に係る数値制御装置の指令判定部での処理手順を表すフローチャートである。
【図４】図４は、実施の形態１において数値制御装置が処理する加工プログラム例を示す図である。
【図５】図５は、図４に示す加工プログラム例におけるタイムチャートである。
【図６】図６は、実施の形態２に係る数値制御装置のプログラム解析部での処理手順を表すフローチャートである。
【図７】図７は、実施の形態２に係る数値制御装置の指令判定部での処理手順を表すフローチャートである。
【図８】図８は、実施の形態２において数値制御装置が処理する加工プログラム例を示す図である。
【図９】図９は、図８に示す加工プログラム例におけるタイムチャートである。
【図１０】図１０は、実施の形態３に係る数値制御装置のプログラム解析部での処理手順を表すフローチャートである。
【図１１】図１１は、図４に示す加工プログラム例におけるタイムチャートである。
【図１２】図１２は、実施の形態４に係る数値制御装置のプログラム解析部での処理手順を表すフローチャートである。
【図１３】図１３は、実施の形態４に係る数値制御装置の指令判定部での処理手順を表すフローチャートである。
【図１４】図１４は、実施の形態４において数値制御装置が処理する加工プログラム例を示す図である。
【図１５】図１５は、図１４に示す加工プログラム例におけるタイムチャートである。
【図１６】図１６は、数値制御装置が備える表示部における表示画面の例を示す図である。
【発明を実施するための形態】
【００１２】
以下に、本発明にかかる数値制御装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態１．
図１は、本実施の形態に係る数値制御装置の構成例を示す図である。図１において、１は数値制御装置である。２はプログラム解析部、３は指令判定部、４は補間部、５は主軸制御指令出力部、６は加工プログラム、７は先読みバッファ、８はサーボアンプ、９は主軸アンプ、１０は移動指令、１１は移動量、１２は主軸制御指令、１３は主軸回転速度、１４は実際の主軸回転速度である。
【００１４】
プログラム解析部２では、加工プログラム６を読み取って解析を行い、読み取った指令の解析結果を先読みバッファ７へ順次格納していく。先読みバッファ７には、プログラム解析部２における解析結果である、各ブロックのモーダル、各軸の移動量、主軸回転速度などの情報が格納される。また、先読みバッファ７に格納された情報は、指令された動作が完了すると削除される。指令判定部３では、先読みバッファ７に格納された各ブロックの情報を読み取り、各指令に応じた処理部へ指令を出力する。移動指令１０は補間部４へ出力され、補間部４にて補間周期毎の移動量１１を求め、サーボアンプ８へ出力される。移動指令１０とは、切削指令や位置決め指令といった軸の動作を制御する指令であり、それらをまとめて移動指令１０とする。また、主軸制御指令１２は主軸制御指令出力部５へ出力され、主軸制御指令出力部５にて、主軸回転速度１３が主軸アンプ９へ出力される。主軸制御指令１２とは、主軸回転指令や主軸停止指令といった主軸の動作を制御する指令であり、それらをまとめて主軸制御指令１２とする。また、主軸アンプ９から実際の主軸回転速度１４が指令判定部３へ出力され、指令を出力するための判定に使用する。
【００１５】
図２は、本実施の形態に係る数値制御装置１のプログラム解析部２での処理手順を表すフローチャートである。プログラム解析部２は、ステップＳ１０１では、先読みバッファ７に指令が格納されているか否かを判断し、格納されていれば（ステップＳ１０１：Ｙｅｓ）処理を終了し、格納されていなければ（ステップＳ１０１：Ｎｏ）ステップＳ１０２へ進む。プログラム解析部２は、ステップＳ１０２では、主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３へ進む。プログラム解析部２は、ステップＳ１０３では、加工プログラム６を読み取り、ステップＳ１０４へ進む。プログラム解析部２は、ステップＳ１０４では、読み取った指令が主軸制御指令１２か否かを判断し、主軸制御指令１２の場合には（ステップＳ１０４：Ｙｅｓ）ステップＳ１０５へ進み、主軸制御指令１２でない場合には（ステップＳ１０４：Ｎｏ）処理を終了する。プログラム解析部２は、ステップＳ１０５では、後述する各ブロックの実行時間の算出方法に基づいて、主軸加減速時間Ｔ１を算出し、ステップＳ１０６へ進む。プログラム解析部２は、ステップＳ１０６では、次ブロックがあるかを判断し、次ブロックがあれば（ステップＳ１０６：Ｙｅｓ）ステップＳ１０７へ進み、次ブロックがなければ（ステップＳ１０６：Ｎｏ）処理を終了する。プログラム解析部２は、ステップＳ１０７では、次ブロックを読み取り、ステップＳ１０８へ進む。プログラム解析部２は、ステップＳ１０８では、主軸回転速度が変化すると問題ある指令か否かを判断し、問題ない指令の場合には（ステップＳ１０８：Ｎｏ）ステップＳ１０９へ進み、問題ある指令の場合には（ステップＳ１０８：Ｙｅｓ）処理を終了する。プログラム解析部２は、ステップＳ１０９では、後述する各ブロックの実行時間の算出方法に基づいて、読み取った指令の実行時間を算出し、ステップＳ１１０へ進む。プログラム解析部２は、ステップＳ１１０では、ステップＳ１０９で算出した実行時間を累積して主軸制御指令からの時間Ｔ２を算出し、ステップＳ１１１へ進む。プログラム解析部２は、ステップＳ１１１では、主軸加減速時間Ｔ１と主軸制御指令からの時間Ｔ２を比較し、主軸加減速時間Ｔ１の方が大きい場合には（ステップＳ１１１：Ｎｏ）ステップＳ１０６へ戻り、主軸制御指令からの時間Ｔ２の方が大きい場合には（ステップＳ１１１：Ｙｅｓ）処理を終了する。また、プログラム解析部２が読み取ったブロックの情報は、順次先読みバッファ７に格納される。
【００１６】
ここで、主軸回転速度が変化すると問題ある指令の判断方法について説明する。主軸回転速度が変化すると問題ある指令として、工具交換指令、切削指令が挙げられる。工具交換指令では通常主軸は停止した状態で行われ、主軸を回転させることはできない。また、切削指令ではワークを加工している状態であり、主軸回転速度が変化すると加工の精度が悪化してしまう。つまり、主軸回転指令以降の指令として、主軸回転速度が変化すると問題ある指令は切削指令であり、主軸回転指令以前の指令として、主軸回転速度が変化すると問題ある指令は切削指令および工具交換指令である。また、主軸停止指令以降の指令として、主軸回転速度が変化すると問題ある指令は工具交換指令であり、主軸停止指令以前の指令として、主軸回転速度が変化すると問題ある指令は切削指令である。また、工具交換指令および切削指令以外の指令で、主軸回転速度が変化すると問題ある指令については、予めパラメータ等に設定しておくことで判断する。ここでは、主軸回転速度が変化すると問題ある指令、すなわち、主軸回転速度変化中の実施により加工上何らかの問題（例えば、加工時間が延びる、加工精度が悪化する等）が発生する指令を第一の指令とし、主軸回転速度が変化しても問題のない指令、すなわち、加工上何らかの問題が発生する第一の指令以外の指令を第二の指令とする。
【００１７】
つぎに、プログラム解析部２における、各ブロックの実行時間の算出方法について説明する。位置決め指令の場合は予めパラメータに設定してある早送り速度、加減速時定数、加工プログラム６で指令された移動距離から算出する（実行時間＝移動距離／早送り速度＋加減速時定数）。また、Ｍコードの場合には、予めパラメータに実行時間を設定しておく。主軸制御指令１２の場合には、予め設定してある最高回転速度、主軸の加減速時定数、加工プログラム６で指令された主軸回転速度、現在の主軸回転速度から算出する（実行時間＝(｜指令された主軸回転速度−現在の主軸回転速度｜）×主軸の加減速時定数／最高回転速度）。
【００１８】
図３は、本実施の形態に係る数値制御装置１の指令判定部３での処理手順を表すフローチャートである。指令判定部３では、プログラム解析部２が解析を行って先読みバッファ７に格納されている指令の情報に基づいて順次処理していく。指令判定部３は、ステップＳ２０１では、先読みバッファ７から１つの指令を読み取り、ステップＳ２０２へ進む。指令判定部３は、ステップＳ２０２では、読み取った指令が主軸制御指令１２か否かを判断し、主軸制御指令１２の場合には（ステップＳ２０２：Ｙｅｓ）ステップＳ２０３へ進み、主軸制御指令１２でない場合には（ステップＳ２０２：Ｎｏ）ステップＳ２０７へ進む。指令判定部３は、ステップＳ２０３では、読み取った指令である主軸制御指令１２を出力し、ステップＳ２０４へ進む。指令判定部３は、ステップＳ２０４では、先読みバッファ７から読み取った指令である主軸制御指令１２を削除し、ステップＳ２０５へ進む。指令判定部３は、ステップＳ２０５では、先読みバッファ７に次の指令が格納されているか否かを判断し、格納されていれば（ステップＳ２０５：Ｙｅｓ）ステップＳ２０６へ進み、格納されていなければ（ステップＳ２０５：Ｎｏ）処理を終了する。指令判定部３は、ステップＳ２０６では、先読みバッファ７から次の指令を読み取り、ステップＳ２０７へ進む。指令判定部３は、ステップＳ２０７では、読み取った指令が主軸回転速度が変化すると問題ある指令か否かを判断し、問題ある指令の場合には（ステップＳ２０７：Ｙｅｓ）ステップＳ２０８へ進み、問題ない指令の場合には（ステップＳ２０７：Ｎｏ）ステップＳ２０９へ進む。指令判定部３は、ステップＳ２０８では、実際の主軸回転速度１４が指令された回転速度へ到達したかを判断し、到達していなければ（ステップＳ２０８：Ｎｏ）到達するのを待ち（ステップＳ２０８：Ｙｅｓ）ステップＳ２０９へ進む。指令判定部３は、ステップＳ２０９では、読み取った指令を出力して処理を終了する。
【００１９】
なお、指令判定部３では、読み取った指令が切削指令や位置決め指令といった移動指令１０の場合には補間部４へ出力し、補間部４にて補間周期毎の移動量１１を求めサーボアンプ８へ出力する。また、指令判定部３では、読み取った指令が主軸回転指令や主軸停止指令といった主軸制御指令１２の場合には主軸制御指令出力部５へ出力し、主軸制御指令出力部５にて主軸回転速度１３を主軸アンプ９へ出力する。また、図示していないが、移動指令１０、主軸制御指令１２以外の指令の場合にも各指令に対応した処理部にて処理されるものであり、従来の処理と同じである。
【００２０】
つづいて、具体的に、加工プログラム例を用いて図２および図３のフローチャートに従って数値制御装置１での処理の流れを説明する。図４は、本実施の形態において数値制御装置１が処理する加工プログラム例を示す図である。まず、プログラム解析部２では、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、および主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ１０１のブロックを読み取る。プログラム解析部２は、Ｎ１０１のブロックは切削指令であるため（ステップＳ１０４：Ｎｏ）、処理を終了する。このとき、先読みバッファ７には、Ｎ１０１の指令が格納される。
【００２１】
指令判定部３では、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０１の指令を読み取る。指令判定部３は、Ｎ１０１の指令は切削指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、切削指令を出力して処理を終了する。
【００２２】
プログラム解析部２は、Ｎ１０１の切削指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ１０２のブロックを読み取る。プログラム解析部２は、Ｎ１０２のブロックは位置決め指令であるため（ステップＳ１０４：Ｎｏ）、処理を終了する。このとき、先読みバッファ７には、Ｎ１０２の指令が格納される。
【００２３】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０２の指令を読み取る。指令判定部３は、Ｎ１０２の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００２４】
プログラム解析部２は、Ｎ１０２の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ１０３のブロックを読み取る。プログラム解析部２は、Ｎ１０３のブロックは主軸停止指令であるため（ステップＳ１０４：Ｙｅｓ）、ステップＳ１０５と進み、主軸回転速度が指令された回転速度に到達するまでの到達時間である主軸加減速時間Ｔ１を算出し、ステップＳ１０６へ進む。プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ１０４のブロックを読み取る。プログラム解析部２は、Ｎ１０４のブロックは工具交換位置復帰の位置決め指令であるため（ステップＳ１０８：Ｎｏ）、ステップＳ１０９と進み、Ｎ１０４のブロックの実行時間を算出して、ステップＳ１１０にて主軸制御指令からの時間Ｔ２を更新する。プログラム解析部２は、ステップＳ１１１にて主軸加減速時間Ｔ１と主軸制御指令からの時間Ｔ２を比較する。プログラム解析部２は、主軸加減速時間Ｔ１の方が大きいとして（ステップＳ１１１：Ｎｏ）、ステップＳ１０６へ戻る。
【００２５】
プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ１０５のブロックを読み取る。プログラム解析部２は、ステップＳ１０８に進み、Ｎ１０５のブロックは工具交換指令であるため（ステップＳ１０８：Ｙｅｓ）、処理を終了する。このとき、先読みバッファ７には、Ｎ１０３、Ｎ１０４、Ｎ１０５の指令が格納される。
【００２６】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０３の指令を読み取る。指令判定部３は、Ｎ１０３の指令は主軸停止指令であるため（ステップＳ２０２：Ｙｅｓ）、ステップＳ２０３、ステップＳ２０４と進み、主軸停止指令を出力し、先読みバッファ７から主軸停止指令を削除する。指令判定部３は、ステップＳ２０５にて先読みバッファ７に次の指令があることを確認し（ステップＳ２０５：Ｙｅｓ）、ステップＳ２０６にてＮ１０４の指令を読み取る。指令判定部３は、Ｎ１０４の指令は工具交換位置復帰の位置決め指令であるため（ステップＳ２０７：Ｎｏ）、ステップＳ２０９と進み、工具交換位置復帰の位置決め指令を出力して処理を終了する。
【００２７】
プログラム解析部２は、Ｎ１０４の工具交換位置復帰の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７には指令がまだ格納されているため（ステップＳ１０１：Ｙｅｓ）、処理を終了する。
【００２８】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０５の指令を読み取る。指令判定部３は、Ｎ１０５の指令は工具交換指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、実際の主軸回転速度１４が指令された回転速度、つまりゼロ速度になるのを待ち、工具交換指令を出力して処理を終了する。
【００２９】
プログラム解析部２は、Ｎ１０５の工具交換指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ１０６のブロックを読み取る。プログラム解析部２は、Ｎ１０６のブロックは位置決め指令であるため（ステップＳ１０４：Ｎｏ）、処理を終了する。このとき、先読みバッファ７には、Ｎ１０６の指令が格納される。
【００３０】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０６の指令を読み取る。指令判定部３は、Ｎ１０６の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００３１】
次のＮ１０７のブロックも位置決め指令であるため、プログラム解析部２および指令判定部３は、Ｎ１０６のブロックと同様の処理を行う。
【００３２】
プログラム解析部２は、Ｎ１０７の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ１０８のブロックを読み取る。プログラム解析部２は、Ｎ１０８のブロックは主軸回転指令であるため（ステップＳ１０４：Ｙｅｓ）、ステップＳ１０５と進み、主軸加減速時間Ｔ１を算出しステップＳ１０６へ進む。プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ１０９のブロックを読み取る。プログラム解析部２は、Ｎ１０９のブロックは位置決め指令であるため（ステップＳ１０８：Ｎｏ）、ステップＳ１０９と進み、Ｎ１０９のブロックの実行時間を算出して、ステップＳ１１０にて主軸制御指令からの時間Ｔ２を更新する。プログラム解析部２は、ステップＳ１１１にて主軸加減速時間Ｔ１と主軸制御指令からの時間Ｔ２を比較する。プログラム解析部２は、主軸加減速時間Ｔ１の方が大きいとして（ステップＳ１１１：Ｎｏ）、ステップＳ１０６へ戻る。
【００３３】
プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ１１０のブロックを読み取る。プログラム解析部２は、Ｎ１１０のブロックは位置決め指令であるため（ステップＳ１０８：Ｎｏ）、ステップＳ１０９と進み、Ｎ１１０のブロックの実行時間を算出して、ステップＳ１１０にて主軸制御指令からの時間Ｔ２を更新する。プログラム解析部２は、ステップＳ１１１にて主軸加減速時間Ｔ１と主軸制御指令からの時間Ｔ２を比較する。プログラム解析部２は、主軸制御指令からの時間Ｔ２の方が大きい場合は（ステップＳ１１１：Ｙｅｓ）、処理を終了する。このとき、先読みバッファ７には、Ｎ１０８、Ｎ１０９、Ｎ１１０の指令が格納される。
【００３４】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０８の指令を読み取る。Ｎ１０８の指令は主軸回転指令であるため（ステップＳ２０２：Ｙｅｓ）、ステップＳ２０３、ステップＳ２０４と進み、主軸回転指令を出力し、先読みバッファ７から主軸回転指令を削除する。指令判定部３は、ステップＳ２０５にて先読みバッファ７に次の指令があることを確認し（ステップＳ２０５：Ｙｅｓ）、ステップＳ２０６にてＮ１０９の指令を読み取る。指令判定部３は、Ｎ１０９の指令は位置決め指令であるため（ステップＳ２０７：Ｎｏ）、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００３５】
プログラム解析部２は、Ｎ１０９の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７には指令がまだ格納されているため（ステップＳ１０１：Ｙｅｓ）、処理を終了する。
【００３６】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１１０の指令を読み取る。指令判定部３は、Ｎ１１０の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００３７】
プログラム解析部２は、Ｎ１１０の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ１１１のブロックを読み取る。プログラム解析部２は、Ｎ１１１のブロックは切削指令であるため（ステップＳ１０４：Ｎｏ）、処理を終了する。このとき、先読みバッファ７には、Ｎ１１１の指令が格納される。
【００３８】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１１１の指令を読み取る。指令判定部３は、Ｎ１１１の指令は切削指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、実際の主軸回転速度１４が指令された回転速度になるのを待ち、切削指令を出力して処理を終了する。
【００３９】
図５は、図４に示す加工プログラム例におけるタイムチャートである。図５（１）は従来動作を示し、図５（２）は本実施の形態での動作を示す。それぞれ、各ステップにおける、主軸回転速度、軸移動量、および工具交換動作の有無の関係を示すものである。従来動作では、主軸回転速度が指令された回転速度に到達して次ブロックへ進むかはラダーによって決まる。仮に、主軸回転速度が指令された回転速度に到達して次ブロックへ進むようになっていたとすると、図５（１）に示すようにＮ１０４、Ｎ１０９、Ｎ１１０の位置決め指令は主軸回転速度が指令された回転速度に到達してから実行される。これに対して、本実施の形態の動作では、ラダーによらず、図５（２）のようにＮ１０４、Ｎ１０９、Ｎ１１０の位置決め指令は主軸回転速度が指令された回転速度に到達していなくても実行され、また、Ｎ１０５の工具交換指令やＮ１１１の切削指令は、主軸回転速度が指令された回転速度に到達してから実行される。そのため、複雑なラダーを作成しなくても加工時間の短縮が可能となる。また、プログラム解析部２での先読みは、主軸回転速度が変化すると問題ある指令が出てくるか、または、主軸制御指令がなされてから主軸回転速度が変化すると問題ある指令までの時間が主軸回転速度が指令された回転速度に到達するまでの時間より大きくなれば終了するため、数値制御装置１での処理負荷の増加を抑えることができる。
【００４０】
以上説明したように、本実施の形態によれば、数値制御装置１において、主軸回転速度が変化すると問題ある指令の場合には、主軸回転速度が指令された回転速度に到達してから出力し、主軸回転速度が変化すると問題ある指令以外の場合には、主軸回転速度が指令された回転速度に到達していなくても出力することとした。これにより、複雑なラダーを作成せず、加工精度および機械に影響を与えることなく加工時間を短縮することができる。
【００４１】
また、プログラム解析部２において、先読みするブロック数を適切に決定することができ、数値制御装置の処理負荷の増加を抑えることができる。
【００４２】
実施の形態２．
図６は、本実施の形態に係る数値制御装置１のプログラム解析部２での処理手順を表すフローチャートである。図６のフローチャートは先に説明した図２のフローチャートと基本的に同じであるため、差分を中心に説明する。ステップＳ１０１、ステップＳ１０２、ステップＳ１０３は図２と同じである。プログラム解析部２は、ステップＳ３０１では、読み取った指令が主軸回転指令か否かを判断し、主軸回転指令の場合には（ステップＳ３０１：Ｙｅｓ）ステップＳ１０５へ進み、主軸回転指令でない場合には（ステップＳ３０１：Ｎｏ）処理を終了する。ステップＳ１０５、ステップＳ１０６、ステップＳ１０７は図２と同じである。プログラム解析部２は、ステップＳ３０２では、切削指令か否かを判断し、切削指令でない場合には（ステップＳ３０２：Ｎｏ）ステップＳ１０９へ進み、切削指令の場合には（ステップＳ３０２：Ｙｅｓ）処理を終了する。ステップＳ１０９、ステップＳ１１０は図２と同じである。
【００４３】
図７は、本実施の形態に係る数値制御装置１の指令判定部３での処理手順を表すフローチャートである。図７のフローチャートは先に説明した図３のフローチャートと基本的に同じであるため、差分を中心に説明する。ステップＳ２０１は図３と同じである。指令判定部３は、ステップＳ４０１では、読み取った指令が主軸回転指令か否かを判断し、主軸回転指令の場合には（ステップＳ４０１：Ｙｅｓ）ステップＳ４０２へ進み、主軸回転指令でない場合には（ステップＳ４０１：Ｎｏ）ステップＳ４０４へ進む。指令判定部３は、ステップＳ４０２では、主軸加減速時間Ｔ１と主軸制御指令からの時間Ｔ２を比較し、主軸加減速時間Ｔ１の方が大きい場合は（ステップＳ４０２：Ｎｏ）ステップＳ２０３へ進み、主軸制御指令からの時間Ｔ２の方が大きい場合には（ステップＳ４０２：Ｙｅｓ）ステップＳ４０３へ進む。指令判定部３は、ステップＳ４０３では、主軸加減速時間が主軸制御指令からの時間Ｔ２になるように主軸の加減速時定数の変更を行い、ステップＳ２０３へ進む。ステップＳ２０３、ステップＳ２０４、ステップＳ２０５、ステップＳ２０６は図３と同じである。指令判定部３は、ステップＳ４０４では、切削指令か否かを判断し、切削指令の場合には（ステップＳ４０４：Ｙｅｓ）ステップＳ２０８へ進み、切削指令でない場合には（ステップＳ４０４：Ｎｏ）ステップＳ２０９へ進む。ステップＳ２０８、ステップＳ２０９は図３と同じである。
【００４４】
つづいて、具体的に、加工プログラム例を用いて図６および図７のフローチャートに従って数値制御装置１での処理の流れを説明する。図８は、本実施の形態において数値制御装置１が処理する加工プログラム例を示す図である。まず、プログラム解析部２では、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ２０１のブロックを読み取る。プログラム解析部２は、Ｎ２０１のブロックは工具交換指令であるため（ステップＳ３０１：Ｎｏ）、処理を終了する。このとき、先読みバッファ７には、Ｎ２０１の指令が格納される。
【００４５】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ２０１の指令を読み取る。指令判定部３は、Ｎ２０１の指令は工具交換指令であるため（ステップＳ４０１：Ｎｏ）、ステップＳ４０４：Ｎｏ、ステップＳ２０９と進み、工具交換指令を出力して処理を終了する。
【００４６】
プログラム解析部２は、Ｎ２０１の工具交換指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ２０２のブロックを読み取る。プログラム解析部２は、Ｎ２０２のブロックは位置決め指令であるため（ステップＳ３０１：Ｎｏ）、処理を終了する。このとき、先読みバッファ７には、Ｎ２０２の指令が格納される。
【００４７】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ２０２の指令を読み取る。指令判定部３は、Ｎ２０２の指令は位置決め指令であるため（ステップＳ４０１：Ｎｏ）、ステップＳ４０４：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００４８】
次のＮ２０３のブロックも位置決め指令であるため、プログラム解析部２および指令判定部３は、Ｎ２０２のブロックと同様の処理を行う。
【００４９】
プログラム解析部２は、Ｎ２０３の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ１０１：Ｎｏ）、ステップＳ１０２にて主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２を０クリアし、ステップＳ１０３にてＮ２０４のブロックを読み取る。プログラム解析部２は、Ｎ２０４のブロックは主軸回転指令であるため（ステップＳ３０１：Ｙｅｓ）、ステップＳ１０５と進み、主軸加減速時間Ｔ１を算出しステップＳ１０６へ進む。プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ２０５のブロックを読み取る。プログラム解析部２は、Ｎ２０５のブロックは位置決め指令であるため（ステップＳ３０２：Ｎｏ）、ステップＳ１０９と進み、Ｎ２０５のブロックの実行時間を算出して、ステップＳ１１０にて主軸制御指令からの時間Ｔ２を更新し、ステップＳ１０６へ戻る。
【００５０】
プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ２０６のブロックを読み取る。プログラム解析部２は、Ｎ２０６のブロックについても位置決め指令であるためＮ２０５のブロックと同様に処理する。また、プログラム解析部２は、Ｎ２０７のブロックについても位置決め指令であるため同様に処理する。
【００５１】
プログラム解析部２は、ステップＳ１０６にて次ブロックがあることを確認し（ステップＳ１０６：Ｙｅｓ）、ステップＳ１０７にて次ブロックであるＮ２０８のブロックを読み取る。プログラム解析部２は、Ｎ２０８のブロックは切削指令であるため（ステップＳ３０２：Ｙｅｓ）、処理を終了する。このとき、先読みバッファ７には、Ｎ２０４、Ｎ２０５、Ｎ２０６、Ｎ２０７、Ｎ２０８の指令が格納される。
【００５２】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ２０４の指令を読み取る。指令判定部３は、Ｎ２０４の指令は主軸回転指令であるため（ステップＳ４０１：Ｙｅｓ）、ステップＳ４０２と進む。指令判定部３は、ステップＳ４０２にて、主軸加減速時間Ｔ１と主軸制御指令からの時間Ｔ２を比較し、主軸制御指令からの時間Ｔ２の方が大きいとすると（ステップＳ４０２：Ｙｅｓ）、ステップＳ４０３へ進む。指令判定部３は、ステップＳ４０３にて主軸の加減速時定数を変更し、ステップＳ２０３、ステップＳ２０４と進み、主軸回転指令を出力し、先読みバッファ７から主軸回転指令を削除する。ステップＳ２０５にて先読みバッファ７に次の指令があることを確認し（ステップＳ２０５：Ｙｅｓ）、ステップＳ２０６にてＮ２０５の指令を読み取る。指令判定部３は、Ｎ２０５の指令は位置決め指令であるため（ステップＳ４０４：Ｎｏ）、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００５３】
プログラム解析部２は、Ｎ２０５の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７には指令がまだ格納されているため（ステップＳ１０１：Ｙｅｓ）、処理を終了する。
【００５４】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ２０６の指令を読み取る。Ｎ２０６の指令は位置決め指令であるため（ステップＳ４０１：Ｎｏ）、ステップＳ４０４：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。Ｎ２０７のブロックもＮ２０６のブロックと同様に処理される。
【００５５】
プログラム解析部２は、Ｎ２０７の位置決め指令の動作が完了すると、ステップＳ１０１にて先読みバッファ７には指令がまだ格納されているため（ステップＳ１０１：Ｙｅｓ）、処理を終了する。
【００５６】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ２０８の指令を読み取る。Ｎ２０８の指令は切削指令であるため（ステップＳ４０１：Ｎｏ）、ステップＳ４０４：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、実際の主軸回転速度１４が指令された回転速度であることを確認し、切削指令を出力して処理を終了する。
【００５７】
図９は、図８に示す加工プログラム例におけるタイムチャートである。図９（１）は従来動作を示し、図９（２）は本実施の形態での動作を示す。従来動作では、主軸回転指令がされてから切削指令がされるまでの時間（Ｔ２）までに主軸回転速度１４を指令された回転速度にしていたため、主軸回転指令がされてから切削指令がされるまでの時間（Ｔ２）と比較して主軸加減速時間（Ｔ１）が極端に短い場合、無駄な加速動作によって消費電力を浪費していた。本実施の形態では、主軸回転指令がされてから切削指令がされるまでの時間（Ｔ２）が、主軸加減速時間（Ｔ１）よりも長い場合には、切削指令に間に合うように主軸加減速時間（Ｔ１）を延ばす。これにより、加工時間は変わらずに、消費電力を削減することができる。
【００５８】
以上説明したように、本実施の形態によれば、数値制御装置１において、主軸回転速度が指令された回転速度に到達するまでに必要な時間に余裕がある場合は、主軸の加減速時間を長くすることとした。これにより、実施の形態１の効果に加えて、消費電力を抑えることができる。
【００５９】
実施の形態３．
図１０は、本実施の形態に係る数値制御装置１のプログラム解析部２での処理手順を表すフローチャートである。プログラム解析部２は、ステップＳ５０１では、先読みバッファ７に指令が格納されているか否かを判断し、格納されていれば（ステップＳ５０１：Ｙｅｓ）処理を終了し、格納されていなければ（ステップＳ５０１：Ｎｏ）ステップＳ５０２へ進む。プログラム解析部２は、ステップＳ５０２では、加工プログラム６を読み取り、ステップＳ５０３へ進む。プログラム解析部２は、ステップＳ５０３では、読み取った指令が主軸制御指令１２か否かを判断し、主軸制御指令１２の場合には（ステップＳ５０３：Ｙｅｓ）ステップＳ５０４へ進み、主軸制御指令１２でない場合には（ステップＳ５０３：Ｎｏ）ステップＳ５０５へ進む。プログラム解析部２は、ステップＳ５０４では、主軸制御指令１２を先読みバッファ７の先頭へ格納する。プログラム解析部２は、ステップＳ５０５では、主軸回転速度が変化すると問題ある指令か否かを判断し、問題ない指令の場合には（ステップＳ５０５：Ｎｏ）ステップＳ５０６へ進み、問題ある指令の場合には（ステップＳ５０５：Ｙｅｓ）処理を終了する。プログラム解析部２は、ステップＳ５０６では、次ブロックがあるかを判断し、次ブロックがあれば（ステップＳ５０６：Ｙｅｓ）ステップＳ５０７へ進み、次ブロックがなければ（ステップＳ５０６：Ｎｏ）処理を終了する。プログラム解析部２は、ステップＳ５０７では、次ブロックを読み取りステップＳ５０３へ戻る。また、プログラム解析部２が読み取ったブロックの情報は、順次先読みバッファ７に格納される。
【００６０】
なお、本実施の形態に係る数値制御装置１の指令判定部３での処理手順を表すフローチャートは、実施の形態１（図３参照）と同様である。
【００６１】
つづいて、具体的に、実施の形態１に係る加工プログラム例（図４参照）を用いて図１０および図３のフローチャートに従って数値制御装置１での処理の流れを説明する。まず、プログラム解析部２では、ステップＳ５０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ５０１：Ｎｏ）、ステップＳ５０２にてＮ１０１のブロックを読み取る。プログラム解析部２は、Ｎ１０１のブロックは切削指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｙｅｓと進み、処理を終了する。このとき、先読みバッファ７には、Ｎ１０１の指令が格納される。
【００６２】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０１の指令を読み取る。指令判定部３は、Ｎ１０１の指令は切削指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、切削指令を出力して処理を終了する。
【００６３】
プログラム解析部２は、Ｎ１０１の切削指令の動作が完了すると、ステップＳ５０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ５０１：Ｎｏ）、ステップＳ５０２にてＮ１０２のブロックを読み取る。プログラム解析部２は、Ｎ１０２のブロックは位置決め指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｎｏと進み、ステップＳ５０６にて次ブロックがあることを確認し（ステップＳ５０６：Ｙｅｓ）、ステップＳ５０７にて次ブロックであるＮ１０３のブロックを読み取る。プログラム解析部２は、Ｎ１０３のブロックは主軸停止指令であるため（ステップＳ５０３：Ｙｅｓ）、ステップＳ５０４と進み、主軸停止指令を先読みバッファ７の先頭に挿入して処理を終了する。このとき、先読みバッファ７には、Ｎ１０３、Ｎ１０２の順に指令が格納される。
【００６４】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０３の指令を読み取る。Ｎ１０３の指令は主軸停止指令であるため（ステップＳ２０２：Ｙｅｓ）、ステップＳ２０３、ステップＳ２０４と進み、主軸停止指令を出力して、先読みバッファ７から主軸停止指令を削除しておく。指令判定部３は、ステップＳ２０５にて先読みバッファ７に次の指令があることを確認し（ステップＳ２０５：Ｙｅｓ）、ステップＳ２０６にてＮ１０２の指令を読み取る。指令判定部３は、Ｎ１０２の指令は位置決め指令であるため（ステップＳ２０７：Ｎｏ）、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００６５】
プログラム解析部２は、Ｎ１０２の位置決め指令の動作が完了すると、ステップＳ５０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ５０１：Ｎｏ）、ステップＳ５０２にてＮ１０４のブロックを読み取る。プログラム解析部２は、Ｎ１０４のブロックは位置決め指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｎｏと進み、ステップＳ５０６にて次ブロックがあることを確認し（ステップＳ５０６：Ｙｅｓ）、ステップＳ５０７にて次ブロックであるＮ１０５のブロックを読み取る。プログラム解析部２は、Ｎ１０５のブロックは工具交換指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｙｅｓと進み、処理を終了する。このとき、先読みバッファ７には、Ｎ１０４、Ｎ１０５の指令が格納される。
【００６６】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０４の指令を読み取る。Ｎ１０４の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して、処理を終了する。指令判定部３は、Ｎ１０４の位置決め指令の動作が完了すると、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０５の指令を読み取る。指令判定部３は、Ｎ１０５の指令は工具交換指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、実際の主軸回転速度１４が指令された回転速度、つまりゼロ速度になるのを待ち、工具交換指令を出力して処理を終了する。
【００６７】
プログラム解析部２は、Ｎ１０５の工具交換指令の動作が完了すると、ステップＳ５０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ５０１：Ｎｏ）、ステップＳ５０２にてＮ１０６のブロックを読み取る。プログラム解析部２は、Ｎ１０６のブロックは位置決め指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｎｏと進み、ステップＳ５０６にて次ブロックがあることを確認し（ステップＳ５０６：Ｙｅｓ）、ステップＳ５０７にて次ブロックであるＮ１０７のブロックを読み取る。プログラム解析部２は、Ｎ１０７のブロックは位置決め指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｎｏと進み、ステップＳ５０６にて次ブロックがあることを確認し（ステップＳ５０６：Ｙｅｓ）、ステップＳ５０７にて次ブロックであるＮ１０８のブロックを読み取る。プログラム解析部２は、Ｎ１０８のブロックは主軸回転指令であるため、ステップＳ５０３（ステップＳ５０３：Ｙｅｓ）、ステップＳ５０４と進み、主軸回転指令を先読みバッファ７の先頭に挿入して処理を終了する。このとき、先読みバッファ７には、Ｎ１０８、Ｎ１０６、Ｎ１０７の順に指令が格納される。
【００６８】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０８の指令を読み取る。指令判定部３は、Ｎ１０８の指令は主軸回転指令であるため（ステップＳ２０２：Ｙｅｓ）、ステップＳ２０３、ステップＳ２０４と進み、主軸回転指令を出力して、先読みバッファ７から主軸回転指令を削除しておく。指令判定部３は、ステップＳ２０５にて先読みバッファ７に次の指令があることを確認し（ステップＳ２０５：Ｙｅｓ）、ステップＳ２０６にてＮ１０６の指令を読み取る。指令判定部３は、Ｎ１０６の指令は位置決め指令であるため（ステップＳ２０７：Ｎｏ）、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。指令判定部３は、Ｎ１０６の位置決め指令の動作が完了すると、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０７の指令を読み取る。指令判定部３は、Ｎ１０７の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。
【００６９】
プログラム解析部２は、Ｎ１０７の位置決め指令の動作が完了すると、ステップＳ５０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ５０１：Ｎｏ）、ステップＳ５０２にてＮ１０９のブロックを読み取る。プログラム解析部２は、Ｎ１０９のブロックは位置決め指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｎｏと進み、ステップＳ５０６にて次ブロックがあることを確認し（ステップＳ５０６：Ｙｅｓ）、ステップＳ５０７にて次ブロックであるＮ１１０のブロックを読み取る。プログラム解析部２は、Ｎ１１０のブロックは位置決め指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｎｏと進み、ステップＳ５０６にて次ブロックがあることを確認し（ステップＳ５０６：Ｙｅｓ）、ステップＳ５０７にて次ブロックであるＮ１１１のブロックを読み取る。プログラム解析部２は、Ｎ１１１のブロックは切削指令であるため（ステップＳ５０３：Ｎｏ）、ステップＳ５０５：Ｙｅｓと進み、処理を終了する。このとき、先読みバッファ７には、Ｎ１０９、Ｎ１１０、Ｎ１１１の指令が格納される。
【００７０】
指令判定部３は、ステップＳ２０１にて先読みバッファ７に格納されたＮ１０９の指令を読み取る。指令判定部３は、Ｎ１０９の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。指令判定部３は、Ｎ１０９の位置決め指令の動作が完了すると、ステップＳ２０１にて先読みバッファ７に格納されたＮ１１０の指令を読み取る。指令判定部３は、Ｎ１１０の指令は位置決め指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｎｏ、ステップＳ２０９と進み、位置決め指令を出力して処理を終了する。指令判定部３は、Ｎ１１０の位置決め指令の動作が完了すると、ステップＳ２０１にて先読みバッファ７に格納されたＮ１１１の指令を読み取る。指令判定部３は、Ｎ１１１の指令は切削指令であるため（ステップＳ２０２：Ｎｏ）、ステップＳ２０７：Ｙｅｓ、ステップＳ２０８：Ｙｅｓ、ステップＳ２０９と進み、実際の主軸回転速度１４が指令された回転速度に到達するのを待ち、切削指令を出力して処理を終了する。
【００７１】
図１１は、図４に示す加工プログラム例におけるタイムチャートである。図１１（１）は従来動作を示し、図１１（２）は本実施の形態での動作を示す。従来動作では、主軸回転速度が指令された回転速度に到達して次ブロックへ進むかはラダーによって決まる。仮に、主軸回転速度が指令された回転速度に到達して次ブロックへ進むようになっていたとすると、図１１（１）に示すようにＮ１０４、Ｎ１０９の位置決め指令は主軸回転速度が指令された回転速度に到達してから実行される。これに対して、本実施の形態の動作では、ラダーによらず、図１１（２）のようにＮ１０４、Ｎ１０９の位置決め指令は主軸回転速度が指令された回転速度に到達していなくても実行され、また、Ｎ１０５の工具交換指令やＮ１１１の切削指令は、主軸回転速度が指令された回転速度に到達してから実行される。そのため、複雑なラダーを作成しなくても加工時間の短縮が可能となる。さらに、Ｎ１０３の主軸停止指令はＮ１０１の切削指令が完了すれば出力されるため、Ｎ１０５の工具交換指令を実行するまでの待ち時間を短縮することができる。
【００７２】
なお、工具交換指令および切削指令以外の指令として、主軸制御指令以前の指令について予め先出し禁止指令として設定することも可能である。この場合、指令判定部３は、主軸制御指令以前の指令が予め先出し禁止指令として設定された指令か否かを判断し、先出し禁止指令以外の場合、主軸制御指令を加工プログラム６で指定されたタイミングより先に出力する。
【００７３】
以上説明したように、本実施の形態によれば、数値制御装置１において、主軸回転速度が変化すると問題ある指令以外の場合には、主軸制御指令を加工プログラムで指定したタイミングよりも先に出力することとした。これにより、複雑なラダーを作成せず、加工および機械に影響を与えることなく加工時間を短縮することができる。
【００７４】
実施の形態４．
図１２は、本実施の形態に係る数値制御装置１のプログラム解析部２での処理手順を表すフローチャートである。プログラム解析部２は、ステップＳ６０１では、先読みバッファ７に指令が格納されているか否かを判断し、格納されていれば処理を終了し（ステップＳ６０１：Ｙｅｓ）、格納されていなければ（ステップＳ６０１：Ｎｏ）ステップＳ６０２へ進む。プログラム解析部２は、ステップＳ６０２では、主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２、主軸制御指令までの時間Ｔ３、主軸制御指令出力タイミングＴｓを０クリアし、主軸制御指令フラグをＯＦＦし、ステップＳ６０３へ進む。プログラム解析部２は、ステップＳ６０３では、加工プログラム６を読み取りステップＳ６０４へ進む。プログラム解析部２は、ステップＳ６０４では、読み取った指令が主軸回転指令か否かを判断し、主軸回転指令でない場合には（ステップＳ６０４：Ｎｏ）ステップＳ６０５へ進み、主軸回転指令の場合には（ステップＳ６０４：Ｙｅｓ）ステップＳ６１０へ進む。プログラム解析部２は、ステップＳ６０５では、読み取った指令が主軸回転速度が変化すると問題ある指令か否かを判定し、問題ある場合には（ステップＳ６０５：Ｙｅｓ）処理を終了し、問題ない場合には（ステップＳ６０５：Ｎｏ）ステップＳ６０６へ進む。プログラム解析部２は、ステップＳ６０６では、読み取った指令の実行時間を算出し、ステップＳ６０７へ進む。プログラム解析部２は、ステップＳ６０７では、ステップＳ６０６で算出した実行時間を累積して主軸制御指令までの時間Ｔ３を算出し、ステップＳ６０８へ進む。プログラム解析部２は、ステップＳ６０８では、次ブロックがあるか否かを判断し、ある場合には（ステップＳ６０８：Ｙｅｓ）ステップＳ６０９へ進み、ない場合には（ステップＳ６０８：Ｎｏ）処理を終了する。プログラム解析部２は、ステップＳ６０９では、次ブロックを読み取りステップＳ６０４へ戻る。
【００７５】
また、プログラム解析部２は、ステップＳ６１０では、主軸制御指令フラグをＯＮし、主軸加減速時間Ｔ１を算出し、ステップＳ６１１へ進む。プログラム解析部２は、ステップＳ６１１では、次ブロックがあるかを判断し、次ブロックがあれば（ステップＳ６１１：Ｙｅｓ）ステップＳ６１２へ進み、次ブロックがなければ（ステップＳ６１１：Ｎｏ）処理を終了する。プログラム解析部２は、ステップＳ６１２では、次ブロックを読み取り、ステップＳ６１３へ進む。プログラム解析部２は、ステップＳ６１３では、読み取ったブロックが主軸回転速度が変化すると問題ある指令か否かを判断し、問題ある場合には（ステップＳ６１３：Ｙｅｓ）ステップＳ６１６へ進み、問題ない場合には（ステップＳ６１３：Ｎｏ）ステップＳ６１４へ進む。プログラム解析部２は、ステップＳ６１４では、読み取った指令の実行時間を算出し、ステップＳ６１５へ進む。プログラム解析部２は、ステップＳ６１５では、ステップＳ６１４で算出した実行時間を累積して主軸制御指令からの時間Ｔ２を算出し、ステップＳ６１１へ戻る。プログラム解析部２は、ステップＳ６１６では、主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２、主軸制御指令までの時間Ｔ３から主軸制御指令出力タイミングＴｓを算出し（Ｔｓ＝Ｔ３−（Ｔ１−Ｔ２））、処理を終了する。また、プログラム解析部２が読み取ったブロックの情報および算出した実行時間は、順次先読みバッファ７に格納される。
【００７６】
図１３は、本実施の形態に係る数値制御装置１の指令判定部３での処理手順を表すフローチャートである。指令判定部３では、プログラム解析部２が解析を行って先読みバッファ７に格納されている指令の情報に基づいて順次処理していく。指令判定部３は、ステップＳ７０１では、主軸制御指令フラグがＯＮか否かを判断し、ＯＮの場合には（ステップＳ７０１：Ｙｅｓ）ステップＳ７０２へ進み、ＯＦＦの場合には（ステップＳ７０１：Ｎｏ）ステップＳ７１２へ進む。指令判定部３は、ステップＳ７０２では、先読みバッファ７から１つの指令を読み取りステップＳ７０３へ進む。指令判定部３は、ステップＳ７０３では、読み取った指令が主軸回転指令か否かを判断し、主軸回転指令の場合には（ステップＳ７０３：Ｙｅｓ）ステップＳ７０４へ進み、主軸回転指令でない場合には（ステップＳ７０３：Ｎｏ）ステップＳ７１３へ進む。指令判定部３は、ステップＳ７０４では、主軸回転指令を出力し、ステップＳ７０５へ進む。指令判定部３は、ステップＳ７０５では、先読みバッファ７から主軸回転指令を削除し、ステップＳ７０６へ進む。指令判定部３は、ステップＳ７０６では、主軸制御指令フラグをＯＦＦし、ステップＳ７０７へ進む。指令判定部３は、ステップＳ７０７では、先読みバッファ７に次の指令が格納されているか否かを判断し、格納されていれば（ステップＳ７０７：Ｙｅｓ）ステップＳ７０８へ進み、格納されていなければ（ステップＳ７０７：Ｎｏ）処理を終了する。指令判定部３は、ステップＳ７０８では、先読みバッファ７から次の指令を読み取り、ステップＳ７０９へ進む。指令判定部３は、ステップＳ７０９では、読み取った指令が主軸回転速度が変化すると問題ある指令か否かを判断し、問題ある場合には（ステップＳ７０９：Ｙｅｓ）ステップＳ７１０へ進み、問題ない場合には（ステップＳ７０９：Ｎｏ）ステップＳ７１１へ進む。指令判定部３は、ステップＳ７１０では、実際の主軸回転速度１４が指令された回転速度へ到達したかを判断し、到達していなければ（ステップＳ７１０：Ｎｏ）到達するのを待ち（ステップＳ７１０：Ｙｅｓ）ステップＳ７１１へ進む。指令判定部３は、ステップＳ７１１では、読み取った指令を出力して処理を終了する。指令判定部３は、ステップＳ７１２では、先読みバッファ７から１つの指令を読み取りステップＳ７０９へ進む。
【００７７】
また、指令判定部３は、ステップＳ７１３では、読み取った指令を出力し、ステップＳ７１４へ進む。指令判定部３は、ステップＳ７１４では、主軸制御指令出力タイミングＴｓから読み取った指令の実行時間を減算し、ステップＳ７１５へ進む。指令判定部３は、ステップＳ７１５では、主軸制御指令出力タイミングＴｓが０以下か否かを確認し、０以下であれば（ステップＳ７１５：Ｙｅｓ）ステップＳ７１６へ進み、０以下でなければ（ステップＳ７１５：Ｎｏ）処理を終了する。指令判定部３は、ステップＳ７１６では、主軸回転指令を出力し、ステップＳ７１７へ進む。指令判定部３は、ステップＳ７１７では、先読みバッファ７から主軸回転指令を削除しステップＳ７１８へ進む。指令判定部３は、ステップＳ７１８では、主軸制御指令フラグをＯＦＦして処理を終了する。
【００７８】
つづいて、具体的に、加工プログラム例を用いて図１２および図１３のフローチャートに従って数値制御装置１での処理の流れを説明する。図１４は、本実施の形態において数値制御装置１が処理する加工プログラム例を示す図である。まず、プログラム解析部２では、ステップＳ６０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ６０１：Ｎｏ）、ステップＳ６０２にて、主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２、主軸制御指令までの時間Ｔ３、主軸制御指令出力タイミングＴｓを０クリア、主軸制御指令フラグをＯＦＦする。プログラム解析部２は、ステップＳ６０３にて、Ｎ３０１のブロックを読み取る。プログラム解析部２は、Ｎ３０１のブロックは工具交換指令であるため（ステップＳ６０４：Ｎｏ）、ステップＳ６０５：Ｙｅｓと進み、処理を終了する。このとき、先読みバッファ７には、Ｎ３０１の指令が格納される。
指令判定部３は、ステップＳ７０１にて、主軸制御指令フラグがＯＮかを確認し、主軸制御指令フラグはＯＦＦしているため（ステップＳ７０１：Ｎｏ）、ステップＳ７１２へ進む。指令判定部３は、ステップＳ７１２にて先読みバッファ７に格納されたＮ３０１の指令を読み取る。指令判定部３は、Ｎ３０１の指令は工具交換指令であるため（ステップＳ７０９：Ｎｏ）、ステップＳ７１１へ進み、指令を出力して処理を終了する。
プログラム解析部２は、ステップＳ６０１にて先読みバッファ７に指令が格納されていないことを確認し（ステップＳ６０１：Ｎｏ）、ステップＳ６０２にて、主軸加減速時間Ｔ１、主軸制御指令からの時間Ｔ２、主軸制御指令までの時間Ｔ３、主軸制御指令出力タイミングＴｓを０クリア、主軸制御指令フラグをＯＦＦする。プログラム解析部２は、ステップＳ６０３にて、Ｎ３０２のブロックを読み取る。
【００７９】
プログラム解析部２は、Ｎ３０２のブロックは位置決め指令であるため（ステップＳ６０４：Ｎｏ）、ステップＳ６０５：Ｎｏ、ステップＳ６０６と進み、ブロック実行時間を算出し、ステップＳ６０７にて、主軸制御指令までの時間Ｔ３を算出する。プログラム解析部２は、ステップＳ６０８にて、次ブロックがあることを確認し（ステップＳ６０８：Ｙｅｓ）、ステップＳ６０９にてＮ３０３のブロックを読み取る。
【００８０】
プログラム解析部２は、Ｎ３０３のブロックも位置決め指令であるため（ステップＳ６０４：Ｎｏ）、Ｎ３０２のブロックと同様、ステップＳ６０５：Ｎｏ、ステップＳ６０６、ステップＳ６０７と進み、Ｎ３０３のブロックのブロック実行時間を算出し、主軸制御指令までの時間Ｔ３を更新する。プログラム解析部２は、ステップＳ６０８：Ｙｅｓ、ステップＳ６０９と進み、Ｎ３０４のブロックを読み取る。
【００８１】
プログラム解析部２は、Ｎ３０４のブロックは主軸回転指令であるため（ステップＳ６０４：Ｙｅｓ）、ステップＳ６１０と進み、主軸制御指令フラグをＯＮし、主軸加減速時間Ｔ１を算出する。プログラム解析部２は、ステップＳ６１１：Ｙｅｓ、ステップＳ６１２と進み、Ｎ３０５のブロックを読み取る。プログラム解析部２は、Ｎ３０５のブロックは位置決め指令であるため（ステップＳ６１３：Ｎｏ）、ステップＳ６１４と進み、ブロック実行時間を算出し、ステップＳ６１５にて、主軸制御指令からの時間Ｔ２を算出する。
【００８２】
プログラム解析部２は、ステップＳ６１１に戻って、ステップＳ６１１：Ｙｅｓ、ステップＳ６１２と進み、Ｎ３０６のブロックを読み取る。プログラム解析部２は、Ｎ３０６のブロックも位置決め指令であるため（ステップＳ６１３：Ｎｏ）、Ｎ３０５のブロックと同様、ステップＳ６１４と進み、ブロック実行時間を算出し、ステップＳ６１５にて、主軸制御指令からの時間Ｔ２を算出する。
【００８３】
プログラム解析部２は、ステップＳ６１１に戻って、ステップＳ６１１：Ｙｅｓ、ステップＳ６１２と進み、Ｎ３０７のブロックを読み取る。プログラム解析部２は、Ｎ３０７のブロックは切削指令であるため（ステップＳ６１３：Ｙｅｓ）、ステップＳ６１６と進み、主軸制御指令出力タイミングＴｓを算出して処理を終了する。このとき、先読みバッファ７には、Ｎ３０２からＮ３０７までの指令が格納され、また、Ｎ３０２、Ｎ３０３、Ｎ３０５、Ｎ３０６のブロックに対しては、ブロック実行時間も格納される。
【００８４】
指令判定部３は、先読みバッファ７に格納されたＮ３０２からＮ３０７までの指令を順次処理していく。
【００８５】
指令判定部３は、ステップＳ７０１にて、主軸制御指令フラグがＯＮかを確認し、主軸制御指令フラグはＯＮしているため（ステップＳ７０１：Ｙｅｓ）、ステップＳ７０２へ進む。指令判定部３は、ステップＳ７０２にて、Ｎ３０２の指令を読み取る。指令判定部３は、Ｎ３０２は位置決め指令であるため（ステップＳ７０３：Ｎｏ）、ステップＳ７１３と進み、指令を出力する。指令判定部３は、ステップＳ７１４にて、主軸制御指令出力タイミングＴｓからＮ３０２のブロック実行時間を減算する。指令判定部３は、ステップＳ７１５にて、主軸制御指令出力タイミングＴｓが０以下かを判断する。指令判定部３は、現時点では主軸制御指令出力タイミングＴｓは０以下でないとして（ステップＳ７１５：Ｎｏ）、処理を終了する。
【００８６】
指令判定部３は、Ｎ３０２の指令が完了すると、ステップＳ７０１：Ｙｅｓ、ステップＳ７０２と進み、Ｎ３０３の指令を読み取る。指令判定部３は、Ｎ３０３は位置決め指令であるため（ステップＳ７０３：Ｎｏ）、ステップＳ７１３と進み、指令を出力する。指令判定部３は、ステップＳ７１４にて、主軸制御指令出力タイミングＴｓからＮ３０３のブロック実行時間を減算する。指令判定部３は、ステップＳ７１５にて、現時点で主軸制御指令出力タイミングＴｓは０以下になったとして（ステップＳ７１５：Ｙｅｓ）、ステップＳ７１６へ進み、主軸回転指令（Ｎ３０４）を出力し、ステップＳ７１７へ進み、先読みバッファ７から主軸回転指令（Ｎ３０４）を削除し、ステップＳ７１８へ進み、主軸制御指令フラグをＯＦＦして処理を終了する。
【００８７】
指令判定部３は、Ｎ３０３の指令が完了すると、ステップＳ７０１：Ｎｏ、ステップＳ７１２と進み、Ｎ３０５の指令を読み取る。指令判定部３は、Ｎ３０５の指令は位置決め指令であるため（ステップＳ７０９：Ｎｏ）、ステップＳ７１１へ進み、指令を出力して処理を終了する。
【００８８】
指令判定部３は、Ｎ３０５の指令が完了すると、ステップＳ７０１：Ｎｏ、ステップＳ７１２へ進み、Ｎ３０６の指令を読み取る。指令判定部３は、Ｎ３０６の指令は位置決め指令であるため（ステップＳ７０９：Ｎｏ）、ステップＳ７１１へ進み、指令を出力して処理を終了する。
【００８９】
指令判定部３は、Ｎ３０６の指令が完了すると、ステップＳ７０１：Ｎｏ、ステップＳ７１２へ進み、Ｎ３０７の指令を読み取る。指令判定部３は、Ｎ３０７の指令は切削指令であるため、ステップＳ７０９：Ｙｅｓ、ステップＳ７１０へ進み、実際の主軸回転速度１４が指令された回転速度に到達するのを待つ。指令判定部３は、実際の主軸回転速度１４が指令された回転速度に到達すれば、ステップＳ７１１へ進み、指令を出力して処理を終了する。
【００９０】
図１５は、図１４に示す加工プログラム例におけるタイムチャートである。図１５（１）は従来動作を示し、図１５（２）は本実施の形態での動作を示す。従来動作では、主軸回転速度が指令された回転速度に到達して次ブロックへ進むかはラダーによって決まる。仮に、主軸回転速度が指令された回転速度に到達して次ブロックへ進むようになっていたとすると、図１５（１）に示すようにＮ３０５、Ｎ３０６の位置決め指令は主軸回転速度が指令された回転速度に到達してから実行される。また、Ｎ３０４の主軸回転指令もＮ３０３の移動が完了してから出力される。これに対して、本実施の形態の動作では、ラダーによらず、図１５（２）のようにＮ３０５、Ｎ３０６の位置決め指令は主軸回転速度が指令された回転速度に到達していなくても実行され、また、Ｎ３０７の切削指令は主軸回転速度が指令された回転速度に到達してから実行される。そのため、複雑なラダーを作成しなくても加工時間の短縮が可能となる。さらに、Ｎ３０４の主軸回転指令は、Ｎ３０７の切削指令の開始するタイミングに合わせて主軸回転速度が指令された回転速度に到達するように出力されるため、Ｎ３０７の切削指令を実行するまでの待ち時間を短縮することができる。
【００９１】
以上説明したように、本実施の形態によれば、数値制御装置１において、主軸制御指令を先出し、主軸回転速度が変化すると問題ある指令時に主軸回転速度が指令された回転速度に到達するまでの待ち時間をなくすこととした。これにより、加工時間を短縮することができる。
【００９２】
なお、数値制御装置１では、表示部を備え、表示部の画面上に、加工プログラムで指定したタイミングの変更情報を作業者に出力するようにしてもよい。図１６は、数値制御装置１が備える表示部における表示画面の例を示す図である。
【００９３】
図１６（１）は、従来における数値制御装置の画面の表示例を示す図である。画面２０には、機械位置等の位置情報２１、モーダルの状態等のモーダル情報２２、切削速度や主軸回転速度等の加工情報２３、加工プログラム情報２４等が表示されている。主軸制御指令１２を加工プログラムで指定したタイミングから変更して出力する場合には、作業者に出力するタイミングの変更がわかるように画面２０から通知する。
【００９４】
図１６（２）は、本実施の形態における数値制御装置の画面の表示例を示す図である。主軸制御指令の出力タイミングを変更した様子を示す。主軸制御指令１２を加工プログラムで指定したタイミングから変更して出力する場合、加工プログラム情報２４を２分割し、一方には元の加工プログラムを表示する。このとき、変更する主軸制御指令１２は元の表示より薄く表示する。もう一方には、出力するタイミングに合わせ、変更する主軸制御指令１２を表示する。このように、画面から変更するタイミングを通知することで、作業者は機械の動作を把握することができ、安心して作業することができる。
【符号の説明】
【００９５】
１  数値制御装置
２  プログラム解析部
３  指令判定部
４  補間部
５  主軸制御指令出力部
６  加工プログラム
７  先読みバッファ
８  サーボアンプ
９  主軸アンプ
１０  移動指令
１１  移動量
１２  主軸制御指令
１３  主軸回転速度
１４  実際の主軸回転速度
２０  画面
２１  位置情報
２２  モーダル情報
２３  加工情報
２４  加工プログラム情報
【要約】
主軸回転速度を制御可能な工作機械の数値制御装置（１）であって、加工プログラム（６）を１ブロック以上先読みして工作機械に対する指令の解析を行うプログラム解析部（２）と、プログラム解析部（２）での解析結果に基づいて、主軸制御指令以後の指令について主軸回転速度変化中の実施により加工上何らかの問題が発生するか否かを判断し、加工上何らかの問題が発生する第一の指令は主軸回転速度が指令された回転速度に到達してから出力し、第一の指令以外の第二の指令は主軸回転速度が指令された回転速度到達前に出力する指令判定部（３）と、を備える。【図１】
0005496419.tif 000002
【図２】
0005496419.tif 000003
【図３】
0005496419.tif 000004
【図４】
0005496419.tif 000005
【図５】
0005496419.tif 000006
【図６】
0005496419.tif 000007
【図７】
0005496419.tif 000008
【図８】
0005496419.tif 000009
【図９】
0005496419.tif 000010
【図１０】
0005496419.tif 000011
【図１１】
0005496419.tif 000012
【図１２】
0005496419.tif 000013
【図１３】
0005496419.tif 000014
【図１４】
0005496419.tif 000015
【図１５】
0005496419.tif 000016
【図１６】
0005496419.tif 000017