zwei Integer wahlweise auf Analogausgang schreiben

olitheis

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

ich möchte mit TwinCAT PLC in ST folgendes realisieren:
Wahlweise einen Analogwert (INT) auf einen Analogausgang schreiben:
Wenn Variable (Bool) "vorwärts" TRUE ist soll der Wert (INT) "vorwärtsgeschwindigkeit" auf den Ausgang "ventil" geschrieben werden.

Wenn Variable (Bool) "rückwärts" TRUE ist soll der Wert (INT) "rückwärtsgeschwindigkeit" auf den Ausgang "ventil" geschrieben werden.

Wenn keine der beiden Varianten aktiv ist, soll der Ausgang '0' sein.

Vielen Dank
Oli
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Rayk,

daran hatte ich auch schon gedacht, allerdings müsste ich dazu 3 x diesen SEL verwenden, damit ich auch die gew. Funktion habe. Wenn ich nur einen verwenden würde, biebe immer einer der beiden Werte am Ausgang anstehen. Ich dachte vielleicht an eine etwas elegantere Lösung in ST?

Gruß
Oli
 
Code:
 (* Variante 1 *)
IF Vorwaerts THEN
  Speed := VorwaertsSpeed;
ELSIF Rueckwaert THEN
  Speed := RueckwaertsSpeed;
ELSE
  Speed := 0;
END_IF
Dann musst Du aber noch verraten was gesehen soll wenn "aus einem dummen Zufall" vorwärts und rückwärts aktiv sind. (z.B. einfach stehen bleiben)

Code:
 (* Variante 2 *)
IF Vorwaerts AND NOT Rueckwaerts THEN
  Speed := VorwaertsSpeed;
ELSIF Rueckwaerts AND NOT Vorwaerts THEN
  Speed := RueckwaertsSpeed;
ELSE
  Speed := 0;
END_IF
Ich nutze für solche Fälle meistens eine bool Variable für an/aus und eine für positive/negative Drehrichtung.

Code:
(* Variante 3 *)
IF MotorAn THEN
  IF DrehrichtungPositiv THEN
    Speed := VorwaertsSpeed;
  ELSE
    Speed := RueckwaertsSpeed;
  END_IF
ELSE
  Speed := 0;
END_IF;
 
Warum brauch du 3x SEL?

AOUT := 0 ;
G := Vorw AND NOT Rueckw ;
G := Rueckw AND NOT Vorw ;
IF Vorw OR Rueckw
AOUT := SEL(G, Wert_VW, Wert_RW) ;
END_IF;
Wobei ich persönlich hier SEL durch ein IF bzw. ELSIF ersetzen würden,
aber das ist hier Geschmackssache.
Edit: (in etwa wie es Zotos hier vormacht) ...

Mfg
Manuel
 
Zuletzt bearbeitet:
Zurück
Oben