שפת הסולם
🎯 מטרות למידה
בסוף הפרק תוכלו:
- להכיר את חמש שפות התכנות של התקן IEC 61131-3.
- לתרגם שורת סולם למשוואה בוליאנית, ומשוואה לשורת סולם.
- להשתמש בהוראות SET ו-RSET ולהימנע מסליל כפול.
- להשתמש בקוצב הזמן TIM של אומרון ולשרטט את דיאגרמת הזמנים שלו.
- להשתמש במונה CNT של אומרון עם כניסת ספירה וכניסת איפוס.
❓ שאלת פתיחה
רוצים שנורית תקלה תהבהב פעם בשנייה כשיש עומס יתר.
איך עושים את זה בלי לחבר שום רכיב נוסף ללוח?
רמז: חפשו בפרק 2 ביט מיוחד שמהבהב בעצמו.
ידע נדרש
- פרק 2: אזורי הזיכרון.
- פרק 3: מגע בשטח מול מגע בסולם.
- פעולות "וגם", "או" ו"לא".
ציוד וזמן
| ציוד | כמות |
|---|---|
| מחשב עם תוכנת התכנות של אומרון (CX-Programmer) | 1 |
| בקר אומרון (לא חובה, אפשר בסימולציה) | 1 |
⏱️ זמן מומלץ: שלושה שיעורים. רוב העבודה בסימולציה במחשב.
4.1 חמש שפות התקן
התקן הבינלאומי IEC 61131-3 קבע חמש שפות לתכנות בקרים. ברוב הבקרים אפשר לשלב כמה שפות באותה תוכנית.
| שפה | סוג | מתי משתמשים |
|---|---|---|
| דיאגרמת סולם (LD) | גרפית | פיקוד על מנועים ושסתומים. נראית כמו מעגל פיקוד, ולכן מתחילים בה. |
| דיאגרמת בלוקים (FBD) | גרפית | בקרה רציפה וחישובים: בלוקים שמחוברים בקווים. |
| טקסט מובנה (ST) | טקסט | חישובים מורכבים, לולאות ותנאים, בדומה לשפות תכנות רגילות. |
| רשימת הוראות (IL) | טקסט | שפה ישנה ודומה לאסמבלי. כמעט לא בשימוש היום. |
| תרשים שלבים (SFC) | גרפית | תהליכים בשלבים: מילוי, ערבוב, חימום, ריקון. נפגוש את הרעיון בפרק 12. |
אותה לוגיקה של הפעל/הפסק מפרק 5, בשתי שפות נוספות: בדיאגרמת בלוקים ובטקסט מובנה.
(* הפעל/הפסק עם החזקה עצמית *)
Motor := NOT OL AND NOT Stop AND (Start OR Motor);
תלמידים שמכירים ארדואינו רואים דמיון בין טקסט מובנה לבין שפת C. הרעיון דומה, אבל אלה שפות שונות: בבקר אין loop(), כי הבקר כבר סורק את התוכנית שוב ושוב בעצמו.
למה בכל זאת סולם? מי שעומד ליד הלוח רואה את הסולם "חי" על המסך: כל מגע שמוליך נצבע. טכנאי שמכיר מעגלי פיקוד מבין אותו מיד, גם בלי לדעת לתכנת.
4.2 שורה בסולם היא משוואה
- מגעים בטור הם "וגם".
- מגעים במקביל הם "או".
- מגע סגור הוא "לא" על הביט שלו.
- הסליל בצד ימין הוא התוצאה.
סליל כפול. כאן אותו מוצא 100.00 כתוב בשתי שורות. הבקר מבצע את שתיהן, והשורה האחרונה קובעת. לחצן 1 "לא עובד", כי שורה 1 מכבה את הנורית מיד אחריו. הכלל: כל סליל נכתב פעם אחת, ואת כל התנאים שלו מחברים לאותה שורה.
הוראות SET ו-RSET
SET מדליק ביט, והביט נשאר דולק גם אחרי שהתנאי נעלם. RSET מכבה אותו. זו דרך נוספת לבנות זיכרון בלי מגע החזקה.
כששני התנאים מתקיימים יחד, השורה האחרונה גוברת. לכן שמים את שורת ה-RSET אחרי שורת ה-SET: כך העצירה גוברת.
4.3 קוצב זמן של אומרון
- TIM 0000 הוא מספר קוצב הזמן.
- #50 הוא הערך שנקבע, ביחידות של עשירית שנייה: 50 × 0.1 = 5 שניות.
- כשהכניסה דולקת, הערך הנוכחי יורד מ-50 עד 0.
- כשהוא מגיע ל-0, דגל הסיום T0000 נדלק.
- כשהכניסה כבה, קוצב הזמן מתאפס מיד.
בין t1 ל-t2 הכניסה דלקה רק 2 שניות, ולכן הנורית לא נדלקה וקוצב הזמן התאפס. מ-t3 הכניסה דולקת ברציפות, ואחרי 5 שניות דגל הסיום נדלק. זה השהיה בהפעלה. השהיה בהפסקה בונים עם ביט עבודה, ונלמד אותה בפרק 8.
ערכים נפוצים: #10 = שנייה אחת, #50 = 5 שניות, #200 = 20 שניות, #600 = דקה. הערך נכתב עם סולמית לפניו.
4.4 מונה של אומרון
- למונה יש שתי כניסות: ספירה בשורה העליונה, ואיפוס (R) בשורה התחתונה.
- בכל פעם שכניסת הספירה עוברת מ-0 ל-1, הערך הנוכחי יורד באחד, מ-5 עד 0.
- כשהערך מגיע ל-0, דגל הסיום C0000 נדלק ונשאר דולק.
- כניסת האיפוס מחזירה את הערך ל-5 ומכבה את הדגל.
ערך המונה נשמר גם בהפסקת חשמל. לכן תמיד מתכננים איך מאפסים אותו: בלחצן, בסוף מחזור, או בביט הסריקה הראשונה P_First_Cycle.
4.5 תרגול
רמה 1 · בסיסי כתבו את המשוואה של הסולם.
רמה 2 · בינוני ציירו סולם למשוואה Y = A · ( B + C ) + D. השתמשו במבואות 0.00 עד 0.03 ובמוצא 100.00.
רמה 3 · מתקדם כתבו סולם שבו:
- נורית התקלה 100.02 מהבהבת פעם בשנייה כל עוד ההגנה התרמית 0.00 פועלת.
- המונה CNT 0001 סופר כמה פעמים הופעל המנוע 100.00, ונורית 100.03 נדלקת אחרי 10 הפעלות. לחצן 0.07 מאפס את המונה.
4.6 סיכום
- התקן IEC 61131-3 מגדיר חמש שפות: סולם, בלוקים, טקסט מובנה, רשימת הוראות ותרשים שלבים.
- בסולם: טור הוא "וגם", מקביל הוא "או", ומגע סגור הוא "לא".
- כל סליל נכתב בשורה אחת בלבד. בסליל כפול, השורה האחרונה קובעת.
- SET מדליק ביט ומשאיר אותו דולק. RSET מכבה. שורת ה-RSET אחרונה כדי שהעצירה תגבר.
- TIM של אומרון סופר לאחור ביחידות של עשירית שנייה: #50 הוא 5 שניות.
- קוצב הזמן מתאפס ברגע שהכניסה שלו כבה.
- CNT של אומרון סופר לאחור מהערך שנקבע עד 0, ויש לו כניסת איפוס.
- P_1s מהבהב פעם בשנייה, ו-P_First_Cycle דולק רק בסריקה הראשונה.
מונחים
| מונח | באנגלית | הסבר קצר |
|---|---|---|
| דיאגרמת סולם | Ladder Diagram | שפה גרפית שנראית כמו מעגל פיקוד |
| טקסט מובנה | Structured Text | שפת טקסט של התקן |
| תרשים שלבים | SFC | שפה לתהליכים שמתקדמים בשלבים |
| קוצב זמן | Timer | סופר זמן ומדליק דגל סיום |
| מונה | Counter | סופר פולסים ומדליק דגל סיום |
| סליל כפול | Double coil | טעות: אותו מוצא בשתי שורות |
| ערך קביעה | Set value | הערך שקוצב הזמן או המונה צריכים להגיע אליו |
בדיקה עצמית
- כתבו את המשוואה של שורה עם המגעים A ו-B בטור, ו-C במקביל לשניהם.
- מה יקרה אם אותו מוצא 100.00 כתוב בשתי שורות שונות?
- כמה זמן יספור TIM 0003 עם הערך #120?
- קוצב זמן הגיע ל-3 שניות מתוך 5, והכניסה שלו כבתה. מה קורה לערך שלו?
- ענו על שאלת הפתיחה של הפרק.
התשובות בסוף הפרק.
דף המבוא לבקרים מתוכנתים באתר, עם הסברים והדגמות חיות של הנושאים בפרקים 1 עד 4:
פתרונות תרגילי הפרק
רמה 1
המגע 0.00 בטור לשאר השורה ("וגם"). המגע הסגור 0.01 הוא B, והוא במקביל ל-C ("או").
רמה 2
הענף העליון הוא A · (B + C). המגע D במקביל לכל הענף, כי הוא "או" על כל הביטוי.
רמה 3
הביט P_1s מהבהב בעצמו, ולכן בטור להגנה התרמית הוא יוצר הבהוב. המונה סופר את עליית המוצא 100.00: כל הפעלה של המנוע היא פולס אחד. אחרי 10 הפעלות דגל הסיום מדליק את נורית השירות.
תשובות לבדיקה העצמית
- Y = A · B + C.
- שתי השורות מתבצעות, והשורה האחרונה קובעת את מצב המוצא. התנאי של השורה הראשונה כאילו לא קיים.
- 120 × 0.1 = 12 שניות.
- הוא מתאפס מיד, וכשהכניסה תידלק שוב הספירה תתחיל מההתחלה.
- מחברים בטור את מגע ההגנה התרמית ואת הביט P_1s, ומפעילים בעזרתם את נורית התקלה. הנורית מהבהבת פעם בשנייה כל עוד ההגנה פועלת.