IOT

کنترل پمپ آردوینو + صفحه نمایش STONE HMI

سیستم تنظیم هوشمند تیغه یک فناوری ثبت اختراع است که در سیستم کنترل جریان اصلی انواع نیروگاه های برق آبی بزرگ، متوسط ​​و کوچک و ایستگاه های پمپاژ استفاده می شود. این پروژه از صفحه نمایش لمسی صنعتی سریال قابل اعتماد به عنوان رابط انسان و ماشین برای نمایش پارامترهای روزانه و دوز تیغه در زمان واقعی، قدرت خروجی، جریان فوری و سایر اطلاعات به عنوان نمایش اثر عملیات استفاده می کند. علاوه بر این، گزارش وضعیت کار و فرم هشدار خطا نیز برنامه ریزی شده است و دکمه آماده به کار رزرو شده است. این پروژه از صفحه نمایش لمسی سریال برای نمایش داده ها و نمایش نشانگر اسلاید استفاده می کند. لوازم جانبی به شرح زیر است:  

  1. STVI056WT-01 صفحه نمایش لمسی سریال و برد آداپتور STONE V1.2;  
  2. برد کنترل آردوینو همسان;  

شرح مختصری از عملکرد رابط سیستم کنترل هوشمند تنظیم کننده تیغه.  

سه دکمه در صفحه اصلی وجود دارد که با فشار دادن آنها می توان به سیستم ایستگاه برق آبی مربوطه، سیستم کنترل ایستگاه پمپاژ و رابط راهنمای کاربر (با دکمه های یدکی) وارد شد. رابط راهنمای کاربر چارچوب سیستم نمایشی را همانطور که در شکل زیر نشان داده شده است نشان می دهد:

(رابط اصلی نرم افزار نمایش کنترل تنظیم هوشمند Enlegi Blade)

در رابط سیستم کنترل نیروگاه برق آبی، دکمه های استارت و توقف و نمایش وضعیت، امتیاز (شامل ولتاژ نامی، توان نامی و سرعت نامی) و مقدار کنترل (شامل زاویه گام تیغه پروانه و توان خروجی) وجود دارد. علاوه بر این، دکمه‌های پرش صفحه دیگری نیز وجود دارد (مانند صفحه اصلی، گزارش وضعیت کار، هشدار خطا و سایر دکمه‌های آماده به کار). در صفحه گزارش وضعیت کار و هشدار خطا، می‌توان دکمه بازگشت برای بازگشت به این صفحه وجود داشته باشد. نمودار زیر:

           (رابط نمایشگر کنترل هوشمند نیروگاه برق آبی)

شرح عملکرد رابط سیستم کنترل ایستگاه پمپ. نمودار زیر:

                            (رابط عملکرد سیستم کنترل ایستگاه پمپاژ)

در رابط عملکردی ایستگاه پمپ، حالت را می توان تغییر داد و منبع تغذیه کل سیستم را می توان روشن و خاموش کرد تا پارامترهای واقعی شبیه سازی شده (مانند دوز تیغه، سرعت جریان فوری، توان خروجی) و غیره نمایش داده شود. رابط ها را می توان تغییر داد (مانند گزارش وضعیت کار، گزارش هشدار خطا). در همان زمان، مقادیر سیستم (تعداد کل تیغه ها، توان نامی، نرخ جریان تنظیم شده) نیز می توانند نمایش داده شوند. سایر رابط‌ها نیز می‌توانند مانند گزارش وضعیت کار (محتوا را می‌توان شماره سفارش داد، زمان وقوع، جزئیات رویداد، یادداشت‌ها)، هشدار خطا (محتوا را می‌توان شماره سفارش داد، زمان وقوع، جزئیات هشدار، کد هشدار و غیره) را داشته باشد. دو رابط می توانند یک دکمه بازگشت داشته باشند، می توانند به رابط عملکردی ایستگاه پمپ برگردند.  

ایده کاری:  

