李兆祥
(河南工業(yè)技師學(xué)院,河南 鄭州 450007)
自從基于NC和CNC編程語(yǔ)言出現(xiàn)以來(lái),參數(shù)化編程方法一直在發(fā)展之中。以前參數(shù)化編程需要的設(shè)備相當(dāng)昂貴,因?yàn)橛脩?hù)必須擁有配置強(qiáng)大的計(jì)算機(jī)和功能強(qiáng)大的軟件??萍及l(fā)展到今天,需要的唯一設(shè)備(計(jì)算機(jī))是機(jī)床的CNC系統(tǒng),并配備相對(duì)低廉的FANUC用戶(hù)B類(lèi)宏程序。個(gè)人計(jì)算機(jī)或便攜式計(jì)算機(jī)確實(shí)方便,但不是絕對(duì)必要的。參數(shù)化編程也稱(chēng)為類(lèi)零件編程,顧名思義,是屬于同一類(lèi)的一組相似零件,可通過(guò)使用變量數(shù)據(jù)而不是特定的尺寸數(shù)據(jù)或加工數(shù)據(jù)來(lái)進(jìn)行編程。什么樣的數(shù)據(jù)可以是變量類(lèi)型的數(shù)據(jù)呢?
程序中的任何數(shù)據(jù)都可以是變量數(shù)據(jù)。加工條件隨不同毛坯材料、不同的切削刀具材料、使用的機(jī)床(輕型或重型)、尺寸數(shù)據(jù)、表面粗糙度要求、公差等發(fā)生改變。當(dāng)基本特征不變時(shí),切削的深度、寬度、數(shù)量、主軸轉(zhuǎn)速、進(jìn)給速度等也會(huì)發(fā)生改變。比如拿一個(gè)必須加工成一定長(zhǎng)度和寬度的矩形為例。如果要加工許多矩形,那么這兩個(gè)尺寸特征就是變量特征。傳統(tǒng)的方法是對(duì)每個(gè)矩形都要編一個(gè)單獨(dú)的程序。最有效的方法,則是編一個(gè)適用于任何矩形的宏程序。通過(guò)替代長(zhǎng)度變量和寬度變量,就可以重新使用這個(gè)程序。其優(yōu)點(diǎn)也就顯而易見(jiàn)了。
生產(chǎn)中的快速轉(zhuǎn)換是宏程序中類(lèi)零件的最大優(yōu)點(diǎn)。開(kāi)發(fā)宏程序比開(kāi)發(fā)標(biāo)準(zhǔn)程序常常需要更多的時(shí)間,但花費(fèi)這些時(shí)間往往是明智的選擇,尤其是如果經(jīng)常使用宏程序的話(huà)。了解參數(shù)化編程具備的優(yōu)點(diǎn),有助于更好地判斷何時(shí)開(kāi)發(fā)參數(shù)化程序合適還是何時(shí)開(kāi)發(fā)標(biāo)準(zhǔn)程序合適。
(1)總體優(yōu)點(diǎn):同類(lèi)零件間的快速轉(zhuǎn)換加工;縮短了程序檢查輔助時(shí)間;改進(jìn)了產(chǎn)品質(zhì)量;降低了整體生產(chǎn)成本。個(gè)別來(lái)講,在生產(chǎn)和編程領(lǐng)域更能體現(xiàn)出其優(yōu)點(diǎn)。
(2)在生產(chǎn)領(lǐng)域的優(yōu)點(diǎn):減少了零件廢品;提高了零件的加工質(zhì)量;由于加工標(biāo)準(zhǔn)化,降低了加工成本;提高了CNC機(jī)床的生產(chǎn)率;間接減少了維修費(fèi)用。
(3)在編程領(lǐng)域的優(yōu)點(diǎn):編程時(shí)間急劇減少;編程錯(cuò)誤減少或消除;所有相似零件的一致性;同類(lèi)多組時(shí)更容易減少工作量。
何時(shí)進(jìn)行參數(shù)化編程?為從參數(shù)化編程方法中獲益,采取的第一步是識(shí)別合適的零件,并不是每個(gè)編程作業(yè)都適合參數(shù)化編程。在決定參數(shù)化編程時(shí)應(yīng)該權(quán)衡利弊,有如下的幾種情況適宜參數(shù)化編程:很多形狀相同而尺寸不同的零件;很多形狀相似的零件;包含刀具路徑重復(fù)的零件。
當(dāng)涉及實(shí)際編寫(xiě)參數(shù)化程序或任何其它宏程序時(shí),編程員可根據(jù)個(gè)人偏好從中選擇。宏程序通常都是由經(jīng)驗(yàn)豐富的程序員編寫(xiě),他們已經(jīng)形成了自己的某種編程風(fēng)格。而且,大多數(shù)程序員的某些方法都在實(shí)際工作中經(jīng)過(guò)檢驗(yàn)。首要考慮的而且最重要的是要有一個(gè)目標(biāo)。那么宏程序應(yīng)該達(dá)到什么樣的目標(biāo)呢?
接下來(lái)我們通過(guò)一個(gè)簡(jiǎn)單但很全面的計(jì)劃開(kāi)發(fā)宏程序的例子步驟來(lái)指導(dǎo)我們?nèi)绾纬晒Φ拈_(kāi)發(fā)一個(gè)宏程序。
(1)首先確定主要目標(biāo)。很多編程員可能把目標(biāo)定得太高,并且想要在一個(gè)宏程序中來(lái)實(shí)現(xiàn)。這樣可能好高騖遠(yuǎn),適得其反。在決定宏程序所要完成的目標(biāo)后,估計(jì)其它的可能性,再放棄不切實(shí)際的部分目標(biāo)。通常用兩個(gè)短的宏程序要比用一個(gè)長(zhǎng)的宏程序好得多。
(2)提前制定好的計(jì)劃。好的計(jì)劃是成功的關(guān)鍵。首先由圖紙開(kāi)始,為參數(shù)化程序研究類(lèi)似的圖紙。確定哪些特征不變,哪些特征可能發(fā)生改變。不要忘記零件的材料、裝夾方法、使用的機(jī)床和刀具。試圖預(yù)測(cè)哪些特征可能會(huì)在后面的相似圖紙中存在。盡量想在前面,估計(jì)盡可能多的選擇。跟其他程序員請(qǐng)教他們的看法。盡管設(shè)定的目標(biāo)正確,但較差的計(jì)劃也會(huì)產(chǎn)生較差的宏程序,要建立嚴(yán)格的標(biāo)準(zhǔn)。
(3)做一個(gè)大體的規(guī)劃??吹降牟攀强尚诺?,畫(huà)出示意性的草圖來(lái)展示宏程序的全部特征。如果有必要使用細(xì)節(jié),確定關(guān)鍵的位置,例如程序零點(diǎn)、間隙、刀具的起始點(diǎn)、偏置量、換刀點(diǎn)(如果需要)等。如果宏程序要求使用數(shù)學(xué)公式,那就應(yīng)該包括所有的公式,如草圖里的幾何公式和用作測(cè)試特征點(diǎn)的測(cè)試公式。這樣的工作草圖,無(wú)論有沒(méi)有計(jì)算,都應(yīng)該記錄到最近的日期,然后存檔作為以后的參考。
(4)確定刀具路徑方法。確定刀具如何靠近工件,切削工件,切削完成后離開(kāi)的方法??紤]現(xiàn)在的零件還有以后的零件。是使用一把刀具還是有必要使用多把刀具?刀具路徑是否唯一?起始點(diǎn)是否安全?計(jì)算深度、寬度、步距寬度、走刀次數(shù)、鉆孔間隙、粗加工和精加工,以及其它的考慮因素都是怎樣的?收集能收集到的一切信息,包括加工條件,例如主軸轉(zhuǎn)速和進(jìn)給速度。記住,包括的變量數(shù)據(jù)越多,參數(shù)化程序或宏程序的功能就越強(qiáng)大。但這樣將會(huì)使開(kāi)發(fā)和校驗(yàn)的過(guò)程更長(zhǎng)。
(5)識(shí)別和組織變量數(shù)據(jù)。一旦收集了信息,識(shí)別和組織數(shù)據(jù)就是密不可分的。確定哪些局部變量將會(huì)在G65命令程序段中定義為自變量。不包括可以計(jì)算的數(shù)據(jù),但包括可以從圖紙中讀出的數(shù)據(jù),即使不直接用到它們。例如:宏程序可能需要在計(jì)算中用到圓弧半徑,可圖紙中給出的是直徑值。提供直徑,再在宏程序體中除以2作為自變量要比輸入半徑作為白變量好。注意要求輸入的是小數(shù)還是負(fù)數(shù)。如果可能就用相關(guān)的助記符變量賦值,例如:A(#1)用于輸入角度,R(#18)用于輸入半徑等。這并不總能實(shí)現(xiàn),但是有總比沒(méi)有好。總是要在文件中注明所有變量的含義,以免以后容易忘記。
(6)設(shè)計(jì)程序流程。清晰的流程圖在宏程序開(kāi)發(fā)階段是很有幫助的。很多程序員把流程圖看作程序開(kāi)發(fā)的必經(jīng)階段,甚至堅(jiān)持使用。在宏程序中所有的編程目的都是可行的,例如循環(huán),條件測(cè)試,分支,做決策等,在流程圖中可以用圖表表達(dá)。一旦流程圖設(shè)計(jì)好,就要使用不同的輸入條件和結(jié)果反復(fù)進(jìn)行測(cè)試。宏程序應(yīng)該可以在任何場(chǎng)合下工作。不要擔(dān)心測(cè)試中出現(xiàn)的不可能或不可測(cè)的狀況。如果流程圖邏輯失敗而且流程圖是正確的,那么宏程序需要重新設(shè)計(jì)和測(cè)試,這種錯(cuò)誤在草案設(shè)計(jì)中經(jīng)常出現(xiàn)。隨著經(jīng)驗(yàn)的增長(zhǎng),就會(huì)建立另一種設(shè)計(jì)程序流程的方法,稱(chēng)為偽代碼設(shè)計(jì),這是軟件工程師常用的方法。偽代碼設(shè)計(jì)是非常嚴(yán)格和細(xì)致的過(guò)程,通常用正規(guī)語(yǔ)言書(shū)寫(xiě),并需依次列出所有步驟要完成的工作。它不如流程圖方便,但是很實(shí)用。
(7)不對(duì)缺省值計(jì)數(shù)。在標(biāo)準(zhǔn)的CNC編程中,許多程序員記錄控制系統(tǒng)缺省值的個(gè)數(shù),但不包括一些程序代碼,尤其是一些準(zhǔn)備G代碼,例如他們記錄缺省的系統(tǒng)單元,但不包括程序中的G20和G21命令。同樣的也不包括G90和G91命令,和其它的一些代碼??傄涀∷械臎Q策必須反映到宏程序中,不要想當(dāng)然,也不要記錄系統(tǒng)缺省值的數(shù)目。
(8)編寫(xiě)宏程序。這個(gè)階段要求將宏程序代碼書(shū)寫(xiě)在紙張上、控制器中或計(jì)算機(jī)文件中,其目的是為了開(kāi)發(fā)實(shí)際的加工程序。以相同的順序和邏輯使用在流程圖中或在偽代碼中的數(shù)據(jù),并將它們轉(zhuǎn)換成FANUC宏程序代碼。把宏程序編寫(xiě)成文件非常重要,但僅僅是好還是不夠的,只有編寫(xiě)得最好的宏程序文件才能使用。將宏程序編寫(xiě)成文件不僅僅是為了CNC操作員,對(duì)于任何使用宏程序的程序員來(lái)講是永久可用的文件。非常明顯的程序在今天將在很短的時(shí)間內(nèi)消失,文件可以以注釋的形式做成內(nèi)部文件,或以無(wú)格式的語(yǔ)言描述成外部文件。同樣重要和迫切的是,必須在宏程序執(zhí)行前保存所有當(dāng)前的程序設(shè)置,按需要在宏程序內(nèi)改變?cè)O(shè)置,并在宏程序退出前恢復(fù)原始設(shè)置。這種方法是一種專(zhuān)業(yè)水平的標(biāo)志,能使程序更加完美,實(shí)踐性更強(qiáng)。
參數(shù)化編程絕不是要代替其它的方法——只是其它方法的提高。在參數(shù)化的宏程序開(kāi)發(fā)上花費(fèi)時(shí)間是明智的投資。為使經(jīng)濟(jì)高效,參數(shù)化編程帶來(lái)的益處必須是可預(yù)測(cè)和可測(cè)量的。
[1](美)Smid,P.(斯密德).FANUC CNC custom Macros:Programming Resources for FANUC Custom Macro B Users[M].U.S.A:McGraw-Hill,2004.
[2]北京發(fā)那科公司.FANUC機(jī)床操作手冊(cè)[M].北京:2005.
[3](?。㏒.K.Sinha.FANUC數(shù)控宏程序編程技術(shù)[M].北京:科學(xué)出版社,2011.