يتطلب اشتراك JoVE لعرض هذا المحتوى. تسجيل الدخول أو ابدأ نسخة تجريبية مجانية

مقالة منهجية

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

189 مشاهدة

⸱

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 من خ...

الوصول مقيد. يرجى تسجيل الدخول أو بدء فترة تجريبية لعرض هذا المحتوى.

المناقشة

تعد عملية البناء والتسجيل الموحدة لـ LabVIEW back-end VI خطوة حاسمة في هذا البروتوكول. يجب أن تستخدم عناصر التحكم والمؤشرات في لوحة الواجهة (Front Panel) أسماء متغيرات واضحة وفريدة، كما يجب أن تتطابق أنواع بياناتها مع المتغيرات المتوقعة في حسابات النموذج وعملية القراءة والكتابة في RIP. في المثالين المستخدمين في هذا البروتوكول، يتم تعريف المتغيرات العددية القياسية (scalar numeric variables) كعناصر تحكم أو مؤشرات من نوع DBL، بينما تُعرف المتغيرات المنطقية (Boolean variables) كعناصر تحكم Boolean. كما يجب أن يحافظ المخطط الك...

الوصول مقيد. يرجى تسجيل الدخول أو بدء فترة تجريبية لعرض هذا المحتوى.

الإفصاحات

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

شكر وتقدير

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

الوصول مقيد. يرجى تسجيل الدخول أو بدء فترة تجريبية لعرض هذا المحتوى.

المواد

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

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

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