2017-02-22 62 views
0

我正在使用OMNet ++來模擬無線網絡。代碼如下:OMNet ++將數據包從一個節點發送到另一個節點並記錄發送的數據包和能耗如圖

NED文件

import inet.common.figures.DelegateSignalConfigurator; 
import inet.networklayer.configurator.ipv4.IPv4NetworkConfigurator; 
import inet.node.inet.INetworkNode; 
import inet.physicallayer.contract.packetlevel.IRadioMedium; 
import inet.visualizer.integrated.IntegratedCanvasVisualizer; 

network WirelessA 
{ 
    parameters: 
     string hostType = default("WirelessHost"); 
     string mediumType = default("IdealRadioMedium"); 
     @display("bgb=2500,2500;bgg=100,1,grey95"); 
     @figure[title](type=label; pos=0,-1; anchor=sw; color=darkblue); 
     @figure[rcvdPkText](type=indicatorText; pos=900,50; anchor=w; font=,50; textFormat="Packets Received: %g"; initialValue=0); 
     //@statistic[rcvdPk](source=hostB_rcvdPk; record=figure(count); targetFigure=rcvdPkText); 
     //@signal[hostB_rcvdPk]; 
     //@delegatesignal[rcvdPk](source=hostB.udpApp[0].rcvdPk; target=hostB_rcvdPk); 
    submodules: 
     visualizer: IntegratedCanvasVisualizer { 
      @display("p=2400,50"); 
     } 
     configurator: IPv4NetworkConfigurator { 
      @display("p=2400,250"); 
     } 
     radioMedium: <mediumType> like IRadioMedium { 
      @display("p=2400,450"); 
     } 
     figureHelper: DelegateSignalConfigurator { 
      @display("p=2400,650"); 
     } 
     BaseStation: <hostType> like INetworkNode { 
      @display("p=1200,1200;i=device/antennatower"); 
     } 
     SubStationA: <hostType> like INetworkNode { 
      @display("p=600,650;i=device/receiverdish"); 
     } 
     SubStationB: <hostType> like INetworkNode { 
      @display("p=1750,600;i=device/receiverdish"); 
     } 
     SubStationC: <hostType> like INetworkNode { 
      @display("p=1700,1700;i=device/receiverdish"); 
     } 
     SubStationD: <hostType> like INetworkNode { 
      @display("p=650,1750;i=device/receiverdish"); 
     } 
     SensorNodeA1: <hostType> like INetworkNode { 
      @display("p=875,900;i=device/device"); 
     } 
     SensorNodeA2: <hostType> like INetworkNode { 
      @display("p=425,975;i=device/device"); 
     } 
     SensorNodeA3: <hostType> like INetworkNode { 
      @display("p=225,625;i=device/device"); 
     } 
     SensorNodeA4: <hostType> like INetworkNode { 
      @display("p=475,275;i=device/device"); 
     } 
     SensorNodeA5: <hostType> like INetworkNode { 
      @display("p=875,450;i=device/device"); 
     } 
     SensorNodeB1: <hostType> like INetworkNode { 
      @display("p=1875,300;i=device/device"); 
     } 
     SensorNodeB2: <hostType> like INetworkNode { 
      @display("p=1450,425;i=device/device"); 
     } 
     SensorNodeB3: <hostType> like INetworkNode { 
      @display("p=1475,850;i=device/device"); 
     } 
     SensorNodeB4: <hostType> like INetworkNode { 
      @display("p=1925,925;i=device/device"); 
     } 
     SensorNodeB5: <hostType> like INetworkNode { 
      @display("p=2100,575;i=device/device"); 
     } 
     SensorNodeC1: <hostType> like INetworkNode { 
      @display("p=1425,1950;i=device/device"); 
     } 
     SensorNodeC2: <hostType> like INetworkNode { 
      @display("p=1450,1500;i=device/device"); 
     } 
     SensorNodeC3: <hostType> like INetworkNode { 
      @display("p=1875,2075;i=device/device"); 
     } 
     SensorNodeC4: <hostType> like INetworkNode { 
      @display("p=2100,1750;i=device/device"); 
     } 
     SensorNodeC5: <hostType> like INetworkNode { 
      @display("p=1900,1400;i=device/device"); 
     } 
     SensorNodeD1: <hostType> like INetworkNode { 
      @display("p=800,2075;i=device/device"); 
     } 
     SensorNodeD2: <hostType> like INetworkNode { 
      @display("p=1000,1700;i=device/device"); 
     } 
     SensorNodeD3: <hostType> like INetworkNode { 
      @display("p=650,1450;i=device/device"); 
     } 
     SensorNodeD4: <hostType> like INetworkNode { 
      @display("p=350,2050;i=device/device"); 
     } 
     SensorNodeD5: <hostType> like INetworkNode { 
      @display("p=275,1625;i=device/device"); 
     } 
} 

