鄭玉章,徐愛鈞
(長江大學電子信息學院,荊州434023)
一種大容量移動存儲的網絡訪問方案設計
鄭玉章,徐愛鈞
(長江大學電子信息學院,荊州434023)
設計了一種大容量數據的以太網訪問方案。該方案利用MCU將外部各路傳感器采集到的數據信息通過USB接口芯片CH376存放在大容量U盤中,同時利用以太網控制芯片ENC28J60將系統接入互聯網,通過PC機或其他具有上網功能的移動終端遠程訪問U盤中的數據。測試結果表明,該方案能夠成功實現遠程測井數據采集、存儲,移動性好,具有一定的實用價值。
MCU;USB;ENC28J60;移動存儲
在工業測井系統中,終端的數據存儲、數據轉移一直是工作的重要環節[1]。傳統工業測井系統的數據存儲采用不掉電靜態RAM、EEPROM存儲模塊,數據轉移通常是計算機通過RS232串行口讀取。
隨著USB技術的發展,計算機的移動存儲介質普遍采用U盤或移動硬盤。U盤相對于工業測井系統終端原來的存儲模塊來說是海量存儲,所有存儲數據無需進行壓縮處理,可以在文件級與計算機兼容。與此同時,嵌入式Internet技術的發展又使得互聯網技術能夠輕松地嵌入到工業測井系統中,通過以太網控制芯片將測井系統終端接入互聯網后,編制測井系統終端控制器和網絡服務器之間的通信協議,便可以輕松實現通過數據中心網站來控制測井終端的數據采集,而進行數據訪問,也無需反復插拔USB接口存儲器,僅通過已接入互聯網的PC機或其他具有上網功能的移動終端即可實現遠程控制海量測井數據的采集、存儲及訪問。綜上所述,具有USB接口的存儲設備能實現互聯網遠程控制、訪問USB存儲設備的設計方案,對于希望獲取海量測井數據的用戶來說意義重大。

圖1 系統設計框圖
系統框圖如圖1所示,主要是以STC15F2K60S2單片機為核心。單片機收集測井系統中各路傳感器采集到的數據信息,通過USB接口芯片存儲在大容量U盤中,另外使用以太網控制芯片ENC28J60將系統接入互聯網,通過PC機或其他具有上網功能的移動終端遠程控制并且訪問U盤中的測井數據。
1.1 USB接口芯片CH376模塊設計
1.1.1 CH376硬件電路搭建
USB接口芯片CH376模塊硬件電路設計如圖2所示,單片機與CH376采用的是硬件總線8位并口連接方式。CH376通過8位被動并行接口的D0~D7、RD#、WR #、PCS#、A0直接連接到STC15F2K60S2單片機的系統總線上,其中D0~D7連接STC15F2K60S2的數據總線P0.0~P0.7引腳,RD#、WR#引腳與STC15F2K60S2的對應引腳相連,INT#引腳連到STC15F2K60S2的外部中斷INT0上(采用中斷方式處理USB數據傳輸),PCS#連接STC15F2K60S2 的P2.6引腳來控制CH376的使能,A0連接到STC15F2K60S2的P2.0引腳,因此,CH376命令寄存器的地址可選為BDF1H,數據寄存器的地址可選為BCF0H[2]。
1.1.2 CH376軟件設計
系統需要將各路傳感器收集到的數據信息存入大容量的U盤中,CH376能讀寫大容量U盤,故可以在U盤中創建文件,將采集到的數據寫入該文件中,創建一個EXCEL文件用于存放采集到的數據。

圖2 CH376模塊硬件電路圖
軟件操作的具體步驟是:單片機首先發送CMD_SET_USB_MODE命令設置CH376工作在主機模式下,然后調用沁恒公司提供的FILE_SYS文件系統庫中的CH376DiskConnect函數等待U盤連接,U盤連接成功后,在進行操作之前必須由單片機發送CMD_DISK_MOUNT進行初始化,并檢測磁盤是否準備就緒,確認磁盤準備就緒后,調用文件系統庫函數CH376FileOpen打開磁盤中已經創建好的文件。當文件創建成功后,為方便向文件中添加數據,還需要將該文件移動到U盤中所有已有文件的末尾。可調用文件系統庫函數CH376ByteLocate設定參數為0xFFFF FFFF,即可移動該文件至所有文件之后,以上一切準備就緒后就可以向文件中寫入數據了,最后要保存文件并更新文件長度,涉及到的文件庫函數是CH376GetFileSize。在U盤中創建EXCEL文件的軟件流程圖如圖3所示[3]。

圖3 在U盤中創建EXCEL文件流程圖
1.2 以太網控制芯片ENC28J60模塊設計
1.2.1 ENC28J60硬件電路搭建
以太網控制芯片ENC28J60模塊硬件電路如圖4所示。單片機與ENC28J60采用SPI總線方式連接,由于STC15F2K60S2內部集成了硬件SPI,為了提高網絡通信速率,采用硬件 SPI方式驅動 ENC28J60。STC15F2K60S2內部與SPI總線驅動相關的寄存器有SPI控制寄存器 SPCTL、SPI狀態寄存器 SPSTAT、SPI數據寄存器SPDAT、SPI功能切換寄存器AUXR1。配置好相關寄存器后,將SPI接口的4個引腳(SCKL/P1.5、MISO/P1.4、MOSI/P1.3、SS/P1. 2)分別與ENC28J60相應引腳相連,以太網接口采用自帶網絡變壓器和網絡通信指示燈的專用網絡接口HR911105A。
1.2.2 ENC28J60軟件設計及嵌入式μIP協議棧移植
(1)ENC28J60的驅動及網絡數據的收發

圖4 ENC28J60模塊硬件電路圖
ENC28J60的驅動程序主要分3部分:第一是配置相關寄存器,第二是芯片初始化,第三是收發數據包,其中最核心的是收發數據包。在收發數據包時有以下幾點值得關注:首先ENC28J60具有一個接收過濾器,可以丟棄或接收具有組播、廣播或單播目標地址的數據包;其次,在數據字段處,以太網數據字段的長度可以在0~1500字節之間變換,超過這一范圍的數據包是違反以太網標準的,將會被大多數以太網節點丟棄。
(2)嵌入式μIP協議棧移植
μIP是由瑞典計算機科學學院(網絡嵌入式系統小組)的Adam Dunkels開發的[4],是專門為8位和16位單片機設計的一個非常小的TCP/IP協議棧。μIP完全用C語言編寫,可以很方便地移植到各種不同結構的單片機和操作系統上。μIP協議棧去掉了完整的TCP/IP協議中不常用的功能,簡化了通信流程,設計重點放在IP/TCP/ICMP/UDP/ARP這些網絡層和傳輸協議上,保證了其代碼的通用性和結構的穩定性,而且其占用資源非常少,協議棧代碼不到6 KB,RAM只占用幾百字節。在設計上μIP采用硬件處理層、協議棧層、應用層共用一個全局緩沖區,不存在數據拷貝問題,其發送和接收數據包都是依靠這個緩沖區,極大地節省了空間和時間。另外μIP源代碼提供一套實例程序,包括Web服務器、Web客戶端、電子郵件發送、Telnet服務器、DNS主機名解析等。μIP協議棧與系統底層和高層應用之間的關系如圖5所示。
μIP相當于一個代碼庫,通過一系列的函數實現與底層硬件和高層應用程序的通信,對于整個系統來說它的內部協議組是透明的,從而增強了協議的通用性。從圖5可以看出μIP協議棧主要提供了3個函數供系統底層調用,即uip_init()、uip_input()和uip_periodic(),其與應用程序的主要接口是UIP_APPCALL()。
移植μIP協議棧至8位單片機,關鍵步驟包括以下幾點:
①仔細閱讀μIP協議源碼,了解μIP主循環的代碼結構。
根據實際使用的網卡芯片編寫驅動網卡函數,比如本方案選用的網卡芯片為ENC28J60,則需根據相關數據手冊編寫驅動。
②使用單片機的一個定時器為μIP協議棧中的TCP 和ARP作定時服務。
③根據需要修改配置文件uipopt.h/uip-config.h中本地IP地址、網關地址、MAC地址、全局緩沖區的大小、支持的最大連接數、偵聽數、ARP表大小等。

