روش انتقال پیام در پروتکل CAN چیست؟ چگونه یونیتها تشخیص میدهند کدام پیام را روی خط شبکه ارسال کنند؟ کدام پیام اولویت دارد؟ آیا یونیت فرستنده از دریافت پیام مطلع میشود؟ در ادامه سلسله مطالب مرتبط به شبکه و کاربرد آن در خودرو، در این مقاله در مورد مفاهیم مرتبط با پروتکل CAN مطالبی بیان خواهد شد. این یک مقاله علمی، تخصصی است و برای دانشجویان و فارق التحصیلان کاردانی و کارشناسی مکانیک خودرو، گروه مکاترونیک و الکترونیک قابلاستفاده است بعلاوه کسانی که در یک سطح بالاتر از تعمیرات و در حوزه تیونیگ کردن و اضافهکردن تجهیزات الکترونیکی به خودرو فعال هستند نیز میتواند مفید باشد. برای بهرهمندی بهتر، پیشنهاد میشود مقالههای قبلی مرتبط با شبکه و پروتکل CAN را مطالعه کنید.
مفاهیم اولیه ارتباط نودها
باتوجهبه گسترده و پیچیده بودن مطالب تاحدامکان سعی خواهد شد بهصورت مرحلهبهمرحله مفاهیم تشریح شود تا مطالب با سهولت بیشتری دریافت شوند. به همین دلیل ارتباط بین 3 یونیت مورد بررسی قرار خواهد گرفت. شکل 1 نمای کلی اجرای ارتباط شبکه را نشان میدهد.
شکل 1- ارتباط سه کنترل یونیت از طریق خط شبکه CAN-Bus
همانطور که در این شکل نشاندادهشده است آخرین لایه در هر کنترل یونیت، به نام Transceiver (ترکیبی از دوکلمه Transfer و Reciver) است که عبارت واحد فرستنده/گیرنده ترجمه مناسبی برای آن خواهد بود. این لایه فیزیکی در هر یونیت وجود دارد و از طریق خط شبکه CAN-Bus با سایر یونیتها (یا همان نودها) در ارتباط است. اگر توجه کنید در لایه Transceiver دو خط با نامهای TX و RX وجود دارد در واقع خط TX همان خط ارسال پیام و خط RX خط دریافت پیام است. اولین نکته که در شکل 1 قابلمشاهده است، این است که پیامهای ارسالی و پیامهای دریافتی از طریق خط شبکه can-bus انتقال پیدا میکنند.
مدل ساده انتقال پیام
به شکل 2 توجه کنید.
1-تبدیل پیام به کد باینری CAN 2- تبدیل کد به ولتاژ
شکل 2 – مدل ساده انتقال پیام در شبکه CAN
همانطور که در شکل 2 نشان داده شده است به عنوان مثال یونیت A میخواهد اطلاعات مربوط به دور موتور را ارسال کند. ابتدا باید این پیام به کد باینری با استاندارد پروتکل CAN تبدیل شود سپس این پیام باید روی خط شبکه ارسال شود اما باید توجه داشت که کد باینری را نمیتوان به صورت صفر و یک ارسال کرد پس باید ان را تبدیل به چیزی کرد که قابل انتقال باشد. بنابراین این کد تبدیل به ولتاژ خواهد شد. کدی که تبدیل به ولتاژ شده است (ولتاژ وجود دارد – ولتاژ وجود ندارد) روی خط شبکه قرار میگیرد و به تمامی یونیتهایی که به ان خط شبکه وصل هستند میرسد (در این مقاله یونیت B و C) ولتاژ توسط خط RX در هر دو یونیت دریافت میشود. سپس این پیام مجدداً تبدیل به کد باینری شده در نهایت کد باینری تفسیر شده و کنترل یونت ان را تفسیر کرده و فعالیتهای متناسب با ان پیام را اجرا خواهند کرد.
اما آنچه در تا به اینجا گفته شد ساختاری بسیار ساده در نحوه ارسال پیام بود. اما هنوز حرفی اینکه چگونه پیام دریافت میشود یا اولویت ارسال چگونه است. به میان نیامده است.
ساختار یونیت در پروتکل CAN
برای اینکه بررسی دقیقتری به نحوه ارسال پیام داشته باشیم باید با ساختار یونیت در پروتکل CAN آشنا شویم. شکل 3 این ساختار را نشان میدهد.
1- کنترل یونیت 2- ماژول (CAN) 3- واحد فرستنده/گیرنده
شکل 3- ساختار نود در پروتکل CAN
بهصورت بسیار ساده هر نود در شبکه CAN را میتوان به سه بخش تقسیم کرد.
- کنترل یونیت
- ماژول CAN
- واحد Transceiver
در ادامه هر بخش بهصورت مختصر توضیح داده میشود.
واحد کنترل یونیت
این واحد اصلیترین واحد رد هر نود به شمار میرود. حتی اگر آن ECU شبکه نباشد باید دارای این واحد باشد. واحد کنترل یونیت مطابق شکل 4 از اجزا مختلف تشکیل میشود.
A- کنترل یونیت 1
1- اطلاعات دریافتی از سنسورها 2- فرامین ارسالی به عملگرها 3-خط عیب یابی
شکل 4- واحد کنترل یونیت در نود CAN
هر کنترل یونیت صرفنظر از اینکه شبکه شده است یا خیر به تعداد سنسور متصل است و اطلاعات را از آنها دریافت میکند و به تعداد عملگر هم دستور میدهد. یک خط ارتباطی برای ارسال کدهای خطا نیز برای آن در نظر گرفته میشود که معروف به K-line (و البته یک خط دیگر با نام L-Line) است. دادهها از سنسورها دریافت و در بخش حافظه موقت ذخیره میشوند. سپس بر اساس نقشه راه کنترل یونیت (مپ کنترل یونیت) تحلیل شده و دستوراتی صادر میشود این دستورات ابتدا در حافظه موقت و سپس به عملگرها ارسال خواهد شد. تمام یونیتها این اجزا را تا ابن بخش دارند. اگر یونیت بخواهد شبکه شود باید پیام بهصورت استاندارد پروتکل CAN تبدیل شود. واحد Can Area این وظیفه را بر عهده دارند؛ بنابراین در این بخش پیام فرمت استاندارد CAN را پیدا خواهد کرد و به واحد بعدی ارسال میشود.
واحد ماژول CAN
ماژول CAN فرایند انتقال داده را برای پیامهای CAN کنترل میکند. به دو بخش دریافت و ارسال تقسیم میشود. ماژول CAN از طریق صندوق پستی دریافت یا صندوق پستی ارسال به واحد کنترل متصل میشود. معمولاً در تراشه میکروکنترلر واحد کنترل یکپارچه میشود.
B- ماژول CAN
1-صندوق پستی دریافت پیامها 2- واحد دریافت اولیه و بررسی
3- صندوق ارسال پیام 4- واحد بررسی اشغال بودن خط
شکل 5- ماژول CAN
شکل 5 به صورت شماتیک ساختار و اهداف ماژول CAN را نشان میدهد. پیامی که در کنترل یونیت به صورت استاندارد CAN تبدیل کرده است وارد واحد ماژول CAN میشود. اولین بخش وارد صندوق پستی ارسال پیام (شماره3) میشود پیامها در این بخش ذخیره میشوند تا خط آزاد شود.
شکل 6- بررسی آزاد بودن خط شبکه
شکل 6 فرایند واحد بررسی اشغال بودن خط را بو صورت شماتیک نشان میدهد. تا زمانی که خط آزاد نشده، پیام باید منتظر بماند. در صورت آزاد بودن خط پیام به واحد بعدی ارسال میشود
واحد Transceiver
در واحد فرستنده/گیرنده پیام از فرمت باینری به فرمت ولتاژی تغییر حالت میدهد.
C-واحد Transceiver
1- سطح تغییر ساختار ار باینری به ولتاژ
شکل 7- واحد فرستنده/گیرنده
بعد از اینکه پیام تبدیل به ولتاژ شد آماده ارسال روی خط شبکه خواهد بود. پیام روی خط ارسال میشود. سایر نودها این پیام را دریافت میکنند. شکل 8 این حالت را نشان میدهد
شکل 8- انتقال پیام در خط شبکه
بر اساس شکل 7 پیام دمای مایع خنک کننده موتور از ECM موتور روی خط شبکه میرود. از انجا توسط نود ABS و نود پشت آمپر دریافت میشود. در هر دو نود از بخش فرستنده/گیرنده عبور کرده و تبدیل به کد باینری میشود. در واحد بررسی در هر دو نود کد باینری پیام را بررسی میکنند . (شکل 9)
شکل 9- بررسی پیام در واحد فرستنده/گیرنده
در هنگام بررسی کد پیام، مشخصات پیام کنترل میشود و چک میشود آیا اطلاعات این پیام به درد یونیت مربوطه میخورد یا نه. بهعنوانمثال در شکل 8 اطلاعات دمای مایع خنک کننده موتور برای نود ABS مهم نیست بنابراین پس از دریافت و بررسی ان، پیام را در همین مرحله داخل یونیت حذف میکند. اما اطلاعات برای صفحه نشان دهندهها اهمیت دارد بنابراین وارد ورحله بعدی بعنی صندوق دریافت پیامها میشود.
پس از اینکه پیام از صندوق دریافت پیام وارد کنترل یونیت شد. بر اساس نقشه عملکرد صفحه نشاندهنده، مورد بررسی قرار خواهد گرفت و متناسب با آن دستور لازم برای نشاندهنده آمپر آب ارسال خواهد شد. همزمان در بخش بازخورد پیام اصلی (که توسط نود ECM ارسال شده بود) تغییراتی ایجاد میکند و آن پیام را آماده ارسال مجدد روی خط شبکه میکند. مجدداً تمامی فرایند اشاره شده انجام میشود و در نهایت نود ECM پیام تغییریافته خود را مجدداً دریافت میکند. چون صادرکننده پیام خود ECM بوده با بررسی بخش بازخورد متوجه میشود، نود پشت آمپر پیام را دریافت و اجرا کرده است. در صورت عدم دریافت بازخورد و طی پروسه خاص تعریف شده در پروتکل CAN کد خطای شبکه ایجاد خواهد شد. اگرچه این کد خطا ممکن است سبب روشنشدن چراغ چک نشود؛ اما در حافظه نود مربوطه خواهد ماند.
آنچه در این مقاله اشاره شد شیوه انتقال پیام در پروتکل CAN بود در مقالههای بعدی مفاهیم بیشتری در مورد پروتکل CAN و شبکه مالتی پلکس در خودروها بیان خواهد شد.
نویسنده:مهندس بهروز خطیبی