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

?

基于LabVIEW與MATLAB混合編程的氣液兩相流測量軟件開發(fā)

2018-10-30 09:53牛佳樂邢蘭昌華陳權(quán)耿艷峰石文博
實(shí)驗(yàn)室研究與探索 2018年9期
關(guān)鍵詞:氣液調(diào)用流量

牛佳樂, 邢蘭昌, 華陳權(quán), 耿艷峰, 石文博

(中國石油大學(xué)(華東) 信息與控制工程學(xué)院,山東 青島 266580)

0 引 言

LabVIEW作為一種虛擬儀器開發(fā)軟件,在數(shù)據(jù)采集、儀器控制、界面開發(fā)等方面具有簡單直觀、易于理解、應(yīng)用范圍廣等特點(diǎn),但是當(dāng)面對需要進(jìn)行大量數(shù)據(jù)運(yùn)算處理以及復(fù)雜控制算法等應(yīng)用時,有限的控件和函數(shù)會大大限制其適用范圍[1-2]。MATLAB作為一種工程計(jì)算語言,具有編程效率高、可擴(kuò)充性強(qiáng)、移植性好等特點(diǎn),但其界面開發(fā)能力較弱,并且在數(shù)據(jù)采集與通信、軟硬件接口等方面應(yīng)用中都較為繁瑣[2-4]。因此,實(shí)現(xiàn)兩者的混合編程,充分發(fā)揮出各自的優(yōu)點(diǎn)、互補(bǔ)不足,能夠顯著提高編程效率,開發(fā)出功能更為強(qiáng)大的虛擬儀器軟件。

氣液兩相流流動狀態(tài)復(fù)雜,兩相之間存在多變的界面且相間作用劇烈,屬于復(fù)雜的瞬態(tài)流動過程,對氣液兩相流動參數(shù)進(jìn)行測量時需要獲取大量數(shù)據(jù)并且對數(shù)據(jù)獲取實(shí)時性要求較高,而且兩相流參數(shù)計(jì)算模型的求解往往比較復(fù)雜。考慮到上述問題的特殊性,單獨(dú)采用LabVIEW或者M(jìn)ATLAB對氣液兩相流參數(shù)測量軟件進(jìn)行開發(fā)效率較低。本文采用LabVIEW與MATLAB混合編程方法,針對課題組前期所研究的基于超聲測速與科氏效應(yīng)組合的氣液兩相流測量裝置開發(fā)了相應(yīng)的測量軟件,從而解決了氣液兩相流參數(shù)測量系統(tǒng)需要進(jìn)行大量數(shù)據(jù)實(shí)時采集、處理、顯示、保存以及復(fù)雜多相流模型求解等問題。

1 LabVIEW與MATLAB混合編程方法

隨著計(jì)算機(jī)技術(shù)的發(fā)展,出現(xiàn)了多種LabVIEW與MATLAB混合編程的方法,其優(yōu)缺點(diǎn)決定了各自的適用范圍。目前比較常見的方法主要有動態(tài)數(shù)據(jù)交換技術(shù)、ActiveX控件技術(shù)、COM組件技術(shù)和動態(tài)鏈接庫技術(shù)。

1.1 動態(tài)數(shù)據(jù)交換技術(shù)

動態(tài)數(shù)據(jù)交換(Dynamic Data Exchange,DDE)是一種基于消息的協(xié)議,利用DDE可以實(shí)現(xiàn)兩個程序間數(shù)據(jù)或命令的交換。LabVIEW提供了DDE通信所需的VI,利用這些VI能夠創(chuàng)建DDE Server 和DDE Client,這兩個程序能夠?qū)崿F(xiàn)發(fā)送-接受數(shù)據(jù)、請求-提供服務(wù)等功能[5]。DDE技術(shù)存在一定的缺點(diǎn),如當(dāng)數(shù)據(jù)發(fā)送的頻率高于數(shù)據(jù)接收的頻率時,會出現(xiàn)數(shù)據(jù)丟失的現(xiàn)象[6]。

1.2 ActiveX控件技術(shù)

