Ankündigung

Einklappen
Keine Ankündigung bisher.

Flash-Speicher

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Flash-Speicher

    Hallo,

    vor einiger Zeit hatte ich schon mal die Effekte das die Speicherung im Flash-Speicher nach Shutdown nicht so zuverlässig ist. Dann habe ich einiges ausgemistet und charts ganz heraus geworfen.

    Jetzt habe ich mich mal wieder dran gesetzt und habe ähnliche Probleme.

    Code:
    if htime(1,00,0) or SHUTDOWN then {
        writeflashvar (..
    Das mit htime habe ich analog dem Handbuch mal ergänzt.

    Sind so ca. 120 Variablen, vieles aber b01 oder u08, nicht viele Strings. Im Handbuch steht was von 1000.

    Habe EibPC 1 und EibStudio 4.039 und Firmware 4.015 => denke neuere Versionen wird es nicht mehr geben für den EibPC1.
    EibPC habe ich gestern mal ganz neu gestartet (unter Projekteinstellungen und EibPC neu starten), normalerweise nehme ich nur F3 wenn ich was am Programm geändert habe zum übertragen.

    Fehler:
    Erstens sehe ich es in der Visu => ich ändere eine Variable und mache Neustart. Variable steht dann gestern sehr häufig einfach auf dem Initialwert aus dem Programm.

    Unter Projekteinstellungen/Dateien => kann ich die Variablen und Timebuffer ja einsehen. Da wurde eine neue zu speichernde Variable nach 2-3 Neustarts einfach nicht neu angelegt und die von mir kontrollierte Variable hatte noch ein älteres Datum. Nach einigen Neustarts war die neue Variable dann auch in der Liste.

    Frage(n):
    Sollten die Variablen beim Shutdown immer abgespeichert werden oder nur wenn der Wert sich geändert hat?
    Nicht mehr benötigte Variablen habe ich jetzt gelöscht, waren aber nicht so viele.
    Ich kann die Variablen ja herunterladen. Womit kann ich die öffnen um den Wert zu sehen?

    Ich denke ich lösche jetzt mal alle Variablen und schaue mal wie viele abgespeichert werden.

    Shutdown steht auf 30 Sekunden, also dem Maximum. Durchschnittliche CPU-Auslastung steht auf 47%.

    Gruß und noch allen hoffentlich ein paar erholsame Tage

    Ralf
    Zuletzt geändert von Ralf74; 08.01.2021, 21:47.

    #2
    Hallo,

    Problem nur bei mir so?

    Um eine Frage von mir zu beantworten: alle Variablen werden beim SHUTDOWN neu abgespeichert, also nicht nur die bei denen sich der Zustand geändert hat.

    Ich habe folgendes ausprobiert:
    Alle Variablen im Flashspeicher gelöscht => Variablen werden neu angelegt und das innerhalb von 2 Sekunden => kein Timingproblem innerhlab des Shutdows (SHUTDOWN steht bei mir auf 30 Sekunden).
    Trotzdem fehlen einfach einige und werden nicht abgepeichert und sind somit bei Neustart auf dem Initialwert meines Programms :-(

    Dann habe ich einfach mal 50% auskommentiert unter WRITEFLASHVAR und READFLASHVAR und siehe da => die vorher fehlenden waren angelegt und wurden auch korrekt geladen und VISU passt dann wieder. Daher für mich kein Fehler in meinem Programm.

    Dann hatte ich folgende Idee:
    Nach ca. der Hälfte der "WRITEFLASHVAR-Abteilung" habe ich folgende gemacht und gehofft damit wird nach 5 Sekunden Pause weiter abgespeichert:

    Code:
    if (delay(SHUTDOWN,5000u64)) then {
    writeflashvar (...
    Hat nicht geholfen, im Zeitstempel der Variablen sehe ich auch keine 5 Sekunden Differenz. Macht also nicht das was ich dachte.
    Dann habe ich mal alle Variablen für das abspeichern alphabetisch geordnet und dann verglichen.
    Flash alle Variablen gelöscht und 2 mal einen Neustart gemacht und kontrolliert:
    - beim ersten Lauf fehlten die letzten 17
    - beim zweiten Lauf fehlten die gleichen letzten 17

    D. h. er speichert beim Shutdown exakt 100 Variablen ab. Ist das eine feste Grenze? Das ist irgendwie so eine runde Zahl

    Was ich mir da so zusammen geschrieben habe über die letzten 5 oder mehr Jahre ist programmiertechnisch sicherlich Müll (bin nicht vom Fach) und ich werde es mal bereinigen, dann brauche ich sicherlich weniger Variablen.

    Aber so richtig zufriedenstellend ist das nicht - hat mich jetzt viele Stunden gekostet (auch früher schon paar mal als immer wieder seltsame Fehler da waren).

    Gruß Ralf


    Kommentar


      #3
      Moin,

      Zitat von Ralf74 Beitrag anzeigen
      D. h. er speichert beim Shutdown exakt 100 Variablen ab. Ist das eine feste Grenze? Das ist irgendwie so eine runde Zahl
      ich hatte anfangs auch ein kleines Problem mit den gespeicherten Variablen. Hast du den Wert unter Projekteinstelungen -> IDs entsprechend hochgestellt? daran lag es bei mir (nutze aber den EibPC²)...
      2020-12-31 15_39_44-Window.png

      Kommentar


        #4
        Hallo,

        leider nein, sah bei mir so aus wie im Anhang (stand auf 200). Eigentlich ist Timebuffer ID was anderes, aber die "100"war dann doch zu verlockend. Daher habe ich Speicherplatz ID auf 500 erhöht und Timebuffer ID auf 200 => nach 2 mal Neustart und löschen aller Daten bleibt es bei der Grenze von 100. Einerseits gut, andererseits hilft es mir nicht.
        Danke für den Tipp.

        Gruß Ralf

        Angehängte Dateien

        Kommentar


          #5
          Hi,

          letzter Test für 2020.

          130 simple Variablen erzeugt und sie alle beim Shutdown speichern lassen => bei 100 ist Schluss. Wahrscheinlich steht es irgendwo im Handbuch...

          Code:
          a001 = 1b01;
          a002 = 1b01;
          a003 = 1b01;
          a004 = 1b01;
          a005 = 1b01;
          a006 = 1b01;
          a007 = 1b01;
          a008 = 1b01;
          a009 = 1b01;
          a010 = 1b01;
          ...
          
          if SHUTDOWN then {
          writeflashvar (a001);
          writeflashvar (a002);
          ...

          Kommentar


            #6
            Ich meine mich zu erinnern, dass die Warteschlange für das Speichern begrenzt wurde. Beim EibPC² sollte das nicht mehr der Fall sein
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Hallo energetus,

              wird dann wohl so sein mit den 100. Jetzt kann man ja shutdown auf 30 Sekungen verlängern, da ist die Begrenzung ja eigentlich nicht mehr notwendig (die 100 sind in 2 Sekunden geschrieben).

              EibPC² hilft mir da zur Zeit wenig als Lösung.

              Habe es jetzt so geändert das einige Variablen halt bei einem change gespeichert werden. Ich dachte halt je weniger geschrieben wird desto besser (so wegen Haltbarkeit und somit Datensicherheit des Flashs).

              Gruß Ralf

              Kommentar


                #8
                Zitat von Ralf74 Beitrag anzeigen
                Habe es jetzt so geändert das einige Variablen halt bei einem change gespeichert werden
                ggf. Bitvariablen in Sammelvariablen zusammenfassen und diese abspeichern? Das könnte eine Lösung sein.
                Eine Variable 16, 32 oder 64 bit, die einzelnen Stellen via Bitmanipulation beim Shutdown setzen und beim Start zurücklesen, kann ich gerne ein Beispiel für schreiben.

                Kommentar


                  #9
                  Hi,

                  die empirisch ermittelte Grenze von 100 stimmt für den EibPC1 (EibPC2: 60000).
                  Danach wird mit jeder vollen Minute wieder ein Schreibzugriff zugelassen.

                  Kommentar


                    #10
                    Hi,

                    danke für die Info. Dann ist der EibPC² also 600 mal besser, Respekt

                    Gruß Ralf

                    Kommentar


                      #11
                      Mindestens

                      Kommentar


                        #12
                        Eben, du musst bedenken der EibPC 1 ist so alt wie das iPhone 1. Das iPhone 12 ist vermutlich auch um einiges besser...
                        offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                        Enertex Produkte kaufen

                        Kommentar


                          #13
                          Hallo, ich versuche auch die Flashfunktion für eine Handvoll Variablen zu nutzen (EibPC1). Funktioniert nicht.

                          Irgendeine Idee?

                          if SHUTDOWN then {
                          writeflashvar(Heizbetrieb);
                          writeflashvar(TWWbetrieb);
                          writeflashvar(Brennerstarts);
                          writeflashvar(AnswerLampHour);
                          writeflashvar(YamahaStatusVisu);
                          writeflashvar(Zaehlerstand_letzter_Monat);
                          writeflashvar(Zaehlerstand_vorletzter_Monat);
                          writeflashvar(Zaehlerstand_Einspeisung_letzter_Mon at)
                          }endif
                          if systemstart() then {
                          readflashvar(Heizbetrieb);
                          readflashvar(TWWbetrieb);
                          readflashvar(Brennerstarts);
                          readflashvar(AnswerLampHour);
                          readflashvar(YamahaStatusVisu);
                          readflashvar(Zaehlerstand_letzter_Monat);
                          readflashvar(Zaehlerstand_vorletzter_Monat);
                          readflashvar(Zaehlerstand_Einspeisung_letzter_Mona t)
                          }endif

                          Kommentar


                            #14
                            Hast du im EibStudio das Setzten der SHUTDOWN-Variablen aktiviert? (Projekteinstellungen -> EibPC)

                            Kommentar


                              #15
                              das war der Trick, Danke

                              Kommentar

                              Lädt...
                              X