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