湯永鋒,龔云生
(1.華中科技大學 自動化學院,武漢 430074;2.黃石科威自控有限公司)
MT7620A平臺與OpenWRT的WiFi通信系統設計
湯永鋒1,龔云生2
(1.華中科技大學 自動化學院,武漢 430074;2.黃石科威自控有限公司)
主要介紹一種在嵌入式平臺上實現無線通信的方法,實現現場設備間的無線通信,同時,還具備將現場設備接入有線互聯網的功能。在硬件平臺上,本文選擇在聯發科芯片MT7620A上進行嵌入式開發,移植OpenWRT專業路由器系統,基于TCP/IP協議編寫網絡通信應用程序,實現網絡數據到串口數據的透明傳輸。通過實物測試和NS-2平臺無線通信仿真,對通信性能進行驗證,并最后成功應用在現場中。
無線通信;MT7620A;OpenWRT;NS-2仿真
當今世界比較成熟的無線技術主要有WiFi、藍牙、ZigBee等。WiFi具有速度快、覆蓋范圍廣、可靠性高等優勢,在消費電子、PC、移動通信三個領域占據著較大的份額[2];藍牙技術以其低功耗、傳輸距離短等特點在消費電子領域應用較為廣泛;ZigBee因低功耗、低價格等特點,主要應用于傳感器網絡中。
本文主要實現了WiFi技術應用于工業現場設備間的無線通信,基于現場設備的使用特點,開發出了WiFi到RS232/485、WiFi到以太網、以太網到RS323/485之間透明數據傳輸的嵌入式產品,并通過NS-2網絡仿真平臺,選擇最適合的TCP/IP無線通信參數,使得通信的穩定性、可靠性、實時性能夠滿足工業現場的使用。
1.1 硬件平臺
本文采用聯發科MT7620A作為主芯片,該芯片具有580 MHz的MIPS24KEc,32 KB的D-Cache,支持802.11b/g/n協議,300 Mbps的PHY,具有豐富的外設接口,如I2C、SPI、UART、JTAG、MDC、MDIO等,極大地滿足了工業現場的使用,支持WEP64/128、WPA、WPA2等WiFi加密技術,保證了無線通信的安全性,同時具有QoS功能,能夠實現工業現場的視頻傳輸,具有雙路天線接口,保證了良好的無線通信質量。DDR2采用了華邦的W25Q256系列,容量為2 GB,Flash芯片也是采用了華邦的MX25L系列,能夠存儲OpenWRT系統固件。
該芯片的主要系統框圖如圖1所示。

圖1 MT7620A芯片框圖
系統在電路設計中,主要包括處理器電路、DDR2電路、Flash電路、啟動配置電路、電源電路、外設接口電路這幾大部分。OpenWRT操作系統燒寫在Flash中,在上電啟動后,處理器根據啟動配置電路的電平配置,從Flash中讀取系統并在DDR2中運行。硬件系統框圖如圖2所示。

圖2 硬件系統框圖
啟動配置電路主要是在上電初始化階段,通過將相應的引腳配置為高低電平,使得處理器選擇相應的模式啟動。在本系統中,需要將處理器配置為DRAM自動檢測、外部晶振20 MHz、DDR2(CPU/3)FBGA、Normal mode(boot from SPI 3Byte Addr)。
電源電路是保證系統穩定運行的關鍵,提供穩定準確的電源能夠使系統更加穩定地運行。本電源電路采用了33063電源轉換芯片,將工業24 V電源轉換為5 V電源,同時通過AMS1117-3.3和AMS1117-1.8芯片將5 V轉為3.3 V和1.8 V電源。
外設接口電路主要是RS232/485電路、網絡電路、PCIe電路、SD卡電路等。其中RS232/485電路和網絡電路是主要部分。在工業現場中,設備主要是通過串口和網口進行數據傳輸,為此,PCIe電路和SD卡電路只將接口引出來,在需要時再進行外設擴展。
DDR2電路和Flash電路則按照芯片手冊提供的引腳接線圖進行連接,需要注意的是,在MT7620A處理器和DDR之間需要串接47 Ω的電阻,使得系統更加穩定運行。
1.2 操作系統移植
對于MT7620A芯片來說,OpenWRT和雷凌SDK均可以移植,但是從開放性和后期開發這兩個角度來說,OpenWRT更具有優勢。OpenWRT是一個開源社區開發的操作系統,已經支持大部分主流的CPU,目前支持4 000多種開源軟件。現在,越來越多的公司,如小米、360、apfree等,都是用OpenWRT來開發產品,因此本文選擇移植OpenWRT操作系統。
(1) OpenWRT系統簡介
OpenWRT是一個高度模塊化、自動化的嵌入式Linux系統,擁有強大的網絡組件和擴展性,常常被用于工控設備、電話、小型機器人、智能家居、路由器和VOIP設備中。
(2) OpenWRT系統移植步驟
從官網下載OpenWRT源碼之后,按照下面步驟進行系統移植:
① make menuconfig進行源碼基本配置,選擇合適CPU型號和子型號;
② 在源碼配置中,將Luci模塊編譯進內核,從而添加WEB界面;
③ 在源碼中,修改MT7620a.dts文件,添加WiFi功能;
④ 進行make編譯,將生成的內核鏡像通過網口下載至Flash中。
至此,已經基本完成了系統移植,此時,需要在源碼中修改一些配置文件,擴展外設。
該芯片有兩個串口,一個作為調試接口,打印內核信息,而第二串口和GPIO口是復用的,因此需要修改配置文件,將此引腳配置為串口模式,具體是修改target/linux/ramips/dts和target/linux/ramips/MT7620a.dts文件,將該引腳配置為UART功能使用。
在工業現場中,工業設備一般只具有串口、普通網口等接口,為此,網絡通信程序的設計目的是實現有線接口數據(普通以太網、串口)到WiFi的轉發功能。
為了保證無線通信的穩定性與可靠性,采取TCP/IP協議進行程序設計,它與UDP協議不同,UDP協議是一種廣播式的協議,在工業現場中,通信的可靠性得不到保證。而TCP/IP是一種點到點的協議,具有擁塞避免和數據重發機制[3],在一定程度上,既保證了通信速率,又有一定的可靠性。
在Linux嵌入式系統中,可以采用socket編程實現TCP/IP通信程序。在預裝了ubuntu的PC機上,在OpenWRT源碼SDK中,進行socket應用程序的編寫,使用makefile進行文件管理,通過make編譯,可以生成.ipk安裝文件,通過FileZilla工具,將安裝文件拷貝到嵌入式板中,使用opkg install進行安裝,安裝完成后,可以在in目錄下看到安裝完成的應用程序,再在控制臺輸入這個應用程序就可以啟動。
2.1 TCP/IP程序設計

圖4 基本訪問機制
在socket網絡編程中,作為AP端,為了滿足多個客戶端同時連接和通信的需求,需要進行并發程序的設計,為此,需要采用select函數,該函數能夠監測哪些設備有消息到來,同時返回設備的文件描述符。在實現多路并發機制后,還需要讓網絡通信應用程序后臺運行,不占用控制窗口,因此,可以將該應用程序作為守護進程運行,脫離控制終端在后臺運行。

圖3 串口網絡通信流程圖
在應用程序的編寫中,首先使用select函數對設備文件進行監控,當設備有事件發生的時候,獲取該設備文件描述符。當文件描述符為網絡設備時,使用accept連接套接字,并且使用read函數讀取網絡數據,存儲在網絡接收緩存區中,并打開串口設備,將網絡接收數據通過串口設備發送到外部通過串口連接的工業設備中,完成網絡數據到串口數據的轉發。當串口數據到來時,根據同樣的原理,將串口緩存區的數據通過網絡設備發送。程序流程圖如圖3所示。

