This example illustrates the use of the IEEE 802.15.4A UWB-IR simulation model implemented in MiXiM. The omnetpp.ini files comprises two scenarios. Both scenarios involve only two hosts.
The first scenario, named BERDistance, configures one host to sends (\$nbPackets) packets to the other. The distance (\$distance) between the two nodes is changed at each run. This is performed for two channel models (Ghassemzadeh-LOS and NLOS) so that the difference between a Line of Sight and a Non Line of Sight environment can be seen.
The second scenario is simpler. It only sends one packet at each time, and iterates over five channel models: Ghassemzadeh-LOS, Ghassemzadeh-NLOS, CM1, CM2 and CM5. It allows to see the simulator representation of the maximum pulse amplitude over time, as modified by the various channel models.
To run the scenarios, compile mixim, open a terminal and go to examples/ieee80154a. There, type: ./runBERDistance.sh to execute all runs of the Bit Error Rate over Distance scenario. The "run" script expects to find opp_run in the path. Thus, make sure to have \$OMNET_PATH/bin in your path.
You can also try: ./runChannelPlots.sh to execute all runs of the channelPlots scenario.
The results can be analyzed from within Omnet++. In the examples/ieee802154a directory, open the files BERDistance.anf or channelPlots.anf (depending on the scenario that you ran before). At the bottom of the window, switch from the Inputs tab to the Datasets tab. In the BERDistance.anf file, you will find a "scatter chart BER_Distance" item. Double-click on it to generate the graph.
In the channelPlots.anf file, there are several graphs. Opening "line chart Ghassemzadeh LOS" will show the packet as modified by the Ghassemzadeh LOS channel model. Compare it with "line chart CM2" to see the impact of the Power Delay Profile. By default, the view does not allow to see the pulse shapes, because of the ultra short duration (2 ns per pulse). Zoom repeatedly until you see a triangular shape, by holding down the "Ctrl" touch and drawing a zoom box with the mouse around the area to enlarge.
For more information, please refer to: * the Omnet++ documentation at www.omnetpp.org/documentation and the user guide. * the MiXiM documentation * UWB-IR NED modules documentation and source code.
Questions should be send to the Omnet++ mailing-list: omnetpp@googlegroups.com.
acknowledgment
The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.
The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.
| Name | Type | Default value | Description |
|---|---|---|---|
| playgroundSizeX | double |
x size of the area the nodes are in (in meters) |
|
| playgroundSizeY | double |
y size of the area the nodes are in (in meters) |
|
| playgroundSizeZ | double |
z size of the area the nodes are in (in meters) |
|
| numHosts | double |
total number of hosts in the network |
| Name | Value | Description |
|---|---|---|
| isNetwork | ||
| display | bgb=$playgroundSizeX,$playgroundSizeY,white,,;bgp=10,50 |
| Name | Type | Default value | Description |
|---|---|---|---|
| world.coreDebug | bool |
debug switch for the base framework |
|
| world.useTorus | bool |
use the playground as torus? |
|
| world.use2D | bool |
use a 2-dimensional world? |
|
| channelControl.coreDebug | bool |
debug switch for core framework |
|
| channelControl.sendDirect | bool |
send directly to the node or create separate gates for every connection |
|
| channelControl.pMax | double |
maximum sending power used for this network [mW] |
|
| channelControl.sat | double |
minimum signal attenuation threshold [dBm] |
|
| channelControl.alpha | double |
minimum path loss coefficient |
|
| channelControl.carrierFrequency | double |
minimum carrier frequency of the channel [Hz] |
|
| channelControl.drawMaxIntfDist | bool | false |
should the maximum interference distance be displayed for each node? |
| node.utility.coreDebug | bool |
debug switch for the base framework |
|
| node.batteryStats.debug | bool |
write per-activity and per-device statistics to omnetpp.sca (if false, only total energy and lifetime are written) |
|
| node.batteryStats.detail | bool |
subscribe to battery status and record time series data in omnetpp.vec (resolution depends on battery's publishDelta) |
|
| node.batteryStats.timeSeries | bool | ||
| node.battery.debug | bool | ||
| node.battery.nominal | double |
nominal battery capacity |
|
| node.battery.capacity | double |
battery capacity |
|
| node.battery.voltage | double |
nominal voltage |
|
| node.battery.resolution | double |
capacity is updated at least every resolution time |
|
| node.battery.publishDelta | double |
if > 0, capacity is published to the BB each publishTime interval |
|
| node.battery.publishTime | double |
number of modules that will draw energy from the battery |
|
| node.battery.numDevices | int | ||
| node.mobility.coreDebug | bool |
debug switch for the core framework |
|
| node.mobility.x | double |
x coordinate of the nodes' position (-1 = random) |
|
| node.mobility.y | double |
y coordinate of the nodes' position (-1 = random) |
|
| node.mobility.z | double |
z coordinate of the nodes' position (-1 = random) |
|
| node.nic.phy.coreDebug | bool |
debug switch for core framework |
|
| node.nic.phy.recordStats | bool | false |
enable/disable tracking of statistics (eg. cOutvectors) |
| node.nic.phy.headerLength | int | 0 |
defines the length of the phy header (/preamble) |
| node.nic.phy.usePropagationDelay | bool |
Should transmission delay be simulated? |
|
| node.nic.phy.thermalNoise | double |
the strength of the thermal noise [dBm] |
|
| node.nic.phy.useThermalNoise | bool |
should thermal noise be considered? |
|
| node.nic.phy.analogueModels | xml |
Specification of the analogue models to use and their parameters |
|
| node.nic.phy.decider | xml |
Specification of the decider to use and its parameters |
|
| node.nic.phy.sensitivity | double |
The sensitivity of the physical layer [dBm] |
|
| node.nic.phy.maxTXPower | double |
The maximum transimission power of the physical layer [mW] |
|
| node.nic.phy.timeRXToTX | double | 0 |
switchTimes [s]: |
| node.nic.phy.timeRXToSleep | double | 0 | |
| node.nic.phy.timeTXToRX | double | 0 | |
| node.nic.phy.timeTXToSleep | double | 0 | |
| node.nic.phy.timeSleepToRX | double | 0 | |
| node.nic.phy.timeSleepToTX | double | 0 | |
| node.nic.phy.radioMinAtt | double | 1.0 |
radios gain factor (attenuation) while receiving |
| node.nic.phy.radioMaxAtt | double | 0.0 |
radios gain factor (attenuation) while not receiving |
| node.nic.phy.nbRadioChannels | int | 1 |
Number of available radio channels. Defaults to single channel radio. |
| node.nic.phy.initialRadioChannel | int | 0 |
Initial radio channel. |
| node.nic.mac.notAffectedByHostState | bool | false | |
| node.nic.mac.coreDebug | bool |
debug switch |
|
| node.nic.mac.headerLength | double |
length of the MAC packet header (in bits) |
|
| node.nic.mac.debug | bool | false |
debug switch |
| node.nic.mac.stats | bool | true | |
| node.nic.mac.trace | bool | false | |
| node.nic.mac.RSDecoder | bool | true | |
| node.nic.mac.packetsAlwaysValid | bool | false | |
| node.nic.mac.PRF | int | 4 |
Pulse repetition frequency, either 4 or 16 MHz currently |
| node.nic.mac.minBE | int | 3 |
min backoff exponent |
| node.nic.mac.maxBE | int | 8 |
max backoff exponent |
| node.net.notAffectedByHostState | bool | false | |
| node.net.coreDebug | bool |
debug switch for core framework |
|
| node.net.stats | bool | true |
stats switch |
| node.net.headerLength | double | 0 |
length of the network packet header (in bits) |
| node.net.trace | bool | false |
debug switch |
| node.net.networkID | int | 0 |
network ID, allows coexistence tests |
| node.arp.coreDebug | bool |
debug switch for the core framework |
|
| node.arp.debug | bool | false |
enable debugging for this module |
| node.arp.offset | int | 0 |
Adds an offset to node addresses |
| node.app.debug | bool |
debug switch |
|
| node.app.stats | bool |
stats switch |
|
| node.app.trace | bool |
trace switch |
|
| node.app.trafficParam | double |
mean time between packets (poisson arrival rate) |
|
| node.app.nodeAddr | double |
node address |
|
| node.app.dstAddr | double |
packet destination node address |
|
| node.app.flood | bool |
send packets continuously |
|
| node.app.payloadSize | double |
number of bytes per packet |
|
| node.app.nbPackets | double |
number of packets to generate |
// //This example illustrates the use of the IEEE 802.15.4A UWB-IR //simulation model implemented in MiXiM. //The omnetpp.ini files comprises two scenarios. Both scenarios //involve only two hosts. // //The first scenario, named BERDistance, configures one host to //sends ($nbPackets) packets to the other. The distance ($distance) //between the two nodes is changed at each run. This is performed //for two channel models (Ghassemzadeh-LOS and NLOS) so that the //difference between a Line of Sight and a Non Line of Sight //environment can be seen. // //The second scenario is simpler. It only sends one packet at each //time, and iterates over five channel models: Ghassemzadeh-LOS, //Ghassemzadeh-NLOS, CM1, CM2 and CM5. //It allows to see the simulator representation of the maximum //pulse amplitude over time, as modified by the various channel //models. // //To run the scenarios, compile mixim, open a terminal and go to //examples/ieee80154a. There, type: //./runBERDistance.sh //to execute all runs of the Bit Error Rate over Distance scenario. //The "run" script expects to find opp_run in the path. Thus, make sure //to have $OMNET_PATH/bin in your path. // //You can also try: //./runChannelPlots.sh //to execute all runs of the channelPlots scenario. // //The results can be analyzed from within Omnet++. In the //examples/ieee802154a directory, open the files BERDistance.anf //or channelPlots.anf (depending on the scenario that you ran before). //At the bottom of the window, switch from the Inputs tab to the Datasets //tab. In the BERDistance.anf file, you will find a "scatter chart BER_Distance" //item. Double-click on it to generate the graph. // //In the channelPlots.anf file, there are several graphs. Opening //"line chart Ghassemzadeh LOS" will show the packet as modified by the //Ghassemzadeh LOS channel model. Compare it with "line chart CM2" to see //the impact of the Power Delay Profile. By default, the view does not allow //to see the pulse shapes, because of the ultra short duration (2 ns per pulse). //Zoom repeatedly until you see a triangular shape, by holding down the "Ctrl" //touch and drawing a zoom box with the mouse around the area to enlarge. // //For more information, please refer to: //* the Omnet++ documentation at www.omnetpp.org/documentation and the user guide. //* the MiXiM documentation //* UWB-IR NED modules documentation and source code. // //Questions should be send to the Omnet++ mailing-list: omnetpp@googlegroups.com. // //acknowledgment //-------------- //this work was supported (in part) by the National Competence //Center in Research on Mobile Information and Communication Systems //NCCR-MICS, a center supported by the Swiss National Science //Foundation under grant number 5005-67322. // network ieee802154a { parameters: double playgroundSizeX @unit(m); // x size of the area the nodes are in (in meters) double playgroundSizeY @unit(m); // y size of the area the nodes are in (in meters) double playgroundSizeZ @unit(m); // z size of the area the nodes are in (in meters) double numHosts; // total number of hosts in the network @display("bgb=$playgroundSizeX,$playgroundSizeY,white,,;bgp=10,50"); submodules: world: BaseWorldUtility { parameters: playgroundSizeX = playgroundSizeX; playgroundSizeY = playgroundSizeY; playgroundSizeZ = playgroundSizeZ; @display("p=250,0;i=misc/globe"); } channelControl: ConnectionManager { parameters: @display("p=450,0;b=42,42,rect,red,,;i=abstract/multicast"); } node[numHosts]: Host802154A { parameters: numHosts = numHosts; @display("p=50,50;b=42,42,rect,red,,;i=device/wifilaptop"); } connections allowunconnected: // all connections and gates are to be generated dynamically }