![先进PID控制MATLAB仿真(第5版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/9/47549009/b_47549009.jpg)
1.3.16 基于卡尔曼滤波器的PID控制算法
1.卡尔曼滤波器原理
在现代随机最优控制和随机信号处理技术中,信号和噪声往往是多维非平稳随机过程。因其时变性,功率谱不固定。在1960年年初提出了卡尔曼滤波理论,该理论采用时域上的递推算法在数字计算机上进行数据滤波处理。
对于离散域线性系统:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_80_1.jpg?sign=1739276169-GZQPJfzH0kJgPjB3b68XNvxnYCNE1KmB-0-440ce25cb0b497192856b3d49a6b204b)
式中,w(k)为过程噪声信号;v(k)为测量噪声信号。
离散卡尔曼滤波器递推算法为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_80_2.jpg?sign=1739276169-fORvyr0xN8UGviy4vB9p5qXU5W8feLtD-0-0ad4e7c101e5357118def267f77c3b10)
误差的协方差为
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_80_3.jpg?sign=1739276169-rToNcMiPXH8NJdsQO91jQdWTtfpBVlzv-0-123584cf1b669139c122e31bc77bced3)
卡尔曼滤波器结构如图1-56所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_80_4.jpg?sign=1739276169-YaBGuIbwcnON7Ug4WEfOPbdm8FAIpwTI-0-742eca9f25936d6871ec342cec4e0013)
图1-56 卡尔曼滤波器结构图
【仿真实例】
验证卡尔曼滤波器的滤波性能。对象为二阶传递函数:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_80_5.jpg?sign=1739276169-N7E9iLuqDHsfu7ZiwSlrCtDMwqGewqs3-0-e5ebe8e06c9e6c2a14f2acff25341e1d)
取采样时间为1ms,采用Z变换将对象离散化,并描述为离散状态方程的形式:
x(k+1)=Ax(k)+B(u(k)+w(k))
y(k)=Cx(k)
带有测量噪声的被控对象输出为
yv(k)=Cx(k)+v(k)
式中,,
,C=[1,0],D=[0]。
【仿真之一】 采用M语言进行仿真
控制干扰信号w(k)和测量噪声信号v(k)幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为1.5Hz的正弦信号。采用卡尔曼滤波器实现信号的滤波,取Q=1、R=1。仿真时间为3s,原始信号及带有噪声的原始信号、原始信号及滤波后的信号和误差协方差的变化分别如图1-57~1-59所示。仿真结果表明,该滤波器对控制干扰和测量噪声具有很好的滤波作用。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_81_1.jpg?sign=1739276169-mmFpi3Io4cl84DFcqpgUzQ0tmFBtRtQC-0-7a1496607a3eb8828302c6f132b443f6)
图1-57 原始信号及带有噪声的原始信号
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_81_2.jpg?sign=1739276169-KEEXnVuYEAtqNZtfJbsGiA5V05nsXQTt-0-878f3303da927bedc685a5c7ebfcb2e4)
图1-58 原始信号及滤波后的信号
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_81_3.jpg?sign=1739276169-8kS7dLUCJWUFG0IsxX3gkwY1ipqqUWbB-0-a9151561fd9700198c8079e5b19dd255)
图1-59 误差协方差的变化
〖仿真程序〗 chap1_26.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_82_1.jpg?sign=1739276169-Wcy62f1dqWW7EsqzNBI9ieBWOeHABTzR-0-03bc18137d6bd3427082d5630018ed1b)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_83_1.jpg?sign=1739276169-7GSyRubjmvbQO1NvePmgC3EMGoa1Ickl-0-1d375118bd7069e74f97f000d41fd562)
【仿真之二】 采用Simulink进行仿真
Kalman算法由M函数实现。控制干扰信号w(k)和测量噪声信号v(k)幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为0.5Hz的正弦信号。采用卡尔曼滤波器实现信号的滤波,取Q=1、R=1。仿真结果如图1-60和图1-61所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_83_2.jpg?sign=1739276169-0am9oUVMqCfIPXjpY13rMrJ5jDzRv9Io-0-80f9a7bd7df3036906431bb04ee0e8dd)
图1-60 原始信号y及滤波后的信号ye
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_84_1.jpg?sign=1739276169-jaSUiLV3SH65ONk3Mk8HVsxkJvh6396m-0-8a4b0057c042ee30c2a64d80778f12cd)
图1-61 原始信号y及带有噪声的原始信号yv
〖仿真程序〗
(1)Simulink主程序:chap1_27.mdl
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_84_2.jpg?sign=1739276169-GsOLcXpgGn7HHFYx6xBvMmr4J0IkB7Y4-0-202357a0ca6ad8903bf9b94e1a69374f)
(2)Kalman滤波子程序:chap1_27f.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_84_3.jpg?sign=1739276169-zb1hMnk7VJl5ADuouZFRIDfsB08y7ZEk-0-2b70eaec26c2f16cd94517ebf85a52eb)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_85_1.jpg?sign=1739276169-GaPauswpDBU3BFS7heQqgJgDraVZyinY-0-c09895bb3c007b4cd109926a7bbe3de1)
(3)作图程序:chap1_27plot.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_85_2.jpg?sign=1739276169-HH8HIlHxsjdhxy3YCBmc4H0Jaz1uWbYX-0-80d58c2935885e8345c3ede874232a07)
2.基于卡尔曼滤波器的PID控制
基于卡尔曼(Kalman)滤波的PID控制系统结构如图1-62所示。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_85_3.jpg?sign=1739276169-xgdbUKwLjjfLagUQwmYULzD7Bil8GsfW-0-c7ab1b2a36a800c7df50ee99ef0bdd30)
图1-62 基于卡尔曼滤波的PID控制系统结构图
【仿真实例】
采用卡尔曼滤波器的PID控制。被控对象为二阶传递函数:
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_86_1.jpg?sign=1739276169-gzx7bcKRVqqL2iE1Uii1RWK3uD2jo2vz-0-b5b7d0757c16fe4d7e78db09054be97c)
离散化结果与“1.卡尔曼滤波器原理”的仿真实例相同。采样时间为1ms。控制干扰信号w(k)和测量噪声信号v(k)幅值均为0.002的白噪声信号,输入信号为一阶跃信号。采用卡尔曼滤波器实现信号的滤波,取Q=1、R=1。仿真时间为1s。分两种情况进行仿真:M=1时为未加滤波,M=2时为加滤波。在PID控制器中,取kp=8.0、ki=0.80、kd=0.20。加入滤波器前后PID控制阶跃响应如图1-63和图1-64所示。仿真结果表明,通过采用滤波器使控制效果明显改善。
本方法的不足之处是设计卡尔曼滤波器时需要被控对象的精确模型。
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_86_2.jpg?sign=1739276169-tIauIXhOKBuvHHEzDpkSYl04z3es9lj4-0-541067cb3d360e0411c699dcfb8358c8)
图1-63 无滤波器时PID控制阶跃响应(M=1)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_86_3.jpg?sign=1739276169-mNusTmEBlk0IU5LL4INZ8RXELOrv5bKi-0-e5cc4a03a885a5158697bdb3776874ad)
图1-64 加入滤波器后PID控制阶跃响应(M=2)
〖仿真程序〗 chap1_28.m
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_87_1.jpg?sign=1739276169-7dS1s50ZjKIgnb234RnelrDVf9iK8Pvx-0-1ad7f0571d642baa37f17b65969e5eec)
![](https://epubservercos.yuewen.com/49A0DC/26947284307535106/epubprivate/OEBPS/Images/45295_88_1.jpg?sign=1739276169-e4u0u8j97xXYSvK5RJXLJxkLy52tducP-0-0f5251f63c4056078c4b09b77c49d9ff)