תפריט סגור

תכנון חשמלי של רשת can-bus בכלי רכב

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

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

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

טופולוגיה בסיסית של רשת CAN-BUS פשוטה בהגדרתה נראית כך:

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

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

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

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

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

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

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

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

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

ניתן לשים לב בסרטוט שלי שכל יחידת מחשוב שמחוברת לרשת שלי, למעשה יוצרת גם היא זוג חוטים שמסתיימים ללא טרמינציה. מה שנקרא stub (זנב? גדם?).
כמובן שזה פוגע באות באותה מידה, לכן בהגדרה אנו נדאג שהחוטים הללו יהיו קצרים מאוד. כמה קצרים? שוב קצרים מאוד ביחס לאורך הגל שעובר עליהם.
בפועל בחלק מיחידות המיחשוב ברכב קווי הCAN-BUS נכנסים פנימה דרך פינים יעודים בקונקטור עד הכרטיס האלקטרוני, שם מתבצע החיבור הנוסף לקו,
וקווי התקשורת יוצאים החוצה דרך זוג פינים נוסף בקונקטור וממשיכים הלאה. בצורה כזו:

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

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

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

שווה לציין גם שככל שעולים עוד ועוד בתדרים, העסק מתחיל להסתבך יותר ויותר מבחינה פיסיקלית, ואפילו כיפוף בחוט יכול לגרום להחזרות.
אבל זה דיון שלא רלוונטי כל כך לcan bus אלא יותר לאלו שעוסקים בתקשורת בקצבים של מאות מגה ביט וגיגה ביט. can-bus
מוגדר לעבוד בקצבים של עד 1מגה ביט, ולרוב ברכבים היום לא עובדים מעל 500 קילוביט לשניה.
עוד שווה לציין שישנם סוגים שונים של טרמינציות בהתאם לאופי הקו, תחום התדרים ולטופולוגית החיבור, נגדי טרמיניציה טוריים, טרמינציה קיבולית, השראית ושילובים שונים שלהן.
אני לא הולך לפרט כאן את כל הסוגים, נזכיר רק שישנה גם טרמינציית AC, מטרתה היא פשוט מאוד להוריד את מרכיב הDC של האות.
מרכיב הDC הוא בעצם אות עם תדר 0 לכן ניתן לראות בזה סוג של "מסנן מעביר גבוהים".
בגרף העליון סירטטי את האות הוא עם מרכיב DC, ובתחתון ללא מרכיב DC

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

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

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

 

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

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

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

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

לרוב שקע הדיאגנוסטיקה (DLC) זוכה לקבל סנף משלו במרכזיה, ולכן בסורק תקלות שאנו מחברים לשקע דיאגנוסטיקה חייב להיות נגד טרמינציה בהתאם.
ישנם יצרנים שחוסכים (או מתחכמים), ושמים את שקע הדיאגנוסטיקה על סנף משותף עם יחידות מחשוב נוספות ואז בעצם אותו סנף כבר מכיל את נגדי הטרמינציה הדרושים,
ואסור שהסורק שלנו יכיל נגד נוסף.
איך נדע מה קורה ברכב העומד לפינינו? פשוט מאוד, ניקח רב מודד במצב מדידת התנגדות ונמדוד את ההתנגדות בין שני קווי הcan-bus.
אם יצא לנו 120 אוהם אז יש נגד טרמינציה בודד, ואנחנו צריכים נגד נוסף בציוד דיאגנוסטיקה שלנו.
אם יצא 60 אוהם, זה אומר שיש שני נגדים ואנחנו נמצאים באותו סנף עם יחידות מיחשוב נוספות.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *