IOT

Controllo pompa Arduino + display HMI STONE

Il sistema di regolazione intelligente della lama è una tecnologia brevettata, utilizzata nel sistema di controllo principale di varie centrali idroelettriche e stazioni di pompaggio di grandi, medie e piccole dimensioni. Questo progetto utilizza l'affidabile touch screen industriale seriale come interfaccia uomo-macchina per visualizzare i parametri giornalieri e il dosaggio della lama in tempo reale, la potenza di uscita, il flusso istantaneo e altre informazioni, come visualizzazione dell'effetto operativo. Inoltre, sono pianificati anche il registro delle condizioni di lavoro e il modulo di allarme guasto e il pulsante di standby è riservato. Il progetto utilizza il touch screen seriale per la visualizzazione dei dati e la visualizzazione dell'indicazione delle diapositive. Gli accessori sono i seguenti:  

  1. SVI056WT-01 touch screen seriale e scheda adattatore STONE V1.2;  
  2. Scheda di controllo Arduino abbinata;  

Breve descrizione della funzione di interfaccia del sistema di controllo della regolazione della lama intelligente.  

Nella home page sono presenti tre pulsanti, che possono essere premuti per accedere al sistema della centrale idroelettrica corrispondente, al sistema di controllo della stazione di pompaggio e all'interfaccia della guida per l'utente (con pulsanti di riserva). L'interfaccia della guida per l'utente mostra la struttura del sistema demo, come mostrato nella figura seguente:

(Interfaccia home del software dimostrativo di controllo della regolazione intelligente Enlegi Blade)

All'interfaccia del sistema di controllo della centrale idroelettrica, sono presenti pulsanti di avvio e arresto e visualizzazione di stato, valutazione (inclusa tensione nominale, potenza nominale e velocità nominale) e valore di controllo (incluso angolo di inclinazione della pala dell'elica e potenza di uscita). Inoltre, possono essere presenti anche altri pulsanti di salto di pagina (come home page, registro delle condizioni di lavoro, allarme di guasto e altri pulsanti di standby). Nella pagina del registro delle condizioni di lavoro e degli allarmi di guasto, può essere presente un pulsante indietro per tornare a questa pagina. Il diagramma qui sotto:

           (Interfaccia display di controllo intelligente della centrale idroelettrica)

Descrizione della funzione dell'interfaccia del sistema di controllo della stazione di pompaggio. Il diagramma qui sotto:

                            (Interfaccia funzionale del sistema di controllo della stazione di pompaggio)

Nell'interfaccia funzionale della stazione di pompaggio, la modalità può essere modificata e l'alimentazione dell'intero sistema può essere attivata e disattivata per visualizzare i parametri simulati effettivi (come dosaggio lama, portata immediata, potenza di uscita) e altri le interfacce possono essere commutate (come il registro delle condizioni di lavoro, il report degli allarmi di guasto). Contemporaneamente possono essere visualizzati anche i valori dell'impianto (numero totale pale, potenza nominale, portata impostata). Possono anche avere altre interfacce, come il registro delle condizioni di lavoro (contenuto ordinabile numero, ora dell'evento, dettagli dell'evento, note), allarme guasto (contenuto ordinabile numero, ora dell'evento, dettagli dell'allarme, codice dell'allarme, ecc.), due interfacce possono avere un pulsante di ritorno, possono tornare all'interfaccia funzionale della stazione di pompaggio.  

Idea di lavoro:  

Lo schermo della porta seriale funge da interfaccia uomo-macchina e comunica con la scheda di sviluppo Arduino. La scheda accetta i comandi dei pulsanti del touch screen e trasmette i dati al touch screen della porta seriale per la visualizzazione sincrona. La scala del dispositivo di scorrimento è progettata per visualizzare dinamicamente le variazioni di potenza. Le icone di interruttore di alimentazione, coltello di alimentazione, interruttore di modalità e coltello di modalità sono progettate per generare file ICON e animare gli effetti dell'azione dell'alimentazione e della modalità. Inoltre, nel programma demo Arduino, la memoria variabile viene utilizzata per leggere le istruzioni per ottenere lo stato dell'alimentazione e la modalità, in modo da controllare la simulazione dei dati di output e inviare la finestra della quantità effettiva allo schermo della porta seriale.  

Fasi di lavoro:  

  1. Configurazione dell'hardware;  
  2. A) Collegare la scheda di sviluppo Arduino e l'USB alla scheda di conversione della porta seriale;  
  3. B) Collegare il Schermo tattile STONE con la scheda di download della porta seriale USB e la scheda adattatore da USB a porta seriale;  
  4. C) Collegare lo schermo della porta seriale e l'alimentatore della scheda di sviluppo Arduino;  
  • Realizzate 3 interfacce di schermo della porta seriale, file di icone animate e Slider Scale e le importate nella piattaforma di sviluppo dello schermo STONE STONE TOOL BOX (software GUI Design);  

3, attraverso il debug del comando seriale e quindi la programmazione per ottenere il controllo della stazione di pompaggio e le funzioni di dimostrazione del controllo della stazione idroelettrica.  

 Successivamente, documenta il processo di sviluppo specifico.

Innanzitutto, imposta la connessione hardware.  

Eseguire un buon lavoro di collegamento di tutte le parti secondo le procedure di lavoro:

Quindi, crea l'immagine dell'indicatore ICON.  

I pulsanti e le ICONE a coltello utilizzati in questo progetto sono realizzati come segue:  

(Interruttore di controllo della stazione di pompaggio, file ICON di animazione del coltello 8. Diagramma di esplorazione dell'elenco ICO)

Nella barra dei menu di STONE TOOL BOX (software GUI Design), fare clic su Strumento di generazione icone nel menu Strumenti (T) per far apparire la finestra di dialogo Strumento icone. Fare clic su "Scegli percorso immagine" nella parte inferiore della finestra di dialogo per selezionare Percorso immagine icona. Fare clic sul pulsante "Genera file ICON" per comprimere i file BMP nel percorso per Generare il file ".ico" riconosciuto dalla piattaforma STONE TOOL BOX (software GUI Design). Fare clic sul pulsante "Anteprima" per visualizzare l'elenco ICONA nel file compresso ".ico" importato.  

Pulsante per animare l'icona BMP, pixel come sopra (controllo dell'icona variabile prodotta, la dimensione della stessa posizione dovrebbe essere la stessa), controllo della stazione di pompaggio 8 immagini tagliate nella stessa cartella. Quindi, sul lato sinistro della schermata STONE TOOL BOX (software GUI Design), selezionare la scheda Pagina icone e aggiungerla al file 7. Ico compresso utilizzando il pulsante "Aggiungi icona" sotto "Elenco icone". Metti tutte le 6 immagini dello stato dell'interruttore di controllo della centrale idroelettrica in un'altra cartella e disponile nell'ordine 1-6. Crea il "6. Ico", quindi sul lato sinistro del STONE TOOL BOX (software GUI Design) schermata, selezionare la scheda Pagina delle icone e aggiungere il file zippato “6. Ico" utilizzando il pulsante "Aggiungi icona" in "Elenco icone".  

Ora importa l'icona dell'immagine in STONE TOOL BOX (software GUI Design) e crea il pulsante funzione.  

Il metodo dell'animazione a 9 variabili icon.wmv è ancora adottato in questo progetto per realizzare la funzione di animazione. Lo screenshot dell'impostazione dei parametri è il seguente:  

            (Diagramma degli attributi dell'ICONA variabile della centrale idroelettrica)

Da sinistra a destra il parametro ICONA Impostazioni delle tre variabili della pagina funzione centrale idroelettrica: start, stop e state. I loro indirizzi di memoria sono impostati sullo stesso (0x0039) e i loro intervalli di dati sono gli stessi, quindi le loro modifiche sono sincronizzate. I file delle icone sono 6. Ico ei numeri di serie delle icone corrispondenti sono rispettivamente 1 e 2, 3 e 4, 6 e 5, che vengono selezionati in base allo stato effettivo.  

L'effetto di animazione dello stato del pulsante si ottiene tramite pulsanti incrementali. La figura seguente mostra i parametri del pulsante di incremento a sinistra e del pulsante di decriminazione a destra. L'indirizzo è 0x0039, entrambi uguali a quello dell'ICONA variabile.

(Schema degli attributi del pulsante incrementale con lo stesso indirizzo di memoria)

(Diagramma dell'attributo ICONA variabile dello stato della lama del pulsante della stazione di pompaggio)

Da sinistra a destra ci sono i parametri ICON Impostazioni delle quattro variabili della pagina delle funzioni della stazione di pompaggio: pulsante di alimentazione, coltello di alimentazione, coltello di modalità e pulsante di modalità. Qui, entrambi i file Icon sono 8.ICO e il loro intervallo di dati è lo stesso, in cui l'indirizzo di memoria dello stesso verrà modificato in modo sincrono.  

Le animazioni dello stato dei pulsanti sono implementate anche con pulsanti incrementali. Nella figura seguente, il lato sinistro del pulsante di riduzione dell'alimentazione e il lato destro del pulsante di incremento della modalità sono i parametri del pulsante di riduzione dell'alimentazione. Gli indirizzi sono gli stessi della variabile ICON sopra, rispettivamente 0x0009 e 0x000A. Questo è più della modalità di elaborazione limite di un pulsante ping-pong.

(Diagramma incrementale degli attributi del pulsante dello stato del pulsante della stazione di pompaggio Variabile ICONA Variabile con lo stesso indirizzo di memoria)

Inoltre, la potenza di uscita della stazione di pompaggio viene visualizzata tramite un'icona scorrevole, come mostrato nella figura seguente:

I suoi attributi dei parametri sono:

(Icona scorrevole della potenza di uscita della stazione di pompaggio — riquadro delle proprietà della scala Slider)

L'icona di questo controllo scala Slider è chiamata nella DEMO ufficiale 24.ico. Il metodo per aggiungere il file 24.ico è lo stesso di sopra. L'indirizzo di memoria di questo controllo Slider Scale è 0x0180, che può essere scritto nel programma MCU con l'istruzione 82 (come mostrato nell'immagine sopra, l'intervallo è impostato su 0-100) per modificare la posizione dell'icona.  

In particolare, lo stato dell'alimentazione e dei pulsanti di modalità in questo progetto viene letto dall'indirizzo di memoria 0x0009, 0x000A e 0x0039 della schermata della porta seriale tramite l'istruzione 83. 

Le istruzioni utilizzate sono le seguenti:  

A5A5  

Il feedback della schermata della porta seriale è il seguente:  

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

I seguenti 00 01 sono dati a 2 byte di 0x0009, 00 02 sono dati a 2 byte di 0x000A.  

Leggi l'istruzione 0x0039 come:  

A5A5  

Il feedback della schermata della porta seriale è:  

A5 5A 06 83 00 39 01 00 01 o  

A5 5A 06 83 00 39 01 00 02  

Esistono cinque indirizzi di dati in cui scrivere: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

In cui, l'indirizzo di dosaggio foglia è 0x0020, un numero intero a 2 bit di 2 byte. Può essere trasmesso al display touch screen tramite la porta seriale.  

Per passare 11 alla visualizzazione della variabile dei dati del touchscreen, usa il seguente comando:  

A5 5A 05 82 00 20 00 0B  

Debug di programmazione.  

Il codice è il seguente:  

/*

  frank8

  STONE e arduino COMM, sistema enlaiji yepian.

  Accende un LED per un secondo, quindi si spegne ripetutamente per un secondo.

  L'indirizzo 0x0020 è l'indirizzo del num di YePian;

  L'indirizzo 0x0160 è l'indirizzo di ora LiuLiang;

  L'indirizzo 0x0180 è l'indirizzo di Bengzhan outpower;

  L'indirizzo 0x0260 è l'indirizzo di Jiejujiao;

  L'indirizzo 0x0280 è l'indirizzo della presa d'acqua;

  L'indirizzo 0x0009 è il tasto di accensione del bengzhan;

  L'indirizzo 0x000A è la chiave della modalità bengzhan;

  L'indirizzo 0x0039 è la chiave di alimentazione dell'acqua.

  Questo codice di esempio si trova nel file di frank. 20210611

 */

// Il pin 13 ha un LED collegato sulla maggior parte delle schede Arduino.

// Dagli un nome:

led int = 13;

int iYePian = 0; //0x0020 per Il numero di YePian!

int iGongLu = 0; //0x0180 per il GongLu!

int iLiuLiang = 0; /0x0160 per l'ora LiuLiang!

int iJiao = 0; // 0x0260 per il JieJuJiao!

int iGongLuWater = 0; //0x0280 per Il GongLu dell'Acqua! il valore è 0-50000!

int iLed = 1; //ritardo num.

int iNum = 0 ; //legge il numero di caratteri.

int iNum2 = 0; //leggi in char num2 per ShuiDianZhan!

int iPower = 2; //statua chiave 0x0009

int iMode = 2; //statua chiave 0x000A

int iPowerWater = 2; //statua chiave 0x0039

// la routine di installazione viene eseguita una volta quando si preme reset:

void setup () {                

  // inizializza il pin digitale come uscita.

  pinMode(led, USCITA);     

  Serial.begin(115200); // Apri la funzione di comunicazione seriale e attendi che la porta seriale si apra  

mentre (!Serial) {

    ; // attendi che la porta seriale si connetta. Necessario solo per Leonardo

  }  

}

// la routine del ciclo viene eseguita più e più volte per sempre:

void loop () {

  int inChar;

    if (iLed == 900) {     

//——- legge 0x0009 e 0x000A valore———- 

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

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

            Serial.write(0x04); //lunghezza

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

            Serial.write(0x00); // indirizzo del tasto di accensione del bengzhan!

            Serial.write(0x09); // indirizzo del tasto di accensione del bengzhan!

            Serial.write(0x02); // 0x0009 (potenza) e 0x000A (modalità)

//———Il valore di ritorno STONE sarà “A5 5A 08 83 00 09 02 00 01 00 02”——

     }

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

    if (iLed == 800) {     

//——- legge il valore 0x0039———- 

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

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

            Serial.write(0x04); //lunghezza

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

            Serial.write(0x00); // indirizzo del tasto di accensione ShuiDianZhan!

            Serial.write(0x39); // indirizzo del tasto di accensione ShuiDianZhan!

            Serial.write(0x01); // 0x0039 (tasto di accensione) 

//———Il valore di ritorno STONE sarà “A5 5A 06 83 00 39 01 00 01 “——

     }

  // Legge il messaggio inviato dalla porta seriale:

  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)) {  

      iNumero = 4 ;

      se(iPower != 1){

          iPower = 1; //accensione!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iNumero = 4 ;

      iPower = 2 ; //spegni!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iNumero = 0 ;

      iMode = 1 ; //La modalità è buona!

   }

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

      iNumero = 0 ;

      iMode = 2 ; //La modalità è DISATTIVATA!

      if(iPower == 1)iGongLu = 60 ; //GongLu è impostato al 60%!

   }

  //——————Chiave 0x0009 e 0x000A letta ok! iPower\iMode ok!—————————-

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

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

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

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

      iNumero2 = 0 ;

      se(iPowerWater != 1){

          iPowerWater = 1 ; //accensione!       

          iJiao = 0;

          iGongLuAcqua = 0 ;

      }

   }

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

      iNumero2 = 0 ;

      iPowerWater = 2 ; //spegni!

   }

  //——————0x0039 chiave letta ok! iPowerWater ok!—————————-

  ritardo (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite(led, HIGH); // accendi il LED (HIGH è il livello di tensione)

                  //ritardo(500); // aspetta un secondo, intervallo: 200-2000

           if(iPower == 1) { 

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

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

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

           }   

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

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

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

           if(iPowerWater == 2) { 

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

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

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuAcqua = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, LOW); //spegnere il LED rendendo la tensione BASSA

                  //ritardo(500); // aspetta un secondo, range:200-2000

      iLed = 1;

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // indirizzo di YePian

            Serial.write(0x20); // indirizzo di 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); // indirizzo di GongLu

            Serial.write(0x80); // indirizzo di 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); // indirizzo di LiuLiang

            Serial.write(0x60); // indirizzo di 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); // indirizzo di ShuiDianZhan JieJuJiao

            Serial.write(0x60); // indirizzo di 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); // indirizzo di ShuiDianZhan out Power

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

            Serial.write(iGongLuWater); //ShuiDianZhan out Powe è 0-32000

            Serial.write(0x00);            

  }    

Infine, registra il video online. 

Collegare l'alimentazione e la comunicazione, collegare la scheda di sviluppo Arduino alla comunicazione della porta seriale, osservare l'interfaccia funzionale della stazione idroelettrica e della stazione di pompaggio sullo schermo della porta seriale, toccare l'interruttore per verificare l'effetto e far scorrere l'icona e i dati sono normali .  

Fonte: Plato Data Intelligence