NS 2.29中遇到了无法解决的错误,邀请有识之士共同探讨!!!

调试后出现的错误如下:

invalid command name "Node/MobileNode/SensorNode"
while executing
"Node/MobileNode/SensorNode set sensingPower_ 0.015"
(procedure "setup_mica2" line 18)
invoked from within
"setup_mica2 $val(antenna) $val(range)"
(procedure "set_default_settings" line 29)
invoked from within
"set_default_settings"
(file "first.tcl" line 493)

部分代码如下:
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 Directed_Diffusion \
-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 {
set udp_($contador_nodos) [new Agent/UDP]
$node_($contador_nodos) attach $udp_($contador_nodos) $val(port)
$app_($contador_nodos) attach-agent $udp_($contador_nodos)
}
$node_($contador_nodos) set X_ $x
$node_($contador_nodos) set Y_ $y
$node_($contador_nodos) set Z_ $z

puts "* Access point [$node_($contador_nodos) node-addr] = $contador_nodos created in ($x, $y, $z)"

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"
}

incr contador_nodos

}

###
# Grid distribution.

proc get_next_x {} {

global val

set aux [expr int(sqrt($val(nn)))]

return [expr (($contador_nodos) % $aux) * $val(x) / ($aux - 1)]

}

proc get_next_y {} {

global val

set aux [expr int(sqrt($val(nn)))]

return [expr (($contador_nodos) / $aux) * $val(y) / ($aux - 1)]

}

####
# Calculating the receiving threshold (RXThresh_ for Phy/Wireless)
# Wei Ye, weiye@isi.edu, 2000

proc Friis { Pt Gt Gr lambda L d} {
set M [expr $lambda / (4 * 3.14159265359 * $d)]
return [expr ($Pt * $Gt * $Gr * ($M * $M)) / $L]
}

proc TwoRay { Pt Gt Gr ht hr L d lambda } {
set crossover_dist [expr (4 * 3.14159265359 * $ht * $hr) / $lambda]

if { $d < $crossover_dist } {
return [Friis $Pt $Gt $Gr $lambda $L $d]
} else {
return [expr $Pt * $Gt * $Gr * ($hr * $hr * $ht * $ht) / ($d * $d * $d * $d * $L)]
}
}

###

proc set_default_settings {} {

global val

请问您,怎么解决?拜谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值