دورة المحاكاة بإستخدام السميولينك Simulink

الحالة
مغلق و غير مفتوح للمزيد من الردود.

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
السلام عليكم ورحمة الله وبركاته



بسم الله الرحمن الرحيم

دورة المحاكاة بإستخدام السميولينك SIMULINK




وستكون مجموعة من الدروس الاسبوعية وسوف يكون الدرس كل يوم سبت ان شاء الله وسيكون هذا الموضوع مغلق وللرد او الاستفسارات او المداخلات يرجى الدخول على الرابط الاتى:
http://www.arab-eng.org/vb/showthread.php?t=19692



وتتكون الدورة مما يلى


مقدمة فى ال SIMULINK


أساسيات ال SIMULINK


التعامل مع البلوكات

التعامل مع الاشارات
التعامل مع البيانات
التعامل مع الجداول
النمذجة
المحاكاه
تحليل النتائج
عمل نماذج فرعية Subsystems


التعامل مع simulink Debugger


التعامل مع Simulink Accelerator


عمل بلوكات تحتوى على دوال ماتلاب

مقدمة عن ال S-function


كتابة ال S-function باستخدام M-files


كتابة ال S-function باستخدام C++ codes


عمل خصائص للبلوك





والان سبدأ فى الدرس الاول ليوم السبت 26/5/2006


 
التعديل الأخير:

مواضيع مماثلة

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
الدرس الاول :: ما هو ال Simulink ؟؟

مقدمة فى ال SIMULINK







اولا : لنتعرف ما هو ال Simulink ؟؟



ال Simulink هو برنامج للنمذجة و المحاكاة و تحليل الانظمة الديناميكية سواء كانت خطية او غير خطية و يقوم أيضا بنمذجة الانظمة سواء فى الزمن المستمر او فى الزمن الغير مستمر .
وباستخدام ال simulink يمكنك بناء نماذج من البداية او التعديل على انظمة موجودة بالفعل والفائدة من ذلك هو دراسة خصائص نظام التحكم اوالمنظومة قبل البدء فى التنفيذ حتى نحدد مدى استجابة النظام لما نقوم بعمله وهو الحاكم وهل نظام التحكم الموجود سيعطى احسن استجابة وأقل اخطاء ام لا ؟
وال simulink ليس قاصرا على التحكم وتطبيقاته وانما يحتوى على مجموعة من البلوكات والتى تغطى أغلب تطبيقات الهندسة الميكانيكية والكهربية وهندسة الطيران.
ويعتبر ال SIMULINK اداة ممتازة لى Model-Based Design وهذا معناه ان البرنامج ليس فقط قاصرا على الانظمة المثالية ولكن يمكنك ايضا من نمذجة انظمة حقيقة والتى يوجد بها عوامل موثرة لجعلها غير خطية nonlinear مثل الاحتكاك ومقامة الهواء وانزلاق التروس والظواهر الطبيعية الاخرى .
كما يوجد فى البرنامج العديد من النماذج Demo لاغلب التطبيقات يمكنك استخدامها او التعديل عليها .
والتعامل مع ال simulink سهل جدا فهو يوفر بما يسمى graphical user interface (GUI) فى بناء النماذج حيث تقوم بسحب البلوكات التى تريدها الى صفحة النموذج وتقوم بتوصيلها بطريقة سهلة و يمكنك ايضا تغير خصائص البلوكات الموجودة بالضغط عليها بالماوس وتعديل خصائصها كما يمكنك ايضا عمل البلوكات الخاصة بك و يكون هذا باستخدام ما يسمى بى S-function وسوف نتعرض له لاحقا .
وبعد بناء النموذج نقوم بتشغيل النموذج لعمل ال simulation ويمكنك اختيار خصائص ال simulation وطريقة التكامل وهذا يكون فى non-real time كما يمكننا ايضا عمل محاكاة للنماذج فى ال real time وهذا باستخدام مجموعة البلوكات الموجودة فى البرنامج باسم Xpc Target و Real Time Workshop وسوف نتعرض لهذا لاحقا .
ويمكننا التحكم فى ال Simulation من خلال سطر أوامر الماتلاب وهذا يكون مفيد جدا فى حالة الرغبة لعمل Simulation لأكثر من نموذج و ويمكن تخزين النتائج و استخدامها مع ال Toolboxs الموجودة فى الماتلاب .
والصورة الاتية توضح الواجهة الرئيسية للبرنامج



image001.jpg








والصورة الاتية توضح صفحة بناء النماذج







image003.jpg








ثانيا : سنرى كيفية بناء النماذج Building a Model








سنقوم الان بعمل نموذج بسيط لنظام معين و يتكون هذا النموذج من






signal generator






حيث يقوم بتوليد العديد من أنواع أل signals لتطبيقها على النظام الموجود وسنستخدم منها square wave.



Transfer function


وهى تمثل النظام الموجود لدينا وهو نظام بسيط من الدرجة الثانية

Scope


ويستخدم فى عرض نتائج عملية ال Simulation




Mux block


ويستخدم هنا لعرض اكثر من signal فى نفس ال scope






وفى الصورة التالية نرى الشكل العام للنموذج :






image005.jpg








وللبدء فى العمل






اولا سنقوم بفتح نموذج فارغ ::






لفتح برنامج ال simulink قم بالكتابة فى سطر أوامر الماتلاب ما يلى






كود:
>>simulink






او بالضغط على هذا الزر فى واجهة الماتلاب كما موضح بالصورة






image008.jpg







وبعد ذلك بالضغط على نموذج جديد كما لاحظنا سابقا وسيكون على الصورة الاتية :​







image009.jpg





تابع​

 
التعديل الأخير:

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تابع الدرس الاول






[FONT=Arial (Arabic)]
والان سنقوم بمرحلة اضافة البلوكات المطلوبة
[/FONT]
[FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]



اولا أضافة ال




[/FONT]
Signal generator






[FONT=Arial (Arabic)]
قم بالضغط على قائمة
[/FONT]
[FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]


[/FONT]
simulink [FONT=Arial (Arabic)]لتفتح لك مجموعة من الاقسام [/FONT]​


[FONT=Arial (Arabic)]



اختار منها




[/FONT]
sources






[FONT=Arial (Arabic)]
وستفتح لك على اليمين مجموعة البلوكات الموجودة فى هذا القسم أختار منها
[/FONT]
[FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]


[/FONT]
signal generator






[FONT=Arial (Arabic)]
وقم بالضغط على الماوس وسحب البلوك الى النموذج
[/FONT]
[FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]



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






image011.jpg







[FONT=Arial (Arabic)]
ثانيا
[/FONT]
[FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]


[/FONT]
: [FONT=Arial (Arabic)]اضافة ال [/FONT]scope






1 - [FONT=Arial (Arabic)]قم بالضغط على قائمة [/FONT]simulink [FONT=Arial (Arabic)]لتفتح لك مجموعة من الاقسام [/FONT]


[FONT=Arial (Arabic)]



