1 位式控制算法
1.1 位式控制算法框图
首先,用户可以通过按键、滑动电阻或者其他方式输入一个控制信号Sv给控制算法, 然后控制算法会结合输入信号Sv和输出采集回来的信号Pv来计算输出量out,然后由out信号控制执行部件,最后由执行部件作用到具体的控制对象上。最后我们要从被控制对象上采集需要控制的变量(可以是温度、湿度等等)反馈给控制算法做修正。
我们以一个水温控制系统为例来说明位式控制算法的原理。
用户设置部分输入一个温度值,比如我们希望控制水温为80℃,则Sv = 80;执行部件可以是一个继电器控制的加热丝,控制对象就是水箱里的水,传感器是一个温度传感器。
1.2 位式控制算法的特点
- 位式控制算法输出信号只有H、L两种状态。
- 算法输出信号out的依据(二位式):
当 Pv > Sv ==> out = L (关断继电器,停止加热)
当Pv ≤ Sv ==>out = H (打开继电器,开始加热) - 控制简单,只是判断当前系统值和设定值的差值来调节。仅仅考虑了控制对象当前的状态值。
- 误差较大,因为被控制对象具有惯性,永远不可能有被控制对象状态值等于设定值这种情况。举例来说:由于热惯性的存在,当我们检测到温度达到设定温度时,关闭继电器,停止加热。虽然此时,加热丝不工作,但是由于热惯性的存在,导致温度还会继续上升;在开启加热时,也会出现类似的情况,虽然已经开启了加热,但是由于热惯性的存在,温度会继续下降一定范围,然后再开始升温。
2 PID算法
2.1 PID算法框图
Sv:用户设置值,目标值。
Pv:控制对象的当前值。
2.2 比例控制
我们假设,从开机以来传感器所有采样点的数据序列如下:
x1,x2,x3 ... xk-2, xk-1,xk
分析采样点的数据序列,可以挖掘出3方面的信息:
Ek = Sv - Xk
- >0:当前未达标
- =0:正好达标
- <0:当前已超标
此时的OUT = Kp * Ek + OUT0,这就是比例控制。我们需要注意,此时的输出已经不是二位式控制方式的输出,而是PWM波的输出。另外,也需要注意到比例控制是在有误差的时候才控制,没误差的时候不参与控制。虽然,在最后加上了控制常数OUT0,但是这样做在某些情况下可能会取得适得其反的效果。