מאמר שיטה

פרוטוקול ליצירה אוטומטית של ממשקים מבוססי רשת עבור יישומים של LabVIEW באמצעות פרוטוקול interoperability מרחוק

DOI:

10.3791/72765

14 באוגוסט 2026

במאמר זה

סיכום

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

מחקר זה מתקף יצירה אוטומטית של ממשק משתמש באינטרנט המבוססת על פרוטוקול קישוריות מרחוק (RIP) עם שתי מערכות LabVIEW נפרדות — מודל מאוורר ומודל בקרת מיקום של מנוע זרם ישיר — ומספק הליך הניתן לשחזור לבנייה, רישום, פריסה ובדיקה של שני הדוגמאות.

תקציר

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

פלטפורמות ניסיוניות מרוחקות מאפשרות גישה למודלי סימולציה מקומיים או להתקנים פיזיים דרך רשת, אך ממשקי קצה (front ends) קונבנציונליים של האינטרנט דורשים בדרך כלל דף נפרד, פריסת בקרים ולוגיקת תקשורת נתונים עבור כל ניסוי, דבר המגדיל את עלויות הפיתוח. עבודה זו מתקפת זרימת עבודה מבוססת ליצירה אוטומטית של ממשק משתמש (UI) באינטרנט מתוך מכשירים וירטואליים (VIs) של LabVIEW באמצעות פרוטוקול תפעוליות מרחוק (RIP), ומספקת פרוטוקול הניתן לשחזור ליישומו. זרימת העבודה בונה LabVIEW VIs המגדירים בקרי קלט ומחווני פלט בלוח הפנים (Front Panel), רושמת כל VI בתצורת שרת ה-RIP, קוראת את המטא-נתונים של המשתנים שהתקבלו, ומייצרת את בקרי האינטרנט ותצוגות הפלט התואמים. Caddy משמש כפרוקסי הפוך (reverse proxy) כדי לאחד את נתיב הקבצים הסטטיים של ממשק הקצה ואת נתיב הבקשות של ממשק התכנות (API) של ה-RIP. זרימת העבודה מוערכת באמצעות שתי מערכות נפרדות: מודל מהירות מאוורר ומודל בקרת מיקום של בקר פרופורציונלי-אינטגרלי-דיפרנציאלי (PID) למנוע זרם ישר (DC). בשני המקרים, דף האינטרנט מזהה את המשתנים החשופים, כותב קלט משתמש אל ה-back end של LabVIEW, קורא פלטי מודל ומייצר את הממשק מתוך המטא-נתונים של ה-RIP. תוצאות אלו מתקפות את אותו תהליך אוטומטי של יצירת ממשק משתמש בשתי מערכות דינמיות שונות ומתעדות את השלבים הנדרשים לשחזורו.

מבוא

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

עם פיתוחם של ניסויים מרחוק, הוראה מקוונת וטכנולוגיות האינטרנט של הדברים (Internet-of-Things), אספקת גישה מבוססת רשת למודלי סימולציה מקומיים או למכשירי ניסוי הפכה לכיוון חשוב בפיתוח פלטפורמות ניסוייות1,2,3,4. עבודות אחרונות שילבו עוד יותר מעבדות המצוידות בטכנולוגיות אינטרנט של הדברים עם למידה מבוססת פרויקטים וגישה מקומית או מרחוק, ובכך הדגימו את הפיתוח המתמשך של פלטפורמות ניסוייות גמישות ומרושתות בחינוך הנדסי5. בניסויי מערכות בקרה, משתמשים נדרשים בדרך כלל להתאים פרמטרי קלט בדפדפן ולצפות במצבי פלט בזמן אמת6,7. שיטות קונבנציונליות דורשות בדרך כלל דף רשת נפרד, לוגיקת קישור בקרה וממשק תקשורת נתונים עבור כל אובייקט ניסויי8,9. כאשר המשתנים במודל ה-back-end משתנים, לעיתים קרובות יש לשנות את דף ה-front-end בהתאם, דבר היוצר עבודת פיתוח חזרתית ניכרת ומגביל את ההרחבה המהירה של הפלטפורמה הניסויית.

פרוטוקול קישוריות מרחוק (RIP) מספק שכבת תווכה בין מודלים ניסיוניים של צד-שרת לבין ממשקי משתמש של דפדפנים10,11. בגישה ליצירה אוטומטית של ממשק משתמש המבוססת על RIP, המתוארת בעבודות קודמות, שרת ה-RIP מספק מטא-דאטה עבור כל ניסוי, כולל שמות משתנים, מאפייני קלט/פלט, סוגי נתונים, ערכי מינימום, ערכי מקסימום, דיוק, תיאורים ושיטות קריאה/כתיבה זמינות11. לקוח Web יכול להשתמש במטא-דאטה זה כדי ליצור את אלמנט ה-HTML התואם, כגון תוויות, שדות קלט מספריים, מחוונים (sliders), בקרים בוליאניים ותצוגות פלט, במהלך טעינת הדף או רענונו11. הפרוטוקול הנוכחי אינו מממש מחדש או מגדיר מחדש את מפרט ה-RIP. תחת זאת, הוא משתמש בשירות ה-RIP הקיים בקוד פתוח ובלוגיקת יצירת ממשקי משתמש של המרה ממטא-דאטה ל-HTML המבוססת על RIP כבסיס לתקשור ולייצור הממשק, ומתמקד בבנייה הניתנת לשחזור, ברישום, בפריסת פרוקסי ובאימות של שתי דוגמאות LabVIEW VI.

בהשוואה לפיתוח קונבנציונלי של ממשק אינטרנט מותאם אישית, יצירת ממשק משתמש (UI) אוטומטית מבוססת RIP מפחיתה את הצורך בהטמעה של פריסות בקרה, לוגיקה של קישור משתנים ופונקציות תקשורת בסיסיות כאשר מספר ניסויי LabVIEW חושפים משתני קלט ופלט סקלאריים דומים8,9,10,11. לאחר ש-VI חדש נרשם ומשתניו זמינים לשרת ה-RIP, ניתן להשתמש שוב באותה לוגיקה של קריאת מטא-נתונים ויצירת בקרות כדי לבנות את ממשק האינטרנט הבסיסי10,11. תכונה זו מועילה לפריסה מהירה, להדגמות לימודיות ולפלטפורמות של מעבדות מרחוק הדורשות גישה עקבית למספר ניסויים דומים3,8,9. עם זאת, לממשק המיוצר באופן אוטומטי יש גם מגבלות. הוא אינו מסיק באופן מלא את הקשרים הפיזיים בין המשתנים, אינו קובע אוטומטית מיפויים של תרשימים ואינו מעצב אינטראקציות של בטיחות וויזואליזציה ספציפיות לתחום11. לכן, פיתוח ידני של ממשק אינטרנט נותר מועדף כאשר ניסוי דורש גרפיקה מותאמת אישית במיוחד, זרימות עבודה מורכבות של משתמשים, ויזואליזציה מתקדמת, מנעי בטיחות של חומרה או בוררות כתיבה עבור מספר משתמשים.

זרימת העבודה הכללית של הפרוטוקול מסוכמת ב-איור 1. בזרימה זו, LabVIEW VI מגדיר תחילה את בקרות הקלט ומחווני הפלט הנדרשים בלוח הבקרה (Front Panel). לאחר מכן, ה-VI נרשם ב-RIP Server Configuration על ידי ציון שם הניסוי ונתיב ה-VI. לאחר הרישום, שרת ה-RIP קורא את המטא-דאטה של הניסוי הנבחר ומספק גישת קריאה/כתיבה למשתנים הזמינים. דף האינטרנט ב-XHTML משתמש במטא-דאטה שהוחזר כדי להפיק באופן אוטומטי את בקרות הקלט ותצוגות הפלט התואמות, בעוד ש-Caddy מספק נתיב גישה מאוחד עבור דף האינטרנט הסטטי ונתיבי התקשורת של ה-RIP. מודלים של מאוורר ומנוע זרם ישר משמשים במחקר זה כשתי מימושים של אותה זרימת עבודה. עבור ניסויי LabVIEW אחרים המספקים משתנים סקלריים, מספריים ובוליאניים תואמים, מפתחים יכולים לעקוב אחר אותה זרימת עבודה של בנייה-רישום-פריסה-אימות כדי ליצור ממשק אינטרנט שנוצר באופן אוטומטי, תוך הוספת ויזואליזציה ספציפית לניסוי, לוגיקת בטיחות או טיפול בנתונים מורכבים בעת הצורך.

