סימולציה מערכתית ותכנון מערכות בקרה באמצעות מתודולוגיית פיתוח Model-Based Design בסביבת Simulink
מפתחים מערכות רב-תחומיות ומעוניינים בפלטפורמה מרכזית נוחה ויעילה? במידה וכן, אתם מוזמנים לקרוא פוסט זה ולצלול איתי אל תוך תהליך התכן מבוסס-מודל.
בבלוג זה העוסק בסימולציה מערכתית ותכנון מערכות בקרה, מצאתי לנכון לשתף את הקהל הרחב מניסיוני מהאקדמיה ומהתעשייה בכל הנוגע לפיתוח מערכות מולטי-דיסציפלינאריות בגישת ה- Model-Based Design, מה המשמעות של תכן מבוסס-מודל (MBD)? וכיצד אנו יכולים להשתמש בגישה זו לצרכינו לאורך תהליך הפיתוח?
תכנון גמיש בגישת (Model-Based Design (MBD:
מערכות מולטי-דיסציפלינאריות הינן מערכות המשלבות מספר תחומים הנדסיים כגון מכאניקה, אלקטרוניקה, בקרה, אופטימיזציה ועוד. מניסיוני, אין ספק כי השלבים עבור התכנון והפיתוח של המערכת הינם השלבים המאתגרים יותר. בבואנו לתכנן מערכת המורכבת ממספר תחומים, הדרך הנוחה והמומלצת להתמודד מול אתגר שכזה הינה לפרק את הבעיה הגדולה לבעיות קטנות יותר:
- מכאניקה: מידול המכאניזם וייצוג משוואות התנועה של המערכת ואף ייבוא הרכבות מתוכנות CAD
- אלקטרוניקה ואלקטרו-מכאניקה: הגדרת מערכות חשמליות ואלקטרוניות, שימוש במשפחות מנועים, תכן כרטיסים אלקטרונים ומעגלים משולבים, תכנון מערכות הספק ועוד.
- אופטימיזציה: הפעלת שיטות נומריות למציאת הערכים המיטביים עבור רכיבים מוגדרים במערכת.
- בקרה: תכן מערכות בקרה הן במישור הזמן והן במישור התדר, כיוונון בקרים עפ"י שיטות סטנדרטיות, ניתוח התנהגות הבקרה ובחינה האם הם אכן עומדים בהגדרות
- ייצור קוד: העברת האלגוריתמים והמודלים לשפת קוד אשר מתאימה לחומרות עמן אנו עובדים:
C/C++, VHDL, Cuda Code, PLC, etc. - בדיקות: ביצוע בדיקות ברמות ומועדים שונים בתהליך הפיתוח הן על האלגוריתמים ומודלים שפיתחנו והן על הקוד אשר ייצרנו מהם עבור החומרות שנבחרו.
פיתוח זרוע רובוטית:
אחד היתרונות המובהקים שעלי לציין, כאשר אנחנו מפתחים על-פי גישת ה- Model-Based Desgin, הינו שאנחנו לא צריכים לחכות עד לשלב האינטגרציה –שלב יחסית מתקדם בתהליך הפיתוח – בכדי להתחיל ולבחון את המערכות השונות שלנו וכיצד הן פועלות זו עם זו.
אנו יכולים להתחיל ולבחון באופן יחסית מהיר את תכן המערכת שלנו במספר רמות של בדיקות:
- Simulation: בדיקות תכן (Design), כיסוי (Coverage) ולוגיקה (Logic) על המודל עצמו ברמה סימולטיבית.
- (Software-in-the-Loop (SIL: יצירת קוד מהאלגוריתמיקה / מודל והרצת הבדיקות אשר הורצו על הסימולציה גם עבור הקוד שייוצר והשוואת התוצאות – ברמת תוכנה.
- (Processor-in-the-Loop (PIL: יצירת קוד מהאלגוריתמיקה, הורדתו לחומרה / מעבד ייעודי, הרצת הבדיקות אשר הורצו על הסימולציה גם עבור הקוד אשר רץ על החומרה.
- (Hardware-in-the-Loop (HIL: יצירת קוד מהמודלים והאלגוריתמיקה עבור המערכת עצמה, פריסתו על גבי מחשב זמן-אמת והרצת הבדיקות אשר הורצו על הסימולציה גם על הקוד אשר רץ על מחשב ה- Real-Time.
שילוב מערכת Real-Time כחלק ממתודולוגית הפיתוח בגישת Model-Based Design הוא חלק בלתי נפרד. כעת היכולת שלי לבצע בדיקות ושינויים על המודלים פשוטה מתמיד, כל תהליך יצירת הקוד, הטמעתו אל תוך מערכת זמן-אמת ואיסוף הנתונים מתבצעים בלחיצת כפתור, שלב החוסך זמן רב עבורי ומפשט את התהליך.
Real Time Simulation using Simulink and Speedgoat
לסיום, ארצה להדגיש כי שימוש ויישום תהליך ה- Model-Based Design אשר תיארתי כאן, אפשר לי ולצוותי הפיתוח מתחומים שונים לדבר את "אותה השפה" בפרויקטים רבים ולאורך כל חיי הפרויקט. מצאנו פלטפורמה משותפת בה מחלקות כגון הנדסת מערכת, מכאניקה, אלגוריתמיקה, בקרה, תוכנה חומרה ועוד, תקשרו זו עם זו בצורה דו-כיוונית, טובה ויעילה וקיבלנו פתרון אשר נתן לנו מענה מקצה-לקצה בתהליך הפיתוח, בסביבה אחת מרכזית ונוחה.