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