大家都在問宏程序。其實所謂宏就是用公式來加工零件的。比如說橢圓,如果沒有宏程序的話,我們要逐點算出曲線上的點,然后慢慢用直線或曲線逼近,如果是個光潔度要求很高的工件,那么需要計算的點就會很多,可是應用了宏后,我們把橢圓公式輸入到系統中,然后我們給出Z坐標或X坐標并且每次加一個很小的數值,那么宏就會自動算出X坐標或Z坐標,并且進行切削。實際上宏在程序中主要起到的是運算作用。
一、FANUC系統宏程序 宏一般分為A類宏和B類宏.A類宏是以G65HxxP#xxQ#xxR#xx的格式輸入的,而B類宏程序則是:
以直接的公式和語言輸入的和C語言很相似在0i系統中應用比較廣。由于現在B類宏程序的大量使用,很多書都進行了介紹這里我就不再重復了,但在一些老系統中,比如法蘭克OTD系統中由于它的MDI鍵盤上沒有公式符號,連最簡單的等于號都沒有,為此如果應用B類宏程序的話就只能在計算機上編好再通過RSN-32接口傳輸的數控系統中,可是如果我們沒有PC機和RSN-32電纜的話怎么辦呢,那么只有通過A類宏程序來進行宏程序編制了,下面我介紹一下A類宏的引用。
A類宏是用G65HxxP#xxQ#xxR#xx或G65HxxP#xxQxxRxx格式輸入的xx的意思就是數值,是以um級的量輸入的,比如你輸入100那就是0.1MM~#xx就是變量號,關于變量號是什么意思再不知道的的話我也就沒治了,不過還是教一下吧,變量號就是把數值代入到一個固定的地址中,固定的地址就是變量,一般OTD系統中有#0~#100~#149~#500~#531關閉電源時變量#100~#149被初始化成“空”,而變量#500~#531保持數據。我們如果說#100=30那么現在#100地址內的數據就是30了,就是這么簡單。
1、用戶宏程序 能完成某一功能的一系列指令像子程序那樣存入存儲器,用一個總指令來它們,使用時只需給出這個總指令就能執行其功能。
所存入的這一系列指令——用戶宏程序
調用宏程序的指令————宏指令
特點:使用變量
1)變量的表示和使用
變量表示
#I(I=1,2,3,…)或#[<式子>]
例:#5,#109,#501,#[#1+#2-12]
變量的使用
地址字后面指定變量號或公式
格式:<地址字>#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
MDI鍵盤輸一.變量的種類
①局部變量#1~#33
一個在宏程序中局部使用的變量
例:A宏程序B宏程序
……
#10=20X#10不表示X20
……
斷電后清空,調用宏程序時代入變量值
②公共變量#100~#149,#500~#531
各用戶宏程序內公用的變量
例:上例中#10改用#100時,B宏程序中的
X#100表示X20
#100~#149斷電后清空
#500~#531保持型變量(斷電后不丟失)
③系統變量
固定用途的變量,其值取決于系統的狀態
例:#2001值為1號刀補X軸補償值
#5221值為X軸G54工件原點偏置值
入時必須輸入小數點,小數點省略時單位為μm
運算指令
運算式的右邊可以是常數、變量、函數、式子
式中#j,#k也可為常量
式子右邊為變量號、運算式
⑴定義
#I=#j
⑵算術運算
#I=#j+#k
#I=#j-#k
#I=#j*#k
#I=#j/#k
⑶邏輯運算
#I=#JOK#k
#I=#JXOK#k
#I=#JAND#k
⑸函數
#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”隔開
例:#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重)
2、轉移與循環指令
1)無條件的轉移
格式:GOTO1;
GOTO#10;
2)條件轉移
格式: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.循環
格式:WHILE[<條件式>]DOm;(m=1,2,3)
…
…
…
ENDm
說明:
1)條件滿足時,執行DOm到ENDm,則從DOm的程序段
不滿足時,執行DOm到ENDm的程序段
2)省略WHILE語句只有DOm…ENDm,則從DOm到ENDm之間形成死循環
3)嵌套
4)EQNE時,空和“0”不同
其他條件下,空和“0”相同
例:求1到10之和
二、HNC-21M數控系統 為用戶配備了強有力的類似于高級語言的宏程序功能,用戶可以使用變量進行算術運算、邏輯運算和函數的混合運算,此外宏程序還提供了循環語句、分支語句和子程序調用語句,利于編制各種復雜的零件加工程序,減少乃至免除手工編程時進行繁瑣的數值計算,以及精簡程序量。
1、宏變量及常量
1.宏變量
#0~#49當前局部變量
#50~#199全局變量
#200~#2490層局部變量
#250~#2991層局部變量
#300~#3492層局部變量
#350~#3993層局部變量
#400~#4494層局部變量
#450~#4995層局部變量
#500~#5496層局部變量
#550~#5997層局部變量
#600~#699刀具長度寄存器H0~H99
#700~#799刀具半徑寄存器D0~D99#800~#899刀具壽命寄存器
2、常量
PI:圓周率π
TRUE:條件成立(真)
FALSE:條件不成立(假)
運算符與表達式
①算術運算符:+,-,*,/
②條件運算符
EQ(=),NE(≠),GT(>),
GE(≥),LT(<),LE(≤)
③邏輯運算符
AND,OR,NOT
④函數
SIN,COS,TAN,ATAN,ATAN2,
ABS,INT,SIGN,SQRT,EXP
⑤表達式
用運算符連接起來的常數,宏變量構成表達式。
例如:175/SQRT[2]*COS[55*PI/180];
#3*6GT14;
賦值語句
格式:宏變量=常數或表達式
把常數或表達式的值送給一個宏變量稱為賦值。
例如:#2=175/SQRT[2]*COS[55*PI/180];
#3=124.0;
條件判別語句IF,ELSE,ENDIF
格式(i):IF條件表達式
…
ELSE
…
ENDIF
格式(ii):IF條件表達式
…
ENDIF
循環語句WHILE,ENDW
格式:WIIILE條件表達式
…
ENDW
例如:車削橢圓
%(FNAUC)
O0001
N1G00X0Z150.
N2G98
N3#24=80(短軸半徑,X軸方向)
N4#26=100(長軸半徑,Z軸方向)
N5#7=0.1(Z軸取點的間隔距離)
N6#1=#26+#7(Z軸方向最大值,假設為頂點)
N7#23=3.15(Z軸方向最小值)
N8WHILE[#1GT#23]DO1
N9#1=#1-#7(計算每次Z軸的坐標值)
N10IF[#1GT#23]GOTO12
N11#1=#23(最后一次把Z軸終點坐標賦值給#1)
N12#3=2*#24*SQRT[1-[#1*#1]/[#26*#26]](X軸坐標值計算,此處按直徑編程)
N13G01X#3Z#1F100
N14END1
N15M30
%
%0001(華中系統)
N1M03S1000T0101
N2G00X20Z5
N3#21=100(長軸半徑,Z軸方向)
N4WHILE#21GT[-100]
N5#20=0.8*SQRT[100-#21*#21](計算每次X軸的坐標值)
N6G01X[#20*2]Z[#21]F100(加工橢圓)
N7#21=#21-0.05(計算每次Z軸的坐標值)
N8ENDW
N9M30