IOT

Arduino Pumpensteuerung + STONE HMI-Display

Das intelligente Regelsystem der Schaufeln ist eine patentierte Technologie, die im Hauptsteuerungssystem verschiedener großer, mittlerer und kleiner Wasserkraftwerke und Pumpstationen verwendet wird. Dieses Projekt verwendet den zuverlässigen seriellen industriellen Touchscreen als Mensch-Maschine-Schnittstelle, um tägliche Parameter und Echtzeit-Schaufeldosierung, Ausgangsleistung, sofortiger Durchfluss und andere Informationen als Betriebseffektanzeige anzuzeigen. Außerdem sind das Arbeitszustandsprotokoll und das Störmeldeformular geplant und die Standby-Taste reserviert. Das Projekt verwendet den seriellen Touchscreen zur Datenanzeige und Anzeige von Dias. Das Zubehör ist wie folgt:  

  1. STVI056WT-01 serieller Touchscreen und STONE-Adapterplatine V1.2;  
  2. Passende Arduino-Steuerplatine;  

Kurze Beschreibung der Schnittstellenfunktion des intelligenten Schildregelsteuersystems.  

Auf der Startseite befinden sich drei Schaltflächen, die gedrückt werden können, um das entsprechende Wasserkraftwerkssystem, das Pumpstationssteuerungssystem und die Benutzerführungsoberfläche (mit Ersatztasten) aufzurufen. Die Benutzerführungsoberfläche zeigt den Rahmen des Demosystems, wie in der folgenden Abbildung dargestellt:

(Home-Schnittstelle der Enlegi Blade Intelligent Adjustment Control Demonstrationssoftware)

An der Schnittstelle der Steuerung des Wasserkraftwerks befinden sich Start- und Stopptasten sowie Anzeige von Status, Nennleistung (einschließlich Nennspannung, Nennleistung und Nenndrehzahl) und Steuerwert (einschließlich Anstellwinkel des Propellerblatts und Ausgangsleistung). Darüber hinaus können auch andere Seitensprung-Schaltflächen vorhanden sein (wie z. B. Startseite, Arbeitszustandsprotokoll, Störungsalarm und andere Standby-Schaltflächen). Auf der Seite Arbeitszustandsprotokoll und Fehleralarm kann eine Zurück-Schaltfläche vorhanden sein, um zu dieser Seite zurückzukehren. Das Diagramm unten:

           (Intelligent Control Display Interface des Wasserkraftwerks)

Beschreibung der Schnittstellenfunktion der Pumpenstationssteuerung. Das Diagramm unten:

                            (Funktionsschnittstelle der Pumpstationssteuerung)

In der Funktionsschnittstelle der Pumpstation kann der Modus geändert und die Stromversorgung des gesamten Systems ein- und ausgeschaltet werden, um die tatsächlich simulierten Parameter (wie Schaufeldosierung, Sofortdurchfluss, Ausgangsleistung) und andere anzuzeigen Schnittstellen umschaltbar (zB Betriebszustandsprotokoll, Störmeldeprotokoll). Gleichzeitig können auch Systemwerte (Gesamtschaufelzahl, Nennleistung, eingestellter Volumenstrom) angezeigt werden. Andere Schnittstellen können auch haben, wie z zwei Schnittstellen können eine Rückkehrtaste haben, können zur Funktionsschnittstelle der Pumpstation zurückkehren.  

Arbeitsidee:  

