zoukankan      html  css  js  c++  java
  • 无线传感器网络 与 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);
            }
    }
  • 相关阅读:
    在虚拟机VM中安装的Ubuntu上安装和配置Hadoop
    初识Hadoop
    Hold住:坚持的智慧
    《人生若只如初见》读后感
    EAS部署:linux 下安装EAS后启动不了服务
    修改Tomcat默认端口
    IntelliJ IDEA工具使用总结
    Mac OSX 包管理工具
    Mac 下安装、卸载Java 7
    MySQL快速命令
  • 原文地址:https://www.cnblogs.com/codinghard/p/11081616.html
Copyright © 2011-2022 走看看