搜索
您的当前位置:首页正文

专家系统控制PID智能控制

来源:知库网
智能控制

专家PID控制系统Matlab仿真

摘要:分析了一个速度控制器的控制仿真。其传递函数为:

G(s)

523500 32s87.35s1047s使用专家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仿真

因篇幅问题不能全部显示,请点此查看更多更全内容

Top