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