پروتکل Modbus یکی از قدیمیترین و پرکاربردترین پروتکلهای ارتباطی در حوزه اتوماسیون صنعتی است که بهدلیل سادگی، باز بودن (Open Protocol) و پشتیبانی گسترده توسط سازندگان مختلف تجهیزات صنعتی، همچنان جایگاه مهمی در سیستمهای کنترلی دارد.
در این مقاله، تمرکز اصلی ما بر پروتکل Modbus TCP/IP خواهد بود؛ نسخهای از مدباس که بر بستر شبکه اترنت و پروتکل TCP/IP کار میکند و امروزه در سیستمهای مانیتورینگ، اسکادا (SCADA)، PLCها و تجهیزات مبتنی بر شبکه نقش کلیدی دارد.
پروتکل ارتباطی پرکاربرد در اتوماسیون صنعتی
Modbus TCP/IP یکی از رایجترین پروتکلهای ارتباطی در اتوماسیون صنعتی، سیستمهای اسکادا، PLCها و تجهیزات دقیق است. این پروتکل نسخهای توسعهیافته از Modbus کلاسیک محسوب میشود که بهجای بستر سریال، از شبکه اترنت و پروتکل TCP/IP استفاده میکند. سادگی، باز بودن (Open Protocol) و پشتیبانی گسترده توسط تولیدکنندگان مختلف باعث شده Modbus TCP به یکی از گزینههای اصلی در شبکههای صنعتی تبدیل شود.

انواع پروتکل Modbus
بهطور کلی، سه نوع اصلی از پروتکل مدباس وجود دارد:
- Modbus ASCII: نسخه اولیه مدباس که پیامها را بهصورت متنی (ASCII) ارسال میکند که امروزه کمتر استفاده میشود.
- Modbus RTU: متداولترین نسخه مدباس با استفاده از کابلهای RJ/RS و Ethernet
- Modbus TCP/IP: نسخه مبتنی بر اترنت که از مدل TCP/IP استفاده میکند.
تفاوت Modbus TCP با Modbus RTU و ASCII
پروتکل Modbus در سه شکل اصلی Modbus ASCII، Modbus RTU و Modbus TCP/IP پیادهسازی میشود. نسخه ASCII قدیمیترین روش کدگذاری پیامهاست که هنوز در برخی سیستمها استفاده میشود، اما بهدلیل سرعت کمتر، کاربرد آن محدود شده است. Modbus RTU متداولترین نسخه در ارتباطات سریالی میباشد که از کدگذاری دودویی (باینری) و مکانیزم بررسی خطای CRC استفاده میکند.
Modbus TCP/IP برخلاف Modbus RTU، از بستر اترنت (Ethernet) استفاده میکند و دیگر نیازی به CRC ندارد، زیرا کنترل خطا در لایه TCP انجام میشود. همچنین مفاهیم Master و Slave در این نسخه جای خود را به Client و Server دادهاند.

ساختار پیام در Modbus TCP/IP و نقش هدر MBAP
یکی از مهمترین تفاوتهای پروتکل Modbus TCP با Modbus RTU، وجود هدر یا سرآیند MBAP (Modbus Application Protocol Header) در ابتدای هر پیام میباشد. این سرآیند شامل اطلاعاتی مانند Transaction ID، Protocol ID، Length و Unit ID است و وظیفه شناسایی، مسیریابی و مدیریت پیامها در شبکه TCP/IP را بر عهده دارد.
در Modbus TCP، بخش Slave که در Modbus RTU وجود داشت عملاً از ساختار اصلی پیام حذف شده و اطلاعات شناسایی از طریق هدر MBAP و آدرس IP انجام میشود. بههمین دلیل، RTU با MBAP ناسازگار بوده و دستگاهها باید فقط یکی از این دو روش را پشتیبانی کنند.
هدر MBAP شامل اطلاعات زیر است:
- Transaction ID
- Protocol ID
- Length
- Unit Identifier
Slave ID مدباس RTU حذف شده است و اطلاعات مسیریابی از طریق IP و هدر MBAP انجام میشود.
Modbus TCP همچنین شامل PDU (Protocol Data Unit) میباشد:
این بخش مشابه RTU است و شامل:
- Function Code
- Data
پورت 502 و اهمیت آن در شبکههای صنعتی
پروتکل Modbus TCP/IP بهصورت استاندارد از پورت 502 برای ارتباطات TCP استفاده میکند. این موضوع بهویژه در شبکههایی که از فایروال استفاده میکنند اهمیت بالایی دارد، زیرا این پورت باید بهصورت مشخص باز باشد تا تبادل داده انجام شود. بسیاری از تجهیزات اتوماسیون صنعتی، از جمله محصولات سپهر انفورماتیک، برای ارتباط پروتکل Modbus TCP از همین پورت استفاده میکنند.

