من فضلك ادعم الموقع على جوجل بالضغط على علامة g+1

الثلاثاء، 21 نوفمبر، 2017

جهاز PLC نوع Fatek للبيع

الكاتب elec egypt   بتاريخ   4:47 م   PLC

متوفر للبيع فى القاهرة
جهاز PLC ماركة Fatek


موديل   Fatek FBS-60MAR2-AC


صور الجهاز :











الجهاز به 35 دخل ديجيتال و 23 خرج ديجيتال و يقبل توصيل موديولات analog
الجهاز استعمال سنة فقط و حالته ممتازة
العيب الوحيد تعليق الخرج رقم Y22 و يمكن تجنبه و استخدام الباقى
الجهاز لم يتم به اى اصلاح كما هو موضح بالصور المرفقة

سعر البيع : 3000 جنيه مصرى
لاحظ ان سعر الجهاز جديد حوالى 6500 جنيه مصرى

للتواصل :


01225456411


مكان البيع : اى محطة مترو

الاثنين، 30 أكتوبر، 2017

شرح floating point functions فى Siemens PLC

الكاتب elec egypt   بتاريخ   11:31 ص   statement list

نكمل كورس Siemens PLC S7 300
الدرس 13 و هو تكملة الدرس السابق شرح العمليات الحسابية integer


شرح العمليات الحسابية من النوع floating point او real
فى هذه العمليات الحسابية يكون الدخل و الخرج من النوع Real
اى انها تحتوى على قيم عشرية


شرح كل function

الجمع و الطرح و الضرب و القسمة جميعها نفس الطريقة

شرح عملية الطرح Subtract real


هنا سيتم طرح MD 20 - 50.78
و حفظ الناتج على DB10.DBD30

المثال السابق بلغة statement list


لاحظ ان الحرف R يدل على ان العملية الحسابية من النوع Real


Absolute Value Function

تستخدم فى ايجاد القيمة الموجبة دائما من اى رقم real


بمعنى ان لو الدخل DB7.DBD0 يحتوى على -70 , يكون الخرج هو القيمة الموجبة فقط اى 70


Real absolute value فى لغة STL



Square root function

و تقوم بحساب الجزر التربيعى


كيفية كتابة الامر فى لغة Statement List



Square Function floating point

تقوم بتربيع الرقم و حفظ الناتج على out


العملية الحسابية السابقة بلغة Statement List


شرح العملية الحسابية LN و EXP

كما هو معروف فى الرياضيات
LN تقوم بحساب natural Logarithm
EXP تقوم بحساب Exponential Value


الكود السابق بلغة STL


كما نجد عمليات Sine و Cosine و Tangent و Arc sine و Arc cosine و Arc tangent
و تكون  جميع الزوايا المستخدمة فى هذه العمليات بقيم radian

مثال على Cosine function


الكود بلغة statement list


ملحوظة على statement list : لاستخدام اى من الدوال التالية فى لغة STL يتم كتابة حروفها داخل الكود كما سبق فى الامثلة السابقة



انتهى الشرح شكرا للمتابعة
اى سؤال اتفضل اسأل فى تعليقات facebook

الأحد، 29 أكتوبر، 2017

شرح العمليات الحسابية فى Siemens PLC

الكاتب elec egypt   بتاريخ   9:23 م   statement list

نكمل كورس شرح Siemens PLC S7 300

و موعدنا مع الدرس 12
شرح العمليات الحسابية Mathematical Operations
تنقسم العمليات الحسابية داخل Simatic Manager الى نوعين اساسيين
Integer Functions : اى تتعامل مع الارقام الصحيحة فقط و لا يجوز استخدام ارقام عشرية معها
Floating Point Functions : و هى التى تتعامل مع الارقام العشرية 

شرح Integer Functions

و جميعها تقبل الارقام الموجبة او السالبة
تنقسم الى نوعين حسب حجم البيانات المدخلة و المخرجة
عمليات حسابية بحجم integer : و يتم استخدامها عند التاكد من ان البيانات المدخلة و الخارجة من العملية الحسابية لا تتعدى الذاكرة word اى لا تتعدى 32767 او 32768-
عمليات حسابية بحجم double integer : و تستخدم عندما نحتاج عمليات حسابية لارقام اكثر من 32767 او 32768- حتى حجم ذاكرة double word

