تشریح Modbus

Modbus - مقاله

موضوع مقاله : تشریح Modbus

تشریح Modbus - MODBUSتشریح Modbus - MODBUS2.jpgتشریح Modbus - MODBUS3

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

در حال حاضر یکی از معمول ترین پروتکل‌ها در اتصال دستگاه‌های الکترونیک صنعتی است. دلایلی که این پروتکل در محیط‌های صنعتی کاربرد فراوانی دارد عبارتند از:

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

 

دستگاه درخواست کننده اطلاعات (دستگاه اصلی) “Modbus Master” نام دارد و دستگاه های تهیه کننده اطلاعات ( شامل سنسورها و عملگرها و … ) “Modbus Slaves” هستند. در یک شبکه استاندارد Modbus، یک Master و حداکثر 247، Slaves وجود دارد که هر یک دارای آدرس خاص از 1 تا 247 هستند. Master همچنین می تواند اطلاعات را روی Slaves بنویسد و یا تغییر دهد. master به طور معمول یک کنترلر منطقی قابل برنامه ریزی (PLC)، کنترلر اتوماتیک قابل برنامه ریزی (PAC)، سیستم کنترل توزیع (DCS ) یا پایانه ی از راه دور (RTU) می باشد. slave عمدتا دستگاه های Field هستند که همه آنها به شبکه متصل می شود. شکل زیر یک شبکه MODBUS RTU را که شامل یک master مانند یکPLC,PACویا DCS و slave هایی را که قابل افزایش تا تعداد247 عدد می باشند را نشان می دهد.

تشریح Modbus - 33 6

موارد مورد استفاده MODBUS

Modbus یک پروتکل open است ، به این معنی که تولید کنندگان این امکان را دارند که بدون نیاز به پرداخت هزینه اشتراک ، از آن در تجهیزات خود استفاده کنند. این پروتکل به یک پروتکل استاندارد در صنعت تبدیل شده است. به طور معمول برای انتقال سیگنال ها از دستگاه های ابزار دقیق و كنترل به سیستم كنترل اصلی یا سیستم جمع آوری داده ها استفاده می شود، به عنوان مثال سیستمی كه دما و رطوبت را اندازه گیری می كند و نتایج را به رایانه ارتباط می دهد. Modbus اغلب برای اتصال کامپیوترهای نظارتی دارای واحد ترمینال از راه دور (RTU:remote terminal unit) ، در سیستم های نظارت و جمع آوری داده ها (SCADA) استفاده می شود. توسعه و بروزرسانی MODBUS را سازمان مدیریت MODBUS انجام می‌دهد.این سازمان از کاربران مستقل و تأمین کنندگان دستگاه‌های سازگار با پروتکل MODBUS تشکیل شده‌است.  این پروتکل، داده ها را از سطح فیلد دریافت و ضمن پردازش، آنها را به سطح نظارت ارسال می کند تا دستورالعمل کنترلی مناسب بر اساس داده های دریافتی، آلارم ها و رویدادها اتخاذ گردد.

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

  • کند بودن خطوط سريال که بين ٩٦٠٠ تا ١١٥٠٠٠بيت در ثانيه کار ميکنند يعني در ماکزيمم حالت Mbps ٠.١١٥ که اين سرعت در مقايسه با شبکه هاي ارتباطي امروزي که Mbps١٠٠ يا حتي چند Gbps سرعت دارند پايين است .
  • از آنجا که توسطRS232 فقط دو وسيله و توسط RS485 بين ٢٠ تا ٣٠ وسيله امکان ارتباط دارند از اينرو براي ارتباط دادن تعداد زيادي وسايل مثلا ٥٠٠ وسيله نيازبه ارتباطات پيچيده درختي شکل است.
  • ارتباط سريال Modbus بصورت Master/Slave است بدين معني که روي باس فقط يک وسيله (Master) اجازه صحبت با گروهي از Slave ها را دارد.

تشریح Modbus - 333

با وجود اين محدوديت ها پروتکل Modbus در عرصه اتوماسيون جايگاه ويژه خود را پيدا کرد. برخي از ويژگيهاي پروتکل Modbus نظير فرمت فريم ها و توالي آنها و فانکشن هاي کاربردي ثابت هستند برخي ديگر مانند وسيله و مد انتقال، توسط کاربر قابل انتخاب هستند. اين ويژگيها وقتي سيستم در حال کار است قابل تغيير نمي باشند.

نسخه های مختلفی از مدباس برای خطوط سریال مانند ModBus RTU و ModBos ASCII و برای شبکه های اترنت از ModBus TCP مورداستفاده قرار می­گیرد.

  1. Modbus RTU متداول ترین حالت Modbus است. انتقال داده در این روش به صورت باینری صورت می گیرد و بصورت سريال رويRS485 يا RS232 کار ميکند.  مد RTU که بعضا به آن ModBus-B بعنوان ModBus Binary گفته می شود مد اصلی است. رابط اصلی مدباس بر روی ارتباطات سریال RS-232 اجرا می­شود، اما بیشتر مدباس­ های اخیر از RS-485 استفاده می کنند زیرا این نوع، مزایای زیر را ایجاد می­کند:
  • فاصله های طولانی تر
  • سرعت بالاتر
  • امکان استفاده از دستگاه های چندگانه (multiple devices) در یک شبکه

 مدباس Master-Slave مبتنی بر RS-485  از اتصالات فرستنده و گیرنده دو سیمه (two-wire) استفاده می­کند.

تشریح Modbus - 22 3تشریح Modbus - 11 1

2-Modbus ASCIIاز کاراکترهای ASCII جهت انتقال داده استفاده می کند و بصورت سريال رويRS485 يا RS232 کار ميکند.  مد ASCII که بعضا ModBus-A نیز گفته می شود برای برخی پیغام ها به کار می رود که این پیغامها طول شان دو برابر پیغام های RTU می باشد.

3-Modbus/TCP از استاندارد TCP/IP برای انتقال داده با سرعت بالاتر مورد استفاده قرار می گیرد و روي اترنت کار ميکند.

4-Modbus Plus      که بصورت Token Pass و با سرعت بالا طراحي شده است .

تشریح Modbus - 99 4

در رابط های ساده ­ای مانند RS232 یا RS485 ، پیام های مدباس با فرم ساده در شبکه ارسال می شوند و شبکه تنها به اتصال مدباس اختصاص داده می شود. با این حال، اگر شبکه به چندین دستگاه ناهمگن (multiple heterogeneous devices) نیاز داشته باشد که این دستگاهها از یک شبکه چند منظوره مانند TCP / IP  مبتنی بر اترنت استفاده می­کنند، پیامهای مدباس در بسته های اترنت با فرمت مورد نظر برای این رابط فیزیکی تعبیه شده است. بنابراین در این مورد، مدباس و سایر پروتکلهای ترکیبی(mixed protocols) ، می­توانند همزمان در یک رابط فیزیکی هماهنگ وجود داشته باشند. یعنی می توان گفت، به این دلیل که مدباس از پروتکل های استاندارد TCP / IP استفاده میکند، پس با همه دستگاه های مجهز به استاندارد اترنت سازگار است.

تشریح Modbus - 66 4

عملکرد MODBUS

اطلاعات modbus از طریق خطوط سریال بین دستگاه ها منتقل می شود. ساده ترین حالت، راه اندازی با یک کابل سریال است که درگاه های سریال را به دو دستگاه ، یک Master و Slave متصل می کند.

داده ها بصورت سری هایی از صفر و یک که بیت نامیده می شوند، ارسال می شود. هر بیت بعنوان ولتاژ متناظر ارسال می شود. صفر ها بعنوان ولتاژ مثبت و یک ها بعنوان ولتاژ منفی ارسال خواهند شد. بیت ها با سرعت بسیار بالایی ارسال می شوند. سرعت ( baudrate )  نرمال ارسال داده در مدباس 9600 بیت بر ثانیه است.

تشریح Modbus - 77 1

