AVR, آردوینو arduino, پروژه آردوینو, توصیه شده

راه اندازی مدباس توسط آردوینو

سنسور حرارت در شبکه مدباس

آشنایی با مدباس و جایگاه آن در اتوماسیون صنعتی

امروزه کاربرد شبکه‌های صنعتی نظیر مدباس بر کسی پوشیده نیست. در گذشته برای ارتباط بین دو دستگاه لازم بود سیگنال‌های کنترلی توسط سیم‌کشی یک به یک به هم متصل شوند (Hardwire)؛ حال اینکه امروزه به‌سادگی توسط یک زوج سیم یا فیبر نوری این ارتباط برقرار می‌شود. این ارتباط در سیستم‌های کنترل، مانیتورینگ و سیستم‌های کنترل نظارتی SCADA به‌وفور مشاهده می‌شود. در صنعت از چند نوع شبکه استفاده می‌شود که برخی از آن‌ها بیشتر مورد‌استفاده هستند:
  • Industrial Ethernet
  • Profibus
  • Modbus
  • Foundation Fieldbus
  • ASI
در این مقاله سعی داریم به زبان ساده و به‌دور از مباحث پیچیده‌ی شبکه و لایه‌های نرم‌افزاری، با آردوینو ارتباط modbus را پیاده‌سازی کنیم. پس با سیسوگ همراه باشید.  

آیا می‌توان از آردوینو در صنعت استفاده کرد؟

از گذشته تا کنون هر زمان صحبت از طرح برد کنترلری در زمینه‌ی صنعت می‌شده است، PLC ها در اوج قله و تقریباً بدون هیچ رقیبی خود‌نمایی می‌کرده‌اند. البته این موفقیت بی‌دلیل هم نیست. در نقطه‌ی مقابل، آردوینو یک برد ساده با امکانات محدود، که برای روی میز و کاربردهای آموزشی معرفی شده است. حتی فکر کردن به اینکه یک برد آردوینو بخواهد مثلاً یک کوره‌ی القایی را کنترل و یا مانیتور کند، کمی دور از ذهن است. حال اگر بخواهیم این کار را بکنیم چطور عمل کنیم؟ در اینجاست که پروتکل مدباس اهمیت خود را نشان می‌دهد. شاید نتوان به این سادگی‌ها از یک برد آردوینو به‌عنوان قلب یک کوره‌ی القایی در توان‌های بالا استفاده کرد ولی به‌سادگی می‌توان از آن در کارهای دیگری مثل مانیتور کردن استفاده کرد. سنسور حرارت در این مقاله سعی می‌کنیم داده‌های یک سنسور درجه حرارت را توسط پروتکل مدباس در یک شبکه SCADA توسط آردوینو دریافت کنیم. رجیستر و داده‌های سنسور مطابق جدول زیر است:
Command NameCommand Number
Read Holding Register03
Write (Preset) Single Register06
Return Slave ID17
 
AddressBytesRangeDefaults (°C /°F)Register and Description
0 to 34Serial Number -4 byte value. Read-only
4 to 52Serial Version -2 byte value. Read-only
61255254ADDRESS. Modbus device address
10020-1000ROOM TEMPERATURE reading in DegF
10120-600ROOM TEMPERATURE reading in DegC
30420-1000Relative Humidity reading. Writing a humidity value to the register will do calibration.

شیلد توسعه‌ی RS232 و RS485 برای آردوینو

برای این‌که بتوان با یک آردوینو با شبکه مدباس ارتباط برقرار کرد می‌توان از یکی از شیلد‌هایی که بستر 232 و یا 485 را فراهم می‌کنند، استفاده کرد. ما در این پروژه از یک مبدل 485 استفاده کرده‌ایم. شیلد RS-485 یرای آردوینو برای این منظور از یک برد آردوینو UNO و یک شیلد توسعه و یک مبدل 485 استفاده شده است. شیلد توسعه آردوینو سنسور دما و برد آزدوینو و شیلد RS 485 برای سخت‌افزار 485 می‌توانید از شیلدها و مبدل‌های موجود در بازار استفاده کنید. در زیر یک شیلد و نقشه‌ی آن و یک مبدل 232 به 485 نشان داده شده است: مبدل 232 به 485 شیلد RS 485

