PID--增量型--002

#include<stdio.h>
#include<stdlib.h>

/******************************

* 增量型 PID

*******************************/

struct _pid
{
    float SetSpeed; //定义设定值
    float ActualSpeed; //定义实际值
    float err; //定义偏差值
    float err_next; //定义上一个偏差值
    float err_last; //定义最上前的偏差值
    float Kp,Ki,Kd; //定义比例、 积分、 微分系数
} pid;
void PID_init()
{
    pid.SetSpeed=0.0;
    pid.ActualSpeed=0.0;
    pid.err=0.0;
    pid.err_last=0.0;
    pid.err_next=0.0;
    pid.Kp=0.2;
    pid.Ki=0.015;
    pid.Kd=0.2;
}
float PID_realize(float speed)
{
    pid.SetSpeed=speed;
    pid.err=pid.SetSpeed-pid.ActualSpeed;
    float incrementSpeed=pid.Kp*(pid.err-pid.err_next)+pid.Ki*pid.err+pid.Kd*(pid.err-2*pid.err_next+pid.err_last);
    pid.ActualSpeed+=incrementSpeed;
    pid.err_last=pid.err_next;
    pid.err_next=pid.err;
    return pid.ActualSpeed;
}
int main()
{
    PID_init();
    int count=0;
    while(count<1000)
    {
        float speed=PID_realize(200.0);
        printf("%f\n",speed);
        count++;
    }
    return 0;
}
时间: 2024-08-26 16:13:45

PID--增量型--002的相关文章

PID控制器的数字实现及C语法讲解

PID控制器的数字实现及C语法讲解 概述 为方便学习与交流,根据自己的理解与经验写了这份教程,有错误之处请各位读者予以指出,具体包含以下三部分内容: (1)  PID数字化的推导过程(实质:微积分的近似计算): (2)  程序风格介绍(程序风格来源于TI官方案例): (3)  C有关语法简述(语法会结合实例进行讲解). PID控制器的数字化 PID控制器是工业过程控制中广泛采用的一种控制器,其中,P.I.D分别为比例(Proportion).积分(Integral).微分(Differentia

PID算法实现及参数整定图解(附代码)

一. PID含义 PID是英文单词比例(Proportion),积分(Integral),微分(Differential coefficient)的缩写.PID调节实际上是由比例.积分.微分三种调节方式组成,它们各自的作用如下: 比例调节作用:是按比例反应系统的偏差,系统一旦出现了偏差,比例调节立即产生调节作用用以减少偏差.比例作用大,可以加快调节,减少误差,但是过大的比例,使系统的稳定性下降,甚至造成系统的不稳定. 积分调节作用:是使系统消除稳态误差,提高无差度.因为有误差,积分调节就进行,直

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

前面的文章中,我们已经讲述了PID控制器的实现,包括位置型PID控制器和增量型PID控制器.但这个实现只是最基本的实现,并没有考虑任何的干扰情况.在本节及后续的一些章节,我们就来讨论一下经典PID控制器的优化与改进.这一节我们首先来讨论针对积分项的积分分离优化算法. 1.基本思想 我们已经讲述了PID控制引入积分主要是为了消除静差,提高控制精度.但在过程的启动.结束或大幅度增减设定值时,短时间内系统输出有很大偏差,会造成PID运算的积分累积,引起超调或者振荡.为了解决这一干扰,人们引入了积分分离

PID控制器开发笔记之三:抗积分饱和PID控制器的实现

积分作用的引入是为了消除系统的静差,提高控制精度.但是如果一个系统总是存在统一个方向的偏差,就可能无限累加而进而饱和,极大影响系统性能.抗积分饱和就是用以解决这一问题的方法之一.这一节我们就来实现抗积分饱和的PID算法. 1.抗积分饱和的基本思想 所谓积分饱和就是指系统存在一个方向的偏差,PID控制器的输出由于积分作用的不断累加而扩大,从而导致控制器输出不断增大超出正常范围进入饱和区.当系统出现反响的偏差时,需要首先从饱和区退出,而不能对反向的偏差进行快速的响应. 为了解决积分饱和的问题,人们引

PID控制器开发笔记之四:梯形积分PID控制器的实现

从微积分的基本原理看,积分的实现是在无限细分的情况下进行的矩形加和计算.但是在离散状态下,时间间隔已经足够大,矩形积分在某些时候显得精度要低了一些,于是梯形积分被提出来以提升积分精度. 1.梯形积分基本思路 在PID控制其中,积分项的作用是消除余差,为了尽量减小余差,应提高积分项的运算精度.在积分项中,默认是按矩形方式来计算积分,将矩形积分改为梯形积分可以提高运算精度.其计算公式为: 于是如果在位置型PID算法中引入梯形积分则可以修改计算公式如下: 同样要在增量型PID算法中引入梯形积分则可以修

第三天:SLAM智能小车DIY乐趣-小车控制PID参数整定

PID参数整定教程 1.数字PID控制算法介绍------位置型&增量型 由于是面向计算机编程实现为目的,这里就直接从数字PID切入正题,如果想要了解更多PID方面的基本知识请参阅相关理论资料. 增量型算法的优点: a. 增量算法不需要做累加,控制量增量的确定仅与最近几次误差采样值有关,计算误差或计算精度问题,对控制量的计算影响较小.而位置算法要用到过去的误差的累加值,容易产生大的累加误差. b. 增量式算法得出的是控制量的增量,例如阀门控制中.只输出阀门开度的变化部分,误动作影响小,必要时通过

SLAM+语音机器人DIY系列:(四)差分底盘设计——5.底盘PID控制参数整定

摘要 运动底盘是移动机器人的重要组成部分,不像激光雷达.IMU.麦克风.音响.摄像头这些通用部件可以直接买到,很难买到通用的底盘.一方面是因为底盘的尺寸结构和参数是要与具体机器人匹配的:另一方面是因为底盘包含软硬件整套解决方案,是很多机器人公司的核心技术,一般不会随便公开.出于强烈的求知欲与学习热情,我想自己DIY一整套两轮差分底盘,并且将完整的设计过程公开出去供大家学习.说干就干,本章节主要内容: 1.stm32主控硬件设计 2.stm32主控软件设计 3.底盘通信协议 4.底盘ROS驱动开发

增量爬虫,垂直爬虫

2.增量型爬虫(Incremental Crawler):增量型爬虫与批量型爬虫不同,会保持持续不断的抓 取,对于抓取到的网页,要定期更新,因为互联网的网页处于不断变化中,新增网页.网页被删除或者网页内容更改都很常见,而增量型爬虫需要及时反映这种变 化,所以处于持续不断的抓取过程中,不是在抓取新网页,就是在更新已有网页.通用的商业搜索引擎爬虫基本都属此类. 3.垂直型爬虫(Focused Crawter):垂直型爬虫关注特定主题内容或者属于特定行业的网页,比如 对于健康网站来说,只需要从互联网页

1月13日全球域名商解析新增量25强:万网季军

IDC评述网(idcps.com)01月15日报道:根据DailyChanges公布的最新数据显示,在2016年1月13日,全球域名解析新增量25强榜单上,中国占据7个席位,分别是中国万网.易名中国.DNSPod.西部数码.新网.邦腾科技.聚名网.其中,中国万网表现最佳,新增量为8,507个,排名第3.下面,IDC评述网将对相关数据进行详细分析. (图1)全球域名解析商(国际域名)解析新增量Top25分布图 观察图1,可知在1月13日,全球域名解析新增量25强大战中,DOMAINCONTROL.