محرر Instruction List

نظرة عامة

Instruction List (IL) هي لغة النص الشبيهة بالمجمّع من IEC 61131-3 وتاريخياً أول لغات IEC الخمس. البرامج هي تتابعات من التعليمات التي تتلاعب بسجل مراكم داخلي واحد — النتيجة الحالية (CR). كل سطر هو عبارة بالشكل

[Label:] Operator [Modifier] [Operand] (* Comment *)

ويقرأ من المراكم أو يكتب فيه أو في متغير خارجي.

في ForgeIEC تُحرَّر IL عبر FIlEditor — التخطيط والأدوات مماثلة لـ محرر ST.

تخطيط المحرر

+----------------------------------------+
| Variable table                         |  <- FVariablesPanel
| (VAR/VAR_INPUT/VAR_OUTPUT)             |
+========================================+  <- QSplitter (vertical)
| Code area                              |  <- FStCodeEdit
| (tree-sitter-il grammar) |
+----------------------------------------+
المنطقةالمحتوى
جدول المتغيرات (أعلى)الإعلانات بالاسم، النوع، القيمة الأولية، العنوان، التعليق — متزامن مع كتلة VAR ... END_VAR.
منطقة الكود (أسفل)مصدر IL مع إبراز tree-sitter (نحوي tree-sitter-il).
شريط البحث (Ctrl-F / Ctrl-H)شريط بحث واستبدال.

الوضع المتصل وتراكب القيمة الداخلية يعملان بشكل مماثل لمحرر ST.

نموذج المراكم

يحمل المراكم (CR) النتيجة الوسيطة للتقييم الجاري. تتابع نموذجي:

  1. LD x — تحميل x في المراكم (CR := x)
  2. AND y — دمج المراكم مع y (CR := CR AND y)
  3. ST z — تخزين المراكم في z (z := CR)

هذا يجعل IL آلة سجل واحد بدون مكدس — قريبة جداً من منصات المتحكمات الدقيقة التي كانت سائدة عند توحيد اللغة في 1993.

العوامل الرئيسية

المجموعةالعواملالتأثير
التحميل / التخزينLD، LDN، ST، STNضبط المراكم / تخزين المراكم (N = منفي)
التعيين / الإعادةS، Rتعيين / إعادة بت (متغير BOOL، عندما CR = TRUE)
منطق البتاتAND، OR، XOR، NOTدمج المراكم مع المعامل
الحسابADD، SUB، MUL، DIV، MODالمراكم + المعامل → المراكم
المقارنةGT، GE، EQ، NE، LE، LTنتيجة المقارنة في CR
القفزJMP، JMPC، JMPCNالقفز إلى علامة (C = عندما CR = TRUE)
الاستدعاءCAL، CALC، CALCNاستدعاء نسخة كتلة وظيفة
العودةRET، RETC، RETCNمغادرة POU

المعدّلات

يمكن تنقيح العامل عبر معدّلات لاحقة:

المعدّلالمعنى
Nالنفي للمعامل (LDN x يحمّل NOT x)
Cشرطي — يُنفَّذ فقط عندما CR = TRUE (JMPC label)
()معدّل القوس — تأجيل التقييم حتى يُغلق )

تتيح صيغة الأقواس تعابير مركبة دون متغيرات وسيطة:

LD   a
AND( b
OR   c
)
ST   result            (* result := a AND (b OR c) *)

متى تُستخدم IL بدلاً من ST

ST هو الخيار الافتراضي اليوم. لا تزال IL منطقية عندما:

  • أداء المتحكم الدقيق حاسم — IL تُعيّن 1:1 إلى تعليمات الآلة في معظم خلفيات matiec، دون تحسين وسيط.
  • الأنظمة القديمة يجب الإبقاء على توافقها (منطق مشتق من S5/S7 AWL، قاعدة ABB / Beckhoff الأقدم).
  • كتل منطق مدمجة جداً — التشابكات، الإمساك، شروط الحافة غالباً ما تكون بسطرين أقصر في IL منها في ST.

لكل ما عدا ذلك، ST أكثر قابلية للقراءة وأسهل في الصيانة.

مثال على الكود — مرحل ذاتي الإمساك بتماسات NO/NC

إمساك ذاتي للمرحل الكلاسيكي في IL: ضغط start يشحن المرحل K1، وزر stop (NC، نشط منخفض) يُسقطه مرة أخرى. المنطق:

K1 := (start OR K1) AND NOT stop

في IL:

PROGRAM Selbsthaltung
VAR
    start  AT %IX0.0 : BOOL;       (* NO push-button *)
    stop   AT %IX0.1 : BOOL;       (* NC push-button, low-active *)
    K1     AT %QX0.0 : BOOL;       (* contactor *)
END_VAR

    LD    start
    OR    K1                    (* CR := start OR K1 *)
    ANDN  stop                  (* CR := CR AND NOT stop *)
    ST    K1                    (* K1 := CR *)
END_PROGRAM

أربع تعليمات، سجل واحد، لا تخزين مؤقت. بالضبط نوع البنية التي صُممت IL أصلاً من أجلها.

مواضيع ذات صلة