-> Hier kostenlos registrieren
Hi,
folgendes Problem (TC2):
Habe alle PERSISTENT Variablen in einem Array. Dieses speichere ich bei Änderung eines Wertes (memcmp) über den Baustein FB_WritePersistentData gezielt ab.
Über die Bootflags aus TypeSysteminfotype (bit4) sehe ich das die PERSISTENT Variablen nach RESET korrekt geladen wurden. Soweit so gut.
Wie verwende ich nun die Variablen korrekt, so dass sie nach dem Start des Systems wieder zur Verfügung stehen. Leider funktioniert folgender Ansatz nicht korrekt:
Ich ändere zum Beispiel BOOL Variablen über einen Taster. Hierzu habe ich einen FB "Toggel" implementiert. Dieser soll im ersten Zyklus den Wert der Persisten Variable (pre_load) auf sich selbst schreiben.
Nachfolgend soll bei Tastendruck dann der Wert toggel
IF NOT init THEN
init := TRUE:
out := pre_load;
ELSE
IF in:= TRUE AND alt_in = FALSE THEN (* Flanke *)
out:= NOT out;
END_IF
alt_in := in;
END_IF
Diesen verwende ich wie folgt:

Was mache ich falsch, bzw. wie machts man richtig ? ;-)
Danke
Klaus
folgendes Problem (TC2):
Habe alle PERSISTENT Variablen in einem Array. Dieses speichere ich bei Änderung eines Wertes (memcmp) über den Baustein FB_WritePersistentData gezielt ab.
Über die Bootflags aus TypeSysteminfotype (bit4) sehe ich das die PERSISTENT Variablen nach RESET korrekt geladen wurden. Soweit so gut.
Wie verwende ich nun die Variablen korrekt, so dass sie nach dem Start des Systems wieder zur Verfügung stehen. Leider funktioniert folgender Ansatz nicht korrekt:
Ich ändere zum Beispiel BOOL Variablen über einen Taster. Hierzu habe ich einen FB "Toggel" implementiert. Dieser soll im ersten Zyklus den Wert der Persisten Variable (pre_load) auf sich selbst schreiben.
Nachfolgend soll bei Tastendruck dann der Wert toggel
IF NOT init THEN
init := TRUE:
out := pre_load;
ELSE
IF in:= TRUE AND alt_in = FALSE THEN (* Flanke *)
out:= NOT out;
END_IF
alt_in := in;
END_IF
Diesen verwende ich wie folgt:

Was mache ich falsch, bzw. wie machts man richtig ? ;-)
Danke
Klaus
Zuletzt bearbeitet: