专家PID控制matlab程序

专家PID控制matlab程序
1 专家PID控制
专家PID控制的实质是:基于受控对象和控制规律的各种知识,无须知道被控对象的精确模型,利用专家经验来设计PID参数。专家PID控制是一种直接型专家控制器。
典型的二阶系统单位阶跃响应误差曲线如图2一5所示。
在这里插入图片描述
令e(k)表示离散化的当前采样时刻的误差值,e(k-1),e(k-2)分别表示前一个和前两个采样时刻的误差值,则有
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
施,相当于实施开环控制;II,IV,VI,…区域,误差绝对值朝增大的方向变化,此时,可根据误差的大小分别实施较强或一般的控制作用,以抑制动态误差。

2 实例状态
求三阶传递函数的阶跃响应
在这里插入图片描述
其中采样时间间隔为1ms。
在这里插入图片描述
在这里插入图片描述
3 仿真结果
1)轨迹跟踪
在这里插入图片描述
2)实时误差
在这里插入图片描述
4 matlab程序

%% 专家PID控制
clc
clear 
close all;
ts=0.001;

sys=tf(5.235e005,[1,87.35,1.047e004,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;

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

kp=0.6;
ki=0.03;     
kd=0.01;

error_1=0;
for k=1:1:500
time(k)=k*ts;
   
r(k)=1.0;                    %目标轨迹

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

%专家控制规则
%规则1
if abs(x(1))>0.8      %Rule1:Unclosed control rule
   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.10;   
end   
。。。。。。略
  • 9
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电磁MATLAB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值