鄭玉章,徐愛鈞
(長江大學(xué)電子信息學(xué)院,荊州434023)
一種大容量移動(dòng)存儲(chǔ)的網(wǎng)絡(luò)訪問方案設(shè)計(jì)
鄭玉章,徐愛鈞
(長江大學(xué)電子信息學(xué)院,荊州434023)
設(shè)計(jì)了一種大容量數(shù)據(jù)的以太網(wǎng)訪問方案。該方案利用MCU將外部各路傳感器采集到的數(shù)據(jù)信息通過USB接口芯片CH376存放在大容量U盤中,同時(shí)利用以太網(wǎng)控制芯片ENC28J60將系統(tǒng)接入互聯(lián)網(wǎng),通過PC機(jī)或其他具有上網(wǎng)功能的移動(dòng)終端遠(yuǎn)程訪問U盤中的數(shù)據(jù)。測試結(jié)果表明,該方案能夠成功實(shí)現(xiàn)遠(yuǎn)程測井?dāng)?shù)據(jù)采集、存儲(chǔ),移動(dòng)性好,具有一定的實(shí)用價(jià)值。
MCU;USB;ENC28J60;移動(dòng)存儲(chǔ)
在工業(yè)測井系統(tǒng)中,終端的數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)轉(zhuǎn)移一直是工作的重要環(huán)節(jié)[1]。傳統(tǒng)工業(yè)測井系統(tǒng)的數(shù)據(jù)存儲(chǔ)采用不掉電靜態(tài)RAM、EEPROM存儲(chǔ)模塊,數(shù)據(jù)轉(zhuǎn)移通常是計(jì)算機(jī)通過RS232串行口讀取。
隨著USB技術(shù)的發(fā)展,計(jì)算機(jī)的移動(dòng)存儲(chǔ)介質(zhì)普遍采用U盤或移動(dòng)硬盤。U盤相對(duì)于工業(yè)測井系統(tǒng)終端原來的存儲(chǔ)模塊來說是海量存儲(chǔ),所有存儲(chǔ)數(shù)據(jù)無需進(jìn)行壓縮處理,可以在文件級(jí)與計(jì)算機(jī)兼容。與此同時(shí),嵌入式Internet技術(shù)的發(fā)展又使得互聯(lián)網(wǎng)技術(shù)能夠輕松地嵌入到工業(yè)測井系統(tǒng)中,通過以太網(wǎng)控制芯片將測井系統(tǒng)終端接入互聯(lián)網(wǎng)后,編制測井系統(tǒng)終端控制器和網(wǎng)絡(luò)服務(wù)器之間的通信協(xié)議,便可以輕松實(shí)現(xiàn)通過數(shù)據(jù)中心網(wǎng)站來控制測井終端的數(shù)據(jù)采集,而進(jìn)行數(shù)據(jù)訪問,也無需反復(fù)插拔USB接口存儲(chǔ)器,僅通過已接入互聯(lián)網(wǎng)的PC機(jī)或其他具有上網(wǎng)功能的移動(dòng)終端即可實(shí)現(xiàn)遠(yuǎn)程控制海量測井?dāng)?shù)據(jù)的采集、存儲(chǔ)及訪問。綜上所述,具有USB接口的存儲(chǔ)設(shè)備能實(shí)現(xiàn)互聯(lián)網(wǎng)遠(yuǎn)程控制、訪問USB存儲(chǔ)設(shè)備的設(shè)計(jì)方案,對(duì)于希望獲取海量測井?dāng)?shù)據(jù)的用戶來說意義重大。
圖1 系統(tǒng)設(shè)計(jì)框圖
系統(tǒng)框圖如圖1所示,主要是以STC15F2K60S2單片機(jī)為核心。單片機(jī)收集測井系統(tǒng)中各路傳感器采集到的數(shù)據(jù)信息,通過USB接口芯片存儲(chǔ)在大容量U盤中,另外使用以太網(wǎng)控制芯片ENC28J60將系統(tǒng)接入互聯(lián)網(wǎng),通過PC機(jī)或其他具有上網(wǎng)功能的移動(dòng)終端遠(yuǎn)程控制并且訪問U盤中的測井?dāng)?shù)據(jù)。
1.1 USB接口芯片CH376模塊設(shè)計(jì)
1.1.1 CH376硬件電路搭建
USB接口芯片CH376模塊硬件電路設(shè)計(jì)如圖2所示,單片機(jī)與CH376采用的是硬件總線8位并口連接方式。CH376通過8位被動(dòng)并行接口的D0~D7、RD#、WR #、PCS#、A0直接連接到STC15F2K60S2單片機(jī)的系統(tǒng)總線上,其中D0~D7連接STC15F2K60S2的數(shù)據(jù)總線P0.0~P0.7引腳,RD#、WR#引腳與STC15F2K60S2的對(duì)應(yīng)引腳相連,INT#引腳連到STC15F2K60S2的外部中斷INT0上(采用中斷方式處理USB數(shù)據(jù)傳輸),PCS#連接STC15F2K60S2 的P2.6引腳來控制CH376的使能,A0連接到STC15F2K60S2的P2.0引腳,因此,CH376命令寄存器的地址可選為BDF1H,數(shù)據(jù)寄存器的地址可選為BCF0H[2]。
1.1.2 CH376軟件設(shè)計(jì)
系統(tǒng)需要將各路傳感器收集到的數(shù)據(jù)信息存入大容量的U盤中,CH376能讀寫大容量U盤,故可以在U盤中創(chuàng)建文件,將采集到的數(shù)據(jù)寫入該文件中,創(chuàng)建一個(gè)EXCEL文件用于存放采集到的數(shù)據(jù)。
圖2 CH376模塊硬件電路圖
軟件操作的具體步驟是:單片機(jī)首先發(fā)送CMD_SET_USB_MODE命令設(shè)置CH376工作在主機(jī)模式下,然后調(diào)用沁恒公司提供的FILE_SYS文件系統(tǒng)庫中的CH376DiskConnect函數(shù)等待U盤連接,U盤連接成功后,在進(jìn)行操作之前必須由單片機(jī)發(fā)送CMD_DISK_MOUNT進(jìn)行初始化,并檢測磁盤是否準(zhǔn)備就緒,確認(rèn)磁盤準(zhǔn)備就緒后,調(diào)用文件系統(tǒng)庫函數(shù)CH376FileOpen打開磁盤中已經(jīng)創(chuàng)建好的文件。當(dāng)文件創(chuàng)建成功后,為方便向文件中添加數(shù)據(jù),還需要將該文件移動(dòng)到U盤中所有已有文件的末尾。可調(diào)用文件系統(tǒng)庫函數(shù)CH376ByteLocate設(shè)定參數(shù)為0xFFFF FFFF,即可移動(dòng)該文件至所有文件之后,以上一切準(zhǔn)備就緒后就可以向文件中寫入數(shù)據(jù)了,最后要保存文件并更新文件長度,涉及到的文件庫函數(shù)是CH376GetFileSize。在U盤中創(chuàng)建EXCEL文件的軟件流程圖如圖3所示[3]。
圖3 在U盤中創(chuàng)建EXCEL文件流程圖
1.2 以太網(wǎng)控制芯片ENC28J60模塊設(shè)計(jì)
1.2.1 ENC28J60硬件電路搭建
以太網(wǎng)控制芯片ENC28J60模塊硬件電路如圖4所示。單片機(jī)與ENC28J60采用SPI總線方式連接,由于STC15F2K60S2內(nèi)部集成了硬件SPI,為了提高網(wǎng)絡(luò)通信速率,采用硬件 SPI方式驅(qū)動(dòng) ENC28J60。STC15F2K60S2內(nèi)部與SPI總線驅(qū)動(dòng)相關(guān)的寄存器有SPI控制寄存器 SPCTL、SPI狀態(tài)寄存器 SPSTAT、SPI數(shù)據(jù)寄存器SPDAT、SPI功能切換寄存器AUXR1。配置好相關(guān)寄存器后,將SPI接口的4個(gè)引腳(SCKL/P1.5、MISO/P1.4、MOSI/P1.3、SS/P1. 2)分別與ENC28J60相應(yīng)引腳相連,以太網(wǎng)接口采用自帶網(wǎng)絡(luò)變壓器和網(wǎng)絡(luò)通信指示燈的專用網(wǎng)絡(luò)接口HR911105A。
1.2.2 ENC28J60軟件設(shè)計(jì)及嵌入式μIP協(xié)議棧移植
(1)ENC28J60的驅(qū)動(dòng)及網(wǎng)絡(luò)數(shù)據(jù)的收發(fā)
圖4 ENC28J60模塊硬件電路圖
ENC28J60的驅(qū)動(dòng)程序主要分3部分:第一是配置相關(guān)寄存器,第二是芯片初始化,第三是收發(fā)數(shù)據(jù)包,其中最核心的是收發(fā)數(shù)據(jù)包。在收發(fā)數(shù)據(jù)包時(shí)有以下幾點(diǎn)值得關(guān)注:首先ENC28J60具有一個(gè)接收過濾器,可以丟棄或接收具有組播、廣播或單播目標(biāo)地址的數(shù)據(jù)包;其次,在數(shù)據(jù)字段處,以太網(wǎng)數(shù)據(jù)字段的長度可以在0~1500字節(jié)之間變換,超過這一范圍的數(shù)據(jù)包是違反以太網(wǎng)標(biāo)準(zhǔn)的,將會(huì)被大多數(shù)以太網(wǎng)節(jié)點(diǎn)丟棄。
(2)嵌入式μIP協(xié)議棧移植
μIP是由瑞典計(jì)算機(jī)科學(xué)學(xué)院(網(wǎng)絡(luò)嵌入式系統(tǒng)小組)的Adam Dunkels開發(fā)的[4],是專門為8位和16位單片機(jī)設(shè)計(jì)的一個(gè)非常小的TCP/IP協(xié)議棧。μIP完全用C語言編寫,可以很方便地移植到各種不同結(jié)構(gòu)的單片機(jī)和操作系統(tǒng)上。μIP協(xié)議棧去掉了完整的TCP/IP協(xié)議中不常用的功能,簡化了通信流程,設(shè)計(jì)重點(diǎn)放在IP/TCP/ICMP/UDP/ARP這些網(wǎng)絡(luò)層和傳輸協(xié)議上,保證了其代碼的通用性和結(jié)構(gòu)的穩(wěn)定性,而且其占用資源非常少,協(xié)議棧代碼不到6 KB,RAM只占用幾百字節(jié)。在設(shè)計(jì)上μIP采用硬件處理層、協(xié)議棧層、應(yīng)用層共用一個(gè)全局緩沖區(qū),不存在數(shù)據(jù)拷貝問題,其發(fā)送和接收數(shù)據(jù)包都是依靠這個(gè)緩沖區(qū),極大地節(jié)省了空間和時(shí)間。另外μIP源代碼提供一套實(shí)例程序,包括Web服務(wù)器、Web客戶端、電子郵件發(fā)送、Telnet服務(wù)器、DNS主機(jī)名解析等。μIP協(xié)議棧與系統(tǒng)底層和高層應(yīng)用之間的關(guān)系如圖5所示。
μIP相當(dāng)于一個(gè)代碼庫,通過一系列的函數(shù)實(shí)現(xiàn)與底層硬件和高層應(yīng)用程序的通信,對(duì)于整個(gè)系統(tǒng)來說它的內(nèi)部協(xié)議組是透明的,從而增強(qiáng)了協(xié)議的通用性。從圖5可以看出μIP協(xié)議棧主要提供了3個(gè)函數(shù)供系統(tǒng)底層調(diào)用,即uip_init()、uip_input()和uip_periodic(),其與應(yīng)用程序的主要接口是UIP_APPCALL()。
移植μIP協(xié)議棧至8位單片機(jī),關(guān)鍵步驟包括以下幾點(diǎn):
①仔細(xì)閱讀μIP協(xié)議源碼,了解μIP主循環(huán)的代碼結(jié)構(gòu)。
根據(jù)實(shí)際使用的網(wǎng)卡芯片編寫驅(qū)動(dòng)網(wǎng)卡函數(shù),比如本方案選用的網(wǎng)卡芯片為ENC28J60,則需根據(jù)相關(guān)數(shù)據(jù)手冊(cè)編寫驅(qū)動(dòng)。
②使用單片機(jī)的一個(gè)定時(shí)器為μIP協(xié)議棧中的TCP 和ARP作定時(shí)服務(wù)。
③根據(jù)需要修改配置文件uipopt.h/uip-config.h中本地IP地址、網(wǎng)關(guān)地址、MAC地址、全局緩沖區(qū)的大小、支持的最大連接數(shù)、偵聽數(shù)、ARP表大小等。
圖5 μIP協(xié)議棧與系統(tǒng)底層和高層應(yīng)用之間的關(guān)系
④根據(jù)實(shí)際應(yīng)用的需要修改、編寫UIP_APPCALL這個(gè)宏定義,如果應(yīng)用程序需要實(shí)現(xiàn)TCP服務(wù)器則將這個(gè)宏定義改為#“define UIP_APPCALL tcp_server_appcall”,并編寫具體的TCP應(yīng)用函數(shù);如果應(yīng)用程序需要實(shí)現(xiàn)Web服務(wù)器,則將這個(gè)宏定義改為“#define UIP_APPCALL httpd_appcall”,并編寫具體的Web服務(wù)器應(yīng)用函數(shù)。
(3)μIP協(xié)議的Web服務(wù)器的實(shí)現(xiàn)
基于UIP協(xié)議的Web服務(wù)器主程序采用中斷加輪詢的方式,輪詢有無網(wǎng)絡(luò)數(shù)據(jù)包輸入,如有則調(diào)用μIP的相關(guān)處理函數(shù),如無則檢測定時(shí)輪詢中斷是否發(fā)生。這里將STC15F2K60S2單片機(jī)的T1定時(shí)器設(shè)為μIP的定時(shí)輪詢計(jì)數(shù)器,在T1中斷中設(shè)置輪詢標(biāo)志,一旦主程序檢測到這一標(biāo)志,就調(diào)用μip_periodic()輪詢各連接。Web服務(wù)器首先打開80端口的監(jiān)聽,一旦有客戶機(jī)要求連上,μIP內(nèi)部會(huì)給它分配一個(gè)連接項(xiàng)等,收到客戶機(jī)IE瀏覽器發(fā)出的GET HTTP請(qǐng)求后,就會(huì)生成一幅新的網(wǎng)頁發(fā)給客戶機(jī)。老用戶關(guān)閉了瀏覽器,μIP會(huì)自動(dòng)檢測到這一事件并且釋放掉這個(gè)連接項(xiàng)[5]?;讦蘄P協(xié)議棧的Web服務(wù)器程序流程圖如圖6所示。
為了驗(yàn)證系統(tǒng)能否在測井過程中將傳感器收集到的海量數(shù)據(jù)存入U(xiǎn)盤并實(shí)現(xiàn)互聯(lián)網(wǎng)遠(yuǎn)程訪問,采用RTC時(shí)鐘芯片、A/D轉(zhuǎn)換芯片以及LM75A溫度傳感器芯片,模擬測井過程中的各路傳感器進(jìn)行測試。系統(tǒng)上電后通過網(wǎng)線及路由器接入互聯(lián)網(wǎng),插上U盤至目標(biāo)板,打開PC機(jī)的IE瀏覽器,在地址欄輸入http://10.10.217.222,回車即可看到彈出一個(gè)新的界面(如圖7左側(cè)所示),單擊界面中的“開始采集”連接,可以看到目標(biāo)板上U盤指示燈不停閃爍,表示數(shù)據(jù)正在采集,一段時(shí)間過后單擊界面中的“停止采集”,即可看到U盤指示燈停止閃爍,表示數(shù)據(jù)采集結(jié)束,再次單擊“查看已采集的數(shù)據(jù)”連接,彈出一個(gè)新的界面顯示采集到的數(shù)據(jù)信息,如圖7右側(cè)所示。
圖6 基于μIP協(xié)議棧的Web服務(wù)器程序流程圖
圖7 網(wǎng)頁訪問U盤中采集的數(shù)據(jù)信息測試結(jié)果
本文提出的海量測井?dāng)?shù)據(jù)的以太網(wǎng)訪問方案,彌補(bǔ)了傳統(tǒng)測井系統(tǒng)數(shù)據(jù)采集存儲(chǔ)容量不夠大、設(shè)備移動(dòng)性不夠靈活等不足,使得一些工作在惡劣環(huán)境下的測井系統(tǒng)能在無人值守的條件下安全地進(jìn)行海量數(shù)據(jù)采集工作,避免了測井人員在惡劣環(huán)境中工作時(shí)的安全隱患,具有一定的實(shí)用價(jià)值。
[1]孫霞,周金陵.基于單片機(jī)的大容量數(shù)據(jù)存儲(chǔ)技術(shù)的應(yīng)用研究[J].微計(jì)算機(jī)信息,2006(14).
[2]薛建彬,張超,嵇治剛.基于單片機(jī)的USB-HOST數(shù)據(jù)采集儀表設(shè)計(jì)[J].化工自動(dòng)化及儀表,2013(1).
[3]鄭玉章,徐愛鈞.基于STC15和CH376的實(shí)時(shí)海量數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2014(2):38-41.
[4]Adam Dunkels.μIP協(xié)議棧源碼[EB/OL].[2014-11].http://dunkels.com/adam/uip/.
[5]基于μIP協(xié)議棧的WEB服務(wù)器的軟件設(shè)計(jì)[D].長沙:中南林業(yè)科技大學(xué).
Ethernet Access Scheme of Massive Mobile Storage Data
Zheng Yuzhang,Xu Aijun
(School of Electroinc&Information,Yangzte University,Jingzhou 434023,china)
A massive mobile data of Ethernet access solution is proposed in the paper,which uses MCU to store the date collected by external sensors in the large capacity U disk through USB interface chip CH376.Meanwhile,with the help of Ethernet control chip ENC28J60,the device is linked to the Internet,so users can easily get the data strored in the U disk through the PC machine or other Internet mobile terminals.The experimental results show that the scheme is able to acqire and store remote logging data successfully,and has good mobility,so it has certain practical value.
MCU;USB;ENC28J60;mobile storage
TP368.1
A
薛士然
2014-11-24)