专家PID控制系统Matlab仿真
摘要:分析了一个速度控制器的控制仿真。其传递函数为:
G(s)
523500 32s87.35s1047s使用专家PID控制系统,输入信号为阶跃信号,取采样时间为1ms,画出阶跃响应曲线和误差变化曲线。
0引言
简介传统PID系统原理:
从系统的稳定性、响应速度、超调量和稳态精度等方面来考虑,Kp、Ki、Kd对系统的作用如下:
(1) 系数Kp的作用是加快系统的响应速度,提高系统的调节精度。KP越大,系统的响应速度越快,系统的调节精度越高,但易产生超调,甚至导致系统不稳定、Kp过小,则会降低调节精度,使响应速度缓慢,从而延长调节时间,使系统静态、动态特性变坏。
(2) 积分系数Ki的作用是消除系统的稳态误差。Ki越大,系统的稳态误差消除越快,但Ki过大,在响应过程的初期会产生积分饱和现象,从而引起响应过程的较大超调;若Ki过小,将使系统稳态误差难以消除,影响系统的调节精度。 (3)微分作用系数Kd的作用是改善系统的动态
特性。其作用要是能反应偏差信号的变化趋势,并能在偏差信号值变的太大之前,在系统引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
1专家控制
专家控制(Expert Control)的实质是基于受控对象和控制规律的各种知识,并以智能的方式利用这些知识来设计控制器。利用专家经验来设计PID参数便构成专家PID控制。
典型的二阶系统单位阶跃响应误差曲线如图1、2所示。对于典型的二阶系统阶跃响应过程作如下分析,根据误差及其变化,可设计专家PID控制器,该控制器可分为五种情况进行设计
[1]。
图1 专家PID控制阶跃响应曲线
表1 Kp 、Ki、Kd对系统时间域性能指标的影响
参数名称 Kp Ki Kd 上升时间 减少 减少 微小变化 超调量 增大 增大 减小 过渡过程时间 微小变化 增大 减小 静态误差 减少 消除 微小变化
图2 误差响应曲线
程序:
%Expert PID Conttollcr clear all; close all; ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,0]); %tf生成或转化传递函数模型 dsys=c2d(sys,ts,'z');
%将连续系统离散化(进行采样)
[num,den]=tfdata(dsys,'v'); %获得传递函数模型数据,系统模型的属性值
u_1=0.0;u_2=0.0;u_3=0.0;%设定初始值 y_1=0.0;y_2=0.0;y_3=0.0; x=[0 0 0]; x2_1=0;
kp=0.6; %p控制系数,比例控制,着眼于当前值 ki=0.03; %i控制系数,积分控制,着眼于长期以来的数值
kd=0.01; %d控制系数,微分控制,能预测数值未来趋势 error_1=0;
%对象采样时间为1ms,仿真过程中,最小变化取0.001,程序中的五条规则情况相对应 for k=1:1:500; time(k)=k*ts;
rin(k)=1.0; %tracing jieyue signal 用于描述阶跃响应曲线目标值
u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID controller pid控制
%expert control rule
If abs(x(1))>0.8
%rule1:unclosed control firstly实施开环控制 %x(1)为误差,说明误差的绝对值已经很大,不论误差的趋势变化,都应该最大的减小 u(k)=0.45;
elseif abs(x(1))>0.40 u(k)=0.40;
elseif abs(x(1))>0.20 u(k)=0.12;
elseif abs(x(1))>0.01 u(k)=0.1; end
if (x(1)*x(2)>0)|(x(2)==0) %rule2
%x(2)为误差变化的k时刻值,说明误差朝误差绝对值增大的方向变化或误差为一常数 if abs(x(1))>=0.05
%认为误差过大,实施较强的控制作用,u_1为第k-1次控制器输出(初始值为零) u(k)=u_1+2*kp*x(1); else
%认为误差较小,实施一般的控制作用 u(k)=u_1+0.4*kp*x(1); end end if
(x(1)*x(2)<0&x(2)*x2_1>0)|(x(1)==0) %rule3 %x2_1为误差变化的k-1时刻,说明误差朝误差绝对值减小的方向变化或误差为零 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+2*kp*error_1;%error_1为误差x(1)的第k个极值
else
u(k)=u_1+0.4*kp*error_1;
end end
if abs(x(1))<=0.001
%rule5:integration separation pi control %说明误差处于极小状态,此时加入积分,减小稳态误差
u(k)=0.5*x(1)+0.01*x(3); end
%restricting the output of controller 限制输出控制器
if u(k)>=10 u(k)=10; end if u(k)<=-10 u(k)=-10; end
%linear model线性模型(传递函数) yout(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; %阶跃响应曲线,要越来越接近rin=1 error(k)=rin(k)-yout(k); %误差变化 %return of pid parameters(参数循环更新) u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k);
x(1)=error(k); %calculating P 将当前第k误差e赋予x(1)
x2_1=x(2); %将误差变化x(2)的k-1时刻赋予x2_1,用于规则3和4运算
x(2)=(error(k)-error_1)/ts; %calculating D 误差变化x(2)的k时刻
x(3)=x(3)+error(k)*ts; %calculating I error_1=error(k); %将当前第k误差e赋予error_1,用于规则4运算 end
figure(1);%专家pid控制阶跃响应曲线 plot(time,rin,time,yout,'r'); xlabel('time(s)');ylabel('rin,yout'); figure(2);%误差响应曲线 plot(time,rin-yout);
xlabel('time(s)');ylabel('error');
参考文献
[1]董海鹰. 智能控制理论及应用[M].中国铁道出版社:北京.2006,47-48(页)
模糊PID控制系统Matlab仿真
因篇幅问题不能全部显示,请点此查看更多更全内容