openet发包含参数的极限问题问题

思考的深度是由提问的水平决定的
opnet之csma_2node事件列表
仿真时间在gen模块发包(随机时间)和tx模块结束发送时推进(推进1秒)。
包在总线上传播不花费时间。
发包时间设置为均值为5的指数分布。
如果设置为常数,则每个包都生碰撞,收集不到统计量!
第一次发包都在10s
下一次发包的时间才是随机函数
第一次发包永远存在碰撞,除非修改第一次发包时间
begin sim intrpt
每一个事件,也即是中断都有产生者与接收者。
begin sim intrpt的产生者是仿真核心。
仿真开始中断产生后立即被目的进程接收,进入状态机的init状态,执行入口相关代码。
如果init是强制状态,接着就会执行出口代码。
接着跳转到下一个状态,执行其入口代码。
下一个状态一般都是非强制状态,所以停滞,等待下一个事件的发生。
代码的执行不消耗仿真时间。
0时刻,有7个仿真开始中断
node_0的gen
node_0的tx_proc
node_0的sink
node_1的gen
node_1的tx_proc
node_1的sink
node_2的rx_proc
10时刻,开始发包
node_0的模块gen开始发包(自中断)
node_1的模块gen开始发包(自中断)
node_0的模块tx_proc接收包(流中断)
node_1的模块tx_proc接收包(流中断)
node_0的模块bus_tx接收包(流中断)
node_1的模块bus_tx接收包(流中断)
仿真时间并没有推进。
个人觉得一切的中断本质上都类似自中断或者远程中断。
这两个中断设置中断事件。
因为通过包流链接,其中断的到达不花费时间,所以仿真时间不推进。
tx为每一个rx设置了远程中断
最关键的来了:
发射机接收包后会发射包,每一个接收机发射包后会在此场景下的每一个接收机设置一个远程中断。
图为node_0的发射机为node_0、node_1、node_2的接收机预设了远程中断。仿真时间不推进。
图为node_1的发射机为node_0、node_1、node_2的接收机预设了远程中断。仿真时间不推进。
信道忙(两次数据中断,可能跟进程有关系)
因为发射机已经发包,所以信道忙,此时产生数据中断。仿真时间不推进。
由下图可以看出,两个节点的发射机同时发送了第一个包,且同时监听到信道繁忙。
两个包会碰撞,不会被node_2接收。
tx结束发包的自中断
发射机发设包需要时间。
包的大小是1024比特,发包是1024比特/秒。
所以在10+1时包发送数据结束。
node_0结束发射中断。
rx结束收包远程中断
node_0发射结束会在node_0、node_1、node_2节点的接收机产生接收结束中断。
node_1结束发射中断。
node_1发射结束会在node_0、node_1、node_2节点的接收机产生接收结束中断。
下一个事件是什么?
包在总线上传输需要时间,下一个事件的仿真时间会推进。
因为node_0与node_1同时发包,数据包在链路上碰撞,所以包不会进入node_2的接收机,便不会再node_2的rx_proc模块产生流中断。
下一个事件应该是重新发包!!!
预测错了,下一个事件是数据中断。因为结束发包,所以链路空闲,两个节点会产生数据中断。
此时下一个事件才是发包!!!!!
而且仿真时间推进!!!!!
因为发包时间是随机函数,此时是node_1发包。
三个rx处远程中断
紧接着node_1的发射机会在三个节点的接收机处产生远程中断。
下一个事件应该是数据中断!!!
node_0与node_1产生数据中断。
下一个事件应该是node_1的发射机结束传输中断!!!
而且仿真时间推进1秒!!!!!
tx结束发包
紧接着就是三个节点的接收机的结束接收中断!!!
三个rx结束收包
因为只有一个节点发包,所以node_2可以成功接收数据包。
所以下一个事件是node_2的rx_proc的流中断!!!
仿真时间推进!!!!!
node_0和node_1的sink收包
忽略了node_0与node_1的sink模块也可以接收数据包!!!!!
同时产生数据中断,因为信道又空闲!!!
下一个事件node_2接受包!!!
node_2的rx_proc收包
下一个事件是重新发包!!!!!
仿真时间推进!!!!!
node_0发包。
事件64后面有点奇怪!!!
40s时是结束中断!
tags:opnet
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Access denied
The owner of this website (www.statscrop.com) has banned your access based on your browser's signature (433ed8ab86b65408-ua98).
Ray ID: 433ed8ab86b65408
Timestamp:
05:52:27 UTC
Your IP address: 117.85.27.125
Requested URL: www.statscrop.com/www/openet.com
Error reference number: 1010
Server ID: FL_12F156
User-Agent: Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
If you have any question, please contact us: service [at] statscrop.com.
Recently Analyzed
Share us On
2017 All Copyright (C)opnet进程模型rip_udp_v3理解
rip_udp_v3进程模块状态转移图:其中init入口代码区代码为初始化代码,包括创建与下层进程节点通信ici、创建与上层进程节点通信ici、获取本进程模块ID、所在节点ID、当前进程ID、将自身进程注册至模型注册表init出口代码区代码为从模型注册表中获取其下层进程模块ID、确定与下层进程模块节点通信的入口、出口流索引idle出口代码区代码为获取中断流类型、中断代码CREATE入口代码区代码为上层代码远程强制唤醒udp进程模块节点时,为与上层通信而设置ici、端口以及一些数据。SEND入口代码区代码为上层进程节点发送来的数据流的中断响应(当流终端出发且流不为下层节点入口流索引),处理相关包、ici,构建并发送将发送至下层节点的包、iciARRIVE入口代码区代码为下层进程节点发送来的数据流的中断响应(当流终端出发且流为下层节点入口流索引),处理相关包、ici,构建并发送将发送至上层节点的包、ici
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!豆丁微信公众号
君,已阅读到文档的结尾了呢~~
OPNET统计量编写编写,统计,OPNET,统计量,opnet,Opnet,f统计量,t统计量,检验统计量,jb统计量
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
OPNET统计量编写
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口在计算机的世界里越陷越深
OPNET报错总结及注意事项
一、报错总结
【报错1】fatal error C1074: 'IDB' is illegal extension for PDB file
【解决方案】出现该错误的原因是因为用兼容方式打开了OPNET Modeler,取消兼容性即可。
【报错2】报错时显示Model Directory的问题
【解决方案】重新设置项目路径后refresh directory,然后删除op_admin目录,重启Modeler即可。
【报错3】项目运行时卡在init状态不动
【解决方案】进程模型新建时属性begsim intrpt默认为disabled,改为enabled即可。
【报错4】op_stat_reg("Assembly Packet Size", OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL)用错:在进程模型的
local statistics中声明,而在注册时注册为
GLOBAL statistics。
Simulation Kernel: development, sequential
&&& Recoverable Error &&&
Unable to register global stat (Assembly Packet Size). Please check
spelling and include a group name if stat is defined with a group name.
T (0), EV (2), MOD (top.OPS_edge_router.transmission_queue), KP (op_stat_reg)
【解决方案】我新建的进程模型在Interfaces-&local statistics和Interfaces-&global statistics中未声明局部和全局统计变量,导致出现该报错,加上即可。
【报错5】遇到的其他报错基本可以在我的GitHub个人网站下载到的《OPNET常见错误》中找到解决方案。
二、注意事项
以下部分转载自:
(1)access和get
但凡涉及到access的函数都是以指针的形式访问其指向的区域,调用后不会更改指向区域的内容,如op_pk_nfd_access(),op_prg_list_access() ...,涉及到get和remove的函数会将内存中的内容取出,如op_ok_nfd_get(),op_prg_list_remove(),prg_bin_hash_table_item_remove()
...。但也有例外情况,如获取包流ici的函数op_pk_ici_get(),获取后相应的ici还附着在包上,只有调用op_pk_ici_destroy()或者重新install一下才会将原来的删除或覆盖。
(2)ici的使用
根据网络协议的分层原则,低层协议通常是不会读取高层数据包中的内容,只是做一下封装。opnet中上下层交互的信令通常用ici来传递,即用ici来模拟层间原语。
我一般是分三步走:op_ici_create() -& op_ici_attr_set() -& op_pk_ici_set(),这样就会为每个包安装ici,在计算包大小以及goodput过程中,ici的尺寸是不会考虑在内的。
(3)包域的问题
在包的编辑器中,包“域”的数据类型给定的有: integer, floating point, structure, packet, information, integer(64 bit), packet ID, or object ID,用这些类型来模拟每一册协议单元的字段或数据域。我经常使用的是integer,struct和packet。其中的struct类型需要在头部定义一个结构体类型的数据,代表整个"域"(通常作为头部),packet一般采取inherited上层包的形式,作为数据域。注意struct域可以设置大小,但是该大小与你定义的结构体实际内存占用情况无关,只是代表协议设计中该包域的大小,不会影响程序运行,只会影响统计结果的收集。
(4)慎用op_pk_send_forced()函数
该函数对应的是强制无延迟的发包策略。自己多次在仿真中都出现如下问题:
&&& Recoverable Error &&&
Unable to execute intrpt at process (2)
Process is already within an invocation
当时并无头绪如何解决这个问题,很幸运的是,在碰巧将op_pk_send_forced()函数改成op_pk_send()后问题消失了。就如同Product Documention函数中警示的那样,op_pk_send_forced()函数在多进程交互过程中会导致不可预期的结果。
(5)包的分片和重组
在设计过程中,由于底层协议帧大小的限制通常要对上层的数据包分片,这就需要使用分段缓冲区。缓冲区的创建使用函数op_sar_buf_create(),该函数有两个参数:第一个参数中对应了多个常量标识符,我用到的有两个,OPC_SAR_BUF_TYPE_SEGMENT(对应分段缓冲区)和OPC_SAR_BUF_TYPE_REASSEMBLY(对应重组缓冲区),其中分段缓冲区分段后的数据还可以接着继续被分段。第二个参数也对应了多个常量标识,在分段时我用到的也是有两个,OPC_SAR_BUF_OPT_PK_BNDRY(不将分段打包成固定大小)和OPC_SAR_BUF_OPT_SEG_PAD(将数据打包成固定大小),在重组时用到的为默认参数OPC_SAR_BUF_OPT_DEFAULT。
(6)结构体的设置与获取
get(获取)信息的时候都要取地址,如op_ici_attr_get(recv_high_iciptr, "node_id", & nid_info_get);
op_pk_nfd_access (pkptr, "head block", & hb_ptr);
set(设置)的时候不用,如op_pk_nfd_set (bd_pkptr, "head block", hb_ptr, op_prg_mem_copy_create,
op_prg_mem_free, sizeof (head_block)); op_ici_attr_set (iciptr, "node_id", nid_info);
(7)关于全局和局部统计量
全局统计量(global)能够统计场景中总共收到的数据包个数,本地统计量(local)能够统计每个节点收到的数据包。在设置好统计量后将其提升到模块属性,方便选择。
(8)opent自动崩溃的问题
暑假回来继续使用opent,软件隔一段时间(几分钟)就会崩溃并自动关闭,出现如下问题:
unhandled vex exception
consult C:\Users\Infonet\op_admin\err_log for more details.
In OPNET,access the information for Help&Error Log&Open.
开始百思不得其解,然后尝试清理电脑中的垃圾,发现不知道在什么时候无意装了麦咖啡杀毒(一向只用360的),卸载后正常了。一些杀毒软件也许与opnet不兼容。
(9)三种进程间内存共享方式
a)module memory同模块共享内存:
通过函数op_pro_modmem_install()和op_pro_modmem_access()访问。为了保证process间通信机制,各个 process应当遵循shared memory的数据类型,这就要求process都要知道,因而shared memory的数据结构定义应当放在外部定义".h"文件中,并包含在每个process的header
block中。shared memory一开始是没有的,是由process来决定什么时候分配以及分配多大,这些通过op_pro_modmem_access()来完成。内存的分配一般是通过op_prg_meme_alloc()来完成。
b)父子共享内存:
只有以父子关系联系在一起的process才能访问的私有共享内存。这种共享内存只能在child process由op_pro_create()产生时由op_prg_mem_alloc()分配,且不能被替换。通过 op_pro_parmem_access()访问。通过op_pro_invoke()通知对方对共享内存的内容进行的修改和,以及对内容的检查。
c)参数内存(argument memory)
将内存地址作为op_pro_invoke()的参数传给别的进程用以通信,通过op_pro_argmem_access()来完成访问。与前两个不同的是,这部分内存不是永恒的。
(10)关于不同进程使用同一个struct的问题
不同模块间的struct中的元素必须按照相同的顺序定义,否则不但不会报错,而且会导致读取其中元素数值的错误。
解决方法:将多次使用的struct放在头文件中,每个使用该struct的进程包含一下该头文件即可。
(11)最后记录几个错误记录
op_ev_cancel (ack_event); //可能取消不了,因为中断已结束!!需要加测试条件 if( op_ev_pending (ack_event) == OPC_TRUE)判断当前事件是否还存在。
list中的包发送以后就不能再发了,即使是access也不行。
两个list不能直接赋值,要先create,再init,再copy。
为了使进程同步,在父进程的init状态就要invoke一下子进程。
(12)属性的设置和提取
属性分为节点属性和进程属性,将设置的属性提升至网络层进行设置。
在进程模型设置属性,以发送节点(send)为例
&1&设置进程模型设置:
Interface-&Model Attribute,假设我们随便设置属性(以后根据具体仿真需要设置)node_size:
设置完成,单击OK,保存关闭进程模型。
&2&在节点模型将&1& 设置的属性提升至网络层。
右击P_0模块,单击Edit Attributes,查看node_size的值是否为promoted,如果不是则设置为promoted:
单击OK,保存,关闭。
&3&在网络层,右击send节点,单击Edit Attributes。设置属性p_0的值(该值是我随便设的),如下:
单击OK,保存。
&4&提取刚才设置的属性
进入send节点的进程模型,单击设置变量node_size为double型:
单击OK,双击st_0节点的上半部分(初始化模块的上半部分):输入
op_ima_obj_attr_get(op_id_self(), "node_size", &node_size);//获取node_size的属性值赋值给第三个参数(在中设置),第二个参数为在(1)中设置的属性名。
op_id_self(),获取自己的id。
输入:printf("node_size,%10.5f\n", node_size);查看是否可以获取。
保存,关闭。
运行程序,显示结果如下:
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!

我要回帖

更多关于 含参数的线性规划问题 的文章

 

随机推荐