ارتباط Client و Server در Modbus TCP/IP
در پروتکل Modbus TCP/IP بهجای معماری آشنای مستر–اسلیو، از مدل کلاینت–سرور استفاده میشود. در این ساختار، کلاینت درخواست خواندن یا نوشتن داده را ارسال میکند و سرور به آن پاسخ میدهد. این ارتباط معمولاً از طریق سوئیچها و کابلهای شبکه LAN برقرار میشود و دستگاهها برای شناسایی در شبکه نیاز به IP Address و Subnet Mask دارند؛ مولفههایی که بهصورت گروههای ۸ بیتی (Octet) نمایش داده میشوند.
آدرسدهی دادهها در پروتکل Modbus TCP و جداول داده
سیستم آدرسدهی Modbus یکی از بخشهای خاص و گاهی گیجکننده آن است. Modbus از چهار جدول دادهای مستقل استفاده میکند که هرکدام نوع خاصی از داده را نگهداری میکنند. دو جدول مربوط به دادههای یکبیتی هستند که با نام Coil و Discrete Input شناخته میشوند و معمولاً برای مقادیر روشن/خاموش یا بولی بهکار میروند. دو جدول دیگر شامل مقادیر عددی ۱۶ بیتی هستند که به آنها Register گفته میشود.
هر جدول ظرفیت محدودی دارد؛ بههمین دلیل از ابتدا هیچ جدول مستقلی برای دادههای ۳۲ بیتی یا اعشاری تعریف نشده است.

آدرسدهی دادهها در Modbus
پروتکل Modbus از یک سیستم آدرسدهی خاص و جدولمحور استفاده میکند. چهار جدول داده اصلی وجود دارد:
- Coil (0xxxx)
- دادههای 1 بیتی
- قابل خواندن و نوشتن
- محدوده: 1 تا 9999
- Discrete Input (1xxxx)
- دادههای 1 بیتی
- فقط خواندنی
- محدوده: 10001 تا 19999
- Input Register (3xxxx)
- دادههای 16 بیتی
- فقط خواندنی
- محدوده: 30001 تا 39999
- Holding Register (4xxxx)
- دادههای 16 بیتی
- خواندنی و نوشتنی
- محدوده: 40001 تا 49999
کویل، بیت، بایت و رجیستر چیست؟
- Coil / Discrete Input: دادههای بولی مثل دستورات ON/OFF
- Register: یک کلمه 16 بیتی یا 2 بایتی
- هر رجیستر میتواند یک عدد صحیح مانند Int را نمایش دهد.
ارسال دادههای Float و Double در Modbus TCP
در استاندارد اصلی Modbus، رجیسترها ذاتاً برای نگهداری دادههای ۱۶ بیتی طراحی شدهاند و بهصورت مستقیم از دادههای ۳۲ بیتی (Float) یا ۶۴ بیتی (Double) پشتیبانی نمیکنند. با اینحال، در عمل سازندگان برای انتقال این نوع دادهها از یک روش ترکیبی استفاده میکنند؛ به اینصورت که اعداد اعشاری ۳۲ بیتی (Float) در قالب دو رجیستر ۱۶ بیتی و اعداد ۶۴ بیتی (Double) در قالب چهار رجیستر ۱۶ بیتی ارسال میشوند که در اینجا ترتیب ارسال اهمیت پیدا میکند. اگر فرستنده و گیرنده روی این ترتیب توافق نداشته باشند، عدد بهدرستی کنار هم قرار نمیگیرد و مقدار نهایی اشتباه دیده میشود.
نکته بسیار مهم:
ترتیب بایت (Byte Order) و ترتیب کلمه (Word Order) بین سازندگان مختلف متفاوت است.
Function Codeها در Modbus TCP/IP
Function Codeها دستورات عددی هستند که مشخص میکنند چه عملی روی کدام جدول داده انجام شود. هر Function Code به یک محدوده آدرس خاص مرتبط است و تعیین میکند که عملیات خواندن یا نوشتن انجام شود.
برای مثال، Function Code 1 برای خواندن وضعیت Coilها استفاده میشود و Function Code 16 برای نوشتن چند Holding Register بهکار میرود.
برخی از رایجترین Function Codeها:
- 01: Read Coils
- 03: Read Holding Registers
- 06: Write Single Register
- 16 : Write Multiple Registers
چرا Modbus TCP/IP انتخاب مناسبی است؟
Modbus TCP/IP پروتکل بهدلیل سادگی، پایداری و سازگاری گسترده، به یکی از محبوبترین پروتکلها در اتوماسیون صنعتی تبدیل شده است. این پروتکل با استفاده از زیرساخت استاندارد شبکه و ،TCP/IP ارتباط سریع و امنی بین تجهیزات مختلف را بدون نیاز به سختافزارهای پیچیده ایجاد میکند. حذف محدودیت فاصله، یکپارچهسازی با سیستمهای SCADA و BMS، کاهش هزینه پیادهسازی باعث شده Modbus TCP/IP را به انتخابی هوشمند برای پروژههای مدرن صنعتی و زیرساختهای پایش و کنترل تبدیلکند؛ راهکاری که پاسخگوی نیازهای امروز و آینده خواهدبود.


