شبکه CAN – Controller Area Network

0
481
شبکه CAN

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

اطلاعات تکمیلی:

  • ارتباطات سریال در محیط‌های خطر
  • چرا و چگونگی ارسال سیگنال تفاضلی

شبکه CAN چیست؟

شبکه CAN كه مخفف Controller Area Network است به ‌صورت يک باس ارتباطی سریال است. اين شبكه برای دستیابی به کارکرد مقاوم و انعطاف پذیر در محیط‌های خطر و بخصوص برای کاربرد‌های صنعتی و صنایع خودرو سازی طراحی شده است.

ابداع این شبکه در ابتدا توسط کمپانی Bosch انجام گرفت و سپس در استاندارد ISO11898-1 مد نظر قرار  گرفت. CAN با ارائه یک تعریف از نحوه ارتباط داده‌ها و لایه‌های فیزیکی مدل OSI، یک راه حل برای تبادل پرسرعت داده در سیستم‌های داخلی خودرو‌ها ارائه نموده است. بخصوص، توسعهCAN  با هدف کاهش میزان کابل‌کشی ارائه شده است که در نتیجه آن  ECU‌ها می‌توانند فقط بوسیله یک زوج سیستم با یکدیگر ارتباط برقرار نمايند.

در شکل ۱، ECU و سيستم‌هاي كنترل الكترونيكي یک خودرو که از طریق یک باس CAN با یکدیگر در ارتباط هستند، نمایش داده شده است.

شبکه CAN براي ارتباط ECU و سيستم‌هاي كنترل الكترونيكي در خودرو‌ها استفاده مي‌‌شود
شكل ۱- شبکه CAN براي ارتباط ECU و سيستم‌هاي كنترل الكترونيكي در خودرو‌ها استفاده مي‌‌شود.

OBD سيستم گزارش دهي و تشخيص خطاي خودرو است كه اجازه عيب يابي و رفع خطاي خودرو را به شما يا تكنسين از طريق كد‌هاي DTC مي‌‌دهد. هنگامي‌‌ كه لامپ هشدار “check engine” روشن مي‌‌شود، بطور معمول تكنسين از يك ابزار دستي (پرتابل) براي خواندن كد‌هاي موتور خودرو استفاده مي‌كند. اين اطلاعات در پايين‌ترين سطح از طريق يك پروتكل ارسال داده منتقل خواهد شد كه در بيشتر مواقع پروتكل CAN براي اين منظور، مورد استفاده قرار مي‌گيرد.

DeviceNet يك پروتكل در شبكه‌هاي سطح بالا است كه در كاربرد‌هاي صنعتي مورد استفاده قرار مي‌گيرد و بطور قابل ملاحظه اي ميزان سيم كشي بين سيستم كنترلي و تجهيزات ورودي و خروجي را كاهش مي‌دهد. علاوه بر اينكه هر وسيله را به يك ماژول ورودي/خروجي PLC متصل مي‌كند، وسايل مي‌توانند بوسيله يك كانكتور چهار سيم با يكديگر در ارتباط باشند. CAN در پايين ترين سطح پروتكل DeviceNet بكار گرفته مي‌شود.

شكل ۲ : PLC به يك شبكه DeviceNet متصل است كه از شبکه CAN براي لينك داده و لايه فيزيكي استفاده مي‌كند.

فريم‌هاي پيام در شبکه CAN

يك پيام در این شبكه به چه صورت است؟ استاندارد مبنايي ISO آن چيزي است كه به عنوان  CAN استاندارد منتشر گرديد كه از يك ID يازده بيتي براي پيام‌هاي مختلف استفاده مي‌كند. در نتيجه مي‌تواند تعداد ۲۱۱ يعني ۲۰۴۸ ID متفاوت براي پيام‌هاي مختلف داشته باشد. CAN بعدا به نام (“CANتوسعه‌يافته” یاExtended CAN ) با فريم ۲۹ بيتي گسترش داده شد كه در نتيجه مي‌توان در آن ۲۲۹ ID متفاوت داشت. CAN  از يك باس كه داراي چند مستر است، استفاده مي‌كند و پيام‌ها در كل شبكه ارسال مي‌گردد. ID‌ ها يك اولويت بندي براي پيام‌هاي مختلف را امكان پذير خواهند نمود كه در بخش‌هاي بعد توضيح داده خواهد شد.

شبکه CAN از يك سيگنال تفاضلي با دو حالت منطقي به نام‌هاي recessive و dominant استفاده مي‌كند. حالت recessive مشخص مي‌كند كه ولتاژ تفاضلي از يك ولتاژ حد آستانه مينيمم كمتر است و dominant مشخص كننده وضعيتي است كه ولتاژ تقاضلي از اين حد آستانه مينیمم بيشتر باشد. حالت dominant وقتي بدست مي‌‌آيد كه يك “۰” منطقي به باس ارسال شود و حالت recessive نيز با منطق “۱” بدست خواهد آمد. جرئيات اين دو حالت در ادامه بحث خواهد شد. نكته مهم اين است كه در موارد اختلاف، حالت  dominant نسبت به حالت Recessive اولويت دارد.

شبکه CAN استاندارد (Standard CAN)

فريم پيام در شبکه CAN استاندارد بصورت تعدادي بيت‌ است كه در شكل ۳ نمايش داده شده است. بيت اول كه SOF ناميده مي‌شود بصورت dominant مي‌باشد و بيانگر شروع يك پيامCAN  است. پس از آن يك ID يازده بيتي وجود دارد كه اولويت پيام CAN را مشخص مي‌كند. هر چقدر مقدار ID كمتر باشد، به مفهوم اولويت بالاتر پيام CAN خوهد بود.

شكل 3: فريم پيام در شبکه CAN استاندارد
شكل ۳: فريم پيام در شبکه CAN استاندارد

بيتRTR  بطور معمول بصورت dominant است و در مواقعي كه يك نود (گره) شبكه درخواست داده مي‌كند به recessive تغيير وضعيت مي‌دهد. وقتي يك فريم CAN استاندارد ارسال شده باشد، بيت IDE داراي وضعيت dominant است (نه در مواقعي كه فريم CAN توسعه يافته ارسال شده باشد). بيت بعدي r0 است كه به عنوان يك بيت رزرو است و در حال حاضر بكار گرفته نمي‌شود. كد DLC مشخص كننده اين است كه پيام چند بايت است.

پس از DLC، داده ارسالي در فريم گنجانده مي‌شود. براي آشكارسازي خطا در داده ارسالي از افزونگي نرم افزاري بصورت يك كد ۱۶ بيتي CRC استفاده مي‌شود. اگر پيام به درستي دريافت شود، وضعيت بيت ACK توسط نود دريافت كننده به dominant تغيير می کند. براي حفظ همزماني، در ACK يك بيت حائل در نظر گرفته شده است. پس از آن، قسمت ۷ بيتيEOF  قرار دارد كه نشان دهنده پايان فريم است. بخش انتهايي فريم داده IFS  است كه به عنوان يك تاخير زماني بكار گرفته مي‌شود. اين تاخير دقيقا برابر مقدار زماني است كه كنترلر CAN براي انتقال پيام دريافتي به درون بافر جهت انجام پردازش‌هاي بيشتر نياز دارد.

شبکه CAN توسعه يافته

فريم داده اين شبكه از يك بخش ۲۹ بيتي متشكل از ID و تعدادي بيت اضافي مي‌باشد. به منظور حفظ ساختار فريم شبيه به CAN استاندارد، يك پيام توسعه يافته پس از ID يازده بيتي داراي يك بيت SRR است. قبل از ID هجده بيتي، IDE در وضعيت recessive است كه نشان دهنده اين است كه پس از آن يك شناسايي كننده يا ID توسعه يافته قرار دارد. پس از ID هجده بيتي، يك بيت RTR قرار دارد و سپس بيت رزرو ديگري به نام r1 قرار دارد. بقيه فريم داده CAN توسعه يافته شبيه به فريم داده شبکه CAN استاندارد است.

شكل ۴: فريم داده CAN توسعه يافته

انواع پيام‌ها در شبکه CAN

اكنون كه ساختار پيام‌هاي شبكه CAN را مي‌ دانيم، به دنبال آن هستيم كه انواع مختلف اين پيام‌هايي كه از باس شبكه انتقال داده مي‌شوند را بشناسيم. شبکه CAN داراي ۴ نوع پيام است كه عبارتند از فريم داده، فريم ريموت، فريم اضافه بار و فريم خطا.

  • فريم داده يك شبکه CAN استاندارد داراي ID، داده، كد طول داده، افزونگي چك سايكليك و بيت ACK است. در فريم‌هاي داده هر دو بيت RTR و IDE داراي حالت dominant هستند. در زمان انتقال موفق داده، بيت ACK از وضعيت recessive به حالت dominant تغيير حالت می دهد.
  • فريم  remoteشبيه به فريم داده است، با اين تفاوت كه شامل هيچ داده‌اي نيست. در مقايسه با فريم داده، براي اينكه فريم remote قابل تشخيص باشد، بيت RTR اين فريم در حالت recessive ارسال مي‌شود. اين فريم براي درخواست داده از يك نود ارسال مي‌شود.
  • وقتي كه يك نود شبكه خطايي در پيام‌هاي باس شبکه CAN را آشكار كند، يك فريم خطا ارسال مي‌كند و باعث مي‌شود بقيه نود‌ها نيز فريم خطا ارسال كنند. به دنبال آن، نودي كه در آن خطا رخ داده است دوباره پيام را ارسال مي‌كند.
  • فريم اضافه بار نيز مشابه فريم خطا عمل مي‌كند با اين تفاوت كه در مواقعي استفاده مي‌شود كه يك نود شبكه فريم‌‌ها را سريعتر از آن چيزي كه بتواند تجزيه و تحليل كند دريافت مي‌كند. اين فريم در حقيقت يك بافر زماني فراهم مي‌كند تا عقب افتادگي زماني نود را جبران كند.