[/FONT]
2- [FONT=Arial (Arabic)]أختار منها [/FONT]sinks






3- [FONT=Arial (Arabic)]أختار من اليمين [/FONT]scope






[FONT=Arial (Arabic)]
وقم بالضغط على الماوس وسحب البلوك الى النموذج
[/FONT]
[FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]
[/FONT][FONT=Arial (Arabic)]



والخطوات السابقة موضحة فى الشكل الاتى






image013.jpg








ثالثا : لاضافة ال transfer function






قم بالضغط على قائمة simulink لتفتح لك مجموعة من الاقسام






اختار منها continuous






ومن اليمين اختار transfer function






وقم بالضغط على الماوس وسحب البلوك الى النموذج







والخطوات السابقة موضحة فى الشكل الاتى







image015.jpg








رابعا ::لاضافة ال Mux block






قم بالضغط على قائمة simulink لتفتح لك مجموعة من الاقسام






اختار منها Signal Routing






ومن اليمين اختارMux






وقم بالضغط على الماوس وسحب البلوك الى النموذج






والخطوات السابقة موضحة فى الشكل الاتى



[/FONT]
[/FONT]
image017.jpg




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


image019.jpg


تابع





 
التعديل الأخير:

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تابع الدرس الاول


[FONT=Arial (Arabic)]
والان سبدأ فى عملية التوصيل بين البلوكات [/FONT]::
[FONT=Arial (Arabic)]
وهناك طرقتين للتوصيل
الاولى [/FONT]:
[FONT=Arial (Arabic)]
هى التوصيل السريع و للتوصيل المباشر و ليس للتوصيل الخطوط اى عمل العقد node وتكون عن طريق الضغط على البلوك المراد توصيله حتى يتم تحديده اى ظهور مربعات صغيرة من حوله وبعد ذلك قم بالضغط على مفتاح [/FONT]ctrl [FONT=Arial (Arabic)]فى لوحة المفاتيح مع أستمرار الضغط قم بالذهاب بالماوس الى البلوك الاخر المراد توصيله و قم بالضغط عليه بالماوس ضغطة واحده و ستلاحظ ان يتم التوصيل مباشرة [/FONT].
[FONT=Arial (Arabic)]
والطريقة الاخرى هى التوصيل اليدوى وتكون عن طريق تحريك الماوس على طرف البلوك عند النقطة المراد توصيلها حتى ياخد شكل الماوس علامة [/FONT]+ [FONT=Arial (Arabic)]وبعد ذلك قم بالضغط على الماوس و استمر فى الضغط وقم بالسحب حتى النقطة الاخرى المراد توصيلها حتى يأخد شكل الماوس علامة [/FONT]+ [FONT=Arial (Arabic)]ولكن مذدوجة ثم اترك الماوس ليتم التوصيل مباشرة كما يلى [/FONT].

image021.jpg


[FONT=Arial (Arabic)]
والان سنتقل الى مرحلة​
[/FONT]
Configuring the Model
اى التعديل فى خصائص البلوكات
[FONT=Arial (Arabic)]
اولا [/FONT]:: [FONT=Arial (Arabic)]قم بالضغط [/FONT]double click[FONT=Arial (Arabic)]على بلوك [/FONT]signal generator [FONT=Arial (Arabic)]وقم بوضع الخصائص كما موضح فى الصورة التالية [/FONT]::


image023.jpg

[FONT=Arial (Arabic)]
وايضا بالنسبة لل [/FONT]transfer function

image025.jpg


[FONT=Arial (Arabic)]
والان سنتقل الى مرحلة عمل ال [/FONT]Simulation
[FONT=Arial (Arabic)]
اولا قم بتحديد زمن ال [/FONT]simulation [FONT=Arial (Arabic)]وليكن [/FONT]10 [FONT=Arial (Arabic)]ثوانى

[/FONT]
[FONT=Arial (Arabic)]
ثانيا [/FONT]: [FONT=Arial (Arabic)]قم بالضغط على [/FONT]start simulation [FONT=Arial (Arabic)]كما موضح فى الشكل التالى [/FONT]:


image027.jpg

[FONT=Arial (Arabic)]
وبعد الضغط على [/FONT]start simulation [FONT=Arial (Arabic)]قم بالضغط [/FONT]double click [FONT=Arial (Arabic)]على أل [/FONT]Scope [FONT=Arial (Arabic)]لمشاهدة نتيجة عملية أل [/FONT]Simulation [FONT=Arial (Arabic)]وهى عبارة عن استجابة النظام الموجود وهو نظام من الدرجة الثانية ل [/FONT]square wave
[FONT=Arial (Arabic)]
لمدة [/FONT]10 [FONT=Arial (Arabic)]ثوانى كما موجود فى الصورة الاتية

[/FONT]


image029.jpg

[FONT=Arial (Arabic)]
أنتهى الدرس الاول والى اللقاء فى الدرس القادم وهو أساسيات السيمولنيك
[/FONT]
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
الدرس الثانى :: كيف يعمل السميولينك ؟؟

كيف يعمل السميولينك ؟؟


مقدمة
يقوم السميولنك بمحاكاة الأنظمة الديناميكية كما تعرفنا سابقا وتتم هذه العملية بمرحلتين هما :
المرحلة الأولى يقوم بها المستخدم بعمل النموذج والذى يحتوى على مجموعة البلوكات المطلوبة .
والمرحلة الثانية يقوم البرنامج بتنفيذ عملية المحاكاة فى الفترة الزمنية المطلوبة .​

نمذجة المنظومات الديناميكية

من المعروف ان المنظومات الديناميكية تتكون من مجموعة من المعادلات الرياضية ويتم تمثيل هذه المعادلات فى السميولنك على هيئة بلوكات وهذه الفكرة مأخوذة من مبادى التحكم الالى والمعروف بى
Block Diagram
وتنقسمالبلوكات فى السميولنك الى نوعان نوع افتراضى و نوع غير أفتراضى
(nonvirtual block and virtual blocks) .
الانواع الغير افتراضية هى التى تمثل عناصر النظام الديناميكى اما الانواع الافتراضية وهى التى تستخدم فى تحويل الاشارات وغيرها دون ان تدخل فى تكوين النظام او معادلاته الرياضية .​

ما معنى "time-based block diagram" ؟؟؟

1- اى ان هناك علاقة زمنية بين الاشارات وبين المتغيرات
(state variables) ويكون حل النموذج اوblock diagram هو حل لهذه العلاقات خلال الزمن المحدد time step والذى يمثل بزمن البداية الى زمن النهاية .
2- الاشارات تعبر عن كميات تتغير مع الزمن وتكون معرفة خلال الفترة الزمنية المحددة .
3- العلاقة بين الاشارات والمتغيرات تكون عبارة عن مجموعة من المعادلات اى ان كل بلوك يحتوى على مجموعة من المعادلات وهذه المعادلات توضح العلاقة بينه و بين الداخل له وبين الخارج منه .​

ويوجد نوعان من انواع البلوكات تبعا لنوعية بناءها​

1- البلوكات الموجودة فى البرنامج وتسمى built-in blocks
2- البلوكات التى يقوم المستخدم بعملها وتسمى
custom blocks User-defined

States
وهى التى تمثل قيم النظام الموجود وهى عبارة عن مجموعة من المتغيرات والتى تستخدم فى حساب الخرج الخاص بالبلوك عند الخطوة الزمنية المحدده وهناك نوعان من انواع ال states وهما : Discrete و continuous متقطعة ومستمرة .
والمستمرة هى التى تتغير باستمرار اما المتقطعة هى التى تتغير عند فترات زمنية محددة intervals .
وتعتبر البلوكات States كما فى الشكل التالى​

image002.jpg




والبلوكات التى تعبر continuous states يجب ان تحتوى على احد البلوكات الاتية :

· Integrator



image004.jpg






ووظيفة هذا البلوك هو تكامل الاشارة الداخلة​



· State-Space




image006.jpg






ووظيفة هذا البلوك هو عمل نظام خطى من النوع State-Space​



· Transfer Fcn



image008.jpg






ووظيفة هذا البلوك هو عمل نظام خطى من النوع transfer function​



· Zero-Pole



image010.jpg



وهذا البلوك يعتبر حالة خاصة من السابق حيث يعبر عن نظام خطى من النوع transfer function ولكن يحتوى على zero-pole-gain اى يوجد قيم ل S تساوى صفر سواء فى البسط او المقام .​


الحالات المستمرة Continuous States


للتعامل مع الحالات المستمرة يجب علينا معرفة معدل تغيرها او مشتقتها و قيمة الحالة المستمرة يساوى تكامل مشتقتها فى الفترة الزمنية المحدده وتعتمد دقة هذه الحسابات على مقدار الخطوة الزمنية وكما معروف كلما صغرت الخطوة الزمنية فان الدقة سوف تزيد ولكن سيسبب هذا فى حمل اضافى على معالج الكمبيوتر وقد يسبب بعض البطء .
ومن مميزات السميولنك انه يوجد به مجموعة من طرق الحل و تكون بها الخطوة الزمنية متغيرة تبعا لمعدل التغير .​


الحالات المتقطعة Discrete States


للتعامل مع الحالات المتقطعة يجب علينا معرفة العلاقة بين قيمتها فى الفترة الزمنية الحالية وبين قيمتها فى الفترة الزمنية السابقة وهذه العلاقة تسمى فى البرنامج
update functions
وتعتمد أيضا على قيمة الدخل للنموذج .​


نمذجة الانظمة التى تحتوى على حالات متقطعة ومستمرة معا


Modeling Hybrid Systems


وفى هذا النوع يقوم السميولنك بوضع مقدار للفترة الزمنية يحقق الدقة المطلوبة لتكامل الحالات المستمرة وفى نفس الوقت يكون مناسب للحالات المتقطعة .​


قيم معاملات البلوك Block Parameters


وهى التى تعبر عن خصائص اى بلوك فمثلا البلوك الخاص باضافة ثابت يعتبر Parameter ولكل بلوك له Parameters يكون له خصائص ويمكن استعمال الماتلاب فى تعديل هذه الخصائص .
ويقوم السيمولينك بحساب هذه القيم قبل بداية المحاكاة كما يمكنك تغيرها اثناء عمل المحاكاة .
وتسمى بى A tunable parameter وهى التى تغيرها دون الحاجة الى اعادة ترجمة النموذج الى لغة الالة recompiling ويجب العلم ان هذا التغيير لن يكون سريع ولكن سوف يقوم بالانتظار الى بداية الفترة الزمنية الجديدة ويمكن جعل جميع parameters الموجوده غير قابلة للتعديل مما يودى الى زيادة فى سرعة التنفيذ .​




الفترة الزمنية Block Sample Times


يوجد لكل بلوك فترة زمنية خاصة به ويمكننا تغيرها وللبلوكات ذات الحالات المستمرة تكون الفترة الزمنية مالانهاية وتسمى
continuous sample time .
وبالنسبة للبلوكات الغير متاح بها الفترة الزمنية تسمى
implicit sample time
او
fundamental sample time of the inputs​

اى يعتمد على نوع الدخل فمثلا لو كان الدخل مستمر فان الفترة الزمنية تكون مثل الحالات المستمرة .
اما اذا كان الدخل متقطع فهنا الفترة الزمنية تسمى An implicit discrete sample time وتساوى اصغر فترة زمنية فى الدخل .​


Systems and Subsystems


يمكن للنموذج فى السيميولنك ان يتكون من عدة طبقات كل طبقة تسمى نظام فرعى subsystem ويوجد نوعان منها ايضا وهما افتراضى وغير افتراضى virtual and nonvirtual ومن مميزات البرنامج انه يمكنك عمل Subsystems يكون تنفيذها متوقف على شروط معينة مثل استعداء دالة معينة او فعل ويكون اغلب الانظمة الفرعية الغير مرتبطة باى شروط أنظمة أفتراضية .​


طرق البلوكات Block Methods


البلوكات هى عبارة عن مجموعة من المعادلات كما عرفنا وهذه المعادلات تعبر عن طريقة البلوك ويتم تفيذ هذه الطريقة خلال تنفيذ النموذج ومن انواع هذه الطرق :
Outputs
والتى فيها يتم حساب خرج البلوك من الدخل عند الفترة الزمنية الحالية والفترة الزمنية السابقة
Update
وهى الطريقة الخاصة بالبلوكات ذات الحالات المتقطعة فى الفترة الزمنية الحالية
Derivatives
وهى الطريقة الخاصة بالبلوكات ذات الحالات المستمرة فى الفترة الزمنية الحالية​

ويكون التعبير فى السميولنك عن نوع الطريقة المستخدمة كما يلى ::​

BlockType.MethodType

تابع​
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تابع الدرس الثانى

محاكاة الانظمة الديناميكية

ماذا يحدث عند الضغظ على Start Simulation ؟؟؟

اولا Model Compilation

اى يقوم السيميولنك بتحويل البرنامج او النموذج الى الصورة التى يمكنه حلها executable form
ويكون تسلسل خطوات هذه العملية كما يلى :​

1- حساب قيم التعبيرية لخصائص البلوكات وايجاد قيمتها
block parameter expressions

2- تحديد خصائص الاشارات مثل نوعها و نوع البيانات و ابعداها

3- ويقوم بتحديد الخصائص الغير موجودة ويستخدم طريقة
attribute propagation

4- يقوم بعملية تخفيض للبلوكات
optimizations

5- يقوم وضع النموذج فى تسلسل هرمى
hierarchy

6- يقوم بتحديد رتبة كل بلوك وسوف نتعرض له لاحقا
block sorted order

7- يقوم بتحديد الفترات الزمنية لكل بلوك
Sample Time


