摘要: 本文描述了一种基于GPRS通信方式的路灯监控器设计。
关键词: GPRS;路灯监控
引言
随着城市夜景照明设施的迅猛发展和人们生活品味的提高,对于城市的灯光设施建设提出了更高的要求。道路照明路灯,装饰彩灯、灯光喷泉、彩灯草坪、大厦射灯等各种各样的特色灯光构成了美丽的城市灯光夜景系统。但是,在这些美丽的灯光后面,我们的路灯管理部门担负着沉重的灯光设备维护管理工作。随着亮化工程脚步的进一步加快,这种沉重的负担已经成为困扰路灯管理部门的难题。
为了解决这个难题,提出了开发路灯监控管理系统,用于管理城市照明,目的是利用现代计算机技术,通讯技术对日益快速发展的城市道路照明路灯实现自动化监控和智能化的科学管理,进一步提高道路照明质量,从而提高服务质量;进一步提高维护、检修效率,从而保证城市整体亮灯率和设备完好率;进一步降低能耗、减轻劳动强度,从而避免无畏的电能和人力物力的浪费。
路灯监控管理信息系统
路灯监控管理信息系统是由通信服务器和若干路灯监控器组成,如图1所示。
图1 路灯监控管理信息系统
通信服务器通过局域网可以连接多个查询终端,通信服务器和若干路灯监控器采用ADSL与GPRS通讯方式。使用者可以在通信服务器上完成对整个城市内任一区域、任一路灯监控器的控制;可随时向路灯监控器发出查询指令,对各路灯监控器的运行状态、电流、电压、门开状态等数据进行查询。
路灯监控器硬件设计
路灯监控器在硬件电路设计上,根据其功能划分,由六部分组成(见图2)。
图2 路灯监控器功能结构图
电路图如图3所示。
图3 路灯监控器电路
时钟存储单元
时钟芯片选择了高精度实时时钟芯片-SD2000BPI 。该芯片具有内置晶振、I2C总线接口、定时中断输出 、高精度、免调校的特点。同时该时钟芯片内部含有EEPROM,用于存储开关灯时间表等信息:
每组开/关灯时间包括2个字节,每个字节由2位BCD码组成,由高到低分别为时、分。
每组报警时间包括4个字节,每个字节由2位BCD码组成,由高到低分别为年、月、日、时、分、秒。默认值为00H。
路灯监控器编号2个字节,可以表示00~65536数值。
路灯监控器的工作状态包括:报警状态(ZT0)、门开状态(ZT1)、手动/三遥状态(ZT2)、全夜灯状态(ZT3)、半夜灯状态(ZT4)、景观灯状态(ZT5)。用连续的7个字节表示。
监控器可以监测9路工作电流,利用二个存储单元的9个存储位,分别存储被监测的电流的监测状态。
电压电流采集
电压及电流采集部分采用山东力创的EDA9016模拟量测量模块,它可以采集12路电压输入信号,测量信号的输入范围0~10V,测量精度0.2级,其输出采用RS-485总线。
将欲监测的电压、电流通过电压互感器、电流互感器感应出0~10V的电压,输出给EDA9016的模拟量输入端,EDA9016通过RS-485总线与监控器的单片机连接,路灯监控器可以按照EDA9016的通讯协议,采集各路的电压及电流,通过通讯服务器的查询命令发送给客户端软件,实现路灯工作参数的自动监测,对电压欠压、电压过压、欠流、过流及时作出报警。
串口扩展
由于CPU采用PHILIPS的P89C51RD+芯片,该CPU只有一个串口,在本设计中用于同GPRS模块通信。而多功能表和EDA9033均采用RS-485接口,所以要利用CPU普通IO口模拟SPI接口与MAX3100通信,MAX3100的串口再和MAX485相连,从而产生EDA9033和多功能电表需要的RS-485接口。
GPRS模块
GPRS模快提供RS-232接口与外界通信,透明传输模式,应用十分方便。在本设计中采用一片MAX232芯片,通过CPU和GPRS模块进行通信。
控制执行单元
控制执行部分采用三级管驱动继电器,继电器控制交流接触器的办法。在三级管和CPU IO口之间采用光耦隔离,防止继电器吸合对系统产生的干扰。
其他设计
由于路灯监控器工作在无人职守的地方,为了路灯监控器的安全防盗,设计时在路灯监控器的门上,安装了磁控开关,当门开时开关断开,路灯监控器判断这个开关的状态,当门开时,路灯监控器路灯监控器先将报警类型、报警时间存储在路灯监控器的存储器内,然后通过GPRS无线通讯终端将门开信息发送给通讯服务器,通讯服务器在转发给客户端,以便及时通知检修人员对门开进行处理。
路灯监控器软件设计
本系统软件采用keil C作为开发工具。除CPU程序外,还要开发一个对时钟芯片进行时间预置的程序,以便于批量生产。
路灯监控器的工作流程如下:首先进入上电初始化程序,对路灯监控器的状态进行初始化,包括全夜灯、半夜灯状态、手动三遥状态、报警状态等变量进行初始化。然后初始化MAX3100和时钟芯片,读取设备的编号,初始化串口,读取当前的电压电流,然后进入主循环程序。
系统采用中断方式接收GPRS串口数据,根据通信协议规定的数据格式判断接收的数据是否正确,并能在规定的时间内接收不到数据后自动返回主程序,串口中断子程序为:
while ((RI==0)&&(xj<5000))
{ Wdi=~Wdi; xj++; }
if((xj>=5000)||(SBUF!=Device_Codeh))
{ RI=0;return; } //B1!=Device_Codel
else
{ xj=0; RI=0; }
一帧数据接收完毕后,给串口中断标志置位,然后在主程序中判断传口中断标志,如果该标志被置位,则开始判断控制位,并进入相应的子程序,如设置开关灯时间,查询工作参数,查询工作状态,实时开灯,实时关灯等,在执行完相应的子程序后将中断标志复位。
控制位判断程序为:
if (sflag)
{
IE=0x00;
switch (Gprs_Data[0])
{
case 0x01: /*实时开灯*/
{ res1(); }break;
case 0x02:
{ res2();}break;
。。。
case 0x0c:
{ resc(); }break;
default: {erro_report();} break;
}
sflag=0;
}
在主循环中同时执行自动开关灯的处理和门开报警的判断。
为了实现路灯监控器与通讯服务器的可靠通讯,制定合理的通讯协议,具有非常重要的意义。在制定协议时,充分考虑协议的格式,使之规范化,使之具有良好的扩展性,规定好协议的起始标志、设备的编号、设备类型、控制码、控制类型、数据长度、数据域、结束标志及如何进行校验等,达到预期的功能,又最精简。
现举例如下:
实时开灯帧(C = 01H)
功能:通信服务器请求路灯监控器立即开灯。
帧格式:
F (回应标志):默认值;
C (控制码): 01H;
CT (控制类型): 01H表示全夜灯负载, 02H表示半夜灯负载,03H表示景观灯负载, 04H表示全夜灯和半夜灯负载,05H全夜灯和景观灯负载, 06H半夜灯和景观灯负载,
FFH表示所有路灯负载;
I (后续帧标志):默认值;
L (数据长度): L=00H;
D (数据域): 无数据域;
结语
本系统采用51单片机作为主CPU,成本低,实时性高,已经完成样机试制,通过相关测试,并投入小批量生产。本产品已经应用于城市路灯监控系统,运行稳定,取得了良好的社会效益和经济效益。
参考文献:
1. 马忠梅,单片机C语言Windows环境编程宝典,北京航空航天大学出版社,2004年4月
2. 张毅刚,新编MCS-51单片机应用设计,哈尔滨工业大学出版社,2004年11月