بررسی و تشریح شبکه صنعتی مدباس:
در این مقاله در خصوص یکی دیگر از پروتکل های معروف در اتوماسیون صنعتی در خدمت شما دوستان و مهندسان عزیز هستیم.امیدوارم که مطالب زیر که حاصل تحصیل،تحقیق و تجربه می باشد مفید و راه گشای مسائل بوجود آمده در مسیر موفقیتتان قرار گیرد.
تاریخچه:
شبکه ی مدباس اولین بار در سال 1979 توسط شرکت Modicon که بعدها زیر مجموعه ای از اشنایدر الکتریک گردید،معرفی شد.
شرکت Modicon ابتدا این پروتکل ارتباطی را به جهت استفاده در PLC ها رایح کرد ولی بتدریج پروتکل مدباس به صورت یک استاندارد پذیرفته شد و توسط بسیاری از شرکت های تولید کننده تجهیزات اتوماسیون مورد استفاده قرار گرفت.
شبکه مدباس به صورت یک استاندارد باز(Open Source) می باشد و به همین دلیل به سهولت می توان بین تجهیزات با برندهای مختلف ارتباط ایجاد کرد.
در دنیای واقعی اتوماسیون صنعتی، ارتباطات مابین دستگاهها یعنی ایجاد مکالمه و گفتگو بین دستگاهها، بهصورت همزمان و در بسیاری از موارد در انواع شبکههای ارتباطی مختلف و به زبانهای مختلف انجام میشود.
* مودباس، یکی از شناخته شده ترین روش ارتباطی صنعتی می باشد.
بسته به سازنده تجهیزات اتوماسیون صنعتی، یک زبان خاص یا اختصاصی مورد استفاده قرار میگیرد؛ یا ممکن است یک زبان، در قالب پروتکلهای عمومی در اختیار صنعت باشد. بسیاری از تولیدکنندگان با این پروتکلهای عمومی سازگار میشوند تا محصولاتشان بهسادگی با بازار یکپارچه شوند.
یک پروتکل باز یا عمومی در واقع مشخصات منتشر شدهای است که هر کسی میتواند از آنها آزادانه یا با مجوز استفاده کند. پروتکلهای عمومی معمولاً توسط شرکتها، گروههای کاربری، جوامع حرفهای و دولتها حمایت میشوند. این پروتکلها امکان انتخاب گستردهتری از بین دستگاهها و سیستمهای مختلف را برای کاربران فراهم میآورند که برای کاربردهای خاص مورد استفاده قرار میگیرند.
مزایای پروتکلهای عمومی عبارتند از:
امروزه، یکی از رایجترین پروتکلهای ارتباطی اتوماسیون برای اتصال دستگاههای الکترونیکی، مودباس (Modbus) است.
پروتکل ارتباطی مودباس، قدیمیترین و محبوبترین پروتکل اتوماسیون، در زمینه خودکارسازی فرآیندها و سیستم SCADA یا سامانه نظارت بر کنترل و اکتساب دادهها است.
آشنایی با راهاندازی شبکههای مبتنی بر مودباس برای هر تکنسین برق و مهندسانی که در این حوزه کار میکنند، ضروری است. توانایی یکپارچهسازی دستگاههای ساخته شده توسط کارخانههای مختلف یک مهارت پر تقاضا است و باعث میشود در صنعت فرد ارزشمندتری شوید.
مودباس یک پروتکل ارتباطی است که که در سال ۱۹۷۹ توسط مادیکان، برای استفاده در کنترل کننده منطقی قابل برنامهریزی یا PLC منتشر شد. در حال حاضر، شرکت اشنایدر الکتریک مالک مادیکان است.
مودباس، یک زبان مشترک برای برقراری ارتباط بین دستگاهها و تجهیزات با یکدیگر فراهم میکند. بهعنوان مثال، مودباس این امکان را فراهم میآورد که دستگاهها در یک سیستم، دما و رطوبت را بر روی یک شبکه واحد اندازهگیری کنند و نتایج را به یک کامپیوتر SCADA یا PLC انتقال دهند.
توسعه و بروزرسانی پروتکلهای مودباس توسط سازمان مودباس مدیریت میشود. سازمان مدباس، انجمنی است که از کاربران و تأمین کنندگان دستگاههای سازگار با مدباس تشکیل شده است.
چندین نسخه از پروتکل Modbus برای پورت سریال و اترنت وجود دارد که رایجترین آنها عبارتند از:
شرکت Modicon یک رابط مودباس را برای یک شبکه مولتی دراپ مبتنی بر معماری master/slave منتشر کرد. ارتباط بین گرههای مدباس، با ارسال درخواست و خواندن پیامهای پاسخ به دست میآید.
انواع پروتکل های شبکه مدباس
شبکه مدباس دارای سه نسخه اصلی است که ویژگی های آن ها با هم تفاوت دارد.
نسخههای پروتکل مودباس برای پورت سریال و اترنت و دیگر شبکهها که مجموعه پروتکل اترنت را پشتیبانی میکنند، موجود است. اکثر دستگاههای مودباس روی لایه فیزیکی
EIA-485 ارتباط برقرار میکنند.
1) Modbus RTU,ASCII:
(واحد پایانه از راه دور) RTU: Remote Terminal Unit
( کد استاندارد آمریکایی برای تبادل اطلاعات ) ASCII: American Standard Code For Information Interchange
این پروتکل بر روی پورت سریال و لایه فیزیکی RS-232 ،RS-422 ، RS-485 ،امواج رادیویی،فیبر نوری و سلولار(شبکه تلفن همراه) به صورت Master/Slave کار می کند.سرعت تبادل اطلاعات 115Kb/s تا 1200b/s بوده و مسافت 1 تا 1.3 کیلومتری تحت شرایط خاص که در ادامه مقاله بیان می شود،را پوشش می دهد.این پروتکل در هرم اتوماسیون،عموما در لایه کنترل و لایه ی فیلد مورد استفاده قرار می گیرد.
حداکثر تجهیزاتی که در این پروتکل می توانند در داخل شبکه قرار بگیرند بدون استفاده از ریپیتر،31 تجهیز و با استفاده از ریپیتر و تشکیل سگمنت،حداکثر 247 تجهیز می باشد.(آدرس های Slave می تواند از 1 تا 247 قرار گیرند و آدرس 0 برای عملیات Broadcast رزرو شده است.)
-تفاوت هایی در مد انتقال RTU و ASCII وجود دارد که در شکل زیر بررسی شده است:
♦ مدباس RTU که به مدباس باینری (Modbus-B یا Modbus Binary)معروف است،بدلیل کوتاه بودن فریم داده،سرعت تبادل بالایی نسبت به مد ASCII دارا می باشد.
(مد RTU حداکثر سایز داده 256 بایت بوده ولی در مد ASCII ماکزیمم سایز داده به 513 بایت می رسد).معمول ترین و مناسب ترین پیاده سازی در دسترس برای مودباس،مد RTU است.
♦ تشخیص خطا در داده (Check Sum) در مدباس RTU بوسیله ی (CRC(Cyclic Redundancy Check که 2 بایت هست انجام می گیرد ولی در مدباس ASCII تشخیص خطا یا همان چک سام بوسیله ی (LRC(Longitudinal Redundancy Check که 1 بایت می باشد صورت می گیرد.
* چک سام چگونه وجود خطا را بررسی می کند؟
چک سام،پیام ارسالی Master را محاسبه کرده و سپس برای Slave ارسال می کند.حال پیام برگشتی از Slave که به عنوان پاسخ می باشد،مجددا توسط چک سام محاسبه شده و با مقدار ارسالی Master مقایسه می گردد.اگر اختلافی تشخیص داده شود یعنی Slave نتوانسته پیامی برای Master ایجاد کند.
-فریم داده در مدباس RTU:
*مدباس ASCII که به مدباس کاراکتری(Modbus_A) شناخته می شود،بیشتر به عنوان تست مورد استفاده قرار گرفته و برای ارتباط از کارکترهای اسکی استفاده می کند.
-فریم داده در مدباس ASCII:
-چهار اصطلاح Start Bit,Stop Bit,Data Bit و Parity در مدهای RTU وASCII کاربرد دارد که در زیر هر کدام تعریف شده اند:
Start Bit: بیت شروع می باشد که برای هر دو مد عدد 1 قرار می گیرد.
Data Bit: طول داده ارسالی با این گزینه مشخص می شود که در مد RTU هشت بیت و در مد ASCII هفت بیت انتخاب میشود.
Parity: یا بیت توازن،که دارای دو نوع زوج و فرد است.مثلا در نوع زوج(Even)،اگر تعداد یک ها در هر بایت زوج بود،بیت پریتی صفر می شود تا زوج بودن بایت فرد نشود و اگر تعداد یک ها در یک بایت فرد بود،پریتی یک شده و تعداد آن ها را زوج می کند.
Stop Bit: بیت پایانی فریم داده می باشد و سایز آن بسته به انتخاب Parity می باشد.
***باید توجه شود که تمام تجهیزاتی که در داخل شبکه قرار دارند از یک مد(RTU یا ASCII) استفاده کنند.
>>> مشاهده جدول کارکترها اسکی <<<
2) Modbus TCP/IP:
پروتکل ارتباطی از نوع CSMA/CD یا همان پروتکل برخورد یاب بوده و لایه فیزیکی آن مشابه اترنت و به صورت Client/Server می باشد.این پروتکل مشابه شبکه اترنت بوده وبر طبق مدل OSI،در لایه ترنس پورت،TCP و در لایه نتورک IP تعیین می شود.
سرعت شبکه مدباس TCP مشابه اترنت بوده و در رنج 10 تا 100 مگابیت/ثانیه می باشد.این پروتکل در هرم اتوماسیون،در لایه های مدیریت و سوپروایزری مورد استفاده قرار می گیرد.
در نگاه کلی Modbus TCP/IP همان پروتکل ModbusRTU میباشد که با اینترفیس TCP/IP روی شبکه Ethernet کار میکند و در آن TCP برای اطمینان از ارسال درست دیتا و IP برای اطمینان از آدرس دهی و مسیر یابی صحیح بکار میرود.
Modbus TCP/IP فریم استاندارد پیام مدباس را به فریم استاندارد TCP در پورت 502 که اصطلاحاً به آن فریم MBAP که مخفف ModbBus Application Protocol می باشد تبدیل می کند.
3) Modbus Plus:
بر اساس پروتکل Token یا ارسال نشانه کار می کند و از نرخ تبادل اطلاعات نسبتا بالایی حدود 1Mb/s با لایه فیزیکی RS-485 برخوردار است.پروتکل مدباس پلاس برخلاف نسخه پایه بعنوان یک استاندارد باز طرح نشده است و انحصاری شرکت مدیکان می باشد.
در این پروتکل تعداد نودهای شبکه یا تجهیزات قرار گرفته در شبکه بدون ریپیتر 32 عدد و با ریپیتر ماکزیمم 64 عدد با طول 1800 متر قابل اتصال می باشد.البته با استفاده از کابل های فیبر نوری می توان مسافت های طولانی تر را نیز استفاده کرد.
معایب شبکه مدباس RTU و ASCII:
-پروتکل مدباس در برابر دستورات غیر مجاز یا رهگیری داده هیچ نوع امنیتی را فراهم نمی کند.
-در مدباس RTU و ASCII به علت ارتباط سریال،نرخ تبادل دیتا در مقایسه با سرعت شبکه های ارتباطی امروزی که 100Mb/s و یا چند Gb/s می باشند سرعت پایینی است.
-در ارتباط سریال که به صورت Master/Slave است،تنها یک Master می تواند در شبکه قرار گیرد و بقیه نودها Slave هستند؛این بدین معنی است که تنها بر روی باس یک Master اجازه صحبت با گروهی ازSlaveها را دارد.
-از آنجا که توسط RS-232 تنها دو وسیله و با RS-485 بین 20 تا 30 وسیله امکان ارتباط وجود دارد از این رو با افزایش وسایل بیشتر، نیاز به ارتباطات پیچیده درختی است.
نحوه ی ارتباط Master و Slave در شبکه مدباس
این لایه از تکنیک دسترسی Master/Slave استفاده می کند. بنابراین در هر لحظه فقط یک مستر میتواند باس را در اختیار داشته و با ماکزیمم 247 وسیله Slave که به همان باس متصل هستند ارتباط برقرار کند. بدیهی است در این تکنیک دسترسی،slave ها هیچگاه بدون درخواست مستر،دیتایی را نمی فرستند و هیچگاه نیز با یکدیگر ارتباط برقرار نمی کنند. این نحوه ی ارتباط در لایه دیتا لینک مدل OSI پیاده سازی می شود.
-مستر به دو روش درخواست خود را ارسال می کند:
1-Unicast: در این مد،Master در میان تمامی Slaveها فقط یک Slave را خطاب قرار داده و درخواست دیتا می کند.بدیهی است که در این مد باید Slaveها هر کدام آدرس منحصر به فرد داشته باشند.
2-Broadcast:در این حالت مستر پیام خود را برای تمامSlave ها میفرستد ولی هیچ پاسخی به مستر بر نمیگردد. این مد از جمله برای نوشتن فرامین (Writing Commands) بکار میرود.برای مد Broadcast آدرس صفر ،رزرو شده است.
مودباس یک استاندارد عمومی است که پیامهای هر گفتگو را توصیف میکند.
مدباس بین چندین نوع رسانه فیزیکی ارتباط برقرار میکند:
رسانه فیزیکی را شما هنگام خرید دستگاهها انتخاب خواهید کرد. رابط اصلی مودباس بر روی ارتباطات سریال RS-232 اجرا میشود، اما بیشتر پیادهسازیهای سطوح بعدی مودباس از RS-485 استفاده میکنند؛ زیرا دارای مزایای زیر است:
ارتباط مودباس Master-Slave بر روی رسانه فیزیکی سریال RS-485، اتصالات دو سیمی فرستنده و گیرنده را نشان میدهد.
در رابطهای سادهای مانند RS-232 یا RS-485، پیامهای مودباس با فرم ساده در شبکه ارسال میشوند و شبکه تنها به اتصال مودباس اختصاص داده میشود. با این حال، اگر شبکه شما به چندین دستگاه ناهمگن نیاز داشته باشد که از یک شبکه چندمنظوره مانند TCP/IP بر بستر اترنت استفاده کند، پیامهای مودباس در بستههای اترنت با فرمت تعریف شده برای این رابط فیزیکی تعبیه میشود.
بنابراین در این حالت، مودباس و سایر پروتکلهای ترکیبی، میتوانند همزمان در یک رابط فیزیکی هماهنگ وجود داشته باشند.
شکل زیر سطح دسترسی پروتکل های مدباس را به لایه های مدل OSI نشان می دهد.
(OSI :Open Systems Interconnection)
RS-232:
این استاندارد به صورت Point_To_Point می باشد.این یعنی تعداد Node در Rs-232 فقط 2 عدد است.یک مستر و یک اسلیو. در استاندارد Rs-232 حداکثر طول کابل 15 متر و با کابل ها ی خازنی حداکثر 50 متر با نرخ دیتا 115Kb/s قابل دسترس است.علت کاربرد داشتن در فواصل کم تفاضلی نبودن این استاندارد می باشد.یعنی تمامی سطح ولتاژها نسبت به سطح زمین بوده و کاملا نویز پذیر می باشد.اینکه سطح ولتاژها نسبت به زمین است را اصطلاحا Single-ended می گویند که در بعضی از ماژول های PLC های مختلف این اصطلاح استفاده می شود.
*نحوه ی پردازش سیگنال:در سمت فرستنده سیگنالهای بین -5 تا -25 ولت به عنوان یک منطقی و از 5 تا 25 ولت صفر منطقی هستند. در سمت گیرنده سیگنالهای بین -3 تا -25 ولت به عنوان یک منطقی و از 3 تا 25 ولت صفر منطقی هستند. سیگنالهای بین -3 تا 3 در محدوده ی غیر مجازند.
RS-485:
این استاندارد به صورت Multi_Point یا Multi Drop بوده و در شبکه های صنعتی Profibus و Modbus RTU بسیار مورد استفاده قرار می گیرد. سیم بندی RS-485 می تواند به صورت دوسیمه(Half-Duplex) و یا چهارسیمه(Full-Duplex) باشد.لازم بذکر است که می توان این نوع سیم بندی را با تغییر آرایش به یکدیگر تبدیل نمود.بدین معنی که یک تجهیز دارای شبکه مدباس Rs-485 که به صورت 4 سیمه است را می توان به یک تجهیز مدباس Rs-485 دوسیمه متصل نمود و بالعکس.
در این استاندارد بر خلاف Rs-232،سیگنالها بصورت تفاضلی سنجیده می شوند یعنی ولتاژ A نسبت به B سنجیده می شود.یکی از مزایای بزرگ این استاندارد،استفاده از تقویت کننده تفاضلی است که نویز پذیری کمتر نسبت به RS232 را ایجاد می کند.بدلیل اینکه در این استاندارد سطح ولتاژ سیگنال ها مورد بررسی است و نسبت به زمین نمی باشد،اصطلاحا روش دیفرانسیلی(Deferential) گفته می شود که بعضی از ماژول های انالوگ PLC از این روش استفاده می کنند.
*** هر شبکه ای که بستر ارتباطی آن RS-485 می باشد،حتما باید از ترمیناتور(Terminator) در ابتدا و انتهای خط استفاده کند.ترمیناتور،مقاومت هایی هستند که در از بین بردن اثر نویز در مسافت های زیاد و خالی کردن انرژی باقیمانده خط در حالت عادی مورد استفاده قرار می گیرند.
RS-422:
در این استاندارد حداکثر طول کابل بین 800 تا 1200 متر می تواند پوشش دهی داشته باشد.بر خلاف RS-485،فقط نوع 4سیمه یا Full-Duplex را پشتیبانی می کند.حداکثر تعداد گیرنده 10 عدد می باشد و مشابه Rs-485 بدلیل استفاده از آپ آمپ تفاضلی نویز ناپذیر است.
***کانکتورهای مورد استفاده در لایه ی فیزیکی برای هر سه نوع استاندارد RS-232/485/422:
کانکتور میتواند به یکی از دو صورت DB-9 یا RJ45 باشند.
RJ45 استانداردهای )
طول کابل Trunk یا باس اصلی شبکه،همانطور که گفته شد محدود است و این محدودیت بستگی به سرعت انتقال دیتا،مشخصات کابل مانند خازن کابل،تعداد تجهیزات موجود در شبکه با توپولوژی Daisy Chain(زنجیر وار) و نیز آرایش خروجی 2 سیمه و 4 سیمه بودن شبکه،بستگی دارد.
برای نرخ دیتا 9.6Kb/s با کابل (AWG26(13mm² یا ضخیم تر و سیستم 2 سیمه،طول کابل Trunk به 1 کیلومتر می رسد.برای سیستم 4 سیمه با مشخصات فوق طول کابل نصف می شود.
برای اینکه بتوانیم عملکرد یک اسلیو را در خواندن و یا نوشتن تعیین کنیم از Function Codeها استفاده می کنیم. هر فانکشن متشکل از یک بایت می باشد.
⇔ فانکشن کدهای رایج در شبکه مدباس :
تست،شبیه سازی و برنامه نویسی این سه ویژگی را در نرم افزار Modbus Poll در اختیار دارید.
*پروتکل های ارتباطی استفاده شده در این نرم افزار:
-مدباس RTU -مدباس ASCII -مدباس TCP/IP -مدباس UDP/IP
- RTU,ASCII over TCP/IP
-RTU,ASCII over UDP/IP
-کلیپی از محیط نرم افزار را در لینک زیر مشاهده فرمایید.
>> How to use Modbus Poll with a Sage Thermal Mass Flow Meter <<
*لینک دانلود نرم افزار پرکاربرد Modbus Poll
ساختار اصلی پیام مودباس نقطه-به-نقطه است. مودباس قادر است بر روی هر دو شبکه نقطه-به-نقطه و مولتی دراپ اجرا شود.
ارتباط دستگاههای مدباس از یک تکنیک master/slave یا client/server بر بستر اترنت استفاده میکند که تنها یک دستگاه (Master یا سرور) میتواند تراکنشها (یا درخواستها) را آغاز کند.
دیگر دستگاهها با ارائه دادههای درخواستی به دستگاه master یا با اجرای عمل درخواست شده در یک درخواست پاسخ میدهند.
دستگاه slave، یک دستگاه جانبی است، مانند مبدل ورودی/خروجی، دریچه (والو)، راهانداز شبکه یا دیگر انواع دستگاههای اندازهگیری که اطلاعات را پردازش میکنند؛ و پیام پاسخ را با استفاده از پروتکل مودباس به دستگاه master ارسال میکند.
دستگاههای master میتوانند درخواست را به یک دستگاه slave خاص بفرستند، یا ارسال درخواست گسترده را به تمام دستگاههای slave آغاز کنند. دستگاههای slave، پاسخ تمام درخواستهای ارسال شده را جداگانه ارسال میکنند، اما به پیامهای گسترده پاسخ نمیدهند.
دستگاههای slave آغاز کننده هیچ پیامی نیستند، و تنها به پیامهای ارسال شده از طرف دستگاههای master پاسخ میدهند.
درخواست دستگاه master حاوی این موارد است:
فیلد کنترل خطا، مقداری است که دستگاه master یا slave در شروع فرآیند درخواست یا پاسخ ایجاد میکند و هنگامی که پیام دریافت شد، برای تائید درستی محتوا آن را بررسی میکنند.
پاسخ دستگاه slave حاوی فیلدهای زیر است:
اگر خطایی رخ نداده باشد، پاسخ دستگاه slave حاوی داده درخواست شده خواهد بود. اما اگر خطایی در درخواست پیام دریافت شده توسط دستگاه slave رخ داده باشد، یا اگر دستگاه slave قادر نباشد عملیات خواسته شده را اجرا کند، دستگاه slave پیام خاصی را برخواهد گرداند.
فیلد بررسی خطای فریم پیام دستگاه slave، امکان تائید محتواهای پیام معتبر را برای دستگاه master فراهم میآورد.
تا اینجا با پروتکل ارتباطی مودباس آشنا شدید و انواع ارتباطات مدباس مورد استفاده در صنعت را شناختید. اکنون میخواهیم با جزییات بیشتری درباره چگونگی عملکرد پروتکل ارتباطی مودباس بین دستگاهها صحبت کنیم. پیشنهاد میکنیم ویدئوی زیر را نیز ببینید:
هر پیام مودباس ساختار یکسانی دارد که در هر پیام، چهار بخش اصلی ارائه میشود. توالی و ترتیب این عناصر، برای همه پیامها یکسان است. این امر امکان تجزیه راحت محتوای پیام مدباس را فراهم میآورد.
یک گفتگو در شبکه مدباس همیشه با Master شروع میشود. دستگاه Master یک پیام ارسال میکند؛ با توجه به محتواهای پیام دستگاه Slave پیام را تفسیر کرده و پاسخ میدهد.
آدرسدهی فیزیکی Slave در هدر (header) هر پیام، تعیین میکند که کدام دستگاه باید به پیام پاسخ دهد. دیگر نودهای موجود در شبکه مودباس، در صورتی که فیلد آدرس با آدرس خودشان مطابقت نداشته باشد، این پیام را نادیده میگیرند.
توابع مودباس، دستورات خواندن و نوشتن را برای رجیسترهای حافظه داخلی slave اجرا میکنند تا به این ترتیب، ورودیها و خروجیهای دستگاه slave را پیکربندی، نظارت و کنترل کنند.
دستگاههای مودباس معمولاً حاوی یک نقشه رجیستر (رجیستر مپ) هستند، که مکان پیکرهبندی و خواندن/نوشتن دادههای ورودی و خروجی را مشخص میکند. شما باید به رجیستر مپِ دستگاه slave مرتباً مراجعه کنید تا درک بهتری از عملیات کلی آن بدست آورید.
مدل دادههای مدباس دارای یک ساختار ساده، شامل چهار نوع داده اساسی است:
ناحیه درخواست سرویسِ پیام یا واحد داده پروتکل مودباس (PDU)، از کد عملکرد و تعدادی بایتهای داده درخواست شده توسط دستگاه master تشکیل شده است.
رجیسترهای حافظه مدباس یک دستگاه، بر اساس چهار نوع مرجع داده اساسی سازماندهی میشود. و این نوع داده معمولاً، توسط اولین عدد مورد استفاده در آدرس حافظه دستگاهها شناسایی میشود،
برای مثال:
فیلد کد عملکرد مشخص میکند که کدام گروه داده رجیستر، از دستگاه slave میخواند یا بر روی آن مینویسد.
برای مثال، کد عملکرد 03 که رجیسترهای نگهدارنده 40002-40001 را میخواند، به عنوان رجیستر داده 0000، در فیلد آدرس داده پیام ارسالی به slave آدرسدهی میشود.
کد عملکرد 03 بر روی این نوع رجیستر نگهدارنده (4xxxx) در نقشه داده slave کار میکند؛ زیرا درخواست، استفاده از عملیات نوع داده رجیستر نگهدارنده را مشخص میکند. و در درخواست هم به این نوع آدرسدهی 4xxxx اشاره میشود.
فیلدهای PDU به بایتهای مختلف تقسیم شده و سپس بر اساس عنوان فیلد گروهبندی میشوند. پیام درخواست حاوی بخشهای زیر است:
مثالی از یک درخواست برای خواندن دو رجیستر اول در ناحیه رجیستر نگهدارنده، از ۰ تا ۱ (رجیستر ۴۰۰۰۱ تا ۴۰۰۰۲) است و در تصویر زیر نمایش داده شده است.
در تصویر فوق مشخص است که رجیستر نگهدارنده 40108 در واقع، به عنوان رجیستر 107 در ناحیه داده پیام PDU آدرسدهی میشود.
بسیاری از انواع دادهها بر اساس کاربرد آنها در رلههای راهانداز نامگذاری میشوند. برای مثال، یک خروجی فیزیکی تک بیتی، کویل نامیده میشود، و ورودی فیزیکی تک بیتی، ورودی مجزا یا کنتاکت نامگذاری میشود.
فیلد کد عملکرد پیام، حاوی یک بایت است که به دستگاه slave میگوید چه کاری انجام دهد.
کدهای عملکرد معتبر از محدوده 1 تا 255 هستند، اما همه کدها به یک دستگاه slave خاص ارسال نمیشوند.
جدولی که در تصویر زیر مشاهده میفرمایید، زیرمجموعهای از توابع مودباس استاندارد را نشان میدهد.
فیلد داده درخواست دستگاه Master، اطلاعات اضافی مورد نیاز دستگاه Slave را فراهم میکند تا عملیات مشخص شده توسط کد عملکرد در درخواست دستگاه Master را کامل کند.
این درخواست معمولاً شامل بخشهای زیر است:
پاسخ عادی Slave، به سادگی کد عملکرد اصلی درخواست را منعکس میکند، اما پاسخ خطای دستگاه Slave، کدی معادل کد عملکرد اصلی را با 1 کردن پرارزش ترین بیت بازمیگرداند.
به عنوان مثال، دستور خواندن رجیسترهای نگهدارنده، دارای کد عملکرد 1 بایتی حاوی 8 بیت 0011 0000 (03 هگزادسیمال) است. اگر دستگاه Slave درخواست را بدون خطا قبول کند، همان کد را در پاسخ خود بازمیگرداند.
با این حال اگر خطایی رخ دهد، دستگاه Slave، یک بایت حاوی 8 بیت را در فیلد کد عملکرد به شکل 0011 1000 بازمیگرداند (پرارزش ترین بیت 1 شده) و یک کد خاص به فیلد داده پیام پاسخ الحاق میکند، که به دستگاه Master میگوید، چه خطایی رخ داده است یا علت خطا چیست؟
کد عملکرد ۰۱، کد خواندن کویل، برای خواندن رجیسترهای پیوسته 1 تا 2000 مربوط به وضعیت کویلها در یک دستگاه Slave استفاده میشود. درخواست PDU، کد شروع آدرس حافظه دستگاه Slave اولین کویل وتعداد کویلهایی که باید از دستگاه Slave خوانده شوند را مشخص میکند.
کد عملکرد ۰۲، کد خواندن ورودیهای مجزا، برای خواندن حالتهای پیوسته 1 تا 2000 ورودیهای مجزای یک دستگاه Slave در حالت ریموت استفاده میشود. درخواست PDU، کد شروع آدرس آدرس حافظه دستگاه Slave اولین ورودی و تعداد کویلهایی که باید از دستگاه Slave خوانده شوند را مشخص میکند.
کد عملکرد ۰۳، کد خواندن رجیسترهای نگهدارنده، برای خواندن محتواهای یک بلوک متوالی از رجیسترهای نگهدارنده در دستگاه Slave در حالت ریموت به کار میرود. درخواست PDU، آدرس رجیستر آغازین و تعداد رجیسترهایی که باید از دستگاه Slave خوانده شوند را مشخص میکند.
کد عملکرد ۰۴، کد خواندن رجیسترهای ورودی، برای خواندن رجیسترهای ورودی پیوسته 1 تا 125 در یک دستگاه راه دور استفاده میشود. درخواست PDU، آدرس رجیستر آغازین و تعداد رجیسترها را مشخص میکند.
کد عملکرد ۰۵، کد خواندن یک کویل، برای نوشتن یک خروجی یکتا به صورت ON یا OFF در یک دستگاه Slave راه دور استفاده میشود.
کد عملکرد ۰۶، کد نوشتن یک رجیستر، برای نوشتن یک رجیستر نگهدارنده در یک دستگاه Slave راه دور استفاده میشود. درخواست PDU، آدرس رجیستر حافظه دستگاه Slave که باید بر روی آن نوشته شود را تعیین میکند.
کد عملکرد ۱۵، کد نوشتن چندین کویل، برای نوشتن یک کویل در دنبالهای از کویلها، به صورت ON یا OFF در یک دستگاه Slave راه دور استفاده میشود. درخواست PDU، آدرس حافظه کویلها به صورت ON یا OFF را مشخص میکند.
و در نهایت کد عملکرد ۱۶، نوشتن بر روی چندین رجیستر، برای نوشتن یک بلوک از رجیسترهای پیوسته، از 1 تا 123 رجیستر در یک دستگاه Slave راه دور استفاده میشود.
از آنجایی که این کدهای عملکرد در مودباس، نمایانگر رایجترین توابع خواندن و نوشتن هستند، بررسی دقیق مشخصات پروتکل مدباس برای مطالعه بیشتر، کمک کننده خواهد بود.
برای مطالعه دقیقتر اطلاعات فنی پروتکل مودباس لطفاً به آدرس Modbus.org مراجعه کنید.
ارتباط با دستگاههای Slave یا PLCهای Master و یا کامپیوترها میتواند با استفاده از نرمافزار شبیهساز پروتکل مودباس بر روی کامپیوتر شخصی اجرا شود.
اتصال میتواند به صورت سریال یا اترنت و در قالب دستگاه Master یا Slave باشد. این نرمافزار امکان اجرای تمام کدهای عملکرد ارتباطی پروتکل مدباس، به منظور خواندن یا نوشتن بر روی دستگاه Slave موجود را فراهم میآورد.
شما به راحتی میتوانید یک کامپیوتر شخصی را برای اجرای نرمافزار شبیهسازی دستگاه Slave، و کامپیوتر دیگری را برای اجرای نرمافزار شبیهسازی دستگاه Master به کار ببرید.
اتصال به یک Slave در ابتدا با تنظیم پارامترهای ارتباطی برای پورت COM سریال، سپس با وارد کردن آدرس Slave در فیلد شناسه دستگاه انجام میشود.
برای مثال 1، انتخاب کد عملکرد 01، جهت خواندن وضعیت کویل دستگاه Slave، در آدرس 0001 و خواندنی به طول 100 کویل انجام میشود.
علاوه بر این، چندین شرکت ارائه دهنده محصولات و پشتیبانی برای کمک به شما در استفاده از این پروتکل وجود دارد. کمپانی ProSoft Technologies، شرکت ارتباطات صنعتی HMS و MOXA تعدادی از این شرکتها هستند.
محیط S7 - Graph و زبان برنامه نویسی گراف با ایجاد فانکشن بلاک FB :
تفاوت ایجاد محیط برنامه نویسی گراف با ایجاد Function Block با روش Sources File در این است که در روش ایجاد با فانکشن بلاک ( FB ) ، چون Save & Compile می شود اگر Error داشته باشد ، ذخیره نمی شود، اما در روش Sources می توانید با وجود داشتن Error ، برنامه را ذخیره کنید و بعد از روی فرصت خطاهای ایجاد شده را برطرف نمایید.
ایجاد محیط S7 - Graph با روش ایجاد فانکشن بلاک ( FB ) :
آشنایی با محیط نرم افزار S7 - Graph :
پس از اجرای برنامه S7 - Graph ، پنجره برنامه به شکلی شبیه زیر ظاهر می شود ، برای توصیف بهتر بخش های این برنامه ، شماره گذاری شده اند ، برنامه در بخش شماره 2 ، ترسیم می شود :
بخش 1 : این بخش که در بالا و نیز سمت چپ ظاهر می شود ، همان نوار ابزار ( Toolbars ) برنامه است ، بخش بالا به دوقسمت Standard و View تقسیم می شود که در فیلم آموزشی توضیح داده شده است.
بخش 1 در سمت چپ نیز به دو قسمت Sequencer و LAD/FBD تقسیم می شود که این قسمت هم در فیلم آموزشی توضیح داده شده است .
بخش 2 : برنامه کنترل ترتیبی در این بخش ترسیم و نوشته می شود ، وقتی برای اولین مرتبه ، برنامه Graph را باز می کنیم ، معمولاً شامل یک مستطیل به نام Step 1 که با S1 نشان داده می شود و یک خط افقی در زیر آن به نام Transition 1 که با T1 نشان داده می شود ، می باشد .
بخش 3 : این بخش Menu Bar برنامه است.
بخش 4 : این بخش Title Bar برنامه است ، نام پروژه ، شماره FB و DB و اطلاعاتی از این قبیل در این بخش نشان داده می شود .
بخش 5 : به این پنجره Overview گفته می شود ، و در آن می توان وضعیت کل Stepها که تشکیل یک Sequencer یا توالی را می دهند ، مشاهده کرد .
بخش 6 : به این پنجره Detail گفته می شود که در پایین برنامه ظاهر می شود و در آن می توان وضعیت متغیرها یا آدرس های استفاده شده را دید و در هنگام ذخیره سازی برنامه ، لیست Errorها و Warningها را در این بخش قابل مشاهده است .
بخش 7 : به این قسمت Status Bar گفته می شود ، وضعیت CPU در حالت Online در این قسمت قابل مشاهده است .
Step و Transition : در محیط اصلی S7 - Graph ، شکل یک Step و یک Transition نمایش داده می شود .
مفهوم Step که به صورت یک باکس مستطیل شکل نمایش داده می شود ، مرحله ای است که PLC به آن وارد می شود و در آنجا دستور یا دستورات خاصی را اجرا می کند ، CPU آنقدر در این مرحله می ماند تا شرایط گذر یا Transition که در زیر Step با یک خط افقی نمایش داده شده ، برآورده شود .
به عنوان مثال در شکل زیر درصورتی CPU از مرحله 1 عبور کرده و وارد مرحله2 می شود که سوئیچ I0.0 بسته شود :
دستورات دائمی ( Permanent Instruction ) : دستوراتی هستند که در هر سیکل اسکن ، صرفنظر از اینکه برنامه در کدام Step قرار دارد ، یکبار اجرا می شوند ، دستورات بخش Permanent بالای بلاک ، در ابتدای سیکل اسکن و دستورات Permanent پایین بلاک ، در انتهای سیکل اسکن اجرا می گردند ، دستورات می تواند از نوع condition یا از نوع Call باشد ، که ازمنوی Insert ، قسمت Permanent Instruction ، دستورات را می توان انتخاب کرد .
دستورات Permanent قبل از Sequencer :
دستورات Permanent بعد از Sequencer :
بخش Interlock : در این قسمت شرایط Interlock مربوط به Step نوشته می شود، از شرایط Interlock می توان برای دستورات برنامه نویسی Step استفاده کرد و متناسب با آن دستوراتی را اجرا کرد ، پس از این حیث با شرایط Transition متفاوت است چون Transition فقط شرایط گذر از Step را در برمی گیرد .
بخش Supervision : در این قسمت می توان یک Step را تحت نظارت قرار داد تا به عنوان مثال اگر زمان اجرای آن از حدی بیشتر شد یا کلید خاصی فعال شد ، آلارمی ظاهر شود .
بخش Comment : در این بخش ، توضیحات مربوط به همان Step را می توان نوشت و با بخش Block Comment که مربوط به توضیحات توالی ( Sequencer ) است ، متفاوت می باشد .
توجــه : می خواهیم برنامه کنترل روشنایی راه پله را که قبلاً به زبان FBD نوشته بودیم را به زبان گراف ، طراحی نماییم ، بهطوریکه سه عدد لامپ برای روشنایی که از نقطه مختلف کنترل شود ، برای کنترل از سه محل می توان از سه عدد شستی استارت یا سه عدد سنسور بدون تماس ( BERO ) خازنی ، استفاده کرد ، بعد از آنکه یکی از شستیهای استارت فشرده شود یا یکی از سنسورها ، حضور فردی را حس کند و اکتیو شود ، لامپها روشن شوند و به مدت 15 ثانیه روشن بمانند، درصورتیکه یکی از شستی استارت ، از یکی از محلهای کنترل ، مجدد فشرده شود و یا یکی از سنسورها ، دوباره فعال گردد ، دراینصورت مجدد زمان 15 ثانیه شروع شود و لامپ ها روشن شوند .
فیلم آموزشی ایجاد فانکشن بلاک ( FB1 ) و برنامه نویسی به زبان گراف در S7 - Graph ، فراخوانی فانکشن بلاک FB1 در بلاک OB1 ، دانلود برنامه و تست برنامه در شبیه ساز(Simulation ) :
با سلام و احترام خدمت تمامی مهندسان ؛ دانشجویان و سروران گرامی که از کشورهای مختلف به ویژه کشور عزیزمان ایران از طریق تماشای ویدیوهای آموزشی در سایت نماشا یا از طریق این وبلاگ با بنده درارتباطند.
یک مقاله بسیار ساده داشتم که شاید برای بعضی علاقه مندان مورد استفاده قرار گیرد ؛ لذا آنرا دروبلاگ قرار دادم.
کلیپ تصویری آموزشی طراحی پروژه کنترل دمای آب استخر توسط PLC , STEP7-300 و نرم افزار Simatic Manager :
توجــه : می خواهیم برنامه یک پروژه واقعی را طراحی کرده و در محیط نرم افزار Simatic Manager آن را ، اجرا کنیم .
پروژه کنترل دمای آب یک استخر می باشد ، که قسمت های مختلف پروسه را در شکل زیر مشاهده می کنید :
توجــه : همانطور که در شکل فوق ، مشاهده می کنید ، سنسور S1 تعیین سطح آب استخر را اعلام می کند و بعد از آنکه این سنسور ، فعال شد و اعلام کرد که آب در استخر وجود دارد ، سیستم روشن می شود و Pump1 ، آب را از استخر می کشد و از مبدل حرارتی ( Heat_Exchange ) و صافی ( Filter ) عبور داده و مجدد ، آب را به استخر بر می گرداند .
بویلر به طور مستقل کار می کند و دمای آب بویلر روی 90oC تنظیم می باشد.
سنسور RTD دمای آب استخر را که به طور پیش فرض روی 28 درجه سانتی گراد ( Set_Point=28oC ) تنظیم شده است ، اندازه گیری می کند ، درصورتیکه دما از 28oC کمتر شود ، آنگاه Pump2 روشن شده و آب خروجی بویلر را وارد سیستم می کند و از مبدل حرارتی ( Heat_Exchange ) , عبور میدهد تا دمای آب مجدد از 28oC بیشتر شود ، در این حالت ، اگر سنسور ، RTD ، دمای آب استخر را بیشتر از 28 درجه سانتیگراد را اندازهگیری کند ، آنگاه Pump2 خاموش می شود و این روند به همین صورت ادامه پیدا می کند .
توجــه مهم : آب خروجی از بویلر که دمای آن زیاد است با آب استخر برخورد نمی کند و فقط در مبدل حرارتی به دلیل آنکه لوله های زیادی وجود دارد و آب گرم بویلر، توسط پمپ شماره2 ، با عبور از لوله های مبدل حرارتی ، گرمای خود را به لوله های آب سردی که از استخر می آید ، می دهد ، درنتیجه تبادل حرارتی صورت می گیرد .
نکتــه : در این پروسه ، پاسخ سیستم کند است ، یعنی اگر دمای آب استخر 26oC باشد ، یعنی فقط 2oC کمتر از مقدار تعیین شده ( Set_Point = 28oC ) باشد ، باید مقدار زیادی از آب استخر از تبادلگر حرارتی عبور کند تا دمای آب استخر ، افزایش یابد ، لذا پاسخ سیستم کند است و نیازی به سیستم های دیگر کنترل مانند PID _ Controller نداریم .
توجه : در زیر ، تعریف متغیرها ، ورودی ها و خروجی ها را داریم و آنها را تحلیل می کنیم :
*** پیکربندی سخت افزار در Simatic Manager :
*** آدرس کارت DI / DO :
*** مشخصات و آدرس کارت AI :
*** جدول Symbol Table و تعیین آدرس های سمبلیک برای متغیرها ، ورودی ها و خروجی های برنامه :
***ایجاد دیتا بلاک Data Block ( DB1 ) برای تعریف Set_Point :
*** برای اینکه PLC هردفعه به DB1 مراجعه نکند ، اطلاعات آن را به OB100 که جزو OBهای راهاندازی است ، منتقل می کنیم ، تا در ابتدای اجرای پروژه PLC اطلاعات آن را بخواند و اجرا کند:
توجــه مهم : علاوه بر فانکشن های سیستمی ( SFC ) ، خانواده ای از فانکشن ها با عنوان IEC Function Blocks وجود دارند که بسیاری از عملیات های پیچیده را ساپورت می کنند ، این فانکشن ها به چهاردسته تقسیم می شوند :
1- Convert که تبدیلی را روی نوع دیتا انجام می دهند .
2- DT که برای عملیات مقایسه تاریخ و زمان بکار می رود .
3- String که برای عملیات روی String کاربرد دارد .
4- Floating Point Math برای عملیات روی متغیرهای اعشاری و 32 بیتی ، بکار می رود .
در برنامه پروژه کنترل دمای آب استخر در Network1 در بلاک OB1 از این دسته از فانکشن ها که از نوع Convert می باشد ، برای مقیاس اندازه گیری سنسور RTD ، استفاده می گردد ، به طوریکه در قسمت Program Element ، قسمت منوی درختی Libraries و سپس قسمت Standard Library و بعد قسمت TI-S7 Converting Blocks را انتخاب کرده و درنهایت فانکشن FC105 را انتخاب می کنیم ، مانند شکل های زیر :
*** OB1 را ایجاد می کنیم و برنامه اصلی پروژه را در آن طراحی می کنیم :
*** حالت های مختلف Simulation را در شکل های زیر مشاهده می کنید ( آدرس ورودی ها و خروجی ها را از جدول Symbol Table پیدا کنید ) :
در شکل زیر ، سنسور S1 فعال و شستی استارت فشرده شده در نتیجه Pump1 , Boiler و Pump2 روشن شده اند :
درشکل زیر ، دما توسط RTD_Scale مقدار 29oC اندازه گیری شده درنتیجه Pump2 خاموش شده است :
در شکل زیر ، دما توسط RTD_Scale مقدار 27oC اندازه گیری شده درنتیجه Pump2 روشن شده است :
در شکل زیر ، شستی استپ فشرده شده و Pump1 , Boiler و Pump1 خاموش شدهاند :
*** برنامه را Monitoring می کنیم ، تا حالت های ورودی و خروجی را بهتر مشاهده کنیم :
دیزل ژنراتور ؛
دیزل ژنراتورها برای تولید برق به صورت اضطراری و یا حالت کار دائم بهره برداری میشوند، مقدار توان خروجی و بازدهی دیزل ژنراتور اطلاعات مهمی را برای انتخاب ظرفیت دیزل ژنراتور در اختیار سرمایه گذار قرار میدهد، برای تبدیل توان ظاهری به توان حقیقی از ضریبی به نام ضریب توان یا Power Factor استفاده میشود.