程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> VB調用Matlab在WEDM仿真系統中的應用

VB調用Matlab在WEDM仿真系統中的應用

編輯:VB6

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

在VB開發環境下制定前台用戶界面,利用Matlab強大的計算功能實現後台模型 的實時仿真。為了實現前台界面與後台仿真環境間的數據傳遞,應用ActiveX自動 化技術進行VB與 Matlab之間的接口設計,通過建立在VB應用程序和Matlab仿真環 境之間的ActiveX自動化連接,實現了在VB環境下對Matlab仿真命令的調用,並在 VB友好的用戶界面中實時顯示仿真結果。

1  VB與Matlab間的接口分析

1.1  VB與Matlab接口形式

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

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

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

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

1.2 ActiveX自動化技 術

ActiveX 是一種支持組件集成MicroSoft Windows協議的自動化技術, 通過ActiveX技術可以將不同環境下開發的組件集成到一個應用程序中;ActiveX 同時又是一種面向對象技術,屬於組件對象模型(COM)的子類。COM為所有的 ActiveX對象定義了對象模型,每個ActiveX對象支持一定的接口,即支持不同的 方法、屬性和事件。利用這些方法執行相應的動作,幫助客戶端實現一定的功能 。Matlab支持兩種類型的ActiveX技術:ActiveX控制容器和ActiveX Automation 。ActiveX控制容器可以將不同的ActiveX控件集成在一個應用中;而ActiveX Automation是一種允許一個應用程序(客戶端)去控制另一個應用程序(服務器端) 的協議。在本文中,Matlab是服務器端,VB是客戶端,通過 Automation,客戶端 可以執行Matlab命令,並與Matlab的工作空間進行數據交換,以達到調用Matlab 來訓練神經網絡的目的。

2  ActiveX技術在接口設計中的應用

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

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

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

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

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

3 VB調用Matlab 在WEDM仿真軟件開發中的應用

基於BP神經網絡的電火花線切割(WEDM)工藝 仿真系統主要用於實現工藝數據庫的管理、工藝效果的預測、加工參數的優化等 功能。在VB開發環境中調用Matlab的神經網絡工具箱,是為了建立工藝效果的預 測模型和加工參數優化模型,這是仿真系統的主要功能。建模部分的核心代碼如 下:

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

建模所需的樣本數據如表1所示,網絡訓練的結果如圖2所示。

為驗證模型的正確性,用沒有參與神經網絡訓練的驗證數據檢驗模型, 結果如表2所示。從仿真結果可以看出,利用VB調用Matlab混合編程建立的預測模 型可以反映機床的工藝規律,建模是成功的。可以應用於實際生產中。

4 結  語

VB與Matlab混合編程簡單方便,效率高,能夠應用於 WEDM仿真系統中,以實現系統功能。缺點是要依托於Matlab平台,執行速度慢, 靈活性較差。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved