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

Ergebnis 1 bis 4 von 4

Thema: B&R enum für switch case

  1. #1
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich arbeite mich gerade ein wenig in die B&R Steuerungen ein.
    (Automation Studio V3.0.9; CPU X20; Programmiersprache C)

    Ich würde gerne eine Schrittkette mit switch case und enum realisieren, nur klappt das nicht so richtig.
    In der Datei .typ habe ich den enum angelegt.
    Bei den Variablen habe ich eine Variable für den aktuellen Step angelegt. Den Type habe ich auf DINT eingestellt da die Enums automatisch auf DINT angelegt werden.

    Es tritt schon bei der Zuweisung des aktuellen Schrittes ein Fehler auf:
    Code:
    cyc.cur_step = CYC_STEP.ACC_FORW;
    => Fehler : expected expression before 'CYC_STEP'

    Bei der case Anweisung habe ich den selben Fehler.
    Code:
    switch (cyc.cur_step) {            
                case CYC_STEP.ACC_FORW:
    ...
    Hat jemand eine Ahnung wie dies richtig umgesetzt werden kann?
    Am Anfang hatte ich den Enum weggelassen und die einzelnen Schritte mit #define angegeben. Das hat funktioniert.

    godi
    Zitieren Zitieren B&R enum für switch case  

  2. #2
    Registriert seit
    13.09.2010
    Beiträge
    113
    Danke
    0
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Poste doch mal die zugehörigen Deklarationen usw.

  3. #3
    Avatar von godi
    godi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    03.01.2006
    Ort
    Im sonnigen Süden von Österreich!
    Beiträge
    1.377
    Danke
    227
    Erhielt 182 Danke für 167 Beiträge

    Standard

    Die Typedeklaration (automatisch generiert) sieht folgende aus:
    Code:
    TYPE    
        cycle_routine :     STRUCT  (*UDT for cycle*)
            enable : BOOL; (*enable*)
            step_size_acc : REAL; (*step size accelerate for the voltage of the proportional valve*)
            step_size_dec : REAL; (*step size decelerate for the voltage of the proportional valve*)
            max_output : REAL; (*maximum output  for the voltage of the proportional valve*)
            min_output : REAL; (*minimum output  for the voltage of the proportional valve*)
            start_pos : REAL; (*starting position for cyclic*)
            ref_pos : REAL; (*reference position: this is the position between accelerate an decelerate*)
            start_pos_ok : BOOL; (*starting position is reached*)
            cur_step : DINT; (*the current step of the cycle*)
            steps : CYC_STEP; (*steps of the cycle*)
        END_STRUCT;
        CYC_STEP : 
            ( (*enumeration for the steps of the cycle*)
            ACC_FORW := 1, (*step: accelerate forward*)
            DEC_FORW := 2, (*step: decelerate forward*)
            ACC_BACKW := 3, (*step: accelerate backward*)
            DEC_BACKW := 4 (*step: decelerate backward*)
            );
    END_TYPE
    Und die Dazugehörige Variable:
    Code:
    VAR  
        cyc : cycle_routine := (0); (*cycle the hydraulic cylinder*)   
    END_VAR
    Ich wollte das eigentlich so umsetzen, dass ich nur über die Variable cyc auf den enum Zugreife.
    Also so: cyc.steps.ACC_FORW und diesen Wert dann in cyc.cur_step zwischenspeichere.

    Im ersten Post habe ich es schon direkt über den Enum versucht. (CYC_STEP.ACC_FORW)
    Wie gesagt kommt immer der gleiche Fehler.

  4. #4
    Registriert seit
    25.07.2008
    Beiträge
    48
    Danke
    4
    Erhielt 4 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie wärs mit :


    cyc.cur_step = ACC_FORW;

    bzw:




    switch (cyc.cur_step) { case ACC_FORW: ...Gruß

    herdi

Ähnliche Themen

  1. Welche Switch für Profinet und TCP/IP
    Von olitheis im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 19.01.2015, 10:34
  2. Für ProfiNet I/O Standard Switch verwendbar
    Von hubert im Forum Feldbusse
    Antworten: 11
    Letzter Beitrag: 21.04.2011, 13:48
  3. enum B&R
    Von Hannes im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 03.11.2008, 07:09
  4. managed Switch für Profinet nötig???
    Von Thomas86 im Forum Feldbusse
    Antworten: 11
    Letzter Beitrag: 16.01.2008, 22:17
  5. Switch CASE Anweisung
    Von sweber im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 14.12.2006, 22:49

Lesezeichen

Berechtigungen

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