LabVIEW與MATLAB混合編程
發(fā)布時間:2007/8/20 0:00:00 訪問次數(shù):1494
摘要:結(jié)合實例詳細介紹了LabVIEW通過ActvieX自動化技術(shù)與MATLAB進行混合編程,達到了利用MATLAB優(yōu)化算法庫的目的。將LabVIEW與MATLAB有機結(jié)合,是一條開發(fā)智能虛擬儀器的有效途徑。
關(guān)鍵詞:LabVIEW語言 MATLAB ActiveX自動化 虛擬儀器
LabVIEW建立在易于使用的圖形數(shù)據(jù)流編程語言——G語言上,大大簡化了過程控制和測試軟件的開發(fā)。MATLAB以其強大的科學計算功能、大量穩(wěn)定可靠的算法庫,已在為數(shù)學計算工具方面事實上的標準。但才者各有欠缺,利用混合編程可以相互補充。
MATLAB是MathWorks公司開發(fā)的“演算紙”式的程序設(shè)計語言。它提供了強大的矩陣運算和圖形處理功能,編程效率高,幾乎在所有的工程計算領(lǐng)域都提供了準確、高效的工具箱。但MATLAB也有不足之處,例如界面開發(fā)能力較差,并且數(shù)據(jù)輸入、網(wǎng)絡(luò)通信、硬件控制等方面都比較繁瑣。
美國NI公司推出的LabVIEW語言是一種非常優(yōu)秀的面向?qū)ο蟮膱D形化編程語言。LabVIEW是實驗室虛擬儀器集成環(huán)境(Laboratory Virtual Instrument Engineering Workbench)的簡稱,是一個開放型的開發(fā)環(huán)境,使用圖標代替文本代碼創(chuàng)建應(yīng)用程序,擁有大量與其它應(yīng)用程序通信的VI庫。例如LabVIEW使用自動化ActiveX、DDE和SQL,可與其它Windows應(yīng)用程序集成;使用DataSocket技術(shù)、Web Server、TCP/IP和UDP網(wǎng)絡(luò)Vis,與遠程應(yīng)用程序通信。在對硬件的支持方面,LabVIEW集成了與GPIB、VXI、PXI、RS-232/485、PLC和插入式數(shù)字采集設(shè)備等進行數(shù)據(jù)通信的全部功能。在LabVIEW下開發(fā)的程序稱為虛擬儀器VI(Virtual Instrument),因為其外形和操作可以模擬實際的儀器。在對各種算法的支持方面,LabVIEW的工具箱非常有限,這就限制了大型應(yīng)用程序的快速開發(fā)。
鑒于LabVIEW和MATLAB的優(yōu)點,本文介紹了通過ActiveX技術(shù),在LabVIEW(Ver6.1)中調(diào)用和操作MATLAB(Ver6.5)的方法,實現(xiàn)LabVIEW和MATLAB的混合編程,充分發(fā)揮兩者的優(yōu)勢。
1 基本原理
ActiveX自動化是基于組件對象模型COM(Component Object Model)的技術(shù),允許應(yīng)用程序或組件控制另一個應(yīng)用程序或組件的運行,它包括自動化服務(wù)器和自動化控制器。MATLAB支持ActiveX自動化技術(shù)。通過使用MATLAB自動化服務(wù)器功能,可以在其它應(yīng)用程序中執(zhí)行MATLAB命令,并與MATLAB的工作空間進行數(shù)據(jù)交換。因此可以借助這一特性,把LabVIEW與MATLAB結(jié)合,充分利用MATLAB提供的大量高效可靠的算法和LabVIEW的圖形化編程能力,混合開發(fā)出功能強大的應(yīng)用軟件。
2 應(yīng)用舉例
在混合編程中,通常用LabVIEW設(shè)計用戶圖形界面,負責數(shù)據(jù)采集和網(wǎng)絡(luò)通信;MATLAB在后臺提供大型算法供 LabVIEW調(diào)用。
2.1 方法一:使用MATLAB Script節(jié)點
為了簡化調(diào)用過程,LabVIEW提供了MATLAB Script節(jié)點。LabVIEW使用ActiveX技術(shù)執(zhí)行該節(jié)點,啟動一個MATLAB進程。這樣用戶就可以很方便地在自己的LabVIEW應(yīng)用程序中使用MATLAB,包括執(zhí)行MATLAB命令、使用功能豐富的各種工具箱,如神經(jīng)網(wǎng)絡(luò)工具箱(Neural Network Toolbox)、優(yōu)化工具箱(Optimization Toolbox)。值得注意的是:LabVIEWgn MATLAB之間的數(shù)據(jù)通信僅支持Real、RealVector、RealMatrix、Complex、VectorComplex、Matrix六種格式的數(shù)據(jù),且必須根據(jù)具體情況進行選擇。
當開發(fā)涉及工業(yè)控制的應(yīng)用程序時,常常由于控制參數(shù)的非線性變化,而無法建立合適的模型。由于此類問題,神經(jīng)網(wǎng)絡(luò)提供了一條有效的解決途徑。
在LabVIEW開發(fā)環(huán)境下新建一個三層BP神經(jīng)網(wǎng)絡(luò)的VI程序,程序框圖見圖1。網(wǎng)絡(luò)結(jié)構(gòu)部分主要設(shè)置隱層(Hidelay)神經(jīng)元的個數(shù)、傳遞函數(shù)(Transfer Function)以及網(wǎng)絡(luò)訓練算法(Algorithm)。經(jīng)過樣本數(shù)據(jù)(Training Data)訓練過的網(wǎng)絡(luò),即可進行仿真測試了。MATLAB腳本程序可以在MATLAB環(huán)境下調(diào)試,再使用MATLAB Script節(jié)點導入MATLAB腳本;也可以直接在MATLAB Script節(jié)點中編寫。位于Function>>Mathematics>>Formula模板中的MATLAB Script節(jié)點可以導入MATLAB腳本。圖1中的腳本程序使用CASE語句進行傳遞函數(shù)和訓練算法的選擇。MATLAB Script節(jié)點中神經(jīng)網(wǎng)絡(luò)的輸入層和隱層之間的權(quán)值矩陣inweight應(yīng)指定為RealMatrix,在LabVIEW中對應(yīng)的數(shù)據(jù)類型是二維實數(shù)據(jù)組Net.I-Weight。各變量數(shù)據(jù)類型見表1。
在此程序中,得到的BP網(wǎng)絡(luò)各層的權(quán)值矩 陣、閾值向量和傳遞函數(shù)三類參非常有用的,它們決定了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與特性。因此當神經(jīng)網(wǎng)絡(luò)訓練好后,可以直接使用這些參數(shù)處理新的數(shù)據(jù),得到預測值,而不必重新調(diào)用MATLAB。這樣程序的運行效率會更高。另一方面,將調(diào)試好的神經(jīng)網(wǎng)絡(luò)VI創(chuàng)建成一個子VI,作為模塊保存,當需要更新網(wǎng)絡(luò)時,可以隨時調(diào)用。
雖然通過MATLAB Script節(jié)點進行通信比較易于實現(xiàn),但以這種方式調(diào)用MATLAB時,在任務(wù)欄中將出現(xiàn)一個MATLAB圖標,單擊該圖形會打開MATLAB窗口,在其中可以任意輸
摘要:結(jié)合實例詳細介紹了LabVIEW通過ActvieX自動化技術(shù)與MATLAB進行混合編程,達到了利用MATLAB優(yōu)化算法庫的目的。將LabVIEW與MATLAB有機結(jié)合,是一條開發(fā)智能虛擬儀器的有效途徑。
關(guān)鍵詞:LabVIEW語言 MATLAB ActiveX自動化 虛擬儀器
LabVIEW建立在易于使用的圖形數(shù)據(jù)流編程語言——G語言上,大大簡化了過程控制和測試軟件的開發(fā)。MATLAB以其強大的科學計算功能、大量穩(wěn)定可靠的算法庫,已在為數(shù)學計算工具方面事實上的標準。但才者各有欠缺,利用混合編程可以相互補充。
MATLAB是MathWorks公司開發(fā)的“演算紙”式的程序設(shè)計語言。它提供了強大的矩陣運算和圖形處理功能,編程效率高,幾乎在所有的工程計算領(lǐng)域都提供了準確、高效的工具箱。但MATLAB也有不足之處,例如界面開發(fā)能力較差,并且數(shù)據(jù)輸入、網(wǎng)絡(luò)通信、硬件控制等方面都比較繁瑣。
美國NI公司推出的LabVIEW語言是一種非常優(yōu)秀的面向?qū)ο蟮膱D形化編程語言。LabVIEW是實驗室虛擬儀器集成環(huán)境(Laboratory Virtual Instrument Engineering Workbench)的簡稱,是一個開放型的開發(fā)環(huán)境,使用圖標代替文本代碼創(chuàng)建應(yīng)用程序,擁有大量與其它應(yīng)用程序通信的VI庫。例如LabVIEW使用自動化ActiveX、DDE和SQL,可與其它Windows應(yīng)用程序集成;使用DataSocket技術(shù)、Web Server、TCP/IP和UDP網(wǎng)絡(luò)Vis,與遠程應(yīng)用程序通信。在對硬件的支持方面,LabVIEW集成了與GPIB、VXI、I、RS-232/485、PLC和插入式數(shù)字采集設(shè)備等進行數(shù)據(jù)通信的全部功能。在LabVIEW下開發(fā)的程序稱為虛擬儀器VI(Virtual Instrument),因為其外形和操作可以模擬實際的儀器。在對各種算法的支持方面,LabVIEW的工具箱非常有限,這就限制了大型應(yīng)用程序的快速開發(fā)。
鑒于LabVIEW和MATLAB的優(yōu)點,本文介紹了通過ActiveX技術(shù),在LabVIEW(Ver6.1)中調(diào)用和操作MATLAB(Ver6.5)的方法,實現(xiàn)LabVIEW和MATLAB的混合編程,充分發(fā)揮兩者的優(yōu)勢。
1 基本原理
ActiveX自動化是基于組件對象模型COM(Component Object Model)的技術(shù),允許應(yīng)用程序或組件控制另一個應(yīng)用程序或組件的運行,它包括自動化服務(wù)器和自動化控制器。MATLAB支持ActiveX自動化技術(shù)。通過使用MATLAB自動化服務(wù)器功能,可以在其它應(yīng)用程序中執(zhí)行MATLAB命令,并與MATLAB的工作空間進行數(shù)據(jù)交換。因此可以借助這一特性,把LabVIEW與MATLAB結(jié)合,充分利用MATLAB提供的大量高效可靠的算法和LabVIEW的圖形化編程能力,混合開發(fā)出功能強大的應(yīng)用軟件。
2 應(yīng)用舉例
在混合編程中,通常用LabVIEW設(shè)計用戶圖形界面,負責數(shù)據(jù)采集和網(wǎng)絡(luò)通信;MATLAB在后臺提供大型算法供 LabVIEW調(diào)用。
2.1 方法一:使用MATLAB Script節(jié)點
為了簡化調(diào)用過程,LabVIEW提供了MATLAB Script節(jié)點。LabVIEW使用ActiveX技術(shù)執(zhí)行該節(jié)點,啟動一個MATLAB進程。這樣用戶就可以很方便地在自己的LabVIEW應(yīng)用程序中使用MATLAB,包括執(zhí)行MATLAB命令、使用功能豐富的各種工具箱,如神經(jīng)網(wǎng)絡(luò)工具箱(Neural Network Toolbox)、優(yōu)化工具箱(Optimization Toolbox)。值得注意的是:LabVIEWgn MATLAB之間的數(shù)據(jù)通信僅支持Real、RealVector、RealMatrix、Complex、VectorComplex、Matrix六種格式的數(shù)據(jù),且必須根據(jù)具體情況進行選擇。
當開發(fā)涉及工業(yè)控制的應(yīng)用程序時,常常由于控制參數(shù)的非線性變化,而無法建立合適的模型。由于此類問題,神經(jīng)網(wǎng)絡(luò)提供了一條有效的解決途徑。
在LabVIEW開發(fā)環(huán)境下新建一個三層BP神經(jīng)網(wǎng)絡(luò)的VI程序,程序框圖見圖1。網(wǎng)絡(luò)結(jié)構(gòu)部分主要設(shè)置隱層(Hidelay)神經(jīng)元的個數(shù)、傳遞函數(shù)(Transfer Function)以及網(wǎng)絡(luò)訓練算法(Algorithm)。經(jīng)過樣本數(shù)據(jù)(Training Data)訓練過的網(wǎng)絡(luò),即可進行仿真測試了。MATLAB腳本程序可以在MATLAB環(huán)境下調(diào)試,再使用MATLAB Script節(jié)點導入MATLAB腳本;也可以直接在MATLAB Script節(jié)點中編寫。位于Function>>Mathematics>>Formula模板中的MATLAB Script節(jié)點可以導入MATLAB腳本。圖1中的腳本程序使用CASE語句進行傳遞函數(shù)和訓練算法的選擇。MATLAB Script節(jié)點中神經(jīng)網(wǎng)絡(luò)的輸入層和隱層之間的權(quán)值矩陣inweight應(yīng)指定為RealMatrix,在LabVIEW中對應(yīng)的數(shù)據(jù)類型是二維實數(shù)據(jù)組Net.I-Weight。各變量數(shù)據(jù)類型見表1。
在此程序中,得到的BP網(wǎng)絡(luò)各層的權(quán)值矩 陣、閾值向量和傳遞函數(shù)三類參非常有用的,它們決定了神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)與特性。因此當神經(jīng)網(wǎng)絡(luò)訓練好后,可以直接使用這些參數(shù)處理新的數(shù)據(jù),得到預測值,而不必重新調(diào)用MATLAB。這樣程序的運行效率會更高。另一方面,將調(diào)試好的神經(jīng)網(wǎng)絡(luò)VI創(chuàng)建成一個子VI,作為模塊保存,當需要更新網(wǎng)絡(luò)時,可以隨時調(diào)用。
雖然通過MATLAB Script節(jié)點進行通信比較易于實現(xiàn),但以這種方式調(diào)用MATLAB時,在任務(wù)欄中將出現(xiàn)一個MATLAB圖標,單擊該圖形會打開MATLAB窗口,在其中可以任意輸
熱門點擊
- MMIC和RFIC的CAD 王紹東,高學邦,
- 遲滯比較器
- 壓電晶體
- LabVIEW與MATLAB混合編程
- 精工電波掛鐘:自動對時、自動發(fā)光
- 射頻功率放大器的自適應(yīng)前饋線性化技術(shù) 蔡鐘斌
- 3G W-CDMA FDD直接轉(zhuǎn)換零中頻接收
- 以太網(wǎng):技術(shù)和應(yīng)用不斷擴展 信息產(chǎn)業(yè)部電信研
- 數(shù)字傳感器信號遠傳時的兩個技術(shù)問題 周勝海
- 嵌入式設(shè)備鼠標接口的設(shè)計與實現(xiàn) 上海華東師范
推薦技術(shù)資料
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究