亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲方法與流程

文檔序號:12886171閱讀:1795來源:國知局

本發(fā)明具體涉及一種用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲方法。



背景技術(shù):

隨著國家經(jīng)濟技術(shù)的發(fā)展和人們生活水平的提高,電能已經(jīng)成為了人們生產(chǎn)和生活中必不可少的二次能源,給人們的生產(chǎn)和生活帶來了無盡的便利。

電能表作為電力系統(tǒng)中計量電能的唯一部件,其重要性和可靠性不言而喻。電能表在工作時,當有凍結(jié)事件或者記錄事件發(fā)生時,電表要記錄凍結(jié)數(shù)據(jù)和事件記錄數(shù)據(jù),而具體要記錄什么數(shù)據(jù),則取決于用戶為該凍結(jié)或事件記錄配置的關聯(lián)對象為哪些關聯(lián)對象:配置了哪些對象為關聯(lián)對象,則在凍結(jié)或事件發(fā)生時就要存儲這些關聯(lián)對象在凍結(jié)或事件發(fā)生時的具體值。但是對于一個凍結(jié)或事件記錄,其關聯(lián)對象并不是永遠保持不變的,這取決于用戶需求:比如對于某個凍結(jié)或事件,用戶有時為其配置的關聯(lián)對象為電壓、電流、有功功率;后面某天,用戶把關聯(lián)對象改為電壓、電流、無功功率,如此一來,關聯(lián)對象變成了電壓、電流、無功功率。但是,由于電能表在存儲關聯(lián)對象的數(shù)據(jù)時,其都是以二進制數(shù)進行存儲,因此電能表在存儲凍結(jié)或事件記錄數(shù)據(jù)時,必須同時存儲關聯(lián)對象描述符,從而防止當用戶改變凍結(jié)或事件記錄的關聯(lián)對象時無法解析當時存儲凍結(jié)或事件記錄的數(shù)據(jù)的情況發(fā)生。

然而,如果用戶在存儲每條凍結(jié)或事件數(shù)據(jù)時存儲對應的關聯(lián)對象描述符,將大量增加存儲的數(shù)據(jù)量,有些凍結(jié)或事件記錄存儲的數(shù)據(jù)量甚至翻倍,因為一個關聯(lián)對象描述符一般都為4字節(jié)以上。以幾個具體的協(xié)議為例:dl/t645-2007協(xié)議的關聯(lián)對象描述符為4個字節(jié),dl/t698-45協(xié)議的關聯(lián)對象描述符為4個字節(jié),iec62056協(xié)議的關聯(lián)對象描述符長度為6字節(jié);以關聯(lián)對象描述符為4個字節(jié)為例,如果一類凍結(jié)或事件記錄其關聯(lián)對象個數(shù)有20個,單單每條記錄中用于存儲關聯(lián)對象描述符表就要占用80字節(jié)空間,如果此類事件或凍結(jié)要存儲10000條,則為了存儲關聯(lián)對象描述符,就要多使用存儲器780kb(80b*10000=780kb)。但是,上述僅僅只是一類凍結(jié)或事件記錄,然而一般而言,電能表中總共有120多類事件記錄以及10多類凍結(jié)記錄,因此會存在海量的數(shù)據(jù)需要記錄。

目前常用電能表凍結(jié)事件或者記錄事件數(shù)據(jù)存儲方法主要有如下兩種:

方案一:在存儲每條凍結(jié)和事件記錄數(shù)據(jù)的同時存儲當前的關聯(lián)對象描述符表,即依次存儲關聯(lián)對象描述符表和每個關聯(lián)對象的具體值;這樣,無論用戶的關聯(lián)對象如何改來改去,每次抄讀這條記錄數(shù)據(jù)時根據(jù)當時存儲的關聯(lián)對象描述符表就能知道存儲的是什么數(shù)據(jù)項(也就是說記錄中存儲的關聯(lián)對象描述符表反映了凍結(jié)或事件發(fā)生當時用戶為此類凍結(jié)或事件配置的關聯(lián)對象是什么),也知道了每個數(shù)據(jù)項的長度。

方案一的數(shù)據(jù)記錄格式如下表1所示:

表1方案一的數(shù)據(jù)記錄格式示意表

但是,此方案的缺陷是存儲關聯(lián)對象描述符表的存儲數(shù)據(jù)量大,浪費存儲空間。以一個關聯(lián)對象個數(shù)為32的凍結(jié)為例,為了將關聯(lián)對象描述符表存入每條凍結(jié)數(shù)據(jù)中,每條凍結(jié)記錄要存儲32個關聯(lián)對象描述符以及這32個對象的數(shù)據(jù)數(shù)值本身。假設關聯(lián)對象描述符的字節(jié)長度為4,對象數(shù)據(jù)長度也為4,為了實現(xiàn)關聯(lián)對象用戶可配置,凍結(jié)的存儲空間就翻倍了;以一條含有32個關聯(lián)對象的凍結(jié)記錄數(shù)據(jù)為例,每個對象的關聯(lián)對象描述符為4字節(jié),存儲一條凍結(jié)數(shù)據(jù)的關聯(lián)對象描述符表要128字節(jié);如果此類凍結(jié)用戶要求存儲10000次,則單單用于存儲關聯(lián)對象描述符的空間就達1.22mb(因為關聯(lián)對象描述符表要存儲在每條記錄中,10000條乘以128字節(jié),即為1.22mb),這還僅僅是一類凍結(jié)或事件記錄,一般的電能表中總共有120多類事件記錄以及10多類凍結(jié)記錄,因此此技術(shù)方案的存儲空間占用極其巨大。

方案二:對系統(tǒng)中所有的關聯(lián)對象進行編碼(編碼從0開始),這樣每個關聯(lián)對象可以用一個bit來表示,所有可配置的關聯(lián)對象的集合形成一個bit碼序列。對于某個凍結(jié)或事件來說,用戶配置的關聯(lián)對象描述符表可以用一個bit碼序列來表示;關聯(lián)對象描述符表中,包含的關聯(lián)對象的對應bit為1,不包含的關聯(lián)對象的對應bit為0;在存儲一條凍結(jié)或事件記錄時同時將此關聯(lián)對象描述符bit碼序列存儲下來,先存bit碼,再存對應關聯(lián)對象的數(shù)據(jù),這樣如果用戶改變了關聯(lián)對象,每次凍結(jié)時存儲的bit碼也不同,以后每次抄讀某條具體記錄時,根據(jù)記錄中的關聯(lián)對象描述符bit碼就可以知道存儲的具體是什么數(shù)據(jù)。

方案二的數(shù)據(jù)記錄格式如下表2所示:

表2方案二的數(shù)據(jù)記錄格式示意表

此方案貌似通過編碼的方式,用一個bit來表示一個關聯(lián)對象描述符,空間壓縮到了原來的1/32(原來是4字節(jié)的關聯(lián)對象描述符,4字節(jié)就是32個bit,現(xiàn)在是1個bit,所以壓縮到了原來的1/32);但問題是,用戶可能是任意配置關聯(lián)對象,對于有幾千個對象的系統(tǒng),這個關聯(lián)對象描述符bit碼序列的編碼長度就是幾千個bit,也就是幾百個字節(jié),這個存儲數(shù)據(jù)量增加也是不能承受的。舉例說明如下,假設系統(tǒng)對象個數(shù)為1024個,為了編碼這1024個對象,需要1024個bit,1024個bit就是128字節(jié),如果用戶配置了第1024個對象為關聯(lián)對象,那他不得不在每次存儲凍結(jié)數(shù)據(jù)時,將這128字節(jié)bit碼序列也存儲下去;因此,本方案的缺陷是不能將系統(tǒng)內(nèi)任意一個對象配置為凍結(jié)或事件記錄的關聯(lián)對象,對用戶使用有很大局限,只適應于對象個數(shù)比較小的系統(tǒng),比如,如果系統(tǒng)內(nèi)對象個數(shù)只有64個或更小(64個也就是8個字節(jié),尚可以接受),此方案可行。



