宏程序的編程與加工電子教案稿件_第1頁
宏程序的編程與加工電子教案稿件_第2頁
宏程序的編程與加工電子教案稿件_第3頁
宏程序的編程與加工電子教案稿件_第4頁
宏程序的編程與加工電子教案稿件_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

典型零件數(shù)控編程與加工宏程序具有靈活性、通用性和智能性等特點(diǎn),例如對于規(guī)則曲面的編程來說,使用CAD/CAM軟件編程一般都有工作量大,程序龐大,加工參數(shù)不易修改等缺點(diǎn),只要任何一項(xiàng)加工參數(shù)發(fā)生任何變化,再智能的軟件也要根據(jù)變化后的加工參數(shù)重新計(jì)算刀具軌跡,盡管軟件計(jì)算刀具軌跡的速度非常快,但始終是個(gè)比較麻煩的過程。而宏程序則注重把機(jī)床功能參數(shù)與編程語言結(jié)合,而且靈活的參數(shù)設(shè)置也使機(jī)床具有最佳的工作性能,同時(shí)也給予操作工人極大的自由調(diào)整空間。學(xué)習(xí)情境一回轉(zhuǎn)體方程曲面類零件的編程與加工學(xué)習(xí)目標(biāo):1.能夠運(yùn)用宏程序加工方程曲面類零件2.掌握回轉(zhuǎn)體方程曲面的檢測1.1宏程序的應(yīng)用概述1.1.1一般意義上所講的數(shù)控指令其實(shí)是指ISO代碼指令編程,即每個(gè)代碼的功能是固定的,由系統(tǒng)廠家開發(fā),使用者只需按照規(guī)定編程即可。但有時(shí)候這些指令滿足不了用戶的需要,系統(tǒng)因此提供了用戶宏程序的功能,使用戶可以對數(shù)控系統(tǒng)進(jìn)行一定的功能擴(kuò)展,實(shí)際上是數(shù)控系統(tǒng)對用戶的開放,也可視為用戶利用數(shù)控系統(tǒng)提供的工具,在數(shù)控系統(tǒng)的平臺上進(jìn)行二次開發(fā),當(dāng)然這里的開放和開發(fā)都是有條件和有限制的。用戶宏程序和普通程序存在一定的區(qū)別,認(rèn)識和了解這些區(qū)別,將有助于宏程序的學(xué)習(xí)理解和掌握運(yùn)用。1.普通程序只能使用常量編程,而宏程序可以使用變量,并可以給變量賦值。2.普通程序常量之間不可以運(yùn)算,而宏程序變量之間可以運(yùn)算。3.普通程序只能順序執(zhí)行,一般不能跳轉(zhuǎn),而宏程序運(yùn)行可以跳轉(zhuǎn)。1.1.2盡管使用各種CAD/CAM軟件來編制數(shù)控加工程序已經(jīng)成為潮流,但是手工編程畢竟還是基礎(chǔ),各種“疑難雜癥”的解決往往還要利用手工編程;且手工編程還可以使用變量編程,即宏程序的運(yùn)用。其最大特點(diǎn)就是將有規(guī)律的形狀或尺寸用最短的程序段表示出來,具有較好的易讀性和易修改性,編寫出的程序非常簡潔,邏輯嚴(yán)密,通用性極強(qiáng),而且機(jī)床在執(zhí)行此類程序時(shí),較執(zhí)行CAD/CAM軟件生成的程序更加快捷,反應(yīng)更迅速??陀^地說,對于主要由大量的不規(guī)則曲面構(gòu)成的模具成型零件,特別是各種注塑模、壓鑄模等型腔類模具的型芯、型腔和電極,以及汽車覆蓋件模具的凸模、凹模等,由于從設(shè)計(jì)、分析到制造的整個(gè)產(chǎn)業(yè)鏈在技術(shù)層面及生產(chǎn)管理上都是通過各種CAD/CAM軟件為核心的紐帶緊密相聯(lián)的從而形成一種高度的一體化和關(guān)聯(lián)性,宏程序在這里的發(fā)揮空間是非常有限的。但是,數(shù)控加工領(lǐng)域還有很大一片天空是屬于機(jī)械零件的批量加工,雖然同樣是數(shù)控加工,它與上述模具類零件的數(shù)控加工還是有著相當(dāng)大的差別的,機(jī)械零件的數(shù)控加工主要有以下特點(diǎn):1.機(jī)械零件絕大多數(shù)都是批量生產(chǎn),在保證質(zhì)量的前提下要求最大限度地提高加工效率以降低成本,一個(gè)零件哪怕僅僅節(jié)省1s,成百上千的同樣零件合計(jì)起來節(jié)省的時(shí)間就非??捎^了。另外批量零件在加工的幾何尺寸精度和形狀位置精度方面都要求保證高度的一致性,而加工工藝的優(yōu)化主要就是程序的優(yōu)化,是一個(gè)反復(fù)調(diào)整、嘗試的過程,這就要求操作者能夠非常方便地調(diào)整程序中的各項(xiàng)加工參數(shù)(如刀具尺寸、刀具補(bǔ)償值、層降、步距、計(jì)算精度和進(jìn)給速度等),正如上所述,只要其中任何一項(xiàng)發(fā)生變化,再智能的軟件也要根據(jù)變化后的加工參數(shù)重新計(jì)算刀具軌跡,再經(jīng)后置處理生成程序,這個(gè)過程非常耗時(shí),且十分繁瑣。顯然,宏程序在這方面就有強(qiáng)大的優(yōu)越性,只要能用宏程序來表述,操作者就根本無需觸動(dòng)程序本身,而只需針對各項(xiàng)加工參數(shù)所對應(yīng)的自變量賦值做出個(gè)別調(diào)整,就能迅速的將程序調(diào)整到最優(yōu)化的狀態(tài),這就體現(xiàn)出宏程序的一個(gè)突出優(yōu)點(diǎn),即一次編程,終生受益。2.機(jī)械零件的形狀主要是由各種凸臺、凹槽、圓孔、斜平面、回轉(zhuǎn)面等組成,很少包含不規(guī)則的復(fù)雜曲面,構(gòu)成其的幾何因素?zé)o外乎點(diǎn)、直線、圓弧,最多加上各種二次圓錐曲線(橢圓、拋物線、雙曲線),以及一些漸開線(常用于齒輪及凸輪等),所有這些都是基于三角函數(shù)、解析幾何的應(yīng)用,而數(shù)學(xué)上都可以用數(shù)學(xué)表達(dá)式及參數(shù)方程加以表述,因此宏程序在此有廣泛的應(yīng)用空間,可以發(fā)揮其強(qiáng)大的作用。3.機(jī)械零件還有一些很特殊的應(yīng)用,即使采用CAD/CAM軟件也不一定能輕易的解決,例如變螺距螺紋的加工,用螺旋插補(bǔ)進(jìn)行錐度螺紋的加工等,在這些方面宏程序卻可以發(fā)揮它的優(yōu)勢。1.1.3宏程序與CAD/CAM軟件生成程序的任何數(shù)控加工只要能夠用宏程序完整地表達(dá),即使再復(fù)雜,其程序篇幅都比較精練,可以說任何一個(gè)合理、優(yōu)化的宏程序,極少會(huì)超過60行,換算成字節(jié)數(shù),至多不過2KB。一方面,宏程序天生短小精悍,即使是最廉價(jià)的機(jī)床數(shù)控系統(tǒng),其內(nèi)部程序存儲(chǔ)空間也完全容納得下任何復(fù)雜的宏程序,因此根本無需考慮機(jī)床外部電腦的傳輸速度對實(shí)際加工速度的影響。另一方面,為了對復(fù)雜的加工運(yùn)動(dòng)進(jìn)行描述,宏程序必然會(huì)最大限度地使用數(shù)控系統(tǒng)內(nèi)部的各種指令代碼,例如直線插補(bǔ)指令G01和圓弧插補(bǔ)指令G02/G03等,因此機(jī)床在執(zhí)行宏程序時(shí)程序采用機(jī)床內(nèi)部編碼,計(jì)算機(jī)可以直接插補(bǔ)運(yùn)算,且運(yùn)算速度極快,再加上伺服電動(dòng)機(jī)和機(jī)床的迅速響應(yīng),使得加工效率極高。而對于CAD/CAM軟件生成的程序,情況就要復(fù)雜得多:首先,CAD/CAM軟件生成的程序通常都比較大,非常容易突破機(jī)床數(shù)控系統(tǒng)內(nèi)部程序存儲(chǔ)空間的限制,因此一般來說除了相對簡單的孔系加工、二維輪廓加工以外,其余絕大部分程序都不得不以DNC方式進(jìn)行在線加工,顯然機(jī)床與電腦之間的傳輸速度成為了影響加工速度的第一個(gè)瓶頸因素。除了那些機(jī)床系統(tǒng)內(nèi)置硬盤或機(jī)床與電腦之間以以太網(wǎng)等形式進(jìn)行組網(wǎng)的新型數(shù)控機(jī)床之外,目前大多數(shù)的數(shù)控機(jī)床都是通過RS-232的串口通信來實(shí)現(xiàn)DNC在線加工的。絕大多數(shù)主流的中檔數(shù)控系統(tǒng),如FANUC0M、0i,西門子802D、810D等,系統(tǒng)所支持的RS-232接口最大傳輸波特率為19200bit/s,而大多數(shù)DNC軟件支持的最大波特率為19200~38400bit/s,即使在19200bit/s的波特率下工作,當(dāng)計(jì)算精度較高、進(jìn)給速度F值較大時(shí),程序傳輸速率往往跟不上機(jī)床的節(jié)拍,在實(shí)際加工中可以看到機(jī)床的進(jìn)給運(yùn)動(dòng)有明顯的斷續(xù)、遲滯,對于FANUC系統(tǒng)即使打開DNC緩沖,也難以有大的改觀。其次,從用戶使用的角度說,使用CAD/CAM軟件來生成刀具軌跡及加工程序是非常容易的事,但是剖析CAD/CAM軟件計(jì)算刀具軌跡的原理,就知道它存在一定的弊端。在CAD/CAM軟件中,無論構(gòu)造規(guī)則或不規(guī)則的曲面,都是一個(gè)數(shù)學(xué)運(yùn)算的過程,也必然存在著計(jì)算的誤差和處理,而在對其生成三維加工刀具軌跡時(shí),軟件是根據(jù)操作者所選擇的加工方式、設(shè)定的加工參數(shù),并結(jié)合所給定的加工誤差,使刀具與加工表面接觸點(diǎn)逐點(diǎn)移動(dòng)完成加工,從本質(zhì)上看,其實(shí)就是在允許的誤差值范圍內(nèi)沿每條路徑用直線去逼近曲面的過程。這樣任意曲面自然都能對付,而且也是完全合理的做法,但是在加工規(guī)則曲面時(shí),工藝上就出現(xiàn)了一些問題,由于CAD/CAM軟件構(gòu)造曲面的底層數(shù)學(xué)模型所限,也由于CAD/CAM軟件對曲面生成刀具軌跡的逼近原理所限,在執(zhí)行事實(shí)上真正的整圓或圓弧軌跡時(shí),軟件無法智能地判斷這里是真正的整圓或圓弧,生成的程序并不是G02/G03指令,而是G01逐點(diǎn)逼近形成的圓。程序執(zhí)行時(shí),相鄰的沒兩個(gè)逼近點(diǎn)之間數(shù)控系統(tǒng)都要進(jìn)行直線插補(bǔ)運(yùn)算,系統(tǒng)計(jì)算機(jī)的工作量巨大,反映到機(jī)床上,必然表現(xiàn)為運(yùn)動(dòng)遲鈍、不連貫。1.2FANUC0i系統(tǒng)的用戶宏程序FANUC0i系統(tǒng)提供兩種用戶宏程序,即用戶宏程序功能A和用戶宏程序功能B。用戶宏程序功能A可以說是FANUC系統(tǒng)的標(biāo)準(zhǔn)配置功能,任何配置的FANUC系統(tǒng)都具備此功能,而用戶宏程序功能B雖然不算是FANUC系統(tǒng)的標(biāo)準(zhǔn)配置功能,但是絕大部分的FANUC系統(tǒng)也都支持用戶宏程序功能B。由于用戶宏程序功能A的宏程序需要使用G65Hm的格式宏指令來表達(dá)各種數(shù)學(xué)運(yùn)算和邏輯關(guān)系,極不直觀,因而導(dǎo)致在實(shí)際工作中很少人使用它。所以我們只對用戶宏程序功能A作簡單介紹,不進(jìn)行深入講述,將以用戶宏程序功能B為重點(diǎn)深入介紹宏程序的相關(guān)知識。1.2.1普通加工程序直接用數(shù)值指定G代碼和移動(dòng)距離;例如:G01和X100.0。使用用戶宏程序時(shí),數(shù)值可以直接指定或用變量指定,當(dāng)用變量時(shí),變量值可用程序或有MDI設(shè)定或修改。#11=#22+123;G01X#11F500;1.變量的表示計(jì)算機(jī)允許使用變量名,用戶宏程序則不行,變量需用變量符號“#”和后面的變量號指定。例如:#11表達(dá)式可以用于指定變量號,這時(shí)表達(dá)式必須在括號中。例如:#[#11+#12-123]2.變量的類型變量從功能上可歸納為兩種,即:系統(tǒng)變量,用于系統(tǒng)內(nèi)部運(yùn)算時(shí)各種數(shù)據(jù)的存儲(chǔ)。用戶變量,包括局部變量和公共變量,用戶可以單獨(dú)使用,系統(tǒng)作為處理資料的一部分,F(xiàn)ANUC0i系統(tǒng)的變量類型如表8-1:表8-1FANUC0i變量類型變量名類型功能#0空變量該變量總是空,沒有值能賦予該變量用戶變量#1~#33局部變量局部變量只能在宏程序中存儲(chǔ)數(shù)據(jù),例如運(yùn)算結(jié)果。斷電時(shí),局部變量清除。#100~#199

