OPNET學(xué)習(xí)筆記_第1頁(yè)
OPNET學(xué)習(xí)筆記_第2頁(yè)
OPNET學(xué)習(xí)筆記_第3頁(yè)
OPNET學(xué)習(xí)筆記_第4頁(yè)
OPNET學(xué)習(xí)筆記_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、OPNET 14.5打開ODB調(diào)試窗口首先點(diǎn)擊運(yùn)行仿真的小人圖表。在打開的窗口中如圖示,先設(shè)置 simulation kernel 為development.Siinul式tm Kernel; DevcLopmmt3 .在左邊樹狀結(jié)構(gòu)中找到 Execution->debugger.iiij Common+ - 工皿u。+ Outputs-Emmti 叮i.QF瓦"世珞群y一 一一i - 二Fro filing: Tr QTibLeshcot+ Adv Sliced+ Rim time B l splaysOFNET DebuggerV OIHET工 m(0口口)j'lD

2、B zcri p t mode: UToite,ODE script name.4 .然后點(diǎn)擊Run就可以了看到如下:5 .接下來就可以進(jìn)行調(diào)試。OPNET 14.5 與 VC 聯(lián)調(diào)搞了好些天,頭大!書上的內(nèi)容全是10.0以前版本的設(shè)置方法,14.5版本變化太大,已經(jīng)完全不適用了?,F(xiàn)在終于弄明白 opnet 14.5如何和VC聯(lián)調(diào)。其實(shí)opnet14.5與VC聯(lián)調(diào)不再需要另外特別的設(shè)置,不用再到edit preference中去找這個(gè)找那個(gè)。只需要設(shè)置好opnet和VC的環(huán)境變量就好。一般的方法是 ODB初始化以后,打開 VC,在Debug菜單下單擊attach to process ,然后

3、選才? op_runsim_dev.exe(或者op_runsim_opt.exe ),這樣就可以利用 VC提供的調(diào)試功能進(jìn)行OPNET 程序調(diào)試。一般情況下 attach to process 選項(xiàng)框?yàn)榭?,這可能不是VC和OPNET程序本身的問題,因?yàn)橛行?yīng)用軟件的進(jìn)程和op_runsim_dev.exe (或者op_runsim_opt.exe )進(jìn)程沖突,如一些殺毒軟件,acrobat等,或者是其他進(jìn)程開得過多所致。這時(shí)打開任務(wù)管理器,找到op_runsim_dev.exe ,右鍵選擇調(diào)試。這時(shí)會(huì)彈出 VC。彈出來的VC工程沒有原代碼,需要自己手打打開過程原代碼,然后在代碼中設(shè)置斷點(diǎn)?;?/p>

4、到ODB中點(diǎn)擊continue即可在斷點(diǎn)出停止。其實(shí)就是這么簡(jiǎn)單 今天放棄了 opnet 14.5安裝了 10.0 ,可是安裝后發(fā)現(xiàn)licence需要用opnet8.1的破解,又安裝了 8.1并破解,然后果斷卸載,后來因?yàn)楦?覺缺少了不少功能,又使用11.5的破解程序,可是licence只有60個(gè)了,再次安裝8.1,問題出現(xiàn)了,程序無法運(yùn)行,糾結(jié)了一上午,發(fā)現(xiàn),原來第一次卸載不徹底,第二次安裝路徑和第一次又不同,于是解決方法:1,啟動(dòng)Modeler,觀察dos窗口(用alt+prtscr,如果滾屏太快的話), 記下錯(cuò)誤的路徑名。2,把你目前安裝的OPNET的整個(gè)目錄,copy到你剛才記下的錯(cuò)誤

5、路徑中。說白了就是欺騙一下系統(tǒng)!3,再啟動(dòng)Modeler,估計(jì)就能進(jìn)去了。4,打開edit->preference,修改所有設(shè)置錯(cuò)誤的路徑,改為正確路徑, 其中mod_dirs的修改最為痛苦。5,記得按OK按鈕。6,刪除錯(cuò)誤路徑的所有文件。7,不放心的話再啟動(dòng)一次 OPNET。Done!1) <<<Program Abort>>>Invalid Memory Access內(nèi)存無效訪問是調(diào)試程序中最常碰到的錯(cuò)誤,一般是程序中的指針出了問題,可以嘗試用以下辦法來解決:(1)在 edit->preference 中給 comp_flags 力口/Od/

6、Zi 字段,給 bind_shobj_flags 加 /DEBUG 字段;(2)在 edit->preference 中找至U handle_exception ,將 TRUE 改為 FALSE ,這樣程 序中的異常就可以由VC來調(diào)試;(3)運(yùn)行仿真,如提示出現(xiàn)異常,點(diǎn)擊cancel ,則自動(dòng)打開 VC ,并且debug會(huì)停留在發(fā)生異常的指針處。但是有時(shí)候VC的debug有可能停留在讓人看不懂的匯編語(yǔ)言處,此時(shí)可以觀察發(fā)生錯(cuò)誤的事件event_id值,在ODB調(diào)試的時(shí)候使用 evstop指令設(shè)置斷點(diǎn),讓程序中斷在出錯(cuò)的事件前,接下來可以采取下列兩種方法之一:(1)采用OPNET與VC聯(lián)合

