LIN مخفف عبارت Local Interconnect Network و یک جایگزین بسیار ارزانتر برای پروتکل CAN BUS برای دیاگ در خودرو میباشد. این پروتکل از نوع سریال بوده و امروزه در اکثر خودروهای مدرن بکار میرود. پس یادگیری این پروتکل ضروری میباشد. در این مقاله قصد داریم تا مفاهیم پایهای این پروتکل را معرفی کنیم، نحوه دریافت اطلاعات را بررسی کنیم و آن را با پروتکل CAN مقایسه کنیم.
LIN BUS چیست؟
لین باس (LIN BUS) در واقع یک مکمل برای شبکه CAN میباشد. این پروتکل کارایی و اطمینان کمتری دارد، اما از لحاظ هزینه، ارزان تر است.
مروری سریع بر لین باس (LIN BUS)
یک انتخاب کم هزینه است. (اگر سرعت و درصد خطا مهم نباشد)
اغلب در خودرو برای شیشه بالابر برقی، برف پاک کن، سیستم تهویه هوا و… بکار میرود.
یک گروه LIN BUS از یک MASTER تشکیل شده و میتواند تا 16 Slave را به آن اضافه کرد.
ارتباط تک سیمه است! (بدون احتساب سیم زمین GND)
سرعت باس 1 تا 20 کیلوبیت بر ثانیه و حداکثر تا 40 متر
برنامه ریزی زمانی همراه با تأخیر های تضمین شده
طول داده متغیر (2، 4، 8 بایت)
پشتیبانی از تشخیص خطا، چک سام و کانفیگ
ولتاژ عملیاتی 12 ولت
لایه فیزیکی بر پایه ISO 9141 (K-line) میباشد. (قبلاً در سیسوگ در رابطه با K-Line آموزش منتشر شده است)
پشتیبانی از حالت خواب (Sleep) و بیدار (Wakeup)
اغلب خودروهای جدید بیش از ده گره LIN دارند.
مقایسه LIN BUS با CAN BUS
CAN از یک زوج سیم به هم پیچیده و شیلد شده 5 ولتی استفاده میکند. در حالی که LIN تنها از تک سیم 12 ولتی استفاده میکند.
یک LIN در حالت MASTER میتواند همانند یک دروازه برای CAN عمل کند.
LIN همانند پورت سریال بهصورت قطعی کار میکند. یعنی هیچ رویدادی در آن وجود ندارد و حکمیتی در باس آن نیز وجود ندارد.
( در مورد توضیحات مربوط به حکمیت و خطاهای ارسال و دریافت در ارتباط CAN_BUS قبلاً در سیسوگ مقالهای منتشر شده است.)
خوشههای LIN تنها یک MASTER دارند. در حالی که CAN ممکن است چندین MASTER داشته باشد.
CAN از 11 تا 29 بیت برای شناسایی استفاده میکند. در حالی که ID در CAN تنها 6 بیت است.
CAN میتواند تا سرعت 1 مگابیت در ثانیه اطلاعات را جابجا کند، در حالی که LIN حداکثر تا 20 کیلوبیت بر ثانیه بیشتر نمیباشد.
تاریخچه LIN BUS
1999: LIN 1.0 توسط کنسرسیوم LIN منتشر شد. (BMW, VW, Audi, Volvo, Mercedes-Benz, Volcano Automotive & Motorola)
2000: پروتکل LIN بروز رسانی شد (LIN 1.1, LIN 2.2)
2002: LIN 1.3 منتشر شد که در آن لایه فیزیکی تغییر کرد.
2003: LIN 2.0 منتشر شد و تغییرات بزرگی در آن صورت گرفت که تا امروز از آنها استفاده میشود.
2006: LIN 2.1 منتشر شد.
2010: LIN 2.2A منتشر شد و هم اکنون یکی از گستردهترین نسخههای اجرا شده است.
2010-12: شبکه LIN به عنوان SAE J2602 و بر پایهی LIN 2.0 استاندارد سازی شد.
2016: CiA (CAN in Automation) نسخهی استاندارد شدهی LIN به عنوان ISO 17987:2016
مثال هایی از استفاده LIN BUS در خودرو
امروزه، باس LIN یک استاندارد واقعی در تمام وسایل نقلیه مدرن است. به عنوان نمونه موارد زیر در خودرو استفاده میشود:
هدایت خودرو: فرمان: کنترل کروز، برف پاک کن، سیستم تهویه و رادیو
راحتی:سنسورهای دما، سانروف، نور و رطوبت
پیشرانه: سنسورهای موقعیت، سرعت و فشار
موتور: موتورهای کوچک، فنهای خنک کننده
وضعیت هوا: موتورها، کنترل پنل (دکمه AC معمولاً پیچیدهترین قسمت است)
درب: آینههای جانبی، پنجرهها، کنترل صندلی، قفل
صندلیها: موتورهای موقعیتی، سنسورهای فشار
سایر: برف پاک کن پنجره، سنسور باران، چراغهای جلو، جریان هوا
علاوه بر این، باس های LIN در سایر صنایع نیز کاربرد دارند. به عنوان مثال:
لوازم خانگی: ماشین لباسشویی ، یخچال ، اجاق گاز
اتوماسیون صنعتی: تجهیزات ساخت ، ماشین آلات فلزی
مثال: اگر در صندلی راننده اتومبیل خود نشستهاید، میتوانید پنجره سمت شاگرد را پایین بیاورید. برای این کار از همان جا دکمه شیشه بالابر شاگرد را در کنار خود فشار میدهید. پیامی از طریق خوشه LIN 1 به باس CAN ارسال میشود. در طرف دیگر یک پیام از طرف باس CAN به MASTER شبکه LIN 2 ارسال میشود و پنجره در صندلی جلو راست شروع به پایین رفتن میکند.
شبکه LIN BUS چگونه کار می کند؟
گره MASTER بهطور مداوم به هر یک از SLAVE ها در خواست اطلاعات میکند و هر یک از گرهها در صورت دریافت پیام، پاسخ خود را ارسال میکنند.
پایهی لین باس خیلی ساده است، اما با هر بروز رسانی، کمی پیچیدهتر میشود.
در زیر ما فریمهای LIN و شش فرمت مختلف آن را بررسی میکنیم.
فریم پیام در LIN BUS
در سادهترین حالت، پیام LIN BUS از یک هدر (HEADER) و یک پاسخ تشکیل شده است.
معمولاً لینی که در حالت MASTER قرار دارد، یک هدر به LIN BUS ارسال میکند. این باعث میشود که SLAVE یک پاسخ با طول حداکثر 8 بایت ارسال کند. این موضوع را میتوانید بهصورت خلاصه در تصویر بالا مشاهده کنید.
Break: با نام مستعار SBF (Sync Break Field) حداقل 1 + 13 بیت طول دارد. بسیاری از مواقع در عمل طول آن تا 2 + 18 بیت نیز میرسد. این سیگنال همانند سیگنال شروع یا start of frame عمل میکند و همهی گرههای داخل BUS را متوجه خود میکند.
Sync: این قسمت شامل 8 بیت با مقدار 0x55 یا همان 0x01010101 باینری میباشد. این ساختار به گرهها اجازه میدهد تا مدت زمان میان لبه بالا رونده و پایین رونده و همچنین BAUD RATE گره ارسال کننده (MASTER) را تشخیص بدهند. در واقع همان طور که از اسم این قسمت مشخص است، وظیفه هماهنگ سازی میان گرهها را به عهده دارد.
Identifier: این 6 بیت طول دارد و 2 بیت نیز در انتها برای Parity در نظر گرفته شده است. این قسمت در واقع شامل یک شناسه برای پیام ارسالی و شناسه LIN مورد نظر است که باید به این پیام پاسخ بدهد. Slave ها مقدار این ID را با توجه به مقدار Parity اعتبار سنجی می کنند و بصورت زیر عمل می کنند:
1- مابقی اطلاعات ارسالی را نادیده میگیرند.
2- به اطلاعات ارسالی دیگر گرهها گوش میکنند.
3- اطلاعات را در پاسخ به هدر، ارسال میکنند.
معمولاً در یک زمان، تنها یک Slave برای درخواست اطلاعات فراخوانی میشود. این امر باعث میشود تا احتمال برخورد اطلاعات با یکدیگر صفر شود. به همین خاطر، نیازی به داوری و حکمیت در LIN BUS وجود ندارد. به یاد داشته باشید که با 6 بیت، تنها میتوان تا 64 آی دی را صدا زد. از این تعداد، شماره 60 و 61 برای عیب یابی (دیاگ) استفاده میشود و شمارههای 62 و 63 رزرو شدهاند.
Data: وقتی یک LIN که در حالت Slave است فراخوانی شود، میتواند اطلاعاتی را در قالب 2، 4 یا 8 بایت ارسال کند. از LIN نسخه 2.0 به بعد، طول دیتا به رنج ID وابستگی پیدا کرده است. یعنی از آی دی 0-31 با 2 بایت، از 32-47 با 4 بایت و 48-63 با 8 بایت پاسخ میدهند.
Checksum: همانند CAN، چک سام مقدار فریم را ارزیابی میکند. در LIN 1.3 از حالت کلاسیک استفاده میشود. در این حال چک سام 8 بیت دارد و تنها به مجموع بایتهای داده بستگی دارد. در حالی که در چک سام بهبود یافته (Enhanced cheksum) آی دی نیز در نظر گرفته میشود.
فواصل زمانی
همان طور که در تصویر بالا میبینید، یک فاصله میان درخواست تا پاسخ (Responce Space) وجود دارد و یک فاصله نیز میان هر بایت دیتا (Inter Byte) وجود دارد. از آن جایی که SLAVE ها در LIN ارزان قیمت هستند، ممکن است گاهی گره SLAVE در ارسال پاسخ تأخیر به وجود بیاورد. به همین دلیل میان هدر تا پاسخ فاصله زمانی کافی داده میشود تا گره SLAVE پاسخ خود را ارسال کند.
فریم های مختلف در LIN
انواع مختلفی از فریمهای LIN وجود دارد، اگرچه در عمل بخش اعظم ارتباطات از طریق فریمهای بی قید و شرط انجام میشود.
توجه داشته باشید که در تمامی فریمهای زیر، ساختار پایه LIN وجود دارد و تفاوتها تنها در زمان بندی و محتویات داده است. 6 فریم وجود دارد که در زیر بهطور خلاصه طرح کلی هر فریم توضیح داده شده است.
1- فریم بی قید و شرط (Unconditional Frames)
فریم بی قید و شرط بطور پیش فرض وجود دارد. در این روش MASTER یک هدر ساده برای درخواست اطلاعات از یک Slave خاص ارسال میکند و Slave در واکنش به آن پاسخ میدهد.
2- فریم رویداد محور (Event Triggered Frames)
در فریم رویداد محور Master برای حفظ پهنای باند، چندین Slave را بصورت یک به یک صدا می زند. اما Slave ها تنها هنگامی جواب میدهد که اطلاعاتشان بروز شده باشد. Slave شناسه ساخت (Product ID) خود را در اولین بایت داده قرار میدهد. اگر چند Slave بخواهند بطور همزمان پاسخ بدهند، اطلاعات با یکدیگر برخورد میکنند و Master به حالت پیش فرض خود، یعنی فریم بی قید و شرط باز میگردد.
3- فریم پراکنده (Sporadic Frames)
در این حالت تنها Master ارسال کننده است و اگر متوجه بشود که Slave خاصی دارای اطلاعات جدید است، خود Master همانند slave رفتار میکند و اطلاعات پاسخ را در جواب هدر خود ارسال میکند. این کار به گرههای Slave اجازه میدهد تا اطلاعات داینامیک خود را ارسال کنند.
4- فریم های خطایابی (Diagnostic Frames)
از LIN 2.0 به بعد شناسههای 60 و 61 برای خواندن اطلاعات خطایابی از گرههای Master یا Slave بکار میروند. این فریم اجازه میدهد تا گرهها 8 بایت داده خطایابی به همراه Carry و یا اطلاعات مربوط به پیکربندی خود را ارسال کنند. آی دی 60 برای فریم درخواست Master و 61 برای فریم پاسخ Slave استفاده میشود.
5- فریم های تعریف شده کاربر (User Defined Frames)
آی دی 62 یک فریم تعریف شده توسط کاربر است که ممکن است هر نوع دادهای را شامل شود.
6- فریم های رزرو شده
فریمهای رزرو شده دارای آی دی 63 هستند و نباید در شبکههای LIN 2.0 استفاده شوند.
تراشه TJA1020
تراشه TJA1020 ساخت شرکت فیلیپس یک رابط میان لایه فیزیکی شبکه LIN BUS و میکروکنترلر شما در حالت Master و Slave است. در واقع شما میتوانید با استفاده از دو پایه Tx و Rx میکروکنترلر خود، به لایه فیزیکی LIN BUS خودرو متصل شوید! دیتاشیت این آی سی را میتوانید در انتهای مطلب دانلود کنید.
برخی از ویژگیهای این تراشه:
افزایش سرعت انتقال اطلاعات تا 20Kbaud (حداکثر سرعت باس LIN)
کمترین تداخل مغناطیسی (EME)
بیشترین ایمنی الکترومغناطیسی (EMI)
پشتیبانی از توابع K-Line
تطابق با ولتاژ 3.3 و 5 ولت
مصرف توان بسیار پایین
مطالعه بیشتر
برای مطالعه بیشتر میتوانید PDF هایی را که در انتهای این مقاله پیوست شدهاند را دانلود و مطالعه کنید. کتاب اول در واقع یک پاورپوینت است که LIN BUS را به زبان ساده و همراه با توضیح و مثال برای شما توضیح داده است. همچنین PDF دوم توضیحات مربوط به شرکت ST در رابطه با LIN BUS میباشد. توصیه میکنم حتماً این دو کتاب مفید را که به زبان انگلیسی هستند، دانلود و مطالعه بفرمایید.
بسیار عالی، خدا قوت
بسیار عالی بود بی نهایت متشکرم
سلام.
مطلب عالی، توضیحات عالی، سایت بسیار خوبی دارید، آن هم در زمانه ای که بسیاری از وب سایت ها فقط در فکر انتشار مطالب زرد و بی فایده هستند، از زحمات شما تشکر میکنم. بابت معرفی این سیستم ارتباطی جدید هم ممنون.
سلام ممنون از شما
سلام. ممنون. مطلب مفیدی هست، مثل همیشه. واحد USART در خیلی از میکروکنترلرهای STM32 و فکر می کنم STM8 دارای مد کاری LIN هست که پیاده سازی این پروتکل رو خیلی راحت کرده. حتی توی مثال های SDK میکروها در قسمت USART، برنامه های سمپل برای ارتباط LIN وجود داره.
ممنون
درود بر شما!
ممنون از نظر و اطلاعات خوبتون.
سپاس بابت معرفی این سیستم .
خواهش میکنم
سلام
تشکر بابت مقاله معرفی.
TJA1020 درسته.
ممنون از شما تصحیح شد