陶 沖, 李 宏
(寧波大學(xué) 信息科學(xué)與工程學(xué)院, 浙江 寧波 315211)
實驗教學(xué)是教學(xué)的重要組成部分,是培養(yǎng)學(xué)生理論聯(lián)系實際、分析和解決實際問題能力必不可少的環(huán)節(jié)[1-2]。但是隨著我國不斷深化教育體制的改革工作以及接受教育的群體不斷增多,實驗室資源逐漸難以滿足學(xué)生需求,也使得傳統(tǒng)的實驗教學(xué)工作難以適應(yīng)新時代的實驗教育要求。隨著計算機(jī)技術(shù)、通信網(wǎng)絡(luò)技術(shù)的發(fā)展,出現(xiàn)了遠(yuǎn)程實驗室。遠(yuǎn)程實驗一般有基于軟件模擬的虛擬實驗[3]和基于真實設(shè)備的遠(yuǎn)程控制實驗?;谲浖M的虛擬實驗是利用計算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)、仿真技術(shù)以及虛擬現(xiàn)實等技術(shù),對理想實驗數(shù)據(jù)的軟件建模和數(shù)學(xué)求解,對實驗過程、結(jié)果進(jìn)行計算機(jī)仿真[4]。
數(shù)字電子技術(shù)作為高校中電子信息類專業(yè)必不可少的專業(yè)基礎(chǔ)課程,對學(xué)生的專業(yè)基礎(chǔ)認(rèn)識以及對本專業(yè)后期課程的奠基起著非常重要的作用。然而數(shù)字電路與系統(tǒng)實驗也存在著例如時空分離[5]、實驗室條件有限、設(shè)備利用率低等一系列問題[6],這些問題極大地限制了學(xué)生對電子信息類基礎(chǔ)知識的掌握和后期課程的學(xué)習(xí)。本文設(shè)計了一種基于網(wǎng)絡(luò)的真實硬件平臺的遠(yuǎn)程控制數(shù)字系統(tǒng)實驗平臺,使得學(xué)生可以在遠(yuǎn)程對位于實驗室的實驗平臺進(jìn)行操作并且通過數(shù)據(jù)回傳來觀察實驗結(jié)果。
遠(yuǎn)程控制數(shù)字系統(tǒng)實驗平臺主要由可接入因特網(wǎng)的數(shù)字系統(tǒng)實驗箱、阿里云服務(wù)器、客戶端實驗軟件構(gòu)成。系統(tǒng)在網(wǎng)絡(luò)構(gòu)架上采用“雙CS結(jié)構(gòu)”[7],即“客戶終端+阿里云服務(wù)器+數(shù)字系統(tǒng)實驗箱”,客戶終端與服務(wù)器共同組成第一層C/S結(jié)構(gòu),數(shù)字系統(tǒng)實驗箱與服務(wù)器共同組成第二層C/S結(jié)構(gòu)。實驗平臺總體架構(gòu)圖見圖1。
圖1 實驗平臺總體結(jié)構(gòu)
數(shù)字系統(tǒng)實驗箱(以下簡稱實驗箱)主要作用是接收用戶的操作,并得到實驗運(yùn)行數(shù)據(jù)且返回到客戶端。在接入網(wǎng)絡(luò)的情況下,會接收客戶端發(fā)送過來的控制指令,并將控制指令解析譯碼生成控制信號,從而控制數(shù)字系統(tǒng)實驗箱的輸入模塊,實現(xiàn)用戶遠(yuǎn)程控制實驗箱的功能。隨后采集實驗結(jié)果數(shù)據(jù),封裝成數(shù)據(jù)包并通過WiFi無線模塊經(jīng)過網(wǎng)絡(luò)發(fā)送回客戶端供用戶實時觀測實驗現(xiàn)象和結(jié)果。
服務(wù)器作為整個系統(tǒng)的管理者,其位置處于客戶端軟件和數(shù)字系統(tǒng)實驗箱的中間。主要任務(wù)是處理用戶的登錄信息,判斷各數(shù)字系統(tǒng)實驗箱的空閑狀態(tài)信息,并且為客戶端分配處于空閑狀態(tài)的實驗箱,而后定時檢測客戶端的在線情況并及時釋放被已掉線客戶端所占用的實驗平臺的使用權(quán)。
客戶端軟件作為直接和用戶進(jìn)行實驗交互的平臺,其主要作用是為用戶提供一個可視化的圖形操作界面??蛻舳塑浖φ鎸嵉臄?shù)字系統(tǒng)實驗平臺進(jìn)行虛擬化,利用軟件中的圖形控件替代真實的器件和電子儀器,如數(shù)碼管、按鍵、信號發(fā)生器等,使實驗用戶可以直觀地對實驗平臺上的各種輸入輸出設(shè)備進(jìn)行控制,從而達(dá)到用戶仿佛置身于真實實驗環(huán)境的目的。客戶端軟件實時地接收從數(shù)字系統(tǒng)實驗箱發(fā)送過來的周期性的實驗數(shù)據(jù),將其顯示在圖形界面中,用戶可以實時地觀察真實的實驗平臺的實驗現(xiàn)象。
數(shù)字系統(tǒng)實驗箱主要由實驗?zāi)K、控制模塊和Wifi無線收發(fā)模塊組成。數(shù)字系統(tǒng)實驗箱硬件結(jié)構(gòu)框圖見圖2。
圖2 數(shù)字系統(tǒng)實驗箱硬件結(jié)構(gòu)圖
為了滿足數(shù)字電路與系統(tǒng)的實驗教學(xué)要求,實驗?zāi)K應(yīng)具備數(shù)碼管顯示電路、按鍵輸入電路、時鐘源電路、LED顯示電路、AD和DA轉(zhuǎn)換電路等,并且除了支持用戶的在線可編程實驗外,還應(yīng)配備脈沖信號源電路、等精度頻率計等模塊,可完成小至單元電路大到數(shù)字系統(tǒng)的實驗設(shè)計[8]??紤]到該系統(tǒng)的龐大和功能上的復(fù)雜性,實驗?zāi)K的主芯片采用Altera公司的Cyclone III系列的EP3C25E144C8來完成。實驗?zāi)K的具體硬件結(jié)構(gòu)框圖見圖3。
圖3 實驗?zāi)K硬件結(jié)構(gòu)框圖
控制模塊主要負(fù)責(zé)處理來自網(wǎng)絡(luò)的控制指令,并將其轉(zhuǎn)換成控制信號作用于實驗?zāi)K;實時接收實驗?zāi)K返回的實驗狀態(tài)和數(shù)據(jù),并通過網(wǎng)絡(luò)控制器發(fā)送至遠(yuǎn)端;同時控制模塊還需要完成實驗程序下載的功能。考慮到本系統(tǒng)的規(guī)模和對網(wǎng)絡(luò)的支持要求,控制模塊芯片采用STM32F407,該微控制器內(nèi)部自帶USART、SPI、IIC和SDIO等通信模塊。在本系統(tǒng)中采用Marvell8686作為WiFi無線收發(fā)器芯片,該芯片完全支持IEEE 802.11b/g標(biāo)準(zhǔn),且該芯片提供SPI和SDIO兩種通信接口,可以很方便地與微控制器進(jìn)行連接。此外,由于本系統(tǒng)的復(fù)雜性關(guān)系,程序?qū)?nèi)存的需求量較大,所以還需設(shè)計一個板上SRAM存儲電路,并且控制模塊中還需要Flash存儲電路、按鍵電路、DDS信號源電路以及OLED液晶顯示電路。其中Flash電路用于保存從客戶端發(fā)送過來的程序數(shù)據(jù);而按鍵電路用于一些功能性的指示作用??刂颇K的硬件結(jié)構(gòu)見圖4。
TCP/IP協(xié)議是因特網(wǎng)最基本的協(xié)議,是國際互聯(lián)網(wǎng)的基礎(chǔ)。本系統(tǒng)采用TCP/IP協(xié)議進(jìn)行網(wǎng)絡(luò)通信。由于TCP協(xié)議提供了無差錯的數(shù)據(jù)傳輸,保證了數(shù)據(jù)通信的可靠性,并且同時還提供了流量控制和擁塞控制[9],所以在對數(shù)據(jù)包進(jìn)行解析時,大大降低了控制模塊和用戶終端軟件的處理壓力。本系統(tǒng)在TCP/IP協(xié)議的基礎(chǔ)之上,定義了適用于網(wǎng)絡(luò)數(shù)字實驗平臺的數(shù)據(jù)幀格式。數(shù)字系統(tǒng)實驗箱與客戶端軟件之間每次傳輸一個完整的幀。由于實驗平臺操作和狀態(tài)的復(fù)雜性,并且盡量減少冗余數(shù)據(jù)的傳輸,每次進(jìn)行傳輸?shù)臄?shù)據(jù)包大小是不固定的,而數(shù)據(jù)幀的大小是由數(shù)據(jù)包頭部中的字節(jié)所定義的。對于本網(wǎng)絡(luò)實驗平臺來說,有兩種類型的數(shù)據(jù)包,數(shù)據(jù)包的類型代碼在包頭部指出。第一種類型的數(shù)據(jù)包為控制數(shù)據(jù)包。具體的控制數(shù)據(jù)包格式定義見表1。
圖4 控制模塊的硬件結(jié)構(gòu)
表1 控制數(shù)據(jù)包格式
控制數(shù)據(jù)包主要用于定義客戶端對數(shù)字系統(tǒng)實驗箱的控制操作,其中起始符表明了數(shù)據(jù)包的起始,緊接著是控制數(shù)據(jù)包的具體內(nèi)容。包類型表明了該包是控制數(shù)據(jù)包還是狀態(tài)數(shù)據(jù)包,控制數(shù)據(jù)包中將其定義為0x01。包長度表明了數(shù)據(jù)包從控制指令到結(jié)束符所有字節(jié)的數(shù)目,以便數(shù)字系統(tǒng)實驗箱接收準(zhǔn)確數(shù)目的數(shù)據(jù)包字節(jié)??刂浦噶畲砹水?dāng)前用戶為對應(yīng)的實驗平臺進(jìn)行的操作,客戶端軟件將這個操作編碼為具體字節(jié)并填充到該位段。而后的數(shù)據(jù)字節(jié)數(shù)目不固定,但是針對特定種類的操作來說,其大小是固定的,控制數(shù)據(jù)包中的數(shù)據(jù)作為控制指令的詳細(xì)說明,表征了用戶特定的操作行為??刂浦噶罹唧w的含義見表2。
第二種數(shù)據(jù)包為狀態(tài)數(shù)據(jù)包,代表了當(dāng)前實驗平臺的實驗結(jié)果數(shù)據(jù)和狀態(tài)。該類型的數(shù)據(jù)包由數(shù)字系統(tǒng)實驗箱周期性地發(fā)送給遠(yuǎn)程客戶端軟件,使得客戶端軟件接收到此數(shù)據(jù)包時可以進(jìn)行一次圖形控件的重新繪制操作,所以說客戶端軟件是在進(jìn)行周期性的重繪操作,而只要發(fā)送狀態(tài)數(shù)據(jù)包的頻率間隔和客戶端軟件對界面刷新的頻率大于人眼視覺的刷新率的話,就可以實現(xiàn)動態(tài)顯示的效果。狀態(tài)數(shù)據(jù)包的具體格式定義見表3。
表2 控制指令具體含義
表3 狀態(tài)數(shù)據(jù)包格式
狀態(tài)數(shù)據(jù)包中將包類型固定為0×02,包長度表明從數(shù)據(jù)1到結(jié)束符的字節(jié)總數(shù)目,結(jié)束符代表了一個狀態(tài)數(shù)據(jù)包的結(jié)尾。而狀態(tài)數(shù)據(jù)包中的數(shù)據(jù)1到數(shù)據(jù)n表明了當(dāng)前數(shù)字系統(tǒng)實驗箱的狀態(tài)數(shù)據(jù),其中還包含了由用戶進(jìn)行操作而產(chǎn)生的實驗結(jié)果數(shù)據(jù)。
為了實現(xiàn)數(shù)字系統(tǒng)實驗箱的網(wǎng)絡(luò)接入功能,采用穩(wěn)定性高和可靠性好的TCP/IP協(xié)議棧LWIP來實現(xiàn)數(shù)字系統(tǒng)實驗箱的網(wǎng)絡(luò)功能。LWIP是Light Weight(輕型)IP協(xié)議棧,LWIP極少的RAM和ROM占用量使得其適合在低端的嵌入式系統(tǒng)中使用[10]。LWIP在有無操作系統(tǒng)的支持下都可以穩(wěn)定運(yùn)行。LWIP的接口之間的關(guān)系見圖5。
圖5 LWIP接口關(guān)系
LWIP協(xié)議棧內(nèi)部已完成大部分網(wǎng)絡(luò)的功能,其不僅通過底層網(wǎng)卡的驅(qū)動程序來進(jìn)行數(shù)據(jù)的收發(fā),還同時向應(yīng)用層提供Socket接口函數(shù),大大降低了系統(tǒng)開發(fā)難度,提高了系統(tǒng)的穩(wěn)定性和可靠性。在應(yīng)用程序中,通過調(diào)用LWIP提供的應(yīng)用層接口不斷接收來自底層網(wǎng)卡的數(shù)據(jù),并對其進(jìn)行解析操作,同時周期性地將實驗平臺的狀態(tài)數(shù)據(jù)打包交由底層網(wǎng)卡,再由網(wǎng)卡發(fā)送至網(wǎng)絡(luò)中進(jìn)行傳輸。狀態(tài)數(shù)據(jù)包的發(fā)送操作是在定時器中斷程序中完成的。中斷程序的流程見圖6。
圖6 中斷程序流程
進(jìn)入中斷之后,首先清除中斷標(biāo)志位,然后對用戶連接的標(biāo)志進(jìn)行判斷,如果當(dāng)前沒有用戶連接,則可以直接退出中斷程序;若有用戶連接則依次進(jìn)行狀態(tài)數(shù)據(jù)的采集、打包和發(fā)送等操作。
服務(wù)器的主要職責(zé)是管理各個數(shù)字系統(tǒng)實驗箱并處理用戶的登錄、注冊等操作,同時對數(shù)字系統(tǒng)實驗箱和遠(yuǎn)端客戶的傳送數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。阿里云服務(wù)器是一種穩(wěn)定可靠、具有可彈性伸縮的計算服務(wù)。使用者可以非常便捷地在其上建立數(shù)據(jù)中心,從而對數(shù)據(jù)進(jìn)行存儲和訪問[11]。
通過在阿里云服務(wù)器端運(yùn)行一個服務(wù)器管理程序和數(shù)據(jù)庫完成對控制信息的傳送以及實驗信息的轉(zhuǎn)發(fā),數(shù)據(jù)存儲則采用小型的數(shù)據(jù)庫MySQL。服務(wù)器端程序軟件使用Java語言,并采用多線程方式進(jìn)行編寫,在訪問數(shù)據(jù)庫方面使用JDBC。為了建立可靠的數(shù)據(jù)傳輸連接,使用TCP連接,進(jìn)行通信。為了進(jìn)行TCP通信連接,使用Socket進(jìn)行編程,Socket封裝了有關(guān)TCP通信的細(xì)節(jié)信息。
在服務(wù)器程序開始啟動時,會開辟2個線程用于分別處理來自數(shù)字系統(tǒng)實驗箱和客戶端的TCP連接,當(dāng)有數(shù)字系統(tǒng)實驗箱請求服務(wù)器建立TCP連接時,服務(wù)器會驗證其信息以防非法連接,驗證成功之后數(shù)字系統(tǒng)實驗箱會上報自己的編號信息,服務(wù)器會將編號信息及其socket對象存儲下來。當(dāng)有客戶端請求服務(wù)器建立TCP連接時,服務(wù)器會開啟一個客戶端服務(wù)線程,該線程對于每個客戶端來說都是唯一的。在客戶端服務(wù)線程中,服務(wù)器會將客戶端發(fā)送來的用戶賬號和密碼信息與數(shù)據(jù)庫中已有的用戶信息進(jìn)行查詢,若查詢通過則會對其分配一個空閑的數(shù)字系統(tǒng)實驗箱,而后該數(shù)字系統(tǒng)實驗箱就與該客戶端建立了一對一的關(guān)系,并可以正常進(jìn)行數(shù)據(jù)通信,此時服務(wù)器只起到了一個轉(zhuǎn)發(fā)的作用??蛻舳朔?wù)線流程見圖7。
圖7 客戶端服務(wù)線程流程
同時還會將用戶的登錄信息存儲到云端實現(xiàn)云存儲,云存儲是一種功能強(qiáng)大的網(wǎng)絡(luò)功能,相對傳統(tǒng)的數(shù)據(jù)存儲方式來說,云存儲價格較低,且方便了后期的升級和維護(hù)工作。
客戶端軟件作為與用戶進(jìn)行直接交互的部分,為用戶提供了一個視覺效果上與真實實驗平臺類似的圖形界面。在軟件中使用真實實驗平臺的圖片作為客戶端軟件的背景,然后在其上放置按鍵、數(shù)碼管、LED、虛擬示波器等交互控件,使得用戶體驗感大幅提升。運(yùn)行在PC機(jī)的客戶端軟件是在VS2010開發(fā)環(huán)境下進(jìn)行編寫的,采用MFC框架并且使用基于對話框的方式進(jìn)行應(yīng)用程序的開發(fā)。
客戶端軟件主要由用戶登錄模塊、數(shù)據(jù)收發(fā)模塊和界面更新模塊所組成。用戶登錄模塊主要完成用戶的登錄和校驗工作。數(shù)據(jù)收發(fā)模塊主要用于接收來自服務(wù)器端發(fā)送來的數(shù)據(jù)包并解析,之后遞交給界面更新模塊處理,同時數(shù)據(jù)收發(fā)模塊還會將用戶的操作轉(zhuǎn)化為數(shù)據(jù)包發(fā)送至服務(wù)器端。界面更新模塊主要是對響應(yīng)用戶的操作,并且根據(jù)服務(wù)器端傳送來的狀態(tài)數(shù)據(jù)實時刷新界面。客戶端軟件架構(gòu)見圖8。
圖8 客戶端軟件架構(gòu)
用戶實驗時,先要在EDA工具軟件中對用戶的設(shè)計進(jìn)行編譯[12],而后由EDA軟件生成FPGA可使用的配置文件(rbf文件),然后通過客戶端軟件經(jīng)由網(wǎng)絡(luò)將文件傳輸?shù)椒?wù)器端,服務(wù)器將該文件轉(zhuǎn)發(fā)至數(shù)字系統(tǒng)實驗箱,再由控制模塊將文件配置到實驗?zāi)K的FPGA目標(biāo)板中,配置成功后,控制模塊會實時采集由實驗?zāi)K所產(chǎn)生的實驗數(shù)據(jù),并將其打包發(fā)送到服務(wù)器端,然后服務(wù)器會將數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端軟件,客戶端軟件接收到數(shù)據(jù)包之后便會開始周期性的刷新圖形界面上的數(shù)碼管、LED、波形窗口等控件,用戶即可觀察到實驗現(xiàn)象。系統(tǒng)整體測試結(jié)果見圖9。
圖9 系統(tǒng)整體測試結(jié)果
本數(shù)字系統(tǒng)實驗平臺采用了雙CS架構(gòu),系統(tǒng)由數(shù)字系統(tǒng)實驗箱、服務(wù)器軟件、PC端客戶端軟件組成,保證了系統(tǒng)能夠穩(wěn)定可靠的運(yùn)行。本實驗系統(tǒng)使得用戶擺脫了時空的限制,方便了用戶的操作,增大了用戶實驗的自主性和創(chuàng)造性?;诰W(wǎng)絡(luò)的實驗?zāi)J讲捎梅謺r復(fù)用的機(jī)制,允許多用戶同時登錄,并為其分配實驗資源,同時數(shù)字系統(tǒng)實驗箱的主實驗芯片采用核心板的方式與系統(tǒng)進(jìn)行連接,增強(qiáng)了系統(tǒng)的可擴(kuò)展性,大大降低了實驗室建設(shè)的成本,更有利于實驗室的后期維護(hù)和管理。
References)
[1] 王成剛,李建海,應(yīng)朝龍.面向?qū)崙?zhàn)的電工電子實踐技能培養(yǎng)平臺建設(shè)[J].實驗技術(shù)與管理,2017,34(增刊1):16-18.
[2] Swamy N, Kuljaca O, Lewis F L. Internet-based educational control systems lab using NetMeeting[J]. IEEE Transaction on Education, 2002, 45(2):145-151
[3] 馬學(xué)條,陳龍.基于虛擬仿真技術(shù)的數(shù)字電路實驗教學(xué)探索[J].實驗技術(shù)與管理,2016,33(10):127-129.
[4] Aktan B, Bohus C A,Crowl L.A, et al. Distance learning applied to control engineering laboratories[J].IEEE Transaction on Education, 1996, 39(3):320-326
[5] 鐘映春,華星,羅巖. 基于互聯(lián)網(wǎng)的過程控制遠(yuǎn)程實驗教學(xué)改革[J]. 實驗技術(shù)與管理,2012,29(7):96-98,128.
[6] Das S, Sharma L N, Gogoi A K. Remote Communication Engineering Experiments Through Internet[J/OL]. International Journal of Online Engineering,( 2006-02-01)[2017-07-02]. http:online-journais.org/index.php/i-joe/article/view/322/289.
[7] 胡裕峰,孫志海,朱善安.基于Internet的電工電子網(wǎng)絡(luò)實驗系統(tǒng)[J].教育理論與實踐,2007,27(2):258-260.
[8] 文雯,李宏.基于CPLD數(shù)字系統(tǒng)實驗平臺的設(shè)計與實現(xiàn)[J].寧波大學(xué)學(xué)報,2008,21(4):505-509.
[9] 陸晶晶,朱善安,葉旭東.基于TCP/IP協(xié)議的電工電子網(wǎng)絡(luò)實驗室[J].機(jī)電工程,2007,27(4):70-72.
[10] Design and implementation of the LWIP TCP/IP stack. Adam Dunkels[EB/OL]. http://www.sics.se/~adam/lwip/documentation.html .
[11] 戴亞平,田德振,董芳艷. 混合結(jié)構(gòu)的互聯(lián)網(wǎng)資源共享和遠(yuǎn)程控制實驗室[J]. 儀器儀表學(xué)報,2008(2):250-255.
[12] 潘松,黃繼業(yè),潘明. EDA技術(shù)實用教程[M]. 北京:科學(xué)出版社, 2006.