آشنایی با مدباس و جایگاه آن در اتوماسیون صنعتی
امروزه کاربرد شبکههای صنعتی نظیر مدباس بر کسی پوشیده نیست. در گذشته برای ارتباط بین دو دستگاه لازمبود سیگنالهای کنترلی توسط سیمکشی یک به یک به هم متصلشوند (Hardwire)؛ حالاینکه امروزه بهسادگی توسط یک زوج سیم یا فیبرنوری این ارتباط برقرار میشود. این ارتباط در سیستمهای کنترل، مانیتورینگ و سیستمهای کنترل نظارتی SCADA بهوفور مشاهده میشود. در صنعت از چند نوع شبکه استفاده میشود که برخیاز آنها بیشتر مورداستفاده هستند:
- Industrial Ethernet
- Profibus
- Modbus
- Foundation Fieldbus
- ASI
در این مقاله سعی داریم به زبان ساده و بهدور از مباحث پیچیدهی شبکه و لایههای نرمافزاری، با آردوینو ارتباط modbus را پیادهسازی کنیم. پس با ما همراه باشید.
آیا میتوان از آردوینو در صنعت استفاده کرد؟
از گذشته تا کنون هر زمان صحبت از طرح برد کنترلری در زمینهی صنعت میشده است، PLC ها در اوج قله و تقریباً بدون هیچ رقیبی خودنمایی میکردهاند. البته این موفقیت بیدلیل هم نیست. در نقطهی مقابل، آردوینو یک برد ساده با امکانات محدود، که برای روی میز و کاربردهای آموزشی معرفی شده است. حتی فکرکردن بهاینکه یک برد آردوینو بخواهد مثلاً یک کورهی القایی را کنترل و یا مانیتور کند، کمی دوراز ذهن است. حال اگر بخواهیم اینکار را بکنیم چطور عملکنیم؟ در اینجاست که پروتکل مدباس اهمیت خود را نشان میدهد. شاید نتوان بهاین سادگیها از یک برد آردوینو بهعنوان قلب یک کورهی القایی در توانهای بالا استفاده کرد ولی بهسادگی میتوان از آن در کارهای دیگری مثل مانیتورکردن استفادهکرد.
در این مقاله سعی میکنیم دادههای یک سنسور درجه حرارت را توسط پروتکل مدباس در یک شبکه SCADA توسط آردوینو دریافتکنیم. رجیستر و دادههای سنسور مطابق جدولزیر است:
شیلد توسعهی RS232 و RS485 برای آردوینو
برای اینکه بتوان با یک آردوینو با شبکه مدباس ارتباط برقرارکرد میتوان از یکی از شیلدهایی که بستر ۲۳۲ و یا ۴۸۵ را فراهم میکنند، استفادهکرد. ما در این پروژه از یک مبدل ۴۸۵ استفاده کردهایم.
برای این منظور از یک برد آردوینو UNO و یک شیلد توسعه و یک مبدل ۴۸۵ استفاده شدهاست.
برای سختافزار ۴۸۵ میتوانید از شیلدها و مبدلهای موجود در بازار استفادهکنید. در زیر یک شیلد و نقشهی آن و یک مبدل ۲۳۲ به ۴۸۵ نشان داده شدهاست:
سورس برنامهی آردوینو برای ارتباط با پروتکل مدباس
ماژول ۴۸۵ و سنسور دمای انتخابی خود را متصلکنید و تمام.
#include <Wire.h> // Cooking API libraries #include <arduinoUtils.h> // Include these libraries for using the RS-485 and Modbus functions #include <arduinoRS485.h> #include <ModbusMaster485.h> #include <SPI.h> // Instantiate ModbusMaster object as slave ID 254 ModbusMaster485 node(254); // Define one address for reading #define address 101 // Define the number of bits to read #define bitQty 2 void setup() { // Power on the USB for viewing data in the serial monitor Serial.begin(115200); // Initialize Modbus communication baud rate // Only allowed in SOCKET1 node.begin(9600); // Print hello message Serial.println("Modbus communication over RS-485"); delay(100); } void loop() { // This variable will store the result of the communication // result = 0 : no errors // result = 1 : error occurred int result = node.readCoils(address,bitQty); if (result != 0) { // If no response from the slave, print an error message Serial.println("Communication error"); delay(1000); } else { // If all OK Serial.print("Read value : "); // Print the read data from the slave Serial.print(node.getResponseBuffer(0)); delay(1000); } Serial.print("\n"); delay(1000); // Clear the response buffer node.clearResponseBuffer(); }
فایلهای دانلودی موردنیاز:
arduinoRS485-Modbus-library-v0_4
منبع: سیسوگ