版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、數(shù)控宏程序 一什么是宏程序?什么是數(shù)控加工宏程序?簡單地說,宏程序是一種具有計(jì)算能力和決策能力 的數(shù)控程序。宏程序具有如下些特點(diǎn):1使用了變量或表達(dá)式(計(jì)算能力),例如:(1) g01 x3+5 ; 有表達(dá)式3+5(2) g00 x4 f#1 ; 有變量#1(3) g01 y50*sin3 ; 有函數(shù)運(yùn)算2使用了程序流程控制(決策能力),例如:(1)if #3 ge 9 ; 有選擇執(zhí)行命令endif(2)while #1 lt #4*5 ; 有條件循環(huán)命令endw二用宏程編程有什么好處?1 宏程序引入了變量和表達(dá)式,還有函數(shù)功能,具有實(shí)時(shí)動(dòng)態(tài)計(jì)算能力,可 以加工非圓曲線,如拋物線、橢圓、雙曲線
2、、三角函數(shù)曲線等;2 宏程序可以完成圖形一樣,尺寸不同的系列零件加工;3 宏程序可以完成工藝路徑一樣,位置不同的系列零件加工;4 宏程序具有一定決策能力,能根據(jù)條件選擇性地執(zhí)行某些部分;5 使用宏程序能極大地簡化編程,精簡程序。適合于復(fù)雜零件加工的編程。一宏變量及宏常量1宏變量先看一段簡單的程序:g00 x25.0上面的程序在x軸作一個(gè)快速定位。其中數(shù)據(jù)25.0是固定的,引入變量后可以 寫成:#1=25.0 ;#1是一個(gè)變量g00 x#1 ;#1就是一個(gè)變量宏程序中,用“#”號(hào)后面緊跟14位數(shù)字表示一個(gè)變量,如#1,#50 ,#101,。變量有什么用呢?變量可以用來代替程序中的數(shù)據(jù),如尺寸、刀
3、補(bǔ)號(hào)、 g指令編 號(hào),變量的使用,給程序的設(shè)計(jì)帶來了極大的靈活性。使用變量前,變量必需帶有正確的值。如#1=25g01 x#1 ;表示g01 x25#1=-10 ;運(yùn)行過程中可以隨時(shí)改變 #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%1001g91 g01 x#50 ;同樣一段程序,#
4、50的值不同,x移動(dòng)的距離就不同m992局部變量編號(hào)#0 #49 的變量是局部變量。局部變量的作用范圍是當(dāng)前程序(在同一個(gè)程序號(hào)內(nèi))。如果在主程序或不同子程序里,出現(xiàn)了相同名稱(編號(hào))的變量, 它們不會(huì)相互干擾,值也可以不同。例%100n10 #3=30m98 p101#4=#3m30%101#4=#3#3=18m993全局變量;主程序中#3為30;進(jìn)入子程序后#3不受影響;#3仍為30,所以#4=30;這里的#3不是主程序中的#3,所以#3=0(沒定義),則:#4=0 ;這里使#3的值為18,不會(huì)影響主程序中的 #3編號(hào)#50 #199 的變量是全局變量(注:其中#100#199 也是刀補(bǔ)變
5、量)。全局變量的作用范圍是整個(gè) 零件程序 。不管是主程序還是子程序,只要名稱(編號(hào))相同就是同一個(gè)變量,帶有相同的值,在某個(gè)地方修改它的值,所有其它地方都受影響。例%100n10 #50=30 ; 先使#50為30m98 p101 ; 進(jìn)入子程序#4=#50 ;#50 變?yōu)?8,所以#4=18m30%101#4=#50 ; #50 的值在子程序里也有效,所以#4=30#50=18 ; 這里使#50=18,然后返回m99為什么要把變量分為局部變量和全局變量?如果只有全局變量,由變量名不能重復(fù),就可能造成變量名不夠用;全局變量在任何地方都可以改變它的值,這是它的優(yōu)點(diǎn),也是它的缺點(diǎn)。說是優(yōu)點(diǎn),是因?yàn)?/p>
6、參數(shù)傳遞很方便;說是缺點(diǎn),是因?yàn)楫?dāng)一個(gè)程序較復(fù)雜的時(shí)候,一不小心就可能在某個(gè)地用了相同的變量名或者改變了它的值,造成程序混亂。局部變量的使用,解決了同名變量沖突的問題, 編寫子程序時(shí),不需要考慮其它地方是否用過某個(gè)變量名。什么時(shí)候用全局變量?什么時(shí)候用局部變量?在一般情況下,你應(yīng)優(yōu)先考慮選用局部變量。局部變量在不同的子程序里,可以重復(fù)使用,不會(huì)互相干擾。如果一個(gè)數(shù)據(jù)在主程序和子程序里都要用到,就要考慮用全局變量。用全局變量來 保存數(shù)據(jù),可以在不同子程序間傳遞、共享、以及反復(fù)利用。刀補(bǔ)變量(#100#199)。這些變量里存放的數(shù)據(jù)可以作為刀具半徑或長度補(bǔ) 償值來使用。如#100=8g41 d10
7、0 ;d100就是指加載#100 的值8作為刀補(bǔ)半徑。注意:上面的程序中,如果把 d100寫成了d#100,則相當(dāng)于d8,即調(diào)用8號(hào)刀補(bǔ), 而不是補(bǔ)償量為8。4系統(tǒng)變量#300以上的變量是系統(tǒng)變量。系統(tǒng)變量是具有特殊意義的變量,它們是數(shù)控系統(tǒng)內(nèi)部定義好了的,你不可以改變它們的用途。系統(tǒng)變量是全局變量,使用時(shí) 可以直接調(diào)用。#0#599是可讀寫的,#600以上的變量是只讀的,不能直接修改。其中,#300 #599 是子程序局部變量緩存區(qū)。這些變量在一般情況下,不用關(guān)心它的存在,也不推薦你去使用它們。要注意同一個(gè)子程序,被調(diào)用的層級(jí)不同時(shí) ,對 應(yīng)的 系統(tǒng) 變量 也是 不同 的。 #600#899
8、 是與 刀 具相 關(guān)系 統(tǒng)變 量。#1000#1039 坐標(biāo)相關(guān)系統(tǒng)變量。#1040#1143 參考點(diǎn)相關(guān)系統(tǒng)變量。#1144#1194 系統(tǒng)狀態(tài)相關(guān)系統(tǒng)變量。(詳見:)有時(shí)候需要判斷系統(tǒng)的某個(gè)狀態(tài),以便程序作相應(yīng)的處理,就要用到系統(tǒng)變 量。5常量pi 表示圓周率, true 條件成立(真), false 條件不成立( 假) 。二運(yùn)算符與表達(dá)式1算術(shù)運(yùn)算符加 +, 減 - , 乘 * ,除 /2條件運(yùn)算符宏程序運(yùn)算符數(shù)學(xué)意義eq ne gt ge lt le 條件運(yùn)算符用在程序流程控制if 和while 的條件表達(dá)式中,作為判斷兩個(gè)表達(dá)式大小關(guān)系的連接符。注意:宏程序條件運(yùn)算符與計(jì)算機(jī)編程語言
9、的條件運(yùn)算符表達(dá)習(xí)慣不同。 3邏輯運(yùn)算符在if或while語句中,如果有多個(gè)條件,用邏輯運(yùn)算符來連接多個(gè)條件。and (且)or (或)not (非)多個(gè)條件同時(shí)成立才成立多個(gè)條件只要有一個(gè)成立即可 取反(如果不是)例#1 lt 50 and #1gt 20#3 eq 8 or #4 le 10 表示:#120 表示:#3=8 或者#410有多個(gè)邏輯運(yùn)算符時(shí),可以用方括號(hào)來表示結(jié)合順序,如:not#1 lt 50 and #1gt 20 表示:如果不是“ #120 ” 更復(fù)雜的例子,如:#1 lt 50 and #2gt 20 or #3 eq 8 and #4 le 104函數(shù)正 弦:sin
10、a余弦:cosa正切:tana注:a為角度,單位是弧度值。反正切:atana ( 返回:度,范圍:-90 90)反正切:atan2a/b (返回:度,范圍:-180180) (注: 華中數(shù)控暫不支持)絕對值:absa ,表示|a|取 整:inta ,采用去尾取整,非“四舍五入”取符號(hào):signa,a 為正數(shù)返回1,0返回0,負(fù)數(shù)返回-1 開平方:sqrta ,表示 a指 數(shù):expa ,表示e 5表達(dá)式與括號(hào)a包含運(yùn)算符或函數(shù)的算式就是表達(dá)式。表達(dá)式里用方括號(hào)來表示運(yùn)算順序。 宏程序中不用圓括號(hào),因圓括號(hào)是注釋符。例如 175/sqrt2 * cos55 * pi/180 #3*6 gt 14
11、6運(yùn)算符的優(yōu)先級(jí)方括號(hào) 函數(shù) 乘除 加減 條件 邏輯技巧:常用方括號(hào)來控制運(yùn)算順序,更容易閱讀和理解。7賦值號(hào) =把常數(shù)或表達(dá)式的值送給一個(gè)宏變量稱為賦值,格式如下:宏變量 = 常數(shù)或表達(dá)式例如 #2 = 175/sqrt2 * cos55 * pi/180 #3 = 124.0#50 = #3+12特別注意,賦值號(hào)后面的表達(dá)式里可以包含變量自身,如:#1 = #1+4 ;此式表示把 #1的值與4 相加,結(jié)果賦給#1 。這不是數(shù)學(xué)中的 方程或等式,如果#1的值是2 ,執(zhí)行#1 = #1+4 后,#1 的值變?yōu)?。三程序流程控制程序流程控制形式有許多種,都是通過判斷某個(gè)“條件”是否成立來決定程序
12、走向的。所謂“條件”,通常是對變量或變量表達(dá)式的值進(jìn)行大小判斷的式子,稱為“條件表達(dá)式”。華中數(shù)控系統(tǒng)有兩種流程控制命令: ifendif,while endw。1條件分支 if需要選擇性地執(zhí)行程序,就要用 if命令。格式1:(條件成立則執(zhí)行)if 條件表達(dá)式條件成立執(zhí)行的語句組endif功能:條件成立執(zhí)行if與endif之間的程序,不成立就跳過。其中if、endif稱為關(guān)鍵詞,不區(qū)分大小寫。if為開始標(biāo)識(shí),endif 為結(jié)束標(biāo)識(shí)。if語句的執(zhí)行流程如圖 1所示。例:if #1 eq 10 ;如果#1=10m99endif;成立則,執(zhí)行此句(子程返回);條件不成立,跳到此句后面例:if #1
13、lt 10 and #1 gt 0;如果#10g01 x20y15endif;成立則執(zhí)行;條件不成立,跳到此句后面格式2:(二選一, 選擇執(zhí)行) 形式:if 條件表達(dá)式條件成立執(zhí)行的語句組 else條件不成立執(zhí)行的語句組 endif例:if #51 lt 20g91g01 x10f250elseg91g01x35f200endif功能:條件成立執(zhí)行if 與else 之間的程序,不成立就執(zhí)行else與endif之間 的程序。if語句的執(zhí)行流程如圖 1所示。2條件循環(huán) while格式:while 條件表達(dá)式條件成立循環(huán)執(zhí)行的語句endw功能:條件成立執(zhí)行while 與endw之間的程序,然后返回到
14、while 再次判斷條件,直到條件不成立才跳到endw后面。while語句的執(zhí)行流程如圖 1 所示。例:#2=30while #2 gt 0 ; 如果#20g91g01x10 ; 成立就執(zhí)行#2=#2-3 ; 修改變量,endw ; 返回g90 g00 z50 ;不成立跳到這里執(zhí)行while中必須有“修改條件變量”的語句,使得其循環(huán)若干次后,條件 變?yōu)椤安怀闪ⅰ倍顺鲅h(huán),不然就成為死循環(huán)。if 條件成假if 條件成真假真程序 awhile 條件程序 1程序 nelse真程序 1假程序 bendif endif程序 nifendif 流程ifelseendif 流endw圖程圖whileend
15、w 流程圖圖1 流程控制四子程序及參數(shù)遞傳1普通子程序普通子程序指沒有宏的子程序,程序中各種加工的數(shù)據(jù)是固定的,子程序編好后,子程序的工作流程就固定了,程序內(nèi)部的數(shù)據(jù)不能在調(diào)用時(shí)“動(dòng)態(tài)”地改變,只能通過“鏡像”、“旋轉(zhuǎn)”、“縮放”、“平移”來 有限的改變子程序的用途。例%4001g01 x80 f100m99子程序中數(shù)據(jù)固定,普通子程序的效能有限。2宏子程序宏子程序可以包含變量,不但可以反復(fù)調(diào)用簡化代碼,而且通過改變變量的值就能實(shí)現(xiàn)加工數(shù)據(jù)的靈活變化或改變程序的流程,實(shí)現(xiàn)復(fù)雜的加 工過程處理。例%4002g01 z#1 f#50 ;z 坐標(biāo)是變量;進(jìn)給速度也是變量,可適應(yīng)粗、精加工。 m99例
16、 對圓弧往復(fù)切削時(shí),指令 g02、g03交替使用。參數(shù)#51 改變程序流程, 自動(dòng)選擇。%4003if #51 ge 1g02 x#50 r#50 ;條件滿足執(zhí)行g(shù)02elseg03 x-#50 r#50 ;條件不滿足執(zhí)行 g03endif#51=#51*-1 ; 改變條件,為下次做準(zhǔn)備m99子程序中的變量,如果不是在子程序內(nèi)部賦值的,則在調(diào)用時(shí),就必需要給變量一個(gè)值。這就是參數(shù)傳遞問題,變量類型不同,傳值的方法也 不同。3全局變量傳參數(shù)如果子程序中用的變量是全局變量,調(diào)用子程序前,先給變量賦值, 再調(diào)用子程序。例:%400#51=40 ;#51 為全局變量,給它賦值m98 p401 ;進(jìn)入子
17、程序后#51 的值是40#51=25 ; 第二次給它賦值m98 p401 ; 再次調(diào)用子程序,進(jìn)入子程序后 #51 的值是25 m30%401 ; 子程序g91g01x#51f150 ;#51的值由主程序決定m994局部變量傳參數(shù)問題:%400n1 #1=40 ; 為局部變量#1賦值n2 m98 p401 ; 進(jìn)入子程序后#1的值是40嗎?m30%401n4 g91g01x#1 ; 子程序中用的是局部變量#1m99結(jié)論:主程序中 n1 行的#1 與子程序中 n4 行的#1 不是同一個(gè)變量,子程序不 會(huì)接收到 40 這個(gè)值。怎么辦呢?局部變量的參數(shù)傳遞,是在宏調(diào)用指令后面添加參數(shù)的方法來傳遞的。
18、 上面的程序中,把 n1 行去掉,把 n2 行改成如下形式即可:n2 m98 p401 b40比較一下,可知多了個(gè)b40,其中b代表#1 ,緊跟的數(shù)字40代表#1的值是40。這樣就把參數(shù)40傳給了子程序%401中的#1。更一般地,我們用g65 來調(diào)用宏子程序(稱宏調(diào)用)。g65 指令:g65 是專門用來進(jìn)行宏子程序調(diào)用的,但在華中數(shù)控系統(tǒng)里面,g65 和 m98 功能相同,可以互換。宏子程序調(diào)用指令g65的格式:g65 p_ l_ a_ b_z_plaz子程序號(hào)調(diào)用次數(shù)參數(shù),每個(gè)字母與一個(gè)局部變量號(hào)對應(yīng)。 a對應(yīng)#0,b對應(yīng)#1,c對應(yīng)#2 ,d對應(yīng)#3,如a20 ,即#0=20 ;b6.5,
19、即#1=6.5;其余類推。 換句話說,如果要把數(shù) 50傳給變量#17,則寫r50。g65代碼在調(diào)用宏子程序時(shí),系統(tǒng)會(huì)將當(dāng)前程序段各字母(az 共26個(gè),如果沒有定義則為零) 后跟的數(shù)值對應(yīng)傳到宏子程序中的局部變量 #0-#25 。 下面列出了宏調(diào)用時(shí),參數(shù)字母與變量號(hào)的對應(yīng)關(guān)系:子程序中的#0 #1 #2 #3 #4 #5 #6 #7 #8 #9 #10#11#12變量傳參數(shù)用的字母ab c d e f g h i j k l m子程序中的變量傳參數(shù)用的字母#1 #1 #1 #1 #1 #1 #1 #2 #2 #2 #2 #2 #2 3 4 5 6 7 8 9 0 1 2 3 4 5n o p
20、 q r s t u v w x y z要注意,由于字母g、p、l等已被宏調(diào)用命令、子程序號(hào)和調(diào)用次數(shù)占用,所以不能再用來傳遞其它任意數(shù)據(jù)。傳進(jìn)去的是, g65即#6=65,p401即#15=401(子程序號(hào)),l2即#11=2。為了便于參數(shù)傳遞,編寫子程序時(shí)要避免用#6、#15、#11等變量號(hào)來接收數(shù)據(jù),但這些變量號(hào)可以用在子程 序中作為內(nèi)部計(jì)算的中間變量暫存數(shù)據(jù)。另外,g65 代碼在調(diào)用宏子程序時(shí),還會(huì)把當(dāng)前九個(gè)軸的絕對位置 (工件絕對坐標(biāo))傳入局部變量#30#38。#30#38與軸名的對應(yīng)關(guān)系由機(jī)床制造廠家規(guī)定,通常#30為x軸,#31 為y軸,#32為z軸。固定循環(huán)指令初始平面z 模態(tài)
21、值也會(huì)傳給變量#26。通過#30#38可以輕易得到進(jìn)入子程序時(shí)的軸 坐標(biāo)位置,這在程序流程控制中是很有用的。5系列零件加工所謂系列零件加工,是指不同規(guī)格的零件,形狀基本相同,加工過程也相同,只是尺寸數(shù)據(jù)不一樣,利用宏程序就可以編寫出一個(gè)通用的加工 程序來。例1切槽宏子程序。%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 ; 夠切一刀
22、?g00 z-#20-#10 ;z向定位g01 x#0 ; 切到要求深度g00x#1+5 ;x退刀到工件外#10=#10+#2-1 ;修改#10 endwg00 z-#21-#20 ; 切最后一刀 g01x#0g00x#1+5m99例2根據(jù)下面系列零件的圖形,編輯精加工輪廓及切斷的程序。輪廓加工用外圓車刀、切斷用切斷刀(刀位點(diǎn)在右刀尖)。工件零點(diǎn)設(shè)在右端面。;工件1主程序:%1000m03 s600 t0101m98 p1001 a8b10c24d20e5f40t0202m98 p1002 c24f40m30;工件2主程序:%2000m03 s600 t0101m98 p1001 a10b15
23、c28d24e7f50t0202m98 p1002 c28f50m30;輪廓加工子程序%1001g00x0z3g01z0f100g03x2*#0z#0r#0g01x#2w-#4#10= #1- #2-#3/2#11=sqrt#1*#1-#10*#10g02x#2w-2*#11r#1g01z-#5u2g00x#2+50z100m99;切斷子程序%1002g00x#2+2z-#5g01x0.3f30g00x#2+50z100m996高級(jí)參考在子程序中,可能會(huì)改變系統(tǒng)模態(tài)值。例如,主程序中的是絕對編程(g90),而子程序中用的是相對編程(g91),如果調(diào)用了這個(gè)子程序,主程序的模態(tài)就會(huì)受到影響。當(dāng)然
24、,對于簡單的程序,你可以在子程序返回后再加一條 g90指令變回絕對編程。但是,如果編寫的子程序不是你自己用,別人又不知道你改變了系統(tǒng)模態(tài)值,直接調(diào)用就有可能出問題。有沒有辦法,使子程序不影響主程序的模態(tài)值呢?簡單的辦法就是,進(jìn)入子程序后首先把子程序會(huì)影響到的所有模態(tài)用局部變量保存起來,然后再往后執(zhí)行,并且在子程序返回時(shí)恢復(fù)保存的模 態(tài)值。看下面的例子例%102;不管原來是什么狀態(tài),先記錄下來#45=#1162 ; 記錄第12 組模態(tài)碼 #1162 是g61 或 g64?#46=#1163 ; 記錄第13 組模態(tài)碼 #1163 是g90 或 g91?m99由此可見,系統(tǒng)變量雖然是不能直接改寫的,
25、但并不是不能改變的。系統(tǒng)模態(tài)值是可以被指令改變 的。固定循環(huán)也是用宏程序?qū)崿F(xiàn)的,而且固定循環(huán)中它改變了系統(tǒng)模態(tài)值,只是在固定循環(huán)子程序中采用了保護(hù)措施,在固定循環(huán)宏子程序返回時(shí),恢復(fù)了它影響過的系統(tǒng)模態(tài),所以外表看它對系統(tǒng)模態(tài)沒有影響。這可以通過分析系統(tǒng)提供的固定循環(huán)宏程序看出來。;現(xiàn)在可以改變已記錄過的模態(tài)g91 g64 ;用相對編程g91 及連 續(xù)插補(bǔ)方式g64;這里是其它程序;子程序結(jié)束前恢復(fù)記錄值g#45 g#46 ;恢復(fù)第12 組13 組 模態(tài)對于每個(gè)局部變量,還可用系統(tǒng)宏ar來判別該變量是否被定義,是 被定義為增量或絕對方式。該系統(tǒng)宏的調(diào)用格式如下ar#變量號(hào)返回值:0 表示該變量
26、沒有被定義90 表示該變量被定義為絕對方式g9091 表示該變量被定義為相對方式g91例 下面的主程序%1000 在調(diào)用子程序 %9990 時(shí)設(shè)置了i jk 之值,子程序%9990 可分別通過當(dāng)前局部變量#8 #9 #10 來訪問主程序的i j k 之值 %1000g92 x0y0z0m98 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 ;
27、將i 值轉(zhuǎn)換為增量方式 , #30 為x 的絕對坐標(biāo) endifm99hnc-21m 子程序嵌套調(diào)用的深度最多可以有七層,每一層子程序都有自己獨(dú)立的局部變量,變量個(gè)數(shù)為50 。當(dāng)前局部變量為#0-#49, 第一層局部變量為#200-#249 ,第二層局部變量為#250-#299,第三層局部變量#300-#349 ,依此類推。在子程序中如何確定上層的局部變量要依上層的層數(shù)而定。由于通過系統(tǒng)變量來直接訪問局部變量容易引起混亂,因此不 提倡用這種方法。例%0099g92 x0 y0 z0n100 #10=98m98 p100m30%100n200 #10=222 ; 此時(shí)n100 所在段的局部變量#
28、10 為第0層#210m98 p110m99%110n300 #10=333 ; 此時(shí)n200 所在段的局部變量#10為第1層#260,即 #260=222;此時(shí)n100 所在段的局部變量#10為第0層#210,即#210=98m99五宏編程實(shí)例1數(shù)車編程(1)函數(shù)曲線加工通用宏程序;任意曲線y=f(x)的加工;單調(diào)區(qū)間x由x1 變到x2方法一-%1001#1=x1 ; 初值#2=f(x1) ;或者寫成#2=f(#1)while #1 le x2; 或者 while #1 ge x2g01 x#1 y#2 ;到下一位置#1=#1+0.01 ;x增量0.01;或者#1=#1-0.01 ;x增量-
29、0.01#2=f(#1) ; 計(jì)算下個(gè)點(diǎn)坐 標(biāo)endw;.退刀m30(實(shí)際應(yīng)用,請用具體表達(dá)式代替 f(x))#1=x1 ; 初值#3=f(x1) ; 或者寫成#3=f(#1)while #1 le x2; 或者while #1 ge x2#2=#3 ; 保存前一個(gè) 點(diǎn)坐標(biāo)#1=#1+0.01 ;x增量0.01;或者#1=#1-0.01 ;x增量-0.01#3=f(#1) ; 計(jì)算下個(gè)點(diǎn)坐 標(biāo)g91 g01 x0.01 y#3-#2 ; 到下 一位置endw;.退刀m30方法二%1002(2)拋物線車削 1用宏程序編制如圖所示拋物線在 x區(qū)間0,8內(nèi)的程序。 %3401t0101 g37 m0
30、3 s600 ;g37 半徑編程#0=0 ;x坐標(biāo),初值為0#1=0 ; z坐標(biāo),初值為0while #0 le 8g90g01x#0z-#1f200#0=#0+0.08#1=#0*#0/2endwg00 x40z80 m05m30(3)拋物線車削 2%0342t0101 m03 s600g00 x20.5 z2#11=12 ;b 初值#10=sqrt2*#11 ;a 初值while #10 le 8g90g01 x2*#10 z12- #11 f200 #10=#10+0.1#11=#10*#10/2endwg01 x16 z-32+12z-28u4g00 x20.5 z2 m05m30(4
31、)拋物線車削 3%0342t0101 m03 s600g00 x35 z3g01 x18 f100z-8#11=12 ;b 初值#10=sqrt2*#11 ;a 初值while #11 le 32g90g01x2*#10+3z4-#11f500#11=#11+0.06#10=sqrt2*#11endwg01 x22 z-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-
32、38#11=#11-0.2#10=sqrt2*#11endwg01x20z-38g00x18z4x100z50m30(6)拋物線車削 5(g71 與宏程序)這個(gè)例子中應(yīng)用了 g71 復(fù)合循環(huán)與宏程序配合完成粗精加工。 g71 參數(shù)簡 介:g71 u_r_p_q_x_z_f_s_t_u 背吃刀量;r 每次退刀量;p 起始段號(hào);q 結(jié)束段號(hào);x、z 精加工余 量;f、s、t 粗車時(shí)有效,精車時(shí)以精車程序?yàn)闇?zhǔn)。%3402t0101 m03 s600g00 x21 z2g71 u0.5 r1 p11 q22 x0.6 z0.1 f100 s600n11 g01 x0 s1200 ; 精加工,起始#10
33、=0 ;a 坐標(biāo),初值為 0#11=0 ;b 坐標(biāo),初值為 0 while #10 le 8g01 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 s600g92x80z30g00x20z3n6g01x38#11=0 ;b 初值#10=0 ;a 初值while #11 le 18g01x38-2*#10z-#11f100#11=#11+0.5#10=sqrt#11*2e
34、ndwg01x26 z-18n14 g01z-24x22g00z5x80z30m05m30(8)正弦線車削%3404m03 s600 t0101g92 x80 z30g00 x25 z3n6g0x17#11=0while #11 ge -25#9=#11*pi/10 ;#10=3.5*sin#9g01x17-2*#10z#11f100#11=#11-0.5n13endwg01x24z-25z-30x30g00x80z30m30(9)拋物線與橢圓車削%8002g92x50z100m98 p8001 a8b5c4u32v40w55g36g90x50z0m30%8001g64 g37 (連續(xù)切削,半
35、徑編程)#10=0 #11=0 ( 拋物線起點(diǎn))while #11 le #20g01 x#10 z-#11 f150#10=#10+0.08 ( 拋物線 x 增量) #11=#10*#10/#2(計(jì)算拋物線 z)endw#50= sqrt#20*#2 ( 拋物線與橢圓交接處半徑) g01 x#50 z-#20(拋物線終點(diǎn))g01z-#21 ( 直線終點(diǎn))#12=0 #13=0 ( 橢圓起點(diǎn))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 增量)e
36、ndwg01 x#50+#0 z-#21-#1 ( 橢圓終點(diǎn))z-#22u2g0x50z100m99(10)橢圓粗、精車削 -%100g91 x1m03 t0101 s600 g90 z2g00 x32 z2 ; 粗車 #1=15endwg00 x0 s1200 ;精車#2=0 #1=0while #1 ge 1 ; 還可以車一刀#2=25while #1 le 15(2mm) g01 x#1*2 z#2-25 f80 #1=#1-1 #1=#1+0.1#2=25/15*sqrt15*15-#1*#1 #2=25/15*sqrt15*15-#1*#1g00 x#1*2+0.5 ;轉(zhuǎn)為直徑 編程
37、并留精車余量0.5g01 z#2-25 f150endwg01 x32g00 x50 z100m30(11)用子程序完成粗、精加工子程序按精車路徑用相對編程( x方向)。方法1-%1010m03 s600 t0101#50=35 ;初始化x 尺寸(毛坯值) #51=3 ;切削量while #50 gt #51+0.5 ; 還夠車 一刀?#50=#50-#51g00 x#50 z1m98 p1011endwg00 x0.5 z1g00 x0 z1m98 p1011 ; 精車 g00 x50 z100 m05m30%1011g01 z0 ;編程起點(diǎn)x0,z1 g03 u20 w-10 r10g01
38、 u12 w-5w-10u1 ;退刀g00 z1m99m98 p1011 ; 半精車方法2-%1020m03 s600 t0101#50=35 ;初始化x 尺寸(毛坯值)#51=3 ;切削量while #50 gt #51+0.5 ; 還夠車一刀?#50=#50-#51g90 g00 x#50 z1m98 p1021endwg00 x0.5 z1m98 p1021 ; 半精車g00 x0 z1m98 p1021 ; 精車g00 x50 z100 m05m30%1021(少走空刀的子程序)g01 z0 ;編程起點(diǎn)x0,z1g03 u20 w-10 r10if #50+20 gt 35 ; 過了毛
39、坯就退刀g01 u12 w-5if #50+20+12 gt 35 ;過了毛坯就退刀w-10endifendifu1 ;退刀g00 z1m992華中數(shù)控系統(tǒng)系統(tǒng)變量一覽(1)子程序嵌套局部變量主程序的局部變量為 0 層,沒有對應(yīng)的系統(tǒng)變量#200 #249 0 層局部變量(對應(yīng)0層子程序#0#49#250 #299 1 層局部變量(對應(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
40、#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 機(jī)床當(dāng)前位置 x #1001 機(jī)床當(dāng)前位置y #1002 機(jī)床當(dāng)前位置z#1003 機(jī)床當(dāng)前位置 a #1004 機(jī)床當(dāng)前位置b #1005 機(jī)床當(dāng)前位置c#1006 機(jī)床當(dāng)前位置 u #1007 機(jī)床當(dāng)前位置v #1008 機(jī)床當(dāng)前位置 w#1009 保留#1010 程編機(jī)床位置
41、x #1011 程編機(jī)床位置y#1012 程編機(jī)床位置 z #1013 程編機(jī)床位置a #1014 程編機(jī)床位置b#1015 程編機(jī)床位置 c #1016 程編機(jī)床位置u #1017 程編機(jī)床位置v#1018 程編機(jī)床位置 w#1019 保留#1020 程編工件位置x#1021 程編工件位置 y#1024 程編工件位置 b#1027 程編工件位置 v#1030 當(dāng)前工件零點(diǎn) x#1033 當(dāng)前工件零點(diǎn) a#1036 當(dāng)前工件零點(diǎn) uw #1039 保留(4)參考點(diǎn)相關(guān)系統(tǒng)變量 #1040 g54零點(diǎn)x#1043 g54零點(diǎn)a#1046 g54零點(diǎn)u #1049 保留#1050 g55零點(diǎn)x#1
42、053 g55零點(diǎn)a#1056 g55零點(diǎn)u #1059 保留#1060 g56零點(diǎn)x#1022 程編工件位置z #1023 程編工件位置a#1025 程編工件位置 c #1026 程編工件位置u #1028 程編工件位置w #1029 保留#1031 當(dāng)前工件零點(diǎn)y #1032 當(dāng)前工件零點(diǎn)z#1034 當(dāng)前工件零點(diǎn)b #1035 當(dāng)前工件零點(diǎn) c#1037 當(dāng)前工件零點(diǎn)v #1038 當(dāng)前工件零點(diǎn)#1041 g54 零點(diǎn)y #1042 g54 零點(diǎn)z#1044 g54 零點(diǎn)b #1045 g54 零點(diǎn)c#1047 g54 零點(diǎn)v #1048 g54 零點(diǎn) w#1051 g55 零點(diǎn)y #1
43、052 g55 零點(diǎn)z#1054 g55 零點(diǎn)b #1055 g55 零點(diǎn)c#1057 g55 零點(diǎn)v #1058 g55 零點(diǎn)w#1061 g56 零點(diǎn)y #1062 g56 零點(diǎn)z#1063 g56零點(diǎn)a #1064 g56 零點(diǎn)b #1065 g56 零點(diǎn)c#1066 g56零點(diǎn)u #1067 g56 零點(diǎn)v #1068 g56 零點(diǎn) w #1069 保留#1070 g57零點(diǎn)x #1071 g57 零點(diǎn)y #1072 g57 零點(diǎn)z#1073 g57零點(diǎn)a #1074 g57 零點(diǎn)b #1075 g57 零點(diǎn)c#1076 g57零點(diǎn)u #1077 g57 零點(diǎn)v #1078 g57 零
44、點(diǎn) w #1079 保留#1080 g58零點(diǎn)x #1081 g58 零點(diǎn)y #1082 g58 零點(diǎn)z#1083 g58零點(diǎn)a #1084 g58 零點(diǎn)b #1085 g58 零點(diǎn)c#1086 g58零點(diǎn)u #1087 g58 零點(diǎn)v #1088 g58 零點(diǎn)w #1089 保留#1090 g59零點(diǎn)x #1091 g59 零點(diǎn)y #1092 g59 零點(diǎn)z#1093 g59零點(diǎn)a #1094 g59 零點(diǎn)b #1095 g59 零點(diǎn)c#1096 g59零點(diǎn)u #1097 g59 零點(diǎn)v #1098 g59 零點(diǎn)w #1099 保留#1100 中斷點(diǎn)位置x #1101 中斷點(diǎn)位置y #110
45、2 中斷點(diǎn)位置z#1103 中斷點(diǎn)位置a #1104 中斷點(diǎn)位置b #1105 中斷點(diǎn)位置c#1106 中斷點(diǎn)位置u #1107 中斷點(diǎn)位置v #1108 中斷點(diǎn)位置 w #1109 坐標(biāo)系建立軸#1110 g28中間點(diǎn)位置x #1111 g28 中間點(diǎn)位置y #1112 g28 中 間點(diǎn)位置z#1113 g28中間點(diǎn)位置a #1114 g28 中間點(diǎn)位置b #1115 g28 中間點(diǎn)位置c#1116 g28中間點(diǎn)位置u #1117 g28 中間點(diǎn)位置v #1118 g28 中間點(diǎn)位置w #1119 g28屏蔽字#1120 鏡像點(diǎn)位置x #1121 鏡像點(diǎn)位置y #1122 鏡像點(diǎn) 位置z#1123 鏡像點(diǎn)位置a 位置c#1126 鏡像點(diǎn)位置u 位置w#1129 鏡像屏蔽字心(軸2)#1132 旋轉(zhuǎn)角度#1135 縮放中心( 軸1) 心(軸3)#1138 縮放比例換代碼1#1141 坐標(biāo)變換代碼 2 (5)系統(tǒng)狀態(tài)變量#1144 刀具長度補(bǔ)償號(hào) 面軸1#1147 當(dāng)前平面軸2 度指定#1150 g代碼模態(tài)值0#1124 鏡像點(diǎn)位置b#112
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 有趣的房子課程設(shè)計(jì)游戲
- 2024年漁業(yè)養(yǎng)殖技術(shù)培訓(xùn)與承包服務(wù)合同3篇
- 2024年新能源儲(chǔ)能設(shè)備銷售合同范本年度版3篇
- 機(jī)電方向?qū)I(yè)課程設(shè)計(jì)
- 2024年度租賃協(xié)議:二零二四年度店面房十年租期合同2篇帶眉腳
- 2024年版新能源研發(fā)合作合同
- 礦井災(zāi)害課程設(shè)計(jì)
- 2024年新能源汽車產(chǎn)業(yè)投資合同3篇
- 2024年度農(nóng)民工住宅樓施工質(zhì)量保證合同3篇
- 物流工程課課程設(shè)計(jì)書
- 2025屆北京師范大學(xué)附中高三下學(xué)期聯(lián)考英語試題含解析
- 2024年企業(yè)年度營銷策劃合同
- 營銷中心2024年規(guī)劃
- 【人教版一年級(jí)起點(diǎn)】三年級(jí)上冊英語英語知識(shí)點(diǎn)總結(jié)
- 樓門牌制作合同范例
- 嬰幼兒認(rèn)知發(fā)展與指導(dǎo)學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
- 消防設(shè)備施工方案
- DB43-T+3015-2014《校園食材配送服務(wù)規(guī)范》
- 安全生產(chǎn)專(兼)職管理人員職責(zé)
- 公檢法聯(lián)席會(huì)議制度
- 成都大學(xué)《Python數(shù)據(jù)分析》2022-2023學(xué)年期末試卷
評論
0/150
提交評論