1oo2 Auswertung

taylor1982

Level-2
Beiträge
34
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Ich bin noch ziemlich am Anfang mit meinen Programmierkenntnissen. Ich hoffe ihr verzeit das und könnt mir auf die Sprünge helfen.

Folgendes Problem:
Ich möchte eine 1-aus-2-Auswertung (1oo2) von zwei Drucksensoren machen. Dabei soll, falls die Werte in einer gewissen Hysterese liegen, der Mittelwert genommen werden. Falls jedoch die beiden Werte ausserhalb der Hysterese sind, soll dem höheren bzw. dem niedrigeren (parametrierbar) Vorzug gegeben werden.

Die Mittelwertbildung funktioniert soweit, nur komm ich bei der Berechnung welcher der beiden Werte der niedrige bzw. hohe Wert is nicht weiter.

Bin dankbar um Tips, falls möglich in AWL. Danke!
 
...
Bin dankbar um Tips, falls möglich in AWL. Danke!


Also in ST/SCL könnte das so aussehen:

Code:
FUNCTION _1oo2_ : REAL
VAR_INPUT
  IN1 : REAL;
  IN2 : REAL;
  HYST : REAL;
  PrioHigh : BOOL;
END_VAR
Code:
IF ABS(IN1 - IN2) < HYST THEN (* Delta kleiner Hysterese? *)
  _1oo2_ := (IN1 + IN2) / 2; (* Mittelwert ausgeben *)
ELSE
  IF (IN1 > IN2 AND PrioHigh) OR (IN1 < IN2 AND NOT PrioHigh) THEN (* Wert auswählen *)
    _1oo2_ := IN1; (* Wert 1 ausgeben *)
  ELSE
    _1oo2_ := IN2; (* Wert 2 ausgeben *)
  END_IF;
END_IF;
(* Fertig *)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Taylor,

dafür musst Du nur die Werte von einander abziehen.
Kann das jetzt aber nicht testen also ohne Gewähr:

Code:
U #Vorwahl_nied // Abfrage auf niedere
SPB Nied
// Abfrage auf hoch
 
L Wert 1
L Wert 2
- I
SPP W1_G // Springe wenn Wert positiv 
T #Ergebnis // Wenn Wert 2 größer dann diesen Wert schreiben (liegt schon im Akku)
SPA Ende
W1_G: TAK // Akku tauschen
T #Ergebnis // Wert 1 schreiben
SPA Ende
 
 Nied:NOP 0
L Wert 1
L Wert 2
- I
SPN W1_G // Springe wenn Wert negativ 
T #Ergebnis
SPA Ende
W1_G: TAK // Akku tauschen
T #Ergebnis
SPA Ende
 
Ende:NOP 0
 
Oh Zotos war schneller,

Seine Variante in SCL gefällt mir persönlich viel besser wie die in AWL :D
 
Zurück
Oben