PID公式
以上是离散PID计算公式,PID的连续和离散,以及离散中的位置和增量,原理上都是完全一样的。一般控制都是离散PID,而且离散的表达形式更加直观,这里只给出离散的形式。
PID控制的理解
非线性的可不可以
有了PID控制,系统的输入和输出间的具体关系就不重要了。PID最好还是线性,非线性需要根据情况改变pid系数,比如某个既不是线性也不是单调的系统,输出与输入间的关系为——二次函数:
y
=
(
u
−
1
)
2
y=(u-1)^2
y=(u−1)2
想让这个函数达到一个稳定的值y=4,初始状态为u=0,y=1。 假设不知道内部的关系是什么,只知道参考值4比初值1要大,可以先随便设个系数。 用matlab模拟该系统:
clc,clear;
ref = 4;
err = 0;
err_last = 0;
integral = 0;
y(1) = 1;
u(1) = 0;
for i=1:60
err = ref-y(i);
integral = integral+err;
u(i+1) = 0.05*err+0.05*(err-err_last)+0.05*integral;
err_last = err;
y(i+1) = (u(i+1)-1).^2;
end
i=1:61;
plot(i,u);
hold on;
plot(i,y);
grid on;
xlabel('采样次数');
ylabel('u and y');
legend('u','y');
结果为: 2. 如果初始状态为u=5,y=16。 虽然也能调节到参考值,但是u在最开始的时候变为了负。而且根据计算,y的初值比参考值大,误差为负,那么第一次采样的时候,u必为负。如果某些系统的输入不能为负,就可能出现问题。这种问题也很容易解决,给u加上限值即可,只允许u在这个范围内变化,一是为系统安全考虑,二是避免PID调节失败。比如虽然第一次采样后u被调为负,但是由于系统对u有限制,只能调到0,那么y=1,之后就会重复之前u=0,y=1的调节过程。 3. 如果初始状态为u=0,y=1,参考值为0 使用同样的pid系数就完全调不了了: 这是因为调节方向完全反了,即使加了限制,也不可行。比如若限制
0
<
=
u
<
=
5
0 |