文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)02-0086-03
數(shù)據(jù)的遠(yuǎn)程傳輸是各種數(shù)據(jù)采集與處理系統(tǒng)所必須的,,而那些應(yīng)用于有線網(wǎng)絡(luò)無法覆蓋的場合的設(shè)備就需要使用一種可靠的無線遠(yuǎn)程數(shù)據(jù)傳輸方案來實現(xiàn),。根據(jù)這種遠(yuǎn)程無線數(shù)據(jù)傳輸?shù)奶攸c,可以使用現(xiàn)存的無線通信網(wǎng)來實現(xiàn),。當(dāng)今3G無線通信技術(shù)的發(fā)展和數(shù)據(jù)傳輸速度的不斷提高[1],,為遠(yuǎn)程無線數(shù)據(jù)的實時傳輸提供了可能。另外NiosⅡ是Altera公司推出的第二代IP軟核處理器,它與其他IP核可構(gòu)成SoPC(System on a Programmable Chip)系統(tǒng)的主要部分[2],。SoPC技術(shù)是借助于以計算機為平臺的NiosⅡ開發(fā)工具進(jìn)行開發(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)成
遠(yuǎn)程數(shù)據(jù)傳輸主要為了實現(xiàn)控制系統(tǒng)的遠(yuǎn)程監(jiān)控和遠(yuǎn)程數(shù)據(jù)處理與分析,為了實現(xiàn)遠(yuǎn)程數(shù)據(jù)傳輸?shù)男枨螅粌H需要數(shù)據(jù)采集系統(tǒng)還需要相應(yīng)的遠(yuǎn)程數(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模塊進(jìn)行數(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ìn)行初始化,,根據(jù)實際需求的不同初始化的流程也是不同的,,從而實現(xiàn)的功能也就不同,所以需要根據(jù)遠(yuǎn)程數(shù)據(jù)傳輸?shù)男枨筮M(jìn)行相應(yīng)流程的初始化,。
2.1 3G模塊控制命令的發(fā)送
根據(jù)3G模塊的通信協(xié)議,,得知其控制命令的發(fā)送使用異步串口實現(xiàn),指令形式為ASCII碼字符串,,并且以回車換行為結(jié)束符,。所以在設(shè)計3G模塊命令發(fā)送功能時為了充分提高代碼利用率,只是將AT指令碼進(jìn)行字符串預(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指令進(jìn)行初始化,,而且該模塊還會回送一些相應(yīng)的狀態(tài)字符串來告知主控設(shè)備的當(dāng)前設(shè)備或指令執(zhí)行狀態(tài),如上電時模塊會回送COM_READY和^DEEI: 0狀態(tài)信息,。每個指令發(fā)送后,會送 一個OK以示確認(rèn)接收正確,,并且其每回送一個狀態(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)就會進(jìn)入休眠狀態(tài),,其不再能夠接受AT指令,,從而無法完成3G模塊的初始化等工作。因此讀到 “^DEEI: 0”信息之后,,立即通過串口向其發(fā)送AT指令“T^DSLP=0,0”即可,。為了保證3G模塊的數(shù)據(jù)通信的正確性,使用CRC校驗方式進(jìn)行串口數(shù)據(jù)校驗,,通過發(fā)送“AT+CRC=1”指令開啟3G模塊的CRC校驗功能,。之后完成一系列的上報設(shè)置后,即可進(jìn)入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”與遠(yuǎn)端服務(wù)器xxx.xxx.xxx.xxx端口yyyyy建立連接,,該AT指令的第一個參數(shù)1表示現(xiàn)在是以TCP協(xié)議進(jìn)行連接請求,,如果為數(shù)字2則為以UDP協(xié)議與服務(wù)器進(jìn)行數(shù)據(jù)通信。最后一條指令為數(shù)據(jù)通信開始,,參數(shù)為發(fā)送數(shù)據(jù)長度,,其必須小于4 096。在此之后該3G模塊就按照以上初始化的工作方式進(jìn)行工作,,所有通過串口連續(xù)送往該模塊的數(shù)據(jù)都將被3G模塊以TCP(或UDP)方式進(jìn)行數(shù)據(jù)發(fā)送,,不再接收AT指令。值得注意的是在此情況下如何退出數(shù)據(jù)發(fā)送模式返回AT指令接收模式,。當(dāng)用于接收數(shù)據(jù)的通信接口(串口)超過100 ms沒有收到任何字節(jié)且之后連續(xù)收3個“+”字符(即“+++”字符串)時,,其退出數(shù)據(jù)傳輸模式,進(jìn)入AT指令模式,。
3 數(shù)據(jù)發(fā)送與接收實現(xiàn)
在完成了3G模塊的初始化,,進(jìn)入數(shù)據(jù)傳輸模式后,,即可開始使用3G模塊進(jìn)行應(yīng)用層數(shù)據(jù)通信。要想完成應(yīng)用層數(shù)據(jù)通信,,還必須制定相應(yīng)的應(yīng)用層通信協(xié)議,,在客戶端系統(tǒng)上編寫數(shù)據(jù)收發(fā)程序使用制定的相應(yīng)應(yīng)用層協(xié)議進(jìn)行數(shù)據(jù)收發(fā),同時在服務(wù)器端同樣必須編寫相應(yīng)的通信和處理程序完成對客戶端的數(shù)據(jù)收發(fā)和處理(包括顯示和指示),。下面使用電力系統(tǒng)數(shù)據(jù)采集的應(yīng)用背景對這三方面進(jìn)行介紹,。
3.1 應(yīng)用層數(shù)據(jù)通信協(xié)議
應(yīng)用層數(shù)據(jù)傳輸,主要應(yīng)該定義相應(yīng)的包格式,根據(jù)不同的包格式進(jìn)行不同的數(shù)據(jù)傳輸和數(shù)據(jù)應(yīng)用,。接收端根據(jù)接收的不同數(shù)據(jù)包進(jìn)行不同的數(shù)據(jù)處理和功能控制,。數(shù)據(jù)包主要可以分為先好協(xié)調(diào)包、指令包和應(yīng)用數(shù)據(jù)包,。每個包中定義相應(yīng)的包類型字段,、包長度字段、包內(nèi)容字段,、包校驗字段以及包尾標(biāo)志,。包內(nèi)容字段長度因不同的包類型不同,還可以細(xì)分不同的子字段,。本文設(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(jìn)行用戶用電設(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語言進(jìn)行編程,,完成數(shù)據(jù)收發(fā),。數(shù)據(jù)發(fā)送的過程如圖4所示。3G模塊作為數(shù)據(jù)傳輸終端,,通過串口與NiosII系統(tǒng)進(jìn)行數(shù)據(jù)交換,。NiosII系統(tǒng)中的程序主要是針對串口的數(shù)據(jù)收發(fā)設(shè)計的。電力參數(shù)有很多,,有基本的電壓,、電流、相位,、功率等基本信息,,也有諧波、簡諧波和實時波形數(shù)據(jù)等細(xì)節(jié)信息,。信息數(shù)據(jù)有整數(shù)類型也有實數(shù)類型,。本文在數(shù)據(jù)傳輸時統(tǒng)一使用同一種數(shù)據(jù)格式,,即16位整數(shù)形式進(jìn)行傳輸,因此需要進(jìn)行實數(shù)/整數(shù)轉(zhuǎn)換,。在數(shù)據(jù)發(fā)送之前NiosII系統(tǒng)首先需要從存儲器中讀取數(shù)據(jù)采集系統(tǒng)采集到的電力參數(shù)數(shù)據(jù),,之后將讀取到的參數(shù)數(shù)據(jù)根據(jù)不同類型進(jìn)行數(shù)據(jù)拆分和數(shù)據(jù)轉(zhuǎn)換,再根據(jù)應(yīng)用層協(xié)議進(jìn)行數(shù)據(jù)封包,。最后根據(jù)當(dāng)前服務(wù)器請求狀態(tài)進(jìn)行數(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)進(jìn)行數(shù)據(jù)讀取,,之后根據(jù)應(yīng)用層數(shù)據(jù)通信協(xié)議進(jìn)行解包和功能識別與應(yīng)用。
3.3 遠(yuǎn)程終端數(shù)據(jù)收發(fā)
遠(yuǎn)程終端即服務(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ù)器端進(jìn)行數(shù)據(jù)實時交換,、顯示和存儲。如果系統(tǒng)需要實時保存每個設(shè)備終端的電力參數(shù),,在建立連接之后即開始數(shù)據(jù)傳輸,,界面操作只是進(jìn)行顯示切換。不過由于電力參數(shù)多,,如果用戶設(shè)備終端較多,,則系統(tǒng)服務(wù)器壓力會比較大。服務(wù)器端應(yīng)用程序可以根據(jù)不同的應(yīng)用需求進(jìn)行具體設(shè)計,,實現(xiàn)具體功能,。圖5是實現(xiàn)的電力參數(shù)數(shù)據(jù)遠(yuǎn)程采集系統(tǒng)的一個原型系統(tǒng)軟件界面。包括文本數(shù)據(jù)信息的顯示,,圖形矢量信息和波形信息的顯示,,同時包括各種與電力參數(shù)相關(guān)的功能界面以及參數(shù)設(shè)置和控制界面。有效地實現(xiàn)了供電或大功率用電場合的供電參數(shù)采集及遠(yuǎn)程監(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模塊的遠(yuǎn)程數(shù)據(jù)傳輸功能,。設(shè)計中,針對3G模塊的特點設(shè)計數(shù)據(jù)收發(fā)程序、模塊初始化程序和數(shù)據(jù)應(yīng)用層通信協(xié)議,,為系統(tǒng)的遠(yuǎn)程數(shù)據(jù)傳輸?shù)膶崿F(xiàn)提供了一種相對通用的方法,,易于實現(xiàn)各種遠(yuǎ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ā)效率,而且易于升級換代,。
參考文獻(xiàn)
[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.