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

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

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

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

امروزه کاربرد شبکه‌های صنعتی نظیر مدباس بر کسی پوشیده نیست. در گذشته برای ارتباط بین دو دستگاه لازم بود سیگنال‌های کنترلی توسط سیم‌کشی یک به یک به هم متصل شوند (Hardwire)؛ حال اینکه امروزه به‌سادگی توسط یک زوج سیم یا فیبر نوری این ارتباط برقرار می‌شود. این ارتباط در سیستم‌های کنترل، مانیتورینگ و سیستم‌های کنترل نظارتی SCADA به‌وفور مشاهده می‌شود.

در صنعت از چند نوع شبکه استفاده می‌شود که برخی از آن‌ها بیشتر مورد‌استفاده هستند:

  • Industrial Ethernet
  • Profibus
  • Modbus
  • Foundation Fieldbus
  • ASI

در این مقاله سعی داریم به زبان ساده و به‌دور از مباحث پیچیده‌ی شبکه و لایه‌های نرم‌افزاری، با آردوینو ارتباط modbus را پیاده‌سازی کنیم. پس با سیسوگ همراه باشید.

 

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

از گذشته تا کنون هر زمان صحبت از طرح برد کنترلری در زمینه‌ی صنعت می‌شده است، PLC ها در اوج قله و تقریباً بدون هیچ رقیبی خود‌نمایی می‌کرده‌اند. البته این موفقیت بی‌دلیل هم نیست.

در نقطه‌ی مقابل، آردوینو یک برد ساده با امکانات محدود، که برای روی میز و کاربردهای آموزشی معرفی شده است. حتی فکر کردن به اینکه یک برد آردوینو بخواهد مثلاً یک کوره‌ی القایی را کنترل و یا مانیتور کند، کمی دور از ذهن است.

حال اگر بخواهیم این کار را بکنیم چطور عمل کنیم؟

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

سنسور حرارت

در این مقاله سعی می‌کنیم داده‌های یک سنسور درجه حرارت را توسط پروتکل مدباس در یک شبکه SCADA توسط آردوینو دریافت کنیم. رجیستر و داده‌های سنسور مطابق جدول زیر است:

Command Name Command Number
Read Holding Register 03
Write (Preset) Single Register 06
Return Slave ID 17

 

Address Bytes Range Defaults
(°C /°F)
Register and Description
0 to 3 4 Serial Number -4 byte value. Read-only
4 to 5 2 Serial Version -2 byte value. Read-only
6 1 255 254 ADDRESS. Modbus device address
100 2 0-1000 ROOM TEMPERATURE reading in DegF
101 2 0-600 ROOM TEMPERATURE reading in DegC
304 2 0-1000 Relative 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

 

حمایت از Paradise Electronic

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

دیدگاه ها

19 دیدگاه

  • اوستان
    ۱۲ آذر ۱۳۹۹

    موردی که در شماتیک توجه مرا جلب کرد استفاده از ترانزیستور 8050 جهت قرار دادن آی سی 485 در حالت سند یا ریسیو بدون نیاز به اشغال پایه اضافی میکرو بود
    آیا همیشه میشه از این سیمبندی استفاده کرد یا مختص همین کتابخانه هست ؟

  • ارتباط آردوینو با HMI (نمایشگرهای صنعتی) - سیسوگ - Sisoog
    ۲۹ مهر ۱۳۹۸

    […] با استفاده از برد آردوینو و کتابخانه Modbus که قبلا در این مورد مقاله‌ای انتشار شده بود، عملا ارتباط با یک نمایشگر […]

  • شبیه سازی مدباس به صورت مجازی روی کامپیوتر - سیسوگ - Sisoog
    ۳۱ شهریور ۱۳۹۸

    […] توضیحاتی درباره‌ی مدباس داده شده که می‌توانید در اینجا آن را مشاهده کنید. از آنجا ممکن است که همه‌ی ما به […]

  • محمد
    ۲۲ مرداد ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۲۶ مرداد ۱۳۹۸

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

  • HOSI
    ۱ خرداد ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۴ خرداد ۱۳۹۸

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

  • محمد
    ۲۴ خرداد ۱۳۹۷

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

    • Zeus ‌
      زئوس Zeus
      ۲۷ خرداد ۱۳۹۷

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

      • علیرضا
        ۱۹ مرداد ۱۳۹۸

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

        • Zeus ‌
          زئوس Zeus
          ۲۰ مرداد ۱۳۹۸

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

          • علیرضا
            ۲۶ مرداد ۱۳۹۸

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

            0
          • Zeus ‌
            زئوس Zeus
            ۱ شهریور ۱۳۹۸

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

            0
          • علیرضا
            ۲۶ مرداد ۱۳۹۸

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

            0
          • Zeus ‌
            زئوس Zeus
            ۶ شهریور ۱۳۹۸

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

            0
  • علی
    ۴ مهر ۱۳۹۶

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

    احسنت.

    • سعید کاظمی
      Paradise Electronic
      ۵ مهر ۱۳۹۶

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

  • حامد رشیدی
    ۵ شهریور ۱۳۹۶

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

    • سعید کاظمی
      Paradise Electronic
      ۵ شهریور ۱۳۹۶

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

امنیت همیشه و در همه‌ی اعصار، مقوله‌ی مهم و قابل‌توجه‌ ای بوده و همیشه نوع بشر به دنبال امنیت بیشتر، دست به ابداعات و اختراعات گوناگونی زده است. ریموت کنترل یکی از این اختراعات است. در این مقاله، به بررسی امنیت انواع ریموت‌های کنترل خواهیم پرداخت....

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

حدود ۷ ماه پیش، مسابقه سوم سیسوگ رو برگزار کردیم و کلی نکته در مورد خواندن رشته‌های ورودی را بررسی کردیم. فکر...

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک