(57)【特許請求の範囲】
【請求項１】
数値制御工作機械にロードされて該機械を動作させるＮＣプログラムを作成する第１のＳｔｅｐと、
基準軸の回転量と移動軸の位置との関係を定めた電子カムデータへの変換を行うべき箇所を上記ＮＣプログラムの作成中に予め指定する第２のＳｔｅｐと、
上記ＮＣプログラムを上記数値制御工作機械内の所定の記憶素子に読み込む第３のＳｔｅｐと、
上記記憶素子に読み込まれたＮＣプログラムに対して上記指定された箇所を検索して指定された箇所に電子カムデータに変換出来ない指令があるか否かを判定することで電子カムデータへの変換可否を検討する第４のＳｔｅｐと、
該検討結果が可となった場合には、上記指定された箇所のワーク又は工具の動作の記述に従い仮想的にワーク又は工具を動作させ、かつ機械固有情報を参照して上記指定された箇所を電子カムデータに変換する第５のＳｔｅｐと、
該第５のＳｔｅｐにより得られた電子カムデータを記憶するテーブルを作成する第６のＳｔｅｐと、
上記ＮＣプログラムにおいて、この電子カムデータに変換された箇所を上記テーブルを参照するコマンドと置換する第７のＳｔｅｐとを備えることを特徴とするＮＣプログラムのための最適データ変換方法。
【請求項２】
複数のチャンネルを含み数値制御工作機械にロードされて該機械を動作させるＮＣプログラムを作成する第１のＳｔｅｐと、
上記ＮＣプログラムにおいてチャンネル間の待ち合せ指令と工具選択指令とを記述する第２のＳｔｅｐと、
上記ＮＣプログラムを所定の記憶素子に読み込む第３のＳｔｅｐと、
上記記憶素子に読み込まれたＮＣプログラムにおける上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置を変更することにより加工完了までに要する加工時間が短縮されるか否かにつき工具選択指令位置変更可否の検討を行う第４のＳｔｅｐと、
該検討結果が可となった場合には、上記ＮＣプログラムにおける上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置変更を実行し、機械稼動用プログラムファイルの作成を行う第５のＳｔｅｐとを備えることを特徴とするＮＣプログラムのための最適データ変換方法。
【請求項３】
複数のチャンネルを含み数値制御工作機械にロードされて該機械を動作させるＮＣプログラムと、
チャンネル間の待ち合せ指令と工具選択指令とが記述された上記ＮＣプログラムを記憶するメモリー手段と、
上記複数のチャンネル間の待ち合せ処理において、上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置を変更することにより加工完了までに要する加工時間が短縮されるか否かの判定を行う可否判定手段と、
該判定結果が可となった場合には、上記ＮＣプログラムにおいて上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置変更を実行し、この変更結果に基づき機械を稼動させる数値制御部とを備えることを特徴とする数値制御工作機械。
【請求項４】
ＮＣプログラムの一部分を電子カムデータに変換する機械稼働用プログラムファイル作成手段と、
工具又はワークの位置に関する補正値情報を記憶する補正値情報記憶手段とを備え、
上記プログラムファイル作成手段によりＮＣプログラムの一部分が電子カムデータに変換される際に、上記補正値情報を反映させるようにしたことを特徴とする請求項３に記載の数値制御工作機械。
【請求項５】
数値制御工作機械にロードされて該機械を動作させるＮＣプログラムを作成する第１のＳｔｅｐと、
基準軸の回転量と移動軸の位置との関係を定めた電子カムデータへの変換を行うべき箇所を上記ＮＣプログラムの作成中に予め指定する第２のＳｔｅｐと、
上記ＮＣプログラムを所定の記憶素子に読み込む第３のＳｔｅｐと、
上記記憶素子に読み込まれたＮＣプログラムに対して上記指定された箇所を検索して指定された箇所に電子カムデータに変換出来ない指令があるか否かを判定することで電子カムデータへの変換可否を検討する第４のＳｔｅｐと、
該検討結果が可となった場合には、上記指定された箇所のワーク又は工具の動作の記述に従い仮想的にワーク又は工具を動作させて上記基準軸の回転量と移動軸の位置との関係を定めて電子カムデータに変換する第５のＳｔｅｐと、
該第５のＳｔｅｐにより得られた電子カムデータを記憶するテーブルを作成する第６のＳｔｅｐと、
上記ＮＣプログラムにおいて、この電子カムデータに変換された箇所を上記テーブルを参照するコマンドと置換する第７のＳｔｅｐとを備えることを特徴とするＮＣプログラムのための最適データ変換方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、数値制御工作機械およびプログラムに関し、更に詳しくは、工具あるいは主軸を移動させるべく記憶されるＮＣプログラムが、目的の加工をよりスムーズに、あるいは精度良く行うべく変換を行うようにした数値制御工作機械およびプログラムに関する。
【０００２】
【従来の技術】
近年の技術進歩により、ＮＣプログラムを予め作成した上で、これを数値制御工作機械にロードし、ワークあるいは工具に所望の動きをさせるようにして加工部品を製造することが現在行われている。
数値制御工作機械の登場当初は、ＮＣプログラムの作成は、完全に人手に委ねられており、人間がＧコードや機械固有のＭコード等ＮＣコードを把握した上で、人間の思考力あるいは、経験などに基づき行われていた。このように人手による行為の為に、プログラム作成に対しての習熟度合いや、思考力の違い、注意能力の差、思考性向の相違などによって、出来上がるプログラムそのものが、作り手の能力あるいは性格を反映しているものになっていた。
【０００３】
一方、最近では、更なる技術進歩により、特開平７−１６８６１２号公報に示されるように、ＣＡＤシステムにより図面を作成し、このＣＡＤシステムにて直接ＮＣプログラムを自動的に作成することや、あるいは、ＣＡＤシステムとは別のＮＣプログラム作成支援システムに、作成されたＣＡＤ図面データを取りこんでＮＣプログラムを作成することも行われている。勿論、単に、図面データを上記両システムに投入するだけでＮＣプログラムが作成されるわけではなく、素材の種類あるいは、送り速度などの諸条件をＮＣプログラム作成時に、上記システムに対して入力するなどの作業が必要になっている。このようになったことによって、ＮＣプログラムの作り手の能力の別なくＮＣプログラムの作成が可能になっている。
【０００４】
【発明が解決しようとする課題】
ところで、このような数値制御工作機械を使用して加工部品を製造し、最終消費者に対して商品を提供している数値制御工作機械のユーザーは、市場から、多品種少量の生産を次々に切り替えて実施することを要求されている。
この要求を満足するという点からは、従来のＮＣプログラムの作成方法あるいは、数値制御工作機械では、十分に満足出来るものになっていると言えず、未だ、改良の余地があった。
【０００５】
つまり、ワークを加工する上では、ワークあるいは工具を必ずしもエキスパートのＮＣプログラム作成者が作ったものほどは最適に数値制御工作機械を動作させるものになっているとは言えなかった。従来の技術にあっては、上記のようにＮＣプログラムを作成する上で補助ツールが整備され、このツールを使用する方法につき一定の教育がされているという前提条件にて一定のレベルのＮＣプログラムが作成され得る。しかしながら、出来たプログラムそのものは、非常に画一的にコーディングされるものであった為である。この結果として、ワークの加工時間が延びる、加工部品の単価が上昇する、加工部品の精度を十分に得られない、若しくは得られるとしてもその為の労力が過大になる、ひいては機械寿命を短くさせるなどの懸念があった。
【０００６】
本発明は、このような問題点を解決する為に為されたもので、これらの副次的な問題点を解消することは勿論、どのような作業者がＮＣプログラムを作ったとしてもエキスパートの作業者が作ったのと同等のＮＣプログラムが得られるようにしたＮＣプログラムのための最適データ変換方法及び最適データ変換手段を備えた数値制御工作機械を提供することを目的とする。
【０００７】
【課題を解決するための手段】
本発明に係るＮＣプログラムのための最適データ変換方法は、数値制御工作機械にロードされて該機械を動作させるＮＣプログラムを作成する第１のＳｔｅｐと、基準軸の回転量と移動軸の位置との関係を定めた電子カムデータへの変換を行うべき箇所を上記ＮＣプログラムの作成中に予め指定する第２のＳｔｅｐと、上記ＮＣプログラムを上記数値制御工作機械内の所定の記憶素子に読み込む第３のＳｔｅｐと、上記記憶素子に読み込まれたＮＣプログラムに対して上記指定された箇所を検索して指定された箇所に電子カムデータに変換出来ない指令があるか否かを判定することで電子カムデータへの変換可否を検討する第４のＳｔｅｐと、該検討結果が可となった場合には、上記指定された箇所のワーク又は工具の動作の記述に従い仮想的にワーク又は工具を動作させ、かつ機械固有情報を参照して上記指定された箇所を電子カムデータに変換する第５のＳｔｅｐと、該第５のＳｔｅｐにより得られた電子カムデータを記憶するテーブルを作成する第６のＳｔｅｐと、上記ＮＣプログラムにおいて、この電子カムデータに変換された箇所を上記テーブルを参照するコマンドと置換する第７のＳｔｅｐとを備えることを特徴としている。
【０００８】
又、本発明に係るＮＣプログラムのための最適データ変換方法は、複数のチャンネルを含み数値制御工作機械にロードされて該機械を動作させるＮＣプログラムを作成する第１のＳｔｅｐと、上記ＮＣプログラムにおいてチャンネル間の待ち合せ指令と工具選択指令とを記述する第２のＳｔｅｐと、上記ＮＣプログラムを所定の記憶素子に読み込む第３のＳｔｅｐと、上記記憶素子に読み込まれたＮＣプログラムにおける上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置を変更することにより加工完了までに要する加工時間が短縮されるか否かにつき工具選択指令位置変更可否の検討を行う第４のＳｔｅｐと、該検討結果が可となった場合には、上記ＮＣプログラムにおける上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置変更を実行し、機械稼動用プログラムファイルの作成を行う第５のＳｔｅｐとを備えることを特徴としている。
【０００９】
一方、本発明に係る数値制御工作機械は、  複数のチャンネルを含み数値制御工作機械にロードされて該機械を動作させるＮＣプログラムと、チャンネル間の待ち合せ指令と工具選択指令とが記述された上記ＮＣプログラムを記憶するメモリー手段と、上記複数のチャンネル間の待ち合せ処理において、上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置を変更することにより加工完了までに要する加工時間が短縮されるか否かの判定を行う可否判定手段と、該判定結果が可となった場合には、上記ＮＣプログラムにおいて上記チャンネル間の待ち合せ指令に対する上記工具選択指令の位置変更を実行し、この変更結果に基づき機械を稼動させる数値制御部とを備えることを特徴としている。
【００１０】
上述した、数値制御工作機械の構成の一部を具体化すると、ＮＣプログラムの一部分を電子カムデータに変換する機械稼働用プログラムファイル作成手段と、工具又はワークの位置に関する補正値情報を記憶する補正値情報記憶手段とを備え、上記プログラムファイル作成手段によりＮＣプログラムの一部分が電子カムデータに変換される際に、上記補正値情報を反映させるようにしたことを特徴としている。
【００１１】
数値制御工作機械にロードされて該機械を動作させるＮＣプログラムを作成する第１のＳｔｅｐと、基準軸の回転量と移動軸の位置との関係を定めた電子カムデータへの変換を行うべき箇所を上記ＮＣプログラムの作成中に予め指定する第２のＳｔｅｐと、上記ＮＣプログラムを所定の記憶素子に読み込む第３のＳｔｅｐと、上記記憶素子に読み込まれたＮＣプログラムに対して上記指定された箇所を検索して指定された箇所に電子カムデータに変換出来ない指令があるか否かを判定することで電子カムデータへの変換可否を検討する第４のＳｔｅｐと、該検討結果が可となった場合には、上記指定された箇所のワーク又は工具の動作の記述に従い仮想的にワーク又は工具を動作させて上記基準軸の回転量と移動軸の位置との関係を定めて電子カムデータに変換する第５のＳｔｅｐと、該第５のＳｔｅｐにより得られた電子カムデータを記憶するテーブルを作成する第６のＳｔｅｐと、上記ＮＣプログラムにおいて、この電子カムデータに変換された箇所を上記テーブルを参照するコマンドと置換する第７のＳｔｅｐとを備えることを特徴としている。
【００１２】
【発明の実施の形態】
以下、図面を参照しながら本発明による工作機械及びその制御装置の好適な実施形態について詳細に説明する。
図１は、本発明の実施形態に係る数値制御工作機械の構成を示すブロック図である。図１において、工作機械１は、主軸回転用モータ１１、工具移動用モータ２１、被加工物移動用モータ３１、背面主軸移動用モータ４１、背面主軸回転用モータ６１及び各モータ１１，２１，３１，４１、６１の駆動を制御するための制御ユニット部５１を有している。
【００１３】
主軸回転用モータ１１は、被加工物が保持可能に構成された主軸（図示せず）を回転駆動させるためのもので、駆動回路１２及び主軸回転制御回路１３等を介して制御ユニット部５１に接続されている。また、主軸回転用モータ１１には、主軸回転用モータ１１の回転を検知するためのパルスエンコーダ１４が設けられている。このパルスエンコーダ１４の出力は制御ユニット部５１及び速度信号生成回路１５に接続されており、パルスエンコーダ１４から出力される回転検出信号が制御ユニット部５１及び速度信号生成回路１５に入力される。パルスエンコーダ１４は、主軸回転用モータ１１（主軸）の回転に同期して回転検出信号を発生し、制御ユニット部５１及び速度信号生成回路１５に出力する。速度信号生成回路１５は、パルスエンコーダ１４から出力される回転検出信号を主軸回転用モータ１１（主軸）の回転速度をあらわす主軸回転速度信号に変換する。速度信号生成回路１５の出力は主軸回転制御回路１３に接続されており、変換された主軸回転速度信号が主軸回転制御回路１３に入力される。
【００１４】
主軸回転制御回路１３は、後述するクロック信号発生回路にて発生して出力されたクロック信号を基準にして所望の回転速度となるように被加工物（主軸）の回転を制御するためのものであり、制御ユニット部５１から出力される主軸回転速度指令信号と、速度信号生成回路１５から出力される主軸回転速度信号とを比較して、その差に応じた制御信号をクロック信号を基準にして生成する。主軸回転制御回路１３にて生成された制御信号は、駆動回路１２に出力される。
【００１５】
駆動回路１２は、主軸回転制御回路１３から出力された制御信号に基づいて、主軸回転用モータ１１（主軸）の回転速度が後述する主軸回転速度指令値となるように主軸回転用モータ１１への供給電力を制御する。これら駆動回路１２、主軸回転制御回路１３、及び、速度信号生成回路１５は、主軸回転用モータ１１（主軸）の回転速度のフィードバック制御系を構成している。
【００１６】
工具移動用モータ２１は、被加工物を加工するための工具（旋削加工用バイト等）を、たとえば主軸回転用モータ１１（主軸）の回転中心軸に対して直交する方向（Ｘ軸方向、Ｙ軸方向）、又は主軸と平行な方向（Ｚ軸方向）に移動させるためのもので、駆動回路２２及び工具送り制御回路２３を介して制御ユニット部５１に接続されている。また、工具移動用モータ２１には、工具移動用モータ２１の回転を検出するパルスエンコーダ２４が設けられている。このパルスエンコーダ２４の出力は工具送り制御回路２３に接続されており、パルスエンコーダ２４の回転検出信号が工具送り制御回路２３に入力される。パルスエンコーダ２４は、工具移動用モータ２１の所定回転角度毎に回転位置信号を発生して、工具送り制御回路２３に出力する。
【００１７】
工具送り制御回路２３は、パルスエンコーダ２４から出力された回転位置信号に基づいて実際の工具の移動位置を認識すると共に、認識した実際の工具の移動位置と後述する制御ユニット部５１から出力される工具位置指令信号とを比較して、この比較結果に基づいて工具駆動信号を生成する。工具送り制御回路２３にて生成された工具駆動信号は、駆動回路２２に出力される。駆動回路２２は、工具送り制御回路２３から出力された工具駆動信号に基づいて工具移動用モータ２１への供給電力を制御する。これら、駆動回路２２及び工具送り制御回路２３は、工具の移動位置のフィードバック制御系を構成している。
【００１８】
被加工物移動用モータ３１は、被加工物を、たとえば主軸回転用モータ１１（主軸）の回転中心軸に対して平行な方向（Ｚ軸方向）に移動させるためのもので、駆動回路３２及び被加工物送り制御回路３３を介して制御ユニット部５１に接続されている。また、被加工物移動用モータ３１には、被加工物移動用モータ３１の回転を検出するパルスエンコーダ３４が設けられている。このパルスエンコーダ３４の出力は被加工物送り制御回路３３に接続されており、パルスエンコーダ３４の回転検出信号が被加工物送り制御回路３３に入力される。パルスエンコーダ３４は、被加工物移動用モータ３１の所定回転角度毎に回転検出信号を発生して、被加工物送り制御回路３３に出力する。
【００１９】
被加工物送り制御回路３３は、パルスエンコーダ３４から出力された回転検出信号に基づいて実際の被加工物の移動位置を認識すると共に、認識した実際の被加工物の移動位置と制御ユニット部５１から出力される被加工物位置指令信号とを比較して、この比較結果に基づいて被加工物駆動信号を生成する。所定回転角度毎に生成された被加工物駆動信号は、駆動回路３２に出力される。駆動回路３２は、所定回転角度毎に出力された被加工物駆動信号に基づいて被加工物移動用モータ３１への供給電力を制御する。これら、駆動回路３２及び所定回転角度毎には、被加工物の移動位置のフィードバック制御系を構成している。
【００２０】
背面主軸台移動用モータ４１は、背面主軸回転用モータ６１を、たとえば主軸回転用モータ１１（主軸）の回転中心軸に対して平行な方向（Ｚ軸方向）又は、これと直交する方向（Ｘ軸方向）に移動させるためのもので、駆動回路４２及び背面主軸台送り制御回路４３を介して制御ユニット部５１に接続されている。また、背面主軸台移動用モータ４１には、背面主軸台移動用モータ４１の回転を検出するパルスエンコーダ４４が設けられている。このパルスエンコーダ４４の出力は背面主軸台送り制御回路４３に接続されており、パルスエンコーダ４４の回転検出信号が背面主軸台送り制御回路４３に入力される。パルスエンコーダ４４は、背面主軸台移動用モータ４１の所定回転角度毎に回転位置信号を発生して、背面主軸台送り制御回路４３に出力する。
【００２１】
背面主軸台送り制御回路４３は、パルスエンコーダ４４から出力された回転位置信号に基づいて実際の背面主軸台の移動位置を認識すると共に、認識した実際の背面主軸台の移動位置と後述する制御ユニット部５１から出力される背面主軸台位置指令信号とを比較して、この比較結果に基づいて背面主軸台駆動信号を生成する。背面主軸台送り制御回路４３にて生成された背面主軸台駆動信号は、駆動回路４２に出力される。駆動回路４２は、背面主軸台送り制御回路４３から出力された駆動信号に基づいて背面主軸台移動用モータ４１への供給電力を制御する。これら、駆動回路４２及び穴加工用工具送り制御回路４３は、背面主軸台の移動位置のフィードバック制御系を構成している。
【００２２】
背面主軸回転用モータ６１は、被加工物を保持可能に構成された背面主軸（図示せず）を回転駆動させるためのもので、駆動回路６２及び背面主軸回転制御回路６３等を介して制御ユニット部５１に接続されている。また、背面主軸回転用モータ６１には、背面主軸回転用モータ６１の回転を検知するためのパルスエンコーダ６４が設けられている。このパルスエンコーダ６４の出力は制御ユニット部５１及び速度信号生成回路６５に接続されており、パルスエンコーダ６４から出力される回転検出信号が制御ユニット部５１及び速度信号生成回路６５に入力される。パルスエンコーダ６４は、背面主軸回転用モータ６１（背面主軸）の回転に同期して回転検出信号を発生し、制御ユニット部５１及び速度信号生成回路６５に出力する。速度信号生成回路６５は、パルスエンコーダ６４から出力される回転検出信号を背面主軸回転用モータ６１（背面主軸）の回転速度をあらわす背面主軸回転速度信号に変換する。速度信号生成回路６５の出力は背面主軸回転制御回路６３に接続されており、変換された背面主軸回転速度信号が背面主軸回転制御回路６３に入力される。
【００２３】
背面主軸回転制御回路６３は、後述するクロック信号発生回路にて発生して出力されたクロック信号を基準にして所望の回転速度となるように被加工物（背面主軸）の回転を制御するためのものであり、制御ユニット部５１から出力される背面主軸回転速度指令信号と、速度信号生成回路６５から出力される背面主軸回転速度信号とを比較して、その差に応じた制御信号をクロック信号を基準にして生成する。背面主軸回転制御回路６３にて生成された制御信号は、駆動回路６２に出力される。
駆動回路６２は、背面主軸回転制御回路６３から出力された制御信号に基づいて、背面主軸回転用モータ６１（背面主軸）の回転速度が後述する背面主軸回転速度指令値となるように背面主軸回転用モータ６１への供給電力を制御する。これら駆動回路６２、背面主軸回転制御回路６３、及び、速度信号生成回路６５は、背面主軸回転用モータ６１（背面主軸）の回転速度のフィードバック制御系を構成している。
【００２４】
制御ユニット部５１は、図１に示されるように、中央演算ユニット５２、パルス信号発生回路５３ａ、５３ｂ、クロック信号発生回路５４、分割タイミング信号発生回路５５、ＮＣ部用ＲＡＭ５６、ＲＯＭ５７、ＰＣ部用ＲＡＭ５８等を有している。
【００２５】
中央演算ユニット５２は、制御ユニット部５１全体の信号処理等をつかさどる演算部である。中央演算ユニット５２は、周知のマルチプロセッシング（multi-processing）処理、すなわち多重処理を行う。多重処理は、複数の仕事（プログラム）を記憶しておき、これら複数のプログラムを短い時間で切り換えながら実行し、見かけ上、複数のプログラムが同時処理されているようにするもので、時分割処理するものや、各々の仕事に優先順位を付しておき優先順位が高い順に処理を切り換えながらタスク処理するもの等が知られている。
【００２６】
パルス信号発生回路５３ａ、５３ｂは、それぞれ、パルスエンコーダ１４、６４に接続されており、パルスエンコーダ１４、６４のそれぞれから出力された回転検出信号がインターフェース等を介して入力される。この入力された回転検出信号に基づいて、所定回転角度毎にパルス信号を発生するように構成されている。また、パルス信号発生回路５３ａ、５３ｂは、中央演算ユニット５２にも接続されており、所定回転角度毎に発生するパルス信号を中央演算ユニット５２に出力するようにも構成されている。本実施形態において、パルス信号発生回路５３ａ、５３ｂは、主軸回転用モータ１１（主軸）あるいは、背面主軸回転用モータ６１（背面主軸）が一回転する間に、主軸回転用モータ１１（主軸）、背面主軸回転用モータ（背面主軸）に同期して等間隔で４０９６個のパルス信号が出力されるように構成されている。
【００２７】
クロック信号発生回路５４は、中央演算ユニット５２から出力される所定の指令信号を受けて、所定の周期、たとえば０．２５ミリ秒周期のクロック信号を生成して出力するように構成されており、クロック信号発生回路５４にて生成されたクロック信号は分割タイミング信号発生回路５５に出力される。分割タイミング信号発生回路５５は、クロック信号発生回路５４から出力されたクロック信号の発生回数をカウントするように構成されており、カウントの結果たとえば１ミリ秒経過する毎に分割タイミング信号を生成して中央演算ユニット５２に出力する。したがって、分割タイミング信号発生回路５５は、１ミリ秒周期の分割タイミング信号を後述する割込みタイミング信号として中央演算ユニット５２に出力することになる。なお、クロック信号及び分割タイミング信号の周期は上述した数値に限られることなく、中央演算ユニット５２の処理能力、パルスエンコーダ２４，３４，４４の分解能、各モータ１１，２１，３１，４１の性能等を考慮して適宜設定可能である。
【００２８】
ＮＣ部用ＲＡＭ５６は、中央演算ユニット５２における各種演算の結果を読み出し可能に一時的に記憶するように構成されている。このＮＣ部用ＲＡＭ５６は、工作機械１が、ＮＣプログラム（機械稼動用プログラム）に基づいて実際の加工動作を行う時に必要とされるＮＣプログラムを含むデータの全てを格納している。その一部に、第１のチャンネル加工手順記憶部５６ａと、第２のチャンネル加工手順記憶部５６ｂと、第３のチャンネル加工手順記憶部５６ｃ、電子カムデータテーブル５６ｄとが設けられている。尚、該データテーブルは、所謂電子カム制御を行うために備えられるものである。電子カム制御とは、特開２００１−１７０８４３に示されるように、基準軸に取りつけられたパルスエンコーダが出力するパルス信号により時々刻々の回転位置データと、基準軸の単位回転位置ごとに対応してそれぞれ設定された移動軸の指令位置データとから時々刻々の移動軸の指令データを生成し、この移動指令データと回転位置データとから回転物の回転速度に同期する移動軸の指令速度データを生成して、生成した移動指令データと指令速度データに基づいて工具の位置を制御することである。
【００２９】
ここで、第１のチャンネル加工手順記憶部５６ａと、第２のチャンネル加工手順記憶部５６ｂと、第３のチャンネル加工手順記憶部５６ｃに記憶されたＮＣプログラムにより、実際に作動させられる部分を図２に示す。第１のチャンネル加工手順記憶部５６ａに記憶されたＮＣプログラムにより、主軸回転用モータ１１、被加工物送り用モータ３１（不図示）、工具送りモータ２１（不図示）が制御される。これによって、主軸Ｓ１は、矢印で示すＺ１軸方向に移動制御されると共にＣ１回転方向に主軸回転が制御される。一方、工具ＴＳ１は、矢印で示すＸ１軸、Ｙ１軸方向に移動制御される。チャンネル１では、主軸台の移動制御、回転制御又は、工具ＴＳ１を支持する刃物台の各矢印方向の移動制御、工具ＴＳ１の中に回転工具が含まれていて、その制御が必要であるものの場合は回転等の制御を行う。第２のチャンネル加工手順記憶部５６ｂに記憶されたＮＣプログラムにより、背面主軸回転モータ６１、背面主軸移動用モータ４１（不図示）、工具ＴＳ２の回転が制御される。これによって、背面主軸Ｓ２は、矢印で示すＺ２軸方向、Ｘ２軸方向に移動制御されると共にＣ２回転方向に背面主軸回転が制御される。一方工具ＴＳ２そのものは、固定刃物台に設置されるものであって、バイトなどの非可動のものあるいは、ドリルなどの回転可能なものを取りつけ可能としているものである。ドリルなどの回転可能なものを使う場合には、第２のチャンネル加工手順記憶部５６ｂに記憶されたＮＣプログラムにより、回転が制御される。第３のチャンネル加工手順記憶部５６ｃに記憶されたＮＣプログラムにより、工具送りモータ２１（不図示）が制御される。これによって、工具ＴＳ３は、矢印で示すＸ３，Ｙ３，Ｚ３軸方向に移動制御される。チャンネル３では、この工具ＴＳ３を支持する刃物台の移動制御あるいは、保持される工具の制御が必要な場合に回転等の制御を行う。尚、この実施の形態では、工具ＴＳ３は、チャンネル３に、ＴＳ２はチャンネル２に、ＴＳ１はチャンネル１に割り付けられているが、ＴＳ１あるいはＴＳ３は、どのチャンネルで制御しても良く、必要に応じて適宜工具のチャンネル割り当ては変更できる。同様に主軸、背面主軸もチャンネル割り当ては動的に変更できる。
【００３０】
ＮＣ部用ＲＡＭ５６の電子カムデータテーブル記憶部５６ｄは、図３に示されるように、それぞれに識別番号Ｎが付与された複数の電子カムデータテーブルを記憶するものとなっている。識別番号Ｎが付与された各々の電子カムデータテーブルは、主軸回転用モータ１１（主軸）の所定の累積回転数（Ａ）毎に対応して設定された被加工物２の位置データ（Ｚ）及び工具３の位置データ（Ｘ）の点群を記憶しておく為のものである。それぞれのカムデータテーブルには、加工終了を表す終了コードがそれぞれ記憶されている。なお、所定の累積回転数（Ａ）は、主軸回転用モータ１１（主軸）の所定回転角度毎（累積回転角度毎）に対応させておいてもよい。この場合、記憶容量が多くなる。
ＲＯＭ５７は、各種処理プログラムを記憶する記憶部であって、たとえばねじ切り加工を行う時の、所定時間間隔毎、例えば、１ミリ秒毎における被加工物２の移動位置及び工具３の移動位置を確定するための演算プログラムや、穴加工や切削加工等を行う時の、主軸回転用モータ１１（主軸）の所定回転角度毎における被加工物、工具、及び穴加工用工具の移動位置を確定するための演算プログラムを記憶している。
【００３１】
また、中央演算ユニット５２は、ＲＯＭ５７内に記憶されたプログラムに基づいて、パルス信号発生回路５３から出力されたパルス信号の発生回数をカウントし、カウント結果に基づいて主軸回転用モータ１１（主軸）の累積回転数あるいは、累積回転角を算出する。
【００３２】
ＰＣ部用ＲＡＭ５８は、中央演算ユニット５２における各種演算の結果を読み出し可能に一時的に記憶するように構成されている。このＰＣ部用ＲＡＭ５８は、最適データ変換プログラム記憶部５８ａが、プログラム作成ツールあるいは人手により作成されたＮＣプログラムを変換若しくは変更する時に、参照するデータの全てを格納している。その一部に、電子カムデータ記憶テーブル５８ｂと、機械固有情報記憶部５８ｃと、ＮＣプログラム記憶部５８ｄとが設けられている。尚、該部に記憶されるＮＣプログラムファイルそのものは、プログラム作成ツールあるいは、人手により予め作成されたものである。（請求項１の第１のＳｔｅｐに相当）このようにして作成されたＮＣプログラムファイルは、プログラム作成ツールに準備される数値制御装置との通信機能あるいは、フレキシブルディスクなどの媒体を利用して数値制御装置に備えられるディスク読込装置を利用して部品の加工に先立ちロードされる。
【００３３】
最適データ変換プログラム記憶部５８ａには、本発明の最適データ変換プログラムが格納されている。電子カムデータ記憶テーブル５８ｂには、最適データ変換プログラムを実行したことによりＮＣプログラムが電子カムデータ化された際、作成データを図３に示される形態で格納している。機械固有情報記憶部５８ｃには、工具補正値、ＮＣプログラムに記述されるコマンドの実行に必要な時間や動作条件など最適データ変換プログラムが実行の時に参照するデータを格納している。ＮＣプログラム記憶部５８ｄには、最適データ変換プログラムの処理対象となるＮＣプログラムを格納している。
【００３４】
次に、数値制御工作機械、特に数値制御装置内部で実行される本発明を含む制御について、説明をする。
本発明を含む制御を大まかに示すメインフローは図４に示される通りである。
まず、始めに、ＳｔｅｐＡにおいて、時間計測モジュールを実行する。この時間計測モジュールでは、ＮＣコードで書かれているＮＣ装置に記憶されているＮＣプログラムをシミュレートして、プログラム情報を取得保持する。具体的には、チャンネル１，２，３にて実行されるＮＣプログラムを最初から最後まで実行し、実行に要した時間を各ブロック毎に推定演算する。時間計測モジュールが測定するのは、ＮＣプログラム上に記述されている待ち合せ処理の間の時間、工具選択時間である。
時間計測モジュールは、ＮＣ装置が、元々装備しているデータテーブルを利用して計算を行う。このデータテーブルは、各モータの加速度や、工具又はワークの位置に関する補正情報などの、それぞれについてのテーブルである。
【００３５】
時間計測モジュールは、ＮＣプログラムから、工具の座標値や、工具の送り速度や、主軸の回転速度、移動方法等を取得する。これらの情報を使用して、工具の移動距離、各座標での移動速度を算出し工具の移動軌跡を求める。前記工具の移動軌跡から、前記各モータの加速度を使用して移動時間を求める。ＮＣプログラムに記載されている工具の座標値には、工具又はワークの位置に関する補正情報が含まれていない。そのため、工具の移動距離算出時に、プログラム上では記載されていない工具又はワークの位置に関する補正情報を加えて計算を行う。
【００３６】
次に、ＳｔｅｐＡ１において、ＳｔｅｐＡにて測定された時間データを、以降のＳｔｅｐでの処理に備えて読み込みを行う。ＳｔｅｐＢでは、ＮＣプログラム記憶部５８ｄに対して最適データ変換を行いたいＮＣプログラムを格納するべく、ＮＣプログラムファイルの読み込みを行う。ここでの読み込みを行うことにより、実際に加工を行う為のＮＣプログラムを作成する元になるプログラムを保持する。つまり、オリジナルを保持することにより、変更をプログラム上で検討できるようにする。
【００３７】
ＳｔｅｐＣでは、ＮＣプログラム上で同期加工を行うように指定されている箇所のうち、電子カムデータを呼び出して加工を行った方が、精度の向上、効率の向上あるいは加工が可能になる箇所を抽出するべく、ＮＣプログラムを検索し、電子カムデータを呼び出す加工が必要である箇所があれば、その同期加工の電子カムデータ化を行う。
【００３８】
ＳｔｅｐＤでは、更に、同期加工の電子カムデータ化を行う箇所以外の電子カムデータ化することが指定されている箇所の電子カムデータ化を行う。これは、プログラム作成ツールから或いは、人手で作成したＮＣプログラム内に、始めから電子カムデータを利用した方が良い加工箇所としてフラグを付与しておき、これを検索して電子カムデータ化を行うものである。加工例としては、ねじ切りあるいは、タップ加工などが挙げられる。ＳｔｅｐＥでは、工具選択指令位置の最適化を行う。これは、ＮＣプログラムに当初設定された工具選択指令が行われるブロックを基準にして考えた時に、工具選択指令位置を変更すれば、結果的に加工時間が短縮できるかを検討し、短縮できるのであれば、その指令位置を加工時間の短縮に繋がる位置に変更する。
【００３９】
ＳｔｅｐＦでは、工具選択動作の最適化を行う。ここでは、他のチャンネルとの関係で見て、自チャンネルの工具の選択に時間的な余裕がある時には、工具をゆっくり選択（移動）させるように工具の移動を電子カムデータを利用して制御する。このようにすることにより、送り用のボールネジ、あるいは、刃物台を支持するベアリングなどに入力されるショック等の負荷を低減させるようにし、工作機械の寿命、加工部品の精度などにとって悪影響が出ないようにする。
【００４０】
ＳｔｅｐＧでは、機械稼動用のプログラムファイルの作成を行うと共に、ＮＣプログラム記憶部５８ｄ、電子カムデータ記憶テーブル５８ｂに記憶されているデータのそれぞれを、第１，２，３チャンネル加工手順記憶部５６ａ、５６ｂ、５６ｃに振り分けて記憶させる一方、電子カムデータテーブルに転送する。尚、これらの一連の処理は、数値制御部５１の操作パネル（不図示）に設けられるトランスフォーマボタン５９によって起動する。更に、上記ＳｔｅｐＣからＧのそれぞれの処理について詳述する。これらＳｔｅｐＣからＧの処理中に本発明の主要となる部分の構成が具現化されている。
【００４１】
１．１．ＳｔｅｐＣの処理の説明
図５（Ａ）は，同期加工の電子データ化の処理を簡略的に示すメインフローである。
ここの処理は、大まかには、作成されたＮＣプログラム内に、電子カムデータを利用した同期加工を行う方が好ましいブロックを検出し、そのブロックを電子カムデータを利用するプログラムにプログラム化するものである。このようにすることによって、ＮＣプログラムでは、チャンネル間の同期が十分に取れなく、カッターマークが生じるなどの不具合が生じる加工、あるいはＮＣプログラムでは実現不可能な加工があることに対して、これらの問題を解消できる利点がある。
本図フローチャートの説明を行う。
【００４２】
Ｓｔｅｐ１では、プログラムの開始に先立ち、処理に用いる変数である行番号Ｂ並びに、チャンネルＣＨを、それぞれ、Ｂ＝０、ＣＨ＝１にリセットする。次に、Ｓｔｅｐ２では、同期加工における電子カムデータへの変換可能箇所を検索する処理を行う。この処理の結果Ｓｔｅｐ３において変換可能箇所の存在有無を判定する。判定がＹ、つまり、変換可能箇所が存在する場合には、Ｓｔｅｐ４において、該箇所の変換開始行番号Ａ、変換終了行番号Ｂを取得する。Ｓｔｅｐ５では、更に、取得された行番号Ａ，行番号Ｂの間に記述されたＮＣプログラムを元にして制御軸が動作する軌跡の電子カムデータ化を行う。このデータ化が済んだならば、処理がまだ済んでいない行番号Ｂよりも後の行のＮＣプログラムを対象に、上述と同様の処理を繰り返す。一方、変換可能箇所が存在しないとしてＳｔｅｐ３の判定がＮとなった時には、全ての処理が完了したので、処理を終了し図４に示されるメインフローに処理を戻す。これらの処理については、後ほど詳述する。
【００４３】
全体として、このように加工方法を変換することにより、図５（Ｂ）に示される加工において、加工時間の短縮を図りつつも、カッターマークが残ることなく製品を加工することが出来る効果が得られる。つまり、段付き棒７１の形成と同時に溝７５を形成したい場合に、加工時間の短縮要求を満足するためには、複数の刃物に順序を付けて加工を行う同期加工を行えば良い。例えば、この場合には、工具７４が段付き部７２の位置に来た時に、溝７５を加工する工具７３が加工を始める同期加工が行われるようにＮＣプログラムが作成されれば目的の形状が得られる。
【００４４】
しかしながら、ＮＣプログラムでは、通常このような作業を行わせる場合には、待ち合せ処理というものを利用することになり、工具７４が実線で図示される位置に停止した状態が瞬間的にではあるが維持される為、図５（Ｃ）のＡ部拡大図に示されるように段付き部７２に沿った位置に凹みが形成されることになる。この凹み分を許容する図面公差のものを加工している場合には、これで問題ないが、許容しない場合には、この加工方法を用いることは出来ない。また、同期させる加工位置を変えた場合、二点鎖線で示される工具７４'の位置などでは、対向刃物で加工する場合には、工具７３からの反力が工具７４'の切込み量を増やす為、其の部分にすじ状の凹みが出来てしまうため、これが許容されない場合には、同期させる加工位置を変更するということも出来ない。
【００４５】
このような場合に、同期加工の電子データ化の処理を行うことにより、実線で図示の工具７４は、段付き部７２における小径の部分からわずかに離れた位置から大径の側に向けて退避移動する期間に、言い換えると、その小径から大径の部分の間の位置に一瞬たりとも留まることなく移動している最中に、そのタイミングに同期させて工具７３を突き出させて溝を加工することが出来る為、拡大図に示される凹みが形成されることなく、両者の加工が行える。このように工具７４が退避する位置に対して工具７３の切りこみを同期させるのは、上述のように工具７３の切込みによって工具７４の切込み量が変化することを避けるようにするためである。
【００４６】
１．２．同期加工の電子カムデータに変換する箇所の検索の説明
ここで、図５のＳｔｅｐ２に示される同期加工における電子カムデータへの変換可能箇所を検索する処理に関して、図６を用いて更に詳細に説明する。まず、メインとなる処理の流れから説明する。検索処理の開始後に、Ｓｔｅｐ1において現在記憶されている行番号Ｂ、カレントチャンネルＣＨを読み込み、検索対象箇所を指定する。Ｓｔｅｐ２では、カレントチャンネルＣＨにおいて、行番号Ｂ＋１行以降での最初のタイミング指令行Ｔを検索し記憶する処理を行う（タイミング指令行Ｔは、ＮＣプログラムの作成段階で、プログラマーが同期加工を行いたい位置に対して、他のチャンネルの同期させたい箇所に同一のタイミングコードを記述することで、同期加工を行うようにさせるためのコマンドを含む行である。コマンドの具体的な記述としては、例えば「ｔｉｍｉｎｇ＝１」などのように記述し、同一タイミング番号のもの同士を同期させる。Ｓｔｅｐ３では、Ｓｔｅｐ２においてタイミング指令行Ｔの取得に成功したか否かの判定を行う。成功した場合には、そのままＳｔｅｐ４に行き、タイミング指令行Ｔを挟む前後の待ち合せ行Ａ、Ｂを検索し記憶する。そこで更に、Ｓｔｅｐ５において、行番号Ａ，Ｂ間は同期加工中であるか否かについての判定を行う。この判定を行うことによりプログラマーが誤ってタイミング指令行Ｔを記述した場合であっても、誤って行Ａ，Ｂ間が電子カムデータ化されることが防がれる。Ｓｔｅｐ５での判定がＮになった場合、つまり、同期加工中ではない場合又はプログラマーにより誤ってタイミング指令行Ｔが記述されていた場合には、行番号Ｂ＋１以降のブロックに対して、Ｓｔｅｐ２以降の処理を行うべく、Ｓｔｅｐ２に処理を戻している。判定が同期加工中を示すＹであった場合には、更に、Ｓｔｅｐ６にて記憶された行番号Ａ，Ｂの区間に電子カムデータに変換出来ないものがあるか否かについて判定する。この電子カムデータに変換できないものとは、具体的には、主軸の回転数変化を行わせる指令、潤滑液の噴射命令などの補機動作を行わせる所謂Ｍコードなどの指令である。電子カムデータに変換出来ないものが無い、つまり判定がＮである場合には、続いて、Ｓｔｅｐ７において、現在カレントチャンネルＣＨを解析中であるか否かについての判定を行う。ここでの判定がＹである場合には、そのままＳｔｅｐ８に進み、カレントチャンネルＣＨでのタイミング指令行Ｔを挟む待ち合わせ処理行Ａ，Ｂに対応した他のチャンネルのタイミング指令行Ｔを挟む待ち合わせ処理行Ａ，Ｂを全て検索し存在すれば記憶する。次に、Ｓｔｅｐ９において同じタイミングコードが一つも存在しないか否かについての判定を行う。Ｎの判定、つまり同じタイミングコードが一つ以上存在する場合には、カレントチャンネルＣＨ以外の行Ａ，ＢのブロックにＳｔｅｐ６以降の処理を繰り返す。この処理の場合、カレントチャンネルＣＨの行Ａ，Ｂを対象にした処理ではないので、Ｓｔｅｐ７における判定は、必ずＮになり、Ｓｔｅｐ１０へと処理が進む。Ｓｔｅｐ１０では、電子カムデータ化すべき加工を行う箇所が存在したことを意味する存在フラグをＯＮにし、同時に、Ｓｔｅｐ６をＮの判定でかつＳｔｅｐ７をＹの判定で抜けた行Ａ，Ｂを記憶する。この後Ｓｔｅｐ１０で��憶された行Ａ、Ｂが最後のＡ，Ｂであるか否かの判定を行う。Ｙの判定がされた場合には、Ｓｔｅｐ１２に進み、存在フラグＯＮ、カレントチャンネルＣＨ、Ｓｔｅｐ１０で記憶された全ての行番号Ａ，Ｂを記憶する。これらの値は最終的に、同期加工の電子カムデータ化処理に渡される。
【００４７】
一方、Ｓｔｅｐ６において、判定がＹ、つまり、記憶した行番号Ａ，Ｂの間の加工が電子カムデータに変換できないものであった場合には、Ｓｔｅｐ１３に進み、現在カレントチャンネルＣＨを解析中であるのか否かの判定を行う。判定がＹ、つまり、カレントチャンネルＣＨを解析中であった場合には、タイミング指令行Ｔを含む行Ａ，Ｂ間の加工は電子カムデータに変換できないので、改めて電子カムデータに変換出来る加工を検出するべく処理をＳｔｅｐ２に戻す。判定がＮ、つまり、カレントチャンネルＣＨを解析中では無い場合、言い換えると、複数の行Ａ，Ｂの組が検索抽出された場合（Ｓｔｅｐ９の判定がＮ）には、Ｓｔｅｐ１４に進み、判定の対象である行Ａ，Ｂの組が最後の組であるか否かの判定を行う。この判定を行うことによって、検索された複数の行Ａ，Ｂの組の全てがＳｔｅｐ６，７，１０，１１の処理が為されるようにする。そこで判定がＮである場合、再びＳｔｅｐ６に戻り上述した処理を繰り返す。判定がＹであった場合は、Ｓｔｅｐ１５に進み存在フラグがＯＮであるか否かの判定を行う。存在フラグがＯＮではない場合には再び、Ｓｔｅｐ２からの処理を繰り返す。又、存在フラグがＯＮである場合には、Ｓｔｅｐ１６に進み、存在フラグＯＮ、カレントチャンネルＣＨ、Ｓｔｅｐ１０で記憶された全ての行番号Ａ，Ｂを次の処理に渡すべく記憶する。
尚、Ｓｔｅｐ３にて、判定がＮになった場合には、Ｓｔｅｐ１７に進み、次のチャンネルの存在有無を判定する。判定がＹとなった場合には、Ｓｔｅｐ１８に進み次のチャンネルをカレントチャンネルＣＨに設定し、Ｓｔｅｐ２からの処理を実行する。一方、判定がＮとなった場合には、次のチャンネルが存在しないので検索処理を終了する。尚、Ｓｔｅｐ６において、行Ａ，Ｂ間に電子カムデータに変換できないものがあるかないかを判定する前に、行Ａ，Ｂの間にタイミングコードが二つ以上存在するか否かの判定を行うと更に良い。いずれのタイミングコードに対して後に続く処理を行うかが適切に選択されないため、この段階で、以降の処理に対する対象から外しておく必要がある。又、行Ａ，Ｂの間に３軸に対する移動指令があるか否かをも判定しておくと良い。この判定を行うことにより、該当するケースで適切に以降の処理がされない可能性を排除できる。
【００４８】
繰り返しになるが、上述しているタイミングコードとは、タイミング指令行Ｔに単独で記述されるコマンドであり、Ｍコード、Ｇコードなどの他のコマンドと併記されない。他のチャンネルの同期させたい箇所に同一のタイミングコードを記述することで、同期加工を行うようにさせるためのコマンドである。具体的な記述としては、例えば「ｔｉｍｉｎｇ＝１」などのように記述し、同一タイミング番号のもの同士を同期させる。
【００４９】
１．３．同期加工の電子データ化処理についての説明
次に、図７に示される同期加工の電子カムデータ化（図５Ｓｔｅｐ５にて示される）処理を説明する。ここでは、まず、Ｓｔｅｐ１において、図５におけるＳｔｅｐ４にて取得されている行Ａ，Ｂに基づき、それらＡ，Ｂの間の行に示されるデータ中に、どの制御軸の移動指令がされているかを特定するべく、いずれの制御軸の移動指令が存在するのかを調べる。次にＳｔｅｐ２において、移動指令が存在するものに対して移動指令前の座標位置を取得し保持する。これは、行間の情報だけであると電子カムデータの作成に必要な情報が不足するので、これを防止する為である。Ｓｔｅｐ３では、行Ａ，Ｂ間のブロックを順に解析し要素配列を作成する。つまり、ワークあるいは工具が移動する軌跡と、移動時の速度を求める処理である。この際同時に、ＮＣプログラム中に含まれる工具移動指令に対して、工具刃先位置の補正を行って工具座標を補正した上で、要素配列の作成処理を行う。このように補正を同時に行うことにより、ＮＣプログラムを読み込んだ段階でも補正処理を行うのと異なり変換処理の時間の短縮を図ることが出来、利便性が向上する。次にＳｔｅｐ４では、加減速最適化処理を行う。ここでは、主軸回転角と関連させた位置即ち点のデータを最適なワーク、あるいは工具の加減速が為されるように決定する。次にＳｔｅｐ５では、チャンネル間の同期を取る為に、タイミング調整処理を行う。次にＳｔｅｐ６では、要素配列を電子カムデータに変換する。ここでは、上述したように電子カムデータのテーブルを作成すると共に、該テーブルに識別番号の付与を行う。Ｓｔｅｐ７では、ＮＣプログラムの修正を行う。つまり、行Ａ，Ｂの間に書かれるプログラムを削除し、行Ａの次行に電子カムデータを呼ぶ為のサイクルコマンドを代入する。このサイクルコマンドは、電子カムデータテーブル毎に付与される識別番号を引数として、電子カムデータテーブルのデータを参照する。
【００５０】
２．１．ＳｔｅｐＤの処理の説明
次に、図４ＳｔｅｐＤに示される同期以外の電子データに変換する箇所の電子データ化への処理について、説明する。
【００５１】
この処理におけるメインのルーチンは、図８の通りである。
処理が開始すると、まず、Ｓｔｅｐ１において、検索する対象を規定する行番号Ａ＝０、Ｂ＝０、チャンネルＣＨ＝１にイニシャライズを行う。次に、Ｓｔｅｐ２において、同期加工以外の電子カムデータに変換する箇所を検索する処理を実行する。この処理において、電子カムデータに変換すべき箇所が見つけられたか否かを判定するべくＳｔｅｐ３を実行する。Ｓｔｅｐ３の判定がＹとなった場合、つまり、変換すべき箇所が存在した場合には、Ｓｔｅｐ４に進んで変換対象としてラベリング（後述する）された行Ａ，Ｂを取得する。次に、そのままＳｔｅｐ５に進み行Ａ，Ｂの間に記述される同期加工以外の加工を指令する箇所の電子カムデータ化の処理を行う。処理終了後には、処理が完了した行番号Ｂを戻り値としてＳｔｅｐ２以降を繰り返す。一方、Ｓｔｅｐ３の判定がＮとなった場合、つまり、変換すべき箇所が存在しない場合には、Ｓｔｅｐ６に進みチャンネルＣＨをインクリメントし、次のチャンネルが検索されるように備える。Ｓｔｅｐ７に進んだら、ＣＨ＝４となったか否かを判定し、Ｙと判定された場合、つまり、全てのチャンネルＣＨのＮＣプログラムに対する処理が完了した場合には、処理を終了し、図４のメインルーチンに処理を戻す。Ｎの判定であった場合には、Ｓｔｅｐ８に進み行番号Ｂ＝０を代入して、改めて次チャンネルＣＨのＮＣプログラムに対しての処理を、Ｓｔｅｐ２以降から繰り返す。
【００５２】
２．２．同期以外の電子カムデータに変換する箇所の検索処理についての説明（図８Ｓｔｅｐ２）
次に、図９に示される、同期以外の電子カムデータに変換する箇所の検索処理について、詳細に説明する。まず、処理が開始されると、このサブルーチンを含むメインのルーチンの側で設定されている行番号ＢをＳｔｅｐ１にて読み込む。続いて、Ｓｔｅｐ２において、行番号Ｂ＋１行以降での最初の電子カムデータ変換開始行Ａを取得する。この変換開始行は、プログラムの作成段階において、予めラベルが付されたものになっている（ラベルは、ＮＣプログラムの作成段階で、プログラマーが電子カムデータを利用した加工を行いたい位置に対して、ラベルとしての意味を持つコードを記述することで、ＮＣプログラム部分の電子カムデータ化を行うようにさせるためのコメント文である。具体的な記述としては、例えば「ＤＲＩＬＬＩＮＧ ＳＴＡＲＴ」、「ＤＲＩＬＬＩＮＧ ＥＮＤ」などのように記述して当該箇所を指定する。プログラムは、このラベルを検索することによって、変換開始行Ａを抽出する。次にＳｔｅｐ3に進み、変換開始行Ａの取得が成功したか否かを判定する。判定がＮであった、つまり、変換開始行が存在しない場合には、Ｓｔｅｐ７に進んで存在しないをメインルーチンへの戻り値として処理を終了し、メインルーチン側に処理が復帰する。又、判定がＹであった、つまり、変換開始行が存在した場合には、Ｓｔｅｐ４に進んで行番号Ａ＋１以降での最初の電子カムデータ変換終了行Ｂを取得する。ここでも上述と同様に、電子カムデータ変換終了行にはラベルが付されており、プログラムは、このラベルを検索することによって、変換終了行Ｂを抽出する。
【００５３】
更に、Ｓｔｅｐ５に進んで取得した行番号Ａ，Ｂの区間に電子カムデータに変換できないものがあるか否かの判定を行う。ここでの判定がＮ、つまり電子カムデータに変換不可なものはないの判定であった場合には、Ｓｔｅｐ６に進んで存在するを戻り値として処理を終了する。一方、判定がＹ、つまり電子カムデータに変換できないものありの判定であった場合には、Ｓｔｅｐ８に進みログファイル出力用にエラーフラグのセットを行う一方、処理が完了したところまでのＳｔｅｐ４で取得した行番号Ｂを戻り値としてＳｔｅｐ２以降を繰り返し実行すべく、処理をＳｔｅｐ２に戻す。
【００５４】
上述のようにラベルとは、具体的には、ＮＣプログラムを記述するときに、単純に電子カムデータに変換することを指定するために、プログラム行に対して単独あるいは、何らかの指令に対して併記されるコメント文である。ここでは例えば「ＤＲＩＬＬＩＮＧ ＳＴＡＲＴ」、「ＤＲＩＬＬＩＮＧ ＥＮＤ」等のように該当加工動作を記述するプログラムの始めの部分と終わりの部分に記述する。この記述そのものは、プログラム作成ツールが、指定された加工方法に応じて自動的に記述するものであるのが好ましいが、人手でも入力できるようにしておくのがより好ましい。
【００５５】
２．３．同期以外の箇所の電子カムデータ化についての説明
次に、図１０に示される、同期以外の電子カムデータに変換する箇所の電子カムデータ化処理について、詳細に説明する。まず、処理が開始されると、図９のＳｔｅｐ４までで得られた、変換開始行Ａ，変換終了行Ｂ及びこれらの行間にて指定されている加工種類をＳｔｅｐ１にて読み込む。次に、Ｓｔｅｐ２にて加工種類がねじ切りであるか否かの判定を行う。判定がＹ、つまり、ねじ切り加工が指定されている場合には、Ｓｔｅｐ３に進みねじ切り処理を設定しＳｔｅｐ６に進む。一方、判定がＮ、つまり、ねじ切り加工が指定されていない場合には、Ｓｔｅｐ４に進み、更にタップ加工であるか否かの判定を行う。判定がＹ、つまり、タップ加工が指定されていた場合には、タップ加工処理をＳｔｅｐ５にて設定しＳｔｅｐ６に進む。ここでも判定がＮとなった場合には、Ｓｔｅｐ８に進みその他の加工処理を設定し、Ｓｔｅｐ6に進む。
【００５６】
Ｓｔｅｐ６では、行ＡＢ間のデータを電子カムデータ化するに先立ち、現在の座標値を割り出す。ここで現在の座標値を割り出すのは、行ＡＢの間に記述されるＮＣコードには、現在の座標値に関して記述されていないことが多く、行Ａよりも手前の行を検索し座標値に関する情報を取得する必要があるためである。この処理が済んだ後にＳｔｅｐ７に進み、得られている情報に基づいて、それぞれの制御軸の電子カムデータ化を実行し、行ＡＢの間に記述されるＮＣプログラムを電子カムデータを参照しに行くサイクルコマンドへと書き換えを行い、このサブルーチンにおける処理を終了する。尚、ここにおける具体的な電子カムデータ処理は、図７におけるのと同様であり、これ以上の説明は省略した。
【００５７】
３．１．ＳｔｅｐＥの処理についての説明
次に、図４ＳｔｅｐＥに示される工具選択指令位置の最適化処理について、説明する。この処理におけるメインのルーチンは、図１１（Ａ）の通りである。処理が開始すると、まず、Ｓｔｅｐ１にて、行番号Ａ＝０，Ｂ＝０，Ｃ＝０、工具選択指令行Ｔ＝０にイニシャライズを行う。尚、これ以降の処理では、チャンネル１，３を対象に処理を行うものになっている。このＳｔｅｐＥの技術の適用を想定している図２のような数値制御工作機械では、その割付パターンで行くと、チャンネル１，３の如く、工具同士が対抗するように用いられるチャンネル同士で意味がより大きいためである。チャンネル２との関係では、意味が希薄であるため検討対象に含めていないが勿論これを含めるように検討しても良い。
【００５８】
次に、Ｓｔｅｐ２において、チャンネル１，３に対して記述されるＮＣプログラム中から処理対象になる待ち合せ行番号Ａ，Ｂ，Ｃと工具選択指令行Ｔを取得する。このＳｔｅｐ３において、Ｓｔｅｐ２の取得処理が成功したか否かの判定を行う。判定がＮ、つまり、取得が失敗した場合には、以降の処理を行う必要のある箇所が無かったとして図４に示されるメインフローに処理が復帰する。一方、判定がＹ、つまり、取得が成功した場合には、Ｓｔｅｐ４に進み、取得した行Ａ，Ｂ，Ｃと工具選択指令行Ｔを記憶する。その後、Ｓｔｅｐ５に進み、工具選択指令位置を最適化する処理を行う。尚、ここでは、ＮＣプログラムの作成時に何らかの検討を最適データ変換プログラムにて行うように指定しているものになっていないため、請求項１第２のＳｔｅｐ相当になるのは、一見該当しないように理解されるが、変換プログラム側が指定されたコマンドを検出するようにしており、ＮＣプログラムの作成段階で指定するか、変換プログラム側での指定をするかの違いがあるのみである。プログラムで何らかの操作を加えたい要求に従い、プログラム側から特定されるという意味では同一の意味づけが為されている。このような処理を行うことにより、要は、この処理の対象となったＮＣプログラムで指定される加工の加工時間の短縮効果を得ることが出来る。
【００５９】
説明しやすくするために具体的な例を示す。
まず、チャンネル１、チャンネル３の動作を記述するＮＣコードが図１１（Ｂ）のように、▲１▼、▲２▼、▲３▼の行で待ち合せの処理を行っているとする。（上述した待ち合わせ行番号Ａは▲１▼に、Ｂは▲２▼に、Ｃは▲３▼にそれぞれ対応するものである。）
【００６０】
この例では、チャンネル１の▲１▼▲２▼の間では、加工に要すると推定される時間は１０秒必要と仮定する。又、チャンネル１の▲２▼▲３▼の間の加工に要すると推定される時間は８秒と仮定する。同様に、チャンネル３の▲１▼▲２▼の間では１５秒、▲２▼▲３▼の間では５秒必要であると仮定する。
【００６１】
今、チャンネル１の▲２▼▲３▼の間にＴ１で示される工具選択指令行があるとする。又、工具選択に要する時間は２秒であると仮定する。
ここで、待ち合せ処理間に発生する無駄時間を考えると、▲１▼▲２▼の間では、チャンネル１がチャンネル３の加工が終了するまで５秒待つ必要があることが図１１（Ｃ）の表から理解される。又▲２▼▲３▼の間では、チャンネル３がチャンネル１の加工が終了するまで３秒待つ必要があることが図１１（Ｃ）の表から理解される。つまり、▲１▼から▲３▼までの加工が終了するまでの間に無駄時間が８秒あることが分かる。
【００６２】
ここで先のＴ１が工具選択に２秒しか時間が必要でないことに着目すると、Ｔ１の指令を▲１▼▲２▼の間で実行することに問題が生じなければ、無駄時間を２秒減らせることに注目する。この点を踏まえて、加工完了までに必要な時間がどれくらい変化するかを検討してみると、２３秒必要であったのが、２１秒になっており２秒の無駄時間の削減を達成できることが図１１（Ｃ）の表のＴ１移動のケースから理解される。
【００６３】
同様のことを今度は、チャンネル３にのみ工具選択指令行Ｔ３があったとして検討してみる。（チャンネル１には工具選択指令行がないという仮定。）この工具選択に必要とする時間は１秒と仮定し、Ｔ３指令を▲１▼▲２▼の間に移動したとして検討する。この場合は、図１１（Ｃ）の表のＴ３移動のケースに示されるように、加工完了までに要する時間は、２４秒になり、当初２３秒であったのが１秒延びる結果になった。
【００６４】
更に、今度は、チャンネル１，３のそれぞれに工具選択指令行Ｔ１，Ｔ３のそれぞれがあった場合に、両者を移動するケースを検討する。この場合は、図１１（Ｃ）の表に示されるように、加工完了までに要する時間は、２２秒になり、１秒の短縮が図られることになる。
上述のように、工具選択指令を動かした場合に、無駄時間が減る場合、増える場合があることが図１１（Ｃ）の表から理解される。それぞれの場合毎に時間短縮効果を評価し、その結果に従い、加工時間を最短に出来るように工具選択指令行を移動させるというのが、この処理の目的である。
【００６５】
３．２．チャンネル１，３に対して処理対象の待ち合せ行番号Ａ，Ｂ，Ｃと工具選択指令行Ｔの取得処理の説明
次に、図１２に示される、チャンネル１，３に対して処理対象の待ち合せ行番号Ａ，Ｂ，Ｃと工具選択指令行Ｔの取得処理（図１１のＳｔｅｐ２）について、詳細に説明する。
【００６６】
処理が開始されると、まず、Ｓｔｅｐ１において、行番号Ａ，Ｂ，Ｃ及び工具選択指令行Ｔの読み込みを行う。次に、Ｓｔｅｐ２に進み、チャンネル1に対し、行Ｂ以降を検索し、最初に見つかった待ち合せ処理を行う行番号Ａ，Ｂ，Ｃを取得し、チャンネル３のそれに対応したＡ，Ｂ，Ｃも取得する。ただし、ここでの処理は、このＳｔｅｐ２を一回目に通過する時にはＡ，Ｂ，Ｃの全てが取得されることになるが、後述するように、２回目以降は、Ａ＝Ｂ、Ｂ＝Ｃが代入されることになるので、Ｃのみが新規に取得されることになる。
【００６７】
次にＳｔｅｐ３に進むと、待ち合せ行番号Ａ，Ｂ，Ｃの取得が成功したか否かの判定を行う。判定がＮ、つまり、取得できなかった場合には、これ以降の処理は必要が無いので、そのままリターンされて、図４のメインフローに処理が復帰する。一方、判定がＹであった場合には、Ｓｔｅｐ４に進み、待ち合せコードが有効なコードであるか否かを判定する。判定がＹである、つまり、工具選択指令行を動かしても良いと判定された場合には、そのままＳｔｅｐ５に進む。ここで、有効なコードとは、他チャンネルとの連携を持たない待ち合わせを意味する。Ｓｔｅｐ４は、工具選択指令行を移動させるにあたり、待ち合せ処理が、他のチャンネルとの連携を持つ待ち合せであるかを判定し、連携がある場合に工具選択指令行が移動されないようにするための判定である。ここで言う連携があるとは、例えば、チャンネル１がチャンネル３側の工具を使用したい場合に、両チャンネルが一時加工を停止している状態を作り、其の後にＮＣコードで指定されている動作を他チャンネルの工具にさせる時などである。
【００６８】
Ｓｔｅｐ５に進むと、次の工具選択指令行Ｔに対して処理を行うため、チャンネル１，３において行Ｂ、Ｃ間に存在している一番行番号の小さい工具選択指令行Ｔを取得する。Ｓｔｅｐ６に進むと、チャンネル１，３のどちらでも工具選択指令行Ｔが取得できなかったか否かを判定する。判定がＮ、つまり、工具選択指令行Ｔが取得できた場合には、そのまま、Ｓｔｅｐ７に進み、更に、Ｓｔｅｐ７にて、チャンネル１，３のどちらにおいても行Ｔは単独指令であるか否かを判定する。尚、単独指令とは、工具選択指令以外に、主軸回転数変更指令などの補機指令を含まない、純然な工具選択指令のみからなる指令の意味である。このように、単独指令であるか否かを判定するのは、工具選択指令のみであれば、それぞれの工具選択指令に対応した時間が、時間計測モジュールから与えられるが、その他の指令を含む行になっている場合には、その時間が不明であり、上述した無駄時間の計算が適切に行われない為である。
【００６９】
Ｓｔｅｐ７にて判定がＹ、つまり、工具選択指令が単独指令であった場合には、Ｓｔｅｐ８に進みチャンネル１，３のどちらにおいても行Ｂと工具選択指令行Ｔとの間に軸移動指令が存在するか否かの判定を行う。この判定を行うことによって、軸移動指令の意味が変化してしまうことを防止している。工具選択指令行Ｔの前にある軸移動指令は、この工具選択指令によって選択された工具に対しての軸移動指令ではなく、軸移動指令が為された時点で選択されていた工具に対してのものである。よって、軸移動指令をまたがって工具選択指令位置を変更してしまうと本来のＮＣプログラムの意味が変わってしまうことになる。この点を考慮する為にこの判定は為されているのである．
【００７０】
このＳｔｅｐ８での判定がＮ、つまり、軸移動指令が存在しない場合であれば、本ルーチンでの処理を終了して、図１１で示されるメインルーチンに処理が復帰する。
尚、Ｓｔｅｐ４での判定がＮ、Ｓｔｅｐ６での判定がＹ、Ｓｔｅｐ7での判定がＮ、Ｓｔｅｐ８での判定がＹのいずれかである場合には、Ｓｔｅｐ９にて行番号Ｂを行番号Ａに、行番号Ｃを行番号Ｂに置換してＳｔｅｐ２以降の処理を繰り返す。
【００７１】
３．３．工具選択指令位置を最適化する処理についての説明
次に、図１３に示される、チャンネル１，３に対して工具選択指令位置の最適化に伴い実行する評価処理について、詳細に説明する。
まず、図１２の処理によって得られた行番号Ａ，Ｂ，Ｃ及び工具選択指令行ＴをＳｔｅｐ１において読み込む。次に、Ｓｔｅｐ２において次のように定義される記号の各々の時間情報を時間計測モジュールから取得する。
【００７２】
チャンネル１
行Ａから行Ｂ間までの実行に要する時間：ＴｉｍｅＡＢ１
行Ｂから行Ｃ間までの実行に擁する時間：ＴｉｍｅＢＣ１
工具選択時間            ：ＴｉｍｅＴ１
チャンネル３
行Ａから行Ｂ間までの実行に要する時間：ＴｉｍｅＡＢ３
行Ｂから行Ｃ間までの実行に擁する時間：ＴｉｍｅＢＣ３
工具選択時間            ：ＴｉｍｅＴ３
＊  工具選択指令行が存在しない場合にはＴｉｍｅＴ１、ＴｉｍｅＴ３は０になる。
【００７３】
次にＳｔｅｐ３に進み、下記の数式に基づきＯｐｔｉ１（定義：チャンネル１側の工具選択指令のみを移動させた場合の最適度）を計算する。
0003904945.tif 000002
次にＳｔｅｐ４に進み、下記の数式に基づきＯｐｔｉ３（定義：チャンネル３側の工具選択指令のみを移動させた場合の最適度）を計算する。
0003904945.tif 000003
次にＳｔｅｐ５に進み、下記の数式に基づきＯｐｔｉ１３（定義：チャンネル１と３の工具選択指令を移動させた場合の最適度）を計算する。
0003904945.tif 000004
【００７４】
次に、Ｓｔｅｐ６に進み、最適度Ｏｐｔｉ１と最適度Ｏｐｔｉ３の比較を行う。判定がＹ、つまり、最適度Ｏｐｔｉ１が最適度Ｏｐｔｉ３よりも大きい場合には、Ｓｔｅｐ７に進み、更に、最適度Ｏｐｔｉ１と最適度Ｏｐｔｉ１３との比較を行う。ここでも判定がＹ、つまり、最適度Ｏｐｔｉ１が最適度Ｏｐｔｉ１３よりも大きい場合には、そのままＳｔｅｐ８に進み最適度Ｏｐｔｉ１が正か否かの判定を行う。ここでの判定がＹであった場合には、チャンネル１の工具選択指令行Ｔを行Ｂの直前行に移動する。このように直前行に移動することにより、上述した移動指令の前側に工具選択指令が移動して軸移動指令の意味合いが変化することを、工具選択指令が移動した後にあっても防止している。又Ｓｔｅｐ７において、判定がＮ、つまり、最適度Ｏｐｔｉ１３が最適度Ｏｐｔｉ１よりも大きい場合には、そのままＳｔｅｐ１１に進む。Ｓｔｅｐ１１にて最適度Ｏｐｔｉ１３の正負の判定を行い、判定がＮ、つまり、負であった場合には上述と同様の理由により、工具選択指令行の移動は行わず、処理を図１１のメインフローに復帰させる。又、判定がＹ、つまり正であった場合には、Ｓｔｅｐ１２に進みチャンネル１と３の工具選択指令行Ｔを行Ｂの直前行に移動する。尚、Ｓｔｅｐ８において最適度Ｏｐｔｉ１が負となる場合には無駄時間が延びる場合になるので、工具選択指令行の移動は行わず、処理を図Ｎｏ．１１のメインフローに復帰させる。
【００７５】
次に、Ｓｔｅｐ６において判定がＮ、つまり、最適度Ｏｐｔｉ３が最適度Ｏｐｔｉ１よりも大きい場合を説明する。この場合には、Ｓｔｅｐ１０に進み最適度Ｏｐｔｉ３を更に最適度Ｏｐｔｉ１３と比較し、ここでの判定がＮ、つまり最適度Ｏｐｔｉ１３が最大である場合には、Ｓｔｅｐ７での判定がＮとなった時と同様に、Ｓｔｅｐ１１以降の処理を行う。更に、Ｓｔｅｐ１０における判定がＹ、つまり、最適度Ｏｐｔｉ３が最大である場合には、更に、Ｓｔｅｐ１３にて最適度Ｏｐｔｉ３の正負の判定を行い、判定がＮ、つまり、負であった場合には上述と同様の理由により、工具選択指令行の移動は行わず、処理を図Ｎｏ．１１のメインフローに復帰させる。又、判定がＹ、つまり正であった場合には、Ｓｔｅｐ１４に進みチャンネル３の工具選択指令行Ｔを行Ｂの直前行に移動する。
【００７６】
４．１．ＳｔｅｐＦの処理についての説明
次に、図４のｓｔｅｐＦに示される工具選択動作の電子データ化への処理について、説明する。この処理におけるメインのルーチンは、図１４の通りである。処理が開始すると、まず、Ｓｔｅｐ１にて、行番号Ｂ＝０、ＣＨ＝１にするイニシャライズを行う。
【００７７】
次に、Ｓｔｅｐ２に進み、電子カムデータに変換する工具選択指令行Ｔ（請求項１第２のＳｔｅｐ相当）とそれを挟む待ち合せ行Ａ，Ｂを取得する。そのまま、Ｓｔｅｐ３に進み、工具選択指令行Ｔとこれを挟む待ち合せ行Ａ，Ｂが存在したか否かにつき判定する。判定がＹ、つまり、存在した場合には、続いてＳｔｅｐ４にて行番号Ａ，Ｂ，Ｔを読込、Ｓｔｅｐ５において、工具選択動作の電子カムデータ化処理を実行し、取得された行Ｂ以降の行に対して同様の操作を行うべくＳｔｅｐ２以降を繰り返す。又、Ｓｔｅｐ３での判定がＮ、つまり、存在しなかった場合には、Ｓｔｅｐ６に進み処理対象を次チャンネルに設定すべく、チャンネルＣＨを更新する。Ｓｔｅｐ３において、存在しなかったということは、もともと、そのチャンネルに設定されたＮＣプログラムには、電子カムデータへの変換に値する工具選択指令行Ｔが存在しなかった、あるいは、存在したが、行Ｂ以降の残り行にはなかったということであるため、処理対象を次のチャンネルに設定するのである。
【００７８】
更に、Ｓｔｅｐ７に進んで、ＣＨ＝４になったか否かについて判定する。ＣＨ＝４ではない場合には、Ｓｔｅｐ８に進み、行Ａ，Ｂ、工具選択指令行Ｔをイニシャライズし、Ｓｔｅｐ２以降を繰り返す。又、ＣＨ＝４であった場合には、全部のチャンネルのＮＣプログラムの検索が終了したので、図４のメインフローに処理が復帰する。
【００７９】
４．２．電子カムデータに変換する工具選択指令行Ｔとそれを挟む待ち合せ行Ａ，Ｂの取得処理についての説明
次に、図１５に示される、電子データに変換する工具選択指令行Ｔとそれを挟む待ち合せ行Ａ，Ｂを取得する処理を説明する。
【００８０】
まず、処理が開始されると、Ｓｔｅｐ１にて、行番号Ｂの読み込みが行われる。次に、Ｓｔｅｐ２にて、行番号Ｂ＋１以降で最初の工具選択単独指令行Ｔを取得する。次に、Ｓｔｅｐ３に進み、工具選択指令行Ｔの取得を成功したか否かの判定を行う。判定がＮ、つまり、工具選択指令行Ｔを取得できなかった場合には、そのまま図１４に示されるフローチャートに処理が移行する。又、Ｓｔｅｐ３にて判定がＹ、つまり、工具選択指令行Ｔの取得に成功した場合には、Ｓｔｅｐ４に進み工具選択指令行Ｔを挟む前後の待ち合せ行Ａ，Ｂの取得を行う。Ｓｔｅｐ５に進むと、待ち合せコードは有効なコードであるか否かの判定を行う。Ｓｔｅｐ５での判定がＮ、つまり、待ち合せコードが有効でない場合にはＳｔｅｐ２からの処理を改めて繰り返す。つまり、Ｘ１−Ｘ３同期など、チャンネル間での連携を持つように待ちあわせコードを設定している場合に、目的の処理を行うことで、その連携関係が損なわれてしまう処理が対象から除外されるようにしているものである。判定がＹ、つまり、待ち合せコードが有効な場合には、次に、Ｓｔｅｐ６に進み、待ち合わせをしている他のチャンネルと比較し、待ち合せ間が一番長い時間になっているか否かを判定し、判定がＹ、つまり、一番長い時間になっている場合には、Ｓｔｅｐ２からの処理を繰り返すべく処理をＳｔｅｐ２に戻す。一方、判定がＮ、つまり、一番長い時間になっていない場合には、Ｓｔｅｐ７に進み、工具選択指令行Ｔ、待ち合せ開始行Ａ，終了行Ｂの三者を記憶保持する。このように、一番長い時間になっているか否かを判定することによって、その工具選択指令行Ｔによる工具選択に対して実際に余裕時間として存在する時間が他チャンネル工具選択に比較し、余裕があるかないかを判定している。
【００８１】
次に、Ｓｔｅｐ８に進み、現在チャンネル３を処理中であるか否かを判定する。判定がＹ、つまり、チャンネル３を処理中である時には、更に、Ｓｔｅｐ９に進み、チャンネル１と待ち合せをしている場合であってチャンネル１側の工具選択が電子カムデータ化されているか否かを判定する。ここでの判定がＹ、つまり、チャンネル1側の工具選択が電子カムデータ化されている場合には、Ｓｔｅｐ１０に進み、Ｓｔｅｐ７にて記憶保持した工具選択指令行Ｔ、待ち合せ開始行Ａ，終了行Ｂの三者の記憶保持をキャンセルし、「存在しない」の側で処理を終了し、図１４に示されるメインフローへ処理を復帰させる。つまり、チャンネル１とチャンネル３で同時に工具選択動作をさせることは希であり、又、両者を電子カムデータすることは非常に処理が複雑になり好ましくない。このため、既に、一方が電子カムデータされている場合には、処理の異常の発生を招かないためにも他方の電子カムデータ化は行わないようにしている。一方、Ｓｔｅｐ９における判定がＮ、つまり、チャンネル１側の工具選択が電子カムデータ化されていない場合には、上述した不具合は生じないのでＳｔｅｐ７にて取得したＡ，Ｂ，Ｔを保持し図に示される「存在する」の側で処理を終了し図１４に示されるメインフローに処理を復帰させる。当然ながら、Ｓｔｅｐ８にて判定がＮ、つまり、チャンネル３の処理中ではない場合であれば、少なくともチャンネル１側で行Ａ，Ｂ，Ｔが取得されているので、「存在する」の側で処理を終了し図１４に示されるメインフローに処理を復帰させる。
【００８２】
４．３．工具選択動作の電子カムデータ化処理の説明
次に、図１６に示される、工具選択動作の電子カムデータ化の処理を説明する。まず、処理が開始されると、Ｓｔｅｐ１にて工具選択指令行Ｔ、待ち合せ開始行Ａ，終了行Ｂの読み込みを行う。続いて、Ｓｔｅｐ２に進み，他のチャンネルの一番長い待ち合せ間の時間との差ΔＴを演算する。Ｓｔｅｐ３に進んで、待ち合せ行Ａ，Ｂ間に含まれる工具選択単独指令行とその選択時間を全て読み込まれているＮＣプログラムファイル及び時間計測モジュールから読み込む。次に、Ｓｔｅｐ４に進んでΔＴを選択時間の長さの比で分配する。次に、Ｓｔｅｐ５に進み、工具選択動作を分配された時間分ゆっくりと動作するような電子カムデータに変換する。次に、Ｓｔｅｐ６に進み、処理が完了した行番号Ｂを記憶保持し、もとのフローに処理が復帰する。
【００８３】
このようにすることで、先に演算した工具選択指令毎に得られる余裕時間を、工具選択時間の比率に応じて工具選択時間として割り当てる。通常ＮＣコード等によって指定される工具選択では、この時間が与えられたところで、工具選択は素早く移動される結果、時間を余らせるように実行されるが、本実施例では余裕時間を含み、割り当てられた時間全部を利用して工具選択が行われる為、工具選択そのものはＮＣコードを利用して行われるものと比較してゆっくりと為されることになる。その結果として、刃物台送り軸、あるいは、それを含む各回転部を支持する軸受け（ボールベアリングなど）に対してショック荷重などの入力が防止される。この結果、軸、ボールベアリングなどの寿命を延長させることが可能となり、加工部品の精度も上がる。
【００８４】
一方、更に、具体的には、上記Ｓｔｅｐ５において、工具の選択動作を、加工終了に伴う退避は早くし、工具の選択位置までへの移動などはゆっくりするように、動作毎で工具選択動作の速度を変更すると更に良い。これは、待避動作のみを従来と同様にしておくことにより、工具が主軸などと干渉する危険をＮＣコード等によって指令される工具選択動作と同じ程度までに軽減するためである。
以上の実施例の中では、数値制御工作機械における数値制御部に記憶されるプログラムファイルを一旦編集して、その後、ＮＣ部用ＲＡＭに記憶させるようにしたが、ＮＣ部用ＲＡＭからＣＰＵがＮＣプログラムを読み出す段階において、読み出しと同時に上述した処理を実行してもよい。この場合は、ＮＣプログラムを適宜先読みして解釈を行い上述の処理を行った上で数値制御工作機械を動作させると良い。
【００８５】
【発明の効果】
本発明によれば、ワークあるいは工具をエキスパートのＮＣプログラム作成者が作ったものと同等若しくは、それ以上のものが容易に得られ、ワーク、工具などを最適に動作させることが出来る。又、更に、具体的には、実用的な効果として、ワークの加工時間の短縮、加工部品の単価の低減、加工部品の精度向上、若しくは、機械寿命の延長など優れた効果が得られるものである。
【００８６】
【図面の簡単な説明】
【図１】本発明の実施形態に係る数値制御工作機械の構成を示すブロック図である。
【図２】本発明の実施形態に係る数値制御工作機械のチャンネル構成を示す図である。
【図３】制御ユニット部のＲＡＭに含まれる電子カムデータテーブルの構成を説明する為の図である。
【図４】本発明が含まれる制御プログラムのメインのフローチャートである。
【図５】（Ａ）は、図４における同期加工の電子データ化の処理のメインとなるフローチャートである。（Ｂ）は、本発明の実施形態に係る工作機械における、被加工物の加工動作の一例を説明する為の図である。（Ｃ）は、（Ｂ）におけるＡ部の拡大図である。
【図６】図５における、同期加工の電子カムデータに変換する箇所を検索する処理を説明するフローチャートである。
【図７】図５における行Ａ、Ｂ間を電子カムデータ化する処理を説明するフローチャートである。
【図８】図４における同期加工による電子カムデータに変換する箇所以外の電子カムデータ化処理を説明するメインのフローチャートである。
【図９】図８における、同期加工以外の電子カムデータに変換する箇所を検索する処理を説明するフローチャートである。
【図１０】図８における、同期加工以外の箇所の電子カムデータ化の処理を説明するフローチャートである。
【図１１】（Ａ）は、図４における、工具選択指令位置の最適化処理を説明するメインのフローチャートである。（Ｂ）は、この処理を適用して意味のある具体例を示す図である。（Ｃ）は、（Ｂ）の例の結果を示す表である。
【図１２】図１１における、チャンネル１，３に対して処理対象の待ち合せ行番号Ａ，Ｂ，Ｃと工具選択指令行Ｔを取得する処理を説明するフローチャートである。
【図１３】図１１における、工具選択指令位置を最適化する処理を説明するフローチャートである。
【図１４】図４における、工具選択動作の電子カムデータ化の処理を説明するフローチャートである。
【図１５】図１４における、電子カムデータに変換する工具選択指令行Ｔとそれを挟む待ち合せ処理行Ａ，Ｂを取得する処理を説明するフローチャートである。
【図１６】図１４における、工具選択動作の電子カムデータ化の処理を説明するフローチャートである。
【符号の説明】
１…数値制御工作機械、５１…制御ユニット部、５２…中央演算ユニット、５６…ＮＣ部用ＲＡＭ、５６ａ…第１のチャンネル加工手順記憶部、５６ｂ…第２のチャンネル加工手順記憶部、５６ｃ…第３のチャンネル加工手順記憶部、５６ｄ…電子カムデータテーブル、５７…ＲＯＭ、５８…ＰＣ部用ＲＡＭ ５８ａ…最適データ変換プログラム記憶部 ５８ｂ…電子カムデータテーブル ５８ｃ…機械固有情報記憶部 ５８ｄ…ＮＣプログラム記憶部  ５９…トランスフォーマボタン。
【図１】
0003904945.tif 000005
【図２】
0003904945.tif 000006
【図３】
0003904945.tif 000007
【図４】
0003904945.tif 000008
【図５】
0003904945.tif 000009
【図６】
0003904945.tif 000010
【図７】
0003904945.tif 000011
【図８】
0003904945.tif 000012
【図９】
0003904945.tif 000013
【図１０】
0003904945.tif 000014
【図１１】
0003904945.tif 000015
【図１２】
0003904945.tif 000016
【図１３】
0003904945.tif 000017
【図１４】
0003904945.tif 000018
【図１５】
0003904945.tif 000019
【図１６】
0003904945.tif 000020