湯永鋒,龔云生
(1.華中科技大學(xué) 自動化學(xué)院,武漢 430074;2.黃石科威自控有限公司)
MT7620A平臺與OpenWRT的WiFi通信系統(tǒng)設(shè)計(jì)
湯永鋒1,龔云生2
(1.華中科技大學(xué) 自動化學(xué)院,武漢 430074;2.黃石科威自控有限公司)
主要介紹一種在嵌入式平臺上實(shí)現(xiàn)無線通信的方法,實(shí)現(xiàn)現(xiàn)場設(shè)備間的無線通信,同時,還具備將現(xiàn)場設(shè)備接入有線互聯(lián)網(wǎng)的功能。在硬件平臺上,本文選擇在聯(lián)發(fā)科芯片MT7620A上進(jìn)行嵌入式開發(fā),移植OpenWRT專業(yè)路由器系統(tǒng),基于TCP/IP協(xié)議編寫網(wǎng)絡(luò)通信應(yīng)用程序,實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)到串口數(shù)據(jù)的透明傳輸。通過實(shí)物測試和NS-2平臺無線通信仿真,對通信性能進(jìn)行驗(yàn)證,并最后成功應(yīng)用在現(xiàn)場中。
無線通信;MT7620A;OpenWRT;NS-2仿真
當(dāng)今世界比較成熟的無線技術(shù)主要有WiFi、藍(lán)牙、ZigBee等。WiFi具有速度快、覆蓋范圍廣、可靠性高等優(yōu)勢,在消費(fèi)電子、PC、移動通信三個領(lǐng)域占據(jù)著較大的份額[2];藍(lán)牙技術(shù)以其低功耗、傳輸距離短等特點(diǎn)在消費(fèi)電子領(lǐng)域應(yīng)用較為廣泛;ZigBee因低功耗、低價(jià)格等特點(diǎn),主要應(yīng)用于傳感器網(wǎng)絡(luò)中。
本文主要實(shí)現(xiàn)了WiFi技術(shù)應(yīng)用于工業(yè)現(xiàn)場設(shè)備間的無線通信,基于現(xiàn)場設(shè)備的使用特點(diǎn),開發(fā)出了WiFi到RS232/485、WiFi到以太網(wǎng)、以太網(wǎng)到RS323/485之間透明數(shù)據(jù)傳輸?shù)那度胧疆a(chǎn)品,并通過NS-2網(wǎng)絡(luò)仿真平臺,選擇最適合的TCP/IP無線通信參數(shù),使得通信的穩(wěn)定性、可靠性、實(shí)時性能夠滿足工業(yè)現(xiàn)場的使用。
1.1 硬件平臺
本文采用聯(lián)發(fā)科MT7620A作為主芯片,該芯片具有580 MHz的MIPS24KEc,32 KB的D-Cache,支持802.11b/g/n協(xié)議,300 Mbps的PHY,具有豐富的外設(shè)接口,如I2C、SPI、UART、JTAG、MDC、MDIO等,極大地滿足了工業(yè)現(xiàn)場的使用,支持WEP64/128、WPA、WPA2等WiFi加密技術(shù),保證了無線通信的安全性,同時具有QoS功能,能夠?qū)崿F(xiàn)工業(yè)現(xiàn)場的視頻傳輸,具有雙路天線接口,保證了良好的無線通信質(zhì)量。DDR2采用了華邦的W25Q256系列,容量為2 GB,F(xiàn)lash芯片也是采用了華邦的MX25L系列,能夠存儲OpenWRT系統(tǒng)固件。
該芯片的主要系統(tǒng)框圖如圖1所示。
圖1 MT7620A芯片框圖
系統(tǒng)在電路設(shè)計(jì)中,主要包括處理器電路、DDR2電路、Flash電路、啟動配置電路、電源電路、外設(shè)接口電路這幾大部分。OpenWRT操作系統(tǒng)燒寫在Flash中,在上電啟動后,處理器根據(jù)啟動配置電路的電平配置,從Flash中讀取系統(tǒng)并在DDR2中運(yùn)行。硬件系統(tǒng)框圖如圖2所示。
圖2 硬件系統(tǒng)框圖
啟動配置電路主要是在上電初始化階段,通過將相應(yīng)的引腳配置為高低電平,使得處理器選擇相應(yīng)的模式啟動。在本系統(tǒng)中,需要將處理器配置為DRAM自動檢測、外部晶振20 MHz、DDR2(CPU/3)FBGA、Normal mode(boot from SPI 3Byte Addr)。
電源電路是保證系統(tǒng)穩(wěn)定運(yùn)行的關(guān)鍵,提供穩(wěn)定準(zhǔn)確的電源能夠使系統(tǒng)更加穩(wěn)定地運(yùn)行。本電源電路采用了33063電源轉(zhuǎn)換芯片,將工業(yè)24 V電源轉(zhuǎn)換為5 V電源,同時通過AMS1117-3.3和AMS1117-1.8芯片將5 V轉(zhuǎn)為3.3 V和1.8 V電源。
外設(shè)接口電路主要是RS232/485電路、網(wǎng)絡(luò)電路、PCIe電路、SD卡電路等。其中RS232/485電路和網(wǎng)絡(luò)電路是主要部分。在工業(yè)現(xiàn)場中,設(shè)備主要是通過串口和網(wǎng)口進(jìn)行數(shù)據(jù)傳輸,為此,PCIe電路和SD卡電路只將接口引出來,在需要時再進(jìn)行外設(shè)擴(kuò)展。
DDR2電路和Flash電路則按照芯片手冊提供的引腳接線圖進(jìn)行連接,需要注意的是,在MT7620A處理器和DDR之間需要串接47 Ω的電阻,使得系統(tǒng)更加穩(wěn)定運(yùn)行。
1.2 操作系統(tǒng)移植
對于MT7620A芯片來說,OpenWRT和雷凌SDK均可以移植,但是從開放性和后期開發(fā)這兩個角度來說,OpenWRT更具有優(yōu)勢。OpenWRT是一個開源社區(qū)開發(fā)的操作系統(tǒng),已經(jīng)支持大部分主流的CPU,目前支持4 000多種開源軟件?,F(xiàn)在,越來越多的公司,如小米、360、apfree等,都是用OpenWRT來開發(fā)產(chǎn)品,因此本文選擇移植OpenWRT操作系統(tǒng)。
(1) OpenWRT系統(tǒng)簡介
OpenWRT是一個高度模塊化、自動化的嵌入式Linux系統(tǒng),擁有強(qiáng)大的網(wǎng)絡(luò)組件和擴(kuò)展性,常常被用于工控設(shè)備、電話、小型機(jī)器人、智能家居、路由器和VOIP設(shè)備中。
(2) OpenWRT系統(tǒng)移植步驟
從官網(wǎng)下載OpenWRT源碼之后,按照下面步驟進(jìn)行系統(tǒng)移植:
① make menuconfig進(jìn)行源碼基本配置,選擇合適CPU型號和子型號;
② 在源碼配置中,將Luci模塊編譯進(jìn)內(nèi)核,從而添加WEB界面;
③ 在源碼中,修改MT7620a.dts文件,添加WiFi功能;
④ 進(jìn)行make編譯,將生成的內(nèi)核鏡像通過網(wǎng)口下載至Flash中。
至此,已經(jīng)基本完成了系統(tǒng)移植,此時,需要在源碼中修改一些配置文件,擴(kuò)展外設(shè)。
該芯片有兩個串口,一個作為調(diào)試接口,打印內(nèi)核信息,而第二串口和GPIO口是復(fù)用的,因此需要修改配置文件,將此引腳配置為串口模式,具體是修改target/linux/ramips/dts和target/linux/ramips/MT7620a.dts文件,將該引腳配置為UART功能使用。
在工業(yè)現(xiàn)場中,工業(yè)設(shè)備一般只具有串口、普通網(wǎng)口等接口,為此,網(wǎng)絡(luò)通信程序的設(shè)計(jì)目的是實(shí)現(xiàn)有線接口數(shù)據(jù)(普通以太網(wǎng)、串口)到WiFi的轉(zhuǎn)發(fā)功能。
為了保證無線通信的穩(wěn)定性與可靠性,采取TCP/IP協(xié)議進(jìn)行程序設(shè)計(jì),它與UDP協(xié)議不同,UDP協(xié)議是一種廣播式的協(xié)議,在工業(yè)現(xiàn)場中,通信的可靠性得不到保證。而TCP/IP是一種點(diǎn)到點(diǎn)的協(xié)議,具有擁塞避免和數(shù)據(jù)重發(fā)機(jī)制[3],在一定程度上,既保證了通信速率,又有一定的可靠性。
在Linux嵌入式系統(tǒng)中,可以采用socket編程實(shí)現(xiàn)TCP/IP通信程序。在預(yù)裝了ubuntu的PC機(jī)上,在OpenWRT源碼SDK中,進(jìn)行socket應(yīng)用程序的編寫,使用makefile進(jìn)行文件管理,通過make編譯,可以生成.ipk安裝文件,通過FileZilla工具,將安裝文件拷貝到嵌入式板中,使用opkg install進(jìn)行安裝,安裝完成后,可以在in目錄下看到安裝完成的應(yīng)用程序,再在控制臺輸入這個應(yīng)用程序就可以啟動。
2.1 TCP/IP程序設(shè)計(jì)
圖4 基本訪問機(jī)制
在socket網(wǎng)絡(luò)編程中,作為AP端,為了滿足多個客戶端同時連接和通信的需求,需要進(jìn)行并發(fā)程序的設(shè)計(jì),為此,需要采用select函數(shù),該函數(shù)能夠監(jiān)測哪些設(shè)備有消息到來,同時返回設(shè)備的文件描述符。在實(shí)現(xiàn)多路并發(fā)機(jī)制后,還需要讓網(wǎng)絡(luò)通信應(yīng)用程序后臺運(yùn)行,不占用控制窗口,因此,可以將該應(yīng)用程序作為守護(hù)進(jìn)程運(yùn)行,脫離控制終端在后臺運(yùn)行。
圖3 串口網(wǎng)絡(luò)通信流程圖
在應(yīng)用程序的編寫中,首先使用select函數(shù)對設(shè)備文件進(jìn)行監(jiān)控,當(dāng)設(shè)備有事件發(fā)生的時候,獲取該設(shè)備文件描述符。當(dāng)文件描述符為網(wǎng)絡(luò)設(shè)備時,使用accept連接套接字,并且使用read函數(shù)讀取網(wǎng)絡(luò)數(shù)據(jù),存儲在網(wǎng)絡(luò)接收緩存區(qū)中,并打開串口設(shè)備,將網(wǎng)絡(luò)接收數(shù)據(jù)通過串口設(shè)備發(fā)送到外部通過串口連接的工業(yè)設(shè)備中,完成網(wǎng)絡(luò)數(shù)據(jù)到串口數(shù)據(jù)的轉(zhuǎn)發(fā)。當(dāng)串口數(shù)據(jù)到來時,根據(jù)同樣的原理,將串口緩存區(qū)的數(shù)據(jù)通過網(wǎng)絡(luò)設(shè)備發(fā)送。程序流程圖如圖3所示。
圖5 RTS/CTS訪問機(jī)制
2.2 RTS門限啟動閾值自調(diào)節(jié)
在IEEE802.11的MAC層中,最基本的媒體訪問控制機(jī)制是DCF。DCF最重要的任務(wù)就是控制共享同一無線信道的各站點(diǎn)對信道的訪問[6]。DCF有兩種訪問機(jī)制:基本訪問機(jī)制和RTS/CTS訪問機(jī)制。
基本訪問機(jī)制是DCF的核心機(jī)制,內(nèi)部采用CSMA/CA機(jī)制避免訪問沖突。當(dāng)站點(diǎn)在DIFS時間段內(nèi)監(jiān)測到信道空閑時,會向目的節(jié)點(diǎn)發(fā)送數(shù)據(jù),目的節(jié)點(diǎn)若收到數(shù)據(jù),會在SIFS后發(fā)送ACK,若沒有收到,會執(zhí)行退避。其工作機(jī)制如圖4所示。
RTS/CTS訪問機(jī)制工作過程大致是源站點(diǎn)在等待DIFS時間后,會在發(fā)送數(shù)據(jù)之前發(fā)送一個請求發(fā)送幀RTS,若等待SIFS后收到CTS幀,則此時其他站點(diǎn)會根據(jù)RTS和CTS幀的持續(xù)時間來設(shè)置NAV,從而降低了多個站點(diǎn)同時發(fā)送數(shù)據(jù)的概率。其工作機(jī)制如圖5所示。
在無線通信中,系統(tǒng)的歸一化吞吐率會隨著站點(diǎn)數(shù)量、報(bào)文長度、訪問機(jī)制的不同而不同。在相同的幀長條件下,RTS/CTS機(jī)制下系統(tǒng)的歸一化吞吐率對站點(diǎn)數(shù)量不敏感,隨著站點(diǎn)數(shù)量的增加歸一化,吞吐率僅呈緩慢的變化。在基本訪問機(jī)制下,系統(tǒng)的歸一化吞吐率隨著站點(diǎn)數(shù)量的增加而下降,在長幀下更加明顯[7]。
當(dāng)節(jié)點(diǎn)數(shù)量越大,傳輸幀越長時,RTS/CTS機(jī)制越占優(yōu)勢,在不同節(jié)點(diǎn)數(shù)量下,其RTS啟動門限閾值的變化規(guī)律如圖6所示。
根據(jù)上述規(guī)律,擬合出門限啟動閾值隨節(jié)點(diǎn)數(shù)量的變化關(guān)系曲線,根據(jù)此曲線方程,在OpenWRT上編寫腳本,根據(jù)接入節(jié)點(diǎn)的數(shù)量,自動設(shè)置RTS啟動閾值,更改無線訪問機(jī)制,優(yōu)化無線通信性能。
在完成網(wǎng)絡(luò)通信程序設(shè)計(jì)之后,需要對網(wǎng)絡(luò)通信性能進(jìn)行實(shí)物測試和網(wǎng)絡(luò)仿真。首先通過Netperf網(wǎng)絡(luò)工具對網(wǎng)絡(luò)通信的最大吞吐量和平均時延進(jìn)行測試,其次采用NS-2網(wǎng)絡(luò)仿真平臺對IEEE802.11b性能進(jìn)行仿真驗(yàn)證。
3.1 通信性能仿真
這里采用了流行的 NS-2仿真平臺對IEEE802.11b的最大吞吐量和平均時延進(jìn)行仿真。
NS-2是一個用C++語言編寫,以O(shè)Tcl解釋器為前臺,面向?qū)ο蟮哪M器,是一種基于Linux的開放源代碼的網(wǎng)絡(luò)仿真軟件,具有豐富的網(wǎng)絡(luò)仿真組件,目前支持的網(wǎng)絡(luò)仿真包括局域網(wǎng)、無線局域網(wǎng)、IP網(wǎng)絡(luò)、移動IP網(wǎng)絡(luò)、自組織網(wǎng)絡(luò)等[4]。
圖6 RTS機(jī)制啟動閾值
(1) 最大吞吐量仿真
在對IEEE802.11b進(jìn)行吞吐量測試之前,首先需要對IEEE802.11b無線參數(shù)進(jìn)行基本的設(shè)置,參數(shù)設(shè)置如表1所列。
表1 IEEE802.11b參數(shù)設(shè)置
這些參數(shù)在嵌入式開發(fā)板中都是默認(rèn)參數(shù),在源碼中有定義。在server端與不同數(shù)量的client端進(jìn)行通信時,對server端的吞吐量進(jìn)行測試,查看server端的最大吞吐量。這里需要將cbr代理服務(wù)器的速率調(diào)到11 Mbps。
根據(jù)上面的參數(shù)進(jìn)行仿真,得到的仿真結(jié)果如圖7所示。
圖7 不同數(shù)量下的server端吞吐量
根據(jù)仿真結(jié)果可以看到,當(dāng)節(jié)點(diǎn)數(shù)量N=1時,吞吐量沒有達(dá)到最大,這是因?yàn)楣?jié)點(diǎn)資源有閑置,并未測試出最大吞吐量。當(dāng)節(jié)點(diǎn)數(shù)量N>5時,其吞吐量基本保持不變,此時可以判斷server端將一直處于通信狀態(tài),測試的吞吐量為最大吞吐量,基本保持在4.25 Mbps。
(2) 網(wǎng)絡(luò)延時仿真
在仿真中,將base模式的一對一網(wǎng)絡(luò)通信的IEEE802.11無線參數(shù)設(shè)置如下:
tcp_packetSize=500bytes,cbr_packetSize=500,cbr_rate=200kb,cbr start_time=1
進(jìn)行測試,測試結(jié)果如圖8所示。仿真結(jié)果顯示,其網(wǎng)絡(luò)通信平均時延為207 μs。
圖8 IEEE802.11b時延仿真圖
3.2 嵌入式板實(shí)物通信性能測試
在對嵌入式板進(jìn)行實(shí)物測試時,采取了一種基于OpenWRT操作系統(tǒng)的網(wǎng)絡(luò)測試工具Netperf。該網(wǎng)絡(luò)工具可以在OpenWRT開源社區(qū)進(jìn)行下載,并且在OpenWRT操作系統(tǒng)進(jìn)行安裝之后便可以使用,方便快捷。
Netperf是一種網(wǎng)絡(luò)性能的測量工具,主要針對基于TCP或者UDP的傳輸,可以根據(jù)應(yīng)用的不同,進(jìn)行不同模式的網(wǎng)絡(luò)性能測試。
Netperf以client/server方式工作,server端是netserver端,用來偵聽來自client端的連接,client端的是netperf,用來向server端發(fā)起網(wǎng)絡(luò)測試。在server和client端之間,首先建立一個控制連接,傳遞有關(guān)測試配置的信息以及測試的結(jié)果;在控制連接建立并傳遞測試配置信息之后,client和server之間就會再建立一個測試連接,來回傳遞特殊的流量模式,以及另外一個系統(tǒng)能夠以多快的速度接收數(shù)據(jù)。
(1) 吞吐量測試
在測試環(huán)境為室內(nèi),通信距離為1 m,中間無任何障礙物的條件下進(jìn)行。首先分別在server端和client端安裝netperf:
root@OpenWrt:/# opkg update
root@OpenWrt:/# opkg install netperf
然后在server端運(yùn)行:
root@OpenWrt:/# netserver
最后在client端運(yùn)行:
root@OpenWrt:/# netperf -t TCP_STREAM-H 192.168.1.1-l 60-D 10
其中,60為測試時間,10為測試間隔。
最終測試結(jié)果如圖9所示。
圖9 吞吐量測試結(jié)果
統(tǒng)計(jì)發(fā)現(xiàn),實(shí)際平均吞吐量為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"
結(jié)果輸出如下:
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
從輸出結(jié)果可以看到,最小延時為151 μs ,最大為429.632 μs,平均為267.87 μs。
通過實(shí)物測試和網(wǎng)絡(luò)仿真,可以看到實(shí)物測試的平均延時時間為267.87 μs,最大吞吐量為4.41 Mbps,網(wǎng)絡(luò)仿真的平均延時為207 μs,最大吞吐量為4.25 Mbps,通過對比可以發(fā)現(xiàn),網(wǎng)絡(luò)仿真結(jié)果和實(shí)物測試結(jié)果接近,說明在實(shí)際應(yīng)用當(dāng)中使用WiFi進(jìn)行TCP/IP無線通信時,只要實(shí)時性能要求不超過300 μs,則產(chǎn)品基本能夠滿足使用要求,并且最大吞吐量能夠到達(dá)4 Mbps以上,能夠滿足在工業(yè)現(xiàn)場的視頻監(jiān)控需求。
最后,將本產(chǎn)品成功應(yīng)用在黃石科威PLC現(xiàn)場中,一臺PLC作為主站,一臺作為從站,通過RS485接口與本產(chǎn)品連接,實(shí)現(xiàn)兩臺PLC的modbus無線通信。在通信周期為100 ms時,錯誤報(bào)文率為5%;為200 ms時,已經(jīng)低至1%。可見,該產(chǎn)品能夠滿足一般工業(yè)現(xiàn)場的使用。
本文首先在MT7620A處理器上進(jìn)行了嵌入式系統(tǒng)開發(fā),移植了OpenWRT操作系統(tǒng),并在此操作系統(tǒng)上進(jìn)行了網(wǎng)絡(luò)通信程序的設(shè)計(jì),根據(jù)節(jié)點(diǎn)數(shù)量和報(bào)文幀長度自動更改無線訪問機(jī)制。通過實(shí)物測試和網(wǎng)絡(luò)仿真,對最大吞吐量和延時進(jìn)行測試,最后成功應(yīng)用在工業(yè)現(xiàn)場中,實(shí)現(xiàn)了現(xiàn)場設(shè)備的無線通信。
[1] 陳建福,王煜.無線通信在自行小車中的應(yīng)用[J].自動化博覽,2009(9).
[2] 王娟,郭家奇,劉微.WIFI技術(shù)的深入探討與研究[J].價(jià)值工程,2011(6).
[3] 陸希.無線網(wǎng)絡(luò)中TCP擁塞控制協(xié)議性能的研究[D].南京:南京郵電大學(xué),2014.
[4] 李平南.基于NS2的多信道路由仿真模型的研究與實(shí)現(xiàn)[J].北京:北京郵電大學(xué),2010.
[5] 候維巖,曾磊,張海峰.工業(yè)無線測控網(wǎng)絡(luò)中WiFi無線終端設(shè)計(jì)與實(shí)現(xiàn)[J].自動化與儀表,2011,36(8):41-44.
[6] 韓?;?IEEE802.11無線網(wǎng)絡(luò)MAC層協(xié)議性能分析[D].濟(jì)南:山東大學(xué),2013.
[7] 高峰.IEEE802.11無線網(wǎng)絡(luò)DCF協(xié)議性能分析及提升研究[D].北京:北京郵電大學(xué),2010.
湯永鋒(碩士研究生),研究方向?yàn)楣I(yè)無線通信。
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)