增量式PID指数字控制器的输出只是控制量的增量∆uk。当执行机构需要的控制量是增量,而不是位置量的绝对数值时,可以使用增量式PID控制算法进行控制。

1、公式推导:

增量式PID控制算法可以通过位置式PID公式推导出。

①:当前误差采样后的输出值

μ k = K p e k + K i ∑ j = 0 k e j + K d ( e k − e k − 1 ) \mu_{k} = K_{p}e_{k}+K_{i}\sum_{j=0}^{k}{e_{j}}+K_{d}(e_{k}-e_{k-1}) μk​=Kp​ek​+Ki​j=0∑k​ej​+Kd​(ek​−ek−1​)

②:上一次误差采样后的输出值

μ k − 1 = K p e k − 1 + K i ∑ j = 0 k − 1 e j + K d ( e k − 1 − e k − 2 ) \mu_{k-1} = K_{p}e_{k-1}+K_{i}\sum_{j=0}^{k-1}{e_{j}}+K_{d}(e_{k-1}-e_{k-2}) μk−1​=Kp​ek−1​+Ki​j=0∑k−1​ej​+Kd​(ek−1​−ek−2​)

①-② 得出增量式PID的公式为:

Δ μ k = u k − u k − 1 = K p ( e k − e k − 1 ) + K i e k + K d ( e k − 2 e k − 1 + e k − 2 ) \Delta\mu_{k} = u_{k} - u_{k-1} =K_{p}(e_{k}-e_{k-1}) + K_{i}e_{k}+K_{d}(e_{k}-2e_{k-1}+e_{k-2}) Δμk​=uk​−uk−1​=Kp​(ek​−ek−1​)+Ki​ek​+Kd​(ek​−2ek−1​+ek−2​)

简化后得:

Δ μ k = P ∗ e k − I ∗ e k − 1 + D ∗ e k − 2 \Delta\mu_{k} = P*e_{k}-I*e_{k-1}+D*e_{k-2} Δμk​=P∗ek​−I∗ek−1​+D∗ek−2​

2.代码实现:

