ساختار پیام‌ها و زمان‌بندی ارتباط در پروتکل KLine - قسمت سوم آموزش OBD II

blog
۱۴۰۳-۱۰-۰۸
12 دقیقه

این مقاله، قسمت سوم از دوره آموزش OBD II در سایت سیسوگ است که در ادامه قسمت دوم، به بررسی جزئیات ساختار پیام‌ها و زمان‌بندی در پروتکل KLine می‌پردازد. پروتکل KLine به‌عنوان یکی از روش‌های مهم ارتباط بین ECU و دستگاه‌های عیب‌یابی، برای تحلیل و رفع مشکلات خودرو استفاده می‌شود.این قسمت ادامه قسمت قبلی این دوره تاریخچه و کاربردهای دیاگ OBD: از استانداردسازی تا معرفی پروتکل‌های متداول و کدهای خطا می باشد.

قالب‌بندی پیام درخواست

پاسخ ECU به درخواست ارسال شده به آن می­تواند مثبت یا منفی باشد. ساختار پیام پاسخ مثبت ECU به درخواست در شکل 19 نشان داده شده است. در پیام پاسخ ECU، بیت 6ام از کد درخواست ارسال شده را یک می­کند به عبارت دیگر کد درخواست ارسال شده را با 0x40 جمع می­کند و به عنوان اولین داده در پیام قرار می­دهد.

به عنوان مثال ECU پیام پاسخ {0x83,0xF1,0x11,0x41,0x05,0x76,0x41} را در جواب درخواست {0xC2,0x33,0xF1,0x01,0x05,0xEC}، کد درخواست دمای مایع خنک کننده، ارسال می­کند. در ادامه بخش داده، ادامه داده­های ارسالی که در اینجا 0x05 است ارسال می­شود و در نهایت جواب که در اینجا بایت 0x76 است ارسال می­شود که داده خام است و برای تعیین دمای آب باید آنرا در فرمول مربوط به آن قرار دهیم. مثلا در اینجا باید از فرمول A-40 استفاده کرد که A همان داده خام است. در نتیجه دما آب برابر با 78 درجه سانتیگراد محاسبه می­شود.

ساختار پیام پاسخ مثبت ECU به یک در خواست در ارتباط KLine

شکل 19- ساختار پیام پاسخ مثبت ECU به یک در خواست در ارتباط KLine

اگر ECU به هر دلیلی نتواند پاسخ مثبت به درخواست بدهد پاسخ ارسالی به‌صورت شکل 20 خواهد بود. که در آن اولین بایت از قسمت داده برابر با 0x7F است که نشان دهنده پاسخ منفی به درخواست است. سپس شناسه سرویس درخواست ارسالی مثلا در اینجا 0x01 ارسال می­شود. در نهایت کد خطا که نشان دهنده علت پاسخ منفی به درخواست است را ارسال می­کند. به عنوان مثال کد خطا 0x78 به معنای این است که ECU درخواست را به دستی دریافت کرده است اما برای پاسخ به این درخواست به زمان بیشتر از زمان قراردادی نیاز دارد. در جدول 4 کد خطاهای ارسالی لیست شده­اند.

ساختار پیام پاسخ منفی ECU به یک در خواست در ارتباط KLine

شکل 20-ساختار پیام پاسخ منفی ECU به یک در خواست در ارتباط KLine

 

کد خطا hex

توصیف

10

ردکردن کلی: این کد خطا زمانی ارسال می­شود که خطای رخ‌داده در لیست خطاهای ممکن نباشد.

11

درخواست پشتیبانی نمی­شود: این خطا زمانی رخ می­دهد که سرویس درخواستی توسط واحد الکترونیکی پشتیبانی نشود.

12

زیرسرویس پشتیبانی نمی­شود – قالب نامعتبر: این خطا زمانی رخ می­دهد که زیر سرویس درخواستی توسط واحد الکترونیکی پشتیبانی نشود یا فرمت آن درست نباشد

21

سرور مشغول است الان نمی­تواند جواب دهد مجدد بعداً تلاش کنید: این خطا بیان می­کند که واحد الکترونیکی در حال حاضر مشغول به انجام کار دیگری است و نمی­تواند به سرویس درخواستی جواب دهد. این بدین معنا است که در زمان دیگری واحد الکترونیکی می­تواند پاسخ دهد.

22

شرایط درست نیست یا ترتیب در درخواست رعایت نشده: این خطا بیان می­کند که ترتیب سرویس درخواستی درست نیست. این خطا برای درخواست­هایی رخ می­دهد که چند پیام باید به ترتیب خاصی ارسال شوند و درصورتی‌که ترتیب رعایت نشود این خطا رخ می­دهد.