7、調(diào)試,在 VC中通過單步執(zhí)行查看;(2)用ODB的next指令一個(gè)一個(gè)時(shí)間看,往往配合ltrace和fulltrace 指令查看程序運(yùn)行狀況。碰到這個(gè)問題我們也可以縮短仿真時(shí)間,在確保仿真能夠完成前提下,在仿真屬性中選擇 Advanced->Profiling->Collect detailed profiling for function ,之后出現(xiàn)每一個(gè)內(nèi) 存使用的統(tǒng)計(jì)。2) <<< Recoverable Error >>>Object repository construction faileddue to errors encounte

8、red by the binder program (bind_so_msvc)<<< Program Abort >>>Error encountered rebuilding repository - unable to proceed出現(xiàn)這個(gè)錯(cuò)誤一般是編譯連接出錯(cuò)unresolved external symbol,常見的有以下可能性:(1) Pipeline Stage (C code) 文件名與函數(shù)名不一樣,這時(shí)改為同名就行了。(2)進(jìn)程模型用到一個(gè)無法定位的外部函數(shù),這時(shí)在進(jìn)程模型編輯器中選擇File->Declare External F

9、iles ,然后選中含有該外部函數(shù)的外部文件。(3)外部文件用到一個(gè)無法定位的函數(shù),這時(shí)查看是否漏掉include需要用到的頭文3) <<<Program Abort>>>No true transitions from state ()T(), EV(), MOD(), PROC (sim_pro_err_transit)狀態(tài)程序執(zhí)行完畢找不到出口,有限狀態(tài)機(jī)要能夠正常運(yùn)行要求在任意條件下,每個(gè)狀態(tài)執(zhí)行完畢之后都必須發(fā)生轉(zhuǎn)移,出錯(cuò)的情況有以下兩種:a)根本沒有轉(zhuǎn)移條件及相應(yīng)的狀態(tài)。b)沒有滿足條件的轉(zhuǎn)移。4) Unable to write file (*

10、.pr.m) compilation failedSource code file couldn't be generated查看模型文件屬性是否設(shè)置為只讀,編譯模型文件需要刷新其內(nèi)容,去掉只讀屬性。5) <<<Program Abort>>> Standard function stack imbalanceFIN 和 FOUT/FRET 未配對(duì)。仿真期間遇到了第2、3、5條錯(cuò)誤:首先是外部變量的聲明,由于是按照書上的步驟一步一步做的,所以還是有過聲明的,然而!悲劇就發(fā)生在所聲明的變量和代碼里的變量不一致這個(gè)小錯(cuò)誤毀了我一個(gè)上午的時(shí)間!接下來是錯(cuò)誤

11、3,錯(cuò)誤發(fā)生在沒有給第二個(gè)process模塊添加狀態(tài)轉(zhuǎn)移線,以至于仿真還沒有開始就已經(jīng)結(jié)束了。最后就是錯(cuò)誤5,這個(gè)就不是我的問題了! 是陳敏老師編書的時(shí)候的失誤, 在第一個(gè)process 模塊頭代碼中,使用了 FIN函數(shù),而結(jié)尾的時(shí)候卻沒有用 FOUT與之配對(duì)! !估計(jì)會(huì)有N多初學(xué)者栽在這個(gè)地方 雖然最后仿真成功了 仍然有幾個(gè)小問題沒有解決!根本找不到矢量的那個(gè)結(jié)果!誰(shuí)知道在哪?怎么查看?結(jié)果里怎么木有g(shù)lobal statistics ?ete delay在哪里?關(guān)于統(tǒng)計(jì)量的收集最近做了不少實(shí)例,或多或少理解了 OPNET仿真的原理和過程。然而想要自己來實(shí)現(xiàn)一個(gè)通信過程的仿真還是頗有難度,今

12、天就遇到了統(tǒng)計(jì)量收集的問題,糾結(jié)了許久才找到了正確的辦法,在此記錄下:我們用OPNET做網(wǎng)絡(luò)仿真的時(shí)候,有些我們感興趣的統(tǒng)計(jì)量OPNET并沒有提供,這是就需要我們自行定義了。簡(jiǎn)單來說,自定義統(tǒng)計(jì)量主要分為三步:1 .在進(jìn)程編輯器里,Interfaces > Global Statistics ,也可以是 local Statistics ,定義一個(gè)統(tǒng) 計(jì)量的名字,如 Delay、Throughput之類,這里不妨定義為 My Stat。2 .在SV編輯器定義一個(gè)統(tǒng)計(jì)句柄Stathandle,假設(shè)取名為 my_stathandle.3 .讓句柄與統(tǒng)計(jì)量關(guān)聯(lián)起來,my_stathandle=

