JDGMILL 講座

 

ミニオイクリッド言語

JDGMILL設定モード

NCデータの構造

サンプル設定の読み込み

設定の保存

CLTデータ → NCデータへの変換

プログラムの先頭

スペース (空白) の処理

工具交換

 

ミニオイクリッド言語

ミニオイクリッド言語

JDGMILL ではミニオイクリッド言語と呼ばれるプログラム言語が使用されています。
JDGMILL ではこのミニオイクリッド言語でプログラムを作成する事でポストプロセッサの設定を可能としています。

ではミニオイクリッド言語とは何でしょう?
名前から簡易的なオイクリッド言語というのは見て取れます。

ではオイクリッド言語とは何でしょう?

オイクリッドではメニューによる操作以外にキーボードからコマンドを入力して処理をさせるという事ができます。
その際に入力するコマンドがオイクリッド言語と呼ばれるものです。
オイクリッド言語は1つ1つ入力して処理させる事もできますが、処理させたい順に複数並べて一括で処理させる事もできます。
オイクリッド言語が複数並べられたものはオイクリッド言語プログラムと呼ばれています。
オイクリッド言語プログラムを利用すると複雑な計算を自動で処理させたり、メニュー操作では手数の多くなるような処理をワンタッチで処理させたりと、オイクリッドをより使いやすく便利にする事が可能になります。

 

オイクリッド言語には非常に多くのコマンドが用意されており、これらのコマンドを組合わせる事であらゆる処理を可能としています。
しかし、CLT データを NC データに変換するだけのポストプロセッサである JDGMILL にはすべてのオイクリッド言語は必要ではありません。
オイクリッド言語の一部のコマンドだけが使える、機能を限定したオイクリッド言語がミニオイクリッド言語として誕生しました。

ミニオイクリッド言語とはいえ、基本はオイクリッド言語です。
JDGMILL 講座その1ではオイクリッド言語について勉強してみましょう。

オイクリッド言語の勉強をするには、JDGMILL ではなくオイクリッドの中でコマンドを入力した方が結果もリアルタイムに返ってきて動作がわかり易いので、まずはオイクリッドの中で見てみることにしましょう。

それではオイクリッドを起動してください。
オイクリッドを起動したら、メニュー「ファイル」→「コマンド画面」を選びます。

そうすると画面内に下図のような画面が現れると思います。この画面はコマンド画面と言い、処理結果を見たり、オイクリッド言語のコマンドを入力する時に使用します。コマンド画面は「ファイル」→「コマンド画面」を選ぶ度に出たり消えたりします。

では実際にオイクリッド言語を入力してみましょう。次行のコマンドをコマンド画面に入力してみてください。

A := 123 ;


(入力の様子)

コマンドを入力後、Enterキーを押すとコマンドが実行されます。

入力した内容に間違いがあって正しく処理されなかった場合には間違いのある場所を示すと共にエラーメッセージが表示されます。


左図は入力間違いの1例です。表示されるエラーメッセージは間違いの内容によって変わります。

コマンドが正しく処理された場合には次のように表示されます。

コマンド画面には2行の表示が出てきています。
この場合、1行目は入力したコマンド、2行目はコマンドの処理結果を表しています。

さて、この入力したコマンドは何をするためのコマンドだったのでしょう?
このコマンドは代入という処理を行なわせるためのコマンドです。

それでは代入とは何をするものなのでしょうか?

オイクリッド言語では変数というものが使われます。
変数とは数値などの値を保管しておくための入れ物です。変数には名前があり、名前で個々の変数を区別しています。
代入とはこの変数に値を保管させる事です。

先程のコマンドでは名前をAとした変数に123を代入しなさいという意味になります。
イメージで表すと下図のようになります。

:= は代入を表すコマンドです。代入は常に右辺から左辺に向かって行われます。
ですから先程のコマンドでは右辺にある 123 が左辺の A に代入されるということになります。
代入コマンドを分解して見てみると下表のようになります。

:= 123 ;
変数 代入 コマンドの終了

この表をよくみるとコマンドの終了というものがあります。
オイクリッド言語では必ずコマンドの終わりに ; (セミコロン) を付ける決まりになっています。
これはセミコロンによって1つのコマンド指示の終了位置を判断しているためです。
例えば、以下のように2つのコマンドを処理させるつもりで2行に分けてそれぞれのコマンドを入力したとします。

A := 123
B := 456 ;

一見すると、変数 A に 123 、変数Bに 456 を代入するという2つのコマンドに見えます。
ところがよく見ると1行目の最後のセミコロンが抜けています。
オイクリッド言語ではセミコロンまでを1つのコマンドとして判断しますので、オイクリッド言語の中では次のように解釈されます。

:= 123 B := 456 ;

この場合、変数 A に 123B := 456 を代入しなさいという意味になりますが、変数に代入式を代入するという事はオイクリッド言語の文法では認められていないのでエラーとなります。もし文法が認められていたとしてもこの場合、変数 A に代入される内容が期待したものと違う物になりますのでこれは間違いということになります。
オイクリッド言語を記述する時によくセミコロンを書き忘れることがありますので注意するようにしてください。

では次に以下のコマンドをコマンド画面に入力してみてください。

PRINT (A) ;

(
入力の様子)

コマンドを入力後、Enterキーを押すとコマンドが実行されコマンドが正しく処理された場合には次のように表示されます。

コマンド画面には2行の表示が出てきています。
この場合、1行目は入力したコマンド、2行目はコマンドの処理結果を表しています。
処理結果を見ると、123 と表示されています。このコマンドは何をするコマンドだったのでしょう?

このコマンドは値を表示しなさいというコマンドです。
書式は PRINT (  ) ;  で表し、表示させたい値を括弧の中に記述します。

上記の例では PRINT(A); と入力していましたので括弧の中にある A が値として表示されることになります。
でも何か変です。
表示される値はAのはずなのに、処理結果として表示されたのは 123 です。これはどういう事でしょう?

じつは、A  というのは A という文字そのものの事ではなく、変数の名前を表しています。
そのため、このコマンドは変数 A の内容を表示しなさいという意味で処理されて、処理結果として 123 を表示したのです。
123 というのは先程、代入のところで変数 A に 123 を代入しましたのでその値が表示されていたわけです。

では次に、PRINT ("A") ;  と入力してみてください。


(入力の様子)

コマンドを入力後、Enterキーを押すとコマンドが実行されコマンドが正しく処理された場合には次のように表示されます。

コマンド画面には2行の表示が出てきています。
この場合、1行目は入力したコマンド、2行目はコマンドの処理結果を表しています。
処理結果を見ると、今度は A と表示されています。

同じように表示させたい値に A を指定したのに、123 と表示された時の場合と何が違うのでしょう?

値の部分を見比べてください。
123 と表示された時は A と書いて、A と表示された時は ”A” と書いています。
違いがわかりましたか?
そうです。 ” ”  (ダブルコーテーション) で囲っているか、いないかの違いです。

ダブルコーテーションを付けていない時は、指示した値は変数名として解釈されます。
それに対してダブルコーテーションを付けて囲った場合にはその内容がストリング (文字列) として解釈されます。
ストリングが指示された場合にはその内容がそのまま表示されますので、処理結果には A と表示されたわけです。

 

では、おさらいです。

これまでに3種類のオイクリッド言語コマンドについて見てきました。

代入

A := 123 ;

変数の内容を表示

PRINT ( A ) ;

ストリングを表示

PRINT ( "A" ) ;

これから設定しようとしている JDGMILL ではこの3種類のオイクリッド言語コマンドが理解できていれば十分です。

以下は応用です。特に PRINT コマンドに注目してください。
3つの変数とストリングを  , (カンマ) で区切って続けて書いています。

A := 123 ;

変数 A に 123 を代入

B := 456 ;

変数 B に 456 を代入

C := " TEST " ;

変数 C にストリング " TEST " を代入

PRINT ( A, B, C, " XYZ " ) ;

変数 A・B・C とストリング " XYZ " を続けて表示

結果は次のようになります。

このようにカンマで区切って表示したい値を並べると複数の値を1行にまとめて表示させる事ができます。

 


JDGMILL設定モード

JDGMILL 設定モード

JDGMILL には通常の CLT データを NC データに変換する変換モードの他に、出力される NC データの内容を自由にカスタマイズすることのできる設定モードというのがあります。

それでは設定モードにして見ましょう。
まず、JDGMILL を起動してください。下図のような画面が出てくると思います。
 


( 画像をクリックすると拡大図を表示 )

左上の「File」の中の「Configuration」を選択してみてください。

JDGMILL の画面の左側にツリー画面が出てきます。このツリー画面が出ている状態が設定モードです。
以後、JDGMILL のカスタマイズを行うときはこの設定モードに切り替えて行います。

 
( 画像をクリックすると拡大図を表示 )

ちなみにもう一度、「File」の中の「Configuration」を選択するとツリー画面が消えます。
「File」の中の「Configuration」を選択する度にツリー画面が出たり消えたりします。


NCデータの構造

NCデータの構造

