前言
今天智能车培训听完綦佬讲解pid体验良好,决定做下记录,顺便自己也正儿八经写篇关于pid的笔记。
一、PID基础
1.1 控制系统的框图
- 执行器
- 传感器
- 控制器
1.2 控制器的设计
1.2.1 on-off控制
比如我们举个烧水壶加热到60℃的例子,仅仅控制电热丝的通断可实现on-off控制,即当温度小于60℃时通,大于60℃时断,这样便可实现简单的控制。
这样的设计虽然简单但是这样存在一定的缺陷:频繁开关会损伤执行器的寿命。
1.2.2 带死区的on-off控制
即在1.2.1的基础上,假如并不需要控制水温60℃,而是存在一定的死区,如50℃-70℃都可以,则此时温度小于50℃时通,大于70℃时断。
这样减少了开关通断的频率从而提高了使用寿命。
1.2.3 相对连续的控制器–P控制(Proportion)
看了上述的两种控制器,我们不由得思考是否存在一种控制器能同时相对精准的控制温度,同时又能减少开关的频繁通断。
由此我们引出了相对连续的控制器。与之相应的也应该有相对连续的传感器。
我们记当前值$Z$与预期值$X$的偏差为$error$,即$$error=X-Z$$
于是输出值$out=K_c*error$ ,其中$K_c$为比例系数
当$error$减小时,$out$也随之减小
通过error值我们便可以用占空比来得到相对连续的控制量。
那么这样是否存在问题呢?
我们可以看到当Z与X相等时,error值则为0,即停止输出,当Z小于X时再输出。从一个长的时间跨度来看输出的平均值便小于了预期值,即存在稳态误差。
另外,我们还要注意$K_c$值不能设的太大,否则一个很小的误差便会引起系统很大的改变,于是误差便会越来越大(发散系统)。
1.2.4 P-I控制 (比例-积分) (Proportion-Integration)
为减小稳态误差,我们引入了积分量
$$out=K_c(e(t)+\frac{1}{T_i}\int e(t)dt)$$
其中$\frac{1}{T_i}$为积分时间常数,$\frac{1}{T_i}\int e(t)dt$为耗散
这样又是否已经可以很好的控制系统了呢?
我们思考这样两种情况:
可以看到左图的当前值是趋向于预期值的,而右图的当前值是远离期望值的,对于P-I控制来说他们输出的out值却是一样的,对于这样的情况这样的控制策略显然并不好。
1.2.4 P-I-D控制 (比例-积分-微分) (Proportion-Integration-Derivation)
于是我们引入微分项
$$out=K_c\Big(e(t)+\frac{1}{T_i}\int e(t)dt+T_d\frac{de(t)}{dt}\Big)$$
这里当$K_c$变化时,PID三项均会变化,于是我们引入一种更实用的写法
$$out=K_pe(t)+K_i\int e(t)dt+K_d\frac{de(t)}{dt}$$
只需改变$K_p$、$K_i$、$K_d$即可分别控制PID三项
二、PID调参
三、PID理论证明
四、待定
咕咕咕咕咕咕咕咕