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