两零点两极点环路补偿的原理是什么?
在数字电源中是如何实现两零点两极点环路补偿的?
以下代码是两零点两极点的数字实现方式,该如何理解?
/**
* Calculates a second order control law with IIR filter and programmable output saturation.
* @param CNTL_2P2Z_F_C_Coeffs structure with proper coefficient values.
* @param CNTL_2P2Z_F_C_Vars structure with internal & output values.
* @return CNTL_2P2Z_F_C_Vars Out parameter.
*/
#define CNTL_2P2Z_F_C(v, k) \
/* Calculate error */ \
k.Errn = k.Ref - k.Fdbk; \
k.OutPresat = (v.Coeff_A2 * k.Out2) + (v.Coeff_A1 * k.Out1) + (v.Coeff_B2 * k.Errn2) \
+ (v.Coeff_B1 * k.Errn1) + (v.Coeff_B0 * k.Errn); \
\
/* Update error values */ \
k.Errn2 = k.Errn1; \
k.Errn1 = k.Errn; \
\
/* Determine new output */ \
k.Out = k.OutPresat; \
k.Out = (k.Out < v.Max) ? k.Out : v.Max; \
k.Out = (k.Out > v.IMin) ? k.Out : v.IMin; \
\
/* Store outputs */ \
k.Out2 = k.Out1; \
k.Out1 = k.Out; \
/* Saturated output */ \
k.Out = ((k.Out > v.Min) ? k.Out : v.Min);