技術(shù)實現(xiàn)要素:

本發(fā)明的目的在于提供一種存儲空間占用較少,用戶可以任意配置關聯(lián)對象,而且數(shù)據(jù)存儲快速方便、不影響數(shù)據(jù)追溯功能的用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲方法。

本發(fā)明提供的這種用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲方法,包括如下步驟:

s1.為電能表的凍結(jié)記錄和事件記錄配置關聯(lián)對象;

s2.根據(jù)為電能表的凍結(jié)記錄和事件記錄所配置的關聯(lián)對象,生成一組掩碼序號;所述掩碼序號用于指示凍結(jié)記錄和事件記錄的關聯(lián)對象,且掩碼序號決定了掩碼所占用的字節(jié)長度;

s3.系統(tǒng)將每個凍結(jié)記錄和事件記錄的關聯(lián)對象及相應的掩碼序號進行存儲,同時根據(jù)掩碼序號生成相應的掩碼;

s4.當電能表發(fā)生凍結(jié)記錄或事件記錄時,電能表將凍結(jié)記錄或事件記錄的掩碼及關聯(lián)對象的數(shù)據(jù)進行存儲,完成凍結(jié)和事件記錄數(shù)據(jù)存儲。

步驟s1所述的凍結(jié)記錄和事件記錄所配置的關聯(lián)對象,包括靜態(tài)關聯(lián)對象和動態(tài)關聯(lián)對象;靜態(tài)關聯(lián)對象為電能表出廠時已經(jīng)為凍結(jié)記錄和事件記錄配置了的缺省關聯(lián)對象;動態(tài)關聯(lián)對象為用戶在電能表使用過程中自行為凍結(jié)記錄和事件記錄所配置的關聯(lián)對象。

所述的靜態(tài)關聯(lián)對象為用戶可以刪除或刪除后可以恢復的關聯(lián)對象;動態(tài)關聯(lián)對象為可以任意配置的關聯(lián)對象,所述的任意配置包括增加操作和刪除操作。

步驟s2所述的掩碼序號包括靜態(tài)掩碼序號和動態(tài)掩碼序號;靜態(tài)掩碼序號與靜態(tài)關聯(lián)對象一一對應,且靜態(tài)關聯(lián)對象刪除后該靜態(tài)掩碼序號依舊保留;動態(tài)掩碼序號與動態(tài)關聯(lián)對象對應。

所述電能表在生成掩碼序號后,針對每一類凍結(jié)記錄和事件記錄,將靜態(tài)關聯(lián)對象和靜態(tài)掩碼序號生成一張靜態(tài)掩碼映射表并進行存儲,同時將動態(tài)關聯(lián)對象和動態(tài)掩碼序號生成一張動態(tài)掩碼映射表并進行存儲。

所述的靜態(tài)關聯(lián)對象和靜態(tài)掩碼序號生成的映射表以及動態(tài)關聯(lián)對象和動態(tài)掩碼序號生成的映射表以及每類凍結(jié)記錄和事件記錄的掩碼字節(jié)長度均存儲在電能表內(nèi)的非易失性存儲器上。

所述的掩碼序號為采用如下規(guī)則生成掩碼序號:

r1.掩碼序號的最大值可以依據(jù)產(chǎn)品需求自行設定,掩碼序號的最大值決定了掩碼字節(jié)長度l;掩碼序號的最大值為m,則8*l≥m,且l和m均為正整數(shù);

r2.掩碼序號從0開始生成,且每增加一個關聯(lián)對象,該關聯(lián)對象的掩碼序號為上一個已分配掩碼序號加1;

r3.當當前已經(jīng)分配的掩碼序號值與設定的掩碼序號的最大值相等,則遍歷該類凍結(jié)記錄或事件記錄的所有記錄數(shù)據(jù),對所有記錄中都不存在的關聯(lián)對象回收其已經(jīng)分配的動態(tài)掩碼序號,從而保證在配置新的動態(tài)關聯(lián)對象時存在可用的動態(tài)掩碼序號;

r4.靜態(tài)關聯(lián)對象所對應的靜態(tài)掩碼序號在靜態(tài)關聯(lián)對象被刪除后依然保留,且該靜態(tài)掩碼序號不被其他靜態(tài)關聯(lián)對象或動態(tài)關聯(lián)對象占用;

r5.動態(tài)關聯(lián)對象所對應的動態(tài)掩碼序號在動態(tài)關聯(lián)對象被刪除后,已經(jīng)分配給這個關聯(lián)對象的掩碼序號不回收;

r6.當清除一類凍結(jié)記錄或事件記錄的所有記錄時,電能表清零時,或電能表恢復出廠參數(shù)時,回收該類凍結(jié)或事件的所有已分配的動態(tài)掩碼序號;

r7.動態(tài)掩碼序號和靜態(tài)掩碼序號的作用域范圍為該類凍結(jié)記錄或事件記錄。

步驟s3所述的根據(jù)掩碼序號生成相應的掩碼,具體為采用如下步驟生成相應的掩碼:

a.獲取此類事件或凍結(jié)的掩碼字節(jié)長度l:所述的掩碼為二進制數(shù),且初始值為全0;

b.遍歷靜態(tài)掩碼映射表和動態(tài)掩碼映射表,得到靜態(tài)關聯(lián)對象和動態(tài)關聯(lián)對象的掩碼序號;

c.根據(jù)步驟b得到的掩碼序號,將掩碼中相應的位置為1,從而生成了凍結(jié)記錄或事件記錄所對應的掩碼。

本發(fā)明提供的這種用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲方法,通過設置靜態(tài)/動態(tài)關聯(lián)對象、靜態(tài)/動態(tài)掩碼序號和生成相應的掩碼的方式,不僅使得電能表的凍結(jié)記錄或事件記錄的關聯(lián)對象可任意配置,而且還通過掩碼序號和掩碼的方式大大降低了數(shù)據(jù)的存儲空間,而且凍結(jié)或事件記錄數(shù)據(jù)存儲快速,而且不影響電能表的數(shù)據(jù)追溯功能。

附圖說明

圖1為本發(fā)明的方法流程圖。

具體實施方式

如圖1所示為本發(fā)明的方法流程圖:本發(fā)明提供的這種用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲方法,包括如下步驟:

s1.為電能表的凍結(jié)記錄和事件記錄配置關聯(lián)對象;所述關聯(lián)對象包括靜態(tài)關聯(lián)對象和動態(tài)關聯(lián)對象;靜態(tài)關聯(lián)對象為電能表出廠時已經(jīng)為凍結(jié)記錄和事件記錄配置了的缺省關聯(lián)對象,用戶可以刪除,刪除后也可以在后面再次增加進來;動態(tài)關聯(lián)對象為用戶在電能表使用過程中自行為凍結(jié)記錄和事件記錄所配置的關聯(lián)對象,用戶能夠?qū)ζ溥M行增加和刪除的操作;

s2.根據(jù)為電能表的凍結(jié)記錄和事件記錄所配置的關聯(lián)對象,生成一組掩碼序號;所述掩碼序號用于指示凍結(jié)記錄和事件記錄的關聯(lián)對象;掩碼序號包括靜態(tài)掩碼序號和動態(tài)掩碼序號;靜態(tài)掩碼序號與靜態(tài)關聯(lián)對象一一對應,且靜態(tài)關聯(lián)對象刪除后該靜態(tài)掩碼序號依舊保留;動態(tài)掩碼序號與動態(tài)關聯(lián)對象對應;

掩碼序號為采用如下規(guī)則生成掩碼序號:

r1.掩碼序號的最大值可以依據(jù)產(chǎn)品需求自行設定;掩碼序號的最大值決定了掩碼字節(jié)長度l;掩碼序號的最大值為m,則8*l≥m,且l和m均為正整數(shù);

r2.掩碼序號從0開始生成,且每增加一個關聯(lián)對象,該關聯(lián)對象的掩碼序號為上一個已分配掩碼序號加1;

r3.當當前已經(jīng)分配的掩碼序號值與設定的掩碼序號的最大值相等,則遍歷該類凍結(jié)記錄或事件記錄的所有記錄數(shù)據(jù),對所有記錄中都不存在的關聯(lián)對象回收其已經(jīng)分配的動態(tài)掩碼序號,從而保證在配置新的動態(tài)關聯(lián)對象時存在可用的動態(tài)掩碼序號;

r4.靜態(tài)關聯(lián)對象所對應的靜態(tài)掩碼序號在靜態(tài)關聯(lián)對象被刪除后依然保留,且該靜態(tài)掩碼序號不被其他靜態(tài)關聯(lián)對象或動態(tài)關聯(lián)對象占用;

r5.動態(tài)關聯(lián)對象所對應的動態(tài)掩碼序號在動態(tài)關聯(lián)對象被刪除后,已經(jīng)分配給這個關聯(lián)對象的掩碼序號不能回收;

r6.當清除一類凍結(jié)記錄或事件記錄的所有記錄時,電能表清零時,或電能表恢復出廠參數(shù)時,回收該類凍結(jié)或事件的所有已分配的動態(tài)掩碼序號;

r7.動態(tài)掩碼序號和靜態(tài)掩碼序號的作用域范圍為該類凍結(jié)記錄或事件記錄;

比如,某類凍結(jié)或事件掩碼序號的最大值選定為32,電能表出廠時已經(jīng)為a凍結(jié)事件配置了4個關聯(lián)對象a,b,c和d,則該四個關聯(lián)對象即為靜態(tài)關聯(lián)對象,靜態(tài)關聯(lián)對象a的掩碼序號為0,靜態(tài)關聯(lián)對象b的掩碼序號為1,靜態(tài)關聯(lián)對象c的掩碼序號為2,靜態(tài)關聯(lián)對象d的掩碼序號為3,且該4個靜態(tài)關聯(lián)對象在電能表具體使用時被刪除后,其掩碼序號0~3也不會被收回,而處于一直被占用的狀態(tài);而使用者在具體使用時,又為a凍結(jié)事件配置了4個動態(tài)關聯(lián)對象,aa,bb,cc和dd,則該4個動態(tài)關聯(lián)對象的掩碼序號即為aa-4,bb-5,cc-6和dd-7;而在用戶刪除了其中的aa動態(tài)關聯(lián)對象后,其對應的掩碼序號也不會被收回,下一個動態(tài)關聯(lián)對象的掩碼序號將分配為8;

掩碼序號的作用域范圍只是一類凍結(jié)記錄或事件記錄;也就是兩個不同的凍結(jié)記錄或事件記錄可以有相同的掩碼序號,但是兩者含義不同,對應的關聯(lián)對象可以不同,所以每類凍結(jié)記錄或事件記錄都有各自的靜態(tài)掩碼序號和動態(tài)掩碼序號;

此外,當用戶關聯(lián)對象達到了掩碼序號的最大值后,動態(tài)掩碼序號再統(tǒng)一回收;或者還可以采用定時回收的方式進行動態(tài)掩碼的回收,即設定一個具體的時間,比如1個小時:每一個小時系統(tǒng)均會自動回收某一類凍結(jié)記錄或事件記錄中的所有記錄中都不存在的動態(tài)關聯(lián)對象的動態(tài)掩碼序號;

在生成掩碼序號后,針對每一類凍結(jié)記錄和事件記錄,將靜態(tài)關聯(lián)對象和靜態(tài)掩碼序號生成一張靜態(tài)掩碼映射表并進行存儲(在具體實施時,推薦存儲在電能表內(nèi)的非易失性存儲器上),同時將動態(tài)關聯(lián)對象和動態(tài)掩碼序號生成一張動態(tài)掩碼映射表并進行存儲;存儲映射表的目的在于方便在數(shù)據(jù)存儲后進行數(shù)據(jù)的解析;對于某一類特定的凍結(jié)記錄或事件記錄,其靜態(tài)掩碼映射表的結(jié)構(gòu)如表3所示,而動態(tài)掩碼映射表的結(jié)構(gòu)如表4所示;

表3靜態(tài)掩碼映射表的結(jié)構(gòu)示意

表4動態(tài)掩碼映射表的結(jié)構(gòu)示意

同時,根據(jù)產(chǎn)品需求為電能表的每類凍結(jié)記錄和事件記錄定義并存儲其掩碼字節(jié)長度(掩碼字節(jié)長度實際由每類凍結(jié)記錄和事件記錄最大關聯(lián)對象個數(shù)決定);該長度表記錄了每一類凍結(jié)記錄和事件記錄的掩碼的字節(jié)長度,方便后期對存儲的數(shù)據(jù)進行解析;

s3.系統(tǒng)將每個凍結(jié)記錄和事件記錄的關聯(lián)對象及相應的掩碼序號進行存儲,同時根據(jù)掩碼序號生成相應的掩碼;采用如下步驟生成相應的掩碼:

a.獲取此類事件或凍結(jié)的掩碼的字節(jié)長度l:且所述的掩碼為二進制數(shù),初始值為全0;

b.遍歷靜態(tài)掩碼映射表和動態(tài)掩碼映射表,得到靜態(tài)關聯(lián)對象和動態(tài)關聯(lián)對象的掩碼序號;

c.根據(jù)步驟b得到的掩碼序號,將掩碼中相應的位置為1,從而生成了凍結(jié)記錄或事件記錄所對應的掩碼;

比如掩碼字節(jié)長度為4個字節(jié),4個字節(jié)的掩碼共有32個bit可以用于表示對應的掩碼序號;在具體使用時,如果某一個掩碼序號有對應的關聯(lián)對象,則該掩碼的相應的位即為1,否則該位為0

s4.當電能表發(fā)生凍結(jié)記錄或事件記錄時,電能表將凍結(jié)記錄或事件記錄的掩碼及關聯(lián)對象的數(shù)據(jù)進行存儲,完成凍結(jié)和事件記錄數(shù)據(jù)存儲;

在具體實施時,可以采用如下表5所示的數(shù)據(jù)格式進行存儲:

表5存儲的數(shù)據(jù)格式示意表

其中記錄長度為記錄該整條存儲的數(shù)據(jù)的長度,之所以要包含記錄長度,是因為用戶關聯(lián)對象是可變的,所以每條記錄的長度也是變化的,掩碼即為該凍結(jié)記錄或事件記錄所對應的掩碼;后續(xù)的即為該凍結(jié)記錄或事件記錄所對應的關聯(lián)對象的具體數(shù)據(jù)。

在具體存儲時,其存儲過程如下(以“記錄長度”部分為2字節(jié)為例)

a.當前數(shù)據(jù)存儲偏移初始值以及記錄總長度都初始化為掩碼字節(jié)長度加2,掩碼字節(jié)初始化為全0;

b.依次遍歷關聯(lián)對象表中的每一個關聯(lián)對象,對每個關聯(lián)對象執(zhí)行下述操作:

b1.以關聯(lián)對象描述符為索引,查找靜態(tài)掩碼序號映射表和動態(tài)掩碼序號映射表,得到對應的掩碼序號;

b2.根據(jù)掩碼序號得到掩碼序號對應的掩碼的bit;將掩碼對應的bit置1;

