发表于:2005-11-10 17:42:00
10楼
FUNCTION_BLOCK FB40
VAR_INPUT
Sim: BOOL;
SimWert: REAL;
UG: REAL;
OG: REAL;
Zeit: REAL;
Bewertung: REAL;
END_VAR
VAR_IN_OUT
AE: REAL;
Ungefiltert: REAL;
Gefiltert: REAL;
Bewertet: REAL;
END_VAR
(* Simulation der Eingänge *)
BEGIN
IF Sim = TRUE THEN
AE := (SimWert * 276.48); (* Vorgabe im OP im Wertebereich 0..100 *)
END_IF;
Ungefiltert:= ((AE / 276.48) - UG) / (OG - UG) * 100;
Gefiltert := Gefiltert + (Ungefiltert-Gefiltert) / (Zeit * 10);
Bewertet:=Gefiltert * Bewertung / 100;
IF (Gefiltert<-1000) OR (Gefiltert>1000) THEN (*Bereichseinschränkung, weil bei Filterzeit = 0 durch Null geteilt wird *)
Gefiltert := 0.0;
Ungefiltert := 0.0;
END_IF;
END_FUNCTION_BLOCK