新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > 基于硬件協(xié)議棧的以太網(wǎng)遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)

基于硬件協(xié)議棧的以太網(wǎng)遠(yuǎn)程數(shù)據(jù)傳輸系統(tǒng)

作者: 時(shí)間:2013-09-11 來(lái)源:網(wǎng)絡(luò) 收藏

2.2 軟件程序設(shè)計(jì)
W5100的程序設(shè)計(jì)包括初始化和Socket驅(qū)動(dòng)兩個(gè)部分,初始化過(guò)程主要對(duì)芯片內(nèi)部的各寄存器編程來(lái)實(shí)現(xiàn)芯片的復(fù)位、收發(fā)緩沖器設(shè)置等底層工作,初始化過(guò)程涉及的寄存器包括:
①RMSR(接收緩沖區(qū)寄存器)和TMSR(發(fā)送緩沖區(qū)寄存器)設(shè)置為0xAA(默認(rèn)為0x55),本系統(tǒng)中只用到了Socket0和Socket1兩個(gè)端口,岡此將緩沖區(qū)設(shè)置為4 KB,增大發(fā)送和接收空間。
②RTR(重發(fā)時(shí)間寄存器)按照默認(rèn)值設(shè)置,即200 ms(0x07D0)。通信過(guò)程中,當(dāng)發(fā)出連接、斷開(kāi)等命令后,在200 ms內(nèi)沒(méi)有收到對(duì)方的響應(yīng)時(shí),將會(huì)觸發(fā)重發(fā)機(jī)制。
③RCR(重發(fā)計(jì)數(shù)寄存器)設(shè)置為8次。
④IMR(中斷屏蔽寄存器),通過(guò)向相應(yīng)的中斷屏蔽位寫(xiě)入1使能相應(yīng)的中斷源,指出了IMR的每一位對(duì)應(yīng)的中斷源,本系統(tǒng)中需要開(kāi)啟7、6、1、0即可。即設(shè)置IMR寄存器為0xC3,中斷產(chǎn)生后,STM32F103VET6可以通過(guò)訪(fǎng)問(wèn)IR寄存器獲得中斷來(lái)源,從而進(jìn)行相應(yīng)的中斷程序處理。中斷屏蔽寄存器如下。

本文引用地址:http://butianyuan.cn/article/192755.htm

f.jpg


除了上面幾個(gè)寄存器之外,還需要設(shè)置MAC地址、IP地址、網(wǎng)關(guān)地址等,根據(jù)實(shí)際應(yīng)用向?qū)?yīng)的控制位寫(xiě)入相應(yīng)的地址即可,這里不再贅述。
W5100可以工作在TCP和UDP兩種通信模式下,在不同的通信模式下又分為客戶(hù)端和服務(wù)器兩種工作狀態(tài),TCP是面向連接的通信,相比UDP可以提供更可靠的通信服務(wù)。本文通過(guò)W5100建立TCP的客戶(hù)端工作模式,將采集到的數(shù)據(jù)通過(guò)發(fā)送至數(shù)據(jù)中心的服務(wù)器。如圖5所示,客戶(hù)端首先向服務(wù)器發(fā)起請(qǐng)求連接,成功建立連接之后,當(dāng)周期性數(shù)據(jù)采集任務(wù)結(jié)束后,將向服務(wù)器發(fā)送數(shù)據(jù)包;如果遇到網(wǎng)絡(luò)阻塞,會(huì)產(chǎn)生通信超時(shí)或者沒(méi)有響應(yīng)等情況,將會(huì)終止一次通信連接,關(guān)閉Socket,然后重新發(fā)起新的連接請(qǐng)求,循環(huán)反復(fù)。

g.jpg



3 系統(tǒng)應(yīng)用
目前,通過(guò)本文開(kāi)發(fā)的基于W5100的遠(yuǎn)程數(shù)據(jù)采集與已經(jīng)成功應(yīng)用在遼寧省建筑能耗監(jiān)測(cè)平臺(tái)、太原理工大學(xué)節(jié)約型校園監(jiān)管平臺(tái)、大連市公共機(jī)構(gòu)能耗監(jiān)管平臺(tái)等多個(gè)能耗監(jiān)測(cè)項(xiàng)目當(dāng)中。其中,遼寧省項(xiàng)目覆蓋范圍最廣,涉及到省內(nèi)14個(gè)地級(jí)市共50棟建筑的能耗采集與傳輸工作。調(diào)試期間,因能耗采集周期和上傳周期均一致,并且各客戶(hù)端的時(shí)間信息通過(guò)服務(wù)器進(jìn)行同步,導(dǎo)致所有的客戶(hù)端均在同一個(gè)時(shí)刻向數(shù)據(jù)中心發(fā)起連接或者發(fā)送能耗信息數(shù)據(jù),如圖6所示(上傳周期為5 min),第1分鐘的C1~Cn表示各地的數(shù)據(jù)采集器在同一時(shí)刻向服務(wù)器發(fā)起連接請(qǐng)求,第5 min的C1~Cn表示各數(shù)據(jù)采集器在同一時(shí)刻向服務(wù)器發(fā)送能耗數(shù)據(jù)信息,從而造成服務(wù)器偶爾因連接負(fù)載過(guò)多造成采集軟件死機(jī)等情況發(fā)生。

h.jpg


解決該問(wèn)題的方法其實(shí)很簡(jiǎn)單,設(shè)置各客戶(hù)端分時(shí)發(fā)送數(shù)據(jù)即可,但如果對(duì)不同的客戶(hù)端下載不同版本的程序,從而達(dá)到分時(shí)的目的,實(shí)際操作過(guò)程中很不方便,而且造成程序版本不唯一,容易出現(xiàn)問(wèn)題。經(jīng)過(guò)進(jìn)一步分析發(fā)現(xiàn),各客戶(hù)端的網(wǎng)絡(luò)通信質(zhì)量不一,與服務(wù)器成功建立連接的時(shí)間不同,通過(guò)下面的方法巧妙地將該問(wèn)題解決,如圖7所示。

i.jpg


通過(guò)在程序中加入下面兩行代碼:
Write_W5100(W5100_S0_CR,S_CR_SEND KEEP);
//監(jiān)測(cè)網(wǎng)絡(luò)狀態(tài)
ssr0_state=Read_W5100(W5100_S0_SSR);
//讀取當(dāng)前網(wǎng)絡(luò)狀態(tài)
對(duì)當(dāng)前的網(wǎng)絡(luò)進(jìn)行監(jiān)測(cè),客戶(hù)端與服務(wù)器成功建立連接之后,寄存器ssr0_state變?yōu)?x17,記錄從發(fā)起連接到建立連接之間的時(shí)間差△T,發(fā)送數(shù)據(jù)時(shí)順延△T時(shí)刻再發(fā)送,從而零成本解決了負(fù)載過(guò)大的難題。遼寧省項(xiàng)目自2010年7月開(kāi)始運(yùn)行,至今已經(jīng)連續(xù)運(yùn)行2年多時(shí)間,結(jié)果表明該系統(tǒng)能夠準(zhǔn)確地將數(shù)據(jù)上傳,工作穩(wěn)定可靠。

結(jié)語(yǔ)
本文以STM32F103VET6為核心處理器,通過(guò)單片網(wǎng)絡(luò)控制芯片W5100建立了遠(yuǎn)程數(shù)據(jù),該系統(tǒng)具有高集成度、低成本、開(kāi)發(fā)周期短等優(yōu)勢(shì)。針對(duì)建筑能耗監(jiān)測(cè)系統(tǒng)多個(gè)客戶(hù)端同時(shí)發(fā)起連接和上傳數(shù)據(jù)造成的服務(wù)器壓力過(guò)大問(wèn)題,文中通過(guò)監(jiān)測(cè)客戶(hù)端與服務(wù)器之間的連接時(shí)間點(diǎn),在發(fā)送數(shù)據(jù)時(shí)順延時(shí)間差△T,巧妙地解決了該問(wèn)題。實(shí)際項(xiàng)目運(yùn)行結(jié)果表明,該系統(tǒng)運(yùn)行可靠穩(wěn)定,應(yīng)用前景良好。

tcp/ip相關(guān)文章:tcp/ip是什么



上一頁(yè) 1 2 3 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