من فضلك ادعم الموقع على جوجل بالضغط على علامة g+1
الكاتب
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 يرجى عند النقل
الكاتب
elec engineer
بتاريخ
12:35 ص
SIEMENS
الدرس التانى من كورس شرح Siemens PLC نوع S7-300
ها نشرح انواع blocks المختلفة و استخدام كل نوع و عمل calling لبلوك داخل بلوك اخر و شرح scan cycle
كنا وصانا فى الدرس الاول لعمل hardware configuration و ده الرابط : شرح Hardware Configurationبعد عمل save and compile نقفل صفحة hardware configuration و افتح الخانة blocks كما بالشكل
ها يظهر عندى بلوك واحد فقط و هو OB1
لو ضغطت right click فى اى مكان فاضى و اختار insert new object ها يضهر blocks الاتية
شرح كل block بالتفصيل :
Organization Block : اختصارا OB
و ديه البلوكات التنظيمية و ديه المسئولة عن تنظيم العمل بين CPU و user program المبرمج عن طريقى
من امثلة blocks ديه OB 100 : و ده بيتم تفعيل ذه عند عمل power reset ( اى عمل Warm Restart )
OB 1 : و ده نوعه cyclic block و ده بيتم تنفيذه كل cycle
و غيرها كتير من OB اللى مش كلها موجوده فى اى CPU و كل ما كان CPU بيدعم OB s اكتر , بيكون اغلى
Function : اختصارا FC
و ده عباره عن برنامج انا ببرمجه بلغات البرمجة المختلفة مثل LADDER diagram او Statement List او Function Block Diagram
بس ده عادة لا يكون البرنامج بالكامل و بيكون جزء فقط من البرنامج
مع العلم ان اى اوامر مكتوبة داخل FC لا يتم تنفيذها الا عند عمل CALL لها داخل اى من OB بمعنى تانى CPU لا يقرا اى حاجة الا OB و من خلالها انا بوجه CPU لقراءة FC عن طريق عمل Call لل FC داخل اى OB
Data Block : اختصارا DB
و ده ببساطه مكان لتخذين القيم و البيانات لاستخدامها داخل OB او FC او FB او اى مكان اخر فى البرنامج
البيانات ديه مثلا وقت او سرعة او قيمة عددية و غيرها
و البلوك ده نوعين رئيسيين :
1- shared data block : و ده بيتم استخدامه داخل اى مكان فى البرنامج بدون اى قيود
2- Instance data block : و ده بيكون مخصص لخدمة function block او System function block (ها يتم شرحه لاحقا )
بحيث بيتم تخصيص instance data block لكل function block و اخر لكل system function block
Function Block : اختصارا FB
و ده مشابه تماما ل function و الفرق ان function block لازم يحتاج instance data block عشان يشتغل بمعنى لو انا عملت insert ل FB 2 مثلا يبقى لازم احددله instance data block , ليكن DB 5 و ما اقدرش استخدم DB 5 ده فى اى مكان اخر مره ثانيه
Data Type : اختصارا UDT
او يطلق عليها user data type
و ده بستخدمه لو عايز اعمل مجموعة من البيانات الجاهزه و اللى بيتم استخدامها بشكل مجمع داخل اى مكان فى البرنامج مثل OB او FC او FB
Variable Table : اختصارا VAT
و ده مجرد جدول بضع فيه المتغيرهات بتاعتى اعملها monitor بغرض الصيانة مثلا انى اعرف قيمة المتغير ده كام دلوقتى و كمان اقدر اغير فى قيمته يدويا
طيب ازاى اعمل insert لاى block من البلوكات ديه
مثلا انى اعمل insert ل function
بضغط على function تظهر القائمة التالية
بعد الضغط على OK تظهر الصفحة التالية
و ديه صفحة كتابة الكود فى اى لغة مثلا STL ( اختصار Statement List ) او LAD ( اختصار Ladder Diagram )
او FBD ( اختصار Function Block Diagram )
و بتتكون من ثلاث اجزاء اساسية :
declaration table : و ده يستخدم فى تحديد متغيرات الدخل و الخرج و Temps ( ها يتم شرحها لاحقا بالتفصيل )
code section : و ده مكان كتابة كود البرمجة
Detail Window : و ده فيه معلومات مفصلة عن اى متغير ( اللى ممكن يكون دخا او خرج او قيمة ) و كمان بيوضح لو فيه error فى البرمجة
كيفية عمل call لاى بلوك داخل OB1
داخل FC 1 ها اكتب اى برنامج مثلا تشغيل موتور START و STOP مع وجود نقطة من overload
بفرض ان Q 0.0 هى الخرج اللى هايشغل الموتور
I 0.0 مفتاح تشغيل الموتور و نوعه normally open push button
I 0.1 مفتاح ايقاف الموتور و نوعه normally close push button
I 0.2 نقطه مغلقة من الاوفرلود
هنا كتبت network title
و ها اضغط كليك يمين و اختار insert network comment عشان ادخل كومنت خاص network ديه
و ده بعد ما كتبت كومنت و عملت save
ملحوظات على كتابة برنامج motor start stop
I 0.1 و I 0.2 الخاصين بمفتاح الايقاف و نقطة overload تم اختيارهم داخل البرنامج نقاط مفتوحة
لان PLC لا يفهم ان النقطه ديه تمثل ايه فى الحقيقة
اى ان فى حالة inputs : نقطة مفتوحة تعنى نقطة مشابهة للدخل على موديول الدخل digital input module
نقطة مغلقة تعنى نقطة مخالفة للدخل على موديول الدخل digital input module
طيب بعد ما برمجت FC حتى لو عملت download على CPU الموتور مش ها يشتغل و CPU مش ها يقرا FC 1 اللى انا برمجتها ديه اساسا
لازم اعمل call للبلوك FC 1 داخل OB 1 عشان البرنامج لما يقرا OB 1 و يلاقى امر CALL FC1 ها يروح يقرا FC 1 و بعد كدا يرجع يكمل OB1 تانى و هكذا
ازاى بقى اعمل call
اروح افتح OB 1
اول مره افتح OB 1 بتظهر القائمة ديه
اختار ok و افتح OB 1
تابع الصورة
كدا انا عملت call
و كدا FC 1 ها تشتغل
ملحوظة : انا ممكن اعمل call لبلوك FC 2 مثلا داخل FC 1 و ارجع اعمل call لبلوك FB 5 داخل FC 2 و هكذا
لو انا عملت كدا
CPU ها يقرا OB 1 و يجد امر call FC 1
يقوم يروح يقرا FC1 و يجد امر call FC 2
يروح CPU يقرا FC 2 و يجد امر call FB 5
يروح ينفذ البلوك FB 5 و بعد ما يخلصه و لا يجد داخله امر call
كدا يرجع البرنامج يكمل تنفيذ OB 1 و يخلصه
و بعد كدا يبدا OB 1 من تانى و يلاقى امر call FC 1 تانى فيروح ينفذه و هكذا
طيب هل ممكن اكتب كل البرنامج بتاعى فى OB 1 فقط ؟
الاجابة : نعم و هنا ها يكون اسمه Linear ptogram
و فى حالة استخدام اكثر من FC و FB و عمل اكثر من عملية call بينهم ده اسمه structured program
لاحظ ان عملية call اكثر من مره من block الى block اخر الى block ثالث و هكذا , ديه تسمى عملية Nesting
و كلما زادت عمليات nesting زاد scan cycle يعنى البرنامج ها يبقى اتقل و ابطأ
فى حالة PLC من نوع S7-300 : اقصى عدد Nesting مسموح بيه 8 عملية Nesting
ماعدا CPU 318 : اقصى عدد Nesting مسموح بيه 16 عملية Nesting
الدرس القادم :
شرح Scan Cycle بالتفصل
انتهى الشرح و اى سؤال اتفضل اسأل فى التعليقات اسفل الموضوع
هذا الموضوع حصرى لموقع electrical engineering نرجو عدم النقل
الكاتب
elec engineer
بتاريخ
12:33 ص
SIEMENS
الدرس الثالث من كورس شرح Siemens PLC نوع S7-300
شرح scan cycle
و هو الوقت اللى CPU يستغرقه عشان يقرا البرنامج كله مره واحدة
و ده بيكون صغير كدا حوالى 100 مللى ثانية مثلا
و كلما زاد حجم البرنامج و تعقيده و كثرة عدد FC و FB و DB و بالتالى كثرة عدد call بتكون scan cycle اكبر و ديه حاجة مش مقبولة فى بعض applications اللى السرعة مطلوبة فيها
و لو انا عايز اقلل scan cycle ممكن اختار CPU يكون اسرع و بالتالى ها يكون اغلى سعرا
دلوقتى عايزين نعرف ازاى CPU يقرا البرنامج
من الصورة المرفقة
1 : CPU بينفذ OB 100 و ده بيتم فقط عند عمل restart لل PLC
كمان CPU بيروح يغير وضع outputs على وحدات الخرج outputs modules بناءا على scan cycle السابقة
2- CPU يقرا وضع inputs من على digital input modules و analog input modules و يخذنها على مكان داخل internal memory فى CPU اسمها PII اختصارا لمصطلح process image input
3- قراءة OB 1 و تنفيذها و تنفيذ اى عملية call داخلها كذلك تنفيذ اى OB اخرى ( حسب شرط تنفيذ هذا OB و حسب priority الخاص بيه )
4 - تغيير process image output اى تغيير حالة الخرج من النوع digital او analog و نقل هذا التغيير الى digital output modules و analog output modules
و هكذا يتم البدء من رقم 1 مره ثانية
و زى ما قلنا قبل كدا كل ما كان البرنامج كبير و معقد كانت scan cycle كبيره
و لتقليل scan cycle حسب المطلوب يتم اختيار CPU اسرع
هذا الموضوع حصرى لموقع electrical engineering نرجو عدم النقل
الكاتب
elec engineer
بتاريخ
8:58 م
SIEMENS
نبدا بأذن الله كورس PLC من نوع siemens و ده من اكثر الانواع انتشارا فى العالم و من افضلها ايضا
ها نبدا الشرح على برنامج simatic manager و ده البرنامج الخاص بوجدات PLC S7-300 و PLC S7-400 و ديه طبعا اشهر الانواع و اكثرها انتشارا خصوصا فى مصر
الكورس ده موجه للمهندسين او الفنيين اللى ليهم تعامل مع classic control و يفضل يكون ليهم تعامل سابق مع Siemens s7-200 او اى انواع اخرى من PLC
اول درس معانا هو ازاى نعمل ملف للبرنامج Simatic manager و ازاى نختار العناصر اللى ها نبرمجها و نشغلها و ازاى نعمل Hardware Configuration
اول حاجل لما نفتح Simatic manager ها نلاقى الصورة ديه
نختار file ثم new عشان نعمل ملف جديد
ها تظهر معانا الصورة ديه
بعد اختبار اسم الملف و ليكن learn plc و اختيار مكان التخزين من browse اضفط على ok عشان يفتح لاول مره
و ده ها يكون الشكل
بعد كدا اختار قائمة insert ثم station ثم simatic 300 station
كدا انا عملت ادراج لوحدة PLC من نوع S7-300
ممكن اغير اسم وحدة s7 300 زى ما انا عايز مثلا اخليها TestCPU او اى حاجة زى مثلا اسم الماكينة اللى ببرمجها
بعد كدا ها ادوس على test cpu و اختار hardware عشان اعمل hardware configuration
ها يفتحلى صفحة hardware configuration
دلوقتى انا عايز اعمل ادراج لوحدات PLC زى مثلا CPU و وحدات digital inputs و digital outputs
لازم الاول اعمل ادراج Rail و ده الجزء المعدن اللى بيكون موجود فى اللوحة الكهربية و اللى بيتثبت عليه جميع عناصر PLC
ده شكله الحقيقى فى حالة S7 300
ها نعمل ادراج لوحدة Rail من القائمة ناحية اليمين و اختيار Simatic 300 ثم Rail انظر الصورة
لما بعمل ادراج لاى حاجة البرنامج يعطيها اسم افتراضى و عشان اغير اسم Rail ده بضغط عليه double click و اغير اسمه و اكتب كومنت و كمان بعرف ال part number بتاعه عشان اقدر اشتريه من سيمنز
فى حالة PLC Siemens S7-300 يتكون Rail من 11 خانه مقسمه كالتالى
رقم 1 : دائما محجوز لوحدة power supply و ديه بتكون اختياريه فى حالة s7 300 يعنى ممكن استخدم اى power supply ماركة اخرى و بتكون اجباريه فى حالة S7-400 يعنى ما ينفعش استخدم اى power supply غير سيمنز
الصورة ديه بعد اختيار power supply
الخانه رقم 2 : محجوزه لادراج CPU و عشان اختار CPU
بضغط على CPU 300 ثم بختار اى Family لل CPU زى مثلا 312 او 313 او 314 ثم بختار البروسيسور نفسه بحسب part number الخص بيه و طبعا واضح ان فيه انواع CPU كتيره جدا و عشان كدا لازم اكون عارف انا عايز امكانيات ايه بالضبط و عامل بحث مفصل على CPU 300 المراد استخدامه حسب الامكانيات المطلوبه
طيب ايه الامكانيات المختلفة من CPU لاخر ؟
بيكون فيه اختلاف فى فى سرعته و حجم البرنامج اللى ممكن يشتغل عليه و عدد input / output modules و انواع communications اللى بيشتغل عليه و هل يمكن توصيل incoder عليه و لا لأ و غيرها كتير جدا من الاختلافات
ديه صوره بعد اختيار CPU و الضغط عليه عشان اشوف و اغير فى properties بتاعته
بلاحظ وجود 9 صفحات داخليه بتوضح امكانيات CPU و بقدر اغير حاجات كتير فيها و ديه ها نعرفها بعدين advanced
طيب ايه معنى Networked اللى بجانبها no ؟
ده معناه ان CPU ينفعش اعمل بينه و بين اى حاجة تانية اتصال و عشان اغير ده بضغط properties
كدا انا فعلت MPI port فى CPU و ها نشرح فى درس اخر الاتصال بين CPU و الاجزاء الاخرى مثل HMI
بضغط OK
الخانة رقم 3 فى Rail : و ديه خاصه بموديول اسمه interface module و اختصاره IM
و ده شكل interface module لوحدات step 7 - 300
و الموديول ده متخصص عشان اوصل CPU بوحدة Rail تانية
و ده بحتاجه لما اكون عايز اوصل input / output modules اكتر من الحد اللى بيسمح بيه ال rail الواحد ( 8 موديولات دخل و خرج فقط لكل Rail)
و عشان اوصل بين اكثر من rail بستخدم IM فى ال rail الرئيسى Central Rack و كمان IM فى ال rail الفرعى Expansion Rack
لاحظ ان مصطلح Rack مساوى لمصطلح Rail
و بوصل بينهم عن طريق كابل خاص بيكون ليه maximum length مثلا 1 متر و توع اخر 2 متر و هكذا
و ده شكل الكابل
و كمان ممكن اوصل اكثر من 2 rail بشرط ان كل rail يكون فيه Interface module خاص بيه
صوره توضح توصيل اكثر من Rail بأكثر من Interface Module
لاحظ ان Rack 0 ده central Rack اى الراك الاساسى و متوصل بيه عدد 3 Racks كل Rack متصل بيه power supply و عدد معين من I/O Modules اقصاها 8 موديولات
ملحوظة : I/O Modules اختصار Input Outputs modules
لاجظ ان اسم interface module المستخدم فى Central Rack بيكون IM 360
و اسم interface module المستخدم فى Expansion Rack بيكون IM 361
ديه صوره توضح ادراج عدد 2 Rack و كل Rack فيه interface module خاص بيه ( بحيث ان فى Central Rack بستخدم IM360 و فى Expansion Rack بستخدم IM 361 )

