IOT

Arduino pumba juhtimine+ STONE HMI ekraan

Laba intelligentne reguleerimissüsteem on patenteeritud tehnoloogia, mida kasutatakse erinevate suurte, keskmiste ja väikeste hüdroelektrijaamade ja pumbajaamade peavoolu juhtimissüsteemis. See projekt kasutab usaldusväärset seeriatööstuslikku puuteekraani inimese ja masina liidesena, et kuvada igapäevaseid parameetreid ja reaalajas tera annust, väljundvõimsust, kohest voolu ja muud teavet tööefekti kuvana. Lisaks on planeeritud ka tööseisundi logi ja veateate vorm ning ooterežiimi nupp on reserveeritud. Projekt kasutab andmete kuvamiseks ja slaidikuvamiseks puuteekraani. Lisatarvikud on järgmised:  

  1. STVI056WT-01 seeriapuuteekraan ja STONE adapterplaat V1.2;  
  2. Sobiv Arduino juhtplaat;  

Nutika tera reguleeriva juhtimissüsteemi liidese funktsiooni lühikirjeldus.  

Avalehel on kolm nuppu, millele vajutades saab siseneda vastavasse hüdroelektrijaama süsteemi, pumbajaama juhtimissüsteemi ja kasutusjuhendi liidesesse (varuklahvidega). Kasutusjuhendi liides näitab demosüsteemi raamistikku, nagu on näidatud järgmisel joonisel:

(Enlegi Blade Intelligent Adjustment Control Demonstratsioonitarkvara koduliides)

Hüdroelektrijaama juhtimissüsteemi liideses on käivitus- ja seiskamisnupud ning oleku, nimiväärtuse (sh nimipinge, nimivõimsus ja nimikiirus) ja juhtväärtuse (sh sõukruvi laba kaldenurk ja väljundvõimsus) kuva. Lisaks võivad olla ka muud lehekülje hüppamise nupud (nagu koduleht, tööseisundi logi, tõrkealarm ja muud ooterežiimi nupud). Tööseisundi logi ja veateate lehel võib sellele lehele naasmiseks olla tagasinupp. Allolev diagramm:

           (Hüdroelektrijaama intelligentne juhtekraani liides)

Pumbajaama juhtimissüsteemi liidese funktsiooni kirjeldus. Allolev diagramm:

                            (Pumbajaama juhtimissüsteemi funktsiooniliides)

Pumbajaama funktsionaalses liideses saab režiimi muuta ja kogu süsteemi toiteallikat sisse ja välja lülitada, et kuvada tegelikud simuleeritud parameetrid (nagu labade annus, vahetu voolukiirus, väljundvõimsus) ja muud liideseid saab vahetada (nt tööseisundi logi, veateate aruanne). Samal ajal saab kuvada ka süsteemiväärtusi (terade koguarv, nimivõimsus, seadistatud voolukiirus). Teistel liidestel võib olla ka näiteks tööseisundi logi (sisu saab tellida numbri, esinemise kellaaega, sündmuse üksikasju, märkmeid), rikkehäire (sisu saab tellida numbri, esinemisaja, häire üksikasjad, häirekoodi jne), kahel liidesel võib olla tagastusnupp, saab naasta pumbajaama funktsionaalse liidese juurde.  

Töö idee:  

Jadapordi ekraan toimib inimese ja masina liidesena ja suhtleb Arduino arendusplaadiga. Plaat aktsepteerib puuteekraani nupukäsklusi ja edastab andmed jadapordi puuteekraanile sünkroonseks kuvamiseks. Liugur on mõeldud võimsuse muutuste dünaamiliseks kuvamiseks. Toitelüliti, toitenoa, režiimilüliti ja režiiminuga ikoonid on loodud ICON-failide genereerimiseks ning toiteallika ja režiimi toimete animeerimiseks. Lisaks kasutatakse Arduino demoprogrammis muutuvmälu juhiste lugemiseks toiteallika ja režiimi oleku saamiseks, et juhtida väljundandmete simulatsiooni ja väljastada tegeliku koguse aken jadapordi ekraanile.  

Tööetapid:  

  1. Riistvara seadistamine;  
  2. A) Ühendage Arduino arendusplaat ja USB jadapordi teisendusplaadiga;  
  3. B) Ühendage STONE puutetundlik ekraan USB-jadapordi allalaadimisplaadi ja USB-jadapordi adapterplaadiga;  
  4. C) Ühendage jadapordi ekraan ja Arduino arendusplaadi toiteallikas;  

3, läbi jadakäskude silumise ja seejärel programmeerimise, et saavutada pumbajaama juhtimis- ja hüdroelektrijaama juhtimise esitlusfunktsioonid.  

 Järgmisena dokumenteerige konkreetne arendusprotsess.

Esiteks seadistage riistvaraühendus.  

Tehke kõigi osade ühendamisel head tööd vastavalt tööprotseduuridele:

Järgmisena tehke ICON indikaatori pilt.  

Selles projektis kasutatavad nupud ja noa Ikoonid on valmistatud järgmiselt:  

(Pumbajaama juhtlüliti, noa animatsioon ICON-fail 8. ICO loendi sirvimisskeem)

Klõpsake STONE TOOL BOX'i (GUI Design tarkvara) menüüribal Tool (T) menüüs Icon Generation Tool, et avada dialoogiboks Icon Tool. Ikooni kujutise tee valimiseks klõpsake dialoogiboksi allosas nuppu "vali pildi tee". Klõpsake nuppu „Generate ICON-fail”, et pakkida BMP-failid teele, mille abil luua STONE TOOL BOX (GUI Design tarkvara) platvormi poolt tuvastatud fail „.ico”. Imporditud ICON-loendi kuvamiseks klõpsake nuppu "Eelvaade".ico "tihendatud fail.  

Nupp BMP ikooni animeerimiseks, piksel nagu ülal (Produced Variable Icon Control, sama positsiooni suurus peaks olema sama), pumbajaama juhtimine 8 lõigatud pilti samasse kausta. Seejärel valige STONE TOOL BOX (GUI Design tarkvara) ekraani vasakus servas ikoonilehe kaart ja lisage see tihendatud 7. Ico-faili, kasutades nuppu "Lisa ikoon" jaotises "Ikoonide loend". Pane kõik 6 hüdroelektrijaama juhtlüliti oleku pilti teise kausta ja järjesta need järjestusse 1-6. Looge "6. Ico” faili ja seejärel faili vasakul küljel STONE TOOL BOX (GUI disaini tarkvara) ekraanil valige ikoonilehe kaart ja lisage tihendatud "6. Ico" faili, kasutades "Ikoonide loendis" nuppu "Lisa ikoon".  

Nüüd importige pildi ikoon STONE TOOL BOX'i (GUI Design tarkvara) ja tehke funktsiooninupp.  

Animatsioonifunktsiooni realiseerimiseks kasutatakse selles projektis endiselt meetodit 9-variable-animation icon.wmv. Parameetri seadistuse ekraanipilt on järgmine:  

            (Hüdroelektrijaama muutuja ICON atribuutide diagramm)

Vasakult paremale on parameeter ICON Hüdroelektrijaama funktsioonide lehe kolme muutuja sätted: start, stop ja state. Nende mäluaadressid on seatud samaks (0x0039) ja andmevahemikud on samad, seega sünkroonitakse nende muudatused. Ikoonifailid on 6. Ico ja vastavad ikooni seerianumbrid on vastavalt 1 ja 2, 3 ja 4, 6 ja 5, mis valitakse vastavalt tegelikule olekule.  

Nupu oleku animatsiooniefekt saavutatakse järkjärguliste nuppude abil. Järgmisel joonisel on näidatud vasakpoolse suurendamisnupu ja paremal asuva määramisnupu parameetrid. Aadress on 0x0039, mis mõlemad on samad, mis muutujal ICON.

(Sama mäluaadressiga inkrementaalse nupu atribuutide diagramm)

(Pumbajaama nupunoa oleku muutuva ICON atribuudi diagramm)

Vasakult paremale on parameeter ICON Pumbajaama funktsioonide lehe nelja muutuja sätted: toitenupp, toitenuga, režiiminuga ja režiiminupp. Siin on mõlemad ikoonifailid 8.ICO ja nende andmevahemik on sama, milles muudetakse sünkroonselt samade mäluaadressi.  

Nuppude oleku animatsioone rakendatakse ka astmeliste nuppudega. Järgmisel joonisel on toiteallika vähendamise nupu vasak pool ja režiimi suurendamise nupu parem pool toiteallika vähendamise nupu parameetrid. Aadressid on samad, mis ülaltoodud muutuja ICON, vastavalt 0x0009 ja 0x000A. See on rohkem kui pingpongi nupu töötlemisrežiim.

(Pumbajaama nupu oleku astmeline nupu atribuudi diagramm Muutuja ICON Sama mäluaadressiga muutuja)

Lisaks kuvatakse pumbajaama väljundvõimsus libiseva ikooni abil, nagu on näidatud alloleval joonisel:

Selle parameetri atribuudid on järgmised:

(Pumbajaama väljundvõimsuse libisev ikoon – liuguri skaala omaduste kast)

Selle liuguri skaala juhtelemendi ikooni nimetatakse ametlikus DEMO 24.ico. Faili 24.ico lisamise meetod on sama, mis ülal. Selle Slider Scale juhtelemendi mäluaadress on 0x0180, mille saab MCU programmis kirjutada 82 käsuga (nagu ülaltoodud pildil on vahemik seatud 0-100), et muuta ikooni asukohta.  

Eelkõige loetakse selle projekti toiteallika ja režiimi nuppude olek välja jadapordi ekraani mäluaadressilt 0x0009, 0x000A ja 0x0039 83 juhise kaudu. 

Kasutatavad juhised on järgmised:  

A5 5A 04 83 00 09 02  

Jadapordi ekraani tagasiside on järgmine:  

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

Järgmised 00 01 on 2x0 0009baidised andmed, 00 02 on 2x0A 000baidised andmed.  

Lugege juhiseid 0x0039 järgmiselt:  

A5 5A 04 83 00 39 01  

Jadapordi ekraani tagasiside on:  

A5 5A 06 83 00 39 01 00 01 või  

A5 5A 06 83 00 39 01 00 02  

Kirjutamiseks on viis andmeaadressi: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Seejuures on lehe doseerimisaadress 0x0020, 2-bitine täisarv 2 baiti. Seda saab puutetundlikule ekraanile edastada jadapordi kaudu.  

11 edastamiseks puuteekraani andmemuutuja kuvale, kasutage järgmist käsku:  

A5 5A 05 82 00 20 00 0B  

Programmeerimise silumine.  

Kood on järgmine:  

/*

  frank8

  STONE ja arduino COMM, enlaiji yepian süsteem.

  Lülitab LED-i ühe sekundi jooksul sisse ja seejärel korduvalt ühe sekundi vältel välja.

  Aadress 0x0020 on YePian numbri aadress;

  Aadress 0x0160 on praegu LiuLiangi aadress;

  Aadress 0x0180 on Bengzhan Outpoweri aadress;

  Aadress 0x0260 on Jiejujiao aadress;

  Aadress 0x0280 on vee väljavoolu aadress;

  Aadress 0x0009 on bengzhani toitenupp;

  Aadress 0x000A on bengzhani režiimi võti;

  Aadress 0x0039 on vee toiteklahv.

  See näidiskood on frangi failis. 20210611

 */

// Pin 13-l on enamikul Arduino plaatidel ühendatud LED.

// anna sellele nimi:

int led = 13;

int iYePian = 0; //0x0020 – The num of YePian!

int iGongLu = 0; //0x0180 GongLu jaoks!

int iLiuLiang = 0; //0x0160 jaoks The now LiuLiang!

int iJiao = 0; // 0x0260 The JieJuJiao!

int iGongLuWater = 0; //0x0280 The Water GongLu jaoks! väärtus on 0-50000!

int iLed = 1; //viivitusaeg num.

int iNum = 0; //loe sisse char num.

int iNum2 = 0; //loe ShuiDianZhani jaoks char num2!

int iPower = 2; //võtmekuju 0x0009

int iMode = 2; //võtmekuju 0x000A

int iPowerWater = 2; //võtmekuju 0x0039

// häälestusrežiim töötab üks kord, kui vajutate lähtestamist:

void setup () {                

  // lähtestage digitaalne tihvt väljundina.

  pinMode(led, OUTPUT);     

  Serial.begin(115200); // Avage jadaühenduse funktsioon ja oodake, kuni jadaport avaneb  

while (!Serial) {

    ; // oodake jadaporti ühendamist. Vajalik ainult Leonardo jaoks

  }  

}

// tsükli rutiin jookseb ikka ja jälle igavesti:

void loop () {

  int inChar;

    if (iLed == 900) {     

//——- loe 0x0009 ja 0x000A väärtus———- 

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x04); //pikkus

            Serial.write(0x83); // loe!

            Serial.write(0x00); // bengzhani toitenupu aadress!

            Serial.write(0x09); // bengzhani toitenupu aadress!

            Serial.write(0x02); // 0x0009 (võimsus) ja 0x000A (režiim)

//———STONE tagastusväärtus on "A5 5A 08 83 00 09 02 00 01 00 02"——

     }

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

    if (iLed == 800) {     

//——- loe 0x0039 väärtus———- 

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x04); //pikkus

            Serial.write(0x83); // loe!

            Serial.write(0x00); // ShuiDianZhan Toiteklahvi aadress!

            Serial.write(0x39); // ShuiDianZhani toitenupu aadress!

            Serial.write(0x01); // 0x0039 (toiteklahv) 

//———STONE tagastusväärtus on "A5 5A 06 83 00 39 01 00 01"——

     }

  // Lugege jadapordi saadetud sõnumit:

  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 ; }

  if ((inChar == 0x01)&&(iNum == 3)) {  

      iNum = 4;

      if(iPower != 1){

          iPower = 1; //toide ON!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

   if ((inChar == 0x02)&&(iNum == 3)) {  

      iNum = 4;

      iPower = 2; //toide VÄLJAS!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

   if ((inChar == 0x01)&&(iNum == 5)) {  

      iNum = 0;

      iMode = 1; //Režiim on hea!

   }

   if ((inChar == 0x02)&&(iNum == 5)) {  

      iNum = 0;

      iMode = 2; //Režiim on VÄLJAS!

      if(iPower == 1)iGongLu = 60 ; //GongLu on seatud 60%!

   }

  //——————0x0009 ja 0x000A klahv loe ok! iPower\iMode on korras!—————————--

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

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

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

  if ((inChar == 0x01)&&(iNum2 == 3)) {  

      iNum2 = 0;

      if(iPowerWater != 1){

          iPowerWater = 1; //toide ON!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

   if ((inChar == 0x02)&&(iNum2 == 3)) {  

      iNum2 = 0;

      iPowerWater = 2; //toide VÄLJAS!

   }

  //——————klahv 0x0039 loe ok! iPowerWater ok!—————————--

  viivitus (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite(led, HIGH); // lülitage LED sisse (HIGH on pingetase)

                  //delay(500); // oodake sekund, Vahemik: 200-2000

           if(iPower == 1) { 

               iYePian += 1; //vahemik:1-20

               iLiuLiang += 1; //vahemik:1-20

               if(iMode == 1) iGongLu += 5; //vahemik:1-20

           }   

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

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

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

           if(iPowerWater == 2) { 

               iJiao += 1; //vahemik:1-20

               iGongLuWater += 2; //vahemik:1-20

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, LOW); // lülitage LED välja, muutes pinge LOW

                  //delay(500); // oodake sekund, vahemik:200-2000

      iLed = 1;

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // YePiani aadress

            Serial.write(0x20); // YePiani aadress

            Serial.write(0x00);

            Serial.write(iYePian);

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // GongLu aadress

            Serial.write(0x80); // GongLu aadress

            Serial.write(0x00);

            Serial.write(iGongLu);

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // LiuLiangi aadress

            Serial.write(0x60); // LiuLiangi aadress

            Serial.write(iLiuLiang); //LiuLiang on 2800–3200

            Serial.write(0x80);            

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // ShuiDianZhan JieJuJiao aadress

            Serial.write(0x60); // ShuiDianZhan JieJuJiao aadress

            Serial.write(0x00);

            Serial.write(iJiao);

            Serial.write(0xA5); //"A5" on 165

            Serial.write(0x5A); //"5A" on 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // ShuiDianZhan out Poweri aadress

            Serial.write(0x80); // aadress ShuiDianZhan out Power;

            Serial.write(iGongLuWater); //ShuiDianZhan out Powe on 0–32000

            Serial.write(0x00);            

  }    

Lõpuks salvestage video veebis. 

Ühendage toiteallikas ja side, ühendage Arduino arendusplaat jadapordiga, jälgige jadapordi ekraanil hüdroelektrijaama ja pumbajaama funktsionaalset liidest, puudutage efekti kontrollimiseks lülitit ning libistage ikooni ja andmed on normaalsed. .  

Allikas: Platon Data Intelligence