قوانين الملتقى | نسيت كلمة المرور
◄   شارك في دعم الملتقى 

◄  للإعلان أو لطلبات البحث عن موظفين
 

أنت غير مشترك بملتقى المهندسين العرب .. للاشتراك اضغط هنا 


ملاحظة : تم عمل البرنامج ليقوم تلقائيا باختيار عشوائي للفائزين بهدايا الملتقى عند انتهاء الوقت المحدد مباشرة ، حيث سيعرض الأسماء و هدية كل مشارك . 

http://www.arab-eng.org/vb/uploaded2009/1/1268238098.gif

   مجموعات بريدية مدعومة من ملتقى المهندسين : قروب الهندسة الصناعية - قروب هندسة التعدين و البترول

العودة   ملتقى المهندسين العرب - أول ملتقى هندسي عربي > الهندسة الميكانيكية > هندسة الميكاترونكس > برنامج الـ Matlab


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


موضوع مغلق
 
LinkBack أدوات الموضوع
قديم 16-06-2006, 11:16 PM   رقم المشاركة : [11 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep
الدرس الرابع :: السبت 17/6/2006

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


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






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



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


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


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



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





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

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



التوقيع:
Eng Ahmed El Deep
Mechatronics Engineer
ahmedeldeep غير موجود حالياً  
قديم 16-06-2006, 11:22 PM   رقم المشاركة : [12 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep
تابع الدرس الرابع


Model Navigation Commands


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

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

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




Open Block In New Window

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




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





Window Reuse


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




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





Controlling Access to Subsystems

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

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

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


التوقيع:
Eng Ahmed El Deep
Mechatronics Engineer
ahmedeldeep غير موجود حالياً  
قديم 16-06-2006, 11:24 PM   رقم المشاركة : [13 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep


Creating Conditionally Executed Subsystems


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

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

اولا ::: Enabled Subsystems

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

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

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


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


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



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

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


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

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

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

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


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

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

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





التوقيع:
Eng Ahmed El Deep
Mechatronics Engineer
ahmedeldeep غير موجود حالياً  
قديم 22-06-2006, 09:37 PM   رقم المشاركة : [14 (permalink)]
جديد
الصورة الرمزية سامي*
 

سامي* يستحق التميز

بارك الله فيك وجعله في ميزان حسناتك
وإلى الأمام إن شاء الله



سامي* غير موجود حالياً  
قديم 23-06-2006, 07:24 PM   رقم المشاركة : [15 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep
الدرس الخامس 24/6/2006 :: تكملة الانظمة الفرعية

ثانيا : Triggered Subsystems


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

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

ملحوظة :

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

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


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



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



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



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

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



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



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



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



التوقيع:
Eng Ahmed El Deep
Mechatronics Engineer
ahmedeldeep غير موجود حالياً  
قديم 23-06-2006, 07:30 PM   رقم المشاركة : [16 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep

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

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


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



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



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



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


تابع


التوقيع:
Eng Ahmed El Deep
Mechatronics Engineer
ahmedeldeep غير موجود حالياً  
قديم 23-06-2006, 07:35 PM   رقم المشاركة : [17 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep


ثالثا :: 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
ahmedeldeep غير موجود حالياً  
قديم 23-06-2006, 07:40 PM   رقم المشاركة : [18 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep


Creating Alternately Executing Subsystems

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

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



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

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



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



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



تابع


التوقيع:
Eng Ahmed El Deep
Mechatronics Engineer
ahmedeldeep غير موجود حالياً  
قديم 23-06-2006, 07:49 PM   رقم المشاركة : [19 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep



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
ahmedeldeep غير موجود حالياً  
قديم 23-06-2006, 07:58 PM   رقم المشاركة : [20 (permalink)]
عضو متميز
الصورة الرمزية ahmedeldeep
 

ahmedeldeep

والان قم بعمل المحاكاة مرة اخرى والان سنلاحظ الارقام على البلوكات :



والان اصبح البلوك 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
ahmedeldeep غير موجود حالياً  
موضوع مغلق

الكلمات الدلالية (Tags)
المحاكاة, السميولينك, بإستخدام, دورة, simulink

أدوات الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة

الانتقال السريع


الساعة الآن 03:54 PM.


Powered by vBulletin® / BoxLink.NET
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd
جميع المواضيع المطروحة لا تمثل رأي إدارة الملتقى ، بل تعبر عن رأي كاتبيها .

Content Relevant URLs by vBSEO 3.3.1