发布于 2012-06-08 23:06:56
18楼
IF Mode = true THEN
e:=(Pv-Sv);
ELSE
e:=(Sv-Pv);
END_IF;
IF ABS(e)e:=0;
ELSIF ABS(e)>MAXE THEN
B:=0.0;
ELSE b:=1.0;
END_IF;
IF AM=TRUE THEN
KP_V:=Kp*(e-e1);
KI_V:=B*Ki*e;
KD_V:=Kd*(e-2*e1+e2);
FF_LAST:=FF-FF_LAST1;
OutLast:=KP_V+KI_V+KD_V+FF_LAST+OutLast;
MV:=OUTLAST;
ELSE
OutLast:=MV;
SV:=PV;
END_IF;
IF OutLast>LimitHigh THEN
OutLast:=LimitHigh;
ELSIF OutLastOutLast:=LimitLow;
END_IF;
e2:=e1;
e1:=e;
FF_LAST:=FF;
FF_LAST1:=FF_LAST;
Out:=OutLast;