Enumeration in IF, CASE Anweisungen

UnknownUser

Level-2
Beiträge
8
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
KANN GELÖSCHT WERDEN. Enumeration in IF, CASE Anweisungen

Hallo,
ich habe folgende Enumeration und Anweisungesblock
Code:
TYPE HVFC_ENUM_MDTTR :
(
    Oper := 0,
    Prog
);
END_TYPE
Code:
IF HVFC.Modeattr = HVFC_ENUM_MDTTR.Oper THEN
    HVFC.Mode := HVFC.Mode_Cmd_Oper;
ELSE 
    // Mode_Cmd_Oper immer mitsetzen, um "Sprünge" zu vermeiden.
    HVFC.Mode_Cmd_Oper := HVFC.Mode_Cmd_Prog;
    HVFC.Mode := HVFC.Mode_Cmd_Prog;
END_IF
Modeattr ist vom Typ HVFC_ENUM_MDTTR
Code:
Modeattr: HVFC_ENUM_MDTTR;

Im Simulationsmodus funktioniert dieser Anweisungsblock aber leider nicht. Es wird immer der Code im ELSE-Block ausgeführt, unabhängig davon ob HVFC.Modeattr "Oper" oder "Prog" gesetzt ist.
Gleiches passiert auch in CASE Anweisungen
Code:
CASE HVFC.Modeattr OF
    HVFC_ENUM_MDTTR.Oper:
        HVFC.Cmd := HVFC.Cmd_Oper;
    HVFC_ENUM_MDTTR.Prog:
        // Cmd_Oper immer mitsetzen, um "Sprünge" zu vermeiden.
        HVFC.Cmd_Oper := HVFC.Cmd_Prog;
        HVFC.Cmd := HVFC.Cmd_Prog;
END_CASE
Kann man Enumerations überhaup in Kontrollstrukturen so abfragen?

Grüße

// Begraben unter 100ten Zeilen Code habe ich den Fehler gefunden, Modeattr wird ständig überschrieben aber im Monitoring komischerweise nicht angezeigt. Der Code funktioniert also einwandfrei.
// Thema kann gelöscht werden!
 
Zuletzt bearbeitet:
Zurück
Oben