积分分离PIDsimulink仿真

想使用积分分离PID在simulink中进行仿真,我们需要写S函数。关于如何写S函数构建灵活控制器,和写积分分离PID,可以看我往期博客。

S函数简单使用

PID各种算法

搭建模型


普通位置式PID调试:

进行PID参数整定:

积分分离式C代码

typedef struct
{volatile double      Proportion;             // 比例常数 Proportional Constvolatile double      Integral;               // 积分常数 Integral Constvolatile double      Derivative;             // 微分常数 Derivative Constvolatile double      Error1;                 // Error[n-1]volatile double      Error2;                 // Error[n-2]volatile double      iError;                 // Error[n]volatile    double      Error_sum;volatile  double      index;                  //积分分离标志
} PID;double PID_increase(int iError,PID* sptr)
{double iIncpid=0;sptr->iError=iError;                                    // 计算当前误差sptr->iError=iError;//积分分离处理 if(fabs(sptr->iError)> 180) sptr->index=1; else sptr->index=1;sptr->Error_sum+=sptr->iError;iIncpid=sptr->Proportion * sptr->iError                  // P+sptr->Integral * sptr->Error_sum*sptr->index               // I+sptr->Derivative * (sptr->iError-sptr->Error1); // DiIncpid=PID_OutputLimit(iIncpid);//限幅处理sptr->Error1=sptr->iError;                   // 存储误差,用于下次计算                           return(iIncpid);          // 返回计算值}

引入积分分离调试

if(fabs(sptr->iError)> 25) sptr->index=1; //index是积分分离标志位else sptr->index=1;

判断积分误差值太小,积分部分不起作用,存在较大静差。

对积分值的判断条件进行调整:
也就是这个判断条件进行调整,调试找到比较合适的值:

if(fabs(sptr->iError)> 150) sptr->index=1; //index是积分分离标志位
else sptr->index=1;

继续调整值:

  if(fabs(sptr->iError)> 150) sptr->index=1; //index是积分分离标志位
else sptr->index=1;

通过一简单调试,发现对比普通位置式PID,超调量明显下降,曲线稳定时间差不多。

积分分离PIDsimulink仿真相关推荐

  1. 积分分离PID控制算法

    积分分离PID控制算法 积分分离PID控制: 积分分离控制基本思路: 积分分离控制算法表示: 积分分离式PID控制算法程序流程图: 注:本文内容摘自<先进PID控制MATLAB仿真(第4版)&g ...

  2. PID控制器开发笔记之二:积分分离PID控制器的实现

    前面的文章中,我们已经讲述了PID控制器的实现,包括位置型PID控制器和增量型PID控制器.但这个实现只是最基本的实现,并没有考虑任何的干扰情况.在本节及后续的一些章节,我们就来讨论一下经典PID控制 ...

  3. PID积分饱和 和 积分分离

    PID积分饱和 和 积分分离 1.积分饱和:积分是当前误差的累加ei_sum=ei_sum +err_now;积分饱和则是当你pid输出到了你想要的最大值,但存在外界干扰造成err_now当前误差仍然 ...

  4. PLC PID控制优化系列之积分分离、变积分系数(FC)

    由于积分系数Ki是常数,所以在整个控制过程中,积分增量(这里指线性系统的斜率)是不变的.然而系统对于积分项的要求是,系统偏差大时积分作用应该是弱调节或者不调节,而在偏差小时,则应该加强.积分系数取大了 ...

  5. ADRC新手洗白之1“线性ADRC积分串联型仿真”

    注:初始ADRC参数如下(wc/wo=0.5):输入为阶跃 TD:采用离散fhan函数,且r0=10,h=0.1(对比且r0=10,h=1). ESO:采用线性LESO,β01=3*20,β02=3* ...

  6. Matlab仿真PID控制(带M文件、simulink截图和参数分析)

    文章目录 0.符号说明 1.如何根据连续系统建立差分方程 1.1.获取连续系统的传递函数 1.2.获取离散系统的传递函数 1.3.转换为差分方程 2.基本PID控制原理 3.比较PID输出,分析参数产 ...

  7. matlab限幅器无饱和怎么设置,抗积分饱和算法:输出限幅.ppt

    抗积分饱和算法:输出限幅 模块八 数字控制器设计 本章要点 1. 连续化设计方法 重点:数字PID设计 2. 直接离散化设计方法 重点:最少拍控制算法 3. 大林算法与纯滞后控制 4. 模糊控制基础 ...

  8. 带滤波器的PID控制仿真-3(Simulink仿真)

    在带滤波器的PID控制仿真-2的基础上对算例进行Simulink仿真. 控制器采用积分分离PI控制,即当误差的绝对值小于等于0.80时,加入积分控制,仿真结果如图1和2所示. 图1 加入滤波器时PID ...

  9. matlab仿真炉温控制,基于MATLAB的炉温控制系统的仿真.doc

    PAGE 11 PAGE 11 控制系统仿真 课程大作业 题目: 基于MATLAB的炉温控制系统的仿真 院系名称: 电气工程学院 专业班级: 自动F0904 学生姓名: 学号: 指导教师: 教师职称: ...

最新文章

  1. HTML的标签描述4
  2. UVa12100 - Printer Queue
  3. HTTP Status 405 - JSPs only permit GET POST or HEAD问题的分析和解决办法
  4. python内存的回收机制_简单介绍python的垃圾回收机制
  5. 【AI视野·今日CV 计算机视觉论文速览 第198期】Fri, 14 May 2021
  6. 机器学习实战(6):SVM-SMO-核函数 手写识别
  7. 同济大学自动化与计算机科学,同济大学本科专业选通信工程好,还是选自动化好呢?...
  8. javascript中将字符串转换为json格式的三种方法
  9. echo 多行_分享laravel-echo-server广播服务搭建-Laravel
  10. emacs linux 教程,Emacs基础入门教程(三)使用 Emacs 必知必会
  11. 夏泽网 中国渔业统计年鉴年鉴资料网
  12. 直接在Google Chrome浏览器中查看文档和PDF
  13. lamp兄弟连的解决问题套路
  14. java基础之静态代理和动态代理
  15. 云计算是什么?云计算的发展趋势是什么?
  16. 股市股票基金市场研报合集(2022年,共195份)
  17. VCPKG 特性 - Overlay triplets
  18. 我用一根网线,控制了整栋楼的网络
  19. 用服务器玩安卓虚拟机,Android手机上运行linux虚拟机
  20. 数据结构中数据、数据对象、数据元素、数据项之间的关系

热门文章

  1. 苹果电脑快速安装双系统 Winclone镜像包 Winclone安装Win7/Win8.1/Win10镜像
  2. 两条命令!Win7本本变无线基站
  3. 小白和坑爹的ATI显卡
  4. 9.那些年我们一起经历过的痛-“15个最常见介词的深层次含义”
  5. 电竞路由器推荐指南游戏宅看过来
  6. 区块链包装是什么,区块链项目包装又是怎么做的,近距离接触大咖为您一一解读
  7. j和jk是有区别的_JK制服和水手服有什么区别?
  8. 一键可消除锁屏密码 手机安全机制亟待完善
  9. 台式计算机清洁除尘内容,台式机怎么清理灰尘
  10. springboot实现多线程定时发送邮件