Retain oder Persistent

SY50

Level-1
Beiträge
271
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich möchte für einen Kunden einen FB erstellen.
In diesem FB wird eine gewisse Funktion realisiert und es können diverse Parameter vom Kunden Beschrieben werden.
Diese Parameter sind für die Anwendung relevant.
Ich stehe aktuell vor der Frage, ob ich die Parameter im FB als Retain deklarieren soll, oder eine In_Out Struktur übergebe, welche in den Persistenten Daten deklariert ist.

Was haltet ihr für sinnvoller?
 
Wenn Du Daten im FB als Retain oder Persistent deklarierst, gilt das automatisch für den ganzen FB. Braucht mehr Speicher und Du hast keinen eindeutig definierten Startzustand mit 0-initialisierten Variablen.
Deshalb klare Empfehlung für die zweite Variante.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du Daten im FB als Retain oder Persistent deklarierst, gilt das automatisch für den ganzen FB. Braucht mehr Speicher und Du hast keinen eindeutig definierten Startzustand mit 0-initialisierten Variablen.
Deshalb klare Empfehlung für die zweite Variante.

Also wenn ich eine Deklaration
VAR im FB habe und eine Deklaration VAR Retain... dann werden bei mir nur die unter Täterin deklarierten Variablen auch Retain gehalten.
Werden trotzdem alle anderen auch in den Tätern Speicher gelegt, jedoch neu initialisiert?
 
Wenn Du Daten im FB als Retain oder Persistent deklarierst, gilt das automatisch für den ganzen FB.
Habe mir gerade die Retain-Doku von TwinCat 3 durchgelesen. Offenbar gilt das für Retain-Variablen tatsächlich nicht mehr. Bei Beckhoff wäre also die Frage, ob man die Werte lieber auf der CF-Karte oder im NOVRAM haben will, wobei aber nicht alle Rechner ein NOVRAM besitzen.
 
Retain:
Bei Beckhoff und TC3 stellt sich die Frage ob du auf dem Gerät direkt Novram hast (PCI oder integriert). Eine EL6080 -Klemme reicht dafür nicht aus.
Nur in diesem Fall gibt es die Retain-Variante und ab der 4020 -> siehe Infosys.

Ich finde die RETAIN- Variante dann sehr hübsch. Zyklisches schreiben - aber mit nur geringer Belastung der CPU (da nur geänderte Werte geschrieben werden), sicheres Schreiben (2-Puffer) und automatisches aufstarten... sowie einfache Nutzung.
Ich glaube mich aber zu erinneren das der benötigte NovRAM-Speicher mit der 4020 tatsächlich mit dem FB-Speicher einherging (also nicht nur mit der einen FB-Variable).

Ich würde deshalb eventuell eine Strukturierte am FB anschliessen und in der Deklaration dort das RETAIN mit aufnehmen wenn du den NOVRAM Speicher hast.
retain_struct.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei Beckhoff und TC3 stellt sich die Frage ob du auf dem Gerät direkt Novram hast (PCI oder integriert). Eine EL6080 -Klemme reicht dafür nicht aus.
Nur in diesem Fall gibt es die Retain-Variante und ab der 4020 -> siehe Infosys.
Ist ja toll, wie einig sich Beckhoff im Infosys ist was die Retain-Variablen angeht. Bei den Variablen steht, es sei geplant, während bei den CPUs steht, wie man den Retain-Handler aktiviert. Wobei dieser "nur" von den CX20X0 und der CX9020 unterstützt wird, soweit man dem Infosys glauben darf. Bei den anderen muss man PERSISTENT nutzen.
Die Frage ist allerdings auch, ob dem TE die Variante RETAIN reicht, da die so deklarierten Variablen bei einem Download wieder initialisiert werden. Hier müsste er dann auch PERSISTENT einsetzen. Allerdings muss man bei PERSISTENT aufpassen, denn diese Daten werden nicht unbedingt automatisch gesichert. Hier muss man bei Bedarf zusätzliche FBs (z.B. FB_S_UPS_...) ausführen. Außerdem muss man bei der Erweiterung von persistenten Variablen aufpassen.
 
Zuletzt bearbeitet:
OK, also Laut Codesys wird anscheinen doch der ganze FB in den Speicher geladen, jedoch nur die Retain deklarierten Daten auch so behandelt.
Werde es dann über IN_OUT realisieren. Danke
 
Zurück
Oben