国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

VB和Matlab混合編程在圓度誤差評定中的應用研究*

2011-09-26 09:31曾浩然張琳娜趙鳳霞
制造技術(shù)與機床 2011年8期
關(guān)鍵詞:圓度調(diào)用應用程序

曾浩然 張琳娜 趙鳳霞

(鄭州大學機械工程學院,河南鄭州450001)

1 概述

圓度誤差是控制回轉(zhuǎn)體零件精度的一個重要指標,運用各種測量儀器對圓度誤差進行測量時,不僅要運算大量的數(shù)據(jù),而且需要將圖形實時地顯示出來,單純采用一種編程語言很難滿足要求。

Visual Basic由于其可視化的用戶界面設(shè)計功能使程序設(shè)計人員擺脫繁瑣復雜的界面設(shè)計,已經(jīng)成為快速應用程序開發(fā)(RAD,Rapid Application Development)工具的代表;但其數(shù)學計算能力不強,尤其是在大量的數(shù)據(jù)處理、矩陣運算、優(yōu)化計算時,編程復雜,工作量大,對程序設(shè)計人員要求高,開發(fā)效率低。

Matlab是Mathworks公司開發(fā)的一種用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言。它編程效率高,用戶使用方便,語句簡單,開放性較好,而且具有高效方便的矩陣運算,被廣泛用于工程計算及數(shù)值分析等領(lǐng)域。但Matlab也是一種腳本解釋語言,運算速度慢;且底層硬件操作和界面開發(fā)能力差;源代碼的公開不利于算法和數(shù)據(jù)的保密,不能用于開發(fā)商用軟件。而且,由于Matlab開發(fā)平臺的局限性,在其上面開發(fā)的程序不能夠脫離Matlab運行環(huán)境,在處理實際問題時就顯得有些靈活性不足。

由于二者各自的特點,使用一種方法將他們結(jié)合起來,各獻所長,將會給用戶的開發(fā)帶來極大的方便。本文基于VB和Matlab混合編程對圓度誤差的評定進行了研究,重點研究了利用MatrixVB和COM組件實現(xiàn)VB和Matlab的混合編程,通過零件圓度誤差評定的實例證明了該方法的可行性。

2 VB與Matlab混合編程的方法

VB與Matlab混合編程方法主要有以下幾種:①DDE編程實現(xiàn)VB與Matlab混合編程。DDE(Dynamic Data Exchange,動態(tài)數(shù)據(jù)交換)是一種開放的、與語言無關(guān)的、基于消息的協(xié)議。它允許應用程序之間共享數(shù)據(jù),是一種建立在Windows消息系統(tǒng)上支持應用程序之間數(shù)據(jù)交換的方法;②借助ActiveX技術(shù)實現(xiàn)VB與Matlab混合編程。它與具體的編程語言無關(guān),是一種用于模塊集成的新協(xié)議,允許應用程序或者組件控制另一個應用程序或組件的運行。ActiveX部件是一些遵循ActiveX規(guī)范編寫的具有特定功能的可執(zhí)行代碼,在某一應用程序中增加ActiveX部件后,它將為應用程序增加新的功能。在VB環(huán)境下可以通過ActiveX自動化接口將Matlab作為VB的一個ActiveX部件調(diào)用;③通過COM組件技術(shù)實現(xiàn)VB與Matlab混合編程。Matlab 6.5以后的版本都提供了Matlab COM Builder,利用該工具能夠?qū)函數(shù)文件編譯成COM組件。生成的COM組件以DLL形式存在,VB集成開發(fā)環(huán)境可以直接調(diào)用。利用該方式可以脫離Matlab環(huán)境,具有很大的靈活性;④利用MatrixVB實現(xiàn)VB與Matlab混合編程。MatrixVB是MathWorks公司針對Visual Basic開發(fā)的一個插件,它包含了600多個Matlab基本函數(shù),可以提供大量有效的算法,包括基本的數(shù)學運算、功能強大的信號處理、線性代數(shù)、優(yōu)化運算及圖形圖像處理功能等。利用MatrixVB可以大大增強Visual Basic的計算功能和圖形圖像處理功能;⑤通過中間文件傳遞的方法實現(xiàn)VB與Matlab混合編程。用VB編寫前端用戶交互界面,收集一些必要的參數(shù)信息,并保存在一個中間文件中,可以利用異步程序調(diào)用的方法執(zhí)行Matlab程序。

通過對以上5種混合編程方法的分析介紹,可以了解幾種方法各有其特點。通過ActiveX實現(xiàn)VB和Matlab二者通信編程效率高,但脫離不了Matlab環(huán)境,占用內(nèi)存大,執(zhí)行速度慢,且在開發(fā)應用程序時使用不便。DDE方式時,必須打開Matlab,同樣不能脫離Matlab環(huán)境。與ActiveX方式不同的是,使用DDE方式必須預先打開Matlab,而ActiveX可以自動打開Matlab軟件。使用COM組件技術(shù),可以將Matlab函數(shù)打包,完全脫離Matlab環(huán)境,在應用程序開發(fā)時使用此方法將特定功能函數(shù)打包使用,可以提高程序的開發(fā)效率。但在調(diào)用時,運行速度較低。matrixVB方法簡單,編程效率高。

各種混合編程方法都有其優(yōu)缺點,根據(jù)圓度誤差評定的技術(shù)要求和特點,同時選擇MatrixVB和COM組件兩種方式實現(xiàn)VB和Matlab的混合編程,在系統(tǒng)軟件開發(fā)過程中,充分利用了各自語言的優(yōu)點。

3 COM組件的創(chuàng)建及調(diào)用

Matlab 6.5以后的版本都提供了 Matlab COM Builder,在使用COM Builder創(chuàng)建COM 組件之前需要對Matlab COM Builde進行配置,選擇一種編譯器,如Borland C++Builder 4、Borland C++Builder 5、Microsoft Visual Studio 6.0和 Microsoft Visual Studio.NET等。在Matlab中創(chuàng)建COM組件具體步驟如下:①以函數(shù)形式編寫M文件。在M文件中,給出Matlab要完成的功能;②配置編譯器,選擇VC++或C;③在Matlab命令窗口輸入 comtool,打開 Matlab/COM/Builder(如圖1);④點擊“file”按鈕,選擇“new/project”,新建一個工程;⑤加載編寫好的M文件,并編譯,生成 COM組件;待編譯完成,選擇 Component/Package Component,用以發(fā)布應用程序。打包后的主要文件及其功能見表1。

表1 應用COM Builder工具生成的文件

在VB中調(diào)用COM組件時事先需要將組件注冊到目標計算機上,如果組件的創(chuàng)建與調(diào)用在同一臺計算機則無需注冊即可直接調(diào)用。注冊的方法是將上面組件創(chuàng)建過程中第⑤步產(chǎn)生的文件夾拷貝到目標計算機上并執(zhí)行解壓縮操作,然后執(zhí)行解壓文件夾中distrib文件夾下的組件動態(tài)鏈接文件進行注冊,之后把注冊生成的所有DLL文件拷貝到計算機的$windowssystem32目錄下即可完成注冊。最后在VB中新建一個工程項目,打開該工程項目的ProjectReference對話框,引用已經(jīng)注冊完成的組件就可以在下面的程序中調(diào)用M文件編寫的相應函數(shù)。

4 基于混合編程的圓度誤差評定實例

4.1 用VB調(diào)用Matlab優(yōu)化函數(shù)

在圓度誤差評定的4種方法中,除最小二乘法外,其他3種評定方法:最小區(qū)域法、最小外接法和最大內(nèi)接法在擬合時都會涉及到一個非線性優(yōu)化函數(shù)(linprog函數(shù))。直接用VB編寫優(yōu)化函數(shù)技術(shù)難度太大,效率太低,不易實現(xiàn)。雖然MatrixVB也提供了優(yōu)化運算函數(shù)(如lp函數(shù)),但經(jīng)過實際測試,在處理大量數(shù)據(jù)時,這些函數(shù)運算速度慢,效率低,精度不高。因此,我們采用COM組件的方式,將linprog函數(shù)打包直接在VB中調(diào)用。經(jīng)過實際測試發(fā)現(xiàn)該方法效率高,速度快,精度也較高。具體步驟為:

(1)編寫優(yōu)化算法的M文件。注意:一定是Matlab函數(shù)形式的M文件。代碼如下:

(2)確認 M文件無誤后,根據(jù)前面講述的方法打開 Matlab COM Builder,并新建工程。新建工程名和類名分別為 lpcom和 lpcomclass,如圖2所示。

(3)加載編好的 M文件,并打包。

(4)打包之后,在程序設(shè)計時,打開VB引用對話框,選擇 lpcom 1.0 Type Library(如圖3所示)。編寫代碼時,就可以直接引用了。調(diào)用部分關(guān)鍵代碼如下:

優(yōu)化求解的結(jié)果保存在變量yp中??梢姴捎么朔椒▽崿F(xiàn)混合編程方法簡單、實用。

4.2 混合編程評定圓度誤差

下面以回轉(zhuǎn)體幾何誤差中圓度誤差為例,利用VB和Matlab混合編程,開發(fā)了圓度誤差評定系統(tǒng),該系統(tǒng)是VB對已經(jīng)生成的COM組件的引用。評定結(jié)果如圖4~7所示,圓度誤差的計量結(jié)果如表2所示。

表2 圓度誤差計量結(jié)果 μm

5 結(jié)語

本文研究了VB與Matlab混合編程方法,利用Matlab強大的計算與數(shù)值分析能力,結(jié)合VB豐富的可視化界面功能,可以提高開發(fā)軟件的性能,降低開發(fā)難度,縮短開發(fā)周期。因此,將VB和Matlab有機地結(jié)合起來將會對科研過程和工程實際產(chǎn)生巨大的影響,使程序更加專業(yè)和靈活,為商業(yè)軟件的開發(fā)提供了可能性,具有較高的實際意義。

本文所有程序均在VB6.0和Matlab6.5下調(diào)試通過,而且這里所得到的評定結(jié)果十分理想,代碼簡單、程序可移植性更高。結(jié)合實驗室現(xiàn)有圓柱度儀通過大量測量實例證明了該方法的正確性。這種方法還可以推廣到圓柱度、直線度、平面度等形狀誤差的評定計算過程中。

[1]岳玉芳,尤忠生,張玉雙.基于COM的VB與Matlab混合編程[J].計算機工程與設(shè)計,2005(1),61 -65.

[2]王夢蛟,王麗莉.基于COM組件的VB與Matlab混合編程在醫(yī)學影像處理中的應用[J].醫(yī)院數(shù)字化,2009(24):32-33.

[3]管亮,馮新滬.VB6.0調(diào)用 Matlab6.5編程的實現(xiàn)[J].控制工程,2004(11):54-56.

[4]Matlab COM Builder user's guide[Z].TheMathworks Inc,2002.

[5]方沁林,徐振高.圓度誤差評定的算法研究與軟件設(shè)計[D].中國優(yōu)秀碩士學位論文全文數(shù)據(jù)庫,2009(3).

[6]周劍平.基于MATLAB的圓度評定方法[J].計量與測試技術(shù),2005(32).

猜你喜歡
圓度調(diào)用應用程序
大型五軸數(shù)控機床圓度誤差測試與分析
改進天牛須搜索算法在圓度誤差評定中的研究
核電項目物項調(diào)用管理的應用研究
刪除Win10中自帶的應用程序
系統(tǒng)虛擬化環(huán)境下客戶機系統(tǒng)調(diào)用信息捕獲與分析①
谷歌禁止加密貨幣應用程序
發(fā)動機氣缸套內(nèi)孔圓度測量分析
基于幾何動態(tài)模型的圓度誤差分離模擬
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
三星電子將開設(shè)應用程序下載商店
高邮市| 怀安县| 平邑县| 耒阳市| 武强县| 璧山县| 岳西县| 聂拉木县| 湖口县| 喜德县| 巴彦县| 邵阳市| 榆中县| 台北市| 锦州市| 常德市| 浏阳市| 德保县| 仁化县| 钟山县| 诸城市| 崇仁县| 弋阳县| 抚顺市| 城步| 金川县| 砀山县| 陇西县| 平顶山市| 根河市| 外汇| 佛冈县| 磐安县| 揭阳市| 阿拉尔市| 宜阳县| 天峻县| 高邑县| 寻甸| 芮城县| 稷山县|