OPNET Modeler 例程——创建一个移动无线网络

news/2024/5/6 6:28:39/文章来源:https://blog.csdn.net/weixin_42570192/article/details/129693191

文章目录

  • 一、例程概述
  • 二、创建天线模型
  • 三、创建指向处理器
  • 四、创建节点模型
    • 1.发射机节点模型
    • 2.干扰发射机节点模型
    • 3.收信机节点模型
  • 五、创建网络模型
  • 六、收集统计量并运行仿真
  • 七、查看仿真结果
  • 总结


一、例程概述

OPNET 无线模块支持地面和卫星无线系统的构建。在此例程中将构建一个简单的无线网络,它包含一个移动干扰节点和两个固定基站。通过配置运动轨迹,干扰节点可以移动,从而使网络拓扑结构动态地改变,可以观察这种改变对接收信号质量的影响。
移动干扰节点产生的无线噪声干扰使信噪比降低,为了改善网络性能,将采用有向天线来增强网络的抗干扰能力。因此,在该例程中还将用到天线模型编辑器创建一个有向天线模型。最后,通过实验将看到,当基站采用有向天线时,网络的SNR比采用全向天线有明显提高。
在一个基于无线的网络中,干扰将对信噪比产生巨大影响。不同类型的天线,比如定向天线,可以改进一个特定网络的SNR。本例程是构建一个简单的无线网络,该网络具有一个移动干扰节点和两个固定通信节点(发射节点和接收节点),然后显示当固定节点使用全向天线和定向天线时误码率的不同。
无线链路动态存在于无线收发信道对之间,并在仿真时动态建立。本例程中,信息将从一个固定发射机对象转移到一个固定收信机对象,这些对象通过一个无线信道连接,该链路由系统中各组成部分的许多不同的物理特性决定,包括频带、调制类型、发射机功率、距离和天线方向。
该例程的网络模型如下图所示。
在这里插入图片描述
发送节点(tx)在各个方向以相同的强度发送数据。该节点包含一个包生成模块,一个无线发射机模块和一个天线模块。发送节点的模型如下图所示。
在这里插入图片描述
接收节点(rx)测量由固定发射机节点发送的信号质量。该节点包括一个天线模块,一个无线收信机模块,一个收信机处理器模块和一个与定向天线协同工作的附加处理器模块。接收节点的模型如下图所示。
在这里插入图片描述
移动干扰节点(jam)产生无线噪声。干扰器的轨道使得它可以在收信机的无线范围内进进出出,从而增加和减小收信机收到的干扰。移动干扰节点的模型如下图所示。
在这里插入图片描述
通过该例程,将学会使用 OPNET Modeler 创建一个无线网络并在一个动态网络拓扑结构的接收节点处观察由无线噪声引起的接收信号质量的变化;会添加移动节点并定义移动节点轨道;使用天线模型编辑器创建一个定向天线模型。


二、创建天线模型

本例程将创建一个新的天线模型,该天线在一个方向的增益是 200dB,在其他任何方向的增益均为零,这是一个理想的选择性收信机。
在 File——>New 下拉选择 Antenna Pattern,单击 OK 打开天线模型编辑器,如下图所示。
在这里插入图片描述
本例程中使用默认的 theta 分割数,即 72,每隔 5 度一个点。能够用抽样点表示的最大的 theta 值为 355 度,从 0-355 度的所有 theta 值,可以指定增益大约等于 200dB 的抽样点。指定图形面板中的任何两个抽样点,系统都会使用线性内插的增益值设置这两点之间的所有抽样点,因此,只要设置两个抽样点,即 0 度和 355 度点,就可以设置所有的 72 个点。
在项目工作空间中右键选择 Set Phi Plane,在弹出的如下框中选择 5.0 deg。
在这里插入图片描述
设置纵坐标的上界为 201,下界为 199,这时面板会显示新的坐标范围。
将鼠标移动到 200dB 线的最左端的点上,然后单击确定第一个抽样点,将鼠标移动到 200dB 线最右端然后单击确定第二个抽样点,这时所有的介于这两个指定点之间的抽样点都使用线性内插增益值自动设置,然后会在 200dB 的线上出现一个点线,点与点之间的距离是 5 度,而且天线的三维坐标中也出现了锥形,如下图所示。
在这里插入图片描述
刚才已经指定了 phi 大于等于 5 度的增益值,现在需要将层设置为 0 度,然后设置该层的增益和抽样点。仍然将该层的增益值设置为 200dB,该 dB 值将填充到由圆锥形外壳指定的 phi 大于等于 5 度的平面中。
在工作空间中右键并从菜单中选择 Decrease Phi Plane,这时当前的 phi 平面设置从 5 度变为 0 度。
设置纵坐标的上界为 201,下界为 199,在 200dB 线上的操作同上,确定第二个抽样点。
点击 Normalize the Function 动作按钮,在整个模式上归一化增益函数。
这时 3D 投影视图将会刷新,显示归一化后的结果,如下图所示。模式中小的球面部分描述了旁瓣增益采样点,在归一化时用到了它们,以使旁瓣增益趋近于零。
在这里插入图片描述
归一化会使得图形面板中的点上移,通过上图也可以看出。最后命名并保存该天线模型,关闭天线模型编辑器。


三、创建指向处理器

天线指向处理器计算发射机模块的位置,然后设置天线模块的目标属性,它不接收中断,因此可以将其设置为一个独立的非强制的状态。
新建一个进程模块,按照下图放置状态并创建转移。
在这里插入图片描述
双击 point 的上部为其添加入口执行代码,点击 File 下的 Import…,按照下面的路径找到 mrt_ex 文件导入。

\OPNET的安装路径\14.5.A\models\std\tutorial_req\modeler\mrt_ex

在编辑器窗口中的最后一个空行加上一个空格,然后保存文件。
在 Interfaces 菜单中选择 Process Interfaces,按照下图设置各个属性。
在这里插入图片描述
点击 OK 后保存该进程模型,然后点击编译按钮,编译通过弹出如下图所示的窗口。
在这里插入图片描述
关闭进程编辑器。


四、创建节点模型

在这个例程中,要创建三个节点模型,分别是发射机节点模型、干扰发射机节点模型以及收信机节点模型。

1.发射机节点模型

发射机节点包含一个包产生模块,一个无线发射机模块和一个天线模块。
新建一个节点模型,打开节点编辑器,按照下图所示放置对象、连接包流和命名对象。
在这里插入图片描述
tx_gen 节点的属性设置如下图所示。
在这里插入图片描述
radio_tx 节点的属性设置如下图所示,将其 power 属性提升。
在这里插入图片描述
在 Interfaces 中 Node Interfaces 下按照下图设置各项参数。
在这里插入图片描述
命名并保存该发射机节点模型。

2.干扰发射机节点模型

干扰发射机节点向网络中引入了无线电噪声,和静止的发射机节点一样,它包含一个包产生模块,一个无线发射机模块和一个天线模块。它的行为和静止发射机的一致,但是信道功率和信号调制方式不同。这些差别使得干扰发射机节点发送的包在收信机看来像噪声。
干扰发射机节点模型可以从发射机节点模型生成。
打开发射机节点模型,将 radio_tx 的调制类型属性改为 jammod,如下图所示。
在这里插入图片描述
命名并保存该干扰发射机节点模型。

3.收信机节点模型

收信机节点包含一个天线模块,一个无线收信机模块、一个 sink 处理器模块以及一个指向处理模块,其作用是让定向天线指向发射机。
新建一个节点模型,打开节点编辑器,按照下图所示放置对象、连接包流和命名对象。
在这里插入图片描述
右击 rx_point 模块,为其选定进程模型,也就是前面创建的指向处理器进程。
在这里插入图片描述
radio_rx 节点的属性设置如下图所示。
在这里插入图片描述
将天线 ant_rx 的 pattern 属性设定为 promoted,如下图所示。
在这里插入图片描述
在 Interfaces 中 Node Interfaces 下按照下图设置各项参数。
在这里插入图片描述
命名并保存该收信机节点模型。


五、创建网络模型

新建 Project 工程,给新项目和场景命名,拓扑结构选择 Create Empty Scenario,网络规格选择 Enterprise,尺寸是 Specify Size,10km × 10km,其他的保持默认即可。
按照下图所示放置自己创建的网络模型并命名。
在这里插入图片描述
放置时一定要注意干扰发射机节点一定是移动节点,否则后续移动路径的设置是无法成功的。
在这里插入图片描述
本例程中,节点的相对位置对于移动无线通信的行为有重要影响,为了得到期望的仿真结果,按照下面所说的位置坐标来定位节点。
jam 节点的位置坐标为(0.5,2.5),如下图所示。
在这里插入图片描述
tx 节点的位置坐标为(3.0,3.0),如下图所示。
在这里插入图片描述
rx 节点的位置坐标为(4.0,3.0),如下图所示。
在这里插入图片描述
要使用移动平台来指定节点的运动,网络模型使用了一个称为 trajectory(轨迹) 的属性,这个属性的值是一个 ACSII 文本文件的文件名,该文件是在项目编辑器中,该文件包含了指定仿真过程中移动节点将要经过的时间和位置的数据。
网络模型定义完之后,必须指定一条移动干扰发射机节点行进的轨迹。
在 Topology 菜单中,选择 Define Trajectory…,按照下图所示设置参数。
在这里插入图片描述
然后点击 Define Path,对话框消失,鼠标光标在项目编辑器中变成一条线,在 jam 节点的左边缘单击鼠标左键,开始绘制节点运动轨迹,然后在网格的 (7.5,2.5) 位置单击左键,不太准确也没事,后面会有精确的调整。
画完后右键结束轨迹的绘制,这时轨迹会从屏幕消失,因为它还没有被移动节点引用。接下来把刚刚创建的轨迹应用给 jam 节点,在节点上右键,编辑其属性,将 trajectory 属性设置为刚才绘制的轨迹。
这时候就可以在项目编辑器中看到自己刚才画的轨迹了,它是白色带有箭头的,选中右键编辑其属性,按照下图设置参数。
在这里插入图片描述
设置完成后关闭对话框,保存整个项目。


六、收集统计量并运行仿真

对于这个例程,我们关注的是不同的天线模型对于网络中接收节点的影响,可以通过配置仿真工具自动改变天线模型属性进行参数化仿真研究,而不需要每次仿真时都在节点域中改变天线模型属性值。
可以在项目编辑器中收集仿真后的接收信道统计量,这些统计量包括误码率 (BER) 和吞吐量 (throughput)(packets/sec)。包吞吐量统计值代表了接收信道每秒正确接收到的包的平均值,这个属性值采集的样值仅是那些包BER值小于收信机 ECC 门限的包,该门限在节点模型中无线收信机模块的 ecc threshold 属性中指定。由于本例中无线收信机该属性的值为 0 errors/bit,只有没有比特误码的包才会被接收。
在 rx 模块上右击选择 Choose Individual DES Statistics,按照下图勾选 bit error rate 和 throughput(packets/sec)。
在这里插入图片描述
右击 bit error rate,选择 Change Collection Mode,按照下图设置。
在这里插入图片描述
同样的方式设置 throughput(packets/sec) 如下。
在这里插入图片描述
完成后点击 OK 并关闭对应的对话框。
接下来设置仿真序列。
在菜单栏 DES 下选择 Configure/Run Discrete Event Simulation (Advanced),打开对话框后,右键编辑仿真序列的属性,如下图所示。
在这里插入图片描述
然后将几个对象的属性添加进来并赋值如下图所示,第一个仿真序列的天线模型设置为全向天线(isotropic)。
在这里插入图片描述
复制上面的仿真序列,然后粘贴到该窗口,只改变这里的发射天线模式,将其改为我们文章刚开始绘制的那个锥形天线模型,如下图所示。
在这里插入图片描述
设置完成后保存,点击运行仿真按钮就可以一起运行两个仿真,仿真完成后显示如下。
在这里插入图片描述
这就说明我们前面的各项操作和配置都是正确的,可以顺利完成仿真。


七、查看仿真结果

