מה קורה אם שני מקטעי מזהה צומת זהים?
רשתות CAN-bus אינן מאפשרות לשני צמתים להיות בעלי אותו קטע מזהה באופן עקרוני, אך מה קורה אם שני מקטעי זיהוי הצומת זהים?
לפני הניסוי, עלינו להיות בעלי הבנה ברורה של המבנה של מסמכי CAN ועקרונות הבוררות.
ראשית, מבנה ההודעה CAN
תקן רשת CAN-bus הנפוץ ביותר הוא גירסת V2.0. תקן זה מחולק לחלקים A ו- B. ההבדל העיקרי שלהם הוא אורך קוד הזיהוי באזור הבוררות. ביניהם CAN2.0A (מסגרת רגילה) הוא 11 מזהה קצת, CAN2.0B (להרחיב מסגרת) הוא מזהה קצת 29. טבלה 1 להלן מציגה את מבנה ההודעה CAN:
טבלה 1 מבנה ההודעה יכול
| שם שלב | שלב אורך / סיביות | תיאור | |
| כך F | 1 | פירושו להתחיל בשלב הנתונים, ולהמציא סיבית אחת דומיננטית | |
| שלב ההתאבדות | מסגרת רגילה | 12 | מציין את העדיפות של המסגרת, להמציא על ידי 11 כתובות זיהוי 1 RTR |
| מסגרת מורחבת | 32 | מציין את העדיפות של המסגרת, להמציא על ידי 29 תעודות זהות, SRR 1 bit, IDE המורחבת RTR | |
| שלב השליטה | 6 | פירושו קוד הקבוצה וביטים שמורות מאורך הנתונים של מקטע הנתונים | |
| שלב נתונים | 0 ~ 8 | תוכן נתונים, בקרת שלב לשלוט אורך הנתונים | |
| CRC | 16 | מסגרת בדיקה transimission erro, מ SOF לשלב נתונים, את כל התוכן, למעט מילוי סיביות | |
| ACK | 2 | צומת אחר מאשר מסגרת זו להתקבל כראוי | |
| סוף מסגרת | 7 | פירושו סוף המסגרת | |
שנית, עקרון הבוררות
CAN האוטובוס מבוסס על "קו ועקרון", כפי שמוצג באיור 1. כאשר מקמ"ש פולט אותות של רמות שונות בו זמנית, רמת רצסיבי הוא תמיד מכוסה על ידי הדומיננטי ברמה. בעת שליחת ההודעה, בקר CAN יבדוק אם מצב האוטובוס זהה לזה שנשלח על ידי עצמו. אם חוסר עקביות מתרחשת במקטע מזהה, בוררות תתרחש. אם היא מתרחשת באזורים אחרים, השגיאה המתאימה תפעיל.
להלן נקודת המפתח. מה אם שני מקטעי מזהה הצומת זהים? התחלנו את הניסוי עם שני כרטיסי CAN ו CANScope אחד. כרטיס CAN מדמה את הצומת הסטנדרטי CAN כדי לשלוח ולקבל הודעות, ואת CANScope עושה את ניטור התקשורת, כפי שמוצג באיור 2.
Fig.2 ניסוי פלטפורמת בנייה
שלישית, הניסוי הראשון "קטע מזהה זהה אבל הנתונים שונה"
כרטיס CAN משמש לשליחת מסגרת CAN עם נתוני זיהוי ID ל- 01020304050607H וכרטיס CAN נוסף לשליחת מסגרת CAN עם נתוני 000H ל -02020304050607H. הנתונים ש- CANScope מקשיב מופיעים באיור 3. ניתן לראות שיש מספר גדול של שגיאות מילוי שדות נתונים.

Fig.3 שדה נתונים מילוי erro
למה זה כל כך? תחילה אנו משיגים את צורות הגל המתאימות לשני מסרי תמסורת כרטיס ה- CAN, כפי שמוצג באיור 4. מכיוון שההודעה הדו-שלבית היא מסגרת נתונים סטנדרטית וכל מסגרת מכילה 8 בתים של נתונים, צורות הגל המתאימות לשתי המסגרות של מנות בדיוק אותו הדבר בקטע ID, RTR, IDE, R0 ו- DLC. לכן, תפקידו של הבוררות אינו יעיל ושני הצמתים רואים את עצמם כבעלי עדיפות וממשיכים לשלוח נתונים.
עכשיו אנחנו מתמקדים קטע הנתונים, הנתונים הראשון בתים זהים, הם 00H; הנתונים השני בתים שונה, בהתאמה 01H, 02H. החצים באיור 5 מצביעים על כך שההיגיון של הביטים המתאימים הוא 0 ו- 1 בהתאמה. מוקדם יותר הזכרנו כי הצומת CAN יזהה אם רמת האוטובוס זהה לרמת אותו שלח בעת שליחת ההודעה. אם חוסר העקביות מתרחשת באזור שאינו בוררות, השגיאה המתאימה מופעלת, כך שאם שתי המסגרות נשלחות לאוטובוס באותו זמן שגיאות Bit חייב להתרחש. בגלל שגיאת השליחה הקטנה תגרום לצומת לשלוח 6 סיביות דומיננטיות המפרות את כלל המילוי (השגיאה הפעילה הורסת את נתוני המסגרת), מתרחשת שגיאת מילוי שדה הנתונים, כפי שמוצג ב- FIG. 3.

איור 5 סכסוכי שדות נתונים
רביעית, הניסוי שני "אותם נתונים עם אותו מזהה"
במקביל, להשתמש בשני כרטיסי CAN לשלוח מסגרות CAN אשר מזהה הוא 000H נתונים ל 01020304050607H, ו CANScope עושה ניטור התקשורת. קודם כל, אנחנו לא בודקים את האפשרות "תגובה באוטובוס" כדי להפוך את CANScope לעבודה במצב האזנה בלבד. תוצאות הניסוי מוצגות באיור 6, ותגובת המענה היא בפורמט שגוי.
איור 6 איור שגיאת פורמט תגובה
למה זה קרה? הצומת ששלח את ההודעה ישלח שני קטעים רצסיביים בקטע ACK. אם רמה דומיננטית מתקבלת במהלך החלק הראשון, המסגרת נחשבת להתקבל כראוי. בגלל שני הבוררים חושבים שהם השיגו את זכות הבוררות כאשר יש להם את אותו קטע הבוררות, הם מחכים לתגובה במגזר ACK, אבל יש רק שני צמתים ברשת. לכן, לא ניתן לקבל תגובה במקטע ACK, ומתרחשת שגיאת תגובת תגובה. במילים פשוטות, מצב זה דומה לעובדה שרק צומת אחת באוטובוס לא תוכל לשלוח נתונים. איור 7 מציג את השוואת צורת הגל כאשר אין תגובה במקטע ACK.
איור 7. תגובה ACK
אנו בודקים את תגובת האוטובוס ומתחילים את הניסוי שוב (בשלב זה יש 3 צמתים באוטובוס). בשלב זה, כפי שמוצג ב FIG. 8, נתוני האוטובוס מועבר ומתקבל בדרך כלל.
איור 8 התחל תגובה BUS
תקציר: כאשר שני צמתים שולחים מנות עם אותו מזהה ונתונים באותו זמן, מתרחשת שגיאת ריפוד שדה נתונים. כאשר שני צמתים שולחים מנות עם אותו מזהה ואותם נתונים, לא מתרחשת שגיאה אם צמתים אחרים מגיבים. צמתים אחרים הגיבו עם שגיאת תגובה. לכן, אנחנו צריכים להימנע מאותו המצב בקטע מזהה בעת עיצוב האוטובוס CAN.





