0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

增量式PID算法在c代码部分的实现过程

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-16 11:27 次阅读

stm32控制器下经常会用到对温度控制,适度控制,转速控制等需要自动控制相关的操作,因此在使用中需要不断提高对自动控制 原理部分的学习,一个好的自动控制系统包含三个 主要因素:稳,快,准。稳即系统的稳定性,快即系统的快速性,准即控制的准确性。

在自动控制中比例增益,积分时间,微分时间三个主要变量。下面就这三个变量进行动态展示。

动图

如上图所示,假设在单位阶跃响应下,比例控制幅值,kp越大值越高相关的,积分时间控制精确度,数值越大波形超调量越大,微分时间控制波形的平缓程度。

下面贴出增量式PID算法在c代码部分的实现过程。

//实现增量式PID算法 

#include "stdio.h" 
void pid_init();//PID参数初始化 
float pid_realise(float speed);//实现PID算法   

struct {
    float set_speed;//设定速度 
    float actual_speed;//实际速度
    float error;//偏差  
    float error_next;//上一个偏差  
    float error_last;//上上一个偏差 
    float kp,ki,kd;//定义比例,积分,微分参数  
     
}pid;


int main()
{
    pid_init();
    int count = 0;
    while(count<400)//进行400次 PID 运算,使初始值从0开始接近200.0   
    {
        float speed = pid_realise(200.0);//设定值设定为200.0  
        printf("%f\n",speed);//输出每一次PID 运算后的结果  
        count++;
    }
}


void pid_init()
{
    pid.set_speed = 0.0;
    pid.actual_speed = 0.0;
    pid.error = 0.0;
    pid.error_next = 0.0;
    pid.error_last = 0.0;
    //可调节PID 参数。使跟踪曲线慢慢接近阶跃函数200.0 // 
    pid.kp = 0.2;
    pid.ki = 0.01;
    pid.kd = 0.2;
}


float pid_realise(float speed)//实现pid  
{
    pid.set_speed = speed;//设置目标速度  
    pid.error = pid.set_speed - pid.actual_speed;
    float increment_speed;//增量
     
    increment_speed = pid.kp*(pid.error-pid.error_next)+pid.ki*pid.error+\
    pid.kd*(pid.error-2*pid.error_next+pid.error_last);//增量计算公式  
    
    pid.actual_speed+= increment_speed;
    pid.error_last = pid.error_next;//下一次迭代  
    pid.error_next = pid.error;
    return pid.actual_speed; 
    
}

运行数据得到图标如下 :

poYBAGKqov2ALrgkAABTRApyEyM634.png

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16092

    浏览量

    177023
  • STM32
    +关注

    关注

    2264

    文章

    10854

    浏览量

    354230
  • PID
    PID
    +关注

    关注

    35

    文章

    1468

    浏览量

    85174
收藏 人收藏

    评论

    相关推荐

    浅析位置PID增量PID算法

    位置PID增量PID算法通常依据控制器输出与执行机构的对应关系,将基本数字
    发表于 01-15 18:35

    教你用C语言实现位置PID增量PID

    控制器”,拿控制电机来说,参考下面模型:下面引用一段网上经典的话:工业应用中PID及其衍生算法是应用最广泛的算法之一,是当之无愧的万能算法
    发表于 05-30 08:00

    收藏干货 PID算法实现

    ,是当之无愧的万能算法,如果能够熟练掌握PID算法的设计与实现过程,对于一般的研发人员来讲,应该是足够应对一般研发问题了,而难能可贵的是,
    发表于 06-22 11:37

    STM32如何去实现增量PID算法

    尽快进入状态。特地分享一些自己如何实现过程。首先说说增量PID的公式,这个关系到MCU算法
    发表于 09-13 06:54

    PID算法增量算法

    这里的PID是指控制类的比例-积分-微分算法,而不是进程ID号。PID算法,不管是原理上,还是代码上都比较简单。主要运用在电机控制、开关电源
    发表于 09-13 06:06

    如何实现增量PID

    虽然PID不是什么牛逼的东西,但是真心希望以后刚刚接触这块的人能尽快进入状态。特地分享一些自己如何实现过程。首先说说增量
    发表于 09-13 08:19

    增量PID的stm32实现及其整定过程 

    源:增量PID的stm32实现,整定过程  首先说说增量
    发表于 09-13 07:35

    使用C语言进行PID算法实现

    前文对PID算法离散化和增量PID算法原理进行来探索,之后又使用Matlab进行了仿真实验,对
    发表于 09-15 09:20

    如何去实现基于stm32的PID算法增量程序呢

    PID算法可分为哪几类?PID算法的参数有哪些呢?如何去实现基于stm32的PID
    发表于 12-02 07:48

    增量PID控制算法

    增量PID控制算法-2011,有需要的下来看看。
    发表于 04-01 14:54 29次下载

    位置型PIDC语言代码实现过程详细资料概述

    上一节中已经抽象出了位置性 PID增量PID 的数学表达式,这一节,重 点讲解 C 语言代码
    发表于 07-16 08:00 8次下载

    在三菱FX2NPLC上实现增量PID算法的控制

    实际系统中,PLC控制模拟量可采用PLC自带的PID过程控制模块,但对要求比较高的场合采用改进的PID控制算法,就必须由用户自己编制
    的头像 发表于 12-31 08:11 1.2w次阅读
    在三菱FX2NPLC上<b class='flag-5'>实现</b>了<b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>的控制

    如何使用免疫粒子群优化算法实现增量PID控制

    基于粒子群优化算法的收敛速度快简单易实现的特点和免疫算法的免疫记忆、免疫自我调节和多峰值收敛的特点,本文设计出免疫粒子群算法,并将其应用于PID
    发表于 11-01 15:41 7次下载
    如何使用免疫粒子群优化<b class='flag-5'>算法</b><b class='flag-5'>实现</b><b class='flag-5'>增量</b><b class='flag-5'>式</b>的<b class='flag-5'>PID</b>控制

    使用单片机和Arduino实现增量PID位置PID算法PID库免费下载

    本文档的主要内容详细介绍的是使用单片机和Arduino实现增量PID位置PID
    发表于 05-28 16:30 68次下载
    使用单片机和Arduino<b class='flag-5'>实现</b><b class='flag-5'>增量</b><b class='flag-5'>式</b><b class='flag-5'>PID</b>位置<b class='flag-5'>式</b><b class='flag-5'>PID</b><b class='flag-5'>算法</b>和<b class='flag-5'>PID</b>库免费下载

    PID控制算法C语言实现

    PID算法C实现1、PID算法简介1.1、各个环节的作用2、位置型
    发表于 01-13 13:39 45次下载
    <b class='flag-5'>PID</b>控制<b class='flag-5'>算法</b>的<b class='flag-5'>C</b>语言<b class='flag-5'>实现</b>