王志欣,黃建凌
(浙江亞太機(jī)電股份有限公司,浙江杭州 311203)
宏程序在設(shè)備中的運(yùn)用
王志欣,黃建凌
(浙江亞太機(jī)電股份有限公司,浙江杭州 311203)
從宏變量運(yùn)算、接口系統(tǒng)變量、宏程序條件運(yùn)算等方面,介紹宏程序的變量以及宏程序在設(shè)備生產(chǎn)中的運(yùn)用。
宏程序;變量;數(shù)控機(jī)床
10.16621/j.cnki.issn1001-0599.2017.12.52
宏程序在數(shù)控機(jī)床上有著重要作用,在現(xiàn)實(shí)生產(chǎn)加工中非常重要。有一些復(fù)雜零件,離開(kāi)了宏程序,它的加工程序就無(wú)法編制(利用CAM繪圖軟件并進(jìn)行后處理生成的程序除外);簡(jiǎn)單重復(fù)的零件,利用宏程序可以大大提高生產(chǎn)效率,減少編程量。
以北京FANUC 0i系統(tǒng) B-6351C為參考,通過(guò)多方面的內(nèi)容和應(yīng)用實(shí)例,向大家介紹宏程序的變量以及宏程序在設(shè)備生產(chǎn)中的運(yùn)用。
宏變量根據(jù)變量號(hào)和用途可以分4大類(表1)。
系統(tǒng)變量是和NC內(nèi)部數(shù)據(jù)以及PMC交流通信的變量,各個(gè)變量有著不同的功用和性能。有些變量可讀可寫(xiě),有些變量只能寫(xiě),有些變量只能讀,因此,系統(tǒng)變量是機(jī)床自動(dòng)控制和通用加工程序編寫(xiě)以及開(kāi)發(fā)的基礎(chǔ)。系統(tǒng)變量與CNC,PMC之間關(guān)系如表2~表4所示(一些不常用的變量略談)。
表1 宏變量的分類
表2 工件零點(diǎn)偏移值的系統(tǒng)變量
表3 機(jī)床位置信息的系統(tǒng)變量
表4 刀具補(bǔ)償?shù)南到y(tǒng)變量
表3中,位置信息不能寫(xiě),只能讀取使用;每組變量最后一位數(shù)字代表軸號(hào),一般表示第1軸~第4軸。
表4中,刀具補(bǔ)償?shù)南到y(tǒng)變量可讀可寫(xiě)。當(dāng)偏置組數(shù)≤200組時(shí),也可以使用括號(hào)中的#2001~#2400。
宏變量的運(yùn)算包括算術(shù)、函數(shù)、邏輯以及條件等運(yùn)算符(表5)。
進(jìn)行宏變量運(yùn)算時(shí),需注意10點(diǎn)。
(1)宏變量運(yùn)算時(shí),必須先賦值,后運(yùn)算。例如:
(2)反三角函數(shù)取值范圍由參數(shù)P6004.0的取值決定(表6)。
例如:#1=ATAN[-1]/[-1]=225°(變量賦值省略,假設(shè)變量等于-1);#1=ATAN[-1]/[-1]=-135°(變量賦值省略,假設(shè)變量等于-1)。
(3)宏變量值的精度約為8位十進(jìn)制數(shù),當(dāng)在加/減運(yùn)算處理非常大的數(shù)時(shí),可能得不到期望的結(jié)果。
(4)宏變量運(yùn)算先后順序一般遵循:①先函數(shù),②再乘除,與運(yùn)算,③最后是加減、邏輯或、邏輯異或運(yùn)算。
(5)宏變量的運(yùn)算都是在方括號(hào)內(nèi)進(jìn)行的,不能用小括號(hào)。小括號(hào)內(nèi)只能用作注釋。此外,括號(hào)可以改變運(yùn)算順序,但一行宏程序中最多只能使用5級(jí)方括號(hào),超過(guò)5級(jí)時(shí)宏程序會(huì)P/S No.118報(bào)警。
(6)宏程序中引用的變量值會(huì)根據(jù)地址的最小單位自動(dòng)四舍五入。如精度為0.001mm時(shí),當(dāng)用#1=12.3456,G00 X#1時(shí),實(shí)際X位置是12.346。
(7)使用負(fù)號(hào)“-”時(shí),負(fù)號(hào)必須放到#號(hào)前面,當(dāng)使用未定義的變量時(shí)(也叫空變量,變量#0總是空變量),變量和地址都會(huì)被忽略不計(jì),機(jī)床不報(bào)警。
(8)表達(dá)式也可以用于指定變量號(hào),但必須在封閉的方括號(hào)中,如:#1=#[#1+#3-29]。
(9)局部變量,公共變量取值是有范圍的,正值為+10-29~+1047,0 值;負(fù)值時(shí)為-1047~-10-29,超出會(huì)產(chǎn)生 P/S No.111 報(bào)警。
(10)相關(guān)參數(shù)說(shuō)明。
參數(shù)P3204.0等于0時(shí),括號(hào)是方括號(hào)“[]”,等于1時(shí)是小括號(hào)“()”。
參數(shù)P6000.5 SMB等于0時(shí)程序單節(jié)運(yùn)行時(shí)宏程序不停止,等于1時(shí)宏程序單節(jié)也停止.
參數(shù)P6001.6 CCV等于0時(shí)局部變量#1~#33值復(fù)位時(shí)變成空,等于1時(shí)不變。
參數(shù)P6001.7 CLV等于0時(shí)公用變量#100~#199值復(fù)位時(shí)變成空,等于1時(shí)不變。
參數(shù)P3209.2 MCY等于0時(shí)在MDI方式下可以輸入宏變量的值,等于1時(shí)不可以輸入。
參數(shù)P3209.6MC等于0時(shí)任何方式下都可以輸入宏變量的值,等于1時(shí)只有在MDI方式下才能輸入。
該類變量可以實(shí)現(xiàn)宏程序與PMC之間的信號(hào)交流和電平轉(zhuǎn)換,以達(dá)到利用外部控制條件實(shí)現(xiàn)對(duì)宏程序的控制,同時(shí)也可以實(shí)現(xiàn)利用宏程序?qū)MC控制的影響(表7)。這類變量在無(wú)人值守的自動(dòng)化以及復(fù)雜加工方面有重要應(yīng)用。
表5 宏變量運(yùn)算說(shuō)明
表6 函數(shù)取值范圍與參數(shù)的關(guān)系
從表7可以看出,宏程序與PMC信號(hào)傳遞是通過(guò)如圖1所示方式進(jìn)行的。
(1)#3000。給CNC程序設(shè)置一個(gè)報(bào)警的系統(tǒng)變量,其取值范圍為0~200。當(dāng)把以上范圍的任何一個(gè)值賦予#3000時(shí),CNC就會(huì)停止并產(chǎn)生一個(gè)報(bào)警號(hào)為3000+#3000值的報(bào)警(例如,#3000=8,則報(bào)警號(hào)是3008),并且可以在屏幕報(bào)警欄上顯示不超過(guò)26個(gè)字符的報(bào)警信息。書(shū)寫(xiě)格式:#3000=8(PART NOT FOUND)。
圖1 宏程序與PMC信號(hào)傳遞方式
(2)#3006。給CNC程序設(shè)置一個(gè)信息顯示的系統(tǒng)變量,取值范圍是“1”,當(dāng)程序運(yùn)行到該段程時(shí),停止運(yùn)行并停止,并且可以書(shū)寫(xiě)不超過(guò)26個(gè)字符的信息并在屏幕信息欄上顯示。書(shū)寫(xiě)格式:#3006=1(PARTFOUND)。
(3)#3001。該系統(tǒng)變量以毫秒(ms)為單位計(jì)時(shí)器,當(dāng)計(jì)時(shí)值累積到2 147 483 648 ms時(shí),歸零重計(jì)。當(dāng)電源接通時(shí),該變量值復(fù)位為0。該變量可以讀,也可以寫(xiě),常用作一次開(kāi)機(jī)時(shí)間統(tǒng)計(jì)。
表7 接口系統(tǒng)變量對(duì)PMC的控制及影響
(4)#3002。該系統(tǒng)變量是當(dāng)循環(huán)啟動(dòng)燈亮起時(shí)以小時(shí)為單位計(jì)時(shí)器,當(dāng)計(jì)時(shí)值累積到9544.371 767 h時(shí),歸零重計(jì)。該計(jì)時(shí)器即使電源斷電時(shí),累積值也不會(huì)丟失。該變量可以讀,也可以寫(xiě),常常用作設(shè)備自動(dòng)運(yùn)行時(shí)間統(tǒng)計(jì)。
(5)#3011。該系統(tǒng)變量用于讀取CNC系統(tǒng)的當(dāng)前日期,并以10進(jìn)制顯示年、月、日。如日期是2015年6月18日,則顯示為20150618。該變量不能寫(xiě),只能讀,常用作程序運(yùn)行時(shí)間(日期)報(bào)警。
(6)#3012。該系統(tǒng)變量用于讀取CNC系統(tǒng)的當(dāng)前時(shí)間,以24 h制并以10進(jìn)制方式顯示時(shí)、分、秒時(shí)間。如12:30:46,則顯示123046。該變量不能寫(xiě),只能讀,常用作程序運(yùn)行時(shí)間(日期)報(bào)警。
(7)#3003。該系統(tǒng)變量用于改變程序自動(dòng)運(yùn)行中的狀態(tài),并且有時(shí)不受操作面板上單段按鈕選擇以及一些輔助(如常用的M,S,T等)功能命令是否完成信號(hào)輸出的影響(表8)。
(8)#3004。該系統(tǒng)變量用于改變程序自動(dòng)運(yùn)行中的狀態(tài),并且有時(shí)不受操作面板上進(jìn)給暫停、進(jìn)給速度倍率按鈕選擇的影響(表9)。
(9)#3005。該系統(tǒng)變量是一個(gè)16位二進(jìn)制數(shù),以SEETING畫(huà)面方式輸入10進(jìn)制數(shù),它會(huì)變化成二進(jìn)制后按位寫(xiě)入。如果讀出時(shí)它會(huì)把二進(jìn)制變換成10進(jìn)制。0i系統(tǒng)中起作用的各位如表10所示。
表8 系統(tǒng)變量#3003取值及功用
表9 系統(tǒng)變量#3004取值及功用
表10 0i系統(tǒng)中#3005常用起作用的各位
#0(TVC):是否進(jìn)行TV檢查。
#1(ISO):輸出代碼是國(guó)際標(biāo)準(zhǔn),否則是ETA標(biāo)準(zhǔn)。
#2(INI):英寸輸入,否則以公制輸入。
#5(SEQ):是否需要自動(dòng)插入行順序號(hào)。
#9(FCV):紙帶格式FS10,否則使用FS11格式(以前程序保存在紙帶上,以打點(diǎn)的格式,不同的孔代表不同的內(nèi)容)
(10)#3007。該變量是利用SETTING或外部信號(hào)輸入設(shè)置各軸的鏡像功能,同時(shí)也可以讀出以查看各軸鏡像,它是一個(gè)8位二進(jìn)制數(shù),輸入時(shí)自動(dòng)分解成二進(jìn)制按位寫(xiě)入。0i系統(tǒng)中起作用的各位見(jiàn)表11。
需要說(shuō)明的是:①值是0時(shí)鏡像無(wú)效,1是有效;②當(dāng)用鏡像信號(hào)和SEETING兩者對(duì)一個(gè)軸設(shè)置鏡像時(shí),信號(hào)值和設(shè)定值相或(其中一個(gè)是1,則為1),然后輸出;③它是一個(gè)寫(xiě)保護(hù)變量,只能在SEETING畫(huà)面設(shè)定,其他方式輸入則產(chǎn)生P/S116“WRITEPROTECTEDVARIABLE”報(bào)警。
表11 0i系統(tǒng)中#3007常用起作用的各位
(11)#3901。該變量是一個(gè)統(tǒng)計(jì)已加工的零件數(shù)(完成數(shù)),可讀可寫(xiě),但不能用負(fù)數(shù)寫(xiě)入。
(12)#3902。該變量可以設(shè)置要求加工的零件數(shù)(目標(biāo)數(shù)),可讀可寫(xiě),但不能用負(fù)數(shù)寫(xiě)入。
(1)GOTON 語(yǔ)句,N的取值范圍是1~99999.如果超出取值范圍,則產(chǎn)生P/S 128報(bào)警。
(2)IF[ ]GOTON 語(yǔ)句,當(dāng)IF方括號(hào)里邊條件滿足時(shí),跳轉(zhuǎn)到N語(yǔ)句的地方。
(3)IF[ ]THEN 語(yǔ)句,當(dāng)IF方括號(hào)里邊條件滿足時(shí),執(zhí)行一個(gè)語(yǔ)句。
(4)WHILE[ ]DOm
當(dāng)WHILE語(yǔ)句方括號(hào)里的條件是滿足時(shí),執(zhí)行DOm~ENDm之間的程序。不滿足執(zhí)行ENDm后邊的程序。
需要說(shuō)明的是:①m取值只能是1,2,3,以外其他值產(chǎn)生報(bào)警P/S 126;②當(dāng)指定了DOm和ENDm,而沒(méi)有指定WHILE[]條件語(yǔ)句時(shí),程序在Dom和ENDm無(wú)限循環(huán);③DOm~ENDm循環(huán)中的標(biāo)號(hào)(m取值1,2,3)可以多次使用,但是不同的條件語(yǔ)句DO范圍不能有重疊,條件轉(zhuǎn)移時(shí)也不能進(jìn)入循環(huán)內(nèi)部,如有重疊或轉(zhuǎn)移進(jìn)入循環(huán)內(nèi)部時(shí)則會(huì)產(chǎn)生P/S 124報(bào)警(圖2)。
以上是對(duì)系統(tǒng)變量以及系統(tǒng)變量運(yùn)算的簡(jiǎn)要敘述,下面以實(shí)例說(shuō)明宏變量的具體使用方法。
為了平衡生產(chǎn),生產(chǎn)中產(chǎn)品夾具一般同時(shí)加工左右2個(gè)產(chǎn)品,分別設(shè)定坐標(biāo)系為G54和G55。由于特殊原因需要單獨(dú)生產(chǎn)左產(chǎn)品或右產(chǎn)品時(shí),需要調(diào)試員去轉(zhuǎn)換程序,調(diào)出左產(chǎn)品程序或右產(chǎn)品程序,加工結(jié)束后還要調(diào)出左右都有的程序,非常麻煩,而且影響生產(chǎn)。新手操作時(shí),還容易出現(xiàn)調(diào)錯(cuò)程序,發(fā)生撞刀事故的風(fēng)險(xiǎn)。為了適合生產(chǎn)要求,利用宏程序解決了上述問(wèn)題。解決過(guò)程如下:
第1步:對(duì)產(chǎn)品夾具進(jìn)行改造,在夾具的防錯(cuò)位置加裝了傳感器,左邊的用A傳感器,來(lái)感知左產(chǎn)品是否存在,作為機(jī)床的輸入點(diǎn)設(shè)定為X1020.1;右邊的用B傳感器,來(lái)感知右產(chǎn)品是否存在,作為機(jī)床的輸入點(diǎn)設(shè)定為X1020.2。
第2步:利用FANUC編程軟件對(duì)PMC梯圖進(jìn)行修改,在合適位置加入如圖3所示的一段程序。
第3步:將不同的狀態(tài)分別編程,作為子程序進(jìn)行調(diào)用。圖4是將不同狀態(tài)進(jìn)行了分解和編程。
狀態(tài)1是2種產(chǎn)品都有,設(shè)定程序?yàn)椋?/p>
圖3 利用FANUC軟件修改PMC梯圖的程序1
圖4 不同狀態(tài)的分解和編程
狀態(tài)2:只有左產(chǎn)品,設(shè)定程序?yàn)椋?/p>
狀態(tài)3:只有右產(chǎn)品,設(shè)定程序?yàn)椋?/p>
第4步:編制主程序,見(jiàn)下列主程序(僅作參考,不同設(shè)備輔助功能不同)
檢查左右產(chǎn)品是否都存在,如存在跳轉(zhuǎn)至程序O0001
檢查左產(chǎn)品是否存在,如存在跳轉(zhuǎn)至程序O0002
檢查右產(chǎn)品是否存在,如存在跳轉(zhuǎn)至程序O0003
通過(guò)以上步驟,可以方便而且不用更改程序就能達(dá)到目的,提高了生產(chǎn)效率和安全性。
圖5左邊是泵體產(chǎn)品,為了保證產(chǎn)品的幾何精度和減少工藝步驟,將其放到帶有4軸的加工中心上進(jìn)行加工。右邊是該產(chǎn)品的工裝夾具。
圖5 泵體加工程序示意
產(chǎn)品工藝及加工過(guò)程要求:① 以產(chǎn)品的X面,Y面定位,從Z面壓緊,同時(shí)C面用擺轉(zhuǎn)油缸壓緊,以免加工Φ20mm時(shí)產(chǎn)品移動(dòng)。②伺服電機(jī)轉(zhuǎn)動(dòng)至90°加工A面以及孔Φ20mm。③完畢之后,伺服電機(jī)帶動(dòng)夾具轉(zhuǎn)動(dòng)到-90°,加工B面,同時(shí)完成M10螺紋加工(要求:在加工上述過(guò)程中,為防止產(chǎn)品在加工過(guò)程中移動(dòng),回轉(zhuǎn)油缸壓緊在產(chǎn)品的C面)。④上述2個(gè)工序完成之后,伺服電機(jī)再轉(zhuǎn)回到0°,松開(kāi)回轉(zhuǎn)油缸,壓腳分別向左右擺轉(zhuǎn)45°,再對(duì)C面進(jìn)行加工,同時(shí)完成M8螺紋的加工。⑤最后壓緊缸松開(kāi),取出產(chǎn)品,并放置新的產(chǎn)品,壓緊缸壓緊產(chǎn)品(注:產(chǎn)品側(cè)面壓緊用按鈕)。
為了實(shí)現(xiàn)上述工藝要求,利用宏程序解決了上述問(wèn)題。
第1步:對(duì)液壓油路進(jìn)行了改進(jìn),主要是在回轉(zhuǎn)油缸夾緊松開(kāi)油路加入了壓力繼電器,進(jìn)行油缸位置的輔助監(jiān)控,以免撞刀,其夾緊壓力用SP1 X1000.0作為壓緊信號(hào)。壓緊動(dòng)作控制用Y1000.0來(lái)控制,放松壓力用SP2 X1000.1作為放松信號(hào),放松動(dòng)作控制用Y1000.1(圖6)。
第2步:利用FANUC編程軟件對(duì)PMC梯圖進(jìn)行了修改,在合適的位置加入了如圖7所示的一段程序。
第3步:根據(jù)工藝要求編制程序
圖6 液壓油路的改進(jìn)
圖7 利用FANUC軟件修改PMC梯圖的程序2
擺轉(zhuǎn)缸是否夾緊檢查,如夾緊轉(zhuǎn)跳到加工程序進(jìn)行加工
如果擺轉(zhuǎn)油缸沒(méi)夾緊則報(bào)警停止。
擺轉(zhuǎn)缸是否放松檢查,如放松跳轉(zhuǎn)到加工程序進(jìn)行加工
如果擺轉(zhuǎn)缸沒(méi)松開(kāi)則報(bào)警停止
通過(guò)這個(gè)程序,你就很容易的達(dá)到了工藝過(guò)程要求。
在生產(chǎn)加工中刀具會(huì)出現(xiàn)磨損,如果檢查后刀具仍可繼續(xù)使用,就需要修改刀具的磨損量,以保證產(chǎn)品尺寸。如果刀具需要更換,則需要修改刀具的幾何尺寸。修改磨損量和修改刀具幾何尺寸,都有可能修改錯(cuò)誤,特別是新職工更容易出現(xiàn)這種情況。修改發(fā)生錯(cuò)誤后,機(jī)床運(yùn)行時(shí)會(huì)出現(xiàn)撞刀和報(bào)廢產(chǎn)品,日常管理發(fā)現(xiàn),修改刀具參數(shù)錯(cuò)誤引起的撞刀故占總事故率的5%左右。為了減少該類事故的發(fā)生,利用宏程序,將刀具參數(shù)變化量限制到1mm,磨耗變化量限制在0.05mm之內(nèi)。如果修改量超出控制范圍,將出現(xiàn)報(bào)警,停止運(yùn)行(圖8)。具體操作如下(僅以長(zhǎng)度為例說(shuō)明)。
第1步:從圖8a)可以看出,該程序的T1用的是H8(程序的第5行),對(duì)應(yīng)下圖中應(yīng)該是8#刀偏,其具體尺寸是形狀H=-428.8,磨損 H=-0.020。
第2步:通過(guò)查看上邊表4,該刀具參數(shù)宏變量對(duì)應(yīng)是#11008和#10008。
第3步:如果刀具長(zhǎng)度更改量控制在±1mm,那么#11008應(yīng)-429.8≤#11008≤-427.8。如果長(zhǎng)度磨損更改量控制在±0.05mm,那么#10008應(yīng)在-0.08≤#10008≤+0.03。
第4步:宏程序編寫(xiě)如下:
圖8 程序與刀具參數(shù)
宏程序在設(shè)備中應(yīng)用相當(dāng)廣泛,本文通過(guò)對(duì)FANUC 0i系統(tǒng)B-6351C宏變量運(yùn)算、接口系統(tǒng)變量以及對(duì)應(yīng)的接口地址等等說(shuō)明,加入作者自己的注解和理解,同時(shí)通過(guò)實(shí)際應(yīng)用實(shí)例進(jìn)行解說(shuō),敘述了宏程序在產(chǎn)品加工中的應(yīng)用,對(duì)實(shí)際工作有一定借鑒意義。
TP271+.4
B
〔編輯 吳建卿〕