基于ActiveX控件技術(shù)的LabVIEW與MATLAB混合編程有兩種具體實(shí)現(xiàn)方法:利用MATLAB Script節(jié)點(diǎn)或使用ActiveX函數(shù)模板。兩種實(shí)現(xiàn)方法的執(zhí)行過程基本相同,即:首先打開MATLAB自動化服務(wù)器;其次執(zhí)行MATLAB命令;最后關(guān)閉自動化服務(wù)器。ActiveX控件技術(shù)的缺點(diǎn)是執(zhí)行速度較低,并且不能脫離MATLAB環(huán)境獨(dú)立運(yùn)行[7-8]。

1.3 COM組件技術(shù)

MATLAB COM Builder能夠?qū)⒂脩羲_發(fā)的程序轉(zhuǎn)化為獨(dú)立的組件對象模型(Component Object Model,COM),其它支持COM組件的應(yīng)用程序都能夠?qū)ζ溥M(jìn)行調(diào)用[9]。LabVIEW在調(diào)用COM組件時需要注意數(shù)據(jù)類型是否匹配。COM組件技術(shù)的缺點(diǎn)是初次執(zhí)行時的運(yùn)行速度較慢,并且要求計(jì)算機(jī)安裝MCRinstaller.exe[10]。

1.4 動態(tài)鏈接庫技術(shù)

動態(tài)鏈接庫(Dynamic Link Library,DLL)由已經(jīng)封裝好的可執(zhí)行代碼組成,其內(nèi)部函數(shù)具有共享性。按照DLL開發(fā)規(guī)范和編程策略所開發(fā)出的DLL都具有通用性,都能夠被其它支持DLL的程序所調(diào)用[10-11]。LabVIEW支持對DLL函數(shù)的調(diào)用,并且有兩種調(diào)用方式,一種是通過使用“調(diào)用庫函數(shù)(Call Library Function node, CLF)節(jié)點(diǎn)”實(shí)現(xiàn)對DLL的調(diào)用,另一種是使用LabVIEW自動導(dǎo)入功能導(dǎo)入DLL[12]。但是考慮到經(jīng)MATLAB編譯器編譯后直接生成的DLL文件其輸入輸出類型均為mxArray指針,LabVIEW支持標(biāo)準(zhǔn)C數(shù)據(jù)類型而不支持mxArray,所以需要使用VC++對函數(shù)文件進(jìn)行轉(zhuǎn)換,使其輸入輸出類型符合LabVIEW的要求[13]。雖然利用這種方法實(shí)現(xiàn)兩者的混合編程在流程上較為復(fù)雜,但是經(jīng)過VC++封裝生成的DLL文件能夠脫離MATLAB而被LabVIEW調(diào)用,執(zhí)行效率高,因此適合大型程序的開發(fā)。

對比上述4種方法,動態(tài)鏈接庫技術(shù)最為突出的優(yōu)點(diǎn)是其能夠脫離MATLAB而獨(dú)立運(yùn)行,并且LabVIEW還可以生成獨(dú)立的可執(zhí)行程序和安裝程序,最終能夠?qū)崿F(xiàn)在沒有安裝MATLAB和LabVIEW的計(jì)算機(jī)上獨(dú)立運(yùn)行,可以大大提高軟件的可移植性與通用性。

2 氣液兩相流分相流量測量模型

針對氣液兩相流分相流量測量的問題,通常將成熟的單相流測量方法與氣液兩相流理論相結(jié)合,建立氣液兩相流測量模型對單相流測量結(jié)果進(jìn)行修正,從而得到氣液分相流量的測量結(jié)果[14-15]。由于需要獲得氣相流量和液相流量兩個參數(shù),而單一的測量原理只能得到一個獨(dú)立的未知參數(shù),因此將兩類測量原理迥異的單相流測量儀表進(jìn)行組合測量,開發(fā)相應(yīng)的組合測量模型對單相流儀表的測量結(jié)果進(jìn)行處理,得到分相流量是一條有效的途徑[16-17]。

