1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Hướng dẫn TicToc cho Omnet

26 363 5

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 26
Dung lượng 0,98 MB

Nội dung

Đây là bài tập đơn giản giúp bạn làm quen với phần mềm Omnet trong việc mô phỏng kỹ thuật viễn thông. Trong tài liệu trình bày chi tiết về cách thức thực hiện như các viết code,cách mô phỏng...ho bạn thấy một số cách thông thường dùng với các tiện ích Omnet++.

Hướng dẫn TicToc cho Omnet++ ng dn ngng dn v Omnet++ giúp bn do qua mt ví d cho vic mô hình hóa và mô phng, cho bn thy mt s ng dùng vi các tin ích Omnet++. Bài này da trên ví d mô phng TicToc, bn có th tìm thy ví d này trong c samples/tictoc ca b cài Omnet++, nên bn có th th ngay lp tc cách các ví d làm vic th nào. Tuy nhiên, bn s tìm thy nhing dn hu bn thc s thc hành ít nhu tiên mô t   Chú ý: Chúng tôi gi s  ng bt b cài làm vic Omnet++. Chúng tôi  s rng bn có mt kin thc tt v C++, và b thuc vi vic phát trin C/C++ (chnh sa file ngun, dch, bt l u hành ca bn. (u va ri là ngoài phm vi ca chúng tôi  - có nhiu cung dn tu bn cn cp nht kin thc  ngh s dng phát trin tích hp Omnet++ cho vic chnh sa và xây dng các mô phng ca bn.  làm các ví d d t c các code ngun s c nêu   mà ch c nêu tên, bn s t tìm  c samples/tictoc. Tài liu này và mô hình TicToc là mt phiên bc m rng bng dn TicToc gc t Ahmet Sekercioglu (i hc Monash). Ni dung: I.Khởi đầu II.Tăng cường thành 2-node TicToc III.Chuyển thành một mạng thực tế hơn I.Khởi đầu: Sources: tictoc1.ned, txc1.cc, omnetpp.ini Vì vùng ng dng ph bin nht ca Omnet++ là mô phng các mng truyn thông, chúng ta s làm vi ch  này t vi bu, chúng ta bu vi mt mng bao gm 2 node. Các node s làm vài vin: mt trong các node s to mt packet, và 2 node s gi vic qua li cùng gói tin vào và ra. Chúng ta g  c bn thc hin mô phu tiên ca bn t u: 1.To mc làm vic gi là tictoc và cd (lnh cd ca dos) c này 2.Mô t mng ví d ca bn bng vic to mt file topology. Mt file topology là mnode ca mng và các liên kt gia chúng. Bn có th to nó vi trình chnh sa bt tên cho nó là tictoc1.ned: // // This file is part of an OMNeT++/OMNEST simulation example. // // Copyright (C) 2003 Ahmet Sekercioglu // Copyright (C) 2003-2008 Andras Varga // // This file is distributed WITHOUT ANY WARRANTY. See the file // `license' for details on this and other legal matters. // simple Txc1 { gates: input in; output out; } // // Two instances (tic and toc) of Txc1 connected both ways. // Tic and toc will pass messages to one another. // network Tictoc1 { submodules: tic: Txc1; toc: Txc1; connections: tic.out > { delay = 100ms; } > toc.in; tic.in < { delay = 100ms; } < toc.out; } c tt nht là t i lên.  n nói: -TicToc1 là mt mc tp hp t hai module con, tic và toc. Tic và toc là các th hin ca cùng 1 kiu module gi là Txc1. Chúng ta kt ni cng ra ca n cng vào cc l tr 100ms vi c ng. -Txc1 là mt kic nguyên t trong ngôn ng Ned, và s t trong C++). Txc1 có 1 cng vào tên là in, và mt cng ra tên là out. 3.Chúng ta ct chn Txc1. Vi tr bi mt file C++ tên là txc1.cc: // // This file is part of an OMNeT++/OMNEST simulation example. // // Copyright (C) 2003 Ahmet Sekercioglu // Copyright (C) 2003-2008 Andras Varga // // This file is distributed WITHOUT ANY WARRANTY. See the file // `license' for details on this and other legal matters. // #include <string.h> #include <omnetpp.h> class Txc1 : public cSimpleModule { protected: // The following redefined virtual function holds the algorithm. virtual void initialize(); virtual void handleMessage(cMessage *msg); }; // The module class needs to be registered with OMNeT++ Define_Module(Txc1); void Txc1::initialize() { // Initialize is called at the beginning of the simulation. // To bootstrap the tic-toc-tic-toc process, one of the modules needs // to send the first message. Let this be `tic'. // Am I Tic or Toc? if (strcmp("tic", getName()) == 0) { // create and send first message on gate "out". "tictocMsg" is an // arbitrary string which will be the name of the message object. cMessage *msg = new cMessage("tictocMsg"); send(msg, "out"); } } void Txc1::handleMessage(cMessage *msg) { // The handleMessage() method is called whenever a message arrives // at the module. Here, we just send it to the other module, through // gate `out'. Because both `tic' and `toc' does the same, the message // will bounce between the two. send(msg, "out"); } Kic mô t bi lp C++ : Txc1, cái này là mt lp con t l       Omnet++ vi macro c t cSimpleModule: c triu gi t nhân mô phng: cái u tiên ch duy nht 1 ln, còn cái th hai thì khi mn ti mt module. Trong initialize() chúng ta to mp (cMessage), và gi nó ra ngoài qua cng out. Vì cc kt nn cng ra ca module khác, nhân mô phng s      n module khác trong handleMessage()sau truyn thông tr  liên kt trong file Ned. Module khác gi nó quay li (v tr 100ms), nên nó s có h qu u ng ping-pong liên tc.        kin (các b nh thi, c môt t tt c bng cMessage( hoc các lp con ca nó) trong Omnet++. Sau khi bn gi hoc lên lch cho chúng, chúng s c t chc bi nhân mô ph kit l kin n khi thi gian cc phân phn các module thông qua handleMessage(). Chú ý rng  u kin dng cho mô phng này: nó s tip tn mãi mãi. Bn có th dng nó t giao dii dùng. (Bn có th nh thi gian gii hn cho mô phng hoc gii hn thi gian cho CPU trong file cu  ng dn này). 4. Chúng ta bây gi to Makefile cái này s giúp chúng ta dch và liên kt       to file tictoc có kh  y: $ opp_makemake Lnh này s phi to ra mt makefc làm vic tictoc: 5.Gi ta dch và liên kt mô phu tiên ca chúng ta bng vic dùng lnh make: $ make 6.Nu bn bu chy bây gi, nó s gii thích nó không th tìm thy file omnetpp.ini, nên bn phi to my. omnetpp.ini nói v trình mô phng cái mng bn mun mô phng (vâng, 1 vài mng có th sng ng), bn có th  cho mô nh chính xác các seed cho vic sinh s ng To mt file omnetpp.ini r [General] Network=Tictoc1 Tictoc2 và cho tt c c sau  file omnetpp.ini sau: # This file is shared by all tictoc simulations. # Lines beginning with `#' are comments [General] # nothing here [Config Tictoc1] network = Tictoc1 [Config Tictoc2] network = Tictoc2 [Config Tictoc3] network = Tictoc3 [Config Tictoc4] network = Tictoc4 Tictoc4.toc.limit = 5 [Config Tictoc5] network = Tictoc5 **.limit = 5 [Config Tictoc6] network = Tictoc6 [Config Tictoc7] network = Tictoc7 # argument to exponential() is the mean; truncnormal() returns values from # the normal distribution truncated to nonnegative values Tictoc7.tic.delayTime = exponential(3s) Tictoc7.toc.delayTime = truncnormal(3s,1s) [Config Tictoc8] network = Tictoc8 [Config Tictoc9] network = Tictoc9 [Config Tictoc10] network = Tictoc10 [Config Tictoc11] network = Tictoc11 [Config Tictoc12] network = Tictoc12 [Config Tictoc13] network = Tictoc13 7.Khi b    c trên, bn chy mô phng bng lnh này: $ ./tictoc Và hi vng bc ca s mô phng Omnet++ 8.n nút Run trên thanh công c  khng mô phng. Bn s thy cais cách p vi nhau. Công c ca s chính hin th thi gian mô phng. Thi gian này là thi gian o, không có gì n thi gian thng h ng) v y. Thc s, s giây bn có th chy trong th gii thc ph thuc cao vào t ca phn cng ca bn và thng  phc tp ca chính mô hình mô phng. Chú ý rng thi gian mô phng cho m x lí tin nhn là bng 0. Ch nhng th i gian mô phng qua l tr trong các kt ni. 9.Bn có th làm chnh hoi thanh cun  trên nh ca s  ha. Bn có th dng môt hình bng  n nút stop trên toolbar), chy tc (f4), chay nó vi f5 hoc thoát khi hình nh (f6). 10.Bn có th thoát kh    ng bng vic click vào biu ng close hoc la chn File|Exit II.Bổ sung thêm cho 2 node TicToc: Bước 2: thêm ảnh đồ họa, và thêm đầu ra gỡ lỗi Sources: tictoc2.ned, txc2.cc, omnetpp.ini                u  file images/block/routing.png) và tô nó màu tía cho tic và vàng cho toc. Vic bng vic thêm chui hin th n file NED. Th i= trong chui hin th nh icon. // "block/routing" icon to the simple module. All submodules of type // Txc2 will use this icon by default // simple Txc2 { parameters: @display("i=block/routing"); // add a default icon gates: input in; output out; } // // Make the two module look a bit different with colorization effect. // Use cyan for `tic', and yellow for `toc'. // network Tictoc2 { submodules: tic: Txc2 { parameters: @display("i=,cyan"); // do not change the icon (first arg of i=) just colorize it } toc: Txc2 { parameters: @display("i=,gold"); // here too } connections: Bn s thy kt qu  nh s p g li cho Txc1 bng vic chuy         \ Và EV<<-\ Khi bn chy mô phng trong giao din Tkenv c xut hin trên ca s n: Bn có th m mt dãy các ca s u ra cho tic và toc bng vic n chut phi trên bing và la chn module output t menu. Tin ích này s hu ích khi bn có mt môt hình và bn ch p ghi li ca module c th  Bước 3: thêm một biến trạng thái Sources: tictoc3.ned, txc3.cc, omnetpp.ini c này chúng ta thêm mt b p sau i. Chúng ta thêm b p: class Txc3 : public cSimpleModule { private: int counter; // Note the counter here protected: Chúng ta thit lp bin giá tr là 10 trong initialize() và gim trong            m v 0, mô phng s ht s kin và hy. Chú ý dòng: WATCH(counter); Dòn trong mà ngun: vic này làm có th nhìn thy giá tr b m trong Tkenv. t vào bing ca chn ni dung trang Content t ca s theo dõi: . Tictoc1 [Config Tictoc2 ] network = Tictoc2 [Config Tictoc3 ] network = Tictoc3 [Config Tictoc4 ] network = Tictoc4 Tictoc4 .toc.limit = 5 [Config Tictoc5 ] network = Tictoc5 **.limit. dẫn TicToc cho Omnet+ + ng dn ngng dn v Omnet+ + giúp bn do qua mt ví d cho vic mô hình hóa và mô phng, cho bn thy mt s ng dùng vi các tin ích Omnet+ + nonnegative values Tictoc7 .tic.delayTime = exponential(3s) Tictoc7 .toc.delayTime = truncnormal(3s,1s) [Config Tictoc8 ] network = Tictoc8 [Config Tictoc9 ] network = Tictoc9 [Config Tictoc1 0]

Ngày đăng: 19/10/2014, 08:40

TỪ KHÓA LIÊN QUAN