کن باس(CAN bus) یک شبکه ناحیه کنترلی (Controller Area Network) یک استاندارد bus است که قابلیت برقراری ارتباط بین میکروکنترلر ها و دستگاه ها بدون نیاز به کامپیوتر میزبان را ایجاد می کند . این یک پروتکل مبتنی بر پیام است که در واقع برای سیم کشی برق چندگانه در خودروها به منظور صرفه جویی در مصرف مس ایجاد شده است، اما در بسیاری از موارد دیگر نیز کاربرد دارد .
برای هر دستگاه ، داده ها در یک فریم به صورت متوالی ارسال می شوند ، اما اگر بیش از یک دستگاه به طور همزمان داده ارسال کنند ، دستگاه با اولویت بالاتر می تواند به ارسال ادامه دهد و سایر دستگاه ها عقب نشینی می کنند . فریم ها توسط همه ی دستگاه های موجود دریافت می شود .
باس استاندارد CAN به دلیل مزایای کلیدی زیر، عملاً در تمام وسایل نقلیه و بسیاری از ماشینها استفاده میشود:
1) ساده و کم هزینه
ای سی یو ها از طریق یک سیستم CAN واحد به جای خطوط سیگنال آنالوگ پیچیده مستقیم ارتباط برقرار می کنند در نتیجه باعث کاهش خطاها، وزن، سیم کشی و هزینه ها می شوند.
2) دسترسی آسان
گذرگاه CAN یک "نقطه ورود" را برای برقراری ارتباط با تمام ECU های شبکه فراهم می کند که امکان تشخیص مرکزی، ثبت داده ها و پیکربندی را فراهم می کند.
3) فوق العاده قوی
این سیستم در برابر اختلالات الکتریکی و تداخل الکترومغناطیسی قوی است که برای کاربردهایی اهمیت ایمنی بسیار بالا باشد (مانند وسایل نقلیه) ایده آل است.
4) کارآمد
فریمهای CAN بر اساس شناسه(ID) اولویتبندی میشوند تا دادههای اولویتدار فوراً بدون ایجاد وقفه در سایر فریمها یا خطاهای CAN به گذرگاه دسترسی پیدا کنند.
توسعه سیستم کن باس در سال ۱۹۸۳ در شرکت بوش آغاز شد.[۱] پروتکل به طور رسمی در سال ۱۹۸۶ در انجمن مهندسان خودرو (SAE) در دیترویت، میشیگان منتشر شد. اولین تراشه کنترلکننده CAN که توسط اینتل در سال ۱۹۸۷ و سپس توسط فیلیپس تولید و معرفی شده اند .
مرسدس بنز W140 عرضه شده در سال ۱۹۹۱، اولین خودروی تولیدی دارای سیستم سیم کشی چندگانه بر اساس CAN بود.
بوش نسخه های متعددی از مشخصات CAN را منتشر کرد که آخرین نسخه آن در سال ۱۹۹۱ به عنوان CAN 2.0 منتشر شد .این مشخصات دارای دو قسمت است . قسمت A برای فرمت استاندارد با شناسه ۱۱ بیتی و قسمت B برای فرمت توسعه یافته با شناسه ۲۹ بیتی است . دستگاه CAN که از شناسه ۱۱ بیتی استفاده کند ، به طور معمول CAN 2.0A و دستگاه CAN که از شناسه ۲۹ بیتی استفاده کند ، به طور معمول CAN 2.0B نامیده میشوند . این مشخصات و استاندارد ها به صورت رایگان در دسترس هستند .
در سال ۱۹۹۳، سازمان بین المللی استاندارد (ISO) استاندارد CAN ISO 11898 را منتشر کرد که سپس به دو بخش تغییر یافت . یک بخش ، لایه پیوند داده ها را پوشش می دهد و بخش دیگر ، لایه فیزیکی CAN را برای CAN با سرعت بالا پوشش می دهد .
بوش نیز همچنان در گسترش استانداردهای CAN فعالیت می کند . در سال 2012، بوش CAN FD 1.0 یا CAN با نرخ داده انعطاف پذیر را منتشر کرد.
CAN Bus یکی از پنج پروتکل مورد استفاده در استاندارد های تشخیص خودرو OBD)-II) است .
می توان به کاربرد آن در وسایلی مانند : وسایل نقلیه مسافربری ، کامیون ، اتوبوس ، کشتی ، تجهیزات کشاورزی ، تجهیزات پزشکی ، آسانسور ، پله برقی ، پرینتر های سه بعدی و... اشاره کرد .
خودروهای مدرن ممکن است تا ۷۰ واحد کنترل الکترونیکی (ECU) برای زیر سیستمهای مختلف داشته باشند. به طور معمول بزرگرترین پردازنده ، واحد کنترل موتور می باشد .بعضی دیگر نیز برای رانندگی اتوماتیک ، سیستم کمک راننده پیشرفته (ADAS) ، کیسه هوا ، ترمز ضد قفل ، کروز کنترل، سیستم های صوتی ، در و پنجره ، تنظیم آینه و باتری و... استفاده می شود . یک زیرسیستم ممکن است نیاز به کنترل محرک ها و یا دریافت بازخورد از حسگرها داشته باشد. استاندارد CAN برای رفع این نیاز ایجاد شد. یکی از مزایای مهم این است که اتصال بین سیستمهای مختلف نقلیه میتواند طیف گسترده ای از ویژگی های ایمنی، اقتصادی و راحتی را با استفاده از نرمافزارها به تنهایی اجرا کند . در حالی که موارد قدیمی ، هزینه و پیچیدگی زیادی را به همراه داشت .
CAN یک استاندارد گذرگاه سری چندگانه برای اتصال واحدهای کنترل الکترونیکی (ECUs) که با عنوان گره نیز شناخته می شوند، است . به دو یا چند گره برای ایجاد ارتباط در شبکه CAN نیاز است. یک گره ممکن است با دستگاه هایی با منطق دیجیتال ساده ارتباط برقرار کند ، مثل PLD، یا از طریق FPGA به یک کامپیوتر که نرم افزار گسترده ای را اجرا می کند. چنین کامپیوتری ممکن است دروازه ای باشد که به یک کامپیوتر عمومی (مانند لپ تاپ) اجازه می دهد که از طریق یک پورت USB یا اترنت با دستگاه های موجود در شبکه CAN ارتباط برقرار کند.
همه گره ها از طریق یک گذرگاه دو سیم معمولی به یکدیگر متصل می شوند . سیم ها با مقاومت مشخصه اسمی 120 Ω هستند.
هر گره نیاز به یک سری موارد مشخص دارد . این موارد شامل :
پردازنده میزبان تصمیم می گیرد که پیام های دریافتی چه معنی ای دارند و چه پیام هایی را می خواهد انتقال دهد . سنسورها، محرک ها و تجهیزات کنترل می توانند به پردازنده میزبان متصل شوند.
که معمولا بخشی جدایی ناپذیر از یک میکروکنترلر است .
روند دریافت : کنترلر CAN بیت های سریالی دریافتی از گذرگاه را تا زمانی که یک پیام کامل دسترس باشد، ذخیره سازی می کند .
روند ارسال: پردازنده میزبان ، پیام های انتقال را به کنترلر CAN ارسال می کند ، که در صورت آزاد بودن گذرگاه ، بیت ها را به صورت سریالی به گذرگاه ارسال می کند.
این فرستنده و گیرنده باید توسط استانداردهای ISO 11898-2/3 تعریف شده باشد .
روند دریافت: جریان داده را از سطوح گذرگاه CAN به سطوحی کنترلر CAN استفاده می کند ، تبدیل می کند . به طور معمول دارای یک سری مدارهای محافظ برای محافظت از کنترلر CAN می باشد .
روند انتقال: جریان داده را از کنترلر CAN به سطوح گذرگاه CAN تبدیل می کند.
هر گره قادر به ارسال و دریافت پیام ولی نه به طور همزمان می باشد . یک پیام یا فریم در اصل شامل یک شناسه ، که نشان دهنده اولویت پیام و حداکثر هشت بایت داده است، می باشد .
دستگاه هایی مانند حسگرها، محرک ها و تجهیزات کنترلی توسط یک شبکه CAN متصل می شوند. این دستگاه ها از طریق پردازنده میزبان، کنترلر CAN و فرستنده گیرنده CAN به گذرگاه متصل می شوند.
CAN یک پروتکل با سطح پایین می باشد و به طور ذاتی از ویژگی های امنیتی پشتیبانی نمی کند. همچنین هیچ رمزگذاری در پیاده سازی های استاندارد CAN نیز وجود ندارد. در نتیجه برای بیشتر پیادهسازیها انتظار می رود که برنامهها مکانیسمهای امنیتی خود را ایجاد کنند .