پروتکل مدباس یک ارتباط سریال میباشد که توسط شرکت Modicon در سال 1979 برای به کارگیری در کنترلرهای PLC توسعه یافته است.پروتکل مدباس در واقع راه ارتباطی در خطوط سریال بین تجهیزات الکترونیکی مختلف میباشد.به دستگاهی که اطلاعات را درخواست میکند master و دستگاهی که اطلاعات را تامین مینماید slave گفته میشود.
در پروتکل مدباس استاندارد، یک master و تا 247 دستگاه slave وجود دارد.هر slave دارای یک آدرس منحصر به فرد میباشد که از 1 تا 247 ادامه دارد، master (با آدرس 0) این توانایی را دارد که بر روی دستگاههای slave اطلاعات را نوشته و به آنها فرمان بدهد.یک پروتکل مدباس بدون repeater، تا 32 اسلیو را تحت کنترل قرار میدهد.
مقالات زیر به شما کمک میکنند تا با کارایی این پروتکل بیشتر آشنا شوید.
دلایل بهکارگیری پروتکل مدباس:
مدباس یک پروتکل رایگان میباشد که شرکتهای مختلف میتوانند بدون نگرانی از مسائل حقوقی از آن استفاده کنند. پروتکل مدباس به عنوان یک استاندارد ارتباطی در صنعت شناخته شده و استفاده میشود.مدباس به طور معمول برای ارسال سیگنالها از تجهیزات و دستگاههای کنترلی به کنترلر اصلی و یا سیستمی که اطلاعات را جمع مینماید مورد استفاده قرار میگیرد.
به طور مثال سیستمی را می توان در نظر گرفت که دما و رطوبت توسط سنسورها اندازهگیری میشود و سپس نتایج اندازه گیریها به یک کامپیوتر توسط پروتکل مدباس ارسال میشود.پروتکل مدباس این توانایی را دارد که یک کامپیوتر نظارتی را با واحد نهایی از راه دور کنترل نماید و تعدادی سیستم جمع آوری اطلاعات را به یکدیگر متصل نماید.ورژنهای بهکار رفته برای حالت سریال modbus rtu ,modbus ASCII میباشند و در سیستمهای اترنت modbus TCP استفاده میشود.
انعطاف پذیری ارتباطات:
لایهها در پروتکل مدباس انعطافپذیر هستند. در لایه فیزیکی کاربر میتواند بستر فیزیکی دلخواه در حالت سریال مانند RS232 یا RS422 یا RS485 و یا کنترل در بستر اترنت را انتخاب کند. در لایههای دیگر کاربر میتواند ساختار فریم دیتا، فاصله زمانی بین فریمها، نوع پریتی و… را به سلیقه خود تعیین نماید. این ویژگی در سایر پروتکلهای شبکه وجود ندارد.
نحوه عملکرد پروتکل مدباس:
سادهترین ساختار برای استفاده از این پروتکل استفاده از یک کابل سریال بین دو دستگاه مختلف که یکی master و دیگری slave میباشد.اطلاعات در قالب کدهای صفر و یک که در اصطلاح به آنها بیت گفته میشود ارسال میشوند.هر بیت به صورت ولتاژ ارسال میگردد بیت صفر به عنوان ولتاژ منفی و بیت یک به عنوان ولتاژ مثبت به کار میرود.سرعت انتقال این بیتها بسیار سریع میباشد Baud rate معمول در تجهیزات 9600 میباشد.
نحوه نگهداری اطلاعات در قالب استاندارد پروتکل مدباس :
اطلاعات در دستگاه Slave در چهار جدول ذخیره میشود.دو جدول اطلاعات گسسته شامل خاموش و روشن بودن را ذخیره کرده و دو جدول دیگر مقادیر عددی و پیوسته را ذخیره میکند.به اطلاعات 2 جدول اول کویل ها (coils) و به دو جدول بعدی رجیستر (registers) گفته میشود.هر دو نوع یک جدول فقط خواندنی و یک جدول خواندن و نوشتن دارند.هر جدول 9999 داده را در خود ذخیره میکند.
هر کویل یک بیت میباشد و آدرس آن از 0000 تا 270E میباشد.هر رجیستر یک کلمه و یا 16 بیت و یا 2 بایت میباشد و آدرس آن نیز بین 0000 تا 270E میباشد.کویلها یا رجیسترها را میتوان به صورت آدرس مکان در نظر گرفت.زیرا این آدرسها هستند که در پیامها آورده میشود نه مقادیر ذخیره شده.برای مثال اولین رجیستر یعنی شماره 40001 آدرسش 0000 میباشد و اختلاف این دو عدد آفست نامیده میشود.
هر جدول دارای یک آفست میباشد 1،10001،30001،40001 .
پیشنهاد خواندنی: پروتکل پروفی باس
شناسه هر slave چیست؟
هر slave دارای یک شناسه از 1 تا 247 میباشد.
زمانی که master درخواست اطلاعات میکند، اولین بایت پیغام به عنوان آدرس slave فرستاده میشود.
بدین صورت slave متوجه میشود که پیام ارسال شده برای آن است یا خیر.
کد تابع چیست؟
دومین بایتی که توسط سیستم master ارسال میشود، کد تابع میباشد.
این کد مشخص میکند که دستگاه با کدام جدول کار مینماید و بایستی بخواند و یا بنویسد.
CRC چیست؟
CRC دو بایت بوده و برای عیبیابی در انتهای پیغام آورده میشود. هر بایتی در پیغام برای محاسبه CRC استفاده میشود. دستگاه دریافت کننده نیز CRC را چک مینماید و با CRC موجود در پیغام master مقایسه میکند. در پروتکل پرفی باس اگر حتی یک بیت به درستی دریافت نشده باشد، CRCها متفاوت خواهند بود و باعث خطا میشوند.
فرمت دستورات و پاسخهای توابع مختلف در پروتکل مدباس :
خواندن وضعیت کویلها (FC01)
دستور زیر وضعیت کویل های 20 تا 56 را از slave با آدرس 17 درخواست میکند.
11:آدرس سیستم درخواستی (11hex=17 address)
01:کد تابع
0013:آدرس اولین کویل برای خواندن (0013hex=19, +1 offset=coil #20)
0025:تعداد کویلهایی که باید خوانده شود. (25hex=37)
0E84:کد CRC برای چک کردن خطا
پاسخ درخواست:
110105
CD6BB20E1B 45E6
11:آدرس سیستم درخواستی (11hex=17 address)
01:کد تابع
05:تعداد بایتهایی که بهعنوان پاسخ آورده شده است.
CD:کویلهای 20 تا 27 (1101 1100)
6B:کویلهای 28 تا 35 (1011 0110)
B2:کویلهای 36 تا 43 (0010 1011)
0E:کویلهای 44 تا 51 (1110 0000)
1B:کویلهای 52 تا 56 و 3 تا بیت بون معنی (1011 0001)
45E6:کد CRC
نکته مهم در این قسمت این است که ترتیب بیتها بر عکس شماره کویلها میباشد. به طور مثال:
کویل شماره 36 خاموش (0) و کویل شماره 43 روشن (1) میباشد. همچنین در B1، سه بیت اول صفربوده و معنی خاصی ندارند و فقط جهت کامل شدن یک بایت آورده شدهاند و 5تای دیگر وضعیت کویلها را نشان میدهد.
نوشتن بر روی یک کویل (FC05)
بایستی توجه شود این تابع فقط برای دستور نوشتن بر روی یک کویل میباشد.
مقالاتی که به شما کمک میکنند تا با این پروتکل بیشتر آشنا شوید شامل:
مثال زیر کویل 173 را بر روی سیستم 17 روشن میکند.
11:آدرس سیستم درخواستی (11hex=17 address)
05: کد تابع
آدرس مربوط به کویل 00AC:
(Coil 173-1=172=AC hex , 00AC hex=172+1 offset=coil 173)
FF00 : وضعیتی که بایستی در کویل نوشته شود
(FF00 = ON , 0000=OFF)
کد CRC برای 4E8B
پاسخ درخواست :
پاسخ در واقع همان درخواست می باشد که دوباره توسط سیستم به Master ارسال می شود.
نوشتن بر روی چند کویل (FC15)
این تابع بر خلاف حالت قبل بر روی بیشتر از یک کویل همزمان دستور را اجرا میکند. به طور مثال درخواست زیر وضعیت 10 کویل 20 تا 29 را بر روی slave تغییر میدهد.
11 : آدرس سیستم درخواستی (11hex=17 address)
0F : کد تابع (0F hex=15)
0013 : آدرس کویل اول (0013hex=19+1 offset=coil20)
000A : تعداد کویلهایی که باید روی آنها نوشته شود (0A hex=10)
02 : تعداد بایتهایی که بایستی استفاده شود ( 10coil/8 bit per byte=2 bytes)
CD : کویل 20 تا 27 (1101 1100)
01 :کویل 28 تا 29 و 6 بیت بدون مفهوم (0001 0000)
BF0B : کد CRC
در این حالت نیز بایستی توجه شود که ترتیب بیتها بر خلاف شماره کویل است.
پاسخ :
11: آدرس سیستم درخواستی (11hex=17 address)
0F:کد تابع (0F hex=15)
0013:آدرس کویل اول (0013hex=19+1 offset=coil 20)
000A: تعداد کویلهایی که باید روی آنها نوشته شود (0A hex=10)
2699: کد CRC