| #define PID_GR_MACRO(v)                                                                                                                                                                \ \
 /* proportional term */                                                                                                                                                 \
 v.data.up = _IQmpy(v.param.Kr, v.term.Ref) - v.term.Fbk;                                                                                \
 \
 /* integral term */                                                                                                                                                         \
 v.data.ui = _IQmpy(v.param.Ki, _IQmpy(v.data.w1, (v.term.Ref - v.term.Fbk))) + v.data.i1;        \
 v.data.i1 = v.data.ui;                                                                                                                                                        \
 \
 /* derivative term */                                                                                                                                                         \
 v.data.d2 = _IQmpy(v.param.Kd, _IQmpy(v.term.c1, (_IQmpy(v.term.Ref, v.param.Km) - v.term.Fbk))) - v.data.d2;        \
 v.data.ud = v.data.d2 + v.data.d1;                                                                                                                                \
 v.data.d1 = _IQmpy(v.data.ud, v.term.c2);                                                                                                                \
 \
 /* control output */                                                                                                                                                         \
 v.data.v1 = _IQmpy(v.param.Kp, (v.data.up + v.data.ui + v.data.ud));                                                        \
 v.term.Out= _IQsat(v.data.v1, v.param.Umax, v.param.Umin);                                                                        \
 v.data.w1 = (v.term.Out == v.data.v1) ? _IQ(1.0) : _IQ(0.0);                                                                        \
 
 #endif // __PID_GRANDO_H__
 我想知道PID算法是对两个参数的差值进行计算,那么输出与输入的关系是什么那,在做速度闭环时候,PID输出为什么直接就决定了pwm占空比,输出是不是应该逐渐逼近PID设定的目标值
 |