مقالة منهجية

بروتوكول للتوليد التلقائي لواجهات قائمة على الويب لتطبيقات LabVIEW باستخدام بروتوكول التشغيل البيني عن بُعد

158 مشاهدة

DOI:

10.3791/72765

أغسطس 14, 2026

في هذه المقالة

ملخص

تتحقق هذه الدراسة من صحة التوليد التلقائي لواجهة مستخدم الويب المستند إلى بروتوكول التوافق التشغيلي عن بُعد (RIP) مع نظامين متميزين من أنظمة LabVIEW — نموذج مروحة ونموذج للتحكم في موضع محرك تيار مستمر — كما توفر إجراءً قابلاً للتكرار لبناء كلا المثالين وتسجيلهما ونشرهما واختبارهما.

الملخص

تتيح المنصات التجريبية عن بُعد الوصول إلى نماذج المحاكاة المحلية أو الأجهزة المادية عبر الشبكة، إلا أن الواجهات الأمامية التقليدية للويب تتطلب عادةً صفحة منفصلة، وتخطيط تحكم، ومنطق اتصال بيانات لكل تجربة، مما يزيد من تكاليف التطوير. يعمل هذا البحث على التحقق من صحة سير عمل معتمد لتوليد واجهة مستخدم (UI) للويب تلقائيًا من أدوات LabVIEW الافتراضية (VIs) باستخدام بروتوكول التشغيل البيني عن بُعد (RIP)، ويوفر بروتوكولاً قابلاً للتكرار لتنفيذه. يقوم سير العمل ببناء أدوات LabVIEW VIs التي تحدد عناصر التحكم في الإدخال ومؤشرات الإخراج على اللوحة الأمامية، ثم يسجل كل أداة VI في تكوين خادم RIP، ويقرأ البيانات الوصفية للمتغيرات الناتجة، ويولد عناصر تحكم الويب وشاشات الإخراج المقابلة لها. ويُستخدم Caddy كوكيل عكسي لتوحيد مسار الملفات الثابتة للواجهة الأمامية ومسار طلب واجهة برمجة تطبيقات (API) الخاصة بـ RIP. تم تقييم سير العمل باستخدام نظامين متميزين: نموذج لسرعة المروحة، ونموذج تحكم تناسبي تكاملي تفاضلي (PID) لموضع محرك التيار المستمر (DC). وفي كلتا الحالتين، تحدد صفحة الويب المتغيرات المكشوفة، وتكتب مدخلات المستخدم في الواجهة الخلفية لـ LabVIEW، وتقرأ مخرجات النموذج، وتولد الواجهة من البيانات الوصفية لـ RIP. تؤكد هذه النتائج صحة عملية توليد واجهة المستخدم التلقائية نفسها عبر نظامين ديناميكيين مختلفين، وتوثق الخطوات المطلوبة لإعادة تنفيذها.

المقدمة

مع تطور التجارب عن بُعد، والتدريس عبر الإنترنت، وتقنيات إنترنت الأشياء، أصبح توفير الوصول القائم على الويب إلى نماذج المحاكاة المحلية أو الأجهزة التجريبية توجهاً هاماً لتطوير المنصات التجريبية1,2,3,4. وقد دمجت الأعمال الحديثة بشكل أكبر المختبرات المجهزة بتقنيات إنترنت الأشياء مع التعلم القائم على المشاريع والوصول المحلي أو عن بُعد، مما يبرهن على التطوير المستمر لمنصات تجريبية مرنة ومرتبطة شبكياً في التعليم الهندسي5. وفيما يتعلق بتجارب أنظمة التحكم، يحتاج المستخدمون عادةً إلى ضبط معاملات الإدخال في المتصفح ومراقبة حالات الإخراج في الوقت الفعلي6,7. وتتطلب الطرق التقليدية عادةً صفحة ويب منفصلة، ومنطق ربط تحكم، وواجهة اتصال بيانات لكل كائن تجريبي8,9. وعندما تتغير المتغيرات في النموذج الخلفي، غالباً ما يجب تعديل الصفحة الأمامية وفقاً لذلك، مما يتسبب في أعمال تطوير متكررة وكبيرة ويحد من التوسع السريع للمنصة التجريبية.

يوفر بروتوكول التشغيل البيني عن بُعد (RIP) طبقة برمجيات وسيطة بين النماذج التجريبية في الخلفية والواجهات الأمامية للويب10,11. في نهج التوليد التلقائي لواجهة المستخدم القائم على RIP والموصوف في أعمال سابقة، يوفر خادم RIP بيانات وصفية لكل تجربة، بما في ذلك أسماء المتغيرات، وسمات الإدخال/الإخراج، وأنواع البيانات، والقيم الدنيا، والقيم القصوى، والدقة، والأوصاف، وطرق القراءة/الكتابة المتاحة11. ويمكن لعميل الويب بعد ذلك استخدام هذه البيانات الوصفية لإنشاء عناصر HTML المقابلة، مثل التسميات، وحقول الإدخال الرقمية، وأشرطة التمرير، وعناصر التحكم البوليانية، وشاشات العرض للإخراج، وذلك أثناء تحميل الصفحة أو تحديثها11. ولا يقوم البروتوكول الحالي بإعادة تنفيذ أو إعادة تعريف مواصفات RIP، بل يستخدم خدمة RIP مفتوحة المصدر الحالية ومنطق توليد واجهة المستخدم من البيانات الوصفية إلى HTML القائم على RIP كأساس للاتصال وتوليد الواجهة، ويركز على البناء القابل للتكرار، والتسجيل، ونشر الوكيل، والتحقق من مثالين لبرنامج LabVIEW VI.

مقارنةً بتطوير واجهات الويب المخصصة التقليدية، يقلل التوليد التلقائي لواجهة المستخدم القائم على RIP من الحاجة إلى تنفيذ تخطيطات التحكم، ومنطق ربط المتغيرات، ووظائف الاتصال الأساسية عندما تظهر تجارب LabVIEW متعددة متغيرات إدخال وإخراج قياسية مماثلة8,9,10,11. وبعد تسجيل VI جديد وتوفر متغيراته لخادم RIP، يمكن إعادة استخدام منطق قراءة البيانات الوصفية وتوليد عناصر التحكم ذاته لبناء واجهة الويب الأساسية10,11. وتعد هذه الميزة مفيدة للنشر السريع، والعروض التوضيحية التعليمية، ومنصات المختبرات عن بُعد التي تتطلب وصولاً متسقاً إلى عدة تجارب متشابهة3,8,9. ومع ذلك، فإن الواجهة المولدة تلقائياً تعاني أيضاً من بعض القيود؛ فهي لا تستنتج العلاقات الفيزيائية بين المتغيرات بشكل كامل، ولا تحدد تعيينات المخططات تلقائياً، ولا تصمم تصورات مرئية أو تفاعلات أمان خاصة بالمجال11. بناءً على ذلك، يظل تطوير واجهة الويب يدوياً هو الخيار المفضل عندما تتطلب التجربة رسومات مخصصة للغاية، أو تدفقات عمل معقدة للمستخدم، أو تصورات مرئية متقدمة، أو أقفال أمان للأجهزة، أو تحكيماً في الكتابة متعدد المستخدمين.

تم تلخيص سير العمل العام للبروتوكول في الشكل 1. في سير العمل هذا، تقوم أداة LabVIEW VI أولاً بتحديد عناصر التحكم في المدخلات ومؤشرات المخرجات المطلوبة على اللوحة الأمامية (Front Panel). ثم يتم تسجيل أداة VI في تكوين خادم RIP من خلال تحديد اسم التجربة ومسار أداة VI. بعد التسجيل، يقرأ خادم RIP البيانات الوصفية للتجربة المختارة ويوفر إمكانية القراءة والكتابة للمتغيرات المتاحة. وتستخدم صفحة الويب XHTML البيانات الوصفية المسترجعة لإنشاء عناصر التحكم في المدخلات وشاشات العرض للمخرجات المقابلة تلقائياً، بينما يوفر Caddy مسار وصول موحد لصفحة الويب الثابتة ومسارات اتصال RIP. تم استخدام نماذج المروحة ومحرك التيار المباشر في هذه الدراسة كتطبيقين لسير العمل نفسه. بالنسبة لتجارب LabVIEW الأخرى التي توفر متغيرات قياسية ورقمية ومنطقية (Boolean) متوافقة، يمكن للمطورين اتباع سير عمل "البناء-التسجيل-النشر-التحقق" نفسه لإنشاء واجهة ويب مُولدة تلقائياً، مع إضافة تصورات خاصة بالتجربة، أو منطق سلامة، أو معالجة بيانات معقدة عند الحاجة.

لا يقترح هذا المقال بنية جديدة لـ RIP أو يوسع نطاق أنواع البيانات المدعومة بالفعل بواسطة RIP. بدلاً من ذلك، يستخدم RIP كآلية قائمة على البيانات الوصفية والاتصالات لإنشاء واجهة المستخدم (UI)، ويركز على التحقق من صحة العملية نفسها باستخدام نظامين مختلفين من LabVIEW مع توثيق بروتوكول تنفيذ قابل للتكرار. وقد قدم عمل سابق طريقة أساسية للتوليد التلقائي لواجهة المستخدم على الويب بناءً على البيانات الوصفية لـ RIP واستخدم تجربة محرك سيرفو عبر الإنترنت كدراسة حالة11. كما تم الإبلاغ في دراسات سابقة عن بنيات للمختبرات عن بُعد مفعلة عبر الويب تجمع بين الواجهات التفاعلية والبرمجيات الهندسية وLabVIEW9,12. ومع ذلك، أثناء إعادة الإنتاج العملي، تأثرت بعض نماذج LabVIEW في الحالة الأصلية بإصدار البرمجيات وتوافق الوحدات، مما جعل من الصعب استخدامها مباشرة في بيئة أحدث. لذلك، يقوم العمل الحالي بإعادة بناء اثنين من أدوات LabVIEW الافتراضية (VIs) المتوافقة في الخلفية—نموذج مروحة ونموذج تحكم تناسبي تكاملي تفاضلي (PID) لموضع محرك التيار المستمر (DC)—ويطبق عملية إنشاء واجهة المستخدم المعتمدة على البيانات الوصفية نفسها على كليهما. وتتمثل المساهمة في التحقق من صحة سير عمل RIP المعتمد عبر أنظمة مختلفة وتوفير بروتوكول مفصل لإعادة إنتاج هذه العملية، بدلاً من توسيع عمومية RIP.

المستخدمون المستهدفون لهذا البروتوكول هم الباحثون، والمعلمون، ومطورو المختبرات الذين يستخدمون بالفعل أدوات LabVIEW VIs ويحتاجون إلى إتاحة نماذج المحاكاة أو الأنظمة التجريبية منخفضة المخاطر عبر متصفح الويب دون الحاجة إلى تنفيذ واجهة أمامية مخصصة وكاملة لكل نموذج بشكل مستقل. يعد هذا البروتوكول مناسباً بشكل خاص للتجارب التي تستخدم المتغيرات الرقمية والمنطقية (Boolean) القياسية، وتعديل المعاملات، ومراقبة الحالة في الوقت الفعلي10,11. وهو أقل ملاءمة كحل مستقل للتجارب التي تتطلب هياكل بيانات معقدة، أو تصورات بصرية متخصصة، أو أقفال أمان صارمة للأجهزة، أو تحكيم كتابة متعدد المستخدمين11. الهدف من هذا العمل هو التحقق من صحة التوليد التلقائي لواجهة المستخدم عبر الويب القائمة على RIP باستخدام نظامين مختلفين من LabVIEW، وتوفير بروتوكول كامل وقابل للتكرار بدءاً من بناء VI في الخلفية وصولاً إلى التفاعل عبر المتصفح. يتضمن البروتوكول تعريف متغيرات الإدخال والإخراج، وتسجيل التجربة في خادم RIP Server، وتوليد واجهة المستخدم بناءً على البيانات الوصفية (metadata)، ونشر وكيل Caddy proxy، والتحقق من القراءة/الكتابة عن بُعد. يوضح تطبيق سير العمل نفسه على نماذج المروحة ومحرك التيار المستمر (DC motor) أن العملية المحددة يمكن تكرارها دون الحاجة إلى إعادة كتابة واجهة ويب أمامية كاملة يدوياً لكل مثال9,10,11.

البروتوكول

أتمم الخطوات التالية لبناء وتسجيل ونشر والتحقق من تجربتين في LabVIEW يمكن الوصول إليهما عبر RIP، وذلك باتباع سير العمل الموضح في الشكل 1. جميع الأدوات والمنصات المستخدمة في هذه الدراسة مدرجة في جدول المواد.

1. بناء ونشر تجربة نموذج المروحة

  1. قم ببناء نموذج المروحة VI.
    1. افتح برنامج LabVIEW، وأنشئ VI جديداً، واحفظ الملف باسم fengshan.vi. احفظ الـ VI في أي دليل يمكن لعملية RIP WebService الوصول إليه. يُستخدم مجلد Private كمجلد مثال فقط وليس مبرمجاً بشكل ثابت في RIP. أدخل المسار الفعلي لـ VI المحدد أثناء عملية تسجيل تجربة RIP.
    2. أضف عناصر تحكم الإدخال الخاصة بنموذج المروحة في اللوحة الأمامية. في هذا المثال، قم بتسمية عناصر تحكم الإدخال تفعيل, تعديل عرض النبضة, الحمل، تاو، أقصى سرعة دوران، و اضطرابضبط تمكين كعنصر تحكم منطقي (Boolean control)، وضبط تعديل عرض النبضة (PWM)، الحمل، تاو، أقصى عدد دورات في الدقيقة (KMaxRPM)، و اضطراب عناصر تحكم رقمية من نوع الفاصلة العائمة مزدوجة الدقة (DBL). انظر الجدول التكميلي 1 للمعنى الفيزيائي ودور النموذج لمتغيرات المروحة.
    3. أضف مؤشرات المخرجات لنموذج المروحة. في هذا المثال، قم بتسمية مؤشرات المخرجات السرعة بالدورة في الدقيقة، السرعة الثابتة بالدورة في الدقيقة، الزمن بالثانية، السرعة المعيارية، التيار بالأمبير، و PowerWاضبط جميع مؤشرات المخرجات كمؤشرات DBL.
      ​ملاحظة: الجدول 1 يصف المعنى الفيزيائي والدور النموذجي لمتغيرات المخرجات هذه. تظهر اللوحة الأمامية المكتملة للمروحة في الشكل 2أسماء المتغيرات، ونطاقاتها، وأحجام الخطوات الموضحة في الجدول 1 صف المثالين المُنفذين في هذا البروتوكول. فهما ليسا من المتطلبات المبرمجة مسبقاً في بروتوكول RIP، حيث يمكن للمطورين في تجارب LabVIEW الأخرى تحديد أسماء متغيرات وخصائص رقمية مختلفة للوحة الواجهة الأمامية (Front Panel). ويقوم خادم RIP بقراءة أسماء المتغيرات الفعلية، وأنواع البيانات، وسمات الإدخال/الإخراج، والخصائص الرقمية المتاحة من البيانات الوصفية لـ VI، ومن ثم تقوم صفحة الويب بإنشاء عناصر التحكم والعروض المقابلة بناءً على البيانات الوصفية المسترجعة.
    4. أضف حلقة "While" إلى المخطط الكتلي. أضف مسجلي إزاحة لتخزين السرعة_السابقة و الوقت السابق، وقم بتهيئة كلتا القيمتين إلى 0.
    5. أضف عقدة صيغة (Formula Node) داخل حلقة While. قم بتوصيل تمكين، تعديل عرض النبضة، الحمل، تاو، أقصى عدد دورات في الدقيقة، الاضطراب، السرعة السابقة، و الوقت السابق إلى أطراف الإدخال اليسرى في عقدة الصيغة (Formula Node)، وقم بضبط SteadyRPM، speed_next، SpeedNorm، CurrentA، PowerW، و الوقت التالي كأطراف إخراج يمنى.
    6. بناء الـ تمكين منطق التحكم خارج عقدة الصيغة. استخدم تفعيل كإشارة اختيار بحيث u = تعديل عرض النبضة (PWM) متى تفعيل صحيح و u = 0 متى تفعيل خطأ.
    7. أدخل رمز طراز المروحة في عقدة الصيغة. استخدم هذا الرمز لحساب السرعة في الحالة المستقرة، والسرعة الفعلية، والسرعة المعيارية، والتيار، والقدرة، ووقت التشغيل؛ راجع ملف البرمجة التكميلي 1 للحصول على الرمز كاملاً.
    8. قم بتوصيل التسريع التالي مخرجات عقدة الصيغة (Formula Node) إلى السرعة (دورة في الدقيقة) مؤشر، وتوصيل التالي_سريع بالعودة إلى مسجل الإزاحة لليمين الخاص بـ السرعة_السابقةوصّل ثبات عدد الدورات في الدقيقة (SteadyRPM) إلى الـ ثبات عدد الدورات في الدقيقة (SteadyRPM) كاشف
    9. اتصال الوقت التالي إلى الـ TimeS مؤشر، وربط الوقت التالي بالعودة إلى مسجل الإزاحة اليميني لـ الوقت السابقتوصيل SpeedNorm، CurrentA، و PowerW إلى مؤشرات المخرجات المقابلة.
    10. أضف دالة انتظار (Wait function) داخل حلقة While، واضبط وقت الانتظار على 50 مللي ثانية. أضف زر إيقاف محلي (Stop Local button) وقم بتوصيله بالطرف الشرطي لحلقة While.
    11. احفظ الملف fengshan.vi. يظهر المخطط الكتلي (Block Diagram) المكتمل للمروحة في الشكل 3.
      نقطة توقف: بعد حفظ واجهة البرنامج الافتراضية (VI) المكتملة للمروحة، يمكن إيقاف سير العمل. استأنف العمل لاحقاً عن طريق إعادة فتح واجهة البرنامج الافتراضية المحفوظة والتأكد من أن جميع عناصر التحكم والمؤشرات في اللوحة الأمامية (Front Panel) وجميع توصيلات المخطط الكتلي (Block Diagram) لا تزال موجودة.
  2. قم بتسجيل تجربة المروحة في خادم RIP.
    1. افتح ملف RIPWebService.lvproj في مستكشف مشاريع LabVIEW (LabVIEW Project Explorer)
      .
    2. افتح ملف Configuration.vi من شجرة المشروع وحدد موقع جدول تهيئة التجربة.
    3. أضف صفاً جديداً للتجربة. اجعل الاسم fan. حدد المسار الكامل لملف fengshan.vi المحفوظ. تظهر حقول التسجيل الخاصة بتجربة fan في الشكل 4.
    4. املأ حقول التكوين المتبقية. عيّن "المؤلفون" ليكون مؤلف التجربة، و"الكلمات المفتاحية" لتكون المروحة، و"الوصف" ليكون نموذج سرعة المروحة، و"تردد أخذ العينات" ليكون 200.
    5. من قائمة LabVIEW، اختر تحرير > تعيين القيم الحالية كقيم افتراضية.vi حفظ التكوين.
    6. أعد تشغيل خدمة الويب RIP (RIP WebService)، وتأكد من أن تجربة المروحة لا تزال مدرجة في واجهة التكوين (Configuration interface) بعد إعادة التشغيل.
      ملاحظة: اسم التجربة حساس لحالة الأحرف. يجب أن تتطابق قيمة fan في تكوين RIP تماماً مع معرف التجربة (experiment ID) المستخدم في ملف XHTML الخاص بالواجهة الأمامية. لنشر برنامج LabVIEW VI آخر بنفس منطق إنشاء واجهة المستخدم التلقائي، أضف إدخال تجربة جديد في تكوين RIP، وحدد قيمة Name جديدة، واضبط Path على ملف VI المقابل. بعد ذلك، استخدم قيمة Name نفسها كمعرف للتجربة في ملف XHTML. لا يلزم إعادة كتابة صفحة الواجهة الأمامية لكل متغير.
      ​نقطة توقف: بعد حفظ ملف Configuration.vi وجعل القيم الحالية هي القيم الافتراضية، يمكن إيقاف سير العمل. استأنف العمل لاحقاً عن طريق إعادة تشغيل RIP WebService والتأكد من أن تجربة المروحة لا تزال مسجلة.
  3. قم بإعداد الصفحة الأمامية لتجربة المروحة.
    1. ضع ملف Fan_Automatic_UI.xhtml في دليل Client المستخدم كدليل جذر للواجهة الأمامية.
    2. افتح ملف Fan_Automatic_UI.xhtml باستخدام محرر نصوص.
    3. حدد متغير معرف التجربة (experiment ID) في قسم النص البرمجي (script) واضبطه على fan.
      ملاحظة: يجب أن تتطابق هذه القيمة تماماً مع حقل الاسم الخاص بتجربة المروحة في تكوين RIP. تظهر إعدادات معرف التجربة ومنطق إنشاء واجهة المستخدم القائمة على البيانات الوصفية المشتركة لملفات الواجهة الأمامية XHTML في الشكل 5.
    4. تحقق من أن الصفحة تحصل على أصل الوصول الحالي من خلال window.location.origin، وتطلب البيانات الوصفية للتجربة عبر rip.info()، ويمرر البيانات الوصفية المسترجعة إلى بناء واجهة المستخدم تلقائياً().
      ملاحظة: يجب ألا يتم ترميز أسماء متغيرات المروحة أو نطاقاتها أو أحجام الخطوات يدويًا في الصفحة. وبدلاً من ذلك، يتم إنشاء المتغيرات القابلة للكتابة من قائمة الملفات القابلة للكتابة في البيانات الوصفية، ويتم توليد متغيرات قابلة للقراءة من قائمة المواد القابلة للقراءة لبيانات الميتا، ويتم الحصول على السمات الرقمية مثل الحد الأدنى (min) والحد الأقصى (max) والخطوة (step) من البيانات الوصفية التي يعيدها خادم RIP.
    5. احفظ ملف Fan_Automatic_UI.xhtml.
      ​ملاحظة: لاستخدام منطق التوليد ذاته للواجهة الأمامية لبرنامج LabVIEW VI آخر، قم بتعيين معرف تجربة جديد في ملف XHTML، وقم بتسجيل اسم التجربة ومسار VI المقابلين في تكوين RIP. يتم توليد عناصر التحكم الويب وشاشات العرض بناءً على البيانات الوصفية التي ترجعها التجربة المختارة.
  4. قم بتكوين مسار الوصول إلى حامل العينات (Caddy) الخاص بتجربة المروحة.
    1. افتح ملف Caddyfile باستخدام محرر نصوص.
    2. قم بتعيين الدليل الجذري للواجهة الأمامية (front-end root directory) إلى دليل العميل (Client directory) الذي يحتوي على الملف Fan_Automatic_UI.xhtml.
    3. اختر منفذاً محلياً غير مستخدم لـ Caddy لتوفير وصول المتصفح إلى صفحة الويب ومسارات RIP. في هذا البروتوكول، تم استخدام المنفذ 8090 كمنفذ وصول وكيل كمثال.
      ملاحظة: المنفذ 8090 غير مطلوب لتشغيل RIP أو Caddy. إذا كان المنفذ 8090 مشغولاً، فاستبدله بمنفذ محلي آخر غير مستخدم، واستخدم المنفذ نفسه في عنوان المتصفح.
    4. أضف مساراً يعيد توجيه /fan إلى Fan_Automatic_UI.xhtml.
    5. حدد منفذ خدمة الويب RIP (RIP WebService port) الذي تم تكوينه في برنامج LabVIEW. في هذا البروتوكول، يتم استخدام http://localhost:8001 كعنوان لخدمة الويب RIP.
      ملاحظة: المنفذ 8001 هو منفذ الواجهة الخلفية لخدمة الويب LabVIEW/RIP المستخدم في بيئة الاختبار. ويمكن تغييره في تكوينات خدمة الويب LabVIEW/RIP. وفي حال استخدام منفذ مختلف، استبدل http://localhost:8001 في ملف Caddyfile بعنوان خدمة الويب RIP المقابل.
    6. أضف قاعدة وكيل عكسي (reverse proxy rule) تقوم بتوجيه طلبات /RIP/SSE* إلى عنوان خدمة ويب RIP (RIP WebService)، مثل http://localhost:8001.
    7. أضف قاعدة وكيل عكسي (reverse proxy) تقوم بتوجيه الطلبات التي تبدأ بـ /RIP* إلى عنوان خدمة الويب RIP WebService، مثل http://localhost:8001. يظهر تكوين ملف Caddyfile في الشكل 6.
    8. افتح موجه الأوامر (Command Prompt) على نظام ويندوز. انتقل إلى دليل تحميل أو تثبيت Caddy المحلي عن طريق إدخال الأمر التالي:
      cd /d D:\caddy
      ملاحظة: في هذا البروتوكول، يمثل D:\caddy مسار تنزيل أو تثبيت Caddy المحلي المستخدم في بيئة الاختبار. إذا كان Caddy مخزناً في دليل آخر، استبدل D:\caddy بالمسار المحلي المقابل.
    9. ابدأ تشغيل Caddy باستخدام ملف Caddyfile المحدد عن طريق إدخال الأمر التالي:
      caddy.exe run --config Caddyfile
    10. تحقق من أن Caddy يبدأ العمل دون الإبلاغ عن خطأ في التكوين. افتح الرابط http://localhost:8090/fan في متصفح الويب وتحقق من إنشاء واجهة المستخدم الرسومية لـ fan، كما هو موضح في الشكل 7.
      ​ملاحظة: في حال ظهور خطأ 502 في المتصفح، تأكد من أن خدمة RIP WebService قيد التشغيل، وأن منفذ RIP WebService في LabVIEW يتطابق مع عنوان الوكيل العكسي (reverse proxy) في ملف Caddyfile، وأن منفذ وصول Caddy المحدد غير مشغول.
  5. تحقق من نتائج تشغيل تجربة المروحة.
    1. تحقق من أن الصفحة الأمامية تولد تلقائياً الـ تمكين, تعديل عرض النبضة (PWM)، الحمل، تاو (Tau)، أقصى عدد دورات في الدقيقة (KMaxRPM)، و اضطراب ضوابط الإدخال.
    2. تحقق من أن الصفحة الأمامية تعرض الـ السرعة-دورة/دقيقة، السرعة الثابتة-دورة/دقيقة، الزمن-ثانية، السرعة المعيارية، التيار-أمبير، و PowerW متغيرات المخرجات.
    3. ضبط تعديل عرض النبضة وملاحظة ما إذا كان السرعة (دورة في الدقيقة) يزداد مع تعديل عرض النبضة يزداد وينقص مع تعديل عرض النبضة ينخفض.
    4. اضبط الحمل ولاحظ ما إذا كان ثبات دورات في الدقيقة و السرعة (دورة في الدقيقة) تنخفض مع زيادة الحمل.
    5. اضبط الاضطراب ولاحظ ما إذا كان السرعة (دورة في الدقيقة)، التيار (أمبير)، و PowerW التغير استجابةً لمدخلات الاضطراب.
    6. تحقق من أن TimeS يستمر في الزيادة، مما يؤكد أن مروحة الطرف الخلفي VI تعمل بشكل مستمر.

2. بناء ونشر تجربة التحكم في الموضع باستخدام متحكم PID لمحرك التيار المستمر

  1. بناء نموذج VI للتحكم في موضع محرك التيار المستمر (DC motor) باستخدام PID.
    1. افتح LabVIEW، وأنشئ VI جديداً، واحفظ الملف باسم Motor.vi. احفظ الـ VI في أي دليل يمكن لعملية RIP WebService الوصول إليه.
      ملاحظة: يُستخدم المجلد Private كمجلد مثال فقط وليس مدمجاً بشكل ثابت في RIP. أدخل المسار الفعلي للـ VI المحدد أثناء تسجيل تجربة RIP.
    2. في اللوحة الأمامية (Front Panel)، أضف عناصر التحكم في الإدخال لنموذج التحكم في موضع محرك التيار المستمر PID. في هذا المثال، قم بتسمية عناصر التحكم في الإدخال Setpoint, Kc, Ti, Td, Disturbance، و Reset control. اضبط Setpoint, Kc, Ti, Td, و Disturbance كعناصر تحكم عددية من نوع DBL، واضبط Reset control كعنصر تحكم منطقي (Boolean).
      ملاحظة: يوضح الجدول 1 المعنى الفيزيائي، ودور النموذج، والنطاق الموصى به للمتغيرات المستخدمة في هذا المثال.
    3. أضف مؤشرات الإخراج لنموذج التحكم في موضع محرك التيار المستمر PID. في هذا المثال، قم بتسمية مؤشرات الإخراج Position, Voltage, Time, و Measured angular velocity. اضبط جميع مؤشرات الإخراج كـ DBL indicators. يوضح الجدول 1 المعنى الفيزيائي ودور النموذج لهذه متغيرات الإخراج. تظهر اللوحة الأمامية المكتملة للمحرك في الشكل 8.
      ملاحظة: تصف أسماء المتغيرات والنطاقات المدرجة في الجدول 1 المثالين اللذين تم تنفيذهما في هذا البروتوكول. وهي ليست متطلبات ثابتة لسير عمل توليد واجهة المستخدم التلقائي القائم على RIP. عند استخدام LabVIEW VI آخر، يقرأ RIP أسماء المتغيرات الفعلية، وأنواع البيانات، وسمات الإدخال/الإخراج، والخصائص العددية المتاحة من البيانات الوصفية (metadata) للـ VI. لذلك، لا يحتاج منطق توليد الواجهة الأمامية إلى ترميز أسماء المتغيرات أو القيم القصوى أو القيم الدنيا أو أحجام الخطوات لكل تجربة بشكل ثابت.
    4. أضف حلقة While Loop إلى مخطط الكتل (Block Diagram). أضف ستة سجلات إزاحة (Shift Registers) لتخزين theta, omega, im, e_prev, integ, و time, وقم بتهيئة جميع القيم الست إلى 0.
    5. أضف عقدة صيغة (Formula Node) داخل حلقة While Loop. وفقاً لمخطط نموذج التحكم في موضع محرك التيار المستمر PID الموضح في الشكل 9، استخدم عقدة الصيغة هذه كوحدة حسابية أساسية لحساب الخطأ، والتحكم في PID، وتحديد الجهد، والنموذج الكهربائي، والنموذج الميكانيكي، وتحديث الموضع.
      ملاحظة: معاملات المحرك الداخلية المستخدمة في هذا النموذج، مثل R, L, J, b, Kt, Ke, و Vmax، هي معاملات نموذج تعليمي معياري وليست معاملات معايرة لمحرك فيزيائي محدد. لقد تم اختيارها لإنتاج استجابة محاكاة مستقرة وقابلة للملاحظة تحت خطوة زمنية وحد جهد محددين، بحيث يمكن توضيح تأثيرات Setpoint, Kc, Ti, Td, و Disturbance بوضوح أثناء التشغيل عبر الويب.
    6. اضبط sp, theta, omega, im, e_prev, integ, Kc, Ti, Td, disturbance, reset, و dt كأطراف إدخال لعقدة الصيغة. اضبط theta_next, omega_next, im_next, e_next, integ_next, و voltage كأطراف إخراج لعقدة الصيغة.
    7. قم بتوصيل عنصر التحكم Setpoint بطرف الإدخال sp في عقدة الصيغة. وقم بتوصيل Kc, Ti, Td, و Disturbance بأطراف الإدخال Kc, Ti, Td, و disturbance في عقدة الصيغة، على التوالي.
    8. حول إشارة التحكم المنطقية لـ Reset control إلى إشارة عددية وقم بتوصيلها بطرف الإدخال reset في عقدة الصيغة. قم بتنفيذ إعادة ضبط الحالة عندما لا يكون reset مساوياً لـ 0، ونفذ تحكم PID وتحديث حالة المحرك عندما يكون reset مساوياً لـ 0.
    9. أضف الثابت العددي dt واضبط قيمته على 0.001 s. قم بتوصيل dt بطرف الإدخال dt لعقدة الصيغة واستخدمه لتحديث الوقت (Time).
    10. اضبط معاملات النموذج الداخلية لمحرك التيار المستمر في عقدة الصيغة. راجع الجدول التكميلي 2 لمعرفة المعنى الفيزيائي ودور النموذج لمتغيرات المحرك.
    11. أدخل كود التحكم في موضع محرك التيار المستمر PID في عقدة الصيغة. استخدم هذا الكود لتنفيذ منطق إعادة الضبط، وحساب الخطأ، وحساب حد التكامل، وحساب حد الاشتقاق، وتحكم PID، وتحديد الجهد، وتحديث التيار، وتحديث السرعة الزاوية، وتحديث الموضع؛ راجع ملفات البرمجة التكميلية للحصول على الكود الكامل.
    12. قم بتوصيل theta_next بمؤشر Position، وقم بتوصيل theta_next مرة أخرى بسجل الإزاحة الأيمن لـ theta. قم بتوصيل omega_next بمؤشر Measured angular velocity indicator، وقم بتوصيل omega_next مرة أخرى بسجل الإزاحة الأيمن لـ omega.
    13. قم بتوصيل الجهد (voltage) بمؤشر Voltage. قم بتوصيل im_next, e_next, و integ_next مرة أخرى بسجلات الإزاحة اليمنى لـ im, e_prev, و integ, على التوالي.
    14. استخدم دالة جمع (Add) خارج عقدة الصيغة لحساب time_next = time + dt. قم بتوصيل time_next بمؤشر Time، وقم بتوصيل time_next مرة أخرى بسجل الإزاحة الأيمن للوقت.
    15. أضف دالة انتظار (Wait) داخل حلقة While Loop واضبط وقت الانتظار على 1 ms. أضف زر إيقاف (Stop) وقم بتوصيله بالطرف الشرطي لحلقة While Loop.
    16. احفظ Motor.vi. يظهر مخطط الكتل المكتمل للمحرك في الشكل 10.
      نقطة توقف: بعد حفظ VI المحرك المكتمل، يمكن إيقاف سير العمل. استأنف لاحقاً عن طريق إعادة فتح الـ VI المحفوظ والتأكد من أن جميع عناصر تحكم اللوحة الأمامية والمؤشرات وتوصيلات مخطط الكتل لا تزال موجودة.
  2. تسجيل تجربة المحرك في خادم RIP Server.
    1. افتح RIPWebService.lvproj في مستكشف مشاريع LabVIEW.
    2. افتح Configuration.vi من شجرة المشروع وحدد موقع جدول تكوين التجربة.
    3. أضف صف تجربة جديد. اضبط Name على Motor. اضبط Path على المسار الكامل لملف Motor.vi المحفوظ. تظهر حقول تسجيل تجربة المحرك في الشكل 11.
    4. املأ حقول التكوين المتبقية. اضبط Authors على مؤلف التجربة، و Keywords على Motor، و Description على DC motor position control model، و Sampling Freq على 200.
    5. من قائمة LabVIEW، اختر Edit > Make Current Values Default. احفظ Configuration.vi.
    6. أعد تشغيل RIP WebService وتأكد من أن تجربة Motor لا تزال مدرجة في واجهة التكوين بعد إعادة التشغيل.
      ملاحظة: اسم التجربة حساس لحالة الأحرف. يجب أن تتطابق القيمة Motor في تكوين RIP تماماً مع معرف التجربة المستخدم في Motor_Automatic_UI.xhtml. لنشر LabVIEW VI آخر بنفس منطق توليد واجهة المستخدم التلقائية، أضف إدخال تجربة جديد في تكوين RIP، واضبط قيمة Name جديدة، واضبط Path على ملف VI المقابل. ثم استخدم نفس قيمة Name كمعرف للتجربة في ملف XHTML. لا تحتاج الصفحة الأمامية إلى إعادة كتابتها لكل متغير.
      ​نقطة توقف: بعد حفظ Configuration.vi وضبط القيم الحالية كقيم افتراضية، يمكن إيقاف سير العمل. استأنف لاحقاً عن طريق إعادة تشغيل RIP WebService والتأكد من أن تجربة Motor لا تزال مسجلة.
  3. تجهيز الصفحة الأمامية لتجربة المحرك.
    1. ضع ملف Motor_Automatic_UI.xhtml في دليل Client المستخدم كدليل جذر للواجهة الأمامية.
    2. افتح Motor_Automatic_UI.xhtml باستخدام محرر نصوص.
    3. حدد موقع متغير معرف التجربة في قسم النص البرمجي واضبطه على Motor. يجب أن تتطابق هذه القيمة تماماً مع حقل Name لتجربة المحرك في تكوين RIP. تستخدم الصفحة الأمامية للمحرك نفس منطق توليد واجهة المستخدم القائم على البيانات الوصفية الموضح في الشكل 5؛ حيث يتم تغيير معرف التجربة فقط ليتطابق مع إدخال Motor في تكوين RIP.
    4. تحقق من أن الصفحة تحتوي على منطق قراءة البيانات الوصفية لـ RIP، ومنطق توليد عناصر التحكم HTML، ودالة كتابة RIP، ودالة تحديث المخرجات.
      ملاحظة: لا ينبغي للصفحة أن تقوم بترميز أسماء متغيرات المحرك أو نطاقاتها أو أحجام خطواتها يدوياً بشكل ثابت. يتم الحصول على هذه الخصائص من البيانات الوصفية التي يعيدها خادم RIP، وفقاً لآلية تحويل البيانات الوصفية إلى HTML القائمة على RIP والموصوفة سابقاً11.
    5. احفظ Motor_Automatic_UI.xhtml.
      ​ملاحظة: لاستخدام نفس منطق توليد الواجهة الأمامية لـ LabVIEW VI آخر، اضبط معرف تجربة جديد في ملف XHTML وسجل اسم التجربة (Name) ومسار الـ VI (Path) المقابل في تكوين RIP. يتم توليد عناصر تحكم الويب وعروض المخرجات وفقاً للبيانات الوصفية التي تعيدها التجربة المختارة.
  4. تكوين مسار وصول Caddy لتجربة المحرك.
    1. افتح Caddyfile باستخدام محرر نصوص.
    2. اضبط دليل الجذر للواجهة الأمامية على دليل Client الذي يحتوي على Motor_Automatic_UI.xhtml.
    3. اختر منفذ محلي غير مستخدم لـ Caddy لتوفير وصول المتصفح إلى صفحة الويب ومسارات RIP. في هذا البروتوكول، يتم استخدام المنفذ 8090 كمنفذ وصول وكيل مثال.
      ملاحظة: المنفذ 8090 غير مطلوب بواسطة RIP أو Caddy. إذا كان المنفذ 8090 مشغولاً، استبدله بمنفذ محلي آخر غير مستخدم واستخدم نفس المنفذ في عنوان المتصفح.
    4. أضف مساراً يعيد توجيه /motor إلى Motor_Automatic_UI.xhtml.
    5. حدد منفذ RIP WebService الذي تم تكوينه في LabVIEW. في هذا البروتوكول، يتم استخدام http://localhost:8001 كعنوان لـ RIP WebService.
      ملاحظة: المنفذ 8001 هو منفذ LabVIEW/RIP WebService الخلفي المستخدم في بيئة الاختبار. يمكن تغييره في تكوين LabVIEW/RIP WebService. إذا تم استخدام منفذ مختلف، استبدل http://localhost:8001 في Caddyfile بعنوان RIP WebService المقابل.
    6. أضف قاعدة وكيل عكسي (reverse proxy) ترسل طلبات /RIP/SSE* إلى عنوان RIP WebService، مثل http://localhost:8001.
    7. أضف قاعدة وكيل عكسي ترسل طلبات /RIP* إلى عنوان RIP WebService، مثل http://localhost:8001. يظهر تكوين Caddyfile في الشكل 6.
    8. افتح موجه الأوامر (Command Prompt) في Windows. انتقل إلى دليل تنزيل أو تثبيت Caddy المحلي عن طريق إدخال الأمر التالي:
      cd /d D:\caddy
      ملاحظة: في هذا البروتوكول، D:\caddy هو مسار تنزيل أو تثبيت Caddy المحلي المستخدم في بيئة الاختبار. إذا كان Caddy مخزناً في دليل آخر، استبدل D:\caddy بالمسار المحلي المقابل.
    9. ابدأ Caddy باستخدام Caddyfile المحدد عن طريق إدخال الأمر التالي:
      caddy.exe run --config Caddyfile
    10. تأكد من أن Caddy يبدأ دون الإبلاغ عن خطأ في التكوين. افتح http://localhost:8090/motor في متصفح الويب وتحقق من توليد واجهة مستخدم الويب للمحرك، كما هو موضح في الشكل 12.
      ​ملاحظة: إذا تم تحميل صفحة ويب المحرك ولكن قيم المخرجات لا تتحدث، فتأكد من أن RIP WebService يعمل، وأن VI المحرك قيد التنفيذ، وأن منفذ RIP WebService في LabVIEW يطابق عنوان الوكيل العكسي في Caddyfile، وأن مسار /RIP/SSE* يتم توكيله بشكل صحيح.
  5. التحقق من نتائج تشغيل تجربة المحرك.
    1. تحقق من أن الصفحة الأمامية تولد تلقائياً عناصر تحكم الإدخال Setpoint, Kc, Ti, Td, Disturbance, و Reset .
    2. تحقق من أن الصفحة الأمامية تعرض متغيرات الإخراج Position, Voltage, Time, و Measured angular velocity.
    3. اضبط Setpoint ولاحظ ما إذا كان الموضع (Position) يستجيب للتغيير في الموضع المطلوب.
    4. اضبط Kc, Ti, و Td ولاحظ ما إذا كان Voltage, Position, و Measured angular velocity تتغير.
    5. اضبط الاضطراب (disturbance) ولاحظ ما إذا كان الموضع، أو جهد التحكم، أو السرعة الزاوية المقاسة تتأثر بمدخل disturbance.
    6. انقر فوق Reset control ولاحظ ما إذا كان Position, Voltage, Measured angular velocity, والحالات الداخلية ذات الصلة تعود إلى حالاتها الأولية وفقاً لمنطق إعادة الضبط.

النتائج

بعد إكمال سير العمل الموصوف أعلاه، يمكن الوصول إلى كل من تجربة المروحة وتجربة التحكم في الموضع باستخدام PID لمحرك التيار المستمر (DC motor) من خلال الواجهة الأمامية للويب التي تم إنشاؤها تلقائياً. ويتم الاستدلال على نجاح النتيجة من خلال ثلاث ملاحظات. أولاً، تقوم صفحة الويب تلقائياً بإنشاء عناصر التحكم في الإدخال وحقول عرض المخرجات وفقاً للبيانات الوصفية للمتغيرات التي يرجعها خادم RIP. ثانياً، عندما يقوم المستخدم بتغيير متغير إدخال على صفحة الويب، يتم كتابة القيمة المعدلة إلى برنامج VI الخاص بالنظام الخلفي في LabVIEW من خلال واجهة RIP. ثالثاً، يتم إرجاع متغيرات المخرجات التي يحسبها برنامج VI في النظام الخلفي عبر RIP وتحديثها على صفحة الويب في الوقت الفعلي. بالنسبة لتجربة المروحة، بعد إدخال http://localhost:8090/fan في المتصفح، تقوم الصفحة تلقائياً بإنشاء عناصر التحكم في الإدخال وحقول المخرجات من البيانات الوصفية لـ RIP، كما هو موضح في الشكل 7. يتضمن جانب الإدخال Enable, PWM, Load, Tau, KMaxRPM, و Disturbance، بينما يعرض جانب المخرجات SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, و PowerW. وأثناء التشغيل العادي، تزداد TimeS باستمرار، مما يشير إلى أن برنامج fengshan.vi في النظام الخلفي قيد التنفيذ. وعند زيادة PWM ، تزداد SpeedRPM و SteadyRPM وفقاً لذلك. وعند زيادة Load، تنخفض سرعة المروحة لأن load يقلل من سرعة التشغيل المستقرة. وعند ضبط Disturbance، يمكن ملاحظة تغييرات مقابلة في SpeedRPM, CurrentA, و PowerW. وتؤكد هذه الملاحظات أن مدخلات جانب الويب يتم نقلها بشكل صحيح إلى النظام الخلفي لـ LabVIEW وأن المخرجات المحسوبة يتم إرجاعها إلى الواجهة الأمامية عبر RIP.

بالنسبة لتجربة التحكم في الموضع باستخدام نظام PID لمحرك التيار المستمر، بعد إدخال الرابط http://localhost:8090/motor في المتصفح، تقوم الصفحة تلقائيًا بتوليد أدوات التحكم وحقول المخرجات المقابلة من البيانات الوصفية لـ RIP، كما هو موضح في الشكل 12تضمن متغيرات الإدخال ما يلي: نقطة الضبط، ثابت الكسب، ثابت التكامل، ثابت التفاضل، الاضطرابو إعادة ضبط التحكم، وتشمل متغيرات المخرجات الموضع، والجهد الكهربائي، والزمن، و السرعة الزاوية المقاسةمتى نقطة الضبط تغير، الموضع يستجيب لقيمة الهدف الجديدة. وعندما تكون معاملات PID Kc, Ti, و Td يتم ضبطها، استجابة المخرج، التحكم الجهد الكهربائي، و السرعة الزاوية المقاسة تتغير وفقاً لذلك، مما يشير إلى أن قيم المعاملات المدخلة على صفحة الويب قد كتبت بشكل صحيح في نموذج LabVIEW الخلفي وتشارك في حسابات التحكم. وعند تفعيل "إعادة ضبط التحكم" (Reset control)، تعود متغيرات النموذج إلى حالاتها الأولية وفقاً لمنطق إعادة الضبط.

