پروتکل Modbus چیست – مقدمه‌ای بر مدباس

شماتیک و نقشه پروتکل مدباس

Modbus یک پروتکل ارتباطی صنعتی پرکاربرد است که انتقال داده ها را بین دستگاه ها در سیستم های اتوماسیون صنعتی فراهم می کند. پروتکل مدباس اولین بار در سال 1979 توسط Modicon که اکنون اشنایدر الکتریک است، توسعه یافت و پروتکل مدباس از آن زمان به یک استاندارد واقعی برای ارتباطات صنعتی تبدیل شد.

مدباس یک پروتکل master-slave است

Modbus یک پروتکل master-slave است. یعنی مستر وظیفه آغاز ارسال ارتباط و کنترل باس را به عهده دارد. در مقابل slave به درخواست های master پاسخ می دهند. Master می تواند با یک یا چند Slave به طور همزمان ارتباط برقرار کند.

مدباس از یک فرمت ساده باینری برای انتقال داده ها بین دستگاه ها استفاده می کند. این فرمت شامل یک کد تابع است که نوع عملی که باید انجام شود را مشخص می کند. در ادامه داده هایی که برای انتقال لازم هستند ارسال می‌شوند.

مدباس از چه نوع ارتباطی پشتیبانی می کند؟

Modbus از دو نوع ارتباط پشتیبانی می کند: سریال و TCP/IP. ارتباط سریال از یک رابط RS-232، RS-485 یا RS-422 استفاده می کند، در حالی که ارتباط TCP/IP از یک رابط اترنت استفاده می کند. این اجازه می دهد تا Modbus در طیف گسترده ای از کاربردهای اتوماسیون صنعتی از جمله کنترل فرآیند، اتوماسیون ساختمان و مدیریت انرژی مورد استفاده قرار گیرد.

Modbus یک پروتکل رایگان است

مدباس یک پروتکل باز است، به این معنی که به صورت رایگان در دسترس همه است. و به همین دلیل در طیف گسترده ای از دستگاه ها مورد استفاده است

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

چگونه در مدباس بخوانیم و بنویسیم؟

آدرس های تعریف شده در مدباس

Modbus چهار نوع اصلی رجیستر را تعریف می کند:

کویل‌ ها (Coils) – سیم پیچ‌ ها و یا خروجی های دیجیتال

کویل ها خروجی های باینری هستند که می توانند توسط دستگاه مدباس تنظیم یا پاک شوند. همچنین می توان مقدار فعلی آنها را خواند. از کویل ها می توان برای کنترل وضعیت دستگاه های فیزیکی مانند چراغ ها یا موتورها استفاده کرد. سیم‌پیچ‌ها معمولاً با استفاده از ورودی/خروجی‌های مجزا و کدهای عملکرد 01 (read coils) و 05 (write single coil) مشخص می‌شوند.

ورودی‌ های دیجیتال (Discrete Inputs) یا باینری

ورودی‌های دیجیتال، ورودی‌های صفر و یکی هستند که تنها می‌توانند توسط دستگاه مدباس خوانده شوند، اما امکان نوشتن روی آنها وجود ندارد. ورودی های دیجیتال می توانند برای نظارت بر وضعیت دستگاه های فیزیکی مانند سوئیچ ها یا حسگرها باینری استفاده شوند. ورودی‌های دیجیتال معمولاً با استفاده از کد تابع 02 (Read Discrete Inputs) آدرس‌دهی می‌شوند.

رجیسترهای نگه دارنده (Holding Registers)

رجیسترهای نگهدارنده رجیسترهای 16 بیتی هستند که توسط دستگاه Modbus قابل خواندن و نوشتن هستند. از رجیسترهای نگهدارنده می توان برای ذخیره داده ها مانند نقاط تنظیم یا مقادیر کنترل استفاده کرد. رجیسترهای نگهدارنده معمولاً با استفاده از کدهای تابع 03 (Read Holding Registers) و 06 (Write Single Register) آدرس‌دهی می‌شوند.

رجیسترهای ورودی (Input Registers)

رجیسترهای ورودی، رجیسترهای 16 بیتی هستند که توسط دستگاه مدباس قابل خواندن هستند اما قابل نوشتن نیستند. از رجیسترهای ورودی می توان برای ذخیره داده ها مانند قرائت سنسور یا اطلاعات وضعیت استفاده کرد. رجیسترهای ورودی معمولاً با استفاده از کد تابع 04 (Read Input Registers) آدرس دهی می شوند.

کدهای تابع نوع عملیات انجام شده توسط مدباس را مشخص می کنند. محدوده آدرس های تعریف شده به همراه نوع دسترسی به آن ها در پایین آورده شده است

محدوده آدرس مجاز

نوعدسترسیاندازهمحدوده آدرس
خروجی دیجیتال (coil)خواندن و نوشتن1 بیت00001-09999
ورودی دیجیتالخواندن1 بیت10001-19999
رجیسترهای ورودی (input registers)خواندن16 بیت30001-39999
رجیسترهای نگه دارنده (holding registers)خواندن و نوشتن16 بیت40001-49999
محدوده آدرس های تعریف شده در پروتکل مدباس

به عنوان مثال امکان نوشتن و خواندن در رجیستر مربوط به کویل ها وجود دارد، با نوشتن در رجیستر مقدار خروجی عوض میشود و با خواندن کویل میتوان مقدار فعلی خروجی را بدست آورد. اما در مورد ورودی دیجیتال نوشتن در آنها غیر مجاز و بی معنی است و تنها امکان خواندن انها وجود دارد

توابع

عملیات خواندن و یا نوشتن و نوع آن با تعیین نوع تابع مشخص میشود به عبارتی ما میخوایم به آدرس x بنویسیم و یا مقدار آن را بخوانیم و یا فقط با مقدار یک کویل و یا رجیستر کار داریم و یا میخواهیم چندتا را با هم بخوانیم و یا بنویسیم. توابع مورد نیاز در زیر آورده شده اند. به عنوان مثال ردیف اول مقدار ورودی های دیجیتال را خواهد خواند و مقدار بازگشتی یک بیت خواهد بود. همچنین در زمان استفاده از این تابع باید محدوده ادرس مجاز ورودی دیجیتال مطابق جدول بالا به عنوان پارامتر وارد شود

نام تابعکد تابعسایز کد
Read Discrete Inputs2۱ بیت
Read Coils1۱ بیت
Write Single Coil5۱ بیت
Write Multiple Coils15۱ بیت
Read Input Registers4۱۶ بیت
Read Multiple Holding Registers3۱۶ بیت
Write Single Holding Register6۱۶ بیت
Write Multiple Holding Registers16۱۶ بیت
Read/Write Multiple Registers23۱۶ بیت
Mask Write Register22۱۶ بیت
Read FIFO Queue24۱۶ بیت
توابع استفاده شده در مدباس

محدودیت ها و معایب

سرعت مدباس

ساختار master-slave مزیت های متعددی دارد اما ایرادات خود را نیز دارد. ارسال دیتا تنها با درخواست master امکان پذیر است و master باید به صورت مداوم درخواست خواندن دیتا را به slave ها ارسال کند.(بجز در روش modbus tcp که به دلیل لینک متفاوت امکان ارسال دو طرفه وجود دارد) اینکار دو ایراد عمده دارد

۱. در صورتی که slave دارای پیام اضطرای باشد باید تا نوبت خود صبر کند و این باعث تاخیر در ارسال پیام میشود

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

تعداد سیم بیشتر در مقایسه با current loop

در روش current loop تنها با اتصال ۲ سیم میتوان تغذیه و دیتای آنالوگ را همزمان منتقل کرد. در مدباس حداقل ۴ سیم (۲ سیم تغذیه و ۲ سیم rs485) مورد نیاز است. (modbus به دلیل مزیت های متعدد دیگر، معمولا همچنان روش ارتباطی بهتری است.)

منابع

https://www.se.com/us/en/faqs/FA168406/
What is Modbus? | Types of Modbus | RealPars

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

سبد خرید
پیمایش به بالا