?

基于NiosII和3G無線網絡的遠程數據傳輸系統*

2013-02-06 06:00戴峻峰
電子技術應用 2013年2期
關鍵詞:應用層服務器端串口

戴峻峰

(淮陰工學院 計算機工程學院,江蘇 淮安 223003)

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

1 硬件系統構成

遠程數據傳輸主要為了實現控制系統的遠程監控和遠程數據處理與分析,為了實現遠程數據傳輸的需求,不僅需要數據采集系統還需要相應的遠程數據傳輸通信系統的支持。本設計使用FPGA芯片作為主控芯片,在其中使用SoPC技術構建一個NiosⅡ微處理器作為控制器完成數據傳輸控制。由3G無線數據傳輸模塊完成無線數據傳輸,由于模塊的接口為RS232協議接口[5],所以在NiosⅡ微處理和3G無線數據傳輸模塊之間需要在FPGA芯片上設計滿足3G無線數據傳輸模塊協議要求的UART接口電路,再結合RS232協議電平轉換電路即可實現兩者之間的電氣連接。

1.1 Nios II系統資源的構建

運用SoPC Builder工具,在系統中通過IP核,分別使 用 NiosII Processor、On-Chip Memory(RAM or ROM)、Avalon-MM TristateBridge、JTAG UART、Flash Memory(CFI)和SDRAM Controler核構建以上資源。根據外圍接口的具體存儲器型號選擇Flash Memory(CFI)和SDRAM Controler的具體參數。

1.2 3G模塊接口電路的構建

該部分電路同樣使用軟核的方式在同一片FPGA中實現。電路構成如圖1所示。

圖1 3G模塊接口電路構成

如圖1,在FPGA芯片上使用UART軟核構造一個同時包括RTS和CTS信號的異步串行口。UART1的UART_RXD和UART_TXD為與3G模塊進行數據傳輸的數據接收和數據發送引腳,引腳UART_RTS在發送數據前輸出有效信號(低電平),請求數據發送給3G模塊,3G模塊通過UART_CTS應答控制器允許其發送數據或命令,完成數據發送的握手,同時UART_CTS信號還可以用于檢測3G模塊是否在線。

2 3G模塊初始化實現

3G數據傳輸模塊是3G無線通信網的一個調制解調器,上電后需要對其進行初始化,根據實際需求的不同初始化的流程也是不同的,從而實現的功能也就不同,所以需要根據遠程數據傳輸的需求進行相應流程的初始化。

2.1 3G模塊控制命令的發送

根據3G模塊的通信協議,得知其控制命令的發送使用異步串口實現,指令形式為ASCII碼字符串,并且以回車換行為結束符。所以在設計3G模塊命令發送功能時為了充分提高代碼利用率,只是將AT指令碼進行字符串預處理,即在原有AT指令的字符串后增加“ ”和“ ”兩個字符構成AT指令命令字符串。發送使用通用的串口數據發送函數實現,該函數原型為void Uart1_send_n(unsigned char*ptr,unsigned char n)。模塊在上電初始化過程中不但需要使用AT指令進行初始化,而且該模塊還會回送一些相應的狀態字符串來告知主控設備的當前設備或指令執行狀態,如上電時模塊會回送COM_READY和^DEEI:0狀態信息。每個指令發送后,會送 一個OK以示確認接收正確,并且其每回送一個狀態字符串其前后都含有回車換行“ ”和“ ”兩個字符。所以根據該特點設計了3G模塊命令回送碼讀函數void G3readCommand(unchar*cm),該函數指令流程如圖2所示。該函數每次執行都讀取一個夾在兩對回車換行之間的一個字符串。

圖2 3G模塊命令回送碼讀程序流程

2.2 3G模塊初始化過程

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

圖3 3G模塊初始化流程

系統上電,在完成串口的初始化后,開始3G模塊的初始化。由于系統剛上電,3G模塊可能還沒有啟動成功,所以需要通過串口讀取其上傳的狀態信息。當3G模塊上電啟動后可以接受AT指令時,它將上傳兩條狀態信息,分別是“COM_READY”和 “^DEEI:0”,所以當系統讀到 “^DEEI:0”信息時才可以向 3G模塊發送指令,開始對其初始化。首先需要取消3G模塊的自動休眠,而且要及時取消,否則其上電啟動后幾秒鐘之內就會進入休眠狀態,其不再能夠接受AT指令,從而無法完成3G模塊的初始化等工作。因此讀到 “^DEEI:0”信息之后,立即通過串口向其發送 AT指令 “T^DSLP=0,0”即可。為了保證3G模塊的數據通信的正確性,使用CRC校驗方式進行串口數據校驗,通過發送“AT+CRC=1”指令開啟3G模塊的CRC校驗功能。之后完成一系列的上報設置后,即可進入3G模塊的開機設置。開機設置主要使用 AT 指令“AT+CFUN=5”、“AT+CFUN=1”和“AT+COPS=0”完成SIM卡和協議棧的激活,以及網絡的注冊。在注冊了網絡之后,使用指令“AT+CGDCONT=1,"IP","CMNET",,0,0”設置網絡服務模式為 CMNET,為后續的數據服務做準備。下面依次使用相應的AT指令完成向網絡申請下載上傳的帶寬、激活TCP/IP應用任務和撥號的工作。最后使用“AT^DIPSTART=1,xxx.xxx.xxx.xxx,yyyyy”與遠端服務器xxx.xxx.xxx.xxx端口yyyyy建立連接,該AT指令的第一個參數1表示現在是以TCP協議進行連接請求,如果為數字2則為以UDP協議與服務器進行數據通信。最后一條指令為數據通信開始,參數為發送數據長度,其必須小于4 096。在此之后該3G模塊就按照以上初始化的工作方式進行工作,所有通過串口連續送往該模塊的數據都將被3G模塊以 TCP(或 UDP)方式進行數據發送,不再接收 AT指令。值得注意的是在此情況下如何退出數據發送模式返回AT指令接收模式。當用于接收數據的通信接口(串口)超過100 ms沒有收到任何字節且之后連續收3個“+”字符(即“+++”字符串)時,其退出數據傳輸模式,進入AT指令模式。

3 數據發送與接收實現

在完成了3G模塊的初始化,進入數據傳輸模式后,即可開始使用3G模塊進行應用層數據通信。要想完成應用層數據通信,還必須制定相應的應用層通信協議,在客戶端系統上編寫數據收發程序使用制定的相應應用層協議進行數據收發,同時在服務器端同樣必須編寫相應的通信和處理程序完成對客戶端的數據收發和處理(包括顯示和指示)。下面使用電力系統數據采集的應用背景對這三方面進行介紹。

3.1 應用層數據通信協議

應用層數據傳輸,主要應該定義相應的包格式,根據不同的包格式進行不同的數據傳輸和數據應用。接收端根據接收的不同數據包進行不同的數據處理和功能控制。數據包主要可以分為先好協調包、指令包和應用數據包。每個包中定義相應的包類型字段、包長度字段、包內容字段、包校驗字段以及包尾標志。包內容字段長度因不同的包類型不同,還可以細分不同的子字段。本文設計的電力系統參數采集裝置的協調包主要完成客戶端(NiosII系統端)與服務器端數據發送與接收的協調調度工作,包括客戶端的IP地址的獲取,客戶端數據發送的輪詢協調等。指令包主要實現客戶端控制,客戶端根據服務器傳輸的不同控制指令進行用戶用電設備的電能供給和報警控制等。數據傳輸主要實現客戶端監測的數據的上傳和服務器對客戶端的運行參數的配置。

3.2 NiosII系統數據收發

圖4 NiosII系統數據發送流程

在NiosII系統中,根據應用層數據通信協議和3G數據傳輸的特點,使用C語言進行編程,完成數據收發。數據發送的過程如圖4所示。3G模塊作為數據傳輸終端,通過串口與NiosII系統進行數據交換。NiosII系統中的程序主要是針對串口的數據收發設計的。電力參數有很多,有基本的電壓、電流、相位、功率等基本信息,也有諧波、簡諧波和實時波形數據等細節信息。信息數據有整數類型也有實數類型。本文在數據傳輸時統一使用同一種數據格式,即16位整數形式進行傳輸,因此需要進行實數/整數轉換。在數據發送之前NiosII系統首先需要從存儲器中讀取數據采集系統采集到的電力參數數據,之后將讀取到的參數數據根據不同類型進行數據拆分和數據轉換,再根據應用層協議進行數據封包。最后根據當前服務器請求狀態進行數據發送。數據包的發送使用串口數據發送函數void Uart_send_n(SramBuf,num)實現,其第一個參數為協議數據包存儲地址,第二個參數為協議數據包總字節數。NiosII系統中的3G數據接收使用中斷方式實現,當系統中接收到3G模塊發送過來的串口數據時,中斷系統自動響應并調用void Uart_ISR(void*context)進行數據讀取,之后根據應用層數據通信協議進行解包和功能識別與應用。

3.3 遠程終端數據收發

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

圖5 服務器端應用程序界面

本3G無線網絡數據傳輸系統使用SoPC技術在FPGA上建立一NiosII處理器,根據3G無線網絡數據傳輸應用的需要設計NiosII控制程序,實現了通過3G模塊的遠程數據傳輸功能。設計中,針對3G模塊的特點設計數據收發程序、模塊初始化程序和數據應用層通信協議,為系統的遠程數據傳輸的實現提供了一種相對通用的方法,易于實現各種遠程數據傳輸的應用系統開發。本系統通過實地試驗證明系統結構合理,實現靈活,充分滿足實際需求,系統運行穩定。Nios II處理器作為本接口電路的主控芯片,既簡化了程序設計,又提高了系統性能和開發效率,而且易于升級換代。

[1]謝兵,許金彤.基于3G網絡的輸電線路防外力破壞智能視頻監控系統研究[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數字系統設計實例[M].北京:電子工業出版社,2007.

[4]胡繼勝,李洪.基于 SoPC/Nios II的信號發生器設計與實現[J].電子技術應用,2011,37(6):91-94.

[5]王盛學,李著信,何平.基于 3G無線網絡的工業監控系統設計[J].電子技術應用,2011,37(8):75-77,81.

猜你喜歡
應用層服務器端串口
淺談AB PLC串口跟RFID傳感器的通訊應用
Linux環境下基于Socket的數據傳輸軟件設計
基于分級保護的OA系統應用層訪問控制研究
基于Qt的安全即時通訊軟件服務器端設計
基于Qt的網絡聊天軟件服務器端設計
新一代雙向互動電力線通信技術的應用層協議研究
數字電源內部數據傳輸的串口通信方法實現
USB接口的多串口數據并行接收方法探索
串口技術的實物調試和虛擬仿真聯合教學模式
物聯網技術在信息機房制冷系統中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合