May 15, 2023 伝言を残す

マクロプログラムは駄目ですか? それは補えないからだよ!

 

CNC 技術者の多くはマクロ プログラムを理解していません。 自動プログラミングソフトがあればマクロプログラムを覚える必要がないと考えているのです。 実は、マクロプログラムの機能は非常に強力です。 たとえば、いくつかのバッチおよび繰り返しプログラムを作成するには、マクロ プログラムを使用するときにいくつかのデータを変更するだけで済みます。 何度も繰り返しプログラミングする必要がないため、操作が大幅に簡略化され、作業効率が大幅に向上します。

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

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


01
変数の表現と使用

1. 変数表現

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

次に、変数の使用

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 に写真を追加: mvm9987 が CNC チュートリアルを送信します

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. 論理演算

#私=#JOK#k
#私=#JXOK#k
#私=#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}}修正[#2]の場合、#3=-1.0

5) 関数を命令する場合、最初の 2 文字のみを記述できます。
例:ROUND→RO
修正→修正

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 のブロックに転送されます。
満足できない場合は、次のブロックを実行します。

もしも [] それから ... ;
もしが満たされると、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] 後藤2
#1=#1 プラス #2;
#2=#2 プラス 1;
後藤1
N2 M30

3. サイクル

形式: WHILE[]ドm; (m=1、2、3)



ENDm

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;
[#2LE10] しながら 1;
#1=#1 プラス #2;
#2=#2 プラス #1;
エンド1;
M30;

 

 

お問い合わせを送る

whatsapp

skype

電子メール

引き合い