انتقال پيام و حكميت در انتقال پيام‌ها از طريق باس CAN

CAN يك پروتكل CSMA/CD است به اين مفهوم كه هر نود مي‌تواند تداخل داده را آشكار كند و قبل از ارسال مجدد داده، براي يك مدت زماني صبر كند. آَشكار سازي تداخل داده بر مبناي نوعي اولويت بندي ID پيام‌هاي شبكه انجام مي‌شود. قبل از بحث در خصوص اين اولويت بندي، جزئيات بيشتري از بيت‌هاي recessive و dominant باس شبکه CAN لازم است ارائه شود.

منطق معكوس

يك جنبه جالب باس CAN اين است كه از منطق معكوس با دو حالت recessive و dominant استفاده مي‌كند. شكل ۵ يك نمونه ساده شده از خروجي و ورودي‌هاي فرستنده و گيرنده شبکه CAN را نشان مي‌دهد. دنباله بيت “۱۰۱” به/از يك كنترلر يا ميكروكنترلر ارسال/دريافت مي‌شود. دقت كنيد وقتي كه كنترلر دنباله بيت‌‌ها را ارسال مي‌كند، اين بيت‌ها معكوس مي‌ شوند و بر روي خطوط CANH قرار داده مي‌شوند. خط CANL همواره معكوس خط CANH است. به جهت اينكه حكميت و اولويت بندي پيام‌ها قابل انجام باشد، يك وسيله در CAN همواره بايد آن چيزي كه ارسال مي‌كند و همچنین آن چيزي كه بر روي باس شبكه است (يعني داده اي كه مي‌خواهد دريافت بکند) را چك كند.

شكل ۵: خروجي/ورودي CAN

در شكل۶ بطور همزمان سيگنال‌هاي CANL و CANH نشان داده شده است و شما مي‌توانيد نحوه عملکرد باس CAN را مشاهده كنيد. ولتاژ تفاضلي مربوط به حالت‌هاي recessive و dominant سيگنال‌هاي CAN در نمودار پائين نشان داده شده است. سه بخش ابتدايی يعني t1 تا t3 مطابق دنباله بيت‌هاي “۱۰۱”شكل ۵ هستند. در ادامه ما از ديد يك درايور خروجي به اين مسئله نگاه مي‌كنيم. ورودي درايور در ابتدا يك بيت “۱” مي‌بيند و آن را به “۰” تبديل مي‌كند كه بر روي CANH قرار داده مي‌شود. خط CANL مكمل CANH را مي‌بيند و به سطح“۱” تغيير داده مي‌شود كه در بخش t1 شكل ۶ نشان داده شده است. دقت كنيد كه خطوط CANH و CANL داراي يك اختلاف ولتاژ آفست از هم هستند. از آنجايي كه خطوط CANH و CANL تقريبا داراي سطح ولتاژ مشابهي هستند، مقدار تفاضل CANH-CANL در طول قطعه زماني t1 بسيار به صفر نزديك است و اين همان چيزي است كه حالت recessive شبکه CAN ناميده مي‌شود.

بيت ارسالي بعدي “۰”  است. خط CANH مكمل يعني “۱” و خط CANL مكمل خط CANL يعني “۰” را مي‌گيرد. در اين‌جا مقادير ولتاژ خطوط CANH و CANL اختلاف قابل توجهي با هم دارند و در نتيجه ولتاژ تفاضلي (VDIFF) بزرگتر خواهد بود كه همان حالت dominant شبکه CAN است. از آنجايي كه يك بيت “۰” سطح ولتاژ باس را بالا مي‌برد و يك بيت “۱” آن را پائين مي‌ برد، ما مي‌گويم كه منطق شبكه CAN معكوس مي‌ شود. ورودي گيرنده نيز بطور مشابه عمل مي‌كند.

