اModbus یک پروتکل ارتباطی سریالی است که توسط شرکت Modicon در سال 1979 توسعه یافت. این پروتکل در ابتدا برای استفاده با کنترل کننده های منطقی قابل برنامه ریزی شرکت (PLC) طراحی شده بود. Modbus یک پروتکل باز است که از دستگاه های سریالی که از پروتکل های RS232/RS485/RS422 استفاده می کنند پشتیبانی می کند. سادگی آن و این واقعیت که تولید کنندگان می توانند آن را بدون هیچ هزینه ای در محصولات خود بگنجانند، به آن کمک کرده است تا به محبوب ترین روش اتصال دستگاه های الکترونیکی صنعتی تبدیل شود.
دو سبک اصلی انتقال وجود دارد که هنگام استفاده از پروتکل Modbus استفاده می شود. آنها Modbus RTU و Modbus ASCII هستند. این مقاله به عنوان یک آموزش پیشرفته Modbus ASCII است. ما با یک مرور کلی از Modbus که مربوط به هر دو اجرای ASCII و RTU پروتکل است، شروع خواهیم کرد.
اModbus به موضوع ارسال اطلاعات بین دستگاه های الکترونیکی از طریق خطوط سریال می پردازد. پروتکل در معماری که از مدل master/slave پیروی می کند پیاده سازی می شود. مستر Modbus مسئول درخواست اطلاعات از دستگاه های دیگر است. یک Modbus Master در یک شبکه استاندارد Modbus وجود دارد.
تMaster اطلاعاتی را از دستگاه های Slave درخواست می کند که تعداد آنها می تواند تا 247 باشد. هر دستگاه Slave با یک آدرس Slave بین 1 و 247 شناسایی می شود. فرآیندی که در آن master از Slave درخواست می کند و اطلاعات برگردانده شده از Slave را دریافت می کند. منظور از ارتباطات مدباس است. علاوه بر درخواست اطلاعات از Slave، دستگاه اصلی میتواند در رجیسترهای داخلی دستگاه Slave نیز بنویسد.
داده های سریال بین دستگاه ها در جریان های بیتی که هر بیت یک ولتاژ است رد و بدل می شود. داده های باینری با 1 که با ولتاژ منفی و صفر با ولتاژ مثبت نشان داده می شود رد و بدل می شود.
پروتکل Modbus کدهای تابع و طرح رمزگذاری را برای انتقال داده ها به صورت نقاط منفرد (1 بیتی، سیم پیچ ها) یا به عنوان ثبات های داده 16 بیتی تعریف می کند. بسته های داده بر اساس روش انتقال در حال استفاده کپسوله می شوند. پروتکل Modbus از چهار جدول مجزا برای ذخیره داده ها در دستگاه های برده استفاده می کند. دو سیم پیچ وجود دارد که مقادیر گسسته روشن یا خاموش را ذخیره می کنند و دو رجیستر که مقادیر عددی را ذخیره می کنند. در مورد Modbus ASCII، پیامها با استفاده از مجموعه کاراکترهای ASCII ارسال میشوند، که باعث میشود به راحتی توسط چشم انسان قابل خواندن باشد.
چگونه ارتباط Modbus ASCII را با آنالایزر پروتکل Modbus آزمایش کنیم؟
اگر با دستگاه های سریال و پروتکل Modbus کار می کنید، این احتمال وجود دارد که در برخی مواقع نیاز به اشکال زدایی یا نظارت بر انتقال داده های سریال خود داشته باشید. Modbus Analyzer یک برنامه نرم افزاری اختصاصی است که توسط Electronic Team, Inc. ساخته شده است که می تواند برای تجزیه و تحلیل و تشخیص انتقال داده در حال حرکت از طریق رابط های سریال سیستم شما استفاده شود.
برای درک بهتر اینکه چگونه یک ابزار تست Modbus ASCII مانند Modbus Protocol Analyzer می تواند به شما کمک کند، اجازه دهید نگاهی به داده ها و قالب پیام Modbus ASCII بیندازیم.
فرمت داده Modbus ASCII
یModbus ASCII از مجموعه کاراکترهای ASCII برای نمایش کاراکترهای هگزا دسیمال که هر کدام حاوی 4 بیت داده است استفاده می کند. در حالت Modbus ASCII در هر بایت 10 بیت وجود دارد. آنها عبارتند از:
1 بیت شروع
7 بیت داده با کمترین بیت مهم ابتدا ارسال شد
1 بیت برای تکمیل برابری
1 بیت استاپ
قالب پیام Modbus ASCII
قالب پیامهای Modbus ASCII از یک کاراکتر شروع تشکیل میشود که یک کولون ":" است و انتهای پیام با یک بازگشت و تغذیه خط تعریف میشود. این باعث می شود که فضای بین پیام ها متغیر باشد و Modbus ASCII برای انتقال از طریق مودم های خاص مناسب باشد.
نرم افزار Modbus Sniffer می تواند در اشکال زدایی، نظارت و تشخیص مشکلات در شبکه Modbus بسیار مفید باشد. می توان از آن برای هر دو پیاده سازی Modbus RTU و ASCII استفاده کرد.
استفاده از این ابزار به شما امکان می دهد:
تجزیه و تحلیل بینش پژوهان آتی فعالیت پورت سریال - می توانید هر پورت سریالی را در سیستم خود باز کنید، حتی اگر قبلاً توسط برنامه دیگری استفاده می شود. از جمع آوری داده های بلادرنگ برای تشخیص سریع مسائل مربوط به تمام فعالیت های پورت سریال استفاده کنید.
چندین پورت سریال را در یک زمان مانیتور کنید - یک فایل لاگ مرکزی تمام داده های نظارت شده شما را به صورت اول در اول برای تجزیه و تحلیل آسانتر نگه می دارد.
داده های خود را در چهار فرمت مختلف مشاهده کنید - از این نماهای مختلف به تنهایی یا به صورت ترکیبی استفاده کنید تا بینش بیشتری نسبت به داده های خود به دست آورید. حالت جدول، خط، dump و ترمینال به شما امکان می دهد داده های خود را مطابق با نیاز خود مشاهده کنید.
شبیه سازی انتقال داده - می توانید انتقال داده ها را به دستگاه های سریال در قالب های مختلف مانند رشته، باینری، اعشاری و هگز تقلید کنید.
داده های نظارت شده خود را صادر کنید - می توانید داده های خود را به فایل هایی با فرمت HTML، متن ASCII، متن یونیکد یا فرمت Exсел CSV صادر کنید. داده های جدید را می توان به فایل های ذخیره شده قبلی اضافه کرد.
تفاوت Modbus ASCII و RTU چیست؟
اModbus ASCII و RTU هر دو به عنوان بخشی از مشخصات پروتکل اصلی Modbus معرفی شدند. این دو نسخه از معماری master/slave یکسان استفاده می کنند و بسیار شبیه هم هستند. هر دوی آنها برای کار با دستگاه های سریال طراحی شده اند، اما به دلیل تفاوت هایی که در زیر به آنها خواهیم پرداخت، با یکدیگر سازگار نیستند.
عامل اصلی تمایز این است که Modbus RTU از کدگذاری باینری استفاده می کند که در آن Modbus ASCII با نام مناسب از مجموعه کاراکترهای ASCII استفاده می کند. Modbus RTU بررسی خطا را با استفاده از روش CRC دقیق انجام می دهد در حالی که Modbus ASCII از روش بررسی خطای LRC کمتر مؤثر استفاده می کند. فرمت داده نیز کمی متفاوت است زیرا تغییر RTU از یک بیت شروع، 8 بیت داده و یک بیت توقف استفاده می کند که برخلاف قالب داده ASCII که قبلاً به آن نگاه کردیم.
ترکیب کدگذاری باینری و بررسی خطای CRC باعث میشود Modbus RTU برای کاربردهای صنعتی مناسب باشد زیرا انتقال کارآمدتری نسبت به کاراکترهای ASCII دارد. هنگام انتخاب بین Modbus RTU در مقابل ASCII، اگر عملکرد مورد توجه باشد، RTU اولین انتخاب است.
اModbus ASCII در مقابل TCP
یک مزیت دیگر از Modbus وجود دارد و آن Modbus TCP است. این به سادگی پیاده سازی Modbus است که روی یک شبکه TCP/IP اجرا می شود. تفاوت اصلی Modbus ASCII و Modbus TCP در این است که بررسی خطای LRC که توسط Modbus ASCII مورد نیاز است توسط لایه IP انجام می شود.
چگونه Modbus ASCII را به پروتکل Modbus RTU تبدیل می کنید؟
همانطور که قبلاً اشاره کردیم، پروتکل های Modbus ASCII و Modbus RTU با یکدیگر سازگار نیستند. دستگاه هایی که از این دو پروتکل استفاده می کنند نمی توانند مستقیماً با یکدیگر ارتباط برقرار کنند. اما راه هایی وجود دارد که دستگاه ها با یکدیگر صحبت کنند.
برای این کار باید از یک راه حل سخت افزاری به نام مبدل Modbus ASCII به RTU استفاده کنید. این نوع دستگاه اساساً یک مترجم است که دادهها را از یک دستگاه میخواند و سپس آنها را به صورت داخلی در پروتکل دیگری برای استفاده توسط دستگاه دوم ذخیره میکند. به این ترتیب دستگاه هایی که از هر گونه تغییر Modbus استفاده می کنند می توانند با یکدیگر ارتباط برقرار کنند.