まずは次のNCデータを例にして見てみましょう。

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
N1G00G90G17G49G40G80
N2G28G91Z0
N3(MTRACEUV_01)
N4(1ST CHANGE TOOL NO=1. TP=1. RR=10. RV=10. L=80. )
N5T1M06
N6G00X-10.Y-10.S5000M03
N7G43H1Z50.
N8Z5.
N9G01Z0F150
N10Y10.F300
N11X10.
N12Y-10.
N13X-10.
N14Z5.
N15G00Z50.
N16G28G91Z0
N17M30
%

JDGMILLでは NCデータを以下の 4つのブロックに分けて考えていきます。

それでは、先ほどの NCデータを 4つのブロックに分けて見ましょう。

プログラムの先頭
%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
N1G00G90G17G49G40G80
N2G28G91Z0

工具交換
N3(MTRACEUV_01)
N4(1ST CHANGE TOOL NO=1. TP=1. RR=10. RV=10. L=80. )
N5T1M06

加工ブロック
N6G00X-10.Y-10.S5000M03
N7G43H1Z50.
N8Z5.
N9G01Z0F150
N10Y10.F300
N11X10.
N12Y-10.
N13X-10.
N14Z5.
N15G00Z50.

プログラムの終わり
N16G28G91Z0
N17M30
%

このように分けることができました。

JDGMILLでは 4つのブロックの内、加工ブロックを除いた 3つのブロックに対してそれぞれに出力内容を設定する項目があります。

 


サンプル設定の読み込み

サンプル設定の読み込み

JDGMILL を初めて起動した時はまだ内部の設定がされていない状態になっています。
個々に設定をしていく事もできますが、すべてを漏れなく設定していくのは大変ですのであらかじめ用意されているサンプル設定を利用する事にします。
JDGMILL で設定した内容を保存したファイルのファイル名は拡張子が .dgm となっています ( 例: sample.dgm ) 。
サンプル設定ファイルはオイクリッドがインストールされたフォルダ下の 2003\tralib\dgm の中にあります。
( 例: C:\win32app\konsys\euklid\2003\tralib\dgm ) 

オイクリッドがインストールされているフォルダがわからない場合の調べ方はこちらをご覧ください。

それではサンプル設定ファイルを読み込んでみましょう。
JDGMILLのメニュー「File」→「Open」を選び、ファイル選択ダイアログの中でサンプル設定ファイルがあるフォルダに
移動してください。
( JDGMILLを初めて起動した直後の場合は、デフォルトがサンプル設定ファイルのあるフォルダになっています ) 。

ファイル選択ダイアログの中にはいろいろなサンプル設定ファイル ( .dgm ) がありますが、
今回はdg3_fanuc_template.dgmを選んでみましょう。
dg3_fanuc_template.dgmを選択してOpenボタンを押してください。

サンプル設定が読み込まれるとJDGMILLの画面上部に読み込んだ設定ファイルのファイル名が表示されます。

 


設定の保存

設定の保存

その3ではサンプルの設定ファイルを読み込みしました。
しかしこのままの状態で設定の変更を行うとオリジナルのサンプル設定ファイルを書き変えてしまう事になります。
そこで、自分用の設定ファイルとして名前を付けて保存してみましょう。

ファイル保存ダイアログが出るので、好きな名前を付けてSaveボタンを押します。
下図の例では test という名前を付けています。

これで test.dgm というファイルが作られます。
以降、このファイルに対して変更を加えていくことにします。


CLTデータ→NCデータへの変換

CLT データ → NC データへの変換

それではここで CLT データをNCデータに変換する時の操作方法を見ていきましょう。
ツリー画面の一番上の「NC-File Generator」を選択してください。もしくは設定モードを解除してください。

右側の画面が下図のようになります


( 画像をクリックすると拡大図を表示 )

CLT データを NC データに変換するには、CL Data-Files の中に変換したい CLT データを登録していきます。
登録するには Add ボタンを押してファイル選択ダイアログから選択する方法と、エクスプローラーからドラッグ&ドロップで登録する方法のいずれの方法でも行なえます。

Addボタンを押してCLTファイルを選択

エクスプローラーからドラッグ&ドロップによる登録

CLT データが登録された状態

これで準備ができました。後は変換を開始するだけです。
変換の開始は画面下の Run ボタンを押します。 変換は登録した CLT データの上から順番にされていきます。

変換の様子は PP-Infomations に表示されます。
最後に DGMILL finished と表示されれば変換終了です。
変換されたNCデータは CLT データがあった同じフォルダ内にできています。

変換の様子


プログラムの先頭

プログラムの先頭

まずはプログラムの先頭について見ていきましょう。
JDGMILL を設定モードにし、ツリー画面の中の「CNC Command」の中の「Start of program」を選択してください。

 

右側の画面が下図のようになります。 


( 画像をクリックすると拡大図を表示 )

Start of Program 1 の部分を見てください。

ここには「FPSTA1」と「Output parameter」の2個のボタンがあります。このボタンを押すとそれぞれについての詳細な設定ができます。

FPSTA1

FPSTA1 とはプログラムの先頭部分を NCデータに出力させるための JDGMILL 内の命令コードです。
NC データへの変換が行われる時にはプログラムの先頭部分で FPSTA1 が実行され、Start of Program 1 に設定されている内容に従って NC データが出力されます。
サンプルでは FPSTA1 ボタンの右横の欄が空欄になっています。これは何も出力しないということを表しています。
ということはプログラムの先頭部分には何も出力されない NCデータを作るのでしょうか?
いいえ、そうではありません。
プログラムの先頭部分に出力する内容は次の Output parameter とセットで設定しています。
今回使用しているサンプルでは FPSTA1 は空白にして次の Output parameter ですべての出力内容を設定しています。

PX01 := NOSATZ;
NOSATZ := 0;
PRINT("%");
PRINT(PID,"(",PARTXT,")");
PRINT("(", DMNAM, ")" );
PRINT("(", DPPNA, DVERS, ")" );
PRINT("(", DNCF, ")" );
PRINT("(", DATE, DTIM, ")" );
NOSATZ := PX01;

PRINT("G00 G90 G17 G49 G40 G80");
PRINT("G28 G91 Z0");

プログラムの中で PRINT と書かれている部分が実際にNCデータに出力している部分です。
ではPRINTの部分だけを抜粋して見てみましょう。

PRINT("%");
PRINT(PID,"(",PARTXT,")");
PRINT("(", DMNAM, ")" );
PRINT("(", DPPNA, DVERS, ")" );
PRINT("(", DNCF, ")" );
PRINT("(", DATE, DTIM, ")" );
PRINT("G00 G90 G17 G49 G40 G80");
PRINT("G28 G91 Z0");

PRINTは括弧の中の値が表示されるというものですので、今度は値だけを抜粋してみましょう。

"%"
PID, "(", PARTXT, ")"
"(", DMNAM, ")"
"(", DPPNA, DVERS, ")"
"(", DNCF, ")" );
"(", DATE, DTIM, ")"
"G00 G90 G17 G49 G40 G80"
"G28 G91 Z0"

このようになります。
それでは各行を順番に見ていきましょう。

まずは1行目です。
1行目の値はダブルコーテーションで囲まれた % です。ダブルコーテーションで囲まれた値はストリング ( 文字列 ) と呼ばれ、その内容がそのまま出力されるというものでしたので、1行目ではNCデータに%がそのまま書き込まれることになります。
このように、決まった文字列をダブルコーテーションで囲ってPRINTコマンドで出力すれば、NCデータに任意の命令を書き出す事ができるわけです。

次は2行目を見てみましょう。
2行目は PID, "(", PARTXT, ")" となっています。この行はカンマで区切って4つの値を1行に出力するようにしています。
では4つの値を詳しく見てみましょう。

PID
"("
PARTXT
")"

2番目と4番目の値はダブルコーテーションで囲まれています。
従ってストリングとなりますのでこの値はそのまま NC データに出力されます。
それではダブルコーテーションに囲まれていない1番目と3番目の値は何でしょう?
ダブルコーテーションに囲まれていないということは、この値は変数であることを示しています。
しかし JDGMILL の中でこんな名前の変数を定義した覚えはありません。これはどういう事なのでしょう。

JDGMILL では予め決められた変数があります。PID と PARTXT もその内の1つです。
これらの変数は読み込んだ CLT ファイルの内容に応じて値が自動的に代入されるようになっており、この変数の内容を PRINT コマンドで出力すれば CLT ファイル内の情報を NCデータに出力することができます。

では PID と PARTXT は何の情報が代入された変数なのでしょうか?
それぞれ次の情報が代入されています。

PID −−→ PROGID (プログラム番号)
PARTXT −−→  PARTNO (パートNo.)

PROGID と PARTNO はオイクリッドの加工計算時に入力した情報です。
例えば、オイクリッドでの加工計算時に PROGID に 9001、PARTNO に TEST と入力していたとすると、PID には 9001、PARTXT にはTEST が代入されていることになります。その内容を PRINT コマンドで並べて出力しますので、出力される内容は次のようになります。

O9001 ( TEST )

これがそのまま NC データに書き込まれる事になります。

しかし何か変です。
PID には PROGID の値が代入されている筈です。オイクリッドの加工計算の中で PROGID には数字しか入れていなかった筈なのに出力結果は O9001 となっています。先頭の O は何処から出力されているのでしょう?

JDGMILL で使われている変数は単純な値の保存だけでなく、その値をどのように NC データ中に出力するかを決める設定ができるようになっています。
PID では値の出力時に O を付加して出力するように設定されていたために出力結果が O9001 となったのです。

では、PID に関する設定をしている部分を見てみましょう。
ツリー画面の中の「NC-Parameter list」を選択してください。

右側の画面が下図のようになります。 


( 画像をクリックすると拡大図を表示 )

この画面内の Active NC-Parameter list の部分を見てください。
このリストの中に PID がありますのでそれを選択します。

PID を選択するとActive NC-Parameter list の下部分にある Address text "O" と表示されます。
これが NC データ中に出てきた O の正体です。
この文字を変えれば O 以外の文字で出力することもできますし、文字を消してしまえば PROGID の数字のみを出力することもできます。

残りの部分を見ていきましょう。

PRINT("%");
PRINT(PID,"(",PARTXT,")");
PRINT("(", DMNAM, ")" );
PRINT("(", DPPNA, DVERS, ")" );
PRINT("(", DNCF, ")" );
PRINT("(", DATE, DTIM, ")" );
PRINT("G00 G90 G17 G49 G40 G80");
PRINT("G28 G91 Z0");

PRINT は括弧の中の値が表示されるというものでしたので、値だけを見てみると次のようになります。

"%"
PID, "(", PARTXT, ")"
"(", DMNAM, ")"
"(", DPPNA, DVERS, ")"
"(", DNCF, ")" );
"(", DATE, DTIM, ")"
"G00 G90 G17 G49 G40 G80"
"G28 G91 Z0"

ダブルコーテーションで囲まれた値はストリング ( 文字列 ) と呼ばれ、その内容がそのまま出力されるというものでしたので、その内容がそのまま NC データに出力されます。
では、それ以外の DMNAMDPPNADVERSDNCFDATEDTIM についてはどうでしょう?
ダブルコーテーションに囲まれていないということは、この値は変数であることを示しています。
JDGMILL には予め決められた変数があることは前回説明しました。

これらの変数が予め決められた変数かどうかを JDGMILLパラメータ から探してみましょう。
一覧表から各変数は以下のように定義されていることがわかります。

DMNAM −−→ NC機械名
DPPNA −−→ ポストプロセッサー名
DVERS −−→ ポストプロセッサーバージョン
DNCF −−→ 完全なNCファイル名
DATE −−→ 日付,書式: DD-MON-YYYY
DTIM −−→ 時間

これらの内容からこのプログラムでは以下のように NC データが出力されることになります。

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
G00G90G17G49G40G80
G28G91Z0

この内、ピンク色の部分は変数 ( パラメータ ) の内容が出力された部分で、変数の内容は CLT ファイルの内容によって変化します。
必ずしもこの通りに出力されるというわけではありませんので注意してください。

このように、PRINT コマンドの後に出力したい内容を並べれば、その内容がそのまま NC データに出力されます。
ですから、自分の出力したい内容に合わせて PRINT コマンドの内容を編集すれば NC データの内容を思い通りに変える事ができるわけです。

それではここで、編集の練習をしてみましょう。
左側が標準の状態で出力した NC データです。その内、赤字の箇所は出力しないようにして右側の NC データのようになるようにするとします。

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
G00G90G17G49G40G80
G28G91Z0

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
G00G90
G28G91Z0

この場合、G17G49G40G80 を出力している箇所を探し、その箇所を削除してしまえば出力されないようになりますので、以下の手順で編集していきます。

  1. Start of program を開き、Start of program 1の中の Output parameter ボタンを押して、プログラムの編集画面を出します。
    ( 一連の手順は プログラムの先頭 を参照 )
     
  2. プログラムの中からG00G90G17G49G40G80を出力している部分を探します。
    この中から、最後から2行目のPRINTコマンドで出力されていることを見つけることができると思います。
     
    PX01 := NOSATZ;
    NOSATZ := 0;
    PRINT("%");
    PRINT(PID,"(",PARTXT,")");
    PRINT("(", DMNAM, ")" );
    PRINT("(", DPPNA, DVERS, ")" );
    PRINT("(", DNCF, ")" );
    PRINT("(", DATE, DTIM, ")" );
    NOSATZ := PX01;

    PRINT("G00 G90 G17 G49 G40 G80");
    PRINT("G28 G91 Z0");

     

  3. 最後から2行目の PRINT("G00 G90 G17 G49 G40 G80");PRINT("G00 G90"); と書き変えます。
     
    PX01 := NOSATZ;
    NOSATZ := 0;
    PRINT("%");
    PRINT(PID,"(",PARTXT,")");
    PRINT("(", DMNAM, ")" );
    PRINT("(", DPPNA, DVERS, ")" );
    PRINT("(", DNCF, ")" );
    PRINT("(", DATE, DTIM, ")" );
    NOSATZ := PX01;

    PRINT("G00 G90");
    PRINT("G28 G91 Z0");

     

  4. OKを押して編集画面を閉じます。
     
  5. File Save を選択して設定を保存します。

