چه اتفاقی می افتد اگر دو بخش کد شناسایی یکسان باشند؟

Apr 04, 2018 پیام بگذارید

چه اتفاقی می افتد اگر دو بخش ID گره یکسان باشند؟




شبکه های CAN-bus اجازه نمی دهند که دو گره به طور یکسان بخش ID را داشته باشند، اما اگر دو بخش گره ID یکسان باشند، چه اتفاقی می افتد؟

قبل از آزمایش، ما باید درک روشنی از ساختار پیام های CAN و اصول داوری داشته باشیم.


اول، ساختار پیام CAN

استاندارد شبکه گسترده CAN bus به طور گسترده ای نسخه V2.0 است. این استاندارد بیشتر به قطعات A و B تقسیم شده است. تفاوت اصلی آنها کد طول ID در منطقه داوری است. در میان آنها CAN2.0A (قاب استاندارد) 11 بیتی ID است، CAN2.0B (گسترش قاب) 29 بیت ID است. جدول 1 زیر ساختار پیام CAN را نشان می دهد:

جدول 1 ساختار پیام CAN

نام فاز طول فاز / بیت شرح
SOF 1 به این معنی شروع فاز داده است، و با یک بیت غالب بسازید
فاز تطبیق قاب استاندارد 12 اولویت قاب را نشان می دهد، توسط 11 آدرس ID و 1 RTR را تشکیل می دهد
قاب فرمت 32 اولویت قاب را نشان می دهد، توسط 29 آدرس ID، 1 بیت SRR، IDE گسترش و RTR را تشکیل می دهد
فاز کنترل 6 به معنی کد گروه و بیت های ذخیره شده از طول داده های بخش داده است
فاز داده 0 ~ 8 محتوای داده ها، فاز کنترل طول داده را کنترل می کند
CRC 16 چک کردن transmission خط فریم، از SOF به مرحله داده، تمام مطالب، به جز پر کردن بیت
ACK 2 گره دیگر این قاب را تأیید می کند
پایان قاب 7 به معنی پایان قاب


دوم، اصل داوری

داوری دائمی CAN بر اساس "خط و اصل" است، همانطور که در شکل 1 نشان داده شده است. هنگامی که فرستنده گیرنده سیگنال های سطوح مختلف را همزمان تولید می کند، سطح پایدار همیشه توسط سطح غالب تحت پوشش قرار می گیرد. هنگام ارسال پیام، کنترل کننده CAN کنترل خواهد کرد که آیا وضعیت اتوبوس همان است که فرستاده شده توسط خود است. اگر ناسازگاری در بخش ID رخ دهد، داوری رخ خواهد داد. اگر در مناطق دیگر رخ دهد، خطای مربوطه باعث خواهد شد.

نکات کلیدی زیر است: اگر بخش های دو گره ID یکسان باشند، چه؟ ما آزمایش را با دو کارت CAN و یک CANScope آغاز کردیم. کارت CAN شبیه سازی گره استاندارد CAN برای ارسال و دریافت پیام ها است و CANScope نظارت ارتباطی را انجام می دهد، همانطور که در شکل 2 نشان داده شده است.

                                                           

1.jpg

شکل 2 ساخت و ساز بستر آزمایش


سوم، آزمایش یک "بخش ID یکسان است، اما داده ها متفاوت است"

کارت CAN برای ارسال یک قاب CAN با داده ID 000H به 01020304050607H و یک کارت CAN دیگر برای ارسال یک قاب CAN با داده 000H به 02020304050607H استفاده می شود. داده هایی که CANScope گوش می دهد در شکل 3 نشان داده شده است. می توان مشاهده کرد که تعداد زیادی از خطاهای پر کردن فیلد داده وجود دارد.


2.jpg

شکل 3 فیلد داده خطا را پر کنید

