对PID控制器三个参数的认识

P I D \rm PID PID控制器三个参数的认识

声明:本文代码思路参考了(B站ID:DR_CAN知乎ID:小潘是个工程师),又或者自己在看二人的帖子或视频后,自己做了相应的改进。奈何时间有点长了,再次整理时实在无法回忆起细节,若有读者发现了代码的起源处,烦请告知,我会补上相应的引用链接。

本文尝试演示了 P \rm P P I \rm I I D \rm D D三个参数对控制器性能的影响,并给出了相应的实现代码。需要指出的是:在实际的控制系统中,依靠简单的控制变量法无法直接获取满意的控制器参数,一组最优控制器参数的获取并非易事。实际控制中,相较于 P I D \rm PID PID P I \rm PI PI控制器可能更常见,这在一定程度上削弱了调参的难度。本文仅作为参考,帮助读者对PID控制器的三个参数产生一个感性的认识。蓝色虚线框中的内容不同造就了三段不同的演示代码。
在这里插入图片描述

P \rm P P对控制器性能的影响

MATLAB代码

clear
figure
Gs = tf(2,conv([3,1],[2,1]));           %Gs是传递函数,conv是可以理解为因式分解(3s+1)(2s+1)
Kp = [0.5,2,5,10];                      %取不同的比例系数,类似数组
for m = 1:4
    sys = feedback(Kp(m)*Gs,1);         %feedback(G,H),(G,H需事先设定)。
                                        %其中G是传递函数,H为反馈函数,表示一个控制系统G,对其进行负反馈H(要求正反馈用-H)。这里前面写上比例环节与系统的串联,后面的1表示负反馈
    step(sys);                          %求阶跃响应,可以用形如step(feedback(G,H))
    hold on;
end

%% 格式控制
lgd = legend({'Kp=0.5','Kp=2','Kp=5','Kp=10'},'FontSize',10.5,'FontName','Times New Roman');
set(gcf,'unit','centimeters','position',[30 15 15 10]);%设置画布大小和位置
set(gca,'FontName','Times New Roman','FontSize',10.5,'FontWeight','bold' ,'XColor',[0 0 0] ,'YColor',[0 0 0]);%坐标轴数字大小,坐标轴数字是灰色,故加color代码
xlabel('Time','FontName','Times New Roman','FontWeight','Bold','FontSize',10.5);
ylabel('Amplitude','FontName','Times New Roman','FontWeight','Bold','FontSize',10.5);
grid on
set(gca,'gridlinestyle',':','Gridalpha',1)

代码效果

在这里插入图片描述

I \rm I I对控制器性能的影响

MATLAB代码

figure
clear
Gs = tf(2,conv([3,1],[2,1]));
Kp = 2;
Ti = [2,4,8,12];
for m = 1:4
G1 = tf([Kp,Kp/Ti(m)],[1,0]);              %这里也是(KpS+Kp/Ti)/s
sys = feedback(G1*Gs,1);
step(sys); 
hold on;
end

%% 格式控制
lgd = legend({'Ti=2','Ti=4','Ti=8','Ti=12'},'FontSize',12,'FontName','Times New Roman');
set(gcf,'unit','centimeters','position',[30 15 15 9]);%设置画布大小和位置
set(gca,'FontName','Times New Roman','FontSize',10.5,'FontWeight','bold' ,'XColor',[0 0 0] ,'YColor',[0 0 0]);%坐标轴数字大小,坐标轴数字是灰色,故加color代码
xlabel('Time','FontName','Times New Roman','FontWeight','Bold','FontSize',10.5);
ylabel('Amplitude','FontName','Times New Roman','FontWeight','Bold','FontSize',10.5);
grid on
set(gca,'gridlinestyle',':','Gridalpha',1)

代码效果

在这里插入图片描述

D \rm D D对控制器性能的影响

MATLAB代码

figure
clear
Gs = tf(2,conv([3,1],[2,1]));
Kp = 10;
Td = [0,0.4,1,4];
for m = 1:4
G1 = tf([Kp*Td(m),Kp],[0,1]);            %这个地方要注意 (Kp*Td(m)*S+Kp)/1=Kp(1+TdS)
sys = feedback(G1*Gs,1);                 %前面是微分环节与系统的串联,负反馈
step(sys);
hold on;
end

%% 格式控制
lgd = legend({'Td=0','Td=0.4','Td=1','Td=4'},'FontSize',10.5,'FontName','Times New Roman');
set(gcf,'unit','centimeters','position',[30 15 15 9]);%设置画布大小和位置
set(gca,'FontName','Times New Roman','FontSize',10.5,'FontWeight','bold' ,'XColor',[0 0 0] ,'YColor',[0 0 0]);%坐标轴数字大小,坐标轴数字是灰色,故加color代码
xlabel('Time','FontName','Times New Roman','FontWeight','Bold','FontSize',10.5);
ylabel('Amplitude','FontName','Times New Roman','FontWeight','Bold','FontSize',10.5);
grid on
set(gca,'gridlinestyle',':','Gridalpha',1)

代码效果

在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值