07البيانات والمتغيرات
القيم الحرفية والثوابت: 16#FF و 2#1010 و T#5s
كيف تكتب رقماً أو زمناً أو نمط بتات في ST، ولماذا يرفض المترجم أحياناً رقماً يبدو صحيحاً.
الأساس في القيمة الحرفية
الصيغة | المعنى | مثال |
|---|---|---|
| عشري | عدد صحيح |
| حقيقي | |
| ثنائي | نمط بتات |
| ثماني | نادر |
| ست عشري | أقنعة، عناوين Modbus |
| منطقي | |
| مدة | |
| نص | |
الشرطة السفلية _ تُستخدم للفصل البصري فقط: 1_000_000 تساوي 1000000.
النوع الصريح
أحياناً تحتاج أن تقول للمترجم أي نوع تقصد:
INT#100 (* 100 كعدد صحيح 16 بت *)
REAL#100 (* 100.0 *)
DINT#100000تحتاج هذا عندما تستدعي كتلة تقبل DINT وتريد تمرير رقم صغير بلا لبس.
لماذا يرفض المترجم PT := 5000؟
لأن PT من نوع TIME، و 5000 عدد صحيح. المعيار لا يسمح بالتحويل الضمني هنا:
HiTmr(IN := Level > 85.0, PT := T#5s); (* صحيح *)
HiTmr(IN := Level > 85.0, PT := 5000); (* خطأ *)الثوابت المسماة
كل رقم في برنامجك يحتاج اسماً إن تكرر أو كان له معنى هندسي:
VAR CONSTANT
LevelHi : REAL := 85.0; (* حد الإنذار العالي، LAH-101 *)
LevelHiHi : REAL := 95.0; (* إيقاف المضخة *)
AlarmDelay : TIME := T#2s; (* ISA-18.2: ضد الاهتزاز *)
END_VARالفائدة ليست جمالية: بعد سنة، عندما يطلب المشغّل رفع الحد إلى 88، ستغيّر رقماً واحداً بدل البحث عن 85.0 في ألف سطر.
جرّبه في المختبر
المختبر يعمل في متصفحك: محرر ST، وعملية افتراضية تناسب الدرس، ونفس البرنامج كمخطط Ladder حي، وجدول مراقبة، وتصدير إلى Siemens SCL.
ماذا تجرّب
- شغّل البرنامج وارفع S1: المصابيح تعدّ بالثنائي من 0 إلى 15 ثم تعود.
- راقب Count و Limit و Ten في جدول المراقبة: 2#1111 هي 15 و 16#A هي 10.
- غيّر Limit إلى Ten وأعد التحميل: العدّ يتوقف عند 10.
- غيّر T#500ms إلى T#200ms لعدّ أسرع.
يبحث الناس عن هذا الدرس بـ
hexadecimal في PLC16# في STbinary literal plcT# زمنالثوابت في STCONSTANT structured textكتابة الارقام في PLC
محتوى الدورة
- 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 بإجابات قصيرة