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