【OPNET學習系列文章之2】兩個固定節點通訊
九步入門OPNET程式設計
1.新建一個專案
在選單欄依次點選File-New,選擇Project,然後點選OK進入Entername頁面,分別輸入Project Name和Scenario 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 Receiver、Create Packet Stream、Create Processor、Create Point-to-Point Transmitter。最後儲存節點模型。
4.建立程序模型
4.1在選單欄依次點選File-New,選擇Progress
Model,然後單擊OK進入Progress Model頁面,使用工具欄上的相應圖示建立如圖所示的模型,圖中包含的圖示有
4.2右擊st_2到st_4的鏈路,點選Edit Attribute,將屬性表裡的condition值改為SEND,這樣箭頭線會變成虛線並有文字,如圖所示,點選OK。
同理,右擊st_2到st_3的鏈路,點選Edit
Attribute,將屬性表裡的condition值改為ARRIVAL。這裡SEND和ARRIVAL
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圖示,查詢到剛才儲存的節點模型,選擇固定節點,放置在頁面中,分別設定名稱為send和receive,如圖所示,此時並沒有兩個節點之間的連線。
7.建立鏈路模型
在選單欄依次點選File-New,選擇Link Model,然後單擊OK進入Link Model頁面,在Support link types中設定如下圖所示。
將Attributes中的closure model、coll model、error model、ecc model、propdel model、txdel model都設定為NONE,儲存。
8.在Project頁面的工具欄裡單擊Open Object Palette圖示,查詢到剛才儲存的鏈路模型,移動到頁面中,連線兩個節點。
9.在Project頁面的工具欄裡單擊Configure/run圖示,執行模擬,首先如圖所示,在這裡可以設定模擬相關引數。
在左側點選Execution-OPNET Debugger,選中右邊的方框,如圖所示。
然後點選Run,進入如下圖所示介面。
選中中間的Run Animations方框,點選Continue,可以看見以動畫的形式顯示資料包互動的過程。
點選Break暫停,在ODB中輸入q,執行完模擬並結束。可以在Process標籤欄中檢視具體資訊,如圖所示。