(57)【特許請求の範囲】
【請求項１】
加工再開機能を有する数値制御装置において、
加工プログラムにて加工実行中に、加工を実行しているプログラムブロックを解析する解析手段と、
数値制御装置の動作を規定するコードのうち、どのコードの状態を記憶するかをあらかじめ指定する指定手段と、
プログラムブロックに指令されているコードが前記指定手段により指定されているコードの場合には該コードの状態を記憶する記憶手段と、
該記憶手段により前記記憶されたコードの状態と今回記憶されたコードの状態を比較することにより機能が切り換わっているか否かを判断する判定手段と、
該判定手段により機能が切り換わるプログラム命令と判定されたプログラムブロックの場合、プログラムのブロックが格納されているメモリの位置を示すポインタを含む加工再開のためのプログラム再開ブロックデータを取得し保存するデータ取得保存手段と、
該データ取得保存手段によって取得保存されるプログラム再開ブロックデータの一部を使用して、複数のプログラム再開ブロックデータを実行された順番で一覧表示する第１の表示手段と、
前記第１の表示手段により表示された一覧表示画面より、プログラム再開ブロックデータを選択する選択手段と、
該第１の表示手段によって一覧表示されたプログラム再開ブロックデータの一つを前記選択手段により選択することで、前記プログラム再開ブロックデータに保存されたプログラムのブロックが格納されているメモリの位置を示すポインタを使用して、再開するプログラムのブロックとその前後の数ブロックを画面に表示する第２の表示手段と、
を有することを特徴とする加工再開機能を有する数値制御装置。
【請求項２】
前記第１の表示手段により表示された一覧表示画面より、プログラム再開ブロックデータを前記選択手段により選択し、選択されたプログラム再開ブロックデータで再開動作を実行する再開動作実行手段と、を有することを特徴とする請求項１に記載の加工再開機能を有する数値制御装置。
【請求項３】
前記第２の表示手段により表示された画面において、プログラム表示上のカーソルを動かして、再開するプログラムブロックの箇所をオペレータが任意の位置に変更して、その位置を新たな再開ポイントとして再開を指定する再開箇所指定手段を有することを特徴とする請求項１に記載の加工再開機能を有する数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械を制御する数値制御装置に関し、特に、加工再開機能を有する数値制御装置に関する。
【背景技術】
【０００２】
工作機械を制御する数値制御装置は、加工プログラムに基づいて数値制御処理を実行し、該処理結果により該工作機械を制御しワークに指令通りの加工を施すものである。
【０００３】
数値制御装置を用いてワークを加工中に加工を中断した時、この中断点の情報をプログラム再開ブロックデータとして、現在の数値制御の状態から取得することが行われている。このプログラム再開ブロックデータの中には、中断したプログラムの箇所を示すシーケンス番号情報（プログラムに埋め込まれているＮに続く番号）、プログラムカウンタ（運転して何ブロック目にあたるか、という情報）、そのプログラムの名前や番号、親のプログラムの名前や番号、親プログラムのどの箇所から呼び出されたか、また、中断したブロックでどのような機能が実行されていたかを判別できる情報や、ポジションデータ、マクロ変数情報も含んでいる。
【０００４】
このプログラム再開ブロックデータをプログラム再開時に使用して、再開したいプログラムの箇所に仮実行（「仮実行」：機械を駆動しないでプログラムの計算処理を実行すること）をしないで、プログラム中のシーケンス番号のサーチを行なったり、仮実行をしないでプログラムのブロックをカウントしてプログラム再開ブロックまでサーチして、プログラムの目的の箇所に高速で移動させて再開する技術（以下、「ジャンプサーチ」という）も従来から知られている。  
また、再開したいブロックまでプログラムを仮実行して、モーダル情報（また機能情報）や補助機能の状態を復活して再開する技術（以下、「仮実行サーチ」という）も知られている。
【０００５】
【特許文献１】特開平６−２０２７２３号公報
【特許文献２】特開２００２−３７３００８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ジャンプサーチにより再開した場合には、加工中断位置までのプログラムを実行しないので、特定の機能が加工中断位置より前に指令されていても特定の機能を復元できない。例えば、ジャンプサーチして移動した加工中断箇所が工具径補正中のブロックの場合、工具径補正の補正ベクトル計算がなされない状態で、加工中断箇所から加工が再開されることになり、正常の運転とは異なった工具経路を動作してしまうという問題がある（以下、「第１の問題点」という）。
【０００７】
プログラムの頭から仮実行サーチを実行していき、機能情報とベクトル計算の情報を復活すれば適切な再開が可能であるが、加工再開ブロックまで仮実行サーチするのに時間がかかるという問題ある（以下、「第２の問題点」という）。
【０００８】
さらに、加工再開するブロックとその前後のプログラムと、プログラムのシーケンス番号やブロックカウンタの文字情報の表示が同一画面に表示されないため、機械のオペレータが加工再開ブロックのプログラムの状況を判別することは困難である、という問題がある（以下、「第３の問題点」という）。
【０００９】
そこで本発明は、加工再開ブロックのプログラムの状況をオペレータが容易に判断でき、加工再開した際にも正常運転と同じ工具経路を動作することが可能な、加工再開機能を有する数値制御装置を提供することである。
【課題を解決するための手段】
【００１０】
本願の請求項１に係る発明は、  
加工再開機能を有する数値制御装置において、加工プログラムにて加工実行中に、加工を実行しているプログラムブロックを解析する解析手段と、数値制御装置の動作を規定するコードのうち、どのコードの状態を記憶するかをあらかじめ指定する指定手段と、プログラムブロックに指令されているコードが前記指定手段により指定されているコードの場合には該コードの状態を記憶する記憶手段と、該記憶手段により前記記憶されたコードの状態と今回記憶されたコードの状態を比較することにより機能が切り換わっているか否かを判断する判定手段と、該判定手段により機能が切り換わるプログラム命令と判定されたプログラムブロックの場合、プログラムのブロックが格納されているメモリの位置を示すポインタを含む加工再開のためのプログラム再開ブロックデータを取得し保存するデータ取得保存手段と、該データ取得保存手段によって取得保存されるプログラム再開ブロックデータの一部を使用して、複数のプログラム再開ブロックデータを実行された順番で一覧表示する第１の表示手段と、前記第１の表示手段により表示された一覧表示画面より、プログラム再開ブロックデータを選択する選択手段と、該第１の表示手段によって一覧表示されたプログラム再開ブロックデータの一つを前記選択手段により選択することで、前記プログラム再開ブロックデータに保存されたプログラムのブロックが格納されているメモリの位置を示すポインタを使用して、再開するプログラムのブロックとその前後の数ブロックを画面に表示する第２の表示手段と、を有することを特徴とする加工再開機能を有する数値制御装置である。
【００１１】
請求項２に係る発明は、前記第１の表示手段により表示された一覧表示画面より、プログラム再開ブロックデータを前記選択手段により選択し、選択されたプログラム再開ブロックデータで再開動作を実行する再開動作実行手段と、を有することを特徴とする請求項１に記載の加工再開機能を有する数値制御装置である。
【００１２】
請求項３に係る発明は、前記第２の表示手段により表示された画面において、プログラム表示上のカーソルを動かして、再開するプログラムブロックの箇所をオペレータが任意の位置に変更して、その位置を新たな再開ポイントとして再開を指定する再開箇所指定手段を有することを特徴とする請求項１に記載の加工再開機能を有する数値制御装置である。
【発明の効果】
【００１６】
本発明により、加工再開ブロックのプログラムの状況をオペレータが容易に判断でき、加工再開した際にも正常運転と同じ工具経路を動作する、加工再開機能を有する数値制御装置を提供することが可能である。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施形態を図面と共に説明する。  
図１は、本発明の加工再開機能を有する数値制御装置におけるプログラム解析処理とプログラム再開ブロックデータの取得処理に関する要部ブロック図である。以下、各ブロックの機能について説明する。  
字句解析手段１は、加工プログラムの英記号と数値記号に分ける処理を行う。構文解析手段２は、指令された英記号と数値の組み合わせは何であるのかを判定する。意味解析手段３は、指令された英記号と数値によりその機能を特定し、機能グループの情報を作成し、機能グループ別の処理やその機能別の処理を実行する。オブジェクトコード生成手段４は、意味解析の結果からオブジェクトコードの生成を行う。字句解析手段１〜オブジェクトコード生成手段４までの機能ブロックは、数値制御装置における加工プログラムの解析処理の機能として従来から用いられている技術手段である。
【００１８】
指定手段５は、数値制御装置の動作を規定するコードのうち、どのコードの状態を記憶するかをあらかじめ設定するための指定手段である。コード状態記憶手段６は、オブジェクトコード生成手段４により生成されたオブジェクトコードで、指定手段５によりあらかじめ指定されたコードに対応する場合に、コードの状態を記憶する手段である。
【００１９】
判定手段７は、機能グループの情報から機能が切り換わるブロックの判別と、運転を停止する信号が入力されたかを判別する。判定手段７による判定の結果、機能が切り換わるブロックの時、もしくは、運手停止する信号が入力されたことが判明した時、データ取得・保存手段８は、プログラム再開ブロックデータを取得しメモリに格納する。
【００２０】
プログラムポインタ取得手段９は、解析中のプログラムのブロックが格納されているメモリのプログラムポインタを取得する手段である。プログラムポインタ取得手段９により取得されたプログラムポインタは、データ取得・保存手段８のメモリにプログラム再開ブロックデータとともに格納される。
【００２１】
なお、コード状態記憶手段から工作機械へ向かう矢印は、加工プログラム解析手段に解析された指令を工作機械の駆動手段に通知することを意味する。
【００２２】
図２は、工作機械を制御する数値制御装置で実行される加工プログラムの一例である。この加工プログラム（Ｏ０００１）を例として、本発明である加工再開機能を有する数値制御装置の動作について説明する。加工プログラムはプログラム毎にＯ（オー）番号で判別する。加工プログラムはいくつかのブロックから構成される。各ブロックにはシーケンス番号（Ｎコード）、準備機能（Ｇコード）、ＸやＹやＺなどの位置情報（座標語）、送り速度（Ｆコード）、補助機能（Ｍコード）などを含む。
【００２３】
ここで、図２の加工プログラム（Ｏ０００１）を説明する。  
「シーケンス番号Ｎ０１」において、Ｇ９０はアブソリュート指令であり、Ｇ００は位置決め早送り指令であり、座標Ｘ０、Ｙ０、Ｚ０へ早送りで機械を復帰させる。  
「シーケンス番号Ｎ０２」において、Ｇ０１は直線補間指令であり、座標Ｘ３００まで送り速度１５００で機械を直線補間で移動させる。  
「シーケンス番号Ｎ０３」において、座標Ｙ３００まで送り速度１５００で機械を直線補間で移動させる。  
「シーケンス番号Ｎ０４」において、座標Ｘ０まで送り速度１５００で機械を直線補間で移動させる。  
「シーケンス番号Ｎ０５」において、座標Ｙ０まで送り速度１５００で機械を直線補間で移動させる。  
「シーケンス番号Ｎ０６」において、座標Ｚ−１０まで送り速度１５００で機械を直線補間で移動させる。  
「シーケンス番号Ｎ０７」において、「Ｇ１２．１」のコードによって極座標補間モードを有効にする。  
「シーケンス番号Ｎ０８」において、座標Ｘ１００、座標Ｃ１００までアブソリュート指令で位置決め早送りで機械を移動させる。  
「シーケンス番号Ｎ０９」において、工具径補正（左側オフセット）モードを有効にする。  
「シーケンス番号Ｎ１０」において、座標Ｘ１６０、座標Ｃ９０まで極座標補間＋工具径補正モードで機械を動作させる。  
「シーケンス番号Ｎ１１」において、座標Ｘ１４０、座標Ｃ８０まで極座標補間＋工具径補正モードで機械を動作させる。  
「シーケンス番号Ｎ１２」において、座標Ｘ１２０、座標Ｃ７０まで極座標補間＋工具径補正モードで機械を動作させる。  
「シーケンス番号Ｎ１３」において、座標Ｘ１１０、座標Ｃ６０まで極座標補間＋工具径補正モードで機械を動作させる。  
「シーケンス番号Ｎ１４」において、「Ｇ４０」のコードによって工具径補正モードを無効とする。そして、座標Ｘ１００まで極座標補間で機械を移動させる。
「シーケンス番号Ｎ１５」において、「Ｇ１３．１」のコードによって極座標補間モードを無効とする。  
「シーケンス番号Ｎ１６」において、位置決め早送りにより座標Ｘ１００、座標Ｙ１００まで直線補間で機械を移動させる。  
「シーケンス番号Ｎ１７」において、原点である座標Ｘ０、座標Ｙ０、座標Ｚ０まで、復帰する。  
「シーケンス番号Ｎ１８」において、加工プログラムを終了する。
【００２４】
図２に示される加工プログラム「Ｏ０００１」を通常運転した時、シーケンス番号がＮ０７、Ｎ０９、Ｎ１４、及び、Ｎ１５が機能を切り換える指令となる。この時の数値制御の動作を規定するコードは、Ｎ０７はＧ１２．１、Ｎ０９はＧ４１、Ｎ１４はＧ４０、Ｎ１５はＧ１３．１となる。これらのコードはあらかじめ取得保存する対象のコードとして、「コードの状態を記憶するかを指定する手段」によりあらかじめ指定されているものとする。
【００２５】
数値制御装置では、加工プログラムを解析する処理において、例えば、Ｎ０９のブロック内で実行される「数値制御装置の動作を規定するコード」すなわちＧ４１を判定し、その数値制御装置の動作を工具径補正機能の情報として数値制御装置の内部情報として取得する。その内部情報は似通った機能同士でグループに分けられる。このプログラムの例では、Ｎ１４で指令されているＧ４０（工具径補正モード無効）が工具径補正機能のグループでＧ４１と同じグループに分類され、Ｇ４１もＧ４０もグループ毎の変数情報である機能グループ情報として取得されている。
【００２６】
その機能グループ情報には、機能グループ情報が全て有効ではないという情報（機能が無効の状態）も取得している。この加工プログラムの例では、Ｇ４０が指令された時に機能が無効の状態となるので、工具径補正機能のグループ情報がＧ４０になっていれば機能が無効の状態を判定することができる。また、機能グループの機能が切り換わったという情報も含んでいる。このプログラムの例では、Ｇ４１からＧ４０に切り換わった時に、機能グループの機能が切り換わることになるので、切り換わったという情報が取得される。
【００２７】
この機能グループ情報はプログラムを１ブロック読み出し、解析した後に作成される。作成された全ての機能グループ情報の内容を判定して、機能が有効になったか、または、そのグループの違う機能に切り換わったか、そのグループの機能が有効から無効になったかを判定することができる。それ故、プログラムにより加工運転している時に、機能が切り換わるブロックを特定して、そのブロックの情報をプログラム再開する場合の再開ブロックデータとして逐次取得保存することができる。
【００２８】
このプログラム「Ｏ０００１」の例では、Ｎ０７とＮ０９とＮ１４とＮ１５が機能を切り換える指令となるので、このブロックが実行される過程でプログラム再開ブロックデータが取得される。
【００２９】
さらに、これとは別に加工が中断した加工中断ブロックの情報を再開ブロックデータとして取得保存する。ここで、中断とは、オペレータが中断操作を行った時（停止信号による加工停止）、あるいは、数値制御装置にアラームが発生して加工が中断した時のことを指す。
【００３０】
プログラム再開ブロックデータのプログラム中のブロック箇所を判定するために、シーケンス番号やブロックカウンタ情報に加えて、そのプログラムが格納されていたメモリ上の物理アドレスであるプログラムポインタを一緒に保存する（図１のプログラムポインタ取得手段９を参照）。プログラムポインタにより移動したいブロックに移動する場合は、直接そのプログラムの箇所に移動できるため、ジャンプサーチのようにシーケンス番号やブロックカウンタを使用してプログラムの初めから順番に目的の箇所までサーチして移動する場合より高速にプログラムの箇所に移動できる。
【００３１】
プログラムポインタおよび機能が切り換わる各々のブロックと加工中断した加工中断ブロックの再開ブロックデータにより、中断点のプログラム再開ブロックデータを指定した時に、そのデータの機能グループ情報を判定して、機能グループが既にオンになっていると判定された場合、このプログラム再開ブロックデータでは完全に再開できないことを表示上に警告メッセージを表示することでオペレータに警告することができる。
【００３２】
また、中断点のプログラム再開ブロックデータを使用せずに、前に取得した機能が切り換わるプログラム再開ブロックデータをサーチして、機能が切り換わるブロックのプログラム再開ブロックデータが検索できれば、そのブロックのプログラム再開ブロックデータを最初に指定したプログラム再開ブロックデータの代わりに使用して、そのプログラム再開ブロックデータに保存されているプログラムポインタを使用してプログラムを直接読み出してブロックを移動させ、この再開ブロックデータに格納されている情報で、現在の数値制御の状態を更新する。そして、プログラム再開ブロックデータは機能グループ毎に固定の領域に保存する。
【００３３】
プログラム再開ブロックデータに格納されている情報は表１に示されているとおりである。表１に記載される１の「取得保存した日付、時間」、２の「総プログラムカウンタ」、及び、３の「機能グループ番号」は管理情報となっている。この１の「取得保存した日付、時間」と２の「総プログラムカウンタ」とを判定することにより、どのプログラム再開ブロックデータが新しいかを判定することが可能である。また、番号４番〜番号１４番までの情報は、プログラム再開ブロックデータの詳細情報である。  
なお、各情報の種類に付与されている番号は、説明を容易にするためのものであって、この数字の符号に特別な意味はない。
【００３４】
【表１】
0004480770.tif 000002
【００３５】
表２〜表７に、プログラム再開ブロックデータは機能グループ毎に複数個を固定の領域に保存する場合を示している。表２〜表７は、固定領域に保存したイメージを示す図である。表２〜表７に示される保存形式では、機能グループ毎に８個のプログラム再開ブロックデータしか保存できない。
【００３６】
そのため、プログラム再開ブロックデータを取得し保存していく時に、プログラム再開ブロックデータが８個以上になったら、一番古いプログラム再開ブロックデータを管理情報から探し出して、新しいプログラム再開ブロックデータを上書きする。または、機能グループ毎にリングバッファにしてもよい。リングバッファを用いる時には、１番目から上書きしていく。
【００３７】
【表２】
0004480770.tif 000003
【００３８】
【表３】
0004480770.tif 000004
【００３９】
【表４】
0004480770.tif 000005
【００４０】
【表５】
0004480770.tif 000006
【００４１】
【表６】
0004480770.tif 000007
【００４２】
【表７】
0004480770.tif 000008
【００４３】
プログラム再開ブロックデータは、表８と表９に示されるように「管理情報」（表８参照）と「詳細情報」（表９参照）というように情報を分離して、管理情報のみを機能グループ毎に固定領域に保存してもよいし、管理情報のみをリングバッファ管理にしてもよい。
【００４４】
【表８】
0004480770.tif 000009
【００４５】
【表９】
0004480770.tif 000010
【００４６】
表１０〜表１４は、情報を分離する場合の管理情報だけをリングバッファにする形式を表している。管理情報（表１０参照）は、取得し保存する順番に１個目からリングバッファに書き込まれていき、１００個目まで書き込んで次に新しく取得し保存した場合には、最初に戻り１個目から上書きしていく。この場合、詳細情報は表１１〜表１４に示されるように、機能グループ毎にまとまっていてもよいし、管理情報の１個目の詳細情報はメモリ上の１個目専用の固定領域というように、管理情報の取得されている順番で示される固定領域に保存してもよい。
【００４７】
【表１０】
0004480770.tif 000011
【００４８】
【表１１】
0004480770.tif 000012
【００４９】
【表１２】
0004480770.tif 000013
【００５０】
【表１３】
0004480770.tif 000014
【００５１】
【表１４】
0004480770.tif 000015
【００５２】
ここで、プログラム再開ブロックデータ詳細情報（表１、または、表９参照）の番号６のプログラムポインタの情報を例にとり、本発明の加工再開機能を説明する。  
プログラムをメモリ上に格納する時は、プログラムはメモリ上のポインタ情報（以下、このポインタ情報を「プログラムポインタ」という）で管理されている。あるプログラム管理の例で示すと、このプログラムポインタは、プログラムを格納するメモリの先頭から何バイト目であるか、という情報で管理されている場合もある。
【００５３】
このプログラムポインタをプログラム再開ブロックデータに取得しておくことで、プログラムを表示する時に、このプログラムポインタから前にあるブロックを数ブロックだけ読み込んで表示し、プログラムポインタが指し示すブロックと次の数ブロック分読み込んで表示すれば、所望のプログラムを瞬時に表示させることが可能となる。
【００５４】
図３は、数値制御装置が備えたメモリの格納番地に格納されているデータの例である。図３では理解し易いようにメモリ上に格納されているキャラクタで表現している。また、番地がわかり易いように、１６キャラクタ毎に区切るようにしている。通常は、英文字や数字は１キャラクタで１バイトの情報となっているので、例えば、１というデータは３１と表現されメモリに登録されている。
【００５５】
図３に示されるようにメモリに登録されている場合、プログラム再開ブロックデータの保存されているプログラムポインタが、１０２３６ＤＨであるとすると、Ｎ１２０３Ｇ４１Ｘ１４０Ｙ１５０Ｄ０１；のブロックが再開ブロックとなる。
【００５６】
図４は、本発明により、プログラム再開ブロックデータの一部を表示して一覧表示することを説明する図である。図４に示されるように、プログラムの名前と、シーケンス番号と、そのプログラムの頭から何ブロック目か、という情報を使って一覧表示した例である。前述（請求項１に関連して記載した）の管理情報を検索して内容を調査することにより、取得保存された順番で一覧表示が可能となる。
【００５７】
一覧画面でプログラム再開ブロックデータがカーソルで選択された場合も、右の画面にプログラム再開ブロックデータに保存されているプログラムポインタを使用して、プログラムを表示してもよい。
【００５８】
プログラムを表示するための手段としては、プログラムポインタ情報を使用する場合より低速になるが、プログラム中をシーケンス番号でサーチして、箇所を特定して表示することでも良く、また、プログラムカウンタ情報を使用して箇所を特定してもよい。この一覧表示とプログラムポインタ情報によるプログラム位置の表示により、プログラムブロックの数値制御装置の動作を規定するコードの切り換わる箇所を素早く判定でき、また、そのプログラムブロックの実行順序がわかるため、オペレータはプログラムが正しく動作しているかどうかを判定する確認手段としても使用できる。
【００５９】
一覧表示のカーソルが上下に動作すると、右のプログラム表示が所望のプログラム表示に切り換わるようにしてもよい。また、下部にある「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＪＵＭＰ  ＭＯＤＥ）」または、「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＳＩＭＵ．ＭＯＤＥ）」ボタンを押すことで、現在選択されているプログラム再開ブロックデータを使用してプログラム再開動作を実行してもよい。
「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＪＵＭＰ  ＭＯＤＥ）」：ジャンプモードでプログラム再開実行。  
「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＳＩＭＵ．ＭＯＤＥ）」：仮実行モードでプログラム再開実行。  
「ＲＥＳＴＡＲＴ  ＢＬＯＣＫ  ＤＥＴＡＩＬ」を押すことで、現在選択されているプログラム再開ブロックデータの詳細表示を行うことが可能（図５を参照）。  
「ＥＤＩＴ  ＯＦ  ＰＲＯＧＲＡＭ  ＰＯＩＮＴ」を押すことで、右側に表示されているプログラム表示のカーソルポイントを上下に移動することができ、移動させたところで、「ＲＥＳＴＡＲＡＴ  ＥＸＥＣ（ＪＵＭＰ  ＭＯＤＥ）」、または、「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＳＩＭＵ．ＭＯＤＥ）」ボタンを押すことにより、移動したポイントで再開することができる。
【００６０】
図５は、プログラム再開ブロックデータの１つを選択して、そのデータの詳細表示を行った画面例である。プログラム再開ブロックデータのプログラムポインタ情報を使用して、再開するプログラムの情報を表示することができる。
【００６１】
また、図５に示される「ＥＤＩＴ  ＯＦ  ＲＥＳＴＡＲＴ  ＢＬＯＣＫ」ボタンを押すことにより、詳細表示のカーソルが当たっているところ（ＳＥＱＵＥＮＣＥ  Ｎｏ．の右の濃い網掛け部分）を上下に移動させオペレータが変更することができ、変更したブロックを再開ポイントとして指定できる。さらに、本詳細画面からも下部にある、「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＪＵＭＰ  ＭＯＤＥ）」、または、「ＲＥＳＴＡＲＴ  ＥＸＥＣ（ＳＩＭＵ．ＭＯＤＥ）」ボタンを押すことで、現在詳細表示しているプログラム再開ブロックデータを使用してプログラム再開動作を実行させることができる。
【００６２】
図６は、本発明の加工再開のためのプログラム再開ブロックデータを取得し保存する処理のアルゴリズムを示すフローチャートである。以下、各ステップに従って説明する。
【００６３】
通常のプログラム運転のブロック解析処理で機能コードを解析し、機能コードを有するブロックが格納されているメモリ上のプログラムポインタを取得し、機能コードの解析結果を機能グループ情報に反映する（ステップＳ１００〜ステップＳ１０２）。そして、今回指令されたブロックの機能グループ情報をサーチした結果、再開ブロックデータを保存する機能グループ情報が存在するか否かを判断し、機能グループ情報が存在する場合にはステップＳ１０４へ移行し、機能グループ情報が存在しない場合にはステップＳ１０５へ移行する（ステップＳ１０３）。
【００６４】
ステップＳ１０４では、機能グループ情報が前のブロックから変更になっている指令か否か判断し、変更になっていない指令であればステップＳ１０５へ移行し、運転は終了したか否か判断し、運転終了の場合には処理を終了し、機能グループ情報が変更になっている指令であればステップＳ１０６へ移行する（ステップＳ１０４、ステップＳ１０５）。
【００６５】
ステップＳ１０６ではプログラム再開ブロックデータの管理情報領域は一杯であるか否か判断し、管理情報が一杯であれば、プログラム再開ブロックデータの管理情報領域の一番古いデータに新しい管理情報データを上書きし、管理情報データ毎の固定領域に、プログラム再開ブロックデータの詳細情報を取得保存する。この時、予め取得しておいたプログラムポインタも一緒に保存し、ステップＳ１０５へ移行する（ステップＳ１０６〜ステップＳ１０８）。
【００６６】
一方、ステップＳ１０６で、管理情報領域が一杯でないと判断された場合には、プログラム再開ブロックデータ管理情報領域の空き領域に管理情報データを取得保存し、ステップＳ１０８へ移行する（ステップＳ１０９）。
【００６７】
図７は、本発明のプログラム再開ブロックデータを表示および再開動作の処理のアルゴリズムを示すフローチャートである。以下、各ステップに従って説明する。なお、プログラム再開ブロックデータの管理情報は既に一番古いデータ順（または、新しいデータ順でもよい）で整列されセーブされているとする。また、一覧表示にあたって、最大表示数に限りがあるので、セーブされている個々のプログラム再開ブロックデータに１ページ目に表示するか２ページ目に表示するかの情報も既に入力されているとする。
【００６８】
プログラム再開ブロックデータの一覧画面を選択し、ベースの項目表示を行い、プログラム再開ブロックデータは存在するか否か判断し、プログラム再開ブロックデータが存在しない場合には、ステップＳ２０３へ移行し、一覧表示にせずに終了する（ステップＳ２００〜ステップＳ２０３）。
【００６９】
一方、Ｓ２０２でプログラム再開ブロックデータが存在すると判断される場合には、指定のページのマークのついているプログラム再開ブロックデータの管理情報から再開ブロックデータ詳細情報を割り出し、情報の一部を表示する（ステップＳ２０４）。
【００７０】
そして、指定のページのマークについているプログラム再開ブロックデータの管理情報で表示されていないものがあるか否かを判断し、管理情報で表示されていないものがある場合にはステップＳ２０４へ戻り、ステップＳ２０４およびステップＳ２０５の処理を再実行し、管理情報で表示されていないものがない場合にはステップＳ２０６へ移行する（ステップＳ２０５）。
【００７１】
次に、カーソルがあたっているところのプログラム表示は行ったか否かを判断し、プログラム表示を行わなかった場合には、一覧表示のカーソルがあたっている箇所のプログラム再開ブックデータからプログラムポインタを取得して再開ブロックとその前後のブロックのプログラム表示を行い、ステップＳ２０８へ移行する（ステップＳ２０６、ステップＳ２０７）。
【００７２】
ステップＳ２０６でプログラム表示を行った場合には、カーソルの移動があったか否か判断し、カーソルの移動があった場合にはステップＳ２０６へ戻り、カーソルの移動がなかった場合には、ページキーが押され、所望のページは存在するか否か判断し、所望のページが存在する場合には、一覧表示をクリアしステップＳ２０４へ戻る（ステップＳ２０８〜ステップＳ２１０）。
【００７３】
ステップ２０９で、ページキーが押され、所望のページが存在しないと判断された場合には、ＲＥＳＴＡＲＴ  ＥＸＥＣは押されたか否か判断し、押されたと判断された場合にはステップＳ２１２へ移行し、押されていないと判断された場合にはステップＳ２１３へ移行し、他の画面に切り換わったか否か判断し、他の画面に切り換わらなかったと判断された場合にはステップＳ２０８へ戻り、他の画面に切り換わったと判断された場合には処理を終了する（ステップＳ２０９〜ステップＳ２１３）。
【００７４】
ステップＳ２１２の処理については図９に示すように、現在選択されているプログラム再開ブロックデータを使用してプログラム再開を開始する処理である。したがって、プログラム再開を開始すると、図７のアルゴリズムのフローチャートの処理に戻り終了する。
【００７５】
図８は、本発明の再開箇所を再設定する処理のアルゴリズムを示すフローチャートである。以下、各ステップに従って説明する。  
プログラム再開ブロックデータの一覧画面から１つのプログラム再開ブロックデータが選択され、プログラム再開ブロックデータのプログラムポインタから再開ブロックと前後のブロックのプログラム表示を行う（ステップＳ３００、ステップＳ３０１）。そして、プログラム再開ブロックデータの詳細表示ボタンが押されたか否か判断し、詳細表示ボタンが押されていると判断されるとステップＳ３０３へ移行し、詳細表示ボタンが押されていないと判断されるとステップＳ３０４へ移行する（ステップＳ３０２）。ステップＳ３０３の処理Ｂについては、図１０を用いてそのアルゴリズムのフローチャートについて後述する。
【００７６】
ステップＳ３０４ではプログラム表示を編集するボタンが押されたか否か判断し、ボタンが押されたと判断されるとステップＳ３０８へ移行し、ボタンが押されていないと判断されると、ＲＥＳＴＡＲＴ＿ＥＸＥＣボタンは押されたか否か判断し、押されたと判断されるとステップＳ３０７へ移行し、ステップＳ３０７の処理を行い終了し、押されていないと判断されると、他の画面に切り換わったか否か判断し、他の画面に切り換わっていないと判断された場合にはステップＳ３０２へ戻り、他の画面に切り換わったと判断されると、処理を終了する（ステップＳ３０４〜ステップＳ３０７）。ステップＳ３０７の処理は前述した図９に示される処理である。
【００７７】
ステップＳ３０４から移行したステップＳ３０８では、プログラム表示のカーソル動作を可能とし、プログラム再開ブロックデータからプログラムポインタとプログラムカウンタをコピーして表示上のワークを作成し、上にカーソルが動作したか否か判断し、カーソルが上に動作した場合には、プログラム表示のカーソルを１つ上のブロックにあて、表示上のプログラムポインタとプログラムカウンタを更新する（ステップＳ３０８〜ステップＳ３１１）。
【００７８】
そして、移動したことで表示するブロックがなくなったか否か判断し、ブロックはなくなっていないと判断されるとステップＳ３１６へ移行し、表示するブロックがなくなったと判断された場合には、表示上のプログラムポインタを中心に前後のブロックを取得して、プログラム表示を更新しステップＳ３１６へ移行する（ステップＳ３１２、ステップＳ３１３）。
【００７９】
ステップＳ３０９で上にカーソルは動作していないと判断されると、下にカーソルは移動したか否か判断し、下にカーソルは動作していないと判断されるとステップＳ３１６へ移行し、下にカーソルが動作したと判断された場合にはプログラム表示のカーソルを１つ下のブロックにあてて、ステップＳ３１１へ移行する（ステップＳ３１４、ステップＳ３１５）。
【００８０】
ステップＳ３１６ではプログラム編集を終了するボタンが押されたか否か判断し、ボタンが押されていないと判断されるとステップＳ３０９へ戻り、押されたと判断されると、表示上のプログラムポインタと表示上のプログラムカウンタを、元のプログラム再開ブロックデータに更新し、また、プログラムカウンタの表示も更新し、ステップＳ３０５へ移行する（ステップＳ３１６、ステップＳ３１７）。
【００８１】
ここで、ステップＳ３０３の処理Ｂについて説明する。図１０には、処理Ｂのアルゴリズムのフローチャートが示されている。以下、各ステップに従って説明する。プログラム再開ブロックデータの詳細表示のベース項目表示を行い、プログラム再開ブロックデータの詳細表示を行う（ステップＴ２００、ステップＴ２０１）。
【００８２】
そして、プログラム再開ブロックの詳細表示を編集するボタンが押されたか否かを判断し、編集するボタンが押されていないと判断されると終了し、編集するボタンが押されたと判断されると、プログラム再開ブロックデータを編集する表示に変更する（ステップＴ２０２、ステップＴ２０３）。
【００８３】
次に、プログラム再開ブロックの詳細表示が編集されたか否か判断し、編集されていないと判断されると図８のステップＳ３０４へ戻り、編集されていると判断するとプログラム再開ブロックデータを編集されたデータに更新し図８のステップＳ３０４へ戻り、処理を終了する（ステップＴ２０４、ステップＴ２０５）。
【００８４】
図１１は本発明の一実施形態である５軸加工機を制御する数値制御装置の（ＣＮＣ）１００の要部ブロック図である。ＣＰＵ１１は数値制御装置１００を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステムプログラムをバス２０を介して読み出し、該システムプログラムに従って数値制御装置全体を制御する。また、ＲＯＭ１２には、加工プログラムの作成及び編集のために必要とされる編集モードの処理や自動運転のための処理を実施するための各種システムプログラムがあらかじめ書き込まれている。ＲＡＭ１３には一時的な計算データや表示データ及び表示器／ＭＤＩユニット７０を介してオペレータが入力した各種データが格納される。
【００８５】
ＳＲＡＭメモリ１４は図示しないバッテリでバックアップされ、数値制御装置１００の電源がオフされても記憶状態が保持される不揮発性メモリとして構成される。ＳＲＡＭメモリ１４中には、インターフェイス１５を介して読み込まれた加工プログラムや表示器／ＭＤＩユニット７０を介して入力された加工プログラムなどが記憶される。数値制御装置１００の動作を規定するコードのうちどのコードの状態を記憶するかをあらかじめ指定する情報を、ＳＲＡＭメモリ１４に入力手段（後述するＭＤＩユニットなど）から入力し記憶させたＳＲＡＭメモリ１４を図１に示される指定手段５として用いることができる。
【００８６】
ＣＡＤ／ＣＡＭ装置や倣い装置などを使って作成した指令点列データおよびベクトル列データを含む加工プログラムがインターフェイス１５を介して入力され、ＳＲＡＭメモリ１４に格納されている。本発明で実行される加工再開のためのプログラム再開ブロックデータの取得し保存する処理を行うプログラムもＳＲＡＭメモリ１４に格納されている。
【００８７】
また、数値制御装置１００内で編集した加工プログラムは、インターフェイス１５を介して外部記憶装置に記憶させることができる。ＰＭＣ（プログラマブル・マシン・コントローラ）１６は、数値制御装置１００に内蔵されたシーケンスプログラムで工作機械の補助装置（例えば、工具交換用のロボットハンドのようなアクチュエータ）にＩ／Ｏユニット１７を介して信号を出力し制御する。また、工作機械の本体に配備された操作盤の各種スイッチ等の信号を受け、必要な信号処理をした後、ＣＰＵ１１に渡す。
【００８８】
表示器／ＭＤＩユニット７０はディスプレイやキーボード等を備えた手動データ入力装置であり、インターフェイス１５は表示器／ＭＤＩユニット７０のキーボードからの指令データを受けてＣＰＵ１１に渡す。インターフェイス１９は手動パルス発生器などを備えた操作盤７１に接続されている。
【００８９】
各軸の軸制御回路３０〜３４はＣＰＵ１１からの各軸の移動指令量を受けて、各軸の指令をサーボアンプ４０〜４４に出力する。サーボアンプ４０〜４４はこの指令を受けて、各軸のサーボモータ５０〜５４を駆動する。各軸のサーボモータ５０〜５４は位置・速度制御検出器を内蔵し、この位置・速度検出器からの位置・速度フィードバック信号を軸制御回路３０〜３４にフィードバックし、位置・速度のフィードバック制御を行なう。
【００９０】
サーボモータ５０〜５４は、５軸加工機のＸ、Ｙ、Ｚ、Ｂ（Ａ）、Ｃ軸を駆動するものである。また、スピンドル制御回路６０は主軸回転指令を受け、スピンドルアンプ６１にスピンドル速度信号を出力する。スピンドルアンプ６１はスピンドル速度信号を受けて、主軸モータ６２を指令された回転速度で回転させる。ポジションコーダ６３は、主軸モータ６２の回転に同期して帰還パルスをスピンドル制御回路６０にフィードバックし、速度制御を行う。この数値制御装置１００によって、５軸加工機を駆動制御するものである。
【図面の簡単な説明】
【００９１】
【図１】本発明の加工再開機能を有する数値制御装置におけるプログラム解析処理とプログラム再開ブロックデータの取得処理に関する要部ブロック図である。
【図２】数値制御装置で実行される加工プログラムの一例である。
【図３】数値制御装置が備えたメモリの格納番地に記憶されているデータの例である。
【図４】本発明により、プログラム再開ブロックデータの一部を表示して一覧表示することを説明する図である。
【図５】本発明におけるプログラム再開ブロックデータの１つを選択して、そのデータの詳細表示を行った画面例である。
【図６】本発明の加工再開のためのプログラム再開ブロックデータを取得し保存する処理のアルゴリズムを示すフローチャートである。
【図７】本発明のプログラム再開ブロックデータを表示および再開動作の処理のアルゴリズムを示すフローチャートである。
【図８】本発明の再開箇所を再設定する処理のアルゴリズムを示すフローチャートである。
【図９】本発明のプログラム再開を開始するアルゴリズムのフローチャートを示す図である。
【図１０】本発明のプログラム再開ブロックデータを編集するアルゴリズムのフローチャートを示す図である。
【図１１】本発明の一実施形態である加工再開機能を有する数値制御装置の（ＣＮＣ）１００の要部ブロック図である。
【符号の説明】
【００９２】
１  字句解析手段
２  構文解析手段
３  意味解析手段
４  オブジェクトコード生成手段
５  指定手段
６  コード状態記憶手段
７  判定手段
８  データ取得・保存手段
９  プログラムポインタ取得手段
１１  ＣＰＵ（プロセッサ）
１００  数値制御装置
【図１】
0004480770.tif 000016
【図２】
0004480770.tif 000017
【図３】
0004480770.tif 000018
【図４】
0004480770.tif 000019
【図５】
0004480770.tif 000020
【図６】
0004480770.tif 000021
【図７】
0004480770.tif 000022
【図８】
0004480770.tif 000023
【図９】
0004480770.tif 000024
【図１０】
0004480770.tif 000025
【図１１】
0004480770.tif 000026