(57)【要約】【課題】複数のＮＣプログラムや、複数のテーブル形式データを並列実行する場合、先読みが間に合わないことによる問題発生を回避する数値制御装置を提供する。【解決手段】複数のＮＣプログラムについて、現在先読み対象となっているプログラム全てについて先読みしたブロックの実行時間を積算し、先読みしたブロックの実行時間の積算が最も短いプログラムＰＡが先読み可能な場合には、プログラムＰＡの次のブロックを先読みする（ＳＡ０１〜ＳＡ０３）。先読み可能ではない場合には、プログラムＰＡを先読み対象から除外し、現在先読み対象から除外されているプログラムのいずれかが先読み対象となった場合には、先読み可能となったプログラムを先読み対象に加え（ＳＡ０４〜ＳＡ０６）、全プログラムが先読み対象から除外された場合には処理を終了し（ＳＡ０７）、全プログラムが先読み対象から除外されていない場合（ＮＯ）にはステップＳＡ０１へ戻る。【選択図】図２
2015079461.tif 000002
【特許請求の範囲】
【請求項１】
複数のＮＣプログラムのブロックを、メモリまたはネットワークで接続された記憶装置から、順次先読みしながら並列実行する数値制御装置において、
前記ＮＣプログラムの各ブロックの実行時間を記憶する実行時間記憶手段と、
前記先読みしたブロックの実行時間を前記実行時間記憶手段から読み出し、該読み出した実行時間を積算する実行時間積算手段と、
前記各ＮＣプログラムの先読みしたブロックの積算した実行時間を比較し、先読みしたブロックの実行時間の積算が最も短いＮＣプログラムを判定する判定手段と、
前記先読みしたブロックの実行時間の積算が最も短いＮＣプログラムの先読みを次に行う手段と、
を有することを特徴とするＮＣプログラムによる運転を備えた数値制御装置。
【請求項２】
複数のＮＣプログラムのブロックを、メモリまたはネットワークで接続された記憶装置から、順次先読みしながら並列実行する数値制御装置において、
前記ＮＣプログラムの各ブロックの指令内容から実行時間を算出する実行時間算出手段と、
前記実行時間算出手段により算出した前記先読みしたブロックの実行時間を積算する実行時間積算手段と、
前記各ＮＣプログラムの先読したブロックの積算した実行時間を比較し、先読みしたブロックの実行時間の積算が最も短いＮＣプログラムを判定する判定手段と、
前記判定手段により判定された、前記先読みしたブロックの実行時間の積算が最も短いＮＣプログラムの先読みを次に行う手段と、
を有することを特徴とするＮＣプログラムによる運転を備えた数値制御装置。
【請求項３】
前記ＮＣプログラムの各ブロックの実行時間を記憶する手段は、
予め前記ＮＣプログラムに従って加工を行い、前記ＮＣプログラムの各ブロックの実行時間を計測して記憶しておき、次回以降は該実行時間が読み出される手段であることを特徴とする請求項１に記載のＮＣプログラムによる運転を備えた数値制御装置。
【請求項４】
前記ＮＣプログラムの各ブロックの指令内容から実行時間を算出する実行時間算出手段は、ＮＣ指令によって工具が指定された経路を移動するのに要する時間を算出する手段であって、
工具経路を細かい切片であるセグメントに分割する手段と、
前記セグメントの接線方向の速度を求める速度算出手段と、
前記速度算出手段によって求めた接線方向の速度に基づいて各セグメントを前記工具が移動するのに要する時間を算出するセグメント移動時間算出手段と、
前記セグメント移動時間算出手段により算出された各セグメントを移動する時間の総和を工具移動時間として求める工具移動時間算出手段と、
を有することを特徴とする請求項２に記載のＮＣプログラムによる運転を備えた数値制御装置。
【請求項５】
前記複数のＮＣプログラムのブロックをメモリまたはネットワークで接続された記憶装置から順次先読みする場合に、
前記ＮＣプログラムによる運転と並行して実行中のＮＣプログラムの先読みしたブロックの実行時間の積算を常に監視する手段と、
前記監視する手段により、先読みしたブロックの実行時間の積算が、前記ＮＣプログラムによる運転を安全に減速停止するために必要な時間と等しくなったことを検出した場合に、前記ＮＣプログラムによる運転を減速または一時停止する手段と、
前記ＮＣプログラムによる運転を減速または一時停止中に、前記ＮＣプログラムをメモリまたはネットワークで接続された記憶装置から先読みする手段と、
前記ＮＣプログラムによる運転を減速または一時停止中に、先読みしたブロックの実行時間の積算が前記ＮＣプログラムによる運転を安全に減速停止するために必要な時間として
十分確保された場合、前記ＮＣプログラムによる運転を再開する手段と、
を有することを特徴とする、請求項１〜４の何れか１つに記載のＮＣプログラムによる運転を備えた数値制御装置。
【請求項６】
前記ＮＣプログラムの各ブロックの実行時間を記憶する手段は、
前記予め加工を行いその実行時間を計測して記憶する際に、先読みしたブロックの実行時間の積算が減速停止を行うために必要な時間と等しくなることによる送り速度の低下が発生した場合は、実行時間をそのまま記憶せず、送り速度の低下が発生しなかった場合の実行時間を記憶する手段を有することを特徴とする、請求項１または３の何れか１つに記載の数値制御装置。
【請求項７】
時間、軸位置、あるいは主軸位置を基準とし、基準となる時間、軸あるいは主軸の位置と、前記基準となる軸あるいは主軸とは別の軸あるいは主軸の位置とを対応させたテーブル形式データをメモリまたはネットワークで接続された記憶装置に格納しておき、前記基準となる時間、軸あるいは主軸の位置と、前記基準となる軸あるいは主軸とは別の軸あるいは主軸の位置を順次先読みし、前記基準となる時間、軸あるいは主軸の位置に同期して前記別の軸あるいは主軸の位置を制御する数値制御装置において、
前記先読みしたブロックの実行時間を積算する実行時間積算手段と、
前記各テーブル形式データの先読みしたブロックの積算した実行時間を比較し、先読みしたブロックの実行時間の積算が最も短いテーブル形式データを判定する判定手段と、
前記先読みしたブロックの実行時間の積算が最も短いテーブル形式データの先読みを次に行う手段と、
を有することを特徴とするテーブル形式データによる運転を備えた数値制御装置。
【請求項８】
前記先読みしたブロックの実行時間を積算する実行時間積算手段は、
現在の基準となる時間と先読みしたブロックの基準となる時間の差から先読みしたブロックの実行時間の積算を予測する手段を有する事を特徴とする、
請求項７に記載のテーブル形式データによる運転を備えた数値制御装置。
【請求項９】
前記テーブル形式データのブロックをメモリまたはネットワークで接続された記憶装置から順次先読みする場合に、
前記テーブル形式データによる運転と並行して実行中のテーブル形式データの先読みしたブロックの実行時間の積算を常に監視する手段と、
前記監視する手段により先読みしたブロックの実行時間の積算が、前記テーブル形式データによる運転を安全に減速停止するために必要な時間と等しくなったことを検出した場合に、前記テーブル形式データによる運転を減速または一時停止する手段と、
前記テーブル形式データによる運転を減速または一時停止中に、前記テーブル形式データをメモリまたはネットワークで接続された記憶装置から先読みする手段と、
前記テーブル形式データによる運転を減速または一時停止中に、先読みしたブロックの実行時間の積算が前記ＮＣプログラムによる運転を安全に減速停止するために必要な時間として十分確保された場合、前記テーブル形式データによる運転を再開する手段と、
を有することを特徴とする請求項７または８の何れか１つに記載のテーブル形式データによる運転を備えた数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムの先読み機能を備えた数値制御装置に関する。
【背景技術】
【０００２】
ＮＣプログラムの先読み制御においては、予め決められた先読みブロック数の分だけ先読みする機能を持った数値制御装置が公知である（特許文献１、特許文献２、特許文献３を参照）。
【０００３】
また、上記ＮＣプログラム運転とは別に、時間、軸位置、あるいは主軸位置を基準にした軸の位置を設定したテーブル形式データ（パステーブル）をメモリまたはネットワークで接続された記憶装置に格納しておき、テーブル形式データ（パステーブル）を順次読み出しながら各軸を駆動する機能（パステーブル運転機能）を持った数値制御装置が公知である（特許文献４、特許文献５を参照）。パステーブル運転機能により、加工プログラムにとらわれない自由な工具の動作が可能になり、加工時間の短縮や、加工の高精度化を実現できる。
【０００４】
また、特許文献６には、加工時間の予測精度の向上と加工時間を予測するための処理時間を短縮することができる数値制御工作機械による加工時間の予測方法および予測装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−９４９３６号公報
【特許文献２】特開２００７−１６４５０９号公報
【特許文献３】特開２００８−４０５４２号公報
【特許文献４】特開昭５９−１７７６０４号公報
【特許文献５】特開２０１２−２３４４４５号公報
【特許文献６】特開２０１２−９３９７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
背景技術で説明したＮＣプログラムの先読み制御においては、微小ブロックが続くようなＮＣプログラムでは先読みが間に合わない場合がある。お互いに連携して動作する複数のＮＣプログラムのうち、ある一つのＮＣプログラムの先読みが間に合わないと、他のＮＣプログラムにも影響し、全体のサイクルタイムが延びてしまう場合がある。
【０００７】
ここで、全体のサイクルタイムが延びてしまう例を図１２，図１３を用いて説明する。図１２はＮＣプログラム運転の先読みにより並列実行する３つのプログラム例を示す図である。図１３は、図１２に示す３つのプログラムにおいて、従来技術の先読み制御方式により、９個のブロックを先読みした段階で、各プログラムの先読みしたブロックの実行時間の積算（積算実行時間）を示す図である。
【０００８】
図１２に示される３プログラム（Ｏ０００１，Ｏ０００２，Ｏ０００３）を並列実行する場合を例に説明する。「Ｏ０００１」，「Ｏ０００２」，「Ｏ０００３」はそれぞれプログラム名である。なお、各プログラム内の括弧内の数値は、各ブロックの実行時間を表すものとする。
【０００９】
従来は、各プログラムが先読みしたブロックの実行時間の積算を考慮せずに先読みを行っていたため、平均的に先読みを行った場合、以下の順番で先読みが行われていた。
（１）Ｎ１１を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（１，０，０）］  
（２）Ｎ２１を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（１，１，０）］  
（３）Ｎ３１を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（１，１，１）］  
（４）Ｎ１２を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（２，１，１）］  
（５）Ｎ２２を先読み
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（２，２，１）］
（６）Ｎ３２を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（２，２，２）］  
（７）Ｎ１３を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３，２，２）］  
（８）Ｎ２３を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３，３，２）］  
（９）Ｎ３３を先読み  
［先読みブロック数（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３，３，３）］
：
上記の（９）で合わせて９個のブロックを先読みした段階で、各プログラムの先読みしたブロックの実行時間の積算は図１３に示されるようになる。この場合、Ｏ０００３は先読みしたブロックの実行時間の積算が３ｍｓとなるため、この状態で運転を行い、先読みが間に合わなくなると、先読みができるまで待ちになる。
【００１０】
また、テーブル形式データによる運転（パステーブル運転）においても、微小ブロックが続くような場合は、各テーブル形式データのブロックの先読みが間に合わない場合がある。先読みが間に合わないと、基準となる時間、軸位置、あるいは主軸位置の通りに、軸の位置に移動できないため、アラームや即時停止になる。アラームや即時停止にならないよう、先読みが間に合うように修正したテーブル形式データを運転すると、サイクルタイムが延びる。
【００１１】
ここで、パステーブルの先読みを行いながら運転するテーブル形式データによる運転（パステーブル運転）の従来技術について、図１４の３つのパステーブル（Ｘ軸のパステーブル＜Ｘ＞、主軸Ｓのパステーブル＜Ｓ＞、補助機能のパステーブル＜Ｍ＞）を実行する場合を例に説明する。
【００１２】
従来は、先読みしたブロックの実行時間の積算を考慮せずに先読みを行っていたため、平均的に先読みを行った場合、以下の順番で先読みが行われていた。
（１）＜Ｘ＞のＬ１を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（１，０，０）］
（２）＜Ｓ＞のＬ１００を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（１，１，０）］
（３）＜Ｍ＞のＬ１０００を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（１，１，１）］
（４）＜Ｘ＞のＬ２を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（２，１，１）］
（５）＜Ｓ＞のＬ１５０を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（２，２，１）］
（６）＜Ｍ＞のＬ１０５０を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（２，２，２）］
（７）＜Ｘ＞のＬ３を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３，２，２）］
（８）＜Ｓ＞のＬ２００を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３，３，２）］
（９）＜Ｍ＞のＬ１１００を先読み
［先読みブロック数（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３，３，３）］
：
（９）で合わせて９個のブロックを先読みした段階で、各パステーブルの先読みしたブロックの実行時間の積算は図１５のようになる。この場合、＜Ｘ＞は先読みしたブロックの実行時間の積算が３ｍｓとなる。この状態で運転を行うと先読みが間に合わないことにより、アラームや即時停止となる。パステーブル運転を行う場合、各パステーブルの先読みしたブロック実行時間の積算を監視していない。このため、先読みしたブロックの実行時間の積算が、安全に減速停止するための時間より少なくなったことを、事前に検出することが不可能であった。
【００１３】
そのため、先読みが間に合わない場合はアラーム発生または即時停止する他なく、機械にショックを与える可能性があった。特にネットワークで接続された記憶装置から先読みして運転する場合、一時的なネットワーク障害により通信が途切れる可能性があるため、この問題の解決が課題となっていた。
【００１４】
そこで、本発明の目的は、上記従来技術の問題点を解決するために、複数のＮＣプログラムを並列実行する場合、先読みが間に合わなくなることを防ぎ、サイクルタイムが延びることを防ぐプログラムの先読み機能を備えた数値制御装置を提供すること、および、テーブル形式データによる運転（パステーブル運転）において、複数のテーブル形式データを並列実行する場合、先読みが間に合わないことによるアラーム発生や即時停止が発生しにくくなるテーブル形式データによる運転機能を備えた数値制御装置を提供することである。
【課題を解決するための手段】
【００１５】
複数のＮＣプログラムを並列実行する場合、先読みを間に合わせるため、先読みしたブロックの実行時間が短いものを優先して先読みする。それにより、先読みが間に合わなくなることを防ぎ、サイクルタイムが延びることを防ぐ。なお、ＮＣプログラムの各ブロックの実行時間を算出する機能を持った数値制御装置は公知である（特開２０１２−９３９７５号公報参照）。
【００１６】
また、上記ＮＣプログラム運転とは別に、テーブル形式データによる運転において、複数のテーブル形式データを並列実行する場合に、複数のテーブル形式データの内どれを先読みするかを、優先度に基づいて決定する。先読みブロックの実行時間が短いものを優先して先読みすることにより、先読みが間に合わないことによるアラーム発生や即時停止が発生しにくくなる。その結果、従来技術のようにテーブル形式データを修正する必要がなくなり、従来技術よりもサイクルタイム短縮が期待できる。
【００１７】
本願の請求項１に係る発明は、複数のＮＣプログラムのブロックを、メモリまたはネットワークで接続された記憶装置から、順次先読みしながら並列実行する数値制御装置において、前記ＮＣプログラムの各ブロックの実行時間を記憶する実行時間記憶手段と、
前記先読みしたブロックの実行時間を前記実行時間記憶手段から読み出し、該読み出した実行時間を積算する実行時間積算手段と、前記各ＮＣプログラムの先読みしたブロックの積算した実行時間を比較し、先読みしたブロックの実行時間の積算が最も短いＮＣプログラムを判定する判定手段と、前記先読みしたブロックの実行時間の積算が最も短いＮＣプログラムの先読みを次に行う手段と、を有することを特徴とするＮＣプログラムによる運転を備えた数値制御装置である。
【００１８】
請求項２に係る発明は、複数のＮＣプログラムのブロックを、メモリまたはネットワークで接続された記憶装置から、順次先読みしながら並列実行する数値制御装置において、前記ＮＣプログラムの各ブロックの指令内容から実行時間を算出する実行時間算出手段と、前記実行時間算出手段により算出した前記先読みしたブロックの実行時間を積算する実行時間積算手段と、前記各ＮＣプログラムの先読したブロックの積算した実行時間を比較し、先読みしたブロックの実行時間の積算が最も短いＮＣプログラムを判定する判定手段と、前記判定手段により判定された、前記先読みしたブロックの実行時間の積算が最も短いＮＣプログラムの先読みを次に行う手段と、を有することを特徴とするＮＣプログラムによる運転を備えた数値制御装置である。
【００１９】
請求項３に係る発明は、前記ＮＣプログラムの各ブロックの実行時間を記憶する手段は、予め前記ＮＣプログラムに従って加工を行い、前記ＮＣプログラムの各ブロックの実行時間を計測して記憶しておき、次回以降は該実行時間が読み出される手段であることを特徴とする請求項１に記載のＮＣプログラムによる運転を備えた数値制御装置である。
【００２０】
請求項４に係る発明は、前記ＮＣプログラムの各ブロックの指令内容から実行時間を算出する実行時間算出手段は、ＮＣ指令によって工具が指定された経路を移動するのに要する時間を算出する手段であって、工具経路を細かい切片であるセグメントに分割する手段と、前記セグメントの接線方向の速度を求める速度算出手段と、前記速度算出手段によって求めた接線方向の速度に基づいて各セグメントを前記工具が移動するのに要する時間を算出するセグメント移動時間算出手段と、前記セグメント移動時間算出手段により算出された各セグメントを移動する時間の総和を工具移動時間として求める工具移動時間算出手段と、を有することを特徴とする請求項２に記載のＮＣプログラムによる運転を備えた数値制御装置である。
【００２１】
請求項５に係る発明は、前記複数のＮＣプログラムのブロックをメモリまたはネットワークで接続された記憶装置から順次先読みする場合に、前記ＮＣプログラムによる運転と並行して実行中のＮＣプログラムの先読みしたブロックの実行時間の積算を常に監視する手段と、前記監視する手段により、先読みしたブロックの実行時間の積算が、前記ＮＣプログラムによる運転を安全に減速停止するために必要な時間と等しくなったことを検出した場合に、前記ＮＣプログラムによる運転を減速または一時停止する手段と、前記ＮＣプログラムによる運転を減速または一時停止中に、前記ＮＣプログラムをメモリまたはネットワークで接続された記憶装置から先読みする手段と、前記ＮＣプログラムによる運転を減速または一時停止中に、先読みしたブロックの実行時間の積算が前記ＮＣプログラムによる運転を安全に減速停止するために必要な時間として十分確保された場合、前記ＮＣプログラムによる運転を再開する手段と、を有することを特徴とする、請求項１〜４の何れか１つに記載のＮＣプログラムによる運転を備えた数値制御装置である。
【００２２】
請求項６に係る発明は、前記ＮＣプログラムの各ブロックの実行時間を記憶する手段は、前記予め加工を行いその実行時間を計測して記憶する際に、先読みしたブロックの実行時間の積算が減速停止を行うために必要な時間と等しくなることによる送り速度の低下が発生した場合は、実行時間をそのまま記憶せず、送り速度の低下が発生しなかった場合の実行時間を記憶する手段を有することを特徴とする、請求項１または３の何れか１つに記載の数値制御装置である。
【００２３】
請求項７に係る発明は、時間、軸位置、あるいは主軸位置を基準とし、基準となる時間、軸あるいは主軸の位置と、前記基準となる軸あるいは主軸とは別の軸あるいは主軸の位置とを対応させたテーブル形式データをメモリまたはネットワークで接続された記憶装置に格納しておき、前記基準となる時間、軸あるいは主軸の位置と、前記基準となる軸あるいは主軸とは別の軸あるいは主軸の位置を順次先読みし、前記基準となる時間、軸あるいは主軸の位置に同期して前記別の軸あるいは主軸の位置を制御する数値制御装置において、前記先読みしたブロックの実行時間を積算する実行時間積算手段と、前記各テーブル形式データの先読みしたブロックの積算した実行時間を比較し、先読みしたブロックの実行時間の積算が最も短いテーブル形式データを判定する判定手段と、前記先読みしたブロックの実行時間の積算が最も短いテーブル形式データの先読みを次に行う手段と、を有することを特徴とするテーブル形式データによる運転を備えた数値制御装置である。
【００２４】
請求項８に係る発明は、前記先読みしたブロックの実行時間を積算する実行時間積算手段は、現在の基準となる時間と先読みしたブロックの基準となる時間の差から先読みしたブロックの実行時間の積算を予測する手段を有する事を特徴とする、請求項７に記載のテーブル形式データによる運転を備えた数値制御装置である。
【００２５】
請求項９に係る発明は、前記テーブル形式データのブロックをメモリまたはネットワークで接続された記憶装置から順次先読みする場合に、前記テーブル形式データによる運転と並行して実行中のテーブル形式データの先読みしたブロックの実行時間の積算を常に監視する手段と、前記監視する手段により先読みしたブロックの実行時間の積算が、前記テーブル形式データによる運転を安全に減速停止するために必要な時間と等しくなったことを検出した場合に、前記テーブル形式データによる運転を減速または一時停止する手段と、前記テーブル形式データによる運転を減速または一時停止中に、前記テーブル形式データをメモリまたはネットワークで接続された記憶装置から先読みする手段と、前記テーブル形式データによる運転を減速または一時停止中に、先読みしたブロックの実行時間の積算が前記ＮＣプログラムによる運転を安全に減速停止するために必要な時間として十分確保された場合、前記テーブル形式データによる運転を再開する手段と、を有することを特徴とする請求項７または８の何れか１つに記載のテーブル形式データによる運転を備えた数値制御装置である。
【発明の効果】
【００２６】
本発明により、複数のＮＣプログラムを並列実行する場合、先読みが間に合わなくなることを防ぎ、サイクルタイムが延びることを防ぐプログラムの先読み機能を備えた数値制御装置を提供できるとともに、テーブル形式データによる運転（パステーブル運転）において、複数のテーブル形式データを並列実行する場合、先読みが間に合わないことによるアラーム発生や即時停止が発生しにくくなるテーブル形式データによる運転機能を備えた数値制御装置を提供できる。その結果、従来技術のようにテーブル形式データを修正する必要がなくなり、従来技術よりもサイクルタイム短縮が期待できる。
【図面の簡単な説明】
【００２７】
【図１】図１２に示す３つのプログラムにおいて、本発明により、９個のブロックを先読みした段階で、各プログラムの先読みしたブロックの実行時間の積算（積算実行時間）を示す図である。
【図２】本発明に係る複数のＮＣプログラムを並行実行する場合の先読み処理のフローを説明する図である。
【図３】パステーブル運転を説明するブロック図である。
【図４】パステーブル運転を説明するブロック図である。
【図５】図４に示されるパステーブル運転で実行されるＸ軸、主軸Ｓ、補助機能のパステーブル例である。
【図６】図５のパステーブルを実行した場合、基準となる時間の進行に伴い、実行される動作を説明する図である。
【図７】図１４に示す３つのパステーブルにおいて、本発明により、９個のブロックを先読みした段階で、各テーブルの先読みしたブロックの実行時間の積算を説明する図である。
【図８】ＮＣプログラムまたはパステーブル運転の先読みが間に合わない場合に、ＮＣプログラム運転の場合は送り速度オーバライド、パステーブル運転の場合は時間オーバライドを減少させることで運転を減速させ、先読みブロックが完全になくなった場合は送り速度オーバライドまたは時間オーバライドを０にして一時停止させることを説明する図である。
【図９】ＮＣプログラムの処理を説明するフローチャートである。
【図１０】パステーブル運転の処理を説明するフローチャートである。
【図１１】本発明に係る、ＮＣプログラムまたはパステーブル運転を実行する数値制御装置の要部ブロック図である。
【図１２】ＮＣプログラム運転の先読みにより並列実行する３つのプログラム例を示す図である。
【図１３】図１２に示す３つのプログラムにおいて、従来技術により９個のブロックを先読みした段階で、各プログラムの先読みしたブロックの実行時間の積算（積算実行時間）を示す図である。
【図１４】３つのパステーブル（Ｘ軸のパステーブル＜Ｘ＞、主軸Ｓのパステーブル＜Ｓ＞、補助機能のパステーブル＜Ｍ＞）の例である。
【図１５】図１４に示す３つのパステーブルにおいて、従来技術により９個のブロックを先読みした段階で、各パステーブルプログラムの先読みしたブロックの実行時間の積算（積算実行時間）を説明する図である。
【図１６】ＮＣプログラム運転において先読みが間に合わずに、運転の減速が行われた場合の、あるブロックの実行時間の例である。
【発明を実施するための形態】
【００２８】
以下、本発明の実施形態を、複数のＮＣプログラムを実行する場合と、テーブル形式データによる運転（パステーブル運転）を実行する場合と、について図面と共に説明する。
【００２９】
＜複数のＮＣプログラムを実行する場合＞
本発明では、先読みしたブロックの実行時間の積算が短いプログラムを優先して先読みする。図１２に示した３つのＮＣプログラムを運転した場合、以下のような順序で先読みが行われる。下記の［］内は各プログラム名と前記各プログラムに対応するブロックの実行時間の積算（積算実行時間）を示している。また、斜体文字は先読みしたプログラムのブロックの実行時間の積算が最も短いプログラムを示している。先読みしたブロックの実行時間を積算するための各ブロックの実行時間の求め方については後述する。
（１）Ｎ１１を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，０，０）］
（２）上記（１）でＯ０００２が最も先読みしたブロックの実行時間の積算が短いため、Ｎ２１を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算
［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１０，０）］
（３）上記（２）でＯ０００３が最も先読みしたブロックの実行時間の積算が短いため、Ｎ３１を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算
［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１０，１）］
（４）上記（３）でＯ０００３が最も先読みしたブロックの実行時間の積算が短いため、Ｎ３２を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算
［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１０，２）］
（５）上記（４）でＯ０００３が最も先読みしたブロックの実行時間の積算が短いため、Ｎ３３を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算
［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１０，３）］
（６）上記（５）でＯ０００３が最も先読みしたブロックの実行時間の積算が短いため、Ｎ３４を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１０，４０３）］
（７）上記（６）でＯ０００２が最も先読みしたブロックの実行時間の積算が短いため、Ｎ２２を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算
［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１１０，４０３）］
（８）上記（７）でＯ０００２が最も先読みしたブロックの実行時間の積算が短いため、Ｎ２３を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，１６０，４０３）］
（９）上記（８）でＯ０００２が最も先読みしたブロックの実行時間の積算が短いため、Ｎ２４を先読みし、その後各プログラムの先読みしたブロックの実行時間を積算
［先読みしたブロックの実行時間の積算（Ｏ０００１，Ｏ０００２，Ｏ０００３）＝（３００，３６０，４０３）
【００３０】
図１は、図１２に示す３つのプログラムにおいて、本発明により、９個のブロックを先読みした段階で、各プログラムの先読みしたブロックの実行時間の積算（積算実行時間）を示す図である。図１に示されるように、従来技術の説明と同じ量（合わせて９個）のブロックを先読みした段階で、各プログラムの先読みしたブロックの実行時間の積算は、最も短いＯ０００１でも３００ｍｓとなる。先読みブロックの運転中に、並行して先読みを行うことができるため、先読みが間に合わないことによる待ちは発生しない。
【００３１】
図２は複数のＮＣプログラムを並行実行する場合の先読み処理のフローを説明する図である。以下、各ステップに従って説明する。
●［ステップＳＡ０１］現在先読み対象となっているプログラム全てについて先読みしたブロックの実行時間を積算する。  
●［ステップＳＡ０２］先読みしたブロックの実行時間の積算が最も短いプログラムＰＡは先読み可能か否か判断し、先読み可能な場合（ＹＥＳ）にはステップＳＡ０３へ移行し、先読み可能ではない場合（ＮＯ）にはステップＳＡ０４へ移行する。  
●［ステップＳＡ０３］プログラムＰＡの次のブロックを先読みし、ステップＳＡ０１に戻る。
●［ステップＳＡ０４］ステップＳＡ０２でプログラムＰＡは先読み可能ではないと判別されたことから、プログラムＰＡを先読み対象から除外する。
●［ステップＳＡ０５］現在先読み対象から除外されているプログラムのいずれかが先読み対象となったか否か判別し、先読み対象となった場合（ＹＥＳ）にはステップＳＡ０６へ移行し、先読み対象となっていない場合（ＮＯ）にはステップＳＡ０７へ移行する。  
●［ステップＳＡ０６］先読み可能となったプログラムを先読み対象に加え、ステップＳＡ０１へ戻る。  
●［ステップＳＡ０７］全プログラムが先読み対象から除外されたか否か判断し、全プログラムが先読み対象から除外された場合（ＹＥＳ）には処理を終了し、全プログラムが先読み対象から除外されていない場合（ＮＯ）にはステップＳＡ０１へ戻る。
【００３２】
図２に示すフローチャート中で、プログラムが先読み対象から除外される例としては、プログラム終了、リセット、アラームによる停止、先読み禁止の指令のような要因が考えられる。
【００３３】
ここで、先読みしたブロックの実行時間を積算するための、各ブロックの実行時間の求め方について説明する。
［手段１］
先読みしたブロックの実行時間を求める手段１を説明する。工作機械を用いて予め加工を行い、加工を行った際の各ブロックの実行時間を計測し、計測した実行時間を工作機械の制御装置の記憶手段に記憶する。そして、次回以降の加工では、前記記憶装置に記憶した実行時間が読み出されることによって、先読みしたブロックの実行時間とすることができる。
［手段２］
先読みしたブロックの実行時間を求める手段２を説明する。手段２は、前記ＮＣプログラムの各ブロックの指令内容から実行時間を算出する。手段２（実行時間算出手段）は、ＮＣ指令によって工具が指定された経路を移動するのに要する時間を算出する手段であって、工具経路を細かい切片であるセグメントに分割する手段と、前記セグメントの接線方向の速度を求める速度算出手段と、前記速度算出手段によって求めた接線方向の速度に基づいて各セグメントを前記工具が移動するのに要する時間を算出するセグメント移動時間算出手段と、前記セグメント移動時間算出手段により算出された各セグメントを移動する時間の総和を工具移動時間（つまり、ブロックの実行時間）として求める工具移動時間算出手段とからなる。なお、手段２は特許文献６に開示されているとおり公知の技術であるため、詳述しない。
【００３４】
ここで、ＮＣプログラム運転の先読みが間に合わない状態の監視、運転の減速、一時停止について図８を用いて補足説明する。図８は、ＮＣプログラム運転の先読みが間に合わない場合に送り速度オーバライドを減少させることで運転を減速させ、先読みブロックが完全になくなった場合は送り速度オーバライドを０にして一時停止させることを説明する図である。
【００３５】
ＮＣプログラムの先読みを行いながら運転する場合に、現在の送り軸の指令速度に対する実速度の割合（送り速度オーバライド）を基準にして、ＮＣプログラム運転が減速停止可能な先読みブロックを最低限確保した上で運転する。
【００３６】
現在の送り速度オーバライドで先読みが間に合わない場合、送り速度オーバライドを減少させることで運転を減速させ、先読みブロックが完全になくなった場合は送り速度オーバライドを０にして一時停止させる。減速または停止中にＮＣプログラムの先読みが行われて、先読みが間に合っていない状態が解消された場合は、送り速度オーバライドを増加させることで加速が行われる。
【００３７】
現在の送り速度オーバライドをＯＶＲＤとし、安全に直線形加減速で減速停止するための時間がＴ（ｍｓ）である場合に、先読みが間に合わなくなったことを検出する方法を説明する。
【００３８】
減速開始から一時停止までのＴ（ｍｓ）の間に先読みしたブロックの実行時間の積算（積算実行時間）は（ＯＶＲＤ÷１００）×Ｔ÷２消費されるため、先読みしたブロックの実行時間の積算がＸだった場合、Ｘ＝（ＯＶＲＤ÷１００）×Ｔ÷２となった場合に、先読みが間に合わなくなったことを検出することで、減速時間Ｔ（ｍｓ）で減速停止が可能である。
【００３９】
なお、上記は直線形で減速することを仮定しているが、例えばベル形で減速する場合や、それ以外の場合でも同様に、先読みが間に合わなくなったことを検出することが可能である。
【００４０】
図９はＮＣプログラム運転の処理を説明するフローチャートである。先読みしたブロックの実行時間の積算をＸとする。現在の送り速度オーバライドをＯＶＲＤ（％）、減速時間をＴ（ｍｓ）とする。以下、各ステップに従って説明する。
●［ステップＳＢ０１］先読みしたブロックの実行時間の積算Ｘが、減速時間Ｔ（減速開始から一時停止までの時間）の間の先読みブロックの消費量（ＯＶＲＤ÷１００）＊Ｔ÷２より小さいか否か判断し、小さい場合（ＹＥＳ）にはステップＳＢ０３へ移行し、小さくない場合（ＮＯ）にはステップＳＢ０２へ移行する。
●［ステップＳＢ０２］通常通りＮＣプログラム運転を行い、ステップＳＢ０１へ戻る。
●［ステップＳＢ０３］最終ブロックまで先読みしているか否か判断し、最終ブロックまで先読みしている場合（ＹＥＳ）には処理を終了し、最終ブロックまで先読みしていない場合（ＮＯ）にはステップＳＢ０４へ移行する。
●［ステップＳＢ０４］先読みが間に合わないことを検出し、減速を開始する。  
●［ステップＳＢ０５］先読みが行われて先読みしたブロックの実行時間の積算Ｘが更新されたか否か判定し、先読みが行われて先読みしたブロックの実行時間の積算Ｘが更新された場合（ＹＥＳ）にはステップＳＢ０７へ移行し、先読みが行われて先読みしたブロックの実行時間の積算Ｘが更新されていない場合（ＮＯ）にはステップＳＢ０６へ移行する。  
●［ステップＳＢ０６］減速を続行し（先読みブロックが無い場合は一時停止する）、ステップＳＢ０５へ戻る。  
●［ステップＳＢ０７］ステップＳＢ０５，ＳＢ０６の処理で先読みが間に合わない状態が解消されたため、減速または一時停止を中断し、加速を行い、ステップＳＢ０１へ戻る。
【００４１】
図１６は段落［００３４］から［００４０］で説明した減速および一時停止により、あるブロックの実行時間が変化した場合でも、指令通りの送り速度（送り速度オーバライドが１００％の状態）でＮＣプログラム運転が行われたものとして実行時間を記憶する処理を説明する図である。最初の１００（ｍｓ）の間は指令速度通りの送り速度オーバライド１００％で実行されるが、その後先読みが間に合わずに−１．０（％／ｍｓ）で減速し、その後１００ｍｓは送り速度オーバライド６０％で動作してそのブロックは実行終了するものとする。この場合、減速が行われなかった場合の実行時間は、（１）の区間が１００×（１００÷１００）＝１００（ｍｓ）、（２）の区間が（１００÷１００＋６０÷１００）÷２×４０＝３２（ｍｓ）、（３）の区間が１００×（６０÷１００）＝６０（ｍｓ）となり、合わせて１９２（ｍｓ）となる。
これにより、先読みが間に合わずに減速および一時停止が行われた場合でも、段落［００３３］の［手段１］によって、正確な実行時間を記憶可能である。
【００４２】
＜テーブル形式データによる運転（パステーブル運転）を実行する場合＞  
パステーブル運転に用いられるテーブル形式データは、時間、軸位置、あるいは主軸位置を基準とし、基準となる時間、軸、あるいは主軸の位置と、前記基準となる軸、あるいは、主軸とは別の軸、あるいは、主軸の位置とを対応させたテーブルである。
【００４３】
テーブル形式データによる運転では、プログラム経路の各点を通過する時刻をテーブル形式データにより指定することにより、全ての軸が基準となる時間に同期して動作する。同様に、主軸に対する指令や補助機能指令を出力する時刻をテーブル形式データにより指定することにより、全ての主軸指令や補助機能指令も基準となる時間に同期して出力される。
【００４４】
図３はパステーブル運転ブロック図（特許文献５に開示）である。パステーブル運転を行う数値制御装置は、基準値カウンタ３、Ｘ軸パステーブルＴｘ、Ｚ軸パステーブルＴｚ、Ｘ軸パステーブル補間処理部４ｘ、Ｚ軸パステーブル補間処理部４ｚ、送り軸のＸ軸用のモータ５ｘ、送り軸のＺ軸用のモータ５ｚを備えている。
【００４５】
なお、基準となる時間は全テーブル形式データで共通とすることも、あるいは、テーブル形式データ毎に個別の基準となる時間を使用することも可能である。以降の説明では簡略化のため、全テーブル形式データが共通の基準となる時間を使用することを仮定して行う。
【００４６】
特許文献５には、図４に示されるパステーブル運転ブロック図も開示されている。図４に示されるパステーブル運転を行う数値制御装置は、時間あるいは主軸位置あるいは送り軸位置をそれぞれ独立してカウントする第１基準値カウンタ３ａ、第２基準値カウンタ３ｂ、第３基準値カウンタ３ｃ、Ｘ軸パステーブルＴｘ，主軸パステーブルＴｓ，補助機能パステーブルＴｍ、Ｘ軸パステーブル補間処理部４ｘ，主軸パステーブル補間処理部４ｓ，補助機能パステーブル出力処理部４ｍ、Ｘ軸モータ５ｘ，主軸モータ５ｓを備えている。
【００４７】
第１基準値カウンタ３ａ，第２基準値カウンタ３ｂ，第３基準値カウンタ３ｃは、数値制御装置が有する計時機能からの信号、あるいは、各送り軸や主軸に取り付けられた位置検出器からの位置検出信号をカウントする。そして、第１基準値カウンタ３ａ，第２基準値カウンタ３ｂ，第３基準値カウンタ３ｃは、それぞれ、カウントのリセット信号を受けるとカウント値を初期値に戻され、停止信号を受けるとカウント値の更新を停止し、再開信号を受けるとカウント値の更新を再開する。
【００４８】
第１基準値カウンタ３ａ，第２基準値カウンタ３ｂ，第３基準値カウンタ３ｃからの基準値を任意に切り換えて選択するための切り換えスイッチ６ａ，６ｂ，６ｃを備えている。例えば、Ｘ軸用パステーブルＴｘを第１基準値カウンタ３ａ，主軸パステーブルＴｓを第２基準値カウンタ３ｂ，補助機能パステーブルＴｍを第３基準値カウンタ３ｃからの基準値にしたがってパステーブル運転が実行できる。あるいは、切り換えスイッチ６ａ，６ｂ，６ｃの設定により、全てのパステーブルＴｘ，Ｔｓ，Ｔｍを基準値カウンタ３ａからの基準値にしたがってパステーブル運転が実行できる。
【００４９】
図４において実行される図５に示されるＸ軸、主軸Ｓ、補助機能のパステーブルの例を説明する。図４において、図５に示されるパステーブルを実行した場合、基準となる時間の進行に伴い、パステーブル運転中の工作機械は図６に示される動作を行う。
【００５０】
本発明では、先読みしたブロックの実行時間の積算が短いパステーブルの先読みを優先して行う。図１４に示されるパステーブルを運転した場合、以下のような順番で先読みが行われる。下記の［］内は各パステーブル名と前記各パステーブルに対応するブロックの実行時間の積算（積算実行時間）を示している。また、斜体文字は先読みしたブロックの実行時間の積算が最も短いパステーブルを示している。先読みしたブロックの実行時間を積算するための各ブロックの実行時間については後述する。
（１）＜Ｘ＞のＬ１を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（１，０，０）］
（２）（１）で＜Ｓ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｓ＞のＬ１００を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（１，１００，０）］
（３）（２）で＜Ｍ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｍ＞のＬ１０００を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算  （＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（１，１００，１０００）］
（４）（３）で＜Ｘ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｘ＞のＬ２を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（２，１００，１０００）］
（５）（４）で＜Ｘ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｘ＞のＬ３を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３，１００，１０００）］
（６）（５）で＜Ｘ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｘ＞のＬ３００を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３００，１００，１０００）］
（７）（６）で＜Ｓ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｓ＞のＬ１５０を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３００，１５０，１０００）］
（８）（７）で＜Ｓ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｓ＞のＬ２００を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３００，２００，１０００）］
（９）（８）で＜Ｓ＞の先読みしたブロックの実行時間の積算が最も短いため、＜Ｓ＞のＬ３００を先読みし、その後各プログラムの先読みしたブロックの実行時間を算出
［先読みしたブロックの実行時間の積算（＜Ｘ＞，＜Ｓ＞，＜Ｍ＞）＝（３００，３００，１０００）］
図７は、図１４に示す３つのパステーブルにおいて、本発明により、９個のブロックを先読みした段階で、各テーブルの先読みしたブロックの実行時間の積算を説明する図である。
【００５１】
図７に示されるように、従来技術の説明と同じ量（合わせて９個）のブロックを先読みした段階で、先読みしたブロックの実行時間の積算は、最も短い＜Ｘ＞と＜Ｓ＞でも３００ｍｓとなる。先読みブロックの運転中に並行して先読みを行うことができるため、先読みが間に合わなくなる可能性は低い。なお、もし先読みが間に合わない場合でも、パステーブル運転は先読み待ちとなるため、従来技術のようにアラームや即時停止となることはない。
【００５２】
ここで、パステーブル運転の先読みが間に合わない状態の監視、運転の減速、一時停止について図８を用いて補足説明する。図８は、パステーブル運転の先読みが間に合わない場合に時間オーバライドを減少させることで運転を減速させ、先読みブロックが完全になくなった場合は時間オーバライドを０にして一時停止させることを説明する図である。
【００５３】
パステーブルの先読みを行いながら運転する場合に、現在の基準となる時間の進行速度（時間オーバライド）を基準にして、パステーブル運転が減速停止可能な先読みブロックを最低限確保した上で運転する。
【００５４】
現在の時間オーバライドで先読みが間に合わない場合、時間オーバライドを減少させることで運転を減速させ、先読みブロックが完全になくなった場合は時間オーバライドを０にして一時停止させる。減速または停止中にパステーブルの先読みが行われて、先読みが間に合っていない状態が解消された場合は、時間オーバライドを増加させることで加速が行われる。
【００５５】
現在の時間オーバライドをＯＶＲＤとし、安全に直線形加減速で減速停止するための時間がＴ（ｍｓ）である場合に、先読みが間に合わなくなったことを検出すべき基準となる時間の算出方法を説明する。
【００５６】
減速開始から一時停止までのＴ（ｍｓ）の間に先読みしたブロックの実行時間の積算（積算実行時間）は（ＯＶＲＤ÷１００）×Ｔ÷２消費されるため、先読みしたブロックの実行時間の積算がＸだった場合、Ｘ＝（ＯＶＲＤ÷１００）×Ｔ÷２となった場合に、先読みが間に合わなくなったことを検出することで、減速時間Ｔ（ｍｓ）で減速停止が可能である。
【００５７】
なお、上記は直線形で減速することを仮定しているが、例えばベル形で減速する場合や、それ以外の場合でも同様に、先読みが間に合わなくなったことを検出すべき基準となる時間の算出が可能である。
【００５８】
図１０はパステーブル運転の処理を説明するフローチャートである。先読みしたブロックの実行時間の積算をＸとする。現在の時間オーバライドをＯＶＲＤ（％）、減速時間をＴ（ｍｓ）とする。以下、各ステップに従って説明する。
●［ステップＳＣ０１］先読みしたブロックの実行時間の積算Ｘが、減速時間Ｔ（減速開始から一時停止までの時間）の間の先読みブロックの消費量（ＯＶＲＤ÷１００）＊Ｔ÷２より小さいか否か判断し、小さい場合（ＹＥＳ）にはステップＳＣ０３へ移行し、小さくない場合（ＮＯ）にはステップＳＣ０２へ移行する。
●［ステップＳＣ０２］通常通りテーブル形式データの運転を行い、ステップＳＣ０１へ戻る。  
●［ステップＳＣ０３］最終ブロックまで先読みしているか否か判断し、最終ブロックまで先読みしている場合（ＹＥＳ）には処理を終了し、最終ブロックまで先読みしていない場合（ＮＯ）にはステップＳＣ０４へ移行する。
●［ステップＳＣ０４］先読みが間に合わないことを検出し、減速を開始する。  
●［ステップＳＣ０５］先読みが行われて先読みしたブロックの実行時間の積算Ｘが更新されたか否か判定し、先読みしたブロックの実行時間の積算Ｘが更新された場合（ＹＥＳ）にはステップＳＣ０７へ移行し、先読みしたブロックの実行時間の積算Ｘが更新されていない場合（ＮＯ）にはステップＳＣ０６へ移行する。  
●［ステップＳＣ０６］減速を続行し（先読みブロックが無い場合は一時停止する）、ステップＳＣ０５へ戻る。  
●［ステップＳＣ０７］ステップＳＣ０５，ＳＣ０６の処理で先読みが間に合わない状態が解消されたため、減速または一時停止を中断し、加速を行い、ステップＳＣ０１へ戻る。
【００５９】
ここで、先読みしたブロックの実行時間を積算するための、各ブロックの実行時間について説明する。先読みしたブロックの実行時間を積算する実行時間積算手段は、現在の基準となる時間と先読みしたブロックの基準となる時間の差から先読みしたブロックの実行時間の積算を予測する手段である。
【００６０】
図１１は、本発明に係る、ＮＣプログラムまたはパステーブル運転を実行する数値制御装置の要部ブロック図である。ＣＰＵ１１は数値制御装置１０を全体的に制御するプロセッサである。ＣＰＵ１１はＲＯＭ１２に格納されたシステムプログラムを、バス２０を介して読み出し、該システムプログラムに従って数値制御装置１０の全体を制御する。ＲＡＭ１３には一時的な計算データや表示データ及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。ＳＲＡＭ１４は図示しないバッテリでバックアップされ、数値制御装置１０の電源がオフされても記憶装置が保持される不揮発性メモリとして構成される。
【００６１】
ＳＲＡＭ１４中には、インタフェース１５を介して読み込まれた加工プログラム（ＮＣプログラム）や表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。さらに、前述した各テーブル形式データ（パステーブル）が予め格納されている。また、ＲＯＭ１２には、加工プログラムの作成及び編集処理を実施するための各種システムプログラムが予め書き込まれている。なお、本発明において、ＮＣプログラムやパステーブルの格納場所は数値制御装置内の記憶装置ではなく、例えば、ネットワークで接続された外部の記憶装置に、ＮＣプログラムやパステーブルのデータを記憶させておき、ネットワークを介してＮＣプログラムの各ブロックやパステーブルのデータを逐次読み出すようにしてもよい。
【００６２】
インタフェース１５は、数値制御装置１０と図示しないアダプタ等の外部機器との接続を可能とするものである。また、数値制御装置１０内で編集した加工プログラムは、外部機器を介して外部記憶装置に記憶させることができる。ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１０内に内蔵されたシーケンスプログラムで工作機械のアクチュエータ等の補助装置にＩ／Ｏユニット１７を介して信号を出力し制御する。また、工作機械の本体に設けられた操作盤の各種スイッチ等からの信号を受け、必要な信号処理を行った後、ＣＰＵ１１に渡す。表示器／ＭＤＩユニット７０はディスプレイやキーボード等を備えた手動データ入力装置であり、インタフェース１８は表示器／ＭＤＩユニット７０のキーボードからの指令、データを受け入れてＣＰＵ１１に渡す。インタフェース１９は操作盤７１に接続され、操作盤７１からの各種指令を受け取るようになっている。
【００６３】
各送り軸の軸制御回路３０，３１はＣＰＵ１１からの各送り軸の移動指令を受けて、各送り軸の指令をサーボアンプ４０，４１に出力する。サーボアンプ４０，４１はこの指令を受けて、各送り軸のサーボモータ５０ｘ，５１ｚを駆動する。各送り軸のサーボモータ５０ｘ，５１ｚは図示しない位置・速度検出器を内蔵し、この位置・速度検出器からの位置、速度フィードバック信号を軸制御回路３０，３１にフィードバックし、位置・速度のフィードバック制御を行う。なお、図１１では、この位置・速度のフィードバックについて記載していない。
【００６４】
また、スピンドル制御回路６０は主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１はスピンドル速度信号を受けて、スピンドルモータ（主軸モータ）６２を指令された回転速度で回転させる。ポジションコーダ６３は、スピンドルモータ（主軸モータ）６２の回転に同期して帰還パルス（基準パルス）及び１回転信号をスピンドル制御回路６０にフィードバックし、速度制御を行う。この帰還パルス（基準パルス）及び１回転信号は、スピンドル制御回路６０を介してＣＰＵ１１によって読み取られ、帰還パルス（基準パルス）はＲＡＭ１３に設けられたカウンタ（図３，図４の各基準値カウンタに対応するカウンタ）で計数される。なお、主軸の指令パルスを計数してもよい。
【００６５】
また、ＲＡＭ１３に設けられたカウンタは、数値制御装置１０が有する計時機能から得られる時間信号のパルス数を計数する、あるいは、送り軸からのフィードバック信号から得られるパルス数を計数し、パステーブル運転する際の基準信号を得る。あるいは、送り軸の指令パルスを計数してもよい。
【００６６】
ここで、特許請求の範囲の記載について補足説明する。  
（請求項１）
図２のフローチャートを用いて説明する。  
「実行時間積算手段」は、ステップＳＡ０１が対応する。「判定手段」はステップＳＡ０２が対応する。「先読み手段」はステップＳＡ０３が対応する。
【符号の説明】
【００６７】
３    基準値カウンタ
３ａ  第１基準値カウンタ
３ｂ  第２基準値カウンタ
３ｃ  第３基準値カウンタ
Ｔｘ  Ｘ軸パステーブル
Ｔｓ  主軸パステーブル
Ｔｍ  補助機能パステーブル
４ｘ  Ｘ軸パステーブル補間処理部
４ｓ  主軸パステーブル補間処理部
４ｍ  補助機能パステーブル出力処理部
５ｘ  Ｘ軸モータ
５ｚ  Ｚ軸モータ
５ｓ  主軸モータ
１０  数値制御装置
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ＳＲＡＭ
１５  インタフェース
１６  ＰＭＣ
１７  Ｉ／Ｏユニット
１８  インタフェース
１９  インタフェース
２０  バス
３０  軸制御回路
３１  軸制御回路
４０  サーボアンプ
４１  サーボアンプ
５０ｘ，５１ｚ  サーボモータ
６０  スピンドル制御回路
６１  スピンドルアンプ
６２  スピンドルモータ
６３  ポジションコーダ
７０  表示器／ＭＤＩユニット
７１  操作盤
【図１】
2015079461.tif 000003
【図２】
2015079461.tif 000004
【図３】
2015079461.tif 000005
【図５】
2015079461.tif 000006
【図６】
2015079461.tif 000007
【図７】
2015079461.tif 000008
【図８】
2015079461.tif 000009
【図９】
2015079461.tif 000010
【図１０】
2015079461.tif 000011
【図１１】
2015079461.tif 000012
【図１２】
2015079461.tif 000013
【図１３】
2015079461.tif 000014
【図１４】
2015079461.tif 000015
【図１５】
2015079461.tif 000016
【図１６】
2015079461.tif 000017
【図４】
2015079461.tif 000018