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

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

تلميذ

عضو جديد
إنضم
14 يونيو 2006
المشاركات
30
مجموع الإعجابات
0
النقاط
0
عفوا لكن هل بإمكاني الاشتراك في هذه الدورة
 

تلميذ

عضو جديد
إنضم
14 يونيو 2006
المشاركات
30
مجموع الإعجابات
0
النقاط
0
أول سؤال لي في هذا الموضوع
 

تلميذ

عضو جديد
إنضم
14 يونيو 2006
المشاركات
30
مجموع الإعجابات
0
النقاط
0
قرأت ذات مرة أنه بالإمكان تحويل رسمة ثلاثية الأبعاد في برنامج رسم ميكانيكي (Mechanical desktop) مع علاقة العناصر و ارتباط الألات ببعضها إلى (Matlab( و تحليل درجات حريتها و حركتها فهل نخبرني كيف يتم ذلك , رجاء
لأنني لم أتمكن من تطبيقها
 

تلميذ

عضو جديد
إنضم
14 يونيو 2006
المشاركات
30
مجموع الإعجابات
0
النقاط
0
عفوأ نسيت أن أقول أن الماتلاب يقرأ الرسومات الميكانيكية بلغة (xml( و شكرا
 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
تلميذ قال:
عفوأ نسيت أن أقول أن الماتلاب يقرأ الرسومات الميكانيكية بلغة (xml( و شكرا
اهلا بك اخى العزيز
وبالنسبة للماتلاب يجب ان بكون الرسومات فى صورة ملفات من الممكن قراءتها فى الماتلاب مثل xml كما ذكرت او data او excel وتكون عبارة على بيانات ثلاثية الابعاد ثم نقوم بتوقيعها للحصول على الرسم المطلوب
ويمكنك بالفعل الاشتراك فى الدورة واهلا بك مرة اخرى
 

Ghazala_mea

عضو جديد
إنضم
1 يوليو 2006
المشاركات
30
مجموع الإعجابات
0
النقاط
0
دائما بكل جديد وشكل جديد
احمد باشا
 

belall

عضو جديد
إنضم
1 يوليو 2006
المشاركات
48
مجموع الإعجابات
0
النقاط
0
جزاكم الله خيرا

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

smart_storm

عضو جديد
إنضم
21 يونيو 2006
المشاركات
13
مجموع الإعجابات
0
النقاط
0
رائع

[FRAME="12 70"]
السلام عليكم

بالفعل رائع موضوع وشرح وألقاء


بالفعل رائع نشكرك جدا جدا
[/FRAME]
 

ahmedeldeep

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

Referencing Models
المقصود بها هو ادراج نماذج تم عملها سابقا الى الموديل الحالى ويتم اعتبارها على انها بلوكات .
ويتم ذلك عن طريق اضافة بلوك model الموجود فى
simulink
ثم
Ports & subsystems
وهذا النوع من البلوك يسمى instance
ويقوم هذا البلوك بعرض المداخل والمخارج حسب الموجود فى الموديل الاصلى والذى يقوم هذا البلوك بالرجوع له .
واثناء عملية المحاكاة يقوم السميولينك باستحضار S-function تم عملها اتوماتيكيا وتسمى the referenced model's simulation target وذلك لحساب خرج البلوك عند الحاجة .
واذا حدث اى تغيير فى الموديل الاصلى فان السميولينك يقوم بعمل اعادة توليد لل
simulation target .
ويمكن ايضا ان يتم عمل Referencing لنموذج به Referencing
لنموذج أخر وفى هذه الحالة يكون اعلى موديل فى التسلسل الهرمى يسمى root model
ويسمى النموذج- الذى يكون فيه النموذج الاساسى والبلوك model – parent
ويمكن لل parent وهو النموذج الاساسى ان يحتوى على اكثر من Referencing بلوك لنفس الموديل على ان لا يكون فى هذا الموديل
Global data
ولمعرفة ما هى ال global data راجع الماتلاب
وفائدة اضافة مرجعيتين لنفس الموديل هو جعل الموديل الذى سيتم الرجوع اليه يتصرف بأسلوبين مختلفين .


ما الفرق بين Model Referencing و Subsystems ؟؟

تمتاز ال Model Referencing عن ال Subsystems بالمميزات الاتية .
1- Modular development
يمكنك عمل موديل مستقل وتطويره من موديل سابق او اكثر
2- Inclusion by reference
حيث يمكن عمل مرجعية لنموذج أكثر من مرة دون الحاجة من عمل نسخ متعددة من النموذج والعكس ايضا حيث يمكن عمل أكثر من مرجعية لنفس النموذج .
3- Incremental loading
حيث لن يتم تحميل البلوك الا فى حالة الرجوع اليه و يمكننا ترتيب عمليات الرجوع للاسراع من عملية المحاكاة .
4- Incremental code generation
عند استخدام ال Real-Time Workshop فانها تتفاعل مع السميولينك لعمل تطبيقات تنفذ لوحداها دون الحاجة الى اى برامج والتى تعرف بى stand-alone applications حيث يتم توليد ما يسمى بى binaries وفى حالة ان تكون هذه ال binaries احدث من النموذج التى تم توليدها منه فان السميولينك يقوم بايقاف عملية المحاكاة حتى يتم تعديلها .

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

والان سنقوم بعمل Model Reference

Creating a Model Reference

اولا لعمل مرجعية لبلوك معين يجب ان يكون هذا البلوك فى مسار الماتلاب ولم يكن فى المسار يمكنك اضافته عن طريق set path
ثانيا :: اذا كان البلوك الاساسى الذى تريد عمل المرجعية فيه هو اصلا مرجعيه قم بعمل تفعيل لل
Inline parameters optimization
حيث يجب عملها لكل البلوكات الموجودة فى التسلسل الهرمى ماعدا اعلى بلوك وذلك عن طريق
الدخول الى قائمة simulation ثم
configuration parameters
ثم من الشمال اختار optimization وقم بوضع علامة صح حول Inline parameters كما موضح فى الصورة الاتية
1.gif

 

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
وعندما نقوم بوضع بلوك model فى نموذج فارغ يكون شكله كما يلى
2.gif

والان سنقوم بعمل نموذج اخر جديد اسمه ref1وليكن كما فى الشكل الاتى :
3.gif

والان قم بالضغط على بلوك model الموجود فى النموذج الاول وستظهر لنا نافذه الخيارات كما يلى ::
4.gif

واسم النموذج المطلوب الرجوع له هو ref1
ويجب ان يكون النموذج المطلوب الرجوع اليه يستخدم solver من النوع
Fixed step لمعرفة كيفية عمل هذه راجع الفصول السابقة
والان عند الضغط على البلوك يفتح لنا النموذج الذى سوف يرجع له
ولتغير خصائصه افتح قائمة edit واختار model reference parameters
والان سنقوم بتوصيل step على المدخل و scope على المخرج وسيصبح شكل النموذج كما يلى ::
5.gif

ويجب ملاحظة ان الخصائص التى يمكن تعديلها اثناء عملية المحاكاة هى المتغيرات والخصائص الموجودة فى المستوى الاعلى او
global tunable parameters
ولذلك عند الحاجة لعمل تعديل فى خصائص نموذج يتم الرجوع عليه أثناء عملية المحاكاة فانه يجب ان نقوم بتعديل هذه الخصائص وجعلها من النوع
global tunable parameters.
وسوف نتعرف عليها لاحقا .



Using Model Arguments

نستخدم Model Argumentsعندما نريد عمل أكثر من مرجعية لنفس النموذج ولكن بسلوك مختلف ومثال على ذلك اننا نريد عمل reference مرتان لل
Counter ولكن سنختار قيمة ابتدائية وخطوة عد مختلفة فى كلا ال reference

ولعمل ذلك يجب علينا عمل الاتى :
1- Declare model workspace variables that determine the model's behavior as model arguments
نقوم بعمل تعريف للمتغيرات فى workspace حيث يوجد فى ال workspaceنوعان من المتغيرات وهما
global nontunable parameters
global tunable parameters

2- Assign values to the model arguments in each reference to the parameterized model
وهذه القيم الخاصة بكل مرجعية والان سنعرف كيفية عمل ما سبق ذكره
تابع
 
التعديل الأخير:

ahmedeldeep

عضو جديد
إنضم
25 أغسطس 2005
المشاركات
410
مجموع الإعجابات
6
النقاط
0
اولا لتعريف Model Arguments
قم بقتح النموذج المرجع ثم قم بالدخول الى متصفح النموذج عن طريق اختيار قائمة view ثم اختيار model explorer
وسيظهر لنا الشكل الاتى ::
6.gif

قم باختيار model workspace كما فى الشكل الاتى ::
7.gif

وفى الشكل السابق نجد ان ال workspace فارغة ولذلك سنقوم بعمل المتغيرات فى ال workspace عن طريق الدخول الى قائمة add فى متصفح النموذج ثم اختيار MATLAB variable كما يلى
8.gif

ثم قم بتعديل المتغير واسمه كما تريد فمثلا فى ال counter نريد متغيران احدهما بقيمة صفر وهو القيمة الابتدائية والاخر هو الخطوة ولتكن قيمتها تساوى 1
كما بالشكل الاتى ::
9.gif

والان قم بادخال هذه الاسماء فى خانة Model Arguments الموجود فى اليمين
كما بالشكل الاتى :: مع مراعاه استخدام فاصلة بينهما
10.gif

والان اذهب الى النموذج الاصلى وقم اختيار Model block's parameter من قائمة edit
والان قم بادخال قيم Model Argument الخاصة بهذه المرجعية كما بالشكل الاتى ::
11.gif

تمرين ::
حاول ان تقوم بعمل نموذج يحتوى على مرجعيتين لنموذج واحد وليكن لى counter بسيط مع تغير خصائص المرجعيتين كما سبق وفى انتظار حلولكم ؟!





 

ahmedeldeep

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

يكون زمن التقطيع لهذا البلوك هو زمن التقطيع للنموذج الذى يرجع له ويتم تحديد ذلك فى ال simulation target ويتم تحديد ايضا اذا كان هذا النموذج يحتاج لان يتوارث زمن التقطيع ام لا من النموذج الاساسى ويكون ذلك فى الحالات الاتية
1- لا يوجد به بلوكات لها زمن تقطيع (متوارثة او ثوابت )
2- لا يوجد به اى حالات مستمرة
3- لا يوجد به بلوكات تحتوى تستخدم الزمن المطلق
4- يستخدم fixed-step solver ولكن ليس fixed step size
5- البلوكات التى يكون لدينا زمن تقطيع واحد بعد عملية توليد زمن التقطيع
sample time propagation وهذا الزمن لا يشمل الثوابت او triggered sample time

6- لا يوجد بالنموذج اى بلوكات تعوق عملية توارث زمن التقطيع

ويمكننا استخدام بلوكات مرجعية لنماذج تتوارث زمن تقطيعها فى اى مكان فى النظام الاساسى وبالمثل لا يمكننا استخدام بلوكات مرجعية لها زمن تقطيع مستخدم فى
Triggered subsystem
Function call
iterator subsystem

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

Blocks That Preclude Sample-Time Inheritance
البلوكات التى تعوق عملية توارث زمن التقطيع

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



Discrete-Time Integrator



From Workspace (if it has input data that contains time)



Probe (if probing sample time)



Rate Limiter



Sine Wave


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

Referenced Model I/O

هناك بعض القيود على توصيل مداخل و مخارج بلوك model وهى :
Bus I/O Limitations
يمكن توصيل البلوك المرجعى بمداخل او مخارج من النوع bus فى حالة
1- ان يكون المدخل معرف على انه bus object
2- ان يكون ال bus object معرف فى ال workspace على انه مرئى فى النظام الاساسى والنظام المرجعى
3- يجب ان يكون ال bus تم عمله بواسطة Bus Creator block

Index I/O Limitations

فى بعض الاحيان فان السميولينك لا يستطيع ان يقوم بعملية توليد لل

كود:
 0 - or 1-  based indexing

فمثلا فى البلوك for فان الدخل يكون موصل الى

كود:
0- or 1-based indexing

فان البرنامج لا يستطيع تخصيص نفس القيم للخرج فى حالة النظام المرجعى

Matching I/O Rates

يجب ان تكون بلوكات الادخال وبلوكات الاخراج فى النظام المرجعى لها نفس ال rate

Building Simulation Targets

ال Simulation Targets هى S-function تقوم بحساب خرج النظام المرجعى فى حالة تنفيذ النظام الاصلى
ويمكننا جعل السميولينك ان يقوم بتوليد simulation targets فى اى وقت باستخدام updating the model's diagram من قائمة edit او من خلال تنفيذ امر slbuild .
ويقوم السميولينك بتوليدها فى بداية عملية المحاكاة ولذلك ينبغى عليك ان تقوم بتوليدها مره اخر اذا قمت بعمل تعديل لبعض الخصائص اثناء عملية المحاكاة .
ومن الممكن التغلب على هذا بجعل البرنامج يقوم دائما بعمل اعادة بناء لكل targets الموجودة .
واثناء عملية البناء يقوم الماتلاب بعرض الخطوات فى سطر الاوامر ويكون بناء هذه الملفات فى نفس مسار البرنامج ويقوم بعمل مسار فرعى باسم slprj ويستخدم هذا المسار ايضا مع Simulink Accelerator و Real-Time Workshop
 

ahmedeldeep

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

هناك بعض البلوكات من الممكن ان يقوم بالتحكم فى عمل النظام المرجعى مثل
Function-Call Generator
ويسمى البلوك الذى يقوم بهذه العملية فى حالة النظام المرجعى هوfunction-call model.
وسنقوم الان بعمل مثال على هذا النوع
قم بوضع بلوك trigger فى النظام المرجعى ثم قم بوضع ال trigger من النوع function call وفى هذا الحالة نلاحظ ظهور سهم على بلوك Model
والان قم بوضع بلوك function call controller الموجود فى
ports & subsystem
ثم قم بتوصيله ببلوك model
والان قم بالدخول الى قائمة simulation واختار configure parameters
وفى خانه ال solver اختار fixed step واختار من قائمة
Periodic sample time constraint
اختار Ensure sample time independent
ويجب ملاحظة ان اشارة الدالة يجب ان تكون scalar
وسيكون النموذج على الشكل الاتى :

12.gif

Browsing Model Reference Dependencies

يمكننا عرض شكل لتسلسل الانظمة المرجعية فى صورة هرمية من خلال الدخول على قائمة Tools ثم اختيار Model Reference Graph او عن طريق ادخال الامر الاتى فى الماتلاب
view_mdlrefs
وسيظهر لنا الشكل الاتى
13.gif

Converting Subsystems to Model References

يمكننا تحويل النظام الفرعى الى نظام مرجعى من خلال الظغط كليك يمين واختيار
Convert to Model Block ولكن فى حالة atomic subsystem فقط
انتهى الدرس السادس
 

ahmedeldeep

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