4. 將記錄的數(shù)值輸入系統(tǒng)之內(nèi),系統(tǒng)會自動生成X軸Z向的直線度誤差(圖2)
( e( Q- ?. `* r1 V
4 ^2 i9 o3 {: E3 h; ?* s1 V" L h$ Z
圖1 X軸Z向直線度檢測示意圖
. Z$ K# E& r0 Z$ _- }! ~3 B, D0 f5 k9 S
3 K0 z% J' s. Y+ y8 q( b( z; s* K- X) D/ Z) K j
圖2 檢驗結(jié)果樣例
& |1 E+ Z/ G2 [9 |0 I" |' C6 I8 Y% N
5 T4 l# X2 p9 h1 [, p& G# h4 o: E問題的提出:
; v$ x7 E) I# T t公司規(guī)定的該處直線度誤差應(yīng)為11μm之內(nèi),據(jù)車間及工藝反映:,自從該機(jī)型量產(chǎn)后的幾十臺檢驗結(jié)果,該處直線度誤差一直在超差邊緣,機(jī)械調(diào)整非常困難,公司內(nèi)部不允許在工廠階段進(jìn)行軟件優(yōu)化補(bǔ)償,因為現(xiàn)在我主管該產(chǎn)品了,恰好之前按照總部的要求將導(dǎo)軌及絲杠都做了優(yōu)化改進(jìn),鑄件也都做了更改,超差的兩臺機(jī)器正好是前兩臺樣機(jī),于是質(zhì)量部門召開了一次會議,要求從機(jī)械上想辦法對該問題做出一些分析,并提出改進(jìn)的辦法。
( u! m9 M; m% a$ [
解決問題的思路:
. U! \' @; w5 [3 F1 s聯(lián)想到該機(jī)床的基本結(jié)構(gòu),立柱中間為了放置轉(zhuǎn)臺開了一個很大的口子,這必然影響到整個機(jī)床在此處的剛性,反映到上面提到的x軸z方向直線度便是兩側(cè)高而中間低的情況,這在軟件上也非常清楚的顯示了出來(圖3),解決的辦法就是在立柱的導(dǎo)軌上加工出一個中凸的曲線來抵消重力對直線度的影響。
7 O* I) k0 s1 `/ c, n' U+ {6 O
) t. ~0 G7 q, w. m圖3 直線度誤差曲線圖
( m9 d& D& L8 s5 P( v' x: I
問題的一般化:# r- F t$ {2 b
我的雄心絕不僅僅是隨便給出一個結(jié)果這么簡單,我想把這個問題更加一般化:
2 i1 s; c" ?& Q- W4 l; j0 n H
1.如何根據(jù)輸入的幾個點求整條軸的直線度?
Q3 b0 Z2 k& Z" }% T) n* @3 Q! i2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律?換言之,該直線度的走向能否被一條曲線擬合,如果能,那曲線的方程應(yīng)該是什么?
+ y% y1 [ U: M' w, I1 [3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線?
9 P. w9 O: [0 h4.如何求得3中提出來的擬合曲線的補(bǔ)償曲線?
. ^; U, i3 F6 y5 Y7 C5.補(bǔ)償曲線求好后,如何反推其正確性(通過已有的機(jī)床直線度數(shù)據(jù)反求)
. m2 q n1 P! k; H- g% J: k7 }
具體的解決思路:
& Q7 l ~- ?( h9 l* [為了便于理解,我對機(jī)床軸和坐標(biāo)軸的對應(yīng)關(guān)系做一個描述:令機(jī)床軸X軸的中點作為坐標(biāo)的原點,坐標(biāo)軸X軸的正向為機(jī)床軸X軸行程的正向,這樣,這個問題中700mm的行程可以在坐標(biāo)軸上對應(yīng)為為X軸的-350,-320,…,0,…,320,350,單位為毫米,坐標(biāo)軸Y軸和機(jī)床Z軸重合,方向一直,單位為微米。
. w1 T# l& o1 d9 H3 q( }1.如何根據(jù)輸入的幾個點求整條軸的直線度?
" d3 ?8 M) K0 Y, e+ G
這個問題比較簡單,只要在坐標(biāo)軸上畫出每個點對應(yīng)的X軸Z方向的直線度測量數(shù)據(jù),然后通過最小二乘法擬合出一條直線,每個點與該直線的豎直距離(注意是Z方向差值的絕對值,而不是點到直線的垂直距離,這個具體可以參考最小二乘法的定義及求法)的差值即為該點的偏差值,這個行程上點與點之間偏差值的差的最大值就是X軸在Z方向的直線度。下面就以圖2的檢測數(shù)據(jù)為例編程求出該機(jī)床的X軸Z方向直線度(圖4)。
# F8 R- ~3 u& j7 K0 n$ N* l
圖4 X軸Z方向的直線度求法模擬
; Y0 {+ R& t+ Z) N+ R
由圖中可以看出,用該方法求出的偏差值及直線度誤差與系統(tǒng)給出的完全一致,這里給出的精度甚至更高。(具體的編程代碼我就不給出了,熟悉編程的朋友可以自己去編個看看)
2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律?換言之,該直線度的走向能否被一條曲線擬合,如果能,那曲線的方程應(yīng)該是什么?
( c& J) J# a' g6 r( N$ j: k
上面既然求出了每個點的實際偏差值,問題就簡單了:把實際偏差值輸入到坐標(biāo)軸中,用合適的曲線模擬出偏差的趨勢或走向,用的當(dāng)然還是最小二乘法。至于擬合曲線的選取,我這里選擇了二次曲線,當(dāng)然讀者也可以選更高次的曲線模擬。(圖5)
3 I- L! Q/ {4 d6 l$ M, V5 ~6 {$ X0 o z: A E( p# c
圖5 用二次曲線擬合直線度偏差點
" }- ~$ I9 ^6 J0 x' F! Q
% X1 a. @8 u. H. m' a從圖中可見,模擬的效果還是不錯的,點的位置基本上符合了二次曲線的規(guī)律。
7 w& \4 C+ I4 W* x4 z
( L$ R8 s& r9 N5 c' y8 ]' D
3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線?
& _4 X3 o$ {2 x* o' D, E從問題2中我們可以求得每臺機(jī)床的直線度情況,但是供應(yīng)商加工鑄件的精度在一定范圍內(nèi)是隨機(jī)的,這就需要我們從大數(shù)據(jù)中求得最適合的一條曲線,通過該條曲線的加工補(bǔ)償,可以使得每臺機(jī)床直線度都不至于偏離太遠(yuǎn)。這個最適合應(yīng)該怎么定義呢?我還是使用最小二乘法的原理,在軸的每個特定位置求出剛剛擬合出的幾十條曲線的直線度偏差值,然后找到該位置上的一個偏差值使得該值到其他機(jī)床在該位置偏差的距離的平方和最小,如此再做最小二乘擬合,所得的二次曲線便是幾十臺機(jī)床直線度誤差的平均值了。(圖6)
0 X1 T3 J$ _/ P, J5 ^: H1 N3 a1 y+ g* p
圖6 多臺機(jī)床直線度數(shù)據(jù)擬合( ?5 s, N9 I& O+ O( v2 [, Y
# Z* a9 [) ]( D5 v
本次我一共擬合了10臺的數(shù)據(jù),得到了上述的表達(dá)式和函數(shù)圖像
" D3 K$ `2 _' X- b. R' [
4.如何求得3中提出來的擬合曲線的補(bǔ)償曲線?
% i p0 L3 |: O! C8 \
上面的曲線方程出來以后,這一步也就可以順利解答了,只要把上面的方程按X軸對稱即可得到補(bǔ)償函數(shù),當(dāng)然這個函數(shù)還不是我們要的,為了方便加工,給出的函數(shù)需要假設(shè)兩頭為0,中間高,從而讓加工廠不必費力再去計算各點的差值,直接從函數(shù)中就可以計算出每個點的補(bǔ)償值。(圖7)當(dāng)然考慮的實際的精度,中間一項可以刪除。從而得到更加簡潔的函數(shù)表達(dá)式。
* F [0 g G) t2 N
圖7 最終得到的可用于加工的補(bǔ)償函數(shù)及圖像
6 [3 A D0 `7 z, |6 M+ [' S
0 ~; Q1 R( B1 J4 j. p3 Y5 V
5.補(bǔ)償曲線求好后,如何反推其正確性(通過已有的機(jī)床直線度數(shù)據(jù)反求)
把上面求出的補(bǔ)償曲線與每臺機(jī)床的直線度誤差曲線合并后,再使用步驟1的方法可以得到補(bǔ)償后的結(jié)果。(圖8)
, Y: a& r' o+ B/ ^
; n% |% `9 S/ ]+ j u2 r/ U" }
圖8 補(bǔ)償前后直線度誤差對比
9 l! M8 S9 k# m; s6 t6 s$ `% S8 F7 }
由上圖可以看出,補(bǔ)償后的直線度誤差沒有超過6微米的,除了第5臺機(jī)床,其他的都要明顯好于補(bǔ)償前的結(jié)果。
% x' r) F# M/ Y, k) U+ B8 T結(jié)論:
p8 s3 p1 l/ ]* ?" d通過機(jī)械的補(bǔ)償可以達(dá)到預(yù)期的效果,但是值得注意的是,補(bǔ)償后的誤差仍然可以通過系統(tǒng)插值法來進(jìn)一步補(bǔ)償。而軟件補(bǔ)償是針對單臺機(jī)床來說的,從下圖可以看到,如果需要,二次補(bǔ)償后直線度在1微米之內(nèi)甚至更高精度要求內(nèi)完全沒有問題。
" H( y U% g0 r. G: @& T% ~+ B9 _0 p! `/ ~" F) b
圖9 補(bǔ)償后的偏差仍然可以通過二次曲線在軟件中補(bǔ)償
1 P* X ~0 _6 U; N& @- B w' f2 W4 y. }! b6 b N6 ]
- T# b$ x- K" T) K' Q$ R1 l9 I* T: `1 z4 J1 g/ f$ J. F1 l; x
+ p9 A. y0 J+ Z) l; L1 D% ^$ z