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

14التحكم بالتدفق

حلقة FOR والحارس Watchdog

بناء FOR ... TO ... BY ... DO، العدّ التصاعدي والتنازلي، ولماذا تُسقط حلقة طويلة المتحكم في عطل.

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

البناء

FOR i := 1 TO 10 DO
  Sum := Sum + i;
END_FOR

عدّاد الحلقة i متغير صحيح تعلنه في VAR. الحلقة تبدأ من 1، تنفّذ الجسم، تزيد العدّاد بواحد، وتتوقف بعد أن تتجاوز 10. أي أن 10 داخلة في العدّ.

الخطوة BY

FOR i := 0 TO 100 BY 2 DO      (* الأعداد الزوجية فقط: 51 تكراراً *)
FOR i := 10 TO 1 BY -1 DO      (* عدّ تنازلي *)

الخطوة الافتراضية 1. للعدّ التنازلي يجب أن تكون الخطوة سالبة، وإلا لن تنفّذ الحلقة ولا مرة واحدة.

حدود الحلقة تُقرأ مرة واحدة

قيم البداية والنهاية والخطوة تُحسب عند دخول الحلقة فقط. تغييرها في الجسم لا يمدّ الحلقة:

FOR i := 1 TO N DO
  N := 1000;        (* لا يؤثر: عدد التكرارات حُسم بالفعل *)
END_FOR

ولا تعتمد على قيمة العدّاد بعد END_FOR: بعض المصنّعين يتركها عند الحد زائد الخطوة، وبعضهم عند الحد.

ما تصلح له FOR في PLC

  • عملية واحدة مكرّرة على 64 محركاً أو 200 صنبوراً.
  • حساب مجموع أو متوسط أو أكبر قيمة في مجموعة.
  • بحث في جدول وصفات.
  • تقريب عددي، مثل عدة مرات من معادلة تقريبية في دورة واحدة.

ولماذا تخشاها

البرنامج كله يجب أن ينتهي داخل دورة مسح واحدة. لو كانت الدورة 10 ms وجسم الحلقة يكلّف 2 ميكروثانية، فإن:

التكرارات

الزمن

100

0.2 ms

1,000

2 ms

10,000

20 ms

1,000,000

2 ثانية

عند 10,000 خرجنا من زمن الدورة، وعند مليون يتوقف المتحكم: المؤقت الحارس (Watchdog) يرى أن المسح لم ينته في الزمن المسموح فيعلن عطلاً فادحاً ويوقف كل المخارج. في مصنع حقيقي هذا يعني خطّ إنتاج متوقف ومكالمة في الثالثة صباحاً.

مختبر هذا الموقع يحاكي السلوك نفسه: أي حلقة تتجاوز 10,000 تكرار في مسح واحد تُقطع برسالة خطأ. جرّبها، ثم افهم أن PLC حقيقياً كان سيتوقف.

كيف تتعامل

  1. اجعل الحد الأعلى ثابتاً معروفاً، لا متغيراً يكتبه HMI.
  2. قسّم العمل الثقيل على عدة دورات: اعمل على عشرين عنصراً في المسح، واحفظ موضعك، واستأنف في المسح التالي.
Last := Cursor + 20;
FOR i := Cursor TO Last DO
  (* عشرون عنصراً فقط في هذا المسح *)
END_FOR
Cursor := Cursor + 21;
IF Cursor > 999 THEN Cursor := 0; END_IF
  1. ضع الحساب الثقيل في مهمة بطيئة كل 500 ms بدل مهمة الـ 10 ms.

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

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

ماذا تجرّب

  1. شغّل البرنامج وراقب Sum: 1 إلى 10 مجموعها 55 فيضيء L1.
  2. ارفع S1: Sum يصبح 5050 ويضيء L2. ارفع S2: 500500 ويضيء L3.
  3. راقب EXEC في الأعلى: الزمن يزيد مع عدد الدورات.
  4. غيّر 1000 إلى 20000 وأعد التحميل: يتوقف البرنامج بخطأ Watchdog لأن الحلقة تجاوزت الحد.

مصطلحات هذا الدرس

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

FOR في structured textحلقة FOR في PLCEND_FORwatchdog في PLCزمن المسح والحلقاتBY في حلقة FORحلقات في برمجة PLC

محتوى الدورة

  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 بإجابات قصيرة