成都理工大學(xué)信息科學(xué)與技術(shù)學(xué)院 賀成佳 李 磊
LabVIEW則是NI公司基于虛擬儀器概念突出的第一款實(shí)用成果。通過LabVIEW軟件可以很方便的設(shè)計出系統(tǒng)所需的各種類型的虛擬儀器。LabVIEW不但集成了各種硬件通信協(xié)議,內(nèi)部還具有GPIB總線和VXI總線的參數(shù)與其他計算機(jī)語言開發(fā)環(huán)境不同的是,LabVIEW采用的是可視化編程語言,即我們所說的G語言。在降低研發(fā)成本的同時,壓縮了研發(fā)時間。
如圖1所示,多功能虛擬測量系統(tǒng)主要包括上位機(jī)下位機(jī)兩大部分。其中,上位機(jī)是基于LabVIEW設(shè)計的一款虛擬儀器;下位機(jī)為基于STC12C5A60S2單片機(jī)開發(fā)的測試電路,通過上位機(jī)對下位機(jī)進(jìn)行控制。兩部分共同構(gòu)成多功能虛擬測量系統(tǒng)。
圖1 系統(tǒng)功能結(jié)構(gòu)圖
上位機(jī)主要有三個功能模塊:數(shù)據(jù)采集模塊、顯示模塊、數(shù)值分析模塊。通過上位機(jī)對下位機(jī)進(jìn)行控制,讀取各個傳感器的數(shù)據(jù),最終顯示在上位機(jī)的顯示模塊中。
設(shè)計基于STC12C5A60S2單片機(jī)的下位機(jī)系統(tǒng),通過基于Lab-VIEW的虛擬儀器上位機(jī)系統(tǒng)對下位機(jī)進(jìn)行控制,從而實(shí)現(xiàn)對溫度、電流、電壓、濕度的測量。下位機(jī)系統(tǒng)電路圖如圖2所示。
電壓電流檢測電路通過A/D轉(zhuǎn)換器進(jìn)行對電壓與電流的采集,因單片機(jī)STC12C5A60S2內(nèi)置了A/D轉(zhuǎn)換器,故在系統(tǒng)中不在使用其他外設(shè)A/D轉(zhuǎn)換器進(jìn)行電壓與電流的測量。電路如圖3所示。
因?yàn)閱纹瑱C(jī)的片內(nèi)A/D轉(zhuǎn)換器為電壓輸入型轉(zhuǎn)換器,故其可以直接讀出被測信號的電壓值。針對電流的檢測,需先將電流信號轉(zhuǎn)化為電壓信號進(jìn)行測量,將測量得到的電流值通過歐姆公式計算得到電壓值。本系統(tǒng)中通過在測試端加5K的上拉電阻,將被檢測恒流電流轉(zhuǎn)化為R9的端電壓進(jìn)行測量。
圖2 下位機(jī)系統(tǒng)電路圖
圖3 電壓電流檢測傳感器
為達(dá)到精準(zhǔn)、快速、均衡采集溫濕度的目的,下位機(jī)采用DHT11作為采集溫濕度信號的傳感器。其電路圖如圖4所示。
圖4 DHT11傳感器電路圖
DHT11溫濕傳感器是一款具有較高集成度、可長期穩(wěn)定工作的數(shù)字輸出溫濕度傳感器,可不需通過其他數(shù)字或電平轉(zhuǎn)換器件,即可方便的與數(shù)字接口連接。DHT11采用單線的串行傳輸接口,從而使其可以方便的與各種設(shè)備相連,增加系統(tǒng)的集成程度。并且可以在較遠(yuǎn)的傳輸距離(20M)上保持不失真。
為驗(yàn)證基于LabVIEW設(shè)計的多功能虛擬測量系統(tǒng)的數(shù)據(jù)讀取真確,設(shè)立對照實(shí)現(xiàn)進(jìn)行驗(yàn)證。在下位機(jī)系統(tǒng)中設(shè)計數(shù)碼管顯示電路,對下位機(jī)采集到的原始數(shù)據(jù)進(jìn)行顯示,已驗(yàn)證基于LabVIEW設(shè)計的多功能虛擬測量系統(tǒng)顯示的數(shù)據(jù)是否正確。數(shù)碼管顯示電路如圖5所示。下位機(jī)采用三極管與74HC73鎖存器驅(qū)動數(shù)碼管,三極管通過開關(guān)管的作用實(shí)現(xiàn)數(shù)碼管的位選,鎖存器實(shí)現(xiàn)數(shù)碼管的段選,進(jìn)而實(shí)現(xiàn)數(shù)碼管的動態(tài)顯示。
圖5 數(shù)碼管顯示電路
虛擬測量功能結(jié)構(gòu)框圖如圖6所示。基于LabVIEW多功能虛擬測量系統(tǒng)主要有三個工功能模塊組成:顯示模塊、數(shù)據(jù)采集模塊、數(shù)值分析模塊。
圖6 虛擬測量功能結(jié)構(gòu)框圖
通過上位機(jī)發(fā)送指令給下位機(jī),下位機(jī)接收并分析所接收到的指令,并根據(jù)指令反饋相應(yīng)參數(shù)的值給上位機(jī),接著上位機(jī)分析所接收到的數(shù)據(jù)串,截取有效數(shù)據(jù),顯示到顯示窗口即可。上位機(jī)的程序設(shè)計如圖7所示。
圖7 上位機(jī)程序設(shè)計圖
本設(shè)計通過計算機(jī)上的串口,對下位機(jī)傳感器采集到的數(shù)據(jù)進(jìn)行收集。計算機(jī)采用RS232進(jìn)行串口通信,其采用的通信方式是異步通信方式。RS232九腳接口有公頭、母頭之分,如圖8所示。
圖8 RS232的公頭和母頭
LabVIEW串口通信設(shè)計:
LabVIEW作為采用可視化圖像編程語言的開發(fā)環(huán)境,其已經(jīng)在教學(xué)實(shí)驗(yàn)與行業(yè)生產(chǎn)中被廣泛的用于開發(fā)各種虛擬數(shù)據(jù)采集和儀器控制系統(tǒng)。由于相關(guān)的串口通信協(xié)議的硬件及數(shù)據(jù)采集卡通訊的全部功能已經(jīng)集成在LabVIEW中。這里只需要安裝LABVIEW官方自帶的驅(qū)動就可以實(shí)現(xiàn)串口通信。
(1)VISA配置串口
如圖9所示VISA串口配置函數(shù)。其中VISA資源名稱由用戶自己選定,設(shè)置波特率為9600,數(shù)據(jù)比特為默認(rèn)的8位,不含奇偶校驗(yàn),無流控制。
圖9 VISA配置串口
(2)VISA寫入
如圖10所示,通過寫入緩存將需要傳遞給下位機(jī)的命令,發(fā)送給下位機(jī)。在不同的需求下,有兩種通信模式,分別為同步通信與異步通信??梢酝ㄟ^單擊節(jié)點(diǎn)右鍵,在節(jié)點(diǎn)的功能菜單中國對I/O通信模式進(jìn)行切換。本設(shè)計使用異步通信模式。
圖10 VISA寫入
(3)“屬性”節(jié)點(diǎn)
如圖11所示,利用“屬性”節(jié)點(diǎn)檢測串口輸入緩存中的字節(jié)數(shù)。需要注意的是,將“VISA配置串口”節(jié)點(diǎn)的“VISA資源名稱”輸出端口連接到“屬性”節(jié)點(diǎn)的“引用”輸入端口后,應(yīng)用鼠標(biāo)右擊它,在彈出的快捷菜單中,選擇【屬性】—【Serial Setting】—【Number of Bytes at Serial Port】,這樣“屬性”節(jié)點(diǎn)的輸出端口才能定義為“串行通信的字節(jié)數(shù)”,將該輸出端口連接到“VISA讀取”節(jié)點(diǎn)的“字節(jié)總數(shù)”輸入端口,就可以控制接收數(shù)據(jù)的字節(jié)數(shù)。
圖11 “屬性”節(jié)點(diǎn)
(4)VISA讀取
圖12 VISA讀取
如圖12所示,此處讀取從串口接收到的整個數(shù)據(jù)串的頭四個字符同自定義的數(shù)據(jù)串起始位0XAA如果匹對相等則表明接收數(shù)據(jù)格式正確,則起始位后第二位即為系統(tǒng)需要的有效數(shù)據(jù),一次讀取進(jìn)行分析。
由于要在不同指令下獲取不同的參數(shù)數(shù)據(jù),本設(shè)計采取條件結(jié)構(gòu),在不同的指令條件下,對數(shù)據(jù)進(jìn)行不同的處理。設(shè)計中以輸入的指令為條件,將條件結(jié)構(gòu)分為四種情況,默認(rèn)為電壓參量,緊接著電流、溫度和濕度四個參數(shù)。如整體程序框圖所示,通過截取字符串函數(shù)對數(shù)據(jù)串的參量數(shù)據(jù)進(jìn)行截取操作,并通過連接字符串函數(shù)得到完整的參量表達(dá)。然后傳遞給顯示窗口顯示。
為實(shí)現(xiàn)通信有序、無誤的傳輸數(shù)據(jù),下位機(jī)傳感器與基于Lab-VIEW設(shè)計相應(yīng)的多功能虛擬測量系統(tǒng)上位機(jī)之間的通信進(jìn)行協(xié)議設(shè)置。規(guī)定下位機(jī)與上位機(jī)通信時數(shù)據(jù)單元的信息、使用格式、含義,下位機(jī)與上位機(jī)通信連接方式,數(shù)據(jù)接收與發(fā)送的時序。
在返回的數(shù)據(jù)中如果沒有相應(yīng)參數(shù)數(shù)據(jù),在這個參數(shù)相應(yīng)存儲空間位置返回為0。溫濕度用整數(shù)表示浮點(diǎn),如:23.4℃,可用234表示,67.6%RH,可用676表示。在通信中溫度數(shù)據(jù)項(xiàng)為0, 濕度數(shù)據(jù)項(xiàng)為1,電壓數(shù)據(jù)項(xiàng)2, 電流數(shù)據(jù)項(xiàng)3。
下位機(jī)中溫濕度傳感器檢測到數(shù)據(jù)后,并不是以十六進(jìn)制形式傳送出來的,溫度與濕度的數(shù)據(jù)為為FLP(Floating Point),經(jīng)式如下?lián)Q算才可轉(zhuǎn)換為十進(jìn)制。
圖13 數(shù)據(jù)格式圖
如圖13所示,將FLP數(shù)據(jù)由十六進(jìn)制顯示轉(zhuǎn)化為二進(jìn)制顯示。后八位為尾數(shù),第一位表示數(shù)值正負(fù),第二位至第七位表示指數(shù)。
如式(1-1)所示,n為尾數(shù)的二進(jìn)制的位數(shù),以本次測量到的數(shù)據(jù)為例:
溫度數(shù)據(jù)位C5 D8其轉(zhuǎn)換為二進(jìn)制為1100010111011000則有:
3.4.1 虛擬儀器數(shù)據(jù)處理
由于接收到的一串字符串,根據(jù)上文所規(guī)定的字符串格式,通過前期的判斷,得到的數(shù)據(jù)串是正確的,接下來要解讀出所要顯示到顯示部分的數(shù)據(jù),也就是參數(shù)的數(shù)值。本設(shè)計由于要在不同指令下獲取不同的參數(shù)數(shù)據(jù),所以采取條件結(jié)構(gòu),在不同的指令條件下,對數(shù)據(jù)進(jìn)行不同的處理。設(shè)計中以輸入的指令為條件,將條件結(jié)構(gòu)分為四種情況,默認(rèn)為溫度參量,緊接著濕度、電壓和電流四個參數(shù)。這里以溫度參量為例,如圖14所示。
【指令】是作為條件判斷的前提,一旦輸入的指令和當(dāng)前窗口溫度的判定條件“溫度”相同,機(jī)會執(zhí)行溫度條件下的數(shù)據(jù)處理,如圖所示,通過【VISA讀取】將整個所接收到的數(shù)據(jù)全部讀取出來,這里利用【字符串至字節(jié)數(shù)組轉(zhuǎn)換】函數(shù)對所得字符串進(jìn)行轉(zhuǎn)換處理,將各項(xiàng)數(shù)據(jù)分離,[2][3]代表從數(shù)組中取得十位和個位的數(shù)據(jù)(濕度時同樣,電壓電流情況下分別代表整數(shù)位和小數(shù)位),將得到的數(shù)據(jù)通過【數(shù)值至十進(jìn)制數(shù)字符串轉(zhuǎn)換】函數(shù),轉(zhuǎn)換成十進(jìn)制數(shù)據(jù)。從圖中還可以看到,為了使數(shù)據(jù)顯示完整呈現(xiàn),這里使用【連接字符串】函數(shù),將溫度,小數(shù)點(diǎn)和單位與數(shù)值連接起來,整體顯示效果為(舉例):溫度:27 ℃。同樣,濕度、電壓和電流的處理與溫度的處理相同,只是在不同參數(shù)情況下,連接字符串的格式有所區(qū)別而已。
圖14 溫度數(shù)據(jù)處理
3.4.2 虛擬儀器顯示
由于要在同一個顯示框內(nèi)顯示不同的數(shù)據(jù)類型,這里對顯示部分進(jìn)行的處理就是創(chuàng)建局部變量。通過函數(shù)選板的【編程】—【結(jié)構(gòu)】子選板來創(chuàng)建即可。同時由于所處理的數(shù)據(jù)為16進(jìn)制格式,為了使顯示的效果如“溫度:27 ℃”所示一樣,需要將數(shù)據(jù)部分以十進(jìn)制顯示,這里通過【數(shù)值至十進(jìn)制數(shù)字符串轉(zhuǎn)換】函數(shù)轉(zhuǎn)換得到十進(jìn)制數(shù),再通過在前面板的在顯示窗口內(nèi)右擊選擇“正常顯示”方式即可顯示出來。
此外,在上位機(jī)前面板部分為了使【發(fā)送】和【停止】按鈕可以順利控制。本設(shè)計在程序框圖內(nèi)添加【事件結(jié)構(gòu)】,把【發(fā)送】按鈕作為值變換控制元素,把【停止】按鈕作為值變換控制停止元素。以實(shí)現(xiàn)把整個程序開啟和關(guān)閉操作。
本設(shè)計從理論、技術(shù)和實(shí)踐三方面全面探討虛擬儀器技術(shù)在測量中應(yīng)用的相關(guān)問題,從技術(shù)角度提出基于虛擬儀器的綜合測量系統(tǒng)的應(yīng)用方案,并給出相應(yīng)的技術(shù)設(shè)計思路,設(shè)計、開發(fā)一個綜合虛擬測量儀器。完成基于LabVIEW的電壓測量,基于LabVIEW的溫濕度測量。
[1]王莉,楊鵬.基于LabVIEW的虛擬示波器的設(shè)計與實(shí)現(xiàn)[J].實(shí)驗(yàn)室研究與探索,2010,29(01):62-64.
[2]張聰,李智.基于LabVIEW實(shí)現(xiàn)的非正弦電力系統(tǒng)參數(shù)檢測[J].計算機(jī)測量與控制,2009,17(02):307-309.
[3]馬鴻雁.淺談虛擬儀器及其特點(diǎn)[J].發(fā)展,2008(01):134.
[4]鄭文德.基于虛擬儀器技術(shù)的便攜式振動測試分析儀研究[D].華北電力大學(xué)(北京),2006.
[5]湯書森,李柏年.談?wù)勌摂M儀器及其在實(shí)驗(yàn)室的建設(shè)與發(fā)展前景[J].甘肅科技,2005(09):18-21.
[6]陳景波.基于高速數(shù)據(jù)采集卡的虛擬示波器設(shè)計[D].西北工業(yè)大學(xué),2005.
[7]潘海彬,李伯全.計算機(jī)在測控領(lǐng)域的應(yīng)用——虛擬儀器[J].工業(yè)儀表與自動化裝置,2003(06):9-11.
[8]陳云.基于LabVIEW的往復(fù)壓縮機(jī)實(shí)時監(jiān)測診斷系統(tǒng)研制[D].北京化工大學(xué),2003.
[9]鄧振杰,齊建玲.基于LabVIEW的虛擬儀器構(gòu)建技術(shù)[J].國外電子測量技術(shù),2002(05):24-28+34.
[10]黃永達(dá).在線軟測量儀表的設(shè)計和開發(fā)[D].浙江大學(xué),2001.
[11]鄧振杰,齊建玲,李廣川,仇亞軍.基于LabVIEW構(gòu)建虛擬儀器系統(tǒng)[J].華北航天工業(yè)學(xué)院學(xué)報,2001(03):10-17.
[12]應(yīng)懷樵.虛擬儀器與計算機(jī)采集測試分析儀器的發(fā)展和展望[J].測控技術(shù),2000(08):4-6.