2006年全國數(shù)控技能大賽北京決賽考試中,教師組數(shù)控車工軟件考試中有一道特殊的宏程序題目,一段圓弧上均勻分布著多個首尾相連的橢圓曲線,給出宏程序要求找出其中的錯誤,圖形示意圖如圖1所示(圖形對比原題不一樣,其中的尺寸是作者自己標(biāo)注的)。
對于高水平的數(shù)控技能競賽,非圓曲線的宏程序編制是必考的內(nèi)容之一,一般選手都能掌握,但是一般非圓曲線的軸線都是與Z軸(或X軸)平行或者重合的(見圖2),這種非圓曲線的編程難度并不大,掌握非圓曲線加工的基本原理和學(xué)會曲線中心點的坐標(biāo)偏移就可。但本文中所涉及到的題目則有其特殊之處,橢圓的軸線與Z 軸(或X軸)不平行,而是成一定的角度,整個橢圓是傾斜形狀的,這種圖形在數(shù)控銑床(或加工中心)上編程根本不存在難度,使用G68坐標(biāo)旋轉(zhuǎn)指令即可解決問題,但是在數(shù)控車削編程中沒有G68坐標(biāo)旋轉(zhuǎn)指令,手工編程存在相當(dāng)?shù)碾y度,所以僅僅在軟件仿真考試中給出程序并要求改正錯誤。
一、坐標(biāo)旋轉(zhuǎn)的數(shù)學(xué)基本原理
非圓曲線的宏程序編制都是基于對非圓曲線數(shù)學(xué)公式、圖形特點的分析之上,所以良好的數(shù)學(xué)基礎(chǔ)是編制宏程序的前提。要編制上面題目中有一定難度的宏程序,更需要深層次的數(shù)學(xué)知識。相同的題目,可以使用多種不同的數(shù)學(xué)方法解決,有簡有繁,相應(yīng)宏程序編制也不相同。
非圓曲線傾斜相當(dāng)于把正常的坐標(biāo)系和圖形繞原點旋轉(zhuǎn)了一個α角度所得到的圖形和坐標(biāo)系(見圖3)。

假設(shè)曲線上的一點P(見圖4),已知在XOY坐標(biāo)系中的坐標(biāo)為(X,Y),坐標(biāo)系和圖形旋轉(zhuǎn)一個角度α以后,P點旋轉(zhuǎn) 后所在的位置為P*,P *點在原來XOY坐標(biāo)系中的坐標(biāo)為(X*,Y*)即為我們所求的坐標(biāo)數(shù)值,由已知的P 點的坐標(biāo)數(shù)值(X,Y)和旋轉(zhuǎn)角度α通過多種數(shù)學(xué)處理方式和轉(zhuǎn)換可以求出P*點 的坐標(biāo)數(shù)值(X*,Y*)。
1.采用二維圖形的變換矩陣進(jìn)行旋轉(zhuǎn)點的坐標(biāo)計算
在計算機繪圖基本原理中,二維圖形的基本變換是通過矩陣運算進(jìn)行的。在二維空間內(nèi),一個點的坐標(biāo)可以表示為一個行向量|X Y| ,一個二維空間點的坐標(biāo)變換即為一個行向量|X Y|和一個2×2階變換矩陣的相乘運算,得到新點的坐 標(biāo)(X*,Y*)。二維圖形上的每一個點的處理都是如此。2×2 階變換矩陣不同,可以得到圖形的平移、鏡像、旋轉(zhuǎn)、比例和縮放等多種變換形式。
在本文討論的題目中只涉及到圖形的旋轉(zhuǎn)變換,圖形的偏移是通過其他方式處理的,因此只介紹圖形的旋轉(zhuǎn)變換矩陣,并且只介紹繞坐標(biāo)原點旋轉(zhuǎn)變換的2×2變換矩陣:

對于點P 坐標(biāo)(X,Y )進(jìn)行α角度的旋轉(zhuǎn)變換,通過行向量|X Y|與變換矩陣T相乘運算以后,變換后P*點坐標(biāo)為:

