پروتکل Modbus

پروتکل Modbus

پروتکل Modbus

پروتکل Modbus یکی از رایج‌ترین پروتکل‌های ارتباطات اتوماسیون (Automation Communication Protocols) در اتصال دستگاه‌های الکترونیکی صنعتی که امروزه از آن استفاده می‌شود است.  این پروتکل که معمولا در بستر فیزیکی RS485 پیاده سازی می شود ، کاربردهای زیادی در انواع پروژه های صنعتی و سیستم های ساختمانی دارد.

پروتکل ModBus جهت برقراری ارتباط بین تعداد زیادی (تا ۲۴۰) دستگاه متصل به یک شبکه استفاده می شود، به عنوان مثال دما و رطوبت اندازه گیری شده توسط سنسورها از طریق این پروتکل توسط کنترل کننده Master قرائت می شود.

 

پروتکل Modbus و دلایل استفاده از آن در محیط های صنعتی:

  • جهت کاربردهای صنعتی توسعه و گسترش یافته است
  • به صورت رایگان منتشر شده است
  • گسترش پذیری و نگهداری ساده ای دارد
  • اجازه انتقال بیت ها و بایت ها را بدون محدودیت خاصی به تولید کننده دستگاه می دهد

 

انواع پروتکل‌های ارتباطی مدباس

  • چند نسخه از پروتکل modbus برای پورت سریال و اترنت وجود دارد و متداول‌ترین آن‌ها عبارتند از:
  • Modbus RTU
  • Modbus ASCII
  • Modbus TCP
  • Modbus Plus

نحوه عملکردپروتکل Modbus

این پروتکل بصورت Master/Slave کار می کند. یعنی همواره یک وسیله بعنوانMaster (فرمانده) و بقیه وسیله ها به عنوان Slave (فرمانبر) لحاظ می شوند. بدین صورت که هرگاه Master به یک دستگاه Slave با آدرس مخصوص خودش فرمانی ارسال می کند آن دستگاه جواب را به Master برمیگرداند. این پروتکل داده ها را از سطح فیلد دریافت و ضمن پردازش، آنها را به سطح نظارت ارسال می کند تا دستورالعمل کنترلی مناسب بر اساس داده های دریافتی، آلارم ها و رویدادها اتخاذ گردد MODBUS سریال از سرعت بالایی برخوردار بوده و بدون هر گونه Internal به تبادل اطلاعات می پردازد.

 

انواع حالت های عملکرد در پروتکل Modbus

مد Unicast:

در این حالت Master ازSlave خاصی درخواست دیتا می نماید.Slave پس از دریافت Requestپیام Replyرا به Master ارسال می کند. بدیهی است هرSlave باید دارای آدرس خاص و منحصربفردی باشد تا Master بتواند با آن ارتباط برقرار کند.

مد broadcast :

در این حالتMaster پیام خود را به تمامSlave ها میفرستد ولی هیچ پاسخی به Master بر نمیگردد. این مد از جمله برای نوشتن فرامین (Writing Commands) به کار می رود.

قالب استاندارد Modbus  RTU

در پروتکل Modbus  RTU قالب استاندارد به صورت زیر است :

Modbus frame = Start + Address + Function code + Data + CRC Error check + End

آدرس ( Address )

هر slaveدارای یک شناسه از 1تا 247 می باشد .زمانی که master درخواست اطلاعات می کند اولین بایت پیغام به عنوان آدرس slave فرستاده می شود. بدین صورت slave متوجه می شود که پیام ارسال شده برای آن است یا نه. در واقع Master در ارتباط Unicast آدرس را در این فیلد قرار می دهد و Slave نیز وقتی پاسخ میدهد آدرس خودش را در این فیلد می گذارد تا Master بفهمد کدام Slave پاسخ داده است.

عملکرد ( Function Code )

دومین بایتی که توسط سیستم master ارسال می شود کد مربوط به انتخاب عملکردی است که باید انجام شود مثلا بایستی از Slave خوانده شود و یا در Slave نوشته شود.

دیتا ( Data )

این فیلد حاوی اطلاعاتی بیشتر برای slave است تا عمل تعیین شده به وسیله ی function code ها را انجام دهد که بسته به نوع عملکرد انتخابی در مرحله قبل میتوند از 1 تا n بایت متغیر باشد.

بایت های چک ( CRC )

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

 فرمت کلی در مد RTU

نکته: بین هر فریم یک فاصله زمانی وجود داردکه حداقل به اندازه 3.5 کاراکتر است و به آن فاصله خاموشی (silent Interval) نیزمیگویند. در نتیجه اگر بین دو کاراکتر متوالی یک فریم تاخیری بیش از 1.5 کاراکتر پیش بیاید نشان دهنده اشکال است.

بررسی Modbus  ASCII

در این مد هر 8 بیت از بایت پیام بصورت 2 کاراکتر ASCII ارسال می شود. از این رو بازدهی آن نسبت به RTU کمتر است. این مد در جایی که لینک فیزیکی یا قابلیت های وسیله ، اجازه استفاده از مد RTU را نمی دهد ( به ویژه از نظر مدیریت تایمر ها ) استفاده می شود.

 

