مقالة منهجية

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

DOI:

10.3791/72765

أغسطس 14, 2026

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

ملخص

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

الملخص

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

المقدمة

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

مع تطور التجارب عن بُعد، والتدريس عبر الإنترنت، وتقنيات إنترنت الأشياء، أصبح توفير الوصول القائم على الويب إلى نماذج المحاكاة المحلية أو الأجهزة التجريبية توجهاً هاماً لتطوير المنصات التجريبية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.

البروتوكول

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

أتمم الخطوات التالية لبناء وتسجيل ونشر والتحقق من تجربتين في 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, والحالات الداخلية ذات الصلة تعود إلى حالاتها الأولية وفقاً لمنطق إعادة الضبط.

النتائج

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

بالنسبة لتجربة التحكم في موضع محرك التيار المستمر (DC motor) باستخدام المتحكم التناسبي التكاملي التفاضلي (PID)، بعد إدخال http://localhost:8090/motor في المتصفح، تقوم الصفحة تلقائياً بتوليد عناصر التحكم وحقول المخرجات المقابلة من بيانات RIP الوصفية، كما هو موضح في الشكل 12. تتضمن متغيرات الإدخال كل من Setpoint, Kc, Ti, Td, Disturbance، وعنصر التحكم Reset، بينما تتضمن متغيرات المخرجات كل من Position, Voltage, Time، وMeasured angular velocity. عند تغيير Setpoint، يستجيب Position لقيمة الهدف الجديدة. وعند ضبط معاملات PID وهي Kc, Ti وTd، تتغير استجابة المخرجات، وvoltage التحكم، وmeasured angular velocity وفقاً لذلك، مما يشير إلى أن قيم المعاملات التي تم إدخالها في صفحة الويب قد كُتبت بشكل صحيح في نموذج LabVIEW الخلفي وتشارك في حسابات التحكم. وعند تفعيل عنصر التحكم Reset، تعود متغيرات النموذج إلى حالاتها الأولية وفقاً لمنطق إعادة الضبط.

تظهر حالات فشل الاتصال والاتصالات من جهة المتصفح في الشكل 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. كما توفر هذه النتائج معايير ملموسة للتمييز بين الاتصال الناجح وإخفاقات النشر النموذجية، بينما يتم تناول إجراءات استكشاف الأخطاء وإصلاحها المقابلة في قسم المناقشة.

مخطط LabVIEW VI، وخادم RIP، ووكيل Caddy؛ تدفق عملية واجهة المستخدم الرسومية للويب التي يتم إنشاؤها تلقائيًا.
الشكل 1: الهيكل العام للنظام التجريبي. يتكون النظام من LabVIEW back-end VI، وخادم RIP، ووكيل Caddy، وواجهة مستخدم رسومية للويب يتم إنشاؤها تلقائيًا. يوفر LabVIEW VI متغيرات النموذج، ويقوم خادم RIP بقراءة البيانات الوصفية لـ VI وقيم المتغيرات، بينما يعمل Caddy على توحيد مسار الوصول وحل مشكلات الوصول عبر النطاقات المختلفة، وتقوم واجهة المستخدم الرسومية للويب بإنشاء عناصر التحكم تلقائيًا. يظهر اسم وشعار Caddy فقط لتحديد مكون خادم/وكيل Caddy Web المستخدم في سير العمل. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط نظام التحكم في المحرك مع المدخلات/المخرجات؛ مخطط SpeedRPM؛ إعدادات PWM و KMaxRPM؛ تحليل البيانات.
الشكل 2: اللوحة الأمامية لأداة VI الخاصة بالمروحة. تحتوي اللوحة الأمامية على عناصر تحكم في المدخلات لكل من Enable, PWM, Load, Tau, KMaxRPM و Disturbance ومؤشرات مخرجات لكل من SpeedRPM, SteadyRPM, TimeS, SpeedNorm, CurrentA و PowerW. تم التقاط لقطة الشاشة هذه من اللوحة الأمامية لملف fengshan.vi في برنامج LabVIEW 2026 في البيئة التجريبية المحلية الخاصة بالمؤلفين. لا تتضمن الصورة أي بيانات لمستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

مخطط خوارزمية التحكم في المحرك مع عقدة الصيغة، وحلقة While، ومسجلات الإزاحة لتحليل السرعة.
الشكل 3: المخطط الكتلي لـ VI الخاص بالمروحة. تم تنفيذ نموذج المروحة باستخدام حلقة While، ومسجلات الإزاحة، ومنطق التمكين Enable، وعقدة الصيغة، ومؤشرات الإخراج. تم التقاط لقطة الشاشة هذه من المخطط الكتلي لـ fengshan.vi في برنامج LabVIEW 2026 ضمن البيئة التجريبية المحلية الخاصة بالمؤلفين. لا يتضمن ذلك أي بيانات مستخدمين من جهات خارجية أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

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

مخطط كتلي برمجي يوضح منطق واجهة المستخدم القائم على البيانات الوصفية في لغة JavaScript لتهيئة البيانات.
الشكل 5: إعدادات معرف التجربة ومنطق إنشاء واجهة المستخدم القائم على البيانات الوصفية في ملفات الواجهة الأمامية بتنسيق 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 منفذ وصول الوكيل المحلي، ويضبط دليل الجذر للواجهة الأمامية، ويعيد كتابة مسارات /fan و /motor إلى ملفات XHTML المقابلة، ويعمل كوكيل عكسي لطلبات /RIP/SSE* و /RIP* إلى منفذ LabVIEW/RIP WebService. تم التقاط لقطة شاشة تكوين Caddyfile من ملف Caddyfile المفتوح في Visual Studio Code في بيئة التطوير المحلية الخاصة بالمؤلفين. قام المؤلفون بإعداد Caddyfile لتكوين Caddy كخادم ويب محلي ووكيل عكسي. لا يتضمن الملف أي بيانات مستخدمين من طرف ثالث أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

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

مخطط نظام التحكم PID، وتغذية راجعة لموضع المحرك، وعملية الإدخال والإخراج، وقياس السرعة الزاوية.
الشكل 8: اللوحة الأمامية لـ VI الخاص بالمحرك. تحتوي اللوحة الأمامية على عناصر تحكم لـ Setpoint, Kc, Ti, Td, Disturbance، وعنصر التحكم Reset، ومؤشرات لـ Position, Voltage, Time، و Measured angular velocity. تم التقاط لقطة الشاشة هذه من اللوحة الأمامية لـ Motor.vi في برنامج LabVIEW 2026 ضمن البيئة التجريبية المحلية الخاصة بالمؤلفين. لا تتضمن الصورة أي بيانات مستخدم من طرف ثالث أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

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

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

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

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

رسالة خطأ في صفحة الويب؛ تم رفض اتصال localhost؛ خيارات استكشاف أخطاء المتصفح وإصلاحها.
الشكل 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 طبيعية. لا تتضمن الصورة أي بيانات لمستخدمين من طرف ثالث أو معلومات سرية. يرجى النقر هنا لعرض نسخة أكبر من هذا الشكل.

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

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

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

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

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

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

ملفات البرمجة التكميلية: ملفات المصدر والتكوين الكاملة لإعادة إنتاج أمثلة المروحة ومحرك التيار المستمر (DC motor). تتضمن ملفات البرمجة التكميلية كود LabVIEW Formula Node، وتكوين الوكيل العكسي لـ 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 الخاصة بالواجهة الخلفية لتجارب المروحة والمحرك.يرجى النقر هنا لتنزيل هذا الملف.

المناقشة

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

تعد عملية البناء والتسجيل الموحدة لـ 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)، وسهولة استخدام الواجهة الأمامية.

الإفصاحات

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

شكر وتقدير

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

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

المواد

قائمة المواد المستخدمة في هذه المقالة
الاسمالشركةرقم فهرسيالتعليقات
خادم وكيل 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.

المراجع

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,
  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.

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

طلب إذن لإعادة استخدام النص أو الأشكال في مقالة JoVE هذه

طلب إذن

الوسوم

RIP Caddy PID
الفيديو قريباً

مقالات ذات صلة