![]() |
|
![]() |
![]() |
|
|
|||||||
|
![]() |
|
|
LinkBack | أدوات الموضوع | تقييم الموضوع |
|
|||
|
ويجب ملاحظة ان triggered subsystems تختلف عن الانظمة enabled subsystems حيث انها تقوم بحجز اخر قيمة للخرج ولا يمكننا استعادة الخرج عند قيمة ابتدائية ماعدا الانواع التى يكون استدعائها بأمر وهى البلوكات Function-Call Subsystems ويكون شرط تنفيذ هذه البلوكات مرتبط بأمر منطقى فى ال S-function الخاصة بالبلوك وسوف نتعرض لها لاحقا . ملحوظة :: جميع البلوكات فى الانظمة الفرعية التى تستخدم الTrigger يجب ان يكون زمن تقطيعها متوارث (-1) او مالانهاية وهذا معناه ان البلوكات الموجودة فى النظام الفرعى يتم تشغيلها عند تشغيل النظام الفرعى اى يجب ان لا يحتوى النظام الفرعى على بلوكات ذات زمن متصل مثل بلوك التكامل. ونقوم الان بعمل هذا المثال البسيط كما يلى :: ![]() والنظام الفرعى ![]() وستكون نتيجة تنفيذ هذا المثال كما يلى : ![]() ومن الشكل السابق نجد الاشارة التى باللون الاصفر ترمز على اشارة التحكم trigger والاشارة التى باللون السماوى هى اشارة الدخل واللون البنفسجى يرمز الى اشارة الخرج ونلاحظ ايضا حدوث تنفيذ البلوك اى حدوث خرج فى حالة ارتفاع اشارة التحكم فقط ثم يتم امساك للقيمة حتى الارتفاع الثانى تابع
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
|
|||
|
ثالثا :: Triggered and Enabled Subsystems وهذا النوع الثالث من انواع الانظمة الفرعية وهو يجمع النوعان السابقان حيث يقوم فى البداية بانتظار حدوث ال trigger ثم يقوم بالتعامل معه اذا كانت اشارة التحكم المستخدمة مع الجزء enabled موجودة ويمكن توضيح هذه الخطوات فى الشكل الاتى :: ![]() والان سنقوم بعمل مثال بسيط على هذا النوع قم بتكوين المثال كما بالرسم الاتى :: ![]() ويكون النظام الفرعى كما فى الرسم الاتى ![]() ونتيجة تنفيذ المثال الاتى موجودة فى الشكل التالى :: ![]() ومن الشكل السابق نجد ان الاشارة التى باللون السماوى هى اشارة الدخل وهى عبارة عن sine wave اما الاشارة التى باللون الاصفر فهى ال trigger وهى عبارة عن step input وتبدا عند الزمن واحد ثانية لتصبح قيمتها تساوى واحد وتستمر حتى أخر زمن المحاكاه وهذه الاشارة تستخدم فى محاكاة الانظمة الديناميكية والتى تعبر عن تغير مفاجى فى قيم النظام . اما الاشارة التى باللون الاحمر فهى عبارة عن pulse مدتها 10 ثوانى وتكون قيمتها تساوى واحد فى 50% من الفترة الزمنية duty cycle وهنا نستخدمها للتعبير عن اشارة التحكم enable وعند الزمن يساوى واحد يبدا مخطط تنفيذ النظام عند حدوث ال trigger بالارتفاع وفى هذه النقطة تكون اشارة التحكم موجودة فيحدث تنفيذ للنظام الفرعى وتكون قيمة الخرج مساوية لقيمة ال sine عند الزمن يساوى واحد وبعد ذلك لا نجد ارتفاع اخر لاشارة التحكم trigger ولذلك ستستمر قيمة الخرج ممسكة عند هذه القيمة . تابع
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
|
|||
|
Creating Alternately Executing Subsystems يمكننا استخدام الانظمة الفرعية المتوقف تنفيذها على اشارة تحكم مع بلوك merge الذى يستخدم لدمج اشارتين معا لعمل انظمة فرعية يتم تنفيذها بالتبادل ويتم اعتمادها على حالة الموديل والان سنقوم بتطبيق المثال الاتى وهو موديل لعمل full-wave rectifier والتى تستخدم فى تحويل التيار المتردد الى تيار مستمر : ![]() ويتكون من نظامان فرعيان كما يلى النظام الفرعى الاول ![]() النظام الفرعى الثانى ![]() وتكون نتيجة التنفيذ كما يلى :: ![]() تابع
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
|
|||
|
Conditional Execution Behavior يقوم السميولينك بتجنب البلوكات الغير ضرورية اثناء عملية تنفيذ المحاكاة ومن امثلة هذه البلوكات Switch او Multiport Switch وهما يستخدمان فى تحويل الاشارات وايضا من البلوكات التى من الممكن تكون غير ضرورية الانظمة الفرعية المرتبطة بشرط لتنفيذها وهذا يسمى conditional execution (CE) behavior. وفى المثال الاتى سوف نقوم بمعرفة هذه الخاصية : ![]() والنظام الفرعى كما فى الصورة الاتية : ![]() وقبل عمل ال simulation قم بالدخول الى قائمة format ثم اختيار Block displays ثم sorted order كما فى الصورة الاتية :: ![]() وبعد عمل ال simulation نلاحظ وجود ارقام فوق كل بلوك وهذه الارقام تكون على الصورة الاتية : X:Y حيث يعبر عن X على انها الطبقة layer الموجود فيها البلوك فكل البلوكات الموجودة فى الطبقة الاساسية يكون لها ال X=0 اما Y فترمز الى ترتيب تنفيذ البلوك ففى الشكل الاتى نجد : ![]() بلوكات ال Pulse generator و constant و subsystem و gain و scope تحتوى على رقم X يساوى الى صفر اى انها تنتمى الى الطبقة الاساسية فى الموديل ويكون ترتيب تنفيذها وهو الرقم Y كما يلى 1- Pulse generator 2- constant 3- subsystem 4- gain 5- scope ونلاحظ هنا ان بلوك subsystem عليه الاتى 0:2{1} وهذا معناه انه يحتوى على الطبقة الاولى وهى تاتى بعد الطبقة الاساسية وبالدخول الى النظام الفرعى نجد الاتى :: ![]() ونجد بلوك الادخال يحتوى على الرقم الاتى 1:0 وهذا معناه انه موجود فى الطبقة الاولى و سيكون تنفيذه فى البداية وبلوك الاخراج لا يحتوى على اى ارقام لانه لم يتم تنفيذه لعدم وجود ما يتم اخراجه والان قم بالضغط كليك يمين على بلوك subsystem واختيار Subsystem parameters ![]() وعندما تفتح لك نافذه الاختيار قم بوضع علامة صح حول Propagate execution context across subsystem boundary ![]() وهذا فائدته ان يقوم بجعل تنفيذ البلوكات الموجودة حول النظام الفرعى مرتبط بتنفيذ النظام الفرعى وهذا يعمل على زيادة سرعة المحاكاة مثلا لدينا بلوك gain لن نحتاجه الا عندما يتم تنفيذ النظام الفرعى وعند ايقاف النظام الفرعى غير مهم تنفيذ هذا البلوك تابع
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
|
|||
|
والان قم بعمل المحاكاة مرة اخرى والان سنلاحظ الارقام على البلوكات : ![]() والان اصبح البلوك 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 ويكون شكلها كما يلى ![]() انتهى الدرس ..
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
|
|||
|
قرأت ذات مرة أنه بالإمكان تحويل رسمة ثلاثية الأبعاد في برنامج رسم ميكانيكي (Mechanical desktop) مع علاقة العناصر و ارتباط الألات ببعضها إلى (Matlab( و تحليل درجات حريتها و حركتها فهل نخبرني كيف يتم ذلك , رجاء
لأنني لم أتمكن من تطبيقها |
|
|||
|
اقتباس:
وبالنسبة للماتلاب يجب ان بكون الرسومات فى صورة ملفات من الممكن قراءتها فى الماتلاب مثل xml كما ذكرت او data او excel وتكون عبارة على بيانات ثلاثية الابعاد ثم نقوم بتوقيعها للحصول على الرسم المطلوب ويمكنك بالفعل الاشتراك فى الدورة واهلا بك مرة اخرى
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
|
|||
|
الدرس السادس : 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 كما موضح فى الصورة الاتية ![]()
__________________
Eng Ahmed El Deep Mechatronics Engineer
|
![]() |
| مواقع النشر (المفضلة) |
| أدوات الموضوع | |
| تقييم هذا الموضوع | |
|
|