(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0013】
図3は、実施の形態にかかる数値制御装置1の要部を示す概略的なハードウェア構成図である。数値制御装置1は、工作機械を含む産業用機械の制御を行う装置である。数値制御装置1は、CPU11、ROM12、RAM13、不揮発性メモリ14、バス10、軸制御回路16、サーボアンプ17、インタフェース18を有する。数値制御装置1には、サーボモータ50、入出力装置60が接続される。
【0014】
CPU11は、数値制御装置1を全体的に制御するプロセッサである。CPU11は、ROM12に格納されたシステム・プログラムをバス10を介して読み出し、システム・プログラムに従って数値制御装置1全体を制御する。
【0015】
ROM12は、例えば機械の各種制御を実行するためのシステム・プログラムを予め格納している。
【0016】
RAM13は、一時的な計算データや表示データ、入出力装置60を介してオペレータが入力したデータやプログラム等を一時的に格納する。
【0017】
不揮発性メモリ14は、例えば図示しないバッテリでバックアップされており、数値制御装置1の電源が遮断されても記憶状態を保持する。不揮発性メモリ14は、入出力装置60から入力されるデータやプログラム等を格納する。不揮発性メモリ14に記憶されたプログラムやデータは、実行時及び利用時にはRAM13に展開されても良い。
【0018】
軸制御回路16は、機械の動作軸を制御する。軸制御回路16は、CPU11が出力する軸の移動指令量を受けて、動作軸の移動指令をサーボアンプ17に出力する。
【0019】
サーボアンプ17は、軸制御回路16が出力する軸の移動指令を受けて、サーボモータ50を駆動する。
【0020】
サーボモータ50は、サーボアンプ17により駆動されて機械の動作軸を動かす。本実施の形態では、主軸移動はサーボモータ50により行われる。サーボモータ50は、典型的には位置・速度検出器を内蔵する。位置・速度検出器は位置・速度フィードバック信号を出力し、この信号が軸制御回路16にフィードバックされることで、位置・速度のフィードバック制御が行われる。
【0021】
なお、
図3では軸制御回路16、サーボアンプ17、サーボモータ50は1つずつしか示されていないが、実際には制御対象となる機械に備えられた軸の数だけ用意される。
【0022】
入出力装置60は、ディスプレイやハードウェアキー等を備えたデータ入出力装置であり、典型的にはMDI又は操作盤である。入出力装置60は、インタフェース18を介してCPU11から受けた情報をディスプレイに表示する。入出力装置60は、ハードウェアキー等から入力された指令やデータ等をインタフェース18を介してCPU11に渡す。
【0023】
図15は、数値制御装置1の特徴的な機能構成を示すブロック図である。数値制御装置1は、本願発明、指令解析部101、指令合成部102及びブロック情報生成部103を有する。
【0024】
指令解析部101は、1ブロックの指令で複数区間の線分を定義可能な軸移動指令を含む加工プログラムを読み込んで解析し、移動先となる全座標点を特定する。指令合成部102は、指令解析部101が特定した座標点が複数ある場合に、加工経路を合成する処理を行う。ブロック情報生成部103は、指令合成部102が合成した加工経路のブロック情報を生成する。
【0025】
図4乃至
図6を用いて、指令解析部101が解析可能な、本実施の形態特有の軸移動指令の仕様について説明する。
図4は、従来の軸移動指令の一例を示す図である。軸移動指令は、アルファベット(G,X,Y,Z等)で示されるアドレスと、数字で示される指令値との組み合わせで構成される。G91,G00等の指令はGコードと呼ばれ、数値制御装置1に加工を行うための準備機能を実行させるものである。F4000.等の指令は移動指令であり、数値は送り速度を示す。X1.5,Y2.,Z−95等の指令は、それぞれX軸、Y軸、Z軸の座標値又は移動量を指定している。従来の軸移動指令の記法によれば、1ブロック(加工プログラムの1行)で表現できる線分は、原則として1つのみである。
【0026】
一方、本実施の形態の軸移動指令では、1ブロックの指令で、従来の複数ブロック分の指令に相当する内容を記述できる。この軸移動指令は次のような特徴を有する。
(1)1ブロックの指令内で、各アドレスに対応する複数の指令値(座標値又は移動量等)を指定する。
【0027】
(2)アドレスと指令値との対応関係は、予め定められたルールに則って記述される。ルールは特に限定されないが、典型的には次のようなものがある。
(a)予め定められた複数種の区切り文字により、アドレスと複数の指令値との対応関係を定義する。例えば
図5の例では、“[”,“]”(かっこ)により区間毎の指令値の集合を定義し、“,”(カンマ)により各アドレスの指令値の区切りを示している。すなわち、[x1,y1,z1]は1区間目の線分を定義する指令値群であり、x1はX軸の指令値、y1はY軸の指令値、z3はZ軸の指令値である。同様に、[x2,y2,z2]は2区間目の、[x3,y3,z3]は3区間目の線分を定義する指令値群である。
【0028】
図6は、
図5に示したフォーマットに従って記述された軸移動指令であって、記述されている内容は
図4に示した従来の記法による軸移動指令と等価である。
図4において第2行から第3行にかけて記述されていた軸移動指令は、
図6では第2行に集約されている。同様に、
図4において第4行から第6行にかけて記述されていた軸移動指令は、
図6では第3行に集約されている。本実施の形態では、このように従来の複数ブロック分の指令を1ブロックの指令に集約することが可能である。
【0029】
(b)予め定められた区切り文字と数値の配列順とにより、アドレスと複数の指令値との対応関係を定義する。例えば、1区間目の線分を定義する指令値群x1,y1,z1(x1はX軸の指令値、y1はY軸の指令値、z1はZ軸の指令値)、2区間目の線分を定義する指令値群x2,y2,z2(x2はX軸の指令値、y2はY軸の指令値、z2はZ軸の指令値)、・・・n区間目の線分を定義する指令値群xn,yn,zn(xnはX軸の指令値、ynはY軸の指令値、znはZ軸の指令値)を、
X,Y,Z=x1,y1,z1,x2,y2,z2,・・・,xn,yn,zn
のように区間ごとにまとめて記述することもできるし、
X,Y,Z=x1,x2,・・・,xn,y1,y2,・・・,yn,z1,z2,・・・,zn
のようにアドレスごとにまとめて記述することもできる。
【0030】
(c)上記(a)又は(b)で示したような記述に、配列型変数を導入することもできる。
図7(第2行及び第4行)は、以下の軸移動指令を、配列型変数を導入して書き換えた例である。書き換え前の指令は、
図5に示したフォーマットに従って記述されたものである。
図7では、書き換え前の指令の右辺部を予め配列型変数に格納しておき(第2行)、当該変数を参照する形で指令を記述している(第4行)。
書き換え前:
N22 G01 X,Y,Z=[1,2,3],[2,3,4],[3,4,5],・・・,[10,11,12];
【0031】
(d)上記(a)又は(b)で示したような記述に、外部ファイル参照を導入することもできる。
図8(第3行)は、以下の軸移動指令を、外部ファイル参照を導入して書き換えた例である。書き換え前の指令は、
図5に示したフォーマットに従って記述されたものである。
図8では、書き換え前の指令の右辺部に相当する内容を予め外部ファイルに記述しておき(PATH1.csv)、当該ファイルの内容を参照する形で指令を記述している(第3行)。
書き換え前:
N22 G01 X,Y,Z=[0,0,0],[1,1,1],[2,2,2],・・・;
【0032】
同様に、
図9(第3行)は、以下の軸移動指令を、外部ファイル参照を導入して書き換えた例である。書き換え前の指令は、
図5に示したフォーマットに従って記述されたものである。
図9では、書き換え前の指令の右辺部に相当する内容を予め外部ファイルに記述しておき(CAM_DATA.NC)、当該ファイルの内容を参照する形で指令を記述している(第3行)。
書き換え前:
N22 G01 X,Y,Z=[X0,Y0,Z0],[X1,Y1,Z1],[X2,Y2,Z2],[X3,Y3,Z3],・・・;
【0033】
外部ファイルのファイル形式やフォーマットは、書き換え前の指令内容との対応関係が保たれていればいかなるものであっても構わない。但し、その対応関係を指令解析部101が認識し、書き換え前の指令内容を復元できる必要がある。
【0034】
(e)データセットを参照して指令を記述することもできる。
図10(第2行)は、以下の軸移動指令を、データセットを参照する形式に書き換えた例である。
図10では、書き換え前の指令のN21に続く部分の内容を予めデータセット(典型的には構造体)に格納しておき(CYCLE1)、当該データセットの内容を参照する形で指令を記述している(第2行)。
書き換え前:
N21 G00 X0. Y10. Z50.;
G01 Y20. Z55. F100.;
X10.;
G00 X15. Y20.;
【0035】
データセットのフォーマットは、書き換え前の指令内容との対応関係が保たれていればいかなるものであっても構わない。但し、その対応関係を指令解析部101が認識し、書き換え前の指令内容を復元できる必要がある。なお、データセットを用いる場合でも、アドレスはデータセット内に1回のみ記述すれば足りる。
【0036】
(3)指令値に変更のないアドレスについては、指令の記述を省略しても良い。例えば
図6の例では、Z軸が移動しない場合(第1行)には、X,Y軸に関する指令のみを記述し、Z軸については指令を記述していない。同様に、X軸が移動しない場合(第3行)、このブロックではY,Z軸に関する指令のみを記述し、X軸については指令を記述していない。
【0037】
(4)軸アドレスを定義しつつ、指令値(数値)を省略しても良い。例えば、以下の例のように記載できる。
例:
G01 X,Y=[0,0],[1,],[,2],・・・
これは、従来の記法であれば以下のように記述されていた指令を1行に集約して記述したものである。
従来:
G01 X0 Y0;
G01 X1;
G01 Y2;
【0038】
図16乃至
図19を用いて、指令合成部102が加工経路を合成する処理について具体的に説明する。通常の加工では、指令解析部101が特定した座標点を順に繋いで形成される加工経路に従って加工が行われる。一方、テスト運転など大まかな加工経路や加工の流れを確認したい場合には、加工経路中を構成する幾つかの方向ベクトルを合成し(経路合成処理)、簡素化された加工経路で運転を行うことができる。
図16及び
図17に示す例では、指令合成部102はトレランスに基づいて経路合成処理の実行可否を決定する。
図18及び
図19に示す例では、指令合成部102は経路長に基づいて経路合成処理の実行可否を決定する。
【0039】
(A)トレランスに基づく経路合成処理
トレランス(Tr)とは、2つの方向ベクトルからなる加工経路を合成した合成ベクトルを生成した場合における、2つの方向ベクトルの接続点と合成ベクトルとの距離をいう。例えば、始点から座標[x1,y1]に至る方向ベクトルと、座標[x1,y1]から座標[x2,y2]に至る方向ベクトルとを合成して、始点から座標[x2,y2]に至る合成ベクトルを生成した場合、座標[x1,y1]から合成ベクトルまでの距離がトレランスTrとなる(
図17参照)。
【0040】
本処理では、トレランスTrが予め定められた閾値未満である場合に合成ベクトルを生成する。一方、トレランスTrが予め定められた閾値以上である場合には合成ベクトルを生成しない。この制限により、本来の加工経路から大きく逸脱することなく、簡素化された加工経路を生成することができる。
【0041】
図16は、トレランスに基づく経路合成処理を説明するフローチャートである。指令合成部102は、指令解析部101が特定した複数の座標点のうち、最も加工順の若いものを読み込む(SA101)。指令合成部102は、現在位置(始点)を起点として、読み込んだ座標点に至る方向ベクトルを生成する(SA102)。また、生成した方向ベクトルを合成ベクトルの初期値に設定する(SA103乃至SA104)。
【0042】
図17(a)に示す例では、指令解析部101は、以下の指令
G01 X,Y =[x1,y1],[x2,y2],[x3,y3];
に基づき、以下の複数の座標点を特定する。
[x1,y1]
[x2,y2]
[x3,y3]
指令合成部102は、このうち座標[x1,y1]をまず読込み、始点すなわち現在位置から座標[x1,y1]に至る方向ベクトルを生成する。また、生成した方向ベクトルを合成ベクトルの初期値に設定する。
【0043】
次に、指令合成部102は、SA101で読み込んだ座標点を新たな起点として、次の加工順の座標点を読み込み(SA101)、起点から読み込んだ座標点に至る方向ベクトルを生成する(SA102)。
【0044】
図17(a)に示す例では、指令合成部102は座標[x2,y2]を読込み、起点[x1,y1]から座標[x2,y2]に至る方向ベクトルを生成する。
【0045】
指令合成部102は、生成した方向ベクトルを合成ベクトルに足し込んで、新たな合成ベクトルを生成する(SA103乃至SA107)。
【0046】
図17(b)に示す例では、始点から座標[x1,y1]に至る合成ベクトルと、座標[x1,y1]から座標[x2,y2]に至る方向ベクトルとを足し込んで、始点から座標[x2,y2]に至る新たな合成ベクトルを生成している。
【0047】
指令合成部102は、この合成処理にかかるトレランスTr、すなわち新たな合成ベクトルの基となった2つのベクトルの接続点と、新たな合成ベクトルと、の距離を計算する(SA108)。
【0048】
図17(b)に示す例では、新たな合成ベクトル(始点から座標[x2,y2]に至る新たな合成ベクトル)の基となった2つのベクトル(始点から座標[x1,y1]に至る旧い合成ベクトルと、座標[x1,y1]から座標[x2,y2]に至る方向ベクトル)の接続点は[x1,y1]であるから、[x1,y1]と新たな合成ベクトルとの距離Trを算出する。
【0049】
指令合成部102は、トレランスTrと許容値(閾値)とを比較する(SA109)。トレランスTrが予め定められた許容値未満であれば、指令合成部102は、SA101乃至SA108の処理を繰り返し、新たな座標点をさらに読み込んで新たな合成ベクトルを生成する。
【0050】
例えば、
図17(b)に示すトレランスTrが許容値未満であれば、指令合成部102は、新たな座標点[x3,y3]を読込み、前回読み込んだ座標点[x2,y2]から新たに読み込んだ座標点[x3,y3]に至る方向ベクトルを生成し、この方向ベクトルと前回の合成ベクトルとを足し込んで、始点から座標[x3,y3]に至る新たな合成ベクトルを生成する。
【0051】
一方、トレランスTrが予め定められた許容値以上であれば、指令合成部102は、今回生成した合成ベクトルを破棄し、前回生成した合成ベクトルをブロック情報生成部103に転送する。これにより、前回生成した合成ベクトルが、簡素な加工経路として採用される。また、指令合成部102は、前回読み込んだ座標値を起点に設定し、今回生成した方向ベクトルを新たな合成ベクトルとして設定する(SA111乃至SA113)。以下、指令解析部101が特定した複数の座標点を網羅するまで、同様の処理を繰り返す。
【0052】
例えば、
図17(c)に示すトレランスTrが許容値以上であれば、指令合成部102は、今回生成した合成ベクトル(始点から座標[x3,y3]に至る新たな合成ベクトル)を破棄し、前回生成した合成ベクトル(始点から座標[x2,y2]に至る旧い合成ベクトル)を加工経路として確定させる(
図17(d))。
【0053】
(B)経路長に基づく経路合成処理
経路長(Tr)とは、2つの方向ベクトルからなる加工経路を合成した合成ベクトルを生成した場合における、合成ベクトルの長さをいう。例えば、始点から座標[x1,y1]に至る方向ベクトルと、座標[x1,y1]から座標[x2,y2]に至る方向ベクトルとを合成して、始点から座標[x2,y2]に至る合成ベクトルを生成した場合、始点から座標[x2,y2]までの距離が経路長となる(
図19参照)。
【0054】
本処理では、経路長が予め定められた閾値未満である場合に合成ベクトルを生成する。一方、経路長が予め定められた閾値以上である場合には合成ベクトルを生成しない。この制限により、本来の加工経路から大きく逸脱することなく、簡素化された加工経路を生成することができる。
【0055】
図18は、経路長に基づく経路合成処理を説明するフローチャートである。指令合成部102は、指令解析部101が特定した複数の座標点のうち、最も加工順の若いものを読み込む(SB101)。指令合成部102は、現在位置(始点)を起点として、読み込んだ座標点に至る方向ベクトルを生成する(SB102)。また、生成した方向ベクトルを合成ベクトルの初期値に設定する(SB103乃至SB104)。
【0056】
図19(a)に示す例では、指令解析部101は、以下の指令
G01 X,Y =[x1,y1],[x2,y2],[x3,y3];
に基づき、以下の複数の座標点を特定する。
[x1,y1]
[x2,y2]
[x3,y3]
指令合成部102は、このうち座標[x1,y1]をまず読込み、始点すなわち現在位置から座標[x1,y1]に至る方向ベクトルを生成する。また、生成した方向ベクトルを合成ベクトルの初期値に設定する。
【0057】
次に、指令合成部102は、SB101で読み込んだ座標点を新たな起点として、次の加工順の座標点を読み込み(SB101)、起点から読み込んだ座標点に至る方向ベクトルを生成する(SB102)。
【0058】
図19(a)に示す例では、指令合成部102は座標[x2,y2]を読込み、起点[x1,y1]から座標[x2,y2]に至る方向ベクトルを生成する。
【0059】
指令合成部102は、生成した方向ベクトルを合成ベクトルに足し込んで、新たな合成ベクトルを生成する(SB103乃至SB107)。
【0060】
図19(b)に示す例では、始点から座標[x1,y1]に至る合成ベクトルと、座標[x1,y1]から座標[x2,y2]に至る方向ベクトルとを足し込んで、始点から座標[x2,y2]に至る新たな合成ベクトルを生成している。
【0061】
指令合成部102は、この合成処理により生成された新たな合成ベクトルの経路長を計算する(SB108)。
【0062】
図19(b)に示す例では、新たな合成ベクトル(始点から座標[x2,y2]に至る新たな合成ベクトル)の長さを算出する。
【0063】
指令合成部102は、経路長と許容値(閾値)とを比較する(SB109)。経路長が予め定められた許容値未満であれば、指令合成部102は、SB101乃至SB108の処理を繰り返し、新たな座標点をさらに読み込んで新たな合成ベクトルを生成する。
【0064】
例えば、
図19(b)に示す経路長が許容値未満であれば、指令合成部102は、新たな座標点[x3,y3]を読込み、前回読み込んだ座標点[x2,y2]から新たに読み込んだ座標点[x3,y3]に至る方向ベクトルを生成し、この方向ベクトルと前回の合成ベクトルとを足し込んで、始点から座標[x3,y3]に至る新たな合成ベクトルを生成する。
【0065】
一方、経路長が予め定められた許容値以上であれば、指令合成部102は、今回生成した合成ベクトルを破棄し、前回生成した合成ベクトルをブロック情報生成部103に転送する。これにより、前回生成した合成ベクトルが、簡素な加工経路として採用される。また、指令合成部102は、前回読み込んだ座標値を起点に設定し、今回生成した方向ベクトルを新たな合成ベクトルとして設定する(SB111乃至SB113)。以下、指令解析部101が特定した複数の座標点を網羅するまで、同様の処理を繰り返す。
【0066】
例えば、
図19(c)に示す経路長が許容値以上であれば、指令合成部102は、今回生成した合成ベクトル(始点から座標[x3,y3]に至る新たな合成ベクトル)を破棄し、前回生成した合成ベクトル(始点から座標[x2,y2]に至る旧い合成ベクトル)を加工経路として確定させる(
図19(d))。
【0067】
(C)その他の閾値に基づく経路合成処理
上述の実施の形態では、線分合成の実施要否の判定指標としてトレランスや経路長を用いたが、ふさわしい種々の指標を用いて同様の判定を行うことが可能である。以下に幾つかの例を示す。
・送り速度
指令合成部102は、送り速度が同じ複数の線分を合成することができる。例えば、指令解析部101が以下の例のような加工プログラムを読み込んだ場合を考える。
例:
G01 X,Y,F = [x1,y1,200],[x2,y2,],[x3,y3,],[x4,y4,100],・・・;
【0068】
指令解析部101の解析により、現在位置(始点)から座標[x1,y1]に至る線分、座標[x1,y1]から座標[x2,y2]に至る線分、及び座標[x2,y2]から座標[x3,y3]に至る線分は、いずれも同じ送り速度F=200が指令されていることが分かる。このとき、指令合成部102は、同じ送り速度Fが指令されている、連続する複数の線分を合成し、1つの線分を生成して加工経路とする。この例では、現在位置(始点)から座標[x3,y3]に至る線分が合成後の加工経路となり、以下を指令したときと同じ結果となる。
合成後:
G01 X,Y,F = [x3,y3,200],[x4,y4,100],… ;
【0069】
・主軸回転速度
指令合成部102は、主軸回転速度(S指令)が同じ複数の線分を合成することができる。具体的な処理内容は、上述の送り速度に基づく線分合成と同様であるため説明を省略する。
【0070】
・Gコード
指令合成部102は、Gコード指令が同じ複数の線分を合成することができる。この際、特定のGコード指令のみを合成の対象とすることもできる。例えば、指令合成部102は、Gコード「G01」のみを合成の対象とすることができる。この場合、同じGコード「G01」が指令された複数の連続する線分を合成する。一方、「G02」など他のGコード補間指令がなされている線分は合成しない。
【0071】
・Tコード、モード指令など
指令合成部102は、Tコード(工具交換)指令、又は加工状態等を示すモード指令が同じ複数の線分を合成することができる。具体的な処理内容は、上述のGコードに基づく線分合成と同様であるため説明を省略する。
【0072】
図11及び
図12のフローチャートを用いて、数値制御装置1の特徴的な動作について説明する。
図11は、従来の数値制御装置の動作を示す図である。数値制御装置は、加工プログラムの1ブロックを読み込み(S1)、解析する(S2)。そして、そのブロックに記述された1線分のブロック情報を生成する(S4)。なお、数値制御装置は、S1乃至S3の処理に加え、モーダル切換えや各種信号の判定等の付随的な処理も、1ブロックごとに実施する(S4)。数値制御装置は、加工プログラムの全てのブロックについてS1乃至S4の処理を繰り返す。
【0073】
図12は、本実施の形態にかかる数値制御装置1の動作を示す図である。数値制御装置1の指令解析部101は、加工プログラムの1ブロックを読み込み(S101)、解析する(S102)。ここで加工プログラムが、上述のフォーマットに従って記述された、1ブロックの指令で複数区間の線分を定義するものである場合(
図13(a)参照)、指令解析部101は当該ブロックを解析し、そこに記述された複数の座標値又は移動量を抽出する(
図13(b)参照)。
【0074】
指令合成部102は、指令解析部101が複数の座標値を出力した場合(S103)、それらの座標値(
図14(a)参照)に基づいて、加工経路を生成する。このとき、本来の加工経路を構成する複数の方向ベクトルの一部を合成し、簡素化された加工経路で置き換える(S104)(
図14(b)及び(c)参照)。
【0075】
ブロック情報生成部103は、指令合成部102が合成した加工経路のブロック情報を生成する(S105)。その後、モーダル切換えや各種信号の判定等の付随的な処理を実行し(S106)、このブロックの処理を終了する。数値制御装置1は、加工プログラムの全てのブロックについてS101乃至S106の処理を繰り返す。
【0076】
本実施の形態によれば、数値制御装置1は、本発明では、1ブロックずつプログラムを読み込みながら直線補間ブロックかの判定を行うことなく、また、先読み処理の最大ブロック数に依存することなく、複数ブロックの合成を行うことが可能となる。
【0077】
なお、本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨を損なわない範囲において適宜変更することが可能である。