动态调节PID参数

11 篇文章 23 订阅
4 篇文章 2 订阅

本文根据https://blog.csdn.net/AdamShan/article/details/78458325中提到的的动态调节PID参数的方法使用Matlab simulink进行了一次仿真,值得申明的是这个方法不是上述博文作者的原创,有知道原创出处的朋友评论一下,我好感谢。

下面看simulink模型:
在这里插入图片描述
整个结构很简单:
在这里插入图片描述
这里我随便设置了一个二阶延迟系统

中间部分就是PID

在这里插入图片描述
在这里插入图片描述
这个function里面就是在不断计算和更新PID的参数

具体如下:


```bash
function [dp,k,flag,p]  = fcn(error,error_delay)
error = abs(error);
error_delay = abs(error_delay);

tol = 0.2;
k =0;
condi = 1;
flag =0;
dp = [0.5 ;0.2 ;0.2];
p = [8 ;5 ;5];

 while condi ==1

     for i = 1:3
         p(i)= p(i)+ dp(i);
         if error < error_delay
             flag = 1;
             error_delay = error;
             dp(i) = dp(i)*1.1;
            
         else
             p(i) = p(i) - 2*dp(i);
             if error < error_delay
                 flag =2;
             error_delay = error;
             dp(i) = 1.1* dp(i);
             else
                 p(i) = p(i)+dp(i);
                 flag =3;
                 dp(i) = dp(i)*0.9;
             end
         
         end
     end
     k = k+1;
     if k ==10
%      if sum(dp)<=0.1;
         condi = 2;
        
     end
     
 end
        
end
         

然后仿真运行一下:
可以看得出,选择不同精度要求的动态调节会影响到最后的system performance,我这里直接拿循环次数来作为影响最后参数的因素
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值