العمليات الحسابية integer و double integer


نلاحظ وجود عمليات جمع و طرح و ضرب و قسمة لكلا النوعين integer و double integer


مثال على عملية جمع من النوع integer

EN : عند اعطاء اشارة على EN يتم تشغيل عملية الجمع
ENO : يتم تفعيل ENO عندما تتم العملية الحسابية بدون مشكلة
IN 1 و هى IN 2 الارقام المراد جمعها 


المثال السابق بلغة statement list

تم استدعاء MW 20 على Accu 1
ثم استدعاء MW 22 على Accu 1 و ترحيل MW 20 على Accu 2
ثم عمل عملية الجمع عن طريق الكود +I
هنا + تعنى ان العملية جمع ( طرح تعنى - و قسمة تعنى / و ضرب يعنى * )
علامة I تعنى integer اى ان العملية الحسابية من النوع integer
نلاحظ هنا ان عملية الجمع تتم بدون وجود الشرط EN اى لا تؤثر حالة I 0.0 على العملية
و لاضافة شرط يجب فهم امر Jump اولا و سوف يتم شرحه فى درس اخر و اعادة كتابة امر العملية الحسابية بعد اضافة الشرط EN


مثال على عملية قسمة من النوع double integer

هنا تم استخدام قيمة متغير من Data Block 4 بحجم double word فى IN 1
تم استخدام عدد صحيح يساوى 20 داخل IN 2 و يجب كتابته على الصيغة L#20 ( لايضاح ان الرقم بذاكرة double word )
و تم قسمة الرقم المخزن على DB4.DBD20 على 20 و حفظ الناتج على MD 40
فى حالة القسمة يجب التأكد ان الخرج سيكون رقم صحيح ايضا مثله مثل الدخل
لانه اذا كان الخرج عدد غير صحيح سيعطى CPU رسالة خطا error
لذلك انا كان هناك اى شك ان الخرج سيصبح رقم غير صحيح او ان الدخل سيتم تخزين رقم غير صحيح عليه ,, يجب استخدام عمليات حسابية من النوع floating point functions كما سنرى


المثال السابق بلغة statement list

لاحظ انه تم تحميل DB4.DBD20 على ACCU 2
و تحميل 20 على ACCU 1
ثم قسمة ACCU 2 على ACCU 1
و ارسال الناتج الى MD 40
الرمز / يعنى ان العملية عملية قسمة
الرمز D تعنى ان العملية الحسابية من النوع double integer


العملية الحسابية return fraction double integer

و هذه العملية الحسابية توجد فقط فى double integer

هنا يتم قسمة MD 4 على 6 و يتم حفظ المتبقى من القسمة على DB6.DBD8
مثلا : اذا تم قسمة 10 على 3 تكون الناتج 1 ( و هو المتبقى من 10 بعد قسمة 9 على 3 )


سيتم شرح العمليات الحسابية من النوع Floating Point فى الدرس القادم
شكرا للمتابعة


السبت، 21 أكتوبر، 2017

شرح العدادات counters فى Siemens PLC

الكاتب elec egypt   بتاريخ   4:24 م   statement list

نكمل كورس شرح Siemens PLC S7 300
و موعدنا مع الدرس 11
شرح العدادات Counters

كما الحال مع التايمرات , يوجد نوعين اساسيين من Counters داخل Simatic Manager

S5 Counters

و هى المستخدمة فى معظم البرامج
مميزاتها :
سهلة الاستخدام
عيوبها :
- لا يمكن العد اكثر من 999
- كل CPU له عدد معين من Counters يمكن استخدامه مثل 250 عداد او 300 عداد حسب نوع و ثمن CPU

IEC Counters 

نوع متقدم من العدادات 

مميزاتها :
- يمكن العد لقيم كبيرة جدا تتجاوز 2 مليون
- تتوفر بكثرة جدا فى البرنامج تتجاوز الاف Counters ( ايضا حسب حجم ذاكرة CPU )
عيوبها :
صعبة الاستخدام بالنسبة للمبتدئين


شرح S5 Counters

توجد ثلاث انواع من العدادات داخل Simatic Manager
counter up : و اختصاره CU
counter down : و اختصاره CD
counter up down : و اختصاره CUD


