華中數(shù)控車宏程序_第1頁
華中數(shù)控車宏程序_第2頁
華中數(shù)控車宏程序_第3頁
華中數(shù)控車宏程序_第4頁
華中數(shù)控車宏程序_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、華中數(shù)控宏程序一什么是宏程序?什么是數(shù)控加工宏程序?簡單地說,宏程序是一種具有計算能力和決策能力的數(shù)控程序。宏程序具有如下些特點:1使用了變量或表達式(計算能力),例如: (1)G01 X3+5 ;有表達式3+5(2)G00 X4 F#1 ;有變量#1(3)G01 Y50*SIN3 ;有函數(shù)運算2使用了程序流程控制(決策能力),例如:(1)IF #3 GE 9 ;有選擇執(zhí)行命令ENDIF(2)WHILE #1 LT #4*5 ;有條件循環(huán)命令ENDW二用宏程編程有什么好處?1宏程序引入了變量和表達式,還有函數(shù)功能,具有實時動態(tài)計算能力,可以加工非圓曲線,如拋物線、橢圓、雙曲線、三角函數(shù)曲線等;

2、2宏程序可以完成圖形一樣,尺寸不同的系列零件加工;3宏程序可以完成工藝路徑一樣,位置不同的系列零件加工;4宏程序具有一定決策能力,能根據(jù)條件選擇性地執(zhí)行某些部分;5使用宏程序能極大地簡化編程,精簡程序。適合于復(fù)雜零件加工的編程。一宏變量及宏常量1宏變量先看一段簡單的程序:G00 X25.0上面的程序在X軸作一個快速定位。其中數(shù)據(jù)25.0是固定的,引入變量后可以寫成:#1=25.0 ;#1是一個變量G00 X#1 ;#1就是一個變量宏程序中,用“#”號后面緊跟14位數(shù)字表示一個變量,如#1,#50,#101,。變量有什么用呢?變量可以用來代替程序中的數(shù)據(jù),如尺寸、刀補號、G指令編號,變量的使用,

3、給程序的設(shè)計帶來了極大的靈活性。使用變量前,變量必需帶有正確的值。如#1=25G01 X#1 ;表示G01 X25 #1=-10 ;運行過程中可以隨時改變#1的值G01 X#1 ;表示G01 X-10用變量不僅可以表示坐標(biāo),還可以表示G、M、F、D、H、M、X、Y、等各種代碼后的數(shù)字。如:#2=3G#2 X30 ;表示G03 X30例1 使用了變量的宏子程序。%1000 #50=20 ;先給變量賦值M98 P1001 ;然后調(diào)用子程序#50=350 ;重新賦值M98 P1001 ;再調(diào)用子程序M30%1001 G91 G01 X#50 ;同樣一段程序,#50的值不同,X移動的距離就不同M992

4、局部變量編號#0 #49的變量是局部變量。局部變量的作用范圍是當(dāng)前程序(在同一個程序號內(nèi))。如果在主程序或不同子程序里,出現(xiàn)了相同名稱(編號)的變量,它們不會相互干擾,值也可以不同。例%100N10 #3=30 ;主程序中#3為30M98 P101 ;進入子程序后#3不受影響#4=#3 ;#3仍為30,所以#4=30M30%101#4=#3 ;這里的#3不是主程序中的#3,所以#3=0(沒定義),則:#4=0#3=18 ;這里使#3的值為18,不會影響主程序中的#3M993全局變量編號#50 #199的變量是全局變量(注:其中#100#199也是刀補變量)。全局變量的作用范圍是整個零件程序。不

5、管是主程序還是子程序,只要名稱(編號)相同就是同一個變量,帶有相同的值,在某個地方修改它的值,所有其它地方都受影響。例%100N10 #50=30 ;先使#50為30M98 P101 ;進入子程序#4=#50 ;#50變?yōu)?8,所以#4=18M30%101#4=#50 ; #50的值在子程序里也有效,所以#4=30#50=18 ;這里使#50=18,然后返回M99為什么要把變量分為局部變量和全局變量?如果只有全局變量,由變量名不能重復(fù),就可能造成變量名不夠用;全局變量在任何地方都可以改變它的值,這是它的優(yōu)點,也是它的缺點。說是優(yōu)點,是因為參數(shù)傳遞很方便;說是缺點,是因為當(dāng)一個程序較復(fù)雜的時候,

