FUNCTION_BLOCK FB411
VAR_INPUT
PV_SET :REAL;
PV_IN :REAL;
P: REAL ;
I,D: TIME ;
T:TIME := T#20S;
END_VAR
VAR_OUTPUT
OUT:REAL;
END_VAR
VAR_TEMP
// Temporary Variables
TD,TI,TT,PV,PV1,A,B:REAL;
END_VAR
VAR
// Static Variables
END_VAR
BEGIN
PV := PV_SET-PV_IN;
TD := TIME_TO_DINT(T);
TI := TIME_TO_DINT(I);
TT := TIME_TO_DINT(T);
PV1:=PV*P*(1+TT/TI+TD/TT)-A*P*(1+2*TD/TT)+B*P*TD/TT;
IF PV1<0 THEN PV1:=0.0;ELSIF PV1 > 27648.0 THEN PV1:=27648.0 ; END_IF;
OUT:=PV1;
B:=A;
A:=PV1;
END_FUNCTION_BLOCK
请大家起讨论对这个程序的完善和改进