(57)【要約】【課題】運転するＮＣプログラムを切り替えるときに、ＮＣプログラムを運転バッファに転送する際に要する時間を短縮する。【解決手段】本発明の数値制御装置１は、完了信号検出手段によって次に運転するＮＣプログラム番号の入力の完了を検出したときに、プログラム容量算出手段により、現在実行中の加工と並列動作で、次に運転するＮＣプログラムの容量を算出し、空き容量算出手段によって算出される運転バッファの空き容量よりも、プログラム容量算出手段によって算出されるＮＣプログラムの容量が大きい場合に、第１転送手段により、該ＮＣプログラムの先頭から前記運転バッファの空き容量分、該運転バッファに転送するように構成したものである。【選択図】図１
2008108205.tif 000002
【特許請求の範囲】
【請求項１】
工作機械で運転するＮＣプログラムをハードディスク等の記憶装置から運転バッファに転送して加工運転を実行するように構成された数値制御装置において、
次に運転するＮＣプログラム番号を入力する入力手段と、
前記入力手段によってＮＣプログラム番号の入力が完了したことを検出する完了信号検出手段と、
前記運転バッファの空き容量を算出する空き容量算出手段と、
前記完了信号検出手段によって次に運転するＮＣプログラム番号の入力の完了を検出したときに、現在実行中の加工と並列動作で、次に運転するＮＣプログラムの容量を算出するプログラム容量算出手段と、
前記空き容量算出手段によって算出される前記運転バッファの空き容量よりも、前記プログラム容量算出手段によって算出されるＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から前記運転バッファの空き容量分、該運転バッファに転送する第１転送手段と、
前記転送手段によって転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスを記憶するアドレス記憶手段と、
現在実行中のＮＣプログラムの運転が終了したときに、次に運転するＮＣプログラムを前記アドレス記憶手段に記憶されたアドレスに基づいて前記運転バッファに転送する第２転送手段とを
備えたことを特徴とする数値制御装置。
【請求項２】
前記ＮＣプログラムは、メインプログラムとメインプログラムから呼び出されるサブプログラムとから構成されるものであって、前記プログラム容量算出手段は、前記メインプログラムの容量と前記サブプログラムの容量との総和を算出することを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記ＮＣプログラムのプログラム番号とサブプログラム番号とを記憶する記憶手段と、前記第１転送手段によってＮＣプログラムを運転バッファに転送する際、前記サブプログラムのプログラム番号と、該サブプログラム番号の先頭アドレスを対応付けたプログラム管理データを前記記憶手段に記憶させるプログラム管理データ作成手段とを備えたことを特徴とする請求項２に記載の数値制御装置。
【請求項４】
運転するＮＣプログラムをハードディスク等の記憶装置から運転バッファに転送して加工運転を実行するように構成されると共に、パレットの旋回動作と工具交換動作を並列動作で実行するように構成された数値制御装置において、
次パレットのＮＣプログラム番号を入力する入力手段と、
前記入力手段によってＮＣプログラム番号の入力が完了したことを検出する完了信号検出手段と、
前記運転バッファの空き容量を算出する空き容量算出手段と、
前記完了信号検出手段によって次に運転するＮＣプログラム番号の入力の完了を検出したときに、現在実行中の加工パレットの加工と並列動作で、次に運転するＮＣプログラムの容量を算出するプログラム容量算出手段と、
前記空き容量算出手段によって算出される前記運転バッファの空き容量よりも、前記プログラム容量算出手段によって算出されるＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から前記運転バッファの空き容量分、該運転バッファに転送する第１転送手段と、
前記転送手段によって転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスを記憶するアドレス記憶手段と、
最初の工具交換動作に対応するＮＣプログラムが転送されたか否かを判断する転送判断手段と、
最初の工具交換動作に対応するＮＣプログラムが転送されている場合には、現在の加工パレットの加工が終了したときに、パレットの旋回動作と最初の工具交換動作を並列動作で実行する実行手段と、
現在の加工パレットの加工が終了したときに、最初の工具交換動作に対応するＮＣプログラムが転送されている場合には、パレットの旋回動作並びに最初の工具交換動作と並列動作で、次に運転するＮＣプログラムを前記アドレス記憶手段に記憶されたアドレスに基づいて前記運転バッファに転送する第２転送手段とを
備えたことを特徴とする数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、運転するＮＣプログラムをハードディスク等の記憶装置から運転バッファに転送して加工運転を実行するように構成された数値制御装置に関する。
【背景技術】
【０００２】
近年の数値制御装置においては、ハードディスク等の記憶装置を備え、これに多数のＮＣプログラムを記憶させている。しかし、ハードディスクにアクセスしてＮＣプログラムを実行する方式では、アクセスに要する時間が長くなり、時間的なロスの発生が大きい。そこで、ハードディスクへのアクセスをできるだけ少なくする対策が考えられており、その対策の１つの方式として、運転の実行時には、高速にアクセス可能なＲＡＭ（以下、運転バッファと称す）に実行するＮＣプログラムをすべて転送し、該運転バッファからＮＣプログラムをブロック（１つの制御命令）単位毎に読み出して、工作機械及び周辺装置を制御するようにしている。このような運転方式を、「内部メモリ運転」と呼んでいる。
【０００３】
また、ＮＣプログラムのサイズが運転バッファよりも大きい場合には、運転バッファをリングバッファのように使用し、予め先頭から可能な限りＮＣプログラムを転送しておき、運転が進行するにつれ、運転が終了したプログラム部分を消去し、転送できなかった部分のプログラム部分を順次書き込んで（転送して）いくような方式が実現されている。このような運転方式を、「テープ運転」と呼んでいる。このように呼ぶ理由は、かって、紙テープに記憶されたＮＣプログラムを、数値制御装置に通信を介して入力させながら運転した際に、現在のような大容量のＲＡＭがなかったため、同様の運転方式を採用していたためである。尚、上記した２つの運転方式は、例えば特許文献１に記載されている。
【特許文献１】特開平８−２４９０４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記した内部メモリ運転においては、予めＮＣプログラムを運転バッファに転送する際、そのＮＣプログラムを解析し、運転するプログラム（親プログラム）から呼び出されるサブプログラム（子プログラム）や、サブプログラム（子プログラム）から呼び出されるさらなるサブプログラム（孫プログラム）などをすべて予め運転バッファに転送する。更に、それら個々のＮＣプログラム（親、子、孫プログラム）の運転バッファ上の先頭番地などを、ＲＡＭ上に設けたプログラム管理データに記憶させる。これにより、ＮＣプログラム上に、サブプログラムへのサブルーチン呼び出しがあっても、呼び出し先は、運転バッファ内に存在しており、しかも、飛び先の番地もプログラム管理データを参照することにより、時間的遅延なく、次の読み込み番地を決定できる。
【０００５】
しかし、解析した結果、即ち、呼び出されるサブプログラムを含めたＮＣプログラムの総容量が運転バッファを超えている場合には、運転中に運転バッファの全部ないし一部を、テープ運転のように、消去、上書きしながら、運転を実行するようにしている。この場合には、運転中に少なからずハードディスクへアクセスを行なう必要がある。
【０００６】
このため、運転バッファ、即ち、ＲＡＭの容量を大容量化して、可能な限り内部メモリ運転を実行できるようにしている。
しかし、運転バッファを大容量化すると、サブプログラム等の解析処理や運転バッファへの転送処理に要する時間がかなり長くなるという問題点が発生してきている。特に、運転するＮＣプログラムが頻繁に変わるような場合には、運転するＮＣプログラムを切り替えるときに、かなり長い時間がかかり、時間のロスが大きくなるという問題点が発生している。
【０００７】
尚、運転するＮＣプログラムが頻繁に変わるような場合としては、例えば、回転テーブル機において、両側パレットのＮＣプログラムが異なるときに、両方のＮＣプログラムを足したサイズが運転バッファを超えている場合があり、この場合、運転開始時（パレット旋回時）に、毎回、運転するＮＣプログラムを運転バッファに転送（ロード）していた。また、鍵の生産等の加工作業で、１回１回の加工内容が異なる場合も、ＮＣプログラムの選択が外部プログラム選択を使用し、起動時に運転するＮＣプログラムを運転バッファに転送していた。上述した２つの加工作業の場合、ＮＣプログラムの転送にかなりの時間がかかっていた。
【０００８】
そこで、本発明の目的は、運転するＮＣプログラムを切り替えるときに、ＮＣプログラムを運転バッファに転送する際に要する時間を短縮することができる数値制御装置を提供することにある。
【課題を解決するための手段】
【０００９】
本発明の数値制御装置は、工作機械で運転するＮＣプログラムをハードディスク等の記憶装置から運転バッファに転送して加工運転を実行するように構成されたものにおいて、次に運転するＮＣプログラム番号を入力する入力手段と、前記入力手段によってＮＣプログラム番号の入力が完了したことを検出する完了信号検出手段と、前記運転バッファの空き容量を算出する空き容量算出手段と、前記完了信号検出手段によって次に運転するＮＣプログラム番号の入力の完了を検出したときに、現在実行中の加工と並列動作で、次に運転するＮＣプログラムの容量を算出するプログラム容量算出手段と、前記空き容量算出手段によって算出される前記運転バッファの空き容量よりも、前記プログラム容量算出手段によって算出されるＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から前記運転バッファの空き容量分、該運転バッファに転送する第１転送手段と、前記転送手段によって転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスを記憶するアドレス記憶手段と、現在実行中のＮＣプログラムの運転が終了したときに、次に運転するＮＣプログラムを前記アドレス記憶手段に記憶されたアドレスに基づいて前記運転バッファに転送する第２転送手段とを備えたところに特徴を有する。
【００１０】
また、上記構成の場合、前記ＮＣプログラムは、メインプログラムとメインプログラムから呼び出されるサブプログラムとから構成されるものであって、前記プログラム容量算出手段は、前記メインプログラムの容量と前記サブプログラムの容量との総和を算出するように構成されていることが好ましい。
【００１１】
更に、前記ＮＣプログラムのプログラム番号とサブプログラム番号とを記憶する記憶手段と、前記第１転送手段によってＮＣプログラムを運転バッファに転送する際、前記サブプログラムのプログラム番号と、該サブプログラム番号の先頭アドレスを対応付けたプログラム管理データを前記記憶手段に記憶させるプログラム管理データ作成手段とを備えることがより一層好ましい構成である。
【００１２】
本発明の他の数値制御装置は、運転するＮＣプログラムをハードディスク等の記憶装置から運転バッファに転送して加工運転を実行するように構成されると共に、パレットの旋回動作と工具交換動作を並列動作で実行するように構成されたものにおいて、次パレットのＮＣプログラム番号を入力する入力手段と、前記入力手段によってＮＣプログラム番号の入力が完了したことを検出する完了信号検出手段と、前記運転バッファの空き容量を算出する空き容量算出手段と、前記完了信号検出手段によって次に運転するＮＣプログラム番号の入力の完了を検出したときに、現在実行中の加工パレットの加工と並列動作で、次に運転するＮＣプログラムの容量を算出するプログラム容量算出手段と、前記空き容量算出手段によって算出される前記運転バッファの空き容量よりも、前記プログラム容量算出手段によって算出されるＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から前記運転バッファの空き容量分、該運転バッファに転送する第１転送手段と、前記転送手段によって転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスを記憶するアドレス記憶手段と、最初の工具交換動作に対応するＮＣプログラムが転送されたか否かを判断する転送判断手段と、最初の工具交換動作に対応するＮＣプログラムが転送されている場合には、現在の加工パレットの加工が終了したときに、パレットの旋回動作と最初の工具交換動作を並列動作で実行する実行手段と、現在の加工パレットの加工が終了したときに、最初の工具交換動作に対応するＮＣプログラムが転送されている場合には、パレットの旋回動作並びに最初の工具交換動作と並列動作で、次に運転するＮＣプログラムを前記アドレス記憶手段に記憶されたアドレスに基づいて前記運転バッファに転送する第２転送手段とを備えたところに特徴を有する。
【発明の効果】
【００１３】
本発明は、完了信号検出手段によって次に運転するＮＣプログラム番号の入力の完了を検出したときに、プログラム容量算出手段により、現在実行中の加工と並列動作で、次に運転するＮＣプログラムの容量を算出し、空き容量算出手段によって算出される運転バッファの空き容量よりも、プログラム容量算出手段によって算出されるＮＣプログラムの容量が大きい場合に、第１転送手段により、該ＮＣプログラムの先頭から前記運転バッファの空き容量分、該運転バッファに転送するように構成したので、運転するＮＣプログラムを切り替えるときに、ＮＣプログラムを運転バッファに転送する際に要する時間を短縮することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の一実施例である数値制御装置について、図面を参照しながら説明する。本実施例の数値制御装置（ＮＣ装置）１は、図２に示す工作機械２に接続されて、該工作機械２を数値制御するものである。この工作機械２は、パレットに取り付けられたワークを主軸３に取り付けられたドリルやタップ等の工具４で加工するものである。
【００１５】
上記工作機械２は、ＸＹ軸移動装置５，Ｚ軸移動装置６，主軸回転装置７，工具交換装置８，パレット交換装置９等から構成されている。ＸＹ軸移動装置５は、Ｘ軸モータ１０とＹ軸モータ１１とをそれぞれ駆動源とし、工具４をワークに対して主軸の方向（以下、Ｚ軸方向という。図２中において、上下方向と一致する）に直角なＸ軸方向とＹ軸方向とにそれぞれ相対的に移動させる。Ｚ軸移動装置６は、Ｚ軸モータ１２を駆動源とし、工具４をワークに対してＺ軸方向に相対的に移動させる。
【００１６】
主軸回転装置７は、主軸モータ１３を駆動源として主軸３を回転させ、これにより工具４を回転させる。工具交換装置８は、マガジンモータ１４により旋回させられる工具マガジン１５を有し、多数の工具４を工具マガジン１５の複数の工具ポットにおいて着脱自在に収納保持し、それら工具４の一つを主軸３に装着するための工具交換可能な位置への割出しを行う。更に、工具交換装置８は、主軸３から工具４を外して工具マガジン１５に戻した後、上記割り出された工具４を主軸３に装着する。
【００１７】
パレット交換装置９は、パレット交換モータ（以下、単にＣ軸モータという）１６を駆動源として水平なテーブル１７をＺ軸に平行な軸線の回りに間欠的に回転させるものであり、テーブル１７を１８０度ずつ回転させることにより、そのテーブル１７の、回転軸線に関して対称な２部分のうち図２において左側の部分である第１パレット（加工パレット）１８と右側の部分である第２パレット（加工パレット）１９とのそれぞれの位置を交互に交換するものである。
【００１８】
図２に示す状態の場合、第１パレット１８は、作業者により開閉可能な扉２０を経て作業者によるワークの着脱が行われる着脱位置にあり（以降、着脱位置にあるパレットを、外側パレットと称す）、第２パレット１９は、工具４によるワークの加工が行われる加工位置にある（以降、加工位置にあるパレットを、内側パレットと称す）。この状態で、テーブル１７が１８０度だけ回転させられることにより、第１パレット１８は加工位置に、第２パレット１９は着脱位置にそれぞれ移動させられることになる。
【００１９】
上記構成の場合、パレット交換装置９をワーク交換装置と称しても良く、また、工作機械２のうちのパレット交換装置９を除く部分をワーク加工装置と称しても良い。
さて、数値制御装置１は、図２に示すように、工作機械２の後部に取り付けられている。この数値制御装置１について、図１に示すブロック図を参照して説明する。数値制御装置１は、コンピュータを主体として構成されており、図１に示すように、複数のＣＰＵ、即ち、第１のＣＰＵ２１と第２のＣＰＵ２２を備えている。
【００２０】
第１のＣＰＵ２１は、数値制御のＮＣプログラムを管理する制御を実行するものであり、この第１のＣＰＵ２１には、ＲＡＭ２３と、不揮発メモリ２４と、ＲＡＭ２５と、リムーバブルディスク２６とが接続されている。ＲＡＭ２３には、一時的な演算の中間データを保持（記憶）させる。不揮発メモリ２４は、フラッシュメモリ等で構成された記憶装置であり、これには、第１のＣＰＵ２１の制御プログラム（制御コード）と大量のＮＣプログラムを記憶（保有）させている。
【００２１】
リムーバブルディスク２６は、着脱可能なハードディスクであり、記憶装置を構成しており、これには、ユーザーが新たに作成した大量のＮＣプログラムを記憶させておくことができる。第１のＣＰＵ２１の転送処理によって、リムーバブルディスク２６内のユーザーのＮＣプログラムを不揮発メモリ２４へ転送する。
【００２２】
また、ＲＡＭ２５は、第１のＣＰＵ２１と第２のＣＰＵ２２との双方からリード・ライト可能なＲＡＭであり、このＲＡＭ２５は、第１のＣＰＵ２１と第２のＣＰＵ２２のデータのやり取りに使用される。特に、上記ＲＡＭ２５内には、運転するＮＣプログラムを転送して記憶させておく領域、即ち、運転バッファの領域が確保されている。上記ＲＡＭ２５が、記憶手段及びアドレス記憶手段を構成している。
【００２３】
第１のＣＰＵ２１は、不揮発メモリ２４内のＮＣプログラムの中から、運転するＮＣプログラムを選び出しＲＡＭ２５内の運転バッファへ転送する機能を有している。上記第１のＣＰＵ２１が、空き容量算出手段、プログラム容量算出手段、第１転送手段及び第２転送手段としての各機能を有している。
【００２４】
一方、第２のＣＰＵ２２は、数値制御装置１の運転全般を制御する機能を有しており、ＲＡＭ２５の運転バッファ内のＮＣプログラムを解析し、動力系の信号へ変換し出力する制御を実行する。この第２のＣＰＵ２２が、転送判断手段及び実行手段としての各機能を有している。上記第２のＣＰＵ２２には、上記ＲＡＭ２５の他に、ＲＡＭ２７と、ＲＯＭ２８と、動力系ＩＦ２９と、外部入出力ＩＦ３０とが接続されている。
【００２５】
ＲＡＭ２７には、一時的な演算の中間データが記憶（保持）され、ＲＯＭ２８には、第２のＣＰＵ２２の制御プログラム（制御コード）が記憶されている。動力系ＩＦ２９には、ＸＹＺ軸の各モータ１０、１１、１２や、主軸モータ１３や、工具交換用のマガジンモータ１４や、パレット交換モータ１６等が接続されている（図１にはこれらのモータを図示していない）。
【００２６】
外部入出力ＩＦ３０には、ワーク交換機構３５と、ＮＣプログラムスケジュール装置３６とが接続されている。そして、外部入出力ＩＦ３０は、外側起動スイッチ３１と、次プログラム番号入力端子３２と、次プログラムready端子３３と、次プログラム要求端子３４とを有している。上記外部入出力ＩＦ３０が、入力手段及び完了信号検出手段としての各機能を有している。
【００２７】
外側起動スイッチ３１は、ワーク交換機構３５により、外側パレットにおいて加工済のワークの取り外し作業と新しいワークの取り付け作業が終了すると、その旨を示すために、例えばＯＮされるようになっている。尚、ワーク交換機構３５は、作業者またはロボット等で構成されている。
【００２８】
次プログラム番号入力端子３２には、ＮＣプログラムスケジュール装置３６から、次に運転するＮＣプログラムのＮＣプログラム番号を示すデータ（ＮＣプログラム番号を入力可能なbit数のデータ）が入力可能なように構成されている。次プログラムready端子３３は、ＮＣプログラムスケジュール装置３６から、次に運転するＮＣプログラムのＮＣプログラム番号を示すデータの上記次プログラム番号入力端子３２への入力が完了したとき、そのことを示すために、例えばＯＮされる（ＯＮ信号が入力される）ようになっている。
【００２９】
また、次プログラム要求端子３４は、ＮＣプログラムスケジュール装置３６に対して、次プログラム番号入力端子３２へ次に運転するプログラム番号の入力と、次プログラムready端子３３のセット（ＯＮ）を要求するときに、例えばＯＮされる（ＯＮ信号が出力される）ように構成されている。尚、ＮＣプログラムスケジュール装置３６は、外部のシーケンサ等の機器で構成しても良いし、数値制御装置１の内部に設けるように構成しても良い。
【００３０】
次に、上記した構成の数値制御装置１の動作について、図３ないし図１６を参照しながら説明する。
図３及び図４のフローチャートは、第２のＣＰＵ２２の運転の制御内容を示しており、最初に、運転するＮＣプログラムの取得、及び、運転するＮＣプログラム番号の取得についての制御を行なう。
【００３１】
まず、図３のステップＳ２０１において、始めに運転するべきＮＣプログラムを求めるため、後述する図５の制御動作（第２のＣＰＵ２２の制御のうち、図３、４の内の「“次プログラム要求”の出力」が発生してから、並列処理する制御）を起動（稼動）させる。尚、このステップＳ２０１は、電源を入れてから１回目の運転の前に実行されるだけである。
【００３２】
この後、「プログラム番号取得」フラグがＯＮ（図５のステップＳ３０８参照）するまで待つ（ステップＳ２０２）。
そして、「プログラム番号取得」のフラグがＯＮしたら（ステップＳ２０２にてＹＥＳ）、「プログラム転送完了」フラグがＯＦＦのときだけ（ステップＳ２０２にてＮＯ）、運転するＮＣプログラム番号と共に、「プログラム転送」フラグをＯＮしたことを、ＲＡＭ２５を介して第１のＣＰＵ２１へ伝達する（ステップＳ２０４）。
【００３３】
その後、外側起動スィッチ３１がＯＮするまで待つ（ステップＳ２０５）。通常の加工サイクル（加工を連続して行う）では、内側パレットで加工している間に、ワーク交換機構３５により、ワークの取替えが行われ、外側起動スィッチ３１がＯＮとなるように工程が実行されるので、ここでの待ち時間は無い。
【００３４】
次に、外側起動スィッチ３１がＯＮしていれば（ステップＳ２０５にてＹＥＳ）、並列動作命令（特開平５−３１３７１９号公報参照）が設定されているかを判断する（ステップＳ２０６）。ここで、並列動作命令の設定が無い場合（ステップＳ２０６にてＮＯ）には、準備された外側パレットを加工装置へ移動させるため、パレット交換装置９の旋回要求を、図示しないパレットの制御動作へ出力する（ステップＳ２１３）。
【００３５】
これに対して、並列動作命令の設定が有る場合（ステップＳ２０６にてＹＥＳ）、「並列動作転送完了」フラグがＯＮ（図５のステップＳ３０６、図７のステップＳ５０７、図１１のステップＳ９０６参照）されるのを待つ（ステップＳ２０７）。尚、並列動作命令とは、ＮＣプログラム内にある、パレット交換装置９の旋回と同時動作を行う命令のことで、予め数値制御装置１に登録しておく。多くは、ＮＣプログラムの先頭から最初に行われる工具交換命令（ＮＣプログラム上の“Ｍ６”コード）を登録することが多い。
【００３６】
上記「並列動作転送完了」フラグがＯＮしたら、ＮＣプログラムを１ブロック読み込み、運転バッファ上のＮＣプログラムの＜読み込み位置＞を、読み込んだブロックの終端の次アドレスへ設定する（ステップＳ２０８）。
【００３７】
尚、＜読み込み位置＞とは、第２のＣＰＵ２２が運転バッファから１ブロック読み込むとき（図３のステップＳ２０８、図４のステップＳ２１８参照）、読むべきブロックの先頭アドレスのことである。ステップＳ２０５を実行開始してから、最初のブロックを読む際には、図１２に示すプログラム管理データの一番上のＮＣプログラムの親プログラムのアドレス（図１２のＡ０（Ａ列０行））を参照し、そこが初期の＜読み込み位置＞となる。プログラム管理データは、ＲＡＭ２５内に設けられており、図１２に示すような形態に構成されている。
【００３８】
プログラム管理データのＡの列には、運転するＮＣプログラム番号が入っている。また、一番上の行（０行）には、運転するＮＣプログラムの親プログラムが入り、Ｂの列には、運転バッファ内の親プログラムの絶対位置のアドレスが入る。２番目の行以降は、運転するＮＣプログラムのサブプログラムが入り、Ａの列には、サブプログラムの番号、Ｂの列には運転バッファ内の親プログラム先頭からみて、おのおののサブプログラムの先頭への相対アドレスが入る。また、最後の行（Ｔ行）のＡ列には、サブプログラムも含めたＮＣプログラム全ての総文字数が、Ｂ列には、最初の並列動作命令があるブロックの先頭アドレスが入っている。
【００３９】
次に、前ブロックの動作完了を得る（Ｓ２１１の動作が終了する、ただし、Ｓ２０５を開始して１回目は動作完了とする）まで待つ（ステップＳ２０９）。前ブロックの動作が完了した場合（ステップＳ２０９にてＹＥＳ）、ステップＳ２０８にて読んだブロックが並列動作命令であるか否かを判断する（ステップＳ２１０）。ここで、並列動作命令でない場合（ステップＳ２１０にてＮＯ）には、ブロックの命令に従った動作の開始を、即ち、図示しない、おのおのの制御動作の実行を指示する（ステップＳ２１１）。
【００４０】
一方、ステップＳ２０８で読んだブロックが並列動作命令であるならば（ステップＳ２１０にてＹＥＳ）、パレット交換装置９の旋回の開始と、並列動作命令の開始を指示する、即ち、おのおのの制御動作の実行を指示する（ステップＳ２１２）。
【００４１】
続いて、図４のステップＳ２１４へ進み、ステップＳ２０４で要求した「プログラム転送」の要求の完了信号である「プログラム転送完了」フラグがＯＮ（図５のステップＳ３０６、図７のステップＳ５０７、図１１のステップＳ９０８参照）するまで待つ。つまり、第２のＣＰＵ２２がステップＳ２０３からステップＳ２１２の処理を行っている間に、第１のＣＰＵ２１が「プログラム転送」の要求に応える処理を実行することとなる。
【００４２】
そして、「並列動作転送完了」フラグ、「プログラム番号の取得」フラグ、「プログラム転送完了」フラグをすべてＯＦＦし、次のパレット（ステップＳ２１２、Ｓ２１３で外側へ搬出した外側パレット）用のＮＣプログラムの取得状態を初期化する（ステップＳ２１５）。
【００４３】
続いて、外側パレットが加工位置に移動して、ワークを加工するときに運転するＮＣプログラムを求めるために、後述する図５の制御動作を起動させる（ステップＳ２１６）。
そして、ＮＣプログラムの次の＜読み込み位置＞が運転バッファ内にあるか否かを判断する（ステップＳ２１７）。ここで、次の＜読み込み位置＞が運転バッファ内にある場合（ステップＳ２１７にてＹＥＳ）、ＮＣプログラムを１ブロック読み込み、＜読み込み位置＞をブロックの終端の次アドレスへ設定する（ステップＳ２１８）。尚、ステップＳ２０５を実行開始してからステップＳ２１３までを実行した後、最初のブロックを読む際には、プログラム管理データ（図１２参照）の一番上の親プログラムのアドレスを参照し、そこが＜読み込み位置＞となる。
【００４４】
次に、前ブロック（指示された１つ前の制御動作、Ｓ２１３、Ｓ２１２ないしＳ２２１で指示された動作）が動作完了（動作終了）するまで待つ（ステップＳ２１９）。前ブロックの動作が完了した場合（ステップＳ２１９にてＹＥＳ）、ステップＳ２１８で読んだブロックがプログラムエンド命令であるか否かを判断する（ステップＳ２２０）。ここで、プログラムエンド命令の場合（ステップＳ２２０にてＹＥＳ）には、次のパレットの運転を開始する、即ち、図３のステップＳ２０２へ戻る（遷移する）。
【００４５】
また、ステップＳ２１８で読んだブロックの命令が、プログラムエンド命令以外である場合（ステップＳ２２０にてＮＯ）、ブロックの命令に従った動作の開始をおのおのの制御動作へ指示し、ワークに加工を施す（ステップＳ２２１）。この後、現在運転をしているＮＣプログラムがテープ運転であるか否かを判断し、テープ運転でなければ（ステップＳ２２２にてＮＯ）、ステップＳ２１７へ戻り、処理を繰り返し実行する。
【００４６】
また、上記ステップＳ２２０において、ステップＳ２１８で読んだブロックの命令が、サブプログラムへの遷移命令の場合、プログラム管理データ上のプログラム番号に対応する、アドレス（図１２のＢ列）を読み込み、親プログラムのアドレス（図１２の０行Ａ列の値）から加算した位置（リングバッファを加味した位置）に＜読み込み位置＞を更新する。
【００４７】
また、サブプログラムへの遷移命令のとき、その元の＜読み込み位置＞をＲＡＭ２５へスタックしておき、その後、親プログラムに戻る指令の場合には、スタックしたものを＜読み込み位置＞に戻す。ここにおいて、サブプログラムが、プログラム管理データ上に無い場合には、＜読み込み位置＞が領域内にないとし、ステップＳ２１７へ戻った際、＜読み込み位置＞が運転バッファ内に無い（ステップＳ２１７にてＮＯ）となる。
【００４８】
そして、読み込むブロックが運転バッファ内に無い場合（ステップＳ２１７にてＮＯ）、及び、テープ運転の場合（ステップＳ２２２にてＹＥＳ）、ステップＳ２２３へ進み、「プログラム領域」フラグをＯＮして、第１のＣＰＵ２１に対して、サブプログラムの要求の場合には、サブプログラムの要求と共に、転送して欲しいサブプログラム番号を、ＲＡＭ２５を介して伝達し、テープ運転の場合には、転送されていない部分の転送の要求と共に、開放してよい運転バッファの領域を、ＲＡＭ２５を介して伝達する。
【００４９】
次に、図５のフローチャートは、図３及び図４の制御とは別に第２のＣＰＵ２２で並列稼動（処理）する制御の内容を示している。ここでの並列処理とは、第２のＣＰＵ２２の処理資源を、リアルタイムＯＳなどにより、図３及び図４の制御と図５の処理とを短い時間間隔で分割して行い実現すれば良い。この図５の制御は、図３のステップＳ２０１及び図４のステップＳ２１６を開始トリガとして、起動されて実行される。
【００５０】
即ち、図３のステップＳ２０１及び図４のステップＳ２１６から起動された直後、ＮＣプログラムスケジュール装置３６に対して、次プログラム要求端子３４をＯＮする（ステップＳ３０１）。続いて、“次プログラムready”端子３３がＯＮされる（ＯＮ信号あり）まで待つ（ステップＳ３０２）。これに対して、ＮＣプログラムスケジュール装置３６は、次プログラム要求端子３４のＯＮを受けて、次に運転するべきＮＣプログラムのＮＣプログラム番号を次プログラム番号入力端子３２に出力する共に、次プログラムready端子３３をＯＮする。
【００５１】
すると、第２のＣＰＵ２２においては、上記次プログラムready端子３３のＯＮを受けて、ステップＳ３０２にてＹＥＳへ進み、次プログラム番号入力端子３２を読み取り（ステップＳ３０３）、次プログラム要求端子３４をＯＦＦする（ステップＳ３０４）。これに対して、ＮＣプログラムスケジュール装置３６は、次プログラム要求端子３４のＯＦＦを受けて、次プログラムready端子３３をＯＦＦする。
【００５２】
この後、第２のＣＰＵ２２においては、ステップＳ３０３で得たプログラム番号が、既に親プログラムとして、運転バッファに登録（転送）されているかどうか判断する（ステップＳ３０５）。ここで、プログラム管理データは、ＲＡＭ２５上にパレットの数（２つ）だけ存在し、テープ運転の場合を除き、運転バッファのプログラム管理データに登録されているＮＣプログラムが上書きされた場合、プログラム管理データも第１のＣＰＵ２１によって初期化される。よって、プログラム管理データを参照すれば、運転バッファ内にＮＣプログラムが存在するか否かを判断できる。例えば、両パレットのＮＣプログラムが運転バッファに全て収まっている場合、パレット毎のＮＣプログラム番号が変わらない限り、運転バッファに登録されたままとなる。
【００５３】
さて、次に運転するＮＣプログラムが既に運転バッファにある場合（ステップＳ３０５にてＹＥＳ）には、「並列動作転送完了」フラグと「プログラム転送完了」フラグとをＯＮする（ステップＳ３０６）。
【００５４】
一方、運転バッファに登録されていない場合（ステップＳ３０５にてＮＯ）には、「並列動作転送完了」フラグと「プログラム転送完了」フラグとをＯＦＦし、「次プログラム準備」フラグをＯＮし、ステップＳ３０３で得たプログラム番号と共に、「次プログラム準備」フラグのＯＮを、ＲＡＭ２５を介して第１のＣＰＵ２１に伝達する（ステップＳ３０７）。続いて、ステップＳ３０８へ進み、最後に、「プログラム番号取得フラグ」をＯＮして図５の制御を終了する（ステップＳ３０８）。
【００５５】
さて、図６のフローチャートは、第１のＣＰＵ２１の制御の内容を示すものであり、特には、第２のＣＰＵ２２から、ステップＳ２０４の「プログラム転送」フラグのＯＮ、ステップＳ２２３の「プログラム領域」フラグのＯＮ、及び、ステップＳ３０７の「次プログラム準備」フラグのＯＮ、即ち、「プログラム転送」、「プログラム領域」、及び、「次プログラム準備」の各要求がＲＡＭ２５を介して第１のＣＰＵ２１に伝達されたかどうかを定常的に監視し、要求に応えるように動作する制御を示している。
【００５６】
まず、ステップＳ４０１において、「プログラム転送」フラグがＯＮしているか否かを判断する。ここで、「プログラム転送」フラグがＯＮしていれば、即ち、「プログラム転送」要求があれば（ステップＳ４０１にてＹＥＳ）、後述する図７のサブルーチンを実行する（ステップＳ４０４）。尚、図７のサブルーチンの実行が完了すると、ステップＳ４０１へ戻る。
【００５７】
続いて、「プログラム転送」フラグがＯＮしていなければ（ステップＳ４０１にてＮＯ）、「プログラム領域」フラグがＯＮしているか否かを判断する（ステップＳ４０２）。ここで、「プログラム領域」フラグがＯＮしていれば、即ち、「プログラム領域」要求があれば（ステップＳ４０２にてＹＥＳ）、図８のサブルーチンを実行する（ステップＳ４０５）。尚、図８のサブルーチンの実行が完了すると、ステップＳ４０１へ戻る。
【００５８】
そして、「プログラム領域」フラグがＯＮしていなければ（ステップＳ４０２にてＮＯ）、「次プログラム準備」フラグがＯＮしているか否かを判断する（ステップＳ４０３）。ここで、「次プログラム準備」フラグがＯＮしていれば、即ち、「次プログラム準備」要求があれば（ステップＳ４０３にてＹＥＳ）、図９のサブルーチンを実行する（ステップＳ４０６）。尚、図９のサブルーチンの実行が完了すると、ステップＳ４０１へ戻る。
【００５９】
次に、図７のフローチャートで示すサブルーチンについて、即ち、第２のＣＰＵ２２からの「プログラム転送」要求に応える第１のＣＰＵ２１の制御について説明する。
まず、図７のステップＳ５０１においては、ステップＳ２０４によってセットされたＮＣプログラム番号（親プログラム番号）をＲＡＭ２５から得る。続いて、上記ステップＳ５０１で得た親プログラム番号に対応する＜解析終了＞フラグがＯＦＦしているか否かを判断する（ステップＳ５０２）。
【００６０】
ここで、＜解析終了＞フラグがＯＦＦしていれば（ステップＳ５０２にてＹＥＳ）、プログラムの解析を行う、即ち、後述する図１０のサブルーチンを実行する（ステップＳ５１１）。＜解析終了＞フラグは、親プログラムの番号毎に保有（確保）されている。また、＜解析終了＞フラグがＯＮしている親プログラムは、ＲＡＭ２３、ＲＡＭ２５、不揮発メモリ２４のいずれかに、対応するプログラム管理データが保有（作成）されている。尚、一度、図１０の制御が実行されると、＜解析終了＞フラグがＯＮ（図１０のステップＳ８１１参照）し、第２のＣＰＵ２２が使用するＲＡＭ２５上のプログラム管理データを作成すると共に、前記バックアップデータへも複写する。また、図示しないが、対応するプログラム管理データ上のＮＣプログラムの１つが、中身が変更されたときや、対応するプログラム管理データが初期化されたときなどに、＜解析終了＞フラグがＯＦＦされ、対応するプログラム管理データのバックアップデータも削除されるようになっている。
【００６１】
一方、ステップＳ５０２において、上記ステップＳ５０１で得た親プログラム番号に対応する＜解析終了＞フラグがＯＮしていれば（ステップＳ５０２にてＮＯ）、現在の＜転送位置＞を得る（ステップＳ５０３）。ここで、＜転送位置＞とは、第１のＣＰＵ２１が次にＮＣプログラムを転送する運転バッファの位置を示すアドレスのことである。
【００６２】
続いて、ステップＳ５０４へ進み、サブプログラムを含めた全てのＮＣプログラムが運転バッファに転送されているか否かを判断する。この場合、既に転送したＮＣプログラムの文字数と、プログラム管理データ上にあるＮＣプログラム全ての総文字数とを比較して、同じであれば、全てのＮＣプログラムが運転バッファに転送されたと判断する。
【００６３】
そして、ステップＳ５１１のプログラム解析後（図１０のサブルーチンを実行した後）、または、ＮＣプログラムの転送が全て終わっていない（ステップＳ５０４にてＹＥＳ）の場合、ステップＳ５０５へ進み、＜転送位置＞から、可能な限り（プログラム管理データのアドレスの１つ前まで）、続きのＮＣプログラムを運転バッファに転送する。尚、ここで全てを転送できない場合は、テープ運転のときのみである。
【００６４】
続いて、＜転送位置＞を、ステップＳ５０５で運転バッファに転送した最終番地の次のアドレスとするように更新する（ステップＳ５０６）。
そして、「プログラム転送」フラグと「プログラム領域」フラグをＯＦＦし、「プログラム転送完了」フラグと「並列動作転送完了」フラグをＯＮし、「プログラム転送」処理の完了を第２のＣＰＵ２２へ伝達する（ステップＳ５０７）。これにより、図７のサブルーチンを終了し、呼び出しステップへ戻るようになっている。
【００６５】
尚、上記ステップＳ５０４において、ＮＣプログラムの転送が全て終わっている（ステップＳ５０４にてＮＯ）場合も、上記ステップＳ５０７へ進む。
次に、図１０のサブルーチン（ＮＣプログラム解析処理）について説明する。この図１０のサブルーチンは、次に運転するＮＣプログラムが、テープ運転か、内部メモリ運転かを判断し、対応するプログラム管理データを作成する制御（第１のＣＰＵ２１の制御）である。
【００６６】
まず、ステップＳ８０１において、親プログラムのサイズと、運転バッファを比較する。ここで、親プログラムのサイズよりも運転バッファが大きい場合（ステップＳ８０１にてＹＥＳ）、ステップＳ８０２へ進み、ＮＣプログラムを解析し、ＮＣプログラム内に記述されてある全てのサブプログラム番号を抽出する。
【００６７】
この場合、図１３に示すように、ＮＣプログラム内にあるサブプログラムコード（Ｍ９８）を探し出し、対応するＮＣプログラム番号（Ｐのあとの数字）をサブプログラムとして抽出する。また、抽出されたサブプログラムについても、また同様にして、その内部にあるサブプログラムコード（Ｍ９８）を探し出し、孫プログラムを抽出していくように構成されている。
【００６８】
続いて、ステップＳ８０３へ進み、抽出されたサブプログラム全てを含むＮＣプログラム容量（総プログラム容量）と、運転バッファを比較する。ここで、運転バッファが総プログラム容量より小さい場合（ステップＳ８０３にてＮＯ）、並びに、運転バッファが親プログラムのサイズより小さい場合（ステップＳ８０１にてＮＯ）、ステップＳ８０７へ進み、親プログラムだけのプログラム管理データをＲＡＭ２５上に作成し、親プログラム番号のみをプログラム管理データに登録し、プログラム管理データのバックアップデータとして、ＲＡＭ２３、ＲＡＭ２５、不揮発性メモリ２４のいずれかに複写する。そして、このＮＣプログラムについてはテープ運転とする（ステップＳ８０８）。
【００６９】
一方、抽出された全てのＮＣプログラムが運転バッファに入る場合（ステップＳ８０３にてＹＥＳ）、全てのＮＣプログラム番号と、ファイルをつなげた形で、親プログラムからそれぞれのＮＣプログラムの先頭番地の差と、全てのＮＣプログラムの総文字数をＲＡＭ２５上のプログラム管理データに登録し、プログラム管理データのバックアップデータとして、ＲＡＭ２３、ＲＡＭ２５、不揮発性メモリ２４のいずれかに複写する（ステップＳ８０５）。そして、このＮＣプログラムについては内部メモリ運転とする（ステップＳ８０６）。
【００７０】
続いて、並列動作命令の設定が有るか否かを判断する（ステップＳ８０９）。ここで、並列動作命令の設定が有る場合（ステップＳ８０９にてＹＥＳ）、親プログラム先頭から、最初の並列動作命令をサーチし、その位置を、プログラム管理データの一番最後の枠のアドレスに、先頭からの差分位置を登録する（ステップＳ８１０）。このとき、プログラム管理データのバックアップデータ側へも登録する。そして、解析終了フラグをＯＮする（ステップＳ８１１）。これにて、図１０のサブルーチンを終了し、呼び出しステップへ戻る。
【００７１】
次に、図８のフローチャートで示すサブルーチンについて、即ち、第２のＣＰＵ２２からの「プログラム領域」要求に応える第１のＣＰＵ２１の制御について説明する。
まず、図８のステップＳ６０１においては、要求情報を得る、具体的には、ステップＳ２２３によってセットされた転送して欲しいサブプログラム番号や開放領域を、ＲＡＭ２５から読み込んで獲得し、また、ステップＳ５０６（またはステップＳ６０７）でセットされた＜転送位置＞を得る。
【００７２】
続いて、ステップＳ６０２へ進み、要求が、テープ運転更新であるか否かを判断する。ここで、テープ運転更新以外、つまり、サブプログラム更新の場合（ステップＳ６０２にてＮＯ）、運転バッファの例外領域に要求されたサブプログラムを転送する（ステップＳ６０５）。
【００７３】
上記例外領域とは、運転バッファ内に予め別領域として確保する領域であり（図１４参照）、パラメータなどでその量を設定できる。通常は、内部メモリ運転において動的にサブプログラム番号が確定するような構文を組んだり、テープ運転においてサブプログラグラムの遷移命令があったときに、このエリアにサブプログラムを転送して行う。
【００７４】
一方、要求が、テープ運転更新である場合、即ち、テープ運転の続きのプログラムが要求されている場合（ステップＳ６０２にてＹＥＳ）、ステップＳ６０３へ進み、全ての転送が完了した（送るデータが無くなった）かどうかを判断する。
【００７５】
ここで、全ての転送が完了していない場合（ステップＳ６０３にてＮＯ）には、開放領域に、＜転送位置＞からＮＣプログラム（ＮＣプログラムの続き）を書き込む（ステップＳ６０６）。尚、ステップＳ６０５またはステップＳ６０６を実行した後は、＜転送位置＞を更新する、即ち、＜転送位置＞を、ステップＳ６０５またはステップＳ６０６で転送した最終番地の次アドレスとする（ステップＳ６０７）。
【００７６】
一方、上記ステップＳ６０３において、全ての転送が完了した場合（ステップＳ６０３にてＹＥＳ）、図１１のサブルーチンを実行し、次パレットのＮＣプログラムを転送する（ステップＳ６１１）。そして、「プログラム領域」フラグをＯＦＦする（ステップＳ６０８）。これにより、上記サブルーチンを終了し、呼び出しステップへ戻るようになっている。
【００７７】
次に、図１１のサブルーチン（プログラム転送処理）について説明する。この図１１のサブルーチンは、次パレットのＮＣプログラムを運転バッファへ転送する制御（第１のＣＰＵ２１の制御）である。
【００７８】
まず、ステップＳ９０１において、＜転送位置＞を読み込んで得る。続いて、現在運転しているＮＣプログラムが消えないように、運転バッファの空き容量を計算する（ステップＳ９０２）。そして、運転バッファの空き容量に次のプログラムを可能な限り転送し（ステップＳ９０３）、空き容量の最後の次の位置を＜転送位置＞として記憶する（ステップＳ９０４）。また、このとき、ＲＡＭ２５に転送するＮＣプログラムに対応するプログラム管理データが無い場合には、ＲＡＭ２３、ＲＡＭ２５、不揮発メモリ２４のプログラム管理データのバックアップデータから、ＲＡＭ２５のプログラム管理データへ複写する。また、ＲＡＭ２５のプログラム管理データに、転送するＮＣプログラムに対応する親プログラムのアドレス（図１２のＡ０（Ａ列０行））が登録されていない場合には、転送を始めた＜転送位置＞を、プログラム管理データの親プログラムのアドレス（図１２のＡ０（Ａ列０行））へ書き込む。
【００７９】
続いて、ステップＳ９０５へ進み、並列動作命令の設定が有るか否かを判断する。ここで、並列動作命令の設定が有る場合（ステップＳ９０５にてＹＥＳ）、ステップＳ９０３の転送処理において、並列動作命令が転送されたか否かを判断して、転送されているならば、「並列動作転送完了」フラグをＯＮする（ステップＳ９０６）。
【００８０】
この後、ステップＳ９０７へ進み、ＮＣプログラムを全て転送できたか否かを判断する。ここで、ＮＣプログラムを全て転送できた場合（ステップＳ９０７にてＹＥＳ）、「プログラム転送完了」フラグをＯＮする（ステップＳ９０８）。これにより、図１１のサブルーチンを終了し、呼び出しステップへ戻る。
【００８１】
次に、図９のフローチャートで示すサブルーチンについて、即ち、第２のＣＰＵ２２からの「次プログラム準備」要求に応える第１のＣＰＵ２１の制御について説明する。
まず、図９のステップＳ７０１においては、ステップＳ３０５によってセットされた次のパレットの親プログラム番号をＲＡＭ２５から読む。続いて、上記ステップＳ７０１で得た親プログラム番号に対応する＜解析終了＞フラグがＯＦＦしているか否かを判断する（ステップＳ７０２）。ここで、＜解析終了＞フラグがＯＦＦしていれば（ステップＳ７０２にてＹＥＳ）、プログラムの解析を行う、即ち、前述した図１０のサブルーチンを実行する（ステップＳ７１１）。
【００８２】
そして、ステップＳ７０３へ進み、現行運転がテープ運転であるか否かを判断する。ここで、現行運転が内部メモリ運転の場合（ステップＳ７０３にてＮＯ）、次パレットのＮＣプログラムを転送する、即ち、前述した図１１のサブルーチンを実行する（ステップＳ７１２）。
【００８３】
この後、ステップＳ７０４へ進み、「次プログラム準備」フラグをＯＦＦする。これにより、サブルーチンを終了し、呼び出しステップへ戻るようになっている。
次に、図１４を用いて、運転バッファの構成の流れを説明する。図１４中の左部に示すような形態のＮＣプログラムが、図１４中の中央部に示すように、現在の運転バッファに入る。そして、図５のステップＳ３０７において、「次プログラム準備」フラグがＯＮすると、第１のＣＰＵ２１は、次の運転バッファの先頭部（次に運転するＮＣプログラムの先頭部）を書き込む。
【００８４】
運転が終了すると、次の運転バッファが現在の運転バッファとなり、続いて、図３のステップＳ２０３において、「プログラム転送」がＯＮすると、図４のステップＳ２１４までの間に、図１４中の右部に示すように、現在の運転バッファの続きをセット（残りのＮＣプログラムを転送）する。
【００８５】
そして、運転バッファの次部に、同様にして、「次プログラム準備」フラグが再びＯＮすると、次の運転バッファの先頭部（次に運転するＮＣプログラムの先頭部）を書き込む。以下、同様の動作を繰り返すようになっている。
【００８６】
次に、図１５に、内部メモリ運転を実行する場合において、パレットの旋回動作（並列動作命令である工具交換動作）と、第２のＣＰＵ２２による主運転の動作（図３及び図４の各フローチャートの制御）と、第２のＣＰＵ２２による並列運転の動作（図５のフローチャートの制御）と、第１のＣＰＵ２１による運転の動作（図６〜図１１の各フローチャートの制御）と、ＮＣプログラムスケジュール装置３６の動作との間の時系列な関係を示す。
【００８７】
この図１５から、現在実行中の加工（第２のＣＰＵ２２によるステップＳ２１９，Ｓ２１７〜２２３、時刻Ｔ１〜Ｔ２）と、運転バッファの空き容量よりも次に運転するＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から運転バッファの空き容量分、該運転バッファに転送する処理（第１のＣＰＵ２１によるＳ７０１〜７０２，Ｓ８１０〜８１１，Ｓ７０３〜７０４，Ｓ９０１〜９０８、時刻ｔ１〜ｔ２）とが並列動作で実行されていることがわかる。尚、時刻Ｔ１、Ｔ２、ｔ１、ｔ２は、時系列で並べると、Ｔ１＜ｔ１＜ｔ２＜Ｔ２となる。
【００８８】
また、現在実行中のＮＣプログラムの運転が終了したときに（第２のＣＰＵ２２によるステップＳ２０２、Ｓ２０３〜２０６、時刻Ｔ３）、次に運転するＮＣプログラムを、転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスに基づいて運転バッファに転送する処理（第１のＣＰＵ２１によるＳ５０１〜５０７、時刻ｔ３〜ｔ４）と、時刻ｔ１〜ｔ２間で、並列動作転送完了している場合に、プログラム先頭から並列動作命令とパレット旋回動作までの処理（第２のＣＰＵ２２によるＳ２０８〜Ｓ２１２及び、並列動作開始とパレット旋回動作開始による実動作、時刻Ｔ３〜Ｔ４）とが並列動作で実行されていることがわかる。尚、パレット旋回時間よりもｔ３〜ｔ４間が短い為、時刻Ｔ３、Ｔ４、ｔ３、ｔ４は、時系列で並べると、Ｔ３≦ｔ３＜ｔ４＜Ｔ４となる。
【００８９】
一方、図１６Ａ、図１６Ｂに、テープ運転を実行する場合において、パレットの旋回動作（並列動作命令である工具交換動作）と、第２のＣＰＵ２２による主運転の動作（図３及び図４の各フローチャートの制御）と、第２のＣＰＵ２２による並列運転の動作（図５のフローチャートの制御）と、第１のＣＰＵ２１による運転の動作（図６〜図１１の各フローチャートの制御）と、ＮＣプログラムスケジュール装置３６の動作との間の時系列な関係を示す。
【００９０】
上記図１６Ａから、現在実行中の加工（第２のＣＰＵ２２によるステップＳ２１９，Ｓ２１７〜２２３、時刻Ｔ’１〜Ｔ’２）と、次に運転するＮＣプログラムを解析する処理（第１のＣＰＵ２１によるＳ７０１〜７０２，Ｓ８１０〜８１１，Ｓ７０３〜７０４、時刻ｔ’１〜ｔ’２）とが並列動作で実行されていることがわかる。
【００９１】
更に、テープ運転の実行中に運転するＮＣプログラムが全て転送され、運転バッファに開放部分が発生したときに（第２のＣＰＵ２２によるステップＳ２２３、時刻Ｔ’１１、Ｔ’１２、Ｔ’１３）、運転バッファの開放部分に次に運転するＮＣプログラムを転送する処理（第１のＣＰＵ２１によるＳ６０１〜６０３，Ｓ９０１〜９０８、Ｓ６０８，時刻ｔ’１１〜ｔ’１２、ｔ’１３〜ｔ’１４、ｔ’１５〜ｔ’１６）とが並列動作で実行されていることがわかる。尚、上記した各時刻を時系列で並べると、Ｔ’１＜ｔ’１＜ｔ’２＜Ｔ’１１＜ｔ’１１＜ｔ’１２＜Ｔ’１２＜ｔ’１３＜ｔ’１４＜Ｔ’１３＜ｔ’１５＜ｔ’１６＜Ｔ’２となる。
【００９２】
また、現在実行中のＮＣプログラムの運転が終了したときに（第２のＣＰＵ２２によるステップＳ２０２、Ｓ２０３〜２０６、時刻Ｔ’３）、次に運転するＮＣプログラムを、転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスに基づいて運転バッファに転送する処理（第１のＣＰＵ２１によるＳ５０１〜５０７、時刻ｔ’３〜ｔ’４）が実行される。尚、上記各時刻を時系列で並べると、Ｔ’３≦ｔ’３＜ｔ’４となる。
【００９３】
このような構成の本実施例によれば、次に運転するＮＣプログラム番号の入力の完了を検出したときに、現在実行中の加工と並列動作で、次に運転するＮＣプログラムの容量を算出し、運転バッファの空き容量よりも、上記ＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から運転バッファの空き容量分、該運転バッファに転送するように構成したので、運転するＮＣプログラムを切り替えるときに、ＮＣプログラムを運転バッファに転送する際に要する時間を極力短縮することができ、生産性を高めることが可能になる。
【００９４】
また、上記実施例の場合、ＮＣプログラムを、メインプログラムとメインプログラムから呼び出されるサブプログラムとから構成し、プログラム容量を算出するに際して、メインプログラムの容量とサブプログラムの容量との総和を算出するように構成したので、内部メモリ運転またはテープ運転のいずれかを選択するときに、正確に選択することができる。
【００９５】
更に、上記実施例では、ＮＣプログラムのプログラム番号とサブプログラム番号とを記憶する記憶手段を備えると共に、ＮＣプログラムを運転バッファに転送する際に、サブプログラムのプログラム番号と、該サブプログラム番号の先頭アドレスを対応付けたプログラム管理データを前記記憶手段に記憶させるプログラム管理データ作成手段を備える構成としたので、メインプログラムからサブプログラムを呼び出すときに、プログラム管理データを参照することにより、時間的遅延なく、次の読み込み番地を決定することが可能となる。
【００９６】
また、上記実施例においては、パレットの旋回動作と並列動作命令である最初の工具交換動作を並列動作で実行するように構成し、次パレットのＮＣプログラム番号の入力が完了したことを検出したときに、現在実行中の加工パレットの加工と並列動作で、次に運転するＮＣプログラムの容量を算出し、運転バッファの空き容量よりも上記ＮＣプログラムの容量が大きい場合に、該ＮＣプログラムの先頭から運転バッファの空き容量分、該運転バッファに転送するように構成したので、回転テーブル機において、運転するＮＣプログラムを切り替えるときに（パレットを交換するときに）、ＮＣプログラムを運転バッファに転送する際に要する時間を短縮できる。
【００９７】
更に、上記実施例では、最初の工具交換動作に対応するＮＣプログラムが転送されている場合には、現在の加工パレットの加工が終了したときに、パレットの旋回動作と最初の工具交換動作を並列動作で実行し、加えて、パレットの旋回動作並びに最初の工具交換動作と並列動作で、次に運転するＮＣプログラムを転送されたＮＣプログラムの最後のアドレスまたは転送されなかった最初のアドレスに基づいて運転バッファに転送するように構成したので、ＮＣプログラムを運転バッファに転送する際に要する時間をより一層短縮することができる。
【００９８】
尚、上記実施例においては、第１のＣＰＵ２１と、第２のＣＰＵ２２との間を、ＲＡＭ２５を介して接続するように構成したが、これに限られるものではなく、第１のＣＰＵ２１と第２のＣＰＵ２２間を通信手段で繋ぎ、ＲＡＭ２５は第２のＣＰＵ２２に接続し、通信手段により、データ転送するように構成し、第１のＣＰＵ２１が第２のＣＰＵ２２を介して間接的に読み書きするように構成しても良い。
【図面の簡単な説明】
【００９９】
【図１】本発明の一実施例を示す数値制御装置のブロック図
【図２】工作機械の側面図
【図３】第２のＣＰＵの主運転の制御のフローチャート（その１）
【図４】第２のＣＰＵの主運転の制御のフローチャート（その２）
【図５】第２のＣＰＵの並列運転の制御のフローチャート
【図６】第１のＣＰＵの運転の制御のフローチャート
【図７】第１のＣＰＵのサブルーチンのフローチャート
【図８】第１のＣＰＵの他のサブルーチンのフローチャート
【図９】第１のＣＰＵの他のサブルーチンのフローチャート
【図１０】第１のＣＰＵの他のサブルーチンのフローチャート
【図１１】第１のＣＰＵの他のサブルーチンのフローチャート
【図１２】プログラム管理データを説明する図
【図１３】ＮＣプログラムの親プログラム、子プログラム、孫プログラムの関係を説明する図
【図１４】ＮＣプログラムを運転バッファに転送するときの動作を説明する図
【図１５】パレット、第１のＣＰＵ、第２のＣＰＵ等の各動作の時系列な関係を示すタイムチャート（内部メモリ運転の場合）
【図１６Ａ】パレット、第１のＣＰＵ、第２のＣＰＵ等の各動作の時系列な関係を示すタイムチャート（テープ運転の場合（その１））
【図１６Ｂ】パレット、第１のＣＰＵ、第２のＣＰＵ等の各動作の時系列な関係を示すタイムチャート（テープ運転の場合（その２））
【符号の説明】
【０１００】
図面中、１は数値制御装置、２は工作機械、３は主軸、４は工具、８は工具交換装置、９はパレット交換装置、１５は工具マガジン、１６はパレット交換モータ、１７はテーブル、１８は第１パレット（加工パレット）、１９は第２パレット（加工パレット）、２１は第１のＣＰＵ、２２は第２のＣＰＵ、２３はＲＡＭ、２４は不揮発メモリ、２５はＲＡＭ（記憶手段）、２６はリムーバブルディスク、２７はＲＡＭ、２８はＲＯＭ、２９は動力系ＩＦ、３０は外部入出力ＩＦ、３１は外側起動スイッチ、３２は次プログラム番号入力端子、３３は次プログラムready端子、３４は次プログラム要求端子、３５はワーク交換機構、３６はＮＣプログラムスケジュール装置を示す。
【図１】
2008108205.tif 000003
【図２】
2008108205.tif 000004
【図３】
2008108205.tif 000005
【図４】
2008108205.tif 000006
【図５】
2008108205.tif 000007
【図６】
2008108205.tif 000008
【図７】
2008108205.tif 000009
【図８】
2008108205.tif 000010
【図９】
2008108205.tif 000011
【図１０】
2008108205.tif 000012
【図１１】
2008108205.tif 000013
【図１２】
2008108205.tif 000014
【図１３】
2008108205.tif 000015
【図１４】
2008108205.tif 000016
【図１５】
2008108205.tif 000017
【図１６Ａ】
2008108205.tif 000018
【図１６Ｂ】
2008108205.tif 000019