//经典PID控制的c实现
//1、位置式PID实现

//1、位置式PID实现
typedef struct {float setValue;//设定值float actValue;//输出值float integral;//积分值float lasterror;//前一拍偏差float preerror;float Kp;//比例系数float Ki;//积分系数float Kd;//微分系数
}PID;
//实现PID控制器
void PIDRegulation(PID* vPID, float processValue) {//输入PID变量地址和当前值vPID->setValue = processValue;vPID->preerror = vPID->setValue - vPID->actValue;//计算当前误差vPID->integral += vPID->preerror;//误差积累vPID->actValue = vPID->Kp * vPID->preerror + vPID->Ki * vPID->integral + vPID->Kd * (vPID->preerror - vPID->lasterror);//计算实际值vPID->lasterror = vPID->preerror;//误差更新cout << vPID->actValue << endl;
}

//2、增量型PID;上什么是增量型呢。比如温度控制。现在温度是30度,目标是50度,那么我们
//这一次给它加温10度,让它变化到40度。那么下一次要加多少度呢?(假设为N度),这个N度
//就是我们说地 增量,增量的公式实际是 U(k)-U(k-1),就是位置型结果的两次相减。


typedef struct {float setValue;float actValue;float lasterror;float preerror;float Kp;float Ki;float Kd;
}IPID;
void IPIDRegulation(IPID* vIPID, float processValue) {//输入PID变量地址和当前值float thiserror;float increment;float perror, ierror, derror;vIPID->setValue = processValue;thiserror = vIPID->setValue - vIPID->actValue;//当前误差等于设定值减去当前值perror = thiserror - vIPID->lasterror; // 两次偏差差值err(k) - err(k - 1)ierror = thiserror;derror = thiserror - 2 * (vIPID->lasterror) + vIPID->preerror;increment = vIPID->Kp * perror + vIPID->Ki * ierror + vIPID->Kd * derror;//增量计算vIPID->preerror = vIPID->lasterror;//存放偏差用于下次运算vIPID->lasterror = thiserror;vIPID->actValue += increment;cout << vIPID->actValue << endl;
}int main() {//位置式pidPID pid;pid.setValue = 1.0;pid.actValue = 0.0;pid.integral = 0.0;pid.lasterror = 0.0;pid.preerror = 0.0;pid.Kp = 0.2;pid.Ki = 0.015;pid.Kd = 0.2;int i = 0;//while (i++ < 1000) {//  PIDRegulation(&pid, 6000);//}//增量式pidIPID ipid;ipid.setValue = 1.0;ipid.actValue = 0.0;ipid.lasterror = 0.0;ipid.preerror = 0.0;ipid.Kp = 0.2;ipid.Ki = 0.015;ipid.Kd = 0.2;i = 0;while (i++ < 1000) {IPIDRegulation(&ipid, 6000);}return 0;
}

位置型PID特点:
位置型PID控制的输出与整个过去的状态有关,用到了偏差的累加值,容易产生累积偏差。
位置型PID适用于执行机构不带积分部件的对象。
位置型的输出直接对应对象的输出,对系统的影响比较大。
增量型PID控制器的基本特点:
增量型PID算法不需要做累加,控制量增量的确定仅与最近几次偏差值有关,计算偏差的影响较小。
增量型PID算法得出的是控制量的增量,对系统的影响相对较小。

C语言实现位置式pid与增量式pid相关推荐

  1. C语言实现PID算法:位置式PID和增量式PID

    原创者微信公众号 PID算法可以说是在自动控制原理中比较经典的一套算法,在现实生活中应用的比较广泛. 大学参加过电子竞赛的朋友都应该玩过电机(或者说循迹小车),我们要控制电机按照设定的速度运转,PID ...

  2. PID算法:位置式PID和增量式PID

    口诀 参数整定找最佳, 从小到大顺序查. 先是比例后积分, 最后再把微分加. 曲线振荡很频繁, 比例度盘要放大. 曲线漂浮绕大弯, 比例度盘往小扳. 曲线偏离回复慢, 积分时间往下降. 曲线波动周期长 ...

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

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

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

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

  5. 位置式PID和增量式PID的区分

    目录 位置式PID和增量式PID的区分 位置式PID: 增量式PID: 附上本人参考别人写的代码----链接: 附上本人收集的资料----链接: 位置式PID和增量式PID的区分 仅是个人理解,如有错 ...

  6. 位置式PID与增量式PID代码实现(python)

    位置式PID与增量式PID的python实现 一.PID控制器简介 二.一阶惯性环节 三.位置式PID 3.1 简介 3.2 程序 四.增量式PID 4.1简介 4.2 程序 五.几种控制效果对比 本 ...

  7. 位置式PID和增量式PID的区别(转载)

    参考 https://blog.csdn.net/as480133937/article/details/89508034 上述文章中给出了位置式PID和增量式PID的公式及区别,比较容易理解.

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

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

  9. c语言程序位置式pid算法,增量式与位置式PID算法(C语言实现与电机控制项目)...

    4.2核心代码 /************************************************************************** 函数功能:增量PI控制器 入口参 ...

最新文章

  1. python适合零基础学习吗-零基础能学好Python吗?哪些人更适合学习?
  2. 【计算理论】计算复杂性 ( 非确定性图灵机的时间复杂度 | 非确定性图灵机 与 确定性图灵机 的时间复杂度 之间的关系 )
  3. UA MATH565C 随机微分方程III Ito Isometry
  4. 2021略阳天津高级中学高考成绩查询,2021年天津高考成绩查询网站查分网址:http://www.zhaokao.net/...
  5. MongoDB shell 操作
  6. AT2300-[ARC068C]Snuke Line【整除分块】
  7. 【图像配准】基于灰度的模板匹配算法(一):MAD、SAD、SSD、MSD、NCC、SSDA、SATD算法
  8. 正则表达式30分钟入门教程-2
  9. SpringCloud 微服务入门-Spring Cloud 与微服务概述
  10. godotenv简介
  11. 科密考勤机对比和参考价
  12. 英语语法---名词性从句详解
  13. matlab保存nii_Matlab实现NIfTI(ANALYZE)核磁共振图像读写
  14. 一、C++基础入门之 Windows下C/C++开发环境配置
  15. 登陆港股市场,阳光保险的 “价值锚点”
  16. qlib平台实现可转债“双低”策略
  17. HM4064原厂5A四节锂电池充电管理集成电路IC
  18. 27、fd_set与FD_SETSIZE详解
  19. Android中EditText中文英文长度控制
  20. jackson 官网 java_jackson

热门文章

  1. 2.5 大公司都在用的图片型封面
  2. paramiko.ssh_exception.SSHException: Server connection dropped
  3. meson 安装了找不到
  4. 光伏产业常用中英文名词
  5. 人脸识别-Java实现刷脸登录
  6. 滤波器有几种?四种滤波器之间对比详解
  7. 为企业提供的移动信息化办公软件-easyconnect提供下载
  8. adobe photoshop cs5 sn
  9. 亮度调到最高对于笔记本电脑耗电的影响会有多大
  10. 独立站如何制定网红营销策略