مودباس

از ویکی‌پدیا، دانشنامهٔ آزاد

مودباس (به انگلیسی:Modbus) یک پروتکل ارتباطاتی سریال می‌باشد که در سال 1979 توسط شرکت مودیکن برای استفاده در کنترل کننده‌های منطقی قابل برنامه‌ریزی (PLC) منتشر شد.ساختاری ساده و قوی دارد و از آن زمان تا کنون به یکی از پروتکل های استاندارد در صنعت بدل گشته است.در حال حاضر یکی از رایج‌ترین پروتکل‌ها در اتصال دستگاه‌های الکترونیک صنعتی است.دلایلی که پروتکل Modbus در محیط‌های صنعتی کاربرد فراوانی دارد عبارتند از: 1. جهت کاربردهای صنعتی توسعه و گسترش یافته‌است 2. به صورت رایگان منتشر شده‌است 3. گسترش پذیری و نگهداری ساده ای دارد

Modbus جهت برقراری ارتباط بین بسیاری (حدود 240) دستگاه‌های متصل به یک شبکه استفاده می‌شود، به عنوان مثال این پروتکل جهت اتصال وضعیت دما و رطوبت به یک کامپیوتر قابل استفاده است.Modbus اغلب جهت ارتباط کامپیوتر ناظر با RTUها در سیستم‌های اسکادا استفاده می‌شود.توسعه و بروز رسانی Modbus را سازمان مدیریت Modbus انجام می‌دهد.این سازمان از کاربران مستقل و تأمین کنندگان دستگاه‌های سازگار با پروتکل Modbus تشکیل شده‌است.

از آوریل 2004، توسعه و به روز رسانی پروتکل های مدباس توسط سازمان مدباس مدیریت شده است[۱]، زمانی که اشنایدر الکتریک حقوق را به آن سازمان منتقل کرد.[۲] سازمان Modbus انجمنی از کاربران و تامین کنندگان دستگاه های سازگار با Modbus است که از استفاده مداوم از این فناوری حمایت می کند.[۳] سازمان مدباس، یک انجمن تجاری برای ترویج و توسعه پروتکل Modbus است.[۴]

محدودیت ها[ویرایش]

  • از آنجایی که Modbus در اواخر دهه 1970 برای برقراری ارتباط با کنترل کننده های منطقی قابل برنامه ریزی طراحی شد، تعداد انواع داده ها محدود به آنهایی شد که PLC ها در آن زمان درک می کردند.اشیاءدوتایی بزرگ پشتیبانی نمی شوند.
  • هیچ راه استانداردی برای یک گره برای یافتن توضیحات یک شی داده وجود ندارد، به طور مثال، یاد بگیرید که یک مقدار ثبات نشان دهنده دمای بین 30 تا 175 درجه است.
  • از آنجایی که Modbus یک پروتکل مشتری/سرور (درگذشته ارباب/برده)[۵] است. هیچ راهی برای یک دستگاه فیلد برای دریافت داده ها توسط مکانیسم کنترل کننده رویداد (به جز از طریق اترنت TCP/IP، به نام open-mbus) وجود ندارد، زیرا گره مشتری باید به طور معمول هر دستگاه فیلد را نظرسنجی کند و به دنبال تغییرات در داده ها باشد.

Modbus به آدرس دهی 247 دستگاه در یک پیوند داده محدود شده است، که تعداد دستگاه های میدانی را که ممکن است به یک ایستگاه والد متصل شوند محدود می کند (باز هم اترنت TCP/IP یک استثنا است). پروتکل Modbus خود هیچ گونه امنیت در برابر دستورات غیرمجاز یا رهگیری داده ها را فراهم نمی کند.[۶]

انواع شی مودباس[ویرایش]

انواع شیء زیر ممکن است توسط یک سرور Modbus به یک دستگاه مشتری Modbus ارائه شود:[۷]

نوع شی دسترسی اندازه فضای آدرس
هسته خواندن-نوشتن 1 bit 00001 – 09999
ورودی گسسته فقط خواندنی 1 bit 10001 – 19999
ثبت ورودی فقط خواندنی 16 bits 30001 – 39999
برگزاری ثبت نام خواندن-نوشتن 16 bits 40001 – 49999

ارتباطات و دستگاه ها[ویرایش]

به هر دستگاهی که با یک Modbus ارتباط برقرار می کند (یعنی انتقال داده) یک آدرس منحصر به فرد داده می شود.

در Modbus RTU، Modbus ASCII و Modbus Plus (که همگی شبکه های چند قطره تک کابلی RS-485 هستند)، فقط گره ای که به عنوان مشتری اختصاص داده شده است می تواند دستوری را آغاز کند. همه دستگاه های دیگر سرور هستند و به درخواست ها و دستورات پاسخ می دهند.

برای پروتکل‌هایی که از اترنت استفاده می‌کنند، مانند Modbus TCP، هر دستگاهی می‌تواند یک فرمان Modbus ارسال کند و بنابراین همه آنها می‌توانند به عنوان مشتری عمل کنند، اگرچه معمولاً فقط یک دستگاه این نقش را دارد. بسیاری از مودم ها و دروازه ها از Modbus پشتیبانی می کنند، زیرا یک پروتکل ساده و اغلب کپی شده است. برخی از آنها به طور خاص برای این پروتکل طراحی شده اند. پیاده سازی های مختلف از ارتباطات سیمی یا بی سیم مانند در باند ISM و حتی سرویس پیام کوتاه (SMS) یا سرویس رادیویی بسته عمومی (GPRS) استفاده می کنند. یکی از رایج‌ترین طرح‌های شبکه‌های بی‌سیم، استفاده از شبکه‌های مش است. مشکلات معمولی که طراحان باید بر آنها غلبه کنند عبارتند از تاخیر زیاد و مسائل مربوط به زمان است.

دستورات[ویرایش]

دستورات Modbus می توانند به دستگاه Modbus دستور دهند:

  • مقدار یکی از رجیسترهای آن را که به رجیسترهای هسته و نام نویسی نوشته شده است تغییر دهید
  • خواندن یک پورت I/O: خواندن داده ها از یک ورودی گسسته یا از یک هسته
  • به دستگاه دستور دهید تا یک یا چند مقدار موجود در رجیسترهای هسته و نگهدارنده خود را ارسال کند

یک دستور مودباس حاوی آدرس مودباس دستگاهی است که برای آن در نظر گرفته شده است (1 تا 247). فقط دستگاه آدرس‌دهی شده به دستور پاسخ می‌دهد و به آن عمل می‌کند، حتی اگر برای دستگاه‌های دیگر ممکن باشد آن را دریافت کنند (یک استثنا، دستورات قابل پخش خاصی است که به گره 0 ارسال می‌شود، که بر اساس آنها عمل می‌شود اما تأیید نمی‌شوند).

تمام دستورات Modbus حاوی اطلاعات جمع کنترل هستند تا به گیرنده امکان تشخیص خطاهای انتقال را بدهد.

فرمت های فریم[ویرایش]

یک "قاب" Modbus از یک واحد داده برنامه (ADU) تشکیل شده است که یک واحد داده پروتکل (PDU) را محصور می کند:[۸]

  • ADU = آدرس + PDU + بررسی خطا
  • PDU = کد تابع + داده.

در فریم های داده Modbus، مهم ترین بایت یک مقدار چند بایتی قبل از بقیه ارسال می شود.

همه انواع Modbus از یکی از قالب های فریم زیر استفاده می کنند.[۹]

قالب قاب RTU مودباس[ویرایش]

این قالب عمدتاً در خطوط داده سریال ناهمزمان مانند RS-485 استفاده می شود. نام آن به یک ترمینال راه دور اشاره دارد.


نام طول (بیت) کارایی
شروع 3.5*8 حداقل 3+1⁄2 بار کاراکتر (28 بیت) سکوت (شرایط علامت گذاری)
آدرس 8 آدرس ایستگاه
عملکرد 8 کد عملکرد را نشان می دهد. "هسته ها را بخوانید"
داده n × 8 داده + طول بسته به نوع پیام پر می شود
CRC 16 بررسی افزونگی چرخه ای
پایان 3.5*8 حداقل 3+12 کاراکتر بار (28 بیت) سکوت (شرایط علامت گذاری) بین فریم ها

منابع[ویرایش]

  1. "Modbus home page". Modbus. Modbus Organization, Inc. Retrieved 2 August 2013.
  2. "Modbus FAQ". Modbus. Modbus Organization, Inc. Retrieved 1 November 2012.
  3. "About Modbus Organization". Modbus. Modbus Organization, Inc. Retrieved 8 November 2012.
  4. "Modbus home page". Modbus. Modbus Organization, Inc. Retrieved 2 August 2013.
  5. https://modbus.org/docs/Client-ServerPR-07-2020-final.docx.pdf[bare URL PDF]
  6. Palmer; Shenoi, Sujeet, eds. (23–25 March 2009). Critical Infrastructure Protection III. Third IFIP WG 11. 10 International Conference. Hanover, New Hampshire: Springer. p. 87. ISBN 978-3-642-04797-8.
  7. https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
  8. http://www.modbus.org/docs/Modbus_Messaging_Implementation_Guide_V1_0b.pdf
  9. http://knovel.com/web/portal/browse/display?_EXT_KNOVEL_DISPLAY_bookid=2995&VerticalID=0