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

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

شرح complex data block فى Siemens PLC

الكاتب elec engineer   بتاريخ   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 يرجى عند النقل

معلومات كاتب الموضوع

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

navright

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

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

Flag Counter

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

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