資源描述:
《WSN中LEACH協(xié)議源碼分析》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在工程資料-天天文庫。
1、WSN中LEACH協(xié)議源碼分析分析(一)首先對wireless.tcl進行分析,先對默認的腳本選項進行初始化:setopt(chan)Channel/WirelessChannelsetopt(prop)Propagation/TwoRayGroundsetopt(netif)Phy/WirelessPhysetopt(mac)Mac/802_11setopt(ifq)Queue/DropTail/PriQueuesetopt(ll)LLsetopt(ant)Antenna/OmniAntennasetopt(x)0;#Xdimensionofthetopographyse
2、topt(y)0;#Ydimensionofthetopographysetopt(cp)""setopt(sc)"../mobility/scene/scen-670x670-50-600-20-2";#scenariofilesetopt(ifqlen)50;#maxpacketinifsetopt(nn)51;#numberofnodessetopt(seed)0.0setopt(stop)10.0;#simulationtimesetopt(tr)out.tr;#tracefilesetopt(rp)dsdv;#routingprotocolscriptsetopt
3、(lm)"on";#logmovement在這個wireless.tcl中設置了一些全局變量:##InitializeGlobalVariables#setns_[newSimulator]setchan[new$opt(chan)]setprop[new$opt(prop)]settopo[newTopography]settracefd[open$opt(tr)w]$topoload_flatgrid$opt(x)$opt(y)$proptopography$topo這些初始化將在后面的使用中用到,該文件最重要的是創(chuàng)建leach節(jié)點:創(chuàng)建方法如下:}elseif{[st
4、ringcompare$opt(rp)"leach"]==0}{for{seti0}{$i<$opt(nn)}{incri}{leach-create-mobile-node$i}如果路由協(xié)議是leach協(xié)議,則在Uamps.tcl中調(diào)用leach-create-mobile-node方法創(chuàng)建leach節(jié)點。將在第二小節(jié)講如何創(chuàng)建leach節(jié)點。for{seti0}{$i<$opt(nn)}{incri}{$ns_at$opt(stop).000000001"$node_($i)reset";//完成后,重置節(jié)點的應用}$ns_at$opt(stop).00000001"p
5、uts"NSEXITING...";$ns_halt"if{$opt(sc)==""}{puts"***NOTE:noscenariofilespecified."setopt(sc)"none"}else{puts"Loadingscenariofile..."source$opt(sc)puts"Loadcomplete..."}ns在什么時候結束simulation,并告訴ns加載sc場景文件。最后$ns_run則ns就開始運行了。分析(二)上節(jié)對wireless.tcl進行了簡要的分析,接下來對Uamps.tcl腳本進行分析。setopt(Efriss_amp)
6、[expr[expr1.1*$opt(RXThresh)*16*$PI*$PI]/[expr$opt(bw)*$opt(Gt)*$opt(Gr)*$l*$l]]#Etwo_ray_amp=RXThresh/(RbGtGrht^2hr^2)setopt(Etwo_ray_amp)[expr1.1*$opt(RXThresh)/[expr$opt(bw)*$opt(Gt)*$opt(Gr)*$opt(ht)*$opt(ht)*$opt(ht)*$opt(ht)]]setopt(EXcvr)50e-9;#Energyforradiocircuitrysetopt(e_bf)
7、5e-9;#Beamformingenergy(J/bit)setopt(Esense)0;#Sensingenergy(J/bit)setopt(thresh_energy)0.00;#Thresholdforpoweradaptationsetopt(Pidle)0;#Idlepower(W)setopt(Psleep)0;#Sleeppower(W)setinitialized0setrng_[newRNG]#用于產(chǎn)生隨機數(shù)首先往opt數(shù)組里面添加一些變量,并對這些變量進行初化。opt(Psleep),opt