شكل ۶: حالت‌هاي recessive و dominant  شبکه CAN بوسيله ولتاژ تفاضلي نشان داده مي‌شوند.

اولويت بندي حكميت (Priority Arbitration)

همانطور كه قبلا گفته شده، هر چقدر ID يازده بيتي يك پيام كوچكتر باشد، بيانگر اولويت بالاتر آن پيام در مقايسه با ساير پيام‌ها است. وقتي كه هر نود يك بيت ارسال مي‌كند، باس را چك مي‌كند و بدين ترتيب متوجه پيام‌هاي با اولويت بالاتر كه بر روي باس قرار دارند نيز مي‌شود. وقتي يك نود شبكه بيت recessive ارسال مي‌كند ولي يك بيت dominant بر روي باس مي‌بيند، نود عقب نشيني می كند. اين خاصيت شبكه CAN به عنوان يك حكميت غير مخرب خواهد بود بطوریکه پيامي‌ كه داراي اولويت بالاتري است، بدون مشكل انتقال خواهد يافت.

دقت شود كه حالت recessive يعني منطق “۱” بازنده رقابت با حالت dominant  يعني منطق “۰” است و بر اساس همين مفهوم پيام حاوي ID با ارزش كمتر داراي اولويت بالاتري است. براي درك بهتر اين مسئله به شكل ۷ دقت نمایيد كه نشان مي‌دهد چگونه سه نود شبكه CAN در تلاش براي در اختيار گرفتن كنترل هستند. لازم به يادآوري است كه هر زماني كه يك بيت recessive نشان داده مي‌شود، كنترلر در حال ارسال “۱” مي‌باشد.  بيت dominant  نيز معادل ارسال “۰” خواهد بود. نود‌هاي ۱ تا ۳ همگي در حال ارسال دنباله اي از بيت‌ها هستند. اين دنباله بيت‌ها نشان دهنده ID پيام‌ها و اولويت آن‌ها هستند. در شروع، هر سه نود “۱” را ارسال مي‌كنند كه بر روي باس شبكه CAN به عنوان بيت recessive نشان داده مي‌شود. سپس هر سه نود “۰” يا همان بيت dominant را ارسال مي‌كنند. بيت سومي‌ كه بر روي باس قرار داده مي‌شود، “۱” است. در اين نقطه هيچ يك از نود‌ها تداخلي با ساير نود‌ها آشكار نمي‌كنند و در نتيجه هر سه نود به ارسال پيام ادامه مي‌دهند.

نود اول در بيت چهارم “۱” يا همان بيت dominant ارسال مي‌كند. نود دوم بيت recessive ارسال مي‌كند ولي به محض اينكه وجود بيت dominant بر روي باس را آشكار مي‌كند، فورا عقب نشيني مي‌كند. چرا كه متوجه شده که يك پيام با اولويت بالاتر در حال انتقال است. نود سوم به ارسال ادامه مي‌دهد چرا كه بيت ارسالي آن مشابه بيت dominant روي باس است. وقتي بيت پنجم بر روي باس قرار داده مي‌شود، نود سوم تشخيص مي‌دهد كه داراي اولويت پائين تري است و لذا ارسال را متوقف مي‌كند. هر دو نود دوم و سوم قبل از اينكه مجددا شروع به ارسال كنند، براي يك مدت زماني صبر مي‌كنند كه در نيمه راست شكل ۷ نشان داده شده است. (نود سوم برنده حكميت شده است). همانطور كه مشاهده مي‌شود، منطق “۰”  يا بيت dominant پيام‌هاي داراي ID كوچكتر اجازه برقراري حكميت در اولويت بندي پيام‌ها را مي‌دهد.

شكل ۷: حكميت در باس شبكه CAN بوسيله ولتاژ‌هاي تفاضلي

 نتيجه گيري

در اين مقاله شبكه CAN معرفي گرديد. CAN  يك باس ارتباطي سريال مقاوم است كه اغلب در خودرو‌ها و محيط‌هاي صنعتي بكار می رود. CAN از سيگنال‌هاي تفاضلي استفاده مي‌كند و لذا عملكرد آن در برابر نويز مقاومتر خواهد بود. تبادل غير مخرب پيام در باس شبكه با استفاده از يك طرح حكميت اولويت بندي ممكن ساخته است. CAN بخوبي براي محيط‌هاي پر خطر و يا محيط‌‌هاي داراي تداخلات الكترومغناطيسي قابل استفاده است. CAN يك راه حل براي هر نوع پروژه‌اي خواه يك زيردريايي كنترل از راه دور، كارخانه مخمر با سنسور‌ها و پمپ‌ها يا كامپيوتر خودرو است.

ارسال یک پاسخ

لطفا دیدگاه خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید