# Taskkonfiguration-Systemereignisse-Event-Handler hinzufügen



## Termi (4 März 2021)

Hallo zusammen,
ich habe ein kleines Problem:
Ich möchte beim Download oder beim OnlineChange meine persistenten Variablenwerte auf SD speichern. Im Programm klappt das mit 
" SysPlcCtrl23.SysSaveRetains(stFileName:='/media/sd/Persist_Vars.ret'); "  ohne Probleme. 

Gehe ich jetzt auf Taskkonfiguration-Systemereignisse-Event-Handler hinzufügen und füge die Zeile ein ( bei PrepareDownload oder PrepareOnlineChange) kommt die Fehlermeldung 

C0044 Eingangszuweisung für Parameter '_PrepareOnlineChange1' in Aufruf von 'Save_Persist' (so heißt mein Programm) fehlt.

Ich habe im Moment keine Idee an was es liegen könnte. Weiß einer weiter ?

Gruß

Termi


----------



## holgermaik (4 März 2021)

Du kannst einem Event kein bestehendes Programm zuweisen. Vergib beim Hinzufügen einen neuen Namen und rufe darin dein Programm auf.
Beachte deine Funktion die du aufrufst muss in einem Zyklus abgearbeitet sein. Eventuell ist es bessere eine Freigabevariable zu setzen und dein Programm Zyklisch auszuführen.


----------



## Termi (5 März 2021)

Hallo,
gibt es dafür Beispiele oder weiterführende Hinweise? Woher weißt Du das mit dem Zyklus?  
Die Hilfe F1 ist wie so oft beim e! nicht wirklich hilfreich.


----------



## holgermaik (5 März 2021)

Um bei deinem Beispiel "PrepareOnlineChange" zu bleiben.
der Code im Eventaufruf wird abgearbeitet. Kehrt der Aufruf zurück wird OnlineChange durchgeführt.
Bedeutet Konkret: Dein Schreiben auf die SD Karte wird nicht funktionieren.

Die Frage ist Warum du deine Persistent Daten sichern möchtest.
1. Deine Variablennamen & Anordnung hat sich nicht geändert
Vor Start des Controllers werden die Variablenwerte zugeordnet (Bleiben also erhalten)
2. Deine Variablennamen, Anordnung oder Speichergröße wurde geändert
in diesem Fall wird die gesamte Variablenliste initialisiert. Ein zurücklesen der gespeicherten Datei ist nicht möglich / sinnvoll.

Eine Möglichkeit während der Inbetriebnahme
Die Variablenliste in e!Cockpit als Rezept exportieren. Aber auch hier ist eine händische Zuordnung bei Änderung notwendig.


----------



## Termi (5 März 2021)

ich hätte da noch eine Variante: 
ich habe einen Entwicklungs-Controller auf dem etwa im wöchentlichem Rythmus die Programme wechseln und geschrieben/erweitert/getestet werden. Zu jedem dieser Programme gehört ein Persist-Bereich der ca. 100-200 Variable umfasst, z.B. Lüftungs-, Heizkreis- oder Rollladenparameter etc. Lade ich jetzt eines dieser Programmteile, so soll auch der letzte Stand der dazugehörigen Persist-Variablen automatisch wieder mitgeladen werden. Ebenso soll bei einem Download (vom alles Bereinigen) alles vorher gesichert werden. Klar kann ich das manuell machen (was ich bisher auch mache), aber ich habe mir gedacht, das kann auch automatisch laufen, zudem ich ab und zu das Sichern schlicht vergresse, oder ich lade ein anderes Programm und habe sofort die Parameter an Bord. Natürlich kann man die auch im Quellcode eintragen, aber da sind sie statisch, aber das führt am Thema vorbei. 

Termi


----------



## KLM (5 März 2021)

Moin, warum verwendest Du nicht Rezepturen? Die liegen automatisch als Datei auf dem Dateisystem und überleben jeden Download. Im Programm lädst Du dann Rezeptur, die zum jeweiligen Projekt gehört. Wenn die Variablen in der Rezeptur auch Retain sind, brauchst Du Dich auch nicht um den Neustart kümmern. Und per Excel bearbeiten kannst Du sie auch noch. Es können sogar nicht 100%-ig passende Rezepturen geladen werden (Checkbox nicht vergessen), also Rezeptdateien mit mehr oder weniger Variablen, als in der Rezeptur, was bei den Retain-Binärdateien immer ein Problem ist.


----------



## Termi (5 März 2021)

ganz einfach: habe ich noch nicht gemacht :wink:

Termi


----------



## KLM (5 März 2021)

Dann mach mal! Seit dem ich die kenne verwende ich keine Retain-Binärdateien mehr. Das ist so viel bequemer.


----------



## Termi (5 März 2021)

Du könntest mir viel Lebenszeit für andere Dinge geben, wenn Du mir eine stichpunktartige Anleitung oder etwas Quellcode zur Verfügung stellen könntest. :wink:


----------



## KLM (5 März 2021)

Ist kein Hexenwerk, aber ja, muss man mal gesehen haben. Bin am Privatrechner, aber wenn der Gedanke das Wochenende überlebt, stell ich nächste Woche eines hier ein. Sonst schau doch mal im 3S Store, da ist glaube ich auch eines.


----------

