Drei UINT - Werte als ODER Verknüpfung für Dimmersteuerung

calimer0

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

gibt es einen FB den man mit zB. 3 Werten (uint) Input Füttern kann und am Ausgang einen dieser 3 Werte erhält indem man einen dazugehörigen Input (BOOL) auf True setzt?

Etwa so ähnlich wie ein ODER FB mit 3 Eingängen als UINT und zu diesen 3 UINT Eingängen noch 3 (BOOL) Eingänge zum auswählen des UINT Eingang den man im OUTPUT haben möchte.

Hoffe Ihr versteht was ich meine und habt einen Tipp für mich.

Schonmal Vielen Dank im Voraus!
 
Das kann man auch selbst schreiben:

Code:
Definiert bei Inputs

bInput_1: Bool;
bInput_2: Bool;
bInput_3: Bool;
uiInput_1: UInt;
uiInput_2: UInt;
uiInput_3: UInt;

Definiert bei Outputs

uiOutput: UInt;



Code:

uiOutput := 0;

IF bInput_1 THEN
  uiOutput := uiInput_1;
END_IF; 
IF bInput_2 THEN
  uiOutput := uiInput_2;
END_IF; 
IF bInput_3 THEN
  uiOutput := uiInput_3;
END_IF;

Das mal so schnell als Einfachlösung.
Man kann das noch optimieren indem man IF … THEN … ELSIF nutzt, aber so wie oben gezeigt geht es auch.
Sind zwei bInput True, gewinnt der letzte im Code!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle,

hab mir jetzt einen FB mit deinem Inhalt geschrieben und ihn uintoder genannt.
Bekomme beim Online Einloggen jetzt folgenden Fehler:

Fehler 4024: uintoder (1): Erwarte : vor :=
Fehler 4200: uintoder (3): LD erwartet

Was ist falsch?
 
Wie schaffe ich es einen Ausgang zB. q:BOOL zu schalten wenn uiInput_1 grösser 0 ist?

Habe es mit

if uiInput_1 > 0 THEN
q := true;
end_if

probiert. Nur leider ist Q dann immer TRUE.

Wie lautet der Befehl richtig?
 
Zuletzt bearbeitet:
Oder, wenn du bei der IF-VErsion bleibe willst:

Code:
[COLOR=#333333]if uiInput_1 > 0 THEN[/COLOR]
[COLOR=#333333]  q := true;
[/COLOR]else
  q := false;
[COLOR=#333333]end_if


[/COLOR]

Aber wirklich schöner sieht die Variante von gloeru aus.
Bei der If…Then Variante könnte man bei Bedarf noch andere Aktionen gleich mit ausführen.
 
Aber wirklich schöner sieht die Variante von gloeru aus.
Bei der If…Then Variante könnte man bei Bedarf noch andere Aktionen gleich mit ausführen.
Diese IF...Then-Variante verwende ich auch nur, wenn mehrere Aktionen bei IF oder ELSE durchgeführt werden sollen.

Bei nur einer Zuweisung wie oben und mit Nicht-Boolschen Variablen verwende ich dann lieber SEL (hier mal zum Vergleich mit den boolschen Variablen von oben, obwohl das dabei natürlich, wie von gloeru gezeigt, zuviel Aufwand wäre):
Code:
[FONT=Courier New]q := SEL ( G:= uiInput_1 > 0, IN0:= false, IN1:= true );[/FONT]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo und danke für Eure hilfe!

Nach dem Tipp von gloeru habe ich meinen bestehenden Code

if uiInput_1 > 0 THEN
q := true;
end_if

mit der False-zuordnung erweitert:

if uiInput_1 = 0 THEN
q := FALSE;
end_if

Das sind für mich im Moment noch die einfacheren Wege, da ich es so gut verstehe.

Eure Möglichkeiten sind mir im Moment noch etwas zu Schwierig, da ja gleich mehrere Funktionen in einem Code enthalten sind. Bitte nicht falsch verstehen!!

Ich denke mit der Zeit wird das für mich auch klarer. Hab ja Euch an meiner "Seite"...;)

Schönen Gruß
 
Zurück
Oben