انتقل إلى المحتوى

10التعابير والعمليات

المنطق البولياني والمقارنات وعمليات البتات

AND و OR و XOR و NOT وجداول الحقيقة، معاملات المقارنة الستة، ثم إزاحة البتات والقناع (Mask) في كلمات الحالة.

الدرس 10 من 3411 دقائقIEC 61131-3

المعاملات البوليانية الأربعة

في ST المنطق كلمات لا رموز: AND و OR و XOR و NOT.

A

B

A AND B

A OR B

A XOR B

NOT A

0

0

0

0

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

0

AND هي التماسات على التوالي، و OR هي التماسات على التوازي. أما XOR فلا مقابل مباشر لها في Ladder، وهذا سبب قيمتها: تساوي TRUE فقط عندما تختلف الإشارتان.

XOR في الخدمة

استخدامها الأشهر في الصناعة هو كشف عدم التوافق:

SensorFault := LSH XOR (Level >= 90.0);

مفتاح المستوى العالي ومُرسل المستوى التناظري يجب أن يقولا الشيء نفسه. إذا اختلفا فأحدهما معطوب. السطر نفسه يصلح لمقارنة مؤشر فتح الصمام مع أمر الفتح.

معاملات المقارنة

المعامل

المعنى

=

يساوي

<>

لا يساوي

< >

أصغر، أكبر

<= >=

أصغر أو يساوي، أكبر أو يساوي

ناتج المقارنة قيمة BOOL، فيمكن إسنادها أو تمريرها مباشرة:

HiAlm := Level >= 90.0;
Ready := (State = 0) AND (Faults = 0);

لا تقارن أعداداً حقيقية بـ = أبداً. Level = 50.0 قد لا تتحقق ولو مرة واحدة بسبب تمثيل الفاصلة العائمة. استخدم نطاقاً:

AtSetpoint := ABS(Level - 50.0) < 0.5;

البتات داخل كلمة

كلمات الحالة (Status Word) من محرك سرعة متغيرة أو وحدة اتصال تحمل عدة أعلام في عدد واحد. لقراءة علم واحد تستخدم قناعاً (Mask): تُطبّق AND بين الكلمة وعدد فيه بت واحد مرفوع.

(* البت 0 جاهز، البت 1 يعمل، البت 3 عطل *)
IsReady   := (StatusWord AND 1) <> 0;
IsRunning := (StatusWord AND 2) <> 0;
IsFaulted := (StatusWord AND 8) <> 0;

لرفع بت: Ctrl := Ctrl OR 4;. لإنزاله: Ctrl := Ctrl AND 65531;. لقلبه: Ctrl := Ctrl XOR 4;.

دوال الإزاحة والدوران

المعيار يعرّف أربع دوال على الكلمات:

الدالة

العمل

SHL(IN, N)

إزاحة يساراً، والبتات الداخلة أصفار

SHR(IN, N)

إزاحة يميناً، والبتات الداخلة أصفار

ROL(IN, N)

دوران يساراً، الخارج من اليسار يدخل من اليمين

ROR(IN, N)

دوران يميناً

الإزاحة يساراً بمقدار واحد تضاعف العدد، واليمين تنصّفه، وهي أسرع من الضرب والقسمة على معالج صغير.

(* كود من شركة مصنّعة، لا يعمل في مختبر هذا الموقع *)
Doubled  := SHL(Value, 1);
Halved   := SHR(Value, 1);
Walking  := ROL(Pattern, 1);     (* ضوء راكض على ثمانية مخارج *)
HighByte := SHR(Word16, 8) AND 255;

تنبيه: مختبر هذا الموقع يدعم AND و OR و XOR و NOT و MOD فقط، ولا يدعم SHL و SHR و ROL و ROR. الكود أعلاه معروض للقراءة والتصدير إلى بيئة المصنّع، وبرنامج المختبر في هذا الدرس يستخدم المعاملات المدعومة.

ومع ذلك، الضرب والقسمة على 2 و 256 يعطيان نفس نتيجة الإزاحة ويعملان في المختبر:

Doubled  := Value * 2;
HighByte := (Word16 / 256) MOD 256;

جرّبه في المختبر