これで完了です。
一度、CLT データを NC データに変換して確認してみましょう。適当な CLT データを用意してNCデータに変換してみてください。(手順は CLTデータ→NCデータへの変換 を参照)
変換された NC データの先頭部分が次のようになっていれば編集成功です。
もし、変換の途中でエラーが表示されるようであれば、編集した内容のどこかに間違いがあります。
もう一度編集画面を出して間違い箇所を探し、修正してください。

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
G00G90
G28G91Z0

 


スペースの処理

スペース ( 空白 ) の処理

プログラムの先頭 について見てきました。
その中で、プログラム中に PRINT("G00 G90 G17 G49 G40 G80"); のように出力する内容にスペース ( 空白 ) を含んでいるものがありました。

PRINT("%");
PRINT(PID,"(",PARTXT,")");
PRINT("(", DMNAM, ")" );
PRINT("(", DPPNA, DVERS, ")" );
PRINT("(", DNCF, ")" );
PRINT("(", DATE, DTIM, ")" );
PRINT("G00 G90 G17 G49 G40 G80");
PRINT("G28 G91 Z0");

しかし、実際に出力された NC データを見てみるとスペース ( 空白 ) が無くなっています。
これはどういう事でしょう?

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
G00G90G17G49G40G80
G28G91Z0

JDGMILL ではプログラム中のスペースの部分をすべて詰めて NC データを出力する仕様になっています。
そのため、PRINT コマンドの中でいくらスペースを入れても NC データにはスペースは出力されません。

一般的な NC 制御装置ではスペースは意味を持たないため、通常は省略して使用されます。
これには NC データのサイズをできる限り小さくするという目的もあります。

しかし、特殊な制御装置などでどうしてもスペースを入れないといけない場合もあるでしょう。
そのような時はどうすればいいのでしょうか?
そういう時はスペースの代わりに || ( パイプラインを2文字続けて並べる ) を書けば、その部分にスペースが出力されるようになります。
( パイプラインはSHIFTキーを押しながら\キーを押すと出ます。)

では、プログラムを次のように変えてみましょう。

PRINT("%");
PRINT(PID,"(",PARTXT,")");
PRINT("(", DMNAM, ")" );
PRINT("(", DPPNA, DVERS, ")" );
PRINT("(", DNCF, ")" );
PRINT("(", DATE, DTIM, ")" );
PRINT("G00||G90||G17||G49||G40||G80");
PRINT("G28 G91 Z0");

以前と違うのは、スペースの代わりに || を入れている点です。
このプログラムで出力される N Cデータは以下のようになります。

%
O9001( JDGMILL-TEST )
( Standard )
( DGMILL 2003 )
( D:\eukuser\test.ppp )
( 31-Jul-2003 16:27:54 )
G00 G90 G17 G49 G40 G80
G28G91Z0

スペースは基本的に出力しないように設定して、必要に応じてその箇所だけに || を使ってスペースを出すようにすると良いでしょう。

プログラム中にいくらスペースを入れても NC データには出ませんので、この特性をうまく利用してプログラムを見やすく書くこともできます。
以下の2つのプログラムは同じNCデータが出力されるプログラムです。違いはスペースを間に挿入しているか、いないかです。

スペースなし スペースあり

PRINT("G90G00X0Y0Z100.");
PRINT("G00Z50.");
PRINT("X20.Y30.");
PRINT("Z5.");
PRINT("G01Z0F250");
PRINT("X50.Y60.");

PRINT( " G90 G00 X0 Y0 Z100. " );
PRINT( " G00 Z50.            " );
PRINT( " X20. Y30.           " );
PRINT( " Z5.                 " );
PRINT( " G01 Z0 F250         " );
PRINT( " X50. Y60.           " );

どちらのプログラムの方がわかりやすいですか?

 


工具交換

工具交換 

工具交換について見ていきましょう。
CLT データには工具情報が含まれています。CLT データの中で工具が変わると JDGMILL では工具交換に関する処理が行われます。 
それでは設定箇所を見てみましょう。
「CNC Commands」→「Tool change」を選択してください。

Tool change を選択すると画面は下図のようになります。  


( 画像をクリックすると拡大図を表示 )

Tool change の画面を開くといろいろとたくさんの設定項目が現れてきますが、今回は最低限必要な部分だけを見ていくことにしましょう。
 

Mode of Tool change

ここでは工具交換の命令をNCデータ中に出すか出さないかを指示します。


 

