پروتکل CANopen یکی از پروتکلهای محبوب و پرکاربرد در حوزه اتوماسیون صنعتی به شمار میرود. این پروتکل بهعنوان یک شبکه ارتباطی باز و استاندارد، امکان تبادل دادهها بین دستگاهها را بهصورت یکپارچه، مؤثر و در زمان واقعی (Real Time) فراهم میکند. با ارائه سازوکارهای ارتباطی مختلف که متناسب با کاربردها و سناریوهای متفاوت طراحی شدهاند، این پروتکل در سیستمهای اتوماسیون صنعتی و ساختمانی، وسایل نقلیه تجاری، تجهیزات پزشکی، کاربردهای دریایی، سیستمهای ریلی و غیره مورد استفاده قرار میگیرد. استاندارد CANopen توسط گروه بینالمللی کاربران و تولیدکنندگان تحت عنوان CAN in Automation (CiA) مدیریت میشود و بهعنوان استاندارد EN 50325-4 شناخته میشود. در این مقاله، ما مقدمهای جامع بر پروتکل CANopen ارائه میدهیم و به موشکافی پروتکول CANopen پرداخته و جنبههای مختلف آن را بررسی کرده و به ساختار درونی آن خواهیم پرداخت.
CANopen یک پروتکل پرکاربرد در بخش خودرو است. این یک پروتکل با سرعت بالا است که به دستگاه هایی مانند حسگرها، محرک ها و سیستم های کنترل اجازه می دهد با یکدیگر ارتباط برقرار کنند. CANopen یک پروتکل قابل اعتماد برای برنامه هایی است که نیاز به تبادل اطلاعات در زمان واقعی دارند.
برای درک نحوه عملکرد پروتکل CANopen، ضروری است که نگاشت آن به مدل OSI (Open Systems Interconnection) را بشناسیم. مدل OSI یک چارچوب مفهومی است که عملکردهای یک شبکه ارتباطی را تعریف میکند.
جایگاه CANopen لایههای OSI
پروتکل CANopen که بهعنوان یک پروتکل سطح بالا شناخته میشود، عمدتاً در لایه اپلیکیشن (Application Layer) مدل OSI فعالیت میکند. این پروتکل از خدمات ارائهشده توسط لایه پیوند داده (Data Link Layer) بهره میبرد و برای برقراری ارتباط بین دستگاهها از استاندارد CAN (CAN bus) استفاده میکند. از آنجایی که لایههای میانی در این ساختار حذف شدهاند، پیادهسازی CANopen نسبتاً آسان است و عملکرد بلادرنگ (Real Time) را ارائه میدهد. بر بستر چارچوب ارتباطی CANopen، پروفایلهای دستگاه (Device Profiles) نیز پشتیبانی میشوند که در ادامه به آنها خواهیم پرداخت.
پروتکل CANopen برای تسهیل ارتباط بین دستگاهها از یک فرمت پیام ساختارمند استفاده میکند که در ادامه بهطور کامل شرح داده خواهد شد.
قالب پکت CANopen
هر پیام در پروتکل CANopen شامل یک شناسه CAN (CAN Identifier) است که نوع پیام و دستگاه گیرنده آن را مشخص میکند. شناسه استاندارد ۱۱ بیتی در گذرگاه CAN به دو بخش تقسیم میشود: ۴ بیت کد عملکرد (Function Code) و ۷ بیت شناسه گره (Node ID).
کد عملکرد نشان میدهد که چه نوع بار اطلاعاتی (Payload) در بخش داده پیام منتقل میشود. بخش داده (Payload) پیام شامل اطلاعات واقعی است که باید بر اساس کد عملکرد تفسیر (Decode) شود.
مشخصات پروتکل CANopen یک مدل استاندارد دستگاه (Standard Device Model) را تعریف میکند که میتواند توسط دستگاههایی که برای کاربردهای گوناگون طراحی شدهاند، پیادهسازی شود. مدل دستگاه CANopen در تصویر زیر به نمایش درآمده است.
مدل معماری CANopen
ماژول ارتباطی (Communication module) وظیفهی رسیدگی به انواع مختلف پروتکلهایی که در دستگاه CANopen پشتیبانی میشوند را بر عهده دارد.
Object Dictoniary شامل ارجاعاتی (ایندکسها) از تمام انواع دادهها، پارامترهای ارتباطی و پارامترهای کاربردی است.
ماژول کاربردی (Application module) رابطی است به پیادهسازی عملکرد واقعی دستگاه و Object Dictoniary اشیا را بهروزرسانی میکند.
در بالای گذرگاه CAN بهعنوان واسط ارتباطی پایه، پروتکل CANopen از پروتکلهای ارتباطی مختلفی پشتیبانی میکند. این پروتکلها عملکرد و قابلیتهای بیشتری را به شبکه CANopen اضافه میکنند. برخی از پروتکلهای رایج در CANopen شامل موارد زیر هستند:
PDO (Process Data Object)،
SDO (Service Data Object)،
NMT (Network Management)، و
SYNC (Synchronization).
هر پروتکل هدف خاصی را دنبال میکند، مانند تبادل دادهی بلادرنگ، پیکربندی و پارامتردهی، مدیریت شبکه، و همگامسازی دستگاهها. در دسترس بودن این پروتکلها، انعطافپذیری و قابلیت تطبیق CANopen را در کاربردهای مختلف اتوماسیون صنعتی افزایش میدهد.
این پروتکل امکان دسترسی مستقیم به Object Dictoniary اشیای سرور را فراهم میکند. هر دو عملیات خواندن و نوشتن پشتیبانی میشوند. معمولاً، حداقل یک کانال SDO باید توسط هر دستگاه CANopen برای استفاده عملیاتی پشتیبانی شود.
دادههای پردازشی امکان انتقال بلادرنگ دادهها، مانند ورودیهای حسگر و خروجیهای دستگاه گره را فراهم میکنند. در حالی که SDO یک مکانیسم درخواست/پاسخ است، PDO نیازی به تأییدیه ندارد و طول قاب میتواند انعطافپذیر باشد.
PDOها دارای شناسههای CAN پایینتری هستند تا اولویت بالاتری نسبت به SDOها داشته باشند.
یک PDO انتقالی (TPDO) نشاندهنده دادهای است که از یک گره منبع میآید، و یک PDO دریافتی (RPDO) دادهای است که توسط گره مصرف میشود.
پروتکل NMT کنترل وضعیت ارتباطی هر گره را امکانپذیر میکند. هر یک از آنها میتوانند آغاز، متوقف یا بازنشانی شوند. بسته به وضعیت گره CANopen، سایر پروتکلها مجاز یا غیرمجاز میشوند.
جدا از پروتکلهای بالا، CANopen پروتکلهای خاصی را نیز ارائه میدهد:
با پشتیبانی از:
Object Dictoniary در CANopen یکی از اجزای کلیدی پروتکل است. این Object Dictoniary بهعنوان مخزن اشیای دادهای عمل میکند که دستگاههای شبکه میتوانند به آن دسترسی داشته باشند. ویژگیهای عملکردی که توسط گره پشتیبانی میشود باید از طریق یک Object در Object Dictoniary افشا شود.
هر شیء با یک ایندکس ۱۶ بیتی همراه است که منحصربهفرد و از پیش تعریفشده است.
هر Object دارای یک ویژگی است که مشخص میکند آیا قابلیت خواندن/نوشتن، فقطخواندنی یا فقطنوشتنی دارد.
نوع داده Object نیز مشخص میشود.
اگر یک متغیر مرکب باشد، میتوان از یک زیرایندکس ۸ بیتی برای شناسایی فیلد داخل ساختار استفاده کرد.
آدرس شروع (Start Index) | End Index | Object Group |
---|---|---|
۰x0000 | ۰x0000 | رزرو شده (Reserved) |
۰x0001 | ۰x009F | انواع دادهای ایستا و پیچیده (Static and complex data types) |
۰x00A0 | ۰x0FFF | رزرو شده (Reserved) |
۰x1000 | ۰x1FFF | پروفایلهای ارتباطی (Communication profiles) |
۰x2000 | ۰x5FFF | مخصوص سازنده (Manufacturer-specific) |
۰x6000 | ۰x9FFF | پروفایلهای استاندارد دستگاه (Standardized device profiles) |
۰xA000 | ۰xFFFF | رزرو شده (Reserved) |
پروتکل CANopen مکانیسمهای ارتباطی مختلفی را فراهم میکند که تعیین میکنند دستگاهها چگونه با یکدیگر تعامل داشته باشند. این مکانیسمها شامل مدلهای Client/Server و Master/Slave و Producer/Consumer (تولیدکننده/مصرفکننده) هستند.
در مدل Client/Server، یک دستگاه Client، یک درخواست را به یک دستگاه سرور ارسال میکند، که سپس آن درخواست را پردازش کرده و پاسخ را به Clientبازمیگرداند.
مدل Master/Slave شامل یک دستگاه مستر است که تبادل داده با دستگاههای اسلیو را کنترل میکند.
در نهایت، مدل Producer/Consumer به دستگاهها اجازه میدهد که دادهها را بهصورت غیرهمزمان تبادل کنند، که این موضوع باعث افزایش انعطافپذیری و کارایی ارتباطات در شبکه CANopen میشود.
با وجود این مجموعه گسترده از مکانیسمهای ارتباطی، میتوان انواع مختلفی از شبکهها را بر اساس نیازهای کاربردی ایجاد کرد.
پروفایلهای دستگاه در CANopen، رفتار و عملکرد خاص دستگاهها در یک شبکه CANopen را تعریف میکنند. این پروفایلها ویژگیهای اجباری و اختیاری را که یک دستگاه باید برای سازگاری با سایر دستگاهها پشتیبانی کند، مشخص میکنند.
پروفایلها یک روش استاندارد شده را در اختیار تولیدکنندگان قرار میدهند تا دستگاههایی طراحی و پیادهسازی کنند که با پروتکل CANopen سازگار باشند.
با پایبندی به این پروفایلها، تولیدکنندگان دستگاهها میتوانند ارتباط و یکپارچگی بدون نقص بین دستگاههای خود و شبکه CANopen را تضمین کنند.
پروفایلهای استاندارد شامل پروفایلهای ارتباطی (مانند DS 301، DS 302) هستند که مشخص میکنند گره (Node) چگونه باید در شبکه رفتار کند.
پروفایلهای دستگاه، کلاس خاصی از دستگاههای عملکردی مانند موارد زیر را تعریف میکنند:
شماره | نام |
---|---|
CiA 401 | پروفایل برای دستگاههای ورودی/خروجی (I/O devices) |
CiA 402 | پروفایل برای درایوها و کنترل حرکت (drives and motion control) |
CiA 404 | پروفایل برای دستگاههای اندازهگیری و کنترلهای حلقهبسته |
CiA 406 | پروفایل برای انکودرها (encoders) |
CiA 408 | پروفایل برای فناوری قدرت سیال: شیرهای تناسبی و انتقالهای هیدرواستاتیکی |
CiA 412 | پروفایل برای دستگاههای پزشکی (medical devices) |
CiA 419 | پروفایل برای شارژرهای باتری (battery chargers) |
CiA 442 | پروفایل برای راهاندازهای موتور سازگار با استاندارد IEC 61915-2 |
CiA 452 | پروفایل برای کنترل حرکت PLCopen |
CiA 458 | پروفایل برای اندازهگیری انرژی (energy measurements) |
CiA 461 | پروفایل برای دستگاههای توزین (weighing devices) |
CiA 462 | پروفایل برای دستگاههای تشخیص اقلام (item detection devices) |
در مقابل پروفایل دستگاه که ویژگیهای گره خاصی را مشخص میکند، پروفایل کاربردی CiA (CiA Application Profile) کل شبکه را تعریف مینماید. این پروفایل میتواند دستگاههای مجازی (Virtual Devices) را نیز تعریف کند تا عملکرد صحیح کل سیستم را ممکن سازد.
شماره | نام |
---|---|
CiA 415 | پروفایل برای سیستمهای حسگر در ماشینآلات راهسازی و خاکبرداری |
CiA 416 | پروفایل برای کنترل درب ساختمانها |
CiA 417 | پروفایل برای سیستمهای کنترل آسانسور |
CiA 423 | پروفایلها برای سیستمهای محرکه ریلی |
CiA 426 | پروفایل برای کنترل نورپردازی بیرونی وسایل نقلیه ریلی |
CiA 434 | پروفایل برای سیستمهای اتوماسیون آزمایشگاهی |
CiA 447 | پروفایل برای دستگاههای جانبی ویژه خودروهای خاص |
CiA 454 | پروفایل برای سیستمهای مدیریت انرژی |
CiA 455 | پروفایل برای دستگاههای حفاری |
استاندارد رسمی CANopen بهصورت خاص نوع فیزیکی کانکتورها را مشخص نمیکند (برخلاف استانداردهایی مانند J1939 یا OBD2). با این حال، مستندات مرتبط مانند CiA 303-1 (که بعدها با CiA 106 جایگزین شد) پیشنهادهایی برای پینآوت (pin-out) توصیهشده برای CANopen (و بهطور کلی برای CAN) ارائه میدهند، از جمله موارد زیر:
کانکتور DB9 یکی از پرکاربردترین کانکتورهای عمومی مورد استفاده در CANopen است و نخستین کانکتور پیشنهادی در سند اولیهی CiA 303-1 بوده است، که پینآوت آن نیز در همان سند نمایش داده شده است. این کانکتور اغلب امکان اتصال دستگاههای خارجی به شبکههای CANopen را فراهم میکند. علاوهبراین، امروزه به استاندارد de facto برای سختافزارهای عمومی CAN bus تبدیل شده است.
کانکتور D-SUB 9 پین (DB9)
یکی دیگر از کانکتورهای پرکاربرد، کانکتور M12 پنجپین (نوع میکرو) است که پینآوت آن نیز نشان داده شده است. این کانکتور هم در کاربردهای CANopen و هم در NMEA 2000 استفاده میشود و در مقایسه با کانکتور DB9، مقاومت بیشتری در برابر شرایط محیطی سخت دارد.
کانکتور M12 پنجپین (صنعتی، نوع میکرو)
علاوه بر کانکتورهای بالا، دستگاههای CANopen اغلب از کانکتورهای با سبک باز (بدون قالب مشخص) استفاده میکنند. در نتیجه، استفاده از کابلهای مبدل DB9 به سیم باز (Open Wire) میتواند برای اتصال دستگاههایی با کانکتور DB9 به ترمینالهای سیمی باز بسیار مفید باشد.
کانکتور با سیم باز (Open Wire Connector)
در پایان، پروتکل CANopen ابزاری قدرتمند برای دستیابی به ارتباطات یکپارچه در محیطهای اتوماسیون صنعتی است. با درک جنبههای مختلف آن، از ساختار پیام تا سازوکارهای ارتباطی و پروفایلهای دستگاه، متخصصان این حوزه میتوانند از قابلیتهای آن برای ایجاد سیستمهای اتوماسیون کارآمد و قابلاعتماد بهره ببرند. برای دریافت اطلاعات بیشتر در مورد چنین پروتکلهای صنعتی مهمی، این فضا را دنبال کنید.