簡玉梅,高 飛,阮麟杰(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院,上海201620)
C#和LabVIEW混合編程在水產(chǎn)養(yǎng)殖溶解氧監(jiān)控中的應(yīng)用*
簡玉梅,高飛,阮麟杰
(上海工程技術(shù)大學(xué)電子電氣工程學(xué)院,上海201620)
水產(chǎn)養(yǎng)殖過程中,為了實現(xiàn)溶解氧的實時監(jiān)測和及時報警,提出一種C#和LabVIEW混合編程的溶解氧監(jiān)測控制系統(tǒng)。LabVIEW負(fù)責(zé)數(shù)據(jù)采集,C#上位機(jī)程序通過調(diào)用LabVIEW生成的DLL,用戶通過C#程序給LabVIEW發(fā)送采集命令,當(dāng)LabVIEW接收到用戶的命令后進(jìn)行數(shù)據(jù)采集。系統(tǒng)的主要特點是在上位機(jī)上根據(jù)養(yǎng)殖水產(chǎn)品的養(yǎng)殖時段,動態(tài)調(diào)用溶解氧的預(yù)測算法,實時傳遞采集指令給各個Lab-VIEW子程序,將數(shù)據(jù)采集和數(shù)據(jù)分析處理分開,減少由于LabVIEW的串口輪詢通信方式帶來的CPU使用率。系統(tǒng)能夠在當(dāng)溶解氧超過設(shè)定的報警值時及時報警,確保養(yǎng)殖水環(huán)境參數(shù)正常。
養(yǎng)殖監(jiān)測;溶解氧報警;LabVIEW;虛擬儀器;混合編程
溶解氧是水產(chǎn)養(yǎng)殖過程中的重要監(jiān)測參數(shù),溫度的高低會直接影響溶解氧的多少,進(jìn)而影響水產(chǎn)品的生長,實時控制養(yǎng)殖環(huán)境的溶解氧能有效地提高水產(chǎn)品的產(chǎn)量[1~3]。如何將新的技術(shù)引入水產(chǎn)養(yǎng)殖監(jiān)測系統(tǒng),設(shè)計出更好的溶解氧監(jiān)測系統(tǒng)是其中的一個研究熱點。
目前,溫度作為影響溶解氧的一大主要因素,學(xué)者們創(chuàng)建了各種基于虛擬儀器的溫度監(jiān)測系統(tǒng)[4~8]。但由于Lab-VIEW在串口通信上只能實現(xiàn)輪詢方式的數(shù)據(jù)收發(fā),無法實現(xiàn)中斷方式的數(shù)據(jù)收發(fā),由于輪詢會一直占用CPU資源,使得程序效率低,這對于串口數(shù)少的應(yīng)用程序,可以滿足需求。但是如果系統(tǒng)中串口數(shù)很多,比如:在水產(chǎn)養(yǎng)殖過程中需要采集除溫度之外的,溶解氧、氨氮、壓力、鹽度等參數(shù),當(dāng)串口數(shù)達(dá)到一定限度的時候LabVIEW的串口通信VISA實現(xiàn)起來就比較困難。再者,LabVIEW對于數(shù)據(jù)的分析處理能力有限,處理能力不如C#程序。
本文提出了將C#和LabVIEW混合編程,取兩者的優(yōu)點[9~11],創(chuàng)建一個控制系統(tǒng)用于水產(chǎn)養(yǎng)殖過程中的溶解氧控制。
本文提出一種C#和LabVIEW混合編程的溶解氧監(jiān)測系統(tǒng)。該系統(tǒng)在LabVIEW上實現(xiàn)數(shù)據(jù)的采集和存儲,在C#中調(diào)用LabVIEW程序完成對數(shù)據(jù)的后期處理和反應(yīng)操作。整個系統(tǒng)的邏輯圖如圖1所示。
圖1 系統(tǒng)邏輯圖Fig 1 Logic diagram of system
系統(tǒng)分為兩部分,C#上編寫的上位機(jī)程序,LabVIEW上編寫的各個水質(zhì)參數(shù)采集模塊。上位機(jī)根據(jù)需要發(fā)送控制命令給LabVIEW程序的接口,讓各個LabVIEW程序模塊完成數(shù)據(jù)的采集工作,上位機(jī)在根據(jù)溶解氧預(yù)測控制算法求解出溶解氧預(yù)測值,進(jìn)而控制養(yǎng)殖環(huán)境。
本文主要介紹LabVIEW端的溫度采集模塊。溫度采集板塊程序架構(gòu)圖2所示。
圖2 LabVIEW端程序架構(gòu)Fig 2 Program architecture of LabVIEW
系統(tǒng)運(yùn)行原理:在LabVIEW端,將溫度值用電壓信號表示,電壓信號經(jīng)過變送器放大后傳輸給A/D轉(zhuǎn)換器,A/D轉(zhuǎn)換器將轉(zhuǎn)換后的數(shù)字信號傳遞到PC,PC的溫度采集程序?qū)⒋藬?shù)字信號接收并交給數(shù)據(jù)處理程序并將其存入數(shù)據(jù)庫。在C#端,主要實現(xiàn)串口通信,用戶在控制界面提前錄入當(dāng)前的養(yǎng)殖時間段,將數(shù)據(jù)采集開始命令發(fā)送給Lab-VIEW程序,實時顯示預(yù)測的溶解氧值,并發(fā)出聲音預(yù)警提醒。同時將溶解氧值的輸出作為增氧機(jī)轉(zhuǎn)速調(diào)節(jié)器的輸入,當(dāng)溶解氧值高時,降低增氧機(jī)轉(zhuǎn)速;反之則相反。
2.1數(shù)據(jù)采集卡的選擇
本文著重針對溫度的采集過程進(jìn)行討論,其他參數(shù)的采集思路一樣。本文選用NI公司的NIPCI 6010數(shù)據(jù)采集卡進(jìn)行溫度的采集工作。
2.2溫度傳感器的選擇
考慮到水產(chǎn)養(yǎng)殖過程中常用水的溫度范圍為0~50℃,本次選用Pt100型熱電阻傳感器和SBWZ—2480D導(dǎo)軌式溫度變送器。LabVIEW中顯示的是電壓值,為了使觀測者能更直觀地測量溫度,通過實驗建立電壓和溫度之間的對應(yīng)關(guān)系,通過測得的實驗數(shù)據(jù),經(jīng)過Matlab線性擬合得到溫度和電壓值間關(guān)系為
式中x為實際采集到的溫度,y為轉(zhuǎn)換后的對應(yīng)電壓值。
3.1LabVIEW端程序總體設(shè)計
LabVIEW端程序主要實現(xiàn)如下功能:
1)串口通信:通過串口通信接收溫度監(jiān)測裝置發(fā)送的溫度測量值;
2)溫度超限報警:當(dāng)溫度測量值大于報警溫度時,點亮報警LED燈;
3)將采集的溫度值存儲在Access數(shù)據(jù)庫中,供用戶隨時調(diào)用。
程序的執(zhí)行采用變量輪詢的方式,程序流程圖如圖3所示。
圖3 LabVIEW端程序流程圖Fig 3 Flow chart of LabVIEW
首先對串口資源進(jìn)行設(shè)置,設(shè)置內(nèi)容包括波特率,串口設(shè)置等。設(shè)置好串口信息,溫度檢測系統(tǒng)等待接收從上位機(jī)發(fā)送來的采集信號命令,所有采集到的溫度將實時存儲到數(shù)據(jù)庫中。
3.2LabVIEW通信操作
LabVIEW上位機(jī)程序采集到溫度數(shù)據(jù)后,通過式(1)轉(zhuǎn)換為電壓值,采集到的實時數(shù)據(jù)與設(shè)定值進(jìn)行比較,當(dāng)超過設(shè)定值時,控制面板上的指示燈亮。溫度報警程序如圖4所示。
圖4 溫度報警程序Fig 4 Temperature alarm procedures
LabVIEW程序可以在用戶需要的任何時間段內(nèi),根據(jù)用戶指令進(jìn)行數(shù)據(jù)的采集工作,系統(tǒng)中將采集溫度,溶解氧,鹽度等不同的采集數(shù)據(jù)任務(wù)分成多LabVIEW程序,上位機(jī)需要那個程序就調(diào)用對應(yīng)的LabVIEW程序。
1)創(chuàng)建LabVIEW程序
在LabVIEW中新建項目,新建VI,創(chuàng)建溫度采集的VI程序,其中,C#端發(fā)送來的控制命令作為LabVIEW程序的輸入端,LabVIEW程序輸出端為增氧機(jī)控制命令。
2)生成.NET互動操作程序集
將LabVIEW程序生成DLL,點擊程序生成規(guī)范右鍵新建.Net互動操作程序集。生成之后進(jìn)行DLL設(shè)置,其中主要需要設(shè)置好DLL的輸入端和輸出端。到此 Lab-VIEW端的程序完成。
3)C#調(diào)用LabVIEW程序
創(chuàng)建C#程序,將剛剛生成的DLL添加到C#的引用中。添加進(jìn)來后可以通過雙擊引用,查看其中的方法。需要注意:在LabVIEW中有輸入和輸出,則在C#程序中需要對應(yīng)存在這兩個變量。
在生成的過程中定義下DLL的輸入和輸出接口,打開VS程序,新建項目,在程序中設(shè)置一個觸發(fā)LabVIEW程序啟動的標(biāo)示位,供用戶發(fā)送命令。添加生成的DLL,在C#中即可調(diào)用LabVIEW程序,當(dāng)需要采集養(yǎng)殖環(huán)境中的參數(shù)值時,C#程序調(diào)用對應(yīng)的LabVIEW程序。
對系統(tǒng)進(jìn)行了功能測試,如圖5。
圖5 溶解氧測試結(jié)果Fig 5 Test result of DO
如圖5所示,當(dāng)前養(yǎng)殖時間段為養(yǎng)殖初期,此時后臺會調(diào)用南美白對蝦養(yǎng)殖初期的溶解氧預(yù)測公式(不同時間段內(nèi)的溶解氧預(yù)測公式不同在于其他水質(zhì)參數(shù)和溶解氧之間的權(quán)重值不一樣)計算出當(dāng)前的預(yù)測溶解養(yǎng)殖,當(dāng)溶解氧值超過閾值時,系統(tǒng)進(jìn)行預(yù)警處理(發(fā)生預(yù)警聲音,預(yù)警聲音的處理使用C#中的System Media SoundPlayer來實現(xiàn))。
將設(shè)計的C#和LabVIEW混合編程的系統(tǒng)與沒有使用LabVIEW混合編程的水產(chǎn)養(yǎng)殖溫度采集系統(tǒng)進(jìn)行性能比較,結(jié)果如表1所示。
表1 性能測試比較結(jié)果Tab 1 Results of performance test comparison
本文的系統(tǒng)相較傳統(tǒng)溶解氧預(yù)測算法,主要優(yōu)勢在于將溶解氧的采集和處理分開,使用LabVIEW進(jìn)行數(shù)據(jù)采集,數(shù)據(jù)的處理則交給上位機(jī),對于純粹的LabVIEW程序而言,減少了其由于輪詢方式帶來的CPU使用率。
本文提出一種C#和LabVIEW混合編程的溫度監(jiān)測系統(tǒng)。該系統(tǒng)的架構(gòu)由數(shù)據(jù)采集卡和LabVIEW程序,C#上位機(jī)程序組成。系統(tǒng)的主要特點是針對LabVIEW的大數(shù)據(jù)量收發(fā)過程CPU占用率問題,通過C#上位機(jī)調(diào)用LabVIEW生成的DLL,根據(jù)用戶的需求,觸發(fā)LabVIEW采集實時數(shù)據(jù),使得整個系統(tǒng)在數(shù)據(jù)采集和分析處理方面進(jìn)行了分層處理,減少系統(tǒng)CPU的使用率,當(dāng)上位機(jī)中用戶提出需求時才啟動LabVIEW中程序的運(yùn)行,減少由于LabVIEW程序輪詢式的CPU開銷。系統(tǒng)能夠在實際使用過程中,當(dāng)溫度超過設(shè)定的報警溫度時,可以通過LabVIEW上的程序進(jìn)行實時報警。當(dāng)預(yù)測出的溶解氧值出現(xiàn)異常時,可以通過上位機(jī)進(jìn)行預(yù)警處理,減少了由于人為疏忽導(dǎo)致的不必要損失。同時,將數(shù)據(jù)存儲在數(shù)據(jù)庫中,提供用戶查詢,方便用戶隨時查看以往的溫度數(shù)據(jù)。
[1]馬從國,趙德安,王建國,等.基于無線傳感器網(wǎng)絡(luò)的水產(chǎn)養(yǎng)殖池塘溶解氧智能監(jiān)控系統(tǒng)[J].農(nóng)業(yè)工程學(xué)報,2015,31(7):193-200.
[2]譚洪新,劉文暢,孫大川,等.閉合循環(huán)水產(chǎn)養(yǎng)殖系統(tǒng)中氣—液混合裝置的增氧效果[J].農(nóng)業(yè)工程學(xué)報,2014,30(6):147-153.
[3]黃建清,王衛(wèi)星,姜晟,等.基于無線傳感器網(wǎng)絡(luò)的水產(chǎn)養(yǎng)殖水質(zhì)監(jiān)測系統(tǒng)開發(fā)與試驗[J].農(nóng)業(yè)工程學(xué)報,2013,29(4):183-190.
[4]史延?xùn)|,楊萍,寧飛,等.基于LabVIEW的多路溫度流量監(jiān)測系統(tǒng)設(shè)計[J].測控技術(shù),2013,32(8):29-31,35.
[5] 孫筱,陳梅,張燕.基于LabVIEW的擠塑成型過程溫度控制系統(tǒng)[J].儀表技術(shù)與傳感器,2013(1):50-51,101.
[6]李偉剛,盧文忠,杜冬菊.基于LabVIEW的發(fā)射筒瞬態(tài)溫度測試系統(tǒng)設(shè)計[J].計算機(jī)測量與控制,2013,21(6):1556-1557,1561.
[7]吳卓葵,許勝棋.基于LabVIEW的多點報警溫度監(jiān)測系統(tǒng)設(shè)計[J].制造業(yè)自動化,2014,36(1):139-142.
[8] 王承宇,陳宇晨,候昀.基于Web和LabVIEW的斷路器遠(yuǎn)程監(jiān)控系統(tǒng)[J].化工自動化及儀表,2014,41(6):632-635.
[9]賴健明,劉昌文,楊延相,等.基于LabVIEW的高效氧傳感器檢測系統(tǒng)開發(fā)[J].傳感器與微系統(tǒng),2014,33(8):105-108.
[10]李俊,陳湘波.LabVIEW與C語言的混合編程[J].自動化與儀器儀表,2001,5(5):62-65.
[11]張振頂,黎華,李茂東,等.LabVIEW和C語言混合編程在工業(yè)鍋爐熱效率計算中的應(yīng)用[J].能源與環(huán)境,2012(5):24-25,28.
Application of C#and LabVIEW in dissolved oxygen monitoring in aquaculture*
JIAN Yu-mei,GAO Fei,RUAN Lin-jie
(School of Electronic and Electrical Engineering,Shanghai University of Engineering Science,Shanghai 201620,China)
In order to realize real-time monitoring and timely alarm of dissolved oxygen(DO)in aquaculture,put forward a DO monitoring system based on C#and LabVIEW,LabVIEW is mainly responsible for data collection,C#call DLL generated by LabVIEW,users send acquisition command to LabVIEW through C#program,and after LabVIEW receive the user's command,data acquisition is carried out.The main feature of this system is according to culture period of aquatic products,this system dynamic calls DO prediction algorithm on upper PC,real-time transmit acquisition instruction to various LabVIEW subroutines,separates data acquisition and data analysis and processing,reduce CPU usage rate brought by LabVIEW serial polling communication.The system can alarm in time when the DO is over the set,which can ensure aquaculture water environment parameters is normal.
breeding monitoring;dissolved oxygen(DO)alarm;LabVIEW;virtual instrument(VI);mixed programming
TP273
A
1000—9787(2016)06—0155—03
10.13873/J.1000—9787(2016)06—0155—03
2015—09—16
上海市教育委員會科研創(chuàng)新項目重點項目(14ZZ156)
簡玉梅(1987-),女,四川德陽人,碩士研究生,實驗室助教,主要研究方向為無線傳感器網(wǎng)絡(luò),工業(yè)自動化控制。