在项目编辑器空白处右键,点击 View Results 查看仿真结果。
全向天线模型下的误码率曲线如下图所示。
在这里插入图片描述
和预期的一样,全向天线模式图反映了收信机节点的误比特率随着干扰节点与收信机节点间距离的减少而增加,当干扰节点和收信机节点间距离最小时,误比特率达到最大值。全向收信机天线在整个仿真中都受到干扰节点的干扰。
定向天线模型下的误码率曲线如下图所示。
在这里插入图片描述
定向天线模式图同样也反映了收信机节点的误比特率随着干扰节点与收信机节点间距离的减少而增加,但是持续大约一分钟后,干扰天线和收信机天线间的方向矢量不再与收信机天线最大增益的方向一致,因此收信机节点停止接收干扰节点的干扰,收信机的误比特率降为0,从而显著减少了从固定发信机节点处收到的包,这就使得成功接收静止发射机节点的包的概率急剧增加。
包吞吐量的统计结果曲线如下图所示,其中蓝色的线代表全向天线模型,红色的线代表锥形天线模型。
在这里插入图片描述
由上图可以看出,对全向天线模型,仿真过程中接收到的包的平均值是下降的,在仿真快要结束时,由于干扰发射机和收信机的距离增加,这种趋势某种程度上有所逆转。对定向天线模型,当连接干扰发射机和收信机天线的方向矢量与收信机天线的最大增益的方向一致时,包吞吐量很低。但是,大约1分钟之后,也就是干扰发射机不在收信机天线的最大增益方向上时,接收到的包开始增加。


总结

以上就是 OPNET Modeler 例程——创建一个移动无线网络的所有内容了,希望通过该例程,你能学会使用 OPNET Modeler 创建一个无线网络并在一个动态网络拓扑结构的接收节点处观察由无线噪声引起的接收信号质量的变化、会添加移动节点并定义移动节点轨道、使用天线模型编辑器创建一个定向天线模型等操作。
本文参考书目:OPNET 网络仿真/陈敏编著. - 北京:清华大学出版社,2004

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_283892.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】基础篇

C基础篇什么是C命名空间命名空间的三种使用方式C的输入和输出缺省参数缺省参数分类函数重载引用引用的使用场景常引用指针和引用的区别auto关键字auto使用细则auto不能推导的场景基于范围的for循环范围for的使用条件指针空值nullptr什么是C 1982年,Bjarne Stroustr…

微服务+springcloud+springcloud alibaba学习笔记【Eureka服务注册中心】(3/9)

Eureka服务注册中心 3/91、服务注册与发现1.1 什么是服务治理:1.2 什么是服务注册与发现:1.3 Eureka服务注册与发现2、单机版eureka2.1 创建module2.2改pom依赖2.3写yml配置文件:2.4主启动类2.5 修改服务提供者 cloud-provider-payment8001 模块&#xf…

GFS的卷类型与集群实验文档

GlusterFS 支持七种卷,即分布式卷、条带卷、复制卷、分布式条带卷、分布式复制卷、条带复制卷和分布式条带复制卷。我们常用的有前五种,今天我们就来看一看这五种卷都有什么优缺点。 一、分布式卷(Distribute volume) 文件通过 H…

【模型复现】resnet,使用net.add_module()的方法构建模型。小小的改进大大的影响,何大神思路很奇妙,基础很扎实

从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果。但是更深的网络其性能一定会更好吗?实验发现深度网络出现了退化问题…

python玄阶斗技--tkinter事件

在前一篇文章中,我们已经了解是tkinter的一些标签的使用,但一个GUI程序除了让别人看到,还要有一些交互操作,实现人机交互的方法我们称为事件,通过事件分为:鼠标事件,键盘事件和窗口事件。接下来…

Neo4j初学者使用记录(在更)

打开Neo4j cmdR 输入neo4j console 浏览器中输入框中网址:http://localhost:7474/即可打开 新建库 服务器版需要更改配置文件,若neo4j服务正在运行,则按Ctrlc,停止该服务。 配置完后,再重新开启服务,刷新…

如何利用ventoy制作Linux to go (把deepin放到U盘里)

准备工作 最新版本 – 深度科技社区 (deepin.org) deepin镜像官方下载即可 Releases ventoy/vtoyboot GitHub ventoy启动插件选择1.0.29版本 Downloads – Oracle VM VirtualBox VirtualBox虚拟机官网 ventoy下载 VentoyRelease (lanzoui.com) 选择下载1.0.29版本 vento…

第五十八章 线段树(一)

第五十八章 线段树(一)一、树状数组的缺陷二、线段树的作用三、线段树的基本构成1、节点定义2、线段树的结构四、线段树的重要函数1、构造线段树——bulid函数2、查询区间——query函数3、单点修改——modify函数五、例题一、树状数组的缺陷 在前面两个…

对于电商行业来讲,真正决定它的并不是规模,而是载体

