-> Hier kostenlos registrieren
Moin,
ich hab, wie der Titel schon andeutet, eine Verständnisfrage zu ENUMs in TwinCat 3. Ich habe ein ENUM für eine Schrittkettensteuerung angelegt:
In meinem Programm lege ich nun eine Variable dieses Type an und initialisiere sie mit dem Wert search.
Im Programm möchte ich nun anhand des aktuellen Zustandes der Schrittkette was tun und zwischen den Schritten hin- und herspringen können. Etwa so:
Was mich gerade sehr verwirrt, ist, daß ich z.B. bei der Initialisierung ENM_Sequence.search angeben muss. Die Sequence ist doch vom Typ ENM_Sequence. Warum muss ich ihm bei der Zuweisung noch explizit angeben, daß search aus dem ENUM ENM_Sequence ist, wenn Sequence doch eben dieses ENUM ist?
Das Gleiche beim case. Ich möchte abfragen, welchen der Werte Sequence gerade hat. Warum muss ich da explizit abfragen, ob es ENM_Sequence.search ist, statt einfach nur search abfragen zu können. Ebenso bei den Zuweisungen. Warum muss ich explizit Sequence := ENM_Sequence.empty zuweisen, statt nur Sequence := empty? So also:
Kann mich diesbzgl. vielleicht jemand erhellen? Danke schonmal.
Gruß
Jörn
ich hab, wie der Titel schon andeutet, eine Verständnisfrage zu ENUMs in TwinCat 3. Ich habe ein ENUM für eine Schrittkettensteuerung angelegt:
Code:
TYPE ENM_Sequence :
(
search,
empty,
infeed,
outfeed,
error
);
END_TYPE
In meinem Programm lege ich nun eine Variable dieses Type an und initialisiere sie mit dem Wert search.
Code:
VAR
Sequence: ENM_Sequence := ENM_Sequence.search;
END_VAR
Im Programm möchte ich nun anhand des aktuellen Zustandes der Schrittkette was tun und zwischen den Schritten hin- und herspringen können. Etwa so:
Code:
CASE Sequence OF
ENM_Sequence.search:
IF NOT ixPartSensor THEN
Sequence := ENM_Sequence.empty;
END_IF
ENM_Sequence.empty:
qxMotorOn := FALSE;
qxMotorOff := TRUE;
IF ixButtonPressed THEN
Sequence := ENM_Sequence.infeed;
END_IF
ENM_Sequence.infeed:
qxMotorOff := FALSE;
qxMotorOn := TRUE;
//...
END_CASE
Was mich gerade sehr verwirrt, ist, daß ich z.B. bei der Initialisierung ENM_Sequence.search angeben muss. Die Sequence ist doch vom Typ ENM_Sequence. Warum muss ich ihm bei der Zuweisung noch explizit angeben, daß search aus dem ENUM ENM_Sequence ist, wenn Sequence doch eben dieses ENUM ist?
Das Gleiche beim case. Ich möchte abfragen, welchen der Werte Sequence gerade hat. Warum muss ich da explizit abfragen, ob es ENM_Sequence.search ist, statt einfach nur search abfragen zu können. Ebenso bei den Zuweisungen. Warum muss ich explizit Sequence := ENM_Sequence.empty zuweisen, statt nur Sequence := empty? So also:
Code:
CASE Sequence OF
search:
IF NOT ixPartSensor THEN
Sequence := empty;
END_IF
empty:
//...
infeed:
//...
END_CASE
Kann mich diesbzgl. vielleicht jemand erhellen? Danke schonmal.

Gruß
Jörn