(57)【要約】【課題】連続した軸制御指令におけるブロックの合成処理を効率的に実現する数値制御装置を提供する。【解決手段】加工プログラムに記述された軸移動指令を解析して、経路のブロック情報を生成する数値制御装置１は、前記加工プログラムの１ブロック分の読み込み処理において、前記１ブロックにおいて複数区間分の前記軸移動指令が記述された前記加工プログラムを解析して、複数の座標値を特定する指令解析部１０１と、前記複数の座標値に基づいて、前記経路を構成する複数の方向ベクトルを生成し、前記方向ベクトルを足し合わせた合成ベクトルを生成する指令合成部１０２と、前記合成ベクトルに基づいて、前記ブロック情報を生成するブロック情報生成部１０３と、を有する。【選択図】図１５
2020109599.tif 000002
【特許請求の範囲】
【請求項１】
加工プログラムに記述された軸移動指令を解析して、経路のブロック情報を生成する数値制御装置であって、
前記加工プログラムの１ブロック分の読み込み処理において、
前記１ブロックにおいて複数区間分の前記軸移動指令が記述された前記加工プログラムを解析して、複数の座標値を特定する指令解析部と、
前記複数の座標値に基づいて、前記経路を構成する複数の方向ベクトルを生成し、前記方向ベクトルを足し合わせた合成ベクトルを生成する指令合成部と、
前記合成ベクトルに基づいて、前記ブロック情報を生成するブロック情報生成部と、を有する
数値制御装置。
【請求項２】
前記指令合成部は、前記合成ベクトルにかかるトレランスが所定の許容値未満である場合に、前記合成ベクトルを生成する
請求項１記載の数値制御装置。
【請求項３】
前記指令合成部は、前記合成ベクトルの長さが所定の許容値未満である場合に、前記合成ベクトルを生成する
請求項１記載の数値制御装置。
【請求項４】
前記指令合成部は、複数の前記軸移動指令が同一の送り速度又は主軸回転速度を含む場合に、前記合成ベクトルを生成する
請求項１記載の数値制御装置。
【請求項５】
前記指令合成部は、複数の前記軸移動指令が特定かつ同一のＧコード、Ｔコード又はモード指令を含む場合に、前記合成ベクトルを生成する
請求項１記載の数値制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値制御装置に関し、特に連続した軸制御指令におけるブロックの合成処理を効率的に実現する数値制御装置に関する。
【背景技術】
【０００２】
数値制御装置が実行する加工プログラム（ＮＣプログラム）においては、通常、１ブロックごとに１つの直線線分、円弧線分の移動指令を記述する。したがって、複数の直線線分や円弧線分等からなる加工パスを指令する際には、軸移動指令を複数ブロックにわたり連続して記述する必要がある（図１参照）。
【０００３】
また、数値制御装置は、通常、ＮＣプログラムに記述された指令ブロックを先頭から順次読み込んでプログラムを解析し、ブロック情報を生成し、ブロック情報を元に補間処理を行い、各軸の分配パルスを作成する。
【０００４】
良好な加工面を得るためには、分配パルスを途切れることなく連続して作成し、出力する必要がある。そのため、補間に必要なブロック情報の作成は、補間より先に完了していなければならない。よって、数値制御装置は、通常、ＮＣプログラムを実行するよりも前の時点でＮＣプログラムの読み込みを開始し、ＮＣプログラムに含まれるあらゆる指令の解析を行う。これを先読み処理という（図２参照）。
【０００５】
複雑な形状にワークを加工する場合、ＮＣプログラムに含まれる軸移動指令のブロック数は多くなる傾向がある。ブロック数の多いＮＣプログラムでは、テスト運転などで大まかな加工経路や加工の流れを確認したい場合でも、全てのブロックを解析し、経路計算をする必要があり、その処理に時間がかかるという問題がある。
【０００６】
従来、許容されるトレランスの範囲内でプログラムブロックを合成し、解析するプログラムブロック数を減少させる数値制御装置が知られている（例えば、特許文献１等）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平９−２８８５０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１記載の手法では、１ブロックずつプログラムを読み込みながら直線補間ブロックかの判定を都度行う必要がある。また、先読み処理の最大ブロック数に依存して合成できるブロック数に制限が出る。
【０００９】
そこで、連続した軸制御指令におけるブロックの合成処理を効率的に実現する数値制御装置が望まれている。
【課題を解決するための手段】
【００１０】
本発明の一実施形態にかかる数値制御装置は、加工プログラムに記述された軸移動指令を解析して、経路のブロック情報を生成する数値制御装置であって、前記加工プログラムの１ブロック分の読み込み処理において、前記１ブロックにおいて複数区間分の前記軸移動指令が記述された前記加工プログラムを解析して、複数の座標値を特定する指令解析部と、前記複数の座標値に基づいて、前記経路を構成する複数の方向ベクトルを生成し、前記方向ベクトルを足し合わせた合成ベクトルを生成する指令合成部と、前記合成ベクトルに基づいて、前記ブロック情報を生成するブロック情報生成部と、を有する。
本発明の一実施形態にかかる数値制御装置は、前記指令合成部は、前記合成ベクトルにかかるトレランスが所定の許容値未満である場合に、前記合成ベクトルを生成する。
本発明の一実施形態にかかる数値制御装置は、前記指令合成部は、前記合成ベクトルの長さが所定の許容値未満である場合に、前記合成ベクトルを生成する。
本発明の一実施形態にかかる数値制御装置は、前記指令合成部は、複数の前記軸移動指令が同一の送り速度又は主軸回転速度を含む場合に、前記合成ベクトルを生成する。
本発明の一実施形態にかかる数値制御装置は、前記指令合成部は、複数の前記軸移動指令が特定かつ同一のＧコード、Ｔコード又はモード指令を含む場合に、前記合成ベクトルを生成する。
【発明の効果】
【００１１】
本発明の一態様によれば、連続した軸制御指令におけるブロックの合成処理を効率的に実現する数値制御装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】従来の加工プログラムの一例を示す図である。
【図２】従来の先読み処理の一例を示す図である。
【図３】数値制御装置１のハードウェア構成例を示す図である。
【図４】従来の軸移動指令の一例を示す図である。
【図５】本実施の形態における軸移動指令の一例を示す図である。
【図６】本実施の形態における軸移動指令の一例を示す図である。
【図７】本実施の形態における軸移動指令の一例を示す図である。
【図８】本実施の形態における軸移動指令の一例を示す図である。
【図９】本実施の形態における軸移動指令の一例を示す図である。
【図１０】本実施の形態における軸移動指令の一例を示す図である。
【図１１】従来の数値制御装置の動作例を示す図である。
【図１２】数値制御装置１の動作例を示す図である。
【図１３】数値制御装置１の動作例を示す図である。
【図１４】数値制御装置１の動作例を示す図である。
【図１５】数値制御装置１の機能構成例を示す図である。
【図１６】指令合成部１０２による加工経路合成処理の一例を示す図である。
【図１７】指令合成部１０２による加工経路合成処理の一例を示す図である。
【図１８】指令合成部１０２による加工経路合成処理の一例を示す図である。
【図１９】指令合成部１０２による加工経路合成処理の一例を示す図である。
【発明を実施するための形態】
【００１３】
図３は、実施の形態にかかる数値制御装置１の要部を示す概略的なハードウェア構成図である。数値制御装置１は、工作機械を含む産業用機械の制御を行う装置である。数値制御装置１は、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、不揮発性メモリ１４、バス１０、軸制御回路１６、サーボアンプ１７、インタフェース１８を有する。数値制御装置１には、サーボモータ５０、入出力装置６０が接続される。
【００１４】
ＣＰＵ１１は、数値制御装置１を全体的に制御するプロセッサである。ＣＰＵ１１は、ＲＯＭ１２に格納されたシステム・プログラムをバス１０を介して読み出し、システム・プログラムに従って数値制御装置１全体を制御する。
【００１５】
ＲＯＭ１２は、例えば機械の各種制御を実行するためのシステム・プログラムを予め格納している。
【００１６】
ＲＡＭ１３は、一時的な計算データや表示データ、入出力装置６０を介してオペレータが入力したデータやプログラム等を一時的に格納する。
【００１７】
不揮発性メモリ１４は、例えば図示しないバッテリでバックアップされており、数値制御装置１の電源が遮断されても記憶状態を保持する。不揮発性メモリ１４は、入出力装置６０から入力されるデータやプログラム等を格納する。不揮発性メモリ１４に記憶されたプログラムやデータは、実行時及び利用時にはＲＡＭ１３に展開されても良い。
【００１８】
軸制御回路１６は、機械の動作軸を制御する。軸制御回路１６は、ＣＰＵ１１が出力する軸の移動指令量を受けて、動作軸の移動指令をサーボアンプ１７に出力する。
【００１９】
サーボアンプ１７は、軸制御回路１６が出力する軸の移動指令を受けて、サーボモータ５０を駆動する。
【００２０】
サーボモータ５０は、サーボアンプ１７により駆動されて機械の動作軸を動かす。本実施の形態では、主軸移動はサーボモータ５０により行われる。サーボモータ５０は、典型的には位置・速度検出器を内蔵する。位置・速度検出器は位置・速度フィードバック信号を出力し、この信号が軸制御回路１６にフィードバックされることで、位置・速度のフィードバック制御が行われる。
【００２１】
なお、図３では軸制御回路１６、サーボアンプ１７、サーボモータ５０は１つずつしか示されていないが、実際には制御対象となる機械に備えられた軸の数だけ用意される。
【００２２】
入出力装置６０は、ディスプレイやハードウェアキー等を備えたデータ入出力装置であり、典型的にはＭＤＩ又は操作盤である。入出力装置６０は、インタフェース１８を介してＣＰＵ１１から受けた情報をディスプレイに表示する。入出力装置６０は、ハードウェアキー等から入力された指令やデータ等をインタフェース１８を介してＣＰＵ１１に渡す。
【００２３】
図１５は、数値制御装置１の特徴的な機能構成を示すブロック図である。数値制御装置１は、本願発明、指令解析部１０１、指令合成部１０２及びブロック情報生成部１０３を有する。
【００２４】
指令解析部１０１は、１ブロックの指令で複数区間の線分を定義可能な軸移動指令を含む加工プログラムを読み込んで解析し、移動先となる全座標点を特定する。指令合成部１０２は、指令解析部１０１が特定した座標点が複数ある場合に、加工経路を合成する処理を行う。ブロック情報生成部１０３は、指令合成部１０２が合成した加工経路のブロック情報を生成する。
【００２５】
図４乃至図６を用いて、指令解析部１０１が解析可能な、本実施の形態特有の軸移動指令の仕様について説明する。図４は、従来の軸移動指令の一例を示す図である。軸移動指令は、アルファベット（Ｇ，Ｘ，Ｙ，Ｚ等）で示されるアドレスと、数字で示される指令値との組み合わせで構成される。Ｇ９１，Ｇ００等の指令はＧコードと呼ばれ、数値制御装置１に加工を行うための準備機能を実行させるものである。Ｆ４０００．等の指令は移動指令であり、数値は送り速度を示す。Ｘ１．５，Ｙ２．，Ｚ−９５等の指令は、それぞれＸ軸、Ｙ軸、Ｚ軸の座標値又は移動量を指定している。従来の軸移動指令の記法によれば、１ブロック（加工プログラムの１行）で表現できる線分は、原則として１つのみである。
【００２６】
一方、本実施の形態の軸移動指令では、１ブロックの指令で、従来の複数ブロック分の指令に相当する内容を記述できる。この軸移動指令は次のような特徴を有する。
（１）１ブロックの指令内で、各アドレスに対応する複数の指令値（座標値又は移動量等）を指定する。
【００２７】
（２）アドレスと指令値との対応関係は、予め定められたルールに則って記述される。ルールは特に限定されないが、典型的には次のようなものがある。
（ａ）予め定められた複数種の区切り文字により、アドレスと複数の指令値との対応関係を定義する。例えば図５の例では、“［”，“］”（かっこ）により区間毎の指令値の集合を定義し、“，”（カンマ）により各アドレスの指令値の区切りを示している。すなわち、［ｘ１，ｙ１，ｚ１］は１区間目の線分を定義する指令値群であり、ｘ１はＸ軸の指令値、ｙ１はＹ軸の指令値、ｚ３はＺ軸の指令値である。同様に、［ｘ２，ｙ２，ｚ２］は２区間目の、［ｘ３，ｙ３，ｚ３］は３区間目の線分を定義する指令値群である。
【００２８】
図６は、図５に示したフォーマットに従って記述された軸移動指令であって、記述されている内容は図４に示した従来の記法による軸移動指令と等価である。図４において第２行から第３行にかけて記述されていた軸移動指令は、図６では第２行に集約されている。同様に、図４において第４行から第６行にかけて記述されていた軸移動指令は、図６では第３行に集約されている。本実施の形態では、このように従来の複数ブロック分の指令を１ブロックの指令に集約することが可能である。
【００２９】
（ｂ）予め定められた区切り文字と数値の配列順とにより、アドレスと複数の指令値との対応関係を定義する。例えば、１区間目の線分を定義する指令値群ｘ１，ｙ１，ｚ１（ｘ１はＸ軸の指令値、ｙ１はＹ軸の指令値、ｚ１はＺ軸の指令値）、２区間目の線分を定義する指令値群ｘ２，ｙ２，ｚ２（ｘ２はＸ軸の指令値、ｙ２はＹ軸の指令値、ｚ２はＺ軸の指令値）、・・・ｎ区間目の線分を定義する指令値群ｘｎ，ｙｎ，ｚｎ（ｘｎはＸ軸の指令値、ｙｎはＹ軸の指令値、ｚｎはＺ軸の指令値）を、
Ｘ，Ｙ，Ｚ＝ｘ１，ｙ１，ｚ１，ｘ２，ｙ２，ｚ２，・・・，ｘｎ，ｙｎ，ｚｎ
のように区間ごとにまとめて記述することもできるし、
Ｘ，Ｙ，Ｚ＝ｘ１，ｘ２，・・・，ｘｎ，ｙ１，ｙ２，・・・，ｙｎ，ｚ１，ｚ２，・・・，ｚｎ
のようにアドレスごとにまとめて記述することもできる。
【００３０】
（ｃ）上記（ａ）又は（ｂ）で示したような記述に、配列型変数を導入することもできる。図７（第２行及び第４行）は、以下の軸移動指令を、配列型変数を導入して書き換えた例である。書き換え前の指令は、図５に示したフォーマットに従って記述されたものである。図７では、書き換え前の指令の右辺部を予め配列型変数に格納しておき（第２行）、当該変数を参照する形で指令を記述している（第４行）。
書き換え前：
Ｎ２２  Ｇ０１  Ｘ，Ｙ，Ｚ＝［１，２，３］，［２，３，４］，［３，４，５］，・・・，［１０，１１，１２］；
【００３１】
（ｄ）上記（ａ）又は（ｂ）で示したような記述に、外部ファイル参照を導入することもできる。
図８（第３行）は、以下の軸移動指令を、外部ファイル参照を導入して書き換えた例である。書き換え前の指令は、図５に示したフォーマットに従って記述されたものである。図８では、書き換え前の指令の右辺部に相当する内容を予め外部ファイルに記述しておき（ＰＡＴＨ１．ｃｓｖ）、当該ファイルの内容を参照する形で指令を記述している（第３行）。
書き換え前：
Ｎ２２  Ｇ０１  Ｘ，Ｙ，Ｚ＝［０，０，０］，［１，１，１］，［２，２，２］，・・・；
【００３２】
同様に、図９（第３行）は、以下の軸移動指令を、外部ファイル参照を導入して書き換えた例である。書き換え前の指令は、図５に示したフォーマットに従って記述されたものである。図９では、書き換え前の指令の右辺部に相当する内容を予め外部ファイルに記述しておき（ＣＡＭ＿ＤＡＴＡ．ＮＣ）、当該ファイルの内容を参照する形で指令を記述している（第３行）。
書き換え前：
Ｎ２２  Ｇ０１  Ｘ，Ｙ，Ｚ＝［Ｘ０，Ｙ０，Ｚ０］，［Ｘ１，Ｙ１，Ｚ１］，［Ｘ２，Ｙ２，Ｚ２］，［Ｘ３，Ｙ３，Ｚ３］，・・・；
【００３３】
外部ファイルのファイル形式やフォーマットは、書き換え前の指令内容との対応関係が保たれていればいかなるものであっても構わない。但し、その対応関係を指令解析部１０１が認識し、書き換え前の指令内容を復元できる必要がある。
【００３４】
（ｅ）データセットを参照して指令を記述することもできる。図１０（第２行）は、以下の軸移動指令を、データセットを参照する形式に書き換えた例である。図１０では、書き換え前の指令のＮ２１に続く部分の内容を予めデータセット（典型的には構造体）に格納しておき（ＣＹＣＬＥ１）、当該データセットの内容を参照する形で指令を記述している（第２行）。
書き換え前：
Ｎ２１  Ｇ００  Ｘ０．  Ｙ１０．  Ｚ５０．；
Ｇ０１  Ｙ２０．  Ｚ５５．  Ｆ１００．；
Ｘ１０．；
Ｇ００  Ｘ１５．  Ｙ２０．；
【００３５】
データセットのフォーマットは、書き換え前の指令内容との対応関係が保たれていればいかなるものであっても構わない。但し、その対応関係を指令解析部１０１が認識し、書き換え前の指令内容を復元できる必要がある。なお、データセットを用いる場合でも、アドレスはデータセット内に１回のみ記述すれば足りる。
【００３６】
（３）指令値に変更のないアドレスについては、指令の記述を省略しても良い。例えば図６の例では、Ｚ軸が移動しない場合（第１行）には、Ｘ，Ｙ軸に関する指令のみを記述し、Ｚ軸については指令を記述していない。同様に、Ｘ軸が移動しない場合（第３行）、このブロックではＹ，Ｚ軸に関する指令のみを記述し、Ｘ軸については指令を記述していない。
【００３７】
（４）軸アドレスを定義しつつ、指令値（数値）を省略しても良い。例えば、以下の例のように記載できる。
例：
Ｇ０１  Ｘ，Ｙ＝［０，０］，［１，］，［，２］，・・・
これは、従来の記法であれば以下のように記述されていた指令を１行に集約して記述したものである。
従来：
Ｇ０１  Ｘ０  Ｙ０；
Ｇ０１  Ｘ１；
Ｇ０１  Ｙ２；
【００３８】
図１６乃至図１９を用いて、指令合成部１０２が加工経路を合成する処理について具体的に説明する。通常の加工では、指令解析部１０１が特定した座標点を順に繋いで形成される加工経路に従って加工が行われる。一方、テスト運転など大まかな加工経路や加工の流れを確認したい場合には、加工経路中を構成する幾つかの方向ベクトルを合成し（経路合成処理）、簡素化された加工経路で運転を行うことができる。図１６及び図１７に示す例では、指令合成部１０２はトレランスに基づいて経路合成処理の実行可否を決定する。図１８及び図１９に示す例では、指令合成部１０２は経路長に基づいて経路合成処理の実行可否を決定する。
【００３９】
（Ａ）トレランスに基づく経路合成処理
トレランス（Ｔｒ）とは、２つの方向ベクトルからなる加工経路を合成した合成ベクトルを生成した場合における、２つの方向ベクトルの接続点と合成ベクトルとの距離をいう。例えば、始点から座標［ｘ１，ｙ１］に至る方向ベクトルと、座標［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトルとを合成して、始点から座標［ｘ２，ｙ２］に至る合成ベクトルを生成した場合、座標［ｘ１，ｙ１］から合成ベクトルまでの距離がトレランスＴｒとなる（図１７参照）。
【００４０】
本処理では、トレランスＴｒが予め定められた閾値未満である場合に合成ベクトルを生成する。一方、トレランスＴｒが予め定められた閾値以上である場合には合成ベクトルを生成しない。この制限により、本来の加工経路から大きく逸脱することなく、簡素化された加工経路を生成することができる。
【００４１】
図１６は、トレランスに基づく経路合成処理を説明するフローチャートである。指令合成部１０２は、指令解析部１０１が特定した複数の座標点のうち、最も加工順の若いものを読み込む（ＳＡ１０１）。指令合成部１０２は、現在位置（始点）を起点として、読み込んだ座標点に至る方向ベクトルを生成する（ＳＡ１０２）。また、生成した方向ベクトルを合成ベクトルの初期値に設定する（ＳＡ１０３乃至ＳＡ１０４）。
【００４２】
図１７（ａ）に示す例では、指令解析部１０１は、以下の指令
Ｇ０１  Ｘ，Ｙ  ＝［ｘ１，ｙ１］，［ｘ２，ｙ２］，［ｘ３，ｙ３］；
に基づき、以下の複数の座標点を特定する。
［ｘ１，ｙ１］
［ｘ２，ｙ２］
［ｘ３，ｙ３］
指令合成部１０２は、このうち座標［ｘ１，ｙ１］をまず読込み、始点すなわち現在位置から座標［ｘ１，ｙ１］に至る方向ベクトルを生成する。また、生成した方向ベクトルを合成ベクトルの初期値に設定する。
【００４３】
次に、指令合成部１０２は、ＳＡ１０１で読み込んだ座標点を新たな起点として、次の加工順の座標点を読み込み（ＳＡ１０１）、起点から読み込んだ座標点に至る方向ベクトルを生成する（ＳＡ１０２）。
【００４４】
図１７（ａ）に示す例では、指令合成部１０２は座標［ｘ２，ｙ２］を読込み、起点［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトルを生成する。
【００４５】
指令合成部１０２は、生成した方向ベクトルを合成ベクトルに足し込んで、新たな合成ベクトルを生成する（ＳＡ１０３乃至ＳＡ１０７）。
【００４６】
図１７（ｂ）に示す例では、始点から座標［ｘ１，ｙ１］に至る合成ベクトルと、座標［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトルとを足し込んで、始点から座標［ｘ２，ｙ２］に至る新たな合成ベクトルを生成している。
【００４７】
指令合成部１０２は、この合成処理にかかるトレランスＴｒ、すなわち新たな合成ベクトルの基となった２つのベクトルの接続点と、新たな合成ベクトルと、の距離を計算する（ＳＡ１０８）。
【００４８】
図１７（ｂ）に示す例では、新たな合成ベクトル（始点から座標［ｘ２，ｙ２］に至る新たな合成ベクトル）の基となった２つのベクトル（始点から座標［ｘ１，ｙ１］に至る旧い合成ベクトルと、座標［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトル）の接続点は［ｘ１，ｙ１］であるから、［ｘ１，ｙ１］と新たな合成ベクトルとの距離Ｔｒを算出する。
【００４９】
指令合成部１０２は、トレランスＴｒと許容値（閾値）とを比較する（ＳＡ１０９）。トレランスＴｒが予め定められた許容値未満であれば、指令合成部１０２は、ＳＡ１０１乃至ＳＡ１０８の処理を繰り返し、新たな座標点をさらに読み込んで新たな合成ベクトルを生成する。
【００５０】
例えば、図１７（ｂ）に示すトレランスＴｒが許容値未満であれば、指令合成部１０２は、新たな座標点［ｘ３，ｙ３］を読込み、前回読み込んだ座標点［ｘ２，ｙ２］から新たに読み込んだ座標点［ｘ３，ｙ３］に至る方向ベクトルを生成し、この方向ベクトルと前回の合成ベクトルとを足し込んで、始点から座標［ｘ３，ｙ３］に至る新たな合成ベクトルを生成する。
【００５１】
一方、トレランスＴｒが予め定められた許容値以上であれば、指令合成部１０２は、今回生成した合成ベクトルを破棄し、前回生成した合成ベクトルをブロック情報生成部１０３に転送する。これにより、前回生成した合成ベクトルが、簡素な加工経路として採用される。また、指令合成部１０２は、前回読み込んだ座標値を起点に設定し、今回生成した方向ベクトルを新たな合成ベクトルとして設定する（ＳＡ１１１乃至ＳＡ１１３）。以下、指令解析部１０１が特定した複数の座標点を網羅するまで、同様の処理を繰り返す。
【００５２】
例えば、図１７（ｃ）に示すトレランスＴｒが許容値以上であれば、指令合成部１０２は、今回生成した合成ベクトル（始点から座標［ｘ３，ｙ３］に至る新たな合成ベクトル）を破棄し、前回生成した合成ベクトル（始点から座標［ｘ２，ｙ２］に至る旧い合成ベクトル）を加工経路として確定させる（図１７（ｄ））。
【００５３】
（Ｂ）経路長に基づく経路合成処理
経路長（Ｔｒ）とは、２つの方向ベクトルからなる加工経路を合成した合成ベクトルを生成した場合における、合成ベクトルの長さをいう。例えば、始点から座標［ｘ１，ｙ１］に至る方向ベクトルと、座標［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトルとを合成して、始点から座標［ｘ２，ｙ２］に至る合成ベクトルを生成した場合、始点から座標［ｘ２，ｙ２］までの距離が経路長となる（図１９参照）。
【００５４】
本処理では、経路長が予め定められた閾値未満である場合に合成ベクトルを生成する。一方、経路長が予め定められた閾値以上である場合には合成ベクトルを生成しない。この制限により、本来の加工経路から大きく逸脱することなく、簡素化された加工経路を生成することができる。
【００５５】
図１８は、経路長に基づく経路合成処理を説明するフローチャートである。指令合成部１０２は、指令解析部１０１が特定した複数の座標点のうち、最も加工順の若いものを読み込む（ＳＢ１０１）。指令合成部１０２は、現在位置（始点）を起点として、読み込んだ座標点に至る方向ベクトルを生成する（ＳＢ１０２）。また、生成した方向ベクトルを合成ベクトルの初期値に設定する（ＳＢ１０３乃至ＳＢ１０４）。
【００５６】
図１９（ａ）に示す例では、指令解析部１０１は、以下の指令
Ｇ０１  Ｘ，Ｙ  ＝［ｘ１，ｙ１］，［ｘ２，ｙ２］，［ｘ３，ｙ３］；
に基づき、以下の複数の座標点を特定する。
［ｘ１，ｙ１］
［ｘ２，ｙ２］
［ｘ３，ｙ３］
指令合成部１０２は、このうち座標［ｘ１，ｙ１］をまず読込み、始点すなわち現在位置から座標［ｘ１，ｙ１］に至る方向ベクトルを生成する。また、生成した方向ベクトルを合成ベクトルの初期値に設定する。
【００５７】
次に、指令合成部１０２は、ＳＢ１０１で読み込んだ座標点を新たな起点として、次の加工順の座標点を読み込み（ＳＢ１０１）、起点から読み込んだ座標点に至る方向ベクトルを生成する（ＳＢ１０２）。
【００５８】
図１９（ａ）に示す例では、指令合成部１０２は座標［ｘ２，ｙ２］を読込み、起点［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトルを生成する。
【００５９】
指令合成部１０２は、生成した方向ベクトルを合成ベクトルに足し込んで、新たな合成ベクトルを生成する（ＳＢ１０３乃至ＳＢ１０７）。
【００６０】
図１９（ｂ）に示す例では、始点から座標［ｘ１，ｙ１］に至る合成ベクトルと、座標［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る方向ベクトルとを足し込んで、始点から座標［ｘ２，ｙ２］に至る新たな合成ベクトルを生成している。
【００６１】
指令合成部１０２は、この合成処理により生成された新たな合成ベクトルの経路長を計算する（ＳＢ１０８）。
【００６２】
図１９（ｂ）に示す例では、新たな合成ベクトル（始点から座標［ｘ２，ｙ２］に至る新たな合成ベクトル）の長さを算出する。
【００６３】
指令合成部１０２は、経路長と許容値（閾値）とを比較する（ＳＢ１０９）。経路長が予め定められた許容値未満であれば、指令合成部１０２は、ＳＢ１０１乃至ＳＢ１０８の処理を繰り返し、新たな座標点をさらに読み込んで新たな合成ベクトルを生成する。
【００６４】
例えば、図１９（ｂ）に示す経路長が許容値未満であれば、指令合成部１０２は、新たな座標点［ｘ３，ｙ３］を読込み、前回読み込んだ座標点［ｘ２，ｙ２］から新たに読み込んだ座標点［ｘ３，ｙ３］に至る方向ベクトルを生成し、この方向ベクトルと前回の合成ベクトルとを足し込んで、始点から座標［ｘ３，ｙ３］に至る新たな合成ベクトルを生成する。
【００６５】
一方、経路長が予め定められた許容値以上であれば、指令合成部１０２は、今回生成した合成ベクトルを破棄し、前回生成した合成ベクトルをブロック情報生成部１０３に転送する。これにより、前回生成した合成ベクトルが、簡素な加工経路として採用される。また、指令合成部１０２は、前回読み込んだ座標値を起点に設定し、今回生成した方向ベクトルを新たな合成ベクトルとして設定する（ＳＢ１１１乃至ＳＢ１１３）。以下、指令解析部１０１が特定した複数の座標点を網羅するまで、同様の処理を繰り返す。
【００６６】
例えば、図１９（ｃ）に示す経路長が許容値以上であれば、指令合成部１０２は、今回生成した合成ベクトル（始点から座標［ｘ３，ｙ３］に至る新たな合成ベクトル）を破棄し、前回生成した合成ベクトル（始点から座標［ｘ２，ｙ２］に至る旧い合成ベクトル）を加工経路として確定させる（図１９（ｄ））。
【００６７】
（Ｃ）その他の閾値に基づく経路合成処理
上述の実施の形態では、線分合成の実施要否の判定指標としてトレランスや経路長を用いたが、ふさわしい種々の指標を用いて同様の判定を行うことが可能である。以下に幾つかの例を示す。
・送り速度
指令合成部１０２は、送り速度が同じ複数の線分を合成することができる。例えば、指令解析部１０１が以下の例のような加工プログラムを読み込んだ場合を考える。
例：
Ｇ０１  Ｘ，Ｙ，Ｆ  ＝  ［ｘ１，ｙ１，２００］，［ｘ２，ｙ２，］，［ｘ３，ｙ３，］，［ｘ４，ｙ４，１００］，・・・；
【００６８】
指令解析部１０１の解析により、現在位置（始点）から座標［ｘ１，ｙ１］に至る線分、座標［ｘ１，ｙ１］から座標［ｘ２，ｙ２］に至る線分、及び座標［ｘ２，ｙ２］から座標［ｘ３，ｙ３］に至る線分は、いずれも同じ送り速度Ｆ＝２００が指令されていることが分かる。このとき、指令合成部１０２は、同じ送り速度Ｆが指令されている、連続する複数の線分を合成し、１つの線分を生成して加工経路とする。この例では、現在位置（始点）から座標［ｘ３，ｙ３］に至る線分が合成後の加工経路となり、以下を指令したときと同じ結果となる。
合成後：
Ｇ０１  Ｘ，Ｙ，Ｆ  ＝  ［ｘ３，ｙ３，２００］，［ｘ４，ｙ４，１００］，…  ；
【００６９】
・主軸回転速度
指令合成部１０２は、主軸回転速度（Ｓ指令）が同じ複数の線分を合成することができる。具体的な処理内容は、上述の送り速度に基づく線分合成と同様であるため説明を省略する。
【００７０】
・Ｇコード
指令合成部１０２は、Ｇコード指令が同じ複数の線分を合成することができる。この際、特定のＧコード指令のみを合成の対象とすることもできる。例えば、指令合成部１０２は、Ｇコード「Ｇ０１」のみを合成の対象とすることができる。この場合、同じＧコード「Ｇ０１」が指令された複数の連続する線分を合成する。一方、「Ｇ０２」など他のＧコード補間指令がなされている線分は合成しない。
【００７１】
・Ｔコード、モード指令など
指令合成部１０２は、Ｔコード（工具交換）指令、又は加工状態等を示すモード指令が同じ複数の線分を合成することができる。具体的な処理内容は、上述のＧコードに基づく線分合成と同様であるため説明を省略する。
【００７２】
図１１及び図１２のフローチャートを用いて、数値制御装置１の特徴的な動作について説明する。図１１は、従来の数値制御装置の動作を示す図である。数値制御装置は、加工プログラムの１ブロックを読み込み（Ｓ１）、解析する（Ｓ２）。そして、そのブロックに記述された１線分のブロック情報を生成する（Ｓ４）。なお、数値制御装置は、Ｓ１乃至Ｓ３の処理に加え、モーダル切換えや各種信号の判定等の付随的な処理も、１ブロックごとに実施する（Ｓ４）。数値制御装置は、加工プログラムの全てのブロックについてＳ１乃至Ｓ４の処理を繰り返す。
【００７３】
図１２は、本実施の形態にかかる数値制御装置１の動作を示す図である。数値制御装置１の指令解析部１０１は、加工プログラムの１ブロックを読み込み（Ｓ１０１）、解析する（Ｓ１０２）。ここで加工プログラムが、上述のフォーマットに従って記述された、１ブロックの指令で複数区間の線分を定義するものである場合（図１３（ａ）参照）、指令解析部１０１は当該ブロックを解析し、そこに記述された複数の座標値又は移動量を抽出する（図１３（ｂ）参照）。
【００７４】
指令合成部１０２は、指令解析部１０１が複数の座標値を出力した場合（Ｓ１０３）、それらの座標値（図１４（ａ）参照）に基づいて、加工経路を生成する。このとき、本来の加工経路を構成する複数の方向ベクトルの一部を合成し、簡素化された加工経路で置き換える（Ｓ１０４）（図１４（ｂ）及び（ｃ）参照）。
【００７５】
ブロック情報生成部１０３は、指令合成部１０２が合成した加工経路のブロック情報を生成する（Ｓ１０５）。その後、モーダル切換えや各種信号の判定等の付随的な処理を実行し（Ｓ１０６）、このブロックの処理を終了する。数値制御装置１は、加工プログラムの全てのブロックについてＳ１０１乃至Ｓ１０６の処理を繰り返す。
【００７６】
本実施の形態によれば、数値制御装置１は、本発明では、１ブロックずつプログラムを読み込みながら直線補間ブロックかの判定を行うことなく、また、先読み処理の最大ブロック数に依存することなく、複数ブロックの合成を行うことが可能となる。
【００７７】
なお、本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨を損なわない範囲において適宜変更することが可能である。
【符号の説明】
【００７８】
１  数値制御装置
１０  バス
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  不揮発性メモリ
１８  インタフェース
６０  入出力装置
１０１  指令解析部
１０２  指令合成部
１０３  ブロック情報生成部
【図１】
2020109599.tif 000003
【図２】
2020109599.tif 000004
【図３】
2020109599.tif 000005
【図４】
2020109599.tif 000006
【図５】
2020109599.tif 000007
【図６】
2020109599.tif 000008
【図７】
2020109599.tif 000009
【図８】
2020109599.tif 000010
【図９】
2020109599.tif 000011
【図１０】
2020109599.tif 000012
【図１１】
2020109599.tif 000013
【図１２】
2020109599.tif 000014
【図１３】
2020109599.tif 000015
【図１４】
2020109599.tif 000016
【図１５】
2020109599.tif 000017
【図１６】
2020109599.tif 000018
【図１７】
2020109599.tif 000019
【図１８】
2020109599.tif 000020
【図１９】
2020109599.tif 000021