纵然是在现在这样的情况之下,我们依然无法用「格局已定」来形容和阐述现在的电商市场格局。这一点,我们可以从以抖音、快手为代表的电商新势力的崛起当中,看出一丝端倪。对于电商行业来讲,真正决定它的并不是规模,而是…

Dart中的异步

一 事件循环 flutter 就是运行在一个root isolate 中 程序只要运行起来,就有一个事件循环一直在运行 ,直至程序退出。 EventLoop 先从mrcro 对列中取任务,取完任务再去 event 队列中取任务。队列任务是FIFO。 二 认识Future abstract clas…

[JavaEE]----Spring03

文章目录Spring_day031,AOP简介1.1 什么是AOP?1.2 AOP作用1.3 AOP核心概念2,AOP入门案例2.1 需求分析2.2 思路分析2.3 环境准备2.4 AOP实现步骤步骤1:添加依赖步骤2:定义接口与实现类步骤3:定义通知类和通知步骤4:定义切入点步骤5:制作切面步骤6:将通知…

C++内存管理(new和delete)

目录 1. new/delete操作内置类型 2. new和delete操作自定义类型 3. operator new与operator delete函数 4 .new和delete的实现原理 1 .内置类型 2 .自定义类型 new的原理 delete的原理 new T[N]的原理 delete[]的原理 5. 定位new表达式(placement-new) 6. malloc/f…

使用Process Explorer和Clumsy定位软件高CPU占用问题

目录 1、问题描述 2、使用Process Explorer初步找到CPU占用高的原因 3、使用Clumsy工具在公司内网环境复现了问题 4、根据Process Explorer中的函数调用堆栈,分析源码,最终找出了问题 5、总结 在排查项目客户的视频图像闪烁问题时,无意中…

Centos7安装部署Jenkins

Jenkins简介: Jenkins只是一个平台,真正运作的都是插件。这就是jenkins流行的原因,因为jenkins什么插件都有 Hudson是Jenkins的前身,是基于Java开发的一种持续集成工具,用于监控程序重复的工作,Hudson后来被…

JavaScript基础-02

常量(字面量):数字和字符串 常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。 常量有下面这几种: 数字常量(数值常量)字符串常量布尔常量自定义常量…

【MATLAB数学建模编程实战】Kmeans算法编程及算法的简单原理

欢迎关注,本专栏主要更新MATLAB仿真、界面、基础编程、画图、算法、矩阵处理等操作,拥有丰富的实例练习代码,欢迎订阅该专栏!(等该专栏建设成熟后将开始收费,快快上车吧~~) 【MATLAB数学建模编…

[LeetCode周赛复盘] 第 340 场周赛20230409

[LeetCode周赛复盘] 第 340 场周赛20230409 一、本周周赛总结二、 6361. 对角线上的质数1. 题目描述2. 思路分析3. 代码实现三、6360. 等值距离和1. 题目描述2. 思路分析3. 代码实现四、6359. 最小化数对的最大差值1. 题目描述2. 思路分析3. 代码实现五、 6353. 网格图中最少访…

ROS实践06 自定义消息类型

文章目录运行环境:思路:1.1 定义.msg文件1)功能包下新建 msg 目录,添加文件 Person.msg2)修改package.xml3)修改CMakeLists.txt2.1 自定义消息调用(C)1)编译后修改includePath2)发布方实现2.1修改CMakeLists.txt2.3运行…

【OpenCV-Python】cvui 之 trackbar

CVUI 之 trackbar cvui::trackbar() 渲染一个 trackbar, 可以左右拖动或点击对数字进行增加或减少的调整。 不使用离散间隔 使用离散间隔 Python import numpy as np import cv2 import cvuidef trackbar_test():WINDOW_NAME Trackbar-Test# 创建画布frame np.z…

【Python童年游戏】满满的回忆杀—那些年玩过的童年游戏你还记得吗?那个才是你的菜?看到第一个我就泪奔了(致我们逝去的青春)

导语 滴一一学生卡🙌 结伴上车的学生仔子们 用笑声打破车厢的沉默 大人眼里的晚高峰 是给放学后快乐😀时光的加时 下车的学生匆匆起身带起 一阵熟悉的栀子香于💓 是关于校园的记忆 开始零零散散地闪现 放学后集合的秘密基地/跟着城…