בקרת טמפרטורה(נכתב ע"י עודד רייכספלד)

 

בשיעור זה נבנה מערכת לבקרת טמפרטורה הפועלת בחוג סגור. המערכת כוללת:

     1.                חיישן טמפרטורה המודד טמפרטורה בסביבה המבוקרת.

     2.                שלוש נורות המשמשות גוף חימום.

     3.                מאוורר המזרים אוויר קר לסביבה המבוקרת.

     4.                ממשק משתמש המאפשר:

       4.1.         להציג את הטמפרטורה שקורא החיישן.

       4.2.         לקבוע את הערך הרצוי.

       4.3.         לראות האם המאוורר או גוף החימום פועלים.

 

אלגוריתם הבקרה של המערכת הוא:

·          בדוק את הטמפרטורה.

·          אם הטמפרטורה הנמדדת נמוכה מהטמפרטורה הרצויה הפעל נורות וכבה מאוורר.

·          אם הטמפרטורה הנמדדת גבוהה מהטמפרטורה הרצויה הפעל מאוורר וכבה נורות.

·          חזור להתחלה.

 

אלגוריתם זה מבצע בצורה מחזורית את התהליך של בדיקה וקבלת החלטה מה להפעיל.

מימוש אלגוריתם זה יצריך שני מבנים:

·          מבנה while שיאפשר הפעלה מחזורית של האלגוריתם.

·          מבנה case שיפעיל או יפסיק את הנורות והמאורר בהתאם לטמפרטורה.

 

למימוש המערכת יש להכיר שני נושאים חדשים:

       1.         שימוש בחיישן טמפרטורה.

       2.         יצירת ממשק משתמש עם מספרים שיאפשר העברת מידע מהדיאגרמה למשתמש (תצוגת טמפרטורה) והעברת מידע מהמשתמש לדיאגרמה (קביעת ערך רצוי).

 

נפנה לטפל בנושאים אלו כעת.


חיישן טמפרטורה

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

פקודת "קרא חיישן טמפרטורה"

לפקודה זו שלוש כניסות ושתי יציאות:

מבואות הפקודה:

       1.         כניסת begin המפעילה את הפקודה.

       2.         כניסה המאפשרת לקבוע את המבוא אליו מחובר חיישן הטמפרטורה (ברירת מחדל מבוא מספר 2).

       3.         כניסה המאפשרת לקבוע האם מוצא החיישן יהיה במעלות צלזיוס (סולם הטמפרטורה המקובל בישראל) או פרנהייט (סולם הטמפרטורה המקובל בארצות הברית).

מוצאי הפקודה:

       1.         מוצא end לחיבור הפקודה הבאה.

       2.         מוצא דרכו "יוצאת" הטמפרטורה החוצה לצרכים שונים.

 

 


משתנים מספריים

ממשק המשתמש של תרגיל כולל משתנים מספריים (לא בוליאניים). בדומה למשתנה הבוליאני שיצרת בתרגילים קודמים, גם משתנה מספרי הוא כתובת בזיכרון בה ניתן לאכסן מספר כל שהוא (בעוד שבמשתנה בוליאני ניתן לאכסן רק אמת או שקר בלבד).

ממשק המשתמש שנבנה הוא:

בממשק זה משתנים בולאניים ומספריים. לגבי משתנה מספרי תוכנת Lego Engineer מאפשרת הגדרה של שתי קבוצות משתנים:

·          משתנים מסוג integer כלומר מספרים שלמים בלבד. משתנים אלו מיוצגים בדיאגרמה בעזרת חיבור כחול.

·          משתנים שאינם מספר שלם (במספר רמות דיוק של מקומות אחרי הנקודה). משתנים אלו מיוצגים בדיאגרמה בעזרת קו כתום.

 

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

 

בחן שוב את פקודת חיישן הטמפרטורה ושים לב לצבע של החיבורים הם מעידים על אופי המשתנה.

·          כניסת ה begin  וה end צבועים בצבע כחול (מספר שלם) היות והן יכולות לקבל רק את הערך המספרי אפס כאשר הממשק מחובר ל com1 ואת הערך המספרי אחד כאשר הממשק מחובר ל com2.

·          כניסת ה port יכולה גם הוא לקבל רק מספרים שלמים (1, 2, 3 או 4) ולכן גם היא צבועה בכחול.

·          כניסת C or F יכולה לקבל רק שני ערכים (אמת או שקר) ולכן היא בצבע ירוק.

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

 

הגדרת משתנה ספרתי דומה להגדרת משתנה בוליאני. כדי להגדיר משתנה מספרי יש להציב ב panel רכיב מספרי מספריית numeric. תמצא בספרייה מגוון של זחלנים, כפתור סיבובי ועוד. הצבת רכיב זה ב panel תיצור מיידית בדיאגרמה מלבן שייצג את המשתנה.

 

דרך נוספת לחלק את המשתנים ב Lego Engineer היא לפי תפקידם:

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

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

 


תרגיל מונחה:

בתרגיל זה נממש את האלגוריתם:

·          בדוק את הטמפרטורה.

·          אם הטמפרטורה הנמדדת נמוכה מהטמפרטורה הרצויה הפעל נורות וכבה מאוורר.

·          אם הטמפרטורה הנמדדת גבוהה מהטמפרטורה הרצויה הפעל מאוורר וכבה נורות.

·          חזור להתחלה.

 

ממשק המשתמש יכלול:

·          פקד להזנת ערך רצוי.

·          צג להצגת ערך נמדד.

·          נורות ביקורת שיראו האם המאורר והנורה פועלים או לא פועלים.

 

ממשק המשתמש שתבנה הוא:

ממשק משתמש

בדוגמא שבתמונה הערך הרצוי הוא 28 מעלות, הערך הנמדד (שמספק החיישן) הוא 27.6 מעלות.

את הריבוע הירוק תוכל ליצור על ידי בחירת הרכיב raised box מתפריט decoration.

את הצבע חזית foreground ורקע Background של הריבוע תוכל לבחור מתפריט set color שבחלון הכלים.

 


התוכנית (שבחלון diagram) נראית כך:

תוכנית הבקרה

בחלון false תופיע הפעלת נורה A וכיבוי מנוע B.

 

השלבים המתוארים בדיאגרמה הם:

     1.                קרא את הטמפרטורה מחיישן הטמפרטורה המחובר למבוא אחד (במעלות צלזיוס).

     2.                העבר את הערך לצג ערך נמדד.

     3.                בדוק האם הערך הרצוי קטן מהערך הנמדד.

     4.                אם כן true (כלומר הערך הרצוי קטן מהנמדד או חם מדי):

                      ·          הפעל מאורר.

                      ·          הפסק נורות.

                      ·          הצג ערך True במשתנה הבולאני 'מאוורר'.

                      ·          הצג ערך false במשתנה הבולאני 'נורה'.

     5.                אם לא false (כלומר הטמפרטורה הנמדדת נמוכה מהרצוי):

                      ·          הפעל נורות.

                      ·          הפסק מאורר.

                      ·          הצג ערך True במשתנה הבולאני 'נורה'.

                      ·          הצג ערך false במשתנה הבולאני 'מאורר'.

 


חיבור רכיבי קלט פלט

ניתן לראות דוגמא למערכת זו בדפי העבודה של הערכה 9701.

     1.                חבר חיישן טמפרטורה למבוא מספר אחד.

     2.                חבר נורות זו לזו וחבר אותן למוצא A.

     3.                חבר להב מאורר למנוע, הצב אותו כך שיזרים אוויר לכיוון החיישן וחבר את המנוע למוצא B.

 

כתוב את התוכנית והפעל אותה.

·          את חיישן הטמפרטורה תמצא בספריית sensor.

·          את המאפיינים (סולם צלזיוס ומבוא מספר אחד) תמצא בספריית modifiers.

 

 

תרגילים:

       1.         שנה את צבע הנורות כך שתארנה באור ירוק במצב True ובאור אדום במצב False.

       2.         הוסף צג שיראה את השגיאה.

       3.         שנה את האלגוריתם כך שכאשר הערך המוחלט של השגיאה קטן מ 0.2 מעלות יופסקו המאורר והנורה. שים לב לנושאים הבאים:

                                              ·          האם יש צורך בפקודת הפסק נורה בצמוד לפקודת הפסק מנוע ולהפך?

                                              ·          כיצד תשלוט עכשיו בנורות הוירטואליות לציון פעולת מאורר ונורה?

                                              ·          רמז נדרש מבנה case נוסף שמבנה ה case הקיים יהיה לצידו.

       4.         שנה את האלגוריתם כך שמהירות המנוע ועצמת הנורות תהינה תלויות בשגיאה (ההפרש בין הערך הרצוי למצוי) כך:

                      ·           שאם השגיאה היא מעלה אחת המנוע (או הנורות) יפעלו בחצי עוצמה (עוצמה ארבע).

                      ·          אם השגיאה היא שתי מעלות (או יותר) הם יפעלו בעוצמה מלאה.

 

 

בחזרה לתפריט הראשי