logo

פרוטוקול CAN (Controller Area Network).

CAN מייצג Controller Area Network נוהל. זהו פרוטוקול שפותח על ידי רוברט בוש בסביבות 1986. פרוטוקול CAN הוא תקן שנועד לאפשר למיקרו-בקר ולהתקנים אחרים לתקשר זה עם זה ללא מחשב מארח. התכונה המייחדת את פרוטוקול ה-CAN בין שאר פרוטוקולי התקשורת היא סוג השידור של האוטובוס. כאן, שידור אומר שהמידע מועבר לכל הצמתים. הצומת יכול להיות חיישן, מיקרו-בקר או שער המאפשר למחשב לתקשר דרך הרשת דרך כבל ה-USB או יציאת ה-ethernet. ה-CAN הוא פרוטוקול מבוסס הודעה, כלומר ההודעה נושאת את מזהה ההודעה, ועל סמך המזהה, נקבעת עדיפות. אין צורך בזיהוי צמתים ברשת CAN, ולכן קל מאוד להכניס או למחוק אותו מהרשת. זהו פרוטוקול תקשורת סדרתי חצי דופלקס וסוג אסינכרוני. ה-CAN הוא פרוטוקול תקשורת דו-חוטי שכן רשת ה-CAN מחוברת דרך האוטובוס הדו-חוטי. החוטים הם זוג מעוות בעלי עכבה של 120Ω מאפיינים מחוברים בכל קצה. בתחילה, הוא תוכנן בעיקר לתקשורת בתוך כלי הרכב, אך כיום הוא משמש בהקשרים רבים אחרים. כמו UDS ו-KWP 2000, ניתן להשתמש גם לאבחון המשולב.

למה CAN?

הצורך בפרוטוקול תקשורת סטנדרטי מרכזי הגיע בגלל הגידול במספר המכשירים האלקטרוניים. לדוגמה, יכולים להיות יותר מ-7 TCU עבור תת-מערכות שונות כגון לוח מחוונים, בקרת תיבת הילוכים, יחידת בקרת מנוע ועוד רבים נוספים ברכב מודרני. אם כל הצמתים מחוברים אחד לאחד, אז מהירות התקשורת תהיה גבוהה מאוד, אבל המורכבות והעלות של החוטים יהיו גבוהות מאוד. בדוגמה שלעיל, לוח מחוונים בודד דורש 8 מחברים, אז כדי להתגבר על בעיה זו, ה-CAN הוצג כפתרון מרכזי הדורש שני חוטים, כלומר, CAN גבוה ו-CAN נמוך. הפתרון של שימוש בפרוטוקול CAN הוא יעיל למדי בשל תעדוף ההודעות שלו, וגמיש שכן ניתן להכניס או להסיר צומת מבלי להשפיע על הרשת.

יישומים של פרוטוקול CAN

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

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

ארכיטקטורת שכבות CAN

כפי שאנו יודעים כי דגם OSI מחלק את מערכת התקשורת ל-7 שכבות שונות. אבל ארכיטקטורת השכבות של CAN מורכבת משתי שכבות, כלומר,

בואו נבין את שני השכבות.

מה זה מחסנית ב-java
  • שכבת קישור נתונים: שכבה זו אחראית להעברת נתונים מצומת לצומת. זה מאפשר לך ליצור ולסיים את החיבור. היא גם אחראית על איתור ותיקון השגיאות שעלולות להתרחש בשכבה הפיזית. שכבת קישור נתונים מחולקת לשתי שכבות משנה:
      מק:MAC ראשי תיבות של Media Access Control. הוא מגדיר כיצד מכשירים ברשת מקבלים גישה למדיום. הוא מספק אנקפסולציה ו-Decapsulation של נתונים, זיהוי שגיאות ואיתות.
  • LLC:LLC ראשי תיבות של בקרת קישור לוגית. הוא אחראי על סינון קבלת מסגרות, הודעת עומס יתר וניהול שחזור.
  • השכבה הפיזית: השכבה הפיזית אחראית להעברת נתונים גולמיים. הוא מגדיר את המפרט של הפרמטרים כגון רמת מתח, תזמון, קצבי נתונים ומחבר.

מפרטי CAN מגדירים את פרוטוקול ה-CAN ואת השכבה הפיזית של ה-CAN, המוגדרים בתקן CAN ISO 11898. ISO 11898 כולל שלושה חלקים:

מערך java
  • ISO 11898-1: חלק זה מכיל את המפרט של שכבת קישור הנתונים וקישור האות הפיזי.
  • ISO 11898-2: חלק זה מגיע תחת שכבת CAN פיזית ל-CAN במהירות גבוהה. ה-CAN המהיר מאפשר קצב נתונים של עד 1 Mbps בשימוש ברכבת הכוח ובאזור הטעינה של הרכב.
  • ISO 11898-3: חלק זה מגיע גם תחת שכבת CAN פיזית עבור CAN במהירות נמוכה. הוא מאפשר קצב נתונים של עד 125 kbps, ו-CAN במהירות נמוכה משמש כאשר מהירות התקשורת אינה גורם קריטי.

