(57)【要約】【課題】軸移動がマクロプログラムの実行に影響を受けることをなくすとともに、マクロプログラム実行による数値演算処理が加工時間を増大させないようにする。【解決手段】マクロプログラムの解析・実行をバックグラウンド処理の中で行うタスクの一つとして登録し、加工プログラムの実行による各軸の軸移動を行うための割り込み処理と並行して、前記マクロプログラムの解析・実行を前記バックグラウンド処理の中で行う。【選択図】図１
2012048471.tif 000002
【特許請求の範囲】
【請求項１】
工作機械の各軸の移動を加工プログラムの実行により制御する数値制御装置におけるマクロプログラムの実行方法であって、
前記マクロプログラムの解析・実行をバックグラウンド処理の中で行うタスクの一つとして登録し、
前記加工プログラムの実行による各軸の軸移動を行うための割り込み処理と並行して、前記マクロプログラムの解析・実行を前記バックグラウンド処理の中で行うことを特徴とする数値制御装置におけるマクロプログラムの実行方法。
【請求項２】
前記マクロプログラムは、前記工作機械の軸移動を伴わない数値計算のマクロ演算のみを行うマクロプログラムであることを特徴とする請求項１に記載の数値制御装置におけるマクロプログラムの実行方法。
【請求項３】
前記加工プログラムの中に組み入れたマクロ指令の実行により前記マクロプログラムをバックグラウンド処理のタスクとして登録することを特徴とする請求項１に記載の数値制御装置におけるマクロプログラムの実行方法。
【請求項４】
プログラマブルロジックコントローラから前記数値制御装置に送られるマクロ起動信号によって、前記マクロプログラムをバックグラウンド処理のタスクとして登録することを特徴とする請求項１に記載の数値制御装置におけるマクロプログラムの実行方法。
【請求項５】
前記マクロプログラムの解析・実行処理の完了を確認してから、該マクロプログラムによる数値計算の結果を利用する加工プログラムのブロックを実行することを特徴とする請求項１乃至４のいずれかの項に記載の数値制御装置におけるマクロプログラムの実行方法。
【請求項６】
工作機械の各軸の移動を加工プログラムの実行により制御する数値制御装置において、
前記加工プログラムを解析する解析部と、
前記加工プログラムの解析に基づいて工作機械の各軸の軸移動を割り込み処理して行う実行部と、
数値計算を行うマクロプログラムの解析および実行をするマクロプログラム解析・実行部と、  
前記マクロプログラムの解析・実行をバックグラウンド処理の中で行うタスクの一つとして登録する手段と、
前記バックグラウンド処理として登録されたタスク実行のタスク管理を行う手段と、
を具備したことを特徴とする数値制御装置。
【請求項７】
前記マクロプログラムをバックグラウンド処理のタスクとして登録するマクロ起動信号を前記数値制御装置に送るプログラマブルロジックコントローラを備えたことを特徴とする請求項６に記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置およびマクロプログラム実行方法に係り、特に、バックグラウンド処理を利用して、数値計算処理するマクロプログラムの解析・実行を行うようにした数値制御装置およびマクロプログラム実行方法に関する。
【背景技術】
【０００２】
数値制御装置を制御する加工プログラムでは、メインプログラムの他にマクロプログラムと呼ばれるプログラムが使用されており、このマクロプログラムによってメインプログラムに融通性と汎用性を付加している。マクロプログラムは、ＮＣ工作機械をどのように動かすかについての軸移動に無関係な記述指令を主体にしているプログラムで、軸移動に必要な座標計算や工具長の補正に必要な計算など、様々な数値演算が行われ、その結果をマクロ変数を介してメインプログラムに受け渡している。このようなマクロプログラムは、共通して使われる数値演算処理をあらかじめマクロプログラムとして登録しておくことで、いつでも呼び出して使用することができるので、加工プログラム作成を効率化することができる。  
従来、マクロプログラムは、メインプログラムの中に記述してメインプログラムで実行されるか、メインプログラムの中でサブプログラム呼び出しにより実行されている。マクロプログラムの実行中は、メインプログラムの実行が中断されているため、数値計算にかかる時間が多大であると、その間、工作機械のプログラム運転が待機状態になって全体として加工時間が長くなってしまう。
【０００３】
また、メインプログラムの中断の影響を受けて軸移動の定時処理が円滑に行われなくなり、軸の移動が滑らかに行われずワークに痕跡が残り、加工面精度が低下するという問題があった。
【０００４】
このようなマクロプログラム実行に伴う不都合に対しては、例えば、特許文献１では、加工プログラムを最初に実行する過程で、マクロプログラムを実行したときの演算結果を記憶しておき、再度、加工プログラムを実行するときには、マクロプログラムの記憶した演算結果を用いて数値制御装置内部のＮＣデータを更新することを提案している。
【０００５】
他方、軸移動等に必要な数値計算をマクロプログラムによって実行する替わりに、プログラマブル・ロジック・コントローラ（以下、ＰＬＣという）にて数値計算処理を行うことも従来から行われている。このＰＬＣで数値計算をする場合には、ＰＬＣ専用の言語であるラダーシーケンスを駆使しなければならず、ラダーシーケンスについての高度な専門知識が必要とされる。このため、誰でも比較的容易に作成できるマクロプログラムとは異なって、数値計算処理のシーケンスを作成することは容易ではなかった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００１−１４０１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明は、前記従来技術の有する問題点に鑑みなされたものであり、その目的は、メインプログラムを中断することなくマクロプログラムで軸移動などに必要な数値演算処理をバックグラウンドで実行することにより、軸移動がマクロプログラムの実行に影響を受けることをなくすとともに、マクロプログラムによる数値演算処理が加工時間を増大させないようにし、さらに、ＰＬＣを用いた数値演算処理の省力化と簡素化を実現できるようにした数値制御装置およびマクロプログラム実行方法を提供することにある。
【課題を解決するための手段】
【０００８】
前記の目的を達成するために、本発明は、工作機械の各軸の移動を加工プログラムの実行により制御する数値制御装置におけるマクロプログラムの実行方法であって、前記マクロプログラムの解析・実行をバックグラウンド処理の中で行うタスクの一つとして登録し、  前記加工プログラムの実行による各軸の軸移動を行うための割り込み処理と並行して、前記マクロプログラムの解析・実行を前記バックグラウンド処理の中で行うことを特徴とするものである。
【０００９】
また、本発明は、工作機械の各軸の移動を加工プログラムの実行により制御する数値制御装置において、前記加工プログラムを解析する解析部と、前記加工プログラムの解析に基づいて工作機械の各軸の軸移動を割り込み処理して行う実行部と、数値計算を行うマクロプログラムの解析および実行をするマクロプログラム解析・実行部と、前記マクロプログラムの解析・実行をバックグラウンド処理の中で行うタスクの一つとして登録する手段と、前記バックグラウンド処理として登録されたタスク実行のタスク管理を行う手段と、
を具備したことを特徴とするものである。
【発明の効果】
【００１０】
本発明によれば、軸移動がマクロプログラムの実行に影響を受けることがなく、しかも、マクロプログラムによる数値演算処理は工時間を増大させることがない。さらに、ＰＬＣを用いた数値演算処理の省力化と簡素化を実現することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態による数値制御装置におけるプログラム解析処理のブロック構成図。
【図２】加工プログラムの例を示す図。
【図３】マクロプログラムの例を示す図。
【図４】加工プログラムとマクロプログラムの解析処理の手順を示すフローチャート。
【図５】バックグラウンド処理をするタスクの登録テーブルの例を示す図。
【図６】割り込み処理とバックグラウンド処理の関係を示すタイミングチャート。
【図７】本発明の第２の実施形態による加工プログラムとマクロプログラムの解析処理の手順を示すフローチャート。
【図８】図７のフローチャートで処理する加工プログラムの例を示す図。
【図９】マクロプログラムをバックグラウンドタスクとして登録する際のＰＬＣと数値制御装置との間での信号のやりとりを示すタイミングチャート。
【図１０】マクロプログラムをバックグラウンドタスクとして登録する際のＰＬＣと数値制御装置との間で信号のやりとりをする手順を示すフローチャート。
【発明を実施するための形態】
【００１２】
以下、本発明による数値制御装置およびマクロプログラムの実行方法の一実施形態について、添付の図面を参照しながら説明する。  
第１実施形態  
図１は、本発明の第１実施形態による数値制御装置におけるプログラム解析処理のブロック図である。
【００１３】
図１において、参照番号１０は、加工プログラムを示す。参照番号１２はマクロプログラムを示す。加工プログラム１０、マクロプログラム１２は、プログラム入力部１４を介して記憶装置のプログラム記憶域１６に格納されている。このプログラム記憶域１６には、個別のプログラム内容が実際に格納されている個別プログラム記憶域と、プログラム名称、プログラムサイズや個別プログラム記憶域に格納されている各プログラムの格納アドレス等の管理情報が記憶されているプログラム管理域と、がある。
【００１４】
数値制御装置は、加工プログラム１０を処理するために、加工プログラム解析部１８、実行データ作成部２０、各軸移動量指令部２２を備えている。加工プログラム解析部１８は、加工プログラム１０を１ブロックずつ読み出して、そのブロックのコード内容を解析するとともに、実行データ作成部２０で処理可能なデータを作成し、そのデータを図示しない解析済みバッファに転送する。
【００１５】
実行データ作成部２０は、解析済みバッファから取り出したデータからＣＰＵの基本サンプリング時間あたりの各軸の移動量を計算し、各軸移動量指令部２２に与える。各軸移動量指令部２２は、この各軸移動量から各軸の移動目標位置を更新し、この移動目標位置のデータをサーボ制御部２４に送り、サーボ制御部２４は、各軸のサーボモータＭ1、Ｍ2、…に取り付けた図示しない位置検出器から位置をフィードバックしながらモータサーボモータＭ1、Ｍ2、…に指令を与え、フィードバック位置制御を行うことになる。
【００１６】
次に、マクロプログラム１２の解析処理について説明する。  
本発明で扱うマクロプログラム１２は、加工プログラム１０とは異なって工作機械の主軸やテーブルを動かす各軸の軸移動を指令するのではなく、純然たる数値計算を目的としているプログラムである。マクロプログラム１２の解析処理は、マクロプログラム解析・実行部２６で行われる。マクロプログラム１２で使用される、ローカル変数、ゼネラル変数、ラベル変数、システム変数等の各種マクロ変数は、マクロ変数記憶領域２８に格納されている。マクロプログラム解析・実行部２６は、マクロプログラム１２を１ブロックずつ読み出して解析し、マクロ変数を使って数値演算を実行する。演算結果は、加工プログラム解析部１８に渡されて、加工プログラムの解析・実行で利用される。なお、参照番号３４は、プログラマブルロジックコントローラ（ＰＬＣ）である。図１では、ＰＬＣ３４は数値制御装置の中に含まれる構成になっているが、数値制御装置とは別の装置として構成してもよい。参照番号３０は、ＰＬＣ３４からあるいはそれ以外から書き込まれるシステム変数（ＰＬＣ３４側から見ると信号）の変化を監視するマクロ変数監視部である。また、参照番号３２はオペレーションシステム部で、後述するタスク管理のところで説明する。
【００１７】
次に、図２に加工プログラムのメインプログラムから抜き出したそのごく一部の例を示す。図３にはメインプログラム中から指令して実行させるマクロプログラムの例を示す。
図２に示す加工プログラムを構成する各ブロックのうち、ブロックａは、基本サンプリング時間毎に発生する割り込み処理とは別に、バックグラウンドでマクロプログラムを実行させるためのマクロ指令を含むブロックである。Ｇ１７２というＧコードがバックグラウンドマクロ指令である。「＄ＭＡＣ１」は、図３に示したマクロプログラムの名前である。
【００１８】
ブロックｂ以下は、主軸を移動させてワークを実際に加工するための軸移動の指令を含むブロックである。この軸移動を指令するブロックはブロックｂからブロックｃの直前まで続いている。ブロックｃは、バックグラウンドでのマクロプログラム「＄ＭＡＣ１」の実行が完了したことを確認するためのブロックである。ブロックｄは、図３のマクロプログラム「＄ＭＡＣ１」で数値計算した結果を使って軸移動を指令するブロックである。
【００１９】
マクロプログラム「＄ＭＡＣ１」では、ローカル変数Ｖ１０、Ｖ１１でＶ１を数値計算し、ローカル変数Ｖ２０、Ｖ２１でＶ２を数値演算し、それぞれ得られたＶ１、Ｖ２からそれぞれゼネラル変数Ｖ３１、Ｖ３２を計算するという数値計算を記述している。このマクロプログラムを実行して得られた計算結果は、図２の加工プログラムのブロックｄのゼネラル変数Ｖ３１、Ｖ３２で軸移動の距離を表している。
【００２０】
図４は、図２の加工プログラムと図３のマクロプログラムの解析処理の流れを示すフローチャートである。  
以下、図１乃至図４を参照しながら、加工プログラムとマクロプログラムの解析処理の流れについて説明する。  
図４において、左側のステップＳ１０からステップＳ１７までが加工プログラムを解析する処理を表し、右側のステップＳ１８からステップＳ２０までがバックグラウンドでのマクロプログラムの解析処理を表している。
【００２１】
図１のブロック図において、プログラム記憶域１６に格納されている加工プログラムの中からプログラムが選択されて、図２の加工プログラムが開かれる（ステップＳ１０）。続くステップＳ１１では、加工プログラムの先頭から１ブロックずつ読み出されてそのブロックの解析が実行される。
【００２２】
解析したブロックにバックグラウンドマクロ指令が含まれていない場合（ステップＳ１２のＮｏ）、つまり、ワークを加工するときの軸移動等を指令するコードからブロックが構成されている場合には、ステップＳ１４に進む。このステップＳ１４は、後述するバックグラウンドでのマクロプログラムの実行が終了したかどうかを確認する処理である。今は確認する必要はないので、ステップ１６に進み、実行データ作成部２０で処理できる形式のデータを作成する（ステップＳ１６）。そして、ステップＳ１７のＮｏからステップ１１に戻って、読み出したブロックが軸指令のブロックであれば、以上説明した処理が繰り返されることになる。
【００２３】
以上のようにして、１ブロックずつ加工プログラムの解析を続けていくと、やがて図２の加工プログラムにおいて、ブロックａをステップＳ１１で解析することになる。  
このブロックａでは、バックグラウンドマクロ指令のＧコードが含まれているので、ステップＳ１２で判別された結果（ステップＳ１２のＹｅｓ）、ステップＳ１３に進む。このステップＳ１３では、指定されている「＄ＭＡＣ１」のマクロプログラムを解析するタスクを新規バックグラウンドタスクとしてタスク登録テーブルに次のようにして登録する。
【００２４】
ここで、図５は、バックグラウンドタスクのタスク登録テーブルの一例を示す。タスクＡ〜Ｃは、既に登録されているバックグラウンド・サービスタスクである。例えば、タスクＡには、モニタに情報を表示する処理、タスクＢには、工作機械と数値制御装置との間でやり取りされる各種信号を監視する処理、タスクＣには、アラーム監視処理がというように登録されている。  
タスクＸとして新規に登録されたのが、ステップＳ１３で登録された「＄ＭＡＣ１」のマクロプログラムを解析するバックグラウンド・サービスタスクである。
【００２５】
タスク登録テーブルでは、各タスクについてタスク実行アドレスと、サービス待ち時間が設定されている。タスクＡは実行開始アドレスが１，００００Ｈでサービス待ち時間（サービス周期）が２００ｍｓｅｃ、タスクＢは実行開始アドレスが１，１０００Ｈでサービス待ち時間が３００ｍｓｅｃ、タスクＣは実行開始アドレスが１，２０００Ｈでサービス待ち時間が２００ｍｓｅｃ、タスクＸは実行開始アドレスが２，００００Ｈでサービス待ち時間が１００ｍｓｅｃというように登録されている。
【００２６】
オペレーティングシステム部３２は、タスク登録テーブルに登録されたタスクＡ、Ｂ、Ｃ、Ｘを順番に設定されたサービス待ち時間毎に順番にバックグラウンドで実行させてゆく。
【００２７】
なお、タスクＸのように、マクロプログラムを解析するタスクは、一度限りの実行で済むタスクであるので、タスクの処理が終了すると、タスク登録テーブルから削除されるようになっている。
【００２８】
そこで、タスクＸとして登録されたマクロプログラム解析のバックグラウンドでの処理について説明する。
【００２９】
図４のフローチャートで、右側に示すステップＳ１８からステップＳ２０がマクロプログラムの解析および実行のステップである。ステップＳ１８では、タスク登録テーブルにマクロプログラムを解析するバックグラウンド・サービスタスクが登録されていれば（ステップＳ１８のＹｅｓ）、ステップＳ１９に進んで、この場合であればタスクＸのマクロプログラムの解析・実行をバックグラウンドで処理していく。そして、計算結果がゼネラル変数Ｖ３１、Ｖ３２に格納されてマクロプログラムの解析・実行が終了する（ステップＳ２０）。
【００３０】
この間、数値制御装置での割り込み処理と、バックグラウンドでのマクロプログラムの解析・実行との関係は、次のようになっている。
【００３１】
図６は、割り込み処理とバックグラウンド処理の関係を示すタイミングチャートである。基本サンプリング時間を一周期にして、ＣＰＵに割り込み信号が入ると、割り込み処理、加工プログラムの解析処理、バックグラウンド処理の順で進んでいく。
【００３２】
割り込み処理では、最初に、軸移動に関係するサーボ制御処理、各軸の移動量を分配する分配処理、実行部へのデータ転送処理の順に行われる。サーボ制御処理を最優先にしているのは、割り込み信号が入ったときに必ず軸移動を実行させるようにして、滑らかな軸移動を確保するためである。
【００３３】
図４のフローチャートにおいて、ステップＳ１１〜ステップＳ１７の加工プログラムを解析し実行形式のデータを作成する解析処理は割り込み処理の次の優先順位で行われる。そして、ステップＳ１８〜ステップＳ２０のマクロプログラムの解析・実行処理は、バックグラウンド処理として、加工プログラムの解析・実行処理とあたかも並行しているかのようにして行われる。このことは、言い換えれば、マクロプログラムの解析・実行の終了を待たずに、加工プログラムを解析しながら軸移動が行われていることになる
このようにして、図２に示した加工プログラムの実行がブロックｃまで進行すると、このブロックｃを読み出すと（ステップＳ１１）、このブロックｃにはマクロプログラム「＄ＭＡＣ１」の実行完了を確認するＧ１７３というコードが含まれているため、次のような処理が行われる。
【００３４】
すなわち、ステップＳ１２のＮｏからステップＳ１４に進むと、Ｇ１７３というコードがあるので、ステップＳ１５に進んで、マクロプログラムの実行の完了を確認する。もし、マクロプログラムの実行が完了してなければ、コードＰで指定された時間（５秒間）だけ待つ。コードＰで指定された時間内にマクロプログラムの実行が完了していなければ異常とみなしてマクロプログラムの実行を止めることになる。  
完了していれば、ステップＳ１６、ステップＳ１７を経てステップＳ１１に進み、次のブロックであるブロックｄを読み込み解析を行う。次いで、ステップＳ１２のＮｏ、ステップＳ１４のＮｏを経て、ステップＳ１６で実行形式のデータを作成する。この時点では、バックグラウンドで処理の完了した数値計算の最新結果のゼネラル変数Ｖ３１、Ｖ３２を利用して軸移動の実行データを作成することができる。
【００３５】
以上のように数値計算をするマクロプログラムの解析・実行をバックグラウンドで行っているため、マクロプログラムの実行を加工プログラムの解析・実行と実質的に並行して行うことができる。
【００３６】
上述した例は、短い加工プログラムであるが、実際の加工プログラムには長大なものがあり、その中では数多くのマクロプログラムが利用されている。マクロプログラムの解析・実行の完了を待つ間、加工プログラムが中断される場合には、その停止時間を積み重ねると相当な時間ロスが生じる。しかし、本実施形態のように、加工プログラムによる運転がマクロプログラムの解析・実行に影響を受けない場合には、時間ロスがなくなり、加工時間の短縮を図ることができる。しかも、円滑な軸移動を確保できるので、高い加工精度を確保することができる。
【００３７】
第２実施形態
上述した第１実施形態は、加工プログラムの中からマクロプログラムを呼び出してその解析・実行をバックグラウンドで行うようにした実施形態であるが、この第２実施形態は、ＰＬＣ３４から指令してマクロプログラムのバックグラウンド処理を行うようにした実施の形態である。
【００３８】
以下、図７を参照しながら、加工プログラムとマクロプログラムの解析処理の流れについて説明する。  
図７において、左側のステップＳ３０からステップＳ３５までが加工プログラムを解析する処理を表し、右側のステップＳ５０からステップＳ５２までがバックグラウンドでのマクロプログラムの解析処理を表している。
【００３９】
図１のブロック図において、プログラム記憶域１６に格納されている加工プログラムの中からプログラムを選択して、図８の加工プログラムを開く（ステップＳ３０）。この図８の加工プログラムが図２の加工プログラムの違うのは、図２のブロックａが必要ないことである。続くステップＳ３１では、加工プログラムの先頭から１ブロックずつ読み出してそのブロックの解析を実行する。
【００４０】
この第２実施形態では、ＰＬＣ３４からバックグラウンド指令をするため、図４のフローチャートとの大きな違いは、図４のフローチャートのステップＳ１２とステップＳ１３がないことにある。
【００４１】
ここでは、まず、読み出したブロックがワークを加工するときの軸移動等を指令するコードから構成されている場合について説明する。この場合は、ステップＳ３２のＮｏを経てステップ３４に進み、実行データ作成部２０で処理できる形式のデータを作成する。そして、ステップＳ３５のＮｏからステップ３１に戻って、読み出したブロックが軸指令のブロックであれば、以上の処理が繰り返されることになる。
【００４２】
以上のようにして、加工プログラムを１ブロックずつ解析を続けていくと、その間にＰＬＣ３４からバックグラウンドマクロ登録指令が与えられる場合がある。
【００４３】
この場合は、解析処理とは別のバックグラウンド処理において、ＰＬＣ３４と数値制御装置との間で信号をやりとりして、図３に示した「＄ＭＡＣ１」のマクロプログラムを解析するタスクを、バックグラウンドで処理する新規バックグラウンドタスクとして図５のタスク登録テーブルに登録する処理を行う。
【００４４】
ここで、図９は、ＰＬＣ３４からマクロプログラム名と、バックグラウンドマクロ登録指令を数値制御装置に渡す手順を表すタイミングチャートである。図１０は、図１のブロック図におけるマクロ変数監視部３０での処理であって、指定されたマクロプログラムをバックグラウンドタスクとして登録する際に、ＰＬＣ３４と数値制御装置の間で信号をやりとりする手順を詳細に示すフローチャートである。
【００４５】
図１０では、左側にＰＬＣ３４側の処理のフローを、右側に数値制御装置側の処理のフローを表している。  
まず、ＰＬＣ３４側では、マクロプログラム名である＄ＭＡＣ１をセットしたマクロプログラム名信号ＥＤを立ち上げるとともに、バックグラウンドマクロ起動信号ＥＳＴＢをＨレベルにして数値制御装置に送信する（ステップＳ４１）。数制御装置側では、バックグラウンドマクロ起動信号ＥＳＴＢをＨレベルで受信していることが確認されてから（ステップＳ４２のＹｅｓ）、マクロプログラム「＄ＭＡＣ１」の読み込みが行われ、マクロプログラムの読取完了信号ＥＲＥＮＤがＨレベルに立ち上がってＰＬＣ３４側に返信される（ステップＳ４４）。
【００４６】
ＰＬＣ３４側では、マクロプログラムの読取完了信号ＥＲＥＮＤがＨレベルになってマクロプログラム「＄ＭＡＣ１」が読み込まれたことが確認され（ステップＳ４３のＹｅｓ）、バックグラウンドマクロ起動信号ＥＳＴＢをＬレベルにして数値制御装置側に返す（ステップＳ４５）。数値制御装置側では、Ｌレベルのバックグラウンドマクロ起動信号ＥＳＴＢを確認してから、読取完了信号ＥＲＥＮＤをＬレベルにして、マクロプログラムの読み取り処理が完了したことをＰＬＣ３４側に通知する（ステップＳ４８）。その後、図５に示したタスク登録テーブルには「＄ＭＡＣ１」のマクロプログラムを解析するタスクがバックグラウンドで処理するタスクＸとして登録される（ステップＳ４９）。他方、ＰＬＣ３４側では、読取完了の通知をＬレベルの読取完了信号ＥＲＥＮＤで受けると処理は終了する（ステップＳ４７のＹｅｓ）。
【００４７】
次に、図７のフローチャートに戻ると、右側に示すステップＳ５０からステップＳ５２がバックグラウンドタスクとして登録されたマクロプログラムの解析および実行のステップである。ステップＳ５０では、タスク登録テーブルにマクロプログラム「＄ＭＡＣ１」を解析するバックグラウンド・サービスタスクが登録されていれば（ステップＳ５０のＹｅｓ）、ステップＳ５１に進んで、バックグラウンドでマクロプログラム「＄ＭＡＣ１」の解析・実行するタスクＸを処理していく。そして、計算結果がゼネラル変数Ｖ３１、Ｖ３２に格納されてマクロプログラムの解析・実行が終了する（ステップＳ５２のＹｅｓ）。
【００４８】
他方、マクロプログラムの解析・実行に並行して加工プログラムの解析・実行も行われている。図８に示した加工プログラムの実行がブロックｃまで進行すると、このブロックｃを読み出すと（ステップＳ３１）、マクロプログラムの実行完了を確認するＧ１７３というコードが含まれているため、次のような処理が行われる。
【００４９】
すなわち、ステップＳ３２のＹｅｓからステップＳ３３に進むと、Ｇ１７３というコードがあるので、マクロプログラムの実行の完了を確認する。もし、マクロプログラムの実行が完了していなければ、コードＰで指定された時間（５秒間）だけ待つ。コードＰで指定された時間内にマクロプログラムの実行が完了していなければ異常とみなしてマクロプログラムの実行を止めることになる。  
完了していれば、ステップＳ３４、ステップＳ３５を経てステップＳ３１に進み、次のブロックであるブロックｄを読み込み解析を行う。この時点では、バックグラウンドで処理していたマクロプログラム「＄ＭＡＣ１」による数値計算の最新結果のゼネラル変数Ｖ３１、Ｖ３２を利用して軸移動の実行データを作成することができる。
【００５０】
以上のようにして数値計算をするマクロプログラムの解析・実行をバックグラウンドで行っているため、マクロプログラムの解析・実行を加工プログラムの解析・実行と並行して行うことができる。
【００５１】
このように第２の実施形態によれば、バックグラウンドでマクロプログラムの解析、実行を行っており、第１実施形態と同様の効果があることに加えて、ＰＬＣ３４からプログラム名を指定して指令することにより、使いやすいマクロで記述した数値計算処理をＰＬＣ３４から行えるので、従来のように、ＰＬＣの複雑なラダーシーケンスを駆使する必要がなくなるため、ＰＬＣによる数値計算処理を格段に簡素化することができる。
【００５２】
なお、以上説明した第２の実施形態では、図８の加工プログラム例にブロックｃとしてバックグラウンドでマクロプログラムが完了しているかどうかを確認するブロックが挿入されているが、このブロックは必ずしも必要があるわけではなく、マクロプログラムが加工プログラムと無関係な指令だけであれば不要である。
【符号の説明】
【００５３】
１０…加工プログラム、１２…マクロプログラム、１４…プログラム入力部、１６…プログラム記憶域、１８…加工プログラム解析部、２０…実行データ作成部、２２…各軸移動量指令部、２４…サーボ制御部、２６…マクロプログラム解析・実行部、３２…オペレーションシステム部、３４…プログラマブルロジックコントローラ  
【図１】
2012048471.tif 000003
【図２】
2012048471.tif 000004
【図３】
2012048471.tif 000005
【図４】
2012048471.tif 000006
【図５】
2012048471.tif 000007
【図６】
2012048471.tif 000008
【図７】
2012048471.tif 000009
【図８】
2012048471.tif 000010
【図９】
2012048471.tif 000011
【図１０】
2012048471.tif 000012