4. 將記錄的數(shù)值輸入系統(tǒng)之內(nèi),系統(tǒng)會自動生成X軸Z向的直線度誤差(圖2)
7 _+ @: R9 e# l/ ` ~# r1 O! N7 x( S* ?# {; }* o- E% L( X
圖1 X軸Z向直線度檢測示意圖
2 l2 a! j% k% ?
" c+ A, ]. y- R+ X
& s3 Q1 H( q/ `
8 m8 a, q: ]" t" ~1 l7 Q7 B l圖2 檢驗結(jié)果樣例
/ ~7 O& Z/ g1 _2 [! q5 z8 p3 j9 d+ u# @3 K% `' Q; }" I! l
問題的提出:5 u/ b( Q/ `$ |1 ]1 x0 l
公司規(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)的辦法。
+ ^4 U7 e, f9 ~" v! O7 r9 X
解決問題的思路:
1 Z* Z; h: h8 g! R1 s聯(lián)想到該機(jī)床的基本結(jié)構(gòu),,立柱中間為了放置轉(zhuǎn)臺開了一個很大的口子,這必然影響到整個機(jī)床在此處的剛性,,反映到上面提到的x軸z方向直線度便是兩側(cè)高而中間低的情況,,這在軟件上也非常清楚的顯示了出來(圖3),解決的辦法就是在立柱的導(dǎo)軌上加工出一個中凸的曲線來抵消重力對直線度的影響,。5 a- e6 c6 `' _
& g0 n6 p `( _* ~2 p/ T4 Y1 I圖3 直線度誤差曲線圖
1 p3 ^. [5 S" }( {( l3 P問題的一般化:
, T0 G0 P# S4 Y9 ]我的雄心絕不僅僅是隨便給出一個結(jié)果這么簡單,,我想把這個問題更加一般化:
, ]. a3 m( O3 j- C* c2 L( J
1.如何根據(jù)輸入的幾個點求整條軸的直線度?
5 u A2 C. C6 B( D$ K9 A1 N2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律,?換言之,,該直線度的走向能否被一條曲線擬合,如果能,,那曲線的方程應(yīng)該是什么,?
4 h: ^3 m: E# I0 q3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線,?
" ~+ x! q* r8 X: U
4.如何求得3中提出來的擬合曲線的補(bǔ)償曲線,?
' n( n( H# z$ w) H' o6 O9 `5.補(bǔ)償曲線求好后,如何反推其正確性(通過已有的機(jī)床直線度數(shù)據(jù)反求)
6 W4 M; I9 H% n7 h! q5 D/ Z4 e5 A具體的解決思路:
0 t. ` H, t" C% y* r/ ]. b H為了便于理解,,我對機(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軸重合,方向一直,,單位為微米,。
4 O) H% k; c# T4 [& `
1.如何根據(jù)輸入的幾個點求整條軸的直線度?
) j( |) X% k0 u5 Q; n0 Y# ^7 f這個問題比較簡單,只要在坐標(biāo)軸上畫出每個點對應(yīng)的X軸Z方向的直線度測量數(shù)據(jù),,然后通過最小二乘法擬合出一條直線,,每個點與該直線的豎直距離(注意是Z方向差值的絕對值,而不是點到直線的垂直距離,,這個具體可以參考最小二乘法的定義及求法)的差值即為該點的偏差值,,這個行程上點與點之間偏差值的差的最大值就是X軸在Z方向的直線度。下面就以圖2的檢測數(shù)據(jù)為例編程求出該機(jī)床的X軸Z方向直線度(圖4),。
! M- L& N) k7 k* z
圖4 X軸Z方向的直線度求法模擬
9 m2 t9 M9 L8 D% @" l0 n由圖中可以看出,,用該方法求出的偏差值及直線度誤差與系統(tǒng)給出的完全一致,這里給出的精度甚至更高,。(具體的編程代碼我就不給出了,,熟悉編程的朋友可以自己去編個看看)
2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律,?換言之,,該直線度的走向能否被一條曲線擬合,如果能,,那曲線的方程應(yīng)該是什么,?
: k" ~+ D( p9 W5 y, u: _ G* n, P
上面既然求出了每個點的實際偏差值,問題就簡單了:把實際偏差值輸入到坐標(biāo)軸中,,用合適的曲線模擬出偏差的趨勢或走向,,用的當(dāng)然還是最小二乘法。至于擬合曲線的選取,,我這里選擇了二次曲線,,當(dāng)然讀者也可以選更高次的曲線模擬。(圖5)
, e1 O/ l/ `4 B2 `' d2 a; Y0 X" J; i
7 }9 ]# j# N3 n圖5 用二次曲線擬合直線度偏差點
$ e$ q! Y" `# Q# {. [9 y
$ L( A1 g* N. W% R
從圖中可見,,模擬的效果還是不錯的,,點的位置基本上符合了二次曲線的規(guī)律。
^, J& a: z! y( `, v! w* `! |
0 V7 U( t' ?9 ]( _" |$ G) ]2 p3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),,我如何來求得最適合的一條擬合曲線,?
. T4 y/ k- e* k
從問題2中我們可以求得每臺機(jī)床的直線度情況,但是供應(yīng)商加工鑄件的精度在一定范圍內(nèi)是隨機(jī)的,,這就需要我們從大數(shù)據(jù)中求得最適合的一條曲線,,通過該條曲線的加工補(bǔ)償,可以使得每臺機(jī)床直線度都不至于偏離太遠(yuǎn)。這個最適合應(yīng)該怎么定義呢,?我還是使用最小二乘法的原理,,在軸的每個特定位置求出剛剛擬合出的幾十條曲線的直線度偏差值,然后找到該位置上的一個偏差值使得該值到其他機(jī)床在該位置偏差的距離的平方和最小,,如此再做最小二乘擬合,,所得的二次曲線便是幾十臺機(jī)床直線度誤差的平均值了。(圖6)
+ e- \9 C9 ^5 M; {/ n) F, r* c" n# Z7 w" M7 m
圖6 多臺機(jī)床直線度數(shù)據(jù)擬合
t% C: A# Q3 V8 g; [# m# u
2 N" A6 Y. D# n9 D+ m: \3 n
本次我一共擬合了10臺的數(shù)據(jù),,得到了上述的表達(dá)式和函數(shù)圖像
3 Q+ o% ]5 B" i3 s D% \
4.如何求得3中提出來的擬合曲線的補(bǔ)償曲線,?
, B8 ?3 c( v- E0 F7 f; c j. X& z上面的曲線方程出來以后,這一步也就可以順利解答了,,只要把上面的方程按X軸對稱即可得到補(bǔ)償函數(shù),,當(dāng)然這個函數(shù)還不是我們要的,為了方便加工,,給出的函數(shù)需要假設(shè)兩頭為0,,中間高,從而讓加工廠不必費力再去計算各點的差值,,直接從函數(shù)中就可以計算出每個點的補(bǔ)償值,。(圖7)當(dāng)然考慮的實際的精度,中間一項可以刪除,。從而得到更加簡潔的函數(shù)表達(dá)式。
+ W7 [3 M* u$ q6 P0 b* `$ O圖7 最終得到的可用于加工的補(bǔ)償函數(shù)及圖像
" y1 Z- c/ a0 w
# R3 v3 Q. A% \8 ^
5.補(bǔ)償曲線求好后,,如何反推其正確性(通過已有的機(jī)床直線度數(shù)據(jù)反求)
把上面求出的補(bǔ)償曲線與每臺機(jī)床的直線度誤差曲線合并后,,再使用步驟1的方法可以得到補(bǔ)償后的結(jié)果。(圖8)
! k/ g7 \4 c0 L \( n
0 _! Q% N+ V. Q# l
圖8 補(bǔ)償前后直線度誤差對比
% J' r6 r7 E' e3 \$ D# p/ @' h: _3 M d, v1 @3 M
由上圖可以看出,,補(bǔ)償后的直線度誤差沒有超過6微米的,,除了第5臺機(jī)床,其他的都要明顯好于補(bǔ)償前的結(jié)果,。
) r8 w( c" T/ X" g1 G: D結(jié)論:/ F0 ~" [9 e4 Q$ A
通過機(jī)械的補(bǔ)償可以達(dá)到預(yù)期的效果,,但是值得注意的是,補(bǔ)償后的誤差仍然可以通過系統(tǒng)插值法來進(jìn)一步補(bǔ)償,。而軟件補(bǔ)償是針對單臺機(jī)床來說的,,從下圖可以看到,如果需要,,二次補(bǔ)償后直線度在1微米之內(nèi)甚至更高精度要求內(nèi)完全沒有問題,。
; V- V; x9 u: f. L( o8 {' M$ c# [
$ @% d( a" x3 @( h
圖9 補(bǔ)償后的偏差仍然可以通過二次曲線在軟件中補(bǔ)償
' x4 l& @# w5 y2 `
. O9 X/ s2 h( K9 T$ O$ b
% S- R6 ^6 i0 c( K$ S# x: g# C; n
% Q u) R0 L) W T
% R: b. i1 o. q( y5 C