Frage:
Können einzelne Werte aus Anwendercodestellen (Codestellenbereich ab C3000) netzausfallsicher abgespeichert werden, ohne jedesmal das entsprechende Kommando C0002 = 1 ('Startparameter speichern') zu geben?
Answer:
Ja, wenn der Wert über eine Anwendercodestelle vorgegeben wird. Eine FB-Verschaltung muss wie folgt ergänzt werden:
1. Deklarieren Sie eine neue RETAIN-Variable vom selben Datentyp wie die Anwendercodestelle, dessen Wert netzausfallsicher abgespeichert werden soll (im unten dargestellten Beispiel ist dies die Variable
dnRetainStartValue). Fügen Sie diese Variable je einmal als Fähnchen mit einem Ausgang und einmal mit Fähnchen als Eingang im FB-Editor ein.
2. Fügen Sie die Anwendercodestelle je einmal als Fähnchen mit einem Ausgang und einmal mit Fähnchen als Eingang im FB-Editor ein (im unten dargestellten Beispiel ist dies die Codestelle C3000).
3. Fügen Sie einen Funktionsblock
L_TbTransition ein und rufen Sie diesen ganz am Anfang der Abarbeitungsreihenfolge auf (Platz 1 in der Abarbeitungstabelle). Wählen Sie die positive Flankenauswertung. Die Impulsdauer muss auf 1[ms] gesetzt werden. Den Eingang des Flankenauswerters verbinden Sie mit einem statischen TRUE-Pegel (
bTRUE_b =>
L_TbTransition.bIn). Der Funktionsblock
L_TbTransition gibt auf diese Weise einen TRUE-Pegel nur während des ersten Taskdurchlaufs aus.
4. Fügen Sie außerdem einen Funktionsblock
L_TbSelect ein und verbinden Sie diesen wie unten dargestellt.
L_TbSelect sorgt für die korrekte Wiederherstellung des Wertes in der Anwendercodestelle im ersten Taskdurchlauf nach Netz-Ein.
Hinweis:
Wenn dieses Verfahren mehrfach eingesetzt wird, sollte ein Speichermodul MM330 verwendet werden, da dieses einen ausreichend großen RETAIN-Speicher bietet.
