‏הצגת רשומות עם תוויות Simulink Coder. הצג את כל הרשומות
‏הצגת רשומות עם תוויות Simulink Coder. הצג את כל הרשומות

יום שלישי, 31 בינואר 2017

חידושים בהמרה אוטומטית של קוד MATLAB ומודלים של Simulink לקוד C++/C ובניתוח סטטי של קוד C++/C

לפני כארבעה חודשים שוחררה גרסת ה-MATLAB השנייה לשנת 2016, R2016b. הגרסה כוללת הרבה שיפורים ויכולות חדשות ל-MATLAB ולכלים המשלימים אותו, ובפרט – לכלים המאפשרים המרה אוטומטית של קוד MATLAB ומודלים של Simulink לקוד C/C++ והמאפשרים ניתוח סטטי של קוד C/C++. במסגרת סדרת הפוסטים העוסקים בחידושים בגרסה הנ"ל (לחצו לפוסט הקודם בסדרה), מובאת להלן סקירה בנושאים שבכותרת, אשר נכתבה על ידי מיכאל דוננפלד, מהנדס אפליקציה בחברת סיסטמטיקס, המהווה מוקד ידע בכל הקשור לשימוש בכלים המוזכרים להלן.

MATLB Coder
בכלי המאפשר המרת קוד MATLAB לקוד C/C++, נוספו:
·         תמיכה בפונקציות רקורסיביות ו-Anonymous Functions.
·         תמיכה באלגוריתמי לימוד מכונה מסוג SVM  ו-Logistic Regression.
·         תמיכה ב-29 פונקציות מתוך ה-Wavelet Toolbox, כלי לניתוח אותות ותמונות באמצעות גלונים.

Simulink Coder
בכלי המאפשר המרת מודלים של Simulink (כולל Stateflow) לקוד C/C++, נוספו היכולות הבאות:
·         ייצור קוד מתוך בלוקים ייעודיים המגדירים כיצד לאתחל את המודל, לאפס את המודל ולסיים את ריצת המודל  (Initialize Function, Reset Function, Terminate Function).
·         ייצור קוד מבלוקים המאפשרים לקרוא ולכתוב ל-states של המודל.
·         ייצור קוד אוטומטי התומך בלוח Nucleo של חברת STMicroelectronics.

Embedded Coder
בכלי, המאפשר קבלת קוד C/C++ אופטימלי עבור מערכות Embedded, מתוך קוד MATLAB או מודלים של Simulink, תוך שימוש בכלי/ם הרלוונטי/ם המוזכר/ים לעיל, נוספו היכולות הבאות:
·         אפשרות לקבוע את ממשק התוכנה של פונקציות המיוצרות מ-Simulink Function block.
·         תמיכה בייצור קוד המוכוון ללוח מסוג STM32F746G-Discovery  המבוסס על Cortex-M7.
·         הקטנת כמות הזיכרון הנדרש ע"י שימוש חוזר במרחב זיכרון (Buffer reuse) במקרים שונים כגון: מבנים גלובליים של nonreusable subsystems.
·         אופטימיזציה בקוד של חישוב אינדקסים בגישה למטריצות בתוך לולאות.
·         הקוד המחולל מיוצר ללא שימוש בפעולות כפל, אלא משתמש רק בפעולות חיבור והזזה.

Polyspace Bug-Finder & Code-Prover
בכלים המאפשרים איתור באגים בתוכנה בעזרת Static Analysis והוכחה של העדר שגיאות run-time בקוד, נוספו היכולות הבאות: 
·         קונפיגורציה אוטומטית לבדיקת קוד שמקומפל ע"י Diab Compiler.
·         אפשרות הגדרות נוחה המבחינה בין קוד שרץ כמשימה מחזורית מול קוד שרץ דרך פסיקה. זאת על מנת לאפשר זיהוי בעיות הנוגעות ל-multitasking כגון: race condition, read/write contentions וכדומה.
·         אפשרות להריץ את הכלי מתוך שורת מערכת ההפעלה.
·         אפשרות להריץ אנליזה של הכלי אוטומטית מסביבת IBM®  Rhapsody 8.1 באמצעות שימוש ב-add-in  ייעודי.
·         קבלת מדד המשערך את כמות הזיכרון של משתנים מקומיים בקוד.



יום שני, 15 באוקטובר 2012

הבחירות כבר כאן | אפשר לבחור בין שתי טכנולוגיות של SimMechanics

"הרשו לי לפנות את הבמה בפוסט הזה פעם נוספת לטובת רוני פאר, אשר עובד יחד עמי בחברת סיסטמטיקס והתארח בבלוג הזה מספר פעמים, האחרונה שבהן – לפני חודש וחצי".