23

روتین کامل نشده است

31

درخواست خارج از محدوده است: این خطا بیان می­کند که مقدار ارسال شده از مقدار حداکثر مجاز بیشتر است مثلاً 111 فرستاده شده در صورتی که حداکثر مقدار ممکن 100 است.

33

دسترسی امکان‌پذیر نیست. این خطا بیان می­کند که جنبه­های امنیتی برای سرویس درخواستی رعایت نشده است.

35

کلید نامعتبر: این خطا زمانی رخ می‌دهد که کلید ارسال از دستگاه دیاگ با کلید ذخیره شده در واحد الکترونیکی یکسان نباشد برای سرویس 27

36

تعداد تلاش­ها از مقدار مجاز بیشتر شده: این خطا زمانی رخ می­دهد که تعداد دفعات ارسال کلید از تعداد مجاز بیشتر شده باشد سرویس 27

37

تأخیر موردنیاز به اتمام نرسیده

40

دانلود مورد پذیرش قرار نگرفته

41

نوع دانلود متناسب نیست

42

امکان دانلود از آدرس مشخص شده نیست

43

تعداد بایت درخواست شده امکان دانلود را ندارند

50

درخواست آپلود مورد قبول واقع نشد

51

نوع آپلود متناسب نیست

52

در آدرس مشخص شده امکان آپلود نیست

53

تعداد بایت درخواست شده امکان آپلود را ندارند.

71

انتقال در حالت معلق است

72

انتقال لغو شد

74

آدرس بلاک برای انتقال نامعتبر است

75

تعداد بلاک برای انتقال نامعتبر است

76

نوع انتقال نامعتبر است

77

چک سام داده‌های منتقل شده نامعتبر است

78

درخواست به‌درستی دریافت شده اما برای پاسخ نیاز به زمان بیشتری است.

79

تعداد بایت‌ها در عملیات انتقال درست نیست

80-FF

 

جدول 4- انواع کدهای خطا در ارتباط KLine

زمان‌بندی در ارتباط KLine

زمان بندی ارتباط KLine در حالت معمول به صورت شکل 21 است. توصیف زمان­های P­1-P4 در جدول 5 آورده شده است.

زمان بندی و جریان داده در پروتکل KLine

شکل 21 – زمان بندی و جریان داده در پروتکل KLine

 

مقدار

توصیف

P1

زمان بین بایت­ها در پیام پاسخ ECU

P2

مدت زمانی که طول می­کشد تا ECU به یک درخواست جواب دهد.

P3

زمان بین پایان پاسخ ECU و شروع درخواست جدید

P4

زمان بین بایت­ها در پیام درخواست

جدول 6 – توصیف پارامترهای زمان بندی در KLine

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

  • یک دسته برای ارتباط متعارف با آدرس‌دهی فیزیکی و فانکشنال.
  • دسته دیگر فقط برای ارتباط با آدرس‌دهی فیزیکی بوده که ارتباط سریع­تر را فراهم می­کند.

محدودیت­های زمانبندی ارتباط توسط ECU با ارسال بایت KB1 در زمان شروع ارتباط اطلاع داده می­شود (بخش…). البته ممکن است بتوان زمانبندی را با سرویس “دسترسی به پارامترهای زمانبندی” تغییر داد.

در جدول 7 و جدول 8 پارامترهای زمانبندی که به صورت قراردادی مورد استفاده قرار می­گیرند آورده شده است.

 

پارامتر زمانبندی

حداقل مقدار(ms)

حداکثر مقدار (ms)

حد پایین

قراردادی

گام

حد بالا

قراردادی

گام

P1

0

0

20

20

P2

0

25

0.5

(1)

50

(1)

P3

0

55

0.5

5000

250

P4

0

5

0.5

20

20

جدول 7- مقادیر متعارف پارامترهای زمانبندی برای آدرس دهی فیزیکی و فانکشنال

پارامتر زمانبندی

حداقل مقدار(ms)

حداکثر مقدار (ms)

حد پایین

قراردادی

گام

حد بالا

قراردادی

گام

P1

0

0

20

20

P2

0

0

0.5

(1)

100

(1)

P3

0

0

0.5

5000

250

P4

0

5

0.5

20

20

جدول 8- مقادیر متعارف پارامترهای زمانبندی برای آدرس دهی فیزیکی

(1) اگر مقدار پارامتر زمانبندی متناسب با P2max ارسال شده توسط ECU در جواب درخواست دسترسی به پارامترهای زمانبندی بین 0x01 – 0xF0 باشد گام آن 25 میلی ثانیه است مقدار P2max آن برابر است حاصلضرب مقدار در گام. اگر مقدار آن بین 0xF1-0xFE باشد مقدار P2max برابر است با مقدار چهاربیت پایین ضربدر 256 ضربدر گام(P2max = 0x0A * 256 * 25 = 6400 در صورتی که داشته باشم 0xFA).

