基于以太網(wǎng)的虛擬示波器設(shè)計(jì)
虛擬儀器是利用高性能模塊化硬件,結(jié)合高效靈活的軟件,在通用的計(jì)算機(jī)平臺(tái)上,根據(jù)用戶需求設(shè)計(jì)儀器的測(cè)試功能.實(shí)現(xiàn)對(duì)信號(hào)的處理、計(jì)算、分析以及波形顯示。近年來(lái),隨著微電子與計(jì)算機(jī)技術(shù)的飛速發(fā)展,以及測(cè)量技術(shù)與計(jì)算機(jī)的深層次相結(jié)合,虛擬儀器已成為國(guó)內(nèi)外學(xué)者研究的熱點(diǎn)問(wèn)題之一。
文獻(xiàn)提出的虛擬示波器是以PCI采集卡硬件為基礎(chǔ),極大地限制了其連接和加載性能;文獻(xiàn)使用的串行接口傳輸采集設(shè)備傳輸速率不高,實(shí)時(shí)性也不理想;文獻(xiàn)所提出的虛擬示波器采用USB接口數(shù)據(jù)采集設(shè)備,雖然其技術(shù)日趨成熟,但其穩(wěn)定性、數(shù)據(jù)吞吐量、傳輸速率與傳輸距離,均遜色于工業(yè)以太網(wǎng)技術(shù)。因此,將虛擬儀器技術(shù)與以太網(wǎng)技術(shù)相結(jié)合,在VC環(huán)境下利用其輔助開(kāi)發(fā)包MFC開(kāi)發(fā)出一種新型網(wǎng)絡(luò)化虛擬示波器,界面友好、數(shù)據(jù)準(zhǔn)確,不但包含傳統(tǒng)虛擬示波器數(shù)據(jù)計(jì)算、頻譜分析和波形顯示等常規(guī)功能,還可實(shí)現(xiàn)波形的快速存儲(chǔ)、回放及遠(yuǎn)程多機(jī)操控功能。
1 虛擬示波器硬件設(shè)計(jì)
虛擬示波器硬件系統(tǒng)結(jié)構(gòu)如圖1所示。底層硬件采用基于DSP的嵌入式系統(tǒng),該系統(tǒng)集成了信號(hào)調(diào)理電路、A/D轉(zhuǎn)換模塊以及網(wǎng)絡(luò)接口器件,完成對(duì)被測(cè)信號(hào)的采集、處理及發(fā)送功能:信號(hào)調(diào)理電路對(duì)各種不同的輸入模擬信號(hào)進(jìn)行電壓轉(zhuǎn)換,使被采樣信號(hào)電壓幅值的變化范圍滿足A/D轉(zhuǎn)換模塊的要求,同時(shí)還對(duì)輸入信號(hào)進(jìn)行濾波處理,減少信號(hào)失真和噪聲,阻止帶外頻率引入的虛假信號(hào)。A/D轉(zhuǎn)換模塊是嵌入式系統(tǒng)中最為重要的單元,選用TM320F2812DSP中的A/D轉(zhuǎn)換模塊具有12位精度,16通道最高采樣帶寬達(dá)12.5 MS/s。
其優(yōu)異的動(dòng)態(tài)性能足以滿足虛擬示波器的要求。而系統(tǒng)網(wǎng)絡(luò)接口器件則選用以太網(wǎng)控制器LAN91C111,并將其作為外圍設(shè)備與MCU連接,該器件支持100/10 Mb/s的傳輸速率。嵌入式系統(tǒng)與上位機(jī)建立網(wǎng)絡(luò)連接之后通過(guò)以太網(wǎng)將數(shù)據(jù)傳輸至上位機(jī),使用上層軟件完成數(shù)據(jù)的波形顯示,計(jì)算和相關(guān)分析等功能。
2 虛擬示波器軟件設(shè)計(jì)
為提高虛擬示波器程序的運(yùn)行效率,編程采用多線程思想,所謂多線程就是將程序分割成相互獨(dú)立運(yùn)行的子任務(wù),其中包括主線程和分線程,利用CPU分時(shí)機(jī)制,每個(gè)線程都能循環(huán)地獲得自己的CPU時(shí)間,由于輪詢速度非???,使得所有線程都像是在同時(shí)運(yùn)行一樣。該虛擬示波器程序主線程進(jìn)行數(shù)據(jù)處理,波形顯示;分線程則獨(dú)立完成接收UDP數(shù)據(jù)報(bào)、保存數(shù)據(jù)并向主線程發(fā)送消息的功能。虛擬示波器程序流程圖如圖2所示。
2.1 以太網(wǎng)數(shù)據(jù)通信設(shè)計(jì)
虛擬示波器采用分布式以太網(wǎng)接入技術(shù),即將以太網(wǎng)控制模塊嵌入在嵌入式中,使設(shè)備能直接連接到以太網(wǎng)。嵌入式系統(tǒng)將包含被測(cè)信號(hào)數(shù)據(jù)信息的以太網(wǎng)數(shù)據(jù)幀發(fā)送到局域網(wǎng)內(nèi)的上位機(jī)時(shí)。需要根據(jù)48 b的以太網(wǎng)硬件地址來(lái)確定目的接口。地址解析協(xié)議ARP為以太網(wǎng)硬件地址和IP地址提供映射。虛擬示波器運(yùn)行時(shí)嵌入式系統(tǒng)向目的上位機(jī)發(fā)送ARP請(qǐng)求,預(yù)先設(shè)定好IP地址的上位機(jī)接收到報(bào)文后,識(shí)別出這是發(fā)送端在詢問(wèn)它的硬件地址,則發(fā)送一個(gè)包含自身的IP地址和硬件地址的ARP應(yīng)答,嵌入式系統(tǒng)收到應(yīng)答之后便可向目的上位機(jī)發(fā)送數(shù)據(jù)報(bào)了。
嵌入式系統(tǒng)與上位機(jī)建立網(wǎng)絡(luò)連接之后要進(jìn)行以太網(wǎng)通信還需要實(shí)現(xiàn)TCP/IP協(xié)議族以完成對(duì)數(shù)據(jù)的封裝和分用,在應(yīng)用層、運(yùn)輸層、網(wǎng)絡(luò)層、鏈路層4層協(xié)議系統(tǒng)中每層主要負(fù)責(zé)與其他機(jī)器上的對(duì)等層進(jìn)行通信。其中鏈路層主要包括物理層和數(shù)據(jù)鏈路層。完成物理上的接口連結(jié)協(xié)議,設(shè)計(jì)中采用Ethemet(IEEE802.3)確保數(shù)據(jù)傳輸量;運(yùn)輸層協(xié)議主要包括TCP和UDP 2種,TCP協(xié)議雖然具有更高的可靠性,但是其在軟件上實(shí)現(xiàn)復(fù)雜,程序冗長(zhǎng),并且校驗(yàn)時(shí)占用大量網(wǎng)絡(luò)流量;相比之下,UDP協(xié)議對(duì)于減小DSP資源消耗,提高網(wǎng)絡(luò)傳輸效率方面更有優(yōu)勢(shì)。為了增強(qiáng)UDP協(xié)議的可靠性,在實(shí)際的通信協(xié)議中,對(duì)于關(guān)鍵的量值通過(guò)回傳校驗(yàn)機(jī)制保證其可靠傳輸。這種方法將UDP協(xié)議的簡(jiǎn)潔性和TCP協(xié)議的可靠性相結(jié)合,同時(shí)也節(jié)省了大量用來(lái)校驗(yàn)的網(wǎng)絡(luò)流量,增強(qiáng)了網(wǎng)絡(luò)的實(shí)時(shí)性,因此運(yùn)輸層協(xié)議上選擇的是UDP協(xié)議。以太網(wǎng)數(shù)據(jù)發(fā)送/接收流程圖如圖3所示。
[!--empirenews.page--]
具體虛擬示波器程序中發(fā)送和接收數(shù)據(jù)信息都是由套接字完成。嵌入式系統(tǒng)作為客戶機(jī)端,上位機(jī)則作為服務(wù)器端,其連接過(guò)程可以分為3個(gè)步驟:服務(wù)器監(jiān)聽(tīng),客戶端請(qǐng)求,連接確認(rèn)。成功連接之后,作為客戶機(jī)端的嵌入式系統(tǒng)在收到上位機(jī)發(fā)送的數(shù)據(jù)發(fā)送命令后,將被測(cè)信號(hào)數(shù)據(jù)打包通過(guò)以太網(wǎng)發(fā)送至上位機(jī)。在監(jiān)測(cè)網(wǎng)絡(luò)連接方面,嵌入式系統(tǒng)與上位機(jī)之間通過(guò)心跳幀連接,當(dāng)網(wǎng)絡(luò)連接出現(xiàn)故障時(shí)嵌入式系統(tǒng)發(fā)出的心跳幀中斷。上位機(jī)可及時(shí)發(fā)現(xiàn)并退出網(wǎng)絡(luò)進(jìn)行報(bào)警。以太網(wǎng)通信運(yùn)行機(jī)制如圖4所示。
虛擬示波器通信設(shè)計(jì)充分發(fā)揮以太網(wǎng)數(shù)據(jù)量大、傳輸速度快的優(yōu)點(diǎn),提高了虛擬示波器波形顯示的實(shí)時(shí)性,使其更加接近真實(shí)示波器顯示的波形。
2.2 通道選擇及數(shù)據(jù)坐標(biāo)計(jì)算模塊
嵌入式系統(tǒng)向上位機(jī)發(fā)送的UDP數(shù)據(jù)包包含有6種被測(cè)信號(hào)的數(shù)據(jù)信息,共計(jì)60個(gè)采樣點(diǎn),360個(gè)數(shù)據(jù)點(diǎn)。程序中通過(guò)建立數(shù)組NUM[6][60]將其分別保存并寫(xiě)入上位機(jī)緩存區(qū),同時(shí)虛擬示波器界面使用復(fù)選框控件設(shè)定6個(gè)顯示通道,從而實(shí)現(xiàn)同時(shí)顯示6通道波形的功能。當(dāng)通道C(C=1~6)被選中時(shí),其對(duì)應(yīng)的復(fù)選框控件所關(guān)聯(lián)的成員變量值由FALSE變?yōu)門(mén)RUE,調(diào)用當(dāng)前NUM[C][60]數(shù)據(jù),逐個(gè)計(jì)算數(shù)據(jù)點(diǎn)對(duì)應(yīng)的坐標(biāo)并將其顯示在波形顯示窗口中。對(duì)于數(shù)字示波器來(lái)說(shuō),不僅需要超高速實(shí)時(shí)采樣速率,還需要有較高的波形分析細(xì)節(jié),因此本文的虛擬示波器采用線性插值算法進(jìn)行恢復(fù)和重建原始信號(hào),所謂線性插值就是在兩個(gè)采樣點(diǎn)之間插入一點(diǎn),用直線將采樣點(diǎn)和插值點(diǎn)連接起來(lái)。采樣點(diǎn)數(shù)據(jù)坐標(biāo)Pi(xi,yi)和插值點(diǎn)數(shù)據(jù)坐標(biāo)計(jì)算方法如下:
式中,left為屏幕最左端數(shù)據(jù)點(diǎn)坐標(biāo),cnt為當(dāng)前數(shù)據(jù)點(diǎn)的編號(hào),即示波器接收到的第幾個(gè)數(shù)據(jù)點(diǎn)。而xvalue則是兩點(diǎn)之間間隔的距離。yvalue為縱軸幅值系數(shù),yoffset為當(dāng)前所選縱軸偏移量,插值點(diǎn)選取相鄰兩采樣點(diǎn)的中點(diǎn)。
2.3 觸發(fā)模塊
為使掃描信號(hào)與被測(cè)信號(hào)同步,可以設(shè)定一些條件,將被測(cè)信號(hào)不斷地與這些條件相比較,只有當(dāng)被測(cè)信號(hào)滿足這些條件時(shí)才啟動(dòng)掃描,從而使得掃描的頻率與被測(cè)信號(hào)相同或存在整數(shù)倍的關(guān)系,也就是同步。觸發(fā)的目的在于使每次顯示的初始時(shí)刻都從波形的同一位置開(kāi)始,確保波形穩(wěn)定顯示。
程序中主線程不斷地接收分線程發(fā)送來(lái)的數(shù)據(jù),首先判斷當(dāng)前數(shù)據(jù)點(diǎn)是否大于它之前的5個(gè)數(shù)據(jù)點(diǎn),如果判斷為真,則說(shuō)明當(dāng)前為波形上升沿,之后數(shù)據(jù)點(diǎn)與預(yù)先設(shè)定好的觸發(fā)電平相比較;如果相等或在允許的誤差帶內(nèi),則確定該數(shù)據(jù)點(diǎn)為觸發(fā)點(diǎn),由于使用軟件實(shí)現(xiàn)觸發(fā)功能,因此虛擬示波器“掛起時(shí)間”即重新準(zhǔn)備觸發(fā)的時(shí)間很短,錯(cuò)失波形中重要事件的幾率極低。
2.4 波形存儲(chǔ)回放模塊
虛擬示波器程序通過(guò)建立分線程來(lái)接收數(shù)據(jù),同時(shí)還兼顧保存數(shù)據(jù)的任務(wù)。程序初始化時(shí)創(chuàng)建2個(gè)文件。
1)歷史頁(yè)面文件,當(dāng)用戶點(diǎn)擊“開(kāi)始保存”控件時(shí)程序啟動(dòng)保存功能,將以太網(wǎng)發(fā)送的數(shù)據(jù)全部寫(xiě)入歷史頁(yè)面文件;
2)歷史頁(yè)面信息文件,用來(lái)保存數(shù)據(jù)在一次保存操作中的各類信息,例如:本次數(shù)據(jù)保存的起始和結(jié)束時(shí)間、保存的數(shù)據(jù)量、符合觸發(fā)條件的數(shù)據(jù)點(diǎn)的位置等。
當(dāng)需要實(shí)現(xiàn)波形的回放時(shí),程序根據(jù)歷史頁(yè)面信息文件保存的信息,從歷史頁(yè)面文件中篩選出指定時(shí)間段內(nèi)的數(shù)據(jù),計(jì)算各數(shù)據(jù)點(diǎn)坐標(biāo)并將其顯示于示波器屏幕內(nèi)。
2.5 參數(shù)計(jì)算模塊
虛擬示波器在波形正常顯示的同時(shí),根據(jù)接收到的數(shù)據(jù)實(shí)時(shí)地計(jì)算當(dāng)前信號(hào)的各類指標(biāo)。其中信號(hào)的平均值、有效值以及頻率的算法如下:
式中,n是預(yù)先給定的參與計(jì)算的數(shù)據(jù)點(diǎn)數(shù),NUM[c][m]是保存數(shù)據(jù)的數(shù)組,tmax1-tmax2的含義是波形相鄰的兩個(gè)最值之間的平均時(shí)間,定義為波形的周期。
2.6 前面板設(shè)計(jì)
與文獻(xiàn)使用LabVIEW開(kāi)發(fā)工具設(shè)計(jì)的虛擬示波器前面板相比,本文虛擬示波器前面板控件類型更加豐富、美觀,通過(guò)模擬實(shí)際示波器的各項(xiàng)操作,顯示處理結(jié)果,其設(shè)計(jì)如圖5所示。界面包括波形顯示窗口和控制區(qū)域2個(gè)部分。其中控制區(qū)域根據(jù)儀器功能需要設(shè)有:通道選擇、刻度選擇、波形存儲(chǔ)、頻譜分析、計(jì)算等各類控制按鍵。[!--empirenews.page--]
3 運(yùn)行結(jié)果與分析
3.1 多通道波形顯示功能
啟動(dòng)虛擬示波器使用復(fù)選框控件同時(shí)選擇CH1和CH2兩個(gè)通道,其中CH1為正弦波,CH2為方波,波形顯示如圖6所示。
3.2 波形存儲(chǔ)回放功能
當(dāng)點(diǎn)擊界面中“打開(kāi)”控件時(shí),彈出如圖7所示對(duì)話框,對(duì)話框顯示內(nèi)容為之前已經(jīng)成功保存的各時(shí)間段歷史波形,選擇其中一個(gè)點(diǎn)擊“打開(kāi)波形”虛擬示波器屏幕上就會(huì)顯示這個(gè)時(shí)間段的數(shù)據(jù)波形如圖8所示。
3.3 波形計(jì)算功能
當(dāng)被測(cè)信號(hào)的波形正常顯示時(shí),通過(guò)點(diǎn)擊“計(jì)算”控件可彈出計(jì)算結(jié)果顯示對(duì)話框。以圖8中CH2方波為例,其峰峰值為6.002 06 V,有效值為3.001 03 V,最大值為3.001 03 V,最小值為-3.001 03 V,頻率為27.777 78 Hz,占空比為O.5。如圖9所示。
4 結(jié)論
本文介紹的虛擬示波器速度快、精度高、可擴(kuò)展性強(qiáng)、開(kāi)發(fā)成本低,不僅具備實(shí)際示波器的各項(xiàng)基本功能,同時(shí)充分發(fā)揮了計(jì)算機(jī)的強(qiáng)大優(yōu)勢(shì)和軟件設(shè)計(jì)的靈活性,實(shí)現(xiàn)了波形的顯示、存儲(chǔ)、回放以及參數(shù)計(jì)算、頻譜分析等。目前已經(jīng)實(shí)際運(yùn)用于文獻(xiàn)所述的新型城市軌道交通牽引供電系統(tǒng)的監(jiān)測(cè)平臺(tái)中,用以實(shí)時(shí)監(jiān)測(cè)供電系統(tǒng)的各項(xiàng)參數(shù)并顯示波形。此虛擬示波器通過(guò)結(jié)合以太網(wǎng)通訊技術(shù)進(jìn)行數(shù)據(jù)傳輸,發(fā)揮以太傳輸距離遠(yuǎn)、傳輸數(shù)據(jù)量大、信號(hào)可靠性高的優(yōu)點(diǎn),增加了傳輸?shù)臄?shù)據(jù)量和監(jiān)視距離,滿足了實(shí)際系統(tǒng)中的應(yīng)用要求,具有良好的發(fā)展前景。