圖5 RTS/CTS訪問機制
2.2 RTS門限啟動閾值自調節
在IEEE802.11的MAC層中,最基本的媒體訪問控制機制是DCF。DCF最重要的任務就是控制共享同一無線信道的各站點對信道的訪問[6]。DCF有兩種訪問機制:基本訪問機制和RTS/CTS訪問機制。
基本訪問機制是DCF的核心機制,內部采用CSMA/CA機制避免訪問沖突。當站點在DIFS時間段內監測到信道空閑時,會向目的節點發送數據,目的節點若收到數據,會在SIFS后發送ACK,若沒有收到,會執行退避。其工作機制如圖4所示。
RTS/CTS訪問機制工作過程大致是源站點在等待DIFS時間后,會在發送數據之前發送一個請求發送幀RTS,若等待SIFS后收到CTS幀,則此時其他站點會根據RTS和CTS幀的持續時間來設置NAV,從而降低了多個站點同時發送數據的概率。其工作機制如圖5所示。
在無線通信中,系統的歸一化吞吐率會隨著站點數量、報文長度、訪問機制的不同而不同。在相同的幀長條件下,RTS/CTS機制下系統的歸一化吞吐率對站點數量不敏感,隨著站點數量的增加歸一化,吞吐率僅呈緩慢的變化。在基本訪問機制下,系統的歸一化吞吐率隨著站點數量的增加而下降,在長幀下更加明顯[7]。
當節點數量越大,傳輸幀越長時,RTS/CTS機制越占優勢,在不同節點數量下,其RTS啟動門限閾值的變化規律如圖6所示。
根據上述規律,擬合出門限啟動閾值隨節點數量的變化關系曲線,根據此曲線方程,在OpenWRT上編寫腳本,根據接入節點的數量,自動設置RTS啟動閾值,更改無線訪問機制,優化無線通信性能。
在完成網絡通信程序設計之后,需要對網絡通信性能進行實物測試和網絡仿真。首先通過Netperf網絡工具對網絡通信的最大吞吐量和平均時延進行測試,其次采用NS-2網絡仿真平臺對IEEE802.11b性能進行仿真驗證。
3.1 通信性能仿真
這里采用了流行的 NS-2仿真平臺對IEEE802.11b的最大吞吐量和平均時延進行仿真。
NS-2是一個用C++語言編寫,以OTcl解釋器為前臺,面向對象的模擬器,是一種基于Linux的開放源代碼的網絡仿真軟件,具有豐富的網絡仿真組件,目前支持的網絡仿真包括局域網、無線局域網、IP網絡、移動IP網絡、自組織網絡等[4]。

圖6 RTS機制啟動閾值
(1) 最大吞吐量仿真
在對IEEE802.11b進行吞吐量測試之前,首先需要對IEEE802.11b無線參數進行基本的設置,參數設置如表1所列。

表1 IEEE802.11b參數設置
這些參數在嵌入式開發板中都是默認參數,在源碼中有定義。在server端與不同數量的client端進行通信時,對server端的吞吐量進行測試,查看server端的最大吞吐量。這里需要將cbr代理服務器的速率調到11 Mbps。
根據上面的參數進行仿真,得到的仿真結果如圖7所示。

圖7 不同數量下的server端吞吐量
根據仿真結果可以看到,當節點數量N=1時,吞吐量沒有達到最大,這是因為節點資源有閑置,并未測試出最大吞吐量。當節點數量N>5時,其吞吐量基本保持不變,此時可以判斷server端將一直處于通信狀態,測試的吞吐量為最大吞吐量,基本保持在4.25 Mbps。
(2) 網絡延時仿真
在仿真中,將base模式的一對一網絡通信的IEEE802.11無線參數設置如下:
tcp_packetSize=500bytes,cbr_packetSize=500,cbr_rate=200kb,cbr start_time=1
進行測試,測試結果如圖8所示。仿真結果顯示,其網絡通信平均時延為207 μs。

圖8 IEEE802.11b時延仿真圖
3.2 嵌入式板實物通信性能測試
在對嵌入式板進行實物測試時,采取了一種基于OpenWRT操作系統的網絡測試工具Netperf。該網絡工具可以在OpenWRT開源社區進行下載,并且在OpenWRT操作系統進行安裝之后便可以使用,方便快捷。
Netperf是一種網絡性能的測量工具,主要針對基于TCP或者UDP的傳輸,可以根據應用的不同,進行不同模式的網絡性能測試。
Netperf以client/server方式工作,server端是netserver端,用來偵聽來自client端的連接,client端的是netperf,用來向server端發起網絡測試。在server和client端之間,首先建立一個控制連接,傳遞有關測試配置的信息以及測試的結果;在控制連接建立并傳遞測試配置信息之后,client和server之間就會再建立一個測試連接,來回傳遞特殊的流量模式,以及另外一個系統能夠以多快的速度接收數據。
(1) 吞吐量測試
在測試環境為室內,通信距離為1 m,中間無任何障礙物的條件下進行。首先分別在server端和client端安裝netperf:
root@OpenWrt:/# opkg update
root@OpenWrt:/# opkg install netperf
然后在server端運行:
root@OpenWrt:/# netserver
最后在client端運行:
root@OpenWrt:/# netperf -t TCP_STREAM-H 192.168.1.1-l 60-D 10
其中,60為測試時間,10為測試間隔。
最終測試結果如圖9所示。

圖9 吞吐量測試結果
統計發現,實際平均吞吐量為4.41 Mbps。
(2) omni模式測試延遲
同樣,在server端啟動netserver,在cilent端輸入如下命令:
root@OpenWrt:/# netperf -H 192.168.1.1-t TCP_STREAM---d rr-O "THROUGHPUT, THROUGHPUT_UNITS,MIN_LATENCY, MAX_LATENCY, MEAN_LATENCY"
結果輸出如下:
MIGRATED TCP STREAM TEST from 0.0.0.0 () port 0 AF_INET to 192.168.1.1 () port 0 AF_INET : demo Throughput Throughput Minimum Maximum Mean Units Latency Latency Latency Microseconds Microseconds Microseconds 4.56 10^6bits/s 151 429632 26786.78
從輸出結果可以看到,最小延時為151 μs ,最大為429.632 μs,平均為267.87 μs。
通過實物測試和網絡仿真,可以看到實物測試的平均延時時間為267.87 μs,最大吞吐量為4.41 Mbps,網絡仿真的平均延時為207 μs,最大吞吐量為4.25 Mbps,通過對比可以發現,網絡仿真結果和實物測試結果接近,說明在實際應用當中使用WiFi進行TCP/IP無線通信時,只要實時性能要求不超過300 μs,則產品基本能夠滿足使用要求,并且最大吞吐量能夠到達4 Mbps以上,能夠滿足在工業現場的視頻監控需求。
最后,將本產品成功應用在黃石科威PLC現場中,一臺PLC作為主站,一臺作為從站,通過RS485接口與本產品連接,實現兩臺PLC的modbus無線通信。在通信周期為100 ms時,錯誤報文率為5%;為200 ms時,已經低至1%??梢?,該產品能夠滿足一般工業現場的使用。
本文首先在MT7620A處理器上進行了嵌入式系統開發,移植了OpenWRT操作系統,并在此操作系統上進行了網絡通信程序的設計,根據節點數量和報文幀長度自動更改無線訪問機制。通過實物測試和網絡仿真,對最大吞吐量和延時進行測試,最后成功應用在工業現場中,實現了現場設備的無線通信。
[1] 陳建福,王煜.無線通信在自行小車中的應用[J].自動化博覽,2009(9).
[2] 王娟,郭家奇,劉微.WIFI技術的深入探討與研究[J].價值工程,2011(6).
[3] 陸希.無線網絡中TCP擁塞控制協議性能的研究[D].南京:南京郵電大學,2014.
[4] 李平南.基于NS2的多信道路由仿真模型的研究與實現[J].北京:北京郵電大學,2010.
[5] 候維巖,曾磊,張海峰.工業無線測控網絡中WiFi無線終端設計與實現[J].自動化與儀表,2011,36(8):41-44.
[6] 韓?;?IEEE802.11無線網絡MAC層協議性能分析[D].濟南:山東大學,2013.
[7] 高峰.IEEE802.11無線網絡DCF協議性能分析及提升研究[D].北京:北京郵電大學,2010.
湯永鋒(碩士研究生),研究方向為工業無線通信。
WiFi Wireless Communication Based on MT7620A and OpenWRT
Tang Yongfeng1,Gong Yunsheng2
(1.School of Automation,Huazhong University of Science and Technology,Wuhan 430074,China; 2.Huangshi Kewei Automation Control Company)
In the paper,a method of wireless communication is introduced,which can achieve the wireless communication between the devices,and it also can achieve the wired networking.The MT7620A is used as the hardware platform to develop the embedded system.The professional router system of OpenWRT is transported,and the network communication application program is coded based on TCP/IP stack to achieve the data of serial and network transporting transparently.Finally the test simulation on the NS-2 network platform confirm the performance of the communication and it is used in the industry field.
wireless communication;MT7620A;OpenWRT;NS-2 simulation
TP368
A
士然
2017-01-13)