/********************结构体定义********************/
typedef struct
{__IO int32_t  SetPoint;    //设定目标 Desired Value__IO float    Proportion;  //比例常数 Proportional Const__IO float    Integral;    //积分常数 Integral Const__IO float    Derivative;  //微分常数 Derivative Const__IO int      LastError;   //Error[-1]__IO int      PrevError;   //Error[-2]
}PID_TypeDef;/********************PID参数初始化********************/
PID_TypeDef  sPID;                    // PID参数结构体
void PID_ParamInit()
{sPID.LastError = 0;               // Error[-1]sPID.PrevError = 0;               // Error[-2]sPID.Proportion = 0;              // 比例常数 Proportional ConstsPID.Integral = 0;                // 积分常数  Integral ConstsPID.Derivative = 0;              // 微分常数 Derivative ConstsPID.SetPoint = 0;                // 设定目标Desired Value
}/********************PID算法实现********************/
/*** 输入参数:当前控制量* 返 回 值:目标控制量*/
int32_t SpdPIDCalc(float NextPoint)
{float iError,iIncpid;iError = (float)sPID.SetPoint - NextPoint; //偏差/* 消除抖动误差 */if((iError<0.05f )&& (iError>-0.05f))iError = 0.0f;iIncpid=(sPID.Proportion * iError)                //E[k]项-(sPID.Integral * sPID.LastError)     //E[k-1]项+(sPID.Derivative * sPID.PrevError);  //E[k-2]项sPID.PrevError = sPID.LastError;                  //存储误差,用于下次计算sPID.LastError = iError;return(iIncpid);                                  //返回增量值}

参考:

基于STM32的PID算法实现

学习笔记—增量式PID详细实现(C语言)相关推荐

  1. Arduino 让小车走直线的秘密 增量式PID 直流减速编码电机

    直流减速电机增量式PID 通俗易懂版 对于我一个双非学校没上过自控的电子专业本科生而言,这个东西真的是太难了,之前研究了一个A4950驱动,价格便宜,驱动能力高,安全性高,便捷性高,一句话就是比L29 ...

  2. 基于自适应算法和增量式PID算法的模拟直升飞机控制系统

    基于自适应算法和增量式PID算法的模拟直升飞机控制系统 文章目录 基于自适应算法和增量式PID算法的模拟直升飞机控制系统 控制系统硬件 单片机系统 传感器系统介绍 直升机模拟系统介绍 系统模块介绍 A ...

  3. 位置式PID与增量式PID区别浅析(百度百科增量式PID讲解思路概念更明确清晰)

    位置式PID与增量式PID区别浅析 Z小旋 2019-04-26 08:55:12  59882  收藏 713 分类专栏: NXP智能车学习 文章标签: 位置式PID PID 增量式PID 版权 1 ...

  4. 入门智能车 | 带你认识PID闭环控制 - 增量式PID实现电机速度闭环

    带你认识PID闭环控制 - 增量式PID实现电机速度闭环 闭环控制是指控制论的一个基本概念.指作为被控的输出量以一定方式返回到作为控制的输入端,并对输入端施加控制影响的一种控制关系.带有反馈信息的系统 ...

  5. 四轮电磁------速度环增量式PID

    四轮电磁------速度环增量式PID 这是我的第一次书写博客,仅代表我个人看法,若有问题希望各位大佬不吝赐教!!! 我们最近正在准备智能车四轮电磁的校内赛,我采用的是英飞凌的TC264单片机,使用的 ...

  6. 增量式pid+位置式PID(电机位置闭环控制)

    ps:2022更新 pid详细解释 一般很少用增量式,都是用位置式,下文增量式可以不看 本文分为几个部分: 1.编码器 2.定时器输入捕获(把定时器初始化为编码器模式) 3.pid闭环控速度 编码器配 ...

  7. PID控制的深入探讨(位置式PID、增量式PID、PID的积分饱和)

    本文主要探讨PID算法在使用时的一些实际问题.处理技巧和方法,学习本节内容需要先对PID控制算法有基本的了解. 1)PID控制的基本原理 PID是一个二阶线性控制器,它具有不需要建立数学模型,控制效果 ...

  8. 位置式\增量式PID、模糊PID、BRF-PID的Matlab实现以及封装

    位置式\增量式PID.模糊PID.BRF-PID的Matlab实现以及封装 位置式\增量式PID.模糊PID.BRF-PID的Matlab实现以及封装 简要 Model类 Strategy 类 PID ...

  9. 位置式PID与增量式PID的介绍和代码实现

    PID分为位置式PID与增量式PID. 一.位置式PID 1.表达式为: 2.缺点: 1).由于全量输出,所以每次输出均与过去状态有关,计算时要对ek进行累加,工作量大: 2).因为计算机输出的uk对 ...

最新文章

  1. 生信和植物领域最新资讯合集
  2. android 21点游戏代码,Android 21点
  3. 用Delphi开发OPC客户端工具的方法研究
  4. 华为120hz鸿蒙系统,华为亮剑,120Hz+鸿蒙系统+5500mAh,竟然如此销魂
  5. 查看Oracle实例的EM端口
  6. Java的这个强大功能,很多人都不知道
  7. 模型人的因素_肺癌风险预测模型中纳入肺功能如何?
  8. c#图像处理-图像预览全解
  9. Linux内核Makefile文件
  10. [MySQL] specified key was too long max key length is 767bytes
  11. python利用Tesseract识别验证码
  12. Django的缓存(1)
  13. 夜神无限检查服务器新版本,夜神模拟器电脑最新版
  14. mysql grant 用户权限总结
  15. Spire.Doc 教程:如何将Word转换为PDF
  16. app抓包服务器证书错误,Fiddler抓包iOS出现证书错误的解决办法
  17. Java基础--数值和字符串
  18. Run-down Protection
  19. 软件流程图及功能节点图
  20. 科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具

热门文章

  1. 牛顿迭代法-求平方根
  2. 如何用未越狱手机安装ipa文件
  3. mac版微信复制多个消息
  4. Redis 一主一从
  5. springMVC @initBinder 使用
  6. 【Svelte】-(8)lifecycle 生命周期|onMount / onDestroy / beforeUpdate / afterUpdate / tick
  7. 【罗塞塔石碑】—My Lover(Two.iso)
  8. 新零售微服务电商项目SpringBoot/SpringCloudAlibaba
  9. JAVA虚拟机--JVM
  10. JAVA外包服务的整体工作流程有哪些