王一璋, 何小妹
(中航工業(yè)北京長城計量測試技術(shù)研究所,北京100095)
對回轉(zhuǎn)體類零件的測量和評價,涉及直徑、圓度、圓跳動、平面度、垂直度和直線度等多個尺寸參數(shù)和形位參數(shù),坐標(biāo)測量機(jī)測量是應(yīng)用最為廣泛的一種方法[1]。為滿足對回轉(zhuǎn)體類零件高精度、高效率的校準(zhǔn)需求,課題組研制了一套四坐標(biāo)綜合測量儀樣機(jī)。測量儀在測量中必然會產(chǎn)生一定的誤差,利用誤差建模補(bǔ)償技術(shù),能夠在資金和技術(shù)相對有限的情況下有效地提高整體測量精度。
四坐標(biāo)綜合測量儀樣機(jī)使用了RationalDMIS坐標(biāo)測量軟件,但該軟件只支持直線運(yùn)動21項誤差的補(bǔ)償,不提供四軸補(bǔ)償?shù)墓δ?。同其它商業(yè)軟件一樣,其內(nèi)部算法不公開,也沒有提供對其誤差模型進(jìn)行修改的可能性。因此,本文依據(jù)四坐標(biāo)綜合測量儀空間誤差模型,基于VB.NET平臺,構(gòu)造合適的算法,結(jié)合MATLAB、Access和坐標(biāo)測量軟件二次開發(fā)接口編程,開發(fā)了誤差仿真分析應(yīng)用軟件,實現(xiàn)對測量數(shù)據(jù)進(jìn)行補(bǔ)償處理的功能。
編寫四坐標(biāo)綜合測量儀誤差仿真分析應(yīng)用軟件,涉及到多項數(shù)值計算方法。如果完全采用C++或C#等高級語言,需要開發(fā)人員具有相當(dāng)高的算法和編程水平,而且費(fèi)時費(fèi)力。為了提高開發(fā)效率,綜合利用多種開發(fā)工具的優(yōu)勢,采用接口編程技術(shù),而RationalDMIS軟件自身也帶有供VB和VC進(jìn)行二次開發(fā)的部分功能。
MATLAB擁有強(qiáng)大的科學(xué)運(yùn)算能力、簡潔的程序設(shè)計理念、便捷的開發(fā)接口等優(yōu)勢,在科學(xué)計算和模擬仿真等方面應(yīng)用廣泛?;谒倪@些優(yōu)點(diǎn),在仿真程序的算法開發(fā)中選擇了MATLAB作為開發(fā)工具。VB.NET在圖形界面開發(fā)等方面功能強(qiáng)大,可以對Access數(shù)據(jù)庫進(jìn)行查詢、修改、添加和刪除等操作,但在數(shù)值計算和圖形繪制等方面并不易用。由于仿真程序需要進(jìn)行大量的計算,并且初始誤差數(shù)據(jù)需要分別設(shè)置,通過調(diào)用Access的數(shù)據(jù)庫引擎可以方便地對數(shù)據(jù)庫里的誤差數(shù)據(jù)進(jìn)行檢索、更新等各種管理。
因此,在誤差仿真分析軟件開發(fā)中,采用VB.NET進(jìn)行程序界面設(shè)計和功能模塊開發(fā),MATLAB進(jìn)行核心算法的編寫,Access進(jìn)行數(shù)據(jù)的保存和管理,同時利用RationalDMIS的測量功能。通過混合編程,實現(xiàn)軟件與用戶的外在交互,隱藏其相互之間的內(nèi)在調(diào)用,從而提高了軟件的易用性。
VB.NET與MATLAB混合編程通??梢允褂肅OM組件、DDE動態(tài)數(shù)據(jù)交換、MatrixVB插件和ActiveX技術(shù)等方法,它們的適用程度和范圍均不同[2]。其中,ActiveX技術(shù)是Microsoft公司提供的一種用于模塊集成的協(xié)議,它允許應(yīng)用程序或組件控制另一個應(yīng)用程序或組件的運(yùn)行。VB.NET和MATLAB均支持ActiveX自動化控制端協(xié)議和服務(wù)器端協(xié)議,這樣通過ActiveX協(xié)議就可以相互調(diào)用和控制,即實現(xiàn)混合編程過程[3]。RationalDMIS對VB所支持的開發(fā)方式也使用了ActiveX技術(shù),因此在編程中采用這種方法,靈活性較好,適合隨時對算法進(jìn)行修改與調(diào)試。
使用ActiveX方法的步驟是:首先在VB.NET應(yīng)用程序中創(chuàng)建MATLAB的ActiveX對象,然后通過各種方法和函數(shù)實現(xiàn)對MATLAB的調(diào)用。該方法的使用過程如下:
步驟1:啟動MATLAB的自動化服務(wù)。使用創(chuàng)建對象的方法,在程序中加入“MATLAB=CreateObject("MATLAB.Application")”。
步驟2:利用MATLAB對象的各種方法和函數(shù),在VB.NET與MATLAB的自動化服務(wù)器端進(jìn)行命令和數(shù)據(jù)的傳遞。表1給出了這些方法和函數(shù)的詳細(xì)功能。
表1 VB.NET訪問MATLAB的各種方法和功能
通過上述方法即可在VB.NET中對MATLAB進(jìn)行調(diào)用和控制。在混合編程過程中,由于MATLAB和VB.NET中數(shù)據(jù)傳遞不正確引起的錯誤較多。這是因為MATLAB和VB.NET的參數(shù)傳遞形式以及數(shù)據(jù)類型不一樣,而且MATLAB中使用了大量矩陣數(shù)組運(yùn)算,因此必須注意不同數(shù)據(jù)類型的轉(zhuǎn)換和調(diào)用。VB.NET接受MATLAB數(shù)據(jù)的變量,一般均為Object對象類型。
表2 VB.NET中訪問RationalDMIS對象的常用方法及功能
與前文所述的調(diào)用MATLAB方法類似,在程序中需要首先創(chuàng)建被調(diào)用的對象,加入“NeptunePublic=CreateObject("Neptune.KNeptunePublic")”語句之后,就可以使用該對象的各種方法與RationalDMIS軟件之間進(jìn)行命令和數(shù)據(jù)的傳遞。表2列出了一些常用方法的功能。
數(shù)據(jù)庫的構(gòu)建是整個系統(tǒng)軟件的基礎(chǔ),應(yīng)具有較高的可靠性、條理性和較低的冗余性。選用Microsoft Access 2007作為數(shù)據(jù)庫管理系統(tǒng)。通過操作ADO.NET連接數(shù)據(jù)庫,并完成數(shù)據(jù)整理、編輯和分析等功能。
VB.NET提供了數(shù)據(jù)向?qū)в糜谶B接數(shù)據(jù)庫,其數(shù)據(jù)庫應(yīng)用的主要方法是ADO.NET,提供了訪問、搜索、更新、管理數(shù)據(jù)庫的類庫。ADO.NET的兩個主要組件是數(shù)據(jù)提供程序和DataSet,數(shù)據(jù)提供程序用于連接、讀取和管理數(shù)據(jù)庫,將所需數(shù)據(jù)保存在DataSet中,之后斷開與數(shù)據(jù)庫的連接進(jìn)行脫機(jī)處理,以供其他客戶端訪問數(shù)據(jù)庫[4]。
利用上述技術(shù),進(jìn)行了四坐標(biāo)綜合測量儀誤差仿真分析應(yīng)用軟件的開發(fā)。該軟件目前主要具備三項功能:(1)實現(xiàn)了對單軸誤差的仿真計算和分析,(2)對空間綜合誤差的仿真分析和處理,(3)加入四軸補(bǔ)償功能,從而完善了RationalDMIS的幾何誤差補(bǔ)償功能,并提供了綜合精度測試分析。
軟件開發(fā)過程大致分為5個步驟。首先是進(jìn)行功能分析,然后根據(jù)功能進(jìn)行VB界面設(shè)計,編寫誤差模型的MATLAB算法和調(diào)用RationalDMIS的控制命令,最后上機(jī)進(jìn)行調(diào)試。流程如圖1所示。
圖1 軟件開發(fā)流程
混合編程中各部件的相互關(guān)系結(jié)構(gòu)如圖 2所示,VB.NET平臺是其中的核心,直接面向用戶。
軟件中誤差補(bǔ)償?shù)挠嬎懔鞒虨椋菏紫仍跀?shù)據(jù)庫中錄入四坐標(biāo)綜合測量儀的各項系統(tǒng)誤差,對單項誤差數(shù)據(jù)進(jìn)行插值計算,最后基于已知的理論基礎(chǔ)進(jìn)行補(bǔ)償。
圖2 軟件結(jié)構(gòu)
(1)單軸誤差仿真計算
圖3所示為單軸誤差仿真計算界面,其主要包括誤差數(shù)據(jù)導(dǎo)入、曲線擬合、插值點(diǎn)計算、仿真數(shù)據(jù)生成和數(shù)據(jù)圖形顯示區(qū)域六部分。通過輸入坐標(biāo)點(diǎn)數(shù)據(jù),可以進(jìn)行單軸測量補(bǔ)償?shù)姆抡嬗嬎恪?/p>
圖3 單軸誤差仿真計算
圖4 四坐標(biāo)綜合測量儀回轉(zhuǎn)工作臺試驗驗證程序
(2)空間綜合試驗驗證程序
圖4為根據(jù)ISO10360標(biāo)準(zhǔn)和JJF1064-2010規(guī)范中相關(guān)內(nèi)容編寫的四坐標(biāo)綜合測量儀空間綜合試驗驗證程序界面[5]。試驗驗證程序?qū)崿F(xiàn)了機(jī)器坐標(biāo)系與回轉(zhuǎn)工作臺坐標(biāo)系在進(jìn)行誤差補(bǔ)償時的換算,能夠充分利用原有測量軟件來完成試驗。
軟件首先從RationalDMIS中獲取測量得到的兩個標(biāo)準(zhǔn)球的球心坐標(biāo)值,根據(jù)該坐標(biāo)值和回轉(zhuǎn)角度進(jìn)行四軸空間誤差補(bǔ)償計算。之后,根據(jù)回轉(zhuǎn)中心坐標(biāo)、標(biāo)準(zhǔn)球回轉(zhuǎn)半徑和轉(zhuǎn)角,將原始坐標(biāo)換算到回轉(zhuǎn)工作臺坐標(biāo)系下。與軟件計算出的該次轉(zhuǎn)動的理論坐標(biāo)值差分后,再將得到的X、Y值沿徑向和軸向分解、合成,最終得到規(guī)范中要求的徑向和軸向坐標(biāo)數(shù)據(jù),并顯示在右側(cè)的文本框中。
為了驗證所建空間誤差模型的可行性,運(yùn)用所開發(fā)的誤差仿真分析應(yīng)用軟件平臺,對空間測量誤差補(bǔ)償過程進(jìn)行仿真驗證。仿真所研制的四坐標(biāo)綜合測量儀進(jìn)行測量,工作空間范圍600mm×300mm×600mm。
首先在Access數(shù)據(jù)庫中錄入四坐標(biāo)綜合測量儀的29項系統(tǒng)誤差,仿真測量測量空間內(nèi)的四條空間體對角線,然后對測量數(shù)據(jù)進(jìn)行分析、誤差分離,最后生成補(bǔ)償文件并補(bǔ)償誤差。
仿真測量完成后,對裝置空間體對角線的仿真數(shù)據(jù)進(jìn)行分析。從圖5和圖6中可以看到,對角線方向的最大絕對誤差從86.2μm減小到8.8μm,補(bǔ)償后誤差相對減少了89.8%。根據(jù)補(bǔ)償前后數(shù)據(jù)分析,可以基本驗證誤差模型和計算方法的正確性。
圖5 補(bǔ)償前的空間體對角線誤差
圖6 補(bǔ)償后的空間體對角線誤差
本文充分利用不同軟件的優(yōu)勢所在,采用VB.NET、MATLAB、Access等多種軟件混合編程的模式,開發(fā)了四坐標(biāo)綜合測量儀誤差仿真分析應(yīng)用軟件。通過對軟件模塊及功能進(jìn)行系統(tǒng)分析,合理設(shè)計軟件流程及軟件界面,然后編寫和調(diào)試代碼,完成了整個軟件的開發(fā)。最后,對空間測量過程進(jìn)行了仿真分析。利用所開發(fā)的軟件平臺進(jìn)行仿真分析,減少了時間成本和經(jīng)濟(jì)成本,為進(jìn)行試驗驗證分析奠定了基礎(chǔ)。
[1] 楊仁平,張國雄,劉書桂,等.回轉(zhuǎn)曲面測量技術(shù)[J].天津大學(xué)學(xué)報,2005,38(5):385-390.
[2] 歐金成,林德杰,彭備戰(zhàn).通過VB調(diào)用MATLAB實現(xiàn)圖形和界面的結(jié)合[J].計算機(jī)工程與設(shè)計,2002,23(12):64-66.
[3] 陳振強(qiáng).基于混合編程的大壩安全監(jiān)測評價系統(tǒng)研究[D].鄭州:鄭州大學(xué),2009.
[4] WILLIS T.VB.NET數(shù)據(jù)庫入門經(jīng)典[M].北京:清華大學(xué)出版社,2006.
[5] JJG1064-2010,坐標(biāo)測量機(jī)校準(zhǔn)規(guī)范[S].