• 无线传感器网络 与 OMNET++学习笔记(二) NED


    OMNET++的主要模型拓扑描述语言NED,采用它可以完成一个网络模型的描述。 网络描述包括下列组件:输入申明、信道定义、网络定义、简单模块和复合模块定义。使用NED描述网络,产生NED文件,该文件不能直接被C++编译器使用,需要首先采用OMNET++提供的编译工具NEDC将.NED文件编译成.cpp文件。最后,使用C++编译器将这些文件与用户和自己设计的简单模块程序连接成可执行程序。

    Ned描述的组件

    输入指示:用于引进其它网络描述文件,引进一个网络描述后,可以使用它所包含的模块通道等组件

    import inet.networklayer.configurator.ipv4.HostAutoConfigurator;
    import inet.node.inet.AdhocHost;

    信道定义

      • ned.IdealChannel(理想情况下)
      • ned.DelayChannel(参数delay,disabled 默认flase, =true时信道丢弃所有消息
      • ned.DatarateChannel(参数)
        • datarate信道带宽,单位bit/s,kbit/s,Gbit/s。0值表示无限带宽,传输时间为0
        • delay
        • disabled
        • ber误比特率/per误分组率 (double)取值[0,1]默认值0。(基于随机数的信道判定,在分组传世发生错误时,通过分组内设置错误标记,接收模块检查标记。若被标记,丢弃)
    channel CustomChannel extends ned.DatarateChannel{
        delay = 100us ;
        ber  = 1e-10;    
        datarate = 100Mbps ;
    }

    也可以不使用extends也可以直接定义信道,但是需要一个对应的C++的类。

    简单模块和复合模块定义

    简单模块:

    simple Processor{
        parameters:
                double  av ;
            .... gates:
          input in[];
          output out[];
          inout port[];
    }

    复合模块:

    module BinaryTree{
      parameters:
        int count ; gates: submodules:
        node[count] :Node{ //Node也是一个定义的简单模块
           parameters:  
               information = "node"
        }
        connections allowunconnected:
    
    }

     网络定义

    network Net6 extends  BinaryTree{
       parameters:
        count
    = 10;
        ....
    }

    函数

    在NED表达式中,可以使用以下数学函数:

    (1)C语言中<math.h>库函数:exp( ),log( ),cos( ),floor( ),ceil( )等等。

    (2)产生随机变量的函数:uniform, exponential, normal等等。

    (3)使用自己定义,在c++文件中定义函数,然后再NED中使用。

    • C++文件
    #include <omnetpp.h>
    
    double average (double a ,double b){
        return (a+b)/2;
    }
    Define_ Function (average, 2);
    • NED文件
    module Compound{
        parameters: 
            double a;
            double b;
        submodules:
            proc: Processor{    //前面定义的简单模块
                parameters:
                    av = avreage(a,b);
            }
    }
  • 相关阅读:
    2019牛客暑期多校训练营(第六场)
    2019牛客暑期多校训练营(第五场)
    CCPC-Wannafly Summer Camp 2019 全记录
    2018CCPC吉林赛区 | 部分题解 (HDU6555 HDU6556 HDU6559 HDU6561)
    2006-2007 ACM-ICPC | POJ3380 POJ3384 POJ3385 水题题解
    数论专场 Day9 部分题解
    Catenyms (POJ2337) 字典序最小欧拉路
    2019暑训第一场训练赛 |(2016-icpc区域赛)部分题解
    哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(高年级)B 小乐乐搭积木 (状态压缩)
    牛客练习赛32B Xor Path (树形dp)
  • 原文地址:https://www.cnblogs.com/codinghard/p/11081616.html
Copyright © 2020-2023  润新知