專利名稱:用于電能表的軟件抗干擾方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件技術(shù)領(lǐng)域,具體講是用于電能表的軟件抗干擾方法。
背景技術(shù):
電能表一般采用單片機(jī)作為中央處理器,由于單片機(jī)測(cè)控系統(tǒng)在工業(yè)現(xiàn)場(chǎng)使用時(shí),工作環(huán)境比較惡劣,干擾源較多,其可靠性在整體系統(tǒng)設(shè)計(jì)中應(yīng)放在首位。干擾源會(huì)擾亂系統(tǒng)運(yùn)行,使系統(tǒng)產(chǎn)生各種錯(cuò)誤,所以在系統(tǒng)設(shè)計(jì)時(shí),不但要對(duì)硬件的可靠性進(jìn)行精心設(shè)計(jì),而且要對(duì)控制軟件的可靠性進(jìn)行很好的設(shè)計(jì),尤其是容錯(cuò)設(shè)計(jì),所謂“容錯(cuò)設(shè)計(jì)”是指系統(tǒng)運(yùn)行發(fā)生錯(cuò)誤時(shí),軟件本身具有一定的容忍錯(cuò)誤的能力,即系統(tǒng)運(yùn)行時(shí)雖發(fā)生錯(cuò)誤,錯(cuò)誤是指使系統(tǒng)數(shù)據(jù)信息損壞或丟失等,但可以不必停機(jī)修改硬軟件,系統(tǒng)仍能正確執(zhí)行預(yù)訂的操作。將很多完成特定功能的程序段組合成一個(gè)大的系統(tǒng)軟件時(shí),往往容易出現(xiàn)問題,系統(tǒng)軟件越大,各程序段之間的互相關(guān)聯(lián)越多,處理起來越困難。有些錯(cuò)誤是隱蔽的,孤立分析不易發(fā)現(xiàn);有些錯(cuò)誤是特定條件下才可能發(fā)生,如當(dāng)系統(tǒng)掉電重啟或復(fù)位時(shí),系統(tǒng)內(nèi)的數(shù)據(jù)信息很可能被改變,產(chǎn)生系統(tǒng)錯(cuò)誤。這些由于干擾產(chǎn)生的軟件錯(cuò)誤會(huì)使系統(tǒng)運(yùn)行不穩(wěn)定, 時(shí)好時(shí)壞,會(huì)使系統(tǒng)數(shù)據(jù)信息損壞或丟失,且停機(jī)修改硬軟件十分麻煩。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是,提供避免因外界干擾造成的系統(tǒng)運(yùn)行不穩(wěn)定,系統(tǒng)數(shù)據(jù)信息不會(huì)損壞或丟失,不必停機(jī)修改硬軟件系統(tǒng)仍能正確執(zhí)行預(yù)訂操作的用于電能表的軟件抗干擾方法。為解決上述技術(shù)問題,本發(fā)明提供的用于電能表的軟件抗干擾方法,它包括以下步驟
(1)、在軟件輸入數(shù)據(jù)信息時(shí),為每個(gè)數(shù)據(jù)信息分別設(shè)置唯一對(duì)應(yīng)的編碼進(jìn)行加密構(gòu)成一個(gè)記錄,再把每個(gè)記錄備份多份存儲(chǔ);
(2)、讀取信息時(shí)根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。所述的步驟1中的為每個(gè)數(shù)據(jù)信息分別設(shè)置唯一對(duì)應(yīng)的編碼進(jìn)行加密是指給組成每個(gè)數(shù)據(jù)信息的每個(gè)字節(jié)配置唯一對(duì)應(yīng)的編碼加密。所述的根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取是指
讀取存儲(chǔ)記錄時(shí),首先核對(duì)該記錄中的編碼,如果編碼正確,則該記錄為正確記錄,讀取記錄中的數(shù)據(jù)信息;如果編碼不正確,則核對(duì)該記錄的備份的編碼,直到編碼正確,則該備份記錄為正確記錄,讀取備份記錄中的數(shù)據(jù)信息;如備份記錄中的編碼都不正確,則進(jìn)行系統(tǒng)初始化。所述的步驟2還包括
當(dāng)系統(tǒng)因掉電重新啟動(dòng)或復(fù)位時(shí),判斷系統(tǒng)是上電復(fù)位還是系統(tǒng)復(fù)位,如果是上電復(fù)位則進(jìn)行系統(tǒng)初始化;如果是系統(tǒng)復(fù)位則讀取存儲(chǔ)的記錄,并根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。
所述的判斷系統(tǒng)是上電復(fù)位還是系統(tǒng)復(fù)位是通過以下方式實(shí)現(xiàn)的
系統(tǒng)第一次上電或長(zhǎng)時(shí)間掉電后再上電,程序進(jìn)行初始化,并在特定RAM區(qū)設(shè)置上電標(biāo)志信息,當(dāng)系統(tǒng)因掉電重新啟動(dòng)或復(fù)位時(shí),程序首先判斷上電標(biāo)志信息是否改變,如果上電標(biāo)志信息改變,則系統(tǒng)是上電復(fù)位;如果上電標(biāo)志信息不變,則系統(tǒng)是系統(tǒng)復(fù)位。由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明存在以下優(yōu)點(diǎn)本發(fā)明對(duì)軟件中的數(shù)據(jù)信息設(shè)置編碼加密,讀取數(shù)據(jù)信息時(shí),都要對(duì)數(shù)據(jù)信息中的編碼進(jìn)行驗(yàn)證,正確后方可讀取數(shù)據(jù)信息,如果不正確,則讀取備份記錄并進(jìn)行編碼驗(yàn)證,直到編碼正確,則讀取數(shù)據(jù)信息并運(yùn)行程序。這樣的方式使系統(tǒng)由于干擾產(chǎn)生錯(cuò)誤時(shí),可以對(duì)數(shù)據(jù)信息是否發(fā)生改變進(jìn)行判斷,并且由于有備份記錄,系統(tǒng)數(shù)據(jù)信息不會(huì)丟失或損壞,使系統(tǒng)的可靠性大大提高;并在特定RAM區(qū)設(shè)立上電標(biāo)志信息位判斷是上電復(fù)位還是系統(tǒng)復(fù)位,用以決定是進(jìn)行系統(tǒng)初始化還是系統(tǒng)恢復(fù);若需系統(tǒng)恢復(fù)則根據(jù)對(duì)相應(yīng)的編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取,這樣的方式使當(dāng)系統(tǒng)掉電重啟或復(fù)位時(shí)可以有效的判斷系統(tǒng)內(nèi)的數(shù)據(jù)信息是否改變,如果數(shù)據(jù)信息改變,則系統(tǒng)初始化,使系統(tǒng)不會(huì)錯(cuò)誤運(yùn)行;如果數(shù)據(jù)信息不變,則可以繼續(xù)運(yùn)行程序。不必對(duì)系統(tǒng)進(jìn)行檢測(cè)來判斷系統(tǒng)是否正常,不必停機(jī)修改硬軟件。
圖1是本發(fā)明用于電能表的軟件抗干擾方法流程圖。
具體實(shí)施例方式下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明作進(jìn)一步詳細(xì)地說明。由圖1所示本發(fā)明用于電能表的軟件抗干擾方法流程圖可知,它包括以下步驟 步驟1,在軟件輸入數(shù)據(jù)信息時(shí),為每個(gè)數(shù)據(jù)信息分別設(shè)置唯一對(duì)應(yīng)的編碼進(jìn)行加密構(gòu)
成一個(gè)記錄,再把每個(gè)記錄備份多份存儲(chǔ);
步驟2,讀取信息時(shí)根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。所述的步驟1中的為每個(gè)數(shù)據(jù)信息分別設(shè)置唯一對(duì)應(yīng)的編碼進(jìn)行加密是指給組成每個(gè)數(shù)據(jù)信息的每個(gè)字節(jié)配置唯一對(duì)應(yīng)的編碼加密。如在EEPROM存儲(chǔ)用戶買電量,買電量為兩個(gè)字節(jié),給每個(gè)字節(jié)配5AH加密構(gòu)成一個(gè)記錄,再把該記錄備份3份存儲(chǔ)。所述的根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取是指
讀取存儲(chǔ)記錄時(shí),首先核對(duì)該記錄中的編碼,如果編碼正確,則該記錄為正確記錄,讀取記錄中的數(shù)據(jù)信息;如果編碼不正確,則核對(duì)該記錄的備份的編碼,直到編碼正確,則該備份記錄為正確記錄,讀取備份記錄中的數(shù)據(jù)信息;如備份記錄中的編碼都不正確,則進(jìn)行系統(tǒng)初始化。所述的判斷編碼是否正確是指把讀取記錄中的編碼與輸入數(shù)據(jù)信息時(shí)該記錄設(shè)置的編碼進(jìn)行比較,如果兩者相同,則編碼正確;如果兩者不相同,則編碼不正確。所述的步驟2還包括
當(dāng)系統(tǒng)因掉電重新啟動(dòng)或復(fù)位時(shí),判斷系統(tǒng)是上電復(fù)位還是系統(tǒng)復(fù)位,如果是上電復(fù)位則進(jìn)行系統(tǒng)初始化;如果是系統(tǒng)復(fù)位則讀取存儲(chǔ)的記錄,并根據(jù)對(duì)相應(yīng)的編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。所述的上電復(fù)位是指正常接通電源時(shí),此時(shí)單片機(jī)需要進(jìn)行的一系列初始化操作,包括初始化寄存器,初始化各個(gè)硬件等等。所述的系統(tǒng)復(fù)位是指由于異常原因系統(tǒng)崩潰,系統(tǒng)重啟后,可以根據(jù)記錄的信息恢復(fù)系統(tǒng)崩潰前的操作。所述的判斷系統(tǒng)是上電復(fù)位還是系統(tǒng)復(fù)位是通過以下方式實(shí)現(xiàn)的
系統(tǒng)第一次上電或長(zhǎng)時(shí)間掉電后再上電,程序進(jìn)行初始化,并在特定RAM區(qū)設(shè)置上電標(biāo)志信息,上電標(biāo)志信息為程序編碼,如55H OAAH 5AH 0A5H,當(dāng)系統(tǒng)因掉電重新啟動(dòng)或復(fù)位時(shí),程序首先判斷RAM區(qū)的上電標(biāo)志信息是否改變,如果上電標(biāo)志信息改變,則系統(tǒng)是上電復(fù)位;如果上電標(biāo)志信息不變,則系統(tǒng)是系統(tǒng)復(fù)位。所述的RAM區(qū)是指單片機(jī)中的數(shù)據(jù)存儲(chǔ)單元。以上僅就本發(fā)明應(yīng)用較佳的實(shí)例做出了說明,但不能理解為是對(duì)權(quán)利要求的限制,本發(fā)明的結(jié)構(gòu)可以有其他變化,不局限于上述結(jié)構(gòu)??傊?,凡在本發(fā)明的獨(dú)立權(quán)利要求的保護(hù)范圍內(nèi)所作的各種變化均在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種用于電能表的軟件抗干擾方法,其特征在于,它包括以下步驟(1)、在軟件輸入數(shù)據(jù)信息時(shí),為每個(gè)數(shù)據(jù)信息分別設(shè)置唯一對(duì)應(yīng)的編碼進(jìn)行加密構(gòu)成一個(gè)記錄,再把每個(gè)記錄備份多份存儲(chǔ);(2)、讀取信息時(shí)根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。
2.根據(jù)權(quán)利要求1所述的用于電能表的軟件抗干擾方法,其特征在于,所述的步驟1中的為每個(gè)數(shù)據(jù)信息分別設(shè)置唯一對(duì)應(yīng)的編碼進(jìn)行加密是指給組成每個(gè)數(shù)據(jù)信息的每個(gè)字節(jié)配置唯一對(duì)應(yīng)的編碼加密。
3.根據(jù)權(quán)利要求1所述的用于電能表的軟件抗干擾方法,其特征在于,所述的根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取是指讀取存儲(chǔ)記錄時(shí),首先核對(duì)該記錄中的編碼,如果編碼正確,則該記錄為正確記錄,讀取記錄中的數(shù)據(jù)信息;如果編碼不正確,則核對(duì)該記錄的備份的編碼,直到編碼正確,則該備份記錄為正確記錄,讀取備份記錄中的數(shù)據(jù)信息;如備份記錄中的編碼都不正確,則進(jìn)行系統(tǒng)初始化。
4.根據(jù)權(quán)利要求1或3所述的用于電能表的軟件抗干擾方法,其特征在于,所述的步驟 2還包括當(dāng)系統(tǒng)因掉電重新啟動(dòng)或復(fù)位時(shí),判斷系統(tǒng)是上電復(fù)位還是系統(tǒng)復(fù)位,如果是上電復(fù)位則進(jìn)行系統(tǒng)初始化;如果是系統(tǒng)復(fù)位則讀取存儲(chǔ)的記錄,并根據(jù)對(duì)編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。
5.根據(jù)權(quán)利要求4所述的用于電能表的軟件抗干擾方法,其特征在于,所述的判斷系統(tǒng)是上電復(fù)位還是系統(tǒng)復(fù)位是通過以下方式實(shí)現(xiàn)的系統(tǒng)第一次上電或長(zhǎng)時(shí)間掉電后再上電,程序進(jìn)行初始化,并在特定RAM區(qū)設(shè)置上電標(biāo)志信息,當(dāng)系統(tǒng)因掉電重新啟動(dòng)或復(fù)位時(shí),程序首先判斷上電標(biāo)志信息是否改變,如果上電標(biāo)志信息改變,則系統(tǒng)是上電復(fù)位;如果上電標(biāo)志信息不變,則系統(tǒng)是系統(tǒng)復(fù)位。
全文摘要
本發(fā)明公開了一種用于電能表的軟件抗干擾方法,本發(fā)明對(duì)軟件中的數(shù)據(jù)信息設(shè)置編碼加密,讀取數(shù)據(jù)信息時(shí),都要對(duì)數(shù)據(jù)信息中的編碼進(jìn)行驗(yàn)證,正確后方可讀取數(shù)據(jù)信息,如果不正確,則讀取備份記錄并進(jìn)行編碼驗(yàn)證,直到編碼正確,則讀取數(shù)據(jù)信息并運(yùn)行程序。并在特定RAM區(qū)設(shè)立上電標(biāo)志信息位判斷是上電復(fù)位還是系統(tǒng)復(fù)位,用以決定是進(jìn)行系統(tǒng)初始化還是系統(tǒng)恢復(fù);若需系統(tǒng)恢復(fù)則根據(jù)對(duì)相應(yīng)的編碼的判斷,對(duì)相應(yīng)的記錄中的數(shù)據(jù)信息進(jìn)行讀取。本發(fā)明避免因外界干擾造成的系統(tǒng)運(yùn)行不穩(wěn)定,系統(tǒng)數(shù)據(jù)信息不會(huì)損壞或丟失,不必停機(jī)修改硬軟件系統(tǒng)仍能正確執(zhí)行預(yù)訂操作。
文檔編號(hào)G06F11/00GK102520223SQ20111034070
公開日2012年6月27日 申請(qǐng)日期2011年11月2日 優(yōu)先權(quán)日2011年11月2日
發(fā)明者余轉(zhuǎn)麗, 劉其君, 周忠祥, 胡寧, 鄭堅(jiān)江 申請(qǐng)人:寧波三星電氣股份有限公司