Der Bildschirm der seriellen Schnittstelle dient als Mensch-Maschine-Schnittstelle und kommuniziert mit dem Arduino-Entwicklungsboard. Die Platine akzeptiert Tastenbefehle des Touchscreens und überträgt Daten zur synchronen Anzeige an den Touchscreen der seriellen Schnittstelle. Die Slider-Skala wurde entwickelt, um Leistungsänderungen dynamisch anzuzeigen. Die Symbole für Netzschalter, Netzmesser, Modusschalter und Modusmesser dienen dazu, ICON-Dateien zu generieren und die Aktionseffekte von Stromversorgung und Modus zu animieren. Darüber hinaus wird im Arduino-Demoprogramm ein variabler Speicher verwendet, um Anweisungen zum Abrufen des Zustands der Stromversorgung und des Modus zu lesen, um die Simulation der Ausgabedaten zu steuern und das tatsächliche Mengenfenster an den Bildschirm der seriellen Schnittstelle auszugeben.  

Arbeitsschritte:  

  1. Einrichten von Hardware;  
  2. A) Verbinden Sie das Arduino-Entwicklungsboard und den USB mit dem seriellen Port-Konvertierungsboard;  
  3. B) Verbinden Sie die STONE-Touchscreen mit der USB-Seriell-Port-Download-Platine und der USB-zu-Seriell-Port-Adapterplatine;  
  4. C) Verbinden Sie den seriellen Port-Bildschirm und das Netzteil der Arduino-Entwicklungsplatine;  
  • 3 Schnittstellen des seriellen Port-Bildschirms, der animierten Icon-Datei und der Slider-Skala erstellt und in die STONE-Bildschirmentwicklungsplattform importiert STONE TOOL BOX (GUI-Design-Software);  

3, durch serielles Befehls-Debugging und dann Programmierung, um die Demonstrationsfunktionen der Pumpstationssteuerung und der Wasserkraftwerkssteuerung zu erreichen.  

 Dokumentieren Sie anschließend den konkreten Entwicklungsprozess.

Richten Sie zunächst die Hardwareverbindung ein.  

Verbinden Sie alle Teile gut gemäß den Arbeitsanweisungen:

Als nächstes erstellen Sie das ICON-Anzeigebild.  

Die in diesem Projekt verwendeten Knöpfe und Messer-ICONS werden wie folgt hergestellt:  

(Pumpstationssteuerungsschalter, Messeranimation ICON-Datei 8. ICO-Listen-Browse-Diagramm)

Klicken Sie in der Menüleiste von STONE TOOL BOX (GUI Design-Software) im Menü Tool (T) auf Symbolgenerierungswerkzeug, um das Dialogfeld Symbolwerkzeug anzuzeigen. Klicken Sie unten im Dialogfeld auf „Bildpfad auswählen“, um den Symbolbildpfad auszuwählen. Klicken Sie auf die Schaltfläche „ICON-Datei generieren“, um die BMP-Dateien in den Pfad zu packen, um die von der STONE TOOL BOX (GUI Design Software)-Plattform erkannte „.ico“-Datei zu generieren. Klicken Sie auf die Schaltfläche „Vorschau“, um die ICON-Liste in der importierten.ico „komprimierten Datei anzuzeigen.  

Schaltfläche zum Animieren des BMP-Icons, Pixel wie oben (Produktionsvariable Icon-Steuerung, die Größe der gleichen Position sollte gleich sein), Pumpstation-Steuerung 8 Bilder in den gleichen Ordner schneiden. Wählen Sie dann auf der linken Seite des Bildschirms STONE TOOL BOX (GUI Design Software) die Symbolseitenkarte aus und fügen Sie sie der komprimierten 7. Ico-Datei hinzu, indem Sie die Schaltfläche „Symbol hinzufügen“ unter „Symbolliste“ verwenden. Legen Sie alle 6 Bilder des Schaltzustands des Wasserkraftwerks in einen anderen Ordner und ordnen Sie sie in der Reihenfolge 1-6 an. Erstellen Sie die „6. Ico“-Datei und dann auf der linken Seite des STONE TOOL BOX (GUI-Design-Software) Bildschirm, wählen Sie die Symbolseitenkarte aus und fügen Sie die gezippte „6. Ico“-Datei über die Schaltfläche „Symbol hinzufügen“ unter „Symbolliste“.  

