برای شروع کند، بهتر است تنظیمات پایه TX را به GPIO تغییر دهیم زیرا ممکن است که UART قادر به کار کردن با سرعت 5 نباشد بنابراین بهتر است. از پایه GPIO برای ارسال استفاده کرد (شکل 11). برای شروع کردن ارتباط، ابتدا باید یک آدرس مثلا 0x33 با سرعت 5 bps ارسال شود. واحد مربوطه بعد از تایید آدرس سه بایت را مثلا 0x55 0xEF 0x8F با سرعت 10.4 kbps ارسال می کند بایت اول همیشه باید 0x55 باشد. دو بایت بعدی بایتهای کلیدی (KB1 و KB2) نامیده میشوند.
اگر هر دو بایت 08 08 یا 94 94 باشند پروتکل ISO-9141 است در غیر این صورت KWP2000 خواهد بود. بعد از دریافت این سه بایت، باید معکوس بایت KB2 (حدودا بین 25 تا 50 میلی ثانیه بعد از دریافت) به واحد مربوطه ارسال شود. را حدودا بین 50 تا 300 میلی ثانیه بعد ارسال میکند. در این مثال (معکوس 0x8F) برابر با 0x70 است. در نهایت واحد مربوطه یک بایت را معکوس آدرس آن واحد است را ارسال می کند که از آن برای درخواست ها استفاده میشود. در اینجا شروع ارتباط با موفقیت پایان پذیرفته و واحد مربوطه آماده پاسخ به درخواستها است. به طور کلی این مراحل حدودا 2 ثانیه طول خواهد کشید.
در جدول 11 همه انواع درخواستها در KLine لیست شده است. هر کدام از درخواستها در KLine توسط یک بایت مشخص میشوند.
جدول 11- همه انواع درخواستها در KLine.
اسم درخواست | کد درخواست hex | اسم درخواست | کد درخواست hex | |
شروع سشن عیب یابی | 10 | کنترل عمگرها به وسیله شناسه عمومی | 2F | |
ریست ECU | 11 | کنترل عمگرها به وسیله شناسه محلی | 30 | |
خواندن دادههای فریزشده | 12 | شروع روتین به وسیله شناسه محلی | 31 | |
خواندن کدهای خطا | 13 | پایان روتین به وسیله شناسه محلی | 32 | |
پاک کردن خطاها | 14 | درخواست نتیجه روتین به وسیله شناسه محلی | 33 | |
خواندن وضعیت کدهای خطا | 17 | درخواست دانلود | 34 | |
خواندن کدهای خطا با در نظر گرفتن نوع خطا مد نظر | 18 | درخواست آپلود | 35 | |
خواندن اطلاعات ECU | 1A | انتقال داده | 36 | |
پایان سشن عیب یابی | 20 | درخواست پایان انتقال | 37 | |
خواندن داده به وسیله شناسه محلی | 21 | شروع روتین به وسیله آدرس | 38 | |
خواندن داده به وسیله شناسه عمومی | 22 | پایان روتین به وسیله آدرس | 39 | |
خواندن دادههای حافظه با دادن آدرس | 23 | درخواست نتیجه روتین به وسیله آدرس | 3A | |
تنظیم نرخ داده | 26 | نوشتن داده به وسیله شناسه محلی | 3B | |
مجوز دسترسی | 27 | نوشتن داده به وسیله آدرس | 3D | |
تعریف شناسه محلی به صورت پویا | 2C | حضور درخواست کننده | 3E | |
نوشتن در حافظه به وسیله شناسه عمومی | 2E |
|
|
در شکل 29 الگوریتم پاسخ دهی ECU به درخواست ارسال شده به آن ترسیم شده است. در صورتی که پیام ارسال شده معتبر نباشد به آن هیچ پاسخی نمیدهد. در صورتی که درخواست یا زیر درخواست ارسال شده پشتیبانی نشود با کد خطای 0x11 یا 0x12 پاسخ منفی به درخواست ارسال میکند. در صورتی که پاسخ مثبت آماده شده باشد آنرا ارسال میکند در غیر این صورت ابتدا بررسی میکند که آیا به زمان بیشتری نیاز دارد یا نه. اگر زمان بیشتری نیاز دارد با ارسال پاسخ منفی با کد 0x78 به درخواست کننده، آن را مطلع میکند. در مرحله بعدی بررسی میکند اگر روتین هنوز تمام نشده باشد آنگاه خطای 0x23 را ارسال میکند. در صورتی که سرور مشغول باشد و نتواند به درخواست پاسخ دهد با ارسال کد 0x21 به درخواست کننده اطلاع میدهد که سرور مشغول است و درخواست را مجددا با تاخیر تکرار کند. و در نهایت یا کد خطای رد کردن کلی 0x10 را میفرستد یا خطای متناظر با نوع درخواست ارسال شده را.
این درخواست در قسمت قبل بررسی شد.
زمانیکه لازم باشد تا ارتباط ایجاد شده را ببندیم میتوانیم درخواست پایان ارتباط با کد درخواست 0x82 را ارسال کنیم. البته دقت شود که اگر از آخرین پاسخ ECU مدت زمان P3max سپری شده باشد و در این مدت زمان هیچ درخواست دیگری ارسال نشود، به صورت خودکار ارتباط توسط ECU بسته میشود. ساختار پیام درخواست، پاسخ مثبت و پاسخ منفی به ترتیب در شکل 30 ، شکل 31 و شکل 32 نشان داده شدهاند.
این درخواست پارامترهای زمانبندی در ارتباط KLine را برمیگرداند. کد درخواست آن 0x83 بوده و داری یک زیرکد هم است که میتواند 0x00، 0x01، 0x02 و یا 0x03 باشد(شکل 33 (الف)). کد 0x00 محدودیت زمان بندی را برمیگرداند 0x01 پارامترهای زمانبندی با مقادیر قرار دادی تنظیم میکند. برای خواندن مقادیر پارمترهای زمانبندی فعلی باید 0x02 را ارسال کنیم و برای تنظیم مقادیر پارمترهای زمانبندی باید از کد 0x03 استفاده کنیم. برای تنظیم پارامترها باید از فرمت نشان داده شده در شکل 25 (ب) استفاده کرد. دقت شود در صورتی هدف تنظیم پارامتر باشد (یعنی 0x03)، در ساختار ارسال پیام 5 بایت بعدی ارسال میشود.
جواب درخواست اگر پاسخ مثبت باشد به صورت شکل 34 خواهد بود. فرمت پارامترهای تنظیمات، همان فرمت ارسال نشان داده شده در شکل 33 (ب) است. برای محاسبه مقدار زمان متناسب با هر پارامتر کافی است که بایت مورد نظر را در ضریب متناسب با آن ضرب کرد. به عنوان مثال مثلا برای P2min باید بایت اول را در عدد 0.5 ضرب کنیم.
در صورتی که جواب منفی باشد آنگاه پاسخ به شکل 35 خواهد بود.
به عنوان مثال برای دسترسی به محدودیت زمانبندی ECU از نوع SIEMENS باید کد {0x82,0x11,0xF1,0x83,0x00,0x07} را ارسال کنیم. در پاسخ جواب به صورت {0x87,0xF1,0x11,0xC3,0x00,0x00,0xFE,0x01,0x28,0x00,0x73} ارسال خواهد شد. بنابراین داریم.
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.