FLProg + Nextion HMI. Lektion 3



In früheren Lektionen ( Lektion 1 , Lektion 2 ) habe ich darüber gesprochen, wie die Schnittstelle eines Nextion HMI-Panels gezeichnet und ein Panel mit Arduino gesteuert wird. In diesem Tutorial zeige ich Ihnen, wie Sie das umgekehrte Problem der Steuerung der Arduino-Karte mithilfe des Nextion HMI-Panels lösen können.
In der Lektion werden wir das Projekt der vorherigen Lektion erweitern, eine Lüftersteuerung hinzufügen, die sich einschaltet, wenn die Temperatur über den angegebenen Grenzwert steigt, und ausschaltet, wenn die Temperatur unter den zweiten Grenzwert fällt. Die Einstellungen werden über das Bedienfeld vorgenommen und im nichtflüchtigen Speicher des Arduino-Controllers gespeichert. Zusätzlich machen wir einen Lichtschalter (Ein-Aus) auf dem Bedienfeld und einen Knopf, mit dem wir die Taschenlampe einschalten (zum Beispiel, um Außerirdischen ein Signal zu geben).

Geändertes Schema aus der letzten Lektion. Taschenlampe, Licht und Lüfter simulieren LEDs.


Das Panel-Design wurde ebenfalls fertiggestellt. Zwei Seiten hinzugefügt. Außerdem wurde die in das Bedienfeld geladene Schriftart ersetzt. Das Projekt für das Panel befindet sich im Archiv, auf das am Ende des Artikels verwiesen wird. In den Kommentaren zur letzten Lektion haben sie mich zu Recht wegen des Mangels an Designer-Talent kritisiert. Ich stimme dem vollkommen zu, daher haben die neuen Seiten kein Design, sondern reine Funktionalität.
Betrachten Sie die neuen Seiten.

Verwaltungsseite ("Seite 3", ID = 3).


Betrachten Sie die Elemente auf der Seite.

  1. Nur Textfelder. Nichts Interessantes.
  2. . , . . . .

    , ( “vscope” “global”). . “Touch Press Event” .

    4 .
    page4.evtemp.txt=onV.txt

    4 , .
    page4.varN.val=0

    .
    page page4


  3. . . .

    “Touch Press Event”.

    .
    page4.varN.val=1


  4. . . .

    “Touch Press Event”.


  5. (“Dual-state button”) – .
    .

    , ( “vscope” “global”). ( “sta” “image”). “pic0” 0 “pic1” 1.

  6. (“Button”) – . .

    . , . , Arduino UART ( , ). (7 8). , , ( ). (“Touch Press Event”) .

    (“Touch Release Event”) .

    FLProg.


Fenster zum Bearbeiten von Werten („Seite 4“, ID = 4).

Ăśberlegen Sie, was darin enthalten ist.
  1. Feld mit bearbeitbarem Wert. Elementparameter.

    Wir werden den Wert dieses Feldes vom Controller lesen bzw. global machen (das Attribut "vscope" ist auf "global" gesetzt).

  2. Werteingabetasten. Alle diese Schaltflächen sind nahezu identisch und unterscheiden sich in der Beschriftung und dem Code im Ereignishandler „Touch Press Event“. Wenn Sie auf eine dieser Schaltflächen klicken, wird das entsprechende Symbol zum aktuellen Wert des Felds des bearbeiteten Werts hinzugefügt.
    Der Code im „Touch Press Event“ für jede der Tasten.
    “0”
    evtemp.txt=evtemp.txt+"0"

    “1”
    evtemp.txt=evtemp.txt+"1"

    “2”
    evtemp.txt=evtemp.txt+"2"

    “3”
    evtemp.txt=evtemp.txt+"3"

    “4”
    evtemp.txt=evtemp.txt+"4"

    “5”
    evtemp.txt=evtemp.txt+"5"

    “6”
    evtemp.txt=evtemp.txt+"6"

    “7”
    evtemp.txt=evtemp.txt+"7"

    “8”
    evtemp.txt=evtemp.txt+"8"

    “9”
    evtemp.txt=evtemp.txt+"9"

    “.”
    evtemp.txt=evtemp.txt+"."


  3. Taste zum Löschen des Feldes. Beim Drücken wird der Feldwert gelöscht.
    Code im "Touch Press Event"
    evtemp.txt=""

  4. Schaltfläche zum Löschen des letzten Zeichens.
    Code im "Touch Press Event"
    evtemp.txt=evtemp.txt-1

    . . . .

  5. .
    , (“endPress” “ endRel”) .
    “Touch Press Event”
    page4.endPress.val=1

    “Touch Release Event”
    page4.endRel.val=1


  6. . .
    “Touch Press Event”
    page page3



Wenn das Panel fertig ist, gehen Sie zum FLProg-Programm. Es wird auch das Projekt aus der letzten Lektion verwendet, das leicht modifiziert wurde. Die Projektdatei befindet sich im Archiv, auf das am Ende des Beitrags verwiesen wird.
Wie in der letzten Lektion werde ich die vorgefertigten Leiterplatten zeigen und erzählen, was auf ihnen passiert.
Board 7 - „Laternenmanagement“ Hier ist



alles einfach. Block B46 - „Click Tracking“ (Elementbibliothek, Ordner „Nextion HMI Panel“). An seiner Ausgabe entspricht es dem Status der überwachten Schaltfläche oder eines anderen Elements der Ereignisse „Touch Press Event“ und „Touch Release Event“ auf dem Bedienfeld. Dieser Wert wird direkt in den an die Lampe gebundenen Ausgang geschrieben. Der Block wird mit dem Blockeditor parametriert.



Wählen Sie im Blockeditor das Bedienfeld aus, erstellen Sie eine neue Seite und schreiben Sie die erforderlichen Elemente darauf. Ich habe in einer früheren Lektion erklärt, wie das geht.



Ein solches Bild sollte sich herausstellen.



Als drückende Variable wählen wir die Variable, in die wir das Gerät schreiben, über die Schaltfläche „Touch Press Event“ und als Release-Variable die Variable über die Schaltfläche „Touch Release Event“.

Karte 8 - "Lichtsteuerung".



Gleiches sehr einfaches Board. Hier lesen wir die Position des Schalters mit Block B47 - „Get parameter“ (Elementbibliothek -> Ordner „Nextion HMI Panel“ -> Ordner „Elements“). Dieser Wert wird dann direkt an die an die Beleuchtung angeschlossene Ausgabeeinheit gesendet. Der Block wird mit dem Blockeditor parametriert.



Um die Belastung des Controllers zu verringern, werden wir einmal pro Sekunde den Status des Switches anfordern.

Board 9 - "Ende der Bearbeitungsparameter."
Auf dieser Karte werden wir den Klick auf die Schaltfläche "Fertig stellen" auf der Seite zur Parameterbearbeitung verarbeiten.



Mit Block B48 - „Tracking Clicks“ (Elementbibliothek, Ordner „Nextion HMI Panel“) bestimmen wir den Zeitpunkt des Drückens. Im Editor dieses Blocks erstellen wir Seite 4 und füllen sie mit den für uns interessanten Elementen.



Und richte den Block ein.



Wählen Sie mit Block B49 - „Rtrig“ (Elementbibliothek, Ordner „Trigger“) die Vorderflanke des Signals aus, dass die Schaltfläche „Fertig stellen“ gedrückt wird, und schreiben Sie sie in die Variable „Ende der Bearbeitung“.
Auch hier lesen wir den Wert der Variablen, in der die Kennung des bearbeiteten Felds gespeichert ist, mit Block B54 - "Parameter abrufen" (Elementbibliothek -> Ordner "Nextion HMI Panel" -> Ordner "Elemente"). Einstellungen blockieren.



Wir setzen den erhaltenen Wert in die Variable "Nummer des bearbeiteten Feldes".
Aus dem gleichen Grund lesen wir den neuen Wert direkt aus dem Textfeld mit dem B50-Block - "Get Parameter" (Elementbibliothek -> Ordner "Nextion HMI Panel" -> Ordner "Elements"). Einstellungen blockieren.



Wir wandeln den neuen Wert aus der Zeichenfolge mit dem B51-Block in eine Zahl im Float-Format um - "Zeichenfolgenkonvertierung" (Elementbibliothek, Ordner "Typkonvertierung"). Einstellungen blockieren.



Wir multiplizieren die Zahl mit 10 mit Block B52 - "MUL (*)" (Elementbibliothek, Ordner "Mathematik"), ändern den Typ in Integer mit Block B53 - "Float in Integer konvertieren" (Elementbibliothek, Ordner "Type Conversion") und geben Sie die Variable "Neuer Wert" ein.

Board 10 - "Verarbeiten der Ergebnisse der Bearbeitung des Werts"



