先进PID控制MATLAB仿真(第5版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.3.16 基于卡尔曼滤波器的PID控制算法

1.卡尔曼滤波器原理

在现代随机最优控制和随机信号处理技术中,信号和噪声往往是多维非平稳随机过程。因其时变性,功率谱不固定。在1960年年初提出了卡尔曼滤波理论,该理论采用时域上的递推算法在数字计算机上进行数据滤波处理。

对于离散域线性系统:

式中,wk)为过程噪声信号;vk)为测量噪声信号。

离散卡尔曼滤波器递推算法为

误差的协方差为

卡尔曼滤波器结构如图1-56所示。

图1-56 卡尔曼滤波器结构图

【仿真实例】

验证卡尔曼滤波器的滤波性能。对象为二阶传递函数:

取采样时间为1ms,采用Z变换将对象离散化,并描述为离散状态方程的形式:

xk+1)=Axk)+Buk)+wk))

yk)=Cxk

带有测量噪声的被控对象输出为

yvk)=Cxk)+vk

式中,C=[1,0],D=[0]。

【仿真之一】 采用M语言进行仿真

控制干扰信号wk)和测量噪声信号vk)幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为1.5Hz的正弦信号。采用卡尔曼滤波器实现信号的滤波,取Q=1、R=1。仿真时间为3s,原始信号及带有噪声的原始信号、原始信号及滤波后的信号和误差协方差的变化分别如图1-57~1-59所示。仿真结果表明,该滤波器对控制干扰和测量噪声具有很好的滤波作用。

图1-57 原始信号及带有噪声的原始信号

图1-58 原始信号及滤波后的信号

图1-59 误差协方差的变化

〖仿真程序〗 chap1_26.m

【仿真之二】 采用Simulink进行仿真

Kalman算法由M函数实现。控制干扰信号wk)和测量噪声信号vk)幅值均为0.10的白噪声信号,输入信号幅值为1.0、频率为0.5Hz的正弦信号。采用卡尔曼滤波器实现信号的滤波,取Q=1、R=1。仿真结果如图1-60和图1-61所示。

图1-60 原始信号y及滤波后的信号ye

图1-61 原始信号y及带有噪声的原始信号yv

〖仿真程序〗

(1)Simulink主程序:chap1_27.mdl

(2)Kalman滤波子程序:chap1_27f.m

(3)作图程序:chap1_27plot.m

2.基于卡尔曼滤波器的PID控制

基于卡尔曼(Kalman)滤波的PID控制系统结构如图1-62所示。

图1-62 基于卡尔曼滤波的PID控制系统结构图

【仿真实例】

采用卡尔曼滤波器的PID控制。被控对象为二阶传递函数:

离散化结果与“1.卡尔曼滤波器原理”的仿真实例相同。采样时间为1ms。控制干扰信号wk)和测量噪声信号vk)幅值均为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所示。仿真结果表明,通过采用滤波器使控制效果明显改善。

本方法的不足之处是设计卡尔曼滤波器时需要被控对象的精确模型。

图1-63 无滤波器时PID控制阶跃响应(M=1)

图1-64 加入滤波器后PID控制阶跃响应(M=2)

〖仿真程序〗 chap1_28.m