第一講:參數(shù)編程基礎(chǔ) 0 前言 《參數(shù)編程》課程說(shuō)明:參數(shù)編程屬于高階的數(shù)控手工編程方法,在實(shí)際生產(chǎn)中有著較廣泛的應(yīng)用空間,同時(shí)在數(shù)控工種的《國(guó)家技能鑒定標(biāo)準(zhǔn)》中,也是較重要的環(huán)節(jié)。本課程著重于參數(shù)編程的基礎(chǔ)知識(shí)和應(yīng)用實(shí)例,并通過(guò)在實(shí)訓(xùn)環(huán)節(jié)中的應(yīng)用,使學(xué)員能夠在較短的時(shí)間內(nèi)掌握參數(shù)編程的基本方法和一般規(guī)律,擴(kuò)展解決特定加工難題和工藝難題的能力,進(jìn)一步提高自身的編程和工藝水平。 1 參數(shù)編程基本概念 1.1 參數(shù)編程是做什么的? 問(wèn)題1:數(shù)控加工最本質(zhì)關(guān)鍵的是什么? 用數(shù)(數(shù)字量)來(lái)控制,數(shù)控加工的整個(gè)工藝過(guò)程(工件、機(jī)床、夾具、刀具等)最終都要轉(zhuǎn)化為數(shù)字量(數(shù)值、數(shù)據(jù)),通過(guò)數(shù)字量來(lái)控制機(jī)床完成對(duì)工件的加工。數(shù)是關(guān)鍵,也就是說(shuō)沒(méi)有數(shù)據(jù)就沒(méi)法控制,沒(méi)有高質(zhì)量的數(shù)據(jù)就沒(méi)有高質(zhì)量的產(chǎn)品。高質(zhì)量、高可靠性的數(shù)據(jù)是產(chǎn)品高質(zhì)量的前提保證,越是高精尖的零件加工越是對(duì)數(shù)據(jù)的要求高。 問(wèn)題2:數(shù)從何而來(lái)? 測(cè)量、計(jì)算而來(lái),得到數(shù)的方法、手段是我們從事數(shù)控機(jī)加必須掌握、具備的基本技能,是我們天天要研究、琢磨的事。 三大手段:①簡(jiǎn)單的通過(guò)手工計(jì)算;②復(fù)雜的借助CAD/CAM軟件;③編寫(xiě)程序通過(guò)數(shù)控機(jī)床自動(dòng)計(jì)算(發(fā)揮計(jì)算機(jī)的本質(zhì),基本所有操作系統(tǒng)都能實(shí)現(xiàn),就是參數(shù)編程,本課程的學(xué)習(xí)內(nèi)容)。 現(xiàn)在我們?cè)倩卮疬@個(gè)問(wèn)題:參數(shù)編程是做什么的?是處理數(shù)控加工中所用到的數(shù)據(jù)的。 0 1 1.2 參數(shù)編程的應(yīng)用 參數(shù)編程可理解成數(shù)控系統(tǒng)對(duì)用戶的開(kāi)放,讓用戶可以對(duì)數(shù)控系統(tǒng)進(jìn)行一定功能的擴(kuò)展。應(yīng)用歸納為: ①零件家族:大量結(jié)構(gòu)形狀相似,而只是尺寸、位置、角度上有差異的零件,編制通用程序,只要通過(guò)修改其中一個(gè)或幾個(gè)參數(shù)來(lái)實(shí)現(xiàn)不同零件的加工 ②固定循環(huán):鉆、車(chē)、銑、陣列等循環(huán),機(jī)床現(xiàn)有和沒(méi)有的,開(kāi)發(fā)宏程序 ③復(fù)雜運(yùn)動(dòng):機(jī)床不具備的復(fù)雜運(yùn)動(dòng),曲線、曲面加工 ④驅(qū)動(dòng)機(jī)床附件:如測(cè)頭在線測(cè)量、實(shí)現(xiàn)自動(dòng)找正、防錯(cuò)等的功能 ⑤優(yōu)化程序:便于編輯,通過(guò)對(duì)關(guān)鍵數(shù)據(jù)的處理(傳輸、運(yùn)算、判斷)提高數(shù)據(jù)、程序的高質(zhì)量和高可靠性,進(jìn)行加工質(zhì)量控制。 1 1.3 兩個(gè)基本概念 概念一:參數(shù),也叫變量。 變量,數(shù)學(xué)上的概念,(按某種數(shù)學(xué)規(guī)律)變化的量,相對(duì)常量來(lái)說(shuō)。 數(shù)控是用數(shù)字量來(lái)控制機(jī)床運(yùn)動(dòng)。數(shù)字量:常數(shù)和變量。數(shù)控為什么要用變量?常量控制一個(gè)固定的指令、加工位置(尺寸)、零件。變量,可根據(jù)用戶需要進(jìn)行更加靈活的控制,擴(kuò)展性、柔性更強(qiáng)。 注意:不要和機(jī)床(的技術(shù))參數(shù)概念混淆。 概念二:宏程序,由機(jī)床廠家或用戶編制的參數(shù)程序,實(shí)現(xiàn)某一特定功能,由專用指令(宏指令)調(diào)用。 FANUC系統(tǒng)有此明確的定義,西門(mén)子、海德漢系統(tǒng)無(wú)此定義,統(tǒng)稱參數(shù)程序。 1.4 參數(shù)編程的特性 參數(shù)編程歸根到底還算手工編程的范疇,但和我們平時(shí)一般的手工編程不太一樣,有其自身的特性。 ①計(jì)算機(jī)有關(guān)的特征 參數(shù)編程與計(jì)算機(jī)高級(jí)語(yǔ)言編程很相似,具有許多與計(jì)算機(jī)有關(guān)的特征,如變量賦值、算數(shù)邏輯運(yùn)算、循環(huán)、轉(zhuǎn)跳等指令。 ②CNC有關(guān)的特性 這種編程語(yǔ)言應(yīng)用于CNC控制系統(tǒng)環(huán)境下,還具有許多與CNC有關(guān)的特性,通過(guò)編制用戶化的宏程序(宏指令),可以使CNC用戶直接與CNC控制系統(tǒng)聯(lián)系,如刀具偏置、工件零點(diǎn)、各軸的位置等數(shù)據(jù)進(jìn)行主動(dòng)讀寫(xiě)、運(yùn)算,而僅用G、M指令編程是不可能有這些功能的。 所以,參數(shù)編程表面看起來(lái)很高深,看似很神秘,可一旦我們掌握了最基本的方法以后,它其實(shí)并不難,并不神秘。
第一節(jié)FANUC (0i)系統(tǒng)參數(shù)編程基礎(chǔ) 1、變量 在宏程序中設(shè)置了變量,即將變量賦給一個(gè)地址。
(1)變量的表示 b、變量還可以用“#”號(hào)和跟隨其后的變量表達(dá)式來(lái)表示:#[表達(dá)式m] 這里的m必須是如下的一種: 數(shù)值 #[123] 變量 #[#123] 運(yùn)算式 #[#123+#321] 表達(dá)式 #[[#123+#321]*#123] 函數(shù) #[SIN[#123]] 使用變量表達(dá)式時(shí):“#”號(hào)后必須緊隨“[”
#500~#531。 FANUC系統(tǒng)不同版本其變量序號(hào)數(shù)量各不相同,高級(jí)版本其公共變量序號(hào)可到#999; 其中#100~#131公共變量在電源斷電后即清零,重新開(kāi)機(jī)時(shí)被設(shè)置為“0”; #500~#531公共變量即使斷電后,它們的值也保持不變,因此也稱為保持型變量。 2)局部變量#1~#33 在FANUC系統(tǒng)中提供了G65宏指令,該指令使用地址碼加數(shù)字組成: 如:G65 P666 L10X10. Y11. Z12. I13. I14. 其中: P666 子程序號(hào) L10 子程序調(diào)用次數(shù) X10. #24=10. Y11. #25=11. Z12. #26=12. I13. #4=13. I14. #7=14. 也就是說(shuō):當(dāng)把自變量作為一個(gè)局部變量引入宏子程序時(shí),可用相應(yīng)的地址碼指定所需的數(shù)據(jù),此時(shí)如X、Y、Z等其后面的數(shù)值已不再是相應(yīng)的坐標(biāo)數(shù)值了,即與地址碼無(wú)關(guān)了,而是給地址碼所對(duì)應(yīng)的變量賦值。 自變量分為I和II型兩類; ——其中I、J、K必須按順序指定; ——I和II型混用時(shí),如果指定了兩個(gè)自變量,那么最后一個(gè)起作用 自變量類型I:地址碼和變量號(hào)之間的關(guān)系
自變量類型II:地址碼和變量號(hào)之間的關(guān)系
3)系統(tǒng)變量 這一變量在不同程序級(jí)中調(diào)用時(shí)含義相同。因此,一個(gè)宏程序中經(jīng)計(jì)算得到的一個(gè)通用變量的數(shù)值,可以被另一個(gè)宏程序應(yīng)用。 變量能用于除O、N和/的所有地址。 #i=ROUND[#j] 四舍五入取整數(shù) #i=FIX[#j] 舍去小數(shù)部分取整數(shù)
3、控制指令 (1)條件轉(zhuǎn)移
4、宏指令的設(shè)置 (1)用 G代碼調(diào)用宏程序 在參數(shù)中設(shè)置調(diào)用宏程序的 G 代碼,與非模態(tài)調(diào)用(G65)同樣的方法用該代碼調(diào)用宏程序。 說(shuō)明 在參數(shù)(No.6050到No.6059)中設(shè)置調(diào)用用戶宏程序(O9010到9019)的G代碼號(hào)(從 1到9999),調(diào)用戶宏程序的方法與G65 相同。例如,設(shè)置參數(shù),使宏程序 O9010 由 G81 調(diào)用,就可以調(diào)用由用戶宏程序編制的加工循環(huán)。
· 參數(shù)號(hào)與程序號(hào)之間的對(duì)應(yīng)關(guān)系 程序號(hào) 參數(shù)號(hào) O9010 6050 O9011 6051 O9012 6052 O9013 6053 O9014 6054 O9015 6055 O9016 6056 O9017 6057 O9018 6058 O9019 6059
·重復(fù) 與非模態(tài)調(diào)用一樣,地址 L可以指定從 1 到9999 的重復(fù)次數(shù)。
· 自變量指定 與非模態(tài)調(diào)用一樣,兩種自變量指定是有效的:自變量指定Ⅰ和自變量指 定Ⅱ。根據(jù)使用的地址自動(dòng)地決定自變量的指定類型。
限制 · 使用 G代碼的宏調(diào)用的嵌套 在 G 代碼調(diào)用的程序中,不能用 G 代碼調(diào)用宏程序。這種程序中的 G 代碼被處理為普通 G 代碼。在用 M 或 T 代碼作為子程序調(diào)用的程序中,不能用 G 代碼調(diào)用宏程序。這種程序中的 G 代碼也處理為普通G 代碼。
(2)用 M代碼調(diào)用宏程序 在參數(shù)中設(shè)置調(diào)用宏程序的 M代碼,與非模態(tài)調(diào)用(G65)的方法一樣用該代碼調(diào)用宏程序。 說(shuō)明 在參數(shù)(No.6080 到No.6089)中設(shè)置調(diào)用用戶宏程序(O9021到O9029)的M代碼(從 1 到 9999),用戶宏程序能與G65 同樣的方法調(diào)用。
·參數(shù)號(hào)和程序號(hào)之間的對(duì)應(yīng)關(guān)系 程序號(hào) 參數(shù)號(hào) O9020 6080 O9021 6081 O9022 6082 O9023 6083 O9024 6084 O9025 6085 O9026 6086 O9027 6087 O9028 6088 O9029 6089
·重復(fù) 與非模態(tài)調(diào)用一樣,地址 L可以指定從 1 到9999 的重復(fù)次數(shù)。
· 自變量指定 與非模態(tài)調(diào)用一樣,兩種自變量的指定是有效的:自變量指定Ⅰ和自變量 指定Ⅱ。根據(jù)使用的地址自動(dòng)地決定自變量指定的類型。
· 調(diào)用宏程序的M代碼必須在程序段的開(kāi)頭指定。 限制 · 用G代碼調(diào)用的宏程序或用M代碼或T代碼作為子程序調(diào)用的程序中,不能用 M 代碼調(diào)用宏程序。這種宏程序或程序中的 M 代碼被處理為普通的M代碼。
第二節(jié)SINUMERIK (840D)系統(tǒng)參數(shù)編程基礎(chǔ) 1 參數(shù) 一般西門(mén)子系統(tǒng)供用戶自由使用的R參數(shù)范圍為R0~R99。 2 零點(diǎn)數(shù)據(jù)的讀寫(xiě) 通過(guò)找正得到的工件零點(diǎn)內(nèi)的任何一個(gè)數(shù)據(jù),都可以通過(guò)系統(tǒng)參數(shù)進(jìn)行可編程的讀出和寫(xiě)入的操作。 1 2 2.1讀取零點(diǎn)數(shù)值 R51=$p_uifr[1,x,tr] [ ]內(nèi):“1”表示修改G54中的坐標(biāo); $P_UIFR[0] 對(duì)應(yīng)G500 $P_UIFR[1] 對(duì)應(yīng)G54 $P_UIFR[2] 對(duì)應(yīng)G55 …依次累推 “X”表示修改X軸的坐標(biāo); “TR”表示實(shí)際值。 $p_uifr[3,Z,RT] RT :表示工件坐標(biāo)系旋轉(zhuǎn)角度 Z-ROT $P_UIFR[1, X,FI] “FI”:表示修正值 2.2寫(xiě)入零點(diǎn)數(shù)值 $p_uifr[1,x,tr]=R1 將參數(shù)R1中的數(shù)值寫(xiě)入零點(diǎn)G54的X軸。 例如:想要設(shè)定G54中的X偏置值為10,Y軸的偏置值為20,Z軸的偏置值為30,具體編程指令如下: $P_UIFR[1, X, TR] =10 $P_UIFR[1, Y, TR]=20 $P_UIFR[1, Z, TR]=30
3 運(yùn)算功能
4. 跳轉(zhuǎn) 4.1無(wú)條件跳轉(zhuǎn) GOTOB __向后跳轉(zhuǎn)至標(biāo)簽__(方向:程序起始) GOTOF __向前跳轉(zhuǎn)至標(biāo)簽__(方向:程序結(jié)束) 1 2 3 4 4.2有條件程序跳轉(zhuǎn) IF 表達(dá)式 GOTOB __ IF 表達(dá)式 GOTOF __
5 循環(huán)功能 WHILE 比較運(yùn)算 NC 程序段 ENDWHILE 符合條件時(shí),執(zhí)行WHILE 程序循環(huán)。
第三節(jié) HEIDENHAIN (iTNC530)系統(tǒng)參數(shù)編程基礎(chǔ) 1 Q參數(shù)的功能范圍 Q參數(shù)由字母Q和0到399之間的數(shù)字組成,分為3個(gè)值域:
2 零點(diǎn)數(shù)據(jù)的讀寫(xiě) 通過(guò)找正得到的工件零點(diǎn)內(nèi)的任何一個(gè)數(shù)據(jù),都可以通過(guò)系統(tǒng)參數(shù)進(jìn)行可編程的讀出和寫(xiě)入的操作。 2 2.1讀取系統(tǒng)參數(shù) FN18:SYS-DATUM READ Qn=ID_ NR_IDX_ 將讀取的某一系統(tǒng)參數(shù)存入指定的Q參數(shù)中,Qn(n=0~99) ID編號(hào):每一組系統(tǒng)參數(shù)對(duì)應(yīng)的一個(gè)ID編號(hào) NR序號(hào):每一組系統(tǒng)參數(shù)所包含的各項(xiàng)系統(tǒng)參數(shù)的序號(hào) IDX索引號(hào):每些項(xiàng)系統(tǒng)參數(shù)下所包含的對(duì)應(yīng)某一具體系統(tǒng)參數(shù)的索引號(hào) 系統(tǒng)參數(shù)所對(duì)應(yīng)的各編號(hào),可通過(guò)系統(tǒng)參數(shù)表查找。詳見(jiàn)《HEIDENHAIN編程手冊(cè)》,此處略。 僅列出找正操作的常用系統(tǒng)參數(shù)。
例:讀取零點(diǎn)表數(shù)據(jù) FN18:SYSREAD Q1=ID 503 NR1 IDX1 執(zhí)行上述指令,讀取零點(diǎn)表PRESET.PR中第一組零點(diǎn)的X軸數(shù)值,并存入?yún)?shù)Q1中。 參數(shù)含義: ID 503:ID號(hào)503表示零點(diǎn)表PRESET.PR數(shù)據(jù) NR1:編號(hào)1表示零點(diǎn)表PRESET.PR中第一組,第二組則為NR2,依次類推 IDX1:索引號(hào)1表示第一軸(X軸),第二軸(Y軸)則為IDX2,依次類推 2.2寫(xiě)入系統(tǒng)參數(shù) FN17:SYS WRITE ID_ NR_ IDX_= Qn 將某一Q參數(shù)中的數(shù)值寫(xiě)入到指定的系統(tǒng)參數(shù)中。 系統(tǒng)參數(shù)所對(duì)應(yīng)的各編號(hào)同上。 例:寫(xiě)入零點(diǎn)表數(shù)據(jù) FN17:SYS WRITE ID 503 NR1 IDX1=Q1 參數(shù)含義同上。 執(zhí)行上述指令,將參數(shù)Q1中的數(shù)值寫(xiě)入零點(diǎn)表PRESET.PR中第二組零點(diǎn)的X軸。 3 測(cè)量結(jié)果的調(diào)用 測(cè)量循環(huán)運(yùn)行后的當(dāng)前測(cè)量結(jié)果會(huì)保存在特定的Q參數(shù)中,見(jiàn)下表。這些Q參數(shù)可直接被用于參數(shù)編程來(lái)處理。 測(cè)量循環(huán)測(cè)量結(jié)果
4 基本運(yùn)算功能
5 三角函數(shù)
6 輸入公式 調(diào)用FORMULA(公式)功能,可直接輸入算式。
7 計(jì)算圓 7.1三個(gè)點(diǎn)確定圓 FN23:Q20=CDATA Q30 圓上3點(diǎn)的坐標(biāo)必須依次成對(duì)存入?yún)?shù)Q30和后而的5個(gè)參數(shù),即Q30~Q35。 然后,TNC將計(jì)算得到的圓心坐標(biāo)X值存入?yún)?shù)Q20, Y值存入?yún)?shù)Q21,將圓半徑存入?yún)?shù)Q22。 1 2 7.2四點(diǎn)確定圓 FN24:Q20=CDATA Q30 圓上4點(diǎn)的坐標(biāo)必須依次成對(duì)存入?yún)?shù)Q30和后而的7個(gè)參數(shù),即Q30~Q37。 然后,TNC將計(jì)算得到的圓心坐標(biāo)X值存入?yún)?shù)Q20, Y值存入?yún)?shù)Q21,將圓半徑存入?yún)?shù)Q22。 8 判斷-轉(zhuǎn)移功能 8.1無(wú)條件轉(zhuǎn)移 無(wú)條件轉(zhuǎn)移指令通過(guò)輸入一個(gè)完全滿足的條件進(jìn)行轉(zhuǎn)移指令編程。例: FN9:IF+1 EQ +1 GOTO LBL 5
1 2 3 4 5 6 7 8 8.2條件轉(zhuǎn)移
9 輸出錯(cuò)誤信息 FN14:ERROR=_
例:FN14:ERROR=1004(超出范圍) 10 直接設(shè)置當(dāng)前工件零點(diǎn) FN25:PRESET=__/__/__:對(duì)某一軸設(shè)置新工件零點(diǎn) 例:在當(dāng)前坐標(biāo)X+100上設(shè)置新零點(diǎn)。 FN25:PRESET=X/+100/+0 例:將當(dāng)前坐標(biāo)Z+50設(shè)置成新工件零點(diǎn)下的值為-20 FN25:PRESET=Z/+50/-20 11 檢查和修改Q參數(shù) 在試運(yùn)行、程序連續(xù)運(yùn)行和程序單步運(yùn)行模式下,可檢查和修改Q參數(shù)。 步驟 如果程序在運(yùn)行過(guò)程中,則根據(jù)需要中斷程序運(yùn)行(如按機(jī)床STOP(停止)按扭和lNTERNAL STOP(內(nèi)部停止)軟鍵)。如果程序在試運(yùn)行過(guò)程中,要中斷程序試運(yùn)行。 按Q鍵或Q lNF0軟鍵顯示Q參數(shù)列表,TNC列出所有參數(shù)和其當(dāng)前值。使用箭頭鍵(光標(biāo)移動(dòng)鍵)或翻頁(yè)鍵,可逐頁(yè)轉(zhuǎn)到所需的參數(shù)。 要想改變數(shù)值,輸入新值,用ENT鍵確認(rèn)。 不想改變值,按END鍵退出參數(shù)列表界面。 第四節(jié) 參數(shù)編程舉例 設(shè)計(jì)鉆孔循環(huán) G181 R_Z_B_H_F_ R-#18 Z-#26 B-#2 H-#11 F-#9 程序一: O9010 #100=#2+#18(R) #101=#2-#26(Z) #102=#2+#11(R) G0Z#100 G1Z#101F#9 G0Z#102 M99 程序二: O9010 #18=ABS[#18] #26=ABS[#26] #11=ABS[#11] #100=#2+#18(R) #101=#2-#26(Z) #102=#2+#11(R) G0Z#100 G1Z#101F#9 G0Z#102 M99 程序三: O9010 IF[#18 EQ #0] THEN #18=2 IF[#26 EQ #0] GOTO 1 IF[#2 EQ #0] GOTO 2 IF[#11 EQ #0] GOTO 3 IF[#9 EQ #0] GOTO 4 #18=ABS[#18] #26=ABS[#26] #11=ABS[#11] #100=#2+#18(R) #101=#2-#26(Z) #102=#2+#11(H) G0Z#100 G1Z#101F#9 G0Z#102 M99 N1 #3000=1(NO VALUE IN Z) N2 #3000=2(NO VALUE IN B) N3 #3000=3(NO VALUE IN H) N4 #3000=4(NO VALUE IN F)
|
|