מאמר זה אינו מציע ארכיטקטורת RIP חדשה או מרחיב את מגוון סוגי הנתונים הנתמכים כבר על ידי RIP. במקום זאת, הוא משתמש ב-RIP כמנגנון התקשורת המקובל ומנגנון יצירת ממשק משתמש (UI) מבוסס-מטא-נתונים, ומתמקד בתיקוף של אותו תהליך עם שתי מערכות LabVIEW שונות, תוך תיעוד פרוטוקול יישום הניתן לשחזור. עבודות קודמות הציגו שיטה בסיסית ליצירה אוטומטית של ממשק משתמש רשת המבוססת על מטא-נתוני RIP, והשתמשו בניסוי במנוע סרוו מקוון כמקרה בוחן11. ארכיטקטורות של מעבדות מרחוק מבוססות-רשת המשלבות ממשקים אינטראקטיביים עם תוכנות הנדסיות ו-LabVIEW דווחו גם במחקרים קודמים9,12. עם זאת, במהלך שחזור מעשי, חלק מדגמי ה-LabVIEW במקרה הבוחן המקורי הושפעו מגרסאות תוכנה ומבעיות תאימות של מודולים, מה שהקשה על השימוש הישיר בהם בסביבה חדישה יותר. לפיכך, העבודה הנוכחית בונה מחדש שני VIs תואמים בצד השרת (back-end)—דגם של מאוורר ומודל בקרת מיקום פרופורציונלי-אינטגרלי-דיפרנציאלי (PID) עבור מנוע זרם ישר (DC)—ומחילה את אותו תהליך יצירת ממשק משתמש מונחה-מטא-נתונים על שניהם. התרומה היא התיקוף של זרימת העבודה (workflow) המבוססת על RIP על פני מערכות שונות ופרוטוקול מפורט לשחזור התהליך, ולא הרחבת הכלליות של RIP.

