IOT

Arduino pumpa vezérlés + STONE HMI kijelző

A blade intelligens szabályozási rendszer egy szabadalmaztatott technológia, amelyet különféle nagy, közepes és kis vízerőművek és szivattyútelepek fő vezérlőrendszerében használnak. Ez a projekt a megbízható soros ipari érintőképernyőt használja az ember-gép interfészként, hogy megjelenítse a napi paramétereket és a valós idejű pengeadagolást, a kimeneti teljesítményt, az azonnali áramlást és egyéb információkat, a működési hatás kijelzőjeként. Ezen kívül az üzemállapot-napló és a hibariasztási űrlap is tervbe van véve, valamint a készenléti gomb le van foglalva. A projekt a soros érintőképernyőt használja az adatmegjelenítéshez és a diajelző megjelenítéséhez. A tartozékok a következők:  

  1. STVI056WT-01 soros érintőképernyő és STONE adapterkártya V1.2;  
  2. Hozzáillő Arduino vezérlőpanel;  

Az intelligens pengeszabályozó vezérlőrendszer interfész funkciójának rövid leírása.  

A kezdőlapon három gomb található, amelyek megnyomásával beléphet a megfelelő vízerőmű-rendszerbe, szivattyúállomás-vezérlőrendszerbe és a felhasználói útmutató felületébe (tartalék gombokkal). A felhasználói útmutató felülete a bemutató rendszer keretét mutatja, amint az az alábbi ábrán látható:

(Az Enlegi Blade Intelligent Adjustment Control Demonstration Software kezdőfelülete)

A vízerőmű vezérlőrendszerének interfészén találhatók az indító és leállító gombok, valamint az állapot, a névleges teljesítmény (beleértve a névleges feszültséget, a névleges teljesítményt és a névleges fordulatszámot) és a vezérlőérték (beleértve a légcsavar lapátának dőlésszögét és a kimeneti teljesítményt) kijelzése. Ezen kívül lehetnek más oldalugrási gombok is (például kezdőlap, üzemállapot-napló, hibariasztás és egyéb készenléti gombok). Az üzemállapot-naplóban és a hibariasztás oldalon egy vissza gomb található az oldalra való visszatéréshez. Az alábbi diagram:

           (A vízerőmű intelligens vezérlő kijelzőfelülete)

Szivattyúállomás vezérlőrendszer interfész funkció leírása. Az alábbi diagram:

                            (A szivattyúállomás vezérlőrendszerének funkcionális interfésze)

A szivattyúállomás funkcionális interfészében az üzemmód megváltoztatható, és a teljes rendszer tápellátása ki-be kapcsolható, hogy megjelenjenek az aktuális szimulált paraméterek (mint pl. lapátadagolás, azonnali áramlási sebesség, kimeneti teljesítmény), stb. interfészek kapcsolhatók (például üzemállapot-napló, hibariasztási jelentés). Ezzel egyidejűleg a rendszerértékek (a lapátok teljes száma, névleges teljesítmény, beállított áramlási sebesség) is megjeleníthetők. Egyéb interfészek is rendelkezhetnek, mint például üzemállapot napló (rendelhető tartalom száma, esemény időpontja, esemény részletei, megjegyzések), hibariasztás (rendelhető tartalom száma, előfordulási idő, riasztás részletei, riasztási kód stb.), a két interfészen lehet visszatérés gomb, visszatérhet a szivattyúállomás funkcionális interfészéhez.  

Munkaötlet:  

A soros port képernyője ember-gép interfészként szolgál, és kommunikál az Arduino fejlesztőkártyával. A kártya elfogadja az érintőképernyő gombparancsait, és adatokat továbbít a soros port érintőképernyőjére a szinkron megjelenítés érdekében. A csúszka skála a teljesítményváltozások dinamikus megjelenítésére szolgál. A tápkapcsoló, a tápkés, az üzemmódkapcsoló és az üzemmód kés ikonjai ICON-fájlokat generálnak, és animálják a tápegység és az üzemmód cselekvési hatásait. Ezenkívül az Arduino demóprogramjában változó memóriát használnak az utasítások beolvasására a tápellátás és az üzemmód állapotának megállapításához, hogy vezéreljék a kimeneti adatok szimulációját és a tényleges mennyiségi ablakot a soros port képernyőjére.  

