IOT

Arduino pumpun ohjaus + STONE HMI -näyttö

Blade älykäs säätöjärjestelmä on patentoitu tekniikka, jota käytetään useiden suurten, keskisuurten ja pienten vesivoimaloiden ja pumppuasemien valtavirran ohjausjärjestelmissä. Tämä projekti käyttää luotettavaa sarjateollisuuden kosketusnäyttöä ihmisen ja koneen välisenä käyttöliittymänä päivittäisten parametrien ja reaaliaikaisten teräannosten, lähtötehon, välittömän virtauksen ja muiden tietojen näyttämiseksi toimintavaikutusten näyttönä. Lisäksi suunnitellaan myös toimintatilaloki ja vikailmoituslomake, ja valmiuspainike on varattu. Projekti käyttää sarjamuotoista kosketusnäyttöä tietojen näyttämiseen ja liukusäätimen näyttöön. Lisävarusteet ovat seuraavat:  

  1. STVI056WT-01 sarjakosketusnäyttö ja STONE-sovitinkortti V1.2;  
  2. Yhteensopiva Arduino-ohjainkortti;  

Lyhyt kuvaus älykkään teränsäätöjärjestelmän liitäntätoiminnosta.  

Kotisivulla on kolme painiketta, joita painamalla pääsee sisään vastaavaan vesivoimalaitoksen järjestelmään, pumppuaseman ohjausjärjestelmään ja käyttöoppaan käyttöliittymään (varapainikkeet). Käyttöoppaan käyttöliittymä näyttää esittelyjärjestelmän puitteet seuraavan kuvan mukaisesti:

(Enlegi Blade Intelligent Adjustment Control -esittelyohjelmiston kotikäyttöliittymä)

Vesivoimalaitoksen ohjausjärjestelmän rajapinnassa on käynnistys- ja pysäytyspainikkeet sekä tilan, tehon (mukaan lukien nimellisjännite, nimellisteho ja nimellisnopeus) ja ohjausarvon (mukaan lukien potkurin lavan nousukulma ja lähtöteho) näyttö. Lisäksi voi olla myös muita sivun hyppypainikkeita (kuten kotisivu, toimintatilaloki, vikahälytys ja muut valmiustilan painikkeet). Toimintatilaloki- ja vikahälytyssivulla voi olla takaisin-painike, jolla palataan tälle sivulle. Alla oleva kaavio:

           (Vesivoimalan älykäs ohjausnäyttöliittymä)

Pumppuaseman ohjausjärjestelmän käyttöliittymän toimintokuvaus. Alla oleva kaavio:

                            (Pumppuaseman ohjausjärjestelmän toimintoliitäntä)

Pumppuaseman toiminnallisessa rajapinnassa voidaan muuttaa tilaa ja kytkeä koko järjestelmän virransyöttö päälle ja pois todellisten simuloitujen parametrien näyttämiseksi (kuten siiven annostus, välitön virtausnopeus, lähtöteho) ja muut. rajapintoja voidaan vaihtaa (kuten toimintatilaloki, vikahälytysraportti). Samalla voidaan näyttää myös järjestelmäarvot (terien kokonaismäärä, nimellisteho, asetettu virtausnopeus). Myös muissa liitännöissä voi olla, kuten toimintatilaloki (sisällön voi tilata numero, tapahtuma-aika, tapahtumatiedot, huomautukset), vikahälytys (sisällön tilattavissa numero, esiintymisaika, hälytyksen tiedot, hälytyskoodi jne.), kahdessa liitännässä voi olla paluupainike, voi palata pumppuaseman toiminnalliseen käyttöliittymään.  

Toimiva idea:  

Sarjaportin näyttö toimii ihmisen ja koneen välisenä käyttöliittymänä ja kommunikoi Arduino-kehityslevyn kanssa. Levy hyväksyy kosketusnäytön painikekomennot ja lähettää tiedot sarjaportin kosketusnäyttöön synkronista näyttöä varten. Liukusäädin on suunniteltu näyttämään tehon muutokset dynaamisesti. Virtakytkimen, virtaveitsen, tilakytkimen ja tilaveitsen kuvakkeet on suunniteltu luomaan ICON-tiedostoja ja animoimaan virtalähteen ja tilan toimintavaikutuksia. Lisäksi Arduino-demo-ohjelmassa muuttuvaa muistia käytetään lukemaan ohjeita virransyötön tilan ja tilan selvittämiseksi, jotta voidaan ohjata lähtötietojen simulointia ja tulostaa todellinen määrä -ikkuna sarjaportin näyttöön.  

Työvaiheet:  

  1. Laitteiston asennus;  
  2. A) Liitä Arduino-kehityskortti ja USB sarjaportin muunnoskorttiin;  
  3. B) Liitä STONE kosketusnäyttö USB-sarjaportin latauskortin ja USB-sarjaportti-sovitinkortin kanssa;  
  4. C) Liitä sarjaportin näyttö ja Arduino-kehityslevyn virtalähde;  

3, sarjakomentovirheenkorjauksen ja sitten ohjelmoinnin avulla pumppuaseman ohjauksen ja vesivoimalaitoksen ohjauksen esittelytoimintojen saavuttamiseksi.  

 Dokumentoi seuraavaksi erityinen kehitysprosessi.

Ensin määritä laitteistoyhteys.  

Liitä kaikki osat hyvin työmenetelmien mukaisesti:

Tee seuraavaksi ICON-ilmaisinkuva.  

Tässä projektissa käytetyt painikkeet ja veitsikuvakkeet on valmistettu seuraavasti:  

(Pumppuaseman ohjauskytkin, veitsianimaatio ICON-tiedosto 8. ICO-luettelon selauskaavio)

Napsauta STONE TOOL BOXin (GUI Design -ohjelmiston) valikkorivillä Työkalu (T) -valikosta Ikonien luontityökalu avataksesi Icon Tool -valintaikkunan. Napsauta valintaikkunan alareunassa "valitse kuvan polku" valitaksesi kuvakkeen kuvan polku. Napsauta "Luo ICON-tiedosto" -painiketta pakataksesi BMP-tiedostot polkuun. Luo STONE TOOL BOX (GUI Design -ohjelmisto) -alustan tunnistama ".ico"-tiedosto. Napsauta "Esikatselu" -painiketta nähdäksesi ICON-luettelon tuodussa.ico "pakattu tiedosto.  

Painike BMP-kuvakkeen animointiin, pikseli kuten yllä (Produced Variable Icon Control, saman sijainnin koon tulee olla sama), pumppuaseman ohjaus 8 leikkaa kuvaa samaan kansioon. Valitse sitten STONE TOOL BOX (GUI Design -ohjelmisto) -näytön vasemmasta reunasta kuvakesivukortti ja lisää se pakattuun 7. Ico-tiedostoon käyttämällä "Lisää kuvake" -painiketta "Icon List" -kohdan alla. Laita kaikki 6 kuvaa vesivoimalaitoksen ohjauskytkimen tilasta toiseen kansioon ja järjestä ne järjestykseen 1-6. Luo "6. Ico”-tiedosto ja sitten tiedoston vasemmalla puolella STONE TOOL BOX (GUI-suunnitteluohjelmisto) -näytössä, valitse Ikonisivukortti ja lisää pakattu "6. Ico" -tiedosto käyttämällä "Icon List" -kohdan "Lisää kuvake" -painiketta.  

Tuo nyt kuvakuvake STONE TOOL BOXiin (GUI Design -ohjelmisto) ja tee toimintopainike.  

Menetelmä 9-muuttuja-animaatio icon.wmv on edelleen käytössä tässä projektissa animaatiotoiminnon toteuttamiseksi. Kuvakaappaus parametrien asettamisesta on seuraava:  

            (Vesivoimalaitoksen muuttujan ICON:n ominaisuuskaavio)

Vasemmalta oikealle ovat ICON-parametri Vesivoimalaitoksen toimintosivun kolmen muuttujan asetukset: aloitus, pysäytys ja tila. Niiden muistiosoitteet ovat samat (0x0039) ja niiden tietoalueet ovat samat, joten niiden muutokset synkronoidaan. Ikonitiedostot ovat 6. Ico ja vastaavat kuvakkeen sarjanumerot ovat 1 ja 2, 3 ja 4, 6 ja 5, jotka valitaan todellisen tilan mukaan.  

Painikkeiden tilan animaatiotehoste saavutetaan inkrementaalisilla painikkeilla. Seuraavassa kuvassa näkyvät vasemmalla olevan lisäyspainikkeen ja oikealla olevan erotuspainikkeen parametrit. Osoite on 0x0039, jotka molemmat ovat samat kuin muuttujan ICON.