6、一不小心就可能在某個地用了相同的變量名或者改變了它的值,造成程序混亂。局部變量的使用,解決了同名變量沖突的問題,編寫子程序時,不需要考慮其它地方是否用過某個變量名。什么時候用全局變量?什么時候用局部變量?在一般情況下,你應(yīng)優(yōu)先考慮選用局部變量。局部變量在不同的子程序里,可以重復(fù)使用,不會互相干擾。如果一個數(shù)據(jù)在主程序和子程序里都要用到,就要考慮用全局變量。用全局變量來保存數(shù)據(jù),可以在不同子程序間傳遞、共享、以及反復(fù)利用。刀補變量(#100#199)。這些變量里存放的數(shù)據(jù)可以作為刀具半徑或長度補償值來使用。如#100=8G41 D100 ;D100就是指加載#100的值8作為刀補半徑。注意:上面

7、的程序中,如果把D100寫成了D#100,則相當(dāng)于D8,即調(diào)用8號刀補,而不是補償量為8。4系統(tǒng)變量#300以上的變量是系統(tǒng)變量。系統(tǒng)變量是具有特殊意義的變量,它們是數(shù)控系統(tǒng)內(nèi)部定義好了的,你不可以改變它們的用途。系統(tǒng)變量是全局變量,使用時可以直接調(diào)用。#0#599是可讀寫的,#600以上的變量是只讀的,不能直接修改。其中,#300 #599是子程序局部變量緩存區(qū)。這些變量在一般情況下,不用關(guān)心它的存在,也不推薦你去使用它們。要注意同一個子程序,被調(diào)用的層級不同時,對應(yīng)的系統(tǒng)變量也是不同的。#600#899是與刀具相關(guān)系統(tǒng)變量。#1000#1039坐標(biāo)相關(guān)系統(tǒng)變量。#1040#1143參考點相

8、關(guān)系統(tǒng)變量。#1144#1194系統(tǒng)狀態(tài)相關(guān)系統(tǒng)變量。(詳見:2華中數(shù)控系統(tǒng)系統(tǒng)變量一覽)有時候需要判斷系統(tǒng)的某個狀態(tài),以便程序作相應(yīng)的處理,就要用到系統(tǒng)變量。5常量PI 表示圓周率, TRUE 條件成立(真), FALSE 條件不成立(假) 。二運算符與表達式1算術(shù)運算符加 + , 減 - , 乘 * , 除 / 2條件運算符宏程序運算符EQNEGTGELTLE數(shù)學(xué)意義條件運算符用在程序流程控制IF和WHILE的條件表達式中,作為判斷兩個表達式大小關(guān)系的連接符。注意:宏程序條件運算符與計算機編程語言的條件運算符表達習(xí)慣不同。3邏輯運算符在IF或WHILE語句中,如果有多個條件,用邏輯運算符來

9、連接多個條件。AND (且) 多個條件同時成立才成立 OR (或) 多個條件只要有一個成立即可NOT (非) 取反(如果不是)例#1 LT 50 AND #1GT 20 表示:#1<50且#1>20#3 EQ 8 OR #4 LE 10 表示:#3=8或者#410有多個邏輯運算符時,可以用方括號來表示結(jié)合順序,如:NOT#1 LT 50 AND #1GT 20表示:如果不是“#1<50 且 #1>20”更復(fù)雜的例子,如:#1 LT 50 AND #2GT 20 OR #3 EQ 8 AND #4 LE 104函數(shù)正 弦:SINa 余弦:COSa 正切:TANa 注:a為

10、角度,單位是弧度值。反正切:ATANa (返回:度,范圍:-9090) 反正切:ATAN2a/b (返回:度,范圍:-180180) (注:華中數(shù)控暫不支持)絕對值:ABSa,表示|a|取 整:INTa,采用去尾取整,非“四舍五入”取符號:SIGNa,a為正數(shù)返回1,0返回0,負數(shù)返回-1開平方:SQRTa ,表示a 指 數(shù):EXPa,表示ea5表達式與括號包含運算符或函數(shù)的算式就是表達式。表達式里用方括號來表示運算順序。宏程序中不用圓括號,因圓括號是注釋符。例如 175/SQRT2 * COS55 * PI/180 #3*6 GT 146運算符的優(yōu)先級方括號 函數(shù) 乘除 加減 條件 邏輯技巧

11、:常用方括號來控制運算順序,更容易閱讀和理解。7賦值號 =把常數(shù)或表達式的值送給一個宏變量稱為賦值,格式如下:宏變量 = 常數(shù)或表達式例如 #2 = 175/SQRT2 * COS55 * PI/180 #3 = 124.0#50 = #3+12特別注意,賦值號后面的表達式里可以包含變量自身,如: #1 = #1+4 ;此式表示把#1的值與4相加,結(jié)果賦給#1。這不是數(shù)學(xué)中的方程或等式,如果#1的值是2,執(zhí)行#1 = #1+4后,#1的值變?yōu)?。三程序流程控制程序流程控制形式有許多種,都是通過判斷某個“條件”是否成立來決定程序走向的。所謂“條件”,通常是對變量或變量表達式的值進行大小判斷的式子

12、,稱為“條件表達式”。華中數(shù)控系統(tǒng)有兩種流程控制命令:IFENDIF,WHILEENDW。1條件分支 IF需要選擇性地執(zhí)行程序,就要用IF命令。格式1:(條件成立則執(zhí)行)IF 條件表達式 條件成立執(zhí)行的語句組ENDIF功能:條件成立執(zhí)行IF與ENDIF之間的程序,不成立就跳過。其中IF、ENDIF稱為關(guān)鍵詞,不區(qū)分大小寫。IF為開始標(biāo)識,ENDIF為結(jié)束標(biāo)識。IF語句的執(zhí)行流程如圖1所示。例:IF #1 EQ 10 ;如果#1=10 M99 ;成立則,執(zhí)行此句(子程返回)ENDIF ;條件不成立,跳到此句后面例:IF #1 LT 10 AND #1 GT 0;如果#1<10 且 #1&g

13、t;0G01 x20 ;成立則執(zhí)行Y15ENDIF ;條件不成立,跳到此句后面格式2:(二選一, 選擇執(zhí)行)形式:IF 條件表達式條件成立執(zhí)行的語句組ELSE條件不成立執(zhí)行的語句組ENDIF例:IF #51 LT 20 G91G01 X10F250ELSE G91G01X35F200ENDIF功能:條件成立執(zhí)行IF與ELSE之間的程序,不成立就執(zhí)行ELSE與ENDIF之間的程序。IF語句的執(zhí)行流程如圖1所示。本資料由百萬課件網(wǎng)收2條件循環(huán) WHILE格式:WHILE 條件表達式條件成立循環(huán)執(zhí)行的語句ENDW功能:條件成立執(zhí)行WHILE與ENDW之間的程序,然后返回到WHILE再次判斷條件,直到

14、條件不成立才跳到ENDW后面。WHILE語句的執(zhí)行流程如圖 1 所示。例: #2=30WHILE #2 GT 0 ;如果#2>0 G91G01X10 ;成立就執(zhí)行 #2=#2-3 ;修改變量,ENDW ;返回G90 G00 z50 ;不成立跳到這里執(zhí)行WHILE中必須有“修改條件變量”的語句,使得其循環(huán)若干次后,條件變?yōu)椤安怀闪ⅰ倍顺鲅h(huán),不然就成為死循環(huán)。假真IF條件成立?程序AENDIFELSE程序BIFELSEENDIF流程圖假真IF條件成立?程序1程序NENDIFIFENDIF流程圖WHILEENDW流程圖假真WHILE條件程序1程序NENDW 圖1 流程控制四子程序及參數(shù)遞傳

15、1普通子程序普通子程序指沒有宏的子程序,程序中各種加工的數(shù)據(jù)是固定的,子程序編好后,子程序的工作流程就固定了,程序內(nèi)部的數(shù)據(jù)不能在調(diào)用時“動態(tài)”地改變,只能通過“鏡像”、“旋轉(zhuǎn)”、“縮放”、“平移”來有限的改變子程序的用途。例 %4001G01 X80 F100 M99子程序中數(shù)據(jù)固定,普通子程序的效能有限。2宏子程序宏子程序可以包含變量,不但可以反復(fù)調(diào)用簡化代碼,而且通過改變變量的值就能實現(xiàn)加工數(shù)據(jù)的靈活變化或改變程序的流程,實現(xiàn)復(fù)雜的加工過程處理。例 %4002G01 Z#1 F#50 ;Z坐標(biāo)是變量;進給速度也是變量,可適應(yīng)粗、精加工。M99例 對圓弧往復(fù)切削時,指令G02、G03交替使

16、用。參數(shù)#51改變程序流程,自動選擇。%4003IF #51 GE 1G02 X#50 R#50 ;條件滿足執(zhí)行G02ELSEG03 X-#50 R#50 ;條件不滿足執(zhí)行G03ENDIF#51=#51*-1 ;改變條件,為下次做準(zhǔn)備M99子程序中的變量,如果不是在子程序內(nèi)部賦值的,則在調(diào)用時,就必需要給變量一個值。這就是參數(shù)傳遞問題,變量類型不同,傳值的方法也不同。3全局變量傳參數(shù)如果子程序中用的變量是全局變量,調(diào)用子程序前,先給變量賦值,再調(diào)用子程序。例: %400#51=40 ;#51為全局變量,給它賦值M98 P401 ;進入子程序后#51的值是40#51=25 ;第二次給它賦值M98

17、 P401 ;再次調(diào)用子程序,進入子程序后#51的值是25M30%401 ;子程序G91G01X#51F150 ;#51的值由主程序決定M994局部變量傳參數(shù)問題:%400N1 #1=40 ;為局部變量#1賦值N2 M98 P401 ;進入子程序后#1的值是40嗎?M30%401N4 G91G01X#1 ;子程序中用的是局部變量#1M99結(jié)論:主程序中N1行的#1與子程序中N4行的#1不是同一個變量,子程序不會接收到40這個值。怎么辦呢?局部變量的參數(shù)傳遞,是在宏調(diào)用指令后面添加參數(shù)的方法來傳遞的。上面的程序中,把N1行去掉,把N2行改成如下形式即可:N2 M98 P401 B40 比較一下,

18、可知多了個B40,其中B代表#1,緊跟的數(shù)字40代表#1的值是40。這樣就把參數(shù)40傳給了子程序%401中的#1。更一般地,我們用G65來調(diào)用宏子程序(稱宏調(diào)用)。G65指令:G65是專門用來進行宏子程序調(diào)用的,但在華中數(shù)控系統(tǒng)里面,G65和M98功能相同,可以互換。宏子程序調(diào)用指令G65的格式:G65 P_ L_ A_ B_ Z_P 子程序號L 調(diào)用次數(shù)AZ 參數(shù),每個字母與一個局部變量號對應(yīng)。A對應(yīng)#0,B對應(yīng)#1,C對應(yīng)#2,D對應(yīng)#3,如A20,即#0=20;B6.5,即#1=6.5;其余類推。換句話說,如果要把數(shù)50傳給變量#17,則寫R50。G65代碼在調(diào)用宏子程序時,系統(tǒng)會將當(dāng)前

19、程序段各字母(AZ共26個,如果沒有定義則為零)后跟的數(shù)值對應(yīng)傳到宏子程序中的局部變量#0-#25 。下面列出了宏調(diào)用時,參數(shù)字母與變量號的對應(yīng)關(guān)系:子程序中的變量#0#1#2#3#4#5#6#7#8#9#10#11#12傳參數(shù)用的字母ABCDEFGHIJKLM子程序中的變量#13#14#15#16#17#18#19#20#21#22#23#24#25傳參數(shù)用的字母NOPQRSTUVWXYZ要注意,由于字母G、P、L等已被宏調(diào)用命令、子程序號和調(diào)用次數(shù)占用,所以不能再用來傳遞其它任意數(shù)據(jù)。傳進去的是,G65即#6=65,P401即#15=401(子程序號),L2即#11=2。為了便于參數(shù)傳遞,

20、編寫子程序時要避免用#6、#15、#11等變量號來接收數(shù)據(jù),但這些變量號可以用在子程序中作為內(nèi)部計算的中間變量暫存數(shù)據(jù)。另外,G65代碼在調(diào)用宏子程序時,還會把當(dāng)前九個軸的絕對位置(工件絕對坐標(biāo))傳入局部變量#30#38。#30#38與軸名的對應(yīng)關(guān)系由機床制造廠家規(guī)定,通常#30為X軸,#31為Y軸,#32為Z軸。固定循環(huán)指令初始平面Z 模態(tài)值也會傳給變量#26。通過#30#38可以輕易得到進入子程序時的軸坐標(biāo)位置,這在程序流程控制中是很有用的。5系列零件加工所謂系列零件加工,是指不同規(guī)格的零件,形狀基本相同,加工過程也相同,只是尺寸數(shù)據(jù)不一樣,利用宏程序就可以編寫出一個通用的加工程序來。例1

21、 切槽宏子程序。%8002G92X90 Z30M98 P8001 U10 V50 A20 B40 C3 ;UVABC對應(yīng)尺寸變量見下圖G00 X90Z30M30%8001 ;子程序G00 Z-#20 ;切刀Z向定位X#1+5 ;接近工件,留5毫米距離#10=#2 ;#10已切寬度+#2WHILE #10 LT #21 ;夠切一刀? G00 Z-#20-#10 ;Z向定位 G01 X#0 ;切到要求深度 G00X#1+5 ;X退刀到工件外 #10=#10+#2-1 ;修改#10ENDWG00 Z-#21-#20 ;切最后一刀G01X#0G00X#1+5M99例2 根據(jù)下面系列零件的圖形,編輯精加

22、工輪廓及切斷的程序。輪廓加工用外圓車刀、切斷用切斷刀(刀位點在右刀尖)。工件零點設(shè)在右端面。;工件1主程序:%1000M03 S600 T0101M98 P1001 A8B10C24D20E5F40T0202M98 P1002 C24F40M30;工件2主程序:%2000M03 S600 T0101M98 P1001 A10B15C28D24E7F50T0202M98 P1002 C28F50M30;輪廓加工子程序%1001G00X0Z3G01Z0F100G03X2*#0Z#0R#0G01X#2W-#4#10= #1- #2-#3/2#11=SQRT#1*#1-#10*#10G02X#2W-2

23、*#11R#1G01Z-#5U2G00X#2+50Z100M99;切斷子程序%1002G00X#2+2Z-#5G01X0.3F30G00X#2+50Z100M996高級參考在子程序中,可能會改變系統(tǒng)模態(tài)值。例如,主程序中的是絕對編程(G90),而子程序中用的是相對編程(G91),如果調(diào)用了這個子程序,主程序的模態(tài)就會受到影響。當(dāng)然,對于簡單的程序,你可以在子程序返回后再加一條G90指令變回絕對編程。但是,如果編寫的子程序不是你自己用,別人又不知道你改變了系統(tǒng)模態(tài)值,直接調(diào)用就有可能出問題。有沒有辦法,使子程序不影響主程序的模態(tài)值呢?簡單的辦法就是,進入子程序后首先把子程序會影響到的所有模態(tài)用局

24、部變量保存起來,然后再往后執(zhí)行,并且在子程序返回時恢復(fù)保存的模態(tài)值。看下面的例子例%102;不管原來是什么狀態(tài),先記錄下來#45=#1162 ; 記錄第12 組模態(tài)碼#1162 是G61 或 G64?#46=#1163 ; 記錄第13 組模態(tài)碼#1163 是G90 或 G91?;現(xiàn)在可以改變已記錄過的模態(tài)G91 G64 ;用相對編程G91 及連續(xù)插補方式G64 ;這里是其它程序;子程序結(jié)束前恢復(fù)記錄值G#45 G#46 ;恢復(fù)第12 組13 組模態(tài)M99由此可見,系統(tǒng)變量雖然是不能直接改寫的,但并不是不能改變的。系統(tǒng)模態(tài)值是可以被指令改變的。固定循環(huán)也是用宏程序?qū)崿F(xiàn)的,而且固定循環(huán)中它改變了系

25、統(tǒng)模態(tài)值,只是在固定循環(huán)子程序中采用了保護措施,在固定循環(huán)宏子程序返回時,恢復(fù)了它影響過的系統(tǒng)模態(tài),所以外表看它對系統(tǒng)模態(tài)沒有影響。這可以通過分析系統(tǒng)提供的固定循環(huán)宏程序看出來。對于每個局部變量,還可用系統(tǒng)宏AR來判別該變量是否被定義,是被定義為增量或絕對方式。該系統(tǒng)宏的調(diào)用格式如下AR#變量號返回值:0 表示該變量沒有被定義90 表示該變量被定義為絕對方式G9091 表示該變量被定義為相對方式G91例 下面的主程序%1000 在調(diào)用子程序%9990 時設(shè)置了I JK 之值,子程序%9990 可分別通過當(dāng)前局部變量#8 #9 #10 來訪問主程序的I J K 之值%1000G92 X0Y0Z0

26、M98 P9990 I20 J30 K40M30%9990IF AR#8 EQ 0 OR AR#9 EQ 0 OR AR#10 EQ 0M99 ; 如果沒有定義I J K 值,則返回ENDIFN10 G91 ; 用增量方式編寫宏程序IF AR#8 EQ 90 ; 如果I 值是絕對方式G90#8=#8-#30 ;將I 值轉(zhuǎn)換為增量方式, #30 為X 的絕對坐標(biāo)ENDIFM99HNC-21M 子程序嵌套調(diào)用的深度最多可以有七層,每一層子程序都有自己獨立的局部變量,變量個數(shù)為50 。當(dāng)前局部變量為#0-#49, 第一層局部變量為#200-#249 ,第二層局部變量為#250-#299,第三層局部變

27、量#300-#349 ,依此類推。在子程序中如何確定上層的局部變量要依上層的層數(shù)而定。由于通過系統(tǒng)變量來直接訪問局部變量容易引起混亂,因此不提倡用這種方法。例%0099G92 X0 Y0 Z0N100 #10=98M98 P100M30%100N200 #10=222 ;此時N100 所在段的局部變量#10 為第0層#210M98 P110M99%110N300 #10=333 ;此時N200 所在段的局部變量#10為第1層#260,即#260=222;此時N100 所在段的局部變量#10為第0層#210,即#210=98M99五宏編程實例1數(shù)車編程(1)函數(shù)曲線加工通用宏程序;任意曲線y=f

28、(x)的加工;單調(diào)區(qū)間x由x1變到x2方法一-%1001#1=x1 ;初值#2=f(x1) ;或者寫成#2=f(#1)WHILE #1 LE x2;或者WHILE #1 GE x2 G01 X#1 Y#2 ;到下一位置 #1=#1+0.01 ;X增量0.01 ;或者#1=#1-0.01 ;X增量-0.01 #2=f(#1) ;計算下個點坐標(biāo)ENDW;.退刀M30(實際應(yīng)用,請用具體表達式代替f(x))方法二%1002#1=x1 ;初值#3=f(x1) ;或者寫成#3=f(#1)WHILE #1 LE x2;或者WHILE #1 GE x2 #2=#3 ;保存前一個點坐標(biāo) #1=#1+0.01

29、;X增量0.01 ;或者#1=#1-0.01 ;X增量-0.01 #3=f(#1) ;計算下個點坐標(biāo) G91 G01 X0.01 Y#3-#2 ;到下一位置ENDW;.退刀M30(2)拋物線車削1用宏程序編制如圖所示拋物線在X區(qū)間0,8內(nèi)的程序。%3401T0101 G37 M03 S600 ;G37半徑編程#0=0 ;X坐標(biāo),初值為0#1=0 ; Z坐標(biāo),初值為0WHILE #0 LE 8 G90G01X#0Z-#1F200 #0=#0+0.08 #1=#0*#0/2ENDWG00 X40Z80 M05M30(3)拋物線車削2%0342T0101 M03 S600G00 X20.5 Z2#1

30、1=12 ;B初值#10=SQRT2*#11 ;A初值WHILE #10 LE 8 G90G01 X2*#10 Z12- #11 F200 #10=#10+0.1 #11=#10*#10/2ENDWG01 X16 Z-32+12Z-28U4G00 X20.5 Z2 M05M30(4)拋物線車削3%0342T0101 M03 S600G00 X35 Z3G01 X18 F100Z-8#11=12 ;B初值#10=SQRT2*#11 ;A初值WHILE #11 LE 32 G90G01X2*#10+3Z4-#11F500 #11=#11+0.06#10=SQRT2*#11ENDWG01 X22 Z

31、-28Z-30X30Z-35G00X35Z3M30(5)拋物線車削4%0001T0101 M03 S800G92 X100 Z50G64 G00X36Z4#11=32 ;B初值#10=SQRT2*#11 ;A初值WHILE #11 GT 0G01X20+2*#10Z#11-38#11=#11-0.2#10=SQRT2*#11ENDWG01X20Z-38G00X18Z4X100Z50M30(6)拋物線車削5(G71與宏程序)這個例子中應(yīng)用了G71復(fù)合循環(huán)與宏程序配合完成粗精加工。G71參數(shù)簡介:G71 U_R_P_Q_X_Z_F_S_T_U背吃刀量;R每次退刀量;P起始段號;Q結(jié)束段號;X、Z精

32、加工余量;F、S、T粗車時有效,精車時以精車程序為準(zhǔn)。%3402T0101 M03 S600G00 X21 Z2G71 U0.5 R1 P11 Q22 X0.6 Z0.1 F100 S600N11 G01 X0 S1200 ;精加工,起始#10=0 ;A坐標(biāo),初值為0#11=0 ;B坐標(biāo),初值為0WHILE #10 LE 8 G01 X2*#10 Z-#11 F50#10=#10+0.1 ;A坐標(biāo)增量0.1#11=#10*#10/2 ;更新B坐標(biāo)ENDWG01 X16 Z-32Z-40N22 G00X20.5 ;精加工,結(jié)束X21 Z2M30(7)拋物線車削6%3404T0101 M03 S6

33、00G92X80Z30G00X20Z3G71U0.6R0.6P6Q14X-0.6Z0.1F100N6G01X38#11=0 ;B初值#10=0 ;A初值WHILE #11 LE 18G01X38-2*#10Z-#11F100#11=#11+0.5#10=SQRT#11*2ENDWG01X26 Z-18N14 G01Z-24X22G00Z5X80Z30M05M30(8)正弦線車削%3404M03 S600 T0101G92 X80 Z30G00 X25 Z3G71 U0.6R0.6P6Q13X0.8F100N6G0X17#11=0WHILE #11 GE -25#9=#11*PI/10 ;#10

34、=3.5*SIN#9G01X17-2*#10Z#11F100#11=#11-0.5N13ENDWG01X24Z-25Z-30X30G00X80Z30M30(9)拋物線與橢圓車削%8002G92X50Z100M98 P8001 A8B5C4U32V40W55G36G90X50Z0M30%8001G64 G37 (連續(xù)切削,半徑編程)#10=0 #11=0 (拋物線起點)WHILE #11 LE #20G01 X#10 Z-#11 F150 #10=#10+0.08 (拋物線X增量)#11=#10*#10/#2(計算拋物線z)ENDW #50= SQRT#20*#2 (拋物線與橢圓交接處半徑)G0

35、1 X#50 Z-#20(拋物線終點)G01Z-#21 (直線終點)#12=0 #13=0 (橢圓起點)WHILE #13 LE #1#12=#0/#1*SQRT#1*#1-#13*#13 (橢圓X增量)G01 X#50+#0-#12 Z-#21-#13#13=#13+0.08 (橢圓z增量) ENDWG01 X#50+#0 Z-#21-#1 (橢圓終點)Z-#22U2G0X50Z100M99(10)橢圓粗、精車削-%100M03 T0101 S600G00 X32 Z2 ;粗車#1=15#2=0WHILE #1 GE 1 ;還可以車一刀(2mm) #1=#1-1 #2=25/15*SQRT1

36、5*15-#1*#1 G00 X#1*2+0.5 ;轉(zhuǎn)為直徑編程并留精車余量0.5 G01 Z#2-25 F150 G91 X1 G90 Z2ENDWG00 X0 S1200 ;精車#1=0#2=25WHILE #1 LE 15 G01 X#1*2 Z#2-25 F80 #1=#1+0.1 #2=25/15*SQRT15*15-#1*#1ENDWG01 X32G00 X50 Z100M30(11)用子程序完成粗、精加工子程序按精車路徑用相對編程(X方向)。方法1-%1010M03 S600 T0101#50=35 ;初始化X尺寸(毛坯值)#51=3 ;切削量WHILE #50 GT #51+0

37、.5 ;還夠車一刀? #50=#50-#51 G00 X#50 Z1 M98 P1011ENDWG00 X0.5 Z1M98 P1011 ;半精車G00 X0 Z1M98 P1011 ;精車G00 X50 Z100 M05M30%1011G01 Z0 ;編程起點X0,Z1G03 U20 W-10 R10G01 U12 W-5W-10U1 ;退刀G00 Z1M99方法2-%1020M03 S600 T0101#50=35 ;初始化X尺寸(毛坯值)#51=3 ;切削量WHILE #50 GT #51+0.5 ;還夠車一刀? #50=#50-#51 G90 G00 X#50 Z1 M98 P1021

38、ENDWG00 X0.5 Z1M98 P1021 ;半精車G00 X0 Z1M98 P1021 ;精車G00 X50 Z100 M05M30%1021(少走空刀的子程序)G01 Z0 ;編程起點X0,Z1G03 U20 W-10 R10IF #50+20 GT 35 ;過了毛坯就退刀 G01 U12 W-5 IF #50+20+12 GT 35 ;過了毛坯就退刀 W-10 ENDIFENDIFU1 ;退刀G00 Z1M992華中數(shù)控系統(tǒng)系統(tǒng)變量一覽(1)子程序嵌套局部變量主程序的局部變量為0層,沒有對應(yīng)的系統(tǒng)變量#200 #249 0 層局部變量(對應(yīng)0層子程序#0#49#250 #299 1

39、 層局部變量(對應(yīng)1層子程序#0#49)#300 #349 2 層局部變量(對應(yīng)2層子程序#0#49)#350 #399 3 層局部變量(對應(yīng)3層子程序#0#49)#400 #449 4 層局部變量(對應(yīng)4層子程序#0#49)#450 #499 5 層局部變量(對應(yīng)5層子程序#0#49)#500 #549 6 層局部變量(對應(yīng)6層子程序#0#49)#550 #599 7 層局部變量(對應(yīng)7層子程序#0#49)(2)刀具相關(guān)系統(tǒng)變量#600 #699 刀具長度寄存器H0 H99#700 #799 刀具半徑寄存器D0 D99#800 #899 刀具壽命寄存器(3)坐標(biāo)相關(guān)系統(tǒng)變量:#1000 機床

40、當(dāng)前位置X #1001 機床當(dāng)前位置Y #1002 機床當(dāng)前位置Z#1003 機床當(dāng)前位置A #1004 機床當(dāng)前位置B #1005 機床當(dāng)前位置C#1006 機床當(dāng)前位置U #1007 機床當(dāng)前位置V #1008 機床當(dāng)前位置W#1009 保留 #1010 程編機床位置X #1011 程編機床位置Y#1012 程編機床位置Z #1013 程編機床位置A #1014 程編機床位置B#1015 程編機床位置C #1016 程編機床位置U #1017 程編機床位置V#1018 程編機床位置W #1019 保留 #1020 程編工件位置X#1021 程編工件位置Y #1022 程編工件位置Z #10

41、23 程編工件位置A#1024 程編工件位置B #1025 程編工件位置C #1026 程編工件位置U#1027 程編工件位置V #1028 程編工件位置W #1029 保留#1030 當(dāng)前工件零點X #1031 當(dāng)前工件零點Y #1032 當(dāng)前工件零點Z#1033 當(dāng)前工件零點A #1034 當(dāng)前工件零點B #1035 當(dāng)前工件零點C#1036 當(dāng)前工件零點U #1037 當(dāng)前工件零點V #1038 當(dāng)前工件零點W #1039 保留(4)參考點相關(guān)系統(tǒng)變量#1040 G54零點X #1041 G54零點Y #1042 G54零點Z#1043 G54零點A #1044 G54零點B #1045

42、 G54零點C#1046 G54零點U #1047 G54零點V #1048 G54零點W #1049 保留#1050 G55零點X #1051 G55零點Y #1052 G55零點Z#1053 G55零點A #1054 G55零點B #1055 G55零點C#1056 G55零點U #1057 G55零點V #1058 G55零點W #1059 保留#1060 G56零點X #1061 G56零點Y #1062 G56零點Z#1063 G56零點A #1064 G56零點B #1065 G56零點C#1066 G56零點U #1067 G56零點V #1068 G56零點W #1069 保留

43、#1070 G57零點X #1071 G57零點Y #1072 G57零點Z#1073 G57零點A #1074 G57零點B #1075 G57零點C#1076 G57零點U #1077 G57零點V #1078 G57零點W #1079 保留 #1080 G58零點X #1081 G58零點Y #1082 G58零點Z#1083 G58零點A #1084 G58零點B #1085 G58零點C#1086 G58零點U #1087 G58零點V #1088 G58零點W #1089 保留#1090 G59零點X #1091 G59零點Y #1092 G59零點Z#1093 G59零點A #1

44、094 G59零點B #1095 G59零點C#1096 G59零點U #1097 G59零點V #1098 G59零點W #1099 保留#1100 中斷點位置X #1101 中斷點位置Y #1102 中斷點位置Z#1103 中斷點位置A #1104 中斷點位置B #1105 中斷點位置C#1106 中斷點位置U #1107 中斷點位置V #1108 中斷點位置W #1109 坐標(biāo)系建立軸#1110 G28中間點位置X #1111 G28中間點位置Y #1112 G28中間點位置Z#1113 G28中間點位置A #1114 G28中間點位置B #1115 G28中間點位置C#1116 G28

45、中間點位置U #1117 G28中間點位置V #1118 G28中間點位置W #1119 G28屏蔽字#1120 鏡像點位置X #1121 鏡像點位置Y #1122 鏡像點位置Z#1123 鏡像點位置A #1124 鏡像點位置B #1125 鏡像點位置C#1126 鏡像點位置U #1127 鏡像點位置V #1128 鏡像點位置W#1129 鏡像屏蔽字 #1130 旋轉(zhuǎn)中心(軸1) #1131 旋轉(zhuǎn)中心(軸2)#1132 旋轉(zhuǎn)角度 #1133 旋轉(zhuǎn)軸屏蔽字 #1134 保留#1135 縮放中心(軸1) #1136 縮放中心(軸2) #1137 縮放中心(軸3)#1138 縮放比例 #1139 縮放軸屏蔽字 #1140 坐標(biāo)變換代碼

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論