(57)【特許請求の範囲】
【請求項１】
加工プログラムをブロックごとに解析し実行することで工作機械を制御しワークの加工を行う数値制御装置において、
複数の加工工程が組込まれている前記加工プログラムにおける前記加工工程の区切りをあらわす特定コードを予め設定する設定手段と、
前記加工プログラムの実行前及び前記加工プログラムの実行中のあらかじめ設定されたタイミングで、前記加工プログラムの未実行ブロックを解析し前記特定コードのみを検出する解析検出手段と、
前記解析検出手段によって検出された前記特定コードのブロックが格納されているメモリ上の位置を取得し保存するデータ取得保存手段と、
前記データ取得保存手段により取得保存された複数の前記メモリ上の位置を使用して前記特定コードを一覧表示する第一の表示手段と、
前記第一の表示手段により一覧表示された前記特定コードから、選択された前記特定コードを特定する特定手段と、
前記解析検出手段による検出が完了し、前記特定手段により特定された前記特定コードの前記メモリ上の位置を使用して、前記特定された前記特定コードを有する前記加工工程から前記加工プログラムを再開動作実行させるプログラム再開手段と、
を有することを特徴とするプログラム加工再開機能を有する数値制御装置。
【請求項２】
前記特定手段により、前記第一の表示手段により一覧表示された前記特定コードから、選択された前記特定コードの前記メモリ上の位置を使用して、前記特定コードのブロックと、プログラムカウンタ上でその後実行される所定数のブロックを表示する第二の表示手段をさらに備えたことを特徴とする請求項１に記載のプログラム加工再開機能を有する数値制御装置。
【請求項３】
前記タイミングは、前記加工プログラムの実行開始直前から実行中の間、または前記加工プログラムの登録中のいずれかに設定できることを特徴とする請求項１又は２に記載のプログラム加工再開機能を有する数値制御装置。
【請求項４】
前記タイミングの設定は、外部入力機器による設定によって設定できることを特徴とする請求項１〜３のいずれかに記載のプログラム加工再開機能を有する数値制御装置。
【請求項５】
前記加工工程ごとに行われる工具交換指令を前記特定コードとして扱うことを特徴とする請求項１〜４のいずれかに記載のプログラム加工再開機能を有する数値制御装置。
【請求項６】
前記第一の表示手段により一覧表示された前記特定コードを有する前記加工工程の、加工順番の変更を設定できる第一の入力設定手段と、前記第一の入力設定手段で設定された加工順番を特定する第一の入力設定特定手段と、
を有することを特徴とする請求項１〜５のいずれかに記載のプログラム加工再開機能を有する数値制御装置。
【請求項７】
前記データ取得保存手段により取得保存された前記メモリ上の位置を使用して、前記第一の入力設定特定手段により特定された前記加工工程の加工順番通りに前記加工プログラムを実行させる加工工程順番指定実行手段と、
を有することを特徴とする請求項６に記載のプログラム加工再開機能を有する数値制御装置。
【請求項８】
前記第一の表示手段により一覧表示された前記特定コードを有する前記加工工程のいずれかの前記加工工程の終了時に一時停止の指定を設定できる第二の入力設定手段と、前記第二の入力設定手段で設定された前記加工プログラムの一時停止指定を特定する第二の入力設定特定手段と、
前記データ取得保存手段により取得保存された前記メモリ上の位置を使用して、前記加工工程の終了時を検出する加工工程終了検出手段と、
前記第二の入力設定特定手段により特定された前記加工工程の終了時に前記加工プログラムの一時停止を実行する一時停止実行手段と、
を有することを特徴とする請求項１〜７のいずれかに記載のプログラム加工再開機能を有する数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関し、特に加工工程ごとに再開可能な数値制御装置に関する。
【背景技術】
【０００２】
工作機械を制御する数値制御装置は、加工プログラムに基づいて数値制御処理を実行し、該数値制御処理の処理結果により工作機械を制御してワークに加工を施している。
数値制御装置を用いてワークを加工している途中に加工を中断したときに、中断ブロックまたは実行済みの任意のプログラムブロックからプログラムを再開する先行技術として以下の特許文献に開示されているような技術がある。
【０００３】
特許文献１には、数値制御装置におけるプログラム再開方式において、加工途中に加工を中断してその後再開する場合に、工具を今まで通ってきた通路に沿って戻すリバース機能を用いて、加工再開位置を決定して加工を再開する技術が開示されている。
特許文献２には、プログラム再開機能を備えた数値制御装置において、プログラムを再開してもワークに傷が付かない位置となる非切削ブロックを判別してプログラム再開ブロックデータを取得して、プログラムを再開させる技術が開示されている。
【０００４】
特許文献３には、加工再開機能を有する数値制御装置において、加工プログラムにて加工実行中に、加工を実行しているプログラムブロックを解析して、解析したプログラムブロックを使用して、表示手段において複数のプログラム再開ブロックデータを実行された順番で一覧表示し、一覧表示画面からプログラム再開ブロックデータを選択して、プログラムの再開を行う技術が開示されている。
特許文献４には、工作機械制御装置における、複数の工程からなる加工プログラムにおいて、加工プログラムの実行開始時に、工作機械の状態がいずれの工程プログラムに対応する状態かを判別して、予め決められた条件によって予め決められた工程からプログラムを開始する技術が開示されている。
【０００５】
特許文献５には、加工プログラムを読み込んで実行する数値制御装置において、加工実行とは別に加工プログラムを構成する加工工程単位ごとに識別情報を付加することで工程の区切りを認識し、識別情報を表示および選択することで選択した工程前までの工程をスキップして加工工程の再開を行う技術が開示されている。
特許文献６には、複数の単一作業プログラムが連なる加工プログラムに従って工作機械の運転を制御する数値制御装置において、工程ごとの加工部位を記憶及び認識することにより、オペレータが不在の時に異常が検出された場合に、機械を停止させることなく、異常が検出された加工部位が登録された異常発生加工部位である場合に、自動で工程をスキップすることができる技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特許第２６７６５１２号公報
【特許文献２】特許第４３７４０４５号公報
【特許文献３】特許第４４８０７７０号公報
【特許文献４】特開平１０−１４３２２９号公報
【特許文献５】特許第２９２６６４５号公報
【特許文献６】特許第３４４８４１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１〜３に開示されている技術は、いずれも数値制御装置における加工プログラムの加工実行中にプログラムを解析している。そのため、加工中断まで実行されたブロックから任意の箇所を選択して、その箇所から再開することが可能である。しかしながら、加工実行中にプログラムの解析を行っているため、加工を行っていない箇所から再開させることはできない。
【０００８】
そのため、下記のような場合の要求をすべて満たすことは困難である。
（１）中断箇所の復旧の準備に時間がかかるため、中断理由に関係のない未実施の加工工程から先行して再開した場合
（２）中断理由により実施できない加工工程が断続的にあり、それ以外の加工工程のみを実施したい場合
（３）オペレータの熟練度に関わらず、簡単にかつ間違いなく再開箇所を選択したい場合
（４）再開後、プログラム運転中に前記中断箇所復旧の準備が整ったとき、現在加工中の工程終了後、中断箇所の復旧を行い、かつそのまま中断工程を実施するために未実行の加工工程を含む工程順番を変更したい場合
【０００９】
特許文献４に開示されている技術は、複数の工程プログラムからなる加工プログラムにおいて、予め決められた条件によって予め決められた工程からプログラムを開始することができるが、予め決められた条件に合わせた工程からしかプログラムの再開を行うことができないため、中断の理由によってはプログラムの書き換えが必要となることがあり、オペレータの手間と熟練度が要求されることがある。
【００１０】
特許文献５に開示されている技術は、加工工程ごとに識別情報を付加することで工程の区切りを認識し、識別情報を表示および選択することで、選択した工程の前までの工程をスキップすることができる。しかしながら、加工工程ごとに識別情報を付加しているため、加工工程が終了していない工程については識別情報が付加されておらず、選択した以降の工程をスキップすることができない。そのため、スキップする工程が断続的に存在するような場合に適用することができない。
【００１１】
特許文献６に開示されている技術は、加工するワークごとに、工程ごとの加工部位を事前に記憶させる必要があるため、ワークごとの事前準備が必要となり、オペレータの熟練度も要求されることがある。
【００１２】
そこで本発明は、これらの課題を鑑み、数値制御装置における加工プログラムの加工を中断後、オペレータの熟練度によらずに容易に未実行の加工工程から動作を再開させることができる数値制御装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願の請求項１に係る発明では、加工プログラムをブロックごとに解析し実行することで工作機械を制御しワークの加工を行う数値制御装置において、複数の加工工程が組込まれている前記加工プログラムにおける前記加工工程の区切りをあらわす特定コードを予め設定する設定手段と、前記加工プログラムの実行前及び前記加工プログラムの実行中のあらかじめ設定されたタイミングで、前記加工プログラムの未実行ブロックを解析し前記特定コードのみを検出する解析検出手段と、前記解析検出手段によって検出された前記特定コードのブロックが格納されているメモリ上の位置を取得し保存するデータ取得保存手段と、前記データ取得保存手段により取得保存された複数の前記メモリ上の位置を使用して前記特定コードを一覧表示する第一の表示手段と、前記第一の表示手段により一覧表示された前記特定コードから、選択された前記特定コードを特定する特定手段と、前記解析検出手段による検出が完了し、前記特定手段により特定された前記特定コードの前記メモリ上の位置を使用して、前記特定された前記特定コードを有する前記加工工程から前記加工プログラムを再開動作実行させるプログラム再開手段と、を有することを特徴とするプログラム加工再開機能を有する数値制御装置が提供される。
【００１４】
請求項１に係る発明では、加工プログラム実行開始時及び加工プログラム実行中のあらかじめ設定されたタイミングで、パラメータなどで指定した工程の区切りとする特定コード（例として、＄＄などのユーザ指定の任意コードや、Ｍ６などの工具交換指令など）のみを検出する解析を行い、検出したすべての特定コード及びそのブロックが格納されているメモリ上の位置を取得して保存する。また、保存したデータを一覧表示させてカーソル等で選択可能とし、選択した特定コードのメモリ上の位置を使用して、その特定コードブロックからプログラムを再開することを可能とすることにより、容易に未実行の加工工程からプログラムを再開させることができる。
【００１５】
本願の請求項２に係る発明では、前記特定手段により、前記第一の表示手段により一覧表示された前記特定コードから、選択された前記特定コードの前記メモリ上の位置を使用して、前記特定コードのブロックと、プログラムカウンタ上でその後実行される所定数のブロックを表示する第二の表示手段をさらに備えたことを特徴とする請求項１に記載のプログラム加工再開機能を有する数値制御装置が提供される。
請求項２に係る発明では、選択された特定コードのブロックと、プログラムカウンタ上でその後実行される所定数のブロックを表示させることによって、選択した特定コードが準ずる加工工程が認識できるようになり、オペレータが特定コードの内容を理解しやすくなる。
【００１６】
本願の請求項３に係る発明では、前記タイミングは、前記加工プログラムの実行開始直前から実行中の間、または前記加工プログラムの登録中のいずれかに設定できることを特徴とする請求項１又は２に記載のプログラム加工再開機能を有する数値制御装置が提供される。
本願の請求項４に係る発明では、前記タイミングの設定は、外部入力機器による設定によって設定できることを特徴とする請求項１〜３のいずれかに記載のプログラム加工再開機能を有する数値制御装置が提供される。
【００１７】
本願の請求項５に係る発明では、前記加工工程ごとに行われる工具交換指令を前記特定コードとして扱うことを特徴とする請求項１〜４のいずれかに記載のプログラム加工再開機能を有する数値制御装置が提供される。
請求項５に係る発明では、工具交換指令を特定コードとして扱うことにより、工具交換指令として別途パラメータとして設定して埋め込むことが不要となり、より容易に作業を行うことが可能となる。
【００１８】
本願の請求項６に係る発明では、前記第一の表示手段により一覧表示された前記特定コードを有する前記加工工程の、加工順番の変更を設定できる第一の入力設定手段と、前記第一の入力設定手段で設定された加工順番を特定する第一の入力設定特定手段と、を有することを特徴とする請求項１〜５のいずれかに記載のプログラム加工再開機能を有する数値制御装置が提供される。
本願の請求項７に係る発明では、前記データ取得保存手段により取得保存された前記メモリ上の位置を使用して、前記第一の入力設定特定手段により特定された前記加工工程の加工順番通りに前記加工プログラムを実行させる加工工程順番指定実行手段と、を有すことを特徴とする請求項６に記載のプログラム加工再開機能を有する数値制御装置が提供される。
【００１９】
請求項６又は７に係る発明では、第一の表示手段により一覧表示された特定コードにおいて、入力設定された加工順番を特定する特定手段を有することによって、加工プログラム自体を編集することなく、各特定コードが準ずる加工工程の加工順番を変更することが可能となる。これにより、中断理由により実行できない加工工程がある場合などに、実行できない加工工程をスキップして、その後の未実行の加工工程を実行することが可能となる。
【００２０】
請求項８に係る発明では、前記第一の表示手段により一覧表示された前記特定コードを有する前記加工工程のいずれかの前記加工工程の終了時に一時停止の指定を設定できる第二の入力設定手段と、前記第二の入力設定手段で設定された前記加工プログラムの一時停止指定を特定する第二の入力設定特定手段と、前記データ取得保存手段により取得保存された前記メモリ上の位置を使用して、前記加工工程の終了時を検出する加工工程終了検出手段と、前記第二の入力設定特定手段により特定された前記加工工程の終了時に前記加工プログラムの一時停止を実行する一時停止実行手段と、を有することを特徴とする請求項１〜７のいずれかに記載のプログラム加工再開機能を有する数値制御装置が提供される。
【００２１】
請求項８に係る発明では、特定コードの一覧表示において、入力された一時停止させたい加工工程を特定する特定手段を設けることで、入力設定された加工工程実施後に一時停止させることが可能となる。
また、請求項６〜８に係る発明では、加工順番の変更及び一時停止の入力設定をプログラム運転中にも変更することを可能とすることで、プログラム運転中に中断箇所の復旧の準備が整ったとき、現在加工中の工程の終了後に、中断箇所の復旧を行い、かつそのまま中断工程を実施するために未実行の加工工程を含む工程順番を変更することも可能となる。
【発明の効果】
【００２２】
本発明により、数値制御装置における加工プログラムの加工を中断後、オペレータの熟練度によらずに容易に未実行の加工工程から動作を再開させることができる数値制御装置を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】本発明におけるメモリ上の格納番地と、そこに入っているデータの例を示した図である。
【図２】第１の実施形態における加工プログラムの一例を示した図である。
【図３】第１の実施形態における解析検出手段とデータ取得保存手段の動作を示すフローチャートである。
【図４】第１の実施形態における第一の表示手段、特定コードを選択する選択手段、第二の表示手段、プログラム再開手段の動作を示すフローチャートである。
【図５】第２の実施形態において、加工プログラムを解析して特定コードを検出するタイミングとして、加工プログラムの実行開始直前とした場合の動作を示すフローチャートである。
【図６】第２の実施形態において、加工プログラムを解析して特定コードを検出するタイミングとして、加工プログラムの実行中とした場合の動作を示すフローチャートである。
【図７】第２の実施形態における、特定コード解析・検出処理の具体的な処理内容の動作を示すフローチャートである。
【図８】第２の実施形態における、プログラム実行とともに特定コード解析・検出処理の具体的な処理内容の動作を示すフローチャートである。
【図９】第２の実施形態において、加工プログラムを解析して特定コードを検出するタイミングとして、加工プログラムの登録中とした場合の動作を示すフローチャートである。
【図１０】第２の実施形態において、加工プログラムを解析して特定コードを検出するタイミングとして、外部入力機器による特定コード検出依頼時とした場合の動作を示すフローチャートである。
【図１１】第３の実施形態における加工プログラムの一例を示した図である。
【図１２】第４の実施形態における加工プログラムの一例を示した図である。
【図１３】第３の実施形態及び第４の実施形態における、工程の順番変更、一時停止予約の動作を示すフローチャートである（その１）。
【図１４】第３の実施形態及び第４の実施形態における、工程の順番変更、一時停止予約の動作を示すフローチャートである（その２）。
【図１５】第３の実施形態及び第４の実施形態における、工程の順番変更、一時停止予約の動作を示すフローチャートである（その３）。
【図１６】第３の実施形態及び第４の実施形態における、加工工程の順番指定実行、加工工程の終了検出、一時停止の実行動作を示すフローチャートである。
【発明を実施するための形態】
【００２４】
以下、本発明の実施形態を図に基づいて説明する。
まず、特定コードのブロックが格納されているメモリ上の位置について説明する。
一般的に、加工プログラムをメモリ上に格納している時、メモリ上の位置はポインタ情報で管理されている。以下、本明細書においては、「メモリ上の位置」はこのポインタ情報とし、「プログラムポインタ」と記述する。
【００２５】
ある加工プログラムの例で示すと、プログラムポインタはプログラムを格納するメモリの先頭から何バイト目であるか、という情報で管理されている場合もある。
このプログラムポインタをプログラム再開ブロックデータに事前に取得して、プログラムを表示するときにプログラムポインタから指し示すブロックを一覧表示することで、再開可能なプログラムポインタを表示させることが可能となる。さらに、プログラムポインタから指し示すブロックと、プログラムカウンタ上でその後実行される所定数のブロックも同時に表示するようにすれば、再開するプログラムカウンタの内容についても、ある程度表示させることが可能となる。
【００２６】
図１は、メモリ上の格納番地と、そこに入っているデータを示している。図１においては、わかりやすく説明するために、メモリ上に格納されているキャラクタで表現し、番地がわかりやすいように１６キャラクタごとに区切るようにしている。（通常は英文字や数字は１キャラクタで１バイトの情報になっているので、例えば”１”というデータは”３１”と表現されメモリに登録されている）。
図１のようにメモリに登録されているとき、取得保存されているプログラムポインタが「１０２３６ＤＨ」の場合、”Ｎ１２０３Ｇ４１Ｘ１４０Ｙ１５０Ｄ０１;”のブロックが保存されていることになる。
【００２７】
（第１の実施形態）
複数の加工工程が組み込まれている加工プログラムにおいて、加工工程の区切りを表す特定コードをパラメータなどで設定して埋め込むようにしている。これにより、加工工程ごとの切れ目を認識することが可能となる。一例として、特定コードを”＄＄”と設定した場合、”＄”が連続して２つ存在した場合に工程の区切りとして認識することが可能となる。
また、加工工程の区切りを表す特定コードとして、別途パラメータなどで設定する代わりに、既存の指令を加工工程の区切りを表す特定コードとして用いることもできる。一例として、一般的に工具交換が行われるのは加工工程の節目のため、Ｍ６Ｔ○○○○といった工具交換指令で挟まれた一群のプログラムを一つの加工工程として定義して、工具交換指令を特定コードとして用いることもできる。
【００２８】
図２は、加工プログラムの一例を示している。図２（ａ）は加工プログラムの内容を示しており、先頭行はＯ０００１というプログラムの名称を示している。その後加工の実行順に、ＳＴＥＰ０として初期化工程、その後、ＳＴＥＰ１として工程１、ＳＴＥＰ２として工程２と続き、最後はＳＴＥＰ６の終了工程とされている。そして、各工程の頭には、工程の区切りを示すための特定コードである”＄＄”が付加されている。このような加工プログラムにおいて、任意のタイミングで加工プログラムを解析させ、特定コードの検出および特定コードのプログラムポインタを検出順に保存させる。これにより、各工程の区切りを認識させることが可能となる。
【００２９】
この保存したプログラムポインタ（後述するフローチャートにおける”ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＰＮＴ］”）を使用することにより、図２（ｂ）のリストのように特定コード一覧を表示することが可能となる。なお、本実施形態においては、特定コード一覧の表示を、プログラムポインタの検出順に表示しているが、必ずしも検出順の表示でなくともよい。
【００３０】
図２（ｂ）のリストにおいては、検出番号（Ｎｏ.）,加工プログラム名（ＰＲＯＧ.）,特定コードブロックの情報（ＩＮＦＯ.）,加工プログラム上における特定コードの位置（ＢＬＯＣＫ ＮＯ.）の項目が表示されている。これらはいずれも保存したプログラムポインタにより取得可能なデータである。なお、特定コードブロックの情報（ＩＮＦＯ.）は、特定コードと同一ブロックに記述したコメントや指令を数文字分（図２（ｂ）のリストでは、”＄＄”後のコメントを情報として表示しているが、工具交換指令を特定コードとした場合は工具番号（Ｔコード）などになる）とし、工程の情報などを表示させることが可能である。
【００３１】
また、図２（ｂ）のリストにおける特定コードをカーソル選択できるようにし、プログラムポインタを使用してカーソルの移動に合わせて特定コード以降数ブロックを表示することも可能である。図２（ｂ）においては、検出番号（Ｎｏ.）００５の、特定コードブロックの情報（ＩＮＦＯ.）ＳＴＥＰ４が選択されており、（ＰＲＯＧＲＡＭ）として、右側にＳＴＥＰ４の特定コード以降のプログラムカウンタ上でその後実行される数ブロックが表示されている状態を示している。なお、本実施形態においては、（ＰＲＯＧＲＡＭ）として、右側にＳＴＥＰ４の特定コード以降のプログラムカウンタ上でその後実行される数ブロックが表示されているが、必ずしも表示しなければならないわけではない。
【００３２】
さらに、プログラムポインタを使用することで、カーソルで選択した特定コードブロックから加工プログラムを再開させることが可能である。図２（ａ）に示されているように、本実施形態においては、ＳＴＥＰ０から加工が実行され、ＳＴＥＰ２の工程２において加工が中断されているが、その後ＳＴＥＰ４を選択することによって、ＳＴＥＰ４からの再実行が行われている。
【００３３】
次に、本実施形態の動作を、図３及び図４のフローチャートに基づいて説明する。図３は解析検出手段とデータ取得保存手段の動作を示すフローチャートである。以下ステップ毎に説明する。
【００３４】
・（ステップＳＡ１）初期化動作を行う。プログラムポインタに開始位置を設定し、特定コード数、取得プログラムポイント、最大特定コード数をいずれもクリアして０とする。
・（ステップＳＡ２）プログラムポインタがプログラム終了（ＥＮＤ＿ＰＮＴ）と等しくないかどうかを判定する。等しくなくてプログラム終了ではない場合（ＹＥＳ）はステップＳＡ３に進み、等しくてプログラム終了である場合（ＮＯ）は終了する。
・（ステップＳＡ３）解析検出処理を行う。プログラムポインタにおいてブロックデータを取得して、字句解析（英記号と数値記号とに分ける処理）、構文解析（指令された英記号と数値との組み合わせを判定する処理）、意味解析（指令された英記号と数値により機能を判定する処理）を行う。
【００３５】
・（ステップＳＡ４）解析されたブロックデータが特定コードに等しいかどうかを判定する。特定コードに等しい場合（ＹＥＳ）はステップＳＡ５に進み、等しくない場合（ＮＯ）はステップＳＡ６に進む。
・（ステップＳＡ５）特定コードである箇所のプログラムポインタをｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＰＮＴ］として保存する処理と、ｍａｘ＿ｉにｉを保存することで、最大特定コード数の更新処理を行う。
・（ステップＳＡ６）ｐ＿ｐｎｔに１を加えて、プログラムポインタを更新して、ステップＳＡ２に戻る。
【００３６】
図４は、第一の表示手段、特定コードを選択する選択手段、第二の表示手段、プログラム再開手段の動作を示すフローチャートである。以下ステップ毎に説明する。
・（ステップＳＢ１）特定コード一覧表示画面を表示するモードを選択する。
・（ステップＳＢ２）図２（ｂ）におけるＮＯ．，ＰＲＯＧ．などの項目などのベース画面の表示を行う。
・（ステップＳＢ３）特定コードの取得を行い、特定コードのデータが存在するかどうかを判定する。特定コードのデータが存在する場合（ＹＥＳ）はステップＳＢ４に進み、特定コードのデータが存在しない場合（ＮＯ）は終了する。
【００３７】
・（ステップＳＢ４）初期化処理を行う。特定コード数ｉのカウント値をクリアして０とする。
・（ステップＳＢ５）特定コード数ｉが最大特定コード数ｍａｘ＿ｉより小さいかどうかを判定する。最大特定コード数ｍａｘ＿ｉよりも小さい場合（ＹＥＳ）はステップＳＢ６に進み、最大特定コード数以上となる場合（ＮＯ）はステップＳＢ７に進む。
・（ステップＳＢ６）特定コード一覧表示への追加処理を行う。プログラムポインタとして、特定コードの位置として保存されているプログラムポインタを設定し、そのプログラムポインタにおける、プログラム番号、プログラム位置、同一ブロックの情報の表示を行う。また、特定コード数ｉに１を加えて、ステップＳＢ５に戻る。
【００３８】
・（ステップＳＢ７）選択動作によってカーソルで選択された特定コードのプログラム表示がされたかどうかを判定する。まだ表示されていない場合（ＹＥＳ）はステップＳＢ８に進み、すでに表示されている場合（ＮＯ）はステップＳＢ９に進む。
・（ステップＳＢ８）プログラム表示を行う。特定コード数ｉとして、カーソルで選択された項目のカウント値を設定し、プログラムポインタとして、その特定コード数ｉに対応する、保存された特定コードのプログラムポインタを設定する。そして、上記のプログラムポインタにおいて、特定コードブロックと、プログラムカウンタ上でその後実行される所定数のブロックのプログラム表示を行う。
・（ステップＳＢ９）カーソル移動が行われたかどうかを判定する。カーソル移動が行われていない場合（ＹＥＳ）はステップＳＢ１０に進み、カーソル移動が行われた場合（ＮＯ）はステップＳＢ７に戻る。
【００３９】
・（ステップＳＢ１０）現在のカーソル位置をプログラム再開位置として指定されたかどうかを判定する。プログラム再開位置として指定されていない場合（ＹＥＳ）はステップＳＢ１１に進み、プログラム再開位置として指定された場合（ＮＯ）はステップＳＢ１２に進む。
・（ステップＳＢ１１）他の画面に切り換えたかどうかを判定する。他の画面に切り換えた場合（ＹＥＳ）は終了し、切り換えていない場合（ＮＯ）はステップＳＢ７に戻る。
・（ステップＳＢ１２）プログラム再開位置を設定する。プログラムポインタとして、特定コード数ｉに対応する、保存された特定コードのプログラムポインタを設定する。そして、プログラム開始位置を、上記のプログラムポインタのブロックに設定して、その位置からプログラムの再開を行う。そして、ステップＳＢ１１に進む。
【００４０】
（第２の実施形態）
解析検出手段による、加工プログラムを解析して特定コードを検出するタイミングとして、下記のタイミングが考えられる。
（１）加工プログラムの実行開始直前
（２）加工プログラムの実行中
（３）加工プログラムの登録中
（４）外部入力機器による特定コード検出依頼時
【００４１】
いずれのタイミングにおいて特定コードを検出するかについては、パラメータなどで選択することができる。一例として、タイミング設定のパラメータの設定値が１の場合は、加工プログラムの実行開始直前に加工プログラムを解析して特定コードを検出し、設定値が２の場合は加工プログラム実行中に加工プログラムを解析して特定コードを検出するというように設定することができる。
【００４２】
各タイミングにおける特定コードの検出について、タイミング毎に説明する。
（１）加工プログラムの実行開始直前
加工プログラム実行開始時に、その加工プログラムにおいて特定コードの解析及び検出を行い、特定コード検出完了後から加工プログラムを実行開始させる。図５は、加工プログラムの実行開始直前に特定コードの検出を行う場合の動作を示すフローチャートである。以下、ステップ毎に説明する。
【００４３】
・（ステップＳＣ１）パラメータの設定等により、加工プログラム開始前に特定コードを検出するよう設定されているかどうかを判定する。加工プログラム開始前に特定コードを検出する場合（ＹＥＳ）はステップＳＣ２に進み、加工プログラム開始前に特定コードを検出しない場合（ＮＯ）はステップＳＣ３に進む。
・（ステップＳＣ２）特定コード検出処理を行う。具体的には、図３のフローチャートに示されたような方法で検出処理を行うことができる。
・（ステップＳＣ３）通常プログラムの実行処理を開始する。
【００４４】
（２）加工プログラムの実行中
加工プログラムのブロック数が非常に多い場合などは、加工プログラムの実行開始直前のタイミングにおいて特定コードの検出を行っていると、加工プログラム実行開始までに時間がかかる場合がある。そのため、パラメータなどで設定された時間までは（１）の場合と同様に加工プログラム開始前に特定コードの解析及び検出を行い、設定された時間を過ぎた時に加工プログラム実行を開始するようにすることができる。そして、加工プログラム実行中に、特定コードの未解析プログラムブロックを実行する際に、合せて特定コードの解析・検出処理を行う。また、実行処理のアイドルタイム時に特定コードの解析及び検出処理を行う。
【００４５】
図６は、加工プログラムの実行中に特定コードの検出を行う場合の動作を示すフローチャートである。以下、ステップ毎に説明する。
・（ステップＳＤ１）パラメータの設定等により、加工プログラム実行中に特定コードを検出するように設定されているかどうかを判定する。加工プログラム実行中に特定コードを検出する場合（ＹＥＳ）はステップＳＤ２に進み、加工プログラム開始前に特定コードを検出しない場合（ＮＯ）はステップＳＤ７に進む。
・（ステップＳＤ２）初期化動作を行う。解析・検出処理のプログラムポインタ、及び実行処理のプログラムポインタに開始位置を設定し、特定コード数、取得プログラムポイント、最大特定コード数、特定コード解析・検出完了フラグ、特定コード解析・検出処理経過時間をいずれもクリアして０とする。
【００４６】
・（ステップＳＤ３）特定コード検出処理を行う。具体的な処理内容については、図７のフローチャートに示されたような方法で行う。
・（ステップＳＤ４）特定コード解析・検出完了フラグ完了フラグが０であるかどうかを判定する。０である場合（ＹＥＳ）はステップＳＤ５に進み、０でない場合（ＮＯ）はステップＳＤ７に進む。
・（ステップＳＤ５）特定コード解析・検出処理経過時間更新処理を行う。特定コード解析・検出処理経過時間ｔｉｍｅｒに、特定コード解析・検出処理にかかった処理時間Δを加えて更新する。
【００４７】
・（ステップＳＤ６）特定コード解析・検出処理経過時間ｔｉｍｅｒが設定時間未満であるかどうかを判定する。設定時間未満である場合（ＹＥＳ）はステップＳＤ３に戻り、設定時間以上である場合（ＮＯ）はステップＳＤ８に進む。
・（ステップＳＤ７）通常のプログラム実行処理を開始する。
・（ステップＳＤ８）プログラムの実行と並行して、特定コード解析・検出処理を行う。具体的な処理内容については、図８のフローチャートに示されたような方法で行う。
【００４８】
次に、図７のフローチャートに基づいて、図６のステップＳＤ３等における特定コード解析・検出処理の具体的な処理内容についてステップ毎に説明する。
・（ステップＳＥ１）解析検出処理を行う。解析・検出処理のプログラムポインタｂｋ＿ｐｎｔにおけるブロックデータを取得する。
・（ステップＳＥ２）取得したブロックデータが特定コードかどうかを判定する。特定コードの場合（ＹＥＳ）にはステップＳＥ３に進み、特定コードでない場合（ＮＯ）はステップＳＥ４に進む。
・（ステップＳＥ３）プログラムポインタ保存処理として、特定コードである箇所のプログラムポインタをｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＰＮＴ］［ｉ］として保存する処理と、ｉの値に１を加える処理を行い、最大特定コード数保存処理として、ｍａｘ＿ｉにｉを保存する処理を行う。
【００４９】
・（ステップＳＥ４）プログラムポインタｂｋ＿ｐｎｔに１を加えて更新処理を行う。
・（ステップＳＥ５）プログラムポインタｂｋ＿ｐｎｔがＥＮＤ＿ＰＮＴと等しくないかどうかを判定する。等しくない場合（ＹＥＳ）は終了して元のフローチャートに戻り、等しい場合（ＮＯ）はステップＳＥ６に進む。
・（ステップＳＥ６）特定コード解析・検出完了フラグｅｎｄ＿ｆｌｇに１を設定して終了して元のフローチャートに戻る。
【００５０】
次に、図８のフローチャートに基づいて、図６のステップＳＤ８等におけるプログラム実行とともに特定コード解析・検出処理の具体的な処理内容についてステップ毎に説明する。
・（ステップＳＦ１）プログラムブロック解析処理を行う。実行処理のプログラムポインタｆｒ＿ｐｎｔにおけるブロックデータを取得する。
・（ステップＳＦ２）実行処理のプログラムポインタｆｒ＿ｐｎｔが、解析・検出処理のプログラムポインタｂｋ＿ｐｎｔと等しいかどうかを判定する。等しい場合（ＹＥＳ）はステップＳＦ３に進み、等しくない場合（ＮＯ）はステップＳＦ４に進む。
・（ステップＳＦ３）特定コード解析・検出処理を行う。具体的には、図７のフローチャートに記載された手順で処理を行う。
【００５１】
・（ステップＳＦ４）プログラムブロックの実行処理を行う。
・（ステップＳＦ５）特定コード解析・検出完了フラグｅｎｄ＿ｆｌｇが０に等しいかどうかを判定する。０に等しい場合（ＹＥＳ）はステップＳＦ６に進み、０に等しくない場合（ＮＯ）はステップＳＦ８に進む。
・（ステップＳＦ６）アイドルタイムがないかどうかを判定する。アイドルタイムなしの場合（ＹＥＳ）はステップＳＦ８に進み、アイドルタイムありの場合（ＮＯ）はステップＳＦ７に進む。
【００５２】
・（ステップＳＦ７）特定コード解析・検出処理を行う。具体的には、図７のフローチャートに記載された手順で処理を行う。処理後、ステップＳＦ５に戻る。
・（ステップＳＦ８）実行処理のプログラムポインタｆｒ＿ｐｎｔに１を加えて更新する。
・（ステップＳＦ９）実行処理のプログラムポインタｆｒ＿ｐｎｔがＥＮＤ＿ＰＮＴと等しいかどうかを判定する。等しい場合（ＹＥＳ）は終了して元のフローチャートに戻り、等しくない場合（ＮＯ）はステップＳＦ１に戻る。
【００５３】
（３）加工プログラムの登録中
加工プログラムを数値制御装置のメモリに登録する時、予め指定した加工プログラムに対して特定コードの解析および検出を行うようにする。一般的にプログラム名の先頭コードは決まっているため（例えば”O”）、保存するプログラムが指定されたプログラムかどうかの判定は可能である。なお、プログラム登録中での解析のため、（１）,（２）,および後述する（４）の解析・検出とは違い、指定した加工プログラムから呼出される別の加工プログラムについては特定コードの解析・検出は行わない。また、指定した加工プログラムはメイン設定（実行開始予定）にする。
【００５４】
図９は、加工プログラムの登録中に特定コードの検出を行う場合の動作を示すフローチャートである。以下、ステップ毎に説明する。
・（ステップＳＧ１）パラメータの設定等により、加工プログラム登録中に特定コードを検出するように設定されているかどうかを判定する。加工プログラム登録中に特定コードを検出する場合（ＹＥＳ）はステップＳＧ２に進み、加工プログラム開始前に特定コードを検出しない場合（ＮＯ）はステップＳＧ１４に進む。
・（ステップＳＧ２）初期化動作を行う。解析・検出処理のプログラムポインタ、及びプログラム保存先ポインタをＮＵＬＬクリアし、特定コード数、取得プログラムポイント、最大特定コード数、特定プログラムフラグ、特定コード解析・検出完了フラグをいずれもクリアして０とする。
・（ステップＳＧ３）登録元に未取得のプログラムデータがあるかどうかを判定する。未取得のプログラムデータがある場合（ＹＥＳ）はステップＳＧ４に進み、未取得のプログラムデータがない場合（ＮＯ）は終了する。
【００５５】
・（ステップＳＧ４）登録元からバッファ分のプログラムデータを取得する。
・（ステップＳＧ５）バッファに未登録データがあるかどうかを判定する。未登録データがある場合（ＹＥＳ）はステップＳＧ６に進み、未登録データがない場合（ＮＯ）はステップＳＧ３に戻る。
・（ステップＳＧ６）バッファから１ブロック分のプログラムデータを取得・保存する。プログラム保存先ポインタｓｖ＿ｐｎｔにその際のプログラム保存先ポインタを保存する。
【００５６】
・（ステップＳＧ７）解析検出処理を行う。字句解析（英記号と数値記号とに分ける処理）、構文解析（指令された英記号と数値との組み合わせを判定する処理）を行う。
・（ステップＳＧ８）解析検出処理の結果がプログラム名データであるかどうかを判定する。プログラム名データである場合（ＹＥＳ）はステップＳＧ９に進み、プログラム名データでない場合（ＮＯ）はステップＳＧ１１に進む。
・（ステップＳＧ９）解析検出処理の結果が指定プログラムであるかどうかを判定する。指定プログラムである場合（ＹＥＳ）はステップＳＧ１０に進み、指定プログラムでない場合（ＮＯ）はステップＳＧ５に戻る。
【００５７】
・（ステップＳＧ１０）指定プログラムフラグｓｐｃｆｃ＿ｆｌｇに１を設定し、ステップＳＧ５に戻る。
・（ステップＳＧ１１）指定プログラムフラグｓｐｃｆｃ＿ｆｌｇの値が１かどうかを判定する。１の場合（ＹＥＳ）はステップＳＧ１２に進み、１ではない場合（ＮＯ）はステップＳＧ５に戻る。
・（ステップＳＧ１２）解析検出処理の結果が特定コードであるかどうかを判定する。特定コードである場合（ＹＥＳ）はステップＳＧ１３に進み、特定コードでない場合（ＮＯ）はステップＳＧ５に戻る。
【００５８】
・（ステップＳＧ１３）プログラムポインタの保存処理を行う。ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＰＮＴ］［ｉ］にプログラム保存先ポインタを保存して、ｉに１を加えて更新する。また、最大特定コード数ｍａｘ＿ｉにｉを入れて更新する。
・（ステップＳＧ１４）通常のプログラム登録処理を開始する。
【００５９】
（４）外部入力機器による特定コード検出依頼時
例えば信号入力など外部入力機器による特定コード検出依頼時に、現在メイン設定（実行開始予定）の加工プログラムに対して、特定コードの解析および検出を行うようにする。
【００６０】
図１０は、外部入力機器による特定コード検出依頼時に特定コードの検出を行う場合の動作を示すフローチャートである。以下、ステップ毎に説明する。
・（ステップＳＨ１）パラメータの設定等により、外部入力機器による検出依頼時に特定コードを検出するように設定されているかどうかを判定する。外部入力機器による検出依頼時に特定コードを検出する場合（ＹＥＳ）はステップＳＨ２に進み、外部入力機器による検出依頼時に特定コードを検出しない場合（ＮＯ）は終了する。
【００６１】
・（ステップＳＨ２）特定コードの検出依頼があったかどうかを判定する。検出依頼があった場合（ＹＥＳ）はステップＳＨ３に進み、検出依頼がない場合（ＮＯ）はステップＳＨ２を繰り返し、検出依頼があるまで待機する。
・（ステップＳＨ３）特定コード検出処理を行う。具体的には図３のフローチャートに示されたような手順で処理を行う。
・（ステップＳＨ４）通常のプログラム登録処理を開始する。
【００６２】
（第３の実施形態）
第１の実施形態における特定コードリストの表示に実行順番（ＳＥＱ）を入力できる項目を追加することで、実際のプログラムを変更せずに各工程の実行順番を変更することを可能とする。例えば図１１に示された例の場合、後述するように工程２と工程３を実行させないために、順番が来る前にプログラム終了指令（Ｍ３０）が実行されるように順番を変更している。
【００６３】
実行順番変更の処理としては、特定コードに関する情報の保存において、プログラムポインタ以外に実行順番も保持するようにする。（フローチャート中の”ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］”）
変更時の方式として、自動整理式と手動整理式などが考えられる。前者の場合、例えば選択された工程の順番を２番目から３番目に変更した場合、もともと３番目だった工程は自動的に２番目となるように変更される。後者の場合、同様に選択工程の順番を２番目から３番目に変更した場合、もともと３番目だった工程はそのまま３番目のままである。このとき、プログラム実行時、１番目の工程終了後、２番目に設定されている工程はないため、３番目に設定されている工程を実行するが、設定されている工程が２つ以上あるため、検出順で早い方が実行される。その工程終了後は、４番目に設定されている工程を実行するようにし、実行されなかった３番目に設定されている工程はスキップすることにする。また、検出された特定コード数より大きい順番が設定された場合、０が設定されていた場合と同様にその工程はスキップするようにする。
【００６４】
プログラム実行中の実行順番変更のアルゴリズムについては、特定コードブロックとなったとき、前回の特定コードブロックの実行順番に１を追加した値と同じ実行順番を持つ特定コードのプログラムカウンタを図１６に示されたフローチャートのようなアルゴリズムで検索し、そのプログラムポインタを使用して該当のブロックを読出し順次実行していくことで実行順番を変更する。また、上記手動整理式の例のように、前回の特定コードブロックの実行順番に１を追加した値と同じ実行順番を持つ特定コードの工程が無い場合、さらに１を追加した値と同じ実行順番を持つ特定コードの工程を検索するようにする。
【００６５】
図１１は、加工プログラムの一例を示している。図１１（ａ）及び図１１（ｂ）は加工プログラムのリストを示しており、検出番号（Ｎｏ.）,加工プログラム名（ＰＲＯＧ.）,特定コードブロックの情報（ＩＮＦＯ.）,加工プログラム上における特定コードの位置（ＢＬＯＣＫ ＮＯ.）の項目に加えて、実行順番（ＳＥＱ）を入力できる項目が表示されている。これらはいずれも保存したプログラムポインタにより取得可能なデータである。また、その右側には、（ＰＲＯＧＲＡＭ）として、選択された工程であるＳＴＥＰ４の特定コード以降の数ブロックが表示されている。
【００６６】
図１１（ａ）においては、当初の実行順番に従って実行順番（ＳＥＱ）が配置されているが、これを操作者の指定によって、実行順番（ＳＥＱ）を変更することができる。図１１（ｂ）は実行順番（ＳＥＱ）の変更の様子を示しており、ＳＴＥＰ４の工程を選択して、もともと５番目であった実行順番が３番目になるように変更されており、それに伴い他の工程の実行順番（ＳＥＱ）についても変更されている。
【００６７】
図１１（ｃ）は加工プログラムの実際のプログラムと実行順番を示している。図１１（ｃ）の左側には、先頭行としてＯ０００１というプログラムの名称を示されており、その後本来の加工の実行順に、ＳＴＥＰ０として初期化工程、その後、ＳＴＥＰ１として工程１、ＳＴＥＰ２として工程２と続き、最後はＳＴＥＰ６の終了工程とされている。そして、各工程の頭には、工程の区切りを示すための特定コードである”＄＄”が付加されている。このような加工プログラムにおいて、任意のタイミングで加工プログラムを解析させ、特定コードの検出および特定コードのプログラムポインタを検出順に保存させる。これにより、各工程の区切りを認識させることが可能となることは、第１の実施形態等と同様である。
【００６８】
図１１（ｂ）における実行順番（ＳＥＱ）の変更により、実際の実行順番については図１１（ｃ）の右側のようになる。図１１（ｂ）の実行順番（ＳＥＱ）の順番のとおり、ＳＴＥＰ１の工程１の後に、ＳＴＥＰ４の工程４が実行される。そして、５番目の工程としてＳＴＥＰ６の終了工程が行われるため、ＳＴＥＰ２の工程２と、ＳＴＥＰ３の工程３については実行されずに終了する。
本実施形態のさらに具体的な動作の流れについては、次の第４の実施形態の場合と合わせて後述する。
【００６９】
（第４の実施形態）
第１〜第３の実施形態における特定コードリストの表示に一時停止予約（ＳＴＰ）を入力できる項目を追加することで所望の工程が終了したタイミングで加工プログラムを一時停止させることを可能とする。例えば図１２に示された例の場合、後述するように工程４が終了した時点で加工プログラムを一時停止させている。
一時停止予約処理として、各特定コードに関する情報においてプログラムポインタや実行順番に合わせて一時停止予約フラグも追加する。（フローチャート中の”Ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＴＰ］”）
ここで、プログラムを実行中に特定コードブロックとなったときに一時停止予約フラグをチェックすることで、一時停止予約フラグがオンとされている工程の終了後に一時停止を行うことができる。
【００７０】
図１２は、加工プログラムの一例を示している。図１２（ａ）は加工プログラムのリストを示しており、検出番号（Ｎｏ.）,加工プログラム名（ＰＲＯＧ.）,特定コードブロックの情報（ＩＮＦＯ.）,加工プログラム上における特定コードの位置（ＢＬＯＣＫ ＮＯ.），実行順番（ＳＥＱ）を入力できる項目に加えて、一次停止予約（ＳＴＰ）を入力できる項目が表示されている。これらはいずれも保存したプログラムポインタにより取得可能なデータである。また、その右側には、（ＰＲＯＧＲＡＭ）として、選択された工程であるＳＴＥＰ４の特定コード以降の数ブロックが表示されている。
【００７１】
図１２（ｂ）は加工プログラムの実際のプログラムと実行順番を示している。加工プログラムの実際の実行順番については、実行順番（ＳＥＱ）として規定されているとおり、図１２（ｂ）の右側のようになる。図１１（ｂ）の実行順番（ＳＥＱ）の順番のとおり、ＳＴＥＰ１の工程１の後に、ＳＴＥＰ４の工程４が実行される。ここで、図１２（ａ）に示されているように、ＳＴＥＰ４において一次停止予約（ＳＴＰ）が設定されているため、ＳＴＥＰ４の工程４の終了後に一次停止がされている。その後、再実行指令があった時に、一時停止時点から動作が再開される。
本実施形態のさらに具体的な動作の流れについては、次の第４の実施形態の場合と合わせて後述する。
【００７２】
次に、図１３、図１４、図１５、図１６のフローチャートに基づいて、第３の実施形態、第４の実施形態の動作について説明する。
まず、図１３、図１４、図１５に基づき、工程の順番変更、一時停止予約の動作について説明する。
・（ステップＳＩ１）特定コード一覧表示画面を表示するモードを選択する。
・（ステップＳＩ２）図１１（ａ）、図１２（ａ）等におけるＮＯ．，ＰＲＯＧ．などの項目などのベース画面の表示を行う。
・（ステップＳＩ３）特定コードの取得を行い、特定コードのデータが存在するかどうかを判定する。特定コードのデータが存在する場合（ＹＥＳ）はステップＳＩ４に進み、特定コードのデータが存在しない場合（ＮＯ）は終了する。
【００７３】
・（ステップＳＩ４）初期化処理を行う。特定コード数ｉのカウント値をクリアして０とする。
・（ステップＳＩ５）特定コード数ｉが最大特定コード数ｍａｘ＿ｉより小さいかどうかを判定する。最大特定コード数ｍａｘ＿ｉよりも小さい場合（ＹＥＳ）はステップＳＩ６に進み、最大特定コード数以上となる場合（ＮＯ）はステップＳＩ７に進む。
・（ステップＳＩ６）特定コード一覧表示への追加処理を行う。プログラムポインタとして、特定コードの位置として保存されているプログラムポインタを設定し、そのプログラムポインタにおける、プログラム番号、プログラム位置、同一ブロックの情報の表示を行う。また、特定コード数ｉに１を加えて、ステップＳＩ５に戻る。
【００７４】
・（ステップＳＩ７）選択動作によってカーソルで選択された特定コードのプログラム表示がされたかどうかを判定する。まだ表示されていない場合（ＹＥＳ）はステップＳＩ８に進み、すでに表示されている場合（ＮＯ）はステップＳＩ９に進む。
・（ステップＳＩ８）プログラム表示を行う。特定コード数ｉとして、カーソルで選択された項目のカウント値を設定し、プログラムポインタとして、その特定コード数ｉに対応する、保存された特定コードのプログラムポインタを設定する。そして、上記のプログラムポインタにおいて、特定コードブロックと、プログラムカウンタ上でその後実行される所定数のブロックのプログラム表示を行う。
・（ステップＳＩ９）カーソル移動が行われたかどうかを判定する。カーソル移動が行われていない場合（ＹＥＳ）はステップＳＩ１０に進み、カーソル移動が行われた場合（ＮＯ）はステップＳＩ７に戻る。
【００７５】
・（ステップＳＩ１０）選択ブロックの実行順番を変更してないかどうかを判定する。変更していない場合（ＹＥＳ）はステップＳＩ１１に進み、変更している場合（ＮＯ）はステップＳＩ１３に進む。
・（ステップＳＩ１１）選択ブロックの一次停止予約を変更していないかどうかを判定する。変更していない場合（ＹＥＳ）はステップＳＩ１２に進み、変更している場合（ＮＯ）はステップＳＩ２０に進む。
・（ステップＳＩ１２）他の画面に切り換えたかどうかを判定する。他の画面に切り換えた場合（ＹＥＳ）は終了し、切り換えていない場合（ＮＯ）はステップＳＩ７に戻る。
【００７６】
・（ステップＳＩ１３）実行順番情報の変更を行う。特定コード数ｉとして、カーソルで選択された項目のカウント値を設定し、旧実行順番として、取得プログラムポインタｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｉ］の値を入れ、取得プログラムポインタｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｉ］に入力された値を入れる。そして、ｊの値を０に初期化する。
・（ステップＳＩ１４）変更時の方式が自動整理方式かどうかを判定する。自動整理方式の場合（ＹＥＳ）はステップＳＩ１５に進み、自動整理方式でない場合（ＮＯ）はステップＳＩ１１に戻る。
・（ステップＳＩ１５）ｊがｍａｘ＿ｉより小さいかどうかを判定する。ｍａｘ＿ｉより小さい場合（ＹＥＳ）はステップＳＩ１６に進み、ｍａｘ＿ｉ以上の場合（ＮＯ）はステップＳＩ１１に戻る。
【００７７】
・（ステップＳＩ１６）ｊがｉと等しくないかどうかを判定する。等しくない場合（ＹＥＳ）はステップＳＩ１７に進み、等しい場合（ＮＯ）はステップＳＩ１９に進む。
・（ステップＳＩ１７）ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｊ］がｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｉ］と等しいかどうかを判定する。等しい場合（ＹＥＳ）はステップＳＩ１８に進み、等しくない場合（ＮＯ）はステップＳＩ１９に進む。
【００７８】
・（ステップＳＩ１８）ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｊ］に旧実行順番を入れ、実行順番情報の更新を行う。
・（ステップＳＩ１９）ｊの値に１を加えて更新する。
・（ステップＳＩ２０）一時停止予約情報の変更を行う。ｉにカーソルで選択されたカウント値を入れ、ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＴＰ］［ｉ］に入力値を入れ、ステップＳＩ１２に戻る。
【００７９】
次に、図１６のフローチャートに基づいて、加工工程の順番指定実行、加工工程の終了検出、一時停止の実行について説明する。
・（ステップＳＪ１）初期化処理を行う。今回の実行順番、前回の実行順番を０とし、ｎｏｗ＿ｉをＮＵＬＬとし、ｐ＿ｐｎｔをＩＮＴ＿ＰＮＴとしてプログラムポインタを開始位置に設定する。
・（ステップＳＪ２）プログラムポインタｐ＿ｐｎｔがＥＮＤ＿ＰＮＴと等しくないかどうかを判定する。等しくない場合（ＹＥＳ）はステップＳＪ３に進み、等しい場合は終了する。
【００８０】
・（ステップＳＪ３）プログラムポインタｐ＿ｐｎｔにおけるブロックデータを取得する。
・（ステップＳＪ４）取得したブロックが特定コードであるかどうかを判定する。特定コードである場合（ＹＥＳ）はステップＳＪ８に進み、特定コードではない場合（ＮＯ）はステップＳＪ５に進む。
・（ステップＳＪ５）取得したブロックが終了コードであるかどうかを判定する。終了コードである場合（ＹＥＳ）は終了し、終了コードではない場合（ＮＯ）はステップＳＪ６に進む。
【００８１】
・（ステップＳＪ６）取得ブロックの実行を行う。
・（ステップＳＪ７）プログラムポインタｐ＿ｐｎｔの値に１を加えて更新し、ステップＳＪ２に戻る。
・（ステップＳＪ８）ｎｏｗ＿ｉの値がＮＵＬＬと等しくないかどうかを判定する。ＮＵＬＬに等しくない場合（ＹＥＳ）はステップＳＪ９に進み、ＮＵＬＬに等しい場合（ＮＯ）はステップＳＪ１０に進む。
・（ステップＳＪ９）ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＴＰ］［ｎｏｗ＿ｉ］の値が０に等しいかどうかを判定する。等しい場合（ＹＥＳ）はステップＳＪ１０に進み、等しくない場合（ＮＯ）はステップＳＪ２１に進む。
【００８２】
・（ステップＳＪ１０）ｊの値を０とする。
・（ステップＳＪ１１）ｊがｍａｘ＿ｉ未満であるかどうかを判定する。ｍａｘ＿ｉ未満の場合（ＹＥＳ）はステップＳＪ１２に進み、ｍａｘ＿ｉ以上である場合（ＮＯ）は終了する。
・（ステップＳＪ１２）ｉの値を０とする。
・（ステップＳＪ１３）ｉの値がｍａｘ＿ｉ未満であるかどうかを判定する。ｍａｘ＿ｉ未満である場合（ＹＥＳ）はステップＳＪ１４に進み、ｍａｘ＿ｉ以上である場合（ＮＯ）はステップＳＪ１８に進む。
【００８３】
・（ステップＳＪ１４）今回の実行順番に、前回の実行順番の値にｊ＋１を加えて、今回の実行順番を更新する。
・（ステップＳＪ１５）今回の実行順番が、ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｉ］と等しいかどうかを判定する。ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｉ］と等しい場合（ＹＥＳ）はステップＳＪ１６に進み、等しくない場合（ＮＯ）はステップＳＪ１９に進む。
・（ステップＳＪ１６）プログラムポインタｐ＿ｐｎｔにｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＰＮＴ］［ｉ］の値を入れて、プログラムポインタの更新を行う。
・（ステップＳＪ１７）前回の実行順番に、ｓｐ＿ｃｏｄｅ＿ｉｎｆ［ＳＥＱ］［ｉ］を入れ、前回の実行順番の更新を行う。
【００８４】
・（ステップＳＪ１８）ｊの値に１を加えて更新し、ステップＳＪ１１に戻る。
・（ステップＳＪ１９）ｉの値に１を加えて更新し、ステップＳＪ１３に戻る。
・（ステップＳＪ２０）ｎｏｗ＿ｉにｉの値を入れ、ステップＳＪ２に戻る。
・（ステップＳＪ２１）プログラム一時停止を行う。
・（ステップＳＪ２２）一時停止解除がされたかどうかを判定する。一時停止解除がされた場合（ＹＥＳ）はステップＳＪ１０に戻り、一時停止解除がされない場合（ＮＯ）は解除されるまでステップＳＪ２２を繰り返す。
【００８５】
なお、図１３〜図１６のフローチャートにおいては、第３の実施形態の各工程の実行順番を変更することが可能となるものと、第４の実施形態の一時停止予約が入力されたものの両方を備えたものについての動作について説明したが、いずれか一方のみを備えたものとすることも可能である。
【図１】
0005956506.tif 000002
【図３】
0005956506.tif 000003
【図４】
0005956506.tif 000004
【図５】
0005956506.tif 000005
【図６】
0005956506.tif 000006
【図７】
0005956506.tif 000007
【図８】
0005956506.tif 000008
【図９】
0005956506.tif 000009
【図１０】
0005956506.tif 000010
【図１３】
0005956506.tif 000011
【図１４】
0005956506.tif 000012
【図１５】
0005956506.tif 000013
【図１６】
0005956506.tif 000014
【図２】
0005956506.tif 000015
【図１１】
0005956506.tif 000016
【図１２】
0005956506.tif 000017