本發(fā)明涉及一種采集數(shù)據(jù)存儲方法,尤其涉及一種具有斷電保護功能的采集數(shù)據(jù)存儲方法,屬于數(shù)據(jù)采集與存儲技術領域。
背景技術:
如圖1所示,在工業(yè)測試領域,為了實現(xiàn)數(shù)據(jù)采集功能,一般將數(shù)據(jù)采集設備通過傳輸線與工業(yè)控制計算機相連,同時在工業(yè)控制計算機上安裝控制程序,實現(xiàn)相應的數(shù)據(jù)采集與存儲。
進行數(shù)據(jù)采集的過程,實際上就是將采集設備所采集的數(shù)據(jù)首先放置到工業(yè)控制計算機的內存中,然后通過控制程序讀取計算機緩存的數(shù)據(jù),再對所述數(shù)據(jù)進行分析、存儲等。
目前,控制程序中一般采用的存儲方法是:直接將計算機緩存中的數(shù)據(jù)拿來書寫TDMS文件,以實現(xiàn)對采集數(shù)據(jù)的保存。其中,TDMS(Technical Data Management Streaming),即技術數(shù)據(jù)管理流,是專為存儲測量數(shù)據(jù)設計的一種文件格式。由于內存直接訪問技術的引入,TDMS存儲方式具有高速的數(shù)據(jù)吞吐量,因而被大量采用。
TDMS文件正常的訪問流程如圖2所示,在記錄數(shù)據(jù)之前,需要新建一個文件并打開,然后向該文件中寫入數(shù)據(jù)。終止文件記錄前,需要對該文件進行關閉,否則會造成文件破損,使得文件不能被正常打開。
上述TDMS存儲方法具有如下缺陷:在數(shù)據(jù)采集過程中,如果突然斷電,也就是記錄文件的過程異常中斷,文件沒有正常關閉,就會導致數(shù)據(jù)文件破損、無法打開,使采集者丟失斷電前所有采集的數(shù)據(jù)。
技術實現(xiàn)要素:
本發(fā)明要解決的技術問題是如何避免突然斷電所造成的斷電前所有采集數(shù)據(jù)全部丟失。
為了解決上述技術問題,本發(fā)明的技術方案是提供一種采集數(shù)據(jù)存儲方法,其特征在于,該方法由以下3個步驟組成:
步驟1:在計算機的內存中,初始化至少兩個隊列和至少兩份TDMS文件,各隊列和TDMS文件一一對應;
步驟2:將讀取到內存中的原始采集數(shù)據(jù)進行復制,分別存儲到各隊列中,進行緩存;
步驟3:使用輪詢的機制,輪流打開各TDMS文件,將對應隊列中的數(shù)據(jù)寫進該TDMS文件中,并關閉該TDMS文件。
優(yōu)選地,所述步驟1中,隊列數(shù)量和記錄TDMS文件的總份數(shù)相同。
優(yōu)選地,所述隊列數(shù)量和記錄TDMS文件的總份數(shù)均為二。
更優(yōu)選地,所述隊列和TDMS文件分別命名為:隊列1、隊列2和TDMS文件1、TDMS文件2;所述步驟3的具體過程為:記錄TDMS文件時間間隔設定后,第一次滿足該時間間隔后,開始將隊列1中的數(shù)據(jù)寫入到TDMS文件1中,書寫結束后,將TDMS文件1關閉;再次達到上述時間間隔后,將隊列2中的數(shù)據(jù)寫入到TDMS文件2中,書寫結束后,將TDMS文件2關閉;再次達到上述時間間隔后,將隊列1中的數(shù)據(jù)寫入到TDMS文件1中,書寫結束后,將TDMS文件1關閉;……依此輪詢的方式,進行書寫文件。
進一步地,所述步驟3中,啟動一個時鐘控制器,進行輪詢定時控制。
更進一步地,數(shù)據(jù)采集任務停止后,將時鐘控制器關閉,最后一次寫入數(shù)據(jù)并正常關閉的TDMS文件即存儲了所采集的數(shù)據(jù)。
優(yōu)選地,在進行采集數(shù)據(jù)記錄的過程中,無論哪一個時刻遭遇斷電,都可以保證至少有一份TDMS文件是按照正常的操作流進行工作的,這份TDMS文件中的數(shù)據(jù)不會因為斷電而丟失。
本發(fā)明提供的方法克服了現(xiàn)有技術的不足,使用輪詢的機制寫文件,可以確保某一具體的時刻,只有一個TDMS文件處于操作中。即便該TDMS文件正處于記錄數(shù)據(jù)的狀態(tài),工業(yè)控制計算機突然斷電,控制程序無法繼續(xù)運行,使得該TDMS文件無法關閉,造成該TDMS文件無效。但在斷電時刻未工作的那份TDMS文件是正常的,里面記錄了采集過程中的數(shù)據(jù)。這樣就避免了采集數(shù)據(jù)完全丟失的問題,提高了采集數(shù)據(jù)存儲的可靠性和穩(wěn)定性。
附圖說明
圖1為數(shù)據(jù)采集系統(tǒng)結構示意圖;
圖2為現(xiàn)有的TDMS存儲方法原理圖;
圖3為本實施例提供的采集數(shù)據(jù)存儲方法原理圖。
具體實施方式
下面結合具體實施例,進一步闡述本發(fā)明。應理解,這些實施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍。此外應理解,在閱讀了本發(fā)明講授的內容之后,本領域技術人員可以對本發(fā)明作各種改動或修改,這些等價形式同樣落于本申請所附權利要求書所限定的范圍。
圖3為本實施例提供的采集數(shù)據(jù)存儲方法原理圖,所述的采集數(shù)據(jù)存儲方法的具體步驟如下:
步驟1:在工業(yè)控制計算機的內存中,初始化兩個隊列,命名為隊列1和隊列2;初始化兩個TDMS文件,命名為TDMS文件1和TDMS文件2;TDMS文件1與隊列1相對應,TDMS文件2與隊列2相對應。
步驟2:將讀取到內存中的原始采集數(shù)據(jù)進行復制,分別存儲到隊列1和隊列2中,進行緩存。
步驟3:啟動一個時鐘控制器,每隔一段時間后,輪流打開TDMS文件1、TDMS文件2,然后將與之對應隊列中的數(shù)據(jù)寫進文件并關閉文件。例如,采集一分鐘以后,開始將隊列1中的數(shù)據(jù)寫入到TDMS文件1中,書寫結束后將TDMS文件1關閉;采集兩分鐘以后,將隊列2中的數(shù)據(jù)寫入到TDMS文件2中,書寫結束后將TDMS文件2關閉……依此輪詢的方式,進行書寫文件。
其中,時鐘控制器的間隔時間可根據(jù)需要自行設定,不限于本實施例所舉例的一分鐘。
控制程序停止前,可將時鐘控制器關閉,按先后順序將隊列中的數(shù)據(jù)書寫到對應的文件中,并正常關閉文件。
按照上述的方法進行采集數(shù)據(jù)記錄的過程中,無論哪一個時刻工業(yè)控制計算機遭遇了斷電,都可以保證至少有一份TDMS文件是按照正常的操作流進行工作的,這份TDMS文件中的數(shù)據(jù)不會因為斷電而丟失。這樣就解決了斷電造成的采集數(shù)據(jù)全部丟失的問題。