超聲波流量計(jì)可對流速進(jìn)行非接觸式測量、科氏流量計(jì)能夠高精度地測量質(zhì)量流量和密度,提出超聲波流量計(jì)與科氏流量計(jì)組合的氣液兩相流參數(shù)測量新方法[18-19],其優(yōu)點(diǎn)在于:①科氏流量計(jì)多參數(shù)測量的特點(diǎn)為組合測量模型中的組合方式提供更多的自由度,為提高測量精度和擴(kuò)大測量范圍提供了前提條件;②超聲波流量計(jì)的流速測量過程對流場不產(chǎn)生任何擾動,不會為科氏流量計(jì)的測量過程引入噪聲,而且超聲波探頭安裝位置靈活,為進(jìn)一步開發(fā)緊湊型一體式流量測量裝置提供了可能[20]。氣液兩相流組合測量裝置的結(jié)構(gòu)示意圖如圖1所示。

圖1 氣液兩相流組合測量裝置結(jié)構(gòu)示意圖

基于氣液兩相流理論、超聲波與科氏流量計(jì)的測量原理并結(jié)合大量的實(shí)驗(yàn)數(shù)據(jù),提出一個用于計(jì)算氣相和液相分相流量的組合測量模型[18]:

(1)

式中:WG為氣相質(zhì)量流量;WC為科氏流量計(jì)質(zhì)量流量輸出值;QGU為超聲波流量計(jì)流量輸出值;ρG為實(shí)際氣體的密度;ρL為實(shí)際液體密度;μL為液相黏度系數(shù);μG為氣相黏度系數(shù);x為氣相質(zhì)量含率;K1、K2、B1和B2為基于實(shí)驗(yàn)數(shù)據(jù)所確定的常數(shù)。

(2)

式中,WL為液相質(zhì)量流量。

以上組合測量模型中共有兩個未知量,即氣相質(zhì)量流量WG和液相質(zhì)量流量WL。求解模型時,首先對式(1)中第2個方程進(jìn)行整理,用WG表示x,然后將x的表達(dá)式代入第1個方程,得到WG=f(WG)的方程形式,再采用牛頓迭代法求解得出WG,進(jìn)而求得x,最后通過WG和x計(jì)算得到WL。

求解上述組合測量模型需要多個輸入?yún)?shù),通過LabVIEW不僅能夠?qū)崿F(xiàn)對這些參數(shù)數(shù)據(jù)的實(shí)時采集,還可以對原始數(shù)據(jù)進(jìn)行預(yù)處理、實(shí)時顯示以及保存等操作。但是該模型的求解過程涉及到復(fù)雜的迭代運(yùn)算,此時MATLAB能夠發(fā)揮其強(qiáng)大的數(shù)值計(jì)算功能而對該模型進(jìn)行快速求解。

3 測量模型求解混合編程的實(shí)現(xiàn)

如圖2所示,基于動態(tài)鏈接庫技術(shù)的混合編程主要分為3個步驟:①將M文件轉(zhuǎn)換為C++文件;②將C++文件轉(zhuǎn)換為動態(tài)鏈接庫文件;③用LabVIEW調(diào)用動態(tài)鏈接庫文件。

圖2 測量模型求解混合編程的實(shí)現(xiàn)步驟

3.1 M文件至C++文件的轉(zhuǎn)換

第1步是將實(shí)現(xiàn)模型求解功能的M文件轉(zhuǎn)換為C++文件。從MATLAB 2012版本開始,其自帶的MATLAB Coder工具箱可以將MATLAB代碼生成獨(dú)立的、可讀性強(qiáng)、可移植的C/C++代碼或庫文件,方便其他應(yīng)用程序的調(diào)用,具體操作步驟如下:

(1) 在MATLAB中編寫求解氣液兩相流組合測量模型的代碼,并保存為函數(shù)式M文件,命名為test.m。

(2) 在MATLAB中設(shè)置編譯環(huán)境,在命令窗口輸入mex-setup或mbuild-setup后,命令窗口會顯示本計(jì)算機(jī)已安裝的編譯器,選擇Microsoft Visual C++ 2010;在MATLAB工具箱中打開MATLAB Coder 界面并輸入工程名test,添加MATLAB文件。

(3) 根據(jù)測量模型的實(shí)際需求對函數(shù)中所有參數(shù)的類型和大小進(jìn)行設(shè)置,最終參數(shù)類型選擇為double型,參數(shù)大小設(shè)置為1×1。

(4) 選中Build選項(xiàng)卡中的Output type選項(xiàng),設(shè)置轉(zhuǎn)換后的文件輸出類型,此處選擇C/C++ Static Library,即選擇C++靜態(tài)庫;選中More settings選項(xiàng)卡,在語言選項(xiàng)General Language中選擇選擇C++語言;最后進(jìn)行編譯,生成C++文件,點(diǎn)擊View report可以查看生成的C++程序,至此完成M文件至C++文件的轉(zhuǎn)換。

3.2 C++文件至DLL文件的轉(zhuǎn)換

第2步是利用Microsoft Visual C++ 2010將C++文件轉(zhuǎn)換為LabVIEW可調(diào)用的DLL文件,具體步驟如下:

(1) 新建Win32項(xiàng)目,選擇DLL程序應(yīng)用類型,項(xiàng)目命名為testdll;將生成的C++文件中的test.cpp、test.h、rtwtypes.h、types.h等文件分別添加到DLL項(xiàng)目中的源文件和頭文件。

(2) 在test.h文件中添加具有DLL名稱的宏定義和導(dǎo)出函數(shù)語句,使DLL項(xiàng)目擁有導(dǎo)出函數(shù)以供LabVIEW調(diào)用,導(dǎo)出函數(shù)語句形式為extern "C" {_declspec(dllexport) void test (real_TRhoG, real_T,RhoL…) },test是函數(shù)名,其括號內(nèi)為所有參數(shù)。

(3) 在test.cpp文件中添加聲明語句#include "rt_nonfinite.h"等,聲明的對象包括項(xiàng)目中的頭文件和添加進(jìn)項(xiàng)目的頭文件,以使C++程序調(diào)用的系統(tǒng)庫函數(shù)擁有函數(shù)聲明。

(4) 創(chuàng)建自定義模塊mytestdll.def,將導(dǎo)出函數(shù)名稱test寫入該模塊,然后添加到DLL項(xiàng)目;對項(xiàng)目進(jìn)行編譯,確認(rèn)無誤后,點(diǎn)擊生成項(xiàng)目,即可實(shí)現(xiàn)C++文件至DLL文件的轉(zhuǎn)換。

3.3 DLL文件的調(diào)用

LabVIEW提供兩種調(diào)用DLL文件的方式,一種是調(diào)用庫函數(shù)節(jié)點(diǎn)法,一種是導(dǎo)入共享庫工具法,前者需要對變量進(jìn)行設(shè)定,操作繁瑣且容易出錯,后者相對簡單且便于操作,以下采用導(dǎo)入共享庫的方式,具體步驟如下:

(1) 打開LabVIEW,選擇菜單工具中的導(dǎo)入欄并且選擇其中的共享庫(.dll)。

(2) 在彈出的對話框“指定創(chuàng)建或者更新模式”中,選擇共享庫創(chuàng)建VI。

(3) 在彈出的對話框“選擇共享庫及頭文件”中,選擇共享庫文件(.dll)和頭文件(.h)。

(4) 在彈出的對話框“選擇待轉(zhuǎn)換函數(shù)”中,選擇需要轉(zhuǎn)換的DLL中的函數(shù),要求函數(shù)必須是在C++程序中添加導(dǎo)出函數(shù)語句的函數(shù),如上文的test函數(shù)。

(5) 在彈出的對話框“配置項(xiàng)目庫設(shè)置”中,寫入項(xiàng)目庫名稱,選擇項(xiàng)目庫路徑。

(6) 在彈出的對話框“配置VI及控件”中,配置DLL中函數(shù)生成VI后的屬性規(guī)范和參數(shù)的類型,即可完成DLL的導(dǎo)入(調(diào)用)。

4 氣液兩相流測量軟件開發(fā)

