ابتدا در سال 1979 توسط Modicon که امروزه Electric Schneider آن را در بر گرفته، عرضه شد. کاربرد اولیه آن برای استفاده در PLCها بود، ولی بهتدریج بهعنوان یک استاندارد ارتباطی پذیرفته شد و بسیاری از سازندگان تجهیزات اتوماسیون آن را پشتیبانی کردند. بدین ترتیب Modbus بهصورت یک استاندارد باز درآمد، بهگونهای که محصولات سازندگان مختلف بهسهولت توسط این پروتکل با یکدیگر ارتباط برقرار کردند. سازندگان وسایل کوچک نیز ترجیح دادند این پروتکل را با ارتباط RS232 یا RS485 روی وسایل خود بهکار ببرند تا استفاده از آنها در پروژههای بزرگ میسر گردد.
Modbus به دلیل استفاده از لینکهای سریال RS485/RS232 دارای محدودیتهایی شد که به برخی از آنها اشاره میگردد:
• کند بودن خطوط سریال که بین 9600 تا 115000 بیت در ثانیه کار میکنند، یعنی در ماکزیمم حالت 0.115 Mbps، که این سرعت در مقایسه با شبکههای ارتباطی امروزی که 100 Mbps یا حتی چند Gbps سرعت دارند، پایین است.
• از آنجا که توسط RS232 فقط دو وسیله و توسط RS485 بین 20 تا 30 وسیله امکان ارتباط دارند، ازاینرو برای ارتباط دادن تعداد زیادی وسایل، مثلاً 500 وسیله، نیاز به ارتباط پیچیده درختیشکل است.
• ارتباط سریال Modbus بهصورت Slave/Master است، بدین معنی که روی باس فقط یک وسیله (Master) اجازه صحبت با گروهی از Slaveها را دارد (مدباس سیستم Multimaster را ساپورت نمیکند).
با وجود این محدودیتها، پروتکل Modbus در عرصه اتوماسیون جایگاه ویژه خود را پیدا کرد.
Modbus دارای سه نسخه اصلی زیر است که ویژگیهای آنها با هم متفاوتاند:
• ASCII/RTU Modbus که بهصورت سریال روی RS485 یا RS232 کار میکند.
• IP/TCP Modbus که روی اترنت کار میکند.
• Plus Modbus که بهصورت Pass Token و با سرعت بالا طراحی شده است و یک باس انحصاری است.
در بین پروتکلهای Modbus، آنچه را میتوان در خانواده فیلدباس جای داد، ASCII/RTU Modbus است. این پروتکل که نسخه پایه است، از دو مد انتقال ASCII و RTU استفاده میکند.
• ASCII قابلخواندن که بهعنوان مثال برای تست بهکار میرود (فرمت ASCII)
• RTU فشرده و سریع که برای کار نرمال بهکار میرود (فرمت هگزادسیمال)
مد RTU که بعضاً به آن B-Modbus (بهعنوان Binary Modbus) گفته میشود، مد اصلی است. مد ASCII که بعضاً به آن A-Modbus نیز گفته میشود، برای برخی پیامها بهکار میرود. این پیامها طولشان دو برابر پیامهای RTU میباشد.
این پروتکل از لایههای 1 و 2 و 7 مدل OSI استفاده میکند. در لایه فیزیکی RS232 و RS485 را بهکار میبرد.
RS232 بهصورت نقطهبهنقطه (P-t-P) بسته میشود، ولی RS485 علاوه بر P-t-P میتواند بهصورت Multipoint نیز بسته شود؛ یعنی چندین دستگاه روی یک باس قرار گیرند. در این حالت باس معمولاً دوسیمه است، اگرچه امکان اتصال چهارسیمه نیز وجود دارد.
در اتصال RS485 چه بهصورت دوسیمه و چه چهارسیمه، در نظر داشتن نکات زیر ضروری است:
• بهطور معمول بدون ریپیتر، ماکزیمم 32 وسیله را میتوان روی RS485 Modbus متصل نمود.
• توپولوژی اتصال بهصورت Bus است که میتواند Tap and Drop یا Daisy Chain باشد.
• طول کابل Trunk محدود است؛ این محدودیت بستگی به سرعت انتقال دیتا، مشخصات کابل (از جمله خازن کابل)، تعداد Nodeهای متصلشده بهصورت Daisy Chain و نیز دوسیمه یا چهارسیمه بودن سیستم دارد. برای سرعت 9600 bps با کابل AWG26 یا ضخیمتر و سیستم دوسیمه، این طول 1000 متر است. برای سیستم چهارسیمه با مشخصات فوق، این طول به نصف کاهش مییابد.
• طول کابل انشعابی کوتاه باشد و از 20 متر تجاوز نکند. کلاً اگر n انشعاب وجود داشته باشد، برای بهدستآوردن ماکزیمم طول هر انشعاب، عدد 40 متر را بر n تقسیم میکنیم.
• سیم مشترک (Common یا GND) به زمین (PE) متصل شود، ترجیحاً در یک طرف و آن هم در سمت Master.
• دو طرف کابل Trunk، یعنی باس اصلی، توسط ترمینیتور بسته شود. هر زوج سیم دیتا در دو طرف ترمینیتور لازم دارد، پس در سیستم چهارسیمه در هر طرف دو ترمینیتور لازم است.
• ترمینیتور میتواند یک مقاومت 150 اهمی باشد. در برخی کاربردها از مقاومت 120 اهمی که با خازن (1 nF حداقل 10V) سری شده، استفاده میگردد.
• برای پلاریزه کردن خط از یک جفت مقاومت pull up و pull down که مقدار آنها میتواند بین 450 تا 650 اهم باشد، در یک طرف (ترجیحاً سمت Master) استفاده میگردد. منظور از پلاریزه کردن خط، مصون نگهداشتن باس از تداخل و نویز در حالتی است که روی خط هیچ دیتایی تبادل نمیشود.
لازم است در این حالت گیرنده حالت ثابت خود را حفظ کند. مقاومتهای فوق به تغذیه 5 ولت متصل میشوند.
ماکزیمم وسایل مجاز روی Modbus با پلاریزاسیون به یکچهارم حالت نرمال کاهش مییابد.
اتصال Modbus بهصورت RS232:
این ارتباط بهصورت نقطهبهنقطه است؛ یعنی فقط دو وسیله میتوانند با هم ارتباط داشته باشند.
برای مسافتهای کوتاه (معمولاً کمتر از 20 متر) بهکار میرود.
• ترمینیتور ندارد.
لايه دیتا لینک (لایه دوم):
این لایه از تکنیک دسترسی Slave/Master استفاده میکند. بنابراین در هر لحظه فقط یک Master میتواند باس را در اختیار داشته و با ماکزیمم 247 وسیله Slave که به همان باس متصل هستند، ارتباط برقرار کند. بدیهی است در این تکنیک دسترسی، Slaveها هیچگاه بدون درخواست Master دیتایی را نمیفرستند و هیچگاه نیز با یکدیگر ارتباط برقرار نمیکنند.
Master به یکی از دو روش زیر درخواست خود را ارسال مینماید:
مد Unicast:
در این حالت Master از Slave خاصی درخواست دیتا مینماید. Slave پس از دریافت Request، پیام reply را به Master میفرستد. بدیهی است هر Slave باید دارای آدرس خاص و منحصربهفردی باشد تا Master بتواند با آن ارتباط برقرار کند.
Broadcast:
در این حالت Master پیام خود را به تمام Slaveها میفرستد ولی هیچ پاسخی به Master برنمیگردد. این مد از جمله برای نوشتن فرامین (Writing Commands) بهکار میرود. برای مد Broadcast آدرس صفر رزرو شده است.
بهطور کلی روش آدرسدهی در Modbus مانند جدول بعد است. باید توجه داشت که Master نیاز به هیچ آدرس خاصی ندارد و صرفاً Slaveها هستند که نیاز به آدرس دارند.
...
(بخشهای بعدی مربوط به Frame، RTU، ASCII و Function Codes هم دقیق و بدون نیاز به اصلاح محتوایی هستند؛ تنها ویرایش مشابه بالا در سراسر متن اعمال میشود: فاصلهها، نیمفاصلهها، علائم نگارشی و تصحیح حروف اشتباه مانند “مي” به “می”، “ك” به “ک”، “ي” به “ی”).