شماتیک شیلد RS 485

سورس برنامه‌ی آردوینو برای ارتباط با پروتکل مدباس

ماژول 485 و سنسور دمای انتخابی خود را متصل کنید و تمام.   می‌توانید کتابخانه‌ی RS485 را از لینک زیر دانلود کنید: arduinoRS485-Modbus-library-v0_4.zip  

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

18 دیدگاه در “راه اندازی مدباس توسط آردوینو

  1. محمد گفت:

    سلام من می خواهم با استفاده از محیط آردوینو برای stm32 برنامه بنویسم و پروتکل مودباس را راه اندازی کنم، چه جوری می تونم از این نمونه کد استفاده کنم؟
    آیا امکانش هست؟

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      امکان که بله قطعا هست ؛ برای این کار تنها نیازه مقداری از برنامه نویسی C++ سر در بیاورید و توابع مروبط به صفر و یک کردن خروجی را تغییر دهید هم چنین روال های ارسال و دریافت داده سریال را جایگذین کنید.
      به همین سادگی 🙂

  2. HOSI گفت:

    سلام
    ببخشید این زیاد آموزنده نبود و از توابع آماده استفاده شده بود . ای کاش در مورد پکیج بیشتر توضیح میدادید .
    مثلا پکیج چند بایت هست
    تاخیر بین هر بایت چقدر هست
    و …..
    ممنون

    1. زئوس Zeus زئوس Zeus گفت:

      امم خوب قبول دارم که جزییات زیادی رو نداشت ولی خوب اینطور هم که گفتید نا آموزنده نبود
      میتونید با بررسی توابع و البته کد داخلشون جزییاتی که مدنظرتون هست رو پیدا کنید.

  3. محمد گفت:

    سلام
    کتابخانه spi ایراد دارد در برنامه

    1. زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز
      متوجه منظورتون نمیشه ، فکر کنم کتابخانه spi از کتابخانه های خود Arduino است.
      میشه بگید چه مشکلی داره یا چه خطایی دریافت می کنید.

      1. Alireza Jafarian علیرضا گفت:

        سلام کتابخانه modbusRS485 کلا مشکل داره و run نمیشه…حتی مثال هاشم اجرا نمیشه.

        1. زئوس Zeus زئوس Zeus گفت:

          اگه بگید چه خطایی دریافت میکنید بهتر میشه کمک کرد.

          1. Alireza Jafarian علیرضا گفت:

            error library SPI mide k mige mojod nist dar soraty k hast…

          2. زئوس Zeus زئوس Zeus گفت:

            سلام
            احتمال این که به دلیل آپدیت های جدید آردوینو این مشکل پیش اومده باشه هست
            باید بررسی کنیم ببینیم مشکل دقیقا چیه
            متشکر برای اطلاع رسانی شما

          3. Alireza Jafarian علیرضا گفت:

            یه سوال اینکه من مدباسو با یه کد دیگه نوشتم روش حل شد الان که فانکشن وصل میکنم که فرکانس رو بخونم تو فرکانس های پایین 3hz و تو فرکانس های بالا(2khz) اختلاف چیزی که می خونم تا 30hz هم میرسه نمیدونید مشکل کجاست؟؟؟
            حتی روی سریال خود آردوینو ینو که تست می کنم همین مشکل و دارم.
            حتی کد خواندن فرکانس رو با کانتر نوشتم باز همین مشکل هست.

          4. زئوس Zeus زئوس Zeus گفت:

            ببخشید متوجه نشدم فرکانس رو به کجا وصل میکنید ؟ چون که مودباس همون سریال خودمون هست یا نهایتا روی شبکه باشه در هر حال نمیتونید بهش فرکناس وصل کنید
            پس احتمالا یه ترانسدیوسر برای تبدیل فرکانس به پروتکل مودباس باید داشته باشید.

  4. سیما درزی علی گفت:

    واقعا جای همچین مطلب بسیار مفید و کاربردی ای در سایت فوق العاده شما خالی بود

    احسنت.

    1. سلام
      تشکر بابت حسن توجه شما

  5. مطالبتون واقعا ناب و بدردبخور هستند‌.
    با تشکر از زحماتتون

    1. متشکر
      از اینکه مطالب مورد توجهتون قرار گرفته خوشحالیم