現(xiàn)在很多(duō)數控技術人員不(bú)懂宏程序。他們認為有(yǒu)了自動(dòng)編程軟件,就(jiù)不需要學習宏程序了。其實宏程(chéng)序是很(hěn)強大的,比(bǐ)如寫一些批量(liàng)的,重複性的程序。使用宏(hóng)程序(xù)時,隻需更(gèng)改少量數據。不需(xū)要做大量(liàng)的(de)重複編程(chéng),可以大大簡化操作,大大提高工作效率(lǜ)。
宏可以(yǐ)使用(yòng)變量進行函數的算術運算、邏輯運算和混(hún)合運算,還提供循環語(yǔ)句、分支語(yǔ)句和子程序調用語句(jù)。
一般(bān)來說,宏程序適用於圖形相同但尺寸不同的係列(liè)零(líng)件的編程;適用於加工路徑相同但位置參數不同的係列零(líng)件的編程(chéng);適用於拋物線、橢圓、雙曲線等曲線編程。無插補指令。
01
變量的表示和使用
1.可變(biàn)表示(shì)
#I(I=1,2,3,…)或# []
例如:#5、#109、#501、[# 1+# 2-12]
2.變量(liàng)的使用
1)在地址字後指定變量編號(hào)或公式。
格(gé)式:#I
這裏的“I”代表變量(liàng)數。
例:F#103,如果#103=15,則為F15。
Z-#110,其中#110=250是Z-250。
X[#24+#18*COS[#1]]
2)變(biàn)量數可以用變(biàn)量代替。
例:#[#30],設#30=3為#3。
3)變量(liàng)不能使用地址O,N,I。
示例:允許使用以下方法。
o # 1;
I # 2 6.00×100.0;
N # 3 Z200.0
4)對應於(yú)變量編號的(de)變量對於(yú)每個地(dì)址具有特定的數值範圍。
例:當#30=1100時,則不允許(xǔ)M#30。
5)#0是空變量,沒有定義變量值的變量也是空變量。
6)變量值的(de)定義:
定義程序(xù)時可以省略小數點,例如:#123=149
02
變量的類型
1.局部變量#1~#33
宏程序中局部使用的一種變量,其結果不能被其它程序(xù)使用。
示例:a宏程序b宏程序
… …
#10=20 X#10不代表X20
… …
斷電後會清零,調用宏(hóng)程序。
2.公共(gòng)變量#100~#199,#500~#999
每個用戶宏程序中的公共變量與任何程序調用具有相同的操作結果。
示例:在上麵的示例中,當#10更改為#100時
X#100表示X20。
#100~#149停電後放空(kōng)
#500~#531保持型變量(斷電後不會丟失)
3.係統變(biàn)量(liàng)
一種有固定用途的變量,其值(zhí)取(qǔ)決於係統的狀態。
例:#2001的值是1號刀(dāo)具的X軸補償(cháng)值。
#5221值是X軸G54工件原點的偏移值
輸入時,必須(xū)輸入小(xiǎo)數點。省略小數點時,單位為(wéi)μ m。
03
操作指令
公式右邊可以是常量,變量,函數,公式。
其中#j和#k也可以是常數。
公式的右(yòu)邊是可變數字和表達式。
1.定義
#I=#j
2.算術運算(suàn)
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
3.邏輯運算
#我(wǒ)=#JOK#k
#I=#JXOK#k
#我=#JAND#k
4.功能
正弦,正弦
#I=COS[#j]餘弦
#I=TAN[#j]正切
#I=ATAN[#j]反正切
# I = sqrt的平方根[# j]
#I=ABS[#j]絕對值
#I=ROUND[#j]一圈又一圈。
# I =定點(diǎn)舍入[# j]
#I=FUP[#j]舍入
#I=BIN[#j] BCD→BIN(二進製)
#I=BCN[#j] BIN→BCD
1)角(jiǎo)度單位是度。
例:90度和30度除以90.5度
atan函數後的兩邊應該用"/"隔開
例如(rú):當#1=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
未(wèi)放回原處的,應改為
x[ROUND[# 1]+ROUND[# 2]];
4)舍入(rù)後的絕對值大於原值,所以向上舍入,否則向下舍入。
例如:讓#1=1.2,而# 2 =-1.2
如果(guǒ)#3=FUP[#1],#3=2.0
如果#3=固定[#1],則#3=1.0
如果(guǒ)#3=FUP[#2],#3=-2.0
如果#3=固定[#2],則#3=-1.0
5)在指示函數時,隻能寫前兩個字母。
示例(lì):圓形→圓形
修複→FI
6)優先級
函數→乘法和除法(*、1和)→加法(fǎ)和減法(+、-或、異(yì)或(huò))
例:# 1 = # 2+# 3 * sin[# 4];
7)括號是中間括號,最多5個權(quán)重。括號用於注釋語句。
例:# 1 = sin[[# 2+# 3]* # 4+# 5]* # 6];(三倍)
04
和轉移循環指(zhǐ)令
1.無條件轉移(yí)
格式(shì):GOTO n;;
無條件轉移到程序(xù)段n
n:程序段號(hào)(1-99999)
n也可以用變量或(huò)表(biǎo)達式代替。
GOTO10
轉到# 10;
2.有條件轉移
IF[]GOTO n;
如果是,下一個操作將轉移到程序段號為n的程序段。
如果沒有,執行下一個程序段。
如果[]那麽……;
如果是,則執行其後的宏程序語句(jù),並且隻執行一條語句。
如果[#1EQ #2]那麽# 3 = 0;
條件公式:
#j和#k也可以用來代替
示例:if[# 1gt 10]goto 100;
…
N100 G00 G91 X10
例:求1到10的和(hé)。
O9500
#1=0
#2=1
N1 IF [#2 GT10]轉到2
#1=#1+#2;
#2=#2+1;
轉到1
N2 M30
3.流通
格式:WHILE[]DO m;;(m=1,2,3)
…
…
…
重複塊
1.當條件(jiàn)滿足時,執行DOm到ENDm,然後從DOm的程序段。
如果沒有,執行ENDm後麵的程(chéng)序(xù)段。
2.省略WHILE語句(jù)隻有DOm…ENDm,從DOm到ENDm形成一個無限(xiàn)循(xún)環(huán)。
3.嵌(qiàn)套
4.當(dāng)4。EQ NE,null和“0”是不同的。
否則,null和“0”是(shì)相同(tóng)的。
例:求1到10的(de)和。
O0001
#1=0;
#2=1;
而[# 2le 10]DO1;
#1=#1+#2;
#2=#2+#1;
END1
M30