基于LabVIEW與MATLAB混合編程技術(shù)開發(fā)了氣液兩相流測量系統(tǒng)的測量軟件。軟件開發(fā)過程中采用模塊化編程思想,將軟件功能分為6個功能模塊并分別進(jìn)行實(shí)現(xiàn),即:總體控制模塊、數(shù)據(jù)采集模塊、數(shù)據(jù)預(yù)處理模塊、測量模型求解模塊(流量計(jì)算模塊)、數(shù)據(jù)顯示模塊和數(shù)據(jù)保存模塊。該軟件的人機(jī)交互界面如圖3所示。

4.1 總體控制模塊

總體控制模塊主要包括“初始化”、“開始測試”、“停止測試”和“退出系統(tǒng)”等功能,分別對應(yīng)圖3所示人機(jī)交互界面上的4個按鈕。

“初始化”的主要功能是實(shí)現(xiàn)對軟件默認(rèn)參數(shù)的設(shè)置。“開始測試”的功能是實(shí)現(xiàn)軟件的整體運(yùn)行并完成數(shù)據(jù)采集和處理等過程。“停止測試”的功能是終止軟件運(yùn)行但不退出軟件系統(tǒng)。“退出系統(tǒng)”的功能是退出整個軟件系統(tǒng)。

4.2 數(shù)據(jù)采集模塊

數(shù)據(jù)采集模塊用于對圖1所示測量裝置的壓力、溫度、超聲波流量計(jì)輸出值和科氏流量計(jì)流量輸出值等信號進(jìn)行實(shí)時采集。參數(shù)設(shè)置包括采樣通道、輸入電壓范圍、采樣頻率和采樣點(diǎn)數(shù)。采樣通道的設(shè)置需要與實(shí)際接線通道保持一致。輸入電壓范圍需要根據(jù)傳感器輸出范圍、被測參數(shù)變化范圍以及數(shù)據(jù)采集卡允許輸入范圍綜合確定,盡量設(shè)置較小的輸入電壓范圍,以提高數(shù)據(jù)采集的分辨率和精度。采樣頻率的設(shè)置需要考慮被測參數(shù)實(shí)際變化頻率范圍、傳感器輸出信號刷新頻率和數(shù)據(jù)采集卡允許的最高頻率等因素。

本系統(tǒng)選用PCIE-1840數(shù)據(jù)采集卡,該數(shù)據(jù)采集卡具有4路單端模擬量輸入通道,16位A/D轉(zhuǎn)換分辨率,每個通道采樣頻率最高可達(dá)125 MS/s,能夠進(jìn)行4路同步采集。本軟件的默認(rèn)設(shè)置如下:4個參數(shù)的輸入電壓范圍均為-5~+5 V;壓力、溫度和超聲波流量計(jì)輸出值采樣頻率均為20 kS/s,采樣點(diǎn)數(shù)均為20 000;科氏流量計(jì)輸出值采樣頻率為1 000 S/s,采樣點(diǎn)數(shù)為1 000。

4.3 數(shù)據(jù)預(yù)處理模塊

數(shù)據(jù)預(yù)處理模塊主要實(shí)現(xiàn)濾波和取均值的功能。

圖3 氣液兩相流測量軟件人機(jī)交互界面

軟件設(shè)計(jì)了巴特沃斯濾波器、切比雪夫?yàn)V波器、貝塞爾濾波器等多種濾波器,以供操作人員根據(jù)實(shí)際需求進(jìn)行選擇。需要設(shè)置的濾波器參數(shù)主要包括:濾波器類型、階數(shù)和高低截止頻率,其中截止頻率和階數(shù)的設(shè)定需要綜合考慮采樣頻率、被測參數(shù)變化頻率、傳感器輸出刷新頻率、噪聲頻率等因素。

本軟件默認(rèn)選擇巴特沃斯低通濾波器(Butterworth),其特點(diǎn)在于能夠?qū)崿F(xiàn)通頻帶內(nèi)頻率響應(yīng)曲線的最大限度平坦,而在阻頻帶則逐漸下降為零。將濾波后的數(shù)據(jù)取平均后作為當(dāng)前測試點(diǎn)的測量值,供后續(xù)進(jìn)行模型計(jì)算、顯示和保存。

