摘 要:本文介紹了基于LabVIEW的外置串口采集控制卡的設(shè)計思想,詳細(xì)的分析了采集控制卡的研制過程,并給出了LabVIEW的具體程序設(shè)計。
關(guān)鍵詞:LabVIEW;串口通訊;數(shù)據(jù)采集系統(tǒng)
引言
目前虛擬儀器開發(fā)廣泛應(yīng)用的是美國NI公司的LabVIEW開發(fā)平臺。LabVIEW軟件隱含了對設(shè)計虛擬儀器時所面臨的多種困難的考慮、簡化了設(shè)計過程,對于開發(fā)虛擬儀器相當(dāng)方便,但因其硬件卡昂貴,影響了虛擬儀器在國內(nèi)的推廣使用。因而,本文提出了采用LabVIEW虛擬儀器開發(fā)平臺,自行設(shè)計硬件卡。
設(shè)計中利用單片機作為下位機,采用標(biāo)準(zhǔn)RS-232串口與PC機通訊來構(gòu)建采集控制系統(tǒng)。上位機通過發(fā)送控制采集命令實行采集控制卡的通道選擇、量程選擇、數(shù)據(jù)采集等,然后將采集到的數(shù)據(jù)通過串口傳輸給PC機實現(xiàn)數(shù)據(jù)的存儲、分析。此外基于串口開發(fā)的采集控制卡還因具有熱插拔的優(yōu)點而具有很強的實用性。
外置串口采集控制系統(tǒng)構(gòu)成
外置串口采集控制系統(tǒng)主要由下位機硬/軟件以及上位機控制軟件兩部分構(gòu)成。下位機通過接收PC機命令來執(zhí)行相應(yīng)的操作,例如數(shù)據(jù)采集通道的選擇、輸入電壓范圍的選擇、或是其他量的選擇(如溫度、濕度等)。上位機軟件主要是發(fā)送控制命令,接收、顯示、存儲以及處理數(shù)據(jù)。其中,數(shù)據(jù)的傳輸采用了數(shù)據(jù)幀格式進(jìn)行,通過識別幀頭標(biāo)志位等規(guī)則來保證數(shù)據(jù)傳輸?shù)臏?zhǔn)確性,本設(shè)計中是通過結(jié)合MAXIM公司所提供的A/D轉(zhuǎn)換器MAX197來實現(xiàn)的。
采集控制卡硬件設(shè)計
本設(shè)計硬件電路以單片機89C51為控制核心,通過RS-232與PC機通訊,實現(xiàn)整個數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)采集控制以及數(shù)據(jù)處理和存儲。單片機通過接收PC機指令來控制MAX197,其中A/D采集以中斷方式進(jìn)行??刂瓶ㄓ布娐方Y(jié)構(gòu)如圖1所示。
采集控制卡軟件設(shè)計
單片機通過從串口接收通道、量程選擇命令來執(zhí)行相應(yīng)通道、量程的數(shù)據(jù)采集,然后將數(shù)據(jù)采集的結(jié)果以數(shù)據(jù)幀的格式發(fā)送給PC機。兩個字節(jié)的幀頭標(biāo)志、以及兩個字節(jié)的A/D轉(zhuǎn)換結(jié)果合稱為一幀數(shù)據(jù)。單片機軟件設(shè)計流程如圖2所示。
上位機控制處理程序設(shè)計
上位機控制處理程序在LabVIEW平臺上進(jìn)行開發(fā),LabVIEW程序由兩部分組成:前面板和程序框圖。
LabVIEW前面板的功能等效于傳統(tǒng)儀器前面板,它不僅可以模擬眾多的傳統(tǒng)儀器,而且可以模擬因為結(jié)構(gòu)復(fù)雜而不可實現(xiàn)的傳統(tǒng)概念儀器,因此,設(shè)計具有很大的靈活性。本次設(shè)計的前面板包括通訊端口、方式等的設(shè)置,對采集控制卡的配置,當(dāng)前采集轉(zhuǎn)換結(jié)果顯示,采集轉(zhuǎn)換結(jié)果實時動態(tài)監(jiān)控,以及將采集轉(zhuǎn)換結(jié)果寫入Excel文件的設(shè)置等內(nèi)容。
前面板有如儀器的外形設(shè)計,而程序框圖就是儀器的內(nèi)部電路,是設(shè)計的核心部分。LabVIEW方便之處就是能很方便的將流程圖轉(zhuǎn)換為圖形編程語言。流程圖中的循環(huán)可以直接調(diào)用LabVIEW中的While循環(huán),順序執(zhí)行可以調(diào)用LabVIEW中Sequence Structure(順序結(jié)構(gòu)),條件執(zhí)行則可以調(diào)用LabVIEW中Case Structure(選擇結(jié)構(gòu))。程序流程圖設(shè)計如圖3所示。LabVIEW所采用的是并行執(zhí)行結(jié)構(gòu),主流程圖中橫虛線上方的左右兩邊為同時執(zhí)行的兩個獨立的單元。
本次設(shè)計的圖形編程可以分為串口通訊、數(shù)據(jù)接收以及文件讀寫三個部分。
在LabVIEW中,實現(xiàn)串口通訊方式有直接調(diào)用NI公司提供的Serial系列子VI; VISA串行系列(位于Functions->All Functions->Instrument I/O->serial中);采用Active X控件來控制訪問串行口(先向LabVIEW中添加一個Active X Container控件,然后向其中添加MSComm控件)三種方式。本次設(shè)計采用了第二種方式來訪問和控制串行口,即通過調(diào)用功能模板的VISA中的Serial系列(包含VISA Configure Serial、VISA Write、VISA Read、VISA Close)來實現(xiàn)對串行口的訪問和控制。采用該方式設(shè)計的優(yōu)點是:每個函數(shù)開始接收一個端口號,結(jié)束后輸出一個其復(fù)制的端口號,這樣在設(shè)計中就不用擔(dān)心對于一個端口有遺忘或是重復(fù)的操作,從而使程序設(shè)計更加清晰。
LabVIEW中對于串行口的讀寫都是以字符為單位傳輸其ASCII碼來實現(xiàn)的,因而需將需要傳輸?shù)臄?shù)據(jù)字符轉(zhuǎn)換成對應(yīng)的ASCII碼。本設(shè)計通過調(diào)用CIN (代碼接口接點)將C語言程序嵌入到整個設(shè)計中,然后采用LabVIEW與C語言混合編程來實現(xiàn)所需的功能(CIN在LabVIEW中的調(diào)用路徑為Functions→All Functions→Advanced→Code Interface Node)。
本設(shè)計中首先將采集控制系統(tǒng)的通道號和量程發(fā)送給下位機,然后程序進(jìn)入到相應(yīng)的數(shù)據(jù)接收處理程序。在數(shù)據(jù)接收過程中采用了數(shù)據(jù)幀方式:下位機將對應(yīng)通道號、相應(yīng)量程的采集結(jié)果以一幀數(shù)據(jù)為單位循環(huán)發(fā)送給PC機,PC機通過判斷幀頭來識別數(shù)據(jù),從而提高數(shù)據(jù)傳輸?shù)臏?zhǔn)確性。幀數(shù)據(jù)格式如下:
前面兩個字節(jié)數(shù)據(jù)0xAA和0xAB為幀頭標(biāo)志,DATA1和DATA0為采集結(jié)果,但并非為最終的結(jié)果,它們?nèi)孕枰鄳?yīng)的處理(該處理在服務(wù)子程序中進(jìn)行)。
采集到的數(shù)據(jù)要轉(zhuǎn)換為實際電壓值后,再進(jìn)行顯示、存儲。本設(shè)計可以很方便的把每個實際電壓值存儲到Excel文件中,以便于查看和處理。而且在存儲的過程中可以將通道號、量程、采集數(shù)據(jù)序號信息都寫入文件,這樣,就很容易生成報表輸出。
根據(jù)流程圖設(shè)計的采集控制系統(tǒng)程序框圖如圖4所示。
系統(tǒng)測試
將采集控制系統(tǒng)硬件、軟件按要求設(shè)計好后,運行控制軟件,先對采集控制系統(tǒng)進(jìn)行相應(yīng)的配置,然后可以實時觀看某個通道的電壓值。調(diào)節(jié)輸入電壓,通過實時監(jiān)控界面可以觀看到輸入電壓的變化過程。程序運行結(jié)束后,可以在程序的安裝目錄下找到一個由先前配置所命名的Excel文件,打開這個文件就可以看到采集到的所有數(shù)據(jù)(包括通道號、量程、采集數(shù)據(jù)及所采集數(shù)據(jù)序號信息)。通過測試表明,采集控制系統(tǒng)操作簡單、方便,采集數(shù)據(jù)準(zhǔn)確、價格低廉,且有熱插拔優(yōu)點。
結(jié)語
因為NI公司所提供的數(shù)據(jù)采集卡價格昂貴,對用戶來說,自主研制基于LabVIEW的采集控制卡在實際中有很大的意義,采用LabVIEW平臺來實現(xiàn),很大程度上簡化了設(shè)計,希望本文能給眾多設(shè)計者帶來新的設(shè)計概念。