王樹東+魏孔貞+李曉培
摘 要: 為了提高數(shù)據(jù)采集系統(tǒng)精度,減少開發(fā)成本,提高開發(fā)效率,基于LabVIEW虛擬儀器開發(fā)工具研究并設(shè)計(jì)了一種數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)采用FPGA編程模式和網(wǎng)絡(luò)流技術(shù)實(shí)現(xiàn)大批量數(shù)據(jù)實(shí)時(shí)傳輸,并對(duì)數(shù)據(jù)進(jìn)行分析處理和存儲(chǔ)。系統(tǒng)硬件采用美國NI實(shí)時(shí)控制器CRIO?9025,實(shí)現(xiàn)16路數(shù)據(jù)可靠采集與存儲(chǔ)。實(shí)驗(yàn)仿真及實(shí)際運(yùn)行結(jié)果表明該數(shù)據(jù)采集系統(tǒng)能夠精確地對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)采集以及分析處理,達(dá)到了項(xiàng)目要求。
關(guān)鍵詞: FPGA; FIFO; 網(wǎng)絡(luò)流; 數(shù)據(jù)采集系統(tǒng); SQL數(shù)據(jù)庫
中圖分類號(hào): TN98?34 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): 1004?373X(2014)14?0142?04
Data acquisition and storage system based on LabVIEW 2012FPGA pattern
WANG Shu?dong1,2, WEI Kong?zhen1, LI Xiao?pei1
(1. College of Electrical and Information Engineering, Lanzhou University of Technology, Lanzhou 730050, China;
2. Gansu Key Laboratory for Advanced Industrial Process Control, Lanzhou 730050, China)
Abstract: In order to improve the accuracy of the data acquisition system, reduce development costs and improve development efficiency, a data acquisition system was designed on the basis of the development tool research for LabVIEW virtual instruments. The FPGA programming mode and network flow technology are adopted in the system to execute real?time transmission of the mass data, which is analyzed, processed and stored. The real?time controller cRIO?9025 made by National Instruments (NI) is used in the system hardwares to achieve 16?channel data acquisition and storage. Simulation and experimental results show that the data acquisition system can realize the accurate real?time data acquisition and analysis, and meet the project requirements.
Keywords: FPGA; FIFO; network stream; data acquisition system; SQL database
0 引 言
隨著計(jì)算機(jī)技術(shù)和智能儀器儀表的深入發(fā)展,以計(jì)算機(jī)為核心的網(wǎng)絡(luò)化測(cè)控系統(tǒng)得到越來越多的應(yīng)用,尤其是在航空航天等國防領(lǐng)域。LabVIEW是虛擬儀器領(lǐng)域中最具有代表性的圖形化編程開發(fā)平臺(tái),是目前國際上首推并應(yīng)用最廣的數(shù)據(jù)采集和控制開發(fā)環(huán)境之一,主要應(yīng)用于儀器控制、數(shù)據(jù)采集、數(shù)據(jù)分析等領(lǐng)域,并適用于多種不同的操作系統(tǒng)平臺(tái)[1]。
LabVIEW采用強(qiáng)大的圖形化語言(G語言)編程,面向測(cè)試工程師而非專業(yè)程序員,編程非常方便,人機(jī)交互界面直觀友好,具有強(qiáng)大的數(shù)據(jù)可視化分析和儀器控制能力等特點(diǎn)[2]?;贚abVIEW開發(fā)工具研究設(shè)計(jì)一套數(shù)據(jù)采集系統(tǒng),實(shí)現(xiàn)了包括數(shù)據(jù)采集、數(shù)據(jù)分析與數(shù)據(jù)處理,并通過實(shí)驗(yàn)和實(shí)際調(diào)試驗(yàn)證了系統(tǒng)的功能。
1 基于LabVIEW數(shù)據(jù)采集系統(tǒng)整體架構(gòu)
本系統(tǒng)主要是以電測(cè)型傳感器、高精度數(shù)據(jù)采集卡、實(shí)時(shí)控制器、觸摸屏和工控機(jī)進(jìn)行數(shù)據(jù)的自動(dòng)采集、處理、記錄、顯示、存儲(chǔ)和分析的系統(tǒng)。
其工作過程為:傳感器將相應(yīng)被測(cè)對(duì)象的量值轉(zhuǎn)換成電信號(hào),數(shù)據(jù)經(jīng)過采集卡A/D轉(zhuǎn)換處理之后上傳到實(shí)時(shí)控制器,同時(shí)將數(shù)據(jù)送入到觸摸屏進(jìn)行顯示和操作,數(shù)據(jù)經(jīng)過網(wǎng)線送入工業(yè)PC機(jī),由上位機(jī)進(jìn)行數(shù)據(jù)處理,包括數(shù)據(jù)的低通濾波,采樣波形的實(shí)時(shí)顯示,參數(shù)修正,歷史數(shù)據(jù),產(chǎn)生報(bào)表等。為了防止數(shù)據(jù)丟失,采用外掛硬盤對(duì)數(shù)據(jù)以采樣速率對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ),同時(shí)以一定的時(shí)間間隔插入數(shù)據(jù)庫保存,并通過數(shù)據(jù)庫技術(shù)實(shí)現(xiàn)了歷史數(shù)據(jù)的檢索。
本系統(tǒng)的總體結(jié)構(gòu)如圖1所示。
圖1 數(shù)據(jù)采集系統(tǒng)總體結(jié)構(gòu)圖
2 硬件設(shè)計(jì)
基于LabVIEW軟件的16路數(shù)據(jù)采集系統(tǒng)由硬件部分和軟件部分組成。本系統(tǒng)硬件主要包括:工控機(jī)和數(shù)據(jù)采集卡(NI?9222和NI?9229),控制器(NI CompactRIO?9025),觸摸屏(NI?2212),500 GB存儲(chǔ)硬盤,傳感器等。
數(shù)據(jù)采集卡NI?9222和NI?9229作為高速、同步C系列模塊,適用于各類NI CompactDAQ或CompactRIO機(jī)箱。可工作于掃描模式和FPGA模式,能夠方便插入控制器的FPGA背板上,支持熱插拔。NI USB?9229,4通道24位同步模擬數(shù)據(jù)采集卡,采樣頻率為(1.613~50 KS/s),額定采樣范圍±60 V。NI USB?9222,4通道16位逐次逼近型模數(shù)轉(zhuǎn)換器采集卡,測(cè)量范圍±10 V。
觸摸屏TPC?2212采用交換機(jī)直接連接上位機(jī),在上位機(jī)LabVIEW中創(chuàng)建項(xiàng)目,在程序生成規(guī)范模式下就可以把主控界面生成EXE運(yùn)行文件直接裝入TPC?2212,簡單方便,實(shí)用性強(qiáng)。
NI CompactRIO系統(tǒng)構(gòu)架主要包括實(shí)時(shí)控制器(內(nèi)置嵌入式處理器)、可重配置FPGA、及模塊化I/O、CompactRIO的RIO(FPGA)核心內(nèi)置數(shù)據(jù)傳輸機(jī)制,負(fù)責(zé)把數(shù)據(jù)傳到嵌入式處理器以進(jìn)行實(shí)時(shí)分析,數(shù)據(jù)處理,數(shù)據(jù)記錄或與聯(lián)網(wǎng)主機(jī)通信。利用LabVIEW FPGA基本的I/O功能,用戶可以直接訪問每個(gè)I/O模塊的輸入/輸出電路,系統(tǒng)硬件結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)硬件結(jié)構(gòu)圖
NI為硬件提供驅(qū)動(dòng)程序,用戶可以通過驅(qū)動(dòng)程序接口Measurement&Automntion Explorer(NI MAX)對(duì)硬件進(jìn)行各種必要的設(shè)置與測(cè)試。本設(shè)計(jì)中需要在NI MAX進(jìn)行實(shí)時(shí)控制器參數(shù)配置,如語言環(huán)境、IP地址、時(shí)間,以及在控制器需要的各種軟件驅(qū)動(dòng)。
3 系統(tǒng)軟件設(shè)計(jì)的相關(guān)技術(shù)
上位機(jī)數(shù)據(jù)采集系統(tǒng)采用LabVIEW軟件進(jìn)行編程,其獨(dú)特的G語言和豐富的軟件開發(fā)工具包給系統(tǒng)編程帶來了很大的便利,它為用戶提供簡單、直觀的圖形編程法,在開發(fā)虛擬儀器方面有著較強(qiáng)的優(yōu)勢(shì)[3]。
3.1 軟件總體結(jié)構(gòu)
本設(shè)計(jì)主要包括數(shù)據(jù)采集和數(shù)據(jù)存儲(chǔ)兩部分,數(shù)據(jù)采集主要由下位機(jī)嵌入式NI CompactRIO平臺(tái)實(shí)現(xiàn),將寫好的LabView代碼編譯下載到可重復(fù)配置FPGA中,利用采集卡I/O模塊實(shí)現(xiàn)數(shù)據(jù)的采集。為了采集數(shù)據(jù)的可靠存儲(chǔ),存儲(chǔ)系統(tǒng)分為兩部分:一部分經(jīng)過RT?host.VI以同步采樣速率將原始數(shù)據(jù)采用TDMS文件格式存儲(chǔ)到500G硬盤;另外一部分以一定的時(shí)間間隔將數(shù)據(jù)送入的PC機(jī)中的SQL Server數(shù)據(jù)庫,可以方便的對(duì)數(shù)據(jù)庫進(jìn)行操作,包括查詢、刪除、插入、導(dǎo)入導(dǎo)出等。將RT導(dǎo)出的數(shù)據(jù)經(jīng)過觸摸屏TPC?2212上進(jìn)行實(shí)時(shí)顯示,并且可以進(jìn)行相應(yīng)的操作。整個(gè)系統(tǒng)實(shí)現(xiàn)主要功能有:數(shù)據(jù)采集、數(shù)據(jù)處理、參數(shù)修正、數(shù)據(jù)存儲(chǔ)、生成報(bào)表,報(bào)警記錄等。數(shù)據(jù)采集系統(tǒng)軟件主要架構(gòu)如圖3所示。
圖3 數(shù)據(jù)采集系統(tǒng)軟件構(gòu)架圖
3.2 軟件實(shí)現(xiàn)關(guān)鍵技術(shù)
本設(shè)計(jì)采用的主要技術(shù)有:采用FPGA實(shí)現(xiàn)軟件定義硬件,利用FIFO實(shí)現(xiàn)下位機(jī)FPGA和RT之間的數(shù)據(jù)轉(zhuǎn)換。采用網(wǎng)絡(luò)流技術(shù),實(shí)現(xiàn)RT和上位機(jī)之間的數(shù)據(jù)傳輸。利用數(shù)據(jù)庫labsql工具包,實(shí)現(xiàn)數(shù)據(jù)庫的操作。
3.2.1 下位機(jī)FPGA與實(shí)時(shí)控制器RT之間的數(shù)據(jù)傳輸
常規(guī)的數(shù)據(jù)采集卡所能實(shí)現(xiàn)的功能是由采集卡上特定的芯片實(shí)現(xiàn)的,由于實(shí)際應(yīng)用中的需求不同,所以需要一種可以根據(jù)實(shí)際需求隨時(shí)改變功能的板卡,那么FPGA(Field?Programmable Gate Array)現(xiàn)場(chǎng)可編程門陣列,就可以通過軟件改變它的硬件功能。
LabView的FPGA工具包有兩種工作模式:即掃描模式和FPGA模式。在掃描模式下不需要對(duì)FPGA進(jìn)行任何編程,RT會(huì)直接用I/O變量映射C模塊的I/O。雖然使用掃描模式極大的降低了FPGA的編程的復(fù)雜性,但是掃描模式支持的最高掃描頻率為100 Hz,不適合高速數(shù)據(jù)采集,而且FPGA模式可以實(shí)現(xiàn)多速率控制,且性能不因應(yīng)用的增加而降低,能夠在專用的硬件上實(shí)現(xiàn)控制邏輯。因此采用FPGA編程模式進(jìn)行數(shù)據(jù)采集。
實(shí)時(shí)系統(tǒng)和FPGA之間的數(shù)據(jù)交換是采集系統(tǒng)的關(guān)鍵問題,一般采用三種方式,即輪詢、中斷、FIFO。其中輪詢和中斷方式適用于采樣速度較慢的場(chǎng)合,在高速采集情況下,輪詢方式會(huì)造成數(shù)據(jù)的丟失;而中斷方式則會(huì)因響應(yīng)中斷造成延遲,導(dǎo)致速度不可能太高,因此本系統(tǒng)中采用FIFO方式。
FIFO(First In First Out)先入先出緩沖區(qū),可以用于多線程中的數(shù)據(jù)交換,最重要的用途就是在RT和FPGA直接進(jìn)行數(shù)據(jù)交換,在緩沖區(qū)滿后會(huì)處于等待狀態(tài),直至超時(shí)或者緩沖有新的的空閑位置。FPGA根據(jù)FIFO作用域不同,將其分為三類:Target?Scoped FIFO,用于在FPGA終端一個(gè)或者多個(gè)VI的不同線程間傳遞數(shù)據(jù);VI?Scoped FIFO,用于在同一VI的不同線程間傳遞數(shù)據(jù)。DMA FIFO,用于RT和FPGA之間傳遞數(shù)據(jù)。由于FPGA運(yùn)行的精確性,在高速采集過程中它的運(yùn)行速度都在μs甚至ns的級(jí)別,而RT系統(tǒng)一般都在ms級(jí)別。因此,F(xiàn)PGA采集的速率遠(yuǎn)遠(yuǎn)快于RT循環(huán)的運(yùn)行速度。RT如果需要讀取全部數(shù)據(jù),又不能出現(xiàn)數(shù)據(jù)丟失的情況,就必須采用DMA FIFO方式傳遞數(shù)據(jù)。
DMA直接內(nèi)存訪問在數(shù)據(jù)采集中的使用非常普遍,本系統(tǒng)中傳輸方向?yàn)門arget→Host FIFO,因?yàn)闆]有CPU的參與,因此傳輸速度非???,在傳輸過程中,配置DMA FIFO的大小是非常關(guān)鍵的,在LabVIEW中稱DMA FIFO的大小為深度,深度的大小直接影響到了數(shù)據(jù)傳輸?shù)乃俣龋绻疃忍?,傳輸速率?huì)降低;設(shè)定的太小,會(huì)丟失數(shù)據(jù)甚至?xí)钩绦蛑械淖x取的等待時(shí)間加長而影響程序的執(zhí)行[4],本系統(tǒng)中共根據(jù)調(diào)試最后將其大小設(shè)定為4 095,但是必須保證RT方面的FIFO足夠大,這樣FPGA在插入數(shù)據(jù)是就不需要等待了。
3.2.2 實(shí)時(shí)控制器與PC機(jī)之間的數(shù)據(jù)通信
實(shí)時(shí)控制系統(tǒng)與上位PC機(jī)之間可以通過不同的方式進(jìn)行通信,不同的通信方式具有各自的優(yōu)缺點(diǎn)。常見的通信方式有:網(wǎng)絡(luò)共享變量(Network?Published Shared Variables);TCP/IP;網(wǎng)絡(luò)流/隊(duì)列等。
TCP(傳輸控制協(xié)議)是一個(gè)端對(duì)端、面向連接的協(xié)議,具有快速和面向連接(不丟失數(shù)據(jù))的特性,可以進(jìn)行大數(shù)據(jù)的通信[5],但是在通信是必須把其他數(shù)據(jù)類型轉(zhuǎn)換為字符數(shù)據(jù)串的格式,為編程帶來一定的麻煩。
網(wǎng)絡(luò)流可實(shí)現(xiàn)兩個(gè)LabVIEW應(yīng)用之間發(fā)送數(shù)據(jù)的兩種通信方式。網(wǎng)絡(luò)數(shù)據(jù)流不損耗數(shù)據(jù),是單向的一對(duì)一通信通道,由寫入和讀取端點(diǎn)構(gòu)成。每個(gè)網(wǎng)絡(luò)流端點(diǎn)均使用FIFO緩存?zhèn)鬏敂?shù)據(jù)。網(wǎng)絡(luò)流引擎(NSE)使用LogosXT將數(shù)據(jù)從寫入端點(diǎn)的FIFO緩存?zhèn)鬏斨磷x取端點(diǎn)的FIFO緩存[1]。通過網(wǎng)絡(luò)流可以快速準(zhǔn)確實(shí)現(xiàn)RT與上位機(jī)之間的數(shù)據(jù)通信,圖4顯示了網(wǎng)絡(luò)流中的數(shù)據(jù)流。
圖4 網(wǎng)絡(luò)流數(shù)據(jù)流向示意圖
要實(shí)現(xiàn)RT與上位機(jī)的數(shù)據(jù)通信,需要以下幾個(gè)函數(shù):
(1) 創(chuàng)建網(wǎng)絡(luò)流寫入/讀取方端點(diǎn)。通過創(chuàng)建網(wǎng)絡(luò)流寫入/讀取方端點(diǎn)函數(shù)找到讀取方統(tǒng)一資源定位(Uniform Resource Locator,URL)或該函數(shù)的寫入方URL。在創(chuàng)建時(shí)需要知道URL使用的協(xié)議,端點(diǎn)所在計(jì)算機(jī)的項(xiàng)目別名、DNS名或IP地址,該部分的默認(rèn)值為localhost,即連接至端點(diǎn)所在的計(jì)算機(jī)的網(wǎng)絡(luò)位置,本設(shè)計(jì)系統(tǒng)中為所用RT的IP地址192.254.4.42。
(2) 向流中寫入/讀取單個(gè)或者多個(gè)數(shù)據(jù)。
(3) 刷新流。保證流中的數(shù)據(jù)實(shí)時(shí)刷新。銷毀流。
(4) 銷毀讀取方和寫入方端點(diǎn)后,可完全銷毀流,釋放流占用的內(nèi)存。
上位機(jī)網(wǎng)絡(luò)流和下位機(jī)類似,不同的是從下位機(jī)讀取流中的數(shù)據(jù),實(shí)時(shí)控制器RT端網(wǎng)絡(luò)流示意圖如圖5所示。
圖5 控制器端網(wǎng)絡(luò)流結(jié)構(gòu)圖
3.2.3 數(shù)據(jù)庫存儲(chǔ)
LabVIEW本身并不具有數(shù)據(jù)庫訪問的功能,利用LabVIEW免費(fèi)提供的LabSQL工具包。將ADO和SQL的操作封裝在各個(gè)VI當(dāng)中,無需了解內(nèi)部結(jié)構(gòu),易于調(diào)用。
數(shù)據(jù)庫采用SQL Server 2005作為存儲(chǔ)軟件,數(shù)據(jù)存儲(chǔ)工具包主要使用ADOCreate Conn.vi,ADO Open Conn.vi建立數(shù)據(jù)庫的連接,ADO SQL Execute.vi中使用Insert語句來實(shí)現(xiàn)將數(shù)據(jù)插入到數(shù)據(jù)庫中,應(yīng)該注意將數(shù)據(jù)庫的打開和關(guān)閉放在While循環(huán)之外,避免每次循環(huán)都要對(duì)數(shù)據(jù)庫進(jìn)行不必要的操作而影響速度[6]。通過操作數(shù)據(jù)庫可以方便的對(duì)數(shù)據(jù)進(jìn)行讀取,分析,插入等操作。數(shù)據(jù)庫存儲(chǔ)和上位機(jī)網(wǎng)絡(luò)流采集程序框圖如圖6所示。
圖6 上位PC機(jī)存儲(chǔ)和網(wǎng)絡(luò)流讀取程序圖
4 實(shí)驗(yàn)驗(yàn)證
在實(shí)驗(yàn)室對(duì)數(shù)據(jù)采集卡進(jìn)行直流電壓輸入,通過采集卡采集數(shù)據(jù),將寫好的下位機(jī)VI通過FPGA編譯工具包下載到FPGA背板中,通過緩沖區(qū)FIFO上傳到實(shí)時(shí)控制器RT中,將RT中的采集數(shù)據(jù)以同步采樣速率存儲(chǔ)到外掛硬盤中,RT與PC機(jī)通過網(wǎng)絡(luò)流進(jìn)行數(shù)據(jù)交互,在PC機(jī)VI中對(duì)數(shù)據(jù)進(jìn)行參數(shù)修正和處理,在實(shí)時(shí)顯示界面有修正前和修正后的數(shù)據(jù)對(duì)比以及實(shí)時(shí)曲線,經(jīng)過實(shí)際對(duì)比,數(shù)據(jù)精確可靠,系統(tǒng)主界面如圖7所示。
圖7 數(shù)據(jù)采集系統(tǒng)主界面示意圖
利用數(shù)據(jù)庫技術(shù),根據(jù)起始時(shí)間和終止時(shí)間查詢想要的數(shù)據(jù),歷史曲線如圖8所示。
由運(yùn)行的前面板和歷史曲線顯示可以看出,原始數(shù)據(jù)輸入為直流5 V,顯示采集結(jié)果為4.997 72 V,對(duì)數(shù)值進(jìn)行修正乘以系數(shù)0.499 5之后得到處理數(shù)據(jù)為2.498 86 V,將采集的數(shù)據(jù)存入到數(shù)據(jù)庫中,通過歷史曲線面板調(diào)用某一時(shí)間段的數(shù)據(jù),圖中顯示為2.490 52~2.502 1之間,滿足精度和準(zhǔn)度要求。
5 結(jié) 論
本數(shù)據(jù)采集系統(tǒng)采用先進(jìn)的實(shí)時(shí)控制器RT和4通道高速數(shù)據(jù)采集卡,采用靈活的FPGA編程模式,實(shí)現(xiàn)了芯片的虛擬化,程序的可重復(fù)配置,通過FIFO實(shí)現(xiàn)了FPGA與實(shí)時(shí)控制器RT的數(shù)據(jù)高速傳輸,通過網(wǎng)絡(luò)流實(shí)現(xiàn)了RT與工控機(jī)之間的數(shù)據(jù)傳輸,解決了它們之間由于工作頻率不同而造成的數(shù)據(jù)交換不同步和數(shù)據(jù)丟失的問題,實(shí)現(xiàn)了數(shù)據(jù)實(shí)時(shí)顯示,數(shù)據(jù)存儲(chǔ),歷史報(bào)表等。
圖8 數(shù)據(jù)庫歷史曲線顯示示意圖
參考文獻(xiàn)
[1] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[2] 王利強(qiáng).計(jì)算機(jī)測(cè)控系統(tǒng)與數(shù)據(jù)采集卡應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007.
[3] 連海洲,趙英俊.基于 LabVIEW 技術(shù)的虛擬儀器系統(tǒng)[J].儀器與測(cè)控,2001(8):21?23.
[4] 劉君華.基于 LabVIEW的虛擬儀器設(shè)計(jì)[M].北京:電子工業(yè)出版社,2003.
[5] 楊樂平,李海濤.Lab VIEW 程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[6] 吳偉.雙通道3GSPS數(shù)據(jù)采集模塊硬件設(shè)計(jì)[D].成都:電子科技大學(xué),2011.
網(wǎng)絡(luò)流可實(shí)現(xiàn)兩個(gè)LabVIEW應(yīng)用之間發(fā)送數(shù)據(jù)的兩種通信方式。網(wǎng)絡(luò)數(shù)據(jù)流不損耗數(shù)據(jù),是單向的一對(duì)一通信通道,由寫入和讀取端點(diǎn)構(gòu)成。每個(gè)網(wǎng)絡(luò)流端點(diǎn)均使用FIFO緩存?zhèn)鬏敂?shù)據(jù)。網(wǎng)絡(luò)流引擎(NSE)使用LogosXT將數(shù)據(jù)從寫入端點(diǎn)的FIFO緩存?zhèn)鬏斨磷x取端點(diǎn)的FIFO緩存[1]。通過網(wǎng)絡(luò)流可以快速準(zhǔn)確實(shí)現(xiàn)RT與上位機(jī)之間的數(shù)據(jù)通信,圖4顯示了網(wǎng)絡(luò)流中的數(shù)據(jù)流。
圖4 網(wǎng)絡(luò)流數(shù)據(jù)流向示意圖
要實(shí)現(xiàn)RT與上位機(jī)的數(shù)據(jù)通信,需要以下幾個(gè)函數(shù):
(1) 創(chuàng)建網(wǎng)絡(luò)流寫入/讀取方端點(diǎn)。通過創(chuàng)建網(wǎng)絡(luò)流寫入/讀取方端點(diǎn)函數(shù)找到讀取方統(tǒng)一資源定位(Uniform Resource Locator,URL)或該函數(shù)的寫入方URL。在創(chuàng)建時(shí)需要知道URL使用的協(xié)議,端點(diǎn)所在計(jì)算機(jī)的項(xiàng)目別名、DNS名或IP地址,該部分的默認(rèn)值為localhost,即連接至端點(diǎn)所在的計(jì)算機(jī)的網(wǎng)絡(luò)位置,本設(shè)計(jì)系統(tǒng)中為所用RT的IP地址192.254.4.42。
(2) 向流中寫入/讀取單個(gè)或者多個(gè)數(shù)據(jù)。
(3) 刷新流。保證流中的數(shù)據(jù)實(shí)時(shí)刷新。銷毀流。
(4) 銷毀讀取方和寫入方端點(diǎn)后,可完全銷毀流,釋放流占用的內(nèi)存。
上位機(jī)網(wǎng)絡(luò)流和下位機(jī)類似,不同的是從下位機(jī)讀取流中的數(shù)據(jù),實(shí)時(shí)控制器RT端網(wǎng)絡(luò)流示意圖如圖5所示。
圖5 控制器端網(wǎng)絡(luò)流結(jié)構(gòu)圖
3.2.3 數(shù)據(jù)庫存儲(chǔ)
LabVIEW本身并不具有數(shù)據(jù)庫訪問的功能,利用LabVIEW免費(fèi)提供的LabSQL工具包。將ADO和SQL的操作封裝在各個(gè)VI當(dāng)中,無需了解內(nèi)部結(jié)構(gòu),易于調(diào)用。
數(shù)據(jù)庫采用SQL Server 2005作為存儲(chǔ)軟件,數(shù)據(jù)存儲(chǔ)工具包主要使用ADOCreate Conn.vi,ADO Open Conn.vi建立數(shù)據(jù)庫的連接,ADO SQL Execute.vi中使用Insert語句來實(shí)現(xiàn)將數(shù)據(jù)插入到數(shù)據(jù)庫中,應(yīng)該注意將數(shù)據(jù)庫的打開和關(guān)閉放在While循環(huán)之外,避免每次循環(huán)都要對(duì)數(shù)據(jù)庫進(jìn)行不必要的操作而影響速度[6]。通過操作數(shù)據(jù)庫可以方便的對(duì)數(shù)據(jù)進(jìn)行讀取,分析,插入等操作。數(shù)據(jù)庫存儲(chǔ)和上位機(jī)網(wǎng)絡(luò)流采集程序框圖如圖6所示。
圖6 上位PC機(jī)存儲(chǔ)和網(wǎng)絡(luò)流讀取程序圖
4 實(shí)驗(yàn)驗(yàn)證
在實(shí)驗(yàn)室對(duì)數(shù)據(jù)采集卡進(jìn)行直流電壓輸入,通過采集卡采集數(shù)據(jù),將寫好的下位機(jī)VI通過FPGA編譯工具包下載到FPGA背板中,通過緩沖區(qū)FIFO上傳到實(shí)時(shí)控制器RT中,將RT中的采集數(shù)據(jù)以同步采樣速率存儲(chǔ)到外掛硬盤中,RT與PC機(jī)通過網(wǎng)絡(luò)流進(jìn)行數(shù)據(jù)交互,在PC機(jī)VI中對(duì)數(shù)據(jù)進(jìn)行參數(shù)修正和處理,在實(shí)時(shí)顯示界面有修正前和修正后的數(shù)據(jù)對(duì)比以及實(shí)時(shí)曲線,經(jīng)過實(shí)際對(duì)比,數(shù)據(jù)精確可靠,系統(tǒng)主界面如圖7所示。
圖7 數(shù)據(jù)采集系統(tǒng)主界面示意圖
利用數(shù)據(jù)庫技術(shù),根據(jù)起始時(shí)間和終止時(shí)間查詢想要的數(shù)據(jù),歷史曲線如圖8所示。
由運(yùn)行的前面板和歷史曲線顯示可以看出,原始數(shù)據(jù)輸入為直流5 V,顯示采集結(jié)果為4.997 72 V,對(duì)數(shù)值進(jìn)行修正乘以系數(shù)0.499 5之后得到處理數(shù)據(jù)為2.498 86 V,將采集的數(shù)據(jù)存入到數(shù)據(jù)庫中,通過歷史曲線面板調(diào)用某一時(shí)間段的數(shù)據(jù),圖中顯示為2.490 52~2.502 1之間,滿足精度和準(zhǔn)度要求。
5 結(jié) 論
本數(shù)據(jù)采集系統(tǒng)采用先進(jìn)的實(shí)時(shí)控制器RT和4通道高速數(shù)據(jù)采集卡,采用靈活的FPGA編程模式,實(shí)現(xiàn)了芯片的虛擬化,程序的可重復(fù)配置,通過FIFO實(shí)現(xiàn)了FPGA與實(shí)時(shí)控制器RT的數(shù)據(jù)高速傳輸,通過網(wǎng)絡(luò)流實(shí)現(xiàn)了RT與工控機(jī)之間的數(shù)據(jù)傳輸,解決了它們之間由于工作頻率不同而造成的數(shù)據(jù)交換不同步和數(shù)據(jù)丟失的問題,實(shí)現(xiàn)了數(shù)據(jù)實(shí)時(shí)顯示,數(shù)據(jù)存儲(chǔ),歷史報(bào)表等。
圖8 數(shù)據(jù)庫歷史曲線顯示示意圖
參考文獻(xiàn)
[1] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[2] 王利強(qiáng).計(jì)算機(jī)測(cè)控系統(tǒng)與數(shù)據(jù)采集卡應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007.
[3] 連海洲,趙英俊.基于 LabVIEW 技術(shù)的虛擬儀器系統(tǒng)[J].儀器與測(cè)控,2001(8):21?23.
[4] 劉君華.基于 LabVIEW的虛擬儀器設(shè)計(jì)[M].北京:電子工業(yè)出版社,2003.
[5] 楊樂平,李海濤.Lab VIEW 程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[6] 吳偉.雙通道3GSPS數(shù)據(jù)采集模塊硬件設(shè)計(jì)[D].成都:電子科技大學(xué),2011.
網(wǎng)絡(luò)流可實(shí)現(xiàn)兩個(gè)LabVIEW應(yīng)用之間發(fā)送數(shù)據(jù)的兩種通信方式。網(wǎng)絡(luò)數(shù)據(jù)流不損耗數(shù)據(jù),是單向的一對(duì)一通信通道,由寫入和讀取端點(diǎn)構(gòu)成。每個(gè)網(wǎng)絡(luò)流端點(diǎn)均使用FIFO緩存?zhèn)鬏敂?shù)據(jù)。網(wǎng)絡(luò)流引擎(NSE)使用LogosXT將數(shù)據(jù)從寫入端點(diǎn)的FIFO緩存?zhèn)鬏斨磷x取端點(diǎn)的FIFO緩存[1]。通過網(wǎng)絡(luò)流可以快速準(zhǔn)確實(shí)現(xiàn)RT與上位機(jī)之間的數(shù)據(jù)通信,圖4顯示了網(wǎng)絡(luò)流中的數(shù)據(jù)流。
圖4 網(wǎng)絡(luò)流數(shù)據(jù)流向示意圖
要實(shí)現(xiàn)RT與上位機(jī)的數(shù)據(jù)通信,需要以下幾個(gè)函數(shù):
(1) 創(chuàng)建網(wǎng)絡(luò)流寫入/讀取方端點(diǎn)。通過創(chuàng)建網(wǎng)絡(luò)流寫入/讀取方端點(diǎn)函數(shù)找到讀取方統(tǒng)一資源定位(Uniform Resource Locator,URL)或該函數(shù)的寫入方URL。在創(chuàng)建時(shí)需要知道URL使用的協(xié)議,端點(diǎn)所在計(jì)算機(jī)的項(xiàng)目別名、DNS名或IP地址,該部分的默認(rèn)值為localhost,即連接至端點(diǎn)所在的計(jì)算機(jī)的網(wǎng)絡(luò)位置,本設(shè)計(jì)系統(tǒng)中為所用RT的IP地址192.254.4.42。
(2) 向流中寫入/讀取單個(gè)或者多個(gè)數(shù)據(jù)。
(3) 刷新流。保證流中的數(shù)據(jù)實(shí)時(shí)刷新。銷毀流。
(4) 銷毀讀取方和寫入方端點(diǎn)后,可完全銷毀流,釋放流占用的內(nèi)存。
上位機(jī)網(wǎng)絡(luò)流和下位機(jī)類似,不同的是從下位機(jī)讀取流中的數(shù)據(jù),實(shí)時(shí)控制器RT端網(wǎng)絡(luò)流示意圖如圖5所示。
圖5 控制器端網(wǎng)絡(luò)流結(jié)構(gòu)圖
3.2.3 數(shù)據(jù)庫存儲(chǔ)
LabVIEW本身并不具有數(shù)據(jù)庫訪問的功能,利用LabVIEW免費(fèi)提供的LabSQL工具包。將ADO和SQL的操作封裝在各個(gè)VI當(dāng)中,無需了解內(nèi)部結(jié)構(gòu),易于調(diào)用。
數(shù)據(jù)庫采用SQL Server 2005作為存儲(chǔ)軟件,數(shù)據(jù)存儲(chǔ)工具包主要使用ADOCreate Conn.vi,ADO Open Conn.vi建立數(shù)據(jù)庫的連接,ADO SQL Execute.vi中使用Insert語句來實(shí)現(xiàn)將數(shù)據(jù)插入到數(shù)據(jù)庫中,應(yīng)該注意將數(shù)據(jù)庫的打開和關(guān)閉放在While循環(huán)之外,避免每次循環(huán)都要對(duì)數(shù)據(jù)庫進(jìn)行不必要的操作而影響速度[6]。通過操作數(shù)據(jù)庫可以方便的對(duì)數(shù)據(jù)進(jìn)行讀取,分析,插入等操作。數(shù)據(jù)庫存儲(chǔ)和上位機(jī)網(wǎng)絡(luò)流采集程序框圖如圖6所示。
圖6 上位PC機(jī)存儲(chǔ)和網(wǎng)絡(luò)流讀取程序圖
4 實(shí)驗(yàn)驗(yàn)證
在實(shí)驗(yàn)室對(duì)數(shù)據(jù)采集卡進(jìn)行直流電壓輸入,通過采集卡采集數(shù)據(jù),將寫好的下位機(jī)VI通過FPGA編譯工具包下載到FPGA背板中,通過緩沖區(qū)FIFO上傳到實(shí)時(shí)控制器RT中,將RT中的采集數(shù)據(jù)以同步采樣速率存儲(chǔ)到外掛硬盤中,RT與PC機(jī)通過網(wǎng)絡(luò)流進(jìn)行數(shù)據(jù)交互,在PC機(jī)VI中對(duì)數(shù)據(jù)進(jìn)行參數(shù)修正和處理,在實(shí)時(shí)顯示界面有修正前和修正后的數(shù)據(jù)對(duì)比以及實(shí)時(shí)曲線,經(jīng)過實(shí)際對(duì)比,數(shù)據(jù)精確可靠,系統(tǒng)主界面如圖7所示。
圖7 數(shù)據(jù)采集系統(tǒng)主界面示意圖
利用數(shù)據(jù)庫技術(shù),根據(jù)起始時(shí)間和終止時(shí)間查詢想要的數(shù)據(jù),歷史曲線如圖8所示。
由運(yùn)行的前面板和歷史曲線顯示可以看出,原始數(shù)據(jù)輸入為直流5 V,顯示采集結(jié)果為4.997 72 V,對(duì)數(shù)值進(jìn)行修正乘以系數(shù)0.499 5之后得到處理數(shù)據(jù)為2.498 86 V,將采集的數(shù)據(jù)存入到數(shù)據(jù)庫中,通過歷史曲線面板調(diào)用某一時(shí)間段的數(shù)據(jù),圖中顯示為2.490 52~2.502 1之間,滿足精度和準(zhǔn)度要求。
5 結(jié) 論
本數(shù)據(jù)采集系統(tǒng)采用先進(jìn)的實(shí)時(shí)控制器RT和4通道高速數(shù)據(jù)采集卡,采用靈活的FPGA編程模式,實(shí)現(xiàn)了芯片的虛擬化,程序的可重復(fù)配置,通過FIFO實(shí)現(xiàn)了FPGA與實(shí)時(shí)控制器RT的數(shù)據(jù)高速傳輸,通過網(wǎng)絡(luò)流實(shí)現(xiàn)了RT與工控機(jī)之間的數(shù)據(jù)傳輸,解決了它們之間由于工作頻率不同而造成的數(shù)據(jù)交換不同步和數(shù)據(jù)丟失的問題,實(shí)現(xiàn)了數(shù)據(jù)實(shí)時(shí)顯示,數(shù)據(jù)存儲(chǔ),歷史報(bào)表等。
圖8 數(shù)據(jù)庫歷史曲線顯示示意圖
參考文獻(xiàn)
[1] 陳樹學(xué),劉萱.LabVIEW寶典[M].北京:電子工業(yè)出版社,2011.
[2] 王利強(qiáng).計(jì)算機(jī)測(cè)控系統(tǒng)與數(shù)據(jù)采集卡應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2007.
[3] 連海洲,趙英俊.基于 LabVIEW 技術(shù)的虛擬儀器系統(tǒng)[J].儀器與測(cè)控,2001(8):21?23.
[4] 劉君華.基于 LabVIEW的虛擬儀器設(shè)計(jì)[M].北京:電子工業(yè)出版社,2003.
[5] 楊樂平,李海濤.Lab VIEW 程序設(shè)計(jì)與應(yīng)用[M].北京:電子工業(yè)出版社,2001.
[6] 吳偉.雙通道3GSPS數(shù)據(jù)采集模塊硬件設(shè)計(jì)[D].成都:電子科技大學(xué),2011.