Munka lépései:  

  1. Hardver beállítása;  
  2. A) Csatlakoztassa az Arduino fejlesztőkártyát és az USB-t a soros port átalakító kártyához;  
  3. B) Csatlakoztassa a STONE érintőképernyő az USB soros port letöltőkártyával és az USB-soros port adapterkártyával;  
  4. C) Csatlakoztassa a soros port képernyőjét és az Arduino fejlesztőkártya tápegységét;  
  • 3 interfészt készített soros port képernyőből, animált ikonfájlból és Slider Scale-ból, és importálta őket a STONE képernyőfejlesztő platformra STONE TOOL BOX (GUI tervező szoftver);  

3, soros parancs hibakereséssel, majd programozással a szivattyúállomás vezérlésének és a vízerőmű vezérlésének demonstrációs funkcióinak eléréséhez.  

 Ezután dokumentálja a konkrét fejlesztési folyamatot.

Először állítsa be a hardverkapcsolatot.  

Jó munkát végezzen az összes alkatrész csatlakoztatásakor a munkafolyamatok szerint:

Ezután készítse el az IKON jelzőképet.  

A projektben használt gombok és kés IKONOK az alábbiak szerint készülnek:  

(Szivattyúállomás vezérlő kapcsoló, kés animáció ICON fájl 8. ICO lista tallózás diagram)

A STONE TOOL BOX (GUI Design szoftver) menüsorában kattintson az Ikongeneráló eszköz elemre az Eszköz (T) menüben az Ikon eszköz párbeszédpanel megjelenítéséhez. Kattintson a párbeszédpanel alján található „Kép elérési útjának kiválasztása” elemre az Ikonkép elérési útja kiválasztásához. Kattintson az „ICON fájl létrehozása” gombra a BMP fájlok becsomagolásához a STONE TOOL BOX (GUI Design szoftver) platform által felismert „.ico” fájl létrehozásának elérési útjában. Kattintson az „Előnézet” gombra az importált ICON-lista megtekintéséhez.ico „tömörített fájl.  

Gomb a BMP ikon animálásához, pixel a fentiek szerint (Produced Variable Icon vezérlés, azonos pozíció méretének meg kell egyeznie), szivattyúállomás vezérlés 8 kivágott kép ugyanabba a mappába. Ezután a STONE TOOL BOX (GUI Design szoftver) képernyő bal oldalán válassza ki az Ikonoldal kártyát, és adja hozzá a tömörített 7. Ico fájlhoz az „Ikonok listája” alatti „Ikon hozzáadása” gombbal. Tedd egy másik mappába mind a 6 képet a vízerőmű vezérlőkapcsoló állapotáról, és rendezd őket 1-6. Hozza létre a „6. Ico” fájlt, majd a bal oldalon STONE TOOL BOX (GUI tervező szoftver) képernyőn válassza ki az Ikonoldal kártyát, és adja hozzá a tömörített „6. Ico” fájlt az „Ikonlista” alatti „Ikon hozzáadása” gombbal.  

Most importálja a képikont a STONE TOOL BOX-ba (GUI Design szoftver), és állítsa be a funkciógombot.  

A 9 változós animáció ikon.wmv módszerét továbbra is alkalmazzák ebben a projektben az animációs funkció megvalósításához. A paraméterbeállítás képernyőképe a következő:  

            (A vízerőmű változó ICON attribútum diagramja)

Balról jobbra az ICON paraméter A vízerőmű funkcióoldalának három változójának beállításai: start, stop és state. Memóriacímeik azonosra (0x0039) vannak beállítva, adattartományuk pedig azonos, így a változtatások szinkronizálva vannak. Az ikonfájlok 6. Ico, a megfelelő ikonok sorozatszámai pedig 1 és 2, 3 és 4, 6 és 5, amelyek az aktuális állapot szerint kerülnek kiválasztásra.  

A gombállapot-animációs effektus a növekményes gombokkal érhető el. A következő ábra a bal oldali növelő gomb és a jobb oldali meghatározás gomb paramétereit mutatja. A cím 0x0039, mindkettő megegyezik a Variable ICON címével.

(A növekményes gomb attribútum diagramja azonos memóriacímmel)

(A szivattyúállomás gombkés állapotának változó ICON attribútum diagramja)

Balról jobbra az ICON paraméter A szivattyúállomás funkcióoldalának négy változójának beállításai láthatók: bekapcsoló gomb, bekapcsoló kés, üzemmód kés és üzemmód gomb. Itt mindkét Icon fájl 8.ICO, és az adattartományuk megegyezik, melyben ugyanannak a memóriacíme szinkronban módosul.  