המשתמשים המיועדים של פרוטוקול זה הם חוקרים, מרצים ומפתחי מעבדות שכבר משתמשים ב-LabVIEW VIs וזקוקים לחשוף מודלי סימולציה או מערכות ניסיוניות ברמת סיכון נמוכה באמצעות דפדפן אינטרנט, מבלי להטמיע באופן עצמאי ממשק קדמי מותאם אישית ומלא עבור כל מודל. הפרוטוקול מתאים במיוחד לניסויים המשתמשים במשתנים מספריים ובוליאניים סטנדרטיים, כוונון פרמטרים וניטור מצב בזמן אמת10,11. הוא פחות מתאים כפתרון עצמאי לניסויים הדורשים מבני נתונים מורכבים, ויזואליזציה ייעודית, מנגנוני נעילה בטיחותיים קשיחים של חומרה או בוררות כתיבה עבור מספר משתמשים11. מטרת עבודה זו היא לתקף יצירה אוטומטית של ממשק משתמש (Web UI) מבוסס RIP באמצעות שתי מערכות LabVIEW שונות, ולספק פרוטוקול מלא וניתן לשחזור, החל מבניית ה-VI של ה-back-end ועד לאינטראקציה מבוססת דפדפן. הפרוטוקול כולל הגדרת משתני קלט ופלט, רישום ניסוי ב-RIP Server, יצירת ממשק משתמש המבוססת על מטא-דאטה, פריסת פרוקסי Caddy ואימות קריאה/כתיבה מרחוק. יישום אותו זרימת עבודה על מודלי המאוורר ומנוע ה-DC מדגים כי ניתן לשחזר את התהליך שנקבע מבלי לכתוב מחדש ידנית ממשק קדמי מלא עבור כל דוגמה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 משמשת רק כספרייה לדוגמה ואינה מוטמעת קשיח (hardcoded) ב-RIP. הזן את הנתיב הממשי שנבחר עבור ה-VI במהלך רישום הניסוי ב-RIP.
    2. בפאנל הקדמי, הוסף את בקרים הקלט עבור דגם המאוורר. בדוגמה זו, תן שמות לבקרי הקלט אפשר, הספק פולסים (PWM), עומס, טאו, KMaxRPM, ו- הפרעהקביעה הפעל כביקורת בוליאנית, וקבעו PWM, עומס, טאו (Tau), KMaxRPMו- הפרעה כבקרים מספריים של נקודה צפה בדיוק-כפול (DBL). ראה טבלה משלימה 1 עבור המשמעות הפיזיקלית ותפקיד המודל של משתני המאוורר.
    3. הוסף את מחווני הפלט עבור מודל המאוורר. בדוגמה זו, תן שם למחווני הפלט מהירותRPM, מהירותקבועהRPM, זמןS, מהירותנורמלית, זרםA, ו- PowerWהגדר את כל מחווני הפלט כמחווני DBL.
      ​הערה: טבלה 1 מתאר את המשמעות הפיזיקלית ואת תפקידם במודל של משתני פלט אלה. פאנל החזית המורכב של המאוורר מוצג ב- איור 2שמות המשתנים, הטווחים וגדלי הצעדים המוצגים ב- טבלה 1 תארו את שתי הדוגמאות המיושמות בפרוטוקול זה. אלו אינן דרישות מקובעות (hardcoded) של RIP. בניסויי LabVIEW אחרים, מפתחים עשויים להגדיר שמות משתנים שונים בלוח הבקרה (Front Panel) ותכונות מספריות שונות. שרת ה-RIP קורא את שמות המשתנים בפועל, את סוגי הנתונים, את תכונות הקלט/פלט ואת התכונות המספריות הזמינות מתוך המטא-נתונים של ה-VI, ודף האינטרנט יוצר את הבקרים והתצוגות התואמים מתוך המטא-נתונים שהוחזרו.
    4. הוסיפו לולאת While לתרשים הבלוקים. הוסיפו שני אוגרי הזזה (Shift Registers) לאחסון מהירות_קודמת ו- זמן קודם, ואתחלו את שני הערכים ל-0.
    5. הוסף צומת נוסחאות (Formula Node) בתוך לולאת ה-While. חבר הפעלה, PWM, עומס, טאו, KMaxRPM, הפרעה, מהירות_קודמת, ו- זמן_קודם אל הדקי הקלט השמאליים של ה-Formula Node, והגדר SteadyRPM, speed_next, SpeedNorm, CurrentA, PowerW, ו- הזמן הבא כמסופי הפלט הימניים.
    6. בנה את ה- הפעל לוגיקת בקרה מחוץ לצומת הנוסחה. השתמש ב- הפעל כאות הבחירה, כך ש- u = אפנון רוחב פולס (PWM) מתי הפעל הוא אמת ו u = 0 מתי הפעל הוא שגוי.
    7. הזינו את קוד דגם המאוורר בצומת הנוסחאות. השתמשו בקוד זה כדי לחשב מהירות במצב יציב, מהירות בפועל, מהירות מנורמלת, זרם, הספק וזמן ריצה; עיינו בקובץ הקידוד הנלווה 1 (Supplementary Coding File 1) לקבלת הקוד המלא.
    8. חבר את ה- מהירות_הבא את פלט צומת הנוסחאות (Formula Node) אל ה- מהירות-RPM אינדיקטור, וחבר מהירות_הבא חזרה לאוגר ההסטה (Shift Register) ימינה עבור מהירות_קודמתחבר SteadyRPM אל ה- SteadyRPM אינדיקטור
    9. חבר זמן_הבא אל ה- TimeS אינדיקטור, וחבר הזמן הבא חזרה אל אוגר ההזזה (Shift Register) ימינה עבור זמן_קודםחבר SpeedNorm, CurrentA, ו- PowerW למדדי הפלט המתאימים.
    10. הוסיפו פונקציית Wait (המתנה) בתוך לולאת ה-While והגדירו את זמן ההמתנה ל-50 מילי-שניות (ms). הוסיפו כפתור Stop Local וחברו אותו לטרמינל התנאי של לולאת ה-While.
    11. שמרו את הקובץ fengshan.vi. תרשים הבלוקים שהושלם של המאוורר מוצג ב- איור 3.
      נקודת עצירה: לאחר שמירת ה-VI של המאוורר שהושלם, ניתן להפסיק את זרימת העבודה. ניתן להמשיך מאוחר יותר על ידי פתיחה מחדש של ה-VI השמור ואישור שכל הבקרים, האינדיקטורים והחיבורים ב-Block Diagram עדיין קיימים ב-Front Panel.
  2. רשום את ניסוי המאוורר בשרת ה-RIP.
    1. פתח את RIPWebService.lvproj ב-LabVIEW Project Explorer
      .
    2. פתח את הקובץ Configuration.vi מעץ הפרויקט ואתר את טבלת הגדרות הניסוי.
    3. הוסף שורה חדשה של ניסוי. הגדר את השם (Name) כ-fan. הגדר את הנתיב המלא לקובץ fengshan.vi השמור. שדות הרישום עבור ניסוי ה-fan מוצגים ב- איור 4.
    4. מלאו את שדות התצורה הנותרים. הגדירו את Authors (מחברים) למחבר הניסוי, את Keywords (מילות מפתח) ל-Fan, את Description (תיאור) ל-fan speed model, ואת Sampling Freq (תדירות דגימה) ל-200.
    5. בתפריט ה-LabVIEW, בחר עריכה > הגדר ערכים נוכחיים כברירת מחדלSave Configuration.vi.
    6. הפעילו מחדש את ה-RIP WebService ואשרו כי ניסוי המאוורר עדיין מופיע בממשק התצורה (Configuration interface) לאחר ההפעלה מחדש.
      הערה: שם הניסוי הוא רגיש לרבציות (case-sensitive). הערך בשדה fan תחת RIP Configuration חייב להתאים בדיוק למזהה הניסוי (experiment ID) המשמש בקובץ ה-XHTML של צד הלקוח (front-end). כדי לפרוס VI אחר של LabVIEW עם אותו לוגיקה של יצירה אוטומטית של ממשק משתמש, יש להוסיף רשומה חדשה של ניסוי ב-RIP Configuration, להגדיר ערך Name חדש, ולהגדיר את ה-Path לקובץ ה-VI המתאים. לאחר מכן, השתמש באותו ערך Name כמזהה הניסוי בקובץ ה-XHTML. אין צורך לכתוב מחדש את דף צד הלקוח עבור כל משתנה.
      ​נקודת עצירה: לאחר שמירת Configuration.vi והגדרת הערכים הנוכחיים כברירת מחדל, ניתן להפסיק את זרימת העבודה. ניתן להמשיך מאוחר יותר על ידי הפעלה מחדש של RIP WebService ואישור שניסוי המאוורר עדיין רשום.
  3. הכינו את העמוד הקדמי עבור ניסוי המאוורר.
    1. מקם את הקובץ Fan_Automatic_UI.xhtml בספריית ה-Client המשמשת כספריית השורש של צד הלקוח (front-end).
    2. פתח את הקובץ Fan_Automatic_UI.xhtml באמצעות עורך טקסט.
    3. אתר את משתנה מזהה הניסוי (experiment ID) בחלק הסקריפט והגדר אותו כ-fan.
      הערה: ערך זה חייב להתאים בדיוק לשדה השם (Name) של ניסוי המאוורר בהגדרות ה-RIP. הגדרות המזהה של הניסוי ולוגיקת יצירת ממשק המשתמש המבוססת על מטא-נתונים משותפים עבור קבצי ה-XHTML של צד הלקוח מוצגים ב- איור 5.
    4. וודאו כי הדף מקבל את מקור הגישה הנוכחי באמצעות window.location.origin, ומבקש מטא-נתונים של הניסוי באמצעות rip.info(), ומעבירה את המטא-דאטה שהוחזר אל בנייה אוטומטית של ממשק משתמש().
      הערה: אין להזין באופן ידני את שמות המשתנים של המאוורר, את הטווחים או את גדלי הצעדים בדף. במקום זאת, משתנים הניתנים לכתיבה מיוצרים מ- רשימת כתיבה של מטא-נתונים, משתנים קריאים נוצרים מ- רשימת קבצים קריאיםומהותים מספריים כגון min, max ו-step מתקבלים מהמטא-דאטה המוחזר על ידי שרת ה-RIP.
    5. שמור את Fan_Automatic_UI.xhtml.
      ​הערה: כדי להשתמש באותה לוגיקת יצירה של ממשק המשתמש (front-end) עבור VI אחר של LabVIEW, הגדירו מזהה ניסוי (experiment ID) חדש בקובץ ה-XHTML ורשמו את שם הניסוי ונתיב ה-VI התואמים ב-RIP Configuration. בקרי הרשת ותצוגות הפלט נוצרים בהתאם למטא-נתונים המוחזרים מהניסוי הנבחר.
  4. הגדר את נתיב הגישה של ה-Caddy עבור ניסוי המאוורר.
    1. פתח את ה-Caddyfile באמצעות עורך טקסט.
    2. הגדירו את ספריית השורש של צד הלקוח (front-end root directory) לספריית ה-Client המכילה את הקובץ Fan_Automatic_UI.xhtml.
    3. בחרו פורט מקומי שאינו בשימוש עבור Caddy כדי לאפשר גישה דרך הדפדפן לדף האינטרנט ולנתיבי RIP. בפרוטוקול זה, פורט 8090 משמש כפורט לדוגמה עבור גישת פרוקסי.
      הערה: יש端口 8090 אינו נדרש על ידי RIP או Caddy. אם פורט 8090 תפוס, החליפו אותו בפורט מקומי אחר שאינו בשימוש והשתמשו באותו פורט בכתובת הדפדפן.
    4. הוסף נתיב המבצע כתיבה מחדש (rewrite) של /fan ל-Fan_Automatic_UI.xhtml.
    5. זהה את הפורט של ה-RIP WebService שהוגדר ב-LabVIEW. בפרוטוקול זה, http://localhost:8001 משמש ככתובת ה-RIP WebService.
      הערה: פורט 8001 הוא פורט ה-back-end של ה-LabVIEW/RIP WebService המשמש בסביבת הבדיקה. ניתן לשנות אותו בהגדרות ה-LabVIEW/RIP WebService. אם נעשה שימוש בפורט אחר, החליפו את http://localhost:8001 ב-Caddyfile בכתובת ה-RIP WebService המתאימה.
    6. הוסף כלל reverse proxy המפנה בקשות מסוג /RIP/SSE* לכתובת ה-WebService של RIP, לדוגמה http://localhost:8001.
    7. הוסיפו כלל פרוקסי הפוך (reverse proxy) השולח בקשות מסוג /RIP* לכתובת ה-WebService של RIP, כגון 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 עולה ללא דיווח על שגיאת תצורה. פתחו את כתובת ה-URL ‏http://localhost:8090/fan בדפדפן אינטרנט ואמתו כי ממשק המשתמש הגרפי של המאוורר נוצר, כפי שמוצג ב- איור 7.
      ​הערה: אם הדפדפן מחזיר שגיאת 502, יש לוודא ש-RIP WebService פועל, שפורט ה-RIP WebService ב-LabVIEW תואם לכתובת ה-reverse proxy ב-Caddyfile, וכי פורט הגישה הנבחר ב-Caddy אינו תפוס.
  5. אמתו את תוצאות התפעול של ניסוי המאוורר.
    1. וודא שדף קצה הממשק (front-end) מייצר באופן אוטומטי את ה- הפעל, PWM, עומס, טאו, KMaxRPM, ו הפרעה בקרות קלט.
    2. וודאו שהדף הקדמי מציג את ה- מהירותRPM, מהירותקבועהRPM, זמןS, מהירותנורמלית, זרםA, ו- PowerW משתני פלט.
    3. כוון אפנון רוחב פולס (PWM) ובחן האם מהירות (סל"ד) עולה ככל ש- אפנון רוחב דופס (PWM) עולה ויורד ככל ש- אפנון רוחב פולס (PWM) פוחת.
    4. כוון את העומס ובדוק האם SteadyRPM ו- מהירותRPM פוחת ככל שהעומס עולה.
    5. כוון את ההפרעה ובדוק אם מהירותRPM, זרםA, ו- PowerW שינוי בתגובה לקלט ההפרעה.
    6. וודא ש- TimeS ממשיכה לעלות, מה שמאשר כי מאוורר האחור (back-end fan VI) פועל באופן רציף.

2. בנייה והפעלה של ניסוי בקרת מיקום PID למנוע DC

  1. בניית מודל ה-VI לבקרת מיקום PID של מנוע DC.
    1. פתחו את LabVIEW, צרו VI חדש ושמרו את הקובץ בשם Motor.vi. שמרו את ה-VI בכל ספרייה שניתן לגשת אליה באמצעות תהליך ה-RIP WebService.
      הערה: תיקיית Private משמשת רק כספריית דוגמה ואינה מקודדת באופן קשיח ב-RIP. הזינו את נתיב ה-VI שנבחר בפועל במהלך רישום הניסוי ב-RIP.
    2. בפאנל הקדמי (Front Panel), הוסיפו את בקרות הקלט עבור מודל בקרת המיקום PID של מנוע ה-DC. בדוגמה זו, תנו לבקרות הקלט את השמות Setpoint, Kc, Ti, Td, Disturbance ו-Reset control. הגדירו את Setpoint, Kc, Ti, Td, ו-Disturbance כבקרות מספריות מסוג DBL, והגדירו את Reset control כבקרת Boolean.
      הערה: טבלה 1 מתארת את המשמעות הפיזיקלית, את תפקיד המודל ואת הטווח המומלץ של המשתנים המשמשים בדוגמה זו.
    3. הוסיפו את מחווני הפלט עבור מודל בקרת המיקום PID של מנוע ה-DC. בדוגמה זו, תנו למחווני הפלט את השמות Position, Voltage, Time, ו-Measured angular velocity. הגדירו את כל מחווני הפלט כמחווני DBL. טבלה 1 מתארת את המשמעות הפיזיקלית ואת תפקיד המודל של משתני פלט אלו. הפאנל הקדמי המוגמר עבור המנוע מוצג ב-איור 8.
      הערה: שמות המשתנים והטווחים המפורטים ב-טבלה 1 מתארים את שתי הדוגמאות המיושמות בפרוטוקול זה. אלו אינן דרישות קבועות עבור זרימת העבודה של יצירת ממשק משתמש (UI) אוטומטית מבוססת RIP. כאשר נעשה שימוש ב-LabVIEW VI אחר, RIP קורא את שמות המשתנים בפועל, את סוגי הנתונים, את תכונות הקלט/פלט ואת התכונות המספריות הזמינות מתוך המטא-דאטה של ה-VI. לכן, לוגיקת יצירת צד-הלקוח אינה צריכה לקודד באופן קשיח את שמות המשתנים, ערכים מקסימליים, ערכים מינימליים או גודלי צעדים עבור כל ניסוי.
    4. הוסיפו לולאת While לתרשים הבלוקים (Block Diagram). הוסיפו שישה אוגרי העברה (Shift Registers) לאחסון של theta, omega, im, e_prev, integ, ו-time, ואתחלו את כל ששת הערכים ל-0.
    5. הוסיפו צומת נוסחאות (Formula Node) בתוך לולאת ה-While. בהתאם לתרשים מודל בקרת המיקום PID של מנוע ה-DC המוצג ב-איור 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 a כטרמינלי הקלט של צומת הנוסחאות. הגדירו את theta_next, omega_next, im_next, e_next, integ_next, ו-voltage כטרמינלי הפלט של צומת הנוסחאות.
    7. חברו את בקרת ה-Setpoint לטרמינל הקלט sp של צומת הנוסחאות. חברו את Kc, Ti, Td, ו-Disturbance לטרמינלי הקלט Kc, Ti, Td, ו-disturbance i של צומת הנוסחאות, בהתאמה.
    8. המירה את אות ה-Boolean של בקרת ה-Reset לאות מספרי וחברו אותו לטרמינל הקלט reset של צומת הנוסחאות. בצעו איפוס מצב כאשר reset אינו שווה ל-0, ובצעו בקרת PID ועדכון מצב מנוע כאשר reset שווה ל-0.
    9. הוסיפו את הקבוע המספרי dt והגדירו את ערכו ל-0.001 s. חברו את ה-dt לטרמינל הקלט dt של צומת הנוסחאות והשתמשו בו לעדכון הזמן (Time updating).
    10. הגדירו את פרמטרי המודל הפנימיים של מנוע ה-DC בצומת הנוסחאות. ראו טבלה משלימה 2 עבור המשמעות הפיזיקלית ותפקיד המודל של משתני המנוע.
    11. הזינו את קוד בקרת המיקום PID של מנוע ה-DC בצומת הנוסחאות. השתמשו בקוד זה כדי ליישם לוגיקת איפוס, חישוב שגיאה, חישוב איבר אינטגרלי, חישוב איבר דיפרנציאלי, בקרת PID, הגבלת מתח, עדכון זרם, עדכון מהירות זוויתית ועדכון מיקום; ראו את קובצי הקוד המשלימים לקוד המלא.
    12. חברו את theta_next למחוון ה-Position, וחברו את theta_next חזרה לאוגר ההעברה הימני עבור theta. חברו את omega_next למחוון ה-Measured angular velocity indicator, וחברו את omega_next חזרה לאוגר ההעברה הימני עבור omega.
    13. חברו את המתח למחוון ה-Voltage. חברו את im_next, e_next, ו-integ_next חזרה לאוגרי ההעברה הימניים עבור im, e_prev, ו-integ, בהתאמה.
    14. השתמשו בפונקציית Add מחוץ לצומת הנוסחאות כדי לחשב time_next = time + dt. חברו את time_next למחוון ה-Time, וחברו את time_next חזרה לאוגר ההעברה הימני עבור time.
    15. הוסיפו פונקציית Wait בתוך לולאת ה-While והגדירו את זמן ההמתנה ל-1 ms. הוסיפו כפתור Stop וחברו אותו לטרמינל התנאי של לולאת ה-While.
    16. שמרו את Motor.vi. תרשים הבלוקים המוגמר של המנוע מוצג ב-איור 10.
      נקודת עצירה: לאחר שמירת ה-VI המוגמר של המנוע, ניתן להפסיק את זרימת העבודה. חזרו אליה מאוחר יותר על ידי פתיחה מחדש של ה-VI השמור ואישור שכל בקרות הפאנל הקדמי, המחוונים וחיבורי תרשים הבלוקים עדיין קיימים.
  2. רישום ניסוי המנוע בשרת RIP.
    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 Configuration, הגדירו ערך Name חדש, והגדירו Path לקובץ ה-VI המתאים. לאחר מכן השתמשו באותו ערך Name כמזהה הניסוי בקובץ ה-XHTML. אין צורך לכתוב מחדש את דף צד-הלקוח עבור כל משתנה.
      ​נקודת עצירה: לאחר שמירת Configuration.vi והגדרת הערכים הנוכחיים כברירת מחדל, ניתן להפסיק את זרימת העבודה. חזרו אליה מאוחר יותר על ידי הפעלה מחדש של RIP WebService ואישור שניסוי ה-Motor עדיין רשום.
  3. הכנת דף צד-הלקוח עבור ניסוי המנוע.
    1. מקמו את Motor_Automatic_UI.xhtml בספריית Client המשמשת כספריית השורש של צד-הלקוח.
    2. פתחו את Motor_Automatic_UI.xhtml באמצעות עורך טקסט.
    3. אתרו את משתנה מזהה הניסוי (experiment ID) בחלק הסקריפט והגדירו אותו כ-Motor. ערך זה חייב להתאים בדיוק לשדה ה-Name של ניסוי המנוע ב-RIP Configuration. דף צד-הלקוח של המנוע משתמש באותה לוגיקת יצירת ממשק משתמש מבוססת מטא-דאטה המוצגת ב-איור 5; רק מזהה הניסוי שונה כדי להתאים לרשומת ה-Motor ב-RIP Configuration.
    4. וודאו שהדף מכיל את לוגיקת קריאת המטא-דאטה של RIP, את לוגיקת יצירת בקרת ה-HTML, את פונקציית הכתיבה של RIP ואת פונקציית עדכון הפלט.
      הערה: הדף לא צריך לקודד באופן ידני את שמות משתני המנוע, הטווחים או גדלי הצעדים. תכונות אלו נגזרות מהמטא-דאטה המוחזר משרת RIP, בהתאם למנגנון יצירת HTML ממטא-דאטה מבוסס RIP שתואר קודם לכן11.
    5. שמרו את Motor_Automatic_UI.xhtml.
      ​הערה: כדי להשתמש באותה לוגיקת יצירת צד-לקוח עבור LabVIEW VI אחר, הגדירו מזהה ניסוי חדש בקובץ ה-XHTML ורשמו את שם הניסוי (Name) ונתיב ה-VI (VI Path) המתאימים ב-RIP Configuration. בקרות הרשת ותצוגות הפלט נוצרות בהתאם למטא-דאטה המוחזר מהניסוי שנבחר.
  4. הגדרת נתיב גישת Caddy עבור ניסוי המנוע.
    1. פתחו את ה-Caddyfile באמצעות עורך טקסט.
    2. הגדירו את ספריית השורש של צד-הלקוח לספריית Client המכילה את Motor_Automatic_UI.xhtml.
    3. בחרו פורט מקומי שאינו בשימוש עבור Caddy כדי לספק גישה בדפדפן לדף האינטרנט ולנתיבי RIP. בפרוטוקול זה, פורט 8090 משמש כפורט גישה לדוגמה כפרוקסי.
      הערה: פורט 8090 אינו נדרש על ידי RIP או Caddy. אם פורט 8090 תפוס, החליפו אותו בפורט מקומי אחר שאינו בשימוש והשתמשו באותו פורט בכתובת הדפדפן.
    4. הוסיפו נתיב הממיר (rewrites) את /motor ל-Motor_Automatic_UI.xhtml.
    5. זהו את פורט ה-RIP WebService שהוגדר ב-LabVIEW. בפרוטוקול זה, http://localhost:8001 משמש ככתובת ה-RIP WebService.
      הערה: פורט 8001 הוא פורט ה-back-end של 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 ובחנו האם Position, Voltage, Measured angular velocity, והמצבים הפנימיים הקשורים חוזרים למצביהם הראשוניים בהתאם ללוגיקת האיפוס.

תוצאות

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

לאחר השלמת זרימת העבודה המתוארת לעיל, ניתן לגשת הן לניסוי המאוורר והן לניסוי בקרת המיקום PID של מנוע DC באמצעות ממשק המשתמש (Web front end) שנוצר באופן אוטומטי. תוצאה מוצלחת מקומית בשלוש תצפיות. ראשית, דף האינטרנט מייצר באופן אוטומטי בקרות קלט ושדות תצוגת פלט בהתאם למטא-דאטה של המשתנים שהוחזרו על ידי שרת ה-RIP. שנית, כאשר המשתמש משנה משתנה קלט בדף האינטרנט, הערך המעודכן נכתב ל-VI של ה-back-end ב-LabVIEW דרך ממשק ה-RIP. שלישית, משתני הפלט שחושבו על ידי ה-VI ב-back-end מוחזרים דרך ה-RIP ומתעדכנים בדף האינטרנט בזמן אמת. עבור ניסוי המאוורר, לאחר הזנת http://localhost:8090/fan בדפדפן, הדף מייצר באופן אוטומטי בקרות קלט ושדות פלט ממטא-דאטה של ה-RIP, כפי שמוצג ב-איור 7. צד הקלט כולל את Enable, PWM, Load, Tau, KMaxRPM, ו-Disturbance, בעוד שצד הפלט מציג את SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, ו-PowerW. במהלך פעולה תקינה, TimeS עולה ללא הרף, מה שמעיד על כך שקובץ ה-fengshan.vi ב-back-end פועל. כאשר PWM עולה, SpeedRPM ו-SteadyRPM עולים בהתאם. כאשר Load עולה, מהירות המאוורר יורדת מכיוון שה-load מפחית את מהירות הפעולה היציבה. כאשר Disturbance משתנה, ניתן להבחין בשינויים תואמים ב-SpeedRPM, CurrentA, ו- PowerW. תצפיות אלו מאשרות כי קלטי צד ה-Web מועברים בצורה נכונה ל-back end של LabVIEW וכי הפלטים שחושבו מוחזרים לצד הממשק (front end) דרך ה-RIP.

בניסוי לבקרת מיקום PID של מנוע DC, לאחר הזנת הכתובת http://localhost:8090/motor בדפדפן, הדף מייצר באופן אוטומטי את הבקרים ושדות הפלט המתאימים מתוך מטא-נתוני ה-RIP, כפי שמוצג ב-איור 12. משתני הקלט כוללים את Setpoint, Kc, Ti, Td, Disturbance ובקרת Reset, ומשתני הפלט כוללים את Position, Voltage, Time ו-Measured angular velocity. כאשר משנים את ה-Setpoint, ה-Position מגיב לערך היעד החדש. כאשר מתאימים את פרמטרי ה-PID Kc, Ti ו-Td, תגובת הפלט, מתח הבקרה והמהירות הזוויתית הנמדדת משתנים בהתאם, מה שמעיד על כך שערכי הפרמטרים שהוזנו בדף האינטרנט נכתבים כראוי למודל ה-LabVIEW ב-back-end ומשתתפים בחישוב הבקרה. כאשר בקרת ה-Reset מופעלת, משתני המודל חוזרים למצבם ההתחלתי בהתאם ללוגיקת האיפוס.

מצבי כשל ותקשורת בצד הדפדפן מוצגים ב-איור 13, איור 14, איור 15. איור 13 מציג מקרה של גישה כושלת מהדפדפן שבו Caddy אינו פועל. הדפדפן מנסה לגשת ל-http://localhost:8090/motor אך מציג הודעת ERR_CONNECTION_REFUSED, המעידה על כך ששירות הפרוקסי המקומי אינו זמין או שאינו מאזין בפורט הגישה הנבחר. איור 14 מציג כשל בתקשורת RIP POST לאחר טעינת הדף. במקרה זה, קונסולת הדפדפן מדווחת על שגיאת 502 Bad Gateway עבור בקשת ה-RIP POST, המעידה על כך שהצד הקדמי (front end) הגיע לכתובת הפרוקסי, אך הבקשה אינה יכולה להיות מועברת בהצלחה אל ה-RIP WebService בצד האחורי (back end), או שאינה מעובדת על ידיו. לעומת זאת, איור 15 מציג מצב תקשורת תקין בצד הדפדפן. כלי המפתחים של הדפדפן מראים טעינה מוצלחת של הדף, בקשות RIP POST ובקשת SSE פעילה עם expId=fan, המעידה על כך שהצד הקדמי של האינטרנט מתקשר עם ה-RIP WebService באמצעות פרוקסי Caddy ומקבל עדכונים בזמן אמת דרך ערוץ ה-SSE.

ביחד, התוצאות המוצלחות של המאוורר והמנוע ותוצאות האבחון בצד הדפדפן מדגימות כי ניתן לשחזר את אותו תהליך עבודה אוטומטי להפקת ממשק משתמש מבוסס מטא-נתונים עבור שני ניסויי LabVIEW שונים. תוצאות אלו מספקות גם קריטריונים ניתנים לצפייה להבחנה בין תקשורת מוצלחת לבין כשלים מייצגים בפריסה, בעוד שנהלי פתרון התקלות התואמים נידונים בסעיף הדיון.

דיאגרמת LabVIEW VI, שרת RIP, פרוקסי Caddy; זרימת תהליך ממשק משתמש אינטרנטי שנוצר באופן אוטומטי.
איור 1: מבנה מערכת הניסוי הכוללת. המערכת מורכבת מה-VI של ה-back-end ב-LabVIEW, שרת RIP, פרוקסי Caddy וממשק משתמש (Web UI) שנוצר באופן אוטומטי. ה-LabVIEW VI מספק משתני מודל, שרת ה-RIP קורא את המטא-דאטה של ה-VI ואת ערכי המשתנים, Caddy מאחד את נתיב הגישה ופותר גישה חוצת מקורות (cross-origin access), וממשק המשתמש האינטרנטי מייצר בקרים באופן אוטומטי. השם והלוגו של Caddy מוצגים רק כדי לזהות את רכיב שרת האינטרנט/פרוקסי של Caddy המשמש בזרימת העבודה. אנא לחץ כאן כדי לצפות בגרסה מוגדלת של איור זה.

דיאגרמת מערכת בקרת מנוע עם קלט/פלט; תרשים 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, אוגרי הזזה (Shift Registers), לוגיקת Enable, צומת נוסחאות (Formula Node) ומסכי תצוגה של פלט. צילום מסך זה נלקח מתרשים הבלוקים של fengshan.vi ב-LabVIEW 2026 בסביבת הניסויים המקומית של המחברים. לא נכללו נתוני משתמש של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה גדולה יותר של איור זה.

ממשק הגדרות LabVIEW המציג את הגדרות דגם המאוורר ונתיבי המצלמה לדגימת נתונים.
איור 4: דף ההגדרות של fan.vi. ניסוי המאוורר רשום ב-RIP Configuration עם שם הניסוי fan, נתיב ה-VI בפועל, מידע על מילות מפתח, תיאור ותדירות דגימה. צילום מסך זה נלקח מממשק ה-RIP Configuration המשמש עם LabVIEW 2026 ו-RIP WebService בסביבה הניסויית המקומית של המחברים. לא נכללו נתוני משתמש של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה גדולה יותר של איור זה.

תרשים זרימה של קוד הממחיש לוגיקת UI מבוססת מטא-דאטה ב-JavaScript לאתחול נתונים.
איור 5: הגדרות Experiment ID ולוגיקת יצירת UI מבוססת מטא-דאטה בקבצי ה-XHTML של ה-front-end. צילומי המסך של קוד ה-XHTML נלקחו מהקבצים Fan_Automatic_UI.xhtml ו-Motor_Automatic_UI.xhtml שנפתחו ב-Visual Studio Code. דפי המאוורר והמנוע משתמשים באותה לוגיקת קריאת מטא-דאטה ויצירת בקרה; רק ה-experiment ID שונה כדי להתאים לשדה ה-Name התואם ב-RIP Configuration. צילומי המסך של קוד ה-XHTML נלקחו מהקבצים Fan_Automatic_UI.xhtml ו-Motor_Automatic_UI.xhtml שנפתחו ב-Visual Studio Code בסביבת הפיתוח המקומית של המחברים. קבצי הקוד הוכנו על ידי המחברים עבור פרוטוקול זה. לא נכללו נתוני משתמש של צד שלישי או מידע חסוי. אנא לחצו כאן כדי להציג גרסה מורחבת של איור זה.

דיאגרמת הגדרות של שרת Caddy המציגה פרוקסי הפוך (reverse proxy), נתיבי ניתוב ופרטי הגדרת פורטים.
איור 6: הגדרות Caddyfile. ה-Caddyfile מגדיר את פורט הגישה של הפרוקסי המקומי, קובע את ספריית השורש של ה-front-end, מבצע כתיבה מחדש (rewrites) של נתיבי /fan ו-/motor לקובצי XHTML המתאימים, ומבצע פרוקסי הפוך לבקשות /RIP/SSE* ו-/RIP* אל פורט ה-WebService של LabVIEW/RIP. צילום המסך של הגדרות ה-Caddyfile נלקח מתוך קובץ ה-Caddyfile שנפתח ב-Visual Studio Code בסביבת הפיתוח המקומית של המחברים. ה-Caddyfile הוכן על ידי המחברים כדי להגדיר את Caddy כשרת אינטרנט מקומי וכפרוקסי הפוך. לא נכללו נתוני משתמשים של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה מורחבת של איור זה.

דיאגרמת סימולציה של בקרת מהירות מאוורר; מריקי קלט, תצוגות פלט; ניתוח מערכת מכנית.
איור 7: דף ממשק משתמש (Web UI) של fan.vi. צילום מסך זה של ממשק האינטרנט נלקח מדף האינטרנט של המאוורר שהופעל מקומית על ידי המחברים באמצעות Mozilla Firefox. דף הקדמה (front-end) מייצר באופן אוטומטי בקרי קלט ותצוגות פלט על בסיס מטא-נתוני המשתנים שמוחזרים משרת ה-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. התרשים מציג את נתיב האות משגיאת נקודת העיגון, בקרת PID, הגבלת מתח, סכימת הפרעות, דינמיקה חשמלית, דינמיקה מכנית ועדכון מיקום למשוב. אנא לחץ כאן כדי לצפות בגרסה גדולה יותר של איור זה.

דיאגרמת תוכנית LabVIEW הממחישה אוגרי הזזה, צומת נוסחאות, לולאת בקרה למשוב מיקום.
איור 10: דיאגרמת בלוקים של ה-VI של המנוע. מודל המנוע ממומש באמצעות לולאת While, אוגרי הזזה (Shift Registers), צומת נוסחאות (Formula Node), לוגיקת תזמון ומחווני פלט. צילום מסך זה נלקח מדיאגרמת הבלוקים של Motor.vi בתוכנת LabVIEW 2026 בסביבת הניסוי המקומית של המחברים. לא נכללו נתוני משתמש של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה מורחבת של איור זה.

ממשק מודל מנוע ב-LabVIEW, הגדרת נתיב לבקרת סימולציה, הגדרת דגימה, תיאור המנוע.
איור 11: דף הגדרה של Motor.vi. ניסוי המנוע רשום ב-RIP Configuration עם שם הניסוי Motor, נתיב ה-VI בפועל, מידע על מילות מפתח, תיאור ותדירות דגימה. צילום מסך זה נלקח מממשק RIP Configuration ששימש ב-LabVIEW 2026 וב-RIP WebService בסביבת הניסוי המקומית של המחברים. לא נכללו נתוני משתמש של צד שלישי או מידע סודי. אנא לחצו כאן כדי לצפות בגרסה מורחבת של איור זה.

סימולציה של מערכת בקרת PID; תרשים הכולל שורת הזזה לקלט ומדדי תצוגה של פלט לצורך ניתוח.
איור 12: דף ממשק משתמש (Web UI) של Motor.vi. דף צד-הלקוח (front-end) מייצר באופן אוטומטי בקרי קלט ותצוגות פלט עבור ניסוי בקרת מיקום PID של מנוע DC. צילום מסך זה של ממשק האינטרנט נלקח מדף האינטרנט של המנוע שהוטמע באופן מקומי על ידי המחברים באמצעות 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, אך הבקשה אינה יכולה להיות מועברת בהצלחה אל ה-back end של ה-RIP WebService או להיות מעובדת על ידיו. צילום מסך זה של קונסולת הדפדפן נלקח באמצעות Mozilla Firefox Developer Tools בסביבת הפריסה המקומית של המחברים ומראה כשל בתקשורת RIP POST 502 Bad Gateway. לא נכללו נתוני משתמשים של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה גדולה יותר של איור זה.

ממשק משתמש וירטואלי לבקרת מאוורר עם פרמטרי מהירות והספק, המציג פעילות רשת; תרשים לוח בקרה.
איור 15: סטטוס תקשורת בצד הדפדפן תחת תפעול רגיל. כלי המפתחים של הדפדפן מראים טעינה מוצלחת של הדף, בקשות RIP POST, ובקשת SSE פעילה עם expId=fan. בקשות אלו מעידות על כך שהממשק הקדמי של האינטרנט (Web front end) מתקשר עם ה-RIP WebService באמצעות פרוקסי Caddy ומקבל עדכונים בזמן אמת דרך ערוץ ה-SSE. צילום מסך זה של כלי המפתחים של הדפדפן נלכד באמצעות Mozilla Firefox בסביבת הפריסה המקומית של המחברים ומראה תקשורת RIP POST ו-SSE תקינה. לא נכללו נתוני משתמש של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה גדולה יותר של איור זה.

קונסולת המפתחים של Firefox המציגה שגיאות בקשות רשת ומצב טעינת משתנים.
איור 16: תצפית מייצגת בודדת של קונסולת הדפדפן ושל משאבי מערכת ברמת התהליך עבור ניסוי המאוורר. צילום המסך הוקלט במהלך בדיקה של ניסוי מאוורר מקומי. הקונסולה מציגה את זמן הבקשה/תגובה של המטא-נתונים, ספירת משתני מטא-נתונים, זמן יצירת ממשק משתמש (UI) מבוסס מטא-נתונים, זמן פתיחת חיבור SSE ונתוני SSE שהתקבלו. תצוגת מנהל המשימות מציגה ערכי CPU וזיכרון ברמת התהליך עבור תהליכי הדפדפן ו-LabVIEW בזמן הלכידה. ערכים אלו הם תצפיות תיאוריות מבדיקה בודדת זו ואינם מדידות ביצועים שחזרו על עצמן או מדד סטטיסטי. צילום מסך זה נלקח מכלי המפתחים של Mozilla Firefox וממנהל המשימות של Windows בסביבת הבדיקה המקומית של המחברים. Mozilla Firefox שימש להקלטת פלט קונסולת הדפדפן, ומנהל המשימות של Windows שימש לצפייה בניצול ה-CPU והזיכרון עבור תהליכי הדפדפן ו-LabVIEW. לא נכללו נתוני משתמשים של צד שלישי או מידע סודי. אנא לחצו כאן כדי להציג גרסה גדולה יותר של איור זה.

ממשק בקרת מאוורר; תרשים סנכרון נתונים עם הגדרות SpeedRPM ו-CurrentA בממשק משתמש אינטרנטי ובנייד.
איור 17: גישה סימולטנית לאותו דף אינטרנט מבוסס RIP מדפדפן שולחני ומדפדפן נייד. דף ניסוי המאוורר פתוח בו-זמנית במחשב ובמכשירים ניידים, ושני הלקוחות מציגים את הבקרים והמשתנים של הפלט שהיווצרו באופן אוטומטי. הגישה לדף האינטרנט השולחני התבצעה באמצעות Mozilla Firefox, והגישה לדף האינטרנט בנייד התבצעה באמצעות דפדפן נייד באותה סביבת רשת מקומית. צילומי המסך נלקחו מסביבת הבדיקה המקומית של המחברים. לא נכללו נתוני משתמשים של צד שלישי או מידע חסוי. אנא לחצו כאן כדי לצפות בגרסה גדולה יותר של איור זה.

שם המשתנהסוג נתוניםקלט/פלטמשמעות פיזיקליתתפקיד במודלטווח/הגדרה
EnableBooleanקלטמתג הפעלת מאווררשולט בשאלה האם המודל מקבל את קלט ה-PWM. כאשר הערך הוא True, u = PWM; כאשר הערך הוא False, u = 0.True / False
PWMDBLקלטקלט התראהקובע את עוצמת ההנעה הבסיסית של המאוורר ומהווה את הקלט המרכזי המשמש לחישוב מהירות המצב היציב SteadyRPM.0-1, צעד 0.01
LoadDBLקלטמקדם עומסמתאר את השפעת ההחלשה של העומס על מהירות המצב היציב. ככל שה-Load עולה, מהירות המצב היציב יורדת.0-1, צעד 0.01
TauDBLקלטקבוע זמן תגובהקובע את המהירות שבה מהירות המאוורר שואפת למהירות המצב היציב מהמצב הקודם.0.1-5, צעד 0.1
KMaxRPMDBLקלטמהירות מקסימליתקובע את המהירות המקסימלית המותרת במודל ומשמש להגבלת מהירות ולנרמול.500-6000, צעד 100
DisturbanceDBLקלטקלט הפרעהמייצג את השפעת הפרעה חיצונית או תנודה בעומס על מהירות המצב היציב, הזרם וההספק.0-1, צעד 0.1
SpeedRPMDBLפלטמהירות בפועלמייצג את מהירות הפלט הנוכחית של המאוורר ומתעדכן באמצעות דינמיקה אינרציאלית מסדר ראשון.מחושב על ידי המודל
SteadyRPMDBLפלטמהירות מצב יציבמייצג את מהירות המצב היציב התאורטית תחת תנאי הקלט הנוכחיים.מחושב על ידי המודל
TimeSDBLפלטזמן ריצהמייצג את זמן הריצה הרציף של המודל.מחושב על ידי המודל
SpeedNormDBLפלטמהירות מנורמלתמייצג את היחס בין SpeedRPM ל-KMaxRPM.0-1 או מחושב על ידי המודל
CurrentADBLפלטזרםמייצג את זרם המודל המוערך, המשתנה בהתאם לקלט ההנעה ולקלט ההפרעה.מחושב על ידי המודל
PowerWDBLפלטהספקמייצג את הספק המודל המוערך, המחושב מקבוע המתח והזרם.מחושב על ידי המודל
SetpointDBLקלטמיקום רצויקובע את המיקום שהמנוע אמור להגיע אליו ויוצר את השגיאה e יחד עם המיקום בפועל Position.-3-3, צעד 0.1
KcDBLקלטהגבר פרופורציונלימתאים את עוצמת התגובה של בקר ה-PID לשגיאה.0-10, צעד 0.1
TiDBLקלטזמן אינטגרלימתאים את הפעולה האינטגרלית של בקר ה-PID ומשמש להפחתת שגיאת מצב יציב.0-10, צעד 0.1
TdDBLקלטזמן דיפרנציאלימתאים את הפעולה הדיפרנציאלית של בקר ה-PID ומשמש לדיכוי שינויי שגיאה מהירים מדי ולשיפור התגובה הדינמית.0-5, צעד 0.1
DisturbanceDBLקלטקלט הפרעהמייצג הפרעה חיצונית המתווספת לקלט המנוע, ופועלת על מודל המנוע יחד עם מתח הבקרה.0-10, צעד 0.1
Reset controlBooleanקלטאיפוס בקרהמפעיל ניקוי של מצב המודל כך שהמיקום, המהירות הזוויתית, הזרם, השגיאה והאיבר האינטגרלי יחזרו למצבים הראשוניים שלהם.True / False
PositionDBLפלטמיקום בפועלמייצג את המיקום הזוויתי הנוכחי של המנוע ומשמש כמשתנה המשוב עבור בקרת ה-PID.מחושב על ידי המודל
VoltageDBLפלטמתח בקרהמייצג את פלט בקר ה-PID לאחר הגבלת מתח ופועל על קלט המנוע.מחושב על ידי המודל; מוגבל ל-24V- עד 24V
TimeDBLפלטזמן ריצהמייצג את זמן הריצה הרציף של מודל המנוע.מחושב על ידי המודל
Measured angular velocityDBLפלטמהירות זוויתית נמדדתמייצגת את המהירות הזוויתית הנוכחית של המנוע ומהווה את פלט המצב המכני של המנוע.מחושב על ידי המודל

טבלה 1: משתני קלט ופלט המשמשים בדוגמאות של המאוורר ומנוע ה-DC. הטבלה מפרטת את שם כל משתנה, סוג הנתונים, תפקיד הקלט/פלט, המשמעות הפיזיקלית, הטווח המומלץ וגודל הצעד.

פרמטרערךמשמעות פיזיקליתתפקיד במודל
R1התנגדות עוגןמייצג את גורם ההתנגדות במעגל העשוי של המנוע וקובע את מפל המתח R × im במשוואת הזרם.
L0.5השראת עגירהמייצג את השראות מעגל העוגן וקובע את קצב שינוי הזרם. L גדול יותר יוביל לתגובת זרם איטית יותר.
ג'0.01מומנט התמדהמייצג את התנגדות רוטור המנוע לשינויים בתאוצה הזוויתית וקובע את המהירות שבה משתנה המהירות הזוויתית.
ב0.1מקדם שיכוך צמיגימייצג שיכוך מכני ומתאר את מומנט השיכוך המעכב את העלייה במהירות הזוויתית במהלך סיבוב.
קנאזה (Kt)0.01קבוע מומנטמייצג את מקדם הפרופורציה הממיר את זרם העוגן למומנט אלקטרומגנטי.
נראה שהטקסט שהזנת ("Ke") קצר מדי מכדי לתרגם אותו באופן משמעותי. אנא ספק את הטקסט המלא שברצונך לתרגם.0.01קבוע הכוח האלקטרו-מניע הנגדימייצג את המקדם הפרופורציונלי שבאמצעותו מהירות זוויתית מייצרת כוח אלקטרומניבי נגדי, ומתאר את אפקט המשוב של המהירות על הזרם.
Vmax24מתח בקרה מרבימייצג את גבול מתח המוצא של הבקר ושומר על המתח בטווח שבין 24-V ל-24 V.
dt0.001שלב סימולציה בדידימייצג את מרווח הזמן עבור כל עדכון מצב מבוסס לולאה, ומשמש לעדכון הזרם, המהירות הזוויתית, המיקום וזמן ההרצה.

טבלה 2: פרמטרים פנימיים המשמשים במודל בקרת מיקום PID של מנוע DC. הטבלה מפרטת את הפרמטרים החשמליים והמכניים, הסימנים, הערכים המספריים, היחידות והתפקידים במודל.

קבצי קוד נלווים: קבצי מקור והגדרות מלאים לשחזור הדוגמאות של המאוורר ומנוע ה-DC. קבצי הקוד הנלווים כוללים את קוד ה-LabVIEW Formula Node, הגדרות reverse-proxy של Caddy, קבצי front-end ב-XHTML וקבצי מקור של LabVIEW VI ששימשו בפרוטוקול זה. הקובץ Code in LabVIEW Formula Node.docx מכיל את קוד ה-Formula Node עבור מודלים של בקרת מיקום PID למאוורר ולמנוע DC. הקובץ Caddyfile.txt מכיל את הגדרות שרת האינטרנט המקומי וה-reverse-proxy. הקבצים Fan_Automatic_UI.xhtml ו-Motor_Automatic_UI.xhtml מכילים את לוגיקת ה-Web front-end המבוססת על מטא-נתונים. הקבצים fengshan.vi ו-Motor.vi הם קבצי ה-VI של ה-LabVIEW back-end עבור ניסויי המאוורר והמנוע.אנא לחצו כאן כדי להוריד קובץ זה.

דיון

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

שלב קריטי בפרוטוקול זה הוא הבנייה והרישום הסטנדרטיים של ה-VI של ה-back-end ב-LabVIEW. הבקרים והמחוונים ב-Front Panel חייבים להשתמש בשמות משתנים ברורים וייחודיים, וסוגי הנתונים שלהם חייבים להתאים למשתנים המצופים על ידי חישוב המודל ועל ידי תהליך הקריאה/כתיבה של ה-RIP. בשתי הדוגמאות המשמשות בפרוטוקול זה, משתנים מספריים סקלאריים מוגדרים כבקרים או מחוונים מסוג DBL, ומשתנים בוליאניים מוגדרים כבקרים בוליאניים. על ה-Block Diagram לשמור גם הוא על עדכון מצב רציף באמצעות While Loop, Shift Registers ו-Formula Node, כך שניתן יהיה לעדכן משתנים כגון מהירות מאוורר, מיקום מנוע, מהירות זוויתית של מנוע, מתח וזמן במהלך ההרצה. לאחר בניית ה-VI, שם הניסוי (experiment Name) ב-RIP Configuration חייב להתאים בדיוק ל-experiment ID המשמש בקובץ ה-XHTML התואם, ונתיב ה-VI (VI Path) חייב להפנות ל-VI השמור בפועל. הגדרות אלו חשובות כיוון שממשק המשתמש האינטרנטי (Web front end) אינו מקודד באופן קשיח (hardcode) את המשתנים של כל ניסוי. תחת זאת, הוא מסתמך על המטא-נתונים המוחזרים מה-RIP Server כדי לזהות משתנים לכתיבה, משתנים לקריאה, סוגי נתונים ותכונות מספריות10,11.

בעיות פתרון התקלות העיקריות קשורות לעקביות בין מזהה הניסוי (experiment ID) בקובץ ה-XHTML, הגדרות ה-RIP Configuration, ה-RIP WebService והגדרות ה-Caddy proxy. אם מזהה הניסוי בקובץ ה-XHTML אינו תואם לשם הניסוי (experiment Name) ב-RIP Configuration, דף האינטרנט לא יוכל לבקש את המטא-דאטה הנכון ולכן לא יוכל להפיק את הבקרים ושדות הפלט הצפויים. אם נתיב ה-VI (VI Path) שגוי או ששירות ה-RIP WebService לא הופעל, דף האינטרנט עשוי להיפתח אך לא יוכל לתקשר עם ה-back end של LabVIEW. אם Caddy אינו פועל, הדפדפן לא יוכל לגשת לכתובת ה-proxy המקומית שנבחרה ועשוי להציג הודעת ERR_CONNECTION_REFUSED, כפי שמוצג ב-איור 13. אם Caddy פועל אך יעד ה-reverse-proxy אינו תואם לפורט של ה-RIP WebService, הדף עשוי להיטען בעוד שבקשות RIP POST ייכשלו עם שגיאת 502 Bad Gateway, כפי שמוצג ב-איור 14. אם נתיב ה- /RIP/SSE* אינו פועל כהלכה, הדף עשוי להיפתח ולהציג בקרים, אך ערכי הפלט לא יעודכנו בזמן אמת. בתפעול רגיל, כלי המפתח של הדפדפן צריכים להראות טעינת דף מוצלחת, בקשות RIP POST ובקשת SSE פעילה עם מזהה הניסוי הנכון, כפי שמוצג ב-איור 15. לפיכך, יש להתחיל את פתרון התקלות בבדיקת מזהה הניסוי, נתיב ה-VI, סטטוס ה-RIP WebService, מצב הפעלה של Caddy, פורטים של ה-proxy ונתיב ה-SSE. אם התקשורת עדיין פועלת בצורה חריגה, הפעלה מחדש של ה-RIP WebService ושל Caddy, ניקוי מטמון (cache) הדפדפן או חזרה על הבדיקה בדפדפן אחר עשויים לסייע בהבחנה בין התנהגות ספציפית לדפדפן לבין בעיות קונפיגורציה של RIP/Caddy.

הפרוטוקול הנוכחי ניתן לשחזור בשתי הדוגמאות כיוון שאותו תהליך עבודה של בנייה-רישום-פריסה-אימות (build-register-deploy-verify) מיושם הן על מודל מהירות מאוורר והן על מודל בקרת מיקום PID של מנוע DC. כדי להפחית את התלות בארגזי כלים (toolboxes) ייעודיים, ה-VIs של ה-back-end נבנו מחדש באמצעות מבני LabVIEW בסיסיים, הכוללים בקרים ומחוונים של ה-Front Panel, לולאות While, אוגרי העברה (Shift Registers), צמתי נוסחאות (Formula Nodes), ומשתנים בוליאניים ומספריים סקאלריים סטנדרטיים. עם זאת, השחזור בין גרסאות שונות של LabVIEW, התקנות Windows וסביבות רשת מקומיות עדיין תלוי בפרטי הגדרה כגון נתיבי קבצים, הרשאות גישה, פורטים מקומיים, פקודות הפעלת שירותים והתנהגות הדפדפן. ניתן להרחיב את תהליך העבודה גם לניסויים מרחוק הקשורים לחומרה, אך אין לפרש את השיטה כזיהוי חומרה ישיר מצד ה-Web. ממשק ה-Web (ה-front end) מזהה בקרים ומחוונים של LabVIEW Front Panel באמצעות מטא-נתוני RIP. לכן, חיישנים, אקטואטורים, מכשירים או התקני בקרת תהליכים חייבים להיות מחוברים ומעובדים תחילה ב-VI של ה-back-end ב-LabVIEW באמצעות דרייברים מתאימים לחומרה, מודולים לרכישת נתונים, מודולים לבקרת מכשירים או מנגנוני התאמת חומרה אחרים. לאחר שמידות החומרה ופקודות הבקרה ממופות למחוונים ובקרים ב-Front Panel, ממשק ה-Web מבוסס ה-RIP יכול לזהות משתנים אלו באותו אופן שבו הוא מזהה את משתני הסימולציה המשמשים בפרוטוקול זה. מחקרים קודמים על מעבדות מרחוק מבוססות LabVIEW הראו כי ניתן להשתמש ב-LabVIEW כסביבת back-end עבור ניסויי הנדסת בקרה מרחוק, ניסויי רובוטיקה, מתקני בקרת תהליכים, רכישת נתוני חיישנים ואינטראקציה עם התקנים פיזיים9,12,17,18,19,20.

איור 16 מציג דוגמה מייצגת אחת למימוש שהוקלטה במהלך ניסוי מאוורר מקומי. קוד ה-front-end הותאם להקליט את זמן הבקשה/תגובה של המטא-דאטה, את מספר משתני המטא-דאטה, את זמן יצירת ממשק המשתמש (UI) המבוסס על מטא-דאטה, את זמן פתיחת חיבור ה-SSE ואת נתוני ה-SSE שהתקבלו. בדוגמה זו, קונסולת הדפדפן דיווחה על זמן בקשה/תגובה של המטא-דאטה של 68.00 ms, זיהתה 7 משתנים הניתנים לכתיבה ו-7 משתנים הניתנים לקריאה ממטא-דאטת ה-RIP, יצרה את אלמנטי ה-UI התואמים ב-2.00 ms, ופתחה את חיבור ה-SSE ב-16.00 ms. רשומות נתוני ה-SSE החוזרות הראו כי משתני פלט כגון SpeedRPM, TimeS, SteadyRPM, SpeedNorm, CurrentA, ו-PowerW התקבלו באופן רציף מה-back end של LabVIEW. תצוגת מנהל המשימות באותו מצב בדיקה מקומי הראתה ניצול מעבד (CPU) של כ-1.5% ו-391.7 MB של זיכרון עבור תהליך Firefox, בעוד שתהליך LabVIEW הראה ניצול מעבד של 0% ו-9.2 MB של זיכרון בזמן הלכידה. תצפיות אלו מספקות ראיה בסיסית לכך שניתן היה לצפות באחזור מטא-דאטה, ביצירת UI מבוססת מטא-דאטה, בתקשורת RIP/SSE ובעומס מעבד ברמת התהליך בסביבת הפריסה המקומית. עם זאת, נתונים אלו נועדו לאימות ברמת המימוש ולא כבנצ'מרק ביצועים מקיף. הערכה שיסטית של הביצועים תחת דפדפנים שונים, ניסויים חוזרים, עומסי משתנים כבדים יותר, חומרה פיזית ומספר משתמשים סימולטניים נותרת הכרחית כעבודה עתידית.

לשיטה זו ישנן גם מגבלות, במיוחד כאשר היא מורחבת למבני נתונים מורכבים, ניסויים בחומרה ותפעול של מספר משתמשים. זרימת העבודה הנוכחית מתאימה ביותר למשתני קלט ופלט מספריים סקלאריים ובוליאניים. היא אינה מספקת באופן אוטומטי תמיכה מלאה במערכים מורכבים, אשכולות (clusters), מבני נתונים מקננים, קשרי תרשימים או ויזואליזציות ספציפיות לתחום. מקרים אלו עשויים לדרוש כללי מיפוי מטא-נתונים נוספים או רכיבי קצה (front-end) שנכתבו ידנית. ממשק המשתמש הנוצר אוטומטית יכול ליצור בקרים ותצוגות בסיסיים ממטא-נתוני המשתנים, אך הוא אינו יכול להסיק באופן מלא את הקשר הפיזי בין המשתנים, לבחור את הויזואליזציה המתאימה ביותר, או לתכנן אינטראקציות בטיחותיות ספציפיות לניסוי. כאשר זרימת העבודה מורחבת לציוד אמיתי, נדרשים שיקולים נוספים, כולל דרייברים לחומרה, כיול מכשירים, מגבלות דגימה, מגבלות אקטואטורים, לוגיקת עצירה חירוםית, אימות משתמשים ומנגנוני בקרת כתיבה למספר משתמשים. ניתן לגשת לפריסה הנוכחית גם באמצעות מספר מכשירים לקוח דרך דפדפני אינטרנט סטנדרטיים באותה סביבת רשת מקומית. כפי שמוצג ב-איור 17, אותו דף ניסוי של מאוורר נפתח בו-זמנית בדפדפן שולחני ובדפדפן נייד, ושני הלקוחות הציגו את הבקרים שנוצרו אוטומטית ואת משתני הפלט התואמים. תצפית זו מעידה על גישה בסיסית בו-זמנית של מספר לקוחות לצפייה ואינטראקציה עם אותו דף ניסוי. עם זאת, אין לפרש זאת כמסגרת מלאה לבקרת מספר משתמשים, מכיוון שהמימוש הנוכחי אינו כולל אימות משתמשים ייעודי, נעילת בקרה, בוררות כתיבה בו-זמנית, תורי כתיבה או מנגנוני פתרון קונפליקטים. מגבלות אלו עולות בקנה אחד עם מחקרים קודמים על מעבדות מרחוק, שבהם מעבדות מרחוק מורכבות או שיתופיות דורשות בדרך כלל עיצוב ממשק ספציפי לניסוי, מנגנוני סנכרון, מגבלות בטיחות ולוגיקת ניהול משתמשים13,14,15,16,17.

הערך המתודולוגי של פרוטוקול זה אינו בכך שהוא מציג ארכיטקטורת RIP חדשה או מרחיב את סוגי הנתונים הנתמכים על ידי RIP. במקום זאת, ערכו טמון באספקת נתיב יישום מלא וניתן לשחזור להחלת מנגנון אוטומטי להפקת ממשק משתמש (UI) מבוסס RIP על מערכות LabVIEW שונות. בהשוואה לכתיבת ממשק Web מותאם אישית עבור כל ניסוי, תהליך עבודה זה מפחית את הצורך ביישום חוזר של פריסת בקרות בסיסית, קישור משתנים ולוגיקת תקשורת קריאה/כתיבה כאשר ה-VI של ה-back-end חושף משתנים תואמים8,9,10,11. לפיכך, הפרוטוקול שימושי להוראת הנדסה, פיתוח מעבדות מרחוק ופריסה מהירה של ניסויי הוראה או סימולציות בסיכון נמוך הדורשים כיוונון פרמטרים מבוסס דפדפן וניטור מצב בזמן אמת. עבודה עתידית צריכה להרחיב את תהליך העבודה למבני נתונים מורכבים יותר, התקני ניסוי פיזיים, בקרת גישה רשמית למספר משתמשים והערכה כמותית של הביצועים, כולל זמן הפקת הממשק, השהיית תקשורת (latency), יציבות סנכרון, עומס שרת, תקורת CPU וידידותיות המשתמש של ה-front-end.

גילויים

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

המחברים השתמשו בכלים מבוססי בינה מלאכותית (AI) אך ורק לצורך ליטוש השפה. כל התכנים המדעיים, הפרוטוקולים הניסויים, יישום התוכנה, האיורים, התוצאות, הפרשנויות והניסוח הסופי נבדקו, תוקנו ואושרו על ידי המחברים. לא נעשה שימוש בכלי AI להפקת נתונים ניסויים.

תודות

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

עבודה זו נתמכה על ידי תוכניות ההכשרה לתשיתי חדשנות לבשלבים ראשוניים של התואר באוניברסיטת ווהאן.

חומרים

רשימת החומרים שנעשה בהם שימוש במאמר זה
שםחברהמספר קטלוגהערות
שרת פרוקסי CaddyCaddyN/Aפרוקסי הפוך המשמש להגשת ממשק המשתמש של האינטרנט ולהעברת בקשות /RIP לשירות האינטרנט (WebService) של RIP
Caddyfileהוכן על ידי המחבריםN/Aמגדיר נתיבי קבצים סטטיים ונתיבי פרוקסי הפוך לתקשורת RIP
Fan_Automatic_UI.xhtmlהוכן על ידי המחבריםN/Aממשק משתמש של רשת מבוסס מטא-נתונים עבור ניסוי המאוורר
LabVIEWNational Instruments2026תוכנה המשמשת לבנייה ולהרצה של fengshan.vi ו-Motor.vi
מערכת ההפעלה Microsoft WindowsMicrosoftWin11מערכת ההפעלה המשמשת להרצת LabVIEW, שירות האינטרנט (WebService) של RIP, Caddy והדפדפן.
Motor_Automatic_UI.xhtmlהוכן על ידי המחבריםN/Aממשק משתמש של רשת מבוסס מטא-נתונים עבור ניסוי המנוע
דפדפן שולחן Mozilla FirefoxMozilla2026דפדפן שולחן המשמש לגישה לממשק המשתמש של האינטרנט, כלי מפתחים, תצפיות על תזמון/משאבים וצילומי מסך של רשת/קונסולה.
שירות האינטרנט (WebService) של RIPUNEDLabshttps://github.com/Nebulous-Systems/rip-server_labviewמקבל בקשות RIP POST ומספק את שכבת התקשורת של שירות האינטרנט המשמשת את ממשק הקדמה של הדפדפן.
מנהל המשימות של WindowsMicrosoftמובנה ב-Windowsמשמש להקלטת תצפיות על CPU וזיכרון ברמת תהליך עבור תהליכי הדפדפן ו-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 זה

בקש הרשאה

תגיות

RIPCaddyPID
הסרטון יגיע בקרוב

מאמרים קשורים