من فضلك ادعم الموقع على جوجل بالضغط على علامة g+1
الكاتب
elec engineer
بتاريخ
9:26 م
STL
نكمل كورس شرح Siemens S7 300
و موعدنا مع الدرس السابع
شرح المقارنات بين الاعداد
المقارنات هى عملية تؤثر فقط على حالة RLO
اى ان الخرج من عمليات المقارنة اما 1 او 0
توجد ثلاث انواع من المقارنات
integer comparator : اى يتعامل مع ارقام integer اى تتكون من 16 bits و تكون موجبة او سالبة
double integer comparator : اى يتعامل مع ارقام double integer تتكون من 32 bits و ايضا موجب او سالب
real comparator : اى يتعامل مع ارقام real تتكون من 32 bits و ايضا موجب او سالب
طرق المقارنة بين عددين
بالنظر الى الصورة المرفقة نجد 6 طرق من المقارنات تتكرر للثلاث انواع integer , double integer , real
الطرق 6 هى :
EQ اى equal و رمزها ( == ) : و هنا اذا كان العدد الاول يساوى العدد الثانى , يكون خرج المقارنة = 1
NE اى not equal و رمزها ( <> ) : و هنا اذا كان العدد الاول لا يساوى العدد الثانى , يكون خرج المقارنة = 1
GT اى greater than و رمزها ( < ) : و هنا اذا كان العدد الاول اكبر من العدد الثانى , يكون خرج المقارنة = 1
LT اى less than و رمزها ( > ) : و هنا اذا كان العدد الاول اصغر من العدد الثانى , يكون خرج المقارنة = 1
GE اىgreater than or equal و رمزها ( =< ) : و هنا اذا كان العدد الاول اكبر من او يساوى العدد الثانى , يكون خرج المقارنة = 1
LE اى less than or equal و رمزها ( => ) : و هنا اذا كان العدد الاول اصغر من او يساوى العدد الثانى , يكون خرج المقارنة = 1
كيفية كتابة اوامر المقارنة فى لغة Ladder Diagram
لمقارنة الاعداد integer
نلاحظ ان عنوان البلوك I< : حرف I يدل على ان المقارنة من النوع integer و العلامة < تعنى greater than
compare block : يتكون من
compare enable : و ده المسئول عن تشغيل عملية compare يعنى لازم تكون RLO قبله = 1 ( فى هذا المثال لازم يكون I0.1 = 1 و M 0.0 =0 )
IN 1 : و ده مكان كتابة الرقم الاول و هنا لازم يكون حجمه WORD بسبب انى مسىتخدم مقارنة من نوع integer
IN 2 : و ده مكان كتابة الرقم الثانى و هنا لازم يكون حجمه WORD ايضا
خرج المقارنة و يكون اما 1 او 0
اذا لكى يعمل الخرج Q 10.6 يجب ان يكون MW 20 اكبر من MW 16
ماذا يحدث لو استخدمت حجم بيانات خطا يعنى مثلا استخدمت MD 20 بدلا من MW 20
البرنامج ها يعطى ERROR و لا يمكن عمل save او downlaod
نلاحظ ظهور رسالة error معناها ان IN1 يجب ان تحتوى على قيمة WORD
لمقارنة الاعداد double integer
نلاحظ ان عنوان البلوك D== : حرف D يدل على ان المقارنة من النوع Double Integer و العلامة == تعنى equal
نفس تكوين compare block و الاختلاف هو نوع data المسموح بكتابته فى IN 1 و IN 2
اى يجب ان يكون IN 1 و IN 2 من النوع double integer
لمقارنة الاعداد Real
ملحوظة :
عند كتابة اى رقم real يتم تحويله بشكل اوتوماتيك الى الصيغة ((Sign) • (1.f) • (2^(e-127)و ده تم شرحه بالتفصيل فى درس شرح طرق تمثيل الاعداد داخل Siemens PLC
اذا عند كتابة الرقم 10.6 يتم تحويلها مباشرة الى 1.060000e+001
للتحويل العكسى : نضرب 1.06 فى 10 ^ 1 = 1.6
شكل compare block بعد كتابة المتغيرات
نلاحظ ان عنوان البلوك R=> : حرف R يدل على ان المقارنة من النوع Real و العلامة => تعنى less than or equal
كيفية كتابة اوامر المقارنة فى لغة statement list
لمقارنة الاعداد integer فى لغة STL
لكتابة امر compare يجب كتابة )A قبله و كتابة ( بعده اى ان ما بين القوسين هو امر المقارنة )
الامر L MW 20 يقوم بتحميل العدد MW 20 على ACCUMULATOR 1
الامر L MW 16 قام بتحميل العدد MW 16 على ACCUMULATOR 1 و ترحيل العدد MW 20 على ACCUMULATOR 2
( accumulator 1 , 2 : هى اماكن تخزين الاعداد لكى يتم عمل اى عمليات حسابية او منطقية عليها داخل PLC و يوجد فى S7 300 عدد 2 accumulator فقط )
الرمزI< : يعنى ان المقارنة من النوع integer و المقارنة greater than
بفرض ان M 0.0 = 0 و I 0.1 = 1
هنا compare تقوم بتشغيل الخرج Q 10.6 عندما يكون MW 20 اكبر من MW 16 اى عندما يكون accumulator 2 اكبر من accumulator 1
لمقارنة الاعداد double integer فى لغة STL
نفس الطريقة و لكن هنا تم كتابة D== اى ان المقارنة من النوع double word
لمقارنة الاعداد Real فى لغة STL
تم كتابة R فى امر المقارنة اى ان المقارنه من النوع REAL
ملحوظة : طبعا معروف ان الرمز // يعنى ان ما بعده مجرد تعليق على الكود و لا يؤثر اى تأثير على الكود نفسه
انتهى الشرح شكرا للمتابعة
الكاتب
elec engineer
بتاريخ
1:12 ص
STL
كنا وقفنا عند الدرس الثالث اللى شرحنا فيه ان scan cycle و عرفنا ازاى CPU بيقرا البرنامج و ينفذه
الرابط شرح scan cycle فى PLC Siemens
نكمل الدرس الرابع و ها نشرح اوامر البرمجة الاساسية فى لغة Ladder و لغة Statement list
ها نفتح FC 1 اللى عملناها و نفتح قائمة bit logic اللى على اليسار
نجد مجموعة من الاوامر اساسية فى اى برنامج بكتبه
شرح كل رمز حسب الرقم بجانبه
رقم 1 و 2
النقطة المفتوحة open contact و النقطة المغلقة closed contact و ليهم حالتين
اول حاجة لو جه معاهم input خارجى من اى digital input module زى ما استخدم معاهم I0.0 مثلا
كدا لو استخدمت open contact يعنى بقول ان حالة النقطة ديه مماثل لحالة النقطة خارج PLC
و لو استخدمت closed contact معناها ان حالة النقطة مخالف لحالة النقطة خارج PLC
مثال : لو استخدمت I0.2 مع closed contact كدا لو الدخل حالته on خارج PLC ها يقوم البرنامج بعكس حالتها و جعلها OFF داخل network
و العكس صحيح يعنى لو حالة النقطة off خارج plc يقوم البرنامج بجعلها on داخل network
طب لو استخدمت open contact و closed contact مع marker M او timer T او اى حاجة software
كدا open contact معناها نقطة مفتوحة عادى خالص و closed contact معناها نقطة مقفولة
مثال على كدا مثلا فى الصورة السابقة ده برنامج start stop و تم شرحه بالتفصيل فى درس شرح blocks فى PLC Siemens
عايزين نكتب نفس البرنامج ده بس بلغة statement list
عشان ابدل بين لغات البرمجة الثلاثة بختار view ثم بختار اللغة المطلوبة
لاحظ ان تم التحويل تلقائيا من Ladder Diagram الى statement list
ملحوظة : اى برنامج Ladder diagram يمكن تحويله بالكامل الى statement list و العكس غير صحيح
يعنى بعض اكواد statement list يمكن تحويلها Ladder و البعض لا يمكن
لكتابة نقطة مفتوحة فى statement list بكتب A + عنوان و اسم النقطة مثال
A I0.0
A M10.6
و هكذا
لحتابة نقطة مغلقة بكتب AN + عنوان و اسم النقطة
AN I9.3
AN Q0.0
و هكذا
قبل الانتقال لرقم 3 لازم نفهم يعنى ايه RLO
RLO هو اختصار Result of Logic Operations اى نتيجة العمليات المنطقية
و ديه بتكون bit بيتخزن عليها نتيجة اى عملية منطقية على هيئة 0 او 1
مثال :
لو انا كتبت AN I0.0
و رحت شغلت الدخل I0.0 خليته ON
عند تطبيق السطر ده من البرنامج CPU ها يلاقى I 0.0 بواحد بس AN تقوم بعكس النقطة من open الى close و العكس
عشان كدا RLO فى حالة السطر ده من البرمجة ها يكون 0
لاحظ ان RLO بيتغير كل ما بعمل اى logic operation
شرح رقم 3 : الامر NOT
و ده يقوم بعكس حالة RLO قبله
يعنى لو قبل الامر NOT كانت RLO بصفر ها يحولها 1
و لو كانت RLO بواحد ها يحولها 0
انظر الصور التوضيحية
هام جدا : شرح حالة RLO عند كل خطوة و تأثيره على الخرج
بفرض ان كل الدخل شغال يعنى انا مشغل I0.0 و I0.1 و I0.2
رقم 1 : RLO = 1 و ده سببه ان I0.0 =1
رقم 2 : RLO = 1 و ده سببه عملية AND بين عدد 2 دخل يعملان فتكون النتيجة 1
رقم 3 : RLO = 0 لان امر NOT قام بعكس حالة RLO قبله
رقم 4 : RLO = 0 و السبب عملية AND بين I0.2 التى تعمل و حالة RLO قبلها التى قيمتها 0
رقم 5 : الخرج لا يعمل لان حالة RLO قبله مباشرا تساوى 0
شكل الكلام ده عند التحويل للغة Statement List
لاحظ الاتى :
عشان اعمل coil او خرج يتم كتابة الرمز = و بعده اسم و عنوان الخرج و فى الحالة ديه رمز = يسمى assign
عشان اكتب اى كومنت فى اى سطر داخل statement list بكتب علامة / مرتين و اكتب اى كومنت و كدا CPU شايف الكلام بعد // مجرد كلام ليس له اى علاقة بالبرمجة
رقم 4 : الخرج او coil و ده ممكن يكون Q ( خرج من output module ) او marker M و غيرها
رقم 5 : علامة (#) :
ده معناه خرج وسطى Midline Output
و يتم استخدامه عند الحاجة لعمل خرج داخل سطر البرمجة نفسه
فى حالة الكود فى network رقم 2
بفرض ان I1.0 = 1
I 1.2 = 0
I 1.3 = 0
شرح كل خطوة
(1) RLO = 1 لان I 1.0 =1 اى يعمل
(2) RLO = 1 لان I 1.2 = 0 و عكسها = 1 و عند عمل AND بينها و بين RLO قبلها تكون النتيجة 1
(3) output Q1.0 =1 اى يعمل لان RLO قبله =1
(4) RLO = 0 لان I 1.3 = 0 و تم عمل عملية AND بينها و بين ما قبلها فكانت النتيجة = 0
(5) output Q0.2 = 0 اى لا يعمل لان RLO قبله = 0
البرنامج السابق بلغة steatement list
لاحظ ان فى حالة statement list عشان اعمل midline output بستخدم الامر (=) عادى جدا
لاجظ كمان انى اضطريت استخدم السطر A Q 0.1 بعد midline output لان فى حالة statement list عند استخدام اى خرج يقوم البرنامج بعدها بالبدء من جديد اى لا يتذكر ما سبق
رقم 6 : امر Reset و اختصاره R
رقم 7 : امر Set و اختصاره S
اولا امر set
و هو يعتبر خرج عادى مثله مثل امر =
و لكن الفرق انه يقوم بتشغيل الخرج المكتوب عنده حتى بعد انقطاع التغذية قبله
مثال
لو M5.0 = 1 الى يعمل
نجد ان Q10.0 = 1
طيب لو M5.0 اصبحت بصفر اى لا تعمل
نجد ان Q 10.0 تبقى ما هى تعمل اى = 1
و لكى يتم اطفاء Q 10.0 نحتاج الى امر Reset ( اختصاره R ) و هو عكس امر SET اى يقوم بتحويل الخرج المكتوب عليه الى 0
هنا عندما تكون M6.1 = 1 يتم اطفاء Q10.0 اى يصبح 0
المشكله هنا لو M5.0 =1 و فى نفس الوقت M6.1 = 1 كدا CPU ها يشغل Q10.0 و لا ها يطفيه ؟
الاجابة ان CPU دائما ينفذ اخر امر مر عليه
اذا هنا سوف يتم جعل Q10.0 =0
شكل اوامر set و reset فى حالة STL
رقم 8 و 9 : و هى اوامر RS و SR
و هى اوامر تجمع بين عملية set و عملية reset فى بلوك واحد و هذا فقط لتسهيل الاستخدام
RS اختصار reset and set : اى ان اخر عملية يتم تنفيذها هى set اى ان set لها الاولوية
بكتب اسم و عنوان الخرج المراد تشغيله فوق البلوك
هنا لو I 15.3 =1 نجد ان الخرج Q20.2 لا يعمل
و لو I 15.4 =1 نجد ان الخرج Q20.2 يعمل
و لكن ماذا لو ان I 15.3 =1 و I 15.4 =1 ؟
سوف يقوم البرنامج بتنفيذ الامر الاخير و هو امر set اى Q20.2 =1
العكس عند استخدام SR اى set and reset و هنا امر reset هو الاخير و له الاولوية
فى حالة network 6
لو M2.0 =1 و M2.1 =1
نجد ان Q25.1 =0
لان امر reset هو الاخير
الكود فى حالة استخدام STL
ملحوظة : السطر NOP 0 هو اختصار no operation
و ده سطر احيانا يقوم البرنامج بكتابته عند التحويل من LAD الى STL
و هو هنا ليس له اى اهمية و يمكن حذفه ايضا
رقم 12 : الامر SAVE
و ده امر يستخدم فى نقل القيمة الموجودة فى RLO الى bit تسمى BR و ديه ها يتم شرحها لاحقا عند شرح status bits و ده كمان اكثر من درس لانها حاجة more advanced
رقم 10 و 11 و 13 و 14 خاصين positive and negative edge و ده ها يتم شرحه الدرس القادم مباشرة
عملية OR بين اكثر من bit
امر OR فى حالة LAD يشابه بشكل كبير التوصيل توازى فى الكلاسيك كنترول
مثال
لو M2.7 =1
و M2.6 =1
اذا تكون محصلتهم = 1
و اذا كانت I2.0 =1
اذا يعمل الخرج M8.0
شكل الكود بلغة STL
لاحظ ان قبل بداية عملية OR يجب استخدام )
و بعد انتهاء العملية يجب استخدام (
انتهى الشرح و اى استفسار اتفضل اسأل فى تعليقات facebook
هذا الموضوع حصرى لموقع electrical engineering يرجى عدم النقل