一文搞懂數控宏程序的編程及應用,值得收藏!
來自專欄 UG編程4 人贊了文章
1. 什麼場合會用到宏程序編程?
其實說起來宏就是用公式來加工零件,比如說橢圓,如果沒有宏的話,我們要逐點算出曲線上的點,然後慢慢來用直線逼近,如果是個光潔度要求很高的工件的話,那麼需要計算很多的點,可是應用了宏後,我們把橢圓公式輸入到系統中然後我們給出Z坐標並且每次加一個量,那麼宏就會自動算出X坐標並且進行切削, 實際上宏在程序中主要起到的是運算作用。
手工編程加工公式曲線(計算簡單,輸入快捷)
有規律的切削路徑(作為一個切削模塊)
程序間的控制(程序的調度)
刀具的管理(刀具的磨損)
自動測量(機內測頭)
2. 什麼叫宏程序?
在編程時,我們會把能完成某一功能的一系列指令像子程序那樣存入存儲器,用一個總指令來調用它們,使用時只需給出這個總指令就能執行其功能所存入的這一系列指令稱作用戶宏程序本體,簡稱宏程序。
這個總指令稱作用戶宏程序調用指令。在編程時,編程員只要記住宏指令而不必記住宏程序。
3. 用戶宏程序與普通程序的區別
1)在用戶宏程序本體中,能使用變數,可以給變數賦值,變數間可以運算,程序可以跳轉。
2)普通程序中,只能指定常量,常量之間不能運算,程序只能順序執行,不能跳轉,因此功能是固定的,不能變化。
3)用戶宏功能是用戶提高數控機床性能的一種特殊功能,在相類似工件的加工中巧用宏程序將起到事半功倍的效果。
4. 變數的三種類型
數控系統變數表示形式為「#」後跟1~4位數字,變數種類有三種:
(1)局部變數:#1~#33是在宏程序中局部使用的變數,它用於自變數轉移。
(2)公用變數:用戶可以自由使用,它對於由主程序調用的各子程序及各宏程序來說是可以公用的。#100~#149在關掉電源後,變數值全部被清除,而#500~#509在關掉電源後,變數值則可以保存。
(3)系統變數:由後跟4位數字來定義,它能獲取包含在機床處理器或NC內存中的只讀或讀/寫信息,包括與機床處理器有關的交換參數、機床狀態獲取參數、加工參數等系統信息。
5. 宏程序的特點
宏程序可使用變數,可用變數執行相應操作;實際變數值可由宏程序指令賦給變數。
6. 指令
(1)宏程序的簡單調用格式
宏程序的簡單調用是指在主程序中,宏程序可以被單個程序段單次調用。
調用指令格式:
G65 P(宏程序號)L(重複次數)(變數分配)。
其中:G65―宏程序調用指令;
P(宏程序號)―被調用的宏程序代號;
L(重複次數)―宏程序重複運行的次數,重複次數為1時,可省略不寫;
(變數分配)―為宏程序中使用的變數賦值。
宏程序與子程序相同的一點是,一個宏程序可被另一個宏程序調用,最多可調用4重。
(2)宏程序的編寫格式
宏程序的編寫格式與子程序相同。其格式為:
0~(0001~8999為宏程序號)
N10 指令
N~ M99
上述宏程序內容中,除通常使用的編程指令外,還可使用變數、算術運算指令及其它控制指令。變數值在宏程序調用指令中賦給。
7. FANUC系統宏程序應用
(1)宏程序切槽
1)WHILE語句
G00 X52 Z2;
#2=-14;
是刀具z向的起刀點(因為刀寬為4mm,所以起刀點定在Z-14的位置)
WHILE〔#2 GE -30〕DO2;
是z方向的約束條件,當z等於-30時,z向就不再移動
G00 Z〔#2〕;
z方向的當前位置
#2=#2-2;
z方向的移動步距,每次移動2mm
#1=52;
是x方向的起刀點
WHILE〔#1 GE 20〕DO1;
X方向的約束條件,當直徑等於20時就不再切削
G01 X〔#1〕F0.2;
x方向的切深
G00 X〔#1+1〕;
x方向的相對退刀量
#1=#1-1;
x方向的步距(每次切1mm)
END1;
G00 X52;
END2;
完整程序:
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X52 Z2;
#2=-14;
WHILE〔#2GE-30〕DO2; END1;
G00 Z〔#2〕;
#2=#2-2;
#1=52
WHILE〔#1GE20〕DO1;
G01X〔#1〕F0.2;
G00X〔#1+1〕;
#1=#1-1;
G00 X52;
END2;
G00 X150 Z150;
M30;
2)IF語句
G00 X52 Z-2;
#1=-14;
是刀具的z向起刀點(刀寬為4mm)
N2 #1=#1-2;
是z方向的移動步距
#2=52;
為x方向的起刀點
N1#2=#2-1;
是x方向的步距(每次切深1mm)
G01 X〔#2〕F0.2;
X方向的當前位置
G00 X〔#2+1〕;
X方向的相對退刀量
IF 〔#2 GE 21〕GOTO1;
x方向的約束條件(當x的數值切到20時就進行下面程序,不再返回)
G00 X52;
X退刀到52的位置
G00 Z〔#1〕;
Z方向的當前位置
IF 〔#1 GE -30〕GOTO2;
Z方向的約束條件,當z等於-30時,z向就不在移動
完整程序:
O1234;
G40G97G99;
T0101;
S1000M3;
G00 X52 Z-2;
#1=-14;
N2 #1=#1-2;
#2=52;
N1#2=#2-1;
G01 X〔#2〕F0.2;
G00 X〔#2+1〕;
IF〔#2GE21〕GOTO1;
G00X52;
G00Z〔#1〕;
IF〔#1GE-30〕GOTO2;
G00X200;
Z200;
M5;
M30;
(2)橢圓編程
1)橢圓WHILE語句的標準格式:
#1=a;
a :為刀具的起刀點在相對橢圓的軸線Z的正方向a mm處
WHILE〔#1 GE b〕DO1;
b: 為橢圓加工的終點在相對橢圓的軸線Z的負方向b mm處(如果加工的是一個完整的半橢圓,那a、b是數值相同符號不同的兩個數值)
#2= c*SQRT〔1-#1*#1/d*d〕;
c: 橢圓的短半軸
d: 橢圓的長半軸(根據橢圓公式求#2,長半軸為d,短半軸為c,#2代表X的數值,#1為Z的數值,SQRT是開方的意思)
G01 X〔±2*#2+e〕Z〔#1±f〕;
e: 橢圓的X向軸線相對工件坐標系的偏移量(直徑值)
f: 橢圓的Z向軸線相對工件坐標系的偏移量
#1=#1-1;步距(每次移動1mm)
END1;
注意事項:當車削凹橢圓時X後括弧中的「±」取「﹣」;當車削凸橢圓時X後括弧中的「±」取「+」。
當橢圓的X軸線向正向偏移則Z後括弧中的「±」取「+」;當橢圓的X向軸線向負向偏移則Z後括弧中的「±」取「﹣」
2)橢圓IF語句的標準格式
#1=a;
a: 為刀具的起刀點在相對橢圓的軸線Z的正方向a mm處
N1#2=b*SQRT〔1-#1*#1/c*c〕;
b:橢圓的短半軸c:橢圓的長半軸(根據橢圓公式X/c+ Y/b=1,SQRT是開方的意思)
G01X〔±2*#2+d〕Z〔#1±e〕F0.2; d:橢圓的X向軸線相對坐標零點的偏移量(直徑值)e:橢圓的Z向軸線相對零面的偏移量
#1=#1-1;
步距(每次移動1mm)
IF〔#1 GE -f〕GOTO1
f:橢圓加工的終止
注意事項:當車削凹橢圓時X後括弧中的「±」取「﹣」;當車削凸橢圓時X後括弧中的「±」取「+」。當橢圓的X軸線向正向偏移則Z後括弧中的「±」取「+」;當橢圓的X向軸線向負向偏移則Z後括弧中的「±」取「﹣」。
WHILE語句
#1=20;
WHILE〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2+50〕Z〔#1-25〕;
#1=#1-1;
END1;
IF語句
#1=20;
N1#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2+50〕Z〔#1-25〕F0.2;
#1=#1-1;
IF〔#1GE-20〕GOTO1;
完整程序
O1234;
G40G97G99;
T0101;
S1000 M3;
G00 X50 Z2;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G0 G42 Z-5;
#1=20;
WHILE〔#1GE-20〕DO1;
#2=10*SQRT〔1-#1*#1/400〕;
G01X〔-2*#2+50〕Z〔#1-25〕F0.2;
#1=#1-1;
END1;
G00 X50;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
IF語句完整格式省略,(IF語句也一樣,只要加上循環就可以),在FANUC-0i系統中宏程序只能加在G73中。
(3)拋物線的加工
1)拋物線WHILE語句的標準格式:
#1=a;
a: 為刀具的起刀點在拋物線軸線Z的方向a mm處
WHILE〔#1 GE -b〕DO1;
b: 為橢圓z向的加工長度
#2=SQRT〔-#1*5/3〕;
(根據拋物線公式Z=-3/5*X*X,求其中的X值,也就是#2,其中SQRT是開平方的意思)
G01 X〔±2*#2+c〕Z〔#1〕;
c: 為拋物線的X向軸線相對工件坐標系的偏移量(直徑值),「±」
取「+」時為凸,取「-」時為凹
#1=#1-1; 步距(每次移動1mm)
END1;
2)拋物線IF語句的標準格式
#1=a;
a: 為刀具的起刀點在拋物線軸線Z的方向a mm處
N1 #2=SQRT〔-#1*5/3〕;
(根據拋物線公式Z=-3/5*X*X,求其中的X值,也就是#2,其中SQRT是開平方的意思)
G01 X〔±2*#2+b〕Z〔#1〕;
b:為拋物線的X向軸線相對坐標零點的偏移量(直徑值),「±」取「+」時為凸,取「-」時為凹
#1=#1-1;
(Z方向的步距,每次移動1mm)
IF〔#1 GE -c〕GOTO1; c:為橢圓z向的加工長度
拋物線IF語句的另一種形式
#1=a;
N1 #2=SQRT〔(+)#1*5/3〕;
「+」號可省略
G01 X〔2*#2+b〕Z〔-#1〕;
#1=#1+1;
IF〔#1 LE c〕GOTO1;
假設拋物線是向Z的正方向,再用Z〔-#1〕;把拋物線對稱到負方向
WHILE語句
#1=0;
WHILE〔#1 GE -15〕DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2+30〕Z〔#1〕;
#1=#1-1;
END1;
IF語句
#1=0;
N1 #2=SQRT〔-#1*5/3〕;
G01X〔2*#2+30〕Z〔#1〕;
#1=#1-1;
IF〔#1 GE -15〕GOTO1;
完整程序
O1234;
G40 G97 G99;
T0101;
S1000 M3;
G00 X42 Z1;
G73 U5 R5;
G73 P10 Q20 U0.5 F0.2;
N10 G00 G42 Z0;
#1=0;
WHILE〔#1 GE -15〕DO1;
#2=SQRT〔-#1*5/3〕;
G01 X〔2*#2+30〕Z〔#1〕;
#1=#1-1;
END1;
G00 X42;
N20 G00 G40 Z2;
G70 P10 Q20;
G00 X200;
Z200;
M5;
M30;
(4)WHILE語句與IF語句的區別
1)兩種語句返的方向不同
WHILE語句向後返
例:WHILE〔#1 GE 20〕DO1;
G01 X〔#1〕F0.2;
假設機床執行到此句時#1=20,它會繼續往下執行,執行到#1=#1-1後#1的值變為19,不再滿足約束條件所以就不會返回去。(X方向切到20)
G00 X〔#1+1);
#1=#1-1;
END1;
2)IF語句向前返
例:N1 #2=#2-1;
G01X〔#2〕F0.2;假設機床執行到此句時#2=20,它會繼續往下執行,執行到IF〔#2 GE 20〕GOTO1;仍然滿足條件,它會繼續返回到N1 #2=#2-1;而現在的X值就會變為19,不再滿足約束條件,而後再執行一
G01X〔#2〕F0.2;最後就執行下面的程序(X方向已經切到19)
G00X〔#2+1);
IF〔#2 GE 20〕GOTO1;
3)從上面的切槽程序可以看出,IF語句要比WHILE語句的字數要少很多。
4)由於返回的方向不同,在加工中WHILE語句少讀一句,IF語句要多讀一句。
8. SIEMENS系統(車床)宏程序應用
說明:宏程序是用變數編程,西門子系統的變數號用R表示。
例如用普通編程方法編寫的:G01X-10
用宏程序可表示為:
R1=-10
G01 X=R1
條件轉移:
IF GOTOB:向後跳轉
IF GOTOF:向前跳轉
用普通編程方法編寫的
GO1X100
用變數可表示為:
R1=0
AA:R1=R1+1
G01X=R1
IF R1=n GOTOB AA
如過變數R1=-20 GOTOB AA
PP:X42
G0G40X100Z100
M05
M09
M30
(3)拋物線
1)基本格式:
R1=0
設定變數R1的初始值為0
AA:R2=SQRT(-R1×n)
根據拋物線基本格式所得,式中SQRT為開平方符號,n是係數
G01X=2×R2+n
Z=R1
加工路徑,+2是凸形,n是X軸起點數值
R1=R1-1
變數增量值為1mm
IF R1>-30 GOTOB AA
如果變數R1>-30,程序向後跳轉到標記處:AA
2)編程舉例:如需免費編程視頻資料+安裝包+視頻安裝教程的小夥伴請聯繫莫莫Q723940057或Q群373600976哦!
T1
Tc
T1D1
G0G40X100Z100
M03S1000
G0X52Z2
CYCLE95( )
G0G42
OO:
R1=0
AA:R2=SQRT(-R1×5/3)
G01X=2×R2+30 Z=R1
R1=R1-2
IF R1>-60 GOTOB AA
PP:X52
G0X100Z100
M05
M30
-----------------------------------------------
推薦閱讀:
※什麼樣才能算是真正的CNC編程大師?
※UG造型設計—「抽取」應用分享
※基於UG的數控加工圖形化編程技術
※你開的數控機床也許只能叫機床,人家開的數控機床那才叫高大上!
※快速掌握數控編程核心秘訣