与传统的PID 控制系统的结构图相比较,在被控对象输出值之后
图2 采用卡尔曼滤波器的PID 控制系统的结构图
四、系统仿真
根据所示的控制系统,在Matlab/Simulink 环境下建立仿真模型平台,并在Matlab/Simulink 环境下编程仿真.
ScopesimoutuxhatOutPID(z)StepDiscrete PID Controller-1zDelayy(n)=Cx(n)+Du(n)x(n+1)=Ax(n)+Bu(n)Discrete State-SpaceTerminatormeasTo WorkspaceKALMANyhatOutkalman filterGaussianGaussian NoiseGeneratorGaussianGaussian NoiseGenerator1
带有测量噪声的被控对象输出为
取控制干扰、
测量干扰信号均为方差为0.01 的白噪声信号,输入阶跃信号幅值为1,Q=1,R=1.仿真时间为4s. 将PID 参数设置为Kp=20,Ki=70,Kd=2,
仿真结果如图3,4所示:
图3 滤波后的曲线 图4 未滤波曲线
图3 是采用卡尔曼滤波器结果,图4 是未采用卡尔曼滤波器的结果.通过图3 可知:采用卡尔曼滤波器后,噪声显著减小,稳定时间Ts 为2s,系统能够迅速的达到稳定,而未采用卡尔曼滤波器的系统,噪声含量多,控制输出不稳定.由图4 可见,使用传统PID进行控制,系统的品质较差,特别是在平衡位置附近有较大的震荡,这大大影响系统的稳定精度.
五、 结论
本文简要介绍了卡尔曼滤波器波理论及其算法,在对一级倒立摆建模的基础之上,对基于卡尔曼滤波器的PID 控制进行了仿真,仿真结果证明了该方法的有效性.通过对比可以看出,采用卡尔曼波器后,只要合理选用PID 控制器参数,可以得到稳定的系统输出,显著减小噪声的影响同时,能够有效减少系统的峰值时间,减小震荡次数,快速的使系统达到稳定.
附录:
(卡尔曼滤波程序)
function [xhatOut, yhatOut] = KALMAN(u,meas) % 卡尔曼滤波器
persistent P xhat A B C Q R % 定义持久性变量 if isempty(P) % 赋初始值 xhat = [0;0];
P = [0.2011 0.4036;0.4036 0.81]; A = [1 0.001; -0.025 1]; B = [0.000004484;0.009]; C = [1 0]; Q = 1*eye(1); R = 1*eye(1); end
% 计算状态预测值和其协方差矩阵 xhat = A*xhat + B*u; P = A*P*A' + B*Q*B'; % 计算卡尔曼增益 K = P*C'/(C*P*C' + R); % 计算测量残差 resid = meas - C*xhat;
% 更新最优估计值以及协方差矩阵 xhat = xhat + K*resid; P = (eye(2)-K*C)*P; % 输出结果 xhatOut = xhat;
yhatOut = C*xhatOut;
相关推荐: