




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一用戶宏程序的基本概念用一組指令構(gòu)成某功能,并且象子程序一樣存儲在存儲器中,再把這些存儲的功能由一個指令來代表,執(zhí)行時只需寫出這個代表指令,就可以執(zhí)行其相應(yīng)的功能。 在這里,所存儲的一組指令叫做宏程序體(或用戶宏程序),簡稱為用戶宏。其代表指令稱為用戶宏命令,也稱作宏程序調(diào)用指令。用戶宏有以下四個主要特征:1)在用戶用戶宏程序中可以使用變量,即宏程序體中能含有復(fù)雜的表達式;2)能夠進行變量之間的各種運算;3)可以用用戶宏指令對變量進行賦值,就象許多高級語言中的帶參函數(shù)或過程,實參能賦值給形參;4)容易實現(xiàn)程序流程的控制。使用用戶宏時的主要方便之處在于由于可以用變量代替具體數(shù)值,因而在加工同一類
2、的工件時只得將實際的值賦予變量既可,而不需要對每個不同的零件都編一個程序。二 基本書寫格式數(shù)控程序文檔中,一般以“%”字符作為第一行的起頭,該行將被視為標題行。當(dāng)標題行含有關(guān)鍵字“macro”時整個文檔就會以系統(tǒng)所定義的macro語法處理。如果該行無“macro”關(guān)鍵詞此檔案就會被視為一般iso程序文檔格式處理,此時將不能編寫用戶宏和使用其macro語法。而當(dāng)書寫iso程序文檔時標題行一般可以省略,直接書寫數(shù)控程序?!癿acro”關(guān)鍵詞必須是大寫字母。對于程序的注釋可以采用“/”的形式,這和高級語言c+一樣。例一:macro格式文檔% macro /用戶宏程序文檔,必須包含“macro”關(guān)鍵詞
3、if 1 = 1 theng00 x100.;elseg00 z100.;end_if;m99;例二:iso格式文檔% 這是標題行,可當(dāng)作檔案用途說明,此行可有可無g00 x100.;g00 z100.;g00 x0;g00 z0;m99;三 用戶宏程序的編寫如前所述,變量是指可以在用戶宏程序中的地址碼后代替具體數(shù)值,在調(diào)用宏程序時進行賦值的符號i (i1,2,3,)。使用變量可以使用戶宏程序具有通用性。用戶宏程序中可以使用多個變量,以變量編號進行識別。1、 變量的形式變量是用符號或后面加上變量編號所構(gòu)成的,即:i(i1,2,3,)例如:5 109 1005也可用表達式的形式來表示。例如:#1
4、00 #10011 #6/2其實,通過用符號后面加上變量編號也可構(gòu)成的變量,即: i(i1,2,3,)例如:5 5但一般地,由符號后面加上變量編號構(gòu)成的變量稱為全局變量,不提倡在用戶宏程序中使用,具體見后面的介紹。2、 變量的引用在地址符后的數(shù)值可以用變量置換。例如:若寫成f#33,則當(dāng)331.5時,與f1.5相同。若寫成z#18,則當(dāng)1820.0時,與z20.0相同。但需要注意,作為地址符的o、n、等,不能引用變量。例如,o#27、n#1等,都是錯誤的。3、 未定義變量尚未被定義的變量,被稱為空(vacant)。變量0,0 始終為空,經(jīng)常被用作空變量使用。3變量賦值和引數(shù)賦值變量賦值:用戶宏
5、程序中變量賦值使用賦值運算符“:=”,不可僅用“=”符號。因為在本系統(tǒng)中符號“=” 是被規(guī)定為關(guān)系運算符,用來比較是否相等的。例如#30:=100,會將變量#30賦值為整數(shù)100;而#30=100,將不能為變量#30賦值,實際上是比較變量#30是否與整數(shù)100相等。四變量運算及變量表達式用戶宏運算符要對變量進行各種運算操作就要用到運算符,它是“能對變量所存數(shù)據(jù)進行運算的符號”。本系統(tǒng)的運算符及其優(yōu)先級如表3-2所示。表3-2 運算符及其優(yōu)先級運算名符號優(yōu)先級括號( ), 1函數(shù)調(diào)用運算<函數(shù)名>(<參數(shù)列表> )2取負-3求補運算not3乘法運算*4除法運算/4模運算/
6、求余運算mod4加法運算+5減法運算-5關(guān)系運算<,>,<=,>=6相等運算=7不等運算<>8布爾邏輯/按位與&,and9布爾邏輯/按位 異或xor10布爾邏輯/按位 或or11、基本算數(shù)運算符(1) +(加法運算符,如3+5,#12+4)(2) -(減法運算符,或取負運算符,如#33-16,-#16)(3) *(乘法運算符,如9*2,#13*8)(4) /(除法運算符,如10/3,#43/15)(5)mod (模運算符,或稱求余運算符,其兩側(cè)均應(yīng)為整型數(shù)據(jù),如7 mod4的值為3,當(dāng)#18=20時#18 mod4的值為2)、算術(shù)表達式和運算符優(yōu)先級
7、用算術(shù)運算符和括號將運算對象連接起來的、符合語法規(guī)則的式子稱為算術(shù)表達式,運算對象可以是常數(shù)、變量、函數(shù)等。例如:#6*8/#32-1.5+#18+ round(1) 這就是一個算術(shù)運算式,它可以作為一個整體賦值給某個變量,或用作其他表達式中的一個運算對象。本系統(tǒng)按表表3-2規(guī)定了運算符的優(yōu)先級和結(jié)合性。在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。如表達式#12-#41*5的左側(cè)為減,右側(cè)為乘號,而乘號優(yōu)先于減號,因此,相當(dāng)于#12-(#41*5)。如果在一個運算對象兩側(cè)的運算符的優(yōu)先級別相同,如#2-5+#23,則按規(guī)定的結(jié)合性(結(jié)合方向)處理,算術(shù)運算符的
8、結(jié)合方向為“自左至右”,即先左后右。因此5先與減號結(jié)合,執(zhí)行#2-5的運算,再執(zhí)行加#23的運算。這樣“自左至右的結(jié)合方向”又稱為“左結(jié)合性”,即運算對象先與左面的運算符結(jié)合;對應(yīng)地,也有“右結(jié)合性”的運算符,例如賦值運算符“:=”就是。、關(guān)系運算符和關(guān)系表達式關(guān)系運算符是邏輯運算中比較簡單的一種。所謂“關(guān)系運算”實際上就是“比較運算”。將兩個值進行比較,判斷比較的結(jié)果是否符合給定的條件。例如,#310是一個關(guān)系表達式,大于號()是一個關(guān)系運算符,如果#3=12,則滿足給定的“#310”條件,因此關(guān)系表達式的值為“真”(即“條件滿足”);如果#3=6,不滿足“#310”條件,則稱關(guān)系表達式的值
9、為“假”。本系統(tǒng)提供6種關(guān)系運算符:優(yōu)先級相同(高)優(yōu)先級(較高)優(yōu)先級(低) (1) < (小于) (2) <= (小于或等于) (3) > (大于)(4) >= (大于或等于)(5) = (等于)(6) <> (不等于)關(guān)于優(yōu)先次序:1、前4種關(guān)系運算符(,>)的優(yōu)先級別相同,它們卻高于關(guān)系運算符“=”,而“=”又高于“<>”2、關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。3、關(guān)系運算符的優(yōu)先級高于賦值運算符。用兩個關(guān)系運算符將兩個表達式連接起來的式子,稱為關(guān)系表達式。例如:#636,#13+4<>#23關(guān)系表達式的值是一個邏輯值,即
10、“真”或“假”。例如,若#12為8,則關(guān)系表達式“#12=10”的值為“假”,“#12>=6”的值為“真”。、邏輯運算和邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量連接起來就是邏輯表達式。本系統(tǒng)提供6種邏輯運算符和邏輯運算(1) &,and 邏輯與(2) xor 邏輯或(3) or 邏輯異或它們都是“雙目(元)運算符”,它要求有兩個運算量(操作數(shù)),邏輯運算舉例如下:#1 and #2 若#1 、#2為真,則#1 and #2為真。#1 or #2 若#1 、 #2之一為真,則#1 xor #2為真。邏輯運算符低于關(guān)系運算符,見圖3-1。(高)(低)算術(shù)運算符關(guān)系運算符邏輯運算符賦
11、值運算符圖3-1五 用戶宏程序的流程控制所謂程序的流程(flow control)是通過控制程序的執(zhí)行方向,進而掌握程序動態(tài)。這用戶宏程序區(qū)別于一般數(shù)控程序的特征之一,也是用戶選擇用戶宏程序編寫數(shù)控代碼的一大理由。用戶宏程序的流程控制包括無條件判斷、循環(huán)控制、無條件轉(zhuǎn)移三大類,這與其他的高級語言程序類似,下面將分別介紹其功能和使用語法。、條件判斷判斷條件的真假,然后根據(jù)真假或者對應(yīng)情況到指定的地方去執(zhí)行程序,這方面的語句有if和case語句。1、if條件語句1)基本語法:if <條件表達式> then<操作>elseif <條件表達式> then<操作
12、>else<操作>end_if;說明:if條件判斷,根據(jù)真假情況到指定的地方去執(zhí)行程序。例如:% macro/ 啟動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;然而在實際使用中,可以有以下一些變形:2)變形1語法:if <條件表達式> then&
13、lt;操作>else<操作>end_if;3)變形2語法:if <條件表達式> then<操作>end_if;編程時可根據(jù)需要選擇合適的語法格式。、循環(huán)控制1、repeat直到型循環(huán)語法:repeat<循環(huán)體>until<條件表達式> end_repeat;說明:repeat直到型循環(huán)控制,先執(zhí)行循環(huán)體,后判斷條件表達式,當(dāng)條件滿足時退出循環(huán)。例如:% macro/ 啟動macro語法#10 := 30.;#11 := 22.5.;#12 := #10/2;#13 := #11/2;#14 := 2.0;#15 := 1.5;g
14、01 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 <條件表達式> do<循環(huán)體>end_whil
15、e;說明:while當(dāng)型循環(huán)控制,先判斷條件表達式,當(dāng)條件滿足時執(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 <= #13) dog00 x(#12+#14) (#13+#15);g01 x(#12+#14) (#13-#15);x(#12-#14) (#13-#15);if #14 > 6.0 thenexit;end_if;x(#12-#
16、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 <循環(huán)變量> := <表達式1> to <表達式2> by <表達式3> do<循環(huán)體>end_for;說明:for循環(huán)控制,式中各參數(shù)意義如下循環(huán)變量控制循環(huán)次數(shù)的變量;表達式1循環(huán)計數(shù)的起始值,可為整數(shù)或表達式;表達式2循環(huán)計數(shù)的終止值,可為整數(shù)或表達式;表達式3循環(huán)計數(shù)每次的累加值,可為整數(shù)或表達式;循環(huán)體 循
17、環(huán)每次執(zhí)行內(nèi)容;for循環(huán)執(zhí)行過程為:先給循環(huán)變量賦起始值,然后判斷循環(huán)變量是否為終止值,當(dāng)循環(huán)變量已為終止值時退出循環(huán),否則執(zhí)行循環(huán)體,再對循環(huán)變量加上每次累加值,、無條件轉(zhuǎn)移goto轉(zhuǎn)移語句語法:goto n;說明:無條件地跳到指定的n行號執(zhí)行,其中n可為整數(shù)或表達式。goto常和if語句搭配使用,那就是說當(dāng)程序檢查到某個條件滿足時用goto語句去進一步處理,但應(yīng)盡量少用該語句以提高程序可讀性。范例:% macro/ 啟動macro語法if( #1 = 2 ) then goto 100;g01 x10. 10.;n100 g01 x30. 30.;m02;exit循環(huán)中斷語句語法:exi
18、t;說明:循環(huán)中斷,跳離循環(huán)控制;用在循環(huán)控制中,通常exit都和if語句搭配使用,當(dāng)某個條件滿足后就跳離循環(huán)。請參考while范例。六 庫函數(shù)1、abs調(diào)用方法:abs(<參數(shù)>)函數(shù)描述:求一個數(shù)的絕對值范例:#1 := abs(-2.3); / #1 的結(jié)果是 2.3注:此處函數(shù)內(nèi)“參數(shù)”既可為實際數(shù)值,也可為變量或表達式,以下若無特殊說明均按此處理。2、sin調(diào)用方法:sin (<參數(shù)>)函數(shù)描述:求一個數(shù)的正弦值范例:#1 := sin(#10);3、asin調(diào)用方法:asin (<參數(shù)>)函數(shù)描述:求一個數(shù)的反正弦值范例: #1 := asin(
19、#10);4、max調(diào)用方法:max(<參數(shù)1,參數(shù)2>)函數(shù)描述:求兩個數(shù)的最大值范例1:#1 := max(10,20); / #1等于20范例2: #1 := max(#2,#3);5、sqrt調(diào)用方法:sqrt (<參數(shù)>)函數(shù)描述:求一個數(shù)的平方根值范例1:#2 := sqrt(3); / #2 等于 1.732范例2:#16 := sqrt(#10);6、sign調(diào)用方法:sign (<參數(shù)>)函數(shù)描述:返回一個數(shù)的符號,-1表示該數(shù)是負數(shù),1表示該數(shù)是正數(shù),0表示該數(shù)是零。范例:if( sign(#10) > 0 ) then end_i
20、f;5、 ceil調(diào)用方法:ceil(<參數(shù)>)函數(shù)描述:返回比一個數(shù)大或與其相等的最小整數(shù)范例1:#2 := ceil(2.3); / #2 等于 3范例2:#2 := ceil(#10);7、round調(diào)用方法:round (<參數(shù)>)函數(shù)描述:四舍五入化整,范例1:#2 := round(2.3); / #2 等于 2范例2: #2 := round(#10);七用戶宏程序編寫注意事項1. 用戶宏文檔第一行必須為%macro;程序段的每一行結(jié)束需加“;”結(jié)束符;對于用戶宏子程序最后需加“m99;”,以便能返回到主程序。2. 變量賦值使用“:=”符號,不可僅用“=”
21、符號。3. 文檔名儲存需依照下列規(guī)則。例如:編寫g100之macro,需將該macro程序存在c:cncmacro目錄底下,且文件名需為g0100,不需擴展名。而編寫g100.1之macro,需將該macro程序存在c:cncmacro目錄底下,且文件名需為g100001,不需擴展名。4. 請多使用局部變量(#1#50), 模態(tài)變量(#2001#2100,#3001#3100)為所有擴充g碼的共享資源,請僅用于多個擴充g碼間的數(shù)據(jù)交換,以節(jié)省共享資源;如果需要系統(tǒng)定義的初始值,請使用用戶參數(shù)( #4001#4100,#5001 #5100 )。5. 請不要使用全局變量(global varia
22、bles,1999),因為g碼執(zhí)行時,使用者的數(shù)據(jù)是由自變量(a_,b_,z_)傳入,由公共變量傳遞不符合使用習(xí)慣。6. 系統(tǒng)在執(zhí)行加工時對于macro程序會事先預(yù)編譯,因此macro執(zhí)行速度會超前于g、m 代碼指令,因此當(dāng)要求變量賦值或數(shù)據(jù)讀取須與g、m代碼指令發(fā)出的時間進程相同時,請于變量賦值或數(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)時,就需要模態(tài)信息的回復(fù),8. 對于長度或角度的自變量在運
23、算前請使用std()函數(shù)將單位標準化,以符合工具機使用習(xí)慣。9. 不可以改變坐標系統(tǒng)設(shè)定,g92/g54/g52等與坐標系統(tǒng)相關(guān)指令不能使用,否則圖形仿真功能將失去參考意義。10. 請在程序中加上必要的注釋,養(yǎng)成良好的編程習(xí)慣,以增加程序可讀性和可維護性,以幫助后續(xù)開發(fā)人員維護和排除問題。附錄 運算符及其優(yōu)先級運算名符號優(yōu)先級括號( ), 1函數(shù)調(diào)用運算<函數(shù)名>(<參數(shù)列表> )2取負-3求補運算not3乘法運算*4除法運算/4模運算/求余運算mod4加法運算+5減法運算-5關(guān)系運算<,>,<=,>=6相等運算=7不等運算<>8布爾
24、邏輯/按位與&,and9布爾邏輯/按位 異或xor10布爾邏輯/按位 或or11函數(shù)名描述abs求一個數(shù)的絕對值范例: #1 := abs(-2.3); /#1 的結(jié)果是 2.3acos求一個數(shù)的反余弦值范例: #1 := acos(#10);asin求一個數(shù)的反正弦值范例: #1 := asin(#10);atan求一個數(shù)的反正切值范例: #1 := atan(#10);cos求一個數(shù)的余弦值范例: #1 := cos(#10);max求兩個數(shù)的最大值范例1:#1 := max(10,20); / #1等于20范例2: #1 := max(#2,#3);min求兩個數(shù)的最小值范例1: #1 := min(10.0,20.0); / #1等于10.0范例2: #1 := min(#10,#11);sin求一個數(shù)的正弦值范例: #1 := sin(#10);sqrt求一個數(shù)的平方根值范例1:#2 := sqrt(3); / #2 等于 1.732.范例2: #2 := sqrt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度企業(yè)導(dǎo)師制師帶徒培養(yǎng)合同
- 2025年度人合作合伙合同:清潔能源項目投資合作框架
- 2025年度醫(yī)療護理勞務(wù)合同患者安全與權(quán)益保障合同
- 2025年度倉儲物流轉(zhuǎn)租服務(wù)合同
- 2025年度店面轉(zhuǎn)讓定金支付及品牌戰(zhàn)略合作協(xié)議
- 2025年度倉儲設(shè)施使用權(quán)及倉儲倉儲服務(wù)協(xié)議
- 2025年杭州醫(yī)學(xué)院單招職業(yè)適應(yīng)性測試題庫完整版
- 2025年度個人短期租房合同月付與租戶退租流程管理協(xié)議
- 2025年度合伙投資開中式餐廳合作協(xié)議
- 2025年度互聯(lián)網(wǎng)企業(yè)產(chǎn)品經(jīng)理崗位聘用合同
- 創(chuàng)新教案:《歌唱二小放牛郎》在2025年音樂教學(xué)中的應(yīng)用
- 2024年西安電力高等??茖W(xué)校高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
- 2024年湖南鐵路科技職業(yè)技術(shù)學(xué)院高職單招語文歷年參考題庫含答案解析
- 祖沖之的平生與貢獻
- 2025年版護理法律法規(guī)
- DB3305T 261-2023 湖州湖羊種羊等級評定
- 房屋市政工程生產(chǎn)安全重大事故隱患排查表(2024版)
- 2024年牡丹江大學(xué)單招職業(yè)適應(yīng)性測試題庫帶答案
- 統(tǒng)編版(2024新版)七年級下冊道德與法治期末復(fù)習(xí)背誦知識點提綱
- 健康體檢報告解讀頁課件
- (高清版)DB43∕T 1147-2015 太陽能果蔬烘干機
評論
0/150
提交評論