تظهر حالات فشل الاتصال وحالات التواصل من جانب المتصفح في الشكل 13، الشكل 14، الشكل 15. يوضح الشكل 13 حالة فشل الوصول من المتصفح عندما لا يكون Caddy قيد التشغيل؛ حيث يحاول المتصفح الوصول إلى http://localhost:8090/motor ولكنه يعرض رسالة ERR_CONNECTION_REFUSED، مما يشير إلى أن خدمة الوكيل المحلي غير متاحة أو أنها لا تستمع على منفذ الوصول المحدد. بينما يوضح الشكل 14 فشلاً في اتصال RIP POST بعد تحميل الصفحة، وفي هذه الحالة، يبلغ كونسول المتصفح عن خطأ 502 Bad Gateway لطلب RIP POST، مما يشير إلى أن الواجهة الأمامية قد وصلت إلى عنوان الوكيل ولكن لا يمكن توجيه الطلب بنجاح إلى الواجهة الخلفية لـ RIP WebService أو معالجته بواسطتها. وفي المقابل، يوضح الشكل 15 حالة اتصال طبيعية من جانب المتصفح، حيث تظهر أدوات مطور المتصفح تحميل الصفحة بنجاح، وطلبات RIP POST، وطلباً نشطاً من نوع SSE مع expId=fan، مما يشير إلى أن الواجهة الأمامية للويب تتواصل مع RIP WebService من خلال وكيل Caddy وتتلقى تحديثات في الوقت الفعلي عبر قناة SSE.

تُظهر نتائج المروحة والمحرك الناجحة، إلى جانب نتائج التشخيص من جهة المتصفح، أن سير عمل التوليد التلقائي لواجهة المستخدم القائم على البيانات الوصفية يمكن تكراره لتجربتين مختلفتين باستخدام LabVIEW. كما توفر هذه النتائج معايير ملحوظة للتمييز بين الاتصال الناجح وإخفاقات النشر النموذجية، بينما تمت مناقشة إجراءات استكشاف الأخطاء وإصلاحها المقابلة في قسم المناقشة.

مخطط عملية واجهة المستخدم على الويب (Web UI) الخاصة بـ LabVIEW VI، يوضح خادم RIP ووكيلي Caddy Proxy للاتصال بالبيانات.
الشكل 1الهيكل العام لنظام التجربةيتكون النظام من واجهة LabVIEW الخلفية (VI)، وخادم RIP، ووكيل Caddy، وواجهة مستخدم ويب مُنشأة تلقائيًا. توفر واجهة LabVIEW VI متغيرات النموذج، بينما يقرأ خادم RIP البيانات الوصفية للواجهة وقيم المتغيرات، ويقوم Caddy بتوحيد مسار الوصول ومعالجة الوصول عبر أصول مختلفة، فيما تقوم واجهة مستخدم الويب بإنشاء عناصر التحكم تلقائيًا. ولا يُعرض اسم Caddy وشعاره إلا لتحديد مكون خادم/وكيل الويب Caddy المستخدم في سير العمل. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط نظام التحكم في المحرك مع مخطط عدد الدورات في الدقيقة (RPM)، ومعاملات الإدخال، وتحليل بيانات المخرجات.
الشكل 2اللوحة الأمامية لـ fan VI. تحتوي اللوحة الأمامية على مفاتيح تحكم للإدخال الخاصة بـ تمكين، تعديل عرض النبضة، الحمل، تاو، أقصى سرعة دورانية من الكيلو دورة في الدقيقة، و اضطراب ومؤشرات المخرجات لـ السرعة (دورة/دقيقة)، السرعة الثابتة (دورة/دقيقة)، الزمن (ثانية)، السرعة المعيارية، التيار (أمبير)، و PowerWتم التقاط لقطة الشاشة هذه من اللوحة الأمامية (Front Panel) لملف fengshan.vi في برنامج LabVIEW 2026 ضمن البيئة التجريبية المحلية الخاصة بالمؤلفين. ولا تتضمن اللقطة أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط عقدة الصيغة (Formula Node) مع سجلات الإزاحة وحلقة
الشكل ٣مخطط صندوقي لبرنامج (VI) الخاص بالمروحة. يتم تنفيذ نموذج المروحة باستخدام حلقة While (While Loop) ومسجلات الإزاحة (Shift Registers)، تمكين المنطق، وعقدة الصيغة (Formula Node)، ومؤشرات الإخراج. تم التقاط لقطة الشاشة هذه من المخطط الكتلي (Block Diagram) لملف fengshan.vi في برنامج LabVIEW 2026 ضمن البيئة التجريبية المحلية الخاصة بالمؤلفين. ولا تتضمن لقطة الشاشة أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

واجهة LabVIEW مع إعداد نموذج المروحة، وإعدادات أخذ العينات، ومسارات الكاميرا لمراقبة النظام.
الشكل 4صفحة تكوين fan.vi. تم تسجيل تجربة المروحة في تهيئة RIP (RIP Configuration) مع اسم التجربة fan، ومسار VI الفعلي، ومعلومات الكلمات المفتاحية، والوصف، وتردد أخذ العينات. تم التقاط لقطة الشاشة هذه من واجهة تهيئة RIP المستخدمة مع LabVIEW 2026 وRIP WebService في البيئة التجريبية المحلية الخاصة بالمؤلفين. ولا تتضمن لقطة الشاشة أي بيانات لمستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مقاطع برمجية بلغة JavaScript لمنطق واجهة مستخدم تطبيقات الويب؛ طريقة إنشاء العناصر الديناميكية.
الشكل 5إعدادات معرف التجربة (Experiment ID) ومنطق توليد واجهة المستخدم القائم على البيانات الوصفية في ملفات الواجهة الأمامية بصيغة XHTML. تم التقاط لقطات الشاشة لرمز XHTML من ملفي Fan_Automatic_UI.xhtml و Motor_Automatic_UI.xhtml المفتوحين في برنامج Visual Studio Code. تستخدم صفحتا المروحة والمحرك نفس منطق قراءة البيانات الوصفية وتوليد عناصر التحكم؛ حيث تم تغيير معرف التجربة فقط ليتطابق مع حقل الاسم المقابل في تكوين RIP. تم التقاط لقطات الشاشة لرمز XHTML من ملفي Fan_Automatic_UI.xhtml و Motor_Automatic_UI.xhtml المفتوحين في برنامج Visual Studio Code في بيئة التطوير المحلية الخاصة بالمؤلفين. وقد أعد المؤلفون ملفات الرموز البرمجية هذه لهذا البروتوكول، ولا تتضمن أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط تكوين خادم Caddy مع المسارات، والوكلاء العكسيين، وإعداد منافذ الوصول.
الشكل 6تكوين ملف Caddyfileيحدد ملف Caddyfile منفذ وصول الوكيل المحلي (proxy access port)، ويضبط الدليل الجذري للواجهة الأمامية، ويعيد توجيه مساري /fan و /motor إلى ملفات XHTML المقابلة، كما يقوم بعمل وكيل عكسي (reverse-proxy) لطلبات /RIP/SSE* و /RIP* إلى منفذ خدمة الويب (WebService) الخاصة بـ LabVIEW/RIP. وقد تم التقاط لقطة شاشة لتكوينات Caddyfile من الملف المفتوح في برنامج Visual Studio Code ضمن بيئة التطوير المحلية الخاصة بالمؤلفين. قام المؤلفون بإعداد ملف Caddyfile لتهيئة Caddy كخادم ويب محلي ووكيل عكسي. ولا يتضمن الملف أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط نظام التحكم في المروحة مع منزلقات إدخال وشاشات عرض للمخرجات من أجل ضبط الأداء.
الشكل 7صفحة واجهة المستخدم الرسومية عبر الويب لبرنامج fan.vi. تم التقاط لقطة الشاشة لواجهة الويب هذه من صفحة الويب الخاصة بالمروحة والمنشورة محلياً بواسطة المؤلفين باستخدام متصفح Mozilla Firefox. تقوم الصفحة الأمامية تلقائياً بإنشاء عناصر التحكم في الإدخال وشاشات العرض للإخراج بناءً على البيانات الوصفية للمتغيرات التي يرسلها خادم RIP. تم التقاط لقطة الشاشة لواجهة الويب هذه من صفحة الويب الخاصة بالمروحة والمنشورة محلياً بواسطة المؤلفين باستخدام متصفح Mozilla Firefox. وقد تم إنشاء عناصر التحكم وحقول الإخراج المعروضة من البيانات الوصفية لـ RIP في البيئة التجريبية المحلية للمؤلفين. لا تتضمن اللقطة أي بيانات لمستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط نظام التحكم التناسبي التكاملي التفاضلي (PID) مع المحرك، وتغذية راجعة للموقع، ومخطط الاستجابة الديناميكية.
الشكل 8اللوحة الأمامية للمحرك VI. تحتوي اللوحة الأمامية على أدوات تحكم لـ نقطة الضبط، ثابت الكسب، ثابت التكامل، ثابت التفاضل، الاضطراب، و إعادة ضبط التحكم، ومؤشرات لـ الموضع، الجهد الكهربائي، الزمن، و السرعة الزاوية المقاسة. تم التقاط لقطة الشاشة هذه من اللوحة الأمامية لبرنامج Motor.vi في LabVIEW 2026 ضمن البيئة التجريبية المحلية الخاصة بالمؤلفين. ولا تتضمن أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط كتلة متحكم PID مع المعادلات؛ تدفق المدخلات والمخرجات عبر النماذج للتحكم في النظام.
الشكل 9: مخطط نموذج التحكم في الموضع باستخدام PID لمحرك التيار المستمر. يوضح المخطط مسار الإشارة بدءاً من خطأ نقطة الضبط، والتحكم التناسبي التكاملي التفاضلي (PID)، وتحديد الجهد، وتراكب الاضطرابات، والديناميكيات الكهربائية، والديناميكيات الميكانيكية، وتحديث الموضع وصولاً إلى التغذية الراجعة. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط LabVIEW لنظام تحكم يحتوي على مسجلات إزاحة (shift registers)، وعقدة صيغة (formula node) ضمن حلقة
الشكل ١٠المخطط الكتلي لبرنامج الـ VI الخاص بالمحرك. يتم تنفيذ نموذج المحرك باستخدام حلقة While، ومسجلات الإزاحة (Shift Registers)، وعقدة صيغة (Formula Node)، ومنطق التوقيت، ومؤشرات المخرجات. تم التقاط لقطة الشاشة هذه من المخطط الكتلي (Block Diagram) لبرنامج Motor.vi في LabVIEW 2026 ضمن البيئة التجريبية المحلية الخاصة بالمؤلفين. ولا تتضمن هذه اللقطة أي بيانات مستخدمين من أطراف ثالثة أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

واجهة إعداد نموذج المحرك في LabVIEW للتحكم في أخذ العينات والتهيئة في التحليل الهندسي.
الشكل 11صفحة تكوين Motor.vi. تم تسجيل تجربة المحرك في "تكوين RIP" (RIP Configuration) باسم التجربة "المحرك" (Motor)، ومسار واجهة الجهاز الافتراضية (VI) الفعلي، ومعلومات الكلمات المفتاحية، والوصف، وتردد أخذ العينات. تم التقاط لقطة الشاشة هذه من واجهة "تكوين RIP" المستخدمة مع LabVIEW 2026 وRIP WebService في البيئة التجريبية المحلية الخاصة بالمؤلفين. ولا تتضمن لقطة الشاشة أي بيانات لمستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

نظام التحكم في المحرك، واجهة ضبط PID مع منزلق إدخال وشاشات عرض المخرجات، قرص السرعة الزاوية.
الشكل 12صفحة واجهة المستخدم الرسومية عبر الويب لـ Motor.vi. تُنشئ الصفحة الأمامية تلقائيًا أدوات التحكم في الإدخال وشاشات العرض للمخرجات الخاصة بتجربة التحكم في الموضع باستخدام PID لمحرك التيار المستمر. وقد التُقطت لقطة الشاشة لواجهة الويب هذه من صفحة الويب الخاصة بالمحرك والتي نشرها المؤلفون محلياً باستخدام متصفح Mozilla Firefox. كما تم إنشاء أدوات التحكم وحقول المخرجات المعروضة من البيانات الوصفية لـ RIP في البيئة التجريبية المحلية للمؤلفين. ولا تتضمن هذه الواجهة أي بيانات لمستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

رسالة خطأ في صفحة الويب تحتوي على "ERR_CONNECTION_REFUSED"، مما يشير إلى وجود مشكلة في الاتصال بالخادم المحلي.
الشكل 13فشل الوصول عبر المتصفح عندما لا يكون Caddy قيد التشغيلعندما لا يكون Caddy قيد التشغيل، لا يمكن الوصول إلى العنوان المحلي الموكل http://localhost:8090/motor، ويظهر للمتصفح رسالة ERR_CONNECTION_REFUSED. وتشير أعراض الفشل هذه إلى أن خدمة وكيل Caddy المحلية غير متاحة أو أنها لا تستمع إلى منفذ الوصول المحدد. تَم التقاط لقطة الشاشة للمتصفح هذه باستخدام Mozilla Firefox في بيئة الاختبار المحلية الخاصة بالمؤلفين، وهي توضح حالة فشل الوصول عندما لم يكن وكيل Caddy المحلي يعمل. ولا تتضمن لقطة الشاشة أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

واجهة محاكاة مروحة افتراضية مع شعار الجامعة على ريشة مروحة دوارة.
الشكل 14فشل اتصال RIP POST بعد تحميل الصفحة. تظهر وحدة تحكم المتصفح خطأ 502 Bad Gateway بالنسبة لطلب RIP POST. وتُشير هذه النتيجة إلى أن صفحة الويب قد وصلت إلى عنوان وكيل Caddy، ولكن تعذر توجيه الطلب بنجاح إلى الواجهة الخلفية لخدمة RIP WebService أو معالجته من خلالها. تم التقاط لقطة الشاشة هذه لوحدة تحكم المتصفح باستخدام أدوات مطوري Mozilla Firefox في بيئة النشر المحلية الخاصة بالمؤلفين، وهي توضح فشلاً في الاتصال من نوع RIP POST 502 Bad Gateway. ولا تتضمن هذه اللقطة أي بيانات لمستخدمين من طرف ثالث أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

واجهة مستخدم افتراضية للتحكم في المروحة مع مراقبة عدد الدورات في الدقيقة؛ مخطط لإعداد نموذج المروحة؛ تحليل بيانات الشبكة.
الشكل 15حالة الاتصال من جهة المتصفح في ظل التشغيل العادي. تُظهر أدوات مطور المتصفح تحميل الصفحة بنجاح، وطلبات RIP POST، وطلباً نشطاً لـ SSE بمعرّف expId=fan. وتشير هذه الطلبات إلى أن الواجهة الأمامية للويب تتواصل مع خدمة RIP WebService عبر وكيل Caddy، وتتلقى تحديثات فورية من خلال قناة SSE. تم التقاط لقطة الشاشة لأدوات مطور المتصفح هذه باستخدام Mozilla Firefox في بيئة النشر المحلية الخاصة بالمؤلفين، وهي توضح الاتصال الطبيعي لطلبات RIP POST وSSE. لا تتضمن اللقطة أي بيانات لمستخدمين من طرف ثالث أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

وحدة تحكم في تصحيح الأخطاء تحتوي على سجلات الشبكة ومخطط استخدام الموارد لتحليل برنامج LabVIEW.
الشكل 16ملاحظة واحدة ممثلة لموارد وحدة تحكم المتصفح ومستوى العملية لتجربة المروحة. تم تسجيل لقطة الشاشة هذه أثناء اختبار تجريبي لمروحة محلية. وتُظهر وحدة التحكم (console) وقت طلب/استجابة البيانات الوصفية (metadata)، وأعداد متغيرات البيانات الوصفية، ووقت إنشاء واجهة المستخدم القائمة على البيانات الوصفية، ووقت فتح اتصال SSE، وبيانات SSE المستلمة. كما تُظهر نافذة مدير المهام (task-manager) قيم وحدة المعالجة المركزية (CPU) والذاكرة على مستوى العملية لعمليتي المتصفح وLabVIEW في وقت الالتقاط. وتُعد هذه القيم ملاحظات وصفية من هذا الاختبار الفردي، وليست قياسات أداء مكررة أو معياراً إحصائياً. تم التقاط لقطة الشاشة هذه من أدوات مطوري متصفح Mozilla Firefox ومدير مهام Windows في بيئة الاختبار المحلية الخاصة بالمؤلفين؛ حيث استُخدم متصفح Mozilla Firefox لتسجيل مخرجات وحدة التحكم في المتصفح، واستُخدم مدير مهام Windows لمراقبة استهلاك وحدة المعالجة المركزية والذاكرة لعمليتي المتصفح وLabVIEW. ولا تتضمن اللقطة أي بيانات لمستخدمين من طرف ثالث أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مقارنة واجهة مستخدم التحكم في المروحة؛ قيم عدد الدورات في الدقيقة (RPM)، والتيار، والطاقة مرتبطة في مخطط واجهة سطح المكتب والواجهة المحمولة.
الشكل 17وصول متزامن إلى نفس صفحة الويب القائمة على بروتوكول RIP من متصفح مكتبي ومتصفح محمول. تُفتح صفحة تجربة المروحة في آن واحد على أجهزة الكمبيوتر والأجهزة المحمولة، ويعرض كلا العميلين عناصر التحكم والمتغيرات المخرجة التي تم إنشاؤها تلقائياً. تم الوصول إلى صفحة الويب الخاصة بسطح المكتب باستخدام متصفح Mozilla Firefox، والوصول إلى صفحة الويب الخاصة بالجوال باستخدام متصفح محمول في بيئة الشبكة المحلية نفسها. وقد التُقطت لقطات الشاشة من بيئة الاختبار المحلية الخاصة بالمؤلفين، ولا تتضمن أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

اسم المتغيرنوع البياناتالمدخلات/المخرجاتالمعنى الفيزيائيالدور في النموذجالنطاق/الإعداد
تفعيلمنطقي (Boolean)يرجى تقديم النص المراد ترجمته.مفتاح تشغيل المروحةيتحكم في ما إذا كان النموذج يستقبل مدخلات تعديل عرض النبضة (PWM). عندما تكون القيمة True، تكون u = PWM؛ وعندما تكون False، تكون u = 0.صواب / خطأ
تعديل عرض النبضةالربط المزدوج (DBL)يرجى تقديم النص المراد ترجمته.مدخلات التشغيليحدد شدة تشغيل المروحة الأساسية، وهو المدخل الرئيسي المستخدم لحساب سرعة الحالة المستقرة SteadyRPM.٠-١، بخطوة ٠.٠١
تحميلDBLيرجى تزويد النص المراد ترجمته.معامل التحميليصف تأثير إضعاف الحمل على السرعة في الحالة المستقرة؛ فكلما زاد الحمل، انخفضت السرعة في الحالة المستقرة.0-1، بخطوة 0.01
تاوDBLيرجى تزويدي بالنص الذي ترغب في ترجمته.ثابت زمن الاستجابةيحدد مدى سرعة وصول سرعة المروحة إلى سرعة الحالة المستقرة من الحالة السابقة.0.1-5، بخطوة 0.1
الحد الأقصى لعدد الدورات في الدقيقةDBLيرجى تزويدي بالنص المراد ترجمته.السرعة القصوىيحدد السرعة القصوى المسموح بها من قبل النموذج، ويُستخدم لتقييد السرعة ومعايرتها.٥٠-٦٠، بزيادة قدرها ١٠
اضطرابDBLيرجى تزويدي بالنص الذي ترغب في ترجمته.مدخل الاضطرابيمثل تأثير الاضطراب الخارجي أو تقلب الحمل على السرعة والتيار والقدرة في الحالة المستقرة.0-1، الخطوة 0.1
السرعة (دورة في الدقيقة)DBLيرجى تزويدي بالنص المصدر المراد ترجمته.السرعة الفعليةيمثل سرعة خرج المروحة الحالية، ويتم تحديثه من خلال ديناميكيات قصورية من الدرجة الأولى.محسوبة بواسطة النموذج
SteadyRPMDBLمخرجاتالسرعة في الحالة المستقرةتمثل سرعة الحالة المستقرة النظرية في ظل ظروف الإدخال الحالية.تم حسابها بواسطة النموذج
TimeSDBLالمخرجاتوقت التشغيلتمثل وقت التشغيل المستمر للنموذج.محسوب بواسطة النموذج
SpeedNormDBLمخرجاتالسرعة المُطبعةيمثل نسبة سرعة الدوران (SpeedRPM) إلى أقصى سرعة دوران (KMaxRPM).0-1 أو يتم حسابه بواسطة النموذج
التيار أمجموعة الارتباط المزدوجة (DBL)مخرجاتالتياريمثل تيار النموذج المقدر، الذي يتغير بتغير مدخلات التشغيل ومدخلات الاضطراب.محسوب بواسطة النموذج
PowerWDBLمخرجاتالقدرةيمثل قدرة النموذج التقديرية، والتي يتم حسابها من ثابت الجهد والتيار.حُسب بواسطة النموذج
نقطة الضبطالارتباط المزدوج (DBL)يرجى تقديم النص المراد ترجمته.الموقع المطلوبيحدد الموضع الذي يجب أن يصل إليه المحرك، ويشكل قيمة الخطأ e بناءً على الموضع الفعلي Position.-3-3، الخطوة 0.1
ثابت التوازن (Kc)ربط ثنائي الجسم (DBL)يرجى تزويد النص المراد ترجمته.كسب التناسبيضبط قوة استجابة متحكم PID للخطأ.٠-١٠، خطوة ٠.١
تيتانيومقاعدة بيانات المستويات (DBL)يرجى تزويدي بالنص المصدر المراد ترجمته.الزمن التكاملييضبط عمل التكامل في متحكم PID ويُستخدم لتقليل خطأ الحالة المستقرة.0-10، بخطوة 0.1
TdDBLيرجى تقديم النص المراد ترجمته.زمن الاشتقاقيضبط هذا الإجراء عمل المشتق في متحكم PID، ويُستخدم لكبح التغيرات السريعة للغاية في الخطأ وتحسين الاستجابة الديناميكية.0-5، خطوة 0.1
اضطرابالربط المزدوج (DBL)يرجى تقديم النص المراد ترجمته.مدخلات الاضطرابيمثل اضطراباً خارجياً متراكباً عند مدخل المحرك، ويؤثر على نموذج المحرك جنباً إلى جنب مع جهد التحكم.٠-١٠، بزيادة قدرها ٠.١
إعادة ضبط التحكممنطقي (Boolean)يرجى تقديم النص الذي ترغب في ترجمته.إعادة ضبط الضابطيؤدي إلى مسح حالة النموذج بحيث تعود الموضع، والسرعة الزاوية، والتيار، والخطأ، والحد التكاملي إلى حالاتها الأولية.صحيح / خطأ
الموضعDBLالمخرجاتالموضع الفعلييمثل الموضع الزاوي الحالي للمحرك ويعمل كمتغير تغذية راجعة للتحكم التناسبي التكاملي التفاضلي (PID).محسوب بواسطة النموذج
الجهد الكهربائيمستوى خط الأساس للبياناتمخرجاتجهد التحكميمثل مخرج متحكم PID بعد تحديد الجهد ويعمل على مدخل المحرك.تم حسابها بواسطة النموذج؛ محدودة من -24 إلى 24 فولت
الوقتروابط دبل (DBL)مخرجاتوقت التشغيلتمثل وقت التشغيل المستمر لنموذج المحرك.محسوبة بواسطة النموذج
السرعة الزاوية المقاسةتطوير المكونات الحيوية (DBL)مخرجاتالسرعة الزاوية المقاسةتمثل السرعة الزاوية الحالية للمحرك، وهي مخرجات الحالة الميكانيكية للمحرك.محسوبة بواسطة النموذج