المختبر يعمل في متصفحك: محرر ST، وعملية افتراضية تناسب الدرس، ونفس البرنامج كمخطط Ladder حي، وجدول مراقبة، وتصدير إلى Siemens SCL.

ماذا تجرّب

  1. شغّل البرنامج وارفع S1 فقط: لا شيء يحدث في L1 لأن صوتاً واحداً لا يكفي، لكن L2 يضيء لأن S1 و S2 مختلفان.
  2. ارفع S2 أيضاً: L1 و L4 يضيئان.
  3. ارفع S4 (التجاوز): L4 ينطفئ رغم أن L1 ما زال مضاءً.
  4. في Ladder لاحظ كيف صار OR ثلاثة فروع متوازية.

يبحث الناس عن هذا الدرس بـ

AND OR XOR في PLCجدول الحقيقةمعاملات المقارنة في STXOR في structured textSHL SHR في PLCbit mask في PLCكلمة الحالة status word

محتوى الدورة

  1. 01ما هي لغة ST؟ ومتى تستخدمها بدل Ladder
  2. 02كيف يشتغل الـ PLC: دورة المسح وصورة المداخل والمخارج
  3. 03هيكل البرنامج: POU و PROGRAM و FUNCTION و FUNCTION_BLOCK
  4. 04أول برنامج: تشغيل مضخة بالإمساك الذاتي (Seal-in)
  5. 05أنواع البيانات: BOOL و INT و REAL و TIME وغيرها
  6. 06التصريح عن المتغيرات: VAR و VAR_INPUT و RETAIN
  7. 07القيم الحرفية والثوابت: 16#FF و 2#1010 و T#5s
  8. 08التحويل بين الأنواع وتحجيم إشارة 4-20 مللي أمبير
  9. 09الإسناد والحساب في ST: ‎:=‎ وأولوية العمليات
  10. 10المنطق البولياني والمقارنات وعمليات البتات
  11. 11الدوال القياسية: ABS و SQRT و MIN و MAX و LIMIT و SEL و MUX
  12. 12الشرط IF و ELSIF و ELSE: القواعد ومتى تتجنبه
  13. 13التعليمة CASE وأول آلة حالات
  14. 14حلقة FOR والحارس Watchdog
  15. 15WHILE و REPEAT و EXIT و CONTINUE و RETURN
  16. 16كشف الحافة: R_TRIG و F_TRIG ومشكلة «نفّذ في كل مسح»
  17. 17المؤقتات: TON و TOF و TP
  18. 18العدّادات: CTU و CTD و CTUD
  19. 19القلّابات: SR و RS ومن يغلب عند التعارض
  20. 20اكتب دالتك: FUNCTION وقيمة الإرجاع
  21. 21اكتب كتلتك الوظيفية: FUNCTION_BLOCK لمحرك
  22. 22المصفوفات: ARRAY وفلتر المتوسط المتحرك
  23. 23الأنواع المركّبة: STRUCT والتعدادات
  24. 24المراجع والمؤشرات: REF_TO و POINTER TO ولماذا تتجنبها
  25. 25آلة الحالات: تسلسل دفعة كامل بـ CASE لا يعلق أبداً
  26. 26إدارة الإنذارات على أصول ISA-18.2: تأخير، نطاق ميت، إقرار، وأول خروج
  27. 27معالجة الإشارة التناظرية: من العدّات إلى وحدة هندسية، و NE43، وفلتر EMA
  28. 28التحكم المغلق في ST: من التشغيل والإيقاف بفجوة إلى PID عملي
  29. 29تشغيل المحركات والصمامات: سماحيات، تشابيك، رجع تشغيل، وزمن حركة
  30. 30نفس الكود عند كل شركة: SCL و Studio 5000 و CODESYS و TwinCAT
  31. 31الاختبار وتصحيح الأخطاء: جدول المراقبة والفرض والمحاكاة
  32. 32دليل أسلوب ST: التسمية والتعليقات والثوابت وإدارة النسخ
  33. 33المشروع الختامي: محطة خزان كاملة بآلة حالات وإنذار وعدّ دفعات
  34. 3420 سؤال مقابلة في ST وبرمجة PLC بإجابات قصيرة