محرر 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) النتيجة الوسيطة للتقييم الجاري. تتابع نموذجي:
LD x— تحميلxفي المراكم (CR := x)AND y— دمج المراكم معy(CR := CR AND y)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 أصلاً من أجلها.
مواضيع ذات صلة
- Structured Text — اللغة الشقيقة الشبيهة بـ Pascal
- المكتبة — كتل الوظائف القابلة للاستدعاء عبر
CAL - تنسيق ملف المشروع — جسم IL داخل
<body><IL>...