الجدول 1: متغيرات المدخلات والمخرجات المستخدمة في أمثلة المروحة ومحرك التيار المستمر. يسرد الجدول اسم كل متغير، ونوع البيانات، ودور المدخل/المخرج، والمعنى الفيزيائي، والنطاق الموصى به، وحجم الخطوة.

المعلمةالقيمةالمعنى الفيزيائيالدور في النموذج
R1مقاومة المنتج (Armature resistance)تمثل حد المقاومة في دائرة المنتج للمحرك وتحدد هبوط الجهد R × im في معادلة التيار.
L0.5محاثة المنتج (Armature inductance)تمثل محاثة دائرة المنتج وتحدد معدل تغير التيار؛ حيث تؤدي القيمة الأكبر لـ L إلى استجابة تيار أبطأ.
J0.01عزم القصور الذاتيتمثل مقاومة دوار المحرك للتغيرات في التسارع الزاوي وتحدد مدى سرعة تغير السرعة الزاوية.
b0.1معامل التخميد اللزجتمثل التخميد الميكانيكي وتصف عزم التخميد الذي يعيق زيادة السرعة الزاوية أثناء الدوران.
Kt0.01ثابت عزم الدورانتمثل المعامل التناسبي الذي يحول تيار المنتج إلى عزم دوران كهرومغناطيسي.
Ke0.01ثابت القوة الدافعة الكهربائية العكسيةتمثل المعامل التناسبي الذي تولد من خلاله السرعة الزاوية قوة دافعة كهربائية عكسية، وتصف تأثير التغذية الراجعة للسرعة على التيار.
Vmax24أقصى جهد تحكمتمثل حد جهد خرج وحدة التحكم وتحافظ على الجهد ضمن النطاق من -24 V إلى 24 V.
dt0.01خطوة المحاكاة المنفصلةتمثل الفاصل الزمني لكل تحديث للحالة بناءً على الحلقة، وتُستخدم لتحديث التيار، والسرعة الزاوية، والموضع، ووقت التشغيل.

الجدول 2: المعلمات الداخلية المستخدمة في نموذج التحكم الموضعي PID للمحرك تيار مستمر (DC motor). يسرد الجدول المعلمات الكهربائية والميكانيكية، والرموز، والقيم العددية، والوحدات، والأدوار في النموذج.

ملفات البرمجة التكميلية: ملفات المصدر والتكوين الكاملة لإعادة إنتاج أمثلة المروحة ومحرك التيار المستمر. تتضمن ملفات البرمجة التكميلية كود Formula Node في LabVIEW، وتكوين الوكيل العكسي Caddy، وملفات الواجهة الأمامية XHTML، وملفات مصدر LabVIEW VI المستخدمة في هذا البروتوكول. يحتوي الملف Code in LabVIEW Formula Node.docx على كود Formula Node لنماذج التحكم الموضعي PID للمروحة ومحرك التيار المستمر. ويحتوي ملف Caddyfile.txt على تكوين خادم الويب المحلي والوكيل العكسي. كما يحتوي الملفان Fan_Automatic_UI.xhtml وMotor_Automatic_UI.xhtml على منطق الواجهة الأمامية للويب القائم على البيانات الوصفية. أما الملفان fengshan.vi وMotor.vi فهما ملفات LabVIEW VI للواجهة الخلفية لتجارب المروحة والمحرك.يرجى النقر هنا لتحميل هذا الملف.

المناقشة

تعد عملية البناء والتسجيل الموحدة لـ LabVIEW back-end VI خطوة حاسمة في هذا البروتوكول. يجب أن تستخدم عناصر التحكم والمؤشرات في لوحة الواجهة (Front Panel) أسماء متغيرات واضحة وفريدة، كما يجب أن تتطابق أنواع بياناتها مع المتغيرات المتوقعة في حسابات النموذج وعملية القراءة والكتابة في RIP. في المثالين المستخدمين في هذا البروتوكول، يتم تعريف المتغيرات العددية القياسية (scalar numeric variables) كعناصر تحكم أو مؤشرات من نوع DBL، بينما تُعرف المتغيرات المنطقية (Boolean variables) كعناصر تحكم Boolean. كما يجب أن يحافظ المخطط الكتلي (Block Diagram) على تحديث الحالة بشكل مستمر من خلال حلقة While Loop، ومسجلات الإزاحة (Shift Registers)، وعقدة الصيغة (Formula Node)، بحيث يمكن تحديث متغيرات مثل سرعة المروحة، وموضع المحرك، والسرعة الزاوية للمحرك، والجهد الكهربائي، والوقت أثناء التنفيذ. بعد بناء الـ VI، يجب أن يتطابق اسم التجربة (experiment Name) في تكوين RIP تمامًا مع معرف التجربة (experiment ID) المستخدم في ملف XHTML المقابل، كما يجب أن يشير مسار الـ VI (VI Path) إلى ملف الـ VI المحفوظ فعليًا. تكمن أهمية هذه الإعدادات في أن الواجهة الأمامية للويب لا تدمج متغيرات كل تجربة برمجياً (hardcode)، بل تعتمد بدلاً من ذلك على البيانات الوصفية (metadata) التي يعيدها خادم RIP لتحديد المتغيرات القابلة للكتابة، والمتغيرات القابلة للقراءة، وأنواع البيانات، والخصائص العددية10,11.

تتعلق مشكلات استكشاف الأخطاء وإصلاحها الرئيسية بالاتساق بين معرف التجربة في ملف XHTML، وتكوينات RIP، وRIP WebService، وإعدادات وكيل Caddy. إذا كان معرف التجربة في ملف XHTML لا يتطابق مع اسم التجربة في تكوينات RIP، فلن تتمكن صفحة الويب من طلب البيانات الوصفية الصحيحة، وبالتالي لن تتمكن من إنشاء عناصر التحكم وحقول المخرجات المتوقعة. وإذا كان مسار VI غير صحيح أو إذا كانت خدمة RIP WebService غير مفعلة، فقد تفتح صفحة الويب ولكنها لن تتمكن من التواصل مع الواجهة الخلفية لـ LabVIEW. وإذا كان Caddy لا يعمل، فلن يتمكن المتصفح من الوصول إلى عنوان الوكيل المحلي المحدد وقد يظهر رسالة ERR_CONNECTION_REFUSED، كما هو موضح في الشكل 13. أما إذا كان Caddy يعمل ولكن هدف الوكيل العكسي (reverse-proxy target) لا يتطابق مع منفذ RIP WebService، فقد يتم تحميل الصفحة بينما تفشل طلبات RIP POST وتظهر خطأ 502 Bad Gateway، كما هو موضح في الشكل 14. وإذا كان مسار /RIP/SSE* لا يعمل بشكل صحيح، فقد تفتح الصفحة وتعرض عناصر التحكم، ولكن قيم المخرجات لن تُحدث في الوقت الفعلي. وفي ظروف التشغيل العادية، يجب أن تظهر أدوات مطور المتصفح تحميل الصفحة بنجاح، وطلبات RIP POST، وطلب SSE نشط مع معرف التجربة الصحيح، كما هو موضح في الشكل 15. وبناءً على ذلك، يجب أن يبدأ استكشاف الأخطاء وإصلاحها بالتحقق من معرف التجربة، ومسار VI، وحالة RIP WebService، وحالة تشغيل Caddy، ومنافذ الوكيل، ومسار SSE. وإذا ظل الاتصال غير طبيعي، فقد يساعد إعادة تشغيل كل من RIP WebService وCaddy، أو مسح ذاكرة التخزين المؤقت للمتصفح، أو تكرار الاختبار في متصفح آخر في التمييز بين السلوك الخاص بالمتصفح ومشاكل تكوين RIP/Caddy.

إن البروتوكول الحالي قابل للتكرار عبر المثالين لأن سير عمل (البناء-التسجيل-النشر-التحقق) نفسه قد طُبق على كل من نموذج سرعة المروحة ونموذج التحكم في الموضع عبر PID لمحرك تيار مستمر (DC motor). ولتقليل الاعتماد على صناديق الأدوات المتخصصة، أُعيد بناء أجهزة VI الخلفية باستخدام هياكل LabVIEW الأساسية، بما في ذلك عناصر التحكم والمؤشرات في اللوحة الأمامية (Front Panel)، وحلقات While، وسجلات الإزاحة (Shift Registers)، وعقد الصيغ (Formula Nodes)، والمتغيرات العددية والمنطقية القياسية. ومع ذلك، لا يزال قابلية التكرار عبر إصدارات LabVIEW، وتثبيتات Windows، وبيئات الشبكة المحلية تعتمد على تفاصيل التكوين مثل مسارات الملفات، وأذونات الوصول، والمنافذ المحلية، وأوامر بدء تشغيل الخدمة، وسلوك المتصفح. ويمكن أيضاً توسيع سير العمل ليشمل التجارب عن بُعد المتعلقة بالأجهزة، ولكن لا ينبغي تفسير هذه الطريقة على أنها تعرّف مباشر للأجهزة من جانب الويب. تقوم الواجهة الأمامية للويب بتحديد عناصر التحكم والمؤشرات في لوحة LabVIEW الأمامية من خلال البيانات الوصفية لـ RIP. لذلك، يجب أولاً توصيل المستشعرات، أو المشغلات، أو الأجهزة، أو أجهزة التحكم في العمليات ومعالجتها في جهاز VI الخلفي ببرنامج LabVIEW من خلال برامج تشغيل الأجهزة المناسبة، أو وحدات الحصول على البيانات، أو وحدات التحكم في الأجهزة، أو آليات تكييف الأجهزة الأخرى. وبعد تعيين قياسات الأجهزة وأوامر التحكم إلى مؤشرات وعناصر تحكم اللوحة الأمامية، يمكن للواجهة الأمامية للويب القائمة على RIP التعرف على هذه المتغيرات بنفس الطريقة التي تتعرف بها على متغيرات المحاكاة المستخدمة في هذا البروتوكول. وقد أظهرت الدراسات السابقة للمختبرات عن بُعد القائمة على LabVIEW أنه يمكن استخدام LabVIEW كبيئة خلفية لتجارب هندسة التحكم عن بُعد، وتجارب الروبوتات، ومنصات التحكم في العمليات، والحصول على بيانات المستشعرات، والتفاعل مع الأجهزة المادية9,12,17,18,19,20.

الشكل 16 يعرض مثالاً تطبيقياً تمثيلياً واحداً تم تسجيله أثناء تجربة مروحة محلية. تم تجهيز كود الواجهة الأمامية لتسجيل وقت طلب/استجابة البيانات الوصفية (metadata)، وأعداد متغيرات البيانات الوصفية، ووقت إنشاء واجهة المستخدم بناءً على البيانات الوصفية، ووقت فتح اتصال SSE، وبيانات SSE المستلمة. في هذا المثال، أبلغت وحدة تحكم المتصفح عن وقت طلب/استجابة للبيانات الوصفية قدره 68.00 ms، وحددت 7 متغيرات قابلة للكتابة و7 متغيرات قابلة للقراءة من بيانات RIP الوصفية، وأنشأت عناصر واجهة المستخدم المقابلة في 2.00 ms، وفتحت اتصال SSE في 16.00 ms. أظهرت مدخلات بيانات SSE المتكررة أن متغيرات المخرجات مثل SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA و PowerW كانت تُستلم باستمرار من الواجهة الخلفية لبرنامج LabVIEW. وأظهر عرض مدير المهام في حالة الاختبار المحلي نفسها استهلاكاً للمعالج (CPU) بنسبة 1.5% تقريباً وذاكرة قدرها 391.7 MB لعملية متصفح Firefox، بينما أظهرت عملية LabVIEW استهلاكاً للمعالج بنسبة 0% وذاكرة قدرها 9.2 MB في وقت الالتقاط. توفر هذه الملاحظات دليلاً أساسياً على أنه يمكن رصد استرجاع البيانات الوصفية، وإنشاء واجهة المستخدم بناءً على البيانات الوصفية، واتصالات RIP/SSE، والعبء الإضافي على المعالج على مستوى العملية في بيئة النشر المحلية. ومع ذلك، فإن هذه البيانات مخصصة للتحقق على مستوى التنفيذ وليس كمعيار أداء شامل. لا يزال من الضروري في الأعمال المستقبلية إجراء تقييم منهجي للأداء تحت متصفحات مختلفة، وتجارب متكررة، وأحمال متغيرات أثقل، وأجهزة مادية، ومستخدمين متعددين في آن واحد.

هناك أيضاً قيود لهذه الطريقة، خاصة عند توسيع نطاقها ليشمل هياكل البيانات المعقدة، والتجارب القائمة على الأجهزة، والتشغيل متعدد المستخدمين. ويعد سير العمل الحالي أكثر ملاءمة لمتغيرات الإدخال والإخراج الرقمية القياسية والمتغيرات المنطقية (Boolean). فهو لا يوفر تلقائياً دعماً كاملاً للمصفوفات المعقدة، أو المجموعات (clusters)، أو هياكل البيانات المتداخلة، أو علاقات المخططات، أو التصورات المرئية الخاصة بمجال معين. قد تتطلب هذه الحالات قواعد إضافية لربط البيانات الوصفية (metadata mapping) أو مكونات واجهة أمامية مكتوبة يدوياً. ويمكن لواجهة المستخدم التي يتم إنشاؤها تلقائياً أن توفر عناصر تحكم وعروضاً أساسية بناءً على البيانات الوصفية للمتغيرات، ولكنها لا تستطيع استنتاج العلاقة المادية بين المتغيرات بشكل كامل، أو اختيار التصور المرئي الأكثر ملاءمة، أو تصميم تفاعلات السلامة الخاصة بالتجربة. وعندما يتم توسيع سير العمل ليشمل معدات حقيقية، تبرز اعتبارات إضافية، بما في ذلك تعريفات الأجهزة، ومعايرة الجهاز، وقيود أخذ العينات، وحدود المشغلات الميكانيكية، ومنطق إيقاف التشغيل في حالات الطوارئ، والمصادقة، وآليات التحكم في الكتابة للمستخدمين المتعددين. كما يمكن الوصول إلى النشر الحالي من خلال أجهزة عملاء متعددة عبر متصفحات الويب القياسية في نفس بيئة الشبكة المحلية. وكما هو موضح في الشكل 17، تم فتح صفحة تجربة المروحة نفسها في وقت واحد على متصفح مكتبي ومتصفح هاتف محمول، وعرض كلا العميلين عناصر التحكم التي تم إنشاؤها تلقائياً ومتغيرات المخرجات المقابلة. تشير هذه الملاحظة إلى إمكانية وصول أساسية متزامنة لعدة عملاء لعرض صفحة التجربة نفسها والتفاعل معها. ومع ذلك، لا ينبغي تفسير ذلك على أنه إطار عمل كامل للتحكم متعدد المستخدمين، لأن التنفيذ الحالي لا يتضمن مصادقة مخصصة للمستخدمين، أو قفل التحكم، أو تحكيم الكتابة المتزامنة، أو صفوف الكتابة، أو آليات حل النزاعات. وتتسق هذه القيود مع الدراسات السابقة للمختبرات عن بُعد، حيث تتطلب المختبرات عن بُعد المعقدة أو التعاونية عادةً تصميماً لواجهة خاصة بالتجربة، وآليات مزامنة، وقيود سلامة، ومنطقاً لإدارة المستخدمين13,14,15,16,17.

لا تكمن القيمة المنهجية لهذا البروتوكول في تقديم بنية RIP جديدة أو توسيع أنواع البيانات التي يدعمها RIP. بل تكمن قيمته في توفير مسار تنفيذ كامل وقابل للتكرار لتطبيق آلية إنشاء واجهة مستخدم (UI) تلقائية قائمة على RIP على أنظمة LabVIEW المختلفة. وبالمقارنة مع كتابة واجهة ويب مخصصة لكل تجربة، يقلل سير العمل هذا من تكرار تنفيذ تخطيط التحكم الأساسي، وربط المتغيرات، ومنطق اتصالات القراءة والكتابة عندما يكشف الـ VI الخلفي عن متغيرات متوافقة8,9,10,11. وبناءً على ذلك، يعد البروتوكول مفيدًا في التعليم الهندسي، وتطوير المختبرات عن بُعد، والنشر السريع لتجارب المحاكاة أو التدريس منخفضة المخاطر التي تتطلب ضبط المعلمات عبر المتصفح ومراقبة الحالة في الوقت الفعلي. كما يجب أن تعمل الأبحاث المستقبلية على توسيع سير العمل ليشمل هياكل بيانات أكثر تعقيدًا، وأجهزة تجريبية فيزيائية، والتحكم الرسمي في وصول المستخدمين المتعددين، والتقييم الكمي للأداء، بما في ذلك وقت إنشاء الواجهة، ووقت استجابة الاتصالات، واستقرار المزامنة، وحمل الخادم، واستهلاك وحدة المعالجة المركزية (CPU)، وسهولة استخدام الواجهة الأمامية.

الإفصاحات

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

شكر وتقدير

تم دعم هذا العمل من قبل برامج تدريب الطلاب الجامعيين للابتكار بجامعة ووهان.

المواد

قائمة المواد المستخدمة في هذه المقالة
الاسمالشركةرقم فهرسيالتعليقات
خادم وكيل CaddyCaddyغير متاحوكيل عكسي يُستخدم لتقديم واجهة المستخدم الرسومية للويب وتوجيه طلبات /RIP إلى خدمة RIP WebService
Caddyfileأعده المؤلفونغير متاحيحدد مسارات الملفات الثابتة ومسارات الوكيل العكسي لاتصالات RIP
Fan_Automatic_UI.xhtmlأعده المؤلفونغير متاحواجهة أمامية للويب تعتمد على البيانات الوصفية لتجربة المروحة
LabVIEWNational Instruments2026برنامج يُستخدم لبناء وتشغيل fengshan.vi و Motor.vi
نظام التشغيل Microsoft WindowsMicrosoftWin11نظام التشغيل المستخدم لتشغيل LabVIEW و RIP WebService و Caddy والمتصفح.
Motor_Automatic_UI.xhtmlأعده المؤلفونغير متاحواجهة أمامية للويب تعتمد على البيانات الوصفية لتجربة المحرك
متصفح سطح المكتب Mozilla FirefoxMozilla2026متصفح سطح مكتب يُستخدم للوصول إلى واجهة المستخدم الرسومية للويب، وأدوات المطورين، وملاحظات التوقيت/الموارد، ولقطات شاشة الشبكة/وحدة التحكم (Network/Console).
RIP WebServiceUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewيستقبل طلبات RIP POST ويوفر طبقة اتصالات WebService التي تستخدمها الواجهة الأمامية للمتصفح.
مدير مهام WindowsMicrosoftمدمج في Windowsيُستخدم لتسجيل ملاحظات وحدة المعالجة المركزية والذاكرة على مستوى العملية لعمليات المتصفح و LabVIEW.

المراجع

  1. Gomes, L., Bogosyan, S. Current trends in remote laboratories. IEEE Trans Ind Electron. 2009;56(12):4744–4756.
  2. Ma, J., Nickerson, J. V. Hands-on, simulated, and remote laboratories: A comparative literature review. ACM Comput Surv. 2006;38(3):7-es.
  3. Heradio, R. et al. Virtual and remote labs in education: A bibliometric analysis. Comput. Educ. 2016;98:14–38.
  4. May, D., Jahnke, I., Moore, S. Online laboratories and virtual experimentation in higher education from a sociotechnical-pedagogical design perspective. J. Comput. High. Educ. 2023;35:203–222.
  5. Amador Nelke, S. et al. Enhancing lessons on the Internet of Things in science, technology, engineering, and medical education with a remote lab. Sensors.2024;24(19):6424.
  6. Lei, Z. et al. Interactive and visualized online experimentation system for engineering education and research. J. Vis. Exp. 2021;(177):e63342.
  7. Zhang, G., Lei, Z., Hu, W., Zhou, H. Online virtual reality networked control laboratory applied in control engineering education. J. Vis. Exp. 2024;(204):e66432.
  8. Fabregas, E., Farias, G., Dormido-Canto, S., Dormido, S., Esquembre, F. Developing a remote laboratory for engineering education. Comput. Educ. 2011;57(2):1686–1697.
  9. Chacón, J., Vargas, H., Farias, G., Sánchez, J., Dormido, S. EJS, JIL Server, and LabVIEW: An architecture for rapid development of remote labs. IEEE Trans. Learn. Technol.2015;8(4):393–401.
  10. Chacón, J., Farias, G., Vargas, H., Visioli, A., Dormido, S. Remote Interoperability Protocol: A bridge between interactive interfaces and engineering systems. IFAC-PapersOnLine.2015;48(29):247–252.
  11. de la Torre, L., Chacón, J., Chaos, D., Heradio, R., Chandramouli, R. Using IoT-type metadata and smart Web design to create user interfaces automatically. IEEE Trans. Ind. Inform. 2023;19(3):3109–3118.
  12. Chaos, D., Chacón, J., Lopez-Orozco, J. A., Dormido, S. Virtual and remote robotic laboratory using EJS, MATLAB, and LabVIEW. Sensors. 2013;13(2):2595–2612.
  13. Haj-Hosseini, N., Jonasson, H., Stridsman, M., Carlsson, L. Interactive remote electrical safety laboratory module in biomedical engineering education. Educ. Inf. Technol. 2024;29:20505–20521.
  14. Galán, D. et al. Safe experimentation in optical levitation of charged droplets using remote labs. J. Vis. Exp. 2019;(143):e58699.
  15. Kurtz, M., Benabbou, A., Pons, C., Broisin, J. Collaboration in virtual and remote laboratories for education: A systematic literature review. Int. J. Comput.-Support. Collab. Learn. 2025;20:549–603.
  16. Zamarreño, J. M., Ríos, J. C., Alonso, G. Virtual and remote laboratory as a complementary support in control education. Discov. Educ. 2025;4:477.
  17. Chacón, J., Sáenz, J., de la Torre, L., Díaz, J. M., Esquembre, F. Design of a low-cost air levitation system for teaching control engineering. Sensors. 2017;17(10):2321.
  18. Stefanovic, M., Cvijetkovic, V., Matijevic, M., Simic, V. A LabVIEW-based remote laboratory experiments for control engineering education. Comput. Appl. Eng. Educ.2011; 19(3):538–549.
  19. González, I., Calderón, A. J., Mejías, A., Andújar, J. M. Novel networked remote laboratory architecture for open connectivity based on PLC-OPC-LabVIEW-EJS integration. Application in remote fuzzy control and sensors data acquisition. Sensors. 2016;16(11):1822.
  20. Abdulwahed, M., Nagy, Z. K. Developing the TriLab, a triple access mode (hands-on, virtual, remote) laboratory, of a process control rig using LabVIEW and Joomla. Comput. Appl. Eng. Educ. 2013;21(4):614–626.

إعادة الطباعة والأذونات

الوسوم

RIP Caddy PID

تم نشر هذه المقالة

الفيديو قريباً