ارتباط آردوینو با HMI(نمایشگرهای صنعتی)

0
107
نمایشگرهای صنعتی
نمایشگرهای صنعتی

در این مقاله سعی می‌کنیم بااستفاده‌از برد آردوینو و کتابخانه Modbus که قبلا در این مورد مقاله‌ای انتشار شده بود، عملا ارتباط با یک نمایشگر صنعتی که امروزه به نام(Human Machine Interface (HMI از آن یاد می‌شود یک نمونه کد و یکی‌از کاربردهای ارتباط مدباس را آموزش‌بدیم که طرفدارهای خاص خودش رو داره.

HMI یا همان نمایشگرهای صنعتی امروزه در اکثر دستگاه‌های بزرگ و کوچک استفاده می‌شود، که انواع مختلفی از برندها و امکانات متنوع در دنیا هستند و بیشتر پروتکل‌های ارتباطی عمومی و پیشرفته در آن لحاظ شده‌است که می‌توان از Rs232 – Modbus – Ethernet – Canbus -Canopen و… در آن نام برد که امروزه تبدیل به وصله جدانشدنی از صنعت و الکترونیک شده‌است.

هر HMI تنظیمات خاص و نرم‌افزار خاص خودش را دارد که در این مقاله ما با برند دلتا آموزش خواهیم داد.

hmi نمایشگرهای صنعتی
hmi نمایشگرهای صنعتی

 

همانطورکه گفته‌شد هر برند از HMI‌ها دارای نرم‌افزار مخصوص خودشان می‌باشند که در این مبحث قرار هست با HMI دلتا که نسبتا محبوبیت زیادی از لحاظ قیمت و کیفیت و فراوانی دارد را کار بکنیم. نرم‌افزار مخصوص این برند DOPSoft است که معمولا همراه HMI فروشنده در اختیار کاربر قرار میده.

نرم‌افزار DOPSoft
نرم‌افزار DOPSoft

 

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

نرم‌افزار DOPSoft
نرم‌افزار DOPSoft

 

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

نرم‌افزار DOPSoft
نرم‌افزار DOPSoft

1-نام پورت(LINK NAME) که ما پورت ۲ را انتخاب می‌کنیم.

2-نوع ارتباط کنترلر(CONTROLER) مود باس رو انتخاب می‌کنیم.

3-اینترفیس و تنظیمات مربوط به نرخ ارسال و دریافت که 485-9600-8-N-1 است رو انتخاب کردیم.

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

نرم‌افزار DOPSoft ارتباط آردوینو با hmi
نرم‌افزار DOPSoft ارتباط آردوینو با hmi

 

همانطورکه در تصویر می‌بینید ما یک نمایشگر عقربه‌ای برای نشان‌دادن مقدار ورودی آنالوگ برد آردوینو انتخاب‌کردیم و آدرس ریجستر ۱۰ را بهش دادیم یعنی هر تغییری در مقدار این آدرس از حافظه آردوینو اتفاق بیفتد نمایشگر همان مقدار را برایمان به‌صورت عقربه نمایش می‌دهد. مقدار آدرس اسلیو را نیز یک دادیم. (در این آموزش مستر نمایشگر هست و اسلیو برد آردوینو که آدرس یک رو براش اختصاص‌دادیم که در قسمت نرم‌افزار برد آردوینو به آن اشاره‌خواهیم‌کرد)

خب تا اینجا ما تنظیمات HMI را انجام دادیم و برنامه مربوطه رو روی HMI دانلود می‌کنیم و کار با نمایشگر تا اینجا به پایان می‌رسد.

برای ادامه کار ما علاوه‌بر برد آردوینو نیاز به بستر فیزیکی RS485 داریم که خوشبختانه هم میشه ساخت و هم از ماژول‌های آماده استفاده‌کرد چون بردهای آردوینو فقط بستر RS232 هست که از طریق ماژول مذکور این بستر را مهیا می‌کنیم. در این پروژه برای سهولت کار ما از ماژول آماده استفاده می‌کنیم. انواع مختلف این ماژول‌ها در بازار موجود و بسته به سلیقه و نیازمان انتخاب می‌کنیم.

مبدل ttl به سریال rs482
مبدل ttl به سریال rs482

 

ماژول فوق بستر مورد نیاز ما را در این پروژه فراهم می‌کند. پین‌های این ماژول عبارتند از:

Vcc و gnd که تغذیه ماژول می‌باشند 5Vdc

A-B خروجی‌های RS485

Di به پین Tx برد آردوینو

Ro به پین Rx برد آردوینو

De-Re پین کنترل ارسال دریافت است که داخل برنامه به آن اشاره خواهیم کرد. این پین وضعیت ماژول را تعیین می‌کند که در حالت دریافت قرار گیرد یا ارسال اطلاعات از برد.

خب باتوجه‌به مطالب بالا می‌رسیم به قسمت اصلی کارمان که کدهای مربوط به برد آردوینو است.

#include <ModbusRTUSlave.h>

int sensorPin = A0; //ورودی آنالوگ که اینجا ما ولوم استفاده میکنیم 
// size of data which will be read and written
#define DATA_SIZE 100 //تعداد ریجستر هایی که بسته به نیاز افزایش یا کاهش میدیم
// data array which will be read and written
u16 _D[DATA_SIZE];




#define OUR_ID_AS_A_SLAVE 1 //آدرس اسلیو
#define PIN_CONNECTED_TO_BOTH_DE_AND_RE 3 //پین مربوط به کنترل ارسال و دریافت

ModbusRTUSlave rtu(OUR_ID_AS_A_SLAVE, &Serial1, PIN_CONNECTED_TO_BOTH_DE_AND_RE);

void setup()
{ 
rtu.addWordArea(VIRTUAL_ADDRESS, _D, DATA_SIZE);
rtu.begin(9600);

}

void loop()
{
// waiting for requests from master
// reading and writing _D according to requests from master happens here
rtu.process();

_D[10] = analogRead(sensorPin); //از ورودی آنالوگ خوانده و در ریجستر شماره 10 ذخیره می‌کنیم

}

 

لینک‌های دانلود

دانلود کتابخانه – حجم ۲۲.۲ کیلوبایت

 

منبع: سیسوگ

برای این مقاله نظر بگذارید:

لطفا دیدگاه خود را بنویسید
لطفا نام خود را وارد کنید