4. 將記錄的數(shù)值輸入系統(tǒng)之內(nèi),,系統(tǒng)會自動生成X軸Z向的直線度誤差(圖2)
$ j8 C3 W& a- x2 F* ^8 Y
2 L {, G6 a& B# D
圖1 X軸Z向直線度檢測示意圖
, a) ~$ A& N: g* o
3 |% {+ I8 `% j. h5 D
) j3 Z" B- w! D
9 K# Y2 _/ g3 O1 k1 A) O圖2 檢驗結(jié)果樣例
4 J: m; Y% b9 B6 ^- h* x
D, h3 H- f7 P! O( y, P$ O問題的提出:! V* e0 j" j8 F& I
公司規(guī)定的該處直線度誤差應(yīng)為11μm之內(nèi),據(jù)車間及工藝反映:,,自從該機型量產(chǎn)后的幾十臺檢驗結(jié)果,,該處直線度誤差一直在超差邊緣,機械調(diào)整非常困難,,公司內(nèi)部不允許在工廠階段進行軟件優(yōu)化補償,因為現(xiàn)在我主管該產(chǎn)品了,,恰好之前按照總部的要求將導(dǎo)軌及絲杠都做了優(yōu)化改進,,鑄件也都做了更改,超差的兩臺機器正好是前兩臺樣機,,于是質(zhì)量部門召開了一次會議,,要求從機械上想辦法對該問題做出一些分析,并提出改進的辦法,。
' Y# [# m5 E D! Q1 s
解決問題的思路:
6 ~ L, i4 v4 f6 _聯(lián)想到該機床的基本結(jié)構(gòu),,立柱中間為了放置轉(zhuǎn)臺開了一個很大的口子,這必然影響到整個機床在此處的剛性,,反映到上面提到的x軸z方向直線度便是兩側(cè)高而中間低的情況,,這在軟件上也非常清楚的顯示了出來(圖3),解決的辦法就是在立柱的導(dǎo)軌上加工出一個中凸的曲線來抵消重力對直線度的影響,。
- O* u5 c0 j7 y5 V
' j2 G, D" o$ O% s6 k" C r+ A; \圖3 直線度誤差曲線圖
; a) t# V# E2 T9 z" _& T問題的一般化:
# u& o( a, `- l" H/ C4 ^我的雄心絕不僅僅是隨便給出一個結(jié)果這么簡單,,我想把這個問題更加一般化:
% |$ w+ ]/ I2 T v; `: |1.如何根據(jù)輸入的幾個點求整條軸的直線度?
+ C. S% d3 N1 y' z9 i, F
2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律,?換言之,,該直線度的走向能否被一條曲線擬合,如果能,,那曲線的方程應(yīng)該是什么,?
! j! G# c! E2 v& a' x* M3 r
3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線,?
" \8 S5 u1 {/ F+ ?0 E7 y4.如何求得3中提出來的擬合曲線的補償曲線,?
) e( Q: H# d2 u' A% x5.補償曲線求好后,如何反推其正確性(通過已有的機床直線度數(shù)據(jù)反求)
8 O* `4 s2 l7 a. _+ Y4 L具體的解決思路:
. L# [; Q, v# Q( x為了便于理解,我對機床軸和坐標軸的對應(yīng)關(guān)系做一個描述:令機床軸X軸的中點作為坐標的原點,,坐標軸X軸的正向為機床軸X軸行程的正向,,這樣,這個問題中700mm的行程可以在坐標軸上對應(yīng)為為X軸的-350,,-320,,…,0,,…,,320,350,,單位為毫米,,坐標軸Y軸和機床Z軸重合,方向一直,,單位為微米,。
' s0 s* i' S f( r/ z+ P, d; X
1.如何根據(jù)輸入的幾個點求整條軸的直線度?
' p1 b2 h5 `$ I% d
這個問題比較簡單,只要在坐標軸上畫出每個點對應(yīng)的X軸Z方向的直線度測量數(shù)據(jù),,然后通過最小二乘法擬合出一條直線,,每個點與該直線的豎直距離(注意是Z方向差值的絕對值,而不是點到直線的垂直距離,,這個具體可以參考最小二乘法的定義及求法)的差值即為該點的偏差值,,這個行程上點與點之間偏差值的差的最大值就是X軸在Z方向的直線度。下面就以圖2的檢測數(shù)據(jù)為例編程求出該機床的X軸Z方向直線度(圖4),。
' ^6 N. W7 V% V1 t' \* w! g圖4 X軸Z方向的直線度求法模擬
+ A1 }; A8 b' E# t2 o j Q: s
由圖中可以看出,,用該方法求出的偏差值及直線度誤差與系統(tǒng)給出的完全一致,這里給出的精度甚至更高,。(具體的編程代碼我就不給出了,,熟悉編程的朋友可以自己去編個看看)
2.如果該直線度的走向有規(guī)律可循,如何找到該規(guī)律,?換言之,,該直線度的走向能否被一條曲線擬合,如果能,,那曲線的方程應(yīng)該是什么,?
9 y) E7 f9 _1 J; O
上面既然求出了每個點的實際偏差值,問題就簡單了:把實際偏差值輸入到坐標軸中,,用合適的曲線模擬出偏差的趨勢或走向,,用的當(dāng)然還是最小二乘法。至于擬合曲線的選取,,我這里選擇了二次曲線,,當(dāng)然讀者也可以選更高次的曲線模擬,。(圖5)
9 ?. d4 P/ e( \3 k- @" T! a1 B$ J* ~0 l1 m. \
圖5 用二次曲線擬合直線度偏差點
4 R( ?. T8 p7 E
6 d; b2 Z5 @) n# g, e* B' M從圖中可見,模擬的效果還是不錯的,,點的位置基本上符合了二次曲線的規(guī)律,。
! \$ L2 P. A* K2 }2 ^0 C3 B4 D . a2 m/ m3 \8 ~ E' P
3.如果我手上有幾十臺該直線度的檢測數(shù)據(jù),我如何來求得最適合的一條擬合曲線,?
7 ^4 |* u, s! e5 m) a( G/ \
從問題2中我們可以求得每臺機床的直線度情況,,但是供應(yīng)商加工鑄件的精度在一定范圍內(nèi)是隨機的,這就需要我們從大數(shù)據(jù)中求得最適合的一條曲線,,通過該條曲線的加工補償,,可以使得每臺機床直線度都不至于偏離太遠。這個最適合應(yīng)該怎么定義呢,?我還是使用最小二乘法的原理,,在軸的每個特定位置求出剛剛擬合出的幾十條曲線的直線度偏差值,然后找到該位置上的一個偏差值使得該值到其他機床在該位置偏差的距離的平方和最小,,如此再做最小二乘擬合,,所得的二次曲線便是幾十臺機床直線度誤差的平均值了。(圖6)
& v& x0 X6 o/ L+ {0 y
- |1 i, e9 i; L! ~4 G
圖6 多臺機床直線度數(shù)據(jù)擬合( \2 R3 M) a0 ~- ]; O5 P7 l# ~
# L" }+ l: e- J3 B m$ X& p
本次我一共擬合了10臺的數(shù)據(jù),,得到了上述的表達式和函數(shù)圖像
6 |" ]9 x0 F2 s
4.如何求得3中提出來的擬合曲線的補償曲線,?
& W, N3 I4 V* u# x$ K* K& k+ }
上面的曲線方程出來以后,這一步也就可以順利解答了,,只要把上面的方程按X軸對稱即可得到補償函數(shù),當(dāng)然這個函數(shù)還不是我們要的,,為了方便加工,,給出的函數(shù)需要假設(shè)兩頭為0,中間高,,從而讓加工廠不必費力再去計算各點的差值,,直接從函數(shù)中就可以計算出每個點的補償值。(圖7)當(dāng)然考慮的實際的精度,,中間一項可以刪除,。從而得到更加簡潔的函數(shù)表達式。
, _0 z* D' |- f' J) x
圖7 最終得到的可用于加工的補償函數(shù)及圖像
% [6 E* p1 U( |3 p. q
+ W- f! W+ c6 G* m1 m x5.補償曲線求好后,,如何反推其正確性(通過已有的機床直線度數(shù)據(jù)反求)
把上面求出的補償曲線與每臺機床的直線度誤差曲線合并后,,再使用步驟1的方法可以得到補償后的結(jié)果。(圖8)
. D3 S' A+ ]$ G- m/ \
! ]- Y; A2 s7 y4 b0 e6 ]. @- |( w+ [圖8 補償前后直線度誤差對比
4 w8 G) W* Q8 D2 F0 u
) D* a0 Y0 ~* H$ N0 G' S" {8 a, x 由上圖可以看出,,補償后的直線度誤差沒有超過6微米的,,除了第5臺機床,其他的都要明顯好于補償前的結(jié)果,。
2 t/ X1 t9 n- Y/ N結(jié)論:
3 P0 t; O: r! B8 T通過機械的補償可以達到預(yù)期的效果,,但是值得注意的是,補償后的誤差仍然可以通過系統(tǒng)插值法來進一步補償。而軟件補償是針對單臺機床來說的,,從下圖可以看到,,如果需要,二次補償后直線度在1微米之內(nèi)甚至更高精度要求內(nèi)完全沒有問題,。
1 c* a1 ]; ^ O2 e, I! K/ ]% I0 v
- Y9 ?$ j# F3 X! M圖9 補償后的偏差仍然可以通過二次曲線在軟件中補償
5 u% N5 G' D9 e3 r
1 o. ]7 i2 X* q9 y! G9 O, \! V5 X
* N* V w0 m9 `- B J# ]5 p- v5 h! S, `: m* l9 J: R
3 o4 u/ |) d) r4 b7 O+ `# j0 {( |