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