IOT

Nadzor črpalke Arduino + zaslon HMI STONE

Blade inteligentni regulacijski sistem je patentirana tehnologija, ki se uporablja v glavnem krmilnem sistemu različnih velikih, srednjih in malih hidroelektrarn in črpališč. Ta projekt uporablja zanesljiv serijski industrijski zaslon na dotik kot vmesnik človek-stroj za prikaz dnevnih parametrov in odmerjanja rezila v realnem času, izhodne moči, trenutnega pretoka in drugih informacij kot prikaz učinka delovanja. Poleg tega sta predvidena tudi dnevnik delovnih pogojev in obrazec za javljanje napak, rezerviran pa je tudi gumb za pripravljenost. Projekt uporablja serijski zaslon na dotik za prikaz podatkov in prikaz diapozitivov. Dodatki so naslednji:  

  1. STVI056WT-01 serijski zaslon na dotik in adapterska plošča STONE V1.2;  
  2. Ustrezna krmilna plošča Arduino;  

Kratek opis vmesniške funkcije inteligentnega krmilnega sistema za regulacijo nožev.  

Na začetni strani so trije gumbi, s pritiskom na katere vstopimo v pripadajoči sistem hidroelektrarne, krmilni sistem črpalne postaje in uporabniški vmesnik (z rezervnimi gumbi). Vmesnik uporabniškega priročnika prikazuje okvir predstavitvenega sistema, kot je prikazano na naslednji sliki:

(Domači vmesnik predstavitvene programske opreme Enlegi Blade Intelligent Adjustment Control)

Na vmesniku krmilnega sistema hidroelektrarne so gumbi za zagon in zaustavitev ter prikaz statusa, nazivne vrednosti (vključno z nazivno napetostjo, nazivno močjo in nazivno hitrostjo) in krmilne vrednosti (vključno s kotom nagiba lopatice propelerja in izhodno močjo). Poleg tega so lahko na voljo tudi drugi gumbi za skok na stran (kot so domača stran, dnevnik delovnih pogojev, alarm za napake in drugi gumbi za stanje pripravljenosti). Na strani z dnevnikom delovnih pogojev in alarmom za napake je lahko gumb za vrnitev na to stran. Spodnji diagram:

           (Inteligentni krmilni zaslonski vmesnik hidroelektrarne)

Opis funkcije vmesnika krmilnega sistema črpalne postaje. Spodnji diagram:

                            (Funkcijski vmesnik krmilnega sistema črpalne postaje)

V funkcionalnem vmesniku črpalne postaje je mogoče spremeniti način ter vklopiti in izklopiti napajanje celotnega sistema, da se prikažejo dejanski simulirani parametri (kot so doziranje rezila, trenutni pretok, izhodna moč) in drugi vmesnike je mogoče preklapljati (kot je dnevnik delovnih pogojev, poročilo o alarmu napake). Hkrati se lahko prikažejo tudi sistemske vrednosti (skupno število lopatic, nazivna moč, nastavljen pretok). Imajo lahko tudi druge vmesnike, na primer dnevnik delovnih pogojev (vsebina je lahko naročena številka, čas pojava, podrobnosti dogodka, opombe), alarm za napako (vsebina je lahko naročena številka, čas pojava, podrobnosti alarma, koda alarma itd.), dva vmesnika imata lahko gumb za vrnitev, lahko se vrneta na funkcionalni vmesnik črpalne postaje.  

Delovna ideja:  

Zaslon serijskih vrat služi kot vmesnik človek-stroj in komunicira z razvojno ploščo Arduino. Plošča sprejema ukaze gumbov zaslona na dotik in prenaša podatke na zaslon na dotik serijskih vrat za sinhroni prikaz. Drsna lestvica je zasnovana tako, da dinamično prikazuje spremembe moči. Ikone stikala za vklop, noža za vklop, stikala za način in noža za način so zasnovane za ustvarjanje datotek ICON in animiranje akcijskih učinkov napajanja in načina. Poleg tega se v predstavitvenem programu Arduino spremenljivi pomnilnik uporablja za branje navodil za pridobitev stanja napajanja in načina, tako da se nadzoruje simulacija izhodnih podatkov in izpiše okno dejanske količine na zaslon serijskih vrat.  

Delovni koraki:  

  1. Nastavitev strojne opreme;  
  2. A) Priključite razvojno ploščo Arduino in USB na ploščo za pretvorbo serijskih vrat;  
  3. B) Povežite STONE zaslon na dotik s ploščo za prenos serijskih vrat USB in adaptersko ploščo USB-zaporedna vrata;  
  4. C) Povežite zaslon serijskih vrat in napajanje razvojne plošče Arduino;  

3, z odpravljanjem napak serijskega ukaza in nato s programiranjem za dosego demonstracijskih funkcij nadzora črpalne postaje in nadzora hidroelektrarne.  

 Nato dokumentirajte poseben razvojni proces.

Najprej nastavite povezavo strojne opreme.  

Dobro povežite vse dele v skladu z delovnimi postopki:

Nato naredite sliko indikatorja ICON.  

Gumbi in IKONE nožev, uporabljeni v tem projektu, so izdelani na naslednji način:  

(Stikalo za krmiljenje črpalne postaje, datoteka ICON animacije noža 8. Diagram brskanja po seznamu ICO)

V menijski vrstici STONE TOOL BOX (programska oprema za oblikovanje GUI) kliknite Orodje za ustvarjanje ikon v meniju Orodje (T), da se odpre pogovorno okno Orodje za ikone. Kliknite »izberi pot slike« na dnu pogovornega okna, da izberete pot slike ikone. Kliknite gumb »Ustvari datoteko ICON«, da zapakirate datoteke BMP na pot do generiranja datoteke ».ico«, ki jo prepozna platforma STONE TOOL BOX (programska oprema GUI Design). Kliknite gumb "Predogled", da si ogledate seznam ICON v uvoženi ".ico" stisnjeni datoteki.  

Gumb za animiranje ikone BMP, slikovna pika kot zgoraj (nadzor proizvedene spremenljive ikone, velikost istega položaja mora biti enaka), nadzor črpalne postaje 8 izreži slike v isto mapo. Nato na levi strani zaslona STONE TOOL BOX (programska oprema GUI Design) izberite kartico strani z ikonami in jo dodajte v stisnjeno 7. datoteko Ico z uporabo gumba »Dodaj ikono« pod »Seznam ikon«. Vseh 6 slik stanja regulacijskega stikala hidroelektrarne dajte v drugo mapo in jih razporedite po vrsti 1-6. Ustvarite »6. Ico« in nato na levi strani datoteke STONE TOOL BOX (programska oprema GUI Design) izberite kartico strani z ikonami in dodajte stisnjeno datoteko »6. Ico« z uporabo gumba »Dodaj ikono« pod »Seznam ikon«.  

Zdaj uvozite slikovno ikono v STONE TOOL BOX (programska oprema GUI Design) in naredite funkcijski gumb.  

Metoda 9-variable-animation icon.wmv je še vedno uporabljena v tem projektu za realizacijo funkcije animacije. Posnetek zaslona nastavitve parametrov je naslednji:  

            (Atributni diagram spremenljive ICON hidroelektrarne)

Od leve proti desni so ICON parameter Nastavitve treh spremenljivk strani funkcij hidroelektrarne: start, stop in stanje. Njihovi pomnilniški naslovi so nastavljeni na enake (0x0039) in njihovi obsegi podatkov so enaki, zato so njihove spremembe sinhronizirane. Datoteke ikon so 6. Ico, ustrezne serijske številke ikon pa so 1 in 2, 3 in 4, 6 in 5, ki so izbrane glede na dejansko stanje.  

Učinek animacije stanja gumba je dosežen z inkrementalnimi gumbi. Naslednja slika prikazuje parametre gumba za povečanje na levi in ​​gumba za dekriminacijo na desni. Naslov je 0x0039, oba sta enaka naslovu spremenljivke ICON.

(Atributni diagram inkrementalnega gumba z enakim pomnilniškim naslovom)

(Diagram atributov spremenljive ICON statusa gumbnega noža črpalne postaje)

Od leve proti desni so nastavitve parametra ICON štirih spremenljivk strani funkcij črpalne postaje: gumb za vklop, nož za napajanje, nož za način in gumb za način. Tu sta obe datoteki Icon 8.ICO in njun obseg podatkov je enak, v katerem se bo pomnilniški naslov iste spremenil sinhrono.  

Animacije stanja gumbov so prav tako implementirane z inkrementalnimi gumbi. Na naslednji sliki sta leva stran gumba za zmanjšanje napajanja in desna stran gumba za povečanje načina parametra gumba za zmanjšanje napajanja. Naslova sta enaka zgornji ikoni spremenljivke, oziroma 0x0009 oziroma 0x000A. To je več kot način omejene obdelave gumba za namizni tenis.

(Diagram inkrementalnih atributov gumba stanja gumba črpalne postaje Spremenljivka IKONA Spremenljivka z enakim pomnilniškim naslovom)

Poleg tega je izhodna moč črpalne postaje prikazana z drsečo ikono, kot je prikazano na spodnji sliki:

Njegovi parametri parametrov so:

(Drsna ikona izhodne moči črpalne postaje — polje z lastnostmi drsne lestvice)

Ikona tega nadzora lestvice drsnika se imenuje v uradni DEMO 24.ico. Metoda dodajanja datoteke 24.ico je enaka kot zgoraj. Naslov pomnilnika tega nadzora Slider Scale je 0x0180, ki ga lahko zapišete v program MCU z navodili 82 (kot je prikazano na zgornji sliki, obseg je nastavljen na 0–100), da spremenite položaj ikone.  

Zlasti stanje gumbov za napajanje in način v tem projektu se prebere iz pomnilniškega naslova 0x0009, 0x000A in 0x0039 zaslona serijskih vrat prek ukaza 83. 

Uporabljena navodila so naslednja:  

A5 5A 04 83 00 09 02  

Povratne informacije zaslona serijskih vrat so naslednje:  

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

Naslednji 00 01 so 2-bajtni podatki 0x0009, 00 02 so 2-bajtni podatki 0x000A.  

Preberite navodilo 0x0039 kot:  

A5 5A 04 83 00 39 01  

Povratne informacije zaslona serijskih vrat so:  

A5 5A 06 83 00 39 01 00 01 oz  

A5 5A 06 83 00 39 01 00 02  

Obstaja pet podatkovnih naslovov za pisanje: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Pri tem je naslov doziranega lista 0x0020, 2-bitno celo število 2 bajtov. Lahko se prenese na zaslon na dotik prek serijskih vrat.  

Če želite prenesti 11 na zaslon s spremenljivimi podatki na zaslonu na dotik, uporabite naslednji ukaz:  

A5 5A 05 82 00 20 00 0B  

Odpravljanje napak pri programiranju.  

Koda je naslednja:  

/*

  frank8

  STONE in arduino COMM, enlaiji yepian sistem.

  Za eno sekundo prižge LED, nato za eno sekundo večkrat ugasne.

  Naslov 0x0020 je naslov številke YePian;

  Naslov 0x0160 je zdaj naslov LiuLiang;

  Naslov 0x0180 je naslov zunanje moči Bengzhan;

  Naslov 0x0260 je naslov Jiejujiao;

  Naslov 0x0280 je naslov vodne enote;

  Naslov 0x0009 je tipka za vklop bengzhan;

  Naslov 0x000A je ključ načina bengzhan;

  Naslov 0x0039 je vodni ključ.

  Ta primer kode je v datoteki frank. 20210611

 */

// Pin 13 ima LED priključeno na večino Arduino plošč.

// daj mu ime:

int led = 13;

int iYePian = 0; //0x0020 za število YePian!

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

int iLiuLiang = 0; //0x0160 za zdaj LiuLiang!

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

int iGongLuWater = 0; //0x0280 za The Water GongLu! vrednost je 0-50000!

int iLed = 1; //čas zakasnitve št.

int iNum = 0; //beri v char num.

int iNum2 = 0; //beri v char num2 za ShuiDianZhan!

int iPower = 2; //kip ključa 0x0009

int iMode = 2; //kip ključa 0x000A

int iPowerWater = 2; //kip ključa 0x0039

// nastavitvena rutina se enkrat zažene, ko pritisnete reset:

nična namestitev () {                

  // inicializiramo digitalni pin kot izhod.

  pinMode (LED, IZHOD);     

  Serial.begin(115200); // Odprite funkcijo serijske komunikacije in počakajte, da se odprejo serijska vrata  

medtem ko (!Serial) {

    ; // počakajte, da se serijska vrata povežejo. Potreben samo za Leonarda

  }  

}

// rutina zanke se vedno znova ponavlja:

void loop () {

  int inChar;

    če (iLed == 900) {     

//——- preberi vrednost 0x0009 in 0x000A———- 

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x04); //dolžina

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

            Serial.write(0x00); // naslov tipke za napajanje bengzhan!

            Serial.write(0x09); // naslov tipke za napajanje bengzhan!

            Serial.write(0x02); // 0x0009(moč) in 0x000A(način)

//———vrnjena vrednost STONE bo »A5 5A 08 83 00 09 02 00 01 00 02«——

     }

/*———————————————————————————*/     

    če (iLed == 800) {     

//——- preberi vrednost 0x0039———- 

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x04); //dolžina

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

            Serial.write(0x00); // naslov tipke ShuiDianZhan Power!

            Serial.write(0x39); // naslov ključa za vklop ShuiDianZhan!

            Serial.write(0x01); // 0x0039 (tipka za vklop) 

//———Vrnjena vrednost STONE bo "A5 5A 06 83 00 39 01 00 01 "——

     }

  // Preberi sporočilo, ki ga pošiljajo serijska vrata:

  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; //vklop!

          iLiuLiang = 10;

          iGongLu = 50 ;

          iYePian = 10;         

      }

   }

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

      iNum = 4;

      iPower = 2; //ugasniti!

      iLiuLiang = 0;

      iGongLu = 0 ;

      iYePian = 0;

   }

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

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

      iNum = 0;

      iMode = 1; //Način je dober!

   }

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

      iNum = 0;

      iMode = 2; //Način je IZKLOPLJEN!

      if(iPower == 1)iGongLu = 60 ; //GongLu je nastavljen na 60%!

   }

  //——————0x0009 in 0x000A ključ se bere v redu! iPower\iMode v redu!—————————-

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

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

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

  če ((inChar == 0x01)&&(iNum2 == 3)) {  

      iNum2 = 0;

      if(iPowerWater != 1){

          iPowerWater = 1; //vklop!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

   če ((inChar == 0x02)&&(iNum2 == 3)) {  

      iNum2 = 0;

      iPowerWater = 2; //ugasniti!

   }

  //——————0x0039 ključ preberi v redu! iPowerWater v redu!——————————-

  zakasnitev (1); 

  iLed += 1;   

  če (iLed == 500) {  

      digitalWrite(led, HIGH); // vklopite LED (VISOKA je raven napetosti)

                  //zakasnitev(500); // počakajte sekundo, Razpon: 200-2000

           if(iPower == 1) { 

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

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

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

           }   

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

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

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

           if(iPowerWater == 2) { 

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

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

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  če (iLed >= 1000) {    

      digitalWrite(led, LOW); // izklopite LED tako, da napetost nastavite na NIZKO

                  //zakasnitev(500); // počakajte sekundo, obseg: 200-2000

      iLed = 1;

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // naslov YePian

            Serial.write(0x20); // naslov YePian

            Serial.write(0x00);

            Serial.write(iYePian);

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x05);

            Serial.write(0x82);

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

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

            Serial.write(0x00);

            Serial.write(iGongLu);

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // naslov LiuLiang

            Serial.write(0x60); // naslov LiuLiang

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

            Serial.write(0x80);            

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x05);

            Serial.write(0x82);

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

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

            Serial.write(0x00);

            Serial.write(iJiao);

            Serial.write(0xA5); //”A5” je 165

            Serial.write(0x5A); //”5A” je 90

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // naslov ShuiDianZhan out Power

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

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

            Serial.write(0x00);            

  }    

Na koncu posnemite video na spletu. 

Povežite napajanje in komunikacijo, povežite razvojno ploščo Arduino s komunikacijo serijskih vrat, opazujte funkcionalni vmesnik hidroelektrarne in črpalne postaje na zaslonu serijskih vrat, dotaknite se stikala, da preverite učinek, in podrsajte ikono in podatki so normalni .  

Vir: Plato Data Intelligence