Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

Thema: Verständnis Retain Persistent

  1. #1
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo zusammen. Ich habe eine frage wegen der Variablendeklaration in Codesys.

    Man kann ja Variablen in VAR RETAIN PERSISTENT deklarieren das sie erhalten bleiben (in der Anleitung alles gut beschrieben).

    Dasselbe auch in der Schnittstelle eines FBs.
    Aber was muss mit der Deklaration des FBs selber passieren?
    Code:
    FUNCTION_BLOCK FB_PRISM
    VAR RETAIN PERSISTENT
        wlastCMDH    : WORD; (* Datenpunkt letzter Schaltbefehl Hand Signal *)
        wlastCMDA    : WORD;  (* Datenpunkt letzter Schaltbefehl Automatik Signal *)
    END_VAR

    Muss ich die Instanz selber auch in VAR RETAIN PERSISTENT deklarieren wenn ich im FB selber RETAIN PERSISTENT nutze?
    Code:
    VAR RETAIN PERSISTENT
        VOR01_Q16280_GR_N1    : FB_PRISM;
        VOR01_Q16280_GR_N2    : FB_PRISM;
        VOR02_Q16280_GR_N1    : FB_PRISM;
        VOR02_Q16280_GR_N2    : FB_PRISM;
        VOR_Q16280_GR_G1    : FB_PRISM;
    END_VAR
    Oder kann ich die Deklaration im normale VAR machen?
    Code:
    VAR 
        VOR01_Q16280_GR_N1    : FB_PRISM;
        VOR01_Q16280_GR_N2    : FB_PRISM;
        VOR02_Q16280_GR_N1    : FB_PRISM;
        VOR02_Q16280_GR_N2    : FB_PRISM;
        VOR_Q16280_GR_G1    : FB_PRISM;
    END_VAR

    mfG René
    Zitieren Zitieren Verständnis Retain Persistent  

  2. #2
    Registriert seit
    09.11.2007
    Ort
    Rhein Main (Darmstadt)
    Beiträge
    663
    Danke
    61
    Erhielt 112 Danke für 80 Beiträge

    Standard

    Bei der SPS, die ich bevorzugt benutze (Intercontrol) wird durch das REATAIN nur festgelegt, dass die Variablen in einem Bereich liegen, der persistent gemacht werden kann.

    Man kann nach Beschreiben der Variablen einen Funktion starten, die einen SAVE im EEProm auslöst oder aber auch beim Runterfahren (Spannungsabschalten) im letzten Zyklus diese Funktion aufrufen. Die SPS hat eine kleine Hardware Pufferung des SPS Kerns, damit der letzte Zyklus erkannt und sicher durchgeführt werden kann und auch alle Ausgänge in eine sichere Lage geschaltet werden.

    Das ganze dürfte aber bei jeder Hardware der verschiedenen Hersteller proprietär gelöst sein.
    Als Freelancer immer auf der Suche nach interessanten Projekten.

  3. #3
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Hallo,
    Zitat Zitat von vollmi
    Aber was muss mit der Deklaration des FBs selber passieren?
    Laut CoDeSys OnlineHelp wird die ganze POU als Retain Persistant behandelt sobald auch nur eine variable der POU diese Eigenschaft hat. Egal wie die Instance deklariert wird.
    Das trifft aber nicht unbedingt auf alle Hersteller/Anbieter zu, die auf CoDeSys basieren. Bei Schneider Electric (SoMachine) z.Bsp. hat das Keyword Persistent keine Bedeutung, für Persitente variablen muss eine extra Variblen-Liste (Persistent_Table) angelegt werden. Und es werden nur Variablen als Retain behandelt, welche auch unter VAR_RETAIN deklariert wurden.

    Zitat Zitat von vollmi
    Muss ich die Instanz selber auch in VAR RETAIN PERSISTENT deklarieren wenn ich im FB selber RETAIN PERSISTENT nutze?
    Bei CoDeSys nicht.

    Zitat Zitat von vollmi
    Oder kann ich die Deklaration im normale VAR machen?
    Bei CoDeSys ja.
    Grüße...
    Paradox ist, wenn sich jemand im Handumdrehen den Fuß bricht.

  4. Folgender Benutzer sagt Danke zu Simatiker für den nützlichen Beitrag:

    vollmi (15.03.2012)

  5. #4
    Registriert seit
    17.10.2007
    Ort
    35043 Marburg
    Beiträge
    176
    Danke
    4
    Erhielt 30 Danke für 29 Beiträge

    Standard

    Hallo,
    also irgendwie stimmt das doch nicht so ganz wie oben beschrieben.
    Wenn du in einem FB eine Variable als Retain deklarierst wird die komplette Instance des FBs im seperaten Speicher für Retain Variablen gespeichert, aber nur die Variablen als Retain behandelt welche auch als Retain deklariert sind. Bei einem Programm werden nur die als Retain deklarierten Variablen im Speicher für Retain Variablen abgelegt.
    Zu Persistent Variablen steht, das diese nur in einer speziellen GVL deklariert "Persistent Variables" werden können. Dazu muss das Zielsystem natürlich über einen Speicherbereich verfügen der das Verhalten der Persistent Variablen unterstützt.

    Das würde jetzt in Deinem Fall bedeuten, die entsprechenden Variablen deines Bausteines sind nur Retained. Vorrausgesetzt Du hast die Instance zwischen VAR...END_VAR deklarierst. Wenn Du Instance des FBs zwischen VAR_RETAIN...END_VAR deklarierst ist der komplette FB Retained. Und wenn Du die Instance des FBs in einer speziellen GVL "Persistent Variables" deklarierst ist der komplette Baustein Persistent.

    Ich glaube nun ist die Verwirrung perfekt.

    Ich beziehe mich hier auf CoDeSys V3!
    Grüße...
    Paradox ist, wenn sich jemand im Handumdrehen den Fuß bricht.

  6. Folgender Benutzer sagt Danke zu Simatiker für den nützlichen Beitrag:

    vollmi (16.03.2012)

  7. #5
    Avatar von vollmi
    vollmi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.620
    Danke
    777
    Erhielt 647 Danke für 493 Beiträge

    Standard

    Zitat Zitat von Simatiker Beitrag anzeigen
    Hallo,
    Ich glaube nun ist die Verwirrung perfekt.
    Nö garnicht. Ich benutze zwar V2.3 auf Wago. Aber demzufolge ist es ausreichend wenn ich im FB die Variablen die ich brauche auf Retain Persistent setze. Die Instanz des Bausteins muss ich nicht nochmal retain persistent deklarieren.

    mfG René

  8. #6
    Registriert seit
    04.01.2008
    Ort
    Wien
    Beiträge
    772
    Danke
    136
    Erhielt 39 Danke für 35 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Retain . Speicerung erfolgt über Adressen, Persistent über den Symbolischen Namen, ist also sicherer. Wie gespeichert wird hängt von der STeuerung ab. Manche haben einen NovRAM, dazu gibt es FB´s. Manche haben das On-Board mittels USV oder integriert mittels modul. Da muss man dann nix machen. Mache haben gar nix und es muss auf den Flash geschrieben werden. Hier muss man vorsichtig sein um den Flash nicht durch zu häufiges schreiben zu zerstören
    irgendetwas ist ja immer...
    ING. Gerald Miedler

Ähnliche Themen

  1. PC WorX, Retain, Persistent
    Von Portisch im Forum Sonstige Steuerungen
    Antworten: 12
    Letzter Beitrag: 22.10.2012, 15:53
  2. CX9000 - Daten nach Neustart behalten! RETAIN und PERSISTENT?
    Von Codesys_123 im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 04.09.2010, 11:33
  3. Spannungsfest durch persistent retain
    Von Roli im Forum CODESYS und IEC61131
    Antworten: 7
    Letzter Beitrag: 19.06.2009, 22:34
  4. Fragen zu RETAIN und PERSISTENT (TwinCAT)
    Von suud im Forum CODESYS und IEC61131
    Antworten: 20
    Letzter Beitrag: 13.11.2008, 15:18
  5. Retain persistent Variablen in persist.dat ?
    Von dietere im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 17.01.2008, 13:30

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •