الرئيسية قاعدة المعرفة الأتمتة والتحكم تشخيص أعطال PLC: كيف تجد المشكلة وتحلّها في دقائق
الأتمتة والتحكم

تشخيص أعطال PLC: كيف تجد المشكلة وتحلّها في دقائق

مؤشرات LED: أول مصدر معلومات

عند حدوث عطل، أول ما تنظر إليه هو مؤشرات LED على واجهة PLC. كل مؤشر يحكي قصة.

مؤشرات Siemens S7-1200 النموذجية

المؤشر اللون الحالة المعنى
RUN/STOP أخضر ثابت RUN البرنامج يعمل بشكل طبيعي
RUN/STOP أصفر ثابت STOP البرنامج متوقف
RUN/STOP أخضر يومض STARTUP جاري بدء التشغيل
ERROR أحمر ثابت خطأ عطل في الجهاز (خطير)
ERROR أحمر يومض خطأ خطأ في البرنامج أو التكوين
MAINT أصفر صيانة البطارية ضعيفة أو صيانة مطلوبة

مؤشرات وحدات المداخل/المخارج

كل قناة في وحدة I/O لها مؤشر LED خاص:

  • مؤشر مدخل مضيء: المستشعر المتصل مُفعّل (يُرسل إشارة)
  • مؤشر مدخل مطفأ: المستشعر غير مُفعّل أو غير متصل
  • مؤشر مخرج مضيء: PLC يُفعّل هذا المخرج
  • مؤشر مخرج مطفأ: PLC لا يُفعّل هذا المخرج

تقنية التشخيص السريع

إذا ضغطت زر بدء التشغيل ولم يعمل المحرك:

  1. انظر مؤشر المدخل المتصل بالزر: هل يضيء عند الضغط؟

    • لا يضيء = مشكلة في التوصيل أو الزر نفسه
    • يضيء = الإشارة تصل لـ PLC، المشكلة في البرنامج أو المخرج
  2. انظر مؤشر المخرج المتصل بالكونتاكتور: هل يضيء؟

    • لا يضيء = البرنامج لا يُفعّل المخرج (تحقق من الشروط)
    • يضيء = PLC يُفعّل المخرج، المشكلة في الكونتاكتور أو التوصيل

جداول المراقبة Watch Tables

جداول المراقبة تُتيح لك رؤية قيم المتغيرات لحظياً أثناء عمل PLC.

إنشاء جدول مراقبة

في TIA Portal أو أي بيئة برمجة PLC:

  1. أنشئ جدول مراقبة جديد
  2. أضف المتغيرات التي تريد مراقبتها
  3. اضغط "مراقبة" لبدء القراءة اللحظية

مثال: مراقبة دائرة تشغيل محرك

المتغير العنوان النوع القيمة التعليق
bStartButton I0.0 BOOL FALSE زر البدء
bStopButton I0.1 BOOL FALSE زر الإيقاف
bEStop I0.2 BOOL FALSE إيقاف طوارئ
bThermalTrip I0.3 BOOL TRUE حماية حرارية!
bMotorContactor Q0.0 BOOL FALSE الكونتاكتور
iMotorState MW10 INT 99 حالة: عطل

تعديل القيم (Forcing)

في حالات التشخيص، يمكنك فرض قيمة على متغير مؤقتاً:

تحذير: الفرض (Forcing) يتجاوز البرنامج ويتحكم بالمخارج مباشرة.
استخدمه فقط للتشخيص وبحذر شديد.
لا تفرض قيمة على مخرج متصل بمحرك إلا بعد التأكد من الأمان.

جدول مراقبة للإشارات التناظرية

المتغير القيمة الوحدة الحالة
iRawTemp 14000 - ضمن النطاق
rTemperature 75.3 °C طبيعي
rPressure 3.2 بار منخفض قليلاً
iRawPressure -500 - خارج النطاق!

إذا كانت القيمة الخام سالبة لمستشعر 4-20mA، يعني أن التيار أقل من 4mA وهناك مشكلة في التوصيل.

المراقبة عبر الإنترنت Online Monitoring

المراقبة عبر الإنترنت تُظهر حالة البرنامج لحظياً أثناء تنفيذه.

في لغة السلالم

مراقبة حية للشبكة:

  I0.0       I0.1      I0.2      Q0.0
──┤█├──┬───┤/├──────┤/├───────(█)──
       │    ▲                   ▲
  Q0.0 │    │                   │
──┤█├──┘    │                   │
   ▲     أخضر=TRUE          أزرق=مفعّل
   │     أبيض=FALSE
   │
 أخضر ثابت (المحرك يعمل)

الخطوط الخضراء تُظهر مسار التيار المنطقي، مما يُسهّل تتبع لماذا يعمل مخرج ما أو لماذا لا يعمل.

في لغة Structured Text

// القيم تظهر بجانب كل متغير أثناء المراقبة
IF bEStop OR bThermalTrip THEN     // FALSE OR TRUE = TRUE
    bMotorContactor := FALSE;       // ← يُنفّذ هذا السطر
ELSIF bStopButton THEN              // لا يُقيّم (الشرط السابق تحقق)
    bMotorContactor := FALSE;
ELSIF bStartButton THEN             // لا يُقيّم
    bMotorContactor := TRUE;
END_IF;

نقاط التوقف (Breakpoints)

بعض بيئات البرمجة تدعم نقاط التوقف التي تُوقف تنفيذ البرنامج عند سطر محدد لفحص القيم. تحذير: استخدمها فقط أثناء التشغيل التجريبي وليس على خط إنتاج حقيقي.

التتبع والتسجيل: مسجّل البيانات

مسجّل البيانات (Data Logger / Trace) يُسجّل قيم المتغيرات بمرور الزمن لتحليل الأعطال المتقطعة.

إعداد التتبع

// مثال: تسجيل بيانات كل 100ms لمدة 60 ثانية
// المتغيرات المراد تسجيلها:
// - rMotorCurrent (تيار المحرك)
// - rMotorSpeed (سرعة المحرك)
// - bOverloadTrip (إنذار الحمل الزائد)
// - rTemperature (حرارة اللفات)

متى تستخدم التتبع

المشكلة ماذا تُسجّل المدة
محرك يتوقف عشوائياً تيار، حرارة، أوامر ساعات
قراءة مستشعر تتذبذب القيمة الخام والمُعالجة دقائق
تسلسل يتوقف في مرحلة حالة الآلة، المداخل دقائق
اتصال Modbus ينقطع حالة الاتصال، الأخطاء ساعات

تسجيل البيانات على بطاقة SD

// تسجيل بيانات الإنتاج كل دقيقة
FUNCTION_BLOCK FB_SimpleLogger
VAR_INPUT
    bEnable    : BOOL;
    tInterval  : TIME := T#1m;
    rValue1    : REAL;
    rValue2    : REAL;
    rValue3    : REAL;
END_VAR
VAR
    fbTimer    : TON;
    sLogLine   : STRING(200);
    iLogCount  : DINT := 0;
END_VAR

fbTimer(IN := bEnable, PT := tInterval);
IF fbTimer.Q THEN
    fbTimer(IN := FALSE);  // إعادة ضبط

    // بناء سطر السجل
    sLogLine := CONCAT(
        CONCAT(DT_TO_STRING(dtCurrentTime), ','),
        CONCAT(REAL_TO_STRING(rValue1), ',')
    );
    sLogLine := CONCAT(sLogLine,
        CONCAT(REAL_TO_STRING(rValue2), ',')
    );
    sLogLine := CONCAT(sLogLine, REAL_TO_STRING(rValue3));

    // كتابة على بطاقة SD (حسب نوع PLC)
    // WriteToFile(sLogLine);
    iLogCount := iLogCount + 1;
END_IF;
END_FUNCTION_BLOCK

منهجية تشخيص منظمة: 5 خطوات

الخطوة 1: جمع المعلومات

  • ماذا حدث؟ وصف دقيق من المشغّل
  • متى حدث؟ هل يتكرر في وقت محدد؟
  • هل تغيّر شيء؟ تحديث برنامج، تغيير قطعة، وصفة جديدة
  • هل المشكلة متقطعة أم دائمة؟

الخطوة 2: التحقق من الأساسيات