(Inkrementtipainikkeen ominaisuuskaavio, jolla on sama muistiosoite)

(Muuttuva ICON-määritekaavio pumppuaseman nappiveitsen tilasta)

Vasemmalta oikealle ovat ICON-parametri Pumppuaseman toimintosivun neljän muuttujan asetukset: virtapainike, tehoveitsi, tilaveitsi ja tilapainike. Tässä molemmat kuvaketiedostot ovat 8.ICO, ja niiden tietoalue on sama, jossa saman muistiosoite vaihtuu synkronisesti.  

Painikkeiden tila-animaatiot toteutetaan myös lisäpainikkeilla. Seuraavassa kuvassa virtalähteen vähennyspainikkeen vasen puoli ja tilan lisäyspainikkeen oikea puoli ovat tehonsyötön vähennyspainikkeen parametreja. Osoitteet ovat samat kuin yllä oleva muuttuja ICON, vastaavasti 0x0009 ja 0x000A. Tämä on enemmän kuin ping-pong-painikkeen rajallinen käsittelytila.

(Inkrementaalinen painikkeen ominaisuuskaavio pumppuaseman painikkeen tilasta Muuttuja ICON Muuttuja, jolla on sama muistiosoite)

Lisäksi pumppuaseman lähtöteho näytetään liukuvalla kuvakkeella alla olevan kuvan mukaisesti:

Sen parametriattribuutit ovat:

(Pumppuaseman lähtötehon liukuva kuvake — liukusäätimen asteikon ominaisuuslaatikko)

Tämän Slider-asteikkoohjaimen kuvaketta kutsutaan virallisessa DEMO 24.ico:ssa. Tapa lisätä 24.ico-tiedosto on sama kuin yllä. Tämän Slider Scale -ohjaimen muistiosoite on 0x0180, joka voidaan kirjoittaa MCU-ohjelmaan 82 käskyllä ​​(kuten yllä olevassa kuvassa näkyy, alue on asetettu 0-100) kuvakkeen paikan muuttamiseksi.  

Erityisesti virtalähteen ja tilapainikkeiden tila tässä projektissa luetaan sarjaportin näytön muistiosoitteesta 0x0009, 0x000A ja 0x0039 83-ohjeen kautta. 

Käytetyt ohjeet ovat seuraavat:  

A5 5A 04 83 00 09 02  

Sarjaportin näytön palaute on seuraava:  

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

Seuraava 00 01 on 2x0:n 0009tavuinen data, 00 02 on 2x0A:n 000tavuinen data.  

Lue ohje 0x0039 muodossa:  

A5 5A 04 83 00 39 01  

Sarjaportin näytön palaute on:  

A5 5A 06 83 00 39 01 00 01 tai  

A5 5A 06 83 00 39 01 00 02  

On viisi dataosoitetta, joihin kirjoitetaan: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Tällöin lehtien annostusosoite on 0x0020, 2-bittinen 2 tavun kokonaisluku. Se voidaan siirtää kosketusnäyttöön sarjaportin kautta.  

Siirtääksesi 11 kosketusnäytön datamuuttujan näyttöön, käytä seuraavaa komentoa:  

A5 5A 05 82 00 20 00 0B  

Ohjelmointivirheenkorjaus.  

Koodi on seuraava:  

/*

  frank8

  STONE ja arduino COMM, enlaiji yepian järjestelmä.

  Sytyttää LED -valon päälle yhden sekunnin ja sitten pois päältä yhden sekunnin ajan toistuvasti.

  Osoite 0x0020 on YePianin numeron osoite;

  Osoite 0x0160 on LiuLiangin osoite;

  Osoite 0x0180 on Bengzhanin tehon osoite;

  Osoite 0x0260 on Jiejujiaon osoite;

  Osoite 0x0280 on vesisähkön osoite;

  Osoite 0x0009 on bengzhanin virtapainike;

  Osoite 0x000A on bengzhan-tilan avain;

  Osoite 0x0039 on vesivirtaavain.

  Tämä esimerkkikoodi on frank-tiedostossa. 20210611

 */

// Nastassa 13 on LED -valo, joka on kytketty useimpiin Arduino -levyihin.

// anna sille nimi:

int led = 13;

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

int iGongLu = 0; //0x0180 GongLulle!

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

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

