電力營銷繳費通知程序設計與實踐

時間:2022-07-03 10:31:04

導語:電力營銷繳費通知程序設計與實踐一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

電力營銷繳費通知程序設計與實踐

一、概述

隨著智能電網建設的不斷推進,很多小區安裝了預付費智能電表。這種電表極大的方便了電力公司電費收繳工作,減輕了工作量,減少了欠費。但由于這種電表當用戶購電量小于一定額度時會自動斷電,這給普通用戶帶來了很大的不便,極端情況下,突然斷電會中斷用戶正在進行的工作,給用戶帶來損失。雖然在一些省市電力公司中,采取通過短信方式提醒用戶及時繳費[1,2]。但在更多的電力公司,還沒有實現此項功能,或者此項功能不夠人性化,不能有效的提醒用戶剩余電量及可用時間。經常發生的情況是,在晚上8、9點鐘的時候,突然斷電,使用戶正在進行的工作由于斷電而終止,這不僅會給用戶帶來很大的損失,而且嚴重影響了電力公司的企業形象,因此迫切需要一種方便而有效的方式告知用戶的剩余電量并估算剩余電量的預計使用時間,從而方便用戶合理安排繳費時間,也彰顯電力公司的人性化服務。電子郵件是現代社會中人與人之間進行聯系的一種快捷方式,很多人都有每天收取一次以上電子郵件的習慣。Oracle數據庫在電力系統中有著廣泛的應用,基于Oracle定時執行任務和PL/SQL支持發送電子郵件的特征,利用系統空閑時間為用戶自動發送剩余電量及預測使用時間,可以有效地提醒用戶及時繳費,避免出現斷電的情況;同時,系統完全在數據庫服務器端完成,無需重新開發和部署新的應用系統。綜上所述,基于數據庫服務器的用戶剩余電量提醒及使用時間預測系統是一種可行和方便實施的方案。

二、系統設計

(一)數據結構

為了盡量減少系統改造工作,同時考慮開發一個新系統的工作量及維護難度,我們提出了基于數據庫服務器端編程實現的技術方案,無需修改現有應用系統,通過在數據庫服務器端創建一系列自動執行的任務自動完成此功能,無需或只需很少的維護工作。在一般用電信息采集系統中,至少包括用戶用電信息的兩個關系表,一個是流水記錄表,另一個是用戶的繳費表,表的結構大概如下:流水表記錄每隔15分鐘或更多時間用戶的用電數據,一般是通過定時采集用戶智能電表的數據,是一個歷史記錄表;繳費表記錄用戶的剩余電量及購買電量信息。兩表之間通過用戶編號進行關聯。

(二)剩余電量使用時間預測

電網短期負荷預測是保證電網安全穩定經濟運行的一項重要的基礎性工作,是合理安排電網開機方式、電力電量平衡的重要依據。同時,有效的電力短期負荷預測也是實現實時電價的基礎。電力短期負荷預測通常是指1小時或24小時的日負荷預測或168小時的周負荷預測,本文主要預測的是時或日平均負荷,對于短期負荷預測,一般要求具有較高的準確性和能夠實時預測。為了幫助用戶合理安排繳費時間,系統需要告知用戶剩余電量的預計使用時間,這里需要使用電力負荷預測技術?;谟脩舻臍v史數據,為用戶提供三個層次的用電量預測:剩余電量是否夠下一個月使用;是否夠未來五天使用;是否夠未來一天使用。電力負荷預測技術有多種[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在客戶機和服務器之間建立通信聯絡),使開發者能夠從數據庫發送電子郵件。

(二)系統優化

在流水表中存儲的數據量很大,基于這樣的大表進行統計計算,效率較低,為了提高統計計算的效率,見兩個統計表,一個是月度統計表,一個是天統計表,分表記錄用戶每月的歷史用電量和每天歷史用電量,這樣在預測用戶下一階段電力需求的時候可以通過統計表獲取。

四、結論

本文探討了在智能電網建設中,隨著智能電表的普及,通過數據庫服務器的定時任務執行功能,為用戶提供多層次的剩余電量使用時間預測功能,幫助用戶及時了解自己的剩余電量及預計使用時間,從而方便用戶及時繳費,避免出現突然斷電的情況,也體現了供電公司的社會責任。