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


#1

الدرس 11
التعامل مع الإشارات

دورة كاملة فى برنامج السميولينك هام لمن يريد تعلم المحاكاة
دورة برنامج السميولينك للتحميل فى صورة pdf
#2

الدرس 11
التعامل مع الإشارات

يتم التعبير عن الاشارات فى السميولينك بواسطة خطوط تصل بين البلوكات وبعضها البعض وهذه الخطوط لها علاقات رياضية تحدد بها ويتم عمل الاشارات باستخدام بلوكات source ويمكن ايضا استخدام Signal & Scope Manager لعمل الاشارات بدون استخدام البلوكات

أشكال خطوط الاشارات

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

http://www.almohandes.org/uploads/vb/uploaded4/254_01334760949.png

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

علامات الاشارات
Signal Labels

وهى الكلام الذى يظهر على خطوط الاشارات وتظهر اسم الاشارة وتحديد نوعها سواء افتراضية او غير افتراضية ويمكنك ايضا التعديل فى هذا الكلام كما تشاء

أنواع الاشارات

تكون فى الغالب جميع انواع الاشارات فى السميولينك من النوع double ولكن يمكنك عمل اشارات من انواع مختلفة كما تشاء

أبعاد الاشارات
Signal Dimensions

توجد فى السميوليك بلوكات يكون خرجها ذو بعد واحد او ذو بعدين
والاشاراة ذات البعد الواحد تتكون من متسلسة ذات بعد واحد تخرج عند تردد معين لمتسلسلة متجهة فى بعد واحد عند كل زمن محاكاة
A one-dimensional (1-D) signal consists of a stream of one-dimensional arrays output at a frequency of one array (vector) per simulation time step
وبالمثل الاشاراة ذات البعدين تتكون من متسلسلة فى بعدين تخرج عند تردد متسلسة مصفوفة فى بعدين عند كل زمن تقطيع
A two-dimensional (2-D) signal consists of a stream of two-dimensional arrays emitted at a frequency of one 2-D array (matrix) per block sample time.

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

Complex Signals

الاشارات ذات القيم المركبة
ويمكننا عمل اشارات ذات قيم مركبة عن طريق الاتى :
1- تحميل بيانات من الماتلاب
2- استخدم بلوك constant وجعله يخرج قيمة complex
3- عمل اشارات تحتوى على قيمة حقيقية وقيمة تخيلية معا ثم تحويلها الى قيمة مركبة complex باستخدام بلوك Real-Imag to Complex
ويجب مراعاة مراجعه انواع البلوك لمعرفة الانواع التى تدعم الاشارات المركبة قبل استخدامها


#3

Virtual Signals

الاشارات الافتراضية

وهى اشارات تستخدم للتعبير عن اشارات اخرى وغالبا تستخدم مع البلوكات الاتية Bus Creator,
Inport, and Outport blocks
وتكون هذه الاشارات فى صورة مرسومة وليس لها اى علاقات رياضية ويهملها السميولينك عند البدء فى المحاكاة ويقوم بتحديد القيم الاصلية لهذه الاشارات عن طريق استخدام signal propagation كما عرفنا سابقا ويمكننا ملاحظة هذا فى الشكل الاتى حيث يقوم السميولينك بتحديد الاشارات المناسبة لى S1 و S2

http://www.almohandes.org/uploads/vb/uploaded4/254_11334760949.png

Displaying Virtual Signal Sources and
Destinations

لعرض مصدر ونهاية الاشارة نقوم بتحديد الاشارة والضغط بالماوس يمين واختيار Highlight to Source

http://www.almohandes.org/uploads/vb/uploaded4/254_21334760949.png

وسيكون شكل الاشارة كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_01334761343.png

ولتحديد نهاية الاشارة او المكان التى تخزن بها
بعد كليك يمين اختار Highlight to Destination
ويكون شكل الموديل كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_11334761343.png

ولإزالة هذه التحديدات اختار بعد عمل كليك يمين
Remove Highlighting


#4