قائمة الفحص السريع:
□ التغذية الكهربائية: 24VDC ضمن النطاق؟
□ مؤشرات PLC: RUN أخضر؟ ERROR مطفأ؟
□ كابلات الاتصال: متصلة بإحكام؟
□ القواطع: جميعها في وضع ON؟
□ إيقاف الطوارئ: محرّر (غير مضغوط)؟
□ الحماية الحرارية: غير مُفعّلة؟

الخطوة 3: عزل المشكلة

قسّم النظام إلى أجزاء وحدد أي جزء يحتوي المشكلة:

المداخل → البرنامج → المخارج → الأجهزة الميدانية
  │            │           │              │
  │    تحقق من جدول  تحقق من    تحقق فيزيائياً
  │    المراقبة       مؤشرات LED
  │
  تحقق من مؤشرات LED
  على وحدة المداخل

الخطوة 4: اختبار الفرضية

  • إذا شككت بالمستشعر: استبدله بآخر سليم
  • إذا شككت بالبرنامج: راقب المتغيرات في جدول المراقبة
  • إذا شككت بالتوصيل: قس الجهد والتيار بالملتيمتر

الخطوة 5: التوثيق

سجّل ما اكتشفته وما فعلته. هذا يُساعد في تشخيص أعطال مشابهة مستقبلاً:

تقرير عطل:
- التاريخ: 2026-04-15
- الآلة: خط تعبئة 3
- العَرَض: المحرك الرئيسي لا يعمل
- السبب: الحماية الحرارية مُفعّلة بسبب انسداد في السير
- الإجراء: إزالة الانسداد، إعادة ضبط الحماية
- الوقت: 25 دقيقة

مثال عملي: تشخيص عطل في خط إنتاج متوقف

السيناريو

خط تعبئة زجاجات توقف فجأة. المشغّل يقول "كل شيء توقف".

الخطوة 1: الملاحظة الأولية

  • شاشة HMI تعرض: "عطل - المحطة 3"
  • مؤشر ERROR على PLC: أحمر يومض (خطأ برمجي)
  • جميع المحركات متوقفة

الخطوة 2: فحص جدول المراقبة

فحص متغيرات المحطة 3:
  eStation3State = 99 (FAULTED)
  bStation3_SensorIn = TRUE (قطعة موجودة)
  bStation3_SensorOut = FALSE (لا قطعة في المخرج)
  bStation3_Cylinder = TRUE (الأسطوانة ممدودة)
  tStation3_Timeout.Q = TRUE (تجاوز زمن العملية!)

التحليل

المحطة 3 (محطة إغلاق الأغطية) بدأت عمليتها:

  • الأسطوانة مُمتدة (تضع الغطاء)
  • لكن حسّاس المخرج لم يكشف القطعة بعد العملية
  • انتهى زمن المهلة (Timeout) → عطل

الأسباب المحتملة

  1. الأسطوانة عالقة: تحقق من ضغط الهواء ومن الصمام
  2. الحسّاس معطّل: تحقق من مؤشر LED على حسّاس المخرج
  3. القطعة محشورة: تحقق فيزيائياً من موقع القطعة

الحل

// بعد إصلاح العطل، يضغط المشغّل "إعادة ضبط" على HMI
IF bHMI_ResetFault AND eStation3State = FAULTED THEN
    // تراجع الأسطوانة
    bStation3_Cylinder := FALSE;
    // انتظر ثانية
    fbResetDelay(IN := TRUE, PT := T#1s);
    IF fbResetDelay.Q THEN
        eStation3State := IDLE;
        fbResetDelay(IN := FALSE);
    END_IF;
END_IF;

الخلاصة

تشخيص أعطال PLC يتطلب نهجاً منظماً: ابدأ بمؤشرات LED، استخدم جداول المراقبة والمراقبة الحية لتتبع المنطق، وسجّل البيانات للأعطال المتقطعة. المنهجية المنظمة من 5 خطوات تمنعك من التخمين العشوائي وتُوصلك للسبب الجذري بسرعة. التوثيق الجيد يبني قاعدة معرفة تُفيد الفريق بأكمله. في الدرس الأخير سنطبّق كل ما تعلمناه في مشروع متكامل.

troubleshooting diagnostics fault-finding LED watch-table online-monitoring تشخيص الأعطال المراقبة جدول المتابعة المؤشرات الصيانة حل المشكلات