摘 要: 介紹了智能儀器" title="智能儀器">智能儀器中海量數據的存儲方法,并設計了一種海量數據存儲模塊" title="存儲模塊">存儲模塊。該模塊采用Compact Flash電子盤實現了大量數據的存儲,并通過串口" title="串口">串口通信與各種現場智能設備和工控系統(tǒng)進行數據交換。最后將其應用于智能測產系統(tǒng)中,并進行了現場實驗。實驗結果表明,該模塊具有很高的可靠性,滿足了使用要求。
關鍵詞: 海量數據存儲 電子盤 精準農業(yè) 智能測產
在一些智能儀器中,經常需要進行大量的數據采集和存儲操作。例如,在精準農業(yè)作業(yè)中需要采集田地中每一個采樣點的經度、緯度、產量和濕度等信息。采樣點有成千上萬個,產生了大量的數據,保證這些現場數據的可靠存儲是測控系統(tǒng)設計中的關鍵問題之一。對基于PC機的智能儀器,這些數據可直接以DOS或Windows文件的形式存入硬盤;而對于基于單片機的現場設備,則由于系統(tǒng)處理速度慢、沒有操作系統(tǒng)支持和存儲容量小等原因,難以滿足上述要求。通常單片機所支持的存儲單元為RAM、EEPROM或小容量的Flash存儲芯片,它們的一個共同特點是受尋址空間的限制,不能滿足海量存儲的要求。
為此本文設計了一種海量存儲模塊,它的存儲單元采用大容量電子盤(64MB或更高),也稱CF卡(Compact Flash Card)。CF卡體積小、重量輕、功耗低、容量大、讀寫速度快、機械性能優(yōu)、硬件兼容性好,非常適合解決野外現場數據采集系統(tǒng)中數據傳輸及大容量存儲的問題。
該存儲模塊由微處理芯片" title="處理芯片">處理芯片、擴展I/O" title="I/O">I/O芯片、電子盤、IDE接口以及串行接口電路等組成。它通過串口與外部設備進行命令和數據的傳輸,通過IDE接口實現對電子盤的操作,由微處理芯片來協(xié)調和控制各部分的工作,這樣便構成了基于單片機系統(tǒng)的海量存儲系統(tǒng)。
1 存儲模塊的組成結構
CF卡存儲模塊由串口、微處理芯片、I/O擴展芯片、IDE接口、電子盤組成。圖1是其組成結構圖。
1.1 CF卡的結構和讀寫控制
如圖1所示,微控制器通過82C55A組成的I/O擴展電路和IDE接口來控制CF卡。由于CF卡與IDE(Integrated Drive Electronics)設備接口具有兼容性,這里IDE接口實際上實現了CF讀卡器的功能,完成了50引腳CF卡接口到40引腳標準IDE接口的轉換。所以借助于該IDE接口電路,微控制器讀寫CF卡采用的軟硬件結構與控制IDE硬盤完全相同。下面對IDE接口作一簡單介紹。
IDE接口引腳圖如圖2所示。其中,D(15...0)是數據線,GND為地線,IOW、IOR分別為寫、讀信號,RESET為復位信號,/CS0、/CS1、HA(2...0)為地址信號,I/O CHRDY為驅動器就緒信號。
IDE接口基于寄存器結構,所有的輸入輸出均通過對相應的寄存器進行操作來實現。表1為在/CS0、/CS1、HA2、HA1、HA0信號和讀、寫信號控制下所選擇的寄存器名稱及其地址。
IDE接口的操作時序為:
(1)等待驅動器將狀態(tài)寄存器中的Bit7(BUSY位)清零。
(2)向相關的寄存器寫操作硬盤所需的參數,即寫扇區(qū)數寄存器、扇區(qū)號寄存器、柱面號寄存器、磁頭寄存器等。
(3)向命令寄存器寫命令代碼。
(4)使中斷使能位有效。
(5)等待驅動器置DRY#,發(fā)中斷請求。
IDE接口有兩種讀寫方式:LBA(邏輯塊地址)和CHS(柱面/磁頭/扇區(qū))方式。本模塊使用CHS方式。
1.2 系統(tǒng)硬件組成
微控制芯片采用51系列的SST89E564RD芯片,該芯片中含有1K的RAM(On-Chip RAM)和64K+8K字節(jié)的內置電可擦除存儲器(Flash ROM),支持在線編程(ISP),系統(tǒng)開發(fā)非常簡便。對于電子盤的讀寫只能以扇區(qū)為單位,一個扇區(qū)有512字節(jié),因此一次讀寫最少要有512字節(jié)。這就要求芯片中要有一個大于512字節(jié)的數據存儲區(qū),所以采用含有1K內存的SST89E564RD芯片是比較合適的,可以節(jié)省一個外接的數據存儲器。
串口的作用是實現與外部設備之間的命令和數據傳輸。SST89E564RD共有兩個串口,一個用來實現與單片機系統(tǒng)之間的通信,另一個用來實現與PC機之間的通信。與PC機相連的串口采用一個MAX232芯片來實現電平轉換。這樣,該模塊可以在現場接收來自于單片機采集系統(tǒng)的數據并實時存儲,而存儲的數據也能被PC機讀取,并進行事后數據分析。
標準的IDE接口有40個引腳,其中控制和數據引腳共有24個,這對于51系列芯片來說是無法控制的,所以需要一個I/O擴展芯片82C55A來將I/O口擴展到24個,以實現標準IDE接口和微控制器的連接。圖3所示為82C55A的擴展I/O電路,圖4為CF卡的IDE接口電路。
2 CF卡存儲模塊的程序結構
CF卡存儲模塊的程序采用C51語言編寫,主要包括主程序和初始化、寫扇區(qū)、讀扇區(qū)和串口輸入輸出子程序等。其程序流程圖如圖5所示。串口輸入采用硬件中斷方式。程序能夠接收來自于兩個串口的命令并執(zhí)行相應的數據讀寫操作。
主程序的任務就是等待從串口中輸入的命令。當串口中有字符輸入時,首先判斷輸入的命令是否為真命令,當為真命令后,就調用相應的命令函數。
在初始化子程序中完成初始化串口和電子盤,設置串口的工作方式和合適的波特率,并且使電子盤處于工作狀態(tài)。
當接收到來自于串口輸入的寫扇區(qū)命令后,系統(tǒng)將在規(guī)定時間內等待扇區(qū)號的輸入和數據的輸入。如果超出規(guī)定時間,則系統(tǒng)會回到主程序的等待狀態(tài),這樣防止系統(tǒng)進入另一個死循環(huán)。然后系統(tǒng)就會驅動IDE接口,把數據寫入指定的扇區(qū)中。
對于讀扇區(qū)命令,同樣它也會在規(guī)定的時間內等待扇區(qū)號的輸入,然后從指定的扇區(qū)中讀出數據,并從串口將這些數據送出。
3 存儲模塊的應用
在精準農業(yè)的谷物產量在線測量過程中,需要實時采集收割機作業(yè)點的GPS位置信息、收割機行走速度、谷物的瞬時產量和濕度等信息,經過數據處理得到田間每一位置的作物產量信息,并及時存儲起來。通過農業(yè)專家決策系統(tǒng)分析現場采集的田間產量信息,掌握土地的生產潛力差異,從而為下一年農業(yè)耕作提供指導,以實現“按需投入,提高資源利用率”。
為了實現現場大量數據的存儲,將上述存儲模塊用于該在線智能測產系統(tǒng),并通過串口實現存儲模塊與測產主控制模塊之間的數據通信。測產主控制模塊由嵌入式微控制器、GPS接收器、割臺傳感器、速度傳感器、產量傳感器、濕度傳感器等組成,安裝在收割機上。在小麥、水稻等的收割過程中,主控制模塊將現場采集的傳感信號經過處理之后傳送給存儲模塊保存。收割結束后,將存儲模塊上的產量信息讀入到PC機。PC機與存儲模塊的數據通信程序采用VB6.0編寫,它通過串口讀取數據,并將其存儲于Access數據庫中。
自2002年5月以來,多次將該在線測產系統(tǒng)用于小麥和水稻收割過程的在線測產實驗,該系統(tǒng)一直運行穩(wěn)定,實現了數據的可靠存儲和讀取。實驗中采集了大量現場數據,為進一步進行精準農業(yè)的研究奠定了堅實基礎。
本文討論了基于單片機的智能儀器海量數據存儲方法,并設計了一種通用模塊。為了驗證其性能,還將該模塊應用于精準農業(yè)的智能測產系統(tǒng)中。實踐表明,此模塊不僅成本低,而且運行可靠,為嵌入式測控系統(tǒng)的數據和工作參數的存儲提供了很好的解決方案。
參考文獻
1 陳嘉慶.多國單片計算機實用技術.北京:電子工業(yè)出版社,2002
2 張培仁. 基于C語言編程MCS-51單片機原理與應用.北京:清華大學出版社,2003
3 王義方.微型計算機原理及應用.北京:機械工業(yè)出版社,2002
4 金炯泰.KEIL 8051 C編譯器.北京:北京航空航天大學出版社,2003