1. 程式人生 > >【OPNET學習系列文章之2】兩個固定節點通訊

【OPNET學習系列文章之2】兩個固定節點通訊

九步入門OPNET程式設計

1.新建一個專案

在選單欄依次點選File-New,選擇Project,然後點選OK進入Entername頁面,分別輸入Project NameScenario Name,如下圖所示,單擊OK進入主頁面。

 

2.建立包格式

在選單欄依次點選File-New,選擇Packet Format,然後單擊OK進入Packet Format頁面,單擊工具欄Create New Field圖示建立包中的一個欄位,可以連續放置多個欄位,右鍵退出,如圖所示。可以右鍵Edit Attribute設定該欄位的屬性,如名稱、大小等。最後儲存,設定資料包檔案的名稱,以後通過該名稱使用該資料包。

 

3.建立同時具有傳送和接收功能的節點模型

在選單欄依次點選File-New,選擇Node Model,然後單擊OK進入Node Model頁面,使用工具欄上的相應圖示建立如圖所示的模型,圖中包含的圖示有Create Point-to-Point ReceiverCreate Packet StreamCreate ProcessorCreate Point-to-Point Transmitter。最後儲存節點模型。

 

4.建立程序模型

4.1在選單欄依次點選File-New,選擇Progress Model,然後單擊OK進入Progress Model頁面,使用工具欄上的相應圖示建立如圖所示的模型,圖中包含的圖示有

Create StateCreate Transition,需要在起始狀態st_0上點選set intial state這樣左邊會有一個黑色箭頭,起初狀態的顏色都是紅色的,需要在狀態上右擊Make State Forced才能使狀態變成綠色(具體原因有待確定)。

 

4.2右擊st_2st_4的鏈路,點選Edit Attribute,將屬性表裡的condition值改為SEND,這樣箭頭線會變成虛線並有文字,如圖所示,點選OK

 

同理,右擊st_2st_3的鏈路,點選Edit Attribute,將屬性表裡的condition值改為ARRIVAL。這裡SENDARRIVAL

是中斷的名稱,接下來會在標頭檔案中定義。

4.3單擊工具欄Edit Header Block圖示,輸入以下程式碼,儲存。

#include <stdlib.h>

#define SEND (op_intrpt_type()==OPC_INTRPT_SELF&&op_intrpt_code()==0)

#define ARRIVAL (op_intrpt_type()==OPC_INTRPT_STRM)

  4.4雙擊st_1上半部分,輸入以下程式碼,儲存。

op_intrpt_schedule_self(0.0,-1);

雙擊st_1下半部分,輸入以下程式碼,儲存。

op_intrpt_schedule_self(op_sim_time()+0.0,0);

  4.5雙擊st_3上半部分,輸入以下程式碼,儲存。

Packet *pkptr;

pkptr=op_pk_get(op_intrpt_strm());//通過流得到資料包

op_pk_destroy(pkptr);//銷燬資料包

  4.6雙擊st_4上半部分,輸入以下程式碼,儲存。

Packet *pkptr;

pkptr=op_pk_create_fmt("packet1");

op_pk_send(pkptr,0);

op_intrpt_schedule_self(op_sim_time()+1,0);//設立自中斷,獲取當前模擬時間並+1表示在該包傳送1s後再發送下一個包,0表示中斷名稱

  4.7單擊選單欄Interfaces-Process Interfaces,將begsim intrpt設為enabled,單擊OK儲存程序模型,如圖所示。

 

4.8單擊工具欄Compile Process Model圖示,編譯該程序模型,如圖所示,編譯正確。

 

5.在節點模型中,右擊p_0,選擇Edit Attribute,將process model的值設為剛才儲存的程序模型名,如圖所示,單擊OK,儲存節點模型。

 

6.建立網路模型

Project頁面的工具欄裡單擊Open Object Palette圖示,查詢到剛才儲存的節點模型,選擇固定節點,放置在頁面中,分別設定名稱為sendreceive,如圖所示,此時並沒有兩個節點之間的連線。

 

7.建立鏈路模型

在選單欄依次點選File-New,選擇Link Model,然後單擊OK進入Link Model頁面,在Support  link types中設定如下圖所示。

 

Attributes中的closure modelcoll modelerror modelecc modelpropdel modeltxdel model都設定為NONE,儲存。

8.Project頁面的工具欄裡單擊Open Object Palette圖示,查詢到剛才儲存的鏈路模型,移動到頁面中,連線兩個節點。

9.Project頁面的工具欄裡單擊Configure/run圖示,執行模擬,首先如圖所示,在這裡可以設定模擬相關引數。

 

在左側點選Execution-OPNET Debugger,選中右邊的方框,如圖所示。

 

然後點選Run,進入如下圖所示介面。

 

選中中間的Run Animations方框,點選Continue,可以看見以動畫的形式顯示資料包互動的過程。

點選Break暫停,在ODB中輸入q,執行完模擬並結束。可以在Process標籤欄中檢視具體資訊,如圖所示。