صفحه پورت سریال به عنوان رابط انسان و ماشین عمل می کند و با برد توسعه آردوینو ارتباط برقرار می کند. برد دستورات دکمه صفحه نمایش لمسی را می پذیرد و داده ها را به صفحه نمایش لمسی پورت سریال برای نمایش همزمان ارسال می کند. مقیاس لغزنده برای نمایش تغییرات قدرت به صورت پویا طراحی شده است. نمادهای سوئیچ پاور، چاقوی برق، سوئیچ حالت و چاقوی حالت برای تولید فایل های ICON و متحرک سازی اثرات عمل منبع تغذیه و حالت طراحی شده اند. علاوه بر این، در برنامه آزمایشی آردوینو، از حافظه متغیر برای خواندن دستورالعمل ها برای به دست آوردن وضعیت منبع تغذیه و حالت استفاده می شود تا شبیه سازی داده های خروجی را کنترل کرده و پنجره کمیت واقعی را به صفحه پورت سریال ارسال کند.  

مراحل کار:  

  1. راه اندازی سخت افزار؛  
  2. الف) برد توسعه آردوینو و USB را به برد تبدیل پورت سریال وصل کنید.  
  3. ب) وصل کنید صفحه نمایش لمسی STONE با برد دانلود پورت سریال USB و برد آداپتور پورت سریال USB به پورت.  
  4. ج) صفحه پورت سریال و منبع تغذیه برد توسعه آردوینو را وصل کنید.  

3، از طریق دستور سریال اشکال زدایی، و سپس برنامه ریزی برای دستیابی به کنترل ایستگاه پمپ و توابع نمایش کنترل ایستگاه برق آبی.  

 سپس، روند توسعه خاص را مستند کنید.

ابتدا اتصال سخت افزاری را تنظیم کنید.  

اتصال همه قطعات را طبق روال کار به خوبی انجام دهید:

بعد، تصویر نشانگر ICON را بسازید.  

دکمه ها و آیکون های چاقو مورد استفاده در این پروژه به شرح زیر ساخته شده اند:  

(سوئیچ کنترل ایستگاه پمپ، فایل ICON انیمیشن چاقو 8. نمودار مرور لیست ICO)

در نوار منوی STONE TOOL BOX (نرم افزار طراحی رابط کاربری گرافیکی)، روی Icon Generation Tool در زیر منوی Tool (T) کلیک کنید تا کادر محاوره ای Icon Tool ظاهر شود. برای انتخاب مسیر تصویر نماد، روی "انتخاب مسیر تصویر" در پایین کادر محاوره ای کلیک کنید. روی دکمه "Generate ICON file" کلیک کنید تا فایل های BMP را در مسیر ایجاد فایل ".ico" که توسط پلت فرم STONE TOOL BOX (نرم افزار طراحی رابط کاربری گرافیکی) شناسایی شده است، بسته بندی کنید. روی دکمه "پیش نمایش" برای مشاهده لیست ICON در فایل وارد شده کلیک کنید.ico "فایل فشرده.  

دکمه برای متحرک کردن نماد BMP، پیکسل مانند بالا (کنترل نماد متغیر تولید شده، اندازه همان موقعیت باید یکسان باشد)، کنترل ایستگاه پمپ 8 تصاویر را در یک پوشه برش دهید. سپس، در سمت چپ صفحه STONE TOOL BOX (نرم افزار طراحی رابط کاربری گرافیکی)، کارت صفحه نماد را انتخاب کرده و با استفاده از دکمه «افزودن نماد» در زیر «فهرست نمادها»، آن را به فایل فشرده شده 7. Ico اضافه کنید. تمام 6 تصویر از وضعیت سوئیچ کنترل نیروگاه برق آبی را در پوشه دیگری قرار دهید و آنها را به ترتیب 1-6 مرتب کنید. "6" را ایجاد کنید. فایل Ico» و سپس در سمت چپ STONE TOOL BOX (نرم افزار طراحی رابط کاربری گرافیکی) صفحه، کارت صفحه نماد را انتخاب کرده و زیپ شده «6. Ico» با استفاده از دکمه «افزودن نماد» در زیر «فهرست نمادها».  

اکنون نماد تصویر را در STONE TOOL BOX (نرم افزار طراحی رابط کاربری گرافیکی) وارد کرده و دکمه عملکرد را بسازید.  

روش 9 متغیر انیمیشن icon.wmv هنوز در این پروژه برای تحقق عملکرد انیمیشن استفاده می شود. اسکرین شات تنظیمات پارامتر به شرح زیر است:  

            (نمودار ویژگی متغیر متغیر نیروگاه برق آبی)

