Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

enum case-abfrage

Jordi
2007-01-17
2007-01-18
  • Jordi - 2007-01-17

    Salut

    ich habe einen enum erstellt, Status genannt, mit ca. 10 Status.

    nun will ich in meinem Hauptprogramm eine case-abfrage machen in welchem Status er gerade ist, um das gewünschte dan durchzuführen.

    das siet dann etwa so aus

    CASE Status OF

    Start: <irgendetwas></irgendetwas>

    Stop: <irgendetwas></irgendetwas>

    END_CASE

    jetzt bringt der Compiler folgende Fehlermeldung:

    wass muss ich umwandeln das es funzt...uns wie...

    Gruss Di

     
  • mwatermann - 2007-01-17

    kann grad gar nicht sagen, ob das überhaupt geht; aber wenn:

    hast du Status global deklariert?

     
  • Jordi - 2007-01-17

    Hab den enum in der Registerkarte Datentypen erstellt...dann sollte er eigentlich global sein

     
  • mwatermann - 2007-01-17

    bei 'nem kurzen test kam bei mir grad die fehlermeldung:

    'case abfrage muss int wert sein' (...oder so ähnlich...)

    irgendwann gabs so eine ähnliche frage schon mal... finde den thread momentan aber nicht...

     
  • Ralph Holz - 2007-01-17

    Nach dem Erstellen in Datentypen ist ein Enum ein Datentyp und noch keine Variable.

    TYPE Status :
       (Start,Stop,Sonstwas);
    END_TYPE 
    

    Es muss noch eine Variable vom Typ des Enums deklariert werden(Typ und Name dürfen gleich sein; Deklaration kann Lokal oder Global erfolgen).

    VAR
       status: status;
    END_VAR
    

    und jetzt geht auch das:

    CASE status OF
    Start:
    ;
    Stop:
    ;
    Sonstwas:
    ;
    ELSE
    ;
    END_CASE
    
     
  • J Schohaus - 2007-01-17

    Der Weg ist schon Richtig

    1. Anlegen von Enum
    TYPE Status_Type:
      ( Start , Stop , Automatik ) ;
    END_TYPE
    
    1. Deklaration Einer Variablen die in der Case verwendet wird als ENUM
    VAR
      Status : Status_Type ;
    END_VAR
    
    1. Verwenden im Programm
    CASE Status OF 
      Start: <irgendetwas> 
      Stop: <irgendetwas> 
    END_CASE 
    
     
  • Jordi - 2007-01-17

    Dankeschön an alle

    es funkzt....

    Gruss Di

     
  • Matthias.Heese - 2007-01-17

    Hallo Zusammen,

    das mit dem Enum ist ganz gut, hat nur den Nachteil, dass der Enum global ist und deshalb nur einmal vorkommen kann. Ich definiere lieber in meinem Baustein integerwerte als CONSTANT und initialisiere die mit einem Wert, dann sind alle Werte lokal:

    VAR CONSTANT

    iStBasic: INT:=0;

    iStRun: INT:=1;

    usw.

    CASE iStatus OF

    iStBasic:

        <Programm für Zustand Basic>
    
            ....
    

    iStRun:

        <Programm für Zustand iStRun>
    
            ....
    

    END_CASE

    Viel Spaß

    Matthias

     
  • J Schohaus - 2007-01-18

    Vorteil ENUM ?

    Zitat:
    Ich definiere lieber in meinem Baustein integerwerte als CONSTANT

    Beim ENUM ist der Vorteil in der Onlineanzeige das der Inhalt der Variablen auch als den ENUM Text angezeitg wird. Bei Konstanten würde nur die Zahl angezeit werden.

     

Log in to post a comment.