چرا اینطور است؟ ابتدا شکل موج مربوط به دو پیام انتقال CAN را بدست آوریم، همانطور که در شکل 4 نشان داده شده است. از آنجا که پیام دو پین یک فریم استاندارد است و هر کادر شامل 8 بایت داده است، شکل موج مربوط به دو فریم بسته ها دقیقا مشابه در بخش ID، RTR، IDE، R0، و DLC بخش. بنابراین، نقش داوری ناکارآمد است و هر دو گره خود را اولویت میگیرند و همچنان به ارسال اطلاعات میپردازند.

3.jpg

حالا ما بر روی بخش داده تمرکز می کنیم، داده های بایت اول همانند 00H هستند؛ داده های بایت دوم متفاوت است به ترتیب 01H، 02H. فلش در شکل 5 نشان می دهد که منطق بیت های مربوطه به ترتیب 0 و 1 است. پیش از این ما اشاره کردیم که گره CAN می تواند تشخیص دهد که آیا سطح اتوبوس همان است که در هنگام ارسال پیام فرستاده شده است. اگر ناسازگاری در ناحیه غیر داوری اتفاق می افتد، خطای مربوطه به وجود می آید، بنابراین اگر دو فریم همزمان به اتوبوس فرستاده شوند، خطاهای بیت باید رخ دهند. از آنجا که خطای ارسال بیت باعث می شود که گره 6 بیت غالب را ارسال کند که قانون پر شدن را نقض می کند (خطای فعال باعث خراب شدن داده های قاب)، خطای پر کردن فیلد داده رخ می دهد، همانطور که در شکل نشان داده شده است. 3


4.jpg

شکل 5 مناقشات اطلاعاتی


چهارم، آزمایش دو "داده های مشابه با همان شناسه"

در عین حال، از دو کارت CAN برای ارسال قابهای CAN که اطلاعات ID 000H به 01020304050607H است استفاده کنید و CANScope نظارت ارتباطی را انجام میدهد. اول از همه، ما گزینه "پاسخ اتوبوس" را بررسی نمی کنیم تا CANScope در حالت گوش دادن فقط کار کند. نتایج تجربی در شکل 6 نشان داده شده است، و ضلع پاسخ در فرمت اشتباه است.

5.jpg

شکل 6 خطای فرمت ضبط پاسخ


چرا این اتفاق می افتد؟ گره ای که پیام را ارسال می کند، دو بیت کاهش یافته در بخش ACK ارسال می شود. اگر سطح غالب در طول بیت اول دریافت شود، قاب دریافت شده به درستی دریافت می شود. از آنجا که دو داور فکر می کنند که حق داوری را در صورت داشتن یک بخش داوری مشابه دارند، منتظر پاسخ در بخش ACK هستند، اما تنها دو گره در شبکه وجود دارد. بنابراین، در بخش ACK هیچ پاسخی دریافت نمی شود و خطای جداساز پاسخ رخ می دهد. به عبارت ساده، این وضعیت شبیه به این واقعیت است که تنها یک گره در اتوبوس قادر به ارسال داده نیست. شکل 7، مقایسه شکل موج را نشان می دهد، زمانی که هیچ پاسخی در بخش ACK وجود ندارد.

6.jpg

شکل 7 جواب ACK


ما پاسخ اتوبوس را بررسی می کنیم و دوباره آزمایش را شروع می کنیم (در این زمان 3 اتوبوس وجود دارد). در این زمان، همانطور که در شکل نشان داده شده است. 8، اطلاعات اتوبوس به طور معمول منتقل و دریافت می شود.

7.jpg

شکل 8 شروع پاسخ BUS


خلاصه: هنگامی که دو گره یک بار بسته های مشابه با یک ID و داده را همزمان ارسال می کنند، یک خطای فیلد پشته داده می شود. هنگامی که دو گره بسته هایی با همان شناسه و داده های مشابه ارسال می کنند، اگر گره های دیگر پاسخ دهند، خطایی رخ نمی دهد. گره های دیگر با یک خطای پاسخ پاسخ دادند. بنابراین، هنگام طراحی درایو CAN باید از وضعیت مشابه در بخش ID جلوگیری کنیم.


ارسال درخواست

whatsapp

تلفن

ایمیل

پرس و جو