(57)【要約】【課題】効率的に加工プログラムの編集作業を行うことができる加工プログラム編集装置加工プログラム編集方法、および加工プログラム編集プログラムを得ること。【解決手段】工作機械を制御する数値制御装置によって実行される加工プログラムを編集する加工プログラム編集装置であって、表示部に表示されるカーソル位置のブロックにおいて有効なモーダル指令のリストを生成し、カーソル位置に文字列が入力される場合に、カーソル位置のブロックにおいて、生成されたリストのうち入力される文字列を含むモーダル指令を抽出して新たなリストを生成し、表示部に表示する。【選択図】図１
2019028641.tif 000002
【特許請求の範囲】
【請求項１】
工作機械を制御する数値制御装置によって実行される加工プログラムを編集する加工プログラム編集装置であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理部と、
前記複数のブロックのうち先頭のブロックから前記ブロック毎に有効なモーダル指令を解析し、前記ブロック毎に有効なモーダル指令を含むモーダル情報を記憶部に記憶する解析部と、
前記表示部に表示されるカーソル位置のブロックにおいて有効なモーダル指令を前記記憶部に記憶された前記複数のブロックの前記モーダル情報の中から抽出する抽出部と、
前記抽出部により抽出された前記有効なモーダル指令に基づき、前記カーソル位置のブロックにおいて使用可能な複数のモーダル指令のリストを生成する指令候補生成部を備え、
前記指令候補生成部は、
前記カーソル位置に文字列が入力される場合に、前記リストに含まれる前記複数のモーダル指令の中から前記文字列を含むモーダル指令を抽出して新たなリストを生成し、
前記表示処理部は、
前記指令候補生成部によって生成される前記リストを前記表示部に表示する
ことを特徴とする加工プログラム編集装置。
【請求項２】
前記リストには、使用可能なモーダル指令と、当該使用可能なモーダル指令の説明文とが含まれる
ことを特徴とする請求項１に記載の加工プログラム編集装置。
【請求項３】
前記表示処理部は、
前記カーソル位置に入力される指令が前記リストに含まれる複数のモーダル指令のいずれにも含まれない場合、前記入力される指令が使用できないことを示す警告を前記表示部に表示する
ことを特徴とする請求項１または２に記載の加工プログラム編集装置。
【請求項４】
工作機械を制御する数値制御装置によって実行される加工プログラムを編集する加工プログラム編集装置であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理部と、
前記加工プログラムを先頭のブロックから解析して前記加工プログラムのブロック毎に前記工作機械に含まれるモータの指令位置を示す位置情報を記憶部に記憶する解析部と、
前記記憶部に記憶された位置情報に基づき、前記表示部に表示されるカーソル位置に入力される移動指令によって前記モータの指令位置が設定範囲外になるか否かを判定する指令位置判定部と、を備え、
前記表示処理部は、
前記入力される移動指令によって指令位置が前記設定範囲外になると前記指令位置判定部によって判定された場合に、前記モータの指令位置が前記設定範囲外になったことを示す警告情報を前記表示部に表示する
ことを特徴とする加工プログラム編集装置。
【請求項５】
工作機械を制御する数値制御装置によって実行される加工プログラムを編集する加工プログラム編集装置であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理部と、
前記加工プログラムを先頭のブロックからブロック毎に有効なモーダル指令を解析すると共に前記有効なモーダル指令が初期パラメータであるか否かの種別を判定し、前記ブロック毎に前記有効なモーダル指令と前記種別とを示すモーダル情報を記憶部に記憶する解析部と、
前記表示部に表示されるカーソル位置のブロックで有効なモーダル指令を示すモーダル情報を前記記憶部に記憶された前記ブロック毎の有効なモーダル指令の中から抽出する抽出部と、を備え、
前記表示処理部は、
前記抽出部によって抽出されたモーダル情報に基づき、前記カーソル位置のブロックで前記有効なモーダル指令と前記種別とを前記表示部に表示する
ことを特徴とする加工プログラム編集装置。
【請求項６】
前記加工プログラムの呼び出し元であるメインプログラムを検索するメインプログラム検索部を備え、
前記解析部は、
前記加工プログラムの先頭のブロックに代えて、前記メインプログラムの先頭のブロックから前記解析を行う
ことを特徴とする請求項１から５のいずれか一つに記載の加工プログラム編集装置。
【請求項７】
前記リストに含まれるモーダル指令の中から入力部への入力操作によってモーダル指令が選択された場合に、前記加工プログラムに前記選択されたモーダル指令を追加する入力処理部を備える
ことを特徴とする請求項１から６のいずれか一つに記載の加工プログラム編集装置。
【請求項８】
工作機械を制御する数値制御装置によって実行される加工プログラムをコンピュータが編集する加工プログラム編集方法であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理ステップと、
前記複数のブロックのうち先頭のブロックから前記ブロック毎に有効なモーダル指令を解析し、前記ブロック毎に有効なモーダル指令を含むモーダル情報を記憶部に記憶する解析ステップと、
前記表示部に表示されるカーソル位置のブロックにおいて有効なモーダル指令を前記記憶部に記憶された前記複数のブロックの前記モーダル情報の中から抽出する抽出ステップと、
前記抽出ステップにより抽出された前記有効なモーダル指令に基づき、前記カーソル位置のブロックにおいて使用可能な複数のモーダル指令のリストを生成する指令候補生成ステップと、を含み、
前記指令候補生成ステップは、
前記カーソル位置に文字列が入力される場合に、前記リストに含まれる前記複数のモーダル指令の中から前記文字列を含むモーダル指令を抽出して新たなリストを生成し、
前記表示処理ステップは、
前記指令候補生成ステップによって生成される前記リストを前記表示部に表示する
ことを特徴とする加工プログラム編集方法。
【請求項９】
工作機械を制御する数値制御装置によって実行される加工プログラムをコンピュータが編集する加工プログラム編集方法であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理ステップと、
前記加工プログラムを先頭のブロックから解析して前記加工プログラムのブロック毎に前記工作機械に含まれるモータの指令位置を示す位置情報を記憶部に記憶する解析ステップと、
前記記憶部に記憶された位置情報に基づき、前記表示部に表示されるカーソル位置に入力される移動指令によって前記モータの指令位置が設定範囲外になるか否かを判定する指令位置判定ステップと、を含み、
前記表示処理ステップは、
入力される移動指令によって指令位置が前記設定範囲外になると前記指令位置判定ステップによって判定された場合に、前記モータの指令位置が前記設定範囲外になったことを示す警告情報を前記表示部に表示する
ことを特徴とする加工プログラム編集方法。
【請求項１０】
工作機械を制御する数値制御装置によって実行される加工プログラムをコンピュータが編集する加工プログラム編集方法であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理ステップと、
前記加工プログラムを先頭のブロックからブロック毎に有効なモーダル指令を解析すると共に前記有効なモーダル指令が初期パラメータであるか否かの種別を判定し、前記ブロック毎に前記有効なモーダル指令と前記種別とを示すモーダル情報を記憶部に記憶する解析ステップと、
前記表示部に表示されるカーソル位置のブロックで有効なモーダル指令を示すモーダル情報を前記記憶部に記憶された前記ブロック毎の有効なモーダル指令の中から抽出する抽出ステップと、を含み、
前記表示処理ステップは、
前記抽出ステップによって抽出されたモーダル情報に基づき、前記カーソル位置のブロックで前記有効なモーダル指令と前記種別とを前記表示部に表示する
ことを特徴とする加工プログラム編集方法。
【請求項１１】
工作機械を制御する数値制御装置によって実行される加工プログラムを編集する加工プログラム編集プログラムであって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理ステップと、
前記複数のブロックのうち先頭のブロックから前記ブロック毎に有効なモーダル指令を解析し、前記ブロック毎に有効なモーダル指令を含むモーダル情報を記憶部に記憶する解析ステップと、
前記表示部に表示されるカーソル位置のブロックにおいて有効なモーダル指令を前記記憶部に記憶された前記複数のブロックの前記モーダル情報の中から抽出する抽出ステップと、
前記抽出ステップにより抽出された前記有効なモーダル指令に基づき、前記カーソル位置のブロックにおいて使用可能な複数のモーダル指令のリストを生成する指令候補生成ステップと、をコンピュータに実行させ、
前記指令候補生成ステップは、
前記カーソル位置に文字列が入力される場合に、前記リストに含まれる前記複数のモーダル指令の中から前記文字列を含むモーダル指令を抽出して新たなリストを生成し、
前記表示処理ステップは、
前記指令候補生成ステップによって生成される前記リストを前記表示部に表示する
ことを特徴とする加工プログラム編集プログラム。
【請求項１２】
工作機械を制御する数値制御装置によって実行される加工プログラムをコンピュータが編集する加工プログラム編集方法であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理ステップと、
前記加工プログラムを先頭のブロックから解析して前記加工プログラムのブロック毎に前記工作機械に含まれるモータの指令位置を示す位置情報を記憶部に記憶する解析ステップと、
前記記憶部に記憶された位置情報に基づき、前記表示部に表示されるカーソル位置に入力される移動指令によって前記モータの指令位置が設定範囲外になるか否かを判定する指令位置判定ステップと、をコンピュータに実行させ、
前記表示処理ステップは、
入力される移動指令によって指令位置が前記設定範囲外になると前記指令位置判定ステップによって判定された場合に、前記モータの指令位置が前記設定範囲外になったことを示す警告情報を前記表示部に表示する
ことを特徴とする加工プログラム編集プログラム。
【請求項１３】
工作機械を制御する数値制御装置によって実行される加工プログラムをコンピュータが編集する加工プログラム編集方法であって、
前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する表示処理ステップと、
前記加工プログラムを先頭のブロックからブロック毎に有効なモーダル指令を解析すると共に前記有効なモーダル指令が初期パラメータであるか否かの種別を判定し、前記ブロック毎に前記有効なモーダル指令と前記種別とを示すモーダル情報を記憶部に記憶する解析ステップと、
前記表示部に表示されるカーソル位置のブロックで有効なモーダル指令を示すモーダル情報を前記記憶部に記憶された前記ブロック毎の有効なモーダル指令の中から抽出する抽出ステップと、をコンピュータに実行させ、
前記表示処理ステップは、
前記抽出ステップによって抽出されたモーダル情報に基づき、前記カーソル位置のブロックで前記有効なモーダル指令と前記種別とを前記表示部に表示する
ことを特徴とする加工プログラム編集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、工作機械に搭載される数値制御装置によって実行される加工プログラムを編集する加工プログラム編集装置、加工プログラム編集方法、および加工プログラム編集プログラムに関する。
【背景技術】
【０００２】
工作機械に搭載される数値制御装置は、加工プログラムに記述された情報に従って、工作機械を構成するモータを制御することで、工作機械による被加工物の加工を行う。
【０００３】
加工プログラムは、数値制御装置上または汎用的なパーソナルコンピュータ上に搭載された加工プログラム編集装置で作成される。かかる加工プログラム編集装置は、オペレータの指示により、現在の編集位置を指し示すカーソルを移動させ、加工プログラムを編集する。
【０００４】
加工プログラムに用いられる様々な指令は、アンモーダル指令とモーダル指令とに分類することができる。アンモーダル指令は、指令したブロックでのみ有効であるが、モーダル指令は、一度指令すれば同じグループの別の指令があるまで有効である。したがって、カーソル位置のブロックで有効なモーダル指令をオペレータが知るには、カーソル位置から加工プログラムの先頭に向かってモーダル指令を調べる必要がある。
【０００５】
特許文献１には、加工プログラムの編集作業の効率化を図るために、加工プログラムの先頭からカーソル位置の直前のブロックまたはカーソル位置のブロックまでを解釈し、カーソル位置で有効な指令を作成してオペレータに表示する装置が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平１０−１３３７２６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に記載の装置では、カーソル位置で有効な指令を表示することができるが、編集ミスによって加工プログラムの編集作業を効率的に行うことができない場合がある。
【０００８】
本発明は、上記に鑑みてなされたものであって、効率的に加工プログラムの編集作業を行うことができる加工プログラム編集装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明の加工プログラム編集装置は、工作機械を制御する数値制御装置によって実行される加工プログラムを編集する加工プログラム編集装置であって、表示処理部と、解析部と、抽出部と、指令候補生成部とを備える。前記表示処理部は、前記加工プログラムに含まれる複数のブロックのうちの少なくとも一部を表示部に表示する。前記解析部は、前記複数のブロックのうち先頭のブロックから前記ブロック毎に有効なモーダル指令を解析し、前記ブロック毎に有効なモーダル指令を含むモーダル情報を記憶部に記憶する。前記抽出部は、前記表示部に表示されるカーソル位置のブロックにおいて有効なモーダル指令を前記記憶部に記憶された前記複数のブロックの前記モーダル情報の中から抽出する。前記指令候補生成部は、前記抽出部により抽出された前記有効なモーダル指令に基づき、前記カーソル位置のブロックにおいて使用可能な複数のモーダル指令のリストを生成する。前記指令候補生成部は、前記カーソル位置に文字列が入力される場合に、前記リストに含まれる前記複数のモーダル指令の中から前記文字列を含むモーダル指令を抽出して新たなリストを生成する。前記表示処理部は、前記指令候補生成部によって生成される前記リストを前記表示部に表示する。
【発明の効果】
【００１０】
本発明によれば、効率的に加工プログラムの編集作業を行うことができる、という効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１にかかる加工プログラム編集装置の構成例を示す図
【図２】実施の形態１にかかる使用可能指令リストの一例を示す図
【図３】実施の形態１にかかるモーダル指令−指令使用可否対応表の一例を示す図
【図４】実施の形態１にかかるブロック毎モーダル情報の一例を示す図
【図５】実施の形態１にかかるブロック毎指令位置情報の一例を示す図
【図６】実施の形態１にかかる加工プログラム編集装置の処理部の処理の一例を示すフローチャート
【図７】実施の形態１にかかる編集開始処理を示すフローチャート
【図８】実施の形態１にかかる解析処理を示すフローチャート
【図９】実施の形態１にかかる各グループのモーダル指令の初期状態と、ブロック毎の有効なモーダル指令とを示す図
【図１０】実施の形態１にかかる使用可能指令リスト作成処理を示すフローチャート
【図１１】実施の形態１にかかる使用可能指令リストの一例を示す図
【図１２】実施の形態１にかかる入力支援処理を示すフローチャート
【図１３】実施の形態１にかかる表示処理部によって表示部に表示される表示画面の遷移例を示す図
【図１４】図１３に示す表示画面の状態から、さらに続く１以上の文字が入力された場合の表示画面の一例を示す図
【図１５】実施の形態１にかかる加工プログラム編集装置のハードウェア構成の一例を示す図
【図１６】実施の形態２にかかる加工プログラム編集装置の構成を示す図
【図１７】実施の形態２にかかる可動範囲を示すパラメータを含む可動範囲情報テーブルの一例を示す図
【図１８】実施の形態２にかかる座標設定パラメータを含む座標設定情報テーブルの一例を示す図
【図１９】実施の形態２にかかる加工プログラム編集部が実行する入力支援処理を示すフローチャート
【図２０】実施の形態２にかかる表示部の表示画面の一例を示す図
【図２１】実施の形態３にかかる加工プログラム編集装置の構成を示す図
【図２２】実施の形態３にかかるブロック毎モーダル情報の一例を示す図
【図２３】実施の形態３にかかる解析処理を示すフローチャート
【図２４】実施の形態３にかかるモーダル情報の表示処理を示すフローチャート
【図２５】実施の形態３における表示部の表示画面の一例を示す図
【図２６】実施の形態４にかかる加工プログラム編集装置の構成を示す図
【図２７】実施の形態４にかかる編集開始処理を示すフローチャート
【図２８】実施の形態４にかかる表示部の表示画面の一例を示す図
【図２９】実施の形態４にかかるメインプログラムの一例を示す図
【発明を実施するための形態】
【００１２】
以下に、本発明の実施の形態にかかる加工プログラム編集装置、加工プログラム編集方法、および加工プログラム編集プログラムを図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１３】
実施の形態１．
図１は、本発明の実施の形態１にかかる加工プログラム編集装置１の構成例を示す図である。図１に示すように、実施の形態１にかかる加工プログラム編集装置１は、不図示の工作機械に搭載された数値制御装置で実行される加工プログラムを編集する機能を有している。なお、数値制御装置は、加工プログラムに記述された情報に従って、工作機械を構成する各モータを制御することで、工作機械による被加工物の加工を行う。
【００１４】
図１に示すように、加工プログラム編集装置１は、記憶部２と、処理部３と、入力部４と、表示部５とを備える。記憶部２には、編集対象の加工プログラム２１が記憶される。処理部３は、記憶部２に記憶されている加工プログラム２１に含まれる複数のブロックのうちの少なくとも一部を読み出して表示部５に表示する。
【００１５】
加工プログラム２１に含まれる各ブロックには、被加工物の加工手順を実行するための指令が含まれる。指令の最小単位をワードと呼び、ワードはアドレスとデータから構成される。アドレスはアルファベットで表され、データは数値で表される。ブロックとは、区切り記号で区切られたワードの集まりを指す。区切り記号は行末に表示されるか、改行として扱われるため、ブロックは１行の文字列を意味する。なお、以下においては、区切り記号が「；」であるものとして説明する。また、文字列が全く無い行もブロックとして扱う。すなわち、指令が設定される前の状態である行もブロックとして扱う。
【００１６】
加工プログラム２１の編集を行うオペレータは、入力部４への入力操作を行って加工プログラム編集装置１への指示を行うことができる。処理部３は、オペレータの指示に基づき、現在の編集位置を指し示すカーソルを移動させ、さらに、オペレータからの指示に基づき、編集位置のブロックの編集を行って加工プログラムを編集する。
【００１７】
記憶部２は、加工プログラム２１と、工作機械パラメータ２２と、使用可能指令リスト２３と、モーダル指令−指令使用可否対応表２４と、ブロック毎モーダル情報２５と、ブロック毎指令位置情報２６とを記憶する。
【００１８】
加工プログラム２１は、上述のように、被加工物の加工手順を実行するための複数のブロックを含んでおり、ＮＣ（Numerical  Control）プログラムと呼ばれることもある。かかる加工プログラム２１は、ＩＳＯ／ＥＩＡコードで構成される加工プログラムであるが、ＩＳＯ／ＥＩＡコード以外のプログラムであってもよい。
【００１９】
加工プログラム２１に用いられる複数の指令には、モーダル指令とアンモーダル指令とが含まれる。モーダル指令は、一度指令すれば同じグループの別の指令があるまで有効であり、アンモーダル指令は、指令したブロックでのみ有効である。グループとは、同じ目的を持つ指令の集合であり、例えば「移動」という同じ目的を持つ「Ｇ０位置決め」「Ｇ１直線補間」「Ｇ２円弧補間ＣＷ」「Ｇ３円弧補間ＣＣＷ」などは、同じグループである後述のグループ「０１」に属する。
【００２０】
また、加工プログラム２１に用いられる複数の指令には、工作機械に搭載された複数のモータの移動を制御する指令が含まれる。例えば、「Ｘ」と名づけたモータへの移動指令は、アドレスに「Ｘ」、データに移動位置、もしくは移動量を表す数値を用いることで指令する。これら複数の移動指令には、絶対値指令と増分値指令とが含まれる。絶対値指令は、絶対的な指令位置への移動を指令することができ、増分値指令は、前ブロックでの指令位置からの増分量で移動を指令することができる。なお、指令位置は、移動指令により指令される位置である。
【００２１】
工作機械パラメータ２２は、加工プログラム２１を実行するために用いられる複数のパラメータを含む。これら複数のパラメータには、工作機械の種別を示すパラメータ、およびモーダル指令の初期状態を規定するパラメータが含まれる。
【００２２】
使用可能指令リスト２３は、工作機械種別毎の使用可能指令リスト２７を含む。各使用可能指令リスト２７は、対象種別の工作機械で使用可能な全指令の各々について指令と指令の説明とを含む情報であり、種別毎の情報である。
【００２３】
図２は、使用可能指令リスト２７の一例を示す図である。図２に示す使用可能指令リスト２７では、対象種別の工作機械で使用できる指令として、「Ｇ０」、「Ｇ１」、「Ｇ２」、「Ｇ３」、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、「Ｇ３．４」、「Ｇ４」、および「Ｇ５」といったＧコードが含まれる。
【００２４】
また、使用可能指令リスト２７では、「Ｇ０」には「位置決め」、「Ｇ１」には「直線補間」、「Ｇ２」には「円弧補間ＣＷ」、「Ｇ３」には「円弧補間ＣＣＷ」といったように、指令の内容を示す説明文が各指令に関連付けられている。
【００２５】
図１に戻って、記憶部２の説明を続ける。記憶部２に記憶されるモーダル指令−指令使用可否対応表２４は、有効なモーダル指令の後に使用可能な指令をモーダル指令毎に関連付けた情報である。
【００２６】
図３は、モーダル指令−指令使用可否対応表２４の一例を示す図である。かかるモーダル指令−指令使用可否対応表２４では、使用可能な指令に「１」が関連付けられ、使用可能でない指令に「０」が関連付けられている。
【００２７】
図３に示す例では、モーダル指令である「Ｇ６８」について、「Ｇ０」、「Ｇ１」、「Ｇ２」、「Ｇ３」、「Ｇ４」、および「Ｇ５」に「１」が関連付けられ、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３.４」に「０」が関連付けられている。
【００２８】
したがって、図３に示す例では、有効なモーダル指令が「Ｇ６８」である場合、「Ｇ６８」の後に、「Ｇ０」、「Ｇ１」、「Ｇ２」、「Ｇ３」、「Ｇ４」、および「Ｇ５」は使用できるが、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３.４」は使用できないことが示される。
【００２９】
図１に戻って、記憶部２の説明を続ける。記憶部２に記憶されるブロック毎モーダル情報２５は、ブロック毎の有効なモーダル指令を含む情報である。図４は、ブロック毎モーダル情報２５の一例を示す図である。
【００３０】
図４に示すブロック毎モーダル情報２５は、ブロック番号毎に、各グループの有効モーダルを示す情報が含まれる。図４に示す例では、グループ「０１」の有効モーダル指令は、ブロック番号「１」のブロックでは「Ｇ０」であり、ブロック番号「Ｎ」のブロックでは「Ｇ１」である。なお、ブロック番号「１」のブロックは、加工プログラム２１の先頭ブロックを示す。
【００３１】
また、グループ「１３」の有効モーダル指令は、ブロック番号「１」のブロックでは「Ｇ６１．１」であり、ブロック番号「Ｎ」のブロックでは「Ｇ６１．１」である。図４において、「Ｎ」は、２以上の整数であり、「Ｌ」は、１４以上の整数である。
【００３２】
図１に戻って、記憶部２の説明を続ける。記憶部２に記憶されるブロック毎指令位置情報２６は、ブロック毎の指令位置を含む情報である。図５は、ブロック毎指令位置情報２６の一例を示す図である。
【００３３】
また、図５に示すブロック毎指令位置情報２６では、ブロック番号「１」のブロックにおけるモータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置として、「０．」、「０．」、「０．」、「０．」、および「０．」を示す情報が含まる。また、ブロック毎指令位置情報２６では、ブロック番号「Ｎ」のブロックにおけるモータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置として、「７１５．」、「５０５．」、「−３００．」、「０．」、および「０．」を示す情報が含まる。なお、モータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置は、各々Ｘ軸，Ｙ軸，Ｚ軸，Ａ軸，およびＣ軸の指令位置である。
【００３４】
図１に戻って、処理部３の説明を続ける。処理部３は、編集部の一例である加工プログラム編集部３０と、解析部の一例である加工プログラム解析部４０とを備える。加工プログラム編集部３０は、オペレータの入力部４への入力操作に基づいて、加工プログラム２１を記憶部２から読み出し、読み出した加工プログラム２１を表示部５に表示する。また、加工プログラム編集部３０は、オペレータの入力部４への入力操作に基づいて、表示部５に表示された加工プログラム２１を編集する。
【００３５】
加工プログラム解析部４０は、加工プログラム２１を構成する複数のブロックのうち先頭のブロックからブロック毎に有効なモーダル指令を解析する。加工プログラム解析部４０は、解析したブロック毎に有効モーダル指令の情報を含むモーダル情報を生成して、生成したブロック毎のモーダル情報を含むブロック毎モーダル情報２５を生成して記憶部２に記憶する。
【００３６】
加工プログラム編集部３０は、オペレータの入力部４への入力操作に基づいて、表示部５に表示されて現在の編集位置を指し示すカーソルを移動させる。加工プログラム編集部３０は、記憶部２に記憶されたモーダル情報に基づいて、表示部５に表示されるカーソル位置のブロックにおいて有効なモーダル指令を判定する。なお、「表示部５に表示されるカーソル位置」は、表示部５に表示されるカーソルの位置であり、以下において、カーソル位置またはカーソルの位置と記載する場合がある。
【００３７】
加工プログラム編集部３０は、カーソル位置のブロックにおいて有効なモーダル指令に基づき、カーソル位置のブロックにおいて使用可能なモーダル指令のリストである使用可能指令リストを生成する。加工プログラム編集部３０は、生成した使用可能指令リストを表示部５に表示する。
【００３８】
ここで、オペレータが入力部４への入力操作により、カーソルの位置に指令の少なくとも一部の文字を含む文字列を入力する指示を行ったとする。この場合、加工プログラム編集部３０は、使用可能指令リストに含まれる複数のモーダル指令の中から入力された文字列を含むモーダル指令を抽出することで、カーソル位置のブロックにおいて使用可能なモーダル指令を絞り込んだ新たな使用可能指令リストを生成する。そして、加工プログラム編集部３０は、生成した新たな使用可能指令リストを表示部５に表示する。
【００３９】
その後、オペレータが入力部４への入力操作により、さらに続く文字を入力する指示を行った場合、加工プログラム編集部３０は、入力済の文字に加えてさらに続く文字を含むモーダル指令を抽出して使用可能なモーダル指令を絞り込んだ新たな使用可能指令リストを生成し、表示部５に表示する。
【００４０】
このように、加工プログラム編集部３０は、オペレータが入力部４への入力操作により、文字を入力する指示が行われる毎に、使用可能なモーダル指令を絞り込んだ使用可能指令リストを生成し、表示部５に表示する。これにより、オペレータは入力しようとしている指令が使用可能であるかを確認することができ、編集ミスを防止して効率的に加工プログラム２１の編集作業を行うことができる。
【００４１】
また、加工プログラム編集部３０は、使用可能な指令に加え、使用可能な指令の説明文が含まれる使用可能指令リストを生成して表示部５に表示することができる。これにより、オペレータは入力しようとしている指令が使用可能であるか否かに加え、使用可能な指令の説明文を確認することができるため、さらに効率的に加工プログラム２１の編集作業を行うことができる。
【００４２】
また、加工プログラム編集部３０は、オペレータが入力部４への入力操作により、入力された文字列を含む指令が使用可能指令リストに含まれない場合、入力された指令が使用できないことを示す警告を表示部５に表示する。これにより、オペレータが使用不可能な指令を入力することを防ぐことができる。また、加工プログラム２１の編集作業完了後において、工作機械の数値制御装置上に搭載された不図示の加工プログラムチェック装置を用いて加工プログラム２１が正しい指令が記述されているかどうかを確認する必要が無く、また、オペレータは加工プログラムチェック装置を用いたチェック前に加工プログラム２１の編集ミスに気づくことができるため、効率的に加工プログラム２１の編集作業を行うことができる。
【００４３】
以下、加工プログラム編集部３０および加工プログラム解析部４０についてさらに詳細に説明する。図１に示すように、加工プログラム編集部３０は、入力処理部３１と、表示処理部３２と、カーソル位置判定部３３と、有効モーダル抽出部３４と、指令候補生成部３５とを備える。また、加工プログラム解析部４０は、読込処理部４１と、モーダル処理部４２と、座標処理部４３とを備える。
【００４４】
以下、加工プログラム編集部３０および加工プログラム解析部４０を含む処理部３の処理を、フローチャートを用いて説明する。図６は、実施の形態１にかかる加工プログラム編集装置１の処理部３の処理の一例を示すフローチャートであり、かかる処理は処理部３によって繰り返し実行される。
【００４５】
図６に示すように、加工プログラム編集部３０の入力処理部３１は、加工プログラム２１の編集開始指示があるか否かを判定する（ステップＳ１０）。かかる編集開始指示は、オペレータによる入力部４への入力操作によって行われる。
【００４６】
加工プログラム編集部３０により加工プログラム２１の編集開始指示があったと判定された場合（ステップＳ１０：Ｙｅｓ）、加工プログラム編集部３０は、入力部４への入力操作に従って、編集開始処理を実行する（ステップＳ１１）。ステップＳ１１の処理は、図７に示すステップＳ２０〜Ｓ２２の処理であり、後で詳述する。
【００４７】
加工プログラム編集部３０は、ステップＳ１１の処理が終了した場合、または加工プログラム２１の編集開始指示がないと判定した場合（ステップＳ１０：Ｎｏ）、編集位置の指定があるか否かを判定する（ステップＳ１２）。編集位置の指定とは、表示部５において加工プログラム２１の表示領域に表示されるカーソルの位置を指定することを意味する。かかる編集位置の指定は、オペレータによる入力部４への入力操作によって行われる。
【００４８】
加工プログラム編集部３０は、編集位置の指定があると判定した場合（ステップＳ１２：Ｙｅｓ）、使用可能指令リスト作成処理を実行する（ステップＳ１３）。かかる使用可能指令リスト作成処理は、図１０に示すステップＳ４１〜Ｓ４５の処理であり、後で詳述する。
【００４９】
加工プログラム編集部３０は、ステップＳ１３の処理が終了した場合、または、編集位置の指定がないと判定した場合（ステップＳ１２：Ｎｏ）、文字入力があるか否かを判定する（ステップＳ１４）。ステップＳ１４の処理において、加工プログラム編集部３０は、カーソルの位置へ文字を入力する指示がある場合に、文字入力があると判定する。文字を入力する指示は、オペレータによる入力部４への入力操作によって行われる。
【００５０】
加工プログラム編集部３０は、文字入力があると判定した場合（ステップＳ１４：Ｙｅｓ）、入力支援処理を実行する（ステップＳ１５）。かかる入力支援処理は、図１２に示すステップＳ５０〜Ｓ５６の処理であり、後で詳述する。
【００５１】
ステップＳ１５の処理が終了した場合、または文字入力がないと判定された場合（ステップＳ１４：Ｎｏ）、処理部３は、図６に示す処理を終了する。
【００５２】
図７は、図６に示すステップＳ１１の編集開始処理を示すフローチャートである。図７に示すように、加工プログラム編集部３０は、記憶部２から加工プログラム２１を読み出す（ステップＳ２０）。加工プログラム編集部３０の表示処理部３２は、ステップＳ２０で読み出された加工プログラム２１を構成する複数のブロックのうち少なくとも一部のブロックを表示部５に表示する（ステップＳ２１）。
【００５３】
次に、処理部３の加工プログラム解析部４０は、記憶部２に記憶された加工プログラム２１の解析処理を行う（ステップＳ２２）。なお、図７に示す処理では、ステップＳ２１の処理の後に、ステップＳ２２の処理が行われるが、処理部３は、ステップＳ２１の処理とステップＳ２２の処理とを平行して行うことができ、また、ステップＳ２２の処理の後に、ステップＳ２１の処理を行うこともできる。
【００５４】
図８は、図７に示すステップＳ２２の解析処理を示すフローチャートである。図８に示すように、加工プログラム解析部４０の読込処理部４１は、記憶部２に記憶された加工プログラム２１から先頭のブロックを読み出す（ステップＳ３０）。
【００５５】
次に、加工プログラム解析部４０のモーダル処理部４２は、ステップＳ３０で読み出された先頭のブロックで有効なモーダル指令を抽出する（ステップＳ３１）。ステップＳ３１において、モーダル処理部４２は、工作機械パラメータ２２に含まれる情報および先頭のブロックの情報に基づいて、グループ毎に先頭のブロックで有効なモーダル指令を抽出する。
【００５６】
図９は、各グループのモーダル指令の初期状態と、ブロック毎の有効なモーダル指令とを示す図である。図９において、矢印の部分は、モーダル指令がブロックに含まれていないことを示す。
【００５７】
図９に示す例では、初期状態のモーダル指令が、グループ「０１」では「Ｇ０」、グループ「０２」では「Ｇ１７」、およびグループ「１３」では「Ｇ６１．１」であり、ブロック番号「１」のブロックには、グループ「０１」、「０２」、および「１３」のモーダル指令が含まれない。
【００５８】
したがって、加工プログラム２１が図９に示す状態である場合、モーダル処理部４２は、先頭のブロックにおけるグループ毎の有効なモーダル指令として、グループ「０１」では「Ｇ０」、グループ「０２」では「Ｇ１７」、およびグループ「１３」では「Ｇ６１．１」を抽出する。なお、工作機械パラメータ２２には、モーダル指令の初期状態を規定するパラメータが含まれており、各グループのモーダル指令の初期状態は、モーダル指令の初期状態を規定するパラメータに基づいて、モーダル処理部４２によって判定される。
【００５９】
図８に戻って加工プログラム解析部４０の処理の説明を続ける。ステップＳ３１の処理の後、モーダル処理部４２は、ステップＳ３１で抽出した有効なモーダル指令と「先頭のブロック」のブロック番号「１」とを関連付けたモーダル情報を記憶部２に記憶する（ステップＳ３２）。これにより、先頭のブロックのモーダル情報を含むブロック毎モーダル情報２５が生成される。
【００６０】
次に、加工プログラム解析部４０の座標処理部４３は、不図示の工作機械に搭載された各モータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置を演算する（ステップＳ３３）。
【００６１】
ステップＳ３３において、座標処理部４３は、加工プログラム２１の先頭のブロックに含まれる移動指令で指定される座標位置に基づいて、先頭のブロックにおける各モータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置を演算する。先頭のブロックに含まれる移動指令が絶対値指令の場合、絶対値指令で指令された座標が指令位置である。先頭のブロックにおいて、移動指令が含まれない場合、座標処理部４３は、工作機械パラメータ２２に含まれる各モータＸ，Ｙ，Ｚ，Ａ，およびＣの初期値を各モータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置とすることができる。
【００６２】
加工プログラム解析部４０は、ステップＳ３３で演算された先頭のブロックでの指令位置と「先頭のブロック」のブロック番号「１」とを関連付けた指令位置情報を記憶部２に記憶する（ステップＳ３４）。これにより、先頭ブロックの指令位置を示す指令位置情報を含むブロック毎指令位置情報２６が生成される。
【００６３】
次に、加工プログラム解析部４０は、記憶部２に記憶された加工プログラム２１から次のブロックを読み出す（ステップＳ３５）。前回読み出したブロックが先頭のブロックである場合、「次のブロック」は、ブロック番号「２」のブロックであり、前回読み出したブロックがブロック番号「Ｎ−１」のブロックである場合、「次のブロック」は、ブロック番号「Ｎ」のブロックである。
【００６４】
加工プログラム解析部４０のモーダル処理部４２は、ステップＳ３１の処理と同様に、ステップＳ３５で読み出した「次のブロック」で有効なモーダル指令を抽出する（ステップＳ３６）。ステップＳ３６において、モーダル処理部４２は、グループ毎に「次のブロック」で有効なモーダル指令を抽出する。
【００６５】
「次のブロック」がブロック番号「Ｎ」のブロックであり、ブロック番号「Ｎ」のブロックまでの状態が図９に示す状態である場合、ブロック番号「Ｎ−１」までのブロックにおいて、グループ「０１」、「０２」、「１３」のモーダル指令が含まれていない。
【００６６】
したがって、記憶部２に記憶されているブロック番号「Ｎ−１」のモーダル情報には、グループ「０１」、「０２」、および「１３」において有効なモーダル指令が各々「Ｇ０」、「Ｇ１７」、および「Ｇ６１．１」であることを示す情報が含まれる。
【００６７】
モーダル処理部４２は、記憶部２に記憶されているブロック番号「Ｎ−１」のブロックに関連付けて記憶された各グループで有効なモーダル指令を示す情報をブロック毎モーダル情報２５から取得する。
【００６８】
ブロック番号「Ｎ」のブロックにおいては、図９に示すように、グループ「０１」のモーダル指令として「Ｇ１」が含まれている。したがって、モーダル処理部４２は、ブロック番号「Ｎ」のブロックにおいて、有効なモーダル指令として、グループ「０１」では「Ｇ１」を抽出する。また、ブロック番号「Ｎ」のブロックにおいては、グループ「０２」、「１３」のモーダル指令は含まれていないため、モーダル処理部４２は、グループ「０２」では「Ｇ１７」、およびグループ「１３」では「Ｇ６１．１」を抽出する。
【００６９】
モーダル処理部４２は、ステップＳ３６で抽出した「次のブロック」で有効なモーダル指令と「次のブロック」のブロック番号とを関連付けたモーダル情報を記憶部２に記憶する（ステップＳ３７）。これにより、「次のブロック」のモーダル情報がブロック毎モーダル情報２５に追加されて、先頭ブロックから「次のブロック」までの各ブロックのモーダル情報を含むブロック毎モーダル情報２５が生成されブロック毎モーダル情報２５が更新される。
【００７０】
また、加工プログラム解析部４０の座標処理部４３は、ステップＳ３５で読み出された「次のブロック」での各モータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置を演算する（ステップＳ３８）。
【００７１】
ステップＳ３８において、座標処理部４３は、ステップＳ３５で読み出された「次のブロック」に含まれる移動指令で指定される座標位置に基づいて、「次のブロック」における指令位置を演算する。「次のブロック」に含まれる移動指令が絶対値指令の場合、絶対値指令で指定された座標位置を指令位置とする。
【００７２】
また、座標処理部４３は、「次のブロック」に含まれる移動指令が増分値指令である場合、一つ前のブロックでの指令位置に増分値指令で指定される座標位置を加算することで、「次のブロック」における指令位置を演算する。
【００７３】
そして、加工プログラム解析部４０は、ステップＳ３８で演算された「次のブロック」での指令位置と「次のブロック」のブロック番号とを関連付けた指令位置情報を記憶部２に記憶する（ステップＳ３９）。これにより、「次のブロック」の指令位置情報がブロック毎指令位置情報２６に追加されて、先頭ブロックから「次のブロック」までの各ブロックの指令位置情報を含むブロック毎指令位置情報２６が生成されブロック毎指令位置情報２６が更新される。
【００７４】
次に、加工プログラム解析部４０は、すべてのブロックを解析したか否か、すなわち、加工プログラム２１を構成する複数のブロックのすべての解析が終了したか否かを判定する（ステップＳ４０）。加工プログラム解析部４０は、すべてのブロックを解析していないと判定した場合（ステップＳ４０：Ｎｏ）、処理をステップＳ３５へ進める。
【００７５】
また、加工プログラム解析部４０は、すべてのブロックを解析したと判定した場合（ステップＳ４０：Ｙｅｓ）、図８に示す処理を終了する。かかる図８に示す処理によって、図４に示すようなブロック毎モーダル情報２５と図５に示すようなブロック毎指令位置情報２６が生成される。
【００７６】
図１０は、図６に示すステップＳ１３の使用可能指令リスト作成処理を示すフローチャートである。図１０に示すように、加工プログラム編集部３０のカーソル位置判定部３３は、カーソル７０の位置であるカーソル位置のブロックを判定する（ステップＳ４１）。
【００７７】
加工プログラム編集部３０の有効モーダル抽出部３４は、カーソル位置判定部３３によってカーソルがあると判定されたブロックにおけるグループ毎の有効なモーダル指令を、記憶部２に記憶されたブロック毎モーダル情報２５から抽出する（ステップＳ４２）。
【００７８】
ここで、ブロック毎モーダル情報２５が図４に示す状態であり、ブロック毎モーダル情報２５にはブロック番号「Ｎ」までのモーダル情報が含まれており、かつ、カーソルの位置がブロック番号「Ｎ」のブロックであるとする。
【００７９】
この場合、有効モーダル抽出部３４は、ブロック毎モーダル情報２５から、有効なモーダル指令として、ブロック番号「Ｎ」のモーダル情報を抽出する。すなわち、有効モーダル抽出部３４は、ブロック毎モーダル情報２５から、有効なモーダル指令として、グループ「０１」では「Ｇ１」を、グループ「０２」では「Ｇ１７」を、グループ「１３」では「Ｇ６１．１」を各々抽出する。有効モーダル抽出部３４は、グループ「０２」〜「１２」についても同様に、ブロック毎モーダル情報２５から、有効なモーダル指令を抽出する。
【００８０】
このように、有効モーダル抽出部３４は、カーソル位置のブロックのブロック番号におけるモーダル情報に含まれる各グループのモーダル指令を有効なモーダル指令としてブロック毎モーダル情報２５から抽出することができる。
【００８１】
なお、有効モーダル抽出部３４は、カーソルの位置までで有効な各グループのモーダル指令をブロック毎モーダル情報２５から抽出することもできる。カーソルの位置がブロック番号「Ｎ＋１」のブロックの先頭にある場合、カーソルの位置までで有効なモーダル指令は、ブロック番号「Ｎ」のブロックで有効なモーダル指令と同じである。この場合、有効モーダル抽出部３４は、ブロック毎モーダル情報２５から、有効なモーダル指令として、ブロック番号「Ｎ」のモーダル情報を抽出することができる。
【００８２】
また、カーソルの位置がブロック番号「Ｎ＋１」のブロックの先頭になく、ブロック番号「Ｎ＋１」のブロックでモーダル指令の後にカーソルの位置があるとし、また、ブロック毎モーダル情報２５にはブロック番号「Ｎ＋１」のモーダル情報が含まれているとする。この場合、有効モーダル抽出部３４は、ブロック番号「Ｎ＋１」のブロックに含まれるモーダル指令を含むカーソルの位置までで有効な各グループのモーダル指令をブロック毎モーダル情報２５から抽出することができる。
【００８３】
ここで、ブロック番号「Ｎ」のモーダル情報に含まれる各グループのモーダル指令のうち、ブロック番号「Ｎ＋１」のブロックにおいて、カーソルの位置の前にモーダル指令としてグループ「０１」の「Ｇ２」のみが含まれているとする。
【００８４】
この場合、有効モーダル抽出部３４は、ブロック番号「Ｎ＋１」のモーダル情報からグループ「０１」のモーダル指令である「Ｇ２」を有効なモーダル指令として読み出し、その他のグループ「０２」〜「１３」については、ブロック番号「Ｎ」のモーダル情報から有効なモーダル指令を抽出する。
【００８５】
このように、有効モーダル抽出部３４は、カーソル位置判定部３３によってカーソルの位置があると判定されたブロックにおけるグループ毎の有効なモーダル指令を、記憶部２に記憶されたブロック毎モーダル情報２５から抽出することができる。
【００８６】
次に、加工プログラム編集部３０の指令候補生成部３５は、記憶部２からモーダル指令−指令使用可否対応表２４を読み出す（ステップＳ４３）。そして、指令候補生成部３５は、ステップＳ４２で抽出したカーソル位置のブロックにおけるグループ毎の有効なモーダル指令と、ステップＳ４３で読み出したモーダル指令−指令使用可否対応表２４とに基づいて、カーソル位置のブロックで使用可能な指令を抽出する（ステップＳ４４）。
【００８７】
ここで、モーダル指令−指令使用可否対応表２４が図３に示す状態であり、カーソル位置のブロックで有効なモーダルとして「Ｇ６８」を含むとする。モーダル指令−指令使用可否対応表２４において、「Ｇ６８」に「０」が関連付けられている指令は、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３．４」であり、カーソル位置のブロックでは、使用可能な指令ではない。
【００８８】
したがって、指令候補生成部３５は、使用可能な指令として抽出する指令から、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３．４」を除外する。同様に、指令候補生成部３５は、カーソルの位置のブロックで有効なモーダル指令のうち、モーダル指令−指令使用可否対応表２４において「Ｇ６８」以外のモーダル指令で「０」が関連付けられている指令を、使用可能な指令として抽出する指令から除外する。
【００８９】
また、指令候補生成部３５は、ステップＳ４４で抽出した使用可能な指令の説明文を使用可能指令リスト２７から抽出して、ステップＳ４４で抽出した使用可能な指令と説明文とを含む使用可能指令リストを生成する（ステップＳ４５）。加工プログラム編集部３０は、ステップＳ４５の処理を終了すると、図１０に示す処理を終了する。
【００９０】
ステップＳ４５の処理において、指令候補生成部３５は、記憶部２に記憶された工作機械パラメータ２２に含まれる工作機械の種別を示すパラメータを読み出す。指令候補生成部３５は、読み出した工作機械の種別を示すパラメータに基づいて、記憶部２に記憶された使用可能指令リスト２３の中からパラメータで設定された種別の使用可能指令リスト２７を読み出す。
【００９１】
そして、指令候補生成部３５は、読み出した使用可能指令リスト２７から、ステップＳ４４で抽出した使用可能な指令の説明文を抽出する。指令候補生成部３５は、ステップＳ４４で抽出した使用可能な指令と説明文とを関連付けた使用可能指令リストを生成する。指令の説明文は、工作機械の種別によって一部異なる場合があるが、このような場合でも、設定された工作機械の種別に対応する適切な使用可能指令リストを生成することができる。
【００９２】
図１１は、ステップＳ４５において生成される使用可能指令リストの一例を示す図であり、カーソルの位置があると判定されたブロックで有効なモーダル指令に「Ｇ６８」を含む場合の使用可能指令リストである。上述したように、有効なモーダル指令に「Ｇ６８」が含まれる場合、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３．４」は使用できない。
【００９３】
したがって、図１１に示す使用可能指令リスト５１は、使用可能な指令として、「Ｇ０」、「Ｇ１」、「Ｇ２」、「Ｇ３」、「Ｇ４」、および「Ｇ５」を含むが、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３．４」は含まれない。
【００９４】
また、使用可能指令リスト５１には、使用可能なモーダル指令に、使用可能なモーダル指令の説明文が関連付けられる。例えば、図１１に示す使用可能指令リスト５１では、「Ｇ０」の説明文として「位置決め」が「Ｇ０」に関連付けられ、「Ｇ１」の説明文として「直線補間」が「Ｇ１」に関連付けられている。
【００９５】
図１２は、図６に示すステップＳ１５の入力支援処理を示すフローチャートである。図１２に示すように、加工プログラム編集部３０の入力処理部３１は、図６のステップＳ１４で入力があったと判定された文字を、表示部５に表示される加工プログラム２１に追加する（ステップＳ５０）。
【００９６】
次に、入力処理部３１は、ステップＳ１４で入力があったと判定された文字である入力文字が指令の文字を含むか否かを判定する（ステップＳ５１）。加工プログラム編集部３０の指令候補生成部３５は、入力文字に指令の文字が含まれると判定した場合（ステップＳ５１：Ｙｅｓ）、リスト更新、すなわち、使用可能指令リスト５１の更新が必要か否かを判定する（ステップＳ５２）。
【００９７】
ステップＳ５２において、指令候補生成部３５は、前回入力された文字が指令の文字に含まれており、前回入力された文字にさらに続く文字が入力された場合に使用可能指令リスト５１の更新であると判定する。例えば、指令候補生成部３５は、前回入力された文字が「Ｇ」であり、さらに続く文字が数値である場合に、使用可能指令リスト５１の更新であると判定する。
【００９８】
指令候補生成部３５は、使用可能指令リスト５１の更新が必要であると判定した場合（ステップＳ５２：Ｙｅｓ）、使用可能指令リスト５１を更新する（ステップＳ５３）。ステップＳ５３において、指令候補生成部３５は、前回入力された文字にさらに続く文字を含む文字列が含まれるモーダル指令を使用可能指令リスト５１から抽出して、新たな使用可能指令リスト５１を生成することで、使用可能指令リスト５１を更新する。
【００９９】
表示処理部３２は、使用可能指令リスト５１の更新が必要ではないと判定した場合（ステップＳ５２：Ｎｏ）、またはステップＳ５３の処理が終了した場合、使用可能指令リスト５１が空であるか否かを判定する（ステップＳ５４）。表示処理部３２は、使用可能指令リスト５１に１つの使用可能指令も含まれない場合に、使用可能指令リスト５１が空であると判定する。
【０１００】
表示処理部３２は、使用可能指令リスト５１が空でないと判定した場合（ステップＳ５４：Ｎｏ）、使用可能指令リスト５１を表示部５に表示する（ステップＳ５６）。また、表示処理部３２は、使用可能指令リスト５１が空であると判定した場合（ステップＳ５４：Ｙｅｓ）、警告表示を表示部５に行う（ステップＳ５５）。ステップＳ５５において、表示処理部３２は、使用可能指令がない旨の警告情報を表示部５に表示することで、表示部５に警告表示を行う。
【０１０１】
ステップＳ５６において、表示処理部３２は、使用可能指令リスト５１の更新が必要であると判定した場合（ステップＳ５２：Ｙｅｓ）、ステップＳ５３で更新した使用可能指令リスト５１を表示部５に表示する。また、表示処理部３２は、使用可能指令リスト５１の更新が必要でないと判定した場合（ステップＳ５２：Ｎｏ）、ステップＳ５３で更新していない使用可能指令リスト５１を表示部５に表示する。
【０１０２】
加工プログラム編集部３０は、入力文字に指令の文字が含まれないと判定した場合（ステップＳ５１：Ｎｏ）、ステップＳ５５の処理が終了した場合、またはステップＳ５６の処理が終了した場合に、図１２に示す処理を終了する。
【０１０３】
図１３は、表示処理部３２によって表示部５に表示される表示画面の遷移例を示す図であり、オペレータによる文字入力に伴って表示画面が変化する様子を示している。図１３に示す表示画面６０ａには、加工プログラム表示領域６１が含まれる。加工プログラム表示領域６１には、加工プログラム２１を構成する複数のブロックのうち少なくとも一部とカーソル７０とが表示される。
【０１０４】
表示画面６０ａの加工プログラム表示領域６１では、カーソル７０が位置するブロックは、文字が記述された最終のブロックよりも１段下の行の先頭位置にあり、カーソル７０が位置するブロックには文字が記述されていない。この場合、カーソル７０が含まれるブロックで有効なモーダル指令は、最終のブロックで有効なモーダル指令と同じである。したがって、指令候補生成部３５は、最終のブロックのモーダル情報に基づいて、使用可能指令リスト５１を生成する。
【０１０５】
図１３に示す表示画面６０ａの状態において、オペレータが入力部４への入力操作によって、「Ｇ」の文字を入力したとする。なお、モーダル指令−指令使用可否対応表２４は、図３に示す状態であるとする。
【０１０６】
この場合、加工プログラム編集部３０の表示処理部３２は、図１３の表示画面６０ｂに示されるように、加工プログラム表示領域６１において、カーソル７０の位置に「Ｇ」の文字を追加すると共にカーソル７０の位置を１文字分右に移動させる。また、「Ｇ」の文字は、指令の先頭文字であるため、表示処理部３２は、表示画面６０ｂにリスト表示領域６２を追加し、指令候補生成部３５によって生成される使用可能指令リスト５１をリスト表示領域６２に表示する。
【０１０７】
表示画面６０ｂの加工プログラム表示領域６１に示されるように、カーソル７０が位置するブロックの直前のブロックには、モーダル指令として「Ｇ６８」が含まれており、カーソル７０の位置において、有効なモーダル指令として「Ｇ６８」が含まれる。モーダル指令−指令使用可否対応表２４が図３に示す状態であるため、リスト表示領域６２には、「Ｇ２．３」、「Ｇ２．４」、「Ｇ３．３」、および「Ｇ３．４」が含まれない。
【０１０８】
これにより、オペレータは入力しようとしている指令が使用可能であるかを確認することができ、編集ミスを防止して効率的に加工プログラム２１の編集作業を行うことができる。また、リスト表示領域６２には、使用可能な指令の説明文が表示されるため、使用可能な指令を説明文によって容易に把握でき、さらに編集ミスを防止して効率的に加工プログラム２１の編集作業を行うことができる。
【０１０９】
図１３に示す表示画面６０ｂの状態で、オペレータが入力部４への入力操作によって、「Ｇ」の文字に続いて「３」の文字を入力すると、加工プログラム編集部３０の表示処理部３２は、表示画面６０ｃに示されるように、加工プログラム表示領域６１において、カーソル７０の位置に「３」の文字を追加すると共にカーソル７０の位置を１文字分右に移動させる。
【０１１０】
また、加工プログラム編集部３０の指令候補生成部３５は、使用可能指令リスト５１を図１１に示す状態から文字例「Ｇ３」を含む指令を抽出して新たな使用可能指令リスト５１を生成して使用可能指令リスト５１を更新する。表示処理部３２は、図１３の表示画面６０ｃに示すように、リスト表示領域６２に更新した使用可能指令リスト５１を表示する。
【０１１１】
このように、オペレータが文字を入力する毎に、使用可能な指令を絞り込んだ新たな使用可能指令リスト５１が表示部５に表示される。したがって、オペレータは文字を入力する毎に次に入力する文字が表示部５に表示された使用可能指令リスト５１を確認することができ、編集ミスを防止して効率的に加工プログラム２１の編集作業を行うことができる。
【０１１２】
また、表示部５に表示された使用可能指令リスト５１からオペレータが入力しようとしている指令を選択することで、オペレータが文字を入力することなく指令の入力を完了させることもできる。具体的には、入力処理部３１は、使用可能指令リスト５１に含まれる１以上の指令の中からオペレータが入力部４への入力操作によって選択した指令を表示部５に表示される加工プログラム２１に追加することができる。この場合、オペレータは使用不可能な指令を入力することがなく、編集ミスを防止して効率的に加工プログラム２１の編集作業を行うことができる。
【０１１３】
なお、上述した例では、処理部３は、使用可能な指令を絞り込んだ使用可能指令リスト５１を表示部５に表示するが、使用可能な指令が絞り込まれていることをオペレータに示すことができればよく、上述した例に限定されない。
【０１１４】
例えば、指令候補生成部３５は、入力文字を含む指令と、入力文字を含む指令以外の指令とが視覚的に区別できるように指令リストを生成することもできる。この場合、表示処理部３２は、入力文字を含む指令と、入力文字を含む指令以外の指令とを視覚的に区別可能にした指令リストを表示部５に表示する。指令の区別は、入力文字を含む指令のサイズ、色、および書体を変更することによって、入力文字を含む指令を強調表示することで行うことができる。
【０１１５】
また、上述した例では、オペレータが入力部４への入力操作によって指令の先頭文字である「Ｇ」の文字の入力指示を行った場合に、使用可能指令リスト５１をリスト表示領域６２に表示するが、使用可能指令リスト５１の表示開始タイミングは指令の先頭文字を入力した場合に限定されない。表示処理部３２は、オペレータが入力部４への入力操作によってカーソル７０の位置を指定した時点で、カーソル位置のブロックで使用可能な指令を含む使用可能指令リスト５１をリスト表示領域６２に表示することもできる。
【０１１６】
図１３に示す表示画面６０ｃの状態から、オペレータが入力部４への入力操作によって「．」および「３」の文字を連続して入力した場合、「Ｇ３」に続く文字は、「．３」になり、文字列「Ｇ３．３」が入力された状態になる。指令候補生成部３５は、文字列「Ｇ３．３」を含む指令以外を除外した使用可能指令リスト５１を生成するが、図１１に示す使用可能指令リスト５１には、文字列「Ｇ３．３」が含まれないため、生成された使用可能指令リスト５１は、空である。
【０１１７】
表示処理部３２は、使用可能指令リスト５１が空である場合、すなわち、使用可能指令リスト５１に１つのモーダル指令も含まれない場合、使用不可能な指令が入力されたと判定し、表示部５に警告表示を行う。
【０１１８】
図１４は、図１３に示す表示画面６０ｃの状態から、さらに続く１以上の文字「．３」が入力された場合の表示画面の一例を示す図である。図１４に示す表示画面６０ｄのリスト表示領域６２に、入力された「Ｇ３．３」の説明文と「Ｇ３．３」は使用できないことを示す旨とが表示される。
【０１１９】
これにより、オペレータは、入力した指令が使用できない指令であることを把握し、入力した指令を変更するため、使用不可能な指令が加工プログラム２１に設定されたまま加工プログラム２１の編集が完了してしまうことを防ぐことができる。また、使用不可能な指令の説明文が表示されるため、オペレータは、使用不可能な指令がどのような指令かを容易に把握することができる。
【０１２０】
また、図１４の表示画面６０ｄには、警告表示領域６３が含まれる。かかる警告表示領域６３には、「Ｐ９２１  ３Ｄ座標変換中不正Ｇコード」の文字列が表示されている。警告表示領域６３に表示される文字列は、モーダル指令である「Ｇ６８」が有効である状態で使用不可能な指令が行われることを示す情報である。これにより、オペレータは、入力した指令がなぜ使用できないかを容易に把握することができる。
【０１２１】
なお、オペレータが入力部４への入力操作によって文字列「Ｇ３．３」から「．３」が削除された場合、表示処理部３２は、表示部５に表示する画面を表示画面６０ｄから表示画面６０ｃへ変更する。したがって、リスト表示領域６２の警告表示および警告表示領域６３が取り消される。
【０１２２】
上述した例では、入力した指令が使用できない指令である場合に、オペレータへ使用不可能な指令である旨を表示するが、加工プログラム編集部３０は、入力した指令が使用できない指令である場合、入力した指令を取り消すことができる。
【０１２３】
例えば、図１３に示す表示画面６０ｃの状態から、文字列「Ｇ３．３」が入力された場合、表示処理部３２は、文字列「Ｇ３．」が使用可能指令リスト５１に含まれないと判定し、文字列「Ｇ３．３」のうち「．３」を取り消すことができる。これにより、オペレータは、実質的に、使用可能指令リスト５１に含まれない文字列を加工プログラム２１に設定することができないため、加工プログラム２１に使用不可能な指令が含まれてしまうことを防止できる。
【０１２４】
また、加工プログラム編集部３０は、使用不可能な指令を入力できないようにすることもできる。具体的には、加工プログラム編集部３０の入力処理部３１は、指令の文字列であって使用可能指令リスト５１に含まれない文字列が入力部４を介して入力された場合に、文字の入力を受け付けないようにすることもできる。
【０１２５】
入力処理部３１は、例えば、図１３に示す表示画面６０ｃの状態から、文字列「Ｇ３」の後に文字列「．３」が入力された場合、文字列「Ｇ３」に続く文字列「．３」が使用可能指令リスト５１に含まれないと判定し、文字「．３」の入力を受け付けないことができる。
【０１２６】
また、入力処理部３１は、入力された指令が使用できない指令である場合、オペレータが入力した使用できない指令を取り消すまでは、オペレータによるその後の入力を受け付けないこともできる。
【０１２７】
また、上述のリスト表示領域６２では、使用可能指令リスト５１に含まれる指令が、「Ｇ０」、「Ｇ１」、「Ｇ２」といったように番号順に並んでいるが、リスト表示領域６２に表示される指令は番号順でなくてもよい。
【０１２８】
例えば、加工プログラム編集部３０は、使用される頻度が高い順に指令を並べた使用可能指令リスト５１を生成することができ、リスト表示領域６２は、加工プログラム編集部３０によって生成された使用可能指令リスト５１に基づき、使用される頻度が高い順に並べた指令をリスト表示領域６２に表示することができる。
【０１２９】
この場合、加工プログラム編集部３０は、オペレータが入力部４への入力操作によって入力される指令の履歴を記憶部２に記憶しておき、記憶部２に記憶された指令の履歴に基づいて、使用される頻度を判定することができる。
【０１３０】
また、上述の処理では、加工プログラム解析部４０は、編集開始の指示があった場合に、ブロック毎モーダル情報２５を生成するが、かかる例に限定されない。加工プログラム解析部４０は、オペレータが入力部４への入力操作によって文字を入力する指示を行う毎に、ステップＳ３６の処理と同様の処理により、入力文字を含むブロックで有効なモーダル指令を判定することができる。加工プログラム解析部４０は、入力文字を含むブロックで有効なモーダル指令がある場合に、ブロック毎モーダル情報２５を更新する。
【０１３１】
また、加工プログラム解析部４０は、入力文字を含むブロックに指令が追加されたと判定した場合に、入力文字を含むブロックで有効なモーダル指令を含むモーダル情報を記憶部２に記憶して、ブロック毎指令位置情報２６を更新することもできる。
【０１３２】
同様に、加工プログラム解析部４０は、オペレータが入力部４への入力操作によって文字を入力する指示を行う毎に、ステップＳ３８の処理と同様の処理により、入力文字を含むブロックに含まれる移動指令がある場合に、指令位置を演算することができる。加工プログラム解析部４０は、指令位置を演算した場合にブロック毎指令位置情報２６を更新する。
【０１３３】
また、加工プログラム解析部４０は、入力文字を含むブロックに座標を指定した移動指令が追加されたと判定された場合に、入力文字を含むブロックでの指令位置を含む指令位置情報を記憶部２に記憶して、ブロック毎指令位置情報２６を更新することもできる。
【０１３４】
加工プログラム解析部４０は、加工プログラム編集装置１の起動時に、ブロック毎モーダル情報２５を生成することもでき、また、加工プログラム編集装置１の処理負荷が閾値以下である場合に、ブロック毎モーダル情報２５を生成することもできる。
【０１３５】
図１５は、実施の形態１にかかる加工プログラム編集装置１のハードウェア構成の一例を示す図である。図１５に示すように、加工プログラム編集装置１は、プロセッサ１０１と、メモリ１０２と、ＨＤＤ１０３と、インタフェース回路１０４と、ディスプレイ１０５とを備えるコンピュータである。プロセッサ１０１、メモリ１０２、ＨＤＤ１０３、インタフェース回路１０４、およびディスプレイ１０５は、バス１０６によって互いにデータの送受信が可能である。記憶部２は、メモリ１０２およびＨＤＤ１０３によって実現され、入力部４は、インタフェース回路１０４によって実現され、表示部５は、ディスプレイ１０５によって実現される。
【０１３６】
プロセッサ１０１は、ＨＤＤ１０３に記憶されたＯＳおよび処理プログラムを読み出して実行することによって、加工プログラム編集部３０、および加工プログラム解析部４０の機能を実行する。なお、プロセッサ１０１は、磁気ディスク、ＵＳＢ（Universal  Serial  Bus）メモリ、光ディスク、コンパクトディスク、およびＤＶＤ（Digital  Versatile  Disc）のうち一つ以上の記憶媒体から不図示のインタフェースを介してＯＳおよび処理プログラムを読み出しＨＤＤ１０３に記憶して実行することもできる。
【０１３７】
以上のように、実施の形態１にかかる加工プログラム編集装置１は、表示処理部３２と、解析部の一例である加工プログラム解析部４０と、抽出部の一例である有効モーダル抽出部３４と、指令候補生成部３５とを備える。表示処理部３２は、加工プログラム２１に含まれる複数のブロックのうちの少なくとも一部を表示部５に表示する。加工プログラム解析部４０は、複数のブロックのうち先頭のブロックからブロック毎に有効なモーダル指令を解析し、ブロック毎に有効なモーダル指令を含むモーダル情報を記憶部２に記憶する。有効モーダル抽出部３４は、表示部５に表示されるカーソル位置のブロックにおいて有効なモーダル指令を記憶部２に記憶されたブロック毎モーダル情報２５の中から抽出する。指令候補生成部３５は、有効モーダル抽出部３４により抽出された有効なモーダル指令に基づき、カーソル位置のブロックにおいて使用可能なモーダル指令のリストである使用可能指令リスト５１を生成する。指令候補生成部３５は、カーソル７０の位置に文字列が入力される場合に、使用可能指令リスト５１に含まれる複数のモーダル指令の中から入力された文字列を含むモーダル指令を抽出して新たな使用可能指令リスト５１を生成する。表示処理部３２は、指令候補生成部３５によって生成される使用可能指令リスト５１を表示部５に表示する。これにより、オペレータは入力しようとしている指令が使用可能であるかを確認することができ、効率的に加工プログラム２１の編集作業を行うことができる。
【０１３８】
また、使用可能指令リスト５１には、使用可能な指令と、指令の説明文を含む。これにより、オペレータは入力しようとしている指令が使用可能であるか否かに加え、使用可能な指令の説明文を確認することができるため、さらに効率的に加工プログラム２１の編集作業を行うことができる。
【０１３９】
また、表示処理部３２は、入力された指令が使用可能指令リスト５１に含まれる複数のモーダル指令のいずれにも含まれない場合、入力された指令が使用できないことを示す警告を表示部５に表示する。これにより、オペレータが使用不可能な指令を入力することを防ぐことができ、また、加工プログラム２１の編集作業完了後に加工プログラムチェック装置で加工プログラム２１を確認する必要が無いため、効率的に加工プログラム２１の編集作業を行うことができる。
【０１４０】
実施の形態２．
実施の形態２では、カーソル位置のブロックにおいて各モータＸ，Ｙ，Ｚ，Ａ，およびＣの指令位置が設定範囲外になる場合に警告表示を行う処理が追加される点で、実施の形態１と異なる。以下においては、実施の形態１と同様の機能を有する構成要素については同一符号を付して説明を省略し、実施の形態１の加工プログラム編集装置１と異なる点を中心に説明する。
【０１４１】
図１６は、本発明の実施の形態２にかかる加工プログラム編集装置１Ａの構成を示す図である。図１６に示す加工プログラム編集装置１Ａは、記憶部２Ａと、処理部３Ａと、入力部４と、表示部５とを備える。
【０１４２】
記憶部２Ａは、記憶部２における工作機械パラメータ２２に代えて、工作機械パラメータ２２Ａを記憶する。工作機械パラメータ２２Ａは、工作機械パラメータ２２に含まれるパラメータに加え、使用する座標系を表すパラメータ、工作機械に搭載された各モータＸ，Ｙ，Ｚ，Ａ，およびＣの可動範囲を示すパラメータ、干渉物の位置を示すパラメータを含む。
【０１４３】
図１７は、可動範囲を示すパラメータを含む可動範囲情報テーブル７１の一例を示す図である。図１７に示す可動範囲情報テーブル７１には、モータＸ，Ｙ，Ｚ，Ａ，およびＣの可動範囲の下限を示す各々のパラメータとして、「−２０．０００」、「−２０．０００」、「−１０２０．０００」、「−１９０．０００」、および「０．０００」が設定されている。
【０１４４】
また、図１７に示す可動範囲情報テーブル７１には、モータＸ，Ｙ，Ｚ，Ａ，およびＣの可動範囲の上限を示す各々のパラメータとして、「８２０．０００」、「８２０．０００」、「２０．０００」、「１９０．０００」、および「０．０００」が設定されている。
【０１４５】
したがって、モータＸの可動範囲は、−２０ｍｍ〜８２０ｍｍであり、モータＹの可動範囲は、−２０ｍｍ〜８２０ｍｍであり、モータＺの可動範囲は、−１０２０ｍｍ〜２０ｍｍであり、モータＡの可動範囲は、−１９０ｍｍ〜１９０ｍｍである。また、モータＣについては、可動範囲の設定が無効である。
【０１４６】
干渉物の範囲を示すパラメータを含む干渉物範囲情報テーブルは、図１７に示す可動範囲情報テーブル７１と同様に工作機械パラメータ２２Ａの一部として記憶部２Ａに記憶されている。可動範囲情報テーブル７１では、可動範囲を示す情報が含まれるが、干渉物範囲情報テーブルでは、干渉物のある範囲を示す情報が含まれる。
【０１４７】
可動範囲情報テーブル７１および干渉物範囲情報テーブルによって、モータＸ，Ｙ，Ｚ，Ａ，およびＣの移動が許可される範囲である設定範囲Ｒｍが決定される。かかる設定範囲Ｒｍは、可動範囲情報テーブル７１で規定された可動範囲内であって、かつ、干渉物範囲情報テーブルで規定される干渉物のある範囲を含まない範囲である。
【０１４８】
図１８は、座標設定パラメータを含む座標設定情報テーブル７３の一例を示す図である。図１８に示す座標設定情報テーブル７３には、各指令の原点座標を示す情報が含まれる。図１８に示す例では、指令「Ｇ５４」の座標系における原点は、Ｘ軸、Ｙ軸、Ｚ軸、Ａ軸、およびＣ軸が各々０ｍｍ、０ｍｍ、−１０００ｍｍ、０ｍｍ、および０ｍｍの位置である。
【０１４９】
また、図１８に示す例では、指令「Ｇ５５」の座標系における原点は、Ｘ軸、Ｙ軸、Ｚ軸、Ａ軸、およびＣ軸が各々５００ｍｍ、５００ｍｍ、−８００ｍｍ、０ｍｍ、および０ｍｍの位置である。以下、モータＸ，Ｙ，Ｚ，Ａ，およびＣを総称して、モータＭと記載し、モータＭの可動範囲を可動範囲Ｒａとし、干渉物の位置範囲を干渉物範囲Ｒｂとする。
【０１５０】
図１６に戻って、処理部３Ａについて説明する。図１６に示すように、処理部３Ａは、加工プログラム編集部３０Ａと、加工プログラム解析部４０とを備える。加工プログラム編集部３０Ａは、入力処理部３１と、表示処理部３２Ａと、カーソル位置判定部３３と、有効モーダル抽出部３４と、指令候補生成部３５と、指令位置判定部３６とを備える。
【０１５１】
指令位置判定部３６は、上述した可動範囲を示すパラメータに基づき、カーソル位置のブロックに含まれる移動指令によってブロックの各モータＭの指令位置が各モータＭの可動範囲Ｒａ外になるか否かを判定する。また、指令位置判定部３６は、上述した干渉物の範囲を示すパラメータに基づき、カーソル位置のブロックに含まれる移動指令によってブロックの各モータＭの指令位置が干渉物への衝突を起こす干渉物範囲Ｒｂ内になるか否かを判定する。
【０１５２】
表示処理部３２Ａは、モータＭの可動範囲Ｒａ外への移動指令または干渉物範囲Ｒｂ内への移動指令を含む場合、設定範囲Ｒｍ外への移動指令を含むと判定し、表示部５に警告情報を表示する。これにより、オペレータがモータＭの可動範囲Ｒａ外への移動指令および干渉物範囲Ｒｂ内への移動指令を入力することを防ぐことができ、加工プログラム２１の編集作業の効率向上の効果が得られる。
【０１５３】
図１９は、加工プログラム編集部３０Ａが実行する入力支援処理を示すフローチャートである。図１９に示すステップＳ５０〜Ｓ５６の処理は、図１２に示すステップＳ５０〜Ｓ５６の処理と同じであるため、説明を省略する。
【０１５４】
ステップＳ５５の処理またはステップＳ５６の処理が終了した場合、加工プログラム編集部３０Ａの指令位置判定部３６は、文字の入力によってカーソル位置のブロックに移動指令で指定される座標位置が含まれることになったか否かを判定する（ステップＳ６１）。移動指令で指定される座標位置は、移動指令の後に記述される座標位置であり、「Ｇ９０  Ｇ０  Ｘ１５０．」の場合、「Ｘ１５０．」である。
【０１５５】
指令位置判定部３６は、カーソル位置のブロックに移動指令で指定される座標位置が含まれることになったと判定した場合（ステップＳ６１：Ｙｅｓ）、カーソル位置のブロックにおける指令位置を演算する（ステップＳ６２）。
【０１５６】
ステップＳ６２において、指令位置判定部３６は、記憶部２Ａに記憶されたブロック毎指令位置情報２６の中からカーソル位置のブロックの一つ前のブロックの指令位置情報を抽出する。そして、指令位置判定部３６は、抽出した指令位置情報で示される指令位置と、カーソル位置のブロックに含まれることになった移動指令で指定される座標位置とに基づき、カーソル位置のブロックにおける指令位置を判定する。
【０１５７】
なお、加工プログラム解析部４０によってカーソル７０の位置に文字が入力される毎にブロック毎指令位置情報２６が更新される場合、指令位置判定部３６は、記憶部２Ａに記憶されたブロック毎指令位置情報２６の中からカーソル位置のブロックの指令位置情報を抽出する。指令位置判定部３６は、カーソル位置のブロックの指令位置情報で示される指令位置を、カーソル位置のブロックにおける指令位置として判定する。
【０１５８】
次に、指令位置判定部３６は、可動範囲情報テーブル７１に含まれる可動範囲を示すパラメータおよび干渉物範囲情報テーブルに含まれる干渉物の範囲を示すパラメータを記憶部２Ａから読み出す（ステップＳ６３）。
【０１５９】
指令位置判定部３６は、ステップＳ６３で読み出したパラメータに基づいて、ステップＳ６２で演算した指令位置が設定範囲Ｒｍ外になるか否かを判定する（ステップＳ６４）。表示処理部３２Ａは、指令位置判定部３６によって指令位置が設定範囲Ｒｍ外になると判定された場合（ステップＳ６４：Ｙｅｓ）、表示部５に警告情報を表示する（ステップＳ６５）。
【０１６０】
指令位置判定部３６は、カーソル位置のブロックに移動指令の座標位置が含まれないと判定した場合（ステップＳ６１：Ｎｏ）、指令位置が設定範囲Ｒｍ外ではないと判定した場合（ステップＳ６４：Ｎｏ）、またはステップＳ６５の処理を終了した場合、図１９に示す処理を終了する。
【０１６１】
図２０は、表示部５の表示画面６０ｅの一例を示す図である。図２０に示す表示画面６０ｅには、加工プログラム表示領域６１に加え、警告表示領域６４が含まれる。図２０に示す例では、加工プログラム２１において、カーソル位置のブロックの２つ前のブロックには指令「Ｇ５５」が含まれており、カーソル位置のブロックの一つ前のブロックとカーソル位置のブロックで有効な指令は、Ｇ５５座標系上の指令である。
【０１６２】
また、カーソル位置のブロックの一つ前のブロックには、指令「Ｇ９０」、指令「Ｇ０」、および座標位置「Ｘ２００」が含まれており、絶対値指令方式で位置決めをＸ軸において２００ｍｍで行うように指令している。そして、座標設定情報テーブル７３が図１８に示す状態である場合、Ｇ５５座標系は、Ｘ軸の原点が５００ｍｍである。この場合、カーソル位置のブロックの一つ前のブロックでは、モータＸは７００ｍｍの位置へ移動することが指令されている。
【０１６３】
カーソル位置のブロックには、指令「Ｇ９１」、指令「Ｇ１」、および座標位置「Ｘ１５０．」が含まれており、増分値指令方式で切削送りをＸ軸において１５０ｍｍで行うように指令されている。したがって、カーソル位置のブロックでは、モータＸは８５０ｍｍの位置へ移動することが指令されている。
【０１６４】
可動範囲情報テーブルが図１７に示す状態である場合、モータＸの可動範囲は、−２０ｍｍ〜８２０ｍｍであり、８５０ｍｍは可動範囲外であり、カーソル位置のブロックにおいて、オペレータは設定範囲Ｒｍ外への移動指令を入力していることになる。したがって、表示処理部３２Ａは、図２０に示すように、設定範囲Ｒｍを超えてＸ軸のプラス方向に移動する移動指令を行ったことを示す警告を表示部５の警告表示領域６４に表示する。
【０１６５】
このように、実施の形態２にかかる加工プログラム編集装置１Ａは、オペレータがモータＭの設定範囲Ｒｍ外への移動指令を入力した場合には警告を表示するため、オペレータがモータＭの設定範囲Ｒｍ外への移動指令を入力することを防ぐことができる。したがって、加工プログラム２１の編集作業完了後の加工プログラムチェック装置による確認を不要とすることができ、加工プログラム２１の編集作業の効率向上の効果を得ることができる。
【０１６６】
なお、加工プログラム編集部３０Ａは、上述した警告の表示に加えて、または上述した警告の表示に代えて、入力された移動指令の座標位置によって設定される指令位置が設定範囲Ｒｍ外になる場合、入力された移動指令の座標位置を取り消すことができる。
【０１６７】
また、加工プログラム編集部３０Ａは、設定範囲Ｒｍ外への移動指令の座標位置を入力できないようにもできる。具体的には、加工プログラム編集部３０Ａの入力処理部３１は、設定範囲Ｒｍ外への移動指令の座標位置を記述する文字列が入力部４を介して入力された場合に、文字の入力を受け付けないこともできる。
【０１６８】
また、実施の形態２にかかる加工プログラム編集装置１Ａのハードウェア構成例は、図１５に示す加工プログラム編集装置１と同じである。プロセッサ１０１は、記憶部２Ａとして機能するメモリ１０２に記憶されたプログラムを読み出して実行することによって、上述した処理部３の機能に加え、表示処理部３２Ａおよび指令位置判定部３６の機能を実行することができる。
【０１６９】
以上のように、実施の形態２にかかる加工プログラム編集装置１Ａは、表示処理部３２Ａと、解析部の一例である加工プログラム解析部４０と、抽出部の一例である有効モーダル抽出部３４と、指令位置判定部３６とを備える。表示処理部３２Ａは、加工プログラム２１に含まれる複数のブロックのうちの少なくとも一部を表示部５に表示する。加工プログラム解析部４０は、加工プログラム２１を先頭のブロックから解析して加工プログラム２１のブロック毎に工作機械に含まれるモータＭの指令位置を示す指令位置情報を含むブロック毎指令位置情報２６を記憶部２Ａに記憶する。指令位置判定部３６は、記憶部２Ａに記憶されたブロック毎指令位置情報２６に基づき、表示部５に表示されるカーソル７０の位置に入力される移動指令によってモータＭの指令位置が設定範囲Ｒｍ外になるか否かを判定する。表示処理部３２Ａは、入力された移動指令によって指令位置が設定範囲Ｒｍ外になると指令位置判定部３６によって判定された場合に、モータＭの指令位置が設定範囲Ｒｍ外になったことを示す警告情報を表示部５に表示する。これにより、オペレータがモータＭの設定範囲Ｒｍ外への移動指令を入力することを防ぐことができ、効率的に加工プログラム２１の編集作業を行うことができる。
【０１７０】
実施の形態３．
実施の形態３では、各ブロックにおいて有効な指令が初期状態のモーダルであるか指令によるモーダルであるかを区別して表示する点で、実施の形態１，２と異なる。以下においては、実施の形態２と同様の機能を有する構成要素については同一符号を付して説明を省略し、実施の形態２の加工プログラム編集装置１Ａと異なる点を中心に説明する。
【０１７１】
図２１は、本発明の実施の形態３にかかる加工プログラム編集装置１Ｂの構成を示す図である。図２１に示す加工プログラム編集装置１Ｂは、記憶部２Ｂと、処理部３Ｂと、入力部４と、表示部５とを備える。
【０１７２】
記憶部２Ｂは、図１６に示すブロック毎モーダル情報２５に代えて、ブロック毎モーダル情報２５Ｂを備える。ブロック毎モーダル情報２５Ｂは、ブロック毎の有効なモーダル指令とモーダル種別とを含む情報である。
【０１７３】
モーダル種別は、有効なモーダル指令が加工プログラム２１に含まれるモーダル指令によるものか、工作機械パラメータ２２Ａに含まれるパラメータであってモーダル指令の初期状態を規定するパラメータによるものか、のいずれであるのかを示す種別である。以下、ブロックに含まれるモーダル指令を「指令によるモーダル」と記載する場合があり、パラメータで規定されるモーダル指令を「初期状態のモーダル」と記載する場合がある。
【０１７４】
図２２は、ブロック毎モーダル情報２５Ｂの一例を示す図であり、各グループのモーダル指令の初期状態と、ブロック毎の有効なモーダル指令とが図９に示す状態である場合のブロック毎モーダル情報２５Ｂを示す。
【０１７５】
図２２に示すブロック毎モーダル情報２５Ｂは、ブロック番号毎に、各グループの有効なモーダル指令を示す情報とモーダル種別を示す情報とが含まれる。図９に示す例ではグループ「０１」における初期状態の指令が「Ｇ０」であり、ブロック番号「０」からブロック番号「Ｎ−１」までグループ「０１」の指令が含まれておらず、ブロック番号「Ｎ」で指令が含まれている。
【０１７６】
したがって、図２２に示すブロック毎モーダル情報２５Ｂでは、グループ「０１」の有効なモーダル指令のモーダル種別は、ブロック番号「１」では「０」であり、ブロック番号「Ｎ」では「１」である。
【０１７７】
また、図９に示す例ではグループ「１３」における初期状態の指令が「Ｇ６１．１」であり、ブロック番号「０」のブロックからブロック番号「Ｎ」のブロックまでグループ「１３」の指令が含まれていない。したがって、図２２に示すブロック毎モーダル情報２５Ｂでは、グループ「１３」の有効なモーダル指令のモーダル種別は、ブロック番号「１」のブロックでは「０」であり、ブロック番号「Ｎ」のブロックでも「０」である。
【０１７８】
図２１に示すように、処理部３Ｂは、加工プログラム編集部３０Ｂと、加工プログラム解析部４０Ｂとを備える。加工プログラム編集部３０Ｂは、表示処理部３２Ａの機能に加え、さらに後述する機能を有する表示処理部３２Ｂを備える。また、加工プログラム解析部４０Ｂは、読込処理部４１と、モーダル処理部４２Ｂと、座標処理部４３と、デフォルトモーダル判定部４４とを備える。
【０１７９】
デフォルトモーダル判定部４４は、各ブロックにおいて有効なモーダル指令が初期状態のモーダルであるか指令によるモーダルであるかを示すモーダル種別を判定する。モーダル処理部４２Ｂは、各ブロックにおいて有効なモーダル指令とモーダル種別とを含むブロック毎のモーダル情報をブロック毎モーダル情報２５Ｂとして記憶部２Ｂに記憶する。
【０１８０】
表示処理部３２Ｂは、表示処理部３２，３２Ａと同様の処理により、記憶部２Ｂに記憶されたブロック毎モーダル情報２５Ｂからカーソル位置のブロックのモーダル情報を読み出し、読み出したモーダル情報を表示部５に表示する。
【０１８１】
表示部５に表示されるモーダル情報には、カーソル位置のブロックにおいて有効なモーダル指令が初期状態のモーダルであるか指令によるモーダルであるかを示す情報が含まれている。これにより、オペレータは、編集位置のブロックにおける指令が、パラメータの設定に依存しているか否かを容易に認識することができる。
【０１８２】
図２３は、図７に示すステップＳ２２の解析処理を示すフローチャートである。図２３に示すステップＳ３０，Ｓ３１，Ｓ３３〜Ｓ３６，Ｓ３８〜Ｓ４０の処理は、図８に示すステップＳ３０，Ｓ３１，Ｓ３３〜Ｓ３６，Ｓ３８〜Ｓ４０の処理と同じであるため、説明を省略する。
【０１８３】
図２３に示すように、デフォルトモーダル判定部４４は、先頭のブロックで有効なモーダルの種別であるモーダル種別を判定する（ステップＳ７１）。ステップＳ７１において、デフォルトモーダル判定部４４は、各ブロックにおいて有効なモーダル指令が初期状態のモーダルであるか指令によるモーダルであるかを示すモーダル種別を判定する。
【０１８４】
モーダル処理部４２Ｂは、ステップＳ３１で抽出した有効なモーダル指令とモーダル種別を示す情報と「先頭のブロック」のブロック番号「１」とを含むモーダル情報を記憶部２Ｂに記憶する（ステップＳ３２Ｂ）。これにより、先頭ブロックのモーダル情報を含むブロック毎モーダル情報２５Ｂが生成される。
【０１８５】
ステップＳ７２において、デフォルトモーダル判定部４４は、ステップＳ７１の処理と同様に、ステップＳ３５で読み出した「次のブロック」で有効なモーダル指令のモーダル種別を判定する（ステップＳ７２）。
【０１８６】
モーダル処理部４２Ｂは、ステップＳ３６で抽出した有効なモーダル指令とモーダル種別を示す情報と「次のブロック」のブロック番号とを含むモーダル情報を記憶部２Ｂに記憶する（ステップＳ３７Ｂ）。これにより、「次のブロック」のモーダル情報がブロック毎モーダル情報２５Ｂに追加されて、先頭ブロックから「次のブロック」までの各ブロックのモーダル情報を含むブロック毎モーダル情報２５Ｂが生成されブロック毎モーダル情報２５Ｂが更新される。
【０１８７】
図２４は、モーダル情報の表示処理を示すフローチャートである。図２４に示すように、加工プログラム編集部３０Ｂのカーソル位置判定部３３は、カーソル位置のブロックを判定する（ステップＳ８１）。
【０１８８】
表示処理部３２Ｂは、記憶部２Ｂに記憶されたブロック毎モーダル情報２５Ｂの中から、カーソル位置のブロックのモーダル情報を読み出す（ステップＳ８２）。そして、表示処理部３２Ｂは、読み出したモーダル情報を表示部５に表示する（ステップＳ８３）。
【０１８９】
図２５は、実施の形態３における表示部５の表示画面の一例を示す図である。図２５に示す表示画面６０ｆには、加工プログラム表示領域６１とモーダル表示領域６５とが含まれる。加工プログラム表示領域６１には、加工プログラム２１を構成する複数のブロックのうち少なくとも一部が表示される。
【０１９０】
図２５に示す例では、加工プログラム表示領域６１に表示される加工プログラム２１の先頭のブロックからカーソル位置のブロックまでにグループ「０１」の指令として「Ｇ０」と「Ｇ１」とが含まれている。したがって、カーソル位置のブロックにおいてグループ「０１」の有効なモーダル指令は「Ｇ１」である。また、カーソル位置のブロックにおいて、グループ「０３」の有効なモーダル指令は「Ｇ９１」、グループ「１２」の有効なモーダル指令は「Ｇ５５」である。
【０１９１】
グループ「０２」および「１３」では、加工プログラム２１の先頭のブロックからカーソル位置のブロックまでに一度も指令されていない。したがって、モーダル指令の初期状態を規定するパラメータにより、グループ「０２」の有効なモーダル指令は「Ｇ１７」、グループ「１３」の有効なモーダル指令は「Ｇ６１．１」である。
【０１９２】
図２５に示すモーダル表示領域６５には、初期状態のモーダルであることを示すために、指令「Ｇ１７」および指令「Ｇ６１．１」が強調表示されている。これにより、オペレータは、編集位置のブロックにおける指令が、パラメータの設定に依存しているか否かを容易に認識することができる。なお、初期状態のモーダルであることを示す強調表示は、図２５においては、指令を枠で囲むことによって行われるが、指令のサイズ、色、および書体を変更することによって強調表示してもよい。
【０１９３】
また、座標処理部４３は、各モータＭの指令位置、回転速度、および送り速度をブロック毎に演算し、かかる演算結果をブロック毎指令位置情報２６として記憶部２Ｂに記憶することができる。
【０１９４】
表示処理部３２Ｂは、記憶部２Ｂに記憶されたブロック毎指令位置情報２６の中から、カーソル位置のブロックの指令位置情報を読み出し、読み出した指令位置情報を表示部５に表示することができる。指令位置情報には、各モータＭの指令位置、回転速度、および送り速度が含まれる。
【０１９５】
図２５に示す例では、各モータＸ，Ｙ，Ｚ，Ａ，Ｃの指令位置および送り速度の情報も同時に表示されている。具体的には、図２５に示す例では、モータＸ，Ｙ，Ｚが各々７１５ｍｍ、５０５ｍｍ、−３００ｍｍの指令位置にあり、モータＡ，Ｃが０ｍｍの位置にあり、主軸の回転速度および送りが５０００ｒｐｍの正転および３０００ｍ／ｍｉｎであることが示される。
【０１９６】
なお、上述した例では、表示画面６０ｆには、図１３に示すリスト表示領域６２が含まれていないが、表示処理部３２Ｂは、リスト表示領域６２をモーダル表示領域６５と共に表示画面６０ｆに含ませることができる。また、表示処理部３２Ｂは、リスト表示領域６２において、初期状態である指令を強調表示することもできる。
【０１９７】
また、実施の形態３にかかる加工プログラム編集装置１Ｂのハードウェア構成例は、図１５に示す加工プログラム編集装置１と同じである。プロセッサ１０１は、記憶部２Ｂとして機能するメモリ１０２に記憶されたプログラムを読み出して実行することによって、上述した処理部３の機能に加え、表示処理部３２Ｂ、指令位置判定部３６、モーダル処理部４２Ｂ、およびデフォルトモーダル判定部４４の機能を実行することができる。
【０１９８】
以上のように、実施の形態３にかかる加工プログラム編集装置１Ｂは、表示処理部３２Ｂと、解析部の一例である加工プログラム解析部４０Ｂと、抽出部の一例である有効モーダル抽出部３４とを備える。表示処理部３２Ｂは、加工プログラム２１に含まれる複数のブロックのうちの少なくとも一部を表示部５に表示する。加工プログラム解析部４０Ｂは、加工プログラム２１を先頭のブロックからブロック毎に有効なモーダル指令を解析すると共に、有効なモーダル指令が初期パラメータであるか否かの種別であるモーダル種別を判定する。加工プログラム解析部４０Ｂは、ブロック毎に有効なモーダル指令とモーダル種別とを示すモーダル情報を記憶部２Ｂに記憶する。有効モーダル抽出部３４は、表示部５に表示されるカーソル位置のブロックで有効なモーダル指令を示すモーダル情報を記憶部２Ｂに記憶されたブロック毎モーダル情報２５Ｂの中から抽出する。表示処理部３２Ｂは、有効モーダル抽出部３４によって抽出されたモーダル情報に基づき、カーソル位置のブロックで有効なモーダル指令とモーダル種別とを表示部５に表示する。これにより、オペレータは、編集位置のブロックにおけるモーダル指令が、パラメータの設定に依存しているか否かを容易に認識することができ、効率的に加工プログラム２１の編集作業を行うことができる。
【０１９９】
実施の形態４．
実施の形態４では、加工プログラムがサブプログラムである場合に、加工プログラムの先頭ではなく、メインプログラムの先頭のブロックから解析する点で、実施の形態１〜３と異なる。以下においては、実施の形態３と同様の機能を有する構成要素については同一符号を付して説明を省略し、実施の形態３の加工プログラム編集装置１Ｂと異なる点を中心に説明する。
【０２００】
図２６は、本発明の実施の形態４にかかる加工プログラム編集装置１Ｃの構成を示す図である。図２６に示す加工プログラム編集装置１Ｃは、記憶部２Ｃと、処理部３Ｃと、入力部４と、表示部５とを備える。
【０２０１】
記憶部２Ｃは、複数の加工プログラムを含む加工プログラム群２８を記憶する。図２６に示す加工プログラム群２８は、複数の加工プログラムとして、メインプログラム２１Ａと、サブプログラム２１Ｂとを含む。なお、図２６では、メインプログラム２１Ａおよびサブプログラム２１Ｂは各々一つずつ示されているが、メインプログラム２１Ａおよびサブプログラム２１Ｂは加工プログラム群２８に各々複数含まれている。
【０２０２】
メインプログラム２１Ａには、サブプログラム呼び出し指令と呼ばれる指令が含まれており、メインプログラム２１Ａからサブプログラム２１Ｂを呼び出して実行することができる。メインプログラム２１Ａの先頭のブロックからサブプログラム呼び出し指令までの有効なモーダル指令と指令位置は、サブプログラム２１Ｂに引き継がれる。
【０２０３】
サブプログラム呼び出し指令はどのサブプログラム２１Ｂを呼び出すかを指定するものであることから、メインプログラム２１Ａからサブプログラム２１Ｂを知ることができるが、サブプログラム２１Ｂにはメインプログラム２１Ａについての記述が含まれていない。したがって、サブプログラム２１Ｂからメインプログラム２１Ａを知ることはできない。
【０２０４】
したがって、オペレータがサブプログラム２１Ｂを編集していた場合において、サブプログラム２１Ｂの先頭のブロックから有効なモーダル指令および指令位置を解析しても、有効なモーダル指令および指令位置を正確に解析できない可能性がある。
【０２０５】
そこで、処理部３Ｃは、呼び出し元の加工プログラムであるメインプログラム２１Ａの先頭のブロックからサブプログラム呼び出し指令を含むブロックを経由して編集を行っているサブプログラム２１Ｂの先頭のブロックから最終のブロックまでをブロック毎に解析する。
【０２０６】
かかる処理部３Ｃは、加工プログラム編集部３０Ｃと、加工プログラム解析部４０Ｂと、メインプログラム検索部５０とを備える。メインプログラム検索部５０は、記憶部２Ｃに記憶されている加工プログラム群２８の中から全文検索し、編集を行っている加工プログラムであるサブプログラム２１Ｂの読み出し元の加工プログラムであるメインプログラム２１Ａを抽出する。
【０２０７】
加工プログラム編集部３０Ｃは、加工プログラム解析部４０Ｂにプログラム解析を行わせる前に、メインプログラム検索部５０に対して編集を行っているサブプログラム２１Ｂを呼び出しているメインプログラム２１Ａを探し出すよう要求する。加工プログラム編集部３０Ｃは、メインプログラム検索部５０がメインプログラム２１Ａを抽出した場合、加工プログラム解析部４０Ｂに対して、メインプログラム２１Ａの先頭のブロックから解析を行うように指示する。
【０２０８】
加工プログラム解析部４０Ｂは、メインプログラム２１Ａの先頭のブロックからサブプログラム呼び出し指令ブロックを経由して編集を行っているサブプログラム２１Ｂの先頭のブロックから最終のブロックまでをブロック毎に解析する。
【０２０９】
具体的には、加工プログラム解析部４０Ｂは、上述した加工プログラム２１の解析処理と同様に、メインプログラム２１Ａの先頭のブロックからサブプログラム呼び出し指令を含むブロックまでをブロック毎に解析する。続いて、加工プログラム解析部４０Ｂは、メインプログラム２１Ａのサブプログラム呼び出し指令の呼び出し先であって編集が行われているサブプログラム２１Ｂの先頭のブロックから最終のブロックまでをブロック毎に解析する。
【０２１０】
加工プログラム解析部４０Ｂは、サブプログラム２１Ｂの先頭のブロックの直前で有効なモーダル情報として、サブプログラム呼び出し指令を含むブロックのモーダル情報を用いる。これにより、メインプログラム２１Ａのサブプログラム呼び出し指令を含むブロックで有効なモーダル指令を初期状態のモーダル指令として用いて、サブプログラム２１Ｂの先頭のブロックからサブプログラム２１Ｂを解析することができる。
【０２１１】
加工プログラム解析部４０Ｂは、解析したブロック毎のモーダル情報をブロック毎モーダル情報２５Ｂとして記憶部２Ｃに記憶し、解析したブロック毎の指令位置情報をブロック毎指令位置情報２６として記憶部２Ｃに記憶する。
【０２１２】
なお、メインプログラム検索部５０は、加工プログラム編集部３０Ｃからの指示がない場合であっても、プロセッサ１０１の空き時間を利用して各サブプログラム２１Ｂの呼び出し元であるメインプログラム２１Ａを判定することができる。この場合、メインプログラム検索部５０は、判定したサブプログラム２１Ｂとメインプログラム２１Ａとの関係を示す情報を記憶部２Ｃに記憶することができる。
【０２１３】
図２７は、図６に示すステップＳ１１の編集開始処理を示すフローチャートである。図２７に示すステップＳ２０，Ｓ２１の処理は、図７に示すステップＳ２０，Ｓ２１の処理と同じであるため、説明を省略する。
【０２１４】
図２７に示すように、加工プログラム編集部３０Ｃは、表示部５に表示されて編集中の加工プログラムがサブプログラム２１Ｂであるか否かを判定する（ステップＳ９１）。加工プログラム編集部３０Ｃは、編集中の加工プログラムがサブプログラム２１Ｂであると判定した場合（ステップＳ９１：Ｙｅｓ）、サブプログラム２１Ｂの読み出し元のメインプログラム２１Ａの解析を加工プログラム解析部４０Ｂに指示し、加工プログラム解析部４０Ｂはメインプログラム２１Ａの解析を実行する（ステップＳ９２）。かかるステップＳ９２は、図８に示すステップＳ３０〜Ｓ４０の処理と同じである。
【０２１５】
ステップＳ９２の処理が終了した場合、または、編集中の加工プログラムがサブプログラム２１Ｂではないと判定した場合（ステップＳ９１：Ｎｏ）、加工プログラム編集部３０Ｃは、編集中の加工プログラムの解析を加工プログラム解析部４０Ｂに指示し、加工プログラム解析部４０Ｂはメインプログラム２１Ａの解析を実行する（ステップＳ９３）。
【０２１６】
ステップＳ９４において、加工プログラム編集部３０Ｃは、編集中の加工プログラムがサブプログラム２１Ｂである場合、メインプログラム２１Ａにおけるサブプログラム呼び出し指令を含むブロックのモーダル情報を初期状態のモーダル指令として用いて、サブプログラム２１Ｂの先頭のブロックからサブプログラム２１Ｂを解析する。かかるステップＳ９３は、図８に示すステップＳ３０〜Ｓ４０の処理と同じである。処理部３Ｃは、ステップＳ９３の処理を終了すると、図２７に示す処理を終了する。
【０２１７】
図２８は、表示部５の表示画面の一例を示す図であり、図２９は、メインプログラム２１Ａの一例を示す図である。図２８に示す表示画面６０ｇには、サブプログラム表示領域である加工プログラム表示領域６１とモーダル表示領域６５が含まれる。図２８に示す加工プログラム表示領域６１には、編集中の加工プログラムであるサブプログラム２１Ｂの少なくとも一部の内容が表示される。
【０２１８】
図２８に示す表示画面６０ｇでは、図２９に示すメインプログラム２１Ａに含まれる指令「Ｇ５５」が、サブプログラム２１Ｂにおけるカーソル位置のブロックでグループ「１２」の有効なモーダル指令となっていることが示される。そして、指令「Ｇ５５」が編集中のサブプログラム２１Ｂではなくメインプログラム２１Ａでの指令であることを示すために、編集中のサブプログラム２１Ｂで指令されたモーダルとは区別して斜体で表示される。
【０２１９】
これにより、編集中の加工プログラムがサブプログラム２１Ｂであっても、オペレータはカーソル位置のブロックにおいて有効なモーダル指令を把握することができ、加工プログラムチェック装置でメインプログラム２１Ａから確認を行う時と同等のプログラム解析を行うことができる。
【０２２０】
また、実施の形態４にかかる加工プログラム編集装置１Ｃのハードウェア構成例は、図１５に示す加工プログラム編集装置１と同じである。プロセッサ１０１は、記憶部２Ｃとして機能するメモリ１０２に記憶されたプログラムを読み出して実行することによって、上述した処理部３Ｃの機能を実行することができる。
【０２２１】
以上のように、実施の形態４にかかる加工プログラム編集装置１Ｃは、メインプログラム検索部５０を備える。メインプログラム検索部５０は、加工プログラム２１の呼び出し元であるメインプログラム２１Ａを検索する。加工プログラム解析部４０Ｂは、サブプログラム２１Ｂである加工プログラムの先頭のブロックに代えて、メインプログラム２１Ａの先頭のブロックから解析を行う。これにより、オペレータがサブプログラム２１Ｂを編集していた場合であっても、編集位置での有効なモーダル指令を正確に把握することができ、効率的に加工プログラム２１の編集作業を行うことができる。
【０２２２】
なお、上述した例では、オペレータへの警告は、表示部５への表示によって行われるが、加工プログラム編集部３０，３０Ａ，３０Ｂ，３０Ｃは、表示部５への表示に代えて、音および振動の少なくとも１つによってオペレータへ警告を行うことができる。また、加工プログラム編集部３０，３０Ａ，３０Ｂ，３０Ｃは、表示部５への表示に加えて、音および振動の少なくとも１つによってオペレータへ警告を行うことができる。
【０２２３】
以上の実施の形態に示した構成は、本発明の内容の一例を示すものであり、別の公知の技術と組み合わせることも可能であるし、本発明の要旨を逸脱しない範囲で、構成の一部を省略、変更することも可能である。
【符号の説明】
【０２２４】
１，１Ａ，１Ｂ，１Ｃ  加工プログラム編集装置、２，２Ａ，２Ｂ，２Ｃ  記憶部、３，３Ａ，３Ｂ，３Ｃ  処理部、４  入力部、５  表示部、２１  加工プログラム、２１Ａ  メインプログラム、２１Ｂ  サブプログラム、２２，２２Ａ  工作機械パラメータ、２３，２７  使用可能指令リスト、２４  モーダル指令−指令使用可否対応表、２５，２５Ｂ  ブロック毎モーダル情報、２６  ブロック毎指令位置情報、２８  加工プログラム群、３０，３０Ａ，３０Ｂ，３０Ｃ  加工プログラム編集部、３１  入力処理部、３２，３２Ａ，３２Ｂ  表示処理部、３３  カーソル位置判定部、３４  有効モーダル抽出部、３５  指令候補生成部、３６  指令位置判定部、４０，４０Ｂ  加工プログラム解析部、４１  読込処理部、４２，４２Ｂ  モーダル処理部、４３  座標処理部、４４  デフォルトモーダル判定部、５０  メインプログラム検索部、５１  使用可能指令リスト、７０  カーソル、７１  可動範囲情報テーブル、７３  座標設定情報テーブル、Ｘ，Ｙ，Ｚ，Ａ，Ｃ  モータ。
【図１】
2019028641.tif 000003
【図２】
2019028641.tif 000004
【図３】
2019028641.tif 000005
【図４】
2019028641.tif 000006
【図５】
2019028641.tif 000007
【図６】
2019028641.tif 000008
【図７】
2019028641.tif 000009
【図８】
2019028641.tif 000010
【図９】
2019028641.tif 000011
【図１０】
2019028641.tif 000012
【図１１】
2019028641.tif 000013
【図１２】
2019028641.tif 000014
【図１３】
2019028641.tif 000015
【図１４】
2019028641.tif 000016
【図１５】
2019028641.tif 000017
【図１６】
2019028641.tif 000018
【図１７】
2019028641.tif 000019
【図１８】
2019028641.tif 000020
【図１９】
2019028641.tif 000021
【図２０】
2019028641.tif 000022
【図２１】
2019028641.tif 000023
【図２２】
2019028641.tif 000024
【図２３】
2019028641.tif 000025
【図２４】
2019028641.tif 000026
【図２５】
2019028641.tif 000027
【図２６】
2019028641.tif 000028
【図２７】
2019028641.tif 000029
【図２８】
2019028641.tif 000030
【図２９】
2019028641.tif 000031