Retain Variablen

2005-07-08
2005-08-02
  • Jens Kreyßig

    Jens Kreyßig - 2005-07-08

    Ich habe folgendes Problem/Frage:

    Wie adressiert CoDeSys die deklarierten RETAIN Variablen?

    Ich will über ein Bedienpult (EXOR eTOP33 mit SCM03C Modul) Grenzwerte einstellen und ausfallsicher speichern. Über die Programmiersoftware für das Bedienpult kann ich für diese Eingabefelder, die entsprechenden Referenzadressen eingeben (z.B. "PLC RETAIN R3 0 0", byteweise Offset oder eben "PLC Memory 0 0" würde %MB0 entsprechen).

    In CoDeSys kann ich doch aber nur Retain Variablen deklarieren (ohne direkte Adresse), oder?! Wie komme ich nun an die genaue Adresse?!

    Derzeit schreibt und liest das Bedienpult zwar irgendwoher, aber es sind nicht die im Programm deklarierten Variablen.

    Hat das schonmal jemand in dieser Art gemacht?! THX im Vorraus

     
  • M-o-t

    M-o-t - 2005-07-11

    Hallo,

    nach dem Namen AT%Mx0.0 oder je nach Datentyp MB0 oder MW0..

    Gruß

    M_o_t

     
  • Jens Kreyßig

    Jens Kreyßig - 2005-07-12

    Ja, das hatte ich erfolglos probiert. Der CoDeSys Support hat folgendes geantwortet:

    "Dies geht nur, wenn der Retainbereich im Merkerbereich liegt, dies muß aber in der Hardware festgelegt sein."

    Nun fragt der Support von EXOR seinen Entwicklungsabteilung, ob dies der Fall ist. Ich gehe aber mal davon aus, das ich nicht drum rum kommen werden, die Werte normal in den Merkerbereich zu schreiben und bei Ausfall in die Retain Variablen zurücksicher, bzw. bei Einschalten auslesen lasse.

    Damit wäre nur das Problem. Wann speicher ich die Daten in die Ausfallsicheren Variablen?

    Meine Lösung: eine zyklische Rückspeicherung oder immer dann, wenn ich vom Bedienpult aus die Werte änder ... naja mal die Rückantwort abwarten.

     
  • andreas.niggl

    andreas.niggl - 2005-08-02

    Hallo,

    kann man im Exor-Projekt nicht auf den Variablennamen zugreifen? Die Adresse der Retain-Variablen braucht man doch dann überhaupt nicht.

    Gruß

    Andi

     
  • Jens Kreyßig

    Jens Kreyßig - 2005-08-02

    Diese Option habe ich leider nicht bzw. noch nicht gefunden.

    Ich kann bei dem Designer (EXOR - Visualisierungssoftware) als Referenz für ein Numerisches Feld nur folgende Sachen angeben:

    SPS: - Internal Panel Memory (Speicherbereich des Panel)

        - PLC Memory (Merkerbereich des SCM03C Moduls)
    
        - PLC Input (Tag)
    
        - PLC Output (Tag)
    
        - PLC Retain ... (diese können nur direkt adressiert werden was in CoDeSys NICHT möglich ist)
    

    Auszug:

    "Unter Referenz wird der Speicherbereich der Variablen im Controller eingestellt. Der Datentyp, das Datenformat und die Referenzadresse werden unter dem Button "..." eingestellt. Es können nur Einstellungen konfiguriert werden, die vom aktuellen Controller unterstützt werden."

    Die anderen Referenzen - Variable, Rezept, Index beziehen sich meines Wissens auf das UniOp und nicht auf den internen Controller.

    Da ich in CoDeSys die Retain Variable aber nicht direkt adressiere weis ich ja nicht wo diese abgelegt wird. Umgekehrt: Im Designer kann ich eben nur die direkten Adressen auswählen, aber keine Variablen des Controllers.

    Derzeit habe ich das Problem folgender Maßen gelöst:

    • bei Steuerungsneustart werden die Retain Variablen ausgelsen und in den Merkerbereich geschrieben

    • wenn Werte geändert werden MUSS in der Visualisierung eine "Speichertaste" gedrückt werden, hinter der sich ein Makro verbirgt (Zurückspeichern der Merkervariablen in die Retainvariablen)

    Ist zwar etwas umständlich aber funktioniert.

     

Log in to post a comment.