مستثنات زمانبندی 

در بعضی از مواقع در صورت لزوم ECU می­تواند درخواست افزایش مقدار زمان P2max برای ارسال پاسخ درخواست را ارسال کند. بدین منظور ECU یک یا چند پاسخ منفی با کد خطای 0x78 را ارسال می­کند. این کد خطا فقط زمانی ارسال می­شود که ECU نتواند در زمان مقرر پاسخ مثبت یا منفی به درخواست ارسال شده را بدهد. این درخواست افزایش زمان پاسخ در ECU و درخواست‌کننده اعمال می­شود. در این زمان درخواست‌کننده همچنان منتظر دریافت پاسخ ECU می­ماند و درخواست خود را مجدد ارسال نمی­کند. در طرف دیگر ECU هم به‌محض اینکه درخواست ارسال شده را انجام داد، پاسخ مثبت یا منفی (با کد خطایی متفاوت از 0x78) خود را ارسال می­کند. سپس هر دوی ECU و درخواست کنند مقدار زمان P2max را به حالت پیش‌فرض برمی­گردانند.

تبادل داده در KLine

به‌منظور ارسال هر نوع درخواست، ابتدا باید ارتباط شکل بگیرد و زمان‌بندی به‌صورت صحیح پیاده‌سازی شده باشد. این موضوع در شکل 22 نشان داده شده است.

رویه شروع درخواست در KLine

شکل 22-رویه شروع درخواست در KLine

رویه شروع ارتباط

درخواست شروع ارتباط برای ایجاد ارتباط بر بستر Kline مورداستفاده قرار می­گیرد. سه حالت ممکن برای ایجاد ارتباط وجود دارد. الگوریتم پیشنهادی برای ایجاد ارتباط در شکل 23 آورده شده است.

الگوریم ایجاد ارتباط در KLine

شکل 23- الگوریم ایجاد ارتباط در KLine

 

ایجاد ارتباط سریع

برای شروع سریع یا Fast init، یک الگوی Wake up به‌صورت نشان‌داده‌شده در شکل 24 ارسال می­شود. دقت شود که زمان­های 25 ms حداکثر 1 ms± باید خطا داشته باشد و کل 50 ms باید 1 ms± خطا داشته باشد. سپس بلافاصله یک فریم داده حاوی درخواست شروع ارتباط به واحد مربوطه فرستاده می­شود. آن واحد باید یک پاسخ ارسال کند که در صورتی که پاسخ معتبر باشد به معنای آن است که شروع ارتباط موفقیت آمیز بوده است. در شکل 25 ساختار پیام درخواست برای شروع ارتباط نشان داده شده است.

اگر آدرس دهی به صورت فیزیکی باشد بایت فرمت برابر با 0x81 خواهد بود (با توجه به اینکه طول داده ارسالی یک است 0x80 + 0x01) در غیر این صورت 0xC1 خواهد بود. دو بایت بعدی آدرس هدف و منبع هستند و در نهایت بایت 0x81 که کد سرویس درخواست شروع ارتباط برای KLine است. بایت پایانی چک سام بایت های پیام است. به عنوان مثال برای درخواست شروع ارتباط با آدرس دهی فانکشنال ساختار پیام به صورت {0xC1,0x33,0xF1,0x81,0x66} است. که در آن 0x33 آدرس هدف فانکشنال، 0xF1 آدرس منبع و 0xC1+0x33+0xF1+0x81 = 0x66 است.

 

زمان بندی شروع سریع در KLine

شکل 24- زمان بندی شروع سریع در KLine

ساختار پیام درخواست شروع ارتباط در KLine

شکل 25- ساختار پیام درخواست شروع ارتباط در KLine

ECU پس از دریافت درخواست شروع ارتباط درصورتی‌که شرایط درست باشد به‌صورت شکل 26 پاسخ معتبر را ارسال می­کند. بایت طول پیام در اینجا ممکن است در متن پیام باشد یا نباشد. بایت0xC1 نشان دهنده پاسخ مثبت ECU به درخواست است. همانطور که قبلا بیان شد ECU با یک کردن بیت شماره 6ام کد درخواست که اینجا 0x81 است این بایت را درست می­کند که معادل این است که 0x81 را با 0x40 جمع کنیم

 

ساختار پیام جواب مثبت در KLine

شکل 26- ساختار پیام جواب مثبت در KLine

