王 勤,黃云霞,任維政
(北京郵電大學(xué) 電子工程學(xué)院,北京 100876)
隨著網(wǎng)絡(luò)技術(shù)的普及和信息技術(shù)的發(fā)展,開放式、網(wǎng)絡(luò)化的遠(yuǎn)程實(shí)驗(yàn)系統(tǒng)應(yīng)運(yùn)而生。虛擬儀器作為遠(yuǎn)程虛擬實(shí)驗(yàn)系統(tǒng)的核心,已成為國內(nèi)外測試和儀器制造界十分關(guān)注的研究方向[1]。20世紀(jì)80年代中期,美國國家儀器公司 NI(national instrument)首先提出了“軟件就是儀器”這一虛擬儀器概念。虛擬儀器是現(xiàn)代儀器技術(shù)與計(jì)算機(jī)技術(shù)相結(jié)合的產(chǎn)物,充分利用最新的計(jì)算機(jī)技術(shù)來實(shí)現(xiàn)傳統(tǒng)儀器的功能。將虛擬儀器應(yīng)用在遠(yuǎn)程教學(xué)和遠(yuǎn)程實(shí)驗(yàn)中,可節(jié)省實(shí)驗(yàn)室有限資源[3],也為異地實(shí)驗(yàn)數(shù)據(jù)處理和遠(yuǎn)程學(xué)術(shù)交流提供了很好的平臺(tái)。
B/S架構(gòu)是WEB興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,它將系統(tǒng)功能實(shí)現(xiàn)的核心部分集中到服務(wù)器上,大大減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量,降低了用戶的總體成本。本文充分利用B/S架構(gòu)的優(yōu)勢(shì),將RIA(富英特網(wǎng)應(yīng)用程序)最成熟的技術(shù)之一Flex技術(shù)與FPGA技術(shù)相結(jié)合,應(yīng)用在遠(yuǎn)程虛擬示波器中,實(shí)現(xiàn)了虛擬示波器的界面與實(shí)時(shí)數(shù)據(jù)的交互方式,為將來虛擬實(shí)驗(yàn)系統(tǒng)的建設(shè)提供了良好的支持。
如圖1所示,遠(yuǎn)程虛擬示波器主要由客戶端、網(wǎng)絡(luò)服務(wù)器、示波器硬件平臺(tái)3部分構(gòu)成。
圖1 遠(yuǎn)程虛擬示波器系統(tǒng)架構(gòu)圖Fig.1 Architecture diagram of remote virtual oscilloscope system
遠(yuǎn)程虛擬示波器采用B/S架構(gòu),用戶通過網(wǎng)絡(luò)遠(yuǎn)程登錄網(wǎng)絡(luò)服務(wù)器,在客戶端界面上進(jìn)行遠(yuǎn)程操作。用戶在客戶端界面上操作虛擬示波器發(fā)送動(dòng)作指令,網(wǎng)絡(luò)服務(wù)器接受到指令后將其解析傳遞給示波器硬件平臺(tái),硬件平臺(tái)實(shí)時(shí)采集實(shí)驗(yàn)數(shù)據(jù),并將其回傳給網(wǎng)絡(luò)服務(wù)器,在客戶端界面上呈現(xiàn)給用戶,供用戶查看實(shí)驗(yàn)結(jié)果和測量相應(yīng)參數(shù)。
(1)客戶端
依據(jù)B/S架構(gòu)規(guī)范,客戶端不需安裝任何專門軟件,可直接運(yùn)行于瀏覽器之上,能適用于龐大的用戶群體,且不需任何維護(hù),因此它為用戶提供了一個(gè)方便快捷的交互接口,體現(xiàn)了B/S架構(gòu)的優(yōu)勢(shì)。用戶可直接通過客戶端遠(yuǎn)程登錄實(shí)驗(yàn)系統(tǒng),查看、管理自身用戶信息及在虛擬示波器界面上操作[2]。
客戶端具備和真實(shí)示波器完全一致的展示界面,因而最大程度的降低了用戶學(xué)習(xí)使用虛擬示波器的難度。用戶在虛擬示波器界面的操作最終會(huì)被組包成相應(yīng)的動(dòng)作指令,通過Http請(qǐng)求的方式傳輸給網(wǎng)絡(luò)服務(wù)器。服務(wù)器在解析了指令所描述的內(nèi)容之后也將返回的數(shù)據(jù)組包成客戶端能夠識(shí)別的格式,回傳給客戶端??蛻舳嗽讷@取這些指令之后通過界面向用戶呈現(xiàn)實(shí)驗(yàn)測量的結(jié)果。
(2)網(wǎng)絡(luò)服務(wù)器
網(wǎng)絡(luò)服務(wù)器是數(shù)據(jù)的處理、存儲(chǔ)、分發(fā)中心。網(wǎng)絡(luò)服務(wù)器需要驗(yàn)證客戶端的遠(yuǎn)程登錄請(qǐng)求,接收客戶端的操作請(qǐng)求并進(jìn)行處理,之后將相應(yīng)的操作指令按照協(xié)議組包后通過Socket方式傳遞給示波器硬件平臺(tái);與此同時(shí),服務(wù)器還需要接收并解析硬件平臺(tái)的處理結(jié)果,最后將結(jié)果反饋給客戶端。整個(gè)過程數(shù)據(jù)都存儲(chǔ)在網(wǎng)絡(luò)服務(wù)器中,因此數(shù)據(jù)的一致性和時(shí)效性都得到了保證。
(3)示波器硬件平臺(tái)
示波器硬件平臺(tái)負(fù)責(zé)接收網(wǎng)絡(luò)服務(wù)器下發(fā)的動(dòng)作指令,經(jīng)過分析解析,控制相應(yīng)的實(shí)驗(yàn)電路模塊進(jìn)行工作,并采集實(shí)驗(yàn)中產(chǎn)生的實(shí)驗(yàn)數(shù)據(jù),最后將數(shù)據(jù)流以Soap方式回傳給網(wǎng)絡(luò)服務(wù)器。
如圖2所示,遠(yuǎn)程虛擬示波器硬件平臺(tái)由ARM處理模塊、FPGA數(shù)據(jù)采集處理模塊、高速A/D轉(zhuǎn)換模塊構(gòu)成。
圖2 示波器硬件平臺(tái)組成框圖Fig.2 Block diagram of oscilloscope hardware platform
(1)高速A/D轉(zhuǎn)換模塊
高速A/D轉(zhuǎn)換模塊采用AD9268芯片。該模塊負(fù)責(zé)將采集的多通道模擬信號(hào)轉(zhuǎn)換為高速并行的數(shù)字信號(hào)并傳遞給FPGA數(shù)據(jù)采集處理模塊,它是整個(gè)采樣系統(tǒng)的核心功能模塊之一,其采樣精度和速率決定了采樣系統(tǒng)的吞吐量和數(shù)據(jù)精確度。
(2)ARM 處理模塊
ARM處理模塊主要功能是接收網(wǎng)絡(luò)服務(wù)器下發(fā)的動(dòng)作指令,并進(jìn)行解析處理,通過調(diào)用總線驅(qū)動(dòng)程序下達(dá)指令給FPGA數(shù)據(jù)采集處理模塊,并接收由該模塊回傳的數(shù)據(jù),進(jìn)而將數(shù)據(jù)進(jìn)行封裝成數(shù)據(jù)包,然后通過TCP協(xié)議上傳給網(wǎng)絡(luò)服務(wù)器。
(3)FPGA數(shù)據(jù)采集處理模塊
FPGA數(shù)據(jù)采集處理模塊采用的是XC6SCLX45-2FGG484型號(hào)芯片。該模塊主要負(fù)責(zé)數(shù)據(jù)的采集和處理,由總線接口、時(shí)鐘生成模塊、多通道采集控制模塊、數(shù)據(jù)處理模塊、雙端口存儲(chǔ)器構(gòu)成,它是整個(gè)示波器硬件平臺(tái)的控制核心[6]。
①總線接口??偩€接口負(fù)責(zé)控制總線上的數(shù)據(jù)和控制信號(hào)的傳輸,及解讀ARM處理模塊傳來的ARM指令,并將啟動(dòng)采樣信號(hào)和采樣通道選擇信號(hào)傳遞給多通道采集控制模塊,將時(shí)鐘頻率參數(shù)傳遞給時(shí)鐘生成模塊。
②時(shí)鐘生成模塊。時(shí)鐘生成模塊根據(jù)總線接口傳來的時(shí)鐘頻率參數(shù),產(chǎn)生A/D采樣時(shí)序,進(jìn)而控制多通道采集控制模塊采集數(shù)據(jù)的頻率。
③多通道采集控制模塊。多通道采集控制模塊負(fù)責(zé)采集由A/D上傳的數(shù)據(jù),由啟動(dòng)采樣信號(hào)、通道選擇信號(hào)及A/D采樣時(shí)序進(jìn)行控制。只有接收到啟動(dòng)采樣信號(hào)和通道選擇信號(hào)后,才會(huì)根據(jù)對(duì)應(yīng)的A/D采樣時(shí)序進(jìn)行數(shù)據(jù)采集,并將數(shù)據(jù)上傳給數(shù)據(jù)處理模塊。
④數(shù)據(jù)處理模塊。數(shù)據(jù)處理模塊接收采集到的數(shù)字信號(hào),并對(duì)采樣信號(hào)進(jìn)行流水線無阻塞的FFT變換,將時(shí)域信號(hào)轉(zhuǎn)換為頻域信號(hào),進(jìn)而存儲(chǔ)到雙端口存儲(chǔ)器中。
⑤雙端口存儲(chǔ)器。雙端口存儲(chǔ)器主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)與轉(zhuǎn)發(fā),采用RAM+FIFO的模式來實(shí)現(xiàn)。當(dāng)數(shù)據(jù)量較大,內(nèi)部RAM資源緊張時(shí)使用外部的DDR3來代替內(nèi)部RAM來實(shí)現(xiàn)存儲(chǔ)。RAM+FIFO模式中,高度A/D轉(zhuǎn)換模塊經(jīng)配置,在其輸入時(shí)鐘的下降沿,將數(shù)據(jù)存入RAM中,當(dāng)數(shù)據(jù)存滿RAM時(shí),總線接口將其讀出并控制傳輸?shù)娇偩€上。
數(shù)據(jù)采集、數(shù)據(jù)處理和存儲(chǔ)控制都可以并行進(jìn)行,從而使系統(tǒng)有更好的數(shù)據(jù)處理能力。
如圖3所示,系統(tǒng)軟件部分主要包括客戶端、網(wǎng)絡(luò)服務(wù)器及底層軟件3部分,整個(gè)虛擬示波器的實(shí)現(xiàn)需要這3部分相互配合完成。
圖3 系統(tǒng)軟件設(shè)計(jì)流程圖Fig.3 Flow chart of system software design
(1)客戶端
客戶端主要為用戶提供一個(gè)便捷、交互的接口,使用戶能夠完成遠(yuǎn)程測量操作。本系統(tǒng)采用Flex3.0平臺(tái)完成軟件部分的設(shè)計(jì)[4]。虛擬示波器前端界面設(shè)計(jì)以真實(shí)示波器的圖片為背景,利用Flex類庫提供的布局組件、控制組件、導(dǎo)航組件等設(shè)計(jì)各功能鍵和顯示屏兩個(gè)部分。使用布局組件,實(shí)現(xiàn)靜態(tài)頁面由底層到上層的布局層次。在各不同布局層次中放置所需的控件和圖表組件,調(diào)整布局及控件和圖表組件的位置,使其與原位置重合,實(shí)現(xiàn)靜態(tài)界面與真實(shí)示波器布局相同的效果。
用戶通過操作界面上的功能按鈕,產(chǎn)生服務(wù)請(qǐng)求,轉(zhuǎn)為相應(yīng)的指令傳給網(wǎng)絡(luò)服務(wù)器。網(wǎng)絡(luò)服務(wù)器把接收到的指令翻譯成ARM指令,傳給ARM處理模塊,此時(shí)可通過控制數(shù)據(jù)采集模塊進(jìn)行數(shù)據(jù)的采集。采集成功,回傳給客戶端顯示在界面上,否則向客戶端發(fā)出錯(cuò)誤指令,請(qǐng)求用戶重新操作。
(2)網(wǎng)絡(luò)服務(wù)器
網(wǎng)絡(luò)服務(wù)器在整個(gè)系統(tǒng)中主要起一個(gè)指令的接收轉(zhuǎn)發(fā)及數(shù)據(jù)的存儲(chǔ)轉(zhuǎn)發(fā)功能,在J2EE平臺(tái)中采用SSH三層構(gòu)架進(jìn)行搭建,包括控制界面表現(xiàn)的數(shù)據(jù)交互層Struts2、業(yè)務(wù)邏輯控制層 Spring3.0、數(shù)據(jù)持久化層Hibernate。Struts負(fù)責(zé)MVC(model view controller)的分離并為整個(gè)系統(tǒng)提供基礎(chǔ)框架。在框架模型部分,利用Spring完成對(duì)業(yè)務(wù)層的支持,使用Hibernate框架對(duì)持久層提供支持。
(3)示波器底層軟件設(shè)計(jì)
示波器底層軟件設(shè)計(jì),主要包括socket通信,Webservice程序以及多線程通信3部分。其中socket通信是用來接收網(wǎng)絡(luò)服務(wù)器指令的,通信的數(shù)據(jù)長度較短,數(shù)據(jù)內(nèi)容較少,一般為幾十個(gè)字節(jié)。Webservice程序主要是用于向網(wǎng)絡(luò)服務(wù)器上傳實(shí)驗(yàn)數(shù)據(jù)的,通信的數(shù)據(jù)內(nèi)容較長,數(shù)據(jù)傳輸?shù)念l率較高,因?yàn)楹芏鄬?shí)驗(yàn)數(shù)據(jù)需要連續(xù)不斷地返回[5]。多線程通信包含了套接字與Webservice程序。在程序中設(shè)計(jì)一個(gè)命令隊(duì)列,并按照命令隊(duì)列中不同的指令創(chuàng)建不同的線程處理程序,并且在多線程設(shè)計(jì)中加入線程的控制機(jī)制,以達(dá)到充分利用系統(tǒng)資源并減少事件間的相互影響的效果。
為了驗(yàn)證遠(yuǎn)程虛擬示波器的功能及實(shí)用性,對(duì)實(shí)驗(yàn)過程中涉及到的波形、失真度、頻率、誤差等進(jìn)行了多次測試,并與實(shí)際的高精度的示波器進(jìn)行了校準(zhǔn)和比較,從而證實(shí)了該虛擬儀器的可靠性。
以波形的測試舉例說明:
(1)對(duì)虛擬示波器進(jìn)行CH1,CH2兩個(gè)通道并行波形的顯示。
打開虛擬示波器的界面。點(diǎn)擊run/stop按鈕,發(fā)送請(qǐng)求數(shù)據(jù)的指令,可以從網(wǎng)絡(luò)服務(wù)器中取到用于顯示的雙通道數(shù)據(jù),2 V/100 Hz的正弦波信號(hào)。并點(diǎn)擊Measure測量波形的電壓值與周期,其顯示波形和測量數(shù)據(jù),如圖4所示。
圖4 雙通道波形顯示Fig.4 Dual-channel waveform display
(2)對(duì)波形進(jìn)行相應(yīng)的調(diào)整
調(diào)整后的波形如圖5所示。通過旋轉(zhuǎn)垂直方向、水平方向的位置調(diào)整旋鈕,對(duì)正在顯示的數(shù)據(jù)進(jìn)行調(diào)整,實(shí)現(xiàn)位置的上下左右移動(dòng)。并通過調(diào)整電壓、時(shí)間靈敏度旋鈕,使顯示的波形縱坐標(biāo)方向拉長一倍,水平方向拉長5倍,并在此狀態(tài)下測量電壓及周期值。
(3)實(shí)驗(yàn)測試結(jié)果
圖5 調(diào)整后的波形Fig.5 Waveform after adjustment
在測試雙通道2 V/10 ms的正弦波信號(hào)中,調(diào)整前:電壓顯示誤差為1%,電壓測量誤差為3%,時(shí)間顯示誤差為1%,周期測量誤差為5%;調(diào)整后:電壓顯示誤差為1%,電壓測量誤差為5%,時(shí)間顯示誤差為1%,周期測量誤差為1%;由測試結(jié)果可見,測試結(jié)果與實(shí)物示波器結(jié)果幾乎完全一致,誤差都在實(shí)驗(yàn)允許的測量誤差范圍內(nèi),因此虛擬示波器完全可代替實(shí)物示波器。
遠(yuǎn)程虛擬儀器作為遠(yuǎn)程虛擬實(shí)驗(yàn)系統(tǒng)的核心逐漸成為儀器技術(shù)新的主流,將其集成在Web工程中也成為儀器新的發(fā)展方向。在基于Labview的虛擬儀器作為主要實(shí)現(xiàn)方法的大背景下,本文提出了一種全新的虛擬儀器設(shè)計(jì)算法,即基于B/S架構(gòu)的遠(yuǎn)程虛擬示波器設(shè)計(jì)方法。實(shí)現(xiàn)了對(duì)實(shí)時(shí)實(shí)驗(yàn)數(shù)據(jù)精確的顯示和測量,隨時(shí)隨地遠(yuǎn)程訪問又滿足了遠(yuǎn)程實(shí)驗(yàn)便利快捷的要求,本成果已在北京郵電大學(xué)建成應(yīng)用,使得虛擬示波器有很好的發(fā)展前景。
[1] Guimaraes E G,Cardozo E,Moraes D H,et al.Design and implementation issues for modern remote laboratories[J].Learning Technologies,IEEE Transactions on,2011,4(2):149-161.
[2] Swamy N,Kuljaca O,Lewis F L.Internet-based educational control systems lab using NetMeeting[J].Education,IEEE Transactions on,2002,45(2):145-151.
[3] 曹明讓.淺談專業(yè)實(shí)驗(yàn)室建設(shè)[J].高等工程教育,2003(6):51-53.
[4] 王麗.基于Flex技術(shù)的虛擬演示實(shí)驗(yàn)系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2011(2):64-67.
[5] 孫美香.基于 Internet的遠(yuǎn)程虛擬儀器[J].電子技術(shù),2000(12):39-41.
[6]Manavi F,Shayan Y R.Implementation of OFDM modem for the physical layer of IEEE 802.11 a standard based on Xilinx Virtex-II FPGA[C]//Vehicular Technology Conference,2004.VTC 2004-Spring.2004 IEEE 59th.IEEE,2004,3:1768-1772. ■