پروتکل Modbus (مدباس)
در دنیای گسترده اتوماسیون صنعتی، نیاز به یک زبان مشترک و قابل فهم بین دستگاههای مختلف امری حیاتی است. پروتکل Modbus، که اغلب به سادگی “مدباس” نامیده میشود، یکی از قدیمیترین، پرکاربردترین و شناختهشدهترین پروتکلهای ارتباطی در این حوزه است. این پروتکل به عنوان یک استاندارد باز (De Facto Standard)، امکان تبادل داده بین تجهیزات الکترونیکی هوشمند مانند کنترلکنندههای منطقی برنامهپذیر (PLC)، رابطهای انسان و ماشین (HMI)، سیستمهای اسکادا (SCADA)، سنسورها، درایوها و سایر دستگاهها را فراهم میکند.
تاریخچه مختصر Modbus
پروتکل Modbus در سال ۱۹۷۹ توسط شرکت Modicon (که اکنون بخشی از اشنایدر الکتریک است) برای استفاده در PLCهای خود توسعه یافت. سادگی، استحکام و ماهیت باز آن باعث شد به سرعت فراتر از محصولات Modicon رفته و توسط سازندگان متعددی در سراسر جهان به کار گرفته شود و به یکی از رایجترین پروتکلها در صنعت تبدیل گردد.
چگونه Modbus کار میکند؟
Modbus بر اساس دو مدل ارتباطی سلسله مراتبی در شرایط خاص با توجه به نیازمندی سیستم مانند مدل Master/Slave و یا مدل Client/Server عمل میکندکه در ادامه به تشریح هر کدام از این موارد می پردازید.
مدل های عملیاتی Modbus
۱- مدل Master/Slave (برای ارتباط سریال)
در این مدل، یک دستگاه به عنوان “Master” (ارباب) تعیین میشود که ارتباط را آغاز میکند و درخواستها را به دستگاههای “Slave” (برده) ارسال میکند. هر Slave یک آدرس منحصر به فرد دارد و فقط به درخواستهایی که مستقیماً به آدرس آن ارسال شده، پاسخ میدهد. تنها Master میتواند ارتباط را شروع کند.
۲- مدل Client/Server (برای Modbus TCP/IP)
در شبکههای اترنت، این مدل استفاده میشود. دستگاه “Client” (مشتری) درخواستها را آغاز کرده و به دستگاه “Server” (سرور) ارسال میکند. Server به درخواستهای Client پاسخ میدهد. در این مدل، چندین Client میتوانند به یک Server متصل شوند و یک دستگاه میتواند هم Client و هم Server باشد.
کدهای عملیاتی (Function Codes)
Master/Client برای تعیین نوع عملیات مورد نظر (مانند خواندن داده یا نوشتن داده) از کدهای عملیاتی مشخصی در پیام خود استفاده میکندکه مهمترین موارد آن شامل موارد زید می باشد :
- خواندن وضعیت کویلها (Read Coils)
- خواندن رجیسترهای ورودی (Read Input Registers)
- خواندن رجیسترهای نگهدارنده (Read Holding Registers)
- نوشتن یک کویل (Write Single Coil)
- نوشتن یک رجیستر (Write Single Register)
و … میشوند.
مدل دادهها
کویلها و رجیسترها: Modbus دادهها را در چهار بلوک اصلی سازماندهی میکند
* Coils (کویلها): مقادیر تک بیتی (۰ یا ۱) که قابل خواندن و نوشتن هستند (مانند وضعیت یک رله)
* Discrete Inputs (ورودیهای گسسته): مقادیر تک بیتی فقط خواندنی (مانند وضعیت یک کلید فیزیکی)
* Input Registers (رجیسترهای ورودی): مقادیر ۱۶ بیتی فقط خواندنی (مانند مقدار یک سنسور آنالوگ)
* Holding Registers (رجیسترهای نگهدارنده): مقادیر ۱۶ بیتی که قابل خواندن و نوشتن هستند (مانند نقاط تنظیم یا Setpointها)
نسخههای اصلی پروتکل Modbus
سه نسخه اصلی از پروتکل Modbus وجود دارد که بیشترین کاربرد را برای ارتباط سریال و استفاده در شبکههای اترنت قابل عملیاتی بودن را دارندکه در ادامه از مهمترین مورد و با توجه به موقعیت بهره بری از پروتکل معرفی خواهیم کرد.
(Remote Terminal Unit) Modbus RTU
رایجترین نسخه برای ارتباط سریال (مانند RS-232 یا RS-485). دادهها به صورت باینری (دودویی) فشرده منتقل میشوند و از روش بررسی خطای CRC (Cyclic Redundancy Check) استفاده میکند. کارایی بالاتری نسبت به ASCII دارد.
American Standard Code for Information Interchange) Modbus ASCII)
نسخهای دیگر برای ارتباط سریال که دادهها را با استفاده از کاراکترهای ASCII (قابل خواندن توسط انسان) منتقل میکند. این نسخه خواناتر است اما کارایی کمتری نسبت به RTU دارد و از روش بررسی خطای LRC (Longitudinal Redundancy Check) استفاده میکند.
Modbus TCP/IP (یا Modbus TCP)
این نسخه برای استفاده در شبکههای اترنت مدرن مبتنی بر TCP/IP طراحی شده است. پیام Modbus درون یک بسته TCP/IP قرار میگیرد (Encapsulation). این نسخه امکان ارتباط سریعتر، مسافتهای طولانیتر و تعداد دستگاههای بیشتر را فراهم میکند و از مکانیزمهای بررسی خطای خود TCP/IP بهره میبرد.
ساختار پیام در Modbus
هر پیام Modbus (فریم) معمولاً شامل چهاربخش مهم می باشد که برای بررسی بیشتر به شرح هر بخش به طور جداگانه می پردازیم.
آدرس Slave/Unit Identifier
مشخص میکند کدام دستگاه Slave (در RTU/ASCII) یا Unit (در TCP) باید به پیام پاسخ دهد.
کد عملیاتی (Function Code)
نوع درخواست را مشخص میکند.
دادهها (Data)
اطلاعات مورد نیاز برای اجرای درخواست (مانند آدرس رجیستر، تعداد رجیسترها، مقادیر برای نوشتن).
بررسی خطا (Error Check)
کدی برای تشخیص خطا در انتقال (CRC برای RTU، LRC برای ASCII، در TCP توسط لایه TCP/IP انجام میشود).
بررسی مزایا و معایب پروتکل Modbus
مزایا Modbus
- سادگی: پیادهسازی و عیبیابی آن نسبتاً آسان است.
- باز بودن: یک استاندارد منتشر شده و عمدتاً بدون حق امتیاز است.
- پشتیبانی گسترده: توسط تعداد بسیار زیادی از سازندگان و دستگاهها پشتیبانی میشود.
- انعطافپذیری: بر روی رسانههای مختلف (سریال، اترنت) قابل اجراست.
معایبModbus
- محدودیت سرعت: به خصوص در نسخههای سریال، سرعت انتقال داده محدود است.
- امنیت پایه: نسخههای اصلی فاقد مکانیزمهای امنیتی ذاتی مانند رمزنگاری یا احراز هویت هستند (اگرچه راهکارهای امنیتی روی لایههای بالاتر قابل اعمال است).
- مدل Master/Slave: در نسخههای سریال، تنها Master میتواند ارتباط را آغاز کند.
- محدودیت حجم داده: حجم داده قابل انتقال در یک پیام محدود است.
کاربردهای رایج پروتکل Modbus
با تئجه به این موضوع که مودباس یک پروتکل ارتباطی استاندارد و رایگان می باشد که در اتوماسیون صنعتی بکار میرود و به دلیل توانایی در اتصال دستگاههای صنعتی مانند سنسورهای دما، رطوبت، اینورترها و انتقال دادهها به سرورهای مرکزی، در صنایع مختلف بسیار محبوب شده است و به همین علت Modbus تقریباً در هر بخشی از صنعت که نیاز به اتوماسیون و جمعآوری داده باشد، کاربرد دارد که مهمترین موارد ان شامل موارد زیر می باشد:
- ارتباط بین PLCها و سیستمهای SCADA/HMI
- خواندن داده از سنسورها و ابزار دقیق
- کنترل درایوها، موتورها و عملگرها (Actuators)
- سیستمهای مدیریت ساختمان (BMS)
- جمعآوری داده از کنتورهای انرژی و میترها
- اتوماسیون فرآیند و تولید
اهمیت Modbus
در انتها از موارد ذکر شده در مورد پروتکل ModBus می توان به عنوان نتیجه گیری این سوال مهم را از خود پرید که چرا Modbus همچنان اهمیت دارد؟ که اگر بخواهیم به طور مختصر پاسخ سوالمان را بدهیم می توان بیان کرد که با وجود ظهور پروتکلهای جدیدتر و پیشرفتهتر، Modbus به دلیل سادگی، قابلیت اطمینان در کاربردهای فراوان، پشتیبانی وسیع توسط سازندگان و هزینه پایین پیادهسازی، همچنان یکی از محبوبترین و پرکاربردترین پروتکلهای ارتباطی در جهان اتوماسیون صنعتی باقی مانده است. درک اصول Modbus برای هر مهندس یا تکنسینی که در این حوزه فعالیت میکند، یک دانش بنیادی محسوب میشود.