微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Inet4.0 在 Omnet++ (5.6.2) 上模拟 Zigbee 协议?

如何解决如何使用 Inet4.0 在 Omnet++ (5.6.2) 上模拟 Zigbee 协议?

简介

我正在尝试在空中网络中模拟一个简单的 zigbee 通信。 Omnet++ 已经有一个仅定义物理层和 MAC 层的 IEEE 802.15.4 标准示例。我认为为了创建 Zigbee 网络,我应该定义网络层和应用层。

问题陈述

话虽如此,我目前正在修改 IEEE 802.15.4 代码我有一个协调器、路由器和一个终端设备。我希望(协调器和路由器)和(路由器和终端设备)相互交换数据包(双向)。我得到的结果不是我所期望的。

Packets information

communication

Communication

Communication

我认为我的可视化代码和 xml 星形拓扑文件有问题。我是 omnet++ 的新手,所以我不太确定我应该如何解决这个问题。

代码

.ned 文件

package zigbee_test.simulations.zigbee_attempt;

import inet.networklayer.configurator.ipv4.Ipv4NetworkConfigurator;
import inet.physicallayer.ieee802154.packetlevel.Ieee802154NarrowbandScalarRadioMedium;  //All wireless simulations in INET need a radio medium module. This module represents the shared physical medium where communication takes place. 
import inet.node.ethernet.Eth100M;                                                      //It is responsible for taking signal propagation,attenuation,interference,and other physical phenomena into account.
import inet.physicallayer.apskradio.packetlevel.ApskScalarRadioMedium;
import inet.physicallayer.ieee802154.bitlevel.Ieee802154UwbIrRadioMedium;
import inet.node.inet.SensorNode;
import inet.node.inet.StandardHost;
import inet.node.inet.WirelessHost;
import inet.visualizer.integrated.IntegratedCanvasVisualizer;
import inet.visualizer.integrated.IntegratedMultiVisualizer;
import inet.visualizer.integrated.IntegratedVisualizer;

//
// Todo auto-generated type
//
network Zigbee
{
    parameters:
        @display("bgb=600,600");

    //gates:
        //inout port[];
    submodules:
        configurator: Ipv4NetworkConfigurator {  //assigns IP address to all nodes
            @display("p=526.688,164.288");
        }
        radioMedium: Ieee802154NarrowbandScalarRadioMedium {   //it is the shared physical medium
            @display("p=509.776,33.824");
        }
        coordinator: SensorNode {    //SensorNode is suited for 802.11 but can be changed to 802.15 in ini file
            @display("p=405.888,446.96;i=misc/sensor;is=l");
        }
        router: SensorNode {
            @display("p=216.232,283.88;i=misc/sensor;is=l");
        }
        enddevice: SensorNode {
            @display("p=134.088,247.64;i=misc/drone;is=l");
        }

        visualizer: IntegratedMultiVisualizer {
            @display("p=509.776,91.808");
        }

        //visualizer: IntegratedCanvasVisualizer {
            //@display("p=498.904,64.024");
        //}
    //connections:
        //coordinator.port++ <--> {datarate=100Mbps;} <--> router.port++;

}

.ini 文件

[Config Zigbee]
description = Simple sim with a coordinator,router and end device communicating with zigbee protocol
network = Zigbee
sim-time-limit = 40s


**.arp.typename = "GlobalArp"   #Global address resolution (ipv4 or ipv6)
**.netmaskRoutes = ""   #keeps the routing table modules from adding netmask routes to the routing tables. Netmask routes mean that nodes with the same netmask but 
                        #different IP addresses should reach each other directly. These routes are also added by the configurator,so netmaskRoutes is turned off to avoid duplicate routes.
*.radioMedium.backgroundNoise.power = -110dBm   
*.configurator.config = xmldoc("startopology.xml")
*.configurator.addStaticRoutes = false   #This is the main switch that turns on automatically filling routing tables. 
                                          #When this setting is turned off,only routes specified in the XML configuration are added,and all the following parameters are ignored.

################################################################# MAC layer ########################################################################################
############ Coordinator Configuration
*.coordinator.numApps = 1  #number of application layers
*.coordinator.app[*].typename = "UdpBasicApp"
*.coordinator.app[*].destAddresses = "router"
*.coordinator.app[*].destPort = 1000
*.coordinator.app[*].sendInterval = 0.125s
*.coordinator.app[*].startTime = exponential(1s)
*.coordinator.app[*].messageLength = 10Byte
*.coordinator.app[*].packetName = "CoordinatorData"

############ Router Configuration
*.router.numApps = 1  #number of application layers
*.router.app[*].typename = "UdpBasicApp"
*.router.app[*].destAddresses = "enddevice coordinator"
*.router.app[*].destPort = 1000
*.router.app[*].sendInterval = 1s
*.router.app[*].startTime = uniform(0s,1s)
*.router.app[*].messageLength = 10Byte
*.router.app[*].packetName = "RouterData"

############ End device Configuration
*.enddevice.numApps = 1  #number of application layers
*.enddevice.app[*].typename = "UdpBasicApp"
*.enddevice.app[*].destAddresses = "router"
*.enddevice.app[*].destPort = 1000
*.enddevice.app[*].sendInterval = 1s
*.enddevice.app[*].startTime = uniform(0s,1s)
*.enddevice.app[*].messageLength = 10Byte
*.enddevice.app[*].packetName = "EnddeviceData"


##############Visualizer Configuration
**.radio.displayCommunicationRange = true

# routing table visualization
*.visualizer.*.routingTableVisualizer[0].displayRoutingTables = false
*.visualizer.*.routingTableVisualizer[0].displayRoutesIndividually = false
*.visualizer.*.routingTableVisualizer[0].lineshift = 0
*.visualizer.*.routingTableVisualizer[0].displayLabels = false

# interface table visualization
*.visualizer.*.interfaceTableVisualizer[0].displayInterfaceTables = false

# data link visualization
*.visualizer.*.numDataLinkVisualizers = 2
*.visualizer.*.dataLinkVisualizer[*].displayLinks = true
*.visualizer.*.dataLinkVisualizer[0].nodeFilter = "coordinator or router"
*.visualizer.*.dataLinkVisualizer[1].*Color = "blue"
*.visualizer.*.dataLinkVisualizer[1].nodeFilter = "router or enddevice"

# statistic visualization
*.visualizer.*.numStatisticVisualizers = 2
*.visualizer.*.statisticVisualizer[*].zIndex = 1

*.visualizer.*.statisticVisualizer[0].displayStatistics = true
*.visualizer.*.statisticVisualizer[0].signalName = "packetSent"
*.visualizer.*.statisticVisualizer[0].statisticExpression = "count"
*.visualizer.*.statisticVisualizer[0].sourceFilter = "**.coordinator.udp **.router.udp **.enddevice.udp"
*.visualizer.*.statisticVisualizer[0].format = "sent: %v pks"

*.visualizer.*.statisticVisualizer[1].displayStatistics = true
*.visualizer.*.statisticVisualizer[1].signalName = "packetReceived"
*.visualizer.*.statisticVisualizer[1].statisticExpression = "count"
*.visualizer.*.statisticVisualizer[1].sourceFilter = "**.coordinator.udp **.router.udp **.enddevice.udp"
*.visualizer.*.statisticVisualizer[1].format = "rcvd: %v pks"

starttopology.xml

<config>
    <interface hosts="coordinator" address="10.0.0.1" netmask="255.255.x.x"/>
    <interface hosts="**" address="10.0.x.x" netmask="255.255.x.x"/>
    <route hosts="coordinator" interface="wlan0" destination="*" gateway="*"/>
    <route hosts="router enddevice*" destination="*" gateway="10.0.0.1"/>
</config>

任何帮助将不胜感激。谢谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。