الدرس السابع فى دورة برنامج السميولينك - المخطط المنطقي للنموذج

Modeling Control Flow Logic

يتيح لنا السميولينك باستخدام بلوكات البرمجة مثل المستخدمة فى لغة السى وهى


for


if-else


switch


While

اولا


Modeling If-Else Control Flow

والان سنقوم بعمل نموذج بسيط لتوضيح كيفية محاكاة if

قم بعمل نموذج جديد وضع فيه بلوك if من مكتبة ports & subsystems

قم بوضع دخل للبلوك وليكن دالة جيب باقصى ارتفاع 10

ثم قم بالضغط على بلوك if وقم بتعديل if expression وليكن u1>0

ثم قم بادراج بلوك action subsystem

وقم بتوصيل خرج البلوك على بلوك action subsystem

وقم بتوصيل دخل بلوك action subsystem بدالة ال sine

كما بالشكل الاتى ::





ومن النظام السابق نتوقع ان الشرط يتحقق فى القيم الموجبة لدالة الجيب كما يلى :





اما فى حالة عدم تحقق الشرط فان ذلك فى حالة القيم السالبة لدالة الجيب كما يلى :





واذا كنت ترغب فى محاكاة elseif كما فى لغة السى يمكنك وضع الشرط فى نافذه الخصائص كما بالشكل الاتى





يرجى محاولة تنفيذ هذا البلوك عمليا حتى تكتشف بنفسك امكانيات البرنامج ويرجى ارسالها لى فى حالة اى اخطاء



Modeling Switch Control Flow

وكما سبق فى حالة if سنقوم الان بعمل نموذج بسيط لتوضيح switch

1- قم بعمل نموذج جديد وقم بسحب بلوك switch case من ports &

subsystems ثم قم بالضغط على البلوك لتعديل خياراته

ففى case condition نحدد عدد الحالات فمثلا نختار 2 ويمكننا تحديد اكثر من

حالة واحده معنا فمثلا لو قمنا بكتابة الاتى :

 
{1,[2,3]}

سيقوم فى الحالة الاولى بوضح قيمة true فى البورت 1

وفى الحالة الثانية سيقوم بوضع قيمة true فى البورت 2 و 3

ويكون ايضا هناك حالة تسمى default وتكون true فى حالة عدم تنفيذ اى من

الحالات السابقة .

ولا بد ان يكون هذا الخرج ايضا على action subsystem

ويمكننا وضع الدخل بساعة قيمته من 1 الى 10

ويكون شكل النموذج كما يلى ::

[SIZE=4][COLOR=royalblue]

[/color][/size]


ويكون شكل اشارة التحكم

[SIZE=4][COLOR=royalblue]

[/color][/size]

ويكون شكل الاشارة الداخلة والتى يكون تنفيذها بناء على الحالات

[SIZE=4][COLOR=royalblue]

[/color][/size]


ويكون شكل الخرج فى الحالة الاولى والتى تكون فيها قيمة اشارة التحكم تساوى
1 و 2

[SIZE=4][COLOR=royalblue]

[/color][/size]


ويكون شكل الخرج فى الحالة الثانية والتى تكون فيها قيمة اشارة التحكم تساوى
3 و 4

[SIZE=4][COLOR=royalblue]

[/color][/size]


ويكون شكل الخرج فى الحالة الثالثة والتى تكون فيها قيمة اشارة التحكم تساوى
صفر و 5 و 6 و 7 و 8 و 9

[SIZE=4][COLOR=royalblue]

[/color][/size]


ويجب ملاحظة ان اشارة التحكم تبدا من صفر وتنتهى عند اخر الرقم 9 ولا تاخد قيمة 10

حيث يكون ال sample time = 1

تابع


Modeling While and For Loops

اولا :

Modeling While Loops

فى هذه الانظمة يوجد لدينا بلوكين وهما

While subsystem

والذى سيستمر تنفيذه الى ان يحقيق الشرط الموجود فى بلوك While Iterator


ويجب ملاحظة ان زمن المحاكاة لا يتقدم خلال تنفيذ بلوك While subsystem

وذلك لان كل فترة يتم تنفيذها تعبر عن وحده زمن .

وهذا يجعل بلوك While subsystem الذى يحتوى على حالات مستمرة - والتى يعتمد خرجها على قيمة الدخل السابق – يكون خرجه ناتج عن الدخل فى الفترة السابقة .

والان سنقوم بتنفيذ مثال بسيط

وقبل البدء فى المثال يجب علينا معرفة ان While subsystems مثل ال
Triggered subsystems لا يمكننا وضع بلوك بها ذات زمن تقطيع

sample مستمر وانما يكون متوارث (-1 ) او ثابت (inf)

والان سنضع خطوات البرنامج المطلوب تنفيذها

كما يلى

 
 
Init_max_sum = 100;
sum = 0;
iteration_number = 0;
cond = (max_sum > 0);
while (cond != 0) 
{
    iteration_number = iteration_number + 1;
    sum = sum + iteration_number;
    if (sum > max_sum OR iteration_number > max_iterations) 
    cond = 0;
}


ويكون شكل البرنامج كما يلى

[SIZE=4][COLOR=royalblue]

[/color][/size]

[SIZE=4][COLOR=royalblue]

[/color][/size]

وبالنسبة لل do while فهى قريبة جدا مما سبق ولذلك يرجى عمل نموذج بسيط

يوضح فكرة عملها .


Modeling For Loops


وسنقوم بعمل نموذج بسيط لتوضيح فكرة عمل هذا البلوك حيث سيتم تنفيذ نظام for

الفرعى عدد مرات معين نقوم بتحديده فى For Iterator ويجب ملاحظة ان زمن

المحاكاة لا يتقدم عند تنفيذ فترات for وهذا يجعل بلوك For الذى يحتوى على حالات

مستمرة - والتى يعتمد خرجها على قيمة الدخل السابق – يكون خرجه ناتج عن الدخل

فى الفترة السابقة .

والان قوم بسحب بلوك For Iterator Subsystem الى نموذج فارغ ثم قم

بالضغط عليه وثم قم بالدخول الى خصائص For Iterator block وقم بوضع عدد

مرات تنفيذ البلوك N

والان سنتعرف على بلوك Assignment لانه مفيد جدا مع for حيث يقوم باعادة

تخصيص القيم فى المصفوفات وايضا سنقوم باستعمال selector ليقوم باختيار

عنصر عنصر من المصفوفة

وسنقوم بحساب دالة الجيب وهى Trigonometric Function لهذه المصفوفة

ثم تمرريها الى بلوك Assignment

ليقوم بوضع قيم الدالة المحسوبة فى صورة مصفوفة مرة اخرى

والمثال كما يلى :

[SIZE=4][COLOR=royalblue]

[/color][/size]

[SIZE=4][COLOR=royalblue]

[/color][/size]

انتهى الدرس السابع

إعجاب واحد (1)

الدرس فى صورة pdf

part07.pdf (190.1% u)

إعجاب واحد (1)