WSN中LEACH协议源码分析.doc
《WSN中LEACH协议源码分析.doc》由会员分享,可在线阅读,更多相关《WSN中LEACH协议源码分析.doc(12页珍藏版)》请在咨信网上搜索。
1、WSN中LEACH协议源码分析 作者: 日期:12 个人收集整理 勿做商业用途WSN中LEACH协议源码分析分析(一)首先对wireless。tcl进行分析,先对默认的脚本选项进行初始化:set opt(chan)Channel/WirelessChannelset opt(prop) Propagation/TwoRayGroundset opt(netif)Phy/WirelessPhyset opt(mac) Mac/802_11set opt(ifq) Queue/DropTail/PriQueueset opt(ll) LLset opt(ant) Antenna/OmniAnten
2、naset opt(x) 0 ; X dimension of the topographyset opt(y) 0 ;# Y dimension of the topographyset opt(cp) ”set opt(sc) ”。/mobility/scene/scen-670x67050600202” ;# scenario fileset opt(ifqlen)50; max packet in ifset opt(nn) 51 ;# number of nodesset opt(seed) 0.0set opt(stop) 10.0 ; simulation timeset opt
3、(tr) out。tr ;# trace fileset opt(rp) dsdv ; routing protocol scriptset opt(lm) on” ; log movement在这个wireless.tcl中设置了一些全局变量: Initialize Global Variablesset ns_ new Simulatorset chan new $opt(chan)set prop new $opt(prop)set topo new Topographyset tracefd open opt(tr) wtopo load_flatgrid $opt(x) opt(y)
4、prop topography topo这些初始化将在后面的使用中用到,该文件最重要的是创建leach节点:创建方法如下: elseif string compare opt(rp) leach” = 0 for set i 0 $i $opt(nn) incr i leachcreatemobile-node $i如果路由协议是leach协议,则在Uamps.tcl中调用leach-create-mobile-node方法创建leach节点。将在第二小节讲如何创建leach节点。for set i 0 $i opt(nn) incr i ns_ at opt(stop)。000000001
5、node_($i) reset; /完成后,重置节点的应用$ns_ at opt(stop)。00000001 ”puts NS EXITING。 ; $ns_ haltif $opt(sc) = ” puts ”* NOTE: no scenario file specified.” set opt(sc) ”none” else puts Loading scenario file。.source opt(sc)puts Load complete。.”ns在什么时候结束simulation,并告诉ns加载sc场景文件。最后ns_ run则ns就开始运行了。分析(二)上节对wireless
6、。tcl进行了简要的分析,接下来对Uamps.tcl脚本进行分析。set opt(Efriss_amp) expr expr 1。1 opt(RXThresh) 16 $PI $PI / expr opt(bw) opt(Gt) * opt(Gr) l * l Etwo_ray_amp = RXThresh / (Rb Gt Gr ht2 hr2)set opt(Etwo_ray_amp) expr 1.1 opt(RXThresh) / expr $opt(bw) opt(Gt) opt(Gr) * $opt(ht) $opt(ht) * $opt(ht) $opt(ht)set opt(E
7、Xcvr) 50e9 ;# Energy for radio circuitryset opt(e_bf) 5e-9 ;# Beamforming energy (J/bit)set opt(Esense) 0 ;# Sensing energy (J/bit)set opt(thresh_energy) 0。00 ;# Threshold for power adaptationset opt(Pidle) 0 ;# Idle power (W)set opt(Psleep) 0 ;# Sleep power (W)set initialized 0set rng_ new RNG用于产生随
8、机数 首先往opt数组里面添加一些变量,并对这些变量进行初化。opt(Psleep) ,opt(Pidle), opt(thresh_energy)在nsleach。tcl中使用到,这个是计算单位时间空闲所消耗的能量和休眠所消耗的能量。这个脚本主要是创建leach节点:if $initialized = 0 remove old trace sens_init set initialized 1 Remove old trace files. catch ”eval exec rm glob nocomplain opt(dirname)/TDMAschedule.txt” catch ”ex
9、ec rm opt(dirname)/opt(filename).energy catch ”exec rm $opt(dirname)/opt(filename).data catch ”exec rm $opt(dirname)/$opt(filename).alive catch ”exec rm opt(dirname)/startup.energy” catch ”exec rm opt(dirname)/init.energy如果没有初始化过,则将以前的跟踪文件删除,接着回到创建leach的函数中,创建节点:if id != opt(nn_) puts nonewline id ”
10、 #important set node_($id) new MobileNode/ResourceAwareNode else puts ($opt(nn_) = BS)” set node_($id) new MobileNode/ResourceAwareNode BS_NODE 如果不是簇头节点则将opt(nn_)-1个节点设置为一般节点,将opt(nn_)设置为BS节点.newMobileNode/ResourceAwareNode函数是在nsranode.tcl中。分析完这个我们接下来分析newMobileNode/ResourceAwareNode这个函数。set node $n
11、ode_($id) if id != $opt(nn_) # Set initial node energy。 if $opt(eq_energy) = 1 node set-energy opt(init_energy) opt(thresh_energy) else 由于eq-energy在leachtest中给定,将eqenergy=1;则每个节点都会对能量进行初始化,设置节点的初始能量和门槛能量(个人理解,死亡能量)。set high_e_nodes list 97 19 12 87 8 22 83 55 34 72 if lsearch $high_e_nodes id = 1 se
12、t E 2 else set E 200 $node set-energy E $opt(thresh_energy) set initf open ”$opt(dirname)/init。energy a puts $initf ”$idtE close initf将不属于list中的能量初始化能量设置为2,将属于list中的能量设置为200。并将初始化能量写到init.energy中,将节点id和节点初始能量写进去。 else # Base station has an infinite amount of energy。 node setenergy 50000 $opt(thresh_
13、energy) 节点为簇头节点,则将节点的初始化能量设置为50000,能量无限.到此为止,创建节点完成并将每个节点的能量初始化完成。下一节将分析ns-ranode.tcl脚本。区分普通节点和簇头节点的不同。接下来是配置节点信道和跟踪文件:$ns_ at 0.0 node_(id) startapp ns在0的时候启动应用,应用在nsranode。tcl中分析。分析(三)对前面两个脚本进行分析后,已经创建好节点和设置好节点的初始能量,将opt(nn_)-1个节点设置为普通节点,而将opt(nn_)设置为bs。现在对nsranode。tcl进行分析。好了我们现在就开始分析这个脚本。Class Mo
14、bileNode/ResourceAwareNode superclass Node/MobileNodeMobileNode/ResourceAwareNode instproc init argsset bs_node lindex $args 0 eval self next lreplace args 0 0 args由参数传递进来,若节点为簇头节点则bs_node=1,调用父类初始化函数。 set ResourceManager_ new ResourceManager ResourceManager_ Register new Resource/NeighborResource s
15、et energy new Resource/EnergyResourceManager_ Register energyResourceManager在nsresouce-manager.tcl中定义的。Resource/NeighborResource在nsneighborresource中对能量进行管理。 Create a new agent and attach it to the node if bs_node = 1 set agent new Agent/BSAgent else set agent new Agent/RCAgent set rca_agent_ $agent
16、普通节点的应用为RCAgent,BS的应用为BSAGgent. 并将应用attch到node上。 下面两段看不明白,但是这两段不影响看程序。 set haslist find_haslist $self id if bs_node = 1 set rca new opt(bsapp) else set rca new opt(rcapp) $opt(mtype) wantslist haslist ns_ attachagent $self agent rca attach-agent $agent set rca_app_ $rca将bs节点的应用设置为bsapp,普通节点的应用设置为rca
17、app,并将节点的服务设置为不同的服务。bsapp在nsapp。tcl中。opt(rcapp)定义在leach。tcl中,opt(mtype)定义在leach。tcl中。set opt(rcapp) ”Application/LEACH ;# Application typeset opt(ra_adv) TxTime expr opt(hdr_size) + 4 ; Total time (s) for CH ADVs ; Assume max 4(nn*%) CHsset opt(ra_adv_total) expr $opt(ra_adv)($opt(num_clusters)4 + 1
18、) ; RA Time (s) for nodes join reqsset opt(ra_join) expr 0。01 * $opt(nn_) ;# Buffer time for join req xmittalset opt(ra_delay) TxTime expr opt(hdr_size) + 4 ;# Maximum time required to transmit ;# a schedule (n nodes in 1 cluster)set opt(xmit_sch) expr 0。005 + TxTime expr opt(nn_)4+$opt(hdr_size) ;#
19、 Overhead time for cluster set-upset opt(start_xmit) expr opt(ra_adv_total) + $opt(ra_join) + opt(xmit_sch)一般节点的应用为Application/LEACH,最终sink节点的应用为Application/BSApp。通过前3次的分析得出,在分析1中定义变量,在分析2中创建leach节点,在分析3中将节点的应用绑定在节点上。下面将分析leach的主要协议ns-leach.tcl脚本。分析(四)完成前面3个脚本的分析,最后进行nsleach.tcl脚本的分析.首先我们看下这个脚本要使用的有
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WSN LEACH 协议 源码 分析
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。