Mit dem B55 - Block "Comparator" (Elementbibliothek, Ordner "Comparison") bestimmen wir, welches Feld bearbeitet wurde, und schreiben je nach Ergebnis den Wert aus der Variablen "New Value" um den Impuls in der Variablen "End of Editing" in eine von zwei Variablen. in „Sollwert zum Ausschalten des Lüfters x10“ oder in „Sollwert zum Einschalten des Lüfters x10“. Aus dem gleichen Impuls heraus geben wir dem Panel den Befehl, mit Block B58 - „Zur Seite gehen“ (Elementbibliothek, Ordner „Nextion HMI Panel“ -> „Seite“) zur Steuerseite zu wechseln. Einstellungen blockieren.



Board 11 - „Schreiben von Einstellwerten in das Panel und EEProm“



Mit Block B59 - „Detektor zum Ändern der Nummer“ (Elementbibliothek, Ordner „Grundelemente“) ermitteln wir die Tatsache der Wertänderung durch die Variable „Fan On Setpoint x10“. Am Blockausgang wird zum Zeitpunkt der Änderung des Wertes am Eingang „Wert“ ein kurzer Impuls gebildet. Durch diesen Impuls wird der Wert in den nichtflüchtigen Speicher der Steuerung geschrieben. Dies kann mit Block B65 - „In EEPROM schreiben“ (Elementbibliothek, Ordner „EEPROM“) erfolgen. Der Block wird mit dem Blockeditor konfiguriert.



Bevor Sie eine Variable in das EEPROM schreiben, müssen Sie sie dort erstellen. Klicken Sie dazu im Blockeditor auf die Schaltfläche "Erstellen". Das Fenster zum Erstellen einer Variablen wird geöffnet.



Darin setzen wir den Namen der Variablen und ihren Typ. Nach dem Klicken auf die Schaltfläche Bereit wird der Block an diese Variable angehängt.



Durch ein Signal über eine sich ändernde Variable wird ihr Wert durch eine Konstante vom Typ Float gleich 10 geteilt, wobei der Block B61 - "DIV (/)" (Bibliothek von Elementen, Ordner "Mathematik") verwendet wird und mit Block B62 - "String-Konvertierung" in einen String umgewandelt wird. (Elementbibliothek, Ordner „Typkonvertierung“) und mit Block B63 - „Parameter einstellen“ (Elementbibliothek, Ordner „Nextion HMI Panel“ -> Ordner „Elemente“) an das Panel im entsprechenden Feld gesendet. Einstellungen für diesen Block.



Die Logik der Steuerung durch die Variable „Lüfter-Aus-Einstellung x10“ ist dieselbe. Die Blockeinstellungen sind wie folgt.

Block B65.



Block B68.



Jetzt stellen wir sicher, dass die Einstellungen zum Zeitpunkt des Starts der Steuerung aus dem EEPROM gelesen werden. Fügen Sie dazu ganz oben im Projekt eine neue Karte ein, damit zuerst die darauf befindliche Schaltung ausgeführt wird. Wählen Sie dazu den Vordergrund aus und klicken Sie auf die Schaltfläche „Karte vor die ausgewählte Karte einlegen“.



Nennen wir die neue Karte "Lesen der Einstellungen aus dem EEPROM". Karte

1.



Mit Block 72 - „Rtrig“ (Elementbibliothek, Ordner „Triggers“) erzeugen wir beim Einschalten des Controllers einen kurzen Impuls. Entsprechend diesem Impuls werden die aus dem nichtflüchtigen Speicher gelesenen Werte in den Variablen „Sollwert zum Einschalten des Lüfters x10“ und „Sollwert zum Ausschalten des Lüfters x10“ aufgezeichnet. Dies geschieht mit den Blöcken B71 und B73 - „Lesen aus dem EEPROM“ (Elementbibliothek, Ordner „EEPROM“). Blöcke werden mit dem Blockeditor parametriert.



Parameter von Block B71.



Die gelesene Variable wird im EEPROM durch Drücken der Taste "Auswählen" ausgewählt. Das Variablenauswahlfenster wird geöffnet.



Parameter von Block B73.



Nun, das letzte Board im Projekt. Karte

12. „



Lüftersteuerung “ Wenn die aktuelle Temperatur die Einstellung „Lüfter am Sollwert x10“ überschritten hat, wird dies von der B69-Vergleichseinheit erkannt und der Auslöser B70 auf Zustand 1 gesetzt. Wenn die Temperatur unter die Einstellung „Lüfter x10 vom Sollwert“ fällt, wird dies von Block B71 erkannt setzt den Trigger B70 auf den Zustand 0. Der Triggerzustand wird der dem Lüfter zugeordneten Ausgabeeinheit zugeführt.

Archiv mit Quellcodes von Projekten.

Video-Demo

Source: https://habr.com/ru/post/de392865/


All Articles