TIA Abweichung von Werten bestimmen

SPS'ler

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

Ich bin dabei eine Lösung zu programmieren, in der eine Abweichung von einem Sollwert realisiert werden soll. Folgendes Problem liegt vor:

Ich habe 2 Eingangswerte (DInt) welche mit einem Sollwert (DInt) verglichen werden sollen. Der Baustein soll am Ende den Wert liefern, der am nächsten dran ist.

Als Beispiel:

IN1: 12
IN2: 20
SW: 15

Abweichung IN1 zu SW: 3
Abweichung IN2 zu SW: 5

Ergebnis: IN1 ist näher dran

Hat jemand so einen Baustein schon Programmiert und kann mir einen Tipp geben?
 
Ich mach sowas einfach mit ner For Schleife
Code:
#save := 9999;

FOR #i := #LOWER TO #UPPER DO
  IF ABS(#IN[i] - #SW) < #save THEN
    #save := ABS(#IN[i] - #SW);
    #OUT :=  ABS(#IN[i];
  END_IF;
END_FOR;

So würde er dir z.B. den mit der kleinsten Abweichung zum SW ausgeben. bzw. wenn mehrere die gleiche Abweichung haben, den ersten.

Das heisst du muss das halt noch deinen Bedarf entsprechend anpassen, möglicherweise brauchst du eine weitere FOR Schleife, weil du auf mehrere Sollwerte überprüfen willst etc.
 
Hallo,

Entschuldigt die Undeutlichkeit:
Wenn beide Werte gleich sind, möchte ich beide ausgeben. Der Wert kann aber sowohl größer als auch kleiner sein. Würdet Ihr das dann in IF Anweisungen verschachteln?
 
Hallo,

Entschuldigt die Undeutlichkeit:
Wenn beide Werte gleich sind, möchte ich beide ausgeben. Der Wert kann aber sowohl größer als auch kleiner sein. Würdet Ihr das dann in IF Anweisungen verschachteln?
Das kommt halt drauf an wie viele Werte du vergleichen willst. Nur zwei? Dann ist eine einfache IF Abfrage vermutlich einfach und zielführend. Wenn du aber mehr Werte überprüfen willst, oder den Baustein möglichst universell halten möchtest. Wäre Schleifen und Arrays vermutlich eher das Mittel der Wahl.
 
Zurück
Oben