Codesys 3.5 + Runtimestop erkennen

Du kannst bei der Taskkonfiguration unter Systemereignisse Code unter gewissen Events ausführen, da gibts zum Beispiel StopDone.

Ist doch vollkommen egal für was? Er fragt danach dann wirds wohl einen Grund haben:confused:
 
Ich möchte im letzetn SPS Zyklus Aktualwerte in eine txt/csv Datei schreiben und diese dann bei RT start wiederherstellen
Das wird nicht funktionieren. Der Schreibbefehl dauert mehr als einen Zyklus und würde durch den Stopp gnadenlos abgewürgt werden.
Ich weiß nicht wie das native Codesys sich da verhält, aber wäre das nicht ein Fall für persistente oder retain Variablen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst bei der Taskkonfiguration unter Systemereignisse Code unter gewissen Events ausführen, da gibts zum Beispiel StopDone.

Ist doch vollkommen egal für was? Er fragt danach dann wirds wohl einen Grund haben:confused:
Nein eben nicht. Ich weiß jetzt nicht welche Möglichkeiten das Event StopDone hat, weil ich nicht mit nativem Codesys arbeite und ich Events in TwinCAT noch nicht gesehen/genutzt habe, aber wenn es nur einen Zyklus aufgerufen wird, dann kann der TE das nicht für seine Anwendung nutzen, daher die Frage.
 
Klar ganz einfach ich nutze die Events bei e!Cockpit und nativem Codesys öfters.
Einfach ne While Schleife (mit Abbruchbedingung) machen dann geht Dateien schreiben und Emails versenden kinderleicht
 
Das wird nicht funktionieren. Der Schreibbefehl dauert mehr als einen Zyklus und würde durch den Stopp gnadenlos abgewürgt werden.
Ich weiß nicht wie das native Codesys sich da verhält, aber wäre das nicht ein Fall für persistente oder retain Variablen.

Mein raspberry hat kein novram.
Meine remanenten Daten habe ich mit VAR PERSISTENT REATIN deklariert.
Das finktioniert auch wunderbar bei neustart des raspberry bzw der RT, für mein Verständniss wird dort auch im letzen / nach dem letzen SPS Zyklus die Datei mit den persistenten Daten vom System geschrieben.

Das hat natürlich den Nachteil dass bei Netzuas nicht gesichert werden kann.
Zudem habe ich auch das Problem dass sporadisch bei einem Onlinechange diese remanten Daten verloren gehen bzw irgendeinen Zustand annehmen....

Nun meine Idee diese Daten in einer CSC/txt Datei sichern. Zum einen z.b alle 15min für den Fall einens Netzausfall - das heisst ich verlier maxima 15min, zum anderen im letzen SPS Zyklus um z,b bei neustart wirklich "sauber" die letzen daten zu sichern.

in Twincat 2 gab es dazu noch einen Baustein "WritePersistentData". mit dem konnte man aus dem Anwenderprogramm heraus das sichern der persistenten Daten anstossen (in meinem Fall alle 15min). Bei codesys 3 gibt es diesen Baustein offensichtlich nicht.

Was ich nun möchte ist meine remanenten Daten eben alle 15min und bei RT stop über "FilweWrite" in eine CSV Datei retten und bei RT start wiederherstellen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Klar ganz einfach ich nutze die Events bei e!Cockpit und nativem Codesys öfters.
Einfach ne While Schleife (mit Abbruchbedingung) machen dann geht Dateien schreiben und Emails versenden kinderleicht
Das kann dann aber nur bei Ereignissen funktionieren wo die Zykluszeitüberwachung nicht mehr dazwischen funken kann.
 
Hallo Dumpfbacke

Der "Persistence Manager" ist genau das was du brauchst. Nimmt dir das Speichern(bei Änderung) und Laden mit etwas Konfiguration ab. Lässt sich unter Composer Module einfügen und ist kostenfrei für Raspi.

Holger
 
Zurück
Oben