ZigBee的远程低功耗灌溉控制系统设计

时间:2014-01-18来源:网络
3.1.3 ZigBee网络通信协议设计
(1)ZigBee协调器消息处理
ZigBee协调器通过UART接口从短信模块中读取短信的内容后,将其保存在ZigBee协调器中,等待ZigBee终端醒来后发送询问消息。如果询问后ZigBee协调器保留了控制消息,那么ZigBee协调器将保存的控制指令以广播的形式发送出去,如果终端询问过后ZigBee协调器没有控制指令,那么ZigBee协调器将发送无控制消息到ZigBee终端。
ZigBee协调器发送数据后等待ZigBee终端回复确认信息,其信息格式如下。

i.jpg


其消息类型域取值见表1。协调器收到ZigBee终端的回复消息后,将该节点号所对应的字节的控制消息全部位置0,使下次广播控制指令后,该终端节点不会采取相应动作。
当ZigBee协调器发送完控制消息后,等待接收终端电磁阀的状态,ZigBee协调器收到所有ZigBee终端的电磁阀状态信息或者等待时间超时后,向上位机发送已接收到的电磁阀信息。
ZigBee协调器的消息处理流程如图5所示。

j.jpg


(2)ZigBee终端消息处理
由于ZigBee终端是完全由电池供电,所以ZigBee终端必须定时睡眠来节约能量,使终端工作时间可以尽可能地长。因此,ZigBee协调器收到控制信息后不可能直接发送给终端,必须先存储,ZigBee终端为了获得控制消息,在醒来后必须向协调器发送询问消息,使ZigBee协调器发送控制消息。
ZigBee终端收到ZigBee协调器发送来的控制指令后,向ZigBee协调器发送确认消息,使ZigBee协调器更改相应的节点状态,避免重复发送控制指令到ZigBee终端,增加ZigBee终端的负担。
ZigBee终端收到控制信息后,获取本节点的控制信息,判断是否有控制信息。如果有控制信息,为了使ZigBee终端的电磁阀中的电机不出现卡死的现象,ZigBee终端必须判断当前的控制状态是否和电磁阀当前的状态相同。如果相同,则对电磁阀不采取任何控制动作;如果不同,则根据控制信息对电磁阀采取相应的控制。对控制信息进行判断后,为了使电磁阀对控制信息有充分的反应时间,延时1 s采集电磁阀的控制信息,然后将其传送到ZigBee协调器,其处理流程图6所示。

k.jpg


回复到ZigBee协调器的电磁阀的状态信息的消息格式如下。

l.jpg


其中消息类型域的值见表2。电磁阀状态域低4位存放电磁阀的状态,每一位存放一个电磁阀的状态。
3.2 低功耗与同步设计
由于ZigBee终端节点是采用电池供电,所以ZigBee终端节点必须定时地休眠和唤醒以节约能量,使电池的供电时间更长。如果本系统的ZigBee网络采用网状结构和树状结构,那么路由器节点必须在非路由器节点之前醒来,这样必然会增加系统的控制难度,最糟糕的情况下可
能会使整个系统无法控制,并且可能使终端节点不定期的掉线。所以本系统采用星型网络,终端节点直接和协调器节点交互信息。
3.2.1 ZigBee节点同步
ZigBee节点之间的误差主要是传输延时和节点之间的时钟误差。
(1)节点时钟误差测量
ZigBee协调器节点先发送广播数据包,其中带有协调器节点下一次发送数据包的时间T1。节点收到数据包后,启动定时器等待接收Zig Bee协调器下次发送数据,当ZigBee终端节点收到下一次同步数据后,读取定时器的时间为T2,所以时钟偏移误差为:a=(T2-T1)/T1。
(2)延时误差
ZigBee终端节点向ZigBee协调器节点发送同步信息,ZigBee协调器收到同步信息后回复一个同步信息到ZigBee终端,ZigBee终端收到此回复信息的时间为T3。假设传输的延时一样,为T4,则T4=(1+a)×T3/2。
3.2.2 ZigBee终端节点睡眠
当ZigBee协调器接收到所有节点的状态回复后,广播一个睡眠消息到ZigBee终端,消息中加入睡眠的时间T5,ZigBee终端收到此时间后,开始睡眠,其睡眠时间为T5-T4-a×(T5-T4)。节点醒来后,再延时1 s发送询问消息到协调器,获得控制消息。

结语
本系统经过现场调试,能够对上位机发送的控制指令进行准确的控制。节点定时地睡眠和苏醒,能够有效地节约电量,两节干电池能够工作6个月到两年,为系统在农田这种无电源供电场合提供保障。采用同步算法和一些辅助措施,使系统能够在同一时间苏醒、同一时间睡眠,ZigBee终端节点同一时间接收到ZigBee协调器广播控制指令数据包的概率在90%以上,更加节约能源。

1 2 3

关键词: ZigBee 时间同步 无线遥控 灌溉控制

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版