در دنیای واقعی اتوماسیون صنعتی، ارتباطات مابین دستگاهها یعنی ایجاد مکالمه و گفتگو بین دستگاهها، بهصورت همزمان و در بسیاری از موارد در انواع شبکههای ارتباطی مختلف و به زبانهای مختلف انجام میشود. در این مقاله به مودباس، یکی از شناخته شده ترین روش ارتباطی صنعتی میپردازیم.
مودباس یک پروتکل عمومی است!
بسته به سازنده تجهیزات اتوماسیون صنعتی، یک زبان خاص یا اختصاصی مورد استفاده قرار میگیرد؛ یا ممکن است یک زبان، در قالب پروتکلهای عمومی در اختیار صنعت باشد. بسیاری از تولیدکنندگان با این پروتکلهای عمومی سازگار میشوند تا محصولاتشان بهسادگی با بازار یکپارچه شوند.
یک پروتکل باز یا عمومی در واقع مشخصات منتشر شدهای است که هر کسی میتواند از آنها آزادانه یا با مجوز استفاده کند. پروتکلهای عمومی معمولاً توسط شرکتها، گروههای کاربری، جوامع حرفهای و دولتها حمایت میشوند. این پروتکلها امکان انتخاب گستردهتری از بین دستگاهها و سیستمهای مختلف را برای کاربران فراهم میآورند که برای کاربردهای خاص مورد استفاده قرار میگیرند.
مزایای پروتکلهای عمومی عبارتند از:
- پشتیبانی شدن توسط چندین تولید کننده، فروشندگان نرمافزار و سازمانهای نصب/سرویس
- حمایت شدن از طرف گروههای اجتماعی فعال
- امکان ثابت نگه داشتن شرایط و افزودن امکانات بیشتر در آینده
امروزه، یکی از رایجترین پروتکلهای ارتباطی اتوماسیون برای اتصال دستگاههای الکترونیکی، مودباس (Modbus) است.
مودباس (Modbus) چیست؟
پروتکل ارتباطی مودباس، قدیمیترین و محبوبترین پروتکل اتوماسیون، در زمینه خودکارسازی فرآیندها و سیستم SCADA یا سامانه نظارت بر کنترل و اکتساب دادهها است.
آشنایی با راهاندازی شبکههای مبتنی بر مودباس برای هر تکنسین برق و مهندسانی که در این حوزه کار میکنند، ضروری است. توانایی یکپارچهسازی دستگاههای ساخته شده توسط کارخانههای مختلف یک مهارت پر تقاضا است و باعث میشود در صنعت فرد ارزشمندتری شوید.
مودباس یک پروتکل ارتباطی است که که در سال 1979 توسط مادیکان، برای استفاده در کنترل کننده منطقی قابل برنامهریزی یا PLC منتشر شد. در حال حاضر، شرکت اشنایدر الکتریک مالک مادیکان است.
مودباس، یک زبان مشترک برای برقراری ارتباط بین دستگاهها و تجهیزات با یکدیگر فراهم میکند. بهعنوان مثال، مودباس این امکان را فراهم میآورد که دستگاهها در یک سیستم، دما و رطوبت را بر روی یک شبکه واحد اندازهگیری کنند و نتایج را به یک کامپیوتر SCADA یا PLC انتقال دهند.
توسعه و بروزرسانی پروتکلهای مودباس توسط سازمان مودباس مدیریت میشود. سازمان مدباس، انجمنی است که از کاربران و تأمین کنندگان دستگاههای سازگار با مدباس تشکیل شده است.
انواع پروتکل مودباس
چندین نسخه از پروتکل Modbus برای پورت سریال و اترنت وجود دارد که رایجترین آنها عبارتند از:
- Modbus RTU
- Modbus ASCII
- Modbus TCP
- Modbus Plus
شرکت Modicon یک رابط مودباس را برای یک شبکه مولتی دراپ مبتنی بر معماری master/slave منتشر کرد. ارتباط بین گرههای مدباس، با ارسال درخواست و خواندن پیامهای پاسخ به دست میآید.
پروتکل مودباس و لایه فیزیکی آن
مودباس یک استاندارد عمومی است که پیامهای هر گفتگو را توصیف میکند.
مدباس بین چندین نوع رسانه فیزیکی ارتباط برقرار میکند:
- RS-232
- RS-485
- RS-422
- اترنت (Ethernet)
رسانه فیزیکی را شما هنگام خرید دستگاهها انتخاب خواهید کرد. رابط اصلی مودباس بر روی ارتباطات سریال RS-232 اجرا میشود، اما بیشتر پیادهسازیهای سطوح بعدی مودباس از RS-485 استفاده میکنند؛ زیرا دارای مزایای زیر است:
- پشتیبانی از مسافت طولانیتر
- سرعت بیشتر
- امکان اتصال چندین دستگاه بر روی یک شبکه مولتی دراپ
ارتباط مودباس Master-Slave بر روی رسانه فیزیکی سریال RS-485، اتصالات دو سیمی فرستنده و گیرنده را نشان میدهد.
در رابطهای سادهای مانند RS-232 یا RS-485، پیامهای مودباس با فرم ساده در شبکه ارسال میشوند و شبکه تنها به اتصال مودباس اختصاص داده میشود. با این حال، اگر شبکه شما به چندین دستگاه ناهمگن نیاز داشته باشد که از یک شبکه چندمنظوره مانند TCP/IP بر بستر اترنت استفاده کند، پیامهای مودباس در بستههای اترنت با فرمت تعریف شده برای این رابط فیزیکی تعبیه میشود.
بنابراین در این حالت، مودباس و سایر پروتکلهای ترکیبی، میتوانند همزمان در یک رابط فیزیکی هماهنگ وجود داشته باشند.
مقدمه ای بر ساختار پیامها در Modbus
ساختار اصلی پیام مودباس نقطه-به-نقطه است. مودباس قادر است بر روی هر دو شبکه نقطه-به-نقطه و مولتی دراپ اجرا شود.
ارتباط دستگاههای مدباس از یک تکنیک master/slave یا client/server بر بستر اترنت استفاده میکند که تنها یک دستگاه (Master یا سرور) میتواند تراکنشها (یا درخواستها) را آغاز کند.
دیگر دستگاهها با ارائه دادههای درخواستی به دستگاه master یا با اجرای عمل درخواست شده در یک درخواست پاسخ میدهند.
دستگاه slave، یک دستگاه جانبی است، مانند مبدل ورودی/خروجی، دریچه (والو)، راهانداز شبکه یا دیگر انواع دستگاههای اندازهگیری که اطلاعات را پردازش میکنند؛ و پیام پاسخ را با استفاده از پروتکل مودباس به دستگاه master ارسال میکند.
دستگاههای master میتوانند درخواست را به یک دستگاه slave خاص بفرستند، یا ارسال درخواست گسترده را به تمام دستگاههای slave آغاز کنند. دستگاههای slave، پاسخ تمام درخواستهای ارسال شده را جداگانه ارسال میکنند، اما به پیامهای گسترده پاسخ نمیدهند.
دستگاههای slave آغاز کننده هیچ پیامی نیستند، و تنها به پیامهای ارسال شده از طرف دستگاههای master پاسخ میدهند.
درخواست دستگاه master حاوی این موارد است:
- آدرس دستگاه slave یا آدرس گسترده،
- یک کد عملکرد با دستور دادهای خواندن/نوشتن به دستگاه slave
- داده مربوطه؛ مثلا در صورتی که دستور نوشتن توسط Master و در فیلد قبلی صادر شده باشد این بخش باید حاوی دادهای باشد که قرار است نوشته شود.
- فیلد کنترل خطا
فیلد کنترل خطا، مقداری است که دستگاه master یا slave در شروع فرآیند درخواست یا پاسخ ایجاد میکند و هنگامی که پیام دریافت شد، برای تائید درستی محتوا آن را بررسی میکنند.
پاسخ دستگاه slave حاوی فیلدهای زیر است:
- فیلدی که تایید میکند درخواست دریافت شده است
- دادهای که باید برگردانده شود
- فیلد کنترلی خطا CRC
اگر خطایی رخ نداده باشد، پاسخ دستگاه slave حاوی داده درخواست شده خواهد بود. اما اگر خطایی در درخواست پیام دریافت شده توسط دستگاه slave رخ داده باشد، یا اگر دستگاه slave قادر نباشد عملیات خواسته شده را اجرا کند، دستگاه slave پیام خاصی را برخواهد گرداند.
فیلد بررسی خطای فریم پیام دستگاه slave، امکان تائید محتواهای پیام معتبر را برای دستگاه master فراهم میآورد.
جزئیات پروتکل مودباس
تا اینجا با پروتکل ارتباطی مودباس آشنا شدید و انواع ارتباطات مدباس مورد استفاده در صنعت را شناختید. اکنون میخواهیم با جزییات بیشتری درباره چگونگی عملکرد پروتکل ارتباطی مودباس بین دستگاهها صحبت کنیم. پیشنهاد میکنیم ویدئوی زیر را نیز ببینید:
ساختار پیامها در پروتکل Modbus
هر پیام مودباس ساختار یکسانی دارد که در هر پیام، چهار بخش اصلی ارائه میشود. توالی و ترتیب این عناصر، برای همه پیامها یکسان است. این امر امکان تجزیه راحت محتوای پیام مدباس را فراهم میآورد.
یک گفتگو در شبکه مدباس همیشه با Master شروع میشود. دستگاه Master یک پیام ارسال میکند؛ با توجه به محتواهای پیام دستگاه Slave پیام را تفسیر کرده و پاسخ میدهد.
آدرسدهی فیزیکی Slave در هدر (header) هر پیام، تعیین میکند که کدام دستگاه باید به پیام پاسخ دهد. دیگر نودهای موجود در شبکه مودباس، در صورتی که فیلد آدرس با آدرس خودشان مطابقت نداشته باشد، این پیام را نادیده میگیرند.
توابع مودباس، دستورات خواندن و نوشتن را برای رجیسترهای حافظه داخلی slave اجرا میکنند تا به این ترتیب، ورودیها و خروجیهای دستگاه slave را پیکربندی، نظارت و کنترل کنند.
دستگاههای شبکه مودباس
دستگاههای مودباس معمولاً حاوی یک نقشه رجیستر (رجیستر مپ) هستند، که مکان پیکرهبندی و خواندن/نوشتن دادههای ورودی و خروجی را مشخص میکند. شما باید به رجیستر مپِ دستگاه slave مرتباً مراجعه کنید تا درک بهتری از عملیات کلی آن بدست آورید.
مدل دادههای مدباس دارای یک ساختار ساده، شامل چهار نوع داده اساسی است:
- ورودیهای مجزا (Discrete Inputs)
- خروجیهای کویل (Coils Outputs)
- رجیسترهای ورودی (داده ورودی)
- رجیسترهای نگهدارنده (داده خروجی)
واحد داده پروتکل مدباس (PDU)
ناحیه درخواست سرویسِ پیام یا واحد داده پروتکل مودباس (PDU)، از کد عملکرد و تعدادی بایتهای داده درخواست شده توسط دستگاه master تشکیل شده است.
رجیسترهای حافظه مدباس یک دستگاه، بر اساس چهار نوع مرجع داده اساسی سازماندهی میشود. و این نوع داده معمولاً، توسط اولین عدد مورد استفاده در آدرس حافظه دستگاهها شناسایی میشود،
برای مثال:
- عدد 0 در رجیستر به پیامی جهت خواندن و نوشتن خروجیهای مجزا یا کویل اشاره میکند
- عدد 1 در رجیستر به پیامی جهت خواندن ورودیهای مجزا اشاره میکند
- و یا عدد 3 در رجیستر به پیامی جهت خواندن رجیسترهای ورودی اشاره میکند
- و عدد 4 در رجیستر به خواندن یا نوشتن بر روی رجیسترهای خروجی یا نگهدارنده اشاره دارد
فیلد کد عملکرد در پیامهای Modbus
فیلد کد عملکرد مشخص میکند که کدام گروه داده رجیستر، از دستگاه slave میخواند یا بر روی آن مینویسد.
برای مثال، کد عملکرد 03 که رجیسترهای نگهدارنده 40002-40001 را میخواند، به عنوان رجیستر داده 0000، در فیلد آدرس داده پیام ارسالی به slave آدرسدهی میشود.
کد عملکرد 03 بر روی این نوع رجیستر نگهدارنده (4xxxx) در نقشه داده slave کار میکند؛ زیرا درخواست، استفاده از عملیات نوع داده رجیستر نگهدارنده را مشخص میکند. و در درخواست هم به این نوع آدرسدهی 4xxxx اشاره میشود.
فیلدهای PDU به بایتهای مختلف تقسیم شده و سپس بر اساس عنوان فیلد گروهبندی میشوند. پیام درخواست حاوی بخشهای زیر است:
- آدرس دستگاه Slave، با 01
- کد عملکرد 03 (خواندن از رجیسترهای نگهدارنده 4xxxx)
- آدرس شروع بایتهای HI و LO به صورت 0000 که رجیستر ابتدایی را مشخص میکند.
- تعداد آدرسهایی که باید از Slave خوانده شود، با بایتهای HI و LO رجیستر مقدار 0002 مشخص میشوند و تعداد رجیسترهایی که باید از Slave خوانده شوند را مشخص میکند.
مثالی از یک درخواست برای خواندن دو رجیستر اول در ناحیه رجیستر نگهدارنده، از 0 تا 1 (رجیستر 40001 تا 40002) است و در تصویر زیر نمایش داده شده است.
در تصویر فوق مشخص است که رجیستر نگهدارنده 40108 در واقع، به عنوان رجیستر 107 در ناحیه داده پیام PDU آدرسدهی میشود.
بسیاری از انواع دادهها بر اساس کاربرد آنها در رلههای راهانداز نامگذاری میشوند. برای مثال، یک خروجی فیزیکی تک بیتی، کویل نامیده میشود، و ورودی فیزیکی تک بیتی، ورودی مجزا یا کنتاکت نامگذاری میشود.
فیلد کد عملکرد پیام، حاوی یک بایت است که به دستگاه slave میگوید چه کاری انجام دهد.
کدهای عملکرد معتبر از محدوده 1 تا 255 هستند، اما همه کدها به یک دستگاه slave خاص ارسال نمیشوند.
جدولی که در تصویر زیر مشاهده میفرمایید، زیرمجموعهای از توابع مودباس استاندارد را نشان میدهد.
فیلد داده در پیام مودباس
فیلد داده درخواست دستگاه Master، اطلاعات اضافی مورد نیاز دستگاه Slave را فراهم میکند تا عملیات مشخص شده توسط کد عملکرد در درخواست دستگاه Master را کامل کند.
این درخواست معمولاً شامل بخشهای زیر است:
- آدرس رجیستر مپ Slave
- تعداد رجیسترهای مورد نیاز در درخواست
- هر دستور نوشتن از دستگاه Master
مدیریت خطا در پیام مدباس
پاسخ عادی Slave، به سادگی کد عملکرد اصلی درخواست را منعکس میکند، اما پاسخ خطای دستگاه Slave، کدی معادل کد عملکرد اصلی را با 1 کردن پرارزش ترین بیت بازمیگرداند.
به عنوان مثال، دستور خواندن رجیسترهای نگهدارنده، دارای کد عملکرد 1 بایتی حاوی 8 بیت 0011 0000 (03 هگزادسیمال) است. اگر دستگاه Slave درخواست را بدون خطا قبول کند، همان کد را در پاسخ خود بازمیگرداند.
با این حال اگر خطایی رخ دهد، دستگاه Slave، یک بایت حاوی 8 بیت را در فیلد کد عملکرد به شکل 0011 1000 بازمیگرداند (پرارزش ترین بیت 1 شده) و یک کد خاص به فیلد داده پیام پاسخ الحاق میکند، که به دستگاه Master میگوید، چه خطایی رخ داده است یا علت خطا چیست؟
پرکاربردترین کدهای عملکرد در Modbus
کد عملکرد 01، کد خواندن کویل، برای خواندن رجیسترهای پیوسته 1 تا 2000 مربوط به وضعیت کویلها در یک دستگاه Slave استفاده میشود. درخواست PDU، کد شروع آدرس حافظه دستگاه Slave اولین کویل وتعداد کویلهایی که باید از دستگاه Slave خوانده شوند را مشخص میکند.
کد عملکرد 02، کد خواندن ورودیهای مجزا، برای خواندن حالتهای پیوسته 1 تا 2000 ورودیهای مجزای یک دستگاه Slave در حالت ریموت استفاده میشود. درخواست PDU، کد شروع آدرس آدرس حافظه دستگاه Slave اولین ورودی و تعداد کویلهایی که باید از دستگاه Slave خوانده شوند را مشخص میکند.
کد عملکرد 03، کد خواندن رجیسترهای نگهدارنده، برای خواندن محتواهای یک بلوک متوالی از رجیسترهای نگهدارنده در دستگاه Slave در حالت ریموت به کار میرود. درخواست PDU، آدرس رجیستر آغازین و تعداد رجیسترهایی که باید از دستگاه Slave خوانده شوند را مشخص میکند.
کد عملکرد 04، کد خواندن رجیسترهای ورودی، برای خواندن رجیسترهای ورودی پیوسته 1 تا 125 در یک دستگاه راه دور استفاده میشود. درخواست PDU، آدرس رجیستر آغازین و تعداد رجیسترها را مشخص میکند.
کد عملکرد 05، کد خواندن یک کویل، برای نوشتن یک خروجی یکتا به صورت ON یا OFF در یک دستگاه Slave راه دور استفاده میشود.
کد عملکرد 06، کد نوشتن یک رجیستر، برای نوشتن یک رجیستر نگهدارنده در یک دستگاه Slave راه دور استفاده میشود. درخواست PDU، آدرس رجیستر حافظه دستگاه Slave که باید بر روی آن نوشته شود را تعیین میکند.
کد عملکرد 15، کد نوشتن چندین کویل، برای نوشتن یک کویل در دنبالهای از کویلها، به صورت ON یا OFF در یک دستگاه Slave راه دور استفاده میشود. درخواست PDU، آدرس حافظه کویلها به صورت ON یا OFF را مشخص میکند.
و در نهایت کد عملکرد 16، نوشتن بر روی چندین رجیستر، برای نوشتن یک بلوک از رجیسترهای پیوسته، از 1 تا 123 رجیستر در یک دستگاه Slave راه دور استفاده میشود.
از آنجایی که این کدهای عملکرد در مودباس، نمایانگر رایجترین توابع خواندن و نوشتن هستند، بررسی دقیق مشخصات پروتکل مدباس برای مطالعه بیشتر، کمک کننده خواهد بود.
برای مطالعه دقیقتر اطلاعات فنی پروتکل مودباس لطفاً به آدرس Modbus.org مراجعه کنید.
نرم افزار شبیه ساز پروتکل Modbus
ارتباط با دستگاههای Slave یا PLCهای Master و یا کامپیوترها میتواند با استفاده از نرمافزار شبیهساز پروتکل مودباس بر روی کامپیوتر شخصی اجرا شود.
اتصال میتواند به صورت سریال یا اترنت و در قالب دستگاه Master یا Slave باشد. این نرمافزار امکان اجرای تمام کدهای عملکرد ارتباطی پروتکل مدباس، به منظور خواندن یا نوشتن بر روی دستگاه Slave موجود را فراهم میآورد.
شما به راحتی میتوانید یک کامپیوتر شخصی را برای اجرای نرمافزار شبیهسازی دستگاه Slave، و کامپیوتر دیگری را برای اجرای نرمافزار شبیهسازی دستگاه Master به کار ببرید.
اتصال به یک Slave در ابتدا با تنظیم پارامترهای ارتباطی برای پورت COM سریال، سپس با وارد کردن آدرس Slave در فیلد شناسه دستگاه انجام میشود.
برای مثال 1، انتخاب کد عملکرد 01، جهت خواندن وضعیت کویل دستگاه Slave، در آدرس 0001 و خواندنی به طول 100 کویل انجام میشود.
علاوه بر این، چندین شرکت ارائه دهنده محصولات و پشتیبانی برای کمک به شما در استفاده از این پروتکل وجود دارد. کمپانی ProSoft Technologies، شرکت ارتباطات صنعتی HMS و MOXA تعدادی از این شرکتها هستند.