تاخد العدادات ارقام من 0 الى اقصى رقم يمكن ان يتحمله CPU فنجد C0 و C1 و C2 الخ
تقوم Counters بالعد على ذاكرة نوعها BCD بحجم word
لذلك نجد ان اقصى قيمة للعداد هى 999 ( من اهم مساوئ العدادات ) راجع درس شرح تمثيل الاعداد داخل Siemens PLC

اذا وصل العداد الى القيمة 999 فأنه يبقى على هذه القيمة و لا يتغير حتى بعد اعطاء pulses على نقطة تشغيله


شرح Counter Up 

يستخدم فى العد التصاعدى فقط 

شرح كيفية عمل العداد التصاعدى 

عند كل مره يتم تشغيل الاشارة على CU يقوم العداد بزيادة قيمته بمقدار 1
اذا تم اعطاء اشارة على S : يقوم العداد بالقفظ مباشرة الى القيمة الموجودة على PV
اى فى المثال السابق اذا تم تشغيل I0.1 تتحول قيمة العداد الى 15 مباشرة
اذا تم اعطاء اشارة على ريسيت R : يتم تصفير العداد
الخرج Q : يعمل الخرج فى حالة ان قيمة العداد اكبر من صفر ( و ليس شرطا ان يصل الى قيمة PV )
CV : تستخدم فى تخزين قيمة العداد بالصيغة integer
CV_BCD : تستخدم فى تخزين قيمة العداد بصيغة BCD 


شرح Counter Down

يستخدم فى العد التنازلى فقط

شرح كيفية عمل العداد التنازلى

