本發(fā)明具體涉及一種用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法及其電能表。
背景技術(shù):
隨著經(jīng)濟技術(shù)的發(fā)展和人們生活水平的提高,電能已經(jīng)成為了人們?nèi)粘Ia(chǎn)和生活中必不可少的二次能源,給人們的生產(chǎn)和生活帶來了無盡的便利。而電能表作為電力系統(tǒng)中計量點能的重要部件,其內(nèi)部的用電信息數(shù)據(jù)的存儲和提取則顯得更加重要。
目前,電能表的內(nèi)部電控系統(tǒng)均為嵌入式系統(tǒng),而現(xiàn)有的嵌入式系統(tǒng)的電能表,受運行環(huán)境及自身條件的限制,其在對用電信息數(shù)據(jù)進行存取管理時常會遇到以下四個難題:
1.嵌入式系統(tǒng)對于采集頻率高且數(shù)據(jù)項多的數(shù)據(jù),比如用戶的用電負荷曲線,其在數(shù)據(jù)的存儲時會導(dǎo)致頻繁進行文件寫入操作,從而大大縮短flash的使用壽命;
2.嵌入式系統(tǒng)的文件讀寫操作是需要有讀寫鎖保護的,而頻繁的文件寫入操作又會與讀取操作產(chǎn)生競爭,因而引發(fā)其他系統(tǒng)的異?,F(xiàn)象;
3.嵌入式系統(tǒng)受運行環(huán)境的限制,在異常情況下使用常規(guī)的文件緩存機制更容易導(dǎo)致文件損壞,從而難以滿足電力系統(tǒng)對用電信息數(shù)據(jù)存儲的可靠性方面的要求。
4.嵌入式系統(tǒng)經(jīng)常在無人值守的環(huán)境下長期運行,當(dāng)異常掉電導(dǎo)致文件損壞后,如不能自行恢復(fù)則影響到系統(tǒng)存取功能的正常工作。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的之一在于提供一種系統(tǒng)器件壽命長、系統(tǒng)可靠性高、更加適用于無人值守狀態(tài)的用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法。
本發(fā)明的目的之二在于提供一種應(yīng)用所述用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法的電能表。
本發(fā)明提供的這種用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法,包括如下步驟:
s1.關(guān)閉嵌入式系統(tǒng)的文件緩存功能,確保每次寫操作都將數(shù)據(jù)實時寫到了持久性文件中;
s2.在嵌入式系統(tǒng)啟動時,保證在嵌入式系統(tǒng)的flash中存在一個完整的持久性文件;
s3.嵌入式系統(tǒng)在采集用電信息數(shù)據(jù)時,在嵌入式系統(tǒng)的內(nèi)存中創(chuàng)建一個臨時性文件,并將所有采集的用電信息數(shù)據(jù)全部存儲在該臨時性文件中;
s4.嵌入式系統(tǒng)按照事先設(shè)定的規(guī)則,將存儲在臨時性文件中的用電信息數(shù)據(jù)一次性全部寫入持久性文件中,同時嵌入式系統(tǒng)更新用電信息數(shù)據(jù)從臨時性文件轉(zhuǎn)存到持久性文件中的時間,并刪除臨時性文件中已經(jīng)轉(zhuǎn)存的用電信息數(shù)據(jù);
s5.嵌入式系統(tǒng)獲取當(dāng)前需要讀取數(shù)據(jù)的時間標(biāo)記,并依據(jù)該時間標(biāo)記讀取所需數(shù)據(jù)。
步驟s2所述的保證在嵌入式系統(tǒng)的flash中存在一個完整的持久性文件,具體為嵌入式系統(tǒng)檢查flash中是否存在持久性文件,并按照如下規(guī)則保證持久性文件的存在:
若不存在持久性文件,嵌入式系統(tǒng)則創(chuàng)建一個持久性文件;
若存在持久性文件,嵌入式系統(tǒng)則檢查該持久性文件的完整性:若該持久性文件不完整,則對該持久性文件進行修復(fù);若修復(fù)失敗,則刪除該持久性文件,并再次創(chuàng)建一個新的完整的持久性文件。
步驟s3所述的將所有采集的用電信息數(shù)據(jù)全部存儲在該臨時性文件中,具體為采用如下規(guī)則進對采集的用電信息數(shù)據(jù)進行存儲:
若采集的用電信息數(shù)據(jù)為隨機性的用電信息數(shù)據(jù),或采集周期時間大于設(shè)定值x的數(shù)據(jù),則將該采集的用電信息數(shù)據(jù)直接存儲在持久性文件中,所述的設(shè)定值x的單位為天;
否則,將采集的數(shù)據(jù)存儲在臨時性文件中。
所述的隨機性的用電信息數(shù)據(jù)包括電能表的報警信息數(shù)據(jù)、硬件異常信息數(shù)據(jù)、電能表非法操作信息數(shù)據(jù)和用電異常信息數(shù)據(jù);所述用電異常信息數(shù)據(jù)包括失壓、失流、斷相、停上電等異常信息數(shù)據(jù)。
所述的x為1天。
步驟s4所述的嵌入式系統(tǒng)按照事先設(shè)定的規(guī)則將存儲在臨時性文件中的用電信息數(shù)據(jù)一次性全部寫入持久性文件中,具體為按照如下規(guī)則將臨時性文件中的用電信息數(shù)據(jù)一次性全部寫入持久性文件:
1)采用定時觸發(fā)的機制:每隔一段設(shè)定時間t后,將臨時性文件中的用電信息數(shù)據(jù)以打包方式一次性寫入持久性文件中;
2)根據(jù)數(shù)據(jù)采集周期,在每輪數(shù)據(jù)采集周期結(jié)束后,將臨時性文件中的用電信息數(shù)據(jù)以打包方式一次性寫入持久性文件中;
3)根據(jù)保存數(shù)據(jù)大?。寒?dāng)臨時性文件的大小超出事先設(shè)置的限定值z時,將臨時性文件中的用電信息數(shù)據(jù)以打包方式一次性寫入持久性文件中。
步驟s5所述的依據(jù)該時間標(biāo)記讀取所需數(shù)據(jù),具體為依據(jù)如下規(guī)則進行所需數(shù)據(jù)的讀取:
若時間標(biāo)記晚于最近一次的轉(zhuǎn)存時間,則嵌入式系統(tǒng)到臨時性文件中查找所需數(shù)據(jù),若臨時性文件中未查找到所需數(shù)據(jù)則再到持久性文件中查找所需數(shù)據(jù);
若時間標(biāo)記等于最近一次的轉(zhuǎn)存時間,則嵌入式系統(tǒng)先到臨時性文件中查找所需數(shù)據(jù),若臨時性文件中未查找到所需數(shù)據(jù)則再到持久性文件中查找所需數(shù)據(jù);
若時間標(biāo)記早于最近一次的轉(zhuǎn)存時間,則嵌入式系統(tǒng)到持久性文件中查找所需數(shù)據(jù),若持久性文件中未查找到所需數(shù)據(jù)則再到臨時性文件中查找所需數(shù)據(jù)。
所述的用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法,還包括如下步驟:
s6.嵌入式系統(tǒng)根據(jù)采集到的用電信息數(shù)據(jù)的時效性要求,周期性的對持久性文件中的數(shù)據(jù)標(biāo)記為刪除狀態(tài)。
所述的用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法,還包括如下步驟:
s7.嵌入式系統(tǒng)實時監(jiān)測持久性文件的大?。喝舫志眯晕募笥谑孪仍O(shè)定的上限值y,則嵌入式系統(tǒng)將現(xiàn)有的持久性文件中未被標(biāo)記為刪除狀態(tài)的數(shù)據(jù)轉(zhuǎn)存到新的持久性文件中,并將現(xiàn)有的持久性文件刪除。
所述的y為可用于存儲數(shù)據(jù)空間的65%。
本發(fā)明還提供了一種電能表,該電能表包括了所述用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法。
本發(fā)明提供的這種用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法及其電能表,通過設(shè)置持久性文件和臨時性文件的方式,利用臨時性文件作為緩存,從而對在一段時間內(nèi)多次對持久性文件寫入操作進行了合并,減少了對flash頻繁擦寫的次數(shù),因而延長了器件使用壽命;將頻繁的文件寫入操作移到了內(nèi)存中的臨時性文件中,減少了與持久性文件讀取操作的競爭,因而提高了系統(tǒng)可靠性;臨時性文件與永久性文件的各自獨立性保證了在發(fā)生異常時降低了持久性文件損壞的概率;系統(tǒng)啟動時會對已存在的持久性文件進行完整性檢查,如發(fā)現(xiàn)損壞可在運行前自行恢復(fù),更適應(yīng)無人值守的運行環(huán)境。
附圖說明
圖1為本發(fā)明方法的方法流程圖。
具體實施方式
如圖1所示為本發(fā)明方法的方法流程圖:本發(fā)明提供的這種用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法,包括如下步驟:
s1.關(guān)閉嵌入式系統(tǒng)的文件緩存功能,從而確保每次對文件的寫入操作都及時將數(shù)據(jù)完整的寫到了持久性文件中;
s2.在嵌入式系統(tǒng)啟動時,保證在嵌入式系統(tǒng)的flash中存在一個完整的持久性文件;具體為嵌入式系統(tǒng)檢查flash中是否存在持久性文件,并按照如下規(guī)則保證持久性文件的存在:
若不存在持久性文件,嵌入式系統(tǒng)則創(chuàng)建一個持久性文件;
若存在持久性文件,嵌入式系統(tǒng)則檢查該持久性文件的完整性:若該持久性文件不完整,則對該持久性文件進行修復(fù);若修復(fù)失敗,則刪除該持久性文件,并再次創(chuàng)建一個新的完整的持久性文件;
s3.嵌入式系統(tǒng)在采集用電信息數(shù)據(jù)時,在嵌入式系統(tǒng)的內(nèi)存中創(chuàng)建一個臨時性文件,并將所有采集的用電信息數(shù)據(jù)全部存儲在該臨時性文件中;具體為采用如下規(guī)則進對采集的用電信息數(shù)據(jù)進行存儲:
若采集的用電信息數(shù)據(jù)為隨機性的用電信息數(shù)據(jù)(所述的隨機性的用電信息數(shù)據(jù)包括電能表的報警信息數(shù)據(jù)、硬件異常信息數(shù)據(jù)、電能表非法操作信息數(shù)據(jù)和用電異常信息數(shù)據(jù);所述用電異常信息數(shù)據(jù)包括失壓、失流、斷相、停上電等異常信息數(shù)據(jù)),或采集周期時間大于設(shè)定值x(比如1天)的數(shù)據(jù),則將該采集的用電信息數(shù)據(jù)直接存儲在持久性文件中;
否則,將采集的數(shù)據(jù)存儲在臨時性文件中;
s4.嵌入式系統(tǒng)按照事先設(shè)定的規(guī)則,將存儲在臨時性文件中的用電信息數(shù)據(jù)一次性全部寫入持久性文件中,同時嵌入式系統(tǒng)更新用電信息數(shù)據(jù)從臨時性文件轉(zhuǎn)存到持久性文件中的時間,并刪除臨時性文件中已經(jīng)轉(zhuǎn)存的用電信息數(shù)據(jù);具體按照如下規(guī)則中的一條規(guī)則或若干條規(guī)則將臨時性文件中的用電信息數(shù)據(jù)一次性全部寫入持久性文件:
1)采用定時觸發(fā)的機制:每隔一段設(shè)定時間t后,將臨時性文件中的用電信息數(shù)據(jù)以打包方式一次性寫入持久性文件中;
2)根據(jù)數(shù)據(jù)采集周期,在每輪數(shù)據(jù)采集周期結(jié)束后,將臨時性文件中的用電信息數(shù)據(jù)以打包方式一次性寫入持久性文件中;
3)根據(jù)保存數(shù)據(jù)大?。寒?dāng)臨時性文件的大小超出事先設(shè)置的限定值z時,將臨時性文件中的用電信息數(shù)據(jù)以打包方式一次性寫入持久性文件中;
s5.嵌入式系統(tǒng)獲取當(dāng)前需要讀取數(shù)據(jù)的時間標(biāo)記,并依據(jù)該時間標(biāo)記讀取所需數(shù)據(jù);具體為依據(jù)如下規(guī)則進行所需數(shù)據(jù)的讀?。?/p>
若時間標(biāo)記晚于最近一次的轉(zhuǎn)存時間,則嵌入式系統(tǒng)到臨時性文件中查找所需數(shù)據(jù),若臨時性文件中未查找到所需數(shù)據(jù)則再到持久性文件中查找所需數(shù)據(jù);
若時間標(biāo)記等于最近一次的轉(zhuǎn)存時間,則嵌入式系統(tǒng)先到臨時性文件中查找所需數(shù)據(jù),若臨時性文件中未查找到所需數(shù)據(jù)則再到持久性文件中查找所需數(shù)據(jù);
若時間標(biāo)記早于最近一次的轉(zhuǎn)存時間,則嵌入式系統(tǒng)到持久性文件中查找所需數(shù)據(jù),若持久性文件中未查找到所需數(shù)據(jù)則再到臨時性文件中查找所需數(shù)據(jù);
s6.嵌入式系統(tǒng)根據(jù)采集到的用電信息數(shù)據(jù)的時效性要求,周期性的對持久性文件中的數(shù)據(jù)標(biāo)記為刪除狀態(tài);
s7.嵌入式系統(tǒng)實時監(jiān)測持久性文件的大?。喝舫志眯晕募笥谑孪仍O(shè)定的上限值y(比如可用于存儲數(shù)據(jù)空間的65%),則嵌入式系統(tǒng)將現(xiàn)有的持久性文件中未被標(biāo)記為刪除狀態(tài)的數(shù)據(jù)轉(zhuǎn)存到新的持久性文件中,并將現(xiàn)有的持久性文件刪除,從而能夠提高flash的存儲空間的利用率,減少刪除操作次數(shù)。
本發(fā)明提供的這種用于嵌入式系統(tǒng)的用電信息數(shù)據(jù)存取方法,其采用的臨時性文件進行數(shù)據(jù)臨時存儲以及采用持久性文件進行數(shù)據(jù)長期存儲的方式,不僅適用于電能表,也適用于其他任何采用嵌入式系統(tǒng)完成數(shù)據(jù)采集的設(shè)備,包括各類型的計量儀表(比如電能表、水表、燃氣表、熱量表等)、電能管理終端、配電終端、電能質(zhì)量監(jiān)控設(shè)備、電網(wǎng)自動化終端、采集終端、集中器、數(shù)據(jù)采集器、計量儀表、手抄器、故障指示器等。