老哥学习网 - www.lg9.cn 2024年05月11日 00:57 星期六
当前位置 首页 >爱情美文 >

[基于卡尔曼滤波器的船舶主机转速PID控制研究] 船舶主机转速上不去

发布时间:2019-04-18 06:46:34 浏览数:

  摘要:在主机调速系统中,随着主机的使用,各个部件的磨损与老化,使得以前建立的模型不准确,因此需要重新选择合适的控制参数来控制主机的转速,以达到车钟手柄的设定值。常规转速PID控制对模型的依赖性非常大,并且对参数的整定非常复杂。本文采用卡尔曼滤波器和模糊PID两种先进的控制方法对转速进行控制,并检验其效果。
  关键词:主机转速控制 卡尔曼滤波器 PID 控制
  Abstract: In the main engine control system, along with the main engine using various parts, wear and aging, the previously established model is not accurate, so it needs to choose appropriate control parameter to control the main engine "s speed, in order to achieve the bell handle setting value. The speed of conventional PID control to model the dependence is very large, and the parameter tuning is very complex. The Calman filter and fuzzy PID two advanced control method on the speed control, and test its effect.
  Key words: Main engine control system Kalman filter PID control
  1、引言
  常规PID调节器是一种应用广泛、技术成熟的控制方法。PID控制的基本思想是将偏差的比例、积分和微分三参数通过线性组合构成控制器,对被控对象进行控制,采用PID控制时,系统控制品质的优劣取决于上述三参数的整定。但在运动控制领域中,对控制品质的要求越来越高,且控制对象越来越复杂,特别是在具有强干扰噪声的工业过程中,因PID控制器的局限性,控制器的参数难以自动调整,不能达到理想的控制效果。
  卡尔曼滤波器是卡尔曼和布西于1960年和1961年提出来的,不但适用于标量估计的平稳系统,对于多输入多输出的非平稳的时变系统也能给出无偏最小的方差估计。另外,卡尔曼滤波算法是一种递推算法,特别适用于在计算机上运行。因而,卡尔曼滤波技术在空间技术、雷达、导航、控制等领域有着非常广阔的应用前景。本文将卡尔曼滤波器与传统的PID控制相结合,使控制效果得到了明显改善。
  2、基于卡尔曼滤波器的PID控制
  在现代随机最优控制和随机信号处理技术中,信号和噪声往往是多维非平稳的随机过程。由于其时变性,功率谱不稳定。卡尔曼滤波理论采用时域上的递推算法在数字计算机上对数据滤波处理。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。
  对于离散域线性系统
  x(k)=Ax(k-1)+(u(k)+w(k))
  yv(k)=Cx(k)+v(k)
  式中,w(k)为过程控制信号,v(k)为测量控制信号。
  离散卡尔曼滤波器递推算法为:
  [Mn(k)=][P(k)CT][CP(k)CT+R]
  P(k)=AP(k-1)AT+BQBT
  P(k)=(In-Mn(k)C)P(k)
  x(k)=Ax(k-1)+MN(k)(yv(k)-CAx(k-1))
  ye(k)=Cx(k)
  误差的协方差为:
  errcov(k)=CP(k)CT
  3、基于卡尔曼滤波器的PID控制算法及仿真
  3.1 基于卡尔曼滤波器PID控制的原理
  滤波器的控制结构如图1所示:
  其中w(t)为控制干扰信号,v(t)为测量干扰信号,y为受到影响后的输出信号,Ye为经过卡尔曼滤波器修正后的输出信号。
  3.2基于卡尔曼滤波的程序设计及仿真结果
  采用卡尔曼滤波器的PID控制,被控对象为:
  在MATLAB软件下对被控对象离散化,采样时间为0.001s输入信号为阶跃信号。采用卡尔曼滤波器实现信号的滤波,取Q=1,R=1。仿真时间为1s。在PID控制器中取kp=4;ki=0.8;kd=0.2。分两种情况进行仿真:M=1时为不加滤波器时;M=2为有滤波器时的结果。
  仿真程序为:
  >> %Discrement Kalman filter for PID cntrol
  >> %Reference kalman.m
  >> %x=Ax+B(u+w(k));
  >> %y=Cx+D+v(k)
  >> clear all
  >> close all
  >> ts=0.001;
  >> %Continuous Plant
  >> a=3.41;b=27.12;
  >> sys=tf(b,[1,a,0.28],"inputdelay",0.037);
  >> dsys=c2d(sys,ts,"z");
  >> [num,den]=tfdata(dsys,"v");
  >> A1=[0 1,0 -a];
  >> B1=[0;b];
  >> A1=[0 1;0 -a];
  >> C1=[1 0];
  >> D1=[0];
  >> [A,B,C,D]=c2dm(A1,B1,C1,D1,ts,"z");   >> Q=1; %covariances of w
  >> R=1; %covariances of v
  >> P=B*Q*B"; %Initial error covariance
  >> x=zeros(2,1); %Initial condition on the stata
  >> u_1=0;u_2=0;
  >> y_1=0;y_2=0;
  >> ei=0;
  >> error_1=0;
  >> for k=1:1:1000
  time(k)=k*ts;
  rin(k)=1;
  kp=4;
  ki=0.8;
  kd=0.2;
  w(k)=0.002*rands(1); %process noise on u
  v(k)=0.002*rands(1); %measurement noise on y
  y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
  yv(k)=y(k)+v(k);
  %measurement update
  Mn=P*C"/(C*P*C"+R);
  P=A*P*A"+B*Q*B";
  P=(eye(2)-Mn*C)*P;
  x=A*x+Mn*(yv(k)-C*A*x);
  ye(k)=C*x+D; %filtered value
  M=2;
  M=1;
  if M==1 %Not using filter
  yout(k)=yv(k);
  elseif M==2 %Using filter
  yout(k)=ye(k);
  end
  error(k)=rin(k)-yout(k);
  ei=ei+error(k)*ts;
  u(k)=kp*error(k)+ki*ei+kd*(error(k)-error_1)/ts; %PID
  u(k)=u(k)+w(k);
  errcov(k)=C*P*C"; %Covariance of estimation error
  %time update
  x=A*x+B*u(k);
  u_2=u_1;u_1=u(k);
  y_2=y_1;y_1=yout(k);
  error_1=error(k);
  end
  >> figure(1);
  >> plot(time,rin(k),"k",time,yout,"k");
  >> xlabel("time(s)");
  >> ylabel("rin,yout");
  未加滤波器的常规PID控制仿真结果如图2-1所示:
  基于卡尔曼滤波器的PID控制仿真结果如图2-2所示:
  3.3在sinmulink下的程序与仿真
  基于Kalman 滤波的sinmulink仿真主程序如图3-1所示:
  其中,kalman filter滤波子程序为:
  %Discrete Kalman filter
  %x=Ax+B(u+w(k));
  %y=Cx+D+v(k)
  function [u]=kalman(u1,u2,u3)
  persistent A B C D Q R P x
  yv=u2;
  if u3==0
  x=zeros(2,1);
  ts=0.001;
  a=27.12;b=3.41;c=0.28;
  sys=tf(b,[1,a,c],"inputdelay",0.037);
  A1=[0 1;0 -a];
  B1=[0;b];
  C1=[1 0];
  D1=[0];
  [A,B,C,D]=c2dm(A1,B1,C1,D1,ts,"z");
  Q=1 %Covariances of w
  R=1 %Covariances of v
  P=B*Q*B"; %Initial error covariance
  end
  %Measurement update
  Mn=P*C"/(C*P*C"+R);
  x=A*x+Mn*(yv-C*A*x);
  P=(eye(2)-Mn*C)*P;
  ye=C*x+D; %Filtered value
  u(1)=ye;
  u(2)=yv;
  errcov=C*P*C"; %Covariance of estimation error
  %Time update
  x=A*x+B*u1;
  P=A*P*A"+B*Q*B";
  未加滤波器的常规PID控制仿真结果如图3-2所示:
  基于卡尔曼滤波器的PID控制仿真结果如图3-3所示:
  从如上仿真结果来看:
  (1)常规PID控制,经过几次超调后便可稳定在制定状态,但是过渡过程时间要长于基于卡尔曼滤波器的PID控制。
  (2)基于卡尔曼滤波器的PID控制过渡时间较短,在整个过程中没有出现超调现象,在过渡过程结束后系统即进入指定的运行状态。
  由于船舶主机实际工作环境及过程较复杂,故实际用卡尔曼滤波器稳定主机转速效果较差些。
  4、 结束语
  本文采用卡尔曼滤波器和模糊PID两种先进的控制方法对船舶主机转速进行控制,在实验室条件下,其波动周期较短,效果比较突出,其控制品质比普通PID的控制品质有明显改善,但是由于船舶主机工作的特殊环境,还不足以实际检验,本文仅在实验室条件下进行了仿真控制研究,很多实际问题尚需进一步探讨。
  参考文献:
  [1] 薛定宇,陈阳泉.基于MATLAB/Simulink的系统仿真技术与应用[M].北京:清华大学出版社,2002.
  [2] 刘金琨. 先进PID控制MATLAB仿真 [M].北京:电子工业出版社船2004.
  [3] 姚明华. 船舶柴油主机转速PID控制及安保装置的研究 [J].上海海事大学硕士论文。上海海事大学,2006,6.
  [4] 鲍齐克 S.M. 数字滤波和卡尔曼滤波[M].北京:科学出版社,1984
  [5] 邹凌 ,孙玉强 ,孙琦 . 基于卡尔曼滤波器的PID控制仿真研究 [J]. 微计算机信息2007: 79-81
  作者简介:陈严(1984-),男,助教,专业方向为轮机工程技术。

推荐访问:卡尔 滤波器 转速 船舶

相关文章:

Top