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