專利名稱:實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法
技術領域:
本發(fā)明涉及實時數(shù)據(jù)采集存儲領域,具體是一種實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,尤其涉及一種在不存在操作系統(tǒng)的環(huán)境下對文件進行管理的辦法。
背景技術:
隨著現(xiàn)代科學技術的發(fā)展,實時數(shù)據(jù)采集存儲技術已滲透到地質勘探、醫(yī)療器械、雷達、導彈的研制、測控等眾多技術領域。在科學研究領域,通過查看實時采集存儲的大量數(shù)據(jù)來發(fā)現(xiàn)新的具有重大意義的相互聯(lián)系,為科學研究提供數(shù)據(jù)依據(jù);在工業(yè)生產(chǎn)方面,可通過實時監(jiān)測數(shù)據(jù),及時發(fā)現(xiàn)存在的問題,避免危險的發(fā)生,同時也為后期解決問題提供數(shù)據(jù)依據(jù)??茖W研究中的動態(tài)信息以及工業(yè)生產(chǎn)中的工作現(xiàn)場參數(shù)的數(shù)據(jù)量越來越大,相應的存儲量也越來越大,文件管理也越來越重要。目前在實時采集存儲應用領域,根據(jù)系統(tǒng)資源環(huán)境,把文件管理主要分為兩類存在操作系統(tǒng)環(huán)境下的文件管理和不存在操作環(huán)境下的文件管理。不存在操作系統(tǒng)的環(huán)境下的文件管理,需要從底層硬件操作到高層管理實現(xiàn)文件系統(tǒng)的所有功能,一般需要設計專用的文件系統(tǒng),設計實現(xiàn)復雜,但是具有很好的靈活性,可以根據(jù)不同的應用,對各層功能進行增強和裁減,以達到最優(yōu)的性能和最低的成本,適合于功能相對簡單、資源相對較少的專用性強的應用系統(tǒng),但是通用性較差。目前在實時數(shù)據(jù)采集存儲領域,不存在操作系統(tǒng)的環(huán)境下的文件管理相對較為簡單,有的文件管理辦法只是對數(shù)據(jù)進行采、存、讀取、擦除的循環(huán)記錄,數(shù)據(jù)基本是一次性的。會造成Flash的損耗不均衡,會減少Flash的使用壽命,同時無法實現(xiàn)文件的隨機訪問,缺乏對文件的有效管理;有的文件管理辦法是根據(jù)文件的個數(shù)把Flash等分成幾份,靈活性差,由于文件的大小不一定相同,會造成空間的浪費。
發(fā)明內(nèi)容
本發(fā)明為了解決現(xiàn)有不存在操作系統(tǒng)的環(huán)境下的文件管理存在的一系列問題,提供了一種實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法。本發(fā)明是通過以下技術方案實現(xiàn)的一種實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,所述的實時數(shù)據(jù)采集存儲系統(tǒng)包括控制模塊、存儲模塊、電源模塊、各種采集接口以及故障診斷計算機;所述的控制模塊包括主控芯片、時鐘芯片、內(nèi)部總線、各種采集接口 ;所述的存儲模塊包括若干片F(xiàn)lash,所述的一片F(xiàn)lash由若干塊組成,所述的塊由若干頁組成,一頁可以存儲2Kbyte數(shù)據(jù);其文件管理方法的內(nèi)容包括一、數(shù)據(jù)的存儲,二、歷史數(shù)據(jù)的獲取,三、實時數(shù)據(jù)的獲?。凰龅臄?shù)據(jù)的存儲包括A.建立索引、B.存儲數(shù)據(jù);所述的歷史數(shù)據(jù)的獲取包括A.獲取索引文件、B.獲取歷史數(shù)據(jù);所述的主控芯片內(nèi)部建立有寫FIFO和讀FIFO ;存儲模塊中的若干片F(xiàn)lash的其中一片為索引Flash,其余Flash為存儲Flash,所述的索引Flash用于存儲索引文件,所述的索引文件在索引Flash的存儲格式為每一頁存儲一個索引文件;所述的存儲Flash用于存儲數(shù)據(jù)文件;
所述的A.建立索引的步驟為
Al.查找本次索引文件存放地址
(1)系統(tǒng)上電;
(2)從索引Flash的第一塊的第一頁開始讀回至少兩個字節(jié)的索引文件,所述的索引文件包括頭標志、索引號、文件名標識、日期和時間及數(shù)據(jù)文件存放的首地址;
(3)判斷前兩個字節(jié)是否是頭標志;如果是頭標志,則執(zhí)行步驟(4);如果不是頭標志,則執(zhí)行步驟(5);
(4)塊地址加一,并重新執(zhí)行步驟(3);
(5)返回到上個塊地址的第一頁開始讀回至少兩個字節(jié)的索引文件;
(6)判斷前兩個字節(jié)是否是頭標志;如果是頭標志,則執(zhí)行步驟(7);如果不是頭標志,則執(zhí)行步驟(8);
(7)頁地址加I,并重新執(zhí)行步驟(6);
(8)此時得到的塊地址記為addr_b和頁地址addr_p為本次索引文件存放地址;
A2.查找本次數(shù)據(jù)文件存放的首地址
(9)讀取塊地址為addr_b和頁地址addr_p_l的索引文件,即上次索引文件;
(10)根據(jù)上次索引文件查找上次數(shù)據(jù)文件存放的首地址;
(11)根據(jù)上次數(shù)據(jù)文件的首地址開始按塊讀回存儲Flash內(nèi)至少三個字節(jié)的數(shù)據(jù)文
件;
(12)判斷前三字節(jié)是否為“FFFFFF”;如果不是“FFFFFF”,則執(zhí)行步驟(13);如果是“FFFFFF”,則執(zhí)行步驟(14);
(13)塊地址加1,并重新執(zhí)行步驟(12);
(14)返回上個塊的第一頁,讀回存儲Flash內(nèi)的數(shù)據(jù)文件;
(15)判斷前三字節(jié)是否為“FFFFFF”;如果不是“FFFFFF”,則執(zhí)行步驟(16);如果是“FFFFFF”,則執(zhí)行步驟(17);
(16)頁地址加一,并重新執(zhí)行步驟(15);
(17)將此塊地址和頁地址作為本次數(shù)據(jù)文件存放的首地址;
A3.將索引文件寫入索引Flash
(18)向控制模塊的時鐘芯片讀取時間信息,按索引幀格式將本次索引文件寫入索引Flash ;
(19)建立索引結束;
所述的B.存儲數(shù)據(jù)的步驟為
(20)從建立索引中得到本次數(shù)據(jù)文件存放的首地址;
(21)將數(shù)據(jù)文件進行順序存儲于存儲Flash;
(22)數(shù)據(jù)文件的存儲結束;
所述的獲取索引文件的步驟為
a.故障診斷計算機下發(fā)讀索引文件指令,也可以說主控芯片收到讀索引文件的指令;
b.給出所要讀取的索引文件的索引號或者索引文件的日期或時間段;
c.判斷寫FIFO是否滿2Kbyte;如果滿2Kbyte,則執(zhí)行步驟d ;如果未滿,則執(zhí)行步驟e ;
d.把寫FIFO中的一頁數(shù)據(jù)文件寫入存儲Flash,然后執(zhí)行步驟e;
e.讀取一頁索引文件;
f.判斷讀索引文件是否完成;如果未完成,則重新執(zhí)行步驟c;如果完成,則執(zhí)行步驟
g ;
g.獲取索引文件結束;
所述的獲取歷史數(shù)據(jù)的步驟為
h.故障診斷計算機下發(fā)讀單個或連續(xù)歷史數(shù)據(jù)文件的指令,也可以認為主控芯片收到讀單個或連續(xù)歷史數(shù)據(jù)文件的指令;
i.獲取該歷史數(shù)據(jù)文件所需要的索引文件;
j.獲取該歷史數(shù)據(jù)文件存放的首地址和末地址;所要獲取的歷史數(shù)據(jù)文件對應的索引文件有數(shù)據(jù)文件存放的首地址,末地址通過下一個索引文件中的數(shù)據(jù)文件存放的首地址減一得到;
k.判斷寫FIFO是否滿2Kbyte ;如果滿2Kbyte,則執(zhí)行步驟I ;如果未滿2Kbyte,則執(zhí)行步驟m;
I.把寫FIFO中的一頁數(shù)據(jù)文件寫入存儲Flash,然后執(zhí)行步驟m ; m.讀取一頁歷史數(shù)據(jù)文件;
n.判斷讀歷史數(shù)據(jù)文件是否完成;如果完成,則執(zhí)行步驟0 ;如果未完成,則重新執(zhí)行步驟k ;
o.讀歷史數(shù)據(jù)結束;
所述的獲取實時數(shù)據(jù)文件的步驟包括各種采集接口采集的數(shù)據(jù)實時回傳給故障診斷計算機。為了保證采集來的數(shù)據(jù)文件寫入存儲模塊,本發(fā)明所述的控制模塊的主控芯片內(nèi)部建立有寫數(shù)據(jù)緩存(寫FIFO)。一旦整個系統(tǒng)掉電,寫數(shù)據(jù)緩存中的數(shù)據(jù)就會丟失。如果所述的索引文件中包括數(shù)據(jù)文件存放的末地址信息,一旦斷電就會導致只能獲得索引文件的首地址,而得不到索引文件的末地址,后期獲取數(shù)據(jù)文件時就會出錯。這種掉電丟數(shù)據(jù)的弊端可以通過添加蓄電池來解決,但是無形中又增加了硬件成本。因此,本發(fā)明所述的索引文件只有數(shù)據(jù)文件存放的首地址,末地址則通過下一個索引文件對應的數(shù)據(jù)文件的首地址減一得到。這樣既保證了后期獲取數(shù)據(jù)文件的可靠性,又節(jié)約了成本。所述的索引文件在索引Flash的存儲格式為每一頁存儲一個索引文件。由于存儲模塊中的Flash是按頁編程,如果一頁上存儲多個索引文件,那么在存儲本次索引文件之前,需要把該頁上已存在的索引文件全部拷貝到某處,然后再一起進行頁編程。這樣不僅會增加實現(xiàn)的復雜度,同時也可能造成要拷貝的索引文件的丟失或出錯。假設采用一頁存儲多個索引文件的方法,K9K8G08U0A型Flash —頁可以存儲2Kbyte數(shù)據(jù),本發(fā)明所述的一個索引文件占17個字節(jié),即一頁Flash可存儲2000 + 17=117. 6個索引文件,也就是說要拷貝110多次才能把該頁存滿,同時該頁也需要擦除110多次,會縮短Flash的使用壽命、程序實現(xiàn)復雜、易出錯并且獲取索引文件也較復雜。故本發(fā)明所述的索引文件在索引Flash的存儲格式為每一頁存儲一個索引文件。例如K9K8G08U0A型Flash共有8192X64=524288頁,一片F(xiàn)lash就可存儲50多萬個索引文件。如果空間還不夠,可以增加放索引文件的Flash、的片數(shù)。本發(fā)明與現(xiàn)有實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理技術相比,其有益的效果主要有(I)相對于存在操作系統(tǒng)的文件管理方法,本發(fā)明所述的文件管理簡單,需要的硬件資源少;(2)本發(fā)明所述的文件管理方法方便在各種非操作系統(tǒng)簡易平臺實現(xiàn),如單片機、DSP、FPGA等平臺,應用范圍廣泛;(3)相對于現(xiàn)有不存在操作系統(tǒng)的文件管理中的固定分區(qū)管理辦法,本發(fā)明所述的文件管理方法更加靈活,同時避免存儲空間的浪費;(4)相對于不存在操作系統(tǒng)的文件管理的順序存取,本發(fā)明提供更加有效的文件管理方法,通過建立索引,方便了文件的快速存儲和讀??;(5)在實時數(shù)據(jù)采集存儲領域,本發(fā)明所述的文件管理辦法,不僅可以實現(xiàn)實時數(shù)據(jù)的獲取,同時可以在存儲數(shù)據(jù)的時候獲取索引文件或歷史數(shù)據(jù)文件。本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法主要用于產(chǎn)品研制、使用過程中相關參數(shù)的實時監(jiān)控、記錄,便于查看各個參數(shù)的變化規(guī)律,為產(chǎn)品的設計、改進提供有力的數(shù)據(jù)支撐。
圖I為本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法的建立索引的流程圖。圖2為本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法的獲取索引文件流程圖。圖3為本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法的獲取歷史數(shù)據(jù)流程圖。圖4為本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法的單個存儲卡的原理結構示意圖。圖5為本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法的單片F(xiàn)lash的原理結構示意圖。
具體實施例方式下面結合附圖對本發(fā)明加以詳細的說明,應指出的是,所描述的實施例僅旨在便于本發(fā)明的理解。本發(fā)明通過數(shù)據(jù)的存儲、歷史數(shù)據(jù)的獲取、實時數(shù)據(jù)的獲取來實現(xiàn)在不存在操作系統(tǒng)的環(huán)境下的文件的有效管理,主要是采集和長時間記錄環(huán)境參數(shù),為故障診斷系統(tǒng)提供數(shù)據(jù),與故障診斷計算機共同完成參數(shù)的實時檢測、預警及故障診斷等功能。一種實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,所述的實時數(shù)據(jù)采集存儲系統(tǒng)包括控制模塊、存儲模塊、電源模塊、各種采集接口以及故障診斷計算機;所述的控制模塊包括主控芯片、時鐘芯片、內(nèi)部總線、各種采集接口 ;所述的存儲模塊包括若干片F(xiàn)lash,所述的一片F(xiàn)lash由若干塊組成,所述的塊由若干頁組成,一頁可以存儲2Kbyte數(shù)據(jù);其文件管理方法的內(nèi)容包括一、數(shù)據(jù)的存儲,二、歷史數(shù)據(jù)的獲取,三、實時數(shù)據(jù)的獲??;所述的數(shù)據(jù)的存儲包括A.建立索引、B.存儲數(shù)據(jù);所述的歷史數(shù)據(jù)的獲取包括A.獲取索引文件、B.獲取歷史數(shù)據(jù);所述的主控芯片內(nèi)部建立有寫FIFO和讀FIFO ;存儲模塊中的若干片F(xiàn)lash的其中一片為索引Flash,其余Flash為存儲Flash,所述的索引Flash用于存儲索引文件,所述的索引文件在索引Flash的存儲格式為每一頁存儲一個索引文件;所述的存儲Flash用于存儲數(shù)據(jù)文件;
所述的A.建立索引的步驟為
Al.查找本次索引文件存放地址
(1)系統(tǒng)上電;
(2)從索引Flash的第一塊的第一頁開始讀回至少兩個字節(jié)的索引文件,所述的索引文件包括頭標志、索引號、文件名標識、日期和時間及數(shù)據(jù)文件存放的首地址; (3)判斷前兩個字節(jié)是否是頭標志;如果是頭標志,則執(zhí)行步驟(4);如果不是頭標志,則執(zhí)行步驟(5);
(4)塊地址加一,并重新執(zhí)行步驟(3);
(5)返回到上個塊地址的第一頁開始讀回至少兩個字節(jié)的索引文件;
(6)判斷前兩個字節(jié)是否是頭標志;如果是頭標志,則執(zhí)行步驟(7);如果不是頭標志,則執(zhí)行步驟(8);
(7)頁地址加I,并重新執(zhí)行步驟(6);
(8)此時得到的塊地址記為addr_b和頁地址addr_p為本次索引文件存放地址;
A2.查找本次數(shù)據(jù)文件存放的首地址
(9)讀取塊地址為addr_b和頁地址addr_p_l的索引文件,即上次索引文件;
(10)根據(jù)上次索引文件查找上次數(shù)據(jù)文件存放的首地址;
(11)根據(jù)上次數(shù)據(jù)文件的首地址開始按塊讀回存儲Flash內(nèi)至少三個字節(jié)的數(shù)據(jù)文
件;
(12)判斷前三字節(jié)是否為“FFFFFF”;如果不是“FFFFFF”,則執(zhí)行步驟(13);如果是“FFFFFF”,則執(zhí)行步驟(14);
(13)塊地址加1,并重新執(zhí)行步驟(12);
(14)返回上個塊的第一頁,讀回存儲Flash內(nèi)的數(shù)據(jù)文件;
(15)判斷前三字節(jié)是否為“FFFFFF”;如果不是“FFFFFF”,則執(zhí)行步驟(16);如果是“FFFFFF”,則執(zhí)行步驟(17);
(16)頁地址加一,并重新執(zhí)行步驟(15);
(17)將此塊地址和頁地址作為本次數(shù)據(jù)文件存放的首地址;
A3.將索引文件寫入索引Flash
(18)向控制模塊的時鐘芯片讀取時間信息,按索引幀格式將本次索引文件寫入索引Flash ;
(19)建立索引結束;
所述的B.存儲數(shù)據(jù)的步驟為
(20)從建立索引中得到本次數(shù)據(jù)文件存放的首地址;
(21)將數(shù)據(jù)文件進行順序存儲于存儲Flash;
(22)數(shù)據(jù)文件的存儲結束;
所述的獲取索引文件的步驟為
a.故障診斷計算機下發(fā)讀索引文件指令,也可以主控芯片說收到讀索引文件的指令;b.給出所要讀取的索引文件的索引號或者索引文件的日期或時間段;
c.判斷寫FIFO是否滿2Kbyte;如果滿2Kbyte,則執(zhí)行步驟d ;如果未滿,則執(zhí)行步驟e ;
d.把寫FIFO中的一頁數(shù)據(jù)文件寫入存儲Flash,然后執(zhí)行步驟e;
e.讀取一頁索引文件;
f.判斷讀索引文件是否完成;如果未完成,則重新執(zhí)行步驟c;如果完成,則執(zhí)行步驟
g ;
g.獲取索引文件結束;
所述的獲取歷史數(shù)據(jù)的步驟為
h.故障診斷計算機下發(fā)讀單個或連續(xù)歷史數(shù)據(jù)文件的指令,也可以認為主控芯片收到讀單個或連續(xù)歷史數(shù)據(jù)文件的指令;
i.獲取該歷史數(shù)據(jù)文件所需要的索引文件;
j.獲取該歷史數(shù)據(jù)文件存放的首地址和末地址;所要獲取的歷史數(shù)據(jù)文件對應的索引文件有數(shù)據(jù)文件存放的首地址,末地址通過下一個索引文件中的數(shù)據(jù)文件存放的首地址減一得到;
k.判斷寫FIFO是否滿2Kbyte ;如果滿2Kbyte,則執(zhí)行步驟I ;如果未滿2Kbyte,則執(zhí)行步驟m;
I.把寫FIFO中的一頁數(shù)據(jù)文件寫入存儲Flash,然后執(zhí)行步驟m ; m.讀取一頁歷史數(shù)據(jù)文件;
n.判斷讀歷史數(shù)據(jù)文件是否完成;如果完成,則執(zhí)行步驟0 ;如果未完成,則重新執(zhí)行步驟k ;
o.讀歷史數(shù)據(jù)結束;
所述的獲取實時數(shù)據(jù)文件的步驟包括各種采集接口采集的數(shù)據(jù)實時回傳給故障診斷計算機。本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)作為故障診斷系統(tǒng)的一部分,主要用于實現(xiàn)各種采集接口參數(shù)(模擬量和數(shù)字量I/O信號)的采集以及長時間記錄的功能,并通過USB接口把數(shù)據(jù)實時回傳給故障診斷計算機(刪除了一部分內(nèi)容)。本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng),主要由控制模塊、存儲模塊、電源模塊、各種采集接口以及故障診斷計算機組成;所述的控制模塊包括主控芯片、時鐘芯片、內(nèi)部總線和各種采集接口,所述的控制模塊主要功能為外部傳感器采集來的數(shù)據(jù)文件通過各種采集接口(4個CAN通信接口、I個USB接口、I個以太網(wǎng)接口、2個422)傳輸?shù)街骺匦酒現(xiàn)PGA,另外還包括實時時鐘管理、內(nèi)部總線控制等功能;所述的內(nèi)部總線接口實現(xiàn)存儲模塊和主控芯片的通訊,將數(shù)據(jù)文件傳輸?shù)酱鎯δK進行存儲。存儲模塊由5個存儲卡組成,用來完成數(shù)據(jù)文件的存儲。每個存儲卡又由多片NAND Flash組成,并由控制模塊內(nèi)的FPGA進行邏輯控制,完成數(shù)據(jù)文件的存儲。如圖4所示的是單個存儲卡的原理結構示意圖,圖中選取Flash (0)為索引Flash,用來存儲索引文件;剩余的31片和另外四個卡上的128片F(xiàn)lash為存儲Flash,用來存儲數(shù)據(jù)文件的;如圖5所示的單片F(xiàn)lash的原理結構示意圖,所述的索引文件在索引Flash的存儲格式為第一頁存放產(chǎn)品的基本信息,從第二頁開始每一頁存儲一個索引文件,所述的 產(chǎn)品的基本信息是實時數(shù)據(jù)采集存儲系統(tǒng)內(nèi)各個硬件的出廠日期、生產(chǎn)單位、名稱等信息。所述的建立索引的步驟為首先在索引Flash中查找本次索引文件存放地址,采用“先按塊再按頁”的查找辦法, 即先查索引Flash每塊的第一頁的前兩個字節(jié)是否為頭標志,如果是則跳到下一塊繼續(xù)判斷,直至不是頭標志,再返回上一塊查找每一頁的前個字節(jié)是否為頭標志,直至該頁的前兩個字節(jié)不是頭標志,即此時得到的塊地址和頁地址為本次索引文件存放地址;此外,本發(fā)明所述的索引文件中包含本次數(shù)據(jù)文件存放的首地址,可通過上個索引文件可以獲取其對應數(shù)據(jù)文件存放的首地址,同樣采用“先按塊再按頁”的查找辦法來查找本次數(shù)據(jù)存放的首地址。所述的索引文件主要包括頭標志、索引號、文件名標識、日期和時間及數(shù)據(jù)文件存放的首地址。頭標志作為每個索弓I文件的開始標志,標志著索引文件開始存儲,共占2個字節(jié);索引號是索引文件的編號,通過索引號即可獲取索引文件,共占3個字節(jié);文件名標識是指索引文件對應的數(shù)據(jù)文件名的標識,占I個字節(jié);日期和時間用來記錄數(shù)據(jù)文件存儲的時間,占用7個字節(jié),獲取數(shù)據(jù)時可以通過給出具體日期或時間段來獲取索引文件或歷史數(shù)據(jù)文件;數(shù)據(jù)文件存放的首地址,是索引文件所對應的數(shù)據(jù)文件的首地址,占4個字節(jié)。建立索引完成之后,根據(jù)索引文件的幀格式就得到了本次數(shù)據(jù)文件存放的首地址,即可將獲得的數(shù)據(jù)文件進行順序存儲于存儲Flash。由于數(shù)據(jù)文件存儲的過程中也要能夠響應讀索引文件及讀歷史數(shù)據(jù)文件的指令,F(xiàn)PGA內(nèi)部建立有寫FIFO (寫數(shù)據(jù)緩存);同理所述,在讀取索引文件或歷史數(shù)據(jù)文件期間也要能夠保證實時數(shù)據(jù)文件的存儲,F(xiàn)PGA內(nèi)部建立有讀FIFO (讀數(shù)據(jù)緩存)。獲取索引文件的方式主要有兩種一是根據(jù)索引號來獲取索引文件;二是通過時間段或者日期來獲取索引文件。故障診斷計算機下發(fā)讀索引文件指令,給出所要讀取的索引文件的索引號或者是某個時間段或者是某一日期。因Flash每2Kbyte(也就是一頁)進行一次編程,所以采集來的數(shù)據(jù)文件每到2Kbyte往存儲卡的存儲Flash中寫入一次。采集到的數(shù)據(jù)文件首先存儲到FPGA的寫FIFO中,然后判斷寫FIFO中的數(shù)據(jù)文件是否滿2Kbyte,若未滿2Kbyte,讀FIFO讀完一頁索引文件,并判斷讀索引文件是否完成,如果未完成,繼續(xù)判斷寫FIFO中的數(shù)據(jù)文件是否滿2Kbyte ;若滿2Kbyte,先將2Kbyte的數(shù)據(jù)文件寫入存儲Flash,在寫數(shù)據(jù)文件期間不響應任何讀索引文件的指令,直至將2Kbyte數(shù)據(jù)文件全部寫入存儲Flash,然后讀FIFO再讀一頁索引文件,并判斷讀索引文件是否完成,如果未完成,繼續(xù)判斷寫FIFO中的數(shù)據(jù)文件是否滿2Kbyte,依次循環(huán),直到完成讀索引文件任務。假如建立了十萬個索引文件,要將全部索引文件讀至故障診斷計算機,需要花費的時間約為3s。讀歷史數(shù)據(jù)有兩種方式,一種是僅讀一個數(shù)據(jù)文件,另一種連續(xù)讀若干數(shù)據(jù)文件。歷史數(shù)據(jù)文件的獲取是根據(jù)上傳給故障診斷計算機的索引文件來進行選擇的,故障診斷計算機獲取索引文件列表后,只需選擇對應的索引文件,就可將相應的歷史數(shù)據(jù)文件上傳給故障診斷計算機。實際操作中,故障診斷計算機下發(fā)讀單個或者連續(xù)若干歷史數(shù)據(jù)文件的指令,然后獲得所需要的索引文件,這樣即可獲得歷史數(shù)據(jù)文件對應的首地址和末地址,接著故障診斷計算機向控制模塊發(fā)送的信息包括“數(shù)據(jù)文件存放的首地址+末地址”,數(shù)據(jù)文件的首、末地址均使用4個字節(jié),數(shù)據(jù)文件存放的首地址在對應的索引文件中,數(shù)據(jù)文件的末地址為下個相鄰數(shù)據(jù)文件的首地址減I (如果數(shù)據(jù)文件為存儲Flash的最后一個數(shù)據(jù)文件,不存在下個相鄰數(shù)據(jù)文件的首地址時,系統(tǒng)上電,實時采集存儲系統(tǒng)先將采集來的數(shù)據(jù)進行數(shù)據(jù)的存儲,才會進行歷史數(shù)據(jù)的獲取,所以最后一個數(shù)據(jù)文件就會成為中間數(shù)據(jù)文件)。采集到的數(shù)據(jù)文件首先存儲到FPGA的寫FIFO中,然后判斷寫FIFO中的數(shù)據(jù)文件是否滿2Kbyte,若未滿2Kbyte,讀FIFO讀完一頁數(shù)據(jù)文件,并判斷讀數(shù)據(jù)文件是否完成,如果未完成,繼續(xù)判斷寫FIFO中的數(shù)據(jù)文件是否滿2Kbyte ;若滿2Kbyte,先將2Kbyte的數(shù)據(jù)文件寫入存儲Flash,在寫數(shù)據(jù)文件期間不響應任何讀數(shù)據(jù)文件的指令,直至將2Kbyte數(shù)據(jù)文件全部寫入存儲Flash,然后讀FIFO再讀一頁數(shù)據(jù)文件,并判斷讀數(shù)據(jù)文件是否完成,如果未完成,繼續(xù)判斷寫FIFO中的數(shù)據(jù)文件是否滿2Kbyte,依次循環(huán),直到完成讀數(shù)據(jù)文件任務。讀取實時數(shù)據(jù)時,不占用內(nèi)部數(shù)據(jù)總線,因此不影響數(shù)據(jù)的存儲,采集的數(shù)據(jù)可實時回傳給計算機。
具體實施時,所述的實時采集存儲系統(tǒng)是以FPGA作為主控芯片。由于FPGA具有以下幾方面的優(yōu)點(I)采取有多少數(shù)據(jù)轉換芯片用多少控制單元模塊的策略,功能控制模塊與數(shù)據(jù)轉換芯片是一一對應的關系,在硬件上保證了數(shù)據(jù)采集的完全并行性;(2)XC2S100E芯片內(nèi)有RAM塊,可以設計為數(shù)據(jù)緩沖,方便解決數(shù)據(jù)流阻塞的問題;(3)FPGA芯片讀寫速度較高,在采集和存儲速度上都不會存在任何問題;(4)FPGA的設計采用在線編程的方式進行,修改和調(diào)試都相當快捷、方便;(5)FPGA的外圍電路除了一塊配置芯片外,不再需要其他任何外圍器件,集成度高,可靠性強。所述的實時采集存儲系統(tǒng)是以NAND Flash作為存儲芯片。由于NAND Flash存儲器具有容量較大,改寫速度快、體積小、掉電數(shù)據(jù)不丟失以及可多次擦寫等優(yōu)點,適用于大量數(shù)據(jù)的存儲,因而在業(yè)界得到了越來越廣泛的應用。
權利要求
1.一種實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,所述的實時數(shù)據(jù)采集存儲系統(tǒng)包括控制模塊、存儲模塊、電源模塊、各種采集接口以及故障診斷計算機;所述的控制模塊包括主控芯片、時鐘芯片、內(nèi)部總線、各種采集接口 ;所述的存儲模塊包括若干片F(xiàn)lash,所述的一片F(xiàn)lash由若干塊組成,所述的塊由若干頁組成,一頁可以存儲2Kbyte數(shù)據(jù);其特征在于,其文件管理方法的內(nèi)容包括一、數(shù)據(jù)的存儲,二、歷史數(shù)據(jù)的獲取,三、實時數(shù)據(jù)的獲??;所述的數(shù)據(jù)的存儲包括A.建立索引、B.存儲數(shù)據(jù);所述的歷史數(shù)據(jù)的獲取包括A.獲取索引文件、B.獲取歷史數(shù)據(jù);所述的主控芯片內(nèi)部建立有寫FIFO和讀FIFO ;存儲模塊中的若干片F(xiàn)lash的其中一片為索引Flash,其余Flash為存儲Flash,所述的索引Flash用于存儲索引文件,所述的索引文件在索引Flash的存儲格式為每一頁存儲一個索引文件;所述的存儲Flash用于存儲數(shù)據(jù)文件; 所述的A.建立索引的步驟為 Al.查找本次索引文件存放地址 (1)系統(tǒng)上電; (2)從索引Flash的第一塊的第一頁開始讀回至少兩個字節(jié)的索引文件,所述的索引文件包括頭標志、索引號、文件名標識、日期和時間及數(shù)據(jù)文件存放的首地址; (3)判斷前兩個字節(jié)是否是頭標志;如果是頭標志,則執(zhí)行步驟(4);如果不是頭標志,則執(zhí)行步驟(5); (4)塊地址加一,并重新執(zhí)行步驟(3); (5)返回到上個塊地址的第一頁開始讀回至少兩個字節(jié)的索引文件; (6)判斷前兩個字節(jié)是否是頭標志;如果是頭標志,則執(zhí)行步驟(7);如果不是頭標志,則執(zhí)行步驟(8); (7)頁地址加I,并重新執(zhí)行步驟(6); (8)此時得到的塊地址記為addr_b和頁地址addr_p為本次索引文件存放地址; A2.查找本次數(shù)據(jù)文件存放的首地址 (9)讀取塊地址為addr_b和頁地址addr_p_l的索引文件,即上次索引文件; (10)根據(jù)上次索引文件查找上次數(shù)據(jù)文件存放的首地址; (11)根據(jù)上次數(shù)據(jù)文件的首地址開始按塊讀回存儲Flash內(nèi)至少三個字節(jié)的數(shù)據(jù)文件; (12)判斷前三字節(jié)是否為“FFFFFF”;如果不是“FFFFFF”,則執(zhí)行步驟(13);如果是“FFFFFF”,則執(zhí)行步驟(14); (13)塊地址加1,并重新執(zhí)行步驟(12); (14)返回上個塊的第一頁,讀回存儲Flash內(nèi)的數(shù)據(jù)文件; (15)判斷前三字節(jié)是否為“FFFFFF”;如果不是“FFFFFF”,則執(zhí)行步驟(16);如果是“FFFFFF”,則執(zhí)行步驟(17); (16)頁地址加一,并重新執(zhí)行步驟(15); (17)將此塊地址和頁地址作為本次數(shù)據(jù)文件存放的首地址; A3.將索引文件寫入索引Flash (18)向控制模塊的時鐘芯片讀取時間信息,按索引幀格式將本次索引文件寫入索引Flash ;(19)建立索引結束; 所述的B.存儲數(shù)據(jù)的步驟為 (20)從建立索引中得到本次數(shù)據(jù)文件存放的首地址; (21)將數(shù)據(jù)文件進行順序存儲于存儲Flash; (22)數(shù)據(jù)文件的存儲結束; 所述的獲取索引文件的步驟為a.故障診斷計算機下發(fā)讀索引文件指令,也可以說主控芯片收到讀索引文件的指令; b.給出所要讀取的索引文件的索引號或者索引文件的日期或時間段; c.判斷寫FIFO是否滿2Kbyte;如果滿2Kbyte,則執(zhí)行步驟d ;如果未滿,則執(zhí)行步驟e ; d.把寫FIFO中的一頁數(shù)據(jù)文件寫入存儲Flash,然后執(zhí)行步驟e; e.讀取一頁索引文件; f.判斷讀索引文件是否完成;如果未完成,則重新執(zhí)行步驟c;如果完成,則執(zhí)行步驟g ; g.獲取索引文件結束; 所述的獲取歷史數(shù)據(jù)的步驟為 h.故障診斷計算機下發(fā)讀單個或連續(xù)歷史數(shù)據(jù)文件的指令,也可以認為主控芯片收到讀單個或連續(xù)歷史數(shù)據(jù)文件的指令; i.獲取該歷史數(shù)據(jù)文件所需要的索引文件; j.獲取該歷史數(shù)據(jù)文件存放的首地址和末地址;所要獲取的歷史數(shù)據(jù)文件對應的索引文件有數(shù)據(jù)文件存放的首地址,末地址通過下一個索引文件中的數(shù)據(jù)文件存放的首地址減一得到; k.判斷寫FIFO是否滿2Kbyte ;如果滿2Kbyte,則執(zhí)行步驟I ;如果未滿2Kbyte,則執(zhí)行步驟m; .1.把寫FIFO中的一頁數(shù)據(jù)文件寫入存儲Flash,然后執(zhí)行步驟m; m.讀取一頁歷史數(shù)據(jù)文件; n.判斷讀歷史數(shù)據(jù)文件是否完成;如果完成,則執(zhí)行步驟O ;如果未完成,則重新執(zhí)行步驟k ; o.讀歷史數(shù)據(jù)結束; 所述的獲取實時數(shù)據(jù)文件的步驟包括各種采集接口采集的數(shù)據(jù)實時回傳給故障診斷計算機。 . 2.根據(jù)權利要求I所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,其特征在于,所述的實時采集存儲系統(tǒng)的主控芯片是FPGA。 .3.根據(jù)權利要求I或2所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,其特征在于,所述的實時采集存儲系統(tǒng)的存儲模塊的Flash是NAND Flash。 .4.根據(jù)權利要求I或2所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,其特征在于,所述的索引文件在索引Flash的存儲格式為第一頁存放產(chǎn)品的基本信息,從第二頁開始每一頁存儲一個索引文件。 . 5.根據(jù)權利要求3所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,其特征在于,所述的索引文件在索引Flash的存儲格式為第一頁存放產(chǎn)品的基本信息,從第二頁開始每一頁存儲一個索引文 件。
全文摘要
本發(fā)明涉及實時數(shù)據(jù)采集存儲領域,具體是一種實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法,其解決了現(xiàn)有不存在操作系統(tǒng)的環(huán)境下的文件管理存在的問題,數(shù)據(jù)的存儲、歷史數(shù)據(jù)的獲取、實時數(shù)據(jù)的獲取來實現(xiàn)在不存在操作系統(tǒng)的環(huán)境下的文件的有效管理,主要是采集和長時間記錄環(huán)境參數(shù),為故障診斷系統(tǒng)提供數(shù)據(jù),與故障診斷計算機共同完成參數(shù)的實時檢測、預警及故障診斷等功能。本發(fā)明所述的實時數(shù)據(jù)采集存儲系統(tǒng)的文件管理方法主要用于產(chǎn)品研制、使用過程中相關參數(shù)的實時監(jiān)控、記錄,便于查看各個參數(shù)的變化規(guī)律,為產(chǎn)品的設計、改進提供有力的數(shù)據(jù)支撐。
文檔編號G06F17/30GK102637197SQ20121004751
公開日2012年8月15日 申請日期2012年2月28日 優(yōu)先權日2012年2月28日
發(fā)明者任勇峰, 劉東海, 單彥虎, 姚宗, 孟青, 文豐, 李圣昆, 焦新泉, 甄國涌, 趙冬青, 鄭永秋 申請人:中北大學, 太原市華納方盛科技有限公司