1720-203
1720-203
1 引言
直線度公差是關鍵的形位公差項目之一,在生產(chǎn)實際當中使用比較頻繁。直線度誤差測量不像尺寸誤差那樣簡單,普通儀表不能直接顯示測量結(jié)果。目前生產(chǎn)中較為常用的方法是將被測部位分段,通過水平儀測得各個分段兩端點的高度差,然后通過計算(或借助軟件在微機上計算)求得直線度誤差值。如果需要在現(xiàn)場得到誤差值,必須通過專用的小型計算機借助軟件實現(xiàn);如果需要查看誤差曲線或了解誤差方向,現(xiàn)場還需配備打印機??傊?,傳統(tǒng)的測量方案系統(tǒng)普遍存在結(jié)構(gòu)復雜、成本較高、使用不便的缺陷。為了向用戶提供一種更方便、高效、功能完善的誤差處理手段,筆者研制了直線度誤差專用處理系統(tǒng)。該系統(tǒng)集誤差值及誤差曲線打印、小區(qū)域誤差分析等功能于一身,通過對軟件的適當修改,可以與任何具有標準串行接口的電子水平儀接口,系統(tǒng)體積小巧、成本低廉、操作方便,處理的結(jié)果清楚、可信,信息含量高。2 系統(tǒng)結(jié)構(gòu)及工作過程
直線度誤差處理系統(tǒng)由單片機、微型打印頭、標準串行接口組成。單片機負責直線度誤差小區(qū)域確定及誤差值計算、誤差曲線輸出時的直線插補運算以及整個系統(tǒng)的運行控制(包括鍵盤顯示器接口、通信接口、打印頭等的控制)。直線度誤差的小區(qū)域算法以及輸出直線的插補算法全部由8031匯編語言實現(xiàn),駐留在存儲器中。系統(tǒng)啟動后,自動處于實時顯示狀態(tài),微處理器通過串行接口不斷接收電子水平儀發(fā)來的數(shù)據(jù)流(格式由水平儀型號決定)并在顯示器上動態(tài)顯示,以幫助操作人員判斷數(shù)據(jù)是否穩(wěn)定,確認穩(wěn)定后可根據(jù)需要按下確認鍵,系統(tǒng)自動保存當前值作為一個采樣值。依次手動提取N個有效采樣值(N=2~16,對應的測點數(shù)為3~17)后按下打印輸出鍵,微處理器立即開始計算直線度誤差值并在顯示器上予以顯示,打印頭隨即打印出實際誤差直線的放大圖以及小區(qū)域位置和直線度誤差值。系統(tǒng)輸出的內(nèi)容分為兩部分:(1)采樣數(shù)據(jù)及測點高度(采樣值為轉(zhuǎn)換成微米的原始采樣值,高度為各點高度微米值); (2)誤差曲線圖及誤差值,包括兩條小區(qū)域線。3 直線度誤差算法
考慮到單片機有限的內(nèi)存空間,直線度誤差的小區(qū)域評定采用凸多邊形法,具體實現(xiàn)策略采用對分搜索,具體流程。程序要求的測點數(shù)為3~17,因為選擇測點數(shù)小于3時對于計算直線度誤差無意義,測點數(shù)大于17時既受單片機內(nèi)存的限制,同時實用價值也不大。各個凸點的確定按照如下順序進行:- 通過旋轉(zhuǎn)(以左端點為中心)使實際直線兩端點高度y0和yN為0;
-
檢查兩個端點之間是否存在高點m(ym>0)和低點n(yn<0) ,這時會出現(xiàn)以下三種情況(m、n不可能同時不存在):
- 如果僅存在高點m ,則保存序號m,然后將{0、m}以及{m 、N}作為兩對新的端點在它們之間繼續(xù)尋找“高點”,如此循環(huán),直到兩個端點的序號之差等于1或者未找到高點為止。這時所有的凸點都已找到(O、3、5、7四點)。
- 如果僅存在低點n,則保存序號n,然后將{0、n}以及{n、N}作為兩對新的端點在它們之間繼續(xù)尋找“低點”,如此循環(huán),直到兩個端點的序號之差等于1或者未找到低點為止。這時所有的凸點都已找到(O、4、6、7四點)。
- 如果高點m和低點n同時存在,則保存序號m、n,然后將{0 、m}、{m、N}及{0、n}、{n、N} 作為四對新的端點在其間繼續(xù)分別尋找“高點”和“低點”,如此循環(huán)直到每兩個端點的序號之差都等于1或者未找到高點(或低點)為止。此時所有的凸點已經(jīng)找到(O、3、5、7、6、2點)。
4 輸出直線插補算法
系統(tǒng)輸出內(nèi)容的主要部分是帶有小區(qū)域的誤差曲線,為了在有限條件下實現(xiàn)誤差曲線(折線段)的準確輸出,系統(tǒng)中的直線插補采用適合于單片機運算的固定取向算法。這種算法可以保證在微型打印機有限的分辨率下輸出線條清晰、特征明顯的誤差曲線。該算法的核心部分采用Bresenham算法,然后通過適當選擇兩個方向的比例使得任何直線與x 軸的夾角小于45°,便于輸出處理。算法的處理過程。系統(tǒng)中采用的打印頭為Epson公司的M150II微型打印頭,每行96個點(系統(tǒng)中設定為y向),但長度方向(x方向)不受限制,因此必須適當選擇輸出比例,以保證輸出完整的曲線。因此步是搜索|yi|i=0~N-1的大值Ymax,如果該值超過24 (96/4) ,則需對所有yi進行按比例壓縮,保證壓縮后的大值≤24 。由于誤差曲線中每個線段在x軸上的投影固定為48,這樣在的情況下,即相鄰兩個點的y值之差|yi-yi-1|=|24-(-24)|=48時,該段誤差曲線的斜率達到大值1 ,而其他情況下誤差曲線斜率均小于1。這就大大簡化了打印處理過程。同理不難分析,兩條小區(qū)域線的斜率也小于1。直線插補采用Bresenham算法,具體插補過程本文不再贅述。需要說明的是,誤差曲線輸出時實際上需要同時處理三條直線,即誤差曲線和兩條小區(qū)域線(確切地講還應包括x坐標軸,但因x坐標軸是一條特殊直線,無需插補運算,因此框圖中未予表述)。此外,由于小區(qū)域線的插補過程與誤差曲線完全類似,因此框圖中作了簡化。由于Bresenham算法可以處理任何斜率的直線,而本系統(tǒng)為簡化輸出過程,將所有直線斜率調(diào)整到≤1 ,因此將這種改造后的算法稱為基于Bresenham算法的固定取向算法。
5 軟硬件系統(tǒng)設計
與許多應用系統(tǒng)相比,該系統(tǒng)運算量較大,采用8位單片機運算程序設計較為困難,為了降低成本,CPU采用Intel8O31,打印頭驅(qū)動采用MC1413,它驅(qū)動能力強,不需要外圍器件,內(nèi)部設有保護電路,實踐證明它非常適合用作M150II的驅(qū)動;通信部分由于只需要接收電子水平儀的數(shù)據(jù),而且波特率較低,因此采用簡化的三極管電平轉(zhuǎn)換電路;而顯示部分由于需要顯示當前采樣值序號及采樣值本身,因此設置7位8段數(shù)碼顯示器。整個系統(tǒng)電路原理。應該指出,打印頭驅(qū)動部分采用74HC04具有重要意義,否則復位按鈕一旦粘連或操作時按下按鈕時間過長,不僅將導致電源負擔過重,而且還將導致四個打印針的驅(qū)動線圈同時長時間加電,極易燒毀。從電路圖上看,用來生成VDD電源的二極管D2降低了VDD的電壓,看似不合理,實際上它降低了電源消耗,保護了輸出驅(qū)動元件,而實踐證明打印針的擊打力度和針架的運行速度完全可以得到保證。
此外,在簡化的RS232串行接收電路中加入了電阻R9,可以避免T2(S9014)的高放大倍數(shù)由于某種原因可能造成干擾而產(chǎn)生的假信號。D1則用于保護三極管T2 。系統(tǒng)工作程序全部采用8051系列匯編語言寫成,主程序框架。在該直線度誤差處理系統(tǒng)的開發(fā)試驗階段采用的是SDY-1電子水平儀,而其他型號的電子水平儀只要根據(jù)其使用說明確定其通信協(xié)議的相關參數(shù)(如波特率、數(shù)據(jù)位長度、奇/偶校驗位、停止位數(shù)量),然后據(jù)此對軟件進行簡單的參數(shù)修改即可實現(xiàn)數(shù)據(jù)接收。通過進一步的研究,將實現(xiàn)允許用戶通過鍵盤設定接口參數(shù),設定結(jié)果保存在EEPROM存儲器中,這樣系統(tǒng)就可以與任何采用RS232標準接口的電子水平儀實現(xiàn)通信。
6 結(jié)論
采用普通的8位單片機8051研制的與電子水平儀配套的直線度誤差專用處理系統(tǒng),實現(xiàn)了直線度誤差的自動分析以及誤差值、誤差曲線和小區(qū)域的打印輸出。通過改進凸多邊形法的處理策略,使得該算法更適合單片機運算且運算速度高;通過引入基于Bresenham算法的固定取向算法,可在寬度只有96個點的打印紙上清晰地輸出直線度誤差曲線和小區(qū)域,輸出過程連續(xù),輸出曲線清晰。經(jīng)與手工分析結(jié)果對比,證明處理結(jié)果完全一致,說明系統(tǒng)中采用的改進凸多邊形法和直線輸出固定取向算法正確有效。盡管系統(tǒng)結(jié)構(gòu)完全具備平面度誤差的處理能力,但目前尚不具備此項功能。因此,需要進一步重點研究適合在8位單片機中運行的平面度誤差分析算法和圖形輸出策略,實現(xiàn)平面度誤差的自動分析處理。★廈門潤星貿(mào)易有限公司 ★
★聯(lián)系人:陳金城 ★
★Q Q :2596132613 ★
★電話:0592-6895381 手機:18030263619★
★ 傳真:0592-6034581 (注0031小陳收)★
★郵箱:2596132613@qq.com ★
★地址:廈門市海滄區(qū)海晟維多利亞12#2002★
Advance SAV-3250-V29
ADVANCE SAV-2240-131Ti3.9-02
ADVANCE SAV-2640-131CBi-02
Advance SAV-3250-V213
Advance SAV-3240-V208TIZ5R
Advance SAV-3250-V207CBi4
Advance SAV-3240-V210TiZ4
Advance SAV-3250-Ti4B04i6R
Advance SAV-3240-T10i4B04i6R
ADVANCE A34O-3-3iCB-0A-N
ADVANCE A34C-3-4iCB-0A-N
ADVANCE A34O-3-4iCB-0A-N
ADVANCE HICV-G090Ti6-139PN
ADVANCE SAT-3260-131CBi
ADVANCE SAV-2230-V114-01
ADVANCE SAV-2630-V114-02
ADVANCE PCV-100Ti8-135P-Y67
ADVANCE 2240-CBIZ3AB5-02
ADVANCE 2240-V92CBI-01
ADVANCE SAV-2230-V114-02
ADVANCE SAV-2240-131Ti3.9Z01
ADVANCE KSAV-3249-131CAi
ADVANCE SAV-2240-131CBi-02
Advance Electric CP300-CAAAA-008
Advanced Energy AM/DEMO 250-1200
Advanced Energy 950-2005-01
AE Advanced Energy 1110-00056-000
AE Advanced Energy 0190-10028
ALLEN BRADLEY 4409-M18001 SER. A
Allied Telesis CentreCOM FS708XL
AMAT 0010-24172 REV.002
AMAT 1350-01138
AMAT 0020-31607
AMAT 0021-23550
AMAT 3690-04029
AMAT 3880-01215
AMAT 3580-01021
AMAT 3880-01025
AMAT 3880-01262
AMAT 3910-01099
AMAT 0015-09183
AMAT 3500-01099
AMAT 3880-01008
AMAT 3780-01091
AMAT 3700-01445
AMAT 3700-01329
AMAT 0020-09845
AMAT 0060-09177
AMAT 0060-09181
AMAT 3700-02093
AMAT 3700-01440
AMAT 0020-30108
AMAT 0140-09498
AMAT 3700-01756
AMAT 0020-10887
AMAT 3300-05197
AMAT 0010-70768
AMAT 0150-00370
AMAT 0040-32905
AMAT 0200-00638
AMAT 0200-20059 PA
AMAT 0100-20036
AMAT 1270-01803
AMAT 0100-35175
AMAT 0100-09251
AMAT 0190-14247
AMAT 0010-20440
AMAT 0020-23586 REV.PF
AMAT 0020-25731
AMAT 0140-06710
AMAT 0200-10191
AMAT 0200-02873
AMAT 0010-21748
AMAT 0010-30421
AMAT 0020-08673
AMAT 0010-10453
AMAT 0010-30419
AMAT 0200-00403
AMAT 3870-04338
AMAT 0015-09091
AMAT 0010-70264
AMAT 0010-35048
AMAT 0010-01711
AMAT 0010-70149
AMAT 0010-09978
AMAT
AMAT 0040-13509
AMAT 0010-21127
AMAT 0090-91494
AMAT 0010-01886 REV. P4
AMAT 1270-90086
AMAT 3690-04575
AMAT 0020-77299
AMAT 0720-05145
AMAT 0021-78163
AMAT 3950-01021
AMAT 3780-02204
AMAT 0020-78434
AMAT 3060-01782
AMAT 3690-01107
AMAT 3690-03228
AMAT 3690-01092
AMAT 0020-77377
AMAT 3880-01028
AMAT 3690-01089
AMAT 3690-01090
AMAT 3300-00765
AMAT 0020-77298
AMAT 3880-01305
AMAT 0190-77131
AMAT 3700-01260
AMAT 0190-77116
AMAT 3700-02409
AMAT 0015-01152
AMAT 3630-01238
AMAT 3700-01063
AMAT 0090-77179
AMAT 0140-78025
AMAT 0140-78027
AMAT 0015-77191
AMAT 0021-78144
AMAT 3140-01088
AMAT 0020-78958
AMAT 0020-78432
AMAT 0020-78947
AMAT 0020-78126
AMAT 0020-78718
AMAT 0090-77156
AMAT 0140-08230
AMAT 0190-01759
AMAT 0020-77300
AMAT 0090-77183
AMAT 0090-77173
AMAT 0020-78433
AMAT 0090-77028
AMAT 0020-78969
AMAT 0020-77280
AMAT 0020-78194
AMAT 3730-01009
AMAT 0020-78283
AMAT 0020-78871
AMAT 0020-79229
AMAT 0020-79073
AMAT 0020-77292
AMAT 0020-77293
AMAT 0190-16235
AMAT 0020-17606
AMAT 0690-01767
AMAT 0020-77305
AMAT 0720-04000
AMAT 0020-79186
AMAT 0140-77472
AMAT 0020-78984
AMAT 0010-77463
AMAT 0190-77182
AMAT 0010-08114
AMAT 0140-77420
AMAT 0190-18386
AMAT 0090-77262
AMAT 0090-77098
AMAT 0040-80234
AMAT 0100-77002
AMAT 0021-77073
AMAT 0140-78024
AMAT 0140-78022
AMAT 0140-77419
AMAT 0010-77138
AMAT 0190-77184(used)
AMAT 3300-04113
AMAT 3880-01643
AMAT 0040-77232
AMAT 0020-78957
AMAT 0090-00443
AMAT 0021-23336
AMAT 0020-75160
AMAT 1080-00260
AMAT 0020-77398
AMAT 0020-79294
AMAT 0140-78043
AMAT 0010-31060
AMAT 0020-79024
AMAT 0140-77358
AMAT 0020-79091
AMAT 0140-03110
AMAT 0190-17083
AMAT 0020-78400
AMAT 0020-03700
AMAT 0140-12877
AMAT 0010-21740
AMAT 0040-34866
AMAT 0090-03412
AMAT 0140-16648
AMAT 0100-77058(USED)
AMAT 0090-03589
AMAT 0190-34539
AMAT 0190-17271
AMAT 3800-01147 & 0140-77491
AMAT 3300-03956
AMAT 0010-13188
AMAT 0015-01460
AMAT 0020-77423
AMAT 0090-02509
AMAT 0090-77278(REFURB)
AMAT 0140-08638
AMAT 0100-77033
AMAT 0022-77364
AMAT 0140-78061
AMAT 0140-78062
AMAT 0140-78063
AMAT 1080-00255
AMAT 1080-00255 & 3970-00029
AMAT 3020-01133
AMAT 0190-77124
AMAT 0140-77496
AMAT 0015-77088
AMAT 0040-75432
AMAT 0140-78495
AMAT 3930-00257
AMAT 0190-77171
AMAT 0190-14713
AMAT 0140-77497
AMAT 0090-77279
AMAT 0090-77026
AMAT 0090-77072
AMAT 0090-77282
AMAT 0090-00444
AMAT 0090-77280(USED)
AMAT 0090-77062
AMAT 0090-03252
AMAT 0100-01996
AMAT 0021-03121
AMAT 0020-79087
AMAT 0010-27023
AMAT 0050-77044
AMAT 0021-19681
AMAT 0190-09496
AMAT 0040-77885
AMAT 0010-77769
AMAT 0010-77763
AMAT 0040-76579
AMAT 3300-04356
AMAT 0140-78024(USED)
AMAT 0040-80603
AMAT 0020-35761
AMAT 0010-14714
AMAT 0010-77239
AMAT 0090-77281(USED)
AMAT 0190-24854
AMAT 0190-14711
AMAT 0090-77158
AMAT 0020-78120
AMAT 0010-23326
AMAT 0190-16739
AMAT 0090-01636
AMAT 0190-12032
AMAT 0090-00442(USED)
AMAT 0140-78455
AMAT 0140-05045
AMAT 0090-77061
AMAT 0140-78118
AMAT 0140-78116
AMAT 0140-14181
AMAT 0140-01946
AMAT 0140-77895
AMAT 0140-04838
AMAT 0150-77312
AMAT 0140-78190
AMAT 0140-78149
AMAT 0140-04901
AMAT 0140-77727
AMAT 0140-78033
AMAT 0140-78117
AMAT 0140-05032
AMAT 0140-78035
AMAT 0150-05179
AMAT 0140-78537
AMAT 0140-78036
AMAT 0140-78120
AMAT 0150-05146
AMAT 0150-05362
AMAT 0140-78034
AMAT 0150-05205
AMAT 0140-11190
AMAT 0140-78025(USED)
AMAT 0140-77708
AMAT 0140-77918
AMAT 0150-77200
AMAT 0140-78023
AMAT 0140-77640
AMAT 0140-77654
AMAT 0140-02342
AMAT 0140-12830
AMAT 0140-78065
AMAT 0140-78295
AMAT 0140-78297
AMAT 1350-01028
AMAT 0720-04020
AMAT 0021-23335
AMAT 0020-79496
AMAT 0020-78365
AMAT 0020-77416
AMAT 0021-26112
AMAT 0090-77222
AMAT 0100-01321
AMAT 0010-05004
AMAT 0010-04514
AMAT 0010-37866
AMAT 0010-06444
AMAT 0021-77505
AMAT 0022-77001
AMAT 0010-11591
AMAT 0010-14246
AMAT 3020-01133(USED)
AMAT 0040-82657
AMAT 1350-00251
AMAT 0020-15935
AMAT 0010-06277
AMAT 0190-14372
AMAT 1080-00125
AMAT 0010-06277(NEW)
AMAT 0020-39360
AMAT 0020-39361
AMAT 0140-78466
AMAT 0140-78040
AMAT 0140-78535
AMAT 0140-05085
AMAT 0140-02781
AMAT 0140-01881
AMAT 0140-11359
AMAT 0140-06296
AMAT 0140-01844
AMAT 0140-04902
AMAT 0140-02811
AMAT 0140-12771
AMAT 0150-16851
AMAT 0140-11665
AMAT 0140-78563
AMAT 0140-78037
AMAT 0020-78642
AMAT 0140-78060
AMAT 0150-04267
AMAT 0021-02395
AMAT 0020-79207
AMAT 0020-79897
AMAT 0040-80375
AMAT 0140-77140
AMAT 3630-01138
AMAT 0020-77445
AMAT 0021-77130
AMAT 0041-02032
AMAT 0020-79021
AMAT 0190-77103
AMAT 0020-29141
AMAT 0020-27207(USED)
AMAT 0021-77867
AMAT 3030-11633
AMAT 0040-70319
AMAT 0100-00793
AMAT 0190-76005
AMAT 0021-78523
AMAT 0020-77433
AMAT 0020-77434
AMAT 0020-77902
AMAT 3920-00515
AMAT 0020-10117
AMAT 0190-13298
AMAT 0040-77049
AMAT 0040-77048
AMAT 3060-00279
AMAT 3060-00275(USED)
AMAT 0090-77096
AMAT 0090-A1101
AMAT 0040-01547
AMAT 0040-77216
AMAT 1100-A0110(NEW)
AMAT 0190-17056
AMAT 0140-03874
AMAT 0090-77294
AMAT 0090-77159
AMAT 0090-77098(USED)
AMAT 0090-77207
AMAT 0090-77180(USED)
AMAT 0090-77290
AMAT 0040-43271
AMAT 0021-77125
AMAT 0020-79015
AMAT 3300-04783
AMAT 0720-04128
AMAT 0020-78902
AMAT 3860-01683
AMAT 0190-10085
AMAT 0190-11528
AMAT 0100-20004
AMAT 0190-27818
AMAT 0270-00735
AMAT 0090-77153
AMAT 0270-00860
AMAT 0270-00689
AMAT 0270-00739
AMAT 3870-04672
AMAT 0020-78260
AMAT 0270-00318
AMAT 0240-29122
AMAT 0040-87765
AMAT 1400-00010
AMAT 3030-15338
AMAT 3030-14377
AMAT 1140-00514
AMAT 0660-01815
AMAT 0190-17159
AMAT 0100-01973(USED)
AMAT 0190-24282
AMAT 0021-27015
AMAT 0020-91244
AMAT 0140-01821
AMAT 0140-04294
AMAT 0190-15389
AMAT 3870-03322
AMAT 0190-22793
AMAT 0021-79508
AMAT 0240-15790
AMAT 0190-22286
AMAT 0190-77140
AMAT 0040-75423
AMAT 0040-77174
AMAT 0040-77213
AMAT 0020-D8440
AMAT 0021-79248
AMAT 0021-18682
AMAT 0240-04276
AMAT 0270-02883
AMAT 0270-00772
AMAT 0020-17924
AMAT 0270-03126
AMAT 0270-00737
AMAT 0020-20073
AMAT 0270-00736
AMAT 3920-00156
AMAT 0270-00734
AMAT 0270-00741
AMAT 0270-00740
AMAT 0270-18001
AMAT 0270-00742
AMAT 0150-77202
AMAT 0100-77017
AMAT 0140-77181
AMAT 0140-77182
AMAT 0021-78219
AMAT 0020-78001
AMAT 0040-77690
AMAT 0020-78460
AMAT 0010-77141
AMAT 0010-77157
AMAT 0020-78997
AMAT 0020-78996
AMAT 0100-35084
AMAT 0240-77346
AMAT 0100-13016
AMAT 0190-35076
AMAT 0100-77011
AMAT 0100-77002(USED)
AMAT 0010-04423
AMAT 0010-08942
AMAT 3620-01603
AMAT 0020-27122
AMAT 0090-77067
AMAT 0090-77221
AMAT 0090-77292
AMAT 0620-02816
AMAT 0620-02353
AMAT 0620-02899
AMAT 0620-02369
AMAT 0140-78039
AMAT 0140-78470
AMAT 0090-77244
AMAT 0090-77242
AMAT 0090-77243
AMAT 0090-77239
AMAT 0090-77246
AMAT 0090-77241
AMAT 0090-77245
AMAT 0090-77240
AMAT 0040-77705
AMAT 0190-77349
AMAT 0040-54534
AMAT 0270-02726
AMAT 0240-04232
AMAT 0022-77221
AMAT 0020-78641
AMAT 0140-77021
AMAT 0140-77397
AMAT 0140-77010
AMAT 0140-77424(USED)
AMAT 0140-77009
AMAT 0140-77037
AMAT 0140-77683
AMAT 0140-77011
AMAT 0140-77032