专家PID控制Matlab仿真

专家PID控制

一、简介

专家PID控制,专家PID控制不同于常规意义下的PID控制,是专家经验与PID控制算法的结合,是基于PID控制器的智能化优化。

专家PID控制就是基于被控对象和控制规律的各种知识,而不需要知道被控对象的精确模型,利用专家经验来设计PID参数。

我们假设当前为第k采样(离散化),当前偏差为e(k),同样前一采样时刻的偏差为e(k-1),而前两个采样时刻的偏差为e(k-1),则可以得到两次的偏差增量为:

\Delta e(k)=e(k)-e(k-1)

\Delta e(k-1)=e(k-1)-e(k-2)

设定偏差的一个极大值,记为Mmax;设定一个偏差较大的中间值,记为Mmid;设定一个偏差的极小值,记为Mmin。根据以上偏差、偏差增量以及偏差极值的设定,我们分析如下:

1)如果|e(k)|>Mmax  (规则一)

这种情况说明偏差的绝对值已经很大了,不论偏差变化趋势如何,都应该考虑控制器的输入应按最大(或最小)输出,以达到迅速调整偏差的效果,使偏差绝对值以最大的速度减小。t同时避免超调,此时相当于开环控制。

(2)当e(k)*∆e(k)>0或者∆e(k)=0时      (规则二)

这种情况说明偏差在朝向偏差绝对值增大的方向变化,或者偏差为某一固定值,此时我们再判断偏差的绝对值与偏差的中间值Mmid之间的关系。

(2.1)此时如果|e(k)|>Mmid

说明偏差也较大,可考虑由控制器实施较强的控制作用,以达到扭转偏差绝对值向减小的方向变化,并迅速减小偏差的绝对值。

u(k)=u(k-1)+k_{1}*\left \{k_{p}*[e(k)-e(k-1)]+k_{i}*e(k)+k_{d}*[e(k)-2e(k-1)+e(k-2)] \right \}

(2.2)此时如果|e(k)|≤Mmid

说明尽管偏差是向绝对值增大的方向变化,但是偏差绝对值本身并不是很大,可以考虑控制器实施一般的控制作用,只需要扭转偏差的变化趋势,使其向偏差绝对值减小的方向变化即可。

u(k)=u(k-1)+k_{p}*[e(k)-e(k-1)]+k_{i}*e(k)+k_{d}*[e(k)-2e(k-1)+e(k-2)]

(3)当e(k)*∆e(k)<0且∆e(k)*∆e(k-1)>0或者e(k)=0时

说明偏差的绝对值向减小的方向变化,或者已经达到平衡状态,此时保持控制器输出不变即可。

u(k)=u(k-1)

(4)当e(k)*∆e(k)<0且∆e(k)*∆e(k-1)<0时

说明偏差处于极限状态。

(4.1)如果此时偏差的绝对值较大,|e(k)|>Mmid

可以考虑实施较强控制作用。

u(k)=u(k-1)+k_{1}k_{p}e_{k}

(4.2)如果此时偏差绝对值较小,|e(k)|<Mmid

可以考虑实施较弱控制作用。

u(k)=u(k-1)+k_{2}k_{p}e_{k}

其中,k1为增益放大系数,k1取大于1的值;k2为增益抑制系数,取大于0而小于1的值。

(5)如果|e(k)|<Mmin

这种情况实际上说明偏差绝对值很小,这种偏差有可能是系统静差引起的,此时必须要引入积分作用,减小系统的稳态误差。

u(k)=u(k-1)+k_{p}(e(k)-e(k-1)+k_{i}e(k)

二、题目要求

三、实验代码

%Expert PID Controller
clear all;
close all;
ts=0.001;

sys=tf(133,[1,25,0]);  %Plant
dsys=c2d(sys,ts,'z');
[num,den]=tfdata(dsys,'v');

%u_1=0;u_2=0;u_3=0;
%y_1=0;y_2=0;y_3=0;
u_1=0;u_2=0;
y_1=0;y_2=0;

x=[0,0,0]';
x2_1=0;

kp=7;
ki=22.4;     
kd=1.33;


error_1=0;
for k=1:1:500
time(k)=k*ts;
   
r(k)=1.0;                    %Tracing Step Signal

u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller


%Expert control rule
if abs(x(1))>0.9      %Rule1:Unclosed control rule
   u(k)=16;
elseif abs(x(1))>0.7      
u(k)=5.7;
elseif abs(x(1))>0.5      
u(k)=3.5;
elseif abs(x(1))>0.40        
   u(k)=0.4;
elseif abs(x(1))>0.20    
   u(k)=0.2; 
elseif abs(x(1))>0.01 
   u(k)=0.05;   
end   

if x(1)*x(2)>0|(x(2)==0)       %Rule2
   if abs(x(1))>=0.05
      u(k)=u_1+1.6*(kp*x(2)+ki*x(1)+kd*(x(2)-x2_1));

   else
      u(k)=u_1+(kp*x(2)+ki*x(1)+kd*(x(2)-x2_1));

   end
end
                                                                                                                                                                                                                                                                                                                                                                                                              
if (x(1)*x(2)<0&x(2)*x2_1>0)|(x(1)==0)   %Rule3
    u(k)=u(k);
end

if x(1)*x(2)<0&x(2)*x2_1<0   %Rule4
   if abs(x(1))>=0.05
      u(k)=u_1+1.6*kp*error_1;
   else
      u(k)=u_1+0.2*kp*error_1;
   end
end

if abs(x(1))<=0.005   %Rule5:Integration separation PI control
%    u(k)=0.9*x(1)+0.110*x(3);
   u(k)=u_1+kp*x(2)+ki*x(1);

end

%Restricting the output of controller
if u(k)>=10
   u(k)=10;
end
if u(k)<=-10
   u(k)=-10;
end

%Linear model
%y(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u_1+num(3)*u_2+num(4)*u_3;
y(k)=-den(2)*y_1-den(3)*y_2+num(1)*u(k)+num(2)*u_1+num(3)*u_2;
error(k)=r(k)-y(k);

%----------Return of parameters------------%
%u_3=u_2;u_2=u_1;u_1=u(k);
u_2=u_1;u_1=u(k);
%y_3=y_2;y_2=y_1;y_1=y(k);
y_2=y_1;y_1=y(k);
   
x(1)=error(k);                % Calculating P
x2_1=x(2);
x(2)=(error(k)-error_1)/ts;   % Calculating D
x(3)=x(3)+error(k)*ts;        % Calculating I

error_1=error(k);
end
figure(1);
plot(time,r,'b',time,y,'r');
xlabel('time(s)');ylabel('r,y');
figure(2);
plot(time,r-y,'r');
xlabel('time(s)');ylabel('error');

四、实验结果

说明:发现性能一般般吧,略超调,震荡得比较厉害,专家PID需要专家的经验(我不太行),仅供参考。

对比:PID tune

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值