2.采用平面解析幾何計算旋轉(zhuǎn)點的坐標(biāo)
圖4中XOY坐標(biāo)系中P點的坐標(biāo)為(X,Y),繞原點旋轉(zhuǎn)α角度后得到X*OY*坐標(biāo)系和點P*,要求出點P*在XOY坐標(biāo)系中的坐標(biāo)(X*,Y*)。
輔助線的作法(見圖5)。

(1)過點P分別向X、Y 軸作垂線,得垂足A 、B,那么|OA|=X,|OB|=Y。
(2)過點P*分別向X*、Y *軸作垂線,得垂足A*、B*,那么|OA*|=X ,|OB*|=Y 。
(3)過點P*分別向X 、Y 軸作垂線,得垂足C、F 。
(4)過垂足點A*向P*C作垂線,得到垂足E,過垂足點A*向X軸作垂線,得到垂足D。分析圖形中各線段的幾何關(guān)系:
P*在XOY 坐標(biāo)系中的坐標(biāo)為(X* ,Y*),X* = |OC|,Y* =|OF|,只要求出|OC|和|OF|的長度即可。
(1)X*坐標(biāo)(|OC|長度)的求法。
在X坐標(biāo)軸上,|OC |=|OD |-|CD|,在直角三角形中OA*D中(見圖6),已知角度α ,
|OA *|=X ,那么有:
|OD |=|OA*|·COS(α)=X ·COS(α) ①
在矩形CEA*D中,|CD| = |E A*|,在矩形OB*P*A* 中,
|P*A*|=|OB*|=Y,分析直角三角形P*A*E(見圖7),已知|P*A*|=Y和角度α,那么有:

|EA*|=|P*A*|·SIN(α)=Y·SIN(α)=|CD| ②
P*點的X*坐標(biāo) |OC|=|OD|-|CD|=X·COS(α)-Y·SIN(α)。
(2)Y*坐標(biāo)(|OF|長度)的求法。
在矩形OFP*C中,|OF|=|P*C|=|P*E|+|EC |,只要求出|P*E|和|EC|即可。
在直角三角形P*A*E中(見圖7),已知|P*A*|=|OB*|=Y角度α ,那么有:

在矩形CEA*D中,|EC|=|A*D|,分析直角三角形OA*D(圖6),已知|OA*|=X 和角度α,那么有:

P*點的Y*坐標(biāo)
從而確定P*點坐標(biāo)求解公式為:

3.采用三角函數(shù)方法計算旋轉(zhuǎn)點的坐標(biāo)
已經(jīng)知道平面上一點P的坐標(biāo)為(X,Y),|OP|為原點O 至P點的線段,|OP |線段與X 軸的夾角為θ(如圖8所示),那么有:


當(dāng)坐標(biāo)系繞原點旋轉(zhuǎn)角度α以后,P*點為旋轉(zhuǎn)后P 點的位置,旋轉(zhuǎn)后|OP|線段的長度保持不變,|OP*|線段與X 軸的夾角為(α+θ),那么有:

根據(jù)三角函數(shù)的運算法則:

最后得出P*點坐標(biāo)求解公式為:

數(shù)學(xué)分析總結(jié):以上三種不同的數(shù)學(xué)方法對于旋轉(zhuǎn)點的坐標(biāo)計算有簡有繁,但最終得出的公式(1)、公式(2)和公式(4)是統(tǒng)一的。介紹三種不同的數(shù)學(xué)處理方法的目的是為了適應(yīng)不同數(shù)學(xué)基礎(chǔ)和不同思路的編程人員能看懂并接受這個公式。雖然這三種方法的結(jié)果是統(tǒng)一的,但是在宏程序的編制處理上還有區(qū)別,前面兩種數(shù)學(xué)方法可以使用相同的編程處理方式,但是最后一種數(shù)學(xué)處理方法的編程處理則有所不同,下面分別介紹。
二、單個傾斜橢圓的宏程序編制
橢圓的長半軸50,短半軸30,長半軸與Z 軸的夾角30°,即橢圓傾斜了30°,工件坐標(biāo)系的原點設(shè)在橢圓的中心,實際機床運行模擬的屏幕硬拷貝圖形如圖9所示。

程序的清單和注釋如下:
N10 G98 S800 M03 主軸800r.p.m正轉(zhuǎn)啟動 N20 T0101 調(diào)用1號刀和刀具補償 N30 G00 X60. Z50. 快速定位
N40 #1=30. X向半軸長度
N50 #2=50. Z 向半軸長度 N60 #3=30. 橢圓傾斜角度
N70 #4=50. Z 向變量#4的起始數(shù)值
N80 #24=SQRT[#2*#2-#4*#4] 普通橢圓上點X 坐標(biāo)的計算
N90 #24=–#1*#24/#2 普通橢圓上點X 坐標(biāo)的計算 N100 #26=#4 普通橢圓上點Z 坐標(biāo)的計算 N110 #27=#26*SIN[#3]+#24*COS[#3] 傾斜橢圓上點X坐標(biāo)的計算公式(1)Y*=X·SIN(α)+Y·COS(α) 車床使用ZX 坐標(biāo)系,用Z 、X 代替X 、Y
N120 #28=#26*COS[#3]-#24*SIN[#3] 傾斜橢圓上點Z坐標(biāo)的計算公式(1)X*=X·COS(α)-Y·SIN(α) 車床使用ZX坐標(biāo)系,用Z、X代替X、Y
N130 G01 X[2.*#27] Z#28 F2000 直線段逼近橢圓(X 坐標(biāo)變?yōu)橹睆街?
N140 #4=#4–0.5 Z 向變量#4循環(huán)遞減步距0.5
N150 IF[#4GE[–#2]] GOTO80 循環(huán)判斷語句 N160 G0 X100. X 向退刀
N170 Z100. Z 向退刀 N180 M30 程序結(jié)束
程序說明:程序中橢圓傾斜的角度α僅以30°為例,實際上的α角度有正有負(fù),是任意的,包括0°、90°或180° 等特殊角度。
從程序中可以看出,傾斜橢圓(非圓曲線)宏程序的編制與普通橢圓(非圓曲線)宏程序的編制大體相同,不過僅僅增加了N110、N120兩個坐標(biāo)旋轉(zhuǎn)公式的程序語句,這是根據(jù)前面兩種數(shù)學(xué)方法得出的公式編制的宏程序,采用第三種方法編制的宏程序則不同。
程序清單以及注釋如下:
N10 G98 S800 M03 主軸800r.p.m正轉(zhuǎn)啟動
N20 T0101 調(diào)用1號刀和刀具補償
N30 G00 X60. Z50. 快速定位
N40 #1=30. X 向半軸長度
N50 #2=50. Z 向半軸長度
N60 #3=30. 橢圓傾斜角度
N70 #4=50. Z 向變量#4的起始數(shù)值
N80 #22=#4 普通橢圓上點Z 坐標(biāo)的計算
N90 #23=SQRT[#2*#2-#4*#4] 普通橢圓上點X 坐標(biāo)的計算
N100 #23=-#1*#23/#2 普通橢圓上點X 坐標(biāo)的計算
N110 #25=ATAN[#23]/[#22] |OP |線段與橢圓長軸的夾角
N120 #21=SQRT[#22*#22+#23*#23] |OP |線段的長度
N130 #24=-2.0*#21*SIN[#25+#3] 傾斜橢圓上點X坐標(biāo)的計算
N140 #26=#21*COS[#25+#3] 傾斜橢圓上點Z 坐標(biāo)的計算
N150 G01 X#24 Z#26 F2000 直線段逼近橢圓
N160 #4=#4-0.5 Z 向變量#4循環(huán)遞減步距0.5
N170 WHILE[#4EQ0] DO1 特殊處理程序段
N190 #21=#1 特殊處理程序段
N200 #24=-2.*#21*SIN[90.-#3] 特殊處理程序段
N210 #26=#21*COS[90.-#3] 特殊處理程序段
N220 G1X #24 Z#26 F2000 特殊處理程序段
N230 #4=#4-0.5 特殊處理程序段
N240 END1 特殊處理程序段
N250 IF[#4GE[-#2]]GOTO80 循環(huán)判斷語句
N260 G00 X100. X向退刀
N270 Z100. Z 向退刀 N280 M30 程序結(jié)束
上面的宏程序是根據(jù)第三種數(shù)學(xué)處理方式編制的,與前面兩種處理方式不同,它沒有使用最后的計算公式(1)、(2)和(4),而是使用了中間計算公式(3)進(jìn)行編程。這種編程方式是計算出普通橢圓上每一個點P (X ,Z )與圓心連 線|OP |的長度,以及|OP |與長半軸的夾角θ ,加上旋轉(zhuǎn)角度α 以后,再根據(jù)三角函數(shù)計算旋轉(zhuǎn)點P* (X*,Z*)的坐標(biāo)(如圖8)。|OP|與長半軸的夾角θ是根據(jù)P點的坐標(biāo)(X ,Z ),用反正切函數(shù)ATAN[X]/[Z]計算出來的,當(dāng)變量Z(#4)為0時,
反正切函數(shù)ATAN[X]/[Z]是無定義的,不能求出角度的數(shù)值,所以在宏程序中有特殊處理程序段計算變量Z (#4)為0 時的角度。
上面的程序還有其他的解決辦法,在求連線|OP|與長半軸的夾角θ時,可以不用反正切函數(shù)ATAN[X]/[Z],而是使用反余弦函數(shù)ACOS[ ] ,這個函數(shù)不存在無定義的特殊點。程序相對會簡化一些。
使用反余弦函數(shù)ACOS[ ]的程序清單及注釋如下:
N10 G98 S800 M03 主軸800r.p.m正轉(zhuǎn)啟動
N20 T0101 調(diào)用1號刀和刀具補償
N30 G00 X60. Z50. 快速定位
N40 #1=30. X向半軸長度
N50 #2=50. Z 向半軸長度
N60 #3=30. 橢圓傾斜角度
N70 #4=50. Z向變量#4的起始數(shù)值
N80 #22=#4 普通橢圓上點Z 坐標(biāo)的計算
N90 #23=SQRT[#2*#2-#4*#4] 普通橢圓上點X 坐標(biāo)的計算
N100 #23=-#1*#23/#2 普通橢圓上點X 坐標(biāo)的計算
N120 #21=SQRT[#22*#22+#23*#23] |OP |線段的長度計算
N125 #25=ACOS[#22/#21] |OP |線段與橢圓長軸的夾角
N130 #24=#21*SIN[#25-#3] 傾斜橢圓上點X 坐標(biāo)的計算
N140 #26=#21*COS[#25-#3] 傾斜橢圓上點Z 坐標(biāo)的計算
N150 G01 X[-2.*#24 ] Z#26 F200 直線段逼近橢圓
N160 #4=#4-0.5 Z 向變量#4循環(huán)遞減步距0.5
N250 IF[#4GE[-#2]] GOTO80 循環(huán)判斷語句
N260 G00 X100. X 向退刀
N270 Z100. Z 向退刀 N280 M30 程序結(jié)束
可以看出,使用反余弦函數(shù)ACOS[ ]比較使用反正切函數(shù)ATAN[X]/[Z]在程序要簡化許多,同時也可以知道,同一個加工要求的圖形,可以有多種編程方法和途徑解決。
三、圓弧上均布橢圓的宏程序編制
對于圖1中的加工圖形,實質(zhì)上是橢圓圓心在不同點上、長半軸傾斜角度不同的首尾相連的多個橢圓曲線,其核心仍然是傾斜橢圓的編程處理。實際機床運行模擬的屏幕硬拷貝圖形如圖10所示。

程序清單以及注釋如下:
N10 G98 S300 M03 主軸800r.p.m正轉(zhuǎn)啟動
N20 T0101 調(diào)用1號刀和刀具補償
N30 G00 X0 Z100. 快速定位
N40 G2 X0 Z-100. R100. F300 模擬加工R 100的圓弧,方便觀察均布橢圓的加工過程
N50 #1=100. 圓弧的半徑
N60 #2=5. 均布橢圓的個數(shù)
N70 #3=180. 圓弧對應(yīng)的圓心角度
N80 #4=#3/#2 每個橢圓對應(yīng)的圓心角度
N90 #5=#1*COS[#4/2.] 橢圓中心點與原點的距離
N100 #6=#1*SIN[#4/2.] 橢圓的長半軸計算
N110 #7=#6*0.6 橢圓的短半軸,因為沒有尺寸,暫定 為長半軸的0.6倍
N120 #8=#4/2. |OP |連線與Z軸的起始夾角
N130 #21=1. 橢圓個數(shù)的計數(shù)器
N140 #9=#5*COS[#8] 橢圓中心點的Z 坐標(biāo)計算
N150 #11=-#5*SIN[#8] 橢圓中心點的X 坐標(biāo)計算
N160 #12=90. -#8 橢圓長半軸傾斜的角度計算
N170 #15=#6 橢圓Z 向變量#4的起始數(shù)值
N180 #16=SQRT[#6*#6-#15*#15] 普通橢圓上點X坐標(biāo)的計算
N190 #16=-#16*#7/#6 普通橢圓上點X 坐標(biāo)的計算
N200#17=#15*SIN[#12]+#16*COS[#12] 傾斜橢圓上點X坐標(biāo)的計算
N210 #18=#15*COS[#12] -#16*SIN[#12] 傾斜橢圓上點Z 坐標(biāo)的計算
N220 #18=#18+#9 橢圓上點Z 坐標(biāo)的偏移計算
N230 #17=#17+#11 橢圓上點X 坐標(biāo)的偏移計算
N240 G01 X[2.*#17] Z#18 F300 直線段逼近橢圓
N250 #15=#15-#6/40. Z向變量#4循環(huán)遞減步距#6/40
N260 IF[#15GE[-#6]] GOTO180 循環(huán)判斷語句
N270 #8=#8+#4 |OP |連線與Z軸的夾角循環(huán)遞增
N280 #21=#21+1. 橢圓個數(shù)計數(shù)器遞增1.0
N290 IF[#21LE#2]GOTO140 循環(huán)判斷語句 N300 G00 X100. X 向退刀
N310 Z100. Z 向退刀 N320 M30
程序結(jié)束
在上面的宏程序中,有幾點注意事項:
(1)這是在凹圓弧上的多個凹橢圓曲線,加工區(qū)域都是在X軸的負(fù)值區(qū)域,在實際切削加工中是不可能出現(xiàn)的。實際切 削時,可以把橢圓上的坐標(biāo)點向X 向(或Z向)做相應(yīng)的偏移處理。另外,因為圖樣條件都是假設(shè),沒有考慮刀具的角度以及加工干涉的問題。
(2)本程序中使用了雙重循環(huán),內(nèi)循環(huán)控制單個橢圓曲線的加工(本程序加工的是半個橢圓,當(dāng)然可以改變參數(shù),加工起點和終點不同的部分橢圓)。外循環(huán)控制橢圓中心點的坐標(biāo)和橢圓長軸傾斜角度的變化,最終加工出連續(xù)的橢圓曲線族。
(3)本程序中還有一個特殊之處是在橢圓曲線的編程時,Z向變量#15的步距,一般橢圓曲線宏程序編制時取的步距為0.1、0.2、0.4、0.5…等規(guī)整的數(shù)值,但是在本程序中不可以,因為橢圓的長半軸的計算出的數(shù)值不是整數(shù)值,所以步距取#6/40.0,即步距為長半軸的1/40,也可以說是用40段直 線段逼近橢圓曲線。分母的數(shù)值越大,步距越小,曲線加工的精度越高。如果使用規(guī)整數(shù)值0.1、0.2、0.4、0.5…,有可能出現(xiàn)橢圓曲線的末端加工“欠切”和“過切”的現(xiàn)象。
(4)本程序中使用的是坐標(biāo)旋轉(zhuǎn)公式(1)、(2 )和(4),沒有使用公式(3),其原因是:
◎使用公式(3)必須使用反余弦函數(shù)ACOS[ ](或反正切 函數(shù)ATAN[X]/[Z]),而這兩個反函數(shù)都有無定義點(ACOS[-1.0]在實際機床數(shù)控系統(tǒng)中也無定義,會報警出錯)。對于無定義點需要特殊程序段處理,增加了程序段數(shù)量和編程難度。
◎使用反余弦函數(shù)ACOS[ ](或反正切函數(shù)ATAN[X]/[Z])時,需要多次數(shù)學(xué)運算,在連續(xù)橢圓曲線加工運算時會出現(xiàn)累積誤差,導(dǎo)致最后一個橢圓曲線“欠切”,但對單個橢圓曲線不會出現(xiàn)這種情況。
◎公式(1)、(2)和(4)中只有單次數(shù)學(xué)運算,不存在無定義點,沒有累積誤差,編程簡單,推薦使用。本文使用公式(3)編程只是增加一種編程思路,起對比分析作用。
四、程序分析總結(jié)
(1)宏程序的功能是強大的,但邏輯思維性強,需要考慮多個參數(shù)的變化及其相互的關(guān)系,而數(shù)學(xué)培養(yǎng)鍛煉的正是人的思維的邏輯性、條理性和敏銳性,良好的數(shù)學(xué)基礎(chǔ)是掌握并熟練運用宏程序的前提條件。
(2)通過三種數(shù)學(xué)處理方法得出的坐標(biāo)旋轉(zhuǎn)點的計算公式(1)、(2)和(4)具有通用性,與具體的曲線形式無關(guān),即公式(1)、(2)和(4)對于傾斜的橢圓、雙曲線、拋物線、正(余)弦曲線等非圓曲線都適用。
(3)有些書籍中把宏程序稱為“自由編程”是有一定的道理的,每個人都可以根據(jù)自己不同的數(shù)學(xué)基礎(chǔ),對于同一圖形不同的解讀,以不同的思路,編制出不同的加工程序,而最終得到的加工結(jié)果是相同的。這也驗證了數(shù)控加工的一個基本原則:“數(shù)控加工沒有惟一的途徑,只有惟一的結(jié)果”。
相關(guān)文章
- 2021-09-08BIM技術(shù)叢書Revit軟件應(yīng)用系列Autodesk Revit族詳解 [
- 2021-09-08全國專業(yè)技術(shù)人員計算機應(yīng)用能力考試用書 AutoCAD2004
- 2021-09-08EXCEL在工作中的應(yīng)用 制表、數(shù)據(jù)處理及宏應(yīng)用PDF下載
- 2021-08-30從零開始AutoCAD 2014中文版機械制圖基礎(chǔ)培訓(xùn)教程 [李
- 2021-08-30從零開始AutoCAD 2014中文版建筑制圖基礎(chǔ)培訓(xùn)教程 [朱
- 2021-08-30電氣CAD實例教程AutoCAD 2010中文版 [左昉 等編著] 20
- 2021-08-30電影風(fēng)暴2:Maya影像實拍與三維合成攻略PDF下載
- 2021-08-30高等院校藝術(shù)設(shè)計案例教程中文版AutoCAD 建筑設(shè)計案例
- 2021-08-29環(huán)境藝術(shù)制圖AutoCAD [徐幼光 編著] 2013年P(guān)DF下載
- 2021-08-29機械A(chǔ)utoCAD 項目教程 第3版 [繆希偉 主編] 2012年P(guān)DF