ساختار پیام در ModBus

دستگاه‌های modbus بااستفاده از تکنیک Master-Slave (Client-Server برای اترنت) ارتباط برقرار می‌کنند که در آن تنها یک دستگاه (Master-Slave) قادر به آغاز تبادلات ( تحت عنوان صف ها (queries) ) هست.

سایر دستگاه‌ها (Slaves/Clients) با تحویل داده‌های درخواستی به Master یا با انجام عمل درخواستی در query پاسخ می‌دهند.

Slave به هر دستگاه جانبی مانند I / O transducer، دریچه، درایو صنعتی شبکه یا سایر دستگاه‌های اندازه‌گیری گفته می شود که اطلاعات را پردازش می‌کند و با استفاده از modbus پیام پاسخ خود را به Master ارسال می‌کند.

Master ها می‌توانند تک تک Slave ها را در نظر بگیرند یا پیام همه جانبه (Broadcast message) را به تمام Slaveها ارسال کنند. Slaveها به تمام پرسش‌های ارسالی پاسخ می‌دهند اما به پیام‌هایBroadcast پاسخ نمی‌دهند.

Slaveها به خودی خود پیامی را ارسال نمی‌کنند و تنها به صف پیام ارسالی از Master پاسخ می‌دهند.

 

درخواست Master شامل موارد زیر خواهد بود:

  • آدرس) Salve آدرسbroadcast)
  • کد عملکرد با دستور خواندن یا نوشتن داده به  Slave
  • «داده‌های» دستور نوشتن اگر دستور نوشتن توسط Master ارسال شده باشد
  • قسمت بررسی خطا
  • بررسی خطا مقداری است که Salve یا Master در ابتدای انتقال یا پاسخ ایجاد می‌کند و سپس زمان دریافت پیام بررسی می‌شود تا صحیح بودن محتوا تایید شود

 

پاسخ یک Slave شامل موارد زیر می‌شود:

  • قسمت‌هایی که دریافت درخواست را تایید می‌کند
  • داده‌هایی که باید برگردانده شوند
  • داده‌های بررسی خطا
  • اگر خطایی رخ ندهد، پاسخ Slave  حاوی داده‌های درخواستی خواهد بود
  • اگر خطایی در صف پیام دریافتی توسط Slave رخ دهد، یا اگر Slave نتواند عملکرد درخواستی را انجام دهد، Slave پیام استثنایی (Exception message) را به عنوان پاسخ خود برمی‌گرداند

 

 

انواع کدهای عملکرد (Function Code)

1- عمومی ( Public )

بصورت استاندارد از قبل تعریف شده هستند و برای مقاصد مشخص بکار میروند و توسط modbus.org تایید شده هستند.

2- خاص ( User Define )

توسط کاربر تعریف می شوند و نیازی به تایید موسسه Modbus.org ندارند ولی باید توجه داشت که کد های رزرو شده را برای این فانکشن ها نمیتوان استفاده کرد. کد فانکشن های کاربر میتواند در محدوده 65 تا 72 یا 100 تا 110 باشد.

فانکشن کد 01 یا Read Coils

این فانکشن برای خواندن وضعیت 1 تا 2000 خروجی از روی وسیله متصل به باس شبکه بکار میرود. در بسته PDU علاوه بر کد 01 آدرس اولین خروجی و تعداد آنها داده می شود. آدرس خروجی از صفر شروع می شود یعنی مثلاً خروجی های 1 تا 16 بصورت 0 تا 15 آدرس می گیرند.

 

محدودیت های شبکه ModBus

Modbus به دلیل استفاده از لینک های سریال RS232-RS485 دارای محدودیت های شد که به برخی از آنها اشاره میگردد:

کند بودن خطوط سریال که بین ۹۶۰۰ تا ۱۱۵۰۰۰بیت در ثانیه کار میکنند یعنی در ماکزیمم حالت ۰٫۱۱۵ mbps که این سرعت در مقایسه با شبکه های ارتباطی امروزی که ۱۰۰Mbps یا حتی چند Gbps سرعت دارند پایین است.

از آنجا که توسط RS232 فقط دو وسیله و توسط RS485 بین ۲۰ تا ۳۰ وسیله امکان ارتباط دارند از اینرو برای ارتباط دادن تعداد زیادی وسایل مثلاً ۵۰۰ وسیله نیاز به ارتباطات پیچیده درختی شکل است.

ارتباط سریال Modbus بصورت MASTER/SLAVE است بدین معنی که روی باس فقط یک وسیله (MASTER) اجازه صحبت با SLAVE ها را دارد.

 

نکته: مد RTU که بعضا به آن ModBus-B بعنوان ModBus Binary گفته می شود مد اصلی است، مد ASCII که بعضا ModBus-A نیز گفته می شود برای برخی پیغام ها به کار می رود که این پیغامها طول شان دو برابر پیغام های RTU می باشد.

پروتکل Modbus از لایه های 2،1 و 7 مدل OSI استفاده می کند و در لایه فیزیکی RS232/RS485 را به کار می برد.

نظرات بازدیدکنندگان