دو بایت­ بعدی بایت­های کلیدی[1] (KB1 و KB2) نامیده می­شوند. این بایت­های اطلاعاتی در مورد تعداد بایت­های هدر، زمانبندی و طول پیام فراهم می­کنند. در اینجا بایت KB2 معمولا ثابت و برابر با 0x8F است. محتوای بایت KB1 در شکل 27 نمایش داده شده است. با ارزش­ترین بیت، بیت توازن است. بیت بعدی همیشه یک است. دو بیت بعدی نوع زمانبندی پشتیبانی شده ( متعارف یا سریع) را مشخص می­کند. بیت­های بعدی تعداد بایت­های هدر را مشخص می­کند و در نهایت دو بیت بعدی جایگاه طول داده در پیام را مشخص می­کند ( در بایت فرمت یا بایت طول یا هر دو).

 توضیحات کامل در جدول 9 و جدول 10 آورده شده است. به عنوان مثال ECU در پاسخ به درخواست بیان شده در بالا جواب {0x83,0xF1,0x11,0xC1,0xEF,0x8F,0xC4} را ارسال می­کند. با توجه به متن پیام مشخص می­شود که طول داده برابر با 3 بایت است (0x83)، جواب درخواست مثبت است (0xC1) و دو بایت کلیدی برابر با KB1 = 0xEF و KB2 = 0x8F هستند و در نهایت بایت چک سام برابر با 0xC4 هست. با توجه به مقدار بایت KB1 و توضیحات جدول 9 و جدول 10 می­توان بیان کرد که این ECU از زمانبندی متعارف پشتیانی کرده و از هدر یک بایتی (بدون بایت­های آدرس) و هدر با بایت­های آدرس پشتیبانی کرده و همچنین طول داده را هم می­توان در بایت فرمت نوشت هم در بایت طول داده.

AL0AL1HB0HB1TP0TP11Parity

شکل 27- ساختار بایت KB1 در KLine.

 

 

مقدار بیت

0

1

AL0

مقدار طول داده ‌پیام در بایت فرمت پشتیبانی نمی­شود

مقدار طول داده پیام در بایت فرمت پشتیبانی می­شود

AL1

بایت طول پیام پشتیبانی نمی‌شود

بایت طول پیام پشتیبانی می‌شود

HB0

هدر یک بایتی پشتیبانی نمی‌شود

هدر یک بایتی پشتیبانی می‌شود

HB1

بایت­های آدرس هدف و منبع پشتیبانی نمی‌شود

بایت­های آدرس هدف و منبع پشتیبانی می‌شود

TP0(*)

زمان‌بندی متعارف

زمان‌بندی بسط داده شده

TP1(*)

زمان‌بندی بسط داده شده

زمان‌بندی متعارف

جدول 9- مقادیر ممکن برای بایت KB1 در KLine.

 * فقط حالت‌های TP0,TP1 = 0,1 و TP0,TP1 = 1,0 مجاز هستند.

 

KB1

بایت طول داده

نوع هدر

زمان‌بندی

0xD5

0b1101 0101

بایت فرمت

هدر یک بایتی

زمان‌بندی توسعه داده شده

0xD6

0b1101 0110

بای طول داده

0x57

0b0101 0111

هر دو حالت

0xD9

0b1101 1001

بایت فرمت

هدر با بایت­های آدرس

0xDA

0b1101 1010

بای طول داده

0x5B

0b0101 1011

هر دو حالت

0x5D

0b0101 1101

بایت فرمت

هر دو حالت: هدر با بایت­های آدرس و بدون بایت­های آدرس

0x5E

0b0101 1110

بای طول داده

0xDF

0b1101 1111

هر دو حالت

0xE5

0b1110 0101

بایت فرمت

هدر یک بایتی

زمان‌بندی متعارف

0xE6

0b1110 0110

بای طول داده

0x67

0b0110 0111

هر دو حالت

0xE9

0b1110 1001

بایت فرمت

هدر با بایت­های آدرس

0xEA

0b1110 1010

بای طول داده

0x6B

0b0110 1011

هر دو حالت

0x6D

0b0110 1101

بایت فرمت

هر دو حالت: هدر با بایت­های آدرس و بدون بایت­های آدرس

0x6E

0b0110 1110

بای طول داده

0xEF

0b1110 1111

هر دو حالت

جدول 10-حالات ممکن برای بایت KB1.

[1] KeyByte

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

تاریخچه و کاربردهای دیاگ OBD: از استانداردسازی تا معرفی پروتکل‌های متداول و کدهای خطا - قسمت اول آموزش OBD II

اطلاعات
0
0
لینک و اشتراک
profile

BlueShift

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

مقالات بیشتر
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

دیدگاه ها

become a writer

نویسنده شو !

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

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

نویسنده شو !

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

ارسال مقاله