Importieren Sie nun das Bildsymbol in die STONE TOOL BOX (GUI Design Software) und machen Sie die Funktionstaste.  

Die Methode der 9-Variablen-Animation icon.wmv wird in diesem Projekt noch verwendet, um die Animationsfunktion zu realisieren. Der Screenshot der Parametereinstellung sieht wie folgt aus:  

            (Attributdiagramm des Variablen ICON des Wasserkraftwerks)

Von links nach rechts sind die ICON-Parameter Einstellungen der drei Variablen der Wasserkraftwerks-Funktionsseite: Start, Stopp und Zustand. Ihre Speicheradressen sind gleich (0x0039) und ihre Datenbereiche sind gleich, sodass ihre Änderungen synchronisiert werden. Icon-Dateien sind 6. Ico und die entsprechenden Icon-Seriennummern sind 1 und 2, 3 und 4, 6 und 5, die entsprechend dem aktuellen Status ausgewählt werden.  

Der Animationseffekt des Schaltflächenzustands wird durch inkrementelle Schaltflächen erreicht. Die folgende Abbildung zeigt die Parameter des Inkrement-Buttons links und des Dekriminierungs-Buttons rechts. Die Adresse ist 0x0039, die beide mit der des Variablen ICON identisch sind.

(Attributdiagramm der Inkrementaltaste mit gleicher Speicheradresse)

(Variables ICON-Attributdiagramm des Knopfmesserstatus der Pumpstation)

Von links nach rechts sind die ICON-Parametereinstellungen der vier Variablen der Pumpenstationsfunktionsseite: Power-Taste, Power-Messer, Mode-Messer und Mode-Taste. Hier sind beide Icon-Dateien 8.ICO, und ihr Datenbereich ist der gleiche, in dem die Speicheradresse derselben synchron geändert wird.  

Animationen des Schaltflächenzustands werden auch mit inkrementellen Schaltflächen implementiert. In der folgenden Abbildung sind die linke Seite der Taste zur Reduzierung der Stromversorgung und die rechte Seite der Taste zum Erhöhen des Modus die Parameter der Taste zur Reduzierung der Stromversorgung. Die Adressen sind die gleichen wie beim obigen Variablen-ICON, nämlich 0x0009 und 0x000A. Dies ist mehr als der maximale Verarbeitungsmodus einer Ping-Pong-Schaltfläche.

(Inkrementelles Schaltflächenattributdiagramm des Schaltflächenzustands der Pumpstation Variable ICON Variable mit derselben Speicheradresse)

Zusätzlich wird die Ausgangsleistung der Pumpstation über ein Schiebesymbol angezeigt, wie in der folgenden Abbildung dargestellt:

Seine Parameterattribute sind:

(Gleitsymbol der Ausgangsleistung der Pumpstation – Eigenschaftsfeld der Slider-Skala)

Das Icon dieser Slider-Skalensteuerung heißt in der offiziellen DEMO 24.ico. Die Methode zum Hinzufügen der Datei 24.ico ist dieselbe wie oben. Die Speicheradresse dieser Slider Scale-Steuerung ist 0x0180, die im MCU-Programm mit 82-Befehl geschrieben werden kann (wie im obigen Bild gezeigt, der Bereich ist auf 0-100 eingestellt), um die Position des Symbols zu ändern.  

Insbesondere wird der Status der Stromversorgungs- und Modusschaltflächen in diesem Projekt aus den Speicheradressen 0x0009, 0x000A und 0x0039 des Bildschirms der seriellen Schnittstelle über den Befehl 83 ausgelesen. 

Die verwendeten Anweisungen sind wie folgt:  

A5 5A 04 83 00 09 02  

Die Rückmeldung des Bildschirms der seriellen Schnittstelle ist wie folgt:  

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

Die folgenden 00 01 sind 2 Byte Daten von 0x0009, 00 02 sind 2 Byte Daten von 0x000A.  

Anweisung 0x0039 lesen als:  

A5 5A 04 83 00 39 01  

Die Rückmeldung des seriellen Port-Bildschirms ist:  

A5 5A 06 83 00 39 01 00 01 oder  

A5 5A 06 83 00 39 01 00 02  

Es gibt fünf Datenadressen zum Schreiben: 0x0020, 0x0160, 0x0180, 0x0260, 0x0280.  

Dabei ist die Blattdosierungsadresse 0x0020, eine 2-Bit-Ganzzahl von 2 Bytes. Es kann über die serielle Schnittstelle an das Touchscreen-Display übertragen werden.  

Um 11 an die Touchscreen-Datenvariablenanzeige zu übergeben, Verwenden Sie den folgenden Befehl:  

A5 5A 05 82 00 20 00 0B  

Debuggen programmieren.  

Der Code lautet wie folgt:  

/*

  frank8

  STEIN und arduino COMM, enlaiji yepian System.

  Schaltet eine LED eine Sekunde lang ein und dann wiederholt eine Sekunde lang aus.

  Die Adresse 0x0020 ist die Adresse von num von YePian;

  Die Adresse 0x0160 ist die Adresse von jetzt LiuLiang;

  Die Adresse 0x0180 ist die Adresse von Bengzhan Outpower;

  Die Adresse 0x0260 ist die Adresse von Jiejujiao;

  Die Adresse 0x0280 ist die Adresse des Wasserausgangs;

  Die Adresse 0x0009 ist der bengzhan Power Key;

  Die Adresse 0x000A ist der Bengzhan-Modusschlüssel;

  Die Adresse 0x0039 ist der Wasserkraftschlüssel.

  Dieser Beispielcode befindet sich in der Datei von frank. 20210611

 */

// Bei den meisten Arduino-Boards ist an Pin 13 eine LED angeschlossen.

// gib ihm einen Namen:

int led = 13;

int iYePian = 0; //0x0020 für die Anzahl von YePian!

int iGongLu = 0; //0x0180 für The GongLu!

int iLiuLiang = 0; //0x0160 für The now LiuLiang!

int iJiao = 0; // 0x0260 für The JieJuJiao!

int iGongLuWasser = 0; //0x0280 für The Water GongLu! Wert ist 0-50000!

int iLed = 1; // Verzögerungszeit num.

int iNum = 0 ; // Zeichennummer einlesen.

int iNum2 = 0; // char num2 für ShuiDianZhan einlesen!

int iPower = 2; //Schlüsselstatue 0x0009

int iMode = 2; //Schlüsselstatue 0x000A

int iPowerWater = 2; //Schlüsselstatue 0x0039

// die Setup-Routine wird einmal ausgeführt, wenn Sie Reset drücken:

void setup () {                

  // Initialisieren Sie den digitalen Pin als Ausgang.

  pinMode (led, AUSGANG);     

  Serial.begin(115200); // Öffnen Sie die serielle Kommunikationsfunktion und warten Sie, bis sich der serielle Port öffnet  

während (!Seriell) {

    ; // Warten Sie, bis der serielle Port eine Verbindung herstellt. Nur für Leonardo benötigt

  }  

}

// die Schleifenroutine läuft immer und immer wieder:

void loop () {

  int inChar;

    if (iLed == 900) {     

//——- 0x0009 und 0x000A Wert lesen———- 

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

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

            Serial.write (0x04); //Länge

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

            Serial.write (0x00); // Adresse von Bengzhan Power Key!

            Serial.write (0x09); // Adresse von Bengzhan Power Key!

            Serial.write (0x02); // 0x0009 (Leistung) und 0x000A (Modus)

//———STONE Rückgabewert ist „A5 5A 08 83 00 09 02 00 01 00 02“——

     }

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

    if (iLed == 800) {     

//——- 0x0039-Wert lesen———- 

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

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

            Serial.write (0x04); //Länge

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

            Serial.write (0x00); // Adresse von ShuiDianZhan Power key!

            Serial.write (0x39); // Adresse von ShuiDianZhan Power Key!

            Serial.write (0x01); // 0x0039 (Power-Taste) 

//———STONE Rückgabewert ist „A5 5A 06 83 00 39 01 00 01“——

     }

  // Lesen Sie die von der seriellen Schnittstelle gesendete Nachricht:

  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 ; //ein!

          iLiuLiang = 10 ;

          iGongLu = 50 ;

          iYePian = 10 ;         

      }

   }

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

      iNum = 4 ;

      iPower = 2 ; //ausschalten!

      iLiuLiang = 0 ;

      iGongLu = 0 ;

      iYePian = 0 ;

   }

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

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

      iNum = 0 ;

      iMode = 1 ; //Modus ist gut!

   }

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

      iNum = 0 ;

      iMode = 2 ; //Modus ist AUS!

      if(iPower == 1)iGongLu = 60 ; //GongLu ist auf 60% eingestellt!

   }

  //——————0x0009 und 0x000A Schlüssel gelesen 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(iPowerWasser != 1){

          iPowerWasser = 1 ; //ein!       

          iJiao = 0;

          iGongLuWasser = 0 ;

      }

   }

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

      iNum2 = 0 ;

      iPowerWasser = 2 ; //ausschalten!

   }

  //——————0x0039 Schlüssel gelesen ok! iPowerWater ok!——————————-

  Verzögerung (1); 

  iLED += 1;   

  if (iLed == 500) {  

      digitalWrite (led, HIGH); // schalte die LED ein (HIGH ist der Spannungspegel)

                  // Verzögerung (500); // warte eine Sekunde, Bereich: 200-2000

           if(iPower == 1) { 

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

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

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

           }   

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

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

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

           if(iPowerWasser == 2) { 

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

               iGongLuWasser += 2; // Bereich: 1-20

           }   

           if(iJiao >= 60) { 

               iJiao = 0; 

               iGongLuWasser = 0; 

           }   

  }    

  if (iLed >= 1000) {    

      digitalWrite (LED, NIEDRIG); // schalten Sie die LED aus, indem Sie die Spannung LOW machen

                  // Verzögerung (500); // warte eine Sekunde, Bereich: 200-2000

      iLED = 1;

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

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

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x00); // Adresse von YePian

            Serial.write (0x20); // Adresse von YePian

            Serial.write (0x00);

            Serial.write (iYePian);

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

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

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x01); // Adresse von GongLu

            Serial.write (0x80); // Adresse von GongLu

            Serial.write (0x00);

            Serial.write (iGongLu);

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

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

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x01); // Adresse von LiuLiang

            Serial.write (0x60); // Adresse von LiuLiang

            Serial.write (iLiuLiang); // LiuLiang ist 2800-3200

            Serial.write (0x80);            

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

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

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // Adresse von ShuiDianZhan JieJuJiao

            Serial.write (0x60); // Adresse von ShuiDianZhan JieJuJiao

            Serial.write (0x00);

            Serial.write (iJiao);

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

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

            Serial.write (0x05);

            Serial.write (0x82);

            Serial.write (0x02); // Adresse von ShuiDianZhan aus Power

            Serial.write (0x80); // Adresse von ShuiDianZhan aus Power;

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

            Serial.write (0x00);            

  }    

Zum Schluss nehmen Sie das Video online auf. 

Schließen Sie die Stromversorgung und die Kommunikation an, verbinden Sie das Arduino-Entwicklungsboard mit der seriellen Port-Kommunikation, beobachten Sie die funktionale Schnittstelle von Wasserkraftwerk und Pumpstation auf dem seriellen Port-Bildschirm, berühren Sie den Schalter, um den Effekt zu überprüfen, und schieben Sie das Symbol und die Daten sind normal .  

Quelle: Plato Data Intelligence