Network ieee802154a

Package: org.mixim.examples.ieee802154a
File: examples/ieee802154a/ieee802154a.ned

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.

BaseWorldUtility ConnectionManager Host802154A

Usage diagram:

The following diagram shows usage relationships between types. Unresolved types are missing from the diagram. Click here to see the full picture.

Inheritance diagram:

The following diagram shows inheritance relationships for this type. Unresolved types are missing from the diagram. Click here to see the full picture.

Parameters:

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

Properties:

Name Value Description
isNetwork
display bgb=$playgroundSizeX,$playgroundSizeY,white,,;bgp=10,50

Unassigned submodule parameters:

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

Source code:

//
//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

}