长期以来,供电管理部门对用户电量的统计一直是在人工抄表的基础上进行的,工作量大,直接影响供电部门的工作效率。随着计算机技术和网络技术的发展,自动电能计费系统应运而生。小区内的住户数量较多,甚至成千上尤,因此数据采集单元数目较多,它们与计算机之间的通信必须采用多级分级通信模式。本文介绍基于分级通信模式的住宅小区自动电能计费系统的实施方案。
一、系统构成
系统的结构如图1所示。系统采用分级通信方式,计算机和32个89C51单片机之间采用RS-485半双工接口。MAX232实现将RS-232接口信号电平转化为TTL电平。MAX483为+5V供电的RS-485接口的差分信号收发器,可以将TTL电平转化为RS-485的差分接口信号形式或进行相反方向的转换。每一个89C51单片机承担计算机和32个数据采集器89C52之间通信的中继任务。采用不同的口线分别控制89C51与计算机、数据采集器之间的通信。89C51和数据采集器89C52之间也采用RS-485半双工接口,由MAX483实现两种信号格式的转换。89C52单片机构成数据采集器,通过T0和T1完成1个住宅单元2户脉冲电度表的脉冲量的采集,从而进行电度量的换算。RS-485接口支持多级通信,允许总线上挂接32个驱动器,因此通过分级管理,计算机可连接32×32=1024个数据采集器,也就是1024×2=2048个用户的用电量的采集。如果在中间再增加1级89C51作为中继器,可以将用户数目扩大32倍,满足一般住宅小区的实际应用要求。
二、硬件连接电路
1.RS-232与RS-485之间的电路连接
RS-232接口信号格式转换成RS-485差分接口信号格式的电路连接如图2所示;通信中继器的电路连接如图3所示。
图3所示通信中继器的连接电路中,89C51和计算机之间、89C51和数据采集之间用1根双绞线进行半双工通信,分时实现发送和接收。由于使用1个串行口进行通信,为了避免发信号混乱,用P1.6控制1#MAX483的发数据允许位DE;用P1.7控制2#MAX483的发数据允许位DE。接收数据总是不同时进行,按先接收计算机发送的地址,再发送地址给数据采集器,最后接收数据采集器发送过来的数据顺序进行。采用多级通信方式,数据格式为11位,按先后顺序分别是:1位起始位、8位数据位、第9位用于识别发送或接收的是地址还是数据。每个通信中继单元有一个惟一的地址,分别为0~31,由接在P1口的拨动开关的设置来惟一确定。
2.电能数据采集器的组成
连接电路如图4所示。电能数据采集器计量电度的脉冲信号来自电能计量的专用集成电路芯片的脉冲输出端,通过光电耦合和施密特触发器整形后送至单片机89C52计数输入端T0和T1,采集每个住宅单元的2户脉冲电度表输出的脉冲量。T0和T1设置为方式2,初值为0FFFFH。当T0中断申请,在溢出中断服务程序中完成脉冲的计数和电量的递增。为了配合用电收费制度的改革(即用电为高峰用电期、低峰用电期和正常用电期),须对用电量进行实时统计(而不是定时的计算);同时为了保证电量采集和显示的精度,在软件设计中对用电量的计算分为1度位和0.1度位,采取了分别递增的措施,原因如下:
当电度表常数和脉冲常数确定后,通过计算可得1度电对应电度表输出的脉冲数K为常数,则0.1度电对应电度表输出的脉冲数为K/10,即有K/10个脉冲到来,因K/10不一定正好为整数,若舍去小数或对小数进行进位取整,必然产生累计误差。
分别递增的方法如下:T0(或T1)每检测到1个脉冲的下跳沿,TL0(或TL1)溢出中断1次,在中断服务程序中对K/10值寄存器和K值寄存器分别减1。K/10值寄存器减到0时,0.1度值寄存器递增0.1度,并对K/10值寄存器重新置初值;K值寄存器减到0时,度值寄存器递增1度,并对K值寄存器和K/10值寄存器重新置初值。这样在电量为整度时,累计误差将为0。
为了让用户及时了解自己的用电情况,数据采集器采用六位LED显示器显示总用电量,显示的量程为99999.9,显示的分辨率为0.1度。
TL7705CP为电源检测电路。数据采集器使用住户220V电源供电,当线路停电采集器工作电压由+5V降到4.75V以下时,系统复位,即由原来的高电平变为低电平,在外部中断0输入端产生下降沿即外部中断请求信号;在中断服务程序中将89C52内部RAM中的总电量和K/10值寄存器、K值寄存器内容在电源电压消失前的一段很短时间内存入串行EEPROM 24C02中,以备重新来电时将总电量和脉冲量取出。89C52的P1口外接拨动开关,用于惟一确定电能数据采集器的地址。设置外部中断0的中断优先级为高优先级。
三、通信工作流程及部分程序框图
1.通信工作流程
(1)计算机首先发送通信中继单元的地址0。
(2)32个通信中继器均接收这个地址,然后和自己的地址(由P1口的拨动开关惟一确定)比较,只有地址相等的通信中继器,发送数据采集器的地址才为0。
(3)地址为0的数据采集器将T0和T1采集的总电量先后发送给通信中继单元,通信中继单元再将接收的数据发送给计算机。
(4)重复第(3)步,直到将32个数据采集器的64个数据全部发送给计算机。
(5)计算机发送通信中继器的地址1。重复第(2)、(3)、(4)步,直到将32通信中继器的32×32×2=2048个数据全部发送给计算机,本次通信结束。
2.程序框图
(1)电能数据采集器
在数据采集器中,分为主程序和4个中断服务程序。4个中断源分别是电源掉电引起的外部中断0、T0和T1的溢出中断、串行中断。4个中断源中,外部中断0设置为高优先级中断,其余3个为同级的低优先级中断。当这3个中断源同时申请中断时,中断的贵州省顺序是:定时器0溢出中断、定时器1溢出中断和串行口中断。
主程序主要完成T0、T1和串行口的初始化,从24C02串行EEPROM中读取在电源电压消失前的一段很短时间内存入的总电量和K/10值寄存器、K值寄存器的计数值。
T0和T1中断服务程序中完成脉冲的计数和电量的递增。详细内容在上面已作详述。
外部中断0中断服务程序中将89C52内部RAM中的总电量和K/10值寄存器、K值寄存器在电源电压消失前的一段很短时间内存入串行EEPROM中,以备重新来电时将总电量和脉冲量取出。如图5所示为数据采集器串行通信的框图。
(2)通信中继器
主程序比较简单,主要进行串行口的初始化、开中断、等待串行口中断有产生。中断服务程序框图如图6所示。
结束语
本设计方案不仅适用于住宅小区自动电能计费系统,其设计思想同样适用于宾馆、粮仓、工业过程检测等多点数据采集的系统,具有广阔的应用前景。