圖5 μIP協議棧與系統底層和高層應用之間的關系
④根據實際應用的需要修改、編寫UIP_APPCALL這個宏定義,如果應用程序需要實現TCP服務器則將這個宏定義改為#“define UIP_APPCALL tcp_server_appcall”,并編寫具體的TCP應用函數;如果應用程序需要實現Web服務器,則將這個宏定義改為“#define UIP_APPCALL httpd_appcall”,并編寫具體的Web服務器應用函數。
(3)μIP協議的Web服務器的實現
基于UIP協議的Web服務器主程序采用中斷加輪詢的方式,輪詢有無網絡數據包輸入,如有則調用μIP的相關處理函數,如無則檢測定時輪詢中斷是否發生。這里將STC15F2K60S2單片機的T1定時器設為μIP的定時輪詢計數器,在T1中斷中設置輪詢標志,一旦主程序檢測到這一標志,就調用μip_periodic()輪詢各連接。Web服務器首先打開80端口的監聽,一旦有客戶機要求連上,μIP內部會給它分配一個連接項等,收到客戶機IE瀏覽器發出的GET HTTP請求后,就會生成一幅新的網頁發給客戶機。老用戶關閉了瀏覽器,μIP會自動檢測到這一事件并且釋放掉這個連接項[5]。基于μIP協議棧的Web服務器程序流程圖如圖6所示。
為了驗證系統能否在測井過程中將傳感器收集到的海量數據存入U盤并實現互聯網遠程訪問,采用RTC時鐘芯片、A/D轉換芯片以及LM75A溫度傳感器芯片,模擬測井過程中的各路傳感器進行測試。系統上電后通過網線及路由器接入互聯網,插上U盤至目標板,打開PC機的IE瀏覽器,在地址欄輸入http://10.10.217.222,回車即可看到彈出一個新的界面(如圖7左側所示),單擊界面中的“開始采集”連接,可以看到目標板上U盤指示燈不停閃爍,表示數據正在采集,一段時間過后單擊界面中的“停止采集”,即可看到U盤指示燈停止閃爍,表示數據采集結束,再次單擊“查看已采集的數據”連接,彈出一個新的界面顯示采集到的數據信息,如圖7右側所示。

圖6 基于μIP協議棧的Web服務器程序流程圖

圖7 網頁訪問U盤中采集的數據信息測試結果
本文提出的海量測井數據的以太網訪問方案,彌補了傳統測井系統數據采集存儲容量不夠大、設備移動性不夠靈活等不足,使得一些工作在惡劣環境下的測井系統能在無人值守的條件下安全地進行海量數據采集工作,避免了測井人員在惡劣環境中工作時的安全隱患,具有一定的實用價值。
[1]孫霞,周金陵.基于單片機的大容量數據存儲技術的應用研究[J].微計算機信息,2006(14).
[2]薛建彬,張超,嵇治剛.基于單片機的USB-HOST數據采集儀表設計[J].化工自動化及儀表,2013(1).
[3]鄭玉章,徐愛鈞.基于STC15和CH376的實時海量數據采集系統設計[J].單片機與嵌入式系統應用,2014(2):38-41.
[4]Adam Dunkels.μIP協議棧源碼[EB/OL].[2014-11].http://dunkels.com/adam/uip/.
[5]基于μIP協議棧的WEB服務器的軟件設計[D].長沙:中南林業科技大學.
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)