No Tool change ・・・・・・ 工具交換を行なわない

以降の設定はすべて無効となり、NCデータ中に工具交換に関する命令は出力されなくなります。

Tool change T-Address = Magazine position ・・・・・・ 工具交換あり

T番号をマガジン番号で出力します。

Tool change T-Address = Ident number ・・・・・・ 工具交換あり

T番号を工具番号で出力します。

マガジン番号と工具番号の違い
マガジン番号とは NC 機械の工具が収められたマガジンポッドの番号の事を意味します。
工具番号とは工具に対して付けられた番号の事で、一般的に工具番号 ( T番号 ) というとこちらの方を言います。
オイクリッドの加工定義の中の工具登録ではそれぞれを指示する部分があります。
 

Maximum Tool number (T..)

NC 機械に取り付けることができる工具の最大本数を指示します。
ここで設定した値よりも大きな工具番号がCLT データ中から検出された場合には変換時に警告メッセージが表示されます。

 1st Tool change / Normal Tool change / Last Tool change

工具交換のためのNCデータに出力される内容を定義します。

工具交換には、
  1st Tool change  ( 1本目 ) 
  Normal Tool change  ( 2本目以降 ) 
  Last Tool change  ( 最後の工具 ) 
の3種類の状況があり、それぞれの状況別に設定をします。

(例) 4種類の工具を用意し、1本目では荒加工 ( Mrough2 ) 、2本目では中仕上げ加工 (Mfinish3-COPY) 、3本目では等高線仕上げ加工 (Mfinish3PL2D) 、4本目では残部加工 (Mfinish3REST) を行なった場合のNCデータの出力イメージ

最初の工具交換
( 1本目 )

1st Tool change の内容に従って工具交換に関する命令が出力されます。

荒加工
(Mrough2)
2回目の工具交換
( 2本目 )

Normal Tool change の内容に従って工具交換に関する命令が出力されます。

中仕上げ加工
( Mfinish3-COPY )
3回目の工具交換
( 3本目 )

Normal Tool change の内容に従って工具交換に関する命令が出力されます。

等高線仕上げ加工
( Mfinish3PL2D )
最後の工具交換
( 4本目 )

Last Tool change の内容に従って工具交換に関する命令が出力されます。

残部加工
( Mfinish3REST )

3種類の状況を設定するようになっているのは、次のような場合にも対応できるようにするためです。 
 

[想定]

  • 最初の工具は主軸にセット後、位置決めをして加工を開始する。
  • 2本目以降は工具を工具交換位置に待避させてから工具交換をし、その後、位置決めをして加工を開始する。
  • 最後の工具は工具を工具交換位置に待避させてから工具交換をし、その後、位置決めをして加工を開始する。
    更に加工終了後に工具を収納できるように空のマガジンポットを準備しておく。

このような条件で工具交換をさせるにはそれぞれの状況に合わせた設定をしなければなりません。
JDGMILL ではあらかじめ3種類の条件が用意されていますので、それぞれの部分に設定を書き込むだけで上記のような場合でも実現できます。

もしすべての工具の工具交換の方法が同じ場合には、3種類の状況のそれぞれに全く同じ設定を書き込めばOKです。
 

1st Tool change / Normal Tool change / Last Tool change の設定方法について見ていきましょう。
この箇所はすべてが画面に収まりきらないために、この部分のみスクロールバーでスクロールするようになっています。

工具交換は状況に応じて3種類ありますが、設定の手順はどれも同じです。
今回は代表して 1st Tool change を例に見てみましょう。

 
1st Tool change

1st Tool changeには2個のボタンがあります。
各ボタンは次のそれぞれを設定します。

STL1ST

工具交換命令コード

Output parameter

出力するNCデータの内容

 
STL1ST

STL1STでは工具交換命令として出力される命令コードを設定します。
STL1STのボタンを押すと設定画面が現れます。


( 画像をクリックすると拡大図を表示 )

ここでも最低限必要な箇所だけを見ていくことにします。

 
NC - Function

NC機械で工具交換させる命令コードを設定します。
一般的なNC機械ではM06というコードで工具交換が行なわれます ( NC機械によって異なります ) 。
工具交換時にM06のコードを出すようにするには上図のように、Address text の部分に"M"と書き、Values の部分に06と書きます。

アドレス ( Address ) と値 ( Values ) 
M06のような命令コードは、アドレス部分と値部分の2つに分けて考えます。
M06の場合では、Mがアドレス、06が値となります。

Output position
Address textとValues で指定した M06 を一行中の何桁目に出力するのかを指定するパラメータです。
重要なパラメータではありますが、現段階ではまだ難しい内容となりますので詳しくは後の回で説明することにします。
通常はデフォルトのままにしておいてください。

 

