??? 摘? 要: 介紹了一種基于令牌存儲(chǔ)技術(shù)的采集器設(shè)計(jì)方法,使用此方法設(shè)計(jì)的采集器,不僅保證采集到的數(shù)據(jù)準(zhǔn)確、安全保存和傳輸,而且當(dāng)系統(tǒng)出現(xiàn)故障時(shí),可以通過(guò)原有數(shù)據(jù)對(duì)系統(tǒng)進(jìn)行恢復(fù),提高了系統(tǒng)的安全性。?
??? 關(guān)鍵詞: 數(shù)據(jù)采集; 單片機(jī); 采集器; 載波抄表
?
??? 隨著國(guó)家電力系統(tǒng)兩網(wǎng)改造工程的逐漸推進(jìn)及“一戶一表,供電到戶”政策的貫徹實(shí)施,電力用戶數(shù)量急劇膨脹,用電網(wǎng)絡(luò)日益龐大,供電企業(yè)的用電管理任務(wù)也越來(lái)越重,加之國(guó)家供電的發(fā)送配分開,更要求供電企業(yè)加大對(duì)各大中小電戶的監(jiān)控力度。而傳統(tǒng)的抄收方式主要是依靠人工每月定期上門抄取,這種做法不僅耗費(fèi)大量的人力物力,工作效率低,給用戶帶來(lái)諸多不便,同時(shí)發(fā)生電費(fèi)拖欠現(xiàn)象,造成電力公司的損失。低壓電力線載波遠(yuǎn)程抄表系統(tǒng)是利用現(xiàn)有的低壓電力網(wǎng)和公共電話網(wǎng)作為數(shù)據(jù)采集與傳輸通道,不僅從根本上克服了人工抄表帶來(lái)的諸多缺點(diǎn),實(shí)現(xiàn)了對(duì)用戶用電量的自動(dòng)抄表及收費(fèi)管理等多種功能,而且具有施工量小、可靠性高、成本低等優(yōu)點(diǎn)。?
??? 但現(xiàn)有低壓電力線載波遠(yuǎn)程抄表系統(tǒng)由于各種原因,存在這樣或那樣的弊端,例如負(fù)荷情況復(fù)雜、噪聲干擾強(qiáng)且具有時(shí)變性、信號(hào)衰減大、信道容量小等。如何克服這些缺點(diǎn),是現(xiàn)階段低壓電力線載波遠(yuǎn)程抄表系統(tǒng)設(shè)計(jì)的主要目標(biāo)。本文所用的基于令牌存儲(chǔ)技術(shù)的采集器設(shè)計(jì)與實(shí)現(xiàn)技術(shù),就是為了克服以上缺點(diǎn)的一種方法[1-4]。?
1 采集器硬件設(shè)計(jì)?
1.1 采集器電路設(shè)計(jì)?
??? 采集器的電路設(shè)計(jì)如圖1所示。采集器是數(shù)據(jù)進(jìn)行采集、累計(jì)、傳輸?shù)牟考?,其設(shè)計(jì)的好壞將直接影響整個(gè)抄表系統(tǒng)的正確性。所以,采集器的設(shè)計(jì)是整個(gè)系統(tǒng)設(shè)計(jì)最為關(guān)鍵的一步,在設(shè)計(jì)采集器時(shí),需做到以下三點(diǎn):?
??? (1)實(shí)時(shí)記錄電表脈沖信號(hào),并按要求保存,可根據(jù)脈沖個(gè)數(shù)等參數(shù)計(jì)算出當(dāng)前電表度數(shù)。?
??? (2)可實(shí)現(xiàn)繼電器控制、狀態(tài)監(jiān)視并可記錄繼電器狀態(tài)。?
??? (3)可讀取電表度數(shù)、電表地址等信息,并可對(duì)其進(jìn)行參數(shù)設(shè)置,進(jìn)行欠費(fèi)指示、繼電器通斷等控制。?
?
?
1.2? 采集器各部分功能?
??? 采集器總體結(jié)構(gòu)如圖2表示,其各部分功能如下:?
?? (1)485通信芯片:主要實(shí)現(xiàn)采集器與上位機(jī)之間的通信,從而可以從采集器的存儲(chǔ)器中讀取相關(guān)數(shù)據(jù),其具體通信協(xié)議以國(guó)家標(biāo)準(zhǔn)為主。?
??? (2)狀態(tài)指示:指示當(dāng)前電表的工作狀態(tài),由3只二極管組成,其中一只表示正常工作;另一只表示用戶欠費(fèi);第三只表示繼電器動(dòng)作,切斷用戶電表。?
??? (3)狀態(tài)檢測(cè):在系統(tǒng)掉電或重新啟動(dòng)時(shí),確保啟動(dòng)時(shí)的狀態(tài)與掉電前的狀態(tài)相符合。?
??? (4)脈沖采樣:完成脈沖的采集與計(jì)數(shù)任務(wù)。?
??? (5)存儲(chǔ)控制:主要存儲(chǔ)電表的地址、初始值、變比參數(shù)、已有的脈沖個(gè)數(shù)、已記錄的電表數(shù)及繼電器在系統(tǒng)掉電前的狀態(tài)。?
?
?
2 采集器軟件設(shè)計(jì)?
2.1 基于令牌存儲(chǔ)技術(shù)的數(shù)據(jù)存儲(chǔ)設(shè)計(jì)?
??? 在進(jìn)行采集器的設(shè)計(jì)時(shí),數(shù)據(jù)準(zhǔn)確、安全地存儲(chǔ)和傳輸是非常重要的,其結(jié)果決定著其他部分的正常工作。但由于采集器工作在現(xiàn)場(chǎng)的最前端,容易受到環(huán)境的影響,如采集器的突然掉電、數(shù)據(jù)在存儲(chǔ)過(guò)程中突然受到計(jì)數(shù)脈沖中斷的影響等,這些都會(huì)導(dǎo)致寫到存儲(chǔ)器中的數(shù)據(jù)不準(zhǔn)確。如何克服這些不足,是采集器設(shè)計(jì)過(guò)程中的一個(gè)難點(diǎn)。根據(jù)采集器的實(shí)際工作環(huán)境,本文提出一種基于令牌儲(chǔ)存技術(shù)的數(shù)據(jù)存儲(chǔ)設(shè)計(jì)方法,該方法能很好地解決數(shù)據(jù)存儲(chǔ)過(guò)程中的不準(zhǔn)確和不安全現(xiàn)象。?
??? 該方法的具體思路為:在存儲(chǔ)區(qū)中開辟三個(gè)互不相連的存儲(chǔ)空間,分別定義為ADDR1、ADDR2、ADDR3,每個(gè)存儲(chǔ)區(qū)又分為兩部分,第一部分存儲(chǔ)令牌,用tokening表示(用一個(gè)整數(shù)表示),第二部分存儲(chǔ)當(dāng)前電表度數(shù),用memdata表示。下面詳細(xì)說(shuō)明本算法的思想。?
??? (1)系統(tǒng)初始參數(shù):當(dāng)系統(tǒng)第一次使用時(shí),把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)值全部設(shè)置為零,把ADDR1.memdata、ADDR2.memdata和ADDR3.memdata中的數(shù)據(jù)設(shè)置為0、0.01、0.02(其中0.01代表0.01度電)。?
??? (2)當(dāng)用電量有0.01度時(shí),需要將這0.01度電加到存儲(chǔ)區(qū)的用電度數(shù)中。首先把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)相加,其和為0時(shí),則把ADDR1.memdata中的數(shù)據(jù)加0.01,同時(shí)改變ADDR1.tokening中的數(shù)據(jù),使其為1。?
??? (3)當(dāng)用電量第二次到0.01度時(shí),把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)相加,其和為1時(shí),由此可以得到ADDR1.memdata剛被存儲(chǔ)過(guò),把ADDR2.memdata中的數(shù)據(jù)加0.01,改變ADDR2.tokening中的數(shù)據(jù),使其為2。?
??? (4)當(dāng)用電量第三次到0.01度時(shí),把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)相加,其和為3時(shí),由此可以判斷ADDR1.memdata和ADDR2.memdata已經(jīng)存儲(chǔ)過(guò),把ADDR3.memdata中的數(shù)據(jù)加0.01,改變ADDR3.tokening中的數(shù)據(jù),使其為4。?
??? (5)當(dāng)用電量第四次到0.01度時(shí),把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)相加,其和為7,這時(shí)可以判斷ADDR1.memdata、ADDR2.memdata和ADDR3.memdata都已經(jīng)被存儲(chǔ)過(guò)了,重新從ADDR1.memdata開始存數(shù),把ADDR1.memdata中的數(shù)據(jù)加0.01,改變ADDR1.tokening中的數(shù)據(jù),使其為0。?
??? (6)當(dāng)用電量第五次到0.01度時(shí),把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)相加,其和為6,這時(shí)可以判斷ADDR1.memdata中數(shù)據(jù)剛改變,應(yīng)該把數(shù)據(jù)存儲(chǔ)到ADDR2.memdata中,把ADDR2.memdata中的數(shù)據(jù)加0.01,并把ADDR2.tokening中的數(shù)據(jù)改為0。?
??? (7)當(dāng)用電量第六次到0.01度時(shí),把ADDR1.tokening、ADDR2.tokening和ADDR3.tokening中的數(shù)據(jù)相加,其和為4,這時(shí)可以判斷ADDR1.memdata和ADDR2.memdata都已經(jīng)被存儲(chǔ)過(guò)了,應(yīng)該把ADDR3.memdata中的數(shù)據(jù)加0.01度,并把ADDR3.tokening中的數(shù)據(jù)改為0。這時(shí)的令牌狀態(tài)又重新回到了初始狀態(tài),并且保證了數(shù)據(jù)區(qū)中的數(shù)據(jù)相差0.01度電,當(dāng)有新的數(shù)據(jù)到來(lái)時(shí),令牌數(shù)據(jù)又重新從初始狀態(tài)開始。??
??? (8)錯(cuò)誤處理:當(dāng)系統(tǒng)掉電或被其他干擾影響時(shí),經(jīng)常會(huì)出現(xiàn)存儲(chǔ)數(shù)據(jù)不正確的現(xiàn)象,如果使用上述存儲(chǔ)方法,可以克服這些錯(cuò)誤。每次在更改存儲(chǔ)區(qū)中的數(shù)據(jù)或向上位機(jī)發(fā)送電表度數(shù)時(shí),都會(huì)首先把三組存儲(chǔ)區(qū)中的數(shù)據(jù)和令牌值取出來(lái),然后根據(jù)令牌值,把三組數(shù)據(jù)兩兩相減,根據(jù)數(shù)據(jù)間的差額可以判斷三組存儲(chǔ)區(qū)中的數(shù)據(jù)是否正確,若正確才進(jìn)行改變或發(fā)送,否則可以根據(jù)另外兩組數(shù)據(jù)來(lái)還原其中一組數(shù)據(jù),從而保證整個(gè)數(shù)據(jù)在系統(tǒng)運(yùn)行期間的正確性。?
2.2 軟件系統(tǒng)設(shè)計(jì)?
??? 軟件設(shè)計(jì)的任務(wù)主要是實(shí)現(xiàn)采集器的各部分功能,如圖3所示。包括485芯片通信功能設(shè)計(jì)、脈沖采集設(shè)計(jì)、數(shù)據(jù)存儲(chǔ)設(shè)計(jì)、狀態(tài)檢測(cè)設(shè)計(jì)、系統(tǒng)初始化等部分功能。?
??? 基于令牌儲(chǔ)存技術(shù)設(shè)計(jì)思想設(shè)計(jì)的采集器,極大地提高了采集器的穩(wěn)定性和數(shù)據(jù)的正確性。采用本技術(shù)設(shè)計(jì)的采集器,在河南鄭州、濟(jì)源、周口等地市使用,其抄表成功率在99.8%以上,很好地滿足了用戶要求。?
參考文獻(xiàn)?
[1] 張德銘,王森,付民修. 電力系統(tǒng)中低壓自動(dòng)抄表系統(tǒng)綜述[J].電力學(xué)報(bào),2005,20(2).?
[2] 湯效軍.電力線載波通信技術(shù)的發(fā)展及特點(diǎn)[J]. 電力系統(tǒng)通信,2003(1).?
[3] 何海波,周擁華,吳昕,等.低壓電力線載波通信研究與應(yīng)用現(xiàn)狀[J].繼電器,2001,29(7).?
[4] 付麗君,曲宙強(qiáng),程杰,等. 基于電力擴(kuò)頻載波的集中抄表系統(tǒng)(AMR)[J]. 繼電器,2004,32(6).