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

32من المختبر إلى المصنع

دليل أسلوب ST: التسمية والتعليقات والثوابت وإدارة النسخ

كود يقرأه غيرك بعد سنتين: أعراف التسمية، وتعليقات تشرح السبب لا الفعل، وPOU قصير، وثوابت بدل أرقام سحرية، وGit لكود المتحكم.

الدرس 32 من 3413 دقائقIEC 61131-3

من يقرأ كودك

ليس المترجم. الذي يقرأه هو مهندس آخر في الثالثة فجراً والخط متوقف، وقد يكون أنت بعد سنتين. كل ما في هذا الدرس يخدم تلك اللحظة.

التسمية: بادئة تقول النوع

العرف المعروف بأسلوب PLCopen يضع بادئة قصيرة تدل على النوع والدور:

البادئة

المعنى

مثال

b

BOOL

bPumpRun

i / di

INT / DINT

iStep، diBatchCount

r

REAL

rLevelPct

t

TIME

tFillTimeout

fb

نسخة كتلة وظيفية

fbFillTimer

x/i_/q_

إشارة حقلية داخلة أو خارجة

i_bLSH101، q_bPump101

لا يهم أي عرف تختار، يهم أن يكون واحداً في المشروع كله وموثّقاً في صفحة واحدة.

التسمية الأهم: أسماء الحلقات من المخطط

في مصنع حقيقي الأسماء ليست من عندك، بل من P&ID. مستوى الخزان 101 اسمه LT-101 في المخطط وفي الكابل وفي شاشة التحكم، فليكن في الكود LT_101 أو LT101_PV. الاصطلاح الشائع (ISA-5.1): حرف أول للمقيس وحروف بعده للوظيفة:

الوسم

المعنى

LT-101

ناقل مستوى (Level Transmitter)

LSH-101

مفتاح مستوى عالٍ

LSL-101

مفتاح مستوى منخفض

FT-102

ناقل تدفق

PT-103

ناقل ضغط

P-101

مضخة

XV-104

صمام قطع (On/Off)

LIC-101

متحكم ومؤشر مستوى

فائدة هذا فورية: الفني يقرأ الإنذار على الشاشة، يجد نفس الوسم على الحقل، ويفتح نفس الاسم في الكود. لا ترجمة ولا تخمين.

التعليقات: اشرح السبب لا الفعل

التعليق الذي يكرر الكود عبء يجب تحديثه مرتين:

(* سيئ: يضبط المضخة على TRUE *)
Pump := TRUE;

(* جيد: الشركة المصنّعة تطلب 30 ثانية تبريد بين تشغيلين
   لحماية ملف البادئ. مرجع: دليل P-101 صفحة 14 *)
tRestartDelay := T#30s;

علّق على: سبب الرقم، ومرجع المستند، والقرار الذي بدا غريباً، والعطل الذي دفعك لكتابة هذا السطر. ولا تعلّق على ما يقوله الكود بنفسه.

اجعل الـ POU قصيراً

إذا احتجت التمرير لرؤية بداية IF، صار الكود طويلاً. مؤشرات عملية:

  • POU يُقرأ في شاشة أو شاشتين.
  • مهمة واحدة واضحة لكل POU: FB_Motor تدير محركاً، لا تدير محركاً وتحسب التقارير.
  • المنطق المتكرر في كتلة وظيفية تُنشأ منها نسخ، بدل نسخ ولصق.
  • القرارات في مكان واحد: لا تضبط Pump في ثلاثة مواضع.

لا أرقام سحرية

الرقم 85.0 وسط الكود لا يخبر أحداً بشيء، وتغييره يعني البحث في المشروع كله:

VAR CONSTANT
  LEVEL_FILL_SP   : REAL := 85.0;   (* % نقطة توقف الملء *)
  LEVEL_HI_ALARM  : REAL := 90.0;   (* % إنذار مستوى عالٍ *)
  FILL_TIMEOUT    : TIME := T#60s;  (* أقصى زمن ملء قبل إعلان عطل *)
END_VAR

IF rLevelF >= LEVEL_FILL_SP THEN
  iStep := 2;
END_IF

ما يتغير أثناء التشغيل يصبح نقطة ضبط (Setpoint) في متغير RETAIN يُعدّلها المشغل من الشاشة. وما لا يتغير يصبح CONSTANT. الرقم المنثور في الكود ليس واحداً منهما.

إدارة النسخ لكود المتحكم

العرف القديم Station_v3_final_FINAL.zip سبب حوادث حقيقية. ما يعمل عملياً:

  • مستودع Git للمشروع، ونصوص ST كملفات قابلة للمقارنة. سيمنس وCODESYS وTwinCAT كلها تصدّر وتستورد الوحدات نصاً.
  • رسالة التزام تقول لماذا: «رفع مهلة الملء إلى 90 ثانية بعد تركيب المضخة الأصغر».
  • وسم (Tag) لكل نسخة حُمّلت فعلاً إلى المتحكم، مع تاريخ وموقع: هذا ما ستحتاجه عند التحقيق في حادث.
  • نسخة احتياطية من المشروع الكامل لا من النصوص فقط: الأجهزة والشبكة وإعدادات الوحدات.
  • سجل تغييرات مطبوع في اللوحة: من حمّل، وماذا، ومتى.

كلمة في OOP داخل IEC 61131-3

الإصدار الثالث من المعيار أضاف إلى الكتلة الوظيفية: METHOD و PROPERTY و INTERFACE و EXTENDS و IMPLEMENTS. مدعومة جيداً في CODESYS وTwinCAT، وجزئياً أو كلياً غير مدعومة في منصات أخرى.

متى تستحق؟

  • تستحق عندما تبني مكتبة لعشرين آلة متشابهة: FB_ValveBase ومنها FB_ValveDigital و FB_ValveAnalog، مع I_Device تعطي Start و Stop و GetState لكل جهاز، فتكتب منطق المحطة مرة واحدة.
  • لا تستحق في محطة فيها مضختان وصمام. طبقة التجريد ستكلّفك وقت فهم أكثر مما توفّره، ولن يقرأها فني الصيانة.

والقاعدة التي لا تُخالف: إذا كان الكود سيُسلَّم لفريق صيانة لا يعرف البرمجة بالكائنات، فأنت تكتب مشكلة مستقبلية لا حلاً هندسياً. الوضوح يغلب الأناقة في كل مرة.

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

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

ماذا تجرّب

  1. شغّل البرنامج واضغط PED BUTTON لحظة: الطلب يُحفظ في bRequest، وبعد أقل زمن أخضر يتحول إلى أصفر ثم أحمر وعبور.
  2. غيّر tWalk إلى T#8s في سطر تعريفه فقط وأعد التحميل: كل البرنامج يأخذ القيمة الجديدة.
  3. لاحظ البادئات: t للزمن، b للمنطقي، i للعدد، fb للكتلة. اقرأ أي سطر وستعرف نوع كل اسم دون الرجوع للتعريف.

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

اعراف تسمية المتغيرات PLCPLCopen namingتعليقات الكود في PLCثوابت CONSTANT في STgit لبرامج PLCOOP في IEC 61131-3افضل ممارسات برمجة 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 بإجابات قصيرة