Numerical Representation/Test Output

Numerical Representation では前述の値 ( Values ) の桁数を何桁で出力するかを設定します。
メートル法のmmとインチ法のInchのそれぞれで別々の設定ができます。
左側の Digits bevor が整数部分 ( 小数点より左側 ) の桁数を、右側の after Decimal point が少数部分 ( 小数点より右側 ) の桁数を表しています。
Test Output の部分には、桁数を設定した場合にどのように出力されるのかがイメージとして表示されます。
上図の例では、Test Valueに987654321 という値が入っています。
通常であればアドレスの "M" と合わせて M987654321 と出力されるところですが、Digits bevor で整数部分は2桁までと設定しているので2桁分の21だけが使われて M21 と出力されるということを表しています。

 

Sign specification

値(Values)が正の数、負の数、それぞれの場合に+−の符号を付けるかどうかを設定します。
 

No sign

符号無し

Minus Sign only

負の場合のみ−符号を付ける

Plus and minus Sign 

正、負のいずれの場合も+−の符号を付ける

 
Leading zeros

値 ( Values ) の桁数がNumerical Representationで設定した桁数に満たない時に、値の前に足りない桁数分の0を付けるかどうかを設定します。
 

Without Leading zeros 

0を付けない

With Leading zeros

桁数分の0を付ける

E-Format 

指数表示にする

例えば、正数部分 ( Digits bevor ) の桁数が5で、With Leading zeros を選択していた場合、もし、値 ( Values ) の内容が 123 であれば、実際に出力される内容は M00123 となります。

 
Output mode

座標形式または非座標形式のどちらで出力するかを指示します。
更に、出力された内容に対してモーダルを効かせるかどうかも指示します。
 

Output without Coordinates, Modal

非座標出力(モーダル有り)

Output without Coordinates, No Modal  

非座標出力(モーダル無し)

Output with Coordinates, Modal

座標出力(モーダル有り)

Output with Coordinates, No Modal

座標出力(モーダル無し)

各項目を設定後、OKを押すと工具交換命令 ( 例えばM06 ) の出力方法が決定されます。

 
Output parameter

Output parameterでは工具交換時に工具交換命令 ( STL1ST ) と一緒に出力されるNCコード群をミニオイクリッド言語を使って設定します。
Output parameterのボタンを押すとプログラム入力画面が現れます。


( 画像をクリックすると拡大図を表示 )

右側のOutput parameter部分がプログラム入力画面です。
それでは内容を見てみましょう。

PRINT(PCS, "1ST CHANGE TOOL ",TDMP, TDTYP, TDDIA/2, TDRV, TDLEN, PCE); 
 
WRITE(TMACT);

ここではPRINT文とWRITE文の2つが記述されています。
PRINT文とWRITE文はいずれも括弧の中身をNCデータ中に出力する命令です。
違いは、PRINT文は1命令毎に改行されるのに対して、WRITE文は改行されずに1行に続けて出力されます。

まずはPRINT文の出力内容を見てみましょう。
PRINT文の括弧の中身は、

PCS
"1ST CHANGE TOOL "
TDMP
TDTYP
TDDIA/2
TDRV
TDLEN
PCE 

の8個が、コンマで区切られて並んでいます。
JDGMILLパラメータ
に照らし合わせて各パラメータを見てみると、工具に関する情報を表したパラメータである事がわかります。
よって、このPRINT文では工具の情報をNCデータ中に書き込みしていることになります。

ところで、JDGMILLパラメータ に載っていない最初と最後の PCS と PCE は何のパラメーターなのでしょう?

PCS と PCE は、コメントの開始と終了の各記号を出力するためのパラメータです。
CNC-Setup Special Control character で設定した文字が PCS と PCE によって出力されます。


( 画像をクリックすると拡大図を表示 )

PCSは左小括弧、PCEは右小括弧が出力されるようになっていますので、このPRINT文では以下のようにNCデータに出力されます。

 【例】 使用工具が、ブルノーズエンドミル 半径=10、スミR=1、工具長=50mm、工具番号=1の場合

(1ST CHANGE TOOL NO=1 TP=12 RR=10.00 RV=1.00 L=50.00)

次はWRITE文です。
出力するパラメータはTMACTとなっています。JDGMILLパラメータ
で見てみると「現在の工具番号」となっており、ここでは T1 というように使用する工具の番号が出力されます。

【出力例】

(1ST CHANGE TOOLNO=1 TP=2 RR=10.00 RV=1.00 L=50.00)
T1M06
G00X17.571Y103.S1000M03

WRITE(TMACT); によって T1M06 というようにT番号が同じ行に出力されます。