学习笔记—增量式PID详细实现(C语言)
增量式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=Kpek+Kij=0∑kej+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=Kpek−1+Kij=0∑k−1ej+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)+Kiek+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语言)相关推荐
- Arduino 让小车走直线的秘密 增量式PID 直流减速编码电机
直流减速电机增量式PID 通俗易懂版 对于我一个双非学校没上过自控的电子专业本科生而言,这个东西真的是太难了,之前研究了一个A4950驱动,价格便宜,驱动能力高,安全性高,便捷性高,一句话就是比L29 ...
- 基于自适应算法和增量式PID算法的模拟直升飞机控制系统
基于自适应算法和增量式PID算法的模拟直升飞机控制系统 文章目录 基于自适应算法和增量式PID算法的模拟直升飞机控制系统 控制系统硬件 单片机系统 传感器系统介绍 直升机模拟系统介绍 系统模块介绍 A ...
- 位置式PID与增量式PID区别浅析(百度百科增量式PID讲解思路概念更明确清晰)
位置式PID与增量式PID区别浅析 Z小旋 2019-04-26 08:55:12 59882 收藏 713 分类专栏: NXP智能车学习 文章标签: 位置式PID PID 增量式PID 版权 1 ...
- 入门智能车 | 带你认识PID闭环控制 - 增量式PID实现电机速度闭环
带你认识PID闭环控制 - 增量式PID实现电机速度闭环 闭环控制是指控制论的一个基本概念.指作为被控的输出量以一定方式返回到作为控制的输入端,并对输入端施加控制影响的一种控制关系.带有反馈信息的系统 ...
- 四轮电磁------速度环增量式PID
四轮电磁------速度环增量式PID 这是我的第一次书写博客,仅代表我个人看法,若有问题希望各位大佬不吝赐教!!! 我们最近正在准备智能车四轮电磁的校内赛,我采用的是英飞凌的TC264单片机,使用的 ...
- 增量式pid+位置式PID(电机位置闭环控制)
ps:2022更新 pid详细解释 一般很少用增量式,都是用位置式,下文增量式可以不看 本文分为几个部分: 1.编码器 2.定时器输入捕获(把定时器初始化为编码器模式) 3.pid闭环控速度 编码器配 ...
- PID控制的深入探讨(位置式PID、增量式PID、PID的积分饱和)
本文主要探讨PID算法在使用时的一些实际问题.处理技巧和方法,学习本节内容需要先对PID控制算法有基本的了解. 1)PID控制的基本原理 PID是一个二阶线性控制器,它具有不需要建立数学模型,控制效果 ...
- 位置式\增量式PID、模糊PID、BRF-PID的Matlab实现以及封装
位置式\增量式PID.模糊PID.BRF-PID的Matlab实现以及封装 位置式\增量式PID.模糊PID.BRF-PID的Matlab实现以及封装 简要 Model类 Strategy 类 PID ...
- 位置式PID与增量式PID的介绍和代码实现
PID分为位置式PID与增量式PID. 一.位置式PID 1.表达式为: 2.缺点: 1).由于全量输出,所以每次输出均与过去状态有关,计算时要对ek进行累加,工作量大: 2).因为计算机输出的uk对 ...
最新文章
- 生信和植物领域最新资讯合集
- android 21点游戏代码,Android 21点
- 用Delphi开发OPC客户端工具的方法研究
- 华为120hz鸿蒙系统,华为亮剑,120Hz+鸿蒙系统+5500mAh,竟然如此销魂
- 查看Oracle实例的EM端口
- Java的这个强大功能,很多人都不知道
- 模型人的因素_肺癌风险预测模型中纳入肺功能如何?
- c#图像处理-图像预览全解
- Linux内核Makefile文件
- [MySQL] specified key was too long max key length is 767bytes
- python利用Tesseract识别验证码
- Django的缓存(1)
- 夜神无限检查服务器新版本,夜神模拟器电脑最新版
- mysql grant 用户权限总结
- Spire.Doc 教程:如何将Word转换为PDF
- app抓包服务器证书错误,Fiddler抓包iOS出现证书错误的解决办法
- Java基础--数值和字符串
- Run-down Protection
- 软件流程图及功能节点图
- 科普读书会丨《被讨厌的勇气》:愤怒不是目的,是一种工具
热门文章
- 牛顿迭代法-求平方根
- 如何用未越狱手机安装ipa文件
- mac版微信复制多个消息
- Redis 一主一从
- springMVC @initBinder 使用
- 【Svelte】-(8)lifecycle 生命周期|onMount / onDestroy / beforeUpdate / afterUpdate / tick
- 【罗塞塔石碑】—My Lover(Two.iso)
- 新零售微服务电商项目SpringBoot/SpringCloudAlibaba
- JAVA虚拟机--JVM
- JAVA外包服务的整体工作流程有哪些