ESP8266 + FLProg - Benutzersystemparameter und Synchronisation mit dem genauen Zeitserver



In dieser Lektion untersuchen wir die Verwendung benutzerdefinierter Systemvariablen zum Verknüpfen der webbasierten Konfigurationsoberfläche und des Projektdesigns. Wir versuchen auch, die Synchronisation der Systemuhr des Controllers mit den genauen Zeitservern zu konfigurieren.

Diese Lektion wurde für Version 3.1.4 erstellt, die sich derzeit im Pre-Release-Test befindet. Sie können es hier herunterladen. Weitere Informationen zum FLProg-Projekt finden Sie im Blog des Unternehmens im Hub , auf der Projektwebsite und im Forum . Darüber hinaus können Sie auf dem ArduinoProm- Kanal eine Vielzahl von Videolektionen ansehen.

Wir werden das in der letzten Lektion erstellte Projekt als Grundlage verwenden.

Zunächst erstellen wir drei Systembenutzerparameter, in denen die aktuelle Systemzeit des Controllers, die Zeitzone und die Adresse des genauen Zeitservers, mit dem wir synchronisiert werden, gespeichert werden. Zu diesem Zweck finden wir den Zweig „ Parameter hinzufügen “ in der Projektstruktur im Knoten „ Benutzerparameter “.



Das Dialogfeld zum Hinzufügen eines neuen Systemparameters wird geöffnet. Füllen Sie es aus.



Geben Sie im Feld " Name " den Namen des Parameters ein. Wählen wir den Parametertyp - " String ". Der Wert dieses Parameters ändert sich während des Betriebs dynamisch. Daher deaktivieren wir das Speichern des Parameterwerts im EEPROM. Daher legen wir keinen Standardwert fest. Die maximale Zeilenlänge beträgt 20 (die Ausgabe erfolgt in der Form 01:01:01 01-01-2018, d. H. 19 Zeichen).

Fügen Sie den zweiten Parameter auf die gleiche Weise hinzu.



Belassen Sie die Speicherung einfach im EEPROM, damit sich der Controller an den von uns eingegebenen Server erinnert, und legen Sie den Server standardmäßig fest.

Erstellen Sie abschließend den dritten Parameter, den Zeitzonenwert, für die korrekte Anzeige der Zeit.



Integer- Parametertyp, Stellen Sie sicher, dass Sie den Standardwert Ihrer Wahl im EEPROM speichern (ich habe 4 Stunden Zeit).

Als Ergebnis haben wir drei Benutzerparameter erhalten



Wir gehen zum Firmware-Schema über.

In der Bibliothek der Funktionsblöcke finden wir den Block „ Zeit von einem NTP-Server abrufen “ und ziehen ihn in den Arbeitsbereich der Schaltung



Ein Doppelklick auf diesen Block öffnet den Blockparameter-Editor.



Lassen Sie uns die Einstellungen genauer betrachten.
NTP-Server - Die Serveradresse, von der die genaue Zeit genommen wird. Es kann als Konstante eingestellt werden. Sie können aus einer Liste von Standardprogrammen auswählen. Ich habe alles überprüft - sie funktionieren. Klicken Sie zur Auswahl auf die Schaltfläche „ Standardserver “.



Da wir jedoch die Serveradresse " von einem Erwachsenen " über die Weboberfläche festlegen möchten , aktivieren Sie das Kontrollkästchen " Anmelden ".

Der Zeitraum der Anforderung vor dem Empfang der ersten Antwort ist die Häufigkeit, mit der der Controller auf dem Server „ klopft “, bis er zum ersten Mal Zeit empfängt. Wir hinterlassen alle 30 Sekunden einen konstanten Wert. Es ist auch möglich, die Eingabe festzulegen, dann muss ein Wert in Millisekunden darauf angewendet werden.

Der Zeitraum der Anforderung nach Erhalt der ersten Antwort gibt an, wie oft der Controller die Uhrzeit auf dem Server überprüft. Wir fahren standardmäßig alle halbe Stunde ab. Sie können die Eingabe auch in Millisekunden vornehmen.

Zeitzone - Da der Server die Zeit in GMT angibt, legt dieser Parameter den Zeitzonenversatz in Stunden fest. Wir haben uns entschlossen, diesen Parameter über die Weboberfläche festzulegen, und das Kontrollkästchen " Login " aktiviert.

Beenden Sie "Jahr" , Beenden Sie "Monat" , Beenden Sie "Tag" , Beenden Sie "Stunde" , Beenden Sie "Minute" , Beenden Sie "Sekunde" - wir brauchen sie in dieser Lektion nicht, also aktivieren wir die Kontrollkästchen nicht.

"Unix Time" -Ausgabe - wir brauchen diese Ausgabe nicht, wir setzen kein Häkchen (um ehrlich zu sein, ich habe noch keinen User Case dafür erfunden. Aber nur für den Fall, dass ich es getan habe, ist es für jemanden nützlich).

Insgesamt haben wir so eine Blockeinstellung



Dementsprechend hat sich auch der Block im Firmware-Schema geändert.



Suchen Sie den Block „ Systemparameter lesen “ in der Bibliothek und ziehen Sie ihn in das Diagramm.



Doppelklicken Sie auf diesen Block und beginnen Sie mit der Konfiguration seiner Parameter.

Drücken Sie zuerst die Systemparameter-Auswahltaste.



Ein Fenster zur Auswahl eines Systemparameters wird geöffnet. Wählen Sie den Parameter " Zeitserver "



Damit ist die Blockkonfiguration abgeschlossen.

Wir platzieren die Blöcke bequem und verbinden den Ausgang des Blocks " Systemparameter lesen " mit dem Eingang " Server " des Blocks " Empfangszeit vom NTP-Server "



Ziehen Sie einen weiteren Block „ Systemparameter lesen “ auf das Diagramm und konfigurieren Sie ihn so, dass er den Parameter „ Zeitzone “ liest.



Wir verbinden den Ausgang dieses Blocks mit dem Eingang " TimeZone " des Blocks " Empfangszeit vom NTP-Server "



Fügen Sie der Schaltung eine neue Karte hinzu. Klicken Sie dazu auf die Schaltfläche „ Board hinzufügen



Wir schalten das erste Board aus, wir werden es nicht mehr brauchen. Klicken Sie dazu auf den Pfeil in der Kopfzeile der ersten Karte.



Wir ziehen den Block " Empfangen von Daten von der genauen Zeituhr " auf der Schaltung auf der zweiten Karte heraus



Doppelklicken Sie darauf, um den Blockeinstellungsdialog aufzurufen. Durch Drücken der Taste „ Neu “ rufen wir den Uhrauswahldialog auf und wählen „ Reglersystemuhr “.





Dann setzen wir ein Häkchen " Ausgabe" Uhr "



Und wir beenden die Bearbeitung des Blocks.

Dann kopieren wir diesen Block noch fünf Mal und ordnen in den Einstellungen jedes Blocks ein Häkchen für den Ausgang in der Reihenfolge Minute - Sekunde - Tag - Monat - Jahr .



Jetzt ziehen wir den Block " String Conversion " aus der Bibliothek in das Diagramm.



Wählen Sie in seinen Einstellungen den Konvertierungstyp " Zeit ".



Wir kopieren den Block noch fünf Mal und sammeln das Schema



Übertragen Sie aus der Bibliothek den Block „ Hinzufügen von Zeilen “ in das Diagramm.



In den Blockeinstellungen setzen wir 11 Eingänge.



Und wir verbinden die Blöcke nach dem Schema



An den freien Eingängen des Blocks setzen wir die Konstanten

Eingang 2 - ":"
Eingabe 4 - ":"
Eingabe 6 - Leerzeichen
Eingang 8 - "-"
Eingabe 10 - "-"

Um eine Konstante festzulegen, klicken Sie mit der rechten Maustaste auf eine freie Eingabe und wählen Sie im Dropdown-Menü die Option „ Konstante einfügen “.



Das Konstanten-Eingabefenster wird geöffnet, in dem im Feld „ Standardwert “ die gewünschte Konstante eingegeben wird



Nun nehmen wir den Block „ Aufzeichnen eines Systemparameters “ aus der Bibliothek auf die Schaltung



Deaktivieren Sie in den Blockeinstellungen das Kontrollkästchen " Eingabe der Berechtigung aufzeichnen" und wählen Sie den Parameter " Datum - Uhrzeit "



Wir verbinden den Ausgang des Blocks „ Line Addition “ mit dem Eingang des Blocks „ System Parameter Record



Infolgedessen sollten wir ein solches Schema erhalten (aus Gründen der Klarheit das erste Board bereitstellen).



Nach Abschluss des Firmware-Schemas kehren wir zum Projektbaum zurück.

Wir werden der Hauptseite der Weboberfläche drei Parameter hinzufügen (siehe dazu in der vorherigen Lektion ).

Parameter 1 - Systemparameter " Datum - Uhrzeit ", Parametertyp - " Text ", Bezeichnung - " Uhrzeit "

Parameter 2 - Systemparameter " Exakter Zeitserver ", Parametertyp - " Eingabefeld ", Bezeichnung - " Server "

Parameter 3 - Systemparameter „ Zeitzone “, Parametertyp - „ Eingabefeld “, Bezeichnung - „ Zeitzone



Aktivieren Sie die Schaltfläche " Speichern " auf der Seite



Gießen Sie das Programm in den Controller und sehen Sie, was auf der Hauptseite passiert ist (wie das geht, siehe vorherige Lektion )

Unmittelbar nach dem Verbinden ist der Zeitserver noch nicht synchronisiert



Nach einer Minute (Seite aktualisieren) ist die Synchronisation abgeschlossen



Ändern Sie die Zeitzone und klicken Sie auf Speichern



Das in der Lektion erstellte Projekt kann hier heruntergeladen werden .

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


All Articles