A gombállapot-animációk növekményes gombokkal is megvalósíthatók. A következő ábrán a tápfeszültség-csökkentő gomb bal oldala és az üzemmódnövelő gomb jobb oldala a tápfeszültség-csökkentő gomb paraméterei. A címek megegyeznek a fenti változó ICON-éval, 0x0009 és 0x000A. Ez több, mint egy ping-pong gomb feldolgozási módja.

(A szivattyúállomás gomb állapotának növekményes gomb attribútum diagramja Változó ICON Változó azonos memóriacímmel)

Ezenkívül a szivattyúállomás kimeneti teljesítménye egy csúszó ikon segítségével jelenik meg, az alábbi ábrán látható módon:

Paraméter attribútumai a következők:

(A szivattyúállomás kimeneti teljesítményének csúszó ikonja – a csúszka skála tulajdonságdoboza)

Ennek a Slider skálavezérlőnek az ikonját a hivatalos DEMO 24.ico tartalmazza. A 24.ico fájl hozzáadásának módja megegyezik a fentiekkel. Ennek a Slider Scale vezérlőnek a memóriacíme 0x0180, ami az MCU programban 82 utasítással írható (a fenti képen látható módon a tartomány 0-100-ig van beállítva) az ikon helyzetének megváltoztatásához.  

Ebben a projektben a tápellátás és az üzemmód gombok állapota a soros port képernyőjének 0x0009, 0x000A és 0x0039 memóriacíméről 83 utasításon keresztül olvasható ki. 

A használt utasítások a következők:  

A5 5A 04 83 00 09 02  

A soros port képernyő visszajelzése a következő:  

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

A következő 00 01 a 2x0 0009 bájtos adata, a 00 02 pedig a 2x0A 000 bájtos adata.  

Olvassa el a 0x0039 utasítást a következőképpen:  

A5 5A 04 83 00 39 01  

A soros port képernyőjének visszajelzése a következő:  

A5 5A 06 83 00 39 01 00 01 ill  

A5 5A 06 83 00 39 01 00 02  

Öt adatcímet kell írni: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Ebben a levéladagolási cím 0x0020, egy 2 bites, 2 bájtból álló egész szám. A soros porton keresztül továbbítható az érintőképernyős kijelzőre.  

A 11 átadásához az érintőképernyős adatváltozó kijelzőhöz, használja a következő parancsot:  

A5 5A 05 82 00 20 00 0B  

Programozási hibakeresés.  

A kód a következő:  

/*

  frank8

  STONE és arduino COMM, enlaiji yepian rendszer.

  A LED-et egy másodpercre bekapcsolja, majd egy másodpercre ismételten kikapcsol.

  A 0x0020 cím a num YePian címe;

  A 0x0160 cím jelenleg LiuLiang címe;

  A 0x0180 cím a Bengzhan outpower címe;

  A 0x0260 cím Jiejujiao címe;

  A 0x0280 cím a vízellátás címe;

  A 0x0009 cím bengzhan bekapcsológomb;

  A 0x000A cím a bengzhan mód kulcsa;

  A 0x0039 cím a víz bekapcsológombja.

  Ez a példakód a frank fájlban található. 20210611

 */

// A 13. érintkező LED-je a legtöbb Arduino táblára csatlakozik.

// adjon nevet:

int led = 13;

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

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

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

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

int iGongLuWater = 0; //0x0280 – The Water GongLu! értéke 0-50000!

int iLed = 1; //késleltetési idő sz.

int iNum = 0 ; //olvasd be a char num.

int iNum2 = 0; //olvassa el a char num2-ben a ShuiDianZhan számára!

int iPower = 2; //kulcs szobor 0x0009

int iMode = 2; //kulcs szobor 0x000A

int iPowerWater = 2; //kulcs szobor 0x0039

// a beállítási rutin egyszer fut, amikor megnyomja a reset gombot:

void setup () {                

  // inicializálja a digitális tűt kimenetként.

  pinMode(led, OUTPUT);     

  Serial.begin(115200); // Nyissa meg a soros kommunikációs funkciót, és várja meg, amíg megnyílik a soros port  

while (!Serial) {

    ; // várja meg a soros port csatlakozását. Csak Leonardonak kell

  }  

}

// a ciklus rutin örökké újra és újra fut:

