دورة المحاكاة بإستخدام السميولينك SIMULINK
description
Transcript of دورة المحاكاة بإستخدام السميولينك SIMULINK
SIMULINK دورة المحاكاة بإستخدام السميولينك
وتتكون الدورة مما يلى
SIMULINK ـ مقدمة فى ال
SIMULINK ـ أساسيات ال
البلوكات التعامل مع
االشارات التعامل مع
البيانات التعامل مع
الجداول التعامل مع
النمذجة
المحاكاه
تحليل النتائج
Subsystems عمل نماذج فرعية
simulink Debugger التعامل مع
Simulink Accelerator التعامل مع
ماتالب عمل بلوكات تحتوى على دوال
S-function مقدمة عن ال
M-files باستخدام S-function كتابة ال
C++ codes باستخدام S-function كتابة ال
للبلوك عمل خصائص
SIMULINK مقدمة فى ال ؟؟ Simulink لنتعرف ما هو ال : اوال
الديناميكية سواء كانت خطية او هو برنامج للنمذجة و المحاكاة و تحليل االنظمة Simulink ال
. المستمر او فى الزمن الغير مستمر غير خطية و يقوم أيضا بنمذجة االنظمة سواء فى الزمنبناء نماذج من البداية او التعديل على انظمة موجودة بالفعل يمكنك simulink وباستخدام ال
دراسة خصائص نظام التحكم اوالمنظومة قبل البدء فى التنفيذ حتى نحدد والفائدة من ذلك هوالنظام لما نقوم بعمله وهو الحاكم وهل نظام التحكم الموجود سيعطى احسن مدى استجابة اخطاء ام ال ؟ استجابة وأقل
مجموعة من البلوكات ليس قاصرا على التحكم وتطبيقاته وانما يحتوى على simulink وال .الطيران والتى تغطى أغلب تطبيقات الهندسة الميكانيكية والكهربية وهندسة
البرنامج وهذا معناه ان Model-Based Design اداة ممتازة لى SIMULINK ويعتبر الوالتى يوجد بها ليس فقط قاصرا على االنظمة المثالية ولكن يمكنك ايضا من نمذجة انظمة حقيقة
االحتكاك ومقامة الهواء وانزالق التروس مثل nonlinear عوامل موثرة لجعلها غير خطية . والظواهر الطبيعية االخرى
يمكنك استخدامها او التعديل الغلب التطبيقات Demo يوجد فى البرنامج العديد من النماذج كما . عليها
graphical user interface بما يسمى سهل جدا فهو يوفر simulink والتعامل مع ال(GUI) حيث تقوم بسحب البلوكات التى تريدها الى صفحة النموذج وتقوم فى بناء النماذج
يمكنك ايضا تغير خصائص البلوكات الموجودة بالضغط عليها بالماوس بتوصيلها بطريقة سهلة و يمكنك ايضا عمل البلوكات الخاصة بك و يكون هذا باستخدام ما يسمى بى وتعديل خصائصها كما
S-function وسوف نتعرض له الحقا . ويمكنك اختيار خصائص ال simulation بناء النموذج نقوم بتشغيل النموذج لعمل ال وبعد
simulation وهذا يكون فى وطريقة التكامل non-real time كما يمكننا ايضا عمل محاكاة الموجودة فى البرنامج باسم وهذا باستخدام مجموعة البلوكات real time للنماذج فى ال
Xpc Target و Real Time Workshop وسوف نتعرض لهذا الحقا . من خالل سطر أوامر الماتالب وهذا يكون مفيد جدا فى Simulation ويمكننا التحكم فى ال
ال ألكثر من نموذج و ويمكن تخزين النتائج و استخدامها مع Simulation حالة الرغبة لعملToolboxs الموجودة فى الماتالب .
والصورة االتية توضح الواجهة الرئيسية للبرنامج
والصورة االتية توضح صفحة بناء النماذج
Building a Model سنرى كيفية بناء النماذج : ثانيا
النموذج من سنقوم االن بعمل نموذج بسيط لنظام معين و يتكون هذا
signal generator
لتطبيقها على النظام الموجود وسنستخدم منها signals حيث يقوم بتوليد العديد من أنواع ألsquare wave.
Transfer function
الدرجة الثانية وهى تمثل النظام الموجود لدينا وهو نظام بسيط من
Scope
Simulation ويستخدم فى عرض نتائج عملية ال
Mux block
scope فى نفس ال signal ويستخدم هنا لعرض اكثر من
: وفى الصورة التالية نرى الشكل العام للنموذج
وللبدء فى العمل
:: وال سنقوم بفتح نموذج فارغا
قم بالكتابة فى سطر أوامر الماتالب ما يلى simulink لفتح برنامج ال
:ودك
>>simulink
بالصورة او بالضغط على هذا الزر فى واجهة الماتالب كما موضح
: سابقا وسيكون على الصورة االتية وبعد ذلك بالضغط على نموذج جديد كما الحظنا
البلوكات المطلوبة واالن سنقوم بمرحلة اضافة
اوال أضافة ال
Signal generator
قم بالضغط على قائمة
simulink لتفتح لك مجموعة من االقسام
اختار منها
sources
البلوكات الموجودة فى هذا القسم أختار منها وستفتح لك على اليمين مجموعة
signal generator
البلوك الى النموذج وقم بالضغط على الماوس وسحب
الصورة التالية والخطوات السابقة موضحة فى
ثانيا
scope اضافة ال :
لتفتح لك مجموعة من االقسام simulink قم بالضغط على قائمة - 1
sinks أختار منها -2 scope أختار من اليمين -3
البلوك الى النموذج وقم بالضغط على الماوس وسحب
الشكل االتى والخطوات السابقة موضحة فى
transfer function الضافة ال : ثالثا
االقسام لتفتح لك مجموعة من simulink قم بالضغط على قائمة
continuous اختار منها
transfer function ومن اليمين اختار
البلوك الى النموذج وقم بالضغط على الماوس وسحب
الشكل االتى والخطوات السابقة موضحة فى
Mux block رابعا ::الضافة ال
االقسام لتفتح لك مجموعة من simulink قم بالضغط على قائمة
Signal Routing اختار منها
Muxومن اليمين اختار
البلوك الى النموذج وقم بالضغط على الماوس وسحب
الشكل االتى والخطوات السابقة موضحة فى
:: لدينا كما يلى واالن سيكون شكل النموذج
بين البلوكات واالن سبدأ فى عملية التوصيل::
قتين للتوصيليوهناك طر
: االولى
وتكون node المباشر و ليس للتوصيل الخطوط اى عمل العقد هى التوصيل السريع و للتوصيل
المراد توصيله حتى يتم تحديده اى ظهور مربعات صغيرة من عن طريق الضغط على البلوك مفتاح حوله وبعد ذلك قم بالضغط على
ctrl مع أستمرار الضغط قم بالذهاب بالماوس الى البلوك االخر المراد فى لوحة المفاتيح . عليه بالماوس ضغطة واحده و ستالحظ ان يتم التوصيل مباشرة توصيله و قم بالضغط
والثانية :الماوس على طرف البلوك عند النقطة المراد هى التوصيل اليدوى وتكون عن طريق تحريك
توصيلها حتى ياخد شكل الماوس عالمةعلى الماوس و استمر فى الضغط وقم بالسحب حتى النقطة االخرى وبعد ذلك قم بالضغط +
ولكن مذدوجة ثم اترك الماوس ليتم التوصيل + شكل الماوس عالمة المراد توصيلها حتى يأخد . مباشرة كما يلى
واالن سنتقل الى مرحلةConfiguring the Model
البلوكات اى التعديل فى خصائص اوالوقم بوضع الخصائص كما signal generator على بلوكdouble click قم بالضغط ::
:: التالية موضح فى الصورة
وايضا بالنسبة للTransfer function
واالن سنتقل الى مرحلة عمل الSimulation
قم بتحديد زمن ال اوالsimulation ثوانى 10 وليكن
ثانيا
: كما موضح فى الشكل التالى start simulation قم بالضغط على :
وبعد الضغط علىstart simulation بالضغط قم double click على أل Scope لمشاهدة نتيجة عملية أل
Simulation عن استجابة النظام الموجود وهو نظام من الدرجة الثانية ل وهى عبارة square wave ثواني10 لمدة
الصورة االتية كما موجود فى
؟؟ كيف يعمل السميولينك
مقدمة : بمحاكاة األنظمة الديناميكية كما تعرفنا سابقا وتتم هذه العملية بمرحلتين هما يقوم السميولنك . يحتوى على مجموعة البلوكات المطلوبة يقوم بها المستخدم بعمل النموذج والذى المرحلة األولى
. يقوم البرنامج بتنفيذ عملية المحاكاة فى الفترة الزمنية المطلوبة والمرحلة الثانية
المنظومات الديناميكية نمذجة
المعادالت الرياضية ويتم تمثيل هذه المعادالت فى من المعروف ان المنظومات الديناميكية تتكون من مجموعة من الفكرة مأخوذة من مبادى التحكم االلى والمعروف بى السميولنك على هيئة بلوكات وهذه
Block Diagram أفتراضى وتنقسمالبلوكات فى السميولنك الى نوعان نوع افتراضى و نوع غير
(nonvirtual block and virtual blocks) . تحويل التى تمثل عناصر النظام الديناميكى اما االنواع االفتراضية وهى التى تستخدم فى االنواع الغير افتراضية هى
. االشارات وغيرها دون ان تدخل فى تكوين النظام او معادالته الرياضية
؟؟؟ "time-based block diagram" ما معنى
اى ان هناك عالقة زمنية بين االشارات وبين المتغيرات -1(state variables) ويكون حل النموذج اوblock diagram الزمن المحدد هو حل لهذه العالقات خالل time
step والذى يمثل بزمن البداية الى زمن النهاية . . تعبر عن كميات تتغير مع الزمن وتكون معرفة خالل الفترة الزمنية المحددة االشارات -2يحتوى على مجموعة من العالقة بين االشارات والمتغيرات تكون عبارة عن مجموعة من المعادالت اى ان كل بلوك -3
. وبين الخارج منه المعادالت وهذه المعادالت توضح العالقة بينه و بين الداخل له
ويوجد نوعان من انواع البلوكات تبعا لنوعية بناءها
built-in blocks البلوكات الموجودة فى البرنامج وتسمى -1 البلوكات التى يقوم المستخدم بعملها وتسمى -2
custom blocks User-defined
States حساب الخرج الخاص التى تمثل قيم النظام الموجود وهى عبارة عن مجموعة من المتغيرات والتى تستخدم فى وهى
continuous و Discrete : وهما states بالبلوك عند الخطوة الزمنية المحدده وهناك نوعان من انواع ال . متقطعة ومستمرة
. intervals محددة والمستمرة هى التى تتغير باستمرار اما المتقطعة هى التى تتغير عند فترات زمنية كما فى الشكل التالى States وتعتبر البلوكات
: البلوكات االتية يجب ان تحتوى على احد continuous states والبلوكات التى تعبر
• Integrator
ووظيفة هذا البلوك هو تكامل االشارة الداخلة
• State-Space
State-Space ووظيفة هذا البلوك هو عمل نظام خطى من النوع
• Transfer Fcn
transfer function وظيفة هذا البلوك هو عمل نظام خطى من النوعو
• Zero-Pole
ولكن يحتوى transfer function النوع وهذا البلوك يعتبر حالة خاصة من السابق حيث يعبر عن نظام خطى من . سواء فى البسط او المقام تساوى صفر S اى يوجد قيم ل zero-pole-gain على
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
الديناميكية محاكاة االنظمة
Start Simulation الضغظ على ماذا يحدث عند ؟؟؟
Model Compilation اوال
executable form يمكنه حلها اى يقوم السيميولنك بتحويل البرنامج او النموذج الى الصورة التى : ويكون تسلسل خطوات هذه العملية كما يلى
وايجاد قيمتها حساب قيم التعبيرية لخصائص البلوكات -1
block parameter expressions
البيانات و ابعداها تحديد خصائص االشارات مثل نوعها و نوع -2
ويستخدم طريقة ويقوم بتحديد الخصائص الغير موجودة -3attribute propagation
يقوم بعملية تخفيض للبلوكات -4
optimizations
يقوم وضع النموذج فى تسلسل هرمى -5hierarchy
الحقا يقوم بتحديد رتبة كل بلوك وسوف نتعرض له -6
block sorted order
يقوم بتحديد الفترات الزمنية لكل بلوك -7Sample 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 المستمرة فى كل فترة زمنية وعندما يجد البرنامج منطقة بها وهى الطريقة المستخدمة فى البحث عن الحاالت الغير
. بتحديد زمنها بدقة ويقوم بأخد فترات زمنية أضافية قبلها وبعدها عدم استمرارية يقوم لماذا نستخدم هذه الطريقة ؟؟
عدم االستمرارية يحدث تغير هام جدا فى الخصائص الديناميكية للنظام وغالبا تتزامن مناطق وذلك الن عند مناطق عدم . االستمرارية مع االحداث المهمة فى النظام
الطريقة بتقليل حجم الفترة الزمنية الى قيم صغيرة جدا مما قد يودى الى زيادة زمن ومن الممكن االستغناء عن هذه .المحاكاة
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 : وأيضا معرض للخارج كما فى الشكل التالى
z = u/2 ويكون الحل z = u – z ومن الشكل السابق نرى ان ويمكننا أيضا استخدام بلوك
Algebraic Constraint algebraic loop فى عمل
Modeling and Simulating Discrete Systems
المتقطع تكمن مقدرة السميولنك على محاكاة االنظمة ذات الزمن multirate) معدل تغيرها غير ثابت وايضا قدرة على محاكاة االنظمة التى يكون (sampled data) والتى تسمى
systems) - معينة وبلوكات أخرى ذات فترة زمنية مختلفة - ومحاكاة والتى يكون فيها بلوكات ذات فترة زمنية :: فى الخاصيتين التاليتين (hybrid systems) متصلة و متقطعة معا االنطمة التى تجمع بيانات
1- SampleTime block parameter
implicit و explicit وهما block parameter Sample Timeالفترة الزمنية يوجد نوعان من نوع حجم . implicit الزمن المتصل تكون من النوع والبلوكات ذات
2- Sample-time inheritance
الفترة الزمنية الخاص بها من البلوك المتصل بمدخلها أما بالنسبة يمكن ألغلب بلوكات السميولنك ان تاخد حجم . لها مدخل يمكنها ان تتوارث الفترة الزمنية من البلوكات المتصلة بمخارجها للبلوكات التى ليس
Determining Step Size for Discrete Systems الزمنية يقوم السميولنك باختيار حجم للفترة
step size sample time hits متزامن مع الزمن الخاص بمعدل تقطيع االشارة
fundamental sample time ويكون أختياره بناء على : مثال sample time هو أكبر عدد صحيح مقسوما عليه ال fundamental sample time ويكون
فيكون0.5و sample times 0.25 لدينا
fundamental sample time 0.25
solver فى محاكاة االنظمة ذات الزمن المتقطع استخدام كال النوعين من ال ويمكننا
وهماvariable-step discrete
fixed-step او
fundamental sample time يساوى simulation step size يكون fixed-step وفى حالة
sample time مساوى للمسافة بين نقط التقطيع step size يكون variable-step solver وفى حالة
hits. : التالى والفرق بينهم موضح فى الشكل
Sample Time Propagation توليد زمن التقطيع أو حجم الفترة الزمنية
تقطيعها وهى البلوكات هذه العملية فى بداية المحاكاة لتحديد زمن التقطيع للبلوكات التى تتوارث زمن يقوم السميولينك :: التى ليس لها مداخل ومثال فى النموذج االتى
هو الخرج ولذلك الخارج يكون له نفس زمن تقطيع فى ثابت والناتج يكون ووظيفته هى ضرب الدخل gain نرى بلوك :: باالتى البلوك السابق له ويقوم السميولينك
بتخصيصه اذا كان الداخل له نفس زمن التقطيع فان السميولينك يقوم -1البلوك نفسه فان السميولينك يقوم اذا كان الداخل له زمن تقطيع مختلف ولكن عدد صحيح و اسرع من زمن -2
بتخصيص الزمن االسرع
Constant Sample Time :: زمن التقطيع الثابت
الخاص بالبلوكات التى ال يتغير زمن تقطيعها اثناء عملية المحاكاة وشروط هذه والمقصود به هو زمن التقطيع
:: البلوكات nontunable أثناء المحاكاة غير قابلة للتعديل parameters ان يكون جميع معامالت البلوك -1او تكون قابلة لتوارث زمن التقطيع من بلوكات (inf) ماالنهاية ومن الممكن وضع زمن التقطيع لهذه البلوكات -2
. البلوكات ذات زمن تقطيع ثابت أثناء عملية المحاكاة أخرى بشرط ان تكون تلك عن هذه البلوكات قبل بداية المحاكاة حتى يسهل من عملية الحسابات ويقوم السميولينك عمل بحث
نتيجة وجود معامالت وجد السميولينك بلوكات لديها زمن تقطيع ماالنهاية ولكن ال تعتبر ذات زمن ثابت وذلك أما اذا
من الممكن تعديلهاTunable Parameters
وقد سبق ذكرها Sample Time Propagation عملية فانه يقوم بتنفيذ
كيفية بناء النماذج
االشياء المهمة قبل البدء فى بناء النماذج وهى عن أساسيات فى البداية سأقوم بتوضيح بعض السميولينك
السميولينك ويجب علينا مالحظة ان جميع عرفنا فى الدرس االول كيفية فتح برنامج :: اوالالحالى وان يكون الموديل موجود فى مسار الماتالب mdl. برامج السميولينك يكون لها االمتداد
:: كما فى الشكل التالى
Model Editor محرر الموديل
:: ويتكون كما بالشكل التالى
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 وتكون عند بداية المحاكاة واذا وجد خصائص لم يستطيع وضعاها فانهالعملية على ان يقوم المستخدم بوضعها ويمكنك جعل السميولينك يقوم بهذه العملية يوقف هذه
او من خالل لوحة Update Diagram ثم أختيار Edit اى وقت بالدخول الى قائمة فى .. Ctrl+D مباشرة المفاتيح
ثم Format خطوط التوصيل يمكننا الدخول الى قائمة ولمشاهدة انواع البيانات علىPort/Signal Displays التالى كما بالشكل
واالن يمكننا البدء فى معرفة
النماذج كيفية عمل
جديد اوال عمل تمبلت لنموذجوشريط ode45 الوضع االساسى يكون بخلفية بيضاء و طريقة حل عند فتح السميولينك فان
االدوات يكون ظاهراالدوات ويمكنك عمل تمبلت كما نشاء فمثال لجعل السميولينك بخلفية زرقاء وبدون شريط
ode3 وبطريقة حل
:: وضع به االتى M-file افتح :كود
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 if nargin == 0 arab_eng = 'arab_eng'; end % create and open the model open_system(new_system(arab_eng)); % set default screen color set_param(arab_eng, 'ScreenColor', 'blue'); % set default solver set_param(arab_eng, 'Solver', 'ode3'); % set default toolbar visibility set_param(arab_eng, 'Toolbar', 'off'); % save the model save_system(arab_eng);
قم بعملية تشغيلة من خالل الماتالب وسيكون شكل النموذج الجديد وبعد ذلك قم بحفظ الملف ثم كما يلى
تغيير ألوان البلوكات
ولون خلفيته وذلك عن طريق اختيار البلوك المراد تلوينه وتحديده يمكننا تغيير لون البلوكالختيار Foreground color واختيار Format ثم الدخول الى قائمة بالضغط عليه بالماوس
الختيار لون Screen color الختيار لون خلفيته وايضا Background color لون البلوك و خلفية النموذج
set_param من خالل برنامج ماتالب وذلك عن طريقه االمر ويمكننا أختيار هذه االلوان الجدول االتى كالموجود فى البرنامج السابق ويوجد ثالثة عوامل لهذا االمر وهى موجودة فى
فى صورة اللون كما كان موجود فى المثال السابق او عن طريق وهذه المتغيرات يمكن وضعهاRGB
:: كالمثال التالى
:: السابق باستبدال السطر االتى يمكنك تجربته على البرنامج
:كود
set_param(arab_eng, 'ScreenColor', 'blue');
بهذا السطر
:كود
set_param(arab_eng, 'ScreenColor', '[0.3, 0.9, 0.5]')
كما موجودة الن السميولينك يقوم بتلوين البلوكات تبعا لنوع البلوك ومن االفضل ان تترك االلوان التى يستخدمها البرنامج والجدول االتى يوضح االلوان المختلفة Sample Time و ال
Sample Time Colors واختار Format بالدخول الى قائمة ولتشغيل هذه الخاصية قم . حتى يقوم البرنامج بتغيير االلون Edit من قائمة Update Diagram وتذكر ان تقوم بعمل
Annotating
عمل مالحظات فى النموذج
النموذج ويكون هدفها توضيحى وهى العبارات التى توضع على
بالماوس مرتين فى اى مكان فارغ ثم نقوم بكتابة ما نريد وللتحكم ولعمل مثل هذا نقوم بالضغط Annotation بالضغط عليه بالماوس اليمين ثم اختار من القائمة فى ما تم كتابته قم
Properties قم بتعديل ما تشاء ليظهر لك الشكل التالى واالن ::
فعندما تقوم بالضغط عليها Annotation فى صورة M function ويمكنك أيضا وضع اوامر بتنفيذ أمر معين وسوف نتعرض لها بالتفصيل الحقا يقوم البرنامج
Using TeX Formatting Commands in Annotations
الرياضية والرموز وذلك حتى نتمكن من كتابة المعادالت TeX Formatting نقوم باستخدام الالتينية ويكون عن طريق االتى
1- Enable القائمة أختار موجود وقم بالضغط كليك يمين بالماوس ومن annotation أختار
TeX Commands كما يلى ::
الى الرموز حتى يقوم البرنامج بتحويلها TeX وادخل اوامر وبعد ذلك قم بكتابه مالحظاتك :: المطلوبة وبعض هذه االوامر موضحة فى الشكل التالى
ومثال قم بكتابة االتى\alphara\beta-\iteng
وسيكون على الشكل التالى
عمل أنظمة فرعية
Creating Subsystems
لتقليل حجم الموديل وتبسيطه ويتم ذلك عن طريق عمل نظام فرعى نقوم بعمل أنظمة فرعية
& ports ثم simulink المطلوبة إليه ومثال قم بالدخول الى قائمة وإضافة البلوكاتsubsystems ثم subsystem كما بالشكل التالى ::
:: الى صفحة النموذج وسيكون شكله كما يلى وبعد ذلك قم بالسحب بالماوس
:: سيكون لدينا الشكل التالى وعند الضغط عليه بالماوس
للدخل من input المطلوب فى النظام الفرعى باستخدام بلوكات وبعد ذلك قم بعمل النموذج للخرج للنظام االصلى outport النموذج االصلى و ايضا بلوكات
:: عمله داخل نظام فرعى فيكون لدينا كما بالشكل التالى وسنقوم بوضع المثال السابق
:: كما يلى ويكون شكل الموديل االصلى
فرعية بطريقة أخرى حيث نقوم بتحديد البلوكات المطلوب وضعها فى النظام ويمكن عمل أنظمة
الضغط على الفرعى وcreate subsystem
:: كما يلى
من النماذج الفرعية وتكون كما سبق حيث نقوم بعمل النموذج ويمكن أيضا عمل طبقات متعددة . مستوى اعلى الفرعى داخل نموذج فرعى فى
الفرعى واخفاءه او اظهاره ويمكن كتابة اسم للنظام
Model Navigation Commands
عمل االنظمة الفرعية من طبقات متعددة فى تسلسل هرمى ويمكننا استعراض هذه يتيح لناوالذى سنتعرض له الحقا واالن سنقوم Simulink Model Browser باستخدام الطبقات
:: بعمل االتى
Open Block افتح البلوك
:: كما يلى open block واختيار edit ثم الدخول الى قائمة وذلك عن طريق تحديد البلوك
Open Block In New Window
الفرعى او كليك يمين واختيار افتح البلوك فى نافذه جديدة كما وتكون عن طريق تحديد النظام :: يلى
Go To Parent االصلى ويكون عن طريق الضغط كليك يمين فى اى مكان فى النظام يستخدم للعودة الى النظام
:: الى النظام االصلى كما يلى الفرعى واختيار العودة
Window Reuse
عرض النظام الفرعى فى نافذه جديدة او فى نفس النافذة الحالية يمكنك من هذه الخاصية تحديد
وتكون عن طريق االتى Window reuse من قائمة و اختيار واحده Preferences ثم اختيار File الدخول الى قائمة
type كما يلى ::
:: خصائص كل اختيار من االربعة والجدول التالى يوضح
Controlling Access to Subsystems
الوصول الى محتويات النظام الفرعى والتعديل فيها ويكون هذا يمكنك من منع المستخدمين فى عن طريق االتى
كما يلى subsystem's parameter كليك يمين واختار قم بتحديد النظام الفرعى و
:: وبعد الدخول ستفتح لنا النافذة االتية
واختيار Read/Write permissions المناسبة من قائمة ويمكننا اختيار التصريحاتReadOnly
NoReadOrWrite ReadWrite
Creating Conditionally Executed Subsystems
control signal االنظمة الفرعية المتوقف عملها على تنفيذ اشارة داخلة وتسمى وهى
االتية من االنطمة الفرعية المتوقف تنفيذها على اشارة دخل ويدعم السميولينك االنواع
Enabled Subsystems
Triggered Subsystems.
Triggered and Enabled Subsystems
A control flow subsystem
Enabled Subsystems ::: اوال
تنفيذها كل فترة زمنية عندما تكون اشارة التحكم موجبة سواء كانت كمية وهى االنظمة التى يتم vector او كمية متجهة scalar قياسية
النظام الفرعى يتم تنفيذه فى حالة اذا كان الدخل اكبر من الصفر واذا كانت كمية قياسية فانالنظام الفرعى يتم تنفيذه فى حالة اذا كان اى عنصر من المتجه اكبر واذا كانت كمية متجهة فان
من الصفرالفرعى او توقفه ويكون تنفيذ النظام sine wave تحكم عبارة عن وفى الشكل التالى نجد اشارة
كما يوضح السهم
Ports & Subsystems الموجود Enable block باستخدام ولعمل انظمة بهذا الشكل نقوم : كما يلى 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
وهذه االنظمة Trigger االنظمة الفرعية والتى يتم تنفيذها عند حدوث ال وهى نوع من انواعوالذى يحدد هل يتم تنفيذ النظام trigger input الفرعية يكون لها مدخل تحكم واحد ويسمى
ام ال ؟؟
وهما Trigger ال ويوجد ثالثة انواع لهذاRising
اشارة التحكم من قيمة سالبة او صفر الى قيمة موجبة واذا كانت القيمة وهذه الحالة عندما ترتفع سالبة فانه يتم تنفيذ النظام الفرعى عندما ترتفع الى الصفر االبتدائية
Falling عندما تنخفض اشارة التحكم من قيمتها االبتدائية الى قيمة اقل وهذا عكس الحالة السابقة اى
منها
Either السابقتين ويتم تنفيذ النظام الفرعى فى كلتا الحالتين سواء باالرتفاع وهذه الحالة تجمع الحالتين
. او االنخفاض
: ملحوظة
المتقطع عندما تتغير االشارة من الصفر سواء باالرتفاع او فى حالة االنظمة ذات الزمنحدوث النظام الفرعى عندما تكون قيمة االشارة صفر الكثر من فترة االنخفاض فانه يتم تنفيذ
. بسبب عملية التقطيع trigger لتالفى حدوث زمنية واحدة وذلك
ونالحظ انه فى F باالنخفاض او R اما باالرتفاع trigger لل وفى الشكل االتى نرى تنفيذقيمتها صفر لفترة زمنية واحده ولذلك الن االشارة كانت trigger لم يحدث 3 الفترة الزمنية
يجب ان تزيد عن واحد
الموجد لدينا وبتطبيق هذا على المثال بلوك وقم بسحب ports & subsystems قائمة السميولينك ثم الى قم بالدخول الى
trigger : الى النظام الفرعى وسيكون كما يلى
االصلى كما يلى وسيكون شكل النظام
قم بالضغط على البلوك trigger والختيار نوع ال : كما فى الرسم التالى وستظهر لنا نافذه االختيارات يمكننا منها اختيار نوعه
: شكل البلوك بعد كل اختيار كما يلى ونالحظ بعد االختيار بتغيير
فى حالة االرتفاع
وفى حالة االنخفاض
اما فى كلتا الحالتين
وفى حالة استدعاه بأمر
triggered subsystems ويجب مالحظة ان enabled subsystems تختلف عن االنظمة
اخر قيمة للخرج وال يمكننا استعادة الخرج عند قيمة ابتدائية ماعدا االنواع حيث انها تقوم بحجز يكون استدعائها بأمر وهى البلوكات التى
Function-Call Subsystems بالبلوك الخاصة S-function البلوكات مرتبط بأمر منطقى فى ال ويكون شرط تنفيذ هذه
. وسوف نتعرض لها الحقا
:: ملحوظةيجب ان يكون زمن تقطيعها Triggerال جميع البلوكات فى االنظمة الفرعية التى تستخدم
الفرعى يتم تشغيلها عند او ماالنهاية وهذا معناه ان البلوكات الموجودة فى النظام (1-) متوارثبلوكات ذات زمن متصل مثل تشغيل النظام الفرعى اى يجب ان ال يحتوى النظام الفرعى على
.بلوك التكامل
:: ونقوم االن بعمل هذا المثال البسيط كما يلى
والنظام الفرعى
: المثال كما يلى وستكون نتيجة تنفيذ هذا
واالشارة trigger ترمز على اشارة التحكم باللون االصفر االشارة التى ومن الشكل السابق نجدايضا يرمز الى اشارة الخرج ونالحظ واللون البنفسجى اشارة الدخل هى باللون السماوى التى
للقيمة حتى حدوث تنفيذ البلوك اى حدوث خرج فى حالة ارتفاع اشارة التحكم فقط ثم يتم امساك االرتفاع الثانى
Triggered and Enabled :: ثالثاSubsystems
االنظمة الفرعية وهو يجمع النوعان السابقان حيث يقوم فى البداية وهذا النوع الثالث من انواع
المستخدمة مع الجزء ثم يقوم بالتعامل معه اذا كانت اشارة التحكم trigger بانتظار حدوث الenabled الخطوات فى الشكل االتى موجودة ويمكن توضيح هذه ::
على هذا النوع واالن سنقوم بعمل مثال بسيط :: المثال كما بالرسم االتى قم بتكوين
الرسم االتى ويكون النظام الفرعى كما فى
:: موجودة فى الشكل التالى ونتيجة تنفيذ المثال االتى
هى اشارة الدخل وهى عبارة عن باللون السماوى االشارة التى ومن الشكل السابق نجد انsine wave فهى ال االصفر باللون اما االشارة التى trigger وهى عبارة عن step
input وتستمر حتى أخر زمن المحاكاه وتبدا عند الزمن واحد ثانية لتصبح قيمتها تساوى واحد . والتى تعبر عن تغير مفاجى فى قيم النظام وهذه االشارة تستخدم فى محاكاة االنظمة الديناميكية
تساوى ثوانى وتكون قيمتها 10 مدتها pulse فهى عبارة عن باللون االحمر االشارة التى اما
وهنا نستخدمها للتعبير عن اشارة التحكم duty cycle الزمنية من الفترة %50 فى واحدenable
باالرتفاع وفى هذه trigger مخطط تنفيذ النظام عند حدوث ال وعند الزمن يساوى واحد يبدا
مساوية النقطة تكون اشارة التحكم موجودة فيحدث تنفيذ للنظام الفرعى وتكون قيمة الخرج trigger نجد ارتفاع اخر الشارة التحكم عند الزمن يساوى واحد وبعد ذلك ال sine لقيمة ال
. الخرج ممسكة عند هذه القيمة ولذلك ستستمر قيمة
Creating Alternately Executing Subsystems
الذى merge استخدام االنظمة الفرعية المتوقف تنفيذها على اشارة تحكم مع بلوك يمكننا
انظمة فرعية يتم تنفيذها بالتبادل ويتم اعتمادها على حالة يستخدم لدمج اشارتين معا لعمل الموديل
والتى تستخدم فى full-wave rectifier المثال االتى وهو موديل لعمل واالن سنقوم بتطبيق
: تحويل التيار المتردد الى تيار مستمر
يلى ويتكون من نظامان فرعيان كما
االول النظام الفرعى
الفرعى الثانى النظام
:: وتكون نتيجة التنفيذ كما يلى
Conditional Execution Behavior
بتجنب البلوكات الغير ضرورية اثناء عملية تنفيذ المحاكاة ومن امثلة هذه يقوم السميولينكمن وهما يستخدمان فى تحويل االشارات وايضا Multiport Switch او Switch البلوكات
لتنفيذها وهذا البلوكات التى من الممكن تكون غير ضرورية االنظمة الفرعية المرتبطة بشرط يسمى
conditional execution (CE) behavior.
: وفى المثال االتى سوف نقوم بمعرفة هذه الخاصية
: الصورة االتية والنظام الفرعى كما فى
ثم اختيار format قم بالدخول الى قائمة simulation وقبل عمل الBlock displays
:: كما فى الصورة االتية sorted order ثم
وهذه االرقام تكون على الصورة نالحظ وجود ارقام فوق كل بلوك simulation وبعد عمل ال : االتية
X:Y
البلوك فكل البلوكات الموجودة فى الموجود فيها layer على انها الطبقة X حيث يعبر عن X=0 الطبقة االساسية يكون لها ال
: فترمز الى ترتيب تنفيذ البلوك ففى الشكل االتى نجد Y اما
بلوكات الPulse generator
يساوى الى صفر X تحتوى على رقم scope و gain و subsystem و constant و كما يلى Y الموديل ويكون ترتيب تنفيذها وهو الرقم اى انها تنتمى الى الطبقة االساسية فى
1- Pulse generator 2- constant
3- subsystem 4- gain
5- scope وهذا معناه انه يحتوى على الطبقة {1}0:2 عليه االتى subsystem ونالحظ هنا ان بلوك
االولى وهى تاتى بعد الطبقة االساسية :: وبالدخول الى النظام الفرعى نجد االتى
موجود فى الطبقة االولى و وهذا معناه انه 1:0 الرقم االتى ونجد بلوك االدخال يحتوى علىارقام النه لم يتم تنفيذه لعدم وجود ما سيكون تنفيذه فى البداية وبلوك االخراج ال يحتوى على اى
يتم اخراجه
واختيار subsystem واالن قم بالضغط كليك يمين على بلوكSubsystem parameters
االختيار قم بوضع عالمة صح حول وعندما تفتح لك نافذهPropagate execution context across subsystem boundary
تنفيذ البلوكات الموجودة حول النظام الفرعى مرتبط بتنفيذ النظام وهذا فائدته ان يقوم بجعلاال عندما يتم لن نحتاجه gain على زيادة سرعة المحاكاة مثال لدينا بلوك الفرعى وهذا يعمل
البلوك تنفيذ النظام الفرعى وعند ايقاف النظام الفرعى غير مهم تنفيذ هذا
: اخرى واالن سنالحظ االرقام على البلوكات واالن قم بعمل المحاكاة مرة
الفرعى فقط على الرغم انهم ينفذان مع النظام gain والبلوك constant واالن اصبح البلوك ترتيب التنفيذ كاالتى خارج النظام الفرعى وموجودين فى النظام االساسى ويكون
1- constant 2- subsystem
3- gain او Conditional Execution Behavior وهذا ما يعرف بىCE behavior
Propagating Execution Contexts وهذا عبارة execution context يقوم بتعريف ما يسمى بى عموما برنامج السميولينك
. النموذج عن مجموعة من البلوكات التى تنفذ مرة واحدة خالل زمن معالجة
. للنظام االساسى وايضا لكل نظام فرعى execution context ويقوم ايضا بعمل
هو مجموعة البلوكات التى يحتويها النظام execution context واى :السميولينك يقوم بالبحث عن الشروط االتية فى كل بلوك وعند تنفيذ المحاكاة فان
فقط نتيجة تنفيذ نظام فرعى هل خرج البلوك مطلوب فقط لتنفيذ نظام فرعى او دخله يتغير -12- حدود هذا البلوك مرتبط فى تنفيذه مع نظام فرعى وهذه الحالة عندما يكون هذا البلوك على هل
النظام الفرعى3- وسوف نعرف ما هى نقط االختبار الحقا testpoint خرج البلوك ليس نقطة أختبار هل4- execution context مسموح للبلوك ان يتوارث هل multirate block هل البلوك ليس من النوع -5 متوارث او ثابت sample time هل زمن التقطيع -6
execution context واذا فعال وجد ان هذه الشروط محققة ومسموح ان يتم توليد
الخاص بالنظام الفرعى وهذا execution context البلوك الى فان السميولينك يقوم بنقل الفرعى للتاكد ان هذا البلوك يتم تنفيذه فقط عندما يتم تنفيذ النظام
Switch وللتعامل مع بلوك
فرع من دخل البلوك بصورة مخفية ويكون لكل فرع يقوم السميولينك بمعالجة كلexecution context
فان كل فرع من هذا البلوك يتم الخاص به والذى يتم تفعيله عندما يتم اختيار تنفيذ الفرع وعموما . تنفيذه فقط عندما يتم اختياره كدخل
conditional اللغاء خاصية :: ملحوظةexecution behavior
وضع عالمة صح Optimization ثم Configuration Parameters قم بالدخول ال
Conditional input branch execution عند
خاصية هناك بعض الحاالت ال يستطيع البرنامج استخدام:: ملحوظة
Propagate execution context across subsystem boundary او النظام الفرعى له triggered subsystem الفرعى من النوع وهى عندما يكون النظام
خرج اكثر من مدخل او مخرج ولها شرط ابتدائى غير الصفر وفى هذه الحالة البلوك الموجود فى النظام الفرعى ال يمكنه ان يتوارث
subsystem's execution context
المداخل التى ال يستخدم خاصية ويكمننا اظهار مستطيالت حولPropagate
execution context
ثم Block Displays ثم format قائمة وهذا عن طريق الضغط اختيارExecution Context Indicator
ويكون شكلها كما يلى
Referencing Models
. ويتم اعتبارها على انها بلوكات المقصود بها هو ادراج نماذج تم عملها سابقا الى الموديل الحالى الموجود فى model ويتم ذلك عن طريق اضافة بلوك
simulink ثم
Ports & subsystems instance وهذا النوع من البلوك يسمى
. االصلى والذى يقوم هذا البلوك بالرجوع له ويقوم هذا البلوك بعرض المداخل والمخارج حسب الموجود فى الموديل the referenced تم عملها اتوماتيكيا وتسمى S-function السميولينك باستحضار واثناء عملية المحاكاة يقوم
model's simulation target وذلك لحساب خرج البلوك عند الحاجة . فان السميولينك يقوم بعمل اعادة توليد لل واذا حدث اى تغيير فى الموديل االصلى
simulation target . Referencing لنموذج به Referencing ان يتم عمل ويمكن ايضا
root model موديل فى التسلسل الهرمى يسمى لنموذج أخر وفى هذه الحالة يكون اعلى model – parent النموذج االساسى والبلوك ويسمى النموذج- الذى يكون فيه
بلوك لنفس الموديل على ان ال Referencing ان يحتوى على اكثر من وهو النموذج االساسى parent ويمكن لل يكون فى هذا الموديل
Global data راجع الماتالب global data هى ال ولمعرفة ما
. هو جعل الموديل الذى سيتم الرجوع اليه يتصرف بأسلوبين مختلفين وفائدة اضافة مرجعيتين لنفس الموديل
؟؟ Subsystems و Model Referencing بين ما الفرق
. بالمميزات االتية Subsystems عن ال Model Referencing تمتاز ال1- Modular development
موديل مستقل وتطويره من موديل سابق او اكثر يمكنك عمل2- Inclusion by reference
ايضا حيث يمكن عمل مرجعية لنموذج أكثر من مرة دون الحاجة من عمل نسخ متعددة من النموذج والعكس حيث يمكن
. عمل أكثر من مرجعية لنفس النموذج3- Incremental loading
. عملية المحاكاة تحميل البلوك اال فى حالة الرجوع اليه و يمكننا ترتيب عمليات الرجوع لالسراع من حيث لن يتم4- Incremental code generation
فانها تتفاعل مع السميولينك لعمل تطبيقات تنفذ لوحداها دون الحاجة الى Real-Time Workshop عند استخدام الحالة ان تكون وفى binaries حيث يتم توليد ما يسمى بى stand-alone applications والتى تعرف بى اى برامج
. يقوم بايقاف عملية المحاكاة حتى يتم تعديلها احدث من النموذج التى تم توليدها منه فان السميولينك binaries هذه ال
وسوف نتعرض لها الحقا Model Referencing الى Subsystems تحويل ال ويوجد بالسميولينك اداة تستخدم فى.
Model Reference واالن سنقوم بعمل
Creating a Model Reference
يكون هذا البلوك فى مسار الماتالب ولم يكن فى المسار يمكنك اضافته عن طريق اوال لعمل مرجعية لبلوك معين يجب ان
set path تفعيل لل اذا كان البلوك االساسى الذى تريد عمل المرجعية فيه هو اصال مرجعيه قم بعمل :: ثانيا
Inline parameters optimization فى التسلسل الهرمى ماعدا اعلى بلوك وذلك عن طريق حيث يجب عملها لكل البلوكات الموجودة
ثم simulation الدخول الى قائمةconfiguration parameters
كما موضح فى الصورة Inline parameters بوضع عالمة صح حول وقم optimization ثم من الشمال اختار
االتية
فى نموذج فارغ يكون شكله كما يلى model وعندما نقوم بوضع بلوك
: وليكن كما فى الشكل االتىref1 نموذج اخر جديد اسمه واالن سنقوم بعمل
الموجود فى النموذج االول وستظهر لنا نافذه الخيارات model واالن قم بالضغط على بلوك
:: كما يلى
ref1 له هو واسم النموذج المطلوب الرجوع
من النوع solver النموذج المطلوب الرجوع اليه يستخدم ويجب ان يكونFixed step لمعرفة كيفية عمل هذه راجع الفصول السابقة
يفتح لنا النموذج الذى سوف يرجع له واالن عند الضغط على البلوك model reference parameters واختار edit ولتغير خصائصه افتح قائمة
على المخرج وسيصبح شكل النموذج كما scope المدخل و على step واالن سنقوم بتوصيل :: يلى
يمكن تعديلها اثناء عملية المحاكاة هى المتغيرات والخصائص ويجب مالحظة ان الخصائص التى االعلى او الموجودة فى المستوى
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
الخاصة بكل مرجعية واالن سنعرف كيفية عمل ما سبق ذكره وهذه القيم
Model Arguments اوال لتعريفثم view النموذج عن طريق اختيار قائمة قم بقتح النموذج المرجع ثم قم بالدخول الى متصفح
model explorer اختيار :: االتى وسيظهر لنا الشكل
:: كما فى الشكل االتى model workspace قم باختيار
فارغة ولذلك سنقوم بعمل المتغيرات فى ال workspace نجد ان ال وفى الشكل السابقworkspace الدخول الى قائمة عن طريق add فى متصفح النموذج ثم اختيار MATLAB
variable كما يلى
نريد متغيران احدهما بقيمة صفر counter كما تريد فمثال فى ال ثم قم بتعديل المتغير واسمه
1واالخر هو الخطوة ولتكن قيمتها تساوى وهو القيمة االبتدائية :: كما بالشكل االتى
الموجود فى اليمين Model Arguments هذه االسماء فى خانة واالن قم بادخال
كما بالشكل االتى :: مع مراعاه استخدام فاصلة بينهما
من قائمة Model block's parameter النموذج االصلى وقم اختيار واالن اذهب الى
edit :: الخاصة بهذه المرجعية كما بالشكل االتى Model Argument واالن قم بادخال قيم
:: تمرين
بسيط مع counter يحتوى على مرجعيتين لنموذج واحد وليكن لى حاول ان تقوم بعمل نموذج !كما سبق وفى انتظار حلولكم ؟ تغير خصائص المرجعيتين
Model Block Sample Times
البلوك هو زمن التقطيع للنموذج الذى يرجع له ويتم تحديد ذلك فى ال يكون زمن التقطيع لهذاsimulation target ويتم تحديد ايضا اذا كان هذا النموذج يحتاج الن يتوارث زمن التقطيع
النموذج االساسى ويكون ذلك فى الحاالت االتية ام ال من ( ثوابت ال يوجد به بلوكات لها زمن تقطيع (متوارثة او -1 حاالت مستمرة ال يوجد به اى -2 بلوكات تحتوى تستخدم الزمن المطلق ال يوجد به -3 fixed step size ولكن ليس fixed-step solver يستخدم -4 لدينا زمن تقطيع واحد بعد عملية توليد زمن التقطيع البلوكات التى يكون -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 يمكن توصيل البلوك المرجعى بمداخل او مخارج من النوع bus object انه ان يكون المدخل معرف على -1على انه مرئى فى النظام workspace معرف فى ال bus object ال ان يكون -2
المرجعى والنظام االساسى Bus Creator block تم عمله بواسطة bus يجب ان يكون ال -3
Index I/O Limitations
السميولينك ال يستطيع ان يقوم بعملية توليد لل فى بعض االحيان فان
:كود
0 - or 1- based indexing
الى فان الدخل يكون موصل for فمثال فى البلوك
:كود
0- or 1-based indexing
حالة النظام المرجعى فان البرنامج ال يستطيع تخصيص نفس القيم للخرج فى
Matching I/O Rates
rate وبلوكات االخراج فى النظام المرجعى لها نفس ال يجب ان تكون بلوكات االدخال
Building Simulation Targets تقوم بحساب خرج النظام المرجعى فى حالة S-function هى Simulation Targets ال
تنفيذ النظام االصلى فى اى وقت باستخدام simulation targets يقوم بتوليد ويمكننا جعل السميولينك ان
updating the model's diagram من قائمة edit او من خالل تنفيذ امر slbuild .
ولذلك ينبغى عليك ان تقوم بتوليدها مره ويقوم السميولينك بتوليدها فى بداية عملية المحاكاة . عملية المحاكاة اخر اذا قمت بعمل تعديل لبعض الخصائص اثناء
الموجودة targets التغلب على هذا بجعل البرنامج يقوم دائما بعمل اعادة بناء لكل ومن الممكن.
الماتالب بعرض الخطوات فى سطر االوامر ويكون بناء هذه الملفات فى واثناء عملية البناء يقوم ويستخدم هذا المسار ايضا مع slprj ويقوم بعمل مسار فرعى باسم نفس مسار البرنامج
Simulink Accelerator و Real-Time Workshop
Function-Call Models
ان يقوم بالتحكم فى عمل النظام المرجعى مثل هناك بعض البلوكات من الممكنFunction-Call Generator
.function-call modelالمرجعى هو ويسمى البلوك الذى يقوم بهذه العملية فى حالة النظام
وسنقوم االن بعمل مثال على هذا النوع function من النوع trigger ال فى النظام المرجعى ثم قم بوضع trigger قم بوضع بلوك
call وفى هذا الحالة نالحظ ظهور سهم على بلوك Model الموجود فى function call controller واالن قم بوضع بلوك
ports & subsystem model ثم قم بتوصيله ببلوك
configure parameters واختار simulation واالن قم بالدخول الى قائمة واختار من قائمة fixed step اختار solver وفى خانه ال
Periodic sample time constraint Ensure sample time independent اختار
scalar يجب ان تكون ويجب مالحظة ان اشارة الدالة : النموذج على الشكل االتى وسيكون
Browsing Model Reference Dependencies
االنظمة المرجعية فى صورة هرمية من خالل الدخول على قائمة يمكننا عرض شكل لتسلسل
Tools ثم اختيار Model Reference Graph او عن طريق ادخال االمر االتى فى الماتالب
view_mdlrefs
وسيظهر لنا الشكل االتى
Converting Subsystems to Model References
الى نظام مرجعى من خالل الظغط كليك يمين واختيار يمكننا تحويل النظام الفرعى
Convert to Model Block ولكن فى حالة atomic subsystem فقط