(57)【特許請求の範囲】
【請求項１】
系統毎の加工プログラムを記憶するプログラム記憶部と、
前記系統毎の加工プログラムを解析することによって、系統毎に独立して加工プログラムを同時に実行するプログラム解析部と、
を備え、
前記各系統の加工プログラムは、前記各系統への共通指令である制御変数を含んでおり、
前記制御変数には、前記各系統で共通な１つの値が保存され、
前記プログラム解析部は、
前記加工プログラムの同時実行中において、何れの系統の加工プログラム内でも前記制御変数を実行していない場合に、何れかの系統の加工プログラム内で前記制御変数の実行を開始すると、前記実行を開始した系統にのみ前記制御変数の実行および上書きを許可するとともに、前記実行を開始した系統以外の他系統の加工プログラム内で前記制御変数を実行しようとしても前記制御変数の実行および上書きを許可せず、
前記加工プログラム内で前記制御変数の実行が完了すると、加工プログラムの何れか１つに前記制御変数の実行および上書きを許可する、
ことを特徴とする数値制御装置。
【請求項２】
前記プログラム解析部は、
前記実行した系統にのみ前記制御変数の実行および上書きを許可している間は、前記他系統の加工プログラム内で前記制御変数を参照しても前記制御変数を無効として扱い、かつ前記加工プログラム内で前記制御変数を参照した場合には前記制御変数を有効として扱うことを特徴とする請求項１に記載の数値制御装置。
【請求項３】
前記プログラム解析部は、
前記系統毎に前記制御変数の実行および上書きが許可されているか否かを示す許可情報を管理し、
前記許可情報に基づいて、前記有効および前記無効を判断することを特徴とする請求項２に記載の数値制御装置。
【請求項４】
系統毎の加工プログラムを記憶するプログラム記憶部と、
前記系統毎の加工プログラムを解析することによって、系統毎に独立して加工プログラムを同時に実行するプログラム解析部と、
を備え、
前記各系統の加工プログラムは、前記各系統への共通指令である制御変数を含んでおり、
前記制御変数には、前記各系統で共通な１つの値が保存され、
前記プログラム解析部は、
前記加工プログラムの同時実行中において、何れの系統の加工プログラム内でも前記制御変数を実行していない場合に、何れかの系統の加工プログラム内で前記制御変数の実行を開始すると、前記実行を開始した系統にのみ前記制御変数の実行および上書きを許可し、
前記実行を開始した系統以外の他系統のうち前記制御変数を実行しようとしている系統の加工プログラムを停止し、
前記加工プログラム内で前記制御変数の実行が完了すると、停止させていた加工プログラムの何れか１つを再開させる、
ことを特徴とする数値制御装置。
【請求項５】
前記プログラム解析部は、
前記系統毎に前記制御変数が実行されているか否かを示す実行情報を管理し、
前記実行情報に基づいて、前記加工プログラムを停止させるか否かを判断することを特徴とする請求項４に記載の数値制御装置。
【請求項６】
前記系統のうちの前記制御変数の実行および上書きを許可する排他制御変数のパラメータを記憶しておくパラメータ記憶部と、
前記制御変数が前記排他制御変数であるか否かを前記パラメータに基づいて判断する排他制御判断部と、
をさらに備え、
前記制御変数が前記排他制御変数である場合には、何れか１つの系統にのみ前記制御変数を実行させることを特徴とする請求項１または４に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、複数の系統に対して系統毎に制御を行う数値制御装置に関する。
【背景技術】
【０００２】  複合加工として多系統の加工を行う場合には、系統毎に異なる加工プログラムを作成しておき、各加工プログラムを実行することで加工が行なわれている。このような加工を行う多系統の数値制御装置には、１つの系統が加工プログラムを実行している間、他の系統はプログラムを停止させている場合と、複数の系統が同時に加工プログラムを実行する場合とがある。複数の系統で異なるプログラムを同時に実行させる場合には、加工時間を短縮することが可能となる。【０００３】  複数の系統の加工プログラムを同時に実行させる際に用いるプログラム内の指令（データ）には、系統間で同じ指令であっても系統毎に異なる値を保存可能な指令と、系統に共通で１つの値（系統間で１つの値）を保存可能な指令と、が存在する（例えば、特許文献１，２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１４３１３０号公報
【特許文献２】特開平３−１９６３０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】  しかしながら、複数の系統で異なる加工プログラムを同時に実行する場合、共通の指令に対して複数の系統から同時にアクセスが行なわれたり、ある系統が共通の指令に値をセットした後、他の系統がすぐにその指令に対し値を上書きしたりする場合がある。このような場合、使用したい値が使われる前に他の系統で書き換えられてしまい、所望の動作を実行できなくなるという問題があった。【０００６】  本発明は、上記に鑑みてなされたものであって、複数の系統の加工プログラムを同時に実行する際に、系統間で同じ指令を用いて系統間で共通の１つの値を保存する場合であっても、系統毎に所望の動作を実行できる数値制御装置を得ることを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決し、目的を達成するために、本発明は、系統毎の加工プログラムを記憶するプログラム記憶部と、前記系統毎の加工プログラムを解析することによって、系統毎に独立して加工プログラムを同時に実行するプログラム解析部と、を備え、前記各系統の加工プログラムは、前記各系統への共通指令である制御変数を含んでおり、前記制御変数には、前記各系統で共通な１つの値が保存され、前記プログラム解析部は、前記加工プログラムの同時実行中において、何れの系統の加工プログラム内でも前記制御変数を実行していない場合に、何れかの系統の加工プログラム内で前記制御変数の実行を開始すると、前記実行を開始した系統にのみ前記制御変数の実行および上書きを許可するとともに、前記実行を開始した系統以外の他系統の加工プログラム内で前記制御変数を実行しようとしても前記制御変数の実行および上書きを許可せず、前記加工プログラム内で前記制御変数の実行が完了すると、加工プログラムの何れか１つに前記制御変数の実行および上書きを許可する、ことを特徴とする。
【発明の効果】
【０００８】  本発明によれば、複数の系統の加工プログラムを同時に実行する際に、系統間で同じ指令を用いて系統間で共通の１つの値を保存する場合であっても、系統毎に所望の動作を実行することが可能になるという効果を奏する。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態１に係るＮＣ装置の構成を示すブロック図である。
【図２】図２は、実施の形態１のＮＣ装置で用いる排他制御変数を説明するための図である。
【図３】図３は、排他制御変数に値をセットする処理の処理手順を示すフローチャートである。
【図４】図４は、排他制御変数に「０」をセットする処理の処理手順を示すフローチャートである。
【図５】図５は、排他制御変数を参照する処理の処理手順を示すフローチャートである。
【図６】図６は、第１の実施の形態に係るＮＣ装置で用いられる加工プログラムの一例を示す図である。
【図７】図７は、図６に示した加工プログラムを実行した場合の系統毎の動作処理手順を示すフローチャートである。
【図８】図８は、図６に示した加工プログラムを実行した場合の系統ｂｉｔのタイミングチャートである。
【図９】図９は、実施の形態２に係るＮＣ装置の構成を示すブロック図である。
【図１０】図１０は、排他制御変数に値をセットする処理の処理手順を示すフローチャートである。
【図１１】図１１は、第２の実施の形態に係るＮＣ装置で用いられる加工プログラムの一例を示す図である。
【図１２】図１２は、図１１に示した加工プログラムを実行した場合の系統毎の動作処理手順を示すフローチャートである。
【図１３】図１３は、図１１に示した加工プログラムを実行した場合の系統ｂｉｔのタイミングチャートである。
【図１４】図１４は、実施の形態３に係るＮＣ装置の構成を示すブロック図である。
【図１５】図１５は、排他制御指定パラメータの指定処理を説明するための図である。
【図１６】図１６は、排他制御変数特定部の構成を示す図である。
【図１７】図１７は、従来の加工プログラムの一例を示す図である。
【発明を実施するための形態】
【００１０】  以下に、本発明の実施の形態に係る数値制御装置を図面に基づいて詳細に説明する。なお、これらの実施の形態によりこの発明が限定されるものではない。
【００１１】実施の形態１．  図１は、実施の形態１に係るＮＣ装置の構成を示すブロック図である。ＮＣ（Numerical  Control）装置（数値制御装置）１Ａは、複数の系統を備える多系統の機械の制御を行う装置である。ＮＣ装置１Ａは、複数の系統が同時に各加工プログラムを実行する際に、系統毎に排他的な動作を行う。ＮＣ装置１Ａは、メモリ２、プログラム解析部３Ａ、補間処理部４、画面処理部５、機械制御信号処理部６、ＰＬＣ７、入力制御部８、軸データ出力部９を備えている。
【００１２】  入力制御部８は、入力操作部４１に接続されている。入力制御部８は、入力操作部４１がオペレータによって操作されると、スイッチ信号等の変化や加工プログラムの編集・パラメータの変更等を検知する。入力制御部８は、検知した内容に基づいて、メモリ２内の各部にアクセスしてメモリ２が記憶する情報を書き換える処理や読み出す処理等を行う。入力操作部４１は、マウスやキーボードなどを備えて構成されている。
【００１３】  メモリ２は、加工プログラム記憶部２５、パラメータ記憶部２６、画面表示データ記憶部２７、共有エリア２８を有している。加工プログラム記憶部２５は、ワーク（被加工物）の加工に用いる加工プログラムを記憶する。加工プログラムには、ワークを加工するのに必要な、機械の動作内容や刃物の移動経路等が、ＮＣ装置１Ａで解読できるフォーマットで記述されている。本実施の形態の加工プログラム記憶部２５は、系統毎の加工プログラムを１つの加工プログラムとして記憶しておく。
【００１４】  パラメータ記憶部２６は、被加工物の加工に用いるパラメータを記憶する。パラメータ記憶部２６に記憶されているパラメータには、ＮＣ装置１Ａの仕様を決定するデータや、機械制御に必要な条件データ等が含まれている。
【００１５】  画面表示データ記憶部２７は、画面に表示するデータを記憶する。画面表示データ記憶部２７は、工具などの現在位置に関する情報、主軸の回転位置に関する情報、ＮＣ装置１Ａの制御モード、各種選択信号の出力状態等、種々のデータを記憶している。共有エリア２８は、加工プログラムの解析に必要な一時的なデータや、機械動作を制御中のシステム制御に必要な一時的なデータなどを記憶する。
【００１６】  画面処理部５は、表示部４２に接続されている。画面処理部５は、画面表示データ記憶部２７内のデータを読み取り、表示部４２にデータ表示を行なわせる。表示部４２は、画面処理部５によって指示されたデータを表示する液晶モニタなどの表示装置である。
【００１７】  プログラム解析部３Ａは、加工プログラム記憶部２５に記憶されている加工プログラムのうち、入力操作部４１で指定された加工プログラムを先頭から順次読み出す。プログラム解析部３Ａは、各種ＮＣ指令毎に指定された処理手順に従って、加工プログラムを解析し実行していく。プログラム解析部３Ａは、解析処理中のデータ等を共有エリア２８に一時記憶させながら加工プログラムを解析し、解析結果を補間処理部４に渡す。本実施の形態のプログラム解析部３Ａは、系統毎に加工プログラムを解析して系統毎に処理を実行する。
【００１８】  また、本実施の形態のプログラム解析部３Ａは、排他制御解析部３３を有している。排他制御解析部３３は、排他制御変数を解析する。排他制御変数は、複数の系統の加工プログラムを同時に実行させる際に用いる加工プログラム内の指令（データ）である。
【００１９】  排他制御解析部３３は、何れかの系統に共通データへのアクセス許可を与えた状態では、他の系統に対して共通データへのアクセスを禁止する。排他制御解析部３３は、他の系統に対して共通データへのアクセスを禁止した状態で、他の系統にアクセスが許可されるまで、アクセスを望んでいる他の系統にアクセス許可の確認を繰り返させる。排他制御解析部３３は、共通データへのアクセスを許可された系統が、共通データへのアクセスを完了した後、アクセスを望んでいる他の系統の何れか１つに対して共通データへのアクセスを許可する。
【００２０】  補間処理部４は、各軸（１軸目〜ｎ軸目（ｎは自然数））に対し、加工プログラムから求められる相対移動量に直線や円弧等の補間処理を行なう。補間処理部４は、補間処理を行った相対移動量を、出力データとして、軸データ出力部９に送る。
【００２１】  軸データ出力部９は、各軸の主軸アンプ４３およびサーボアンプ４４に、補間処理された相対移動量を入力する。主軸アンプ４３は、補間処理された相対移動量に応じた駆動電力を、主軸モータ４５に出力することによって、主軸モータ４５に加工を行なわせる。サーボアンプ４４は、補間処理された相対移動量に応じた駆動電力を、サーボモータ４６に出力することによって、サーボモータ４６に加工を行なわせる。
【００２２】  機械制御信号処理部６は、プログラム解析部３Ａがメモリ２に出力した機械周辺装置の制御に関する情報を読み取る。機械制御信号処理部６は、読み取った情報をＰＬＣ（Programmable  Logic  Controller）７に出力してラダー回路に制御情報を与える。また、機械制御信号処理部６は、図示しない外部入出力信号Ｉ/Ｆから送られてくる各種オン/オフ等の制御信号を、機械側に出力する。また、機械制御信号処理部６は、ＰＬＣ７を経由して機械側から入力される外部信号を、メモリ２内の共有エリア２８に書き込む。これにより、機械制御信号処理部６は、制御用の信号や外部信号を、ＮＣ装置１Ａの制御に作用させる。この結果、機械への制御が正しく進行することとなる。
【００２３】  つぎに、本実施の形態のＮＣ装置１Ａで用いる排他制御変数について説明する。図２は、実施の形態１のＮＣ装置１Ａで用いる排他制御変数を説明するための図である。排他制御変数１１は、セット値を記憶するセット値記憶領域１２と、系統ｂｉｔ記憶領域１３と、を含んで構成されている。
【００２４】  セット値記憶領域１２は、各系統への共通指令にセットする値を記憶する領域である。各系統への共通指令は、各系統に共通で１つの値（系統間で１つの値）が保存可能な指令である。図２では、排他制御変数１１において、共通指令である排他制御変数＃３１０１に「１」の値がセットされている場合を示している。
【００２５】  系統ｂｉｔ記憶領域１３は、系統毎のｂｉｔ（系統ｂｉｔ）を記憶する領域である。系統ｂｉｔは、排他制御変数１１に値をセットしてよい系統であるか否かを示している。系統ｂｉｔは、「０」である場合に、排他制御変数１１に値をセットできない系統であることを示し、「１」である場合に、排他制御変数１１に値をセットできる系統であることを示す。図２では、１系統目の系統ｂｉｔに「１」が設定され、他の系統の系統ｂｉｔには、「０」が設定されている状態を示している。なお、排他制御変数１１では、排他制御変数１１の種類毎に各系統の系統ｂｉｔが設定されている。
【００２６】  図３は、排他制御変数に値をセットする処理の処理手順を示すフローチャートである。何れかの系統で排他制御変数１１に値（処理開始を示す値）をセットしようとした場合、排他制御解析部３３は、排他制御変数１１に格納されている系統ｂｉｔが全て「０」であるか、または排他制御変数１１を実行（開始）した系統ｂｉｔが「１」となっているかを確認する（ステップＳ１）。
【００２７】  排他制御変数１１に格納されている系統ｂｉｔが全て「０」である場合、または排他制御変数１１を実行（開始）した系統ｂｉｔが「１」となっている場合（ステップＳ１、Ｙｅｓ）、排他制御解析部３３は、排他制御変数１１のセット値記憶領域１２に値をセットし、指令を行った系統ｂｉｔを「１」にする（ステップＳ２）。
【００２８】  例えば、１系統目で排他制御変数に値をセットした際に、系統ｂｉｔが全て「０」または１系統目の系統ｂｉｔが「１」の場合、排他制御解析部３３は、セット値記憶領域１２に値をセットする。また、排他制御解析部３３は、１系統目の系統ｂｉｔが「０」であれば、系統ｂｉｔに「１」を立てる。なお、１系統目を実行した際に、１系統目の系統ｂｉｔが既に「１」となっていても、系統ｂｉｔに「１」を立てる動作は行われる。
【００２９】  一方、排他制御変数１１に値をセットしようとした際に、排他制御変数１１を実行した系統以外の系統ｂｉｔが「１」となっている場合（ステップＳ１、Ｎｏ）、排他制御解析部３３は、セット値記憶領域１２に値をセットせず、さらに系統ｂｉｔを「０」のままにする。例えば、２系統目の実行が開始された際に、１系統目の系統ｂｉｔが「１」であれば、排他制御解析部３３は、セット値記憶領域１２に値をセットせず、２系統目の系統ｂｉｔを「０」のままとする。
【００３０】  このように、排他制御解析部３３は、何れかの系統の排他制御変数１１に値がセットされると、他の系統からは排他制御変数１１に対して値をセットさせなくする。このように、ＮＣ装置１Ａでは、他の系統から排他制御変数１１に値をセット可能にするためには、値をセットした系統で排他制御変数１１に「０」をセットしなければならない。
【００３１】  図４は、排他制御変数に「０」をセットする処理の処理手順を示すフローチャートである。排他制御解析部３３は、何れかの系統で排他制御変数１１を実行して値をセットした後に、排他制御変数１１の値を「０」にしたい場合、排他制御変数１１の値に「０」をセットしたい系統の系統ｂｉｔが、「１」となっているか否かを確認する（ステップＳ３）。
【００３２】  排他制御変数１１の値に「０」をセットしたい系統の系統ｂｉｔが、「１」となっている場合（ステップＳ３、Ｙｅｓ）、排他制御解析部３３は、排他制御変数１１に「０」をセットし、排他制御変数１１を行った系統の系統ｂｉｔを「０」にする（ステップＳ４）。
【００３３】  一方、排他制御変数１１の値に「０」をセットしたい系統の系統ｂｉｔが、「１」となっていなければ（ステップＳ３、Ｎｏ）、排他制御解析部３３は、排他制御変数１１および排他制御変数１１を行った系統ｂｉｔを変化させない。このため、排他制御変数１１には、「１」がセットされたままとなり、排他制御変数１１を行った系統ｂｉｔは「１」のままである。
【００３４】  このように、何れかの系統で排他制御変数１１が実行されて値がセットされた後に、その排他制御変数１１の値を「０」にする場合、排他制御変数１１の系統ｂｉｔが「１」となっている系統のみ排他制御変数１１にセットした値を「０」にすることが許可される。換言すると、排他制御変数１１を実行した系統のみが、ステップＳ４の処理として、排他制御変数１１にセットされている値を「０」にし、指令した系統ｂｉｔを「０」にすることができる。
【００３５】  図５は、排他制御変数を参照する処理の処理手順を示すフローチャートである。排他制御解析部３３は、何れかの系統に排他制御変数１１を実行して値をセットした後に、その排他制御変数１１の値（セット値）を参照する場合、排他制御変数１１の値を参照したい系統の系統ｂｉｔが「１」であるか否かを確認する（ステップＳ１１）。
【００３６】  排他制御変数１１の値を参照したい系統の系統ｂｉｔが「１」である場合（ステップＳ１１、Ｙｅｓ）、排他制御解析部３３は、排他制御変数１１にセットされている値を、参照値として返す（ステップＳ１２）。一方、排他制御変数１１の値を参照したい系統の系統ｂｉｔが「１」でなければ（ステップＳ１１、Ｎｏ）、排他制御解析部３３は、参照値として「０」を返す（ステップＳ１３）。
【００３７】  このように、何れかの系統で排他制御変数１１が実行されて値がセットされた後に、その排他制御変数１１の値を参照する場合、排他制御解析部３３は、系統ｂｉｔが「１」となっている系統にのみ排他制御変数１１にセットされた値（有効）を返し、系統ｂｉｔが「０」となっている系統には「０」（無効）を返す。
【００３８】  別言すれば、排他制御解析部３３は、何れかの系統（第１の系統）の加工プログラム内で排他制御変数１１が実行されると、この系統以外の他系統（第２の系統）の加工プログラムで排他制御変数１１を参照しても排他制御変数を無効とし、かつ第１の系統の加工プログラム内で排他制御変数１１を参照した場合に排他制御変数１１を有効としてセット値を返す。
【００３９】  このように、何れの系統の加工プログラム内でも排他制御変数を実行していない場合に、第１の系統の加工プログラム内で排他制御変数を実行すると、第１の系統にのみ排他制御変数の実行を許可する。そして、第１の系統以外の他系統の加工プログラム内で排他制御変数を実行しようとしても排他制御変数の実行を許可しない。
【００４０】  上述したように、ＮＣ装置１Ａは、排他制御変数１１に系統毎のｂｉｔを設定しておき、系統毎のｂｉｔに基づいて、１つの系統にのみ排他制御変数１１の値をセットさせるので、系統毎の排他的な指令が可能となる。
【００４１】  図６は、第１の実施の形態に係るＮＣ装置で用いられる加工プログラムの一例を示す図である。図７は、図６に示した加工プログラムを実行した場合の系統毎の動作処理手順を示すフローチャートである。図８は、図６に示した加工プログラムを実行した場合の系統ｂｉｔのタイミングチャートである。
【００４２】  加工プログラム５１は、１系統目を制御するための加工プログラムであり、加工プログラム５２は、２系統目を制御するための加工プログラムである。加工プログラム５１，５２では、排他制御変数＃３１００を用いる。また、加工プログラム５１，５２では、排他制御変数＃４００００への同時アクセスおよび使用前の上書きをさせないように、各系統を制御する。換言すると、排他制御変数１１として、排他制御変数＃３１００が用いられる。本実施の形態では、排他制御解析部３３が加工プログラム５１，５２の処理を実行する。
【００４３】  加工プログラム５１，５２を同時に実行すると、１系統目による処理Ｐ１と２系統目による処理Ｐ２とが同時に実行される。この時の動作では、図７に示すように、１系統目によって排他制御変数＃３１００に「１」がセットされる。この動作の前は、排他制御変数＃３１００の系統ｂｉｔの状態は全て「０」なので、排他制御解析部３３は、排他制御変数＃３１００の１系統目の系統ｂｉｔに「１」をセットする。
【００４４】  一方、排他制御解析部３３は、２系統目によって排他制御変数＃３１００に「１」をセットしようとしても、セットさせない。なぜなら、処理Ｐ１で１系統目から排他制御変数＃３１００へ「１」をセットし、１系統目の系統ｂｉｔが「１」（有効）となっているからである。このため、２系統目では＃３１００に値をセットすることはできず、２系統目における排他制御変数＃３１００は「０」となる（ステップＳ４１）。
【００４５】  これにより、ステップＳ４１の段階で、排他制御変数＃３１００の１系統目の系統ｂｉｔが「０」から「１」になり、排他制御変数＃３１００の２系統目の系統ｂｉｔは「０」のままである。
【００４６】  この後、１系統目の加工プログラム５１では、処理Ｐ２が実行され、２系統目の加工プログラム５２では、処理Ｐ１２が実行される。具体的には、１系統目の加工プログラム５１では、排他制御変数＃３１００が参照されて、「１」の値が返ってくる。一方、２系統目の加工プログラム５２では、排他制御変数＃３１００が参照されて、「０」の値が返ってくる。換言すると、１系統目以外の加工プログラムで排他制御変数＃３１００を参照すると「０」の値が返ってくる。
【００４７】  このため、１系統目では、＃３１００＝０が成立しないので、次の処理である処理Ｐ３に進む。一方、２系統目では、＃３１００＝０が成立するので、処理Ｐ１０に戻る（ステップＳ４２）。
【００４８】  そして、１系統目の加工プログラム５１では、処理Ｐ３として、排他制御変数＃４００００にデータ（１００などの値）がセットされる。一方、２系統目の加工プログラム５２では、排他制御変数＃３１００の１系統目の系統ｂｉｔが「１」であるので、２系統目は値をセットすることができず、処理Ｐ１０〜Ｐ１２を繰り返している状態である（ステップＳ４３）。
【００４９】  さらに、１系統目の加工プログラム５１では、セットした１系統目で使用したい＃４００００の値を用いて、１系統目で独自の動作が行なわれる（処理Ｐ４）。一方、２系統目の加工プログラム５２では、処理Ｐ１０〜Ｐ１２を繰り返している状態である（ステップＳ４４）。
【００５０】  すなわち、図８に示したようにステップＳ４１〜Ｓ４４の間は、排他制御変数＃３１００の１系統目の系統ｂｉｔが「１」であり、排他制御変数＃３１００の２系統目の系統ｂｉｔは「０」である。
【００５１】  この後、１系統目の加工プログラム５１では、処理Ｐ５として、「１」がセットされている排他制御変数＃３１００に「０」がセットされ、これにより、１系統目独自の動作が完了する（ステップＳ４５）。そして、ステップＳ４５の段階で、排他制御変数＃３１００の１系統目の系統ｂｉｔが「１」から「０」になる。
【００５２】  これにより、２系統目の加工プログラム５２では、排他制御変数＃３１００に「１」がセット可能となる（ステップＳ４５）。２系統目の加工プログラム５２では、処理Ｐ１１として、排他制御変数＃３１００に「１」がセットされる。そして、ステップＳ４５の段階で、排他制御変数＃３１００の２系統目の系統ｂｉｔが「０」から「１」になる。
【００５３】  この後、２系統目の加工プログラム５２では、処理Ｐ１２が実行される。具体的には、２系統目の加工プログラム５２では、排他制御変数＃３１００が参照されて、「１」の値が返ってくる。このため、２系統目では、＃３１００＝０が成立しないので、次の処理である処理Ｐ１３に進む（ステップＳ４６）。
【００５４】  そして、２系統目の加工プログラム５２では、処理Ｐ１３として、排他制御変数＃４００００にデータ（２００などの値）がセットされる（ステップＳ４７）。さらに、２系統目の加工プログラム５２では、セットした２系統目で使用したい＃４００００の値を用いて、２系統目で独自の動作が行なわれる（処理Ｐ１４）（ステップＳ４８）。
【００５５】  すなわち、図８に示したようにステップＳ４５〜Ｓ４８の間は、排他制御変数＃３１００の１系統目の系統ｂｉｔが「０」であり、排他制御変数＃３１００の２系統目の系統ｂｉｔは「１」である。
【００５６】  この後、２系統目の加工プログラム５２では、処理Ｐ１５として、「１」がセットされている排他制御変数＃３１００に「０」がセットされ、これにより、２系統目独自の動作が完了する（ステップＳ４９）。そして、ステップＳ４９の段階で、排他制御変数＃３１００の２系統目の系統ｂｉｔが「１」から「０」になり、これにより全ての系統ｂｉｔが「０」になる。この後、排他制御変数＃３１００へは、何れの系統からでも指令可能となる。
【００５７】  このように、ＮＣ装置１Ａでは、排他制御変数＃３１００を用いることにより、排他制御変数を先に実行した系統でしか値の参照や、変更、クリアができない。このため、系統間の動作のタイミングによって、例えば１系統目が実行中に２系統目が実行されたりするようなことがなくなる。したがって、共通データである排他制御変数＃４００００を使用している間に、＃４００００に同時にアクセスされたり、予期しないタイミングで上書きされたりすることを防止できる。したがって、各系統が所望の動作にならなくなることを容易に防止できる。これにより、系統独自の意図した動作を加工プログラムで実行することが可能となる。
【００５８】  このように、実施の形態１によれば、共通データへのアクセス許可を示す系統ｂｉｔを系統毎に設定しておき、何れかの系統にアクセス許可を与えた場合には、他の系統にアクセス許可を与えないので、共通データへの同時アクセスおよび使用前の上書きを防止することが可能となる。これにより、複数の系統の加工プログラムを同時に実行する際に、系統間で同じ指令を用いて系統間で共通の１つの値を保存する場合であっても、系統毎に所望の動作を実行することが可能になる。
【００５９】実施の形態２．  つぎに、図９〜図１３を用いてこの発明の実施の形態２について説明する。実施の形態２では、共通データにアクセスを望んでいる系統に対し、アクセスが許可されるまで加工プログラムを停止させる。
【００６０】  図９は、実施の形態２に係るＮＣ装置の構成を示すブロック図である。図９の各構成要素のうち図１に示す実施の形態１のＮＣ装置１Ａと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００６１】  ＮＣ装置１Ｂは、ＮＣ装置１Ａと比較して、プログラム解析部３Ａの代わりにプログラム解析部３Ｂを備えている。プログラム解析部３Ｂは、排他制御解析部３３の代わりにプログラム停止制御部３４を有している。
【００６２】  プログラム停止制御部３４は、何れかの系統に共通データへのアクセス許可を与えた状態では、他の系統に対して共通データへのアクセスを禁止する。具体的には、プログラム停止制御部３４は、他の系統に対して共通データへのアクセスを禁止した状態では、他の系統にアクセスが許可されるまで、アクセスを望んでいる他の系統のプログラムを停止させる。共通データへのアクセスを許可された系統が、共通データへのアクセスを完了した後、プログラム停止制御部３４は、アクセスを望んでいる他の系統の何れか１つに対して加工プログラムの停止を解除（再開）させる。
【００６３】  図１０は、排他制御変数に値をセットする処理の処理手順を示すフローチャートである。図１０に示す処理のうち、図３に示す実施の形態１のデータセット処理と同様の処理については、その説明を省略する。
【００６４】  何れかの系統で排他制御変数１１に値をセットしようとした場合、プログラム停止制御部３４は、排他制御変数１１に格納されている系統ｂｉｔが全て「０」であるか、または排他制御変数１１の実行を開始した系統ｂｉｔが「１」となっているかを確認する（ステップＳ２１）。
【００６５】  排他制御変数１１に格納されている系統ｂｉｔが全て「０」である場合、または排他制御変数１１の実行を開始した系統ｂｉｔが「１」となっている場合（ステップＳ２１、Ｙｅｓ）、プログラム停止制御部３４は、排他制御変数１１に値をセットし、指令を行った系統ｂｉｔを「１」にする（ステップＳ２２）。
【００６６】  一方、排他制御変数１１に値をセットしようとした際に、排他制御変数１１の実行を開始した系統以外の系統ｂｉｔが「１」となっている場合（ステップＳ２１、Ｎｏ）、プログラム停止制御部３４は、排他制御変数１１に格納されている系統ｂｉｔが全て「０」であるか否かを確認する（ステップＳ２３）。
【００６７】  排他制御変数１１に格納されている系統ｂｉｔが全て「０」となっていなければ（ステップＳ２３、Ｎｏ）、プログラム停止制御部３４は、排他制御変数１１に値をセットしようとしている系統の次の命令を実行せず加工プログラムを停止させる。換言すると、排他制御変数を実行した際に、既に他の系統の系統ｂｉｔに「１」が設定されていた場合、排他制御変数１１に値をセットしようとしている系統は、加工プログラムが停止させられる。
【００６８】  排他制御変数１１に格納されている系統ｂｉｔが全て「０」となれば（ステップＳ２３、Ｙｅｓ）、プログラム停止制御部３４は、加工プログラムを停止させていた系統に次の処理を実行させる。換言すると、プログラム停止制御部３４は、停止させていた加工プログラムを再開する。
【００６９】  このように、何れかの系統の排他制御変数１１に値がセットされると、他の系統からは排他制御変数１１に対して値をセットすることができなくなる。他の系統から排他制御変数１１に値をセット可能にするためには、値をセットした系統で排他制御変数１１に「０」をセットしなければならない。排他制御変数をクリアする際のフローは、実施の形態１と同様に図４である。
【００７０】  図１１は、第２の実施の形態に係るＮＣ装置で用いられる加工プログラムの一例を示す図である。図１２は、図１１に示した加工プログラムを実行した場合の系統毎の動作処理手順を示すフローチャートである。図１３は、図１１に示した加工プログラムを実行した場合の系統ｂｉｔのタイミングチャートである。
【００７１】  加工プログラム６１は、１系統目を制御するための加工プログラムであり、加工プログラム６２は、２系統目を制御するための加工プログラムである。加工プログラム６１，６２では、排他制御変数＃３１００を用いる。また、加工プログラム６１，６２では、排他制御変数＃４００００への同時アクセスおよび使用前の上書きをさせないように、各系統を制御する。本実施の形態では、プログラム停止制御部３４が加工プログラム６１，６２の処理を実行する。
【００７２】  加工プログラム６１，６２を同時に実行すると、１系統目による処理Ｐ２１と２系統目による処理Ｐ３１とが同時に実行される。この時の動作では、図１３に示すように、１系統目によって排他制御変数＃３１００に「１」がセットされる。この動作の前は、排他制御変数＃３１００の系統ｂｉｔの状態は全て「０」なので、プログラム停止制御部３４は、排他制御変数＃３１００の１系統目の系統ｂｉｔに「１」をセットする。
【００７３】  一方、プログラム停止制御部３４は、２系統目によって排他制御変数＃３１００に「１」をセットしようとしても、セットさせない。なぜなら、処理Ｐ１で１系統目から排他制御変数＃３１００へ「１」をセットし、１系統目の系統ｂｉｔが「１」となっているからである。このため、２系統目では＃３１００に値をセットすることはできない。このとき、プログラム停止制御部３４は、２系統目の加工プログラム６２を停止させる（ステップＳ５１）。
【００７４】  これにより、ステップＳ５１の段階で、排他制御変数＃３１００の１系統目の系統ｂｉｔが「０」から「１」になり、排他制御変数＃３１００の２系統目の系統ｂｉｔは「０」のままである。
【００７５】  そして、１系統目の加工プログラム６１では、処理Ｐ２２として、排他制御変数＃４００００にデータ（１００などの値）がセットされる。一方、２系統目の加工プログラム６２では、排他制御変数＃３１００の１系統目の系統ｂｉｔが「１」であるので、２系統目は値をセットすることができず、加工プログラム６２が停止されたままである。２系統目では、１系統目で排他制御変数＃３１００の系統ｂｉｔが「０」とならない限り、加工プログラム６２を停止した状態が維持される（ステップＳ５２）。
【００７６】  さらに、１系統目の加工プログラム６１では、セットした１系統目で使用したい＃４００００の値を用いて、１系統目で独自の動作が行なわれる（処理Ｐ２３）。一方、２系統目の加工プログラム６２では、加工プログラム６２が停止されたままである（ステップＳ５３）。
【００７７】  すなわち、図１３に示したようにステップＳ５１〜Ｓ５３の間は、排他制御変数＃３１００の１系統目の系統ｂｉｔが「１」であり、排他制御変数＃３１００の２系統目の系統ｂｉｔは「０」である。
【００７８】  この後、１系統目の加工プログラム６１では、処理Ｐ２４として、「１」がセットされた排他制御変数＃３１００に「０」がセットされ、これにより、１系統目独自の動作が完了する（ステップＳ５４）。そして、ステップＳ５４の段階で、排他制御変数＃３１００の１系統目の系統ｂｉｔが「１」から「０」になる。
【００７９】  これにより、２系統目の加工プログラム６２では、排他制御変数＃３１００に「１」がセット可能となる。２系統目の加工プログラム６２では、処理Ｐ３１として、排他制御変数＃３１００に「１」がセットされる（ステップＳ５４）。そして、ステップＳ５４の段階で、排他制御変数＃３１００の２系統目の系統ｂｉｔが「０」から「１」になる。
【００８０】  そして、２系統目の加工プログラム６２では、処理Ｐ３２として、排他制御変数＃４００００にデータ（２００などの値）がセットされる（ステップＳ５５）。さらに、２系統目の加工プログラム６２では、セットした２系統目で使用したい＃４００００の値を用いて、２系統目で独自の動作が行なわれる（処理Ｐ３３）（ステップＳ５６）。
【００８１】  すなわち、図１３に示したようにステップＳ５４〜Ｓ５７の間は、排他制御変数＃３１００の１系統目の系統ｂｉｔが「０」であり、排他制御変数＃３１００の２系統目の系統ｂｉｔは「１」である。
【００８２】  この後、２系統目の加工プログラム６２では、処理Ｐ３４として、「１」がセットされた排他制御変数＃３１００に「０」がセットされ、これにより、２系統目独自の動作が完了する（ステップＳ５７）。そして、ステップＳ５７の段階で、排他制御変数＃３１００の２系統目の系統ｂｉｔが「１」から「０」になり、これにより全ての系統ｂｉｔが「０」になる。この後、排他制御変数＃３１００へは、何れの系統からでも指令可能となる。
【００８３】  このように、ＮＣ装置１Ｂでは、排他制御変数に対してある系統で系統ｂｉｔに「１」がセットされていると、他の系統で排他制御変数にデータをセットしようとした場合に、データセット可能となるまで加工プログラムを停止させておく。そして、加工プログラムを停止させておくので、加工プログラム６１，６２のように、排他制御変数に対してデータセット可能になるまで何もしない動作を繰り返す加工プログラムを作成する必要がない。したがって、系統毎に排他的な動作を実行する加工プログラムのプログラミングが容易になる。
【００８４】  このように、実施の形態２によれば、共通データへのアクセス許可を示す系統ｂｉｔを系統毎に設定しておき、何れかの系統にアクセス許可を与えた場合には、アクセスを望んでいる他の系統の加工プログラムを停止させる。これにより、共通データへの同時アクセスおよび使用前の上書きを防止することが可能となる。したがって、簡易な加工プログラムで系統毎に所望の動作を実行することが可能になる。
【００８５】実施の形態３．  つぎに、図１４および図１５を用いてこの発明の実施の形態３について説明する。実施の形態３では、排他制御変数にしたい変数を、例えば、＃３１００、＃３１０１のように設定しておき、設定された変数を排他制御変数として扱うとともに、設定されていない変数を通常の制御変数として扱う。
【００８６】  図１４は、実施の形態３に係るＮＣ装置の構成を示すブロック図である。図１４の各構成要素のうち図１に示す実施の形態１のＮＣ装置１Ａと同一機能を達成する構成要素については同一番号を付しており、重複する説明は省略する。
【００８７】  ＮＣ装置１Ｃは、ＮＣ装置１Ａと比較して、プログラム解析部３Ａの代わりにプログラム解析部３Ｃを備えている。プログラム解析部３Ｃは、排他制御解析部３３の代わりに排他制御変数特定部３５を有している。
【００８８】  また、本実施の形態では、パラメータ記憶部２６に排他制御変数に指定する制御指令の変数（排他制御指定パラメータ２９）を設定しておく。排他制御変数に指定される制御変数は、例えば、実施の形態１，２で説明した排他制御変数である。パラメータ記憶部２６において排他制御変数に指定されなかった制御変数は、通常の制御変数として扱われる。
【００８９】  排他制御変数特定部３５は、パラメータ記憶部２６に設定されている排他制御指定パラメータ２９に基づいて、実行する制御変数が、排他制御変数であるか、通常の制御変数であるかの切替えを行う。
【００９０】  排他制御変数特定部３５は、排他制御指定パラメータ２９で指定されている排他制御変数に対しては、排他制御解析部３３またはプログラム停止制御部３４と同様の処理によって、加工プログラムを実行する。
【００９１】  図１５は、排他制御指定パラメータの指定処理を説明するための図である。ＮＣ装置１Ｃは、「排他制御変数１」、「排他制御変数２」などのパラメータ項目を表示部４２に表示する。オペレータは、排他制御変数に指定したい変数（排他制御指定パラメータ２９）をパラメータ項目に、＃３１００、＃３１０１のように設定する。オペレータは、入力操作部４１を用いて、排他制御変数に指定したい変数を設定する。このとき、オペレータからの外部入力によって指定された排他制御指定パラメータ２９は、パラメータ記憶部２６によって記憶される。これにより、パラメータ記憶部２６の排他制御指定パラメータ２９に設定された変数は、排他制御変数として用いられることとなる。
【００９２】  図１６は、排他制御変数特定部３５の構成を示す図である。排他制御変数特定部３５に制御変数が入力されると、排他制御変数特定部３５は、排他制御指定パラメータ２９に基づいて、排他制御と通常制御の替えを行う。
【００９３】  具体的には、排他制御変数特定部３５は、入力された制御変数が、排他制御指定パラメータ２９として指定されている制御変数であれば、排他制御変数を用いた排他制御に切替える。一方、排他制御変数特定部３５は、入力された制御変数が、排他制御指定パラメータ２９として指定されていない制御変数であれば、通常の制御変数を用いた通常制御に切替える。
【００９４】  このように、制御の切替えを可能とすることにより、現在、排他制御変数として作られているプログラムに対しても、新しく排他制御変数の変数に加工プログラムを書き換えることなく、排他制御指定パラメータ２９を切替えることで加工プログラムを使用することが可能となる。したがって、現在、通常の制御変数として作られている加工プログラムに対しても、容易に実施の形態１，２で説明した排他制御変数を実行することが可能となる。
【００９５】  このように、実施の形態３によれば、排他制御変数にしたい変数を、排他制御指定パラメータ２９として設定しているので、設定された変数を排他制御変数として扱うとともに、設定されていない変数を通常の制御変数として扱うことができる。したがって、現在、排他制御変数として作られている加工プログラムに対しても、排他制御指定パラメータ２９を切替えることで、容易に実施の形態１，２で説明した排他制御変数を実行することが可能となる。
【００９６】  ここで、従来の加工プログラムを用いて排他制御を行った場合の動作について説明する。図１７は、従来の加工プログラムの一例を示す図である。ここでは、排他制御を行うための２系統の加工プログラム７１，７２を示している。加工プログラム７１は、１系統目の加工プログラムであり、加工プログラム７２は、２系統目の加工プログラムである。
【００９７】  これらの加工プログラム７１，７２では、系統共通の変数である＃１７０９を用いて、処理Ｐ４３〜処理Ｐ４８の箇所と、処理Ｐ５３〜処理Ｐ５８の箇所と、で系統共通の変数＃４００００に異なる値をセットする。これにより、系統毎に独自の＃４００００の値が使用されて、系統毎の動作が行なわれる。
【００９８】  加工プログラム７１，７２において、先に１系統目が処理Ｐ４１を実行した場合、＃１７０９の値が「０」であれば、条件が成立するので処理Ｐ４３が実行される。これにより、＃１７０９の値が「１」となる。処理Ｐ４３が実行された後に、２系統目にて処理Ｐ５１が実行されると、処理Ｐ５１では条件が不成立となる。
【００９９】  １系統目で＃１７０９が「０」となるまで処理Ｐ５１の条件が成立せず、２系統目では処理Ｐ５１〜処理Ｐ５３が繰り返される。２系統目が処理Ｐ５１〜処理Ｐ５３を繰り返している間に、１系統目では処理Ｐ４５にて＃４００００に１系統目で使用したい値である「１６」がセットされ、これにより、１系統目独自の動作が行なわれる。そして、１系統目の処理Ｐ４８にて＃１７０９が「０」になると、２系統目の処理Ｐ５１の条件が成立し、処理Ｐ５５にて今度は＃４００００に２系統目で使用したい値である「３０」がセットされる。これにより、２系統目独自の動作が行なわれる。このようにして、系統毎の独自の動作を行っている。
【０１００】  しかしながら、加工プログラム７１，７２では、処理４３と処理５３の何れかの行を実行する前に、処理Ｐ４１と処理Ｐ５１との両方の行が実行される場合がある。この場合、＃１７０９が「０」なので、処理Ｐ４１と処理Ｐ５１との両方の条件が成立してしまい、この結果、処理Ｐ４３と処理Ｐ５３との両方が実行されてしまう。
【０１０１】  ここで、処理Ｐ４３および処理Ｐ５３にて、＃１７０９を「１」としても処理Ｐ４１および処理Ｐ５１はともに既に実行されているので、両方の系統で処理Ｐ４３および処理Ｐ５３以降が排他的に実行されなくなる。このような場合、処理Ｐ４５および処理Ｐ５５において１系統目と２系統目とで＃４００００は異なる値を使用したいにもかかわらず、後に実行された方の値が使用されることとなってしまう。この結果、系統毎に所望の動作を実行することできなくなる。
【０１０２】  一方、実施の形態１〜３では、何れかの系統にアクセス許可を与えた場合には、他の系統にアクセス許可を与えないので、共通データへの同時アクセスおよび使用前の上書きを防止することが可能となる。したがって、実施の形態１〜３では、系統毎に所望の動作を実行することが可能になる。
【産業上の利用可能性】
【０１０３】  以上のように、本発明に係る数値制御装置は、系統毎の排他制御に適している。
【符号の説明】
【０１０４】  １Ａ〜１Ｃ  ＮＣ装置、２  メモリ、３Ａ〜３Ｃ  プログラム解析部、６  機械制御信号処理部、９  軸データ出力部、１１  排他制御変数、１２  セット値記憶領域、１３  系統ｂｉｔ記憶領域、２５  加工プログラム記憶部、２６  パラメータ記憶部、２９  排他制御指定パラメータ、３３  排他制御解析部、３４  プログラム停止制御部、３５  排他制御変数特定部、５１，５２，６１，６２，７１，７２  加工プログラム。
【要約】  数値制御装置において、系統毎の加工プログラムを記憶するプログラム記憶部（２５）と、系統毎の加工プログラムを解析することによって、系統毎に独立して加工プログラムを実行するプログラム解析部（３Ａ）と、を備え、プログラム解析部（３Ａ）は、何れの系統の加工プログラム内でも制御変数を実行していない場合に、何れかの系統の加工プログラム内で制御変数を実行すると、実行した系統にのみ制御変数の実行を許可するとともに、実行した系統以外の他系統の加工プログラム内で制御変数を実行しようとしても制御変数の実行を許可せず、実行中の加工プログラム内で制御変数が完了すると、何れかの系統の加工プログラムに制御変数を許可する。【図１】
0005456208.tif 000002
【図２】
0005456208.tif 000003
【図３】
0005456208.tif 000004
【図４】
0005456208.tif 000005
【図５】
0005456208.tif 000006
【図６】
0005456208.tif 000007
【図７】
0005456208.tif 000008
【図８】
0005456208.tif 000009
【図９】
0005456208.tif 000010
【図１０】
0005456208.tif 000011
【図１１】
0005456208.tif 000012
【図１２】
0005456208.tif 000013
【図１３】
0005456208.tif 000014
【図１４】
0005456208.tif 000015
【図１５】
0005456208.tif 000016
【図１６】
0005456208.tif 000017
【図１７】
0005456208.tif 000018