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

Ergebnis 1 bis 6 von 6

Thema: Init von Array of Rec

  1. #1
    Registriert seit
    18.07.2010
    Beiträge
    20
    Danke
    22
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,

    wieder mal ein Problem mit meinem Array. Folgendes habe ich definiert:
    Code:
    TYPE raffstore_rec :
    
        STRUCT
    
            input                        :    blind_input_rec;
            scene                        :    blind_scene_rec;
            shade                        :    blind_shade_rb_rec;
            dark                            :    blind_dark_rb_rec;
            set                            :    blind_set_rec;
            security                        :    blind_security_rb_rec;
            control                        :    blind_control_rec;
            alarm_direction                :    alarm_rec;
    
        END_STRUCT
    
    END_TYPE
    Hier kommt ein Beispiel für einen der Sub-Recs:
    Code:
    TYPE blind_input_rec :
    
        STRUCT
            (* Eingaenge *)
                in_pos                :    BYTE;                    (* Rückführung der Jalousiestellung *)
                in_ang                :    BYTE;                    (* Rückführung der Lamellenwinkels *)
                in_s1                :    BOOL;                    (* Eingang AUF *)
                in_s2                :    BOOL;                    (* Eingang AB *)
                in_in                    :    BOOL;                    (* Gesteuerter Betrieb wenn TRUE *)
                in_pi                :    BYTE;                    (* Position wenn IN = TRUE *)
                in_ai                :    BYTE;                    (* Winkel  wenn IN = TRUE *)
    
            (* Setup *)
                set_single_switch        :    BOOL    :=    FALSE;        (* TRUE für Einzeltasterbetrieb *)
                set_click_en            :    BOOL    :=    FALSE;        (* TRUE für Single Klick Mode *)
                set_click_time        :    TIME    :=    T#500ms;    (* Timeout für Klick Erkennung *)
                set_max_runtime        :    TIME    :=    T#60s;        (* Timeout für eine Bewegung *)
                set_manual_timeout    :    TIME    :=    T#14h;        (* Timeout des Handbetriebs Vorgabe 1h*)
                set_debounce_time    :    TIME    :=    T#20ms;        (* Entprellzeit für die Eingänge S *)
                set_dbl_click1        :    BOOL    :=    FALSE;        (* bei Doppelklick Position anfahren wenn TRUE *)
                set_dbl_pos1            :    BYTE;                    (* Position bei S1 Doppelklick *)
                set_dbl_ang1            :    BYTE;                    (* Winkel bei S1 Doppelklick *)
                set_dbl_click2        :    BOOL    :=    FALSE;        (* bei Doppelklick Position anfahren wenn TRUE *)
                set_dbl_pos2            :    BYTE    :=    255;            (* Position bei S1 Doppelklick *)
                set_dbl_ang2            :    BYTE    :=    255;            (* Winkel bei S2 Doppelklick *)
                set_d1_toogle        :    BOOL    :=    TRUE;        (* Toggle Modus für D1 *)
                set_d2_toogle        :    BOOL    :=    TRUE;        (* Toggle Modus für D2 *)
                set_master_mode        :    BOOL;                    (* aktiviert den Master Mode wenn TRUE *)
    
            (* Output *)
                out_qu                :    BOOL;                    (* Motor AUF Signal *)
                out_qd                :    BOOL;                    (* Motor AB Signal *)
                out_status            :    BYTE;                    (* ESR kompatibler Status Ausgang *)
                out_po                :    BYTE;                    (* Ausgang Position *)
                out_ao                :    BYTE;                    (* Ausgang Winkelstellung *)
                out_d1                :    BOOL;                    (* Kommandoausgang für Doppelklick Funktion 1 *)
                out_d2                :    BOOL;                    (* Kommandoausgang für Doppelklick Funktion 2 *)
        END_STRUCT
    
    END_TYPE
    Dann habe ich darüber ein Array gelegt:
    Code:
        rs_rec     :    ARRAY[1..11] OF raffstore_rec;
    Jetzt wollte ich bereits bei der Programminitialisierung ein paar dieser VARs Werte verpassen, in etwa so:
    Code:
        rs_rec    :    ARRAY[1..11] OF raffstore_rec    :=
    
        (* 01 *)            (input.in_s1 := true),
        (* 02 *)            (),
        (* 03 *)            (),
        (* 04 *)            (),
        (* 05 *)            (),
        (* 06 *)            (),
        (* 07 *)            (),
        (* 08 *)            (),
        (* 09 *)            (),
        (* 10 *)            (),
        (* 11 *)            ();
    Hier laufe ich allerdings immer auf eine Fehlermeldung a la "Falsche Zuweisung".
    Kann mir jemand sagen, warum?

    Danke!

    Gruss

    Majaestix
    Zitieren Zitieren Init von Array of Rec  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Was hast du für eine Programmierumgebung? Bei TwinCAT gibt es im PLC Control eine Eingabehilfe auch für Variableninitialisierungswerte, bei komplexeren Initialisierungen ist das ein ganz nützliches Tool.

    Bei TwinCAT erreicht man diesen über Shift+F2 oder das Menü Bearbeiten-> Variablen Deklaration. Da kannst du dann deine Variable neu anlegen, und in einer Baumstruktur die Initialwerte eintragen.

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    majaestix (27.04.2013)

  4. #3
    majaestix ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2010
    Beiträge
    20
    Danke
    22
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Thomas_v2.1,

    danke für die Hilfe.
    Ja, ich benutze Twincat 2. Im Programm kriege ich den einzelnen VARs ja auch problemlos Werte zugewiesen z. B.:

    Code:
    rs_rec[11].input.in_s1 := true;
    läuft problemlos.

    Aber bei der Zuweisung als Initialsierung in den globalen Variablen läuft irgendwas falsch, vermutlich eine Klammer oder sowas, aber ich kriege es nicht raus

    Edit:
    Vielleicht lege ich auch die Matrix falsch an...


    Gruss

    Majaestix

  5. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.800
    Danke
    144
    Erhielt 1.710 Danke für 1.240 Beiträge

    Standard

    Wie geschrieben, guck dir die Eingabehilfe an. Damit wird dir die korrekte Syntax für die Initialisierung später in der Deklaration generiert.
    Ich habe das Tool immer als nervig abgetan, aber das ist für sowas echt nützlich.

    Für Unterstrukturen sieht die Initialisierung nämlich etwas anders, du musst für die Unterstrukturen nochmal eine Klammer setzen.

  6. #5
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard

    Eingebahilfe ist wirklich praktisch....theoretisch kannst du's auch per XML machen über die entsprechende Lib.
    "Always code as if the guy, who ends up maintaining your code, is a violent psychopath who knows, where you live."
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    Youtube-Channel

  7. Folgender Benutzer sagt Danke zu Majestic_1987 für den nützlichen Beitrag:

    majaestix (27.04.2013)

  8. #6
    majaestix ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    18.07.2010
    Beiträge
    20
    Danke
    22
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Thomas_v2.1,

    danke für Deine Hilfe!

    Ich habe das Tool immer als nervig abgetan, aber das ist für sowas echt nützlich.
    Da hast Du allerdings Recht, ging mir genauso. Gestern Abend haber ich es dann probiert, und, na ja, es hat funktioniert!!!

    Jetzt weiss ich, wie die Matrix aussehen muss. Die werde ich zwar nicht mit diesem Tool sondern mit dem Editor anlegen, aber ich weiss jetzt wenigstens wie.

    Also, nochmals ganz herzlichen Dank für den Tip!

    Schönes WE

    Gruss

    Majaestix

Ähnliche Themen

  1. CX5020 FAT init failed
    Von -ASDF- im Forum CODESYS und IEC61131
    Antworten: 0
    Letzter Beitrag: 08.11.2011, 11:35
  2. Array von Strings beschreiben
    Von Fluffi im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 30.04.2009, 16:48
  3. Profibus "INIT" Baustein??
    Von E_Flynn im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 23.03.2009, 14:55
  4. Antworten: 4
    Letzter Beitrag: 04.03.2009, 09:52
  5. Beschaltung von FB'S (Array)
    Von MatthiasH24 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 19.01.2009, 16:32

Lesezeichen

Berechtigungen

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