如果有错误,一定要耐心的阅读错误提示。因为这个可以非常高效的帮你找出错误的原因(还会有中文提示哦,这是最关键的,哈哈)。Simulation Console(左下角)
一.2012-8-13: 错误提示:
<<< Recoverable Error >>>
External code file (tcp_api) compilation failed Errors given in file (C:\\Documents and Settings\\chen\\op_admin\\tmp\\cc_err_2572)
<<< Recoverable Error >>> Object repository construction failed External code file (C:\\Program
Files\\OPNET\\14.5.A\\models\\std\%umts\%umts_support.ex.c) compilation failed, see error messages in (C:\\Documents and Settings\\chen\\op_admin\\tmp\\cc_err_2572)
T (0), EV (-), MOD (NONE), PROC (sim_load_repos_rebuild) ----
<<< Program Abort >>>
Error encountered rebuilding repository -- unable to proceed T (0), EV (-), MOD (NONE), PROC (sim_load_repos_load) 解决方法:
1.设置环境变量还是出现了同样的错误
2.将visual c++卸了之后重新安装一遍,然后运行一下VC再打开OPNET运行仿真就可以顺利通过了。(VC与OPNET何者先安装是无所谓的) 二.2012-8-21 引用地址
1.如何设置全局变量?
在 .h文件里定义变量,然后在process的HEAD BLOCK 里include 这个
头文件,就可以使用全局变量了。 2.OPNET中如何更方便的看程序?
(1).opnet中的设置:preferences->editor_prog
(2).source insight的设置:operation->preferences->symbol Lookups->Project symbol path->Add Project to Path
(添加自己创建一个包含所有opnet model 和 include目录的project) 当然,这个有些不足,就是那个sv,tv,hb等中定义的内容,不能进行关联。 3.OPNET中的函数FIN,FRET以及FOUT都是什么功能?
为了使一个用户定义的函数被执行,该函数必须与一个特殊的堆栈跟踪代码相连。堆栈跟踪技术靠在函数的入口点和出口点插入预处理器宏指令完成(一个函数只有一个入口点,但可以有多个出口点(由C语言的return声明决定))。这些宏指令为:FIN、FOUT和FRET。FIN被插入到函数的入口点,FOUT被插入到函数的出口点,但却不返回任何值,FRET被插入到函数的出口点,返回一个值。注意这些宏指令不需要以分号结束(它们自我包含),FIN的参数中也不需要双引号。
Opnet提供的所有的示例模型都包含了这些宏指令,并且建议用户定义的函数也包含这些宏指令。如果FIN、FOUT、和FRET被正确插入了用户代码中,我们就可以使用op_vuerr来找出程序错误的位置,哪怕是在一个嵌套的模型函数调用中。
4.local statistics和global statistics的区别?
local statistics表示的是本地的统计量,而global statistics是全局的统计量。比如你做了一个节点模型,此节点发送数据包,然后编程把发送的数据包数分别写入一个local statistics和global statistics中,假如你在工程中用到了两个这样的节点,那么你可以分别view result每一个节点发送的数据包数,而global statistics则是这两个节点一共发送的数据包数。 5.Objid和user id的区别?
Objid是系统分配的,全局唯一,整数。user id是自己可以设置的,可以不唯一。 6.如何将模块添加到OPNET中?
edit - > preferences -> mod_dirs 添加模块路径即可。
7.为什么每次新建一个project 都给我保存在 c:\\op_models 目录下 ,我想换一个地方,怎么设置?
edit - > preferences -> mod_dirs中,新建一个路径,并作为第一路径即可。 8.想查找一个变量的使用场合,包括不同process,不同node中的header和
funtion,如何做 ?
在OPNET中变量是在一个PROCESS中存在的。不同的PROCESS之间则是通过进程之间的通信机制来共享信息的。因此你查找变量的作用范围应该是在一个PROCESS内的。编译后每个PROCESS会产生一个C或C++文件。在那个文件里就可以查到变量的应用地方。不同的进程可能具有相同的ATTRIBUTE.而为了减少NODE的ATTRIBUTE数目可以采用 MERGE/RENAME ATTRIBUTE的方式
。这时这些ATTRIBUTE具体对应到各个PROCESS 的哪个ATTRIBUTE可以通过NODE INTERFACE菜单下的MERGE/RENAME ATTRIBUTE 找到。 9.请问OPNET怎样将图导出来?
一:可以从Topology->Export Topology->……导出Project的几种图形,有bitmap,html等格式。node,process都可以从file中的ExportBitmap导出拓扑图。
二:对于分析出来的曲线,按鼠标右键,其中有个 Export Graph Data to Spreadsheet,然后会有提示 说你文件保存在什么地方,一般缺省是保存在 c:\\op_admin\\tmp 目录下。文件你可以用 UltraEdit 打开来看,是两列数据,一列是仿真时间,一列是 仿真数据,然后你就可以想用什么工具画图就无所谓了。 补充:其实很好用的还有就是直接抓图,效果不错。 10.在opnet中关于时延的问题。
数据速率是用来和包长结合计算传输时延的,而“delay”属性是用来描述电波的传播时延的。在点到点链路属性里,“delay”就是总传播时延;在多点链路里,“delay”指单位距 离的传播时延。用户可以修改传播时延的计算方法,那个“Distance Related”就是表示在自定义的传播时延 pipeline stage里基于距离计算传播时延。
11..在opnet中关于统计一些速率方面的参数。
统计流速率的时候,首先应该在Local Statistics中将这个统计项 的Capture Mode设成sum/time,然后在程序中每次收到一个数据包, 就将这个包的长度L写入,比如op_stat_write(handle,L),随后再马上 调用一个op_stat_write(handle, 0)来结束这次写入,就可以了。 12.关于begin intrpt和endsim intrpt
仿真0时刻时需要进行的初始化,则需要设begin intrpt, 仿真结束时刻需要进行一些工组,则需要enable endsim intrpt
13.用VC调试的时候,state variable的值无法看到,怎么办?
用op_sv_ptr这个指针。它指向了所有的状态变量。 14.关于Elapsed time and Simulation time ?
一个是仿真程序运行的时间,反映仿真程序执行的速度。而另一个是所仿真的系统的时间进度,反映当前的仿真执行的进度。仿真时间的修改是通过事件的发生来进行的。譬如说你在0s时作一件事持续时间为5秒,5秒钟结束后会触发一个事件,这个事件将系统的仿真时间改为5s。你使用OPNET的模型,它在接收到事件时会进行相应的仿真时间的更新。而你自己也可根据需要更新仿真时间。你采用op_intrpt_schedule_self(op_sim_time()+需要的时间,intrptcode),就可以在当前时刻的所需的时间以后产生一个中断,从而触发一个事件,系统的仿真事件也就被更新为此时间。OPNET中数据的收集方式是可选的,可以选择为逐点的,也可以选择按照漏斗进行平滑的根据自己的需要而定。 15.OPNet运行时无法进行C代码编译的解决办法
当你出现这种情况时, OPNet总是提示说 comp_msvc 不能执行, 因为Visual C++没有正确安装, 这时你需要修改系统的环境变量。具体方法如下(Win2000): (1). 正确安装 VC++, 缺省目录为(以下均以缺省目录为例) C:\\Program Files\\Microsoft Visual Studio
(2). 在桌面鼠标右击\我的电脑\图标, 选择\属性\在出现的界面中, 选择\高级\然后选择\环境变量\。
(3). 这里需要修改用户的\用户变量\而不是\系统变量\增加下列参数: 变量名 include
变量值 C:\\Program Files\\Microsoft Visual Studi0\\VC98\\atl\\include; C:\\Program Files\\Microsoft Visual Studio\\VC98\\mfc\\include; C:\\Program Files\\Microsoft Visual Studio\\VC98\\include 变量名 lib
变量值 C:\\Program Files\\Microsoft Visual Studio\\VC98\\mfc\\lib C:\\Program Files\\Microsoft Visual Studio\\VC98\\lib 变量名 MSDevDir
变量值 C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98 变量名 path
变量值 C:\\Program Files\\Microsoft Visual Studio\\Common\\Tools\\WinNT C:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\bin C:\\Program Files\\Microsoft Visual Studio\\Common\\Tools \\Program Files\\ Microsoft Visual Studio\\VC98\\bin
(4). 按\确定\按钮, 退出设置.
如果你在安装 VC 的时候让安装程序来修改环境变量就完全可以就避免这些步骤.
16..请问opnet中的移动台的trajectory(即运动轨迹)能否用一个专门的代码来生成,而不是用鼠标事先画出?如何实现opnet与此段代码的交互? 要做到运动轨迹的交互性,你得修改一些process和pipeline。 运动的结果无非是和基站的距离变化,然后利用衰落模型得到snr,ber等参数,所以你可以修改dra_propdel.ps.c, umts_ue_dra_power, umts_dra_snr等process. 如在dra_propdel.ps.c中把start_pro_distance用自己的距离函数代替即可。 17.前面提到的随机性服从一些随机分布,如高斯分布、泊松分布等等,我想问一下,opnet 中有没有现成的概率分布函数供调用?如何调用用op_dist_outcome这一类的函数,在online document中介绍的很详细。 18.对opnet的认识,它是在project、node以及process三个域上进行仿真,而且好像代 码都是在process域中的进入、退出以及转化这些地方编写,那么要实现的移动台随机产生的代码好像没有一个公共的全局性的平台可以放置 (就像C语言中的全局变量声明段)?这个问题如何解决?
函数应该在process的FB中,FSM只是调用而已,全局变量通常在外部.h中,也可在HB中。
19.OPNET 的输出结果选项“As is”,“Average”,“Time_average”有什么区别? 在这些选项下得到的曲线不一样 : As is ,就是不做任何处理, Average 就是做平均
Time_average 就是做时间平均
21.OPNET中如何删除一个senario,而保留工程? 在menu->senarios->manage senarios里。 22.请问OPNET中的animation指什么?
激活节点变化过程记录功能,并记录statistic的变化过程,可以作为动画演示。 23.opnet的节点域中处理模块之间如何共享变量? 可以试试以下2种方法: (1).在HB中定义全局变量
(2).添加节点属性,然后使用op_ima_xxx_xxx()函数,就是那个IMA包。 24.在node interfaces里面设置属性为set,promoted和hidden有什么意义? hidden可以在仿真的时候看不到设置的这个参数,promoted可以在仿真的过程