摘 要: 闡述了虛擬儀器軟件開發(fā)平臺LabVIEW技術(shù)的特點(diǎn),并介紹了MySQL數(shù)據(jù)庫與LabVIEW之間的通信方法,應(yīng)用LabVIEW圖形化編程軟件和MySQL數(shù)據(jù)庫軟件,借助ODBC驅(qū)動軟件,對溫度、壓力采集系統(tǒng)進(jìn)行了設(shè)計(jì),實(shí)現(xiàn)了溫度、壓力的采集,數(shù)據(jù)存儲與查詢,遠(yuǎn)程監(jiān)控等功能。
關(guān)鍵詞: LabVIEW;MySQL數(shù)據(jù)庫;溫度壓力采集;數(shù)據(jù)存儲
在工業(yè)制造和農(nóng)業(yè)生產(chǎn)中,為了降低成本、提高生產(chǎn)率,常常要對溫度、壓力進(jìn)行采集和分析。在很多環(huán)境比較惡劣的生產(chǎn)場合,不宜采用人工采集檢測。所以設(shè)計(jì)一種可以對溫度、壓力進(jìn)行自動采集的系統(tǒng)有著廣泛的應(yīng)用價(jià)值。而LabVIEW是目前應(yīng)用最廣、發(fā)展最快、功能最強(qiáng)大的圖形化軟件開發(fā)集成系統(tǒng)。它提供了豐富的圖形界面組件和庫函數(shù),有大量可見的儀器控制面板所需的控制對象,如按扭、圖表、示波器等,為用戶設(shè)計(jì)各種專業(yè)軟件提供方便,其在環(huán)境檢測等領(lǐng)域有著廣闊的應(yīng)用前景[1-2]。與此同時(shí),面對大量監(jiān)測采集到的數(shù)據(jù)信息,無論是手工數(shù)據(jù)管理還是文件系統(tǒng)管理,都不便于各類數(shù)據(jù)的查詢和管理。為了有效地管理和存儲數(shù)據(jù),基于數(shù)據(jù)庫的虛擬儀器系統(tǒng)成為現(xiàn)代檢測采集系統(tǒng)的發(fā)展趨勢。本文基于LabVIEW數(shù)據(jù)采集系統(tǒng)主要包括:數(shù)據(jù)信號的模擬、MySQL數(shù)據(jù)庫與LabVIEW的鏈接以及數(shù)據(jù)庫的設(shè)計(jì)3個(gè)部分的設(shè)計(jì)。
1 信號模擬的程序設(shè)計(jì)
1.1 時(shí)間的模擬
溫度、壓力值都是隨著時(shí)間的變化而實(shí)時(shí)的變化。整個(gè)系統(tǒng)都是依據(jù)時(shí)間為基準(zhǔn)在運(yùn)行,因此時(shí)間的模擬非常重要。圖1所示為分鐘模擬輸出的程序框圖。
上面程序總體上是一個(gè)FOR循環(huán)結(jié)構(gòu),程序每運(yùn)行一次,都要檢查定時(shí)器時(shí)間是否超時(shí),如果沒有就產(chǎn)生等待,直到超時(shí),然后再進(jìn)入下次循環(huán),如果已經(jīng)超時(shí)可直接進(jìn)入下次循環(huán)。上面的程序中還用到了一個(gè)通知操作,它的作用主要是使其他程序能與分鐘輸出保持同步。
圖2所示為小時(shí)模擬輸出的程序框圖。
此程序首先一直處于等待狀態(tài),直到分鐘通知器發(fā)送來的信號,小時(shí)等待通知器接收到信號以后就會使上面的FOR循環(huán)執(zhí)行一次。通過這種通知器的操作就可以使分鐘小時(shí)輸出值達(dá)到同步。程序中通知器的另一個(gè)作用就是傳遞程序停止的信號,使系統(tǒng)停止工作。
1.2 溫度、壓力信號的模擬
為了能反映出一天的溫度變化,則使溫度信號值在4~14點(diǎn)之間緩慢上升,在14~次日4點(diǎn)之間緩慢下降,且溫度范圍在10~40℃之間。程序中還引入了隨機(jī)數(shù),這樣會使每次模擬的溫度值不一樣,但溫度變化曲線保持一致。
壓力值是在一個(gè)基準(zhǔn)壓力值附近不斷隨機(jī)變化的值,其平均值基本穩(wěn)定在基準(zhǔn)壓力值。其基準(zhǔn)的壓力值是可控的。
圖3所示為溫度、壓力信號模擬輸出的程序框圖。
由于溫度、壓力信號變化是比較緩慢的一個(gè)過程,因此本系統(tǒng)設(shè)計(jì)的是每1小時(shí)輸出1次溫度、壓力信號值。程序中的等待通知器保證了整個(gè)程序與分鐘時(shí)間輸出變化保持同步,與小時(shí)輸出程序中的作用類似。
2 數(shù)據(jù)庫的鏈接
LabVIEW本身并不能直接訪問數(shù)據(jù)庫,但是由于LabVIEW提供了豐富的外部程序接口,例如ActiveX和.NET,因此在LabVIEW中可以通過ADO(ActiveX Data Object)、DAO(Data Access Object)或ADO.NET等方法與數(shù)據(jù)庫連接。其中ADO是使用最為廣泛的技術(shù),因?yàn)閃indows操作系統(tǒng)已經(jīng)包含了ADO組件,而且ADO通過與ODBC連接能訪問任何支持ODBC的數(shù)據(jù)庫[3]。因此本設(shè)計(jì)采用ADO技術(shù)通過ODBC與數(shù)據(jù)庫來連接。
ODBC是數(shù)據(jù)庫與應(yīng)用程序之間的一個(gè)公共接口,應(yīng)用程序通過訪問ODBC而不是直接訪問具體數(shù)據(jù)庫來與數(shù)據(jù)庫通信。一個(gè)基于ODBC的應(yīng)用程序?qū)?shù)據(jù)庫的操作不依賴任何DBMS,所有的數(shù)據(jù)庫操作由對應(yīng)的DBMS的ODBC驅(qū)動程序完成。ODBC的最大優(yōu)點(diǎn)是能以統(tǒng)一的方式處理所有的數(shù)據(jù)庫[4]。利用ADO與ODBC訪問數(shù)據(jù)庫的過程示意圖如圖4所示。
實(shí)際的鏈接方法是首先安裝MySQL數(shù)據(jù)庫的ODBC驅(qū)動程序MySQL Connector/ODBC,然后在控制面板中的ODBC數(shù)據(jù)源中創(chuàng)建一個(gè)DSN(數(shù)據(jù)源名)文件,以保證LabVIEW通過DSN來調(diào)用設(shè)計(jì)好的MySQL數(shù)據(jù)庫??梢酝ㄟ^以下方法來創(chuàng)建DSN:打開控制面板上的管理工具,選擇數(shù)據(jù)源(ODBC),點(diǎn)擊“文件DSN”選項(xiàng)卡,再點(diǎn)擊“添加”,選擇MySQL ODBC驅(qū)動,然后為DSN文件命名,這樣就建立了一個(gè)DSN文件[5-6]。建立好DSN文件后需要對其進(jìn)行配置才能使用,包括用戶名、密碼、設(shè)置本地服務(wù)器還是遠(yuǎn)程服務(wù)器以及選擇哪個(gè)數(shù)據(jù)庫,設(shè)置好之后點(diǎn)擊“Test”看是否能連接成功,顯示connection successful則表示鏈接成功。
3 數(shù)據(jù)庫的設(shè)計(jì)
3.1 數(shù)據(jù)庫中的建表
本設(shè)計(jì)中需要存儲的數(shù)據(jù)有溫度、壓力值、小時(shí)、分鐘和日期等。由于時(shí)間日期不是實(shí)際的時(shí)間日期值,實(shí)際模擬時(shí)有的時(shí)間可能會重復(fù),所以不宜用做主鍵,因此還需單獨(dú)增加一個(gè)num字段,設(shè)置為主鍵,并把其屬性設(shè)置成為auto-increment。
根據(jù)前面的分析,MySQL數(shù)據(jù)庫中需要建立一個(gè)表,其中表的關(guān)鍵字包括:date、hour、minute、temperature、pressure、num,分別對應(yīng)日期、小時(shí)、分鐘、溫度、壓力和序號值等。
3.2 數(shù)據(jù)庫的操作程序
數(shù)據(jù)庫鏈接成功以后就可以在LabVIEW里面通過LabSQL對數(shù)據(jù)庫直接進(jìn)行操作。LabSQL的基本操作是先創(chuàng)建一個(gè)連接、打開此連接、執(zhí)行SQL語句,最后關(guān)閉該連接。本設(shè)計(jì)中基本就是用這4步來實(shí)現(xiàn)對數(shù)據(jù)庫的各種操作。數(shù)據(jù)存儲的程序框圖如圖5所示。
程序的主體是上面所說的LabSQL執(zhí)行一次SQL語句的基本操作。其中執(zhí)行的SQL語句是一條數(shù)據(jù)插入語句,用到的數(shù)據(jù)是前面所闡述的信號模擬輸出的日期、時(shí)間、溫度和壓力值等。因此程序每執(zhí)行一次就相當(dāng)于在數(shù)據(jù)庫中存儲一個(gè)當(dāng)前信號模擬輸出的日期、時(shí)間、溫度和壓力值,達(dá)到數(shù)據(jù)采集以及存儲到數(shù)據(jù)庫中的目的。
數(shù)據(jù)存儲到數(shù)據(jù)庫中以后,用上面類似的方法執(zhí)行SQL語句,可以實(shí)現(xiàn)對數(shù)據(jù)庫的查詢和必要的管理操作[7]。圖6所示為程序?qū)崿F(xiàn)了按日期查詢一段時(shí)間內(nèi)所有存儲在數(shù)據(jù)庫中的溫度、壓力值。輸出的數(shù)據(jù)通過一張表,還有一個(gè)波形圖顯示出來,供用戶觀察。
本設(shè)計(jì)具體設(shè)計(jì)了按日期段查詢、按天查詢和按溫度、壓力值范圍的查詢,并且還有SQL語句直接執(zhí)行等。其他的查詢與上面的按日期查詢程序結(jié)構(gòu)類似。各個(gè)查詢用一個(gè)事件管理程序整合到一起,在操作界面上希望執(zhí)行什么樣的查詢,直接觸發(fā)相應(yīng)的按鈕即可。
4 系統(tǒng)面板的采集仿真和數(shù)據(jù)查詢
本設(shè)計(jì)的系統(tǒng)主要操做分兩步完成,一是溫度壓力模擬采集以及數(shù)據(jù)存儲,另外一個(gè)就是數(shù)據(jù)庫的查詢操作。如圖7所示為溫度壓力模擬采集以及數(shù)據(jù)存儲的操作界面。
通過溫度壓力數(shù)據(jù)采集的控制面板把采集到的數(shù)據(jù)存儲到數(shù)據(jù)庫里面以后,就可以通過該面板對數(shù)據(jù)庫里面的數(shù)據(jù)進(jìn)行操作。面板的左邊主要是一些查詢的動作,可以選擇不同的查詢對數(shù)據(jù)庫進(jìn)行操作,還有直接用SQL語句對數(shù)據(jù)庫的操作。中間是溫度和壓力數(shù)據(jù)輸出的波形顯示,右邊是輸出詳細(xì)數(shù)據(jù)的顯示。
本文在深入研究LabVIEW圖形化編程軟件和數(shù)據(jù)庫原理基礎(chǔ)上,把MySQL數(shù)據(jù)庫應(yīng)用到溫度、壓力采集系統(tǒng)中。通過ODBC驅(qū)動程序使LabVIEW應(yīng)用程序與MySQL數(shù)據(jù)庫進(jìn)行了通信,在LabVIEW環(huán)境下實(shí)現(xiàn)了數(shù)據(jù)的采集,同時(shí)還實(shí)現(xiàn)了對歷史數(shù)據(jù)的存儲、查詢等功能,使數(shù)據(jù)管理更加系統(tǒng)、科學(xué),大大提高了軟件系統(tǒng)的可維護(hù)性,實(shí)現(xiàn)了界面友好、操作方便、直觀、易于擴(kuò)展等功能。
參考文獻(xiàn)
[1] 雷振山.LabVIEW 7 Express實(shí)用技術(shù)教程[M].北京:電子工業(yè)出版社,2004.
[2] 楊樂平,李海濤.LabVIEW程序設(shè)計(jì)與應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2004.
[3] 唐波,潘紅兵,趙以順,等.在LabVIEW環(huán)境下基于ADO技術(shù)和SQL語言的數(shù)據(jù)庫系統(tǒng)實(shí)現(xiàn)[J].儀器儀表學(xué)報(bào),2007,28(4):227-229.
[4] 陳錫輝,張銀鴻.LabVIEW8.2程序設(shè)計(jì)從入門到精通[M].北京:清華大學(xué)出版社,2007.
[5] LOAN G. Designing and interrogation a database by using MySQL, PHP and LabVIEW programmes[J]. Metalurgia International, 2008,13(6):32-36.
[6] 朱后,彭宇寧.在LabVIEW中動態(tài)配置ODBC數(shù)據(jù)源的方法[J].工業(yè)控制計(jì)算機(jī),2006,19(7):45-46.
[7] 戴敬.LabVIEW基礎(chǔ)教程[M].北京:科學(xué)出版社,2004.