ثانيا : Link Phase
وفى هذه المرحلة يقوم البرنامج بتحديد الاماكن اللازمة فى الذاكرة لتنفيذ النموذج​


ثالثا : Simulation Loop Phase
وفى هذه المرحلة يقوم البرنامج بحساب قيم الحالات والخرج خلال الفترات الزمنية حتى نهاية زمن المحاكاه​

وتحتوى هذه المرحلة على مرحلتين فرعيتين :​

1- Loop Initialization phase

وهذا يحث مرة واحده فقط فى البداية​

2- Loop Iteration phase

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

1- حساب خرج البرنامج او النموذج

2- حساب حالة البرنامج او النموذج

3- البحث عن حالات غير مستمرة فى البلوكات المستمرة باستخدام
zero-crossing detection
(هذه الخطوة أختيارية ) وسوف نتعرض لها لاحقا

4- حساب زمن الفترة الزمنية التالية
ويتم تكرار هذه الخطوات طوال زمن المحاكاة.

طرق الحل فى السميولنك
حل النموذج المقصود به هو عملية حساب الحالات المتعاقبة
successive states
وطرق الحل هى عبارة عن مجموعة من البرامج الموجودة فى البرنامج وتسمى
solvers
ومن أهم الانواع

1- Fixed-step solvers
وهى التى تقوم بحل النموذج فى فترات زمنية منتظمة من البداية حتى النهاية وحجم هذه الفترات يعرف بى step size وكما نعلم مع تقليل ال step size فان الدقة سوف تزيد .

2- Variable-step solvers
وهى التى تقوم بحل النموذج فى فترات زمنية متغيرة فتقوم بتصغير حجم الفترة الزمنية لزيادة الدقة عندما تتغير حالة النموذج بسرعة وتقوم بتكبير حجم الفترة الزمنية عندما يكون التغير فى الحالة بطىء.

وهناك ايضا من انواع Solvers تبعا للحالة مثل

1- Continuous solvers
وتكون عبارة عن عملية تكامل عددى فى الفترة الزمنية الحالية لحساب حالة النموذج من الحالة عند الفترة الزمنية السابقة ومن مشتقتها كما ذكر سابقا .

2- Discrete solvers
وتقوم بحساب حجم الفترة الزمنية التالية فقط

Zero-Crossing Detection
وهى الطريقة المستخدمة فى البحث عن الحالات الغير المستمرة فى كل فترة زمنية وعندما يجد البرنامج منطقة بها عدم استمرارية يقوم بتحديد زمنها بدقة ويقوم بأخد فترات زمنية أضافية قبلها وبعدها .
لماذا نستخدم هذه الطريقة ؟؟
وذلك لان عند مناطق عدم الاستمرارية يحدث تغير هام جدا فى الخصائص الديناميكية للنظام وغالبا تتزامن مناطق عدم الاستمرارية مع الاحداث المهمة فى النظام .
ومن الممكن الاستغناء عن هذه الطريقة بتقليل حجم الفترة الزمنية الى قيم صغيرة جدا مما قد يودى الى زيادة زمن المحاكاة.​
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تابع الدرس الثانى


Algebraic Loops
بعض البلوكات فى السميولنك لديها مداخل تسمى
direct feedthrough
وهذا معناه ان خارج هذه البلوكات لا يمكن حسابه بدون معرفة قيم الاشارات الداخلة ومن أهم هذه البلوكات :​
· The Math Function block​
· The Gain block​
· The Integrator block's initial condition ports​
· The Product block​
· The State-Space block when there is a nonzero D matrix​
· The Sum block​
· The Transfer Fcn block when the numerator and denominator are of the same order​
· The Zero-Pole block when there are as many zeros as poles​


وال algebraic loop يحدث عندما يكون الداخل
direct feedthrough
وأيضا معرض للخارج كما فى الشكل التالى :


image012.jpg





ومن الشكل السابق نرى ان z = u – z ويكون الحل z = u/2
ويمكننا أيضا استخدام بلوك
Algebraic Constraint
فى عمل algebraic loop



Modeling and Simulating Discrete Systems
تكمن مقدرة السميولنك على محاكاة الانظمة ذات الزمن المتقطع
والتى تسمى (sampled data) وايضا قدرة على محاكاة الانظمة التى يكون معدل تغيرها غير ثابت (multirate systems) - والتى يكون فيها بلوكات ذات فترة زمنية معينة وبلوكات أخرى ذات فترة زمنية مختلفة - ومحاكاة الانطمة التى تجمع بيانات متصلة و متقطعة معا (hybrid systems) فى الخاصيتين التاليتين ::

1- SampleTime block parameter
يوجد نوعان من نوع حجم الفترة الزمنيةblock parameter Sample Time وهما explicit و implicit والبلوكات ذات الزمن المتصل تكون من النوع implicit .

2- Sample-time inheritance
يمكن لأغلب بلوكات السميولنك ان تاخد حجم الفترة الزمنية الخاص بها من البلوك المتصل بمدخلها أما بالنسبة للبلوكات التى ليس لها مدخل يمكنها ان تتوارث الفترة الزمنية من البلوكات المتصلة بمخارجها .

Determining Step Size for Discrete Systems
يقوم السميولنك باختيار حجم للفترة الزمنية
step size
متزامن مع الزمن الخاص بمعدل تقطيع الاشارة sample time hits
ويكون أختياره بناء على fundamental sample time
ويكون fundamental sample time هو أكبر عدد صحيح مقسوما عليه ال sample time مثلا :

لدينا sample times 0.25 و 0.5 فيكون
fundamental sample time 0.25

ويمكننا فى محاكاة الانظمة ذات الزمن المتقطع استخدام كلا النوعين من ال solver
وهما
variable-step discrete

او fixed-step

وفى حالة fixed-step يكون simulation step size يساوى fundamental sample time

وفى حالة variable-step solver يكون step size مساوى للمسافة بين نقط التقطيع sample time hits.
والفرق بينهم موضح فى الشكل التالى :

image014.jpg




Sample Time Propagation
توليد زمن التقطيع أو حجم الفترة الزمنية​
يقوم السميولينك هذه العملية فى بداية المحاكاة لتحديد زمن التقطيع للبلوكات التى تتوارث زمن تقطيعها وهى البلوكات التى ليس لها مداخل ومثلا فى النموذج الاتى ::


image016.jpg




نرى بلوك gain ووظيفته هى ضرب الدخل فى ثابت والناتج يكون هو الخرج ولذلك الخارج يكون له نفس زمن تقطيع البلوك السابق له ويقوم السميولينك بالاتى ::
1- اذا كان الداخل له نفس زمن التقطيع فان السميولينك يقوم بتخصيصه
2- اذا كان الداخل له زمن تقطيع مختلف ولكن عدد صحيح و اسرع من زمن البلوك نفسه فان السميولينك يقوم بتخصيص الزمن الاسرع

Constant Sample Time
زمن التقطيع الثابت ::

والمقصود به هو زمن التقطيع الخاص بالبلوكات التى لا يتغير زمن تقطيعها اثناء عملية المحاكاة وشروط هذه البلوكات ::

1- ان يكون جميع معاملات البلوك parameters غير قابلة للتعديل أثناء المحاكاة nontunable
2- ومن الممكن وضع زمن التقطيع لهذه البلوكات مالانهاية (inf) او تكون قابلة لتوارث زمن التقطيع من بلوكات أخرى بشرط ان تكون تلك البلوكات ذات زمن تقطيع ثابت أثناء عملية المحاكاة .
ويقوم السميولينك عمل بحث عن هذه البلوكات قبل بداية المحاكاة حتى يسهل من عملية الحسابات

أما اذا وجد السميولينك بلوكات لديها زمن تقطيع مالانهاية ولكن لا تعتبر ذات زمن ثابت وذلك نتيجة وجود معاملات من الممكن تعديلها
Tunable Parameters
فانه يقوم بتنفيذ عملية Sample Time Propagation وقد سبق ذكرها

والان انتهى الدرس الثانى والى اللقاء فى الدرس القادم مع أساسيات السميولينك
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
الدرس الثالث :: السبت 10/6/2006

الدرس الثالث
كيفية بناء النماذج

فى البداية سأقوم بتوضيح بعض الاشياء المهمة قبل البدء فى بناء النماذج وهى عن أساسيات السميولينك
اولا :: عرفنا فى الدرس الاول كيفية فتح برنامج السميولينك ويجب علينا ملاحظة ان جميع برامج السميولينك يكون لها الامتداد .mdl وان يكون الموديل موجود فى مسار الماتلاب الحالى كما فى الشكل التالى ::

1.gif






محرر الموديل Model Editor



ويتكون كما بالشكل التالى ::


2.gif









1- Menu Bar
شريط القوائم
ويكون من مجموعة من القوائم لتعديل وإنشاء ومشاهدة وطباعة النماذج وأيضا محاكاة النماذج


2- Toolbar
شريط الأدوات

يوجد فى شريط الادوات مجموعة من اوامر السميولينك المستخدمة باستمرار فيمكنك بدلا من الدخول الى القوائم وعمل نموذج جديد الضغط على نموذج جديد


3- Canvas


وهذا الذى يظهر فيه بلوكات النموذج block diagram


4- Status Bar

شريط الحالة
والذى يظهر به حالة عملية المحاكاة وزمنها واسم طريقة الحل المستخدمة



Updating a Block Diagram

يتيح لك السميولينك ان تترك بعض خصائص البلوكات على ان يقوم هو بوضعها مثل signal data types و sample times وتسمى هذه العملية بتعديل النموذج او Updating a Block Diagram وتكون عند بداية المحاكاة واذا وجد خصائص لم يستطيع وضعاها فانه يوقف هذه العملية على ان يقوم المستخدم بوضعها ويمكنك جعل السميولينك يقوم بهذه العملية فى اى وقت بالدخول الى قائمة Edit ثم أختيار Update Diagram او من خلال لوحة المفاتيح مباشرة Ctrl+D ..



ولمشاهدة انواع البيانات على خطوط التوصيل يمكننا الدخول الى قائمة Format ثم Port/Signal Displays كما بالشكل التالى



3.gif









والان يمكننا البدء فى معرفة


كيفية عمل النماذج

اولا عمل تمبلت لنموذج جديد
عند فتح السميولينك فان الوضع الاساسى يكون بخلفية بيضاء و طريقة حل ode45 وشريط الادوات يكون ظاهر
ويمكنك عمل تمبلت كما نشاء فمثلا لجعل السميولينك بخلفية زرقاء وبدون شريط الادوات وبطريقة حل ode3


افتح M-file وضع به الاتى ::

كود:
[LEFT]function new_model(arab_eng) 
% NEW_MODEL Create a new, empty Simulink model
% NEW_MODEL('MODELNAME') creates a new model with
% the name 'MODELNAME'. Without the 'MODELNAME'
% argument, the new model is named 'my_untitled'.
% the model name is arab_eng[/LEFT]
 
[LEFT]if nargin == 0 
arab_eng = 'arab_eng';
end [/LEFT]
 
[LEFT]% create and open the model
open_system(new_system(arab_eng));[/LEFT]
 
[LEFT]% set default screen color
set_param(arab_eng, 'ScreenColor', 'blue');[/LEFT]
 
[LEFT]% set default solver
set_param(arab_eng, 'Solver', 'ode3');[/LEFT]
 
[LEFT]% set default toolbar visibility
set_param(arab_eng, 'Toolbar', 'off');[/LEFT]
 
[LEFT]% save the model
save_system(arab_eng);[/LEFT]


وبعد ذلك قم بحفظ الملف ثم قم بعملية تشغيلة من خلال الماتلاب وسيكون شكل النموذج الجديد كما يلى


4.gif




 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تابع الدرس الثالث

تغيير ألوان البلوكات


يمكننا تغيير لون البلوك ولون خلفيته وذلك عن طريق اختيار البلوك المراد تلوينه وتحديده بالضغط عليه بالماوس ثم الدخول الى قائمة Format واختيار Foreground color لاختيار لون البلوك و Background color لاختيار لون خلفيته وايضا Screen color لاختيار لون خلفية النموذج
ويمكننا أختيار هذه الالوان من خلال برنامج ماتلاب وذلك عن طريقه الامر set_param كالموجود فى البرنامج السابق ويوجد ثلاثة عوامل لهذا الامر وهى موجودة فى الجدول الاتى

5.gif







وهذه المتغيرات يمكن وضعها فى صورة اللون كما كان موجود فى المثال السابق او عن طريق RGB



كالمثال التالى ::



يمكنك تجربته على البرنامج السابق باستبدال السطر الاتى ::


كود:
set_param(arab_eng, 'ScreenColor', 'blue');

بهذا السطر
كود:
set_param(arab_eng, 'ScreenColor', '[0.3, 0.9, 0.5]')


ومن الافضل ان تترك الالوان كما موجودة لان السميولينك يقوم بتلوين البلوكات تبعا لنوع البلوك و ال Sample Time والجدول الاتى يوضح الالوان المختلفة التى يستخدمها البرنامج


6.gif



ولتشغيل هذه الخاصية قم بالدخول الى قائمة Format واختار Sample Time Colors وتذكر ان تقوم بعمل Update Diagram من قائمة Edit حتى يقوم البرنامج بتغيير الالون .



Annotating
عمل ملاحظات فى النموذج




وهى العبارات التى توضع على النموذج ويكون هدفها توضيحى


7.gif




ولعمل مثل هذا نقوم بالضغط بالماوس مرتين فى اى مكان فارغ ثم نقوم بكتابة ما نريد وللتحكم فى ما تم كتابته قم بالضغط عليه بالماوس اليمين ثم اختار من القائمة Annotation Properties ليظهر لك الشكل التالى والان قم بتعديل ما تشاء ::


8.gif







