專利名稱:一種節(jié)省內(nèi)存空間的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電能質(zhì)量分析領(lǐng)域,尤其涉及一種節(jié)省內(nèi)存空間的方法,該方法可應(yīng)用于基于EN50160協(xié)議的電能質(zhì)量分析系統(tǒng)中。
背景技術(shù):
在嵌入式系統(tǒng)應(yīng)用中進行基于EN50160標準的分析時,往往會遇到需要分析一段時間內(nèi)的電測量數(shù)據(jù),此時要求分配相應(yīng)的內(nèi)存空間來存儲這些數(shù)據(jù)。但是,分析的時間間隔越長,需要分配的內(nèi)存空間就越大,相對于嵌入式系統(tǒng)有限的內(nèi)存來說,占用的內(nèi)存空間較為可觀,而對于長時間數(shù)據(jù)的基于EN50160標準的分析,通常采用分段分析的方法。但是,在應(yīng)用上述分段分析機制時,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題限于嵌入式系統(tǒng)的計算能力,不能對長時間數(shù)據(jù)進行總體分析,占用內(nèi)存空間相對較大,容易消耗系統(tǒng)資源。
發(fā)明內(nèi)容
本發(fā)明的實施例提供一種節(jié)省內(nèi)存空間的方法、其可用于基于EN50160標準的分析系統(tǒng)中,以便在節(jié)約內(nèi)存空間的前提下實現(xiàn)對長時間數(shù)據(jù)進行總體分析。為達到上述目的,本發(fā)明的一方面提供了一種節(jié)省內(nèi)存空間的方法,其包括根據(jù)分析時間的長度以及待采集的數(shù)據(jù)的類型計算數(shù)據(jù)的總量;根據(jù)該數(shù)據(jù)的總量在內(nèi)存中預置具有一定大小的緩沖存儲區(qū)(buffer);根據(jù)分析數(shù)據(jù)類型確定緩存數(shù)據(jù)的類型;建立控制塊保存控制塊信息;將采集來的數(shù)據(jù)根據(jù)數(shù)據(jù)的類型按照針對不同緩存數(shù)據(jù)類型的排序算法插入到緩沖存儲區(qū)中,并相應(yīng)的更新控制塊中的信息;以及,在采集完畢后,根據(jù)控制塊中的內(nèi)容計算出結(jié)果。進一步,預分配大小為數(shù)據(jù)總量的一定比例的內(nèi)存可以是5%的內(nèi)存。進一步的,所述控制塊信息至少包括需要分析的數(shù)據(jù)總量、加入分析的數(shù)據(jù)個數(shù)、 滿足EN50160協(xié)議的限值的數(shù)據(jù)個數(shù)、緩存最大值數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)指針、緩存最小值數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)指針、緩存數(shù)據(jù)的類型。進一步的,緩存數(shù)據(jù)類型包括只緩存最大5%,只緩存最小5%,緩存最大2. 5% 和最小2. 5%等;進一步,根據(jù)排序算法將數(shù)據(jù)更新到緩存中的步驟包括,根據(jù)降序算法將數(shù)據(jù)更新到最大值數(shù)據(jù)緩沖區(qū)中,如果數(shù)據(jù)緩沖區(qū)溢出,則丟棄掉最小的值;或者,根據(jù)升序算法將數(shù)據(jù)更新到最小值數(shù)據(jù)緩沖區(qū)中,如果數(shù)據(jù)緩沖區(qū)溢出,則丟棄掉最大的值;進一步的,根據(jù)控制塊中的內(nèi)容計算出結(jié)果的步驟包括對于只緩存最大5%的數(shù)據(jù)類型和只緩存最小5%的數(shù)據(jù)類型,分析模塊根據(jù)控制塊信息中的緩存數(shù)據(jù)緩沖區(qū)指針,從緩存數(shù)據(jù)緩沖區(qū)中取出第一個值,該值即為EN50160 分析需要的100%概率值;根據(jù)控制塊中插入數(shù)據(jù)個數(shù)乘以0. 05后取整,得出EN50160分析需要的95%概率值數(shù)據(jù)在數(shù)據(jù)緩沖區(qū)中的位置,在數(shù)據(jù)緩沖區(qū)中取出該值即可;控制塊中滿足EN50160限值的數(shù)據(jù)個數(shù)除以插入數(shù)據(jù)個數(shù)即可得出EN50160分析中數(shù)據(jù)的合格率。對于緩存最大2. 5%和最小2. 5%的數(shù)據(jù)類型,分析模塊根據(jù)控制塊信息中的緩存數(shù)據(jù)緩沖區(qū)指針,分別從最大值數(shù)據(jù)緩沖區(qū)和最小值數(shù)據(jù)緩沖區(qū)中取出第一個值,根據(jù) EN50160分析的偏差算法,算出兩個值中偏差大的一個即為EN50160分析要求的100%概率值;根據(jù)控制塊中插入數(shù)據(jù)個數(shù)乘以0. 025后取整,以此為位置信息分別從最大值、最小值數(shù)據(jù)緩沖區(qū)中取出相應(yīng)位置的數(shù)據(jù),根據(jù)EN50160分析的偏差算法,算出兩個值中偏差大的一個即為EN50160分析要求的95%概率值;控制塊中滿足EN50160限值的數(shù)據(jù)個數(shù)除以插入數(shù)據(jù)個數(shù)即可得出EN50160分析中數(shù)據(jù)的合格率。本發(fā)明的有益效果在于,通過僅分出內(nèi)存的一定的空間作為緩沖存儲區(qū),使得對內(nèi)存的占用大大減少,并且由于僅計算所采集到的樹數(shù)值中的很少的一部分,因此,對指標和數(shù)值進行計算分析時無需占用處理器的很大資源。
圖1為本發(fā)明一種實施例中數(shù)據(jù)緩沖區(qū)的分配示意圖;圖2為本發(fā)明另一種實施例中數(shù)據(jù)緩沖區(qū)的分配示意圖;圖3為本發(fā)明實施例一種節(jié)省內(nèi)存空間的方法的流程示意圖。
具體實施例方式下面參照附圖對本發(fā)明的具體實施方式
作進一步的說明。本發(fā)明中的節(jié)省內(nèi)存空間的方法可應(yīng)用于基于EN50160協(xié)議的電能質(zhì)量分析系統(tǒng)中?;贓N50160協(xié)議的系統(tǒng)一般為嵌入式系統(tǒng),采用RAM或FLASH等作為內(nèi)存使用, 通過一嵌入式控制器,例如基于ARM架構(gòu)的控制器來實現(xiàn)指令的調(diào)用和數(shù)據(jù)分析、計算。在該系統(tǒng)的一存儲器中可存儲該控制程序,參照圖3該控制程序運行如下步驟首先,根據(jù)分析時間的長度以及待采集的數(shù)據(jù)的類型計算數(shù)據(jù)的總量SlOl ;根據(jù)該數(shù)據(jù)的總量在內(nèi)存中預置具有一定大小的緩沖存儲區(qū)(bUffer)S102 ;根據(jù)分析數(shù)據(jù)類型確定緩存數(shù)據(jù)的類型S103 ;建立控制塊保存控制塊信息S104 ;將采集來的數(shù)據(jù)根據(jù)數(shù)據(jù)的類型按照針對不同緩存數(shù)據(jù)類型的排序算法插入到緩沖存儲區(qū)中,并相應(yīng)的更新控制塊中的信息S105 ;以及,在采集完畢后,根據(jù)控制塊中的內(nèi)容計算出結(jié)果S106。其中,預分配大小為數(shù)據(jù)總量的一定比例的內(nèi)存可以是5%的內(nèi)存。進一步的,所述控制塊信息至少包括需要分析的數(shù)據(jù)總量、加入分析的數(shù)據(jù)個數(shù)、 滿足EN50160協(xié)議的限值的數(shù)據(jù)個數(shù)、緩存最大值數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)指針、緩存最小值數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)指針、緩存數(shù)據(jù)的類型。參照圖1、2進一步的,緩存數(shù)據(jù)類型包括只緩存最大5%,只緩存最小5%,緩存最大2. 5%和最小2. 5%等。進一步,根據(jù)排序算法將數(shù)據(jù)更新到緩存中的步驟包括,根據(jù)降序算法將數(shù)據(jù)更新到最大值數(shù)據(jù)緩沖區(qū)中,如果數(shù)據(jù)緩沖區(qū)溢出,則丟棄掉最小的值;或者,根據(jù)升序算法將數(shù)據(jù)更新到最小值數(shù)據(jù)緩沖區(qū)中,如果數(shù)據(jù)緩沖區(qū)溢出,則丟棄掉最大的值。
進一步的,根據(jù)控制塊中的內(nèi)容計算出結(jié)果的步驟包括對于只緩存最大5%的數(shù)據(jù)類型和只緩存最小5%的數(shù)據(jù)類型,分析模塊根據(jù)控制塊信息中的緩存數(shù)據(jù)緩沖區(qū)指針,從緩存數(shù)據(jù)緩沖區(qū)中取出第一個值,該值即為EN50160 分析需要的100%概率值;根據(jù)控制塊中插入數(shù)據(jù)個數(shù)乘以0. 05后取整,得出EN50160分析需要的95%概率值數(shù)據(jù)在數(shù)據(jù)緩沖區(qū)中的位置,在數(shù)據(jù)緩沖區(qū)中取出該值即可;控制塊中滿足EN50160限值的數(shù)據(jù)個數(shù)除以插入數(shù)據(jù)個數(shù)即可得出EN50160分析中數(shù)據(jù)的合格率。對于緩存最大2. 5%和最小2. 5%的數(shù)據(jù)類型,分析模塊根據(jù)控制塊信息中的緩存數(shù)據(jù)緩沖區(qū)指針,分別從最大值數(shù)據(jù)緩沖區(qū)和最小值數(shù)據(jù)緩沖區(qū)中取出第一個值,根據(jù) EN50160分析的偏差算法,算出兩個值中偏差大的一個即為EN50160分析要求的100%概率值;根據(jù)控制塊中插入數(shù)據(jù)個數(shù)乘以0. 025后取整,以此為位置信息分別從最大值、最小值數(shù)據(jù)緩沖區(qū)中取出相應(yīng)位置的數(shù)據(jù),根據(jù)EN50160分析的偏差算法,算出兩個值中偏差大的一個即為EN50160分析要求的95%概率值;控制塊中滿足EN50160限值的數(shù)據(jù)個數(shù)除以插入數(shù)據(jù)個數(shù)即可得出EN50160分析中數(shù)據(jù)的合格率。實例1對一個星期的數(shù)據(jù)進行基于EN50160標準的分析。以電測量數(shù)據(jù)中的不平衡度數(shù)據(jù)為例,EN50160標準規(guī)定不平衡度數(shù)據(jù)的取樣間隔為10分鐘。計算出一個星期的總的不平衡度數(shù)據(jù)個數(shù)為7天*24小時*60分鐘/10分鐘=1008(個)。EN50160對于不平衡度數(shù)據(jù)只關(guān)心是否超上限,因此只需要保留最大數(shù)據(jù)的5%即可,所以預分配5%的內(nèi)存為1008*5% = 51 (個)。開始分析后,每10分鐘會得到一個不平衡度數(shù)據(jù),將該數(shù)據(jù)經(jīng)過降序排列插入到內(nèi)存中,當插入的總數(shù)據(jù)量大于51個后,內(nèi)存中數(shù)據(jù)會溢出,每次都丟棄最小的一個不平衡度數(shù)據(jù)。經(jīng)過一星期之后,總共向內(nèi)存中插入了 1008個數(shù)據(jù),因為每次溢出時都會丟棄最小的一個,所以最大的5%數(shù)據(jù)會保留在內(nèi)存中,處在5%位置的值就是EN50160分析需要的95%概率值。實例2對一個星期的數(shù)據(jù)進行EN50160分析以電測量數(shù)據(jù)中的電壓有效值數(shù)據(jù)為例,EN50160標準規(guī)定電壓有效值數(shù)據(jù)的取樣間隔為10分鐘。因此可以計算出一個星期的總的電壓有效值數(shù)據(jù)個數(shù)為7天*24小時 *60分鐘/10分鐘=1008 (個),EN50160對于電壓有效值數(shù)據(jù)既關(guān)心是否超上限也關(guān)心是否超下限,因此分別分配兩塊2. 5%的內(nèi)存空間。第一塊內(nèi)存空間大小為1008*2.5% = 26 (個),用于存放1008個數(shù)據(jù)中最大的2. 5%數(shù)據(jù);第二塊內(nèi)存空間大小為1008*2. 5% = 26(個),用于存放1008個數(shù)據(jù)中最小的2. 5%數(shù)。開始分析后,每10分鐘會得到一個電壓有效值數(shù)據(jù),將該數(shù)據(jù)經(jīng)過降序排列插入到第一塊內(nèi)存空間中,當插入的總數(shù)據(jù)量大于26 個后,內(nèi)存中數(shù)據(jù)會溢出,每次都丟棄最小的一個電壓有效值數(shù)據(jù);將該數(shù)據(jù)經(jīng)過升序排列插入到第二塊內(nèi)存空間中,當插入的數(shù)據(jù)量大于26個后,內(nèi)存中數(shù)據(jù)會溢出,每次都丟棄最大的一個電壓有效值數(shù)據(jù)。經(jīng)過一個星期后,總共分別向第一塊內(nèi)存、第二塊內(nèi)存中插入了 1008個數(shù)據(jù),對于第一塊內(nèi)存,因為每次溢出都會丟棄最小的一個數(shù)據(jù),所以最大的 2. 5%數(shù)據(jù)會保留在內(nèi)存中,處于2. 5%位置的值就是EN50160分析需要的95%概率大值; 對于第二塊內(nèi)存,因為每次溢出都會丟棄最大的一個數(shù)據(jù),所以最小的2. 5%數(shù)據(jù)會保留在內(nèi)存中,處于2. 5%位置的值就是EN50160分析需要的95%概率小值。
權(quán)利要求
1.一種節(jié)省內(nèi)存空間的方法,其特征在于,包括根據(jù)分析時間的長度以及待采集的數(shù)據(jù)的類型計算數(shù)據(jù)的總量;根據(jù)該數(shù)據(jù)的總量在內(nèi)存中預置具有一定大小的緩沖存儲區(qū);根據(jù)分析數(shù)據(jù)類型確定緩存數(shù)據(jù)的類型;建立控制塊保存控制塊信息;將采集來的數(shù)據(jù)根據(jù)數(shù)據(jù)的類型按照針對不同緩存數(shù)據(jù)類型的排序算法插入到緩沖存儲區(qū)中,并相應(yīng)的更新控制塊中的信息;以及在采集完畢后,根據(jù)控制塊中的內(nèi)容計算出結(jié)果。
2.根據(jù)權(quán)利要求1所述的節(jié)省內(nèi)存空間的方法,其特征在于預分配大小為數(shù)據(jù)總量的一定比例的內(nèi)存是5 %的內(nèi)存。
3.根據(jù)權(quán)利要求1所述的節(jié)省內(nèi)存空間的方法,其特征在于所述控制塊信息至少包括需要分析的數(shù)據(jù)總量、加入分析的數(shù)據(jù)個數(shù)、滿足EN50160協(xié)議的限值的數(shù)據(jù)個數(shù)、緩存最大值數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)指針、緩存最小值數(shù)據(jù)的數(shù)據(jù)緩沖區(qū)指針、緩存數(shù)據(jù)的類型。
4.根據(jù)權(quán)利要求1所述的節(jié)省內(nèi)存空間的方法,其特征在于緩存數(shù)據(jù)類型包括只緩存最大5%、只緩存最小5%,或緩存最大2. 5%和最小2. 5%。
5.根據(jù)權(quán)利要求4所述的節(jié)省內(nèi)存空間的方法,其特征在于根據(jù)排序算法將數(shù)據(jù)更新到緩存中的步驟包括,根據(jù)降序算法將數(shù)據(jù)更新到最大值數(shù)據(jù)緩沖區(qū)中,如果數(shù)據(jù)緩沖區(qū)溢出,則丟棄掉最小的值;或者,根據(jù)升序算法將數(shù)據(jù)更新到最小值數(shù)據(jù)緩沖區(qū)中,如果數(shù)據(jù)緩沖區(qū)溢出,則丟棄掉最大的值。
全文摘要
本發(fā)明提供一種節(jié)省內(nèi)存空間的方法,其包括根據(jù)分析時間的長度以及待采集的數(shù)據(jù)的類型計算數(shù)據(jù)的總量;根據(jù)該數(shù)據(jù)的總量在內(nèi)存中預置具有一定大小的緩沖存儲區(qū);根據(jù)分析數(shù)據(jù)類型確定緩存數(shù)據(jù)的類型;建立控制塊保存控制塊信息;將采集來的數(shù)據(jù)根據(jù)數(shù)據(jù)的類型按照針對不同緩存數(shù)據(jù)類型的排序算法插入到緩沖存儲區(qū)中,并相應(yīng)的更新控制塊中的信息;以及,在采集完畢后,根據(jù)控制塊中的內(nèi)容計算出結(jié)果。使用本發(fā)明提供的技術(shù)方案,僅需要分配全部數(shù)據(jù)的5%的內(nèi)存,能夠極大的減少需要分配的內(nèi)存,節(jié)省內(nèi)存空間。對于內(nèi)存容量較小的嵌入式系統(tǒng)有著無可比擬的優(yōu)點。
文檔編號G06F12/08GK102495808SQ20111037804
公開日2012年6月13日 申請日期2011年11月24日 優(yōu)先權(quán)日2011年11月24日
發(fā)明者呂小亮, 陳超 申請人:深圳市亞特爾科技有限公司