RetainHandler CX9020 ohne 1 Sekunden USV

HawkEagle

Level-2
Beiträge
66
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Liebe Gemeinde, ein Thema abgehakt schon kommt was neues.

Ich möchte meine Retain Variablen an den Retain Handler verknüpfen.
Leider ist es in der Doku ein wenig undurchsichtig beschrieben.
Ich abe alles Lt. Doku gemacht jedoch beim Verknüpfen bekomme ich folgende Fehlermeldung:
1707239857579.png

Kann der RetainHandler mit Arrays oder mit UserDatentypen nicht umgehen?Bzw. gibt es einen Workarround, ohne dass ich alles ändere?
Es hängt die Komplette Visu auch auf den Variablen....

Danke!
 
Ich habe das gerade einmal nachgestellt, habe aber selber keine CPU. Es scheint wohl tatsächlich so zu sein, dass bei Retain nur Grundtypen und Arrays von diesen zulässig sind, Strukturen gehen nicht.
Hier würde ich empfehlen mal bei Beckhoff anzurufen und nachzufragen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kommando zurück, es geht doch. Hier hätte Dir RTFM weitergeholfen, ich muss allerdings gestehen, dass ich auch erst suchen musste.
Du must nicht die Instanz der Struktur als Retain deklarieren, sondern bei der Definition der Struktur musst Du schon Retain angeben. Die Instanz dieser Struktur darf dann aber nicht nochmals als Retain deklariert werden und jede Instanz dieser Struktur ist dann immer Retain. Das funktioniert übrigens auch mit Arrays von Strukturen.
Siehe hier im Infosys.
Hier mal eine entsprechende Struktur:
Code:
TYPE ST_Test01 :
STRUCT RETAIN
    xTest01        : BOOL;
    uiTest01    : UINT;
    xTest02        : BOOL;
    uiTest02    : UINT;
    rTest01        : REAL;
END_STRUCT
END_TYPE
Und hier die entsprechende Deklaration:
Code:
PROGRAM MAIN
VAR
    stTest01    : ST_Test01;
    astTest01    : ARRAY[1..3] OF ST_Test01;
    astTest02    : ARRAY[1..3] OF ST_Test01;
END_VAR
Und so sieht dann der Retain Knoten aus:
1707248021318.png
 
Zuletzt bearbeitet:
Mal etwas am Thema vorbei:
Aber wer verwendet, denn die Retain Variante?
Ich benutze seit jeher die Persistent Variante, habe aber immer min eine 1s USV.
 
Retain in TC3: Werte werden (automatisch) jeden Zyklus gespeichert.
Das Ganze in der Form optimiert sodass nur geänderte Werte übertragen werden (wegen Performance).
Im NovRam liegen die Werte 2x, d.h. in jedem Zyklus wird ein Datensatz geändert sodass auch im Falle eines Problems beim letzten Zyklus (n-1) die Werte desZyklus n-2 wieder verfügbar sind.

Wenn du genaue alte Werte brauchst (z.B. Energiedaten....) ist das sinnvoll. Man sollte aus Prinzip sparsam damit umgehen da das umkopieren der Werte dennoch Zeit kostet.
In meinen Augen also: Rezepte o.ä. die "OnEvent" geändert werden gehören in die persistenten Daten, Energiedaten o.ä. in den Retain bereich.
 
Guten Morgen,

Ich habe das nun getestet und siehe da es funktioniert.
Danke für die zahlreichen Tipps.

btw ich hatte es mit Persistent probiert, jedoch waren die Daten dann teilweise nicht gespeichert.
 
Zurück
Oben