IOT

Arduino pump control+ STONE HMI display

Bladets intelligente reguleringssystem er en patenteret teknologi, som bruges i det almindelige kontrolsystem af forskellige store, mellemstore og små vandkraftværker og pumpestationer. Dette projekt bruger den pålidelige serielle industrielle berøringsskærm som menneske-maskine-grænsefladen til at vise daglige parametre og knivdosering i realtid, udgangseffekt, øjeblikkelig flow og anden information, som visning af operationseffekt. Derudover er arbejdstilstandslog og fejlalarmskema også planlagt, og standby-knappen er reserveret. Projektet bruger den serielle berøringsskærm til datavisning og diasvisning. Tilbehøret er som følger:  

  1. STVI056WT-01 seriel berøringsskærm og STONE adapterkort V1.2;  
  2. Matchende Arduino kontroltavle;  

Kort beskrivelse af interfacefunktionen af ​​intelligent bladreguleringskontrolsystem.  

Der er tre knapper på hjemmesiden, som kan trykkes på for at komme ind i det tilsvarende vandkraftværkssystem, pumpestationskontrolsystem og brugervejledningsgrænsefladen (med reserveknapper). Brugervejledningens grænseflade viser rammerne for demosystemet, som vist i følgende figur:

(Hjemmegrænseflade til Enlegi Blade Intelligent Adjustment Control Demonstration Software)

Ved grænsefladen til kontrolsystemet på vandkraftværket er der start- og stopknapper og visning af status, rating (inklusive nominel spænding, nominel effekt og nominel hastighed) og kontrolværdi (inklusive pitch Vinkel på propelblad og udgangseffekt). Derudover kan der også være andre sidespringsknapper (såsom startside, arbejdstilstandslog, fejlalarm og andre standbyknapper). I arbejdstilstandslog og fejlalarmside kan der være en tilbage-knap for at vende tilbage til denne side. Diagrammet nedenfor:

           (Intelligent kontroldisplaygrænseflade for vandkraftværk)

Beskrivelse af interfacefunktion til pumpestationskontrolsystem. Diagrammet nedenfor:

                            (Funktionsgrænseflade for pumpestationskontrolsystem)

I pumpestationens funktionelle grænseflade kan tilstanden ændres, og hele systemets strømforsyning kan tændes og slukkes for at vise de faktiske simulerede parametre (såsom knivdosering, øjeblikkelig flowhastighed, udgangseffekt) og andre grænseflader kan skiftes (såsom arbejdstilstandslog, fejlalarmrapport). Samtidig kan systemværdier (samlet antal vinger, nominel effekt, indstillet flow) også vises. Andre grænseflader kan også have, såsom arbejdstilstandslog (indhold kan bestilles nummer, forekomsttidspunkt, begivenhedsdetaljer, noter), fejlalarm (indhold kan bestilles nummer, forekomsttidspunkt, alarmdetaljer, alarmkode osv.), to grænseflader kan have en returknap, kan vende tilbage til pumpestationens funktionelle grænseflade.  

Arbejdsidé:  

Seriel portskærm fungerer som menneske-maskine-interface og kommunikerer med Arduino-udviklingskortet. Kortet accepterer knapkommandoer på berøringsskærmen og overfører data til seriel port berøringsskærm for synkron visning. Skyderskalaen er designet til at vise strømændringer dynamisk. Ikoner for strømafbryder, strømkniv, tilstandskontakt og tilstandskniv er designet til at generere ICON-filer og animere actioneffekterne af strømforsyning og tilstand. Derudover bruges variabel hukommelse i Arduino-demoprogrammet til at læse instruktioner for at opnå tilstanden for strømforsyning og tilstand, for at kontrollere simuleringen af ​​outputdata og udlæse det faktiske mængdevindue til den serielle portskærm.  

Arbejdstrin:  

  1. Opsætning af hardware;  
  2. A) Tilslut Arduino-udviklingskortet og USB til serielportkonverteringskortet;  
  3. B) Tilslut STONE touchskærm med USB-serielport-downloadkortet og USB-til-serielport-adapterkortet;  
  4. C) Tilslut den serielle portskærm og Arduino-udviklingskortets strømforsyning;  

3, gennem seriel kommando debugging, og derefter programmering for at opnå pumpestation kontrol og vandkraft station kontrol demonstrationsfunktioner.  

 Dernæst skal du dokumentere den specifikke udviklingsproces.

Konfigurer først hardwareforbindelsen.  

Gør et godt stykke arbejde med at forbinde alle dele i henhold til arbejdsprocedurerne:

Lav derefter ICON-indikatorbilledet.  

Knapperne og knivikonerne brugt i dette projekt er lavet som følger:  

(Pumpestation kontrolkontakt, kniv animation ICON fil 8. ICO liste gennemse diagram)

I menulinjen i STONE TOOL BOX (GUI Design software) skal du klikke på Icon Generation Tool under Tool (T) menuen for at pop op Icon Tool dialogboksen. Klik på "vælg billedsti" nederst i dialogboksen for at vælge Icon image path. Klik på knappen "Generer ICON-fil" for at pakke BMP-filerne i stien til Generer ".ico"-filen, der genkendes af STONE TOOL BOX (GUI Design software) platformen. Klik på knappen" Preview "for at se ICON-listen i den importerede".ico "komprimerede fil.  

Knap til at animere BMP-ikon, pixel som ovenfor (Produceret variabel ikonkontrol, størrelsen af ​​den samme position skal være den samme), pumpestationskontrol 8 klip billeder i samme mappe. Vælg derefter ikonsidekortet i venstre side af STONE TOOL BOX (GUI Design software)-skærmen og føj det til den komprimerede 7. Ico-fil ved at bruge knappen "Tilføj ikon" under "Ikonliste". Læg alle de 6 billeder af vandkraftværkets kontrolkontakttilstand i en anden mappe, og arranger dem i rækkefølge 1-6. Opret "6. Ico" fil, og derefter på venstre side af STENVÆRKTØJSKASSE (GUI Design software) skærm, vælg ikonsidekortet og tilføj den zippede "6. Ico"-fil ved at bruge knappen "Tilføj ikon" under "Ikonliste".  

Importer nu billedikonet til STONE TOOL BOX (GUI Design software) og lav funktionsknappen.  

Metoden med 9-variable-animation icon.wmv er stadig brugt i dette projekt for at realisere animationsfunktionen. Skærmbilledet af parameterindstilling er som følger:  

            (Attributdiagram af variabelt ICON for vandkraftværket)

Fra venstre mod højre er ICON-parameteren Indstillinger for de tre variabler på vandkraftværkets funktionsside: start, stop og tilstand. Deres hukommelsesadresser er indstillet til det samme (0x0039), og deres dataområder er de samme, så deres ændringer synkroniseres. Ikonfiler er 6. Ico, og de tilsvarende Icon-serienumre er henholdsvis 1 og 2, 3 og 4, 6 og 5, som vælges i henhold til den faktiske tilstand.  

Knaptilstandsanimationseffekten opnås gennem trinvise knapper. Følgende figur viser parametrene for stigningsknappen til venstre og dekrimineringsknappen til højre. Adressen er 0x0039, som begge er de samme som for Variable ICON.

(Attributdiagram af inkrementel knap med samme hukommelsesadresse)

(Variabelt ICON attributdiagram over knapknivs status for pumpestationen)

Fra venstre mod højre er ICON-parameteren Indstillinger for de fire variabler på pumpestationens funktionsside: power-knap, powerkniv, modekniv og mode-knap. Her er begge Icon-filer 8.ICO, og deres dataområde er det samme, hvori hukommelsesadressen på samme vil blive ændret synkront.  

Knaptilstandsanimationer er også implementeret med trinvise knapper. I den følgende figur er venstre side af strømforsyningsreduktionsknappen og højre side af tilstandsinkrementknappen parametrene for strømforsyningsreduktionsknappen. Adresserne er de samme som ovenstående Variable ICON, henholdsvis 0x0009 og 0x000A. Dette er mere end grænsebehandlingstilstanden for en ping-pong-knap.

(Inkrementelt knap attributdiagram over pumpestationens knaptilstand Variabel ICON Variabel med samme hukommelsesadresse)

Derudover vises pumpestationens udgangseffekt ved hjælp af et glidende ikon, som vist i nedenstående figur:

Dens parameter attributter er:

(Glidende ikon for pumpestationens udgangseffekt — egenskabsboks med skyderskala)

Ikonet for denne Slider-skalakontrol kaldes i den officielle DEMO 24.ico. Metoden til at tilføje 24.ico fil er den samme som ovenfor. Hukommelsesadressen for denne Slider Scale-kontrol er 0x0180, som kan skrives i MCU-programmet med 82-instruktion (som vist på billedet ovenfor, er området sat til 0-100) for at ændre ikonets position.  

Især status for strømforsyning og tilstandsknapper i dette projekt udlæses fra hukommelsesadressen 0x0009, 0x000A og 0x0039 på den serielle portskærm gennem 83 instruktion. 

De anvendte instruktioner er som følger:  

A5 5A 04 83 00 09 02  

Feedbacken på skærmen med seriel 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.  

Læs instruktion 0x0039 som:  

A5 5A 04 83 00 39 01  

Feedbacken på skærmen med seriel port er:  

A5 5A 06 83 00 39 01 00 01 eller  

A5 5A 06 83 00 39 01 00 02  

Der er fem dataadresser at skrive til: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Hvori er bladdoseringsadressen 0x0020, et 2-bit heltal på 2 bytes. Det kan overføres til berøringsskærmen via den serielle port.  

For at videregive 11 til berøringsskærmens datavariable display, brug følgende kommando:  

A5 5A 05 82 00 20 00 0B  

Programmering af fejlfinding.  

Koden er som følger:  

/*

  frank8

  STONE og arduino COMM,enlaiji yepian system.

  Tænder en LED i et sekund, derefter slukket i et sekund, gentagne gange.

  Adressen 0x0020 er adressen på nummeret på YePian;

  Adressen 0x0160 er adressen på nu LiuLiang;

  Adressen 0x0180 er adressen på Bengzhan outpower;

  Adressen 0x0260 er adressen på Jiejujiao;

  Adressen 0x0280 er adressen på vandudgangseffekt;

  Adressen 0x0009 er bengzhan power key;

  Adressen 0x000A er bengzhan mode nøgle;

  Adressen 0x0039 er vandstrømtasten.

  Dette eksempelkode er i frank-filen. 20210611

 */

// Pin 13 har en LED tilsluttet på de fleste Arduino -tavler.

// giv det et navn:

int led = 13;

int iYePian = 0; //0x0020 for antallet af 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! værdi er 0-50000!

int iLed = 1; //forsinkelsestid num.

int iNum = 0 ; //læs i char num.

int iNum2 = 0; //læs i char num2 for ShuiDianZhan!

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

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

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

// installationsrutinen kører en gang, når du trykker på reset:

ugyldig opsætning () {                

  // initialiser den digitale pin som output.

  pinMode(led, OUTPUT);     

  Serial.begin(115200); // Åbn den serielle kommunikationsfunktion og vent på, at den serielle port åbner  

while (!Serial) {

    ; // vent på, at seriel port tilsluttes. Behøves kun til Leonardo

  }  

}

// loop -rutinen kører igen og igen for altid:

void loop () {

  int inChar;

    if (iLed == 900) {     

//——- læs 0x0009 og 0x000A værdi———- 

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

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

            Serial.write(0x04); //længde

            Serial.write(0x83); // Læs!

            Serial.write(0x00); // adresse på bengzhan power-nøgle!

            Serial.write(0x09); // adresse på bengzhan power-nøgle!

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

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

     }

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

    if (iLed == 800) {     

//——- læs 0x0039 værdi———- 

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

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

            Serial.write(0x04); //længde

            Serial.write(0x83); // Læs!

            Serial.write(0x00); // adresse på ShuiDianZhan Power-tasten!

            Serial.write(0x39); // adresse på ShuiDianZhan tænd / sluk nøgle!

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

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

     }

  // Læs meddelelsen sendt af den serielle port:

  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 ; //tænd!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iNum = 4;

      iPower = 2 ; //sluk!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iNum = 0;

      iMode = 1 ; //Tilstand er god!

   }

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

      iNum = 0;

      iMode = 2 ; //Tilstand er FRA!

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

   }

  //——————0x0009 og 0x000A nøgle læst 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 ; //tænd!       

          iJiao = 0;

          iGongLuWater = 0 ;

      }

   }

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

      iNum2 = 0 ;

      iPowerWater = 2; //sluk!

   }

  //——————0x0039 nøgle læst ok! iPowerWater ok!——————————-

  forsinkelse (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite(led, HIGH); // tænd for LED'en (HØJ er spændingsniveauet)

                  //forsinkelse(500); // vent et øjeblik, Range: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; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, LOW); // sluk LED'en ved at gøre spændingen LAV

                  //forsinkelse(500); // vent et øjeblik, interval: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 på YePian

            Serial.write(0x20); // adresse på 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 på GongLu

            Serial.write(0x80); // adresse på 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 på LiuLiang

            Serial.write(0x60); // adresse på 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 på ShuiDianZhan JieJuJiao

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

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

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

            Serial.write(0x00);            

  }    

Til sidst skal du optage videoen online. 

Tilslut strømforsyningen og kommunikationen, tilslut Arduino-udviklingskortet til den serielle portkommunikation, observer den funktionelle grænseflade for vandkraftværket og pumpestationen på skærmen med den serielle port, tryk på kontakten for at kontrollere effekten, og skub ikonet og data er normale .  

Kilde: Platon Data Intelligence