4. 將記錄的數(shù)值輸入系統(tǒng)之內(nèi),系統(tǒng)會自動生成X軸Z向的直線度誤差(圖2)
$ q Q* k1 n8 Z" O1 _
- p: a, ~! J! x# J3 V8 W
圖1 X軸Z向直線度檢測示意圖
( G( _. c6 ?( ?, L
( t( r' M/ r9 d$ a. R& F+ l
/ V( A ]$ [& Z- M0 t9 E' f& B# m; @- {2 ?. g8 Z0 L* H6 S
圖2 檢驗結(jié)果樣例
( _9 a$ v5 R4 w# B# u
- N2 m8 P3 ~/ ?, X" X! z問題的提出:
4 p$ [( Q3 T+ o, Y2 k1 p公司規(guī)定的該處直線度誤差應(yīng)為11μm之內(nèi),據(jù)車間及工藝反映:,自從該機(jī)型量產(chǎn)后的幾十臺檢驗結(jié)果,該處直線度誤差一直在超差邊緣,機(jī)械調(diào)整非常困難,公司內(nèi)部不允許在工廠階段進(jìn)行軟件優(yōu)化補償,因為現(xiàn)在我主管該產(chǎn)品了,恰好之前按照總部的要求將導(dǎo)軌及絲杠都做了優(yōu)化改進(jìn),鑄件也都做了更改,超差的兩臺機(jī)器正好是前兩臺樣機(jī),于是質(zhì)量部門召開了一次會議,要求從機(jī)械上想辦法對該問題做出一些分析,并提出改進(jìn)的辦法。
5 T9 J, y+ N7 l0 p3 x4 U( P解決問題的思路:
0 k4 n5 b8 d0 D) z( E4 Z7 l聯(lián)想到該機(jī)床的基本結(jié)構(gòu),立柱中間為了放置轉(zhuǎn)臺開了一個很大的口子,這必然影響到整個機(jī)床在此處的剛性,反映到上面提到的x軸z方向直線度便是兩側(cè)高而中間低的情況,這在軟件上也非常清楚的顯示了出來(圖3),解決的辦法就是在立柱的導(dǎo)軌上加工出一個中凸的曲線來抵消重力對直線度的影響。
8 h7 ~6 a/ D0 o) f9 ^( M7 N* y- K1 t* A6 q* `' n7 U
圖3 直線度誤差曲線圖
% T1 g7 @ J" v2 g( y問題的一般化:5 H! C" ]" s6 P
我的雄心絕不僅僅是隨便給出一個結(jié)果這么簡單,我想把這個問題更加一般化:
5 U$ w5 c; @3 l+ R, }" z1.如何根據(jù)輸入的幾個點求整條軸的直線度?
& \2 \( G3 e( q6 J; u2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律?換言之,該直線度的走向能否被一條曲線擬合,如果能,那曲線的方程應(yīng)該是什么?
4 h& _! Z {& h8 n9 a% z3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線?
: }) M: z6 G' D# U# f
4.如何求得3中提出來的擬合曲線的補償曲線?
9 |+ @; n. X. }6 q& B1 G
5.補償曲線求好后,如何反推其正確性(通過已有的機(jī)床直線度數(shù)據(jù)反求)
0 M# K' P' ]) Q& [5 w具體的解決思路:9 B, Q `( G" k( \( a% W$ `- v
為了便于理解,我對機(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軸重合,方向一直,單位為微米。
/ y3 l4 O, d5 u
1.如何根據(jù)輸入的幾個點求整條軸的直線度?
1 g! O& ]8 x5 S! w, J+ Q這個問題比較簡單,只要在坐標(biāo)軸上畫出每個點對應(yīng)的X軸Z方向的直線度測量數(shù)據(jù),然后通過最小二乘法擬合出一條直線,每個點與該直線的豎直距離(注意是Z方向差值的絕對值,而不是點到直線的垂直距離,這個具體可以參考最小二乘法的定義及求法)的差值即為該點的偏差值,這個行程上點與點之間偏差值的差的最大值就是X軸在Z方向的直線度。下面就以圖2的檢測數(shù)據(jù)為例編程求出該機(jī)床的X軸Z方向直線度(圖4)。
7 \6 N& T; C/ c) c圖4 X軸Z方向的直線度求法模擬
- v! e5 F, h) ^' D
由圖中可以看出,用該方法求出的偏差值及直線度誤差與系統(tǒng)給出的完全一致,這里給出的精度甚至更高。(具體的編程代碼我就不給出了,熟悉編程的朋友可以自己去編個看看)
2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律?換言之,該直線度的走向能否被一條曲線擬合,如果能,那曲線的方程應(yīng)該是什么?
$ z* [4 ?, V2 r
上面既然求出了每個點的實際偏差值,問題就簡單了:把實際偏差值輸入到坐標(biāo)軸中,用合適的曲線模擬出偏差的趨勢或走向,用的當(dāng)然還是最小二乘法。至于擬合曲線的選取,我這里選擇了二次曲線,當(dāng)然讀者也可以選更高次的曲線模擬。(圖5)
9 l: U+ r) N q, e
9 i# H3 r5 ~+ N& f- X, `
圖5 用二次曲線擬合直線度偏差點
) s! \4 O" W- q1 g) V8 D! v( p
# } K: {4 a6 G+ R7 l" Z從圖中可見,模擬的效果還是不錯的,點的位置基本上符合了二次曲線的規(guī)律。
" {6 V5 z# r+ A+ d, l% B
2 i* L8 _3 W3 j) N3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線?
' Y) o$ j6 o7 |% k0 ^
從問題2中我們可以求得每臺機(jī)床的直線度情況,但是供應(yīng)商加工鑄件的精度在一定范圍內(nèi)是隨機(jī)的,這就需要我們從大數(shù)據(jù)中求得最適合的一條曲線,通過該條曲線的加工補償,可以使得每臺機(jī)床直線度都不至于偏離太遠(yuǎn)。這個最適合應(yīng)該怎么定義呢?我還是使用最小二乘法的原理,在軸的每個特定位置求出剛剛擬合出的幾十條曲線的直線度偏差值,然后找到該位置上的一個偏差值使得該值到其他機(jī)床在該位置偏差的距離的平方和最小,如此再做最小二乘擬合,所得的二次曲線便是幾十臺機(jī)床直線度誤差的平均值了。(圖6); @; c: K/ W: g
' S3 z8 U1 j; H* y E
圖6 多臺機(jī)床直線度數(shù)據(jù)擬合
7 d1 e. ~: n/ s
, {4 t/ O% a; A$ r* _' Y
本次我一共擬合了10臺的數(shù)據(jù),得到了上述的表達(dá)式和函數(shù)圖像
7 U( p7 ] I/ m f* @; h
4.如何求得3中提出來的擬合曲線的補償曲線?
/ g$ @/ W3 L: y9 M( D8 d( a; J' X上面的曲線方程出來以后,這一步也就可以順利解答了,只要把上面的方程按X軸對稱即可得到補償函數(shù),當(dāng)然這個函數(shù)還不是我們要的,為了方便加工,給出的函數(shù)需要假設(shè)兩頭為0,中間高,從而讓加工廠不必費力再去計算各點的差值,直接從函數(shù)中就可以計算出每個點的補償值。(圖7)當(dāng)然考慮的實際的精度,中間一項可以刪除。從而得到更加簡潔的函數(shù)表達(dá)式。
* u* F2 Y9 ]0 O8 s4 e圖7 最終得到的可用于加工的補償函數(shù)及圖像
( K- r4 N) f/ p: W& Y/ t
5 D: W* M" I( c5 r3 X
5.補償曲線求好后,如何反推其正確性(通過已有的機(jī)床直線度數(shù)據(jù)反求)
把上面求出的補償曲線與每臺機(jī)床的直線度誤差曲線合并后,再使用步驟1的方法可以得到補償后的結(jié)果。(圖8)
3 _5 A* h7 V1 p0 ]# c
% U/ Q) t- w7 p! o; R圖8 補償前后直線度誤差對比
. y$ m" e: l" W9 i( l i7 R/ z
5 A/ m# q$ |9 h* q; V 由上圖可以看出,補償后的直線度誤差沒有超過6微米的,除了第5臺機(jī)床,其他的都要明顯好于補償前的結(jié)果。
) a3 Q7 l, K# A# r- f: K+ [
結(jié)論:
1 M1 }+ U9 g! f- T& \% X通過機(jī)械的補償可以達(dá)到預(yù)期的效果,但是值得注意的是,補償后的誤差仍然可以通過系統(tǒng)插值法來進(jìn)一步補償。而軟件補償是針對單臺機(jī)床來說的,從下圖可以看到,如果需要,二次補償后直線度在1微米之內(nèi)甚至更高精度要求內(nèi)完全沒有問題。
, L+ f: v0 ?1 P1 K- \9 t* D
4 e( _ ^, s% w& ]圖9 補償后的偏差仍然可以通過二次曲線在軟件中補償
5 J4 y* e3 U$ r }7 P9 G
$ Y# a1 G0 E& D% `9 a# z
( {) m1 b- f" M; Z9 T* P
2 `3 B" m& l% X; ?; a6 @
7 I; w6 O( b* \- V; n$ D3 D$ i