ويمكنك أيضا وضع اوامر M function فى صورة Annotation فعندما تقوم بالضغط عليها يقوم البرنامج بتنفيذ أمر معين وسوف نتعرض لها بالتفصيل لاحقا


Using TeX Formatting Commands in Annotations



نقوم باستخدام TeX Formatting وذلك حتى نتمكن من كتابة المعادلات الرياضية والرموز اللاتينية ويكون عن طريق الاتى



1-
أختار annotation موجود وقم بالضغط كليك يمين بالماوس ومن القائمة أختار Enable TeX Commands كما يلى ::


9.gif







وبعد ذلك قم بكتابه ملاحظاتك وادخل اوامر TeX حتى يقوم البرنامج بتحويلها الى الرموز المطلوبة وبعض هذه الاوامر موضحة فى الشكل التالى ::

10.gif






ومثلا قم بكتابة الاتى


\alphara\beta-\iteng



وسيكون على الشكل التالى


11.gif

 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
ملفات pdf لدروس الدورة

ملفات pdf لدروس الدورة موجودة فى المرفقات
 

المرفقات

  • chapter01.pdf
    1.1 MB · المشاهدات: 3,963
  • chapter02.pdf
    206.7 KB · المشاهدات: 2,787

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
الدرس الرابع :: السبت 17/6/2006

عمل أنظمة فرعية
Creating Subsystems


نقوم بعمل أنظمة فرعية لتقليل حجم الموديل وتبسيطه ويتم ذلك عن طريق عمل نظام فرعى وإضافة البلوكات المطلوبة إليه ومثلا قم بالدخول الى قائمة simulink ثم ports & subsystems ثم subsystem كما بالشكل التالى ::

1.gif



[FONT=Arial (Arabic)]
[/FONT]

وبعد ذلك قم بالسحب بالماوس الى صفحة النموذج وسيكون شكله كما يلى ::

2.gif


وعند الضغط عليه بالماوس سيكون لدينا الشكل التالى ::

3.gif

وبعد ذلك قم بعمل النموذج المطلوب فى النظام الفرعى باستخدام بلوكات input للدخل من النموذج الاصلى و ايضا بلوكات outport للخرج للنظام الاصلى
وسنقوم بوضع المثال السابق عمله داخل نظام فرعى فيكون لدينا كما بالشكل التالى ::


5.gif
ويكون شكل الموديل الاصلى كما يلى ::


6.gif

ويمكن عمل أنظمة فرعية بطريقة أخرى حيث نقوم بتحديد البلوكات المطلوب وضعها فى النظام الفرعى و الضغط على
create subsystem
كما يلى ::
7.gif





ويمكن أيضا عمل طبقات متعددة من النماذج الفرعية وتكون كما سبق حيث نقوم بعمل النموذج الفرعى داخل نموذج فرعى فى مستوى اعلى .

ويمكن كتابة اسم للنظام الفرعى واخفاءه او اظهاره

 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تابع الدرس الرابع


Model Navigation Commands


يتيح لنا عمل الانظمة الفرعية من طبقات متعددة فى تسلسل هرمى ويمكننا استعراض هذه الطبقات باستخدام Simulink Model Browser والذى سنتعرض له لاحقا والان سنقوم بعمل الاتى ::

افتح البلوك Open Block

وذلك عن طريق تحديد البلوك ثم الدخول الى قائمة edit واختيار open block كما يلى ::

8.gif



Open Block In New Window

وتكون عن طريق تحديد النظام الفرعى او كليك يمين واختيار افتح البلوك فى نافذه جديدة كما يلى ::
9.gif




Go To Parent
يستخدم للعودة الى النظام الاصلى ويكون عن طريق الضغط كليك يمين فى اى مكان فى النظام الفرعى واختيار العودة الى النظام الاصلى كما يلى ::

10.gif




Window Reuse


يمكنك من هذه الخاصية تحديد عرض النظام الفرعى فى نافذه جديدة او فى نفس النافذة الحالية وتكون عن طريق الاتى
الدخول الى قائمة File ثم اختيار Preferences و اختيار واحده من قائمة Window reuse type كما يلى ::

11.gif

12.gif


والجدول التالى يوضح خصائص كل اختيار من الاربعة ::


13.gif



Controlling Access to Subsystems

يمكنك من منع المستخدمين فى الوصول الى محتويات النظام الفرعى والتعديل فيها ويكون هذا عن طريق الاتى
قم بتحديد النظام الفرعى و كليك يمين واختار subsystem's parameter كما يلى
14.gif

وبعد الدخول ستفتح لنا النافذة الاتية ::
15.gif

ويمكننا اختيار التصريحات المناسبة من قائمة Read/Write permissions واختيار
ReadOnly
NoReadOrWrite
ReadWrite
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0

Creating Conditionally Executed Subsystems


وهى الانظمة الفرعية المتوقف عملها على تنفيذ اشارة داخلة وتسمى control signal

ويدعم السميولينك الانواع الاتية من الانطمة الفرعية المتوقف تنفيذها على اشارة دخل
Enabled Subsystems
Triggered Subsystems.
Triggered and Enabled Subsystems
A control flow subsystem

اولا ::: Enabled Subsystems

وهى الانظمة التى يتم تنفيذها كل فترة زمنية عندما تكون اشارة التحكم موجبة سواء كانت كمية قياسية scalar او كمية متجهة vector

واذا كانت كمية قياسية فان النظام الفرعى يتم تنفيذه فى حالة اذا كان الدخل اكبر من الصفر
واذا كانت كمية متجهة فان النظام الفرعى يتم تنفيذه فى حالة اذا كان اى عنصر من المتجه اكبر من الصفر
وفى الشكل التالى نجد اشارة تحكم عبارة عن sine wave ويكون تنفيذ النظام الفرعى او توقفه كما يوضح السهم
16.gif

ولعمل انظمة بهذا الشكل نقوم باستخدام Enable block الموجود Ports & Subsystems الموجودة فى subsystem كما يلى :

17.gif

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

18.gif

وعند وضع هذا البلوك فى اى مكان فارع مع عدم توصيله باى شى فى النظام الفرعى نلاحظ شكل البلوك الخاص بالنظام الاساسى كما يلى ::

19.gif


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

قم بالضغط مرتين بالماوس على البلوك الخرج وسيظهر لنا الشكل التالى :

20.gif

ونلاحظ من قائمة Output when disabled

ان هناك خيارين
Held​
وفى هذه الحالة يكون الخرج ثابت عند اخر قيمة قبل عملية ايقاف تنفيذه
Reset​
وفى هذه الحالة يتحول خرج البلوك عند ايقاف تنفيذه الى قيمة ابتدائية يتم تحديدها فى Initial output اسفل هذه القائمة .

ويمكننا ايضا من وضع قيمة اخرى جديدة عند اعادة تنفيذه

والان
قم بالضغط مرتين على Enable block سيظهر لنا الشكل التالى ::

21.gif

