一種大容量移動存儲的網(wǎng)絡訪問方案設(shè)計
μIP相當于一個代碼庫,通過一系列的函數(shù)實現(xiàn)與底層硬件和高層應用程序的通信,對于整個系統(tǒng)來說它的內(nèi)部協(xié)議組是透明的,從而增強了協(xié)議的通用性。從圖5可以看出μIP協(xié)議棧主要提供了3個函數(shù)供系統(tǒng)底層調(diào)用,即uip_init()、uip_input()和uip_periodic(),其與應用程序的主要接口是UIP_APPCALL()。
移植μIP協(xié)議棧至8位單片機,關(guān)鍵步驟包括以下幾點:
①仔細閱讀μIP協(xié)議源碼,了解μIP主循環(huán)的代碼結(jié)構(gòu)。
根據(jù)實際使用的網(wǎng)卡芯片編寫驅(qū)動網(wǎng)卡函數(shù),比如本方案選用的網(wǎng)卡芯片為ENC28J60,則需根據(jù)相關(guān)數(shù)據(jù)手冊編寫驅(qū)動。
②使用單片機的一個定時器為μIP協(xié)議棧中的TCP和ARP作定時服務。
③根據(jù)需要修改配置文件uipopt.h/uip—config.h中本地IP地址、網(wǎng)關(guān)地址、MAC地址、全局緩沖區(qū)的大小、支持的最大連接數(shù)、偵聽數(shù)、ARP表大小等。
④根據(jù)實際應用的需要修改、編寫UIP_APPCALL這個宏定義,如果應用程序需要實現(xiàn)TCP服務器則將這個宏定義改為#“define UIP_APP CALL tcp_server_appcall”,并編寫具體的TCP應用函數(shù);如果應用程序需要實現(xiàn)Web服務器,則將這個宏定義改為“#define UIP_APPCALL httpd_appcall”,并編寫具體的Web服務器應用函數(shù)。
(3)μiP協(xié)議的Web服務器的實現(xiàn)
基于UIP協(xié)議的Web服務器主程序采用中斷加輪詢的方式,輪詢有無網(wǎng)絡數(shù)據(jù)包輸入,如有則調(diào)用μIP的相關(guān)處理函數(shù),如無則檢測定時輪詢中斷是否發(fā)生。這里將STC15F2K60S2單片機的T1定時器設(shè)為μIP的定時輪詢計數(shù)器,在T1中斷中設(shè)置輪詢標志,一旦主程序檢測到這一標志,就調(diào)用μip_periodic()輪詢各連接。Web服務器首先打開80端口的監(jiān)聽,一旦有客戶機要求連上,μIP內(nèi)部會給它分配一個連接項等,收到客戶機IE瀏覽器發(fā)出的GET HTTP請求后,就會生成一幅新的網(wǎng)頁發(fā)給客戶機。老用戶關(guān)閉了瀏覽器,μIP會自動檢測到這一事件并且釋放掉這個連接項?;?mu;IP協(xié)議棧的Web服務器程序流程圖如圖6所示。
2 系統(tǒng)測試結(jié)果
為了驗證系統(tǒng)能否在測井過程中將傳感器收集到的海量數(shù)據(jù)存入U盤并實現(xiàn)互聯(lián)網(wǎng)遠程訪問,采用RTC時鐘芯片、A/D轉(zhuǎn)換芯片以及LM75A溫度傳感器芯片,模擬測井過程中的各路傳感器進行測試。系統(tǒng)上電后通過網(wǎng)線及路由器接入互聯(lián)網(wǎng),插上U盤至目標板,打開PC機的IE瀏覽器,在地址欄輸入http://10.10.217.222,回車即可看到彈出一個新的界面(如圖7左側(cè)所示),單擊界面中的“開始采集”連接,可以看到目標板上U盤指示燈不停閃爍,表示數(shù)據(jù)正在采集,一段時間過后單擊界面中的“停止采集”,即可看到U盤指示燈停止閃爍,表示數(shù)據(jù)采集結(jié)束,再次單擊“查看已采集的數(shù)據(jù)”連接,彈出一個新的界面顯示采集到的數(shù)據(jù)信息,如圖7右側(cè)所示。
結(jié)語
本文提出的海量測井數(shù)據(jù)的以太網(wǎng)訪問方案,彌補了傳統(tǒng)測井系統(tǒng)數(shù)據(jù)采集存儲容量不夠大、設(shè)備移動性不夠靈活等不足,使得一些工作在惡劣環(huán)境下的測井系統(tǒng)能在無人值守的條件下安全地進行海量數(shù)據(jù)采集工作,避免了測井人員在惡劣環(huán)境中工作時的安全隱患,具有一定的實用價值。
評論