多用戶智能電表中的數(shù)據(jù)安全存儲技術(shù)
多用戶智能電表是以MCU為核心、以大規(guī)模電量采集模塊而構(gòu)成的一種電量數(shù) 據(jù)采集儀表,具有多用戶電量采集、數(shù)據(jù)遠(yuǎn)程傳輸、用戶供電控制、復(fù)費(fèi)率電量計(jì)量等先進(jìn) 功能,體積小,功能強(qiáng),深受集中供電場所如高校學(xué)生宿舍、智能化小區(qū)等用戶歡迎。為提高儀表使用的靈活性,存在一些可編程的參數(shù),如儀表編號、計(jì)量戶數(shù)、通訊速率、電表脈沖常數(shù)、復(fù)費(fèi)率時段時間值、各戶供電狀態(tài)等,以及其計(jì)量的數(shù)據(jù),即各用戶的用電量。這些數(shù)據(jù)一旦受到干擾遭到破壞,不僅儀表不能正常工作,還將給用戶 造成經(jīng)濟(jì)損失,引發(fā)經(jīng)濟(jì)糾紛,因此必須保證數(shù)據(jù)的可靠性、安全性、非易失性。如何保護(hù) 這些要求非易失性存儲的關(guān)鍵數(shù)據(jù)不被破壞,確保數(shù)據(jù)的安全,對于多用戶智能電表設(shè)計(jì)具 有非常重要的意義。
儀表工作原理:各用戶的用電量,通過大規(guī)模電能計(jì)量集成電路(如BL0933、ADE7755等)將其轉(zhuǎn)化為與電量成正比的脈沖量,經(jīng)光電耦合電路后,由開關(guān)量輸入接口被CPU采入內(nèi)存中,CPU根據(jù)采集的脈沖量,對各用戶的用電量進(jìn)行累加,將其存入非易失存儲器中,并由顯示電路輪流顯示出各戶的用電量。通過遠(yuǎn)程通信接口電路(如RS485、CAN總線)實(shí)現(xiàn)測量數(shù)據(jù)的遠(yuǎn)程傳輸。
為提高儀表的可靠性,在數(shù)據(jù)采集電路和遠(yuǎn)程傳輸電路中都設(shè)計(jì)了光電隔離電路,設(shè)計(jì)了由X5045芯片構(gòu)成的獨(dú)立的看門狗電路,為實(shí)現(xiàn)參數(shù)和數(shù)據(jù)的非易失存儲,儀表中采用了兩種存儲器,一種是X5045內(nèi)部的512字節(jié)的非易失存儲器;另一種是獨(dú)立的直接與CPU接口的非易失存儲器W24C16。兩種存儲器相互配合,配以軟件措施,實(shí)現(xiàn)數(shù)據(jù)的非易失、高可靠存儲。
影響數(shù)據(jù)安全的主要原因有以下幾個方面:
(1)上電、掉電、電源跌落過程中,電源沖擊對存儲器芯片的影響;
(2)上電、掉電、電源跌落過程中,CPU不能可靠復(fù)位,導(dǎo)致程序跑飛改寫數(shù)據(jù);
(3)程序運(yùn)行過程中受到各種干擾導(dǎo)致程序跑飛改寫數(shù)據(jù)。
針對以上原因,硬件、軟件設(shè)計(jì)應(yīng)采取相應(yīng)措施,確保數(shù)據(jù)存儲的安全可靠。?
2數(shù)據(jù)安全的硬件措施
(1)采用集成看門狗芯片X5045,將其復(fù)位輸出端直接與系統(tǒng)各芯片的復(fù)位端 相連,在上電、掉電、電源跌落過程中,實(shí)現(xiàn)可靠復(fù)位;同時,當(dāng)程序跑飛時,及時實(shí)現(xiàn)自動復(fù)位,減少數(shù)據(jù)被改寫的可能性。
(2)采用多重存儲媒體
對于非易失數(shù)據(jù)存儲,系統(tǒng)設(shè)計(jì)時采用了二重媒體存儲技術(shù),一是采用X5045內(nèi)帶有SPI接口的512字節(jié)的非易失存儲器;二是外擴(kuò)了一種非易失存儲器。將同一組數(shù)據(jù),存放到兩種存儲器中,可大大減少抗擾破壞的概率。正常運(yùn)行時,為提高數(shù)據(jù)讀寫速度,其運(yùn)算都安排在CPU內(nèi)部進(jìn)行。
(3)正確選擇非易失存儲器
目前,在線可擦寫非易失存儲器種類很多,第1類是E2PROM,其特點(diǎn)是可實(shí)現(xiàn)在線數(shù)據(jù)修改,寫入時間長,典型值為5~10 ms,寫入次數(shù)有限,典型值為1~100萬次。并行接口E2PROM與CPU連線較多,體積較大,讀寫控制容易,讀出速度快;串行E2PROM與CPU接口簡單,連線少,讀寫時間長,讀寫控制較復(fù)雜,可分為SPI接口、I2C總線接口、MPS接口等;第2類是非易失RAM,與普通RAM兼容,讀寫速度快,內(nèi)含鋰電池和數(shù)據(jù)保護(hù)電路,可實(shí)現(xiàn)非易失存儲,無寫保護(hù)引腳,價格較貴;第3類是FLASH MEMORY,主要用于大容量存儲數(shù) 據(jù)場所,如計(jì)算機(jī)的BIOS等;第4類是多功能芯片,如X5045中含有512字節(jié)的非易失存儲器,DS12887時鐘電路中含有256字節(jié)的非易失存儲器等。多用戶電表中的數(shù)據(jù),如用戶用電量,按每戶4字節(jié)計(jì)算(顯示范圍為:0.00~999 999.99),對16戶電表(適用于一梯兩戶、7層居民住宅、一戶一表、一路公用照明、一路備用),所需存儲容量僅為64字節(jié),因?yàn)榭偟拇鎯θ萘坎⒉欢?,所以以選串行接口存儲器為宜;另外,系統(tǒng)對用戶電量的讀寫不是很頻繁,讀寫速度不要求很快,加以數(shù)據(jù)可靠性要求很高,系統(tǒng)中選擇了X5045多功能芯片和I2C總線接口的E2PROM W24C16。
(4)正確設(shè)計(jì)接口電路
數(shù)據(jù)被改寫的原因是隨機(jī)干擾信號滿足了芯片寫時序的要求,執(zhí)行了非法的寫操作。如并行接口的存儲器芯片的CS、WR同時為低電平時即可完成一次寫操作,所以其抗擾性能要低于串行的E2PROM。對于W24C16芯片,要改寫其內(nèi)部的數(shù)據(jù),除了寫入數(shù)據(jù)時滿足一定的時序外,芯片本身具有寫保護(hù)引腳,其高電平有效時方可對其進(jìn)行寫操作。該寫保護(hù)引腳一般不應(yīng)直接接到電源上,應(yīng)將其接到CPU的某一可編程引腳,由CPU來控制該引腳的電平信號,以防止外來的干擾。?
3數(shù)據(jù)安全的軟件措施
硬件措施只是有效提高數(shù)據(jù)安全性的一個方面,在程序執(zhí)行過程中,系統(tǒng)受 到強(qiáng)烈干擾后,仍有跑飛改變數(shù)據(jù)的可能性,所以軟件設(shè)計(jì)中應(yīng)采取一定的措施,以正確識 別數(shù)據(jù)的有效性,對被破壞的數(shù)據(jù)采取一定的數(shù)據(jù)恢復(fù)措施,以盡可能地達(dá)到數(shù)據(jù)存儲的完整性、有效性。
3.1數(shù)據(jù)備份
在系統(tǒng)設(shè)計(jì)中,采用兩種方法實(shí)現(xiàn)數(shù)據(jù)備份操作:1)硬件設(shè)計(jì)中選用了X5045和W24C16兩種獨(dú)立的存儲器,實(shí)現(xiàn)存儲體的備份;2)在同一存儲體中,對同一批數(shù)據(jù)存于不同的存儲區(qū)域中,一般采用3重備份方案,這樣,同一時刻數(shù)據(jù)在兩種存儲器中有6個備份。采用不同的存儲器,并同時對采集數(shù)據(jù)進(jìn)行多個備份,可以大大提高數(shù)據(jù)的抗干擾性能。
3.2備份數(shù)據(jù)的表決
存于存儲器中的6份數(shù)據(jù),CPU定期對其進(jìn)行數(shù)據(jù)有效性檢驗(yàn),以觀察是否受到干擾。一般通過表決的方式,認(rèn)為其中有3份以上的數(shù)據(jù)相同,便認(rèn)為相同的數(shù)據(jù)為有效數(shù)據(jù),同時用其覆蓋掉不相同的數(shù)據(jù)備份,以保證數(shù)據(jù)的有效性和完整性。
3.3數(shù)據(jù)校驗(yàn)
一般情況下,通過備份數(shù)據(jù)表決可解決大部分的數(shù)據(jù)受擾問題,但在有些情況下,也會出現(xiàn) 數(shù)據(jù)表決失敗的情況。為此,還需對每一塊備份數(shù)據(jù)進(jìn)行校驗(yàn),并將校驗(yàn)值存于校驗(yàn)數(shù)據(jù)區(qū)域中。對備份數(shù)據(jù)表決失敗的情況,再對每一塊備份數(shù)據(jù)進(jìn)行校驗(yàn),比較其校驗(yàn)值是否和原來的一致,若一致,則認(rèn)為該備份數(shù)據(jù)有效,若不一致,則認(rèn)為該備份數(shù)據(jù)已遭到破壞。校 驗(yàn)算法可采用和校驗(yàn)、CRC校驗(yàn)等。對校驗(yàn)數(shù)據(jù)值亦可采用備份存儲的方法,以進(jìn)一步提高數(shù)據(jù)存放的可靠性。[!--empirenews.page--]
3.4寫方式控制
程序中有寫數(shù)據(jù)的要求,便存在數(shù)據(jù)被破壞的可能。為防止誤寫數(shù)據(jù),程序設(shè)計(jì)中設(shè)置寫請求口令變量,正常執(zhí)行的程序欲執(zhí)行一個寫流程時,需先設(shè)置一個寫請求口令變量,才可以調(diào)用寫數(shù)據(jù)子程序。而在寫數(shù)據(jù)子程序中,只有寫請求口令變量值與該流程的標(biāo)志值相同,方可進(jìn)行寫操作,寫完成后將自動復(fù)位寫請求口令變量。對不正確的寫請求口令變量值,寫子程序?qū)ζ洳挥枥頃⑵鋸?fù)位。
3.5回讀寫數(shù)據(jù)校驗(yàn)
對寫入串行E2PROM中的數(shù)據(jù),為防止在寫數(shù)據(jù)過程中受到干擾造成誤寫,寫完成后,再將剛寫入的數(shù)據(jù)讀出來,與要寫的數(shù)據(jù)相比較,看兩者是否一致,如一致,則說明數(shù)據(jù)已正確 寫入存儲器中,如不一致,則啟動重寫操作,直到數(shù)據(jù)寫入正確為準(zhǔn)。
3.6寫入次數(shù)限制
串行E2PROM每個單元都有寫入次數(shù)限制,要保證在儀表的使用期限內(nèi)寫入次數(shù)不超過廠家推薦的值,保證數(shù)據(jù)可靠性。儀表預(yù)計(jì)最大計(jì)量數(shù)據(jù)為999 999.99kWh,將用戶計(jì)量電能值分成兩部分進(jìn)行存儲,一部分為整數(shù)電量部分,最大數(shù)據(jù)為999 999,可滿足寫入次數(shù)限制;一部分為0.1 kWh存儲單元,如寫入次數(shù)被限制在10萬次,則每計(jì)量10 000 kWh,則需要更換存儲單元,程序根據(jù)整數(shù)電量滿10 000 kWh時,便更換存儲單元。對0.01 kWh計(jì)量,只有系統(tǒng)掉電時將其存入E2PROM中,正常運(yùn)行時存儲在單片機(jī)內(nèi)部RAM中。X5045的存儲 器分配如表1所示。
4結(jié)束語
多用戶智能化電表屬于計(jì)量儀表,其測量數(shù)據(jù)的正確性和可靠性都關(guān)系到供電方和用電方的切身經(jīng)濟(jì)利益。通過采取以上軟、硬件措施,數(shù)據(jù)存放的可靠性得到很大提高。同時,要想全面提高系統(tǒng)的可靠性和安全性,還要對系統(tǒng)的整體設(shè)計(jì)、系統(tǒng)應(yīng)用環(huán)境等進(jìn)行綜合考慮,采取電源濾波、儀表屏蔽、防雷等安全措施,才能取得最佳效果。