基于Zigbee的城市路灯智能监控终端控制器设计
2011-08-08宋绍剑薛春伟
宋绍剑 薛春伟
(广西大学 电气工程学院,广西 南宁市 530004)
1 引言
近年来,随着城市道路照明现代化进程的加快,路灯监控系统受到很大关注。国内外已经出现了大量路灯监控系统方案,例如:采用GSM无线公共网短消息、基于PLC、基于组态王及GPRS通讯、基于Lonworks等[1]。然而这些方案实施复杂,费用也不低廉,而Zigbee技术是一种基于 IEEE 802.15.4的物理层和媒体访问层标准,与其他短距离无线协议相比,具有功耗低、可靠性高、复杂度低、支持大量网络节点和运行费用较低等显著优点,非常适合在城市路灯系统中应用[2~3]。本文针对目前城市路灯照明系统存在的问题,如自动化管理水平还不很高、系统可靠性不高等,提出了一套基于Zigbee的路灯集中监控系统。该系统集无线通讯技术、自动化控制技术、监控系统组网技术和数据库技术于一体,为城市路灯照明系统的新建或改造升级提供稳定、可靠、低成本的实施方案,有着广阔的应用前景。
2 系统结构及工作原理
本文所设计的城市路灯智能监控系统由监控终端控制器、Zigbee网络、监控中心三部分构成,如图1所示。其中监控终端控制器由电参数采集板、ATmega128核心控制板、继电器模块、LCD显示和Zigbee模块组成,如图2所示。系统工作原理如下:首先,通过电压互感器和电流互感器将路灯的电参数送给电参数采集板,电参数采集板的ATT7O22B芯片读取各类电参数,然后ATT7022B通过 SPI口将电参数的数据传给控制核心板,并通过LCD模块进行显示;同时,还可以运用键盘模块对ATmega128发送命令,ATmega128再通过 RS232接口将数据或命令传给Zigbee终端节点,终端节点与相邻节点互传数据,汇总于汇节点,最终通过GPRS网络传给监控中心。
图1 城市路灯智能监控系统部署图
图2 监控终端控制器结构框图
3 硬件系统设计
核心控制板的CPU选用ATmega128单片机,它是8位基于AVR RISC结构的低功耗CMOS微处理器,具有性价比高、功耗小、可靠性高等特点。LCD模块选用LCD12864带中文字符型液晶显示屏,它自带汉字字库,通过查询中文字库表便能实现LCD的中文显示,只用三个管脚就能完成通讯和控制。继电器模块的工作线圈为24V。键盘模块采用了一个4×4的矩阵键盘。时钟模块选用DS1302芯片,为CPU提供实时时钟。它采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能,编程简单,功耗小 (见图3)。
图3 核心控制板主要模块原理图
电参数采集板的采集芯片采用ATT7022B芯片。它是一颗高精度的三相多功能电能计量专用芯片,集成了七路二阶sigma-delta ADC,参考电压电路以及所有功率、能量、有效值、功率因数、频率测量的数字信号处理等电路,适用于三相三线和三相四线应用。电压与电流互感器分别选择了北京双电的PT01(微型精密电压互感器)和 CT01(微型精密电流互感器5A系列)。Zigbee模块采用上海顺舟网络科技有限公司的SZ02系列Zigbee无线RS232串口通信设备,采用了加强型的Zigbee无线技术,是符合工业标准应用的无线数据通信设备。它具有通讯距离远、抗干扰能力强、组网灵活等优点和特性,可实现多设备间的数据透明传输,可组MESH型的网状网络结构。
4 软件系统设计
ATmega128单片机集成的指令功能丰富,内存等资源也都比较丰富,为了提高编程效率、代码的可读性、可移植性和可维护性,本系统使用C语言开发系统软件。电参数采集芯片ATT7022B提供一个SPI接口,方便与外部MCU之间进行计量参数以及校表参数的传递。其SPI接口采用从属方式工作,使用2条控制线和2条数据线:CS、SCLK、DIN和DOUT。ATT7022B能够测量各相以及合相的有功功率、无功功率、视在功率、有功能量以及无功能量,同时还能测量各相电流、电压有效值、功率因数、相角、频率等参数,充分满足三相复费率多功能电能表的需求。时钟芯片DS1302采用串行数据传输,与CPU的连接需要三条线,即 SCLK(7)、I/O(6)、RST(5)。它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿等多种功能。
4.1 主程序流程
系统的主程序流程如图4所示。系统通电后,首先初始化各底层硬件 (包括LCD设备、串口参数等)和电参数测量 I/O口。初始化完成后,ATmega128通过DS1302和继电器模块定时开关路灯,然后循环读取ATT7022B芯片发送的数据,获取电压、电流、功率、功率因数等各类电参数,将各种参数打包后,通过串行通讯口RS232上传至Zigbee模块,同时在本地LCD上显示出来。
图4 主程序流程图
4.2 电参数测量
4.2.1 SPI通讯口介绍
ATT7022B内部集成了一个SPI串行通讯接口。ATT7022B的SPI接口采用从属方式工作,使用2条控制线和2条数据线:CS、SCLK、DIN和DOUT。
CS:片选 (输入脚),允许访问串口的控制线。CS由高电平变为低电平时表示 SPI操作开始,CS由低电平变为高电平时表示SPI操作结束。所以每次SPI操作时CS必须出现下降沿,CS出现上升沿时表示SPI操作结束。
DIN:串行数据输入 (输入脚),用于把用户的数据 (如:数据、命令、地址等)传输到ATT7022B。
DOUT:串行数据输出 (输出脚),用于从ATT7022B寄存器读出数据。
SCLK:串行时钟 (输入脚),控制数据移出或移入串行口的传输率。上升沿放数据,下降沿取数据。SCLK下降沿时将DIN上的数据采样到ATT7022B中,SCLK上升沿时将ATT7022B的数据放置于DOUT上输出。
4.2.2 SPI读、写操作
SPI读工作过程:通过SPI写入一个8Bits的命令字后,可能需要一个等待时间,然后才能通过SPI读取24Bits的数据。在 SCLK低于 200kHz时,可以不需要等待,即等待时间为0us;当SCLK频率高于200kHz时,则需要等待大约3us。
SPI写工作过程:通过SPI写入一个8Bits的命令字后,不需要等待继续通过SPI读取24Bits的数据即可 (见图5)。
图5 SPI读、写时序图
4.2.3 电参数测量程序
核心板通电后,先对电参数测量I/O口进行初始化,初始化函数如下:
按照ATT7022B芯片的写入协议要求,在同步时钟的作用下,从LSB到HSB按位串行输入。当向该芯片写入一个命令时,操作如下:
按照ATT7022B芯片的读出协议要求,用ElePar_WriteByte(uint8 Com)向ATT7022B发送读某一数据寄存器的命令后,ATT7022B将从HSB到LSB以串行方式向ATmega128输出4个字节24位数据,操作如下:
向ATT7022B发送不同的命令 (一个字节的16进制形式),就可以方便地读出各种电量参数,如要读出A相电压,操作如下:
函数返回的电压、电流和功率均是16进制整数,代表实际测量得到的电压、电流和功率的值,经过打包处理后可以上传给控制中心,同时也在本地LCD显示。
4.3 Zigbee的路由节点算法
Zigbee采用按需路由算法 AODV,在节能和网络性能上都有着很大的优势。AODV路由协议是一种基于距离矢量的按需路由算法,只保持需要的路由,而不需要节点维持通信过程中未达目的节点的路由。节点仅记住下一跳,而不像源节点路由那样记住整个路由。它能在网络中的各移动节点之间动态地、自启动地建立逐跳的路由。
当链路断开时,AODV会通知受影响的节点,从而使这些节点能被确认为无效路由。AODV允许移动节点响应链路的破损情况,并以一种及时的方式更新网络拓扑。AODV操作是无环回的,并避免了当Adhoc网络拓扑变化时快速收敛的无限计算问题 (特别是当一个节点进入网络时)[4]。
5 实物测试
本文对整个系统进行了测试,系统运行界面如图6所示。通过测试可以计算城市路灯亮灯率,进行电缆故障定位等。
6 结束语
本文综合了单片机技术和无线传感网络技术,开发了一套基于Zigbee的城市路灯智能监控终端控制器,在解决城市路灯亮灯率计算、电缆故障定位和防盗等方面,技术先进、成本低,相关技术的适用范围广,具有很好的推广应用前景。但同时Zigbee也存在不足,比如通信距离较短,应用不够广泛等等。
图6 系统运行界面
[1]陈涛.照明控制与自动化系统的完美结合—智能照明控制系统的再认识 [J].照明工程学报,2003,14(3):26~32.
[2]成小良,邓志东.基于Zigbee规范构建大规模无线传感器网络 [J].通信学报,2008(11):158~164.
[3]Zigbee Specification[S].Zigbee Standards Organization,2007.
[4]郑锴,童利标,何世杰等.一种无线传感网络节点硬件结构设计 [J].仪表技术与传感器,2009(9):78~80.