Jan 13, 2023 伝言を残す

マクロプログラミングの知識が必要

 

今日、多くの CNC 技術者はマクロ プログラムを理解していません。 彼らは、自動プログラミング ソフトウェアがあれば、マクロ プログラムを学習する必要はないと考えています。 実際、マクロ プログラムの機能は非常に強力です。 たとえば、いくつかのバッチ プログラムや反復プログラムを作成する場合、マクロ プログラムを使用する場合、いくつかのデータを変更するだけで済みます。 何度も繰り返しプログラミングする必要がなく、操作が大幅に簡素化され、作業効率が大幅に向上します。

マクロプログラムは、変数を使用して、算術演算、論理演算、関数の混合演算を実行したり、ループステートメント、分岐ステートメント、サブルーチン呼び出しステートメントを提供したりできます。

一般的に言えば、マクロプログラムは、同じグラフィックでサイズが異なる一連のパーツのプログラミングに適しています。 これは、プロセス パスは同じだが位置パラメータが異なる一連のパーツのプログラミングに適しています。 補間命令を使用しない放物線、楕円、双曲線、およびその他の曲線のプログラミングに適しています。

01
変数の表現と使用

1.変数表現

#I(I=1,2,3,…) または #[]
例:#5、#109、#501、#[#1 plus #2-12]

2. 変数の使用

1) アドレスワードの後に​​変数番号または式を指定する
フォーマット:

#I
ここで、「I」は変数番号を表します
例: F#103、#103=15 なら F15
Z-#110、#110=250ならZ-250
X[#24 プラス #18*COS[#1]]

2) 変数番号は変数に置き換えることができます
例: #[#30]、#30=3 の場合、#3 になります

3) 変数はアドレス O、N、I を使用できません
例: 次のメソッドが許可されます
O#1;
I#2 6.00×100.0;
N#3 Z200.0;

4) 変数番号に対応する変数は、アドレスごとに特定の値の範囲を持っています
例: #30=1100 の場合、M#30 は使用できません

5) #0 は空変数であり、変数値が定義されていない変数も空変数です

6) 変数値の定義:
プログラムが定義されている場合、小数点は省略できます。例: #123=149

02
変数の型

WeChat に写真を追加: yuki7557 がマクロ プログラムのチュートリアルを送信します

1. ローカル変数 #1~#33

マクロプログラムでローカルに使用される変数で、その演算結果は他のプログラムで使用できません。
例:A マクロプログラム B マクロプログラム
...
#10=20 X#10 は X20 を意味しません
...
電源を切るとクリアされ、マクロプログラムが呼び出されると変数の値が埋められます。

2. パブリック変数 #100~#199、#500~#999

各ユーザーマクロプログラム内の共通変数は、どのプログラム呼び出しでも同じ演算結果になります。
例:上記例の #10 を #100 に変更すると、
X#100 は X20 を意味します
#100~#149 電源オフ後空
#500~#531 永続変数 (電源オフ後も失われない)

3. システム変数

システムの状態に応じて値が変わる固定目的変数
例:#2001 は No.1 工具補正の X 軸補正値です。
#5221 値は X 軸 G54 ワーク原点オフセット値
入力時に小数点を必ず入力し、小数点を省略した場合の単位はμmです。

03
操作説明

式の右辺には、定数、変数、関数、式を使用できます
数式では、#j と #k は定数にすることもできます
式の右辺は変数番号、式

1. 定義

#I=#j

2.算術演算

#I=#j プラス #k
#I=#j-#k
#I=#j*#k
#I=#j/#k

3. 論理演算

#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k

4.機能

#I=SIN[#j] サイン
#I=COS[#j] コサイン
#I=TAN[#j] タンジェント
#I=ATAN[#j] 逆正接
#I=SQRT[#j] 平方根
#I=ABS[#j] 絶対値
#I=ROUND[#j] 四捨五入
#I=FIX[#j] 切り上げる
#I=FUP[#j] 切り捨て
#I=BIN[#j] BCD→BIN(バイナリ)
#I=BCN[#j] BIN→BCD

1) 角度は度単位です
例: 90 度と 30 分は 90.5 度

2) ATAN 関数の後の 2 つの辺の長さは、"/" で区切る必要があります。
例: #{{0}}ATAN[1]/[-1]、#1 は 35.0

3) ステートメント内のアドレスは ROUND を使用し、各アドレスの最小設定単位で切り上げます。
例: #1=1.2345、#2=2.3456 を設定、設定単位は 1μm
G91 X-#1; X-1.235
X-#2 F300; X-2.346
X[#1 プラス #2]; X3.580
は返されません。
X[ROUND[#1] プラス ROUND[#2]];

4) 四捨五入後の絶対値が元の値より大きい場合は切り上げ、それ以外は切り捨て
例: #1=1.2、#2=-1.2の場合
#{{0}}FUP[#1]の場合、#3=2.0
#{{0}}修正[#1]の場合、#3=1.0
#{{0}}FUP[#2]の場合、#3=-2.0
#{{0}}FIX[#2]の場合、#3=-1.0

5) 機能を命令するときは、最初の 2 文字だけを書くことができます。
例:ROUND→RO
FIX→FI

6) 優先度
関数 → 乗算と除算 (*、1、AND) → 加算と減算 (plus、-、OR、XOR)
例: #1=#2 プラス #3*SIN[#4];

7) 括弧は 5 回までの角括弧であり、括弧はコメント ステートメントに使用されます。
例: #1=SIN[[[#2 プラス #3]*#4 プラス #5]*#6]; (おもり3個)

04
分岐命令とループ命令

1. 無条件譲渡

フォーマット: GOTO n;

ブロックnに無条件分岐
n: ブロック番号 (1-99999)
n は、変数または式に置き換えることもできます
goto10;
後藤 #10;

2.条件付き転送

もしも [] 後藤 n;
もしが満たされると、次の操作はブロック番号 n のブロックに移行します。
満たされない場合は、次のブロックを実行します。
WeChat: yuki7557 を追加して、マクロ プログラムのチュートリアルを送信します
もしも [] それから ... ;
もしを満たしている場合、THEN の後のマクロプログラムステートメントが実行され、1 つのステートメントのみが実行されます。
IF[#1EQ #2] THEN #3=0;

条件式:

#j と #k は次のように置き換えることもできます

例: IF[#1 GT 10] GOTO 100;

N100 G00 G91 X10;
例: 1 から 10 までの合計を求める
O9500;
#1=0
#2=1
N1 IF [#2 GT10] GOTO 2
#1=#1 プラス #2;
#2=#2 プラス 1;
後藤1
N2 M30

3.サイクル

フォーマット: WHILE[]DO m; (m=1, 2, 3)



END分

1. 条件成立時、DOm~ENDm を実行し、DOm のプログラムセグメントから
満たされない場合は、ENDm に続くプログラム セグメントを実行します。
2. WHILE 文を省略して DOm...ENDm のみの場合、DOm から ENDm までの無限ループになります。
3.ネスティング
4. EQ NE、空と「0」は異なります
それ以外の場合、null は "0" と同じです

例: 1 から 10 までの合計を求める
O0001;
#1=0;
#2=1;
WILE [#2LE10] DO1;
#1=#1 プラス #2;
#2=#2 プラス #1;
END1;
M30;

 

 

お問い合わせを送る

whatsapp

skype

電子メール

引き合い