1.1 概述
(1)宏程序的分類
首先我們來講一下宏程序的分類,A類和B類。首先在數控車系統比較老的時候,我們系統裡面有A類宏,A類宏格式為G65格式,現在已經基本淘汰。隨著科技發達,系統的升級優化,現在的數控系統大多支持B類宏程序,總體而言,現在B類宏是一個主流發展趨勢,所以接下來我們的實例講解都以B類宏程序為例。
(2)宏程序的概念
簡單來理解宏程序是什麼?可以這樣理解,宏程序就是利用數學公式,函數等計算方式,配合數控系統中的G代碼編制出的一種程序,主要加工一些像橢圓,曲線,各類大螺距螺紋和刀具路線相識的一些零件。隨著科技發達,像橢圓,拋物線,等線性零件,用軟件或則系統自代G代碼可以完成加工,而大螺距異型螺紋這類零件,軟件還沒達到成熟,所以我們學會宏程序在加工中可以起到一個非常大的作用。可以彌補多年來數控車對大螺距螺紋的編程難的一個提高。
(3)宏程序的特徵
1.賦值
在宏程序中我們通常用法最多的就是變量,比如:
#1=1 它就是一個變量。我們把這一過程,稱為賦值。也就是說,我們把等號後面的數值1,賦值給#1。而現在#1的值就等於1,也可以理解為#1就是一個代號,用來代替數值1。
2.變量和應用
比如:#1=2(把數值2賦值給#1)
#2=1(把數值1賦值給#2)
#2=#1(程序從上往下執行,思考一下現在#2的值等於多少?)
解: 當程序執行第一步的時候#1的值等於2,當執行第二步的時候#2的值等於1,當執行第三步的時候這裡要注意了,剛才講過賦值過程,是等號後面的值賦值給等號前面,所以當#1在第一步賦值以後,#1已經等於2了,所以在執行第三步的時候#2的值應該等於2,不在是第二步的1了。從這裡我們可以看出,當程序中有相同的變量#的時候,後面的#號代替前面的#號。
比如:#1=2
#1=3
最後結果#1的值因該是等於3的。所以說後面的代替前面的。
(4)變量的取值範圍
1.局部變量(#1-#33)
什麼叫局部變量,局部變量就是在局部或則可以理解為在單個程序中有效。斷電以後系統自動清零。
2.公共變量(#100-#199,#500-#999)
公共變量和局部變量的區別在於,局部變量是在局部,或則單個程序中有效,而公共變量是指如果一個程序同時擁有主程序和子程序的情況下,在主程序中如果已經賦值,在子程序中可以不用從新賦值,可以共用。而#100-#199和#500-#999的區別在於,前者斷電清零,而後者不會清零會一直保存在系統內部。比如:
#500=TAN[15]
#500一旦賦值就將保存在系統內部,下次可以直接調用#500使用。
3.系統變量(#1000-#17200)
系統變量是用於我們機床系統儲存一些刀補數據參數等等的東西,我們可以不用管它,不會用的,慎用)
總結:一般情況下我們寫程序用#1-#33,當有子程序的時候我們用#100-#199.
(5)宏程序中常用的計算
1.加法運算
例如:#1=2
#1=#1+3 那麼#1的值等於2+3=5
2.減法運算
例如:#1=3
#1=#1-1 那麼經過計算我們的#1的值等於3-1=2
3.乘法運算
程序中用*號來代替乘法
例如:#1=5
#2=#1*2 那麼計算出來#2的值等於5*2=10
4.除法運算
程序中用 / 號來代替除法運算
例如:#1=10
#1=#1/2 那麼經過計算#1的值等於10/2=5
(6)常用三角函數運算
1.TAN(正切)
例如#1=2*TAN[20] 中括號裡面是角度
2.SIN(正玄)
例如#1=3*SIN[3] 同上
3.COS(餘玄)
例如#1=COS[15]
4.ASIN、ACOS、ATAN(反三角)
5.SQRT(數學中的開平方的意思,和數學中根號一樣)
例如#1=SQRT[9] 那麼計算出來#1的值等於3
(7)宏程序的常用符號和含義
GT(大於)
GE(大於或等於)
LT(小於)
LE(小於或等於)
EQ(等於)
NE(不等於)
ABS(絕對值)
AND(與)
OR(或者)
(8)常用的語法和應用
1.無條件轉移 GOTOn(n表示數值)
例如:GOTO01 此程序段的意思是當程序中執行到這一程序段的時候無條件跳轉到程序段中N1的地方,執行N1後面的程序段。
M3S500G99
T101M08
GOTO10(當程序執行到這裡的時候,直接跳轉到N10那個程序段執行M30,跳過了G0那一步,所以這叫做無條件跳轉,和我們一般程序中跳段功能一樣)
G0X100.Z100.
N10M30
2.有條件跳轉 IF[條件表達式]GOTOn
例如:IF[#1GT15]GOTO10 從這段程序當中,我們這樣理解,如果中括號裡面的條件滿足,那麼就執行後面的GOTO跳轉語句,如果中括號裡面條件不滿足,那麼不執行後面的GOTO跳轉,執行後面一個程序段。
我們簡單來寫一個程序:
N10#1=30(把數值30賦值給#1)
IF[#1LT50]GOTO10(首先判斷中括號是不是滿足條件,如果滿足執行跳轉,不滿足執行下一步)
M30
從這個程序中我們可以發現當#1=30的時候,我們執行條件判斷,我們來判斷一下,#1現在等於30,那麼重括號裡面就可以理解為30小於50,現在條件滿足。所以他會執行後面GOTO跳轉語句,跳轉到N10地方繼續執行)
3.強制賦值語句 IF[條件表達式]THEN(執行語句)
例如:IF[#1GT20]THEN#1=20 (我們這樣來理解這個語句,如果#1大於20,那麼#1等於20,也就是說和上面一樣,中括號裡面條件滿足的話,執行後面THEN語句,如果不滿足,不執行後面then語句。)
寫一段簡單程序:
#1=3(把數值3賦值給#1)
#1=#1-5(把#1-5計算出來的值從新賦值給#1,也就是3-5=-2,現在#1=-2)
IF[#1LT0]THEN#1=0(強制賦值,如果#1小於0,那麼強制讓#等於0)
我們來分析一下上面程序段,當我們#1執行完減法運算以後#1的值已經等於-2,那麼我們在執行強制賦值語句的時候我們來判斷一下中括號裡面條件是不是滿足,-2小於0,條件滿足,所以執行後面THEN語句,如果不滿足的時候不執行THEN語句)
4.條件判斷語句 WHILE[表達式]DOn(n為數值,取值範圍1-99)
ENDn(n與開頭n的數值對應)
例如:WHILE[#12GT50]DO1
END1
下面寫一個程序段:
#1=60
WHILE[#1GT50]DO1
G0X#1
G1Z-20.F0.2
G0U1.Z1.
這個程序當條件判斷語句裡面中括號裡面條件滿足的時候執行DO1和END1中間的程序段,如果條件不滿足,執行END1後面的程序段M30。
以上介紹的語法格式用法,以FANUC oi系列,廣數,三菱系統為例。西門子,寶源,新代等系統以說明書為準!!
1.1 概述
(1)宏程序的分類
首先我們來講一下宏程序的分類,A類和B類。首先在數控車系統比較老的時候,我們系統裡面有A類宏,A類宏格式為G65格式,現在已經基本淘汰。隨著科技發達,系統的升級優化,現在的數控系統大多支持B類宏程序,總體而言,現在B類宏是一個主流發展趨勢,所以接下來我們的實例講解都以B類宏程序為例。
(2)宏程序的概念
簡單來理解宏程序是什麼?可以這樣理解,宏程序就是利用數學公式,函數等計算方式,配合數控系統中的G代碼編制出的一種程序,主要加工一些像橢圓,曲線,各類大螺距螺紋和刀具路線相識的一些零件。隨著科技發達,像橢圓,拋物線,等線性零件,用軟件或則系統自代G代碼可以完成加工,而大螺距異型螺紋這類零件,軟件還沒達到成熟,所以我們學會宏程序在加工中可以起到一個非常大的作用。可以彌補多年來數控車對大螺距螺紋的編程難的一個提高。
(3)宏程序的特徵
1.賦值
在宏程序中我們通常用法最多的就是變量,比如:
#1=1 它就是一個變量。我們把這一過程,稱為賦值。也就是說,我們把等號後面的數值1,賦值給#1。而現在#1的值就等於1,也可以理解為#1就是一個代號,用來代替數值1。
2.變量和應用
比如:#1=2(把數值2賦值給#1)
#2=1(把數值1賦值給#2)
#2=#1(程序從上往下執行,思考一下現在#2的值等於多少?)
解: 當程序執行第一步的時候#1的值等於2,當執行第二步的時候#2的值等於1,當執行第三步的時候這裡要注意了,剛才講過賦值過程,是等號後面的值賦值給等號前面,所以當#1在第一步賦值以後,#1已經等於2了,所以在執行第三步的時候#2的值應該等於2,不在是第二步的1了。從這裡我們可以看出,當程序中有相同的變量#的時候,後面的#號代替前面的#號。
比如:#1=2
#1=3
最後結果#1的值因該是等於3的。所以說後面的代替前面的。
(4)變量的取值範圍
1.局部變量(#1-#33)
什麼叫局部變量,局部變量就是在局部或則可以理解為在單個程序中有效。斷電以後系統自動清零。
2.公共變量(#100-#199,#500-#999)
公共變量和局部變量的區別在於,局部變量是在局部,或則單個程序中有效,而公共變量是指如果一個程序同時擁有主程序和子程序的情況下,在主程序中如果已經賦值,在子程序中可以不用從新賦值,可以共用。而#100-#199和#500-#999的區別在於,前者斷電清零,而後者不會清零會一直保存在系統內部。比如:
#500=TAN[15]
#500一旦賦值就將保存在系統內部,下次可以直接調用#500使用。
3.系統變量(#1000-#17200)
系統變量是用於我們機床系統儲存一些刀補數據參數等等的東西,我們可以不用管它,不會用的,慎用)
總結:一般情況下我們寫程序用#1-#33,當有子程序的時候我們用#100-#199.
(5)宏程序中常用的計算
1.加法運算
例如:#1=2
#1=#1+3 那麼#1的值等於2+3=5
2.減法運算
例如:#1=3
#1=#1-1 那麼經過計算我們的#1的值等於3-1=2
3.乘法運算
程序中用*號來代替乘法
例如:#1=5
#2=#1*2 那麼計算出來#2的值等於5*2=10
4.除法運算
程序中用 / 號來代替除法運算
例如:#1=10
#1=#1/2 那麼經過計算#1的值等於10/2=5
(6)常用三角函數運算
1.TAN(正切)
例如#1=2*TAN[20] 中括號裡面是角度
2.SIN(正玄)
例如#1=3*SIN[3] 同上
3.COS(餘玄)
例如#1=COS[15]
4.ASIN、ACOS、ATAN(反三角)
5.SQRT(數學中的開平方的意思,和數學中根號一樣)
例如#1=SQRT[9] 那麼計算出來#1的值等於3
(7)宏程序的常用符號和含義
GT(大於)
GE(大於或等於)
LT(小於)
LE(小於或等於)
EQ(等於)
NE(不等於)
ABS(絕對值)
AND(與)
OR(或者)
(8)常用的語法和應用
1.無條件轉移 GOTOn(n表示數值)
例如:GOTO01 此程序段的意思是當程序中執行到這一程序段的時候無條件跳轉到程序段中N1的地方,執行N1後面的程序段。
M3S500G99
T101M08
GOTO10(當程序執行到這裡的時候,直接跳轉到N10那個程序段執行M30,跳過了G0那一步,所以這叫做無條件跳轉,和我們一般程序中跳段功能一樣)
G0X100.Z100.
N10M30
2.有條件跳轉 IF[條件表達式]GOTOn
例如:IF[#1GT15]GOTO10 從這段程序當中,我們這樣理解,如果中括號裡面的條件滿足,那麼就執行後面的GOTO跳轉語句,如果中括號裡面條件不滿足,那麼不執行後面的GOTO跳轉,執行後面一個程序段。
我們簡單來寫一個程序:
M3S500G99
T101M08
N10#1=30(把數值30賦值給#1)
IF[#1LT50]GOTO10(首先判斷中括號是不是滿足條件,如果滿足執行跳轉,不滿足執行下一步)
M30
從這個程序中我們可以發現當#1=30的時候,我們執行條件判斷,我們來判斷一下,#1現在等於30,那麼重括號裡面就可以理解為30小於50,現在條件滿足。所以他會執行後面GOTO跳轉語句,跳轉到N10地方繼續執行)
3.強制賦值語句 IF[條件表達式]THEN(執行語句)
例如:IF[#1GT20]THEN#1=20 (我們這樣來理解這個語句,如果#1大於20,那麼#1等於20,也就是說和上面一樣,中括號裡面條件滿足的話,執行後面THEN語句,如果不滿足,不執行後面then語句。)
寫一段簡單程序:
#1=3(把數值3賦值給#1)
#1=#1-5(把#1-5計算出來的值從新賦值給#1,也就是3-5=-2,現在#1=-2)
IF[#1LT0]THEN#1=0(強制賦值,如果#1小於0,那麼強制讓#等於0)
M30
我們來分析一下上面程序段,當我們#1執行完減法運算以後#1的值已經等於-2,那麼我們在執行強制賦值語句的時候我們來判斷一下中括號裡面條件是不是滿足,-2小於0,條件滿足,所以執行後面THEN語句,如果不滿足的時候不執行THEN語句)
4.條件判斷語句 WHILE[表達式]DOn(n為數值,取值範圍1-99)
ENDn(n與開頭n的數值對應)
例如:WHILE[#12GT50]DO1
END1
下面寫一個程序段:
#1=60
WHILE[#1GT50]DO1
G0X#1
G1Z-20.F0.2
G0U1.Z1.
END1
M30
這個程序當條件判斷語句裡面中括號裡面條件滿足的時候執行DO1和END1中間的程序段,如果條件不滿足,執行END1後面的程序段M30。
以上介紹的語法格式用法,以FANUC oi系列,廣數,三菱系統為例。西門子,寶源,新代等系統以說明書為準!!