Ein Enum über mehrere Namen ansprechen Codesys V3.5

Flump

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Die Suchfunktion habe ich schon ausprobiert, jedoch leider keinen Treffer...
Ich habe da ein kleines Problem.
Vorhanden ist:

TYPE Lebensmittel :
(
Banane,
Brot,
Apfel
);
END_TYPE

GesundeLebensmittel : Lebensmittel;

Jetzt will ich den Typ jedoch nicht nur als Lebensmittel benutzten sondern auch unter einem anderen Namen "ALIAS".

In etwa so:
TYPE Zutatenliste :Lebensmittel; END_TYPE

RezeptZutaten : Zutatenliste;

Mein Problem ist nur, dass es nicht so funktioniert wie ich das will.
Ist das bei Codesys einfach nicht möglich , oder gibt es da einen Trick ?


Mit freundlichen Grüßen
Florian
 
Hallo Florian,
kann es sein, dass Du Enum und Struktur verwechselst? Und selbst dann wäre der Name zweitrangig. Ein Typ ist eigentlich nur eine Liste von Konstanten die einen Integer-Wert haben, deren Wert Du entweder automatisch aufsteigend vergeben lassen kannst oder Du kannst Ihn selber vorgeben.Auf die Werte greifst Du dann über deren Namen zu und nicht (wie in einer Struktur) über Typname.Emumname (z.B. GuteLebensmittel.ApfelUngespritzt). Dein Namensproblem würde bei einer Struktur auch nicht bestehen, da Du vor Verwendung der Struktur ja erst Variablen vom Typ der Struktur anlegen musst und denen kannst Du dann ja passende Namen geben. Doch zurück zum Typ. Bei Deinem Beispiel würdest Du Variablen vom Typ Int anlegen und denen dann den ENUM als Wert zuweisen.

Lebensmittel : INT;
GuteLebensmittel : INT;

Lebensmittel := Apfel;
GuteLebensmittel := ApfelUngespritzt;

Gruß

Oliver
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Oliver,
eigentlich verwechsele ich das nicht.

Ich kann ja auch

TYPE Lebensmittel_ascending :
(
Banane := 1,
Brot := 2,
Apfel := 3
);

TYPE Lebensmittel_descending :
(
Banane := 3,
Brot := 2,
Apfel := 1
);
END_TYPE

Lebensmittel : INT
;
Lebensmittel := Lebensmittel_descending.Apfel; (--> Lebensmittel = 1)
Lebensmittel := Lebensmittel_ascending.Apfel; (--> Lebensmittel = 3)

Laut Codesys Hilfe ist dies möglich.

Mein Problem ist, dass es schon Code gibt, der auf bestimmte Namen von ENUMS zugreift (Lebensmittel := Lebensmittel_descending.Apfel)
In meiner Bibliothek ist jedoch ein anderer Name vergeben
TYPE Lebensmittel :
(
Banane := 3,
Brot := 2,
Apfel := 1
);
END_TYPE
jedoch mit den gleichen Enum Einträgen.
Ich möchte den ENUM gerne über Lebensmittel und über Lebensmittel_descending verwenden können.

Damit ich den schon geschriebenen Code mit den Deklarationen in der Library verknüpfen kann müsste ich halt dem Enum
verschiedene Namen geben können.
 
Hallo Florian,
wer schlaue Antworten geben will, sollte vorher genau nachgelesen haben. Ich habe leider völlig übersehen, dass es um CoDeSys 3.X geht, sorry. Da muss ich leider passen, da ich mit CoDeSys 3.X noch nie gearbeitet habe. Jetzt wird mir auch klar, warum mir Dein Code so komisch vorkam.

Gruß

Oliver
 
Zuletzt bearbeitet:
Zurück
Oben