INI文件

[Config Wireless01] 
description = Militart Based WSN Model 
network = WirelessA 
sim-time-limit = 5s 

*.BaseStation.networkLayer.arpType = "GlobalARP" 
*.SubStation*.networkLayer.arpType = "GlobalARP" 
*.SensorNode**.networkLayer.arpType = "GlobalARP" 

*.BaseStation.wlan[0].typename = "WirelessNic" 
*.BaseStation.wlan[0].radioType = "IdealRadio" 
*.BaseStation.wlan[0].macType = "CsmaCaMac" 
*.BaseStation.wlan[0].mac.useAck = true 
#*.BaseStation.wlan[0].mac.fullDuplex = false 
*.BaseStation.wlan[0].radio.transmitter.communicationRange = 1300m 
*.BaseStation.wlan[0].radio.receiver.ignoreInterference = true 
*.BaseStation.wlan[0].radio.displayCommunicationRange = true 
*.BaseStation.**.bitrate = 10Mbps 
*.BaseStation.wlan[0].radio.energyConsumerType = "StateBasedEnergyConsumer" 
*.BaseStation.wlan[0].radio.energyConsumer.offPowerConsumption = -1mW 
*.BaseStation.wlan[0].radio.energyConsumer.sleepPowerConsumption = 0mW 
*.BaseStation.wlan[0].radio.energyConsumer.switchingPowerConsumption = 1mW 
*.BaseStation.wlan[0].radio.energyConsumer.receiverIdlePowerConsumption = 2mW 
*.BaseStation.wlan[0].radio.energyConsumer.receiverBusyPowerConsumption = 5mW 
*.BaseStation.wlan[0].radio.energyConsumer.receiverReceivingPowerConsumption = 10mW 
*.BaseStation.wlan[0].radio.energyConsumer.transmitterIdlePowerConsumption = 2mW 
*.BaseStation.wlan[0].radio.energyConsumer.transmitterTransmittingPowerConsumption = 100mW 
*.BaseStation.energyStorageType = "IdealEnergyStorage" 

*.SubStation*.wlan[0].typename = "WirelessNic" 
*.SubStation*.wlan[0].radioType = "IdealRadio" 
*.SubStation*.wlan[0].macType = "CsmaCaMac" 
*.SubStation*.wlan[0].mac.useAck = true 
#*.SubStation*.wlan[0].mac.fullDuplex = true 
*.SubStation*.wlan[0].radio.transmitter.communicationRange = 600m 
*.SubStation*.wlan[0].radio.receiver.ignoreInterference = true 
*.SubStation*.wlan[0].radio.displayCommunicationRange = true 
*.SubStation*.**.bitrate = 5Mbps 
*.SubStation*.wlan[0].radio.energyConsumerType = "StateBasedEnergyConsumer" 
*.SubStation*.wlan[0].radio.energyConsumer.offPowerConsumption = -1mW 
*.SubStation*.wlan[0].radio.energyConsumer.sleepPowerConsumption = 0mW 
*.SubStation*.wlan[0].radio.energyConsumer.switchingPowerConsumption = 1mW 
*.SubStation*.wlan[0].radio.energyConsumer.receiverIdlePowerConsumption = 2mW 
*.SubStation*.wlan[0].radio.energyConsumer.receiverBusyPowerConsumption = 5mW 
*.SubStation*.wlan[0].radio.energyConsumer.receiverReceivingPowerConsumption = 10mW 
*.SubStation*.wlan[0].radio.energyConsumer.transmitterIdlePowerConsumption = 2mW 
*.SubStation*.wlan[0].radio.energyConsumer.transmitterTransmittingPowerConsumption = 100mW 
*.SubStation*.energyStorageType = "IdealEnergyStorage" 

*.SensorNode**.wlan[0].typename = "WirelessNic" 
*.SensorNode**.wlan[0].radioType = "IdealRadio" 
*.SensorNode**.wlan[0].macType = "CsmaCaMac" 
*.SensorNode**.wlan[0].mac.useAck = true 
#*.SensorNode**.wlan[0].mac.fullDuplex = true 
*.SensorNode**.wlan[0].radio.transmitter.communicationRange = 250m 
*.SensorNode**.wlan[0].radio.displayCommunicationRange = true 
*.SensorNode**.wlan[0].radio.receiver.ignoreInterference = true 
*.SensorNode**.**.bitrate = 1Mbps 
*.SensorNode**.wlan[0].radio.energyConsumerType = "StateBasedEnergyConsumer" 
*.SensorNode**.wlan[0].radio.energyConsumer.offPowerConsumption = -1mW 
*.SensorNode**.wlan[0].radio.energyConsumer.sleepPowerConsumption = 0mW 
*.SensorNode**.wlan[0].radio.energyConsumer.switchingPowerConsumption = 1mW 
*.SensorNode**.wlan[0].radio.energyConsumer.receiverIdlePowerConsumption = 2mW 
*.SensorNode**.wlan[0].radio.energyConsumer.receiverBusyPowerConsumption = 5mW 
*.SensorNode**.wlan[0].radio.energyConsumer.receiverReceivingPowerConsumption = 10mW 
*.SensorNode**.wlan[0].radio.energyConsumer.transmitterIdlePowerConsumption = 2mW 
*.SensorNode**.wlan[0].radio.energyConsumer.transmitterTransmittingPowerConsumption = 100mW 
*.SensorNode**.energyStorageType = "IdealEnergyStorage" 

*.configurator.addStaticRoutes = false 
*.hostType = "AODVRouter" 
*.visualizer.dataLinkVisualizer.packetNameFilter = "AODV*" 
*.visualizer.mediumVisualizer.displaySignals = true 

*.SensorNodeA1.numUdpApps = 1 
*.SensorNodeA1.udpApp[0].typename = "UDPBasicApp" 
*.SensorNodeA1.udpApp[0].destAddresses = "SubStationA" 
*.SensorNodeA1.udpApp[0].destPort = 5000 
*.SensorNodeA1.udpApp[0].messageLength = 1000B 
*.SensorNodeA1.udpApp[0].sendInterval = exponential(12ms) 
*.SensorNodeA1.udpApp[0].packetName = "UDPData" 
*.SubStationA.numUdpApps = 1 
*.SubStationA.udpApp[0].typename = "UDPSink" 
*.SubStationA.udpApp[0].localPort = 5000 

這裏是越來越創建的網絡,但是當我試圖從SensorNodeA1發送一個數據包到SubStationA,在仿真過程中,數據包從SensorNodeA1發送到所有節點。我應該怎麼做才能將數據包從一個節點發送到另一個節點?此外,我想記錄,然後繪製隨時間發送的數據包的圖形和每個節點的能量消耗。我還是OMNet ++的新手,所以如果有人能指導我,這將是有益的

回答

1

你知道在無線場景中,無線媒體上總是會「傳播」一條消息,因此消息會傳送到無線電範圍內的所有接收器。 根據您的無線電廣播媒體型號,它也可能會發送到干擾範圍內的接收機來計算干擾級別。 無線上沒有「單播」,它是一個共享媒體,如果每個人都在同一頻率上,知道調製方式等,每個人都可以接收所有內容。

「單播」或「多播」只能在更高的水平,例如通過尋址,就像你用目的地址「SubStationA」一樣。 檢查接收數據包的其他節點的輸出是否真的在其應用層上接收到數據包,或者是否由於目標地址不同而丟棄在MAC層? 然後,如果使用某種轉發或路由協議,節點可能會轉發數據包...

至於統計記錄,請檢查OMNeT manual有關此複雜部分的信息。

大多數現有的INET仿真模型都包含各種統計信息,因此一旦啓用了所需的統計信息(通過omnetpp.ini文件),就可以檢出創建的結果文件(標量或向量,具體取決於類型您要記錄的數據 - 再次check the OMNeT simulation manual),並使用附帶的分析工具來過濾數據並打印圖形。

如果您的統計信息尚未包含在內,則可以手動添加它們,但這並不複雜。根據您的代碼,我想您已經查看了INET無線教程 - 第8步 - 建模無線消耗(https://omnetpp.org/doc/inet/api-current/tutorials/wireless/step8.html),所以只需按照教程,也可以添加有關統計信息的TicTocTutorial部分(https://omnetpp.org/doc/omnetpp/tictoc-tutorial/part4.html)。

相關問題