《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于NiosII和3G無線網(wǎng)絡的遠程數(shù)據(jù)傳輸系統(tǒng)
基于NiosII和3G無線網(wǎng)絡的遠程數(shù)據(jù)傳輸系統(tǒng)
來源:電子技術應用2013年第2期
戴峻峰
淮陰工學院 計算機工程學院, 江蘇 淮安 223003
摘要: 為了實現(xiàn)有線網(wǎng)絡難以覆蓋的遠程數(shù)據(jù)傳輸,設計了基于NiosII系統(tǒng)的遠程數(shù)據(jù)傳輸系統(tǒng)。系統(tǒng)中使用FPGA芯片的IP核構建NiosII控制系統(tǒng)和與3G模塊通信的UART接口,同時設計了數(shù)據(jù)傳輸控制程序和通信協(xié)議,實現(xiàn)了通過3G無線網(wǎng)絡的數(shù)據(jù)遠程傳輸。針對電力系統(tǒng)的遠程數(shù)據(jù)采集進行了測試,系統(tǒng)功能完善,運行可靠。
中圖分類號: TP311
文獻標識碼: 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)所必須的,而那些應用于有線網(wǎng)絡無法覆蓋的場合的設備就需要使用一種可靠的無線遠程數(shù)據(jù)傳輸方案來實現(xiàn)。根據(jù)這種遠程無線數(shù)據(jù)傳輸?shù)奶攸c,可以使用現(xiàn)存的無線通信網(wǎng)來實現(xiàn)。當今3G無線通信技術的發(fā)展和數(shù)據(jù)傳輸速度的不斷提高[1],為遠程無線數(shù)據(jù)的實時傳輸提供了可能。另外NiosⅡ是Altera公司推出的第二代IP軟核處理器,它與其他IP核可構成SoPC(System on a  Programmable Chip)系統(tǒng)的主要部分[2]。SoPC技術是借助于以計算機為平臺的NiosⅡ開發(fā)工具進行開發(fā)的,具有設計靈活和軟硬件在系統(tǒng)可編程的功能[3]。根據(jù)以上特點,如果使用NiosⅡ作為3G無線數(shù)據(jù)傳輸?shù)目刂破?,同時在FPGA上使用SoPC技術還可以實現(xiàn)數(shù)據(jù)采集與處理電路[4],將會使系統(tǒng)設計與實現(xiàn)更加靈活,同時提高開發(fā)效率并且易于升級換代。

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

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

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

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

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

 

 

    本3G無線網(wǎng)絡數(shù)據(jù)傳輸系統(tǒng)使用SoPC技術在FPGA上建立一NiosII處理器,根據(jù)3G無線網(wǎng)絡數(shù)據(jù)傳輸應用的需要設計NiosII控制程序,實現(xiàn)了通過3G模塊的遠程數(shù)據(jù)傳輸功能。設計中,針對3G模塊的特點設計數(shù)據(jù)收發(fā)程序、模塊初始化程序和數(shù)據(jù)應用層通信協(xié)議,為系統(tǒng)的遠程數(shù)據(jù)傳輸?shù)膶崿F(xiàn)提供了一種相對通用的方法,易于實現(xiàn)各種遠程數(shù)據(jù)傳輸?shù)膽孟到y(tǒng)開發(fā)。本系統(tǒng)通過實地試驗證明系統(tǒng)結構合理,實現(xiàn)靈活,充分滿足實際需求,系統(tǒng)運行穩(wěn)定。Nios II處理器作為本接口電路的主控芯片,既簡化了程序設計,又提高了系統(tǒng)性能和開發(fā)效率,而且易于升級換代。
參考文獻
[1] 謝兵,許金彤.基于3G網(wǎng)絡的輸電線路防外力破壞智能視頻監(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)設計實例[M].北京:電子工業(yè)出版社,2007.
[4] 胡繼勝,李洪.基于 SoPC/Nios II 的信號發(fā)生器設計與實現(xiàn)[J]. 電子技術應用,2011,37(6):91-94.
[5] 王盛學,李著信,何平. 基于3G 無線網(wǎng)絡的工業(yè)監(jiān)控系統(tǒng)設計[J].電子技術應用,2011,37(8):75-77,81.

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