专家PID控制的MATLAB程序代码

上传人:夏** 文档编号:556427761 上传时间:2023-08-15 格式:DOCX 页数:7 大小:99.64KB
返回 下载 相关 举报
专家PID控制的MATLAB程序代码_第1页
第1页 / 共7页
专家PID控制的MATLAB程序代码_第2页
第2页 / 共7页
专家PID控制的MATLAB程序代码_第3页
第3页 / 共7页
专家PID控制的MATLAB程序代码_第4页
第4页 / 共7页
专家PID控制的MATLAB程序代码_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《专家PID控制的MATLAB程序代码》由会员分享,可在线阅读,更多相关《专家PID控制的MATLAB程序代码(7页珍藏版)》请在金锄头文库上搜索。

1、专家PID控制1专家PID控制原理专家PID控制的实质是:基于受控对象和控制规律的各种知识,无须知道被控对象的精 确模型,利用专家经验来设计PID参数。专家PID控制是一种直接型专家控制器。图1典型二阶系统单位阶跃响应误差曲线令e(k)表示离散化的当前采样时刻的误差值,e(k-1), e(k-2)分别表示前一个和前两个 采样时刻的误差值,则有Ae(k)=e(k)-e(k -1)Ae(k -1)=e(k-1)-e(k -2)根据误差及其变化,对图1所示的二阶系统单位阶跃响应误差曲线进行如下定性分析:当e(k)iM时,说明误差的绝对值已经很大。不论误差变化趋势如何,都应考虑控制器 的输出按定值输出

2、,以达到迅速调整误差,使误差绝对值以最大速度减小,同时避免超调。 此时,它相当于实施开环控制。当e(k)Ae(k)0或Ae(k)=0时,说明误差在朝误差绝对值增大方向变化,或误差为某一常值, 未发生变化。1)如果|e(k)|M2,说明误差较大,可考虑由控制器实施较强的控制作用,使误差绝对值朝减小方向变化,迅速减小误差的绝对值,控制器输出为u(k)=u(k -1)+kkpe(k)-e(k -1)+kie(k)+kde(k)-2e(k -1)+e(k -2)2)如果|e(k)|vM2,说明尽管误差朝绝对值增大方向变化,但误差绝对值本身并不是很大, 可考虑实施一般的控制作用,扭转误差的变化趋势,使其

3、朝误差绝对值减小方向变化,控 制器输出为u(k)=u(k -1)+kpe(k)-e(k -1)+kie(k)+kde(k)-2e(k -1)+e(k -2)当e(k)Ae(k)vO, Ae(k)Ae(k -1)0或e(k)=O时,说明误差的绝对值朝减小的方向变化,或者 已经达到平衡状态。此时,可考虑采取保持控制器输出不变。(4)当e(k)Ae(k)M2,可考虑实施较强的控制作用,即u(k)=u(k -1)+k1kpem(k)2)如果此时误差的绝对值较小,即| e(k)|vM2,可考虑实施较弱的控制作用,即 u(k)=u(k -1)+k2kpem(k)当e(k)1; k2为抑制系数,0vk2v1

4、; M1,M2为设定的误差 界限,M1M20; k为控制周期的序号(自然数);为任意小的正实数。在图1中,I,III,V,W,区域,误差朝绝对值减小的方向变化,此时,可采取保 持等待措施,相当于实施开环控制;II,W,W,训区域,误差绝对值朝增大的方向变 化,此时,可根据误差的大小分别实施较强或一般的控制作用,以抑制动态误差。 2.仿真实例求3阶传递函数的阶跃响应G (s)二5235pS3 + 87.3血 +1047CS其中,对象采样时间为lms。采用z变换进行离散化,经过z变换后的离散化对象为: y(k)=den(2)y(k1)den(3)y(k2)den(4)y(k3)num(2)u(k1

5、)num(3)u(k2) num(4)u(k3)采用专家PID设计控制器。在仿真过程中,取0.001,程序中的5条规则与控制算法的5 种情况相对应。MATLAB程序代码:%专家PID控制器clear all;close all; ts=0.001;%采样时间为1mssys=tf(5.235e005,1,87.35,1.047e004,0); %建立被控对象的传递函数 dsys=c2d(sys,ts,z); %采用零阶保持器法把传递函数离散化num,den=tfdata(dsys,v); %获得离散化模型的分子分母多项式系数,加上v, 可以让输出的值由元胞数组改为数组直接输出。u_1=0;u_2

6、=0;u_3=0;%控制变量u(k-1)、u(k-2)和口(k-3)初值y_1=0;y_2=0;y_3=0; %输出变量y(k-1)、y(k-2)和y(k-3)初值x=0,0,0; x2_1=0;%利用常规PID方法整定出来的PID参数kp=0.6;ki=0.03;kd=0.01;error_1=0;% 误差 e(k-1)初值for k=1:1:500%k为采样步数time(k)=k*ts;r(k)=1.0;%输入为单位阶跃信号u(k)=kp*x( 1 )+kd*x(2)+ki*x(3) ; %位置式数字 PID 算法 u(k)= kpe(k)+ Tde(k)-e(k-1)/T+TEe(k)/

7、Ti =kpe(k)+kje(k)-e(k-1)+kiEe(k) %专家控制规则%规则1: 误差很大,控制器按最大(最小)输出,相当于开环控制。if abs(x(1)0.8 u(k)=0.45;elseif abs(x(1)0.40u(k)=0.40;elseif abs(x(1)0.20 u(k)=0.12;(1)当|e(k)|M1时,实施开环控制。elseif abs(x(1)0.01u(k)=0.10;end%规则2:误差绝对值朝增大或为一常值,此部分又分为两种情况:误差较大 实施较强控制作用;误差不是很大,实施一般控制作用。当 e(k)Ae(k)0 或Ae(k)=0 时 如果|e(k)

8、|M,控制器输出为u(k)=u(k-1)+2k k e(k)-e(k -1)+ke(k)+k e(k)-2e(k -1)+e(k -2) 如果|e(k)|vM,控制器输出为u(k)=u(k -1)+2k e(k)-e(k T)+ke(k)+k e(k)-2e(k -1)+e(k -2)_pid控制器输出不变。if x(l)*x(2)0l(x(2)=0)if abs(x(1)=0.05u(k)=u_1+2*kp*x(1);elseu(k)=u_1+0.4*kp*x(1);endend %规则3:误差减小或已平衡 当 e(k)Ae(k)0 或 e(k)=0 时 保持控制器输出不变。if (x(1)

9、*x(2)0)l(x(l)=0) u(k)=u(k);end %规则4:误差处于极值,此部分又分为两种情况:误差绝对值较大,实施较 强控制作用;误差绝对值较小,实施较弱控制作用。(4)当 e(k)Ae(k)v0, Ae(k)Ae(k -1)M u(k)=u(k -1)+k k e (k)21pm如果|e(k)|Mu(k)=u(k -1)+k k e (k)22pmif x(1)*x(2) 0&x(2)*x2_l=0.05u(k)=u_l+2*kp*error_l;elseu(k)=u_l+0.6*kp*error_l;endend%规则5: 误差很小,引入积分。if abs(x(1)=0.00

10、1u(k)=0.5*x(l)+0.010*x(3);当 e(k)=10u(k)=10;endif u(k)=-10u(k)=-10;endy(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; %根据前面求得的分子分母多项式系数给出离散化被控对象 模型error(k)=r(k)-y(k); %e(k)=r(k)-y(k) %返回参数u_3=u_2;u_2=u_1;u_1=u(k); % 更新控制变量y_3=y_2;y_2=y_1;y_1=y(k); % 更新输出变量x(1)=er

11、ror(k);x2_1=x(2);x(2)=(error(k)-error_1)/ts;x(3)=x(3)+error(k)*ts;% 比例分量 x(1)=e (k)% 更新误差变化率% 微分分量 x(2)=e(k)-e(k-1)%积分分量x(3)=ie(k)%绘制输入变量r和输出变量y的曲线%绘制偏差e=r-y的曲线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);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号