Kline - دیاگ و دیباگ خودرو

blog
۱۴۰۳-۰۹-۱۴
5 دقیقه

برای ارتباط برقرارکردن با خودرو پروتکل‌های مختلفی توسعه یافته که در مطالب قبلی سیسوگ در مورد آن‌ها می‌توانید اطلاعات کسب کنید؛ اما در این پست تنها در مورد کار با یکی از این پروتکل‌ها صحبت می‌کنیم و تاحدامکان از بیان مقدمات خودداری می‌شود. در این پروژه از ELM-327 و آی‌سی MC33290 استفاده کردیم که در ادامه با استفاده از آنها در مورد آنچه لازم است بدانید شرح داده می‌شود؛ اما قبل از آن لازم است مطالب تکمیلی درمورد ECU خدمت شما عزیزان عرض کنم.

ابتدا لازم است که بدانید امروزه تمام وظایف کنترل و مدیریت خودرو به عهده ECU نیست؛ بلکه قسمت‌های مختلف خودرو توسط ماژول‌های کنترلی دیگری که در کنار ECU قرار می‌گیرند کنترل می‌شوند. برای ارتباط تمام این ماژول‌ها با هم از جانمایی (توپولوژی) ستاره‌ای بجای دایره‌ای (رینگ) استفاده می‌شود. دانستن این امر از آنجا برای ما مهم است هر قسمت خودرو آدرس مخصوص به خود را دارد که باید برای دسترسی به اطلاعات آن قسمت از آن مطلع باشیم.

موضوع بعدی نحوه برقراری ارتباط با ECU است که دو بخش سخت‌افزاری و نرم‌افزاری دارد. در بخش سخت‌افزاری شما می‌توانید با استفاده از دو ترانزیستور یا آی‎سی K-Line ارتباط را برقرار کنید که به‌وسیله اتصال آن‌ها به ECU با کانکتور استاندارد که در زیر مشاهده می‌کنید صورت می‌گیرد.

کانکتور های استاندارد ECU

کانکتور های استاندارد ECU

✅نکته

نکته‌ای که در مورد این کانکتورها وجود دارد شیار بین دو ردیف پین است که برای جلوگیری از ایجاد خطر برای دستگاه یا خودرو ایجاد شده است. این شیار برای خودروهای سنگین با ولتاژ ۲۴ ولت به‌صورت منقطع و برای خودروهای سواری ۱۲ ولت به‌صورت کامل است. چنانچه بخواهید از آی‌سی MC33290 استفاده کنید مدار زیر پیشنهاد می‌شود.

Kline - دیاگ و دیباگ خودرودقت کنید که پایه EN باید به ولتاژ ۵ ولت متصل شود تا آی‌سی فعال شود. همین‌طور شما می‌توانید از ترانزیستور برای برقراری ارتباط استفاده کنید؛ به این صورت که لاین ارتباطی همیشه ۱۲ ولت است و هرگاه پیام ارسال کردید تغییر می‌کند. در دستگاه دیباگر ELM-327 هم از روش ترانزیستوری استفاده شده است.

برای مقایسه ورودی و خروجی آی‌سی در تصویر زیر سیگنال خروجی آی‌سی MC33290 (زردرنگ) را در مقایسه با سیگنال UART (سبزرنگ) در بادریت ۳۰۰ مشاهده می‌کنید.

مقایسه سیگنال خروجی آی‌سی MC33290 (زردرنگ) با سیگنال UART (سبزرنگ) در بادریت ۳۰۰

مقایسه سیگنال خروجی آی‌سی MC33290 (زردرنگ) با سیگنال UART (سبزرنگ) در بادریت ۳۰۰

همان‌طور که مشاهده می‌کنید سیگنال خروجی کاملاً صاف نیست که این زاویه با وجود خازن در خروجی بیشتر هم می‌شود؛ اما مهم‌تر از وجود یا عدم وجود خازن سرعت انتقال داده است که تأثیر زیادی روی افزایش زاویه این سیگنال دارد و به همین دلیل از سرعت کم برای نمایش سیگنال استفاده شده است. البته این سیگنال حتی با وجود صاف نبودن برای ECU در سرعت ۱۰۴۰۰ قابل خواندن است و ازاین‌جهت مشکلی وجود ندارد.

مسئله بعدی نحوه ارسال پیام به ECU است. برای ارسال پیام ابتدا باید به مدت ۲۵ میلی‌ثانیه خروجی را صفر و در ۲۵ میلی‌ثانیه بعد آن را یک کنید و بلافاصله پیام خود را ارسال کنید. پیامی که برای اولین‌بار ارسال می‌کنید باید به این شکل باشد (0xC1 ,0x33 ,0xF1 ,0x81 ,0x66). به‌عنوان نمونه در تصویر پایین شروع ارتباط ELM 327 را مشاهده می‌کنید.

شروع ارتباط ELM 327

شروع ارتباط ELM 327

همان‌طور که مشاهد می‌کنید بین هر بایت از پیام، ۵ میلی‌ثانیه اختلاف وجود دارد که الزامی نیست و ECU می‌تواند پیام شما را بدون وجود اختلاف زمانی هم بخواند. در اینجا لازم است به این نکته اشاره کنم که ECU ای که تحت تست بود از قابلیت شروع کند پشتیبانی نمی‌کرد لذا شاید نتوان گفت تمام ECUها دارای این قابلیت هستند. قسمت سخت‌افزار که تا اینجا با آن آشنا شدید لایه فیزیکی پروتکل است. در تصویر زیر می‌توانید نمایش پروتکل ارتباطی با استفاده از مدل هفت‌لایه را مشاهده کنید.

نمایش پروتکل ارتباطی با استفاده از مدل هفت‌لایه

نمایش پروتکل ارتباطی با استفاده از مدل هفت‌لایه

برای شروع قسمت نرم‌افزاری لازم به ذکر است که در اینجا ما از پروتکلISO 14230-4 KWP استفاده می‌کنیم. پکت این پروتکل به شکل زیر است:

CRC

پیام

پیام

آدرس فرستنده

آدرس گیرنده

هدر

هدر این پکت به‌صورت زیر تعریف می‌شود.

هدر پکت پروتکل ISO 14230-4 KWPآدرس دیباگر به‌صورت هگز F1 و ثابت است؛ اما آدرس گیرنده متفاوت خواهد بود. برای ایجاد پیام صحیح  باید از قبل سؤال و آدرس درست را بدانید وگرنه پاسخی دریافت نخواهید کرد. مثلاً درخواست و پاسخ خواندن اطلاعات سنسور دمای موتور را در جدول زیر مشاهده می‌کنید.

پیام ارسالی

0xC2 0x33 0xF1 0x01 0x05 0xEC

پیام دریافتی

 0x83 0xF1 0x11 0x41 0x05 0x6F 0x3A

71 درجه سانتی گراد

6F

هدر این پیام به این صورت تحلیل می‌شود که نشان‌دهنده وجود سه بایت دیتا  به‌عنوان پیام است.

1

1

0

0

0

0

0

1

پیام ما به شکل زیر است:

0x41 0x05 0x6F

که بایت اول نشان‌دهنده پاسخ ECU به پیام ۰۵ ۰۱ و بایت آخر دمای سنسور است که ۷۱ درجه را نشان می‌دهد که با کسرکردن عدد ۴۰ از آن به دست می‌آید. دقت کنید که بیشتر اطلاعاتی که ECU برای شما ارسال می‌کند نیاز به تفسیر دارد و به‌صورت خام قابل‌استفاده نیست.

در آخر برای تحلیل CRC نیاز است که تمام بایت‌ها را با هم جمع بزنیم و فقط یک بایت از آن را نگهداریم. به‌عنوان‌مثال در پیام بالا داریم:

0X83+0XF1+0X11+0X41+0X05+0X6F=0X23A

که مقدار 0X3A برابر با CRC محاسبه شده است.

✅نکته

هربار نیاز به انجام راه‌اندازی مجدد ندارید مگر اینکه زمان زیادی (مثلاً شش ثانیه) پیامی با ECU ردوبدل نکرده باشید.

اولین مرجع متن باز ECU در ایران

Kline - دیاگ و دیباگ خودرو

امیدوارم از این مطلب استفاده کرده باشید.

با تشکر

اطلاعات
3
0
لینک و اشتراک
مقالات مرتبط
profile

smem

متخصص الکترونیک

همیشه درحال آموزش، عاشق الکترونیک و برنامه نویسی ^_^

مقالات بیشتر
slide

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند. فروش در پالت
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد. جستجو در آیسی
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند. برو به فروشگاه سیسوگ
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند. پرسش در سیسوگ فرم
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
خانواده سیسوگ

پالت | بازار خرید و فروش قطعات الکترونیک

قطعات اضافه و بدون استفاده همیشه یکی از سرباره‌‌های شرکتها و طراحان حوزه برق و الکترونیک بوده و هست. پالت سامانه‌ای است که بصورت تخصصی اجازه خرید و فروش قطعات مازاد الکترونیک را فراهم می‌کند.
family

آیسی | موتور جستجوی قطعات الکترونیک

سامانه آی سی سیسوگ (Isee) قابلیتی جدید و کاربردی از سیسوگ است. در این سامانه سعی شده است که جستجو، انتخاب و خرید مناسب تر قطعات برای کاربران تسهیل شود. وقتی شما در این سامانه، قطعه الکترونیکی را جستجو می‌کنید؛ آی سی به سرعت نتایج جستجوی شما در اکثر فروشگاه‌های آنلاین در حوزه قطعات الکترونیک را نمایش می‌دهد.
family

فروشگاه سیسوگ

فروشگاه سیسوگ مجموعه ای متمرکز بر تکنولوژی های مبتنی بر IOT و ماژول های M2M نظیر GSM، GPS، LTE، NB-IOT، WiFi، BT و ... جایی که با تعامل فنی و سازنده، بهترین راهکارها انتخاب می شوند.
family

سیسوگ فروم | محلی برای پاسخ پرسش‌های شما

دغدغه همیشگی فعالان تخصصی هر حوزه وجود بستری برای گفتگو و پرسش و پاسخ است. سیسوگ فروم یک انجمن آنلاین است که بصورت تخصصی امکان بحث، گفتگو و پرسش و پاسخ در حوزه الکترونیک را فراهم می‌کند.
family

دیدگاه ها

ابوالفضل اکبرزاده گفت :
۱۴۰۳-۰۹-۱۴ ۲۱:۰۳

با سلام خیلی ممنون از مطالب مفیدتون و زحمت‌های ارزشمندتون بنده میخوام با استفاده از ماژول CAN to SPI مبتنی بر MCP2515 که لینکشو در ادامه میذارم از طریق ESP32 ارتباط بگیرم، خب مسئله بنده اینجاست که چه اطلاعاتی رو باید از فایل هایی که در ecu.sisoog.com برای خودروی پراید (https://ecu.sisoog.com/images/3/3f/SAI_PRI_VAL_S2000.json) قرارداده شده رو به ecu ارسال کنم تا جواب برگرده چون راهنمایی در این خصوص قرار داده نشده یا من ندیدم، مثلا برای دریافت دور موتور باید "21 81" به صورت 0x21 0x81 ارسال بشه؟ و header هم به صورت 0x61 0x81؟ ممنون میشم در این خصوص بنده رو راهنمایی کنید، با تشکر.لینک ماژول CAN به SPI: https://eshop.eca.ir/%D9%85%D8%A7%DA%98%D9%88%D9%84-%D9%85%D8%A8%D8%AF%D9%84-%D9%88-%D9%88%D8%A7%D8%B3%D8%B7/17650-%D9%85%D8%A7%DA%98%D9%88%D9%84-%D9%85%D8%A8%D8%AF%D9%84-can-%D8%A8%D9%87-spi-%D8%A8%D8%A7-%D8%AA%D8%B1%D8%A7%D8%B4%D9%87-mcp2515.html

smem گفت :
۱۴۰۳-۰۹-۱۷ ۱۰:۴۲

راستی فراموش کردم بگم که این آموزش برپایه UART هست و K-Line

smem گفت :
۱۴۰۳-۰۹-۱۷ ۰۹:۳۱

درود بر شما جناب اکبرزاده عزیز. ممنونم بابت اشتراک گذاری دیدگاهتون. برای ارتباط با ECU ابتدا باید خروجی را ۲۵ میلی‌ثانیه صفر و ۲۵ میلی‌ثانیه یک کنید و سپس پیام 0xC1 ,0x33 ,0xF1 ,0x81 ,0x66 را ارسال کنید و پس از دریافت پاسخ از ECU باید قسمت cmdtext را ارسال کنید. در اینجا به این صورت است 0xC2 0x33 0xF1 0x21 0x81 0x88 من تستی روی پراید انجام ندادم ولی اگر اصول را رعایت کنید باید کار کند. چنانچه کار نکرد همینجا یا در ask.sisoog سوال خودتون رو بپرسید. :) ضمنا دیتای شما پس از چیزی که در cheader میبینید شروع میشود که در اینجا "RBB[61 81]" است و CRC به این صورت محاسبه میشود c2+33+f1+21+81. چنانچه موفق شدید خوشحال میشوم نتایج را با من هم اشتراک بگذارید. موفق باشید :)

become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله
become a writer

نویسنده شو !

سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.

ارسال مقاله