电力营销缴费通知程序设计与实践

时间:2022-07-03 10:31:04

电力营销缴费通知程序设计与实践

一、概述

随着智能电网建设的不断推进,很多小区安装了预付费智能电表。这种电表极大的方便了电力公司电费收缴工作,减轻了工作量,减少了欠费。但由于这种电表当用户购电量小于一定额度时会自动断电,这给普通用户带来了很大的不便,极端情况下,突然断电会中断用户正在进行的工作,给用户带来损失。虽然在一些省市电力公司中,采取通过短信方式提醒用户及时缴费[1,2]。但在更多的电力公司,还没有实现此项功能,或者此项功能不够人性化,不能有效的提醒用户剩余电量及可用时间。经常发生的情况是,在晚上8、9点钟的时候,突然断电,使用户正在进行的工作由于断电而终止,这不仅会给用户带来很大的损失,而且严重影响了电力公司的企业形象,因此迫切需要一种方便而有效的方式告知用户的剩余电量并估算剩余电量的预计使用时间,从而方便用户合理安排缴费时间,也彰显电力公司的人性化服务。电子邮件是现代社会中人与人之间进行联系的一种快捷方式,很多人都有每天收取一次以上电子邮件的习惯。Oracle数据库在电力系统中有着广泛的应用,基于Oracle定时执行任务和PL/SQL支持发送电子邮件的特征,利用系统空闲时间为用户自动发送剩余电量及预测使用时间,可以有效地提醒用户及时缴费,避免出现断电的情况;同时,系统完全在数据库服务器端完成,无需重新开发和部署新的应用系统。综上所述,基于数据库服务器的用户剩余电量提醒及使用时间预测系统是一种可行和方便实施的方案。

二、系统设计

(一)数据结构

为了尽量减少系统改造工作,同时考虑开发一个新系统的工作量及维护难度,我们提出了基于数据库服务器端编程实现的技术方案,无需修改现有应用系统,通过在数据库服务器端创建一系列自动执行的任务自动完成此功能,无需或只需很少的维护工作。在一般用电信息采集系统中,至少包括用户用电信息的两个关系表,一个是流水记录表,另一个是用户的缴费表,表的结构大概如下:流水表记录每隔15分钟或更多时间用户的用电数据,一般是通过定时采集用户智能电表的数据,是一个历史记录表;缴费表记录用户的剩余电量及购买电量信息。两表之间通过用户编号进行关联。

(二)剩余电量使用时间预测

电网短期负荷预测是保证电网安全稳定经济运行的一项重要的基础性工作,是合理安排电网开机方式、电力电量平衡的重要依据。同时,有效的电力短期负荷预测也是实现实时电价的基础。电力短期负荷预测通常是指1小时或24小时的日负荷预测或168小时的周负荷预测,本文主要预测的是时或日平均负荷,对于短期负荷预测,一般要求具有较高的准确性和能够实时预测。为了帮助用户合理安排缴费时间,系统需要告知用户剩余电量的预计使用时间,这里需要使用电力负荷预测技术。基于用户的历史数据,为用户提供三个层次的用电量预测:剩余电量是否够下一个月使用;是否够未来五天使用;是否够未来一天使用。电力负荷预测技术有多种[3],这里为了提高系统的执行效率,采用历史数据取平均值的预测方法。具体方法如下:假设某月或某天的历史用电量为:P1,P2,…,Pn,则当月或当天的用电量可以估计为,历史上同期用电量的平均值:Pn+1=(P1+P2+…+Pn)/n(1)其中,P1,P2,…,Pn为历史同期用电量,Pn+1为预测用电量,n为历史数据的个数。实践证明,当历史数据量较大时,预测方式较为准确。

三、系统实现

(一)自动执行任务实现

在电力系统中,普遍采用高性能的Oracle数据库作为数据存储介质。Oracle数据库拥有丰富的编程功能,可以完成复杂的业务逻辑,所以我们通过自定义任务来完成。判断剩余电量是否满足下一个月使用的程序每月第一天运行一次,实例的代码如下:Selectsum(用电量)into总用电量from流水表whereto_char(采集时间,’mm’)=to_char(sysdate,’mm’);Select总用电量/(to_number(to_char(sysdate,’yyyy’))-to_number(to_char(min(采集时间),’yyyy’)))into本月预测电量from流水表;If本月预测电量>剩余电量then发送电子邮件;Endif;判断用户剩余电量是否满足未来一天或5天的代码每天运行一次,为了不影响系统的日常业务处理,程序在每天晚上12点运行或安排在系统空闲时间运行。---获取历史上本天用电量合计数据Selectsum(用电量)into总用电量from流水表whereto_char(采集时间,’mm’)=to_char(sysdate,’mm’)andto_char(采集时间,’dd’)=to_char(sysdate,’dd’);selectcount(distinctto_char(采集时间,’yyyy-mm’))into总天数from流水表;if总用电量/总天数>剩余电量then发送电子邮件ElseSelectsum(用电量)into总用电量2from流水表Where(to_char(采集时间,’mm’)=to_char(sysdate+1,’mm’)andto_char(采集时间,’dd’)=to_char(sysdate+1,’dd’))or(to_char(采集时间,’mm’)=to_char(sysdate+2,’mm’)andto_char(采集时间,’dd’)=to_char(sysdate+2,’dd’))or(to_char(采集时间,’mm’)=to_char(sysdate+3,’mm’)andto_char(采集时间,’dd’)=to_char(sysdate+3,’dd’))or(to_char(采集时间,’mm’)=to_char(sysdate+4,’mm’)andto_char(采集时间,’dd’)=to_char(sysdate+4,’dd’));if(总用电量2+总用电量)/(总天数)>剩余电量then发送电子邮件endif;Endif;通过调用Oracle的dbms_job包中的存储过程,将任务加入到任务队列中,存储过程的声明如下:dbms_job.submit(joboutbinary_integer,whatinarchar2,next_dateindate,intervalinvarchar2,no_parseinboolean)其中:job:输出变量,是此任务在任务队列中的编号;what:执行的任务的名称及其输入参数;next_date:任务执行的时间;interval:任务执行的时间间隔。在Oracle8i以后的数据库中引入了UTL_SMTP包(SMTP代表SimpleMailTransferProtocol简单邮件传送协议,使用TCP端口25在客户机和服务器之间建立通信联络),使开发者能够从数据库发送电子邮件。

(二)系统优化

在流水表中存储的数据量很大,基于这样的大表进行统计计算,效率较低,为了提高统计计算的效率,见两个统计表,一个是月度统计表,一个是天统计表,分表记录用户每月的历史用电量和每天历史用电量,这样在预测用户下一阶段电力需求的时候可以通过统计表获取。

四、结论

本文探讨了在智能电网建设中,随着智能电表的普及,通过数据库服务器的定时任务执行功能,为用户提供多层次的剩余电量使用时间预测功能,帮助用户及时了解自己的剩余电量及预计使用时间,从而方便用户及时缴费,避免出现突然断电的情况,也体现了供电公司的社会责任。