b3.根據(jù)關聯(lián)對象描述符從系統(tǒng)獲得關聯(lián)對象的具體數(shù)值并存入數(shù)據(jù)buf的當前數(shù)據(jù)存儲偏移處;

b4.根據(jù)關聯(lián)對象描述符從系統(tǒng)獲得當前關聯(lián)對象的存儲字節(jié)長度;

b5.當前數(shù)據(jù)存儲偏移以及記錄總長度都加上當前關聯(lián)對象的存儲字節(jié)長度;

b6.將上述遍歷生成的掩碼字節(jié)存入數(shù)據(jù)buf偏移2處;將記錄總長度存入數(shù)據(jù)buf偏移0處;

c.由此完成了整條要存儲的凍結(jié)或事件記錄數(shù)據(jù)的生成,將生成的記錄數(shù)據(jù)調(diào)用系統(tǒng)接口存儲起來即可。

而在解析該條存儲數(shù)據(jù)時,可根據(jù)數(shù)據(jù)存儲的過程進行解析即可。對應于上述的實施例,數(shù)據(jù)解析的具體過程如下:

a.讀取記錄頭2字節(jié)獲得記錄數(shù)據(jù)長度(當前數(shù)據(jù)存儲偏移初始值初始化為掩碼字節(jié)長度加2)

b.根據(jù)記錄數(shù)據(jù)長度讀取整條記錄數(shù)據(jù)到數(shù)據(jù)buf中(由于是要解析整條記錄,所以讀取了完整的記錄數(shù)據(jù));

c.從上一步讀取到的記錄數(shù)據(jù)取得掩碼,從掩碼bit0開始遍歷掩碼字節(jié);

d.如果當前掩碼bit為1,則執(zhí)行步驟e;否則執(zhí)行步驟i;

e.根據(jù)掩碼bit獲得掩碼序號;以掩碼序號作為索引查找靜態(tài)掩碼序號映射表和動態(tài)掩碼序號映射表,得到對應的關聯(lián)對象描述符;

f.根據(jù)關聯(lián)對象描述符從系統(tǒng)獲得此對象存儲字節(jié)長度;

g.從當前數(shù)據(jù)存儲偏移開始,長度為上一步獲取的對象存儲字節(jié)長度的數(shù)據(jù)就是當前對象的數(shù)據(jù),這樣完成了一個對象的解析;

h.當前數(shù)據(jù)存儲偏移加上當前對象存儲字節(jié)長度(這個是為解析下一個對象做準備);

i.判斷是否遍歷完成所有bit,如果未遍歷完成所有bit:則掩碼bit加1(即掩碼bit1變成bit2,bit2變成bit3,以此類推),從掩碼字節(jié)獲得對應的當前掩碼bit值;跳轉(zhuǎn)到步驟d繼續(xù)執(zhí)行;如果已經(jīng)完成遍歷所有掩碼bit,則退出。

而當用戶想從一條完整的凍結(jié)記錄或事件記錄中解析某一個關聯(lián)對象的數(shù)據(jù),則可以采用如下的步驟進行解析(繼續(xù)依照以上述實施例):

1.讀取記錄頭2字節(jié)獲得記錄數(shù)據(jù)長度(當前數(shù)據(jù)存儲偏移初始值初始化為掩碼字節(jié)長度加2);

2.從記錄數(shù)據(jù)取得掩碼字節(jié),從掩碼bit0開始遍歷掩碼字節(jié);

3.如果當前掩碼bit為1,則執(zhí)行步驟4;否則執(zhí)行步驟9;

4.根據(jù)掩碼bit獲得掩碼序號;以掩碼序號作為索引查找靜態(tài)掩碼序號映射表和動態(tài)掩碼序號映射表,得到對應的關聯(lián)對象描述符;

5.根據(jù)關聯(lián)對象描述符從系統(tǒng)獲得此對象存儲字節(jié)長度;

