UPS PIco, Variablen persistent abspeichern

Minder
2016-02-07
2016-02-21
  • Minder - 2016-02-07

    Hallo zusammen,
    ich versuche schon seit einiger Zeit, Variablen auf dem Raspi persistent zu speichern.

    Irgendwo habe ich gelesen, dass man dazu eine UPS braucht. Habe nun eine UPS PIco gekauft uns soweit eingerichtet. Ein persistentes Speichern von Variablen bringe ich aber nicht hin...

    Irgendwo habe ich auch gelesen, dass dazu ein "graceful Shutdown" nötig ist.
    Was heisst denn das? Ich fahre mein Raspi momentan mit dem Kommando "sudo shutdown -h now"
    herunter.

    Zum testen habe ich mir eine Globale Variablen-Liste gemacht:
    VAR_GLOBAL RETAIN PERSISTENT
    gtest:INT;
    END_VAR

    Wie schon gesagt, ich bringe es nicht fertig den Wert von "gtest" persistent zu speichern.

    Kann mir jemand helfen? Was mache ich falsch?

    Lg Minder

     
  • eschwellinger

    eschwellinger - 2016-02-08

    Hi,

    das muss so gehen!
    Bitte prüfe ob bei deinem Shutdown über die USV beim nächsten Starte eine Application.ret (das ist das abgespeicherte Retainfile und liegt im /root/ )
    vorhanden ist.

    Wenn du ne USV hast musst ja eigentlich da keinen shutdown -h manuell machen(vielleicht verstehe ich dich ja auch falsch)?
    Naja egal "graceful shutdown" - heißt einfach du brauchst einen Linux shudown wo auch die SPS Runtime korrekt beendet wird.
    Die Retains werden beim beenden der SPS Runtime gespeichert und dazu muss die eben richtig beendet werden.
    Beim nächsten Start wird dann das Retain File wieder gelesen und damit hast du deine Werte wieder vor dem shutdown.

    Du kannst auch noch prüfen was im /etc/CODESYSCOntrol.cfg eingestellt ist hier:
    Sollte aufjedenall auf nicht initialisieren stehen... falls Retains nicht zu Projekt passen.
    [CmpApp]
    Bootproject.RetainMismatch.Init=0

    Grüße
    Edwin

     
  • Minder - 2016-02-14

    Hallo Edwin,
    danke für die rasche Antwort.
    Habe nun folgendes beobachtet. Das Abspeichern und Laden der Retains funktioniert genau einmal, nämlich nachdem ich das Projekt neu auf den Raspi geladen habe.

    Im Application.ret stehen irgendwelche Zeichen "P^@^@^".

    Bootproject.RetainMismatch.Init=0 oder Bootproject.RetainMismatch.Init=1 hat auf das Verhalten kein Einfluss, ändert sich auch nicht.

    Hast du mir sonst noch einen Tipp?

    Grüsse Michael

     
  • eschwellinger

    eschwellinger - 2016-02-18

    Hi,

    ich habe es ohne die USV getestet, die Funktion muss aber die selbe sein.

    Ablauf:
    1) Projekt mit Retains Persistent auf den Pi laden
    2) über consolte einen sudo reboot ausführen
    3) wenn die Pi wieder oben und man sich mit CODESYS einloggt -> retains immmer noch da...
    das kann man so oft machen wie man will

    Macht die PIcoUSV was besonderes?
    Wir brauchen einfach einen geregelten Linux shutdown wo dann auch die SPS Runtime geregelt beendet wird.
    Wenn das gegeben ist funktionieren die Retains.

    Grüße
    Edwin

     
  • Minder - 2016-02-21

    Hallo,
    versuche es nun auch nur mit Reboot. Das Verhalten ist das Selbe.

    Ablauf:
    1) Projekt mit Retains Persistent auf den Pi laden.
    2) Persistent Retains über Webvisu ändern.
    3) Über WebVisu sudo reboot ausführen.
    4) Persistent Retains wurden gespeichert und korrekt wieder geladen.
    5) Persistent Retains über Webvisu erneut ändern.
    6) Über WebVisu sudo reboot ausführen.
    7) Alte Persisten Retains werden wieder geladen, von Schritt 3.

    Verstehe ich da was falsch mit der Dekleration der Variablen? Momentan habe ich sie in einer "PersistentVars"-Liste deklariert. "VAR_GLOBAL PERSISTENT RETAIN"

    Ich möchte die Variablen über die Webvisu anpassen, Raspi neustarten, die Variablen sollen noch den eingestellten Wert haben.

    Grüsse Michael

     

Log in to post a comment.