از چپ به راست پارامتر ICON تنظیمات سه متغیر صفحه عملکرد ایستگاه برق آبی است: شروع، توقف و وضعیت. آدرس حافظه آنها یکسان است (0x0039) و محدوده داده آنها یکسان است، بنابراین تغییرات آنها همگام می شود. فایل‌های آیکون 6 هستند. Ico و شماره سریال‌های مربوط به آیکون به ترتیب 1 و 2، 3 و 4، 6 و 5 هستند که با توجه به وضعیت واقعی انتخاب می‌شوند.  

افکت پویانمایی حالت دکمه از طریق دکمه های افزایشی به دست می آید. شکل زیر پارامترهای دکمه افزایش در سمت چپ و دکمه تشخیص در سمت راست را نشان می دهد. آدرس 0x0039 است که هر دوی آن‌ها مانند متغیر متغیر ICON هستند.

(نمودار ویژگی دکمه افزایشی با همان آدرس حافظه)

(نمودار ویژگی ICON متغیر وضعیت چاقوی دکمه ای ایستگاه پمپاژ)

از چپ به راست پارامتر ICON تنظیمات چهار متغیر صفحه عملکرد ایستگاه پمپاژ است: دکمه روشن/خاموش، چاقوی روشن، چاقوی حالت و دکمه حالت. در اینجا، هر دو فایل آیکون 8.ICO هستند و محدوده داده آنها یکسان است، که در آن آدرس حافظه همان به طور همزمان تغییر می کند.  

انیمیشن های حالت دکمه ها نیز با دکمه های افزایشی پیاده سازی می شوند. در شکل زیر سمت چپ دکمه کاهش منبع تغذیه و سمت راست دکمه افزایش حالت پارامترهای دکمه کاهش منبع تغذیه هستند. آدرس‌ها مانند Variable ICON بالا، به ترتیب 0x0009 و 0x000A هستند. این بیشتر از حالت پردازش محدود یک دکمه پینگ پنگ است.

(نمودار ویژگی دکمه افزایشی وضعیت دکمه ایستگاه پمپاژ متغیر ICON متغیر با همان آدرس حافظه)

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

ویژگی های پارامتر آن عبارتند از:

(آیکون کشویی توان خروجی ایستگاه پمپ - جعبه ویژگی مقیاس اسلایدر)

نماد این کنترل مقیاس اسلایدر در DEMO 24.ico رسمی نامیده می شود. روش افزودن فایل 24.ico مانند بالا است. آدرس حافظه این کنترل Slider Scale 0x0180 می باشد که می توان با دستور 82 در برنامه MCU نوشت (همانطور که در تصویر بالا بازه 0-100 تنظیم شده است) برای تغییر موقعیت آیکون.  

به طور خاص، وضعیت دکمه های منبع تغذیه و حالت در این پروژه از آدرس حافظه 0x0009، 0x000A و 0x0039 صفحه پورت سریال از طریق دستورالعمل 83 خوانده می شود. 

دستورالعمل های استفاده شده به شرح زیر است:  

A5 5A 04 83 00 09 02  

بازخورد صفحه پورت سریال به شرح زیر است:  

A5 5A 08 83 00 09 02 00 01 00 02  

00 01 زیر داده 2 بایتی 0x0009 است، 00 02 داده 2 بایتی 0x000A است.  

دستورالعمل 0x0039 را به صورت زیر بخوانید:  

A5 5A 04 83 00 39 01  

بازخورد صفحه پورت سریال:  

A5 5A 06 83 00 39 01 00 01 یا  

A5 5A 06 83 00 39 01 00 02  

پنج آدرس داده برای نوشتن وجود دارد: 0x0020، 0x0160، 0x0180، 0x0260، 0x0280.  

که در آن، آدرس دوز برگ 0x0020، یک عدد صحیح 2 بیتی 2 بایت است. می توان آن را از طریق پورت سریال به صفحه نمایش لمسی منتقل کرد.  

برای ارسال عدد 11 به صفحه نمایش متغیر داده صفحه لمسی، از دستور زیر استفاده کنید:  

A5 5A 05 82 00 20 00 0B  

اشکال زدایی برنامه نویسی  

کد به شرح زیر است:  

/*

  frank8

  STONE و آردوینو COMM، سیستم enlaiji yepian.

  LED را به مدت یک ثانیه روشن کرده و سپس برای یک ثانیه بارها و بارها خاموش می کند.

  آدرس 0x0020 آدرس شماره YePian است.

  آدرس 0x0160 آدرس LiuLiang است.

  آدرس 0x0180 آدرس Bengzhan outpower است.

  آدرس 0x0260 آدرس Jiejujiao است.

  آدرس 0x0280 آدرس خروجی آب است.

  آدرس 0x0009 کلید پاور bengzhan است.

  آدرس 0x000A کلید حالت bengzhan است.

  آدرس 0x0039 کلید power power است.

  این کد نمونه در فایل frank است. 20210611

 */

// پین 13 دارای یک LED متصل به بیشتر تخته های آردوینو است.

// یک اسم بگذارید:

int led = 13;

int iYePian = 0; //0x0020 برای تعداد YePian!

int iGongLu = 0; //0x0180 برای The GongLu!

int iLiuLiang = 0; //0x0160 برای LiuLiang اکنون!

int iJiao = 0; // 0x0260 برای The JieJuJiao!

int iGongLuWater = 0; //0x0280 برای The Water GongLu! ارزش 0-50000 است!

int iLed = 1; //زمان تاخیر شماره.

int iNum = 0 ; //خواندن در char num.

int iNum2 = 0; //خواندن در char num2 برای ShuiDianZhan!

int iPower = 2; //کلید مجسمه 0x0009

int iMode = 2; //تندیس کلید 0x000A

int iPowerWater = 2; //کلید مجسمه 0x0039

// وقتی تنظیم مجدد را فشار می دهید ، روال تنظیم یک بار اجرا می شود:

void setup () {                

  // پین دیجیتال را به عنوان یک خروجی مقداردهی اولیه کنید.

  pinMode (led، OUTPUT)؛     

  Serial.begin(115200); // تابع ارتباط سریال را باز کنید و منتظر بمانید تا پورت سریال باز شود  

در حالی که (!سریال) {

    ; // منتظر بمانید تا پورت سریال متصل شود. فقط برای لئوناردو مورد نیاز است

  }  

}

// روال حلقه بارها و بارها برای همیشه اجرا می شود:

void loop () {

  int inChar;

    if (iLed == 900) {     

//——- خواندن مقدار 0x0009 و 0x000A———- 

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x04); //طول

            Serial.write(0x83); // خواندن!

            Serial.write(0x00); // آدرس کلید پاور bengzhan!

            Serial.write(0x09); // آدرس کلید پاور bengzhan!

            Serial.write(0x02); // 0x0009 (قدرت) و 0x000A (حالت)

//———مقدار برگشتی STONE «A5 5A 08 83 00 09 02 00 01 00 02» خواهد بود——

     }

/*——————————————————————————-*/     

    if (iLed == 800) {     

//——- خواندن مقدار 0x0039———- 

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x04); //طول

            Serial.write(0x83); // خواندن!

            Serial.write(0x00); // آدرس کلید پاور ShuiDianZhan!

            Serial.write(0x39); // آدرس کلید پاور ShuiDianZhan!

            Serial.write(0x01); // 0x0039 (کلید روشن/خاموش) 

//———مقدار برگشتی STONE «A5 5A 06 83 00 39 01 00 01» خواهد بود ——

     }

  // پیام ارسال شده توسط پورت سریال را بخوانید:

  if (Serial.available() > 0) {inChar = Serial.read(); }

  if (inChar == 0x09) { iNum = 1 ; }

  if ((inChar == 0x02)&&(iNum == 1)) { iNum = 2 ; }

  if ((inChar == 0x00)&&(iNum == 2)) { iNum = 3 ; }

  اگر ((inChar == 0x01)&&(iNum == 3)) {  

      iNum = 4 ;

      if(iPower != 1){

          آی پاور = 1 ; //روشن!

          iLiuLiang = 10 ;

          iGongLu = 50 ;

          iYePian = 10 ;         

      }

   }

   اگر ((inChar == 0x02)&&(iNum == 3)) {  

      iNum = 4 ;

      آی پاور = 2 ; //خاموش!

      iLiuLiang = 0 ;

      iGongLu = 0 ;

      iYePian = 0 ;

   }

   if ((inChar == 0x00)&&(iNum == 4)) { iNum = 5 ; }

   اگر ((inChar == 0x01)&&(iNum == 5)) {  

      iNum = 0 ;

      iMode = 1 ; //حالت خوب است!

   }

   اگر ((inChar == 0x02)&&(iNum == 5)) {  

      iNum = 0 ;

      iMode = 2 ; //حالت خاموش است!

      if(iPower == 1)iGongLu = 60 ; //GongLu 60٪ تنظیم شده است!

   }

  //——————کلید 0x0009 و 0x000A خوب بخوانید! iPower\iMode باشه!——————————-

   if (inChar == 0x39) { iNum2 = 1 ; }

  if ((inChar == 0x01)&&(iNum2 == 1)) { iNum2 = 2 ; }

  if ((inChar == 0x00)&&(iNum2 == 2)) { iNum2 = 3 ; }

  اگر ((inChar == 0x01)&&(iNum2 == 3)) {  

      iNum2 = 0 ;

      if(iPowerWater != 1){

          iPowerWater = 1; //روشن!       

          iJiao = 0 ;

          iGongLuWater = 0 ;

      }

   }

   اگر ((inChar == 0x02)&&(iNum2 == 3)) {  

      iNum2 = 0 ;

      iPowerWater = 2 ; //خاموش!

   }

  //——————کلید 0x0039 خوب خوانده شود! iPowerWater باشه!——————————-

  تأخیر (1) 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite (LED، HIGH); // LED را روشن کنید (HIGH سطح ولتاژ است)

                  //تاخیر(500); // یک ثانیه صبر کنید، محدوده: 200-2000

           if(iPower == 1) { 

               iYePian += 1; //محدوده: 1-20

               iLiuLiang += 1; //محدوده: 1-20

               if(iMode == 1) iGongLu += 5; //محدوده: 1-20

           }   

           if(iYePian >= 14 ) { iYePian = 10; }   

           if(iGongLu >= 70) { iGongLu = 50; }   

           if(iLiuLiang >= 14) { iLiuLiang = 10; }   

           if(iPowerWater == 2) { 

               iJiao += 1; //محدوده: 1-20

               iGongLuWater += 2; //محدوده: 1-20

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite (LED، LOW)؛ // با پایین کردن ولتاژ، LED را خاموش کنید

                  //تاخیر(500); // یک ثانیه صبر کنید، محدوده: 200-2000

      iLed = 1;

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // آدرس YePian

            Serial.write(0x20); // آدرس YePian

            Serial.write(0x00);

            Serial.write(iYePian);

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // آدرس GongLu

            Serial.write(0x80); // آدرس GongLu

            Serial.write(0x00);

            Serial.write(iGongLu);

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // آدرس LiuLiang

            Serial.write(0x60); // آدرس LiuLiang

            Serial.write(iLiuLiang); //LiuLiang 2800–3200 است

            Serial.write(0x80);            

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // آدرس ShuiDianZhan JieJuJiao

            Serial.write(0x60); // آدرس ShuiDianZhan JieJuJiao

            Serial.write(0x00);

            Serial.write(iJiao);

            Serial.write(0xA5); //"A5" 165 است

            Serial.write(0x5A); //”5A” 90 است

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // آدرس ShuiDianZhan out Power

            Serial.write(0x80); // آدرس ShuiDianZhan out Power;

            Serial.write(iGongLuWater); //ShuiDianZhan خروجی Powe 0–32000 است

            Serial.write(0x00);            

  }    

در نهایت ویدیو را بصورت آنلاین ضبط کنید. 

منبع تغذیه و ارتباط را وصل کنید، برد توسعه آردوینو را به ارتباط پورت سریال وصل کنید، رابط عملکردی ایستگاه برق آبی و ایستگاه پمپاژ را در صفحه پورت سریال مشاهده کنید، سوئیچ را برای بررسی اثر لمس کنید و نماد را بلغزانید و داده ها عادی هستند. .  

منبع: اطلاعات داده های افلاطون