06البيانات والمتغيرات
التصريح عن المتغيرات: VAR و VAR_INPUT و RETAIN
أقسام التصريح تحدد من أين تأتي القيمة وإلى أين تذهب، و RETAIN يحدد ما الذي ينجو من انقطاع الكهرباء.
كل متغير يُعلَن أولاً
ST لغة صارمة في الأنواع: لا يوجد متغير بلا تصريح. والتصريح يقع في قسم يحدد دوره:
VAR_INPUT
Start : BOOL;
SetPoint : REAL := 75.0; (* قيمة ابتدائية *)
END_VARالأقسام
القسم | من أين / إلى أين | يُكتب عليه من الداخل؟ |
|---|---|---|
| يدخل من المستدعي | لا، يُقرأ فقط |
| يخرج إلى المستدعي | نعم |
| مرجع إلى متغير المستدعي | نعم، والتعديل يظهر عنده |
| داخلي | نعم |
| داخلي، يُمسح كل دورة | نعم |
| مشترك بين كل البرامج | نعم |
| ثابت لا يتغير | لا |
الفرق الذي يوقع الناس
VAR يحتفظ بقيمته بين الدورات، و VAR_TEMP لا يحتفظ: يبدأ من الصفر في كل مسح. إذا كتبت عدّاداً في VAR_TEMP فسيبقى عند 1 إلى الأبد.
RETAIN: ما ينجو من انقطاع الكهرباء
VAR RETAIN
TotalBatches : DINT;
RunHours : REAL;
END_VARالمتغير العادي يعود إلى قيمته الابتدائية عند إعادة التشغيل. المتغير RETAIN يُخزن في ذاكرة محفوظة ويعود كما كان. استخدمه للعدادات التراكمية وساعات التشغيل، ولا تستخدمه لحالة الآلة: بعد انقطاع الكهرباء يجب أن تبدأ الآلة من حالة آمنة معروفة، لا من منتصف دورة تعبئة.
الثوابت بدل الأرقام السحرية
VAR CONSTANT
HiAlarm : REAL := 85.0;
OverFill : REAL := 95.0;
END_VARالآن IF Level > HiAlarm تقرأ نفسها، وتغيير الحد يتم في مكان واحد.
التسمية
اسم المتغير يبدأ بحرف أو _، ولا يقبل مسافة ولا رمزاً، وحالة الأحرف لا تفرق (Pump و PUMP نفس المتغير). العرف الصناعي: سمِّ المتغير باسم الوسم على المخطط، مثل LT101_Level.
جرّبه في المختبر
المختبر يعمل في متصفحك: محرر ST، وعملية افتراضية تناسب الدرس، ونفس البرنامج كمخطط Ladder حي، وجدول مراقبة، وتصدير إلى Siemens SCL.
ماذا تجرّب
- شغّل البرنامج واضغط START: السير يعمل والمكبس يرفض الصناديق الطويلة.
- بعد رفض 3 صناديق يتوقف السير ويضيء المصباح، لأن Target يبدأ بالقيمة 3.
- غيّر Target إلى 5 في سطر تعريفه فقط وأعد التحميل.
- جرّب كتابة Start := TRUE; في نهاية البرنامج: سيرفضها المترجم لأن Start من VAR_INPUT.
مصطلحات هذا الدرس
يبحث الناس عن هذا الدرس بـ
VAR في STVAR_INPUT VAR_OUTPUTVAR_GLOBALRETAIN في PLCمتغيرات محفوظةالتصريح عن المتغيرات PLCVAR_IN_OUT
محتوى الدورة
- 01ما هي لغة ST؟ ومتى تستخدمها بدل Ladder
- 02كيف يشتغل الـ PLC: دورة المسح وصورة المداخل والمخارج
- 03هيكل البرنامج: POU و PROGRAM و FUNCTION و FUNCTION_BLOCK
- 04أول برنامج: تشغيل مضخة بالإمساك الذاتي (Seal-in)
- 05أنواع البيانات: BOOL و INT و REAL و TIME وغيرها
- 06التصريح عن المتغيرات: VAR و VAR_INPUT و RETAIN
- 07القيم الحرفية والثوابت: 16#FF و 2#1010 و T#5s
- 08التحويل بين الأنواع وتحجيم إشارة 4-20 مللي أمبير
- 09الإسناد والحساب في ST: := وأولوية العمليات
- 10المنطق البولياني والمقارنات وعمليات البتات
- 11الدوال القياسية: ABS و SQRT و MIN و MAX و LIMIT و SEL و MUX
- 12الشرط IF و ELSIF و ELSE: القواعد ومتى تتجنبه
- 13التعليمة CASE وأول آلة حالات
- 14حلقة FOR والحارس Watchdog
- 15WHILE و REPEAT و EXIT و CONTINUE و RETURN
- 16كشف الحافة: R_TRIG و F_TRIG ومشكلة «نفّذ في كل مسح»
- 17المؤقتات: TON و TOF و TP
- 18العدّادات: CTU و CTD و CTUD
- 19القلّابات: SR و RS ومن يغلب عند التعارض
- 20اكتب دالتك: FUNCTION وقيمة الإرجاع
- 21اكتب كتلتك الوظيفية: FUNCTION_BLOCK لمحرك
- 22المصفوفات: ARRAY وفلتر المتوسط المتحرك
- 23الأنواع المركّبة: STRUCT والتعدادات
- 24المراجع والمؤشرات: REF_TO و POINTER TO ولماذا تتجنبها
- 25آلة الحالات: تسلسل دفعة كامل بـ CASE لا يعلق أبداً
- 26إدارة الإنذارات على أصول ISA-18.2: تأخير، نطاق ميت، إقرار، وأول خروج
- 27معالجة الإشارة التناظرية: من العدّات إلى وحدة هندسية، و NE43، وفلتر EMA
- 28التحكم المغلق في ST: من التشغيل والإيقاف بفجوة إلى PID عملي
- 29تشغيل المحركات والصمامات: سماحيات، تشابيك، رجع تشغيل، وزمن حركة
- 30نفس الكود عند كل شركة: SCL و Studio 5000 و CODESYS و TwinCAT
- 31الاختبار وتصحيح الأخطاء: جدول المراقبة والفرض والمحاكاة
- 32دليل أسلوب ST: التسمية والتعليقات والثوابت وإدارة النسخ
- 33المشروع الختامي: محطة خزان كاملة بآلة حالات وإنذار وعدّ دفعات
- 3420 سؤال مقابلة في ST وبرمجة PLC بإجابات قصيرة