عرض الاشارات الغير افتراضيه المقابلة للاشارات الافتراضيه
Displaying the Nonvirtual Components of Virtual Signals

سنقوم الان بعمل مثال بسيط وهو يحتوى على بلوكين constant و يحتوى على mux و demux و display كما ياتى

http://www.almohandes.org/uploads/vb/uploaded4/254_21334761343.png

والان سنقوم بتحديد اسماء الاشارات الخارجة من الثوابت وهى اشارات غير افتراضيه عن طريق الدخول الى Signal Properties Dialog Box
اختار الاشارة التى تريد تسميتها ثم كليك يمين واختار Signal Properties كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_01334761411.png

وبالدخول الى Signal Properties اكتب الاسم الذى تريده كما بالشكل الاتى

http://www.almohandes.org/uploads/vb/uploaded4/254_11334761411.png

وبالمثل مع الاشارة الاخرى
والان ننتقل الى الاشارات الافتراضيه
وعند الدخول الى Signal Properties نلاحظ وجود خيار على اليمين يسمى
Show propagated signals
كما بالشكل الاتى :

http://www.almohandes.org/uploads/vb/uploaded4/254_21334761411.png


#5

وعند اختيار on فان هذا سيودى الى توليد اسماء الاشارات الغير الافتراضيه المقابلة لها كما فى الشكل الاتى :

http://www.almohandes.org/uploads/vb/uploaded4/254_01334761485.png

وعند تغيير اسم الاشارة الغير افتراضيه فان السميولينك يقوم بتغيير الاشارة الافتراضيه المقابلة لها مباشرة .

Control Signals
إشارات التحكم

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

http://www.almohandes.org/uploads/vb/uploaded4/254_11334761485.png

Signal Buses
ناقل الاشارات ( باص )

وهو عبارة عن اشارة مركبة من مجموعة من الاشارات ويرمز له فى الطبيعة بالبلاستيك الذى يغلف مجموعة من الاسلاك معا
والان حاول تطبيق المثال السابق مع استخدام بلوك
Bus Creator و Bus Selector كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_21334761485.png

ولا تنسى عند استخدام Bus Selector من تحديد الاشارات التى سوف يستخدمها بالدخول الى خصائص البلوك بالضغط عليه مرتين واختيار الاشارات ثم الضغط على select كما فى الشكل التالى :

http://www.almohandes.org/uploads/vb/uploaded4/254_01334761561.png


#6

ويوجد ايضا باص افتراضى وباص غير افتراضى

Virtual Versus Nonvirtual Buses

ومن اهم البلوكات التى تمثل النوع الافتراضى
Bus Creator و Inport
ولجعل الخرج منها غير افتراضى
اختار Output as structure
من نافذة الخصائص الخاصة بهم
كما يلى :

ويمكننا استعمال بلوك Signal Conversion

للتحويل من nonvirtual to virtual buses والعكس

Bus-Capable Blocks

وهى انواع البلوكات التى يمكنها ان تمرر باص افتراضى و غير افتراضى
وجميع البلوكات الافتراضيه تكون Bus-Capable و وايضا البلوكات الغير الافتراضية الاتية
Memory
Merge
Switch
Multiport Switch
Rate Transition
Unit Delay
Zero-Order Hold
تكون Bus-Capable

والان توجد نقطة مهمة عند تعاملنا مع الانظمة الفرعية حيث يعتبر البلوك Inport بلوك افتراضى ولذلك فهو يقبل bus as input ولكن فى حالة الانطمة الفرعية فان Inport block يكون غير افتراضى ولا يقبل bus as input فى حالة ان تكون مكونات الباص من نفس النوع اى متجانسة ولكن لو كانوا من نوعين مختلفين فان السميولينك سوف يعطينا رسالة خطا ولتفادى هذه المشكلة نستعمل Signal Conversion block


#7

والان سنقوم بعمل المثال البسيط الاتى :
اولا قم باعداد الموديل كما يلى :

ويكون النظام الفرعى الموجود فى الموديل السابق كما يلى :

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

والان سنقوم بوضع بلوك Signal Conversion block
كما يلى :


#8

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

Determining Output Signal Dimensions

فى حالة ان خرج البلوك كمية غير قياسية فان ابعاد الاشارة التى يخرجها تعتمد على خصائص البلوك وغالبا فان اشارة الخرج هذه تكون مثل اشارة الدخل
اما فى حالة البلوكات من النوع source التى ليس لها دخل فتكون ابعاد الاشارة مثل قيمة خصائص البلوك .

ومن القواعد التى يجب مراعاتها عن عمل الموديل

1- جميع الاشارات الغير قياسية Nonscalar الداخلة لاى بلوك يجب ان تكون لها نفس الابعاد ومن الممكن ان يكون الدخل كمية قياسية وغير قياسية معا بشرط ان تكون جميع الكميات الغير القياسية لها نفس الابعاد .

2- غالبا تكون خصائص اى بلوك لها ابعاد الاشارة الداخلة له الا فى بعض الحالات .

3- يقوم السميولينك بتحويل الاشارات الاتجاهيه vector signal الى مصفوفات ذات صف واحد او مصفوفات ذات عمود واحد والعكس ايضا فى الحالة الاتية :
اذا كانت هذه الاشارة موصلة بدخل ويشترط ان يكون الدخل على هيئة مصفوفة والعكس صحيح .


#9

Scalar Expansion of Inputs

والمقصود به هو تحويل القيمة القياسية الى قيمة غير قياسية على هيئة متسلسلة array لها نفس الابعاد .
وتستخدم هذه الخاصية عندما يكون الدخل الى البلوك كميه قياسية وغير قياسية معا حيث يجعل الكمية القياسية لها نفس ابعاد الكمية الغير قياسية
والان سنقوم بعمل مثال لتوضيح هذا
قم باعداد مثال كما فى الشكل الاتى :

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

Scalar Expansion of Parameters

اذا كان لبلوك معين اشارة غير قياسية داخلة وخصائص هذا البلوك كمية قياسية فان السميولينك يقوم بعملية ال expand لهذه الخصائص حتى تتوافق مع الاشارة الداخلة وتكون عبارة عن كمية غير قياسية لها نفس ابعاد الاشارة الداخلة وقيمتها تساوى قيمة ال parameter نفسه .
ويمكننا ملاحظة هذا فى المثال الاتى :

وبالدخول الى خصائص بلوك Gain


#10

The Signal & Scope Manager

وهو من احد ال GUI الشهيرة فى السميولينك ويستخدم فى عملية تنظيم مولدات الاشارات وايضا فى ادوات عرضها .
ولفتح The Signal & Scope Manager
قم بالدخول الى قائمة الادوات Tools
ويكون شكله كما يلى :

والقائمة الموجودة على اليسار تتيح لك عمل Signal generators و
Signal viewers

والان سنبدأ فى عمل ال generators وال viewers
من القائمة اليسرى ادخل على generators ثم simulink ثم constant
وبعد ذلك اضغط على Attach to model
وايضا بالنسبة لل viewer
قم بادراج scope من قائمة simulink

مثلا لدينا موديل به scope ونريد اضافة generator لتوليد اشارة
قم بالدخول الى The Signal & Scope Manager ومن اليمين كما سبق اضف constant
الان سنقوم بتحديد ال scope الذى سيتم به عرض الاشارة المتولدة عن طريق الاتى :
اضغط على الزر كما فى الشكل الاتى :

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


#11

وسيكون شكل الموديل اصبح كالاتى :

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

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

والان قم بتنفيذ عملية المحاكاة
ولا تستغرب عندما تتم عملية المحاكاة بنجاح ولا يظهر لك السميولينك خطأ نتيجة بلوكات غير متصله .


#12

Logging Signals

وهى عملية المقصود بيها حفظ قيم الاشارات الى ال workspace الخاصة بالماتلاب أثناء عملية المحاكاة حتى نستخدمها بعد ذلك فى عملية تحليل البيانات
وتتم هذه العملية عن طريق توصيل الاشارة المطلوبة ببلوك workspace او بلوك Scope او viewer او بلوك root-level Outport

وهناك بعض القيود على هذه العملية حيث لا يتم عمل signal logging على الاشارات الاتية
1- الاشارة الخارجة من البلوك Function-Call Generator
وهو البلوك الذى يقوم بتنفيذ نظام فرعى عبارة عن function عدد معين من المرات وعند معدل معين وقد تعرضنا له سابقا
2- الاشارات الموصلة الى دخل بلوك Merge
وهو البلوك الذى يقوم بدمج مجموعة من الاشارات معا
3- الاشارات الخارجة من البلوكات Trigger و Enable
وهى البلوكات التى تستخدم عن التعامل مع الانظمة الفرعية Subsystems وقد تعرضنا لها بالتفصيل سابقا .

Enabling Signal Logging

حتى نقوم بتفعيل هذه الخاصية لاشارة معينة يجب علينا الدخول الى نافذة خصائص الاشارة واختيار Log signal data

ويجب ايضا تفعيل هذه الخاصية عن طريق الدخول الى Configuration Parameters من قائمة Simulation
ثم قم بالدخول الى Data Import/Export

كما يمكننا تغيير اسم الملف الذى سوف تخزن فيه بيانات الاشارة عن طريق الدخول الى خصائص الاشارة Signal properties ثم أختيار Custom من قائمة Logging name وفى الجزء السفلى Data نقوم بتحديد عدد النقاط التى سيقوم السميولينك بتخزينها فى الملف


#13

Initializing Signals and Discrete States

من خصائص برنامج السميولينك انه يتيح لنا ان نقوم بتحديد القيم الابتدائية للاشارات والحالات المتقطعة
والقيم الابتدائية تعنى قيمة الاشارة عند الزمن صفر
ويكمننا عمل هذا عن طريق ال signal objects .
ويكمننا عمل هذا ايضا بالدخول الى خصائص البلوك نفسه كما فى البلوكات الاتية
Outport, Data Store Memory, or Memory
فمثلا قم بادراج بلوك Unit Delay من قائمة Discrete فى نموذج فارغ وقم بالضغط عليه لتظهر نافذه خصائص البلوك وستجد بها initial condition حيث يمكنك تحديد القيمة الابتدائية للاشارة

http://www.almohandes.org/uploads/vb/uploaded4/254_11334761561.png

اما لتحديد القيم الابتدائية عن طريق ال Signal Object فهذا سوف نتعرض له لاحقا عن التعامل مع البيانات .


#14

التعامل مع نقط الاختبار
Working with Test Points

نقطة أختبار او Test point تعنى فى السميولينك ان هذه الاشارة من الموكد ان يتم ملاحظتها عند استعمال سكوب Scope ويتيح لنا السميولينك ان نجعل اى اشارة نقطة اختبار .
وعند تعريف الاشارة على انها نقطة فان هذا يمعنها من عمليات ال model optimizations مثل
signal storage reuse
وهى طريقة لتقليل حجم الذاكرة المستخدمة فى المحاكاة عن طريق تحديد امكان عامة فى الذاكرة لاستخدمها مع جميع البلوكات والاشارات بدلا من جعل مكان مخصص لكل بلوك او اشارة وسوف نتعرض لها لاحقا ان شاء الله .
block reduction
وهى عملية يقوم بها السميولينك لتجاهل الاشارات الداخلة او الخارجة الى كل بلوك اثناء عملية المحاكاة .

Designating a Signal as a Test Point
تصميم اشارة كنقطة اختبار

قم بالدخول الى خصائص الاشارة المطلوبة Signal Properties وقم بوضع علامة على Test point

http://www.almohandes.org/uploads/vb/uploaded4/254_21334761561.png

وايضا عند وضع علامة على signal logging فان السميولينك يقوم باعتبار الاشارة نقطة اختباراتوماتيكيا
والان ستلاحظ العلامة الموجودة على الاشارة بعد تحويلها الى نقطة اختبار كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_01334761962.png

ويمكننا ايضا استخدام Signal Objects وسوف نتعرض له لاحقا .


#15

Working with Signal Groups
التعامل مع مجموعات الاشارات

يتيح لنا بلوك Signal Builder الموجود فى قائمة Sources عمل مجموعات من الاشارات يمكنها ان تتبادل بين بعضها ومن فائدة هذا انه يسهل عمليه اختبار الموديل وخاصا عند استخدام بلوك Assertion والذى يستخدم فى اختبار للاشارات اذا كانت تساوى صفر ام لا .

والان قم بعمل موديل فارغ وضع به بلوك Signal Builder
وعند الضغط عليه فانه يظهر لنا مجموعة واحده وتحتوى على اشارة واحده وهذه الاشارة عبارة عن موجة مربعة square wave كما بالشكل الاتى

http://www.almohandes.org/uploads/vb/uploaded4/254_11334761962.png

والان قم باضافة اشارة اخرى الى المجموعة الموجودة عن طريق الدخول الى قائمة Signal واختيار new او عن طريق استخدام الايقونات الموجودة فى ال Toolbar كما يلى

http://www.almohandes.org/uploads/vb/uploaded4/254_21334761962.png

والان سنقوم بعمل مجموعة اخرى
قم بالدخول الى قائمة Group واختار Copy
وسيقوم البرنامج بعمل مجموعة اخرى تحتوى على نفس اشارات المجموعة السابقة
ادخل على المجموعة الثانيه وقم بالتعديل فى الاشارات الموجودة بها كما تريد ويجب ملاحظة ان يكون عدد الاشارات فى كل من المجموعتان متساوى

http://www.almohandes.org/uploads/vb/uploaded4/254_01334762037.png


#16

والان قم بتحديد المجموعة التى تريد تخرجها من البلوك علما بان البلوك لا يخرج الا مجموعة واحده
ثم قم بتكملة الموديل كما يلى

http://www.almohandes.org/uploads/vb/uploaded4/254_11334762037.png

قم الان بتنفيذ عملية المحاكاة وستكون نتيجة التنفيذ فى حالة المجموعة الاولى كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_21334762037.png

وفى حالة المجموعة الثانية تكون كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_01334762124.png


#17

Bus Editor

يتيح لنا ال Bus Editor تغيير خصائص ال bus المستخدم فى نقل مجموعة من الاشارات

اولا لفتح الBus Editor نستخدم احدى الطرق الاتية

1- أختار Bus Editor من قائمة tools

2- من ال model explorer اضغط على ايقونه Bus Editor الموجودة فى ال Bus object
فمثلا قم بعمل موديل فارغ وادخل على قائمة view واختار Model explorer
وبعد ذلك فى ال model explorer ادخل على قائمة add وقم باضافة simulink bus كما يلى :

http://www.almohandes.org/uploads/vb/uploaded4/254_11334762124.png

والان سيظهر لنا ال Bus object وعند الضغط عليه تظهر لنا ايقونة
Launch Bus Editor
اضغط عليها لفتح Bus Editor

http://www.almohandes.org/uploads/vb/uploaded4/254_21334762124.png

3- واخر طريقة لفتح ال Bus Editor عن طريق كتابة الامر الاتى

Buseditor

فى سطر اوامر الماتلاب

والان سيظهر لنا ال Bus editor كما بالشكل الاتى

http://www.almohandes.org/uploads/vb/uploaded4/254_01334762199.png

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

والايقونة الثانية لاضافة ال Bus الى النموذج وسيظهر على اليمين فى خانة Bus elements مكونات ال Bus الذى تم اضافته .

سوف نتعرض ان شاء الله لمعرفة مميزات وخصائص ال Bus editor عن قرب عند الدخول الى فصل working with data object

النسبة المئوية لما تم انهاءه فى الدورة حتى الان الى اجمالى الدورة يساوى 50%


#18

الدرس فى صورة pdf


#19

تم تعديل الصور