《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于NiosII和3G無線網(wǎng)絡(luò)的遠程數(shù)據(jù)傳輸系統(tǒng)
基于NiosII和3G無線網(wǎng)絡(luò)的遠程數(shù)據(jù)傳輸系統(tǒng)
來源:電子技術(shù)應(yīng)用2013年第2期
戴峻峰
淮陰工學(xué)院 計算機工程學(xué)院, 江蘇 淮安 223003
摘要: 為了實現(xiàn)有線網(wǎng)絡(luò)難以覆蓋的遠程數(shù)據(jù)傳輸,設(shè)計了基于NiosII系統(tǒng)的遠程數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)中使用FPGA芯片的IP核構(gòu)建NiosII控制系統(tǒng)和與3G模塊通信的UART接口,同時設(shè)計了數(shù)據(jù)傳輸控制程序和通信協(xié)議,實現(xiàn)了通過3G無線網(wǎng)絡(luò)的數(shù)據(jù)遠程傳輸。針對電力系統(tǒng)的遠程數(shù)據(jù)采集進行了測試,系統(tǒng)功能完善,運行可靠。
中圖分類號: TP311
文獻標(biāo)識碼: A
文章編號: 0258-7998(2013)02-0086-03
Remote data transmission system based on NiosII and 3G wireless networks
Dai Junfeng
Faculty of Computer Engineering, Huaiyin Institute of Technology, Huaian 223003, China
Abstract: In order to relize the remote data transmission at where wired network is difficult to cover, remote data transmission system based on NiosII was was designed. Using IP core in the FPGA chip to build NiosII control system and UART interface communicating with 3G module, data transmission control procedures and communication protocols wse designed to achieve the data remote transmission via 3G wireless network. Testing in power system remote data acquisition system proved that the transmission system has perfect function, reliable running.
Key words : 3G wireless network; NiosII system; remote data transmission

    數(shù)據(jù)的遠程傳輸是各種數(shù)據(jù)采集與處理系統(tǒng)所必須的,而那些應(yīng)用于有線網(wǎng)絡(luò)無法覆蓋的場合的設(shè)備就需要使用一種可靠的無線遠程數(shù)據(jù)傳輸方案來實現(xiàn)。根據(jù)這種遠程無線數(shù)據(jù)傳輸?shù)奶攸c,可以使用現(xiàn)存的無線通信網(wǎng)來實現(xiàn)。當(dāng)今3G無線通信技術(shù)的發(fā)展和數(shù)據(jù)傳輸速度的不斷提高[1],為遠程無線數(shù)據(jù)的實時傳輸提供了可能。另外NiosⅡ是Altera公司推出的第二代IP軟核處理器,它與其他IP核可構(gòu)成SoPC(System on a  Programmable Chip)系統(tǒng)的主要部分[2]。SoPC技術(shù)是借助于以計算機為平臺的NiosⅡ開發(fā)工具進行開發(fā)的,具有設(shè)計靈活和軟硬件在系統(tǒng)可編程的功能[3]。根據(jù)以上特點,如果使用NiosⅡ作為3G無線數(shù)據(jù)傳輸?shù)目刂破?,同時在FPGA上使用SoPC技術(shù)還可以實現(xiàn)數(shù)據(jù)采集與處理電路[4],將會使系統(tǒng)設(shè)計與實現(xiàn)更加靈活,同時提高開發(fā)效率并且易于升級換代。

1 硬件系統(tǒng)構(gòu)成
    遠程數(shù)據(jù)傳輸主要為了實現(xiàn)控制系統(tǒng)的遠程監(jiān)控和遠程數(shù)據(jù)處理與分析,為了實現(xiàn)遠程數(shù)據(jù)傳輸?shù)男枨?,不僅需要數(shù)據(jù)采集系統(tǒng)還需要相應(yīng)的遠程數(shù)據(jù)傳輸通信系統(tǒng)的支持。本設(shè)計使用FPGA芯片作為主控芯片,在其中使用SoPC技術(shù)構(gòu)建一個NiosⅡ微處理器作為控制器完成數(shù)據(jù)傳輸控制。由3G無線數(shù)據(jù)傳輸模塊完成無線數(shù)據(jù)傳輸,由于模塊的接口為RS232協(xié)議接口[5],所以在NiosⅡ微處理和3G無線數(shù)據(jù)傳輸模塊之間需要在FPGA芯片上設(shè)計滿足3G無線數(shù)據(jù)傳輸模塊協(xié)議要求的UART接口電路,再結(jié)合RS232協(xié)議電平轉(zhuǎn)換電路即可實現(xiàn)兩者之間的電氣連接。