13、op_stat_reg ("MyStat",OPC_STAT_INDEX_NONE, OPC_STAT_GLOBAL) ,這一句一般寫在 FSM 的 init 狀 態(tài)里。這里我們沒有把這個(gè)統(tǒng)計(jì)量 "My Stat"分組,如果分組的話,可能語(yǔ)句會(huì)有不同,大概不能用OPC_STAT_INDEX_NONE這個(gè)參數(shù),我曾經(jīng)分過組,結(jié)果編譯時(shí)報(bào)錯(cuò),我沒仔細(xì)看 opnet documentation 。4 .然后就是在程序里,在你需要的地方賦值給這個(gè)句柄了,這里我們假設(shè)變量abcde由你感興趣的值。double abcde;/如何取得abcde得值要看你的需要了。o

14、p_stat_write (my_stathandle, abcde);1) state variable/* Counts total packets. */ int pk_count;/* Statistic to record packet count. */ Stathandle pk_cnt_stathandle;2) local statistics 定義:packet count3)注冊(cè)統(tǒng)計(jì)量 pk_count = 0;pk_cnt_stathandle = op_stat_reg ("packet count", OPC_STAT_INDEX_NONE, O

15、PC_STAT_LOCAL);4)搜集統(tǒng)計(jì)量+pk_count;op_pk_destroy (op_pk_get (op_intrpt_strm ();op_stat_write (pk_cnt_stathandle, pk_count);關(guān)于這個(gè)用法,在 OPNET 10.5 Tutorial 的packet switching 一節(jié)里也有介紹,可以參考。再附上從別人博客轉(zhuǎn)來的具體操作辦法:先說些統(tǒng)計(jì)量的概念。統(tǒng)計(jì)量(Statistics ),用來顯示仿真結(jié)束后產(chǎn)生的數(shù)據(jù)統(tǒng)計(jì)結(jié)果,一般情況下有三種統(tǒng)計(jì)量:標(biāo)量統(tǒng)計(jì)量,矢量統(tǒng)計(jì)量,動(dòng)畫。以圖形,或者動(dòng)畫的形式顯示仿真結(jié)果,直觀而且易懂。但是,在

16、很多情況下系統(tǒng)模塊自帶的統(tǒng)計(jì)量并不能滿足仿真者的統(tǒng)計(jì)要求,這就要求自己能創(chuàng)建自定義統(tǒng)計(jì)量。統(tǒng)計(jì)量分為兩種:局部統(tǒng)計(jì)量和全局統(tǒng)計(jì)量,局部統(tǒng)計(jì)量與特定的對(duì)象模塊有關(guān),如一個(gè)發(fā)送節(jié)點(diǎn),節(jié)點(diǎn)中的進(jìn)程模型等等,而全局統(tǒng)計(jì)量提供整體系統(tǒng)的相關(guān)信息,仿真中的各個(gè)對(duì)象都可以影響統(tǒng)計(jì)結(jié)果。下面是我自定義統(tǒng)計(jì)量的操作步驟:1 .打開一個(gè)進(jìn)程模型 (process model ),在進(jìn)程模型的菜單Interfaces 下拉選項(xiàng)中有局 部或者全局統(tǒng)計(jì)量如下圖所示:Local Statistics 和 Global Statistics的操作步驟一樣,故本文以 Global Statistics 為例來說明情況。假定,

17、建立了一個(gè)名為:packet_size的全局統(tǒng)計(jì)量。2 .必須為這個(gè)全局統(tǒng)計(jì)量建立一個(gè)統(tǒng)計(jì)句柄,此步操作需在狀態(tài)變量塊(SV)中操作,創(chuàng)建一個(gè)統(tǒng)計(jì)句柄(Stathandle),命名為PZ;3前面兩部分別創(chuàng)建了全局統(tǒng)計(jì)量packet_size和統(tǒng)計(jì)句柄PZ,但是必須讓兩者聯(lián)系起來才能起到想要的作用,故必須用opnet的核心函數(shù)進(jìn)行統(tǒng)計(jì)量注冊(cè),此步驟一般在有限狀態(tài)機(jī) (FSM )的init中的入口代碼中實(shí)現(xiàn)。注冊(cè)代碼為:PZ =op_stat_reg("pakcet_size",OPC_STAT_INDEX_NONE,OPC_STAT_GLOBAL);注冊(cè)好統(tǒng)計(jì)變量后就可以使用了。第5行是packet_size 統(tǒng)計(jì)量的注冊(cè)語(yǔ)句。* I ay_pks»_nd_pr oc_zhu- init - Ent er Ezecuties |口File £di t OptioAs0 e出空LEUaddress_di st = op_d1sc_Toad C&

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論