张 飙,周国清,杨小平,刘 源,程小辉,周 祥,刘毅龙
(1.桂林理工大学 信息科学与工程学院,广西 桂林 541004;2.桂林理工大学 广西空间信息与测绘重点实验室,广西 桂林 541004;3.桂林理工大学 机械与控制工程学院,广西 桂林 541004)
LED交通诱导屏广泛应用于城市道路和高速公路上,随着人力成本增加,诱导屏维修成本也逐年提高,研发高可靠性、高稳定性、低维修率的交通诱导屏已成为市场的必然。目前无线技术已经在交通诱导屏中得到应用[1-2],但这些应用仅局限于采用无线技术,包括 GSM,GPRS,3G,Zig-Bee等代替有线的串行通信实现对诱导屏的无线控制。分布式控制也在诱导屏上得以应用,不过这些应用是基于485通信的[3-4]。本文拟将物联网中具有自组织、零费用的无线短距ZigBee网络和分布式控制技术相结合应用于诱导屏,设计基于ZigBee网络的分布式LED交通诱导屏系统。
常规的LED交通诱导屏是由单个CPU控制,所有单元模块采用串行方式级联,一旦某个单元模块发生故障,必然发生故障扩散,影响其后续模块的显示,造成大面积显示失效。本设计运用分布式控制架构将诱导屏划分为N个子区域,每个子区域由独立的CPU进行控制,如果某个子区域发生故障,则故障只影响该子区域,其他子区域不受影响,可见分布式控制能将故障限定在子区域内,有效防止故障扩散。各子区域分开控制后必须解决子区域中的CPU与主控CPU的数据通信问题,该问题存在有线和无线两种解决方案。有线方式下各子控制区域中的CPU都挂在总线上,其缺点是:需要额外的通信电缆和总线收发器,一旦总线发生故障会造成整个显示系统失效。无线方式下不使用总线可避免总线故障引发的全屏显示失效,提高了系统可靠性与稳定性,同时还能节省通信线缆成本。本设计利用物联网技术中的ZigBee无线短距网实现交通诱导屏内部各子区域的通信。
CC2530用于2.4GHz频段,遵循IEEE.802.15.4标准,其内部集成高性能射频收发器、增强型8051CPU、两个多功能串口、12位ADC和21个I/O等,是美国TI公司ZigBee技术应用的SoC解决方案,具有自组织特性,能够自动组建低成本ZigBee网络[5],经本项目试验测定其可靠通信距离超过60m。本设计系统结构如图1所示,设计中将LED显示屏划分为N个小区域,每个小区域内包含一片CC2530,构成一个Zig-Bee网络节点,CC2530控制16×16LED点阵的显示,还负责采集温度,湿度,并实现与协调器通信。协调器一方面负责与网内各个ZigBee节点进行通信,另一方面与主控制模块通信以获取显示及控制信息。主控制模块从远程通信模块获取显示及控制信息,采集环境亮度,再经内部处理后下发给协调器,以实现LED显示屏的显示、控制、亮度调节等功能。远程通信模块用串口与主控制模块相连,负责接收来自远程控制中心的数据。远程通信模块形式多样,可以是光纤转串口,也可是3G或GPRS模块转串口,还可能是RS485转串口等,具体为何种形式则由实际项目中的交通诱导屏网络确定。
系统结构的核心是ZigBee节点,各节点具有通用性,均具备终端、路由和协调器功能,具体成为何种节点只需软件配置,终端节点没有路由功能,路由节点或协调器节点时仍可实现终端节点的功能。由于每个ZigBee子网只能有一个协调器节点,因此本项目除配置一个协调器节点外,其余节点均具备控制LED显示的功能,其中1/3的节点设置为路由显示节点,2/3的节点设置为终端显示节点,该配置方式具有较多的路由节点,使每个终端显示节点都有多条路径与协调器通信,即使某个路由节点失效,终端显示节点仍然能通过其它路由节点与协调器通信,可有效避免大面积显示失效,提高了显示屏工作可靠性与稳定性,减少维修频度。但路由显示节点需对其他节点发来的信息存储、融合和转发,会使其数据吞吐量增加,不过交通诱导屏信息更新快速性要求不高,这样实现完全可行。
图1 系统结构框图Fig.1 Diagram of system architecture
系统硬件的核心也是ZigBee节点,为提高节点硬件电路通用性和互换性并降低印刷电路板开模成本,每个节点都包含插接在一起的两块印制板:高频核心板和低频底板。CC2530单独设计成核心板,高频核心板设计为4层印刷电路板,面积较小,可节约制板成本,且所有节点的高频核心板都相同。低频底板使用双层印制板,且所有节点的低频底板都是通用的。
本系统ZigBee节点硬件结构如图2所示,每个节点由CC2530、LED显示控制模块、温湿度采集模块、串行通信模块及电源模块组成。CC2530是是整个节点的中枢,负责建立、维护通信网络,实现无线信号传输、处理、转发和控制等功能;LED显示控制模块用于控制16×16点阵LED显示;温湿度采集模块采集该节点处的温度和湿度;串行通信模块用于节点硬件调试,对于协调器还通过串行通信模块与主控制器通信;电源模块负责节点供电。
图2 节点硬件框图Fig.2 Block diagram of node hardware
核心板电路原理图如图3所示。CC2530的P1.1,P1.2连接主控制模块的串口,P1.4,P1.5用于调试实现上位计算机与CC2530串口通信;P2.0,P2.1分别连接温度、湿度传感器的数字输出端;P0.0~P0.6用于驱动16×16LED点阵。RF_P和RF_N为射频信号输出端,P1为天线。
图3 核心板电路原理图Fig.3 Schematic of core board
底板电路连接核心板与16×16LED显示面板,核心板控制生成16×16LED点阵显示时序,并读取温、湿度传感器的值。底板上含有两个串行通信插座,分别用于程序调试及与上位机通信。底板上还包含指示ZigBee网络连接状态和程序运行的LED指示灯;系统供电由底板输入,经1117M3电压转换芯片获得3.3V电压给CC2530供电。
LED驱动芯片采用含有7bit点校正功能的16通道恒流驱动器TLC5923,该芯片可以独立调节OUT0~OUT15通道的电流值,调节级数为128级,各通道调整后的灌电流为:IOutN=IMAX×DCN/127,其中IMAX是能够设定的最大值,DCN表明第N(N=0~15)通道输出电流被调节在哪一级[6]。此项功能可以保证整个显示屏具有均匀亮度。各通道的调节值是根据LED亮度测量值确定的,这是本文作者另一篇论文所研究的内容,在此不再赘述。TLC5923还具有LED开路检测和芯片温升超限检测功能,利用开路检测与温升超限检测功能协调器可以获知故障通道与故障驱动器,并将故障信息传到控制中心。16×16LED显示控制原理如图4所示。
图4 16×16LED显示控制原理图Fig.4 Schematic of display control for 16×16LED pixel matrix
TLC5923中的MODE(9脚)置H,L电平分别选择点校正数据输入与显示数据输入。当发生芯片温升超限或LED开路故障XERR(连接在CC2530的P0.4)自动被 TLC5923拉低,CC2530通过定时查询P0.4脚可及时发现故障,并可通过P0.6脚(TLC5923SOUT脚)串行读入开路故障信息,从而判断出发生开路故障的通道号。
由于采用分布式控制方式,按照交通诱导屏为红、绿、黄三色计算,CC2530最多控制16×16点阵的显示区域,即48×48LED管,共有144片TLC5923。交通诱导屏信息更新快速性要求不高,经验算和实际测试CC2530内置增强型51内核的速度已经足够,可见CC2530既能实现Zig-Bee通信协议又能胜任16×16LED点阵的显示,这也是分布式系统将数据吞吐量转换到多个CPU同时处理,从而降低单个CPU数据吞吐量优点的体现。
主控制模块采用ST公司推出的ARM Cortex-M3架构的STM32F103ZET6处理器作为CPU,其一端连接协调器,另一端连接远程通信模块,主控制模块框图如图5所示。主要功能为:(1)解释和处理诱导屏与远程控制中心的通信协议;(2)根据显示内容在片内点阵字库Flash中读取待显示文字的点阵数据,并按照诱导屏所划分的各个16×16LED点阵子区域分别打包。(3)将各子区域对应的点阵数据包经串行口发送给协调器。随后协调器使用#播方式将这些数据包分别转发给控制各子区域的终端显示节点和路由显示节点,最后各显示节点中的CC2530负责在各自的16×16LED点阵上显示信息。
图5 主控制模块框图Fig.5 Block diagram of master control module
本设计采用并行总线 W29C040Flash,需要使用STM32F103处理器的FSMC(灵活的静态存储控制器)。FSMC接口支持SRAM、NAND FLASH、NOR FLASH 等存储器,支持8/16/32位数据宽度。FSMC总共管理1Gb外部存储空间,分为4个存储Bank,每个Bank又分为4个区,每个区64Mb的存储空间[7]。本设计使用Bank1的第4区,采用8位并行数据总线,使用异步Mode1方式控制。
基于Z-stack协议栈编程虽然在一些论文中已提及,但都没有深入研究[8-9],本文将深入探究Z-stack协议栈用户程序设计方法。采用CC2530构建的ZigBee无线网络,其软件系统是建立在TI公司开发的Z-stack协议栈上的。Z-stack协议栈本质上是ZigBee协议的具体实现形式,同时也是ZigBee协议和用户之间接口。按照现代软件分层设计的思想,TI在Z-stack协议栈中实现了ZigBee协议物理层,MAC层和网络层,但实现代码不公开,用户程序则在应用层上开发,需要使用底层服务时可调用Z-stack协议栈提供的API函数。
在Z-stack协议栈中,用户只需实现应用程序框架,该框架最多可包含240个应用程序对象,每个应用程序对象就是一个任务,每个任务又可以响应1个系统事件和15个用户事件,可见应用程序框架包含一个支持多任务的资源分配机制,因此Z-Stack协议栈提供一个OSAL(操作系统抽象层)来调度程序,OSAL实现了操作系统才具备的以多任务为核心的任务调度及系统资源管理。因此CC2530与常规单片机编程方式完全不同,必须通过创建OSAL任务来运行应用程序,而且用户程序设计是通过对例程代码修改、增删来实现的[10]。
本项目设计的用户任务在Z-stack协议栈中的工作流程如图6所示,其中“系统初始化”由函数osal_init_system()实现,该函数包含6个初始化函数,其中任务初始化函数osalInitTasks()是用户程序必须修改的。本设计在该函数最后增加用户任务初始化函数SampleApp_Init(taskID),该函数内部分配任务号,初始化串行口,设置周期信息广播地址和周期信息单播地址。周期信息广播目标地址为:0xFFFF,用于协调器向所有显示节点广播信息;周期信息单播地址为:0x0000,用于显示节点向协调器发送信息。运行操作系统由函数osal_start_system()实现,该函数是任务系统轮询函数,永远不会返回,它负责查找发生的事件然后调用相应任务对该发生事件的处理函数,该函数中核心语句“events=tasksEvents[idx];”用来提取需要处理的任务事件,另一核心语句“events= (tasksArr[idx])(idx,events);”通过指针调用相应事件的任务处理函数。如果没有事件发生,CC2530会自动进入省电模式。
串口在用户程序开发中有非常重要的作用,它是Z-stack协议栈与上位机的通信接口,本设计中,协调器通过串口与主控制模块双向通信;上位机通过串口实现显示节点内部程序调试。使用CC2530串口与普通单片机不同,需要在Z-stack协议栈中加入串口功能,使其纳入OSAL统一管理中。
图6 用户任务工作流程图Fig.6 Flow diagram for user task
串口使用前需要两个初始化步骤:①串口初始化(设置波特率,是否使用流控制等),②登记任务号,如图7所示这两个步骤是在用户任务初始化函数SampleApp_Init(TaskID)进行的。由于串口已封装在协议栈中,节点向串口发送数据包只需调用函数 HalUARTWrite(uint8port,uint8*buf,uint16len),其中port指串口号,本设计协调器使用串口0、1,显示节点只使用串口0;*buf是数组缓冲区指针,节点发送的数据需事先写入这个缓冲区;len指字节为单位的数据长度。串口通信帧格式可自定义为:“帧头+地址+命令字+数据长度+数据包+校验+帧尾”。串口数据接收函数“MT_UartProcessZToolData(…)”根据自定义帧格式修改为有限状态机方式接收模式,实现过程如图7所示,当正确接收帧尾后调用函数osal_msg_send(...)将数据包发送到OSAL层非常重要,调用该函数后,会产生触发用户任务的事件,响应触发事件时,协调器可调用AF_DataRequest(…)函数把串口接收的数据包发给各个显示节点。
图7 有限状态机实现串口数据帧接收Fig.7 Receiving serial data frame by FSM
协调器通过串口实现与主控模块通信,还接收显示节点上传的LED故障信息和温、湿度数据,而且协调器能以广播方式发数据包给显示节点,主要实现两个广播功能,第一:协调器设置各显示节点采集温、湿度或读取LED故障信息的周期值,一经设置显示节点就按新的周期采集或读取信息然后以单播方式上传协调器,协调器收到信息后则上传主控制模块。第二:主控制模块通过协调器获取显示节点是否正常连接在网络上,这是通过发送广播命令获取各显示节点编号实现,每个收到该命令的显示节点以单播方式发送本节点编号给协调器。协调器程序实现流程如图8所示。
图8 协调器用户软件运行流程图Fig.8 Flow diagram of user software for coordinator
显示节点采用单播(点对点)方式定时向协调器传送LED故障信息和温、湿度数据。定时时间由协调器设定。单播与广播程序代码类似,只是目标地址不同。各显示节点要实现串口通信,温、湿度检测,LED故障信息读取,协调器要实现与主控制器通信。节点应用软件运行流程如图9所示。由图8和图9可见,无论单播通信还是广播通信都使用同一个核心处理函数AF_DataRequest(afAddrType_t*dstAddr,endPointDesc_t*srcEP,uint16cID,uint16len,uint8*buf,int8*transID,uint8options,uint8radius),单播与广播方式由第1参数(目的地址),第3个参数(传输编号)决定,单播时显示节点发送数据到协调器,目的地址=0x0000;广播时协调器发送信息至所有显示节点,目的地址=0xFFFF。传输编号由用户程序定义,单播与广播必须定义不同的传输编号。
图9 显示节点用户软件运行流程图Fig.9 Flow diagram of user software for display node
为节省带宽和提高轮询速度,远程控制中心与主控制模块间传输的汉字或交通位图不是用点阵表示,而是用汉字内码和位图编号表示。本系统采用GBK汉字编码,每个汉字包含2个字节,高字节为区码,范围为0x81~0xFE,低节为区内偏移码,范围为0x40~0x7E和0x80~0xFE。GBK编码总共126个区,每区190个汉字。点阵字库是按照此编码规则从0x8140开始逐一建立,本设计显示的汉字为16×16点阵,选用台湾华邦的512kFlash芯片W29C040,字库从W29C040的0地址开始存放,字库后接着存放交通上使用的位图。主控制模块由远程通信模块接收到远程控制中心发出的待显示内容后,则根据汉字内码或位图编号计算出这些汉字或位图在Flash中存储的首地址,然后读出相应汉字或位图的点阵信息。
本文完成了基于ZigBee技术的无线分布式LED交通诱导屏设计,整块交通诱导屏被分为多个子区域。每个子区域都成为一个ZigBee节点由一片CC2530控制实现显示、通信、检测等功能。设计制作了具有通用性和互换性的核心板+底板结构的节点硬件电路,节约了PCB板开模成本。在Z-stack协议栈应用层编写了基于事件处理的用户程序,实现了协调器与各节点的单播和广播程序,以及基于有限状态机的串口通信程序。本文将ZigBee技术与分布式控制相结合用于交通诱导屏设计,可将数据吞吐量分担到多个CPU上,使整个系统成为多核并行处理机,既能有效防止故障扩散,又增加了交通诱导屏稳定性和可靠性,还减少了维修频度,为诱导屏系统提供了新的设计思路。经实际运行证实:Zigbee无线网路可靠性高,系统工作稳定,整体性能达到预期设计目标。
[1] 黄刚.无线射频技术在旋转LED显示系统设计应用[J].液晶与显示,2013,28(6):901-905.Huang G.Application and design of radio frequency technology in rotating LED display system [J].Chinese Journal of Liquid Crystals and Displays,2013,28(6):901-905.(in Chinese)
[2] 张伟,徐君鹏,王士恒.基于 GSM 控制的LED显示控制系统设计[J].广东农业科学,2010,37(8):220-221.Zhang W,Xu J P,Wang S H.Design of LED display and control system based on GSM [J].Chinese Journal of Guangdong Agricultural Sciences,2010,37(8):220-221.(in Chinese)
[3] 周燕,佘焱,马殿光.分布式LED显示屏控制器的设计与实现[J].仪表技术与传感器,2008,(9):70-72.Zhou Y,She Y,Ma D G.Design and implement of a distributed LED display screen system [J].Chinese Journal of Instrument Technique and Sensor,2008,(9):70-72.(in Chinese)
[4] 张飙,徐和飞,牛秦洲,等.LED光带型交通诱导屏的设计[J].液晶与显示,2009,24(1):103-104.Zhang B,Xu H F,Niu Q Z,et al.Design of LED light ribbon traffic guiding panel[J].Chinese Journal of Liquid Crystals and Displays,2009,24(1):103-104.(in Chinese)
[5] Texas Instruments.CC253xSystem-on-Chip Solution for 2.4GHzIEEE 802.15.4and ZigBee Applications User's Guide[EB/OL].[2009-04-15].http://www.ti.com.
[6] Texas Instruments.TLC5923datasheet[EB/OL].[2005-03-30].http://www.ti.com.
[7] 张洋,刘军,严汉宇.原子教你玩STM32(寄存器版)[M].北京:北京航空航天大学出版社,2013.Zhang Y,Liu J,Yan H Y.Yuanzi Teach you to Learn STM32(Register Edition)[M].Beijing:Beihang University Press,2013.(in Chinese)
[8] 杨信廷,吴滔,孙传恒,等.基于 WMSN的作物环境与长势远程监测系统[J].农业机械学报,2013,44(1):167-170.Yang X T,Wu T,Sun C H,et al.Remote monitoring system of crop environment and growing based on WMSN[J].Chinese Journal of Transactions of the Chinese Society for Agricultural Machinery,2013,44(1):167-170.(in Chinese)
[9] 樊静,王建明.基于CC2530的博物馆状况无线监测系统设计[J].电子测量技术,2011,34(6):105-107.Fan J,Wang J M.Design of wireless monitoring system for environment status of museum based on CC2530 [J].Chinese Journal of Electronic Measurement Technology,2011,34(6):105-107.(in Chinese)
[10] Drew G.ZigBee Wireless Networking[M].Boston:Newnespress,2010:111-176.