1.1 Nios II系統(tǒng)資源的構(gòu)建
    運用SoPC Builder工具,在系統(tǒng)中通過IP核,分別使用NiosII Processor、On-Chip Memory(RAM or ROM)、Avalon-MM Tristate Bridge、JTAG UART、Flash Memory(CFI)和SDRAM Controler核構(gòu)建以上資源。根據(jù)外圍接口的具體存儲器型號選擇Flash Memory(CFI)和SDRAM Controler的具體參數(shù)。
1.2 3G模塊接口電路的構(gòu)建
    該部分電路同樣使用軟核的方式在同一片F(xiàn)PGA中實現(xiàn)。電路構(gòu)成如圖1所示。

    如圖1,在FPGA芯片上使用UART軟核構(gòu)造一個同時包括RTS和CTS信號的異步串行口。UART1的UART_RXD和UART_TXD為與3G模塊進行數(shù)據(jù)傳輸?shù)臄?shù)據(jù)接收和數(shù)據(jù)發(fā)送引腳,引腳UART_RTS在發(fā)送數(shù)據(jù)前輸出有效信號(低電平),請求數(shù)據(jù)發(fā)送給3G模塊,3G模塊通過UART_CTS應(yīng)答控制器允許其發(fā)送數(shù)據(jù)或命令,完成數(shù)據(jù)發(fā)送的握手,同時UART_CTS信號還可以用于檢測3G模塊是否在線。
2 3G模塊初始化實現(xiàn)
    3G數(shù)據(jù)傳輸模塊是3G無線通信網(wǎng)的一個調(diào)制解調(diào)器,上電后需要對其進行初始化,根據(jù)實際需求的不同初始化的流程也是不同的,從而實現(xiàn)的功能也就不同,所以需要根據(jù)遠程數(shù)據(jù)傳輸?shù)男枨筮M行相應(yīng)流程的初始化。
2.1 3G模塊控制命令的發(fā)送
    根據(jù)3G模塊的通信協(xié)議,得知其控制命令的發(fā)送使用異步串口實現(xiàn),指令形式為ASCII碼字符串,并且以回車換行為結(jié)束符。所以在設(shè)計3G模塊命令發(fā)送功能時為了充分提高代碼利用率,只是將AT指令碼進行字符串預(yù)處理,即在原有AT指令的字符串后增加“\r”和“\n”兩個字符構(gòu)成AT指令命令字符串。發(fā)送使用通用的串口數(shù)據(jù)發(fā)送函數(shù)實現(xiàn),該函數(shù)原型為void Uart1_send_n(unsigned char *ptr,unsigned char n)。模塊在上電初始化過程中不但需要使用AT指令進行初始化,而且該模塊還會回送一些相應(yīng)的狀態(tài)字符串來告知主控設(shè)備的當(dāng)前設(shè)備或指令執(zhí)行狀態(tài),如上電時模塊會回送COM_READY和^DEEI: 0狀態(tài)信息。每個指令發(fā)送后,會送 一個OK以示確認接收正確,并且其每回送一個狀態(tài)字符串其前后都含有回車換行“\r”和“\n”兩個字符。所以根據(jù)該特點設(shè)計了3G模塊命令回送碼讀函數(shù)void  G3readCommand(unchar*cm),該函數(shù)指令流程如圖2所示。該函數(shù)每次執(zhí)行都讀取一個夾在兩對回車換行之間的一個字符串。

2.2 3G模塊初始化過程
    3G模塊初始化過程主要調(diào)用2.1節(jié)所設(shè)計的相關(guān)函數(shù),根據(jù)TCP/IP數(shù)據(jù)服務(wù)應(yīng)用的初始化需求完成的具體初始化流程如圖3所示。

    系統(tǒng)上電,在完成串口的初始化后,開始3G模塊的初始化。由于系統(tǒng)剛上電,3G模塊可能還沒有啟動成功,所以需要通過串口讀取其上傳的狀態(tài)信息。當(dāng)3G模塊上電啟動后可以接受AT指令時,它將上傳兩條狀態(tài)信息,分別是“COM_READY”和 “^DEEI: 0”,所以當(dāng)系統(tǒng)讀到 “^DEEI: 0”信息時才可以向3G模塊發(fā)送指令,開始對其初始化。首先需要取消3G模塊的自動休眠,而且要及時取消,否則其上電啟動后幾秒鐘之內(nèi)就會進入休眠狀態(tài),其不再能夠接受AT指令,從而無法完成3G模塊的初始化等工作。因此讀到 “^DEEI: 0”信息之后,立即通過串口向其發(fā)送AT指令“T^DSLP=0,0”即可。為了保證3G模塊的數(shù)據(jù)通信的正確性,使用CRC校驗方式進行串口數(shù)據(jù)校驗,通過發(fā)送“AT+CRC=1”指令開啟3G模塊的CRC校驗功能。之后完成一系列的上報設(shè)置后,即可進入3G模塊的開機設(shè)置。開機設(shè)置主要使用AT指令“AT+CFUN=5”、“AT+CFUN=1”和“AT+COPS=0”完成SIM卡和協(xié)議棧的激活,以及網(wǎng)絡(luò)的注冊。在注冊了網(wǎng)絡(luò)之后,使用指令“AT+CGDCONT=1,"IP","CMNET",,0,0”設(shè)置網(wǎng)絡(luò)服務(wù)模式為CMNET,為后續(xù)的數(shù)據(jù)服務(wù)做準(zhǔn)備。下面依次使用相應(yīng)的AT指令完成向網(wǎng)絡(luò)申請下載上傳的帶寬、激活TCP/IP應(yīng)用任務(wù)和撥號的工作。最后使用“AT^DIPSTART=1,xxx.xxx.xxx.xxx,yyyyy”與遠端服務(wù)器xxx.xxx.xxx.xxx端口yyyyy建立連接,該AT指令的第一個參數(shù)1表示現(xiàn)在是以TCP協(xié)議進行連接請求,如果為數(shù)字2則為以UDP協(xié)議與服務(wù)器進行數(shù)據(jù)通信。最后一條指令為數(shù)據(jù)通信開始,參數(shù)為發(fā)送數(shù)據(jù)長度,其必須小于4 096。在此之后該3G模塊就按照以上初始化的工作方式進行工作,所有通過串口連續(xù)送往該模塊的數(shù)據(jù)都將被3G模塊以TCP(或UDP)方式進行數(shù)據(jù)發(fā)送,不再接收AT指令。值得注意的是在此情況下如何退出數(shù)據(jù)發(fā)送模式返回AT指令接收模式。當(dāng)用于接收數(shù)據(jù)的通信接口(串口)超過100 ms沒有收到任何字節(jié)且之后連續(xù)收3個“+”字符(即“+++”字符串)時,其退出數(shù)據(jù)傳輸模式,進入AT指令模式。
3 數(shù)據(jù)發(fā)送與接收實現(xiàn)
    在完成了3G模塊的初始化,進入數(shù)據(jù)傳輸模式后,即可開始使用3G模塊進行應(yīng)用層數(shù)據(jù)通信。要想完成應(yīng)用層數(shù)據(jù)通信,還必須制定相應(yīng)的應(yīng)用層通信協(xié)議,在客戶端系統(tǒng)上編寫數(shù)據(jù)收發(fā)程序使用制定的相應(yīng)應(yīng)用層協(xié)議進行數(shù)據(jù)收發(fā),同時在服務(wù)器端同樣必須編寫相應(yīng)的通信和處理程序完成對客戶端的數(shù)據(jù)收發(fā)和處理(包括顯示和指示)。下面使用電力系統(tǒng)數(shù)據(jù)采集的應(yīng)用背景對這三方面進行介紹。
3.1 應(yīng)用層數(shù)據(jù)通信協(xié)議
    應(yīng)用層數(shù)據(jù)傳輸,主要應(yīng)該定義相應(yīng)的包格式,根據(jù)不同的包格式進行不同的數(shù)據(jù)傳輸和數(shù)據(jù)應(yīng)用。接收端根據(jù)接收的不同數(shù)據(jù)包進行不同的數(shù)據(jù)處理和功能控制。數(shù)據(jù)包主要可以分為先好協(xié)調(diào)包、指令包和應(yīng)用數(shù)據(jù)包。每個包中定義相應(yīng)的包類型字段、包長度字段、包內(nèi)容字段、包校驗字段以及包尾標(biāo)志。包內(nèi)容字段長度因不同的包類型不同,還可以細分不同的子字段。本文設(shè)計的電力系統(tǒng)參數(shù)采集裝置的協(xié)調(diào)包主要完成客戶端(NiosII系統(tǒng)端)與服務(wù)器端數(shù)據(jù)發(fā)送與接收的協(xié)調(diào)調(diào)度工作,包括客戶端的IP地址的獲取,客戶端數(shù)據(jù)發(fā)送的輪詢協(xié)調(diào)等。指令包主要實現(xiàn)客戶端控制,客戶端根據(jù)服務(wù)器傳輸?shù)牟煌刂浦噶钸M行用戶用電設(shè)備的電能供給和報警控制等。數(shù)據(jù)傳輸主要實現(xiàn)客戶端監(jiān)測的數(shù)據(jù)的上傳和服務(wù)器對客戶端的運行參數(shù)的配置。
3.2 NiosII系統(tǒng)數(shù)據(jù)收發(fā)
    在NiosII系統(tǒng)中,根據(jù)應(yīng)用層數(shù)據(jù)通信協(xié)議和3G數(shù)據(jù)傳輸?shù)奶攸c,使用C語言進行編程,完成數(shù)據(jù)收發(fā)。數(shù)據(jù)發(fā)送的過程如圖4所示。3G模塊作為數(shù)據(jù)傳輸終端,通過串口與NiosII系統(tǒng)進行數(shù)據(jù)交換。NiosII系統(tǒng)中的程序主要是針對串口的數(shù)據(jù)收發(fā)設(shè)計的。電力參數(shù)有很多,有基本的電壓、電流、相位、功率等基本信息,也有諧波、簡諧波和實時波形數(shù)據(jù)等細節(jié)信息。信息數(shù)據(jù)有整數(shù)類型也有實數(shù)類型。本文在數(shù)據(jù)傳輸時統(tǒng)一使用同一種數(shù)據(jù)格式,即16位整數(shù)形式進行傳輸,因此需要進行實數(shù)/整數(shù)轉(zhuǎn)換。在數(shù)據(jù)發(fā)送之前NiosII系統(tǒng)首先需要從存儲器中讀取數(shù)據(jù)采集系統(tǒng)采集到的電力參數(shù)數(shù)據(jù),之后將讀取到的參數(shù)數(shù)據(jù)根據(jù)不同類型進行數(shù)據(jù)拆分和數(shù)據(jù)轉(zhuǎn)換,再根據(jù)應(yīng)用層協(xié)議進行數(shù)據(jù)封包。最后根據(jù)當(dāng)前服務(wù)器請求狀態(tài)進行數(shù)據(jù)發(fā)送。數(shù)據(jù)包的發(fā)送使用串口數(shù)據(jù)發(fā)送函數(shù)void Uart_send_n(SramBuf, num)實現(xiàn),其第一個參數(shù)為協(xié)議數(shù)據(jù)包存儲地址,第二個參數(shù)為協(xié)議數(shù)據(jù)包總字節(jié)數(shù)。NiosII系統(tǒng)中的3G數(shù)據(jù)接收使用中斷方式實現(xiàn),當(dāng)系統(tǒng)中接收到3G模塊發(fā)送過來的串口數(shù)據(jù)時,中斷系統(tǒng)自動響應(yīng)并調(diào)用void Uart_ISR(void * context)進行數(shù)據(jù)讀取,之后根據(jù)應(yīng)用層數(shù)據(jù)通信協(xié)議進行解包和功能識別與應(yīng)用。

3.3 遠程終端數(shù)據(jù)收發(fā)
    遠程終端即服務(wù)器端主要實現(xiàn)對NiosII系統(tǒng)端的參數(shù)、數(shù)據(jù)的顯示和存儲以及工作參數(shù)配置與控制。服務(wù)器端軟件主要包括系統(tǒng)界面設(shè)計和通信程序設(shè)計。本系統(tǒng)軟件使用C/S結(jié)構(gòu),服務(wù)器使用固定IP地址,使用Socket編程模式實現(xiàn),設(shè)備終端(即客戶端,NiosII系統(tǒng)端)在工作過程中向服務(wù)器提出連接請求,建立連接后,服務(wù)器端作為數(shù)據(jù)傳輸?shù)目刂贫耍鶕?jù)實際用戶的軟件界面上的操作選擇某設(shè)備終端與服務(wù)器端進行數(shù)據(jù)實時交換、顯示和存儲。如果系統(tǒng)需要實時保存每個設(shè)備終端的電力參數(shù),在建立連接之后即開始數(shù)據(jù)傳輸,界面操作只是進行顯示切換。不過由于電力參數(shù)多,如果用戶設(shè)備終端較多,則系統(tǒng)服務(wù)器壓力會比較大。服務(wù)器端應(yīng)用程序可以根據(jù)不同的應(yīng)用需求進行具體設(shè)計,實現(xiàn)具體功能。圖5是實現(xiàn)的電力參數(shù)數(shù)據(jù)遠程采集系統(tǒng)的一個原型系統(tǒng)軟件界面。包括文本數(shù)據(jù)信息的顯示,圖形矢量信息和波形信息的顯示,同時包括各種與電力參數(shù)相關(guān)的功能界面以及參數(shù)設(shè)置和控制界面。有效地實現(xiàn)了供電或大功率用電場合的供電參數(shù)采集及遠程監(jiān)控。

 

 

    本3G無線網(wǎng)絡(luò)數(shù)據(jù)傳輸系統(tǒng)使用SoPC技術(shù)在FPGA上建立一NiosII處理器,根據(jù)3G無線網(wǎng)絡(luò)數(shù)據(jù)傳輸應(yīng)用的需要設(shè)計NiosII控制程序,實現(xiàn)了通過3G模塊的遠程數(shù)據(jù)傳輸功能。設(shè)計中,針對3G模塊的特點設(shè)計數(shù)據(jù)收發(fā)程序、模塊初始化程序和數(shù)據(jù)應(yīng)用層通信協(xié)議,為系統(tǒng)的遠程數(shù)據(jù)傳輸?shù)膶崿F(xiàn)提供了一種相對通用的方法,易于實現(xiàn)各種遠程數(shù)據(jù)傳輸?shù)膽?yīng)用系統(tǒng)開發(fā)。本系統(tǒng)通過實地試驗證明系統(tǒng)結(jié)構(gòu)合理,實現(xiàn)靈活,充分滿足實際需求,系統(tǒng)運行穩(wěn)定。Nios II處理器作為本接口電路的主控芯片,既簡化了程序設(shè)計,又提高了系統(tǒng)性能和開發(fā)效率,而且易于升級換代。
參考文獻
[1] 謝兵,許金彤.基于3G網(wǎng)絡(luò)的輸電線路防外力破壞智能視頻監(jiān)控系統(tǒng)研究[J].華東電力,2010,38(11):1729-1731.
[2] YIANNACOURAS P, STEFFAN J G, ROSE J.  Exploration and customization of FPGA-based soft processors[J]. Computer-Aided Design of Integrated Circuits and Systems, 2007,26(2):266-277.
[3] 周潤景,圖雅,張麗敏.基于QuartusII的FPGA/CPLD數(shù)字系統(tǒng)設(shè)計實例[M].北京:電子工業(yè)出版社,2007.
[4] 胡繼勝,李洪.基于 SoPC/Nios II 的信號發(fā)生器設(shè)計與實現(xiàn)[J]. 電子技術(shù)應(yīng)用,2011,37(6):91-94.
[5] 王盛學(xué),李著信,何平. 基于3G 無線網(wǎng)絡(luò)的工業(yè)監(jiān)控系統(tǒng)設(shè)計[J].電子技術(shù)應(yīng)用,2011,37(8):75-77,81.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。