إدارة الوصفات باستخدام Allen-Bradley ومصفوفات UDT وواجهة تحرير HMI
تعلّم إنشاء نظام لتحرير الوصفات قائم على واجهة التفاعل بين الإنسان والآلة (HMI) لمنصة AB Logix 5000 باستخدام مصفوفات UDT وتعليمات COP لتخزين المعلمات بشكل دائم.
تعمل إدارة الوصفات على منصات Logix بأفضل صورة عندما لا تكتب واجهة HMI مباشرةً إلى المصفوفة التاريخية. ويستخدم النمط المتين ثلاث وحدات Tags: Recipe_Storage كمصفوفة UDT بطول 50، وRecipe_Display كمثيل UDT واحد لشاشة المشغّل، وRecipe_Index كقيمة DINT تحدد الوصفة المخزنة التي تُنسخ إلى بنية العرض. تنقل تعليمات النسخ (COP) البيانات عند تغيّر الفهرس ومرة أخرى عند الحفظ، بحيث يعدّل المشغّل دائمًا مخزنًا مؤقتًا بينما يظل الأرشيف متسقًا عبر دورات فصل الطاقة وتشغيلها.
مراقب Tags في Logix يعرض Recipe_Storage[50] وRecipe_Display وRecipe_Index المستخدمة لتحرير الوصفات المرتبط بواجهة HMI.
عرّف UDT مرة واحدة بحيث يتضمن كل قيمة ضبط يحتاج إليها النظام—درجات الحرارة، والمؤقتات، والسرعات، ورموز المنتجات، وأقنعة التعشيق—ثم أنشئ Recipe_Storage كمصفوفة من النوع UDT[50]. يجب أن تكون Recipe_Display من نوع UDT المطابق تمامًا، لا مجرد مجموعة غير مترابطة من Tags الذرية. تحافظ الأنواع المتجانسة على بساطة حسابات طول COP وتمنع الاقتطاع الصامت عند إضافة أعضاء لاحقًا.
تقييد الفهرس ومسار التحميل
قيّد Recipe_Index إلى النطاق الشامل من 0 إلى 49 قبل تنفيذ أي COP. فقد يتسبب فهرس غير مقيّد ناتج من عنصر إدخال رقمي في حدوث خطأ في COP أو في جلب ذاكرة غير معرّفة، بحسب طريقة التعامل مع حدود المصفوفة في المشروع. عند حدوث تغيّر صاعد في Recipe_Index (أو عند الضغط على زر تحميل صريح)، انسخ Recipe_Storage[Recipe_Index] إلى Recipe_Display. ترتبط واجهة HMI حصريًا بأعضاء Recipe_Display. وتلغي هذه القاعدة المنفردة حالات التسابق التي قد تحدث عندما تكتب شاشتان في موضعين مختلفين من المصفوفة بينما لا يزال المشغّل يضبط القيم.
// بنية شبه برمجية
if Recipe_Index < 0 then Recipe_Index := 0;
if Recipe_Index > 49 then Recipe_Index := 49;
if IndexChanged or LoadPressed then
COP(Recipe_Storage[Recipe_Index], Recipe_Display, 1);
if SavePressed then
COP(Recipe_Display, Recipe_Storage[Recipe_Index], 1);
شاشة وصفات HMI مرتبطة فقط بـ Recipe_Display، مع إجراءات التحميل/الحفظ التي تستدعي إجراءات COP في المتحكّم.
مسار الحفظ والاحتفاظ وسلوك التنزيل
عند الحفظ، انسخ Recipe_Display مرة أخرى إلى Recipe_Storage[Recipe_Index]. وبما أن Recipe_Storage موجودة ضمن Tags المتحكّم، فإن القيم تستمر عبر دورة فصل الطاقة وتشغيلها عندما يكون المشروع مهيأً للاحتفاظ الطبيعي بالـTags. كما تُحفظ البيانات عبر التنزيل عند اختيار الاحتفاظ بقيم الـTags؛ لذا تعامل مع مربع الاختيار هذا باعتباره جزءًا من إجراء التشغيل القياسي للوصفات، وليس خيارًا ترفيهيًا. يجب أن يفهم المشغّلون أن تنزيل مشروع مع تفعيل خيار «إعادة تهيئة الـTags» سيمحو الوصفات التي جرى ضبطها بعناية، ما لم توجد نسخة احتياطية غير متصلة.
تستحق عمليات استيراد CSV قدرًا من الحذر. إذ تنشئ العديد من أدوات HMI أو أدوات Excel إلى Tag أسماء الـTags دون تحديث قيم الأعضاء داخل UDTs المتداخلة بشكل موثوق، ولا سيما عندما تختلف عناوين الأعمدة عن أسماء أعضاء UDT. فضّل إجراء استيراد صريحًا يتحقق من كل حقل، أو أعد التحميل من ملف L5X أو تصدير Tags معروف بصحته بعد إجراء التعديلات المجمعة. لا تفترض أن ظهور لافتة خضراء تفيد «اكتمل الاستيراد» يعني أن Recipe_Storage[n].Setpoint أصبحت تساوي خلية جدول البيانات.
| Tag | النوع | هل يرتبط بـHMI؟ | الغرض |
|---|---|---|---|
| Recipe_Storage | UDT[50] | لا | أرشيف وصفات غير متطاير |
| Recipe_Display | UDT | نعم فقط | مخزن تعديل مؤقت للمشغّل |
| Recipe_Index | DINT | نعم (محدِّد) | الخانة النشطة 0–49 |
إرشادات واجهة HMI
- وفّر زري تحميل وحفظ على شكل بتّات لحظية منفصلة تتولى وحدة التحكّم معالجتها، بدلًا من الكتابة المباشرة إلى المصفوفة من اللوحة.
- اعرض الفهرس المقيّد وحقلًا للقراءة فقط باسم «الاسم المخزن» يُنسخ من UDT العرض، حتى يتأكد المشغّلون من الخانة النشطة.
- امنع الحفظ أثناء وجود الآلة في دورة تشغيل إذا كانت أعضاء الوصفة تؤثر في الحركة أو قيم الضبط الحرارية أثناء الدفعة.
- سجّل أحداث الحفظ مع معرّف المشغّل والفهرس لضمان إمكانية التتبع في خطوط الإنتاج الخاضعة للرقابة.
التحقق من حدود الفهرس والتنزيلات المحفوظة
اختبر النظام بتحميل الخانة 0، وتعديل قيمة مميِّزة في Recipe_Display، والحفظ، وتغيير الفهرس إلى 1، ثم العودة إلى 0 وإجراء التحميل مرة أخرى. يجب أن تظهر القيمة المميِّزة مجددًا فقط إذا نُفّذ الحفظ. افصل الطاقة عن المتحكّم ثم أعد تشغيله، وتحقق من أن Recipe_Storage لا تزال تحتوي على القيمة المميِّزة. أرسل فهرسًا خارج النطاق من HMI وتحقق من تطبيق التقييد. جرّب استيراد CSV على نظام احتياطي وقارن الأعضاء واحدًا تلو الآخر مع الملف قبل الوثوق بهذا المسار في الإنتاج.
تجنب ربط اللوحة بالمسار Recipe_Storage[Recipe_Index].Member. فعنونة HMI غير المباشرة داخل المصفوفات أصعب في التدقيق، وتفتح المجال للكتابة في الخانة الخطأ عندما يتم تحديث Tag الفهرس والشاشة بمعدلين مختلفين. يتوسع نمط UDT العرض بسلاسة عندما توسّع UDT لاحقًا، أو تضيف مستويات أمان، أو تنقل نموذج الوصفة نفسه عبر خلايا أنظمة PLC وPAC متعددة تشترك في سير عمل موحّد للمشغّل.
نبذة عن المؤلف
Mark Townsend | مهندس أتمتة أول – أنظمة Allen-Bradley
Mark Townsend مهندس أتمتة أول لديه أكثر من 18 عامًا من الخبرة في منصات Allen-Bradley، تشمل ControlLogix وCompactLogix وSLC-500 القديمة. ويركز عمله اليومي على منطق RSLogix / Studio 5000 وتجهيز واجهات HMI باستخدام FactoryTalk View ضمن أساطيل قديمة ومختلطة.