IOT

Control pompa Arduino+ display STONE HMI

Sistemul de reglare inteligentă a lamei este o tehnologie patentată, care este utilizată în sistemul de control principal al diferitelor hidrocentrale mari, medii și mici și stații de pompare. Acest proiect folosește ecranul tactil industrial de încredere în serie ca interfață om-mașină pentru a afișa parametrii zilnici și dozajul lamei în timp real, puterea de ieșire, fluxul instantaneu și alte informații, ca afișare a efectului de funcționare. În plus, jurnalul de stare de lucru și formularul de alarmă de eroare sunt, de asemenea, planificate, iar butonul de așteptare este rezervat. Proiectul folosește ecranul tactil serial pentru afișarea datelor și afișarea indicației diapozitivelor. Accesoriile sunt urmatoarele:  

  1. STVI056WT-01 ecran tactil serial și placă adaptor STONE V1.2;  
  2. Placă de control Arduino potrivită;  

Scurtă descriere a funcției de interfață a sistemului de control inteligent de reglare a lamei.  

Există trei butoane pe pagina principală, care pot fi apăsate pentru a intra în sistemul hidroenergetic corespunzător, sistemul de control al stației de pompare și interfața ghidului utilizatorului (cu butoane de rezervă). Interfața ghidului utilizatorului arată cadrul sistemului demo, așa cum se arată în figura următoare:

(Interfața de acasă a software-ului demonstrativ de control al reglajului inteligent Enlegi Blade)

La interfața sistemului de control al centralei hidroelectrice, există butoane de pornire și oprire și afișarea stării, a valorii nominale (inclusiv tensiunea nominală, puterea nominală și viteza nominală) și valoarea de control (inclusiv unghiul de pas al paletei elicei și puterea de ieșire). În plus, pot exista și alte butoane de salt de pagină (cum ar fi pagina de pornire, jurnalul de condiții de funcționare, alarmă de eroare și alte butoane de așteptare). În jurnalul de stare de funcționare și pagina de alarmă de eroare, poate exista un buton înapoi pentru a reveni la această pagină. Diagrama de mai jos:

           (Interfața de afișare a controlului inteligent al centralei hidroelectrice)

Descrierea funcției interfeței sistemului de control al stației de pompare. Diagrama de mai jos:

                            (Interfața funcției a sistemului de control al stației de pompare)

În interfața funcțională a stației de pompare, modul poate fi schimbat și alimentarea cu energie a întregului sistem poate fi pornită și oprită pentru a afișa parametrii simulați reali (cum ar fi dozarea lamei, debitul imediat, puterea de ieșire) și alții interfețele pot fi comutate (cum ar fi jurnalul de condiții de funcționare, raportul de alarmă de eroare). În același timp, pot fi afișate și valorile sistemului (numărul total de lame, puterea nominală, debitul setat). Alte interfețe pot avea, de asemenea, cum ar fi jurnalul de condiții de funcționare (conținutul poate fi numărul comandat, ora apariției, detaliile evenimentului, note), alarmă de eroare (conținutul poate fi numărul comandat, ora apariției, detaliile alarmei, codul alarmei etc.), două interfețe pot avea un buton de întoarcere, pot reveni la interfața funcțională a stației de pompare.  

Idee de lucru:  

Ecranul portului serial servește ca interfață om-mașină și comunică cu placa de dezvoltare Arduino. Placa acceptă comenzile butoanelor de pe ecranul tactil și transmite date către ecranul tactil al portului serial pentru afișare sincronă. Scara glisor este proiectată pentru a afișa dinamic schimbările de putere. Pictogramele comutatorului de alimentare, cuțitul de alimentare, comutatorul de mod și cuțitul de mod sunt concepute pentru a genera fișiere ICON și pentru a anima efectele de acțiune ale sursei de alimentare și ale modului. În plus, în programul demo Arduino, memoria variabilă este utilizată pentru a citi instrucțiunile pentru a obține starea sursei de alimentare și a modului, astfel încât să controleze simularea datelor de ieșire și să scoată fereastra cantității reale pe ecranul portului serial.  

Etape de lucru:  

  1. Configurare hardware;  
  2. A) Conectați placa de dezvoltare Arduino și USB la placa de conversie a portului serial;  
  3. B) Conectați Ecran tactil STONE cu placa de descărcare a portului serial USB și placa adaptorului USB la portul serial;  
  4. C) Conectați ecranul portului serial și sursa de alimentare a plăcii de dezvoltare Arduino;  

3, prin depanarea comenzilor în serie și apoi programarea pentru a obține funcții demonstrative de control al stației de pompare și control al stației hidroelectrice.  

 Apoi, documentați procesul de dezvoltare specific.

Mai întâi, configurați conexiunea hardware.  

Faceți o treabă bună de a conecta toate piesele conform procedurilor de lucru:

Apoi, faceți imaginea indicatorului ICONA.  

Butoanele și ICONOS-urile de cuțit utilizate în acest proiect sunt realizate după cum urmează:  

(Comutatorul de control al stației de pompare, fișierul ICON animație cuțit 8. Diagrama de navigare a listei ICO)

În bara de meniu a STONE TOOL BOX (software de proiectare GUI), faceți clic pe Instrument de generare a pictogramelor din meniul Instrument (T) pentru a deschide caseta de dialog Instrument pentru pictograme. Faceți clic pe „alege calea imaginii” în partea de jos a casetei de dialog pentru a selecta calea imaginii pictogramei. Faceți clic pe butonul „Generați fișierul ICON” pentru a împacheta fișierele BMP în calea pentru a genera fișierul „.ico” recunoscut de platforma STONE TOOL BOX (software de design GUI). Faceți clic pe butonul „Previzualizare „pentru a vizualiza lista ICONA din fișierul importat”.ico „comprimat”.  

Buton pentru a anima pictograma BMP, pixel ca mai sus (controlul pictogramei variabile produse, dimensiunea aceleiași poziții ar trebui să fie aceeași), controlul stației de pompare 8 tăiați imaginile în același folder. Apoi, în partea stângă a ecranului STONE TOOL BOX (software GUI Design), selectați cardul de pagină Icon și adăugați-l la fișierul 7. Ico comprimat folosind butonul „Adăugați pictogramă” de sub „Lista de pictograme”. Pune toate cele 6 imagini cu starea comutatorului de control al hidrocentralei într-un alt folder și aranjează-le în ordinea 1-6. Creați „6. Ico”, apoi pe partea stângă a fișierului STONE TOOL BOX (software de proiectare GUI) ecran, selectați cardul de pagină Pictogramă și adăugați fișierul zip „6. Ico” folosind butonul „Adăugați pictogramă” de sub „Lista de pictograme”.  

Acum importați pictograma imagine în STONE TOOL BOX (software GUI Design) și faceți butonul de funcție.  

Metoda 9-variable-animation icon.wmv este încă adoptată în acest proiect pentru a realiza funcția de animație. Captura de ecran a setării parametrilor este următoarea:  

            (Diagrama de atribute a ICONA variabilei a hidrocentralei)

De la stânga la dreapta sunt parametrul ICONA Setări ale celor trei variabile ale paginii de funcție a hidrocentralei: pornire, oprire și stare. Adresele lor de memorie sunt setate la aceeași (0x0039) și intervalele lor de date sunt aceleași, astfel încât modificările lor sunt sincronizate. Fișierele pictograme sunt 6. Ico, iar numerele de serie ale pictogramei corespunzătoare sunt 1 și 2, 3 și 4, 6 și respectiv 5, care sunt selectate în funcție de starea actuală.  

Efectul de animație a stării butoanelor este obținut prin butoane incrementale. Figura următoare prezintă parametrii butonului de creștere din stânga și butonul de decriminare din dreapta. Adresa este 0x0039, ambele fiind aceleași cu cea din ICONA Variabilă.

(Diagrama de atribute a butonului incremental cu aceeași adresă de memorie)

(Diagrama atributelor ICONĂ variabilă a stării cuțitului de buton a stației de pompare)

De la stânga la dreapta sunt parametrul ICONA Setări ale celor patru variabile ale paginii de funcție a stației de pompare: butonul de pornire, cuțitul de alimentare, cuțitul de mod și butonul de mod. Aici, ambele fișiere Icon sunt 8.ICO, iar intervalul lor de date este același, în care adresa de memorie a acestora va fi schimbată sincron.  

Animațiile de stare ale butoanelor sunt implementate și cu butoane incrementale. În figura următoare, partea stângă a butonului de reducere a sursei de alimentare și partea dreaptă a butonului de creștere a modului sunt parametrii butonului de reducere a sursei de alimentare. Adresele sunt aceleași cu ICONA Variabila de mai sus, respectiv 0x0009 și 0x000A. Acesta este Mai mult decât modul de procesare limită al unui buton de ping-pong.

(Diagrama atributelor butonului incremental a stării butonului stației de pompare Variabilă ICONA Variabilă cu aceeași adresă de memorie)

În plus, puterea de ieșire a stației de pompare este afișată folosind o pictogramă glisantă, așa cum se arată în figura de mai jos:

Atributele parametrilor săi sunt:

(Pictogramă glisantă a puterii de ieșire a stației de pompare - caseta de proprietăți a scalei Slider)

Pictograma acestui control al scalei Slider este numită în DEMO oficial 24.ico. Metoda de adăugare a fișierului 24.ico este aceeași ca mai sus. Adresa de memorie a acestui control Slider Scale este 0x0180, care poate fi scrisă în programul MCU cu 82 de instrucțiuni (după cum se arată în imaginea de mai sus, intervalul este setat la 0-100) pentru a schimba poziția pictogramei.  

În special, starea sursei de alimentare și a butoanelor de mod din acest proiect este citită din adresa de memorie 0x0009, 0x000A și 0x0039 a ecranului portului serial prin instrucțiuni 83. 

Instrucțiunile folosite sunt următoarele:  

A5 5A 04 83 00 09 02  

Feedback-ul ecranului portului serial este următorul:  

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

Următoarele 00 01 sunt date de 2 octeți de 0x0009, 00 02 sunt date de 2 octeți de 0x000A.  

Citiți instrucțiunea 0x0039 ca:  

A5 5A 04 83 00 39 01  

Feedback-ul ecranului portului serial este:  

A5 5A 06 83 00 39 01 00 01 sau  

A5 5A 06 83 00 39 01 00 02  

Există cinci adrese de date la care să scrieți: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

În care, adresa de dozare a frunzei este 0x0020, un număr întreg de 2 biți de 2 octeți. Poate fi transmis pe ecranul tactil prin portul serial.  

Pentru a trece 11 la afișarea variabilei de date de pe ecranul tactil, utilizați următoarea comandă:  

A5 5A 05 82 00 20 00 0B  

Depanare programare.  

Codul este următorul:  

/*

  frank8

  STONE și arduino COMM, sistem enlaiji yepian.

  Aprinde LED-ul pentru o secundă, apoi se stinge pentru o secundă, în mod repetat.

  Adresa 0x0020 este adresa num de YePian;

  Adresa 0x0160 este adresa de acum LiuLiang;

  Adresa 0x0180 este adresa outpowerului Bengzhan;

  Adresa 0x0260 este adresa lui Jiejujiao;

  Adresa 0x0280 este adresa de alimentare cu apă;

  Adresa 0x0009 este cheia de pornire bengzhan;

  Adresa 0x000A este cheia modului bengzhan;

  Adresa 0x0039 este cheia de alimentare cu apă.

  Acest exemplu de cod este în fișierul lui Frank. 20210611

 */

// Pinul 13 are un LED conectat pe majoritatea plăcilor Arduino.

// dă-i un nume:

int led = 13;

int iYePian = 0; //0x0020 pentru numărul lui YePian!

int iGongLu = 0; //0x0180 pentru The GongLu!

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

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

int iGongLuWater = 0; //0x0280 pentru The Water GongLu! valoarea este 0-50000!

int iLed = 1; //timpul de întârziere num.

int iNum = 0 ; //citește în char num.

int iNum2 = 0; //citește în char num2 pentru ShuiDianZhan!

int iPower = 2; //statuie cheie 0x0009

int iMode = 2; //statuie cheie 0x000A

int iPowerWater = 2; //statuie cheie 0x0039

// rutina de instalare rulează o dată când apăsați reset:

void setup () {                

  // inițializați pinul digital ca ieșire.

  pinMode(led, OUTPUT);     

  Serial.begin(115200); // Deschideți funcția de comunicare serială și așteptați ca portul serial să se deschidă  

în timp ce (!Serial) {

    ; // așteptați conectarea portului serial. Este necesar doar pentru Leonardo

  }  

}

// rutina de buclă rulează iar și iar pentru totdeauna:

bucla nulă () {

  int inChar;

    dacă (iLed == 900) {     

//——- citește valoarea 0x0009 și 0x000A———- 

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

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

            Serial.write(0x04); //lungime

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

            Serial.write(0x00); // adresa cheii de pornire bengzhan!

            Serial.write(0x09); // adresa cheii de pornire bengzhan!

            Serial.write(0x02); // 0x0009(putere) și 0x000A(mod)

//———Valoarea de returnare STONE va fi „A5 5A 08 83 00 09 02 00 01 00 02”——

     }

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

    dacă (iLed == 800) {     

//——- citește valoarea 0x0039———- 

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

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

            Serial.write(0x04); //lungime

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

            Serial.write(0x00); // adresa cheii de pornire ShuiDianZhan!

            Serial.write(0x39); // adresa cheii de pornire ShuiDianZhan!

            Serial.write(0x01); // 0x0039(tasta de pornire) 

//———Valoarea de returnare STONE va fi „A5 5A 06 83 00 39 01 00 01 „——

     }

  // Citiți mesajul trimis de portul serial:

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

  dacă ((inChar == 0x01)&&(iNum == 3)) {  

      iNum = 4;

      if(iPower != 1){

          iPower = 1; //aprinde!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

   dacă ((inChar == 0x02)&&(iNum == 3)) {  

      iNum = 4;

      iPower = 2; //oprire!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

   dacă ((inChar == 0x01)&&(iNum == 5)) {  

      iNum = 0;

      iMode = 1; //Modul este bun!

   }

   dacă ((inChar == 0x02)&&(iNum == 5)) {  

      iNum = 0;

      iMode = 2 ; //Modul este OPRIT!

      if(iPower == 1)iGongLu = 60; //GongLu este setat la 60%!

   }

  //——————0x0009 și cheia 0x000A citite ok! iPower\iMode ok!—————————-

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

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

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

  dacă ((inChar == 0x01)&&(iNum2 == 3)) {  

      iNum2 = 0;

      if(iPowerWater != 1){

          iPowerWater = 1; //aprinde!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

   dacă ((inChar == 0x02)&&(iNum2 == 3)) {  

      iNum2 = 0;

      iPowerWater = 2; //oprire!

   }

  //—————— Tasta 0x0039 citită ok! iPowerWater ok!—————————-

  întârziere (1); 

  iLed += 1;   

  dacă (iLed == 500) {  

      digitalWrite(led, HIGH); // aprinde LED-ul (HIGH este nivelul de tensiune)

                  //întârziere(500); // așteptați o secundă, Interval: 200-2000

           if(iPower == 1) { 

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

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

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

           }   

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

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

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

           if(iPowerWater == 2) { 

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

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

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  dacă (iLed >= 1000) {    

      digitalWrite(led, LOW); // stinge LED-ul făcând tensiunea LOW

                  //întârziere(500); // așteptați o secundă, interval: 200-2000

      iLed = 1;

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // adresa lui YePian

            Serial.write(0x20); // adresa lui YePian

            Serial.write(0x00);

            Serial.write(iYePian);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // adresa lui GongLu

            Serial.write(0x80); // adresa lui GongLu

            Serial.write(0x00);

            Serial.write(iGongLu);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // adresa lui LiuLiang

            Serial.write(0x60); // adresa lui LiuLiang

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

            Serial.write(0x80);            

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // adresa lui ShuiDianZhan JieJuJiao

            Serial.write(0x60); // adresa lui ShuiDianZhan JieJuJiao

            Serial.write(0x00);

            Serial.write(iJiao);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

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

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

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

            Serial.write(0x00);            

  }    

În cele din urmă, înregistrați videoclipul online. 

Conectați sursa de alimentare și comunicare, conectați placa de dezvoltare Arduino la portul de comunicare serial, observați interfața funcțională a hidrocentralei și a stației de pompare pe ecranul portului serial, atingeți comutatorul pentru a verifica efectul și glisați pictograma și datele sunt normale .  

Sursa: Plato Data Intelligence