📄 kkk.tcl
字号:
# Generated by MannaSim # http://www.mannasim.dcc.ufmg.br/ puts "Initializing MannaSim Script..." #Consumo de energia do sensor node - Dados do Mica Motes set mica(sensing_power) 0.015 ;# i = 5mA, V = 3 --> P = ixV = 15 mW = 0.015 W set mica(processing_power) 0.024 ;# i = 8mA, V = 3 --> P = ixV = 24 mW = 0.024 W set mica(instructions_per_second) 8000000 ;# Atmel 128L 8MHZ --> 8MIPS #Consumo de energia do sensor node - Dados do WINS set wins(sensing_power) 0.064 ;# 64 mW = 0.064 W set wins(processing_power) 0.360 ;# 360 mW = 0.360 W set wins(instructions_per_second) 150000000 ;# Intel StrongArm 1100 133 MHZ --> 150 MIPS #Seta valores para consumo de energia com o radio set mica(consumo_transmissao) 0.036 ;#i = 12mA, V = 3 --> P = ixV = 36mW = 0.036W set mica(consumo_recepcao) 0.024 ;#i = 8mA, V = 3 --> P = ixV = 24mW = 0.024W set wins(consumo_transmissao) 3.75 ;# 3.75 250m, 0.6 600 mW - 100m set wins(consumo_recepcao) 1.875 ;# 1.875 250m, 0.3 300 mW #seta a taxa de transmissao #Phy/WirelessPhy set bandwidth_ set mica(taxa_transmissao) 28.8*10e3 ;#28.8 kbps set wins(taxa_transmissao) 100*10e3 ;#100 kbps proc setup_mica2 { antenna range } { puts "Setting up mica 2 mote with $antenna and range = $range" #Phy/WirelessPhy set CPThresh_ 10.0 #Phy/WirelessPhy set CSThresh_ 1.559e-11 #Phy/WirelessPhy set RXThresh_ 2.78869e-09 ; # 100 meters #Phy/WirelessPhy set RXThresh_ 1.11548e-08 ; # 50 meters #Phy/WirelessPhy set Rb_ 2*1e6 Phy/WirelessPhy set Pt_ 0.281838 Phy/WirelessPhy set freq_ 2.4e09 Phy/WirelessPhy set L_ 1.0 Phy/WirelessPhy set lambda_ 0.125 Phy/WirelessPhy set RXThresh_ [TwoRay 0.281838 [$antenna set Gt_] [$antenna set Gr_] 0.8 0.8 1.0 $range 0.125] Phy/WirelessPhy set bandwidth_ 28.8*10e3 ;#28.8 kbps Node/MobileNode/SensorNode set sensingPower_ 0.015 Node/MobileNode/SensorNode set processingPower 0.024 Node/MobileNode/SensorNode set instructionsPerSecond_ 8000000 } ########################################## # CONSTANTES ######################################### # Continuo: 0 # Programada: 1 # Sob Demanda: 2 ######################################## proc create_common_app {destination_id disseminating_type disseminating_interval} { global val if { $val(commonApp) == "Application/SensorBaseApp/CommonNodeApp/LeachApp" } { if { $val(n_ch) == 0 } { puts "NO CLUSTER HEADS HAS BEEN DEFINED! Assuming 20% of common nodes." set val(n_ch) [expr int($val(n_common) * 2 / 10)] } set app_ [new $val(commonApp) $val(nn) $val(n_ch) [expr sqrt($val(x) * $val(x) + $val(y) * $val(y))]] } else { set app_ [new $val(commonApp)] $app_ set destination_id_ $destination_id } $app_ set disseminating_type_ $disseminating_type $app_ set disseminating_interval_ $disseminating_interval return $app_ } set val(commonApp) "Application/SensorBaseApp/CommonNodeApp" set val(chApp) "Application/SensorBaseApp/ClusterHeadApp" set val(apApp) "Application/AccessPointApp" proc create_cluster_head_app {destination_id disseminating_type disseminating_interval} { global val set app_ [new $val(chApp)] $app_ set destination_id_ $destination_id $app_ set disseminating_type_ $disseminating_type $app_ set disseminating_interval_ $disseminating_interval return $app_ } proc create_access_point_app {outside_network} { global val set app_ [new $val(apApp)] $app_ set outside_network_ $outside_network return $app_ } proc create_temp_data_generator {sensing_interval sensing_type avg_measure std_deviation maximumTemperatureAllowedValue} { set temp_gen_ [new DataGenerator/TemperatureDataGenerator] $temp_gen_ set sensing_interval_ $sensing_interval $temp_gen_ set sensing_type_ $sensing_type $temp_gen_ set avg_measure $avg_measure $temp_gen_ set std_deviation $std_deviation $temp_gen_ set maximumTemperatureAllowedValue_ $maximumTemperatureAllowedValue return $temp_gen_ } proc create_data_generator {generator sensing_interval sensing_type avg_measure std_deviation maximumTemperatureAllowedValue} { set temp_gen_ [new DataGenerator/$generator] $temp_gen_ set sensing_interval_ $sensing_interval if {$sensing_type=="continuous"} { $temp_gen_ set sensing_type_ 0 } elseif {$sensing_type=="programmed"} { $temp_gen_ set sensing_type_ 1 } elseif {$sensing_type=="on demand"} { $temp_gen_ set sensing_type_ 2 } else { $temp_gen_ set sensing_type_ $sensing_type } $temp_gen_ set avg_measure $avg_measure $temp_gen_ set std_deviation $std_deviation $temp_gen_ set maximumTemperatureAllowedValue_ $maximumTemperatureAllowedValue return $temp_gen_ } proc create_common_node { iniEnergy x y z father_addr start stop } { global val ns_ node_ topo udp_ app_ gen_ contador_nodos rng trace if { [llength $start] == 0 } { set start [expr $val(start) + [$rng uniform 0 1]] set stop $val(stop) } $ns_ node-config -sensorNode ON \ -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(antenna) \ -propType $val(prop) \ -energyModel $val(en) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace $trace(agent) \ -routerTrace $trace(router) \ -macTrace $trace(mac) \ -rxPower 0.024 \ -txPower 0.036 \ -initialEnergy $iniEnergy \ -movementTrace $trace(movement) set node_($contador_nodos) [$ns_ node] $node_($contador_nodos) random-motion 0 # set x [$rng uniform 0.0 $val(x)] # set y [$rng uniform 0.0 $val(y)] # set bla [expr int(sqrt($val(nn)))]# set x [expr (($contador_nodos) % $bla) * $val(x) / ($bla - 1)]# set y [expr (($contador_nodos) / $bla) * $val(y) / ($bla - 1)] $node_($contador_nodos) set X_ $x $node_($contador_nodos) set Y_ $y $node_($contador_nodos) set Z_ $z puts "* Node [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)" set app_($contador_nodos) [create_common_app $father_addr $val(disseminating_type) $val(disseminating_interval)] if { $val(leach) == 1 } { set agent [new Agent/RCAgent] $agent set sport_ 0 $agent set dport_ 0 $node_($contador_nodos) attach $agent 0 $app_($contador_nodos) attach-agent $agent $agent add-ll [$node_($contador_nodos) set ll_(0)] [$node_($contador_nodos) set mac_(0)] } else { set udp_($contador_nodos) [new Agent/UDP] $node_($contador_nodos) attach $udp_($contador_nodos) $val(port) } $node_($contador_nodos) add-app $app_($contador_nodos) set processing_($contador_nodos) [new $val(processing)] $app_($contador_nodos) node $node_($contador_nodos) if { $val(leach) != 1 } { $app_($contador_nodos) attach-agent $udp_($contador_nodos) } $app_($contador_nodos) attach-processing $processing_($contador_nodos) $processing_($contador_nodos) node $node_($contador_nodos) for { set i 0 } { $i < [llength $start] } { incr i } { $ns_ at $start "$app_($contador_nodos) start" } for { set i 0 } { $i < [llength $stop] } { incr i } { $ns_ at $stop "$app_($contador_nodos) stop" } #[create_temp_data_generator 5.0 0 27.0 10.0 50] set gen_($contador_nodos) $val(data_generator) $app_($contador_nodos) attach_data_generator $gen_($contador_nodos) incr contador_nodos } proc create_cluster_head_node { iniEnergy x y z father_addr start stop } { global val ns_ node_ topo udp_ app_ gen_ contador_nodos rng trace if { [llength $start] == 0 } { set start [expr $val(start) + [$rng uniform 0 1]] set stop $val(stop) } $ns_ node-config -sensorNode ON \ -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(antenna) \ -propType $val(prop) \ -energyModel $val(en) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace $trace(agent) \ -routerTrace $trace(router) \ -macTrace $trace(mac) \ -rxPower 0.024 \ -txPower 0.036 \ -initialEnergy $iniEnergy \ -movementTrace $trace(movement) set node_($contador_nodos) [$ns_ node] $node_($contador_nodos) random-motion 0 # set x [$rng uniform 0.0 $val(x)] # set y [$rng uniform 0.0 $val(y)] # set bla [expr int(sqrt($val(nn)))]# set x [expr (($contador_nodos) % $bla) * $val(x) / ($bla - 1)]# set y [expr (($contador_nodos) / $bla) * $val(y) / ($bla - 1)] $node_($contador_nodos) set X_ $x $node_($contador_nodos) set Y_ $y $node_($contador_nodos) set Z_ $z puts "* Cluster head [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)" set udp_($contador_nodos) [new Agent/UDP] set app_($contador_nodos) [create_cluster_head_app $father_addr $val(disseminating_type) $val(disseminating_interval)] $node_($contador_nodos) attach $udp_($contador_nodos) $val(port) $node_($contador_nodos) add-app $app_($contador_nodos) #CN# set processing_($contador_nodos) [new $val(processing)] $app_($contador_nodos) node $node_($contador_nodos) $app_($contador_nodos) attach-agent $udp_($contador_nodos) #CN# $app_($contador_nodos) attach-processing $processing_($contador_nodos) $processing_($contador_nodos) node $node_($contador_nodos) for { set i 0 } { $i < [llength $start] } { incr i } { $ns_ at $start "$app_($contador_nodos) start" } for { set i 0 } { $i < [llength $stop] } { incr i } { $ns_ at $stop "$app_($contador_nodos) stop" } #CN# set gen_($contador_nodos) $val(data_generator)#CN# $app_($contador_nodos) attach_data_generator $gen_($contador_nodos) incr contador_nodos } proc create_access_point { iniEnergy x y z start stop} { global ns_ val node_ app_ udp_ contador_nodos topo trace rng if { [llength $start] == 0 } { set start [expr $val(start) + [$rng uniform 0 1]] set stop $val(stop) } $ns_ node-config -sensorNode ON \ -adhocRouting $val(rp) \ -llType $val(ll) \ -macType $val(mac) \ -ifqType $val(ifq) \ -ifqLen $val(ifqlen) \ -antType $val(antenna) \ -propType $val(prop) \ -energyModel $val(en) \ -phyType $val(netif) \ -channelType $val(chan) \ -topoInstance $topo \ -agentTrace $trace(agent) \ -routerTrace $trace(router) \ -macTrace $trace(mac) \ -rxPower 0.5 \ -txPower 0.5 \ -initialEnergy $iniEnergy \ -movementTrace $trace(movement) set node_($contador_nodos) [$ns_ node] $node_($contador_nodos) random-motion 0 set app_($contador_nodos) [create_access_point_app [$node_(0) node-addr]] if { $val(leach) == 1 } { set agent [new Agent/RCAgent/LeachAgent] $agent set sport_ 0 $agent set dport_ 0 $node_($contador_nodos) attach $agent 0 $app_($contador_nodos) attach-agent $agent $agent add-ll [$node_($contador_nodos) set ll_(0)] [$node_($contador_nodos) set mac_(0)] } else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -