PID--积分分离法--003

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

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

    积分分离的 PID 控制算法

    在普通 PID 控制中, 引入积分环节的目的, 主要是为了消除静差, 提高
    控制精度。 但是在启动、 结束或大幅度增减设定时, 短时间内系统输出有很大的
    偏差, 会造成 PID 运算的积分积累, 导致控制量超过执行机构可能允许的最大动
    作范围对应极限控制量, 从而引起较大的超调, 甚至是震荡, 这是绝对不允许的。
    为了克服这一问题, 引入了积分分离的概念, 其基本思路是 当被控量与设
    定值偏差较大时, 取消积分作用; 当被控量接近给定值时, 引入积分控制, 以消
    除静差, 提高精度。 其具体实现代码如下:

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

typedef struct
{
    float SetSpeed;    //定义设定值
    float ActualSpeed; //定义实际值
    float err;         //定义偏差值
    float err_last;    //定义上一个偏差值
    float Kp,Ki,Kd;    //定义比例、 积分、 微分系数
    float voltage;     //定义电压值(控制执行器的变量)
    float integral;    //定义积分值
} PID ;

void PID_Init();
float PID_realize(float speed);

PID pid ;
FILE* out ;

int main()
{
    out = fopen("C:\\Users\\Administrator\\Desktop\\log.txt","w");
    if(out)
    {
        printf("File open err...\n");
    }

    printf("System begin \n");
    PID_Init();

    unsigned long  count=0;
    while(count<2000)
    {
        float speed=PID_realize(200.0);

        printf("%f\n",speed);
        fprintf(out,"%f\n",speed);
        fflush(out);

        count++;
    }

    fclose(out);

    return 0;
}

void PID_Init()
{
    printf("PID_init begin \n");
    pid.SetSpeed=0.0;
    pid.ActualSpeed=0.0;
    pid.err=0.0;
    pid.err_last=0.0;
    pid.voltage=0.0;
    pid.integral=0.0;
    pid.Kp=0.2;
    pid.Ki=0.015;
    pid.Kd=0.2;
    printf("PID_init end \n");
}

float PID_realize(float speed)
{
    int index = 0 ;

    pid.SetSpeed=speed;
    pid.err=pid.SetSpeed-pid.ActualSpeed;
//    pid.integral+=pid.err;
//    pid.voltage=pid.Kp*pid.err+pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);

    if(abs(pid.err)>200)
    {
        index=0;
    }
    else{
        index=1;
        pid.integral+=pid.err;
    }
    pid.voltage=pid.Kp*pid.err+index*pid.Ki*pid.integral+pid.Kd*(pid.err-pid.err_last);

    pid.err_last=pid.err;
    pid.ActualSpeed=pid.voltage*1.0;
    return pid.ActualSpeed;

}
时间: 2024-11-05 04:59:18

PID--积分分离法--003的相关文章

四轴PID讲解

鉴于某些原因,笔者无法修改原先已经发表的部分博客文章,在这里笔者将先前设计的微型四轴工程代码开源,下载地址:github.com/yzhajlydy 正文开始:这篇文章分为三个部分: PID原理普及 常用四轴的两种PID算法讲解(单环PID.串级PID) 如何做到垂直起飞.四轴飞行时为何会飘.如何做到脱控? PID原理普及 1.  对自动控制系统的基本要求: 稳.准.快:         稳定性(P和I降低系统稳定性,D提高系统稳定性):在平衡状态下,系统受到某个干扰后,经过一段时间其被控量可以

PID控制器(比例-积分-微分控制器)- IV

调节/测量放大电路电路图:PID控制电路图 如图是PlD控制电路,即比例(P).积分(I).微分(D)控制电路. A1构成的比例电路与环路增益有关,调节RP1,可使反相器的增益在0·5一∞范围内变化; A2是积分电路,积分时间常数可在22一426S范围内变化; A3是微分电路,时间常数由Cl(Rl+R(RP3))决定; A4将比例.积分.微分各电路输出倒相后合成为U. Controller Circuit This circuit is the basis of a temperature co

关于PID 比例 微分 积分通俗易懂的解释

PID控制 一.前言 在工程实际中,应用最为广泛的调节器控制规律为比例.积分.微分控制,简称PID控制,又称PID调节.PID控制器问世至今已有近70年历史,它以其结构简单.稳定性好.工作可靠.调整方便而成为工业控制的主要技术之一. 所谓的PID系统,其实就是一个反馈系统.什么是反馈系统?当你在马路上悠闲的开着车的时候,前面的一个哥们的车突然减速,这时,你会毫不犹豫的踩刹车,这就是你的反馈系统在起作用.所以,反馈系统首先需要传感器获取反馈量(就像是你的眼睛在获取前面车的速度以及它和你之间的距离一

[转]PID(比例微分积分)调节口诀

PID(比例微分积分)调节口诀 1.    PID常用口诀: 参 数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加,曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积 分时间往下降,曲线波动周期长,积分时间再加长,曲线振荡频率快,先把微分降下来,动差大来波动慢,微分时间应加长,理想曲线两个波,前高后低4比1, 2.    一看二调多分析,调节质量不会低2. PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照: 温度T: P=20

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

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

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

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

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

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

PID控制器(比例-积分-微分控制器)- III

PID Controller Algorithms Controller manufacturers arrange the Proportional, Integral and Derivative modes into three different controller algorithms or controller structures.  These are called Interactive, Noninteractive, and Parallel algorithms.  S

PID控制器(比例-积分-微分控制器)- II

Table of Contents Practical Process Control Proven Methods and Best Practices for Automatic PID Control I. Modern Control is Based on Process Dynamic Behavior (by Doug Cooper) 1) Fundamental Principles of Process Control Motivation and Terminology of