大家都在問宏程序。其實(shí)所謂宏就是用公式來加工零件的。比如說橢圓,如果沒有宏程序的話,我們要逐點(diǎn)算出曲線上的點(diǎn),然后慢慢用直線或曲線逼近,如果是個(gè)光潔度要求很高的工件,那么需要計(jì)算的點(diǎn)就會(huì)很多,可是應(yīng)用了宏后,我們把橢圓公式輸入到系統(tǒng)中,然后我們給出Z坐標(biāo)或X坐標(biāo)并且每次加一個(gè)很小的數(shù)值,那么宏就會(huì)自動(dòng)算出X坐標(biāo)或Z坐標(biāo),并且進(jìn)行切削。實(shí)際上宏在程序中主要起到的是運(yùn)算作用。
一、FANUC系統(tǒng)宏程序 宏一般分為A類宏和B類宏.A類宏是以G65HxxP#xxQ#xxR#xx的格式輸入的,而B類宏程序則是:
以直接的公式和語言輸入的和C語言很相似在0i系統(tǒng)中應(yīng)用比較廣。由于現(xiàn)在B類宏程序的大量使用,很多書都進(jìn)行了介紹這里我就不再重復(fù)了,但在一些老系統(tǒng)中,比如法蘭克OTD系統(tǒng)中由于它的MDI鍵盤上沒有公式符號(hào),連最簡(jiǎn)單的等于號(hào)都沒有,為此如果應(yīng)用B類宏程序的話就只能在計(jì)算機(jī)上編好再通過RSN-32接口傳輸?shù)臄?shù)控系統(tǒng)中,可是如果我們沒有PC機(jī)和RSN-32電纜的話怎么辦呢,那么只有通過A類宏程序來進(jìn)行宏程序編制了,下面我介紹一下A類宏的引用。
A類宏是用G65HxxP#xxQ#xxR#xx或G65HxxP#xxQxxRxx格式輸入的xx的意思就是數(shù)值,是以u(píng)m級(jí)的量輸入的,比如你輸入100那就是0.1MM~#xx就是變量號(hào),關(guān)于變量號(hào)是什么意思再不知道的的話我也就沒治了,不過還是教一下吧,變量號(hào)就是把數(shù)值代入到一個(gè)固定的地址中,固定的地址就是變量,一般OTD系統(tǒng)中有#0~#100~#149~#500~#531關(guān)閉電源時(shí)變量#100~#149被初始化成“空”,而變量#500~#531保持?jǐn)?shù)據(jù)。我們?nèi)绻f#100=30那么現(xiàn)在#100地址內(nèi)的數(shù)據(jù)就是30了,就是這么簡(jiǎn)單。
1、用戶宏程序 能完成某一功能的一系列指令像子程序那樣存入存儲(chǔ)器,用一個(gè)總指令來它們,使用時(shí)只需給出這個(gè)總指令就能執(zhí)行其功能。
所存入的這一系列指令——用戶宏程序
調(diào)用宏程序的指令————宏指令
特點(diǎn):使用變量
1)變量的表示和使用
變量表示
#I(I=1,2,3,…)或#[<式子>]
例:#5,#109,#501,#[#1+#2-12]
變量的使用
地址字后面指定變量號(hào)或公式
格式:<地址字>#I
<地址字>-#I
<地址字>[<式子>]
例:F#103,設(shè)#103=15則為F15
Z-#110,設(shè)#110=250則為Z-250
X[#24+#18*COS[#1]]
2)變量號(hào)可用變量代替
例:#[#30],設(shè)#30=3則為#3
3)變量不能使用地址O,N,I
例:下述方法下允許
O#1;
I#26.00×100.0;
N#3Z200.0;
4)變量號(hào)所對(duì)應(yīng)的變量,對(duì)每個(gè)地址來說,都有具體數(shù)值范圍
例:#30=1100時(shí),則M#30是不允許的
5)#0為空變量,沒有定義變量值的變量也是空變量
6)變量值定義 :
程序定義時(shí)可省略小數(shù)點(diǎn),例:#123=149
MDI鍵盤輸一.變量的種類
①局部變量#1~#33
一個(gè)在宏程序中局部使用的變量
例:A宏程序B宏程序
……
#10=20X#10不表示X20
……
斷電后清空,調(diào)用宏程序時(shí)代入變量值
②公共變量#100~#149,#500~#531
各用戶宏程序內(nèi)公用的變量
例:上例中#10改用#100時(shí),B宏程序中的
X#100表示X20
#100~#149斷電后清空
#500~#531保持型變量(斷電后不丟失)
③系統(tǒng)變量
固定用途的變量,其值取決于系統(tǒng)的狀態(tài)
例:#2001值為1號(hào)刀補(bǔ)X軸補(bǔ)償值
#5221值為X軸G54工件原點(diǎn)偏置值
入時(shí)必須輸入小數(shù)點(diǎn),小數(shù)點(diǎn)省略時(shí)單位為μm
運(yùn)算指令
運(yùn)算式的右邊可以是常數(shù)、變量、函數(shù)、式子
式中#j,#k也可為常量
式子右邊為變量號(hào)、運(yùn)算式
⑴定義
#I=#j
⑵算術(shù)運(yùn)算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
⑶邏輯運(yùn)算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
⑸函數(shù)
#I=SIN[#j]正弦
#I=COS[#j]余弦
#I=TAN[#j]正切
#I=ATAN[#j]反正切
#I=SQRT[#j]平方根
#I=ABS[#j]絕對(duì)值
#I=ROUND[#j]四舍五入化整
#I=FIX[#j]下取整
#I=FUP[#j]上取整
#I=BIN[#j]BCD→BIN(二進(jìn)制)
#I=BCN[#j]BIN→BCD
⑹說明
1)角度單位為度
例:90度30分為90.5度
2)ATAN函數(shù)后的兩個(gè)邊長(zhǎng)要用“1”隔開
例:#1=ATAN[1]/[-1]時(shí),#1為了35.0
3)ROUND用于語句中的地址,按各地址的最小設(shè)定單位進(jìn)行四舍五入
例:設(shè)#1=1.2345,#2=2.3456,設(shè)定單位1μm
G91X-#1;X-1.235
X-#2F300;X-2.346
X[#1+#2];X3.580
未返回原處,應(yīng)改為
X[ROUND[#1]+ROUND[#2]];
4)取整后的絕對(duì)值比原值大為上取整,反之為下取整
例:設(shè)#1=1.2,#2=-1.2時(shí)
若#3=FUP[#1]時(shí),則#3=2.0
若#3=FIX[#1]時(shí),則#3=1.0
若#3=FUP[#2]時(shí),則#3=-2.0
若#3=FIX[#2]時(shí),則#3=-1.0
5)指令函數(shù)時(shí),可只寫開頭2個(gè)字母
例:ROUND→RO
FIX→FI
6)優(yōu)先級(jí)
函數(shù)→乘除(*,1,AND)→加減(+,-,OR,XOR)
例:#1=#2+#3*SIN[#4];
7)括號(hào)為中括號(hào),最多5重,園括號(hào)用于注釋語句
例:#1=SIN[[[#2+#3]*#4+#5]*#6];(3重)
2、轉(zhuǎn)移與循環(huán)指令
1)無條件的轉(zhuǎn)移
格式:GOTO1;
GOTO#10;
2)條件轉(zhuǎn)移
格式:IF[<條件式>]GOTOn
條件式:
#jEQ#k表示=
#jNE#k表示≠
#jGT#k表示>
#jLT#k表示<
#jGE#k表示≥
#jLE#k表示≤
例:IF[#1GT10]GOTO100;
…
N100G00691X10;
例:求1到10之和
O9500;
#1=0
#2=1
N1IF[#2GT10]GOTO2
#1=#1+#2;
#2=#2+1;
GOTO1
N2M301.循環(huán)
格式:WHILE[<條件式>]DOm;(m=1,2,3)
…
…
…
ENDm
說明:
1)條件滿足時(shí),執(zhí)行DOm到ENDm,則從DOm的程序段
不滿足時(shí),執(zhí)行DOm到ENDm的程序段
2)省略WHILE語句只有DOm…ENDm,則從DOm到ENDm之間形成死循環(huán)
3)嵌套
4)EQNE時(shí),空和“0”不同
其他條件下,空和“0”相同
例:求1到10之和
二、HNC-21M數(shù)控系統(tǒng) 為用戶配備了強(qiáng)有力的類似于高級(jí)語言的宏程序功能,用戶可以使用變量進(jìn)行算術(shù)運(yùn)算、邏輯運(yùn)算和函數(shù)的混合運(yùn)算,此外宏程序還提供了循環(huán)語句、分支語句和子程序調(diào)用語句,利于編制各種復(fù)雜的零件加工程序,減少乃至免除手工編程時(shí)進(jìn)行繁瑣的數(shù)值計(jì)算,以及精簡(jiǎn)程序量。
1、宏變量及常量
1.宏變量
#0~#49當(dāng)前局部變量
#50~#199全局變量
#200~#2490層局部變量
#250~#2991層局部變量
#300~#3492層局部變量
#350~#3993層局部變量
#400~#4494層局部變量
#450~#4995層局部變量
#500~#5496層局部變量
#550~#5997層局部變量
#600~#699刀具長(zhǎng)度寄存器H0~H99
#700~#799刀具半徑寄存器D0~D99#800~#899刀具壽命寄存器
2、常量
PI:圓周率π
TRUE:條件成立(真)
FALSE:條件不成立(假)
運(yùn)算符與表達(dá)式
①算術(shù)運(yùn)算符:+,-,*,/
②條件運(yùn)算符
EQ(=),NE(≠),GT(>),
GE(≥),LT(<),LE(≤)
③邏輯運(yùn)算符
AND,OR,NOT
④函數(shù)
SIN,COS,TAN,ATAN,ATAN2,
ABS,INT,SIGN,SQRT,EXP
⑤表達(dá)式
用運(yùn)算符連接起來的常數(shù),宏變量構(gòu)成表達(dá)式。
例如:175/SQRT[2]*COS[55*PI/180];
#3*6GT14;
賦值語句
格式:宏變量=常數(shù)或表達(dá)式
把常數(shù)或表達(dá)式的值送給一個(gè)宏變量稱為賦值。
例如:#2=175/SQRT[2]*COS[55*PI/180];
#3=124.0;
條件判別語句IF,ELSE,ENDIF
格式(i):IF條件表達(dá)式
…
ELSE
…
ENDIF
格式(ii):IF條件表達(dá)式
…
ENDIF
循環(huán)語句WHILE,ENDW
格式:WIIILE條件表達(dá)式
…
ENDW
例如:車削橢圓
%(FNAUC)
O0001
N1G00X0Z150.
N2G98
N3#24=80(短軸半徑,X軸方向)
N4#26=100(長(zhǎng)軸半徑,Z軸方向)
N5#7=0.1(Z軸取點(diǎn)的間隔距離)
N6#1=#26+#7(Z軸方向最大值,假設(shè)為頂點(diǎn))
N7#23=3.15(Z軸方向最小值)
N8WHILE[#1GT#23]DO1
N9#1=#1-#7(計(jì)算每次Z軸的坐標(biāo)值)
N10IF[#1GT#23]GOTO12
N11#1=#23(最后一次把Z軸終點(diǎn)坐標(biāo)賦值給#1)
N12#3=2*#24*SQRT[1-[#1*#1]/[#26*#26]](X軸坐標(biāo)值計(jì)算,此處按直徑編程)
N13G01X#3Z#1F100
N14END1
N15M30
%
%0001(華中系統(tǒng))
N1M03S1000T0101
N2G00X20Z5
N3#21=100(長(zhǎng)軸半徑,Z軸方向)
N4WHILE#21GT[-100]
N5#20=0.8*SQRT[100-#21*#21](計(jì)算每次X軸的坐標(biāo)值)
N6G01X[#20*2]Z[#21]F100(加工橢圓)
N7#21=#21-0.05(計(jì)算每次Z軸的坐標(biāo)值)
N8ENDW
N9M30
簡(jiǎn)體中文
English
Russian

