汤永锋,龚云生
(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)