0 引言
在現(xiàn)場測控系統(tǒng)中,RTU(遠程測控終端)存儲容量、存儲數(shù)據(jù)的轉(zhuǎn)移問題始終是RTU的重要環(huán)節(jié)。RTU的存儲容量一般為幾十K~幾百K字節(jié),數(shù)據(jù)轉(zhuǎn)移通常采用不掉電靜態(tài)RAM、EEPROM存儲模塊,或采用便攜式計算機通過串行口讀取RTU數(shù)據(jù)。無論采用哪種方法都存在一定的局限性。
首先存儲容量小,對于大量的數(shù)據(jù)存儲顯得比較緊張。對于數(shù)據(jù)轉(zhuǎn)移,如果采用存儲模塊,雖然攜帶方便但不是通用設備,其成本較高,同時不能與計算機兼容,要將存儲模塊的數(shù)據(jù)錄入計算機還需要專用的讀取設備;如果采用便攜式計算機讀取RTU數(shù)據(jù),雖然讀取方便,但在野外便攜式計算機也是一個不小的包袱。
隨著電子技術(shù)的發(fā)展,移動存儲介質(zhì)普遍采用SD卡。SD卡的存儲容量以GB為單位,它們相對于RTU原先的存儲模塊來說都是海量存儲,所有數(shù)據(jù)存也無需進行壓縮處理,可以在文件級與計算機兼容。即便是對于那些小數(shù)據(jù)量存儲的RTU,雖然只依靠單片機內(nèi)部的 FLASH就能滿足存儲要求,然而采用串行接口就能方便地用一張SD卡分別讀出多個RTU的數(shù)據(jù)。
如今,SD卡已經(jīng)越來越普及和成熟,低成本、高穩(wěn)定性、較高的數(shù)據(jù)傳輸速率和即插即用的方便性,使其備受硬件廠商的青睞。隨著數(shù)據(jù)采集和嵌入式用戶對移動存儲的需求越來越大,具有串行接口的存儲設備以其優(yōu)異的性價比和靈活性常用來進行數(shù)據(jù)的存儲和交換,所以在嵌入式系統(tǒng)中實現(xiàn)對SD卡的直接讀寫是非常有價值的。
1 SD卡數(shù)據(jù)存儲設備開發(fā)的一般過程
1.1 主控芯片的選擇
為實現(xiàn)系統(tǒng)高可靠性、高效率的工作,必須采用基于ARM架構(gòu)的高性能32位嵌入式微處理器作為系統(tǒng)的管理核心,通過與高效的嵌入式操作系統(tǒng)相結(jié)合,采用獨特的動態(tài)內(nèi)存分配算法,以此管理文件系統(tǒng)對內(nèi)存的消耗和釋放,提高數(shù)據(jù)的傳輸效率,避免數(shù)據(jù)丟失,實現(xiàn)實時數(shù)據(jù)的可靠存儲。
1.3 軟件設計
a 首先初始化SD/TF卡、檢查狀態(tài)、扇區(qū)讀寫等基本操作。文件系統(tǒng)層按照PC文件系統(tǒng)要求設計,如FAT表、文件目錄表等兼容PC機的文件管理系統(tǒng),從而能夠大大簡化后端數(shù)據(jù)的分析和處理。文件操作層包括文件的建立、讀寫、刪除等。
b 當檢測到有串口數(shù)據(jù),系統(tǒng)自動在SD/TF卡上創(chuàng)建一個事先定義好的文件夾,目錄下生成一個存儲數(shù)據(jù)文件,進行實時數(shù)據(jù)存儲。文件夾名稱可通過配置軟件自定義命名,例如2011年的數(shù)據(jù),文件夾名稱可以定義為20111001;數(shù)據(jù)存儲文件為.TXT文件,系統(tǒng)自動創(chuàng)建,自動編號,不重復覆蓋,便于文件管理。
c 由于數(shù)據(jù)采集系統(tǒng)的限制和具體環(huán)境的要求,便攜式RS232/485數(shù)據(jù)存儲必需適合長期無人值守、速度快、通用性好。為了能夠長期進行數(shù)據(jù)存儲除了采用更大容量的SD/TF卡外,如果幾G甚至幾十G的數(shù)據(jù)同時存儲在同一個文件中,這樣大量的數(shù)據(jù)后端分析和處理必定會給我們造成巨大的麻煩,因此要求便攜式數(shù)據(jù)存儲的FAT32文件系統(tǒng)的處理更加完善、更加智能化。這就需要探索一種更好的文件管理方式,經(jīng)過多次的實驗與嘗試,采用定時創(chuàng)建數(shù)據(jù)存儲文件進行存儲,有利于對數(shù)據(jù)進行更有效的管理,更好的分析處理。例如:假定用戶通過配置軟件設置間隔24個小時即一天(根據(jù)用戶設備具體的存儲數(shù)據(jù)量大小情況決定時間)創(chuàng)建一個數(shù)據(jù)儲存文件,那么N天后,文件夾20111001下將自動創(chuàng)建有N個TXT文件分別為0001.TXT、0002.TXT……N.TXT,各個時段的數(shù)據(jù)將完整的保存在相對應的文件中,不丟失任何字節(jié)。
d 在一些特定應用場合,并不需要對數(shù)據(jù)進行實時處理和顯示,只是記錄下原始數(shù)據(jù),將其作為一個“黑匣子”,為后端處理做準備。這就需要SD/TF卡可以循環(huán)使用,當數(shù)據(jù)量達到已設定的存儲卡容量后,自動覆蓋原有的存儲文件。
f 以往的大容量數(shù)據(jù)儲存系統(tǒng)只具有被動的接收數(shù)據(jù)進行保存功能,然而隨著技術(shù)的不斷更新,已經(jīng)遠遠不能滿足現(xiàn)有數(shù)據(jù)采集設備的需求;更多的用戶設備,需要由數(shù)據(jù)儲存系統(tǒng)處于主機狀態(tài),主動發(fā)送握手信號,用戶設備接收到信號后被動反饋信息,然后由數(shù)據(jù)儲存系統(tǒng)存儲數(shù)據(jù)。串行通信接口由用戶來控制,用戶可以設置10多條不同的“輪詢”指令,和間隔時間。系統(tǒng)在主程序中初始化,采用串行口工作方式由系統(tǒng)主機向數(shù)據(jù)設備進行呼叫,定期讀取數(shù)據(jù)或者寫入數(shù)據(jù),
2 應用實例
下面從硬軟件兩方面具體介紹本案例,重點分析了初始化問題。本例研究開發(fā)了一種在ARM上研究實現(xiàn)FAT32(兼容FAT16)的文件系統(tǒng),從而使得串口設備可以自由接入,現(xiàn)場采集的數(shù)據(jù)可以以文件的形式存儲記錄。這樣,就大大拓寬了傳統(tǒng)的數(shù)據(jù)測控終端在長時間大容量的數(shù)據(jù)存儲技術(shù)上的限制。
3.初始化分析
隨著產(chǎn)品不斷更新,初始化信息不能完全獲取使得一些不同的設備只能針對不同SD卡。本實驗證明,初始化過程完成后再解決了時序問題,就可以解決大部分SD卡的讀寫。
正如前面所述,目前社會上很多人只能完成針對某些特定SD卡的讀寫,本實驗中的重點就是先完成SD卡的初始化,讓ARM處理器先能認識大多數(shù)SD卡,然后對它們進行批處理方式的讀寫,再加載文件系統(tǒng),最后完成對SD卡在文件級別上的讀寫。分三個階段:控制傳輸?shù)慕㈦A段、數(shù)據(jù)階段、狀態(tài)階段。
3.結(jié)束語
文中論述的基于ARM與SD卡的大容量數(shù)據(jù)存儲方案現(xiàn)已完成了模塊調(diào)試。實際測試中,將終端的模擬采集數(shù)據(jù)送入SD卡,以ascii 文件方式存儲,成功存入自定的文件中,可在PC 機中打開, 也可以直接用上層測控軟件進行進一步的處理。
本文的研究是在水利自動化的背景下進行的,但在結(jié)構(gòu)上這種終端明顯具有廣泛的適應性。除了應用于水利自動化信息測報外,還可以用于電力系統(tǒng)的現(xiàn)場測報和數(shù)據(jù)記錄、交通智能化管理以及環(huán)保、氣象、地質(zhì)、民用領域如數(shù)碼相機等。因此,文中研究的設計模式和實現(xiàn)技術(shù)的應用前景將是非常廣闊的。
在數(shù)據(jù)采集和測量儀器尤其是便攜式設備中,數(shù)據(jù)存儲和傳輸是不可避免的問題,大量的重要數(shù)據(jù)是否能可靠的保存至關重要,百度“廣州市樂誠電子科技有限公司”或者“LCA數(shù)據(jù)記錄儀”了解更多資料。