يجب استخدام قيمة على ( preset value ( PV حيث قبل بدء العد التنازلى , يجب ضبط قيمة العداد على preset value
فى المثال السابق عندما يكون I 0.0 تساوى 1 : تتحول قيمة العداد الى القيمة المضبوطه على PV مباشرة
يقوم العداد بالعد تنازليا بقيمة 1 عند تشغيل CD اى عندما تكون M 0.1 =1
عندما تكون I 2.1 = 1 اى عند تشغيل R : يتم تصفير العداد
يعمل الخرج Q عندما تكون قيمة العداد لا تساوى صفر
CV : تستخدم فى تخزين قيمة العداد عند اى لحظة بصيغة integer
CV_BCD : تستخدم فى تخزين قيمة العداد عند اى لحظة بصيغة BCD


شرح Counter Up and Down

يستخدم فى العد التصاعدى او التنازلى


شرح كيفية عمل العداد التصاعدى و التنازلى

عند اعطاء اشارة على CU : يقوم العداد بزيادة قيمته بقيمة 1
عند اعطاء اشارة على CD : يقوم العداد بأنقاص قيمته بقيمة 1
عند اعطاء اشارة على S : يقوم العداد بتحميل القيمة الموجوده على PV مباشرة
عند تشغيل R : يتم تصفير العداد
الخرج Q : يعمل اذا كانت قيمة العداد اكبر من 1
CV : تستخدم فى تخزين قيمة العداد عند اى لحظة بصيغة integer
CV_BCD : تستخدم فى تخزين قيمة العداد عند اى لحظة بصيغة BCD


ملحوظات عامة على الثلاث انواع

القيمة الموجودة على PV :
 يمكن ان تكون رقم صحيح بالصيغة #C + الرقم مثل C#20
يمكن ان تكون marker مثل MW0
او ان تكون قيمة من Data Block مثل DB1.DBW20
القيمة الموجودة على CV او CV_BCD تكون marker او قيمة من Data Block


كيفية استخدام Counters فى ladder diagram

الطريقة الاولى : استخدام البلوك الكامل

الطريقة الثانية : تجزئة عناصر العداد على اكثر من network



كيفية استخدام Counters فى لغة statement list

شرح كل سطر موجود على الصورة المرفقة

تم استدعاء العداد من نوع counter up عن طريق الامر : CU
لاستخدام counter down : نكتب CD
لاستخدام counter up down : نكتب CUD

اذا وجدت صعوبة فى فهم الكود الخاص بلغة Statement List

قم بمراجعة الدروس السابقة من كورس Siemens PLCخاصة درس شرح bit logic 


انتهى الشرح .. ارجو عمل Share لدعم الموقع

شرح timers داخل Siemens PLC

الكاتب elec egypt   بتاريخ   3:55 ص   S5Timer

نكمل كورس شرح Siemens PLC S7 300
و موعدنا مع الدرس العاشر
شرح المؤقتات الزمنية Timers
يوجد نوعين اساسيين من التايمرات التى يمكن استخدامها فى PLC S7 300 , S7 400

S5 Timer : و ده التايمر العادى اللى بيتم استخدامه فى معظم البرامج اللى بنشوفها
مميزاته :
- سهل الاستخدام
عيوبه :
- كل CPU له عدد معين من التايمرات لا يمكن تجاوزه فنجد مثلا CPU يحتوى على 250 تايمر فقط و اخر يحتوى على 300 و هكذا و اذا احتاج المبرمج لاستخدام عدد Timers اكثر يجب شراء CPU اغلى
- يوجد حدود للوقت الذى يمكن استخدامه مع timer و يساوى ساعتين و 46 دقيقة و 30 ثانية ( سنعرف لماذا هذا الرقم بالتحديد )

IEC Timer : و ده نوع اخر اكثر تقدما
مميزاته :
- يمكن استخدام عدد كبير جدا من IEC Timer ( حدوده هى حدود ذاكرة CPU نفسها و هى كبيره جدا )
- لا يوجد حدود للوقت الذى يمكن استخدامه بل يصل لايام اذا اردت ذلك
عيوبه :
- اصعب فى الاستخدام بالنسبة للمبتدئين فى مجال PLC
( سوف يتم شرح IEC Timers بالتفصيل فى درس اخر )

شرح S5 Timer 

توجد 5 انواع للتيمرات داخل Simatic Manager
on delay timer و اختصاره ODT
off delay timer و اختصاره OFFDT
Stored on delay timer و اختصاره ODTS
pulse timer و اختصاره Pulse
Extended pulse timer و اختصاره PEXT
سوف يتم شرح كل نوع بالتفصيل

شرح كل عنصر من عناصر Timer


S : نقطة تشغيل التايمر


TV : يتم كتابة الوقت المراد ضبط التايمر عليه
و لكتابة وقت مثلا ( ساعة و 53 دقيقة و 30 ثانية و 20 مللى ثانية ) يتم كتابة S5T#1H53M30S20MS
و اقصى قيمة لها S5T#2H46M30S0MS

و يتم كتابته بالصيغة S5Time و هى الصيغة الوحيدة لكتابة قيمة وقت داخل Timers

و تشغل الصيغة S5Time حجم بيانات 16 bits مقسمين كالتالى
bit رقم 12 و 13 : تسمى Time Base بحيث تكون قيمة Time base تساوى 0.01 او 0.1 او 1 او 10 و يتم حسابها داخل البرنامج تلقائيا و بدون تدخل المبرمج ,, بحيث يكون كل وظيفة المبرمج هى كتابة الوقت فقط
bits ارقام من 0 الى 11 يتم تخزين قيمة من 0 الى 999 ( بصيغة BCD ) و اقصى قيمة لها 999
اذا اقصى قيمة يمكن تخزينها = 999 * 10s تساوى 9990 ثانية
9990 ثانية = ساعتين و 46 دقيقة و 30 ثانية
 كما يمكن كتابة قيمة تشغيل Timer عن طريق قيمة من data block او متغير مثل MW10 مثلا و لكن تكون بصيغة S5Time
راجع درس شرح Data Block فى Siemens PLC

R = هى bit اذا تم تفعيلها يتم ارجاع قيمة التايمر الى قيمته الاصلية و ايضا ايقاف الخرج
Q : خرج التايمر
BI : قيمة التايمر عند اى لحظة و تكون بصيغة integer
BCD : قيمة Timer عند اى لحظة بصيغة BCD 


On Delay Timer

و هو اكثر الانواع استخداما
شرح time chart الخاص بالتايمر on delay


من الصورة المرفقة نجد انه عند تشغيل التايمر ( اى عندما تكون S =1 ) يقوم التايمر بالعد تنازليا من القيمة المضبوط عليها و بعد انتهاء الوقت يقوم بتغيير اوضاع نقاطه ( النقطة NO تصبح مغلقة و النقطة NC تصبح مفتوحة ) و ايضا يتم تشغيل الخرج Q
عندما تنقطع الاشارة على S او عند تشغيل الاشارة على reset , يقوم التايمر الرجوع لقيمته المضبوط عليها و ترجع حالة الخرج لحالته الاصلية


Off Delay Timer


عند تشغيل التايمر اى عندما تكون RLO عند S يقوم التايمر بتحويل نقاطه مباشرة اى ان ( النقطة NO تصبح مغلقة و النقطة NC تصبح مفتوحة ) و ايضا يتم تشغيل الخرج Q و عندما يتم قطع الاشرة عن S يقوم التايمر بالعد التنازلى و بعد انقضاء الوقت المضبوط عليه يقوم التايمر بأرجاع نقاطه على اصلها و ايقاف الخرج Q
اذا تم تشغيل الاشارة على R يقوم التايمر بأرجاع نقاطه الى اصلها و ايقاف الخرج مباشرة فى نفس اللحظة


Stored On Delay Timer

و يسمى ايضا Retentive on delay timer


يشبه هذا النوع من التايمر من نوع On Delay العادى
اى عند تشغيل الاشارة عند S يقوم التايمر بعد الوقت المضبوط عليه و بعدها يغير نقاطه و يعمل الخرج Q و اذا تم ايقاف الاشارة على S لا يتوقف التايمر عن العد او عن تغيير نقاطه و لا يعود الى اصله
و لكى يتم ايقاف التايمر يجب تشغيل الاشارة على R
اذا هذا النوع يشترط فيه استخدام Reset


Pulse Timer

عند اعطاء اشارة على S يقوم التايمر بتحويل نقاطه مباشرة اى ان ( النقطة NO تصبح مغلقة و النقطة NC تصبح مفتوحة ) و ايضا يتم تشغيل الخرج Q و يقوم بالعد فى نفس اللحظة و عند انتهاء الوقت المضبوط عليه المؤقت الزمنى , يقوم بأرجاع نقاطه الى وضعها و يقوم بأيقاف الخرج Q
اذا تم فصل الاشارة عن S فى اى لحظة او اعطاء اشارة على R : يقوم التايمر بارجاع نقاطه و ايقاف الخرج Q مباشرة فى نفس اللحظة


Extended Pulse Timer

و هو يشبه النوع Pulse Timer مع وجود اختلاف
هنا عند اعطاء اشارة على S يقوم المؤقت الزمنى بتحويل نقاطه مباشرة اى ان ( النقطة NO تصبح مغلقة و النقطة NC تصبح مفتوحة ) و ايضا يتم تشغيل الخرج Q و يقوم بالعد فى نفس اللحظة و عند انتهاء الوقت المضبوط عليه المؤقت الزمنى , يقوم بأرجاع نقاطه الى وضعها و يقوم بأيقاف الخرج Q
و اذا تم ايقاف الاشارة عن S فى اى لحظة , لا يتوقف التايمر و لا يرجع نقاطه الى طبيعتها ,, بل يستمر فى العد و بعد انتهاء الوقت المضبوط عليه حينئذ يقوم بأرجاع نقاطه الى اصلها و يوقف الخرج Q
عند اعطاء اشارة على R فى اى لحظة : يقوم التايمر بارجاع نقاطه و ايقاف الخرج Q مباشرة فى نفس اللحظة

كذا انتهينا من انواع Timers و كيفية استخدام كل نوع 


كيفية استخدام Timer فى لغة Ladder Diagram


بكل بساطه يتم سحب نوع التايمر المراد استخدامه و وضعه فى اى مكان داخل Network الخاصة بلغة Ladder Diagram

طريقة اخرى لاستخدام اى نوع تايمر فى LAD diagram



كيفية استخدام S5 Timers فى لغة Statement List 

SD تستخدم فى استدعاء On Delay Timer
لاستدعاء Off Delay Timer يتم كتابة SF
لاستدعاء Stored On Delay Timer  يتم كتابة SS
لاستدعاء Pulse Timer يتم كتابة SP
لاستدعاء Extended Pulse Timer يتم كتابة SE


اذا وجدت صعوبة فى فهم الكود الخاص بلغة Statement List
قم بمراجعة الدروس السابقة من كورس Siemens PLC
خاصة درس شرح bit logic 

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


الخميس، 19 أكتوبر، 2017

شرح complex data block فى Siemens PLC

الكاتب elec egypt   بتاريخ   3:02 م   UDT

نكمل كورس PLC من نوع Siemens S7 300
الدرس التاسع : شرح Complex Data Block و ده تكملة للدرس السابق شرح Data Block فى Siemens PLC

معنى Complex data block :

عناصر مركبه من اكثر من عنصر و تشمل اكثر من ذاكرة double word

تحتوى على الاتى :
Date and Time - String - Array - Struct - UDT


ها نشرح كل عنصر على حدى

شرح Date and Time :

من اسمه نستنتج انه يقرا قيمة الوقت و التاريخ معا
يخزن قيمته فى 8 bytes ( اى فى   2 double word )

تنقسم 8 bytes كالتالى :
byte 0 : يحتوى على قيمة السنة و يتراوح من 1990 الى 2089
byte 1 : يحتوى على الشهر و يتراوح من 01 الى 12
byte 2 : قيمة اليوم و يتراوح من 1 الى 30
byte 3 : يحتوى على قيمة الساعة ( من 0 الى 23 )
byte 4 : يحتوى على الدقائق من 0 الى 59
byte 5 : يحتوى على الثوانى من 0 الى 59
byte 6  : يحتوى على جزء من قيم مللى ثانية و تتراوح من 0 الى 99
byte 8 : ينقسم الى جزئين الجزء الاول يحتوى على المتبقى من قيمة مللى ثانية و تتراوح من 0 الى 9
الجزء الثانى يحتوى على day of week اى يحدد اى يوم من الاسبوع و يتراوح من 1 الى 7 ( عدد ايام الاسبوع ) بحيث ان رقم 1 يوازى يوم الاحد

لاحظ كدا ان مللى ثانية بالكامل يتراوح من 0 اللى 999
لاحظ ايضا ان اى قيمة سابقة تخزن بصيغة BCD


صيغة كتابة Date and Time : يكتب بالصيغة التالية
 DT#year - month - day - hour : minute : second : millisecond
مثال :
DT#2017-10-18-14:30:40:800  اى التاريخ 18/10/2017 و الساعة 2 ظهرا و 30 دقيقة و 40 ثانية و 800 مللى ثانية


حدود قيم Date and Time
يتراوح من  DT#1990-01-01-0:0:0.0 الى DT#2089-12-31-23:59:59.999


مثال على ادراج داتا من نوع date and time فى Data Block

نلاحظ الاتى :
ان برنامج Simatic Manager اعطى قيمة initial value تساوى اقل قيمة ممكنة للداتا date and time
ان البرنامج اعطى date and time عدد من bytes يساوى 8 bytes و اصبح المتاح بعدها من اول DBD8



شرح String فى Data Block:

يستخدم فى كتابة اى كلمات داخل plc
و هو يحتوى على عدد 256 bytes مقسمين الى 254 bytes لكتابة الحروف و 2 Bytes يستخدمهم البرنامج فى ترتيب الحروف
و من المعروف ان كل حرف يكتب فى 1 byte
اذا يمكن كتابة عدد 254 حرف فى String واحد
اذا عند ادراج داتا من النوع string داخل Data Block يقوم Simatic Manager بحجز 254 bytes له
و لكن لو انا محتاج كتابة كلمة تتكون من 7 حروف مثل كلمة Siemens مثلا , من غير المفضل حجز 254 bytes لكتابة 7 حروف فقط

لذلك يتم تحديد عدد الحروف المطلوبة بجانب امر string كما سنرى
ايضا يجب كتابة اى كلمة داخل string بين اثنين single quotation marks

مثال لادراج String داخل Data Block


عند ادراج string يقوم البرنامج بحجز 254  bytes لكتابة عدد 254 حرف
و ايضا وضع مسافة فارغة بين اثنين  single quotation marks فى خانة initial value
تعديل string ليستوعب فقط 10 حروف كحد اقصى
و كتابة كلمة PLC داخل initial value


شرح استخدام Array فى Data Block

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

و ده حاجة مملة و غير احترافية نهائيا
و الافضل هنا استخدام Array من النوع integer يحتوى على 24 عنصر
و ده يتم بسرعة جدا و فى سطرين فقط مش 24 سطر


بعد عمل ادراج Array نقوم بكتابة اسم لها و ده اى اسم انا عايز اكتبه مثلا زى product_counters
و اختار عدد عناصر Array و بداية و نهاية ترقيم العناصر
فهنا انا اخترت [ARRAY[1..24  اى العنصر الاول رقمه 1 و الاخير رقمه 24 اذا هنا لدى عدد 24 عنصر
كمان لازم اختار نوع عناصر Array و هنا اخترت integer
نلاحظ هنا ان البرنامج حجز 48 bytes لصالح Array اللى عملتها
لانى ادرجت عدد 24 عنصر و كل عنصر نوعه integer ( اى 2 bytes ) اذا المجموع 48 bytes

المصفوفة السابقة تعتبر one dimension array اى مصفوفة فى اتجاه واحد
و ممكن اعمل Array تحتوى على 2 dimensions او 3 dimensions او اكثر حسب اللى محتاجه

مثال لعمل array تتكون من 3 dimensions


نلاحظ التالى
dimension 1 : يتكون من العناصر 2 الى 5 ( اى 4 عناصر )
dimension 1 : يتكون من العناصر 1 الى 8 ( اى 8 عناصر )
dimension 1 : يتكون من العناصر 3 الى 7 ( اى 5 عناصر )
اذا حجم array السابقة = 4*8*5 = 160 عنصر
اى بكتابة السطر السابق تم ادراج 160 عنصر من النوع real ( تخيل الصعوبة و الوقت الضائع فى عدم استخدام array و ادراج 160 عنصر كل عنصر فى سطر وحده )
بما ان المصفوفة من النوع real و عدد عناصرها 160
اذا البرنامج قد حجز للمصفوفة عدد 4 * 160 = 640 bytes
لاحظ من الصورة ان اول عنصر من array يبدا من byte رقم 48 و ينتهى ب byte رقم 688
688-48=640 ( حجم المصفوفة )


كيفية استدعاء عنصر من عناصر array داخل اى مكان فى البرنامج ( مثل FC او FB )

اولا استدعاء عنصر من one dimension array

مثلا كتابة عنصر من المصفوفة فى بلوك compare integer

ثم نقوم بكتابة رقم العنصر داخل القوسين

نجد ان Simatic Manager قام بكتابة data block address الخاص بهذا العنصر

ثانيا : استدعاء عنصر من three dimension array

ثم نكتب ارقام العناصر حسب ترتيبها فى three dimensions 


نجد ان البرنامج قام بكتابة data block address المرافق للعنصر الذى تم ادراجه
ملحوظة : يمكن استخدام اى نوع عنصر داخل array ان كان elementary او complex data type
فمثلا يمكن استخدام string او ان تحتوى array على array داخلها ( و لكن هذا يمكن ان يكون معقدا و لا يفضل استخدامه )


شرح struct فى data block

struct هو مجموعة من الداتا المختلفة
و ده مهمته يجمع مجموعة من الداتا مع بعض بحيث استخدمهم باسم struct كنوع من التنظيم ليس اكثر

بعد ادراج struct يقوم البرنامج بفتح قائمة اسفل منه
و يمكن وضع اى مجموعة من data مثل Bool و int و s5time و array و حتى struct فرعى
كيفية استدعاء اى data موجودة داخل struct معين فى data block


بكتابة حرف D تفتح القائمة الفرعية و نختار منها data المطلوبة ( و فى المثال تكون test4 )
او يمكن كتابة عنوان test 4 بهذا الشكل Complex Data Block".x.test4" بحيث ان
Complex Data Block : هو اسم Data Block
x : هو اسم struct الذى تم انشاءه
test4 : هو اسم integer data المراد استدعاءه

اذا نستنتج ان استخدام struct هو للتنظيم فقط و لا يغير فى data و لا يعتبر نوع داتا بحد ذاته


شرح UDT داخل data block

و هى User Defined Data 
و سيتم شرحها بالتفصيل عند شرح UDT Block فى درس اخر


انتهى الشرح شكرا للمتابعة
هذا الشرح حصرى لموقع electrical-engineering يرجى عند النقل

متابعى الموقع

Back to top ↑
كن على تواصل واتصال معنا

احذر.. الموقع محمى بحقوق الملكية الفكرية

Google+ Followers

© 2013 موقع الهندسة الكهربية . WP Mythemeshop Converted by Bloggertheme9
Blogger templates . Proudly Powered by Blogger .