(57)【特許請求の範囲】
【請求項１】
共通の経路に沿って移動可能な２つの可動体を互いに接近離間する方向に個別のＮＣプログラムに従ってそれぞれ移動制御する数値制御装置において、一方の可動体が他方の可動体側に最も接近される目標位置に基づいて移動範囲境界を設定する範囲設定手段と、前記移動範囲境界により区画されるそれぞれの移動許容範囲内で前記一方及び他方の可動体をそれぞれが対応する前記数値制御プログラムに従って移動させる移動制御手段と、前記一方の可動体が前記移動範囲境界内で前記他方の可動体側に最も接近する前記目標位置に到達した後に前記他方の可動体側から遠ざかる離間方向に移動するときは前記一方及び他方の可動体の前記移動許容範囲をそれぞれ縮小及び拡大するように前記移動範囲境界を前記一方の可動体の前記離間方向移動と共に変更する境界変更手段と、さらに、前記ＮＣプログラムに従う前記他方の可動体の移動が前記移動範囲境界を超えようとするときにはその後に前記移動範囲境界が変更されて前記他方の可動体の移動許容範囲が拡大されるまで前記他方の可動体を一時停止する一時停止手段とを含むことを特徴とする数値制御装置。
【請求項２】
共通の経路に沿って移動可能な２つの可動体を互いに接近離間する方向に個別のＮＣプログラムに従ってそれぞれ移動制御する数値制御装置において、一方の可動体については他方の可動体側に移動すべき移動範囲を優先移動許容範囲として設定すると共に前記他方の可動体については前記一方の可動体側に移動できる移動範囲を前記優先移動許容範囲に接近するがこの移動許容範囲を超えない従属移動許容範囲として設定する範囲設定手段と、前記優先及び従属移動許容範囲内で前記一方及び他方の可動体をそれぞれが対応する前記数値制御プログラムに従って移動させる移動制御手段と、前記一方の可動体が前記優先移動許容範囲内で最も前記他方の可動体側に接近する位置に到達した後に前記他方の可動体側から遠ざかる離間方向に移動するときは前記優先移動許容範囲を順次縮小すると共に前記従属移動許容範囲を順次拡大する範囲変更手段と、さらに、対応する前記ＮＣプログラムに従う前記他方の可動体の移動が前記従属移動許容範囲を超えようとするときにはその後に前記従属移動許容範囲が拡大されるまで前記他方の可動体を一時停止する一時停止手段とからなることを特徴とする数値制御装置。
【請求項３】
請求項２に記載の数値制御装置において、前記範囲設定手段は、前記一方の可動体のための前記数値制御プログラム中に指定される前記他方の可動体側に最も接近する前記一方の可動体の目標位置に基づいて前記優先移動許容範囲を設定し、この優先移動許容範囲に基づいて前記他方の可動体の前記従属移動許容範囲を設定することを特徴とする数値制御装置。
【請求項４】
請求項３に記載の数値制御装置において、前記範囲変更手段は、前記優先移動許容範囲を縮小することに対応して、前記他方の可動体のための前記数値制御プログラム中に指定される前記一方の可動体側に最も接近する前記他方の可動体の目標位置に基づいて前記従属移動許容範囲内を拡張することを特徴とする数値制御装置。
【請求項５】
請求項２から４の何れかに記載の数値制御装置において、前記移動制御手段は前記数値制御プログラムの各ブロックに指定される前記一方又は他方の可動体の目標位置までの補間点を所定の微小間隔で対応する駆動ユニットに出力する補間処理手段を有し、前記範囲変更手段は前記補間点が前記駆動ユニットに出力される際に前記優先及び従属移動許容範囲の変更処理が必要かどうか判定し必要な場合に前記優先及び従属移動許容範囲を変更することを特徴とする数値制御装置。
【請求項６】
請求項１から５の何れかに記載の数値制御装置において、前記一方及び他方の可動体は工具を回転自在に支持し工作物の正面で共通の第１制御軸に沿って互いに接近離間するように移動可能であると共に前記工作物に向かう第２制御軸に沿って前後移動可能な一対の主軸ヘッドであり、前記数値制御装置は前記一対の主軸ヘッドの各々を前記第１及び第２制御軸に沿って移動制御可能であることを特徴とする数値制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、共通の移動経路に沿って互いに接近離間する方向に移動可能な２つの可動体を個別の数値制御プログラムに従ってそれぞれ送り制御する数値制御装置に関する。好適には、本発明は、回転又は固定の工具を個々に装架した２つの工具台を共通のワークに対して共通の移動経路上で別々の数値制御プログラムに従って独立して位置制御でき、これによりワークに対して異なる加工個所を同時に又は個別に能率良く加工できるようにした数値制御装置に関する。
【０００２】
【従来技術】
一般に、加工テーブル上の工作物の複数の加工個所を共通の移動経路に沿って個別に数値制御される２つの工具台により加工する場合、２つの工具台が接近できる位置での同時加工は問題ないが、２つの工具台がそれ以上接近できない加工個所を加工する場合工具台同士が物理的に衝突する事態が生じる。この衝突は、工具台の干渉として一般に呼ばれ、このような干渉は、各工具台の移動経路を規定する数値制御プログラム（以下、ＮＣプログラムと云う）を他の工具台の計画される移動経路を考慮して作成することにより回避される。
【０００３】
このようにＮＣプログラムを干渉が生じないように作成するＮＣプログラム上での干渉回避策では、ＮＣプログラムのステップ数（データブロック数）が大きい複雑な加工の場合では、ＮＣプログラムの作成者に大きな負担を強いることになる。
このため、上記した工具台の干渉を回避する目的で、従来における一対の工具台付工作機械を制御する数値制御装置（以下、ＮＣ装置と云う）には、図１２に示す制御機能（従来技術１）又は図１３に示す制御機能（従来技術２）が付加される。
【０００４】
なお、図１２及び図１３は、横方向に離間した一対の工具台がそれぞれの送り原点から共通の移動経路（例えば、ｘ軸）に沿って互いに接近する方向に前進され、その前進位置で加工を終えた後再びそれぞれの送り原点へ復帰する移動の経過を縦方向の時間軸に関連して表現した位置−時間チャートである。
図１２に示す従来技術１によれば、第１工具台ＴＨ１と第２工具台ＴＨ２を起動する起動指令が略同時期に相前後して与えられて、先に第１工具台ＴＨ１が例えばＸ軸に沿って第２工具台ＴＨ２側に前進した場合、第２工具台ＴＨ２は起動指令が既に与えられていても送り原点に待機されたままとされる。第２工具台ＴＨ２の第１工具台ＴＨ１側に向う前進送りは、第１工具台ＴＨ１が加工位置Ｐａ１での加工動作を終えて送り原点に復帰する時開始される。
【０００５】
図１３に示す従来技術２によれば、両工具台ＴＨ１，ＴＨ２の移動位置が常時監視される。両工具台を起動する起動指令が略同時期に相前後して与えられ、これにより第１工具台ＴＨ１が先に送り原点を離れ、この後第２工具台ＴＨ２が送り原点を離れたと仮定する。
この場合、送り距離の短い第１工具台ＴＨ１は先に加工位置Ｐａ１に到達し、この時点では加工位置Ｐｂ１が加工位置Ｐａ１よりも第１工具台ＴＨ１の送り原点側にある送り距離の長い第２工具台ＴＨ２は未だ前進を継続しており、加工位置Ｐａ１に位置決めされた第１工具台ＴＨ１に対し所定の距離まで接近すると減速されて第１工具台ＴＨ１に対し所定の干渉回避限界位置で一時停止される。そして、第１工具台ＴＨ１が送り原点に向かって後退し，両工具台が前記所定間隔以上離れる時、第２工具台ＴＨ２は加工位置Ｐｂ１に向かって移動を再開する。
【０００６】
この第２従来技術によれば、第１工具台ＴＨ１が加工位置Ｐａ１で例えばＺ方向に工具を送って加工動作を実行する間は、加工位置Ｐｂ１にかなり接近した位置で待機されている。
【０００７】
【発明が解決しようとする課題】
上述した第１従来技術は、両工具台はそれらを起動する指令が略同時に与えられる場合でも、後から起動される他方の工具台ＴＨ２は送り原点に待機されたままとなっているので、加工能率が低いと云う欠点を有する。
これに対して、第２従来技術は、両工具台をそれぞれの加工点に移動させる割出動作が一部平行して実行されるので、加工能率の点で第１従来技術より優れている。
【０００８】
しかしながら、図１３において、第１工具台ＴＨ１が加工位置Ｐａ１での加工動作の後に一時停止して待機中の第２工具台ＴＨ２側にある２番目の加工位置Ｐａ２へ位置決めされるようにＮＣプログラムで指定される場合、両工具台位置を監視する機能が働いて両工具台はその後移動不可能となる。このような事態を避けるためには、両工具台の動作を規定するそれぞれのＮＣプログラムが互いに他のプログラムを考慮して注意深く作成されなければならず、プログラム作成が面倒となる。
【０００９】
従って、本発明の主たる目的は、共通の移動経路に沿って互いに接近離間する方向に移動可能な２つの可動体を個々の数値制御プログラムに従ってそれぞれ送り制御する数値制御装置において、上述した従来技術の欠点を解消することにある。
【００１０】
【課題を解決するための手段及び発明の効果】
上述した従来技術に係わる課題及び本発明の目的は、下記の手段により解決され達成される。
本発明においては、請求項１に記載されるように、一方の可動体が他方の可動体側に最も接近される目標位置に基づいて移動範囲境界を設定する範囲設定手段を設け、また、一方の可動体が移動範囲境界内で他方の可動体側に最も接近する目標位置に到達した後に逆方向である離間方向に移動するときは両可動体の移動許容範囲をそれぞれ縮小及び拡大するように移動範囲境界を変更する境界変更手段を設け、さらに、ＮＣプログラムに従う他方の可動体の移動が移動範囲境界を超えようとするときにはその後に移動範囲境界が変更されて他方の可動体の移動許容範囲が拡大されるまで他方の可動体を一時停止する手段を設ける。
【００１１】
従って、請求項１の発明によれば、一方の可動体は他方の可動体よりも優先的にそのＮＣプログラムに従って移動制御されるので、一方の可動体の移動制御が他方の可動体の移動制御に制約されず、そのＮＣプログラムに計画された作業を高能率に遂行できる。また、他方の可動体は、一方の可動体の移動許容範囲が縮小されるに連れて自己の移動許容範囲が拡大され、一方の可動体の移動制御の進行に従属して自己の移動制御を徐々に進行させることができる。
【００１２】
特に、一方の可動体の移動許容範囲をそのＮＣプログラムによって決まる最大の移動許容範囲として最初に設定し、その後は縮小するようにしたので、一方の可動体が段階的にその移動許容範囲の境界に接近する場合でも他方の可動体との干渉が回避され、両可動体が共にそれ以上相手側に前進できない立ち往生となる事態が発生しない効果を奏する。
【００１３】
また、本発明は、請求項２に記載されるように、一方の可動体については他方の可動体側に移動すべき移動範囲を優先移動許容範囲として設定すると共に他方の可動体については一方の可動体側に移動できる移動範囲を優先移動許容範囲に接近するがこの移動許容範囲を超えない従属移動許容範囲として設定する範囲設定手段を設け、範囲変更手段により、一方の可動体が優先移動許容範囲内で最も他方の可動体側に接近する位置に到達した後に逆方向に移動するときは優先及び従属移動許容範囲を順次縮小及び拡大するようにし、さらに、一時停止手段により、対応するＮＣプログラムに従う他方の可動体の移動が従属移動許容範囲を超えようとするときにはその後に従属移動許容範囲が拡大されるまで他方の可動体を一時停止するように構成する。
【００１４】
このような構成を採ることにより、請求項２の発明によれば、上述した請求項１の発明と同様な効果が得られることに加えて、両可動体にそれぞれの移動許容範囲を設定することによる特有な効果、つまり、優先移動許容範囲と従属許容移動範囲との境界幅である干渉回避ゾーンを任意に設定でき、これにより可動体の送り制御特性に最適な干渉回避幅を両可動体間に設けることができる効果が奏せられる。付随的には、優先及び従属許容移動範囲の各々を相手側に向かう対応する可動体の暴走防止限界として機能させることも可能となる。
【００１５】
請求項３及び４に記載の発明においては、前記優先移動許容範囲を一方の可動体用のＮＣプログラム中に指定される他方の可動体側に最も接近する目標位置に基づいて設定するように前記範囲設定手段を構成し、また、前記従属移動許容範囲を他方の可動体用のＮＣプログラム中に指定される一方の可動体側に最も接近する目標位置に基づいてこの目標位置の近辺まで拡大できるように前記範囲変更手段を構成する。
【００１６】
これにより、請求項３の発明によれば、優先移動許容範囲の境界座標を一方の可動体用のＮＣプログラムに指定することが不要となり、また請求項４の発明によれば、従属移動許容範囲を拡大するための境界座標を他方のＮＣプログラムに指定することが不要となり、共にＮＣプログラムの作成を容易にしかつプログラム中に間違ったデータを指定する可能性が小さくなる利点がある。
【００１７】
請求項５に記載の発明においては、目標位置までの複数の補間点が微小間隔で出力される度に前記範囲変更手段に前記優先及び従属移動許容範囲の変更処理を行なわせるようする。
従って、請求項５の発明によれば、優先及び従属移動許容範囲の変更がタイムリーに実行され、これにより両可動体の位置制御の進行の間に無駄な時間が排除されるので、両可動体の総合的位置制御効率を向上させることができる。
【００１８】
請求項６の発明においては、前記一方及び他方の可動体を回転工具主軸を備える一対の主軸ヘッドとして構成する。
斯かる構成を採ることにより、請求項６の発明によれば、一方の主軸ヘッドの回転工具が工作物の在る個所の加工を終えるとこの個所に接近する他の加工個所を他方の主軸ヘッドの別の回転工具により直ちに加工でき、これにより工作物の加工を高能率に遂行できる。
【００１９】
上述した各発明において、好適には、先に駆動される可動体を一方の可動体とし、後で駆動される可動体を他方の可動体とすることが望ましい。駆動開始についてのこの時間的前後関係は好ましくは各可動体が送り原点を出発し再び送り原点に復帰する所謂１サイクル動作単位での前後関係を意味するが、複数サイクル単位の動作を何れの可動体が先に動作するかという観点での時間関係としても把握できることは勿論のことである。
【００２０】
駆動開始の前後関係とは無関係に、実行すべき加工個所の多少に基づいて一方の可動体及び他方の可動体を決定するようにしても差し支えない。
【００２１】
【実施の形態】
以下、本発明の実施の形態を図面に基づいて説明する。
図１及び図２は、本発明による数値制御装置が制御対象とする１対の主軸ヘッド付き工作機械の一部断面平面図及び正面図を示す。これら図において、１０は工作機械９のベッドであり、このベッド１０の後部に箱形コラム１１が立設されている。
【００２２】
コラム１１の上下のクロスビーム１１ａの前面に平行に設けた一対の水平ガイドレール１２に跨ってコの字状の第１サドル１３及び第２サドル１４が、それぞれの上下端部で左右方向（Ｘ方向）に移動可能に案内されている。これにより、第１サドル１３及び第２サドル１４は、共通の移動経路（Ｘ軸ガイドレール１２）に沿って互いに接近・離間方向に移動可能である。なお、第１及び第２サドル１３，１４のガイドレールを別々に設けてもよい。
【００２３】
コラム１１の前面側でベッド１０上には、Ｘ軸サーボモータ１８ａにより回転されるボールねじ１６がガイドレール１２と並行な軸線回りに回転可能に軸承され、このボールネジ１６に螺合するナット１７は第１のサドル１３に取付けられている。一方、コラム１１の上部クロスビーム１１ａの前面には、Ｕ軸サーボモータ１８ｂにより回転されるボールねじ２０がボールねじ１６と平行な軸線回りに回転可能に軸承され、このボールねじ２０は第２サドル１４に取付けられたナット２２が螺合している。
【００２４】
第１サドル１３と第２サドル１４の左右方向に対向する内側面には、それぞれ前後一対のガイドレール２３が上下方向（Ｙ方向）に平行に延びるように固定されている。これらガイドレール２３に第１主軸ベース２４と第２主軸ベース２５がそれぞれ対応する第１サドル１３と第２サドル１４上で上下方向に移動可能に案内されている。
【００２５】
第１サドル１３と第２サドル１４には、ボールねじ２７ａ，２７ｂがガイドレール２３と平行な軸線回りに回転可能に軸承されている。これらボールねじ２７ａ，２７ｂは、それらの上端でそれぞれＹ軸サーボモータ２８ａ及びＶ軸サーボモータ２８ｂに連結され、これらモータにより回転される。
ボールねじ２７ａ，２７ｂにはそれぞれ図略のナットが螺合し、これらナットは第１主軸ベース２４と第２主軸ベース２５にそれぞれ取付けられている。第１主軸ベース２４と第２主軸ベース２５の左右方向に対向する内側面には、それぞれ上下に離間した一対のガイドレール３０が平行に前後方向（Ｚ方向）に延びるように固定されている。
【００２６】
それぞれの対のガイドレール３０には、それぞれ第１主軸ヘッド３１ａ及び第２主軸ヘッド３１ｂが前後方向（Ｚ方向）に移動可能に案内されている。第１主軸ベース２４と第２主軸ベース２５には、それぞれボールねじ３３ａ，３３ｂがガイドレール３０と平行な軸線回りに回転可能に軸承されている。
これらボールねじ３３ａ，３３ｂは、それらの後端にそれぞれ連結されたＺ軸サーボモータ３８ａ及びＷ軸サーボモータ３８ｂにより回転され、これによりそれらに螺合するナット３４ａ，３４ｂを介して第１主軸ヘッド３１ａと第２主軸ヘッド３１ｂを前後方向に駆動する。
【００２７】
第１主軸ヘッド３１ａ及び第２主軸ヘッド３１ｂは、Ｚ方向に延びる軸線回りに第１主軸３５ａと第２主軸３５ｂを回転可能に軸承し、内蔵した図略のビルトインモータによって回転駆動できる。第１主軸３５ａと第２主軸３５ｂの前端には、ドリル，エンドミル，砥石等の工具Ｔが着脱可能に装着され、第１主軸３５ａと第２主軸３５ｂへの工具Ｔの着脱は図略の工具マガジンとの間でそれぞれ自動工具交換される。
【００２８】
コラム１１の前方でベッド１０上には固定又は回転割出タイプのテーブル３７が設置され、このテーブル３７に単一の工作物Ｗが図略のクランプ機構により固定されている。テーブル３７の左右方向（Ｘ方向）両側には、搬入・搬出装置４０が配置されている。
上記の構成により、第１及び第２主軸ヘッド３１ａ，３１ｂは、サーボモータ１８ａ，１８ｂの駆動により共通のガイドレール１２に沿ってＸ方向に移動され、またサーボモータ２８ａ，２８ｂの駆動によりＹ方向に移動されて、各ヘッド３１ａ，３１ｂ上の工具Ｔを工作物Ｗの所望の加工位置に位置決めでき、その後サーボモータ３８ａ，３８の駆動によりＺ方向に前進させて、例えばドリル等の工具Ｔによりを加工個所に穴明けする。
【００２９】
工具Ｔがエンドミルである場合、工具Ｔと工作物Ｗとの当接位置で主軸ヘッド３１ａ，３１ｂを互いに直交するＸ，Ｙ及びＺ方向に同時２軸又は３軸制御して工作物Ｗにコンタリング加工を施すことができる。必要であれば、テーブル３７上に複数の工作物を取付けるようにしてもよい。
上記のように構成される工作機械９の図１における左側には、コンピュータを内蔵する数値制御装置（以下、ＣＮＣ装置と云う）７０とシーケンスコントローラ８０が配置されている。この数値制御装置７０とシーケンスコントローラ８０は、工作機械９と搬入・搬出装置４０の動作を制御する。
【００３０】
図３に示すように、ＣＮＣ装置７０は、ＣＰＵ７１、メモリ７２と対話式データ入力装置７３によって主に構成されている。インターフェイス７４を介してＣＰＵ７１に接続されたデータ入力装置７３は、表示装置７３ａを有し、テンキー７３ｂによりＮＣプログラムや各種パレメータデータを対話形式で入力し、スイッチ群７３ｃにより各種命令を入力する。
【００３１】
図略のインターフェイスを介してＣＰＵ７１に接続されたシーケンスコントローラ８０は、ＮＣプログラム中に指定される各種補助機能命令、例えば、主軸回転指令、クーラントのオン・オフ命令や工具交換指令を受取り、この命令に応じたシーケンス制御を実行する。
メモリ７２は、ＣＰＵ７１の処理動作を定義するシステムプログラムを記憶するエリア７２ａと、このシステムプログラムに従ってＣＰＵ７１が実行する第１及び第２主軸ヘッド用のＮＣプログラムを記憶するＮＣプログラムエリア７２ｂと、第１及び第２主軸ヘッドのＸ方向における移動許容境界となる境界座標ＢＣ１，ＢＣ２を記憶するエリア７２ｃと、システムプログラムに従う制御過程における演算処理のためのフラッグエリア７２ｄ及びワーキングエリア７２ｅを含む。
【００３２】
図１０を参照して後に詳しく説明するように、境界座標ＢＣ１は第１主軸ヘッド３１ａが図２において右側に前進する許容範囲の右端を定義し、境界座標ＢＣ２は第２主軸ヘッド３１ｂが図２において左側に前進する許容範囲の左端を定義する。
ＣＰＵ７１は、インターフェイス７５を介して、所定の微小時間間隔でＮＣプログラムの各データブロックに指定される目標位置までの多数の補間点をＸ，Ｙ，Ｚ軸制御用の駆動ユニット７６ａ〜７８ａ及びＵ，Ｖ，Ｗ軸制御用の駆動ユニット７６ｂ〜７８ｂへ出力し、逆に各制御軸のサーボモータ１８ａ，２８ａ，３８ａ，１８ｂ，２８ｂ及び３８ｂに付属のエンコーダｅから位置帰還信号をインターフェイス７５を経由して入力する。
【００３３】
図４はＣＰＵ７１の処理動作の概略を説明するための機能説明図で、同図において破線矢印は各種処理への移行順序を示し、実線矢印はデータの流れを示す。今、第１及び第２主軸ヘッド３１ａ，３１ｂが同時にそれぞれのＮＣプログラムに従ってテーブル３７上の工作物Ｗの主軸ヘッド側に向いた面上の複数の加工個所を協働して順次加工する場合を想定する。
【００３４】
この場合、シーケンサ８０には作業者により両主軸ヘッド３１ａ，３１ｂを起動する指令が個々又は単一の押しボタンスイッチを操作することにより与えられ、シーケンサ８０はＣＰＵ７１にＮＣ実行指令を与えて主軸ヘッド３１ａ用のＮＣプログラム（以下、第１ＮＣプログラム）及び主軸ヘッド３１ｂ用のＮＣプログラム（以下、第２ＮＣプログラム）を順次実行させる。
【００３５】
なお、シーケンサ８０は、両主軸ヘッドを同時に起動する指令の入力を認識する場合、内蔵のインターロックプログラムの実行により、通常は図２において左側に配置された第１主軸ヘッド３１ａを先に起動させるようにＣＰＵ７１に指令する。
ＣＰＵ７１は、先ずプログラム実行処理１０１を行い、この処理においてメモリ７２から第１ＮＣプログラムの最初のデータブロックを読出し、デコードし、デコードした情報を移動情報１０１ａとしてメモリ７２内ワーキングエリア７２ｅに記憶する。この処理においては、ＣＰＵ７１は、第１主軸ヘッドの前述した移動許容範囲の境界座標ＢＣ１を設定できるようにするため、第１ＮＣプログラム中の最初の１サイクル加工動作分の複数のデータブロックをサーチし、これらブロック中で指定されるＸ軸の最大目標位置を抽出し、同じくワーキングエリア７２ｅに登録する。
【００３６】
ここで、「１サイクル加工動作」とは、各主軸ヘッドが送り原点を離れた後、１又はそれ以上の加工位置で加工動作を遂行した後に、再び送り原点に復帰するまでの動作ステップである。また、「最大目標位置」とは、各加工位置への割出しステップを規定する複数のデータブロックの何れかが各主軸ヘッドを最も相手側の主軸ヘッド寄りに位置決めする座標位置である。
【００３７】
その後、ＣＰＵ７１は、移動／チェック処理１０２を実行する。この処理は、補間点演算処理と干渉チェック処理を含む。先ず、ワーキングエリア７２ｅ内の前記移動情報１０１ａが両主軸ヘッド３１ａ，３１ｂ間で干渉を生じ得るＸ軸の移動指令を含む場合、メモリ７２内の干渉軸テーブル７２ｉを参照して干渉チェック処理が必要と判断される。この処理により、干渉を生じると判断されるときは駆動ユニット７６ａ〜７８ａへの補間点の出力は行われない。干渉チェック処理が不要或いはこの処理の結果として干渉が生じないと判断されるときは、ワーキングエリア７２ｅに記憶される移動情報１０１ａに基づき１ｍｓ（ミリ秒）後に各制御軸が到達すべき補間点を各制御軸について演算し、各制御軸の駆動ユニット７６ａ〜７８ａへ出力する。
【００３８】
第１主軸ヘッド３１ａについて、移動／チェック処理１０２を実行した後、第２ＮＣプログラムについてプログラム実行処理１０３を前述した処理１０１と同様に実行し、移動情報１０３ａとしてワーキングエリア７２ｅに記憶し、移動／チェック処理１０４を実行する。この処理１０４は、前述した処理１０２と同様な手順でなされ、第２主軸ヘッド３１ｂが第１主軸ヘッド３１ａと干渉しないことが確認されると、第２主軸ヘッド３１ｂの制御軸Ｕ，Ｖ，Ｗを制御する駆動ユニット７６ｂ〜７８ｂに補間点が前記微小時間毎に出力される。
【００３９】
続いて、移動／チェック処理１０２，１０４の各々が１ｍｓ毎に１回実行されるように交互に繰り返し実行され、駆動ユニット７６ａ〜７８ａ及び７６ｂ〜７８ｂに対し補間点が１ｍｓ毎に出力される。この結果、Ｘ，Ｙ，Ｚ軸のサーボモータ１８ａ，２８ａ，３８ａが駆動され、またこれと同時にＵ，Ｖ，Ｗ軸のサーボモータ１８ｂ，２８ｂ，３８ｂが駆動され、第１主軸ヘッド３１ａと第２主軸ヘッド３２ａは、互いに他のものと干渉しない限りＸ軸上で相手側に接近するように移動され、共通の単一工作物Ｗを同時加工することができる。
【００４０】
移動／チェック処理１０２又は１０４において、１ブロックのＮＣデータが指定する目標位置に各制御軸Ｘ，Ｙ，Ｚ又はＵ，Ｖ，Ｗが到達したことがそれら制御軸用のエンコーダ出力から確認する時、つまり１ブロック分の位置決め制御の完了を確認する時、この完了を確認した移動／チェック処理１０２，１０４と対応するプログラム実行処理１０１又は１０３を実行し、次の１ブロックのＮＣデータの読出し、デコード処理等を前述したように行なう。
【００４１】
このようにして、ＣＰＵ７１は、第１主軸ヘッド３１ａ及び第２主軸ヘッド３１ｂの数値制御処理を時分割で実行する。なお、図４は、入力装置７３により、対をなす干渉軸Ｘ，Ｕが干渉軸テーブル７２ｉへ設定登録され、またＮＣプログラムがＮＣプログラムエリア７２ｂに登録されることを示している。
図５〜図９は、ＣＰＵ７１に前述した移動／チェック処理１０２及び１０４を交互に実行させるためのシステムフローチャートを示す。以下、このフローチャートを参照して第１主軸ヘッド３１ａのための移動／チェック処理１０２を中心にしてこのフローチャートに基づく処理過程を詳細に説明する。
【００４２】
先ず、ステップＳ１において、ワーキングエリア７２ｅに記憶されている１ブロックのＮＣデータに基づく制御が完了したか否か判定され、このＮＣデータの目標位置に指定された全ての制御軸Ｘ，Ｙ，Ｚが到達したとき、この処理が終了し、前述した処理１０１〜１０４への移行を制御する図略のメインルーチンに移行する。
【００４３】
このメインルーチンは、第２主軸ヘッド３１ｂについて既にＮＣ制御処理が開始されているときは、図４の移動／チェック処理１０４を行なうために、ＣＰＵ７１に図５の処理をステップＳ１から再開させるようにする。第２主軸ヘッド３１ｂについて未だＮＣ制御処理が開始されていないが、シーケンサ８０から第２主軸ヘッド３１ｂについてのＮＣ制御処理を起動する指令が与えられている場合では、図４のプログラム実行処理１０３をＣＰＵ７１が実行するように仕向ける。また、シーケンサ８０から第２主軸ヘッド３１ｂについてのＮＣ制御処理を起動する指令が与えられていない場合では、メインルーチンは第１主軸ヘッド３１ａについて図４のプログラム実行処理１０１をＣＰＵ７１が実行するように仕向ける。
【００４４】
ここで、説明の便宜上、図４の移動／チェック処理１０２を図５のフローチャートに従ってＣＰＵ７１が実行を開始した直後であると仮定しよう。この場合、次にステップＳ２が実行される。
各ＮＣプログラム、この場合第１ＮＣプログラムの第１ブロックは、Ｘ軸移動範囲設定のためのＧコード命令を含む。このため、ステップＳ２において移動範囲設定Ｇコードが識別されると、ステップＳ３において図６のサブルーチンに基づき移動範囲設定処理が実行される。この処理では、ワーキングエリア７２ｅから前述した１サイクル動作の最大目標位置である境界座標ＢＣ１が読込まれて指令許容範囲として設定される（ステップＳ３１）。
【００４５】
この場合、第１主軸ヘッド３１ａが第２主軸ヘッド３１ｂよりも先に起動されてＮＣ制御されているので、第２主軸ヘッド３１ｂの境界座標ＢＣ２と比較されて干渉の有無がチェックされるが（ステップＳ３２）、干渉なしと判定され、前記指令許容範囲、つまり最大目標位置ＢＣ１がそのまま移動許容範囲として設定される（ステップＳ３３）。つまり、第１主軸ヘッド３１ａは、この１サイクル動作においては優先制御対象とされ、その移動許容範囲は優先移動許容範囲として第２主軸ヘッド３１ｂの移動許容範囲である従属移動許容範囲に影響されずに設定される。
【００４６】
逆に、第２主軸ヘッド３１ｂが既にＮＣ制御されている状態で第１主軸ヘッド３１ａが図１０のｔ２時点のように送り原点Ｐａ０から加工位置Ｐａ４に向かう次ぎの１サイクル動作を実行する場合では、第１主軸ヘッド３１ａは従属制御対象とされ、そのときの移動許容範囲は従属許容範囲として設定される。この場合、もし優先制御対象である第２主軸ヘッド３１ｂの移動許容範囲ＢＣ２と干渉すると判定されるとき（ステップＳ３２）、相手の境界座標ＢＣ２に干渉クリアランスＩＣを加算した値、つまり相手の移動許容範囲より自分側に干渉クリアランスＩＣ分引っ込んだ座標値が移動許容範囲として設定される（ステップＳ３４）。
【００４７】
なお、本実施の形態では、ＮＣプログラムの第１ブロックにＸ軸移動範囲設定のための前記Ｇコードのみを指定し、境界座標ＢＣ１を１サイクル動作を指令するＮＣデータブロックからサーチしてワーキングエリア７２ｅに登録したものを使用するようにしているが、第１ブロックに前記Ｇコードに付随して境界座標ＢＣ１を直接指定するようにしてもよい。
【００４８】
変形例として、ＮＣプログラムにはＸ軸移動範囲設定のための何らの情報も指定せずに、ＣＮＣ装置７１が第１ブロックの指令を実行する前に自動的にＸ軸の移動範囲を設定する処理をシステムプログラム中に組み込んでもよい。
また、ステップＳ３３及びステップ３４で設定する移動許容範囲は、各主軸ヘッド３１ａ，３１ｂの工具主軸３５ａ，３５ｂの座標位置を指定してもよいが、本実施の形態では図１０に示すように、２重丸で示す工具主軸３５ａ，３５ｂの座標位置よりも幾分相手の主軸ヘッド側にオフセットしてある。このオフセット量は、各主軸ヘッドの相手側へ最も突出る部分の工具主軸からの距離が設定され、ステップ３３及び３４の処理ではこのオフセット量が移動許容範囲の算出に加味される。
【００４９】
移動範囲設定処理Ｓ３が完了すると、後述するステップ１４を経由して前記メインルーチンに復帰され、第１ＮＣプログラムの第２ブロックのデータについて図４のプログラム実行処理が行なわれるので、再びステップＳ１及びＳ２を経由して次にステップＳ４に至り、干渉チェックの要否が判断される。本実施の態様においては、第１及び第２主軸ヘッド３１ａ，３１ｂの干渉は、両ヘッドがＸ軸上で互いに接近する場合生じるので、ＮＣプログラムの第２ブロックに指定された軸指定データがＸ軸の指定を含む場合、干渉チェック要として判定される。
【００５０】
干渉チェック要と判断された場合、ステップＳ５で範囲外確認チェックが図７のサブルーチンに従って実行される。このルーチンにより、実行中の１ブロックのＮＣデータで指定されるＸ軸の目標位置及びこの目標位置への移動経路（補間点）がステップＳ３３又はＳ３４にて設定された移動許容範囲内であるか否か比較される（ステップＳ５１及びＳ５２）。もし目標位置または移動経路が移動許容範囲を外れるときは、ステップＳ５３で異常処理が実行され、図略の異常警報手段により異常アラームが通知され、工作機械が停止される。
【００５１】
目標位置及び移動経路が共に移動許容範囲内であることが確認されるときは、ステップＳ６が実行され、補間処理の開始を記憶する図略のフラッグがセットされる。ステップＳ７では、相手の移動許容範囲のチェックが図８のサブルーチンに従って実行される。
先ず、自己の移動許容範囲が相手の移動許容範囲に干渉クリアランスＩＣを加算したものとしてステップＳ３４で設定済であるか否か判定され（ステップＳ７１）、もし設定済でない場合は自己の指令許容範囲と相手の移動許容範囲に干渉クリアランスＩＣを加算した範囲とがラップするか否か判定され（ステップＳ７２）、第１主軸ヘッド３１ａが優先制御対象であってラップしないと判定されるときは前述した指令許容範囲が自己の移動許容範囲として設定される（ステップＳ７３）。
【００５２】
逆に、第１主軸ヘッド３１ａを従属制御対象とする１サイクル動作の場合にラップすると判定されるときは、相手の移動許容範囲に干渉クリアランスＩＣを加算した範囲を自己の移動許容範囲として設定する（ステップＳ７４）。
次に、干渉を回避するために必要な減速停止距離が速度指令等を計算に入れて算出され（ステップＳ７５）、この減速停止距離を現在のＸ軸位置に加算して一時停止位置を求め（ステップＳ７６）、この一時停止位置がステップＳ７３又はＳ７４で設定された自己の移動許容範囲を超えるか否かが判定され（ステップＳ７７）、超えないときは図略の干渉判定記憶用のフラッグがリセットされ（ステップＳ７８）、逆に超えると判定されるときは同フラッグがセットされる（ステップＳ７９）。
【００５３】
好適には、前記減速停止距離は、通常の送り制御の終端部で実行されるスローダウン制御よりも略２倍程度となるように長くされる。
この干渉判定記憶用フラッグを参照して、ステップＳ８では干渉有無のチェックが行なわれ、干渉なしの場合、ステップＳ９において１ｍｓ後のＸ軸の補間点が速度指令を勘案して演算され、Ｘ軸駆動ユニット７６ａに出力される。この場合、同一の１ブロック中に他の１又は２軸であるＹ軸とＺ軸の軸指定およびこれに付随する目標位置が指定されている場合では、Ｙ軸又はＺ軸の１ｍｓ後の補間点も演算されてＹ軸又はＺ軸駆動ユニット７７ａ，７８ａへ出力される。
【００５４】
これにより、Ｘ軸サーボモータ１８ａが単独で、或いはＹ軸又はＺ軸サーボモータ２８ａ，３８ｂと同時に駆動され、第１の主軸ヘッド３１ａが１ｍｓ後の補間点へＸ軸方向に、或いはＹ軸又はＺ軸方向に移動される。
続くステップＳ１０及びＳ１１は、優先移動許容範囲を自己の送り原点側に狭め、従属移動許容範囲を後述するステップＳ１８４において相手の送り原点側へ拡大できるようにするために実行される。具体的には、第１主軸ヘッド３１ａが優先制御対象となる１サイクル動作中において図１０の第２加工位置Ｐａ２から第３加工位置Ｐａ３へＸ軸に沿って後退する動作を指令するＮＣデータブロックには所定番号を付随するＧコードの情報として移動許容範囲変更指令が指定されており、この変更指令がステップＳ１０で認識されるとき、ステップＳ１１において移動許容範囲を狭める処理が実行される。この処理は、ステップＳ７３又はＳ７４でメモリ７２の境界座標記憶エリア７２ｃに設定した移動許容範囲を読出し、この移動許容範囲からステップＳ９で算出した補間点までの移動距離を減算し、この減算結果である商を再び境界座標記憶エリア７２ｃに更新記憶させることにより行われる。
【００５５】
ステップＳ９で求められた補間点に第１主軸ヘッド３１ａが到達すると、駆動ユニット７６ａ〜７８ａからの補間完了信号が全てオン状態となる。これにより、ＣＰＵ７１の処理は、ステップＳ１２からステップＳ１３へ移行し、このステップでは従属制御対象とされる第２主軸ヘッド３１ｂについて図５のフローチャートに従って移動／チェック処理を実行し、再びステップＳ７へ復帰する。その後、ステップＳ７〜Ｓ１２までの処理が繰り返し実行され、次の１ｍｓ後の補間点に第１主軸ヘッド３１ａが位置決めされる。
【００５６】
このようにしてステップＳ７〜Ｓ１２までの一連の移動制御処理を何度も繰り返すことにより、第１主軸ヘッド３１ａは１ブロックのＮＣデータに指定された目標位置に到達する。目標位置に到達する時、ステップＳ１２において移動完了が確認され、ＣＰＵ７１はステップ１４にて各フラッグをリセットした後、メインルーチンへ復帰する。これにより、次に図４に示すプログラム実行処理１０１に移行し、ＮＣプログラムの次の１ブロックのデータを読出及び解析して、この解析データを移動情報１０１ａとしてワーキンブエリア７２ｅに記憶させ、この後再び図５の移動／チェック処理に移行する。
【００５７】
上述した１ｍｓ毎の補間処理の過程でステップＳ１３が実行され、この時第２主軸ヘッド１３ｂ用の補間処理実行フラッグがセット状態にあると第２主軸ヘッドヘッド３１ｂのための補間処理が実行される。同様に、１ブロックの目標位置が到達され、第１主軸ヘッド３１ａを制御しているＣＰＵ７１の処理がステップＳ１２から最初のステップＳ１に移行する途中において第２主軸ヘッド１３ｂ用の補間処理実行フラッグがセット状態にあると第２主軸ヘッドヘッド３１ｂのための補間処理が実行される。
【００５８】
図１０のｔ１時点のように、従属制御対象とされる第２主軸ヘッド３１ｂが優先制御対象である第１主軸ヘッド３１ａに接近しすぎると、第２主軸ヘッド３１ｂのためにＣＰＵ７１が図５のフローチャートに従って実行している補間処理のステップＳ８おいて干渉有りと判定され、このときＣＰＵ７１の処理はステップＳ１５へ進む。
【００５９】
このステップＳ１５では、干渉回避のための一時停止が完了しているか否か判定され、完了していないときはステップＳ１６で１ｍｓ後の減速補間点が演算され、この補間点がＵ軸用の駆動ユニット７６ｂに出力される（ステップＳ１６）。Ｕ軸と他の１もしくは２軸が同時制御されるＮＣデータブロックの制御下にある場合では、これら他の制御軸の１ｍｓ後の減速補間点も演算され、この補間点がこれら制御軸用の駆動ユニット７７ｂ，７８ｂへも出力される。
【００６０】
ステップＳ１６の後、ステップＳ１７を経由してステップＳ７に戻り、これによりステップＳ１６が繰り返し実行され、最終的に従属制御対象である第２主軸ヘッド３１ｂが例えば図１０の第１一時停止位置Ｐｉｍ１で一時停止される。
一時停止が完了されるとき、ステップＳ１５で一時停止の完了が確認され図略一時停止完了フラッグがセットされる。この場合、ステップＳ１５に続きステップＳ１８〜ステップＳ２０が順次実行される。ステップＳ１８では、図９に示す停止解除チェックのためのサブルーチンが実行される。
【００６１】
このサブルーチンのステップＳ１８１〜Ｓ１８４は、図８のサブルーチンにおけるステップＳ７１〜Ｓ７４にそれぞれ対応し、これにより従属制御対象である第２主軸ヘッド３１ｂの移動許容範囲が優先制御対象である第１主軸ヘッド３１ａの移動許容範囲に干渉クリアランスＩＣを加算した範囲の境界座標に設定される（ステップＳ１８４）。
【００６２】
次に、１ｍｓ後の再移動補間点がＵ軸及び同時制御の場合は他の軸についても演算され（ステップＳ１８５）、演算されたＵ軸の補間点が第２主軸ヘッド３１ｂの移動許容範囲内となるか否か判定される（ステップＳ１８６）。この場合、範囲内であれば再移動フラッグをセットし（ステップＳ１８７）、逆に範囲外となれば同フラッグをリセット状態とし（ステップＳ１８８）、ステップＳ１９に処理を進める。
【００６３】
この停止解除チェックサブルーチンでは、一時停止状態からスローアップ制御を行なう関係でステップＳ１８６でのチェックが一時停止に必要な距離を考慮せずに行われ、この点が図８の相手範囲チェック用のサブルーチンと異なる。
再移動フラッグの設定状態に応じて、ステップＳ１９では移動再開可能であるか否か判定され、移動再開不可であるときはステップＳ１８５で演算した再移動補間点を駆動ユニット７６ｂ或いはこのユニット及び他のユニット７７ｂ，７７ｂへ出力せずにステップＳ１７に進み、移動再開可能であるときはステップＳ２０で前記再移動補間点を駆動ユニットへ出力する。
【００６４】
これにより、１ｍｓ毎にステップＳ１８５で演算される再移動補間点が移動許容範囲外となる限り従属制御対象とされる第２主軸ヘッド３１ｂは一時停止位置に保持されるが、再移動補間点が移動許容範囲内となれば１ｍｓ毎に第２主軸ヘッド３１ｂが再移動送りされる。
ステップＳ１６，Ｓ１９及びＳ２０に続いて実行されるステップＳ１７では、優先制御対象である第１主軸ヘッド３１ａが補間動作を実行中であるときＣＰＵ７１がこの第１主軸ヘッド３１ａについて図５の制御動作を実行する。このため、従属制御対象とされる第２主軸ヘッド３１ｂは、優先制御対象である第１主軸ヘッド３１ａの移動許容範囲がステップＳ１１で縮小されるまで、一時停止される。そして、第１主軸ヘッド３１ａの移動許容範囲の縮小に伴って第２主軸ヘッド３１ｂは、その移動許容範囲がステップＳ１８４で拡大されると、この拡大につれて移動を再開する。
【００６５】
つまり、各主軸ヘッド３１ａ，３１ｂの各々は、従属制御対象とされる場合、優先制御対象とされる一方の主軸ヘッドについてのステップＳ１１での移動許容範囲の縮小に連れて、自己の移動許容範囲をステップＳ１８４にて拡大するようになっている。
なお、ステップＳ４に続くステップ２１は、干渉しないＹ軸又はＺ軸を指定する１ブロックのＮＣデータについて実行されるステップで、このステップは詳細図示省略されているが、図５中のステップＳ６、Ｓ９、Ｓ１２及びＳ１３に対応する処理を含む。
【００６６】
これにより、Ｙ軸又はＺ軸が指定される１ブロックのＮＣデータを実行する場合、ステップＳ４からステップＳ２１に移行され、前述した補間処理開始フラッグをセットして補間処理の実行中を記憶し、その後そのデータブロックで指定された１ｍｓ後の補間点を演算して指定軸の駆動ユニットへ出力し、この補間点演算及び出力処理をそのデータブロックで指定された各制御軸の目標位置が到達されるまで１ｍｓ毎に繰り返し実行する。
【００６７】
上記した移動／チェック処理動作は第１主軸ヘッド３１ａを優先制御対象として制御する１サイクル動作を想定して記述したが、第２主軸ヘッド３１ｂを優先制御対象として制御する１サイクル動作も実質的に同一である。この場合、第２主軸ヘッド３１ｂ用のＮＣプログラムには、第１主軸ヘッド３１ａの制御軸Ｘ，Ｙ，Ｚにそれぞれ対応する制御軸としてＵ，Ｖ，Ｗの制御軸が指定される。第２主軸ヘッド３１ｂを優先制御対象として制御する１サイクル動作では、ステップＳ８に続いてステップＳ９〜Ｓ１２が実行され、この場合の従属制御対象である第１主軸ヘッド３１ａが第２主軸ヘッド３１ｂと干渉する場合、この第１主軸ヘッド３１ａについてステップＳ１５〜Ｓ２０が実行される。
【００６８】
第２主軸ヘッド３１ｂ用のＮＣプログラムを作成する場合、制御軸をＵ，Ｖ，Ｗとして指定してもよいが、プログラム作成者の便宜のためにＸ，Ｙ，ＺとしてしＮＣプログラムを作成させ、第２主軸ヘッド３１ｂについて図４のプログラム実行処理１０３を行なう際にこれら制御軸Ｘ、Ｙ、ＺをＵ，Ｖ，Ｗに自動読み替えるようにしてもよい。
【００６９】
左右方向を第１及び第２主軸ヘッド３１ａ，３１ｂのＸ軸に沿う送り位置とし、上下方向を時間経過として両主軸ヘッドのＸ軸移動を表現した説明図１０を参照して、第１主軸ヘッド３１ａが優先制御対象として先に起動され、この直後に第２主軸ヘッド３１ｂが従属制御対象として起動される場合における両主軸ヘッドの送り制御を以下に補足説明する。なお、同図においては、第１主軸ヘッド３１ａのＹ及びＺ軸に沿う運動及び第２主軸ヘッド３１ｂのＶ及びＷ軸に沿う運動は省略されている。
【００７０】
第１主軸ヘッド３１ａが最初に駆動される場合、ＮＣプログラムの第１ブロックに指定される移動範囲設定Ｇコードに従って、移動許容範囲の境界座標ＢＣ１が送り原点ｘ０から第２主軸ヘッド３１ｂ側のｘ１に移される（ステップＳ３３）。
この境界座標の設定後、Ｘ軸送り用の複数のＮＣデータブロックの実行により、第１主軸ヘッド３１ａがＰａ１，Ｐａ２，Ｐａ３の各加工位置に順次位置決めされ、これらの位置でＹ方向に移動された後Ｚ方向に送られて、工作物Ｗに例えば穴明け加工が施され、再び、送り開始位置Ｐａ０へ復帰される。第１主軸ヘッド３１ａが最も第２主軸ヘッド３１ｂ側に接近した加工位置Ｐａ２から送り原点Ｐａ０に復帰されるに連れて、優先移動許容範囲の境界座標ＢＣ１が順次縮小後退されるように変更される（ステップＳ１１）。
【００７１】
従属制御対象である第２主軸ヘッド３１ｂ用のＮＣプログラムは、その後データブロックに従って同主軸ヘッド３１ｂを第１加工位置Ｐｂ１、第２加工位置Ｐｂ２に順次位置決めしてこれらの位置で工作物Ｗに加工を施し、送り開始位置Ｐｂ０に復帰するように作成される。
第２主軸ヘッド３１ｂについては、そのＮＣプログラムの第１ブロックに指定される移動範囲設定Ｇコードに従って、その境界座標ＢＣ２が送り原点のｕ０から第１主軸ヘッド３１ａ側のｕ１に移される（ステップＳ３４）。この場合、最初に設定される境界座標ＢＣ２は、境界座標ＢＣ１が既に自身の指令許容範囲内に張り出して設定されてしまっているので、境界座標ＢＣ１の位置ｘ１よりも後退したｕ１位置とされる。従って、第２工具主軸３１ｂは第１加工位置Ｐｂ１まで直ちに移動できず、Ｐｉｍ１位置で一時停止される（ステップＳ１５）。
【００７２】
第１主軸ヘッド３１ａが第２加工位置Ｐａ２を離れ第３加工位置Ｐａ３へ移動するに連れてその境界座標ＢＣ１が順次縮小後退される（ステップＳ１１）ので、これと同期して境界座標ＢＣ２が順次拡大前進される（ステップＳ１８４）。これと共に、第２主軸ヘッド３１ｂは第１加工位置Ｐｂ１に向けて移動を再開し（ステップＳ１９，Ｓ２０）、拡大される境界座標ＢＣ２に沿って移動される。
【００７３】
第１主軸ヘッド３１ａが第３加工位置Ｐａ３に位置決めされる時、その境界座標Ｂ１もＸ２位置に設定され、境界座標ＢＣ２がｕ２位置で拡大前進を一時停止され、第２主軸ヘッド３１ｂはＰｉｍ２位置で再度一時停止される。そして、第１主軸ヘッド３１ａが送り原点Ｐａ０へ復帰して１サイクル動作を完了するとき、境界座標ＢＣ２が第２主軸ヘッド３１ｂの指令許容範囲の境界座標位置であるｕ３位置まで拡大され、第２主軸ヘッド３１ｂは第１加工位置Ｐｂ１へ位置決めされて加工動作を遂行できるようになる。
【００７４】
第１主軸ヘッド３１ａが送り開始位置Ｐａ０へ復帰された後、工具交換動作が実行され、２番目の１サイクル動作が開始される。２番目の１サイクル動作のための第１ブロックのＧコードに基づき、境界座標ＢＣ１の再設定が行われる。この場合、第１主軸ヘッド３１ａが従属制御対象とされ、第２主軸ヘッド３１ａが優先制御対象とされる。２番目の１サイクル動作における第１加工位置は第１主軸ヘッド３１ａが最も第２主軸ヘッド３１ｂ側に接近する位置Ｐａ４として想定されているが、前述したように第２主軸ヘッド３１ｂの移動許容範囲の境界座標ＢＣ２がｕ３位置まで拡大されているので、ｘ３位置に第１主軸ヘッド３１ａの境界座標ＢＣ１が設定される（ステップＳ３４）。この境界座標ＢＣ１は、第２主軸ヘッド３１ｂの境界座標ＢＣ２が縮小後退されるに連れて徐々に拡大前進され、最終的には加工位置Ｐａ４への第１主軸ヘッド３１ａの位置決めを許容するｘ４位置まで拡大される。
【００７５】
上記動作説明から明らかなように、先に送り原点から相手側に向かって前進する一方の主軸ヘッド（優先ヘッド）は、後から送り開始位置を離れる他方の主軸ヘッド（従属ヘッド）よりも優先的に自己の移動許容範囲の境界座標ＢＣ１を最大の指令許容範囲位置ｘ１まで張り出すことができ、これにより優先ヘッドが従属ヘッドに優先して加工動作を進めることができる。これに対し、従属ヘッドは優先ヘッドとの干渉が生じると判定されうときはそのような干渉が回避されるまで待機され、その後干渉が生じない範囲まで優先ヘッド側に前進される。
【００７６】
そして、優先ヘッドがその境界座標を最大値まで拡大した後に初期値（ゼロ）まで縮小するまで優先ヘッドとしての加工の優先権が与えられる。しかしながら、優先ヘッドが送り開始位置へ一旦復帰され、従属ヘッドが送り開始位置を離れている状態で優先ヘッドが再び送り開始位置を離れるときは、主従関係が逆転され、先の従属ヘッド及び優先ヘッドがそれぞれ優先及び従属ヘッドとされる。
【００７７】
図１１は、本発明による第２の実施の形態におけるＣＮＣ装置７０の概略構成を示すブロック図で、この形態は前述したＣＰＵが第１主軸ヘッド３１ａ用の制御軸Ｘ，Ｙ，Ｚを制御する第１ＣＰＵ７１ａと第２主軸ヘッド３１ｂ用の制御軸Ｕ，Ｖ，Ｗを制御する第２ＣＰＵ７１ｂからなることを特徴とする。
入力装置７３及びそれぞれがＣＰＵ７１ａとＣＰＵ７１ｂに対応するメモリ１７２ａ，１７２ｂは、データバスＤＢによりＣＰＵ７１ａ，７１ｂに接続される。各メモリメモリ１７２ａ，１７２ｂには、図５〜図９に示すシステムプログラムが記憶され他、対応する主軸ヘッド用のＮＣプログラムが記憶され、さらに両主軸ヘッドの移動許容範囲の境界座標ＢＣ１，ＢＣ２が記憶されるようにして各ＣＰＵ７１ａ，７１ｂが図６のステップＳ３２、図８のステップＳ７１及びＳ７２、図９のステップＳ１８１及びＳ１８２において相手の主軸ヘッドの設定移動範囲を参照できるようにしている。
【００７８】
各ＣＰＵ７１ａ，７１ｂのその他動作は前述した第１の実施の形態における第１主軸ヘッド３１ｂを制御する場合のＣＰＵ７１の動作と実質的に同一であるので、詳細な記述は省略する。この形態では、各ＣＰＵ７１ａ，７１ｂが自己のシステムプログラムに従って個別に動作できるので、図５中の相手処理ステップ（例えば、Ｓ１３、Ｓ１７等）は不要であり、実行されない。
【００７９】
上述した実施の態様には、下記の変更が可能であり、このような変更の下でも本発明は実施可能である。
主軸ヘッド３１ａ，３１ｂが移動する共通の制御軸は、上述した共用のガイドレール１２，１２に代えて、個別のガイドレールとしてもよい。
干渉が生じる主軸ヘッド３１ａ，３１ｂの移動方向は、工具Ｔを工作物に向けて前後動する方向でもよい。
【００８０】
主軸ヘッド３１ａ，３１ｂにそれぞれ境界座標ＢＣ１，ＢＣ２を設定しているが、単一の境界座標とし、この単一の境界座標の両側を主軸ヘッド３１ａ，３１ｂのそれぞれの移動許容範囲として設定してもよい。
図５の干渉チェック及び移動範囲の変更は、１つの補間点を出力する毎に行なってもよいが、所定の数の補間点を出力する毎に行なうように粗い処理としてもよい。
【００８１】
数値制御装置７０の制御対象を工作機械の主軸ヘッドとしたが、上述した実施の形態におけるＸ軸とＵ軸のように干渉を生じ得る共通の制御軸上を移動するその他の可動体としてもよい。
【図面の簡単な説明】
【図１】本発明による実施の態様における数値制御装置が制御対象とする２つの主軸ヘッドを備えた工作機械の一部を破断した平面図。
【図２】図１のＡ−Ａ線矢視方向から観た前記工作機械の正面図。
【図３】図１の工作機械を制御する前記数値制御装置の概略構成を示すブロック図。
【図４】図３の数値制御装置が実行する制御処理の概要を説明するための制御機能ブロック図。
【図５】図４の制御機能ブロック図における移動／チェック機能を前記数値制御装置に実行させるためのシステム制御プログラムのフローチャート。
【図６】図５のフローチャートの移動範囲設定処理ステップにて実行されるサブルーチンの詳細を示すフローチャート。
【図７】図５のフローチャートの範囲外確認ステップにて実行されるサブルーチンの詳細を示すフローチャート。
【図８】図５のフローチャートの相手範囲チェックステップにて実行されるサブルーチンの詳細を示すフローチャート。
【図９】図５のフローチャートの停止解除チェックステップにて実行されるサブルーチンの詳細を示すフローチャート。
【図１０】本発明により数値制御装置が２つの主軸ヘッドを制御する場合の移動制御機能を説明する制御位置−時間チャート。
【図１１】本発明による別の実施の形態における数値制御装置の概略構成を示すブロック図。
【図１２】従来の数値制御装置が２つの主軸ヘッドを制御する場合の移動制御機能を説明する制御位置−時間チャート。
【図１３】別の従来の数値制御装置が２つの主軸ヘッドを制御する場合の移動制御機能を説明する制御位置−時間チャート。
【符号の説明】
３１ａ，３１ｂ・・・第１及び第２主軸ヘッド
１２，１２・・・ガイドレール
７０・・・数値制御装置
７１・・・ＣＰＵ
７２・・・メモリ
７６ａ〜７８ａ・・・Ｘ，Ｙ，Ｚ軸駆動ユニット
７６ｂ〜７８ｂ・・・Ｕ，Ｖ，Ｗ軸駆動ユニット
ＢＣ１，ＢＣ２・・・境界座標
Ｓ３・・・移動範囲設定処理ステップ
Ｓ１１・・・移動範囲変更ステップ
Ｓ１６・・・減速補間点演算・出力ステップ
Ｓ１８・・・停止解除チェックステップ
【図１】
0003587046.tif 000002
【図２】
0003587046.tif 000003
【図３】
0003587046.tif 000004
【図４】
0003587046.tif 000005
【図５】
0003587046.tif 000006
【図６】
0003587046.tif 000007
【図７】
0003587046.tif 000008
【図８】
0003587046.tif 000009
【図９】
0003587046.tif 000010
【図１０】
0003587046.tif 000011
【図１１】
0003587046.tif 000012
【図１２】
0003587046.tif 000013
【図１３】
0003587046.tif 000014