در بخش قبلی، یک توپولوژی شبکه ساده معرفی شد و اسکریپت OTcl شبیه سازی آن با نرم افزار NS2 نشان داده شد.

در این قسمت، مراحل ایجاد یک شی شبیه ساز را در این اسکریپت OTcl را به تفصیل بیشتری توضیح میدهیم.

نکته : در این مجموعه آموزش NS2، نرم افزار NS2 در سطوح مقدماتی و متوسط آموزش داده می شود.

این مجموعه خودآموز آنلاین آموزش NS2 به مرور تکمیل می شود و استفاده از آن برای استفاده فردی رایگان است.

برای آموزش NS2 به صورت مستقیم و یا حضوری و همچنین آموزش NS2 در سطح پیشرفته با ما تماس بگیرید.

بطور کلی، یک اسکریپت OTcl در نرم افزار NS2 با ایجاد یک نمونه شی شبیه ساز آغاز می شود.

این دستور یک شی شبیه ساز نرم افزار NS2 را ایجاد کرده و آن را به متغیر ns اختصاص می دهد.

 
#Create a simulator object
set ns [new Simulator]
 

کارهایی که این دستور انجام می دهد عبارتند از:

  • شکل دهی اولیه فرمت بسته های داده (در حال حاضر، از این مورد چشم پوشی کنید)
  • ایجاد یک زمانبند (زمانبند پیش فرض، تقویم می باشد)
  • انتخاب قالب آدرس پیش فرض (در حال حاضر، از این مورد نیز چشم پوشی کنید)

شی Simulator دارای توابع عضوی می باشد که اقدامات زیر را انجام می دهند

  • ایجاد اشیای مرکب از قبیل نود ها و لینکها (بعدا توضیح داده خواهد شد)
  • اتصال اشیایی از اجزای شبکه که ایجاد شده اند (بعنوان مثال attach-agent)
  • تنظیم پارامترهای اجزای شبکه (غالبا برای اشیا ترکیبی)
  • ایجاد اتصالات میان عامل ها (بعنوان مثال: برقراری اتصال بین "tcp" و "sink")
  • مشخص نمودن پارامترهای نمایشگر نرم افزار NAM
  • و غیره

اکثر توابع عضوی برای تنظیم شبیه سازی و زمانبندی شبیه سازی بکار می روند.

( این توابع در بخش بررسی اجمالی داکیومنت نرم افزار NS2، به عنوان توابع اتصال معرفی شده اند)

باوجود این، برخی از آنها برای تنظیم نمایشگر نرم افزار NAM مورد استفاده قرار می گیرند.

پیاده سازی تابعهای عضوی شی "شبیه ساز" از کلاس "Simulator" در فایل "ns-2/tcl/lib/ns-lib.tcl" قرار دارد.

دستور $ns color fid color به منظور تنظیم رنگ بسته های جریانی که توسط شناسه جریان (fid) مشخص شده است، بکار می رود.

 
#Define different colors for data flows (for NAM)
$ns color 1 Blue
$ns color 2 Red
 

این تابع عضوی شی "شبیه ساز" "Simulator" برای نمایشگر نرم افزار NAM بکار رفته و هیچ تأثیری بر شبیه سازی واقعی ندارد.

 
#Open the NAM trace file
set nf [open out.nam w]
$ns namtrace-all $nf
 

تابع عضوی $ns namtrace-all file-descriptor موجب می شود که شبیه ساز، نتیجه خروجی یا رد پای شبیه سازی (trace) را با فرمت ورودی نرم افزار NAM ذخیره کند.

همچنین، نام این فایل خروجی مشخص شده است. فرمان $ns flush-trace در نهایت این فایل را ایجاد خواهد کرد.

به همین ترتیب، تابع عضوی trace-all برای ثبت نتیجه خروجی شبیه سازی با یک فرمت کلی می باشد.

تابع proc finish {} پس از پایان یافتن شبیه سازی توسط فرمان $ns at 5.0 "finish" فراخوانی می شود.

 
#Define a 'finish' procedure
proc finish {} {
        global ns nf
        $ns flush-trace
        #Close the NAM trace file
        close $nf
        #Execute NAM on the trace file
        exec nam out.nam &
        exit 0
}
 

در این تابع، فرایندهایی که پس از شبیه سازی باید انجام شود مشخص شده اند.

دیدگاه‌ها  

0 #3 آموزش نرم افزار 1395-06-03 10:17
به نقل از marjan ariss:
با سلام
وقتی نمومه کد وایرلس( شبکه بی سیم ) را در ns اجرا می کنم این خطا را می دهد. خواهشمند است راهنمایی فرمایید.
[email protected]:~$ ns simple-wireless.tcl
num_nodes is set 2
warning: Please use -channel as shown in tcl/ex/wireless-mitf.tcl
INITIALIZE THE LIST xListHead
Starting Simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING...
[email protected]:~$


با سلام و تشکر از تماس شما

کد شما خطایی ندارد و به درستی اجرا شده .

آنچه می بینید پیغام های نرم افزار درحال اجرا است.

البته این مثال اندکی قدیمی بوده و یک پیام اختار هم داده است.

اما در مجموع شبیه سازی به درستی انجام شده و احتمالا باید یک فایل با پسوند tr

در همین شاخه مشاهده کنید که خروجی شبیه سازی است. اطلاعات مفید باید از این فایل خروجی استخراج شود.

با شرکت در دوره های فشرده اموزش ns2 دراموزشگاه تیپی میتوانید به سرعت به نحوهنوشتن این فایل ورودی و پروسس کردن خروجی ها مسلط شوید.

جهت اطلاعات بیشتر تماس بگیرید.

موفق باشید.
نقل قول کردن
0 #2 marjan ariss 1395-06-02 01:58
با سلام
وقتی نمومه کد وایرلس( شبکه بی سیم ) را در ns اجرا می کنم این خطا را می دهد. خواهشمند است راهنمایی فرمایید.
[email protected]:~$ ns simple-wireless.tcl
num_nodes is set 2
warning: Please use -channel as shown in tcl/ex/wireless-mitf.tcl
INITIALIZE THE LIST xListHead
Starting Simulation...
channel.cc:sendUp - Calc highestAntennaZ_ and distCST_
highestAntennaZ_ = 1.5, distCST_ = 550.0
SORTING LISTS ...DONE!
NS EXITING...
[email protected]:~$
نقل قول کردن
0 #1 آموزش نرم افزار 1395-05-17 12:57
به نقل از marjan ariss:
با سلام
من این دستور ها تایپ کردم
[email protected]:~$ ns
% set ns [new Simulator]
_o4
% set n0 [$ns node]
_o11
% set n1 [$ns node]
_o14
% $ns duplex-link $n0 $n1 1Mb 50ms DropTail
% set udp [new Agent/UDP]
_o29
% set null [new Agent/Null]
_o30
% $ns attach-agent $n0 $udp
% $ns attach-agent $n1 $null
% $ns connect $udp $null
_o29

و وقتی این دستور می نویسم

set cbr [newApplication/Traffic/CBR


این پیغام خطا را می دهد

wrong # args: should be "new className ..."
%


با سلام و تشکر از تماس شما

ترجیحا همه دستورهای مورد نظرتون رو در یک فایل متنی بنویسید و با پسوند .tcl ذخیره کنید. مثلا test.tcl

بعد با دستور
ns test.tcl

کدهای مورد نظرتون رو اجرا کنید.
دقت کنید که بین کلمه کلیدی new و اسم کلاس باید فاصله وجود داشته باشه

اگر از ادیتورهای متنی مثل gedit یا pluma استفاده کنید، قابلیت کد هایلایت دارند که به رفع خطاهای تایپی کمک میکنند.

اگر باز هم به مشکل برخورد کردید کد + خطا رو در همینجا بگذارید تا جواب بگیرید

موفق باشید
نقل قول کردن

نوشتن دیدگاه


 

آموزش های گام به گام

آموزش زبان برنامه نویسی Tcl

آموزش نرم افزار SUMO برای شبیه سازی ترافیک شهری

دومین دوره مسابقات برنامه نویسی دانش آموزی امیرکبیر

دومین دوره مسابقات برنامه نویسی دانش آموزی امیرکبیر

ادامه مطلب...

دومین دوره مسابقات برنامه نویسی دانش آموزی امیرکبیر

دومین دوره مسابقات برنامه نویسی دانش آموزی امیرکبیر

ادامه مطلب...

مسابقه حل مسائل مهندسی شیمی به کمک کامپیوتر دانشگاه صنعتی شریف

مسابقه حل مسائل مهندسی شیمی به کمک کامپیوتر دانشگاه صنعتی شریف
مسابقه حل مسائل مهندسی شیمی به کمک کامپیوتر دانشگاه صنعتی شریف

ادامه مطلب...

سمینار پردازش زبان طبیعی

سمینار پردازش زبان طبیعی
سمینار پردازش زبان طبیعی

ادامه مطلب...