專利名稱:一種對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息技術(shù)與自動化領(lǐng)域信息處理技術(shù)領(lǐng)域,涉及一 種在嵌入式采集器上使用的實(shí)時(shí)數(shù)據(jù)的存儲方法,是在嵌入式操作 系統(tǒng)上執(zhí)行的一種軟件流程,適用于惡劣應(yīng)用環(huán)境中的嵌入式采集 器實(shí)時(shí)數(shù)據(jù)存儲。
背景技術(shù):
在工業(yè)生產(chǎn)過程中,各種參數(shù)的變化過程往往反映了在一個(gè)階 段內(nèi)生產(chǎn)設(shè)備的運(yùn)行狀況和生產(chǎn)工序的銜接情況,各種參數(shù)過程對 于合理制定生產(chǎn)計(jì)劃、適時(shí)對設(shè)備進(jìn)行維護(hù)、保障安全生產(chǎn)要求等 都具有非常重要的意義。在工業(yè)領(lǐng)域內(nèi)嵌入式采集器被廣泛應(yīng)用, 對許多工業(yè)參數(shù)(如溫度、壓力、流量等)進(jìn)行測量和記錄,生成 連續(xù)的歷史數(shù)據(jù),為技術(shù)人員和管理人員提供分析研究的一手資料。 但由于許多工業(yè)生產(chǎn)中,工作環(huán)境比較惡劣(如高溫、高濕、強(qiáng)腐 蝕等),嵌入式采集器的運(yùn)行條件不是非常穩(wěn)定(如頻繁斷電、外部 干擾嚴(yán)重等),雖然采集器具有一定的環(huán)境適應(yīng)能力,但仍不可避免 的會頻繁出現(xiàn)造成采集器斷電、重啟、甚至死機(jī)、損壞等意外情況 出現(xiàn)。這樣如果正在存儲過程中程序被意外中斷,則存儲到存儲器 中的數(shù)據(jù)就不完整,再次讀取時(shí)將可能無法對數(shù)據(jù)內(nèi)容進(jìn)行解釋。 為了保證在采集器存儲器硬件不損壞的條件下其內(nèi)的存儲數(shù)據(jù)不丟 失,就需要采用高可靠性的數(shù)據(jù)存儲方法,提高存儲器的利用率, 并提高軟件系統(tǒng)的容錯性,保障歷史數(shù)據(jù)的連續(xù)性。目前計(jì)算機(jī)上
的數(shù)據(jù)存儲使用規(guī)范的文件管理系統(tǒng),如FAT、 NTFS等,它們都采 用目錄式的管理方式,在實(shí)際物理地址中通過指針的方式逐級指向 文件內(nèi)容所在的存儲地址,統(tǒng)一對多個(gè)文件的數(shù)據(jù)進(jìn)行管理,這樣 一旦物理地址中的某個(gè)目錄指針出錯,就無法對文件中的內(nèi)容進(jìn)行讀取和解釋,在嵌入式采集器中使用具有一定的風(fēng)險(xiǎn)性。目前的許 多嵌入式采集器中采用基于記錄的存儲方式,每條記錄包含數(shù)據(jù)內(nèi) 容的所有信息,在物理地址中連續(xù)存儲,以此來保證因某些數(shù)據(jù)損 壞而造成所有數(shù)據(jù)不可讀的弊端,但這種方式需要每條記錄采用固 定的存儲格式以包含所有存儲信息,造成每條記錄都占用很多個(gè)字 節(jié),不便于在容量有限的存儲器內(nèi)存儲更多的記錄數(shù)目。因此,高 效率、高可靠性的數(shù)據(jù)存儲方法是解決工業(yè)生產(chǎn)過程中嵌入式采集 器數(shù)據(jù)存儲需求的一種有效手段。
發(fā)明內(nèi)容
為了解決現(xiàn)有技術(shù)的問題,本發(fā)明的目的是提供一種在嵌入式 采集器對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,在工業(yè)過程監(jiān)測中對參數(shù)變化
過程進(jìn)行高效率地可靠存儲,避免因外部原因而造成所存儲的所有 歷史數(shù)據(jù)不可讀的情況,提高嵌入式采集器使用的安全性,保障工 業(yè)生產(chǎn)中的參數(shù)監(jiān)測過程。
為達(dá)到上述目的,本發(fā)明的技術(shù)解決方案是提供一種基于雙索 引的嵌入式采集器對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其技術(shù)方案是
步驟A:先由采集器實(shí)時(shí)釆集各傳感器的數(shù)值,并經(jīng)處理后得
到需要存儲的數(shù)據(jù)內(nèi)容;
步驟B:讀取主份索引概要信息;
步驟C:對主份索引概要信息進(jìn)行校驗(yàn)比較;如果校驗(yàn)主份索 引概要信息正確,則執(zhí)行步驟D;如果校驗(yàn)主份索引概要信息錯誤, 則執(zhí)行步驟N;
步驟D:提取主份索引內(nèi)容的最新指針;
步驟E:讀主份索引內(nèi)容最新存儲指針,利用最新存儲指針在
索引內(nèi)容中讀取最新一條索引信息;
步驟F:對最新一條索引信息進(jìn)行校驗(yàn)比較,如果校驗(yàn)錯誤, 則執(zhí)行步驟N,如果校驗(yàn)正確,則執(zhí)行步驟G;
步驟G:從最新一條索引信息中提取步驟Q的數(shù)據(jù)內(nèi)容最新的 存儲指針,并在存儲指針?biāo)诘牡刂分写鎯Φ臅r(shí)、分、秒、通道、數(shù)值的數(shù)據(jù)內(nèi)容和校驗(yàn)碼;
步驟H:計(jì)算新索引內(nèi)容和校驗(yàn)碼,并根據(jù)存儲指針是否到達(dá) 物理最大存儲地址來決定是否需要進(jìn)行環(huán)形覆蓋操作,若需覆蓋則 對索引年、月、日、存儲內(nèi)容起始地址、存儲內(nèi)容長度的內(nèi)容進(jìn)行 相應(yīng)調(diào)整;
步驟I:存儲主份索引內(nèi)容與校驗(yàn)碼;
步驟J:更新主份索引概要;
步驟K:存儲主份索引概要;
步驟L:存儲備份索引內(nèi)容與校驗(yàn)碼;
步驟M:存儲備份索引概要,完成本次存儲操作,并由步驟A 開始重新執(zhí)行;
步驟N:讀取備份索引概要,利用備份索引進(jìn)行相關(guān)操作; 步驟O:對備份索引概要操作時(shí),進(jìn)行校驗(yàn)比較,若備份索引 概要中的內(nèi)容校驗(yàn)錯誤,說明該存儲器的數(shù)據(jù)己被完全損壞,利用 軟件不能繼續(xù)維護(hù),則執(zhí)行步驟R;若備份索引中的內(nèi)容也校驗(yàn)正 確,則執(zhí)行步驟P;
步驟P:獲取備份索引最新指針;
步驟Q:讀取數(shù)據(jù)內(nèi)容最新存儲指針,并執(zhí)行步驟G; 步驟R:重新建立存儲信息,從步驟A開始重新執(zhí)行。 根據(jù)本發(fā)明的實(shí)施例,所述實(shí)時(shí)采集數(shù)據(jù)還包括 步驟A1:將所述實(shí)時(shí)采集的包含通道號、年、月、日、時(shí)、
分、秒、數(shù)據(jù)值信息、校驗(yàn)碼數(shù)據(jù)按日為單元生成索引和數(shù)據(jù)內(nèi)容; 步驟A2:將包含有年、月、日、起始地址、結(jié)束地址、校驗(yàn)碼,
索引信息與已存儲索引相比較,確定數(shù)據(jù)內(nèi)容的存儲地址;
步驟A3:根據(jù)數(shù)據(jù)內(nèi)容的存儲地址判斷是否需要對己存儲數(shù)據(jù)
進(jìn)行覆蓋,如果需要覆蓋,則將需要覆蓋存儲區(qū)的內(nèi)容刪除,在該
區(qū)域存儲數(shù)據(jù)內(nèi)容,并更改索引信息;如果不需要則直接將數(shù)據(jù)內(nèi) 容存儲在由步驟A2得到的存儲地址中;
步驟A4:根據(jù)數(shù)據(jù)內(nèi)容的存儲情況確定是否需要更新索引信 息,如果需要則將己存儲的索引更改為新索引信息,如果不需要則
7維持原索引不變。
根據(jù)本發(fā)明的實(shí)施例,所述存儲數(shù)據(jù)內(nèi)容覆蓋采用環(huán)形順序存 儲的循環(huán)覆蓋存儲方式,步驟如下
步驟A31:在SD存儲卡中按物理地址順序依次存儲;
步驟A32:存儲到SD存儲卡的最大物理地址時(shí),將SD存儲卡 中最早一天的數(shù)據(jù)刪除掉;
步驟A33:然后在最早一天存儲內(nèi)容的物理地址處繼續(xù)存儲數(shù)
據(jù),構(gòu)成環(huán)形存儲方式,并對索引內(nèi)容進(jìn)行相應(yīng)改動。
根據(jù)本發(fā)明的實(shí)施例,所述的索引還包括
所述索引包含指向該日的數(shù)據(jù)內(nèi)容的物理存儲地址,存儲索引 采用雙索引的主份和備份的存儲方式,內(nèi)容相同的主份索引和備份
索引存儲在鐵電存儲器中不同的物理地址中,各自含有校驗(yàn)信息;
存儲索引由索引概要和索引內(nèi)容組成,索引概要的內(nèi)容包含索 引內(nèi)容起始與結(jié)束物理地址、存儲記錄總數(shù)、物理存儲器剩余空間, 索引內(nèi)容是以天為單位生成的指向存儲數(shù)據(jù)的索引信息。
根據(jù)本發(fā)明的實(shí)施例,所述的嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法
中,其所述校驗(yàn)碼R(X)多項(xiàng)式為CRC16循環(huán)校驗(yàn)碼,其計(jì)算公 式為<formula>formula see original document page 8</formula>其中為要校驗(yàn)的n位二進(jìn)制序列數(shù),=義16 + Z'5 + Z2 +1
為固定多項(xiàng)式,e("為整多項(xiàng)式,及U)余式為循環(huán)校驗(yàn)碼,x是多
項(xiàng)式自由變量。
根據(jù)本發(fā)明的實(shí)施例,所述的嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法 中,其所述實(shí)時(shí)數(shù)據(jù)值為單精度浮點(diǎn)數(shù),由4字節(jié)表示,起始地址 和結(jié)束地址為整型數(shù),由4字節(jié)表示。
根據(jù)本發(fā)明的實(shí)施例,所述的嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法 中,其所述SD存儲卡的存儲容量為256MB 4GB,所述鐵電存儲器 的存儲容量為16KB 128KB。
根據(jù)本發(fā)明的實(shí)施例,所述的嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法中,其所述嵌入式采集器為由ARM處理器構(gòu)成的移植嵌入式操作 系統(tǒng)的裝置,該裝置軟件中不移植文件系統(tǒng)。
本發(fā)明對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法在嵌入式ARM采集器上的 應(yīng)用。
本發(fā)明提出的嵌入式采集器為硬件的采集系統(tǒng)中使用的可靠性 實(shí)時(shí)數(shù)據(jù)存儲方法主要優(yōu)點(diǎn)如下采用索引方式對數(shù)據(jù)內(nèi)容進(jìn)行管 理,可以減少每條數(shù)據(jù)內(nèi)容所占用的字節(jié)數(shù),提高了一定存儲容量 下數(shù)據(jù)記錄的存儲數(shù)量;每條數(shù)據(jù)記錄都采用CRC16校驗(yàn),保證了 所存儲的每條數(shù)據(jù)的正確性;釆用主份和備份雙索引的存儲方式, 避免了因主份或備份一個(gè)索引損壞而造成整個(gè)數(shù)據(jù)內(nèi)容無法解釋的 情況出現(xiàn);主份和備份索引都由索引概要和索引內(nèi)容構(gòu)成,并各自 有CRC16校驗(yàn)碼,保證了存儲內(nèi)容讀取與解釋的可維護(hù)性;數(shù)據(jù)存 儲過程按照先內(nèi)容再索引,先主份再備份的順序,保證了存儲過程 中不會因意外中斷而引起存儲信息錯亂的情況出現(xiàn)。采用循環(huán)覆蓋 的方式實(shí)現(xiàn)固定存儲容量下的數(shù)據(jù)內(nèi)容連續(xù)存儲,用最新采集數(shù)據(jù) 覆蓋最早歷史數(shù)據(jù),保證采集器中存儲數(shù)據(jù)的連續(xù)性,可提高工業(yè) 生產(chǎn)過程中重要參數(shù)記錄的可靠性和完整性。這種存儲方法適合于 嵌入式采集器應(yīng)用,特別適合于多干擾環(huán)境、條件惡劣的工業(yè)采集 場合下使用。
圖1為是本發(fā)明實(shí)施例采用嵌入式采集器對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲 方法的流程圖2本發(fā)明實(shí)施例采用嵌入式采集器的實(shí)時(shí)數(shù)據(jù)存儲系統(tǒng)的結(jié) 構(gòu)框圖3為本發(fā)明嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法中環(huán)形覆蓋方式 的實(shí)施例示意圖。
具體實(shí)施例方式
下面將結(jié)合附圖對本發(fā)明加以詳細(xì)說明,應(yīng)指出的是,所描述的實(shí)施例僅旨在便于對本發(fā)明的理解,而對其不起任何限定作用。 本發(fā)明的一種采用嵌入式采集器對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法, 由所述嵌入式采集器實(shí)時(shí)采集的多個(gè)傳感器的數(shù)據(jù)作為存儲對象;
是工業(yè)采集環(huán)境中ARM采集器所用的高可靠性實(shí)時(shí)數(shù)據(jù)存儲時(shí)的
專用方法,釆用特殊的存儲格式和管理方式,由存儲索引和數(shù)據(jù)內(nèi) 容構(gòu)成。
采集器采集的每條實(shí)時(shí)數(shù)據(jù)包含通道號、年、月、日、時(shí)、分、
秒、實(shí)時(shí)數(shù)據(jù)值信息,其中實(shí)時(shí)數(shù)據(jù)值為單精度浮點(diǎn)數(shù),由4字節(jié) 表示。存儲時(shí)以鐵電存儲器和SD存儲卡為存儲介質(zhì),存儲索引由 主份索引和備份索引構(gòu)成,它們有相同的內(nèi)容,且都各自包含校驗(yàn) 信息,存儲在鐵電存儲器中,指向存儲在SD存儲卡中的數(shù)據(jù)內(nèi)容。 主份索引和備份索引都分別由索引概要和索引內(nèi)容組成,索引概要 的內(nèi)容包含索引內(nèi)容起始與結(jié)束物理地址、存儲記錄總數(shù)、SD存儲 卡剩余空間,索引內(nèi)容是以日為單位的指向數(shù)據(jù)內(nèi)容的信息,包含 年、月、日、數(shù)據(jù)內(nèi)容起始地址和結(jié)束地址,其中起始地址和結(jié)束 地址采用4字節(jié)整型數(shù)表示。數(shù)據(jù)內(nèi)容中的每條數(shù)據(jù)記錄包含通道 號、時(shí)、分、秒、實(shí)時(shí)數(shù)據(jù)值、校驗(yàn)碼信息。
數(shù)據(jù)采集器在采集到實(shí)時(shí)數(shù)據(jù)后,把采集器的時(shí)間信息加入進(jìn) 去,使其稱為包含通道號、年、月、日、時(shí)、分、秒、數(shù)據(jù)值信息 的數(shù)據(jù)記錄,再按日為單元生成索引和數(shù)據(jù)內(nèi)容,其中索引包含有 年、月、日,數(shù)據(jù)內(nèi)容包含通道號、時(shí)、分、秒、數(shù)據(jù)值信息;將 該索引與己存儲的最新一條索引相比較,以確定數(shù)據(jù)內(nèi)容的存儲地 址;根據(jù)數(shù)據(jù)內(nèi)容的存儲地址判斷是否需要對已存儲數(shù)據(jù)進(jìn)行覆蓋, 如果需要覆蓋,則將需要覆蓋存儲區(qū)的內(nèi)容刪除,在該區(qū)域存儲數(shù) 據(jù)內(nèi)容,并更改索引信息,具體的覆蓋方法如圖3所示的環(huán)形覆蓋 實(shí)施例所述;如果不需要則直接將數(shù)據(jù)內(nèi)容存儲在從存儲索引中得 到的存儲地址中;根據(jù)數(shù)據(jù)內(nèi)容的存儲情況確定是否需要更新索引 信息,如果需要則將已存儲的索引更改為新索引信息,如果不需要 則維持原索引不變。
圖1是采用嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法的流程圖,它描述了嵌入式采集器數(shù)據(jù)存儲的整個(gè)過程,其具體步驟為
步驟A:由釆集器釆集各傳感器的數(shù)值,并經(jīng)處理后得到需要
存儲的數(shù)據(jù)內(nèi)容;步驟B:讀取主份索引概要信息;步驟C:并對
其利用CRC16循環(huán)校驗(yàn)碼進(jìn)行校驗(yàn)比較,以確定是否需要讀取備份 索引信息。其中CRC16循環(huán)校驗(yàn)碼的計(jì)算公式為
G(義)、 G(義) 其中W義)為要校驗(yàn)的n位二進(jìn)制序列數(shù),= X'6 + +義2 +1為固
定多項(xiàng)式,e("為整多項(xiàng)式,/ (x)余式為循環(huán)校驗(yàn)碼。校驗(yàn)過程采
用循環(huán)移位和異或運(yùn)算來實(shí)現(xiàn),其代碼與標(biāo)準(zhǔn)CRC16運(yùn)算代碼相 同。
如果主份索引概要信息計(jì)算出的校驗(yàn)碼與存儲的校驗(yàn)碼不相符 則說明校驗(yàn)錯誤,就執(zhí)行步驟N,利用備份索引進(jìn)行相關(guān)操作,若
相符則說明校驗(yàn)正確,就執(zhí)行步驟D;步驟D:從主份索引概要信 息中提取主份索引內(nèi)容的最新指針;步驟E:利用主份索引最新存 儲指針在索引內(nèi)容中讀取最新一條索引信息;步驟F:對最新一條 索引信息進(jìn)行校驗(yàn)比較,如果校驗(yàn)錯誤則執(zhí)行步驟N,如果校驗(yàn)正 確則執(zhí)行步驟G;步驟G:從最新一條索引信息中提取步驟Q的數(shù)
據(jù)內(nèi)容最新的存儲指針,并在存儲指針?biāo)诘牡刂分写鎯?shù)據(jù)內(nèi)容,
包括時(shí)、分、秒、通道號、實(shí)時(shí)數(shù)值和CRC16校驗(yàn)碼;步驟H:計(jì)
算新索引內(nèi)容和校驗(yàn)碼,根據(jù)指針是否到達(dá)物理最大存儲地址來決 定是否需要進(jìn)行環(huán)形覆蓋操作,若需覆蓋則對索引內(nèi)容中的年、月、 日、存儲內(nèi)容起始地址、存儲內(nèi)容長度信息進(jìn)行相應(yīng)調(diào)整,并采用 覆蓋方式用新數(shù)據(jù)將已存儲數(shù)據(jù)替換,若不需覆蓋則直接將數(shù)據(jù)內(nèi)
容存儲到相應(yīng)的存儲地址中;步驟I:將主份索引內(nèi)容和校驗(yàn)碼存儲 到最新主份索引內(nèi)容指針?biāo)傅奈锢淼刂分?;步驟J:根據(jù)主份索引 內(nèi)容的信息更新主份索引概要;步驟K:將主份索引概要存儲在原 主份索引概要所在位置;步驟L:復(fù)制與主份索引內(nèi)容相同的索引 內(nèi)容和校驗(yàn)碼,并存儲在最新一條備份索引內(nèi)容所指的物理地址中;步驟M:存儲備份索引概要,完成本次存儲操作,并由步驟A開始
重新執(zhí)行;步驟N:利用備份索引操作時(shí),進(jìn)行CRC16校驗(yàn)比較,
若備份索引中的內(nèi)容也校驗(yàn)錯誤,則說明該存儲器的數(shù)據(jù)已被完全
損壞,利用軟件方法己不能繼續(xù)維護(hù),則執(zhí)行步驟R;若備份索引 中的內(nèi)容校驗(yàn)正確,則執(zhí)行步驟P;步驟P:從備份索引概要中獲取 備份索引內(nèi)容的最新指針;步驟Q:讀取數(shù)據(jù)內(nèi)容最新存儲指針, 并執(zhí)行步驟G;步驟R:重新建立存儲信息,從步驟A開始重新執(zhí)行。
采用這種存儲方式和存儲順序,可以保證在軟件程序意外中斷
時(shí)仍然能夠通過索引對數(shù)據(jù)內(nèi)容進(jìn)行解釋如果在存儲內(nèi)容時(shí)被中 斷,由于索引信息未被修改,則在數(shù)據(jù)解釋時(shí)不會出錯;如果在存
儲主份索引內(nèi)容時(shí)被中斷,由于主份索引概要還未修改,在解釋時(shí)
可以按照內(nèi)容未改變之前的數(shù)據(jù)進(jìn)行解釋;若在存儲主份索引概要 時(shí)被中斷,則校驗(yàn)比較時(shí)會出錯,而由于此時(shí)備份索引信息還未被 修改,則可以利用備份索引信息對數(shù)據(jù)內(nèi)容未改變之前的數(shù)據(jù)進(jìn)行 解釋。這樣,只要物理存儲介質(zhì)不受損壞,按照這種存儲方式,主 份索引和備份索引中肯定有一個(gè)是完整正確的信息,就可以對數(shù)據(jù) 內(nèi)容進(jìn)行解釋,不會造成因某條數(shù)據(jù)記錄存儲錯誤而引起的整個(gè)數(shù) 據(jù)內(nèi)容無法讀取解釋。
本發(fā)明的技術(shù)核心是把多重校驗(yàn)和雙索引方式應(yīng)用于數(shù)據(jù)存儲 過程中,使所存儲的內(nèi)容具有更高的可靠性,能夠從軟件上保證在 惡劣環(huán)境下工作嵌入式采集器對于外部影響的可靠處理性能,增強(qiáng) 數(shù)據(jù)存儲的可維護(hù)性,提高歷史數(shù)據(jù)的可信度。它利用合理的執(zhí)行 步驟,避免了因意外中斷造成的數(shù)據(jù)不可讀現(xiàn)象,提高了存儲介質(zhì) 的利用效率,也增強(qiáng)了存儲數(shù)據(jù)的完整性,比一般的嵌入式文件系 統(tǒng)更安全可靠,保證了物理存儲器不損壞的情況下數(shù)據(jù)內(nèi)容的可讀 性,對于工業(yè)生產(chǎn)過程重要過程參數(shù)的長時(shí)間監(jiān)測和記錄具有重要 意義。
為了實(shí)現(xiàn)本發(fā)明的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,實(shí)施例示出圖 2采用嵌入式ARM采集器典型的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲系統(tǒng)的結(jié)構(gòu)框圖,該對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲系統(tǒng)采集設(shè)備主要由N個(gè)傳感器1、嵌
入式ARM采集器2和計(jì)算機(jī)3組成,N個(gè)傳感器表示為11、 12、 13......1N,其中嵌入式ARM采集器2含有計(jì)算機(jī)通訊接口 21、ARM
控制器22、鐵電存儲器23、 SD存儲卡24、通訊接口25,所述通訊 接口 25可為RS232、 RS485或CAN接口 ,計(jì)算機(jī)通訊接口 21可為 RS232、 USB或以太網(wǎng)接口,傳感器ll、 12、 13......1N為具有相同
通訊接口 25的數(shù)字傳感器,通過通訊總線與嵌入式ARM采集器2 連接。所述SD存儲卡的存儲容量為256MB 4GB,所述鐵電存儲器 的存儲容量為16KB 128KB。所述嵌入式采集器為由ARM處理器 構(gòu)成的移植嵌入式操作系統(tǒng)的裝置,該裝置的軟件中不移植常用文 件系統(tǒng)。
圖2的工作原理如下ARM控制器22通過通訊接口 25依次向 各個(gè)傳感器ll、 12、 13.....1N發(fā)送采集命令,再接收傳感器ll、 12、 13.....1N傳輸來的數(shù)值信息,并根據(jù)ARM控制器22自身的時(shí)鐘信 息生成要存儲的完整實(shí)時(shí)數(shù)據(jù)內(nèi)容,然后按照該發(fā)明的對實(shí)時(shí)數(shù)據(jù) 進(jìn)行存儲的方法,把該實(shí)時(shí)數(shù)據(jù)內(nèi)容分解為索引信息和數(shù)據(jù)內(nèi)容, 分別存儲到鐵電存儲器23和SD存儲卡24中。當(dāng)計(jì)算機(jī)3通過計(jì) 算機(jī)通訊接口 21與嵌入式ARM采集器2相連時(shí),可以讀取存儲在 鐵電存儲器23和SD存儲卡24中的數(shù)據(jù)內(nèi)容,得到該采集器2所 監(jiān)測的參數(shù)歷史記錄。
圖3是嵌入式采集器實(shí)時(shí)數(shù)據(jù)存儲方法環(huán)形覆蓋方式的實(shí)施例 示意圖。在該實(shí)施例圖中為了簡化描述過程,將主份索引內(nèi)容和備 份索引內(nèi)容統(tǒng)稱為索引信息,將存儲數(shù)據(jù)內(nèi)容的物理存儲區(qū)域采用 分塊管理的方式,每個(gè)單元稱為數(shù)據(jù)塊。該實(shí)時(shí)例中采用這些名稱, 其他名稱與權(quán)利要求書中相同,特此說明。物理存儲區(qū)域由BL1、
BL2........BLm共m個(gè)數(shù)據(jù)塊構(gòu)成,每條索引信息In中分別包含
起始地址Sa和結(jié)束地址Ea,對于當(dāng)前最新一條的索引信息包含起 始地址Sa和最新內(nèi)容存儲地址N (簡稱當(dāng)前地址,下同)。在使用
本發(fā)明的存儲方法時(shí),實(shí)施例中的存儲器中己存儲三個(gè)存儲索引信 息Inl、 In2、 In3,數(shù)據(jù)內(nèi)容按照物理地址從小到大的順序在存儲區(qū)內(nèi)依次向后存儲,其中索引In3是當(dāng)前最新一條索引信息,它們各 自所包含的起始地址Sa和結(jié)束地址Ea指向數(shù)據(jù)區(qū)中的相應(yīng)位置, 起始地址Sal指向數(shù)據(jù)塊BL1的起始端,結(jié)束地址Eal和起始地址 Sa2指向數(shù)據(jù)塊BL2的同一地址,結(jié)束地址Ea2和起始地址Sa3指 向數(shù)據(jù)塊BL4的同一地址,索引In3的當(dāng)前地址Na3指向了數(shù)據(jù)塊 BLm的底端(即最大物理存儲地址邊界)。這一時(shí)刻的對應(yīng)關(guān)系都 用實(shí)線標(biāo)識。在采集器又采集到一條新數(shù)據(jù)后,由于物理存儲器都 已經(jīng)存滿,必須將舊數(shù)據(jù)清除掉才能存儲新數(shù)據(jù)。此時(shí)最早的數(shù)據(jù) 是索引Inl所指向的數(shù)據(jù)塊BL1,先由程序把索引In3中的當(dāng)前地 址Na3用結(jié)束地址Ea3替換,再將數(shù)據(jù)塊BL1的內(nèi)容清除掉,然后 新建一個(gè)索引In4,其起始地址Sa4和當(dāng)前地址Na4指向數(shù)據(jù)塊BL1 的起始端,并修改索引Inl的起始地址Sal指向數(shù)據(jù)塊BL2的起始 端。此時(shí)的對應(yīng)關(guān)系都用短虛線標(biāo)識。在按照本發(fā)明的數(shù)據(jù)存儲方 法進(jìn)行采集存儲一段時(shí)間之后,索引In4的當(dāng)前地址指向了數(shù)據(jù)塊 BL1的最底端(長虛線標(biāo)識),此時(shí)數(shù)據(jù)再次被存滿,還需進(jìn)行數(shù)據(jù) 覆蓋。此時(shí)采集到新的數(shù)據(jù)以后,先將數(shù)據(jù)塊BL2中的內(nèi)容清除掉, 再修改索引In4的當(dāng)前地址Na4指向數(shù)據(jù)塊BL2的起始端,此時(shí)由 于索引Inl的結(jié)束地址Eal指向數(shù)據(jù)塊BL2的中間,也就意味著存 儲器中已沒有索引Inl的數(shù)據(jù),將索引Inl從存儲器中刪除,修改 索引In2的起始地址Sa2指向數(shù)據(jù)塊BL3的起始端。此時(shí)的對應(yīng)關(guān) 系用長虛線標(biāo)識。采用這種循環(huán)覆蓋的存儲方式,就可以保證存儲 器中一直都以較高的效率被使用,并可以確保存儲器中所存儲的數(shù) 據(jù)都是最新的數(shù)據(jù)內(nèi)容,緩解了存儲器尺寸限制對數(shù)據(jù)存儲容量的 限制。
以上所述,僅為本發(fā)明中的具體實(shí)施方式
,但本發(fā)明的保護(hù)范 圍并不局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍 內(nèi),可理解想到的變換或替換,都應(yīng)涵蓋在本發(fā)明的包含范圍之內(nèi), 因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1. 一種對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,是針對嵌入式ARM采集器的設(shè)計(jì),其特征在于其存儲步驟為步驟A先由采集器實(shí)時(shí)采集各傳感器的數(shù)值,并經(jīng)處理后得到需要存儲的數(shù)據(jù)內(nèi)容;步驟B讀取主份索引概要信息;步驟C對主份索引概要信息進(jìn)行校驗(yàn)比較;如果校驗(yàn)主份索引概要信息正確,則執(zhí)行步驟D;如果校驗(yàn)主份索引概要信息錯誤,則執(zhí)行步驟N;步驟D提取主份索引內(nèi)容的最新指針;步驟E讀主份索引內(nèi)容最新存儲指針,利用最新存儲指針在索引內(nèi)容中讀取最新一條索引信息;步驟F對最新一條索引信息進(jìn)行校驗(yàn)比較,如果校驗(yàn)錯誤,則執(zhí)行步驟N,如果校驗(yàn)正確,則執(zhí)行步驟G;步驟G從最新一條索引信息中提取步驟Q的數(shù)據(jù)內(nèi)容最新的存儲指針,并在存儲指針?biāo)诘牡刂分写鎯Φ臅r(shí)、分、秒、通道、數(shù)值的數(shù)據(jù)內(nèi)容和校驗(yàn)碼;步驟H計(jì)算新索引內(nèi)容和校驗(yàn)碼,并根據(jù)存儲指針是否到達(dá)物理最大存儲地址來決定是否需要進(jìn)行環(huán)形覆蓋操作,若需覆蓋則對索引年、月、日、存儲內(nèi)容起始地址、存儲內(nèi)容長度的內(nèi)容進(jìn)行相應(yīng)調(diào)整;步驟I存儲主份索引內(nèi)容與校驗(yàn)碼;步驟J更新主份索引概要;步驟K存儲主份索引概要;步驟L存儲備份索引內(nèi)容與校驗(yàn)碼;步驟M存儲備份索引概要,完成本次存儲操作,并由步驟A開始重新執(zhí)行;步驟N讀取備份索引概要,利用備份索引進(jìn)行相關(guān)操作;步驟O對備份索引概要操作時(shí),進(jìn)行校驗(yàn)比較,若備份索引概要中的內(nèi)容校驗(yàn)錯誤,說明該存儲器的數(shù)據(jù)已被完全損壞,利用軟件不能繼續(xù)維護(hù),則執(zhí)行步驟R;若備份索引中的內(nèi)容也校驗(yàn)正確,則執(zhí)行步驟P;步驟P獲取備份索引最新指針;步驟Q讀取數(shù)據(jù)內(nèi)容最新存儲指針,并執(zhí)行步驟G;步驟R重新建立存儲信息,從步驟A開始重新執(zhí)行。
2. 根據(jù)權(quán)利要求l所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征 在于,所述實(shí)時(shí)采集數(shù)據(jù)還包括步驟A1:將所述實(shí)時(shí)采集的包含通道號、年、月、日、時(shí)、 分、秒、數(shù)據(jù)值信息、校驗(yàn)碼數(shù)據(jù)按日為單元生成索引和數(shù)據(jù)內(nèi)容;步驟A2:將包含有年、月、日、起始地址、結(jié)束地址、校驗(yàn)碼 的索引信息與已存儲索引相比較,確定數(shù)據(jù)內(nèi)容的存儲地址;步驟A3:根據(jù)數(shù)據(jù)內(nèi)容的存儲地址判斷是否需要對己存儲數(shù)據(jù) 進(jìn)行覆蓋,如果需要覆蓋,則將需要覆蓋存儲區(qū)的內(nèi)容刪除,在該 區(qū)域存儲數(shù)據(jù)內(nèi)容,并更改索引信息;如果不需要則直接將數(shù)據(jù)內(nèi) 容存儲在由步驟A2得到的存儲地址中;步驟A4:根據(jù)數(shù)據(jù)內(nèi)容的存儲情況確定是否需要更新索引信 息,如果需要則將已存儲的索引更改為新索引信息,如果不需要則 維持原索引不變。
3. 如權(quán)利要求2所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征在于所述存儲數(shù)據(jù)內(nèi)容覆蓋采用環(huán)形順序存儲的循環(huán)覆蓋存儲方式, 步驟如下步驟A31:在SD存儲卡中按物理地址順序依次存儲;步驟A32:存儲到SD存儲卡的最大物理地址時(shí),將SD存儲卡 中最早一天的數(shù)據(jù)刪除掉;步驟A33:然后在最早一天存儲內(nèi)容的物理地址處繼續(xù)存儲數(shù) 據(jù),構(gòu)成環(huán)形存儲方式,并對索引內(nèi)容進(jìn)行相應(yīng)改動。
4. 如權(quán)利要求l所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征在 于,所述的索引還包括所述索引包含指向該日的數(shù)據(jù)內(nèi)容的物理存儲地址,存儲索引采用雙索引的主份和備份的存儲方式,內(nèi)容相同的主份索引和備份 索引存儲在鐵電存儲器中不同的物理地址中,各自含有校驗(yàn)信息;存儲索引由索引概要和索引內(nèi)容組成,索引概要的內(nèi)容包含索 引內(nèi)容起始與結(jié)束物理地址、存儲記錄總數(shù)、物理存儲器剩余空間, 索引內(nèi)容是以天為單位生成的指向存儲數(shù)據(jù)的索引信息。
5. 如權(quán)利要求l所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征在于所述校驗(yàn)碼R (X)多項(xiàng)式為CRC16循環(huán)校驗(yàn)碼,其計(jì)算為<formula>formula see original document page 4</formula>其中為要校驗(yàn)的n位二進(jìn)制序列數(shù),=義'6 +義2 +1 為固定多項(xiàng)式,^義)為整多項(xiàng)式,/ ("余式為循環(huán)校驗(yàn)碼,X是多 項(xiàng)式自由變量。
6. 如權(quán)利要求1所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征在 于所述實(shí)時(shí)數(shù)據(jù)值為單精度浮點(diǎn)數(shù),由4字節(jié)表示,起始地址和 結(jié)束地址為整型數(shù),由4字節(jié)表示。
7. 如權(quán)利要求3所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征在 于所述SD存儲卡的存儲容量為256MB 4GB。
8. 如權(quán)利要求4所述的對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,其特征在 于所述鐵電存儲器的存儲容量為16KB 128KB。
9. 如權(quán)利要求1所述的實(shí)時(shí)數(shù)據(jù)存儲方法,其特征在于所述 嵌入式采集器為由ARM處理器構(gòu)成的移植嵌入式操作系統(tǒng)的裝置, 該裝置的軟件中不移植常用文件系統(tǒng)。
10. 如權(quán)利要求1所述對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法在嵌入式 ARM采集器上的應(yīng)用。
全文摘要
一種對實(shí)時(shí)數(shù)據(jù)進(jìn)行存儲的方法,由采集器實(shí)時(shí)采集存儲傳感器的數(shù)據(jù);讀取主份索引概要信息并校驗(yàn)比較;提取主份索引內(nèi)容的最新指針;讀數(shù)據(jù)內(nèi)容最新存儲指針;存儲數(shù)據(jù)內(nèi)容和校驗(yàn)碼;計(jì)算新索引內(nèi)容和校驗(yàn)碼;存儲主份索引內(nèi)容與校驗(yàn)碼;更新并存儲主份索引概要;存儲備份索引內(nèi)容與校驗(yàn)碼;存儲備份索引概要;讀取備份索引概要,對備份索引概要校驗(yàn)比較;獲取備份索引最新指針;讀取數(shù)據(jù)內(nèi)容最新存儲指針;重新建立存儲信息。采用雙索引和多重校驗(yàn)對存儲器中的數(shù)據(jù)保護(hù),保證采集器中所存儲數(shù)據(jù)內(nèi)容完整,采用循環(huán)覆蓋實(shí)現(xiàn)固定存儲容量下的數(shù)據(jù)內(nèi)容連續(xù)存儲,提高工業(yè)過程中重要參數(shù)記錄的可靠性和完整性,提高過程監(jiān)測和安全生產(chǎn)的工作效益。
文檔編號G05B19/048GK101520787SQ200810102210
公開日2009年9月2日 申請日期2008年3月19日 優(yōu)先權(quán)日2008年3月19日
發(fā)明者侯增廣, 尚繼林, 恩 李, 瀟 梁, 梁自澤, 碩 王, 民 譚, 趙曉光 申請人:中國科學(xué)院自動化研究所