(57)【要約】【課題】送り速度や切削速度等の安定化のため、加工プログラム中で、加減速動作の決定に使用する先読みブロック数が不足することにより、速度制御異常が発生する可能性の高い箇所を検知すると共に、当該箇所において先読みブロック数を補充することが可能な数値制御装置を提供する。【解決手段】数値制御装置１００は、加工プログラムの実行に必要な先読みブロック数である必要先読みブロック数を設定する必要先読みブロック数設定部１１４と、先読みブロック数算出部１１３によって算出された先読みブロック数と必要先読みブロック数とを比較し、先読みブロック数が必要先読みブロック数に達しない場合には、先読みブロック数が必要先読みブロック数に達するまで、加工プログラムの実行を制限する動作制限部１１６とを備える。【選択図】図３
2020071695.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックから構成され、軸の加減速を制御するための加工プログラムを実行することにより、前記軸を有する工作機械を制御する数値制御装置であって、
前記加工プログラムを実行するプログラム実行部と、
前記加工プログラムの実行と並列して、前記加工プログラムを先読みするプログラム先読み部と、
前記プログラム実行部によって実行中のブロックの番号である第１シーケンス番号と、当該実行と同時に、前記プログラム先読み部によって先読みされるブロックの番号である第２シーケンス番号との差分である先読みブロック数を算出する先読みブロック数算出部と、
前記加工プログラムの実行に必要な先読みブロック数である必要先読みブロック数を設定する必要先読みブロック数設定部と、
前記先読みブロック数算出部によって算出された前記先読みブロック数と前記必要先読みブロック数とを比較し、前記先読みブロック数が前記必要先読みブロック数に達しない場合には、前記先読みブロック数が前記必要先読みブロック数に達するまで、前記プログラム実行部による前記加工プログラムの実行を制限する動作制限部とを備える、数値制御装置。
【請求項２】
前記プログラム先読み部によって先読みされるブロックを蓄積すると共に、蓄積されたブロックが前記プログラム実行部によって消費される記憶部を更に備え、
前記必要先読みブロック数設定部は、前記記憶部の最大容量に基づいて前記必要先読みブロック数を設定する、請求項１に記載の数値制御装置。
【請求項３】
前記必要先読みブロック数を記憶する記憶部を更に備え、
前記必要先読みブロック数設定部は、前記記憶部に記憶された前記必要先読みブロック数を用いて、前記必要先読みブロック数を設定する、請求項１に記載の数値制御装置。
【請求項４】
前記必要先読みブロック数設定部は、前記加工プログラム内で所定の第１コードと共に記載される変数に基づいて、前記必要先読みブロック数を設定する、請求項１に記載の数値制御装置。
【請求項５】
前記加工プログラムが同一の加工に対応する第２コードの繰り返しを含み、
前記プログラム実行部によって前記第２コードが前回に実行された際に消費された先読みブロック数である消費ブロック数を記憶する記憶部を更に備え、
前記必要先読みブロック数設定部は、前記プログラム実行部によって前記コードが次回以降実行される際に、前記コードの実行前の先読みブロック数に前記消費ブロック数を加算した値を、前記必要先読みブロック数として設定する、請求項１に記載の数値制御装置。
【請求項６】
前記動作制限部は、前記プログラム実行部に対して、前記加工プログラムの実行の停止を指示する、請求項１〜５のいずれか１項に記載の数値制御装置。
【請求項７】
前記動作制限部は、前記加工プログラム内で指定される前記工作機械の動作速度を低下させる、請求項１〜５のいずれか１項に記載の数値制御装置。
【請求項８】
前記加工プログラムのシミュレーション時に、前記先読みブロック数算出部によって算出された前記先読みブロック数が所定値を下回った時点における前記加工プログラム内のブロックを検知し、当該ブロックに所定の第３コードを挿入する補充コード追加部を更に備え、
前記動作制限部は、前記第３コードを検知すると、前記先読みブロック数と前記必要先読みブロック数とを比較する、請求項１〜７のいずれか１項に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関する。
【背景技術】
【０００２】
昨今の製造業では、ＩＴ部品等の小型化・精密化が進み、高速・高精度加工に対する関心が高まっている。高速・高精度加工におけるワークの加工プログラムは、さらなる高品位での加工を実現するため、より小さなオーダーでの許容誤差（トレランス）で作成されることが増加している傾向にある。
【０００３】
従来は、ＰＣ処理能力の観点から現実的ではなかった小さいトレランスの加工プログラムは、近年ではＰＣ性能とＣＡＭ（Computer Aided Manufacturing）性能の向上から、十分に作成可能となってきており、その勢いは今後も加速すると考えられている。
【０００４】
また、トレランス以外にも高品位加工における重要な要素として微小直線を均一化することが挙げられており、各軸の加減速を一定化することで振動を低減することにより、加工面の品位を向上させるため、均一な微小直線を適用した高品位加工プログラムは増加傾向にある。
これらのことから、近年では、加工プログラムにおいてブロック数が増加している。
【０００５】
従来技術では、数値制御装置によってプログラムを先読みし、先読みブロック数だけ事前に貯蓄したプログラムから、ＦＩＦＯ（先入れ先出し）によって、次に動作するブロックのプログラムを読み出して処理することにより、加減速動作を決定して、軸制御を行っている。
【０００６】
しかしながら、これらの高品位加工プログラムにおいて、以下のような課題があった。すなわち、微小直線長さが短く、指令速度が高速なため、プログラムの実行にかかる処理時間が、先読みの処理にかかる時間よりも短い場合、加減速動作の決定に使用する先読みブロック数を確保できない結果、プログラムの挙動を考慮した加減速が定まらず、速度変化が一定ではなくなり、高品位な加工面が得られないことがあった。
【０００７】
図８は、速度変化が不安定となった際の、加減速の経時変化を示すグラフである。図８に示すように、当初の速度は指令速度６０００ｍｍ/ｍｉｎで安定的に推移していたものの、２０００ｍｍ／ｍｉｎとなった段階で、プログラムの実行にかかる処理時間が短すぎて、加減速動作の決定に使用する先読みブロック数を確保できなくなったため、図８内の矢印に示すように不安定化し、微細動する現象が発生する。とくにこれらの現象は、５軸加工等、軸数が増加して数値制御装置による処理能力が低下すると顕著なものとなる。逆に言えば、数値制御装置の先読みを実行したり加工プログラムを実行したりする処理能力を向上させることにより、これらの現象を解決できるものの、更にプログラムの微細化や機械の改良による指令速度が向上した場合には、また同様の問題が発生する。
【０００８】
とりわけ、高速かつ高品位の加工が要求される同時５軸加工として、例えばインペラ加工が挙げられる。図９はインペラの例としてインペラ８０を示す。インペラ８０の加工では、特にハブ面８１とフィレット面８２の仕上げ加工において、短い微小直線を用いながら高い送り速度で加工する必要があり、更にＣＰＵの処理負担が増加するスムージング機能が使用される。
【０００９】
そのため、図１０に示すように、インペラ加工においては、とりわけ、メインブレード（長翼）８３や、スプリッターブレード（短翼）８４等の各翼の加工の開始時点または途中から先読みブロック数が枯渇し、速度制御が不安定になることがある。
【００１０】
この点、特許文献１に係る発明は、数値制御装置において、ＮＣデータを解析した解析データを加減速補間手段に使用されるまで、ＦＩＦＯで保持するバッファ内のデータ数の過不足を監視する技術であって、とりわけ、バッファ内に存在することが予測されるデータ数が下限となる閾値を下回る場合に、データ不足と判断する技術を開示している。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特許第３７２３０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかし、特許文献１に係る技術は、データ不足と判断した場合に、ＮＣデータ解析処理タスクの優先順位を上げるのみであり、ＮＣデータ内のどのデータ、あるいはどの位置で、データ不足となるかを判断するものではなく、延いては、データ不足となる箇所における速度制御異常に対応するものではなかった。
【００１３】
本発明は、送り速度や切削速度等の安定化のため、加工プログラム中で、加減速動作の決定に使用する先読みブロック数が不足することにより、速度制御異常が発生する可能性の高い箇所を検知すると共に、当該箇所において先読みブロック数を補充することが可能な数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１４】
（１）  本発明に係る数値制御装置は、複数のブロックから構成され、軸の加減速を制御するための加工プログラムを実行することにより、前記軸を有する工作機械（例えば、後述の「工作機械２００」）を制御する数値制御装置（例えば、後述の「数値制御装置１００」）であって、前記加工プログラムを実行するプログラム実行部（例えば、後述の「プログラム実行部１１１」）と、前記加工プログラムの実行と並列して、前記加工プログラムを先読みするプログラム先読み部（例えば、後述の「プログラム先読み部１１２」）と、前記プログラム実行部によって実行中のブロックの番号である第１シーケンス番号と、当該実行と同時に、前記プログラム先読み部によって先読みされるブロックの番号である第２シーケンス番号との差分である先読みブロック数を算出する先読みブロック数算出部（例えば、後述の「先読みブロック数算出部１１３」）と、前記加工プログラムの実行に必要な先読みブロック数である必要先読みブロック数を設定する必要先読みブロック数設定部（例えば、後述の「必要先読みブロック数設定部１１４」）と、前記先読みブロック数算出部によって算出された前記先読みブロック数と前記必要先読みブロック数とを比較し、前記先読みブロック数が前記必要先読みブロック数に達しない場合には、前記先読みブロック数が前記必要先読みブロック数に達するまで、前記プログラム実行部による前記加工プログラムの実行を制限する動作制限部（例えば、後述の「動作制限部１１６」）とを備える。
【００１５】
（２）  （１）に記載の数値制御装置は、前記プログラム先読み部によって先読みされるブロックを蓄積すると共に、蓄積されたブロックが前記プログラム実行部によって消費される記憶部（例えば、後述の「ＲＡＭ１３」）を更に備え、前記必要先読みブロック数設定部は、前記記憶部の最大容量に基づいて前記必要先読みブロック数を設定してもよい。
【００１６】
（３）  （１）に記載の数値制御装置は、前記必要先読みブロック数を記憶する記憶部を更に備え、前記必要先読みブロック数設定部は、前記記憶部に記憶された前記必要先読みブロック数を用いて、前記必要先読みブロック数を設定してもよい。
【００１７】
（４）  （１）に記載の数値制御装置において、前記必要先読みブロック数設定部は、前記加工プログラム内で所定の第１コードと共に記載される変数に基づいて、前記必要先読みブロック数を設定してもよい。
【００１８】
（５）  （１）に記載の数値制御装置において、前記加工プログラムが同一の加工に対応する第２コードの繰り返しを含み、前記プログラム実行部によって前記第２コードが前回に実行された際に消費された先読みブロック数である消費ブロック数を記憶する記憶部を更に備え、前記必要先読みブロック数設定部は、前記プログラム実行部によって前記コードが次回以降実行される際に、前記コードの実行前の先読みブロック数に前記消費ブロック数を加算した値を、前記必要先読みブロック数として設定してもよい。
【００１９】
（６）  （１）〜（５）に記載の数値制御装置において、前記動作制限部は、前記加工プログラム内で指定される前記工作機械の動作速度を低下させてもよい。
【００２０】
（７）  （１）〜（５）に記載の数値制御装置において、前記動作制限部は、前記プログラム実行部に対して、前記加工プログラムの実行の停止を指示してもよい。
【００２１】
（８）  （１）〜（７）に記載の数値制御装置は、前記加工プログラムのシミュレーション時に、前記先読みブロック数算出部によって算出された前記先読みブロック数が所定値を下回った時点における前記加工プログラム内のブロックを検知し、当該ブロックに所定の第３コードを挿入する補充コード追加部を更に備え、前記動作制限部は、前記第３コードを検知すると、前記先読みブロック数と前記必要先読みブロック数とを比較してもよい。
【発明の効果】
【００２２】
本発明によれば、送り速度や切削速度等の安定化のため、加工プログラム中で、加減速動作の決定に使用する先読みブロック数が不足することにより、速度制御異常が発生する可能性の高い箇所を検知すると共に、当該箇所において先読みブロック数を補充することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１実施形態に係る数値制御装置を含む制御システムの構成を示す図である。
【図２】本発明の実施形態に係る数値制御装置の構成を示す図である。
【図３】本発明の実施形態に係る数値制御装置の機能ブロックを示す図である。
【図４】本発明の実施形態で用いる加工プログラムの例を示す図である。
【図５】本発明の実施形態における先読みブロック数の経時変化を示す図である。
【図６】本発明の実施形態における先読みブロック数の経時変化を示す図である。
【図７】本発明の実施形態に係る数値制御装置の動作を示すフローチャートである。
【図８】先読みブロック数を確保できなくなったことによる速度の不安定化を示すグラフである。
【図９】インペラの構造の例を示す図である。
【図１０】従来技術における先読みブロック数の経時変化を示すグラフである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態について図１〜図７を参照することにより説明する。
〔１  発明の概要〕
先読みブロック数は、先読みされるブロックの位置や、プログラム実行部によって実行されるブロックの位置が加工プログラムの終わりとなった際に、０となる。しかし通常、先読みブロック数は、０に向かって一様に減少していくわけではなく、加工経路の曲率の変化や軸構成によってブロック毎の処理時間が変化することで、先読みブロック数の減少率は変化する。
【００２５】
例えば、加工プログラム内で微小直線が連続する箇所では、加工プログラムの実行スピードが速くなり、１ブロック当たりの処理時間が短くなると、先読みブロック数の減少率が高くなる。この場合、加減速動作の決定に使用する先読みブロック数を確保できず、速度変化が一定ではなくなるような速度制御の異常が発生する。
【００２６】
そこで、本実施形態は、実際の先読みブロック数と、必要とされる先読みブロック数とを比較し、先読みブロック数が不足する結果、速度制御の異常が発生する可能性が高いことが予見されるブロックで、工作機械の動作速度を遅くしたり、加工プログラムの実行を停止したりする。この間に、加工プログラムの先読みを継続し、先読みブロック数を補充することによって、必要とされる先読みブロック数を確保し、速度制御の異常の可能性を抑制する。
【００２７】
〔２  発明の構成〕
図１は、本発明の第１実施形態に係る数値制御装置１００と、当該数値制御装置１００によって制御される工作機械２００とを含む制御システム１０の構成を示す。
【００２８】
数値制御装置１００は、後述の機能を備えることにより、工作機械２００に対して動作指令を出力し、工作機械２００を数値制御する装置である。数値制御装置１００の構成及び機能の詳細については後述する。
【００２９】
工作機械２００は、切削加工等の所定の機械加工を行う装置である。工作機械２００は、ワークを加工するために駆動するモータや、このモータに取り付けられた主軸や送り軸や、これら各軸に対応する治具や工具等を備える。そして、工作機械２００は、数値制御装置１００から出力される動作指令に基づいてモータを駆動させることにより所定の機械加工を行う。ここで、所定の機械加工の内容に特に限定はなく、切削加工以外にも、例えば研削加工、研磨加工、圧延加工、あるいは鍛造加工といった他の加工であってもよい。
【００３０】
図２は、本発明の実施形態に係る数値制御装置１００の構成例である。数値制御装置１００は、主として、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＣＭＯＳ１４と、インタフェース１５、１８、１９と、ＰＭＣ（プログラマブル・マシン・コントローラ）１６と、Ｉ／Ｏユニット１７と、軸制御回路３０〜３４と、サーボアンプ４０〜４４と、スピンドル制御回路６０と、スピンドルアンプ６１とを備える。
【００３１】
ＣＰＵ１１は数値制御装置１００を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステムプログラムを、バス２５を介して読み出し、該システムプログラムに従って数値制御装置１００の全体を制御する。
【００３２】
ＲＡＭ１３には、一時的な計算データや表示データ、及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。
【００３３】
ＣＭＯＳメモリ１４は、図示しないバッテリでバックアップされ、数値制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＣＭＯＳメモリ１４中には、インタフェース１５を介して読み込まれた加工プログラムや、表示器／ＭＤＩユニット７０を介して入力された加工プログラム等が記憶される。
【００３４】
ＲＯＭ１２には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムが、予め書き込まれている。
【００３５】
本発明を実行する加工プログラム等の各種加工プログラムは、インタフェース１５や表示器／ＭＤＩユニット７０を介して入力し、ＣＭＯＳメモリ１４に格納することができる。
【００３６】
インタフェース１５は、数値制御装置１００とアダプタ等の外部機器７２との接続を可能とするものである。外部機器７２側からは加工プログラムや各種パラメータ等が読み込まれる。また、数値制御装置１００内で編集した加工プログラムは、外部機器７２を介して外部記憶手段に記憶させることができる。
【００３７】
ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１００に内蔵されたシーケンスプログラムで、工作機械の補助装置（例えば、工具交換用のロボットハンドといったアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力して制御する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、信号をＣＰＵ１１に渡す。
【００３８】
表示器／ＭＤＩユニット７０は、ディスプレイやキーボード等を備えた手動データ入力装置である。インタフェース１８は、表示器／ＭＤＩユニット７０のキーボードからの指令やデータを受けて、これらをＣＰＵ１１に渡す。インタフェース１９は、手動パルス発生器等を備えた操作盤７１に接続されている。
【００３９】
各軸の軸制御回路３０〜３４は、ＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。
【００４０】
サーボアンプ４０〜４４は、この指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は、位置・速度検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行う。なお、ブロック図では、位置・速度のフィードバックについては省略している。
【００４１】
スピンドル制御回路６０は、工作機械への主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１は、このスピンドル速度信号を受けて、工作機械のスピンドルモータ６２を指令された回転速度で回転させ、工具を駆動する。
【００４２】
スピンドルモータ６２には、歯車あるいはベルト等でパルスエンコーダ６３が結合されている。パルスエンコーダ６３は、主軸の回転に同期して帰還パルスを出力する。その帰還パルスは、バス２５を経由してＣＰＵ１１によって読み取られる。
【００４３】
なお、図２に示す数値制御装置１００の構成例では、軸制御回路３０〜３４の５つの軸制御回路と、サーボモータ５０〜５４の５つのサーボモータが示されている。しかし、本発明は、これには限定されず、任意の個数の軸制御回路及びサーボモータを備えることが可能である。
【００４４】
図３は、上記のＣＰＵ１１が、ＲＯＭ１２に格納されたシステムプログラム及びアプリケーションプログラムを、バス２５を介して読み出し、該システムプログラム及びアプリケーションプログラムに従って実現する機能を示す機能ブロック図である。ＣＰＵ１１は、プログラム実行部１１１と、プログラム先読み部１１２と、先読みブロック数算出部１１３と、必要先読みブロック数設定部１１４と、補充コード検知部１１５と、動作制限部１１６とを備える。
【００４５】
プログラム実行部１１１は、加工プログラムを実行する。とりわけ本実施形態において、プログラム実行部１１１は、加工プログラムのシミュレーションを実行する。なお、このシミュレーションの際には、単に加工プログラムを空運転するだけではなく、例えば工作機械２００にワークを設置した上で、実際に工作機械２００を動作させることが好ましい。工作機械２００の動作環境や軸構成によって、後述の先読みブロック数の経時変化の態様が異なってくるためである。
【００４６】
プログラム先読み部１１２は、プログラム実行部１１１による加工プログラムのシミュレーションと並列に、当該シミュレーションに先んじて加工プログラムを先読みする。
【００４７】
先読みブロック数算出部１１３は、プログラム実行部１１１によって実行中のブロックの第１シーケンス番号と、当該ブロックを実行している時点で、プログラム先読み部１１２によって先読みされるブロックの第２シーケンス番号との差分である先読みブロック数を算出する。
【００４８】
必要先読みブロック数設定部１１４は、加工プログラムの実行に必要とされる先読みブロック数である「必要先読みブロック数」を設定する。必要先読みブロック数設定部１１４は、一つの加工プログラム全体に対して、一つの「必要先読みブロック数」を設定してもよく、一つの加工プログラムを構成する各ブロックに対して、すなわち各加工毎に、「必要先読みブロック数」を設定してもよい。
【００４９】
また、必要先読みブロック数設定部１１４は、先読みブロックが蓄積されると共に、蓄積された先読みブロックが、プログラム実行部１１１によって実行され消費されるようなメモリの最大容量に基づいて、「必要先読みブロック数」を設定してもよい。このメモリは、上記の「ＲＡＭ１３」であってもよく、数値制御装置１００に外付けされるバッファ等の記憶装置であってもよい。
【００５０】
あるいは、必要先読みブロック数設定部１１４は、メモリに記憶された必要先読みブロック数を用いて、各加工プログラムの実行時に「必要先読みブロック数」を設定してもよい。
例えば、数値制御装置１００は、各加工プログラムの識別子と、各加工プログラムで設定される「必要先読みブロック数」との対応関係を設定するテーブルを記憶し、必要先読みブロック数設定部１１４は、実行予定の加工プログラムに対応する「必要先読みブロック数」をこのテーブルから読み取って、設定してもよい。
【００５１】
あるいは、後述のように、加工プログラムには先読みブロック補充コードが挿入されるが、ユーザはこの先読みブロック補充コードと共に変数を記載し、必要先読みブロック数設定部１１４は、数値制御装置１００の入力装置からの入力に基づいてこの変数に設定される値や、他のサブルーチンからこの変数に対して読み込まれる値を、「必要先読みブロック数」として設定してもよい。（なお、本明細書では「先読みブロック補充コード」を、「第１コード」とも呼称する。）
【００５２】
あるいは、加工プログラムが同一の加工に対応するコードの繰り返しを含む場合には、プログラム実行部１１１がこのコードを前回実行した際に消費された先読みブロック数を、「消費ブロック数」としてメモリに記憶しておき、このコードを次回以降に実行する際に、必要先読みブロック数設定部１１４は、コードの実行前の先読みブロック数に、「消費ブロック数」を加算した値を、「必要先読みブロック数」として設定してもよい。（なお、本明細書では、同一の加工に対応するコードを「第２コード」とも呼称する）
【００５３】
補充コード検知部１１５は、加工プログラムに挿入された「先読みブロック補充コード」を検知する。
【００５４】
図４は、「先読みブロック補充コード」が挿入された加工プログラムの例を示す。図４の例においては、加工プログラム中に、「先読みブロック補充コード」として、“Ｍ４００”というコードが挿入されている。この「先読みブロック補充コード」は、加工プログラム内において、実行時に、先読みブロック数が減少することにより速度制御の異常が発生する可能性が高いブロックに挿入される。
【００５５】
動作制限部１１６は、「先読みブロック補充コード」が検知されると、その時点での先読みブロック数と必要先読みブロック数とを比較し、先読みブロック数が「必要先読みブロック数」に達しない場合には、プログラム先読み部１１２によって先読みされる先読みブロック数が必要先読みブロック数に達するまで、プログラム実行部１１１による加工プログラムの実行を制限する。
【００５６】
例えば、動作制限部１１６は、加工プログラムの実行の制限として、加工プログラム内で指定される工作機械の動作速度を低下させてもよい。これにより、プログラム実行部１１１による加工プログラムの実行速度が遅くなり、この間、プログラム先読み部１１２が加工プログラムの先読みを継続することにより、先読みブロック数が補充される。
【００５７】
図５は、動作制限部１１６が工作機械の動作速度を低下させる場合の先読みブロック数の経時変化を示すグラフである。
「Ｎｏ．２」、例えば図９に示すインペラ８０の２枚目の翼の加工が始まると同時に、工作機械２００の動作速度を低下させながら、プログラム先読み部１１２によって加工プログラムの先読みがされることにより、先読みブロック数は右肩上がりで上昇する。先読みブロック数が必要先読みブロック数に達した後は、工作機械は通常の動作速度で動作するので、先読みブロック数は減少するもの、枯渇することは無い。
「Ｎｏ．３」、例えば図９に示すインペラ８０の３枚目の翼の加工が始まると同時に、再度工作機械２００の動作速度を低下させながら、プログラム先読み部１１２によって加工プログラムの先読みがされることにより、先読みブロック数は再度右肩上がりで上昇する。以下、この先読みブロック数の増減は、加工が終了するまで繰り返される。
【００５８】
あるいは、動作制限部１１６は、加工プログラムの実行の制限として、プログラム実行部１１１に対して、加工プログラムの実行の停止を指示してもよい。加工プログラムの実行が停止されている間、プログラム先読み部１１２が加工プログラムの先読みを継続することにより、先読みブロック数が補充される。
【００５９】
図６は、動作制限部１１６がプログラム実行部１１１に対して加工プログラムの実行の停止を指示する場合の先読みブロック数の経時変化を示すグラフである。
「Ｎｏ．２」、例えば図９に示すインペラ８０の２枚目の翼の加工が始まると同時に、加工プログラムの実行を停止させた状態で、プログラム先読み部１１２によって加工プログラムの先読みがされることにより、先読みブロック数は垂直に上昇する。先読みブロック数が必要先読みブロック数に達した後は、工作機械は通常の動作速度で動作するので、先読みブロック数は減少するもの、枯渇することは無い。
「Ｎｏ．３」、例えば図９に示すインペラ８０の３枚目の翼の加工が始まると同時に、加工プログラムの実行を停止させた状態で、プログラム先読み部１１２によって加工プログラムの先読みがされることにより、先読みブロック数は垂直に上昇する。以下、この先読みブロック数の増減は、加工が終了するまで繰り返される。
【００６０】
数値制御装置１００は、上記の構成を有することにより、速度制御の異常が発生する可能性が高いことが予見されるブロックで、工作機械の動作速度を遅くしたり、加工プログラムの実行を停止したりする。この間に、数値制御装置１００は、加工プログラムの先読みを継続し、先読みブロック数を補充することによって、必要とされる先読みブロック数を確保し、速度制御の異常の可能性を抑制することが可能となる。
【００６１】
〔３  発明の動作〕
以下、図７を参照することにより、本発明の第１実施形態に係る数値制御装置１００の動作を説明する。
【００６２】
ステップＳ１１において、プログラム実行部１１１は、加工プログラムのシミュレーションを実行する。
【００６３】
ステップＳ１２において、プログラム先読み部１１２は、プログラム実行部１１１による加工プログラムのシミュレーションと並列に、当該シミュレーションに先んじて加工プログラムを先読みする。
【００６４】
ステップＳ１３において、先読みブロック数算出部１１３は、先読みブロック数を算出する。
【００６５】
ステップＳ１４において、先読みブロック数が必要先読みブロック数を下回る場合（Ｓ１４：ＹＥＳ）には、処理はステップＳ１５に移行する。先読みブロック数が必要先読みブロック数以上となる場合（Ｓ１４：ＮＯ）には、処理はステップＳ１１及びＳ１２に移行する。
【００６６】
ステップＳ１５において、動作制限部１１６は、加工プログラムの実行を制限する。より詳細には、動作制限部１１６は、加工プログラム内で指定される工作機械２００の動作速度を低下させてもよく、プログラム実行部１１１に対して加工プログラムの実行の停止を指示してもよい。
【００６７】
ステップＳ１６において、先読みブロック数が必要先読みブロック数以上となった場合（Ｓ１６：ＹＥＳ）には、処理はステップＳ１１及びＳ１２に移行する（リターン）。先読みブロック数が必要先読みブロック数に未だ満たない場合（Ｓ１６：ＮＯ）には、処理はステップＳ１５に移行する。
【００６８】
〔４  実施形態の効果〕
本発明の実施形態に係る数値制御装置１００は、実行中の加工プログラムのブロックの番号である第１シーケンス番号と、当該実行と同時に、先読みされるブロックの番号である第２シーケンス番号との差分である先読みブロック数を算出する先読みブロック数算出部１１３と、加工プログラムの実行に必要な先読みブロック数である必要先読みブロック数を設定する必要先読みブロック数設定部１１４と、先読みブロック数と必要先読みブロック数とを比較し、先読みブロック数が必要先読みブロック数に達しない場合には、先読みブロック数が必要先読みブロック数に達するまで、加工プログラムの実行を制限する動作制限部１１６とを備える。
【００６９】
これにより、送り速度や切削速度等の安定化のため、加工プログラム中で、加減速動作の決定に使用する先読みブロック数が不足することにより、速度制御異常が発生する可能性の高い箇所を検知すると共に、当該箇所において先読みブロック数を補充することが可能となる。
【００７０】
また、数値制御装置１００は、先読みされるブロックを蓄積すると共に、蓄積されたブロックがプログラムの実行によって消費される記憶部を更に備え、必要先読みブロック数設定部１１４は、記憶部の最大容量に基づいて必要先読みブロック数を設定する。
【００７１】
これにより、先読みブロックが蓄積される記憶部、例えばバッファの容量に応じて必要先読みブロック数を設定することが可能となり、必要先読みブロック数の過不足の可能性が抑制される。
【００７２】
また、数値制御装置１００は、必要先読みブロック数を記憶するメモリを更に備え、必要先読みブロック数設定部１１４は、メモリに記憶された必要先読みブロック数を用いて、必要先読みブロック数を設定する。
【００７３】
これにより、例えば複数の加工プログラムの各々に対して、必要先読みブロック数を設定する必要がある場合に、必要先読みブロック数の管理を簡便なものとすることが可能となる。
【００７４】
また、数値制御装置１００において、必要先読みブロック数設定部１１４は、加工プログラム内で先読みブロック補充コードと共に記載される変数に基づいて、必要先読みブロック数を設定する。
【００７５】
変数を用いて必要先読みブロック数を設定することにより、必要先読みブロック数をフレキシブルに変更することが可能となる。
【００７６】
また、加工プログラムが同一の加工に対応するコードの繰り返しを含む場合に、当該コードを前回に実行した際に消費された先読みブロック数である消費ブロック数を記憶し、当該コードを次回以降に実行する際に、必要先読みブロック数設定部１１４は、実行前の先読みブロック数に消費ブロック数を加算することにより、必要先読みブロック数を設定する。
【００７７】
これにより、例えばインペラ加工時のように同一の加工を繰り返す必要がある場合に、例えば加工毎にいちいち必要先読みブロック数を手入力するような、煩雑な手続きを避けることが可能となる。
【００７８】
また、動作制限部１１６は、工作機械２００の動作の制限として、加工プログラム内で指定される工作機械２００の動作速度を低下させる。
【００７９】
工作機械２００の動作速度を低下させ、この間にプログラム先読み部１１２が加工プログラムを先読みすることにより、先読みブロック数を補充することが可能となる。
【００８０】
また、動作制限部１１６は、工作機械２００の動作の制限として、プログラム実行部１１１に対して、加工プログラムの実行の停止を指示する。
【００８１】
加工プログラムの実行を停止させ、この間にプログラム先読み部１１２が加工プログラムを先読みすることにより、先読みブロック数を補充することが可能となる。
【００８２】
〔５  変形例〕
〔５．１  変形例１〕
上記の実施形態では、動作制限部１１６は、先読みブロック数と必要先読みブロック数とを比較することで、速度制御の異常が発生する可能性の高いブロックを検知し、当該ブロックにおいて先読みブロック数を補充するが、これには限られない。例えば、先読みブロック数の減少率が規定値を超えた時点で、先読みブロック数を補充してもよい。
【００８３】
〔５．２  変形例２〕
また、上記の実施形態においては、加工プログラム内に予め先読みブロック補充コードが挿入されているとしたが、これには限定されない。例えば、数値制御装置１００は、１回目のシミュレーションを実行した際に、先読みブロック数が規定値を下回る「枯渇ブロック」の位置を検知し、この枯渇ブロックに、自動的に先読みブロック補充コードを挿入する「補充コード追加部」を備えてもよい。（なお、本明細書では、「先読みブロック補充コード」の中でも、補充コード追加部によって挿入される「先読みブロック補充コード」を、「第３コード」とも呼称する。）
【００８４】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、本実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、本実施形態に記載されたものに限定されるものではない。
【００８５】
数値制御装置１００による制御方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、コンピュータ（数値制御装置１００）にインストールされる。また、これらのプログラムは、リムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。更に、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータ（数値制御装置１００）に提供されてもよい。
【符号の説明】
【００８６】
１０  制御システム
１００  数値制御装置
１１１  プログラム実行部
１１２  プログラム先読み部
１１３  先読みブロック数算出部
１１４  必要先読みブロック数設定部
１１５  補充コード検知部
１１６  動作制限部
２００  工作機械
【図１】
2020071695.tif 000003
【図２】
2020071695.tif 000004
【図３】
2020071695.tif 000005
【図４】
2020071695.tif 000006
【図５】
2020071695.tif 000007
【図６】
2020071695.tif 000008
【図７】
2020071695.tif 000009
【図８】
2020071695.tif 000010
【図９】
2020071695.tif 000011
【図１０】
2020071695.tif 000012