4.4 測量模型求解模塊

模型求解模塊的程序如圖4所示,該模塊的功能是調(diào)用求解組合測量模型的DLL,通過對預(yù)處理后的數(shù)據(jù)進(jìn)行計(jì)算,最終得到氣液兩相流的分相質(zhì)量流量。對該模型進(jìn)行求解前需要設(shè)置以下參數(shù)(見圖3):液體密度、氣相黏度系數(shù)、液相黏度系數(shù)和模型參數(shù)。

氣體密度由氣體狀態(tài)方程計(jì)算得到,其中溫度和壓力值為實(shí)際測量值;液體密度默認(rèn)設(shè)置為定值1 000 kg/m3(水的密度);氣相和液相動力黏度系數(shù)默認(rèn)設(shè)置為標(biāo)準(zhǔn)狀態(tài)(101 325 Pa,20 ℃)下空氣和水的黏度系數(shù)值,即μG=0.018 mPa·s,μL=1 mPa·s;模型參數(shù)(見式(1)和文獻(xiàn)[18])設(shè)置為:B1=0.376,B2=-0.023,K1=0.320,K2=0.008。

圖4 模型求解模塊的部分程序圖

4.5 數(shù)據(jù)顯示模塊

數(shù)據(jù)顯示模塊用于對經(jīng)過預(yù)處理和模型計(jì)算后的數(shù)據(jù)進(jìn)行實(shí)時顯示,以便于操作人員及時了解被測的氣液兩相流流動狀態(tài)。

顯示的數(shù)據(jù)主要包括:濾波后的壓力、溫度、超聲波流量計(jì)輸出和科氏流量計(jì)輸出隨時間變化的曲線,壓力、溫度、超聲波流量計(jì)輸出和科氏流量計(jì)輸出值,模型計(jì)算后的氣液兩相流分相質(zhì)量流量隨時間變化的曲線。

4.6 數(shù)據(jù)保存模塊

數(shù)據(jù)保存模塊的功能是將經(jīng)過預(yù)處理和模型計(jì)算后的數(shù)據(jù)保存到硬盤,具體包括壓力傳感器、溫度傳感器、超聲波流量計(jì)和科氏流量計(jì)的輸出以及通過模型計(jì)算得到的氣液兩相流分相質(zhì)量流量。

為了方便后續(xù)查看和調(diào)用,將數(shù)據(jù)以文本格式保存到.txt文件中,并將各個參數(shù)的數(shù)據(jù)文件分別放置于不同的文件夾。

5 結(jié) 語

為了高效地開發(fā)功能強(qiáng)大的虛擬儀器軟件,應(yīng)用動態(tài)鏈接庫技術(shù)實(shí)現(xiàn)了LabVIEW與MATLAB的混合編程,在此基礎(chǔ)上開發(fā)了用于氣液兩相流組合測量裝置的軟件,解決了氣液兩相流參數(shù)測量系統(tǒng)需要進(jìn)行大量數(shù)據(jù)實(shí)時采集、處理、顯示、保存以及復(fù)雜多相流模型求解等問題。

該軟件開發(fā)方法適用于對人機(jī)交互界面、數(shù)據(jù)采集與儀器控制和數(shù)值計(jì)算同時具有較高要求的場合,可廣泛應(yīng)用于實(shí)驗(yàn)室和實(shí)際生產(chǎn)系統(tǒng)。

猜你喜歡
氣液調(diào)用流量
冰墩墩背后的流量密碼
張曉明:流量決定勝負(fù)!三大流量高地裂變無限可能!
微重力下兩相控溫型儲液器內(nèi)氣液界面仿真分析
尋找書業(yè)新流量
氣液分離罐液位計(jì)接管泄漏分析
核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
CO2 驅(qū)低液量高氣液比井下氣錨模擬與優(yōu)化
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
五位一體流量平穩(wěn)控制系統(tǒng)