當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]VB調(diào)用Matlab在WEDM仿真系統(tǒng)中的應(yīng)用

基于BP神經(jīng)網(wǎng)絡(luò)的電火花線切割(WEDM)工藝仿真系統(tǒng)需要具有工藝數(shù)據(jù)庫管理、工藝效果預(yù)測、加工參數(shù)優(yōu)化等設(shè)計功能。借助Matlab的神經(jīng)網(wǎng)絡(luò)工具箱,可以建立良好的工藝效果預(yù)測模型和參數(shù)優(yōu)化模型,這正是工藝仿真軟件最主要的功能要求。VB是Windows操作系統(tǒng)下優(yōu)秀的可視化編程工具軟件,在用戶界面設(shè)計和快速開發(fā)等方面具有獨特的優(yōu)勢。同時,Matlab仿真軟件以其強大的科學(xué)計算功能和開放式開發(fā)思想使其成為當(dāng)前最為流行的仿真計算工具。綜合兩種開發(fā)環(huán)境各自的優(yōu)勢,可采用VB與Matlab混合編程的方法實現(xiàn)工藝仿真軟件的編程開發(fā)。

在VB開發(fā)環(huán)境下制定前臺用戶界面,利用Matlab強大的計算功能實現(xiàn)后臺模型的實時仿真。為了實現(xiàn)前臺界面與后臺仿真環(huán)境間的數(shù)據(jù)傳遞,應(yīng)用ActiveX自動化技術(shù)進行VB與Matlab之間的接口設(shè)計,通過建立在VB應(yīng)用程序和Matlab仿真環(huán)境之間的ActiveX自動化連接,實現(xiàn)了在VB環(huán)境下對Matlab仿真命令的調(diào)用,并在VB友好的用戶界面中實時顯示仿真結(jié)果。

1  VB與Matlab間的接口分析   

1.1  VB與Matlab接口形式

為了能夠充分利用Matlab系統(tǒng)提供的豐富函數(shù)庫,Matlab本身提供了應(yīng)用程序接口API(Matlab application program interface)。因此,VB與Matlab接口設(shè)計有多種實現(xiàn)方式。

(1)借用C++與Matlab的接口,將Matlab的程序文件(*.M)編譯為動態(tài)鏈接庫(*.DLL),VB在代碼中調(diào)用生成DLL中的函數(shù),以實現(xiàn)算法,便于用戶脫離Matlab環(huán)境使用。由于算法部分采用C++語句,運行速度較快,可應(yīng)用于實時運算。但是這種方法對開發(fā)者在設(shè)置和編程上都有較高的要求。

(2)通過使用嵌入VB中矩陣函數(shù)庫MatrixVB的方法實現(xiàn)接口。MatrixVB是第三方插件,利用與Matlab相似的函數(shù)、語法嵌入到VB中,可以像使用VB的函數(shù)、命令一樣使用Matlab函數(shù)。這種方法的語法和函數(shù)使用比較簡單,編程效率很高,幾乎完全可以融入VB語言,特別是對圖形的處理非常方便,彌補了其他方法在圖形處理上的弱點。但由于它仍然采用解釋執(zhí)行,執(zhí)行效率較低,因此實時運算難以實現(xiàn),特別對于Matlab各類工具箱的調(diào)用尤為困難。

(3)在Visual Basic中通過調(diào)用Matlab的引擎接口,使用Windows的ActiveX技術(shù)與Matlab進行數(shù)據(jù)交互。通過Object.Execute語句在程序中直接使用Matlab提供的函數(shù)庫和圖形庫。

1.2 ActiveX自動化技術(shù)

ActiveX是一種支持組件集成MicroSoft Windows協(xié)議的自動化技術(shù),通過ActiveX技術(shù)可以將不同環(huán)境下開發(fā)的組件集成到一個應(yīng)用程序中;ActiveX同時又是一種面向?qū)ο蠹夹g(shù),屬于組件對象模型(COM)的子類。COM為所有的ActiveX對象定義了對象模型,每個ActiveX對象支持一定的接口,即支持不同的方法、屬性和事件。利用這些方法執(zhí)行相應(yīng)的動作,幫助客戶端實現(xiàn)一定的功能。Matlab支持兩種類型的ActiveX技術(shù):ActiveX控制容器和ActiveX Automation。ActiveX控制容器可以將不同的ActiveX控件集成在一個應(yīng)用中;而ActiveX Automation是一種允許一個應(yīng)用程序(客戶端)去控制另一個應(yīng)用程序(服務(wù)器端)的協(xié)議。在本文中,Matlab是服務(wù)器端,VB是客戶端,通過Automation,客戶端可以執(zhí)行Matlab命令,并與Matlab的工作空間進行數(shù)據(jù)交換,以達到調(diào)用Matlab來訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目的。

2  ActiveX技術(shù)在接口設(shè)計中的應(yīng)用

Matlab ActiveX自動化服務(wù)的功能主要包括在Matlab工作空間執(zhí)行Matlab命令,直接對工作空間進行存取矩陣操作等。

