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);
            }
    }
  • 相关阅读:
    植物大战僵尸英文原版
    2020-5-13递归练习 六人参加竞赛
    2020-5-1递归练习
    java当脚本用。QQ表白轰炸机
    面向实战---VUE项目的文件加载顺序,或者加载流程,以及index.html,main.js,app.vue的区别
    CSS多个view随机分布,不重叠,如何实现呢?
    vite项目才踩坑日志1
    css属性之clip-path
    纯CSS3实现的阳光海鸥沙滩遮阳伞和比基尼美女风景动画效果源码
    TP5 中使用wherein 进行查询,太慢了,怎么优化?
  • 原文地址:https://www.cnblogs.com/codinghard/p/11081616.html
Copyright © 2011-2022 走看看