栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

位置式PID与增量式PID C语言实现

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

位置式PID与增量式PID C语言实现

 自己写的pid代码

//位置型PID
typedef struct _position_pid{
    float target_value;       //定义设定值
    float measure_value;      //定义实际值
    float output_value;       //定义输出值
    float output_max;
    float output_min;
    float err;                //定义偏差值
    float err_last;           //定义上一个偏差值
    float integral;           //定义积分值
    float Kp;                 //比例系数
    float Ki;                 //积分系数
    float Kd;                 //微分系数
}position_pid_t;


float position_pid_calc(position_pid_t *pid, float target_value, float measure_value)
{
    pid->target_value = target_value;
    pid->measure_value = measure_value;
    pid->output_value = 0;

    pid->err = pid->target_value - pid->measure_value;

    //pid->integral += (pid->Ki * pid->err);

    //pid->output_value += pid->integral;

    pid->output_value += (pid->Kp * pid->err) + pid->Kd*(pid->err - pid->err_last);

    pid->err_last = pid->err;

    return pid->output_value;
}





//增量型PID
typedef struct _increment_pid{
    float target_value;       //定义设定值
    float measure_value;      //定义实际值
    float output_value;       //定义输出值
    float output_max;
    float output_min;
    float err;                //定义偏差值
    float err_last;           //定义上一个偏差值
    float err_last_last;      //定义上一个的上一个偏差值
    float Kp;                 //比例系数
    float Ki;                 //积分系数
    float Kd;                 //微分系数
}increment_pid_t;


float increment_pid_calc(increment_pid_t *pid, float target_value, float measure_value)
{
    pid->target_value = target_value;
    pid->measure_value = measure_value;

    pid->err = pid->target_value - pid->measure_value;

    pid->output_value = (pid->Kp * pid->err) - (pid->Ki* pid->err_last)  + (pid->Kd * pid->err_last_last);

    pid->err_last_last = pid->err_last;
    pid->err_last = pid->err;

    return pid->output_value;
}

参考: 

PID控制算法的C语言实现_沐白001的博客-CSDN博客_pid 实现

位置式PID与增量式PID的介绍和代码实现_【ql君】qlexcel的博客-CSDN博客_pid位置式和增量式详解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971406.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号