الدرس الثامن
Using Callback Functions
يمكنك تعريف أوامر ماتلاب يتم تنفيذها عند تفعيل نموذج معين وتسمى هذه الاوامر بى callback functions
Tracing Callbacks
وهذه الخاصية تمكننا من معرفة الاوامر المستدعاه (Tracing Callbacks ) التى يستحضرها السميولينك وما هى كيفية تنفيذ هذه الاوامر وتوقيتها ولتفعيل هذه الخاصية ادخل على Simulink Preferences ثم اختار Callback tracing كما يلى :
ااو من خلال تنفيذ الامر الاتى فى سطر أوامر الماتلاب
رمز:
>> set_param(0,'callbacktracing','on')
ويتم عرض الاوامر التى يستحضرها السميولينك عند تنفيذ عمل معين فى سطر أوامر الماتلاب
فمثلا قم باغلاق السميولينك واعادة تشغيلة مرة اخرى وستلاحظ ما يلى :
http://www.almohandes.org/uploads/vb/uploaded4/254_11334756268.png
والان سنتعلم كيفية عمل هذه الاوامر
وتكون بطريقتين وهما باستخدام السميولينك او باستخدام البرمجة
والان سنبدا فى التعرف على Callbacks pane وهى التى تظهر عند أختيار Model Properties عند الضغط كليك يمين
http://www.almohandes.org/uploads/vb/uploaded4/254_01334757005.png
وستظهر لنا النافذه الاتية
http://www.almohandes.org/uploads/vb/uploaded4/254_11334757005.png
إعجاب واحد (1)
وفى الجدول التالى نجد توقيت حدوث كل أمر من اوامر ال Callbacks pane
http://www.almohandes.org/uploads/vb/uploaded4/254_21334757005.png
ويمكن ايضا عمل Callbacks خاصة ببلوك معين وايضا عمل Callbacks خاصة بى port معين فى هذا البلوك
Working with Model Workspaces
يكون لكل نموذج Workspaces خاصة به لتخزين متغيراته بها والتى تشبه ال Workspaces الموجودة فى الماتلاب وتكون هذه المتغيرات مرئية باستخدام scope .
ويمكننا من خلال ال Workspaces عمل متغيرات لنموذج معين وعند فتح تحميل هذا النموذج فان قيم هذه المتغيرات يتم تحميلها من مصدر للبيانات
ومصادر البيانات هى ::
MDL-file وهو الملف الخاص بالموديل
MAT-file
M-code
و انواع ال objects المستخدمة فى تخزين البيانات الموجودة فى ال Workspaces هى
Simulink.Parameter objects
Simulink.Signal objects
وكل هذه المتغيرات الموجودة فى Workspaces لا يمكن تعديلها اثناء عملية المحاكاة اى انها تعتبر not tunable
ماعدا المتغيرات التى نستخدمها لل model arguments لعمل نماذج مرجعية .
Working with Data Stores
مخازن البيانات هى اشارات تكون متاحة فى اى نقطة فى النموذج سواء فى النموذج الاصلى النموذج الفرعى او النموذج المرجعى
ومن مميزاتها ان تسمح بتبادل البيانات بين النموذج الفرعى او المرجعى وبين النموذج الاصلى ( فى مستوى أعلى )
ويمكننا استخدام هذه المميزات عن طريق اضافة بلوك Data Store Memory او أستخدام Simulink.Signal class
والان سنبدا فى أضافة بلوك data store ونقوم بوضعه فى اى مكان فى النموذج وحتى تكون هذه البيانات ظاهرة فى جميع أجزاء الموديل يجب وضع هذا البلوك فى اعلى مستوى من النموذج وهو مستوى ال root
والان قم بالدخول الى signal routing
من على اليمين اسحب بلوك data store الى الموديل كما بالشكل الاتى
http://www.almohandes.org/uploads/vb/uploaded4/254_01334757106.png
ثم قم بالضغط عليه لتحديد اسمه كما بالشكل الاتى :
http://www.almohandes.org/uploads/vb/uploaded4/254_11334757106.png
والان فى النظام الفرعى الموجود لدينا نقوم بوضع بلوك Data Store Write او فى اى نظام موجود لدينا فى النموذج نريد تخزين بياناته
كما بالشكل الاتى :
http://www.almohandes.org/uploads/vb/uploaded4/254_21334757106.png
ثم نقوم بالدخول الى خصائصه بالضغط عليه مرتين وكتابة اسم data store name مثل التى تم تحديدها فى بلوك data memory store الموجود فى المستوى الاعلى
http://www.almohandes.org/uploads/vb/uploaded4/254_01334757197.png
والان قم بالضغط على بلوك data memory store الموجود فى المستوى الاعلى وسنلاحظ انه تم التعرف على بلوك Data Store Write الذى قمنا بوضعه فى المستوى الفرعى وبالضغط عليه سوف يوجهنا اليه
http://www.almohandes.org/uploads/vb/uploaded4/254_11334757197.png
والان قم بتوصيل بلوك Data Store Write بمصدر البيانات المطلوب
كما بالشكل الاتى :
http://www.almohandes.org/uploads/vb/uploaded4/254_21334757197.png
وللحصول على البيانات التى يتم تخزينها عند كل فترة زمنية نقوم باضافة بلوك Data Store Read فى اى مستوى من النموذج نريد فيه استخدام هذه القيمة ولا يشترط ان يكون فى نفس المستوى مع Data Store Write
فمثلا سنقوم بوضع البلوك فى المستوى الاعلى root ونوصله بى scope لعرض البيانات مع مراعاة الدخول الى خصائصه وتغيير اسم data store name الى الاسم الموجود فى data store memory كما بالشكل الاتى :
http://www.almohandes.org/uploads/vb/uploaded4/254_01334757256.png
والان أصبحنا جاهزين لان نقوم بعملية المحاكاة
قم بالذهاب الى المستوى الاعلى ثم أضغط على بداية المحاكاة وسيكون شكل ال scope الموجود بعد بلوك Data Store Read كما بالشكل التالى :
http://www.almohandes.org/uploads/vb/uploaded4/254_11334757256.png
ولاستخدام Simulink.Signal class
قم بعمل Simulink.Signal فى ال workspace. وتكون عن طريق الدخول الى Model Explorer كما بالشكل الاتى :
http://www.almohandes.org/uploads/vb/uploaded4/254_21334757256.png
ومثلا نقوم بعمل object له الخصائص الاتية : data store name التى تم وضعها فى المستوى الاعلى من النموذج
ahmed = Simulink.Signal;
ahmed.Description = 'Use to signal that subsystem output is
invalid';
ahmed.DataType = 'boolean';
ahmed.Complexity = 'real';
ahmed.Dimensions = 1;
ahmed.SamplingMode='Sample based';
ahmed.SampleTime = 0.1;
ويمكننا تخصيصها ايضا بكتابة الاوامر السابقة فى سطر الماتلاب
ااما بالنسبة للجزء السفلى من الخصائص والخاص بى StorageClass فيجب ان يكون auto فى حالة تخزين البيانات فى مستوى واحد local
Consulting the Model Advisor
من أهم خصائص برنامج السميولينك هى وجود ال Model Advisor وهو يقوم بعمل اختبار للنموذج او النظام الفرعى والتاكد من خصائصه و اخطاءئه التى قد تسبب عدم دقة فى الحسابات وظهور نتائج غير متوقعة خلال عملية المحاكاة وبعد الانتهاء من هذا الاختبار يقدم لنا Model Advisor تقرير يحتوى على جميع ما يخص النموذج والاقتراحات المطلوبة لتحسين الاداء .
ولبدء عمل Model Advisor قم بالدخول الى قائمة tools ثم اختار Model Advisor او من خلال الدخول الى contents فى ال The Model Explorer ثم اختار Advice for مع تحديد اسم النموذج كما بالشكل الاتى
http://www.almohandes.org/uploads/vb/uploaded4/254_01334757667.png
وايضا من خلال سطر أوامر الماتلاب يمكننا كتابة الامر الاتى
رمز:
>>modeladvisor(model_name)
وايضا من خلال الضغط كليك يمين على النموذج الفرعى واختيارModel Advisor
كما فى الصورة الاتية
http://www.almohandes.org/uploads/vb/uploaded4/254_11334757667.png
ويجب ملاحظة ان ال Model Advisor يقوم بتخزين التقارير فى الملف slprj الذى يكون موجود مع اى ملف موديل
وعند بداية ال Model Advisor يكون على الشكل الاتى
http://www.almohandes.org/uploads/vb/uploaded4/254_21334757667.png
ويمكننا ايضا تشغيل ال Model Advisor من خلال برنامج M-file