Persiatent Retain beim Raspberry

Ralle

Super-Moderator , User des Jahres 2006-2007
Teammitglied
Beiträge
15.571
Reaktionspunkte
4.211
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich gebe zwar eine Variable als persistent retain an, beim Neustart des Systems hat diese jedoch immer wieder den Defaultwert.
Geht das überhaupt oder mache ich was falsch?

VAR PERSISTENT RETAIN
lrTime: LREAL := 50;
END_VAR

Ich teste das im Beispiel webvisu und habe den Code ein klein wenig modifiziert:

IF xEnable THEN
lrSpeed := 120 + 60 * SIN(lr);
lr := lr + lrTime/200;

Flash(ENABLE:=TRUE , TIMELOW:=T#700MS , TIMEHIGH:=T#1S , OUT=> );
LED := (lrSpeed > 120);
END_IF
 
Ah, es geht, war doch mein Fehler.
Man muß den PI schon ordentlich runterfahren, dann klappt das. Nur Spannung weg reicht nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

gibt es auch eine Lösung für das Speichern (Zählerstände, Laufzeiten usw.) wenn man einfach die Spannung abzieht??

Beim sicheren Herunterfahren klappt das Speichern, das kann ich bestätigen.

Oder kann man irgendwo einen "SAVE" Befehl abschicken??

(Ich nutze Codesys 3.5 SP9 und ein Raspberry Pi 3)
 
Hi,
hab es schon öfters geschrieben wenn du die "VAR PERSISTENT RETAIN" verwenden willst mit dem Pi und eine zuverlässige Lösung haben willst
dann ist eine USV ein muss.
Das macht ja den Pi dann auch so generell robuster gegen "SD Karte geht korrupt, weil man einfach ausschaltet" oder die Spannung weg geht.

Klar gibt es immer so halb zuverlässige alternativen.. als da wären:

1.Ich speichere mir diese Retains selber weg in der Applikation über CmpApp (sind halt nie wirklich letzter Stand sondern einfach dann wenn ich das speichern auslöse - also nicht wirklich retains)
2. Ich speichere mir werte über Sysfile - oder Inifile schreiber aus dem Store die variablen.. das sind dann so was wie Applikationsparameter die eben beim Laden den Projekts wieder restauriert werden
3. PersistenzManager des Application Composers - damit kann zyklisch oder auf Änderung variablen speichern (hier muss man für jede einzelne Variable sehr genau überlegen ob zyklilsch oder auf Änderung speichern und wenn zyklisch welche Zeit Sinn macht!!! Sonst SD karte auch tot schreib ;-) )
Achtung:
bei all den drei Möglichkeiten hat man auf dem PI das Problem das wenn während des schreibens die Spannung weg geht:
1. das File nicht korrekt geschrieben ist
2. wenn des blöd läuft der Pi nicht mehr startet weil SD karte korrupt dadurch wurde.

So das ist die Ganze Story ;-)

Grüße
 
Zuletzt bearbeitet:
Hi,

nochmals danke für die ausführliche Erläuterung.

Eine Lösung für mich wäre somit die Geschichte mit der USV... Da sollte dann einfach ein Akkupack (zum Handy aufladen) ausreichen, denke ich...

Nun noch zu den halb zuverlässigen Alternativen...

Punkt 1... Wie genau funktioniert das mit CmpApp?? Es wäre für meine Anwendung ausreichend, wenn ich alle paar Minuten die Variablen wegspeichern könnte.

Grüße
 
Hallo,

zu CmpApp gibt's ein Beispiel hier:
http://store.codesys.com/application-manager.html
am besten diese CODESYS Store Beispiele immer über den Einkaufwagen in CODESYS installieren dann bekommt man auch eine Meldung wenn es neue Versionen/Updates gibt (im PackagaeManager auf Updates prüfen) und
kann bequem aktualisieren.

In diesem Beispiel ist das speichern der Retains im AppRetain PRG.

Aber wie schon geschrieben... das über ne USV zu machen ist meiner Meinung nach die korrekte Lösung.
Es gibt zum Beispiel hier: http://forum.codesys.com/viewtopic.php?f=23&t=5872 eine Bibliothek einer CODESYS PI Users zu ner USV UPSPico http://forum.codesys.com/viewtopic.php?f=23&t=5872&p=10867#p13721
Klar aber es gibt auch unzählig andere USV's. Dazu muss generell nichts in CODESYS implementiert werden, es muss einfach ein Linux shutdown getriggert werden.

Grüße
 

Anhänge

  • StoreExamplesInstall.jpg
    StoreExamplesInstall.jpg
    225,3 KB · Aufrufe: 83
Zuletzt bearbeitet:
Zurück
Oben