الدرس الثاني عشر فى دورة برنامج السميولينك - التعامل مع البيانات

Working with Data Objects

يتيح لنا السميولينك عمل ما يسمى data objects وهى التى تستخدم فى تحديد قيم المتغيرات فى البرنامج وايضا أنواع تلك المغيرات ومداها وجميع خصائص البلوكات المستخدمة فى عملية المحاكاة

[SIZE=5]وكلمة data هنا تعنى الاشارات وقيم المتغيرات signals and parameters .

ويجب معرفة عن هناك ايضا data classes والتى تستخدم فى تعريف ال data objects وتحديد خصائصها
[COLOR=blue]

ويمكن ايضا استخدام data classes فى تعريف الدوال المختلفة والتى تسمى هنا methods .

ويستخدم السميولينك memory structures تسمى packages وتستخدم فى تخزين البيانات والاكواد اللازمة لتنفيذ ال data classes .

وتكون فى السميولينك اسماء الكلاس مثل الشكل الاتى :
PACKAGE.CLASS
حيث تحتوى على علامة dot
وايضا مثل الاتى :
Simulink.Parameter
فنجد ان الكلاس هو Parameter وال package الذى ينتمى اليها هى Simulink
[/color][/size]

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

Dynamic Methods

فمثلا نفرض ان لدينا data classe اسمه A ويعرف method اسمها setName وتستخدم لتعريف اى اسم لاى instance فى A
[COLOR=blue]

ونفرض ان لدينا obj موجود فى ال MATLAB workspace والان نريد اعادة تسميته
[/color]

obj.setName('foo');
 
 

setName(obj, 'foo');


والطريقة الاخرى هى

Static Methods
[COLOR=blue]

وشكلها كما يلى :

[/color]

ma = Simulink.ModelAdvisor.getModelAdvisor('vdp')

حيث
يستخدم الكلاس Simulink.ModelAdvisor والذى يحتوى على الطريقة التى تسمى getModelAdvisor

Constructors
[COLOR=blue]
يوجد لكل data class طريقة خاصة لانشاء ال instances الخاصة بهذه الكلاس واسم هذه الطريقة مثل اسم الكلاس نفسه

[/color]

Using the Model Explorer to Create Data Objects[SIZE=5][COLOR=blue]

يمكننا استخدام ال Model Explorer فى عمل data objects ويكون عن طريق الخطوات الاتية [/color][/size]

اولا قم بالدخول الى Model Explorer

من خلال قائمة view

ثم اختار ال Base Workspace


ثم اختار من قائمة add نوع ال object المراد عمله مثلا
Simulink Parameter او

Simulink Signal

ويمكننا تعديل خصائص هذا ال object من خلال طريقتين
الاولى من خلال ال Model Explorer وموضحه فى الشكل السابق

والثانيه MATLAB commands


[COLOR=blue]

فمثلا لنفرض ان اسم ال object هو ahmed

فنستخدم الامر فى الشكل التالى

[/color]

ahmed.PROPERTY = VALUE;
 

او

VALUE = ahmed.PROPERTY;

فمثلا نريد وضع القيمة 20 فى القيمة

نستخدم الامر الاتى

>> ahmed.value=20

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

ahmed =
 
 
 
Simulink.Parameter (handle) 

      RTWInfo: [1x1 Simulink.ParamRTWInfo]

  Description: ''
     DataType: 'auto'
          Min: -Inf
          Max: Inf
     DocUnits: ''
        Value: 20
   Complexity: 'real'
   Dimensions: [1 1]



وايضا بالمثل لكل خصائص هذا ال object

واذا كنا نريد معرفة خاصية معينة فاننا نقوم بتنفيذ الامر على الصورة الاتية
ahmed.propertyName
مثلا

>> ahmed.dimensions

يرجع لنا الماتلاب ابعاد هذا ال object كما يلى


ans =
   1     1

ويمكننا اضافة خاصية جديدة لل object من خلال
Model Explorer
كما يلى :

او من خلال اوامر الماتلاب كما يلى
اولا لابد من تعريف الخاصية كما يلى وهذه العملية تسمى handel

>> simulink.bulidtime=10.5

اذن الان تم عمل object اسمه simulink يحتوى على buildtime قيمته تساوى 10.5


simulink = 
   bulidtime: 10.5000


Handle Versus Value Classes[SIZE=5][COLOR=blue]
يوجد نوعان من انواع data object فى السميولينك وهما
value classes
وتكون عبارة عن instance وتحتوى على MATLAB variable او object من النوع value مثل

[/color][/size]

>> almohandes
 

 

almohandes = 

 
Simulink.AliasType
   Description: 'welcome'
    HeaderFile: ''
      BaseType: 'double'

الامر السابق يقوم بعمل object اسمه almohandes

handle classes
وهذا يقوم بعمل object من النوع handle ويمكن تخصيص هذا ال handle لاكثر من variable كما فعلنا فى المثال السابق

