愛伊米

數控高手必會的宏程式程式設計知識,你會了嗎?

數控高手必會的宏程式程式設計知識,你會了嗎?

UG數控程式設計

數控行業  | 乾貨分享

關注加入免費學UG程式設計

關注

現在很多數控技術人員都不懂宏程式,他們認為有了自動程式設計軟體,就不需要學習宏程式了。事實上,宏程式的功能非常強大,比如編寫一些批次、重複的程式,使用宏程式就只需要改動幾個資料就可以了,沒有必要進行大量重複的程式設計,可極大簡化操作,大幅度提高工作效率。

宏程式可以使用變數進行算術運算、邏輯運算和函式的混合運算,還提供了迴圈語句、分支語句和子程式呼叫語句。

一般來說:宏程式適合圖形一樣,只是尺寸不同的系列零件的程式設計;適合工藝路徑一樣,只是位置引數不同的系列零件的程式設計;適合拋物線、橢圓、雙曲線等沒有插補指令的曲線程式設計。

01

變數的表示和使用

1。 變量表示

#I(I=1,2,3,…)或#[]

例:#5,#109,#501,#[#1+#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#26。00×100。0;

N#3Z200。0;

4) 變數號所對應的變數,對每個地址來說,都有具體數值範圍

例:#30=1100時,則M#30是不允許的

5)#0為空變數,沒有定義變數值的變數也是空變數

6)變數值定義:

程式定義時可省略小數點,例:#123=149

02

變數的種類

數控高手必會的宏程式程式設計知識,你會了嗎?

1。 區域性變數#1~#33

一個在宏程式中區域性使用的變數,其運算結果其他程式不可使用。

例:A宏程式B宏程式

……

#10=20X#10不表示X20

……

斷電後清空,呼叫宏程式時代入變數值

2。 公共變數#100~#199,#500~#999

各使用者宏程式內公用的變數 ,其運算結果任何程式呼叫都相同。

例:上例中#10改用#100時,B宏程式中的

X#100表示X20

#100~#149斷電後清空

#500~#531保持型變數(斷電後不丟失)

3。 系統變數

固定用途的變數,其值取決於系統的狀態

例:#2001值為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函式後的兩個邊長要用“/ ”隔開

例:#1=ATAN[1]/[-1]時,#1為了35。0

3) ROUND用於語句中的地址,按各地址的最小設定單位進行四捨五入

例:設#1=1。2345,#2=2。3456,設定單位1μm

G91X-#1;X-1。235

X-#2F300;X-2。346

X[#1+#2];X3。580

未返回原處,應改為

X[ROUND[#1]+ROUND[#2]];

4) 取整後的絕對值比原值大為上取整,反之為下取整

例:設#1=1。2,#2=-1。2時

若#3=FUP[#1]時,則#3=2。0

若#3=FIX[#1]時,則#3=1。0

若#3=FUP[#2]時,則#3=-2。0

若#3=FIX[#2]時,則#3=-1。0

5) 指令函式時,可只寫開頭2個字母

例:ROUND→RO

FIX→FI

6) 優先順序

函式→乘除(*,1,AND)→加減(+,-,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;

GOTO #10;

2。 條件轉移

IF  []    GOTO  n;

若滿足,下步操作轉移到程式段號為n的程式段去。

若不滿足,執行下個程式段。

IF  []    THEN  … ;

若滿足,執行THEN後的宏程式語句,只執行一個語句。

IF[#1EQ #2] THEN #3=0;

條件式:

數控高手必會的宏程式程式設計知識,你會了嗎?

#j 和#k也可用來代替

例:IF[#1GT10]GOTO100;

N100G00G91 X10;

例:求1到10之和

O9500;

#1=0

#2=1

N1IF[#2GT10]GOTO2

#1=#1+#2;

#2=#2+1;

GOTO1

N2M30

3。 迴圈

格式:WHILE[]DOm;(m=1,2,3)

ENDm

1.條件滿足時,執行DOm到ENDm,則從DOm的程式段

不滿足時,執行ENDm後面的程式段

2.省略WHILE語句只有DOm…ENDm,則從DOm到ENDm之間形成死迴圈

3.巢狀

4.EQNE時,空和“0”不同

其他條件下,空和“0”相同

例:求1到10之和

O0001;

#1=0;

#2=1;

WHILE[#2LE10]DO1;

#1=#1+#2;

#2=#2+#1;

END1;

M30;