#500~#999公共變量公共變量在不同宏程序中的意義相同(即公共變量對于主程序和從這些主程序調(diào)用的每個(gè)宏程序來說是公用的)

斷電時(shí),#100~#199清除(初始化為空),通電時(shí)復(fù)位到0

而#500~#999數(shù)據(jù),即使在斷電時(shí)也不清除#1000以上系統(tǒng)變量系統(tǒng)變量用于讀和寫CNC運(yùn)行時(shí)各種數(shù)據(jù)變化,例如,刀具當(dāng)前位置和補(bǔ)償值等3.小數(shù)點(diǎn)的省略當(dāng)在程序中定義變量值時(shí),整數(shù)值的小數(shù)點(diǎn)可以省略。例如:當(dāng)定義#11=123;變量#11的實(shí)際值是123.000。4.變量的引用在程序中使用變量值時(shí),應(yīng)指定后跟變量號的地址。當(dāng)用表達(dá)式指定變量時(shí),必須把表達(dá)式放在括號中。例如:G01X[#11+#22]F#3被引用變量的值根據(jù)地址的最小設(shè)定單位自動(dòng)地舍入。例如:當(dāng)G00X#11;以1/1000mm的單位執(zhí)行時(shí),CNC把12.3456賦值給變量#11,實(shí)際指令值為G00X12.345。改變引用變量的值的符號,要把負(fù)號(-)放在#的前面。例如:G00X-#11。當(dāng)引用未定義的變量時(shí),變量及地址都被忽略。例如:當(dāng)變量#11的值是0,并且#22的值是空時(shí),G00X#11Y#22的執(zhí)行結(jié)果為G00X0。注意:從這個(gè)例子可以看出,所謂“變量的值是0”與“變量的值是空”是兩個(gè)完全不同的概念,可以這樣理解:“變量的值是0”相當(dāng)于“變量的值等于0”,而“變量的值是空”則意味著“該變量所對應(yīng)的地址根本就不存在,不生效”。不能用變量代表的地址符有:程序號O,順序號N,任選程序段跳轉(zhuǎn)號/。例如以下情況不能使用變量:O#11;/O#22G00X100.0;N333Y200.0;另外,使用ISO代碼編程時(shí),可用“#”代碼表示變量,若用EIA代碼,則應(yīng)用“&”代碼代替“#”代碼,因?yàn)镋IA代碼中沒有“#”代碼。1.2.2系統(tǒng)變量用于讀和寫CNC內(nèi)部數(shù)據(jù),例如,刀具偏置值和當(dāng)前位置數(shù)據(jù)。無論是用戶宏程序功能A或用戶宏程序功能B,系統(tǒng)變量的用法都是固定的,而且某些系統(tǒng)變量為只讀,用戶必須嚴(yán)格按照規(guī)定使用。系統(tǒng)變量是自動(dòng)控制和通用加工程序開發(fā)的基礎(chǔ),在這里僅就與編程及操作相關(guān)性較大的系統(tǒng)變量加以介紹(表8-2)。表8-2FANUC0i系統(tǒng)變量一覽表變量號含義#1000~#1015,#1032接口輸入變量#1100~#1115,#1132,#1133接口輸出變量#10001~#10411,#11001~#11400刀具長度補(bǔ)償值#12001~#12400,#13001~#13400刀具半徑補(bǔ)償值#2001~#2400刀具長度與半徑補(bǔ)償值(偏置數(shù)<=200時(shí))#3000報(bào)警#3001,#3002時(shí)鐘#3003,#3004循環(huán)運(yùn)行控制#3005設(shè)定數(shù)據(jù)(SETTING值)#3006停止和信息顯示#3007鏡像#3011,#3012日期和時(shí)間#3901,#3902零件數(shù)#4001~#4120,#4130模態(tài)信息#5001~#5104位置信息#5201~#5324工件坐標(biāo)系補(bǔ)償值(工件零點(diǎn)偏移值)#7001~#7944擴(kuò)展工件坐標(biāo)系補(bǔ)償值(工件零點(diǎn)偏移值)下面對系統(tǒng)變量進(jìn)行詳細(xì)說明。1.接口(輸入/輸出)信號接口信號是可編程機(jī)床控制器(PMC)和用戶宏程序之間交換的信號,見表8-3。表8-3FANUC0i接口信號的系統(tǒng)變量變量號功能#1000~#1015

#1032把16位信號從PMC送到用戶宏程序。變量#1000~#1015用于按位數(shù)讀取信號;變量#1032用于一次讀取一個(gè)16位信號#1100~#1155

#1132把16位信號從用戶宏程序送到PMC。變量#1100~#1115用于按位數(shù)寫信號;變量#1132用于一次寫一個(gè)16位信號#1133變量#1133用于從用戶宏程序一次寫一個(gè)32位的信號送到PMC。注意:#1133的值為從-99999999到+99999999只有使用FANUCPMC時(shí),才能使用上表中的變量。在運(yùn)算中,系統(tǒng)變量#1000~#1015和#1032不能用作左邊的項(xiàng)。2.刀具補(bǔ)償值用系統(tǒng)變量可以讀和寫刀具補(bǔ)償值。通過對系統(tǒng)變量賦值,可以修改刀具補(bǔ)償值(表8-4)。表8-4FANUC0i刀具補(bǔ)償存儲(chǔ)器C的系統(tǒng)變量補(bǔ)償號刀具長度補(bǔ)償(H)刀具半徑補(bǔ)償(D)幾何補(bǔ)償磨損補(bǔ)償幾何補(bǔ)償磨損補(bǔ)償1#11001(#2201)#10001(#2001)#13001#120012#11002(#2202)#10002(#2002)#13002#12002...............199#11199(#2399)#10199(#2199)#13199#12199200#11200(#2400)#10200(#2200)#13200#12200201#11201(#2401)#10201(#2201)#13201#12201...............399#11399#10399#13399#12399400#11400#10400#13400#12400在FANUC0i系統(tǒng)中,刀具補(bǔ)償分為幾何補(bǔ)償和磨損補(bǔ)償,而且長度補(bǔ)償和半徑補(bǔ)償也是分開的。刀具補(bǔ)償號可達(dá)400個(gè),換句話說,理論上系統(tǒng)支持控制容量高達(dá)400的刀庫。當(dāng)?shù)毒哐a(bǔ)償號小于等于200時(shí)(一般情況也的確如此),刀具長度補(bǔ)償(H)也可使用#2001~#2400。刀具長度補(bǔ)償(H)的兩項(xiàng)補(bǔ)償值在Z方向?qū)Φ锻瓿珊笠话悴辉傩枰貏e處理,而編程時(shí)主要涉及其刀具半徑補(bǔ)償(D)的兩項(xiàng)補(bǔ)償值,從思路的條理性出發(fā),顯然適宜使幾何補(bǔ)償值等于刀具半徑,即#13010=5.0,可以視為對刀具的識別,而設(shè)置和調(diào)整磨損補(bǔ)償值(#12010)則可視為對尺寸的控制。在應(yīng)用宏程序編寫加工程序時(shí),將會(huì)有以下形式的描述:#20=#13010→把刀具補(bǔ)償號10(即10號刀,在此既是Ф10mm的立銑刀)的半徑補(bǔ)償值中的幾何補(bǔ)償值賦值給#20,在這里假設(shè)#20=5.0。#22=#12010→把刀具補(bǔ)償號10(即10號刀,在此既是Ф10mm的立銑刀)的半徑補(bǔ)償值中的磨損補(bǔ)償值賦值給#22,在這里假設(shè)#22=1.2。3.模態(tài)信息正在處理的當(dāng)前程序段之前的模態(tài)信息可以從系統(tǒng)變量中讀出。FANUC0i的系統(tǒng)變量見表8-5。表8-5FANUC0i模態(tài)信息的系統(tǒng)變量變量號功能#4001G00,G01,G02,G03,G33(組01)#4002G17,G18,G19(組02)#4003G90,G91(組03)#4004(組04)#4005G94,G95(組05)#4006G20,G21(組06)#4007G40,G41,G42(組07)#4008G43,G44,G49(組08)#4009G73,G74,G76,G80~G89(組09)#4010G98,G99(組10)#4011G50,G51(組11)#4012G65,G66,G67(組12)#4013G96,G97(組13)#4014G54~G59(組14)#4015G61~G64(組15)#4016G68,G69(組16)......#4022待定(組22)#4102B代碼#4107D代碼#4109F代碼#4111H代碼#4113M代碼#4114順序號#4115程序號#4119S代碼#4120T代碼#4130P代碼(現(xiàn)在選擇的附加工件坐標(biāo)系)注:1.P代碼為現(xiàn)在選擇的附加工件坐標(biāo)系。2.當(dāng)執(zhí)行#1=#4002時(shí),在#1中得到的值是17,18或19。3.系統(tǒng)變量#4001~#4120不能用于運(yùn)算指令左邊的項(xiàng)。4.模態(tài)信息不能寫,只能讀。另外如果閱讀模態(tài)信息指定的系統(tǒng)變量為不能用的G代碼時(shí),系統(tǒng)則發(fā)出程序錯(cuò)誤P/S報(bào)警。1.2.3表1-6中列出的運(yùn)算可以在變量中運(yùn)行。等式右邊的表達(dá)式可包含常量或由函數(shù)或運(yùn)算符組成的變量。表達(dá)式中的變量#j和#k可以用常量賦值。等式左邊的變量也可以用表達(dá)式賦值。其中算術(shù)運(yùn)算方要是指加、減、乘、除函數(shù)等,邏輯運(yùn)算可以理解為比較運(yùn)算。表1-6FANUC0i算術(shù)和邏輯運(yùn)算一覽表功能格式備注定義、置換#i=#j算術(shù)運(yùn)算加法減法乘法除法#i=#j+#k#i=#j-#k#i=#j*#k#i=#j/#k正弦#i=SIN[#J]三角函數(shù)及反三角函數(shù)的數(shù)值均以度為單位指定。如90°30′應(yīng)表示為90.5°反正弦#i=ASIN[#J]余弦#i=COS[#J]S反余弦#i=ACOS[#J]正切#i=TAN[#J]反正切#i=ATAN[#J]平方根#i=SQRT[#J]絕對值#i=ABS[#J]舍入#i=ROUND[#J]指數(shù)函數(shù)#i=EXP[#J](自然)對數(shù)#i=LN[#J]上取數(shù)#i=FIX[#J]下取數(shù)#i=FUP[#J]邏輯運(yùn)算與#i=AND[#J]或#iOR#J異或#iXOR#J從BCD轉(zhuǎn)為BIN#=iBIN[#J]用于與PMC的信號交換WWBIN轉(zhuǎn)為BCD#i=BCD[#J]以下是算術(shù)和邏輯運(yùn)算指令的詳細(xì)說明。1.反正弦運(yùn)算#i=ASIN[#j]1)取值范圍如下:當(dāng)參數(shù)(No.6004#0)NAT位設(shè)置為0時(shí),在270°~90°范圍內(nèi)取值。當(dāng)參數(shù)(No.6004#0)NAT位設(shè)置為1時(shí),在-90°~90°范圍內(nèi)取值。2)當(dāng)#j超出-1到1的范圍時(shí),觸發(fā)程序錯(cuò)誤P/S報(bào)警No.111。3)常數(shù)可替代變量#j2.反余弦運(yùn)算#i=ACOS[#j]1)取值范圍:180°~0°。2)當(dāng)#j超出-1到1的范圍時(shí),觸發(fā)程序錯(cuò)誤P/S報(bào)警No.111。3)常數(shù)可替代變量#j3.反正切運(yùn)算#i=ATAN[j]/[#k]1)采用比值的書寫方式(可理解為對邊/鄰邊).2)取值范圍如下:當(dāng)參數(shù)(No.6004#0)NAT位設(shè)置為0時(shí),取值范圍為0°~360°。例如,當(dāng)指定#=ATAN[-1]/[-1]時(shí),#1=-225°。當(dāng)參數(shù)(No.6004#0)NAT位設(shè)置為1時(shí),取值范圍為-180°~180°。例如,當(dāng)指定#1=ATAN[-1]/[-1]時(shí),#1=-135°3)常數(shù)可替代變量#j。4.自然對數(shù)運(yùn)算#i=LN[#j]1)相對誤差可能大于10-8。2)當(dāng)反對數(shù)(#j)為0或小于0時(shí),觸發(fā)程序錯(cuò)誤P/S報(bào)警No.111。3)常數(shù)可替代變量#j。5.指數(shù)函數(shù)#i=EXP[#j]1)相對誤差可能大于10-8。2)當(dāng)運(yùn)算結(jié)果超過3.65×1047(j大約是非曲直10)時(shí),出現(xiàn)溢出并觸發(fā)程序錯(cuò)誤P/S報(bào)警No.111。3)常數(shù)可替代變量#j。6.上取數(shù)#i=FIX[#j]和下取數(shù)#i=FUP[#j]CNC處理數(shù)值運(yùn)算時(shí),無條件地舍去小數(shù)部分稱為上取數(shù);小數(shù)部分進(jìn)位到整數(shù)稱為下取整(注意與數(shù)學(xué)上的四舍五入對照)。對于負(fù)數(shù)的處理要特別小心。例如:假設(shè)#1=1.2,#2=-1.2當(dāng)執(zhí)行#3=FUP[#1]時(shí),2.0賦予#3;當(dāng)執(zhí)行#3=FIX[#1]時(shí),1.0賦予#3;當(dāng)執(zhí)行#3=FUP[#2]時(shí),-2.0賦予#3;當(dāng)執(zhí)行#3=FIX[#2]時(shí),-1.0賦予#3;7.算術(shù)與邏輯運(yùn)算指令的縮寫程序中指令函數(shù)時(shí),函數(shù)名的前二個(gè)字符可以用于指定函數(shù)。例如:ROUND→ROFIX→FI8.混合運(yùn)算時(shí)的運(yùn)算順序上述運(yùn)算和函數(shù)可以混合運(yùn)算,即涉及到運(yùn)算的優(yōu)先級,其運(yùn)算順序與一般數(shù)學(xué)上的定義基本一致,優(yōu)先級順序從高到低依次為:函數(shù)運(yùn)算乘法和除法運(yùn)算(*、/、AND)加法和減法運(yùn)算(+、-、OR、XOR)例:#1=#2+#3*cos[#4];1231、2、3表示運(yùn)算順序9.括號嵌套用“[]”可以改變運(yùn)算順序,最里層的[]優(yōu)先運(yùn)算。括號[]最多可以嵌套5級(包括函數(shù)內(nèi)部使用的括號)。當(dāng)超出5級時(shí),觸發(fā)程序錯(cuò)誤P/S報(bào)警No.118。例:#6=COS[[[#5+#4]*#3+#2]*#1];(三重嵌套)123451到5表示運(yùn)算順序10.邏輯運(yùn)算說明邏輯運(yùn)算相對于算術(shù)運(yùn)算來說,更為特殊和費(fèi)解,詳細(xì)說明見表2-9。表8-7Fanuc0i邏輯運(yùn)算說明運(yùn)算符功能邏輯名運(yùn)算特點(diǎn)運(yùn)算實(shí)例AND與邏輯乘(相當(dāng)于串聯(lián)有0得01×1=1,1×0=0,0×0=0OR或邏輯加(相當(dāng)于并聯(lián))有1得11+1=1,1+0=1,0+0=0XOR異或邏輯減相同得0,不同得11-1=0,1-0=1,0-0=0,0-1=1說明:加減運(yùn)算由于用戶宏程序的變量值的精度僅有8位十進(jìn)制數(shù),當(dāng)在加減運(yùn)算處理非常大的數(shù)時(shí),將得不到期望的結(jié)果。例如:當(dāng)試圖把下面的值賦給變量#1和#2時(shí):

#1=9876543277777.777#2=9876543210123.456變量值實(shí)際上已經(jīng)變成:#1=9876543300000.000#2=9876543200000.000此時(shí),當(dāng)編程計(jì)算#3=#1-#2時(shí),其結(jié)果#3并不是期望值67654.321,而是#3=100000.000,顯然誤差較大,實(shí)際計(jì)算實(shí)際結(jié)果其實(shí)與此還稍有誤差,因?yàn)橄到y(tǒng)是以二進(jìn)制執(zhí)行的。邏輯運(yùn)算邏輯運(yùn)算,即使用條件表達(dá)式EQ,NE,GT,GE,LT,LE時(shí),也可能造誤差,其情形與加減運(yùn)算基本相同。例如:IF[#1EQ#2]的運(yùn)算會(huì)受到#1和#2的誤差的影響,并不總是能估算正確,要求兩個(gè)值完全相同,有時(shí)不可能,由此會(huì)造成錯(cuò)誤的判斷,因此改用誤差來限制比較穩(wěn)妥,即用IF[ABS[#1-#2]LT0.001]代替上述語句,以避免兩個(gè)變量的誤差。此時(shí),當(dāng)兩個(gè)變量的差值的絕對值未超過允許極限(此處為0.001),就認(rèn)為兩個(gè)變量的值是相等的。三角函數(shù)運(yùn)算在三角函數(shù)運(yùn)算中會(huì)發(fā)生絕對誤差,它不在10-8之內(nèi),所以注意使用三角函數(shù)后的積累誤差,由于三角函數(shù)在宏程序的應(yīng)用非常廣泛,特別在極具數(shù)學(xué)代表性的參數(shù)方程表達(dá)上,因此必須對此保持應(yīng)有的重視。1.2.4賦值是指將一個(gè)數(shù)據(jù)賦予一個(gè)變量。例如:#1=0,則表示#1的值是0。其中#1代表變量,“#”是變量符號(注意:根據(jù)數(shù)控系統(tǒng)的不同,它的表示方法可能有差別),0就是給變量#1賦的值。這里的“=”是賦值符號,起語句定義作用。賦值的規(guī)律有:賦值號“=”兩邊內(nèi)容不能隨意互換,左邊只能是變量,右邊可以是表達(dá)式、數(shù)值或變量。一個(gè)賦值語句只能給一個(gè)變量賦值??梢远啻谓o一個(gè)變量賦值,新變量值將取代原變量值(即最后賦的值生效)。賦值語句具有運(yùn)算功能,它的一般形式為:變量=表達(dá)式。在賦值運(yùn)算中,表達(dá)式可以是變量自身與其他數(shù)據(jù)的運(yùn)算結(jié)果,如:#1=#1+1,則表示#1的值為#1+1,這一點(diǎn)與數(shù)學(xué)運(yùn)算是有所不同的。需要強(qiáng)調(diào)的是:“#1=#1+1”形式的表達(dá)式可以說是宏程序運(yùn)行的“原動(dòng)力”,任何宏程序幾乎都離不開這種類型的賦值運(yùn)算,而它偏偏與人們頭腦中根深蒂固的數(shù)學(xué)上的等式概念嚴(yán)重偏離,因此對于初學(xué)者往往造成很大的困擾,但是,如果對計(jì)算機(jī)高級語言有一定了解的話,對此應(yīng)該更易理解。賦值表達(dá)式的運(yùn)算順序與數(shù)學(xué)運(yùn)算順序相同。輔助功能(M代碼)的變量有最大值限制,例如,將M30賦值為300顯然是不合理的。1.2.5在程序中,使用GOTO語句和IF語句可以改變程序的流向。有三種轉(zhuǎn)移和循環(huán)操作可供使用。GOTO語句→無條件轉(zhuǎn)移轉(zhuǎn)移和循環(huán)IF語句→條件轉(zhuǎn)移,格式為:IF﹍THEN﹍WHILE語句→當(dāng)﹍時(shí)循環(huán)1.無條件轉(zhuǎn)移(GOTO語句)轉(zhuǎn)移(跳轉(zhuǎn))到標(biāo)有順序號n(即俗稱的行號)的程序段。當(dāng)指定1~99999以外的順序號時(shí),會(huì)觸發(fā)P/S報(bào)警No.128。其格式為:GOTOn;n順序號(1~99999)例如:GOTO99,即轉(zhuǎn)移至第99行。2.條件轉(zhuǎn)移(IF語句)IF之后指定條件表達(dá)式。⑴IF[〈條件表達(dá)式〉]GOTOn表示如果指定的條件表達(dá)式滿足時(shí),則轉(zhuǎn)移(跳轉(zhuǎn))到標(biāo)有順序號n(即俗稱的行號)的程序段。如果不滿足指定的條件表達(dá)式,則順序執(zhí)行下個(gè)程序段。如果變量#1的值大于100,則轉(zhuǎn)移(跳轉(zhuǎn))到順序號為N99的程序段。如果條IF[#1GT100]GOTO99;如果件不滿足程序條件N99G00G﹕⑵IF[﹤條件表達(dá)式﹥]THEN如果指定的條件表達(dá)式滿足時(shí),則執(zhí)行預(yù)先指定的宏程序語句,而且只執(zhí)行一個(gè)宏程序語句。IF[#1EQ#2]THEN#3=10;如果#1和#2的值相同,10賦值給#3。說明:◆條件表達(dá)式:條件表達(dá)式必須包括運(yùn)算符。運(yùn)算符插在兩個(gè)變量中間或變量和常量中間,并且用“[]”封閉。表達(dá)式可以替代變量?!暨\(yùn)算符:運(yùn)算符由2個(gè)字母組成(見表8-8),用于兩個(gè)值的比較,以決定它們是相等還是一個(gè)值小于或大于另一個(gè)值。注意,不能使用不等號。表8-8運(yùn)算符運(yùn)算符含義英文注釋EQ等于(=)EqualNE不等于(≠)NotEqualGT大于(>)GreatthanGE大于或等于(≥)GreatthanorEqualLT小于(<)LessthanLE小于或等于(≤)LessthanorEqual典型程序示例:下面的程序?yàn)橛?jì)算數(shù)值1~100的累加總和。O8000;#1=0;存儲(chǔ)和數(shù)變量的初值#2=1;被加數(shù)變量的初值 N5IF[#2GT100]GOTO99;當(dāng)被加數(shù)大于100時(shí)轉(zhuǎn)移到N99#1=#1+#2;計(jì)算和數(shù)#2=#2+#1;下一個(gè)被加數(shù)GOTO5;轉(zhuǎn)到N5N99M30;程序結(jié)束3.循環(huán)(WHILE語句)在WHILE后指定一個(gè)條件表達(dá)式。當(dāng)指定條件滿足時(shí),則執(zhí)行從DO到END之間的程序。否則,轉(zhuǎn)到END后的程序段。DO后面的號是指定程序執(zhí)行范圍的標(biāo)號,標(biāo)號值為1,2,3。如果使用了1,2,3以外的值,會(huì)觸發(fā)P/S報(bào)警No.126。WHILE[條件表達(dá)式]DOGOTOm;(m=1,2,3)如果如果條件條件滿足程序不滿足ENDm∶⑴嵌套在DO~END循環(huán)中的標(biāo)號(1~3)可根據(jù)需要多次使用。但是需要注意的是,無論怎樣多次使用,標(biāo)號永遠(yuǎn)限制在1,2,3;此外,當(dāng)程序有交叉重復(fù)循環(huán)(DO范圍的重疊)時(shí),會(huì)觸發(fā)P/S報(bào)警No.124。以下為關(guān)于嵌套的詳細(xì)說明。①標(biāo)號(1~3)可以根據(jù)需要多次使用。WHILE[條件表達(dá)式]DO1;程序END1;┇WHILE[條件表達(dá)式]DO1;程序END1;┇DO的范圍不能交叉。WHILE[條件表達(dá)式]DO1;程序WHILE[條件表達(dá)式]DO2;┇←錯(cuò)?。牛危模?;程序END2;DO循環(huán)可以3重嵌套。WHILE[條件表達(dá)式]DO1;┇WHILE[條件表達(dá)式]DO2;┇WHILE[條件表達(dá)式]DO3;程序END3;┇END2;┇END1;④(條件)轉(zhuǎn)移可以跳出循環(huán)的外邊。WHILE[條件表達(dá)式]DO1;IF[條件表達(dá)式]GOTOnEND1;Nn...⑤(條件)轉(zhuǎn)移不能進(jìn)入循環(huán)區(qū)內(nèi),注意與上述第4點(diǎn)對照。IF[條件表達(dá)式]GOTOn┇WHILE[條件表達(dá)式]DO1;←錯(cuò)!Nn...END1;⑵關(guān)于循環(huán)(WHILE語句)的其他說明①DOm和ENDm必須成對使用:DOm和ENDm必須成對使用,而且DOm一定要在ENDm指令之前。用識別號m來識別。②無限循環(huán):當(dāng)指定DO而沒有指定WHILE語句時(shí),將產(chǎn)生從DO到END之間的的無限循環(huán)。③未定義的變量:在使用EQ或NE的條件表達(dá)式中,值為空和值為零將會(huì)有不同的效果。而在其他形式的條件表達(dá)式中,空即被當(dāng)作零。④條件轉(zhuǎn)移(IF語句)和循環(huán)(WHILE語句)的關(guān)系:顯而易見,從邏輯關(guān)系上說,兩者不過是從正反兩個(gè)方面描述同一件事情:從實(shí)現(xiàn)的功能上說,兩者具有相當(dāng)程度的相互替代性;從具體的用法和使用的限制上說,條件轉(zhuǎn)移(IF語句)受到系統(tǒng)的限制相對更少,使用更靈活。⑤處理時(shí)間:當(dāng)在GOTO語句(無論是無條件轉(zhuǎn)移的GOTO語句,還是“IF...GOTO”形式的條件轉(zhuǎn)移GOTO語句)中有標(biāo)號轉(zhuǎn)移的語句時(shí),系統(tǒng)將進(jìn)行順序號檢索。一般來說數(shù)控系統(tǒng)執(zhí)行反向檢索的時(shí)間要比正向檢索長,因?yàn)橄到y(tǒng)通常先正向搜索到程序結(jié)束,再返回程序開頭進(jìn)行搜索,所以花費(fèi)的時(shí)間要多。因此,用WHILE語句實(shí)現(xiàn)循環(huán)可減少處理時(shí)間。但是,這一點(diǎn)對于實(shí)際應(yīng)用中到底有多大的意義,還值得商榷,筆者認(rèn)為,在宏程序的應(yīng)用中,優(yōu)先考慮的應(yīng)該是數(shù)學(xué)表達(dá)是否正確,思路是否簡潔,邏輯是否嚴(yán)密,至于具體選擇何種語句實(shí)現(xiàn),剛不必拘泥。事實(shí)上,依筆者的實(shí)踐經(jīng)驗(yàn)來看,這里所討論的處理時(shí)間在實(shí)際應(yīng)用中差別并不明顯,而且,從宏程序的學(xué)習(xí)和掌握技巧來看,似乎“IF...GOTO”形式的條件轉(zhuǎn)移GOTO語句相對更容易理解和掌握,特別是對于初學(xué)者而言。1.3典型橢圓面零件加工技能訓(xùn)練1.實(shí)訓(xùn)目的與要求(1)進(jìn)一步熟悉數(shù)控車床的基本操作,特別是程序的編輯功能。(2)能夠運(yùn)用宏程序加工方程曲面類零件。(3)能夠解決橢圓面類零件加工過程中工藝的制定、程序的編制、零件的試切對刀以及加工過程的控制和精度的保證等問題。2.儀器與設(shè)備(1)臥式數(shù)控車床若干臺。(2)鋼棒料(長度、直徑視實(shí)訓(xùn)零件尺寸而定)。(3)工量具準(zhǔn)備①量具準(zhǔn)備清單游標(biāo)卡尺 0~150mm/0.02 外徑千分尺 0~25mm/0.01 外徑千分尺 25~50mm/0.01鋼直尺 0~200mm 百分表 0~10mm/0.01 ②工具準(zhǔn)備清單卡盤鑰匙 刀架鑰匙 墊刀片 ③刀具準(zhǔn)備清單90°外圓粗車刀 93°外圓精車刀 切槽(斷)刀 刀寬3mm 3.實(shí)訓(xùn)時(shí)間2個(gè)小時(shí)。4.相關(guān)知識概述(1)數(shù)控車床編程的基礎(chǔ)知識。(2)常用準(zhǔn)備功能指令的格式及各個(gè)字的含義。(3)起刀點(diǎn)、換刀點(diǎn)的確定。(4)宏程序變量及變量表達(dá)。(5)宏程序循環(huán)語句表達(dá)。5.實(shí)訓(xùn)內(nèi)容項(xiàng)目1已知毛坯為Φ50mm×120mm的棒料,材料為45號鋼,要求加工如圖所示零件。圖1⑴零件圖工藝分析該軸類零件表面由橢圓、圓錐、圓柱表面組成,此零件尺寸標(biāo)注正確、輪廓描述完整。最大外圓表面尺寸為φ46,整個(gè)零件要加工部分長52,表面粗糙度R1.6由精車保證。⑵確定裝夾方案采用機(jī)床本身的標(biāo)準(zhǔn)卡盤,毛坯伸出三爪卡盤外80mm左右,并找正夾緊。⑶確定加工方案以零件右端面中心作為坐標(biāo)原點(diǎn)建立工件坐標(biāo)系。加工起點(diǎn)和換刀點(diǎn)設(shè)為同一點(diǎn),其位置的確定原則為方便拆卸工件,不發(fā)生碰撞,空行程較短等。故加工起點(diǎn)和換刀點(diǎn)放在Z向距離工件前端面100mm、X向距離軸心線100mm的位置。加工工藝路線為:粗車圓錐、圓柱、橢圓表面→精車圓錐、圓柱、橢圓表面→切斷。如下圖所示。圖2圖3圖4⑷選擇刀具與切削用量外圓粗車刀T0101,刀具主偏角為90°;外圓精車刀T0202,刀具主偏角為93°;切斷刀T0303,刀寬3mm。上述刀具材料為高速鋼。采用切削用量主要考慮加工精度要求并兼顧提高刀具耐用度、機(jī)床壽命等因素。粗車外圓時(shí)主軸轉(zhuǎn)速為600r/min,進(jìn)給速度為100mm/min,給精加工留0.25mm的單邊背吃刀量,精加工外圓時(shí)主軸轉(zhuǎn)速為1000r/min,進(jìn)給速度為50mm/min;切槽時(shí):主軸轉(zhuǎn)速為400r/min,進(jìn)給速度為30mm/min。⑸擬訂數(shù)控加工工序卡片。數(shù)控加工工序(工步)卡片零件圖號零件名稱材料使用設(shè)備JVTC-00145#鋼數(shù)控車床工步號工步內(nèi)容刀具號刀具名稱刀具規(guī)格主軸轉(zhuǎn)速進(jìn)給量刀具半徑補(bǔ)償號刀具長度補(bǔ)償號備注1粗車圓錐、圓柱、橢圓表面T01外圓粗車刀90°6001002精車圓錐、圓柱、橢圓表面T02外圓精車刀93°1000503切斷,控制零件總長T03切斷刀3mm40030⑹零件加工參考程序:O0001;T0101;外圓粗車刀M03S600;G00X52.0Z2.0;粗車復(fù)合循環(huán)起點(diǎn)M08;G71U1.5R0.5;G71P10Q20U0.5W0.1F100;N10G01X26.0;Z-20.0;X36.0Z-29.0;Z-46.0;X43.0;X46.0W-1.5;N20Z-58.0;G00X30.0;#1=23.0;#1為編程點(diǎn)X坐標(biāo)直徑值WHILE[#1GE0]DO1;#2=#1/2;#2為編程點(diǎn)X坐標(biāo)半徑值#3=20*SQRT[13*13-#2*#2]/13-20+0.2;#3為編程點(diǎn)Z坐標(biāo)值G01X[#1]F100;Z[#3];X[#1+2.0];G00Z2.0;#1=#1-3.0;END1;M09;G00Z100.0;X100.0;T0202;外圓精車刀M03S1000;G00X0.0Z2.0;M08;#5=0.0;#5為編程點(diǎn)X坐標(biāo)直徑值WHILE[#5LE26.0]DO2;#6=#5/2;#6為編程點(diǎn)X坐標(biāo)半徑值#7=20*SQRT[13*13-#6*#6]/13-20;#7為編程點(diǎn)Z坐標(biāo)值G01X[#5]Z[#7]F50;#5=#5+0.04;END2;G01X36.0Z-29.0F50;Z-46.0;X43.0;X46.0W-1.5;Z-58.0;M09;G00X100.0;Z100.0;T0303;切斷刀M03S400;G00X54.0Z-56.0;M08;G01X0.0F20;M09;G00Z100.0;X100.0;M30;⑺輸入零件程序⑻進(jìn)行程序校驗(yàn)及加工軌跡仿真,修改程序⑼進(jìn)行對刀操作⑽自動(dòng)加工學(xué)習(xí)情境二平面類方程曲面零件的編程與加工學(xué)習(xí)目標(biāo):1.能夠運(yùn)用宏程序加工平面類方程曲面零件2.掌握平面類方程曲面零件的加工工藝3.掌握平面類方程曲面的檢測2.1用戶宏程序功能A2.1.1用戶宏指令是調(diào)用用戶宏程序的指令,用戶宏程序功能A用以下方法調(diào)用宏程序:宏程序調(diào)用宏程序模態(tài)調(diào)用(G66,G67)子程序調(diào)用(M98)用M代碼調(diào)用子程序(M<m>)用T代碼調(diào)用子程序宏程序模態(tài)調(diào)用與取消(G66、G67)指令格式為:G66P<p>;式中P為調(diào)用的宏程序本體程序號。用上述指令時(shí),系統(tǒng)為宏程序模態(tài)調(diào)用方式,即其后的每個(gè)程序每執(zhí)行一次,便調(diào)用一次P指令的宏程序,并且在其后的各程序中都可以指定自變量。取消宏程序模態(tài)指令G67,即取消宏程序模態(tài)指令G66。G66和G67應(yīng)該成對使用。2.子程序調(diào)用(M98)指令格式為:M98<p>;式中P為調(diào)用的宏程序本體程序號。用上述指令,可調(diào)用P指定的宏程序本體。3.用M代碼調(diào)用子程序可用M<m>代碼代替M98P<p>。在參數(shù)No.6071~No.6079中設(shè)定調(diào)用子程序的M代碼<m>,可用與子程序調(diào)用(M98)相同的方法調(diào)用子程序表8-9為FANUCOi參數(shù)、M代碼與子程序號之間的對應(yīng)關(guān)系。表8-9FANUCOi參數(shù)、M代碼與子程序之間的對應(yīng)關(guān)系參數(shù)號M代碼<m>被調(diào)用的用戶子程序<p>6071m1O90016072m2O90026073m3O90036074m4O90046075m5O90056076m6O90066077m7O90076078m8O90086079m9O9009<m>值范圍可從03~97中選取,其中30和不能進(jìn)入緩沖寄存器的M代碼除外。例如:假設(shè)在系統(tǒng)中將No.6072參數(shù)設(shè)置為72(為了識別的方便性和條理性,強(qiáng)烈建議將m1~m9依次設(shè)置為71~79),則:M72=M98P9002。O0100;∶O0100;∶M72;∶M30;O9002;∶∶∶M99;參數(shù)No.6072=72說明:自變量賦值:不允許自變量賦值。M代碼:在宏程序中調(diào)用的M代碼被處理為普通的M代碼。2.1.用戶宏程序本體的結(jié)構(gòu)在用戶宏程序本體中,可以使用普通NC指令、采用變量的NC指令、計(jì)算指令和轉(zhuǎn)換指令。用戶宏程序本體結(jié)構(gòu),以字母O后的程序號開始,用M99結(jié)束。例如:O××××;程序號G65H05……;運(yùn)算指令G90G00X#110Y#120;使用變量的NC指令┇G65H82……;轉(zhuǎn)移指令M99用戶宏程序本體結(jié)束2.變量的表示和引用用變量可以指定用戶宏程序本體的地址值。當(dāng)調(diào)用或執(zhí)行宏程序時(shí),通過計(jì)算變量,可以指定(得到)一個(gè)變量,使宏程序更靈活,用途更廣泛。用變量可以替代地址后面的具體數(shù)值。例如:F#110,當(dāng)#110=500時(shí),相當(dāng)于F500。Z-#120,當(dāng)#120=200.0時(shí),相當(dāng)于Z—200.0。G#130,當(dāng)#130=3時(shí),相當(dāng)于G3(即G03)。當(dāng)用變量替代變量號時(shí),不能表示為“##100”或“#[#100]”,而應(yīng)寫成“#9100”,即用“9”替代后面的“#”表示替換的變量號。例如:若#100=#110,#110=400,則X#9100表示X-400,而X-#9100則表示X400。注意:地址O和N不能引用變量。指令值不能超過各地址的最大指令值。若#130=200,則G#130超過了最大指令。3.變量的種類在用戶宏程序功能A中,使用的變量是公共變量和系統(tǒng)變量,這點(diǎn)一定要注意,相關(guān)變量的定義和特點(diǎn)參見前述。4.宏程序的運(yùn)算和控制指令指令格式:G65HmP#iQ#jR#k式中m為01~99,表示宏程序功能;#i為存儲(chǔ)運(yùn)算結(jié)果的變量號;#j為進(jìn)行運(yùn)算變量號碼,也可以是常數(shù);#k為進(jìn)行運(yùn)算的變量號2,也可以是常數(shù);意義:#i=#j①#k運(yùn)算符(由Hm指定)注意:變量值不能帶小數(shù),與各地址不帶小數(shù)時(shí)所表示的意義相同(參數(shù)No.3401的#0位DPI=0.最小輸入單位0.001mm及0.001°)例如:若#100=10,以0.001mm為單位輸入時(shí)X#100為X0.01mm(10×0.001mm=0.010mm);若#100=100,以0.001°角度為單位輸入時(shí)#100為0.10°);G65Hm指令見表2-10。表2-10(FANUCOi)G65Hm宏指令表(宏程序的運(yùn)算與控制指令)G65Hm功能數(shù)學(xué)定義G65H01定義、置換#i=#jG65H02加法#i=#j+#kG65H03減法#i=#j-#kG65H04乘法#i=#j×#kG65H05除法#i=#i+#kG65H11邏輯加#i=#Jand#kG65H12邏輯乘#i=#JOR#KG65H13異或#i=#jXOR#kG65H21開平方G65H22絕對值#i=|#j|G65H23剩余數(shù)#i=#j-trunc(#j/#k)×#kG65H24變成二進(jìn)制#i=BIN(#j)G65H25變成十進(jìn)制#i=BCD(#j)G65H26復(fù)合除運(yùn)算#i=(#j×#k)+#kG65H27復(fù)合平方根1G65H28復(fù)合平方根2G65H31正弦#i=#j×sin(#k)G65H32余弦#i=#j×cos(#k)G65H33正切#i=#j×tan(#k)G65H34反正切#i=arctan(#j/#k)G65H80無條件轉(zhuǎn)移GOTOnG65H81條件轉(zhuǎn)移12F#j=#kGOTOnG65H82條件轉(zhuǎn)移22F#j≠#kGOTOnG65H83條件轉(zhuǎn)移32F#j>#kGOTOnG65H84條件轉(zhuǎn)移42F#j﹤#kGOTOnG65H85條件轉(zhuǎn)移52F#j≥#kGOTOnG65H86條件轉(zhuǎn)移62F#j≤#kGOTOnG65H99P/S報(bào)警報(bào)警號為500+n正如前文所述,從G65Hm指令的用法定義可以看出,用戶宏程序功能A的使用是非常繁瑣且極不直觀的,因此,從宏程序應(yīng)用的實(shí)際出發(fā),筆者在此也不打算就用戶宏程序功能A的語句及指令的詳細(xì)用法作更深入的介紹和表達(dá),對此有興趣的讀者可以參考一些相關(guān)書籍,事實(shí)上在真正的生產(chǎn)實(shí)踐中,用戶宏程序功能A的使用機(jī)會(huì)是很少的。2.2用戶宏程序功能B用戶宏指令(用戶宏程序調(diào)用指令)用戶宏指令是調(diào)用用戶宏程序的指令,用戶宏程序功能B用以下方法調(diào)用宏程序:宏程序調(diào)用非模態(tài)調(diào)用(G65)模態(tài)調(diào)用(G66,G67)用G代碼調(diào)用宏程序(G<g>)用M代碼調(diào)用宏程序(M<m>) 用M代碼調(diào)用子程序(M<m>或M98)用T代碼調(diào)用子程序首先說明用戶宏程序調(diào)用(G65)與子程序調(diào)用(M98)之間的差別:G65可以進(jìn)行自變量賦值,即指定自變量(數(shù)據(jù)傳送到宏程序),M98則不能。當(dāng)M98程序段包含另一個(gè)NC指令(例如,G01X200.0M98P<p>)時(shí),在執(zhí)行完這種含有非N、P或L的指令后可調(diào)用(或轉(zhuǎn)移到)子程序。相反,G65則只能無條件地調(diào)用宏程序。當(dāng)M98程序段包含有O、N、P、L以外的地址的NC指令時(shí),(例如G01X200.0M98P<p>),在單程序段方式中,可以單程序段停止(即停機(jī))。相反,G65則不行(即不停機(jī))。G65改變局部變量的級別。M98不改變局部變量的級別。2.2當(dāng)指定G65時(shí),調(diào)用以地址P指定的用戶宏程序,數(shù)據(jù)(自變量)能傳遞到用戶宏程序中,指令格式如下所示。G65P<p>L<l><自變量賦值>;<p>:調(diào)用的程序號<l>:重復(fù)的次數(shù)(默認(rèn)值為1)O0110;┇G65P9110LO0110;┇G65P9110L2A┇M30;O9110;#3=#1+#2;IF[#3GE180]GOTO99;G00G91X#3;N99M99;調(diào)用說明:在G65之后,用地址P指定用戶宏程序的程序號。任何自變量前必須指定G65。當(dāng)要求重復(fù)時(shí),在地址L后指定從1~9999的重復(fù)次數(shù),省略L值時(shí),默認(rèn)L值等于1。使用自變量指定(賦值),其值被賦值給宏程序中相應(yīng)的局部變量。自變量指定(賦值)自變量指定又可稱之為自變量賦值(以下統(tǒng)一采用該叫法),即若要向用戶宏程序本體傳送數(shù)據(jù)時(shí),須由自變量賦值來指定,其值可以有符號和小數(shù)點(diǎn),且與地址無關(guān)。這里使用的是局部變量(#1~#33共有33個(gè)),與其對應(yīng)的自變量賦值共有兩種類型:自變量賦值Ⅰ:用英文字母后加數(shù)值進(jìn)行賦值,除了G、L、O、N和P之外,其余所有21個(gè)英文字母都可以給自變量賦值,每個(gè)字母賦值一次,從A-B-C-D-…到X-Y-Z,賦值不必按字母順序進(jìn)行,但使用I、J、K時(shí),必須按字母順序指定(賦值),不賦值的地址可以省略。自變量賦值Ⅱ:與自變量賦值Ⅰ類似,也是用英文字母后加數(shù)值進(jìn)行賦值,但只用了A、B、C和I、J、K這6個(gè)字母,具體用法是:除了A、B、C之外,還用10組I、J、K來對自變量進(jìn)行賦值,在這里I、J、K是分組定義的,同組的I、J、K必須按字母順序指定,不賦值的地址可以省略。自變量賦值Ⅰ和自變量賦值Ⅱ與用戶宏程序本體中局部變量的對應(yīng)關(guān)系見表2-11。表2-11FANUCOi地址與局部變量的對應(yīng)關(guān)系自變量賦值Ⅰ地址用戶宏程序本體中的變量自變量賦值Ⅱ地址自變量賦值Ⅰ地址用戶宏程序本體中的變量自變量賦值Ⅱ地址ABC#1#2#3ABCSTU#19#20#21I6J6K6IJK#4#5#6I1J1K1VWX#22#23#24I7J7K7DEF#7#8#9I2J2KYZ#25#26#27I8J8K8H#10#11#12I3J3K3#28#29#30I9J9K9M#13#14#15I4J4K4#31#32#33I10J10K10QR#16#17#18I5J5K5注意:對于自變量賦值Ⅱ,上表中I、J、K的下標(biāo)用于確定自變量賦值的順序,在實(shí)際編程中不寫(也無法寫,語法上無法表達(dá))。自變量賦值的其他說明自變量賦值Ⅰ、Ⅱ的混合使用CNC內(nèi)部自動(dòng)識別自變量賦值Ⅰ和Ⅱ。賦值Ⅰ和Ⅱ混合賦值,較后賦值的自變量類型有效(以從左到右書寫的順序?yàn)闇?zhǔn),左為先,右為后)。例:G65A1.0B2.0I-3.0I4.0D5.0P1100;<變量>#1→1.0#2→2.0#3→無賦值#4→3.0#5→無賦值#6→無賦值#7→4.0→5.0本例中,14.0和D5.0都給變量#7賦值,但后者D5.0有效由此可以看出,自變量賦值=2\*ROMANII用10組I、J、K來對自變量進(jìn)行賦值,在上述表1-8中似乎可以通過I、J、K的下標(biāo)很容易識別地址和變量的關(guān)系,但實(shí)際上在實(shí)際編程中無法輸入下標(biāo),盡管自變量賦值=2\*ROMANII“充分利用資源”,可以對#1~#33全部33個(gè)局部變量的進(jìn)行賦值,但是在實(shí)際編程時(shí)要分清是哪一組I、J、K,又是第幾個(gè)I或J或K,是一件非常麻煩的事。如果再讓自變量賦值I和自變量賦值=2\*ROMANII混和使用,那就更是煩上加煩!相反,如果只用市面上變量賦值I進(jìn)行賦值,由于地址和變量是一一對應(yīng)的關(guān)系,混淆出錯(cuò)的機(jī)會(huì)相當(dāng)小,盡管只有21個(gè)英文字母可以給自變量賦值,但是毫不夸張地說,95%以上的編程工作再復(fù)雜也不會(huì)出現(xiàn)超過21個(gè)變量的情況。因此,筆者在此強(qiáng)烈建議在實(shí)際編程時(shí),使用變量賦值I進(jìn)行賦值。(2)小數(shù)點(diǎn)的問題沒有小數(shù)點(diǎn)的自變量數(shù)據(jù)的單位為各地址的最小設(shè)定單位。傳遞的沒有小數(shù)點(diǎn)的自變量的值將根據(jù)實(shí)際系統(tǒng)配置而定。因此建議在宏程序調(diào)用中一律使用小數(shù)點(diǎn),既可避免無謂的差錯(cuò),也可使程序?qū)C(jī)床及系統(tǒng)的兼容性好。(3)調(diào)用嵌套調(diào)用可以四級嵌套,包括非模態(tài)調(diào)用(G65)和模態(tài)調(diào)用(G66),但不包括子程序調(diào)用(M98)。(4)局部變量的級別局部變量嵌套從0到4級,主程序是0級。用G65或G66調(diào)用宏程序,每調(diào)用一次(2、3、4級),局部變量級別加1,而前一級的局部變量值保存在CNC中,即每級局部變量(1、2、3級)被保存,下一級的局部變量(2、3、4級)被準(zhǔn)備,可以進(jìn)行自變量賦值。當(dāng)宏程序中執(zhí)行M99時(shí),控制返回到調(diào)用的程序,此時(shí),局部變量級別減1,并恢復(fù)宏程序調(diào)用時(shí)保存的局部變量值,即上一級被儲(chǔ)存的局部變量被恢復(fù),如同它被儲(chǔ)存一樣,而下一級的局部變量被清除。主程序(0級)宏程序(1級)宏程序(2級)宏程序(3級)宏程序(4級)O0001;┆#1=1;G65P2A2;┆M30;O0002;┆#1=2;G65P3AO0001;┆#1=1;G65P2A2;┆M30;O0002;┆#1=2;G65P3A3;┆M99;O0003;┆#1=3;G65P4A4;┆M99;O0004;┆#1=4;G65P5A5;┆M99;O0005;┆#1=5;G65P6A6;┆M99;局部變量局部變量局部變量局部變量局部變量(0級)(1級)(2級)(3級)(4級)#11#12#13#14#15┆┆┆┆┆┆┆┆┆┆#33#33#33#33#33公共變量#100-#199.#500-#999變量可以由宏程序在不同級上讀寫2.當(dāng)指定G66時(shí),則指定宏程序模態(tài)調(diào)用,即指定沿移動(dòng)軸移動(dòng)的程序段后調(diào)用宏程序,G67取消宏程序模態(tài)調(diào)用。指令格式與非模態(tài)調(diào)用(G65)相似。G66P<p>L<l><自變量賦值>;<p>:要調(diào)用的程序號<l>:重復(fù)次數(shù)(默認(rèn)值為1)<自變量賦值>:傳遞到宏程序的數(shù)據(jù)O9110;∶G00Z-#1;G01Z-#O9110;∶G00Z-#1;G01Z-#2F200;∶∶∶∶M99;O0010;∶G66P9110LG00G90X10.0;Y20.0;X100.0Y250.0;G67;∶M30; 相關(guān)說明:在G6之后,用地址P指定用戶宏程序的程序號。任何自變量前必須指定G66。當(dāng)要求重復(fù)時(shí),在地址L之后指定從1~9999的重復(fù)次數(shù),省略L值時(shí),默認(rèn)L值等于1。與非模態(tài)調(diào)用(G65)相同,使用自變量指定(賦值),其值賦值給宏程序中相應(yīng)的局部變量。指定G67時(shí),取消G66。即其后面的程序段不再執(zhí)行宏程序模態(tài)調(diào)用。G66和G67應(yīng)該成對使用??梢哉{(diào)用四級嵌套,包括非模態(tài)調(diào)用(G65)和模態(tài)調(diào)用(G66)。但不民括子程序調(diào)用(M98)。在模態(tài)調(diào)用期間,指定另一個(gè)G66代碼,可以嵌套模態(tài)調(diào)用。限制:=1\*GB3①在G66程序段中,不能調(diào)用多個(gè)宏程序。=2\*GB3②在只有諸如輔助功能(M代碼),但無移動(dòng)指令的程序段中不能調(diào)用宏程序。=3\*GB3③局部變量(自變量)只能G66程序段中指定,注意,每次執(zhí)行模態(tài)調(diào)用時(shí),不再設(shè)定局部變量。2.2.3方程曲面零件的編程與加工1.本次實(shí)訓(xùn)的目的和要求⑴了解復(fù)雜零件的數(shù)控銑削加工工藝過程;⑵熟練掌握數(shù)控加工中心的操作與編程;⑶能夠運(yùn)用宏程序完成本零件方程曲面的加工。2.實(shí)訓(xùn)儀器與設(shè)備⑴機(jī)床:數(shù)控加工中心2臺;⑵數(shù)控系統(tǒng):FANUC;⑶刀具:φ10mm硬質(zhì)合金立銑刀、φ5的⑷工量具:機(jī)用平口鉗、裝拆刀具專用扳手、壓板、墊塊、杠桿百分表(0~0.8mm)與表座、游標(biāo)卡尺(0~200mm)、內(nèi)測千分尺(5~30mm)、內(nèi)測千分尺(25~50mm);⑸計(jì)算機(jī)若干臺(配有MasterCAM9.1中文版、Vnuc數(shù)控仿真軟件)。3.實(shí)訓(xùn)內(nèi)容項(xiàng)目1在數(shù)控加工中心上加工如圖2-1所示的方程曲面零件。材料45號鋼,毛坯尺寸為60mm×60mm×圖2-1⑴零件圖工藝分析通過零件圖工藝分析,確定零件的加工內(nèi)容、加工要求,初步確定各個(gè)加工結(jié)構(gòu)的加工方法。加工內(nèi)容:該零件主要由橢圓面、圓柱孔及圓弧面組成,毛坯是正方形件,尺寸為60mm×60mm×120mm,加工內(nèi)容包括:φ18mm的內(nèi)孔;旋轉(zhuǎn)角分別為45度和135號的橢圓;加工要求:零件的主要加工要求為:橢圓側(cè)面表面粗糙度要求很高,為Ra1.6μm。其他的一般加工要求為:φ18mm的內(nèi)孔和圓弧面標(biāo)注了基

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論