وللمعلومية
جميع الdata object classes تكون من النوع value ماعدا Simulink.Signal و Simulink.Parameter
ويمكننا تحديد النوع سواء كان value او handle عن طريق استعمال سطر اوامر الماتلاب كما فى المثال الاتى :


>> gain = Simulink.Parameter

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


gain =
Simulink.Parameter (handle)
       RTWInfo: [1x1 Simulink.ParamRTWInfo]
   Description: ''
      DocUnits: ''
           Min: -Inf
           Max: Inf
         Value: []
      DataType: 'auto'
    Complexity: 'real'
    Dimensions: [0 0]

Saving and Loading Data Objects
يمكننا استخدام امر save فى حفظ ال Data Objects فى MAT-file ويمكننا ايضا تحميلها فى الMATLAB workspace باستخدام الامر load

Data Object Wizard[SIZE=5]
وهو عبارة عن مجموعة من الخطوات تتيح لنا عمل data objects وجعلها مع موديل معين
اولا قم بفتح Data

Object Wizard من قائمة tools

سيفتح لنا الشكل الاتى

فى خانة Model name ضع اسم الموديل مثلا ضع الاتى vdp وهو موديل موجود فى البرنامج لحل معادلة van der Pol [COLOR=blue]

ويمكنك ايضا فتح الموديل اولا ثم فتح Data Object Wizard وفى هذه الحالة لن تحتاج الى كتابة اى شى فى خانة اسم الموديل لان السميولينك سياخذ اسم الموديل المفتوح
وباستخدام find يمكننا البحث عن ال objects الموجودة فى تحديد بعض الخيارات للبحث

وبعد انتهاء عملية البحث ستعرض لنا النتائج فى الجدول العلوى كما فى الصورة الاتية

الان سنقوم باختيار البيانات المطلوب لها عمل Object ويكون هذا بوضع علامة صح امام كل نوع فى الجدول العلوى
ثم نضغط على create
ولمشاهدة هذه ال objects نفتح Model Explorer

[/color][/size][/center]

Data Class Designer
وهذا يتيح لنا عمل Class فرعيه من ال Classes الموجودة فى السميولينك
ويقوم ال
Data Class Designer بتوليد P-code وهو يحتوى على خصائص الكلاس واسم الكلاس الرئيسى المشتق منه الكلاس الفرعى
Creating a Data Object Class
[SIZE=5][COLOR=#0000ff]من قائمة tool قم بفتح Data Class Designer وسيظهر لنا شكله كما يلى

ومن قائمة package name سنلاحظ وجود package موجود فى البرنامج ولكن من الافضل ان نقوم بعمل package جديدة ونقوم بعمل الكلاس فيها

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

وبعد الضغط على ok سيتم عمل الكلاس الفرعيه والان سنقوم بتحديد الكلاس الاصلى الذى سيتم اشتقاق الخصائص منه فعلى سبيل المثال اختار كما لى [/color][/size]

والان سنقوم بحفظ ال package والتى اسمها almohandes والتى تحتوى على كلاس اسمها class1 وخصائص هذه الكلاس مشتقه من simulink.signal
قم بالضغط على confirm changes فى اسفل النافذة
والذى سينقلك الى النافذة الاتيه

اضغط على write all والتى ستقوم بحفظ ال package فى work directory

ويمكننا الذهاب الى work directory وسنلاحظ وجود ال package الخاصة بنا

وسنلاحظ ايضا وجود schema.p وهو الذى يحتوى على الخصائص كما ذكرنا سابقا

ويمكننا الان تعديل فى خصائص الكلاس عن طريق الضغط على new من على اليمين

وسنلاحظ ايضا ان الخصائص المتوارثه من الكلاس الرئيسى ممنوع التعديل فيها
والان يمكننا اختيار نوع الخاصيه من القائمة

او يمكننا الذهاب الى الخانة التالية التى تسمى Enumerated Property Types وهى تحتوى على انواع الخصائص التى قمنا بعملها وتظهر ايضا فى القائمة الموجودة فى الصورة السابقة
كما فى الصورة الاتية

قم بالضغط على new لعمل نوع جديد ثم قم بتحديد اسمها ونقوم ايضا بعد الضغط على ok بتحديد ما يسمى Enumerated strings وهى تحتوى على الاحتمالات الممكنة لهذا النوع من الخاصية فمثلا اذا كان النوع هو اللون فقد نجد ان Enumerated strings تحتوى على الالوان الممكنة مثل الاحمر والاخضر وغيرها كما موضح

ثم قم بالضغط على apply
وconfirm فى الاسفل
ثم write all كما تم عملها سابقا
والان سنرجع الى خانة الكلاس سنلاحظ وجود الخاصية التى قمنا بعملها

انتهى

ملف الدرس 12 بصيغة pdf موجود فى المرفقات

part12.pdf (492.5% u)

مشكور على ما بذلت من جهد


Thank you very much
you do your best

مشكور جدا اخي العزيز
وجعله الله في ميزان حسناتك

جزاكم الله خيرا اخوانى الاعزاء

أخي الكريم جزاك الله كل خير على هذا المجهود الرائع

thank you my brother
best wishes

thank you my brother
best wishes