HMI - PLC ` חלק ב - אוניברסיטת תל אביב

‫אוניברסיטת תל‪-‬אביב‬
‫הפקולטה להנדסה‬
‫המחלקה להנדסת תעשיה‬
‫המעבדה ליצור בעזרת מחשב ‪ ‬‬
‫‪ HMI‐PLC‬חלק ב'‬
‫‪ ‬‬
‫נושאי המעבדה‪:‬‬
‫היכרות עם ‪ TRIGGERS‬ו‪ TAGS-‬בתוכנת ‪ WIZCON‬‬
‫היכרות עם תכנות בשפות ‪ SFC‬ו‪ST-‬‬
‫מטרות המעבדה‪:‬‬
‫יצירת שרטוט מורכב תוך שימוש ב‪ TAGS-‬ו‪TRIGGERS-‬‬
‫כתיבת תוכנית בשפות ‪ SFC‬ו‪ ST-‬ב‪ WIZPLC-‬לצורך הפעלת המערכת‬
‫טרום מעבדה‬
‫חומר רקע תיאורטי‬
‫יש לקרוא את נספחי תדריך זה ונספחי תדריך מעבדת ‪ HMI‐PLC‬חלק א'‬
‫יש לצפות בתדריך וידאו '‪'LAB 4 – HMI + PLC‬‬
‫עבודת הכנה‬
‫‪ .1‬קראו את המטלה בסעיף ‪ 2‬בתדריך זה )עמ' ‪ (5‬והגדירו את ה‪TAG-‬ים הנדרשים לצורך‬
‫יצירת המערכת‪ .‬‬
‫‪ .2‬הביטו בשרטוט המוכן בעמ' ‪ 8‬בתדריך זה ושייכו את ה‪TAG-‬ים שהגדרתם בסעיף הקודם‬
‫לכל אובייקט‪ .‬ציין האם האובייקט בשרטוט מציג את ערך ה‪ ,TAG-‬משנה את ערך ה‪-‬‬
‫‪ ,TAG‬גם מציג וגם משנה את ערך ה‪ TAG-‬או לא מציג ולא משנה כלל‪ .‬‬
‫‪ .3‬בנו את הלוגיקה )תנאים למעבר בין מצבים שונים במערכת והפעולות שייעשו בכל מצב(‬
‫לפיה תעבוד המעלית במטלה‪ .‬הוראות ללוגיקה נמצאים בסעיף ‪ 3‬בעמוד ‪ 9‬בתדריך זה‪ .‬‬
‫‪ .4‬כיצד ניתן לתאר את הפתיחה והסגירה של דלתות המעלית מבחינת ‪TRIGGER ‬‬
‫‪ DEFINITION‬ו‪ ?DYNAMIC DEFINITION-‬‬
‫יש להגיע עם תוצרי סעיפים ‪ 1-4‬למעבדה בכדי לקצר את משך זמן העבודה במעבדה‪.‬‬
‫עריכה אחרונה ‪ 9/2010‬ע"י חבצלת טרייסטר‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫מהלך המעבדה‬
‫מטרת מעבדה זו היא היכרות יותר מעמיקה עם האפשרויות השונות בתוכנת ‪ .WIZCON‬לכן‪ ,‬כל‬
‫השלבים סובבים סביב אותה מטלה אשר מתוארת בתחילת סעיף ‪.2‬‬
‫להלן סדר הפעולות כפי שתידרשו לבצע במהלך המעבדה‪ .‬לכל פעולה ישנה הפניה לפירוט והסבר‬
‫בהמשך התדריך‪.‬‬
‫‪ .1‬כניסה לתוכנה וקונפיגורציה )עמ' ‪ (3‬‬
‫‪ .2‬מטלה – יצירת שרטוט מעלית )עמ' ‪ (5‬‬
‫‪ .2.1‬הגדרת ‪TAG‬ים עבור אובייקטים )עמ' ‪ (6‬‬
‫‪ .2.2‬הגדרת ‪ TRIGGER DEFINITION‬עבור אובייקטים )עמ' ‪ (7‬‬
‫‪ .2.3‬הגדרת ‪ DYNAMIC DEFINITION‬עבור אובייקטים )עמ' ‪ (7‬‬
‫‪ .3‬בניית דיאגרמת ‪ SFC‬עם בלוקים מתוכנתים ב‪ ST-‬למעלית )עמ' ‪ (9‬‬
‫שימו לב‪ :‬בעמ' ‪ 12‬ישנם הנחיות לכתיבת דו"ח מסכם‪.‬‬
‫לתדריך זה מצורפים ‪ 5‬נספחים‬
‫נספח א' – שימוש ב‪‐TAG-‬ים )עמ' ‪(13‬‬
‫נספח ב' – ‪) TRIGGER DEFINTION‬עמ' ‪(16‬‬
‫נספח ג' – ‪) DYNAMIC DEFINITION‬עמ' ‪(18‬‬
‫נספח ד' – שפת תכנות ‪) SFC‬עמ' ‪(21‬‬
‫נספח ה' – שפת תכנות ‪) ST‬עמ' ‪(23‬‬
‫‪ ‬‬
‫‪ 2‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ .1‬כניסה לתוכנה וקונפיגורציה ‪ ‬‬
‫היכנסו לתוכנת ‪ WIZCON‬בעזרת הקיצור על שולחן העבודה ‪-‬‬
‫‪ .‬‬
‫במסך שנפתח יש לבחור בטאב ‪Blank Application <– NEW‬‬
‫במסך הנפתח יש ללחוץ לחיצה כפולה על ‪ ,My documents‬ולהוסיף בסוף שורת ‪Folder‬‬
‫‪ name‬את שם התיקייה בה תעבדו – לדוגמא ‪) \CIMLAB‬לא לשכוח את ה'\' לפני שם הקובץ(‪.‬‬
‫לאחר מכן‪ ,‬יש למלא בשורת ‪ Application name‬את שם הקובץ הרצוי )עם סיומת ‪(.wpj‬‬
‫וללחוץ ‪.OK‬‬
‫‪ 3‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫יצירת תיקיה‬
‫תופיע הודעה שתשאל אם ליצור את התיקייה‪ .‬יש ללחוץ ‪.Yes‬‬
‫ייתכן ויופיעו מספר הודעות שגיאה המתייחסות לכך שמדובר בגרסת ‪) DEMO‬כזו שאינה‬
‫מחוברת לבקר אמיתי‪ ,‬אלא רק עושה סימולציה של בקר(‪ .‬על כולן יש להקיש ‪ .OK‬בהודעה אשר‬
‫שואלת לגבי הוספת ‪ SYSTEM TAGS‬יש ללחוץ ‪.NO‬‬
‫יפתח סרגל הכלים של תוכנת ה‪ WIZCON-‬בו ייעשה שימוש לאורך המעבדה‪:‬‬
‫סרגל כלים ‪WIZCON‬‬
‫‪ 4‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫לחצו על הכפתור השמאלי ביותר אשר פותח לנו את ממשק ה‪:HMI-‬‬
‫‪Application ‬‬
‫‪Setup‬‬
‫‪ Tags‬‬
‫מסך כניסה‬
‫‪ Images‬‬
‫בחרו את כפתור ‪.Application Setup‬‬
‫במסך אשר ייפתח יש ללחוץ על כפתור ‪ Advanced‬אשר יפתח חלון נוסף‪ .‬יש לוודא כי ‪Run‬‬
‫‪ PLC Runtime‬הינו מסומן‪ .‬לחצו ‪ OK‬עד לחזרה לחלונית ממשק ה‪.HMI-‬‬
‫‪ .2‬מטלה – יצירת שרטוט מעלית ‪ ‬‬
‫יש ליצור שרטוט ‪ HMI‬לפי התכנון הבא‪:‬‬
‫מעלית העוברת בין ‪ 3‬קומות‪ .‬בכל קומה יש לחצן שבעזרתו נוסע יכול להזמין את המעלית‪ .‬בנוסף‬
‫יש כפתור אחד נוסף אשר בעזרתו אומר הנוסע לאיזה קומה הוא מעוניין להגיע‪ .‬בראש המעלית‬
‫יש שלוש נוריות בעלות מספור‪ .‬נוריות אלו נותנות חיווי על מיקום המעלית‪ .‬כאשר המעלית‬
‫נמצאת בקומה הראשונה הנורית של הקומה הראשונה נדלקת‪ .‬כאשר המעלית עוברת לקומה‬
‫השנייה‪ ,‬נורית החיווי של הקומה הראשונה נכבית ונורית החיווי של הקומה השנייה נדלקת וכן‬
‫הלאה‪.‬‬
‫‪ 5‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫שימו לב‪ :‬יש להשתמש בסרגל הכלים ‪ Drawings‬ולא בצורות מוכנות מתוך ספריית ה‪-‬‬
‫‪.CLUSTERS‬‬
‫יצירת תוויות‬
‫פקד ‪BUTTON‬‬
‫ניתן להשתמש בפקד ‪ Button‬כפתורים בשביל יצירת הלחצנים להזמנת המעלית‪.‬‬
‫בלחצן יצירת תוויות ניתן להשתמש בשביל נוריות החיווי‪.‬‬
‫יש אפשרות לחבר בין מספר צורות שמשרטטים ע"י בחירת כל האזור הכולל את הצורות ולחיצת‬
‫לחצן ימני בעכבר – ‪ .group‬לא ניתן ליצור קיבוץ של צורות אשר מוגדר להן אופן שינוי שונה‪.‬‬
‫ניתן לשנות את הצבע של צורה בעזרת בחירת הצורה ולחיצה על אחד הצבעים בלוח הצבעים‪.‬‬
‫)לחצן שמאלי על צבע ישנה את צבע המסגרת‪ ,‬לחצן ימני ישנה את צבע התוכן(‬
‫‪ 2.1‬הגדרת ‪-TAG‬ים עבור אובייקטים‬
‫הגדירו ‪TAG‬ים לכל ישות שמשנה את מצבה‪ .‬נדרשים ‪TAG‬ים עבור הישויות הבאות‪ :‬מעלית‪,‬‬
‫דלת המעלית‪ ,‬לחצני הזמנת מעלית )‪ 3‬לחצנים(‪ ,‬לחצן הוראת קומה אליה רוצה הנוסע להגיע‪.‬‬
‫הדרכה להגדרת ה‪ TAG-‬נמצא בנספח א' – שימוש ב‪-TAG-‬ים‬
‫מה יהיה הטווח של ה‪ TAG-‬של לחצן הוראת קומה אליה רוצה הנוסע להגיע? )יש לענות על‬
‫שאלה זו בדו"ח מסכם(‬
‫שימו לב‪ :‬טווח הפעילות של המעלית צריך להיות מספר שמתחלק במספר הקומות ובעלת‬
‫רזולוציה מספיק טובה שנוכל לראות את תנועת המעלית כרציפה ולא בדידה – טווח מומלץ‪90 :‬‬
‫או ‪120‬‬
‫‪ 6‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ 2.2‬הגדרת ‪ TRIGGER DEFINITION‬עבור אובייקטים‬
‫הגדירו את ה‪ Trigger Definition-‬לכל אובייקט אשר יכול לשנות את ערך ה‪ TAG-‬אליו הוא‬
‫מחובר‪.‬‬
‫שימו לב‪:‬‬
‫ישנן שתי דרכים בהם אפשר לחבר בין אובייקטים בשרטוט לבין ‪TAG‬ים‪.‬‬
‫הראשונה ע"י ‪ TRIGGER DEFINITION‬שמחברת בין ‪ TAG‬לבין אובייקט בשרטוט שיכול‬
‫לשנות את ערך ה‪.TAG-‬‬
‫השנייה ע"י ‪ DYNAMIC DEFINTION‬שמחברת בין ‪ TAG‬לבין אובייקט בשרטוט אשר מציג‬
‫את ערך ה‪.TAG-‬‬
‫שימו לב אם מדובר ב‪ TAG‬אנלוגי או דיגיטאלי‪ .‬יש להגדיר ‪ Trigger Definition‬לאובייקטים‬
‫הבאים‪ :‬לחצני הזמנת מעלית )‪ 3‬לחצנים( ולחצן הוראת קומה אליה רוצה הנוסע להגיע‪ .‬ראו‬
‫נספח ב' – ‪.Trigger Definition‬‬
‫נקודה למחשבה‪:‬‬
‫ניתן גם להגדיר ‪ Trigger Definition‬למעלית עצמה לפי מספר הקומה אותה הכניס הנוסע על ידי‬
‫הגדרת ‪ Trigger Definition‬למעלית עם ‪ action‬שפונה לערך ה‪ TAG‬של לחצן הוראת קומה‪ .‬‬
‫מהי הפורמולה שיש להפעיל על ‪ TAG‬המעלית כדי שתעבור )בקפיצה( לקומה אותה לחץ‬
‫הנוסע? )יש לענות על שאלה זו בדו"ח מסכם(‬
‫‪ 2.3‬הגדרת ‪ DYNAMIC DEFINITION‬עבור אובייקטים‬
‫הגדר את ה‪ Dynamic Definition-‬לכל אובייקט אשר מציג ערכי ‪.TAG‬‬
‫יש להגדיר ‪ Dynamic Definition‬לאובייקטים הבאים‪ :‬מעלית )תנועה אנכית ‪ +‬תנועת פתיחת‬
‫דלת מעלית(‪ ,‬נוריות חיווי קומה‪) .‬ניתן גם להגדיר ‪ Dynamic Definition‬ללחצן הוראת קומה‬
‫אליה רוצה הנוסע להגיע‪ ,‬כך שייסע יחד עם המעלית‪ ,‬אבל אין חובה(‪.‬‬
‫‪ 7‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫השרטוט המוכן‪:‬‬
‫‪ ‬‬
‫לאחר שהשרטוט מוכן‪ ,‬השלב הבא הוא יצירת הלוגיקה לפיה המערכת עובדת ולתכנת אותה‬
‫בתוכנת ‪ .CodeSys‬בדומה לשפה ‪ LD‬אותה הכרתם במעבדה הקודמת‪ ,‬ישנן עוד שפות בהן ניתן‬
‫לתכנת את הלוגיקה של המערכת המבוקרת‪ .‬במעבדה זו נכיר את השפות ‪ SFC‬ו‪.ST-‬‬
‫‪ 8‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ .3‬בניית דיאגרמת ‪ SFC‬עם בלוקים מתוכנתים ב‪ ST-‬למעלית ‪ ‬‬
‫כדי להפעיל את מערכת המעלית יש לבנות את הלוגיקה הנדרשת לשם הפעלת המעלית בעזרת‬
‫דיאגראמת ‪ SFC‬שבה כל בלוק מתוכנת בשפת ‪.ST‬‬
‫חשבו כיצד ליישם בתוכנה את הלוגיקה לפיה תפעל המעלית‪ .‬להלן הלוגיקה‪:‬‬
‫המעלית מתחילה מקומה ‪ .0‬כאשר נוסע לוחץ על אחד משלושת הלחצנים בקומות‪ ,‬דלת‬
‫המעלית תיסגר‪ ,‬והמעלית תיסע לקומה הרצויה‪ .‬כאשר המעלית תגיע לקומה‪ ,‬הדלת תיפתח‪.‬‬
‫רק לאחר שהנוסע ילחץ על כפתור ‪ GO-TO‬ויכניס את מספר הקומה אליו הוא רוצה להגיע‪,‬‬
‫דלת המעלית תיסגר והמעלית תיסע לקומה המבוקשת‪ .‬לאחר שהמעלית תגיע לקומה‬
‫המבוקשת‪ ,‬הדלת תיפתח‪ ,‬תמתין מספר שניות ואז תיסגר‪ .‬כעת המעלית תמתין לקבלת‬
‫הוראות מהמשתמש )לחיצה על לחצן באחד הקומות(‬
‫הדרכה‪:‬‬
‫לחצו על הכפתור‬
‫)העשירי מימין בסרגל כלים ‪ .((Figure1) Wizcon‬כשתישאלו אם‬
‫תרצו לייצא את ה‪TAG-‬ים‪ ,‬לחצו כן‪ ,‬וודאו כי כל ה‪TAG-‬ים הרלוונטיים לשרטוט אותו‬
‫יצרתם נמצאים בטבלה מצד ימין‪ .‬ניתן להוסיף ולהוריד ‪TAG‬ים באמצעות לחצני ‪ Add‬ו‪-‬‬
‫‪ Remove‬הנמצאים במרכז החלון‪.‬‬
‫‪ 9‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫ייצוא ‪TAG‬ים‬
‫לאחר לחיצת ‪ ,OK‬תידרשו ליצור פרויקט חדש ב‪ .WizPLC Studio-‬יש ללחוץ ‪NEW‬‬
‫ולבחור ניתוב לפרויקט‪ .‬יש לשמור את הקובץ בתיקיית ‪ SoftPLC‬תחת התיקייה בה כל‬
‫הפרויקט שמור‪ .‬מומלץ לתת שם אינדיקטיבי לקובץ‪ .‬לאחר לחיצת ‪ ,OK‬תיפתח תוכנת‬
‫‪.CoDeSys‬‬
‫בטאבים בתחתית המסך בצד שמאל‪ ,‬יש ללחוץ על הטאב הימני‪ .‬בתפריט שנפתח מעליו יש‬
‫ללחוץ לחיצה ימנית על ‪ .Target Settings‬בחלון הנפתח בחרו בטאב ‪ general‬וודאו כי‬
‫האפשרות של ‪ Load bootproject automatically‬מסומנת‪ .‬כדי לשמור לחצו ‪.ENTER‬‬
‫‪ 10‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫בחלון מצד שמאל יש ללחוץ לחצן ימני על התיקייה ‪ POU‬ולבחור ‪ .Add Object‬בחלון אשר‬
‫ייפתח נבחר הפעם בשפת ‪ .SFC‬לאחר לחיצת ‪ OK‬יתקבל חלון עבודה עם תחילת התוכנה‪:‬‬
‫‪ ‬‬
‫דיאגרמת בלוקים‬
‫שפת ‪ (System Flow Control) SFC‬היא שפה אשר מורכבת מבלוקים – ‪ .Steps‬כל ‪Step‬‬
‫יכול לציין פעולות או מצבים והמעברים בין מצבים מסוימים‪ .‬בסוף כל ‪ Step‬נמצא תנאי‬
‫המורה מתי ניתן לצאת מהצעד הנוכחי ולעבור לצעד הבא‪ .‬העזרו בנספח ד' – שפת תכנות‬
‫‪ SFC‬לשם בניית התכנית‪.‬‬
‫‪ 11‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫כדי לבצע פעולות בתוך הבלוק יש ללחוץ לחיצה כפולה על הבלוק‪ .‬תתבקשו לבחור שפה איתה‬
‫תתכנתו בתוך הבלוק‪ .‬ניתן לבחור בכל שפה שמוצעת‪ .‬במעבדה זו יש לבחור באפשרות ‪.ST‬‬
‫שפת ‪ – (Structured Text) ST‬שפה דומה ל‪ .PASCAL-‬עובדת עם לולאות ‪FOR,‬‬
‫‪ ,WHILE‬תנאי ‪ IF‬ועוד‪ .‬היעזרו בנספח ה' – שפת תכנות ‪ ST‬לבניית הבלוקים‪.‬‬
‫לאחר בניית הדיאגראמה יש לחזור לסרגל הכלים של ‪ WIZCON‬ולהפעיל את הסימולאטור‬
‫ע"י לחיצה על אייקון האיש הרץ‬
‫)לחצן תשיעי מימין(‪ .‬אם הסימולאטור כבר פועל לא‬
‫יקרה דבר‪ .‬כעת יש לחזור לדיאגראמת בלוקים‪ .‬בתפריט ‪ Online‬יש לבחור ‪ .Login‬פעולה זו‬
‫תוריד את התוכנית לבקר‪ .‬לאחר מכן יש לבחור בתפריט ‪ Online‬ב‪ .Run-‬כדי לראות את‬
‫התוכנית רצה‪ ,‬יש לפתוח את חלון השרטוט וללחוץ על האובייקטים אשר משנים ערכי‬
‫‪TAG‬ים ולראות איך אובייקטים אשר מציגים את ערך ה‪ TAG-‬משתנים בהתאם ללוגיקה‬
‫שהוגדרה בדיאגראמת בלוקים‪.‬‬
‫חשוב!‬
‫שמירת הדיאגראמה – יש לבחור בתפריט ‪ Project‬את האפשרות של ‪ .Document‬ייפתח רשימה‬
‫של כל הרכיבים שניתן לשמור כקבצים‪ .‬יש לבחור בתוכנית שכתבתם‪ .‬ייפתח חלון של הדפסה‪ .‬יש‬
‫לבחור הדפסה לקובץ ‪.PDF‬‬
‫דו"ח מסכם‬
‫יש להגיש דו"ח מסכם שיכלול )בנוסף לסעיפים הרגילים(‬
‫‪ .1‬תמונת מסך של שרטוט ה‪HMI-‬‬
‫‪ .2‬דיאגראמת ‪SFC-ST‬‬
‫‪ .3‬יש לענות על השאלות הבאות )מופיעות גם בתוך התדריך(‪:‬‬
‫‪ .3.1‬מה יהיה הטווח של ה‪ TAG-‬של לחצן הוראת קומה אליה רוצה הנוסע להגיע?‬
‫‪ .3.2‬מהי הפונקציה שיש להפעיל על ‪ TAG‬המעלית כדי שתקפוץ לקומה אותה לחץ הנוסע?‬
‫‪ 12‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫נספח א' – שימוש ב‪-TAG-‬ים‬
‫‪TAG‬ים הם בעצם יציאות‪/‬כניסות בקר )‪ ,(PLC‬יציאות‪/‬כניסות פנימיות )‪ (DUMMY‬או‬
‫משתנים‪ ,‬שאנו מגדירים לצורך אפיון העצמים באפליקציה‪.‬‬
‫‪ TAG‬הוא מקום בזיכרון אשר יכול לקבל ערכים שונים‪ .‬אנחנו נרצה באמצעות השרטוט אשר‬
‫נשרטט במערכת ‪ HMI‬להציג את ערכו של ה‪ TAG‬ולתת אפשרות לשנות את ערכו של ה‪.TAG-‬‬
‫לכל אובייקט בשרטוט נבחין בין מצב בו האובייקט מחובר ל‪ ,TAG-‬לא מחובר ל‪ TAG-‬או‬
‫מחובר ל‪ TAG-‬שכבר חובר לאובייקט אחר‪:‬‬
‫‪‬‬
‫אובייקט אשר לא מציג ערך של ‪ TAG‬ולא משנה ערך של ‪ – TAG‬לא יחובר ל‪.TAG‬‬
‫‪‬‬
‫אובייקט אשר יכול לשנות את ערכו של ה‪ TAG-‬יחובר ל‪ TAG-‬אותו הוא משנה‪) .‬גם אם‬
‫הוא לא מציג את השינוי(‬
‫‪‬‬
‫אובייקט אשר רק מציג את ערך ה‪ TAG‬אך לא יכול לשנות את ערך ה‪ – TAG‬יחובר‬
‫ל‪ TAG‬של האובייקט אותו הוא מציג‪.‬‬
‫כלומר – ייתכן מצב בו ‪ TAG‬מחובר ליותר מאובייקט אחד‪ .‬וייתכן מצב בו אובייקט מחובר‬
‫ליותר מ‪ TAG-‬אחד‪.‬‬
‫ה‪ TAG-‬יכול להיות אחד מ‪ 3-‬סוגים‪:‬‬
‫אנלוגי – מקבל ערך מספרי רציף שגבולותיו נקבעים בעת הגדרתו‪ .‬לדוגמא – ‪ TAG‬אשר מעיד‬
‫על התקדמות ישות מנקודה א' לנקודה ב' באופן רציף‪.‬‬
‫דיגיטלי – מקבל ערך בוליאני )‪ .(0/1‬לדוגמא הדלקה‪/‬כיבוי של ישות‪.‬‬
‫‪ – String‬הפעלת ‪ TAG‬מסוג זה תשלח מחרוזת תווים לבקר‪ ,‬לדוגמא‪Run Homes :‬‬
‫ה‪ TAG-‬משמש לצורך הגדרת הלוגיקה של המערכת במערכות ה‪.PLC-‬‬
‫‪ 13‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫הוראות ליצירת ‪TAG‬‬
‫לחצו על כפתור ‪) TAGS‬מסומן בשרטוט מסך כניסה(‪ .‬במסך ‪ List of TAGs‬שנפתח בצד ימין‪,‬‬
‫יש ללחוץ לחצן ימני בעכבר ולבחור ‪ . Add TAG‬ייפתח המסך הבא‪:‬‬
‫הגדרת ‪TAG‬‬
‫בשדה ‪ Tag name‬יש להכניס את שם ה‪) .TAG‬כדאי לתת שם עם משמעות‪ ,‬לצורך שימוש‬
‫בהמשך(‬
‫‪ – Tag Source‬מאחר והמערכת במעבדה אינה מחוברת לבקר פיזי וכל העבודה היא ב‪,DEMO‬‬
‫כל ה‪ TAGs-‬בהם ייעשה שימוש יוגדרו כ‪.Dummy-‬‬
‫‪ – Tag Type‬יש להגדיר לפי סוג ה‪ TAG‬הרצוי )אנלוגי‪/‬דיגיטלי‪.(String/‬‬
‫‪ – Tag Scale‬שדה זה יופיע כאשר מדובר ב‪ TAG‬אנלוגי‪ .‬יש להוריד את הסימון מ‪Set -‬‬
‫‪ Default‬ולתת ערך ל‪ High Limit-‬לפי הרזולוציה הרצויה‪ .‬רזולוציה זו מגדירה את הרציפות של‬
‫התנועה‪ .‬אין חובה להתחיל מערך תחתון ‪ .0‬לעיתים נעדיף להשתמש בערך תחתון אחר – לדוגמא‪,‬‬
‫אם יש לנו אובייקט אשר נע מזווית של ‪ 90‬מעלות עד לזווית של ‪ 180‬מעלות‪ ,‬נגדיר את הערך‬
‫התחתון כ‪ 90-‬והערך העליון כ‪.180-‬‬
‫‪ 14‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫לאחר מילוי השדות הנדרשים בטאב ‪ General‬יש ללחוץ ‪ .Apply‬לחיצת ‪ Apply‬יוצרת את ה‪-‬‬
‫‪ TAG‬כך שיהיה אפשר לעבוד איתו בהמשך‪.‬‬
‫עברו לטאב – ‪WizPLC‬‬
‫הגדרת ‪WIZPLC– TAG‬‬
‫יש לסמן את הכפתור ‪ .Export as a WizPLC variable‬סימון כפתור זה יאפשר לעבוד עם ה‪-‬‬
‫‪ TAG‬במערכות ‪ PLC‬בסכימה הלוגית המתוכנתת‪.‬‬
‫יש להפוך את ‪ Sampling frequency‬לפעם ב‪ 50-‬מילישניות‪ .‬לחצו ‪.OK‬‬
‫‪ 15‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫נספח ב' –‪TRIGGER DEFINITION‬‬
‫לכל אובייקט אשר יכול לשנות את ערך ה‪ TAG‬יש להגדיר את הצורה בו הוא יכול לשנות את ערך‬
‫ה‪.TAG‬‬
‫לאחר שרטוט אובייקט ב‪ IMAGE‬והגדרת ‪ TAG‬כלשהו למערכת‪ ,‬נלחץ לחצן ימני על האובייקט‬
‫ונבחר באופציה ‪ .TRIGGER DEFINITION‬ייפתח המסך הבא‪:‬‬
‫‪ ‬‬
‫‪Trigger Definition‬‬
‫נבחר את ה‪ TAG-‬אותו אנו משייכים לאובייקט‪ .‬לאחר מכן נבחר באחד מה‪INPUT -‬‬
‫‪ METHODS‬המוצעים לנו‪:‬‬
‫‪ – Data Entry‬בעת לחיצה על האובייקט המשתמש יתבקש להזין ערך חדש ל‪.TAG‬‬
‫‪ – Action‬בעת לחיצה על האובייקט נבצע איזושהי פונקציה על ערך ה‪ – TAG‬לדוגמא‪ ,‬אם‬
‫מדובר ב‪ TAG‬דיגיטאלי‪ ,‬נרצה שבלחיצה על האובייקט‪ ,‬ה‪ TAG‬ישנה את ערכו מ‪ 0-‬ל‪ 1-‬ולהפך‪.‬‬
‫הפורמולה שנרצה להכניס הוא @‪ @) .1-‬מבטא את ערך ה‪ . (TAG‬ניתן גם לייחס לערך ‪TAG‬‬
‫אחר‪ ,‬לדוגמא ‪ @BUTTON+1 -‬יכניס ל‪ TAG-‬שלנו את ערכו של ‪ BUTTON – TAG‬בתוספת‬
‫‪.1‬‬
‫)יש לשים לב כי אם מדובר בכפתור‪ ,‬בעת לחיצה על האובייקט‪ ,‬הכפתור יילחץ‪ ,‬ולא ישוחרר‪ .‬ניתן‬
‫יהיה לשנות את ערך ה‪ TAG‬חזרה ל'לא לחוץ' דרך הלוגיקה שנגדיר בהמשך בדיאגראמת בלוקים(‬
‫‪ – Smooth‬בעת לחיצה על האובייקט ייפתח לנו חלון עם אפשרות לשנות את ערך ה‪ TAG‬בעזרת‬
‫‪.Slider‬‬
‫‪ – Fast Action‬בעת לחיצה על האובייקט ירוץ מאקרו שהוגדר מראש‪) .‬יש רשימה של ‪Macros‬‬
‫שניתן להשתמש בהם(‬
‫‪ 16‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ – Buttons‬בעת לחיצה על האובייקט יופיעו קבוצה של כפתורים עם ערכים אפשריים‪ .‬לחיצה‬
‫על אחד הכפתורים ישנה את ערך ה‪ TAG-‬לערך חדש או יריץ ‪.Macro‬‬
‫‪ – Bit‬בעת לחיצה על האובייקט יופיע חלון בו תוכל להחליט אם להפוך את ה‪ TAG‬למצב ‪ON‬‬
‫)‪ ,(1‬מצב ‪ (0) OFF‬או ‪ – TOGGLE‬כלומר להפוך את ערך ה‪ .TAG-‬סוג שינוי זה בעיקר מתאים‬
‫ל‪TAG‬ים דיגיטאליים‪ ,‬אך יכול גם לשמש ל‪TAG‬ים אנלוגיים‪.‬‬
‫‪ – Momentary‬בעת הגדרת סוג שינוי ‪ Momentary‬נתבקש להכניס שתי פקודות – אחת ל‪-‬‬
‫‪ Button up‬ואחת ל‪ .Button down-‬כך לדוגמא‪ ,‬אם יש כפתור שכאשר לוחצים עליו נלחץ‬
‫ומשוחרר‪ ,‬נוכל בעזרת לחיצה אחת גם ללחוץ וגם לשחרר‪ ,‬במקום שהכפתור יישאר לחוץ )כמו‬
‫שהיה ב‪.(action‬‬
‫‪ 17‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫נספח ג' – ‪DYNAMIC DEFINITION‬‬
‫לאובייקט אשר יכול להציג את ערך ה‪) TAG‬בין אם יכול לשנות את ערכו‪ ,‬ובין אם לא( יש להגדיר את‬
‫הצורה בה יציג את שינוי ערך ה‪ .TAG-‬לחצן ימני בעכבר על האובייקט ובחירת ‪Dynamic Definition‬‬
‫יפתח את החלון הבא‪:‬‬
‫‪ ‬‬
‫‪Dynamic Definition‬‬
‫יש לשים לב לשורה בה מורים על הצגת ערך ה‪ .TAG-‬לפי האנימציה הרצויה יש לבחור את השורה‬
‫הרצויה‪.‬‬
‫‪ – Move1/Move2‬צורת הצגת ערך ה‪ TAG-‬מתבצע באמצעות הזזת אובייקט מנקודה ‪ A‬לנקודה‬
‫‪ .B‬שימו לב כי נקודה ‪ A‬היא הנקודה בה שרטתתם את האובייקט‪ .‬אם צריך להעלות אובייקט מלמטה‬
‫למעלה והאובייקט שורטט בחלק העליון של השרטוט‪ ,‬ניתן להגדיר את המעבר מ‪ 100-‬ל‪ 0-‬במקום‬
‫מ‪ 0-‬ל‪ .100-‬לאחר לחיצה על כפתור ‪ Move1/Move2‬תתבקשו ללחוץ על האובייקט שינוע ועל‬
‫הנקודה הסופית במסלול‪.‬‬
‫‪ – Scale‬צורת הצגת ערך ה‪ TAG-‬מתבצע באמצעות שינוי הסקאלה של האובייקט בציר ‪ X‬ובציר ‪.Y‬‬
‫‪ – Rotate‬צורת הצגת ערך ה‪ TAG-‬מתבצע באמצעות סיבוב האובייקט‪ .‬לאחר לחיצה על ‪Rotate‬‬
‫תתבקשו ללחוץ על האובייקט שיסתובב ועל הנקודה הסופית אליה יסתובב האובייקט‪.‬‬
‫‪ – Fill‬צורת הצגת ערך ה‪ TAG-‬מתבצע באמצעות מילוי האובייקט )לדוגמא – המים שבדוד‬
‫מהמעבדה הקודמת(‪ .‬לאחר לחיצה על ‪ Fill‬תתבקשו לבחור את הנקודה )או הקו( ממנו יתחיל המילוי‬
‫של האובייקט ואת הנקודה )קו( הסופי בו יסתיים המילוי‪.‬‬
‫‪ – Show‬אפשרות זו אומרת שבערכים מסוימים של ה‪ TAG-‬נראה את האובייקט‪ ,‬ובערכים אחרים‪,‬‬
‫‪ 18‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫לא נראה‪) .‬שימושי לנוריות חיווי(‬
‫‪ – Empty‬אפשרות זו תציג את הגוף כגוף ריק כאשר ה‪ TAG-‬נמצא בין הערכים המצוינים‪.‬‬
‫בטבלה התחתונה יש אפשרות לבחור באנימציה לאובייקט אשר יש לו מספר טווחים בהם בכל טווח‬
‫ההתנהגות היא שונה‪.‬‬
‫‪ – Blink‬יש לבחור את ה‪ TAG-‬הרצוי‪ ,‬ובלחיצה על ‪ Blink‬ייפתח מסך בו יש לבחור את הטווחים‬
‫הרצויים של ה‪ TAG-‬ומהירות ההבהוב כאשר ה‪ TAG‬נמצא בכל טווח‪.‬‬
‫‪ – Line Color‬יש לבחור את ה‪ TAG-‬הרצוי‪ ,‬ובלחיצה על ‪ Line Color‬ייפתח מסך בו יש לבחור את‬
‫הטווחים הרצויים של ה‪ TAG-‬וצבע המסגרת של האובייקט בכל טווח‪.‬‬
‫‪ – Fill Color‬יש לבחור את ה‪ TAG-‬הרצוי‪ ,‬ובלחיצה על ‪ Fill Color‬ייפתח מסך בו יש לבחור את‬
‫הטווחים הרצויים של ה‪ TAG-‬וצבע המילוי של האובייקט בכל טווח‪.‬‬
‫‪ – Fill Type‬יש לבחור את ה‪ TAG-‬הרצוי‪ ,‬ובלחיצה על ‪ Fill Type‬ייפתח מסך בו יש לבחור את סוג‬
‫המילוי הרצוי לאובייקט בכל טווח‪.‬‬
‫‪ – Drum‬שימוש באנימציה מסוג ‪ Drum‬נותנת את האפשרות לבחור שאובייקט יוצג על המסך כאשר‬
‫ערכו הוא מספר מדויק או טווח של ערכים‪ ,‬כפי שמוגדר על ידי מספר בינארי )‪ 0/1‬או * אם זה לא‬
‫משנה(‪ .‬לדוגמא‪ ,‬אם נדרש שהאובייקט יוצג רק כאשר ערך ה‪ TAG‬הוא זוגי יש להכניס‬
‫‪.*****...*******0‬‬
‫ניתן למלא יותר משורה אחת בטבלה‪ .‬לדוגמא – אם כאשר ‪ TAG‬עובר מ‪ 0-20-‬הוא זז מנקודה ‪A‬‬
‫לנקודה ‪ ,B‬ובטווח של ‪ 21-50‬הוא זז מנקודה ‪ B‬לנקודה ‪ C‬יש למלא את שתי השורות הראשונות‬
‫בטבלה‪.‬‬
‫ניתן באותה צורה למלא שורות לא עוקבות בטבלה‪ .‬לדוגמא ניתן להגדיר שעצם יכול לזוז מנקודה ‪A‬‬
‫לנקודה ‪ B‬ושבאותו הזמן הוא מסתובב – לכן נמלא את השורה הראשונה בטבלה )‪ (Move1‬ואת‬
‫השורה הרביעית )‪.(Rotate‬‬
‫‪ 19‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫דוגמא‪:‬‬
‫‪ ‬‬
‫דוגמא למילוי שורות ב‪Dynamic Definition-‬‬
‫‪ 20‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫נספח ד' – שפת תכנות ‪ SFC‬‬
‫שפת תכנות ‪ SFC‬היא שפה אשר בנויה מבלוקים‪ .‬בהגעה לבלוק מסוים‪ ,‬תוכנו של הבלוק יתבצע‬
‫עד אשר התנאי ביציאה של הבלוק מתקיים‪ .‬התנאי ביציאה – הוא תנאי העצירה של הבלוק‪.‬‬
‫בבלוק הראשון בדיאגראמת ‪ INIT - SFC‬יש לבצע אתחול של כל המשתנים המקומיים‬
‫והמשתנים הגלובאליים )‪TAG‬ים(‪ .‬אם מדובר ב‪TAG‬ים דיגיטאליים‪ ,‬שימו לב כי באתחול‬
‫המשתנה ניתן לרשום גם‪ FIRST:=FALSE :‬או ‪ FIRST:=TRUE‬וגם‪ FIRST=0 :‬או‬
‫‪) 1=FIRST‬בהתאמה(‪.‬‬
‫כל בלוק בדיאגראמת ‪ SFC‬מתנהג כלולאת ‪ DO-WHILE‬שתנאי העצירה שלה הוא התנאי‬
‫מתחת לבלוק‪ TRANS0) .‬בדיאגראמת בלוקים בעמ' ‪ .(11‬כדי לעבור משלב לשלב ללא תנאי‬
‫מיוחד יש לרשום ‪ TRUE‬בתנאי‪.‬‬
‫טיפים‬
‫‪‬‬
‫כדי לבנות תנאי ‪ OR‬למעבר לשלב הבא ניתן לבנות בלוקים במקביל ע"י לחיצת לחצן‬
‫ימני בעכבר על שורת תנאי המעבר ובחירת )‪.Alternative Branch (right‬‬
‫‪‬‬
‫כדי לבנות בלוק נוסף בהמשך )בטור( יש ללחוץ לחצן ימני בעכבר על שורת תנאי המעבר‬
‫ולבחור )‪.Step Transition (After‬‬
‫‪‬‬
‫כדי למחוק ‪ Step‬יש לבחור אותו ואת התנאי העוקב לו )בעזרת לחיצה על כפתור ‪CTRL‬‬
‫בין בחירות( וללחוץ ‪.Delete‬‬
‫‪‬‬
‫ניתן להשאיר צעד ללא תוכן‪ ,‬בתנאי שבפנים יש לפחות ';'‪ .‬כל צעד שיש בו תוכן נצבע‬
‫בפינה הימנית העליונה במשולש קטן‪ .‬תוכנית שבה יש צעד שפינתו העליונה לא נצבעה –‬
‫לא תעבוד‪.‬‬
‫‪‬‬
‫אם רוצים לעבור לצעד כלשהו אחר בתוכנית שאינו ישירות אחריו )לדוגמא‪ -‬להחזיר‬
‫לצעד ‪ 2‬בתוכנית כשנמצאים בצעד ‪ (13‬יש ללחוץ לחצן ימני בעכבר על תנאי המעבר של‬
‫הצעד ולבחור באפשרות ‪ .JUMP‬הענף ייקטע ויש להזין ליד המשולש הקטן את מספר‬
‫הצעד אליו רוצים לעבור )לדוגמא ‪(STEP2‬‬
‫‪‬‬
‫כדי ליצור השהייה מסוימת‪ ,‬יש להגדיר משתנה מקומי )יש לאתחל אותו בבלוק ‪(INIT‬‬
‫ובתוך הבלוק לקדם אותו‪ .‬מחוץ לבלוק‪ ,‬תנאי המעבר יהיה שהמשתנה המקומי הגיע‬
‫לערך כלשהו‪.‬‬
‫לדוגמא‪:‬‬
‫‪ 21‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫בתוך הבלוק רשום‪i:=i+1 :‬‬
‫‪ ‬‬
‫בלוק עם משתנה מקומי‬
‫‪‬‬
‫כאשר מציינים את שמו של המשתנה המקומי בפעם הראשונה‪ ,‬ייפתח החלון הבא‪ :‬‬
‫‪ ‬‬
‫הגדרת משתנה מקומי‬
‫יש לשים לב כי ה‪ TYPE‬הוא לפי סוג המשתנה הרצוי‪ .‬אם מדובר במשתנה שהינו מונה יש לבחור‬
‫משתנה מסוג ‪.Integer‬‬
‫‪ 22‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫נספח ה' – שפת תכנות ‪ST‬‬
‫שפת התכנות ‪ ST‬היא שפה דומה מאוד לשפת ‪ .PASCAL‬אנחנו נשתמש בה בתוך הבלוקים של‬
‫דיאגראמת ‪ .SFC‬לאחר לחיצה על בלוק של ‪ SFC‬ייפתח לנו חלון לכתיבת קוד‪.‬‬
‫כדי להשתמש באחד ה‪TAG‬ים שהגדרנו בשרטוט ב‪ HMI-‬יש ללחוץ ‪ .F2‬בחלון הנפתח יש לבחור‬
‫‪ .Global Variables‬תחת הלשונית ‪ Wizcon‬יופיעו כל ה‪TAG‬ים שיוצאו מה‪ HMI-‬ל‪-‬‬
‫‪ .WizPLC‬יש לבחור את ה‪ TAG‬הרצוי ולהשתמש בו‪.‬‬
‫רצוי מאוד לבחור את ה‪TAG-‬ים מתוך רשימת ה‪ Global Variables‬ולא לכתוב את שם ה‪TAG‬‬
‫לבד כדי להימנע מטעויות של ‪ Upper/Lower Case‬וטעויות כתיב‪.‬‬
‫כללי תחביר )‪ (SYNTAX‬של שפת ‪:ST‬‬
‫‪‬‬
‫בסוף כל שורת פעולה יש להוסיף ;‬
‫‪‬‬
‫לולאת ‪ IF‬בנויה בצורה הבאה‪:‬‬
‫‪‬‬
‫לולאת ‪ FOR‬בנויה בצורה הבאה‪:‬‬
‫‪IF a<100 THEN‬‬
‫;>‪<instructions‬‬
‫;‪END_IF‬‬
‫‪FOR i:=1 TO 100 BY 1 DO‬‬
‫;>‪<instructions‬‬
‫;‪END_FOR‬‬
‫הביטוי ‪ BY 1‬אומרת שהמשתנה ‪ i‬גדל ב‪ 1-‬בכל מעבר בלולאה‪ .‬אין חובה לרשום את גודל הצעד‬
‫של המשתנה הסופר‪ .‬בהיעדרו‪ ,‬ההנחה היא כי הלולאה מקדמת את המשתנה ‪ i‬ב‪ 1-‬כל פעם‪.‬‬
‫‪ 23‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪ ‬‬
‫‪‬‬
‫לולאת ‪ WHILE‬בנויה בצורה הבאה‪:‬‬
‫‪WHILE b<100 DO‬‬
‫;>‪<instructions‬‬
‫;‪b:=b+1‬‬
‫‪END_WHILE‬‬
‫יש לזכור שבשימוש בלולאת ‪ WHILE‬יש לקדם את המשתנה לפיו נכנסים ללולאה כדי שתנאי‬
‫העצירה יתקיים‪.‬‬
‫‪ 24‬‬
‫‪ ‬‬