CiA DS-102: הצורה המלאה של CiA היא CAN באוטומציה, המגדירה את המפרט של מחבר ה-CAN.

בכל הנוגע ליישום, בקר ה-CAN והמשדר CAN מיושמים בתוכנה בעזרת פונקציות האפליקציה, מערכת ההפעלה וניהול הרשת.

מסגור CAN

בואו נבין את המבנה של מסגרת ה-CAN.

פרוטוקול CAN
    כך F:SOF מייצג את התחלת המסגרת, מה שמציין שהמסגרת החדשה הוכנסה לרשת. זה של 1 ביט.מזהה:פורמט נתונים סטנדרטי המוגדר תחת מפרט CAN 2.0 A משתמש במזהה הודעה של 11 סיביות לבוררות. בעיקרון, מזהה הודעה זה קובע את העדיפות של מסגרת הנתונים.RTR:RTR קיצור של Remote Transmission Request, המגדיר את סוג המסגרת, בין אם זו מסגרת נתונים או מסגרת מרוחקת. זה של 1-bit.שדה בקרה:יש לו פונקציות מוגדרות על ידי המשתמש.
      ללכת:סיבית IDE בשדה בקרה מייצגת הרחבת מזהה. סיבית IDE דומיננטית מגדירה את המזהה הסטנדרטי של 11 סיביות, ואילו סיבית IDE רצסיבית מגדירה את המזהה המורחב של 29 סיביות.DLC:DLC ראשי תיבות של Data Length Code, המגדיר את אורך הנתונים בשדה נתונים. זה של 4 ביטים.שדה נתונים:שדה הנתונים יכול להכיל עד 8 בתים.
    שדה CRC:מסגרת הנתונים מכילה גם שדה בדיקת יתירות מחזורית של 15 סיביות, המשמש לזיהוי השחיתות אם היא מתרחשת במהלך זמן השידור. השולח יחשב את ה-CRC לפני שליחת מסגרת הנתונים, והמקלט גם מחשב את ה-CRC ולאחר מכן ישווה את ה-CRC המחושב ל-CRC שהתקבל מהשולח. אם ה-CRC אינו תואם, המקלט יפיק את השגיאה.שדה ACK:זוהי הודאה של הכונס. בפרוטוקולים אחרים, חבילה נפרדת לאישור נשלחת לאחר קבלת כל המנות, אך במקרה של פרוטוקול CAN, לא נשלחת חבילה נפרדת לאישור.EOF:EOF מייצג סוף מסגרת. הוא מכיל 7 ביטים רצסיביים רצופים ידועים סוף מסגרת.

כעת נראה כיצד מועברים נתונים דרך רשת ה-CAN.

פרוטוקול CAN

רשת CAN מורכבת ממספר צמתי CAN. במקרה שלעיל, שקלנו שלושה צמתים CAN, ושמנו אותם כצומת A, צומת B וצומת C. צומת CAN מורכב משלושה אלמנטים המפורטים להלן:

  • מנחה
    מארח הוא מיקרו-בקר או מעבד המריץ יישום כלשהו כדי לבצע עבודה ספציפית. מארח מחליט מה משמעות ההודעה המתקבלת ואיזו הודעה הוא צריך לשלוח לאחר מכן.
  • בקר CAN
    בקר CAN עוסק בפונקציות התקשורת המתוארות בפרוטוקול CAN. זה גם מפעיל את השידור, או את הקבלה של הודעות ה-CAN.
  • משדר CAN
    משדר CAN אחראי לשידור או לקליטת הנתונים באפיק ה-CAN. הוא ממיר את אות הנתונים לזרם הנתונים שנאסף מאפיק ה-CAN שבקר ה-CAN יכול להבין.

בתרשים לעיל, כבל זוג מעוות לא מסוכך משמש לשידור או לקליטת הנתונים. הוא ידוע גם כאוטובוס CAN, ואוטובוס CAN מורכב משני קווים, כלומר, קו נמוך CAN וקו CAN גבוה, המוכרים גם כ-CANH ו-CANL, בהתאמה. השידור מתרחש עקב המתח הדיפרנציאלי המופעל על קווים אלה. ה-CAN משתמש בכבל זוג מעוות ובמתח דיפרנציאלי בגלל הסביבה שלו. לדוגמה, במכונית, מנוע, מערכת הצתה והתקנים רבים אחרים עלולים לגרום לאובדן נתונים ולהשחתת נתונים עקב רעש. הפיתול של שני הקווים גם מפחית את השדה המגנטי. האוטובוס מסתיים עם התנגדות 120Ω בכל קצה.

מאפייני CAN

פרוטוקול CAN

בעזרת מתח דיפרנציאלי, נקבע כיצד 0 ו-1 מועברים דרך אפיק ה-CAN. האיור שלמעלה הוא גרף המתח המראה את רמת המתח של CAN נמוך ו-CAN גבוה. בטרמינולוגיה של CAN, אומרים שהלוגיקה 1 היא רצסיבית בעוד שהלוגיקה 0 היא דומיננטית. כאשר קו CAN גבוה וקו נמוך CAN מופעלים עם 2.5 וולט, אז המתח ההפרש בפועל יהיה אפס וולט. וולט אפס באפיק CAN נקרא על ידי משדר CAN כרצסיבי או לוגי 1. וולט אפס באפיק CAN הוא מצב אידיאלי של האוטובוס. כאשר קו CAN גבוה נמשך עד 3.5 וולט וקו CAN נמוך נמשך עד 1.5 וולט, אז המתח ההפרש בפועל של האוטובוס יהיה 2 וולט. הוא מטופל כ-bit דומיננטי או לוגי 0 על ידי משדר CAN. אם מצב האוטובוס יגיע לדומיננטי או לוגי 0 אז זה יהיה בלתי אפשרי לעבור למצב הרצסיבי על ידי כל צומת אחר.

mysql הצג את כל המשתמשים

נקודות מפתח שנלמדו ממאפייני ה-CAN

  • לוגיקה 1 היא מצב רצסיבי. כדי לשדר 1 באפיק CAN, יש להחיל גם CAN גבוה וגם CAN נמוך עם 2.5V.
  • לוגיקה 0 היא מצב דומיננטי. כדי לשדר 0 באפיק CAN, יש להחיל CAN גבוה ב-3.5V ו-CAN נמוך צריך להיות מיושם ב-1.5V.
  • המצב האידיאלי של האוטובוס הוא רצסיבי.
  • אם הצומת מגיע למצב הדומיננטי, הוא לא יכול לחזור למצב הרצסיבי על ידי שום צומת אחר.

לוגיקה של CAN bus

פרוטוקול CAN
פרוטוקול CAN

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

עקרון תקשורת CAN

כידוע, ההודעה נשלחת על סמך העדיפות שנקבעה בשדה הבוררות. עבור המסגרת הסטנדרטית, מזהה ההודעה הוא 11 סיביות, ואילו עבור המסגרת המורחבת, מזהה ההודעה הוא 29 סיביות. זה מאפשר למעצב המערכת לעצב את מזהה ההודעה בתכנון עצמו. ככל שמזהה ההודעה קטן יותר, כך תהיה עדיפות ההודעה גבוהה יותר.

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

פרוטוקול CAN (Controller Area Network).

השולח רוצה לשלוח את ההודעה ומחכה שאוטובוס ה-CAN יהפוך לבטל. אם אפיק ה-CAN אינו פעיל, השולח שולח את ה-SOF או את ה-bit הדומיננטי עבור הגישה לאוטובוס. לאחר מכן, הוא שולח את סיביות מזהה ההודעה בסיבית המשמעותית ביותר. אם הצומת מזהה את הסיביות הדומיננטיות באפיק בזמן שהוא שידר את הסיביות הרצסיביות, זה אומר שהצומת איבד את הבוררות ומפסיק לשדר ביטים נוספים. השולח ימתין וישלח שוב את ההודעה ברגע שהאוטובוס יהיה פנוי.

דוגמה לבוררות CAN

פרוטוקול CAN

אם ניקח בחשבון שלושה צמתים, כלומר, צומת 1, צומת 2 וצומת 3, מזהי ההודעות של צמתים אלה הם 0x7F3, 0x6B3 ו-0x6D9, בהתאמה.

javascript onclick
פרוטוקול CAN

השידור של כל שלושת הצמתים עם הביט המשמעותי ביותר מוצג בתרשים לעיל.

אחד עשרה'סיביות: מכיוון שכל שלושת הסיביות של הצמתים רצסיביות, כך גם סיביות האוטובוס יישארו רצסיביות.

10ה'סיביות: לכל הצמתים יש סיביות 10 כרצסיבית, כך שהאוטובוס יישאר גם רצסיבי.

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

8ה'סיביות: גם צומת 2 וגם צומת 3 שולחים סיביות רצסיביות, כך שמצב האוטובוס יישאר רצסיבי.

7ה'ביט: הצומת 2 שולח ביט דומיננטי בעוד שצומת 3 שלח סיביות רצסיבית, כך שמצב האוטובוס יישאר דומיננטי. במקרה זה, הצומת 3 איבד את הבוררות, ולכן הוא מפסיק לשלוח את ההודעה בעוד הצומת 2 זכה בבוררות פירושו שהוא ימשיך להחזיק את האוטובוס עד קבלת ההודעה.

כיצד להסיר את התו הראשון באקסל