int iGongLuWater = 0; //0x0280 The Water GongLulle! arvo on 0-50000!

int iLed = 1; //viiveaika num.

int inNum = 0; //lue char num.

int iNum2 = 0; //lue char num2 ShuiDianZhanille!

int iPower = 2; //avainpatsas 0x0009

int iMode = 2; //avainpatsas 0x000A

int iPowerWater = 2; //avainpatsas 0x0039

// asennusohjelma suoritetaan kerran, kun painat nollauspainiketta:

tyhjä asennus () {                

  // alustetaan digitaalinen nasta lähtöön.

  pinMode(led, OUTPUT);     

  Serial.begin(115200); // Avaa sarjaliikennetoiminto ja odota, että sarjaportti avautuu  

while (!Serial) {

    ; // odota, että sarjaportti muodostaa yhteyden. Tarvitaan vain Leonardolle

  }  

}

// silmukkarutiini jatkuu yhä uudelleen ja uudelleen ikuisesti:

void loop () {

  inChar;

    if (iLed == 900) {     

//——- lue 0x0009 ja 0x000A arvo———- 

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

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

            Serial.write(0x04); //pituus

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

            Serial.write(0x00); // bengzhanin virtanäppäimen osoite!

            Serial.write(0x09); // bengzhanin virtanäppäimen osoite!

            Serial.write(0x02); // 0x0009 (teho) ja 0x000A (tila)

//———STONE-palautusarvo on "A5 5A 08 83 00 09 02 00 01 00 02"——

     }

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

    if (iLed == 800) {     

//——- lue 0x0039 arvo———- 

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

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

            Serial.write(0x04); //pituus

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

            Serial.write(0x00); // ShuiDianZhanin virtanäppäimen osoite!

            Serial.write(0x39); // ShuiDianZhan-virtanäppäimen osoite!

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

//———STONE-palautusarvo on "A5 5A 06 83 00 39 01 00 01"——

     }

  // Lue sarjaportin lähettämä viesti:

  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; //virta päälle!

          iLiuLiang = 10;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iNum = 4;

      iPower = 2; //virta pois!

      iLiuLiang = 0;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iNum = 0;

      iMode = 1; //Tila on hyvä!

   }

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

      iNum = 0;

      iMode = 2; //Mode on OFF!

      if(iPower == 1)iGongLu = 60 ; //GongLu on asetettu 60%!

   }

  //——————0x0009 ja 0x000A avain lue ok! iPower\iMode ok!—————————--

   if (inChar == 0x39) { inNum2 = 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; //virta päälle!       

          iJiao = 0;

          iGongLuWater = 0;

      }

   }

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

      iNum2 = 0;

      iPowerWater = 2; //virta pois!

   }

  //——————0x0039-avain lue ok! iPowerWater ok!—————————--

  viive (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite(led, HIGH); // laita LED päälle (HIGH on jännitetaso)

                  //viive(500); // odota hetki, Alue:200-2000

           if(iPower == 1) { 

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

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

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

           }   

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

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

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

           if(iPowerWater == 2) { 

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

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

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, LOW); // sammuta LED asettamalla jännitteen LOW

                  //viive(500); // odota hetki, alue:200-2000

      iLed = 1;

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // YePianin osoite

            Serial.write(0x20); // YePianin osoite

            Serial.write(0x00);

            Serial.write(iYePian);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // GongLun osoite

            Serial.write(0x80); // GongLun osoite

            Serial.write(0x00);

            Serial.write(iGongLu);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // LiuLiangin osoite

            Serial.write(0x60); // LiuLiangin osoite

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

            Serial.write(0x80);            

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // ShuiDianZhan JieJuJiaon osoite

            Serial.write(0x60); // ShuiDianZhan JieJuJiaon osoite

            Serial.write(0x00);

            Serial.write(iJiao);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // ShuiDianZhan out Powerin osoite

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

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

            Serial.write(0x00);            

  }    

Lopuksi tallenna video verkossa. 

Yhdistä virtalähde ja tiedonsiirto, liitä Arduino-kehityskortti sarjaporttiviestintään, tarkkaile vesivoimalan ja pumppausaseman toiminnallista käyttöliittymää sarjaportin näytöllä, kosketa kytkintä tarkistaaksesi tehon ja liu'uta kuvaketta ja tiedot ovat normaaleja. .  

Lähde: Platon Data Intelligence