هنگامی که  Master Modbus RTU اطلاعاتی را از یک دستگاه دریافت می کند، master پیامی را  که شامل آدرس دستگاه ها، داده ها و یک  چک سام (checsum) برای تشخیص خطا ارسال میکند. همه ی دستگاها وslave ها موجود در شبکه این پیام را می بیند، اما تنها دستگاهی که آدرس آن در پیام ارسالی از طرف master موجود می باشد پاسخ می دهد. slave ها در شبکه Modbus نمی توانند با یکدیگر ارتباط برقرار کنند، و می توانند به یک master پاسخ دهند.

ذخیره DATA در MODBUS استاندارد

اطلاعات در دستگاه Slave در چهار جدول مختلف ذخیره می شود. در دو جدول مقادیر گسسته خاموش/روشن ( کویلی ) ذخیره می شود و دو جدول دیگر مقادیر عددی ( رجیستر ها ) ذخیره می شود.

  • هر جدول شامل 9999 مقدار است.
  • هر کویل یا کنتاکت در یک بیت و بین آدرس های 0000 و 270Eذخیره می شود.
  • هررجیستر شامل یک کلمه یا 16بیت یا 2 بایت نیز بین آدرس های 0000 و 270E ذخیره میشود.
  • شماره های Coil / Register را می توان به عنوان نام مکان در نظر گرفت چون در پیام های واقعی ظاهر نمی شوند. آدرس دیتا در پیام ها استفاده می شود. به عنوان مثال ، اولین رجیستر با شماره 40001 دارای آدرس داده 0000 است.هر جدول دارای نقطه شروع رجیستر متفاوت (OFFSET) است. 1 , 10001 , 30001 , 40001 .

تشریح Modbus - 74

تشریح انواع شیوه های انتقال درMODBUS

  1. Modbus ASCII

تمام پیام ها در هگزا دسیمال با استفاده از مشخصه های  ASCII چهار بیتی رمزگذاری می شوند. Modbus ASCII شروع هر پیام را با کاراکتر کولون (3A hex) “:” نشان می دهد. پایان هر پیام با کاراکتر برگشت و کاراکتر خط خط )هگز 0D و (0A خاتمه می یابد. اینکار اجازه می دهد تا فاصله بین بایت ها متغیر باشد و برای انتقال از طریق برخی مودم ها مناسب می باشد. Modbus ASCII سرعتش از سه پروتکل کمتر است، اما برای زمانی که مودم های تلفنی یا رادیو (RF) استفاده می شود مناسب می باشد. دلیل این مناسب بودن این است که ASCII از کاراکترها برای محدود کردن پیام استفاده می کند. به دلیل این محدودیت پیام، هر گونه تاخیر در رسانه انتقال باعث نمی شود که پیام توسط دستگاه دریافتی اشتباه تفسیر شود. این می تواند هنگام برخورد با مودم های آهسته، تلفن های همراه، اتصالات پر سر و صدا و یا دیگر رسانه های سخت افزاری مهم باشد.

  1. Modbus RTU

 داده ها به صورت دوتایی کدگذاری می شوند و فقط یک بایت ارتباط در هر بیت داده نیاز دارند. این برای استفاده بیش تر از RS232 یا شبکه های multi-drop RS485، در سرعت های 1200 تا 115K ایده ال می باشد. رایج ترین سرعت ها 9600 و 19200 است. پروتکل صنعتی Modbus RTU به طور گسترده ای مورد استفاده قرار می گیرد.

  1. Modbus / TCP

صرفا  مدباس روی حالت اترنت است. به جای استفاده از آدرس های دستگاه برای ارتباط با دستگاه های slave از آدرس های IP استفاده می شود. باModbus / TCP، داده های Modbus به سادگی در داخل یک بسته TCP / IP قرار داده می شوند، بنابراین هر شبکه اترنت که از TCP / IP پشتیبانی می کند باید بلافاصله از Modbus / TCP پشتیبانی کند.

تشریح Modbus - 85 1

تفاوت بین Modbus RTU و Modbus ASCII 

دو حالت انتقال اولیه در ارتباطات Serials Modbus وجود دارد، ASCII  وRTU

این شیوه های انتقال، راه کدگذاری پیام های  مدباس را مشخص می کنند. پیام ها کدگذاری شده در قالب ASCII قابل خواندن هستند، در حالی که در RTU پیام های کدگذاری شده به صورت باینری می باشند وقابل خواندن نیستند .  اندازه ی پیام های RTU کوچکتر است، که اجازه می دهدتبادل اطلاعات بیشتری  در همان زمان نسبت به ASCII صورت بگیرد. با این حال، همه nodeها در یک شبکه مدباس باید از یک حالت انتقال مشابه استفاده کنند، به این معنی که Modbus ASCII نمی تواند با Modbus RTU ارتباط برقرار کند و بالعکس. در MODBUS ASCII، پیام ها با مقدار هگزادسیمال با کاراکترهای جامع ASCII، نشان داده می شوند.کاراکترهای مورد استفاده برای این کدگذاری 0 … 9 و A … F هستند. برای هر بایت اطلاعات، دو بایت ارتباطی استفاده می شود زیرا هر یک بایت ارتباط تنها می تواند 4 بیت را در سیستم هگزادسیمال تعریف کند. با این حال،Modbus RTU  اطلاعات را در قالب باینری جایی که هر بایت داده در یک بایت ارتباطی کدگذاری شده است، مبادله می کند.

تشریح Modbus - 86

ویژگی های Modbus ASCII و Modbus RTU

تشریح Modbus - 89

ساختار MODBUS RTU

پیام های مدباس ساختار مشابهی دارند که از 4 قسمت اصلی تشکیل شده اند. ترتیب این قسمت ها در همه پیام ها یکسان است. همین مسئله موجب تجزیه آسان محتوای پیام های مدباس میشود. در شبکه مدباس، مکالمه همواره توسط یک Master آغاز میشود. Master پیامی را ارسال میکند، با توجه به محتویات آن، slave پیام را تفسیر کرده و به آن پاسخ میدهد. آدرس دهی فیزیکی slave در سرتیتر هر پیام، مشخص میکند که کدام دستگاه slave باید به پیام پاسخ دهد. نودهای (nodes) دیگر موجود در شبکه مدباس درصورتی که فیلد آدرس با آدرس خودشان مطابقت نداشته باشد، این پیام را نادیده میگیرند. توابع پروتکل مدباس دستورات خواندن و نوشتن را برای حافظه داخلی slave اجرا میکنند تا پیکربندی، نظارت و کنترل ورودی ها و خروجی های slave را ثبت کند.

تشریح Modbus - 90 1

بطورکلی Master برای خواندن هر slave باید آدرس کد آنرا پیج کند، در فریم ارسالی توسط Master  اطلاعات دیگری نیز وجود دارد که به ترتیب عبارتست از یک بایت فانکشن کد، دو بایت آدرس دیتا،  دو بایت تعداد آدرس رجیستر خوانده شونده و دو بایت هم کد حفاظتی CRC که کلیه اطلاعات فریم توسط آن چک می شود و از گم شدن اطلاعات و یا جابجایی آنها جلوگیری می کند.

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

تشریح Modbus - 30 1

در نتیجه برای فعال کردن ارتباط با یک دستگاهslave،  Masterباید یک پیام حاوی اطلاعات زیر را بفرستد:

  • آدرس دستگاه
  • کد عملکرد
  • داده ها
  • بررسی خطا

آدرس دستگاه(Address)

آدرس slave ها  از 0 تا 247 میباشد. پیام های فرستاده شده به آدرس0 (broadcast messages*) میتواند توسط تمام slave ها پذیرفته شود، اما شماره ها 1-247 آدرس های دستگاه های خاص هستند. به استثنای broadcast messages، یک دستگاه slave همیشه به یک پیام Modbus پاسخ می دهد تا Master   بداند پیام دریافت شده از کدام دستگاه یا slave است.

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

  • مدUnicast

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

  • مد broadcast

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

کد های عملکرد(Function Codes)

کدهای تابع از 1 تا 255 دسیمال را شامل میشود (128 تا255 رزرو شده اند و برای پاسخ های خاص استفاده میشود.) برخی از کدهای عمکرد در جدول مقابل آمده است. در ادامه به توضیحات بیشتر میپردازیم.

تشریح Modbus - 112

اطلاعات (Data)

داده ها، آدرس ها را در نقشه حافظه دستگاه تعریف می کنندکه شامل مقادیر داده هایی است که در حافظه دستگاه نوشته می شود، یا حاوی سایر اطلاعات مورد نیاز برای انجام درخواست مورد نیاز است. در فیلد درخواست داده، master اطلاعات مورد نیاز برای تکمیل هر عملیاتی که با «کد عملکرد» مشخص شده، ارائه میکند.

درخواستهای master در قسمت dataمعمولا شامل موارد زیر است:

  • آدرس رجیستر مورد نیازدر Slaveمشخص شده (map register address)
  •  تعداد رجیسترها برای ارائه در درخواست.
  •  دستور نوشتن «داده» ازMaster (write data)
  • دستورات مربوط به slave ها (دستورات بردکست)

بررسی خطا(CRC)

بررسی خطا(Cyclic Redundancy Check) یک مقدار عددی 16 بیتی است که نشان دهنده چک CRC است. CRC توسط master تولید می شود (از طریق یک روش پیچیده شامل  ORing) و تغییر داده ها و توسط دستگاه دریافتی (slave ها ) بررسی میشود. اگر مقادیر CRC باهم منطبق نباشند، slave درخواست بازنویسی پیام را میکند. در بعضی از سیستم ها، یک چک همگانی نیز می تواند مورد استفاده قرار گیرد.

دستگاه slave تابع درخواستی را اجرا می کند سپس یک پیام را به master ارسال می کند. پیام بازگشتی حاوی آدرس slave و کد تابع درخواستی است (بنابراین master می داند که دستگاه slave پاسخ می دهد.) در واقع بررسی خطا (error checking) مقداری است که master یا slave، در ابتدای انتقال یا پاسخ ایجاد میکند و از بررسی آن برای تأیید صحت محتویات پیام دریافت شده، استفاده میکند.

تشریح Modbus - 54

واحد داده در پروتکل مدباس  (PDU)

محل درخواست خدمات درپیام یاواحد داده پروتکل مدباس یاPDU (Protocol Data Unit)متشکل است از:

  • کد عملکرد یا کد تابع(Function code)
  • تعداد داده های (data bytes) درخواست شده توسط Master

تشریح Modbus - 58

فریم عمومی مدباستشریح Modbus - 48

 

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

دستگاه های مبتنی بر پروتکل مدباس به طور معمول، حاوی یک نقشه رجیستر کلی هستند. با استفاده از این نقشه، پیکربندی، ورودی و خروجی داده ها خوانده و نوشته میشوند. برای درک بهتر عملیات کلی باید به نقشه رجیستر slave مربوط به دستگاه مراجعه کرد. مدل داده ها در پروتکل مدباس دارای یک ساختار ساده شامل چهار نوع داده اساسی است:

  •  ورودی های مجزا (Discrete Inputs).
  •  خروجی های کویل (سیم پیچ)  (Coils Outputs).
  •  ورودی رجیستری یا داده های ورودی (Input Registers or Input Data).
  •  نگهدارنده رجیستری یا داده های خروجی (Holding Registers or Output Data).

تشریح Modbus - 61

حافظه رجیستری مدباس (memory registers) در هر دستگاه حول چهار نوع مرجع داده سازماندهی میشوند. این نوع داده ها بیشتر توسط عدد آغازین مورد استفاده در حافظه آدرس دستگاه (memoryaddress)، شناخته میشوند. مانند:

  • صفر (0) موجود در رجیستر به معنی: خواندن و یا نوشتن (خروجی های مجزا یا کویل)
  • یک (1) موجود در رجیستر به معنی: خواندن (ورودی های مجزا)
  • سه (3) موجود در رجیستر به معنی: خواندن (ورودی رجیستری)
  • چهار(4)موجود دررجیستر به معنی:خواندن یانوشتن روی (داده خروجی ونگهدارنده رجیستری)

MODBUS MAP

فیلد کد عملکرد  مشخص میکند که با استفاده از کدام گروه داده های رجیستری از slave، آن را میخواند یا مینویسد.

رجیسترهای Holding طبق Modbus Map ، به صورت پیش فرض، در محدوده 4xxxx تعریف شده اند.این بدین معناست که آدرس شروع اولین رجیستر خروجی 40001 میباشد. از طرف دیگر رجیستر شروع در فریمی که خوانده میشود از 0 شماره گذاری میشود. بنابراین رجیستر شروع صفر به صورت اتوماتیک به رجیستر holding شماره 40001  اشاره میکند. بنابراین با توجه به اینکه اولین رجیستر holding شماره 40001 میباشد نه شماره 40000، آفستی که برای شماره رجیستر اولیه تعریف میشود قابل توجیه است.

به عنوان مثال، یک کد عملکرد 03، که نگهدارنده رجیستری 40001-40002 را میخواند،
به عنوان داده های رجیستری 0000 آدرس دهی میشود که در فیلد آدرس داده ها در پیام ارسالی به slave قرار میگیرد.کد عملکرد 03 بر روی موجودی رجیستری نوع (4xxxx) در نقشه داده های slave کار میکند
زیرا درخواست نوع عملیات داده ها نگهدارنده رجیستری مورد استفاده را مشخص میکند و بر آدرس دهی (4xxxx) دلالت دارد.

تشریح Modbus - 78

پیام درخواست شامل:

  • آدرس 01 – (Slave)
  • کد عملکرد 03-(Function code) ، خواندن از رجیسترهای Holding (4xxxx)
  • آدرس شروع (starting address)، همان بایت های HI و LO یا (0000) هستند که شروع رجیستر را مشخص میکنند.
  • تعداد آدرس هایی (count number of addresses) که از slave خوانده میشود، معادل است با داده های رجیستری HI و LO از ارزش تعدادی (0002) و مشخص کننده «تعداد رجیسترهایی» است که از slave خوانده خواهند شد.

تشریح Modbus - 55

مدباس نزدیک 255 کد عملکرد دارد. اما کدهای 01 (خواندن کویل ها)، 02 (خواندن ورودی های گسسته)، 03 (خواندن رجیسترهای holding) و 04 (خواندن رجیسترهای ورودی) رایج ترین آنها برای خواندن توابع می باشند که برای جمع آوری داده ها از slave های مدباس مورد استفاده قرار میگیرند.

مثال: خواندن سه رجیستر 16 بیتی از حافظه Slave

بسته درخواستmasterجهت خواندن رجیسترهایholding بسته پاسخ slave جهت خواندن رجیسترهای holding
·         آدرس slave (Slave Address= 1بایت)

·         کد عملکرد (03) (Function Code = 1بایت)

·         آدرس رجیستر شروع (Start Address =2 بایت)

·         تعداد رجیسترهایی که باید خوانده شود(nr=2بایت)

·         خطای CRC (2بایت)

·         آدرس slave (Slave Address= 1بایت)

·         کد عملکرد (03) (Function Code = 1بایت)

·         تعداد بایت (2*nr =1 بایت)

·         مقدار داخل اولین رجیستر خواسته شده(2 بایت)

·         مقدار داخل دومین رجیستر خواسته شده(2یابت)

·         …

·         خطای CRC (2بایت)

 Mastar از slave شماره 100درخواست می کند تا ولتاژ  فازهای A ، B و C را به صورت لحظه ای بدهد. طبق نقشه رجیستری این پارامترها مثلا در رجیسترهای 40011 ، 40012 و 40013 قراردارند. مطابق با پروتکل Modbus ، رجیستر 40011 هنگام انتقال رجیستر شماره 10 نامیده میشود. در این درخواست باید 3 رجیستر از 10 شروع شود.

آدرس Slave: 100 = 64(Hex)

رجیستر شروع : 10 =000A(Hex)

بسته درخواستی Master: (پس زمینه سفید نشان دهنده قسمت DATA است.)

تشریح Modbus - 44 5

توجه: مقادیر نشان داده شده در بسته همگی در قالب هگزادسیمال نشان داده می شوند.

پاسخ برگشتی از Slave:

تشریح Modbus - 223

Master داده ها را به صورت زیر دریافت میکند.     رجیستر 40011: 04AE(Hex) = 1198

                                                                   رجیستر 40012: 04B0(Hex) = 1200

                                                                   رجیستر 40013: 04B5(Hex) = 1205

خواندن و نوشتن ورودی ها و خروجی های دیجیتال به روش مشابه با استفاده از توابع خواندن و نوشتن مختلف انجام می شود. با فرض اینکه دستگاه مطابق با مشخصات Modbus باشد، یک کار برنامه نویسی ساده برای تنظیم master برای خواندن و نوشتن داده ها، بررسی وضعیت، به دست آوردن اطلاعات تشخیصی و انجام توابع کنترل و نظارت مختلف مورد نیاز است.

Wireless Modbus استفاده از دستگاه های بی سیم در برنامه های کاربردی صنعتی باعث صرفه ی جویی در هزینه های نصب می شود. تکنولوژی بی سیم مهندسان کنترل فرایند و اتوماسیون را قادر می سازد تا به سرعت وبه طور موثر اطلاعات را در زمان واقعی از هر نقطه از field یا کارخانه وشاید دیگر مکان های از راه دور دیگر در هر زمانی که برای بدست اوردن اطلاعات نیاز ضروری و مبرم لازم است بدست آورند.

توپولوژی مدباس بی سیم

تشریح Modbus - 80 2

خطای پیام های پروتکل مدباس

تاکنون نحوه ارسال درخواست از طرف Master  بررسی شد.اکنون نحوه پاسخ slave را بررسی میکنیم.

  • پاسخ عادی slave(هیچ خطایی رخ نداده باشد)، حاوی داده های درخواست شده خواهد بود. اگر تعداد خروجیها مضربی از 8 نباشد در این صورت در بایت آخر سایر بیت های باقیمانده با صفر پر میشود ولی از آنجا که تعداد خروجی ها نیز برگردانده میشود Master متوجه میشود که تا کجا مربوط به خروجی ها است.
  • پاسخ خطای slave(خطایی در پیام دریافت شده رخ دهد یا slave قادر به انجام اقدام مورد درخواست نباشد)، کد معادل کد عملکرد اصلی را با 80 جمع کرده وبازمیگرداند. (به عیارت دیگر همان کد عملکرد را به اضافه 1 کردن بیت پرارزش همان بایت، بازمیگرداند).(پاسخی مبنی بر رد آن پیام)

تشریح Modbus - 60

به عنوان مثال، دستور «خواندن موجودی رجیستری» (کد عملکرد03) دارای کد عملکرد 1 بایتی حاوی 4 بیت دوتایی0000 0011   (03 Hex) است. اگر دستگاه slave درخواست را بدون خطا قبول کند، همان کد را در پاسخ خود بازمیگرداند.

تشریح Modbus - 20 1

اگر خطایی رخ دهد، slave یک بایت حاوی 4 بیت دوتایی 1000 0011 (83hex) (با ارزش ترین  بیت متعلق به منطق 1) در فیلد «کد عملکرد» باز میگرداند.همچنین  یک کد منحصر بفرد (کد حذف) را در فیلد داده ها در پاسخ اضافه میکند که به دستگاه slave نوع خطای رخ داده و یا علت خطا را نشان میدهد.

تشریح Modbus - 01تشریح Modbus - 02

توجه: بهتر است یک time out تنظیم گردد تا masterبه طور نامحدود منتظر پاسخی نماند، ممکن است هرگز پاسخی دریافت نکند. 

 

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

کد عملکرد 01، کد خواندن کویل (Read Coils)

برای خواندن وضعیت کویل های 1 تا 2000 در یک دستگاه slave استفاده میشود. درخواست PDU اولین آدرس کویل مربوط به حافظه رجیستری های slave و تعداد کویل هایی که باید از دستگاه slave خوانده شوند را، مشخص میکند.

کد عملکرد 02، کد خواندن داده های ورودی گسسته (Read Discrete Input)

برای خواندن ورودی های گسسته 1 تا 2000 مربوط به یک slave استفاده میشود. درخواست PDU اولین آدرس ورودی مربوط به حافظه رجیستری های slave و تعداد ورودی هایی که باید از دستگاه slave خوانده شوند را، مشخص میکند.

کد عملکرد 03، کد خواندن رجیسترهای نگهدارنده  (Read Holding Registers)

برای خواندن محتویات رجیسترهای نگهدارنده مربوط به یک slaveِ استفاده میشود. درخواست PDU شروع آدرس رجیستری و تعداد رجیسترهایی که باید از دستگاه slave خوانده شوند را، مشخص میکند.

کد عملکرد 04، کد خواندن رجیستری های ورودی (Read Input Registers)

برای خواندن 1 تا 125 از رجیستری های ورودی پیوسته در یک دستگاهِ slaveاستفاده میشود. درخواست PDU شروع آدرس رجیستری و تعداد رجیسترها را، مشخص میکند.

کد عملکرد 05، کد خواندن تک کویل (Write Single Coil)

برای نوشتن یک خروجی به صورت ON یا OFF در یک دستگاه slaveِ  استفاده میشود.

کد عملکرد 06، کد نوشتن تک رجیستر (Write Single Register)

برای نوشتن یک رجیستر در یک دستگاه slave  استفاده میشود. درخواست PDU آدرس حافظه رجیستریِ مربوط به slave را که باید نوشته شود، تعیین میکند.

کد عملکرد 15، کد خواندن کویل های چندگانه (Write Multiple Coils)

برای اعمال بر روی هر یک از کویل های متوالی در یک دستگاه slave استفاده میشود.درخواست PDU آدرس حافظه کویلهای ON یا OFF  شده رامشخص میکند.

کد عملکرد 16، کد نوشتن رجیستری های چندگانه (Write Multiple Registers)

برای نوشتن یک بلوک از رجیستری های پیوسته از 1 تا 123 رجیستر در یک دستگاه slave استفاده میشود.

این کدهای عملکرد در مدباس، نمایانگر رایجترین کدهای دستوری خواندن و نوشتن هستند.میتوانید برای آشنایی بیشتر، مشخصات پروتکل مدباس (Modbus protocol specification) را مطالعه فرمایید.

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

ارتباط دستگاه های slave با PLC های کنترل کننده و یا کامپیوترها را میتوان با استفاده از برنامه شبیه ساز پروتکل مدباس بر روی کامپیوتر شخصی اجرا کرد. این نرم افزار امکان استفاده از تمام کد های عملکرد (کدهای دستوری) مربوط به ارتباطات پروتکل مدباس را میدهد. با استفاده از این کدها براحتی میتوان خواندن و نوشتن را با یک slave انجام داد. میتوان از یک کامپیوتر برای اجرای برنامه شبیه سازی slave استفاده کرد و کامپیوتر دیگری را برای اجرای برنامه شبیه سازی master به کار برد. اتصال به یک slave ابتدا با تنظیم پارامترهای ارتباط برای سریال پورت COM انجام میشود. سپس با وارد کردن آدرس slave در فیلد شناسه دستگاه، (به عنوان مثال 1)، انتخاب کد دستوری01  برای خواندن موقعیت کویل های slave در آدرس 0001 و خواندن طول 100 کویل، انجام میشود. همچنین، چندین شرکت ارائه دهنده محصولات و پشتیبانی برای کمک در استفاده از ارتباط پروتکل وجود دارد. ProSoft Technologies، HMS Industrial Communication و MOXA از جمله این شرکتها هستند.

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

bina_chat_bot_iconربات درنامهر
سلام، چطور میتونم کمکت کنم؟