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

Ergebnis 1 bis 6 von 6

Thema: Twincat 3 Enums strukturierbar machen?

  1. #1
    Registriert seit
    29.09.2005
    Beiträge
    124
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich möchte gerne in meinem Twincat3-Projekt (bin neu bei Beckhoff) an verschiedenen Stellen Enums verwenden. Nun gibt es in der Applikation Stellen, an denen man das Enum (gleicher Name) nochmal verwenden möchte, allerdings einem anderen Bereich zugeordnet und nicht zwangsweise mit dem gleichen Wert, weil der Bezeichner vielleicht an einer anderen Stelle der neuen Enumeration steht. Daher wäre es schön, ein Enum strukturieren zu können.

    Bisher löst der Kunde das über Structs, die das Namenspräfix "ENUM" tragen. Das führt natürlich dazu, dass diese "Enums" keine echten Enums sind, sondern diese nur simulieren. Ich kann so bspw. keine Case-Anweisungen mit nicht-konstanten INTs programmieren.

    Jetzt könnte man echte Enums verwenden und das Problem der Namensgleichheit umgehen, indem man den Bezeichnern ein Präfix voranstellt. Dies möchte der Kunde nicht.

    Gibt es noch andere Möglichkeiten, ein Enum zu strukturieren?

    Danke im Voraus

    Gruß

    Jochen
    Geändert von Jochen (14.10.2015 um 12:40 Uhr)
    Zitieren Zitieren [Gelöst] Twincat 3 Enums strukturierbar machen?  

  2. #2
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von Jochen Beitrag anzeigen
    Jetzt könnte man echte Enums verwenden und das Problem der Namensgleichheit umgehen, indem man den Bezeichnern ein Präfix voranstellt. Dies möchte der Kunde nicht.
    Der Kunde meint also es könnte STATUS_ENUM[Idx] geben. Soll er weiter träumen. Man kann nur das programmieren, was das System hergibt.

    Code:
    CASE Kundenwahlmöglichkeit OF
    
       SimuENUM: 
    
       PräfixENUM: 
    
    ELSE 
       (* Falsche Auswahl! *)
    END_CASE
    Grüße Frank

  3. #3
    Registriert seit
    13.12.2011
    Beiträge
    1.416
    Danke
    147
    Erhielt 161 Danke für 152 Beiträge

    Standard

    Ja, indem du die Enums voll qualifiziert nutzt. Dafür musst Du oben im Enum ein Pragma setzen (such mal nach qualified) oder nutzt es ohne das Pragma von vornherein voll qualifiziert geht meine ich auch, dann hast Du deine Unterscheidung.

    Nachtrag : Hab es gerade mal getestet, es geht auch ohne Pragma. Du nimmst einfach den Namen der Enum-Gruppe, dann einen Punkt und dann das gewünschte Enum.

    Von irgendwas mit Internetzugang gesendet.
    Geändert von oliver.tonn (14.10.2015 um 07:15 Uhr)

  4. #4
    Jochen ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    29.09.2005
    Beiträge
    124
    Danke
    6
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von oliver.tonn Beitrag anzeigen
    Ja, indem du die Enums voll qualifiziert nutzt. Dafür musst Du oben im Enum ein Pragma setzen (such mal nach qualified) oder nutzt es ohne das Pragma von vornherein voll qualifiziert geht meine ich auch, dann hast Du deine Unterscheidung.
    Dankeschön. Ich bin gerade heute morgen auf diese Pragma-Anweisung gestoßen und habe sie schon so umgesetzt.

    Nachtrag : Hab es gerade mal getestet, es geht auch ohne Pragma. Du nimmst einfach den Namen der Enum-Gruppe, dann einen Punkt und dann das gewünschte Enum.
    Dann meckert bei mir der Compiler aber über doppelt vergebene Enums, daher mache ich es voll qaualifiziert.

    Gruß

    Jochen

  5. #5
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Wenn du mehrere Enums mit gleichen Namen hast dann können sie ja nun auch nur über den Namespace unterschieben werden - ist in keiner Programmiersprache anders ...

    Gruß
    Larry

  6. #6
    Registriert seit
    13.12.2011
    Beiträge
    1.416
    Danke
    147
    Erhielt 161 Danke für 152 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Bei gleichen Enums musst Du, wie Larry schon schrieb, das Enum immer voll qualifiziert angeben. Das Pragma ist eher eine erzieherische Maßnahme dies auch wenn es nicht nötig wäre machen zu müssen.

    Gruß

    Oliver

    Von irgendwas mit Internetzugang gesendet.

Ähnliche Themen

  1. Selbstständig machen?!
    Von Backdoor im Forum Stammtisch
    Antworten: 10
    Letzter Beitrag: 23.03.2017, 17:47
  2. Enums vergleichen
    Von moppi im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 24.07.2014, 13:20
  3. FB zu Multiinstanz machen !?
    Von Tom1971 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 02.02.2012, 11:52
  4. Screenshot einer RT machen
    Von Manfred Stangl im Forum HMI
    Antworten: 10
    Letzter Beitrag: 13.07.2011, 07:53
  5. Antworten: 17
    Letzter Beitrag: 30.09.2008, 07:14

Stichworte

Lesezeichen

Berechtigungen

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