城市道路照明越来越多采用LED照明技术代替传统的照明技术,其目的是为了降低对电能的消耗。由于LED使用低压直流电源,便于附加检测与控制电路,这对路灯网络的智能化管理,进一步节能降耗带来了方便。对于路灯网络的管理与控制,既可以采用电力载波通信技术,也可技术的快速发展,使得短距离无线通信技术在应用成本、可靠性与通信速率等方面均已优于电力载波通信技术,例如Zigbee短距离无线通信技术。本文提出一种解决方案,采用短距离无线通信技术构建LED路灯无线传感网络,能对LED路灯网络任意单盏灯或多盏灯或全网络所有灯进行开关、调光等控制,进行发光亮度、电流参数等检测,从而实现对LED路灯网络的智能化管理。作为无线传感网络,其体系结构应该包含四个基本层次:物理层和数据链路层、网络层以及应用层。LED路灯无线传感网络采用IEEE 802.15.4标准作为其物理层和数据链路层的技术标准,网络层与应用层集成在一起,采用单跳、双跳以及变跳3种接力通信模式作为网络协议的基础。本文围绕LED无线传感网络的体系结构,以网络拓扑及通信节点的组成为基础,论述了网络层的协议包格式、路由工作原理,以及节点通信的设计流程。
网络体系
无线传感网络的网络体系是网络层实现路由的基础,包括节点组成及网络拓扑结构。
路灯传感网络节点的组成
路灯网络由间隔均匀的若干盏路灯组成,每一盏LED路灯均为网络的一个通信节点,用来构建无线传感网络。图1所示,为构建无线传感网络LED路灯节点的组成,除了照明部分的电路外,还附加了对LED电流的采样、LED发光亮度的检测、以及对LED发光亮度的PWM控制等电路。每一盏LED路灯既是传感器节点也是网络路由节点;每一个节点包含一个微控制器(MCU,如cc2530),都具有射频通信功能,既能发送信号也能接收信号;每一个节点具有32bit(位)的唯一ID号。通过在物理层和MAC层采用IEEE 802.15.4协议标准,结合网络层与应用层的协议,所有这些节点有机地组合在一起,便构成了LED路灯无线传感网络。由于现有的一些网络层与应用层协议如Zigbee、RF4CE等并不是很适合LED路灯传感网络应用,因此,需要重新设计网络层与应用层协议。
网络拓扑
根据LED路灯的分布规律,每盏LED路灯作为网络节点构成无线通信网络,其拓扑结构如图2所示,(a)是信号逐点(单跳)接力传送拓扑结构图,(b)是信号隔点(双跳)接力传送拓扑结构图。为便于下文网络应用协议的设计与讨论,作出如下定义:
(1)所有节点可分为2类,即LED路灯节点(简称LED节点,如a1 a2 … an , b1 b2 … bn)和路灯控制器节点(简称控制节点,如a,b);
(2)相邻节点之间的距离均为L,每个节点的无线信号覆盖半径大于等于2L;
(3)根据节点的相对位置,节点可分为前驱节点与后继节点,离控制器近的是前趋节点,离控制器远的是后继节点。例如a1是a2前驱节点,a3是a2后继节点;同理b2是b4前驱节点,b6是b4后继节点,以此类推。
(4)控制节点与LED节点之间,LED节点相互之间,只要无线信号可以覆盖到,都可以相互通信,不需要设基站或专门的路由协调装置。
(5)每个节点的32bit唯一ID号由两部分组成,分别为网络ID和节点地址(编号),均为16bit。同一路灯网络所有节点的网络ID相同;从控制节点开始,节点地址由小到大顺序编排。
网络协议
路灯传感网络协议包括协议包的定义与路由协议的定义,其设计目标是简单、实用,易实现。
网络协议包格式
路灯传感网络协议传输的信息包共有3种类型,分别为命令包、参数包以及应答确认包。
(1)命令包
图3(a)所示,为控制器节点对LED路灯节点下发的命令包格式。命令有三种类型:针对整个网络所有LED节点的广播命令、针对部分LED节点的群组命令以及针对单个LED节点的单点命令。
命令包各字段定义如下:
包类型:为1;
目的地址:为指定LED节点的地址;
包序列号:为向指定节点发送的包编号;
接力模式:为1时,表示单跳模式;为2时,表示双跳模式偶链;为3时,表示双跳模式奇链;
命令字段的定义方法见表1,表1只列出了部分命令,实际中可以根据需要增加命令;
表1 命令包命令字段定义
命令参数字段:用来表示调光的亮度,数值越小LED发光亮度越低,耗电越少,数值为 0时表示关灯;
跳数:命令传送到目的地址所需经过的节点数,最大值为路灯网络所有LED节点的数量。传送命令包时,每经转发一次则跳数减1,当跳数值为0时,命令包不再被转发。
(2)参数包
图3(b)所示,为LED路灯网络节点上传的参数包格式。控制节点可采用定时轮询或即时查询方式获取网络内各LED节点的状态参数,如电流值、发光亮度值等,各LED节点只有在接到读取参数的命令后才会向控制节点发送参数包。参数包各字段定义如下:
包类型:为2;
源地址:为上传参数LED节点的地址;
包序列号:为上传参数LED节点发出的参数包编号;
接力模式:由于只有在节点收到读取状态参数命令后才会发送参数包,因此,参数包的接力模式由命令包的接力模式确定;
状态标志:为0,表示对应LED节点无故障;为1,表示对应节点有故障;为2,表示对应节点及后继节点有故障;
状态参数1-3:为LED节点的有关参数,如电流值、电压值以及LED的发光亮度值等。
(3)应答确认包
图3(c)所示,为应答确认包格式。为了实现可靠传输,每个节点在收到命令包或参数包后需要发送应答确认信息包。如果信息包的发送(转发)方在设定的时间内没有收到应答确认包,则会启动对该信息包的重新发送。应答确认包各字段的数值定义如下:
包类型:为3;
节点地址:发出确认应答包节点的地址。
确认类型:收到信息包的包类型;
确认号:为节点收到信息包的包序列号;
网络路由协议
路灯传感网络路由协议的核心是各节点对信息包的转发机制。由于每一个节点的信号覆盖范围有限,其信息只能向邻近的节点发送,如要将信息送往远处节点则只能依赖中间节点的多次转发。根据前述1.2定义的条件,节点转发信息包可以分为三种模式,即单跳接力模式,双跳接力模式和变跳接力模式,各LED节点将根据信息包中接力模式字段的定义进行选择。
单跳接力模式
图2(a)所示,为单跳接力模式的拓扑结构图。它是一个比较简单的转发模式,要求每个节点无线信号覆盖的半径范围大于节点间距L即可,信息包只需往邻近的前驱节点或后继节点转发。在这种模式下,节点处理收到信息包的方法如下:
①节点接收一个命令包(如图3(a))后,向前驱节点发送接收确认应答包;将命令包中的跳数减1;比较节点自身地址(NA)与命令包中目标地址的大小,相等则执行包中的命令且无须转发命令包,不等则向后继节点转发该包;如果是广播命令(目标地址值为0xffff),既在本节点执行该命令同时也向后继节点转发该命令包。转发时的路由地址为:NA+1。当命令包传送到网络中的最后一个LED节点时,跳数减1后将为0,包将不再被转发。
②节点接收到参数包(如图3(b))后,只需向后继节点发送接收确认包和向前驱节点转发,转发参数包的路由地址为:NA-1。
③节点收到命令包或参数包后,必须发送接收确认包(如图3(c)),当收到命令包时,确认类型值为1,发送应答确认包的路由地址为NA-1;当收到参数包时确认类型值为2, 发送应答确认包的路由地址为NA+1。
双跳接力模式
图2(b)所示,为双跳接力模式的拓扑结构图。这种模式要求每一个节点的无线信号覆盖半径范围≥2L。从图2可知,双跳接力模式每次跨越两个节点,传送信息包到指定节点的转发次数比单跳接力模式要少一半,因此其传送时延也要小。在双跳接力模式下,将整个网络所有LED节点按照其地址值的奇偶性分成2个接力链,即奇地址节点链和偶地址节点链。控制节点发送广播命令时,需要针对奇地址节点链和偶地址节点链分别发送,命令信息包分别在奇地址节点链和偶地址节点链上同时传播。在双跳接力模式下,节点处理收到信息包的方法如下:
①节点接收到命令包后的处理方法与单跳接力模式基本相同,但包转发时的路由地址变为:NA+2。
②同样节点接收到数据包后的处理方法也与单跳接力模式基本相同,只是在包转发时的路由地址变为:NA-2。
③节点收到命令包或参数包后,必须发送接收确认包,当收到命令包时,确认类型值为1,发送应答确认包的路由地址为NA-2;当收到参数包时确认类型值为2, 发送应答确认包的路由地址为NA+2。
无论是单跳接力模式还是双跳接力模式,节点发送命令信息包或参数信息包后,在规定的时间内未收到确认信息包,则需要重发,重发次数一般不超过3次。
变跳接力模式
变跳接力模式实际上是单跳接力模式和双跳接力模式的一种补充,主要用于下一跳节点出现通信故障时。在单跳接力模式或双跳接力模式工作时,如果在多次重发后仍收不到下一跳节点的应答确认信息包,说明下一跳节点出现了通信故障。这时通过改变接力模式,由单跳变双跳或者由双跳变单跳可以绕开下一跳有通信故障的节点,继续信息包的接力传送。同时,将故障节点的相关信息反馈到控制节点。变跳接力模式要求每一个节点的无线信号覆盖半径范围≥2L。变跳接力模式分为两种情况:
(1)初始传送为单跳接力模式
设LED节点i的地址为NAi,当LED节点i以单跳模式转发命令包(或参数包)时,即使重发,仍然收不到LED节点i+1(或i-1)的确认包,于是断定下一跳节点出现故障。这时如果传送的是命令包则从①开始执行,如果传送的是参数包则执行②,因为故障节点在传命令包时已遇上,传送参数包时遇故障节点无须重复报告故障信息。
①LED节点i向控制节点报告故障节点信息。此时,节点i向控制节点发送参数包,包的状态参数置为1,源地址为故障节点的地址,即NAi+1,发送参数包的路由地址为NAi-1。
②改变接力模式为双跳模式,将信息包转发给节点i+2(或i-2),以绕开故障节点,路由地址为NAi+2(或NAi-2),若能收到应答确认包,则本节点转发完成,否则说明遇上了两个或两个以上连续故障节点,需继续执行③。
③如果此时传送的是命令包,则LED节点i需向控制节点报告故障节点状态信息,状态参数包的状态标志置为2,源地址为故障节点的地址,即NAi+2,发送参数包的路由地址为NAi-1。随后,转发中止。
(2)初始传送为双跳接力模式
当LED节点i(地址为NAi)欲以双跳接力模式转发命令包(或参数包)时,必须对包进行分析,根据接力模式字段的值为2或3,可以判定当前为偶地址链或奇地址链接力模式。当NAi的值为奇数,跳变模式为奇链,或者NAi的值为偶数,跳变模式为偶链时,执行如下步骤①;当NAi的值为奇数,跳变模式为偶链,或者NAi的值为偶数,跳变模式为奇链时,执行如下步骤②;
①节点i以双跳接力模式转发命令包(或参数包),路由地址为NAi+2(或NAi-2),如果收不到应答确认,则下一跳节点出现故障。如果这时转发的是命令包,则需向控制节点报告故障,往其前驱节点i-2发送故障信息参数包,路由地址为NAi-2,故障信息参数包的源地址(即故障节点的地址)为NAi+2,状态标志为1。同时,改用单跳接力模式将信息包转发给节点i+1(或i-1),以绕开故障节点,转发的路由地址为NAi+1(或NAi-1);若能收到确认包,则本节点转发完成,否则执行③;
②节点i改为单跳接力模式转发命令包(或参数包),路由地址为NAi+1(或NAi-1),若能收到确认包,则本节点转发完成,否则,再改用双跳接力模式转发,将信息包转发给节点i+2(或i-2),以绕开故障节点,转发的路由地址为NAi+2(或NAi-2);若能收到确认包,则本节点转发完成,否则执行③;
③说明遇上了两个或两个以上连续故障节点,LED节点i需向控制节点报告故障节点信息。此时,节点i向控制节点发送故障参数包的状态标志为2,源地址为故障节点的地址,即NAi+1,发送参数包,路由地址为NAi-1。随后转发中止。
上述变跳接力模式能解决分散的单个通信故障节点接力传送问题。但当网络中出现连续2个或2个以上通信故障节点时,则只能报告故障节点位置而不能再继续接力传送。若要解决连续多故障节点的问题,既需要改变接力算法,也需要各节点的无线信号覆盖半径范围更大。
网络节点工作流程与协议实现
路灯传感网络上的每一个节点,既是命令执行与状态参数采集的终端节点,也是路由协调工作节点。各节点除了接收到信息包进入处理流程外,其余时间几乎都处在监听查询状态,检查是否收到信息包。图4所示为LED路灯传感网络节点的工作流程,它是网络协议在节点上实现过程的描述。
结束语
通过网络体系、网络协议、网络节点工作流程与协议实现等几个部分的详细介绍,析构了LED路灯无线传感网络的组成,希望能为LED路灯无线传感网络的应用起到抛砖引玉的作用。LED路灯无线传感网络构建的基础是点到点的通信技术,命令信息要覆盖全网络需要点到点的通信技术来完成,良好的网络协议是组建传感网络的关键所在,简易可行的网络协议是实用化的前提。实际应用表明,上述方法构建的LED路灯无线传感网络具有良好的实时性,能稳定、可靠地工作,能满足对LED路灯网络的智能化管理要求。