(57)【要約】【課題】工具マガジンの切替回数が最小となる工具配置を確実に算出できる工具配置算出装置、工具配置算出装置の制御プログラムおよび記憶媒体を提供する。【解決手段】数値制御装置のＣＰＵは、ＮＣプログラムから工具交換指令を読み込み、工具Ｔの使用順番Ｌを記憶する（Ｓ１１、Ｓ１２）。使用順番Ｌにおいて、ＮＣプログラムの工具の使用順で単発工具が連続する単発工具連続箇所Ｍｉを記憶する（Ｓ１５）。単発工具連続箇所Ｍｉを１本の工具とみなし、順列Ｗの全ての組合せを生成する（Ｓ１７）。各順列Ｗを工具配置Ｑに変換し、切替回数Ｒを算出する（Ｓ１８，Ｓ１９）。それ故、切替回数Ｒの計算に係る処理量は格段に減少するので、切替回数Ｒの最も少ない最適工具配置を確実に算出できる。【選択図】図６
2012011492.tif 000002
【特許請求の範囲】
【請求項１】
工作機械の工具交換装置に回転割り出し可能に設け、正転又は反転する略円盤状の工具マガジンの外周に設けた複数のポットに各々配置する複数の工具の配置を算出する工具配置算出装置であって、
前記工作機械の加工プログラムから工具交換指令を読み込む工具交換指令読込手段と、
当該工具交換指令読込手段が読み込んだ前記工具交換指令に基づき、前記加工プログラムで使用される使用工具の使用順を特定する使用順特定手段と、
当該使用順特定手段が特定した前記使用順において、１回のみ使用する単発工具が連続して並ぶ配列箇所を抽出する配列箇所抽出手段と、
前記配列箇所抽出手段が抽出した前記配列箇所を１本の工具とみなして、前記加工プログラムで使用される工具を一列に並べて得られる順列を生成する順列生成手段と、
当該順列生成手段が算出した前記順列において、前記配列箇所を前記単発工具の配列に戻した状態で、前記使用順に工具を使用した場合に、前記ポットの切り替えに必要な切替回数を計数する切替回数計数手段と、
当該切替回数計数手段によって前記順列毎に計数された複数の前記切替回数の中から、最も少ない切替回数である最小回数を特定する最小回数特定手段と、
当該最小回数特定手段によって特定した前記最小回数に対応する前記順列に基づき、前記ポットに工具を並べた場合の工具配置の情報である配置情報を出力する配置情報出力手段と
を備えたことを特徴とする工具配置算出装置。
【請求項２】
前記切替回数計数手段は、
前記順列生成手段が算出した前記順列において、前記配列箇所を前記単発工具の使用順である元の配列に戻した状態で、前記使用順に工具を使用した場合に、前記ポットの切り替えに必要な切替回数を、前記順列毎に計数することを特徴とする請求項１に記載の工具配置算出装置。
【請求項３】
工作機械の工具交換装置に回転割り出し可能に設け、正転又は反転する略円盤状の工具マガジンの外周に設けた複数のポットに各々配置する複数の工具の配置を算出する工具配置算出装置の動作を制御する工具配置算出プログラムであって、
コンピュータに、
前記工作機械の加工プログラムから工具交換指令を読み込む工具交換指令読込ステップと、
当該工具交換指令読込ステップにおいて読み込んだ前記工具交換指令に基づき、前記加工プログラムで使用される使用工具の使用順を特定する使用順特定ステップと、
当該使用順特定ステップにおいて特定した前記使用順において、１回のみ使用する単発工具が連続して並ぶ配列箇所を抽出する配列箇所抽出ステップと、
前記配列箇所抽出ステップにおいて抽出した前記配列箇所を１本の工具とみなして、前記加工プログラムで使用される工具を一列に並べて得られる順列を生成する順列算出ステップと、
当該順列算出ステップにおいて算出した前記順列において、前記配列箇所を前記単発工具の配列に戻した状態で、前記使用順に工具を使用した場合に、前記ポットの切り替えに必要な切替回数を計数する切替回数計数ステップと、
当該切替回数計数ステップにおいて前記順列毎に計数された複数の前記切替回数の中から、最も少ない切替回数である最小回数を特定する最小回数特定ステップと、
当該最小回数特定ステップにおいて特定した前記最小回数に対応する前記順列に基づき、前記ポットに工具を並べた場合の工具配置の情報である配置情報を出力する配置情報出力ステップと
を実行させることを特徴とする工具配置算出プログラム。
【請求項４】
請求項３に記載の工具配置算出プログラムを記憶したことを特徴とするコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タレット式の工具マガジンにおける工具の配置を算出できる工具配置算出装置、工具配置算出プログラムおよび記憶媒体に関する。
【背景技術】
【０００２】
従来、工具交換装置はタレット式の工具マガジンを備えている。工具マガジンは、外周上に、工具を装着する複数のポットを備えている。ＮＣプログラム中の工具交換指令は、特定のポット番号の工具への交換を指令する。特定のポット番号の工具は、工具マガジンの旋回により、所定の工具交換位置に位置する。工具交換装置は、工作機械の主軸に装着した現工具を、工具交換位置に位置する次工具に交換する。例えば、工具交換装置は、工具マガジンが１４本のポットを備える場合、現在主軸に装着している現工具がポット番号１で、次工具がポット番号８であれば、工具マガジンを７回旋回して位置を切り替える。工具マガジンを旋回して位置を切り替えた後のポット番号８の工具は、工具交換位置に位置する。作業者は、ポットを切り替える回数（以下、切替回数と呼ぶ）が最小となるように、工具マガジンにおける工具配置を行う。それ故、工具交換時間は短縮する。
【０００３】
特許文献１が開示している方法は、ＮＣプログラム中に指令される工具交換指令を読み取り、最も多い工具交換の組合せの工具を優先的に隣のポットに並べ、残りの工具をＮＣプログラム中の指令順に並べるものである。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−２６９６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の算出方法は、工具配置の全パターンの全組合せを考慮していない。それ故、プログラム中の工具使用順序によっては、切替回数が最小となる工具配置を算出できない場合があった。
【０００６】
本発明は、上記課題を解決するためになされたものであり、工具マガジンの切替回数が最小となる工具配置を確実に算出できる工具配置算出装置、工具配置算出装置の制御プログラムおよび記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１態様に係る工具配置算出装置は、工作機械の工具交換装置に回転割り出し可能に設け、正転又は反転する略円盤状の工具マガジンの外周に設けた複数のポットに各々配置する複数の工具の配置を算出する工具配置算出装置であって、前記工作機械の加工プログラムから工具交換指令を読み込む工具交換指令読込手段と、当該工具交換指令読込手段が読み込んだ前記工具交換指令に基づき、前記加工プログラムで使用される使用工具の使用順を特定する使用順特定手段と、当該使用順特定手段が特定した前記使用順において、１回のみ使用する単発工具が連続して並ぶ配列箇所を抽出する配列箇所抽出手段と、前記配列箇所抽出手段が抽出した前記配列箇所を１本の工具とみなして、前記加工プログラムで使用される工具を一列に並べて得られる順列を生成する順列生成手段と、当該順列生成手段が算出した前記順列において、前記配列箇所を前記単発工具の配列に戻した状態で、前記使用順に工具を使用した場合に、前記ポットの切り替えに必要な切替回数を計数する切替回数計数手段と、当該切替回数計数手段によって前記順列毎に計数された複数の前記切替回数の中から、最も少ない切替回数である最小回数を特定する最小回数特定手段と、当該最小回数特定手段によって特定した前記最小回数に対応する前記順列に基づき、前記ポットに工具を並べた場合の工具配置の情報である配置情報を出力する配置情報出力手段とを備えている。
【０００８】
第１態様では、工具交換指令読込手段は、工作機械の加工プログラムから工具交換指令を読み込む。使用順特定手段は、工具交換指令読込手段が読み込んだ工具交換指令に基づき、加工プログラムで使用される使用工具の使用順を特定する。配列箇所抽出手段は、使用順特定手段が特定した使用順において、１回のみ使用する単発工具が連続して並ぶ配列箇所を抽出する。順列生成手段は、配列箇所抽出手段が抽出した配列箇所を１本の工具とみなして、加工プログラムで使用される工具を一列に並べて得られる順列を生成する。切替回数計数手段は、順列生成手段が算出した順列において、配列箇所を単発工具の配列に戻した状態で、使用順に工具を使用した場合に、ポットの切り替えに必要な切替回数を計数する。最小回数特定手段は、切替回数計数手段によって順列毎に計数された複数の切替回数の中から、最も少ない切替回数である最小回数を特定する。配置情報出力手段は、最小回数特定手段によって特定した最小回数に対応する順列に基づき、ポットに工具を並べた場合の工具配置の情報である配置情報を出力する。配列箇所抽出手段が抽出する抽出箇所は、加工プログラムの工具の使用順で単発工具が連続して並ぶ箇所である。抽出箇所では単発工具を使用順に並べれば、ポット切替回数は最小となる。それ故、抽出箇所を１本の工具とみなして、加工プログラムで使用する工具を一列に並べて得られる順列を生成する。全ての工具の順列を生成する場合に比べて順列の組合せを少なくできるので、算出量を軽減できる。順列毎に計数した複数の切替回数の中から最小回数を特定するので、工具マガジンの旋回回数が最小となる工具の配置を確実に算出できる。工具配置に関する配置情報を出力できるので、作業者は出力された配置情報を元に、工具の配置を行うことができる。
【０００９】
また、第１態様において、前記切替回数計数手段は、前記順列生成手段が算出した前記順列において、前記配列箇所を前記単発工具の使用順である元の配列に戻した状態で、前記使用順に工具を使用した場合に、前記ポットの切り替えに必要な切替回数を、前記順列毎に計数してもよい。それ故、ポットの切替回数の計算に係る処理量を最も少なくできる。
【００１０】
本発明の第２態様に係る工具配置算出プログラムは、工作機械の工具交換装置に回転割り出し可能に設け、正転又は反転する略円盤状の工具マガジンの外周に設けた複数のポットに各々配置する複数の工具の配置を算出する工具配置算出装置の動作を制御する工具配置算出プログラムであって、コンピュータに、前記工作機械の加工プログラムから工具交換指令を読み込む工具交換指令読込ステップと、当該工具交換指令読込ステップにおいて読み込んだ前記工具交換指令に基づき、前記加工プログラムで使用される使用工具の使用順を特定する使用順特定ステップと、当該使用順特定ステップにおいて特定した前記使用順において、１回のみ使用する単発工具が連続して並ぶ配列箇所を抽出する配列箇所抽出ステップと、前記配列箇所抽出ステップにおいて抽出した前記配列箇所を１本の工具とみなして、前記加工プログラムで使用される工具を一列に並べて得られる順列を生成する順列算出ステップと、当該順列算出ステップにおいて算出した前記順列において、前記配列箇所を前記単発工具の配列に戻した状態で、前記使用順に工具を使用した場合に、前記ポットの切り替えに必要な切替回数を計数する切替回数計数ステップと、当該切替回数計数ステップにおいて前記順列毎に計数された複数の前記切替回数の中から、最も少ない切替回数である最小回数を特定する最小回数特定ステップと、当該最小回数特定ステップにおいて特定した前記最小回数に対応する前記順列に基づき、前記ポットに工具を並べた場合の工具配置の情報である配置情報を出力する配置情報出力ステップとを実行させることを特徴とする。
【００１１】
第２態様は、コンピュータが実行する工具配置算出プログラムである。工具交換指令読込ステップにおいて、工作機械の加工プログラムから工具交換指令を読み込む。使用順特定ステップにおいて、工具交換指令読込ステップにおいて読み込んだ工具交換指令に基づき、加工プログラムで使用される使用工具の使用順を特定する。順列算出ステップにおいて、配列箇所抽出ステップにおいて抽出した配列箇所を１本の工具とみなして、加工プログラムで使用される工具を一列に並べて得られる順列を生成する。切替回数計数ステップにおいて、順列算出ステップにおいて算出した順列において、配列箇所を単発工具の配列に戻した状態で、使用順に工具を使用した場合に、ポットの切り替えに必要な切替回数を計数する。最小回数特定ステップにおいて、切替回数計数ステップにおいて順列毎に計数された複数の切替回数の中から、最も少ない切替回数である最小回数を特定する。配置情報出力ステップにおいて、最小回数特定ステップにおいて特定した最小回数に対応する順列に基づき、ポットに工具を並べた場合の工具配置の情報である配置情報を出力する。配列箇所抽出ステップにおいて抽出する抽出箇所は、加工プログラムの工具の使用順で単発工具が連続して並ぶ箇所である。抽出箇所では単発工具を使用順に並べれば、ポット切替回数は最小となる。それ故、抽出箇所を１本の工具とみなして、加工プログラムで使用する工具を一列に並べて得られる順列を生成する。全ての工具の順列を生成する場合に比べて順列の組合せを少なくできるので、算出量を軽減できる。順列毎に計数した複数の切替回数の中から最小回数を特定するので、工具マガジンの旋回回数が最小となる工具の配置を確実に算出できる。工具配置に関する配置情報を出力できるので、作業者は出力された配置情報を元に、工具の配置を行うことができる。
【００１２】
本発明の第３態様に係る記憶媒体は、コンピュータ読み取り可能であって、請求項３に記載の工具配置算出プログラムを記憶したことを特徴とする。
【００１３】
第３態様は、請求項３に記載の制御プログラムを記憶しているので、請求項３に記載の効果を得ることができる。
【図面の簡単な説明】
【００１４】
【図１】工作機械１の正面図である。
【図２】スプラッシュカバー４を取り外した工作機械１の斜視図である。
【図３】工具マガジン３１を正面から見た略図である。
【図４】数値制御装置２０の電気的構成を示したブロック図である。
【図５】ＮＣプログラムの一例を示した図である。
【図６】工具配置算出処理のメインのフローチャートである。
【図７】切替回数算出処理のフローチャートである。
【図８】ディスプレイ１１に表示した工具配置表５０を示した図である。
【発明を実施するための形態】
【００１５】
以下、本発明に係る工具配置算出装置の一実施形態について、図面を参照して説明する。本実施形態の数値制御装置２０（図４参照）は、ＮＣプログラムに従い、工作機械１（図１参照）の動作を制御する。ＮＣプログラムは、ＮＣコマンドを配列した加工プログラムである。工作機械１は、ワークと工具の相対移動により、ワークを切削する機械である。
【００１６】
工作機械１の構造について簡単に説明する。図１に示すように、工作機械１は、鉄製のベース２と、該ベース２の上部に位置し、ワークを切削する機械本体３（図２参照）と、該機械本体３の上部に位置し、機械本体３の主軸（図示省略）に装着する工具Ｔの交換を行う工具交換装置３０（図２参照）と、前記機械本体３及び工具交換装置３０の周囲を取り囲むスプラッシュカバー４とを備えている。
【００１７】
スプラッシュカバー４は、正面に開口５を備えている。開口５は、開閉扉６を備えている。工作機械１を操作する操作パネル１０は、開口５の右側に位置する。操作パネル１０は、上部にディスプレイ１１、下部にキーボード１２を備えている。ディスプレイ１１は、操作画面、設定画面、後述する工具配置表５０（図８参照）等の各種画面を表示する。作業者は、ディスプレイ１１に表示した画面を確認しつつ、キーボード１２によって、各種入力、設定、作業等を行う。
【００１８】
機械本体３の構成について簡単に説明する。図２に示すように、機械本体３は、角柱状のコラム１５と、主軸ヘッド（図示省略）と、主軸（図示省略）と、テーブル１９とを備えている。コラム１５は、ベース２の上部後方に立設する。主軸ヘッドは、コラム１５の前面に沿って昇降する。主軸ヘッドは、Ｚ軸モータ５３（図４参照）の駆動により、Ｚ軸方向に移動する。主軸は、主軸ヘッドの下部に設けてある。主軸は、工具Ｔを装着する装着穴（図示省略）を有し、主軸モータ５４（図４参照）の駆動により回転する。テーブル１９は、ベース２の上部中央に設けてある。テーブル１９は、Ｘ軸モータ５１（図４参照）、Ｙ軸モータ５２（図４参照）、ガイド機構（図示省略）によって、ＸＹ軸方向に移動する。Ｘ軸方向は、図１の左右方向である。Ｙ軸方向は、図１の紙面に直行する方向である。Ｚ軸方向は、図１の上下方向である。数値制御装置２０は、コラム１５の背面側に位置する制御箱（図示省略）に格納している。
【００１９】
工具交換装置３０の構成について説明する。図２、図３に示すように、工具交換装置３０は、タレット式の工具マガジン３１を備えている。工具マガジン３１は円盤状である。工具マガジン３１は、マガジンモータ５５（図４参照）の駆動により、軸周りに旋回する。図３に示すように、工具マガジン３１は、外周上に２１個のポットＰ１〜Ｐ２１を周方向（正面視時計回り）に備えている。作業者は、ポットＰ１〜Ｐ２１に工具Ｔを着脱する。Ｐ１〜Ｐ２１は、ポット番号を示している。工具マガジン３１の最下部に位置するポットＰの位置は、工作機械１の主軸との間で工具交換を行う「工具交換位置」に相当する。図３に示す例では、工具交換位置は、ポットＰ１２の位置である。
【００２０】
工具マガジン３１は、正転（正面視時計回り）、反転（正面視反時計回り）が可能である。正転、反転は、主軸に現在装着している現工具のポットＰと、次に工具交換して主軸に装着する次工具のポットＰとの相対的な位置関係で決まる。数値制御装置２０は、工具マガジン３１が、現工具のポットＰから次工具のポットＰまでの工具マガジン３１の切替回数が少ない方に旋回するように制御する。
【００２１】
工具マガジン３１の旋回動作について簡単に説明する。数値制御装置２０のＣＰＵ２１（図４参照）は、ＮＣプログラム中に工具交換指令のコマンド（Ｍ０６指令）があった場合、交換対象である次工具ＴのポットＰの位置を割り出す。現工具のポットＰは、工具交換位置にある。ＣＰＵ２１は、次工具のポットＰを現在位置から工具交換位置に搬送するまでに必要な工具マガジン３１の切替回数を算出する。工具交換装置３０は、現工具Ｔを主軸から取り外す。工具マガジン３１は、マガジンモータ５５の駆動によりＣＰＵ２１が算出した切替回数だけ旋回する。ポットＰに装着する次工具Ｔは工具交換位置に位置する。工具交換装置３０は、次工具Ｔを主軸に装着する。
【００２２】
切替回数の数え方は、工具マガジン３１のポットＰの位置を、隣のポットＰの位置に切り替える回数（以下、「切替回数」という）を「１回」とする。例えば、図３において、ポットＰ１の工具Ｔを、ポットＰ４の工具Ｔに切り替える場合に必要な切替回数は「３回」である。
【００２３】
作業者は、ポットＰ１〜Ｐ２１の全てに工具Ｔを装着してもよいが、全ポット数に比べて工具数が少ない場合は、空のポットＰを設けてもよい。ポットＰの切替回数を少なくするには、工具Ｔと工具Ｔとの間は詰めた方が好ましい。
【００２４】
次に、数値制御装置２０の電気的構成について、図４を参照して説明する。数値制御装置２０は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３及びフラッシュメモリ２４を有するマイクロコンピュータと、入力インタフェイス２５と、入出力インタフェイス２６とを備えている。入力インタフェイス２５は、操作パネル１０のキーボード１２に接続している。
【００２５】
入出力インタフェイス２６は、Ｘ軸モータ５１を駆動する駆動回路４１と、Ｙ軸モータ５２を駆動する駆動回路４２と、Ｚ軸モータ５３を駆動する駆動回路４３と、主軸モータ５４を駆動する駆動回路４４と、マガジンモータ５５を駆動する駆動回路４５と、操作パネル１０のディスプレイ１１を駆動する駆動回路４６等に接続している。Ｘ軸モータ５１及びＹ軸モータ５２の駆動は、テーブル１９をＸ軸方向及びＹ軸方向に移動する。Ｚ軸モータ５３の駆動は、主軸ヘッド（図示省略）をＺ軸方向に移動する。
【００２６】
Ｘ軸モータ５１、Ｙ軸モータ５２、Ｚ軸モータ５３、主軸モータ５４、マガジンモータ５５は、それぞれモータの位置を検出するエンコーダ（図示省略）を備えている。各エンコーダは、各駆動回路４１、４２、４３、４４、４５に接続している。
【００２７】
次に、ＣＰＵ２１による工具配置算出処理について、図６、図７のフローチャートを参照して説明する。本実施形態は、図５に示すＮＣプログラムを実行する場合に、工具マガジン３１の切替回数が最も少ない最適工具配置（Ｑｏｐｔ）を算出する。図５に示すＮＣプログラムは、２１本の工具Ｔを２９回のステップで順次交換するものである。図５に示すＮＣプログラムは、説明の便宜上、途中の切削加工のコマンドについては省略している。
【００２８】
本処理は、作業者が、ディスプレイ１１に表示した工具配置計算ボタン（図示省略）を選択すると、ＣＰＵ２１が、ＲＯＭ２２（図４参照）に記憶した工具配置算出プログラム（本発明の「工具配置算出プログラム」に相当）を読み込むことで開始する。
【００２９】
ＣＰＵ２１は、フラッシュメモリ２４に記憶したＮＣプログラム（図５参照）から工具交換指令を読み込む（Ｓ１１）。工具交換指令は「Ｍ０６」である。ＣＰＵ２１は、読み込んだ工具交換指令に基づき、ＮＣプログラムで使用される使用工具の使用順番Ｌを特定し、ＲＡＭ２３に記憶する。（Ｓ１２）。図５に示すＮＣプログラムの例では、工具交換指令のコマンドを含むブロックは２９個である。それ故、使用順番Ｌの情報は、ＮＣプログラムを構成する２９のブロックで、２１本の工具Ｔを使用する順番の情報である。
【００３０】
ＣＰＵ２１は、使用順番Ｌにおいて、各工具Ｔの使用回数を計数し、ＲＡＭ２３（図４参照）に記憶する（Ｓ１３）。図５に示すＮＣプログラムの例では、各工具Ｔの使用回数は以下の通りである。
・Ｔ１・・・２回
・Ｔ２・・・４回
・Ｔ５・・・３回
・Ｔ６・・・３回
・Ｔ３、Ｔ４、Ｔ７、Ｔ８、Ｔ９〜Ｔ２１・・・１回
【００３１】
ＣＰＵ２１は、使用順番Ｌにおいて、１回のみ使用する「単発工具」が連続する箇所（以下、単発工具連続箇所Ｍｉと呼ぶ）を抽出し、記憶する（Ｓ１５）。図５に示すＮＣプログラムの例では、単発工具連続箇所Ｍｉは、以下の４箇所である。ｉは、１〜Ｎの整数である。本実施形態では、Ｎ＝４である。括弧内は工具番号を示す。
・箇所Ａ｛３，４｝
・箇所Ｂ｛７，８｝
・箇所Ｃ｛９，１０，１１，１２，１３，１４，１５，１６｝
・箇所Ｄ｛１７，１８，１９，２０，２１｝
【００３２】
ＣＰＵ２１は、使用順番Ｌにおいて、単発工具連続箇所Ｍｉに含まれない工具Ｔｊを抽出し、ＲＡＭ２３に記憶する（Ｓ１６）。図５に示すＮＣプログラムの例では、Ｔ１，Ｔ２，Ｔ５，Ｔ６の４本である。ｊは、１〜Ｕの整数である。本実施形態では、Ｕ＝４である。
【００３３】
ＣＰＵ２１は、順列Ｗを生成する（Ｓ１７）。順列Ｗは、単発工具連続箇所Ｍｉを１本の工具とみなして、ＮＣプログラムで使用する工具を一列に並べて生成する。ＲＡＭ２３に記憶している単発工具連続箇所Ｍｉは、箇所Ａ〜Ｄの４カ所である。本実施形態では、箇所Ａ〜Ｄを仮想工具Ａ〜Ｄとみなし、Ｔ１，Ｔ２，Ｔ５，Ｔ６を仮想工具Ｅ〜Ｈとみなす。ＣＰＵ２１は、８本の仮想工具Ａ〜Ｈの順列Ｗの全組合せを生成する。
【００３４】
８本の仮想工具の全組合せは、８！＝４０，３２０通りである。単発工具連続箇所Ｍｉを１本の工具とみなさずに計算した場合には、２１本の工具の順列Ｗの全組合せを生成する必要がある。２１本の工具の順列Ｗの全組合せは、２１！≒５×１０１９通りである。２１本の工具の順列Ｗの全組合せで後述する切替回数を計算する場合、処理量が膨大になるので、処理時間は長くなる。本実施形態は、単発工具連続箇所Ｍｉを１本の工具とみなして使用する工具Ｔの順列Ｗを生成し、各順列Ｗを工具配置Ｑに変換した状態で、切替回数を計算する。それ故、切替回数の計算に係る処理量は格段に減少する。
【００３５】
ＣＰＵ２１は、切替回数算出処理を実行する（Ｓ１８）。切替回数算出処理は、生成した順列Ｗに従って工具Ｔを配置した場合において、各工具Ｔを使用順番Ｌで使用するときに必要なポットＰの切替回数Ｒを算出する。
【００３６】
切替回数算出処理について、図７のフローチャートを参照して説明する。ＣＰＵ２１は、順列Ｗを工具配置Ｑに変換する（Ｓ３１）。ＣＰＵ２１は、順列Ｗにおいて１本の仮想工具とみなした単発配列箇所Ａ〜Ｄを、単発工具の配列に戻す。単発配列箇所Ａ〜Ｄにおける単発工具の順番は、ＲＡＭ２３に記憶した使用順番Ｌに従う。単発配列箇所Ａ〜Ｄでは、単発工具が連続している。それ故、単発工具の配列は、使用順番Ｌに従えば、ポットＰを隣りの位置に順次切り替えるだけであるので、切替回数を最小にできる。
【００３７】
例えば、順列Ｗ１＝ＡＢＣＤＥＦＧＨの工具配置Ｑ１は、以下のようになる。括弧内は工具番号を示す。
・Ｑ１：｛３，４，７，８，９，１０，１１，１２，１３，１４，１５，１６，１７，１８，１９，２０，２１，１，２，５，６｝
【００３８】
ＣＰＵ２１は、最後に使用する工具Ｔのポット番号（以下、Ｐｂｅｆと呼ぶ）と、最初に使用する工具Ｔのポット番号（以下、Ｐａｆｔと呼ぶ）とを、ＲＡＭ２３にそれぞれ記憶する（Ｓ３２）。図５に示すＮＣプログラムでは、最後に使用する工具Ｔの番号は２１番である。上述の工具配置Ｑ１では、２１番の工具Ｔは、最初から１７番目であるので、ポットＰの番号は１７番である。それ故、Ｐｂｅｆは、「１７」となる。最初に使用する工具Ｔの番号は１番である。上述の工具配置Ｑ１では、１番の工具Ｔは、最初から１８番目であるので、ポットＰの番号は１８番である。それ故、Ｐａｆｔは、「１８」となる。
【００３９】
ＣＰＵ２１は、ＰｂｅｆとＰａｆｔとの差の絶対値を算出し、切替回数ＣＨＧとして、ＲＡＭ２３に記憶する（Ｓ３３）。Ｐｂｅｆは「１７」、Ｐａｆｔは「１８」であるので、１７と１８との差の絶対値は１である。それ故、切替回数ＣＨＧは１である。
【００４０】
ＣＰＵ２１は、切替回数ＣＨＧが（全ポット数／２）＋１以上であるか否かを判断する（Ｓ３４）。工具マガジン３１の全ポット数は２１個である。本処理は、工具マガジン３１の位置を切り替える場合に、工具マガジン３１を正転するか、反転するかを決定する。工具マガジン３１の全ポット数が２１個である場合は、（全ポット数／２）＋１≒１１である。小数点以下は切り捨てる。切替回数ＣＨＧが１である場合は、１１未満であるので（Ｓ３４：ＮＯ）、ＣＰＵ２１は、算出した切替回数ＣＨＧを切替回数Ｒに設定し、Ｐｂｅｆのポット番号をＰａｆｔのポット番号に設定し直す（Ｓ３６）。切替回数Ｒは１であり、Ｐｂｅｆは、「１８」となる。ＣＰＵ２１は、切替回数Ｒ、ＰｂｅｆをＲＡＭ２３に記憶する。
【００４１】
切替回数ＣＨＧが１１以上であった場合は（Ｓ３４：ＹＥＳ）、正転するよりも反転した方が切替回数ＣＨＧを少なくできる。それ故、反転した場合を考慮するために、ＣＰＵ２１は、全ポット数から切替回数ＣＨＧを差し引いた値を、切替回数ＣＨＧとして設定し直す（Ｓ３５）。ＣＰＵ２１は、設定し直した切替回数ＣＨＧを切替回数Ｒに設定し、Ｐｂｅｆのポット番号をＰａｆｔのポット番号に設定し直す（Ｓ３６）。ＣＰＵ２１は、切替回数Ｒ、ＰｂｅｆをＲＡＭ２３に記憶する。
【００４２】
ＣＰＵ２１は、ＲＡＭ２３に記憶した計算回数Ｓを１にする（Ｓ３７）。ＣＰＵ２１は、計算回数Ｓが使用順番Ｌの要素数よりも小さいか否かを判断する（Ｓ３８）。使用順番Ｌは、ＲＡＭ２３に記憶している。図５に示すＮＣプログラムの例では、使用順番Ｌにおいて、工具Ｔを２９回切り替える。それ故、使用順番Ｌの要素数は２９である。ＣＰＵ２１は、計算回数Ｓが使用順番Ｌの要素数に満たないので（Ｓ３８：ＹＥＳ）、計算回数Ｓに１を加算する（Ｓ３９）。計算回数Ｓは２となる。
【００４３】
ＣＰＵ２１は、Ｐａｆｔに、使用順番Ｌの先頭からＳ番目の工具番号のポット番号を設定し、ＲＡＭ２３に記憶する（Ｓ４０）。Ｐｂｅｆは、Ｓ３６で更新している。上述と同様に、ＣＰＵ２１は、ＰｂｅｆとＰａｆｔの差の絶対値を算出し、切替回数ＣＨＧとしてＲＡＭ２３に記憶する（Ｓ４１）。Ｐｂｅｆは「１８」である。計算回数Ｓは２であり、使用順番Ｌの先頭から２番目の工具番号は２番である。Ｓ３１で変換した工具配置Ｑ１を参照すると、工具番号２番のポット番号は１９番である。ＰｂｅｆとＰａｆｔとの差の絶対値は、１８と１９との差の絶対値である。ＰｂｅｆとＰａｆｔとの差の絶対値は１である。ＣＰＵ２１は、切替回数ＣＨＧを１として、ＲＡＭ２３に記憶する。
【００４４】
ＣＰＵ２１は、切替回数ＣＨＧが（全ポット数／２）＋１以上であるか否かを判断する（Ｓ４２）。工具マガジン３１の全ポット数は２１個である。切替回数ＣＨＧが１である場合は、（全ポット数／２）＋１未満であるので（Ｓ４２：ＮＯ）、ＣＰＵ２１は、ＲＡＭ２３に記憶した切替回数Ｒに切替回数ＣＨＧを加算し、Ｐｂｅｆのポット番号をＰａｆｔのポット番号に設定し直す（Ｓ４４）。それ故、切替回数Ｒは２となる。Ｐｂｅｆは「１９」となる。ＣＰＵ２１は、切替回数Ｒ、ＰｂｅｆをＲＡＭ２３に記憶する。
【００４５】
切替回数ＣＨＧが、（全ポット数／２）＋１以上であった場合は（Ｓ４２：ＹＥＳ）、正転するよりも反転した方が切替回数ＣＨＧを少なくできる。それ故、反転した場合を考慮するために、ＣＰＵ２１は、全ポット数から切替回数ＣＨＧを差し引いた値を、切替回数ＣＨＧとして設定し直す（Ｓ４３）。ＣＰＵ２１は、ＲＡＭ２３に記憶した切替回数Ｒに切替回数ＣＨＧを加算し、Ｐｂｅｆのポット番号をＰａｆｔのポット番号に設定し直す（Ｓ４４）。
【００４６】
ＣＰＵ２１は、処理をＳ３８に戻し、計算回数Ｓが使用順番Ｌの要素数よりも小さいか否かを判断する（Ｓ３８）。計算回数Ｓが使用順番Ｌの要素数よりも小さい場合は（Ｓ３８：ＹＥＳ）、上述と同じように、ＣＰＵ２１は、Ｓ３９〜Ｓ４４の処理を繰り返す。計算回数Ｓが使用順番Ｌの要素数に達した場合は（Ｓ３８：ＮＯ）、ＲＡＭ２３に記憶した切替回数Ｒが、工具配置Ｑ１の切替回数Ｒとなる。ＣＰＵ２１は、図６のＳ１８の処理を終了する。
【００４７】
図６のＳ１８の処理を終了すると、ＣＰＵ２１は、現時点での工具配置Ｑ１をＱｏｐｔとして、ＲＡＭ２３に記憶する。ＣＰＵ２１は、工具配置Ｑ１の切替回数ＲをＲｏｐｔとして、ＲＡＭ２３に記憶する。ＣＰＵ２１は、工具配置Ｑについて切替回数Ｒの計算回数（以下、ＮＵＭと呼ぶ）として、ＲＡＭ２３に１を記憶する（Ｓ１９）。
【００４８】
ＣＰＵ２１は、ＲＡＭ２３に記憶したＮＵＭが（Ｎ＋Ｕ）の階乗と異なるか否かを判断する（Ｓ２０）。本実施形態では、上述したように、Ｎは、単発工具連続箇所Ｍｉの数である。Ｕは、単発工具連続箇所Ｍｉに含まれない工具Ｔｊの本数である。それ故、Ｎ＝４、Ｕ＝４である。（Ｎ＋Ｕ）の階乗は、８！であり、４０，３２０である。Ｓ２０の判断は、４０，３２０通りの工具配置Ｑの全組合せについて、切替回数Ｒを計算したか否かについて確認する目的である。
【００４９】
ＲＡＭ２３に記憶したＮＵＭが８の階乗に達していない場合（Ｓ２０：ＹＥＳ）、ＣＰＵ２１は、ＲＡＭ２３に記憶したＮＵＭの値に１を加算する（Ｓ２１）。ＣＰＵ２１は、次の順列Ｗを生成する（Ｓ２２）。ＣＰＵ２１は、生成した次の順列Ｗの工具配置Ｑ２について上述と同じように切替回数算出処理を実行する（Ｓ２３）。
【００５０】
Ｓ２３の切替回数算出処理が終了すると、ＣＰＵ２１は、ＲＡＭ２３に記憶した工具配置Ｑ２についての切替回数Ｒが、ＲＡＭ２３に記憶した現時点でのＲｏｐｔよりも小さいか否かを判断する（Ｓ２４）。工具配置Ｑ２についての切替回数Ｒが、現時点でのＲｏｐｔよりも小さい場合（Ｓ２４：ＹＥＳ）、ＣＰＵ２１は、工具配置Ｑ２をＱｏｐｔとし、工具配置Ｑ２の切替回数ＲをＲｏｐｔとして、ＲＡＭ２３の記憶内容を更新する（Ｓ２５）。ＲＡＭ２３の記憶内容を更新した後、ＣＰＵ２１は、処理をＳ２０に戻す。工具配置Ｑ２についての切替回数Ｒが、現時点でのＲｏｐｔよりも大きい場合（Ｓ２４：ＮＯ）、現時点でのＱｏｐｔが、切替回数Ｒの最も少ない最適な工具配置であるので、そのまま何もせず、ＣＰＵ２１は、処理をＳ２０に戻す。
【００５１】
ＲＡＭ２３に記憶したＮＵＭが８の階乗に達した場合は（Ｓ２０：ＮＯ）、４０，３２０通りの工具配置Ｑの全組合せについて、切替回数Ｒを計算したことになる。それ故、ＲＡＭ２３に最終的に記憶したＱｏｐｔ、Ｒｏｐｔは、図５に示すＮＣプログラムを実行する場合の最適な工具配置Ｑｏｐｔであり、最適切替回数Ｒｏｐｔである。ＣＰＵ２１は、ＲＡＭ２３に記憶したＱｏｐｔ、Ｒｏｐｔの結果を、ディスプレイ１１に表示する（Ｓ２６）。
【００５２】
図８に示すように、ディスプレイ１１は、ＣＰＵ２１の表示指令に基づき、工具配置表５０を表示する。工具配置表５０は、ポット番号と、該ポット番号に対応する工具番号とを対応付けて示す。本実施形態は、２１個のポットＰに対して、２１本の工具を各々装着する。それ故、工具配置表５０は、ポットＰ１〜２１に対して、工具Ｔ１〜２１を対応して表示する。図５に示す工具配置表５０は、本実施形態におけるＱｏｐｔの結果である。
【００５３】
Ｑｏｐｔでは、ポットＰ１〜２１に対して、工具Ｔを以下のように配置する。
・Ｑｏｐｔ：｛２，５，６，７，８，９，１０，１１，１２，１３，１４，１５，１６，１，１７，１８，１９，２０，２１，３，４｝
【００５４】
工具配置表５０の下にはＲｏｐｔを表示する。本実施形態のＲｏｐｔは５１回である。なお、ポットＰ１〜２１に対して、工具Ｔ１〜２１を連続して配置した場合、切替回数Ｒは５９回である。
【００５５】
作業者は、ディスプレイ１１に表示する工具配置表５０に従って、工具マガジン３１の各ポットＰに対して、２１本の工具を装着する。それ故、工作機械１は、工具交換に要する時間が最短になるので、切削加工を短時間で行うことができる。
【００５６】
以上の説明において、図６に示すＳ１１の処理を実行するＣＰＵ２１は本発明の「工具交換指令読込手段」に相当する。Ｓ１２の処理を実行するＣＰＵ２１は本発明の「使用順特定手段」に相当する。Ｓ１５の処理を実行するＣＰＵ２１は本発明の「配列箇所抽出手段」に相当する。Ｓ１７，Ｓ２２の処理を実行するＣＰＵ２１は本発明の「順列生成手段」に相当する。Ｓ１８，Ｓ２３の処理を実行するＣＰＵ２１は本発明の「切替回数計数手段」に相当する。Ｓ２４，Ｓ２５の処理を実行するＣＰＵ２１は本発明の「最小回数特定手段」に相当する。Ｓ２６の処理を実行するＣＰＵ２１は本発明の「配置情報出力手段」に相当する。
【００５７】
以上説明したように、本実施形態の数値制御装置２０は、工具交換装置３０の工具マガジン３１における工具配置について、ポットＰの切替回数を最も少なくできる最適工具配置を算出できる。ＣＰＵ２１は、ＮＣプログラムから工具交換指令を読み込み、工具Ｔの使用順番Ｌを記憶する。ＣＰＵ２１は、使用順番Ｌにおいて、ＮＣプログラムの工具の使用順で単発工具が連続する単発工具連続箇所Ｍｉを記憶する。ＣＰＵ２１は、単発工具連続箇所Ｍｉを１本の仮想工具とみなして、順列Ｗの全ての組合せを生成する。ＣＰＵ２１は、各順列Ｗを工具配置Ｑに変換し、切替回数Ｒをそれぞれ算出する。即ち、ＣＰＵ２１は、ＮＣプログラムで使用する工具Ｔの配置の全組合せについて、切替回数Ｒを算出するのではなく、単発工具連続箇所Ｍｉを１本の仮想工具とみなして生成する順列Ｗの全ての組合せについて、工具配置Ｑに変換した状態で切替回数Ｒを算出する。それ故、ＣＰＵ２１は、切替回数Ｒの計算に係る処理量を格段に減らすことができるので、算出結果を速やかに出力できる。最も少ない切替回数Ｒの工具配置Ｑは、工具交換を最も短時間で行うことができる最適工具配置Ｑｏｐｔである。作業者が最適工具配置Ｑｏｐｔに従って工具マガジン３１の工具配置を行うことで、工作機械１は、切削加工を短時間で行うことができる。
【００５８】
なお、本発明の工具配置算出装置は、上記実施形態に限らず、各種の変形が可能なことはいうまでもない。上記実施形態では、数値制御装置２０を工具配置算出装置として説明したが、例えば、一般的なＰＣ（パーソナルコンピュータ）であってもよい。作業者は、ＰＣのＣＰＵで算出された最適工具配置Ｑｏｐｔについて、工具配置表５０をプリンタで印刷し、印刷された工具配置表を確認しながら、工具マガジン３１に工具Ｔを装着できる。
【００５９】
上記実施形態では、工具マガジン３１は２１個のポットＰを有するものであるが、ポット数については、２１個に限定しない。
【００６０】
上記実施形態では、工具Ｔの配置は、工具マガジン３１を正面から見た場合に、時計回りに配置するが、反時計周りに配置してもよい。反時計周りに配置する場合、図７の切替回数算出処理において、Ｓ３４のＹＥＳ、ＮＯと、Ｓ４２のＹＥＳ、ＮＯとはそれぞれ逆になる。
【符号の説明】
【００６１】
１  工作機械
１１  ディスプレイ
１２  キーボード
２０  数値制御装置
２１  ＣＰＵ
２３  ＲＡＭ
３０  工具交換装置
３１  工具マガジン
Ｐ  ポット
Ｔ  工具
【図１】
2012011492.tif 000003
【図２】
2012011492.tif 000004
【図３】
2012011492.tif 000005
【図４】
2012011492.tif 000006
【図５】
2012011492.tif 000007
【図６】
2012011492.tif 000008
【図７】
2012011492.tif 000009
【図８】
2012011492.tif 000010