程序清单
2-2
防积分饱和数字
PI
调节子程序
SATU:
ENA M_MODE;
SI=DM(RK);
SR=LSHIFT SI BY 12(LO);
AX0=DM(GIVE);
AY0=DM(MEASURE);
AR=AX0-AY0;
DM(EK)=AR;
MX0=DM(EK);
MY0=DM(KP);
SR=SR+MX0*MY0(SU);
MR1=SR1;
MR0=SR0;
SR=ASHIFT MR1 BY 4(HI);
SR=SR OR LSHIFT MR0 BY 4(LO);
DM(U)=SR1;
AX0=SR1;
AY0=0x8000;
AR=AX0 AND AY0;
IF EQ JUMP UPIMAGZEROS;
AX0=DM(UMIN);
AY0=DM(U);
AR=AX0-AY0;
IF GT JUMP NEG_SAT;
AX0=DM(U);
JUMP LIMITERS;
NEG_SAT:
AX0=DM(UMIN);
JUMP LIMITERS;
UPIMAGZEROS:
AX0=DM(UMAX);
AY0=DM(U);
AR=AX0-AY0;
IF LT JUMP POS_SAT;
AX0=DM(U);
JUMP LIMITERS;
POS_SAT:
AX0=DM(UMAX);
LIMITERS:
DM(UK)=AX0;
AY0=DM(U);
AR=AX0-AY0;
MX0=AR;