PID控制器
小场景
经过了一天辛苦的学习,你终于回到了宿舍, 准备去洗个热水澡, 一开始是凉水,于是你开始逐步右旋,又感觉太慢了,于是转的幅度更大,忽然又感觉到烫,赶忙在回调, 往复几次, 达到自己想要的温度, 开始舒舒服服地洗澡。这个问题抽象一下,就是开始假设x℃的水温, 要调节到y℃。你有以下几种调节温度的行为:
1.每隔1秒3℃步进调节,或者逐步减小调节 (比例系数, 当前误差);
2.逐步加大调节(积分增益, 过去误差的积累);
3.温度过热, 回调 (微分增益, 误差变化趋势)。
PID控制器
模拟PID的公式
U ( t ) = k p ( e ( t ) + 1 T I ∫ e ( t ) d t + T D de ( t ) d t ) \mathrm{U}(t)=k p\left(\operatorname{e}(t)+\frac{1}{T_{I}} \int \operatorname{e}(t) d t+\frac{T_{D} \operatorname{de}(t)}{d t}\right) U(t)=kp(e(t)+TI1∫e(t)dt+dtTDde(t))
U ( t ) ⟶ \mathrm{U}(\mathrm{t})\longrightarrow U(t)⟶ 调节(控制)器的输出信号
e ( t ) ⟶ \mathrm{e}(t) \longrightarrow e(t)⟶ 调节器的偏差信号, 它等于测量值与给定值的差 (e=error误差)
K p ⟶ K p \longrightarrow Kp⟶ 调节器的比例系数;
T I ⟶ T_{I} \longrightarrow TI⟶ 调节器的积分时间;其物理意义是偏差恒定时,控制量加倍所需的时间。
T D ⟶ T_{D} \longrightarrow TD⟶ 调节器的微分时间
没有比例时间这个说法。因为Kp*e里面误差信号e的单位和被控量是一样的。比例系数的单位是1
对模拟公式进行离散化处理
离散化:把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。
∫ 0 n e ( t ) d t = ∑ j = 0 n E ( j ) Δ t = T ∑ j = 0 n E ( j ) d e ( t ) d t ≈ E ( k ) − E ( k − 1 ) Δ t = E ( k ) − E ( k − 1 ) T \int_{0}^{n} e(t) d t=\sum_{j=0}^{n} E(j) \Delta t=T \sum_{j=0}^{n} E(j)\\ \frac{d e(t)}{d t} \approx \frac{E(k)-E(k-1)}{\Delta t}=\frac{E(k)-E(k-1)}{T} ∫0ne(t)dt=j=0∑nE(j)Δt=Tj=0∑nE(j)dtde(t)