אם אתם משלבים מערכות מכניות/אלקטרוניקה/בקרה או עובדים בתחום המכשור התעשייתי, בתעשייה הבטחונית, בתעשיית הרכב, בתחום המכשור הרפואי או בעולם הרובוטיקה - כדאי לכם להמשיך לקרוא. בגרסת R2012a בוצע עדכון משמעותי למוצר SimMechanics, ונוספה לו טכנולוגיה המהווה למעשה תחליף מלא לטכנולוגיה הישנה של המוצר הזה. כיום, מוצר זה כולל את שתי הטכנולוגיות, תחת שתי ספריות שונות, והמשתמשים יכולים לבחור באיזו גרסה לעבוד (השמות שלהן הם 1G עבור הטכנולוגיה הישנה ו-2G עבור החדשה). פוסט זה יעסוק בעיקר בטכנולוגיה החדשה.

רק רגע, מה זה בכלל ה-SimMechanics הזה?

SimMechanics הוא חלק מכלי המידול הפיסי של MathWorks, ואחד מהכלים הותיקים שלה (משנת 1996 לערך). מטרת המוצר הזה היא להקל על מידול וסימולציה של מערכות מכניות קשיחות תלת-מימדיות. הדוגמה הפשוטה ביותר היא זרוע רובוטית – כלומר מספר חלקים מכניים המחוברים ביניהם במפרקים סיבוביים – היכולה לנוע במרחב התלת-מימדי. SimMechanics מאפשר לאפיין את החלקים השונים (מסה, אינרציה ותכונות מכניות אחרות), את צירי החופש והתנועה (סיבוב, תנועה קווית, בורג וכו'), את הסביבה (גרביטציה למשל) ואת האינטראקציה עם הסביבה (כוחות המופעלים על החלקים, חיכוך/שיכוך ועוד). והיתרון הגדול ביותר של SimMechanics הוא שהכלי מאפשר למתכנן להתמקד ב"בעיה" ולא ב"מתמטיקה". כלומר במקום לכתוב הרבה נוסחאות – פשוט גוררים בלוקים, מחברים אותם ולבסוף מריצים את הסימולציה, וכל המשוואות נפתרות בעזרת המנוע של SimMechanics "מאחורי הקלעים".

למה MathWorks הוסיפה טכנולוגיה חדשה לכלי?

הטכנולוגיה הישנה פותחה בצורה מאד בעייתית, שהקשתה על הוספת יכולות ומודולים חדשים שביקשו המשתמשים בכלי (ויזואליזציה טובה יותר, יכולות של שילוב גופים גמישים, הוספת מתמטיקה של "התנגשויות" בין חלקים וכו'). לאנשי הפיתוח של MathWorks לקח הרבה זמן לעשות אפילו שדרוג קטן במוצר, ולכן במקום להמשיך ולהשקיע את הזמן הזה, הוחלט לעשות "cut" ולהחליף את כל המנוע המתמטי במנוע חדש, אשר נעזר בטכנולוגיה של Simscape – התשתית לכל כלי המידול הפיסי של MathWorks.

מה החידושים בטכנולוגיה החדשה?

• הגדרה פשוטה ונוחה יותר של גופים - יש מגוון של גופים מוכנים (גליל, אליפסה, כדור וכו').

• חישוב מסה ואינרציה בצורה אוטומטית ופשוטה.

• המערכת רצה חלק ומהר יותר.

• הגדרה של צירים ותנועה יכולה להיעשות ישירות באמצעות MATLAB – לרבות שילוב של "קדחים" בגוף. הדבר מאפשר יכולות הקיימות בתוכנות תיב"מ (במידה ואין אחת זמינה).

• חיבור גופים בסיסיים ליצירת אחד חדש, ללא שימוש ב"ריתוך" ביניהם. אין צורך להגדיר משוואות.

• אנימציה משופרת באמצעות ה-Mechanics Explorer, אשר בין יתרונותיה:
.     o מספר Views שונים בו-זמנית.
.     o האנימציה נשמרת ללא צורך בהרצה חוזרת של המודל.
.     o אפשר לשלוט על מהירות העדכון של האנימציה, אפשר לעשות Rewind, להריץ צעד-צעד וכו'.
.     o שמירה של סרטונים.
.     o "עץ גרפי" של חיבור החלקים וכיצד הם משוייכים אחד לשני, המזכיר את ה-Browser של Windows.

• שמירה אוטומטית (Logging) של כל הנתונים של ריצת הסימולציה, ללא חיבור חיישנים וסנסורים!

• דרגות החופש (ה-Joints) מכילות כבר בתוכן את החיישנים, ולכן אין צורך בהרבה בלוקים חיצוניים.

• ניתן לחבר בין בלוקים של הגרסה הישנה לבלוקים של הגרסה החדשה – עם כמה מגבלות.

מה המגבלות בהשוואה לגרסה הקודמת?

נכון לגרסה השניה של הטכנולוגיה החדשה (זו שנכללת בגרסת R2012b של כלי MathWorks) מרבית היכולות הקיימות בטכנולוגיה הישנה קיימות גם בחדשה. בגרסה השניה, למשל, ניתן כבר לייצר קוד C מתוך המודלים (באמצעות ה-Simulink Coder) ואף ניתן לייבא מודלים מתוך תוכנת תיב"מ (כמו SolidWorks).

עם זאת עדיין יש מספר חוסרים:
1. מגוון נמוך יותר של Joints (דרגות חופש).
2. לא ניתן להגדיר תנועה, ואז לפתור את הבעיה ההופכית, אלא רק להפעיל באמצעות כוחות.
3. אין שיטה אוטומטית לשדרוג מודלים מהטכנולוגיה הקודמת לחדשה, אך אנשי הפיתוח עובדים על כך.

 לסיכום, יותר מאי פעם, השימוש ב-SimMechanics מאפשר כעת:

• חסכון אדיר בזמן – במקום לכתוב משוואות ניתן פשוט לחבר חלקים.

• יבוא מודלים קיימים מתוכנת תיב"מ, לשם יצירת מודל מערכתי רחב יותר, הכולל גם מערכות אלקטרוניות ומערכות בקרה.

• שימוש חוזר במודלים שפותחו בעזרת כלי זה.

• ויזואליזציה מדהימה המאפשרת לראות בדיוק מה קורה בכל שלב נתון.

• בחירה בין שתי טכנולוגיות שונות.

• חיבור פשוט ל-MATLAB, Simulink ו-Simscape.

• אפשרות למקבל סימולציות, להשתמש בסקריפט לשינוי פרמטרים ולייצר קוד C מתוך המודלים.


האם אתם משתמשים ב-SimMechanics ? אם כן, האם כבר עברתם לטכנולוגיה החדשה ?

יום שלישי, 12 באפריל 2011

שי לחג – גרסת R2011a

כשותפים לקהיליית משתמשי MATLAB ו-Simulink, אני שמח לבשר לכם על שחרורה בתחילת אפריל של גירסת R2011a של מוצרי MathWorks, המכילה יכולות חדשות
ב-
MATLAB ו-Simulink, וכן עדכונים לעשרות כלים אחרים.


בתקופה הקרובה אסקור לעומק כמה מהחידושים המשמעותיים, אבל בינתיים – הנה משפט אחד על כל אחד מהעיקריים שבהם:
 
System Toolboxes חדשים לפיתוח ב-MATLAB ו-Simulink:
  • Computer Vision System Toolbox – מכיל אלגוריתמים חדשים מתחום הראיה הממוחשבת ומשלב בתוכו את יכולות ה-Video and Image Processing Blockset.
  • Phased Array System Toolbox – כלי חדש המשמש לתכנון, סימולציה וניתוח של מערכות מכ"מ, מערכות רפואיות (למשל Ultrasound), מערכות סלולר ועוד.
  • DSP System Toolbox – מאחד את יכולות ה-Filter Design Toolbox וה-Signal Processing Blockset.
  • Communications System Toolbox – מאחד את ה-Communications Toolbox וה-Communications Blockset.
כלי יצירת קוד חדשים:
  • MATLAB Coder – לייצור קוד C/C++ ישירות מתוך פונקציות MATLAB, ללא צורך ברישיון Simulink.
  • Simulink Coder – לייצור קוד C/C++ ישירות מתוך Simulink ו-Stateflow (מאחד את יכולות ה-Real-Time Workshop וה-Stateflow Coder, ומוסיף על יכולות ה-MATLAB Coder).
  • Embedded Coder – לייצור קוד Embedded ישירות מתוך MATLAB, Simulink או Stateflow (מאחד את יכולות ה-Real-Time Workshop Embedded Coder, Embedded IDE Link וה-Target Support Package, ולא מחייב רישיון Simulink).
בין היכולות החדשות במשפחת מוצרי MATLAB:
  • ביצועים משופרים לפונקציות רבות מתחום האלגברה הלינארית.
  • אפליקציות המקומפלות תוך שימוש ב-MATLAB Compiler וב-Parallel Computing Toolbox מסוגלות לרוץ באופן מקבילי על עד 8 ליבות אצל משתמש הקצה.
  • אפשרות לייצר אפליקציות Standalone מיישומים העושים שימוש ב-System Objects, באמצעות ה-MATLAB Compiler.
  • פותרן (Solver) חדש ב-Optimization Toolbox לבעיות תכנות רבועי (Quadratic Programming) בעלות אלפי אילוצים.
  • ממשק חדש לפתרון בעיות אופטימיזציה של תיקי השקעות ב-Financial Toolbox.
בין היכולות החדשות במשפחת מוצרי Simulink:
  • Signal Logging Selector להשוואת תוצאות סימולציה של מודלים שונים וריצות שונות של אותו מודל ב-Simulink.
  • FPGA-in-the-loop, Customizable I/O ותמיכה ברכיבי Xilinx ב-Simulink HDL Coder, EDA Simulator Link ו-xPC Target.
  • זיהוי אוטומטי של שגיאות Overflow וחלוקה באפס בעת שימוש בטכנולוגיית Polyspace ב-Simulink Design Verifier.     
מידע נוסף על הגירסה החדשה ניתן למצוא כבר כעת באתר MathWorks.