基于ZigBee的光伏照明控制系统设计
2.3 终端节点硬件设计
终端节点的功能是接收协调器发送的指令控制路灯开关。其电源是在监控计算机发送命令到光伏充电机对路灯供电线缆供电之后提供,因此硬件部分不需要电池后备功能、光伏照明系统中供电电压为直流220 V,终端节点电源部分采用DC-DC开关电源产生5 V直流供电,路灯开关控制则通过CC2430的GPIO和三极管控制继电器实现。由于CC2430只有引脚P1.O和P1.1具有20 mA的驱动能力,而其他引脚最大驱动电流为4 mA,所以使用SN74HC04D作为输出缓冲。其原理图如图4所示。本文引用地址://m.amcfsurvey.com/article/157120.htm
3 系统软件设计
系统软件主要包括ZigBee协调器节点程序、路由器节点程序、终端节点程序和监控计算机程序。监控计算机程序实现对光伏照明系统的监控和数据处理,LED路灯通断控制,以及与之相连的另外一套光伏发电系统和环境监测系统的数据采集和监控。监控计算机与协调器节点通信通过二进制编码的方式进行通信,每隔5 s发送1次采集命令。其数据包格式如下:
其中,数据包包头(HEADER)占2字节,可设置为0x81、Ox82,用于区分是计算机数据包输出还是数据包输入;数据长度(LENGTH)为1字节;命令类型包括充电机数据采集、路灯开关状态采集、环境参数采集等;数据字节数由LENGTH指定;数据CRC校验占1字节。
ZigBee节点程序是在TI公司提供的ZStack-1.4.3-1.2.1协议栈的基础上编写的,可以实现网络建立、节点加入和退出、数据传输等功能。该协议栈将应用层和堆栈层进行了分离,提供了类似于操作系统的运行机制(OSAL)(主要包括任务的注册、初始化、启动,任务间的消息交换,任务同步,中断处理,以及时间管理和内存分配等),具有很好的可移植性。
节点程序流程如图5所示。当对硬件和协议栈各层初始化后,采用有限状态机以事件轮询方式对事件进行处理。如果同时有几个事件发生,则判断事件优先级后逐次处理。该协议栈提供了丰富的API函数供用户调用,这种软件构架可方便地构造用户应用程序。由于对终端节点的供电是由光伏充电机根据监控计算机的命令来控制,因此在正常情况下终端节点每天都会加人和退出网络。
ZigBee节点之间的通信有两种寻址方式,分别通过固定的64位IEEE地址和16位网络地址来寻找网络设备。当节点加入ZigBee网络时,它可以通过协调器随机获取唯一的l6位网络地址。光伏照明系统要求能按照路灯的编号任意控制其点亮或者关闭,而要与特定节点通信必须采用IEEE地址,故利用TI公司提供的SmartRF软件对ZigBee节点的64位IEEE地址进行人工分配。协调器向终端节点传送数据使用AF_DataReqt-lest()函数实现,该函数需要节点的网络地址作为参数,通过IEEE地址获取16位网络地址的功能由NLME_GetShortAddr()函数实现。程序设计中,在应用层添加用户所需要的任务,对接收到的事件进行处理。节点在启动时需完成以下工作:初始化CC2430和协议栈;帮助协调器节点建立ZigBee网络,设置网络PAN ID,等待其他节点加入网络;对监控计算机传送的命令进行解析和转发;读取路由器和各个终端节点发送的状态数据,并转发给监控计算机处理。
配置ZigBee设备对象(ZD0)端点时,网内的所有节点其端点ID和端点描述符必须相同,否则节点之间不能进行通信。图5的程序流程主要是针对用户事件处理(包括串口事件、数据传送事件、定时器事件等),路由器和终端节点的程序设计流程类似,分别在用户事件中根据协调
器发送的命令类型完成充电机状态数据采集、回传,以及路灯开关控制。
结语
将ZigBee无线网络用于光伏照明系统控制,具有通信距离远、成本低,维护方便等优点,控制路灯总数可达64盏,覆盖范围大于300 m,并可以进一步扩展。该系统已经成功应用于建设部太阳能建筑应用示范工程,且通过建设部验收。
评论