Achs Baustein für einen quadrature Encoder Gleichstrommotor

Ja dann, umsetzen und probieren.
#Drehe_Rechts := (#Aktuelle_Position_Cal1 > #Soll_Position_Cal1 +- 10 ) AND (#Aktuelle_Position_Cal2 < #Soll_Position_Cal2 +- 10);
#Drehe_Links := (#Aktuelle_Position_Cal1 < #Soll_Position_Cal1 +- 10) AND (#Aktuelle_Position_Cal2 > #Soll_Position_Cal2 +- 10);

Kann man das so einfach umsetzen. PS: Der Wert muss noch eingestellt werden, da ich gerade keinen Zugriff auf die Anlage habe
 
Zuviel Werbung?
-> Hier kostenlos registrieren
#Drehe_Rechts := (#Aktuelle_Position_Cal1 > #Soll_Position_Cal1 + 10 ) OR (#Aktuelle_Position_Cal1 > #Soll_Position_Cal1 - 10 ) AND (#Aktuelle_Position_Cal2 < #Soll_Position_Cal2 + 10)OR (#Aktuelle_Position_Cal2 < #Soll_Position_Cal2 - 10);

#Drehe_Links := (#Aktuelle_Position_Cal1 < #Soll_Position_Cal1 + 10) OR (#Aktuelle_Position_Cal1 < #Soll_Position_Cal1 - 10) AND (#Aktuelle_Position_Cal2 > #Soll_Position_Cal2 + 10) OR (#Aktuelle_Position_Cal2 > #Soll_Position_Cal2 - 10);

Also geht das so?
 
Ein IF braucht nicht zwangsläufig ein ELSE
Du wirst es nicht glauben, Michael, das weiss ich schon seit ca. 54 Jahren.
Nein, IF braucht nicht zwangsläufig ein ELSE, aber, je nach Anwendung (z.B. in dem in diesem Thread gezeigten Beispiel) geht es oft nicht ohne den ELSE-Zweig.

In diesem Forum findet man einerseits Anfragen, ob bzw. wie man in SCL/ST die "bedingten" Zuweisungen (Setzen bzw. Rücksetzen) realisieren kann.
Ja, das geht, wenn man den ELSE-Zweig weglässt bzw. nur in 1 der beiden Zweige der ZielVariablen einen Wert zuweist.

In diesem Forum findet man andererseits Anfragen, warum z.B. in ...
Code:
IF bedingung = TRUE then
    bedingtWAHR := TRUE ;
END_IF ;
... 'bedingtWAHR' bei nicht erfüllter Bedingung nicht auf FALSE zurückgesetzt wird. Weil der Compiler nicht wissen kann, dass man den ELSE-Zweig nur vergessen oder weggeschlampert hat! Man muss schon genau das programmieren, was man meint.
Und ja, Michael, ich weiss auch, dass man statt 'bedingung = TRUE' auch einfach 'bedingung' schreiben kann.
 
Nein, IF braucht nicht zwangsläufig ein ELSE, aber, je nach Anwendung (z.B. in dem in diesem Thread gezeigten Beispiel) geht es oft nicht ohne den ELSE-Zweig.

In diesem Forum findet man einerseits Anfragen, ob bzw. wie man in SCL/ST die "bedingten" Zuweisungen (Setzen bzw. Rücksetzen) realisieren kann.
Ja, das geht, wenn man den ELSE-Zweig weglässt bzw. nur in 1 der beiden Zweige der ZielVariablen einen Wert zuweist.

In diesem Forum findet man andererseits Anfragen, warum z.B. in ...
Code:
IF bedingung = TRUE then
    bedingtWAHR := TRUE ;
END_IF ;
... 'bedingtWAHR' bei nicht erfüllter Bedingung nicht auf FALSE zurückgesetzt wird. Weil der Compiler nicht wissen kann, dass man den ELSE-Zweig nur vergessen oder weggeschlampert hat! Man muss schon genau das programmieren, was man meint.

Wenn man das ganze als Zuweisung ausführt, kann man sich das IF und das ELSE und das END_IF sparen:
bedingtWAHR := bedingung;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das
Code:
bedingtWAHR := bedingung;
hat aber eine andere Funktion als das:
Code:
IF bedingung THEN
    bedingtWAHR := TRUE;
END_IF;

Ja, da hast du recht, aber ich hatte ja auch geschrieben: man sich das IF und das ELSE und das END_IF sparen,
ich bin also von einer kompletten IF THEN ELSE END_IF Abfrage ausgegangen, weil:
IF braucht nicht zwangsläufig ein ELSE, aber, je nach Anwendung (z.B. in dem in diesem Thread gezeigten Beispiel) geht es oft nicht ohne den ELSE-Zweig.

Sorry für das Missverständnis.
 
Zurück
Oben