انا فى البرنامج ده مش محتاج اكثر من 8 I/O Modules عشان كدا مش ها اوصل اى interface modules و ها اسيب slot 3 فارغ
الخانة رقم من 4 الى 11 متخصصة فى ادراج Signal Modules زى
Digital Input Module و اختصارها DI
Digital Output Module و اختصارها DO
Digital Input Output Module و اختصارها DIO اى تحتوى على عدد من الدخل الرقمى و عدد من الخرج الرقمى
Analog Input Module و اختصارها AI
Analog Output Module و اختصارها AO
Analog Input Output Module و اختصارها AIO اى تحتوى على عدد من الدخل التناظرى و عدد من الخرج التناظرى
Sensor modules with IQ interface
Special 300 اى special modules و ديه نجد بها نوعين :
1- Dummy module : و ده بأستخدمه عشان بس احجز خانه فى الراك فى اللوحة بتاعتى بس بيكون فاضى لا يستخدم فى اى حاجة تانية
صورة Dummy Module :
2- position decoder module : يستخدم فى توصيل انواع معينة من Encoders
طيب انا ها ادرج فى البرنامج هنا الموديولات الاتية :
SM 321 DI 16 x DC 24 V : اى يحتوى على عدد 16 مدخل رقمى و يتم تغذيته بجهد 24 فولت مستمر
SM 322 DO 16 x DC 24 V / 0.5 A : اى يحتوى على عدد 16 مخرج رقمى و يتم تغذيته بجهد 24 فولت مستمر و كل مخرج يتحمل حتى 0.5 امبير
SM 331 AL 8 x 12bit : اى يحتوى على عدد 16 مدخل تناظرى analog و دقة القرائة التناظرية 12 bits لكل مدخل ( تتراوح الدقة من 12 bit الى 16 bit و كلما زاد الرقم زادت الدقة و اصبح الموديول اغلى سعرا ) و سيتم شرح الانالوج بالتفصيل فى درس اخر
SM 332 AO 4 x 16bit : اى يحتوى على 4 مخارج تناظرية analog و دقة القراءة 16 bit
لاحظ القائمة السفلية :
تجد جدول فيه كل الموديولات اللى استخدمناها و موضح بجانبها part numbers اللازم للشراء من سيمنز
الاهم من ده ان يوجد به I address و Q address و ده عناوين الدخل و الخرج اللى بيشغلها كل موديول حسب عدد الدخل و الخرج لكل موديول
مثلا الموديول SM 322 DO 16 x DC 24 V / 0.5 A ده موديول خرج رقمى به 16 خرج رقمى اى يحتاج الى عدد 2 bytes ( لاحظ ان كل byte يحتوى على 8 bits تبدا من 0 الى 7 )
لذلك نجد ان البرنامج قد اعطى افتراضيا لهذا الموديول byte رقم 4 و byte رقم 5 ليخذن عليهم بياناته
يعنى لما انا اكتب فى البرنامج مثلا : Q4.2 اذا انا اقصد الخرج رقم 3 فى هذا الموديول
مع العلم ان هذه العناوين address يمكن تغييرها بسهولة
اختر الموديول المراد تغيير addresses الخاصه بيه و اختر addresses tap و ازل العلامة عن system default و اختار رقم اول بايت ليبدا منه addresses الخاصة بهذا الموديول و ليكن byte رقم 2
انظر الصورة :
بعد الضغط على ok تجد العناوين الخاصة الموديول SM 322 DO 16 x DC 24 V / 0.5 A قد تغيرت لتكون byte 2 , byte 3
لاحظ تغير module addresses
ملحوظة : بعض CPU s لا تدعم تغيير addresses للموديولات المتصله معها ( لذلك يجب معرفة هذا قبل شراء CPU من خلال data sheets الخاصه به
كدا خلصنا عمل hardware configuration و اضفنا كل الموديولات المطلوبة
نعمل save and compile و هنا البرنامج بيبحث فى كل التغييرات اللى انت عملتها و لو فيه مشكلة ها يظهرها عشان تعدلها
مثلا لو انا عملت delete لوحدة CPU طبعا كدا Hardware configuration غلط
لو رحت عملت save and compile ها يظهر الرساله ديه
لو ضغطت على details ها يظهر تفاصيل الرسالة There is no CPU in the Rack يعنى لا يوجد CPU
طبعا ها اضغط close و اروح اصلح الغلط اللى عملته حسب الرسالة ( هنا ها ارجع CPU )
و بعد اصلاح الاخطاء كلها و عمل save and compile تانى , البرنامج مش ها يظهر اى رسالة خطا و ده معناه ان HW configuration تم بطريقة صحيحة
كدا اول درس معانا انتهى و انتظروا دروس اخرى قريبا جدا
و اى استفسار اتفضل اسأل فى تعليقات facebook
هذا الموضوع حصرى لموقع electrical engineering نرجو عدم النقل