6.判斷得到的關聯(lián)對象描述符與用戶查找的關聯(lián)對象描述符是否相同,如果相同則執(zhí)行步驟7,否則執(zhí)行步驟8;

7.從當前數(shù)據(jù)存儲偏移開始,長度為上一步獲取的對象存儲字節(jié)長度的數(shù)據(jù)就是當前對象的數(shù)據(jù),這樣完成了一個對象的解析;退出并返回解析到的數(shù)據(jù)給用戶;

8.當前數(shù)據(jù)存儲偏移加上當前對象存儲字節(jié)長度(這個是為解析下一個對象做準備);

9.判斷是否遍歷完成所有bit,如果未遍歷完成所有bit:則掩碼bit加1(即掩碼bit1變成bit2,bit2變成bit3,以此類推),從掩碼字節(jié)獲得對應的當前掩碼bit值,跳轉(zhuǎn)到步驟3繼續(xù)執(zhí)行;如果已經(jīng)完成遍歷所有掩碼bit,則退出。

以下,再通過一個簡單的實施例來證明本發(fā)明方法能夠有效的減少數(shù)據(jù)的存儲量:

采用背景技術(shù)中的方案一、方案二和本發(fā)明的技術(shù)方案,針對一條凍結(jié)記錄數(shù)據(jù)和一條事件記錄數(shù)據(jù)進行比較;

凍結(jié)記錄數(shù)據(jù):關聯(lián)對象為4個,每個關聯(lián)對象描述符為4個字節(jié),每個關聯(lián)對象的數(shù)據(jù)為4個字節(jié);

事件記錄數(shù)據(jù):關聯(lián)對象為2個,每個關聯(lián)對象描述符為4個字節(jié),每個關聯(lián)對象的數(shù)據(jù)為4個字節(jié);

方案一:

凍結(jié)記錄的總長度為:2+4*4+4*4=34字節(jié)

事件記錄的總長度為:2+2*4+2*4=18字節(jié)

方案二:

由于方案二的數(shù)據(jù)記錄大小不取決于用戶為每類凍結(jié)或事件配置的關聯(lián)對象個數(shù),而取決于系統(tǒng)總對象個數(shù),因此這里假設系統(tǒng)的總的關聯(lián)對象個數(shù)為256個(實際電能表中的關聯(lián)對象一般有幾千個),每條記錄為了編碼這個凍結(jié)或事件的關聯(lián)對象,需要32字節(jié)(一個字節(jié)可以表示8個對象)來編碼關聯(lián)對象信息(這32字節(jié)中,關聯(lián)對象對應位為1,不是此類凍結(jié)或事件的關聯(lián)對象的對應位為0);

凍結(jié)記錄的總長度為:2+32+4*4=50字節(jié)

事件記錄的總長度為:2+32+2*4=42字節(jié)

本發(fā)明:

掩碼:1字節(jié)(1個字節(jié)的掩碼可以表示8個對象了);

凍結(jié)記錄的總長度為:2+1+4*4=19字節(jié)

時間記錄的總長度為:2+1+2*4=11字節(jié)

因此,本發(fā)明的空間節(jié)省率如下表6所示:

表6數(shù)據(jù)存儲空間對比示意表

從上表可以看出,本發(fā)明的技術(shù)方案,其在數(shù)據(jù)存儲時空間節(jié)省率非常之高,能夠大幅度的壓縮存儲數(shù)據(jù)占用的空間。

最后,本發(fā)明提供的這種用于電能表的凍結(jié)和事件記錄數(shù)據(jù)存儲及解析方法,不僅適用于電能表,也適用于其他需要進行特殊事件記錄及相應的關聯(lián)變量記錄的設備,包括各類型的計量儀表(比如電能表、水表、燃氣表、熱量表等)、電能管理終端、配電終端、電能質(zhì)量監(jiān)控設備、電網(wǎng)自動化終端、采集終端、集中器、數(shù)據(jù)采集器、計量儀表、手抄器、故障指示器等。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1