IOT

Arduino pump control+ STONE HMI display

Bladets intelligente reguleringssystem er en patentert teknologi som brukes i det vanlige kontrollsystemet til forskjellige store, mellomstore og små vannkraftstasjoner og pumpestasjoner. Dette prosjektet bruker den pålitelige serielle industrielle berøringsskjermen som menneske-maskin-grensesnitt for å vise daglige parametere og sanntids bladdosering, utgangseffekt, øyeblikkelig flyt og annen informasjon, som operasjonseffektvisning. I tillegg planlegges også arbeidstilstandslogg og feilalarmskjema, og standby-knappen er reservert. Prosjektet bruker den serielle berøringsskjermen for datavisning og lysbildevisning. Tilbehøret er som følger:  

  1. STVI056WT-01 seriell berøringsskjerm og STONE adapterkort V1.2;  
  2. Matchende Arduino-kontrollkort;  

Kort beskrivelse av grensesnittfunksjonen til intelligent bladreguleringskontrollsystem.  

Det er tre knapper på hjemmesiden, som kan trykkes inn for å gå inn i det tilsvarende vannkraftstasjonssystemet, pumpestasjonens kontrollsystem og brukerveiledningsgrensesnittet (med reserveknapper). Brukerveiledningsgrensesnittet viser rammeverket til demosystemet, som vist i følgende figur:

(Hjemmegrensesnittet til Enlegi Blade Intelligent Adjustment Control Demonstration Software)

Ved grensesnittet til kontrollsystemet til vannkraftstasjonen er det start- og stoppknapper og visning av status, klassifisering (inkludert merkespenning, merkeeffekt og merkehastighet) og kontrollverdi (inkludert stigningsvinkel på propellblad og utgangseffekt). I tillegg kan det også være andre sidehoppknapper (som startside, arbeidstilstandslogg, feilalarm og andre standby-knapper). I arbeidstilstandslogg og feilalarmside kan det være en tilbakeknapp for å gå tilbake til denne siden. Diagrammet nedenfor:

           (Intelligent kontrollskjermgrensesnitt for vannkraftverk)

Pumpestasjon kontrollsystem grensesnitt funksjon beskrivelse. Diagrammet nedenfor:

                            (Funksjonsgrensesnitt til pumpestasjonens kontrollsystem)

I det funksjonelle grensesnittet til pumpestasjonen kan modusen endres og strømforsyningen til hele systemet kan slås på og av for å vise de faktiske simulerte parametrene (som bladdosering, umiddelbar strømningshastighet, utgangseffekt) og annet grensesnitt kan byttes (som arbeidstilstandslogg, feilalarmrapport). Samtidig kan systemverdier (totalt antall blader, merkeeffekt, innstilt strømningshastighet) også vises. Andre grensesnitt kan også ha, for eksempel arbeidstilstandslogg (innhold kan bestilles nummer, forekomsttid, hendelsesdetaljer, notater), feilalarm (innhold kan bestilles nummer, forekomsttid, alarmdetaljer, alarmkode, etc.), to grensesnitt kan ha en returknapp, kan gå tilbake til pumpestasjonens funksjonelle grensesnitt.  

Arbeidsidee:  

Seriell portskjerm fungerer som menneske-maskin-grensesnitt og kommuniserer med Arduino-utviklingskortet. Brettet aksepterer knappekommandoer fra berøringsskjermen og overfører data til berøringsskjermen med seriell port for synkron visning. Skyveskalaen er designet for å vise kraftendringer dynamisk. Ikoner for strømbryter, strømkniv, modusbryter og moduskniv er designet for å generere ICON-filer og animere handlingseffektene av strømforsyning og modus. I tillegg, i Arduino-demoprogrammet, brukes variabelt minne til å lese instruksjoner for å få status for strømforsyning og modus, for å kontrollere simuleringen av utdata og sende ut det faktiske kvantumsvinduet til serieportskjermen.  

Arbeidstrinn:  

  1. Sette opp maskinvare;  
  2. A) Koble Arduino-utviklingskortet og USB til konverteringskortet for seriell port;  
  3. B) Koble til STONE berøringsskjerm med USB-serieport-nedlastingskortet og USB-til-serieport-adapterkortet;  
  4. C) Koble til serieportskjermen og strømforsyningen til Arduino utviklingskort;  

3, gjennom seriell kommando debugging, og deretter programmering for å oppnå pumpestasjonskontroll og vannkraftstasjonkontrolldemonstrasjonsfunksjoner.  

 Deretter dokumenterer du den spesifikke utviklingsprosessen.

Først setter du opp maskinvaretilkoblingen.  

Gjør en god jobb med å koble alle deler i henhold til arbeidsprosedyrene:

Deretter lager du ICON-indikatorbildet.  

Knappene og knivikonene som brukes i dette prosjektet er laget som følger:  

(Pumpestasjonskontrollbryter, knivanimasjon ICON-fil 8. ICO-liste bla diagram)

I menylinjen til STONE TOOL BOX (GUI Design-programvare), klikker du på Icon Generation Tool under Tool (T)-menyen for å få opp dialogboksen Icon Tool. Klikk "velg bildebane" nederst i dialogboksen for å velge Ikonbildebane. Klikk på knappen "Generer ICON-fil" for å pakke BMP-filene i banen for å generere ".ico"-filen som gjenkjennes av STONE TOOL BOX (GUI Design-programvare)-plattformen. Klikk på knappen" Forhåndsvisning "for å se ICON-listen i den importerte".ico "komprimerte filen.  

Knapp for å animere BMP-ikon, piksel som ovenfor (Produsert variabel ikonkontroll, størrelsen på samme posisjon skal være den samme), pumpestasjonskontroll 8 klippe bilder i samme mappe. Deretter, på venstre side av STONE TOOL BOX (GUI Design-programvare)-skjermen, velg ikonsidekortet og legg det til den komprimerte 7. Ico-filen ved å bruke "Add Icon"-knappen under "Icon List". Legg alle de 6 bildene av kontrollbryterens tilstand til vannkraftstasjonen i en annen mappe og ordne dem i rekkefølge 1-6. Lag "6. Ico"-filen, og deretter på venstre side av STEINVERKTØYKASSE (GUI Design-programvare) skjerm, velg ikonsidekortet og legg til den zippede "6. Ico"-filen ved å bruke "Add Icon"-knappen under "Icon List".  

Importer nå bildeikonet til STONE TOOL BOX (GUI Design-programvare) og lag funksjonsknappen.  

Metoden med 9-variable-animasjon icon.wmv er fortsatt tatt i bruk i dette prosjektet for å realisere animasjonsfunksjonen. Skjermbildet av parameterinnstillingen er som følger:  

            (Attributdiagram av variabelt ICON for vannkraftverk)

Fra venstre til høyre er ICON-parameteren Innstillinger for de tre variablene på funksjonssiden for vannkraftverk: start, stopp og tilstand. Minneadressene deres er satt til det samme (0x0039) og dataområdene deres er de samme, så endringene deres synkroniseres. Ikonfiler er 6. Ico, og de tilsvarende Icon-serienumrene er henholdsvis 1 og 2, 3 og 4, 6 og 5, som velges i henhold til den faktiske tilstanden.  

Knappetilstandsanimasjonseffekten oppnås gjennom inkrementelle knapper. Følgende figur viser parametrene for økningsknappen til venstre og dekrimineringsknappen til høyre. Adressen er 0x0039, som begge er de samme som til Variable ICON.

(Attributdiagram av inkrementell knapp med samme minneadresse)

(Variabelt ICON-attributtdiagram for knappknivstatus for pumpestasjonen)

Fra venstre til høyre er ICON-parameteren Innstillinger for de fire variablene på pumpestasjonens funksjonsside: strømknapp, strømkniv, moduskniv og modusknapp. Her er begge Icon-filene 8.ICO, og dataområdet deres er det samme, der minneadressen til den samme vil endres synkront.  

Knappetilstandsanimasjoner er også implementert med inkrementelle knapper. I den følgende figuren er venstre side av strømforsyningsreduksjonsknappen og høyre side av modusinkrementknappen parametrene for strømforsyningsreduksjonsknappen. Adressene er de samme som variabelikonet ovenfor, henholdsvis 0x0009 og 0x000A. Dette er mer enn grensebehandlingsmodusen til en ping-pong-knapp.

(Inkrementelt knappattributtdiagram for pumpestasjonsknappstatus Variabel ICON Variabel med samme minneadresse)

I tillegg vises utgangseffekten til pumpestasjonen ved hjelp av et skyveikon, som vist i figuren nedenfor:

Dens parameterattributter er:

(Glidende ikon for utgangseffekten til pumpestasjonen – egenskapsboks for skyveskala)

Ikonet til denne Slider-skalakontrollen kalles i den offisielle DEMO 24.ico. Metoden for å legge til 24.ico-fil er den samme som ovenfor. Minneadressen til denne Slider Scale-kontrollen er 0x0180, som kan skrives i MCU-programmet med 82-instruksjoner (som vist på bildet ovenfor, er området satt til 0-100) for å endre posisjonen til ikonet.  

Spesielt blir statusen til strømforsyningen og modusknappene i dette prosjektet lest ut fra minneadressen 0x0009, 0x000A og 0x0039 på serieportskjermen gjennom 83 instruksjoner. 

Instruksjonene som brukes er som følger:  

A5 5A 04 83 00 09 02  

Tilbakemeldingen til skjermen med seriell port er som følger:  

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

Følgende 00 01 er 2byte data på 0x0009, 00 02 er 2byte data på 0x000A.  

Les instruksjon 0x0039 som:  

A5 5A 04 83 00 39 01  

Tilbakemeldingen fra skjermen med seriell port er:  

A5 5A 06 83 00 39 01 00 01 eller  

A5 5A 06 83 00 39 01 00 02  

Det er fem dataadresser å skrive til: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Hvori er bladdoseringsadressen 0x0020, et 2-bits heltall på 2 byte. Den kan overføres til berøringsskjermen via den serielle porten.  

For å sende 11 til datavariabeldisplayet på berøringsskjermen, bruk følgende kommando:  

A5 5A 05 82 00 20 00 0B  

Programmering av feilsøking.  

Koden er som følger:  

/*

  frank8

  STONE og arduino COMM,enlaiji yepian system.

  Slår på en LED i ett sekund, og deretter av i ett sekund, gjentatte ganger.

  Adressen 0x0020 er adressen til nummeret til YePian;

  Adressen 0x0160 er adressen til nå LiuLiang;

  Adressen 0x0180 er adressen til Bengzhan outpower;

  Adressen 0x0260 er adressen til Jiejujiao;

  Adressen 0x0280 er adressen til utgående vann;

  Adressen 0x0009 er bengzhan power key;

  Adressen 0x000A er bengzhan modus nøkkel;

  Adressen 0x0039 er vannstrømnøkkelen.

  Denne eksempelkoden er i filen til frank. 20210611

 */

// Pin 13 har en LED koblet til de fleste Arduino-kort.

// gi det et navn:

int led = 13;

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

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

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

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

int iGongLuWater = 0; //0x0280 for The Water GongLu! verdien er 0-50000!

int iLed = 1; //forsinkelsestid num.

int iNum = 0 ; //les i char num.

int iNum2 = 0; //les i char num2 for ShuiDianZhan!

int iPower = 2; //nøkkelstatue 0x0009

int iMode = 2; //nøkkelstatue 0x000A

int iPowerWater = 2; //nøkkelstatue 0x0039

// installasjonsrutinen kjører en gang når du trykker på reset:

ugyldig oppsett () {                

  // initialisere den digitale pinnen som en utgang.

  pinMode(led, OUTPUT);     

  Serial.begin(115200); // Åpne funksjonen for seriell kommunikasjon og vent til den serielle porten åpnes  

while (!Serial) {

    ; // vent til seriell port kobles til. Kun nødvendig for Leonardo

  }  

}

// loop-rutinen går om og om igjen for alltid:

ugyldig sløyfe () {

  int inChar;

    if (iLed == 900) {     

//——- les 0x0009 og 0x000A verdi———- 

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

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

            Serial.write(0x04); //lengde

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

            Serial.write(0x00); // adresse til bengzhan strømnøkkel!

            Serial.write(0x09); // adresse til bengzhan strømnøkkel!

            Serial.write(0x02); // 0x0009(strøm) og 0x000A(modus)

//———STONE-returverdien vil være “A5 5A 08 83 00 09 02 00 01 00 02”——

     }

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

    if (iLed == 800) {     

//——- les 0x0039 verdi———- 

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

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

            Serial.write(0x04); //lengde

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

            Serial.write(0x00); // adressen til ShuiDianZhan Power-tasten!

            Serial.write(0x39); // adressen til ShuiDianZhan strømtasten!

            Serial.write(0x01); // 0x0039(av/på-tast) 

//———STONE returverdi vil være “A5 5A 06 83 00 39 01 00 01 “——

     }

  // Les meldingen sendt av serieporten:

  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 ; //strøm på!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iNum = 4;

      iPower = 2; //Slå AV!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iNum = 0;

      iMode = 1 ; //Modus er bra!

   }

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

      iNum = 0;

      iMode = 2 ; //Modus er AV!

      if(iPower == 1)iGongLu = 60 ; //GongLu er satt til 60%!

   }

  //——————0x0009 og 0x000A nøkkel lest 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)) {  

      iNum2 = 0 ;

      if(iPowerWater != 1){

          iPowerWater = 1 ; //strøm på!       

          iJiao = 0;

          iGongLuWater = 0 ;

      }

   }

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

      iNum2 = 0 ;

      iPowerWater = 2 ; //Slå AV!

   }

  //——————0x0039 nøkkel les ok! iPowerWater ok!——————————-

  forsinkelse (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite(led, HIGH); // slå på LED-en (HØY er spenningsnivået)

                  //forsinkelse(500); // vent litt, Range:200-2000

           if(iPower == 1) { 

               iYePian += 1; //område:1-20

               iLiuLiang += 1; //område:1-20

               if(iMode == 1) iGongLu += 5; //område:1-20

           }   

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

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

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

           if(iPowerWater == 2) { 

               iJiao += 1; //område:1-20

               iGongLuWater += 2; //område:1-20

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, LOW); // slå av LED ved å gjøre spenningen LAV

                  //forsinkelse(500); // vent litt, område:200-2000

      iLed = 1;

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // adresse til YePian

            Serial.write(0x20); // adresse til YePian

            Serial.write(0x00);

            Serial.write(iYePian);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // adresse til GongLu

            Serial.write(0x80); // adresse til GongLu

            Serial.write(0x00);

            Serial.write(iGongLu);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // adresse til LiuLiang

            Serial.write(0x60); // adresse til LiuLiang

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

            Serial.write(0x80);            

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // adresse til ShuiDianZhan JieJuJiao

            Serial.write(0x60); // adresse til ShuiDianZhan JieJuJiao

            Serial.write(0x00);

            Serial.write(iJiao);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

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

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

            Serial.write(iGongLuWater); //ShuiDianZhan ut Powe er 0–32000

            Serial.write(0x00);            

  }    

Til slutt, ta opp videoen på nettet. 

Koble til strømforsyningen og kommunikasjonen, koble Arduino-utviklingskortet til den serielle portkommunikasjonen, observer det funksjonelle grensesnittet til vannkraftstasjonen og pumpestasjonen på serieportskjermen, trykk på bryteren for å sjekke effekten, og skyv ikonet og dataene er normale .  

Kilde: Platon Data Intelligence