void loop () {

  int inChar;

    if (iLed == 900) {     

//——- 0x0009 és 0x000A érték beolvasása———- 

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

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

            Serial.write(0x04); //hosszúság

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

            Serial.write(0x00); // a bengzhan bekapcsológomb címe!

            Serial.write(0x09); // a bengzhan bekapcsológomb címe!

            Serial.write(0x02); // 0x0009 (teljesítmény) és 0x000A (mód)

//———A STONE visszatérési értéke „A5 5A 08 83 00 09 02 00 01 00 02”——

     }

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

    if (iLed == 800) {     

//——- 0x0039 érték beolvasása———- 

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

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

            Serial.write(0x04); //hosszúság

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

            Serial.write(0x00); // a ShuiDianZhan bekapcsológomb címe!

            Serial.write(0x39); // a ShuiDianZhan bekapcsológomb címe!

            Serial.write(0x01); // 0x0039 (bekapcsológomb) 

//———A STONE visszatérési értéke „A5 5A 06 83 00 39 01 00 01”——

     }

  // Olvassa el a soros port által küldött üzenetet:

  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 ; //bekapcsolás!

          iLiuLiang = 10 ;

          iGongLu = 50;

          iYePian = 10;         

      }

   }

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

      iNum = 4;

      iPower = 2; //kikapcsolni!

      iLiuLiang = 0 ;

      iGongLu = 0;

      iYePian = 0;

   }

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

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

      iNum = 0;

      iMode = 1 ; //A mód jó!

   }

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

      iNum = 0;

      iMode = 2 ; //A mód ki van kapcsolva!

      if(iPower == 1)iGongLu = 60 ; //A GongLu 60%-ra van állítva!

   }

  //——————0x0009 és 0x000A kulcs olvasható rendben! iPower\iMode rendben!—————————--

   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; //bekapcsolás!       

          iJiao = 0;

          iGongLuWater = 0 ;

      }

   }

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

      iNum2 = 0;

      iPowerWater = 2; //kikapcsolni!

   }

  //——————0x0039 kulcs olvasható rendben! iPowerWater rendben!—————————--

  késleltetés (1); 

  iLed += 1;   

  if (iLed == 500) {  

      digitalWrite(led, HIGH); // bekapcsolja a LED-et (HIGH a feszültségszint)

                  //delay(500); // várjon egy másodpercet, Tartomány: 200-2000

           if(iPower == 1) { 

               iYePian += 1; //tartomány:1-20

               iLiuLiang += 1; //tartomány:1-20

               if(iMode == 1) iGongLu += 5; //tartomány:1-20

           }   

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

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

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

           if(iPowerWater == 2) { 

               iJiao += 1; //tartomány:1-20

               iGongLuWater += 2; //tartomány:1-20

           }   

           if(iJiao >= 60 ) { 

               iJiao = 0; 

               iGongLuWater = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite(led, LOW); // kapcsolja ki a LED-et úgy, hogy a feszültséget LOW-ra állítja

                  //delay(500); // várjon egy másodpercet, tartomány: 200-2000

      iLed = 1;

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x00); // a YePian címe

            Serial.write(0x20); // a YePian címe

            Serial.write(0x00);

            Serial.write(iYePian);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // GongLu címe

            Serial.write(0x80); // GongLu címe

            Serial.write(0x00);

            Serial.write(iGongLu);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x01); // LiuLiang címe

            Serial.write(0x60); // LiuLiang címe

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

            Serial.write(0x80);            

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // ShuiDianZhan JieJuJiao címe

            Serial.write(0x60); // ShuiDianZhan JieJuJiao címe

            Serial.write(0x00);

            Serial.write(iJiao);

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

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

            Serial.write(0x05);

            Serial.write(0x82);

            Serial.write(0x02); // a ShuiDianZhan out Power címe

            Serial.write(0x80); // a ShuiDianZhan out Power címe;

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

            Serial.write(0x00);            

  }    

Végül rögzítse a videót online. 

Csatlakoztassa a tápegységet és a kommunikációt, csatlakoztassa az Arduino fejlesztőkártyát a soros port kommunikációjához, figyelje meg a vízerőmű és a szivattyúállomás funkcionális interfészét a soros port képernyőjén, érintse meg a kapcsolót a hatás ellenőrzéséhez, majd csúsztassa el az ikont és az adatok normálisak. .  

Forrás: Plato Data Intelligence