我正在使用 STM32F4 微控制器上的 CMSIS 库开发 PID 控制器。我无法真正理解 PID 参数的归一化。现在我有了 PID 控制器的三个 Kp、Ki、Kd 参数,我必须将它们放入系统中。我知道他们需要标准化,所以我必须从整数转换为 q15。问题来了。就我而言,我有:
kp = 2.7056
ki = 0.085
kd = 0
据我了解,我需要找到一个因子以使这些数字在 -32768...32767 中可表示,因此我将2^13
其用作因子:
kp = 2.7056 * 2^13 = 22164
ki = 0.085 * 2^13 = 696
我不明白是否需要除以PID计算的结果。如果我除法,当误差较低时,pid 输出为零:让我们有一个恒定的误差 e(n) = 2。在 PID 计算中(我使用函数 arm_pid_q15() 中描述的公式):
y(n) = y(n-1) + (kp+ki)*e(n) - kp*e(n-1)
y(n) = y(n-1) + (22164+696)*2 - 22164*2 = y(n-1) + 1392
如果y(n-1) = 0
,y(n) = 1392
。如果我除以2^13
因子,我有y(n) = 0
(整数)。
另一方面,如果我不除PID输出,就像将比例增益乘以2^13
因子。
有人可以帮助我理解这一点吗?谢谢。