新代數(shù)控車床宏程序說明.doc_第1頁
新代數(shù)控車床宏程序說明.doc_第2頁
新代數(shù)控車床宏程序說明.doc_第3頁
新代數(shù)控車床宏程序說明.doc_第4頁
新代數(shù)控車床宏程序說明.doc_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

一用戶宏程序的基本概念用一組指令構(gòu)成某功能,并且象子程序一樣存儲(chǔ)在存儲(chǔ)器中,再把這些存儲(chǔ)的功能由一個(gè)指令來代表,執(zhí)行時(shí)只需寫出這個(gè)代表指令,就可以執(zhí)行其相應(yīng)的功能。 在這里,所存儲(chǔ)的一組指令叫做宏程序體(或用戶宏程序),簡稱為用戶宏。其代表指令稱為用戶宏命令,也稱作宏程序調(diào)用指令。用戶宏有以下四個(gè)主要特征:1)在用戶用戶宏程序中可以使用變量,即宏程序體中能含有復(fù)雜的表達(dá)式;2)能夠進(jìn)行變量之間的各種運(yùn)算;3)可以用用戶宏指令對(duì)變量進(jìn)行賦值,就象許多高級(jí)語言中的帶參函數(shù)或過程,實(shí)參能賦值給形參;4)容易實(shí)現(xiàn)程序流程的控制。使用用戶宏時(shí)的主要方便之處在于由于可以用變量代替具體數(shù)值,因而在加工同一類的工件時(shí)只得將實(shí)際的值賦予變量既可,而不需要對(duì)每個(gè)不同的零件都編一個(gè)程序。二 基本書寫格式數(shù)控程序文檔中,一般以“%”字符作為第一行的起頭,該行將被視為標(biāo)題行。當(dāng)標(biāo)題行含有關(guān)鍵字“MACRO”時(shí)整個(gè)文檔就會(huì)以系統(tǒng)所定義的MACRO語法處理。如果該行無“MACRO”關(guān)鍵詞此檔案就會(huì)被視為一般ISO程序文檔格式處理,此時(shí)將不能編寫用戶宏和使用其MACRO語法。而當(dāng)書寫ISO程序文檔時(shí)標(biāo)題行一般可以省略,直接書寫數(shù)控程序?!癕ACRO”關(guān)鍵詞必須是大寫字母。對(duì)于程序的注釋可以采用“/”的形式,這和高級(jí)語言C+一樣。例一:MACRO格式文檔% MACRO /用戶宏程序文檔,必須包含“MACRO”關(guān)鍵詞IF 1 = 1 THENG00 X100.;ELSEG00 Z100.;END_IF;M99;例二:ISO格式文檔% 這是標(biāo)題行,可當(dāng)作檔案用途說明,此行可有可無G00 X100.;G00 Z100.;G00 X0;G00 Z0;M99;三 用戶宏程序的編寫如前所述,變量是指可以在用戶宏程序中的地址碼后代替具體數(shù)值,在調(diào)用宏程序時(shí)進(jìn)行賦值的符號(hào)i (i1,2,3,)。使用變量可以使用戶宏程序具有通用性。用戶宏程序中可以使用多個(gè)變量,以變量編號(hào)進(jìn)行識(shí)別。1、 變量的形式變量是用符號(hào)或后面加上變量編號(hào)所構(gòu)成的,即:i(i1,2,3,)例如:5 109 1005也可用表達(dá)式的形式來表示。例如:#100 #10011 #6/2其實(shí),通過用符號(hào)后面加上變量編號(hào)也可構(gòu)成的變量,即: i(i1,2,3,)例如:5 5但一般地,由符號(hào)后面加上變量編號(hào)構(gòu)成的變量稱為全局變量,不提倡在用戶宏程序中使用,具體見后面的介紹。2、 變量的引用在地址符后的數(shù)值可以用變量置換。例如:若寫成F#33,則當(dāng)331.5時(shí),與F1.5相同。若寫成Z#18,則當(dāng)1820.0時(shí),與Z20.0相同。但需要注意,作為地址符的O、N、等,不能引用變量。例如,O#27、N#1等,都是錯(cuò)誤的。3、 未定義變量尚未被定義的變量,被稱為空(VACANT)。變量0,0 始終為空,經(jīng)常被用作空變量使用。3變量賦值和引數(shù)賦值變量賦值:用戶宏程序中變量賦值使用賦值運(yùn)算符“:=”,不可僅用“=”符號(hào)。因?yàn)樵诒鞠到y(tǒng)中符號(hào)“=” 是被規(guī)定為關(guān)系運(yùn)算符,用來比較是否相等的。例如#30:=100,會(huì)將變量#30賦值為整數(shù)100;而#30=100,將不能為變量#30賦值,實(shí)際上是比較變量#30是否與整數(shù)100相等。四變量運(yùn)算及變量表達(dá)式用戶宏運(yùn)算符要對(duì)變量進(jìn)行各種運(yùn)算操作就要用到運(yùn)算符,它是“能對(duì)變量所存數(shù)據(jù)進(jìn)行運(yùn)算的符號(hào)”。本系統(tǒng)的運(yùn)算符及其優(yōu)先級(jí)如表3-2所示。表3-2 運(yùn)算符及其優(yōu)先級(jí)運(yùn)算名符號(hào)優(yōu)先級(jí)括號(hào)( ), 1函數(shù)調(diào)用運(yùn)算( )2取負(fù)-3求補(bǔ)運(yùn)算NOT3乘法運(yùn)算*4除法運(yùn)算/4模運(yùn)算/求余運(yùn)算MOD4加法運(yùn)算+5減法運(yùn)算-5關(guān)系運(yùn)算,=6相等運(yùn)算=7不等運(yùn)算8布爾邏輯/按位與&,AND9布爾邏輯/按位 異或XOR10布爾邏輯/按位 或OR11、基本算數(shù)運(yùn)算符(1) +(加法運(yùn)算符,如3+5,#12+4)(2) -(減法運(yùn)算符,或取負(fù)運(yùn)算符,如#33-16,-#16)(3) *(乘法運(yùn)算符,如9*2,#13*8)(4) /(除法運(yùn)算符,如10/3,#43/15)(5)MOD (模運(yùn)算符,或稱求余運(yùn)算符,其兩側(cè)均應(yīng)為整型數(shù)據(jù),如7 MOD4的值為3,當(dāng)#18=20時(shí)#18 MOD4的值為2)、算術(shù)表達(dá)式和運(yùn)算符優(yōu)先級(jí)用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來的、符合語法規(guī)則的式子稱為算術(shù)表達(dá)式,運(yùn)算對(duì)象可以是常數(shù)、變量、函數(shù)等。例如:#6*8/#32-1.5+#18+ ROUND(1)這就是一個(gè)算術(shù)運(yùn)算式,它可以作為一個(gè)整體賦值給某個(gè)變量,或用作其他表達(dá)式中的一個(gè)運(yùn)算對(duì)象。本系統(tǒng)按表表3-2規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。在表達(dá)式求值時(shí),先按運(yùn)算符的優(yōu)先級(jí)別高低次序執(zhí)行,例如先乘除后加減。如表達(dá)式#12-#41*5的左側(cè)為減,右側(cè)為乘號(hào),而乘號(hào)優(yōu)先于減號(hào),因此,相當(dāng)于#12-(#41*5)。如果在一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先級(jí)別相同,如#2-5+#23,則按規(guī)定的結(jié)合性(結(jié)合方向)處理,算術(shù)運(yùn)算符的結(jié)合方向?yàn)椤白宰笾劣摇?,即先左后右。因?先與減號(hào)結(jié)合,執(zhí)行#2-5的運(yùn)算,再執(zhí)行加#23的運(yùn)算。這樣“自左至右的結(jié)合方向”又稱為“左結(jié)合性”,即運(yùn)算對(duì)象先與左面的運(yùn)算符結(jié)合;對(duì)應(yīng)地,也有“右結(jié)合性”的運(yùn)算符,例如賦值運(yùn)算符“:=”就是。、關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符是邏輯運(yùn)算中比較簡單的一種。所謂“關(guān)系運(yùn)算”實(shí)際上就是“比較運(yùn)算”。將兩個(gè)值進(jìn)行比較,判斷比較的結(jié)果是否符合給定的條件。例如,#310是一個(gè)關(guān)系表達(dá)式,大于號(hào)()是一個(gè)關(guān)系運(yùn)算符,如果#3=12,則滿足給定的“#310”條件,因此關(guān)系表達(dá)式的值為“真”(即“條件滿足”);如果#3=6,不滿足“#310”條件,則稱關(guān)系表達(dá)式的值為“假”。本系統(tǒng)提供6種關(guān)系運(yùn)算符:優(yōu)先級(jí)相同(高)優(yōu)先級(jí)(較高)優(yōu)先級(jí)(低) (1) (小于) (2) (大于)(4) = (大于或等于)(5) = (等于)(6) (不等于)關(guān)于優(yōu)先次序:1、前4種關(guān)系運(yùn)算符(,)的優(yōu)先級(jí)別相同,它們卻高于關(guān)系運(yùn)算符“=”,而“=”又高于“”2、關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符。3、關(guān)系運(yùn)算符的優(yōu)先級(jí)高于賦值運(yùn)算符。用兩個(gè)關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來的式子,稱為關(guān)系表達(dá)式。例如:#636,#13+4#23關(guān)系表達(dá)式的值是一個(gè)邏輯值,即“真”或“假”。例如,若#12為8,則關(guān)系表達(dá)式“#12=10”的值為“假”,“#12=6”的值為“真”。、邏輯運(yùn)算和邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或邏輯量連接起來就是邏輯表達(dá)式。本系統(tǒng)提供6種邏輯運(yùn)算符和邏輯運(yùn)算(1) &,AND 邏輯與(2) XOR 邏輯或(3) OR 邏輯異或它們都是“雙目(元)運(yùn)算符”,它要求有兩個(gè)運(yùn)算量(操作數(shù)),邏輯運(yùn)算舉例如下:#1 AND #2 若#1 、#2為真,則#1 AND #2為真。#1 OR #2 若#1 、 #2之一為真,則#1 XOR #2為真。邏輯運(yùn)算符低于關(guān)系運(yùn)算符,見圖3-1。(高)(低)算術(shù)運(yùn)算符關(guān)系運(yùn)算符邏輯運(yùn)算符賦值運(yùn)算符圖3-1五 用戶宏程序的流程控制所謂程序的流程(Flow Control)是通過控制程序的執(zhí)行方向,進(jìn)而掌握程序動(dòng)態(tài)。這用戶宏程序區(qū)別于一般數(shù)控程序的特征之一,也是用戶選擇用戶宏程序編寫數(shù)控代碼的一大理由。用戶宏程序的流程控制包括無條件判斷、循環(huán)控制、無條件轉(zhuǎn)移三大類,這與其他的高級(jí)語言程序類似,下面將分別介紹其功能和使用語法。、條件判斷判斷條件的真假,然后根據(jù)真假或者對(duì)應(yīng)情況到指定的地方去執(zhí)行程序,這方面的語句有IF和CASE語句。1、IF條件語句1)基本語法:IF THENELSEIF THENELSEEND_IF;說明:IF條件判斷,根據(jù)真假情況到指定的地方去執(zhí)行程序。例如:% MACRO/ 啟動(dòng)MACRO語法#1 := 3.0;G01 X20. 15. F200;IF #1 = 1 THEN;X(1.0*1);(1.0*1);ELSEIF #1 = 2 THEN;X(1.0*2);(1.0*2);ELSEIF #1 = 3 THEN;X(1.0*3);(1.0*3);ELSE;X(1.0*4);(1.0*4);END_IF;X(1.0)(1.0);M30;然而在實(shí)際使用中,可以有以下一些變形:2)變形1語法:IF THENELSEEND_IF;3)變形2語法:IF THENEND_IF;編程時(shí)可根據(jù)需要選擇合適的語法格式。、循環(huán)控制1、REPEAT直到型循環(huán)語法:REPEATUNTIL END_REPEAT;說明:REPEAT直到型循環(huán)控制,先執(zhí)行循環(huán)體,后判斷條件表達(dá)式,當(dāng)條件滿足時(shí)退出循環(huán)。例如:% MACRO/ 啟動(dòng)MACRO語法#10 := 30.;#11 := 22.5.;#12 := #10/2;#13 := #11/2;#14 := 2.0;#15 := 1.5;G01 X#12 #13 F200.0;REPEAT G00 X(#12+#14) (#13+#15); G01 X(#12+#14) (#13-#15); X(#12-#14) (#13-#15); X(#12-#14) (#13+#15); X(#12+#14) (#13+#15); #14 := #14 + 2.0; #15 := #15 + 1.5;UNTIL (#14 #12) OR (#15 #13) END_REPEAT;X(1.0) (1.0);M30;.WHILE當(dāng)型循環(huán)語法:WHILE DOEND_WHILE;說明:WHILE當(dāng)型循環(huán)控制,先判斷條件表達(dá)式,當(dāng)條件滿足時(shí)執(zhí)行循環(huán)體,否則退出循環(huán)。例如:% MACRO;#10 := 20.;#11 := 15.;#12 := #10/2;#13 := #11/2;#14 := 2.0;#15 := 1.5;G01 X#12 #13 F200.0;WHILE (#14 = #12) AND (#15 6.0 THENEXIT;END_IF;X(#12-#14) (#13+#15);X(#12+#14) (#13+#15);#14 := #14 + 2.0;#15 := #15 + 1.5;END_WHILE;X(-5.0) Z(5.0);M02;.FOR循環(huán)語法:FOR := TO BY DOEND_FOR;說明:FOR循環(huán)控制,式中各參數(shù)意義如下循環(huán)變量控制循環(huán)次數(shù)的變量;表達(dá)式1循環(huán)計(jì)數(shù)的起始值,可為整數(shù)或表達(dá)式;表達(dá)式2循環(huán)計(jì)數(shù)的終止值,可為整數(shù)或表達(dá)式;表達(dá)式3循環(huán)計(jì)數(shù)每次的累加值,可為整數(shù)或表達(dá)式;循環(huán)體 循環(huán)每次執(zhí)行內(nèi)容;FOR循環(huán)執(zhí)行過程為:先給循環(huán)變量賦起始值,然后判斷循環(huán)變量是否為終止值,當(dāng)循環(huán)變量已為終止值時(shí)退出循環(huán),否則執(zhí)行循環(huán)體,再對(duì)循環(huán)變量加上每次累加值,、無條件轉(zhuǎn)移GOTO轉(zhuǎn)移語句語法:GOTO n;說明:無條件地跳到指定的n行號(hào)執(zhí)行,其中n可為整數(shù)或表達(dá)式。GOTO常和IF語句搭配使用,那就是說當(dāng)程序檢查到某個(gè)條件滿足時(shí)用GOTO語句去進(jìn)一步處理,但應(yīng)盡量少用該語句以提高程序可讀性。范例:% MACRO/ 啟動(dòng)MACRO語法IF( #1 = 2 ) THEN GOTO 100;G01 X10. 10.;N100 G01 X30. 30.;M02;EXIT循環(huán)中斷語句語法:EXIT;說明:循環(huán)中斷,跳離循環(huán)控制;用在循環(huán)控制中,通常EXIT都和IF語句搭配使用,當(dāng)某個(gè)條件滿足后就跳離循環(huán)。請(qǐng)參考WHILE范例。六 庫函數(shù)1、ABS調(diào)用方法:ABS()函數(shù)描述:求一個(gè)數(shù)的絕對(duì)值范例:#1 := ABS(-2.3); / #1 的結(jié)果是 2.3注:此處函數(shù)內(nèi)“參數(shù)”既可為實(shí)際數(shù)值,也可為變量或表達(dá)式,以下若無特殊說明均按此處理。2、SIN調(diào)用方法:SIN ()函數(shù)描述:求一個(gè)數(shù)的正弦值范例:#1 := SIN(#10);3、ASIN調(diào)用方法:ASIN ()函數(shù)描述:求一個(gè)數(shù)的反正弦值范例: #1 := ASIN(#10);4、MAX調(diào)用方法:MAX()函數(shù)描述:求兩個(gè)數(shù)的最大值范例1:#1 := MAX(10,20); / #1等于20范例2: #1 := MAX(#2,#3);5、SQRT調(diào)用方法:SQRT ()函數(shù)描述:求一個(gè)數(shù)的平方根值范例1:#2 := SQRT(3); / #2 等于 1.732范例2:#16 := SQRT(#10);6、SIGN調(diào)用方法:SIGN ()函數(shù)描述:返回一個(gè)數(shù)的符號(hào),-1表示該數(shù)是負(fù)數(shù),1表示該數(shù)是正數(shù),0表示該數(shù)是零。范例:IF( SIGN(#10) 0 ) THEN END_IF;5、 CEIL調(diào)用方法:CEIL()函數(shù)描述:返回比一個(gè)數(shù)大或與其相等的最小整數(shù)范例1:#2 := CEIL(2.3); / #2 等于 3范例2:#2 := CEIL(#10);7、ROUND調(diào)用方法:ROUND ()函數(shù)描述:四舍五入化整,范例1:#2 := ROUND(2.3); / #2 等于 2范例2: #2 := ROUND(#10);七用戶宏程序編寫注意事項(xiàng)1. 用戶宏文檔第一行必須為%MACRO;程序段的每一行結(jié)束需加“;”結(jié)束符;對(duì)于用戶宏子程序最后需加“M99;”,以便能返回到主程序。2. 變量賦值使用“:=”符號(hào),不可僅用“=”符號(hào)。3. 文檔名儲(chǔ)存需依照下列規(guī)則。例如:編寫G100之MACRO,需將該MACRO程序存在C:CNCMACRO目錄底下,且文件名需為G0100,不需擴(kuò)展名。而編寫G100.1之MACRO,需將該MACRO程序存在C:CNCMACRO目錄底下,且文件名需為G100001,不需擴(kuò)展名。4. 請(qǐng)多使用局部變量(#1#50), 模態(tài)變量(#2001#2100,#3001#3100)為所有擴(kuò)充G碼的共享資源,請(qǐng)僅用于多個(gè)擴(kuò)充G碼間的數(shù)據(jù)交換,以節(jié)省共享資源;如果需要系統(tǒng)定義的初始值,請(qǐng)使用用戶參數(shù)( #4001#4100,#5001 #5100 )。5. 請(qǐng)不要使用全局變量(Global Variables,1999),因?yàn)镚碼執(zhí)行時(shí),使用者的數(shù)據(jù)是由自變量(A_,B_,Z_)傳入,由公共變量傳遞不符合使用習(xí)慣。6. 系統(tǒng)在執(zhí)行加工時(shí)對(duì)于MACRO程序會(huì)事先預(yù)編譯,因此MACRO執(zhí)行速度會(huì)超前于G、M 代碼指令,因此當(dāng)要求變量賦值或數(shù)據(jù)讀取須與G、M代碼指令發(fā)出的時(shí)間進(jìn)程相同時(shí),請(qǐng)于變量賦值或數(shù)據(jù)讀取前加WAIT()指令,否則該變量賦值或該數(shù)據(jù)讀取將無法與G、M 代碼同步。7. 不可改變模式G碼(G00/G01/G02/G03/G33/G34/G35,G91/G90,G40/G41/G42,)的狀態(tài),如果用戶宏程序中需要改變其狀態(tài)時(shí),就需要模態(tài)信息的回復(fù),8. 對(duì)于長度或角度的自變量在運(yùn)算前請(qǐng)使用STD()函數(shù)將單位標(biāo)準(zhǔn)化,以符合工具機(jī)使用習(xí)慣。9. 不可以改變坐標(biāo)系統(tǒng)設(shè)定,G92/G54/G52等與坐標(biāo)系統(tǒng)相關(guān)指令不能使用,否則圖形仿真功能將失去參考意義。10. 請(qǐng)?jiān)诔绦蛑屑由媳匾淖⑨專B(yǎng)成良好的編程習(xí)慣,以增加程序可讀性和可維護(hù)性,以幫助后續(xù)開發(fā)人員維護(hù)和排除問題。附錄 運(yùn)算符及其優(yōu)先級(jí)運(yùn)算名符號(hào)優(yōu)先級(jí)括號(hào)( ), 1函數(shù)調(diào)用運(yùn)算( )2取負(fù)-3求補(bǔ)運(yùn)算NOT3乘法運(yùn)算*4除法運(yùn)算/4模運(yùn)算/求余運(yùn)算MOD4加法運(yùn)算+5減法運(yùn)算-5關(guān)系運(yùn)算,=6相等運(yùn)算=7不等運(yùn)算8布爾邏輯/按位與&,AND9布爾邏輯/按位 異或XOR10布爾邏輯/按位 或OR11函數(shù)名描述ABS求一個(gè)數(shù)的絕對(duì)值范例: #1 := ABS(-2.3); /#1 的結(jié)果是 2.3ACOS求一個(gè)數(shù)的反余弦值范例: #1 := ACOS(#10);ASIN求一個(gè)數(shù)的反正弦值范例: #1 := ASIN(#10);ATAN求一個(gè)數(shù)的反正切值范例: #1 := ATAN(#10);COS求一個(gè)數(shù)的余弦值范例: #1 := COS(#10);MAX求兩個(gè)數(shù)的最大值范例1:#1 := MAX(10,20); / #1等于20范例2: #1 := MAX(#2,#3);MIN求兩個(gè)數(shù)的最小值范例1: #1 := MIN(10.0,20.0); / #1等于10.0范例2: #1 := MIN(#10,#11);SIN求一個(gè)數(shù)的正弦值范例: #1 := SIN(#10);SQRT求一個(gè)數(shù)的平方根值范例1:#2 := SQRT(3); / #2 等于 1.732.范例2: #2 := SQRT(#10);TAN求一個(gè)數(shù)的正切值范例: #1 := TAN(#10);SIGN返回一個(gè)數(shù)的符號(hào),-1表示該數(shù)是負(fù)數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論