ZigBee的远程低功耗灌溉控制系统设计
3.1.2 下位机向上位机发送数据消息 3.1.3 ZigBee网络通信协议设计
消息类型域,其长度为1个字节。应用中设置成表1消息类型域,其长度为1个字节。应用中设置成表1中的某值。
控制消息域,其长度根据具体农田里的终端个数决定,一个终端采用一个字节,其中每两位为一个电磁阀的控制信息,应用中应设置成表2所列的值。
上位机向下位机发送控制指令后,下位机将会向上位机发送相应的回复信息,以告诉上位机下位机对所发送指令的执行情况,这种信息包括两类:第一类是上位机发送完控制指令后,下位机收到指令的一个确认状态回复,其消息类型值见表1;第二类消息是下位机对上位机发送的控制指令执行后的电磁阀信息,电磁阀的状态信息格式如下。
其消息类型见表1。字节2以后的字节表示电池阀的状态,每一个字节表示一个终端节点,其中低4位为电磁阀状态。由于ZigBee协调器节点可能没有收到终端采集到的电磁阀状态数据,所以用第4位来表示低4位是否为电磁阀状态,1为是,0为不是。
(1)ZigBee协调器消息处理
ZigBee协调器通过UART接口从短信模块中读取短信的内容后,将其保存在ZigBee协调器中,等待ZigBee终端醒来后发送询问消息。如果询问后ZigBee协调器保留了控制消息,那么ZigBee协调器将保存的控制指令以广播的形式发送出去,如果终端询问过后ZigBee协调器没有控制指令,那么ZigBee协调器将发送无控制消息到ZigBee终端。
ZigBee协调器发送数据后等待ZigBee终端回复确认信息,其信息格式如下。
其消息类型域取值见表1。协调器收到ZigBee终端的回复消息后,将该节点号所对应的字节的控制消息全部位置0,使下次广播控制指令后,该终端节点不会采取相应动作。
当ZigBee协调器发送完控制消息后,等待接收终端电磁阀的状态,ZigBee协调器收到所有ZigBee终端的电磁阀状态信息或者等待时间超时后,向上位机发送已接收到的电磁阀信息。
ZigBee协调器的消息处理流程如图5所示。
(2)ZigBee终端消息处理
由于ZigBee终端是完全由电池供电,所以ZigBee终端必须定时睡眠来节约能量,使终端工作时间可以尽可能地长。因此,ZigBee协调器收到控制信息后不可能直接发送给终端,必须先存储,ZigBee终端为了获得控制消息,在醒来后必须向协调器发送询问消息,使ZigBee协调器发送控制消息。
ZigBee终端收到ZigBee协调器发送来的控制指令后,向ZigBee协调器发送确认消息,使ZigBee协调器更改相应的节点状态,避免重复发送控制指令到ZigBee终端,增加ZigBee终端的负担。
ZigBee终端收到控制信息后,获取本节点的控制信息,判断是否有控制信息。如果有控制信息,为了使ZigBee终端的电磁阀中的电机不出现卡死的现象,ZigBee终端必须判断当前的控制状态是否和电磁阀当前的状态相同。如果相同,则对电磁阀不采取任何控制动作;如果不同,则根据控制信息对电磁阀采取相应的控制。对控制信息进行判断后,为了使电磁阀对控制信息有充分的反应时间,延时1 s采集电磁阀的控制信息,然后将其传送到ZigBee协调器,其处理流程图6所示。
回复到ZigBee协调器的电磁阀的状态信息的消息格式如下。
其中消息类型域的值见表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%以上,更加节约能源。
- 浅析基于MG2455微处理器Zigbee的汽车无线黑匣子实现(08-29)
- 基于ZigBee的城市照明监控系统网关节点的软硬件设计(01-15)
- 基于RSSI测距的定位算法的研究(01-15)
- 基于GPRS和ZigBee的远程油阀控制系统(01-17)
- 基于ZigBee无线网络的嵌入式智能家居监控系统(03-18)
- 设计实例:森林火灾实时监测与预警系统(03-18)