(57)【要約】【課題】現在実行しているプログラムの状況に応じて適切な数のブロックを先読みする制御を行う数値制御装置を提供すること。【解決手段】本発明の数値制御装置１は、プログラム２００の実行中のブロック以降の所定の基準ブロックの実行に必要とされる該基準ブロック以降のブロックが先読みされたか否かに応じて、プログラム２００からのブロックの先読みが充足しているか否かを判定する先読み充足判定部１０２と、先読み充足判定部１０２がプログラム２００からのブロックの先読みが充足していないと判定している場合、プログラム２００からのブロックの先読みを行う先読み解析部１００と、を備える。【選択図】図２
2020170470.tif 000002
【特許請求の範囲】
【請求項１】
プログラムのブロックを先読みする先読み機能を備えた数値制御装置であって、
前記プログラムの実行中のブロック以降の所定の基準ブロックの実行に必要とされる該基準ブロック以降のブロックが先読みされたか否かに応じて、前記プログラムからのブロックの先読みが充足しているか否かを判定する先読み充足判定部と、
前記先読み充足判定部が前記プログラムからのブロックの先読みが充足していないと判定している場合、前記プログラムからのブロックの先読みを行う先読み解析部と、
を備えた数値制御装置。
【請求項２】
前記先読み充足判定部は、前記基準ブロックが軸送りを指令している場合において、該指令における制限速度で軸を移動させた時、先読みされたブロックの実行時間内で該軸を停止させることが出来る場合に、前記プログラムからのブロックの先読みが充足していると判定する、
請求項１に記載の数値制御装置。
【請求項３】
前記先読み充足判定部は、指令毎又は機能毎に設定された必要ブロック数乃至必要ブロック数を演算する式に基づいて、前記プログラムからのブロックの先読みが充足しているか否かを判定する、
請求項１に記載の数値制御装置。
【請求項４】
前記基準ブロックは、実行中のブロックとの関係として予め静的に設定されている、
請求項１に記載の数値制御装置。
【請求項５】
実行中のブロックの実行状況又は先読みされたブロックの実行時間に応じて、基準ブロックを動的に設定する基準ブロック設定部をさらに備える、
請求項１に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関し、特にプログラムの先読み機能を備えた数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置には、プログラムのブロックを、該ブロックを実行する前に予めメモリ上に読み出して、事前に解析を行う先読み機能を備えているものがある（例えば、特許文献１〜３等）。この先読み機能により、プログラムの先の方で実行されるブロックによる指令形状や速度指令を考慮した補正機能や速度制御を実現することができる。
【０００３】
例えば、特許文献１には、工具径補正を行う際に、プログラムのブロックを複数ブロック先読みし、先読みされた指令ブロックにおいて補正が原因で工具とワークとの干渉が発生する場合に、補正する方向や補正量を変更することで工具とワークとの干渉を回避する技術が開示されている。
また、特許文献２には、プログラムのブロックを複数ブロック先読みして先で指令される指令速度を考慮しながら、急激な減速などが発生しないような速度制御を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０９−０６９００３号公報
【特許文献２】特開２００７−０９４９３６号公報
【特許文献３】特開２００８−２９３２６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
先読み機能が有効な場合、プログラムに含まれるマクロ文は先読みして解析される際に処理される。そのため、ブロックが実行されるタイミングでマクロ文を処理する必要がある場合には、当該ブロックの直前にバッファリング禁止命令を入れる等の対応を取る必要がある。例えば、直前のブロックの実行が完了した後の軸の位置に応じて分岐処理を行うマクロ文を先読みして解析するタイミングで処理してしまうと、直前のブロックの実行が行われていない状態で取得された誤った軸の位置に基づいて分岐処理が行われてしまい、想定した処理が実行されなくなる恐れがある。この様な場合には、そのブロックの直前にバッファリング禁止命令を入れて、直前のブロックの実行が完了してから処理が行われるようにする。
【０００６】
このバッファリング禁止命令をプログラムに入れると、その命令が含まれるブロックのところで先読みが行われなくなるため、前述の補正機能や速度制御に影響が出る。そのため、マクロ文の実行タイミングが厳密でない場合や、先読みを優先したい場合に、敢えてバッファリング禁止命令を入れずにプログラムしている場合がある。また、単に先読みの特性を理解しておらず、本来バッファリング禁止命令を入れるべきところに入れていなくても、たまたま問題なくプログラムが動作している場合がある。
【０００７】
図７は、マクロ文を含むプログラムの例を示す図である。図７に示したプログラムでは、Ｎ０１００ブロック及びＮ０５００ブロックのマクロ文において、該マクロ文が処理された時点での時刻を取得して変数＃１００及び変数＃１０１に対して代入している。そして、Ｎ０５１０ブロックでは、変数＃１００及び変数＃１０１の差を計算して、変数＃５００に代入している。この変数＃５００は、Ｎ０１００のブロックとＮ０５００のブロックとの間にあるブロックの実行にどれだけ時間が掛かるのかを示す。この様なプログラムにおいて、Ｎ０１００のブロックとＮ０５００のブロックとの間にあるブロックの実行時間を正確に知りたい場合には、本来はＮ０１００ブロックの直前と、Ｎ０５００ブロックの直前とにバッファリング禁止命令を入れる必要がある。しかしながら、オペレータがバッファリング禁止命令を入れ忘れたとしても、プログラムの処理に大きな問題が生じること無く動作するため、気づかずに実作業を行っている場合もある。
【０００８】
一般に、先読み機能は、予め用意された先読み用のバッファが満たされるまで、処理能力の許す限り先読みを実行する。そのため、上記したバッファリング禁止命令をプログラムに入れていない場合、先読み用のバッファのバッファサイズが大きければ大きいほど、マクロ文が処理されるタイミングと、マクロ文の前後にあるブロックが実際に実行されるタイミング（マクロ文の前後にあるブロックによる指令が工作機械や周辺装置に対して出力されるタイミング）との時間的なギャップが大きくなる。
【０００９】
図８，９は、プログラムのブロックの先読みと実行の様子を例示する図である。図８は、１０ブロック分の先読みしたブロックに係るデータを記憶できるバッファが用意されている例を示している。また、図９は、１００ブロック分の先読みしたブロックに係るデータを記憶できるバッファが用意されている例を示している。図８，９では、１つの矩形は１つのブロックを示しており、また、プログラムを複数の矩形（ブロック）が縦に積み重なったものとして示している。図８，９では、プログラムのブロックの先読みと実行の時間的推移を左から右に並べて示している。プログラムのブロックは、上から順に先読みされ、また、上から順に実行されていく。図８，９において、斜線で網掛けされた矩形はマクロ文を含んだブロックであり、その他のブロックは通常のＮＣブロックであると仮定する。また、黒塗りされた矩形は現在実行中のブロック、縦線で網掛けされた矩形は既に実行済みのブロックを示し、また、矢印が指すブロックまでが先読み用バッファに先読みされているものとする。例えば、図８では、時刻ｔ0でプログラムの先読み及び実行が開始され、時刻ｔ1の時点で５ブロック目までがバッファに先読みされ、１ブロック目が実行中の状態であることを示している。
【００１０】
ここで、図８に示した例（１０ブロック分先読み可能）では、現在実行中のブロックから１０ブロック分の先読みが行われる。プログラム開始時ｔ0では、プログラムの先頭のブロックから順に先読みが行われ、１ブロック目が実行される。そして、１０ブロック目までの先読みが行われた時刻ｔ2の時点でバッファが充足され、先読みが停止する。この段階では、１ブロック目が実行中である。そして、１ブロック目の実行が終了すると、１ブロック目の先読みに用いられていたバッファの領域が解放され、１１ブロック目の先読みが行われる。このようにブロックの先読み及び実行が進み、７ブロック目の実行が完了し、８ブロック目の実行が行われる時刻ｔiにおいて１７ブロック目（斜線で網掛けされた矩形）が先読みされて解析（マクロ文はこの時点で処理される）されることとなる。
【００１１】
一方で、図９に示した例（１００ブロック分先読み可能）では、現在実行中のブロックから１００ブロックまでは先読みが行われる。プログラム開始時ｔ0では、プログラムの先頭のブロックから順に先読みが行われ、１ブロック目が実行される。そして、例えばプログラムの１７ブロック目（斜線で網掛けされた矩形）は、時刻ｔ4の時点で先読み及び解析（マクロ文はこの時点で処理される）が行われる。また、この時点で２ブロック目のブロックが実行されている。
【００１２】
この様に、先読みしたブロックに係るデータを記憶するバッファのバッファサイズが大きい場合は、バッファサイズが小さい場合と比較して、ブロックが先読みされるタイミングと、該ブロックが実行されるタイミングとの時間的なギャップが大きくなる。そのため、バッファリング禁止命令を入れていないプログラムを、先読みしたブロックに係るデータを記憶するバッファのバッファサイズが大きい数値制御装置で実施すると、想定している実行結果と実際の実行結果との間に時間的なギャップに基づく大きな差異が生じて問題になる場合がある。例えば、図７のプログラムは、先読みしたブロックに係るデータを記憶するバッファのバッファサイズが小さい数値制御装置で実行した場合と、バッファサイズが大きい数値制御装置で実行した場合とでは、変数＃５００に代入される値に大きな差が生じ、それぞれの実行結果（ブロックＮ０５２０の判定結果）が変化してしまう場合がある。
【００１３】
この様な問題の発生を最小限に抑えるためには、先読みを要する機能（速度制御等）で必要となる先読みを優先しながらも、必ずしも必要では無い先読みをしないように先読みの制御を行うことが望ましい。必ずしも必要では無い先読みは、実行結果を変えてしまう等の悪影響を及ぼす可能性があるからである。
【００１４】
また、先読みしたブロックに係るデータを記憶するバッファのバッファサイズが大きいと、先読みされたブロックの解析処理の負荷がプログラム実行開始時に集中するという別の問題もある。例えば、複数系統のシステムにおいて、同時にプログラムが実行開始された場合、各系統におけるプログラム解析処理の負荷がプログラム実行開始時に集中し、互いの処理に影響を与える可能性がある。そのため、プログラムの実行時間内で時間的に負荷が分散している方が好ましい。その観点からも、必ずしも必要では無い先読みはしない方が良いと考えられる。
【００１５】
そこで、現在実行しているプログラムの状況に応じて適切な数のブロックを先読みする制御を行う数値制御装置が望まれている。
【課題を解決するための手段】
【００１６】
本発明の一態様による数値制御装置は、現在実行中のブロック以降の所定のブロックの実行に必要とされるブロック数（ブロック毎に異なる）が確保（先読み及び解析）されるまで先読みを続け、確保できたら先読みを中断することで、上記課題を解決する。
【００１７】
そして、本発明の一態様は、プログラムのブロックを先読みする先読み機能を備えた数値制御装置であって、前記プログラムの実行中のブロック以降の所定の基準ブロックの実行に必要とされる該基準ブロック以降のブロックが先読みされたか否かに応じて、前記プログラムからのブロックの先読みが充足しているか否かを判定する先読み充足判定部と、前記先読み充足判定部が前記プログラムからのブロックの先読みが充足していないと判定している場合、前記プログラムからのブロックの先読みを行う先読み解析部と、を備えた数値制御装置である。
【発明の効果】
【００１８】
本発明により、現在実行しているプログラムの状況に応じて適切な数のブロックを先読みする事ができるようになる。
【図面の簡単な説明】
【００１９】
【図１】一実施形態による数値制御装置の概略的なハードウェア構成図である。
【図２】第１実施形態による数値制御装置の概略的な機能ブロック図である。
【図３】軸の移動を先読みされたブロックの実行中に停止させることができない場合を示す図である。
【図４】軸の移動を先読みされたブロックの実行中に停止させることができる場合を示す図である。
【図５】第２実施形態による数値制御装置の概略的な機能ブロック図である。
【図６】基準ブロックの設定方法について説明する図である。
【図７】マクロ文を含むプログラムの例を示す図である。
【図８】プログラムのブロックの先読みと実行の様子を例示する図である。
【図９】プログラムのブロックの先読みと実行の様子を例示する図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態を図面と共に説明する。
図１は本発明の一実施形態による数値制御装置の要部を示す概略的なハードウェア構成図である。本発明の数値制御装置１は、例えばプログラムに基づいて工作機械を制御する数値制御装置として実装することができる。
【００２１】
本実施形態による数値制御装置１が備えるＣＰＵ１１は、数値制御装置１を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステム・プログラムをバス２０を介して読み出し、該システム・プログラムに従って数値制御装置１全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ、及び外部から入力された各種データ等が一時的に格納される。
【００２２】
不揮発性メモリ１４は、例えば図示しないバッテリでバックアップされたメモリやＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等で構成され、数値制御装置１の電源がオフされても記憶状態が保持される。不揮発性メモリ１４には、インタフェース１５を介して外部機器７２から読み込まれたプログラム、表示器／ＭＤＩユニット７０を介して入力されたプログラム等が記憶される。不揮発性メモリ１４に記憶されたプログラムや各種データは、実行時／利用時にはＲＡＭ１３に展開されても良い。また、ＲＯＭ１２には、公知の解析プログラムなどの各種システム・プログラムがあらかじめ書き込まれている。
【００２３】
インタフェース１５は、数値制御装置１のＣＰＵ１１とＵＳＢ装置等の外部機器７２と接続するためのインタフェースである。外部機器７２側からは工作機械の制御に用いられるプログラムや各種パラメータ等が読み込まれる。また、数値制御装置１内で編集したプログラムや各種パラメータ等は、外部機器７２を介して外部記憶手段に記憶させることができる。ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１に内蔵されたシーケンス・プログラムで工作機械及び該工作機械の周辺装置（例えば、工具交換装置や、ロボット等のアクチュエータ、工作機械に取付けられているセンサ等）にＩ／Ｏユニット１７を介して信号を出力し制御する。また、工作機械の本体に配備された操作盤の各種スイッチや周辺装置等の信号を受け、必要な信号処理をした後、ＣＰＵ１１に渡す。
【００２４】
表示器／ＭＤＩユニット７０はディスプレイやキーボード等を備えた手動データ入力装置であり、インタフェース１８は表示器／ＭＤＩユニット７０のキーボードからの指令，データを受けてＣＰＵ１１に渡す。インタフェース１９は各軸を手動で駆動させる際に用いる手動パルス発生器等を備えた操作盤７１に接続されている。
【００２５】
工作機械が備える軸を制御するための軸制御回路３０はＣＰＵ１１からの軸の移動指令量を受けて、軸の指令をサーボアンプ４０に出力する。サーボアンプ４０はこの指令を受けて、工作機械が備える軸を移動させるサーボモータ５０を駆動する。軸のサーボモータ５０は位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０にフィードバックし、位置・速度のフィードバック制御を行う。なお、図１のハードウェア構成図では軸制御回路３０、サーボアンプ４０、サーボモータ５０は１つずつしか示されていないが、実際には制御対象となる工作機械に備えられた軸の数だけ用意される。
【００２６】
スピンドル制御回路６０は、主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１はこのスピンドル速度信号を受けて、工作機械のスピンドルモータ６２を指令された回転速度で回転させ、工具を駆動する。スピンドルモータ６２にはポジションコーダ６３が結合され、ポジションコーダ６３が主軸の回転に同期して帰還パルスを出力し、その帰還パルスはＣＰＵ１１によって読み取られる。
【００２７】
図２は、本発明の第１実施形態による数値制御装置１の概略的な機能ブロック図である。図２に示した各機能ブロックは、図１に示した数値制御装置１が備えるＣＰＵ１１がシステム・プログラムを実行し、数値制御装置１の各部の動作を制御することにより実現される。
【００２８】
本実施形態の数値制御装置１は、先読み解析部１００、プログラム実行部１１０を備え、また、工作機械の制御に用いられるプログラム２００が不揮発性メモリ１４に予め記憶されている。更に、ＲＡＭ１３乃至不揮発性メモリ１４上にはプログラムのブロックを実行するために必要とされる実行データを記憶する実行データバッファ２１０が設けられている。
【００２９】
先読み解析部１００は、図１に示した数値制御装置１が備えるＣＰＵ１１がＲＯＭ１２から読み出したシステム・プログラムを実行し、主としてＣＰＵ１１によるＲＡＭ１３、不揮発性メモリ１４を用いた演算処理が行われることで実現される。先読み解析部１００は、プログラム２００のブロックを先読みして解析し、解析結果として得られた実行データを実行データバッファ２１０へとする機能手段である。先読み解析部１００は、実行データバッファ２１０に空きがある場合であって、後述する先読み充足判定部１０２が基準ブロックの実行に必要とされるブロックが先読みされていない状態であると判定した場合に、プログラム２００のブロックの先読みを実行する。先読み解析部１００は、先読み充足判定部１０２、解析部１０４を備える。
【００３０】
先読み充足判定部１０２は、プログラム２００からのブロックの先読みが充足しているか否かを判定する機能手段である。先読み充足判定部１０２は、既に先読みされているブロックの内の先読み充足判定の基準となる基準ブロックについて、該基準ブロックの動作に必要とされるブロックが先読みされているか否かに基づいて、先読みが充足しているか否かを判定する。基準ブロックは、例えば現在プログラム実行部１１０が実行しているブロックの次のブロックとすることができる。基準ブロックは、例えば現在プログラム実行部１１０が実行しているブロックの２つ先や３つ先のブロックとすることもできる。基準ブロックは、不揮発性メモリ１４上に設けられた設定領域に、現在プログラム実行部１１０が実行しているブロックとの関係として予め静的に設定しておくようにしても良い。先読み充足判定部１０２は、基準ブロックとして定められたブロックが先読みされていない場合には、常に先読みが充足していないと判定する。
【００３１】
先読み充足判定部１０２は、例えば基準ブロックが軸送りを指令するブロックである場合、該基準ブロックにおける軸送りの指令において、十分な速度を出すことができるだけのブロックが先読みされているか否かに基づいて、先読みが充足しているか否かを判定する。
【００３２】
図３，４を用いて、ブロックの先読みと軸送り時の速度の制約との関係を説明する。図３，４は、基準ブロックＮにおいて軸を移動させた後、該軸を停止させる場合の速度と時間の関係を示している。図３，４の例では、基準ブロックＮは軸送りの指令であり、該指令における制限速度がＶｌに設定されている。また、横軸はブロックの実行にかかる時間を示しており、例えば制限速度Ｖｌで軸が移動している状態でブロックＮ＋１の実行が開始され、最大の減速度で減速しながらブロックＮ＋１が実行された場合、ブロックＮ＋１の実行に（ｔ2−ｔ1）だけ時間が掛かる。制限速度Ｖｌは、例えば軸の最大速度として数値制御装置１又は工作機械２に設定されている最大速度値や、ブロックにおける指令値、その他の要因に基づいて設定される。このような該軸を停止させる場合の速度と時間の関係は、先読みされたブロックを解析することで算出される。
【００３３】
図３の例では、ブロックＮ＋４までのブロックがプログラム２００から先読みされている。この時、基準ブロックＮにおいて制限速度Ｖｌで軸送りを行うと、図３上のグラフに示すように、当該軸に設定されている各軸の最大減速度等から算出される最大減速度で減速したとしても、ブロックＮ＋４の終了時点ｔ5（即ち、ブロックＮ＋５の開始時点）までに軸を停止することができない。そのため、ブロックＮ＋４までのブロックが読み込まれている状況では、図３下のグラフに示すように、ブロックＮ＋４の実行が完了した時点ｔ5’までに確実に軸送りを停止することができる速度ＶｒまでブロックＮでの速度が制約される。この様な場合、先読み充足判定部１０２は、基準ブロックＮにおける軸送り指令において、十分な速度を出すことができるだけのブロックが先読みされていないとして、先読みが充足していないと判定する。
【００３４】
図４の例では、ブロックＮ＋５までのブロックがプログラム２００から先読みされている。この時、基準ブロックＮにおいて制限速度Ｖｌで軸送りが行った場合、例えば先読みされていないブロックＮ＋６において当該軸を停止する必要がある場合、当該軸に設定されている最大の減速度で減速すれば、ブロックＮ＋６の開始時点までに当該軸を停止することが出来る。そのため、ブロックＮ＋５までのブロックが読み込まれている状況では、ブロックＮにおける軸の送り速度を制約する必要はなく、制限速度Ｖｌまで速度を上げることができる。この様な場合、先読み充足判定部１０２は、基準ブロックＮにおける軸送り指令において、十分な速度を出すことができるだけのブロックが先読みされているとして、先読みが充足していると判定する。
【００３５】
先読み充足判定部１０２は、上記で説明した軸送りの速度に基づく先読み充足判定以外にも、例えば指令毎に予め定められた必要ブロック数を用いて、基準ブロックによる指令に必要なブロック数が先読みされているか否かに応じて、先読みが充足しているか否かを判定するようにしても良い。また、数値制御装置１において現在利用されている機能（工具径補正機能、曲線近似機能等）に応じて、該機能に必要とされるブロック数が先読みされているか否かに応じて、先読みが充足しているか否かを判定するようにしても良い。工具径補正機能は、工具径補正を行うことによりブロック間で段差や工具とワークの干渉等が生じないようにする必要があるため、少なくとも２ブロック先まで先読みして補正後の経路を解析する必要がある。また、曲線近似機能は、複数のブロックにより指令される一連の指令点から近似される曲線を所定のアルゴリズムを用いて演算する。そして、そのアルゴリズムに必要な、又はそのアルゴリズムで正しい近似曲線を演算できるだけの指令点数を指令するブロック数を先読みする必要がある。この様な指令毎、機能毎の必要ブロック数を用いる場合には、指令毎、機能毎の必要ブロック数乃至必要ブロック数を演算する式を、予め不揮発性メモリ１４上に設けた設定領域に設定しておくようにすれば良い。
【００３６】
解析部１０４は、プログラム２００から先読みしたブロックを解析し、解析した結果として得られた実行データを実行データバッファ２１０へと格納する機能手段である。実行データバッファ２１０には、先読みされた各ブロックのモーダル情報、各軸の移動量、主軸指令回転数、送り速度等の情報が格納される。解析部１０４が行うブロックの解析は、ソースコードであるブロックをコンピュータが認識できる実行データであるオブジェクトコードへ変換することを意味する。この変換には、（１）字句解析、（２）マクロ解析、（３）マクロ実行、（４）構文解析、（５）意味解析、（６）オブジェクトコードの生成、（７）最適化等の工程がある。解析部１０４による解析処理の詳細については、例えば特許文献３などにより十分に説明されているので、本願の明細書における説明は省略する。
【００３７】
プログラム実行部１１０は、図１に示した数値制御装置１が備えるＣＰＵ１１がＲＯＭ１２から読み出したシステム・プログラムを実行し、主としてＣＰＵ１１によるＲＡＭ１３、不揮発性メモリ１４を用いた演算処理と、軸制御回路３０、スピンドル制御回路６０、ＰＭＣ１６等による工作機械２の制御処理が行われることで実現される。プログラム実行部１１０は、実行データバッファ２１０に格納された実行データに基づいて、工作機械２の動作を制御する機能手段である。プログラム実行部１１０は、実行データにより工作機械２が備える各軸を駆動するモータに対して制御周期毎に移動指令を出力したり、工作機械２の周辺装置を制御したりする等といったように、工作機械２の各部を制御するために必要とされる一般的な制御のための機能を備える。また、プログラム実行部１１０は、現在実行中のブロックを先読み解析部１００に対して通知する機能を備える。
【００３８】
上記構成を備えた本実施形態による数値制御装置１では、現在実行しているプログラムの状況に応じて、所定の基準ブロックに必要とされる適切な数のブロックを先読みする制御を行うことが可能となるため、必要以上にブロックの先読みが行われなくなり、マクロの実行に対する影響を最小限に抑えることができる。また、必要以上にブロックの先読み及び解析が行われないため、プログラムの実行における負荷の集中が軽減され、例えば複数のプログラム間での連携に対する影響が低減されることが期待できる。
【００３９】
図５は、本発明の第２実施形態による数値制御装置１の概略的な機能ブロック図である。図５に示した各機能ブロックは、図１に示した数値制御装置１が備えるＣＰＵ１１がシステム・プログラムを実行し、数値制御装置１の各部の動作を制御することにより実現される。
【００４０】
本実施形態の数値制御装置１は、先読み解析部１００が、更に基準ブロック設定部１０６を備えている点で、第１実施形態による数値制御装置１と異なる。
基準ブロック設定部１０６は、現在実行されているブロックの実行状況や、先読みされたブロックの実行時間に応じて、先読み充足判定部１０２が、プログラム２００からのブロックの先読みが充足しているか否かを判定する基準とする基準ブロックを動的に設定する機能手段である。基準ブロック設定部１０６は、例えば現在実行中のブロックの実行に掛かる時間及び先読みされている各ブロックの実行に掛かる時間に基づいて基準ブロックを設定するようにしても良い。
【００４１】
図６は、実行中のブロックと先読みされたブロックＮ〜Ｎ＋３のそれぞれの実行にかかる時間を示す図である。基準ブロック設定部１０６は、例えば予め不揮発性メモリ１４の設定領域に設定されている先読み解析に掛かる時間の閾値ｔthに基づいて、閾値ｔthの間に実行され得るブロックの次のブロックを基準ブロックとして設定する。図６の例では、閾値ｔthの時間が経過した時点でブロックＮは既に実行中となっていることが予想されるので、基準ブロック設定部１０６は、ブロックＮの次のブロックであるブロックＮ＋１を基準ブロックとして設定する。
【００４２】
第１実施形態による数値制御装置１では、予め基準ブロックを静的に設定しておき、設定された基準ブロックに基づいて先読み充足判定処理を行っていた。しかしながら、現在実行中のブロックや実行中ブロックに続くブロックの実行が短い時間で終了する場合、例えば実行中ブロックの次のブロックを基準ブロックとして静的に設定してしまうと、先読み充足判定処理が終了した時点で基準ブロックが実行されていたり、基準ブロックの実行が完了していたりするといった事態が起きる可能性がある。本実施形態による数値制御装置１では、基準ブロックを動的に設定する基準ブロック設定部１０６を設けることで、この様な問題が発生しないようにすることができる。
【００４３】
以上、本発明の一実施形態について説明したが、本発明は上述した実施の形態の例のみに限定されることなく、適宜の変更を加えることにより様々な態様で実施することができる。
【符号の説明】
【００４４】
１      数値制御装置
２      工作機械
１１    ＣＰＵ
１２    ＲＯＭ
１３    ＲＡＭ
１４    不揮発性メモリ
１５，１８，１９  インタフェース
１６    ＰＭＣ
１７    Ｉ／Ｏユニット
２０    バス
３０    軸制御回路
４０    サーボアンプ
５０    サーボモータ
６０    スピンドル制御回路
６１    スピンドルアンプ
６２    スピンドルモータ
６３    ポジションコーダ
７０    表示器／ＭＤＩユニット
７１    操作盤
７２    外部機器
１００  先読み解析部
１０２  先読み充足判定部
１０４  解析部
１０６  基準ブロック設定部
１１０  プログラム実行部
２００  プログラム
２１０  実行データバッファ
【図１】
2020170470.tif 000003
【図２】
2020170470.tif 000004
【図３】
2020170470.tif 000005
【図４】
2020170470.tif 000006
【図５】
2020170470.tif 000007
【図６】
2020170470.tif 000008
【図７】
2020170470.tif 000009
【図８】
2020170470.tif 000010
【図９】
2020170470.tif 000011