運用編

出力制御ファイル

「NCマクロ部」

マクロ内での記述仕様

1.任意文字列
2.G/Mコード
3.予約語
4.シーケンス番号抑制コード
5.シーケンス番号出力コード
6.
7.初期化
8.ブロックIF文

1.任意文字列

記述した内容がそのまま出力されます。
!,$,@,&,<,>の文字は、""内に文字列を指定することで出力できます。
通常1ブロック内の各要素は設定した順に出力されますが、予約語OUTPUTORDERに1を設定することで「NCコード部」で設定した出力順にしたがって出力させることができます。
任意文字列の出力順は標準で0が設定されます。
この出力順を変更したい場合は出力したい文字列をシングルクオート"'"で囲み、文字列の後に","に続き出力順番号を記述します。

例) <OUTPUTORDER=1>'/,-200'   

任意文字列"/"の出力順を-200に設定します。

2.G/Mコード

「Gコード部」、「Mコード部」で設定した検索キー文字列を"!"ではさんで指定することで、対応する"NCコード"をNCデータファイルへ出力できます。
この設定により次の効果が得られます。

・不変的である検索キー文字列を指定するため、実際に出力するNCコードの変更は「NCコード部」で一括に行えます。
・モーダル情報がシステムに登録されるため、出力の制御が行えます。

検索キー文字列を"!"ではさんだだけの設定ではモーダル情報がシステムに登録され、設定した内容は必ず出力されますが、次の方法により出力を制御することができます。

検索キー文字列の前に"*"を付加する:

モーダル情報がシステムに登録されるだけでNCコードはNCデータへ出力されません。

検索キー文字列の前に"-"を付加する:

モーダル情報に従いNCデータファイルへの出力が制御されます。
すなわち、現在のモードと同じコードの場合NCコードはNCデータへ出力されません。

例) !*G91! :G91のモードに設定される。コードは出力されない。
  !-G91! :現在のモードがG91の場合、このブロックではコードは出力されない。
  !G91!  :現在のモードとは関係なしにG91が出力される。

3.予約語

予約語とはシステムがあらかじめ定めている変数名のことです。
この予約語を利用することでシステムから情報を取り出したり、"$"ではさんで指定することによりその予約語に対応した内容に展開させることができます。 詳細については後で説明します。

さらに、機能変数の検索キーも予約語にすることができます。

例) <T=10>$T$

Tを機能変数の検索キー文字列とすると、機能変数Tに対応した書式に数値が変換されて出力されます。

4.シーケンス番号抑制コード

"0"を@ではさんで指定します。
このコードが設定されたブロックにはシーケンス番号は出力されません。

5.シーケンス番号出力コード

"1"を@ではさんで指定します。

「パラメータ部」の「シーケンス番号の出力場所」で"2:マクロで"@1@"の記述のあるブロックのみ出力される"を選択した場合有効となります。

例)@1@!M06!$TOOLCHANGE$   

このブロックにシーケンス番号が出力されます。

6.式

"<>"で囲まれた中には代入式(モードの設定等)を記述する事ができます。

例) <V1=100+1>

右辺の式(100+1)を計算して、左辺の変数V1に値を代入します。

式は四則演算(+-*/)、以外に絶対値dabs()、平方根sqrt()などが使えます。
左辺に予約語以外の変数を設定するとその変数は登録され、次回からは右辺で利用できます。
右辺にある未定義の変数は値ゼロとして評価されます。
大文字小文字の区別はされません。

式の中で扱える関数の一覧

関数
説明
備考
SIN(val) 正弦 val の単位はラジアン
COS(val) 余弦 val の単位はラジアン
TAN(val) 正接  
ASIN(val) 逆正弦  
ACOS(val) 逆余弦  
ATAN(val) 逆正接 val の単位はラジアン
DEG(val) ラジアンを度に変換 val の単位はラジアン
RAD(val) 度をラジアンに変換  
SQRT(val) 平方根  
EXP(val) 指数  
LOG10(val) 10を底とする対数  
LOG(val) 自然対数  
DABS(val) 絶対値  
DMS(val) 度を度分秒に変換  
ADMS(val) 度分秒を度に変換  

(val は数値または式)

注意)

設定した任意文字列を各ブロックの先頭、または最後に付加します。
マクロの先頭に次の書式を設定する。

行の先頭に任意文字列を出力する場合:

<STARTOFLINE="">

行の最後に任意文字列を出力する場合:

<ENDOFLINE="">

必ず””の中に記述します。

 

7.初期化

機能変数、Gコード、Mコードの検索キー文字列を"&"ではさむことでモーダルを初期化することができます。
モーダルを初期化した直後では、そのNCコードは省略処理を受けることなく必ずNCデータに書出されます。
また、機能変数のX,Y,Zの場合は加工原点に自動的に初期化されます。さらに検索キー文字列に続けて"*"を記述することでその後に初期化したい値を設定できます。

例)&F&

工具交換用のマクロにこの記述を行うことで、経路内の最初に現れたFコードを必ず出力させることができます。すなわち、複数の経路からNCデータを作成する場合、1つ前の経路の最後のFコードとこれから処理を行う経路の最初のFコードが同じでも、この初期化を行うことによりモーダル処理による省略を防ぐことができます。

 

8.ブロックIF文

マクロの中でIF文を指定できます。
IF文は最高10段まで入れ子で指定でき、ELSE IF、ELSEはあってもなくて構いません。

書式)

IF( 式1 条件 式2 論理演算子 式3 条件 式4 .......... )

:

ELSE IF( 式1 条件 式2 論理演算子 式3 条件 式4 .......... )

:

ELSE

:

ENDIF

式1、式2:数値に関する予約語、定数、四則演算子を設定できます。
条件==,!=,<=,>=,<,> を設定できます。
論理演算子:&&,||(AND,OR)を設定できます。
1つのIF文に5個まで論理演算子を指定できます。
注)数値の差が0.0001より小さい場合等しいとみなします。