当前位置:文档之家› WSN中LEACH协议源码分析报告

WSN中LEACH协议源码分析报告

WSN中LEACH协议源码分析

分析(一)

首先对wireless.tcl进行分析,先对默认的脚本选项进行初始化:

set opt(chan)Channel/\VirelessChannel

set opt(prop) Propagatioii/TwoRayGround

set opt(netif)PhyAVirelessPhy

set opt(mac) Mac/802_l 1

set opt(ifq) Qucuc/DropTail/PriQueue

set opt(ll) LL

set opt(ant) Antenna/OmniAntenna

set opt(x) 0 。# X dimension of the topography

set opt(y) 0。# Y dimension of the topography

set opt(cp),H,

set opt(sc) N../mobility/scene/scen-670x670-50-600-20-2u。# scenario file set opt(ifqlen)50o # max packet in if

set opt(nn) 51。# number of nodes

set opt(secd) 0.0

set opt(stop) 10.0 o # simulation time

set opt(tr) out.tr。# trace file

set opt(rp) dsdv 。 # routing protocol script

set opt(lm) M on H。# log movement

在这个wireless.tcl中设置了一些全局变呈::

#

#Initialize Global Variables

#

set ns_ [new Simulator]

set chan [new $opt(chan)]

set prop [new $opt(prop)]

set topo [newTopography]

set tracefd [open Sopt(tr) w]

Stopo Ioad_flatgrid $opt(x) $opt(y)

Sprop topography Stopo

这些初始化将在后而的使用中用到,该文件最重要的是创建leach 17点:创建方法如下:

} elseif { [string compare Sopt(rp) M leach,,]==0} {

for {set i 0} {$i < $opt(nn) } {incr i} {

leach-create-mobile-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 M Snode_($i) reset”。〃完成后,重宜右点的应用

}

$ns_ at Sopt(stop).00000001 M puts VNS EXITING..'”。$ns_ halt” if { $opt(sc) ==

} {

puts H *** NOTE: no scenario file specified/1

set opt(sc) u none°

)else {

puts ”Loading scenario file../* source Sopt(sc)

puts ”Load complete...,r }

ns 在什么时候结束simulation,并告诉ns 加载sc 场景文件。最后$ns_ run 则ns 就开始运 行了。

分析(-)

上节对wireless.tcl 进行了简要的分析,接下来对Uanips.tcl 脚本进行分析。 set

opKEfriss^amp) [expr [expr 1.1 * $opt(RXThrcsh) * 16 * $PI * $PI] /\

[expr $opt(bw) * Sopt(Gt) * $opt(Gr) * $1 * $1]]

# Etwo_ray_amp = RXThresh /(Rb Gt Gr ht A 2 hr A 2) 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)]] 50e-9 o #

Energy for radio circuitry

5e-9 o # Beamforming energy (J/bit) 0

o # Sensing energy (J/bit)

o # Threshold for power adaptation o # Idle power (W) a # Sleep power (W)

set initialized 0

set rng_ [new RNG]#用于产生随机数

首先往opt 数组里而添加一些变量,并对这些变量进行初化。opt(Psleep) , opt(Pidle),

opt(thresh_energy)^t ns-lcach.tcl 中使用到,这个是讣算单位时间空闲所消耗的能呈:和休眠所 消

耗的能量。

这个脚本主要是创建leach 节点:

if {Sinitialized = O} {

#remove old trace sensjnit

set initialized 1 )

# Remove old trace files.

catch H eval exec rm [glob -nocomplain Sopt(dirname)/TDMAschedule.*.txt]M catch H exec rm $opt(dirname)/$opt(filename).energy H catch "exec rm $opt(dirnaine)/$opt(fiIename).data° catch "exec rm $opt(dirnanie)/$opt(filename).alive H catch ”exec rm $opt(dirname)/startup.energy H catch "exec rm $opt(dirnaine)/init.energy°

set opt(EXcvr) set opt(e_bf) set opt(Esense)

set opt(thresh_energy) 0.00 set opt(Pidle) 0 set opt(Psleep)

相关主题