今日、多くの CNC 技術者はマクロ プログラムを理解していません。 彼らは、自動プログラミング ソフトウェアがあれば、マクロ プログラムを学習する必要はないと考えています。 実際、マクロ プログラムの機能は非常に強力です。 たとえば、いくつかのバッチ プログラムや反復プログラムを作成する場合、マクロ プログラムを使用する場合、いくつかのデータを変更するだけで済みます。 何度も繰り返しプログラミングする必要がなく、操作が大幅に簡素化され、作業効率が大幅に向上します。
マクロプログラムは、変数を使用して、算術演算、論理演算、関数の混合演算を実行したり、ループステートメント、分岐ステートメント、サブルーチン呼び出しステートメントを提供したりできます。
一般的に言えば、マクロプログラムは、同じグラフィックでサイズが異なる一連のパーツのプログラミングに適しています。 これは、プロセス パスは同じだが位置パラメータが異なる一連のパーツのプログラミングに適しています。 補間命令を使用しない放物線、楕円、双曲線、およびその他の曲線のプログラミングに適しています。
01
変数の表現と使用
1.変数表現
#I(I=1,2,3,…) または #[
例:#5、#109、#501、#[#1 plus #2-12]
2. 変数の使用
1) アドレスワードの後に変数番号または式を指定する
フォーマット:
ここで、「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.条件付き転送
もしも [
もし
満たされない場合は、次のブロックを実行します。
WeChat: yuki7557 を追加して、マクロ プログラムのチュートリアルを送信します
もしも [
もし
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[
…
…
…
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;




