为什么无法在Simulink中实现传递函数形式的PID控制器?
PID传递函数实现问题解答
1. 理想PID传递函数的正确性确认
你对PID传递函数的数学理解是完全正确的:理想PID的时域表达式为 u(t) = K_p e(t) + K_i \int_0^t e(\tau) d\tau + K_d \frac{de(t)}{dt},经过拉普拉斯变换后得到的传递函数为:G(s) = K_p + \frac{K_i}{s} + K_d s = \frac{K_d s^2 + K_p s + K_i}{s}
这是理想PID的标准传递函数形式,本身没有错误。
2. Simulink报错的原因
Simulink的原生传递函数模块仅支持输入因果可实现系统,要求传递函数的分母阶数≥分子阶数。上述理想PID的传递函数分子为2阶、分母为1阶,属于分子阶数更高的非因果系统:其微分项需要获取未来时刻的误差信号才能计算输出,物理上无法实现,因此Simulink传递函数模块不支持该形式的输入,并非PID控制器不能用传递函数表示。
3. 可实现的PID传递函数改造方法
如果需要用传递函数模块实现PID,只需要对微分项增加一阶低通滤波(滤波时间常数为N,通常取远小于系统时间常数的值),将传递函数改造为因果形式:G(s) = K_p + \frac{K_i}{s} + \frac{K_d s}{1 + \frac{s}{N}}
通分后分子、分母均为2阶,满足因果系统要求,即可正常输入到Simulink传递函数模块中。你也可以直接使用Simulink自带的PID控制器模块,其内部已经默认对微分项做了滤波处理,无需手动调整传递函数结构。
内容的提问来源于stack exchange,提问作者user1477107
相关产品推荐
相关产品推荐