Matlab提供了一個自動化對象,其外部名稱為Matlab.Application,支持COM技術(shù)。外部程序(如VB)通過COM技術(shù)提供的函數(shù),得到自動化服務(wù)器對象支持的指針,并通過調(diào)用接口函數(shù)控制和使用自動化對象。在VB應(yīng)用程序中,創(chuàng)建了Matlab的ActiveX對象后,就可以使用這個對象所包含的各種方法來實現(xiàn)對Matlab的調(diào)用。Matlab.Application對象含有3種方法,分別是Execute,GetFullatrix和PutFullMatrix。

(1)BSTR Execute([in]BSTR Command):BSTR表示寬字符串類型,它與VB存儲字符串所采用的數(shù)據(jù)格式相同。該方法接收字符串命令并在Matlab中執(zhí)行,將結(jié)果以字符串形式返回。

(2)void GetFullMatrix([in]BSTR Name[in]BSTR Workspace,[in,out]SAFEARRAY(douMe)*pr,[in,out]SAFEARRAY(double)*pi):GetFullMatrix方法從指定的工作空間檢索一個完整的實型或虛型mxArray,其實部和虛部被分別存放到2個單獨的Double型數(shù)組中??梢岳肎etFullMatrix方法將Matlab中的一個矩陣變量傳送到VB程序中的一個一維或二維數(shù)組中。其中,Name指定了Matlab中的矩陣變量名;Workspace指定了該矩陣所在的Matlab工作區(qū);pr指VB程序中的實部數(shù)組;pi指VB程序中的虛部數(shù)組。

(3)void PutFullMatrix([in]BSTR Name,[in]BSTRWorkspaee,[in,out]SAFEARRAY(double)*pr,[in,out]SAFEARRAY(double)*pi):PutFullMatrix方法將一個mxArray放入指定的工作空間。各參數(shù)的含義及調(diào)用方法與GetFullMatrix方法類似。[!--empirenews.page--]

3 VB調(diào)用Matlab在WEDM仿真軟件開發(fā)中的應(yīng)用

基于BP神經(jīng)網(wǎng)絡(luò)的電火花線切割(WEDM)工藝仿真系統(tǒng)主要用于實現(xiàn)工藝數(shù)據(jù)庫的管理、工藝效果的預(yù)測、加工參數(shù)的優(yōu)化等功能。在VB開發(fā)環(huán)境中調(diào)用Matlab的神經(jīng)網(wǎng)絡(luò)工具箱,是為了建立工藝效果的預(yù)測模型和加工參數(shù)優(yōu)化模型,這是仿真系統(tǒng)的主要功能。建模部分的核心代碼如下:



該部分程序的作用是VB把用戶輸入的參數(shù)傳到Matlab空間,在Matlab的空間中利用神經(jīng)網(wǎng)絡(luò)工具箱訓(xùn)練網(wǎng)絡(luò),將結(jié)果輸出。進而實現(xiàn)仿真系統(tǒng)幾個模型的建模。array 1是訓(xùn)練神經(jīng)網(wǎng)絡(luò)時的樣本輸入數(shù)據(jù),包括工件厚度T(單位:mm)、脈沖寬度tON(單位:s)、脈沖間隔tOFF(單位:s)、峰值電流IP(單位:A)、間隙電壓VS(單位:V);array 2是樣本輸出數(shù)據(jù),包括切割速度vw(單位:mm2/min)表面粗糙度Ra(單位:μm)。圖1為線切割工藝仿真系統(tǒng)主控界面,包括加工參數(shù)數(shù)據(jù)庫、系統(tǒng)建模、工藝效果的預(yù)測及參數(shù)優(yōu)化等部分。建立模型時,首先利用數(shù)據(jù)庫中的參數(shù)訓(xùn)練模型,模型訓(xùn)練完成后,便可以對不同加工參數(shù)所對應(yīng)的加工效果進行預(yù)測,并對給定材料、厚度條件下的加工參數(shù)進行優(yōu)化,給出優(yōu)化結(jié)果。



建模所需的樣本數(shù)據(jù)如表1所示,網(wǎng)絡(luò)訓(xùn)練的結(jié)果如圖2所示。



為驗證模型的正確性,用沒有參與神經(jīng)網(wǎng)絡(luò)訓(xùn)練的驗證數(shù)據(jù)檢驗?zāi)P停Y(jié)果如表2所示。從仿真結(jié)果可以看出,利用VB調(diào)用Matlab混合編程建立的預(yù)測模型可以反映機床的工藝規(guī)律,建模是成功的??梢詰?yīng)用于實際生產(chǎn)中。



4 結(jié)  語

VB與Matlab混合編程簡單方便,效率高,能夠應(yīng)用于WEDM仿真系統(tǒng)中,以實現(xiàn)系統(tǒng)功能。缺點是要依托于Matlab平臺,執(zhí)行速度慢,靈活性較差。
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