ومن قائمة States when enabling نختار
Held
اذا كنا نريد ان يكون الخرج مثل ما كان قبل البدء فى عملية التنفيذ
Reset
اذا كنا نريد استعادة قيمة الخرج الى قيمة ابتدائية نقوم بوضعها فى السطر اسفل هذه القائمة
ويوجد ايضا خيارين وهما
Outputting the Enable Control Signal.​
وهذا الخيار فائدته ان بقوم بخرج اشارة التحكم ويمكننا استقبالها على scope

والخيار الثانى هو Zero-Crossing Detection

ولمعرفة ما هو راجع الدرس الثانى
ونكمل المرة القادمة مع النوع الثانى Triggered Subsystems.



 

سامي*

عضو جديد
إنضم
7 مارس 2006
المشاركات
2
مجموع الإعجابات
0
النقاط
0
بارك الله فيك وجعله في ميزان حسناتك
:) وإلى الأمام إن شاء الله
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
الدرس الخامس 24/6/2006 :: تكملة الانظمة الفرعية

ثانيا : Triggered Subsystems


وهى نوع من انواع الانظمة الفرعية والتى يتم تنفيذها عند حدوث ال Trigger وهذه الانظمة الفرعية يكون لها مدخل تحكم واحد ويسمى trigger input والذى يحدد هل يتم تنفيذ النظام ام لا ؟؟

ويوجد ثلاثة انواع لهذا ال Trigger وهما
Rising
وهذه الحالة عندما ترتفع اشارة التحكم من قيمة سالبة او صفر الى قيمة موجبة واذا كانت القيمة الابتدائية سالبة فانه يتم تنفيذ النظام الفرعى عندما ترتفع الى الصفر
Falling​
وهذا عكس الحالة السابقة اى عندما تنخفض اشارة التحكم من قيمتها الابتدائية الى قيمة اقل منها
Either​
وهذه الحالة تجمع الحالتين السابقتين ويتم تنفيذ النظام الفرعى فى كلتا الحالتين سواء بالارتفاع او الانخفاض .

ملحوظة :

فى حالة الانظمة ذات الزمن المتقطع عندما تتغير الاشارة من الصفر سواء بالارتفاع او الانخفاض فانه يتم تنفيذ حدوث النظام الفرعى عندما تكون قيمة الاشارة صفر لاكثر من فترة زمنية واحدة وذلك لتلافى حدوث trigger بسبب عملية التقطيع .

وفى الشكل الاتى نرى تنفيذ لل trigger اما بالارتفاع R او بالانخفاض F ونلاحظ انه فى الفترة الزمنية 3 لم يحدث trigger لان الاشارة كانت قيمتها صفر لفترة زمنية واحده ولذلك يجب ان تزيد عن واحد

1.gif

وبتطبيق هذا على المثال الموجد لدينا
قم بالدخول الى قائمة السميولينك ثم الى ports & subsystems وقم بسحب بلوك
trigger
الى النظام الفرعى وسيكون كما يلى :

2.gif


وسيكون شكل النظام الاصلى كما يلى

3.gif


ولاختيار نوع ال trigger قم بالضغط على البلوك
وستظهر لنا نافذه الاختيارات يمكننا منها اختيار نوعه كما فى الرسم التالى :

4.gif


ونلاحظ بعد الاختيار بتغيير شكل البلوك بعد كل اختيار كما يلى :

فى حالة الارتفاع

5.gif


وفى حالة الانخفاض

6.gif


اما فى كلتا الحالتين

7.gif


وفى حالة استدعاه بأمر

8.gif
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
ويجب ملاحظة ان triggered subsystems
تختلف عن الانظمة enabled subsystems
حيث انها تقوم بحجز اخر قيمة للخرج ولا يمكننا استعادة الخرج عند قيمة ابتدائية ماعدا الانواع التى يكون استدعائها بأمر وهى البلوكات
Function-Call Subsystems
ويكون شرط تنفيذ هذه البلوكات مرتبط بأمر منطقى فى ال S-function الخاصة بالبلوك وسوف نتعرض لها لاحقا .

ملحوظة ::
جميع البلوكات فى الانظمة الفرعية التى تستخدم الTrigger يجب ان يكون زمن تقطيعها متوارث (-1) او مالانهاية وهذا معناه ان البلوكات الموجودة فى النظام الفرعى يتم تشغيلها عند تشغيل النظام الفرعى اى يجب ان لا يحتوى النظام الفرعى على بلوكات ذات زمن متصل مثل بلوك التكامل.


ونقوم الان بعمل هذا المثال البسيط كما يلى ::

9.gif


والنظام الفرعى

10.gif


وستكون نتيجة تنفيذ هذا المثال كما يلى :

11.gif


ومن الشكل السابق نجد الاشارة التى باللون الاصفر ترمز على اشارة التحكم trigger والاشارة التى باللون السماوى هى اشارة الدخل واللون البنفسجى يرمز الى اشارة الخرج ونلاحظ ايضا حدوث تنفيذ البلوك اى حدوث خرج فى حالة ارتفاع اشارة التحكم فقط ثم يتم امساك للقيمة حتى الارتفاع الثانى


تابع
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0

ثالثا :: Triggered and Enabled Subsystems

وهذا النوع الثالث من انواع الانظمة الفرعية وهو يجمع النوعان السابقان حيث يقوم فى البداية بانتظار حدوث ال trigger ثم يقوم بالتعامل معه اذا كانت اشارة التحكم المستخدمة مع الجزء enabled موجودة ويمكن توضيح هذه الخطوات فى الشكل الاتى ::

12.gif


والان سنقوم بعمل مثال بسيط على هذا النوع
قم بتكوين المثال كما بالرسم الاتى ::

13.gif


ويكون النظام الفرعى كما فى الرسم الاتى

14.gif


ونتيجة تنفيذ المثال الاتى موجودة فى الشكل التالى ::

15.gif


ومن الشكل السابق نجد ان الاشارة التى باللون السماوى هى اشارة الدخل وهى عبارة عن sine wave اما الاشارة التى باللون الاصفر فهى ال trigger وهى عبارة عن step input وتبدا عند الزمن واحد ثانية لتصبح قيمتها تساوى واحد وتستمر حتى أخر زمن المحاكاه وهذه الاشارة تستخدم فى محاكاة الانظمة الديناميكية والتى تعبر عن تغير مفاجى فى قيم النظام .

اما الاشارة التى باللون الاحمر فهى عبارة عن pulse مدتها 10 ثوانى وتكون قيمتها تساوى واحد فى 50% من الفترة الزمنية duty cycle وهنا نستخدمها للتعبير عن اشارة التحكم enable

وعند الزمن يساوى واحد يبدا مخطط تنفيذ النظام عند حدوث ال trigger بالارتفاع وفى هذه النقطة تكون اشارة التحكم موجودة فيحدث تنفيذ للنظام الفرعى وتكون قيمة الخرج مساوية لقيمة ال sine عند الزمن يساوى واحد وبعد ذلك لا نجد ارتفاع اخر لاشارة التحكم trigger ولذلك ستستمر قيمة الخرج ممسكة عند هذه القيمة .


تابع

 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0

Creating Alternately Executing Subsystems

يمكننا استخدام الانظمة الفرعية المتوقف تنفيذها على اشارة تحكم مع بلوك merge الذى يستخدم لدمج اشارتين معا لعمل انظمة فرعية يتم تنفيذها بالتبادل ويتم اعتمادها على حالة الموديل

والان سنقوم بتطبيق المثال الاتى وهو موديل لعمل full-wave rectifier والتى تستخدم فى تحويل التيار المتردد الى تيار مستمر :

16.gif


ويتكون من نظامان فرعيان كما يلى

النظام الفرعى الاول

17.gif


النظام الفرعى الثانى

18.gif


وتكون نتيجة التنفيذ كما يلى ::

19.gif


تابع
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0


Conditional Execution Behavior

يقوم السميولينك بتجنب البلوكات الغير ضرورية اثناء عملية تنفيذ المحاكاة ومن امثلة هذه البلوكات Switch او Multiport Switch وهما يستخدمان فى تحويل الاشارات وايضا من البلوكات التى من الممكن تكون غير ضرورية الانظمة الفرعية المرتبطة بشرط لتنفيذها وهذا يسمى

conditional execution (CE) behavior.

وفى المثال الاتى سوف نقوم بمعرفة هذه الخاصية :

20.gif


والنظام الفرعى كما فى الصورة الاتية :

21.gif


وقبل عمل ال simulation قم بالدخول الى قائمة format ثم اختيار
Block displays
ثم sorted order كما فى الصورة الاتية ::

22.gif


وبعد عمل ال simulation نلاحظ وجود ارقام فوق كل بلوك وهذه الارقام تكون على الصورة الاتية :

X:Y

حيث يعبر عن X على انها الطبقة layer الموجود فيها البلوك فكل البلوكات الموجودة فى الطبقة الاساسية يكون لها ال X=0

اما Y فترمز الى ترتيب تنفيذ البلوك ففى الشكل الاتى نجد :

23.gif


بلوكات ال
Pulse generator
و constant و subsystem و gain و scope تحتوى على رقم X يساوى الى صفر اى انها تنتمى الى الطبقة الاساسية فى الموديل ويكون ترتيب تنفيذها وهو الرقم Y كما يلى
1- Pulse generator
2- constant
3- subsystem
4- gain
5- scope
ونلاحظ هنا ان بلوك subsystem عليه الاتى 0:2{1} وهذا معناه انه يحتوى على الطبقة الاولى وهى تاتى بعد الطبقة الاساسية
وبالدخول الى النظام الفرعى نجد الاتى ::

24.gif


ونجد بلوك الادخال يحتوى على الرقم الاتى 1:0 وهذا معناه انه موجود فى الطبقة الاولى و سيكون تنفيذه فى البداية وبلوك الاخراج لا يحتوى على اى ارقام لانه لم يتم تنفيذه لعدم وجود ما يتم اخراجه

والان قم بالضغط كليك يمين على بلوك subsystem واختيار
Subsystem parameters
25.gif


وعندما تفتح لك نافذه الاختيار قم بوضع علامة صح حول
Propagate execution context across subsystem boundary

26.gif


وهذا فائدته ان يقوم بجعل تنفيذ البلوكات الموجودة حول النظام الفرعى مرتبط بتنفيذ النظام الفرعى وهذا يعمل على زيادة سرعة المحاكاة مثلا لدينا بلوك gain لن نحتاجه الا عندما يتم تنفيذ النظام الفرعى وعند ايقاف النظام الفرعى غير مهم تنفيذ هذا البلوك



تابع
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
والان قم بعمل المحاكاة مرة اخرى والان سنلاحظ الارقام على البلوكات :

27.gif


والان اصبح البلوك constant والبلوك gain ينفذان مع النظام الفرعى فقط على الرغم انهم خارج النظام الفرعى وموجودين فى النظام الاساسى ويكون ترتيب التنفيذ كالاتى
1- constant
2- subsystem
3- gain
وهذا ما يعرف بى Conditional Execution Behavior او
CE behavior


Propagating Execution Contexts
عموما برنامج السميولينك يقوم بتعريف ما يسمى بى execution context وهذا عبارة عن مجموعة من البلوكات التى تنفذ مرة واحدة خلال زمن معالجة النموذج .

ويقوم ايضا بعمل execution context للنظام الاساسى وايضا لكل نظام فرعى .

واى execution context هو مجموعة البلوكات التى يحتويها النظام
وعند تنفيذ المحاكاة فان السميولينك يقوم بالبحث عن الشروط الاتية فى كل بلوك:
1-
هل خرج البلوك مطلوب فقط لتنفيذ نظام فرعى او دخله يتغير فقط نتيجة تنفيذ نظام فرعى
2-
هل هذا البلوك مرتبط فى تنفيذه مع نظام فرعى وهذه الحالة عندما يكون هذا البلوك على حدود النظام الفرعى
3-
هل خرج البلوك ليس نقطة أختبار testpoint وسوف نعرف ما هى نقط الاختبار لاحقا
4-
هل مسموح للبلوك ان يتوارث execution context
5-
هل البلوك ليس من النوع multirate block
6-
هل زمن التقطيع sample time متوارث او ثابت

واذا فعلا وجد ان هذه الشروط محققة ومسموح ان يتم توليد execution context

فان السميولينك يقوم بنقل البلوك الى execution context الخاص بالنظام الفرعى وهذا للتاكد ان هذا البلوك يتم تنفيذه فقط عندما يتم تنفيذ النظام الفرعى

وللتعامل مع بلوك Switch

يقوم السميولينك بمعالجة كل فرع من دخل البلوك بصورة مخفية ويكون لكل فرع
execution context
الخاص به والذى يتم تفعيله عندما يتم اختيار تنفيذ الفرع وعموما فان كل فرع من هذا البلوك يتم تنفيذه فقط عندما يتم اختياره كدخل .


ملحوظة :: لالغاء خاصية conditional execution behavior

قم بالدخول ال Configuration Parameters ثم Optimization وضع علامة صح عند Conditional input branch execution


ملحوظة ::هناك بعض الحالات لا يستطيع البرنامج استخدام خاصية
Propagate execution context across subsystem boundary
وهى عندما يكون النظام الفرعى من النوع triggered subsystem او النظام الفرعى له اكثر من مدخل او مخرج ولها شرط ابتدائى غير الصفر وفى هذه الحالة البلوك الموجود فى خرج النظام الفرعى لا يمكنه ان يتوارث
subsystem's execution context

ويكمننا اظهار مستطيلات حول المداخل التى لا يستخدم خاصية
Propagate
execution context

وهذا عن طريق الضغط اختيار قائمة format ثم Block Displays ثم
Execution Context Indicator
ويكون شكلها كما يلى
28.gif

انتهى الدرس ..

 
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى