راه اندازی پروتکل مدباس ( ModBus ) در بستر RS485

بازگشت به آموزشگاه

مقدمه

مدباس ( ModBus ) یکی از پروتکل های معروف در زمینه شبکه های صنعتی ( Industrial Network ) می باشد. این پروتکل که معمولا در بستر فیزیکی RS485 پیاده سازی می شود، کاربردهای زیادی در انواع پروژه های صنعتی دارد. در این مقاله به معرفی این پروتکل و پیاده سازی آن می پردازیم.


معرفی پروتکل مدباس

شبکه ModBus یک پروتکل ارتباطی است و ابتدا در سال 1979 توسط Modicon که امروزه Schneider Electric آن را در بر گرفته عرضه شد. کاربرد اولیه آن برای استفاده در PLC ها بود ولی بتدریج بعنوان یک استاندارد ارتباطی پذیرفته شد و بسیاری از سازندگان تجهیزات اتوماسیون آن را پشتیبانی کردند بدین ترتیب Modbus بصورت یک استاندارد باز در آمد بگونه ای که محصولات سازندگان مختلف به سهولت توسط این پروتکل با یکدیگر ارتباط برقرار کردند. سازندگان وسایل کوچک نیز ترجیح دادند این شبکه ModBus را با ارتباط RS232 و یا RS485 روی وسایل خود بکار ببرند تا استفاده از آنها در پروژه های بزرگ میسر گردد.

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

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

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


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

  • Modbus RTU متداول ترین نگارش Modbus است. انتقال داده در این روش به صورت باینری فشرده صورت می گیرد.
  • Modbus ASCII از کاراکترهای ASCII جهت انتقال داده استفاده می کند.
  • Modbus/TCP از استاندارد TCP/IP برای انتقال داده با سرعت بالاتر مورد استفاده قرار می گیرد.
  • ModBus Plus که بصورت Token Pass و با سرعت بالا طراحی شده است و یک باس انحصاری است.


نحوه عملکرد پروتکل مدباس :

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

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


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

مد Unicast:

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

مد broadcast :

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


دیاگرام وضعیت Master :


دیاگرام وضعیت Slave :


قالب استاندارد مدباس RTU :

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

که در شکل زیر هر یک از این بخش ها را مشاهده می کنید :

آدرس ( 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:

در اين مد هر 8 بيت از بايت پيام شامل دو كاراكتر 4 بيتي هگزا دسيمال است. اين ويژگي چگالي ديتا را افزايش داده و باعث مي شود كه نسبت به مد ASCII نرخ تبادل ديتا بهتر باشد. فرمت 11 بيت بسته ديتا در مد RTU به صورت زیر است:

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

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


بررسی مدباس ASCII :

در اين مد هر 8 بيت از بايت پيام بصورت 2 كاراكتر ASCII ارسال مي شود. از اين رو بازدهي آن نسبت به RTU کمتر است. اين مد در جايي كه لينك فيزيكي يا قابليت هاي وسيله ، اجازه استفاده از مد RTU را نمی دهد ( به ویژه از نظر مدیریت تایمر ها ) استفاده می شود. بعنوان مثال در اين مد بايت 0x5B به صورت دو بايت يعني 0x35=5 و0x42=B در می آید. در مد ASCII فرمت 10 بیت هر بسته دیتا به شکل زیر است:

همچنین فريم پيام در مد ASCII به صورت شکل زیر است :

همانطور که مشاهده می کنید ، تجهيزات متصل به باس مرتباً باس را براي يافتن کاراکتر اول مانیتور می کنند. وقتي اين كاراكتر دريافت شد وسيله كاراكتر بعدي را مي گيرد كه آدرس را مشخص ميكند و اگر آدرس به او مربوط بود ساير كاراكترها را دريافت ميكند تا بسته به پايان برسد. كاراكتر پاياني Carriage Return-Line Feedیا CRLF  است. هر بايت ديتا نياز به 2 كاراكتر براي كد كردن ديتا دارد بنابراين براي اطمينان از سازگاري بين مدهاي ASCII و RTU ماكزيمم سايز اختصاص يافته  256×2 كاراكتر است يعني دو برابرسايز ديتاي RTU . بدين ترتيب سايز كل فريم مطابق شكل قبلی 513 كاراكتر خواهد بود.كنترل خطا در اين مد توسط LRC انجام می شود.

—فيلد Function Code يك بايت است كه مي تواند بين 1 تا 255 دسيمال باشد. كدهاي 1 تا 127 براي كار نرمال و كدهاي 128 تا 255 براي پاسخ هاي Exception كه براي شرايط خطا طراحي شده بكار ميرود. فيلد  Data در برخي درخواست هاي خاص ممكن است خالي باشد ( طول صفر ) اين در مواردي است كه ارسال Action به تنهايي براي Slave كفايت ميكند و اطلاعات اضافي مورد نياز نيست. —وقتي خطايي وجود نداشته باشد Slave درخواست  Master را انجام داده و در پاسخ خود به همان كد فانكشن اشاره ميكندكه اصطلاحاً گفته ميشود كد فانكشن اكو شده است. —ولي وقتي اشكالي وجود داشته باشد و Slave نتواند عمل مورد درخواست  Master را انجام دهد در اين حالت پاسخي كه در آن بجاي كدفانكشن كد Exception آمده برگشت داده ميشود تا  Master از بروز خطا مطلع شود.


انواع کدهای عملکرد ( 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 آدرس مي گيرند.بنابراين PDU مربوط به درخواست بصورت شكل زير خواهد بود :

در پاسخ وضعيت خروجي كه 1 براي  ON و 0 براي OFF است توسط بيت هاي ديتا مشخص مي گردد. اگر تعداد خروجي ها مضربي از 8 نباشد در اينصورت در بايت آخر ساير بيتهاي باقيمانده با صفر پر ميشوند ولي از آنجا كه تعداد خروجي ها نيز برگردانده مي شود  Master متوجه مي شود كه تا كجا مربوط به خروجي هاست.

اگرERROR پيش بيايد كد ها بصورت زير خواهند بود:

که کدهای استثنا یا Exception Code ها به صورت زیر می باشند :


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

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

  • كند بودن خطوط سريال كه بين ۹۶۰۰ تا ۱۱۵۰۰۰بیت در ثانیه کار میکنند يعني در ماكزيمم حالت ۰٫۱۱۵ mbps  كه اين سرعت در مقايسه با شبكه هاي ارتباطي امروزي كه ۱۰۰Mbps يا حتي چند Gbps سرعت دارند پايين است.
  • از آنجا كه توسط RS232 فقط دو وسيله و توسط RS485 بین ۲۰ تا ۳۰ وسيله امكان ارتباط دارند از اينرو براي ارتباط دادن تعداد زيادي وسايل مثلاً ۵۰۰ وسيله نياز به ارتباطات پيچيده درختي شكل است.
  • ارتباط سريال مدباس بصورت MASTER/SLAVE است بدين معني كه روي باس فقط يك وسيله (MASTER) اجازه صحبت با SLAVE ها را دارد.

با وجود این محدودیت ها شبکه ModBus در عرصه صنعت کاربرد و جایگاه بسیاری دارد. معمولا در تابلو هایی که از تعداد زیادی اینورتر استفاده میشود شبکه مدباس بین plc و اینورتر ها راه اندازی میکنند.


انواع ماژول های RS485

برای اینکه بتوانید از شبکه مدباس در بستر RS485 درون پروژه های خود استفاده کنید نیاز به یک ماژول مبدل RS485 به TTL می باشد. که طرف TTL آن به واحد UART میکروکنترلر ( RX و TX و GND ) و طرف RS485 آن به کابل RS485 که شامل سه سیم A و B و GND می شود متصل می گردد. در بازار دو نوع مختلف این ماژول مبدل یافت می شود که در تصویر زیر آن ها را مشاهده می کنید. هرچند که ماژول سمت چپ صنعتی تر می باشد اما برای داشتن یک RS485 ایده آل که اقدامات مربوط به نویز و الکتریسیته ساکن ( Protection ) در آن به طور کامل رعایت شده باشد به >> این لینک مراجعه نمایید.


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

نرم افزارهای بسیاری به منظور شبیه سازی پروتکل مدباس وجود دارد که از آن ها برای اتصال تجهیزات دارای پروتکل مدباس به کامپیوتر استفاده می گردد. یکی از معروف ترین و پرکاربرد ترین این نرم افزار ها Modbus Poll نام دارد. از آن جایی که برای داشتن ارتباط مدباس یک MASTER و حداقل یک SLAVE وجود دارد. از دو نرم‌افزار مدباس به نام های Modbus Poll Master و Modbus Poll Slave استفاده می شود. شکل ظاهری این دو نرم افزار را در تصویر زیر مشاهده می کنید.

لینک دانلود نرم افزار مدباس Modbus Poll Master & Slave

از این نرم افزارها می توان برای اتصال تجهیزات مدباس به کامپیوتر استفاده نمود. در صورتی که تجهیز ما Master باشد بایستی از نرم افزار Modbus Poll Slave و در صورتی که تجهیز ما Slave باشد بایستی از نرم افزار Modbus Poll Master استفاده شود. در این دو حالت از یک عدد ماژول مبدل RS485 به USB ( یا استفاده همزمان از دو ماژول مبدل RS485 به TTL و سپس مبدل TTL به USB ) استفاده می شود.

همچنین میتوان با نصب هر دو نرم افزار یاد شده در یک سیستم به صورت مجازی مدباس را شبیه سازی کرد، برای این منظور دو روش زیر وجود دارد:

  • روش اول: استفاده از سخت‌افزار‌های سریال جداگانه. اگر سیستم شما داری دو پورت سریال ( یا دو پورت USB ) باشد می‌توانید آن ها را به یکدیگر متصل کنید.
  • روش دوم: استفاده از نرم افزار ساخت پورت سریال مجازی در سیستم. در این روش با استفاده از نرم افزار Tibbo VSP Manager میتوان به راحتی دو پورت سریال مجازی ساخت و آن ها را به یکدیگر متصل نمود.

نحوه ساخت پورت سریال مجازی با نرم‌افزار Tibbo VSP Manager

ابتدا این نرم افزار را از طریق لینک زیر دانلود کرده و پس از نصب، مراحل زیر را دنبال کنید:

لینک دانلود نرم افزار Tibbo VSP Manager

  1. گزینه Add را بزنید.
  2. در منوی VPS name پورت دلخواه خود را انتخاب کنید.
  3. در منوی Ruting mode می‌توانید سرور و یا کلاینت بودن پورت را مشخص کنید.
  4. OK را بزنید و تمام.

در این روش ما به دو پورت نیاز داریم؛ یکی در حالت Server و یکی در حالت Client. این کار به این دلیل است که دو پورت مجازی از طریق شبکه با هم ارتباط برقرار می‌کنند. پس از اتمام کار، دو پورت با شماره‌های مشخص‌شده به سیستم اضافه‌شده که می‌توانید در Mode RTU از آن‌ها استفاده کنید.


HMI چیست ؟

HMI (اچ ام آی) مخفف Human Machine Interface و به معنای واسطه بین انسان و ماشین می باشد که برای مانیتور کردن و مشاهده پارامترهای دستگاه های صنعتی مثل PLC، اینورتر و… استفاده می شود. HMI در واقع یک نوع مانیتور بوده که می توان آن را برنامه ریزی نمود و با تغییر و نمایش پارامترهای مختلف یک سیستم، پروسه یا ماشین را کنترل نمود.

در واقع HMI یک برنامه ی گرافیکی است که در آن کلیدها (Button)، نمایشگرها (Display)، عقربه ها (Pointer)، شاخص ها (Indicator)، نمودارها (Curve)، آلارمها (Alarm) و… توسط  اشکال گرافیکی ایجاد شده اند و در این برنامه با انتخاب هر المان گرافیکی (مثلاً کلید) و اعمال تغییرات کد متناظر با آن از طریق پورت شبکه و ارتباط با سایر تجهیزات آن شبکه به دستگاه مورد نظر ما ارسال می گردد.

تا مدتی پیش برای امور فوق از کامپیوتر استفاده می شد؛ از آنجایی که نرم افزار های کامپیوتری آسیب پذیر بوده و هراز گاهی ویروسی شده و باعث صدور فرامین اشتباه به محرکها (Actuators) می شدند، میلیون ها دلار ضرر اقتصادی برای کمپانی های مختلف به همراه داشته است. لذا برای کنترل و مانیتورینگ خطوط تولید، پروسه های صنعتی و ماشین آلات مختلف تولید، دستگاه ویژه ای به نام اچ ام آی طراحی شد. وجود برنامه ی گرافیکی علاوه بر جذاب کردن طرح نهایی خطاهای ناشی از اعمال ورودی اشتباه را کاهش داده و هزینه ی نگهداری سیستم را به دلیل عدم استفاده از قطعات مکانیکی کاهش می دهد.

شرکت های زیادی وارد مقوله ساخت HMI شده اند، برخی از این شرکت ها پیش‌تر به تولید PLC نیز پرداخته بودند که مسلما صرفا برای محصولات خود HMIهای اختصاصی طراحی می کنند بااین وجود شرکت های فرعی دیگری نیز هستند که برای تمام برندهای مطرح HMI طراحی می کنند. در زیر نام برخی از شرکت های مطرح سازنده HMI را ذکر نموده ایم؛

  • SIEMENS (زیمنس)
  • ALLEN BRADELY (آلن بردلی)
  • MITSUBISHI (میتسوبیشی)
  • OMRON (امرون)
  • TOSHIBA (توشیبا)
  • DELTA (دلتا)
  • VIGOR (ویگور)
  • LS (ال اس)
  • BECKHOFF (بکوف)
  • FATEK (فتک)
  • FUJI (فوجی)
  • FANUC(فانوک)

DELTA HMI چیست؟

شرکت دلتا DELTA در سال 1971 در کشور تایوان تاسیس گردید. HMI های ساخت شرکت دلتا به عنوان یکی از برترین برندهای نمایشگرهای صنعتی در بازار ایران شناخته می شود، چرا که محصولات اچ ام آی دلتا در کنار قیمت بسیار مناسب خود از کیفیت بسیار بالایی برخوردار هستند. HMI های این شرکت در سری های مختلف برای مصارف صنعتی متنوع ساخته شده است. در زیر سری های مختلف HMI های این شرکت معرفی شده است.

سری TP

این سری از HMI های دلتا سری text panel می باشند که در نمونه های دوخطی، چهارخطی و پنج خطی ارائه می شود. ویژگی های این سری از HMI های دلتا را می توان در عناوین زیر نام برد:

  • ارتباط کاربر از طریق صفحه کلید تابعی
  • صفحه نمایش تک رنگ
  • دارا بودن ارتباط سریال
  • صفحه نمایش های تا 3.6 اینچ
  • حافظه فلش تا 1M
  • نرم افزار مربوطه TP Editor

سری DOP-100

این سری از HMI های دلتا در ابعاد و رنگ ها، و قابلیت های مختلف ارائه شده است. ویژگی های این سری از HMI های دلتا را می توان در عناوین زیر نام برد:

  • ارتباط کاربر از طریق صفحه نمایش لمسی
  • صفحه نمایش چند رنگ (65536)
  • صفحه نمایش تا 10.1 اینچ
  • دارا بودن ارتباطات سریال، USB، Ethernet
  • حافظه فلش تا 256MB

سری DOP-B

این سری از HMI های دلتا در ابعاد و رنگ ها، و قابلیت های مختلف ارائه شده است. ویژگی های این سری از HMI های دلتا را می توان در عناوین زیر نام برد:

  • ارتباط کاربر از طریق صفحه نمایش لمسی و بعضا همراه با کلید های تابعی
  • صفحه نمایش چند رنگ (65536)
  • صفحه نمایش تا 7 اینچ
  • دارا بودن ارتباطات سریال، USB، Ethernet
  • حافظه فلش تا 256MB

دانلود سورس راه اندازی پروتکل ModBUS به زبان های C# و C++ شامل :

  • هدرفایل پروتکل مدباس به زبان ++C ( کلاس مدباس ) برای استفاده در انواع میکروکنترلرها
  • پروژه راه اندازی ارتباط مدباس در Delta HMI با نرم افزار keil و میکروکنترلر ARM STM32
  • داکیومنت های رسمی برای پروتکل Modbus و برای محصولات Delta HMI
  • سورس درایور UART برای میکروکنترلرهای شرکت های NXP و STM32
  • سورس ارتباط کامپیوتر با Slave بوسیله مدباس ( به زبان C# )

لینک خرید آنلاین از فروشگاه الکترو ولت


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

دیدگاه (2)

  • محمدرضا پاسخ

    سلام
    خیلی ممنون از مطالب خوبتون
    تشکر

    1397-02-08 در 11:27
    • ادمین الکترو ولت پاسخ

      سلام دوست عزیز ممنون از همراهی شما

      1400-05-10 در 10:26

دیدگاهتان را بنویسید

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

2 × 1 =

بازگشت به آموزشگاه